title: Zaprojektuj aplikację, aby „aktywnie” zapraszać użytkowników (udawać, że mają uprawnienia)

text: Projektuję aplikację, w której użytkownicy komunikują się ze sobą prywatnie i mogą wysyłać wiadomości do dowolnego `Entity` w bazie danych (`Entity` może nie mieć jeszcze konta użytkownika, jest to profesjonalna baza danych). Nie jestem pewien, jak najlepiej zaprojektować bazę danych i interfejs API, aby umożliwić przesyłanie wiadomości niezarejestrowanych użytkownikom. Aplikacja powinna pozostać bezpieczna, a dostęp do danych mają tylko osoby z odpowiednimi uprawnieniami. Wiadomości wysyłane do osób nieposiadających konta użytkownika pełnią funkcję zaproszenia. Zaproszona osoba powinna mieć możliwość obejrzenia wiadomości, podjęcia działań na niej oraz zakończenia rejestracji użytkownika po otrzymaniu „InviteMessage”. W uproszczeniu mam: User różne pola użytkownika (email, pw, dateJoined) Podmiot (duży profesjonalny zbiór danych): personalDetails... user->User (może być pusty) UserMessage: sender->User odbiorca->User dateCreated messageContent , inne pola..... InviteMessage: sender->User address->Entity expiringUrl InvitationeEmail InvitationePhone Planuję powiadomić użytkownika o wybraniu `odbiorcy`, który nie jest jeszcze zarejestrowany, i poinformować, że może wysłać wiadomość jako zaproszenie podając email, telefon na który możemy wysłać zaproszenie. Zaproszenia będą miały unikalny, jednorazowy adres URL, np. "uuid.uuid4()". Po uzyskaniu dostępu osoba zaproszona zobaczy komunikat „InviteMessage” oraz szczegółowe informacje o wypełnieniu profilu rejestracji. Po zakończeniu rejestracji, `InviteMessage` szczegóły nowej instancji `UserMessage` (aby nie utracić danych) i przypisz je do nowo utworzonego `User`. Możliwość interakcji i zapraszania osób, które nie mają jeszcze konta, jest kluczową cechą aplikacji i wydaje się, że lepiej jest oddzielić zaproszenie od prywatnych wiadomości aplikacji (łatwiej oddzielić funkcjonalność, lepiej jeśli zmieni się model danych). * Czy to rozsądny, dobry projekt? * Jeśli nie, co byś zaproponował? * Czy masz jakieś ulepszenia? * Czy słusznie wybieram utworzenie oddzielnego punktu końcowego do tworzenia zaproszeń za pośrednictwem interfejsu API?


title: Czy istnieją zestawy SDK do montażu?

text: Nigdy nie pracowałem w asemblerze, ale byłem po prostu ciekawy, czy istnieją SDK do programowania w asemblerze. Na przykład, jeśli chcę utworzyć połączoną listę, czy są dostępne biblioteki, które już to zrobiły, czy też wszystko jest zwykle robione od zera?


title: Co i jak zawrzeć w raporcie z wdrożenia oprogramowania?

text: Obecnie piszę rozszerzony raport na temat biblioteki oprogramowania, którą napisałem. Recenzent będzie profesorem na mojej uczelni. On w zasadzie wie, co musiałem zrobić, ale raport zostanie oceniony. Przygotowałem kilka przykładowych wyników z biblioteką, które już planuję włączyć do pracy. To, co chcę wiedzieć, to: * Co powinienem napisać o samej bibliotece? * Jak powinienem to uporządkować? * Które punkty należy podkreślić? Ponadto profesor jest tak samo uczulony na przyziemne szczegóły wdrożenia, jak menedżer biznesowy.


title: Jak uczyć wskaźników dla początkujących w C?

text: Zrobię małą prezentację na temat C-Pointerów w małej grupie osób z początkującymi umiejętnościami programowania, bez znajomości CS. Tylko ludzie, którzy chcieliby dowiedzieć się czegoś o kodowaniu i wolą praktyczne, praktyczne podejście. W rzeczywistości używają do tego języka C. Za chwilę wprowadzimy wskaźniki i jestem bardzo ostrożny, jeśli chodzi o zakres pierwszego wprowadzenia, ponieważ wskaźniki mogą być dość przytłaczające i mylące dla niewtajemniczonych. Zastanawiam się więc, jak podszedłbyś do tego tematu, aby był zabawny i interesujący? Czy masz świetne przykłady, które naprawdę pomagają ludziom zrozumieć pojęcie wskaźników? Podpowiedź: Widzowie nie wiedzą jeszcze o ciągach i tablicach. Jeśli chodzi o zakres, oto co mam do tej pory: * Przykład: Problem, który pokazuje ograniczenie C bez wskaźników i dlaczego potrzebujemy czegoś bardziej rozwiniętego. * Zadzwoń przez odniesienie vs Zadzwoń według przykładu wartości? * Bardzo krótkie wprowadzenie czym jest wskaźnik i jak jest oznaczany w C. (* i & operatory ) * Trudna część: Jak działa wskaźnik? Lub: Jak wyjaśnić problem techniczny osobom nietechnicznym? * Szukam rzeczywistego przykładu pracy dla systemu referencyjnego. Czy biblioteka jest dobrym przykładem? * Czym jest pamięć i jak współdziała z naszym kodem i zmiennymi? * Jak zmienna wygląda w pamięci? (alokacja pamięci) * W jaki sposób uzyskuje się dostęp do tej zmiennej? (odwołania do adresów) * Jak użyć wskaźnika, aby uzyskać dostęp do pamięci? * W strasznej nadziei, ludzie mogą podążać tym tokiem myślenia: * Żywy przykład i praktyka Rzeczy, które chciałbym pominąć w części 2: Wskaźnik zerowy * Wskaźnik na wskaźnikach * Arytmetyka wskaźników * Adresy kontra wskaźniki * Struktury * Tablice


title: Oszacowanie zaległości

text: Z jakim wyprzedzeniem należy szacować historie w swoim backlogu? Obawiam się, że szacunki, które są za 6 miesięcy, staną się nieaktualne w miarę opracowywania funkcji w bieżącym sprincie. Pomyślałem, że ze zwinnością przeszacowujesz swój obecny sprint.


title: Jak powszechne są odwołania cykliczne? Czy GC zliczania referencji działa dobrze?

text: Jak powszechne są odwołania cykliczne? Im mniej są one powszechne, tym mniej trudnych przypadków masz, jeśli piszesz w języku, w którym jest tylko liczenie referencji - GC. Czy są przypadki, w których nie byłoby dobrze, gdyby jedno z odwołań było „słabym” odwołaniem, aby liczenie odwołań nadal działało? Wygląda na to, że powinieneś być w stanie, aby język używał tylko liczenia referencji i słabych referencji, a wszystko działało dobrze przez większość czasu, mając na celu wydajność. Możesz również mieć narzędzia pomocne w wykrywaniu wycieków pamięci spowodowanych przez odwołania cykliczne. Myśli ktoś? Wygląda na to, że Python używa liczenia referencji (nie wiem, czy od czasu do czasu używa kolektora śledzenia, czy nie na pewno) i wiem, że Vala używa liczenia referencji ze słabymi referencjami; Wiem, że robiono to już wcześniej, ale jak dobrze by to działało?


title: Czy drzewa są zorganizowane przez strukturę „pierwszego dziecka, następnego rodzeństwa”? Jeśli nie, dlaczego nie?

text: Zazwyczaj drzewiaste struktury danych są zorganizowane w taki sposób, że każdy węzeł zawiera wskaźniki do wszystkich swoich dzieci. +------------------------------------------+ | korzeń | | dziecko1 dziecko2 dziecko3 | +--+------------------+----------------+--+ | | | +---------------+ +---------------+ +--------------- + | węzeł1 | | węzeł2 | | węzeł3 | | dziecko1 dziecko2 | | dziecko1 dziecko2 | | dziecko1 dziecko2 | +--+---------+--+ +--+---------+--+ +--+---------+-- + | | | | | | Wydaje się to naturalne, ale wiąże się z pewnymi problemami. Na przykład, gdy liczba węzłów podrzędnych jest różna, do zarządzania węzłami podrzędnymi potrzebujesz czegoś w rodzaju tablicy lub listy. Używając zamiast tego wskaźników tylko do (pierwszego) dziecka i (następnego) rodzeństwa, otrzymujemy coś, co wygląda tak: +-------------------+ | korzeń | | rodzeństwo dziecka +--->NULL +--+----------------+ | +----------------+ +----------------+ +------------- ---+ | węzeł1 | | węzeł2 | | węzeł3 | | rodzeństwo dziecka +--->| rodzeństwo dziecka +--->| dziecko rodzeństwo +--->NULL +--+-------------+ +--+----------------+ +--+-- -----------+ | | | Oczywiście ten rodzaj struktury może równie dobrze reprezentować drzewa, ale ma też pewne zalety. Najważniejsze jest to, że nie musimy się już martwić o liczbę węzłów potomnych. Gdy jest używany do drzewa analizy, oferuje naturalną reprezentację terminu takiego jak „a+b+c+d+e”, nie stając się jednak głębokim drzewem. Czy biblioteki kolekcji oferują takie struktury drzewiaste? Czy parsery używają takiej struktury? Jeśli nie, jakie są powody?


title: Testowanie Javy jako Groovy

text: Zastanawiamy się nad ulepszeniem procesu testowania niektórych naszych aplikacji oraz pomysłem, który został przedstawiony, aby pisać testy jednostkowe w Groovy i automatycznie uruchamiać je za pomocą Mavena. Pierwsza aplikacja, w której zastosowano ten zabieg, jest napisana w Javie, ale powiedziano mi, że niektóre z testowanych klas muszą zostać przemianowane na pliki ".groovy" *, a następnie zostaną skompilowane jako klasy Groovy, a nie jako klasy Java . Tę zmianę nazwy można przeprowadzić za pomocą Maven i Ant, ale obawiam się, że jeśli skompilujemy nasze klasy jako klasy Groovy, tak naprawdę nie testujemy ich jako klas Java, i tak będą wdrażane. Podczas demonstracji pokazano również, że Groovy nie kompiluje się do tego samego kodu bajtowego, co Java. Został dodany co najmniej jeden członek charakterystyczny dla Groovy, nazwany „metaClass” (byli też inni, nie mogłem wystarczająco dobrze przyjrzeć się ekranowi). Najwyraźniej jest to niezbędne dla frameworka testowego, którego chcą używać, a który nazywa się Spock. Czy mam rację, że się tym martwię? Czy to ma znaczenie? * Powiedziano mi, że jest to spowodowane przyczynami technicznymi, związanymi ze sposobem budowy aplikacji. Powiedziano mi, że nie dotyczy to _wszystkich_ klas, ale niektórych.


title: Czy C#-4.0 jest otwartym standardem?

text: Norma Ecma-334 (ISO/IEC 23270:2006) odpowiada wersji 2.0 języka. Specyfikacja wersji 4.0 jest bezpłatnie udostępniana przez Microsoft, ale lista otwartych specyfikacji Microsoft zawiera tylko wersję Ecma (wersja 2.0). A co z wszystkimi dobrymi funkcjami dodanymi w późniejszych wersjach (LINQ, funkcje lambda itp.)? Czy można je zaimplementować w jego kompilatorze?


title: Aplikacje ze zduplikowanymi danymi - trzymać osobno czy połączyć w jeden zestaw?

text: Obecnie mamy 3 podobne, ale nieco różne aplikacje, które wykorzystują te same dane. Ładujemy (te same) dane do każdej aplikacji, która z nich korzysta. Aplikacje są podobne i wykorzystują tę samą technologię (Ruby on Rails), ale zostały opracowane przez różnych programistów. Konsolidując te dane, nasze kierownictwo wydaje się czerpać korzyści z używania tych samych narzędzi (klejnotów, modułów itp.), ale nie zdaje sobie sprawy z wielu innych powodów, dla których powinniśmy konsolidować wszystko centralnie. Pracowałem w kilku różnych organizacjach, w tym na jednym stanowisku w hurtowni danych, więc centralizacja danych wydaje mi się oczywista. Cykl życia danych to kolejny rok dla bieżącego klienta płacącego, ale także dłuższy okres, ponieważ otrzymujemy dane z różnych organizacji, które je posiadają, na przestrzeni lat i będziemy chcieli porównać jedną organizację i jedną rok innym. Jednak chcę sporządzić listę wszystkich powodów, dla których warto scentralizować (lub nie) ten zestaw danych. Do tej pory mam: * ograniczenie powielania wysiłku. Kiedy implementujemy funkcję, możemy obecnie być zmuszeni do zrobienia tego w dwóch miejscach, zwiększając zarówno wysiłek związany z implementacją funkcji w dwóch miejscach, jak i koszt jej dwukrotnego napisania. * Jakość danych. Utworzenie dwóch zestawów danych, które mają podobną, ale różną zawartość, doprowadzi do rozbieżności między nimi, które z czasem będą rosły, zmniejszając wartość danych. Poszukuję listy innych powodów, szczególnie tych, które dotyczą całkowitego kosztu.


title: Testy jednostkowe na frameworkach wizualizacyjnych (grafika 3D)

