title: Ogromny długi narzut w porównaniu z natywnym połączeniem?

text: Uruchom prosty test JDK 1.7.0_45 (Windows 7, 64bit): Test 1: długi start = System.nanoTime(); for (int i=0; i < 1000000; i++) { System.currentTimeMillis(); } upłynęło = System.nanoTime() — start; Versus Test 2: długi start = System.nanoTime(); długa regulacja = 313231; for (int i=0; i < 1000000; i++) { długi wynik = System.currentTimeMillis() + dostosowanie; } upłynęło = System.nanoTime() — start; Na moim systemie pierwszy test przebiegł przy około 28 nano/połączenie. Drugi około 1250 nano/call. To aż 44 razy więcej. Czy ktoś może wyjaśnić tak ogromną różnicę?


title: Aplikacja internetowa Java ze strukturą wtyczek i możliwością łączenia się ze źródłem w celu aktualizacji

text: Szukałem wszędzie dobrych źródeł, ale albo szukałem niewłaściwych słów kluczowych, albo po prostu czegoś brakuje. Chcę przebudować aplikację internetową, której używam od jakiegoś czasu. Wiele części jest nieaktualnych i ciągle dorzucamy małe hacki, aby nadać im nowe życie. Więc to, co chciałbym zrobić, to przeprojektować go od podstaw, zbudowany na pewnego rodzaju frameworku wtyczek. Zanim przejdę dalej, jestem mniej więcej średnio zaawansowanym programistą Java. Pod pewnymi względami mam nadzieję, że wykorzystam ten projekt jako wielkie doświadczenie edukacyjne. Dużo czytałem o OSGi i wygląda na to, że jest to najbardziej kompletny framework. Idealnie, chciałbym uzyskać aplikację internetową z wynikiem końcowym, w której mogę uruchomić jedną instancję jako moje środowisko hostingowe, a inne instancje mogą się z nią połączyć, aby pobrać nowe i zaktualizowane wtyczki. Ostatecznie będę chciał zablokować te wtyczki na podstawie pewnych niezdecydowanych kryteriów, kto może je uzyskać (w zasadzie niektóre będą po prostu aktualizacjami, inne zapewnią nową funkcjonalność i powinny być „kupowane” za pośrednictwem zewnętrznego systemu). Ale to prawdopodobnie zostanie załatwione w późniejszej fazie. Powinien istnieć widok administracyjny do zarządzania pakietami w gorącym środowisku (unikający konieczności ponownego uruchamiania serwera w celu aktualizacji). Wiem, że wszystkie te rzeczy są możliwe, po prostu staram się znaleźć dobre źródła informacji. Wszystkie tutoriale OSGi, które znajduję, wydają się zbyt uproszczone. Jeśli ktoś tutaj może poprowadzić mnie we właściwym kierunku na którymkolwiek lub wszystkich przedmiotach, których szukam, byłoby to bardzo mile widziane. Poza tym jest to mój pierwszy post, więc wezmę wszelkie uwagi/krytyki dotyczące treści mojego posta. Dziękuję!


title: Dlaczego Java nie umieszcza nazwy pliku w args?

text: W C i C++ metoda main przechowuje nazwę pliku na pierwszej pozycji tablicy w argv[0]. Jednak w Javie nazwa pliku nie jest zawarta w tablicy ciągów args. Czy jest ku temu praktyczny powód? Rozumiem, że to powoduje, że iteracja za pomocą argumentów wiersza poleceń jest oparta na 0 zamiast na 1, ale czy jest to korzyść? Czy nazwa pliku została właśnie uznana za bezużyteczną?


title: Pytanie dotyczące wymagań systemowych

text: Mam scenariusz, w którym określona usługa sieci Web musi być używana na podstawie stanu, aby skonfigurować informacje o użytkowniku. Na przykład, jeśli stan to NY lub NJ, wywołaj usługę A, jeśli stan to WA, wywołaj usługę B itd. Ale określenie, jaka usługa ma być wywołana, to chyba „JAK”, aby skonfigurować informacje o użytkowniku, a nie „CO”. Czy powinienem więc mieć tylko jeden system stwierdzający wymagania, który musi mieć możliwość skonfigurowania informacji o użytkowniku na podstawie stanu? EDIT: Chciałbym również dodać, że usługi zaimplementowane dla różnych stanów mogą wymagać podania innych informacji oprócz podstawowych szczegółów, takich jak imię i nazwisko. Czy usługi, dane wejściowe do usług, dane wyjściowe z usługi, co program musi zrobić z danymi wyjściowymi itp., powinny być częścią wymagań systemowych? Wydaje mi się, że wszystkie te kwestie dotyczą bardziej „JAK” niż „CO” – więc czy jest to sfera wymagań?


title: Najszybszy język funkcjonalny

text: Ostatnio zagłębiałem się w programowanie funkcjonalne, zwłaszcza w języku Haskell i F#, wcześniejszym bardziej. Po pewnym czasie googlowania nie mogłem znaleźć porównania porównawczego bardziej znanych języków funkcjonalnych (Scala, F# itp.). Wiem, że to niekoniecznie jest sprawiedliwe dla niektórych języków (przychodzi mi na myśl Scala), biorąc pod uwagę, że są to hybrydy, ale chcę tylko wiedzieć, który jest lepszy od którego w jakich operacjach i ogólnie.


title: Projektowanie aplikacji z jednostronicowym interfejsem użytkownika opartym na javascript

text: Mam aplikację jednostronicową, w której wszystko w interfejsie użytkownika jest oparte na javascript, więc każda operacja wymagająca danych lub aktualizacji danych odbywa się za pośrednictwem żądań Ajax. Sposób, w jaki wszystko jest teraz konfigurowane, polega na tym, że moje wywołania Ajax są tworzone do jednego pliku ajax.php, który zajmuje się kierowaniem ich do właściwej metody usługi. Działa to dobrze, ale jest jeden problem. Za każdym razem, gdy mam operacje wymagające identyfikatora użytkownika, nie chcę przekazywać ich jako części żądania ajax, aby zapobiec manipulacji. Ponieważ mam sesję działającą po stronie serwera, mam usługę bezpieczeństwa, z której mogę pobrać identyfikator użytkownika aktualnie zalogowanego użytkownika. Bezpieczeństwo robi to za pomocą obiektu Session, który abstrahuje dostęp do sesji (w moim przypadku , $_SESSION w PHP) implementujący interfejs. Moja usługa bezpieczeństwa jest wstrzykiwana do innych usług w razie potrzeby, więc na przykład, jeśli mam metodę PostService->findUserPosts(), ta metoda używa metody getUserId() wstrzykniętego obiektu SecurityService, aby ustalić identyfikator użytkownika zamiast go mieć przekazany jako argument. Problem polega na tym, że podejrzewam (i inni wydają się zgadzać), że nieprzekazywanie identyfikatora użytkownika do usługi jest złym projektem. Ale jak obejść się bez wysyłania identyfikatora użytkownika przez ajax? Przychodzi mi do głowy kilka opcji, z których żadna nie podoba mi się ani nie znam dobrego sposobu implementacji: 1) Dodaj warstwę kontrolera po stronie serwera, w takim przypadku mogę wywołać SecurityService->getUserId() w kontrolerze i przekazać oddzielne wywołanie do PostService->findUserPosts($userId); problem z tym podejściem polega na tym, że wymaga ode mnie dodania kilku kontrolerów, które są w większości dość zbędne. Tak jak jest, mam już metodę PostService->findPosts(), która zasadniczo wywołuje tylko PostGateway->findPosts(). Mogę żyć z tą redundancją, ponieważ będzie wiele miejsc, w których służba będzie musiała zrobić więcej. Ale dodanie trzeciej warstwy za pomocą kontrolera z metodą findPosts() wydaje się zbyt uciążliwe. 2) Przekaż identyfikator użytkownika w żądaniu ajax i wymyśl jakiś mechanizm manipulacji, aby upewnić się, że żądanie ajax nie może zostać zmienione. Mógłbym to zrobić, mieszając ciąg adresu URL mojego żądania i dodając go jako parametr, a następnie na serwerze porównując hash. Jest to jednak bardziej zaciemnianie niż cokolwiek innego, ponieważ skrót musiałby być generowany po stronie klienta, co oznacza, że ktoś przeglądający kod może dowiedzieć się, w jaki sposób generowany jest skrót. 3) Utrzymuj rzeczy takimi, jakie są, pamiętając, że mój identyfikator użytkownika przynajmniej nie jest zakodowany na stałe i można użyć różnych implementacji obiektu Session, w ten sposób identyfikator użytkownika można pobrać na wiele sposobów, nie wiążąc mnie z PHP Obiekt $_SESSION. 4) Użyj hybrydowej metody #1 i bieżącej konfiguracji, w której jeśli potrzebuję dostępu do informacji o sesji, używam kontrolera, w przeciwnym razie dzwonię bezpośrednio do usługi. To może działać, chociaż nie wydaje się to czystym, ujednoliconym podejściem. Próbowałem to rozgryźć za pomocą dwóch oddzielnych pytań dotyczących oddzielnych mniejszych problemów, ale myślę, że brak kontekstu utrudniał odpowiedź, więc pomyślałem, że sformułowam pytanie z całym problemem. Sugestie są mile widziane. Sugestie są mile widziane. A może powinienem powiedzieć, bardzo potrzebne! **UPDATE:** być może poprawnym kompromisem byłoby użycie metody PostService->findByUser($userId), a następnie metody UserService->findPosts(), która pobiera identyfikator użytkownika z SecurityService w taki sam sposób, jak robi to teraz PostService?


title: Na co zwrócić uwagę przy podejmowaniu decyzji, które technologie zastosować w nowym projekcie?

text: Niedługo rozpoczynamy więc nowy projekt i trzeba podjąć wiele decyzji. Najbardziej interesuje mnie: **Co musisz wziąć pod uwagę przy podejmowaniu decyzji, jakich technologii użyć?** Zawsze jest coś, za czym tęsknisz i dopiero w połowie projektu zdajesz sobie sprawę, _" O tak... Powinienem był o tym pomyśleć..."_ i zwykle jest to coś, co skłoniłoby cię do skorzystania z innej technologii. Chciałbym usłyszeć, co myślicie. Może przygotuj ładną, wyczerpującą listę, która pomoże architektom na całym świecie w podejmowaniu bardziej świadomych decyzji.


title: Czy konwencja nazw pakietów Java jest błędna?

text: Wszyscy znamy konwencję nazw pakietów Java polegającą na odwracaniu nazwy domeny. Tj. `www.evilcorp.com` zgodnie z konwencją wybrałby pakiety java `com.evilcorp.stuff`. Coraz częściej mam tego dosyć. Jako komercyjny programista raz po raz spotykam się z tym, że nazwa pakietu oprogramowania jest zupełnie nieistotna ze względu na jakiś rebrand, przejęcie lub podobne. W świecie open source zmian nazw jest mniej, więc ma to sens. Wydaje mi się jednak, że okres trwałości wielu części oprogramowania (komercyjnego/wewnętrznego) jest znacznie dłuższy niż organizacji, która je tworzy. Problem często pogarszają projekty oprogramowania, które na czele działu marketingu używają nazwy _du jour_ w odniesieniu do określonego projektu. Nazwa, która bez wątpienia zmieni się 3 miesiące w dół linii, aby nowe szaty cesarza wydawały się świeże i nowe. Z tego powodu w większości przestałem używać odwrotnej domeny jako nazwy pakietu. To prawda, że jeśli robi się to na dużą skalę, istnieje ryzyko kolizji nazw, ale z pewnością jest to łagodzone przez używanie „unikalnych” nazw oprogramowania, unikanie ogólnych słów lub używanie odwrotnej domeny w przypadku projektów, które mają być sprzedawane/wydawane jako biblioteki . Inne przemyślenia?


title: Jak poprawić nawyki uczenia się, najlepsze praktyki?

text: > Na pierwszym roku liceum postanowiłem samodzielnie opanować rachunkowość > podczas wakacyjnej przerwy. Więc spędzam 2-3 miesiące na czytaniu > każdego rozdziału i rozwiązywaniu wszystkich dziwnych problemów (aby móc porównać z odpowiedziami > na końcu podręcznika). Chociaż nauczyłem się materiału, > z perspektywy czasu, myślę, że nie było to najlepsze podejście, które oszczędzi czas. Szybko do przodu > 15 lat, po moich latach studiów i lat w pracy, pozornie nie mogę > niczego dogłębnie opanować; Tylko skąpo zapoznaję się z jakimś materiałem. Tylko czytam materiał lub oglądam kursy wideo on-line (takie jak > wykłady w akademii Khana, bezpłatne kursy wideo oferowane przez wiodące uniwersytety, > itp.). Czuję, że już nawet nie wiem, jak się uczyć ani koncentrować. > Zawsze wielozadaniowość. Proszę o poradę w zakresie rozwoju efektywnej nauki > nawyków. Jak w dzisiejszych czasach uczysz się samodzielnie? Przyjaciele Szukam **wykonalnych** kroków, a nie tylko filozofii. Co i jak mogę zorganizować swoją naukę, aby skutecznie opanować materiał.


title: System biletowy / Faza rozwoju

text: Na etapie projektu tuż przed faktycznym rozpoczęciem umieszczania kodu w edytorze, jak organizujesz projekt i swoje „zadania”. Systemy biletowe są świetne, ale wydaje mi się, że nie mogę znaleźć sposobu, aby były opłacalne w projekcie, dopóki nie zostanie uruchomiony. Podczas śledzenia błędów i zbierania pomysłów na ulepszenia dla późniejszych wersji. Jaka jest dobra metodologia lub „system”, z którego korzystałeś w przeszłości, który pomógł utrzymać porządek w projekcie i posunąć się do przodu. Sposób na śledzenie zadań i notatek?


title: Algorytm haszowania: usuwanie elementu w sondowaniu liniowym

text: Podczas stosowania metody sondowania liniowego do implementacji haszowania, gdy usuwamy i element, pozycja usuniętego elementu jest deklarowana jako tombstone/oznaczana jako skasowana. Dlaczego nie możemy po prostu przesunąć wszystkich elementów z bieżącej pozycji aż do napotkania następnego pustego elementu? Czy nie oszczędzi to czasu, gdy później napotka się zbyt wiele nagrobków i może być konieczne ponowne rozszycie? Czy czegoś mi brakuje? Proszę powiedzieć, czy muszę wyjaśnić moje pytanie. Wielkie dzięki!


