title: Dlaczego tak trudno jest znaleźć coś na stronie stwardnienia rozsianego?

text: Zawsze miałem to pytanie w głowie i naprawdę byłbym szczęśliwy, gdybym otrzymał wyjaśnienie. Czy to tylko ja albo też czujesz to samo , że trudno jest znaleźć coś na witrynie stwardnienia rozsianego. Na przykład za każdym razem, gdy muszę pobrać .NET framework, muszę go Google. Nigdy nie wiesz, co możesz pobrać, bez kategorii do pobrania. Po prostu zostajesz do pola wyszukiwania. Nigdy nie wiesz, czy pobrałeś najnowszą wersję pliku. Tragiczna prawda jest taka, że musisz polegać na jego konkurentze Google, aby znaleźć cokolwiek na ich stronie. Wiem, że to duża firma. * **Ale czy naprawdę trudno jest mieć zorganizowany sposób publikowania informacji?**


title: Dlaczego nie ma ogólnej implementacji OrderedDictionary w .net?

text: Dlaczego firma Microsoft nie zapewniła ogólnej implementacji OrderedDictionary? Widziałem kilka niestandardowych implementacji, w tym: http://www.codeproject.com/KB/recipes/GenericOrderedDictionary.aspx Ale dlaczego Microsoft nie umieścił go w podstawowej bibliotece .net? Z pewnością mieli powód, by nie budować generycznego… ale co to jest? Przed wysłaniem tej wiadomości widziałem: http://stackoverflow.com/questions/2629027/no-generic-implementation-of-orderdictionary Ale to tylko potwierdza, że nie istnieje. Nie **dlaczego** nie istnieje. Dziękuję


title: Jak koduje się na 13-calowym MacBooku Pro?

text: Od lat pracuję na 15-calowym komputerze, ale ostatnio skusił mnie 13-calowy MacBook Pro. Ponieważ często jestem w trasie, szukałem głównie lekkiej maszyny, biorąc pod uwagę, że mam zewnętrzne ekrany prawie w każdym miejscu, w którym pracuję. Czy jest ktoś, kto pracuje nad 13-calowym MacBookiem Pro, który dałby mi wskazówkę? Czy to twój najlepszy przyjaciel, czy wyrzucisz go przez okno? Poza moim światem złożonym z kodu i IDE, naprawdę nie obchodzi mnie to plotki Apple: czy mam czekać, bo pojawi się nowa wersja MacBooka Pro?Wasza pomoc jest doceniana, dziękuję.


title: Czy AspectJ lub AOP można ogólnie używać do testowania obsługi wyjątków?

text: Czytam rozdział książki ("Kontrolowany test wyjątków" w "Testowanie testowania zorientowanego obiektowo") o testowaniu obsługi wyjątków w uruchomionym systemie (nie na poziomie jednostki). Wniosek jest taki, że trudno automatycznie wywołać wyjątek na danej warstwie w systemie, poza symulacją przyczyny wyjątku. Czy użycie AspectJ lub innego podejścia AOP nie rozwiąże problemu? Dzięki AOP mogę stworzyć aspekt, który zgłosi oczekiwany wyjątek i dołączyć go do metody wywołanej przed obsługą wyjątków.


title: Czy historia zatwierdzeń powinna być używana do przekazywania krytycznych informacji programistom?

text: Niedawno podczas spotkania pojawiła się rozmowa dotycząca wycofania zewnętrznego SDK z najnowszej wersji i zauważono, że fakt, że nie należy go używać, był już w historii zmian. Inni programiści argumentowali, że to zła praktyka i powinno być coś albo w pliku źródłowym (tj. `// Nie aktualizuj wersji SDK x.y.z, zobacz zgłoszenie 1234`) lub w pliku `README` na poziomie projektu. Inni argumentowali, że skoro historia zatwierdzeń jest częścią dokumentacji projektowej, jest to akceptowalna lokalizacja dla takich informacji, ponieważ i tak wszyscy powinniśmy ją czytać. Jako taka, czy historia zatwierdzenia powinna być używana do przekazywania krytycznych informacji innym programistom, czy też takie informacje powinny być powielane w innej lokalizacji, takiej jak projekt `README` lub komentarze w odpowiednim pliku źródłowym?


title: Unikanie podwójnego POST

text: Wdrażamy usługę sieciową RESTful, która pozwoli aplikacjom klienckim na POST dokumentów do niego i będzie przechowywać dokument zwracając unikalny identyfikator w odpowiedzi. Klientami będą głównie aplikacje Spring MVC, ale nie muszą. Dwie aplikacje klienckie, nad którymi obecnie pracujemy, mają różne strony JSP, które zawierają formularze HTML, które będą zawierać elementy plików i inne atrybuty. Tak więc użytkownik prześle formularz przez POST do kontrolera Spring w aplikacji klienckiej. Kontroler odczyta bajty z pliku, a następnie POST je do usługi RESTful, odbierze unikalny identyfikator i zapisze unikalny identyfikator wraz z innymi informacjami z formularza w bazie danych. Ponieważ każdy klient może mieć wiele stron JSP z bardzo różnymi atrybutami w formularzach, nie widzimy sposobu na po prostu POST bezpośrednio do usługi sieciowej RESTful. Czy istnieje czysty sposób na uniknięcie podwójnego POST? Widzę możliwość posiadania wyskakującego okienka wielokrotnego użytku, które zajmuje się POSTINGiem dokumentu do usługi sieciowej RESTful, a następnie przechowywaniem unikalnego identyfikatora dokumentu w sesji lub w ukrytym polu w formularzu nadrzędnym. Widzę dwie wady: 1) użytkownik może nie lubić dodatkowego kroku polegającego na przejściu do wyskakującego okienka i 2) dokument może zostać osierocony, jeśli użytkownik nie prześle strony nadrzędnej. EDYCJA / WYJAŚNIENIE: problem nie polega na tym, że POST jest wysyłany dwukrotnie do tego samego zasobu, ale raczej unika się zarówno POST z JSP do kontrolera w aplikacji klienckiej, a następnie drugiego POST tych samych danych z aplikacji klienckiej do Zasób REST.


title: Składnia Haskella dla definicji typów: dlaczego znak równości?

text: Jestem trochę zdezorientowany wyborem składni Haskella dla definicji typów, jak w danych Foo = Bar Mianowicie: czy znak równości tutaj naprawdę oznacza równość w jakimś subtelnym sensie, czy jest to tylko losowy wybór notacji? Na przykład, w foo x y = bar y x równość jest w rzeczywistości równością: jeśli ta linia jest obecna, `foo a b` i `bar b a` mogą być używane mniej lub bardziej zamiennie w programie. Jednak `data Foo` i `Bar` prawdopodobnie nie mogą być używane zamiennie po `data Foo = Bar`. Ilekroć wznawiam moje próby nauczenia się Haskella, jestem nieco zdezorientowany tą sprzeczną z intuicją składnią IMO i muszę przejrzeć dokumentację, aby przypomnieć sobie formaty LHS i RHS. Czy są przypadkiem jakieś alternatywne składnie definicji typów?


title: Środki do (legalnego) cross-site scripting

text: Czy istnieją dobre sposoby na umożliwienie współpracy skryptów z co najmniej dwóch domen na tej samej stronie przeglądarki? Chcę stworzyć rozszerzalną platformę, na której dostarczam model i niektóre widoki, ale także pozwalam stronom trzecim na tworzenie własnych widoków. Pomysł polega na tym, że cała manipulacja modelem będzie wykonywana przez jego API i tylko model będzie komunikował się z (głównym) serwerem, ale użytkownicy będą mogli dołączać skrypty z innych domen, które również używają tego API (te skrypty mogą " jeśli jednak chcą). Wiem, że wiele witryn już to robi, na przykład gdy używają CDN do dostarczania bibliotek takich jak jQuery. Pamiętam jednak, że czytałem też, że te biblioteki musiały być jakoś „podrasowane”, aby nie zostały pomylone przez ataki XSS, chociaż nie mogłem znaleźć więcej informacji na ten temat. Mam tylko powierzchowną wiedzę na temat tego, jak przeglądarki izolują treści dla różnych domen i do jakiego stopnia ta izolacja występuje, więc kilka wskazówek w tym kierunku byłoby bardzo mile widziane. Jestem również świadomy metody używania ramek iframe do ładowania treści „mniej niż zaufanych” i wydaje się, że komunikacja między stroną główną a jej ramkami iframe jest dość prosta. Wolałbym nie używać tej metody, ale zrobię to, jeśli będzie to korzystne dla bezpieczeństwa. Jednak nie jestem pewien, czy tak jest, ponieważ iframe może wywoływać dowolne metody na stronie nadrzędnej... ( _Edytuj_ : z tego, co zrozumiałem z komentarza Floriana Margaine'a, metoda w połączonym pytaniu działa tylko dla iframe tego samego pochodzenia , czy to prawda?W takim przypadku widzę teraz korzyści związane z bezpieczeństwem) Czy ktoś z doświadczeniem w tym temacie może mi powiedzieć, jak to działa? To jedyne opcje, jakie znam, inne sugestie też są mile widziane. Chciałbym również zauważyć, że chociaż musi istnieć pewien poziom zaufania między użytkownikiem a stroną trzecią dostarczającą skrypt (ponieważ jego celem jest manipulowanie modelem należącym do tego użytkownika), każdy użytkownik będzie mógł swobodnie wybierać rozszerzenia w jego wolnym czasie (tzn. dostępne skrypty nie będą ograniczone do tych, które wcześniej oceniłem i zatwierdziłem), więc wszelkie środki mające na celu złagodzenie problemów bezpieczeństwa dla użytkowników są również mile widziane. **Edytuj:** wyjaśnię nieco pytanie. Celem tutaj nie jest wysyłanie żądań HTTP do innych domen, a jedynie lepsza kontrola nad tym, co różne skrypty robią na tej samej stronie. Z tego, co do tej pory zrozumiałem, zasady tego samego pochodzenia, **różne strony** nie mogą się ze sobą komunikować, chyba że pochodzą z tej samej domeny, ale skrypty **na tej samej stronie, ale pochodzące z różnych domen** mogą robić wszystko chcą. Czy to jest poprawne? (jeśli tak, to chyba moje pytanie jest dyskusyjne...)


title: Platforma programistyczna dla rozwoju .NET?

text: Obecnie dyskutuję z moim szefem na temat zakupu nowego komputera, ponieważ mój stary się starzeje... Jestem jedynym "prawdziwym" programistą w firmie (to nie jest firma programistyczna) i jako taki mają Tak naprawdę nie kupiłem wcześniej żadnego komputera z tego rodzaju specyfikacjami. Sporządziłem więc listę, bo budowanie własnego jest tańsze niż kupowanie gotowych. http://www.prisjakt.no/product_list.php?do=lista&k=10529 A on myślał, że to trochę przesada. I mogę przyznać, że w niektórych wyborach posunąłem się trochę za daleko (na przykład zraidowane dyski SSD), ale pomyślałem, że lepiej wyjść wysoko, a potem trochę zejść w dyskusjach. Ale co powiedziałbyś, że jest wygodną platformą do programowania .NET? Obecnie używam Visual studio 2010, lokalnego SQL Server 2008 R2 (Developer Edition), 1-3 lokalnych maszyn wirtualnych do testowania, a jako systemu operacyjnego używam Windows 7 Enterprise x64. Osobiście nie uważam, że ta lista jest przesadzona, nie wspominając już o tym, że jest bardzo odporna na przyszłość. Włożyłem 240 GB dysku systemowego i 4 TB pamięci, więc nie zabraknie mi miejsca w najbliższym czasie. To czterordzeniowy procesor i7, pamięć 16 GB... Nie jest to absolutne minimum, ale nie jest to przesada? 10000 NOK to około 1900 USD.


title: Jaki jest dopuszczalny margines błędu przy szacowaniu czasu trwania projektu?

text: Firma, w której pracuję, dąży do uzyskania 10% maksymalnego marginesu błędu. Oczekują, że analitycy nie przegapią szacunku o więcej lub mniej niż 10%. Nie wiem, co o tym myśleć, bo nie mam do czego porównywać. Jaka może być dobra podstawa do zmierzenia, jeśli szacujemy zbyt źle, mniej więcej za mniej lub więcej? Jak myślisz, ile (w %) można przegapić?


title: Jak nazwałbyś port .NET projektu Java?

text: Zakładając, że projekt Java nazywa się „bar” lub „jBar”. Jak nazwałbyś port .NET (w C#): * NBar * dotBar * BarNet * Bar-sharp


title: Jak mogę pobierać dane z więcej niż jednej usługi sieciowej jednocześnie w PHP?

text: Mam 3 serwisy internetowe, które dostarczają mi dane do mojego systemu rezerwacji hotelowych. Jeśli uruchamiam je sekwencyjnie, trwa to zbyt długo. Dlatego chciałem je uruchomić za pomocą wątków, ale nie jestem pewien, czy wątki php to obsługują i czy jest to bezpieczne, ponieważ wszystkie 3 procesy, które będą obsługiwać usługę sieciową, będą czytać i zapisywać do wspólnych tabel. Czy ktoś może mi doradzić, jak mam postępować?


title: Outsourcing funkcjonalności z widoku Django do C/C++

text: Zajmuję się tworzeniem projektu Django, który zasadniczo sprowadza się do: 1. Użytkownik przesyła formularz. 2. Widok Django analizuje formularz i kompiluje reprezentację tej formy, która może być odczytana przez inną „funkcję”. Przez „funkcję” rozumiem pewien rodzaj pliku wykonywalnego/wywołania, w którym widok Django może być agnostyczny w kwestii języka, w którym została napisana ta „funkcja”, a nawet sprzętu, na którym działa. 3. Widok Django przekazuje skompilowany formularz do 'funkcji'. 4. 'Funkcja' wykonuje swoją działalność na wejściu, a następnie wyprowadza pewne dane w formacie czytelnym dla widoku Django. 5. Widok Django odczytuje dane wyjściowe 'funkcji' i renderuje dane do formatu, który może być używany przez użytkownika. W moim konkretnym przypadku „funkcja” jest dużym obliczeniem numerycznym, które nie jest odpowiednie dla zwykłego Pythona. Co więcej, ta „funkcja” została już opracowana w C++11, a Python może komunikować się ze skompilowanym plikiem binarnym przez os.system i plik IO. **Moje pytanie brzmi:** _dlaczego nie powinienem po prostu używać os.system lub subprocess z widoku Django_ zamiast a) przeprojektować 'funkcję' za pomocą jednego z ctypes | łyk | Boost.Python | Pyrex | cyton; b) nauczyć się pisać rozszerzenia Pythona i odpowiednio przepisywać „funkcję”? Rozważałem również przekształcenie „funkcji” w demona, ale nie mam wystarczającego doświadczenia z demonami, aby móc ocenić konsekwencje takiego projektu. **Czy istnieją niepożądane/niezdefiniowane zachowania, które wynikałyby z używania os.system/subprocess, jak opisano powyżej, dla projektu Django, który działał pod obciążeniem?** Czy brakuje czegoś jeszcze, co jest bardzo oczywiste dla wszystkich innych? Jest też to powiązane pytanie. Ale z powodu niedostatku szczegółów zarówno w przypadku użycia PO, jak i w odpowiedziach, jestem ostrożny, aby nie dać się nabrać na własne błędne potwierdzenie.