text: To jest kontynuacja tego pytania. Pytałem tam, jak robić testy jednostkowe, gdy masz bibliotekę algorytmów naukowych. Mam teraz podobny problem, ale z innym projektem. Pracuję nad abstrakcją ramy silnika grafiki 3D dla DirectX, OpenGl, WebGl, Silverlight, WPF i w zasadzie niezależnie od tego, co 3D API jest tam, na C#, o nazwie Rendering .NET. Scenariusz jest następujący, projekt jest rozwijany przez mały zespół moich kolegów pracujących w tym samym biurze. Wszyscy jesteśmy informatykami, nie zajmujemy się zbytnio społecznością i praktykami inżynierii oprogramowania. Ciężko mi było nawet przekonać do przejścia z Subversion na Git i opublikowania projektu na Codeplexie. Projekt rozrasta się (około 80 tys. linii C#) i obejmuje teraz większość DirectX i OpenGl aż do Shader Model 5.0, więc nie jest to projekt jednoosobowy, jak ten opisany w pytaniu, do którego prowadzi link. Chcemy również zachęcić społeczność open source do współpracy. Do tej pory testowaliśmy, pisząc małe aplikacje, które obejmują inicjowanie wszystkich urządzeń i zasobów, konfigurowanie sceny i rysowanie. Chodzi o to, że nie wiem, jak to zrobić inaczej, mam na myśli, jak zaprojektować małe przypadki testowe, które testują określone cechy frameworka, takie jak alokacja zasobów, prymitywna teselacja, kompilacja shaderów itp., bez konieczności ponownego tworzenia cała inicjalizacja silnika. W niektórych z tych przypadków mogę wymyślić przydatne mocki, ale ogólnie, jak mogę przetestować poprawność algorytmu renderowania, gdy dane wyjściowe są wizualne (obraz lub animowana scena)? W tej chwili najmądrzejszą rzeczą, jaką wymyśliliśmy, jest renderowanie tej samej sceny za pomocą oprogramowania do renderowania, DirectX i OpenGl, i porównywanie ich piksel po pikselu, ale niewielkie różnice w interfejsach API sprawiają, że otrzymane obrazy są wystarczająco różne, aby nie przejść testów bez rzeczywiste błędy. A więc, jakie jest tutaj „właściwe” podejście do testowania?


title: Dlaczego w klasach Java 8 java.time brakuje metody getMillis()?

text: Java 8 ma zupełnie nową bibliotekę dat i godzin w pakiecie java.time, co jest bardzo mile widziane dla każdego, kto musiał wcześniej używać JodaTime lub kłopotać się z tworzeniem własnych metod pomocniczych przetwarzania dat. Wiele klas w tym pakiecie reprezentuje znaczniki czasu i ma metody pomocnicze, takie jak `getHour()`, aby uzyskać godziny ze znacznika czasu, `getMinute()`, aby uzyskać minuty ze znacznika czasu, `getNano()`, aby uzyskać nanos ze znacznika czasu itp. Zauważyłem że nie mają metody zwanej `getMillis()`, aby uzyskać milisekundy znacznika czasu. Zamiast tego należałoby wywołać metodę `get(ChronoField.MILLI_OF_SECOND)`. Wydaje mi się, że w bibliotece wygląda to na niespójność. **Czy ktoś wie, dlaczego brakuje takiej metody, lub że Java 8 jest jeszcze w fazie rozwoju, czy istnieje możliwość, że zostanie dodana później?** http://download.java.net/jdk8/docs/api/java /time/package-summary.html > Zdefiniowane tutaj klasy reprezentują główne koncepcje daty i czasu, > w tym chwile, czasy trwania, daty, godziny, strefy czasowe i okresy. > Opierają się na systemie kalendarza ISO, który jest _de facto_ kalendarzem świata > zgodnym z proleptycznymi zasadami gregoriańskimi. Wszystkie klasy są niezmienne i > bezpieczne wątkowo. > > Każda instancja daty i godziny składa się z pól, które są wygodnie > udostępniane przez interfejsy API. Aby uzyskać dostęp do pól niższego poziomu, zapoznaj się z pakietem > `java.time.temporal`. Każda klasa zawiera obsługę drukowania i analizowania > wszystkich dat i godzin. Zobacz pakiet `java.time.format` > po opcje dostosowywania... Przykład tego rodzaju klasy: http://download.java.net/jdk8/docs/api/java/time/LocalDateTime.html > A data-godzina bez strefy czasowej w systemie kalendarza ISO-8601, na przykład > 2007-12-03T10:15:30. > > `LocalDateTime` to niezmienny obiekt daty i czasu, który reprezentuje datę->czas, często postrzegany jako rok-miesiąc-dzień-godzina-minuta-sekunda. Można również uzyskać dostęp > do innych pól daty i godziny, takich jak dzień roku, dzień tygodnia i tydzień roku. Czas jest reprezentowany z dokładnością do nanosekund. Na przykład wartość > „2 października 2007 o godzinie 13:45.30.123456789” może być przechowywana w > `LocalDateTime`...


title: Jakie „rzeczy biznesowe” powinien wiedzieć programista o swojej firmie i zespole?

text: Spędzam sporo czasu czytając blogi programistyczne i wydaje się, że jest to powszechne przekonanie, że posiadanie wiedzy biznesowej dodaje wartości programiście. Widzę uzasadnienie tego: * Zrozumienie biznesu pomaga programistom w podejmowaniu mądrych decyzji * Może zachęcić do mniej „trwania zbyt długiego robienia wszystkiego perfekcyjnym” i bardziej „załatwiania spraw” * itp. Obecnie jestem stażystą w dużej firmie. Podczas mojego pobytu tutaj nauczyłem się wielu wspaniałych technicznych rzeczy i zdecydowanie rozwinąłem się jako programista. Jednak czuję, że nie rozumiem miejsca mojego zespołu w ekosystemie, a także rozumiem rzeczy techniczne, które faktycznie robię. Aby rozwiązać ten problem, planuję spotkanie z moim menedżerem. Wydaje się, że to świetna okazja, aby dowiedzieć się więcej o mojej firmie/zespole i stać się bardziej wartościowym współpracownikiem. Próbuję wymyślić listę pytań do zadania. Do tej pory myślę o takich rzeczach jak: * Kim są wszyscy nasi klienci? * Czy mógłbyś opisać relacje naszej firmy z innymi firmami? Chcę jak najlepiej wykorzystać ten czas, aby poznać firmę i rolę w niej mojego zespołu. Jakie więc „aspekty biznesowe” mojego zespołu są dla mnie najważniejsze? O jakie rzeczy powinienem zapytać? Uwagi dotyczące mojego zespołu: * Duża część pracy mojego zespołu jest przeznaczona do użytku wewnętrznego w firmie * Nie jest to zespół „zorientowany na klienta” w tym sensie, chociaż naszymi klientami są inne zespoły w firmie * Duża część pracy mojego zespołu polega na ulepszaniu narzędzi ( dodawanie funkcji zamiast opracowywania całych nowych produktów) p.s - to pytanie jest podobne do tego pytania, ale jest inne w tym sensie, że nie pytam o to, co muszę wiedzieć o biznesie w ogóle, ale o to, czego powinienem się dowiedzieć o mojej konkretnej firmie i zespół


title: Jakie są zalety pokazywania numerów wierszy w edytorze tekstu?

text: Czuję się dziwnie, kiedy edytuję kod w IDE, które nie ma numerów wierszy w edytorze tekstu. Mam następujące pytania: 1. Czy numery linii są wizualnie nadmierne, szczególnie gdy w wybranym przez Ciebie IDE istnieje funkcja wyszukiwania według linii? 2. Jakie są zastosowania pokazywania numerów linii?


title: Czy istnieje alternatywa dla HTML Web Sockets, skoro Firefox 4 je wyłączył?

