title: Algorytm rozpoznawania wzorców macierzy

text: Projektuję analizator stanów logicznych i chciałbym zaimplementować algorytm macierzy. Mam kilka kanałów, z których każdy jest reprezentowany przez wiersz w macierzy i każdy element w kolumnie będzie stanem, na przykład: Kanał 1 1 0 0 1 0 1 1 0 1 Kanał 2 1 1 0 1 1 0 0 1 1 Kanał 3 0 1 0 1 1 0 1 0 0 Chciałbym na przykład wykryć wzorzec w mojej macierzy, wykryć WSZYSTKIE dopasowania bitmapy w macierzy: 1 0 1 1 Myślę, że można to zrobić testując element po elemencie, ale ja uważam, że powinien być lepszy sposób na zrobienie tego. Czy istnieje Java API lub jakikolwiek sposób to zrobić? Jeśli istnieje API ARM zoptymalizowane pod kątem instrukcji NEON, byłoby to również świetne, ale nie obowiązkowe. Będzie to około 8 matryc po 3 lub 2 wiersze po około 20000 kolumn, matryca nie jest stała, zmienia się za każdym razem, gdy ją skanuję, ponieważ ciągle otrzymuję dane. Muszę je przetworzyć w 500mS lub mniej. Pracuję na platformie ARM, dwurdzeniowy, 1.2GHz, 1Gb RAM, Android 4.1.2 Z góry bardzo dziękuję.


title: Dekrementująca/Inkrementacyjna zmienna pętli wewnątrz pętli. Czy ten kod pachnie?

text: Muszę czytać wiersze z pliku tekstowego w kolejności sekwencyjnej. Plik jest niestandardowym formatem tekstowym zawierającym sekcje. Jeśli niektóre sekcje są niesprawne, chciałbym poszukać początku następnej ważnej sekcji i kontynuować przetwarzanie. Obecnie mam trochę kodu, który wygląda tak: for (int currentLineIndex=0; currentLineIndex < lines.Count; currentLineIndex++ ) { //Przetwórz tutaj sekcję if( out_of_order_condition ) { currentLineIndex--;//Pozostań w tej samej linii w następną iterację, ponieważ ten wiersz może być początkiem ważnej sekcji. kontynuować; } } Czy ten kod pachnie? AKTUALIZACJA: Nie wspomniałem o tym wcześniej, ale główną przyczyną tego rodzaju kodu był skomplikowany przypadek przełączania (typowy podczas parsowania). Pozbyłem się zmiennej inkrementującej/zmniejszającej za pomocą instrukcji "goto case". Struktura wygląda teraz tak: switch(state) { case State.BOF: { //Process BOF case } case State.SeenHeader: { if( out_of_order_condition ) { state = State.BOF; //Zresetuj stan do jakiegoś przyzwoitego //currentLineIndex--; Usunięto //kontynuuj; Usunięto goto case State.BOF;//Obsłuż to w samej iteracji. } } }


title: Przypadki testów jednostkowych (JUnit), nie przez programistę, ale innych członków zespołu

text: Mam bardzo ciekawą sytuację. Kierownictwo ściśle poprosiło o wykonanie testów jednostkowych dla tworzonego kodu i podzieliło zadanie w taki sposób, że niewielu tworzy kod, a inni piszą przypadki testowe dla kodu. Teraz deweloper wciąż refaktoryzuje kod, a inni zmieniają przypadki testowe. Powiedziałem im, że to nie jest najlepsza praktyka (ponieważ osoba tworząca kod musi napisać przypadek testowy), ale nie chcą mnie słuchać i przytaczać wszelkiego rodzaju przykłady z ich wcześniejszych doświadczeń, gdzie praca jest podzielona w ten sposób . Jak mam ich przekonać lub poradzić sobie z tą sytuacją. Edycja: szukam jakiegoś argumentu / dowodu, który mógłby skłonić ich do myślenia. * * * Uwaga: Zapytałem kierownictwo o powody takiego stanu rzeczy, a oni powiedzieli mi, że po prostu dzielimy obciążenie pracą. Sprzeciwiłem się temu i powiedziałem im, że to nie jest najlepsza praktyka, po czym zaczęli przytaczać niektóre ze swoich przeszłych doświadczeń. Właściwie jeden z członków zespołu przyjął to zadanie w przeszłości. W tamtym czasie próbowałem go przekonać, by się temu sprzeciwił, a teraz mówią, czy on może zrobić, dlaczego nie możesz. Zgodziłem się to robić od teraz, ale chcę przerwać to jako praktykę. Najlepiej jak potrafię, chcę pokazać coś, co może ich przekonać.


title: Jak przekazać swoje podejście jest szybsze niż wbudowane, alternatywne podejścia?

text: Wyobraź sobie, że masz narzędzie, które jest znacznie szybsze niż inne (wbudowane, alternatywne). Chcesz o tym wspomnieć w opisie narzędzia, aby ludzie mogli zobaczyć, w jakim celu istnieje twoje narzędzie. Dla porównania, mam na myśli powiedzmy 40x szybciej, a gdy zestaw danych staje się duży, wzrost wydajności wzrasta jeszcze bardziej, powiedzmy 70x. Nie chciałem używać „szybciej o rzędy wielkości”, ponieważ dla mnie oznacza to, że jest kilka razy szybciej. Jak mogę przekazać to przesłanie w dobry, zrozumiały sposób? Myślałem też o użyciu liczb, ale potem, jak powiedziałem, gdy zestaw danych staje się większy, więc zyskuje na wydajności. Czy powinienem powiedzieć, że moje biegnie w czasie liniowym? Nie jestem pewien, czy mogę to zweryfikować.


title: Dlaczego programiści nadal korzystają z list mailingowych?

text: Dlaczego wiele projektów open source współpracuje głównie za pośrednictwem list mailingowych, a nie, powiedzmy, forów? Mogę być ignorantem w swojej ocenie, ale wraz z moim nauczycielem komunikacji uważam, że listy mailingowe są raczej nieefektywne: * Trudno odwoływać się do starych wiadomości. Musisz poczekać, aż witryna archiwizująca odbierze wiadomość, do której chcesz utworzyć łącze, a następnie ją wyszukać. * Trudno jest odpowiedzieć na wiadomości, których nie otrzymałeś z subskrypcji, ponieważ musisz ręcznie skopiować nadawcę i treść wiadomości. * Niemożliwe jest moderowanie wątków dyskusji. Wpisy nie mogą być usuwane ani modyfikowane bez nadprzyrodzonych mocy. * Trudno jest trzymać wątki razem (a mianowicie, aby upewnić się, że wszyscy uczestnicy rozmowy są kopiowani/odpowiedzi). * Uczestnictwo w wielu obszernych listach mailingowych jest trudne, ponieważ muszą subskrybować i konfigurować filtry (lub po prostu być naprawdę zaangażowanym). Jaką _prawdziwą_ przewagę mają listy mailingowe, co mi nie przyszło do głowy?


title: Co przetłumaczyć w dwujęzycznym oprogramowaniu

text: Projektuję/buduję aplikację internetową, która będzie dostępna w dwóch językach: francuskim/angielskim. Umieściłem mechanizmy i18n do wyodrębnienia każdego tekstu z aplikacji. Ale co z wkładem użytkownika? Mam kilka "ustawień systemowych", które obecnie proszą o oba języki dla ich etykiet... Ale nie mogę oczywiście poprosić o tłumaczenie dla każdego wejścia (czyste dane, pokwitowania itp.)... Gdzie można prześledzić linię między czym powinny być dostępne w tłumaczeniach? Uwaga: Instancja aplikacji (ta sama baza danych) będzie używana przez więcej niż jedną osobę (~10 użytkowników).


title: Czy należy porzucić platformę ORM, gdy trzeba zaimplementować operację zbiorczą?

text: Oto typowa sytuacja: * Musisz zaimplementować operację zbiorczą w aplikacji, która używa struktury ORM. * Po pierwszym przejściu zauważyłeś znaczne problemy z wydajnością. Oto moje pytanie: * Czy w tej sytuacji należy _faworyzować_ rozwiązanie, które zawiera surowy SQL? * A może istnieją dobrze znane wzorce projektowe, które mogą pomóc w łagodzeniu problemów, które są często związane z operacjami masowymi za pomocą platform ORM? **EDYTUJ:** * Nie pytam czy powinieneś usunąć framework ORM z całej aplikacji. * Pytam: Czy powinieneś zrezygnować z frameworka ORM dla tego małego wycinka aplikacji?


title: Pytanie C# Linq

text: Desperacko próbuję zrozumieć linq, a teraz mam konkretny przykład tego, co chcę zrobić (i nie powiedzie się): Console.WriteLine("{0}", (z myaddresses[x].PostalNr where x => myaddresses[x) ].SortType == "110" )) `myaddress` to słownik obiektów `OneAddress` (mój własny obiekt), który zawiera właściwości `SortType` i `PostalNr`. Myślałem, że nie potrzebuję pętli, aby wykonać powyższe, ale kiedy powyższe zostanie przepisane do pracy, może to zająć tylko pierwsze uderzenie, jakie otrzyma, czy? Pytania, które chcę zadać to: Dla każdego wpisu w słowniku, w którym `SortType` jest ustawione na 110, wypisz jego numer pocztowy.


title: Jak poradzić sobie z problemem, który pojawi się w późniejszej iteracji?

text: To jest projekt programistyczny Agile i nie mam możliwości tego zmienić. Projekt, który będzie najszybszy i najbardziej oczywisty dla pierwszej fazy naszego projektu, nie będzie zgodny z potrzebami naszej drugiej fazy. Zmiana nie byłaby teraz trudna do wdrożenia, ale jej wdrożenie zajęłoby trochę więcej czasu. Nasz PM naciska na szybkie podejście do fazy 1, mówiąc, że poradzimy sobie z problemem w fazie 3, kiedy tam dotrzemy. Dokonanie zmiany w fazie 3 będzie wymagało refaktoryzacji, a transformacja danych będzie bardzo intensywna. Czy jest coś, co mogę lub powinienem teraz zrobić, co pasuje do metodologii zwinnej?


title: dlaczego nie ma hasLock/testLock na muteksach?

text: Przeglądając dokumentację posix'a `pthread_mutex_t` oraz `mutex` i `CRITICAL_SECTION` zauważyłem, że nie ma łatwego sposobu sprawdzenia, czy bieżący wątek zawiera określony mutex posix' `pthread_mutex_t` można przetestować, gdy nie jest tylko artefaktem niereentrant muteksu oczywiście sprawdzanie, czy inny wątek posiada muteks jest trywialne z trylock java pozwala sprawdzić, czy bieżący (i tylko bieżący) wątek przechowuje monitor obiektu za pomocą `Thread.holdsLock(Object)`, który jest zaleca się, aby był używany tylko do debugowania, podobnie interfejs `java.util.concurrent.locks.Lock` w również nie zapewnia żadnej metody sprawdzania (implementacja `ReentrantLock` jednak robi to z `ReentrantLock.isHeldByCurrentThread()`) * * * Mogę sobie wyobrazić, że można to dość łatwo zaimplementować wraz z dowolnym innym blokadą (i jest nawet wymagane podczas implementowania mutexa wklęsłego) wszystko, czego wymagałoby to unikalnego uchwytu dla każdego wątku (już dostępnego w bibliotece wątków s lub może być nawet wskaźnikiem TLS, w zależności od tego, który jest mniejszy) i co najwyżej 2 dodatkowe pola (jedno dla uchwytu i jedno dla licznika wstrzymań) 1. podczas blokowania: po uzyskaniu blokady zwiększ licznik wstrzymań i ustaw uchwyt na bieżący wątek uchwyt 2. podczas odblokowywania: przed odblokowaniem zmniejsz licznik wstrzymań i ustaw uchwyt na zero tylko wtedy, gdy licznik wstrzymań wynosi teraz 0 3. podczas testowania: pobierz uchwyt i porównaj go z uchwytem bieżącego wątku, może to być możliwe bez żadnych barier, o ile zapis symultaniczny nie zniekształca bitów odczytu w taki sposób, że odczytywany jest uchwyt, który nie był zapisywany (tj. uchwyt wątku odczytu) jedyne możliwe warunki wyścigu są w #3 (reszta dzieje się, gdy blokada jest przytrzymywana) i mogą być nieistotne w zależności od modelu pamięci, biorąc pod uwagę rozmiar odczytywanej wartości (jedno słowo) ( **edytuj** : jeśli używany jest atomowy schemat odczytu/zapisu, jest to nawet całkowicie rozwiązane) licznik wstrzymań nie jest nawet konieczny, gdy muteks nie jest wpuszczony i nie wprowadzasz go ponownie * * * **EDIT2**: Chcę wyjaśnić że `hasLock` będzie używany tylko do celów debugowania (asert), na przykład w celu zapewnienia, że metoda, która wymaga blokady utrzymywanej przez wywołujący, faktycznie ma ją, ponieważ sytuacja wyścigu jest nieistotna: 1. Pierwszym wymaganiem jest to, że potrzebujesz sposób równoczesnego zapisu i odczytu w taki sposób, że otrzymasz tylko wartości, które zostały faktycznie zapisane 2. po drugie test `uchwyt == currentHandle` potraktowałby w ten sam sposób zarówno `nil`, jak i uchwyt innego wątku 3. jedyny sposób że currentHandle będzie równy handle jest wtedy, gdy bieżący wątek go zapisał podczas blokowania


title: Czy w systemie Windows 8 będzie można używać WCF w połączeniu z HTML5/JS?

text: Popraw mnie, jeśli się mylę, ale słyszałem, że komunikowanie się z bazą danych w systemie Windows 8 najprawdopodobniej zostanie wykonane za pomocą WCF podczas pracy z C#/XAML. Jeśli to prawda, to czy tak będzie również podczas pracy z HTML5/JS?


title: Implementacja języka programowania bez specyfikacji

text: A co, jeśli zamiast patrzeć na specyfikację C++, przeanalizujesz zachowanie (poprzez sprawdzenie kodu źródłowego i testowanie z przykładowymi danymi wejściowymi) istniejących kompilatorów C++ i wykorzystasz swoją wiedzę o C++ do stworzenia nowego kompilatora? Czy to dobry sposób na implementację języków programowania? Jakie są możliwe wady tego podejścia?


title: Czy istnieje powód przejścia ze społeczności Ruby do społeczności Clojure?