title: Czy często dzieli się back-end i front-end na dwie pozycje w projektach webowych?

text: Czy podczas uruchamiania sieci częściej inżynier pracuje nad front-endem ORAZ back-endem funkcji (zasadniczo odpowiedzialnym za całą funkcję)? A może inżynierowie rozdzielili back-end i front-end? Które z nich są bardziej korzystne iw jakich sytuacjach? Wadą, jak zauważyłem, jeśli chodzi o posiadanie jednego inżyniera odpowiedzialnego za całą funkcję, jest to, że osoba ta może być szczególnie silna tylko w zakresie tworzenia frontendu lub backendu, ale nie w obu, co czasami powoduje spadek szybkości i jakości. Posiadanie programistów frontendu i backendu na jednej funkcji zwiększa szybkość działania i jakość ORAZ zachęca do współpracy. Martwię się jednak, że 2 inżynierów pracuje nad jedną funkcją, co może być słabym wykorzystaniem zasobów, ponieważ 1 inżynier może zostać umieszczony na innej funkcji, nad którą będzie pracował. Jaka jest powszechna/najlepsza praktyka w zakresie alokacji zasobów inżynieryjnych backendu/frontendu w małym, początkowym etapie uruchamiania? A potem jak będzie się zmieniać w miarę wzrostu?


title: Co Scrum mówi o demonstracjach technicznych?

text: Czasami jestem przywiązany do pracy demo i zastanawiam się, czy metody Scrum określiły coś na temat tego, jak należy robić demo? Zrobiłem szybkie dema i zostałem poproszony o demo w locie, chociaż nie jest realistyczne oczekiwanie, że programowanie zawsze idzie tylko do przodu. WIĘC chciałbym wiedzieć, czy możesz mi powiedzieć, odkąd śledzę Scrum, czy jest coś, co może ulepszyć moje techniczne dema? Na przykład jak często i kiedy należy robić demo?


title: Czy to prawda, że to, czego nauczysz się jako student CS, będzie nieaktualne do czasu ukończenia studiów?

text: Słyszałem to stwierdzenie kilka razy rzucane przez ekspertów od technologii/nauki w sieci. Czy to ma jakąś wartość? Co dokładnie mają na myśli?


title: Nauczanie C++ dla licealistów po raz pierwszy: Gdzie postawić granicę?

text: Będę mentorem dla zespołu uczniów szkół średnich biorących udział w zawodach FIRST Robotics Competition, większość zespołów tutaj opracowuje swoje oprogramowanie robota w C++. Dla wielu uczniów w zespole będzie to pierwsze wprowadzenie do programowania. Nie wybrałbym C++ do nauczania programowania licealistów (np. Python lub Javascript byłyby łatwiejsze, jak sądzę), ale wybór jest ustalony. Chcę nauczyć ich poprawnego C++ (tj. unikać mieszanego dialektu C/C++, tj. C+), ale nie chcę ich też straszyć niepotrzebną złożonością. Jeśli o to chodzi: * Czy powinienem zacząć używać STL od pierwszego dnia, zwł. `vector` czy po prostu trzymać się standardowych tablic? Tablice są łatwiejsze do wprowadzenia, ale błędy wskaźnika mogą być trudniejsze do wychwycenia. * Jeśli chodzi o I/O, czy powinienem trzymać się `cout` itp., czy myślisz, że `printf` byłoby łatwiejsze do nauczenia? * Czy są jakieś zasoby online dotyczące C++, które są odpowiednie dla takich młodych uczniów? Dziękuję! **EDYTUJ** : Dzięki za tak wiele doskonałych odpowiedzi. Oprócz _Accelerated C++_ , które jest sugerowane przez wiele osób, stwierdziłem, że _C++ For Everyone_ jest doskonałym tekstem.


title: Jakie są korzyści płynące z biegłości w wielu językach programowania?

text: Mam przyjaciela, który nie chce uczyć się żadnego innego języka niż Perl. Jak mam go przekonać, że nie może przejść przez całe życie tylko jednym językiem? Jakie są argumenty, by otworzyć jego umysł na nowe języki? Jakie są korzyści z nauki wielu języków programowania?


Czy istnieją standardy przygotowania instrukcji obsługi urządzenia elektronicznego? Staram się przygotować instrukcję obsługi urządzenia. Nie mogłem jednak znaleźć żadnego formatu. Jeśli znajdę, wezmę to jako przewodnik dla mnie. Jeśli nie ma standardu, co powinno być w instrukcji lub czego nie powinno być?


title: Czy programista powinien otrzymać roczny budżet na sprzęt?

text: Szukam nowej pozycji w nowej firmie. W przeszłości rozmawiałem z niektórymi osobami (na ogół nie w tej firmie), że otrzymali roczny budżet na zakup nowych rzeczy komputerowych, aby być na bieżąco. Teraz uważam, że warto zadać to pytanie, ponieważ Joel od razu wyszedł i powiedział, że pracodawca powinien zapłacić za najlepszy sprzęt, jaki można kupić za pieniądze... oczywiście z rozsądkiem. Z testu Joela: 12 kroków do lepszego kodu > ### 9\. Czy korzystasz z najlepszych narzędzi, jakie można kupić za pieniądze? > > Pisanie kodu w skompilowanym języku jest jedną z ostatnich rzeczy, > których nie da się zrobić od razu na komputerze domowym... > > **Najlepsze zespoły programistyczne nie torturują swoich programistów.** Nawet drobne > frustracje spowodowane używaniem słabych narzędzi sumują się, czyniąc programistów > zrzędliwymi i nieszczęśliwymi. A zrzędliwy programista to programista nieproduktywny… Czy ktoś wie, czy branża ma taki standard, by oferować zasiłek lub budżet? Nigdy nie pracowałem dla takiej firmy, ale myślę, że powinienem rzucić to na ring do negocjacji. Wydaje się rozsądne. Jak radzą sobie z tym większe firmy, takie jak MS, Google i Apple? Jeśli powiesz tak, podaj zakres... Powiedziano mi, że są to liczby od 5 tys. do 10 tys. Wydaje mi się wysoki, ale hej, chętnie bym to przyjął.


title: Rozpoczęcie od nowa w rozwoju komputerów stacjonarnych

text: Lata temu dużo programowałem w Delphi (głównie naukowe). Od kilku lat zajmuję się pracami programistycznymi w oparciu o technologie webowe. Muszę szybko włączyć kilka aplikacji na pulpit. Spojrzałem na Qt i krzywa uczenia się wydaje się nieco stroma. Czy zaleca się powrót do Delphi (powiedzmy z Delphi XE)? Jakie są zalety i wady? Koszt nie jest problemem.


title: Czy duże składowiska rtęci cierpią z powodu „wyścigu popychania”?

text: Po przeczytaniu kilku odpowiedzi „Dlaczego DVCS jest lepszy” na kilka pytań na temat Programistów.SE wszyscy zdają się mówić, że ogólnie DVCS jest lepszy, ponieważ nie ma wyścigu zatwierdzeń w dużych projektach, zatwierdzeń IE, więc nieaktualne update, commit, ponownie nieaktualny, commit, wciąż nieaktualny itp. DVCS ogranicza to pojęciem push. Jednak czy w przypadku bardzo dużych projektów nie byłoby „wyścigu popychania”, zwłaszcza pod koniec dnia? Wiem, że w Git jest to nieco naprawione przez ciągłe rozgałęzianie dla wszystkiego, ale w Mercurial nie rozgałęziasz się, tworzysz nową głowicę. Problem, który widzę 1. Użytkownik próbuje wypchnąć 2. Nieaktualny (mercurial nie pozwoli ci wypchnąć, jeśli twoje lokalne repozytorium jest nieaktualne), więc ściągasz i łączysz swoje lokalne zmiany 3. Użytkownik próbuje ponownie wypchnąć, ale dopóki nie scalanie kogoś innego zostało popchnięte, więc znów są nieaktualne 4. Pociągnij i połącz ponownie 5. Nadal nieaktualne 6. Powtórz Brzmi znajomo? Czy jest to rzeczywisty problem z bardzo dużymi i popularnymi repozytoriami Mercurial? A co z wewnątrz firmy, gdy każdy wykonuje swój ostatni krok w ciągu dnia?


title: Czy niektórzy programiści znają tajemnice, których my nie znamy?

text: Nie będę zawracał Ci głowy szczegółami mojej dyskusji, więc przedstawię ją w formie krótkiego wystąpienia. Javy śledził artykuły i publikacje znanego programisty (rodzaj Martina Fowlera z mojego kraju). Mówi, że dzieli się pewnymi sekretami, których nie mają inni znani programiści. Nigdy nie wierzę, że w obszarze programowania są jakieś sekrety, takie jak czarodzieje. Ale niektórzy programiści, którzy nie są jeszcze dobrzy w tej dziedzinie, uważają, że inni znani programiści odnoszą sukcesy, ponieważ znają pewne tajemnice, których my nie znamy. Całkowicie się z tym nie zgadzam i dyskutowałem o tym z kimś iw końcu powiedział mi, że jesteś w tej dziedzinie od 2 lat, a on (java guy) jest 20-letnim zawodowym programistą, więc wie lepiej niż ty. Chciałem mieć pewność, że się nie mylę. Dlatego chciałem to wiedzieć.


title: Jak prawidłowo udokumentować funkcjonalność w zwinnym projekcie?

text: Niedawno zakończyliśmy pierwszy etap naszego projektu. Używaliśmy agile do dwutygodniowych sprintów. I chociaż aplikacja sprawdziła się dobrze, teraz zwracamy uwagę na niektóre zadania konserwacyjne. Jednym z zadań konserwacyjnych jest to, że cała nasza dokumentacja pojawia się w formie specyfikacji. Te specyfikacje opisują 1 lub więcej historii i generalnie są zbiorem pracy, który kilku programistów może przewrócić w ciągu tygodnia. W przypadku rozwoju działa to naprawdę dobrze - co dwa tygodnie deweloperzy dostają specyfikację i jest to fajna, dyskretna część pracy, którą mogą po prostu wykonać. Z punktu widzenia dokumentacji stało się to bałaganem. Problem z pisaniem specyfikacji, które skupiają się na dostarczaniu deweloperom wymagań just-in-time, polega na tym, że nie kładziemy dużego nacisku na całościowy obraz. Specyfikacje pochodzą z różnych punktów widzenia - mogą opisywać standardową funkcję, mogą opisywać części przepływu pracy, mogą opisywać konkretny ekran... A teraz mamy reguły biznesowe dotyczące naszej aplikacji rozrzucone na 120 dokumentach. Szukanie jakiegokolwiek dokumentu dla konkretnej reguły biznesowej lub konkretnej funkcji jest dość trudne, ponieważ nie wiesz, który dokument zawiera te informacje, a zgłoszenie żądania zmiany jest równie trudne, ponieważ po raz kolejny nie jesteśmy pewni, którą specyfikację wprowadzić . Mamy więc może kilka tygodni przerwy, zanim wrócimy do określania funkcjonalności następnej fazy, ale w tym czasie chciałbym ponownie przyjrzeć się naszym procesom. Myślę, że sposób, w jaki pracowaliśmy do tej pory w zakresie dostarczania specyfikacji co dwa tygodnie, działa dobrze. Ale potrzebujemy również sposobu na zarządzanie naszą dokumentacją, tak aby nasze reguły biznesowe dla danej funkcji/przepływu pracy były łatwe do zlokalizowania/zmiany. Mam dwa pomysły. Po pierwsze, zestawiamy wszystkie nasze specyfikacje w serię specyfikacji głównych podzielonych na kilka szerokich obszarów funkcjonalnych. Specyfikacje opisują sprint, główna specyfikacja opisuje system. Jedyny problem, jaki widzę, to 1) Nie wszystkie nasze istniejące 120 specyfikacji są starannie zdefiniowane w szerokich obszarach funkcjonalnych. Niektóre będą wymagały zerwania, połączenia itp., co zajmie dużo czasu. 2) Będziemy pisać specyfikacje i aktualizować specyfikacje główne w każdym nowym sprincie. Wygląda na to, że praca jest podwojona, a potem czy programiści patrzą na specyfikację, czy na specyfikację główną? Inną moją sugestią jest przyznanie, że nasza dokumentacja jest zbyt wielkim bałaganem i zarządzanie tym bałaganem w przyszłości. Przechodzimy więc przez każdą specyfikację, przypisujemy do niej podobne słowa kluczowe, a następnie, gdy chcemy wyszukać funkcję, szukamy tego słowa kluczowego. Problemy, które widzę 1) Wciąż problem reguł biznesowych rozproszonych wszędzie, słowa kluczowe po prostu ułatwiają jego odnalezienie. w każdym razie, jeśli ktoś ma jakieś przyzwoite pomysły lub doświadczenia, którymi mógłby się podzielić, jak najlepiej zarządzać dokumentacją, naprawdę to doceni.


title: Czy funkcja może być za krótka?

text: Ilekroć piszę tę samą logikę więcej niż raz, zwykle umieszczam ją w funkcji, więc w mojej aplikacji jest tylko jedno miejsce, w którym muszę zachować tę logikę. Efektem ubocznym jest to, że czasami kończę z jedną lub dwiema funkcjami wierszowymi, takimi jak: function conditionMet(){ return x == condition; } LUB funkcja runCallback(callback){ if($.isFunction(callback)) callback(); } Czy to lenistwo czy zła praktyka? Pytam tylko, ponieważ skutkuje to większą liczbą wywołań funkcji dla bardzo małych fragmentów logiki.