text: Sprawdzałem niektóre z najnowszych silników wieloosobowych w HTML, wszystkie obsługujące gry dla wielu użytkowników (bardzo ładne) - wierzę, że wszystkie te silniki używają gniazd sieciowych do komunikacji. > Dlatego zdecydowaliśmy się wyłączyć obsługę WebSocket w Firefoksie 4, > zaczynając od wersji beta 8 ze względu na problem z bezpieczeństwem na poziomie protokołu. Beta 7 > Firefox obsługuje wersję protokołu -76, tę samą wersję >, która jest dołączona do Chrome i Safari. Beta 8 Firefoksa 4 usunie to > wsparcie. Anne van Kesteren z Opery ogłosiła również, że Opera rezygnuje z obsługi > Websocket. Jesteśmy pewni, że inni twórcy przeglądarek > pójdą w ich ślady. Źródło: Websockets Disabled w FireFox 4 Właśnie natknąłem się na powyższe, więc brak gniazd w Firefoksie 4 lub Operze.... to duże. Czy ktoś wie o alternatywie, czy jest to Chrome, czy też musimy po prostu usiąść i poczekać na kolejną wersję głównych przeglądarek. Więcej informacji : Rocket Engine wydaje się działać ze wszystkimi przeglądarkami, w tym IE8 (http://rocketpack.fi/engine/), jakiej będzie używał jako metody komunikacji?


title: „Zostałem poddany próbie, co jest ze mną nie tak?”

text: Nie mam dużego doświadczenia w realnym życiu z tworzeniem i testowaniem projektów, poza małymi projektami na uczelni. Podczas mojego wykładu na temat inżynierii oprogramowania, z kilku notatek, moją uwagę przykuło proste stwierdzenie: > Mity dotyczące testowania: > > 1. Zostałem wprowadzony do testowania, co jest ze mną nie tak? > 2. .. > 3. .. > Pomyślałem: Czy to naprawdę mit? Czy to nie jest prawdziwe? Czy ludzie w zespole testowym nie chcą być programistami? Czy nie pomyślą, dlaczego zajmuję się testowaniem, a nie tworzeniem? Czy ludzie w fazie rozwoju są lepsi ode mnie? **Dlaczego myślę w ten sposób:** bo po tylu latach, w końcu, jeśli nie będę mógł pisać własnego oprogramowania, ale będę musiał debugować kod innych osób, czy ktoś się nie zawiedzie? Ale z drugiej strony może się mylę. To nie tylko siedzieć i debugować kod innych osób... Jest o wiele więcej. **Czy czegoś mi brakuje?**


title: benchmarki dla oprogramowania quasi-rzeczywistego

text: Zastanawiam się, czy istnieją benchmarki, które mogą pomóc zrozumieć charakterystykę czasu rzeczywistego (czas odpowiedzi) oprogramowania nie działającego w czasie rzeczywistym. Na przykład aplikacja C# na Windows lub MSSQL Server. Wiem, że Windows nie jest systemem czasu rzeczywistego, jednak nie przeszkadza nam to używać go w systemie czasu rzeczywistego, jeśli istnieje jakaś dodatkowa warstwa czasu rzeczywistego. Powiedzmy, że mamy jakiś system czasu rzeczywistego, który odczytuje i przechowuje dane z jakiegoś ADC. Dane są odczytywane z ADC i oznaczane czasowo na FPGA z pewnym oprogramowaniem sprzętowym w czasie rzeczywistym. Ta część systemu jest odpowiedzialna za pobieranie próbek z przetwornika ADC z pewnym precyzyjnym interwałem (przyjmijmy częstotliwość 10kHz) oraz za stemplowanie danych. Następnie próbki pakietu firmware do pakietu danych (powiedzmy 0,1 sekundy) przesyłają dane przez TCP/IP do aplikacji na komputerze z systemem Windows. Komputer z systemem Windows powinien przechowywać dane i wyświetlać je. Tak, aplikacja w systemie Windows nie działa w czasie rzeczywistym, a połączenie TCP/IP nie gwarantuje dostarczenia danych w ustalonym czasie. Na przykład * w niektórych przypadkach transfer danych może zająć 0,01 s, aw innym 1 s. * Windows może przerwać wątki aplikacji na kilka sekund. * aplikacja może się przerwać podczas pracy garbage collectora, w wyniku czego możemy mieć kilkusekundowe przerwanie w części systemu, która jest poza Controller/Firmware. Tj. czas odpowiedzi z podsystemu nie działającego w czasie rzeczywistym różni się w pewnym zakresie. Jednak ten problem można rozwiązać, jeśli w kontrolerze znajduje się wystarczająco duży bufor, który może gromadzić dane oczekujące na odpowiedź z podsystemu nie działającego w czasie rzeczywistym. Aby mieć pewność, że bufor w podsystemie czasu rzeczywistego jest wystarczająco duży, aby obsłużyć podsystem nie działający w czasie rzeczywistym, musimy zrozumieć rozkład prawdopodobieństwa czasu odpowiedzi. Coś w stylu: * czas odpowiedzi <1s w 80% przypadków * 1sek * 2sek * 5sek * 10sek To jest w zasadzie pytanie. Jakieś testy dla Windows, C# lub MS SQL? Jakaś metodyczna? TPC wykonuje dobre testy wydajności SQL Server, jednak ich całkowita wydajność i nie uwzględnia czasu odpowiedzi AFAIK.


title: Jaka jest różnica między wiązaniem statycznym a dynamicznym?

text: Uczymy się o metodach na zajęciach, a mam problem zwłaszcza z koncepcją statyczna vs. dynamiczna. Wikipedia mówi tak: > Metody mogą być powiązane z klasą w czasie kompilacji (wiązanie statyczne) lub z obiektem > w czasie wykonywania (wiązanie dynamiczne). Czy ktoś może opisać, co mają na myśli?


title: Co robisz, aby projekt oprogramowania był solidny, elastyczny i przejrzysty?

text: Wciąż dojrzewam jako inżynier oprogramowania/projektant/architekt, jak możesz nazwać. W tym momencie dostaję małe projekty, projekty prywatne i tak dalej. Zauważyłem, że chociaż myślę o strukturze SW, projektuję jakieś diagramy, czy są one naprawdę jasne w mojej głowie, kiedy zaczynam kodować, na końcu moje oprogramowanie nie jest elastyczne i jasne, jak bym chciał. Chciałabym zapytać, jakich podejść, mechanizmów, a nawet sztuczek używasz, aby Twoje oprogramowanie (i projekt SW) było elastyczne, solidne i przejrzyste (łatwe do zrozumienia i użytkowania). Więc.... Jakieś pomysły dla początkującego?


title: Popularność języka programowania: czy są dane o trendach migracyjnych?

text: Szukam historycznych statystyk pokazujących w przybliżeniu, ilu programistów jakiegoś języka X przechodzi na język Y. Powinny to być dane, które odpowiadają na takie pytania jak: * Czy byli programiści VB6 używają teraz głównie C# lub VB.NET? * Czy wielu programistów Java zmieniło dotychczas swój główny język programowania na Scala? *itp. Nie prowadzę studiów, jestem głównie ciekawa. Czy istnieje jakaś strona internetowa lub instytucja, która gromadzi i publikuje takie dane?


title: Projekt tabeli usługi Azure Storage z wieloma punktami zapytań

text: Mam następującą tabelę usługi Azure Storage. **Tabela PositionData:** PartitionKey: ClientID + VehicleID RowKey: GUID Właściwości: ClientID, VehicleID, DriverID, Date, GPSPosition Każdy pojazd będzie rejestrował do 1 000 000 jednostek rocznie na klienta. Każdy klient mógł mieć tysiące pojazdów. Zdecydowałem się więc na partycjonowanie według `ClientID` \+ `VehicleID`, aby mieć małe, łatwe do zarządzania partycje. Przy zapytaniach przez `ClientID` i `VehicleID` operacja jest wykonywana szybko, ponieważ zawężamy wyszukiwanie do jednej partycji. **PROBLEM:** Problem polega na tym, że czasami potrzebuję zapytania tylko o `ClientID` i `DriverID`. Ponieważ nie jest możliwe wykonanie częściowych porównań PartitionKey, każda pojedyncza partycja będzie musiała zostać przeskanowana. To zabije wydajność. Nie mogę mieć PartitionKey ze wszystkimi `ClientID`, `VehicleID` i `DriverID`, ponieważ zapytania będą zawsze dotyczyć tylko `VehicleID` OR `DriverID`, nigdy obu. **ROZWIĄZANIE 1:** Rozważałem przechowywanie wartości gdzie indziej, która reprezentuje parę VehicleID i DriverID, a następnie posiadanie `ClientID + VehicleDriverPairID` PartitionKey, ale to skutkowałoby setkami tysięcy partycji i będzie dużo łączenia dane między partycjami w moim kodzie. **ROZWIĄZANIE 2:** Utwórz partycję dla `Client + VehicleID` i inną partycję dla `Client + DriverID`. Oznacza to, że aktualizacja tabeli to dwa razy więcej pracy (dwie aktualizacje), ale oba zapytania będą szybkie. Będą też zbędne dane. Czy któreś z tych rozwiązań brzmi realnie? Inne rozwiązania?


title: Jakie masz rady, metody lub praktyki, aby jak najlepiej wykorzystać dzień spędzony na miejscu u klienta?

text: Właśnie wdrożyliśmy duże oprogramowanie, które w wielu aspektach wpływa na sposób, w jaki wygląda dzień pracy użytkownika. Zmienia wiele rzeczy w sposobie interakcji między sobą. Twórcy zespołu robią sobie rundy i spędzają jeden dzień na stronie klienta, aby lepiej zrozumieć, jaki jest typowy dzień dla naszego użytkownika i proces uczenia się, przez który przechodzi. W tym kontekście, jak podszedłbyś tego dnia, jakie pytania zadajesz, jak obserwujesz użytkownika. Czy istnieją określone praktyki? Czego byś nie zrobił? Czy miałeś z tego jakieś złe doświadczenia?


title: Kiedy używasz float, a kiedy double?

text: Często w swoim doświadczeniu programistycznym muszę podjąć decyzję, czy powinienem używać liczb rzeczywistych, czy też zmiennoprzecinkowych. Czasem wybieram float, czasem podwójnie, ale tak naprawdę jest to bardziej subiektywne. Gdybym miał stanąć w obronie mojej decyzji, prawdopodobnie nie podałbym rozsądnych powodów. Kiedy używasz float, a kiedy używasz double? Czy zawsze używasz double, tylko wtedy, gdy występują ograniczenia pamięci, wybierasz float? A może używasz zawsze float, chyba że wymaganie precyzji wymaga użycia podwójnego? Czy istnieją jakieś istotne różnice dotyczące złożoności obliczeniowej podstawowych arytemii między float a double? Jakie są plusy i minusy używania float lub double? A czy użyłeś nawet długiego podwójnego?


title: Czy powinniśmy przetestować wszystkie nasze metody?

text: Więc dzisiaj rozmawiałem z kolegą z zespołu na temat testów jednostkowych. Cała sprawa zaczęła się, gdy zapytał mnie "hej, gdzie są testy na te zajęcia, widzę tylko jeden?". Cała klasa była menedżerem (lub usługą, jeśli wolisz tak to nazwać) i prawie wszystkie metody po prostu delegowały rzeczy do DAO, więc było to podobne do: SomeClass getSomething(parameters) { return myDao.findSomethingBySomething(parameters) ; } Rodzaj boilerplate’u bez żadnej logiki (a przynajmniej nie uważam tak prostej delegacji jak logika), ale w większości przypadków użyteczny boilerplate (separacja warstw itp.). I mieliśmy dość długą dyskusję, czy powinienem go testować jednostkowo (myślę, że warto wspomnieć, że przeprowadziłem pełne testy jednostkowe DAO). Jego główne argumenty są takie, że to nie było TDD (oczywiście) i że ktoś może chcieć zobaczyć test, aby sprawdzić, co ta metoda robi (nie wiem, jak mogłoby to być bardziej oczywiste) lub że w przyszłości ktoś może chcieć zmienić implementacji i dodać do niej nową (lub bardziej jak "dowolną") logikę (w takim przypadku ktoś powinien po prostu przetestować tę **logikę** ). To dało mi jednak do myślenia. Czy powinniśmy dążyć do najwyższego % pokrycia testami? A może to po prostu sztuka dla sztuki? Po prostu nie widzę powodu, aby testować takie rzeczy jak: * gettery i settery (chyba że faktycznie mają w sobie jakąś logikę) * kod "boilerplate" Oczywiście test dla takiej metody (z mockami) zająłby mi mniej niż minutę, ale Myślę, że to nadal jest strata czasu i milisekunda dłużej dla każdego CI. Czy istnieją jakieś racjonalne/nie „łatwopalne” powody, dla których należy testować każdy pojedynczy (lub tyle, ile się da) wiersz kodu?


title: Animacja Wikipedii do generowania Labiryntu przy użyciu DFS nie jest spójna z podanym tam algorytmem, prawda?

text: Proszę spojrzeć na ten link: http://en.wikipedia.org/wiki/Maze_generation#Depth-first_search Tutaj podany algorytm teoretyczny to: > Rozważmy, że przestrzeń dla labiryntu jest dużą siatką komórek (jak duża > szachownica), każda komórka zaczyna się od czterech ścian. Zaczynając od losowej > komórki, komputer następnie wybiera losową sąsiednią komórkę, która nie została jeszcze > odwiedzona. Komputer usuwa „ścianę” między dwiema komórkami i dodaje > nową komórkę do stosu (jest to analogiczne do rysowania linii na > piętrze). Komputer kontynuuje ten proces, przy czym komórka, w której nie ma nieodwiedzanych > sąsiadów, jest uważana za ślepą uliczkę. Kiedy znajduje się w ślepym zaułku > cofa się przez ścieżkę, aż dotrze do komórki z nieodwiedzonym > sąsiadem, kontynuując generowanie ścieżki poprzez odwiedzenie tej nowej, nieodwiedzonej > komórki (tworzenie nowego połączenia). Ten proces trwa, dopóki każda komórka nie zostanie > odwiedzona, co powoduje, że komputer cofa się z powrotem do > komórki początkowej. Ale nie sądzę, że animacja po prawej stronie używa tego samego algorytmu do generowania labiryntu, chociaż nie jest to niepoprawne. Czuję, że animacja korzysta z tego algorytmu: 1. Zacznij od dowolnej nieodwiedzonej komórki, uczyń ją częścią labiryntu i zaznacz ją jako odwiedzoną. 2. Dodaj nieodwiedzonych sąsiadów tej komórki do zestawu komórek, które mogą być brane pod uwagę w następnej kolejności. 3. Wybierz dowolną z komórek z zestawu i zaznacz ją jako odwiedzoną. 4. Sprawdź, czy ta komórka nie ma żadnych odwiedzonych sąsiadów oprócz JEDNEGO (tego, który spowodował dodanie tej komórki do zestawu). W przeciwnym razie przejdź do 3. 5. Kontynuuj, aż wszystkie komórki zostaną odwiedzone. Czy się mylę?


title: Dokumenty do wykorzystania przy opracowywaniu projektu

text: Nie wiem, jak zaplanować rozwój aplikacji mobilnej na iPhone'a, budując konkretną aplikację mobilną dla klienta, muszę wypełnić ankietę dla tego samego klienta, a także muszę mieć dokument towarzyszący rozwojowi projektu, coś jak plik raportu o błędzie i dokument funkcji aplikacji. Moje pytanie dotyczy doświadczonych programistów, czego używacie do planowania całego procesu rozwoju? czy masz jakieś szablony dokumentów, których używasz do rozwiązywania tych problemów?


title: Korzystanie z kontroli wersji w środowisku IDE

text: Piszę wszystkie (no, większość) moich programów w IDE, głównie w netbeans. Czy powinienem używać Mercurial przez IDE, czy lepiej, jeśli zamiast tego użyję CLI? i dlaczego?


title: Moja pierwsza umowa SLA (umowa dotycząca poziomu usług) jako freelancer

text: Zacząłem pracować jako freelancer zaledwie kilka miesięcy temu. Mój pierwszy klient poprosił mnie o stworzenie aplikacji internetowej, aby usprawnić jego biznes. Zrobiłem małą specyfikację tego, co udało mi się zrobić, a także przybliżenie, ile czasu zajmie przygotowanie aplikacji. Po prostu nie mamy żadnej formalnej umowy, w której podałem mu termin, w którym przedstawię postępy w realizacji projektu. Nie uzgodniliśmy też żadnej płatności, ponieważ powiedział mi, że zapłaci mi, gdy program będzie na żywo. To, co się teraz dzieje, to fakt, że program nie dotrzymał terminu, a postępy przedstawię miesiąc po uzgodnieniu. Jak widzisz, oboje popełniliśmy błąd (ja najpierw), ale mam nadzieję, że nie jest za późno, aby to naprawić. Chcę sporządzić SLA, aby uwzględnić kwotę, którą chcę otrzymać za swoją pracę, a także szczegółowe informacje o tym, co dostanie. Byłbym wdzięczny, gdyby ktoś bardziej doświadczony ode mnie mógł dać mi kilka wskazówek, co powinienem uwzględnić w dokumencie SLA, a także, czy mogę uzyskać zalecenia, aby nie popełniać tego samego błędu w przyszłości.


title: Jak porównać jakość kodu z jakością produktu podczas podejmowania decyzji o dodaniu aplikacji open source do mojego CV?

text: Wniosłem znaczący, dobrze napisany kod do projektu open-source. Niestety, projekt jako całość jest zarówno niepopularny, jak i delikatnie mówiąc niezbyt krzykliwy. W przeciwieństwie do plakatu tego przesłania HN, jestem na przeciwnej łodzi - jestem dumny z mojego wkładu, ale zawstydzony produktem końcowym. Jak porównałbyś jakość swojego wkładu w porównaniu z jakością produktu końcowego i popularnością produktu końcowego, podejmując decyzję, czy umieścić go w swoim CV/portfelu, czy nie?


title: Jak pragmatycznie radzić sobie z MPL?

text: Do niedawna zawsze unikałem używania kodu open-source w moich aplikacjach, ze względu na prawne bóle głowy, jakie mi to sprawia. Raczej wydałem sporo pieniędzy i nie martwię się o przypisanie (ponieważ większość komercyjnych komponentów tego nie wymaga), niż nic nie płacąc, ale spędzając dużo czasu na czytaniu tekstów prawnych, nigdy nie mając pewności, czy jestem w pełni zgodny. Istnieje jednak mnóstwo kodu, którego szkoda byłoby zignorować. Czasami rozwiązania open-source są lepszej jakości niż ich komercyjne odpowiedniki. Licencja, z którą spotykam się najczęściej i jest najtrudniejsza do uchwycenia, to MPL. Wszystkie często zadawane pytania stwierdzają, że nie ma problemu z kompilacją kodu do aplikacji o zamkniętym kodzie, o ile dostępne są zmiany w kodzie. Zakładając, że nie będę wprowadzał zmian w kodzie, o jakich innych rzeczach należy pamiętać? Na przykład informacje o prawach autorskich i przypisanie; czy muszę dołączyć kilka plików z różnymi uwagami o prawach autorskich? Czy powinienem podwoić rozmiar okna Informacje i wyświetlić listę wszystkich komponentów typu open source wraz z witryną ich dostawcy itd.? Jak sobie z tym radzisz? Zwracam uwagę, że nie mam problemu z przyznaniem autorom kodu zasług, na jakie zasługują. Chciałabym po prostu wiedzieć, co jest rozsądne, żebym mogła się tym zająć w sposób pragmatyczny i nie bać się już przynajmniej MPL. Mając nadzieję na twoje doświadczenia. ## Aktualizacja Aby moje pytanie było bardziej jasne, posłużę się analogią. Powiedzmy, że zamierzam napisać książkę A i chciałbym wykorzystać niektóre fragmenty książki B, które napisał ktoś inny. Autor B nie ma nic przeciwko temu, o ile go uznaję (bardzo podobnie jak klauzula w MPL). Ale jak mam to zrobić? Czy mam umieścić jego nazwisko na mojej okładce i/lub na marginesie każdej strony, na której używam całych jego akapitów i/lub gdzie używam pełnych jego zdań i/lub gdzie używam kilku jego słów i /lub w dedykacji ze źródłami? A może wystarczyłoby wydrukować jego imię czarnymi literami na czarnej stronie lub czcionką 0,00001? Na szczęście w przypadku książek nie ma tak wielu sposobów na zrobienie tego, jak w przypadku oprogramowania i istnieje pewna ugruntowana praktyka. W dziedzinie oprogramowania nie odkryłem jeszcze żadnego, więc tutaj pytam, czy coś przeoczyłem. Nie chodzi o to, aby przypisywać jak najmniejszą atrybucję, ale szukam tego, co jest dopuszczalne i sprawiedliwe; nie chciałbyś też napisać książki, w której każda strona jest w połowie wypełniona atrybucjami... Atrybucja to tylko jeden z terminów, które trudno mi skonkretyzować. A co z udostępnieniem kodu i tekstów licencji, jeśli nic nie zmieniłem? Czy zamieszczam link do strony autora, czy też robię jej kopię lustrzaną i link do niej, czy też umieszczam ją w moim instalatorze? I **na przykład** , z projektu Firebird mam większość plików w jednym miejscu, ale kilka bibliotek DLL jest rozsianych po folderach mojej aplikacji. Czy sugerowałbyś utworzenie pojedynczego folderu z tekstami licencji i wykazem, które pliki są dla każdego istotne? Czy to wystarczy? Czy jest lepszy sposób? Pełne odpowiedzi odpowiadają na wszystkie wymagania MPL. :)


title: Jak dowiedzieć się, jakie Hackathony zbliżają się do mnie?

text: Właśnie poszedłem na mój pierwszy hackathon (London GreenHackathon) i chcę pójść na wiele innych. W szczególności hackathony, których tematem jest pomaganie ludziom lub w jakiś sposób ulepszanie świata. Wiem o Random Hacks of Kindness i kilku innych, ale czy istnieje jakiś centralny agregator, który pomoże mi dowiedzieć się o hackathonach? Ponadto, jeśli ktoś inny może zaproponować konkretne inicjatywy hackathonowe, powinienem sprawdzić, które również byłyby przydatne. Jestem w Londynie, ale oczywiście dla innych osób czytających to pytanie inne lokalizacje będą interesujące.


title: Java API a inne API

text: Jestem bardziej na końcu spektrum programistów, ale mimo to miałem kontakt z kilkoma językami programowania i frameworkami. Ze wszystkich technologii, z których korzystałem, nie znalazłem żadnej z interfejsem API tak dobrze zorganizowanym i przyjaznym dla użytkownika, jak Java. Dlaczego to? Dlaczego jest tak, że solidne języki, takie jak C++, Perl i Python, nie mają interfejsów API, które są nawet zbliżone do Javy?


title: Wrapper C++ do "uwalniania" obiektu singletona

text: Mam klasę taką jak ten szablon <typename T, typename Policy> AutoObjectRelease { public: AutoObjectRelease(T& obj):obj_(obj){} ~AutoObjectRelease(){ Policy::Release(obj_); } prywatne: T& obj_; } Zastanawiam się, jak nazwałbyś tę klasę, ponieważ wydaje mi się, że może to być dość powszechny wzorzec. Zastanawiam się też, w jakich innych sytuacjach skorzystałbyś z takiej klasy. W moim przypadku używam obiektu singleton tylko sporadycznie i chciałem się upewnić, że nie zostanie załadowany przez cały czas działania aplikacji. Jakie są twoje przemyślenia na ten temat? Innym pomysłem byłoby zliczenie referencji do obiektu singleton, ale nie wiem dokładnie, jakie byłyby korzyści dla obiektu singleton - może to tylko skomplikować implementację (trzeba również, aby była bezpieczna dla wątków)


title: Jak zarządzasz refaktoryzacją z dużą bazą kodu i wieloma programistami?

text: Chciałbym zapobiec sytuacji, w której dwóch programistów refaktoryzuje ten sam kod jednocześnie, nie mówiąc o tym wcześniej, prawdopodobnie przy użyciu jakiegoś narzędzia, na przykład wtyczki Eclipse. Możesz pomóc? Mamy 4,5 miliona linijek kodu i ponad 20 zespołów programistów na czterech kontynentach. Idealnie chciałbym, aby drugi z wymienionych wcześniej programistów zauważył, że ktoś inny pracuje nad tym samym fragmentem kodu i porozmawiał z pierwszym, zanim cokolwiek zmodyfikuje. Czy znasz rozwiązanie?


title: Czy wyniki wyszukiwania Google mogą być ponownie wykorzystywane?

text: Staram się rozwijać aplikację podobnie jak wyszukiwarka i chciałbym korzystać z wyników wyszukiwania Google i refaktoryzować je w mojej aplikacji. Czy mogę ponownie opublikować wyniki wyszukiwania Google na swój własny sposób i czy mogę spodziewać się przy tym problemów prawnych ?


title: Radzenie sobie z często występującą zależnością niezwiązaną z klasą

text: Do tworzenia szablonów używam klas widoków. Te klasy widoku często wymagają, aby klasa Routing pobierała identyfikatory URI z innych stron. Można powiedzieć, że Routing powinien być dostępny dla każdej klasy widoku. Co się zastanawiam jak poradziłbyś sobie z zastrzykiem zależności. Wstrzyknięcie go za pomocą konstruktora oznaczałoby, że będziesz musiał dołączyć go do każdej klasy widoku w wielu kontrolerach. Wydaje mi się to niewłaściwe. Można to również uwzględnić przez rozszerzenie klasy, ale nie sądzę, że wszystkie widoki zasługują na klasę bazową tylko dla biblioteki routingu, a to mogłoby złamać zasady SOLID, które to robisz, z powodu zależności, która nie jest bezpośrednio związana z klasą potomną. Moją ostatnią opcją byłoby wstrzyknięcie go przez zmienną publiczną, która wstrzykuje go w jednym miejscu tuż przed renderowaniem szablonu. Jak rozwiązaliście ten problem? Szukam czystego, nie powtarzalnego sposobu.


title: Czy wzorce lub strategie projektowe monolitu i mikrojądra?

text: Jaka jest różnica między wzorcem projektowym a strategią? Czy monolit faktycznie jest antywzorcem?


title: Pisanie kodu a szukanie odpowiedzi na problem?

text: Dlaczego pisanie kodu, gdy napotkasz trudny problem, jest uważane za „złą” praktykę programistyczną? I dlaczego przemyślenie problemu całkowicie na papierze lub w głowie przed napisaniem kodu jest „dobre”? Z tego, z czym pracowałem, jestem w stanie zobaczyć problemy na wiele różnych sposobów lub specjalne przypadki, o których na początku nie pomyślałem, wpisując kod i debugując, niż najpierw całkowicie rozwiązać problem? Poza tym nie mogę znaleźć odpowiednich hashtagów do tego. Tak więc każda pomoc jest bardzo ceniona!


title: Ile czasu spędzasz faktycznie na programowaniu a działaniach infrastrukturalnych?

text: Kiedy pracuję, czuję, że przez większość czasu nie robię prawdziwej pracy. Na przykład po dokonaniu zmiany w kodzie, aby go przetestować, muszę najpierw zbudować projekt i uruchomić serwer (powiedzmy JBoss). Po testach stwierdzam, że jest jeszcze jeden mały problem. Więc wyłączam serwer, wprowadzam zmiany, ponownie buduję i ponownie uruchamiam serwer. Budowanie i włączanie/wyłączanie serwera nie jest zbyt pożyteczną pracą. Ponadto IDE (powiedzmy Eclipse) robi takie rzeczy, jak aktualizowanie indeksów Maven i budowanie obszaru roboczego, co zajmuje trochę więcej czasu, aby wykonać zadania. Czy spotkałeś się z taką sytuacją? Czy masz wskazówki, jak to przezwyciężyć/ominąć? Jakieś funkcje narzędzi IDE/kompilacji, które mogą być pomocne? Jakakolwiek architektura/projekt aplikacji/technologia, która próbuje to przezwyciężyć?


title: Zatrudniasz programistę o wiele bardziej wykwalifikowanego i doświadczonego niż Ty?

text: Mój pracodawca zatrudnia programistę - a dokładniej przeprowadzam rozmowę kwalifikacyjną i wybieram osobę, która obejmie stanowisko. Najlepszy kandydat w tej chwili jest znacznie lepiej wykwalifikowany niż ja, starszy io wiele bardziej doświadczony. Inni ludzie, z którymi rozmawiałem, powiedzieli, że zatrudnienie kogoś lepiej wykwalifikowanego niż ja to naprawdę zły pomysł (w tym moja rodzina). I mam wrażenie, że inni pracownicy techniczni mają tutaj podobne nastawienie (biorąc pod uwagę, że ten kandydat ma również wyższe kwalifikacje niż oni). Mówią lub myślą, że zatrudnienie kogoś lepiej wykwalifikowanego zaszkodzi wysiłkom moim i mojego obecnego współpracownika, aby awansować w firmie, albo obawiają się, że ostatnio przybyły Johnny ukradnie światło reflektorów, a obecni pracownicy to zrobią. pozostać w tyle, ponieważ awanse są rozdawane i otwierają się nowe pozycje. Osobiście bardzo chciałbym pracować z tym kandydatem i uczyć się od nich. Jestem wystarczająco pewna siebie, by nie bać się, że ktoś nowy i bardziej doświadczony wejdzie i zacznie sprawiać, że wyglądam źle. Chciałbym wykorzystać to jako okazję do rozwoju i nie uważam, że lęk przed konkurencją lub nowymi ludźmi nie jest racjonalny ani korzystny. A może po prostu jestem naiwny. Co myślisz? A czy miałeś kiedyś podobne doświadczenia? Jak ci się udało?


title: Relacje w Chen ERD

text: Pracuję nad Chen ERD, aby modelować produkty naszych organizacji. Naszą centralną jednostką jest Styl. Posiadamy uzupełniające byty Koloru i Sezonu. Definiuję nasz asortyment jako relację między tymi trzema podmiotami, a ta relacja sama w sobie będzie miała atrybuty i jest definiowana przez trzy podmioty, które uczestniczą w relacji obowiązkowej. Zasady są; * Wiele stylów może być oferowanych w jednym sezonie, a styl może być oferowany w wielu sezonach. * W ciągu sezonu styl może być oferowany w wielu kolorach. Następnie mam 2 inne podmioty, z których jeden jest moim zdaniem słaby, Klimat, a drugi może być słaby, ale nie jestem pewien, jest to Kanał Transakcyjny. Myślę o nich jako o związkach poza związkiem? Oznacza to, że dla danej kombinacji Stylu/Koloru oferowanej w Sezonie może być ona dostępna przez 1 lub więcej Kanałów Transakcji. Dodatkowo w ciągu sezonu dana kombinacja Styl/Kolor może być przeznaczona dla 1 lub więcej Klimatów. Czy ważne jest, aby mieć relacje poza związkami? Czy też ten wymóg nakazuje, abym myślał o relacji Styl/Kolor/Pora roku jako o samej istocie i definiował relacje z Kanałem Klimatu i Transakcji poza tym podmiotem?


title: Czy Ruby on Rails / Grails to najszybsze frameworki do szybkiego uruchamiania witryn?

text: Rozważam użycie Grails dla nowej strony internetowej, ale jestem otwarty na inne/nowe języki programowania i frameworki. Zrobiłem programowanie przy użyciu J2EE/JSF2, ASP.NET i PHP. Czy Grails lub Ruby on Rails to najlepszy sposób na szybkie uruchomienie funkcjonalności? Kilka wstępnych przemyśleń: * DJango wygląda podobnie do RoR/Grails i rozważyłbym to * GWT to interesująca koncepcja, ale nie wydaje się, aby czas realizacji był tak szybki Dzięki, -Jon


title: Zasoby do programowania opartego na testach w aplikacjach internetowych?

text: Chciałbym spróbować zaimplementować trochę TDD w naszych aplikacjach internetowych, aby zredukować regresje i poprawić jakość wydania, ale nie jestem przekonany, jak dobrze zautomatyzowane testowanie może działać z czymś tak puszystym jak aplikacje internetowe. Czytałem i próbowałem TDD i testów jednostkowych, ale przykłady to „solidne” i raczej proste funkcje, takie jak przeliczanie walut i tak dalej. Czy są jakieś zasoby, które mogą pomóc w testowaniu jednostkowym systemów zarządzania treścią i publikacji? Co powiesz na testowanie jednostkowe koszyka/sklepu (produkty fizyczne i online)? AJAX? Googlowanie pod hasłem „Web Test Driven Development” przysparza mi starych artykułów sprzed kilku lat, obejmujących te same przykłady funkcji podobnych do kalkulatora, albo dyskusje o tym, dlaczego TDD jest lepsze niż cokolwiek innego (bez żadnych przykładów).


title: Jak zebrałbyś pomysły, które należy omówić w czasie?

text: Jaki jest najlepszy sposób zbierania i/lub śledzenia pomysłów/kwestii, które należy szczegółowo omówić w czasie? Jako przykład, wyobraź sobie, że w zespole przeprowadzasz burzę mózgów na temat NoSQL lub dyskutujesz, czy Node.JS jest opcją dla Twojego zespołu, czy nie? Albo niektórzy ludzie opowiadają się za Erlangiem, a inni nie. Coś, co wymaga czasu i wielu dyskusji, aby ostatecznie się zdecydować. Obecnie przechowujemy wszystko w wątkach e-mail lub na papierze, ale czy istnieje lepszy sposób, aby później wyodrębnić dane w prostszy lub bardziej intuicyjny sposób? Coś w stylu tego, co mamy jako menedżerowie zadań/zadań, ale z możliwością dyskusji? PS Jedną z opcji jest użycie prywatnego oprogramowania _forum_, ale w naszym zespole nikt tego nie lubi. Może dlatego, że większość z nich wygląda staro.


title: pomóż mi zrozumieć Railsy i atrybuty jako metody klas

text: To jest z _samouczka Hartl Rails_. Automatycznie logujemy użytkownika w procesie tworzenia tego użytkownika z wywołaniem zwrotnym do `#create_remember_token`. Działa świetnie, ale jest kilka rzeczy, których nie jestem pewien. Proszę o wyrozumiałość, ponieważ jestem całkowicie zdezorientowany do tego stopnia, że nawet nie wiem, jak zadać moje pytanie. Mam model użytkownika: class User<ActiveRecord::Base ... ... before_create :create_remember_token def User.new_remember_token SecureRandom.urlsafe_base64 end def User.encrypt(token) Digest::SHA1.hexdigest(token.to_s) end private def create_remember_token self.remember_token = User.encrypt(User.new_remember_token) end ... Jestem zdezorientowany co do `::new_remember_token` i encrypt będącego metodami dołączonymi do `User`. Wygląda na to, że są to atrybuty „Użytkownika”, takie jak „imię”, „e-mail”, „hasło” itp., ponieważ dostęp do nich odbywa się za pomocą notacji kropkowej. Ale są one zdefiniowane jak metody i wydają się zwracać obliczoną wartość. Nie rozumiem, dlaczego atrybut modelu `User` jest określany przez `self` w celu przypisania `self.remember_token` i `User.encrypt` w celu uzyskania dostępu do metody klasy. * * * **Moje pytanie** Jaka jest różnica między powyższym a następującym, gdzie słowo „Użytkownik” zostało zastąpione słowem „siebie”. ? class Użytkownik<ActiveRecord::Base ... ... before_create :create_remember_token def new_remember_token SecureRandom.urlsafe_base64 end def encrypt(token) Digest::SHA1.hexdigest(token.to_s) end private def create_remember_token self.remember_token = self. self.new_remember_token) koniec ... Jestem nowicjuszem w języku _ruby_, ale całkiem nieźle posługuję się javascriptem, więc jeśli istnieje analog _js_, może mi to pomóc w określeniu tego w tych kategoriach.


