title: Czy powinienem szukać programistów z konkretnymi zestawami umiejętności lub ogólnych, których trzeba się nauczyć?

text: Dzięki ogromnej pomocy tej strony i SO, udało mi się stworzyć prototyp oprogramowania, które chcę sprzedać, ale niestety, chociaż prototyp działa, myślę, że jakość mojego kodu jest bardzo niska. Nie używałem dużo OOP ani wzorców projektowych, więc chociaż mój kod jest dla mnie zrozumiały, myślę, że normalny programista zemdlałby, gdyby musiał go przeczytać. Chciałem więc zatrudnić programistę, aby poprawił jakość i ulepszył niektóre z moich implementacji API, których mogłem nie zrobić poprawnie. Mam jednak problemy z zatrudnieniem programisty. Spotkałem 2 programistów i kazałem im przeczytać moje specyfikacje oprogramowania. Problem polega na tym, że brakowało im wiedzy o domenie mojej firmy (co jest całkowicie zrozumiałe i nie ma biggie), ale brakowało im również wiedzy o podstawowych systemach technologicznych, z których korzystałem, takich jak Hadoop, Hbase, Cuda itp. Spędziłem dużo czasu na wyjaśnianiu map/reduce, bigtables i innych używanych przeze mnie technologii. Myślałem, że to powszechna wiedza z powodu moich interakcji z ludźmi na tej stronie, ale ludzie, z którymi się spotkałem, wspomnieli, że nigdy nie mieli do czynienia z tymi rzeczami, więc o tym nie wiedzieli. Moje pytanie brzmi, czy w przypadku projektów oprogramowania, które zatrudniają programistów wykonawców, jest to zagrożenie, jeśli programista nie ma doświadczenia z podstawowymi technologiami? czy też generalny programista, który osiągnął sukces w innej dziedzinie, może realistycznie podejść do nowych technologii? Wykonałem bardzo, bardzo szybkie obliczenie koperty i myślę, że koszty początkowe byłyby podobne, gdybym zatrudnił studenta lub programistę bez doświadczenia w moich technologiach, który będzie pracował wiele godzin, w porównaniu z zatrudnieniem bardzo doświadczonego programisty, który pobiera podwójną opłatę, ale kończy połowę czas, ale jakie inne zagrożenia powinienem wziąć pod uwagę lub się martwić? Ponadto, jeśli zatrudnię specjalistę ogólnego, czy powinienem zapłacić za czas potrzebny im na nauczenie się hadoop lub cuda, jeśli są wykonawcami (wydaje się to mieć sens biznesowy, ale nie jestem pewien, jak sprawiedliwe jest dla nich, jeśli nie korzystają z umiejętności ponownie). Jestem trochę zdezorientowany, więc wszelkie sugestie byłyby świetne.


title: Jak korzystać z biblioteki AS3 na licencji LGPLv2.1 w zastrzeżonej aplikacji Flex bez „oddawania farmy”?

text: Rozważmy aplikację Flex (w rzeczywistości AIR), która jest uważana za zastrzeżoną, ale musi korzystać z biblioteki LGPLv2.1 AS3, tak aby była uznawana za „dzieło korzystające z biblioteki” zgodnie z tekstem licencji, a zatem musi być rozpowszechniana zgodnie z na warunkach sekcji 6 LGPL. Jaki jest przepis w AS3 lub Flex dotyczący używania „odpowiedniego mechanizmu bibliotek współdzielonych” (sekcja 6b) do tworzenia pliku wykonywalnego do korzystania z biblioteki, umożliwiając użytkownikowi końcowemu zastąpienie biblioteki (w jakiś sposób) i debugowanie użycia nowej biblioteki, a zatem nie wymaganie dostarczenia wszystkich źródeł zastrzeżonej aplikacji (sekcja 6a,c,d,e) do ponownej kompilacji/ponownego łączenia? Miałem już fałszywy start z RSL, ponieważ zastąpienie RSL powoduje „Flex Error #1001: Digest mismatch with RSL”.


title: Czy powinienem zaimplementować slugi z moimi już dość długimi adresami URL?

text: Rozważam zaimplementowanie slugów na moim blogu. Mój blog używa MongoDB. Jednym z efektów ubocznych używania MongoDB jest to, że używa stosunkowo długich identyfikatorów ciągów szesnastkowych. Przykład przed: http://lastyearswishes.com/blog/view/5070f025d1f1a5760fdfafac po: http://lastyearswishes.com/blog/view/5070f025d1f1a5760fdfac/improvements-on-lelemvc Oczywiście, to jest stosunkowo krótki tytuł. dłuższe, ale zamierzam ograniczyć maksymalny limit znaków dla slugów do czegoś rozsądnego. W którym momencie adres URL staje się tak długi, że szkodzi SEO zamiast go poprawiać? Czy w takim przypadku powinienem zostawić moje adresy URL w spokoju, czy dodać ślimaki?


title: Przyjęcia UML i AcceptEventActions

text: Jaka będzie relacja między odbiorami klasy (był klasyfikatorem przed korektą Aadaam) a AcceptEventActions w czynności opisującej zachowanie jej instancji? Rozumiem, że to pierwsze jest związane z odbiorem sygnałów typu, podczas gdy drugie jest związane ze zdarzeniami Runtime ReceiveSignalEvent instancji klasy (obiektów). Ale nie jest dla mnie całkowicie jasne, jak wyrazić spójność między tymi konstrukcjami. Definiuję zbiór przekształceń M2M i M2T (za pomocą QVT i MOFM2T). Jednak niezależnie od tego, co próbuję zrobić, jestem ciekaw, jaka jest poprawna składnia dla takich modeli.


title: Używasz hasła do konta (loginu) w wygenerowanym pliku PDF?

text: Odkąd usłyszałem o programowaniu, powiedziano mi, że każde hasło (szczególnie to używane przy logowaniu) powinno być przechowywane w bazie danych przy użyciu dowolnego jednokierunkowego algorytmu haszującego, a nigdy w postaci zwykłego ciągu znaków. Tak więc nie można go odczytać bezpośrednio z bazy danych żadną metodą. Dzisiaj zauważyłem, że mój bank (oddział krajowy Citi Group) używa mojego hasła do konta (loginu) do zabezpieczania hasłem plików PDF generowanych pod koniec każdego miesiąca. Jestem ciekaw: czy naruszają jeden z najważniejszych problemów bezpieczeństwa i przechowują hasła w postaci zwykłego tekstu w DB? Czy jest jakiś sposób na użycie zaszyfrowanego hasła z bazy danych, aby zabezpieczyć hasłem wygenerowany plik PDF? Z mojej ograniczonej wiedzy wynika, że nie jest to możliwe. A żeby użyć w PDF tego samego hasła, co przy logowaniu, musi ono zostać faktycznie odczytane z DB po wygenerowaniu PDF, co prowadzi do wniosku, że jest tam przechowywane jako zwykły ciąg tekstowy. Jest to pytanie ogólne, dotyczące koncepcji programowania, niezwiązane z żadnym konkretnym językiem lub techniką, więc zakładam, że należy je zadać tutaj, a nie w StackOverflow.


title: Jakieś dobre narzędzie do planowania lub metoda zarządzania kilkoma konkurencyjnymi projektami?

text: Szukam narzędzia lub „najlepszej praktyki”, która koncentruje się na zarządzaniu tym, jak obecny personel programistów może być przydzielany i ponownie przydzielany do różnych projektów w zależności od zmieniających się priorytetów. Należy również śledzić postępy w projektach. Nasz dział nie ma do czynienia z pojedynczym, nadmiernie złożonym projektem (dla którego znałbym kilka dobrych narzędzi do zarządzania nim), ale z pozornie rosnącym stosem nowych wniosków projektowych o niewielkich lub średnich rozmiarach. Większość projektów może wykonać jeden programista w ciągu 1 do 4 tygodni, a tylko niektóre rzadkie bestie mogą zająć kilka miesięcy. Zdarza się, że praca nad projektem zostaje przerwana, ponieważ pojawia się ważniejsza praca. Zwykle programista pracuje nad kilkoma projektami naraz (na przykład jeden projekt krótkoterminowy, jeden średnioterminowy i jeden długoterminowy lub pomaga w czyimś projekcie ze względu na jego specjalną wiedzę). Większość projektów jest wykonywana przez jednego programistę puli. Mówię o zespole mniej niż 10 programistów. Ponieważ większość wniosków projektowych nie jest ze sobą powiązanych, kolejność, w jakiej są one wykonywane, jest w większości ustalana arbitralnie lub według tego, jak głośno jest wykrzykiwane żądanie. Wnioski pochodzą z różnych działów wewnętrznych i są podyktowane zapotrzebowaniem wewnętrznym, a nie z myślą o optimum pareto. Nie trzeba dodawać, że prowadzi to do ciągłych dyskusji o tym, dlaczego dany projekt musi zostać wykonany jako pierwszy. Wiem, że kryje się za tym problem z zarządzaniem, ale nie chodzi mi o to, jak zmienić sposób działania firmy, ale o narzędzie, które pomaga poprawić koordynację i komunikację „w międzyczasie”. To, czego szukam, to narzędzie, które może wizualizować bieżące zadania, dawać prognozy dotyczące tego, jak długo programiści są już zajęci przez projekty, odzwierciedlają, jak zmiana zadania zmienia harmonogram projektów itp. Jego celem jest mniej samokoordynacja zespół, ale bardziej, aby zapewnić widok wysokiego poziomu, który można przekazać innym działom i który jest łatwo zrozumiały. Powinna stanowić solidną podstawę do omawiania priorytetów i decydowania o kolejności projektów. Możliwość śledzenia granic czasowych (np. „musi być ukończona najpóźniej 1 października”) i czynników kosztowych byłaby premią. Czy system biletowy pasuje do rachunku, czy Microsoft Project jest odpowiedzią? Czy ktoś ma jakieś doświadczenie z taką sytuacją i może zaproponować dobre rozwiązanie?


title: Jaki jest pożytek z metody init i metody zniszczenia Springa?

text: Ucząc się frameworka Spring, odkryłem, że Spring dostarcza metody „init- method” i „destroy-methods”, które mogą być użyte do inicjalizacji niektórych właściwości lub do wykonywania czynności porządkowych. Możemy to wszystko zrobić w konstruktorze fasoli, więc dlaczego Spring udostępnia te rzeczy, a w realnym świecie, jaki jest rzeczywisty użytek z tych dwóch rzeczy?


title: Popularne techniki integracji logowania do mediów społecznościowych z witryną wymagającą rejestracji konta

text: Opracowałem strony internetowe, na których użytkownicy rejestrowali się pod wybraną nazwą użytkownika, a wpis byłby tworzony w tabeli bazy danych, która zawierała ich nazwę użytkownika i jakieś solone hasło. Następnie użyją tego konta do interakcji z usługami, które zapewnia witryna. Teraz interesuje mnie udostępnienie możliwości założenia konta za pomocą Facebooka, Twittera i praktycznie wszystkiego, co może być popularne. Jednak nie wiem, jak zintegrować przepływ pracy logowania z moim systemem. Przeczytałem dokumentację dotyczącą `Facebook Login`, ale nadal nie jestem pewien, jak zintegrować go z moim projektem konta użytkownika. Tak działa moja własna rejestracja 1. Wybierz nazwę użytkownika/hasło 2. Utwórz wpis w tabeli „użytkownicy” 3. Uwierzytelnij się, sprawdzając nazwę użytkownika i sprawdź, czy hasło pasuje. mówi „zaloguj się za pomocą Facebooka”, a oni uwierzytelniliby się za pomocą swoich danych logowania na Facebooku. Nie wiem jednak, dokąd poszedłbym, aby stworzyć użytkownika, który będzie kojarzył się z jego facebookową tożsamością. Więc moje pytanie brzmi... Jaki jest powszechny sposób korzystania z Facebooka (lub innych mediów społecznościowych, takich jak Twitter czy linkedin) do rejestracji konta w systemie? Chciałbym jednolicie zarządzać wszystkimi użytkownikami, więc bez względu na to, jak zdecydują się zarejestrować konto, wszyscy będą obsługiwani w jednej tabeli „użytkownicy”, w której mógłbym wykonywać zapytania i asocjacje bez martwienia się o to, jak konto zostało utworzone lub jak się zalogowali.


title: Pisząc specyfikacje w stylu BDD, czy powinieneś używać "powinien", czy nie?

text: Zdaję sobie sprawę, że jest to nieco subiektywne, ale nie mogę znaleźć dobrego uzasadnienia dla jednego lub drugiego : > to „powinien coś zrobić” > „coś robi” Zwolennicy stylu powinny wspominać, że zmusza on do kwestionowania tego, co to jest próbujesz osiągnąć, podczas gdy przeciwnicy uważają to za zbędne. Czy istnieje konsensus w tej sprawie, czy jest to wyłącznie kwestia stylu?


title: Definiowanie i zastępowanie interwałów otwartych i zamkniętych

text: Rozważałem następującą sytuację w ramach dokumentacji i interfejsu (`A`) oraz implementacji (`B`) tego interfejsu. Interfejs `A` zawiera metody, które zawierają następujące dwa argumenty: 1. _procent_ , przekazywany jako liczba całkowita. 2. _name_ , przekazany jako ciąg. Prawidłowe wartości dla _procent_ to zamknięty zakres [0, 100]. Bez względu na to, jak zaimplementujesz interfejs, błędem jest dopuszczenie jako danych wejściowych wartości spoza tego zakresu. _name_ , zgodnie z definicją w interfejsie, zezwala na dowolny ciąg zawierający [1, 100] znaków. Chcę udokumentować interfejs w taki sposób, że ani _wymaga_, ani _nie zezwala_ implementacji na obsługę _name_ z więcej niż 100 znakami. Oczywiście poprawny zakres dla _percentage_ jest zamkniętym, obejmującym przedziałem. **Jak odwołujesz się do zakresu zdefiniowanego powyżej dla liczby znaków w _name_?** Nie mogę odwoływać się do interwału jako do prawego otwarcia, ponieważ implementacja może nie obsługiwać wartości o długości większej niż 100 znaków.


title: Instalacja z RPM, zamiast tworzenia kodu źródłowego?