title: Jaki jest preferowany obiekt do przechowywania tego typu struktury danych?

text: Rozmawiałem z kimś, kto dla mnie koduje. Był sfrustrowany moim podejściem do konkretnego problemu. Jestem całkowicie samoukiem i bardzo pragmatycznym - nie jestem profesjonalnym programistą, zamiast tego czasami piszę kod, aby coś zrobić, a następnie przekazuję mu go, aby go posprzątał - spraw, aby był solidny itp. Czytamy w dużych plikach txt, które używają znaczniki sgml do zaznaczania granic między poszczególnymi dokumentami, które są ze sobą powiązane. <opentagfor plik txt> <document> <być może niektóre znaczniki atrybutów dokumentu> dokument może być zakodowany w formacie uu, może być html lub coś innego może określić typ za pomocą znaczników atrybutów </document> <innydokument> <może niektóre znaczniki atrybutów inny dokument> sam dokument może być zakodowany w formacie uuencoded, może być html lub coś innego może określić typ za pomocą znaczników atrybutów </anotherdocument> . . . <closetagfor txt file> Poszczególne dokumenty są zużywane w dalszej kolejności. Czasami są zapisywane do struktury plików w celu indeksowania, innym razem część ich zawartości jest wyodrębniana i zapisywana jako „dane”. Więc moje podejście polegało na stworzeniu słownika słowników. document_dictionary = {document_position_index:{attribute-tag-1:value1,attribute-tag-2:value2,document:\n sam dokument\n może być zakodowany\n może być html\n lub coś innego \n może powiedzieć, co wpisz według tagów atrybutów}, . . .} document_position_index to pozycja indeksu dokumentu w oryginalnym pliku źródłowym txt - nie ma żadnego znaczenia. teraz, jeśli chcę coś zrobić z dokumentami, mogę zrobić takie rzeczy, jak dla dokumentu w document_dictionary if document['some-attribute-tag'] == someValue: zrób coś Problemem jest to złe kodowanie (w szczególności przy użyciu liczby całkowitej (document_position_index) ) było frustrujące dla mojego programisty. Powiedział, że to zła forma. Ja jeszcze po Googlingu przez chwilę nie rozumiem. Więc byłbym wdzięczny albo za lepsze wyjaśnienie, które dostałem od niego, albo jakiś wskazówkę we właściwym kierunku. Czy tego typu pytanie należy tutaj zadać?


title: Wytwarzanie modułowych, wielokrotnego użytku i luźno połączonych komponentów MVC

text: Buduję aplikację MVC3 i potrzebuję ogólnych wytycznych dotyczących zarządzania złożoną interakcją po stronie klienta między moimi składnikami. Oto moja ogólna definicja jednego komponentu: Komponent, który ma swój własny kontroler, model i widok. Cała logika komponentu jest umieszczona wewnątrz tych trzech części, a komponent jest „samodzielny”, zawiera własną formę, dane potrzebne do interakcji, aktualizuje się za pomocą Ajax i tak dalej. Oprócz tej wewnętrznej logiki i zachowania komponentu, musi on być w stanie „rozmawiać” ze światem zewnętrznym. Rozumiem przez to, że powinien dostarczać dane i zdarzenia (tak jakby), więc gdy ten komponent zostanie osadzony na stronach, może powiadomić inne komponenty, które następnie mogą aktualizować się na podstawie bieżącego stanu i danych. Mam pomysł, aby użyć klienta ViewModel (w java-skrypcie), który podłączyłby wszystkie istotne komponenty na stronie i kontrolował interakcję między nimi. Dzięki temu komponenty byłyby wielokrotnego użytku, modułowe - niezależnie od kontekstu, w jakim są używane. Jak byś to zrobił, trochę utknąłem, ponieważ nie wiem, czy jest to dobre podejście i istnieje techniczna możliwość osiągnięcia tego za pomocą javascript/jquery. Myląca część dotyczy aktualizacji przez Ajax, jak zapewnić, że komponent jest prawidłowo połączony z ViewModel, gdy komponent jest aktualizowany w Ajax (lub, co gorsza, usuwany lub dodawany dynamicznie). Ponadto, jak powinien być skonstruowany ten model ViewModel i jakich szczegółów użyć tutaj iw komponentach, aby działały jako synergia??? W sieci znalazłem różne przykłady podobnego podejścia, ale są one nadmiernie uproszczone (nawet dla manekinów) lub zbyt szczegółowe i nie zapewniają cennego zasobu ani ogólnego rozwiązania dla tego rodzaju implementacji. Jeśli masz jakieś poważne przykłady, byłoby to również bardzo pomocne. Uwaga: Moim celem jest uproszczenie, solidność i elegancja interakcji między wieloma komponentami na tej samej stronie.


title: Jakie są przykłady automatyzacji specyfikacji BDD przez warstwę interfejsu użytkownika?

text: Rozumiem, że lepiej **zautomatyzować specyfikacje BDD poniżej interfejsu użytkownika**, gdy tylko jest to możliwe. Na przykład i cytuję z książki Gojko Adzica: _Specyfikacja przez przykład_ : > Nie sprawdzaj logiki biznesowej przez interfejs użytkownika Moje pytanie brzmi: **_Jakie są konkretne przypadki użycia, gdy użycie warstwy UI ma sens w kontekście BDD ?_**


title: Wyjaśnienie ActiveX, OLE, COM lub linki informacyjne

text: Dużo programowałem w C# w Visual Studio i wielu pomniejszych/innych językach, ale naprawdę trudno mi zrozumieć interfejsy ActiveX, OLE, COM. Wszystko, co mam, to to, że są jak dll, możesz napisać coś w jednym języku i sprawić, by zadziałało na innym. Szukając tutaj, ale nic nie znalazłem, szukałem w google, ale znalazłem tylko hardkorowe wyjaśnienie ludzi zakładając, że jest to najłatwiejsza rzecz na świecie i budowanie wyjaśnień przy założeniu, że już wiesz, co to jest, podając tylko linijkę lub dwa wyjaśnienia na ich temat. Naprawdę muszę wiedzieć, co jest teraz lepsze (jak widziałem na wikipedii ActiveX, jest to ewolucja zarówno COM, jak i OLE, które są starszymi standardami...) i pełne ich wyjaśnienie, prawdopodobnie z kodem. W C# i Visual studio wszystko jest o wiele prostsze. Możesz stworzyć bibliotekę dll i włączyć ją do swojego projektu bez większego wysiłku... Wyjaśnij tutaj lub wklej tutaj linki ze wszystkimi wyjaśnieniami, które znasz/możesz znaleźć... Dzięki


title: Masz jakieś doświadczenia z Mono na serwerach produkcyjnych?

text: Jestem ciekawy, jak używać platformy .NET dla niektórych aplikacji internetowych (np. ASP.NET MVC 2). Jednak mój budżet jest ograniczony, więc chciałbym używać Mono na Linuksie. Nigdy wcześniej nie używałem Mono i nie czytałem o większych witrynach, które używają Mono+Linux na serwerze w produkcji. Jakie masz doświadczenia z używaniem Mono na Linuksie w środowisku produkcyjnym? Jaka jest wydajność i stabilność w porównaniu z platformą .NET w systemie Windows Server? Czy są jakieś popularne witryny, które używają go w produkcji? Jakieś artykuły dostępne online, czy podzielili się swoimi doświadczeniami?


title: Szybki algorytm znajdowania dopasowań między dwiema tablicami

text: Mam do czynienia z następującym problemem: Mam tablicę, która jest tworzona przez parsowanie pliku yaml, który zawiera wzorce w następującej strukturze. "Programowanie książek" Tytuł: lista tytułów Autor: "Książki artystyczne" Tytuł: foo bar Autor: Mrs. Foo Mr. Bar Rok: program ma otrzymać losowe dane wejściowe i sprawdzić, czy istnieje książka o tym konkretnym tytule ,Autor i Rok. Do tej pory używam następującego foreach book_type,values from config{ tag_match = 0 foreach tag from values{ tag_no = values.length() foreach value from tag{ if value in input tag_match++ } } if tag_match == values.length( ) /* oznacz książkę jako pasującą kontynuuj dopasowywanie*/ } Program nie powinien otrzymywać wielu pasujących wierszy, ale ma otrzymać ogromną ilość danych. Do tej pory musi wykonać iteracje book_type.length() * tag.length() * value.length() dla każdego wiersza danych wejściowych, czy jest lepszy sposób na zrobienie tego?


title: Gdzie umieścić źródła plików konfiguracyjnych

text: Zajmuję się tworzeniem aplikacji C# windows service, która posiada różne pliki konfiguracyjne dla rozwoju, dla systemu produkcyjnego, dla systemu testowego, takie jak: Dev.config Test.config Prod.config Teraz korzystamy z systemu kontroli wersji SVN i plików konfiguracyjnych przechowywanych w katalogi projektów: -trunk -MyFooService -Configs Dev.config Test.config Prod.config -MyFooService2 -Configs Dev.config Test.config Prod.config Przed opublikowaniem usługi do produkcji należy pobrać odpowiedni plik konfiguracyjny z tych folderów. Jak myślisz, to prawda? A może pliki konfiguracyjne należy umieścić w innym repozytorium? Lub w innym folderze lub nie powinno być umieszczane w VCS? A może lepiej będzie umieścić takie pliki: -trunk -src -MyFooService -MyFooService2 -configs -MyFooService -Configs Dev.config Test.config Prod.config -MyFooService2 -Configs Dev.config Test.config Prod.config


title: Zalecane testy post hoc w TDD?

text: Mam osobisty projekt, który nie ma solidnych testów. Na początku miałem trochę TDD, ale szybko przyniosło to efekt przeciwny do zamierzonego, ponieważ szczegóły projektu zmieniły się drastycznie z biegiem czasu. Tak więc wiele wcześniej napisanych testów stało się bezużytecznych. Teraz, gdy projekt nieco się zestalił, nie sądzę, aby duże zmiany były prawdopodobne. Czy powinienem cofnąć się i przepisać te testy dla starych funkcjonalności, czy po prostu zacząć od nowa i pisać testy tylko dla nowych funkcjonalności?


title: Co jest potrzebne, aby zostać inżynierem oprogramowania?

text: W listopadzie ubiegłego roku uzyskałem licencjat z CS i matematyki stosowanej, aw grudniu rozpocząłem pracę jako programista. Obecnie pracuję w bardzo solidnej firmie i należę do małego zespołu programistów, tworzącego duże oprogramowanie. Uwielbiam tworzenie oprogramowania i pewnego dnia chciałbym zostać (Senior) Inżynierem Oprogramowania, Analitykiem Systemowym lub Architektem Rozwiązań (nie jestem pewien w 100% co do wszystkich starszych tytułów). Moje pytanie brzmi - jakie doświadczenie muszę zdobyć, aby to osiągnąć? Jaka jest niezbędna/pożądana ścieżka kariery? Na jakie kursy muszę uczęszczać, aby zdobyć potrzebną wiedzę?


title: Jakie są zalety i wady architektury MVVM?

text: W klasie dzisiaj zapoznaliśmy się z architekturą MVVM dla Silverlight/WinPhone/WPF; ładnie wygląda w przypadku dużych projektów, ale co myślisz o MVVM? Jakie są plusy i minusy? Chcę bardziej zagłębić się w architekturę, aby wiedzieć, kiedy powinienem jej użyć.


title: jaka jest przenośność zmian w warunkach licencji GPL

text: Mam program, który jest publicznie oferowany w sieci na licencji GPL. Jest to projekt typu hobby, który stwierdziłem 3,5 roku temu i przez większość tego czasu miałem jednego współpracownika, który wniósł jakiś kod. Zarówno ja, jak i mój współpracownik, oboje lubię patrzeć, jak program się rozwija, ponieważ jest to nasze hobby. Osoba zaadaptowała swoją planszę do gry przeciwko programowi komputerowemu. Napisał własny silnik, a jego gra, którą gra na planszy, wykorzystuje inny zestaw zasad. Myślę, że zarówno ja, jak i mój współpracownik jesteśmy w porządku z bardziej liberalnym przyznaniem licencji. Powiedziałem autorowi pracy pochodnej, że kod, który modyfikuje, może dodać swoje prawa autorskie, a wszelkie pliki java, które są jego kodem, mogą mieć wyłączne prawa autorskie. Mogę udzielić bardziej liberalnej dotacji. Ale jeśli zrobię, jakie będzie jego prawo do przeniesienia. Czy przyznając mu modyfikację gpl i czyniąc swój kod otwartym kodem źródłowym, czy mógłby z kolei udzielić takiej samej dotacji komukolwiek innemu, czy też nie ma prawa do przeniesienia? Pierwsze pytanie (które spowodowałoby, że drugie nie miałoby zastosowania) brzmi: czy GPL będzie działać na to, co robię, aby promować moją markę i pozwolić innym na nieco pobłażliwe jej używanie. Drugą kwestią jest to, czy mój brak egzekwowania lub akceptowania modyfikacji warunków zostanie odziedziczony przez jakichkolwiek użytkowników jego pracy. Moje oprogramowanie open source jest związane z hobby, szachami. Zrozumienie licencji open source pomaga mi być przekonującym i pomaga w komunikacji, gdy zaczynają się ewentualne adaptery kodu.


title: Jak kontrolujesz jakość kodu w swoim zespole?

text: Oto moja sytuacja. Po prawie 2 latach udało mi się przekonać szefa do korzystania z TDD, kontroli wersji, standardów kodowania dla całego zespołu oraz frameworka MVC dla naszych projektów webowych. W końcu tam byłem. To powinno być niebo, ale kończy się jak piekło. Przygotowałem trochę materiału o MVC oraz próbki kodu pokazujące typowe testy jednostkowe. Pokazał zespołowi, wyjaśnił, jak należy robić rzeczy i uzyskał ich wsparcie. Wydawało się, że wszystko w porządku, w końcu członkowie zespołu byli bardzo doświadczeni. Upewniłem się również, że członkowie mają czas na różne rzeczy. Na początku pisanie testów może zająć bardzo dużo czasu. Dlatego starałem się, aby tym razem czuły się komfortowo z „przegraniem” bez żadnego menedżera proszącego ich o szybkie i brudne rzeczy. Po 15 dniach robiłem pierwszy przegląd kodu. A wynik nie był dobry. Znalazłem logikę biznesową na kontrolerach i widokach, a folder testów był prawie pusty. Jak sobie radzisz z tego typu rzeczami? Czy polecacie jakieś narzędzia, które mogą mi pomóc w przeglądzie kodu, czy jest to coś, co muszę zrobić ręcznie? Używam PHP z Zend Framework.