text: Kiedy patrzymy na nakładanie się społeczności Ruby - widzimy następujące nakładanie się: * Think Relevance (teraz Cognitect) zmienił Ruby na Clojure * Jay Fields zmienił Ruby na Clojure * David Chelimsky \- autor RSpec \- opuścił projekt Ruby RSpec, aby dołączyć do Cognitect. Czy istnieje jakieś podobieństwo językowe, które doprowadziło do tego crossovera?


title: Co to znaczy, że „Bootstrap” jest prekompilowany?

text: Czytałem dokumentację Bootstrap Getting Started i jako funkcję natknąłem się na „Wstępnie skompilowane źródło”. Po pobraniu pakietu znalazłem właśnie `.js`, `.css` i kilka plików graficznych. Co ma być „prekompilowane”? Czy to wszystko nie kompiluje się w przeglądarce po załadowaniu strony? Zgaduję, że oznacza to, że został skompilowany i przetestowany przed wysyłką, ale nie rozumiem, dlaczego miałoby to być reklamowane.


title: W przypadku jakich działań nie powinienem polegać na pakietowej funkcjonalności mojego języka?

text: Rozmawiając z jednym z moich współpracowników, mówił o problemach języka, którego używaliśmy, z szyfrowaniem/odszyfrowywaniem i powiedział, że programista powinien zawsze solić własne hasze. Innym przykładem, jaki mogę sobie wyobrazić, jest mysql_real_escape_string w PHP, którego programiści używają do oczyszczania danych wejściowych. Wiele razy słyszałem, że programista powinien sam oczyszczać dane. Moje pytanie brzmi: **co programista powinien zawsze robić samodzielnie, z jakiegokolwiek powodu, a nie polegać na standardowych bibliotekach spakowanych z odpowiednim językiem?**


title: Nazywanie klasy, która decyduje się na pobieranie rzeczy z pamięci podręcznej lub usługi + ocena architektury

text: Jestem młodszym programistą i pracuję nad projektem dla zwierząt, z którego chcę się jak najwięcej nauczyć. Mam następujący scenariusz: istnieje usługa WCF, której używam do pobierania i aktualizowania danych, powiedzmy samochody. Nazywa się więc **CarWCFService** i ma GetCars(), SaveCar(), ... . Implementuje interfejs **ICarService**. To nie jest rzeczywista usługa WCF, ale bardziej jak otoczka wokół niej. Po pobraniu danych z usługi chcę je przechowywać w pamięci lokalnej jako pamięć podręczną. Stworzyłem dla tego klasę o nazwie **CarCacheService**, która również implementuje interfejs **ICarService**. (Później wyjaśnię, dlaczego implementuje ICarService) Nie chcę, aby kod klienta wywoływał te implementacje. Zamiast tego chcę utworzyć trzecią implementację dla **ICarService**, która próbuje odczytać z **CarCacheService** przed wywołaniem **WCFCarService** , przechowuje pobrane dane w **CarCacheService** itd. 3 pytania : 1. Jak nazwać tę trzecią klasę? Myślałem o czymś tak prostym jak **CarService**. To jednak tak naprawdę nie mówi, co dokładnie robi usługa. Czy nazewnictwo innych klas jest dobre? 2. Czy to nazewnictwo i architektura byłyby oczywiste dla przyszłych programistów? To jest moja największa obawa. 3. Czy ta architektura ma sens? Powodem, dla którego implementuję **ICarService** w **CarCacheService**, jest głównie to, że pozwala mi sfałszować **WCFService** podczas debugowania. Mogę przechowywać fałszywe dane w instancji **CarCacheService** i przekazać je do **CarService** wraz z (innym) pustym **CarCacheService**. Gdybym upublicznił **CacheCarService** i **WCFService**, mógłbym pozwolić kodowi klienta zdecydować, czy chce porzucić buforowanie i po prostu pracować bezpośrednio na **WCFService**.


title: Dlaczego podczas rozmowy kwalifikacyjnej zadano mi ogólne, nietechniczne pytania?

text: Przeszedłem pierwszą rozmowę telefoniczną w Amazon w zeszłym tygodniu i podczas tej rozmowy zadali kilka podstawowych pytań technicznych. Dzisiaj odbyłem drugi wywiad telefoniczny i przygotowałem się dobrze, spodziewając się kolejnej rozmowy technicznej, ale to nie było wcale techniczne. Po tym, jak się przedstawiliśmy, zadał pytania takie jak: 1. Dlaczego lubisz programować? 2. Czego nie lubisz w programowaniu? 3. Czego oczekujesz od nowej pracy? 4. W ostatnim projekcie, nad którym pracowałeś, w jaki sposób upewniłeś się, że projekt został wdrożony zgodnie z wymaganiami klienta? 5. Czy był jakiś projekt, który podczas tworzenia miał wrażenie, że jest zły, a jeśli tak, to co zrobiłeś, aby naprawić ten problem? 6. Jako inżynier, jak nadążałbyś za nowymi technologiami? Dodatkowo, kiedy wyjaśniłem mu ostatni projekt, nad którym pracowałem, zapytał mnie, dlaczego zdecydowaliśmy się podjąć konkretną decyzję projektową i czy była to moja decyzja. Zastanawiałem się, dlaczego zadawał mi takie pytania; ponieważ angielski nie jest moim językiem ojczystym, zakładam, że jednym z powodów było sprawdzenie mojej znajomości języka. A większość odpowiedzi, które mu udzieliłam, była bardzo krótka, a ponieważ czułam, że oczekuje więcej, próbowałam wymyślić rzeczy do powiedzenia i skończyłam tylko bełkocząc. Ogólnie uważam, że wywiad poszedł naprawdę źle, ponieważ nie mogłem jasno przekazać mu swoich punktów. Dlaczego zadano mi tego typu pytania i jakich odpowiedzi oczekują ankieterzy?


title: Metody pakowania asemblera z kompilatorem

text: Planuję stworzyć kompilator, który będzie generował asembler, czyli o ile naprawdę chcę iść z tym projektem (nie chcę sam tworzyć plików obiektowych ani żadnego kodu maszynowego). Ponieważ robię to na Linuksie, chciałbym użyć asemblera gazu. Nie jestem pewien, jak najlepiej spakować aplikację. Czy powinienem wymagać, aby ludzie mieli już gaz w swoim systemie (który jest domyślnie w większości dystrybucji Linuksa, jeśli się nie mylę, co mogę być)? A może lepiej spakować źródła z moją aplikacją, czy nawet spakować samą aplikację za pomocą mojego kompilatora? * * * Przez pakowanie rozumiem dowolną formę dystrybucji, która obejmuje również umieszczenie kodu na githubie.


title: Jak zostać dobrym w analizie i projektowaniu obiektowym (OOAD)?

text: Zostanie dobrym analizatorem i projektantem może przynieść wiele korzyści programiście. Ale na pewno są w tym przeszkody. Nie wszyscy są zainteresowani OOAD i nie każda zainteresowana zna ścieżkę. Czy dobry OOAD powinien znać wiele języków OO? A może powinien mieć nieudane projekty? Jak zostać dobrym OOAD?


title: Co to jest wzorzec architektury korporacyjnej wywoływany dla usługi sieci Web opakowującej usługę sieci Web?

text: W ramach architektury zorientowanej na usługi (SOA) zostałem poproszony o stworzenie usługi sieciowej, która sama pozyskuje dane z usługi internetowej innej firmy. Mam ukryć wszelkie szczegóły dotyczące implementacji usługi internetowej strony trzeciej i zmapować zwrócone dane, aby uniknąć wycieku jakichkolwiek szczegółów implementacji usługi strony trzeciej. Jestem nowy w SOA. Potocznie nazwałbym ten projekt czymś w rodzaju "_mostu usług sieciowych_". **Jakie jest prawidłowe określenie wzorca architektury korporacyjnej SOA?** Jestem bardzo zdezorientowany, ponieważ wiele wzorców architektury korporacyjnej wydaje się opisywać to samo (fasada usługi?, broker komunikatów? kanał wiadomości? proxy?). Nie wydaje mi się, żebym był do końca dostrojony do wymaganego poziomu abstrakcji.


title: Co, dlaczego lub kiedy lepiej wybrać narzędzie kolejkowania a tabelę zadań bazy danych?

text: Chciałbym wiedzieć co, dlaczego lub kiedy lepiej wybrać narzędzie kolejkowe i co, dlaczego lub kiedy lepiej wybrać tabelę zadań bazy danych? Nie rozumiem różnicy wysyłania moich zadań w narzędziu kolejkowania lub w tabeli bazy danych, która zostanie odczytana i będzie działać jako kolejka. Czy istnieją jakieś właściwości, których narzędzia kolejkowe nie mają tej bazy danych? Przeczytaj moje pytanie jako "jakie są korzyści lub jakie są argumenty za wyborem rozwiązania z narzędziem do kolejkowania". Moje pytanie nie dotyczy tego, jaki język, technologię lub projekt należy podjąć w następnej kolejności. Dziękuję Ci,


* Jakie są paradygmaty programowania w C# 4.0? * Do jakiej kategorii należą metody rozszerzeń? > Język programowania może obsługiwać wiele paradygmatów. Na przykład programy > napisane w C++ lub Object Pascal mogą być czysto proceduralne lub czysto obiektowe > lub zawierać elementy obu paradygmatów. > > W programowaniu obiektowym programiści mogą myśleć o programie jako o zbiorze obiektów wchodzących w interakcje, podczas gdy w programowaniu funkcjonalnym program może być > traktowany jako sekwencja bezstanowych ocen funkcji. Kiedy > programujesz komputery lub systemy z wieloma procesorami, programowanie > zorientowane na procesy pozwala programistom myśleć o aplikacjach jako o zbiorach > współbieżnych procesów działających na logicznie współdzielonych strukturach danych. > > Tak jak różne grupy w inżynierii oprogramowania opowiadają się za różnymi > metodologiami, tak różne języki programowania opowiadają się za różnymi > paradygmatami programowania. Źródło: Wikipedia


title: Dlaczego większość systemów śledzenia problemów ma tylko jedno pole statusu?

text: Większość systemów śledzenia problemów ma tylko jedno pole statusu. Typowy status: Nowy -> Naprawiono Gdy kod jest przesyłany do repozytorium z komunikatem zatwierdzenia "Naprawiono problem #1234", problem #1234 jest automatycznie oznaczany jako "Naprawiony". Mam poniższy pomysł, ale żaden system nie może się spełnić. **Pytanie brzmi: czy mam rację, czy po prostu nie znalazłem odpowiedniego narzędzia?** 1. Stan programowania Myślę, że jest to problematyczne, ponieważ tylko programista twierdzi, że naprawił problem. 2. Kontrola jakości / status wydania Nie jest możliwe sprawdzenie, czy zespół kontroli jakości zweryfikował, czy nie. Zespół ds. kontroli jakości nie ma miejsca na zaznaczenie statusu. Ponadto nawet w przypadku projektów typu open source użytkownik końcowy może nie chcieć kompilować ze źródła. Użytkownik końcowy jest zainteresowany tylko tym, czy może uzyskać wersję wydawniczą. Jeśli nowa wersja nie jest gotowa do wysyłki, z punktu widzenia użytkownika nie jest to nic „naprawione”. 3. Status opinii Jest to również przydatne, jeśli użytkownik może ustawić „status opinii” na „Naprawiono” po przetestowaniu wydanej wersji lub kodu źródłowego, zamiast zostawiać komentarz „Dzięki, to działa!”. Pola stanu można przeszukiwać.


title: Pierścień liczb, gdzie sąsiednie wpisy sumują się do liczby pierwszej

text: Mając liczbę n, znajdź taką permutację liczb 1...n, że wszystkie sąsiednie wpisy sumują się do liczb pierwszych. Jeśli taka permutacja nie istnieje, zgłoś błąd. Czy istnieje czysto funkcjonalny sposób na rozwiązanie tego problemu? Rozwiązanie, które najwyraźniej wykorzystuje nawroty, podane używa C++, języka, którego nie znam zbyt dobrze, i pętli w pętlach w pętlach z bardzo źle nazwanymi nazwami zmiennych i całą masą mutacji. Nawet jeśli rozwiązanie wymaga mutacji, zagnieżdżone pętle są naprawdę trudne do przetłumaczenia na Racket, język, którego obecnie używam. Bardziej ogólne pytanie brzmiałoby: jak wykonać algorytmy wycofywania czysto funkcjonalnie, gdy koncepcja wycofywania wydaje się zawsze obejmować utrzymywanie aktualnego stanu i dużą globalną zmienną stanu okruszka historii, która jest ciągle mutowana? Oczywiście głupim sposobem byłoby generowanie wszystkich permutacji i testowanie ich jedna po drugiej, ale czy istnieją bardziej wydajne sposoby, najlepiej zaimplementowanie metody wstecznej, aby zrobić to funkcjonalnie? Ponieważ używam Racketa, rozwiązanie może nie być _czysto_ funkcjonalne, ale najlepiej w większości funkcjonalne, tj. bez powtarzających się zmiennych liczników w pętlach lub tym podobnych.


title: Najwcześniejsze użycie komentarzy jako elementów mających znaczenie semantyczne w programie?

text: W niektórych zakątkach świata metaprogramowania PHP modne stało się używanie komentarzy PHPDoc jako mechanizmu dostarczania semantycznie znaczących informacji do programu. Oznacza to, że inny kod przeanalizuje bloki dokumentacji i zrobi coś ważnego z informacjami zakodowanymi w tych komentarzach. Adnotacje Doctrine i generowanie kodu są tego przykładem. Jakie jest najwcześniejsze (lub wczesne) zastosowanie tej techniki? Niewyraźnie pamiętam niektóre wczesne implementacje Java _Design by Contract_, które robiły podobne rzeczy, ale nie jestem pewien, czy ci ludzie wymyślili tę technikę, czy też skądś ją wzięli. Głównie prosząc o przedstawienie historycznego kontekstu programistom PHP, którzy wcześniej nie zetknęli się z tą techniką i są nieufni wobec niej, ponieważ wydaje się to trochę szalone.


title: Jak podnieść kulturę inżynierską w dużych korporacjach?