text: Próbuję wdrożyć serwer _Redis_ w systemie Linux. Oficjalna strona _Redis_ udostępnia kod źródłowy do pobrania, więc muszę użyć _make_ ', aby zainstalować Radis. ' _make_ ' działa, ale mój problem polega na tym, jak mogę użyć pliku **rpm**, aby go zainstalować? Ze względu na politykę muszę przestrzegać zasad instalacji oprogramowania dla tego konkretnego środowiska. Polityka przeszkadza mi również w instalowaniu innego oprogramowania poprzez tworzenie kodu źródłowego. Jaka jest Twoja opinia? Dziękuję!


title: Umiejętności rozwiązywania problemów i rozmowy kwalifikacyjne

text: Prawdopodobnie niewielu z was przeprowadza wywiady z niedoszłymi programistami. Mam 28 lat, nigdy nie pracowałem jako programista, ale spędziłem kilka miesięcy na nauce C i rozwiązywaniu problemów. Tak bardzo mi się to spodobało, że robię to codziennie tylko dlatego, że teraz mogę i zacząłem studiować CS na lokalnym uniwersytecie. Teraz chciałbym spróbować zarobić na tym i wypróbuję kilka pytań do rozmowy kwalifikacyjnej, które znajdę w Internecie. Niektóre są dla mnie oczywiste, ale niektóre mnie przerażają i zabiera mi dużo czasu na znalezienie rozwiązania. * Kiedy przeprowadzasz rozmowy kwalifikacyjne, jak długo czekasz, aż ktoś wymyśli rozwiązanie? - - Czy zawieszanie się na jakiś czas problemów z 5-liniowym kodem dyskwalifikuje mnie jako programistę? * Czy podczas przeglądania CV bierzesz pod uwagę ludzi takich jak ja? * Jeśli przeprowadzasz wywiad z kimś takim jak ja, o co pytasz tę osobę? * Jakie są Twoje oczekiwania, gdy spotykasz takiego rozmówcę jak ja?


title: wspólne projekty programowania Embedded C/C++

text: To jest ogólne pytanie....Chcę dołączyć do grupy lub grup inżynierów oprogramowania, którzy wspólnie pracują nad projektami programistycznymi w językach C i C++. Moim celem jest przyczynianie się do doskonalenia i doskonalenia moich umiejętności. Moje doświadczenie wywodzi się z tworzenia programów Embedded C, które służyły do weryfikacji/walidacji projektów sprzętu.


title: Dlaczego trudno jest sprawić, by program Java wyglądał na natywny?

text: Większość aplikacji Java nie wygląda tak samo jak aplikacje C/C++. Swing mógł być celowo zaprojektowany, aby mieć charakterystyczny wygląd, ale na podstawie tego, co przeczytałem, SWT na przykład próbował „wyglądać na rodzimą” i nie do końca mu się to udało. Moje pytanie brzmi: dlaczego twórcom języka Java jest trudno zaprojektować system GUI, który _dokładnie_ kopiuje wygląd natywnych GUI? Czym różnią się natywne GUI? Czy nie jest to tylko kwestia zaprojektowania przycisków, które wyglądają jak „natywne” przyciski? A może sięga głębiej?


title: Jak mogę zmierzyć swoje doświadczenie jako hobbysta?

text: Jeśli masz programowanie pracy z językiem, to można śmiało powiedzieć, że liczba lat pracy to liczba lat doświadczenia, które masz. Ale hobbysta nie zawsze programuje z taką samą regularnością jak profesjonalista. Jak mogę zmierzyć swoje doświadczenie jako hobbysta, na przykład w CV? Czy jest to w rzeczywistości równoznaczne z doświadczeniem zawodowym, czy też musi być w jakiś sposób kwalifikowane?


title: Czy złą praktyką jest podążanie za wywołaniem funkcji kończącej za pomocą exit()?

text: Obecnie pracuję nad frontendem php. W szczególności proces uwierzytelniania. Oszczędzę wszystkim dokładnych szczegółów drzewa decyzyjnego, ale zawiera ono wiele sprawdzeń i około połowa z nich rozgałęzia się do wywołania `do_logon()`, które generuje stronę logowania, a następnie wywołuje `exit`, aby zatrzymać dalsze przetwarzanie . Obecnie śledzę każde z tych wywołań za pomocą _innej_ instrukcji `exit` w samej gałęzi: if($db->authenticate($user,$password)) { ... kontynuuj przetwarzanie kontroli... } else { $message ='Nieprawidłowe hasło'; do_logon($wiadomość,prawda); Wyjście; } Pomimo świadomości, że końcowe `wyjście` nigdy nie zostanie wywołane, ponieważ `do_logon` kończy się `wyjściem`. Moje rozumowanie jest takie, że chociaż _Ja_ wiem, że `do_logon` zawsze się kończy, inne osoby, które mogą skończyć pracę na tej bazie kodu, mogą tego nie robić, lub jeśli zostaniem poproszony o utrzymanie tego kodu za pół dekady od teraz, mogę nie pamiętać, więc dodając zbędna instrukcja exit nie zmienia przepływu kodu, ale jasno pokazuje, że przetwarzanie zostanie na tym zatrzymane, ale czy coś przeoczam?


title: Wymagana wiedza techniczna do opracowywania tłumaczy języka wysokiego i wysokiego poziomu

text: Widziałem narzędzie (Shed Skin) do tłumaczenia jednego języka wysokiego poziomu na inny język wysokiego poziomu. Oprócz znajomości tych języków, jakie inne obszary wiedzy technicznej są wymagane do rozwoju tego rodzaju tłumaczy?


title: Dlaczego klasa miałaby być czymś innym niż „abstrakcyjna” lub „ostateczna/zapieczętowana”?

text: Po ponad 10 latach programowania w java/c# zacząłem tworzyć: * **klasy abstrakcyjne** : kontrakt, który nie ma być tworzony tak, jak jest. * **klasy końcowe/zapieczętowane** : implementacja nie ma służyć jako klasa bazowa do czegoś innego. Nie przychodzi mi do głowy żadna sytuacja, w której prosta „klasa” (tj. ani abstrakcyjna, ani ostateczna/zapieczętowana) byłaby „mądrym programowaniem”. Dlaczego klasa miałaby być czymś innym niż „abstrakcyjna” lub „ostateczna/zapieczętowana” ? **EDYTUJ** Ten świetny artykuł wyjaśnia moje obawy znacznie lepiej niż ja.


title: Jak stworzyć pytanie do rozmowy kwalifikacyjnej w Pythonie, aby napisać metodę?

text: Jeśli zadaję pytanie kodujące rozmowę kwalifikacyjną w Javie, większość pytania mogę sprecyzować, podając podpis metody. (Zmyślony przykład poniżej.) public class Table { public Identyfikator ciągu; public int seatCount; } public static List<String> tablesWithEnoughSeats(List<Table> tables, int minSeats) Jeśli kandydat woli Pythona, jak mam przedstawić mu problem? Sygnatura metody Pythona nie określa typu danych. Czy istnieje jakiś standardowy sposób na zrobienie tego w Pythonie? Jeśli przyjrzę się wyzwaniom związanym z kodowaniem w Pythonie online, zwykle określają one wymagania jako przyjmowanie określonych danych wejściowych w celu uzyskania określonych wyników. Nie chcę, aby kandydat tracił czas na pisanie kodu, aby przeanalizować plik wejściowy. (Mój przykład ma tylko String i int, ale rzeczywisty problem rozmowy kwalifikacyjnej może zawierać bardziej złożone dane.) Jaki jest najlepszy sposób wyrażenia ograniczeń parametrów, aby kandydat mógł zaimplementować interesujący mnie algorytm bez wykonywania wielu prac hydraulicznych?


title: Obserwacja wielu obserwowalnych jednocześnie / Sieć połączonych obserwatorów

text: ## Szybki przykład: * HM obserwuje CM * SM obserwuje CM * HSM obserwuje HM i SM, ale chce być aktualizowany dopiero po tym, jak obie mają nową wartość wyprowadzoną z CM. ## Więcej szczegółów: (to wciąż zmyślony przykład, ale najbliższy i najprostszy, jaki mogę wymyślić) `class ColorModel`: * może przechowywać dowolny kolor RGB. * obserwowalne przez obiekt ColorObserverInterface. `class HueModel implementuje ColorModelObserverInterface` * może przechowywać wartość odcienia pochodzącą z koloru RGB. * obserwuje obiekt ColorModel, aby zaktualizować jego wartość odcienia. * obserwowalny przez obiekt HueObserverInterface. * obserwatorzy są powiadamiani tylko w przypadku faktycznej zmiany odcienia. `class SaturationModel implementuje ColorObserverInterface` * może przechowywać wartość nasycenia uzyskaną z koloru RGB. * obserwuje obiekt ColorModel, aby zaktualizować jego wartość nasycenia. * obserwowalne przez SaturationObserverInterface. * obserwatorzy są powiadamiani tylko w przypadku rzeczywistej zmiany nasycenia. `class HueSaturationMonitor implementuje interfejs HueObserverInterface, SaturationObserverInterface` * wyświetla punkt, którego współrzędna x reprezentuje odcień, a współrzędna y reprezentuje nasycenie. * obserwuje obiekt HueObserver i obiekt SaturationObserver. ## Problemy: * Za każdym razem, gdy zmienia się kolor w ColorModel, na obiekcie HueSaturationMonitor wyzwalane są maksymalnie dwie aktualizacje. * w przypadku, gdy nowy kolor ma takie samo nasycenie jak poprzednio, uruchamia się tylko aktualizacja odcienia - i na odwrót. * Kolejność wyzwalania dwóch aktualizacji zależy od kolejności subskrypcji dwóch obserwatorów w ColorModel. * Pojawi się stan pośredni, gdy współrzędna x HueSaturationMonitor ma już nową wartość, podczas gdy współrzędna y nadal będzie miała starą wartość, ponieważ tylko jedna z dwóch aktualizacji została jeszcze wyzwolona. Dla przykładu załóżmy, że taki stan pośredni HueSaturationMonitor jest niepożądany i chcemy przełączyć się bezpośrednio do końcowej pozycji x/y. * HueSaturationMonitor może działać poprawnie tylko wtedy, gdy zarówno HueModel, jak i SaturationModel są subskrybowane do tego samego ColorModel. Nie ma możliwości wymuszenia tego z poziomu HueSaturationModel. ## Pytanie: Jak mogę zorganizować współzależnych obserwatorów, nie uzależniając się zbytnio od kolejności ich wzajemnej subskrypcji? Jak mogę opóźnić wyzwalanie, dopóki wszystkie źródła nie zostaną zaktualizowane? ## Dlaczego to nie jest duplikat? Istnieją inne pytania, które dotyczą wielu obserwatorów i obserwowalnych połączonych w sieć. Ta sieć może być narysowana jako graf skierowany. Charakterystyczną cechą tego pytania jest natura i topologia tej sieci / wykresu: * HueSaturationMonitor obserwuje dwie obserwable, a jego zachowanie zależy od połączonych wartości obu obserwabli. Większość innych pytań ma obserwatorów, którzy obserwują tylko jedną rzecz lub gdzie wartości z dwóch obserwowalnych nie muszą być łączone. * Wykres skierowany, z którym mamy do czynienia, jest acykliczny, ALE jeśli zignorujesz kierunek, stanie się on cykliczny. To część wyzwania w tym pytaniu. Wykres skierowany reprezentuje zbiór częściowo uporządkowany, ale nie drzewo. * Wykres skierowany zawiera skierowane łańcuchy o długości > 1, co oznacza, że istnieje dwupoziomowa zależność. Np. HSM obserwuje HS obserwuje CM. Niektóre z tych cech pojawiają się również w innych pytaniach, ale to ich połączenie jest istotne i powoduje problem, który chcę rozwiązać.


title: Która technika widzenia komputerowego/przetwarzania obrazu mogłaby rozwiązać problem nierównowagi światła w obrazach?

text: Biorąc pod uwagę kolorowy obraz, którego natężenie światła jest słabe na krawędziach i jasne w środku, na przykład **[słabe jasne przyciemnione]** , która technika widzenia komputerowego byłaby zalecana do skorygowania tego braku równowagi? Chociaż wierzę, że wyrównanie histogramu może pomóc, czytałem, że wprowadza również nierealistyczny wygląd do obrazu, wyolbrzymiając niebieski kanał. Rozważam zaimplementowanie do tego zadania procesora obrazu.


title: Co myślisz o tej nowej składni jeśli-to?

text: Właśnie myślałem o czymś, co byłoby naprawdę fajne mieć w moich kontrolkach if-elif-else. if condition: stuff() warunek elif: otherstuff() then: stuff_that_applies_to_both() else: stuff_that_doesnt_aply_to_either() Tak więc w zasadzie zostanie uruchomione `then`, gdy którykolwiek z warunków zostanie uruchomiony Z WYJĄTKIEM warunku else. Czy uważasz, że to jest przydatne? Jest podobny do try-oprócz-else w Pythonie. Myślę, że niektórzy z was zastanawiają się nad bardzo wstępną implementacją. Blok `then` byłby taki sam jak blok `else` w bloku `try-except` w Pythonie. Prawdziwy powód, dla którego to sugeruję, dotyczy takich sytuacji. m = {} if warunek == '1': m['warunek'] = warunek elif warunek2 == '3': m['warunek2'] = warunek2 elif warunek3 == 'Fałsz': m['warunek3'] = Prawda then: run_test_that_relies_on_one_of_the_conditions_being_true() return m Blok `then` jest zawężony do pierwszego, jeśli tak jak `else`. Więc zagnieżdżanie działa dobrze. A jeśli musisz uruchomić metodę przed instrukcjami if, to tak naprawdę nie ma to nic wspólnego z tym przypadkiem użycia.


title: Czym w odniesieniu do DDD jest kontekst ograniczony?

