title: J2EE - Zamiana sesji

text: Serwer aplikacji - JBoss AS 7.1.1 JDK6 J2EE 1.3 Moja aplikacja internetowa ma ponad 10 lat i boryka się z problemem wymiany sesji w moim portalu. Zauważyłem, że zamiana ma miejsce głównie wtedy, gdy wielu jednoczesnych użytkowników uzyskujących dostęp do portalu i bazowego serwera Windows jest zajętych (ponad 90% wykorzystania procesora) Aby przeanalizować ten problem, zarejestrowałem dane klienta (identyfikator klienta, adres IP, identyfikator jsession) do tabeli i znalazłem ten klient mający unikalny identyfikator jsession początkowo ma swoje dane i nagle dla tego samego identyfikatora jsession i adresu ip otrzymującego różne dane klienta. klient1 123.123.12.123 jsessionid123 11:10:02 klient2 123.123.12.123 jsessionid123 11:10:04 adres ip (123.123.12.123) posiadający identyfikator jsession (jsessionid123) w jakiś sposób pobiera dane klienta2 Każde zamówienie złożone przez klienta1 w ip - 123.123.12.123 zostaje utworzone w przypadku customer2 potwierdziłem to, dzwoniąc do customer2 i potwierdzili, że nie złożyli zamówienia. klient1 nie zorientuje się, że złożył zamówienie dla klienta2 - wszystkie dane ulegają zmianie, takie jak pozycje koszyka, obiekt klienta, produkty itp. Teraz muszę znaleźć poprawkę, ale najpierw muszę wiedzieć, która część mojego kodu jest tworzona ten problem. Czy muszę używać oprogramowania do testów warunków skrajnych? lub jakiś lepszy mechanizm, aby znaleźć problematyczny kod?


title: Jak administrowane jest repozytorium Linux?

text: Jestem zachwycony projektem Linux i chciałbym dowiedzieć się, jak administrują kodem, biorąc pod uwagę ogromną liczbę programistów. Znalazłem repozytorium Linuksa na GitHubie, ale nie rozumiem, jak jest administrowane. Na przykład następujący commit: https://github.com/torvalds/linux/commit/31fd84b95eb211d5db460a1dda85e004800a7b52 Zwróć uwagę na następującą część: ![tu wpisz opis obrazu](http://i.stack.imgur.com/dayjp.png) Więc jeden autor i Torvalds się popełnił. Jak to jest możliwe. Myślałem, że można mieć tylko prawa do ciągnięcia lub pchania, ale tutaj wygląda na to, że jest etap zatwierdzania. Powinienem wspomnieć, że konkretny problem, który próbuję rozwiązać, polega na tym, że używamy pull requestów do naszego repozytorium. Problem, przed którym stoimy, polega na tym, że podczas gdy pull request czeka na scalenie, często jest przerywany przez zatwierdzenie. Prowadzi to do pozornie niekończącej się pracy nad dostosowaniem rozwidlenia, aby żądanie ściągnięcia płynnie się scaliło. Czy Linux rozwiąże ten problem, dając wielu ludziom prawa do pchania (przynajmniej obecnie są tylko trzy pull requesty, ale setki zatwierdzeń dziennie).


title: Jak powinienem ocenić zajęcia szkoleniowe?

text: Moja firma daje nam możliwość zapisania się na niektóre szkolenia poza siedzibą firmy na temat wzorców projektowych. Przeglądając broszury, _już_ czuję się znudzony (i nieco odstręczany przez marketingowo hałaśliwe przedsiębiorcze managery silverbulletty) - znam już podstawy wzorców projektowych (przeczytałem książkę GoF lata temu, wykorzystałem kilka w razie potrzeby, przeczytałem artykuły na temat netto itp.). Martwię się, że szkolenie będzie głównie polegało na oglądaniu programu PowerPoint z rzeczami, które głównie znam, i dyskutowaniu szczegółów na diagramie UML. Moje doświadczenie w programowaniu to głównie gry, proste tworzenie stron internetowych i rzeczy matematyczne, w Pythonie, C++ lub prostych językach skryptowych; Nigdy nie pracowałem nad niczym „enterprisey”, ani w Javie czy .Net (z jakiegoś powodu Java i .Net wydają się szczególnie kojarzone z Wzorcami Projektowymi), ani nie planuję tego w najbliższej przyszłości. O wiele bardziej interesują mnie takie rzeczy, jak programowanie funkcjonalne i Haskell oraz tworzenie języków specyficznych dla mikrodomen w celu rozwiązania konkretnych problemów - jestem bliżej kultury „hakerskiej” (jestem głównie samoukiem) niż „przedsiębiorstw kultura. Ale może to tylko ja mam zbyt wysoką opinię o sobie i przepuszczam dobrą okazję do nauczenia się przydatnych rzeczy. Albo bycie snobem i odmawianie poznawania innych kultur. Jak więc mogę stwierdzić, czy klasa wzorców projektowych będzie przydatna? W jaki sposób takie szkolenia okazały się przydatne? Jak kiedykolwiek czułeś się o nich zaniepokojony?


title: Jak narysować diagram klas (UML), gdy klasy są rozproszone w systemie rozproszonym?

text: Zasadniczo, jak oznaczyć, że klasa foo pochodzi z innego serwera niż pasek klasy?


title: Czy mądrze jest dołączyć coś takiego jak OpenSSL lub GnuTLS do projektu w repozytorium?

text: Obecnie pracuję nad projektem, który wykorzystuje bibliotekę OpenSSL do bezpiecznej komunikacji. Ponieważ ta biblioteka jest wymagana do zbudowania projektu, rozważam włączenie jej do repozytorium projektu. Oto plusy i minusy jak je widzę: **Zalety:** * Samodzielny build - z jednym wyjątkiem, wszystko co potrzebne do zbudowania projektu jest zawarte w repozytorium. Byłoby miło, gdyby użytkownik nie musiał męczyć się z instalacją i konfiguracją nagłówków/bibliotek programistycznych dla OpenSSL. **Wady:** * Obawy o bezpieczeństwo — nie trzeba dodawać, że jedyną wersją OpenSSL, której każdy powinien używać, jest zawsze najnowsza. Jak tylko zostanie wydane nowe wydanie, będę musiał zaktualizować wersję OpenSSL w repozytorium projektu. Więc pytanie sprowadza się do tego: > Czy mądrze jest dołączyć do projektu bibliotekę bezpieczeństwa, którą musimy > _zawsze_ zapewnić, że zostanie zaktualizowana za każdym razem, gdy zostanie wydana nowa wersja?


title: Czy dobrym pomysłem jest używanie w produkcji czegoś takiego jak Twitter Bootstrap?