title: Jak zaprojektować dobry numer paragonu

text: Tworzę aplikację internetową, ta aplikacja będzie musiała generować numer paragonu dla każdej potwierdzonej transakcji. Co to jest dobry numer paragonu? Myślę, że numer paragonu nie powinien być tylko numerem bieżącym generowanym przez bazę danych, ale powinien mieć jakieś znaczenie poza unikalnym numerem bieżącym. Oto, co do tej pory wymyśliłem: Format: EYY-ddd-XXXXXXX Przykładowe wyjście: E13-146-0000001 Gdzie: `E` : To tylko oznaczenie, że ten numer paragonu został wygenerowany przez mój system. Ta wartość to zawsze „E”. „RR” : jest bieżącym rokiem wygenerowania paragonu, więc w tym przypadku jest to „13” „ddd” : jest dniem roku, „146” to 26 maja (w 2013 r.). `XXXXXXX`: to 7-cyfrowy numer bieżący, do 9 999 999, więc mój system może generować do 10 milionów unikalnych numerów paragonów dziennie do 2099. Co o tym sądzisz? Czy to rozsądne? Wszelkie sugestie są mile widziane. **Aktualizacja** Sądząc po dotychczasowych komentarzach, wygląda na to, że nie ma konkretnego „wzoru” ani „najlepszych praktyk” dla numeru paragonu. Moim zamiarem zadawania tego pytania jest sprawdzenie, czy istnieją konkretne najlepsze praktyki w generowaniu numeru, o którym powinienem wiedzieć. Wygląda na to, że mogę używać dowolnego wzoru, który uważam za rozsądny. Inne wymagania * Jak najkrótsze (dlatego nie wybrałem RRRRMMdd-XXXXXXX) * Raczej nie oczywiste (RRRRMMdd jest zbyt oczywiste). * Powinna mieć stałą długość. (Łatwiejsze do wykrycia, czy klient wprowadził nieprawidłowy numer paragonu) * Może generować dość duże liczby (10 milionów dziennie wydaje się sensowne, chociaż wątpię, aby mój system był tak popularny) * Może zostać przekształcony w kod QR (aby personel mógł zeskanować i zweryfikować numer jest prawidłowy) * Ktoś wspomina o **kodzie wykrywania błędów, takim jak ISBN** , wydaje się dobry, ale jeszcze go nie czytałem.


title: Wyświetl źródło — czy widoczne znaczniki są dla Ciebie ważne?

text: Właśnie przeczytałem bardzo przekonujący post na blogu Scotta Hanselmana, w którym cytował kolegę Erika Meijera w następujący sposób: > JavaScript jest językiem asemblera. Generowanie JavaScript + HTML jest jak zestaw > .NET. Przeglądarka może to wykonać, ale żaden człowiek nie powinien się tym przejmować > co tam jest. - Erik Meijer Dalej podaje przykłady tego, jak niektóre z największych dzisiejszych witryn (ta, którą pokazuje, pochodzi z Google+, ale cytuje też Bing, Facebooka itp.) tworzą witryny, w których, gdy wykonasz „View Source”, będziesz zobacz wiele ciasnych "zminimalizowanych javascript". W zasadzie nieczytelne na powierzchni. Mówiąc najprościej, nie możesz wejść na stronę i spojrzeć na ich źródło i zobaczyć całkiem sformatowaną wersję znaczników. Moje pytanie do ciebie jest podobne do tego, które zadaje Hanselman: czy to jest dla ciebie ważne? Jeśli to działa, czy to wystarczy? Moim zdaniem TAK – liczą się wyniki – Google jest tego przykładem. Ale muszę przyznać, że jako programista fajnie jest mieć możliwość od czasu do czasu zajrzeć do źródła i czerpać pomysły i przykłady z witryn, które podziwiam. Twoje myśli?...


title: Problem, gdy komunikat zwrotny jest zbiorem obiektów (diagram sekwencji)