title: Szablon do transferu wiedzy

text: W tej firmie pracuję od ponad roku. Teraz chcą, abym utworzył dokument KT w celach informacyjnych. Czy jest dostępny dla mnie szablon dokumentujący wykonane przeze mnie kodowanie?


title: Jak radzić sobie z nastawieniem „automatyzacja jest łatwa”?

text: Tytuł mówi wszystko. Niektórzy pracownicy naszej firmy uważają, że testy automatyczne są "łatwe" i że napisanie zestawów testów COM i UI "powinno zająć dzień". Co można zrobić, aby temu przeciwdziałać? Uwaga: nie pytam jak promować automatyzację. To nie jest problem. Zautomatyzowane testy i procesy są tutaj cały czas promowane i wymagane. Problem polega na tym, że niektóre osoby nie rozumieją, że automatyzacja nie jest ani „łatwa”, ani „szybka”.


title: Najlepsze praktyki pracy z frameworkami, które wymyślają własne typy [więcej na pytanie C/C++]

text: Czy istnieje właściwy sposób obsługi interfejsów API, które wymyślają własne typy? Na przykład WinAPI, QT, Boost. Wiele frameworków ma swoje własne typy całkowite i logiczne, a także bardziej skomplikowane typy danych. Czy więc lepiej jest używać natywnych typów C/C++, takich jak `bool` lub alternatyw, takich jak `QBool/BOOL/etc`., oraz natywnych typów kontenerów, takich jak `std::map/std::set/std::vector` w porównaniu wymyślone na nowo, takie jak `QList/boost::something/ATL::map/etc`. I jak te wybory odpowiadają na przenośność między platformami. TL; DR Który z nich `QBool IsInteresting(const QString &str)` a `bool IsInteresting(const std::string &str)`?