text: Jestem na stażu w nowym startupie i dostałem zadanie zaprojektowania frontendu strony. Naprawdę, naprawdę chcę korzystać z nowego Twitter Bootstrap (http://twitter.github.com/bootstrap/). Wszystko to CSS, wygląda niesamowicie, działa świetnie i pozwala mi zabrać się do projektowania i nie martwić się o drobiazgi. Czy jest to jednak dobry pomysł, jeśli jest to wersja demonstracyjna tworzonej przez nas aplikacji internetowej, która może stać się kodem produkcyjnym? Czy będzie to wyglądać głupio i amatorsko, jeśli użyję tego zamiast kodować to wszystko sam? Czy bootstrap jest zbyt Twitterowy jak na prawdziwą markę firmy?


title: Komunikacja między różnymi technologiami w aplikacji rozproszonej

text: Musiałem włączyć kilka starszych aplikacji i usług do aplikacji rozproszonej w sieci. Istniejące usługi i aplikacje pisane są w różnych językach i technologiach, w tym: java, C#.Net i C++; wszystko działa na komputerach z MS Windows. Teraz zastanawiam się nad mechanizmem komunikacji między nimi. Jaki jest prosty i standardowy sposób? Dziękuję! PS. komunikacja obejmuje proste wysyłanie wiadomości i zdalne wywoływanie metod.


title: Jaki jest najlepszy sposób na odzyskanie wartości i statusu?

text: Biorąc pod uwagę, że wszystko inne jest równe i nie ma standardów kodowania określających najlepsze podejście, jaki byłby zalecany sposób w C++, aby sprawdzić, czy wartość istnieje i zwrócić ją, jeśli tak jest? Na przykład coś takiego jak jedna z tych deklaracji: bool getMethod(double& ret); podwójne getMethod(bool&ok); void getMethod(bool i ok, double i ret); pair<bool, double> getMethod(); bool checkMethod(); // np. if (checkMethod()) double getMethod(); // wynik = getMethod(); lub coś innego, jak return a struct Wartość może istnieć w około 50% przypadków. Istniejący kod już wykonuje wiele z ostatniej metody, tj. za pomocą checkMethod(), ale zastanawiałem się, czy to naprawdę skuteczny sposób na zrobienie tego - za pomocą dwóch wywołań (połowa czasu).


title: Pytanie na wykresie

text: Próbuję zaimplementować strukturę danych wykresu w C#. Mam następujące interfejsy: public interface IVertex<TValue> { TValue Value { get;} VertexList<IVertex<TValue>> Neighbors { get;} int InDegree { get;} int OutDegree { get;} } public interface IWeightedEdge<TValue, TWeight> { IVertex<TValue> source { get;} IVertex<TValue> destination { get;} TWeight weight { get; } } interfejs publiczny IWeightedGraph<TVertexValue, TEdgeWeight> { bool AddVertex(TVertexValue value); TVertexValue RemoveVertex(IVertex<TVertexValue> wierzchołek); bool RemoveVertex(TVertexValue wartość); bool AddEdge (źródło IVertex<TVertexValue>, IVertex<TVertexValue> dest, waga TEdgeWeight); bool RemoveEdge(IVertex<TVertexValue> źródło, IVertex<TVertexValue> dest); } Z tego widać, że obowiązkiem klasy Vertex (klasa implementująca interfejs IVertex) jest informowanie o sąsiednich wierzchołkach (funkcja Neighbors), jej in degree, out degree itp. Podczas projektowania tego powiedział przez mojego przyjaciela, że klasa Graph (ta, która zaimplementuje IGraph) powinna wziąć odpowiedzialność za operacje, takie jak pobieranie sąsiednich wierzchołków, znajdowanie stopni wejścia/wyjścia itp. Chodzi o to, że powyższe operacje są ważne tylko wtedy, gdy wierzchołek staje się częścią wykresu. Ale chodzi mi o to, że Vertex jest samodzielny; może istnieć nawet poza wykresem. Tak więc wierzchołek powinien zawierać operacje na nim. Który uważasz za poprawny? Podziel się swoimi przemyśleniami na ten temat.


title: Czy na gigantyczny pomysł open-source

text: Tak więc mam pomysł na wielką grę, której opracowanie zajęłoby lata, gdybym zrobił to sam (z pomocą przyjaciół). Wiele się nauczyłem o programowaniu gier, ale nie jestem na tyle blisko, aby zacząć kodować samą rzecz. Gdybym założył firmę i zatrudnił programistów, to i tak zajęłoby to co najmniej dwa lata. O ile open-sourcing to przyspieszy projekt? Czy powinienem go otworzyć, biorąc pod uwagę, że nie mam kodu do pokazania dla mojej nauki w tego rodzaju programowaniu? Czy projekt open-source może być skierowany tak, aby utrzymać oryginalny pomysł przy życiu, czy też często będzie odbiegał od oryginalnego pomysłu twórcy? Czy projekt open source może otrzymać jakiekolwiek wiarygodne finansowanie (czy możemy mieć na przykład inwestorów)? Czy powinienem założyć biznes i zatrudnić programistów, aby go ruszyli, a następnie udostępnić go? Jeśli tak się stanie, chciałbym wysłać pełną specyfikację każdemu, kto chce ją zobaczyć.


title: Jak odróżnić komputer od kalkulatora?

text: W tym pytaniu SO znajduje się komentarz `starblue`, że > Komputer bez pętli jest kalkulatorem Czy to prawda? Czy to jedyna różnica? Czy istnieje zestaw kryteriów do zróżnicowania, czy granica jest bardzo zamazana?


title: Mogę dostać studio wizualne za darmo w szkole, czy powinienem?

text: Obecnie używam dev++, jestem kompletnym początkującym, (Freshman CS major) uczącym się C++. Jedną z najnowszych wersji visual studio (chyba z 2008 lub 2009) mogę dostać za darmo w mojej szkole. Nie jestem pewien, czy warto go zdobyć. myśli?


title: Jakie są granice właściciela produktu w scrumie?

text: W innym pytaniu zapytałem, dlaczego uważam, że scrum zamienia aktywnych programistów w pasywnych programistów i wydaje się, że ogólny problem nie leży w scrumie (związanym ze scrumem), a raczej jest związany ze złą implementacją scrum. Tak więc tutaj mam kilka pytań dotyczących zakresu odpowiedzialności PO (właściciela produktu) i ograniczeń, których nie powinien przekraczać. 1. Czy PO powinien ingerować w projektowanie UI, gdy w zespole scrumowym pracują projektanci? (przykładem tego, co nam się przydarzyło, jest zastąpienie pól wyboru listą rozwijaną z dwoma pozycjami, mianowicie tak i nie; lub powiększenie niektórych pól lub wyrównanie niektórych treści do lewej zamiast wyśrodkowania ich na stronę lub takie rzeczy). Jeśli tak, w jakim stopniu? Zabarwienie? Układ? 2. Czy PO powinien ingerować w projektowanie i architekturę kodowania? To nam się jeszcze nie zdarzyło, ale naprawdę jestem ciekaw granic. Np. czy PO ma prawo do zmiany platformy (przejście z ASP.NET MVC na PHP, czy coś w tym stylu), czy wybór liczby serwerów (architektura warstwowa) itp. 3. Czy PO powinien ingerować w mechanizmy walidacji? Na przykład to pole powinno być wymagane lub nie musimy pobierać tej informacji od użytkownika. Czasami analizatorzy i projektanci potwierdzają, że coś można zrobić za kulisami, na przykład wyodrębnić informacje o profilu użytkownika z innego źródła, zamiast prosić o to w interfejsie użytkownika. 4. W jakim stopniu PO może/powinien zostać wprowadzony do analizy i projektowania? Na przykład historyjka użytkownika może brzmieć: „Jako klient chciałbym mieć możliwość kupowania nowych domen online”. Jednak zespół scrumowy może zaimplementować tę historyjkę użytkownika w kreatorze pięciu kroków lub na jednej stronie. Do jakiego poziomu PO powinien monitorować, zarządzać lub nadzorować analizę techniczną, projektowanie i wdrażanie? Zadałem te pytania, aby ocenić, czy nasza implementacja jest dobra czy zła?


title: Decyzje dotyczące projektowania systemu operacyjnego Windows

text: Widziałem jakiś czas temu wywiad z Richardem Stallmanem i zadano mu pytanie dotyczące bezpieczeństwa i systemu operacyjnego Windows, na który odpowiedział, że istnieją stosunkowo złe decyzje projektowe, które zostały podjęte podczas tworzenia systemu operacyjnego Windows. Te decyzje projektowe (według R. Stallmana) były wówczas znane z późniejszego tworzenia luk w zabezpieczeniach. Czy ktoś może wyjaśnić, o czym mówi? Film z wywiadem można znaleźć tutaj http://rt.com/news/richard-stallman-free-software-875/ \- zaczyna się o 8:30.


title: Budowanie bazy tłumaczeń tekstowych dla wielu (wewnętrznych) projektów

text: W naszej firmie mamy istniejącą tabelę tłumaczeń ms-sql, która przechowuje następujące ciągi znaków: Id | Klucz | Język | Wartość 1 | witaj-świecie | nl-BE | Hallo Wereld 2 | witaj-świecie | pl-GB | Witaj świecie W systemie są 3 języki i spodziewam się, że liczba ta wzrośnie do maksymalnie około 10 w przyszłości Ta tabela jest czytana przez wiele bardzo różnych projektów (około 60 projektów, głównie strony internetowe/aplikacje internetowe i niektóre usługi sieciowe), które każdy otwiera połączenie bazy danych z bazą tłumaczeń, buforuje tłumaczenia Informacje zwrotne od twórców front-endu są takie, że nasz interfejs użytkownika do wprowadzania lub modyfikowania tłumaczeń jest największą wadą jest to, że nie mogą wiedzieć, który projekt używa jakich ciągów. Czasami modyfikują stringi, nie wiedząc, że psują nim 7 projektów. Teraz wystarczy wpisać coś w stylu `this.Translate("Hello World")`, a system zajmie się resztą. Mógłbym oczywiście zmusić ich do czegoś takiego jak `this.Translate("Hello World","AwesomeApplication1")`, ale wygląda na to, że będzie to wymagało sporo refaktoryzacji w wielu wielu projektach. **Jak byś podszedł do dostarczenia tego rozwiązania? W jaki sposób jako twórca podałbyś „nazwę projektu” do tłumaczenia? Jak mógłbyś to przechowywać w bazie danych?** Ważna uwaga: ponowne wykorzystanie tłumaczeń to cały sens scentralizowanej bazy danych, więc ustalanie zakresu tłumaczeń do jednego projektu, przechodząc do 1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1 5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2 nie jest pożądaną opcją. Wolałbym coś takiego: 1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2 lub odpowiednik klucza obcego polegający na wstawieniu nazw do tabeli. **AKTUALIZACJA** W oparciu o poradę normalizacji bazy danych do tej pory wymyśliłem coś takiego: ![](http://i.stack.imgur.com/UQhQ3.png) //to pozwala mi odróżnić, jeśli tłumaczenia zostały dodane przez programistę lub tłumacza **UPDATE2:** dodał edmx zamiast tekstu. Jeśli ludzie są zainteresowani, mógłbym github projektu WCF owijam tę koncepcję, aby inne osoby mogły ją przetestować i używać.


title: Czy Twoi najlepsi programiści powinni sprawdzać kod innych osób pod kontrolą źródła?

text: Jedną z różnic między svn a git jest możliwość kontrolowania dostępu do repozytorium. Trudno jest porównać te dwie rzeczy, ponieważ istnieje różnica w spojrzeniu na to, kto w ogóle powinien mieć prawo do wprowadzania zmian! To pytanie dotyczy używania git jako scentralizowanego repozytorium dla zespołu w firmie gdzieś. Załóżmy, że członkowie zespołu mają różne poziomy umiejętności, podobnie jak w większości firm. Wydaje się, że Git zakłada, że Twoi najlepsi (najbardziej produktywni, najbardziej doświadczeni) programiści są zaufani w sprawdzaniu kodu. Jeśli tak jest, poświęcasz im czas na pisanie kodu w celu sprawdzenia kodu innych osób w celu jego sprawdzenia. Czy to się opłaca? Naprawdę chcę skupić się na tym, jak najlepiej wykorzystać czas twojego najlepszego programisty, a nie ogólnie na najlepszych praktykach kontroli wersji. Konsekwencją może być to, czy dobrzy programiści odchodzą, jeśli znaczna część ich pracy polega na przeglądaniu kodu innych ludzi? Myślę, że oba pytania sprowadzają się do: czy recenzja jest warta uderzenia w produktywność?


title: Bezpieczna walidacja licencji na oprogramowanie

text: Obecnie pracuję nad produktem (w języku C#), który będzie dostępny do pobrania za darmo, ale wymaga miesięcznej subskrypcji, aby mógł być używany po określonym okresie próbnym. To, co zamierzam zrobić, to pozwolić użytkownikowi zarejestrować konto na naszej stronie i doładować je kredytami w celu korzystania z aplikacji. Jednak jako nowicjusz w dziedzinie licencjonowania napotkałem kilka problemów. * Jak ta logika jest zwykle wdrażana. * Jak podłączyć moją aplikację C# do bazy danych mojej witryny i pobrać wymagane dane (czy okres próbny wygasł, jeśli tak, czy użytkownik ma wystarczającą ilość kredytów). * Jak się upewnić, że jestem w co najmniej 80% (lub więcej) zabezpieczony przed atakującymi, którzy mogą rozpocząć atak MATM w celu zmiany otrzymanych pakietów i uzyskania nieautoryzowanego dostępu do mojego programu. * Jak już słyszałem. Korzystanie z SSL może dać mi pewność, że moja aplikacja łączy się z właściwym adresem, ale jak jeszcze raz zrobić takie połączenie z moją podstawową stroną internetową. (strona Wordpress lub VBulletin). Przepraszam, jeśli moje pytanie wydaje się nieco obszerne, ale przeszukałem Internet w poszukiwaniu konkretnej odpowiedzi na moje potrzeby i nic nie znalazłem. Więc naprawdę potrzebuję skutecznej odpowiedzi (a może rozmowy) na ten temat :D. Aha i małe oświadczenie: mówiąc chwytanie „DANE” i tak dalej, nie pytam o sposób, aby je złapać, podaję tylko przykład tego, co chcę osiągnąć. Aby zawęzić temat, wpadłem na pomysł, o którym chcę dowiedzieć się więcej. * Czy mogę użyć `Wordpress` lub VBulletin i utworzyć do nich zaszyfrowany login RSA i pozwolić, aby odpowiedź była również zaszyfrowana?


title: Czy istnieje rynek na biblioteki oprogramowania?

text: Mam wrażenie, że rozwój bibliotek jest wykonywany albo przez duże firmy, takie jak Microsoft, które rozdają je za darmo, albo przez społeczność open-source. Czy istnieje rynek do _sprzedaży_ bibliotek oprogramowania?


title: Eleganckie sposoby radzenia sobie z if (jeśli inaczej) else

text: To drobny problem, ale za każdym razem, gdy muszę coś takiego zakodować, powtarzanie mi przeszkadza, ale nie jestem pewien, czy którekolwiek z rozwiązań nie jest gorsze. if(FileExists(plik)) { content = OpenFile(file); // <-- uniemożliwia włączenie in if(SomeTest(contents)) { DoSomething(contents); } else { DefaultAction(); } } else { DefaultAction(); } * Czy istnieje nazwa dla tego rodzaju logiki? * Czy jestem odrobinę zbyt OCD? Jestem otwarty na sugestie złego kodu, choćby z ciekawości...


title: Szybki projekt

text: Ostatnio mam tendencję do projektowania moich metod w następujący sposób: if ( 'A' === $a ) { if ( 'B' === $b ) { return 'coś'; } else if ( 'C' === $c ) { return 'kilka innych rzeczy'; } } /* Jeśli udało Ci się dojść do tego momentu, coś poszło nie tak */ return false; Zasadniczo więc chodzi o sprawdzenie, czy pierwszy warunek jest poprawny, jeśli jest, to kontynuuj aż dojdziesz do pierwszego wyrażenia `return`, aby zwrócić oczekiwany wynik, jeśli nie, przejdź do następnego warunku i tak dalej. Kluczem jest to, że cała funkcjonalność metody została już zmniejszona i opakowana w instrukcję warunkową kawałek po kawałku, więc powinieneś spełnić przynajmniej jeden warunek, aby wykonać użyteczną akcję lub jeśli dojdziesz do ostatniej linii, wtedy `zwróci false`, oznacza to, że żaden z oczekiwanych warunków nie został spełniony, że w moim projekcie oznacza to, że dane wejściowe nie były w odpowiednim lub oczekiwanym formacie, typie danych, zakresie itp., więc metoda nie była w stanie kontynuować tego przetwarzania. Mogę osiągnąć ten sam cel na kilka różnych sposobów, ale ten wydaje się być czystszy, ponieważ generalnie muszę pisać kod tylko dla warunków _pozytywnych_ (właściwie nie wiem, jak powinienem to nazwać) - chyba że muszę podejmij konkretną akcję, jeśli nie został spełniony określony warunek. I w końcu otrzymam wynik `false`, jeśli metoda nie była w stanie wykonać swojego zadania -- przy rzeczywistych warunkach przez większość czasu jest to prawie jak skok do końca metody, gdy nie można przejść przez Instrukcja „jeśli”. Został zaprojektowany w taki sposób, że albo przekażesz to `if` i przejdziesz do następnej instrukcji `if` lub `return`, albo jest bardzo mało prawdopodobne, aby dopasować jakiekolwiek inne wyrażenie `if` i przeskoczysz bezpośrednio do ostatnie stwierdzenie „zwróć fałsz”. Teraz moje pytania brzmią: 1. Czy jest to (prawdziwy) szybki projekt, który w tym przypadku szuka tylko odpowiednich warunków do kontynuacji i jest gotowy do niepowodzenia, gdy tylko jeden zawiedzie. Czy to prawda, czy też mieszam tutaj różne rzeczy? Jeśli nie, czy jest na to jakiś konkretny termin? 2. Ponieważ ostatnio uogólniłem to podejście do wszystkich nowych metod, które tworzę, chciałbym wiedzieć, czy jest tu jakaś wada lub wada projektowa, która mogłaby mnie później odgryźć.


title: Utrzymuj niski poziom wcięcia

text: Często słyszę, że nie powinieneś pisać funkcji większych niż jeden rozmiar ekranu, że powinieneś wyodrębnić rzeczy do funkcji, jeśli wywołujesz je bardzo często i wszystkie te wskazówki dotyczące kodowania. Jednym z nich jest również utrzymywanie niskiego poziomu wcięcia. Niektórzy mówili mi nawet, że powinienem wciąć maksymalnie 4 razy. Ale w codziennym programowaniu ciągle się zdarza, że potrzebuję pętli O(n^2) lub O(n^3) z pewną kontrolą przepływu, która tworzy znikąd 7 lub 8 warstw wcięć... Czy są jakieś dobre sposoby na uniknąć tego? Jednym z problemów jest to, że jeśli próbujesz uniknąć złożonego zagnieżdżania instrukcji if/else, zwykle robię to w jednym wierszu, który może wyglądać bardzo okropnie, być nieczytelny i niezbyt łatwy w utrzymaniu.


title: Jaki jest najlepszy styl dla funkcji z wieloma zwrotami i instrukcjami If/Else?

text: > **Możliwy duplikat:** > Eleganckie sposoby obsługi if(if else) else Jaki styl najlepiej zastosować w funkcji, w której występuje wiele zwrotów? Ten styl, w którym nie ma „innego”, bo jest frywolny i uważasz, że jest bardziej zwięzły? f() { if (warunek) { zwraca wartość; } zwróć inna_wartość; } Albo to, jeśli uważasz, że 'else' zapewnia ładny cukier składni, aby uczynić ją bardziej czytelną? f() { if (warunek) { zwraca wartość; } else { zwróć inna_wartość; } } Zachęcamy do podzielenia się wszelkimi innymi powodami, dla których preferujesz jeden od drugiego. EDYCJA: Powyższe próbki są hipotetyczne, gdyby były tak proste, jak zauważył poniżej Yannis Rizos, operator potrójny (warunek ? wartość : inny) byłby akceptowalny. Jednak interesują mnie również takie przypadki: f() { if (warunek1) { zwracana wartość; } else if (warunek2) { zwraca wartość2; } ... else { return other_value; } }


title: Podejście do licencjonowania biblioteki .NET, która może być używana w środowisku desktop / web-service / cloud

text: Szukam porady jak _architekt_ licencjonować bibliotekę .NET. Nie proszę o rekomendacje narzędzi/serwisów czy coś takiego. Moja biblioteka może być używana w zwykłej aplikacji klasycznej w rozwiązaniu ASP.NET. A teraz w grę wchodzą usługi platformy Azure. Obecnie dla aplikacji desktopowych biblioteka sprawdza, czy nazwa aplikacji i firmy z historii wersji jest taka sama jak nazwy, dla których został wygenerowany klucz. W innych przypadkach biblioteka porównuje identyfikatory sprzętu. Teraz pojawiają się problemy: * aplikacja internetowa obsługująca platformę Azure może być uruchamiana za każdym razem na innym sprzęcie (AFAIK) * czasami identyfikator sprzętu dla tego samego sprzętu zmienia się nieoczekiwanie * sprawdzanie identyfikatora sprzętu lub informacji o wersji może być w niektórych okolicznościach niedozwolone (na przykład hosting współdzielony) Zastanawiam się więc, jakie podejście mogę przyjąć, aby zaprojektować schemat licencjonowania, który: * jest przyjazny dla klientów (nie próbuję walczyć z piractwem, ale chcę ostrzec klienta, jeśli korzysta z biblioteka na większej liczbie serwerów niż zapłacił) * może być używana, gdy nie ma połączenia z internetem * może być używana na współdzielonym hostingu Co polecasz?


title: Nie przypisywanie błędów do konkretnego użytkownika

text: Moje pytanie: Czy istnieje korzyść z NIE przypisywania błędu do konkretnego programisty? Zostawić to zespołowi jako całości? Nasz dział zdecydował się być bardziej zwinny, nie przypisując błędów/defektów poszczególnym osobom. Korzystając z Team Foundation Server 2012, umieścimy wszystkie błędy w „obszarze” zespołu programistów, ale pozostawimy puste pole „Przypisane do”. Pomysł polega na tym, że zespół utworzy element pracy zadania, który zostanie przypisany do osoby, a zadanie będzie połączone z błędem. Zespół jako całość weźmie więc odpowiedzialność za Bug, a nie jednostka, dostosowując się do Scrum – najwyraźniej. Widzę wadę. Narzędzia raportowania wbudowane w TFS stają się mniej przydatne, gdy nie można sortować według przypisanych i nieprzypisanych, nie mówiąc już o sortowaniu według przydzielonych błędów użytkowników. Czy jest korzyść, której nie widzę? Poza zachęcaniem do pracy zespołowej poprzez zrzucanie odpowiedzialności na zespół jako całość, a nie na jednostkę?


title: Zamieszanie dotyczące dziedziczenia

text: Wiem, że mogę zostać za to potępiony, ale jestem naprawdę ciekawa. Nauczono mnie, że dziedziczenie jest bardzo potężnym narzędziem polimorfizmu, ale nie wydaje mi się, żebym dobrze go używał w prawdziwych przypadkach. Do tej pory mogę używać dziedziczenia tylko wtedy, gdy klasa bazowa jest klasą abstrakcyjną. Przykłady: 1. Jeśli mówimy o „Produkcie” i „Zapasach”, szybko założyłem, że „Produkt” **jest** „Zapasem”, ponieważ „Produkt” również musi być zinwentaryzowany. Ale pojawił się problem, gdy użytkownik chciał sprzedać swój przedmiot z „Inwentarza”. Po prostu wydaje się, że zmiana obiektu `Inventory` na jego podtyp (`Product`) nie jest słuszna. To prawie jak próba konwersji rodzica na jego dziecko. 2. Innym przypadkiem jest „Klient” i „Członek”. Logiczne jest (przynajmniej dla mnie), że `Członek` **jest** `Klientem` z kilkoma dodatkowymi uprawnieniami. Ten sam problem wystąpił, gdy użytkownik chciał uaktualnić istniejącego „Klienta”, aby stał się „Członkiem”. 3. Bardzo trywialnym przypadkiem jest sprawa „Pracownika”. Gdzie „Menedżer”, „Urzędnik” itp. można wywodzić od „Pracownik”. Nadal ten sam problem z aktualizacją. Próbowałem zamiast tego użyć kompozycji w niektórych przypadkach, ale naprawdę chciałem wiedzieć, czy brakuje mi tutaj czegoś do rozwiązania dziedziczenia. Moje rozwiązanie składu dla tych przypadków: 1. Utwórz odwołanie do „Inwentarza” wewnątrz „Produktu”. Tutaj zakładam, że „Produkt”, a „Inwentarz” mówi w innym kontekście. Podczas gdy „Produkt” jest w kontekście sprzedaży (ceny, ilości, rabatu itp.), „Zapasy” jest w kontekście fizycznego zarządzania (zapasy, ruch itp.). 2. Stwórz odwołanie do `Membership` zamiast wewnątrz klasy `Customer` zamiast poprzedniego rozwiązania dziedziczenia. Dlatego aktualizacja `Klienta` polega tylko na stworzeniu instancji właściwości `Członkostwo` `Klienta`. 3. Ten przykład jest nadal nauczany na podstawowych zajęciach z programowania, ale myślę, że bardziej właściwe jest, aby te `Manager`, `Clerk`, itp. były wyprowadzone z abstrakcyjnej klasy `Role` i uczyniły ją właściwością w `Employee`. Trudno mi było znaleźć przykład konkretnej klasy wywodzącej się z innej konkretnej klasy. Czy istnieje rozwiązanie spadkowe, w którym mogę rozwiązać te sprawy? Będąc nowym w tej rzeczy OOP, naprawdę potrzebuję wskazówek. Dziękuję!


title: Pisanie ogólnego kodu, gdy celem jest kompilator C

text: Muszę napisać kilka algorytmów dla mikrokontrolera PIC. AFAIK, oficjalne narzędzia obsługują albo asembler, albo podzbiór C. Moim celem jest pisanie algorytmów w sposób ogólny i wielokrotnego użytku bez utraty wydajności środowiska wykonawczego lub pamięci. A jeśli to możliwe, chciałbym to zrobić bez znacznego wydłużania czasu programowania i znacznego narażania czytelności i konserwacji. Przez ogólne i wielokrotnego użytku mam na myśli to, że nie chcę angażować się w typy, rozmiary tablic, liczbę bitów w polu bitowym itp. Wszystkie te specyfikacje, IMHO, wskazują na szablony C ++, ale nie ma do tego kompilatora dla mojego cel. Metaprogramowanie makr w C to kolejna opcja, ale znowu moim zdaniem, która znacznie zmniejsza czytelność i wydłuża czas programowania. Wierzę, że to, czego szukam, to przyzwoity tłumacz z C++ na C, ale chciałbym usłyszeć coś innego, co spełnia powyższe wymagania. Może tłumacz z innego języka wysokiego poziomu na C, który tworzy bardzo wydajny kod, może coś innego. Zwróć uwagę, że nie mam nic przeciwko C, chciałbym tylko, aby były w nim dostępne szablony.


title: OOP PHP tworzy osobne klasy lub jedną

text: Studiuję OOP PHP i pracuję nad małym osobistym projektem, ale trudno mi zrozumieć niektóre koncepcje. Załóżmy, że mam listę przedmiotów, każdy element należy do podkategorii, a każda podkategoria należy do kategorii. Czy więc powinienem utworzyć osobne klasy dla kategorii (z metodami do wylistowania wszystkich kategorii, dodania nowej kategorii, usunięcia kategorii), klasy dla podkategorii i klasy dla elementów? A może powinienem tworzyć, wystawiać i usuwać kategorie jako metody dla klasy pozycji? Zarówno kategoria, jak i podkategoria są bardzo proste i zasadniczo składają się z identyfikatora, nazwy i identyfikatora rodzica (dla podkategorii).


title: Nigdy nie pisałem wielu testów jednostkowych, jak mogę ćwiczyć ich więcej?

text: Mam rozmowę kwalifikacyjną wkrótce w przyszłym tygodniu i jest kilka rzeczy na ich liście obowiązków związanych z tą pracą programistyczną (nazwa stanowiska jest niejasna, mówi java developer), którymi się martwię: * Funkcje testów jednostkowych * Debugowanie nowych cechy * Podaj zalecenia dotyczące projektowania przypadków testowych (co to jest?) Martwię się, ponieważ w moich poprzednich projektach oprogramowania nie zawracałem sobie głowy pisaniem testów jednostkowych. Wiem, jak używać JUnit do pisania testów w Eclipse i procesie, ale po prostu nie mam dużego doświadczenia w pisaniu testów. Na przykład opieram się na danych z sieci, które bardzo się od siebie różnią i przetwarzam te dane. Jak mogę napisać przypadki testowe dla każdego typu danych? Ponadto, jeśli dane pochodzą z lokalnej bazy danych, jak mam napisać przypadek testowy, który sprawdza, czy dane z tabel są poprawnie odczytywane? Korzystałem z funkcji debugowania w Eclipse, kiedy tylko mogłem, ale czasami, gdy uzyskuję dostęp do biblioteki, która nie zawiera kodu źródłowego (np. Komercyjnych Jarsów innych firm), krok do funkcji się zatrzymywał. Więc w większości przypadków po prostu System.out.println, aby dowiedzieć się, gdzie dzieje się błąd. Czy istnieje lepsza metoda? Jak mogę ćwiczyć w krótkim czasie, aby być w pewnym stopniu kompetentnym w pisaniu testu jednostkowego?


title: Czy często zdarza się, że procedury składowane są wyłączone w zarządzanych planach hostingowych MySQL?

text: Tworzę aplikację, która moim zdaniem skorzystałaby z użycia procedur składowanych MySQL. Wiem, że procedury składowane mają złą reputację, ale myślę, że dobrze pasują do mojej aplikacji. Korzystanie z procedur składowanych znacznie zmniejszyłoby liczbę zapytań na żądanie (głównie wstawek), a także umożliwiłoby wykorzystanie procedur w wielu implementacjach tego oprogramowania. Myślę, że oprogramowanie na tym skorzysta. Obawiam się jednak, że wprowadzenie funkcjonalności do procedur składowanych może utrudnić użytkownikom wdrażanie oprogramowania na współdzielonych usługach hostingowych. Czy powszechną praktyką jest oczekiwanie, że użytkownicy będą mieli możliwość wykonywania procedur składowanych (tj. zezwalają skryptom na tworzenie i uruchamianie procedur składowanych)? **Edytuj:** Ta aplikacja jest przeznaczona dla mojego użytkownika końcowego do samodzielnego wdrożenia.


title: JSP, EL, JSTL: nauka z perspektywy web designera

text: Mam dwie książki nastawione na naukę JSP. Z tego, co przeczytałem, jedną z motywujących cech/korzyści jest to, że projektanci stron internetowych (najwyraźniej z reguły nie znają Javy) mogą pracować z dynamicznymi stronami za pośrednictwem EL/JSTL. Z tego, co do tej pory widziałem, nauka EL/JSTL wymaga podstawowej znajomości Javy. Jeszcze nie widziałem przykładu, który nie ma klasy Java, do której można by się odwołać. Ponieważ to właśnie widziałem, zastanawiam się, czy ktoś może mi powiedzieć, że to prawda, czy nie. Aby pytanie było jasne: czy projektanci stron internetowych muszą zrozumieć, na bardzo podstawowym poziomie, jak działa klasa Java (np. pola, settery, gettery, argumenty, konstruktory...)? To pytanie ma naprawdę pomóc mi zdecydować, czy zadać inne pytanie; to jest kwalifikator.


title: Empiryczne dowody popularności Git i Mercurial

text: Jest 2012! Mercurial i Git są nadal silne. Rozumiem kompromisy obu. Rozumiem też, że każdy ma jakieś preferencje dla jednego lub drugiego. W porządku. Szukam informacji na temat poziomu wykorzystania obu. Na przykład w witrynie stackoverflow.com wyszukiwanie Git daje 12000 trafień, Mercurial 3000. Google Trends podaje, że w przypadku Git jest to 1,9:1,0. Jakie inne informacje empiryczne są dostępne, aby oszacować względne wykorzystanie obu narzędzi?


title: Jak Erlang staje się miękki w czasie rzeczywistym z GC?

text: Generalnie GC nie jest dobrym wyborem, aby uzyskać miękki atrybut czasu rzeczywistego. Ale język Erlang oparty na GC może być miękki w czasie rzeczywistym. Czy to oznacza, że Erlang prawie nie ma opóźnień GC? Jak to działa?


title: Styl tworzenia unii IEnumerable

text: Nie ma fajnego cukru LINQ do tworzenia związków. Metoda `Enumerable.Union()` jest zwykle wywoływana w następujący sposób: var bigList = list1.Union(list2); Alternatywą jest wywołanie metody „Enumerable.Union()”, która może być bardziej czytelna: var bigList = Enumerable.Union(list1, list2); Jednak żadna z tych metod nie jest zbyt stylowa (co ważniejsze, czytelna) podczas skalowania w poziomie Prawdopodobnie najlepszą metodą jest następująca metoda: var naprawdęBigList = lista1.Union(list2).Union(list3); Co może spowodować niechlujne łączenie metod. Alternatywy wymagają zmiennych przypadkowych: var list1and2 = lista1.Union(list2); var naprawdęDużaLista = lista1i2.Union(lista3); lub var lista1and2 = Enumerable.Union(list1, lista2); var trueBigList = Enumerable.Union(list1and2, list2); Czy istnieje czysty sposób na utworzenie tych bardziej złożonych związków? Czy rozszerzenie takie jak `Enumerable.Union(params IEnumerable<T> collections)` (używane np. `var naprawdęBigList = Enumerable.Union(list1, list2, list3)`) byłoby lepsze?


title: Oddzielenie bazy danych, API i interfejsu

text: Większość moich projektów zaczyna się od małych. Wiele razy zaczynam od strony internetowej (1 plik), która ma kod do... wybierania rzeczy z bazy danych => wyświetlanie go użytkownikowi i oferowanie edycji => otrzymywanie zmian (czasem na tyle skomplikowanych, że wymaga parsowania) = > oczywiście zaktualizuj bazę danych wszystko w 1 pliku. W miarę rozwoju projektu zawsze irytujące staje się posiadanie tak dużej ilości kodu w jednym stosie, 50 instrukcji 'if'. **Pytanie** : Co to jest dobra, sprawdzona i intuicyjna separacja danych? Myślę, że szukam diagramu, który wyjaśnia, który kod znajduje się w jakim pliku. Chciałbym zachować niezależność tego języka, ale jeśli ma to znaczenie, używam PHP i MySQL.


title: Jakie koncepcje matematyczne należy przejrzeć podczas rozmowy kwalifikacyjnej?

text: Jakie są dobre koncepcje matematyczne do przejrzenia na rozmowę kwalifikacyjną z inżynierem oprogramowania? Nie oczekuje się, że stanowisko będzie szczególnie obciążające matematykę, tj. programowanie graficzne, ale wyobrażam sobie, że odświeżenie niektórych pojęć matematycznych pomogłoby w udzieleniu wywiadu dla firmy wysokiego kalibru. Im bardziej konkretny, tym lepiej. Z góry dziękuję!


title: Czy mogę redystrybuować uproszczony kod BSD?

text: Oto wtyczka, którą chcę rozpowszechniać: http://plugins.jquery.com/project/TextAreaResizer Napisałem wtyczkę Jquery, która wymaga zmiany rozmiaru tekstu jako warunku wstępnego. Typ licencji brzmi: Typ licencji: Uproszczona licencja BSD/Licencja FreeBSD Trochę poszukałem w Google i powiedziałem, że musisz zachować wszystkie informacje o licencji, ale ta wtyczka nie zawiera żadnych! Czy mogę spakować zmodyfikowaną wersję tego (zmieniłem jeden numer w źródle) i rozpowszechniać ją z moją wtyczką? Dzięki za wszelkie wglądy


title: Jak mam zaplanować bazę kodu?

text: Obecnie pracuję nad projektem, który ma sięgnąć ponad 5000 linijek kodu, ale nigdy do końca nie przemyślałem projektu. Jakich metod powinienem użyć do strukturyzowania i organizowania mojego kodu? Papier i długopis? Diagramy UML? Coś innego?


title: Strona referencyjna dla właściwości CSS 3 (takich jak box-reflect)

text: Dzisiaj zacząłem czytać książkę _CSS Mastery 2nd edition_. To naprawdę dobra książka dla każdego, kto jest zainteresowany nauką niektórych technik. Na stronie 151 odkryłem właściwość `box-reflect` z CSS3. Próbowałem dowiedzieć się więcej o obsługiwanej przeglądarce i składni właściwości, ale znalazłem tylko stronę, która niewiele wyjaśniała. Czy ktoś może podać mi link do aktualnej strony internetowej dotyczącej elementów CSS3? Witryna powinna również zawierać informacje o obsłudze poszczególnych elementów przez przeglądarkę. Interesuje mnie przede wszystkim właściwość `box-reflect` oraz aktualizacja mojej wiedzy o właściwościach CSS3.


title: Funkcjonalny język programowania do tworzenia stron internetowych

text: Chcę wybrać naukę funkcjonalnego języka programowania, który powinien spełniać kryteria: 1. Open source, statyczny i w pełni zorientowany obiektowo. 2. Musi mieć framework sieciowy, ponieważ jest przeznaczony do tworzenia stron internetowych. 3. Chcę całkowicie uniknąć oracle jvm, a więc nie scala, clojure. 4. Powinna być dość popularna, tj. mieć rzeczywiste zastosowania w przemyśle. Proszę polecić, jakiego dobrego języka mogę używać? Dziękuję.


title: Czy można łączyć języki programowania?

text: Programuję już od jakiegoś czasu, napisałem kilka podstawowych programów i chcę się dalej uczyć. Dotarłem do punktu, w którym po prostu nie wiesz, czego się dalej uczyć, i chciałbym zadać pytanie z własnej ciekawości. Pytanie, w skrócie, czy można połączyć wiele języków programowania w jeden wynik? Na przykład, czy ten kod jest możliwy? <html> cout << "Witaj świecie!"; </html> lub import java.util.Scanner; cout << "Wstaw liczbę od 1 do 10"; Skaner n = nowy skaner(System.in); System.out.println("Wprowadzona wartość to" +n.newLine()); To wydaje się głupie pytanie, ale nie mogę wiedzieć, czy jest to możliwe, czy nie, więc dlatego o to pytam. W tym pytaniu zauważam, że używa kodu Pythona w kodzie html, jeśli mój powyższy przykład nie jest możliwy, co zrobił?


title: Co to jest „zwarcie” w C?

text: Słyszałem, że termin „zwarcie” jest używany w C. Co to oznacza iw jakim scenariuszu będzie używany?


title: Jak usunąć nadmiarowość danych w tabeli?

text: F1 F2 F3 C1 C2 C3 -------------------------------------------- ---- A B C 1 D E F 2 A B C 3 D E F 4 A B C 5 D E F 6 Mam taki stół. potrzebuję, aby moja tabela była wolna od nadmiarowości danych F1 F2 F3 C1 C2 C3 ----------------------- A B C 1 3 5 D E F 2 4 6 i nie jestem w stanie wymyślić zoptymalizowanej logiki. czy ktoś może mi pomóc.?


title: dane przechowywane w dbase (wynik aplikacji dd.mm.rrrr)

text: Mam plik .dbf (dbase) z danymi typu „data” do odczytu bezpośrednio przez php. Mam wynik aplikacji (format: dd.mm.rrrr) i zapisany kod szesnastkowy. Nie mogę zinterpretować danych szesnastkowych, aby uzyskać te same lub podobne wyniki do aplikacji. Który algorytm jest używany do uzyskania tych wyników? Przykłady: app.result=baza danych.hex; 01.01.1000=17 3C 68; 02.01.1000=17 3C 69; 01.02.1000=17 3D 08; 01.01.2000=2E 7C 50; 01.01.1903=2C 58 6F; Czy ktoś może mi pomóc?


title: Licencja, która przyznaje pierwotnemu autorowi wszystkie prawa do utworu pochodnego/zmodyfikowanego?

text: _Proszę zauważyć, że nie chcę się spierać o moralny aspekt tego pytania. Wiem, że prawdopodobnie jest wiele różnych obaw._ Szukałem specjalnej licencji, której można by użyć w następującym scenariuszu, ale bez powodzenia: Załóżmy, że mam oprogramowanie i chcę wydać jego kod źródłowy, aby inni może też z niego korzystać. Ponieważ nie chcę, aby inni wprowadzali zmiany i trzymali je zamknięte, mogę uzyskać GPL. Ale o to chodzi: nawet jeśli czerpię korzyści ze zmian, które robią inni. Mogę ponownie licencjonować tylko mój kod, ponieważ nie posiadam praw autorskich do żadnego kodu, który nie został przeze mnie stworzony. Ale chciałbym. Chcę wiedzieć, czy istnieje gotowa do użycia licencja, która da mi (pierwotnemu autorowi) prawo do ponownego licencjonowania wszelkich zmian lub kodu dodanego przez innych. Albo jeszcze krócej: GPL, która się dla mnie nie liczy. Jeśli jesteś zainteresowany, dlaczego tego potrzebuję: nie wiem, czy kiedykolwiek użyję mojego oprogramowania do komercyjnego produktu. Prawdopodobnie nie, ale jeśli po prostu użyję GPL, mogę znaleźć się w sytuacji, w której nie będę mógł usunąć żadnego innego kodu, ponieważ jest zbyt wielu commiterów.


title: Czy warto mieć certyfikaty?

text: Niedługo kończę studia z programowania i zgłębiam kolejne kroki, aby podjąć dalszą karierę. Jedną z opcji, którą rozważałem, jest uzyskanie certyfikatu lub serii certyfikatów w obszarze rozwoju, w którym chcę pracować. Czy te certyfikaty są warte czasu i pieniędzy? Czy pracodawcy przywiązują do nich dużą wartość?


title: Czy kursy certyfikacyjne są tego warte?

text: Planuję uzyskać certyfikat w zakresie tworzenia baz danych dla SQL Server (MSTC - 70-433). Jestem młodszym autorem raportów w nowej pracy, a firma oferuje większość, jeśli nie całość, opłat za szkolenie. Kurs trwa pięć dni. Zauważyłem, że stwardnienie rozsiane ma zestaw do samodzielnego treningu (książkę), z którego mógłbym skorzystać. Zastanawiam się, czy nie byłaby to lepsza opcja, ponieważ pozwoli mi jechać tak szybko, jak to możliwe. Słyszałem też o sesjach treningowych wideo (Lynda.com), ale wydaje się, że idą one w wolnym tempie. Moje pytania to: 1. Czego powinienem oczekiwać na kursie certyfikacyjnym? Czy to szkolenie praktyczne? Małe klasy z osobistą informacją zwrotną czy nie? 2. Czy lepiej byłoby uczyć się we własnym tempie, korzystając z zestawu treningowego? (Wolałbym, żeby to nie zamieniło się w certyfikaty to bezsensowna dyskusja..)


title: Czy certyfikat programistyczny czegoś mnie nauczy?

text: Mam 16 lat i ze względu na to, że przez całą moją karierę akademicką trafiałem do przyspieszonych programów, właśnie skończyłem szkołę średnią w okresie wakacyjnym. Od około roku uczę się tworzenia stron internetowych (a dokładniej front-end) i chcę rozpocząć karierę w tej dziedzinie. Mam w kolejce na lato staż front-endowy (w niektórych miejscach chyba nie ma ich przez cały rok), ale chcę kontynuować naukę pomiędzy tymi dwoma okresami. Dokładniej, chcę nauczyć się programowania po stronie serwera, aby lepiej zrozumieć połączenie między front-endem a back-endem. Moje pytanie brzmi: czy udział w programie certyfikacji programowania w moim lokalnym college'u czegoś mnie nauczy, czy też informacje są zbyt nieaktualne, aby miały jakiekolwiek znaczenie? PHP jest językiem po stronie serwera ujętym w certyfikacie (obejmuje również JS i CSS). Czuję się tak, jakby podczas samokształcenia pominąłem niektóre podstawy JavaScript i naprawdę chciałbym mieć solidne zrozumienie języka zarówno z perspektywy składniowej, jak i filozoficznej (tj. Zrozumienie zalet, wad itp.). Edycja: buduję portfolio i rozważam całkowite pominięcie studiów. Chcę to zrobić tylko dla samodoskonalenia.


title: Certyfikaty programistyczne

text: > **Możliwy duplikat:** > Czy certyfikaty są tego warte? Chętnie poznam Twoje opinie na temat tego, które certyfikaty programistyczne są najbardziej rozpoznawalne w branży i jak bardzo są przydatne. Dużo wygooglowałem to pytanie, ale nigdy tutaj nie zadawałem i chciałbym zebrać jak najwięcej opinii przed złożeniem wniosku o jakiekolwiek. Interesuję się głównie tworzeniem aplikacji biznesowych. Posiadam wiedzę w Java, SQL, PHP, trochę C#. Z góry dziękuję!


title: Jakie są inne certyfikaty poza Cisco i Microsoft, które przywiązują wagę do CV?

text: > **Możliwy duplikat:** > Czy certyfikaty są tego warte? Chcę wiedzieć, jakie są te certyfikaty, które mogą bardziej pomóc w zwiększeniu szans na pracę. Chociaż doświadczenie jest ważniejsze niż certyfikaty, ale jeśli jest powiązane doświadczenie, certyfikaty mogą mieć znaczenie


title: Czy certyfikaty firmy Microsoft mają znaczenie?

text: > **Możliwy duplikat:** > Czy certyfikaty są tego warte? Jestem ciekaw, jakie doświadczenia mieli inni, zarówno z perspektywy pracodawcy, jak i pracownika na Certyfikatach Microsoft. Siedzę w tej sprawie na płocie. Mam tendencję do cynicznego spojrzenia na ludzi, którzy mają ogromną liczbę liter po ich nazwisku i czasami myślę, że te certyfikaty są tak specjalistyczne, że dowodzą, że kandydat wie „prawie wszystko o prawie niczym”. Głęboko specjalistyczna wiedza nie zawsze jest potrzebna w realnym świecie, zwłaszcza jeśli oznacza to całkowitą ignorancję powiązanych tematów. Nikt tu nie musi "To nie moja specjalność - musimy zatrudnić innego faceta do zespołu" bardzo często. Z drugiej strony, każdy wie, jak łatwo jest zrobić BS poprzez rozmowę kwalifikacyjną i nikt nie chce doświadczenia zatrudniania pracownika i dowiadywania się po dwóch tygodniach, że tak naprawdę nie rozumie tego, czego potrzebujesz.


title: Proces certyfikacji Java: dobry czy zły pomysł

text: > **Możliwy duplikat:** > Czy certyfikaty są tego warte? Zamierzam zająć się bardziej programowaniem w języku Java po tym, jak zostałem rzucony na projekt, który wymagał programowania w języku Java przez miesiąc i pomyślnie go wyeliminował. Nadal czuję, że przydałoby mi się trochę bardziej dopracowane w Javie i pomyślałem, że certyfikaty mogą być dobrym rozwiązaniem. Chciałbym być certyfikowanym w JPA, Java Web services i Java Frontend development (chyba JSF lub Spring MVC lub coś takiego). Ja też chciałbym być kiedyś architektem. Mam kilka pytań dotyczących najlepszego sposobu uzyskania certyfikatu. Moje pierwsze pytanie dotyczy samego procesu certyfikacji Java: 1) Czy istnieje podstawowy certyfikat, który musiałbym uzyskać przed wyjazdem i uzyskaniem certyfikatu w zakresie JPA, usług internetowych, programowania front-endowego i certyfikacji architekta? 2) Czy uważasz, że certyfikacja to w ogóle dobry pomysł? Czy znasz pracodawców, którzy daliby komuś nogę, gdyby powiedział, że pracował tylko nad jednym lub dwoma projektami Java EE, ale ma certyfikat lub dwa? 3) Czy to dobry krok z punktu widzenia rozwoju kariery? Czy skupianie się tylko na rozwoju ogranicza mnie do piwnic niektórych firm deweloperskich? Jak mogę zwiększyć swoją wartość jako aktywa biznesowe? Masz jakieś inne przemyślenia na temat certyfikatów i ich wartości biznesowej?


title: Jak cenne są certyfikaty językowe na poziomie mistrzowskim, takie jak arcymistrz C++?

text: Rozumiem, że standardowe certyfikaty programistyczne/komputerowe pokazują, że posiadasz podstawowe kompetencje w zakresie określonego języka lub technologii. Wydaje się, że jest tu trochę miejsca na zróżnicowanie, ale w większości nie wydaje mi się, abym widział zbyt wiele certyfikatów na poziomie „eksperckim”. Jak cenne są certyfikaty językowe na poziomie mistrzowskim, takie jak niedawny Grandmaster C++? Czy uważasz, że miałyby duży wpływ na zdobycie dobrej pracy? (Rozumiem, że arcymistrz C++ jest naprawdę ekstremalnym, może nierealistycznym przykładem.) Jeśli tak, jakie wartościowe certyfikaty poziomu „master” lub „ekspert” istnieją dla określonych języków programowania? Czy certyfikaty są bardziej wartościowe dla wykazania podstawowych kompetencji lub konkretnej wiedzy specjalistycznej? Nie mam zbyt dużej wiedzy na ten temat, więc daj mi znać, jeśli zrobiłem złe przypuszczenia.


title: Czy certyfikat SEI jest cokolwiek wart?

text: Mowa o certyfikacie SEI Software Architecture Professional. Zajmuję się tworzeniem stron internetowych od 3 lat i chciałbym przejść do architektury oprogramowania. Moja praca prawdopodobnie pokryje opłaty za ten program, jeśli wystarczająco ładnie poproszę. Ale czy SEI ma reputację, która sprawia, że warto mieć ten „certyfikat”? Co ważniejsze, czy szkolenie jest dobre? Czy ktoś to zrobił?


title: Jakie certyfikaty będą potrzebne architektowi Java?

text: Jestem starszym programistą pracującym w prywatnej firmie. Chcę zostać Architektem Oprogramowania po stronie Java. Czy możesz mi powiedzieć, jakie certyfikaty są związane z moim scenariuszem?


title: Czy powinienem skupić się na uzyskaniu certyfikatu?

text: Jestem absolwentem informatyki i aktualnie szukam pracy. Więc mam teraz tytuł magistra i licencjata w dziedzinie informatyki stosowanej. Ludzie mówili zdobądź kwalifikacje zawodowe od razu, podczas gdy inni mówili „nie teraz”. Naprawdę nie jestem pewien, co w tej chwili o nich myśleć, ktoś powiedział mi, że są źli, ponieważ sprawia to, że wyglądasz, jakbyś nie był otwarty na rozwój w innych środowiskach. Na przykład, gdybym miał uzyskać certyfikat MS, pracodawcy mogliby pomyśleć, że jestem bezużyteczny poza środowiskiem Microsoft. Czy certyfikaty są warte swojej ceny? Czy naprawdę powinienem je zdobyć teraz, niedługo po ukończeniu studiów, czy poczekać, aż zdobędę trochę doświadczenia w świecie pracy?


title: Czy certyfikacja CakePHP jest tego warta?

text: Mam ponad 5 lat doświadczenia w technologiach webowych – głównie stos LAMP – i ponad 2 lata we frameworku CakePHP. Rozważam certyfikację CakePHP, czy warto?


title: Jeśli jesteś programistą .NET, czy uzyskanie certyfikatu Microsoft Certified Master SQL Server 2008 ma sens?

text: Tak więc przez ostatni rok pracowałem w pracy jako programista .NET/DBA. Ta praca to moja pierwsza praca DBA. Tradycyjnie jestem programistą .NET i mam w tym około 5 lat doświadczenia. Czy ma sens kontynuowanie moich certyfikatów, aby uzyskać MCM (zakładając, że się kwalifikuję)? Myślę, że tak nie jest, ponieważ pracuję z SQL Server od 5 lat, ale tylko jako DBA od roku. Czy pomogłoby to programiście mieć to? A może przydaje się tylko przy przełączaniu? Zainteresowałem się SQL Server, ponieważ czułem, że w czasie recesji ludzie coraz częściej szukali programistów, którzy mogliby dodać wartość do całego stosu. Teraz nie jestem taki pewien...


title: Czy certyfikacja cloudera hadoop jest warta inwestycji?

text: Rozważam zainwestowanie czasu w naukę Hadoopa i związanych z nim technologii. Problem polega na tym, że w mojej obecnej pracy w najbliższym czasie nie będę używał Hadoop i nawet jeśli będę się uczyć z książek, blogów, osobistych projektów, nie będę miał wiele do zrobienia, kiedy rzeczywiście będę musiał pokazać, że mam doświadczenie z Hadoop. Kontynuując więc pracę chciałbym zainwestować we własne szkolenia i myślę o certyfikacji Hadoop od cloudera. Co o tym myślisz? Proszę odpowiedzieć ze swojej perspektywy (jeśli ukończyłeś kurs certyfikacyjny i szkoleniowy lub jesteś na rynku zatrudniania nowych programistów hadoop i czego szukasz) Jestem pewien, że nie ma skrótu do zostania ekspertem w zakresie Hadoop, ale certyfikacja i szkolenie wydaje się, że to dobry początek.


title: Przemyślenia na temat certyfikatów Agile/Scrum – czy warto?

text: Osoby zaangażowane w społeczność Agile (zarówno jako programiści, jak i zarządcy) prawdopodobnie wszyscy słyszeli o oznaczeniu Certified ScrumMaster, a także Certified Product Owner i Certified Scrum Developer. Być może słyszeliście również o nowej „Certyfikacji Agile” PMI (Project Management Institute). Czy Agile (jako filozofia) nie polega na otwarciu się na nowsze i (ewentualnie) bardziej efektywne metody rozwoju? Czy potrzebny jest certyfikat potwierdzający „umiejętności”? Jaki jest najlepszy powód, aby uzyskać certyfikat Agile?


title: Podstawowa różnica między fn() i new fn() w javascript

text: Czym we wszystkich aspektach różni się wywołanie funkcji z i bez nowego słowa kluczowego w javascript? Mam na myśli czym wszystkie rzeczy się różnią? `testFn()` a `nowe testFn()`


title: Tworzenie bardzo prostego kompilatora przy użyciu Java

text: Chcę spróbować stworzyć swój własny, bardzo prosty język, z bardzo prostym kompilatorem. Wszystko za pomocą Javy. Na razie wystarczy tylko umożliwić programiście drukowanie rzeczy na ekranie. Miałem pomysł, jak to zrobić, i chciałem wiedzieć: czy będzie to uważane za rzeczywisty „kompilator”, rzeczywisty „język” i rzeczywistą „maszynę wirtualną”? (Oczywiście wszystko bardzo, bardzo podstawowe). Moim pomysłem było stworzenie programu, który będzie pełnił rolę 'IDE' (edytora i kompilatora), a drugiego, który będzie pełnić rolę 'maszyny wirtualnej'. Oznacza to, że IDE nie skompiluje napisanego kodu do jakiegoś istniejącego kodu maszynowego, takiego jak Java Bytecode, ale faktycznie skompiluje do pewnego rodzaju skompilowanego kodu stworzonego przeze mnie. Ten skompilowany kod będzie zrozumiały tylko dla mojego programu „maszyny wirtualnej” i będzie mógł działać tylko wewnątrz tego programu. Program „maszyny wirtualnej” będzie używał operacji Java wysokiego poziomu w celu zrozumienia i wykonania skompilowanego kodu. Program „maszyny wirtualnej” będzie programem w języku Java uruchomionym na maszynie JVM. Moje pytanie brzmi: **Koncepcyjnie**, czy jest to maszyna wirtualna i „kod maszynowy”? Jeśli nie, czy jest to nadal uważane za „język programowania”, mimo że skompilowany kod bajtowy może działać tylko w określonym programie?


title: Jak ćwiczyć programowanie?

text: Jestem programistą PHP od 5 lat. Zanim zacząłem pracować w tej dziedzinie, ćwiczyłem w domu. Stworzyłem własny CMS, dzięki czemu mogłem faktycznie pokazać część mojego kodu potencjalnemu pracodawcy. W ostatecznej wersji miał około 2000 linijek kodu i nikt oprócz mnie nie używał go. Ale tak nie było, ponieważ wiele się nauczyłem podczas tego projektu. Ostatnio zdecydowałem się pójść do przodu i porzucić tworzenie stron internetowych na rzecz programowania w C/C++. Przeczytałem kilka polecanych książek o stackoverflow, przejrzałem podręcznik glibc i rozwiązałem kilka problemów związanych z Projektem Eurler zgodnie z poradami. Teraz czas zacząć jakiś projekt, ale nic nie wymyślę. Jaki jest następny krok, który powinienem zrobić?


title: Symulowanie zwinnego rozwoju oprogramowania

text: Poszukiwanie przewodnika lub przykładu, w którym facylitator grupy przeprowadza grupę przez zwinny cykl tworzenia oprogramowania, odgrywając rolę zarówno moderatora wydarzenia, jak i kluczowego interesariusza lub właściciela projektu.


title: jakie ograniczenie napotkamy, jeśli każdy widziany przez użytkownika znak zostanie przypisany do jednego punktu kodowego?

text: Cześć wszystkim Zastanawiałem się, jakie ograniczenia mielibyśmy, gdyby Unicode zdecydował się przypisać jeden i tylko jeden punkt kodowy do każdego znaku postrzeganego przez użytkownika? Obecnie Unicode ma punkty kodowe, które odpowiadają łączeniu znaków. Takie znaki łączą się z poprzednim punktem kodowym (lub jego sekwencją), aby przedstawić użytkownikowi to, co wydaje się być pojedynczym znakiem. Z tego co widzę, obecny standard jest pełen zawiłości. Nawet jeśli staram się uniknąć jakichkolwiek komplikacji, używając kodowania takiego jak UTF-32, ten problem nadal **nie ustępuje**. To wcale nie jest problem z kodowaniem. Na przykład w Unicode, gdy klaster grafemów jest reprezentowany wewnętrznie przez sekwencję znaków składającą się ze znaku podstawowego + akcentu, to gdy użytkownik kliknie przycisk `>`, aby przejść do następnego znaku widzianego przez użytkownika, musieliśmy przejść od początku znaku bazowego do końca ostatniego znaku klastra. Dlaczego to musi być takie trudne? Dlaczego nie możemy przypisać pojedynczego punktu kodowego do każdego znaku postrzeganego przez użytkownika, tak że przejście do znaku postrzeganego przez użytkownika jest po prostu kwestią odczytania następnego punktu kodowego? Witryna unicode zdaje się potwierdzać tę złożoność (chociaż nie mogłem zrozumieć, co jest tak rzadkie w konieczności obliczania liczby znaków postrzeganych przez użytkownika w ciągu): > W tych ** stosunkowo rzadkich okolicznościach, w których programiści muszą dostaw > użytkowników końcowych z liczbą znaków postrzeganą przez użytkownika** , liczby te powinny > odpowiadać liczbie segmentów oddzielonych klastrami grafemów. > Klastry grafów mogą być również używane w wyszukiwaniu i dopasowywaniu znaków diakrytycznych, które są również powodem, dla którego rzeczy nie działają zgodnie z oczekiwaniami. Na przykład, jeśli wrzucę 2 ピ znaków (japoński katakana PI przy użyciu reprezentacji Unicode `U+30d2 U+309a`) do konstruktora ciągów i odwrócę go, naturalnie oczekiwałbym, że wynik będzie miał 2 ピ znaków (tj. ピピ), ale daje nieprawidłowe wyjście ゚ピヒ ! **Gdyby Unicode przypisywał indywidualne punkty kodowe dla każdego znaku postrzeganego przez użytkownika i odrzucał ideę klastrów grafemowych, to w ogóle by się nie stało.** Chciałbym wiedzieć, co dokładnie jest nie tak z reprezentowaniem każdego użytkownika -postrzegany znak jako jeden punkt kodowy Unicode? Czy jest prawdopodobne, że spowoduje to przekroczenie możliwych punktów kodowych U + 10FFFF (jeśli przekroczy punkty kodowe U + 10FFFF, nie widzę powodu, dla którego nie mogliby ustawić limitu na 2 ^ 32 w pierwszej kolejności), nawet gdy jest tak dużo wolnego miejsca, aby objąć całą rodzinę języków elfów? Unicode stwierdza: > Jeśli chcesz, na przykład, nadać każdemu „wystąpieniu znaku na papierze > w historii” własny kod, możesz potrzebować bilionów lub kwadrylionów > takich kodów; Ale poważnie, to w ogóle nie ma sensu. Gdzie jest źródło takiego roszczenia? Bilion kodów to przesadne stwierdzenie.


title: Nowość w rozwoju iPhone'a - iOS5 Storyboard

text: Jestem tu nowy i całkiem nowy w programowaniu iOS. Moje pytanie brzmi w zasadzie, czy powinienem nauczyć się metod rozwoju starej szkoły, czy po prostu nauczyć się robić rzeczy za pomocą najnowszych narzędzi (np. Storyboard)? Wypróbowałem funkcję Storyboard w XCode 4.2 i jest ona bardzo potężna. Moim jedynym zmartwieniem jest to, że wymaga iOS 5. Nie mam nic przeciwko uczeniu się starego sposobu robienia rzeczy, ale mam problem ze znalezieniem samouczków/przykładów dla XCode 4.2, które nie używają scenorysu. Przykładem może być mój problem ze znalezieniem dobrego samouczka, jak osadzić kontroler nawigacji w TabBarController. Wiele materiałów wydaje się dotyczyć starszej wersji XCode. Korzystając ze scenorysu, jestem w stanie ustawić to w kilka sekund, ale nadal nie udało mi się go uruchomić bez niego. Krótko mówiąc :) czy sugerowalibyście, abym kontynuował mój projekt za pomocą Storyboardu, czy też dołożyłby dodatkowego wysiłku, aby robić rzeczy trochę bardziej ręcznie?