text: Pracując w dużej korporacji zdałem sobie sprawę, że nie ma znaczenia, jak mądry jesteś, ponieważ jeśli inni nie dostrzegają wartości w tym, co robisz, nie zajdziesz zbyt daleko. Dużo trudniej jest przekonać 1000 osób, że pewna część stosu oprogramowania powinna być w dobrym stanie, niż przekonać 10 osób do tego samego. Jestem ciekaw, jak ludzie podnoszą kulturę inżynierską w dużych korporacjach, ponieważ wpadam na mury z lewej i prawej strony i chciałbym być bardziej proaktywny w tym, jak to robię. Opowiadałem się za rozmowami technicznymi i demonstracjami technicznymi wraz z przeglądami kodu jako potencjalnymi rozwiązaniami. Czy ludzie mają inne sugestie? Zauważ, że 1000 osób i groovy to tylko reprezentatywne przykłady. Nie jestem mężem groovy ani żadnego innego języka, a 1000 osób ma na celu wskazanie dużej skali i tego, jak uczyć dużą grupę ludzi o najlepszych praktykach i ogólnych zasadach inżynierii.


title: Tworzenie aplikacji: Python lub Java (lub PHP)

text: Chcę zająć się tworzeniem aplikacji, takich jak aplikacje i gry na Facebooka lub Androida. Robię to dla zabawy i nauki. Gdy moje umiejętności będą równe, chciałbym mieć trochę dodatkowego dochodu z aplikacji, ale nie zamierzam z tego żyć (tylko po to, aby wiedzieć, skąd pochodzę i jakie są moje cele końcowe). Obecnie znam i znam PHP oraz frameworki takie jak cakephp i yii. Jednak chciałem nauczyć się innego języka, aby poszerzyć swoje horyzonty i stać się lepszym programistą. Więc zawęziłem to do 2 języków. Python i Java (już słyszę, jak ludzie wzdrygają się na różnicę w wybranych przeze mnie językach, ale mam kilka powodów). Python: bliżej PHP niż Java. Wieloplatformowy. Świetny również jako ogólny język skryptowy i ma wiele zalet na poziomie systemu plików, których nie ma PHP. Czystsza składnia, czytelność, bla bla i lista jest długa. Python będzie działał świetnie z aplikacjami wieloplatformowymi i może być uruchamiany na wielu systemach operacyjnych i jest obsługiwany przez Facebooka do tworzenia aplikacji. Ale nie ma wsparcia na Androidzie (dla pełnoprawnych aplikacji). Java: znacznie silniejszy język maszynowy, bardzo silna społeczność i wsparcie korporacyjne. Znajomość Javy jest również dobra dla osobistej sprzedaży dla przedsiębiorstw, jeśli to lubisz. Główną korzyścią jest to, że Java może pisać aplikacje natywnie dla Androida, a aplikacje można przenosić do wersji internetowych do odtwarzania na Facebooku. Tak więc, chociaż widziałem, jak wielu programistów woli Javę od tych dwóch, Java ma tę znaczącą przewagę, ponieważ mogę sprzedawać swoje aplikacje na obu rynkach i w przyszłości budować większy potencjalny dochód. Ale tak jak powiedziałem, to dla zabawy. Chociaż pieniądze nie są celem, to i tak byłoby miło. PHP: Umieszczam to tutaj, ponieważ już to znam i jestem pewien, że można by to zrobić. Oczywiście działa świetnie na Facebooku, ale podobnie jak Python nie działa tak dobrze na Androidzie. Chociaż przemawia do mnie głównie sfera „rozwoju aplikacji”, uważam, że aplikacje na Androida są dość interesujące i mają ogromny potencjał. Ale z drugiej strony Facebook ma o wiele więcej użytkowników, a aplikacje mogą być potencjalnie bardziej wciągające (komputer stacjonarny a mobilny). Dlatego utknąłem na tym, którą trasę wybrać. Python dla Facebooka i aplikacji internetowych, z prawdopodobnie szybszym rozwojem do czasu produkcji, lub Java, którą można opracować dla dowolnej platformy do tworzenia aplikacji. Uwaga na marginesie: tak naprawdę nie próbuję zajmować się tworzeniem 3D, głównie 2D. Chcę też stworzyć aplikację z odtwarzaniem w czasie rzeczywistym (websockets itp.). Ktoś wspomniał mi o nodejs w tym celu, ale Python wydaje się być bardziej globalnie wszechstronny dla moich celów. Tak więc każdemu, kto tworzy Facebooka lub Androida w dowolnym języku: co sugerujesz? Każdy wkład jest cenny i doceniam to. I przepraszam, że długo się kręcisz. **EDYTUJ:** jak wspomniano w jednej z odpowiedzi, moim głównym celem jest granie. Chociaż mam pewne plany dotyczące aplikacji niezwiązanych z grami, takich jak ogólne aplikacje internetowe i komputerowe. Ale granie jest moim głównym celem z możliwością zarobku. **EDYTUJ:** Inną kwestią może być Jython. Pisanie kodu w Pythonie, który jest konwertowany na kod bajtowy Java. Umożliwiłoby to tworzenie aplikacji na Androida za pomocą Pythona. Mogę się jednak mylić, wciąż się nad tym zastanawiam. **Aktualizacja 1-26-11:** Niedawno zdobyłem nową pracę, która wymagała nauczenia się .NET przy użyciu C#. Jestem pewien, że niektórzy z was już się kulą, ale naprawdę podoba mi się cały system i to, jak to wszystko działa między programowaniem desktopowym i webowym. Ale ponieważ nadal bardzo interesuję się Pythonem i po kilku badaniach zdecydowałem, że będę uczyć się Pythona, a także implementacji IronPython dla .NET. Ale (ponownie: wiem...), ponieważ .NET jest głównie rzeczą Windows i nie jest tak kompatybilna, jak lubię, będę się uczyć Mono, która jest wieloplatformową implementacją .NET, gdzie mogę wykorzystać to, czego się nauczyłem pracuj przy użyciu C# i czego chcę się nauczyć, Python/IronPython. Tak więc ucząc się i pisząc C#/.NET@work będę się uczyć Pythona -> Mono -> Iron Python do tego, co chcę robić osobiście. Myślę, że korzyść z tego, że wszystkie są ze sobą bardzo blisko spokrewnione, bardzo mi pomoże. Co myślicie? Wydaje mi się, że to powinno być kolejne pytanie, ale nie ma zbyt wielu pytań. Tak czy inaczej, daliście bardzo pomocny wkład.


title: Drukowanie tabeli z mysql i php jako PDF

text: Potrzebuję pomocy w wydrukowaniu danych z tabel mysql w formacie PDF. Mam scenariusze, w których użytkownik wyświetla swoje dane z bazy danych wydrukowanych do tabeli HTML, chciałbym, aby ta sama tabela HTML była również drukowana w formacie PDF.


title: Testowanie jednostkowe JavaScript - Czy testujemy logikę kodu czy zachowanie w stosunku do przeglądarki?

text: [Ostrzeżenie]: Jestem nowy w testowaniu całych jednostek i staram się nauczyć jak najwięcej. Pracuję nad projektem MS CRM 2011 i staram się wprowadzić testy jednostkowe w mojej firmie. W przypadku zasobów sieci Web do testowania jednostek JavaScript znalazłem ten link na blogu MSDN. Architekt rozwiązań w mojej firmie sugeruje, że jest to złe podejście, ponieważ nie testujemy nawet na silniku JS IE, ale testujemy przy użyciu CScript (host Windows) i chociaż zgadzam się z tym punktem, to nie jest cała idea testowania jednostkowego o testowaniu funkcjonalności poszczególnych funkcji, a nie o zależności. Czy do sprawdzenia, czy będzie działać w IE, narzędzie testowe, takie jak Selenium, nie byłoby lepsze? A może czegoś mi brakuje?


title: Wdrażanie własnego dostawcy członkostwa w ASP.NET MVC

text: Czy istnieją jakieś konkretne zasady i przepisy, których należy przestrzegać podczas opracowywania niestandardowego dostawcy członkostwa. Na przykład implementacja określonej klasy Interface lub Abstract. Lub określoną architekturę modelu do naśladowania. Jeśli tak, to jakie są zasady, czy mogę projektować, modelować i kodować wszystko?


title: Wykrywanie wycieków kodu internetowego

text: Jestem ciekaw po dzisiejszym przeczytaniu o niewielkim wycieku kodu z dużego projektu do niektórych blogów i forów (w skrócie: chłopaki zapomnieli _anonimizować_ kod przed prośbą o pomoc), wszystkie wykryte i (ze złością) narzekane przez * *klient**, który rozsądnie chciał chronić IP, za który zapłacił. Przede wszystkim wiem, że to dobra praktyka (popraw mnie, jeśli się mylę), gdy wymagane jest ujawnienie kodu stronom publicznym w celu uzyskania pomocy, podjęcie odpowiednich środków _anonimizacji_, takich jak zmiana nazwy we wszystkich fragmentach, np. `com .thecompanyiworkfor` z `com.somecompany` lub `com.bank.MortgageRiskCalculatorClass` do `com.somecompany.SomeGenericRiskIndicatorClass` i tak dalej... Załóżmy teraz, że chciałbym się dowiedzieć **jeśli** i **gdzie* * (i może _kto_ , ale teraz nie jest to ważne i nie jest to część pytania) pierwotnie ograniczony kod wyciekł, aby prawidłowo zareagować (czytaj „wyślij wszystkim e-maila z informacją, że usuną/wyczyszczą posty lub coś złego przydarzyło się winowajcy”, haha). Przypuszczam, że dobrym sposobem może być wygooglowanie czegoś _unikalnego_, co można znaleźć w kodzie. Na przykład, gdybym pracował dla Inintech, spróbowałbym wygooglować dla `com.inintech`, aby sprawdzić, czy ktoś nie był na tyle głupi, aby wkleić kod z pełnymi dyrektywami `import`/`using`. Nie jest to metoda kompleksowa, opiera się na założeniu, że ktoś lepiej stara się chronić _powiązanie_ między firmą a kodem (tj. ze względów bezpieczeństwa z powodu niejasności, wizerunku publicznego...) niż uniemożliwiać swobodny dostęp do własności intelektualnej publiczny. Moje proste pytania to: ### Czy wiesz/myślisz, że istnieją inne dobre praktyki przeprowadzania takich dochodzeń? Jak byś to zrobił, gdyby twój szef zapytał, czy ktoś ujawnił kod firmy? Nie sądzę, żeby ktoś kiedykolwiek próbował wyszukać w Google cały plik kodu źródłowego w jednym ciągu zapytania :) ### Czy wiesz, czy są firmy prowadzące takie dochodzenia? Jeśli tak, to co mógłbyś mi o nich powiedzieć więcej niż ich imiona, na przykład sposób, w jaki pracują?


Na które według Ciebie języki należy uważać w 2011 roku i później? W tym artykule omówiono 9 języków, na które należy uważać w 2011 roku. Jakie są Twoje poglądy i uwagi na ten temat?


title: Jak rozwiązać lub uniknąć problemów z szybkim dodawaniem nowych funkcji do zakresu projektu?

text: Pracuję nad projektem z jednym deweloperem (do tej pory) i mną w roli testera. Dodawanych jest kilka nowych funkcji. Projekt jest oparty na .NET4.0, ale niektórzy użytkownicy potrzebują kompatybilności 3.5, wsparcia dla Silverlight i Windows Phone 7. To wszystko cechy pożądane przez użytkowników, ale przy liczbie osób biorących udział w tym projekcie może to wymknąć się spod kontroli. Jakie masz doświadczenia w kontrolowaniu żądań funkcji i rozszerzania zakresu?


title: Zasady i porady dotyczące logowania?

text: W mojej organizacji opracowaliśmy kilka zasad / wytycznych dotyczących logowania, które chciałbym wiedzieć, czy możesz dodawać lub komentować. Używamy Javy, ale możesz ogólnie komentować logowanie - zasady i porady 1. Użyj prawidłowego poziomu logowania * BŁĄD: Coś poszło bardzo nie tak i wymaga natychmiastowej naprawy * OSTRZEŻENIE: Proces może być kontynuowany bez naprawy. Aplikacja powinna tolerować ten poziom, ale ostrzeżenie zawsze powinno zostać zbadane. * INFO: Informacja o zakończeniu ważnego procesu * DEBUGOWANIE. Jest używany tylko podczas programowania 2. Upewnij się, że wiesz, co rejestrujesz. 3. Unikaj tego, aby logowanie wpływało na zachowanie aplikacji Funkcją logowania powinno być zapisywanie komunikatów w logu. 1. Komunikaty dziennika powinny być opisowe, jasne, krótkie i zwięzłe. Podczas rozwiązywania problemów nie ma zbyt wiele bezsensownych komunikatów. 1. Wstaw odpowiednie właściwości w log4j Wstaw, że właściwa metoda i klasa są zapisywane automatycznie. Przykład: Datedfile -web log4j.rootLogger=BŁĄD, DATEDFILE log4j.logger.org.springframework=INFO log4j.logger.waffle=BŁĄD log4j.logger.se.prv=INFO log4j.logger.se.prv.common.mvc=INFO log4j.logger.se.prv.omklassning=DEBUGOWANIE log4j.appender.DATEDFILE=biz.minaret.log4j.DatedFileAppender log4j.appender.DATEDFILE.layout=org.apache.log4j.PatternLayout log4j.appender.DATEDFILE. d{HH:mm:ss,SSS} %-5p [%C{1}.%M] - %m%n log4j.appender.DATEDFILE.Prefix=omklassning. log4j.appender.DATEDFILE.Suffix=.log log4j.appender.DATEDFILE.Directory=//localhost/WebSphereLog/omklassning/ 1. Wartość dziennika. Proszę rejestrować wartości z aplikacji. 1. Prefiks dziennika. Podaj, z której części aplikacji jest napisane logowanie, najlepiej z jakimś przedrostkiem uzgodnionym dla projektu, np. `PANDORA_DB` 1. Ilość tekstu. Uważaj, aby nie było zbyt dużo tekstu logowania. Może mieć wpływ na wydajność aplikacji. 1. Format logowania: -Istnieje kilka wariantów i metod do użycia z log4j, ale chcielibyśmy jednolitego użycia następującego formatu, gdy logujemy się w wyjątkach: `logger.error("PANDORA_DB2: Fel vid hämtning av frist i TP210_RAPPORTFRIST" , e);` W powyższym przykładzie założono, że ustawiliśmy właściwości log4j tak, aby automatycznie zapisywał klasę i metodę. Zawsze używaj loggera, a nie następujących: `System.out.println(), System.err.println(), e.printStackTrace()` Jeśli aplikacja internetowa korzysta z naszego frameworka, możesz uzyskać bardzo szczegółowe informacje o błędach z EJB, jeśli używasz try-catch w handler i logowanie zgodnie z powyższym modelem: W naszym projekcie używamy tego wzorca konwersji, za pomocą którego nazwy metod i klas są wypisywane automatycznie. Tutaj używamy dwóch różnych patentów dla konsoli i dla datedfileappender: log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.DATEDFILE.layout. WzorzecKonwersji=%d [%t] %-5p %c - %m%n W obu powyższych przykładach zostanie wypisana metoda i klasa. W konsoli numer wiersza zostanie również zapisany nasz. 1. `toString()` Proszę mieć `toString()` dla każdego obiektu. Np.: @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("DwfInformacje [ "); sb.append("cc: ").append(cc); sb.append("pn:").append(pn); sb.append("kc: ").append(kc); sb.append("liczbaStron: ").append(liczbaStron); sb.append("data publikacji: ").append(data publikacji); sb.append("wersja: ").append(wersja); sb.append(" ]"); return sb.toString(); } zamiast specjalnej metody, która czyni te wyjścia publicznymi void printAll() { logger.info("inbet: " + getInbetInput()); logger.info("betdat: " + betdat); logger.info("betid: " + betid); logger.info("wyślij: " + wyślij); logger.info("appr: " + appr); logger.info("rereg: " + rereg); logger.info("NY: " + ny); logger.info("CNT: " + cnt); } Czy jest więc coś, co można dodać, skomentować lub wzbudzić wątpliwości za pomocą tych sposobów korzystania z rejestrowania? Nie wahaj się odpowiedzieć lub skomentować, nawet jeśli nie jest to związane z Javą, a log4j to tylko implementacja tego, jak to jest uzasadnione.