title: Najlepsze praktyki w zakresie mapowania między danymi/biznesem/modelem itp.

text: Jakie jest najlepsze podejście do mapowania między Entity, View Model lub dataContract. Na przykład widziałem następujące struktury modelowania dla SOA. **WCF** -> DataContract dystrybuowane do klienta. **Warstwa środkowa** -> Modele i interfejs z mapowaniem do typu repozytorium i ewentualnie konkretną klasą, która implementuje ORM. W niektórych przypadkach widziałem używane odbicie, inne po prostu ustawiają właściwości i biblioteki innych firm, takie jak AutoMapper dla C#. Jaki jest najskuteczniejszy sposób, aby Twój system był „łatwy w utrzymaniu” i funkcjonalny lub konie na kursy? **EDYTUJ:** Pytanie nie dotyczyło Microsoftu, użyłem SOA dla java i ten sam problem występuje z mapowaniem. Pytam o mapowanie bezpośrednie vs. odbicie itp.? To naprawdę nie ma nic wspólnego z ORM-ami. np. thesolution.models.interfaces public interface IProduct { //pakiet właściwości i sygnatur metod } thesolution.models public abstract class Produkt implementuje IProduct { //implementacja } thesolution.repositories.sapMD public class Produkt rozszerza Implementacje produktu IProduct { //implementuje i robi stuff} thesolution.repositories.sapCRM public class Produkt rozszerza Produkt implementuje IProduct { //implementuje i robi rzeczy} thesolution.controllers public class ProductController { public IActionResponse Save(IProduct product) { //zapisz do repozytorium sapMD IAction actionMd = ((rozwiązanie. repozytoria.sapMD.Produkt)produkt).Zapisz(); //zapisz do repozytorium sapCRM IAaction actionCrm = ((thesolution.repositories.sapMD.Product)product).Save(); Odpowiedź IActionResponse = nowa odpowiedź thesolution.message.product.ActionResponse(); odpowiedź.Działania.Dodaj(Mddziałania); response.Actions.Add(actionCrm); odpowiedź zwrotna; } } thesolution.DataContracts //XSD JAXB itp. thesolution.Services //twoja metoda usługi public class ProductServices ... { public thesolution.DataContracts.ResponseAction Save(thesolution.DataContracts.Product product){ // więc teraz jak się masz mapowanie z powrotem do IProduct ręcznie, odbicie itp. } }


title: Czy należy testować złożoność algorytmiczną? Jeśli tak to jak?