title: Certyfikaty dla programistów Javascript?

text: Szukam solidnego i szybkiego wpisu w dziedzinie tworzenia javascript. Przychodzą mi do głowy następujące tematy: * Zaawansowane koncepcje Javascript, OOP * jQuery, jQuery-UI, jQuery-Mobile * backbone.js * node.js * BDD i/lub TDD Kursy http://www.codelesson.com wydają się obiecujące. Jakie certyfikaty dla programistów Javascript istnieją/mogą być polecane? Jakich innych dostawców możesz polecić?


title: Niestandardowe alokatory stosu

text: Większość programów może dość swobodnie podchodzić do alokacji sterty, nawet do tego stopnia, że funkcjonalne języki programowania wolą alokować nowe obiekty niż modyfikować stare i pozwolić garbage collectorowi martwić się o zwalnianie rzeczy. Jednak w programowaniu osadzonym cichym sektorze jest wiele aplikacji, w których nie można w ogóle użyć alokacji sterty ze względu na pamięć i twarde ograniczenia czasu rzeczywistego; liczba obsługiwanych obiektów każdego typu jest częścią specyfikacji i wszystko jest przydzielane statycznie. Programowanie gier (przynajmniej w tych grach, które ambitnie podchodzą do sprzętu) czasami znajduje się pomiędzy: możesz użyć dynamicznej alokacji, ale jest wystarczająco dużo pamięci i miękkich ograniczeń w czasie rzeczywistym, że nie możesz traktować alokatora jako czarnej skrzynki , nie mówiąc już o używaniu garbage collection, więc musisz użyć niestandardowych alokatorów. Jest to jeden z powodów, dla których C++ jest nadal szeroko stosowany w branży gier; pozwala robić takie rzeczy jak http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html Jakie inne domeny znajdują się na tym terytorium pośrednim? Gdzie, poza grami, często używane są niestandardowe alokatory?


