title: Szybkie wyszukiwanie hierarchii organizacji

text: Potrzebuję sposobu na zaimplementowanie algorytmu/systemu szybkiego wyszukiwania, aby bardzo szybko znaleźć użytkowników w wielopoziomowym dziale i wielopoziomowej strukturze organizacji relacji pracownik/menedżer. Działy mogą mieć dowolny poziom działów i użytkowników bezpośrednio połączonych z działami. Użytkownik jest połączony z działami i innymi użytkownikami w tym samym czasie. Jakie byłoby najlepsze podejście do wdrożenia takiego systemu? Będzie około 2000 użytkowników i 30 działów. Czy istnieje dobry sposób na przechowywanie wszystkich tych informacji w pamięci?


title: Czy istnieje oficjalny standard dotyczący praktyk przechowywania haseł użytkowników?

text: Niedawno korzystałem z usługi rządowej, do której miałem konto sprzed lat. Nie pamiętałem hasła do usługi, więc użyłem linku „zapomniałem hasła” i byłem zdumiony, widząc, że ta rządowa witryna wysłała moje hasło na mój adres e-mail w postaci zwykłego tekstu. Osobiście wiem, jak obchodzić się z hasłami użytkowników, i wysłałem kilka komentarzy dotyczących moich obaw za pośrednictwem formularza opinii (jest to witryna rządowa. Ludzie korzystają z innych internetowych usług rządowych, które zajmują się poufnymi informacjami, a także informuję o tym, że większość ludzi używa tego samego hasła lub kilku haseł do wszystkiego (wiem, że to robię) i podejrzewam, że stosowane są te same praktyki bezpieczeństwa), na które otrzymałem szybką odpowiedź. Zapewnili mnie po prostu, że „Ministerstwo podjęło niezbędne kroki w celu ochrony informacji o hasłach, w tym przechowywanie ich z odpowiednim szyfrowaniem”. Chciałbym tylko powiedzieć „no cóż, oczywiście nie podjąłeś niezbędnych kroków, jeśli możesz wysłać mi moje hasło e-mailem”, ale nie staram się być niegrzeczny i nie sądzę, aby moja wiadomość kiedykolwiek była dotrzeć do kogoś, kto wie, o co mi chodzi. Więc chciałbym po prostu stwierdzić, że „nie zostały podjęte niezbędne kroki zgodnie z [pewnymi oficjalnymi standardami bezpieczeństwa]”, co może skłonić kogoś do przyjrzenia się temu. Przeszukałem szybko OWASP, ale znalazłem tylko artykuł dotyczący przechowywania zwykłego tekstu. Czy istnieje standard bezpieczeństwa dotyczący obsługi haseł użytkownika, który zabrania (jak sądzę, prawdopodobnie) przechowywania informacji o hasłach do odzyskania? Jeszcze lepiej: czy istnieje taki standard, którego _muszą_ przestrzegać strony internetowe zajmujące się informacjami wrażliwymi, takie jak banki i rządowe serwisy internetowe? Wiem, że prawdopodobnie nic nie zmienię, ale warto spróbować IMO.


title: Jak zmienia się myślenie o wzorcach projektowych i praktykach OOP w dynamicznych i słabo typowanych językach?

text: Jest już dość pomocne pytanie w tym zakresie („Wzorce projektowe nie-OOP?”), ale jestem bardziej ciekaw przejściowy punkt widzenia dla kogoś, kto dopiero zaczyna z dynamicznymi i słabo typowanymi językami. To znaczy: powiedzmy, że od wielu lat programuję w C++, C# lub Javie i chłonąłem mnóstwo mądrości na wzór wzorców projektowych GoF, _Wzorów architektury aplikacji korporacyjnych_ Fowlera, zasad SOLID itp. Teraz ja' m parał się Ruby, Pythonem, JavaScriptem itp. i zastanawiał się, w jaki sposób moja wiedza ma zastosowanie. Przypuszczalnie mógłbym w wielu przypadkach wykonywać bezpośrednie tłumaczenia, ale prawie na pewno nie oznaczałoby to pełnego wykorzystania mojego nowego ustawienia. Samo pisanie z kaczką wywraca do góry nogami moje myślenie oparte na interfejsie. Co pozostaje bez zmian? Jakie zmiany? Czy istnieją zasady przewodnie, takie jak SOLID, lub wzorce kanoniczne (być może zupełnie nowe), które powinien znać początkujący dynamiczny język?


title: Czy powinienem modyfikować jednostkę z wieloma parametrami, czy samą jednostką?