text: Powiedzmy, że implementuję coś prostego, jak przeszukiwanie posortowanej listy/tablicy. Funkcja (w c#) wyglądałaby podobnie do: static int FindIndex(int[] sortedList, int i); Mógłbym to zaimplementować i przetestować pod kątem funkcjonalności, ale z oczywistych względów zwykle wolałbym wyszukiwanie binarne od wyszukiwania liniowego lub coś celowo głupiego. Więc moje pytanie brzmi: czy powinniśmy próbować pisać testy, które gwarantowałyby wydajność pod względem złożoności algorytmicznej, a jeśli tak, to w jaki sposób? Zacząłem argumentować po obu stronach części „czy powinieneś” tego pytania, ale chciałbym zobaczyć, co ludzie mówią bez moich argumentów, aby ich skłonić. Jeśli chodzi o „jak”, robi się to bardzo ciekawie:) Można było zobaczyć parametryzację operatora porównania i test, którego operator porównania liczy porównania lub coś w tym rodzaju. Ale tylko dlatego, że możesz, nie oznacza, że powinieneś... Czy ktoś jeszcze to rozważał (prawdopodobnie)? Dziękuję.


title: Najlepszy materiał przypominający o Java Garbage Collection?

text: Dawno nie oglądałem Java Garbage Collection i czuję potrzebę odświeżenia jej. Ktoś poleca zasób lub dwa?


title: Czy bycie głównym programistą produktu (przeznaczonego dla dobra społecznego) pomaga dostać się na studia doktoranckie na najlepszym uniwersytecie?

text: Pracuję nad produktem jako core developer, który zostanie wprowadzony na rynek USA za kilka miesięcy, jeśli się powiedzie. Czy ten czynnik może zwiększyć moje szanse na przyjęcie na studia doktoranckie na jednym z najlepszych uniwersytetów (powiedzmy, że 20 najlepszych w USA)? Zwykle dobre uniwersytety, takie jak CMU, Standford, MIT, Cornell, są bardziej zainteresowane profilem studenta, takim jak praca naukowa, studia licencjackie itp. Teraz jestem zemdlały z bardzo dobrego uniwersytetu, który znajduje się tylko w pierwszej dwudziestce Indii. Do tej pory również nie prowadziłem prac badawczych. Ale będąc jednym z członków założycieli firmy i tworzących dla nich produkt, chcę wiedzieć, czy ten czynnik może pomóc iw jakim stopniu.


title: Czy powinienem przepisać historię git projektu bez licencji GPL, aby usunąć kod GPL, który został później usunięty?

text: Mam projekt na licencji MIT, który zawierał bibliotekę JavaScript GPL, która została usunięta. Czy istnieje prawna konieczność przepisania historii zmian w celu całkowitego usunięcia tego kodu?


title: Podejścia dydaktyczne do nauczania wersjonowania za pomocą Git

text: Uczyłem już wersjonowania za pomocą Gita, ale myślę, że dla chłopaków, których uczę, będzie to przyjemniejsze, jeśli zastosuję inne podejście do ich nauczania. Chłopaki, o których wspomniałem wcześniej, byli przyzwyczajeni do pracy z SVN i próbowałem uczyć Gita w oparciu o SVN. Niezbyt dobry pomysł. Wydaje się, że niektórzy faceci/zespoły używające SVN potrzebują reedukacji w zakresie kontroli wersji, gdy uczą się Git lub innego DCVCS. W innej próbie próbowałem pokazać scenariusz, w którym zespół programistów próbuje pracować bez (D)VCS, a następnie pokazałem, jak ich życie mogłoby być łatwiejsze, gdyby używali (D)VCS. Miałem wrażenie, że część publiczności opuściła prezentację nie mając pojęcia o czym mówię. Uczyłem inne zajęcia z innych przedmiotów bez problemów, więc myślę, że to nie jest problem dla mnie jako nauczyciela, ale dla mojej metody. Znam Gita i wersjonowanie, znam też inne tematy, które przedstawiłem innym klasom. Więc, w zasadzie, jak uczyć Git/DCVCS? Zacznij od paru różnic/łat i ręcznego wersjonowania, a potem naucz, jak może być bardziej produktywny z Git? Zacząć od modelu obiektowego Git? A może spróbuj zacząć od ładnych poleceń i spróbuj zaoszczędzić trochę czasu? Żeby było jasne: szukam sposobów skutecznego nauczania DCVCS (koncentracja na Git), w oparciu o prawdziwe doświadczenia.


title: Gdzie mogę pobrać aplikację Petshop zaimplementowaną w WPF i ASP.NET (.NET 4)?

text: Potrzebuję słynnej aplikacji Petshop zaimplementowanej w WPF i ASP.NET (.NET 4). Starszą wersję można znaleźć tutaj. Gdzie mogę go otrzymać?


title: znalezienie złożoności czasowej następującego programu

text: Muszę znaleźć złożoność czasową pod względem notacji Big Oh dla następującego programu, który oblicza silnię podanej liczby: Program wygląda tak: public int fact(int n){ if (n <=1) return 1; w przeciwnym razie zwróć n * fakt (n-1); } Wiem, że powyższy program używa rekurencji, ale jak wyprowadzić złożoność czasową dla powyższego programu? Proszę wytłumacz.


title: Jak roboty mogą pokonać CAPTCHA?

text: Posiadam formularz e-mail na stronie internetowej. Używam niestandardowego CAPTCHA, aby zapobiec spamowi od robotów. Mimo to nadal otrzymuję spam. Czemu? Jak roboty pokonują CAPTCHA? Czy używają jakiegoś zaawansowanego OCR, czy po prostu otrzymują rozwiązanie z miejsca, w którym jest przechowywane? Jak mogę temu zapobiec? Czy powinienem zmienić na inny typ CAPTCHA? * * * Jestem pewien, że e-maile pochodzą z formularza, ponieważ są one wysyłane od mojego nadawcy, który obsługuje wiadomości z formularza. Również styl liter jest taki sam. Dla przypomnienia używam PHP + MySQL, ale nie szukam rozwiązania tego problemu. Interesowała mnie ogólna sytuacja, jak roboty pokonują te technologie. Właśnie podałem tę sytuację jako przykład, abyś mógł lepiej zrozumieć, o co pytam.


title: Wykorzystanie licencji mix w użytku komercyjnym

text: Zajmuję się tworzeniem systemu CMS, w jego wnętrzu używam wielu różnych wtyczek/dodatków na licencji głównie takich jak MIT, GNU, GPL (takich jak jQuery, nivoSlider, DataTables itd.). Po przeczytaniu tych licencji wierzę, że mogę ich używać w moim CMS i pobierać opłaty od użytkowników za mój CMS. W moim projekcie mam określony folder, w którym przechowuję wszystkie te wtyczki wraz z ich licencją i wszystkimi uwagami. Czy to właściwy sposób? A może powinienem gdzieś w mojej witrynie zauważyć wszystkie wtyczki, których używam, ze ścieżką, w której można je znaleźć w folderze mojego projektu? A gdybym używał mojego CMS jako SaaS? Użytkownicy końcowi nie mieliby dostępu do plików źródłowych, więc nie zajmę się ich dystrybucją. Czy to możliwe? I wreszcie, czy mogę chronić własne pliki źródłowe licencją? Czy nie zderzyłoby się z pozostałymi? Chciałbym go chronić tak bardzo, jak tylko mogę, przynajmniej w legalny sposób, ponieważ nie mogę go naprawdę chronić, ponieważ wszystkie pliki PHP są łatwo dostępne. Dziękuję za wszelką pomoc. Zauważ też, że dużo czytałem o licencji, ale są to rzeczy, które chciałbym potwierdzić lub sprawdzić, czy coś źle zrozumiałem.


title: Czy JVisualVM obniży wydajność aplikacji?

text: Mam wątpliwości co do wydajności narzędzia JVisual VM profilera. Mam wymóg wdrożenia narzędzia JVM Monitoring dla mojej aplikacji java dla przedsiębiorstw. Przeszedłem przez kilka narzędzi do profilowania na rynku, ale wszystkie mają jakiś plik agenta, który musimy uwzględnić podczas uruchamiania serwera. Obawiam się, że te agenty klienckie obniżą wydajność mojej aplikacji jeszcze bardziej. Więc zdecydowałem się na JVisual VM, ponieważ to narzędzie do profilowania jest dostarczane z samym JDK, ale przed wdrożeniem JVisualVM, czy ktoś ma jakieś problemy z narzędziem do profilowania JVisualVM? A także, czy jest to bezpieczne, jeśli zaimplementuję w aplikacji?


title: Jak w tym przykładzie uniknąć singletona?

text: Mam klasę Image i jeszcze jedną ImageStore. Image to po prostu obiekt wartości zawierający nazwę pakietu i nazwę obrazu. ImageStore wykonuje całą rzeczywistą pracę: oblicza rzeczywistą ścieżkę obrazu (w oparciu o nazwę pakietu i obrazu) i ładuje go z serwera. Teraz mam dość dużą (i głęboką) hierarchię węzłów (jest to silnik renderujący do gry), więc na przykład teraz jestem w grupie i chcę wstawić nowy obraz. Robię: var image = new Image("nazwapakietu", "nazwaobrazu"); W tej chwili obraz nie ma jeszcze żadnego rozmiaru, ponieważ nie chcę na stałe zakodować rozmiaru obrazu (w tym przypadku może to być kafelek, który nie zawsze ma na przykład 64*32) w moim widoku gry. * gdy obraz zostanie dodany do grupy _(przypuszczam, że grupa jest już dołączona do renderera)_ wtedy grupa zostanie unieważniona * renderer zażąda nowego renderowania klatki. * przeanalizuje drzewo hierarchii węzła, a gdy znajdzie obraz, który dodałem wcześniej * zapyta ImageStore _ (lub TileImageStore, ten przechowuje nie tylko szerokość i wysokość, ale także dolny punkt środkowy kafelka. Dzieje się tak tylko wtedy, gdy dolny środek kafelka nie pasuje do dolnego środkowego punktu rzeczywistego obrazu.)_ dla ImageData; * ImageStore ładuje teraz pakiet, który zawiera również informacje o szerokości i wysokości; * zastosuje nową szerokość i wysokość do obrazu i ustawi flagę jako załadowaną. Chciałbym mieć jakoś ImageStore odłączony od renderowania. Aby móc używać tylko Image i ImageStore bez konieczności renderowania. **Edytuj:** Chcę to zrobić, ponieważ chciałbym znać rozmiar obrazu, nawet jeśli obraz nie jest renderowany. Aby uzyskać obraz, musi poprosić ImageStore o rozmiar, kotwicę i imageData. Pakiety wyglądają tak: package = {image01: {base64: "bardzo bardzo długi ciąg", szerokość: 10, wysokość: 20, anchorX: 1, anchorY: 10}} Dopiero po załadowaniu ImageStore ten duży plik jest w stanie rozpoznać szerokość/wysokość obrazu;


title: Praca w informatyce, która nie pozwala na tworzenie oprogramowania poza tą pracą?

text: Mam 15 lat i rozmawiałem z przyjaciółmi o tym, jak chcieliśmy, aby wyglądała nasza przyszła kariera. Powiedziałem im, że chciałbym mieć pracę w branży informatycznej (a dokładniej tworzenie oprogramowania), aw wolnym czasie rozwijać gry niezależne, które mógłbym sprzedawać w sklepie z Androidem, aby zarobić trochę więcej gotówki. Powiedzieli mi, że w umowie na wiele prac będzie napisane coś w stylu: „Dopóki pracujesz dla nas, nie możesz rozwijać niczego poza tym, co dla nas rozwijasz”, albo, co gorsza, „Nie możesz się już rozwijać”. wszystko dla siebie do końca życia!!!". Nigdy wcześniej czegoś takiego nie słyszałem i trochę mnie to martwi. Więc moje pytanie brzmi: czy wiele karier w branży informatycznej zmusza cię do akceptowania tego rodzaju rzeczy? Ile miejsc pracy wymagałoby podpisania tej umowy? I może trochę bardziej szczegółowe informacje. co naprawdę oznacza ta umowa? EDIT: Obecnie mieszkam w Ontario w Kanadzie. Załóżmy, że tam też będę mieszkać, gdy dorosnę. W zasadzie nie mieszkam w igloo ;)


title: Używanie aktorów akka z fasolką szparagową

text: Czy uważasz, że użycie aktorów akka przed ziarnami usług transakcyjnych jest dobrym pomysłem? Aktorzy są obudzeni przez fasadę używaną przez aplikację kliencką, a aktor używa komunikatu do obsługi prawidłowego wywołania usługi. Czy to dobra praktyka? Ten artykuł (http://honeysoft.wordpress.com/2012/08/05/akka-actor-dependency- injection-using-spring/) mówi o użyciu fasolki szparagowej z aktorami akka. Ale nie widziałem korzyści z wykorzystania aktorów przed (singleton) fasolką szparagową.


title: Opracowanie interfejsu mobilnego dla Serwisu

text: Mam stronę internetową opracowaną w ASP.NET MVC. Teraz nie mogę się doczekać stworzenia dla niego interfejsu mobilnego. Moja wiedza w tym zakresie nie jest zbyt duża, więc wyjaśnię, co trzeba zrobić. Jest to bardzo podobne do linii StackOverflow lub Programistów, a poniżej znajduje się kilka punktów, którymi należy się zająć. 1. Podobnie jak w przypadku Stack Overflow, jeśli witryna jest odwiedzana z urządzeń mobilnych, powinno nastąpić automatyczne wykrywanie i powinna zostać wyświetlona wersja mobilna. 2. Czy muszę skonfigurować jakąś subdomenę, taką jak `m.mysite.com` i czy powinienem mieć zainstalowaną witrynę mobilną dla tej domeny (strony SE nie robią tego teraz, ale Facebook to robi) 3. Na koniec, jak to zrobić zaprojektuj stronę internetową, która będzie czytelna na wszystkich ekranach dla urządzeń mobilnych.


title: Jak przekonać moich współpracowników, że właściwe postępowanie pozwoli im zaoszczędzić czas

text: Niedawno zacząłem pracę w nowej firmie z garstką programistów. Jest to średniej wielkości firma, zatrudniająca około 70 pracowników, ale IT ma tylko 9-10 osób, a poza mną jest 3 "programistów". Jednak ci faceci mają bardzo ograniczone doświadczenie i robią naprawdę okropne rzeczy. Na przykład jednym z naszych projektów jest strona PHP. Większość kodu jest przechowywana w 20 000 linii kontrolera PHP, z ~6000 linii kodu JavaScript osadzonych w PHP. Ciągle robię małe sugestie tu i tam, ale nikt nie słuchał, wszyscy mówią, że są zbyt zajęci, aby wdrożyć moje sugestie. Chodzi o to, że nie powinni być tak zajęci i nie byliby, gdyby wszystko zostało zrobione dobrze. Większość czasu spędzają na naprawie rzeczy, które się psują. Jeśli każdy projekt został zbudowany poprawnie, to mógłbym to wszystko zrobić sam. Jakie podejście powinienem przyjąć, aby przekonać tych facetów lub menedżera, że rzeczy muszą się zmienić i że zmiana rzeczy pozwoli zaoszczędzić sporo czasu? Czy powinienem pominąć próby przekonywania współpracowników i udać się prosto do kierownika z biznesową propozycją, w jaki sposób firma zaoszczędzi mnóstwo pieniędzy, jeśli zaczną robić rzeczy poprawnie?


title: Jaka jest różnica między zdarzeniami trasowanymi a zdarzeniami dołączonymi?

text: Właśnie przechodzę przez koncepcje WPF, na które natknąłem się z tymi zdarzeniami trasowanymi, właściwościami zależności i dołączonymi zdarzeniami. Jakie są koncepcje za nimi i dlaczego są wywoływane zamiast zwykłych metod .NET?


title: Czy wyszukiwarka powinna zwracać słownik, czy obiekty silnie wpisujące?

text: Buduję wyszukiwarkę za pomocą Lucene.NET / Solr.NET i zastanawiam się, czy trafienia wyszukiwania powinny być zwracane jako słownik lub silnie typowany obiekt. public class SearchResult { public string SearchTerm { get; ustawić; } public List<Słownik<ciąg, obiekt>> SearchHits { get; ustawić; } ... } // gdzie trafienie wyszukiwania wygląda tak Dictionary<string, object> searchHit = new Dictionary<string, object> { { "Name", "John Doe" }, { "Address", "Some street" } , }; vs public class SearchResult { public string SearchTerm { get; ustawić; } public List<Foo> SearchHits { get; ustawić; } ... } // gdzie trafienie wyszukiwania wygląda tak var searchHit = new SearchHit { Name = "Jan Kowalski", Adres = "Jakiś adres" }; Będę indeksować różne typy obiektów (Ludzie, Strony WWW, Pliki itp.). Każdy obiekt ma inny zestaw właściwości (osoby mają nazwę i adres, podczas gdy strony internetowe mają adresy URL i tytuły), a wyniki wyszukiwania nie mają tego samego zestawu właściwości co oryginalne obiekty (klasa `WebPage` ma właściwość `MainContent` , ale po zindeksowaniu wynik wyszukiwania reprezentujący ten obiekt będzie miał właściwość `PreviewText` (pierwsze 300 znaków właściwości `MainContent` z pozbawionymi znaczników HTML). Nie chcę powielać kodu w całym miejscu i mam : `IPeopleSearchService`, `IWebPagesSearchService`, `IFilesSearchService`, itp. oraz odpowiadające im wyniki wyszukiwania: `PeopleSearchResult`, `FileSearchResult`, itd. interface IFooService { FooSearchResult Search(string text); void Index(Foo foo);... } interface IBarService { BarSearchResult Search(string text); void Index(Bar bar);... } ...Chciałbym mieć bardziej ogólne rozwiązanie, ale nie lubię nadmiernej złożoności.To powinien być czytelny i zrozumiały dla młodszych programistów. interfejs ISearchService<TEntity, TSearchHit> { SearchResult<TSearchHit> Search(ciąg tekstowy); void Index (jednostka TEntity); } Jak zaprojektowałbyś taki system? Każda pomoc byłaby bardzo mile widziana!


title: Zrozumienie C++ dla aplikacji desktopowej dla systemu Windows

text: Programuję C++ od prawie roku i pisałem złożone programy, jednak jest kilka funkcji programistycznych C++, których nie ukrywałem (klasy i wskaźniki), jednak czułem się gotowy do stworzenia aplikacji desktopowej . Nie dostałem żadnych książek ani nie znalazłem PRAWDZIWEJ dokumentacji. Powiedziałem sobie: „W programowaniu najważniejsza jest praktyka. Zrobię to”. Oczywiście niewiele się nauczyłem. Po 4 miesiącach programowania w Visual studio C++/CLI ledwo rozumiem co robię. Wiem, jak wykonywać bardzo podstawowe operacje, konwertując typy danych, ale nie mam pojęcia, jak działa program, jak dodaję wszystko poza zdarzeniami lub jak zmieniam GUI w kodzie, a nie w konstruktorze GUI. Co powinienem zrobić? Praktyka tak naprawdę nie pomogła, odkąd zacząłem pracować z Visual Studio, znam tylko kilka bardzo prostych rzeczy, ale reszta koncepcji pozostawia mnie bez pojęcia. Czy powinienem trafić do książek, czy powinienem po prostu ćwiczyć?


title: Aktualizacje cen za pośrednictwem logiki bazy danych

text: Jak duże usługi porównywania cen umożliwiają bezpośrednie wysyłanie e-maili, jeśli cena produktu odpowiada cenie docelowej. Automatycznie wyślą do Ciebie e-maila. Czy jest to zadanie cron, które skanuje tabelę, czy jest to coś złożonego w bazie danych?


title: Zdezorientowany, jak prawidłowo zastosować wzorzec repozytorium z warstwą usług/biznesu na górze

text: Tworzę rozwiązanie ASP.NET Web Api 2 do celów edukacyjnych i natrafiłem na szkopuł. Zastanawiałem się, czy ktoś mógłby mi powiedzieć, czego dokładnie mi brakuje. Rozwiązanie My Web Api ma 4 Warstwy: * Dane, które zawierają modele danych (POCO), Fluent API Mapping, EF Context, Migrations and Seeding * Repozytorium, które implementuje CRUD dla wszystkich modeli danych i zwraca modele biznesowe * Domena / Usługa / Biznes, który dostarcza interfejs IRepository i powinien zawierać usługi implementujące logikę biznesową aplikacji. Zawiera również modele biznesowe. * Sieć, kontrolery Web Api i DI / IoC, aby powiązać wszystko razem. Odniesienia są następujące: Dane < Repozytorium > Domena Web odwołuje się do wszystkich 3 warstw dla DI. Ideą oddzielnej warstwy domeny jest to, że jest całkowicie nieświadoma wszystkiego, co dzieje się w warstwie danych lub repozytorium. Po prostu określa swoje wymagania, dostarczając IRepository dla warstwy repozytorium oraz modele biznesowe, które chce uzyskać w rezultacie. Od warstwy repozytorium zależy spełnienie żądań warstwy domeny. **Oto moja zagadka** : * Ponieważ Domena nie ma powiązań z Danymi, nie wie nic o strukturze modelu Danych. Oznacza to, że warstwa repozytorium musi przekonwertować wszystko na model biznesowy przed zwróceniem. - Przypuszczam, że mógłbym zwrócić go jako obiekt generyczny, a następnie zmapować obiekt generyczny do modelu biznesowego w warstwie domeny. Czy byłoby to bardziej odpowiednie? * Ponownie, ponieważ domena nie wie nic o modelu danych, nie mogę przekazać żadnych wyrażeń do zastosowania w zestawie danych do mojego repozytorium. Oznacza to, że dla każdej właściwości, którą chcę GDZIE, musiałbym utworzyć repozytorium specyficzne dla POCO z pasującym IBussinessModelRepository, które określa jego wymagania, a następnie zaimplementować to wymaganie. To jednak szybko staje się nużące, ponieważ wymaga kilku "GetByProp1", "GetByProp2" - centralnego kodu małpiego. * A jeśli chcę stworzyć złożony model biznesowy, który wymaga złożonego zapytania do uwodnienia? Czy moją jedyną opcją jest utworzenie kolejnego IBusinessRepository z pasującym repozytorium, a następnie napisanie złożonego zapytania w warstwie repozytorium? Jeśli tak jest, to wydaje się, że warstwa usług jest w większości kolejnym krokiem, który przekazuje żądania inne niż surowe do określonych repozytoriów. * ~~Czy kontrolery web api wysyłają żądania bezpośrednio do repozytorium? Wydawałoby się dość głupie, aby kierować wszystkie żądania CRUD przez warstwę usług, która i tak po prostu przekazuje żądanie do warstwy repozytorium. ~~ Nie, nie jest tak, że warstwa usług powinna być punktem wejścia dla wszystkich operacji. (Z Web po prostu działa jako konsument oferowanych usług.) * Obecnie nie korzystam z Unit of Work, ponieważ istnieje wiele mieszanych opinii, jeśli chodzi o UoW + EF. Nie mam jeszcze wystarczającego doświadczenia, aby znaleźć się po obu stronach ogrodzenia. Czy UoW byłby pomocny w tym scenariuszu? Czuję, że brakuje mi istotnej części tego, co sprawia, że to podejście do wzorców / warstw działa. Wiem, że spokojnie mógłbym oszukiwać (tj. dać serwisowi dostęp do konkretnych danych, takich jak kontekst ), ale bardziej interesuje mnie, jak to zrobić we właściwy sposób. Badania, które przeprowadziłem do tej pory dały wyniki, które bardzo się różnią: * Z Repozytorium przy użyciu AutoMappera do zmiany typu na model biznesowy bez faktycznego wykonywania zapytania, co pozwala warstwie usług na przekazywanie wyrażeń modelu biznesowego, które można następnie zastosować, a następnie uruchomić zapytanie, zwracając zmapowany wynik - brzmi świetnie, z wyjątkiem tego, że podejście to wydaje się nie działać dla mnie, ponieważ AutoMapper nie jest w stanie poradzić sobie z moimi modelami posiadającymi rekurencyjne właściwości nawigacji. * Do warstwy usługowej, która łączy się bezpośrednio z POCO. (A tym samym mając bezpośredni dostęp do DAL) Czego mi brakuje? Edytuj, aby wyjaśnić więcej o moim kodzie: **Moje ogólne repozytorium na Github** zawiera metody CRUD takie jak ta: public abstract class RepositoryBase<TData, TDomain, TId> : IRepository<TDomain, TId> gdzie TDomain : EntityBase<TId>, new() gdzie TData : class, IDataEntity<TId>, new() { private readonly ShortStuffContext _context; public RepositoryBase (kontekst ShortStuffContext) { _context = kontekst; } public IEnumerable<TDomain> GetAll() { return _context.Set<TData>().BuildQuery<TData, TDomain>(); } } BuildQuery to rozszerzenie LINQ, które albo pobiera wszystkie jednostki, albo może przyjąć wyrażenie, aby pobrać pojedynczą jednostkę, a następnie używa ValueInjecter do mapowania modelu danych na model domeny. Metody repozytorium są żądane przez warstwę domeny za pośrednictwem interfejsu: interfejs publiczny IRepository<TDomain, TId> gdzie TDomain : EntityBase<TId> { IEnumerable<TDomain> GetAll(); } RepositoryBase jest rozszerzony o repozytoria dla poszczególnych POCO, które obecnie są puste, dostarczając tylko TData, TDomain i TId do bazy repozytorium: public class UserRepository : RepositoryBase<Data.Entities.User, User, decimal> { public UserRepository(ShortStuffContext context) : base(context) { } } Które może być zażądane przez warstwę domeny poprzez wstrzyknięcie konstruktora `IRepository<User, dziesiętne> UserRepository` poprzez ninject wiązanie `InRequestScope`.


title: Linia między parametrami ByRef a zmiennymi modułu

text: To pytanie pojawiło się podczas dyskusji na temat standardów, która powinna obracać się wokół SOLID Principles for Object Oriented Development. Czy w swoich doświadczeniach widziałeś korzyści lub wady w czytelności kodu lub wydajności w zależności od tego, czy zmienne są przekazywane ByRef czy zmienna na poziomie modułu? Oczywiście: Jeśli metoda wywołuje podmetodę, która nie tylko użyje, ale także zmodyfikuje parametr, powinna zostać przekazana jako wskaźnik referencyjny (aka: ByRef). Opierając się na tej logice, niektórzy w mojej dyskusji są bardzo surowi, aby nigdy nie używać zmiennych na poziomie modułu. W odpowiedzi mówię, że mamy zestaw narzędzi i powinniśmy wiedzieć, kiedy użyć jakiego narzędzia. Na przykład sub deklaruje zmienną. Ta sub wywołuje funkcję, która wywołuje sub, która wywołuje funkcję, która wywołuje sub, itd. itd. I ostatecznie ta zmienna jest zmieniana 10 metod w dół. Powiedziałbym, że utwórz tę zmienną na poziomie modułu, podczas gdy niektórzy twierdzą, że przekazują ją ByRef przez twoje drzewo metod. Więc gdzie jest granica przy badaniu Zasad SOLID OOP? Czy idziesz z ekstremum?: Nigdy nie używaj ByRef lub Nigdy nie używaj zmiennych na poziomie modułu. A może ustawiasz rutynową głębokość?: 1-metoda, zawsze ByRef; 2 głębokie, rozważ to; 3-głębokość, zmienna na poziomie modułu. A może zasada rozgałęzienia?: Jeśli na twojej liście metod zmienna jest rzeczywiście aktualizowana tylko w jednym miejscu, to przekazuje ByRef z powrotem do oryginału... ByRef je wszystkie. Ale jeśli zmienna jest zmieniana podczas wielu etapów w wielu gałęziach drzewa metod, uczyń ją poziomem modułu. Jeśli to drugie ma miejsce, czy powinno to również oznaczać 20 metod w dół, ByRef aż do oryginału jest nadal w porządku? A może hybryda tych możliwych zasad. Jakie jest twoje zdanie na ten temat?


title: Jak jest używany secret_key Devise?

text: Używam Devise od jakiegoś czasu i zastanawiałem się, jak używany jest tajny klucz. Przejrzałem źródło w poszukiwaniu odniesień do `secret_key`, ale nie było dla mnie jasne, co z nim robimy. Wydaje mi się, że może to być związane z bezpieczeństwem sesji?


title: Źródło cytatu o ponownym użyciu kodu?

text: czy ktoś wie, skąd pochodzi ten cytat? Nie znam tego dosłownie, ale wiem, o co chodzi. Coś takiego: > Pisanie kodu więcej niż raz to strata energii i kreatywności. Myślę, że było to w jakimś artykule o definicji hakowania, ale nie mogę tego znaleźć.


title: Niezbędne narzędzia i praktyki dla zwinnego start-upu

text: Od kilku lat pracuję w branży oprogramowania. Widziałem Waterfall w praktyce i widziałem kilka projektów próbujących Agile z różnym powodzeniem… co dało mi do myślenia. Jakie są minimalne wymagania, aby startup Agile odniósł sukces? Myślę w kategoriach narzędzi, praktyk, ról zespołowych (np. kontrola źródła, automatyczne testowanie, rola BA). Chciałbym móc sporządzić listę narzędzi/praktyk/itd., które są absolutnie niezbędne dla długoterminowego trwałego sukcesu startupu, który chce robić Agile. Pytam, ponieważ w końcu chciałbym założyć własną firmę programistyczną. Większość mojego doświadczenia dotyczy SCRUM, więc jestem naturalnie nastawiony na to i wypracowałem już opinię na temat minimalnych wymagań do funkcjonowania zespołu SCRUM. Ale będąc tylko człowiekiem i będąc tylko jedną próbką, nie zdziwiłbym się, gdyby moja opinia była błędna lub niekompletna. Będę wdzięczny za wszelkie wglądy i doświadczenia. Dziękuję


title: Czy powinienem rozwidleć na wypadek, gdyby upstream został usunięty?

text: Tworzę projekt PHP o otwartym kodzie źródłowym, który ponownie wykorzystuje inny kod open source zamiast ponownego wymyślania koła. Używam kompozytora do ściągnięcia tych projektów do mojego folderu dostawcy. Co się stanie, jeśli ci dostawcy usuną swoje repozytorium i wszystkie ślady ich kodu z Internetu? Teraz kompozytor nie może pobrać projektu. Czy powinienem rozwidleć każdy projekt, na którym jestem zależny i od widelca? Wydaje się uciążliwe, ale jedyny „bezpieczny” sposób na zapewnienie, że dostawca nie będzie mógł usunąć rzeczy, których mój projekt potrzebuje do uruchomienia.


title: Gdzie umieścić interfejs w .Net

text: Mam projekt VB.Net, z klasą z kilkoma właściwościami abstrakcyjnymi (mustoverride), o których myślę o przeniesieniu do interfejsu. Moje pytanie jest strukturalnie jak to zrobić? Obecnie wszystkie klasy, które będą to implementowały, pochodzą z tej klasy bazowej, więc sensowne może być umieszczenie jej w tym samym pliku. Lub mógłbym stworzyć osobny plik interfejsu i umieścić go w tym samym katalogu co klasa bazowa. Inną opcją byłoby stworzenie osobnego katalogu na interfejsy (których projekt ma obecnie zero) i umieszczenie pliku. Po napisaniu tego skłaniam się ku drugiej opcji. Rozejrzałem się, ale nie znalazłem żadnych wskazówek na ten temat. Jaka byłaby najlepsza opcja i dlaczego?


title: Czy „używanie” jest właściwe w kontekście, w którym nie ma nic do usunięcia?

text: W C# instrukcja `using` służy do usuwania zasobów w sposób deterministyczny bez czekania na garbage collector. Na przykład może być używany do: * Usuwania poleceń SQL lub połączeń, * Zamykania strumieni, uwalniania bazowego źródła, takiego jak plik, * Darmowe elementy GDI+, * itp. Zauważyłem, że `using` jest coraz częściej używany w przypadkach, gdy nie ma nic do usunięcia, ale tam, gdzie jest po prostu wygodniej dla wywołującego napisanie bloku `using` niż dwóch oddzielnych poleceń. Przykłady: * MiniProfiler, napisany przez zespół Stack Overflow, używa `using` do oznaczania bloków do profilu: using (profiler.Step("Nazwa idzie tutaj")) { this.DoSomethingUseful(i - 1); } Alternatywnym podejściem byłoby posiadanie dwóch bloków: var p = profiler.Start("Nazwa idzie tutaj"); to.ZróbCośPrzydatne(i - 1); profiler.Stop(p); Innym podejściem byłoby użycie akcji: profiler.Step("Nazwa idzie tutaj", () => this.DoSomethingUseful(i - 1)); * ASP.NET MVC wybrał również `using` dla formularzy: <% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name" )%> <input type="submit" value="Save" /> <% } %> **Czy takie użycie jest właściwe?** Jak to uzasadnić, mając na uwadze kilka wad: * Początkujący byliby zgubieni, ponieważ takie użycie nie odpowiada temu, który jest wyjaśniony w książkach i specyfikacji języka, * Kod powinien być wyrazisty. Tutaj cierpi na tym ekspresja, ponieważ właściwe użycie `using` ma na celu pokazanie, że z tyłu znajduje się zasób, taki jak strumień, połączenie sieciowe lub baza danych, które należy zwolnić bez czekania na garbage collector.


title: Czy wątki używają pamięci wirtualnej czy pamięci rzeczywistej?

text: Próbowałem zoptymalizować mój serwer Linux do obsługi 10 000 wątków na proces, podczas gdy obecnie obsługuje tylko 382. Zgodnie z tym artykułem następujący wzór jest używany do określenia całkowitej liczby możliwych wątków: liczba wątków = całkowita pamięć wirtualna / (rozmiar stosu*1024*1024) Oznacza to, że wątki przechowują wszystkie swoje dane w pamięci wirtualnej. I zgodnie z moją najlepszą wiedzą, pamięć wirtualna to przestrzeń wymiany w maszynie z Linuksem, która jest przechowywana na dysku twardym niż RAM lub pamięć podręczna. Więc moje pytanie brzmi, czy nasze wątki używają dysku twardego do przechowywania w celu przetwarzania/przechowywania swoich danych. Jeśli tak, to czy nie wpływa to na wydajność? Czy możemy zwiększyć wydajność, umieszczając je w pamięci RAM lub pamięci podręcznej? Jak? Jeśli nie, jak dokładnie działają wątki? **Aktualizacja:** Zgodnie z **odpowiedzią bezużytecznego**, pamięć wirtualna to system składający się w przybliżeniu z: * pamięci fizycznej (RAM) * wszelkich dołączonych plików wymiany * obsługi sprzętu do tłumaczenia adresów wirtualnych na fizyczne i generowania błędów stron, gdy adres wirtualny nie jest dostępny w pamięci fizycznej * (jądro) wsparcie oprogramowania dla: zarządzania tabelami wyszukiwania używanymi przez ten sprzęt obsługi tych błędów stron poprzez pobieranie stron z wymiany na żądanie Tak więc wszystko, co znajduje się w pamięci wirtualnej, jest zbiorczo w pamięci RAM ( Rzeczywista pamięć) i dysk twardy (pliki wymiany). I jak **James wyjaśnia w swojej odpowiedzi** decyzja w sprawie pamięci RAM vs HDD jest podejmowana przez Kernel przy użyciu algorytmów takich jak LRU.


title: JavaScript po stronie klienta: jak dołączyć frameworki stron trzecich?

text: Tworząc aplikacje internetowe, często budujesz swoją aplikację na podstawie niektórych frameworków, takich jak bootstrap Twittera. Te frameworki zawierają `less/sass/stylus`, `javascript`, obrazy i czasami czcionki webowe. Zastanawiam się, jak osadzić te ramy w mojej aplikacji. Większość moich aplikacji jest budowana przy użyciu kilku podstawowych zadań, które kompilują moje `coffeescript` i `stylus` do `javascript` lub `css`. Ponieważ nie wysyłam kodu firm trzecich (np. frameworków) z moją aplikacją, dodaję je jako zależność. Dzięki temu mogę zainstalować m.in. frameworki korzystające z menedżera pakietów, takiego jak `npm` lub `volo`. Obsługa małych bibliotek JavaScript (które składają się tylko z _jednego_ pliku, bez zasobów) jest łatwa. Instaluję je w katalogu dostawcy i aktualizuję plik wymagany.js conf. Ale jeśli biblioteka ma dołączone obrazy lub pliki `less/sass/stylus/css`, zawsze mam problemy z ich obsługą: * Ścieżki do zasobów w plikach `css` lub `javascript` tych bibliotek są często zakodowane na sztywno ( wzgl.) * `less/sass/stylus` musi być skompilowany (co mogę zrobić za pomocą zadania gruntowania) * Skopiować wszystkie zasoby stron trzecich do mojej struktury folderów? * Czy powinienem dołączyć zasoby stron trzecich (`arkusze stylów`, `javascript`) do własnych plików i zminimalizować je razem? * Jeśli używam `stylus` a framework używa `sass` muszę zainstalować wiele dodatkowych zależności Myślę, że nie tylko ja mam te problemy, więc szukam rozwiązań, najlepszych praktyk lub kilku ogólnych wskazówek .


title: Czy lokalizacja nie powinna być wartością?

text: Książka DDD Erica Evana, Przykład wysyłki ładunku, s. 168: > Lokalizacja > > Dwa miejsca o tej samej nazwie nie są takie same. Szerokość i długość geograficzna mogłyby > stanowić unikalny klucz, ale prawdopodobnie niezbyt praktyczny, ponieważ te > pomiary nie są interesujące dla większości celów tego systemu i byłyby > dość skomplikowane. Bardziej prawdopodobne jest, że Lokalizacja będzie > częścią pewnego rodzaju modelu geograficznego, który będzie powiązywał miejsca z > szlakami żeglugowymi i innymi problemami specyficznymi dla domeny. Wystarczy więc dowolny, > wewnętrzny, automatycznie generowany identyfikator. Powodem, dla którego autor utworzył element „Lokalizacja”, jest to, że dwa różne miejsca mogą mieć tę samą nazwę. Ale skoro wydaje się, że `Lokalizacja` jest _niezmienna_ i dlatego nie zmieni się w czasie, czy nie byłoby lepiej, gdyby była zamiast tego Obiektem Wartości? A zatem: a) Dlaczego nie moglibyśmy (zamiast automatycznie generowanego identyfikatora) wprowadzić dodatkowego atrybutu opisującego rzeczywistą charakterystykę lokalizacji, który pomógłby odróżnić dwa miejsca o tej samej nazwie? Wtedy moglibyśmy zrobić „Lokalizacja” jako VO. b) Nawet jeśli nie wprowadzimy dodatkowego atrybutu opisującego rzeczywistą charakterystykę lokalizacji, ale zamiast tego użyjemy automatycznie wygenerowanego identyfikatora, czy nie moglibyśmy nadal traktować `Location` jako VO, ponieważ nadal pozostaje faktem, że jest to _niezmienna_ i ta aplikacja działałaby tak samo, nawet gdyby śledziła kilka wystąpień reprezentujących tę samą „Lokalizacja”? c) Z cytatu wynika, że autor określiłby `Lokalizacja` jako _podmiot_, nawet jeśli zamiast automatycznie generowanego identyfikatora użylibyśmy _szerokości_ i _długości_, aby pomóc rozróżnić różne lokalizacje. Czemu? Dziękuję