title: Czy ten rodzaj Design by Contract jest bezużyteczny?

text: Właśnie rozpocząłem studia informatyczne i chodzę na kurs programowania z C(++). Profesor programowania woli łączyć każdy temat z rodzajem projektu programowania, który jest podobny do Design by Contract. Zasadniczo prosi nas o napisanie każdego ćwiczenia z komentarzami, które oznaczają warunek wstępny, warunek końcowy i niezmienniki, które powinny udowodnić poprawność każdego napisanego przez nas programu. Ale to nie ma dla mnie sensu. Może zapisywanie myśli zapobiega popełnieniu pewnych błędów, ale jeśli to wszystko jest abstrakcją, to jeśli twoja intuicja programowa jest niewłaściwa, napiszesz swój program niepoprawnie, a następnie napiszesz złe warunki pre i post. W końcu przekonasz się, że zły program może być rzeczywiście poprawny. Miałem pewne doświadczenie w programowaniu przed tym kursem i czułem się komfortowo pisząc program i testując go jednostkowo. Zajmuje mniej czasu i jest mniej „abstrakcyjny” niż samo myślenie o tym, co każdy element twojego programu powinien zrobić w każdym przypadku (co jest trochę jak mentalne testowanie go). Ostatecznie określenie warunków pre i post zajmuje mi około 80% całkowitego czasu ćwiczeń. Trudniej jest myśleć o poprawnym napisaniu tego pre i post, niż o napisaniu samego programu. Czy mam rację sądząc, że praca z warunkami wstępnymi, warunkami końcowymi i niezmiennikami nie jest nic warta? Czy powinienem się przekonać, że ta metoda jest słuszna?