title: Tworzenie kluczy alternatywnych za pomocą diagramów Visio ERD

text: Dzisiaj po raz pierwszy wypróbowuję Visio, tworząc ERD. Czy możliwe jest określenie kluczy alternatywnych w _dodatku_ do PK w diagramach Visio ERD. Nie widzę sposobu na zdefiniowanie więcej niż jednego klucza w tabeli. Jakieś pomysły? Twoje zdrowie.


title: Refaktoryzacja kodu do oddzielnych problemów

text: Podczas programowania obiektu, który reprezentuje GUI, klasa jest mieszanką kodu następujących sekcji: 1. Zastąpienia super GUI, w celu dostosowania zachowania 2. Implementacje kontraktów interfejsów, aby rozmawiać/słuchać innych obiektów GUI 3. Lokalna obsługa zdarzeń metody 4. Lokalne metody przetwarzania danych 5. Kod do odpytywania/aktualizacji zdalnej bazy danych i globalnego dostawcy obiektów Zakładając, że wszystko to jest upchnięte w jednym pliku klasy, jak podzielić go na oddzielne pliki lub klasy rodzic-dziecko, aby można było delegować te do różnych programistów z minimalną zależnością od siebie?


title: Czy komentarz metody powinien zawierać zarówno podsumowanie, jak i opis zwrotu, gdy często są one tak podobne?

text: Jestem zwolennikiem odpowiednio udokumentowanego kodu i doskonale zdaję sobie sprawę z możliwych wad. To wykracza poza zakres tego pytania. Lubię przestrzegać zasady dodawania komentarzy XML dla każdego członka publicznego, biorąc pod uwagę, jak bardzo lubię IntelliSense w Visual Studio. Jest jednak jedna forma redundancji, która przeszkadza nawet takiemu komentatorowi jak ja. Jako przykład weźmy List.Exists(). /// <summary> /// Określa, czy List<T> zawiera elementy /// spełniające warunki zdefiniowane przez określony predykat. /// </summary> /// <returns> /// prawda, jeśli List<T> zawiera jeden lub więcej elementów, które spełniają /// warunki zdefiniowane przez określony predykat; w przeciwnym razie fałszywe. /// </returns> public bool Exists( Predicate<T> match ) { ... } `Podsumowanie` i `returns` zasadniczo mówią to samo. Często piszę podsumowanie bardziej z perspektywy „zwrotów”, całkowicie porzucając dokumentację „zwrotów”. > Zwraca true, gdy lista zawiera elementy, które spełniają warunki > zdefiniowane przez określony predykat, w przeciwnym razie false. Dodatkowo dokumentacja zwrotów nie pojawia się w IntelliSense, więc wolę pisać wszelkie bezpośrednio istotne informacje w „podsumowaniu”. 1. Dlaczego miałbyś kiedykolwiek dokumentować „zwroty” oddzielnie od „podsumowania”? 2. Jakieś informacje, dlaczego firma Microsoft przyjęła ten standard?


title: Jak szybko przeszukiwać bardzo dużą listę ciągów/rekordów w bazie danych

text: Mam następujący problem: Mam bazę danych zawierającą ponad 2 miliony rekordów. Każdy rekord ma pole znakowe X i chcę wyświetlić listę rekordów, dla których pole X zawiera określony ciąg. Każdy rekord ma rozmiar około 500 bajtów. Aby było bardziej konkretnie: w GUI mojej aplikacji mam pole tekstowe, w którym mogę wpisać ciąg. Nad polem tekstowym mam tabelę wyświetlającą (pierwsze N, np. 100) rekordów pasujących do napisu w polu tekstowym. Kiedy wpisuję lub usuwam jeden znak w polu tekstowym, zawartość tabeli musi być aktualizowana w locie. Zastanawiam się, czy istnieje skuteczny sposób na zrobienie tego za pomocą odpowiednich struktur indeksowych i / lub buforowania. Jak wyjaśniono powyżej, chcę wyświetlić tylko pierwsze N elementów, które pasują do zapytania. Dlatego dla N wystarczająco małych, ładowanie pasujących elementów z bazy danych nie powinno stanowić dużego problemu. Poza tym buforowanie elementów w pamięci głównej może przyspieszyć pobieranie. Myślę, że głównym problemem jest to, jak szybko znaleźć pasujące elementy, biorąc pod uwagę ciąg wzorca. Czy mogę polegać na niektórych funkcjach DBMS, czy też muszę sam zbudować jakiś indeks w pamięci? Jakieś pomysły? **EDYTUJ** Przeprowadziłem pierwszy eksperyment. Podzieliłem rekordy na różne pliki tekstowe (maksymalnie 200 rekordów na plik) i umieściłem pliki w różnych katalogach (użyłem zawartości jednego pola danych do określenia drzewa katalogów). Mam około 50000 plików w około 40000 katalogach. Następnie uruchomiłem Lucene, aby zindeksować pliki. Wyszukiwanie ciągu za pomocą programu demonstracyjnego Lucene jest dość szybkie. Podział i indeksowanie zajęło kilka minut: jest to dla mnie całkowicie do zaakceptowania, ponieważ jest to statyczny zestaw danych, o który chcę zapytać. Kolejnym krokiem jest zintegrowanie Lucene z programem głównym i wykorzystanie trafień zwracanych przez Lucene do załadowania odpowiednich rekordów do pamięci głównej.


title: Czy skuteczne jest dołączenie komentarza do każdej funkcji?

text: Niedawno przeprowadziłem się do tej firmy i moja pierwsza reakcja na proces rozwoju pozostawia mi wątpliwości. Tutaj naprawdę wątpię w skuteczność: _Każda_ funkcja _musi_ mieć komentarz w stylu Javadoc, a kod jest automatycznie testowany przez White-box Test. Nawet gdy piszę prostą i krótką funkcję, funkcja musi mieć komentarz w stylu Javadoc. Na przykład: void request_ait(void) { hoa_request_ait(); } Jeśli piszę kod bez komentarza w stylu Javadoc, nawet dla tej prostej funkcji, narzędzie QA rejestruje go jako defekt. Dlatego piszę prosty szablon komentarza. Na przykład: /** * @author peter * @wersja 1.0 * @od 28.08.2011 */ void request_ait(void) { hoa_request_ait(); } Wiem, że komentarze dotyczące funkcji API lub ważnych funkcji są naprawdę przydatne. Ale wymuszanie na każdej funkcji komentarza w stylu Javadoc jest nieefektywne... Chcę posłuchać twojej opinii. Czy się mylę?


title: Plik z Apache 2.0 i moimi modyfikacjami