title: Przypisywanie ciągów do wskaźnika w języku C

text: Jestem nowym uczniem języka C, moje pytanie dotyczy wskaźników. O ile się nauczyłem i szukałem, wskaźniki mogą przechowywać tylko adresy innych zmiennych, ale nie mogą przechowywać rzeczywistych wartości (takich jak liczby całkowite lub znaki). Ale w kodzie poniżej wskaźnik znaku c faktycznie przechowuje ciąg. Wykonuje się bez błędów i podaje wyjście jako "nazwa". #include <stdio.h> main() { char *c; c="nazwa"; stawia(c); } czy ktoś może wyjaśnić, w jaki sposób wskaźnik przechowuje ciąg bez żadnej pamięci lub czy pamięć jest tworzona tam, gdzie jest tworzona i jaki rozmiar może być utworzony. Próbowałem użyć go ze wskaźnikiem typu integer #include <stdio.h> main() { int * c; c=10; printf("%d",c); } ale dał błąd cc test.c -o test test.c: W funkcji „main”: test.c:5:3: ostrzeżenie: przypisanie tworzy wskaźnik z liczby całkowitej bez rzutowania [domyślnie włączone] c=10; ^ test.c:6:2: ostrzeżenie: format ‘%d’ oczekuje argumentu typu ‘int’, ale argument 2 ma typ ‘int *’ [-Wformat=] printf("%d",c); ^ Wskaźniki przechowują adres zmiennej, więc dlaczego wskaźnik całkowity różni się od wskaźnika znakowego. Jeśli jest coś, czego brakuje mi o wskaźnikach, wyjaśnij plz. Z góry dziękuję.