title: Projektowanie rozwiązania multitechnologicznego

text: Próbuję rozwiązać problem z ponownym użyciem komponentów. Mam kilka składników interfejsu użytkownika (mieszanka JS, CSS i HTML), które nie są specyficzne dla żadnej aplikacji. Te składniki interfejsu użytkownika muszą być w stanie być używane w wielu aplikacjach. Jedna to aplikacja RoR, druga to aplikacja ASP.NET MVC. Jak mogę utrzymywać te komponenty (np. z kontrolą wersji, dystrybucją) i nadal udostępniać je różnym platformom, które muszą je wykorzystywać? Na przykład ApplicationA i ApplicationB używają UIComponentA, który nie jest natywnie częścią ich projektów lub repozytoriów, ponieważ UIComponentA znajduje się we własnym repozytorium. W jaki sposób te projekty mogą uzyskać potrzebne zależności, jednocześnie zachowując składniki wielokrotnego użytku i hostowane we własnej lokalizacji? Czy ktoś ma doświadczenie w podobnej sytuacji, a jeśli tak, to jak sobie z tym poradziłeś? Jeśli potrzebujesz więcej informacji, nie wahaj się zapytać, zaktualizuję to pytanie.


title: Kiedy i jak używać wyjątków (w Pythonie)?