title: Rzeczy do zrobienia przed przejściem do produkcji

text: Kończę przyzwoity projekt Python/Shell i zastanawiam się, czy istnieje lista „najlepszych praktyk” rzeczy do zrobienia podczas kończenia programowania. Do tej pory wykonałem: * pylint * pycallgraph * grep'ed for :TODO: i :FIXME: * znajdź kod osierocony * trochę więcej dokumentacji * zainstaluj skrypty dla klienta i serwera * upewnij się, że komentarze zgadzają się z rzeczywistością (zanim zapomnę dokładniejszych punktów) Jakie inne rzeczy robisz ogólnie lub w szczególności w Pythonie?


title: System uczenia się zamiast używania sed/replace do przeglądania wyników testów

text: Każdą kompilację mojego oprogramowania przepuszczam przez serię testów, które wykonują szereg poleceń w wierszu poleceń i przechwytują wyniki. W większości przypadków dane wyjściowe są kombinacją: \- Informacje statyczne, które są i powinny być takie same między każdym przebiegiem. \- Dynamiczne informacje, które nie są łatwe do przewidzenia. W celu przetestowania tego oprogramowania pragnę jedynie zweryfikować, czy informacje statyczne są takie same między każdym testem. Obecnie używam sed na przechwyconych wynikach moich automatycznych testów, aby odfiltrować informacje dynamiczne. Wszelkie różnice między przebiegami testowymi są następnie identyfikowane przy użyciu przefiltrowanych danych wynikających z zastosowania reguł sed. Ze względu na dużą różnorodność przetwarzanych danych wyjściowych poleceń, utrzymywanie reguł seda stało się uciążliwym zadaniem. Czy istnieje system, który przy dużej próbce wykonanych wyników testów może pokazać nietypowe zmiany między dwoma plikami zawartymi w tej dużej próbce wyników testów? Aby wyjaśnić, gdybym miał porównać dwa pliki, chciałbym zobaczyć różnice tylko dla elementów, które zmieniły się w 5% czasu między wszystkimi zaangażowanymi plikami. Wszelkie inne dane, które zmieniły się w 95% przypadków, zostałyby wykluczone jako różnice podczas porównywania dwóch plików w dużym zestawie wyników testów. W tym przykładzie, wśród dużego zestawu przebiegów testowych, pierwsza kolumna jest prawie zawsze spójna: Przebieg 1: 1/*/1 6643 2433 12343 232424 112 2/1/1 2311 455 1342 60233 5231 2/1/2 2355 1223 93 12389 1342 Run 2: 1/*/1 3121 112 98832 451 1233 2/1/1 6342 2345 84421 3456 8362 2/1/2 72453 5 421 64321 7634 Run 3: 1/*/1 12 65 312 653 973 2 /1/1 12442 54231 46012 6 734 2/1/3 734 28 623 76 1834 Oprócz trzech powyższych przebiegów istnieją setki próbek tych samych poleceń wyjściowych generowanych dla każdej przyrostowej kompilacji oprogramowania. Wykonując różnicę między każdym z trzech powyższych przykładów, chciałbym uzyskać następujące wyniki: Brak różnic między przebiegiem nr 1 a przebiegiem nr 2. Różnica pokazująca, że „2/1/2” została zmieniona na „2/1/3”, gdy poproszono o pokazanie różnicy między przebiegiem nr 3 a jednym z dwóch pozostałych przebiegów. Obecnie mam skrypt sed, który zastępuje wszystkie "losowo wyglądające" liczby powyżej (liczby, znaczniki czasu, itp.) hashmarkami lub innymi stałymi wskaźnikami, aby wszystko, co pozostało do porównania, to kolumna początkowa. Jakie opcje, jeśli w ogóle, istnieją w tym obszarze? Czy istnieje nazwa dla tego rodzaju porównania tekstów?


title: Zoptymalizuj odczyt wielu plików

text: Mam wyjątkowy problem, w którym mam nadzieję, że ktoś może pomóc. Mam jeden duży plik tekstowy, nasz plik **Produkcyjny**. Dane w pliku są rozdzielane w następującym formacie Odniesienie|Centrum kosztów|Wartość podstawowa analityki|.... UMBY_2288|023437|2883484|... NOT_REAL|1343534|283434|... Średni rozmiar tego pliku wynosi około 30MB. z około 120000 rzędami. a potem mam około 20 plików **Regionalnych**. te pliki są podobne do struktury Bieżący duży plik. poza tym, że są mniejsze. średni rozmiar 50000 wierszy. Teraz muszę przejść przez każdy wiersz w dużym pliku Prod. Dla każdego kodu **Reference** muszę przeszukać każdy z plików „regionalnych”, aby zobaczyć, które zawierają ten konkretny kod referencyjny. a następnie skopiowanie niektórych danych z tego wiersza do raportu. Nie ma możliwości wstępnego określenia, do jakich plików należy przejrzeć. Każde odwołanie może znajdować się w wielu plikach **Regionalnych**. Jak możesz sobie wyobrazić, wielokrotne przechodzenie przez każdy wiersz w każdym pliku jest bardzo czasochłonnym procesem. Ze względu na ograniczenia pamięci nie mogę załadować plików do pamięci. Czy ktoś ma jakieś sprytne pomysły, jak mogę to zrobić? Nie potrzebuję próbek kodu. tylko wskazówki, w jaki sposób mogę rozwiązać ten problem. Rozwijam narzędzie w języku C#.


title: Jak przesyłać metadane za pomocą Bluetooth między iPhonem a telefonem komórkowym z systemem Android?

text: Chciałbym opracować hybrydową aplikację do przesyłania danych/metadanych między iPhonem a urządzeniem mobilnym z systemem Android za pomocą Bluetooth. BTStack i PhoneGap są dla mnie przydatne. Ale czy możliwe jest wspieranie metadanych za pomocą tych? Nr ref : https://code.google.com/p/btstack/w/list http://www.randdusing.com/2014/02/19/bluetooth-low-energy-plugin-for-phonegap/


title: Informatyka lub inżynieria komputerowa do nauki o danych i uczenia maszynowego

text: Jestem 25-letnim konsultantem ds. danych, który rozważa powrót do szkoły, aby uzyskać drugi stopień licencjata z informatyki lub inżynierii. Moje zainteresowania to data science i uczenie maszynowe. Używam programowania jako środka do celu i używam języków takich jak Python, R, C, Java i Hadoop, aby znaleźć znaczenie w dużych zbiorach danych. Czy lepszy byłby do tego stopień informatyki lub inżyniera komputerowego? Zdaję sobie sprawę, że studia statystyczne mogą być jeszcze bardziej korzystne, ale będę w szkole, która nie ma wydziału statystyk ani wydziału matematyki obliczeniowej.


title: Jaka jest najlepsza riposta na „przedwczesna optymalizacja jest źródłem wszelkiego zła”

text: Często słyszę sentyment… „Po co martwić się wydajnością, pisać powolny kod, wprowadzać swój produkt na rynek… nie martw się o wydajność. Możesz to rozwiązać później”. Kulminacją tego sentymentu jest: „.. przedwczesna optymalizacja jest źródłem wszelkiego zła ... #wygrywanie" Zastanawiałem się, czy ktoś ma **dobrą** ripostę do tego jednego liniowca. Idealnie równie mocny **jeden liniowiec**, który obejmuje odwrotność tego sentymentu?


title: Wdrażanie leniwej rejestracji

text: Jestem zainteresowany założeniem Lazy Registration na mojej stronie internetowej. Idealnie byłoby, gdyby ludzie mogli wypełnić rekord, który może zawierać ich imię i nazwisko, adres e-mail, adres itp., a następnie zapisać go później w rekordzie użytkownika. Problem polega na tym, że czasami osoba wypełniająca ten formularz będzie już miała wpis na stronie. W tym momencie, jeśli wprowadzą nowy adres, zastąpi on stary, jeśli istnieje już rekord z tym adresem e-mail (nie chcę tworzyć duplikatów rekordów dla tego samego e-maila). Ponieważ jest to otwarta strona internetowa, muszę upewnić się, że jeśli ktoś zmienia istniejący rekord, musi w jakiś sposób zweryfikować, za kogo się podaje, zanim rekord zostanie zmieniony. W tej chwili nie jestem pewien, jaka jest najlepsza opcja, aby to potwierdzić. Czy lepiej jest: * Unikać całkowicie leniwej rejestracji, jeśli stanowi to problem, i zmuszać użytkowników do zalogowania się, jeśli formularz, do którego wchodzą, może zmienić istniejący rekord * Osadzić login w formularzu - więc jeśli wprowadzą e-mail dla istniejącego rekordu, wyświetla formularz logowania, który muszą wypełnić przed potwierdzeniem danych * Wyświetl formularz logowania oparty na Ajax podczas wypełniania formularza, jeśli podadzą szczegóły (e-mail itp.) które pasują do istniejącego rekordu w bazie danych


title: Czy jako programista możesz pracować z hałasem?

text: Jestem tutaj, aby opublikować to pytanie i dowiedzieć się więcej o Twoich przemyśleniach na ten temat: **Czy potrafisz pracować z hałasem?** Czasami, gdy tworzysz coś naprawdę trudnego, termin się zbliża i ktoś wchodzi do Twojego pokoju i rozmawia do twoich kolegów, z głośną rozmową, nagle... Twoja logika znika! :-) O mnie to naprawdę zabawne i ironiczne: jeśli chodzi o muzykę, potrafię lepiej myśleć, może dlatego, że skupiam się na swoim rozwiązaniu, unikając rozproszeń i pogawędek. Ale znam ludzi, którzy mówili mi, że nie mogą pracować w milczeniu. Po prostu nie mogę pracować przy zbyt dużym hałasie. Jak o tobie?


title: Jaki jest najbardziej przerażający fragment Kodeksu innych ludzi, jaki kiedykolwiek musiałeś utrzymywać?

text: Zdarzyło się to nam wszystkim. Może oryginalny autor nie jest już w firmie, a może szef po prostu nie ufa mu, że to naprawi (prawo Kernighana). Tak czy inaczej, dali ci to, a ty musiałeś to naprawić. Jak było? Jaki był problem? Jak zły był kod i co z nim zrobiłeś?


title: Czy weryfikacja i walidacja jest częścią procesu testowania?

text: Opierając się na wielu źródłach, nie wierzę w prostą definicję, że celem testowania jest znalezienie jak największej liczby błędów - testujemy, aby upewnić się, że działa lub nie działa. Np. następujące są cele testowania z ISTQB: 1. Ustalenie, że (produkty programowe) spełniają określone wymagania (myślę, że ich weryfikacja) 2. Zademonstrowanie, że (produkty programowe) nadają się do celu (myślę, że jest to walidacja) 3. Wykryj defekty Chciałbym zgadzają się, że testowanie jest weryfikacją, walidacją i wykrywaniem defektów. Czy to jest poprawne?


title: Konwencja nazewnictwa dla metody, która zarówno ustawia, jak i pobiera

text: Załóżmy, że mamy metodę `setFoo`, która ustawia flagę w obiekcie Bar, np. class Baz { public void setFoo(String foo)( ... } } wewnątrz setFoo, metoda wykonuje kosztowne ładowanie obiektu `Bar` z bazy danych class Baz { public void setFoo(String foo)( Bar bar = drogiGetBar();... } } Aby uniknąć konieczności ponownego pobrania obiektu `Bar`, programista zmienia metodę, aby go zwrócić class Baz { public Bar setFoo(String foo)( Bar bar = costGetBar(); . .. return bar;} } Pytania to: 1. Czy to jest odradzane?2.Jeśli tak, to dlaczego i jaka jest alternatywa 3.Czy rozwiązaniem powinno być dodanie jakiegoś rodzaju pamięci podręcznej?4.Jak poprzedzić metodę?set dostać? seget? geset?


title: O klasach i ich aktualnych stanach

text: Utykam za każdym razem, gdy muszę napisać konstruktor dla dowolnej klasy, którą projektuję. Powodem jest to, że nie jestem pewien, co powinno trafić do konstruktora, a co nie. Szukając tego w Google, otrzymałem odpowiedź, że konstruktor musi zrobić tylko tyle, aby upewnić się, że utworzony opbect jest prawidłowy. Ale moje zapytanie to > Skąd wiesz, czy obiekt jest w prawidłowym stanie? Moja klasa reprezentuje szachownicę: public class ChessBoard { List<ICellRow> lstRow; int komórkaOffset; //Other function public ChessBoard() { //Co powinno się tutaj znaleźć? } } Jak zdecydować, kiedy klasa ma minimalną ilość informacji, aby była w stanie poprawnym? Czy w tym konkretnym przykładzie klasa tablicy jest prawidłowa?


title: Kiedy należy tworzyć gałęzie rozwoju?

text: Przenosimy zespół naszego projektu z używania jednej gałęzi Main/Trunk do wielu gałęzi Development/Work, które powinny być regularnie łączone w Main. Opieramy nasz nowy proces na tym artykule i przewodniku rozgałęziania TFS (używamy TFS i Visual Studio 2010). Obecnie nad projektem pracuje od 1 do 5 osób jednocześnie. Main musi być stabilny przez cały czas, ponieważ chcemy, aby opcja była dostępna, gdy tylko tego potrzebujemy. Nie mamy ustalonych sprintów - przynajmniej jeszcze nie - iw tej chwili wypuszczamy co 1-2 tygodnie. W tym momencie każda osoba naprawia błędy w aplikacji. Za kilka tygodni rozpoczniemy prace nad nowym dużym komponentem aplikacji. Jedną z kwestii spornych, którą znajdujemy, jest **kiedy należy utworzyć gałęzie rozwoju**. W zależności od umiejętności programisty będziemy wdrażać wiele historyjek użytkownika równolegle. Pomyśleliśmy o stworzeniu gałęzi dla każdego dewelopera, ale to nie ma sensu, ponieważ zawsze będzie jakaś potrzeba współpracy nad kawałkiem pracy. Nie możemy obejść się z jedną gałęzią programistyczną, ponieważ będziemy chcieli połączyć się z Main, podczas gdy inne prace zostaną zakończone. Czy ktoś ma jakieś wskazówki na ten temat?


title: Ograniczenie Entity Framework

text: Zastanawiałem się, czy ktoś miał taką samą potrzebę i dlaczego (jeśli to możliwe). Mój problem polega na tym, że nie mogę stworzyć modelu w EF przy użyciu dwóch tabel z różnych baz danych bez kilku dziwnych obejść. Dla mojego zakresu jest to bardzo potrzebne. Czy ktoś z was kiedykolwiek musiał to zrobić? Co zrobiłeś? I, podobnie jak ja, czy uważasz, że MS powinien dodać tę funkcję? Dziękuję wam wszystkim.


title: Jak poradzisz sobie z wartościami NULL w swojej aplikacji?

text: Na jakim poziomie wolisz obsługiwać w swojej aplikacji wartości Null? Moje osobiste preferencje w tej chwili to DB. Tworząc widok, upewniam się, że zwracam wartość zamiast wartości NULL. Więc jeśli twoja aplikacja front-end miałaby łączyć się z aplikacją, nigdy nie musiałaby obsługiwać wartości null. W moich aplikacjach VB6 swobodnie korzystałem z funkcji IsNull do obsługi wartości Null. Podziel się swoimi doświadczeniami.


title: Czy istnieją możliwości pracy jako pełnoetatowy płatny programista dla organizacji non-profit?

text: Niektóre ostatnie wydarzenia w moim życiu sprawiły, że chcę bardziej przyczynić się do celów, w które wierzę, a nie tylko pracować dla firmy nastawionej na zysk. Myślałam, że gdybym znalazła organizację non-profit, którą lubię i w którą wierzę, mogłabym czuć się bardziej spełniona pracując dla nich. Mam spore doświadczenie w tworzeniu stron internetowych i obecnie pracuję jako web developer Java/Spring. Zdaję sobie sprawę, że wynagrodzenie nie miałoby takiego samego „pułapu” jak dla zysku, ale zastanawiam się, czy możliwe jest uzyskanie przynajmniej czegoś zbliżonego do stawki rynkowej za pracę, ponieważ planuję wkrótce założyć rodzinę i nadal potrzebuję legalny dochód. Jeśli ktoś ma jakąkolwiek wiedzę lub doświadczenie w tego typu sprawach, z przyjemnością wysłucham od Ciebie. EDYCJA: Bez wchodzenia w zbyt wiele szczegółów osobistych, mam krewnego, który niedawno zmarł, który cierpiał na chorobę psychiczną, więc chociaż nie musi to być organizacja specjalnie poświęcona temu, mam nadzieję, że będę pracował nad czymś w tym przynajmniej tam, gdzie jest więcej sprawy społecznej, a nie tylko praca nad projektem open source, którego jedyną przyczyną jest postęp technologii.


title: Jak unikniemy naruszenia GPL podczas modyfikowania i wydawania programu przy użyciu kodu objętego tą licencją?

text: Przyjaciel i ja rozpoczęliśmy projekt używając kodu z innego projektu, który jest objęty licencją GPL. Rozpowszechnialiśmy go swobodnie na naszej stronie internetowej, a pod przyciskiem pobierania dodaliśmy bezpośredni link do pobrania zmodyfikowanego kodu źródłowego również za darmo. W części dotyczącej aplikacji wymieniliśmy ludzi, którzy zbudowali oryginalny kod. Czy fakt, że mamy inną nazwę projektu narusza warunki GPL? A także, jeśli dołączymy oryginalne zawiadomienie o GPLv2 z oryginalnej aplikacji, czy pomoże nam to w jego przestrzeganiu? Jeśli nie, określ dokładnie, co musimy zrobić, aby zachować zgodność z GPL. Kod, którego używamy, jest starszą wersją, wydaną na licencji GPLv2, a ten projekt został przerwany i przeniesiony do innej, gdzie wciąż się rozwija. Nie użyliśmy żadnego z ich obecnego kodowania, które zostało wydane na licencji GPLv3.


title: Kto nadaje kierunek całej ofercie produktowej i innowacjom?

text: Czasami zastanawiam się, w jaki sposób prezesi lub założyciele firm takich jak Microsoft i Oracle zarządzają ogólnym ruchem technologicznym i łączeniem produktów. Weźmy na przykład Oracle, zaczęło się tylko od bazy danych, a teraz, kiedy otwierasz ich oficjalną stronę, otwiera się bibliografia. Weźmy na przykład bazę danych Oracle 11g. Podstawowa baza danych jest stale ulepszana i dodawane są nowe funkcje. Jednocześnie trzeba czuwać nad aktualnymi trendami rynkowymi, potrzebami i konkurencją. Czy Larry monitoruje każde działanie postępu technologicznego? A co z nowymi pomysłami i innowacjami? Kto jest za to odpowiedzialny? Innym przykładem, który mnie zastanawia, jest .NET. Z nową rzeczą, która pojawia się co drugi dzień, kto jest ojcem .NET i kto sugeruje tym facetom dodanie klas do tego i tamtego. Kto nadaje kierunek całemu ruchowi produktu, a także integracji z innymi produktami? To po prostu piękno. Ta bezproblemowa integracja lub komunikacja między produktami a technologią jako całością jest niezwykła. (Nie stronniczy pogląd). Kilka lat temu przeczytałem książkę zatytułowaną: _Microsoft Secrets_. Autor pisze, że w Microsoft nawet bardzo starsza osoba musi kodować, ponieważ dopóki nie umiesz kodować, nie możesz lepiej prowadzić firmy programistycznej. Czasami myślę o kodach Ballmera czy nie, a co z Billem? Czy koduje inny system operacyjny w domu?


title: Opisy/nazwa testów, powiedz, czym jest test? lub co to znaczy, gdy zawiedzie?

text: Dokumentacja API dla `Test::More::ok` jest ok($got eq $expected, $test_name); teraz w jednej z moich aplikacji mam `$nazwa_testu` wypisuje to, co testuje test. Na przykład w jednym z moich testów ustawiłem to na "nazwa pliku istnieje". Zdałem sobie sprawę po tym, jak niedawno otrzymałem raport o błędzie i zdałem sobie sprawę, że ten komunikat pojawia się tylko wtedy, gdy test kończy się niepowodzeniem, a jeśli test się nie udaje, oznacza to, że plik nie istnieje. Twoim zdaniem, czy uważasz, że te `$nazwa_testu` powinny mówić, co oznacza test, jeśli się powiedzie? co to znaczy, jeśli się nie udało? czy uważasz, że powinien powiedzieć coś innego? proszę wyjaśnić dlaczego?


title: Transfer wiedzy bez planu

text: Wykonujemy prace dla konkretnego klienta, zarządzając jego wdrożeniem CRM. (Sam CRM to produkt, który został w dużej mierze dostosowany do potrzeb mojego klienta). Teraz chcą, abyśmy również zarządzali zadaniami wsadowymi/ETL Oracle. W tym celu są gotowi zapewnić nam transfer wiedzy. (Zadania wsadowe/ETL Oracle są teraz zarządzane we własnym zakresie przez klienta). Po wielu perswazjach poprosiłem jednego z kierowników projektu (pod względem oznaczenia) o wysłanie e-maila do klienta z prośbą o plan KT. (Kierownik projektu powtarzał, że nigdy wcześniej nie mieli planów KT, a wszystko, co zaoferowałem, przygotuję szablon, a nawet to zostało odrzucone!). Wyślij od nas e-mail do nich -> Czy możesz podzielić się z nami planem KT? Odpowiedź od nich -> Nie jesteś pewien, czego oczekuje się od mojej strony? KT zaplanowano na jutro od > 11 rano, gdzie zostanie udostępniona wiedza funkcjonalna na temat istniejącego pakietu migracji danych ETL. Jak sobie radzisz z takim klientem? Najprawdopodobniej to, co się wydarzy, to właśnie to. Osoba, która daje KT, powie, że przekazałem pełny transfer wiedzy, a my wrócimy i powiemy, że „Nie, to nie zostało omówione. W tym celu przedstawili sam przegląd i zostawili go na tym!” i tak dalej... Mój kierownik projektu również nie odpowiedział na ten e-mail. Powiedział tylko, że spotkanie ma się odbyć o 11 rano (w zasadzie powtarzając to, co powiedział e-mail i wyszedł na cały dzień!). Co mógłbym ewentualnie zrobić? PS: Szukanie innej pracy to bardzo pomocna odpowiedź, ale ja jej nie szukam. :-) **EDYTUJ** Spotkanie poszło dobrze, gdzie udostępnili pakiet Oracle DB (który działa do 10K LOC). Powiedzieli nam, że ETL, który pobiera dane z innych podstawowych systemów do Staging_DB, jest obowiązkiem zespołu ETL (innego zespołu). Ten pakiet Oracle DB przeniesie dane z Staging_DB do mojego CRM_DB, którym mamy zarządzać/modyfikować. **Co zrobiłem** Sporządziłem protokół spotkania w następujący sposób: 1. Wymieniono, co jest w zakresie, a co poza zakresem 2. Brak dokumentacji dotyczącej funkcjonalności Pakietu Bazy Danych 3. Brak raportów dotyczących wydajności istniejącego Pakietu Bazy danych do wyjściowa wydajność 4. ... 5. ... A potem wróciłam do mojego kierownictwa i powiedziałam, że potrzebuję czasu na zrobienie dokumentacji, wyzerowanie istniejącej wydajności i tak, wrócę z wyjaśnieniami, które klient ma odpowiadać. Zobaczmy, jak to idzie.


title: Jak podłączyć aplikację mvc za pomocą entityframework lub ado.net?

text: Jestem programistą ASP.NET. Chcę nauczyć się ASP.NET MVC. W rzeczywistości się tego uczę. Ale teraz jestem zdezorientowany w pewnym momencie. Jak mogę połączyć moją bazę danych z moją aplikacją. Korzystanie z frameworka encji lub linq lub ado.net. Mam dobrą wiedzę na temat ado.net. Ale o strukturze encji nie mogę nic powiedzieć. Teraz mój problem polega na tym, że niezależnie od tego, który ebook lub strona internetowa widzę, używany jest każdy framework encji. Czy więc ważne jest, aby nauczyć się pierwszej struktury encji przed ASP.NET MVC, czy nie?


title: Czy istnieje coś takiego jak blok programisty?

text: Czy programista może cierpieć równoważnie z blokadą pisarza? Jakie są strategie, aby to przezwyciężyć?


title: Czy w świecie .Net, kodu zarządzanego i sieci jest jeszcze miejsce na VBA?

text: Microsoft odszedł od stosu COM, VB6 jest tak zeszłego wieku, a .Net rządzi grzędą (MS). A jednak wciąż waliłem ryzami kodu VBA, czy jestem dinozaurem? Potrzeba VBA to nowy projekt automatyzujący Excel widząc, jak prosisz. Próbowałem zrobić to samo za pomocą VSTO i było to po prostu zbyt cholernie błędne/trudne/nieefektywne z uszkodzonym modelem rozwoju. Nie mogę pozbyć się wrażenia, że czegoś mi brakuje, OTOH naprawdę nie widzę lepszego sposobu na rozwiązanie tego problemu. Jakie są Twoje myśli?


title: Tworzenie struktury menu za pomocą DB - czy to w porządku?

text: Mam też aplikację, która zasadniczo składa się z wielu ekranów, więc użytkownik musi dużo nawigować (np. Przejdź z A>B>C>D) itp. Zastanawiałem się, jak to zaimplementować (głównie trzymać strukturę menu j ), ponieważ musi to być menu ekranowe (niestandardowe, bez pasków menu itp.) i nie znalazłem żadnego rozwiązania. Teraz zdałem sobie sprawę, że mógłbym użyć do tego bazy danych, która pozwoliłaby mi później zmieniać ciągi bez żadnego wpływu. Moim pomysłem byłoby posiadanie stołu na każdym poziomie (1-5) z dostępnymi opcjami. Gdy użytkownik wybierze opcję, program wybierze dowolne pozycje w tabeli (CurrentLevel+1) na podstawie jego identyfikatora. Wydaje mi się, że to naprawdę dobre rozwiązanie, ale nie jestem programistą (raczej niż analitykiem). Lub nawet mógłbym użyć określonych nazw tabel i trzymać nazwę tabeli w określonej kolumnie, na przykład: > Użytkownik wybiera Ustawienia > > Program sprawdza, czy z Ustawieniami jest powiązana tabela "USTAWIENIA" > i przeszukuje tę tabelę dla wszystkich dostępnych pozycji Ma sens?


title: Kiedy używać wzorca tablicy, a kiedy dzwonić bezpośrednio

text: Tworzę architekturę dla nowego projektu wbudowanego. System ma kilka wejść, które trafiają do szalenie różnych wyjść. Wzorzec tablicy jest do tego bardzo przydatny (patrz Słuchacze uważani za szkodliwych: Wzorzec „tablicy”), ponieważ oddziela składnik wejściowy od składników wyjściowych (relacja 1 do N). Jednak zmagam się z relacją N do 1 (gdzie jedno wyjście otrzymuje dane z szalenie różnych danych wejściowych). Czy powinienem tam użyć wzoru tablicy? A co z relacją 1 do 1? Zalety wzorca tablicy, które widzę: * oddzielne wdrażanie i testowanie źródeł i słuchaczy. * tablica (EventAdmin w świecie OSGi) może być monitorowana oddzielnie. * nie ma zależności od czasu kompilacji. Wady, które widzę: * nie ma sprawdzania zdarzeń w czasie kompilacji (jeśli ktoś zrobi literówkę w temacie wydarzenia lub danych, to masz w dupie). * nad tablicą (zrobiłem pomiary i jest to istotne na naszej platformie). Nie jestem do końca pewien, jak zrównoważyć te kompromisy.


title: Czy mogę użyć Node do dodania funkcji poczty e-mail do istniejącej witryny?

text: Mam klienta z istniejącą prostą witryną HTML/JavaScript. Żadnego zaplecza. Chce dodać do niego funkcjonalność poczty e-mail, a ja myślałem o użyciu Node, aby to zrobić z dwóch powodów: 1. Wydaje się, że jest to bardzo lekki sposób na zrobienie tego 2. Mówi o dodaniu dodatkowej funkcjonalności w przyszłości. Jakie są zalety i wady tego podejścia?


Kierownik w moim miejscu pracy zadał mi i mojej grupie programistów pytanie: > Ile wierszy kodu może wyprodukować programista C# miesięcznie? Stary system miał zostać przeniesiony do C# i chciałby, aby to działanie było częścią planowania projektu. Z jakiegoś (podobno wiarygodnego) źródła miał odpowiedź „10 SLOC/ **miesiąc**”, ale nie był z tego zadowolony. Grupa zgodziła się, że było to prawie niemożliwe do określenia, ponieważ zależałoby to od długiej listy okoliczności. Ale mogliśmy powiedzieć, że mężczyzna nie odszedłby (lub byłby bardzo rozczarowany nami), gdybyśmy nie znaleźli odpowiedzi, która bardziej mu odpowiadała. Więc wyszedł z wielokrotnie lepszą odpowiedzią „10 SLOC/ **dzień**” _Czy można odpowiedzieć na to pytanie?_ (od ręki lub nawet z pewną analizą)


title: Architektura: aby jedna strona internetowa była obsługiwana dla różnych Klientów

text: Opracowałem system o jednym profilu firmy. System jest zbudowany przy użyciu usług WCF, asp.net. Teraz inna firma również chce korzystać z naszego systemu. Mogą też wymagać pewnych dostosowań, a niektóre z ich elementów danych są inne. Planuję więc stworzyć osobną bazę danych dla nowej firmy i rozgałęziać warstwę logiki biznesowej. Myślałem o różnych opcjach zaprojektowania tego i skończyłem z następującymi. Jaki jest więc najlepszy sposób na zaprojektowanie tego rodzaju systemu. **Podejście A:** Przedstaw metody jako dwie różne usługi WCF, po jednej dla każdej firmy. Będzie więc jeden interfejs klienta WCF (IClient), ale dwie różne klasy usług dla każdej firmy je wdrażającej. `ClientAService : IClient, ClientBService : IClient.` **Problem:** Problem polega na tym, że wszystkie moje kontrakty danych i składowe danych są widoczne dla klienta w 2 różnych przestrzeniach nazw. `(ClientAService.ObjectABC i ClientBService.ObjectABC).` Zatem wszystkie obiekty, których używam na stronie, są w konflikcie. tj. (kiedy mam listę `ObjectABC` w źródle danych na stronach internetowych, witryna nie rozumie, czy pochodzi z `ClientAService` czy `ClientBService`. **Podejście B:** Ekspozycja metod jako pojedynczego klienta WCF , ale 2 różne warstwy logiki biznesowej.Ale będą używać tych samych kontraktów danych.Więc metody zwrócą ten sam typ danych.więc będę miał jedną klasę usług ClientService :IClient { public <ObjectABC> Method1(String Companycode) { if(CompanyCode = = "A") return new AbusinessLogic().Method1(); else if(CompanyCode == "B") return new BbusinessLogic().Method1(); } } **Problem:** Jedyny problem jaki przychodzi mi do głowy teraz dla każdej nowej firmy dodałem powyższe, jeśli część dla wszystkich moich metod.Jestem również otwarty, aby dowiedzieć się, czy można to zrobić w inny lepszy sposób niż podane opcje.uwaga: powiedziano mi, że może być więcej firmy, które zostaną dodane w przyszłości.


title: Dodanie złożoności, aby usunąć zduplikowany kod

text: Mam kilka klas, które wszystkie dziedziczą z ogólnej klasy bazowej. Klasa bazowa zawiera kolekcję kilku obiektów typu `T`. Każda klasa potomna musi być w stanie obliczyć wartości interpolowane z kolekcji obiektów, ale ponieważ klasy potomne używają różnych typów, obliczenia różnią się nieco w zależności od klasy. Do tej pory skopiowałem/wkleiłem mój kod z klasy do klasy i dokonałem drobnych modyfikacji w każdej z nich. Ale teraz próbuję usunąć zduplikowany kod i zastąpić go jedną ogólną metodą interpolacji w mojej klasie bazowej. Jednak okazuje się to bardzo trudne, a wszystkie rozwiązania, o których myślałem, wydają się zbyt skomplikowane. Zaczynam myśleć, że zasada SUCHY nie ma tak dużego zastosowania w tego rodzaju sytuacji, ale brzmi to jak bluźnierstwo. Jaka złożoność jest zbyt duża, gdy próbujesz usunąć duplikację kodu? EDYCJA: Najlepsze rozwiązanie, jakie mogę wymyślić, wygląda mniej więcej tak: Klasa bazowa: protected T GetInterpolated(int frame) { var index = SortedFrames.BinarySearch(frame); if (indeks >= 0) return Data[indeks]; indeks = ~indeks; if (indeks == 0) return Data[indeks]; if (indeks >= Dane.Liczba) return Data[Dane.Liczba - 1]; return GetInterpolatedItem(ramka, Data[indeks - 1], Data[indeks]); } protected abstract T GetInterpolatedItem(int ramka, T dolna, T górna); Klasa potomna A: public IGpsCoordinate GetInterpolatedCoord(ramka int) { ReadData(); return GetInterpolated(ramka); } protected override IGpsCoordinate GetInterpolatedItem(ramka int, IGpsCoordinate dolny, IGpsCoordinate górny) { podwójny stosunek = GetInterpolationRatio(ramka, dolna.Frame, upper.Frame); var x = GetInterpolatedValue(dolna.X, górna.X, stosunek); var y = GetInterpolatedValue(dolny.Y, górny.Y, stosunek); var z = GetInterpolatedValue(dolne.Z, górne.Z, stosunek); return new GpsCoordinate(ramka, x, y, z); } Klasa potomna B: public double GetMph(int frame) { ReadData(); return GetInterpolated(ramka).MilesPerHour; } protected override ISpeed GetInterpolatedItem(int ramka, ISpeed dolna, ISpeed górna) { var ratio = GetInterpolationRatio(ramka, dolna.Frame, upper.Frame); var mph = GetInterpolatedValue(dolna.MileNaGodzinę, górna.MileNaGodzinę, współczynnik); zwróć nową prędkość(ramka, mph); }


title: "sprzedaj" kodując mój kolejny projekt w nieznanym języku

text: Chcę zakodować mój następny projekt roboczy w języku, którego nie znam (python). Z mojego punktu widzenia mogę wymyślić wiele powodów, dla których jest to dobry pomysł (nie tylko dlatego, że brzmi fajnie). Jednak mój menedżer prawdopodobnie zapyta mnie dlaczego. Jestem trochę zakłopotany korzyściami z jego punktu widzenia. **EDIT** : Zwykle koduję w C# **EDIT2** Moje powody, dla których chcę kodować w innym języku; 1. To znacznie utrudni łatwy projekt, więc dowiem się więcej i będzie ciekawiej 2. Właśnie przeczytałem książkę na temat Pythona. Chcę mieć możliwość zastosowania go w aplikacji biznesowej, więc dobrze to rozumiem 3. Zwiększy to moje umiejętności i sprawi, że będę bardziej zdolny do zatrudnienia 4. Python wygląda fajnie


title: Gdzie mogę znaleźć algorytm tworzenia anaglyfów 3D przy użyciu obrazu mapy głębi?

text: Szukam ogólnego algorytmu do obliczania anaglifu czerwono-błękitnego, zaczynając od oryginalnego obrazu i jego czarno-białej mapy głębi, jak w tym przykładzie? Ten algorytm jest używany na przykład w Photoshopie, ale nie mogę znaleźć czytelnego wyjaśnienia, aby go odtworzyć.


title: Wyłączne korzystanie z serwera Jini podczas długotrwałej rozmowy

text: Próbuję użyć Jini, w układzie "Mistrz/Pracownik", ale praca Pracownika może trwać długo. Ponadto każdy pracownik musi mieć wyłączny dostęp do pojedynczego zasobu na tej maszynie. W obecnej sytuacji, jeśli Worker otrzyma kolejne żądanie, podczas gdy poprzednie żądanie jest uruchomione, nowe żądanie zostanie zaakceptowane i wykonane w drugim wątku. _Czy istnieją jakieś najlepsze praktyki zapewniające, że pracownik nie zaakceptuje kolejnych zadań, dopóki bieżące zadanie nie zostanie zakończone?_ Rzeczy, które brałem pod uwagę: * synchronizacja zadania na serwerze z blokadą zasobu pojedynczego. To by zadziałało, ale jest dalekie od ideału. Wywołanie z Master zostanie zablokowane do czasu zakończenia bieżącego wątku Worker, nawet jeśli w międzyczasie inni Worker zostaną zwolnieni * wyrejestrują Worker z rejestru, gdy zadanie jest uruchomione, a następnie ponownie zarejestrują się po jego zakończeniu. Może działać OK, ale coś nie pachnie z tym pomysłem... Oczywiście cieszę się, że są bardziej odpowiednie technologie niż Jini... ale nie chciałbym niczego zbyt ciężkiego, na przykład rozwijanie kontenerów EJB w każdym miejscu.


title: Jak nazwać programistę specjalizującego się wyłącznie w językach programowania Microsoft, takich jak T-SQL i C#?

text: Jak nazwałbyś ten rodzaj specjalności? Czy program „Microsoft Developer” wprowadza w błąd?


title: Czy w dzisiejszych czasach istnieje coś takiego jak programowanie w małym wymiarze?

text: Przy wszystkich dostępnych językach programowania, co dokładnie oznacza programowanie na małą skalę i czy nadal jest to możliwe, bez możliwości zmiany przeznaczenia na duże. Pierwotny artykuł, który wspomina w małym, datowany był na 1975 rok i odnosił się do języków skryptowych (jako języków klejowych). Może umyka mi sedno sprawy, ale każdy język, z którego można zbudować komponenty kodu, uważałbym za możliwość obsłużenia "na dużą skalę". Czy istnieje niejasność co do tego, czym są obiekty i czy naprawdę są one obowiązkowe, aby móc poradzić sobie z „dużym”. Wielu argumentowało, że to jest prawdziwe znaczenie „na dużą skalę” i że koncepcje przedmiotów najlepiej pasują do tego zadania.


title: Czy LAMP spełni następujące potrzeby?

text: Pamiętam, że kilka lat temu, kiedy miałem stronę internetową, którą chciałem stworzyć, wiele osób polecało mi pójście drogą LAMP. Niestety nigdy nie zabrałem się do studiowania/praktyki. Obecnie wracam do pomysłu strony internetowej. Strona będzie dynamiczna, transakcyjna i miejmy nadzieję, że w ciągu 18 miesięcy będzie miała około 1 000 000 pv/miesiąc i 300 000 członków. Czy LAMP odpowiednio obsługuje taką witrynę (tj. Czy widziałeś ją pod witryną o tych specyfikacjach)?


title: Dobre praktyki dotyczące rozwiązań Visual Studio

text: Mam nadzieję, że to proste pytanie dotyczące względności. Rozpoczynam prace nad nowym projektem wewnętrznym, mającym na celu zapewnienie drożności naprawianych urządzeń w budynkach. Baza danych jest przechowywana zdalnie na serwerze internetowym i będzie dostępna za pośrednictwem internetowego interfejsu API (wyjście JSON) i jest chroniona za pomocą protokołu OAuth. Interfejs GUI frontonu jest wykonywany w WPF, a kod biznesowy w C#. Z tego widzę różne warstwy Prezentacja/Aplikacja/Datastore. Będzie kod do zarządzania wszystkimi uwierzytelnionymi wywołaniami interfejsu API, klasa do reprezentowania jednostek (obiektów biznesowych), klasy do konstruowania jednostek (obiektów biznesowych), części interfejsu GUI WPF, części modeli widoku WPF i tak dalej. **Najlepiej tworzyć to w jednym projekcie, czy podzielić je na pojedyncze projekty?** W głębi serca mówię, że powinno to być wiele projektów. Zrobiłem to wcześniej w obie strony i stwierdziłem, że testowanie jest łatwiejsze w przypadku jednego rozwiązania projektowego, jednak w przypadku wielu projektów mogą pojawić się zależności rekurencyjne. Zwłaszcza, gdy klasy mają interfejsy ułatwiające testowanie, zauważyłem, że rzeczy mogą stać się niezręczne.


title: Czy doświadczenie programisty można wyrazić w godzinach zakodowanych jak godziny lotu pilota?

text: Jak przydatne byłoby to dla rekrutera? W sztukach walki jest minimalna liczba treningów, a nie lat praktyki, które należy ocenić na wyższy poziom. Widziałem kilka wyjątków, ale są rzadkie. W oprogramowaniu być może byłoby to cenne, aby wyrazić doświadczenie w konkretnych technologiach, takich jak OO, OR/Mappers lub konkretny DBMS.


title: Jaka gramatyka jest najskuteczniejsza w przypadku tytułów numerów?

text: Wybierając tytuł nowego numeru, masz do wyboru kilka opcji gramatycznych. Oto cztery różne opcje przykładowego problemu, który właśnie wymyśliłem: * **Opisowy** : "Nowe linie nie są usuwane podczas parsowania wielowierszowych nagłówków" * **Imperative - negatywne** : "Unikaj pozostawiania nowych linii podczas parsowania multi -line headers" * **Imperative - context first** : "Napraw parsowanie wieloliniowych nagłówków: usuń nowe linie" * **Imperative - najpierw pożądane działanie** : "Usuń nowe linie podczas parsowania wielowierszowych nagłówków" W moim miejscu pracy tytuły numerów pojawiają się na przemian we wszystkich tych formatach, ale myślę, że lepiej wybrać konwencję i się jej trzymać. Która opcja (z powyższej, czy inna) jest preferowana, czyli taka, która zminimalizuje wysiłek programistów czytających te zagadnienia? **Edycja:** jak zaznaczono w komentarzach, różne typy zagadnień mogą uzasadniać inny wybór gramatyki, gdzie szczególnie ważne jest rozróżnienie między błędami a nową pracą. Aby pytanie było bardziej szczegółowe, załóżmy, że wybieramy, ponieważ msell oferuje w swojej odpowiedzi, opcję opisową. Przyjrzyjmy się teraz sugestii ulepszenia istniejącej funkcji: * „Dodaj informacje o mieście do geolokalizacji” Jeśli będziemy trzymać się gramatyki opisowej, powinniśmy zastąpić ten tytuł * „Brak informacji o mieście w geolokalizacji” Jednak wydaje się to mniej jasne, ponieważ brak informacji o mieście to nie błąd, to oczekiwane zachowanie. Reporter jedynie sugeruje poprawę tego zachowania. Wygląda więc na to, że opcja imperatywna jest sposobem na rozwiązanie tego problemu. Przyjrzyjmy się teraz zupełnie nowej funkcji. Rozważ następujące opcje: * „Brak możliwości eksportu raportu do XML” * „Dodaj możliwość eksportu raportu do XML” * „Eksportuj raport do XML” Opisywanie obecnego zachowania wydaje się tutaj jeszcze bardziej absurdalne, ale opcja imperatywna nie wygląda tak też dobrze. Trzecia opcja po prostu opisuje samą nową funkcję, co może być sposobem na przejście tutaj, zakładając, że problem zawiera metadane, które wskazują, że jest to problem „nowej funkcji”. * **Co jest więc ważniejsze – trzymanie się jednej konwencji, czy dopasowanie gramatyki do zagadnienia?** * **Gdzie wyznaczyłbyś granicę między tytułem opisowym a tytułem imperatywnym?** * **Kiedy byś opisał aktualne zachowanie i kiedy pożądane zachowanie?**


title: Jak rekursywnie przetwarzać plik w Haskell?

text: Zasadniczo rozszerzam program piśmienny w Haskell. Są dwie rzeczy, których muszę szukać, aby się rozwinąć. Oto przykładowy plik: program.c.lit: ============== Kilka komentarzy w pliku źródłowym, które mogę zignorować <main>= kod.. kod ... kod.. < a> Niektóre komentarze w pliku źródłowym, które mogę zignorować <a>= kod... kod... kod.. W pliku muszę spojrzeć na każdą `<jakaś var>` i zastąpić ją odpowiadającą jej definicją zdefiniowane poniżej `<jakaś zmienna>=`. Wszystkie wiersze, które są wcięte 4 spacjami poniżej `<some defn>=` są zawarte w tym kawałku. Na koniec powinienem mieć plik składający się tylko z linii `code...`. Jak mam podejść do tego problemu w zakresie przetwarzania plików, jakie jest dobre podejście? Czuję się komfortowo z rekurencją, mniej z monadami.


title: Czy ostateczna spójność to złe rozwiązanie dla aplikacji e-commerce?

text: Czytam o ostatecznej spójności w couchDB. Jestem nieco zdezorientowany terminem i jego konsekwencjami dla aplikacji. Załóżmy, że tworzę rozproszoną witrynę e-commerce, w której transakcje pieniężne mają kluczowe znaczenie. Mogą być prowadzone aukcje online, a ludzie licytują je w czasie rzeczywistym. Czy użycie ostatecznie spójnej bazy danych, takiej jak couchDB, będzie złym rozwiązaniem? Czy powinienem preferować bardziej spójne rozwiązanie, takie jak relacyjna baza danych? Czy couchDB nadaje się do czegoś niekrytycznego, takiego jak sieć społecznościowa, w której nie miałby nic przeciwko, gdyby jego kanał wiadomości nie był aktualny lub gdy komentarze do jego postów są nieco opóźnione o kilka sekund? Aktualizacja Mówię o budowaniu systemu rozproszonego. Myślę, że w przypadku pojedynczego serwera nic z tego nie będzie miało znaczenia.


title: Wyniki wyszukiwania w PhpStorm

text: Mam dwa pytania dotyczące panelu wyników wyszukiwania (Find Occurrences of...) w PHP Storm: 1. Co oznacza "Niesklasyfikowane użycie"? Jak klasyfikować wyniki? 2. Czy istnieje sposób _nie_ grupowania wyników według pliku? Używam najnowszej wersji (3.0.3)


title: Jakie są najlepsze narzędzia/wtyczki dla programistów do obsługi języka Java w środowisku Eclipse?

text: Osobiście używam CodeRush w Visual Studio 2010 do refaktoryzacji, szybszego pisania kodu za pomocą szablonów i ogólnie nawigowania po moim kodzie 10 razy szybciej niż standardowy VS. Ostatnio pracowałem nad inną aplikacją na Androida i zacząłem się zastanawiać... **Jakie są najlepsze wtyczki zwiększające produktywność dla Eclipse?** Najlepiej za darmo. Szukam wtyczek, które pomagają pisać w Javie, a nie w PHP, Railsach lub innych językach obsługiwanych przez Eclipse.


title: Modelowanie obiektów jako funkcji

text: Chcę modelować proste obiekty jako funkcje, aby zobaczyć, dokąd prowadzi mnie podejście czysto funkcjonalne. Powiedzmy, że moim obiektem jest osoba. Jest jakaś funkcja, która zwraca mi nową osobę, ale zamiast struktury danych zwraca mi funkcję reprezentującą tę osobę. Mam trudności, aby zobaczyć, jak dokładnie ta funkcja powinna wyglądać, ponieważ głównie kojarzę dane/stan z osobą, ale nie z żadną funkcją. Więc jeśli wywołam tę osobę, która jest teraz funkcją, jakie dane wejściowe powinna przyjąć i co powinna zwrócić? Jeśli spojrzę na rachunek lambda i kilka przykładów modelowania liczb, 0 to po prostu funkcja tożsamości. 1 to funkcja, która pobiera inną funkcję i wartość jako dane wejściowe i zwraca funkcję argumentu zastosowaną do wartości. 2 stosuje funkcję dwukrotnie itd. Czy implementacja osoby powinna być funkcją, która przyjmuje inną funkcję jako dane wejściowe i stosuje ją do osoby, zwracając jej wyjście? Tak naprawdę jest to tylko pojemnik na dane osoby, który umożliwia działanie na nim innym funkcjom. Być może nie ma sensu myśleć o tym, nie wiedząc dokładnie, z czego składa się dana osoba. W najprostszym przypadku osoba może być tylko imieniem. A pokrótce spróbowałem opisać to w Clojure: (defn nowa-osoba [imię nazwisko] (fn [f] (f imię nazwisko))) (defn get-firstname [osoba] (osoba (fn [x y] x)))) ( def p (nowa osoba "Maja" "Abel")) (pobierz-imię p) "Maja" Znowu imiona są ciągami i niezbyt funkcjonalne ... Mam nadzieję, że to ma jakiś sens, cieszę się, że ktoś ma jakieś przemyślenia na ten temat !


title: Wzór dla grupy podmiotów z jednym wymaganym członkiem podstawowym

text: Podano encję nadrzędną z kolekcją encji podrzędnych, w której musi być dokładnie jeden podstawowy element podrzędny grupy? Aby uczynić pytanie bardziej konkretnym, widziałem wiele sposobów, w jakie ten wzorzec może się pojawić – grupa ludzi, w której jedna osoba jest liderem lub dane kontaktowe osoby, w której jedna jest najważniejsza. Oto dwa różne podejścia, które widziałem. **1\. Oznacz element członkowski jako podstawowy** W tym podejściu do elementu członkowskiego dodawane jest pole w celu oznaczenia go jako podstawowego. Zaletą jest to, że jest prosty we wdrożeniu i pozwala uniknąć dodatkowych relacji. Wadą jest to, że trudniej jest wymusić w modelu danych, że jeden i tylko jeden element członkowski jest podstawowym i z perspektywy obiektu potencjalnie nakłada odpowiedzialność na dziecko, które powinno być na rodzicu. **2\. Dodatkowe skojarzenie** W tym podejściu rodzic śledzi głównego członka grupy i przechowuje identyfikator dziecka. Jest to dodatek do dzieci przechowujących identyfikator rodzica jako członka grupy. Dzięki temu w modelu danych jest wyraźnie widoczne, że istnieje tylko jeden podstawowy element członkowski i można dodać indeks, aby go wymusić. Wadą jest to, że wymaga to dwóch relacji i istnieje szansa, że mogą się nie zgodzić (rodzic wskazuje dziecko, które nie należy do rodzica). Wydaje mi się, że jest to powszechny wzorzec i musi być gdzieś udokumentowany jako wzorzec projektowy lub wzorzec modelowy w książce o architekturze. Podobny wzorzec może mieć miejsce, gdy kolekcja jest historią i jest jedna aktualna, ale jest to nieco łatwiejsze, ponieważ każdy członek miałby zakres dat, który można zindeksować. Czy istnieją lepsze podejścia? A może ktoś może wskazać, gdzie ten wzór może być udokumentowany bardziej formalnie?


title: Jak Console.WriteLine z [TestMethod]?

text: Próbuję pokazać niektóre informacje z metody [TestMethod]. Zwykle używamy NUnit i linii z Console.WriteLine działa dobrze i widzimy to w oknie „wyjścia”, ale w tym projekcie musimy użyć narzędzi testowych osadzonych w VS2010 i Console.WriteLine nie działa, ponieważ nic nie widzimy .


title: Zwinne wyzwania rozwojowe

text: W przypadku Scrum / user story / Agile, jak radzić sobie z planowaniem niezsynchronizowanych zadań, które są częścią user story? Jesteśmy małą firmą zajmującą się grami, współpracującą z kilkoma zdalnymi konsultantami, którzy zajmują się grafiką i dźwiękiem. Zazwyczaj prace graficzne należy wykonać co najmniej tydzień (czasem 2 tygodnie) przed kodem, aby był gotowy do integracji. Ponieważ jednak SCRUM ma skupiać się na historyjkach użytkownika, w jaki sposób powinienem podzielić historie między iteracjami, aby nadal podążały za modelem historyjek użytkownika? W idealnym przypadku historyjka użytkownika powinna być uzupełniana przez wszystkich członków zespołu w tej samej iteracji. Uważam, że dzielenie ich w jakikolwiek sposób narusza podstawową zasadę rozwoju opartego na historyjkach użytkownika. Ponadto jeden programista front-end może pracować w tempie dwukrotnie większym niż programiści backend. Jednak to również powoduje, że harmonogram jest niezsynchronizowany, ponieważ albo ciągle je wyprzedza, albo to, co zrobiliśmy, polega na tym, że pracuje nad zadaniami, które nie są specyficzne dla tej iteracji, tylko po to, aby być zajętym. Tak czy inaczej, to ten sam problem, co powyżej, dzieląc zadania związane z historyjką użytkownika.


title: W jaki sposób moje opcje licencjonowania są ograniczone, gdy używam i/lub dołączam inne projekty do swoich własnych?

text: ### Konfiguracja Mam projekt (pynliner, moduł Pythona) na githubie, o którym nigdy nie myślałem zbyt wiele. Dzisiaj dostałem maila z pytaniem, na jakiej licencji jest napisany, bo ktoś chce go wykorzystać w swoim komercyjnym oprogramowaniu. Moją pierwszą myślą jest to, że chciałbym mieć 2 licencje, jedną darmową do użytku niekomercyjnego i jedną do użytku komercyjnego. Więc zacząłem szukać licencji na oprogramowanie... i dostałem zawrotu głowy. Potem zdałem sobie sprawę, że mogę nawet nie być w stanie korzystać z większości z nich, ponieważ mój moduł korzysta z kilku innych modułów. Mam więc kilka pytań dotyczących filtrowania licencji. Mój moduł używa, ale nie zawiera kodu pod: * **Licencja MIT** BeautifulSoup * **LGPL3** cssutils A mój moduł używa i zawiera kod pod: * **Licencja MIT** soupselect.py Jest to stosunkowo niewielki projekt ale chciałbym wykorzystać to jako proces uczenia się właściwego podejścia do licencjonowania. ### Pytania * Jeśli dołączam czyjś kod, to wszelkie używane przeze mnie licencje nie mogą naruszać licencji dołączonego kodu, prawda? * Czy to samo dotyczy innego oprogramowania, którego używam, ale którego nie obejmuje? _Czy jestem ograniczony licencją MIT na BeautifulSoup lub LGPL3 na cssutils, jeśli ich używam, ale nie dołączam źródła do mojego projektu?_ * * * ### edit Dziękujemy za wskazanie licencji, których pominąłem w cssutils i soupselect. py. Po wskazaniu na to, reszta moich pytań naprawdę sprowadza się do tego, co jest dozwolone w ramach licencji MIT, ponieważ jest to jedyny kod, który zawarłem i czy dane wyjściowe cssutils są bezpłatne. Nie mam nic przeciwko szukaniu ich przez resztę drogi. Dziękuje wszystkim.


title: Możliwość zastosowania testu Joela w firmach zajmujących się tworzeniem stron internetowych

text: **PYTANIE** : Jak przepisać pytania z testu Joela, aby zastosować je do programistów internetowych? > 1\. Czy korzystasz z kontroli źródła? > **(kontrola źródła dla _wszystkich_ aspektów Twojej aplikacji, w tym konfiguracji, > ustawień opartych na bazie danych i użytkownikach?)** > > 2\. Czy potrafisz wykonać kompilację w jednym kroku? > **(czy możesz wdrożyć witrynę od etapu tymczasowego do produkcyjnego w 1 kroku?)** > ... > 10\. Czy masz testerów? > **(jak testujesz AJAX i CSS?)** **BACKGROUND** : To jest dla osób, które pracują w sklepie, który zajmuje się tworzeniem stron internetowych, ale także korzysta z gotowych narzędzi, takich jak Drupal i Wordpress, ale robienie niestandardowego rozwoju na dodatek. POWIĄZANE LINKI: http://www.joelonsoftware.com/articles/fog0000000043.html Co sądzisz o teście Joela?


title: Czy to normalne, że pracodawca prosi mnie o uzyskanie certyfikatów MCP za wyższą pensję?

text: Właśnie dostałem dziś rano negocjacje dotyczące wynagrodzenia (w ciągu ostatnich 3 tygodni zdałem trzy rozmowy kwalifikacyjne) i to było jak gra. Byłem uparty z moimi oczekiwaniami, albo tą liczbą, albo odchodzę. OK, szczerze mówiąc, nie chodzi o pieniądze, ale ja, niezbyt doświadczony programista, chcę zobaczyć, ile mi płaci pracodawca, i było fajnie. I w końcu mój pracodawca dał mi to: „OK, _*_ $, ale pod dwoma warunkami, po pierwsze, poprawisz swoje umiejętności mówienia (angielski nie jest moim językiem ojczystym), a po drugie, uzyskałeś MCP przed końcem rok". Poprosił mnie o 3 certyfikaty MCP. Firma kupi wszystkie książki, które są niezbędne do egzaminu, ale muszę je czytać w wolnym czasie, zdawać i zdawać egzaminy. Jeśli ich nie zdobędę, pracodawca mnie nie wyrzuci, ale rozmowa o zarobkach będzie dla mnie trudniejsza. Przyjąłem tę ofertę, pomyślałem, że to wystarczy. Ale zastanawiam się, czy to normalne? Jeśli jesteś pracodawcą, czy kiedykolwiek złożyłeś taką ofertę kandydatowi? Jeśli jesteś pracownikiem, czy kiedykolwiek miałeś, czy przyjmiesz taką ofertę?


title: Czy niezmienność całkowicie eliminuje potrzebę blokad w programowaniu wieloprocesorowym?

text: # Część 1 Wyraźnie niezmienność _minimalizuje_ potrzebę blokad w programowaniu wieloprocesorowym, ale czy eliminuje tę potrzebę, czy też są przypadki, w których sama niezmienność nie wystarczy? Wydaje mi się, że można tylko odroczyć przetwarzanie i hermetyzować stan na tak długo, zanim większość programów będzie musiała coś ZROBIĆ (zaktualizować magazyn danych, wygenerować raport, zgłosić wyjątek itp.). Czy takie działania zawsze można wykonać bez zamków? Czy samo wyrzucenie każdego obiektu i stworzenie nowego zamiast zmiany oryginału (prymitywny pogląd na niezmienność) zapewnia absolutną ochronę przed rywalizacją między procesami, czy też istnieją przypadki narożne, które nadal wymagają blokowania? Wiem, że wielu programistów funkcjonalnych i matematyków lubi mówić o „braku skutków ubocznych”, ale w „prawdziwym świecie” wszystko ma efekt uboczny, nawet jeśli jest to czas potrzebny na wykonanie instrukcji maszynowej. Interesuje mnie zarówno odpowiedź teoretyczna/akademicka, jak i odpowiedź praktyczna/rzeczywista. Jeśli niezmienność jest bezpieczna, biorąc pod uwagę pewne granice lub założenia, chcę wiedzieć, jakie dokładnie są granice „strefy bezpieczeństwa”. Kilka przykładów możliwych granic: * I/O * Wyjątki/błędy * Interakcje z programami napisanymi w innych językach * Interakcje z innymi maszynami (fizycznymi, wirtualnymi lub teoretycznymi) Specjalne podziękowania dla @JimmaHoffa za komentarz, który rozpoczął to pytanie! # Część 2 Programowanie wieloprocesorowe jest często używane jako technika optymalizacji - aby przyspieszyć działanie kodu. Kiedy szybciej jest używać blokad w porównaniu z obiektami niezmiennymi? Biorąc pod uwagę ograniczenia określone w Prawie Amdahla, kiedy można osiągnąć lepszą ogólną wydajność (z lub bez uwzględniania garbage collectora) z obiektami niezmiennymi w porównaniu z blokowaniem zmiennych? # Podsumowanie Łączę te dwa pytania w jedno, aby spróbować dotrzeć do miejsca, w którym znajduje się pole ograniczające dla niezmienności jako rozwiązanie problemów z wątkiem.


title: Czy klasy do wstrzykiwania mogą mieć parametry konstruktora w DI?

text: Podano następujący kod: class ClientClass{ public function print(){ //jakiś kod do obliczenia $inputString $parser= new Parser($inputString); $result= $parser->parse(); } } class Parser{ private $inputString; public __construct($inputString){ $this->inputString=$inputString; } public function parse(){ //jakiś kod } } Teraz `ClientClass` jest zależna od klasy `Parser`. Jednak gdybym chciał użyć Dependency Injection do testów jednostkowych, spowodowałoby to problem, ponieważ teraz nie mogę wysłać ciągu wejściowego do konstruktora parsera, tak jak wcześniej, ponieważ jest on obliczany wewnątrz samego `ClientCalss`: class ClientClass{ private $parser; public __construct(Parser $parser){ $this->parser=$parser; } public function print(){ //jakiś kod do obliczenia $inputString $result= $this->parser->parse(); //--> zgłosi wyjątek, ponieważ nie podano ciągu znaków } } Jedynym rozwiązaniem, jakie znalazłem, było zmodyfikowanie wszystkich moich klas, które pobierały parametry w swoich konstruktorach, tak aby używały zamiast tego **Setters** (przykład: `setInputString()`) . Myślę jednak, że może być lepsze rozwiązanie niż to, ponieważ czasami modyfikacja istniejących klas może spowodować wiele szkód niż korzyści. Więc, * Czy klasy do wstrzykiwania nie mogą mieć parametrów wejściowych? * Jeśli klasa musi pobierać parametry wejściowe w swoim konstruktorze, w jaki sposób można ją poprawnie wstrzyknąć? **UPDATE** Dla wyjaśnienia problem pojawia się, gdy w moim kodzie produkcyjnym postanawiam to zrobić: $clientClass= new ClientClass(new Parser($inputString));//--->Nie mam możliwości przewidzenia $ inputString, ponieważ jest obliczany wewnątrz samej klasy „ClientClass”. **UPDATE 2** Ponownie dla wyjaśnienia, próbuję znaleźć ogólne rozwiązanie problemu nie tylko dla tego przykładowego kodu, ponieważ niektóre z moich klas mają 2, 3 lub 4 parametry w swoich konstruktorach, a nie tylko jeden.


title: Platforma bez dokumentów, jak przezwyciężyć ograniczone zasoby?

text: Pracuję dla klienta, a platforma, z której korzystamy to vBulletin. Jestem tak sfrustrowany prawie zerową dokumentacją i nieistnieniem w Google. Nie mamy zasobów, a wszystko, co mamy, to źródło. Teraz prawie chcę się poddać i znaleźć pracę, którą znam i korzysta z narzędzi open source.


title: Standardowe klauzule przyjazne GPL w umowie o pracę?

text: Mój pracodawca cieszy się, że mogę zwolnić niektóre prace na licencji GPL, jednak standardowa umowa zawiera sekcję „Wszystkie IP należy do firmy”. Chętnie zmienią to na coś, co jest bardziej przyjazne GPL, ale nie znamy dokładnego sformułowania, którego należy użyć. Czy istnieją zasoby internetowe dotyczące takich klauzul? Wydawałoby się, że rozsądnie byłoby istnieć. Jestem pewien, że będziemy musieli go prowadzić przez prawnika, ale gdyby istniał standardowy szablon, uprościłoby to proces, w którym przebywam w Wielkiej Brytanii, więc wyobrażam sobie, że taki zasób musiałby być specyficzny dla tego.


title: Czy istnieje coś takiego jak rozdęcie funkcji?

text: Natknąłem się na przerost oprogramowania/funkcji ekspresyjnych, ale czy jest to prawdziwe, czy raczej powinniśmy mówić o problemach z wydajnością, zużyciu pamięci i dysku, doświadczeniu użytkownika i instalacji na żądanie? Czego mi tu brakuje?


title: Najlepszy sposób na jednostkowe metody testowe, które wywołują inne metody w tej samej klasie

text: Niedawno rozmawiałem z przyjaciółmi, która z poniższych 2 metod najlepiej nadaje się do skrótu zwracania wyników lub wywołań metod wewnątrz tej samej klasy z metod wewnątrz tej samej klasy. To bardzo uproszczony przykład. W rzeczywistości funkcje są znacznie bardziej złożone. Przykład: public class MojaKlasa { public bool FunkcjaA() { return FunkcjaB() % 2 == 0; } protected int FunctionB() { return new Random().Next(); } } Tak więc, aby to przetestować, mamy 2 metody. Metoda 1: Użyj funkcji i akcji, aby zastąpić funkcjonalność metod. Przykład: public class MojaKlasa { public Func<int> FunctionB { get; ustawić; } public MojaKlasa() { FunkcjaB = FunkcjaBImpl; } public bool FunkcjaA() { return FunkcjaB() % 2 == 0; } protected int FunctionBImpl() { return new Random().Next(); } } [TestClass] public class MojaKlasaTesty { private MojaKlasa _subject; [TestInitialize] public void Initialize() { _subject = new MojaKlasa(); } [TestMethod] public void FunctionA_WhenNumberIsOdd_ReturnsTrue() { _subject.FunctionB = () => 1; var wynik = _subject.FunctionA(); Assert.IsFalse(wynik); } } Metoda 2: Uczyń składowe wirtualnymi, klasą pochodną iw klasie pochodnej użyj funkcji i akcji do zastąpienia funkcjonalności Przykład: public class MojaKlasa { public bool FunctionA() { return FunctionB() % 2 == 0; } chroniony wirtualny int FunctionB() { return new Random().Next(); } } public class TestableMyClass { public Func<int> FunctionBFunc { get; ustawić; } public MojaKlasa() { FunctionBFunc = base.FunctionB; } przesłonięcie chronione int FunctionB() { return FunctionBFunc(); } } [TestClass] public class MyClassTests { private TestableMyClass _subject; [TestInitialize] public void Initialize() { _subject = new TestableMyClass(); } [TestMethod] public void FunctionA_WhenNumberIsOdd_ReturnsTrue() { _subject.FunctionBFunc = () => 1; var wynik = _subject.FunctionA(); Assert.IsFalse(wynik); } } Chcę wiedzieć, co jest lepsze, a także DLACZEGO? Aktualizacja: UWAGA: **Funkcja B może być również publiczna**


title: Czy LINQ wymaga znacznie więcej cykli przetwarzania i pamięci niż techniki iteracji danych niższego poziomu?

text: ## Tło Jestem ostatnio w trakcie wyczerpujących wywiadów technicznych na stanowiska, które używają stosu .NET, z których niektóre zawierają głupie pytania, takie jak to, a niektóre pytania są bardziej trafne. Niedawno natknąłem się na problem, który może być poprawny, ale chcę skontaktować się ze społecznością, aby się upewnić. Zapytany przez ankietera, jak policzyłbym częstotliwość słów w dokumencie tekstowym i uszeregował wyniki, odpowiedziałem, że zrobiłbym to 1. Użyj obiektu stream, aby umieścić plik tekstowy w pamięci jako ciąg znaków. 2. Podziel ciąg na tablicę ze spacjami, ignorując interpunkcję. 3. Użyj LINQ względem tablicy do `.GroupBy()` i `.Count()`, a następnie `OrderBy()` powiedział licznik. Odpowiedź ta jest błędna z dwóch powodów: 1. Przesyłanie strumieniowe całego pliku tekstowego do pamięci może być katastrofalne. A gdyby to była cała encyklopedia? Zamiast tego powinienem przesyłać strumieniowo jeden blok na raz i zacząć budować tablicę mieszającą. 2. LINQ jest zbyt drogi i wymaga zbyt wielu cykli przetwarzania. Powinienem był zamiast tego zbudować tablicę mieszającą i dla każdej iteracji dodać słowo do tablicy mieszającej tylko wtedy, gdy nie istniało inaczej, a następnie zwiększyć jego liczbę. Pierwszy powód wydaje się rozsądny. Ale drugi daje mi więcej pauzy. Pomyślałem, że jednym z punktów sprzedaży LINQ jest to, że po prostu abstrahuje operacje niższego poziomu, takie jak tablice mieszające, ale pod zasłoną jest to wciąż ta sama implementacja. ## Pytanie Poza kilkoma dodatkowymi cyklami przetwarzania do wywoływania dowolnych metod abstrakcyjnych, czy LINQ wymaga _znacznie_ większej liczby cykli przetwarzania do wykonania danego zadania iteracji danych niż zadanie niższego poziomu (takie jak budowanie tabeli skrótów)?


title: Wykorzystanie modeli szacowania kosztów do przewidywania kosztów tworzenia oprogramowania w języku C#

text: Jestem studentem na stażu. Zostałem poproszony o określenie wykonalności migracji istniejącego pakietu oprogramowania C# tylko dla systemu Windows do Mono. Przeprowadziłem już analizę w celu zidentyfikowania natywnych bibliotek, które będą musiały zostać przeniesione lub zastąpione kodem zarządzanym, i zidentyfikowałem wywołania API tylko dla systemu Windows, dla których trzeba będzie znaleźć odpowiedniki w systemie Linux/OS X. Na tej podstawie opracowałem kilka (bardzo przybliżonych) szacunków, jaki procent każdego zespołu będzie musiał zostać przepisany. Teraz chciałbym oszacować czas realizacji tych zmian. Wydaje się, że ludzie lubią COCOMO II do tego typu zadań. Jednak mam problem z określeniem liczb dla wejścia SLOC (wiersze kodu źródłowego). Użyłem narzędzia Unified Code Count firmy USC, aby określić logiczne linie kodu (LLOC) w projekcie jako całości i w określonych zestawach będących przedmiotem zainteresowania. W ramach jednej strategii szacuję, że około 10% projektu 165 tys. Używając tych liczb, COCOMO II daje mi około 30 osobo-miesięcy wysiłku. To wydaje mi się wysokie - czy rzeczywiście? Myślę, że nie mam doświadczenia, aby wiedzieć na pewno. Zastanawiam się, czy powinienem zastosować współczynnik tiddle do danych wejściowych LLOC - wiem, że ludzie robią coś takiego dla niektórych języków podczas korzystania z LOC (np. dzielenie LOC Pythona przez współczynnik 6). Czy powinienem to zrobić za pomocą C#, a jeśli tak, jaki czynnik? Wreszcie, czy użycie COCOMO-II jest w ogóle rozsądną metodą na zrobienie tego? Wszystko, czego chcę, to przybliżenie rzędu wielkości. Niedokładność skali Fermiego jest tutaj w porządku. Czy jest lepszy sposób?


title: pytanie związane z certyfikacją programowania iPhone'a

text: Szanowni Państwo, pracuję przy tworzeniu aplikacji na iOS. Teraz zastanawiam się nad uzyskaniem certyfikatu w tworzeniu aplikacji na iOS. Mam na myśli stronę expertrating.com. Poprowadź mnie, jeśli znasz jakikolwiek inny certyfikat w rozwoju iOS o większej wartości rynkowej certyfikatu. Z góry dziękuję i życzę wspaniałego życia.


title: Jak można oznaczyć modyfikatory dostępu „przyjaciel” i „przyjaciel chroniony” w UML?

text: Znane mi symbole modyfikatorów dostępu są istotne dla wielu różnych języków: > **public** : + > **private** : - > **protected** : # > **package** : ~ ( _lub none_ ) > _Jednak_ , w VB.NET istnieją inne takie modyfikatory dostępu -- `friend` i `protected friend` ( _są one nazywane `internal` i `protected internal` w c#_). Jakie są symbole UML dla tych modyfikatorów dostępu? Czy `przyjaciel` jest wystarczająco blisko "dostępu do pakietu", aby można go było oznaczyć tyldą "`~`"? Czy to oznaczałoby, że „chroniony przyjaciel” może być oznaczony jako „`#~`”?


title: Gdzie we wzorcu MV* idzie model niebiznesowy?

text: Przekazuję elementy menu do widoku z ViewModel. Definicja mojego menu to model z właściwościami tytuł, obraz, hasChildren i isEnabled. Ale ten model jest przeznaczony dla interfejsu użytkownika, w przeciwieństwie do modeli domen biznesowych, takich jak Person, ContactDetail, Transaction itp. Więc kiedy widzę ten model menu obok modeli domen biznesowych, czułem się jak zanieczyszczony. Czy jest właściwe miejsce na umieszczenie tego rodzaju modeli specyficznych dla interfejsu użytkownika? Dziękuję.


title: Jak wyjaśnić 8-letniemu dziecku interfejsy i konstruktory C#?

text: Jak wyjaśnić interfejsy i konstruktory C# ośmioletniemu genialnemu dziecku?


title: Jakie są strategie, aby zostać dobrym programistą open source?

text: Zawsze słyszę, że angażowanie się w projekty open source jest dobre dla kariery i im więcej (dobrego) open source wydasz, tym bliżej będziesz do zdobycia wymarzonej pracy, zanim jeszcze będziesz miał rozmowę kwalifikacyjną. Jestem ekspertem w Javie i staram się biegle posługiwać Scala. Zawsze myślę o zaangażowaniu się w rozwój open source w Javie/Scala, ale następujące nieporozumienia mnie przed tym powstrzymują. Jak/gdzie zacząć w projektach programistycznych open source w GitHub itp.? Lub Jak znaleźć aktywne/zajęte projekty programistyczne open source? Jak znaleźć obszar, w którym wymagane jest usprawnienie lub ulepszenie w takich projektach? W pierwszej analizie wygląda to na zbyt skomplikowaną lub dość trudno jest znaleźć takie możliwości. Jakie są wspólne strategie, które należy zastosować, jeśli chcę zostać hobbystą/programistą open source w wolnym czasie? Osoby, które mają doświadczenie w tworzeniu oprogramowania typu open source, prosimy o dzielenie się od podstaw swoją wiedzą/ekspertyzą. Z góry dziękuję.


title: Czy posiadanie w jednostce wielu chronionych zmiennych, zdarzeń i procedur to zły pomysł?

text: Piszę w pełni rozwiniętą bibliotekę sieciową p2p na serwerze UDP firmy Indy z zamiarem opublikowania jej online. Projekt, który zaimplementowałem posiada menedżera P2P (TIdUDPServer), który może pełnić rolę serwera lub peera. Każdy podłączony peer jest reprezentowany przez oddzielny obiekt, który zawiera dodatkowe funkcje i informacje o nich. Klasy są zawarte w jednej jednostce. W celu uproszczenia zadeklarowałem, że te elementy członkowskie używane przez jednego z nich są objęte ochroną. W jakiś sposób moje instynkty dają mi złe przeczucia. Menedżer P2P ma bardzo niewielu członków, ale obiekt równorzędny ma prawie wszystko pod ochroną. Pójście w drugą stronę z pewnością wprowadzi wiele wywołań kodu i metod. Muszę wiedzieć; 1. Czy dobrą praktyką dla bibliotek sieciowych jest posiadanie chronionych członków? 2. Czy powinienem zastąpić zmienne właściwościami pod chronionymi? Z getterami i seterami czy bezpośredni dostęp byłby w porządku?


title: Jak mogę uzyskać informację zwrotną o tym, czy analiza ucieczki wpłynęła na mój kod, czy nie?

text: Jednym z problemów z optymalizacją kompilatora jest to, że tak naprawdę nigdy nie wiem, co kompilator (lub w tym konkretnym przypadku Jit) robi z moim kodem. Czy jest więc jakaś możliwość dowiedzenia się, czy dana optymalizacja kompilatora miała miejsce, czy nie? Chcę tylko mieć pewność, że niektóre obiekty (wektory matematyczne) są tworzone na stosie, a nie na stercie.


title: Jak utrzymać przykładowy projekt należący do obszaru XX dla każdego obszaru organizacyjnego mojej firmy?

text: Moja firma migruje z SVN do GIT. Mamy kilka projektów w jedynym repozytorium. Ponieważ SVN w zasadzie rozumie tylko foldery i pliki, mamy foldery reprezentujące obszary firmy, które zawierają projekty tego obszaru. Ale w GIT wygląda na to, że projekty są własnością użytkowników, więc jeśli chcę zachować przykładowy projekt należący do obszaru XX mojej firmy, musiałbym utworzyć użytkownika o nazwie „area-XX”, aby to zrobić? I znowu i znowu dla każdego obszaru organizacyjnego mojej firmy? Chcę struktury typu `my_git_server/area-XX/project-A` dla projektu, zamiast `my_git_server/user/project-A`. W jaki sposób mogę to zrobić?


title: Czy programiści powinni być zmuszani do meldowania się każdego dnia przed wyjściem z pracy, nawet jeśli kod się nie kompiluje?

text: Podczas poprzedniego stanowiska konsultingowego programiści byli proszeni o conocne wpisywanie kodu, niezależnie od tego, czy był on zgodny lub kompletny. Menedżerowie obawiali się utraty jakiegokolwiek kodu i powiedzieli, że teraz tracimy najwyżej jeden dzień. Miejsce, w którym aktualnie się znajduję, bada, czy to wdrożyć. Czy ktoś ma jakieś plusy/minusy? Czy programiści powinni być zmuszani do meldowania się?


title: Jeśli testowanie funkcjonalne jest nazywane czarną skrzynką, jak można to zrobić na poziomie testów jednostkowych?

text: Przygotowując się do ISTQB, znalazłem w ich podręcznikach wiele dziwnych rzeczy. Np. nazywają testowanie czarnoskrzynkowe jako testowanie funkcjonalne, gdy nie zajmujesz się strukturą, a jedynie obserwujesz wyniki na podstawie danych wejściowych. Ale później mówią, że testowanie funkcjonalne odbywa się na poziomach… no cóż, jak mogę zrobić testowanie jednostkowe bez wiedzy, jak to działa, jeśli mogę to zobaczyć (i muszę to zobaczyć). To jest białe pudełko, ale potem jest w konflikcie..


title: Jak zastanowić się nad filtrami ISAPI?

text: Jestem nowicjuszem. Mam przyzwoitą znajomość C++, ale brakuje mi wiedzy domenowej, jeśli chodzi o serwery i takie tam. Moim obecnym zadaniem jest pisanie filtrów ISAPI dla IIS Web Server. Od kilku dni googluję i odkryłem, że jest to dość trudne zadanie. Kilka przykładów znalazłem tutaj. Muszę zrozumieć i zaimplementować kilka filtrów, które będą logować żądania do serwera i zliczać żądania dla każdego zasobu. Wydaje mi się, że nie rozumiem przykładów kodu. Czy możecie mi zaproponować plan lub listę rzeczy do zrobienia. Pytam o to, ponieważ wiem, że ten projekt ma wiele warunków wstępnych. Od czego powinienem zacząć? Jak powinienem postąpić ? Oczekuję, że spojrzycie na przykłady kodu tutaj i powiecie mi, co powinienem przeczytać, aby zrozumieć przykłady. Wtedy mógłbym sobie wyobrazić pisanie własnych filtrów.


title: Jak działają skalowalne filtry bloom?

text: Czytałem o skalowalnych filtrach bloom i nie mogłem zrozumieć, w jaki sposób za każdym razem, gdy jeden z filtrów wypełnia się, dodawany jest nowy filtr bloom o większym rozmiarze. Elementy, które przyczyniły się do ustawionych bitów we wstępnie utworzonych filtrach, nie mogą być wyszukiwane pod kątem obecności. Może się mylę w moim rozumieniu tego? Rozumiem podstawowe filtry bloom. Nie mogę jednak owinąć głowy wokół dynamicznych filtrów bloom.


title: Jak daleko powinienem posunąć się do weryfikacji adresu e-mail, gdy koszt błędnych wiadomości e-mail jest wysoki?

text: **Kiedy ważniejsze jest zapobieganie literówkom niż pokrycie 100% wszystkich możliwych adresów e-mail, jakie metody sprawdzania poprawności składni e-mail wykonujesz?** Wyobraź sobie: > Pracujesz w lokalnej firmie gazowej i elektrycznej. 10% nowych instalacji jest > anulowanych, ponieważ klienta nie ma w domu i kosztuje to twoją firmę 50 $ rocznie. Zaczynasz pobierać adresy e-mail z nowymi zleceniami instalacji, aby > móc wysyłać e-maile z przypomnieniem na dzień przed spotkaniem. Przenosisz tę > liczbę do 0% _gdy masz e-mail, który można dostarczyć_. Jedynym problemem jest to, że > 15% wszystkich e-maili, które odbierasz, jest odbijanych z powodu literówki. Adresy e-mail > są rejestrowane przez agentów call center, którzy rozmawiają z klientem > przez telefon. W takim przypadku ważne jest, aby zebrać prawidłowy adres e-mail. Nie jest też tak źle, jeśli ktoś nie może z powodzeniem użyć adresu e-mail, takiego jak: „Wielka Mama D. jest numerem 1 CA$H Maker, CHŁOPIEC!!!”@naturalhistory.museum Domyślam się, że Wielka Mama D. nie może użyj tego e-maila w dowolnym miejscu i albo tak naprawdę nie używa e-maila, albo ma bardziej konwencjonalny adres e-mail do użycia. Wiąże się to z tym bardziej ogólnym pytaniem: Jak daleko powinienem posunąć się weryfikację adresu e-mail? Dorzućmy jeszcze kilka założeń: 1. To jest w Stanach Zjednoczonych, więc jest inaczej niż ludzie będą mieli adresy e-mail takie jak 漢字@gmail.com (powodzenia w przekazaniu tego agentowi call center w Austin w Teksasie) 2. E-maile z potwierdzeniem nie są odpowiednie, ponieważ klient kontaktuje się z nami tylko telefonicznie


title: Necessitas lub Java do tworzenia aplikacji na Androida

text: Jestem programistą Qt/C++ dla systemów Windows i Linux. Teraz muszę przełączyć się na system operacyjny Android i program dla tego systemu operacyjnego. Zastanawiam się, czy rozsądne jest pozostanie przy Qt i wykorzystanie projektu Necessitas do tworzenia aplikacji na Androida, czy przejście na Javę?


title: Potrzebujesz danych wejściowych dotyczących przechowywania informacji o standardach stdin, stdout i stderr do debugowania

text: Pracuję ze starszym systemem, który nie jest taki zły, ale pomyślałem o wprowadzeniu do niego pewnych ulepszeń i chciałem poprosić o opinie, które pomogą mi podejmować dobre decyzje. Platformą jest Linix (różne jej smaki). System kręci się wokół uruchamiania [czasami długich] "zadań" - programów wiersza poleceń. Zadania zwykle kończą się sukcesem, ale czasami mogą się nie powieść, a kiedy to się dzieje, bardzo ważne jest, aby skutecznie zdiagnozować, co poszło nie tak, naprawić podstawowe problemy (jeśli występują) i ponownie uruchomić zadanie. Nie używamy do tego żadnego oprogramowania firm trzecich, ponieważ potrzebujemy pełnej kontroli nad procesem. W tej chwili informacja o zadaniu jest zapisywana na dysku jako pliki - jest jeden plik dla stdin, jeden plik przechowujący kod wyjścia, jeden plik dla stdout i stderr łącznie, wiem też dokładnie, jak proces został uruchomiony - co było nazwa polecenia i jakie były argumenty. Teraz ... myślałem o podzieleniu wyjść stdout i stderr na różne pliki, ale potem zdałem sobie sprawę, że gdy są one połączone razem, można zobaczyć kolejność chronologiczną komunikatów, z wyjątkiem tego, że teraz ludzki osąd jest, aby stwierdzić, które zostały wydrukowane, a które zawiera błędy. Przenosząc to na dalszą ekstremum — dlaczego nie wrzucić do miksu stdin? Dla celów debugowania może mieć znaczenie, jaki konkretny wiersz wejścia spowodował błąd. Idealnie komunikat o błędzie byłby wystarczająco opisowy, aby dać dużo kontekstu, ale nie zawsze tak się dzieje. Szukam czystego sposobu na uporządkowanie tych danych, aby zautomatyzowana logika mogła być używana do pomocy ludziom w diagnostyce błędów. Przy wielu uruchomionych zadaniach te awarie zdarzają się dość często. Przykład czegoś, o co mógłbym chcieć zapytać — jakie było 20 ostatnich linii danych wejściowych, które poprzedzały pierwszą linię w stderr? Przypuszczam, że dokładny znacznik czasu może być przydatny, ale nie aż tak krytyczny. Ponadto, ponieważ używany jest moduł logowania, często wiersze wyjściowe zawierają już znaczniki czasu, ale nie zawsze - nie napisałem wszystkich fragmentów tego starszego systemu. mogę dokonać w nim zmian; Po prostu nie chcę tego przepisywać. Czy możesz zaproponować dobry sposób na uporządkowanie tych strumieni (być może dodaj jakieś metadane), aby uporządkować rzeczy? Wymagane jest, aby nie zużywać zbyt wiele dodatkowej mocy obliczeniowej lub miejsca na dysku / pamięci RAM. Podejrzewam, że mój problem nie jest wyjątkowy. Z góry dziękuję.


title: Dlaczego Haskell nie ma abstrakcji lambda na poziomie typu?

text: Czy istnieją ku temu jakieś teoretyczne powody (takie jak to, że sprawdzanie typu lub wnioskowanie o typie stałoby się nierozstrzygalne) lub powody praktyczne (zbyt trudne do prawidłowego wdrożenia)? Obecnie możemy zapakować rzeczy do `newtype` jak newtype Para a = Para (a, a), a następnie `Para :: * -> *` ale nie możemy zrobić czegoś takiego jak `λ(a:*). (a,a)". (Istnieją niektóre języki, które je mają, na przykład Scala.)


title: Jak stworzyć Button/Switch-Like Tile, na którym można nadepnąć i zmienić jego wartość?

text: Jeśli gracz nadepnie na kafelek przycisku, gdy jest to prawda, staje się ona fałszem. Jeśli gracz nadepnie na kafelek przycisku, który jest fałszywy, staje się prawdziwy. Problem polega na tym, że gdy gracz stanie (przecina) kafelek przycisku, będzie aktualizował stan. Tak więc od prawdy staje się fałszem. Ponieważ jest fałszywa i gracz się z nią przecina, znów staje się prawdą. Prawda-fałsz-prawda-fałsz i tak dalej. Używam ElapsedGameTime, aby spowolnić proces aktualizacji, a gracz może mieć szansę na zmianę Buttona na true lub false. Nie jest to jednak rozwiązanie, którego szukałem. Czy jest jakiś inny sposób, aby utrzymać go w stanie False/Prawda, gdy gracz stoi na kafelku przycisku?


title: Do MVC czy nie MVC, oto jest pytanie

text: Początkowo zaczynałem od wtyczek jQuery, potem przeniosłem się do aplikacji Backbone.js, potem eksperymentowałem z modułami MicroJS MVC, ale obecnie zastanawiam się nawet, czy w ogóle jest to potrzebne. Ostatnio prototypowałem nową aplikację, a kod jest smukły, elegancki i piękny. Następnie przepisałem go w ciągu 3 godzin do aplikacji Backbone.js, a kod zmienił się z jego drobnostkowego modelu fitness, w nadęty, złożony i brzydki bałagan. Problem polega na tym, że w dzisiejszych czasach tak się zawsze dzieje. Gdy tylko zostanie wprowadzona architektura MVC/MV*, wszystko się rzyga. Zastanawiam się, czy czasy i epoka wymagania tych rzeczy po stronie klienta już minęły, teraz, gdy przeglądarki są w rzeczywistości całkiem sprawnymi istotami, może nie potrzebujemy już całego rozrostu frameworków MV*. Jakie są Twoje myśli? Czy inni w to wpadli? Do MVC, czy nie MVC?


title: Jak rozłożyć / wymodelować szachownicę

text: Jako ktoś nowy w programowaniu buduję szachową aplikację internetową w JavaScript, zarówno dla zabawy, jak i po to, by dowiedzieć się więcej o wzorcach projektowych. Ciągle wpadam na ścianę, tak się rozkłada program. Na początek wybrałem prostą reprezentację szachownicy, tutaj: Board = function() { var turn = 0; var model = [[-4, -2, -3, -5, -6, -3, -2, -4], [-1, -1, -1, -1, -1, -1, - 1, -1], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 1 , 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0], [ 1, 1, 1, 1, 1, 1, 1, 1], [ 4, 2 , 3, 5, 6, 3, 2, 4]]; z kilkoma podstawowymi procedurami dostępu, takimi jak this.move = function(pt1, pt2) { turn += 1; model[pt2.x][pt2.y] = model[pt1.x][pt1.y]; model[pt1.x][pt1.y] = 0; }; ... To ma sens, że tablica hermetyzuje stan i jest odpowiedzialna za zmianę stanu, ale może nie znać reguł gry — podoba mi się pomysł, że mogę podłączyć jakiś rodzaj `RulesContoller` i całkowicie zmienić naturę gra w czasie wykonywania. Ale poza tym jestem trochę sparaliżowany tym, jak szczegółowo modelować elementy. Widzę kilka opcji. Najpierw mógłbym zdefiniować konstruktor `Piece` i utworzyć nową instancję dla każdego indeksu w zagnieżdżonej tablicy, coś takiego: _.each(state, function(row, y) { _.each(row, function(val, x ) { stan[y][x] = nowy Kawałek(x, y, val); }); }); „Kawałek” mógłby łatwo wywnioskować jego kolor, typ (np. „król”) i lokalizację z tej informacji. Ale wydaje się to również zbędne, ponieważ tłumaczę tylko model, który już w pełni reprezentuje tablicę. Poza tym nie wydaje się, aby głównym celem 'Klasy' 'Piece' było to tłumaczenie, np. "Och, mam -5, musi być mroczną królową." Inną opcją jest sprawienie, aby elementy były głupsze, tzn. nie można było wywnioskować tej informacji z modelu. Ale potem po prostu buduję tablicę w linii, na przykład var model = [new Rook(1,1,'dark'), new Knight(1,2,'dark'), new Bishop(1,3,'dark' )... ], ... To wydaje się bliższe temu, w jaki sposób układana jest szachownica: nie ma jakiejś eleganckiej formuły; raczej po prostu umieszczasz elementy we właściwym miejscu. Ale to też po prostu brutalna siła. W grę wchodzi kilka symetrii i wzorców, które można uprościć. W każdym razie, w tym momencie po prostu pluję. Wszelkie pomysły byłyby przydatne. Dziękuję.


title: Jak należy uporządkować drzewo przestrzeni nazw, aby mieć klasę Math i przestrzeń nazw Math?

text: Nie wiem, czy to dobry czy zły pomysł, czy też jest to technicznie możliwe... ale chciałbym mieć coś takiego: public class Math { public int gcd(a,b) // Metoda dla największego wspólnego mianownika public int lcm(a,b) // Metoda dla najmniejszego wspólnego wielokrotności public int factorial(a) // Metoda dla silni ... } i chciałbym mieć również przestrzeń nazw o nazwie `Math` który ma podklasy, takie jak `Math.Matrix`, `Math.RowVector`, `Math.ColumnVector`, itp., dzięki czemu mogę zdefiniować własną strukturę danych Matrix i powiązane z nią akcje. Czy to wskazane? Nie jestem zbyt zainteresowany pomysłem używania innej nazwy dla mojej klasy `Math`, ponieważ chcę, aby była to klasa statyczna z wszelkiego rodzaju funkcjami/metodami, które są dla mnie przydatne, a jednocześnie chcę zebrać wszystkie moje odpowiednie struktury danych w przestrzeni nazw `Math`.


title: Biblioteka JSON - Jackson czy Play Framework?

text: Pracując na bazie kodu Java i Scala, toczy się debata na temat tego, czy użyć Jackson JSON Java, czy biblioteki JSON Play Framework. Po przeczytaniu Play JSON Docs, a także rozdziału 9 (JSON) Play for Scala, przejrzałem również przykład z Mykong on Jackson. Patrząc na kilka prostych przykładów, biblioteka JSON Play wydaje się być lepszym wyborem ze względu na ogólne podejście do programowania funkcjonalnego: * Zapewnienie bezpieczeństwa w czasie kompilacji podczas analizowania JSON z typami danych Option/JsResult. * W wyniku powyższego dostępne są funkcje wyższego rzędu (map/flatMap), które zapewniają moc i zwięzłość * Jak rozumiem, Jackson analizuje za pomocą typowego paradygmatu try/catch. Radzenie sobie z błędami JSON w czasie kompilacji (Play) v. run-time (Jackson) jest bezmózgiem Konkluzja — biblioteka JSON Play korzysta z funkcjonalnego podejścia programistycznego, którego wynikiem jest kod, który jest łatwiejszy do zrozumienia niż biblioteka Jackson. Ogólnie wybór wydaje mi się jasny. Czy brakuje mi jakichś zalet/przeciw dla którejś z bibliotek?


title: Struktura przypadku użycia

text: Tworzę przypadki użycia dla projektu. Ogólny użytkownik jest rozszerzany o „kategorie” użytkownika, które następnie są rozszerzane przez administratora (który może wykonywać wszystkie możliwe zadania). Czy można przedstawić poniższe elementy? Czy istnieje lepszy sposób na przedstawienie takich informacji? ![przykładowy przypadek użycia](http://i43.tinypic.com/adm0b4.jpg)


title: Pomoc w nauce C++ Framework Qt

text: Od dawna jestem programistą PHP. Ale teraz osiągnąłem granice i sieć już mnie nie fascynuje. Interesuje mnie nauka rozwoju wieloplatformowego. Uczyłem się Java przez prawie rok i znam wiele jej koncepcji OOP, ale chciałbym tworzyć wysokowydajne programy wieloplatformowe i uważam, że Java jest nieco wolniejsza, chyba że masz sprzęt typu bestia. Szukając książek o programowaniu w C i C++, odkryłem tylko, że obejmują one tylko podstawy, które są takie same dla każdego języka. Typy danych, pętle, warunkowe, operatory itp. Ale języki nie są już tak minimalne. C++ dostarcza STL, a ja jeszcze nie znalazłem książki, która pokazuje, jak tworzyć programy w świecie rzeczywistym przy użyciu tych standardowych funkcji. Bardzo dobrze znam PHP, znam tajniki wzorców projektowych MVC i Singleton, ale potem natknąłem się na Qt Framework i niektóre aplikacje, które obsługuje: Skype, VLC, KDE i wszystkie są solidne. NIE spotkałem się z żadnymi błędami ani problemami z awariami tych aplikacji w systemie Windows NOR w systemie Linux. **Moja prośba** _Jak mam podejść do nauki Qt?_ Największą różnicą, z jaką się spotykam, jest statyczne typowanie w C++, które bardzo różni się od typowanych dynamicznie języków (PHP, Python itp.), z którymi już pracowałem.


title: Oczekiwania CFO i rozwój Scrum

text: Jeśli chodzi o tematy finansowe, to muszę przyznać, że nie jestem za dobrze zorientowany. Staram się prowadzić moją organizację w pracach nad rozwojem oprogramowania przy użyciu cyklu życia opartego na Scrumie. Często jestem zniechęcony, gdy próbuję szkolić kierownictwo wykonawcze, ponieważ uważają, że Scrum i Agile nie radzą sobie dobrze z ich celami finansowymi. Pewnego dnia zostałem poproszony o pokazanie, w jaki sposób moi programiści mogą wykorzystać %60 godzin pracy. Znalazłem kilka artykułów w sieci ( http://itprojectfinancials.com/insights/2011/06/05/capitalizing-software-developer-costs-from-sdcl-to-agile/), ale nie przyszły z jakimiś wielkimi argumentami. Szukam porad lub przykładów organizacji, które efektywnie kapitalizują koszty oprogramowania w zwinnym środowisku programistycznym. Ten artykuł dość dobrze podsumowuje problem, ale nie oferuje żadnej porady http://blogs.collab.net/agile/2007/12/20/the-scrum-gaap/


title: Co oznaczają procedury tworzenia kopii zapasowych i wskazówki dotyczące rozwiązywania problemów dla systemu?

text: Piszę dokumentację do oprogramowania, które zrobiłem, ale nie rozumiem, co to oznacza w niektórych aspektach. Prosi mnie o napisanie o procedurach tworzenia kopii zapasowych, ale co to dokładnie oznacza? Czy to oznacza tworzenie kopii zapasowej bazy danych na innej usłudze hostingowej lub czymś zupełnie innym? Jestem zdumiony, jakie są również wskazówki dotyczące rozwiązywania problemów. Jeśli masz jakiekolwiek pojęcie, co to może oznaczać, możesz dać swój wgląd, nawet jeśli nie jesteś w 100% pewien, na wypadek, gdyby mogło to wywołać we mnie, co to znaczy. Dziękuję.


title: Rozwiązywanie trudnych lub nieoczekiwanych pytań technicznych na spotkaniach

text: W zależności od projektu, nad którym pracuję, może być wymagane uczestnictwo w większej liczbie spotkań zarówno z interesariuszami wewnętrznymi, jak i kierownictwem technicznym w firmach klienta. W trakcie tych spotkań nieuchronnie pojawi się kilka pytań, na które: * Nie masz odpowiedzi. * Nie pomyślałeś o tym z tego czy innego powodu. * Uważasz się za nieistotny lub całkowicie poza zakresem bieżącego spotkania. W każdym przypadku, jak odpowiadasz na te pytania? Jakieś wskazówki lub triki dotyczące pozostawania autorytatywnym przy jednoczesnym zachowaniu uczciwości?


title: W jaki sposób projekty open source mogą odnieść sukces bez dokumentacji dotyczącej ich projektu lub architektury?

text: Chcę poprawić swoje umiejętności programistyczne, studiując słynne projekty open source, ale uważam, że łatwo się zgubić, po prostu wskakując do ich kodu źródłowego. Postanowiłem więc przeczytać ich dokumentację na temat ich projektu lub architektury (takiej jak diagramy UML), aby najpierw uzyskać ogólne pojęcie o organizacji ich kodu. Ku mojemu zaskoczeniu jednak nie mogę znaleźć żadnej dokumentacji architektonicznej dla dużych projektów open source, takich jak Hibernate, Spring, ASP.NET MVC, Rails itp. Zacząłem się więc zastanawiać: Jak można projekt open source pomyślne, jeśli nowi programiści nie mają dokumentacji architektonicznej/projektowej do przeczytania lub jeśli kierownik projektu właśnie otworzył kod źródłowy, ale zamknął dokumentację?


title: ffmpeg: wytnij wiele plików wejściowych, szukając jednego pliku wyjściowego

text: Mam listę plików wideo (pobranych z bazy danych), każdy z czasem rozpoczęcia i zakończenia żądanego interwału: # plik początek koniec v1.mp4 1:01 2:01 v2.mp4 3:02 3:32 v3.mp4 2:03 5:23 Muszę utworzyć pojedynczy plik wideo zawierający te interwały: [0:00]---v1---[2:00]---v2---[2:30]---v3-- -[5:50] Wolę używać ffmpeg, ponieważ jest zainstalowany na serwerze. Program wywołujący jest napisany w PHP. Łatwo jest wyciąć jedno wejście na jedno wyjście (argument ucieczki dla jasności usunięto): exec("ffmpeg -ss $begin -i $plik_wejściowy -ss $begin -c kopiuj $plik_wyjściowy"); Czy istnieje prostszy sposób niż wykonanie ffmpeg dla każdego interwału, a następnie wykonanie go jeszcze raz, aby połączyć przygotowane klipy razem? Naprawdę nie lubię mieć wielu plików tymczasowych lub zajmować się obsługą skomplikowanych procesów.