text: Przeczytałem oryginalny tekst licencji Apache w wersji 2.0 i wyjaśnienie w prostym języku angielskim. OK, kopiuję klasę dystrybuowaną przez _Najlepszą firmę na świecie_, jej licencję i trochę modyfikuję kod. **Oryginalny plik z moimi zmianami.** /* * Copyright (C) 2011 Najlepsza firma na świecie * * Licencjonowany na licencji Apache, wersja 2.0 ("Licencja"); * nie możesz używać tego pliku, chyba że zgodnie z Licencją. * Kopię Licencji można uzyskać pod adresem * * http://www.apache.org/licenses/LICENSE-2.0 * * O ile nie jest to wymagane przez obowiązujące prawo lub nie zostało to uzgodnione na piśmie, oprogramowanie * rozpowszechniane w ramach Licencji jest rozpowszechniane na PODSTAWA „TAK JAK JEST”, * BEZ JAKICHKOLWIEK GWARANCJI LUB WARUNKÓW, wyraźnych lub dorozumianych. * Zapoznaj się z Licencją, aby zapoznać się z określonymi uprawnieniami dotyczącymi języka * oraz ograniczeniami w ramach Licencji. */ pakiet com.mojepakiet; public class MojaKlasa { private void someMethod() { // Ich kod // Moja mała zmiana } } Następnie używam MyClass w mojej aplikacji. 1. Czy muszę zastąpić _Najlepsza firma na świecie_ nazwą mojej firmy czy własnym nazwiskiem? Jeśli nie, czy mój projekt będzie zawierał dwie licencje: swoją i moją? Gdzie je w tym przypadku zapisać? 2. O ile rozumiem, muszę rozpowszechniać swoją aplikację przy użyciu licencji Apache, wersja 2.0. Wikipedia mówi: > Licencja Apache jest powszechnie, ale nie powszechnie, uważana za dopuszczalną, ponieważ > nie wymaga pracy pochodnej oprogramowania lub modyfikacji > oryginału, aby był rozpowszechniany przy użyciu tej samej licencji (w przeciwieństwie do licencji typu copyleft – zobacz porównanie).


title: czy możesz mieć za dużo dto/bo - metoda mapowania?

text: Mam usługę Windows, 2 usługi sieciowe i interfejs sieciowy, które muszą podążać tą samą ścieżką (pod względem danych). Wymyśliłem więc dwa sposoby tworzenia mojego rozwiązania. ![pierwszy](http://i.stack.imgur.com/zcPcD.png) Obawiam się, że UI/WS/etc będzie miał swój własny rodzaj DTO (powiedzmy model w ASP.Net MVC), które powinny być zmapowane do DTO, aby SL mógł następnie zmapować je do BO, a następnie zmapować je do właściwego DTO EF6, abym mógł je zapisać w bazie danych. Zastanawiam się więc nad zrobieniem tego w ten sposób ![drugi](http://i.stack.imgur.com/viDm4.png), aby usunąć jeden poziom mapowania. Który powinienem wziąć? Czy istnieje trzecie rozwiązanie?


title: Jak mogę uzyskać dostęp do mojej klasy Handler/runnable ze wszystkich moich innych klas w systemie Android?

text: Staram się stworzyć klasę, która pozwoli mi robić coś co 5 sekund i chcę mieć możliwość rozpoczęcia i zatrzymania tego z dowolnej innej klasy. Oto moja klasa Timera: public class Timer extends Aktywność { @Override protected void onCreate(Bundle saveInstanceState) { // TODO Automatycznie wygenerowana metoda pośrednicząca super.onCreate(savedInstanceState); } Handler handler = nowy Handler(); Runnable runnable = new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "WYŚWIETL KOMUNIKAT", Toast.LENGTH_SHORT).show(); handler.postDelayed(uruchamialny, 5000); } }; } Teraz moja wiedza na temat programowania obiektowego nie jest tak dobra, jak myślałem, jestem przyzwyczajony do tworzenia instancji klas i korzystania z właściwości klas, ale jak mogę użyć właściwości klas raz w całym programie, czy nadal tworzę wystąpienia klasy Timer w innych klasach? Czy powinienem użyć wzorca Singleton, czy powinienem uczynić klasę statyczną? Więc w zasadzie w klasie 1 chciałbym uruchomić timer w następujący sposób: Timer.runnable.run(); I być może w klasie 2 zatrzymaj plik uruchamialny uruchomiony w klasie 1, wykonując to: Timer.handler.removeCallbacks(runnable); Szukam porady i wyjaśnienia jak poprawnie zaprogramować ten pomysł i dlaczego. Dziękuję Ci!


title: Jak można dostosować metodologie Agile do rozwoju systemów przetwarzania dużych ilości danych?

text: Zajmuję się tworzeniem systemów przetwarzania wielkoseryjnego. Podobnie jak modele matematyczne, które obliczają różne parametry na podstawie milionów rekordów, oblicza pola pochodne na milionach rekordów, przetwarzają ogromne pliki zawierające transakcje itp. Jestem dobrze świadomy metodologii testowania jednostkowego i jeśli mój kod jest w C#, nie mam problemu z testowanie jednostki. Problem polega na tym, że często mam kod w T-SQL, kodzie C#, który jest przechowywanym zestawem SQL i przepływie pracy SSIS z dużą ilością logiki (i wyników itp.) lub jakimś procesem SAS. Jakie podejście stosujesz przy tworzeniu takich systemów. Zwykle opracowuję kilka testów jako procedury składowane w zaprojektowanym schemacie (TEST), a następnie automatycznie uruchamiam je przez noc i sprawdzam wyniki. Ale to dotyczy tylko T-SQL. A ciągła integracja JEST trudna. Problem polega jednak na testowaniu pakietów SSIS. Jak to testujesz? Jakie jest Twoje preferowane podejście do łączenia danych w tabelach (zwłaszcza jeśli potrzebujesz dużo inicjalizacji danych). Mam pewne podejście wypracowane przez lata, ale może po prostu nie czytam wystarczającej liczby artykułów. Więc deweloperzy bankowości, telekomunikacji, ryzyka. Jak testujesz aplikacje o znaczeniu krytycznym, które przetwarzają miliony rekordów pod koniec dnia, miesiąca itp.? Z jakich frameworków korzystasz? Jak walidujesz, że Twój pakiet ssis jest poprawny (jak go rozwijasz)/ Jak osiągnąć ciągłą integrację w takim środowisku (osobiście nigdy tam nie dotarłem)? Mam nadzieję, że nie jest to pytanie otwarte. Jak na przykład testujesz swoje zadania map-reduce (nie używam hadoopa, ale to jest dość podobne). Luke Mam nadzieję, że to nie jest zbyt otwarte


title: Wspierać maszyny wektorowe jako sieci neuronowe?

text: To jest bardziej pytanie koncepcyjne. Dowiedziałem się o sieciach neuronowych i mam pewne wskazówki, jak działają maszyny wektorów nośnych. Czytałem gdzieś jednak, że biorąc pod uwagę odpowiednie jądro (czy to prawda?), SVM jest identyczny z siecią neuronową. Czy ktoś, kto to rozumie, może mnie oświecić, jak to jest możliwe?


title: Co jest złego w byciu małpą kodu? (Albo czym jest małpa kodu?)

text: Programiści mają tendencję do mówienia o byciu „małpką kodu” w uwłaczający sposób. "Nie pracuj _tam_, będziesz tylko kodową małpą!". Mam dwie oferty pracy, jedną w małej firmie, drugą w bardzo dużej firmie (ta sama pensja). Mój przyjaciel właśnie powiedział mi, że będę małpą kodu w dużej firmie i wie z własnego doświadczenia, że mała firma będzie bardziej satysfakcjonująca niż zredukowanie mnie do „małpy kodu”. Naprawdę nie rozumiem różnicy między „małpą kodu” a „prawdziwym” programistą. Proszę o rozwinięcie. Uwielbiam programować, więc pomysł siedzenia przy programowaniu komputerowym (tj. małpie kodu) nie wydaje mi się zły. Co programista rozumie przez „małpkę kodu”, jeśli lubi programować?


title: Czy mój opis modelu aktora jest prawidłowy?

text: Jeśli zrozumiałem, model aktora jest taki sam jak model obiektowy, ale z kilkoma różnicami: 1. KAŻDY obiekt odradza się w swoim własnym wątku i nie stanowi to problemu, nawet jeśli masz tysiące obiektów. 2. Aktorzy nie wchodzą w interakcję, wywołując funkcje i otrzymując wartości zwracane, ale zamiast tego wysyłają i odbierają komunikaty. 3. Jeśli nie naruszysz tego modelu, Twoja aplikacja będzie w pełni wykorzystywać współbieżność bez ryzyka wystąpienia warunków wyścigu. 4. Wszystko, co możesz zrobić w OO, możesz zrobić za pomocą aktorów, ale lepiej, problem polega na tym, że wszystko, co kodowaliśmy w ostatnich latach, było oparte na OO - ale przejście jest nieuchronne. Załóżmy na przykład, że muszę zdefiniować klasę/aktora wektorów 3D, utworzyć dwie instancje i wywołać na nich operację sumowania. Zorientowany na obiekt: class V3d { konstruktor V3d(x,y,z) //bla float x,y,z; suma funkcji(V3d b) { return V3d(x+b.x,y+b.y,z+b.z); } } //używając: mySum = V3d(1,2,3).sum(V3d(3,2,1)) //tworzy 2 instancje, sum, zwraca natychmiast drawPoint(mySum) //używa wyniku MODEL AKTORA: aktor V3d { konstruktor V3d(x,y,z) //bla float x,y,z; loop { odbierz 'sum',b:V3d : send(caller,'sumResult',V3d(x+b.x,y+b.y,z+b.z)) } } //za pomocą: send(V3d(1,2,3) ,'sum',V3d(3,2,1)) //tworzy 2 instancje, do pierwszej wyśle prośbę o zsumowanie z drugą pętlą { odbierz 'sumResult',result: drawPoint(result) //otrzymaj wynik i rysuje to } Czy to to? A może całkowicie się mylę?


title: Masz pytania dotyczące komercyjnego korzystania z oprogramowania open source?

text: Oto moja sytuacja: zakładam na boku małą firmę zajmującą się naprawą komputerów. Będę wykonywać wizyty domowe w mojej okolicy, ale w przyszłości chciałbym zapewnić zdalne wsparcie. Myślałem o rozwiązaniu opartym na VNC, ale nie wiem, czy praktyczne byłoby użycie istniejącego, czy nie. Odrzucałem pomysł napisania niestandardowego rozwiązania zdalnego wsparcia opartego na VNC. Miałby wszystkie moje własne sformułowania i logo, więc myślę, że wydawałby się o wiele bardziej profesjonalny. Po pierwsze, jak trudne byłoby coś takiego? Mam małe doświadczenie w kodowaniu i zwykle po prostu uczę się nowych rzeczy z konieczności, jak w tym przypadku. Poza tym, skoro opierałbym swoje oprogramowanie na otwartym kodzie źródłowym i używałbym go dla zysku, czy byłoby to dozwolone? Czy musiałbym ujawnić źródło? Dziękuję.


title: Codzienne kompilacje z SVN dla małego zespołu

text: Mam ogólne pytanie dotyczące najlepszych praktyk. Mam mały zespół pracujący nad projektem oprogramowania na średnią skalę, który obejmuje integrację kodu z różnych środowisk itp. Projekt jest samodzielnym oprogramowaniem desktopowym. W oparciu o wnioski wyciągnięte z podobnego wcześniejszego projektu, który nie powiódł się, staram się wdrożyć lepsze praktyki inżynierii oprogramowania. Chciałbym zacząć od zautomatyzowania codziennych kompilacji. Używamy SVN do kontroli źródeł, a wszyscy programiści pracują w bagażniku, łącznie ze mną. Moje pytanie jest dość proste: gdzie lokalnie wykonujemy codzienne kompilacje? Czy powinienem utworzyć inny folder na moim komputerze lokalnym, który jest folderem „codzienna kompilacja”? Czy powinienem skonfigurować maszynę wirtualną? Czy powinienem to wyssać i zrobić to w moim folderze deweloperskim? Całkiem dobrze rozumiem paradygmaty kontroli wersji. Głównie szukam sposobu, w jaki ludzie to implementują _w praktyce_.


title: Obliczanie kosztów projektu oprogramowania

text: _Zastrzeżenie: nie wiedziałem dokładnie, gdzie zadać to pytanie. Jeśli uważasz, że to pytanie nie jest odpowiednie dla Programistów @ StackExchange, możesz je migrować._ _Tło:_ Rozszerzając moje ostatnie pytanie, pojawiła się prośba o przetarg na system oprogramowania, który jest otwarty i zdecydowałem się go podjąć. Z zawodu jestem programistą i inżynierem i w tym procesie przetargowym muszę określić wycenę mojej oferty. Otrzymałem dokumentację składającą się wyłącznie z wymagań funkcjonalnych i niefunkcjonalnych. Muszę założyć czapkę kierownika projektu i pomyśleć o wszystkich aspektach, m.in. koszt wdrożenia projektu, potrzebne zasoby itp. Moje pytanie brzmi: Czy istnieje struktura projektu, którą mogę zastosować, która dzieli cykl projektu na etapy i odpowiadający im aspekt kosztów lub jak najlepiej obliczyć/przybliżyć koszt projekt?


title: Czy Ruby on Rails ma mieć stromą krzywą uczenia się, czy to tylko ja?

text: Jestem programistą samoukiem. Uczę się RoR od października z różną intensywnością (czasem cały dzień, czasami nic przez kilka tygodni). Wcześniej znałem tylko Javę, ale znałem ją całkiem dobrze. Słyszałem tyle szumu na temat RoR i tego, jak ma cię uszczęśliwiać, zwiększać produktywność itp. Jak dotąd tylko mnie to frustrowało. Nauczyłem się tego z książki Agile i podejrzewam, że część trudności może mieć związek z tym, że nie znam JavaScript i CSS oraz mam tylko niepewną znajomość baz danych i HTML. Ale najwyraźniej ukończenie projektu w książce Agile zajęło mi znacznie więcej czasu niż innym ludziom i nadal niewiele z tego pamiętam. Jest kilka rzeczy o Railsach, których po prostu nie mogę zrozumieć, np. kiedy używać symboli, a kiedy NIE, lub jak wywoływane są metody dynamiczne. Niedawno dostałem małe zadanie Railsowe, w którym zostałem poproszony o wprowadzenie małej zmiany w interfejsie. Zajęło mi to około 25 godzin i chociaż poczyniłem pewne postępy w zrozumieniu kodu, nadal nie mam pojęcia, jak postępować. Nie mogę nawet zapytać o Stack Overflow, ponieważ jest tak dużo kodu, który będę musiał podać, aby nadać kontekst. Więc moje pytanie jest w tytule: czy nauka RoR ma zająć dużo czasu, czy po prostu jestem powolna? Czy to możliwe, że uczyłem się z niewłaściwej książki? Mój styl uczenia się jest taki, że albo nic nie rozumiem, albo rozumiem wszystko, jeśli ma to sens.


title: Czy istnieje jakaś różnica funkcjonalna między niezmiennymi typami wartości a niezmiennymi typami odwołań?

text: Typy wartości to typy, które nie mają tożsamości. Gdy jedna zmienna jest modyfikowana, inne instancje nie są modyfikowane. Używając składni JavaScript jako przykładu, oto jak działa typ wartości. var foo = { a: 42 }; var bar = foo; bar.a = 0; // foo.a to nadal 42 Typy referencyjne to typy, które mają tożsamość. Kiedy jedna zmienna jest modyfikowana, inne instancje również. Oto jak działa typ referencyjny. var foo = { a: 42 }; var bar = foo; bar.a = 0; // foo.a ma teraz wartość 0 Zwróć uwagę, jak w przykładzie użyto obiektów mutowalnych, aby pokazać różnicę. Jeśli obiekty były niezmienne, nie można tego zrobić, więc tego rodzaju testowanie typów wartości/odniesień nie działa. ** Czy istnieje jakaś funkcjonalna różnica między niezmiennymi typami wartości a niezmiennymi typami odwołań? Czy istnieje jakiś algorytm, który może odróżnić typ referencyjny od typu wartościowego, jeśli są one niezmienne?** Odbicie jest oszustwem. Zastanawiam się nad tym głównie z ciekawości.


title: Jak uzasadnić klientowi wybór technologii?

text: W przypadku freelancera/kontraktowania klient zazwyczaj określa wymagania funkcjonalne, kryteria akceptacji itp., a szczegóły wdrożenia są w rękach programisty. Decydując się na wybór technologii dla programisty, musisz zachować równowagę między tym, co najbardziej znasz, technologicznie, czym wydaje się właściwe narzędzie, łatwością znalezienia programistów z tą umiejętnością i ich kosztami oraz kilkoma innymi czynnikami. Jestem w sytuacji, w której oceniłem swoje opcje i wybrałem nieco niejasną technologię open source, która, jak sądzę, zaprowadzi mnie tam szybciej, łatwiej i będzie łatwiejsza w utrzymaniu na dłuższą metę. Jest inaczej, ale myślę, że tego wymagają wymagania. Klient zapytał, czego zamierzam użyć do zbudowania rozwiązania, a teraz jest zaniepokojony, ponieważ nigdy wcześniej o tym nie słyszał. Powody mojego wyboru są głównie techniczne, podczas gdy klient nie (ale zna kilka modnych słów!). Wyjaśnienie tych technicznych przyczyn nie będzie łatwe i nie jestem pewien, czy i tak jest to właściwy sposób podejścia do tej sytuacji. I to jest moje pytanie: jaki jest właściwy sposób podejścia do tej sytuacji, aby wywołać jak najmniej bólu głowy u wszystkich zaangażowanych?


title: Jak decydujesz, jakiego rodzaju bazy danych użyć?

text: Naprawdę nie lubię nazwy „NoSQL”, ponieważ nie jest zbyt opisowa. Mówi mi, czym _nie są_ bazy danych, gdzie bardziej interesuje mnie, czym _są_ bazy danych_. Naprawdę uważam, że ta kategoria naprawdę obejmuje kilka kategorii baz danych. Po prostu próbuję uzyskać ogólne pojęcie o tym, do jakiej pracy każda konkretna baza danych jest najlepszym narzędziem. Kilka założeń, które chciałbym poczynić (i proszę Cię o zrobienie): 1. Załóż, że możesz zatrudnić dowolną liczbę błyskotliwych inżynierów, którzy są równie doświadczeni we wszystkich technologiach baz danych, jakie kiedykolwiek istniały. 2. Załóżmy, że masz infrastrukturę techniczną do obsługi dowolnej bazy danych (w tym dostępnych serwerów i administratorów, którzy mogą obsługiwać daną bazę danych). 3. Załóż, że każda baza danych ma najlepszą możliwą obsługę za darmo. 4. Załóżmy, że masz 100% wpisowego od kierownictwa. 5. Załóżmy, że masz nieskończoną ilość pieniędzy na rozwiązanie problemu. Teraz zdaję sobie sprawę, że powyższe założenia eliminują wiele ważnych kwestii związanych z wyborem bazy danych, ale skupiam się na ustaleniu, która baza danych jest najlepsza do pracy na poziomie czysto technicznym. Tak więc, biorąc pod uwagę powyższe założenia, pytanie brzmi: do jakich zadań każda baza danych (w tym zarówno SQL, jak i NoSQL) jest najlepszym narzędziem i dlaczego?


title: const vs readonly dla singletona

text: Po pierwsze, rozumiem, że są ludzie, którzy sprzeciwiają się używaniu singletonów. Myślę, że w tym przypadku jest to właściwe zastosowanie, ponieważ jest to ciągła informacja o stanie, ale jestem otwarty na różne opinie/rozwiązania. (Zobacz Wzorzec singleton i Kiedy nie należy używać wzorca singleton?) Po drugie, dla szerszego grona odbiorców: C++/CLI zawiera słowo kluczowe podobne do `readonly` z `initonly`, więc nie jest to pytanie ściśle typu C#. (Pole dosłowne a zmienna stała w C++/CLI) Uwaga dodatkowa: Omówienie niektórych niuansów dotyczących używania const lub readonly. Moje pytanie: Mam singletona, który łączy ze sobą różne struktury danych. Częścią tego, co udostępniam przez ten singleton, są listy i inne obiekty, które reprezentują niezbędne klucze lub kolumny w celu połączenia połączonych struktur danych. Wątpię, czy ktoś próbowałby zmienić te obiekty za pomocą innego modułu, ale chcę wyraźnie zabezpieczyć je przed tym ryzykiem. Więc obecnie używam modyfikatora "tylko do odczytu" na tych obiektach*. Używam tylko do odczytu zamiast const z listami, ponieważ czytam, że użycie const spowoduje osadzenie tych elementów w zestawach odwołujących się, a zatem wywoła przebudowę tych zestawów odwołujących się, jeśli / kiedy listy są / są modyfikowane. Wydaje się, że jest to mocniejsze połączenie, niż bym chciał, między modułami, ale zastanawiam się, czy mam obsesję na punkcie sporu. (Jest to pytanie nr 2 poniżej) Alternatywą, którą widzę, aby użyć "tylko do odczytu", jest uczynienie zmiennych prywatnymi, a następnie zapakowanie ich za pomocą publicznego pobrania. Trudno mi dostrzec zalety tego podejścia, ponieważ wydaje się, że kod opakowujący nie zapewnia wielu dodatkowych korzyści. (Jest to pytanie nr 1 poniżej) Jest wysoce nieprawdopodobne, abyśmy zmienili zawartość lub format list – są one kompilacją rzeczy, których należy unikać w każdym miejscu za pomocą magicznych ciągów. Niestety, nie cały kod został przekonwertowany na użycie prezentacji tych ciągów w tym singletonie. Podobnie nie wiem, czy zmienilibyśmy kontenery/klasy dla list. Więc chociaż zwykle argumentuję za zaletami enkapsulacji, jakie zapewnia opakowanie, po prostu nie czuję tego w tym przypadku. Reprezentatywna próbka mojej pojedynczej, publicznej, zamkniętej klasy mySingl { private static volatile mySingl sngl; prywatny obiekt statyczny lockObject = new Object(); public readonly Dictionary<string, string> myDict = new Dictionary<string, string>() { {"I", "index"}, {"D", "display"}, }; publiczne parametry wyliczenia { ABC = 10, DEF = 20, FGH = 30 }; public readonly List<parametry> specParms = new List<parametry>() { parms.ABC, parms.FGH }; public static mySingl Instance { get { if(sngl == null) { lock(lockObject) { if(sngl == null) sngl = new mySingl(); } } return sngl; } } private mySingl() { doCoś(); } } Pytania: 1. Czy w tym przypadku przyjmuję najbardziej rozsądne podejście? 2. Czy powinienem się martwić o const vs. readonly? 3. czy istnieje lepszy sposób przekazywania tych informacji?


title: Wersja wydawnicza a kompilacja nocna

text: Typowym rozwiązaniem jest posiadanie kompilacji CI (ciągłej integracji) działającej na serwerze kompilacji: będzie ona analizować kod źródłowy, tworzyć kompilacje (w debugowaniu) i uruchamiać testy, mierzyć pokrycie testów itp. Teraz innym znanym typem kompilacji jest „Nightly build”: wykonuj powolne rzeczy, takie jak tworzenie dokumentów kodu, tworzenie pakietów instalacyjnych, wdrażanie w środowisku testowym i uruchamianie automatycznych testów (smoke lub akceptacja) w środowisku testowym itp. Teraz pytanie: * Czy lepiej mieć trzecia osobna „kompilacja wydania” jako wersja wydania? * A może „Nightly build” w trybie wydania i używać go jako wydania? Czego używasz w swojej firmie? (Kompilacja wydania powinna również dodać jakiś rodzaj tagu do kontroli źródła potencjalnej wersji produktu).


title: Jakie są powody, dla których PHP jest bardziej popularne w świecie freelancerów?

text: W wielu witrynach freelancerów można zobaczyć wiele ogłoszeń o pracę dla PHP (wspieranego przez MySQL). Jednak oferty pracy dla .NET, Java, Ruby itp. to niewiele. Jakie są powody, dla których PHP jest tak popularne wśród freelancerów? Czy to ze względu na jego znaczenie? A może dlatego, że PHP jest darmowe? Powodem, dla którego zadaję to pytanie, jest to, że jestem programistą ASP.NET i chociaż widzę, że produktywność rozwoju ASP.NET jest wyższa (ze względu na fascynujące narzędzia, które ma), nadal nie przyciąga ona programistów tak bardzo, jak PHP. Chcę wiedzieć, czy brakuje mi tutaj czegoś, co powinienem wziąć pod uwagę, czy nie.


title: Projekt algorytmu do porównywania międzyczasów w wyścigu

text:
Muszę określić ranking wartości w tablicy bez zmieniania ich pozycji, aby móc wydrukować pozycję każdego międzyczasu obok rzeczywistej wartości międzyczasu w tabeli w ten sposób.

 Podział 1	 Podział 2	 Podział 3

 4,66 (1)	 5.12 (3)	 4.75 (2)

 Moja tablica = [4.66, 5.12, 4.75] i muszę przejść przez nią i wydrukować ranga, jak widać w nawiasie powyżej. Nie mogę sortować, ponieważ muszę to zrobić dla kilku miejsc po przecinku w tabeli html. Jakieś sugestie dotyczące wdrożenia tego algorytmu?


title: Strategie rozwoju zwiększające produktywność dla małych zespołów

text: Myślę, że jednym z najlepszych sposobów nauki i stania się lepszym programistą jest dzielenie się z innymi wiedzą zdobytą podczas pracy nad projektami osobistymi lub zawodowymi. Jednym ze sposobów na zrobienie tego w miejscu pracy jest poświęcenie około godziny w tygodniu i umożliwienie jednemu lub kilku członkom zespołu zaprezentowania swoich postępów w tej części kodu, nad którą pracowali. Jest to szczególnie przydatne, gdy każdy członek zespołu ma wyspecjalizowany zestaw umiejętności. Jakie są inne przydatne praktyki, które menedżerowie mogą wprowadzić, aby zwiększyć spójność zespołu i poprawić produktywność?


title: Wspólny termin branżowy dotyczący rejestrowania negatywnego?

text: Jedną rzeczą jest rejestrowanie czegoś, co wydarzyło się w kodzie, procesie lub procedurze. Inną sprawą jest rejestrowanie czegoś, co się nie wydarzyło. Na przykład, jeśli Twój system ETL ma co godzinę otrzymywać plik do importu, a plik nie dotarł w zwykłym wyznaczonym czasie, dobrze byłoby zarejestrować „co się nie stało”. Nazwałem to rejestrowaniem negatywnym, ale jestem ciekaw, czy istnieje na to powszechnie stosowany w branży termin – termin, który oznacza „rejestrowanie zarówno tego, co się wydarzyło **, jak i tego, co się nie wydarzyło**”. Dowolny pomysł?


title: Definicja „państwa”

text: Jaki jest dobry sposób na zdefiniowanie „stanu”, jak w zmiennej stanu lub maszynie stanów, dla nowego (wcześniej nie) programisty? Jakie są dobre sposoby na wyjaśnienie, dlaczego ta koncepcja jest przydatna do pisania oprogramowania? Czy pojęcie państwa jest powszechnie nauczane na początkowych kursach programowania lub w książkach?


title: Zabezpieczanie klienta->gra bazodanowa

text: OK, tworzę grę używając JavaScript i HTML5. Zmienne takie jak `map`, `x`, `y`, `level`, `exp`, itp. są przechowywane w JavaScript, aby śledzić. Na mojej stronie klienta zmienne JavaScript są przechowywane do gry wraz z grą. Co 5 sekund strona klienta wysyła wywołanie POST AJAX do bazy danych MySQL i pomyślnie ją aktualizuje. Jednak użytkownik może łatwo modyfikować zmienne JavaScript i oszukiwać się w grze. Następnie, gdy edytują zmienne JavaScript, POST przechwytuje je i aktualizuje, mimo że edytowali je nieetycznie. Jak więc temu zapobiec?


title: Jak nazwać proces wzięcia części funkcji i nadanie jej indywidualnej funkcji?

text: Wiem, że był na to **termin techniczny**. Po prostu nie pamiętam, co to było. Jeśli tytuł wymaga wyjaśnienia, oto co mam na myśli; Jeśli to jest stary kod: Result foobar(Param1,Param2,Param3) { kod, który wykonuje kod abc, który wykonuje kod xyz, który wykonuje asdf więcej, kod, który coś robi } i jest zmieniony na: SomeResult do_xyz(SomeParams) { kod, który wykonuje xyz } Wynik foobar() { kod, który wykonuje abc do_xyz(args); kod, który robi asdf więcej kodu, który coś robi }


title: Implementacja niestandardowego „Zapamiętaj mnie” za pomocą Stripe

text: Wdrożenie **remember me** ze Stripe, bez korzystania z opcji „Checkout” (nieobsługiwane w PhoneGap), wydaje się być w porządku przy użyciu ścieżki: **Pierwszy raz:** 1. Poproś o token po stronie klienta przy użyciu informacji o karcie . 2. Utwórz klienta po stronie serwera za pomocą tokena. 3. Po potwierdzeniu obciążyć klienta. **Drugi czas:** 1. Sprawdź, czy aktualny użytkownik jest klientem Stripe, prosząc o informacje z naszego serwera. 2. Jeśli jest klientem Stripe, pokaż "użyj karty kredytowej w pliku" zamiast zwykłego formularza CC. 3. Po potwierdzeniu obciążyć klienta. Brakuje jednak jednego ważnego elementu wygody — ostatnich czterech cyfr numeru karty. Większość witryn informuje o używanej karcie przed dokonaniem płatności, co jest bardzo ważne w przypadku konieczności wymiany karty. Widziałem, że możesz odzyskać opłaty, które pozwoliłyby mi uzyskać ostatnie cztery cyfry. Czy to zła praktyka ciągnąć to i pokazywać? Czy ktoś ma na myśli alternatywne rozwiązania?


title: Czy niestandardowy język skryptowy wymaga własnego kompilatora/asemblera?

text: A może najpierw skrypt jest konwertowany na znany język, taki jak C++? A jak ogólnie można zintegrować język skryptowy z, powiedzmy, silnikiem gry?


title: Śledzenie wkładów od współtwórców, którzy nie używają git

text: Mam centralne repozytorium git zlokalizowane na serwerze. Mam wielu współpracowników, którzy nie znają się na technologii, nie mają dostępu do serwera i nie wiedzą nic o git. Ale mogą wnieść swój wkład za pośrednictwem strony internetowej projektu. Każdy z nich loguje się przez przeglądarkę internetową i uczestniczy w projekcie. Skonfigurowałem wszystko tak, aby po zalogowaniu wkład każdego użytkownika był umieszczany w sklonowanym repozytorium na serwerze, które jest przeznaczone specjalnie dla tego użytkownika. Okresowo loguję się na serwer, odwiedzam każde z ich repozytoriów i robię git diff, aby upewnić się, że nie zrobili nic złego. Jeśli wszystko jest w porządku, zatwierdzam ich zmiany i umieszczam je w centralnym repozytorium. Oczywiście muszę ręcznie przyjrzeć się ich zmianom, aby móc dodać odpowiedni komunikat dotyczący zatwierdzenia. Ale chciałbym też śledzić, kto dokonał zmian. Dokonuję zatwierdzenia, a ja (i serwer sieciowy) jesteśmy jedynymi użytkownikami, którzy faktycznie piszą cokolwiek na serwerze. Mogłem to śledzić w wiadomościach o zatwierdzeniu. Chociaż wydaje mi się to błędne, jeśli jest to moja jedyna opcja, czy istnieje sposób, aby sklonowane repozytorium userx zawsze zawierało "userx: " przed każdą dodaną wiadomością o zatwierdzeniu, abym nie musiał przypominać sobie, które repozytorium użytkownika jestem w? A może nawet lepiej, czy istnieje łatwy sposób na dokonanie zatwierdzenia, ale w taki sposób, w jaki kredytuję użytkownika, w którego sklonowanym repozytorium się znajduję?


title: Wiedza i umiejętności wymagane do Sharepoint

text: Właśnie zastanawiałem się, jakie umiejętności i technologie muszę znać, aby rozpocząć ścieżkę kariery w Sharepoint. Wiem, że zależy to przede wszystkim od stanowiska, o które się ubiegam, ale musi istnieć kilka podstawowych umiejętności, które są wspólne dla większości stanowisk w Sharepoint. Btw, obecnie jestem studentem CS, który nauczył się tylko Java.


title: Jedna klasa wzorcowa czy wiele podobnych?

text: Powiedzmy, że próbuję modelować różne obiekty, które są praktycznie identyczne, a jedyną różnicą są ich zmienne klas. Czy lepiej byłoby utworzyć jedną standardową klasę i po prostu wywołać konstruktora z określonymi zmiennymi, czy utworzyć wiele (w tym przypadku ponad 100) zasadniczo identycznych klas i na stałe zakodować ich zmienne klas (które nigdy się nie zmienią)? Żeby było jasne: * Identyczne metody * Identyczne nazwy zmiennych klas, ale różne wartości * Identyczna zamierzona funkcjonalność Aby było jasne, mój język (Python) nie obsługuje interfejsów, o których jestem świadomy - niektóre inne podobne pytania wydawały się uzyskiwać odpowiedzi zalecając to. Inną opcją, która wydaje mi się sensowna, byłoby utworzenie klasy bazowej z każdym polem i metodą, a następnie utworzenie grupy unikalnych klas podrzędnych, które zawierają ich unikalne wartości. Nakład pracy związany z utworzeniem wszystkich klas potomnych nie ma dla mnie znaczenia - napisałem program, który szybko analizuje plik tekstowy (który ma wszystkie unikalne wartości) i może szybko zapisać wszystkie klasy do pliku .py i z łatwością. Z tego samego powodu wprowadzanie zmian w przyszłości jest dość łatwe. (nieco) Podobne pytania * Utwórz wiele podobnych klas lub tylko jedną * Dobra praktyka programowania dla podobnych klas potomnych


title: Co myślisz o przeglądarkach wchodzących w zawiłości niskiego poziomu?

text: Pracowałem na stronie internetowej z FF4 i podczas zmiany rozmiaru elementu za pomocą Firebuga, FF4 właśnie zawiesił mój sterownik karty graficznej nVidia. Na szczęście Windows 7 był w stanie mi pomóc przez naprawienie tego poważnego błędu i mogłem ponownie całkowicie odzyskać moją pracę. Więc moje pytanie brzmi, czy twórcy przeglądarek powinni wchodzić w zawiłości sprzętowe niskiego poziomu, coś, co było zarezerwowane tylko dla twórców gier i złożonego oprogramowania graficznego?


title: Dlaczego tak wiele języków jest przekazywanych przez wartość?

text: Nawet języki, w których masz wyraźne manipulacje wskaźnikiem, takie jak C, są zawsze przekazywane przez wartość (możesz_ przekazywać je przez referencję, ale nie jest to zachowanie domyślne). Jaka jest z tego korzyść, dlaczego tak wiele języków jest przekazywanych przez wartości i **dlaczego inne są przekazywane przez odniesienie** ? (Rozumiem, że Haskell jest przekazywany przez odniesienie, chociaż nie jestem pewien).


title: Czy oddzielić metody, czy nie

text: Jestem nowy w javie i chcę nauczyć się najlepszych praktyk kodowania i zrozumieć, dlaczego jedna metoda jest lepsza od innej pod względem wydajności i gdy kodowanie staje się bardziej skomplikowane. To tylko przykład, ale mogę wykorzystać te zasady do zastosowania gdzie indziej. Potrzebuję opcji wyświetlania `stuff` i umieściłem metodę `stuff` oddzielnie od metody pytającej, czy użytkownik chce wyświetlić `stuff`, ponieważ `stuff` ma dużo linijek kodu. Dla czytelności zrobiłem to: public static void displayStuff () { String input = getInput ("Wyświetlanie rzeczy? T/N \n"); if (input..equalsIgnoreCase ("Y")) { stuff (); } else if (input.equalsIgnoreCase ("N")) { //zakończ program } else { //wyrzuć błąd System.out.print("Błąd! Wprowadź T lub N: \n"); } } private static String stuff () { //do wielu rzeczy tutaj return stuff (); } Lub public static void displayStuff () { String input = getInput ("Wyświetlanie rzeczy? T/N \n"); if (input..equalsIgnoreCase ("Y")) { //do wielu rzeczy tutaj rzeczy; } else if (input.equalsIgnoreCase ("N")) { //zakończ program } else { //wyrzuć błąd System.out.print("Błąd! Wprowadź T lub N: \n"); } } Czy lepiej trzymać je razem i dlaczego? Ponadto, czy druga metoda powinna być prywatna czy publiczna, jeśli proszę o dane w klasie? _Nie jestem pewien, czy to temat tutaj. proszę doradź._


title: Czy dobrą praktyką jest używanie funkcji tylko do scentralizowania wspólnego kodu?

text: Często spotykam się z tym problemem. Na przykład, obecnie piszę funkcję odczytu i funkcję zapisu, i obie sprawdzają, czy `buf` jest wskaźnikiem NULL i czy zmienna `mode` mieści się w określonych granicach. To jest duplikacja kodu. Można to rozwiązać, przenosząc go do własnej funkcji. Ale czy powinienem? Będzie to dość anemiczna funkcja (niewiele robi), raczej zlokalizowana (więc nie do ogólnego celu) i nie działa sama z siebie (nie mogę dowiedzieć się, do czego jej potrzebujesz, chyba że widzisz, gdzie to jest używany). Inną opcją jest użycie makra, ale o funkcjach chcę porozmawiać w tym poście. Czy powinieneś użyć funkcji do czegoś takiego? Jakie są plusy i minusy?


title: Jak się czujesz, gdy poproszono Cię o kodowanie podczas rozmowy kwalifikacyjnej?

text: Widziałem wiele komentarzy na temat dobrych pytań i łamigłówek, które wymagają od potencjalnych programistów rozwiązania podczas rozmowy kwalifikacyjnej. Osobiście miałem kilka wywiadów, w których przeprowadzający wywiad prosił mnie o napisanie jakiegoś fragmentu kodu lub rozwiązanie problemu podczas rozmowy kwalifikacyjnej i zawsze wypadałem bardzo słabo w tych „testach”. Powód jest prosty, jako programista, który spędza dni na rozmowach z komputerami, muszę się przygotować i „przełączyć biegi” na „tryb wywiadu”. Przygotowuję się do zrobienia dobrego wrażenia. Kiedy programuję, jestem bardzo skoncentrowany i jestem zupełnie inny niż wtedy, gdy jestem „interpersonalny”. Po prostu nie mogę dostać się do „strefy”, kiedy muszę też być uroczym i dowcipnym potencjalnym pracownikiem. Czuję, że prosząc programistę o udowodnienie swoich umiejętności podczas rozmowy kwalifikacyjnej, jedyne, co robisz, to dowiadywanie się, czy potrafią kodować pod presją i bez trudu. Prawie nie ma możliwości określenia, jak byś sobie poradził w „prawdziwej” sytuacji rozwojowej. Być może, jeśli szukasz kogoś, kto potrafi kodować i jednocześnie czatować, widzę, jak byłoby to korzystne. Ale myślę, że pomijasz potencjalnych kandydatów, którzy po prostu nie radzą sobie dobrze w tak sztucznym środowisku. Chociaż doceniam to, że potencjalny pracodawca chce zobaczyć, co potrafię, to nie sądzę, żeby rozmowa kwalifikacyjna była miejscem na taki test. Mam na myśli, przypuśćmy, że praca dla kierowcy ciężarówki wymaga, abyś prowadził podczas rozmowy kwalifikacyjnej. Jak to się naprawdę dobrze kończy? Więc jestem ciekawa, co inni myślą o takich sytuacjach. Czy oblałeś rozmowy kwalifikacyjne, ponieważ nie byłeś we właściwym nastroju? Czy nie udało ci się zrobić dobrego wrażenia interpersonalnego, ponieważ byłeś zbyt roztargniony, próbując rozwiązać problem? Jeśli jesteś kierownikiem ds. rekrutacji lub kimś, kto udziela wywiadów, czy w ogóle myślisz o takich rzeczach? Czy to naprawdę ważne, aby ktoś dobrze wypadł w rozmowie kwalifikacyjnej? EDYCJA: Aby wyjaśnić, nie jestem przeciwny testowaniu kandydatów. Moje obawy dotyczą testowania podczas rozmowy kwalifikacyjnej. **Zobacz też** : Jakie są plusy i minusy dla pracodawcy pytań kodowych podczas rozmowy kwalifikacyjnej? patrząc na to z punktu widzenia ankietera.


title: Czy istnieje nazwa umożliwiająca szybkie odnalezienie odpowiedniego kodu?

text: Zauważyłem, że właściwość baz kodu, którą lubię włamywać, polega na tym, że można szybko znaleźć odpowiedni kod dla jakiejś funkcji, nie wiedząc zbyt wiele o bazie kodu. Na przykład wyszukanie etykiety w GUI i natychmiastowe wyświetlenie kodu, który implementuje tę funkcję. Wydaje się to być w bezpośrednim konflikcie z warstwami abstrakcji, gdzie etykieta jest prawdopodobnie ukryta za modułem I18N, a logika biznesowa jest prawdopodobnie dalej usunięta w ramach MVC. (Można to złagodzić, na przykład umieszczając etykiety GUI w komentarzach.) Jest to oczywiście część pielęgnowalności, ale czy istnieje nazwa dla tej konkretnej, pożądanej właściwości?


title: Jak poprawnie wyświetlić prawa autorskie podczas korzystania z komponentów z wieloma licencjami zezwalającymi?

text: Piszę komercyjną aplikację, która będzie wykorzystywać niektóre otwarte biblioteki licencjonowane na różnych licencjach. Na przykład jedna biblioteka będzie licencjonowana w ramach licencji Apache 2.0, inna będzie korzystać z licencji LGPL. Obie licencje pozwalają na użycie w aplikacjach komercyjnych, ale różnią się sposobem, w jaki przyznawane są atrybucje licencjonowanego dzieła. Jest to moja pierwsza komercyjna aplikacja, która korzysta z bibliotek firm trzecich i chcę zrobić to, co należy, aby licencje firm trzecich były spełnione. Pytam nie tylko, co powinienem robić, ale także czego robić nie wolno. Jaki jest najlepszy sposób na wyświetlanie tych licencji?


title: Co oznacza „OOP ukrywa państwo”?

text: W jednej z wielu wypowiedzi anty-OOP na cat-v.org znalazłem fragment Joe Armstronga, w którym pojawiło się kilka zarzutów przeciwko modelowi OOP, z których jeden był następujący: > Zarzut 4 – Obiekty mają stan prywatny > > Stan jest korzeniem wszelkiego zła. W szczególności należy unikać funkcji ze skutkami ubocznymi >. >> O ile stan w językach programowania jest niepożądany, o tyle w rzeczywistym świecie stan jest obfity. Bardzo interesuje mnie stan mojego konta bankowego i kiedy > wpłacam lub wypłacam pieniądze z mojego banku, oczekuję, że stan mojego konta bankowego > będzie poprawnie aktualizowany. > > Biorąc pod uwagę, że państwo istnieje w realnym świecie, jakie udogodnienia powinien zapewniać język programowania, aby radzić sobie z państwem? > > OOPL mówią „ukryj stan przed programistą”. Stany są ukryte i > widoczne tylko poprzez funkcje dostępu. Konwencjonalne języki programowania > (C, Pascal) mówią, że widoczność zmiennych stanu jest kontrolowana przez reguły zakresu > języka. Czysto deklaratywne języki mówią, że nie ma > państwa. Globalny stan systemu jest przenoszony na wszystkie funkcje i > pochodzi ze wszystkich funkcji. Mechanizmy takie jak monady (dla FPL) i DCG > (języki logiczne) są używane do ukrywania stanu przed programistą, aby mogli > programować „tak, jakby stan nie miał znaczenia”, ale mieć pełny dostęp do stanu > systemu w razie potrzeby niezbędny. > > Opcja „ukryj stan przed programistą” wybrana przez OOPL jest gorszym > możliwym wyborem. Zamiast ujawniać stan i próbować znaleźć sposoby na zminimalizowanie uciążliwości państwa, ukrywają to. Co dokładnie przez to rozumiemy? Mam bardzo mało doświadczenia na niskim poziomie lub proceduralnym, głównie OOP, więc prawdopodobnie wyjaśnia to, jak bardzo się z tym nie znam. A z bardziej nowoczesnego punktu widzenia, teraz, gdy większość histerii obiektowej minęła (przynajmniej z tego, co mogę powiedzieć), jak dokładne/trafne jest według was ten fragment? Dzięki za pomoc.


title: Django CBV kontra FBV

text: Przy tworzeniu dużego projektu Django z wieloma aplikacjami, moją pierwszą myślą było użycie widoków opartych na klasach (co podkreślają samouczki Django). Zauważyłem jednak, że ze względu na wiele dostosowań do każdej aplikacji (wiele formularzy na każdej stronie itp.), stało się to bardzo żmudne i znacznie łatwiej było po prostu zaimplementować widoki oparte na funkcjach, w których po prostu dodałem dekoratory, takie jak `@require_GET` i `@login_required` dla łatwego uwierzytelniania i metod nieobsługiwanych wiadomości i jestem całkowicie przekonany, że nigdy nie wrócę do CBV. Czy z perspektywy długoterminowego wsparcia ktoś miał problemy z wyborem FBV zamiast CBV? Czy robię coś w perspektywie krótkoterminowej, co zaszkodzi na dłuższą metę i być może można by to rozwiązać za pomocą niestandardowych widoków opartych na klasach?


title: Architektura narzędzia do gromadzenia danych diagnostycznych dla całej aplikacji?

text: Mój właściciel produktu chce, abyśmy zgłaszali więcej informacji o stanie produktu, gdy użytkownik kontaktuje się z obsługą klienta za pośrednictwem formularza w aplikacji. Formularz ostatecznie powoduje wysłanie wiadomości e-mail na listę e-mail obsługi klienta i obsługę w innym miejscu. Część, z którą się zmagam, to jak rozszerzyć mój istniejący projekt iOS, aby umożliwić niektórym kontrolerom zbieranie informacji diagnostycznych z różnych różnych klas i robić to w sposób minimalnie inwazyjny i nie spowoduje bólu głowy, jeśli później dokonasz refaktoryzacji . ## Bloki Eksperymentowałem z kilkoma pomysłami, w tym posiadaniem interfejsu, który pozwala dowolnej klasie zarejestrować blok do wykonania podczas próby zebrania informacji diagnostycznych: [DiagnosticCollectionController addBlockForDiagnosis:^(DiagnosticCollectionController *controller){ // Dodaj tutaj kilka informacji do kontrolera do wysłania w raporcie diagnostycznym }]; ## Powiadomienia Innym pomysłem, jaki miałem na myśli, było nadanie przez kontroler diagnostyczny powiadomienia, gdy jest gotowy do rozpoczęcia zbierania informacji, aby inne obiekty mogły dołączyć to, czego potrzebują. (Potencjalną) zaletą jest to, że mogę uciec od używania bloków, dzięki czemu mogę uniknąć problemów z kopiowaniem bloków: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someSelectorToHandleDiagnosticPopulation:) name:DiagnosticCollectionControllerWillSendDiagnostics object:someDiagnosticController] // Elsewhere - (void) someSelectorToHandleDiagnosticPopulation:(NSNotification *)note { DiagnosticController *controller = [obiekt notatki]; [kontroler addDiagnosticData:someDataDictionary]; }


Korzystanie z globalnych sprawia, że kod jest trudny do przetestowania, przez co jest bardziej podatny na błędy, a także nie jest bezpieczny i nieprzewidywalny. Dlatego przekazujemy żądane zmienne wewnątrz funkcji/obiektu. Więc moje pytanie jest proste: **Czy $_POST, $_GET itp. naruszają zasadę enkapsulacji?** Myślę, że aby zachować kontrolę nad tymi zmiennymi w sposób OO, idealnym rozwiązaniem byłoby dodanie kilku takich linii do kodu: // Konwertuj tablicę $_GET na obiekt $get = json_decode(json_encode($_GET), FALSE); // stackoverflow.com/a/1869147 // Powstrzymaj dołączanie z dowolnego miejsca unset($_GET); // Mały przykład tego, co można zrobić później $DB = new PDO(/* ... */); $Osoba = nowa osoba($DB, $get->id); Nigdzie tego nie widziałem, nawet samouczka ani rekomendacji. Ponadto wyraźnie widać, że powyższy kod jest znacznie łatwiejszy do przetestowania niż ten, który zawiera `$Person = new Person($DB, $_GET['id']);` czy nawet (brzydki) `$Person = new Person($DB);` ponieważ możesz użyć atrapy obiektu `$get`. Czy powyższy kod jest we właściwym kierunku, czy czegoś mi brakuje? **EDYTUJ:** Po pewnym badaniu (framework Zend i Cake PHP), jak zasugerował Alexander Kuzmin, wydaje się, że jest to właściwe rozwiązanie. Prawdopodobnie są zbyt duże, abym mógł się dokopać do kodu bankomatu, ale będę o tym pamiętać.


title: Czy przesyłanie tokenów dostępu za pośrednictwem nagłówków HTTP jest bezpieczne?

text: Jest to pierwsza usługa sieciowa RESTful i niepokoi mnie kwestia bezpieczeństwa. Czy przesyłanie tokena dostępu za pośrednictwem nagłówków HTTP jest bezpieczne? Na przykład: POST /v1/i/resource HTTP/1.1 Content-Type: application/x-www-form-urlencoded Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e Access_token: 080ab6bd49b138594ac9647dc929122adfb983oc8 parametr2 Ponadto, co należy zdefiniować jako atrybut `scope` dla każdego `tokenu dostępu`


title: Silverlight UI i PRISM - jak prawidłowo rozłożyć komponenty?

text: Tak teraz wygląda moje rozwiązanie. Doszło do punktu, w którym moje kontrolki potrzebują odniesienia do modelu. Naprawdę trudno jest oddzielić infrastrukturę, stałe, elementy sterujące i model. Dla rozmiaru i modularności pobierania MAIN i Modules (jest ich wiele) pozostaną oddzielne. Ale wydaje się, że do tych podstawowych bibliotek odwołują się wszystkie moduły i MAIN. Nie widzę sensu trzymania ich w osobnych projektach. Jestem pewien, że wszyscy mieliście ten sam problem. Zastanawiam się więc, czy powinienem nadal próbować i trzymać je oddzielnie / luźno połączone (trudno teraz zrobić bez odwołań cyklicznych), czy można je połączyć w jeden projekt infrastrukturalny? Mój model ma wiele metadanych i ta metadata jest potrzebna w kontrolkach i innych miejscach. Tam jest ciasno. ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/GvAus.jpg)


title: Ponowne wykorzystanie bazy kodu MVC4 / wdrożenie MVC4 jako samodzielnej aplikacji komputerowej?

text: Mamy aplikację MVC4, którą musielibyśmy również rozpowszechniać jako samodzielną (bez połączenia sieciowego) aplikację komputerową. Zamiast odbudowywać interfejs HTML/JS, chcielibyśmy go ponownie wykorzystać, więc w istocie dystrybuujemy samoobsługową aplikację .NET MVC opartą na widoku HTML. To, co _z grubsza_ wyobrażamy, to: MVC4 .NET DLL + biblioteki JS + samoobsługowy rdzeń HTTP + widok przeglądarki własnoręcznie/wbudowanej. W przypadku tej samodzielnej aplikacji komputerowej zajmujemy się tylko systemem operacyjnym Windows. Pytanie: Czy to praktycznie wykonalne, czy tylko teoretyczny pomysł? Jak praktycznie byśmy to zrobili? Staramy się zminimalizować fragmentację bazy kodu (i zduplikowaną konserwację). W każdym razie musimy obsługiwać IE dla wersji „online” aplikacji MVC. Wyjaśnienie: Doświadczenie użytkownika, które chcielibyśmy mieć, to: * Pojedynczy duży plik .exe, który zawiera wszystkie znajdujące się w nim zasoby * Dwukrotne kliknięcie uruchamia prostokątne okno, w którym renderowana jest aplikacja HTML. Byłoby to podobne do tego, w jaki sposób aplikacje na iOS mają „widok HTML”, który wykorzystuje wbudowany renderer HTML systemu operacyjnego (w systemie Windows zakładam, że jest to IE?)


title: Jak pisać testy jednostkowe bez wyśmiewania danych

text: Mój projekt nie pozwala mi na mock danych, więc używam sqlite jako testowej bazy danych, która ma minimalną ilość danych do uruchomienia testów jednostkowych. Poniżej znajduje się pseudokod //metoda do przetestowania public IList<Funds> GetFunds() { List<Funds> objFundsList = //pobiera dwa rekordy z bazy danych sqlite; return objFundsList; } //Metoda testowa public void Check_If_Get_Funds_Returns_List_of_Funds() { FundsService obj = new FundsService(); var lstFunds = obj.GetFunds(); Assert.AreEqual(2,lstFunds.Count()); //Czy muszę pobrać tutaj pierwszy element, aby sprawdzić, czy powiązania dla funduszu są udane var fund = obj.GetFunds().First(); Assert.AreEqual("test",fundusz.Nazwa); } Ponieważ nie używam makiety obiektów w pamięci, nie mogę zrobić sequenceequal. W tym scenariuszu, które inne testy mogę uwzględnić.


title: Jakie są opcje konfiguracji środowiska UNIX do nauki języka C przy użyciu języka programowania C Kernighana i Richiego?

text: Jestem początkującym programistą i eksperymentowałem z Javascriptem, jQuery i PHP, ale czułem, że nie rozumiem tego, co robię. Tak więc, po przeczytaniu odpowiedzi Joela Spolsky'ego na pytanie na tej stronie (którego teraz nie mogę znaleźć!), wróciłem do podstaw i przeczytałem „Kod” Charlesa Petzolda i mam zamiar przejść do języka programowania C Kernighana i Richiego . Chcę się tego nauczyć w środowisku UNIX, ale mam dostęp tylko do systemu Windows. Mam Ubuntu 12.04 działający na zwirtualizowanej maszynie za pośrednictwem VMWare Playera i kodowałem trochę w terminalu. Czy używanie dystrybucji Linuksa jest jedyną opcją programowania w środowisku UNIX w systemie Windows? A jakie są kolejne kroki, aby zacząć programować w C w systemie UNIX i skąd mam wziąć kompilator?


title: Jak zaimplementować edytor tekstu w przeglądarce?

text: To jest czysto ćwiczenie z samodoskonalenia i edukacji. Próbuję zaimplementować rozszerzenie do edytora tekstu vi-like w przeglądarce. Czy ktoś może udzielić porady lub wskazówek, gdzie i jak powinienem zacząć?


title: Pisanie kompilatora, którego celem jest niestandardowa maszyna wirtualna

text: Od jakiegoś czasu utknąłem na koncepcji. Piszę języki-zabawki, które są ostatnio interpretowane. Postanowiłem, że chcę przejść dalej i spróbować stworzyć kompilator. Tak naprawdę nie chcę używać czegoś takiego jak LLVM, ale zamiast tego chcę utworzyć własną maszynę wirtualną opartą na stosie do generowania kodu. Moje pytanie brzmi, jak mam to obejść? Albo raczej, jakie są dobre odniesienia do budowania kompilatora, który generuje kod dla niestandardowej maszyny wirtualnej, i wreszcie -- jakie jest formalne określenie takiego kompilatora?


title: W jaki sposób nagłówki i/lub treść podpisu zapewniają bezpieczeństwo?

text: Zabezpieczam usługę sieci Web WCF za pomocą zabezpieczeń `TransportWithMessageCredential`, która używa certyfikatów. Muszę więc wybrać między **podpisywaniem** nagłówków i treści a **podpisywaniem i szyfrowaniem**. Teraz moje pytanie brzmi, po przeczytaniu _Zrozumienie poziomu ochrony_, jaka jest zaleta samego podpisywania? Fakt, że WCF zauważy, że ktoś namieszał z przesłaniem i zamierza go odrzucić, czy się mylę? Z góry dziękuję.


title: Jaki był najgorszy fragment kodu, który naprawiłeś, z którego jesteś dumny?

text: Miałem kilka, z których jestem dumny, a niektóre z nich napisałem sam kilka lat temu. Nie musi to być koniecznie błędne, po prostu zły kod.


title: Programowanie w parach. Jak?

text: Zawsze chcę spróbować programowania w parach, szczególnie z kimś, kto jest bardziej doświadczonym programistą niż ja. Ale jak to zrobić? Czy są jakieś strony internetowe, na których ludzie mogą współpracować i znaleźć partnerów lub coś innego?


title: W prostym języku angielskim, czym jest rekurencja?

text: Idea rekurencji nie jest zbyt powszechna w świecie rzeczywistym. Tak więc wydaje się to nieco mylące dla początkujących programistów. Chociaż, jak sądzę, stopniowo przyzwyczajają się do tej koncepcji. Więc co może być dla nich miłym wytłumaczeniem, aby łatwo pojąć ten pomysł?


title: Masz problem ze zrozumieniem rekurencji

text: Właśnie zacząłem uczyć się o rekurencji, ale trudno mi to zrozumieć. Prosimy o polecanie jakichkolwiek linków lub książek, które szczegółowo wyjaśniają rekurencję.


title: Jakiego montażu powinienem się nauczyć?

text: Chciałbym się dowiedzieć o inżynierii odwrotnej, ale jestem trochę zdezorientowany z wieloma różnymi złożeniami. Że tak powiem... Pozwól, że wyjaśnię! Za każdym razem, gdy zaczynam czytać samouczek dotyczący montażu, stwierdzam, że jest to dla MC8600, x86 lub innego procesora. Znalazłem tutaj wyjaśnienie, dlaczego jest tak wiele złożeń. A tu i tu znalazłem kilka przydatnych rzeczy o RE i montażu. Niemniej jednak nadal trochę się boję, że będę się uczyć montażu przez 2-3 miesiące, potem wezmę jakąś aplikację "z realnego świata" i nie będę w stanie zrobić RE bo znam np. montaż MC8600 i to jest skompilowany na procesorze x86. Pytanie więc brzmi... Jeśli chcę nauczyć się asemblera, który można wykorzystać w nowoczesnej aplikacji (nie tylko dla RE), jakiego asemblera powinienem się nauczyć? Z góry dziękuję!


title: Projekty Social Impact

text: Pracuję w firmie konsultingowej zajmującej się oprogramowaniem, która ma wielu wolontariuszy dostępnych przez około półtora miesiąca na raz (kiedy jesteśmy między projektami i nauką) i chcielibyśmy zacząć współtworzyć projekty open source, które mieć pozytywny wpływ społeczny. Masz pomysł, na jakie projekty możemy się przyjrzeć? Ograniczenia są następujące: * Zbudowany na dość nowoczesnym języku i stosie, który jest odpowiedni dla początkujących, ale ma szerokie zastosowanie - Java+Spring+Hibernate / RoR / Groovy+Grails - w zasadzie stos, nad którym spodziewalibyśmy się pracować również w innych projektach. * Ma / ma na celu pozytywnie wpływać na życie ludzi - jak Ushahidi, OpenMRS, RapidFTR, FrontlineSMS itp. * Ma dobrze zdefiniowane historie i wymagania lub ma właścicieli, którzy chcą współpracować z naszymi analitykami, aby je opracować. Jakieś pomysły?


title: Algorytm uczenia maszynowego do optymalizacji ogrzewania/oświetlenia

text: Pracuję nad projektem, w którym opracowuję interfejs, który uczy się, jak zwykle używasz przestrzeni i stara się stworzyć najbardziej odpowiednią strategię sterowania ogrzewaniem/oświetleniem. Zrobiłem trochę badań w obszarze technik uczenia maszynowego, ale zastanawiałem się, czy istnieją jakieś zalecenia dotyczące tego, który algorytm uczenia sprawdzi się najlepiej w tym scenariuszu. Mam wiele różnych parametrów wejściowych: zaprojektowałem tani bezprzewodowy czujnik, który co 8 sekund informuje o wykryciu światła, temperatury, wilgotności i ruchu... Korzystam również z informacji o pogodzie na żywo przez internet dla warunków zewnętrznych... Przechowuję również wszystkie różne zmiany interfejsu użytkownika (przełączniki, suwaki itp.), więc mam nadzieję, że będę mógł powiedzieć, kiedy ludzie faktycznie zmieniają określone ustawienia i odpowiednio się dostosowują. Jeśli chodzi o algorytmy uczenia się... istnieje wiele różnych opcji, w tym (by wymienić tylko kilka): * Średnie K * Drzewo decyzyjne * Naiwne Bayesa * Sieci neuronowe * Ukryte modele Markowa * Najbliżsi sąsiedzi Która z nich byłaby najbardziej idealna dla scenariusza, do którego się odnoszę: Posiadanie wielu źródeł danych i skorelowanie ich z danymi wejściowymi użytkownika w celu przewidywania przyszłych pragnień i odpowiedniego planowania.


title: Jak programista po stronie serwera może przetrwać na pozycji, która oczekuje zaangażowania front-endu?

text: Zajmuję się tworzeniem serwerów back-end. **Bardzo** zaplecza. Teraz pracuję na stanowisku, na którym muszę również zadbać o front-end. Nic nadzwyczajnego, ale muszę też umieć kodować na front-end. Jak powiedziałem, żadnych wymyślnych rzeczy, ponieważ nie jestem projektantem. Znam kilka bardzo podstawowych rzeczy na temat html/css/js, ale większość czasu spędzam na googlowaniu, kiedy muszę coś zrobić. Więc marnuję czas. **Aby podać przykład**, musiałem przesłać plik ze strony internetowej, ale nie wiedziałem, że istnieje tag `input` przeznaczony specjalnie do przesyłania plików. Więc spędzam trochę czasu na googlowaniu, aby dowiedzieć się, jak to zrobić. Więc nie jestem pewien, czy na przykład powinno to być coś, co powinienem był wiedzieć i czy jest to luka, którą mam, czy nie. Interesuje mnie więc to, w co powinienem zainwestować czas, aby „opanować”, aby to, co muszę na co dzień robić, mogłem zrobić, nie poświęcając zbyt wiele czasu na szukanie swojej drogi. Krótko mówiąc, interesuje mnie zrozumienie, na czym powinienem się skupić. **Aby podać przykład:** W CSS myślę, że powinienem zainwestować czas w selektory atrybutów lub pozycjonowanie, ale spędzanie czasu na nauce czcionek to strata czasu dla moich potrzeb. Czy się mylę? Mając to na uwadze, interesuje mnie, co _musi_ wiedzieć, aby przetrwać w html/css/javascript? **AKTUALIZACJA** Żadna z dotychczasowych odpowiedzi nie jest trafna i naprawdę potrzebuję pomocy. Może mój post wymaga wyjaśnień? Czy jest coś niejasnego?