text: # Ustawienie Często mam problem z określeniem, kiedy i jak używać wyjątków. Rozważmy prosty przykład: załóżmy, że przeglądam stronę internetową, powiedz „http://www.abevigoda.com/”, aby ustalić, czy Abe Vigoda nadal żyje. Aby to zrobić, wystarczy pobrać stronę i poszukać czasów, w których pojawia się fraza „Abe Vigoda”. Zwracamy pierwszy występ, ponieważ obejmuje on status Abe. Koncepcyjnie będzie to wyglądać tak: def get_abe_status(url): # pobierz stronę page = download_page(url) # pobierz wszystkie wzmianki o Abe Vigoda hits = page.find_all_mentions("Abe Vigoda") # przeanalizuj pierwsze trafienie pod kątem jego statusu status = parse_abe_status(hits[0]) # żyje lub nie żyje return status == "żyje" Gdzie `parse_abe_status(s)` przyjmuje ciąg znaków w postaci "Abe Vigoda to _coś_" i zwraca część " _coś_ ". Zanim zaczniesz argumentować, że istnieją o wiele lepsze i bardziej niezawodne sposoby przeszukiwania tej strony pod kątem statusu Abe, pamiętaj, że jest to tylko prosty i wymyślny przykład użyty do podkreślenia typowej sytuacji, w której się znajduję. Teraz, gdzie ten kod może napotkać problemy? Wśród innych błędów, niektóre "oczekiwane" to: * `download_page` może nie być w stanie pobrać strony i zgłasza `IOError`. * Adres URL może nie wskazywać właściwej strony lub strona została pobrana nieprawidłowo, więc nie ma trafień. `hits` jest więc pustą listą. * Strona internetowa została zmieniona, co może spowodować, że nasze założenia dotyczące strony są błędne. Być może spodziewamy się 4 wzmianek o Abe Vigoda, ale teraz znajdujemy 5. * Z pewnych powodów `hits[0]` może nie być ciągiem w postaci "Abe Vigoda to _coś_", więc nie może być poprawnie przeanalizowany. Pierwszy przypadek tak naprawdę nie stanowi dla mnie problemu: zgłaszany jest `IOError` i może być obsłużony przez wywołującego moją funkcję. Zastanówmy się więc nad innymi przypadkami i jak mogę sobie z nimi poradzić. Ale najpierw załóżmy, że implementujemy `parse_abe_status` w najgłupszy możliwy sposób: def parse_abe_status(s): return s[13:] Mianowicie, nie sprawdza on żadnych błędów. Teraz przejdźmy do opcji: ## Opcja 1: Zwróć `Brak` Mogę powiedzieć dzwoniącemu, że coś poszło nie tak, zwracając `Brak`: def get_abe_status(url): # pobierz stronę strony = download_page(url) # pobierz wszystko wzmianki o Abe Vigoda hits = page.find_all_mentions("Abe Vigoda") if not hits: return Brak # przeanalizuj pierwsze trafienie pod kątem jego statusu status = parse_abe_status(hits[0]) # albo żyje, albo nie żyje return status == "żywy " Jeśli dzwoniący otrzyma `Brak` z mojej funkcji, powinien założyć, że nie było żadnych wzmianek o Abe Vigodzie, więc _coś_ poszło nie tak. Ale to dość niejasne, prawda? I to nie pomaga w przypadku, gdy `hits[0]` nie jest tym, o czym myśleliśmy. Z drugiej strony możemy dodać kilka wyjątków: ## Opcja 2: Używanie wyjątków Jeśli `hits` jest puste, `IndexError` zostanie zgłoszony, gdy spróbujemy `hits[0]`. Ale nie należy oczekiwać, że wołający obsłuży `IndexError` zgłoszony przez moją funkcję, ponieważ nie ma pojęcia, skąd wziął się ten `IndexError`; z tego co wie, mogło to zostać rzucone przez `find_all_mentions`. Stworzymy więc niestandardową klasę wyjątku, aby obsłużyć to: class NotFoundError(Exception): """Zrzuć to, gdy czegoś nie można znaleźć na stronie.""" def get_abe_status(url): # pobierz stronę strony = download_page(url) # pobierz wszystkie wzmianki o Abe Vigoda hits = page.find_all_mentions("Abe Vigoda") try: hits[0] z wyjątkiem IndexError: raise NotFoundError("Nie znaleziono wzmianek.") # przeanalizuj pierwsze trafienie pod kątem jego statusu = parse_abe_status(hits[0]) # albo żyje, albo nie żyje zwraca status == "żyje" Co teraz, jeśli strona się zmieniła i jest nieoczekiwana liczba trafień? Nie jest to katastrofalne, ponieważ kod może nadal działać, ale osoba wywołująca może chcieć być _bardzo_ ostrożna lub może chcieć zarejestrować ostrzeżenie. Wyślę więc ostrzeżenie: class NotFoundError(Exception): """Wyrzuć to, gdy czegoś nie można znaleźć na stronie.""" def get_abe_status(url): # pobierz stronę strony = download_page(url) # pobierz wszystkie wzmianki o Abe Vigoda hits = page.find_all_mentions("Abe Vigoda") try: hits[0] z wyjątkiem IndexError: raise NotFoundError("Nie znaleziono wzmianek.") # powiedzmy, że spodziewamy się czterech trafień... if len(hits) != 4: raise Warning("Nieoczekiwana liczba trafień.") logger.warning("Nieoczekiwana liczba trafień.") # przeanalizuj pierwsze trafienie pod kątem jego statusu = parse_abe_status(hits[0]) # albo żyje or dead return status == "alive" Na koniec możemy stwierdzić, że `status` nie jest ani żywy, ani martwy. Może, z jakiegoś dziwnego powodu, dzisiaj okazało się, że jest w „śpiączce”. Wtedy nie chcę zwracać „Fałsz”, ponieważ oznacza to, że Abe nie żyje. Co powinienem tutaj zrobić? Prawdopodobnie zrzuć wyjątek. Ale jakiego rodzaju? Czy powinienem utworzyć niestandardową klasę wyjątków? class NotFoundError(Exception): """Wyrzuć to, gdy czegoś nie można znaleźć na stronie.""" def get_abe_status(url): # pobierz stronę strony = download_page(url) # pobierz wszystkie wzmianki o Abe Vigoda hits = page.find_all_mentions("Abe Vigoda") try: hits[0] z wyjątkiem IndexError: raise NotFoundError("Nie znaleziono wzmianek.") # powiedzmy, że spodziewamy się czterech trafień... if len(hits) != 4: raise Warning(" Nieoczekiwana liczba trafień.") logger.warning("Nieoczekiwana liczba trafień.") # przeanalizuj pierwsze trafienie pod kątem jego statusu status = parse_abe_status(hits[0]) if status not in ['alive', 'dead' ]: raise SomeTypeOfError("Status jest nieoczekiwaną wartością.") # albo jest żywy, albo martwy, zwraca status == "żywy" ## Opcja 3: Gdzieś pomiędzy uważam, że druga metoda, z wyjątkami, jest lepsza, ale ja nie jestem su ponownie, jeśli poprawnie używam wyjątków. Jestem ciekaw, jak poradzą sobie z tym bardziej doświadczeni programiści.


title: Odniesienia do statystycznej kontroli jakości oprogramowania

text: Szukam referencji na temat testowania hipotez w zarządzaniu oprogramowaniem. Na przykład możemy się zastanawiać, czy „crunch time” prowadzi do wzrostu wskaźnika defektów – jest to zaskakująco trudna rzecz do zrobienia. Jest wiele pytań dotyczących mierzenia jakości - nie o to pytam. Są też książki takie jak Kan, które omawiają różne wskaźniki jakości i ich użyteczność. O to też nie pytam. Chcę wiedzieć, jak zastosować te wskaźniki do podejmowania decyzji. Np. przypuśćmy, że decydujemy się na błędy krytyczne / KLOC. Jednym z problemów, z jakim będziemy musieli się zmierzyć, jest to, że nie jest to normalnie dystrybuowany zestaw danych (prawie wszystkie łatki mają zero błędów krytycznych). Co więcej, nie jest jasne, czy naprawdę chcemy zbadać różnicę w środkach. Jaka więc powinna być nasza alternatywna hipoteza? (Uwaga: Na podstawie poprzednich pytań domyślam się, że otrzymam wiele odpowiedzi mówiących mi, że to zły pomysł. W porządku, ale prosiłbym, aby było to oparte na opublikowanych danych, a nie na własnym doświadczeniu. )


title: Jak wygląda implementacja .NET string.Split(char[], StringSplitOptions) od wewnątrz?

text: Czyli gdybyśmy mieli zobaczyć, jak Microsoft napisał tę metodę, jak by ona wyglądała? Interesuje mnie głównie użycie wyliczenia StringSplitOptions z innym parametrem i to, jak prawdopodobnie ustrukturyzowali swój kod, aby uwzględnić każdą opcję.


title: Czy ktoś dokładnie porównał wspólne standardy kodowania C#?

text: Większość znanych mi programistów C# przyjmuje jeden ze wspólnych standardów kodowania. Jednak świadomość standardów to jedno, a mówienie o różnicach to drugie. Przeglądając wspólne dokumenty dotyczące standardów kodowania w języku C#, moją pierwszą reakcją było to, że jest bardziej podobny. Trzeba przyznać, że nie zawracałem sobie głowy czytaniem wszystkiego. Czy ktoś kiedykolwiek je porównał i zwrócił uwagę na **główne** różnice między nimi? * **Wytyczne projektowe firmy Microsoft dotyczące opracowywania bibliotek klas** * **Standard kodowania IDesign C#, wytyczne dotyczące programowania i najlepsze praktyki** * **Standardy kodowania C# firmy Lance Hunt**


title: Dobre kwalifikacje branżowe, do których należy dążyć do uzyskania dyplomu?

text: Jestem całkiem niedawnym absolwentem i pracuję od ponad roku w tworzeniu oprogramowania. Chciałbym umieścić w swoim CV kilka profesjonalnie uznanych egzaminów. Obecnie szukam certyfikowanego programisty Java z Oracle. Ale czy są jakieś inne, które by dobrze wyglądały i ludzie poleciliby?


title: "PHP: Good Parts" - książka / odniesienie

text: Zanim zetknąłem się z Javascriptem, przeczytałem znakomitą książkę „Javascript: The Good Parts” Douglasa Crockforda. Liczyłem na coś podobnego w przypadku PHP. Moją pierwszą myślą była ta książka: "PHP: The Good Parts" O'Reilly. Jednak po przeczytaniu recenzji wydaje mi się, że zupełnie mija się z celem. Szukam zasobu, który: * skoncentruje się na znanych niedociągnięciach PHP, * poda konkretne przykłady, * będzie jak najbardziej wyczerpujący. Już widzę, że coś może pójść nie tak. **Badania:** Przejrzałem SO i Programistów w poszukiwaniu materiałów. Oczywiście znalazłem to pytanie: http://stackoverflow.com/questions/90924/what-is-the-best-php-programming-book To ogólne, moje jest konkretne. Co więcej, czytam teraz najlepszą rekomendację "Obiekty PHP, wzorce i praktyka". Uważam, że jest to niewystarczające – nie odnosi się do złych praktyk tak bardzo, jak bym tego chciał. **Motywacja:** Nie _nie lubię_ PHP. Nie jestem jeszcze na tyle kompetentny, żeby naprawdę to stwierdzić. Jednak za 3 miesiące rozpocznę pracę, która prawdopodobnie będzie wiązała się z dużym rozwojem w tym języku. Naprawdę nie wiem, jakiej jakości będzie ten kod. Nie chcę też być facetem, który wprowadza wszystkie złe praktyki, a potem uczy się wszystkiego na własnej skórze. Próbuję dowiedzieć się o tylu pułapkach, ile tylko mogę. W przypadku Javascript wykłady Crockforda naprawdę służyły jako światło przewodnie. Bez nich nigdy nie czułbym się pewnie w Javascript.


title: Ukryte standardy sieciowe za „niestandardowymi wyszukiwarkami” Google?

text: Dzisiaj podczas zabawy z Google Chrome Omnibox zauważam dziwne zachowanie. Wydaje mi się, że kryje się za tym jakiś „ukryty” standard sieciowy, ale nie mogę tego rozgryźć. Oto jak odtworzyć: 1. Przejdź do http://edition.cnn.com/ 2. Użyj funkcji wyszukiwania w prawym górnym rogu, Wyszukaj losowe słowo kluczowe, na przykład: „abc” 3. Zamknij zakładki. 4. Otwórz nową kartę, pisz, aż Chrome przypomni Ci o http://edition.cnn.com/, a następnie naciśnij „Tab” 5. Omnibox pokazuje teraz „Search CNN.com”! A kiedy wpiszesz „abc” i naciśniesz Enter, do wykonania zadania użyje funkcji wyszukiwania CNN, a nie Google! Próbowałem go również na kilku różnych stronach. Dla niektórych to nie zadziała. Ale w przypadku niektórych witryn, takich jak CNN, vnexpress.net, działa po skorzystaniu z funkcji wyszukiwania tej witryny. Dowiedziałem się również o `chrome://settings/searchEngines` (wpisz to w polu chrome, a zobaczysz) i dowiedziałem się, że możesz dodać własną wyszukiwarkę w chrome. Ale pytanie brzmi, dlaczego Chrome może automatycznie realizować adres URL wyszukiwania na niektórych stronach, a na innych nie? Nie dzieje się tak dlatego, że jakaś witryna subskrybuje usługę Google, ponieważ mogę zastosować tę samą metodę dla mojej witryny (http://ledohoanglong.wordpress.com) i jestem pewien, że nie ma subskrypcji. Sądzę więc, że istnieje metoda „ujawniania” funkcji wyszukiwania witryny, aby Google Chrome mógł ją przechwycić (po jednokrotnym wywołaniu funkcji wyszukiwania tej witryny, oczywiście). Czy ktoś wie, jak to działa za kulisami?