text: Mam diagram sekwencji dla następującej operacji. Klasa Activity wykorzystuje metodę obecną w klasie ActivityBL. Metoda to: GetActivities(ActivitySearch objt) Komunikat wynikowy jest kolekcją obiektów Activity. (Kolekcja w C#). Jak przedstawiamy komunikat zwrotny na diagramie sekwencji? Obecnie wymieniam go jako wiadomość zawierającą tylko jeden obiekt Activity. Jak ją przedstawić jako kolekcję? ![tutaj podaj opis obrazu](http://i.stack.imgur.com/9Sja7.gif)


title: Jak nazywa się gramatyka, która może zmienić swój tokenizer w trakcie parsowania?

text: Tworzyłem język i odkryłem, że mój tokenizator języka będzie musiał się zmienić w zależności od tego, gdzie jest w parsowaniu. Tj. `abc[1]` zostałoby przetworzone jako 4 tokeny (`abc`, `[`, `1`, `]`), gdzie jako `{ abc[1] }` zostałoby przetworzone jako 3 (`{`, „abc[1]”, „}”. Czy gramatyka, która zmieniłaby swój tokenizer w trakcie przetwarzania, jest gdzieś zdefiniowana? Czy gramatyka w ogóle definiuje coś takiego, czy też jest nieistotna dla gramatyki i po prostu nie jest wykonywana na poziomie parsera?


title: O anonimowych obiektach

text: W Javie, szczególnie w programowaniu na Androida, jest jakaś różnica między deklarowaniem obiektu takiego jak SomeObject object = new SomeObject(); jakieśPole.setObiekt(obiekt); w porównaniu do anonimowego obiektu (nie jestem pewien, czy tak się nazywa) someField.setObject(new SomeObject()); wydajność mądry? Lub ulepszenia pamięci. Dziękuję.


title: Jak grają razem "You Ain't Gonna Need it" i "Teraz jest lepsze niż nigdy"?

text: Często przyłapuję się na tym, że „teraz jest lepiej niż nigdy”, gdy rozwijam suchość projektu. Zazwyczaj stwierdzam, że muszę pielęgnować zrozumienie Jednej Autorytatywnej Lokalizacji dla fragmentu wiedzy w kontekście systemu innych fragmentów wiedzy. Dlatego staram się projektować system „teraz”. I odwrotnie, ta praktyka powoduje, że buduję dość daleko, pomimo rozsądnej szansy, że nie będę tego potrzebować. Jak układają się te dwa wzorce? Jakie praktyki stosujesz, aby upewnić się, że grają ładnie? Jak uczycie ich razem bez powodowania zamieszania?


title: Przekazywanie zmiennych z PHP do C++

text: Muszę wywołać program z PHP i przekazać do niego kilka vars i/lub zestawy par klucz-wartość. Jak przekazać te zmienne za pomocą argumentów do wywoływanej funkcji? `exec("/ścieżka/do/programu flaga1 flaga2 [klucz1=A,klucz2=B]");` Czy istnieje lepsza metoda na osiągnięcie tego? Ktoś zasugerował mi zapisanie ich do pliku txt i przekazanie do niego ścieżki jako argumentu, `exec("/ścieżka/do/ścieżka_programu_do_pliku_txt);` ale nie jestem podekscytowany tą metodą.


title: Dlaczego listy wad są związane z programowaniem funkcjonalnym?

text: Zauważyłem, że większość języków funkcjonalnych wykorzystuje listę pojedynczo powiązaną (lista „przeciw”) jako najbardziej podstawowe typy list. Przykłady obejmują CLisp, Haskell i F#. Różni się to od języków głównego nurtu, gdzie typami list natywnych są tablice. Dlaczego? W przypadku CLisp (wpisywanego dynamicznie) dochodzę do wniosku, że wady są na tyle ogólne, że mogą być również podstawą list, drzew itp. To może być mały powód. Jednak w przypadku języków pisanych statycznie nie mogę znaleźć dobrego rozumowania, mogę nawet znaleźć kontrargumenty: * Styl funkcjonalny zachęca do niezmienności, więc łatwość wstawiania połączonej listy jest mniej korzystna, * Styl funkcjonalny zachęca do niezmienności, więc również udostępnianie danych; tablica jest łatwiejsza do współdzielenia "częściowo" niż lista połączona, * Równie dobrze, a nawet lepiej, można wykonać dopasowywanie wzorców na zwykłej tablicy (można na przykład łatwo złożyć od prawej do lewej), * Ponadto uzyskać losowy dostęp za darmo, * I (praktyczna zaleta) jeśli język jest wpisywany statycznie, możesz zastosować zwykły układ pamięci i uzyskać przyspieszenie z pamięci podręcznej. Dlaczego więc wolisz listy połączone?


title: Czy istnieją metody pierwszej klasy?

text: Dobra, wiem, że funkcje pierwszej klasy są fajne, domknięcia jeszcze lepsze itd. Ale czy jest jakiś język z metodami pierwszej klasy? Moim zdaniem metodę pierwszej klasy widzę jako „obiekt”, który ma zarówno wskaźnik do funkcji, jak i wskaźnik do określonej instancji klasy/obiektu, ale implementacja nie ma znaczenia. Chcę tylko wiedzieć, czy istnieje _jakikolwiek_ język, który ich używa. A jako bonus, jak zostały zaimplementowane?


title: Jak zwinne metodyki można zastosować w typowej firmie „usługowej”?

text: Moja firma jest firmą świadczącą usługi oprogramowania na zamówienie dla klientów zewnętrznych, co oznacza, że nasz typowy projekt to taki, w którym umowa określa już pełny budżet projektu. Nasz typowy projekt zaczyna się od zdefiniowania wymagań (poprawiania wymagań na wysokim poziomie propozycji), następnie kodujemy projekt, testujemy go i wysyłamy. Mamy fazę akceptacji, w której klient testuje oprogramowanie i w tej fazie zwykle możemy wprowadzić drobne zmiany, o które prosi klient, lub pobieramy dodatkowe opłaty za żądania zmian. W niektórych projektach posiadamy wersje pośrednie, dzięki czemu klienci mogą sprawdzić postęp projektu i wyrazić opinię na jego temat. Podsumowując: coś w rodzaju wodospadu... Od pewnego czasu śledziłem ruch „agile” i zawsze widzę, że jest to dobre rozwiązanie dla firmy „produktowej” lub oprogramowania budującego firmę dla klienta wewnętrznego. Ale czy są dobre historie / zalety stosowania zwinnych metod w mojej firmie/projektach? Jakie masz doświadczenia, co o tym myślisz?


Co robią ludzie w firmach konsultingowych IT? Ok, domyślam się, że _konsultują się_, udzielają odpowiedzi na pytania, ale dokładnie na jakie pytania odpowiadają, że jest nawet możliwe, że ludzie zapłacą za nich wystarczająco, aby pokryć wydatki firmy?


title: Czy powinienem używać Dependency Injection czy statycznych fabryk?

text: Projektując system, często spotykam się z problemem posiadania wielu modułów (logowanie, dostęp do bazy danych itp.) używanych przez inne moduły. Pytanie brzmi, w jaki sposób mam przekazać te komponenty innym komponentom. Dwie odpowiedzi wydają się możliwe wstrzyknięcie zależności lub użycie wzorca fabrycznego. Jednak oba wydają się błędne: * Fabryki sprawiają, że testowanie jest uciążliwe i nie pozwalają na łatwą zamianę implementacji. Nie ujawniają również zależności (np. badasz metodę, nieświadomy faktu, że wywołuje ona metodę, która wywołuje metodę, która wywołuje metodę, która używa bazy danych). * Wstrzyknięcie Dependecy znacznie powiększa listy argumentów konstruktorów i rozmazuje niektóre aspekty w całym kodzie. Typowa sytuacja to taka, w której konstruktory więcej niż połowy klas wyglądają tak `(....., LoggingProvider l, DbSessionProvider db, ExceptionFactory d, UserSession sess, Descriptions d)` Oto typowa sytuacja, z którą mam problem: Mam wyjątek klasy, które wykorzystują opisy błędów ładowane z bazy danych, za pomocą zapytania z parametrem ustawienia języka użytkownika, który znajduje się w obiekcie sesji użytkownika. Tak więc, aby utworzyć nowy wyjątek, potrzebuję opisu, który wymaga sesji bazy danych i sesji użytkownika. Jestem więc skazany na przeciąganie wszystkich tych obiektów przez wszystkie moje metody na wypadek, gdybym musiał zgłosić wyjątek. Jak poradzić sobie z takim problemem??


title: Dlaczego używamy wirtualnych i zastępujących słów kluczowych w c#

text: Czy ktoś może mi wyjaśnić, jaki jest sens nadpisywania implementacji klasy bazowej (jeśli nie jest to abstrakcyjne), ponieważ nie jest etycznym posunięciem modyfikowanie cech klasy nadrzędnej zgodnie z życzeniami klas pochodnych. Najlepszym sposobem jest uczynienie klas bazowych abstrakcyjnymi i kontynuowanie łańcucha dziedziczenia. Natomiast podczas projektowania hierarchii klas początkowo gromadzimy lub wydobywamy wszystkie istotne wymagania/cechy, które powinny należeć do klasy bazowej. Dlatego w trakcie projektu nie musimy zmieniać implementacji klasy bazowej. Według mojej wiedzy implementacja klasy bazowej powinna być stała. W związku z tym w tym aspekcie nie ma rzeczywistego użycia słowa kluczowego „override” w c#. Jeśli tak nie jest, wyjaśnij mi przykład.


title: Przyszłość rozwiązania opartego na ServiceStack w kontekście licencjonowania

text: Chcę tylko, aby ktoś wyjaśnił następujące pytania, ponieważ Demis Bellot ogłosił kilka tygodni temu, że ServiceStack wejdzie na rynek. Zapoznaj się z linkiem poniżej. https://plus.google.com/app/basic/stream/z12tfvoackvnx1xzd04cfrirpvybu1nje54 (Pamiętaj, że kiedy mówię ServiceStack lub SS, odnoszę się do wszystkich powiązanych bibliotek SS, takich jak ServiceStack.Text itp.) 1. Jeśli mam rozwiązanie już opracowany przy użyciu ServiceStack dzisiaj, czy będę musiał kupić licencję, gdy SS stanie się komercyjna, nawet jeśli nie uaktualnię plików binarnych SS do wersji komercyjnej? 2. Czy poprzednie wersje SS (przed licencją komercyjną) zawsze będą typu open source i będą korzystać z tej samej licencji co poprzednio? 3. Gdybym rozwidlił SS dzisiaj (przed uzyskaniem komercyjnej licencji) na Github, czy byłoby nielegalne utrzymywanie tego po tym, jak SS stanie się komercyjna? 4. Jeśli odpowiedź na pytanie 2 brzmi tak, to czy nadal będę w stanie rozwidleć poprzednią wersję po tym, jak SS stanie się komercyjna, nie martwiąc się o licencję komercyjną (cały czas utrzymując i udostępniając źródło publiczne)?


title: Czy warto wykonywać wielozadaniowość w środowisku programistycznym?

text: Jeśli zostaniemy przydzieleni do wykonywania wielu prac jednocześnie, czy jest to dobre dla rozwoju dewelopera? Jeśli istnieje projekt rozwojowy i jeśli przydzielono Cię również do pracy nad projektem utrzymaniowym, czy jest to dobre dla wzrostu, czy też hamuje postęp?


title: Zapisywanie krytycznych danych w bazach danych (stron trzecich)

text: Jak zapisać ważne (pod względem prywatności) dane użytkownika, takie jak SSN, numery kart kredytowych i adresy w bazach danych? **Scenariusz:** zapisywane są tylko te dane, które muszą być dostępne. Na przykład numer SSN jest zapisywany, ponieważ aplikacja używa numeru SSN do identyfikacji konkretnego rekordu. lub dane karty kredytowej są zapisywane, aby umożliwić transakcje jednym kliknięciem. Niektóre takie dane można zaszyfrować i zapisać, ale niektóre dane muszą być dostępne w postaci zwykłego tekstu (np. do wyszukiwania pełnotekstowego). Aplikacja korzysta z hostingu stron trzecich. **Pytania:** Jak bezpieczne są takie dane w postaci zwykłego tekstu (lub w inny sposób) na hostach innych firm, takich jak HostGator lub App Engine? Czy zapisujesz takie dane na hostach firm trzecich (i czy ta praktyka jest zalecana)? Czy przechowujesz je w postaci zwykłego tekstu, czy szyfrujesz takie dane? Czy tylko te firmy, które mają zasoby, aby mieć własne serwery, powinny przystąpić do tworzenia takich aplikacji?


title: Jak reprezentować kostkę Rubika w strukturze danych

text: Jeśli próbuję zasymulować kostkę Rubika, jak stworzyłbyś strukturę danych do przechowywania stanu kostki w pamięci, z liczbą X płytek na stronę? Rzeczy do rozważenia: * kostka może mieć dowolny rozmiar * jest to kostka Rubika, więc warstwy można obracać


title: W poszukiwaniu automatycznego ORM z interfejsem REST

text: Mam życzenie, którego do tej pory Google nie było w stanie spełnić. Chcę znaleźć pakiet (najlepiej w PHP, ponieważ znam PHP, ale myślę, że nie jest to trudne wymaganie), który wskazujesz bazę danych, buduje on ORM na podstawie tego, co tam znajdzie, i udostępnia interfejs REST nad sieć. Wszystko, co znalazłem w moich wyszukiwaniach, wymaga sporo kodu — na przykład chce, abyś zbudował dla niego klasy, ale obsłuży routing żądań REST. Albo dobrze radzi sobie z bazą danych i relacją, ale musisz zbudować własne metody dla wszystkich akcji CRUD. To głupie. REST jest dobrze zdefiniowany. Gdybym chciał ponownie wynaleźć koło, całkowicie mógłbym, ale nie chcę. Czy nie ma kogoś, kto zbudował jednorazowy, super prosty pakiet usług internetowych z automatycznym RESTingiem?


title: Czy wstrzykiwanie zależności powinno odbywać się w ctor czy per metoda?

text: Rozważ: public class CtorInjectionExample { public CtorInjectionExample(ISomeRepository SomeRepositoryIn, IOtherRepository OtherRepositoryIn) { this._someRepository = SomeRepositoryIn; this._otherRepository = OtherRepositoryIn; } public void SomeMethod() { //use this._someRepository } public void OtherMethod() { //use this._otherRepository } } przeciwko: public class MethodInjectionExample { public MethodInjectionExample() { } public void SomeMethod(ISomeRepository SomeRepositoryIn) { // use SomeRepositoryIn } public void OtherMethod(IOtherRepository OtherRepositoryIn) { //use OtherRepositoryIn } } Podczas gdy wstrzykiwanie Ctor utrudnia rozszerzenie (każdy kod wywołujący ctor będzie wymagał aktualizacji po dodaniu nowych zależności), a wstrzykiwanie na poziomie metody wydaje się być bardziej zamknięte zależność na poziomie klasy i nie mogę znaleźć żadnych innych argumentów za/przeciw tym podejściom. Czy istnieje ostateczne podejście do wstrzyknięcia? (Uwaga: szukałem informacji na ten temat i starałem się uczynić to pytanie obiektywnym.)


title: Czy coś takiego jak Coderunner jest możliwe na PC?

text: Oddałbym lewą rękę mojego pierworodnego za coś takiego http://krillapps.com/coderunner/ Tak, wiem, wykonanie nieznanego kodu może być niebezpieczne dla twojego zdrowia, ale jestem całkiem w stanie odczytać jakiś kod, zanim ucieknę to


title: Równoczesny rozwój bez centralnego projektowania?

text: Mam zespół programistów, którzy próbują jednocześnie pisać specyfikacje/testy dla różnych (a czasem sąsiadujących) części systemu. Zazwyczaj osoba pisząca specyfikację/test **nie** jest deweloperem, który napisze implementację i sprawi, że specyfikacja/test przejdzie pomyślnie. Oto problem, który mamy: osoba _otrzymująca_ specyfikację/test, dla którego nie została jeszcze napisana implementacja, nie jest wystarczająco zaznajomiona z projektem wielu obiektów systemu, które należy wiedzieć: _Czy rozwiązuję ten problem (specyfikacja/ test) z istniejącym obiektem (obiektami), czy też tworzę (po raz pierwszy) zależności, które pozwolą systemowi na przejście tej specyfikacji/testu?_ Nie wszyscy programiści w projekcie mają wiedzę domenową, aby je wykonać decyzje _dobrze_ , a my zderzamy się tak dalece, jak odmienne projekty i obiekty tworzone we względnej izolacji zaczynają kolidować i duplikować się nawzajem. Jakie jest rozwiązanie tego problemu? Czy to po prostu nieuniknione, że każdy programista w projekcie musi znać (lub być przygotowanym na pytanie) obiekty systemu? Zachęcamy do udzielenia odpowiedzi, które Twoim zdaniem są oczywiste.


title: Aby przejść do scjp 6 (teraz ocp jp 6) lub oca jp 7?

text: Do scjp 6 przygotowuję się od 2 tygodni. Teraz dowiedziałem się o egzaminach OCA JP 7 i OCP JP 7. Czy powinienem zacząć przygotowania do OCA JP 7, czy kontynuować z OCP JP 6 (formalnie scjp 6)? Również obecnie mam na myśli SCJP 6 autorstwa Sierry i Batesa.


title: Ile czasu może zająć pojawienie się ekranu, zanim zostanie uznany za problem z wydajnością?

text: Zajmuję się tworzeniem aplikacji Windows, która ma różne ekrany. Jeden z nich pojawia się w ciągu dziesięciu sekund bez pokrętła lub innego wskazania, że ekran się ładuje. Uważam to za poważny problem z wydajnością, ale wydaje mi się, że jestem jedynym, którego to dotyczy. Czy jestem nadgorliwy? Jaki jest akceptowalny czas oczekiwania na pojawienie się ekranu?


title: Gdzie powinien być przechowywany opis gałęzi w VCS?

text: Jeśli utrzymujesz wiele gałęzi w swoim ulubionym systemie kontroli wersji, ważne jest, aby zrozumieć, która gałąź dla której ma wcięcie. W SVN możesz umieścić _README_ na tym samym poziomie co katalogi trunk/gałęzie/funkcje. Co powiesz na DVCS? Możesz prowadzić _ChangeLog_. Ale przy takim podejściu trudno jest uzyskać zwięzły widok, który jest wykonywany we wszystkich gałęziach (jeśli utrzymujesz różne dzienniki zmian w wydaniach między nimi, mogą się one nieco różnić). W projektach open source informacje o gałęziach zwykle można znaleźć na wiki projektu, więc są przechowywane oddzielnie od VCS. Myślę, że to zła rzecz. Kiedy klonujesz projekt, potrzebujesz również dostępu do wiki.


title: Czy LaTeX ma przyszłość poza CS?

text: _z naciskiem na studentów i kadrę naukową spoza cs_ W "starych dobrych czasach" LaTeX był **to** ; Głównie z dwóch powodów, po pierwsze – dokument był tak lepszej jakości, że nic innego się nie zbliżało, a po drugie – nie było prawie nic innego jako ważnej alternatywy. _Mówię tu o latach 1985-1995._ I z tego powodu większość użytkowników technicznych (lub medycyny, biochemii..., które mają w sobie logiczny sposób myślenia) (ogólnie ludzie w tych zawodach) używali go do swoich dokumentów. Nauka nie była zbyt trudna i dała doskonałe rezultaty. Obecnie jednak „rzeczy się zmieniają”, jak powiedziałby stary Dylan. Na przykład MS Word** jako najpopularniejszy, daje _dość fajny_ wynik, ze znacznie wyższym stosunkiem wzmocnienia/bólu. Dla większości ludzi jest to _wystarczająco_ dobre_. Jeśli ktoś chce stworzyć dokument, dla którego nie ma szablonu LaTeX, profesjonaliści zaczynają obciążać jeszcze bardziej Worda. Tak więc pytanie brzmi - czy myślisz / i dlaczego - argumentuj / LaTeX i spółka. ma przyszłość poza światem cs sciences (których użytkownicy są skłonni do programowania, a zatem zwykle przyjmują strukturę LaTeX w sposób naturalny lub przynajmniej przy znacznie mniejszym wysiłku) biorąc pod uwagę najnowsze trendy? ** wstaw swój ulubiony edytor tekstu; MS Word został wzięty jako przykład p.s. Zainspirowało mnie jeszcze jedno pytanie, które pojawiło się ostatnio, ale także trend, który ostatnio zauważyłem, ale który trwa już od jakiegoś czasu (w ciągu ostatnich kilku lat), że nawet czasopisma techniczne, które kiedyś domagały się artykułów w TeX-ie, teraz zadają dla nich w formacie .doc (lub ...).


title: Dlaczego w przypadku [1,2,3] jest to „(przeciw 1 (przeciw 2 (przeciw 3 zer)))” a nie „(przeciw 3 (przeciw 2 (przeciw 1 zero)))”?

text: Czy jest jakiś szczególny powód, dla którego do tworzenia listy w schemacie używasz (przeciw 1 (przeciw 2 (przeciw 3 zero))) zamiast (przeciw 3 (przeciw 2 (przeciw 1 zero)))? Podczas gdy pierwsza wydaje się bardziej oczywista, ponieważ **czyta** we właściwej kolejności, druga to ta, która faktycznie **redukuje** we właściwej kolejności. Ponadto bardziej naturalne wydaje się konstruowanie listy zaczynającej się od zera i dodawanie do niej elementów, a nie odwrotnie. Odkryłem również, że ta ostatnia ma właściwości, takie jak bycie bardzo przyjaznym dla curry: `(cons 1)` ładnie staje się `funkcją, która dodaje 1 do listy`.


title: Co definiuje dobrego programistę z perspektywy pracodawcy?

text: Załóżmy, że firma, w której zaczyna deweloper, to spółdzielnia, zespół 10-15 członków. Firma podąża za SDLC. * **Jak myślisz, jakich cech pracodawca oczekuje od programisty?** * **Możesz wyjaśnić, dlaczego jakość jest ważna z punktu widzenia pracodawcy.** Oto kilka przykładów: * Analityczne / Logiczne / Krytyczne / Pytania / Metodyczne * Gracz zespołowy * Odpowiedzialny * Społeczny * Rozwiązujący problemy


title: Jakie funkcje chciałbyś mieć w PHP?

text: Ponieważ teraz jest sezon świąteczny i wszyscy składają życzenia, zastanawiam się - jakie funkcje językowe chciałbyś, aby PHP dodało? Interesują mnie praktyczne sugestie/życzenia dotyczące języka. Przez praktyczne mam na myśli: 1. Coś, co można praktycznie zrobić (nie: „Chciałbym, żeby PHP odgadło, co oznacza mój kod i naprawiło dla mnie błędy” lub „Chciałbym, żeby jakikolwiek kod wykonał się w czasie krótszym niż 5 ms”) 2. Coś, co nie t wymagają zmiany PHP na inny język (nie: „Chciałbym, aby upuścił znaki $ i używał spacji zamiast nawiasów klamrowych” lub „Chciałbym, aby PHP było skompilowane, statycznie wpisane i miało # w nazwie”) 3. Coś, co nie wymagają złamania całego istniejącego kodu (nie: „Zmieńmy nazwy 500 funkcji i zmieńmy dla nich kolejność parametrów”) 4. Coś, co _zmienia_ język lub jakiś interesujący jego aspekt (nie: „Chciałbym, aby było rozszerzenie do obsługi protokołu XYZ " lub "Chciałbym, żeby błąd #12345 został w końcu naprawiony") 5. Coś, co jest czymś więcej niż tyradą (nie: "Chciałbym, żeby PHP nie było tak źle") Czy ktoś ma jakieś dobre życzenia? Mod edit: Stanislav Malyshev jest głównym programistą PHP.


title: Projektowanie architektury z maperami MyBatis

text: Tworzę serwis internetowy do udostępniania danych. Używam Spring MVC do obsługi wniosków o odpoczynek i MyBatis do dostępu do danych. Aplikacja powinna być zaprojektowana w taki sposób, aby można było łatwo zmienić implementację dostępu do danych (na przykład hibernację lub coś innego) i aby była szybka (dlatego staram się unikać niepotrzebnego komplikowania projektowania). Teraz moje pytanie dotyczy ogólnego projektowania warstw. Normalnie używałbym interfejsu DAO, a następnie różnych implementacji dla różnych strategii dostępu do danych, ale MyBatis używa interfejsów do dostępu do danych. Mogę więc wymyślić 2 możliwe modele, ale nie jestem pewien, który z nich jest lepszy lub czy jest jakiś inny fajny sposób: 1. Warstwa kontrolera - wykorzystuje interfejsy warstwy usług * usługi są wtedy implementowane dla każdej strategii dostępu do danych - na przykład dla mybatis : * implementacja usługi wykorzystuje klasy Mapper do uzyskiwania dostępu do danych i robi z nimi wszystko, co jest konieczne, a następnie wysyła je do warstwy kontrolera 2. Warstwa kontrolera - wykorzystuje warstwę usługi - warstwa usługi wykorzystuje interfejsy DAO * DAO są następnie implementowane dla każdej strategii dostępu do danych - na przykład dla mybatis: * klasa DAO używa interfejsu mappera do dostępu do danych i wysyła je do warstwy usług, następnie do warstwy usług robi z nimi co trzeba i wysyła je do warstwy kontrolera Preferuję pierwszą strategię, ponieważ wydaje się mniej skomplikowana , ale wtedy musiałbym ponownie napisać cały kod serwisowy dla innego dostępu do danych. Co myślisz? Dziękuję


title: Wypożyczanie użytkownikom plików epub na ograniczony czas

text: Szukam komponentów do zbudowania biblioteki cyfrowej, która wypożycza ludziom epub (ebooki) na około tydzień. To jak cyfrowa wersja starej biblioteki publicznej offline. Teraz znalazłem kilka rozwiązań do strumieniowego przesyłania plików flash (pdf). Ale to wymagałoby aktywnego łącza internetowego. I podobnie jak biblioteka publiczna, możesz zabrać swoje książki na plażę lub basen na wakacje za granicą, gdzie nie masz połączenia. Więc streaming nie jest opcją. Inną metodą ograniczania plików, którą znalazłem, był DRM, ale wymagałoby to naprawdę drogiej licencji Adobe Content Server 4, która nie jest odpowiednia dla mojego małego projektu hobbystycznego. Wygląda jednak na to, że adobe content server i Adobe Digital Editions to obecnie jedyna opcja. A może istnieją alternatywy typu open source?


title: Tworzenie formularzy wejściowych ASP.NET z XSD?

text: Mam kilka typów dokumentów XML. Format (tj. elementy w) każdego typu dokumentu jest zdefiniowany w XSD. Czy istnieje wygodny sposób tworzenia elementów HTML (lub kontrolek ASP.NET) w formularzu ASP.NET, aby wyświetlić/edytować elementy w (zawartość) dokumentu XML, biorąc pod uwagę dokument XML i/lub definicję XSD dokumentu jako Wejście? W XML/XSD: * Elementy złożone (tj. nadrzędne) mogą zawierać podelementy * Proste elementy to typu 'string', 'integer', 'list of string values' itp.: które powinny być mapowane na odpowiednie elementy wejściowe HTML * Elementy są dokumentowane (etykietowane) za pomocą `<xs:annotation>` w XSD (byłyby to odpowiednie elementy HTML `<label>` dla odpowiednich elementów `<input>`). * Każdy element jest wymagany, niewymagany i/lub może być ich kilka, określonych za pomocą `minOccurs` i `maxOccurs` w XSD Oprócz generowania formularza ASP.NET, gdy użytkownik publikuje wypełniony formularz, oprogramowanie powinno odczytać zwrócone dane i spakować je do dokumentu XML. Jak to zrobić? Potrafię napisać oprogramowanie do analizowania XSD i samodzielnego generowania formularzy, ale wydaje się, że jest to dużo kodu do napisania we własnym zakresie i utrzymania.


title: Czy istnieje właściwy sposób na utworzenie formatu pliku?

text: Tworzę zastrzeżony format pliku dla aplikacji, którą napisałem w C# .NET, aby przechowywać informacje o zapisaniu i być może w dół zasobów projektu. Czy istnieje standard, jak to zrobić w jakikolwiek sposób? Chciałem po prostu „serializować” moje obiekty do pliku binarnego i utworzyć nagłówek, który powiedziałby mi, jak przeanalizować plik. Czy to złe podejście?


title: Przyciski Zastosuj a OK

text: Często podczas konfigurowania ustawień aplikacje mają zarówno przycisk „Zastosuj”, jak i „OK”. Czy przycisk „OK” powinien zawsze wykonywać „Zastosuj” przed zamknięciem okna? Czy są w tym wady i zalety?


title: Dlaczego potrzebuję testów jednostkowych do testowania metod repozytorium?

text: Muszę trochę pobawić się w diabła, który opowiada się za tym pytaniem, ponieważ nie mogę go dobrze bronić z powodu braku doświadczenia. Oto umowa, otrzymuję _koncepcyjnie_ różnice między testowaniem jednostkowym a testowaniem integracyjnym. Koncentrując się konkretnie na metodach trwałości i repozytorium, test jednostkowy wykorzystałby próbkę, prawdopodobnie za pośrednictwem frameworka, takiego jak Moq, aby potwierdzić, że poszukiwane zamówienie zostało zwrócone zgodnie z oczekiwaniami. Załóżmy, że zbudowałem następujący test jednostkowy: [TestMethod] public void GetOrderByIDTest() { //Używa Moq jako zależności w celu uzyskania zamówienia, aby upewnić się, że //ID, które ustawiłem w „Rozmieść” jest takie samo, jak zwrócone do testu w „Assertion ' } Więc jeśli ustawię `OrderIdExpected = 5` a mój obiekt pozorny zwróci `5` jako identyfikator, mój test przejdzie. Rozumiem. Przetestowałem kod, aby upewnić się, że to, co wykonuje mój kod, zwraca oczekiwany obiekt i identyfikator, a nie coś innego. Argument, który otrzymam, jest następujący: > „Dlaczego po prostu nie pominąć testów jednostkowych i wykonać testów integracyjnych? Testowanie > procedury składowanej bazy danych **i** Twojego kodu razem jest ważne. testy jednostkowe i testy integracyjne, gdy > ostatecznie chcę wiedzieć, czy wywołania bazy danych i kod działają.Wiem > testy trwają dłużej, ale mimo to muszą być uruchamiane i testowane, więc > wydaje mi się, że nie ma sensu mieć obu.Po prostu test z tym, co ma znaczenie." Mógłbym tego obronić definicją z podręcznika, taką jak: „Cóż, to jest _test integracyjny_ i musimy testować kod osobno jako test jednostkowy i bla, bla, bla...” Jest to przypadek, w którym purystyczne wyjaśnienie praktyk a rzeczywistość traci. Wpadam na to czasami i jeśli nie mogę obronić rozumowania stojącego za kodem testów jednostkowych, który ostatecznie opiera się na zewnętrznych zależnościach, to nie mogę tego uzasadnić. Jakakolwiek pomoc w tej kwestii jest bardzo doceniana, dzięki!


title: Narzędzia do łączenia konfliktów w wierszu poleceń

text: Czasem wolę pracować w terminalu. Używam git i czasami mam konflikty scalania. Czy są jakieś narzędzia do rozwiązywania konfliktów scalania, które działają tylko w środowisku wiersza polecenia?


title: Dynamiczne rysowanie kształtów na obrazie za pomocą przeglądarki internetowej

text: Mamy scenariusz, w którym tworzymy plany pięter lokalizacji, kiedy odwiedzamy. Plan piętra jest ostatecznie wyświetlany w Internecie. Doszliśmy do punktu, w którym chcemy pokazać plany pięter, ale mamy klucz z różnymi elementami, kiedy klikniemy element na kluczu, obraz powinien podświetlić wszystkie obszary planu piętra, które mają ten konkretny element. Myślę, że szukamy jakiejś otwartej standardowej biblioteki javascript do obsługi SVG (musi działać przed IE9, więc czysty SVG nie będzie go ciąć), a plany pięter muszą być możliwe do utworzenia za pomocą aplikacji .net do wdrożenia w Internecie. Szczerze mówiąc, wolę trzymać się z daleka od flasha, jeśli to w ogóle możliwe. Poniżej kilka koncepcyjnych obrazów tego, co staramy się osiągnąć. ![tu wpisz opis obrazu](http://i.stack.imgur.com/gUBpc.png) ![tu wpisz opis obrazu](http://i.stack.imgur.com/pGbCh.png) ![ wpisz tutaj opis obrazu](http://i.stack.imgur.com/ectLN.png)


title: DB w pamięci do wykonywania przecięć na ustawionych wycinkach

text: Mam konkretną potrzebę programowania, w której muszę efektywnie przechowywać duże posortowane zestawy w pamięci, wysyłać zapytania o zakresy i przecinać je z innymi zestawami, które są również odpytywane o zakresy. Patrzę na Redis, ale nie widzę polecenia wycinania zakresu. MongoDB może używać tylko 1 indeksu, więc musi wykonywać skanowanie na poziomie wiersza, podczas gdy ja chcę przetwarzać przy użyciu przecinających się kolumn. Patrzę również na Counchbase, ale nie mogę łatwo określić na podstawie dokumentacji, czy nadaje się do tego. Wiem, że używa Memcached, który AFAIK nie nadaje się do tego zastosowania. Czy ktoś mógłby podzielić się potencjalnymi rozwiązaniami tego konkretnego problemu? **EDYTUJ** Na przykład muszę wykonać następujące czynności: Pobierz identyfikatory wszystkich samochodów, których cena wynosi od 2000 do 3000, i przekreśl wszystkie samochody o pojemności silnika od 3000 do 4000.


title: var args konstruktory/metody vs listy

text: W długiej debacie na temat używania tablic i list w publicznym API klas Javy, w większości sytuacji wolę listy. Jednak uważam również za wygodne użycie argumentów var w wielu konstruktorach i metodach, które wymagają zadeklarowania argumentu metody (ostatniej) jako tablicy (domyślnie dodając "..." przed nazwą parametru). Ponieważ w wielu z tych metod chcę zapewnić programiście możliwość _albo_ jawnego wymienienia argumentów (z var args) lub użycia predefiniowanej kolekcji podczas wywoływania metody, często kończę definiowanie konstruktora lub metody z var argumentami i przeciążoną wersję, która akceptuje listę zamiast tablicy var args. Na przykład: public void mojaMetoda(X ...items) { mojaMetoda(Arrays.asList(items)); } private void myMethod(List<X> items) { ... } Wiem, że teoretycznie nie muszę przeciążać metody zastępującej tablicę var args listą, jeśli chcę, aby programista wysłał kolekcję obiektów. Mógłby po prostu wysłać tablicę. Powodem, dla którego często to robię, jest to, że większość (jeśli nie wszystkie) metod w moim API używa list zamiast tablic i jest trochę dziwne, że w przypadku jednej lub dwóch metod wymagających zbierania obiektów programista musi pracować z tablicami (w przypadkach, gdy argumenty var nie są wygodne). Dlatego udostępniam przeładowaną wersję pracującą z listą dla spójności. Jednakże, ponieważ jest to powracający problem, mam nieprzyjemne uczucie zbyt częstego pisania standardowego kodu. Chciałbym otrzymać informację zwrotną, jeśli moja motywacja do utrzymywania spójności interfejsu (akceptowanie tablic lub list var, ale nie zmuszanie programisty do pracy z tablicami, jeśli nie jest to naprawdę wymagane) jest na tyle słuszna, aby nadal pisać przeciążone wersje przy użyciu list dla większości moich metod wymaganie argumentów var. Chciałbym podkreślić, że wiem, że dla niektórych metod tablice mogą być wygodniejsze niż listy. Moje pytanie dotyczy sytuacji, w których jedyną motywacją do deklarowania ostatniego argumentu metody jako tablicy jest to, że w pewnych scenariuszach użycie argumentów var może być wygodne. **AKTUALIZACJA** Dziękujemy za opinię. Moje wnioski w tej chwili są następujące: * Zredukuj użycie var args tak bardzo, jak to możliwe. * Kontynuuj dodawanie przeciążonej wersji metody z var args, na przykład argument tablicy jest zastępowany listą (lub `Iterable`, jak zauważył @Kevin), w przypadkach, gdy może być przydatne posiadanie możliwości wywołania metoda z var args lub z kolekcją. * Przestań używać Javy tak szybko, jak to możliwe :) (Już to znałem)


Czy zajęcia z przechowywania nie powinny być nauczane na początku klasy C lub książki? Zauważyłem, że wiele książek, nawet tych lepszych, zakrywa to na końcu książki, a niektóre książki dodają to po prostu jako dodatek. Nauczyłbym tego razem ze zmiennymi. To jest tak fundamentalne i myślę, że niestety wielu nie zajdzie tak daleko w książce. Teraz, gdy auto ma inne znaczenie (a nie jest opcjonalne), może zmylić ludzi, którzy nie zdawali sobie sprawy, że zawsze tam było. na przykład: Programowanie w C: nowoczesne podejście 18.2 Klasy pamięci 401 Właściwości zmiennych 401 Automatyczna klasa pamięci 402 Statyczna klasa pamięci 403 Zewnętrzna klasa pamięci 404 Rejestr klasy pamięci 405 Klasa pamięci funkcji 406 Podsumowanie 407 @DeadMG, I obawiam się, że nie zadałem właściwie pytania. Każdy zawsze używa klas pamięci. Każda zmienna w programie C ma klasę pamięci. Chodzi o to, że niektóre słowa kluczowe stały się opcjonalne, ponieważ na przykład `int i; = auto int i;` Powodem, dla którego pytam jest to, że widziałem kod tak zły, w którym zmienne są deklarowane na górze programu, aby były dostępne dla funkcji i nie tracą swojej wartości, gdy wychodzi poza zakres, ale tylko jeden funkcja tego potrzebowała. Wtedy domyślną klasą przechowywania zmiennej jest "extern" int i; ale mogą nie wiedzieć, ponieważ kompilator zakłada extern. To, co powinni byli zrobić, to zadeklarować go w funkcji, która go potrzebowała, jako static, static int varToKeepValue; w ten sposób osiągniesz pożądany cel, jakim jest zachowanie wartości zmiennej, gdy funkcja wyjdzie poza zakres podczas wykonywania programu, jednocześnie czyniąc kod bardziej czytelnym. btw: Interesuje mnie to, proszę napisz do mnie swoje przemyślenia, jeśli to pytanie zostanie zamknięte. Inna uwaga: masz bardzo dziwne podejście... utrzymywać uczniów w ignorancji? Myślę, że dlatego, że nie mają tych informacji, język nie jest używany właściwie. To nie tak, że nie pozwalasz dzieciom biegać z nożami. Moje podejście polega na nauce języka od środka i na zewnątrz, który pozwoli ci go właściwie używać.


title: Jakich możliwości Adobe Flash nie ma w interfejsie WinRT API?

text: Od marca 2013 r. firma Microsoft zezwala na domyślne odtwarzanie zawartości Adobe Flash w swoim wciągającym programie Internet Explorer 10: http://redmondmag.com/articles/2013/03/11/new-ie-10-flash-policy.aspx o Silverlight, Microsoft mówi > Silverlight nie będzie obsługiwany w immersyjnym Internet Explorerze 10, ponieważ > te możliwości są zastąpione przez nowy interfejs WinRT API. Czy to oznacza, że w interfejsie WinRT API nie ma możliwości Adobe Flash, które zmusiły Microsoft do zezwolenia na Flash? Jakie są te możliwości?


title: Jak Github oblicza procent języka w repozytorium?

text: Mam repozytorium z kodem Ruby i PHP. Github mówi, że moje repozytorium to 74,8% PHP i 25,2% Ruby. Nie rozumiem, jak to może być. Kiedy porównuję 2 języki w moim projekcie: # Policz ile plików: # Ruby ls | grep ".*\.rb" | wc -l # zwraca 10 #PHP ls | grep ".*\.php" | wc -l # zwraca 1 # Policz ile linii, słów, znaków: # Ruby cat *.rb | wc # zwraca 229, 812, 5303 # PHP cat *.php | wc # zwraca 102, 473, 2760 Ruby zawsze wydaje się mieć więcej. Czy czegoś mi brakuje?


title: Zmienne środowiskowe i Visual Studio 2012

text: Mam problem z Visual Studio 2012 i Zmiennymi Środowiskowymi pod Windows 7. Dodałem zmienną `{LIBS}` o wartości `C:/libs/`. W `C:/libs/` znajdują się foldery zawierające biblioteki C++. Na razie w porządku. Dodałem ścieżki do ustawień projektu (linker itp.), takich jak `{$LIBS}boost`, aby uwzględnić biblioteki boost. Spodziewałem się, że będę mógł teraz użyć czegoś takiego #include "boost/someboostfile", ale to nie działa, muszę użyć ścieżki bezwzględnej #include "../../boost/someboostfile ale to właśnie ja nie chcę robić. Czy jest coś, co robię źle?


title: Jak uniknąć binarnej zależności od zmiany rozmiaru

text: klasa A { public: int i; }; // A.h i zdefiniowane w projekcie libA.vcxproj (libA.dll) Używam klasy A w wielu miejscach w różnych projektach jak poniżej. Około 100 projektów. include "A.h" class UseA { public: A *a; UżyjA(){ a = nowy A(); } ~UseA() {delete a;} } Mój problem polega na tym, że za każdym razem, gdy dodam zmienną składową do klasy A, będę musiał zbudować wszystkie projekty (~100), ponieważ zmienił się rozmiar klasy A, a zbudowanie 100 projektu to czas trawiący. Jak uniknąć budowania tylu projektów przy zmianie wielkości jednej klasy? Mam też wiele klas, takich jak klasa A, zdefiniowanych w libA.vcxproj.


title: Kiedy należy używać koloru w aplikacji wiersza polecenia?

text: Obecnie mam aplikację wiersza poleceń w C o nazwie `btcwatch`. Posiada opcję `-C`, którą może otrzymać jako argument porównujący obecną cenę Bitcoina z ceną zapisaną wcześniej za pomocą `-S`. Przykładowe wyjście z tą opcją to: $ btcwatch -vC # -v = verbose buy: UP 32.000000 USD (100.000000 -> 132.000000) sell: UP 16.000000 USD (100.000000 -> 116.000000) Dylemat polega na tym, czy użyć koloru dla ` Ciąg UP` lub `DOWN` (odpowiednio zielony i czerwony). Większość znanych mi aplikacji wiersza poleceń (oprócz git) trzyma się z dala od koloru w swoich danych wyjściowych. W moim pragnieniu, aby `btcwatch` wyglądał i był dość „standardowy” (użycie `getopt`, Makefiles, itp.), nie jestem pewien, czy w tej sytuacji kolor będzie wyglądał nie na miejscu.


title: czy możliwe jest użycie shopify tylko dla komponentu koszyka na zakupy, czy powinienem po prostu rzucić swój własny?

text: Pracuję nad stroną e-commerce i jestem programistą rails; ze względu na charakter elementów zarządzam nimi we własnej bazie danych, więc naprawdę szukam czegoś, co dotyczy tylko aspektu koszyka (są takie rzeczy jak ciężkie zagnieżdżanie i integracja z innymi elementami aplikacji, które byłyby bardzo trudne do odtworzenia). Wygląda na to, że mogę iść na dwa sposoby. (1) Jednym ze sposobów jest zwijanie własnego koszyka na zakupy i używanie czegoś takiego jak Stripe (który oceniałem i działam z nim dobrze). To dosłownie może być tak proste, jak utworzenie tabeli zamówień i tabeli pozycji oraz wielu interfejsów. (2) Lub mogę spróbować zintegrować się z koszykiem na zakupy innej firmy, takim jak Shopify. Nie jestem do końca pewien, czy mogę po prostu skorzystać z koszyka na zakupy Shopify lub czy jest to jakaś korzyść. Jeśli większość mojej aplikacji została już wykonana, czy shopify (lub inna aplikacja do obsługi koszyka) przyniesie jakiekolwiek znaczące korzyści (oczywiście może)? A może integracja byłaby zbyt wielkim bólem głowy? Na przykład, gdy użytkownik „dodaje zamówienie” w mojej witrynie, czy mogę publikować w celu dokonania zakupów i powiązać go z tym użytkownikiem? dzięki


title: Karta odpowiedzialności programistów

text: Tak więc wszyscy słyszeliśmy o Karcie Praw Programistów, a XP ma podobną koncepcję. W dzisiejszych czasach powszechnym narzekaniem jest to, że słyszymy dużo o prawach ludzi, ale nie tyle o ich obowiązkach, więc co powinno znaleźć się na liście odpowiedzialności programistów. To są rzeczy, które powinni robić, co może być dla nich niesmaczne, ale które oddzielają programistów działających profesjonalnie i odpowiedzialnie od tych, którzy tego nie robią. Interesują mnie przede wszystkim te niesmaczne i takie, które zazwyczaj się nie zdarzają. Są to te, które programiści mają tendencję do unikania i unikania, a nie te, które 90% programistów faktycznie chce robić (takie jak zawsze refaktoryzacja i używanie kontroli źródła). Więc **co powinno być na liście odpowiedzialności programistów?**


title: Czy rzeczywiście piszesz „czysty kod”?

text: Widziałem programistów, którzy ciągle poprawiali swój kod nie tylko po to, by „dobrze działał”, ale także po to, by „dobrze wyglądał”. IMO, „czysty kod” jest w rzeczywistości komplementem wskazującym, że twój kod jest elegancki, doskonale zrozumiały i łatwy w utrzymaniu. A różnica pojawia się, gdy musisz wybrać między estetycznie atrakcyjnym kodem a kodem, który jest stresujący. Więc ilu z was faktycznie pisze „czysty kod”? Czy to dobra praktyka? Jakie są inne zalety lub wady tego?


title: Znajdź wszystkie przecięcia segmentów linii

text: Mam kolekcję segmentów linii reprezentowanych przez tablicę. Np.: [3,7,13,6,9] to 4 segmenty linii: [(3,7)(7,13)] , [(7,13)(13,6)] , [(13,6) (6,9)] , ([6,9)(9,3)] ![tu wpisz opis obrazu](http://i.stack.imgur.com/vv0FK.png) Chcę znaleźć wszystkie linie przecięcia segmentów (nie licząc punktu wspólnego), czy jest lepszy sposób na zrobienie tego niż brutalna siła (sprawdzenie wszystkich opcji za pomocą O(N^2))?


title: Jaki jest najlepszy sposób na poprowadzenie 4-5-osobowego zespołu do projektu letniego?

text: Jesteśmy grupą (4-5) studentów trzeciego roku college'u, którzy mają rozpocząć nasze 3-miesięczne letnie wakacje i chcielibyśmy rozpocząć projekt. Chcemy zrobić grę z XNA, nie musi być duża czy coś, ale mamy 3 miesiące, więc nie jestem pewien, jak duża może być. Planuję być „liderem zespołu”, ponieważ mam największe doświadczenie z C#/XNA i chciałbym się nauczyć, jak być liderem zespołu, to może być dobry trening. Więc jak mam z tym postępować? Jaki jest najlepszy sposób na kierowanie małym zespołem, jeśli nigdy wcześniej tego nie robiłeś?


title: Co to jest pseudokod?

text: Widziałem ostatnio wiele wzmianek o pseudokodzie, na tej stronie i innych. Ale nie rozumiem: * **Co to jest pseudokod?** Na przykład poniższy artykuł w Wikipedii mówi _„Wykorzystuje konwencje strukturalne języka programowania, ale jest przeznaczony do czytania przez ludzi, a nie do czytania maszynowego”._ Czy to oznacza, że **_nie_** faktycznie jest używany do tworzenia programów? * **Dlaczego jest używany?** * **Jak jest używany?** * **Czy jest uważany za język programowania?** Zobacz powyższy cytat z Wikipedii. * **Czy to jest powszechnie znane/używane?** * **Coś jeszcze...** Szczerze nie wiem od czego zacząć. Wyszukałem to w Google i widziałem artykuł na Wikipedii na ten temat, ale nadal nie do końca rozumiem, co to jest.


title: Projekt modelu obiektowego: kolekcje na zajęciach

text: Rozważ Train.Passengers, jakiego typu użyjesz dla Pasażerów, gdzie pasażerowie nie powinni być dodawani ani usuwani przez zużywający kod? Używam .NET Framework, więc ta dyskusja byłaby odpowiednia dla platformy .NET, ale może dotyczyć wielu nowoczesnych języków/frameworków. W .NET Framework, `List<Person>` nie powinien być publicznie ujawniany. Istnieją `Collection<Person>` i `ICollection<Person>` i wskazówką, z którą się zgadzam, jest zwrócenie najbliższego konkretnego typu w dół drzewa dziedziczenia, więc będzie to `Collection<Person>` ponieważ jest już `ICollection<osoba>`. Ale kolekcja ma semantykę odczytu/zapisu, więc prawdopodobnie powinna to być `ReadOnlyCollection<Person>`, ale prawdopodobnie zdrowy rozsądek nie zmienia zawartości kolekcji, o której nie masz gruntownej wiedzy, więc czy jest to konieczne? A to wymaga dodatkowej pracy wewnętrznie i może być uciążliwe przy (de)serializacji. Na skrajnych końcach mógłbym po prostu zwrócić `Person[]` (ponieważ LINQ zapewnia teraz wiele korzyści, które wcześniej byłyby zapewniane przez bardziej określoną kolekcję) lub nawet zbudować silnie typowaną PersonCollection lub ReadOnlyPersonCollection! Co robisz?


title: Właśnie zacząłem pracę w Scrum i wydaje mi się, że czegoś brakuje. Jestem nowy w Scrum

text: Kod to kompletny bałagan połączenia klasycznego ASP/ASP.NET. Scrum polega na tym, że załatamy wielki bałagan lub dodamy do niego dodatki. Wszyscy jesteśmy zbyt zajęci robieniem tego, aby rozpocząć przepisywanie, więc się zastanawiam.. Gdzie jest ta część Scrum, w której programiści mogą mieć moc, by powiedzieć, że wystarczy i zażądać, aby dano im czas na rozpoczęcie wielkiego przepisywania? Wydaje się, że jesteśmy w niekończącej się pętli łatania starego kodu za pomocą „Stories”. Więc wszystko jest prowadzone przez nietechnicznych ludzi, którzy wydają się nie mieć ochoty naciskać na przepisanie, ponieważ nie rozumieją, jak zła jest baza kodu. Więc kto jest odpowiedzialny za wprowadzenie tej wielkiej zmiany? Deweloperzy? Mistrz Scrum? Obecną strategią jest po prostu znalezienie czasu i zrobienie tego samemu, bez zaangażowanych przełożonych, ponieważ to oni są głównie winni za obecny bałagan, w którym się znajdujemy. tutaj `->`.


title: Jak przekazać zmienną flagi debugowania?

text: Muszę wygenerować dane wyjściowe debugowania w aplikacji Java, której nie można debugować, umieszczając punkty przerwania i ślady. Do tej pory umieszczałem flagę debugowania jako zmienną statyczną w jednej z klas, a następnie uzyskiwałem do niej dostęp ze wszystkich innych klas. Ale podejrzewam, że później spowoduje to ogromne problemy. Jak najlepiej to zrobić?


title: Projekty uniwersyteckie i wyjątkowość

text: Jestem w trakcie poszukiwania odpowiedniego projektu na ostatni rok studiów. Jak ważne jest, aby projekt był wyjątkowy? Naprawdę chcę zrobić projekt z Kinect iz niecierpliwością czekam na oficjalne SDK. Na razie walczę o pomysł. Jednak zajrzałem na kinecthacks.com, aby zobaczyć, nad czym pracowali inni ludzie, i kilka z tych pomysłów mnie interesuje. Czy uważasz, że podjęcie jednego z tych pomysłów i wdrożenie się jest etyczne? Oczywiście można by spróbować zaimplementować dodatkową funkcjonalność do tego, co już jest? Dziękuję.


title: Czy dobrze jest publikować oprogramowanie i technologie programistyczne?

text: Zrobiłem kilka badań na temat deweloperów w mojej okolicy. Interesowały mnie głównie ich produkty i narzędzia, jakich używali do ich budowy. Chcę upublicznić te informacje, ale zastanawiałem się, czy to dobry pomysł. Mam na myśli to, że jeśli programista używał Apache, MySQL i PHP, a ja upubliczniłem to, czy ułatwia to ludziom zhakowanie ich produktu?


title: Różne wywołania zwrotne dla błędu lub błędu jako pierwszy argument?

text: My (i pokój rozmów JS SO) rozmawialiśmy kilka dni temu z @rlemonem na temat jego biblioteki Little-XHR na temat obsługi błędów. Zasadniczo chcieliśmy zdecydować, który wzorzec obsługi błędów powinien zostać użyty: xhr.get({ // Niektóre parametry, a potem sukces: function(data) {}, failure: function(data) {} }) Lub: xhr.get ({ // Niektóre parametry, a następnie wywołanie zwrotne: function(err, data) {} }) Jeden jest bardziej podobny do jQuery, a drugi do węzła. Niektórzy twierdzą, że pierwszy wzorzec skłania do myślenia o radzeniu sobie z błędem. Myślę, że jest odwrotnie, ponieważ możesz zapomnieć o drugiej funkcji zwrotnej, podczas gdy argument jest zawsze obecny w drugim wzorcu. Jakieś opinie/zalety/wady dotyczące obu tych wzorców?


title: Jak zmienić sposób automatycznego formatowania kodu intellij?

text: IntelliJ wykonuje dziwne formatowanie za pomocą kodu JavaScript i próbuję dowiedzieć się, jak sprawić, by przestał formatować w ten sposób. Za każdym razem, gdy łączę ze sobą funkcje jQuery, nadmiernie wcina się automatycznie utworzony kod, taki jak ten: $('#something').focus(function() { /* Zrób coś */ }).blur(function() { /* tutaj kończy się kursor i nawiasy klamrowe */ }) Chcę, żeby wyglądało to tak: $('#coś').focus(function() { /* Zrób coś */ }).blur(function( ) { /* kursor i nawiasy zamykające wcięte normalnie */ }); Jak to zmienić?


title: Jak zaimplementować stan sesji w backendowej aplikacji webowej?

text: W jaki sposób zaimplementowany jest stan sesji w przypadku korzystania z podejścia niezorientowanego na usługi/interakcji w architekturze systemu oddzielonego od MVC? Myślałem o zbudowaniu frontendu aplikacji przy użyciu MVC (PHP/Ruby itp.) i wysyłaniu komunikatów do zaplecza wiersza poleceń, który jest rzeczywistą aplikacją. Ponieważ chcę, aby aplikacja offline miała całkowitą kontrolę nad funkcjonalnością, wyobrażam sobie, że najlepiej działa system zarządzania sesjami offline, który przy logowaniu wydaje identyfikator, który jest następnie wysyłany do aplikacji przy każdym żądaniu. Identyfikator byłby przechowywany w pliku cookie po stronie klienta, tak jak zwykły plik cookie sesji. Ponieważ frontend i tak działa poprzez żądania HTTP, nie ma sensu robić tego w inny sposób. Czy są jakieś lepsze alternatywy dla tej metody, które powinienem rozważyć? Wolałbym, aby rzeczywisty system był całkowicie oddzielony od interfejsu internetowego, a także planuję zaimplementować interfejs użytkownika dla komputerów stacjonarnych, więc wzorzec Interactor wydaje mi się najlepszym sposobem na osiągnięcie tego. To, czego wyraźnie staram się uniknąć, to „zrób wszystko w naszym frameworku MVC! (i utknij na zawsze)”, które wydaje się być popularne w dzisiejszych czasach.


title: Algorytm optymalizacji grupowania

text: Chciałbym wiedzieć, czy istnieje znany algorytm lub najlepszy praktyczny sposób na wykonanie następujących czynności: Mam kolekcję z podkolekcji, na przykład: R1 R2 R3 -- -- -- M M M N N L L A Potrzebuję algorytmu, aby uzyskać następujące wynik: R1, R2: M N L R2: A R3: M To jest -nie- to, czego chcę, ma więcej powtarzających się wartości dla R niż powyższe: R1, R2, R3: M R1, R2: N L R2: A Muszę grupuj w taki sposób, aby uzyskać najbardziej zoptymalizowane grupy R. Im najmniej grup R, tym lepiej, aby uzyskać największe podkolekcje. Inny przykład (z najbardziej oczywistym wynikiem): R1 R2 R3 -- -- -- M A V V B L L C Powinno dać wynik: R1, R2: M V L R3: A B C Muszę to zrobić w LINQ/C#. Jakieś rozwiązania? Porady? Spinki do mankietów?


title: Dlaczego nie możemy użyć unikalnego identyfikatora jako kombinacji adresu e-mail i hasła?

text: Aby zapobiec konfliktom e-mail w systemie uwierzytelniania, z pewnością możemy wybrać kombinację adresu e-mail i hasła jako unikalny identyfikator. Co może uniemożliwić mi zbudowanie systemu uwierzytelniania, traktując unikalny identyfikator jako kombinację adresu e-mail i hasła? Co jest nie tak z tym projektem?


title: Jakiej struktury danych może użyć edytor tekstu do odwzorowania pozycji kursora/zaznaczenia tekstu przez użytkownika na jego wewnętrzną reprezentację dokumentu?

text: Procesory tekstu (np. Microsoft Word) wyświetlają dokumenty użytkownikowi jako tekst stylizowany. Użytkownik może zaznaczyć część tego tekstu i zastosować do niego style, a także edytować tekst. Procesor tekstu musi (jak sądzę) mieć wewnętrzną reprezentację dokumentu, która wskazuje, które fragmenty tekstu wyświetlanego użytkownikowi powinny mieć inny styl. Ale użytkownik nie wchodzi w interakcję z tą wewnętrzną reprezentacją. Wchodzą w interakcję z tekstem, używając karetki i wybierając jego fragmenty. Jakiej struktury danych może użyć edytor tekstu, aby wydajnie odwzorować tekst, z którym użytkownik wchodzi w interakcję, z jego wewnętrznym modelem dokumentu?


title: Motywacja i pułapki (?) słowa kluczowego auto w C++11

text: Zastanawiałem się ostatnio, dlaczego słowo kluczowe `auto` zostało wybrane w C++11 do oznaczenia zmiennej, której typ musi być wywnioskowany przez kompilator, tak jak w auto x = 1; Ponieważ 1. `var` wydaje się bardziej powszechny w innych językach programowania (np. C#, Scala, JavaScript) i 2. O ile rozumiem nowa semantyka `auto` łamie kompatybilność wsteczną (była rzadko używana, ale miała inne znaczenie w poprzednich wersjach C++, zobacz np. tutaj) chciałem zapytać, czy istnieje jakiś szczególny powód wyboru `auto` (na korzyść `var` lub jakiegokolwiek innego słowa kluczowego). Czy była jakaś konkretna dyskusja na ten temat przed wydaniem standardu C++11? Ponadto, czy są jakieś możliwe niezgodności, na które powinniśmy uważać podczas rekompilacji starszego kodu C++ z kompilatorem C++11?


title: Używanie własnego kodu w projektach freelancerskich

text: Zajmuję się freelancerem od ponad 2 lat. Wykonując projekty dla innych ludzi, buduję kompilację typowych zadań, które realizuję w projektach i umieszczam je w kodzie. To rodzaj biblioteki z kilkoma funkcjami, które mogę ponownie wykorzystać bez konieczności przepisywania tego samego dziesiątki razy. Mówię o dostępie do baz danych Access, pobieraniu informacji z FTP i podobnych rzeczach. Czy jest to dopuszczalne z prawnego punktu widzenia? Jaka jest różnica w ponownym użyciu starego kodu i przepisaniu go od nowa (ponownie używając własnego mózgu, a więc dokładnie tej samej logiki)? Oczywiście nie posiadam do niego żadnych praw autorskich, a kod źródłowy tych zajęć udostępniam moim klientom.


title: Interfejs API hibernacji systemu Windows

text: Czy można programowo uruchomić hibernację systemu Windows bez faktycznej hibernacji, tylko po to, aby w regularnych odstępach czasu robić migawki systemu operacyjnego? Aby system mógł powrócić do wcześniej zapisanego stanu w przypadku jakiejkolwiek awarii. Jest to podobne do przywracania systemu, które tworzy kopie zapasowe plików systemowych; ale chodzi o wykonanie kopii zapasowej stanu aktywnego całego systemu operacyjnego.


title: Nacisk na lepsze zautomatyzowane testy w zespole QA

text: Jestem młodszym programistą dołączającym do zespołu QA w mojej firmie. Zespół QA, z którym współpracowałem podczas pracy jako programista, był bardzo solidny, a firma bardzo dobrze radziła sobie z zachęcaniem i finansowaniem dobrych, solidnych automatycznych technik testowania i zatrudnianiem ludzi, którzy byli w tym dobrzy. Jednak ten nowy zespół, do którego dołączam, może mieć nieco bardziej reaktywny charakter, łącząc niektóre obowiązki testowe (tak jak je rozumiem) z pracą operacyjną i nie wykonując zbyt wielu proaktywnych testów regresji. Mam wielką nadzieję, że się mylę, ale faktem jest, że też mogę mieć rację. Czy ktoś ma jakieś dobre rady dotyczące promowania testów automatycznych? Pamiętaj, że nie jestem menedżerem ani liderem, ani nawet doświadczonym testerem. Ale na pewnym poziomie wydaje się, że niektóre z tych zasad powinny wpaść w zdrowy rozsądek. Czy mylę się, myśląc o tym? Jeśli nie, co mam zrobić?


title: Przytłoczenie po rozpoczęciu nowego projektu

text: Rozpocząłem projekt (program do planowania lekcji oparty na systemie Windows, który pomaga uporządkować przedmioty i zadania). Problem w tym, że nie jestem pewien, jak mam zarządzać tym projektem i w jakiej kolejności budować. Tj. Czy powinienem zbudować wszystkie różne elementy interfejsu, a następnie napisać kod, czy powinienem stworzyć interfejs, zakodować go, stworzyć inny interfejs, a następnie go zakodować? Więc moje pytanie brzmi; jak podzielić ten przydługi projekt na małe, zamówione części do wykonania; i jak mam to zamówić?


title: Projektowanie API na górze za pomocą Java RMI i Rest API

text: Pracuję na zapleczu aplikacji internetowej Java. Mamy repozytorium dokumentów (w szczególności Fedora Commons), w którym przechowujemy pliki xml. Chcę wewnętrznie wyodrębnić interfejs API repozytorium, aby nie byli ściśle powiązani z jednym produktem. Chciałbym również dać elastyczność łączenia się z repozytorium za pośrednictwem interfejsów API Java RMI lub REST. Miałem nadzieję, że uzyskam porady lub zasoby, jak wdrożyć coś takiego. Pomyślałem, że będę miał jakąś abstrakcyjną klasę repozytorium, która ma metody takie jak getRecord, updateRecord i deleteRecord. W konstruktorze przekazałbym URI dla repozytorium oraz metodę API i port. Pozwoliłoby to na pewną elastyczność w przyszłości, tak aby interfejs API REST stał się bardziej praktyczny, ale umożliwiłby elastyczność lub użycie RMI, które mogłoby (powinno?) mieć lepszą wydajność. Czy zastanawiam się nad tym, czy jestem na właściwej ścieżce?


title: Mieszanie interfejsu API Angular i ASP.NET MVC/Web?

text: Pochodzę z używania ASP.NET MVC/Web API i teraz zaczynam używać Angulara, ale nie wiem, jak je mieszać. Gdy używam Angular, czy koncepcje po stronie serwera MVC nadal zapewniają jakąkolwiek wartość? Czy należy ściśle używać interfejsu API sieci Web wyłącznie w celu uzyskania danych dla wywołań HTTP kątowych? Czy jest może bardziej uproszczony punkt wyjścia, którego powinienem użyć, jeśli szablon VS dodaje wiele rzeczy, których nie potrzebuję? Podoba mi się pomysł ścisłego podziału po stronie serwera = czyste dane i po stronie klienta = czyste przetwarzanie HTML Wszelkie wskazówki, jakie masz dla faceta ASP.NET MVC przechodzącego na Angulara, byłyby pomocne


title: Praca z wieloma klasami schematów XML w C#

text: Pracuję z procesem importowania danych w języku C#, który przyjmuje plik zip wypełniony plikami XML i zapisuje określone punkty danych w bazie danych. Jest to realizowane przez załadowanie danych XML do klas skompilowanych ze schematu. Logika importu pobiera dane, zagłębiając się w odpowiednie klasy i pola. Schemat XML jest definiowany przez inną firmę, a schemat zmienia się co rok, gdy wypuszczana jest zaktualizowana wersja ich oprogramowania. Moja firma chciałaby zaimportować różne wersje schematu, aby móc obsługiwać starsze pliki. Toczy się również debata, czy ta zmiana jest warta wysiłku. Moim planem, aby to osiągnąć, byłoby określenie, którego schematu użyć na początku importu, a następnie użycie różnych klas interfejsu, aby pobrać dane z XML i przekazać je z powrotem do klas importu, które następnie zapisałyby wartości w Baza danych. Na podstawie schematu generowanych jest ponad 200 klas, ale dostęp do danych potrzebujemy tylko w około połowie z nich. Czy istnieją inne sposoby podejścia do obsługi wielu schematów XML, które mogą być łatwiejsze?


title: Standardowy/Właściwy sposób liczenia wierszy kodu?

text: Jak mam policzyć wiersze kodu w projekcie? Na przykład w C++, czy powinienem policzyć wiersze plików nagłówkowych z definicją mojej klasy? Czy powinienem policzyć nagłówek (niestandardowej) biblioteki, z którą łączę? Czy w Qt (lub jakimkolwiek innym frameworku GUI) powinienem liczyć linie projektu formularza? Czy powinienem też liczyć Makefile? Pytam, ponieważ jest to prosty sposób na zmierzenie rozmiaru projektu i/lub włożonego w niego wysiłku. Nawet jeśli plik GUI nie jest kodem _per se_, programista mógł poświęcić na to wiele godzin. **EDYTUJ** Większość z Was nie zrozumiała pytania i/lub zakłada, że chcę użyć magicznej liczby LOC jako JEDYNEJ metryki do oceny projektu lub nawet dnia pracy. Uważam, że dzień z negatywnym wynikiem LOC jest bardzo miłym dniem. Oznacza to, że jakoś udało mi się lepiej i efektywniej zrozumieć i zamodelować problem. Komentarze typu „Dlaczego tego potrzebujesz” nie są interesujące. Czy ci się to podoba, czy nie, liczba jest dostępna, Wikipedia mówi, że Windows XP ma 45 mln LOC, Linux 2.6.35 na 13,5 mln, mógłbym kontynuować. Może mogłam prosić lepiej. W każdym razie moim pierwotnym zamiarem było wiedzieć, jak obliczane są te liczby w Wikipedii, a nie ich subiektywny charakter. Znalazłem to na blogu MSDN, bardzo przydatne, ponieważ pokazuje, jak VS2008 to robi: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/KKXGQ.png)