text: Mamy system oparty na SOA. Metody obsługi są takie jak: 1. `UpdateEntity(Entity entity)` Dla małych jednostek wszystko jest w porządku. Jednak gdy encje stają się coraz większe, aby zaktualizować jedną właściwość powinniśmy postępować zgodnie z następującym wzorcem w UI: 1. Pobierz parametry z UI (user) 2. Utwórz instancję Entity, używając tych parametrów 3. Pobierz encję z usługi 4 Napisz kod, aby wypełnić niezmienione właściwości 5. Przekaż encję wynikową do usługi Inną opcją, której doświadczyłem w poprzednich doświadczeniach, jest utworzenie semantycznych metod aktualizacji dla każdego scenariusza aktualizacji. Innymi słowy, zamiast jednej globalnej, wszechobejmującej metody aktualizacji, mieliśmy wiele metod parametrycznych ad hoc. Na przykład dla encji `User` zamiast metody `UpdateUser (użytkownik użytkownika)` mieliśmy następujące metody: 1. `ChangeUserPassword(int userId, string newPassword)`` 2. `AddEmailToUserAccount(int userId, string email) ` 3. `ChangeProfilePicture(int userId, Image image)` 4. ... Teraz nie wiem, która metoda jest naprawdę lepsza i przy każdym podejściu napotykamy problemy. Mam na myśli to, że zamierzam zaprojektować infrastrukturę dla nowego systemu i nie mam wystarczających powodów, aby wybrać którekolwiek z tych podejść. Nie mogłem znaleźć dobrych zasobów w Internecie z powodu braku słów kluczowych, które mogłem podać. Jakie podejście jest lepsze? Jakie pułapki ma każdy z nich? Jakie korzyści możemy uzyskać z każdego z nich?


title: Czy liczba całkowita powinna zostać podzielona przez zero i zatrzymać wykonanie?

text: Wiem, że współczesne języki obsługują dzielenie przez zero jako błąd, tak jak robi to sprzęt, ale co by było, gdybyśmy mogli zaprojektować zupełnie nowy język? Ignorując istniejący sprzęt, co _powinien_ robić język programowania, gdy następuje dzielenie liczby całkowitej przez zero? Czy powinien zwrócić NaN typu integer? A może powinien odzwierciedlać IEEE 754 float i zwracać +/- nieskończoność? A może istniejący wybór projektu jest prawidłowy i należy wyrzucić błąd? Czy istnieje język, który dobrze radzi sobie z dzieleniem liczb całkowitych przez zero? **EDYTUJ** Kiedy powiedziałem, że zignoruj istniejący sprzęt, mam na myśli, że nie zakładaj, że liczba całkowita jest reprezentowana jako 32 bity, może być reprezentowana w dowolny sposób, jaki możesz sobie wyobrazić.


title: W architekturze MVC, jak ściśle powiązane są model i widok z kontrolerem?

text: Mam aplikację, która używa MVC, ale mam problemy z architekturą kontrolera. Na przykład Widok wyświetla jednocześnie tylko pewien podzbiór danych modelu. Nie jestem jednak pewien, jak dokładnie powinno to zaaranżować. Czy to normalne, że widok lub model bezpośrednio wywołują funkcje na przykład kontrolera? Przez jakiś interfejs? A może są całkowicie zamknięte i nigdy nie wiedzą o kontrolerze ani o sobie nawzajem? Podobnie jak edycja; jest to niestandardowa aplikacja, która nie została napisana w żadnym frameworku internetowym, więc nie szukam tutaj szczegółów dotyczących struktury i mam swobodę dokonywania własnego wyboru.


title: Dlaczego nie używamy dynamicznego (generowanego po stronie serwera) CSS?

text: Ponieważ HTML generowany po stronie serwera jest trywialny (i był to jedyny sposób na tworzenie dynamicznych stron internetowych przed AJAX), ** CSS generowany po stronie serwera** nie jest. Właściwie nigdy tego nie widziałem. Istnieją kompilatory CSS, ale generują one pliki CSS, które mogą być używane jako statyczne. Technicznie rzecz biorąc, nie wymaga żadnych specjalnych bibliotek, tag HTML _style_ powinien odwoływać się do skryptu szablonu PHP(/ASP/cokolwiek) zamiast statycznego pliku CSS, a skrypt powinien wysyłać nagłówek CSS _content-type_ - to wszystko. Czy ma problemy z pamięcią podręczną? Nie sądzę. Skrypt powinien wysyłać nagłówki _no-cache_ itp. Czy to problem dla projektantów? Nie, powinni edytować szablon CSS (tak jak edytują szablon HTML). Dlaczego nie używamy dynamicznych generatorów CSS? Lub jeśli są, daj mi znać.


title: Jak rozmawiać z kierownictwem o korzystaniu ze zintegrowanego zarządzania projektami/śledzenia błędów?

text: **Tło:** Właśnie zacząłem pracę w nowym sklepie, w którym jest jeszcze jeden deweloper. Ten sklep nie był historycznie sklepem z oprogramowaniem, a proces tworzenia oprogramowania naprawdę to pokazuje. Niedawno zaczęli używać subversion (chociaż większość kodu nie znajduje się w repozytorium) i nie mają narzędzia do śledzenia błędów. Sprzedają oprogramowanie komputerowe, a ostatnio także mobilne urządzenia GPS z własnym oprogramowaniem. Wydaje się to nie do utrzymania. **Mój problem:** Mój menedżer wydaje się być skłonny do zainstalowania Traca i zintegrowania go z subversion. Poprosił mnie o napisanie propozycji dla właścicieli firmy na ten temat, aby uzasadnić, dlaczego mógłbym poświęcić swój cenny czas na majstrowanie przy instalacji Traca i dlaczego możemy zmienić proces rozwoju tak, aby zawierał formalne raporty o błędach i prośby o nowe funkcje. Próbowałem wymyślić powody, które mają znaczenie dla innych osób niż ja (np. nie: „Więc widzę całą historię o tym, dlaczego ktoś napisał ten teraz – zabugowany kod”) i jakby upadam. Nie jestem menedżerem i niewiele wiem o zarządzaniu rzeczami. Chcę tylko uniknąć bólu głowy związanego z kodowaniem na dzikim zachodzie. **Moje pytanie:** Jak (uprzejmie) powiedzieć menedżerom, że korzystanie z Traca leży w ich najlepszym interesie?


title: Czy zbyt dużo spacji to zła rzecz?

text: Moi znajomi i koledzy często mówią mi, że używam zbyt dużej ilości białych znaków. Chyba używam trochę _za_ dużo spacji. Często dodaję łamanie wiersza prawie po każdym wierszu i dużych blokach odstępu, często 3 lub 4 wiersze, ponieważ pomaga mi to zobaczyć, co napisałem i zrozumieć, co napisałem, gdy spojrzę na to później. Myślę też, że wygląda po prostu czyściej. Chociaż widzę dwa problemy z tym, 1) Może to zwiększyć rozmiar plików źródłowych, nawet łamanie wiersza co dwa lub trzy wiersze może się sumować w długim pliku. Wiem, że dobry kompilator zoptymalizuje wszystkie białe znaki (nie jestem pewien, myślę, że robi to LLVM/Clang), ale plik źródłowy jest nadal duży. 2) może to spowodować, że niektórzy pomyślą, że upiększam swój kod, aby wyglądał na dłuższy i „większy”, aby inni myśleli, że wykonuję więcej pracy niż w rzeczywistości (rozważmy 3000 linii vs. 6000 linii, 3000 to nowe wiersze). A tak przy okazji, tego nie robię. Czy używanie zbyt dużej ilości białych znaków jest złe z technicznego i/lub profesjonalnego punktu widzenia?


title: Jak mam wybrać model rozwoju cyklu życia?

text: Opierając się na tym pytaniu o alternatywy dla filozofii zwinnej oraz jej odpowiedziach i komentarzach, pomyślałem, że przydatne może być omówienie tego, co wpływa na decyzję o wyborze „metodologii” na początku projektu. Wydaje się, że konsensus jest taki, że jeśli to, co budujesz, wymaga dokładnych specyfikacji, wodospad jest sposobem na przejście na zwinne. Wydaje się, że pozostawia to OGROMNĄ przestrzeń do zwinnego rozwoju. Poza „w ten sposób sklep tworzy oprogramowanie” czy istnieją pytania lub „wskaźniki” na wczesnym etapie planowania, które mogą lepiej wskazywać, co może być najlepsze dla klienta/projektu? Podobnie jak w przypadku języków, pomysł jest najlepszym narzędziem do pracy, więc jako profesjonalni programiści, co robisz, aby upewnić się, że używasz właściwej metodologii programowania dla projektu, który masz zamiar rozpocząć? Czy to naprawdę jest tak proste i suche, jak „jeśli jest to projekt typu mostu lub reaktora jądrowego, użyj wodospadu, czy użyj zwinnego? Jestem samoukiem programistą pracującym dla firmy, która daje dużą elastyczność i pokładają we mnie duże zaufanie, więc to tego rodzaju pytanie jest dla mnie ważne.Chcę się upewnić, że podchodzę do mojej pracy/projektów w najbardziej efektywny kosztowo/czasowo sposób.


title: Czy powinienem używać różnych projektów do budowania różnych warstw w modelu 3-warstwowym?

text: Tworzę nowy projekt od podstaw i zdecydowałem się na model 3-warstwowy. Używam: * warstwy 1 dla podmiotów gospodarczych, * warstwy 2 dla logiki biznesowej, * warstwy 3 dla warstwy logiki danych. Czy muszę tworzyć różne projekty dla tych różnych warstw, czy też muszę tworzyć różne _foldery_ w jednym projekcie? Jakie są zalety i wady obu podejść?


title: Różnica między mutexem w systemie Windows a linux

text: Czy to prawda, że obiekt mutex w Linuksie nie może być użyty do synchronizacji między procesami, w przeciwieństwie do jego odpowiednika w Windows? Jeśli to prawda - jaki był pomysł ograniczenia funkcjonalności synchronizacji mutexów w Linuksie?


title: git w niedystrybuowanym, niezależnym, samotnym programowaniu ... najlepsze praktyki?

text: Obecnie studiuję dokumentację git, aby poznać przepływ pracy rozproszonej kontroli wersji i korzystać z wiersza poleceń git. Chcę najpierw zacząć używać git w małych, osobistych, domowych projektach, aby zdobyć doświadczenie przed zrobieniem tego na dużą skalę (tj. Większe projekty, team dev). Jakim obszarom systemu git powinienem, jako samotny gracz, poświęcić większość czasu na naukę… jakim częściom powinienem zostawić do dalszej pracy na większą skalę. Innymi słowy, jakie cechy systemu git będą w pełni uchwycone tylko w pracy zespołowej, a zatem nie należy się zbytnio angażować na poziomie indywidualnym?


Słyszałem o dzisiejszej decyzji Sądu Najwyższego w sprawie Microsoft przeciwko i4i, więc przeczytałem odpowiedni patent i byłem zaskoczony, że wydaje się, że po prostu trzymam kody formatowania w osobnej tabeli ze wskaźnikami, zamiast pozostawiać kody formatowania osadzone w tekście. Dziwię się, że nikt inny nie zrobił tego przed 1998 r., unieważniając tym samym patent, i że Microsoft nie mógł znaleźć przykładu takiego systemu. Przypominam sobie mikroprocesor tekstu znajomego i zamierzałem zbudować w latach 70-tych (nigdy nie skończyłem, ponieważ sprzęt nigdy nie działał), i zdecydowanie rozważałem kompromis między utrzymywaniem zawartości formatu osobno a osadzonym, więc pomyślałem, że ktoś w następne 20 lat (jeśli nie wcześniej) zrobiło podobnie i faktycznie napisało taki system. Czy przed 1998 rokiem nikt nie zaimplementował kodów formatowania oddzielnie od tekstu?


title: Czy podczas liczenia punktów funkcyjnych menu mojej witryny internetowej jest wejściem zewnętrznym?

text: Wykonuję liczenie punktów funkcyjnych dla dużej witryny internetowej. Czy główne menu witryny liczy się jako wejście zewnętrzne? Robię liczbę punktów funkcyjnych, jak opisano w tym artykule. Jeśli tak, skoro klikasz tylko jedną pozycję menu na raz, zakładam, że liczba DET == 1?


title: Programowanie Linux OpenGL, czy powinienem używać GLX lub innego?

text: Jestem nowy w OpenGL i odkryłem, że jest wiele bibliotek do tego w C, a także odkryłem, że glx jest najbardziej przyjazny dla Linux X Server, chcę tylko robić podstawowe rzeczy i nie mogę znaleźć żadnych samouczków GLX. Czy GLX jest złą rzeczą? Chcę po prostu zrobić kilka drobnych rzeczy graficznych bez instalowania wielu bibliotek i gubienia się. Czy ktoś może mi zasugerować coś, co ma samouczki i jest proste do skompilowania? Znalazłem link z przykładem z GLX i działał idealnie bez błędów: każdy proszę o sugestie, gdzie mogę znaleźć ładną dokumentację lub lepsze biblioteki.


title: CTO odszedł — baza kodu to ogromny klosz, jakieś rady, jak zarządzać/obsługiwać/kontrolować uszkodzenia?

text: Pracę w firmie rozpocząłem 2 miesiące temu jako programista PHP. Wszedłem w niełaskę, ale nie znalazłem jeszcze firmy, która nie jest... Stabilny rozwój to obecnie dwóch programistów (w tym ja), którzy będą pełnić funkcję tymczasowego CTO, podczas gdy firma szuka zastępcy Dyrektor Techniczny. Firma jest witryną z wiadomościami, która działa na wewnętrznym motywie WordPress z ulepszeniami w postaci arbitralnych wtyczek, funkcji wbudowanych w rzeczywisty motyw oraz wtyczek wbudowanych we własnym zakresie i innych firm ((niektóre, których główny kod został co sprawia, że aktualizacja staje się koszmarem. Przy tworzeniu kodu WordPressa nie zachowano żadnych standardów kodowania i wydaje się, że to wielu programistów zarządzało kodem i żadne dwa komponenty nie zostały ukończone przy użyciu tej samej metodologii, co wykracza poza ogromny bałagan, jeśli chodzi o debugowanie. Jestem programistą „WordPress". Drugi programista jest odpowiedzialny za najnowszą platformę e-commerce, która ma uzupełnić witrynę z wiadomościami, która zostanie uruchomiona na Magento. Jak Jedyny programista WordPress, który zajmuję się wszystkimi błędami i prośbami o funkcje na podstawie priorytetów - komunikuję się bezpośrednio z biznesem, aby to rozwiązać.Największym problemem, jaki przewiduję, jest każdy błąd/ulepszenie/projekt, który jest uważany za a priori ty i wymaga znacznego nakładu pracy (czytaj: 1 tydzień+) staje się wąskim gardłem i w zasadzie nic nie da się przepracować, dopóki nie skończę projektu. Mówią, że teraz to rozumieją, ale przewiduję, że stanie się to problemem, gdy faktycznie zobaczą to w praktyce. Patrzę w przyszłość i w pełni oczekuję, że stanie się to stresującą sytuacją (14+ godzin dziennie 7 dni w tygodniu każdy?) - czego muszę unikać za wszelką cenę. Dopóki nie zatrudnimy CTO lub rozważam zaproponowanie, abym napisał standardy kodowania dla rozwoju WordPressa i wykorzystywał odesk lub inne rozwiązanie outsourcingowe do obsługi żądań funkcji - upewniając się, że są one zgodne z określonymi standardami. W proponowanym środowisku będę (a) zarządzać programistami odesk (upewniam się, że komunikuję dokładnie to, co jest potrzebne, upewniam się, że kodują zgodnie z odpowiednimi standardami) (b) obsłużę wszelkie szybkie żądania funkcji / poprawki błędów (c) rozpocznę refaktoryzację kodu WordPress, aby że jest zgodny z wyżej wymienionymi wewnętrznymi standardami kodowania - aby doprowadzić nas do możliwego do opanowania stanu. Firma korzystała już w przeszłości z rozwiązań outsourcingowych, więc jestem przekonany, że pomysł ich wykorzystania nie byłby problemem. W tym momencie tylko forsuję plan zaproponowania kierownictwu - jeszcze nie myślę o tym, JAK zrobić to, co osiągnąłem - po prostu chcę uzyskać od nich pełne OK, zanim to zrobię. Jakie są twoje przemyślenia na temat tego planu? Czy jest coś jeszcze, o czym powinienem pomyśleć/zastanowić się? Dziękuję.


title: Przechowywanie n-gramów danych

text: (miejmy nadzieję, że wylądowałem na właściwej stronie wymiany stosów) Miałem nadzieję, że zrobię trochę burzy mózgów na temat przechowywania n-gramowych danych. W moim projekcie staram się rozwiązywać problemy językowe, w których znam wszystkie (_n_ -1) elementy danych i chcę statystycznie odgadnąć moje _n_ za pomocą interpolacji liniowej po wszystkich odpowiednich n-gramach. (Tak, istnieje tagger, który przypisuje znaczniki znanym słowom zgodnie z jego leksykonem i drzewem sufiksów, które próbuje odgadnąć rodzaj słowa dla nieznanych słów; omawiany tutaj składnik n-gramowy będzie miał za zadanie rozwiązać niejasności.) Moje początkowe podejście byłoby po prostu przechowywanie wszystkich zaobserwowanych n-gramów (dla _n_ = 1..3, tj. monogram, bigram, trigram) danych w odpowiednich bazach danych SQL i nazywanie tego dnia. Ale wymagania mojego projektu mogą się zmienić, aby uwzględnić inne długości wektorów ( _n_ ) i chciałbym, aby moja aplikacja dostosowała się do 4 gramów bez dużego nakładu pracy (aktualizacja schematu, aktualizacja kodu aplikacji itp.); najlepiej byłoby po prostu powiedzieć mojej aplikacji, aby teraz pracowała z 4 gramami bez konieczności zmiany kodu (lub w ogóle) i uczenia danych z danego źródła danych. Podsumowując wszystkie wymagania: * Możliwość przechowywania _n_ -gramów danych (początkowo dla _n_ = {1, 2, 3} * Możliwość zmiany rodzaju n-gramów, które mają być używane (pomiędzy uruchomieniami aplikacji) * Możliwość (ponownie )uczenie n-gramów danych (pomiędzy uruchomieniami aplikacji) * Możliwość odpytywania magazynu danych (np. jeśli zaobserwowałem A, B, C, chciałbym poznać najczęściej obserwowany element dla tego, co może nastąpić za pomocą mojego wytrenowanego 4- , 3-, 2-, 1-gramowe zestawy danych) Aplikacja najprawdopodobniej będzie intensywnie odczytywana, zestawy danych najprawdopodobniej nie będą przeszkolone tak często * Rozwiązanie wykorzystuje .NET Framework (do 4.0) Teraz jaki projekt lepiej nadawałby się do takiego zadania?* Stała tabela zarządzana przez serwer SQL (MSSQL, MySQL, ...) dla każdego _n_ (np. dedykowane tabele dla bi-gramów, tri-gramów itp.) * Lub Rozwiązanie bazy danych dokumentów NoSQL, które przechowuje pierwszy _n_ -1 jako klucz dokumentu, a sam dokument zawiera _n_ -tę wartość i zaobserwowane częstotliwości?* A może coś innego?


title: Dlaczego x=x++ jest niezdefiniowane?

text: Jest niezdefiniowany, ponieważ modyfikuje `x` dwukrotnie między punktami sekwencji. Norma mówi, że jest niezdefiniowany, dlatego jest niezdefiniowany. Tyle wiem. ### Ale dlaczego? Rozumiem, że zabranianie tego pozwala kompilatorom na lepszą optymalizację. Mogło to mieć sens, gdy wynaleziono C, ale teraz wydaje się to słabym argumentem. Gdybyśmy mieli dziś na nowo wymyślić C, czy zrobilibyśmy to w ten sposób, czy można to zrobić lepiej? A może jest głębszy problem, który utrudnia ustalenie spójnych reguł dla takich wyrażeń, więc najlepiej ich zabronić? Załóżmy więc, że dzisiaj na nowo wymyślimy C. Chciałbym zasugerować proste reguły dla wyrażeń takich jak `x=x++`, które wydają mi się działać lepiej niż istniejące reguły. Chciałbym poznać Twoją opinię na temat sugerowanych reguł w porównaniu z istniejącymi lub inne sugestie. ### Sugerowane zasady: 1. Pomiędzy punktami sekwencji kolejność oceny jest nieokreślona. 2. Efekty uboczne pojawiają się natychmiast. Nie ma tu nieokreślonego zachowania. Wyrażenia mają taką lub inną wartość, ale z pewnością nie sformatują dysku twardego (o dziwo, nigdy nie widziałem implementacji, w której `x=x++` formatuje dysk twardy). ### Przykładowe wyrażenia 1. `x=x++` \- Dobrze zdefiniowane, nie zmienia `x`. Po pierwsze, `x` jest zwiększany (natychmiast, gdy obliczane jest `x++`), a następnie jego stara wartość jest przechowywana w `x`. 2. `x++ + ++x` \- Zwiększa `x` dwukrotnie, daje `2*x+2`. Chociaż każda strona może być oceniana jako pierwsza, wynikiem jest „x + (x+2)” (najpierw lewa strona) lub „(x+1) + (x+1)” (najpierw prawa strona). 3. `x = x + (x=3)` \- Nieokreślone, `x` ustawione na `x+3` lub `6`. Jeśli prawa strona jest oceniana jako pierwsza, to `x+3`. Możliwe jest również, że jako pierwsze jest oceniane `x=3`, więc jest to `3+3`. W obu przypadkach przypisanie `x=3` następuje natychmiast po obliczeniu `x=3`, więc przechowywana wartość jest nadpisywana przez inne przypisanie. 4. `x+=(x=3)` \- Dobrze zdefiniowany, ustawia `x` na 6. Można argumentować, że jest to tylko skrót dla powyższego wyrażenia. Ale powiedziałbym, że `+=` musi być wykonane po `x=3`, a nie w dwóch częściach (czytaj `x`, oblicz `x=3`, dodaj i zapisz nową wartość). ### Jaka jest przewaga? Niektóre komentarze podniosły ten dobry punkt. Z pewnością nie uważam, że wyrażenia takie jak `x=x++` powinny być używane w normalnym kodzie. Właściwie to jestem znacznie bardziej rygorystyczny - myślę, że jedynym dobrym zastosowaniem `x++` jest tylko `x++;`. Uważam jednak, że zasady językowe muszą być jak najprostsze. W przeciwnym razie programiści po prostu ich nie zrozumieją. zasada zabraniająca dwukrotnej zmiany zmiennej między punktami sekwencji jest z pewnością zasadą, której większość programistów nie rozumie. Bardzo podstawowa zasada jest taka: Jeśli A jest poprawne, a B jest poprawne i są one połączone w prawidłowy sposób, wynik jest poprawny. `x` jest poprawną wartością L, `x++` jest poprawnym wyrażeniem, a `=` jest poprawnym sposobem łączenia wartości L i wyrażenia, więc dlaczego `x=x++` jest niedozwolone? Standard C robi tutaj wyjątek, który komplikuje reguły. Możesz przeszukać stackoverflow.com i zobaczyć, jak bardzo ten wyjątek dezorientuje ludzi. Więc mówię - pozbądź się tego zamieszania. === Podsumowanie odpowiedzi === 1. Dlaczego to robisz? Próbowałem wyjaśnić w sekcji powyżej - chcę, aby reguły C były proste. 2. Potencjał optymalizacji: Odbiera to trochę wolności kompilatorowi, ale nie widziałem niczego, co by mnie przekonało, że może to mieć znaczenie. Większość optymalizacji nadal można wykonać. Na przykład „a=3;b=5;” można zmienić, mimo że standard określa kolejność. Wyrażenia takie jak `a=b[i++]` można nadal optymalizować w podobny sposób. 3. Nie możesz zmienić istniejącego standardu. Przyznaję, nie mogę. Nigdy nie sądziłem, że naprawdę będę mógł zmienić standardy i kompilatory. Chciałem tylko pomyśleć, czy można było zrobić inaczej.


Czy ktoś słyszał kiedyś o upadłym kręgosłupie? Czy może to być sieć wirtualna, którą można by odnieść również do tego terminu.


title: Klasyfikacja błędów/defektów oprogramowania

text: Staramy się wymyślić terminy, które lepiej opisują nasze błędy/defekty. Dla nas termin „błąd” lub „defekt” jest zbyt ogólny i nie odzwierciedla dokładnie tego, co się dzieje. Na przykład, zamiast mówić, że jest błąd (w sensie ogólnym), wolelibyśmy raczej powiedzieć, jakiego typu (błąd, ulepszenie, ulepszenie itp.). Jakich nazw używasz do opisywania „błędów”? Znaleźliśmy http://www.softwaredevelopment.ca/bugs.shtml, który ma całkiem dobre klasyfikacje. Jak je klasyfikujesz?


title: Licencjonowanie zasobów i zgodność z GPL

text: Jeśli chcę połączyć czcionki i obrazy z aplikacją wydaną na licencji GPL, czy istnieją szczególne wymagania dotyczące licencji na te zasoby?


title: Czy są jakieś alternatywy dla Hibernate Envers 3.6.2.Final?

text: Obecnie oceniam Hibernate Envers 3.6.2.Final; moduł audytu będący częścią Hibernate. O ile jestem w mojej ocenie, czuję się trochę rozczarowany Envers. Oczekiwałbym od niego znacznie więcej: 1. Więcej _przejrzystej_ dokumentacji * Dokumentacja jest rzadka lub niejasna; brak małych rysunków w dokumencie 2. Większa aktywność społeczności * Czekałem dwa dni na odpowiedź od... twórcy na forum. Czy jest zajętym człowiekiem, czy prawie nie ma tam ludzi? 3. Wydajny i elastyczny interfejs API * Odpytywanie danych historycznych jest bolesne. Muszę polegać na bezpośrednim SQL, aby uzyskać proste "wybierz pole, liczba(id) z table_aud grupuj po polu" Czy znasz jakiś odpowiednik lub chcesz podzielić się ze mną swoimi przemyśleniami?


title: Czy jest to właściwe w przypadku użycia metody exec z child_process? czy istnieje możliwość kodowania środowiska wraz z wymaganym modułem?

text: Uczę się węzła. Używam child_process do przenoszenia danych do innego skryptu do wykonania. Ale wygląda na to, że nie kopiuje środowiska hold lub mogę robić coś nie tak. Aby skopiować środowisko wstrzymania -- wymagaj też modułów -- czy jest tak, gdy używam spawn, nie jestem tak jasny lub rozumiem spawn exec i execfile -- chociaż execfile jest jak to, co robię na dole, ale z exec ... prawda?-- I chciałbym mieć trochę jasności w tej sprawie. Proszę kogoś? Dziękuję Ci. **parent.js** - "użyj ścisłe"; var fs, ścieżka, _err; fs = require("fs"), ścieżka = require("ścieżka"), _err = require("./err.js"); var adres URL; url= proces.argv[1]; var dirname, zlokalizuj_r; dirname = ścieżka.dirname(url); zlokalizować_r = nazwa_katalogu + "/" + "test.json";//ścieżka.join(nazwa_katalogu,"/", "test.json"); flaga var, str; flaga = "r", str = ""; fs.open(locate_r, flag, function opd(error, fd){ if (błąd){_err(błąd, function(){ fs.close(fd,function(){ process.stderr.write("\n" + "W końcu blok: plik zamknięty!" + "\n");});})} var readBuff, buffOffset, buffLength, filePos; readBuff = new Buffer(15), buffOffset = 0, buffLength = readBuff.length, filePos = 0; fs.read(fd, readBuff, buffOffset, buffLength, filePos, function rd(error, readBytes){ error&&_err(error, fd);str = readBuff.toString("utf8");process.env.str = str process.stdout.write("str: "+ str + "\n" + "readBuff: " + readBuff + "\n"); fs.close(fd, function(){process.stdout.write( "Odczyt i zamknięty plik." + "\n" )}); //write(str); //uruchom test dla procesu.exec** var env, varName, envCopy, exec; env = process.env, varName, envCopy = {}, exec = require("proces_potomny").exec; for(nazwa_zmiennej w env){ envCopy[nazwa_zmiennej] = env[nazwa_zmiennej]; } process.env.fs = fs, process.env.path = ścieżka, process.env.dirname = dirname, process.env.flag = flaga, process.env.str = str, process.env._err = _err; proces.śr.fd = fd; exec("node child.js", env, function(error, stdout, stderr){ if(error){throw (new Error(error));} }); }); }); **child.js** - "użyj ścisłego"; var fs, ścieżka, _err; fs = require("fs"), ścieżka = require("ścieżka"), _err = require("./err.js"); var fd, fs, flaga, ścieżka, dirname, str, _err; fd = process.env.fd, //fs = process.env.fs, //path = process.env.path, dirname = process.env.dirname, flag = process.env.flag, str = process.env. str, _err = process.env._err; var adres URL; url= proces.argv[1]; var znajdź_r; dirname = ścieżka.dirname(url); zlokalizować_r = nazwa_katalogu + "/" + "test.json";//ścieżka.join(nazwa_katalogu,"/", "test.json"); //funkcja write(str){ var zlokalizować_a; zlokalizować_a = nazwa_katalogu + "/" + "test.json"; //path.join(dirname,"/", "test.json"); flaga = "a"; fs.open(locate_a, flag, function opd(error, fd){ error&&_err(error, fs, fd);var writeBuff, buffPos, buffLgh, filePs; writeBuff = new Buffer(str), process.stdout.write( "writeBuff : " + writeBuff + "\n" + "str: " + str + "\n"), buffPos = 0, buffLgh = writeBuff.length, filePs = buffLgh;//null; fs.write(fd, writeBuff, buffPos , buffLgh, filePs-3, function(error, writed){ error&&_err(error, function(){ fs.close(fd,function(){ process.stderr.write("\n" + "W końcu blok: plik zamknięty !" + "\n"); }); }); fs.close(fd, function(){process.stdout.write("Napisany i zamknięty plik." + "\n");}); }) ; }); //} **err.js** - "użyj ścisłego"; var fs; fs = wymagaj("fs"); module.exports = function _err(err, scp, cd){ try{ throw (new Error(err)); }catch(e){ process.stderr.write(e + "\n"); }nareszcie{ cd; } }


title: Zasada odwrócenia zależności

text: Uczę się również S.O.L.I.D. i obejrzałem ten film: https://www.youtube.com/watch?v=huEEkx5P5Hs 01:45:30 do filmu, w którym mówi o zasadzie odwrócenia zależności, a ja drapię się po głowie??? Musiałem to uprościć (jeśli to możliwe), aby przejść przez tę moją grubą czaszkę i oto, co wymyśliłem. Kod oznaczony My_modified_code moja wersja, kod oznaczony Oryginalna wersja wideo DIP. Czy mogę zrobić to samo z drugim kodem? Z góry dziękuję. Original: namespace simple.main { class main { static void Main() { FirstClass FirstClass = new FirstClass(new OtherClass()); PierwszaKlasa.Metoda(); Konsola.KluczOdczytu(); //tempClass temp = new OtherClass(); //temp.Metoda(); } } public class FirstClass { private tempClass _LastClass; public FirstClass(tempClass tempClass)//ctor { _LastClass = tempClass; } public void Method() { _LastClass.Method(); } } public abstract class tempClass{public abstract void Method();} public class LASTCLASS : tempClass { public override void Method() { Console.WriteLine("\nHello World!"); } } public class OtherClass : tempClass { public override void Method() { Console.WriteLine("\nInny świat!"); } } } Mój_zmodyfikowany_kod: namespace simple.main { class main { static void Main() { //FirstClass FirstClass = new FirstClass(new OtherClass()); //PierwszaKlasa.Metoda(); //Konsola.KluczOdczytu(); tempClass temp = new OtherClass(); temp.Metoda(); } } //public class FirstClass //{ // private tempClass _LastClass; // public FirstClass(tempClass tempClass)//ctor // { // _LastClass = tempClass; // } // public void Method() // { // _LastClass.Method(); // } //} public abstract class tempClass{public abstract void Method();} public class LASTCLASS : tempClass { public override void Method() { Console.WriteLine("\nHello World!"); } } public class OtherClass : tempClass { public override void Method() { Console.WriteLine("\nInny świat!"); } }


title: Jak dowiedzieć się, czy firma ma szaloną politykę?

text: Czy podczas rozmowy o pracę istnieje delikatny, ale dokładny sposób, aby dowiedzieć się, czy mają szalone zasady, takie jak „brak otwartego oprogramowania” lub „nie instalowanie oprogramowania bez pozwolenia”, „nie uaktualnianie oprogramowania, dopóki nie straci wsparcia”, lub „bez odwiedzania blogów”?


title: Rubin czy Python?

text: To pytanie jest niezwykle subiektywne i otwarte. Może to nawet brzmieć jak coś, co powinienem sam zbadać i podjąć własną decyzję. Ale chciałbym to opublikować i uzyskać kilka myśli od innych. Krótko mówiąc - wypaliłem się z wyścigiem szczurów i jestem w tym roku na samofinansującym się urlopie naukowym. Wiele z tego to oderwanie się od korporacyjnego grindowania i podróżowanie, ale chcę też bawić się nowymi technologiami i robić projekty samouczące się, aby być na bieżąco z programowaniem, i cóż - po prostu uwielbiam majstrować przy programowanie, gdy nie ma presji! Oto rzecz: jestem dożywotnim programistą C/C++/Java. Jestem trochę snobem z nawiasem kwadratowym, ponieważ pracowałem z tą rodziną języków przez całą moją karierę programisty. Chciałabym więc nauczyć się języka, który nie jest tak blisko spokrewniony składniowo z tą grupą. To, czego zasadniczo szukam, to język, który jest stosunkowo ogólny, przyjemny w nauce, ma kilka nowych koncepcji, które różnią się od C++/Java i ma dobrą społeczność. Drugą kwestią jest to, że ma dobre frameworki do tworzenia stron internetowych. Trzecią kwestią jest to, że nie jest to całkowicie akademickie (czytaj: są tam realne prace, które go używają). Zawęziłem to do Rubiego lub Pythona. Mam wrażenie, że Ruby jest bardzo zorientowany na sieć - że jedynym prawdziwym zastosowaniem jest jako język skryptowy po stronie serwera do robienia rzeczy internetowych (głównie Ruby on Rails). Nie mam zbytniego wrażenia na temat Pythona, poza tym, że wydaje się mieć rzeszę zagorzałych fanów i wydaje się być dość wszechstronnym językiem. **TL;DR** i mówiąc zwięźle, jak to możliwe: które z nich byłyby lepsze dla faceta C++/Java, aby nauczyć się nowych perspektyw programowania? A co jest bardziej otwarte i ogólnego przeznaczenia i ma zastosowanie do szerszego zestawu zastosowań? W tej chwili skłaniam się ku Rubiemu, ale martwię się do tego stopnia, że wygląda na to, że jest używany tylko jako język sieciowy po stronie serwera.


title: Czy MVC jest kiedykolwiek brane pod uwagę/stosowane w całym systemie?

text: Prowadziłem dyskusję z kolegą, który kupił temat MVC i wykorzystania ViewModels w ASP.NET MVC. Dyskusja dotyczyła tego, że w architekturze wielowarstwowej interfejs użytkownika, warstwa biznesowa i warstwa dostępu do danych są indywidualnymi zespołami/projektami, a ViewModels są reprezentacją interfejsu użytkownika bazy danych/obiektu biznesowego. Dyskusja na temat przydatności ViewModel została przeniesiona do dyskusji o tym, jak należy zastosować MVC. W mojej wersji (do której jestem przyzwyczajony / widziałem gdzie indziej) bierze pod uwagę separację obaw i zależności kaskadowych, gdzie projekt interfejsu użytkownika odwołuje się do LOGIKI biznesowej, LOGIKA BLOKOWA odwołuje się do DAL i prawdopodobnie wszystkie z nich odwołują się do projektu „Jednostki” . „MVC” jest ograniczone do interfejsu użytkownika. Oznacza to, że pojęcie „Modele” (w mojej wersji są to technicznie tylko ViewModele), „Widoki” i „Kontrolery” to pojedyncze pliki/obiekty w warstwie interfejsu użytkownika. BLL mówi w kategoriach encji bazy danych, a interfejs użytkownika zazwyczaj zawiera pomocniki, które mapują ViewModel na encję. Wersja mojego kolegi przeniosła to na poziom systemu/warstwy, gdzie „Model” to DAL, „Widok” to cały interfejs użytkownika, a „Kontrolery” to BLL jako całość. Biorąc pod uwagę, że w triadzie MVC model nie jest świadomy widoków ani kontrolerów, widoki wiedzą o modelach, a kontrolery wiedzą o obu. problemy z zależnościami)? Czy wzorce takie jak MVC są często stosowane na poziomie systemu? Zrozumiałem, że MVC i powiązane wzorce były częściej stosowane wyłącznie do interfejsu użytkownika i nie były rozłożone na cały system n-warstwowy. Nawiasem mówiąc, przyjrzeliśmy się temu pytaniu: Czym tak naprawdę jest MVC? ..ale wydaje się również, że nie zgadzamy się, czyje argumenty wspierają odpowiedzi na to pytanie! :) Mógłbym po prostu utknąć w moim małym, malutkim świecie zorientowanym na .NET i nie widzieć szerszego obrazu, więc chciałbym usłyszeć kilka przemyśleń na ten temat.


title: Mamy dużą aplikację Ruby on Rails (25 milionów użytkowników miesięcznie), nasze kierownictwo zdecydowało się przepisać w Node.js, oszalałam?

text: Proszę mi powiedzieć, czy: * Node.js sprawi, że nasza strona będzie szybsza! * Node.js zużyje mniej zasobów serwera, możemy zaoszczędzić pieniądze! * Node.js sprawi, że będziemy bardziej produktywni! * Node.js oznacza, że możemy udostępniać kod JavaScript po stronie klienta i serwera. Aby wyjaśnić, przepisujemy serwer frontendowy, który będzie komunikował się z naszą istniejącą aplikacją Ruby on Rails jako API. W międzyczasie przekształcimy naszą aplikację Ruby on Rails w usługi. Więcej szczegółów na temat istniejącej architektury: * Memcached do buforowania części HTML * Redis dla sesji i buforowanie danych strukturalnych * Pojedynczy master MySQL, wiele slaveów * Jest jedna duża tabela, która akceptuje wiele zapisów (wyobraź sobie ankietę) * W przeciwnym razie głównie odczyty . * MongoDB dla niektórych metadanych * Ruby on Rails 3.0 * nginx i Unicorn


title: Co powinniśmy uwzględnić w dokumentacji projektowej kostki SSAS?

text: Co powinniśmy zawrzeć w dokumentacji projektowej kostki SSAS? To jest początkowa faza dokumentu. Dołączyłem: * modele danych, * fakty, * wymiary, * klucze zastępcze, * hierarchie i poziomy wewnątrz hierarchii, * raporty, które możemy wyciągnąć z kostki, * proaktywne buforowanie. Co jeszcze możemy uwzględnić?


title: Java czy C++ na uniwersyteckie kursy CS?

text: Jestem w ferworze przed zapisaniem się do szkoły, aby uzyskać dyplom CS. Szkoła, na którą patrzę, oferuje kursy wprowadzające do tworzenia oprogramowania zarówno w języku Java, jak i C++ (programowanie obiektowe, wzorce projektowe, tego typu rzeczy). Uczeń decyduje, którą ścieżką podążać, ale jest tylko czas na podążanie jedną. _Wiedząc, co już wiesz, czy gdybyś miał wybór, położyłbyś podstawy programu nauczania CS w Javie lub C++?_ Moja obecna debata wygląda obecnie tak: Dobry przyjaciel (z doktoratem z AI) zachwala Javę jako lepszy wybór niezależnie od tego, co robię, choćby po to, by później otworzyć więcej możliwości pracy, chociaż może być stronniczy, ponieważ cała jego praca była w Javie (uwielbia to). Mieszkam w rejonie Bostonu, MA, USA i widzę równą ilość pracy w Javie i C. Z drugiej strony, chociaż nie do końca jeszcze ustaliłem, co chcę zrobić ze stopniem, kiedy skończę, wolę programować na Maca, co teraz robię, choć w ograniczonym zakresie. W tym celu mam już ograniczoną ekspozycję na C++, ale nie miałem żadnej z Javą, a patrząc na moje projekty w mojej codziennej pracy, nie widzę potrzeby używania go w najbliższym czasie, "wkrótce" zmierzone o co najmniej dwa lata. Powinienem chyba zauważyć, że jestem dorosły i wracam do szkoły po 20 latach (obecnie nie mam żadnego stopnia naukowego), więc staram się maksymalnie wykorzystać możliwości i spędzić czas. Trochę skłaniam się ku C++, ale nadal jestem ambiwalentny, a niektóre zewnętrzne, obiektywne rady mogą tu pomóc. Albo po prostu za bardzo się nad tym zastanawiam. **AKTUALIZACJA:** Okazuje się, że wybór języka nie był tak jednoznaczny, jak początkowo przypuszczałem. Podczas gdy kilka kursów podstawowych koncentrowało się na Javie, niektóre inne kursy podstawowe działają głównie w C i Javie, ale także kilka innych wrzuconych na dokładkę. W rzeczywistości reszta mojego semestru będzie w Objective-C po spędzeniu czasu w Javie i JavaScript. Ostatni semestr był C, JavaScript i PHP, plus kilka innych wrzuconych jako wymagane zadania. Ponieważ wszystko było ogólnie podzielone w połowie, a ja wciąż otrzymuję na to odpowiedzi, staram się teraz opracować swój program nauczania, aby spełnić wszystkie wymagania dotyczące stopnia, ale przyswoić tyle języków, ile jestem w stanie rozsądnie obsłużyć . Jak dotąd moje stopnie nie ucierpiały, próbując to zrobić.


title: Czy SQL Server i Mongo mogą być używane razem?

text: Mamy dużą witrynę zorientowaną na wiadomości, która ma duży ruch w sieci. Architektura to często spotykana baza danych - warstwa repo - warstwa usług - Asp.Net MVC. Problem, który obserwujemy, dotyczy wydajności odczytu. Okazuje się, że wszystkie te rzeczy związane z obiektami domeny DDD są teoretycznie świetne dla reguł biznesowych, ale utrudniły życie, jeśli chodzi o optymalizację wydajności odczytu. Jako rozwiązanie rozważam coś zupełnie nowego (dla nas): użycie noSQL. Do prezentowania danych na naszej stronie chciałbym użyć bazy danych noSQL. Nie możemy pozbyć się naszego SQL Server (przynajmniej nie w najbliższym czasie), ale wydaje mi się, że praktycznym krokiem byłoby użycie Mongo jako bazy zapytań dla wszystkich nowych rozwiązań. Moje pytanie brzmi, czy możliwe jest użycie SQL Server jako bazy danych rekordów i Mongo jako bazy danych zapytań **razem**? Tak więc, gdy jeden z naszych redaktorów zaktualizuje rekord, dane będą przechowywane w SQL Server. Jest to konieczne, ponieważ istnieje zbyt dużo starszego kodu, którego nie można przepisać z dnia na dzień. Ale gdy przeglądający w witrynie internetowej przegląda artykuł lub listę artykułów, chciałbym skorzystać z wydajności Mongo w porównaniu z SQL Server. Aby dane były w pewnym stopniu aktualne, powiedzmy, że mają 15 minut lub mniej, dane SQL Server musiałyby zostać odświeżone w Mongo. RDBMS ma narzędzia do replikacji dla takich operacji i zastanawiam się, czy istnieje coś, co mogłoby zrobić to samo od SQL Server do Mongo. Może serwer Lync?


title: Jak zacząć korzystać z HTML5?

text: Jaki jest zalecany przepływ pracy do nauki HTML5? Jakie narzędzia powinienem zainstalować? Jaki pakiet SDK? Gdzie zacząć? Jak przetestować? Jak debugować? Co czytam? Rozumiem, że to, co często jest określane jako "programowanie HTML5", jest w rzeczywistości mieszanką HTML, CSS, JS i innych, jednak nie wierzę, że większe projekty powstają w Notatniku. Dlatego proszę Cię o ujawnienie swoich wskazówek i trików dotyczących Twojego przepływu pracy.


title: Jakie są najlepsze praktyki dotyczące niepodpisanych wejść?

text: Używam niepodpisanych int wszędzie i nie jestem pewien, czy powinienem. Może to być od kolumn identyfikatora klucza podstawowego bazy danych do liczników itp. Jeśli liczba nigdy nie powinna być ujemna, zawsze będę używał int bez znaku. Jednak zauważam z kodu innych, że nikt inny tego nie robi. Czy jest coś ważnego, co przeoczam? Edycja: Od tego pytania zauważyłem również, że w C zwracanie wartości ujemnych dla błędów jest powszechne, a nie wyrzucanie wyjątków jak w C++.


title: Dlaczego silnik PHP nie obsługuje komunikacji HTTP?

text: Silnik PHP interpretuje kod PHP i doskonale radzi sobie z gniazdami, formowaniem pakietów HTTP itp. Po co więc potrzebny nam osobny serwer Apache, skoro obowiązki obsługi http można by wbudować w aplikację php wraz z kodem do tworzenia strony ?


title: Czy możesz polecić dobry szablon/wytyczne dotyczące commitów do egzekwowania w firmie?

text: W Git można ustawić i wymusić dobry szablon zatwierdzenia. Czy możesz polecić (najlepiej wraz z argumentacją) dobry szablon commita/wytyczne do egzekwowania w firmie?


title: c# standardy/wytyczne nazewnictwa klas

text: Przez lata używałem różnych konwencji nazewnictwa usług w moich aplikacjach, na przykład: [NazwaKlasy]Usługa [NazwaKlasy]Menedżer [NazwaKlasy]Fabryka [NazwaKlasy]Dostawca [NazwaKlasy]Pomocnik Generalnie używam sufiksu „Pomocnik” tylko dla klas użytkowych które nie mają zewnętrznych zależności. Jednak uważam, że między innymi jest trochę skrzyżowania i zastanawiałem się, czy istnieją jakieś zalecenia/standardy/wytyczne dotyczące tego, czego użyć i kiedy?


title: Czy hosting źródeł Google Code ma interfejs API taki jak Github?

text: Szukałem i szukałem, a może jestem tępy, ale nie mogłem znaleźć API dla projektów open source na Google Code, podobnego do tego, które oferuje Github. Czy to istnieje?


title: Testowanie automatyczne: wyjaśnienie wartości biznesowej

text: Na początek nie sądzę, że jest to powtórzenie innych pytań dotyczących testów jednostkowych. To, w czym szukam pomocy, to wyartykułowanie jej wartości zespołowi programistów, analityków, menedżerów i testerów. W przypadku testów automatycznych nie sądzę, że muszę rozróżniać testy jednostkowe (np. JUnit), BDD (np. JBehave, Fitness) i UI (Selenium , Watir), ponieważ myślę, że wszystkie zapewniają podobną wartość (ale nie krępuj się napisz odpowiedź, która się nie zgadza :)) Poniżej znajduje się lista, którą zidentyfikowałem, szukam odpowiedzi, które pomogą rozwinąć lub doprecyzować: 1. **Oszczędność czasu/kosztów** : pisanie testów automatycznych może zająć więcej czasu niż pisanie przypadki testowe. Biorąc jednak pod uwagę, że testy są uruchamiane wiele razy, marginalna praca (tj. koszt/czas) związana z _wykonaniem_ testów automatycznych jest o kilka rzędów wielkości mniejsza. To, że testy automatyczne są tanie w prowadzeniu, ułatwia _zmianę_ systemu w czasie. 2. **Dokumentacja** : nie ma lepszego sposobu na poznanie działania systemu niż jego testy. Jakakolwiek inna dokumentacja jest zwykle nieaktualna w momencie jej napisania, ale testy (przynajmniej te, które przechodzą) ujawniają, jak to naprawdę działa. Dotyczy to zarówno dokumentacji użytkownika końcowego, jak i dokumentacji API. 3. **Jakość kodu** : pisanie testów zmusza cię do: * brania pod uwagę klientów, ponieważ testy są klientem * przełamuje zależności, gdzie testowalność kodu często oznacza zastanowienie się, jak sprawić, by kod nie wymagał dostępności innego dużego systemu


title: Wady używania typów dynamicznych w C#

text: Ostatnio studiowałem więcej na temat typów dynamicznych w C#. Z kilkoma przykładami, które zrozumiałem, po skompilowaniu kodu nie trzeba go ponownie kompilować, ale można go wykonać bezpośrednio. Uważam, że elastyczność zapewniana przez słowo kluczowe, aby rzeczywiście móc dowolnie zmieniać typ danych, jest wielką zaletą. Pytanie: Czy istnieją **jakiś konkretne niedociągnięcia** poza nieprawidłowymi wywołaniami metod dynamicznych, które generują wyjątki w czasie wykonywania, **o których programiści muszą wiedzieć** przed rozpoczęciem implementacji.


title: Jak, kiedy i dlaczego programiści używają niestandardowych struktur danych w Pythonie?

text: Brak wskaźników w Pythonie sprawia, że konstrukcja struktury danych jest intuicyjnie trudniejsza i ma tak wiele wbudowanych funkcji, że jako amator nie wiem, kiedy, dlaczego i jak stworzyć coś poza tym, co już jest. Kiedy zbudowałeś swój własny i dlaczego to zrobiłeś? Np. specjalne rodzaje drzew itp.


title: Gniazda nieblokujące a gniazda blokujące - UDP - C&linux

text: Kiedy używać gniazd blokujących zamiast nieblokujących w UDP? Pytanie 1: co jest zalecane w następującym scenariuszu? Wielu klientów wysyła dane przez wiele gniazd UDP, tj. powiedzmy, że klient 1 wysyła dane przez gniazda 100, 101, 102,...,105. client2 na gniazdach 110,111,112...115 itd. Numery portów są stałe dla klientów. Liczba klientów jest stała(10). Więc w sumie 10 * 5 gniazd. Dane na każde gniazdo (co najmniej 3 gniazda) są wysyłane co kilka milisekund. Pozostałe 2 gniazda służą do wysyłania poleceń i pobierania danych. Po otrzymaniu danych jest zaangażowanych we/wy, w których piszę na dyski. (Nie mogę zmienić żadnego z powyższych, tj. liczby gniazd itp.) Pytanie 2: Czy najlepiej jest używać wątków w tym scenariuszu (lub) Asynchronicznego multipleksowania IO z gniazdami nieblokującymi?


title: Wersje .NET w wywiadzie

text: Wywiady są pełne różnych rodzajów pytań. Ciekawe jest to, co ludzie myślą o pytaniu rozmówcy o różnice w wersjach .NET. Na przykład pytanie, co nowego w .NET V2.0 do 3.0, a następnie od 3.0 do 3.5 i tak dalej. Czy to dobre pytanie do wywiadu, aby dowiedzieć się, co dana osoba wie o świecie .NET? Ponieważ wersja V2.0 została wydana w 2005 roku, zaczynam się zastanawiać, jak ważne jest pytanie o to, co nowego pojawiło się w wydaniu sprzed 6 lat. Czy to dobre pytanie w ocenie wiedzy programisty, czy tylko jego/jej pamięci?


title: Jak zaliczyć innych autorów w projekcie open source

text: Mam projekt dla zwierząt, który planuję wydać jako open source w niedalekiej przyszłości. Kilka plików używa lub jest w większości kodem zaczerpniętym z projektu wydanego na Nowej Licencji BSD. Chociaż zmieniłem go, aby pasował do moich potrzeb i dodałem kilka drobiazgów, algorytm i funkcjonalność są w zasadzie dokładnie takie same. Chcę się upewnić, że autor kodu otrzyma uznanie i że licencja nie zostanie złamana, ale chcę również uświadomić czytelnikowi, że to nie jest kod, który został pierwotnie wydany. Jak mam do tego podejść? Czy powinienem izolować kod tak bardzo, jak to możliwe i po prostu zachować oryginalną licencję? Może umieścić wszystkie pliki zawierające obcy kod we własnym folderze i dodać readme wyjaśniające, co zostało dodane/usunięte? Musiało być mnóstwo projektów wykorzystujących inny kod open source. Jakie jest standardowe podejście do tego?


title: Czy istnieją standardy branżowe, które definiują jakość kodu?

text: Nasza specyficzna sytuacja polega na tym, że tworzymy umowę między nami a innym zespołem na wspólną kontrolę lub korzystanie z aplikacji internetowej opartej na PHP, którą budowaliśmy. Posiadamy zestaw norm i konwencji udokumentowanych w naszych specyfikacjach technicznych. Zostałem jednak poproszony o zdefiniowanie ich w kategoriach standardu branżowego. Znam inną terminologię dotyczącą konwencji kodowania. Na przykład notacja węgierska, CamelCase. I niektóre zdefiniowane standardy dla bardzo konkretnych rzeczy, na przykład PSR-0 obejmuje przestrzenie nazw w PHP. Wydaje się, że chodzi o to, aby spróbować dać nam mocniejsze podstawy w porozumieniu, wskazując raczej na standardy branżowe niż na arbitralną normę, którą ustaliliśmy. Szukają takich rzeczy jak PSR-0 lub ISO#### lub IEEE####, na które możemy wskazać. Moją osobistą troską jest to, że spędziłem czas pracując z zespołem, aby pokazać im nasze standardy i uzyskać akceptację w większych jego częściach. Obawiam się więc, że albo będziemy musieli dostosować się do jakiegoś standardu, który nie pasuje do tego, jak lubimy programować, albo lepszym przypadkiem będzie wybranie fragmentów standardów, jeśli takie istnieją, aby pasowały do naszych obecnych konwencji. W każdym razie sedno pytania brzmi: **Czy istnieją jakieś standardy branżowe dotyczące jakości kodu, procesów kodowania lub innych obszarów, które pomogłyby nam powstrzymać ich programistów przed tworzeniem destrukcyjnego lub trudnego w utrzymaniu kodu?** Zdaję sobie sprawę, że nie możemy temu zapobiec, ale jeśli możemy wskazać na umowę, przynajmniej możemy skorzystać z innej możliwości niż refaktoryzacja lub przekodowanie jej samodzielnie. Wszelkie inne przemyślenia lub sugestie byłyby pomocne.


title: Jak nauczyć się praktycznych zastosowań wzorców projektowych

text: Używam programowania OOP z dziedziczeniem, ale nie używałem jeszcze interfejsów. Chcę nauczyć się korzystać z wzorców projektowych, ale jest mi bardzo trudno je nauczyć. Czy można łatwo nauczyć się wzorców projektowych? Trochę szukałem, ale nie mogłem znaleźć przydatnych informacji.


title: Czy możesz rozszyfrować ten plik binarny?

text: _Pomyślałem, że zamieściłem to w najlepszej społeczności programistów, jakich znam._ > David Johnston, nowy gubernator generalny, wprowadza zamęt w cyfrowym świecie. > > Jakie jest znaczenie tego 33-znakowego ciągu jedynek i zer >, który jest wyryty na dole jego nowego, nowego herbu? > > Według strony internetowej GG „Falista opaska z zerami i jedynkami > reprezentuje przepływ informacji, komunikację cyfrową i nowoczesne media”. Binry to: 110010111001001010100100100111010011 To nie jest ASCII, czy to po prostu losowe? > Artykuł oryginalny: http://www.cbc.ca/politics/insidepolitics/2010/10/the-new- > ggs-binary-banner-whats-it-mean.html być rozwiązany) odpowiedź lub w przypadku jej braku, najwyżej głosowana odpowiedź._


title: Gdybyś miał uczyć rozwoju zawodowego uczniów, którzy właśnie ukończyli szkołę, jakie byłyby tematy?

text: Chodzi o to, aby dać im większe szanse na wydajność w środowisku zawodowym. Większość uczniów jest dobra w teorii, większość z nich jest mądra, ale muszą nauczyć się rozwiązywać typowe problemy techniczne. Będą lepszymi programistami, gdy będą ćwiczyć, ale może pomożemy im w szkoleniu wprowadzającym. > Jakie tematy wybrałbyś na dwutygodniowe szkolenie w pełnym wymiarze godzin? To pytanie otwarte, nie chcę sugerować rzeczy, które ograniczą odpowiedzi do konkretnego pola.


title: Walidacje konstruktora a ustawiającego

text: Mam następującą klasę: public class Project { private int id; prywatna nazwa ciągu; public Project(int id, String name, Date creationDate, int fps, List<String> frames) { if(name == null ){ throw new NullPointerException("Nazwa nie może być null"); } if(id == 0 ){ throw new IllegalArgumentException("id nie może wynosić zero"); } this.nazwa = nazwa; this.id = identyfikator; } private Project(){} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { zwraca nazwę; } public void setName(String name) { this.name = nazwa; } } Mam trzy pytania: 1. Czy używam ustawiaczy klas zamiast bezpośrednio ustawiać pola. Jednym z powodów, dla których ustawiam to bezpośrednio, jest to, że w kodzie setery nie są ostateczne i można je nadpisać. 2. Jeśli właściwym sposobem jest ustawienie go bezpośrednio i chcę się upewnić, że podana nazwa nie jest zawsze pusta. Czy powinienem podać dwie kontrole, jedną w konstruktorze, a drugą w ustawiaczu. 3. Przeczytałem w efektywnym javie, że powinienem użyć `NullPointerException` dla parametrów zerowych. Czy powinienem użyć `IllegalArgumentException` dla innych sprawdzeń, takich jak id w przykładzie.


title: Jak zapobiec przeciąganiu moich projektów dzięki niekończącym się poprawkom i zmianom?

text: Po opracowaniu projektu może wymagać zbyt wielu poprawek i zmian, aby działał poprawnie... Co mogę zrobić, aby temu zapobiec?


title: Kto używa GnuSTEP?

text: To było wielkie pytanie czające się z tyłu mojej głowy. Z tego co widzę, GnuSTEP to dziś przede wszystkim „hobbystyczny” projekt małej, ale zgranej grupy ludzi. Jednak nie widziałem dużej komercyjnej (gotowej) aplikacji, która z niej korzysta, poza małymi aplikacjami dostarczanymi z dystrybucją GnuSTEP. Heck, skoro nawet Ubuntu tak naprawdę go nie używa, to czy GnuSTEP jest czymś więcej niż tylko „hobbystycznym” frameworkiem? Wiem, że SNAP firmy Sony w jednej chwili używa GnuSTEP, ale zabili platformę, zanim zdążyła zrobić cokolwiek sensownego.


title: Dlaczego projektowanie na zlecenie jest uważane za alternatywę dla procesu pseudoprogramowania?

text: W tej chwili czytam Code Complete Steve'a McConnella iw rozdziale 9 mówi o procesie pseudoprogramowania (PPP). Z tego, co zrozumiałem, PPP to sposób programowania, w którym programista najpierw pisze pseudokod dla procedury, nad którą pracuje, a następnie udoskonala go do punktu, w którym prawie każda linia pseudokodu może być zaimplementowana w 1- 3 linijki kodu, następnie zapisuje kod w wyznaczonym języku programowania, a na końcu pseudokod jest zapisywany jako komentarze w celu udokumentowania procedury. W rozdziale 9.4 autor wspomina o alternatywach dla PPP, z których jedną jest „projektowanie na podstawie umowy”. W projektowaniu na podstawie umowy zasadniczo określasz warunki wstępne i końcowe każdej procedury. Dlaczego miałoby to być uważane za alternatywę? Wydaje mi się oczywiste, że powinienem używać obu technik jednocześnie i nie wybierać jednej z drugiej.


title: Zautomatyzowane testy akceptacyjne pod określonymi ograniczeniami

text: To pytanie jest kontynuacją mojego poprzedniego pytania, które było nieco ogólne, więc z tym będę bardziej szczegółowy. Chcę zautomatyzować testy akceptacyjne w aplikacji sieci web. W skrócie, aplikacja ta pozwala użytkownikowi tworzyć umowy dla subskrybentów z dwoma ograniczeniami: * Nie można utworzyć więcej niż jednej umowy dla subskrybenta. * Po utworzeniu umowy nie można jej usunąć (z interfejsu użytkownika). Powiedzmy, że TestCreate to przypadek testowy z testami do normalnego tworzenia kontraktu. Ograniczenia spowodowały złożoność procesu testowania, głównie zależności między przypadkami testowymi a wykonaniami testów. * Zanim uruchomimy TestCreate musimy upewnić się, że aplikacja jest w odpowiednim stanie (subskrybent nie ma umowy) * Jeśli uruchomimy TestCreate dwa razy, drugie uruchomienie zakończy się niepowodzeniem, ponieważ stan aplikacji ulegnie zmianie. * Więc musimy wrócić do stanu początkowego (tj. usunąć umowę), co jest niemożliwe do zrobienia z interfejsu użytkownika. Mówiąc bardziej ogólnie, po każdym przypadku testowym powinniśmy zagwarantować, że stan zostanie przywrócony. A skoro w tym przypadku nie da się tego zrobić z interfejsu użytkownika, jak sobie z tym poradzić? **Możliwe rozwiązanie** : Myślałem o zrobieniu kopii zapasowej bazy danych w pożądanym przeze mnie stanie i po każdym przypadku testowym uruchamiałem skrypt, który usuwa bazę danych i przywraca kopię zapasową. Uważam jednak, że jest to zbyt trudne dla każdego pojedynczego przypadku testowego. Ponadto, co jeśli niektóre informacje są przechowywane w plikach? lub w wielu lub niedostępnych bazach danych? **Moje pytanie:** W takiej sytuacji, co zrobiłby doświadczony tester, aby pisać testy automatyczne i konserwowalne. Dziękuję Ci. **Więcej informacji** : Próbuję zintegrować testy z frameworkiem BDD (Behaviour Driven Development), który uważam za zgrabne rozwiązanie do dokumentacji testów i komunikacji, ale nie rozwiązuje tego konkretnego problemu (nawet sprawia, że to trudniejsze)


title: Jakie są znaki ostrzegawcze nadchodzącej zagłady, na które należy uważać w projekcie?

text: Praca nad nieudanym projektem to jedna z niewielu rzeczy, które łączy większość programistów, niezależnie od używanego języka, branży czy doświadczenia. Te projekty mogą być wspaniałymi doświadczeniami edukacyjnymi, miażdżącymi duszę katastrofami (lub obiema rzeczami!) i mogą wystąpić z wielu powodów: * zmiana kierownictwa wyższego szczebla * zespół niedostatecznie wyszkolony / niedofinansowany * pojawienie się lepszego konkurenta podczas cyklu deweloperskiego * over/under management Kiedy pracowałeś już nad kilkoma takimi projektami, czy jest możliwe rozpoznanie na wczesnym etapie, kiedy projekt jest skazany na niepowodzenie? Dla mnie dużym znakiem jest twardy i szybki zewnętrzny **termin połączony z pełzaniem funkcji**. Widziałem projekty, które były dobrze zaplanowane i przebiegały zgodnie z harmonogramem, strasznie znikały z torów, gdy spóźnione żądania funkcji zaczęły pojawiać się i były dodawane do końcowego „dostarczania”. Proponujący te prośby zasłużyli na przydomek Columbo, ze względu na to, że rzadko opuszczają pokój bez proszenia o „jeszcze tylko jedną rzecz”. Jakie są znaki ostrzegawcze, na które zwracasz uwagę, które uruchamiają dzwonki alarmowe nadchodzącej zagłady w twojej głowie?


title: użyć areFoo czy isFoo?

text: Nigdy nie widziałem użycia "are" dla metod logicznych, ale użycie "is" jest bardzo powszechne. Kiedy chcę użyć "are" jest zwykle dlatego, że przekazuję wiele zmiennych lub listę obiektów. Przypuszczam, że mógłbym zracjonalizować moją listę obiektów lub wielu zmiennych jako jedną rzecz, taką jak „isSetupParametersValid”, ale to nadal byłoby w liczbie mnogiej. Czy brak użycia "are" w metodach logicznych jest po prostu arbitralną konwencją czy efektem ubocznym stosowania najlepszych praktyk. Jeśli jest to efekt uboczny najlepszych praktyk, to jakie? Uwaga: dla osób nie będących rodzimymi użytkownikami języka angielskiego „is” odnosi się do pojedynczego obiektu, „are” odnosi się do liczby mnogiej/wielu obiektów


title: Wdrożenie projektu PHP

text: Mam projekt PHP, który aktualnie rozwijam. Już prawie skończyłem i zastanawiałem się, jaka jest najlepsza praktyka, jeśli chodzi o testowanie wersji beta i wdrażanie aktualizacji/zmian w witrynie produkcyjnej? Na przykład, aby przetestować nowe funkcje, pomyślałem o stworzeniu subdomeny o nazwie beta.mysite.com, która wykorzystuje duplikację tych samych plików projektu co wersja produkcyjna oraz duplikację bazy danych mysql. Następnie po przetestowaniu wszystkiego muszę wyeksportować tabele mysql (jeśli zmieniłem strukturę bazy danych) i skopiować pliki do obszaru produkcyjnego. Ale jak to wszystko zrobić, zachowując wszystkie dane, które zostały wyprodukowane podczas moich testów beta? Jestem jedyną osobą, która pracuje nad tym projektem, obecnie nie używam żadnego narzędzia do wersjonowania, tylko Dreamweaver. Dziękuję,


title: Jak powinieneś postępować, gdy ktoś odrzucił twoją dobrą rzecz?

text: Zrobiłem aplikację w extjs, która została odrzucona przez mojego architekta technicznego, kierownika projektu i lidera zespołu, ponieważ był to duży plik JavaScript. Bardzo źle się czujesz, kiedy tworzysz aplikację i jest ona odrzucana przez Twoich seniorów. Nie chcę czuć się źle i chcę skoncentrować się na swojej pracy. Chciałbym zmienić strukturę kodu, ponieważ struktura kodowania w mojej firmie jest bardzo zła i chcę to poprawić. Chcę lepiej pracować i rozwijać się - jak mam postępować?


title: Stany sesji w wywołaniu zwrotnym ajax

text: Ktoś mi powiedział, że `Session` lub `HttpContext.Current.User` zwróci inną wartość, gdy pracujemy z postbackiem ajax, w przypadku gdy jest tak wielu użytkowników na żywo na stronie. Załóżmy na przykład, że w witrynie jest 1000 osób, z których 100 wywołuje metodę ajax/wenmethod i na tej podstawie możemy otrzymać inną wartość `Session` lub `HttpContext.Current.User` zgodnie z `Sesją` każdego użytkownika lub Wartości `HttpContext.Current.User` są różne. Ale moja koncepcja mówi, że zwróci wartość `Session` lub `HttpContext.Current.User` konkretnej osoby (która zażądała), a serwer będzie wiedział, czyja wartość ma zostać zwrócona. Co wy wszyscy mówicie?


title: Czy można zaimplementować natywny kompilator dla „języka zarządzanego”, takiego jak Java?

text: W większości przypadków możliwe jest stworzenie zarówno natywnego kompilatora, jak i interpretera dla języka programowania. Kompilator po prostu przekonwertowałby kod źródłowy na kod maszynowy, a interpreter po prostu wykonałby kod źródłowy (lub jakąś IL wyprodukowaną przez kompilator). Nie jestem jednak pewien języków z odśmiecaniem. Weźmy na przykład Javę. Kiedy projektowano Javę, było jasne, że programy Javy zawsze będą uruchamiane na JVM. A JVM miała być wyposażona w mechanizm garbage collection. Tak więc przy projektowaniu samego języka Java nie było potrzeby stosowania destruktorów i tym podobnych. Jeśli ktoś miałby zaimplementować _natywny_ kompilator Javy, oznaczałoby to, że kod źródłowy Javy zostałby skompilowany do kodu maszynowego do uruchomienia na samej maszynie, a nie na maszynie wirtualnej. A sama maszyna nie ma mechanizmu do zbierania śmieci. **Jak ktoś implementujący natywny kompilator Javy poradziłby sobie z tą sytuacją? Czy można stworzyć natywny kompilator dla Javy, skoro projekt Javy 'liczy się' na automatyczne usuwanie śmieci? (I możliwe, że o kilka dodatkowych rzeczy, które maszyna wirtualna robi dla programu?)**


title: Jaka jest właściwa relacja między producentem oprogramowania a klientem biznesowym?

text: Specjaliści IT to eksperci, którym powierzono zasoby informatyczne firmy lub organizacji. Jako zaufani profesjonaliści mamy obowiązki, które wykraczają poza kwestie, których zrozumienia lub świadomości można oczekiwać od klienta niezwiązanego z IT. Myślę więc, że właściwa relacja między informatykiem a jego wewnętrznymi/zewnętrznymi klientami jest bardziej podobna do relacji między lekarzem a pacjentem niż sługą a mistrzem. Czy mam rację? Oto analogia do przemyślenia. Pacjent nalega, aby jego noga została amputowana. Jego lekarz nie zgadza się, ale pacjenta nie można przekonać. Czy lekarz powinien amputować nogę tylko po to, by zadowolić pacjenta? Kolejna analogia. Klient chce, aby inżynier budowlany zbudował most do niebezpiecznego projektu. Nawet gdy inżynier wyjaśnia, że to niebezpieczne, klient mu nie wierzy. Czy inżynier powinien mimo wszystko zbudować most? Myślę, że prawidłowa odpowiedź w obu tych analogiach brzmi NIE. Lekarze i inżynierowie powinni być w pozycji zaufania i powinni kierować się własnym osądem, nawet w obliczu dezaprobaty pacjenta/klienta. Czy to samo nie powinno dotyczyć informatyków, gdy informatyk ma kwalifikacje do podjęcia decyzji, a jego klient nie?


title: Jak mogę stworzyć solidne uzasadnienie biznesowe dla modernizacji naszych programistów do 256 GB SSD i 16 GB RAM?

text: Mamy środowisko oparte na stosie Microsoft (VS2010, SQL Server itp.) i mocno wierzę, że moglibyśmy nieco poprawić produktywność, mając więcej pamięci RAM i szybszy dodatkowy dysk SSD. Jakie dane radzisz zebrać, abym mógł skonsolidować swoją prośbę w taki sposób, aby można było bezstronnie wykazać korzyści? Obecnie mamy tylko 6 GB pamięci RAM i wolniejsze dyski HD, a w domu mam 128 GB SSD w moim komputerze stacjonarnym i 16 GB pamięci RAM (myślę też, że to maksymalna ilość pamięci obsługiwana przez nasze stacje robocze, gdybyśmy mogli wtedy powiększyć lepiej), więc czuję różnicę i to jest prawdziwe. Problem polega na tym, jak uzyskać zatwierdzenie budżetu od kierownictwa i mądrze go wydać, aby zwiększyć produktywność.


title: Jak bezpiecznie korzystać z kursorów adapterów baz danych?

text: Zacząłem używać psycopg2 do łączenia mojego małego skryptu Pythona z bazą danych PostgreSQL kilka dni temu. Po kilku badaniach odkryłem, że wiele łączników baz danych, takich jak psycopg, działa za pomocą kursorów. Wiem co to jest kursor i jak go używać. Ale wciąż zastanawiam się, czy można bezpiecznie używać tego samego kursora przez cały czas życia skryptu. Czy to bezpieczne? A może lepiej byłoby użyć innego kursora dla każdego zapytania?


title: Czy wprowadzenie małej zmiany, przetestowanie jej, a następnie „przepłukanie i powtórzenie”, to zły nawyk?

text: Jestem programistą z wieloletnim doświadczeniem. Zdałem sobie sprawę, że mam pewien nawyk. Nie jestem pewien, czy to naprawdę zły nawyk, czy nie. Dostaję listę zadań do wykonania dla rozwiązania, nawet małe, małe zadania, na przykład 1. Zmień zasoby tej kontrolki użytkownika 2. Zmień rozmiar innej 3. Dodaj trochę HTML i kodowania na innej kontrolce użytkownika Wszystkie te zadania są mali. Mam na myśli to, że można je zrobić w ciągu 10 minut, **ale mam zły nawyk robienia małych zmian, a następnie testowania ich raz za razem w przeglądarce internetowej**. Czy to dobra praktyka? A może powinienem wykonać je wszystkie naraz, a następnie przetestować razem? Jeśli to naprawdę zły nawyk, to jak go naprawić, skoro wydaje mi się, że tracisz czas na ciągłe testowanie małych zmian?


title: Czy pisanie kodu pięcioma palcami jest bardziej wydajne?

text: Właściwie mam tendencję do pisania 4 palcami, moja rzeczywista prędkość pisania wynosi średnio 110~120 (używając http://www.typingtest.com/ z hiszpańskim z hiszpanii) Mam trochę czasu próbując zmusić się do używania 5 palców, To trochę dziwne, ale zauważyłem, że kiedy piszę taki tekst, palce zwykle są w bardzo naturalnej pozycji, z czasem sobie z tym poradzę... Ale kiedy programuję wszystko jest dziwne, używając alt + tab jest dziwne, używanie ctrl + b jest wird, a wszystkie te skróty, których używają niektóre programy związane z terminalami, „naturalna droga 5 palców” jest naturalna tylko wtedy, gdy muszę pisać tekst, ale to nie ma zastosowania, gdy jest wiele symboli, takich jak . -> ( ) [ ] " " && || , itd... Czy jest ktoś, kto używa 5 palców do pisania?, może wygodnie pisać kod 5 palcami, używając tego rodzaju "naturalnego sposobu"? warte wysiłku, aby nauczyć się posługiwać 5 palcami?


title: Podjęto decyzję o zbudowaniu aplikacji skupionej wokół nowego API i nagle API zostało porzucone

text: To nie jest wielka sprawa, ale koledzy/znajomi zwrócili się do mnie z prośbą o zbudowanie aplikacji przy użyciu ich nowego interfejsu API. Istniał dla mnie pewien potencjał zarobku w zależności od wykorzystania aplikacji. Spędziłem sporo czasu na dopracowywaniu aplikacji mobilnej, wychodząc z założenia, że przy poważnym podejściu firma nie przesunie się nagle i nie zrezygnuje z API. Nie dowiedziałem się nawet, że API nie działa, mimo że miałem w produkcji aplikację, która na nim bazowała… W większości przypadków budowanie aplikacji było nauką, która mi się podobała, ale nie sądzę, że poświęciłbym cały wysiłek, gdybym wiedział, że firma nie traktuje API tak poważnie, jak wyraźnie wskazywały na to, że skontaktowali się ze mną. Jak, jeśli w ogóle, byś zareagował?


title: Jak mogę umieścić wiele hierarchicznych formularzy na jednej stronie internetowej i uniknąć bałaganu?

text: Jesteśmy grupą programistów pracujących nad aplikacją webową, która akceptuje formularze wypełniane i przesyłane przez naszych użytkowników i prezentuje je w całości. Nasz główny widok formularza wygląda tak: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/cReBC.png) Na tej stronie znajduje się wiele formularzy. Formularz po lewej to formularz nadrzędny, który zawiera ogólne pytania dotyczące projektu. Prawe panele to bardziej szczegółowe pytania i dotyczą podprojektów. Formularze są długie i zawierają w sobie różne typy właściwości (elementy formularza). Formularz nadrzędny jest statyczny i otwiera się podczas ładowania strony. Nie daliśmy żadnych opcji, aby go zamknąć lub zminimalizować. Prawe panele (formularze podrzędne) są domyślnie zwijane i otwierane kliknięciem, a następnie renderowana jest zawartość. Ma to na celu skrócenie czasu ładowania strony. Zamieściłem adnotację na zdjęciu, więc nie muszę sam wszystkiego wyjaśniać. Wszystko na zdjęciu, które ma wokół siebie prostokąt, jest samo w sobie widokiem (szkielet). Aby jeszcze bardziej skomplikować, spójrz na ten inny obrazek: ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/BJs3N.png) Spójrz na widok suwaka zdjęć. Każdy slajd w tym suwaku to znowu widok sam w sobie. Przyciski manipulacyjne są renderowane wraz z każdym slajdem, więc przesuwanie ich w inne miejsce (np. obok przycisków „przesuń w lewo/w prawo”) jest dość uciążliwe. Dlatego tego nie zrobiliśmy. Teraz spójrz na pola formularza wnuków, które oznaczyłem jako „właściwości z relacjami”. Jeśli je zmienisz, zostaną podświetlone (z żółtym pustym kolorem wokół nich), a to zmieni wiele innych rzeczy w "formie potomnej" i "formie rodzicielskiej". Poradziliśmy sobie z takim rodzajem relacji podczas zapisywania strony, ale ten rodzaj relacji zwiększa złożoność widoku. Myślę, że już to rozgryzłeś, ale i tak to powiem: kod wymknął się spod kontroli. To naprawdę puszka robaków. W pliku widoku podstawowego znajduje się ponad 30 funkcji i 15 innych widoków dołączonych do tej strony. Wiele osób pracowało nad tym widokiem, a ponieważ jest to duży plik (plik bazowy: 2500 LOC), wszyscy po prostu próbowali wykonać swoje zadanie i nie myśleć o refaktoryzacji lub uproszczeniu projektu strony. Strona jest błędna, ponieważ nie jest rozszerzalna. Na przykład formularze wnuków mają jeszcze dwa poziomy formularzy podrzędnych i nie możemy ich dodać do strony. Od wielu dni dyskutujemy o tym, jak przeprojektować tę stronę, ale nikt z nas nie wpadł na dobry pomysł. Teraz pytanie brzmi, jak możemy przeprojektować tę stronę, aby zachowała całą funkcjonalność, ale z dużo prostszym kodem? Jesteśmy w porządku z całkowitym przeprojektowaniem, całkowicie nową koncepcją. Chcemy napisać całość od zera. Wszystkie Twoje pomysły są doceniane.


title: pokaż różne xibs z wnętrza pliku xib

text: Jestem nowicjuszem w programowaniu Mac, więc oto moje pytania: Tworzę aplikację dla Maca, która ma dwa pliki xib MainViewController i SecondViewController w MainViewController, jest przycisk, w którym wywołuje drugi kontroler widoku. Używam XCode 5 Jak to zrobić? i jak wyświetlić wideo na komputerze Mac w XCode 5


title: Jaka jest abstrakcyjna nazwa Dysku, Katalogu i pliku?

text: Chcę nadać ładną nazwę mojej funkcji podczas zwracania dysku, katalogu i pliku. Czy możesz zaproponować dobrą abstrakcyjną nazwę dla tego trio? To jest funkcja. static IEnumerable<string> GetDriveDirectoriesAndFile(string path) { if (path.Contains('/')) { path = path.Replace('/', '\\'); } if (path.Contains('\\')) { return path.Split('\\'); } zwraca null; } Dzięki, Omkar


title: Czy istnieje lista typów „wzorca projektowego” typowych algorytmów?

text: Czy istnieje gdzieś lista popularnych/popularnych algorytmów w stylu „wzorca projektowego”? Konkretnie coś, co ma podobny format na wzór: **Nazwa algorytmu:** np. Szybkie sortowanie, Sortowanie bąbelkowe itp. **Problem:** Opis stereotypowego problemu, który algorytm ma rozwiązać ** Opis:** Opis rozwiązania **Wdrożenie:** Przykładowe kody rozwiązania **Duża ocena O:** Nie wymaga wyjaśnień **Podobne algorytmy:** Algorytmy rozwiązujące ten sam problem na różne sposoby lub podobne problemy Bardzo podoba mi się styl listy wzorców projektowych GoF i myślę, że pomogłoby mi lepiej/łatwiej nauczyć się różnych algorytmów, gdybym mógł znaleźć zasób podobny pod względem organizacji.


title: Proste vs złożone (ale wydajne) rozwiązanie - które wybrać i kiedy?

text: Programuję od kilku lat i często staję przed dylematem. Istnieją dwa rozwiązania - * jedno jest proste, tzn. proste podejście, łatwiejsze do zrozumienia i utrzymania. Wiąże się to z pewną redundancją, dodatkową pracą (dodatkowe IO, dodatkowe przetwarzanie) i dlatego nie jest najbardziej optymalnym rozwiązaniem. * ale inne stosuje podejście złożone, trudne do wdrożenia, często obejmujące interakcję między wieloma modułami i jest rozwiązaniem wydajnym pod względem wydajności. Do którego rozwiązania powinienem dążyć, jeśli nie mam do spełnienia warunków umowy SLA o wysokim poziomie wydajności, a nawet proste rozwiązanie może spełnić warunki umowy SLA dotyczącej wydajności? Czułem pogardę wśród moich kolegów programistów dla prostego rozwiązania. Czy dobrą praktyką jest wymyślenie najbardziej optymalnego, złożonego rozwiązania, jeśli Twoja SLA wydajności może zostać spełniona za pomocą prostego rozwiązania?


title: Najlepsze praktyki dotyczące pakowania wyliczeń Java?

text: Jakie są najlepsze praktyki dotyczące pakowania wyliczeń Java? czy jest to osobny plik dla każdego wyliczenia? lub posiadanie tego samego pliku dla wszystkich wyliczeń? Jakie są plusy i minusy?


title: W jaki sposób zachowana jest integralność danych w środowisku klastrowym po zmianie schematu?

text: ## Scenariusz Środowisko klastrowe z N identycznymi węzłami aplikacji współdziałającymi z pojedynczą relacyjną bazą danych. ## Problem Czy można zaktualizować węzły do nowej wersji aplikacji, która wymaga nowego schematu bazy danych **i** utrzymania integralności danych w bazie **bez** przestojów w aplikacji i **bez** utraty jakieś dane lub kończąc na danych w niespójnym stanie?


title: Czy mogę nauczyć się pisania bezwzrokowego podczas normalnego pisania podczas kodowania?

text: Mam duży problem, ponieważ nie znam pisania bezwzrokowego. Patrzę na klawiaturę (polowanie i dziobanie). Jednak naprawdę chcę się nauczyć pisania bezwzrokowego. Próbowałem wiele razy, ale nie mam cierpliwości i czasu, aby poświęcać na to godzinę dziennie. Czy mogę więc nauczyć się pisać na klawiaturze podczas ćwiczeń w pracy? Mam na myśli ćwiczenie tych lekcji podczas kodowania. Czy ktoś wie, czy to zadziała?


title: Czy koszty są częścią wymagań?

text: Jestem nowy w analizie wymagań i mam proste pytania: Czy uwzględniłbyś budżet w wymaganiach, jeśli m.in. g. budżet wydziałów na koszty bieżące wynosi 10 tys. rocznie.


title: Co byś zmienił w C#, gdybyś mógł?

text: > **Mając prawie 60 odpowiedzi na to pytanie, jest bardzo prawdopodobne, że _twoja_ > odpowiedź została już opublikowana. Nie publikuj odpowiedzi, chyba że masz > coś nowego do powiedzenia** Załóż, że Twoje cele są takie same jak w przypadku C#. Nie chcę odpowiedzi w stylu „Zamiast tego napisałbym Pythona”. Interesują mnie tylko zmiany w samym języku - nie w standardowej bibliotece. Być może byłoby to interesujące do omówienia, ale ponieważ jest to wspólne dla wielu języków, lepiej byłoby zamiast tego omówić to w innym pytaniu. **Proszę zamieścić jeden pomysł na odpowiedź; jeśli chcesz opublikować kilka pomysłów, opublikuj kilka oddzielnych odpowiedzi. Dziękuję!**


title: Czy można skompilować język wyższego poziomu do czytelnego C++?

text: C++ jest świetnym językiem pod wieloma względami, ale niektóre rzeczy są kłopotliwe w pisaniu bez IDE. Jako użytkownik VIM byłbym bardzo interesujący, gdybym miał dostęp do języka wyższego poziomu, który umożliwiłby mi pisanie C++ z S-Expressions i prawdopodobnie z makrami podobnymi do Lisp, pozwalającymi na generowanie czystego kodu bez przepisywania tych samych wzorców w kółko. Zapytałem o freenode i przetestowałem kilka pomysłów, takich jak kompilacja Lisp->C z kompilatorami takimi jak ECL i Bigloo, ale żaden z nich nie wygenerował szczególnie czystego kodu C. Czy są jakieś prace na ten temat?


title: Czy muzyka zwiększa Twoją produktywność?

text: Chciałem wiedzieć, czy myślenie i tło dźwiękowe są tylko rozproszeniem, czy mogą być pomocne podczas programowania. Dla mnie działa to tak: kiedy piszę pseudokod lub wdrażam procedury, które są bardzo jasne w moim umyśle w języku, który mogę pisać bez wyszukiwania dokumentów, muzyka grająca w tle (głównie bardzo prosta elektronika) pomaga mnie bardzo: nadaje rytm mojemu kodowaniu i, jeśli procedury są trywialne, unikają rozpraszania uwagi, które może powodować nuda. Kiedy mam problem lub muszę spróbować naprawić błąd, po prostu mnie to rozprasza. Ponadto, jeśli utwór jest naprawdę regularny i znam go na tyle dobrze, że nie powinienem się na nim koncentrować, eliminuje nieoczekiwany hałas otoczenia, który czasami sprawia, że marnuję cenne sekundy, zanim będę mógł ponownie skoncentrować się na kodzie. * * * _Lista kontrolna Wytycznych: 1 ok, 2 mam nadzieję; 3 przypuszczam; 4 Zdecydowanie; 5 Chciałbym, żeby tak się stało; 6 Doch (Angielski powinien wdrożyć sposób na rozróżnienie podwójnych negatywów w odpowiedziach)_


title: Funkcje do generowania upływu czasu

text: Jest coś po wyjęciu z pudełka, aby wygenerować czas wygasający w php? Na przykład muszę kontrolować dostęp do systemu, myślałem o czymś do weryfikacji każdego pierwszego dnia każdego miesiąca i zrobić to w swoim kodzie. Ale to nie jest 100% bezpieczeństwa, ponieważ inny programista może usunąć ten kod linii, który weryfikuje. Wtedy pomyślałem, czy można zweryfikować na innym serwerze, czy miesięczny czas upływa, czy nie? i zwrócić wiadomość użytkownikowi, jeśli kopia wygasła, czy nie? Jaki jest najlepszy sposób na stworzenie funkcji licencjonowania na czas wygaśnięcia? czy naprawdę muszę dostać się na przykład do IonCube (Compiled Code Encoding)? Jaka jest najlepsza praktyka?


title: Jak można ulepszyć Javę, aby nie musiała już wykonywać wymazywania tekstu?

text: Oficjalny samouczek Java na temat typów ogólnych wyjaśnia wymazywanie typów i dlaczego został dodany do kompilatora: > Kiedy tworzony jest typ ogólny, kompilator tłumaczy te typy za pomocą > techniki zwanej wymazywaniem typu — procesu, w którym kompilator > usuwa wszystkie informacje związane z parametry typu i argumenty typu w ramach metody klasy lub >. Type erasure umożliwia aplikacjom Java, które używają generyków, utrzymywanie > binarnej zgodności z bibliotekami Java i aplikacjami, które zostały utworzone > przed generykami. Najprawdopodobniej było to podejście pragmatyczne, a może najmniej bolesne. Jednak teraz, gdy generyki są szeroko obsługiwane w całej branży, co można zrobić, abyśmy nie potrzebowali wymazywania tekstu? Czy jest to wykonalne bez konieczności naruszania kompatybilności wstecznej, czy jeśli jest to wykonalne, to czy jest to praktyczne? Czy ostatnie stwierdzenie w powyższym cytacie stało się autoreferencyjne? To znaczy: „usuwanie typu umożliwia aplikacjom Java, które używają typów generycznych, utrzymywanie binarnej zgodności z bibliotekami Java i aplikacjami, które zostały utworzone w wersjach Java, które wykonują wymazywanie typu”.


title: Atrybut warunkowy w XML - najbardziej zwięzłe rozwiązanie?

text: Mam za zadanie skonfigurować profilowanie warunkowe - metodę oznaczania fragmentów XML za pomocą atrybutu, który następnie zostanie użyty jako wartość warunkowa do wyodrębnienia podzbioru tego XML. Spójrz na inną definicję/przykład: Profilowanie DITA XML to dokumenty, które są odpowiednikami książek drukowanych - tj. dokumentów, które są często oglądane przez człowieka, nawet jeśli pośrednio. Dlatego patrzę na kilka wymagań tutaj: 1. utrzymywanie krótkiej listy wartości - aby nie wpływało to na czytelność dokumentu 2. możliwość przetwarzania za pomocą standardowych narzędzi XML - lista oddzielona spacjami wewnątrz atrybutu jest nadal prawdopodobnie w porządku, ale wolałbym nie używać zbyt wielu regexpów dla tego 3. bądź oczywisty dla różnych użytkowników, w tym osób trzecich, które treści trafiają tam 4. Bądź łatwy w utrzymaniu w przyszłości Dlatego jednym prostym rozwiązaniem jest: <test condition=" print epub"/> <warunek testowy="web kf8 app mobi"/> Problem z tym: 1. Wraz ze wzrostem listy wartość atrybutu może być nieco gadatliwa 2. Trzeba wyraźnie określić każdą wartość, nawet jeśli jest scenariusz tego kontra wszystko inne Dlatego przyglądam się również innym podejściom, takim jak: 1. Używanie modyfikatorów "+" i "-", styl htaccess Apache do nadpisania domyślnego kaskadowania profilowania - domyślnie cała zawartość trafia wszędzie i jeśli chcesz trochę wykluczyć, po prostu mówimy "-rozpalaj". Wymaga parsowania całego drzewa, nie jest obsługiwany przez narzędzia edycyjne i trzeba wyregulować wartość atrybutu nieco głębiej... 2. Użycie pliku pośredniego do zdefiniowania grup wartości, takich jak „inne” lub „niedrukowane” , przykład tego w DITA. Pozwala na zwięzły XML, a także różne grupowanie i wartości dla każdego dokumentu, ale tworzy pewien poziom abstrakcji, który może sprawić, że będzie to trochę mniej oczywiste dla strony trzeciej? W sumie, jeśli otrzymałeś taki XML i miałeś za zadanie go przetworzyć, jaką opcję wolałbyś otrzymać? Jeśli masz takie doświadczenia, nawet w niepowiązanych obszarach, takich jak buildy, nie wahaj się komentować!


title: Czy rzeczywiście BDD mogą pisać osoby nie będące programistami?

text: Behavior-Driven Development ze swoją charakterystyczną składnią scenariuszy „Given-When-Then” jest ostatnio bardzo popularna ze względu na jej możliwe zastosowania jako obiekt graniczny do oceny funkcjonalności oprogramowania. Zdecydowanie zgadzam się z tym, że Korniszon, lub jakikolwiek inny skrypt definicji funkcji, który preferujesz, jest DSL czytelnym dla biznesu i już zapewnia wartość jako taką. Jednak nie zgadzam się, że jest _zapisywalny_ przez nie-programistów (podobnie jak Martin Fowler). Czy ktoś ma relacje ze scenariuszami pisanymi przez nie-programistów, a następnie oprzyrządowanymi przez programistów? Jeśli rzeczywiście istnieje konsensus co do braku możliwości zapisu, to czy widziałbyś problem z narzędziem, które zamiast _zaczynać_ od scenariuszy i oprzyrządować je, _generuje_ scenariusze czytelne dla biznesu na podstawie rzeczywistych testów? **Aktualizacja:** jeśli chodzi o narzędzie „generator scenariuszy”, to oczywiście nie odgadłoby w magiczny sposób języka biznesowego ;) Ale tak jak obecnie używamy dopasowywania regexp do tworzenia testów w podejściu top-down (w wymiarze abstrakcji) , możemy użyć konstruktorów ciągów do tworzenia scenariuszy w podejściu oddolnym. Przykład „tylko dać pomysł”: Biorąc pod uwagę, że jestem na stronie ${test.currentPage.name} I klikam na element ${test.currentAction.element}…


title: Black Hat Hakerzy kontra programiści?

text: Pojawiło się kolejne pytanie, które tutaj miałem, zdecydowałem się na system weryfikacji programowania, który wymaga systemu weryfikacji sprzętu, klucza oprogramowania i systemu nazwy/hasła. Teraz ludzie mówią, że hakerzy ominą wszelkie nowe zabezpieczenia, co może być prawdą, ale mam kilka pytań. Musi istnieć równowaga między programistami programującymi a hakerami kradnącymi oprogramowanie, w przeciwnym razie programy nie powstałyby i nie bylibyśmy tam, gdzie jesteśmy dzisiaj. Co to za równowaga? 5%, 10%, 20%, 50%? 1. Czym jest zbyt duże bezpieczeństwo dla użytkownika końcowego? 2. Czym jest zbyt mały poziom bezpieczeństwa, aby haker mógł po prostu przejść bez problemu? 3. Jeśli Twoje oprogramowanie stanie się popularne, czego powinieneś się spodziewać lub zaakceptować jako akceptowalną stratę? 4. Dlaczego powinniśmy akceptować czarnych hakerów jako sposób na życie?


title: Czy podwójna zmiana jako kierownik projektu wpływa na produktywność programisty?

text: Czy zdarzyło Ci się kiedyś, że jesteś dobrym programistą, ale nagle musisz kierować zespołem lub też odpowiadać za niektóre działania PM? Czy zauważyłeś, że wpłynęło to na twoją produktywność? Jak sobie z tym poradziłeś? Uwielbiam swoją pracę, ale czasami czuję się o wiele szczęśliwszy jako programista, a dodatkowy ciężar bycia kierownikiem projektu ma obecnie wpływ na moją produktywność jako programisty. Co proponujecie jako środki zaradcze? Obecnie nie mam alternatywy, aby zrezygnować z pracy – w zasadzie dlatego, że pracuję dla startupu, którego współzałożycielem.


title: Pomóż mi nauczyć się programować z pokorą?

text: Chciałem zadać to pytanie, abym mógł do niego wrócić i aby służyło mi jako **stałe przypomnienie**. Przez całe życie miałem kamienie milowe, w których siadałem i naprawdę oceniałem siebie. Za każdym razem, gdy znajdę coś negatywnego, staram się to naprawić. Jednym z tych negatywów jest duma lub arogancja. Niestety, natura programowania prowadzi do dużej ilości paliwa, aby bez końca wypełniać własne ego. Czy możesz dać mi jakieś mądre słowa, które mogą mi służyć jako przypomnienie, abym ** „zjeść skromne ciasto”**? Chcę trzymać w ryzach swoją arogancję, nawet jeśli ta arogancja ma wagę ziarnka piasku.


title: o procesie budowania

text: Programowałem w Obj C i C, ale do tej pory stwierdziłem, że nie w pełni rozumiem kroki związane z przenoszeniem oprogramowania z kodu źródłowego do pliku wykonywalnego, znalazłem ten obraz, który to wyjaśnia (przepraszam, że nie mogłem przesłać, ponieważ jestem nowy, ale Nadal nie rozumiem, kiedy debugger, make, builder wchodzą do akcji, kiedy idzie do asm, a kiedy do binarnego * czy kroki są takie same dla OOP lub dla proceduralnych? * co z różnymi językami? python, php, objc, C, te same kroki?Wielkie dzięki!


title: Zwiększ produkcję, określając komputer programistyczny

text: Ciekawy post Setha Grodina zwiększający produktywność poprzez określenie jednego urządzenia do pracy i jednego do wszystkiego innego. Czy byłbyś bardziej produktywny, gdybyś programował tylko na jednym komputerze i zmuszał się do surfowania, czatowania, e-maili i grania w gry na innym urządzeniu, czy też ograniczyłoby to produktywność? Gdyby twój szef zobaczył cię na telefonie lub tablecie przez godzinę, podniósłby czerwoną flagę. Może być problem, jeśli połączysz służbową i osobistą pocztę e-mail. Oczywiście nie działa, jeśli nie masz innego urządzenia. EDYCJA: może korzyścią dla programisty byłoby posiadanie więcej niż jednego komputera zamiast tylko szybszego komputera i większej liczby monitorów?


title: Jak oceniasz, czy zarabiasz wystarczająco dużo?

text: Jak oceniasz, ile uważasz, że powinieneś zarabiać jako młodszy programista?


title: Wiedza biznesowa w dużej organizacji finansowej?

text: Jako programista pracujący w branży finansowej dostałem niedawno projekt, który jest aplikacją administracyjną dla funduszy hedgingowych (używaną do obliczania NAV, alokacji aktywów itp.) Z biznesowego punktu widzenia to dobra rzecz. Kiedy myślimy o naszym „następnym” projekcie, zazwyczaj impulsem jest myślenie w kategoriach technologii. np.: „Chcę pracować nad projektem, który korzysta z SOA/chmury itp. itp.” Chciałbym wiedzieć, czy ktoś podczas planowania kariery bierze również pod uwagę biznesowy aspekt przyszłego projektu. czyli co robi aplikacja. Czy ktoś kiedykolwiek myśli w ten sposób: „Chcę pracować nad systemem transakcyjnym, abym mógł lepiej zrozumieć rynki kapitałowe”. zamiast „Chcę pracować nad projektem, który używa SOA/chmury itp.” Mówię to, ponieważ wydaje mi się, że w dziedzinie finansów na wyższym stanowisku dobra wiedza biznesowa dobrze się opłaca. Może więc facet, który zna się na biznesie, ale może nie tyle najnowszych technologii ma przewagę? Programista rockstar wydaje się bardziej odpowiedni do agresywnego startu. Szczególnie duże stare organizacje finansowe rzadko inwestują w technologię tylko dla „fajnego czynnika”. Nie?


title: Dobry projekt i jak osiągnąć Low Coupling?

text: co myślisz o tym projekcie? ![tutaj podaj opis obrazka](http://i.stack.imgur.com/VmBGO.png) Na tym obrazku przedstawiłem zależności między pakietami. Chciałbym zmniejszyć sprzężenie między nimi, ale czy masz jakiś pomysł, jak to zrobić? Myślę, że nie da się go bardziej zredukować. Pakiet Preferencje odpowiada za zarządzanie opcjami programu, Persistence zamiast zapisywania ich w pamięci. Applogia i model znajdują się w warstwie domeny. Z góry dziękuję!


title: Czy istnieje skuteczny sposób na wyrównanie zdegenerowanych ciągów?

text: Mam zdegenerowany łańcuch `S1=xadcdax`, gdzie `x` można zastąpić dowolnym z czterech znaków `a`, `b`, `c` lub `d`. Ten ciąg `S1` jest dopasowany do innego nierozdrobnionego ciągu `S2=dcbaa`. Mogę najpierw użyć brutalnej siły, aby znaleźć wszystkie możliwe ciągi `S1`, co wymaga `4^n` (`n` to liczba degeneratów w ciągu), więc złożoność wynosi `4^2`. Następnie dla każdego ciągu znaków `S1` dopasowanego do `S2` przy użyciu programowania dynamicznego, które wymaga `(i x j)` czasu działania (gdzie `i` jest długością `S1` a `j` jest długością `S2 `). Ale całkowity czas działania będzie wynosił `4^n x ij = 4ij^n`, co jest dość powolne. Czy jest do tego bardziej wydajny algorytm?


title: Jak mogę się nauczyć starej szkoły?

text: Niedawno przeczytałem ten artykuł w Internecie i zacząłem kwestionować swoją wiedzę. Teraz poszedłem na studia uniwersyteckie i uzyskałem dyplom z wyróżnieniem, programuję w c++ używając wskaźników, ale zastanawiam się, czy zrobiłbym to na zajęciach Joela. Mieliśmy dwa moduły programistyczne, ale głównie jestem samoukiem. Więc chcę wiedzieć, jak mogę się nauczyć rzeczy wymienionych w artykule, ale bez tego, że nie czuję się jak pusta wiedza samodzielna bez konieczności robienia kolejnego 3-letniego dyplomu? Jak mogę wrócić do prawdziwych podstaw i nauczyć się ich właściwie, abym był pewny swoich umiejętności i nie czuł, że mam ogłupiałą wiedzę na temat współczesnego stopnia?


title: alternatywy dla zagnieżdżonych try-catch dla awaryjnych

text: Mam sytuację, w której próbuję odzyskać przedmiot. Jeśli wyszukiwanie się nie powiedzie, mam kilka rozwiązań awaryjnych, z których każda może się nie powieść. Kod wygląda więc tak: try { return repository.getElement(x); } catch (NotFoundException e) { spróbuj { return repository.getSimilarElement(x); } catch (NotFoundException e1) { spróbuj { return repository.getParentElement(x); } catch (NotFoundException e2) { //nie można odzyskać throw new IllegalArgumentException(e); } } } To wygląda okropnie brzydko. Nienawidzę zwracać wartości null, ale czy jest to lepsze w tej sytuacji? Element e = return repozytorium.getElement(x); if (e == null) { e = repozytorium.getSimilarElement(x); } if (e == null) { e = repozytorium.getParentElement(x); } if (e == null) { throw new IllegalArgumentException(); } powrót e; Czy są inne alternatywy? Czy używanie zagnieżdżonych bloków try-catch jest antywzorcem? jest powiązany, ale odpowiedzi są w stylu „czasami, ale zwykle można tego uniknąć”, nie mówiąc, kiedy i jak tego uniknąć.


title: Przebaczenie w Pythonie a pozwolenie i pisanie na klawiaturze

text: W Pythonie często słyszę, że lepiej "błagać o wybaczenie" (łapanie wyjątków) zamiast "prosić o pozwolenie" (sprawdzanie typu/warunku). Jeśli chodzi o wymuszanie pisania kaczką w Pythonie, spróbuj: x = foo.bar z wyjątkiem AttributeError: pass else: do(x) lepiej lub gorzej niż if hasattr(foo, "bar"): do(foo.bar) else: przejść pod względem wydajności, czytelności, „pythonic” lub innego ważnego czynnika?


title: Która z poniższych strategii jest najlepszą strategią wstrzykiwania zależności?

text: Pracuję nad projektem Java, który wykorzystuje framework do wstrzykiwania zależności zbudowany przez samą firmę. Framework wymusza następującą konwencję nazewnictwa: załóżmy, że masz klasę `Foo`, która zależy od interfejsu o nazwie `org.company.IBar`: class Foo { @Injection private IBar bar; ... } wtedy framework wyszuka klasę o nazwie `org.company.implementation.Bar`, utworzy nową instancję tej klasy i przypisze ją do atrybutu `Foo.bar`. Framework pozwala jednak na pewne dostosowanie. W adnotacji `@Injection` można zadeklarować własną fabrykę, dzięki której można egzekwować własne konwencje. Ale za każdym razem, gdy chcesz użyć pewnej fabryki, będziesz musiał zadeklarować ją jawnie w adnotacji nad atrybutem, który ma zostać wstrzyknięty. Ta strategia spowoduje jednak, że Twoje klasy będą ze sobą ściśle powiązane, ponieważ deklarując zależność od interfejsu, zobowiązujesz się już do danej implementacji. Postanowiłem więc zaimplementować własną fabrykę, aby ręcznie wykonywać wstrzykiwanie zależności. Jest to w zasadzie klasa, która tworzy instancje wszystkich obiektów aplikacji i łączy je ze sobą. Każdy obiekt ma swój zakres (singleton lub prototyp) kontrolowany przez fabrykę. Pomyśl o pliku konfiguracyjnym Spring IoC (ale napisanym w Javie zamiast XML). Moi koledzy nie aprobowali tej decyzji. Ich argumentem jest to, że stworzona przeze mnie fabryka „ma zbyt wiele obowiązków”, a tworzenie instancji każdego obiektu należy pozostawić ramom. Jeśli potrzebujesz użyć innej konwencji, powinieneś stworzyć niestandardowe fabryki dla każdej klasy (jak opisano powyżej). Według nich zdecydowanie nie powinna istnieć jedna fabryka, w której tworzone są wszystkie obiekty. Zdecydowanie nie zgadzam się z ich argumentacją. Fabryka ma _tylko jeden_ obowiązek: tworzenie grafu obiektów. Jeśli zajdzie potrzeba zmodyfikowania tego wykresu, tylko jedna klasa będzie musiała się zmienić. Ale może mi tu czegoś brakuje. Jakie są zalety i wady każdej strategii?


title: Metody zarządzania/dokumentowania „jednorazowych” raportów

text: Jestem programistą, który zajmuje się również bazami danych i otrzymuję wiele tak zwanych jednorazowych i powtarzających się żądań raportów. Pracuję w firmie, która ma bazę danych SQL Server, z którą integrujemy dane innych firm, a także mamy kilku zewnętrznych dostawców, których musimy używać ich zastrzeżonego systemu raportowania, aby wyodrębniać dane w formacie zwykłego pliku, z których nie mamy zintegrować z SQL Server ze względów bezpieczeństwa. Aby wygenerować wiele takich raportów, muszę przeszukiwać dane z różnych systemów, pisać małe skrypty łączące dane z osobnych systemów, płakać, ciągnąć za włosy, przeklinać nazwisko ostatniego gościa, który zrobił raport przede mną itp. **Moje pytanie jest, jakie są dobre metody dokumentowania kroków podjętych w celu wygenerowania tych raportów, aby następna biedna dusza, która musi to zrobić, nie przeklinała mojego imienia?** Od teraz mam tylko folder z podfolderami na projekt z zaznaczonymi i skrypty, które wygenerowały ostatni raport, ale wydaje się, że to rozwiązanie „biednego człowieka”. :)


title: Jak zaimplementować Cache w aplikacjach webowych?

text: To naprawdę dwa pytania. Robię projekt dla uniwersytetu do przechowywania statystyk baseballistów, ale z danych baseballowych muszę obliczyć rok dla gracza, który jest wyświetlany. Tłem jest, powiedzmy, 10 000 użytkowników, którzy trafili do odtwarzacza „Alex Rodriguez”, aplikacja musi obliczyć 10 000 statystyk A-Rod przez lata, zamiast po prostu odczytać je z miejsca, w którym jest zapisany czasowo. Proszę bardzo: 1. Jaka jest najlepsza metoda buforowania tego typu danych? Czy muszę używać tej samej bazy danych i niektórych wartości czasowych w tej samej bazie danych, czy też utworzyć w tym celu usługę sieci Web? 2. Jaką lekturę o buforowaniu sieciowym polecasz?


title: Pytania dotyczące identyfikacji komponentów w MVC

text: Obecnie pracuję nad aplikacją klient-serwer w node.js, Express, mustache i MySQL. Uważam jednak, że to pytanie powinno dotyczyć głównie języka i frameworka. Po raz pierwszy robię prawdziwą aplikację MVC i mam problem z określeniem, co dokładnie oznacza każdy składnik. (Tworzyłem już aplikacje internetowe, które być może można by nazwać MVC wcześniej, ale nie nazwałbym ich tak pewnie) Mam `server.js`, który spaja całą aplikację. Inicjuje wszystkie inne komponenty (w tym połączenie z bazą danych i to, co myślę, że są "modelami" i "widokami"), odbiera żądania HTTP i decyduje, których "widoków" użyć. Czy to oznacza, że mój plik `server.js` jest kontrolerem? A może mieszam kod, który tam nie pasuje? Na jakie komponenty powinienem rozbić plik `server.js`? Kilka przykładów kodu z pliku server.js: var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : 'sqlrevenge', database : 'blog' }); //... app.get("/login", function (req, res) { //Funkcja obsługuje żądanie GET dla formularzy logowania if (process.env.NODE_ENV == 'DEVELOPMENT') { mu.clearCache() } session.session_from_request(connection, req, function (err, session) { if (err) { console.log('index.js session error', err); session = null; } login_view.html(res, user_model, post_model, session, mu); //Moje funkcje widoku nazwałem "html" na wypadek, gdybym chciał dodać inne typy danych wyjściowych (takie jak API JSON), czy powinienem wtedy wybrać całkowicie oddzielne widoki? }); } ); Mam inny plik o nazwie `session.js`. Otrzymuje obiekt `cookies`, odczytuje przechowywane dane, aby zdecydować, czy jest to ważna sesja użytkownika, czy nie. Zawiera również funkcję o nazwie `login`, która zmienia wartość plików cookie. * Po pierwsze, myślałem, że będzie to część kontrolera, ponieważ zajmuje się on wprowadzaniem danych przez użytkownika i dostarczaniem danych do modeli. * Potem pomyślałem, że może to model, ponieważ zajmował się danymi/bazą danych aplikacji, a dane, które dostarcza, są używane przez widoki. * Teraz nawet zastanawiam się, czy można to uznać za `View`, ponieważ wyświetla dane (pliki cookie są częścią nagłówków HTTP, które są wyprowadzane)


title: Jak odróżnić publiczne interfejsy API od interfejsów używanych do testowania/mocowania?

text: Struktury Mocking są przydatne do tworzenia obiektów pozornych, które izolują testowany kod od otaczającego go środowiska oprogramowania. Niektóre frameworki do naśladowania nie mogą naśladować metod niewirtualnych, więc wymagają utworzenia „Interfejsu” dla każdej klasy, jeśli nie chcesz, aby metody były „wirtualne”. Jak odróżnić te interfejsy od „prawdziwych”? Oznacza to, że jeśli masz publiczny interfejs API, czy nazywasz interfejsy, które chcesz, aby klient używał czegoś innego, czy ukrywasz interfejsy testowe w oddzielnym zestawie lub przestrzeni nazw? Na marginesie, czy naprawdę konieczne jest tworzenie wszystkich tych interfejsów? Nie podoba mi się pomysł, aby wszystkie moje metody były „wirtualne”, ale _naprawdę_ nie podoba mi się pomysł tworzenia tylu interfejsów tylko po to, aby były dostępne dla szkieletu szyderczego.