title: Montaż w pracy naukowej

text: Robię pracę naukową na temat programowania i muszę jakoś wyjaśnić asembler... Nigdy nie uczyłem się języka, ale rozumiem do czego służy i trochę jak to wygląda... MOV A,47 ADD A ,B HALT I z tego co rozumiem służy do pisania niektórych kompilatorów, małych kawałków kodu, które muszą być naprawdę szybkie i innych zadań... Ale to jest pytanie dla osób, które używały / studiowały asembler i rozumiem to dość dobrze. I nie, nie proszę o przepisanie dla mnie tego fragmentu artykułu naukowego. To byłoby samolubne. Potrzebuję tylko krótkiego wyjaśnienia, wyjaśnienia na ten temat (po prostu nie jestem pewien, czy to, co wiem, jest prawdą, czy nie) i wskazówki we właściwym kierunku. Dla artykułu badawczego (muszę to wyjaśnić BARDZO prosto...) jaki jest cel używania Zgromadzenia w dzisiejszym społeczeństwie? Oczywiście było to kiedyś ważne, ale teraz, przy wszystkich językach wysokiego poziomu, kiedy jest używany ten język niskiego poziomu?


title: Dlaczego branża gier jest tak surowa dla programistów?

text: W hackernews i /r/programming słyszałem kilka raportów o tym, jak przemysł gier jest niesamowicie surowy dla programistów. Ktoś na tej stronie również zamieścił link do tego wpisu na blogu w odpowiedzi, którą ostatnio czytałem. Według różnych raportów programiści w branży gier są mocno przepracowani. Może nie w przypadku pracy w małych firmach zajmujących się grami, ale zdecydowanie w miejscach takich jak EA (miejsce omówione w poście na blogu). Więc moje pytanie brzmi: dlaczego? Jestem programistą w dużej firmie networkingowej, czasami pracuję ponad 8 godzin dziennie, ale nie marzyłbym o pracy 12 godzin dziennie przez 6 dni w tygodniu, jak opisuje post na blogu. Zrezygnowałem i ruszyłem dalej bez namysłu. Dlaczego właśnie branża gier ma ten problem?


title: Jaki jest sens nawigacji po wielbłądach?