title: Dlaczego ta metoda zwraca 2 wartości, jeśli poproszę tylko o jedną i nigdzie nie ma instrukcji warunkowej?

text: Piszę ten bardzo prosty program z tego jednego pliku PDF o nazwie Think AP Java i nie mogę sobie wyobrazić tego: Kiedy piszę public static double method_1(double x) { double result =( x*(Math .exp(-x) ) ) + (Math.sqrt(1-Math.exp(-x) ) ); System.out.println(wynik); zwróć wynik; } Otrzymuję wynik: 1.1629395387920924 Ale kiedy piszę: public static double multAdd(double a, double b, double c) { double result = (a*b) +c; System.out.println(wynik); zwróć wynik; } i public static double method_2(double x) { double result_1 = (multAdd(1.0, (Math.exp(-x)), 0.0)) ; podwójny wynik_2 = (Math.sqrt(1.0-Math.exp(-x))); podwójny wynik_końcowy = wynik_1 + wynik_2; System.out.println(końcowy_wynik); zwróć końcowy_wynik; } Dane wyjściowe metody_2 to: 0.36787944117144233 AND 1.1629395387920924, drukowane bezpośrednio nad sobą. Co może wyjaśnić przyczynę tego? Każda pomoc będzie mile widziana, ponieważ jestem dopiero początkującym.


title: Metody przekierowywania stron internetowych

text: (To pytanie dotyczące doświadczenia użytkownika, ale interesuje mnie przede wszystkim najlepsze rozwiązanie techniczne tego powszechnego problemu.) * * * Na mojej stronie internetowej jest kilka miejsc, do których użytkownicy są przekierowywani: ekrany logowania, ściany płatnicze itp. Czasami są to można układać w stos. Na przykład zaloguj się, a następnie zapłać, a następnie wyląduj na określonej stronie. (Ale nie mogę ich po prostu zakodować na sztywno... czasami logują się, płacą i przechodzą na inną stronę.) A przepływ dla użytkowników jest dynamiczny, np. być może podczas procesu logowania użytkownik może uruchomić przepływ OAuth. * * * Mogę zachować „stos” przekierowań. Mogę połączyć przekierowania w adresie URL: http://my.website.com/login?return_url=%2Fpay%3Freturn_url%3D%252FfinalUrl lub mogę je śledzić w pliku cookie (np. zserializowana tablica JSON). * * * Czy jeden z tych dwóch sposobów jest lepszy w śledzeniu przekierowań, czy też jest on powszechnie używany?


title: Dlaczego istnieje tak wiele właściwości CSS, które są zasadniczo takie same?

text: Ta odpowiedź naprawdę mnie zastanowiła. Pisałem CSS wcześniej i (zazwyczaj) nie zawracam sobie głowy obsługą przeglądarek innych niż najnowsze firefox i chrome, ale podczas badań zauważyłem, że dla dokładnie tej samej właściwości CSS są zwykle co najmniej trzy różne formy które zachowują się identycznie i mogą mieć te same wartości, ale które po prostu mają różne przedrostki dla konkretnej biblioteki, która je implementuje. Tutaj na przykład: -webkit-touch-callout: none; -webkit-user-select: brak; -khtml-user-select: brak; -moz-user-select: brak; -ms-user-select: brak; wybór użytkownika: brak; Z wyjątkiem pierwszego, różnią się one tylko prefiksem. Dlaczego opiekunowie nie zmienią po prostu reguły leksera, która pasuje do łańcucha "-moz-user-select", aby pasowała również do "user-select"? Oczywiście, istnieje możliwość, że autor oryginalnego CSS chciał odmiennego zachowania Firefoksa w porównaniu z innymi przeglądarkami, więc „user-select” nie będzie taki sam jak „-moz-user-select”, ale ryzyko tego dziwnego przewaga jest znacznie wyższa, a istnieją inne, prawdopodobnie lepsze sposoby na osiągnięcie celu związanego z przeglądarką. Jeśli to już się dzieje, dlaczego ludzie nadal używają tego wszystkiego? Gdyby przestali: * byłoby mniej bitów zatykających metaforyczne potoki w Internecie (opóźnienie sieci zmniejszyłoby się, a poszczególne strony ładowałyby się szybciej) i * ludzie korzystający ze starych przeglądarek otrzymaliby impuls, którego potrzebują do aktualizacji (co i tak powinni to zrobić ze względów bezpieczeństwa) ## TL;DR Jaka byłaby wada, gdyby wszyscy używali tej samej konwencji nazewnictwa? Dlaczego do tej pory sprawy nie uległy normalizacji?


O ile lepszy jest Apache Solr niż jego nie-Java konkurencja? Czy jest o tyle lepszy niż inne rozwiązania, m.in. ten (Sphinx z PHP API) czy Zend_Search_Lucene, że warto zasugerować klientowi przejście do innego dostawcy hostingu niż ten, z którym obecnie pracuje? Bieżący host nie obsługuje języka Java. Jeśli istnieją inne przyzwoite rozwiązania do wyszukiwania w indeksowanych bazach danych, które są bardziej przystępne dla typowych hostów internetowych, chciałbym o nich usłyszeć. Zmiana dostawcy hostingu to dla nich wielka sprawa, więc chciałbym wiedzieć, czy ten ruch byłby uzasadniony.


title: Kompresja JavaScript i buforowanie zasobów

text: Pracuję nad pomysłem, na który nie mogę znaleźć dobrej odpowiedzi pomimo wielu godzin poszukiwań, planuję małą aplikację Canvas/WebGL ta aplikacja będzie używać WebSockets do komunikacji z serwerem gry w celu synchronizacji danych do iz powrotem, więc pomyśl o tym jako o usłudze typu MMO, więc planuję mieć system kolejkowania do ładowania zasobów Np. Składam prośbę o pobranie modelu1 i jego tekstury, aby kolejkować Mthd | Dane | q | p | s POBIERZ | /asset/model_1/model | 0 | 0 | 0 POBIERZ | /asset/model_1/texture | 0 | 0 | 0 POBIERZ | /asset/model_1/model | 1 | 1 | 0 POBIERZ | /asset/model_1/texture | 1 | 1 | 0 ... POBIERZ | /asset/model_1/model | 5 | 5 | 0 POBIERZ | /asset/model_1/texture | 5 | 5 | 0 **Klawisz** q = modyfikator jakości p = niższy priorytet jest lepszy s = status `0 nie rozpoczęto, 1 pobieranie, 2 ukończono`, więc mój klient przetwarza tę kolejkę pobierania, jednak podczas gdy to się dzieje, inny gracz wszedł do mojego zobacz, więc potrzebuję, aby gracze modelowali i teksturowali, więc dodaję ich do kolejki i kończę tak Mthd | Dane | q | p | s POBIERZ | /asset/model_1/model | 0 | 0 | 2 POBIERZ | /asset/model_1/texture | 0 | 0 | 2 POBIERZ | /asset/model_2/model | 0 | 0 | 0 POBIERZ | /asset/model_2/texture | 0 | 0 | 0 POBIERZ | /asset/model_1/model | 1 | 1 | 1 POBIERZ | /asset/model_1/texture | 1 | 1 | 0 POBIERZ | /asset/model_2/model | 1 | 1 | 0 POBIERZ | /asset/model_2/texture | 1 | 1 | 0 ... POBIERZ | /asset/model_1/model | 5 | 5 | 0 POBIERZ | /asset/model_1/texture | 5 | 5 | 0 POBIERZ | /asset/model_2/model | 5 | 5 | 0 POBIERZ | /asset/model_2/texture | 5 | 5 | 0 Teraz chcę buforować te pliki w pamięci podręcznej przeglądarki, więc jestem związany między używaniem bazy danych a kompresowaniem przy użyciu czegoś takiego jak LWZ lub umieszczaniem zasobów online i używaniem appCache i ładowaniem ich. Więc moje pytania. Jeśli załaduję zasób przez przeglądarkę normalnie (żądanie http), przeglądarka zachowa ten obraz w pamięci, gdy nie będzie już renderowany. Jeśli używam JavaScript do przechowywania ciągu base64, powinienem usunąć ciąg ze zmiennej javascript (usunąć) wiem, że zwolni to pamięć przechowującą ciąg, ale czy zwolni całą używaną pamięć, czy przeglądarka nadal zachowa kopię obrazu wygenerowanego z base64 w pamięci. Czy można zapisać ładowanie treści przez WebSockets do appCache Np. ciąg base64 z serwera WebSocket. Czy ktoś znalazł lepszy system kompresji ciągów dla JavaScriptu innego niż LWZ. Planuję kompresować za pomocą aplikacji po stronie serwera, więc jedynym ograniczeniem kompresji jest obsługa JavaScript.


title: Android, OpenGL i rozszerzenie GLSurfaceView?

text: To pytanie jest częściowo techniczne, częściowo meta, częściowo subiektywne i bardzo konkretne: jestem niezależnym twórcą gier pracującym na Androidzie i przez ostatnie 6 miesięcy zmagałem się i w końcu udało mi się stworzyć własną aplikację do gier 3D dla android. Pomyślałem więc, że wskoczę na SO i pomogę innym zmagającym się z androidem i openGL-ES. Jednak zdecydowana większość pytań dotyczy rozszerzenia `GLSurfaceView`. Stworzyłem całą moją aplikację bez rozszerzania `GLSurfaceView` (i działa dobrze). Nie widzę żadnego powodu, aby rozszerzać `GLSurfaceView` dla większości napotykanych pytań. Co gorsza, dokumentacja Androida sugeruje, że powinieneś, ale nie podaje szczegółowego wyjaśnienia, dlaczego lub jakie są zalety/przeciw, a nie rozszerzanie i robienie wszystkiego poprzez implementację własnego `GLSurfaceView.Renderer`, tak jak ja. Mimo to, sama liczba pytań gdzie problem jest związany wyłącznie z rozszerzeniem `GLSurfaceView` sprawia, że zastanawiam się, czy rzeczywiście istnieje jakiś naprawdę dobry powód, aby robić to w ten sposób w porównaniu do sposobu, w jaki to robię (i sugerować w moich odpowiedziach innym). Czy jest coś, czego mi brakuje? Czy powinienem w międzyczasie przestać odpowiadać na pytania? Dokumentacja openGL Androida


title: Zmiana Delphi na Javę - porady zawodowe

text: Jestem programistą Delphi z około 5 letnim doświadczeniem. Ale teraz wydaje się, że Delphi nie żyje, a możliwości pracy są mniejsze. Więc chcę zacząć uczyć się Javy, bo mi się to podoba, a rynek pracy jest większy (i konkurencja też...). Do tej pory szukałem opinii o najlepszych książkach o Javie i założyłem kilka książek (Thinking in Java Bruce'a Eckela, "Java 6 The Complete Reference", kompletna JAVA dla SCJP, itp. - możesz podać więcej przykładów, jeśli chcieć). Teraz o co Cię pytam: kiedy zaczniesz uczyć się nowego języka programowania (w tym przypadku Java), jakie kroki wykonujesz? Jak zarządzać krzywą uczenia się? (jak przeznaczasz czas na różne rozdziały i technologie) Z góry dziękuję