text: Pracując nad książką „Implementing Domain Driven Design” Vaughna Vernona, nie udało mi się dobrze zrozumieć, czym właściwie jest ograniczony kontekst. Książka definiuje ograniczony kontekst jako „konceptualną granicę, w której ma zastosowanie model domeny. Zapewnia wszechobecny język używany przez zespół i wyrażany w starannie zaprojektowanym modelu oprogramowania” (sekcja przedmowa „Przewodnik po tej książce”). Ta definicja brzmiałaby tak, jakby ograniczony kontekst był modelem i językiem subdomeny, gdzie ta subdomena może być domeną podstawową (co wydaje się, że powinno się ją nazywać „subdomeną podstawową”, ale to jest kolejna dyskusja...). To wciąż pozostawia pewną niejasność co do tego, co zapewnia ograniczony kontekst. Czy jest to grupa składająca się z co najmniej jednej subdomeny? Jeśli tylko jedna subdomena odpowiada kontekstowi ograniczonemu, co tak naprawdę mówi nam kontekst ograniczony? Rozdział 3 tej samej książki odnosi się jednak do technik integracji między ograniczonymi kontekstami. Wydaje się to jednak sugerować, że ograniczone konteksty są w rzeczywistości systemami oprogramowania lub artefaktami o pewnej różnorodności. Martin Fowler krótko omawia ideę ograniczonego kontekstu (http://martinfowler.com/bliki/BoundedContext.html), ale tak naprawdę nie wyjaśnia tej kwestii. Na koniec dnia, czym jest ograniczony kontekst? Czy jest to grupa subdomen? Model i język subdomeny? Wdrożenie subdomeny? Bez tych odpowiedzi raczej trudno jest zrozumieć, jak rozłożyć rzeczywistą przestrzeń problemową na ograniczone konteksty.


title: Jak zrobić obsługę wiązań dla języka skryptowego?

text: ### Main Tworzę język skryptowy używając C++. Planuję użyć go z prostym edytorem gier testowych. Ale muszę zrobić wsparcie dla wiązań, aby wywołać metody węzłów silnika gry w celu aktualizacji pozycji, rotacji itp. Jakie są główne podejścia do tego? Silnik gry, którego planuję użyć, również obsługuje lua, więc może i ja będę mógł wykorzystać ten fakt. ### Szczegóły Problem, z którym się zetknąłem, polega na tym, jak mogę wywołać metody obiektów biblioteki C++ w skrypcie. Angielski nie jest moim językiem ojczystym, a brak wiedzy w tej dziedzinie uniemożliwia mi zadanie dobrego zapytania na ten temat. Więc nie wiem, czego szukać. Google pokazuje mi informacje o tym, jak tworzyć powiązania z niektórymi językami skryptowymi, a nie podstawy, za pomocą wyszukiwanych fraz, takich jak „jak utworzyć powiązania obsługujące język skryptowy”, „powiązania skryptowe”. W tym czasie doszedłem do następujących rzeczy. Muszę dziedziczyć wszystkie obiekty, które będą używane w skrypcie z klasy usługi, np. CLangObject. Za jego pomocą mogę zidentyfikować typ obiektu w ramach metod obiektów biblioteki C++. Następnie muszę zdefiniować najbardziej ogólny wskaźnik do typów metod. Mam również zdefiniować klasę usługi wywołania zwrotnego, aby przekazać ją do maszyny bajtowej, gdy metoda biblioteki C++ zwraca wartość. Silnik gry, którego chcę użyć, ma powiązanie z lua, więc może mogę użyć jego klas LuaObject i LuaCallback. W tej chwili nie wiem, czy takie podejście doprowadzi do normalnego wyniku.


title: Co się stało z wdrożeniami opartymi na maszynach wirtualnych?

text: Obejrzałem niektóre prelekcje MountainWest RubyConf 2014 i zauważyłem ciekawy temat. Wiele dynamicznych środowisk programistycznych w dawnych czasach było samodzielnymi obrazami maszyn wirtualnych, np. SmallTalk, GemStone/S. Można by sprawdzać, modyfikować i wysyłać te obrazy hurtowo i uruchamiać je przy niewielkim wysiłku. Przewiń do przodu i nadal używam plików Make do konfigurowania i instalowania plików binarnych. Co się stało?


title: Nauka teorii kryjącej się za programowaniem

text: Interesują mnie książki, które wprowadzałyby/wyjaśniały teorię programowania i języków programowania. Moja logika jest taka, że dzięki pełnemu zrozumieniu teorii stojącej za programowaniem, poznanie nowych języków i zaimplementowanie prostego oprogramowania zajmie tylko kilka tygodni. Jeśli chodzi o rodzaj książek, których szukam, będą one podobne do SICP. Zrobiłem trochę badań na tej stronie, a także na temat przepełnienia stosu. Wiem, że istnieją duże wątki dotyczące książek, które omawiają architekturę oprogramowania, ale szukam informacji dotyczących programowania. Mam dobre zrozumienie Pythona, które otrzymałem z klasy do CS na temat programowania, ale muszę poszerzyć swoją wiedzę. Dziękuję


title: Dlaczego ludzie tak mocno sprzeciwiają się tagowaniu #region w metodach?

text: Dużo słyszę o utrzymywaniu krótkich metod i słyszałem, jak wielu programistów mówi, że używanie tagów #region w ramach metody jest pewnym znakiem, że jest ona zbyt długa i powinna zostać zrefaktorowana na wiele metod. Wydaje mi się jednak, że jest wiele przypadków, w których rozdzielenie kodu za pomocą tagów #region w ramach metody jest lepszym rozwiązaniem niż refaktoryzacja na wiele metod. Załóżmy, że mamy metodę, której obliczenia można podzielić na trzy dość różne fazy. Co więcej, każdy z tych etapów dotyczy tylko obliczeń dla _tej_ metody, więc wyodrębnienie ich w nowe metody nie daje nam możliwości ponownego wykorzystania kodu. Jakie są zatem korzyści z wyodrębnienia każdej fazy we własną metodę? O ile wiem, wszystko, co zyskujemy, to pewna czytelność i oddzielny zakres zmiennych dla każdej fazy (co pomoże zapobiec przypadkowemu przerwaniu innej fazy przez modyfikacje danej fazy). Jednak oba te cele można osiągnąć bez wyodrębniania każdej fazy do własnej metody. Tagi regionu pozwalają nam zwinąć kod do postaci, która jest równie czytelna (z dodatkową korzyścią, że nie musimy już opuszczać swojego miejsca w tym pliku, jeśli zdecydujemy się rozwinąć i zbadać kod) i po prostu zawijać każdą fazę w `{}` tworzy własny zakres do pracy. Korzyść z robienia tego w ten sposób polega na tym, że nie zanieczyszczamy zakresu na poziomie klasy trzema metodami, które w rzeczywistości dotyczą tylko wewnętrznego działania czwartej metody. Natychmiastowa refaktoryzacja długiej metody w serię krótkich metod wydaje mi się równoważnikiem przedwczesnego wykorzystania kodu; wprowadzasz dodatkową złożoność, aby rozwiązać problem, który w wielu przypadkach nigdy się nie pojawia. Zawsze możesz później wyodrębnić jedną z faz do własnej metody, jeśli pojawi się możliwość ponownego użycia kodu. Myśli?


title: Nie mogę zrozumieć zastosowania oops Jak mogę rozwinąć zrozumienie zastosowania oops?

text: Mam trudności z nauką zastosowania programowania obiektowego od ostatnich 2 lat. Jestem programistą w technologii PHP, znam prawie wszystkie podstawy OOPS, ale nadal nie mogę znaleźć sposobu na zastosowanie tych koncepcji w programowaniu proceduralnym. Robię to w bardzo ortodoksyjny sposób, ale nie wiem dlaczego tak to koduję. Nigdy nie mam uzasadnienia, aby uzasadnić moje aplikacje oops, co wywnioskowało, że jestem najgorszy w OOPS. Proszę, pomóżcie mi nauczyć się myśleć nad zastosowaniem OOPS.


title: Protokół ZeroMQ i Majordomo

text: Uczę się ZeroMQ i natknąłem się na Protokół Majordomo. Zastanawiam się, czy dobrze to rozumiem, czy przypadek użycia jest taki sam jak np. usługa Microsoft Azure AppFabric? Czy użyłbym Majordomo, gdybym chciał stworzyć autobus usługowy podobny do AppFabric? A może zrobiłbym Pub/Sub+Żądanie/Odpowiedź? Jeśli nie znasz usługi Azure Service Bus, możesz połączyć aplikacje z usługami (lub aplikacje z aplikacjami itp.) — przynajmniej na potrzeby tej dyskusji: ![Azure AppFabric Service Bus](http://i. stack.imgur.com/PY6xJ.jpg) Czy wydaje się, że jest to przypadek użycia protokołu Majordomo, czy też patrzę na inny wzorzec tutaj (pomimo dolnego wiersza „bezpośredniego połączenia”). Jak działa WKKW (wiadomość inicjowana przez pracownika)? \-- (EDYTUJ) Dzięki Adam. Sprowadzając pytanie do jego istoty, gdybym zaimplementował protokół przesyłania wiadomości Azure AppFabric za pomocą ZeroMQ, czy użyłbym protokołu Majordomo, czy też bardziej odpowiedni byłby inny wzorzec? Również jako odniesienie, link do ZMQ Majordomo: http://rfc.zeromq.org/spec:7


title: Przechowywanie ostatniego odpytanego znacznika czasu bazy danych unix

text: Mam skrypt uniksowy, który jest wywoływany przez harmonogram (CTRL M) co 3 sekundy. Skrypt wysyła zapytanie do zewnętrznej bazy danych (nie należącej do mojej aplikacji i dlatego mogę tylko ją odpytywać), aby sprawdzić nowe rekordy. Obecnie przechowuje znacznik czasu ostatniego uruchomienia w tabeli lokalnej, a podczas następnego odpytywania odpytuje zewnętrzną bazę danych o wszystkie rekordy > znacznik czasu. Teraz chcę uniknąć aktualizowania i wysyłania zapytań do tej tabeli lokalnej. Jedyną opcją, jaką widzę, jest przechowywanie i odczytywanie tego znacznika czasu w pliku. Jednak szanse na uszkodzenie lub nadpisanie pliku są wyższe niż dane w bazie danych. Google miał wiele opcji java, ale potrzebuję tego w skrypcie. Czy istnieje lepszy sposób na przechowywanie znacznika czasu lub lepszy projekt funkcjonalności jako całości?


title: chcesz dowiedzieć się więcej o implementacji projektowania obiektowego w aplikacji webowej za pomocą asp.net c#

text: Czy ktoś może mnie poprowadzić o tym, jak mogę mieć pełne zrozumienie projektowania zorientowanego obiektowo. w zasadzie szukam książki o tym lub jakiejkolwiek dobrej strony internetowej, którą ludzie mogą udostępnić. Najważniejsze jest to, że chcę opracować aplikację internetową do nauki od początku do końca, która jest całkowicie zorientowana obiektowo w asp.net c#.


title: Jaka jest dobra konwencja nazewnictwa dla typów ogólnych w C#?

text: Postanowiłem zadać to pytanie tutaj zamiast na przepełnieniu stosu, ponieważ jest to raczej subiektywne. W C# zwykle widzę typy ogólne o bardzo słabych nazwach. W szczególności „T” jest powszechnie używane, ale samo w sobie nie jest znaczącą nazwą. Na przykład: class Owoc<T> { T Owoc; } Chociaż jest to typowe podejście, czy ktoś odradzałby to? A jeśli tak, to jaka byłaby rozsądna konwencja nazewnictwa dla typów ogólnych w kontekście C# dla funkcji i klas ogólnych? W moim poprzednim przykładzie załóżmy, że typ ogólny „T” musi zawsze być rodzajem owocu, takim jak „Jabłko” lub „Pomarańcza”. Typ `T` musi jasno wskazywać, że jest to rodzaj owocu, więc może lepszą nazwą byłoby `FruitType`, więc otrzymujemy: class Fruit<FruitType> { FruitType owoc; } To tylko po to, by dać wam wyobrażenie o tym, czego szukam. Jaka jest akceptowalna „zasada” dotycząca tego problemu?


title: Jak uruchomić funkcję i załadować Viewbag przy każdym załadowaniu strony?

text: Oto mój problem. Na moim _Layout mam przycisk pomocy, który pojawia się na każdej stronie w mojej aplikacji MVC. Czy istnieje sposób na przypisanie Viewbag z moim prostym modelem bez konieczności umieszczania każdej metody ActionResult w mojej aplikacji? Globalna metoda? public ActionResult Index() { var query = db.OnlineHelp.Where(a => a.PageUrl == Request.RawUrl).FirstOrDefault(); ViewBag.htmlraw = query.PageContent } i na moim _Layout.chtml @Html.Raw(@ViewBag.htmlraw) Request.RawUrl śledzi użytkownika i w zależności od strony, baza danych jest przeszukiwana i zwraca wynik, taki jak /Home/ Indeks


title: Co właściwie oznacza „sublicencja”?

text: Po pierwsze, jasne jest, że prawo do sublicencji nie daje prawa do ponownego licencjonowania. Powiedzmy, że mamy bibliotekę z licencją MIT (1 plik), ktoś dodaje kilka funkcji do biblioteki, ale umieszcza je na licencji GPL (w tym samym 1 pliku). Lub jeśli ktoś chce podlicencjonować, musi oddzielić kod? Jeśli ktoś chce korzystać z biblioteki, jak obsługiwane są licencje? Załóżmy, że programista używa tylko funkcji na licencji MIT, nawet jeśli w pliku znajdują się pewne funkcje na licencji GPL. Czy musi GPL swoją aplikację z powodu kodu na licencji GPL? Czy musi usunąć kod GPL, aby uwolnić się od ograniczeń GPL, czy może po prostu korzystać z biblioteki na prawach/ograniczeniach MIT, o ile nie używa kodu GPL?


title: Strategia zabezpieczania płatnych danych jako usługi API

text: Jaka jest dobra metoda na upewnienie się, że dane uwierzytelniające płacącego klienta nie zostaną skradzione i ponownie użyte podczas tworzenia usługi internetowej/api, która ma być używana przez klientów javascript/flash/mobilnych. Aby wyjaśnić dalej, powiedzmy, że chcę pobierać 1 USD za każde 10 000 żądań przeciwko mojemu interfejsowi API. Jeśli ktoś chce hodować moje dane za darmo, musiałby po prostu znaleźć inną aplikację kliencką, która już korzysta z mojego interfejsu API, i skonstruować żądania przy użyciu poświadczeń płacącego klienta. Nie widzę sposobu, żebym mógł "ukryć" to, co się dzieje na kliencie, zawsze ktoś będzie mógł łatwo odtworzyć schemat "auth". Więc jakie są dobre sposoby na złagodzenie nadużyć? EDYTUJ Bardziej szczegółowy przykład scenariusza... Powiedzmy, że moja usługa danych to rozkłady jazdy autobusów. Celem usług jest dla deweloperów pisanie aplikacji zużywających dane. W danych nie ma nic osobistego, to samo dotyczy wszystkich. Intencją jest, aby programista pisał aplikacje JavaScript/flash/mobilne **bezpośrednio** przeciwko interfejsowi API (jestem świadomy ograniczeń między domenami). Ale programista musi płacić, gdy użytkownicy jego aplikacji wysyłają żądania dotyczące interfejsu API rozkładu jazdy autobusów. Jak sprawić, by inny programista przechodził do oryginalnej witryny programisty i po prostu usuwał poświadczenia używane przez jego przeglądarkę do komunikowania się z interfejsem API rozkładu jazdy autobusów i pisał własną aplikację przy użyciu tych poświadczeń?


title: Jak utrzymujesz koncentrację, gdy wykonanie określonego aspektu programowania zajmuje ponad 10 sekund?

text: Mam bardzo trudny czas skupienia się na tym, co robię (programowanie), gdy coś (kompilacja, czas uruchomienia itp.) zajmuje więcej niż kilka sekund. Anegdotycznie wydaje się, że próg wynosi około 10 sekund (i przypominam sobie, że czytałem o badaniu, które mówiło to samo, chociaż nie mogę go teraz znaleźć). Więc to, co zwykle się dzieje, to wprowadzam zmianę, a następnie uruchamiam program, aby ją przetestować. Zajmuje to około 30 sekund, więc zaczynam czytać coś innego i zanim się zorientuję, minęło 20 minut, a potem zajmuje (jeśli mam szczęście!) kolejne 10 minut, aby poradzić sobie z przełączaniem kontekstu i powrotem do programowania . Nie będzie przesadą stwierdzenie, że wykonanie niektórych rzeczy, które powinny zająć mi kilka minut, zajmuje dosłownie godziny. Jestem bardzo ciekaw, co robią inni programiści, aby zwalczyć tę tendencję (lub czy jestem wyjątkowy i nie mają tej tendencji?). Wszelkie sugestie są mile widziane – od „siedzenia na rękach po naciśnięciu przycisku kompilacji”, po sztuczki umysłowe, po „jeśli uruchomienie czegoś w celu przetestowania zmiany zajmuje 30 sekund, oznacza to, że coś jest nie tak z procesem tworzenia !"


title: Jaka jest prawidłowa licencja?

text: Znalazłem więc tę bardzo interesującą bibliotekę w witrynie Google Code. Okazuje się, że jest reklamowany jako „LGPL”, co jest dla mnie wystarczająco dobre. Jednak w pliku README biblioteki autor zaprzecza sobie mówiąc, że nie jest on dostępny do celów komercyjnych. Domyślam się, że rejestrując się, aby stworzyć swój projekt w Google Code, możesz wybrać tylko licencje open source. Licencje open source umożliwiają sprzedaż oprogramowania, oferowanie wsparcia komercyjnego itp. Domyślam się więc, że albo autor pomylił słowo „komercyjny” z „zastrzeżonym”, albo po prostu chciał mieć dobre miejsce do hostowania swojego oprogramowania, nawet naruszając standardy GoogleCode.. Chodzi o to, że jeśli chcę korzystać z biblioteki, pod jaką licencją powinienem uznać oprogramowanie? Pytałem już autora przez e-mail, ale nie odpowiedział. Dziękuję bardzo.


title: Zarządzanie „ukończonym”, ale nieodwołalnym kodem w TFS

text: Pracuję w organizacji z 11 zespołami scrumowymi rozwijającymi się na tej samej bazie kodu. Obecnie cały rozwój odbywa się w trunku, a pod koniec sprintu wszystko MUSI być dostępne do wydania lub musi zostać wycofane (żmudny proces) w miarę wycinania wydania. Uważam, że chociaż praca w sprincie jest (najlepiej) „zakończona” pod koniec sprintu, niekoniecznie oznacza to gotowość do wydania. Być może jesteś w punkcie, w którym nie masz minimalnego produktu do wydania, ale masz gotowe historie. Jeśli historia nie jest skończona lub jest tylko częścią większej funkcji, powinno być łatwo oddzielić ją od kodu gotowego do wydania. W tej chwili wszystko jest wycofane, cięcie zwalniające jest wykonywane, a następnie jest ponownie wprowadzane. Ogromna strata czasu! Stosujemy ciągłą integrację, która jest głównym argumentem dla każdego rozwijającego się na bagażniku. Czasami zespoły używają gałęzi zespołu, ale obecnie nie jest to mile widziane. Rozważałem po prostu posiadanie gałęzi 'dev' i 'release' oraz wypychanie funkcji do wydania, gdy są one MVP, lub posiadanie gałęzi dla każdej historii lub funkcji, ale jest to bardzo trudne dla administratora w TFS. Czy inne osoby zajmowały się podobnymi problemami w przeszłości i jakie są Twoje przemyślenia na temat najlepszej drogi naprzód? Niestety, na krótką metę jesteśmy związani z TFS.


title: Niezbędne narzędzia do zarządzania dla małego/średniego sklepu programistycznego

text: Niedawno rozpocząłem współpracę z organizacją, która szybko się rozwija i rekrutuje lub rozwija kilka zespołów programistycznych (w tym dwa produkty internetowe i zespół hurtowni danych/BI). Zasadniczo pracują nad zwinnymi metodologiami, ale nie sformalizowały jeszcze standardowego sposobu pracy. Pomimo tego, że to dopiero początek, zaskoczył mnie brak narzędzi służących do zarządzania procesami rozwoju (np. brak śledzenia problemów, brak narzędzia do zarządzania backlogiem produktu itp.) Chociaż nie jest to moja główna odpowiedzialność, ja chcielibyśmy pomóc im w kilku zaleceniach dotyczących najważniejszych narzędzi, które powinni wdrożyć. Jakie są 3-5 priorytetowych narzędzi do zarządzania dobrym sklepem deweloperskim? Dlaczego są konieczne? Jak usprawniają proces tworzenia oprogramowania i jak uzasadniam je moim szefom?


title: Jak nazywa się ten algorytm konwersji ciągów na liczby?

text: Robiłem ostatnio trochę pracy w Parsec i dla mojego języka zabawek chciałem, aby liczby ułamkowe oparte na wielu bazach były wyrażalne. Po przekopaniu się trochę w źródle Parseca, znalazłem ich implementację parsera liczb zmiennoprzecinkowych i skopiowałem go, aby dokonać niezbędnych modyfikacji. Więc rozumiem, co robi ten kod i niejasno dlaczego (nie rozpracowałem jeszcze w pełni matematyki, ale myślę, że rozumiem sedno). Ale skąd to się wzięło? Wydaje się, że to całkiem sprytny sposób na zamianę ciągów na pływaki i int. Czy istnieje nazwa tego algorytmu? A może jest to tylko coś podstawowego, co jest dziurą w mojej wiedzy? Czy ludzie stojący za Parsec to wymyślili? Oto kod, pierwszy dla liczb całkowitych: liczba' :: Integer -> Parser Liczba całkowita' podstawa = do { cyfry <- wiele1 ( oneOf ( sigilRange base )) ; let n = foldl (\x d -> base * x + toInteger (convertDigit base d)) 0 cyfr ; seq n (return n) } Podstawowa idea jest taka, że `cyfry` zawierają łańcuch reprezentujący całą część liczbową, tj. `"192"`. `foldl` konwertuje każdą cyfrę pojedynczo na liczbę, a następnie dodaje ją do sumy bieżącej pomnożonej przez podstawę, co oznacza, że na końcu każda cyfra została pomnożona przez właściwy czynnik (łącznie), aby ją ustawić. Część ułamkowa jest jeszcze ciekawsza: frakcja' :: Integer -> Parser Podwójna frakcja' base = do { digital <- many1 ( oneOf ( sigilRange base )) ; niech baza' = fromCałka podstawa ; let f = foldr (\d x -> (x + fromIntegral (convertDigit base d))/base') 0.0 cyfr ; seq f (return f) Ta sama ogólna idea, ale teraz `foldr` i używający wielokrotnego dzielenia. Nie bardzo rozumiem, dlaczego najpierw dodajesz, a potem dzielisz przez ułamek, ale najpierw mnożysz, a potem dodajesz przez całość. Wiem, że to działa, ale nie wiem, dlaczego. W każdym razie, czuję się głupio, nie rozpracowując tego sam, patrzenie na to jest bardzo proste i sprytne. Czy istnieje nazwa tego algorytmu? Może bardziej znajoma byłaby wersja imperatywna wykorzystująca pętlę?


title: Jakie zlecenie HTTP jest odpowiednie dla trasy API, która ponownie uruchamia aplikację na serwerze?

text: Zostałem poproszony o wykonanie przeglądu kodu bardzo prostej usługi internetowej o jednej trasie, która po trafieniu po prostu zrestartuje aplikację w systemie. Deweloper zakodował to jako POST, co wydaje mi się dziwne. Teraz zdaję sobie sprawę, że tak naprawdę nie o to chodzi w HTTP — nie można nawet zapytać o stan — ale czy istnieje bardziej odpowiednie czasowniki HTTP? Moja intuicja jest taka, że ponieważ jest to w większości idempotentne i nie tworzy nowych zasobów, powinno to być PUT.


title: Restful WebAPI VS Regular Controllers

text: Prowadzę prace badawczo-rozwojowe na temat, który wydaje się bardzo mylący, przeczytałem też sporo innych pytań SO, ale czuję, że moje pytanie może być na tyle unikalne, że warto je zadać. Nigdy nie tworzyliśmy aplikacji używającej czystego WebAPI. **Próbujemy napisać aplikację w stylu SPA, w której backend jest całkowicie oddzielony od kodu frontendowego** Zakładając, że nasza usługa nie wie nic o tym, kto ma do niej dostęp/konsumuje: WebAPI wydaje się być logiczną drogą do obsługi data, w przeciwieństwie do używania standardowych kontrolerów MVC i obsługi naszych danych za pośrednictwem wyniku akcji i konwertowania ich do formatu JSON. Wydaje mi się, że to przynajmniej projekt MC… co wydaje się dziwne, a nie do czego MVC był przeznaczony. (patrz mamo... bez widoku) Co można by uznać za normalną konwencję wykonywania wywołań akcji? _Mam wrażenie, że moje rozumienie WebAPI jest nieprawidłowe._ Sposób, w jaki postrzegam WebAPI, jest taki, że ma być używany w sensie CRUD, ale co, jeśli chcę zrobić coś takiego: "InitialiseMonthEndPayment"... Czy będę potrzebował utworzyć kontroler WebAPI, o nazwie InitialiseMonthEndPaymentController, a następnie wykonać POST... Wydaje się to trochę dziwne, w przeciwieństwie do kontrolera MVC, w którym mogę po prostu dodać nową akcję na kontrolerze MonthEnd o nazwie InitialisePayment. A może wymaga to zmiany sposobu myślenia w zakresie projektowania? Wszelkie dalsze linki na ten temat będą naprawdę przydatne, ponieważ obawiam się, że wdrażamy coś, co może być dziwne i może później przekształcić się w problem związany z kodowaniem/konserwacją?


title: Szukasz bardzo subtelnego przykładu testowania jednostkowego

text: W kontekście Ciągłej Integracji muszę **uczyć** testowania jednostkowego 20-osobową publiczność programistów. Wszystko będzie dobrze, ale wciąż staram się znaleźć idealny przykład testowania jednostkowego. Bardziej niż pisanie testów jak robot, chcę pokazać, że testy jednostkowe mogą pomóc w zapobieganiu bardzo subtelnym błędom. Myślę o następującym **scenariuszu**, który może się wydarzyć podczas robienia demo TDD na żywo: * przypadki testowe byłyby już napisane, * musielibyśmy wspólnie napisać metody, * większość z nas naturalnie zapomniałaby poradzić sobie z konkretnym przypadku metody, * wszyscy byliby wtedy zaskoczeni, widząc, że wszystkie testy nie zdają egzaminu, * niezaliczony test skłoniłby nas do przemyślenia i uświadomienia sobie, że zapomnieliśmy o ważnym przypadku. Moje pytanie prawdopodobnie skończy się jako „zbyt szerokie” lub „nie wiem, o co pytasz”, ale nigdy nie wiemy, któryś z was może mieć świetny pomysł. Twoja odpowiedź może używać Javy i JUnit, chociaż każdy inny język będzie w porządku, ponieważ liczy się tylko pomysł.


title: Wzorzec projektowania warstw w stylu czystego kodu Java

text: Jako programista Java rozwijam się starając się używać reguł czystego kodu. Ale w moim zespole mamy konkretny problem: mamy warstwę biznesową oferującą usługę o nazwie "createObject", ta usługa wykonuje wiele operacji, które mogą powodować problemy. Np. parentObjectDontExist, objectAlreadyExist, dontHaveAuthorizationToCreate, operationFailed... i chcemy, aby interfejs użytkownika korzystający z tej usługi wyświetlał różne komunikaty informacyjne w zależności od tego, który błąd wystąpił. W starym java dev powinniśmy stworzyć wszystkie podpisane typy wyjątków i wrzucić je do createObject. Jak mówi czysty kod, zabronione jest używanie wyjątków dla logiki biznesowej ORAZ podpisane wyjątki są złe... Czemu nie... Ale nie wiem jak rozwiązać ten problem i nie chcę używać kodu powrotu. Jak się masz? Dzięki za zwrot doświadczenia.


title: Git alternatywa dla półki w TFS

text: Używam git do moich osobistych projektów, więc nigdy nie spotkałem się z żadnymi problemami z Gitem, jednak miałem dzisiaj dyskusję w pracy i jest to coś, o czym nie pomyślałem. W TFS możesz przechowywać swój zestaw zmian na półce, ten zestaw może być przeglądany przez innych programistów, na przykład w celu recenzji. Z tego, co rozumiem w githubie, pracujesz nad lokalną kopią repozytorium (być może z niestandardowymi gałęziami dla różnych funkcji), a potem przychodzi punkt do recenzji. Jak byś udostępnił komuś określone zmiany w lokalnym repozytorium?


title: Nakaz podpisywania Silnej nazwy dla projektów zależnych

text: W rozwiązaniu mam dwa projekty A(.EXE) i B(.DLL). A odniesienia B. Jeśli opóźnię podpisanie obu i wyślę je do pełnego podpisania. Czy A będzie w stanie załadować B po ? Czy muszę najpierw w pełni podpisać B, a następnie dodać odwołanie binarne do tego w projekcie A, opóźnić znak A i wysłać do pełnego podpisania?


title: Konwencja nazewnictwa głównych argumentów

text: Niedawno zacząłem używać argumentów w moim głównym programie (tutaj napisanym w `C++` ale może to być dowolny język programowania) #include <iostream> int main(int argn, char* argv[]) { // rób różne rzeczy w zależności od argv[1 ], argv[2], itd. } Na razie używam głównie losowych konwencji nazewnictwa, takich jak `-t` do testowania, `-d` do debugowania, `-l` do drukowania logów, np. Nie ma potrzeby dodawania `-`, po prostu większość parametrów powłoki jest nazwana w ten sposób. Używam również `--` jako drugich parametrów. Czy istnieją ustalone konwencje nazewnictwa dla głównych argumentów?


title: Jak testujesz jednostkowo kod aplikacji i interfejsu użytkownika?

text: Uwielbiam pisać testy jednostkowe i zgadzam się, że są to doskonały sposób na testowanie kodu, zapobieganie regresjom itp. Jednak nie jestem w stanie ich napisać, ponieważ zdecydowana większość kodu, nad którym pracuję na co dzień, to aplikacja kod, który wyświetla użytkownikowi interfejs użytkownika. Czy istnieje dobry sposób testowania jednostkowego kodu aplikacji? Jakie są tutaj najlepsze praktyki? Nie szukam konkretnej odpowiedzi, takiej jak framework itp. Ale raczej ogólnie, jak podchodzisz do tego problemu?


title: pytanie dotyczące licencji copyleft

text: Piszę aplikację i odnoszę się do jakiegoś otwartego kodu źródłowego (na licencji copyleft). Nie używam oryginalnego kodu źródłowego, ponieważ jest on przeznaczony dla zupełnie innego systemu operacyjnego w innym języku i o ile mi wiadomo, nie -one przeportowało to źródło do języka, którego używam, ani do mojego docelowego systemu operacyjnego. Czy nadal jestem objęty oryginalną licencją typu copyleft?


title: Alternatywny model internetowy

text: Jednym z problemów, jakie aplikacje internetowe mają z aplikacjami natywnymi, zwłaszcza na froncie mobilnym, jest ciągła potrzeba ponownego pobierania każdej strony internetowej na żądanie. Ostatecznie prowadzi to do niższej wydajności. Dlaczego, jeśli aplikacje internetowe pobierają nowe strony tylko wtedy, gdy są rzeczywiście potrzebne, a nie dlatego, że są po prostu wymagane. Na przykład: być może serwer może przechowywać wersję strony internetowej w pliku cookie. Każda drobna zmiana strony po stronie serwera zmienia numer wersji. Teraz zamiast za każdym razem żądać nowej strony przez przeglądarkę, dlaczego nie po prostu sprawdzić numeru wersji i poprosić serwer o przesłanie strony, jeśli są różne? Jeśli strona jest podobna, użytkownik może po prostu użyć strony z pamięci podręcznej. Jestem pewien, że przeglądarki niekoniecznie muszą się zmieniać, aby dostosować się do zmian w tym zakresie, prawda?


title: Konwersja map procesów biznesowych na oprogramowanie

text: Jestem całkiem nowy w tworzeniu aplikacji internetowych. Zdefiniowałem moją domenę problemów, rozmawiając z różnymi interesariuszami i składając razem mapę procesów - w zasadzie schemat blokowy pokazujący różne kroki i procesy, które aplikacja internetowa musi być w stanie odtworzyć. Problem, jaki mam, polega na tym, że staram się zmapować ten proces na projekt aplikacji i kod. Zastanawiałem się, czy istnieją jakieś najlepsze praktyki lub metody programowania, które pomagają mapować proces biznesowy do projektu aplikacji? Przeczytałem krótko o rozwoju opartym na domenach i wydaje się, że może to być dobre podejście. Aby wyjaśnić, jestem za metodologią lub zasadą projektową, która pomoże przekształcić proces biznesowy w kod. Na przykład MOGŁBYM po prostu zmapować każde pole w mapie procesu do klasy o identycznej nazwie w moim kodzie. W ten sposób przekładając proces biznesowy na model domeny (tj. zorientowany obiektowo) w moim kodzie. Ale czy to najlepszy sposób na zrobienie tego?


title: Licencja taka jak LGPL, ale kompatybilna z JavaScript

text: Napisałem bibliotekę, która jest dość obszerna i zajęła mi dużo czasu, więc chciałbym ją odpowiednio licencjonować. LGPL wydaje się mieć wiele rzeczy, których chcę, ale nie działa z JavaScriptem ani innymi interpretowanymi językami. Oto, co chcę powiedzieć na mojej licencji: * Moja biblioteka może być używana w aplikacjach komercyjnych (zarówno aplikacjach internetowych, jak i desktopowych). * Moja biblioteka może być używana w aplikacjach open source (ponownie, każda platforma jest w porządku). * Nie możesz redystrybuować mojej niezmodyfikowanej biblioteki w żadnej formie, z wyjątkiem sytuacji, gdy javascript jest pobierany do przeglądarki klienta. * Chciałbym pozostać właścicielem praw autorskich. * Jeśli to możliwe, chciałbym, aby użytkownicy mojej biblioteki mogli korzystać z innych bibliotek na dowolnej licencji (choć jest to mniej ważne). Nie mam nic przeciwko rozprowadzaniu źródeł mojej biblioteki, a będę musiał, ponieważ jest to JS, to czego nie chcę, to inni rozprowadzający moją niezmodyfikowaną bibliotekę i mówiący, że to wyłącznie ich praca. Nie przeszkadza mi to, że ludzie modyfikują i redystrybuują bibliotekę, chociaż wolałbym, aby przesłali mi swoje prace i przyznałbym im uznanie. Jeśli dokonają modyfikacji i redystrybucji biblioteki, muszą udzielić mi częściowego uznania. Myślałem również o korzystaniu z licencji MIT, ale wyraźnie mówi, że ludzie mogliby redystrybuować moją bibliotekę w stanie niezmodyfikowanym, co jest dla mnie najważniejsze, aby to uniemożliwić. Szczerze przepraszam, jeśli identyczne pytanie zostało zadane w tej sieci, przeprowadziłem kilka dni badań i nie znalazłem żadnego (jest to najbliższe, ale odpowiedź mi nie pomogła). Również IANAL, więc jeśli cokolwiek z tego jest prawnie sprzeczne lub niemożliwe, prosimy o wyjaśnienie, a nie tylko stwierdzenie, że jest to niemożliwe.


title: Zapętlanie wyczerpujących przypadków testowych — dobra praktyka?

text: Czasami mamy taki kod: private static final List<Goat> INEDIBLE_GOATS = [GOAT_A, GOAT_B, GOAT_C] void eatGoat(Goat goat) { if(INEDIBLE_GOATS.contains(goat)) { throw new CantEatGoatException(); } ... } Czy najlepiej to przetestować (wraz z jakimikolwiek testami dotyczącymi rzeczywistego jedzenia) jako: for(Goat goat: INEDIBLE_GOATS) { // wybacz nadużywanie składni assistThrows(CantEatGoatException, eatGoat(goat)); } Lub bardziej jak? AssertThrows(CantEatGoatException, eatGoat(GOAT_A)); Czy testy powinny weryfikować każdy rodzaj niejadalnej kozy? A może powinni przetestować reprezentatywną kozę z listy i zaufać, że działa ona na inne kozy?


title: Czy powinienem używać jednej platformy do wspólnych usług, czy też je modularyzować?

text: Projektuję pakiet aplikacji internetowych, które mają tę samą podstawową funkcjonalność. Oznacza to, że wszyscy będą wiedzieć, jak tworzyć i obsługiwać widżety. Różnice będą dotyczyć odbiorców docelowych i sposobu interakcji użytkownika z widżetem. Zasadniczo, gdyby te aplikacje były tworzone niezależnie, byłoby _dużo_ powielanych wysiłków. Aby to uprościć, pomyślałem o dwóch rozwiązaniach. Proszę o wszystkie Wasze opinie na temat zalet i wad każdego rozwiązania oraz tego, które wolicie. 1. „Platforma” — idea polega na tym, że istnieje niezależna warstwa usług, a la usług internetowych. Nie byłaby to usługa internetowa, ale po prostu zaplecze dla wszystkich aplikacji. Platforma komunikowałaby się z aplikacjami za pośrednictwem wiadomości lub serializacji obiektów. Chciałbym napisać platformę w Javie, ale intencją byłoby, aby aplikacje można było pisać w dowolnym frameworku webowym, takim jak Rails, Django, Flex lub po prostu coś w Javie. Platforma abstrahowałaby bazę danych, więc cała interakcja z zapleczem odbywałaby się za pośrednictwem platformy. Jednym z potencjalnych problemów jest to, że aktualizacja platformy pociągnie za sobą usunięcie wszystkich aplikacji. Ale przynajmniej wszystkie aplikacje będą spójne pod względem back-endu. Podoba mi się, jak jest to cięte poziomo i że aplikacja tak naprawdę musi skupiać się tylko na front-endzie, a nie martwić się o to, jak zorganizować back-end. 2. "Moduły" -- Pomysł polega na tym, że po prostu piszę wszystko w Javie i rozwijam moduły, które będą żyły we własnych słoikach. Każdy moduł reprezentowałby moduł Guice, a każda aplikacja zawierałaby tylko wybrane moduły i tworzyłaby własne wtryskiwacze. Takie podejście sprawiłoby, że każda aplikacja byłaby całkowicie niezależna od siebie, poza współdzieleniem wspólnej bazy danych. Tak więc teoretycznie znacznie łatwiej byłoby wdrożyć aplikację w innym środowisku bez martwienia się o platformę. Utknąłbym w środowisku jednego języka, Javie. Chociaż dostępne byłyby JRuby i Jython. Więc może to nie jest duży problem. Przewiduję też, że łatwiej będzie dostosować aplikację bez wpływu na platformę. Jedyną wadą jest to, że jeśli zaktualizuję moduł, chciałbym ponownie wdrożyć każdą aplikację za pomocą tego modułu. Byłoby to jednak łatwe przy ciągłej integracji. Dziękuję za Twój czas. * * * Jeśli chodzi o odpowiedź Gary'ego, zdecydowałem się na podejście hybrydowe. Zamierzam opracować platformę, która będzie punktem dostępu aplikacji webowych do danych i usług. Następnie zmodularyzuję platformę, ale wszystkie moduły pozostaną w jednym repozytorium z nadrzędnym POM. Chociaż mógłbym przechowywać je wszystkie w jednym JAR-ie, chciałbym, aby separacja ścieżek klas była wykorzystywana do celów programistycznych, aby skłonić mnie/innych do zastanowienia się, zanim moduł będzie zależny od innego.


title: Jak zamodelować elementy niesystemu informacyjnego?

text: Pracuję nad projektem związanym z jądrem (w szczególności związanym ze stosem TCP/IP jądra). Muszę zbudować kilka modeli, aby opisać funkcjonalność i komponenty mojego systemu. Początkowo myślałem o użyciu diagramu klas, ponieważ może on opisać ogólną architekturę mojego systemu. Ale to nie ma sensu, ponieważ mój kod jest BARDZO ustrukturyzowany (napisany w standardowym C). Myślałem również o DFD: opisywałyby procesy mojego systemu i przepływ danych. Ale zawierają coś, co tak naprawdę nie pasuje: magazyny danych. Nie mam tu żadnych baz danych (w ogóle). Jeśli chodzi o funkcjonalność, inni członkowie zespołu zasugerowali użycie diagramów aktywności i sekwencji, co jest dla mnie w porządku, ale co z komponentami systemu? Więc w zasadzie moje pytanie brzmi: jeśli chcę opisać komponenty mojego systemu, co sugerujesz jako sensowny diagram? Ponownie, projekt jest projektem badawczym zorientowanym na systemy niskiego poziomu, praktycznie bez interfejsu użytkownika.


title: Kreator obrazu 2D do gry wideo

text: Muszę zrobić kilka obrazów do zręcznościowej gry wideo, którą tworzę w Javie. W tej chwili mam rysunki, które są animowane, ale są dwa problemy. 1. Rysunki są okropne, przez co gra nie zyskuje wystarczającej uwagi. 2. Trudno jest zmienić każdą współrzędną rysunku, ponieważ rysunki są dość złożone. Chciałbym użyć obrazów. Czuję, że mogą rozwiązać mój problem. Wyglądałyby lepiej niż rysunki i miałyby tylko współrzędne x i y, a nie wiele współrzędnych, których potrzebuję dla każdego rysunku. W pewnym sensie mam więc dwa pytania. 1. Czy obrazy rzeczywiście pomogłyby? Czy rozwiążą moje 2 problemy? Chcę tylko wyjaśnić. 2. Jak zrobiłbym te obrazy. Nie sądzę, żebym mógł je skopiować z internetu, ponieważ planuję opublikować tę grę. Czy jest więc oprogramowanie, w którym można tworzyć własne obrazy? (Musi być w typie obrazu, który obsługuje Java. Pracuję z javą). To również, jak stwierdza nagłówek, musi być obrazem 2D; nie 3D


title: Jak nazywa się argument funkcjonalny w fold?

text: Jaka jest nazwa argumentu funkcjonalnego w funkcji wyższego rzędu fold/reduce? Pracuję nad monadyczną biblioteką przetwarzania tabelarycznego, w której wiersze są składane w celu uzyskania prostych analiz (takich jak znajdowanie minimum, maksimum, średniej kolumny). Dlatego szukam dobrej nazwy dla argumentu funkcji `fold` i każda nazwa, która jest dobrze ugruntowana w społeczności ML (lub Haskell lub Common Lisp jako drugi i trzeci kandydat) byłaby interesująca. Nazwa taka jak `f` jest powszechna w opisie funkcji `fold`, jest jednak nieopisywalna i lepiej pasowałby rzeczownik.


title: W jaki sposób posiadanie zasobów zapisanych w domenach dodatkowych skraca czas ładowania witryny?

text: Wczoraj poszedłem na wywiad, w którym zadano mi to pytanie: „W jaki sposób przechowywanie zasobów (obrazów/filmów) w domenie dodatkowej (assets.example.com) skraca czas ładowania domeny example.com?” Na to odpowiedziałem, że mając kod „wywołaj” te zasoby z dodatkowej witryny, zmniejsza to ruch przychodzący do domeny głównej, a zatem stosuje przepustowość tylko do domeny głównej, a nie musi również obsługiwać przepustowości w celu żądania zasobów. Czy to jest poprawne? Ponadto, jeśli mam rację, czy uważasz, że ma sens zakładanie nowych witryn internetowych, czy wolisz to zrobić po osiągnięciu dużego natężenia ruchu?


title: Zalety i wady wymuszonej reformy kodu

text: Obecnie pracuję w miejscu, które może próbować zmusić programistów do używania zautomatyzowanego programu formatującego kod podczas ewidencjonowania kontroli wersji. Poszukuję opinii deweloperów na temat zalet i wad robienia tego... jak myślisz, że to pomogłoby lub przeszkodziło deweloperom. Mój konkretny przypadek dotyczy Java/JSP, ale myślę, że pytanie może dotyczyć dowolnego języka.


title: Czy możliwe jest pomyślne przejście z bycia inżynierem oprogramowania wbudowanego?

text: Jestem świeżo upieczonym absolwentem college'u i zajmuję się głównie programowaniem wysokiego poziomu (np. Java, C# i Python). Otrzymałem ofertę od dobrej firmy na stanowisko inżyniera oprogramowania wbudowanego, gdzie będę programował urządzenia w C, obsługiwał przerwania i tak dalej. Jeśli podejmę tę pracę i zdecyduję się później wrócić do tworzenia oprogramowania wysokiego poziomu, czy będę w niekorzystnej sytuacji? Czy istnieją praktyki programistyczne specyficzne dla programowania wbudowanego, które zniechęcą mnie do występów na wysokim poziomie? Krótko mówiąc, jeśli interesuje mnie głównie rozwój na wysokim poziomie, czy byłaby to bardzo długa dywersja z bardzo małymi korzyściami?


title: Omiń HR, aby uzyskać rozmowę kwalifikacyjną

text: Niedawno wysłałem podanie o stanowisko, na które się kwalifikuję i otrzymałem następującą odpowiedź: „Z przykrością informujemy, że Twoje obecne kwalifikacje nie odpowiadają tym, które są potrzebne do naszych obecnych wakatów. ściśle pasuje do Twoich umiejętności, skontaktujemy się z Tobą w tym czasie." Wymienione stanowisko wymagało umiejętności technicznych A, B, C, D i E z sympatycznymi X i Y. W swoim CV i liście motywacyjnym wymieniłem, że miałem doświadczenie z A do E oraz X. Nie nie mam żadnego doświadczenia z Y. To prowadzi mnie do przekonania, że mam kwalifikacje na to stanowisko, a przedstawiciel działu kadr (który nie wydaje się być częścią firmy) myli się. Poprosiłem o wyjaśnienie jakich kwalifikacji mi brakowało, ale jeszcze nie otrzymałem odpowiedzi. Zrobiłem sporo researchu na temat firmy i programistów, z którymi będę pracował i myślę, że byłoby to świetne miejsce do pracy. Nie chcę tak łatwo brać nie za odpowiedź. Zastanawiam się nad bezpośrednim skontaktowaniem się z liderem rozwoju (poprzez Twitter) w firmie i poproszeniem go o zapoznanie się z moim CV. Nie wie, kim jestem. Czy to dobry pomysł?


title: Jakie są organizacyjne korzyści TDD nad rozwojem funkcjonalnym popartym testami jednostkowymi?

text: Słyszałem o TDD jako o paradygmacie rozwoju organizacyjnego, w którym wszyscy programiści są proszeni o pozwolenie na testowanie napędzania rozwoju, a także słyszałem o organizacjach, które nie stosują TDD, o ile pokrycie testów jednostkowych osiąga blisko 90 procent dla aplikacja. Jedyną rzeczą, której nigdy nie słyszę, jest to, dlaczego organizacja ustalałaby standard dla TDD, szczególnie gdy jest to indywidualna dyscyplina programistyczna.


title: Sprzedać kod za pomocą dynamicznie połączonego kodu Open Source GPL?

text: Jestem naprawdę zdezorientowany. GPL stwierdza, że jeśli zaczniesz od kodu GPL i zmodyfikujesz ten kod, musisz udostępnić swój kod z modyfikacjami bezpłatnie również na licencji GPL. Ale co, jeśli po prostu użyjesz istniejącego kodu GPL bez modyfikacji jako biblioteki? Czy możesz wtedy napisać oprogramowanie, które będzie komunikować się z tym kodem, niezmienionym, to jest zamknięte źródło?


title: Licencje open source (w szczególności GPL) i format źródłowy gamemakera

text: Teraz dzięki Gamemaker Studio pliki źródłowe nie są już przechowywane w zastrzeżonym formacie - zamiast tego są przechowywane jako proste pliki XML zawierające wszystkie dane. Teraz zastanawiam się, czy projekty tworzone za pomocą gamemakera mogą być licencjonowane przy użyciu licencji open source - szczególnie zastanawiam się nad rodzinami GPL i BSD/APACHE? A jeśli tak to jak? Największym zarzutem, jaki widzę, jest to, że wszystkie pliki są generowane przez gamemaker - i regenerowane za każdym razem, gdy gamemaker zapisuje/ładuje. Głównym problemem jest to, że GM usunie wszelkie "nierozpoznane" dane z xml (więc wszelkie komentarze). W tym informacje o prawach autorskich. Drugim problemem jest to, że gamemaker zazwyczaj tworzy kilkadziesiąt plików, w zasadzie dla każdej funkcji tworzony jest osobny plik. Typowy wygenerowany plik xml wygląda następująco: <!--Ten dokument jest generowany przez GameMakera, jeśli edytujesz go ręcznie, robisz to na własne ryzyko!--> <object> <spriteName><undefined></spriteName> <solid>0</solid> <visible>-1</visible> <depth>0</depth> <persistent>0</persistent> <parentName><undefined></parentName> <maskName><undefined>< /maskName> <events> <event eventtype="0" enumb="0"> <action> <libid>1</libid> <id>603</id> <kind>7</kind> <userelative>0 </userelative> <isquestion>0</isquestion> <useapplyto>-1</useapplyto> <exetype>2</exetype> <functionname></functionname> <codestring></codestring> <whoName>self</whoName > <relative>0</relative> <nie>0</isnot> <argumenty> <argument> <rodzaj>1</kind> <string>x ml = FS_xml_open("C:\Użytkownicy\użytkownik\Dokumenty\system plików\student.xml"); </string> </argument> </arguments> </action> </event> <event eventtype="9" enumb="13"> <action> <libid>1</libid> <id>603</ id> <kind>7</kind> <userelative>0</userelative> <isquestion>0</isquestion> <useapplyto>-1</useapplyto> <exetype>2</exetype> <functionname></functionname> <codestring></codestring> <whoName>self</whoName> <relative>0</relative> <isnot>0</isnot> <arguments> <argument> <kind>1</kind> <string>var root_elem = FS_xml_root_element (xml); show_message("zacznij od elementu głównego: " + FS_xml_get_elem_name(xml, root_elem)); xml_test_display_func(xml, root_elem, ""); </string> </argument> </arguments> </action> </event> </events> <PhysicsObject>0</PhysicsObject> <PhysicsObjectSensor>0</PhysicsObjectSensor> <PhysicsObjectShape>0</PhysicsObjectShape> <PhysicsObjectDens >0.5</PhysicsObjectDensity>       <PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>       <PhysicsObjectGroup>0</PhysicsObjectGroup>       <PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>       <PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>       <PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>       <PhysicsObjectAwake>- 1</PhysicsObjectAwake> <PhysicsObjectKinematic>0</PhysicsObjectKinematic> <PhysicsShapePoints/> </object> (gdzie widać, że zaprogramowana ilość niewygenerowanego kodu odpowiada 4 wierszom). Dodanie czegoś takiego jak `<!-- copyright 2013 ....... >` do każdego pliku nie działa, ponieważ powiadomienie zostanie po prostu zastąpione w momencie, gdy gamemaker "zapisze". Czy korzystanie z centralnego pliku informacji o prawach autorskich jest „wystarczające” dla formatów open source? Czy można tego używać z GPL/APACHE? Jeśli jest niezgodny, co by to spowodowało?


title: Usługa WCF w aplikacji N-warstwowej

text: Czy zaleca się używanie biblioteki usług WCF podczas opracowywania aplikacji systemu Windows N-warstwowej? Czy lepiej jest używać kreatorów VS do tworzenia DataTables i DataSets? A jeśli tak, czy powinienem dodać wszystkie moje tabele do jednego zestawu danych, czy mieć zestaw danych dla każdej tabeli? To wszystko jest dla mnie nowe i chcę się tego nauczyć we właściwy sposób.


title: Alternatywy dla zapisywania danych za pomocą jquery

text: Nie jestem pewien, czy to pytanie jest uważane za zbyt szerokie, ale chciałbym skontaktować się z moimi kolegami programistami, aby zobaczyć, jakie są alternatywy do zapisywania danych za pomocą jquery. Mam system zarządzania treścią, który generuje zestaw stron HTML o nazwie IETM (Interactive Electronic Technical Manual). Strony HTML są napisane w HTML i używają jquery. ITEM ma być lekki, przenośny i działać w większości nowoczesnych przeglądarek. Szukam sposobu na zaoszczędzenie danych. Rozważałem ciasteczka i sqlite. Czy istnieją inne alternatywy dla zapisywania danych za pomocą jquery?


title: Czy Twoja firma ma zasady architektoniczne? Które?

text: Czy Twoja firma ma spisane i uzgodnione zasady architektoniczne? Jak doszło do tego? Jak zarządzasz posiadaniem i akceptacją tych zasad? Pomagają ci czy przeszkadzają?


title: Jaka jest idea definiowania prostokątów z dwoma punktami?

text: Nie chodzi o to, że to nie ma sensu, ale po prostu działa to niezręcznie w 99% przypadków. Często w grafice 2D prostokąty są inicjowane, przechowywane i przetwarzane jako para punktów. W żadnym konkretnym języku, class Rect: p1, p2: point Bardziej sensowne jest zdefiniowanie prostokąta jako dwóch wartości x i dwóch wartości y, w ten sposób: class Rect xleft, xright: int ytop, ybottom: int Z dwoma punktami, jeśli w jakimś miejscu w kodzie źródłowym, w którym chcesz użyć wartości y na górze, musisz powiedzieć rect.p1.y (hmmm, zatrzymaj się i pomyśl, czy to p1 czy p2), ale z czterema wartościami jako zwykłe elementy danych, jest jasne i bezpośrednie: rect.ytop (nie trzeba myśleć!) Użycie dwóch punktów oznacza, że mając do czynienia z pionem, musisz zaplątać się w poziome; istnieje obca relacja między niezależnymi elementami. Jak narodził się ten dwupunktowy pomysł i dlaczego się utrzymuje? Czy ma jakąś przewagę nad samymi współrzędnymi x i y? DODANO UWAGA: To pytanie dotyczy prostokątów wyrównanych X-Y, na przykład w menedżerach okien i zestawach narzędzi GUI, a nie w kontekście dowolnych kształtów w aplikacji do rysowania i malowania.


title: Co jest nie tak z generykami Javy?

text: Widziałem kilka razy na tej stronie posty potępiające implementację generyków w Javie. Teraz mogę uczciwie powiedzieć, że nie miałem żadnych problemów z ich używaniem. Jednak nie próbowałem sam tworzyć klasy generycznej. Jakie masz więc problemy z ogólną obsługą Javy?


title: Refaktoryzacja lub aktualizacja baz danych w celu obsługi nowych funkcji

text: Kilka odpowiedzi na pytanie o schemat bazy danych sugerowało dodatkową tabelę normalizującą bazę danych pod kątem funkcji, która nie jest częścią bieżących wymagań (tabela UserDepartment pozwalająca na relacje wiele-do-wielu między pracownikami/użytkownikami a różnymi działami, które mogą należeć do.). Nie przeciwko normalizacji. Wygląda na to, że jeśli chodzi o projektowanie baz danych, istnieje silna zachęta do włączenia funkcji, które są „pewne”, że ktoś będzie chciał w przyszłości. Czy tak trudno jest dodawać tabele/pola do bazy danych, aby uwzględnić funkcje, że istnieje tendencja do nadmiernej inżynierii? Czy w razie potrzeby nie zostałyby zrefaktoryzowane lub zaktualizowane, tak jak reszta aplikacji? Ponawianie czynności nigdy nie jest zabawne, ale można przenosić dane z jednej tabeli do nowej. Po prostu nie jestem pewien, gdzie skończy się ten tok myślenia. Edycja: Jest tak duża niechęć do tego, zastanawiam się, ile projektów kończy się nie dodaniem funkcji, która wymaga drastycznej zmiany bazy danych lub jest nieznormalizowanym podejściem, takim jak dodanie pola DepartmentID2 zamiast nowej tabeli. Potrzeba wielu działów dla pracownika to powszechny problem domeny. Po prostu nie zauważyłem wielu schematów baz danych, które są zaśmiecone relacjami wiele do wielu.


title: Jak zorganizować MST, gdy zniknie jeden węzeł?

text: Robię swoje badania i utknąłem z pytaniem: mam minimalne drzewo opinające (algorytm prim), teraz jeden węzeł w moim drzewie zostaje usunięty, zastanawiam się, czy jest sposób na zreorganizowanie mojego drzewa tak, aby optymalność nadal się utrzymuje? Szukam tutaj kilku sugestii i będę wdzięczny za twoją pomoc. Dziękuję Ci! Uwaga: Wszystkie wagi krawędzi wynoszą 1 (wykres jednostkowy)


title: Wstrzykiwanie zależności za pomocą automatów skończonych i zasady segregacji interfejsów

text: Próbuję dowiedzieć się, jaki jest najlepszy sposób na skonfigurowanie FSM, a także utrzymywanie czystych interfejsów i używanie kontenera IOC do korzystania z DI. Zajrzyjmy po prostu do podręcznikowego przykładu wzorca projektowego Head First z maszyną do gumy do żucia. interfejs IState { InsertQuarter(); Kwartał wyrzucania(); TurnCrank(); Obyć się(); } Czy najlepszym rozwiązaniem jest zgłoszenie wyjątku dla nieprawidłowego stanu? Po co dodawać stan, jeśli nie ma nawet zastosowania? Myślę, że to jest część, w której jestem zdezorientowany. Widziałem, jak ten prosty przykład staje się coraz bardziej złożony. Moje inne powiązane pytanie brzmi: jak wykonać DI do tych stanów? Czy maszyna stanowa i stany powinny być zarejestrowane w moim kontenerze IOC? Załóżmy, że mam usługę zamówienia i usługę inwentaryzacji, które są zależne od `StageOrderState`. Jak może wyglądać ten model obiektowy? Trudno mi przetrawić, jak faktycznie wstrzyknąć zależności do tych stanów. Domyślam się, że mogę _mógłbym_ zarejestrować stany i przekazać kontener do stanów.


title: Mac Dev Team, sugestie dotyczące zdalnego środowiska testowego Windows?

text: W porządku, więc moja sytuacja wygląda następująco: * 1 Front End Developer * 2 Back End Developers * 1 QA Tester Obecnie wszyscy mamy do przetestowania maszyny wirtualne lub drugi komputer z naszymi środowiskami Windows. Teraz prawdziwym problemem jest wygaśnięcie naszych środowisk Windows. Wpadamy teraz w punkty, w których losowo wybrane części naszego zespołu zapominają skonfigurować swoje odświeżone środowiska, przez co tracimy kilka godzin produktywności. **Co mam nadzieję osiągnąć?** Chcę spróbować skonfigurować środowisko zewnętrzne, do którego wszyscy będziemy mogli zdalnie i testować. Coś, co jest oddzielne i zewnętrzne. Jedynymi osobami, które naprawdę regularnie potrzebują środowiska, byłyby frontendy i części zespołu ds. kontroli jakości. Pracowaliby też nad tą samą sekcją. Czy ktoś ma jakieś sugestie dotyczące tej konfiguracji? Czy ktoś osiągnął coś podobnego? Czy ktoś ma jakieś sugestie dotyczące lepszej metody konsolidacji tych środowisk Windows? **Wyjaśnienie:** przez „środowisko Windows” mam na myśli komputer lokalny z kopią systemu Windows do testowania, a nie serwer Windows, na którym moglibyśmy wdrażać kod.


title: Informacje zwrotne na temat zakładania "Dojo programisty" - sugestie?

text: Poszukiwanie studium przypadku lub planu operacyjnego zakładającego „dojo programistów/hakerów” w Stanach Zjednoczonych. Oto przykład jednego, **hackerdojo.com**; możliwe, że te informacje znajdują się na ich stronie, ale nie udało mi się ich znaleźć. * * * **AKTUALIZACJA (1):** * **Wikipedia** \- http://en.wikipedia.org/wiki/Hacker_Dojo * **WSJ** \- Technicy zabierają się do pracy w Hacker Dojo (2011 /03/10) * **venturebeat** \- Hacker Dojo, wreszcie miejsce, w którym programiści mogą chodzić 24/7 (2009/08/13) * * * **AKTUALIZACJA (2):** * Nauka Matrycy Kosmicznej - Microsoft Corporation (MS Word Doc, Google Preview) * **SŁOWA KLUCZOWE:** Przestrzeń robocza zorientowana na społeczność


title: Dwa repozytoria git, jeden projekt

text: Aplikację buduję przy użyciu Code Igniter, jest ona oparta na CI-Bonfire. Wciągam gałąź dev CI-Bonfire za pomocą git, chcę, aby cały projekt był również kontrolowany przez git, ale chcę móc po prostu pobrać najnowsze zmiany z gałęzi dev CI-Bonfire, ale wypchnij moje całą aplikację do innego repozytorium. Wszystkie zmiany, które wprowadzę w plikach pochodzących z ogniska, będą zmianami konfiguracyjnymi, więc wszystkie pulle będą mogły się automatycznie scalić. czy to możliwe?


title: Dlaczego ktoś miałby kiedykolwiek chcieć używać zsynchronizowanej metody w Enum?

text: Natknąłem się na to pytanie i kilka innych w tym samym kierunku. Chociaż wiemy, że tworzenie enum jest bezpieczne wątkowo, a enums są od urodzenia singletonami. Trochę mnie dezorientuje, dlaczego ktoś miałby chcieć mieć metodę `zsynchronizowaną` z w `enum`. Tak, jestem w pełni świadomy, że metody w `enum` nie są bezpieczne dla wątków, ale co wtedy? **Nie mogą** próbować zmieniać stanu wyliczenia w jakikolwiek sposób . Jeśli nie zależy nam na zmianie stanu wyliczenia, dlaczego mielibyśmy kiedykolwiek chcieć, aby metoda w wyliczeniu była bezpieczna wątkowo.


title: Jak prawidłowo korzystać z Hibernacji

text: Jestem nowy w Hibernate, więc moje pytanie może być postrzegane jako bardzo proste, również postaram się nie być zbyt ogólny (jak zawsze jestem z tego powodu obwieszany), chociaż jak w przypadku wszystkich pytań dotyczących architektury trudno tego uniknąć że... nigdy nie wiem, gdzie zadać te pytania. Skonfigurowałem webapp przy użyciu Spring + Hibernate. Moja architektura używa serii kontrolerów, które korzystają z usług, które ostatecznie wywołują metody DAO w celu uzyskania moich obiektów domeny. Mam również GenericDAO, który implementuje wszystkie podstawowe metody dostępu do danych (findAll, findById, save, delete, update...), które rozszerzam dla mojego konkretnego Dao, więc muszę zaimplementować tylko określone metody dostępu do danych. Tak więc żądanie wyświetlenia wszystkich użytkowników będzie miało następujący przepływ: odpowiedni kontroler jest wywoływany przez mapowanie żądania, które dostarcza widokowi wynik wywołania funkcji `userService.getAllUsers()`, która jednocześnie wywołuje funkcję `userDao.findAll ()". To wszystko jest miłe i myślę, że robię to wystarczająco dobrze. Moje pytanie dotyczy relacji między obiektami domeny, więc załóżmy, że użytkownicy mają konta i dla jednego widoku chcę pokazać szczegóły użytkownika oraz jego listę kont. Nigdy nie dowiedziałem się, jaki jest najlepszy sposób na zebranie listy obiektów kont. Czy powinienem oznaczyć związek jako Chętny? Czy powinienem zadzwonić w ten sposób: user.accountList = accountService.findAccountsByUser(userId); jeśli tak jest, to jaki jest sens określania relacji w pierwszej kolejności? A może brakuje mi tu innej drogi? Co dzieje się z relacjami „wiele do wielu”? Czy muszę utworzyć obiekt domeny o nazwie UserAccount (zakładając, że konto może być powiązane z kilkoma użytkownikami), który mapuje relacje między nimi?


title: Czy wymagane jest rozróżnienie między frameworkiem js a biblioteką js?

text: Podczas przeszukiwania wielu bibliotek/frameworków javascript zauważyłem, że terminy są czasami używane zamiennie. Czy więc koncepcyjnie ważne jest rozróżnienie między frameworkiem a biblioteką? Czy ludzie poważnie podejmują decyzje na podstawie tego, czy jest to biblioteka, czy framework? Czy poszukując rozwiązania użytkownik chciałby przeglądać dwa oddzielne obszary - biblioteki i frameworki?


title: Tworzenie zdecentralizowanego systemu wykorzystującego JavaScript/HTML5?

text: Interesuję się systemami zdecentralizowanymi i obecnie rozważam samodzielne zbudowanie jednego. Rozważam użycie JavaScript i HTML5, po prostu dlatego, że bardzo ułatwia to korzystanie z systemu (wystarczy wejść na stronę). Kilka myśli: * Mogę lub nie używać innej zdecentralizowanej sieci do przechowywania, a nawet jeśli to zrobię, prawdopodobnie chcę buforować rzeczy na kliencie. Jeśli tego nie zrobię, **muszę** przechowywać rzeczy na kliencie, ponieważ informacje będą rozpowszechniane w **mojej** sieci. Czy któryś z modeli przechowywania HTML5 jest do tego odpowiedni? Czytałem gdzieś, że mają limit rozmiaru. * Kiedy używam JavaScript w przeglądarce, rozumiem, że muszę używać WebSockets zamiast zwykłych gniazd. Czy to nie zmusza mnie do używania WebSocket w mojej "specyfikacji protokołu"?


title: Czy metodę, która musi zostać zastąpiona, można uznać za prywatną?

text: Załóżmy, że mam klasę `C` z metodą `f()`, która ma być używana tylko w implementacji `C`, ale która powinna być przesłonięta przez podklasy `C`. Czy rozsądne lub "pytoniczne" jest uważanie go za prywatne, tj. nazywanie go `_f()` zamiast `f()`? Innymi słowy, czy odróżniłbyś interfejs udostępniany podklasom od interfejsu udostępnianego kodowi poza hierarchią dziedziczenia?


title: Dlaczego nowe oprogramowanie nie miałoby próbować konkurować ceną?

text: Wiem, jak działa ekonomia skali i jak większy konkurent mógłby pokonać cię ceną, gdyby chciał. Ale wydaje się, że nie ma nic lepszego do konkurowania przy wejściu na rynek oprogramowania (bez bycia nieuczciwym); nowy produkt często nie będzie tak dobry, jak ten o ugruntowanej pozycji, jeśli chodzi o funkcje. Ponadto, starsze popularne produkty są zwykle wyceniane wyżej tylko „ponieważ mogą” i nie jest prawdopodobne, że zmienią się tylko po to, by zmiażdżyć mniejszą firmę, więc wydaje się kuszące ustalenie niskiej ceny.


title: Najlepsze praktyki dotyczące obsługi wartości zmiennych poza kodem źródłowym?

text: Po kilku latach programowania w bardziej proceduralnych językach staram się owinąć głowę wokół OOP. Moje pytanie: Jaka jest najlepsza praktyka obsługi wartości zmiennych poza kodem źródłowym? Na przykład mam wartości katalogu plików i wzorce wyrażeń regularnych, które od czasu do czasu mogą wymagać ręcznej zmiany. Chciałbym uniknąć zmiany tych wartości bezpośrednio w kodzie źródłowym. Zastanawiam się nad utworzeniem pliku tekstowego, który będzie zawierał pary klucz/wartość. Następnie utworzyłbym obiekt, aby ustawić te wartości, aby można było się do nich odwoływać za pomocą dowolnych metod w moim kodzie. Czy to właściwe podejście, czy naruszam jakieś zasady OOP? Dziękuję


title: Pytania przesiewowe przed rozmową kwalifikacyjną

text: Muszę zatrudnić starszego programistę. Zmieniłem się na nowego rekrutera i poproszono go o około 3 pytania, aby zadać każdemu kandydatowi przez telefon, na który wyśle odpowiedzi, gdy zobaczę CV, aby pomóc mi odfiltrować oczywiste złe. Bardzo podoba mi się pomysł, aby nie musiałem telefonować do osób, które po prostu nie potrafią kodować, ale szczerze mówiąc, mam problemy. Kwestie szybkiego wynajmu/bez wynajmu intrygują mnie i niepokoją mnie w równym stopniu. Myślę, że można wymyślić kilka przydatnych, ale większość pytań, które zadaję w wywiadzie, ma charakter otwarty, agnostyczny językowy i oparty na dopasowaniu kulturowym. Teraz rekruter powiedział mi, że kandydat nie będzie mógł wygooglować odpowiedzi, ponieważ zostaną zadane bezpośrednio przed wysłaniem CV, ale wyraźnie nie chcę zadawać pytań, które można „wygooglować”. Nie obchodzi mnie, czy rutynowo wyszukują w Google tego rodzaju pytania. Właściwie wolałbym, żeby to zrobili! Więc, gdybyś był na moim miejscu, jakie pytania zadałbyś? Jeśli chodzi o to, co jest warte, podstawową platformą jest .Net, C#, Sql Server i inne wraz z normalnym zestawem starszych technologii. **Edytuj** Żeby było bardzo jasne… wiedza, czy kandydat wie, co robi słowo kluczowe volatile w C# lub jak utworzyłby wyrażenie regularne, które weryfikuje kody pocztowe w Wielkiej Brytanii, byłaby bezcelową informacją. To klasyczna pasza dla Google. Chcę czegoś, co demonstruje głębsze zrozumienie. Rozważałem proste pytania typu „co to jest polimoryzm” lub „wyjaśnij różnicę między „HTTP PUT a POST”, ale wydają się one całkiem proste dla seniora. Szukam czegoś, co pomoże w podjęciu decyzji o rozmowie kwalifikacyjnej z seniorem.


title: Uwierzytelnianie dwuetapowe za pomocą generatora klucza podstawy czasu na smartfonach

text: Niedawno włączyłem uwierzytelnianie dwuskładnikowe na moim koncie Google. Jednym ze sposobów uzyskania drugiego czynnika (klucza, który mam) jest zainstalowanie aplikacji na Androida na moim telefonie, która wyświetla klucz przez krótki czas. Co jest potrzebne do stworzenia rozwiązania serwera WWW połączonego z rozwiązaniem na smartfony? Używam Windows i .NET po stronie serwera i byłbym zainteresowany aplikacjami na Androida i iPhone'a. Czy istnieją już biblioteki, czy muszę zacząć od zera? Gdzie jest jakaś początkowa dokumentacja i wyjaśnienia stosowanych technik?


title: Czy wyjątki zasadniczo istnieją, aby zapobiec awariom systemu?

text: Po drugie, zastanawiałem się, czy ktoś wie, jaka jest różnica między wyjątkami (w zakresie przepływu kontroli wyjątków) a wyjątkami (takimi jak używane w Javie). Ale czy mają one zasadniczo chronić system przed awarią poprzez zamknięcie programu użytkownika?


title: Jakie są wady używania/pisania niestandardowego dostawcy członkostwa .Net?

text: Niedawno wysłałem następujące pytanie na SO: http://stackoverflow.com/questions/7197337/using-asp-net-membership-provider-with-an-existing-user-database Jak możesz zauważyć, skończyłem udzielając odpowiedzi moje własne pytanie stwierdzające, że wygląda to na napisanie / wdrożenie „Niestandardowego dostawcy członkostwa” było drogą do zrobienia. Dosłownie kilka minut później natrafiam na to pytanie: http://stackoverflow.com/questions/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407 Próbuję odpowiedzieć i otrzymaj komentarz, że dostawca członkostwa .Net jest „straszny na wielu poziomach”. Przyznam, że po raz pierwszy używam dostawcy członkostwa, ale na pewno wyglądało to zgrabnie. Nie widziałem niczego, co potwierdzałoby twierdzenie „straszne”, więc zanim zaimplementuję coś „strasznego”, miałem nadzieję, że uzyskam informację zwrotną od społeczności.


title: praktyczny sposób na naukę C?

text: Chcę zagłębić się w C i normalnie, gdy chcę nauczyć się nowego języka, myślę o prostym / osiągalnym celu projektu, który ma jakiś praktyczny cel (korzystanie z interfejsu API, automatyzacja zadania itp.). trudniej jest wymyślić jeden dla C, głównie dlatego, że wszystko, co przeczytałem, wskazuje na fakt, że głównym zastosowaniem C jest obecnie w systemach wbudowanych i bardziej złożonych projektach oprogramowania, takich jak systemy operacyjne. Czy to wskazuje mi na fakt, że nie muszę się tego uczyć, czy po prostu muszę być nieco bardziej zawiły w mojej strategii uczenia się? Odniesienia do praktycznych zasobów edukacyjnych? (poradnik/jak to daje efekt końcowy, który ma jakiś cel/korzyść)


title: Najlepszy sposób na obsługę metainformacji w bazie danych SQL

text: Mam bazę danych, w której chcę przechowywać informacje o użytkowniku i informacje o użytkowniku. Powodem takiego ustawienia było to, że strona `user_meta` może się zmieniać w czasie i chciałbym to zrobić bez zakłócania pracy głównej tabeli `user`. Jeśli to możliwe, chciałbym uzyskać poradę, jak najlepiej skonfigurować tę tabelę metadanych. Mogę ustawić tak jak poniżej: +----+---------+----------+--------------- -----+ | identyfikator | identyfikator_użytkownika | klucz | wartość | +----+---------+-----------+------------------------+ | 1 | 1 | e-mail | test@testemail.com | | 2 | 1 | nazwa | nazwa użytkownika | | 3 | 1 | adres | adres testowy | ... Albo mogę ustawić jak poniżej: +----+---------+-------+- -------------------+--------------+ | identyfikator | identyfikator_użytkownika | e-mail | nazwa | adres | +----+---------+---------+------------- -------+--------------+ | 1 | 1 | test@testemail.com | nazwa użytkownika | adres testowy | Oczywiście, górna wersja jest bardziej elastyczna, ale dolna oszczędza miejsce i być może bardziej wydajna, zwracając wszystkie dane jako jeden rekord. Jaki jest najlepszy sposób na to? A może robię to całkowicie źle i jest inny sposób, o którym nie pomyślałem?


title: Jak zorganizować test jednostkowy/integracyjny w BDD

text: Więc w końcu po wielu lekturach zrozumiałem, że różnica między BDD i TDD jest między T & B. Ale wychodzę z podstawowego tła TDD, co kiedyś było, 1. najpierw napisz test jednostkowy dla modeli baz danych 2. napisz test dla widoków (w tym momencie zacznij również od testów integracyjnych, razem z testami jednostkowymi) 3. napisz więcej testów integracyjnych do testowania rzeczy związanych z interfejsem użytkownika. Jaki byłby właściwy sposób podejścia do BDD. Powiedzmy, że mam prostą aplikację do blogowania. Biorąc pod uwagę : Kiedy użytkownik się loguje. Powinien zobaczyć listę wszystkich swoich postów. Ale do tego potrzebuję modelu z użytkownikiem wiersza, innych wpisów na blogu wiersza. Jak więc zabieramy się do pisania testów? kiedy tworzymy oprawy? Kiedy piszemy testy integracyjne (selenowe)?


title: Kiedy tworzysz projekt open source, skąd wiedzieć, kto bierze w nim udział i czy jego wersja jest dobra?

text: mój przyjaciel opracował program CAD w C, tutaj jest http://web2coders.jrcw3.com/ przekonałem go do przejścia na open source, ale mamy pewne obawy: * jeśli prześlesz projekt na sourceforge lub github wiedzieć, kto bierze udział i czy jego wersja jest dobra? * jeśli masz wiele wersji opracowywanych przez innych programistów, skąd wiedzieć, która wersja jest najlepsza, zawiera zbyt wiele błędów itd., czy musisz czytać każdą wersję, czy istnieje szybszy sposób? Naprawdę mam nadzieję, że to pytanie nie zostanie zamknięte, ponieważ zadawałem je w innych miejscach i nikt nie odpowiedział, więc stackoverflow to moja ostatnia szansa na odpowiedź


title: Legalność/etyka przeszukiwania witryny w celu skopiowania jej bazy danych?

text: Potencjalny klient freelancer chce mieć kopię wszystkich numerów telefonów z całego kraju liczącego kilka milionów ludzi w formacie CSV do swojego systemu telemarketingowego. Wysłali mi link do internetowej usługi wyszukiwania numeru telefonu. Są też sposoby na wypisanie numerów telefonów z danego regionu, po 30 numerów na raz, z następnym linkiem na dole strony, aby przejść do następnych 30. Mógłbym napisać pająka, aby przeszukiwać witrynę i w zasadzie skopiować ich bazy danych, ale czy jest to koszerne, legalne czy etyczne? Ktoś, kogo zapytałem, powiedział, że to zależy od warunków korzystania z usługi, ale witryna nie ma warunków korzystania z usługi. Co myślicie?


title: Podstawy ERP dla manekinów

text: Powstała sytuacja, w której (jeśli nie krzyczę i nie ucieknę) będę zaangażowany w system ERP. Ten projekt będzie używał w szczególności OpenERP. Moje wykształcenie to wyłącznie nauka/inżynieria/muzyka/gry/sztuka/cokolwiek. Nigdy nie postawiłem stopy w sferze systemów biznesowych ani niczego, co można by opisać słowem „przedsiębiorstwo”. Jakie jest dobre wprowadzenie do całej koncepcji ERP, OpenERP i ogólnie systemów biznesowych, odpowiednie dla osób z płaskim zerowym doświadczeniem w tym świecie? Idealne intro wyjaśniałoby, bez żadnych założeń, jakie są główne idee, terminologię, styl pracy i myślenia ludzi w tym świecie, a może kilka konkretnych sugestii, jak można majstrować przy kopii OpenERP, aby uzyskać podstawową znajomość.


title: Co może spowolnić programistę?

text: Jakie rzeczy spowalniają programistę? Spróbuj powstrzymać się od publikowania odpowiedzi, które: * są teraz wolne, ale przydatne w tej funkcji. (TDD, Refaktoryzacja, ...) * wymień rozproszenie.


title: Pojęcie przestrzeni adresowej

text: Przeszukałem ideę przestrzeni adresowej, która jest „Zbiorem wszystkich dozwolonych adresów w pamięci dla danej aplikacji. Przestrzeń adresowa reprezentuje ilość pamięci dostępnej dla programu.` Nie jestem w stanie dowiedzieć się, jak ta koncepcja jest zaimplementowana? A jak to działa z systemem operacyjnym? Każda pomoc byłaby mile widziana.


title: Maszyny stanowe a wątki

text: Alan Cox powiedział kiedyś: „Komputer to maszyna stanów. Wątki są dla ludzi, którzy nie potrafią zaprogramować maszyn stanów”. Ponieważ bezpośrednie pytanie Alana nie jest dla mnie opcją, wolałbym zapytać tutaj: jak osiągnąć wielowątkowość w języku wysokiego poziomu, takim jak Java, używając tylko jednego wątku i maszyny stanów? Na przykład, co jeśli są 2 czynności do wykonania (wykonywanie obliczeń i wykonywanie operacji we/wy), a jedno działanie może zostać zablokowane? Czy używanie „tylko maszyny stanowej” jest realną alternatywą dla wielowątkowości w językach wysokiego poziomu?


title: Kalendarium programisty pod względem językowym?

text: > **Alan Perlis powiedział kiedyś: „Język, który nie wpływa na sposób myślenia > o programowaniu, nie jest wart poznania”.** Nie jestem dumny z tego, że zacząłem programować w językach skryptowych ( _php_ , potem _javascript_ i teraz ucząc się _python_ ). Nie mam żadnego doświadczenia w _c,c++,java,.net,c#,objective-c_. Programowanie to tak rozległa dziedzina, że zajęcie się wszystkimi jej aspektami zajęłoby wieczność. Nie mogę cofnąć się w czasie. Ale jest wiele osób, które skorzystałyby na tym pytaniu. **MyQuestion** :-Jeśli ktoś miał możliwość cofnięcia się w czasie, do jakich języków programowania chronologicznie powinien strzelać ten programista? Oczywiste odpowiedzi mogą opierać się na opinii i celu/wymaganiach, ale pamiętając o ograniczonym czasie, jakim dysponujemy, których języków nie powinniśmy przegapić, aby uzyskać dokładne zrozumienie programowania. **Różnica w opiniach jest w porządku,po prostu szukam przybliżonej chronologii.** Mam nadzieję, że jestem jasna i niezrozumiana.


title: Jakie typy dokumentów specyfikacji istnieją w cyklu życia aplikacji?

text: Deweloperzy w dużych firmach zwykle mają wiele dokumentów specyfikacji, które piszą na każdym etapie danego oprogramowania. Słyszałem o niektórych z nich i chciałbym, aby ktoś powiedział mi o wszystkich istniejących dokumentach dotyczących specyfikacji. Na przykład słyszałem o dokumentacji szacowania (napisanej przed rozpoczęciem projektu), specyfikacjach wysokiego poziomu, specyfikacjach niskiego poziomu i specyfikacjach implementacji. Czy jest ich więcej? Czy możesz je posortować tak, jak pojawiają się w cyklu życia jakiejś aplikacji? Uwaga: powodem tego pytania jest to, że muszę przekazać jakiś projekt innej osobie i musiałbym napisać wszystkie te dokumenty ze specyfikacjami. Jakoś nie uważam, że pisanie niskopoziomowych specyfikacji jest zawsze najlepszym rozwiązaniem (jeśli się mylę, daj mi znać), dlatego zadałem to pytanie.


title: Dlaczego pływak jest domyślnie w większości języków?

text: W językach programowania dla reprezentują liczby masz (głównie) dwa typy: `Int(s)` i `floats`. Nas z `Int` jest bardzo łatwe. Jednak floaty powodują wiele nieoczekiwanych niespodzianek: http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/float.html Zastanawiam się, dlaczego nie jest używany typ dziesiętny ma większy sens, ponieważ domyślne dla literałów i normalnej matematyki? Gdzie normalna matematyka jest bardziej precyzyjna?


title: Czy lepiej nauczyć się html, javascript, php, a potem mysql, jeśli chcesz założyć własną stronę?

text: Czy lepiej nauczyć się html, javascript, php, a potem mysql, jeśli chcesz uruchomić swoją stronę? Lepiej uczyć się tego w tej kolejności, czy nie?


title: Jako młody student aspirujący do kariery programisty, co powinienem myśleć o oprogramowaniu open source?

text: Od czasu do czasu w niektórych witrynach technologicznych pojawia się taki nagłówek: http://www.osor.eu/news/nl-moving-to-open-source-would-save- government-one-to-four -miliardy Moją pierwszą myślą o rządzie i organizacjach przechodzących na oprogramowanie open source jest to, że mnóstwo programistów straciłoby pracę, a branża skurczyłaby się. Jednocześnie wydaje się, że w wielu społecznościach programistycznych bardzo zachęca się do rozprzestrzeniania i używania oprogramowania open source. Czy moje przekonanie, że pełne objęcie oprogramowania open source wszędzie zaszkodzi branży oprogramowania, jest nieporozumieniem? Jeśli tak nie jest, to dlaczego tak wielu programistów kocha oprogramowanie open source?


title: Jaka jest różnica z Androidem, gdy iOS nie jest otwarty?

text: Moje pytanie może wydawać się głupie, ale czytałem w wielu książkach o Androidzie, że lepsza część Androida jest otwarta, a iOS jest zamknięty. Ale z punktu widzenia programisty, kogo to obchodzi? Programistom zależy tylko na platformie: czy łatwo ją programować, łatwo uzyskać pomoc w sieci itp. Nie obchodzi ich, czy platforma jest otwarta, czy zamknięta. Jedna książka zawierała dodatkowe informacje, ale nie bardzo to rozumiem. Ponieważ iOS nie jest otwarty, będę mógł dzielić się moją pracą z innymi tylko wtedy, gdy Apple na to pozwoli. Tak więc, jeśli piszesz aplikację i chcesz ją udostępnić, musisz mieć pozwolenie Apple, ale nie Androida? Proszę, pomóż mi zrozumieć ten punkt. Przygotowuję się do prezentacji na Androidzie. I nie wiem, czy powinienem umieścić ten punkt w mojej prezentacji.


title: Czym jest klasyczne programowanie obiektowe?

text: Słyszałem frazę _klasyczne programowanie obiektowe. Czy różni się od obecnego programowania obiektowego, takiego jak klasyczne ASP i ASP.net?


title: Wzorce projektowe - czy ich używasz?

text: Będąc studentem informatyki, niedawno jeden z naszych nauczycieli przedstawił mi ogólny zarys wzorców projektowych. Zrozumiałem, do czego służą, ale niektóre aspekty wciąż mnie denerwują. Czy naprawdę są używane przez większość programistów? Mówiąc o doświadczeniu, miałem trochę problemów z programowaniem, rzeczy, których nie mogłem przez jakiś czas rozwiązać, ale Google i kilka godzin badań rozwiązało mój problem. Jeśli gdzieś w sieci znajdę sposób na rozwiązanie mojego problemu, czy jest to wzorzec projektowy? Czy go używam? A także, czy wy (programiści) szukacie wzorców (przy okazji, gdzie mam szukać?), kiedy zaczynacie programować? Jeśli tak, to z pewnością jest to nawyk, który muszę zacząć przyswajać. AKTUALIZACJA: Myślę, że kiedy pytam, czy programiści ich używają, pytam, czy kiedy masz problem z rozwiązaniem, myślisz „Och, powinienem użyć tego wzorca”.


title: Właściwy projekt programu do składania formularza

text: Utknąłem, zastanawiając się, jakie jest najlepsze rozwiązanie poniższego problemu: opracowuję formularz, taki jak GUI, z kilkoma miejscami na dane wejściowe. Obecnie przechowuję każdy element UI w ArrayList reprezentujący każdy modułowy komponent formularza (oddzielne układy zawierające elementy UI powiązane ze sobą) Następnie przekazuję te ArrayLists do nowej klasy, która będzie następnie obsługiwać zbieranie danych wprowadzonych przez użytkownika po kliknięto przycisk przesyłania. Czuję, że ta metoda przekazywania elementów interfejsu użytkownika przez ArrayList nie jest zbyt dobrą praktyką. Jeśli ktoś ma jakieś lepsze sugestie, chciałbym je usłyszeć, ponieważ uważam, że ta metoda jest nieco nieczysta.