text: Często używam CTRL+ do przeskakiwania między tokenami w kodzie (znaki `_ są punktami nawigacji): _fooBar _+ _barFoo_; Niektóre edytory, takie jak ten w obecnej wersji QtCreator, mają (domyślnie lub opcjonalnie) nawigację w postaci wielbłąda, która wygląda następująco: _foo_Bar _+ _bar_Foo_; Jakie jest uzasadnienie tego? Pamiętam, jak niektórzy ludzie w szkole mówili „cool” i „fancy”, ale czy to cała historia? Nie wydaje mi się, żeby to było fajne, uważam to za bardzo irytujące.


title: Różnice między projektem kontraktowym a programowaniem obronnym

text: Czy Designing by Contract (DbC) może być sposobem na programowanie defensywne? Czy w niektórych przypadkach jeden sposób programowania jest lepszy od drugiego?


title: Czy sieci CDN (takie jak MSFT i Google) działają na nagłówku strony odsyłającej wysyłanej przez klientów?

text: Czy moja witryna zostanie automatycznie zaindeksowana lub czy wpłynie to na ranking wyszukiwania w zależności od korzystania (lub nieużywania) usługi CDN Google/MSFT? Moi klienci będą wysyłać im nagłówek strony odsyłającej, który mogę, ale nie chcę, uwzględniać w wynikach wyszukiwania.


title: Spring MVC a surowe serwlety i silnik szablonów?

text: > **Możliwy duplikat:** > Dlaczego nie Spring? Przeczytałem wiele artykułów o frameworku Spring MVC i nadal nie widzę korzyści z jego używania. Wygląda na to, że napisanie nawet prostej aplikacji za jego pomocą wymaga stworzenia dużej mieszanki plików XML i adnotacji oraz innych ryz kodu, aby dostosować się do tego, czego chce framework, całej masy ruchomych części do wykonania prostego pojedynczego zadania. Za każdym razem, gdy patrzę na przykład Springa, widzę, jak mogę napisać coś o tej samej funkcjonalności za pomocą prostego serwletu i silnika szablonów (np. FreeMarker, StringTemplate), w połowie linii kodu i niewielkiej lub żadnej plików XML i innych artefaktów . Wystarczy pobrać dane z sesji i żądania, w razie potrzeby wywołać obiekty domeny aplikacji, przekazać wyniki do silnika szablonów w celu wygenerowania wynikowej strony internetowej i gotowe. czego mi brakuje? Czy możesz opisać chociaż jeden przykład czegoś, co jest w rzeczywistości prostsze dzięki Springowi niż użycie kombinacji surowych serwletów z silnikiem szablonów? A może Spring MVC to tylko jedna z tych nadmiernie skomplikowanych rzeczy, których ludzie używają tylko dlatego, że ich szef każe im go używać? **EDYTUJ** : Przydałby się skrócony, konkretny opis. Na przykład: „Użyłem Spring MVC do zbudowania aplikacji obsługującej XYZ, a jego funkcja Q uchroniła mnie przed koniecznością wykonywania dodatkowej pracy A, B i C, która byłaby konieczna w przypadku surowych serwletów i silnika szablonów”. Samo wspomnienie marketingowych modnych słów, takich jak „wstrzykiwanie zależności”, niczego nie wyjaśnia.


title: Najlepsze sposoby na sprzedaż zarządzania korzyściami płynącymi z oprogramowania Open Source?

text: Pracowałem w kilku miejscach, w których używanie oprogramowania Open Source w produkowanych przez nich produktach jest surowo zabronione z różnych powodów, takich jak: * brak formalnego wsparcia * brak zaufania do czegoś postrzeganego jako „właśnie ściągnięte z internetu” * Jak mogę profesjonalnie, jeśli nie jest wspierany, nie płacimy za to itp. itd. Szukam najlepszych sposobów, aby przekonać/udowodnić zarządowi, że nic się nie rozpadnie, jeśli użyjemy tych narzędzi.


title: Jaki jest najlepszy sposób oceny nowych programistów?

text: Jaki jest najlepszy sposób oceny najlepszych kandydatów do nowej pracy (mówiąc jedynie o umiejętnościach programistycznych)? W mojej firmie mieliśmy wiele złych doświadczeń z ludźmi, którzy mają dobre oceny, ale nie mają prawdziwych umiejętności programistycznych. Ich umiejętności są niczym małpy kodujące, bez możliwości analizowania problemów i znajdowania rozwiązań. Więcej rzeczy, na które muszę zwrócić uwagę: * System edukacji w moim kraju jest do bani – naprawdę do bani. Ludzie, którzy są dobrzy w tego rodzaju pracy, są dobrzy, ponieważ mają do tego talent lub naprawdę starają się uczyć na własną rękę. * Uczelnia/absolwent/stopień podyplomowy niekoniecznie oznacza, że wiesz dokładnie, jak to robić. *Certyfikaty również nic tu nie znaczą, ponieważ osoby odpowiedzialne za kurs certyfikacyjny również nie mają umiejętności (lub mają nisko płatną pracę). Naprawdę potrzebujemy dobrych kandydatów, którzy są elastyczni i nie myślą mechanicznie (ponieważ tego typu ludzie z doświadczenia mają niską wydajność). Jesteśmy w instytucji rządowej i osoby, które są kandydatami, niekoniecznie pochodzą z zewnątrz, ale mamy możliwość przyjęcia lub nie przyjęcia żadnego kandydata, dopóki nie znajdziemy właściwego. Mam nadzieję, że moje pytanie nie brzmi zbyt agresywnie; a przy okazji sam jestem programistą. _**edytuj:_** Doszedłem do wniosku, że zadałem tutaj coś bardzo złożonego. ~~Wyłączę opcję "prawidłowa odpowiedź" tylko po to, aby dyskusja przebiegała płynnie, bez żadnych uprzedzeń.~~


title: Jeśli chodzi o języki silnie typizowane z późnym wiązaniem, czy mają sens?

text: Nigdy nie dowiedziałem się niczego o VB6 (i nie chcę), ale chciałem szukać złych rzeczy w oprogramowaniu komputerowym, więc moją pierwszą myślą było VB6. Na przykład VB6 było silnie typowane z późnym wiązaniem. Czy ma sens posiadanie języka z taką kombinacją? (Nie sądzę). Chcę poznać powody, dla których VB6 było takie! lub dlaczego jest to dobry pomysł na taki język. Złe rzeczy, które wydarzyły się z takim językiem? dobre rzeczy?


title: Jakie oprogramowanie służy do pisania wymagań funkcjonalnych i niefunkcjonalnych?

text: Czy istnieje oprogramowanie, które można wykorzystać do pisania wymagań funkcjonalnych i niefunkcjonalnych? Podczas ich pisania ważne jest, aby: * Przechowywać dokument w formacie tekstowym, aby móc tworzyć różnice i minimalizować wpływ na kontrolę wersji, * Stosować rozbudowane formatowanie podczas tworzenia diagramów byłoby przesadą, * Używać diagramów, najlepiej przechowywanych w również w formacie tekstowym, * Połącz wymagania lub załączniki. Obecnie mogę pomyśleć tylko o trzech edytorach, których _można_ używać, ale które nie są tak naprawdę odpowiednie: 1. **Edytor Markdown.** Korzyści: tylko tekst; łatwe dodawanie formatowania. Wada: niewystarczająca moc: można dodawać obrazy, ale nie diagramy; formatowanie jest raczej ograniczone; bez crosslinkingu (chyba że dodasz dużo znaczników HTML). 2. **Edytor HTML.** Korzyści: tylko tekst; możliwość dodawania diagramów w HTML 5. Możliwe jest zaawansowane formatowanie. Wady: znaczniki trudne do ręcznej zmiany lub jeśli używany jest edytor WYSIWYG, znaczniki są często zbyt szczegółowe i niskiej jakości; sieciowanie ograniczone tylko do ręcznego. 3. **Edytor dokumentów, taki jak OpenOffice lub Microsoft Word.** Korzyści: możliwość zastosowania zaawansowanego formatowania; doskonałe zautomatyzowane sieciowanie. Wady: format binarny, co oznacza brak różnic i marnowanie miejsca na kontrolę wersji. Jakie mam inne możliwości? Co jest faktycznie używane w branży?


title: Czy zachowujesz takie same nazwy kodowe projektów w drzewie źródłowym?

text: Czasami, kiedy zaczynam pracę nad projektem, po prostu nie mogę wymyślić dobrego imienia lub dobrego imienia, które nie jest jeszcze zajęte. W rezultacie wybiorę jakąś nazwę kodową dla projektu. Moje pytanie brzmi, jak radzisz sobie ze zmianami nazw w kodzie źródłowym, gdy znajdziesz prawdziwą nazwę dla swojego projektu? Czy powinieneś nadal odwoływać się do nazwy kodu w drzewie źródłowym, przestrzeniach nazw, plikach binarnych itp.?


title: Sposoby na zapewnienie unikalnych instancji klasy?

text: Szukam różnych sposobów, aby zapewnić, że każda instancja danej klasy jest instancją jednoznacznie identyfikowalną. Na przykład mam klasę `Nazwa` z polem `Nazwa`. Kiedy już mam obiekt `Name` z `name` zainicjalizowany do John Smith Nie chcę mieć możliwości tworzenia instancji innego obiektu `Name` również o nazwie jako John Smith, lub jeśli instancja ma miejsce, chcę referencji do oryginalnego obiektu, który ma zostać przekazany z powrotem, a nie do nowego obiektu. Zdaję sobie sprawę, że jednym ze sposobów na zrobienie tego jest posiadanie statycznej fabryki, która przechowuje `Mapę` wszystkich bieżących obiektów Name, a fabryka sprawdza, czy obiekt o nazwie John Smith jako nazwa nie istnieje przed przekazaniem z powrotem odwołanie do obiektu `Nazwa`. Innym sposobem, o którym mógłbym pomyśleć, jest posiadanie statycznej mapy w klasie `Name` i gdy konstruktor jest wywoływany, rzuca wyjątek, jeśli wartość przekazana dla `name` jest już używana w innym obiekcie, jednak Zdaję sobie sprawę, że rzucanie wyjątków w konstruktorze jest ogólnie złym pomysłem. Czy istnieją inne sposoby osiągnięcia tego?


title: Niezależność powłoki w grupach programistycznych

text: Nasze środowisko programistyczne jest zależne od ustawionych pewnych zmiennych środowiskowych. Na przykład, aby użyć distcc, należy zdefiniować zmienną środowiskową `DISTCC_HOSTS`. Sposób, w jaki sobie z tym radzimy, zmusza każdego programistę do `źródła` globalnego pliku `tcshrc` po wywołaniu nowej powłoki. Globalny plik `tcshrc` zawiera instrukcje do ustawiania zmiennych środowiskowych (między innymi). Jest to jednak strasznie dyskryminujące, ponieważ każdy programista jest zmuszony do używania `tcsh`, ponieważ ustawienie zmiennej środowiskowej jest różne w zależności od powłoki. Najbardziej oczywistym rozwiązaniem tego problemu jest posiadanie odpowiednich globalnych plików `bashrc` i `zshrc`, ale to oczywiście staje się kłopotliwe, ponieważ teraz musimy utrzymywać trzy różne pliki zawierające tę samą logikę. Czy są jakieś czyste rozwiązania, aby rozwiązać tego rodzaju sytuację?


title: Czy kontrolki innych firm i MVC są przekleństwem?

text: Na http://www.codeproject.com/Articles/552846/Why-s-How-s-of-Asp-Net-MVC-Part-1 przeczytałem to: „Nie powinieneś używać Asp.Net MVC, jeśli polegać na kontrolach zewnętrznych dostawców dla interfejsu użytkownika." Autor nie wydaje się mówić dlaczego (może wyjaśnienie jest zbyt subtelne, albo jestem zbyt gęsty). Myśli? Czy to prawda? Dlaczego miałoby to być?


title: Dlaczego publiczne aplikacje internetowe nie używają plików ini do konfiguracji?

text: Prawie każdy publiczny CMS używa pliku konfiguracyjnego .php dla ustawień bazy danych i tak dalej. Na przykład WordPress automatycznie tworzy plik konfiguracyjny .php podczas instalacji. Dlaczego po prostu nie używają pliku .ini? PHP ma już parse_ini_file() i jestem pewien, że inne języki mają podobne funkcje.


title: Jak określić skuteczność procesu przeglądu kodu?

text: Wprowadziliśmy w naszej organizacji proces przeglądu kodu i wygląda na to, że działa on dobrze. Chciałbym jednak móc mierzyć skuteczność procesu w czasie, tj. czy nie znajdujemy błędów, ponieważ kod jest czysty, czy ludzie po prostu nie wychwytują błędów? Obecnie nie mamy skutecznego w pełni zautomatyzowanego procesu testowania. Stosujemy głównie testy ręczne, więc nie możemy polegać na defektach wykrytych na tym etapie, aby upewnić się, że proces przeglądu kodu działa. Czy ktoś wcześniej natknął się na ten problem lub ma jakieś przemyślenia na temat tego, co sprawdza się w pomiarach recenzji kodu?


title: Dlaczego powinienem preferować kompozycję od dziedziczenia?

text: Zawsze czytam, że kompozycja ma być lepsza od dziedziczenia. Na przykład wpis na blogu o odmiennych umysłach opowiada się za stosowaniem kompozycji zamiast dziedziczenia, ale nie widzę, jak osiąga się polimorfizm. Ale mam wrażenie, że kiedy ludzie mówią, że wolą kompozycję, tak naprawdę mają na myśli połączenie kompozycji i implementacji interfejsu. Jak uzyskasz polimorfizm bez dziedziczenia? Oto konkretny przykład, w którym używam dziedziczenia. Jak zmieniłoby się to na użycie kompozycji i co bym zyskał? Kształt klasy { nazwa ciągu; public: void pobierzNazwę(); wirtualna pustka draw()=0; } Class Circle: public Shape { void rysuj(/*rysuj okrąg*/); }


title: Deklarowanie nazwy pola zaczynającej się od podkreślenia

text: Przed utworzeniem klasy w Javie lub innych językach programowania obsługujących OOP, powinienem użyć podkreślenia (_) w każdej deklaracji pola ( **local** lub **private** ). Dokładniej: > private String _nazwa klienta; Czy to poprawna deklaracja?


title: Jak naprawić „pojawiający się” błąd?

text: Piszę solver PDE i mam błąd, który pojawia się tylko w bardzo dużych przypadkach testowych. Oznacza to, że w przypadku małych siatek program podaje poprawne odpowiedzi, ale występuje duża ilość nieuwzględnionych błędów (uwzględniłem zaokrąglanie, dyskretyzację i inne standardowe rodzaje błędów, które nieuchronnie występują), które wkradają się, gdy moje przypadki testowe się pojawiają. do zakresu od dni do końca. Nie mogę uruchomić tego w debuggerze, to zajęłoby tygodnie. A drukowanie wyników pośrednich nie jest szczególnie przydatne, biorąc pod uwagę, że nie mogę ręcznie sprawdzić wyników, aby zobaczyć, co jest nie tak. **Jak mogę znaleźć i naprawić ten „pojawny” błąd?**


title: Łączenie z biblioteką DLL z licencją MIT

text: Obecnie pracuję nad oprogramowaniem własnościowym o zamkniętym kodzie źródłowym, które wykorzystuje bibliotekę ( **SharpAVI** ) dystrybuowaną na licencji MIT. Źródło SharpAVI _nie_ jest używane bezpośrednio nigdzie w moim projekcie, jedynie niezmieniony plik .dll udostępniony do pobrania na stronie codeplex, do której link znajduje się powyżej. Plik .dll jest przywoływany w jednym bardzo małym, odrębnym projekcie wewnątrz znacznie większego rozwiązania (składającego się z pojedynczej klasy otoki wokół funkcjonalności zapewnianej przez SharpAVI). Jestem szczególnie zaniepokojony następującym sformułowaniem: > Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu powinny być dołączone do > wszystkich kopii lub istotnych części Oprogramowania. Czy licencja musi być zawarta w pliku z kodem _my_, który jest połączony z licencjonowanym kodem przez .dll i nie zawiera żadnego oryginalnego źródła? Czy to sprawi, że mój kod opakowania będzie produktem licencjonowanym przez MIT (co wydaje się sprzeczne z niewirusowym charakterem licencji)? Jeśli moje opakowanie musi zostać objęte licencją na Licencję MIT, czy nie rozprzestrzeniłoby się to również na inny kod, który się do niej odwołuje? **Jak prawidłowo przypisać informacje licencyjne dla połączonego pliku .dll na licencji MIT bez wydawania własnego kodu na licencji MIT?**


title: Dlaczego tablice C nie mogą mieć długości 0?

text: Standard C11 mówi, że tablice, zarówno o rozmiarze, jak io zmiennej długości, „powinny mieć wartość większą od zera”. Jakie jest uzasadnienie nie dopuszczenia długości 0? Zwłaszcza w przypadku tablic o zmiennej długości ma sens, aby co jakiś czas mieć rozmiar równy zero. Jest to również przydatne w przypadku tablic statycznych, gdy ich rozmiar pochodzi z makra lub opcji konfiguracji kompilacji. Co ciekawe, GCC (i clang) udostępnia rozszerzenia, które pozwalają na tablice o zerowej długości. Java pozwala również na tablice o długości zero.


title: Dobre zasoby i narzędzia do nowoczesnego, ciężkiego programowania w języku JavaScript?

text: Jestem zainteresowany wykonaniem projektów, które wymagają intensywnego użycia JavaScript. Mianowicie gry na kanwie oparte na HTML5, potencjalnie wykorzystujące również node.js. Interesuje mnie poznawanie nowoczesnych najlepszych praktyk, narzędzi i zasobów dla JavaScript. JavaScript jest trudny do zbadania, ponieważ w końcu przedzierasz się przez wiele naprawdę przestarzałych materiałów, pochodzących z czasów, kiedy "JavaScript" był czteroliterowym słowem. Jeśli jesteś mocno zaangażowany w programowanie JavaScript... * Jakiego edytora tekstu lub IDE używasz? * Jakiej struktury testów jednostkowych używasz? * Czy używasz selenu, czy czegoś innego? * Jakich innych narzędzi używasz? * Jakie istnieją społeczności, które omawiają ostatnie nadejścia w JavaScript? * Jakie książki czytasz/do których się odwołujesz? * Jakie blogi czytasz?


title: Czy istnieje książka do nauki JavaScript -> DOM -> jQuery?

text: > **Możliwy duplikat:** > Jak ważny jest javascript i jak najlepiej się go nauczyć? Chciałbym nauczyć się języka JavaScript, modelu DOM i jQuery. Znalazłem wiele rekomendacji książek dla każdego przedmiotu, ale zastanawiam się, czy istnieje jedna książka, która uczy kolejno trzech przedmiotów i ich wzajemnego związku. Dzięki za jakąkolwiek radę.


title: Sugestia Projektu dla sieci komputerowych przy użyciu C#

text: Poszukuję propozycji projektu w sieciach komputerowych z wykorzystaniem C# jako narzędzia programistycznego, w ramach prowadzonego przeze mnie kursu uniwersyteckiego. Projekt powinien trwać około miesiąca, angażując dwie osoby. Chętnie wysłucham wszystkich ciekawych pomysłów.


title: Ruby on Rails Development: aktualizacja atrybutu modelu przy użyciu kolekcji f.association

text: Obecnie pracuję nad programem szynowym. Zawiera wiele różnych baz danych, ale dla uproszczenia mam tabelę ludzi, studentów i wykładowców. Osoba może być studentem lub członkiem wydziału i tam wszyscy są powiązani przez person_id. Członek wydziału doradza studentom, aby student był połączony z członkiem wydziału przez identyfikator wydziału. Aby utworzyć studenta, musisz wybrać specjalizację i członka wydziału (faculty_id). Ponieważ wszyscy studenci i wykładowcy to ludzie.. w moim menu rozwijanym musiałem użyć <div> <%= f.input :faculty_id %> <%= f.association :person, label: "Advisor", label_method: : to_label , value_method: :id, include_blank: false, collection: Person.where("role_id=?", @role.id)%> </div> aby ograniczyć liczbę osób z listy tylko do członków wydziału. Ale problem, na który teraz natrafiam, polega na tym, jak ustawić atrybut faculty_id ucznia z wybraną wartością kolekcji skojarzeń?


title: Jak pisać testy na Selenium (lub podobne), które nie zawodzą z powodu drobnych lub kosmetycznych zmian?

text: Ostatni tydzień spędziłem na nauce selenu i tworzeniu serii testów internetowych dla strony, którą zamierzamy uruchomić. to było wspaniałe do nauczenia, i nauczyłem się kilku technik lokalizacji xpath i css. dla mnie problemem jest jednak to, że małe zmiany łamią testy – każda zmiana numeru div, identyfikatora lub jakiegoś numeru autoidu, który pomaga identyfikować widżety, psuje dowolną liczbę testów – wydaje się to po prostu bardzo kruche. więc czy napisałeś testy na selen (lub inne podobne) i jak radzisz sobie z kruchą naturą testów (lub jak zapobiegasz ich kruchości) i do jakiego rodzaju testów używasz selenu?


title: Czy programowanie OO naprawdę jest tak ważne, jak stawiają go firmy zatrudniające?

text: Właśnie kończę studia magisterskie (w informatyce) i staram się o pracę. Zauważyłem, że wiele firm konkretnie prosi o zrozumienie orientacji obiektowej. Popularne pytania podczas wywiadów dotyczą dziedziczenia, polimorfizmu, akcesorów itp. Czy OO naprawdę jest tak ważne? Miałem nawet rozmowę kwalifikacyjną do pracy programistycznej w C, a połowa rozmowy była OO. Czy w prawdziwym świecie, podczas tworzenia rzeczywistych aplikacji, orientacja obiektowa jest prawie zawsze używana? Czy kluczowe cechy, takie jak polimorfizm, są DUŻO używane? Myślę, że moje pytanie wynika z jednej z moich słabości. Chociaż wiem o OO, wydaje mi się, że nie jestem w stanie włączyć go zbyt wiele do swoich programów.


title: Jak zaangażować ludzi w swój projekt?

text: Mam wiele pomysłów na projekty i niestety wszystkie wymagają zespołu co najmniej 3-5 programistów. Zacząłem sam projekt zbyt wiele razy, nie dochodząc do końca. Chodzi o to, aby zaangażować ludzi w projekt z nadzieją, że dadzą im udział, jeśli projekt się powiedzie. Wiem, że ostatni punkt jest jednak najtrudniejszy i najbardziej skomplikowany. Mam nadzieję, że uzyskam kilka odpowiedzi, które wskażą mi właściwy kierunek. 1. Gdzie znajdę osoby, które mogą być zainteresowane pomysłem? 2. Jak przekonać ludzi w mojej sieci, aby poświęcili czas na nowe pomysły? **Aktualizacja:** Odnośnie „projektów” mam na myśli projekty, w których rozpocząłem swoją karierę jako programista. Oczywiście niepoważnie byłoby uruchamiać kilka jednoczesnych projektów i narzekać, że nie jestem w stanie dostarczyć ich do końca.


title: Jak mogę rozplanować tę klasę, aby była łatwiejsza w użyciu dla programistów API?

text: Mam aplikację, która pozwala użytkownikowi umieścić ciąg tekstu w dokumencie PDF. Mogę to zrobić na trzy różne sposoby: 1. **Użyj pola formularza.** Następnie mają cztery właściwości do zdefiniowania: 1. Podaj nazwę pola 2. Podaj instancję pola 3. Podaj przesunięcie osi X 4. podaj przesunięcie osi Y 2. **Wyszukaj ciąg tekstu.** Następnie mają cztery właściwości do zdefiniowania: 1. Podaj ciąg tekstu do wyszukania 2. podaj instancję tego ciągu tekstu 3. podaj Przesunięcie osi X 4. Podaj przesunięcie osi Y 3. **Zdefiniuj współrzędne strony.** Następnie mają trzy właściwości do zdefiniowania: 1. Podaj numer strony 2. Podaj przesunięcie osi X 3. Podaj Y- Przesunięcie osi W moim API chcę, aby obiekt był ustawiony intuicyjnie, aby było jasne, że wybierają jedną z trzech różnych metod, a następnie, niezależnie od tego, którą wybiorą, mają opcje dla każdej z nich. W moim starym interfejsie API wszystkie te opcje są pogrupowane razem jako lista właściwości, takich jak: Placement.FormField_FieldName Placement.FormField_Instance Placement.SearchText_Text Placement.SearchText_Instance Placement.PageCoordinates_PageNumber Placement.XOffset Placement.YOffset Uważam, że jest to trochę mylące programista korzystający z interfejsu API, ponieważ nigdy nie można użyć wszystkich właściwości razem. Możesz użyć **Pola formularza** w następujący sposób: Placement myPlacement = new Placement(); myPlacement.FormField_FieldName = "MyPdfFormFieldName"; mojeMiejsce.FormField_Instance = ; mojeMiejsce.PrzesunięcieX = 0; mojeMiejsce.YPrzesunięcie = 0; Możesz też użyć **Wyszukiwania tekstowego** w następujący sposób: Placement myPlacement = new Placement(); myPlacement.SearchText_Text = "Mój ciąg tekstu"; mojeMiejsce.FormField_Instance = 1; mojeMiejsce.PrzesunięcieX = 0; mojeMiejsce.YPrzesunięcie = 0; Możesz też użyć **Współrzędnych strony** w następujący sposób: Placement myPlacement = new Placement(); mojeMiejsce.PageCoordinates_PageNumber = 1; mojeMiejsce.PrzesunięcieX = 0; mojeMiejsce.YPrzesunięcie = 0; Czy istnieje lepszy sposób na skonfigurowanie klasy (lub klas podrzędnych), aby ułatwić programiście zrozumienie, jak korzystać z tej funkcjonalności?