title: współdziel kod między metodami czekowymi i procesowymi

text: Moim zadaniem jest refaktoryzacja starej biblioteki do przetwarzania danych wektorowych GIS. Klasa główna zawiera zbiór zarysów budynków i oferuje różne metody sprawdzania spójności danych. Te funkcje sprawdzające posiadają opcjonalny parametr, który pozwala na wykonanie jakiegoś procesu. Na przykład: std::vector<Point> checkIntersections(int process_mode = 0); Ta metoda sprawdza, czy niektóre kontury budynków przecinają się, i zwraca punkty przecięcia. Ale jeśli przekażesz argument inny niż null, metoda zmodyfikuje kontury, aby usunąć przecięcie. Myślę, że jest to dość złe (na stronie telefonicznej czytelnik nie zaznajomiony z bazą kodu założy, że metoda o nazwie `checkSomething` wykonuje tylko sprawdzenie i nie modyfikuje danych) i chcę to zmienić. Chcę również uniknąć powielania kodu, ponieważ metody sprawdzania i przetwarzania są w większości podobne. Myślałem więc o czymś takim: // private worker std::vector<Point> workerIntersections(int process_mode = 0) { // to odpowiednik obecnego checkIntersections, może wykonać // proces w zależności od process_mode } // publiczne interfejsy do sprawdzania i przetwarzania std::vector<Point> checkIntersections() /* const */ { workerIntersections(0); } std::vector<Point> processIntersections(int process_mode /*Mam różne tryby procesu*/) { workerIntersections(process_mode); } Ale to zmusza mnie do złamania const poprawności, ponieważ workerIntersections jest metodą niestałą. Jak mogę oddzielić sprawdzanie i przetwarzanie, unikając powielania kodu i zachowując poprawność stałej?


title: „Zwinne zasady, wzorce i praktyki w C#”: czy to tylko tłumaczenie .NET popularnej książki Wujka Boba?

text: Znalazłem tę książkę sprzedawaną na Amazon Agile Principles, Patterns and Practices in C#, napisaną przez Roberta C Martina i Micaha Martina. Czy jest to tylko port .NET starszego, bardziej popularnego Agile Software Development, Principles, Patterns i Practices? A może jest to tylko nowa książka, która próbuje wykorzystać popularność innej książki? Jeśli jestem programistą .NET, który nie czytał żadnej książki, którą poleciłbyś?


title: Jak „przekonwertować” projekt w stylu Static Access na styl IoC/DI?

text: Czy istnieją najlepsze podejścia do refaktoryzacji projektu programistycznego, który został wcześniej napisany za pomocą antywzorca statycznego odniesienia (większość klas odwołuje się w pewnym momencie do statycznego ziarna, w którym wszystkie jego zmienne są publiczne). , na przykład zobaczysz coś takiego: `EvilClass.Variable = returnABooolean()` Następnie w innej klasie zobaczysz coś takiego: if(EvilClass.Variable == foo){ doSomething();}else{ doSomethingDifferent(); } Do niedawna pracowałem z tym wzorcem, ponieważ nie chciałem mieszać stylów i pomylić stylów.Ale chcę powoli, ale pewnie „naprawić” ten projekt. jestem jedynym deweloperem w tym temacie i nie mam czasu, aby po prostu usiąść i dokonać refaktoryzacji (w przeciwnym razie naciskałbym na pełne przepisanie!). Czy są jakieś najlepsze praktyki, o których należy pamiętać podczas pracy z/naprawiania tego rodzaju projekt/problem?


title: Kolejność oceny wyrażeń w Clojure?

text: Obecnie uczę się Clojure (mój pierwszy funkcjonalny język programowania) i ciekawi mnie kolejność jego oceny. Oto przykład: `(take 10 (cykl [1 2 3]))` Jeśli wyrażenie `cycle` nie zostało opakowane w wyrażenie `take`, spowoduje to błąd pamięci, ponieważ iteruje w nieskończoność przez wektor . Skąd więc Clojure _wie_, że zostało opakowane wyrażeniem `take`? (Jeśli używam tutaj niewłaściwej terminologii, też byłbym wdzięczny za szturchnięcie!)


title: Wybór notacji modelowania procesu

text: Jest wątpliwe, czy to pytanie naprawdę należy tutaj, ale w każdym razie nie pasuje do Stack Overflow ani do żadnej innej witryny Stack Exchange. Więc zaczynam. ## Cel Mój obecny projekt peta polega na stworzeniu narzędzia programowego do generowania kodu ze specyfikacji procesów biznesowych. Dane wejściowe programu to... * Diagramy procesów (oczywiście bardzo szczegółowe!) * Interfejsy użytkownika, jeśli to konieczne, w celu zautomatyzowania tych czynności * Identyfikacja interfejsów z programami innych firm, już istniejącymi lub planowanymi później A wyjściami programu są... * Skrypty tworzenia tabel, widoków i procedur składowanych * Kod aplikacji (CRUD, przepływ informacji między procesami/działaniami/użytkownikami, itp.) ## Problem Cóż, nadal nie wiem, który proces modelowania _notacja_ Powinienem użyć. ## Alternatywy Osobiście bardzo lubię diagramy EPC (event-process chain) ze względu na prostotę ich struktury: * Przepływ procesu musi zaczynać się wydarzeniem i kończyć się wydarzeniem. Jeśli istnieje kilka alternatywnych odgałęzień, ta zasada dotyczy wszystkich odgałęzień i możliwych przepływów. * Wydarzenia mogą wywołać zero lub więcej działań. Jeśli wywołują zero działań, są zdarzeniami końcowymi. Jeśli wyzwalają dwie lub więcej czynności, należy użyć otwarcia gałęzi. * Po zakończeniu działanie musi wywołać dokładnie jedno zdarzenie. * Działania mogą być wywołane przez jedno lub więcej zdarzeń. Jeśli są wyzwalane przez dwa lub więcej zdarzeń, należy użyć zamknięcia gałęzi. * Wszystko inne (tj. wszystko, co nie jest wydarzeniem lub działaniem; np. personel, zasoby, materiały fizyczne, informacje) można dodać po wypełnieniu opisu przebiegu procesu. Jednak przynajmniej sądząc po innych programistach, których znam, diagramy EPC są niepopularne. Wszyscy inni wydają się używać BPMN, które są oczywiście doskonałe do opisywania aspektów funkcjonalnych / odpowiedzialności (tj. Kto wykonuje każdą czynność), ale są straszne we wszystkim innym, ponieważ pasy przeszkadzają. ## Ograniczenia Inne notacje, które znam, ale wyraźnie odrzuciłem to... * **Diagramy sekwencji UML:** Ponieważ diagram musi być stworzony dla każdego alternatywnego przepływu, którego koszt byłby zbyt wysoki dla użytkowników mojego narzędzia. * **IDEF:** IDEF0 świetnie nadaje się do mapowania przepływów informacji, ale IDEF3 to okropna notacja przepływu procesu: na tym poziomie nie powinno być dozwolone gotos. ## Pytania Jakich notacji procesu użyłeś? Którą poleciłbyś mi do mojego projektu?


title: Koszt uruchomienia Windows App Server

text: Chcę wiedzieć, jaki jest koszt uruchomienia serwera aplikacji systemu Windows. Wiem, że koszt uruchomienia serwera Linux z serwerem aplikacji opartym na Javie jest prawdopodobnie zerowy. Jaki jest koszt uruchomienia serwera opartego na systemie Windows, na którym wszystkie aplikacje są napisane w języku C#? Zakładam, że to tylko koszt licencji kopii systemu Windows Server. Czy to prawda? Czy są jakieś inne ukryte koszty hostingu w systemie Windows? Myślę, że dzięki hostingowi opartemu na chmurze można wtedy uniknąć tych kosztów licencji.


title: Jak zaprojektować RESTful Web Api do reprezentowania zasobów

text: Zajmuję się tworzeniem interfejsu API sieci Web ASP.NET Web Api 2 RESTful z .NET Framework 4.5.1 i C# i próbuję zrozumieć, jak udostępniać zasoby za pośrednictwem Web Api: Wyobraź sobie, że jestem właścicielem grupy i jestem jedyny, który może dodawać nowych użytkowników do tej grupy (próbuję symulować grupę WhatsApp). To jest moja klasa C# dla użytkownika: public class User { public int UserId { get; ustawić; } ciąg publiczny Nazwa_użytkownika { get; ustawić; } public Lista<Grupa> Grupy { get; ustawić; } public Lista<Grupa> Posiadane Grupy { get; ustawić; } } I klasa Group: public class Group { public int GroupId { get; ustawić; } ciąg publiczny NazwaGrupy { get; ustawić; } publiczny Właściciel Użytkownika { get; ustawić; } public Lista<Użytkownik> Członkowie { get; ustawić; } } Jak mam ujawnić członków należących do grup użytkowników w RESTful Web Api? Myślę, że muszę to ujawnić w ten sposób: "api/users/{ownerId}/groupsOwned/{groupId}/members/" Zezwalam `PUT` na modyfikację grupy w celu dodania nowego członka i prawdopodobnie `GET` na zdobądź wszystkich członków. Jakakolwiek rada?


title: Jak poznać algorytmy grafowe i niektóre zastosowania w świecie rzeczywistym?

text: Czytałem prace Franco Morettiego, ale szukam czegoś bardziej technicznego i być może o szerszym zakresie, jeśli to możliwe. W szczególności chcę poznać techniki, których programiści używają do zbierania informacji ze złożonych sieci, np. klastrowania. Chciałbym też wiedzieć, jakie są interesujące pytania/problemy dotyczące wykresów. Do tej pory przeglądałem tylko artykuły naukowe o bardzo konkretnych zastosowaniach. Byłbym wdzięczny za wszelkie wskazówki. Dziękuję!


title: Wybierz dane z tabeli, której nie ma w innej tabeli

text: Mam dwie tabele i chcę wybrać tylko wiersze pierwszej tabeli, której pole „id” nie znajduje się w drugiej tabeli. Jestem zupełnie nowy w SQL. Jakaś wskazówka? Załóżmy na przykład, że mam tabelę użytkowników z następującymi polami: identyfikator, hasło, lokalizacja, opis i inne pola. Mam inną tabelę, która zawiera zbanowanych użytkowników, z dwoma polami, id_user i id_blocked. Domyślam się, że SELECT u.id, u.pasword, u.location, u.description FROM `table_users` u WHERE NOT EXISTS (SELECT bl.id_blocked FROM `table_block` bl WHERE u.id = bl.id_blocked) czy to jest poprawne?


title: Praktyczny sposób na przechowywanie „rozsądnie dużej” ilości danych, które prawie nigdy się nie zmieniają?

text: Pomyśl w kategoriach wstępnie obliczonych tabel przeglądowych lub czegoś podobnego. W którym momencie bardziej sensowne jest używanie bazy danych zamiast zakodowania wartości w mojej aplikacji? Wartości nie ulegną zmianie i są ładnie oddzielone od twórców utrzymania. 100 wartości, 1k, 10k, 100k? Chcę przechowywać około 40k wartości. W tej chwili jest to wygenerowana przez maszynę instrukcja `switch` (z której VS2010 jest niezadowolony). edit: Jeśli ktoś jest ciekawy, oto jak do tego podszedłem: moje dane były przechowywane w dwóch 100k-elementowych tablicach zmiennoprzecinkowych, więc tak właśnie zrobiłem. Wygenerowanie danych zajęło około 20 sekund, więc zrobiłem to raz i zserializowałem je do osadzonego zasobu za pomocą BinaryFormatter. Rozpakowanie danych zajmuje około 5 milisekund po uruchomieniu aplikacji i przewyższa implementację bazy danych, którą zastępowałem (te zakodowane na sztywno wartości były tam wcześniej przechowywane) prawie 45 000 razy.


title: Używanie T[1] zamiast T dla funkcji przeciążonych dla T(&)[N]

text: Funkcja asio::buffer ma przeciążenia `(void*, size_t)` i `(PodType(&)[N])`. Nie chciałem pisać brzydkiego kodu w stylu C `(&x, sizeof(x))`, więc napisałem to: SomePacket packet[1]; // SomePacket to POD read(socket, asio::buffer(packet)); foo = pakiet->foo; Ale ten `pakiet->` wygląda trochę dziwnie - w końcu `pakiet` jest tablicą. (A `packet[0].` nie wygląda lepiej.) Teraz myślę, że pisanie takiego kodu było dobrym pomysłem. Może powinienem trzymać się niebezpiecznego kodu w stylu C z `void*` i `sizeof`? * * * **Upd:** oto kolejny przykład napisania pakietu: SomePacket package[1]; // SomePacket to pakiet POD->id = SomePacket::ID; pakiet->foo = foo; write(socket, asio::buffer(pakiet));


title: Tworzysz witrynę internetową na podstawie istniejącego oprogramowania lub wybierasz i używasz frameworka internetowego?

text: Mały zespół i ja mamy za zadanie stworzyć stronę internetową. Klient odniósł się do konkretnego projektu open source (nazwiemy go X) podczas opisywania niektórych funkcji. Z tego powodu zespół chce zacząć od X i dostosować go tak, aby zadowolić klienta. Przyjrzałem się X i jego kodowi i moim zdaniem byłoby to nierozsądne. Jednak moje doświadczenie jest ograniczone i może naprawdę skorzystać na spostrzeżeniach innych, abym mógł dowiedzieć się, jaki powinien być właściwy kierunek dla zespołu. Moje czerwone flagi idą w górę i dlatego. X został opracowany we wczesnych dniach PHP; 500 wierszy kodu to norma; zmienne globalne są obfite; gigantyczne obudowy przełączników są normą przy przełączaniu między wyświetlanymi stronami. Nie ma wyraźnego mapowania między adresem URL a miejscem, w którym znajduje się kod tej strony. Z punktu widzenia zestawu funkcji, X jest w rzeczywistości oprogramowaniem wyspecjalizowanym do innego zadania i ma dziesiątki funkcji, których nie potrzebujemy lub używamy do tego jako podstawowe założenia. Nie będziemy mogli dostosować X za pomocą systemu wtyczek. To powiedziawszy, istnieje kilka funkcji, które można zmapować, z pewnymi modyfikacjami, w celu dostosowania do naszych celów. Wierzę, że to jest atrakcja, którą odczuwa zespół. Czułbym się komfortowo, gdybyśmy zamiast bezpośrednio używać X, podnieśli to, co jest dla nas możliwe do uratowania i przydatne. Możemy następnie użyć tego kodu i tych samych bibliotek zewnętrznych, których używa X, w nowej bazie kodu zbudowanej na bazie frameworka internetowego PHP (szczególnie Agavi, więc rozumiesz, co mam na myśli przez „framework sieciowy”). Struktura sieci Web zapewnia nam silną strukturę MVC i zapewnia typowe udogodnienia do tworzenia sieci Web lub adaptery do pracy z bibliotekami innych firm, które to robią. Będziemy mieć również czystą listę funkcji do pracy, co oznacza, że możemy pracować addytywnie zamiast subtraktywnie. Ponieważ baza kodu jest lepiej ustrukturyzowana i nie zawiera niczego, czego nie potrzebujemy, łatwiej będzie dokumentować, co jest krytycznym wymaganiem naszego klienta. Podsumowując, zespół chce używać X, podczas gdy ja chcę wziąć bity z X i zamiast tego użyć frameworka internetowego. Chcę odrzucić tę opinię od doświadczeń innych, abym mógł być bardziej poinformowany.


title: Czy są jakieś nieblokujące serwery internetowe dla Javy?

text: Studiowałem infrastrukturę wykorzystywaną przez Facebooka, tworząc stronę internetową opartą na interakcji społecznej dla projektu uniwersyteckiego. Facebook używa Tornado Web Server jako skalowalnego, nieblokującego serwera internetowego, ale jest napisany dla Pythona. Próbuję znaleźć coś podobnego dla Javy: na co powinienem patrzeć? Jakie masz doświadczenia z nieblokującymi się serwerami WWW dla Javy?


title: Jak śledzić zależności, gdy zgłoszony błąd dotyczy wielu produktów zawierających współdzielone komponenty?

text: Jeśli masz wiele produktów, które zawierają pewne współdzielone komponenty, w jaki sposób możesz śledzić zależności, aby ustalić, na które inne produkty wpływa błąd? Na przykład produkty A, B i C używają modułu biblioteki CRC. Błąd został znaleziony i zgłoszony w module w produkcie A. Jak możemy ocenić, czy problem dotyczy B i C i że potrzebujemy wydania poprawki błędu. Oczywiście mamy już oprogramowanie do kontroli wersji i śledzenia problemów, ale nie jest jasne, czy i jak mogą w tym pomóc, czy też musimy szukać lepszych narzędzi. Czy w praktyce warto modelować awarię podsystemu, aby wykryć, że problem/wada dotyczy również innych produktów?


title: Jak oblać rozmowę kwalifikacyjną?

text: Wyobraź sobie sytuację, w której kilka osób jest wysyłanych na rozmowę i tylko jedna musi przejść. Jego wiedza wystarczy do projektu. Jednak klient poprosił o kilku kandydatów, aby mógł wybrać najlepszego. A inne osoby z Twojej firmy są już zaangażowane w inne projekty i nie powinny dostać pracy. Pytanie brzmi: jak pokazać, że pozostali kandydaci są gorsi, a jednocześnie nie sprawić, by wyglądali głupio? **UPD** Rozumiem, ale muszę wyjaśnić pierwotną ideę. **Chciałem wiedzieć, jak ma się zachowywać inny kandydat [który nie powinien zdać rozmowy kwalifikacyjnej]?** Zostawiłem zmodyfikowane pytanie [pierwsze], ponieważ odpowiada mu kilka odpowiedzi.


title: Wybierz wzorzec projektowy - etap użytkownika

text: Staram się wskazać palcem właściwy wzorzec projektowy. Posiadam stronę internetową, na której użytkownik może się zarejestrować i wchodzić w interakcję z systemem. Chcę dodać użytkownikowi następujące możliwości: 1. Każdy użytkownik będzie na etapie. Powiedzmy, że mamy 5 etapów. gdy użytkownik jest zarejestrowany, będzie w I etapie. 2. Użytkownik będzie mógł wspiąć się na kolejny etap. Aby to zrobić, będzie musiał wykonać X zadań. (W systemie będzie 20 zadań). 3. Na każdym etapie użytkownik będzie mógł kupować korzyści za punkty, które zdobędzie za każde wykonane zadanie. Jaki jest odpowiedni wzorzec projektowy do zastosowania tutaj? Dziękuję.


title: Jakie masz rady dotyczące uzyskania certyfikatu Oracle Certified Professional Java Programmer?

text: Zamierzam zdobyć certyfikat, ale nie jestem do końca pewien, jak się skutecznie przygotować. Więc zastanawiam się, czy masz jakieś rady w tej sprawie; w szczególności chciałbym wiedzieć: * Jak powinien wyglądać podstawowy plan nauki/praktyki? * Którą książkę (zestaw książek) należy wziąć pod uwagę? * Jakie ćwiczenia praktyczne należy wykonać? **UWAGA:** Mam kilkuletnie doświadczenie korporacyjne (choć głównie aplikacje webowe), ale chcę mieć 100% pewność, że zdam test (dlatego też pojawia się problem).


title: Czy firma programistyczna powinna mieć dedykowany zespół do badań i/lub bibliotek użytkowych?

text: Pracuję w firmie, która wykonuje aplikacje webowe dla różnych banków i kilku mniejszych sklepów internetowych. Zatrudniamy około 20 programistów i mamy 4-5 projektów w fazie rozwoju. Nasze zespoły programistyczne nie współpracują ze sobą zbyt często i wiele tych samych problemów jest rozwiązywanych na różne sposoby (od dobrego do złego). Zastanawiałem się, czy dobrym pomysłem dla firmy byłoby posiadanie zespołu programistów, którzy prowadzą badania nad obecnymi frameworkami i stale ulepszają wspólną bibliotekę funkcji oraz wspólny framework, aby znacznie szybciej i wydajniej budować obecne i przyszłe projekty. Jak duży powinien być taki zespół? Czy powinien też mieć stałych członków, którzy szkolą innych, czy też powinien rotować ludzi? **Aktualizacja:** myślałem o wspólnym projekcie, nad którym ludzie mogą pracować dla zabawy i który może wzbudzić zainteresowanie. Wydaje się, że kiedy ludzie mają presję w pracy, rozwiązania, które wymyślają, nie są najlepsze.


title: Dlaczego prywatny członek jest dostępny w metodzie statycznej?

text: Poniżej znajduje się pseudokod, wypróbowałem go w Javie i PHP i oba działały: class Test { private int a = 5; public static funkcja do_test(){ var t = new Test(); ta = 1; print t.a // 1 } } Test::do_test(); Dlaczego możesz to robić w paradygmacie OOP i jaki jest z tego pożytek?


title: Co oznacza "(int) wartość i 0x1, (int) wartość i 0x2, (int) wartość i 0x4, (int) wartość i 0x8 oznacza"

text: > ![kod](http://i.stack.imgur.com/KSwRO.jpg) „Wartość” mieści się w zakresie od 0 do 15 (możliwe wartości). Kiedy te 4 warunki „jeśli” zostaną spełnione? Jeśli moja (int)wartość = 2, to oznacza 0010? if ((int)wartość & 0x1) { //wypowiedź tutaj } if ((int)wartość & 0x2) { //wypowiedź tutaj } if ((int)wartość & 0x4) { //wypowiedź tutaj } if ((int) wartość & 0x8) { //wypowiedź tutaj }


title: Spójny kod HTML nagłówka w wielu witrynach

text: Mamy kilka stron. Niektóre są HTML/Angular, niektóre są oparte na CMS, niektóre są oparte na innym kodzie. Chcielibyśmy mieć spójny interfejs nagłówka dla każdej witryny. Staram się znaleźć najlepszy sposób na zrobienie tego. Mam kilka opcji — 1. Udostępnić je w jednej witrynie — a następnie umieścić je w ramce iFrame w każdej z witryn. * Zaletą jest to, że musimy wdrażać tylko w jednym miejscu, zawsze będzie to spójne * Wady, które widzę, to to, że może nie działać tak dobrze, gdy musimy odpowiednio zmienić rozmiar nagłówka i że nie jestem pewien, czy używanie iframe jest teraz uważane za złą praktykę. Nie jestem też pewien, jak łącza działają z routingiem kątowym. 2. Przechowuj HTML/CSS w mojej kontroli źródła, a następnie niech każda aplikacja go wciągnie. * Zaleta/Wada - nagłówki nie są automatycznie aktualizowane we wszystkich witrynach. Muszą być rozmieszczane indywidualnie. * Wada - Możliwe konflikty CSS od czasu jego napisania w izolacji? * Zaleta - Dość proste rozwiązanie 3. W jakiś inny sposób?


title: Wyjątkowość pętli for

text: W jaki sposób zaimplementowana jest funkcja pętli for, aby mogła akceptować `;` jako separator parametrów zamiast `,`, co jest trywialne w normalnych funkcjach.


title: Jak dodać funkcje optymalizacji czasu łącza do mojego kompilatora opartego na LLVM?

text: Projektuję i wdrażam język programowania, a do generowania kodu natywnego używam LLVM. Między innymi wydajność jest kluczową cechą języka i dlatego zamierzam wdrożyć optymalizację czasu łącza. Na oficjalnej stronie LLVM przeczytałem, że > LLVM oferuje potężne optymalizacje międzymodułowe, które można wykorzystać w linku > czas. Jednak strona, o której mowa, nie wspomina, w jaki sposób użytkownik może zażądać optymalizacji czasu linku. W szczególności wyjaśnia tylko teorię (i niektóre ogólne decyzje dotyczące implementacji) LTO, ale nie odwołuje się do żadnej dokumentacji API ani samouczka. Przeprowadziłem szybkie wyszukiwanie w bazie kodu Clang, ale wyniki też nie są zbyt pouczające ani istotne – nie znalazłem nawet ustawień, które przełącznik `-flto` włącza w Clang, nie mówiąc już o zmianach w generowaniu kodu, które umożliwiają konsolidatorowi optymalizację między plikami obiektowymi. Przypuszczam, że robienie LTO powinno przebiegać w następujący sposób: 1. Generowanie pewnego rodzaju metadanych w pliku obiektowym/kodu bitowego, aby linker wiedział, że może zastosować LTO. Może to musi zawierać konkretne informacje o module, funkcjach do optymalizacji itp. (naprawdę nie mam pojęcia, co dokładnie powinno się tam znaleźć...) 2. Następnie dostosować moją procedurę generowania kodu (tzn. sposób, w jaki używam) LLVM API) w sposób, który „obsługuje” LTO. Po kilku poszukiwaniach w Internecie znalazłem ten powiązany plik źródłowy LLVM, więc zakładam, że można zautomatyzować przynajmniej część tego zadania, ale – jak zawsze – dokumentacja LLVM z autogenowaniem jest w najlepszym razie skąpa. Więc moje pytanie brzmi: czy mój opis procesu włączania funkcji LTO LLVM do mojego kompilatora jest poprawny, a jeśli tak, czy możesz zasugerować mi jakąkolwiek dokumentację lub samouczek, na którym mógłbym oprzeć swój projekt?


title: Dystrybucja pojedynczego pliku Pythona: moduł czy pakiet?

text: Załóżmy, że mam użyteczną funkcję lub klasę Pythona (lub cokolwiek) o nazwie `useful_thing`, która istnieje w jednym pliku. Istnieją zasadniczo dwa sposoby na zorganizowanie drzewa źródłowego. Pierwszy sposób wykorzystuje pojedynczy moduł: - setup.py - README.rst - ...etc... - foo.py gdzie `przydatna_rzecz` jest zdefiniowana w `foo.py`. Druga strategia polega na stworzeniu pakietu: - setup.py - README.rst - ...etc... - foo |-module.py |-__init__.py gdzie `przydatna_rzecz` jest zdefiniowana w `module.py`. W przypadku pakietu `__init__.py` wyglądałby tak z foo.module import użyteczne_rzeczy, więc w obu przypadkach możesz zrobić `from foo import użyteczne_rzeczy`. **Pytanie:** Który sposób jest preferowany i dlaczego? EDYCJA: Ponieważ użytkownik gnat mówi, że to pytanie jest źle sformułowane, dodam, że oficjalny samouczek dotyczący pakowania Pythona nie wydaje się komentować, która z metod opisanych powyżej jest preferowana. Wyraźnie _nie_ podaję mojej osobistej listy zalet i wad, ponieważ interesuje mnie, czy istnieje metoda preferowana przez społeczność, nie generując dyskusji na temat zalet / wad :)


title: Jak osiągnąć odtwarzacz dowodowy na zmianę strony?

text: Jestem zainteresowany stworzeniem internetowego odtwarzacza muzycznego podobnego do Soundcloud. Jednego jednak nie potrafię rozgryźć: w jaki sposób odtwarzacz taki jak Soundclou jeden (i inny) może „opierać się” zmianie strony, kontynuować odtwarzanie bez żadnych opóźnień, nawet jeśli strona w tle się ładuje, gracz jest tutaj i kontynuuje swoją pracę bez opóźnień w momencie, w którym klikamy linki. Jedynym sposobem, aby to zatrzymać, jest ponowne załadowanie strony w przeglądarce. Jak można to osiągnąć? Czy użyto tego przy użyciu określonego języka i architektury witryny, która koncentruje odtwarzacz? Jeśli nie, to czy jakikolwiek język/framework daje taką możliwość? EDIT: Więc zrobiłem kilka wyszukiwań i otrzymałem następujący pomysł: * Pjax : To pozwala na ponowne załadowanie tylko niektórych treści. * API historii HTML5: API stojące za PJax * Aplikacja jednostronicowa: znacznie trudniejsze. Ale przy użyciu Ajax może działać. Czy te rozwiązania są dobre? Który byłby łatwiejszy/Lepszy? Czy istnieje inna alternatywa?


title: Dość zdezorientowani, co stanowi Aktualny stan zasobu

text: Z REST w praktyce: Hipermedia i architektura systemów: > Aktualny stan zasobu jest kombinacją: > > * Wartości elementów informacji należących do tego zasobu > * Linków do powiązanych zasobów > * Linków reprezentujących przejście do możliwego przyszły stan > bieżącego zasobu > * Wyniki oceny reguł biznesowych, które wiążą zasób z > innymi zasobami lokalnymi > a) dlaczego „ _linki do powiązanych zasobów_ ” miałyby również reprezentować bieżący stan zasobu? b) Nie do końca rozumiem, dlaczego „ _Linki reprezentujące przejście do możliwego przyszłego stanu bieżącego zasobu_ ” również reprezentują stan bieżący. Mianowicie te linki reprezentują możliwość, a nie obecny stan. Analogicznie byłaby zmienna int ustawiona na wartość 10. Możliwe, że w przyszłości ta zmienna zostanie przetworzona i ustawiona na wartość 100, ale nie twierdzimy, że jej obecny stan zawiera również możliwy przyszły stan 100?! **ODPOWIEDZ:** **1)** > linki do powiązanych zasobów: wyobraź sobie zasób „pokoj_czatu”. Linki do > osób w tym pokoju będą się zmieniać, gdy przychodzą i odchodzą. Innymi słowy, relacje zasobu > z innymi zasobami mogą ulec zmianie. **a)** Zacząłem też uczyć się projektowania opartego na domenie i tam encja **E** może mieć _encje podrzędne_ (dlatego **E** jest rodzicem w związku ) i relację **E** z jej _potomkiem encje_ mogą ulec zmianie (tj. niektóre _encje podrzędne_ mogą być przypisane do innego rodzica lub mogą zostać usunięte). Ale mimo że **E** ma _relację jeden-do-wielu_ ze swoimi _encjami podrzędnymi_ , nie uważamy, że ta relacja reprezentuje również _bieżący stan E_. Dlatego zastanawia mnie, dlaczego w REST **linki do powiązanych zasobów** reprezentują również _aktualny stan_?! **b)** > wyobraź sobie, że uniwersytet ma zasób „studenta”. Może być link do > "zarejestruj się" w klasie, link do "złóż wniosek o mieszkanie" oraz linki do "dostroić > się", "włącz" i "odrzuć". Każdy link może zmienić stan obiektu, > lub może dostarczyć odpowiednich informacji o stanie zasobu. Na przykład > właściwy wniosek o zakwaterowanie studenckie dla tego studenta. Ma sens, że _stan bieżącego zasobu_ stanowią również **te linki do powiązanych zasobów** , które mogą oznaczać zmianę _stanu bieżącego zasobu_. Ale nie ma sensu, że **stan bieżącego zasobu** również stanowi **linki do tych powiązanych zasobów**, które nie zmieniają _stanu bieżącego zasobu_?! **2)** > Ale zasób może być swego rodzaju maszyną stanów. Tak więc zasób „samochód” może > zawierać linki do „start_engine”, jeśli jest zatrzymany. Może prowadzić do „speed_up”, > „slow_down”, a jeśli prędkość jest wystarczająco niska, „stop_engine”. Innymi słowy, > łączy do przejścia do innych prawidłowych stanów w oparciu o stan bieżący. **a)** > linki do przejścia do innych prawidłowych stanów na podstawie aktualnego stanu. Zakładam, że popełniłeś literówkę i chciałeś napisać „ _linki do przejścia do innych prawidłowych stanów **jest** oparte na obecnym stanie_”? **b)** Czy możemy zatem powiedzieć, że **linki reprezentujące przejścia do innych stanów** reprezentują również _aktualny stan zasobu_ jest taki, że _każdy zasób z takimi linkami_ mógłby być uważany za _maszynę stanów_ , a z _maszyną stanów_ , _linki do innych ważnych stanów_ reprezentują _aktualny stan_ (mam nadzieję, że moje gadanie ma jakiś sens)?! **2\. ODPOWIEDŹ:** **1)** > Bardziej naturalne wydaje się jednak, że w przetwarzaniu danych strukturalnych po prostu łączysz informacje > „chat_room” i „chat_room_person”. Z technicznego punktu widzenia zakładam, że _same zasoby powiązane_ nie reprezentują _bieżącego stanu zasobu_. Zamiast tego, tylko _linki do tych powiązanych zasobów_ reprezentują _bieżący stan zasobu_?! **2)** > W REST celem jest wyeliminowanie całej komunikacji poza pasmem. Więc uzupełniamy stan (ON) linkami, które reprezentują wszystkie prawidłowe przejścia dla tego stanu. Dlatego chcemy uniknąć większej ilości dokumentacji. Reprezentacja zasobów może nam powiedzieć: „To jest miejsce, w którym jestem i tutaj mogę iść dalej”. W REST **linki reprezentujące przejścia do innych stanów** reprezentują również _aktualny stan zasobu_ , ale czy możemy argumentować, że logicznie (a więc nie w kontekście REST ) te linki tak naprawdę nie _reprezentują aktualnego stanu resource_ , a zatem jedynym powodem, dla którego w REST reprezentują one _bieżący stan zasobu_, jest to, że REST jest zbudowany wokół tego założenia (lub jest przynajmniej bardziej wydajny w ten sposób)? Dziękuję Ci


title: Jakie właściwości ma język obiektowy?

text: Obecnie pracuję nad grą i chciałem dodać obsługę skryptów. Ze względu na próbę zachowania całej bazy kodu w zarządzanym c# (z wyłączeniem Monogame), używam niestandardowego języka dla skryptów (nie istnieją tylko zarządzane implementacje Lua... z wyjątkiem AluminiumLua, które jest niekompletne). W takim języku musiałyby istnieć podstawowe przepisy. Należą do nich: * Obiekty / Właściwości / Zmienne * Pływaki i łańcuchy * Funkcje * Warunki * Pętle Czy brakuje mi głównych części podstawowego języka obiektowego? **EDYTUJ:** Jak wskazały komentarze, znacznie lepiej byłoby ukończyć niekompletną implementację Lua dla C# niż projektować własny język ... co mam zamiar zrobić. Jednak nadal jestem ciekaw, jakie są właściwości języka obiektowego. **Więc jakie właściwości posiada język OO?** Niektóre definicje orientacji obiektowej (znowu zdecydowane w komentarzach): Łączenie stanu obiektu z jego zachowaniem. Język obiektowy to metoda łączenia stanu obiektu (jego właściwości) z zachowaniem (funkcje). Orientacja obiektowa to definiowanie danych (takich jak struktura C) i dostarczanie określonych metod interakcji z nimi (funkcja ChangeValue), a nie dawanie osobie używającej tego kodu możliwości zmiany dowolnej części, w tym komponentów „wewnętrznych”. Orientacja obiektowa to tylko sposób na bardziej przejrzyste sortowanie danych (które będą reprezentowane w postaci binarnej) dla programisty i zabezpieczenie przed nieprawidłowym użyciem (np. ustawienie znaku zamiast bajtu w funkcji).


title: Apache Wicket, aktualizując dane bez użycia formularza, czy to bezpieczne?

text:
Mam klasę ListUser.java z tabelą danych, wyświetlającą informacje UserData, wyświetla 4 kolumny, ostatnia kolumna to AbstractColumn, która ma na swojej metodzie populateItm dodała wewnętrzną klasę LinkedPanel, która wypełnia kolumnę przyciskami, jeden z tych przycisków jest Link,Model... ten link ma metodę @Override onClick(), która wywołuje Injected userDataDAO, korzystając z Model, pozyskuję obiekt UserData, aktualizuję ten obiekt i przekazuję bezpośrednio do userDataDAO i scalam obiekt do bazy danych , bez użycia jakiegokolwiek formularza, czy aktualizacja jest bezpośrednio bezpieczna? (lub dobra praktyka) * * * ListUsers.java to lista zawierająca LinkPanel wyświetlający przyciski w ostatniej kolumnie List<IColumn<UserData, String>> cols = new ArrayList<>(4); cols.add(new PropertyColumn<UserData, String>(nowy Model<>("Usuario"),"nazwa użytkownika")); cols.add(new PropertyColumn<UserData, String>(nowy Model<>("Creacion"),"dateCreation")); cols.add(new PropertyColumn<UserData, String>(nowy Model<>("Ultimo Ingreso"),"lastLogin")); cols.add(new AbstractColumn<UserData, String>(new Model<>("Operación"), "Desactivar") { @Override public void populateItem(final Item<ICellPopulator<UserData>> item, String string, final IModel<UserData > imodel) { item.add( new LinkPanel(string, imodel, "deshabilitar") ); } }); * * * ListUsers.html ...

 ... * * * public class LinkPanel extends Panel { public LinkPanel(String id, final IModel<UserData> imodel, String label) { super(id, imodel); add( //Boton habilitar/deshabilitar new Link<UserData>("deshabilitar", imodel) { @Override public void onClick() { usData.setEnabled(!usData.isEnabled()); userDAO.edit(usData); imodel. setObject(usData); getSession().info(Msg.OPERATION_SUCCESSFUL); } ...


title: Jak zminimalizować literówki podczas kodowania?

text: Podczas programowania popełniam wiele błędów podczas pisania. Mam dobrą szybkość pisania na klawiaturze, ale staram się pisać szybciej iw tym procesie kończę pisaniem literówek. Chcę pisać szybciej, ale popełniam mniej błędów. Czy mogę coś zrobić, aby poprawić sytuację?


title: Jakiś wzorzec projektowy OOP, który jest w pewnym stopniu reprezentatywny dla wszystkich zasad projektowania SOLID OOP w grze?

text: Staram się prowadzić kurs zasad projektowania zorientowanego obiektowo (na SOLID) w instytucie szkoleniowym. Chcę również nauczyć studentów kilku wzorców projektowych OOP takich jak factory, singleton i jeszcze jeden. Wiem, że nie ma zgodności jeden do jednego między zasadami SOLID a wzorcami projektowania OOP, ale chcę przedstawić uczniom wzorzec, który w pewnym sensie zawiera wszystkie zasady projektowania SOLID. Jakieś pomysły? Naprawdę staram się dopasować do wzorca obserwatora, ale chcę, aby był zgodny ze wszystkimi zasadami SOLID.


title: Czy powinienem przechowywać współrzędne x,y jako tablicę, obiekt klasy czy dwie zmienne?

text: Mam „MyObject”, który ma współrzędne x i y. o ile widzę, mogę go przechowywać na trzy sposoby: class MyObject: def __init__(self, x, y): self.x = x self.y = y class MyObject: def __init__(self, x, y) : self.position = [x, y] class MójObiekt: def __init__(self, x, y): self.position = Coord(x,y) #Coord klasa utworzona gdzie indziej Czy istnieje w tym przypadku najlepsza praktyka? Myślę, że jest to istotne, gdy przekazujesz te współrzędne do innych metod: np. mojObiekt = MojObiekt(0,0) PoszukiwaneLokalizacja(mojObiekt.x, mojObiekt.y) PoszukiwaneLokalizacja2(mójObiekt.pozycja)


title: Jakie są korzyści z używania najpierw kodu struktury encji zamiast projektowania bazy danych przy użyciu języka SQL?

text: Obecnie pracuję nad projektowaniem małej aplikacji internetowej (MVC5) i jestem do momentu zaprojektowania mojej bazy danych. Mam schemat, który chcę opracować i jestem dość biegły w SQL Server. (Mam SQL 2012 MCSA.) Będę używał encji framework 6 jako mojego ORM. Byłem bardzo zainteresowany kodem - podejście pierwsze, ponieważ nie jestem wielkim fanem projektantów i lubię mieć możliwość samodzielnego oglądania i pracy z kodem. Ponieważ moje umiejętności SQL są dość silne, jestem skłonny do samodzielnego tworzenia schematu i pisania własnych zapytań `CREATE TABLE` itp. Czuję, że daje mi to dużo większą kontrolę nad tworzeniem ograniczeń i indeksów. Ale w przeszłości nie pracowałem zbyt wiele z frameworkiem encji, więc mogą być pewne korzyści, których mi brakuje. Wiem, że możesz najpierw wykonać kod na istniejącej bazie danych w EF6, więc byłaby to inna opcja. Próbowałem trochę googlować i czytać MSDN, ale większość korzyści wydaje się być taka, że nie musisz się martwić o SQL. Ponieważ nie jest to mój problem, nie widzę korzyści z zezwalania frameworkowi encji na tworzenie mojego schematu. Czy są jakieś korzyści z zezwolenia frameworkowi encji na tworzenie mojej bazy danych, których mi brakuje?


title: Czy obiekt powinien zapytać swojego właściciela?

text: Mam klasę `World` World: def __init__(self): self.size = 10 self.n_busStops = 10 self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0) self.buses = [Bus([0 ,1,2,3,4,5,6,7,8,9])] Teraz każdy z autobusów będzie jeździł po całym świecie, wysiadając i zabierając pasażerów. Autobus zawiera informacje o swojej trasie. Kiedy dociera do następnego przystanku, musi wysłać zapytanie do `busStopMatrix`, aby dowiedzieć się, ilu jest tam pasażerów i jak daleko znajduje się następny przystanek na swojej trasie. Czy dobrym pomysłem jest, aby obiekt wysyłał zapytanie do swojego rodzica w ten sposób? Jeśli tak, jak nazywa się ten wzorzec projektowy? Coś takiego: class World: def __init__(self): self.size = 10 self.n_busStops = 10 self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0) self.buses = [Bus([0,1, 2,3,4,5,6,7,8,9], właściciel =self)] class Magistrala: def __init__(self, route, parent): self.route = trasa self.currentStop = trasa[0] self. parent = parent def move(self): ifAtDestination(): pickUpPassengers(self.parent.getPassengersAtStop(currentStop)) W przeciwnym razie nie mogę pomyśleć, w jaki sposób `Bus` może uzyskać informacje o świecie, w którym się znajduje. Alternatywa, o której mogę pomyśleć polega na tym, że trasa składa się z odniesień bezpośrednio do przystanków autobusowych, dzięki czemu może bezpośrednio wysyłać zapytania. np. class World: def __init__(self): self.size = 10 self.n_busStops = 10 self.busStopMatrix = SpatialGraph(self.size, self.n_busStops, 1.0) self.buses = [Bus([busStopmatrix.getAllStops()]) ] class Bus: def __init__(self, route): self.route = trasa self.currentStop = route[0] def move(self): ifAtDestination(): pickUpPassengers(currentBusStop)


title: W kategoriach laika, czym jest rekurencja lewa?

text: Według jednej ze stron na code.google.com „rekursja lewa” jest zdefiniowana w następujący sposób: > Rekurencja lewa odnosi się po prostu do każdego rekurencyjnego nieterminala, który > tworzy formularz zdaniowy zawierający sam siebie, a nowa jej kopia > pojawia się na po lewej stronie reguły produkcji. Wikipedia oferuje dwie różne definicje: > 1. Jeśli chodzi o gramatykę bezkontekstową, nieterminalne r jest lewostronnie rekurencyjne, jeśli > najbardziej wysunięty na lewo symbol w którejkolwiek z produkcji r ('alternatywy') albo > natychmiast (bezpośredni/natychmiastowy) lewostronnie rekurencyjne) lub przez inne nie->terminalne definicje (pośrednie/ukryte lewostronnie rekurencyjne) przepisuje ponownie do r. > > 2. „Gramatyka jest lewostronnie rekurencyjna, jeśli możemy znaleźć jakieś niekońcowe A, które > ostatecznie wyprowadzi formę zdaniową z samym sobą jako lewym symbolem”. > > Dopiero zaczynam tutaj tworzenie języka i robię to w wolnym czasie. Jednak gdy sprowadza się do wyboru parsera języka, to, czy lewa rekursja jest obsługiwana przez ten parser, czy ten parser, jest problemem, który _natychmiast_ pojawia się na pierwszym miejscu. Wyszukiwanie terminów takich jak „forma zdaniowa” prowadzi tylko do dalszych list żargonu, ale rozróżnienie „lewostronnej” rekurencji musi być prawie czymś bardzo prostym. Tłumaczenie proszę?


title: Jak mam tworzyć prototypy interfejsu użytkownika w trybie lo-fi (nieinteraktywnym)?

text: Obecnie pracuję nad złożeniem kilku podstawowych prototypów, częściowo w celu zebrania wymagań, a częściowo nad zaprojektowaniem ostatecznego interfejsu użytkownika. W tej chwili próbuję budować ekran za pomocą karteczek samoprzylepnych, z żółtymi notatkami dla informacji i różowymi dla działań (przycisków lub menu). Chodzi o to, że możesz łatwo przenosić, usuwać i dodawać informacje. Ale jestem pewien, że istnieją bardziej efektywne metody. Jaki jest zalecany sposób dla programistów na efektywne tworzenie nieinteraktywnych prototypów interfejsu użytkownika? I dlaczego? * * * Wypróbowałem kilka wersji długopisu, papieru i karteczek samoprzylepnych, które spadły jak ołowiany balon (prawdopodobnie moje umiejętności rysowania). W końcu użyłem Balsamiqa, który do tej pory podoba się większości użytkowników i dostają, że jest prototypem. Niestety, niektórzy ludzie wciąż mają problemy z pomysłem, że najpierw należy zorientować się, co aplikacja powinna zrobić za pomocą kilku prototypów lo-fi i naprawdę chcieć „zobaczyć coś na ekranie” przed podjęciem jakichkolwiek decyzji.


title: Czy dopuszczalne jest, aby klasy potomne „przełamywały” funkcjonalność klasy nadrzędnej?

text: Jeden z programistów, który ze mną pracuje, postępuje zgodnie z zasadą Open/Closed, aby dodać funkcjonalność do modelu poprzez rozszerzenie naszego frameworka ORM. class BaseModel extends ORM { ... } Wszystkie nasze modele dziedziczą teraz `BaseModel` i ten model działa dobrze w kontekście naszej aplikacji. class Product extends BaseModel { ... } Problem pojawia się, gdy próbujemy używać modeli tak, jakby były bezpośrednio z ORM-u, używamy kilku najbardziej podstawowych funkcjonalności: $product = Product::factory(); $produkt->nazwa = 'foo'; $produkt->cena = 9,99; $produkt->zapisz(); Ten kod powinien działać dobrze, ale nie powiódł się, ponieważ teraz metoda fabryczna wymaga listy parametrów. Myślę, że dopóki modele dobrze się sprawdzają w kontekście naszego produktu, my jesteśmy dobrzy; ale mam też mieszane uczucia co do nieobsługiwania niektórych podstawowych podstawowych funkcji klasy nadrzędnej. Myśli?


title: Aplikacja Java Desktop dla użytkowników sieci

text: Zajmuję się tworzeniem aplikacji desktopowej przy użyciu języka Java. Moja aplikacja będzie działać w środowisku sieciowym, w którym wielu użytkowników będzie miało dostęp do tej samej bazy danych za pośrednictwem aplikacji. Będą podstawowe operacje CRUD (wstaw, aktualizuj, usuń i wybierz), co oznacza, że będą szanse na zakleszczenie lub dwóch użytkowników próbujących zaktualizować ten sam rekord w tym samym czasie. Używam następującego * Java Swing dla klientów (MVC). * MySQL Server dla bazy danych (InnODB). * Początek Java Web. Teraz MySQL jest scentralizowany w sieci i wszyscy klienci łączą się z nim. Aplikacja do celów ERP. Przeszukałem Internet, aby znaleźć bardzo dobre rozwiązanie zapewniające integralność danych i upewnić się, że podczas aktualizacji jednego rekordu od jednego klienta inni klienci są tego świadomi. Czytałem o usługach sieciowych Socket-server-client i RESTful. Nie chcę korzystać z aplikacji internetowej i nie chcę używać żadnych dodatkowych bibliotek. Jak więc poradzić sobie z tym scenariuszem: Jeśli użytkownik A aktualizuje rekord: 1. Czy istnieje sposób na zaktualizowanie ekranu użytkownika B o nową wartość? 2. Jeśli użytkownik A zacznie aktualizować rekord, jak mogę uniemożliwić innym użytkownikom próbę aktualizacji tego samego rekordu?


title: Wstrzykiwanie zależności: w którym momencie mogę utworzyć nowy obiekt?

text: I 'm refaktoryzacji aplikacji PHP i próbuję zrobić ma dużo iniekcji zależności (DI) jak to możliwe. Czuję, że dobrze rozumiem, jak to działa, iz pewnością widzę, że moje klasy stają się o wiele szczuplejsze i bardziej solidne. Dokonuję refaktoryzacji, abym mógł wstrzyknąć zależność zamiast tworzyć nowy obiekt w klasie, ale w pewnym momencie będę musiał stworzyć kilka obiektów, to znaczy użyć przerażającego słowa kluczowego `new`. Problem, z którym się teraz spotkałem, polega na tym, w którym momencie mogę faktycznie tworzyć nowe obiekty? Wygląda na to, że skończę w klasie najwyższego poziomu, tworząc mnóstwo nowych obiektów, ponieważ nie ma dokąd pójść. To jest złe. Czytałem kilka blogów, które używają klas fabrycznych do tworzenia wszystkich obiektów, a następnie wstrzykuje fabrykę do innych klas. Następnie możesz wywołać metody fabryki, a fabryka utworzy dla Ciebie nowy obiekt. Obawiam się, że to zrobię, ponieważ teraz moje zajęcia w fabryce będą „nowym” darmowym dla wszystkich! Myślę, że to może być w porządku, ponieważ są to klasy fabryczne, ale czy są jakieś zasady, których należy przestrzegać podczas korzystania z wzorca fabryki i DI, czy też odbiegam tutaj od celu?


title: Kaskadowe usuwanie z głównego agregatu przez cały agregat nie ma sensu

text: Na podstawie tego samego przykładu dla tego pytania. W Pro ASP.Net MVC 4 autorstwa Adama Freemana odbywa się dyskusja na temat agregatów i korzeni agregatów za pomocą prostego systemu aukcyjnego. Są członkowie, którzy licytują, przedmioty, które są licytowane i licytują. Autor twierdzi, że istniałaby agregacja Item i Bid z Itemem będącym korzeniem agregatu. Autor następnie wspomina, że korzenie agregatów mogą być użyte do usunięcia kaskadowego, co w tym przykładzie oznacza, że jeśli pozycja zostanie usunięta, wszystkie oferty na pozycje zostaną usunięte. To ma sens. Problem polega na tym, że oferty należą tylko do agregatu pozycja/oferta, a nie do agregatu członek/oferta. Jeśli usunę członka systemu, który składa oferty, wydaje się rozsądne, że wszystkie jego oferty również zostaną usunięte. Jednak nie mogę tego zrobić bez „rozbicia” agregatu. Nie mogę też po prostu otrzymać listy ofert członków. Mój poziom zamieszania, biorąc pod uwagę prosty przykład, trochę mnie martwi. Czy to tylko zły przykład, czy członek/oferta może być zamiast tego prawidłowym agregatem i istnieje pewien poziom arbitralności w dokonywaniu wyboru agregatów, który jest akceptowalny tak długo, jak dokonujesz wyboru, czy jest jakiś sposób, aby modele należały do wiele agregatów, czy po prostu czegoś mi brakuje? PS Odpowiedź w pytaniu, które połączyłem, mówi, że rozwój oparty na domenach jest po prostu bardzo trudny, ale nie zawiera wystarczająco dużo szczegółów na temat tego, jak to jest trudne i dlaczego powoduje zamieszanie i dlatego moje pytania na ten temat nadal pozostają.


title: Praktyka testowania kodu

text: Więc teraz doszedłem do wniosku, jak wielu innych, że posiadanie jakiegoś sposobu na ciągłe testowanie kodu jest dobrą praktyką, ponieważ pozwala na zaangażowanie mniejszej liczby osób (zarówno studentów, jak i uczelni), po prostu wiedząc, co jest nie tak, zanim ktoś inny dowie się o tym na własnej skórze . Słyszałem i czytałem trochę o testowaniu jednostkowym i rozumiem, co to ma robić iw ogóle. Jest tak wiele różnych rodzajów błędów. Może to być wszystko, od przeglądarki internetowej, która nie jest w stanie wysłać poprawnych wartości, awaria skryptu java, funkcja globalna zakłócająca kawałek kodu, po zmianę, która wyglądała dobrze podczas testowania, ale zawodzi w jakimś szczególnym przypadku, co było trudne przewidywać. Po prostu znajdując te błędy, uczę się, że rzadko je powtarzam, ale wydaje się, że zawsze można znaleźć nowe błędy i nauczyć się z nich. * * * Myślę, że najlepszą praktyką byłoby uruchomienie _każdej_ strony i jej funkcji kilka razy, zobaczenie wyniku i powtórzenie tego w Firefox, Chrome i Internet Explorer (i najwyraźniej na wszystkich smartfonach), aby upewnić się, że działa zgodnie z przeznaczeniem . Jednak zajęłoby to trochę czasu, aby wziąć pod uwagę, że nie pracuję z łatami/wersjami i robię małe poprawki tu i tam kilka razy w tygodniu. To, co wolę, to jakiś rodzaj strony, którą mogę po prostu załadować, która testuje jak najwięcej rzeczy, aby upewnić się, że strona działa zgodnie z przeznaczeniem. Po prostu uruchom wiele cURL z wartościami POST i zobacz, czy otrzymam oczekiwany wynik. Ale jak najlepiej nie zwiększać identyfikatorów wszystkich wierszy mysql, jeśli usunę te wiersze testowe? To głupie być na ID 1000 z około 50 wierszami. Gdybym mógł zbudować nowy projekt od zera, prawdopodobnie zaimplementowałbym jakiś płynny sposób na zwrócenie "PRAWDA" na testach zamiast rzeczywistej strony. Ale na razie to rozwiązanie musiałoby zostać przeniesione na istniejące projekty. * * * **Moje pytanie** Co poleciłbyś jako najlepszy sposób na przetestowanie mojej witryny, aby upewnić się, że istniejące funkcje spełnią swoje zadanie po edycji kodu? Czy powinienem najpierw rozważyć zaimplementowanie wielu zmian, a następnie ręcznie przetestować cały kod, aby upewnić się, że nadal działa? Czy jest jakiś fajny sposób testowania kodów bez „szkodzenia” kolumnom ID? **Dodatkowe myśli** Czy dobrym pomysłem byłoby powiązanie wszystkich moich plików z różnymi częściami witryny, na które mają wpływ? Na przykład, jeśli edytuję plik `home.php`, przetestuję dokumentację, czy start mojej strony domowej działa zgodnie z założeniami, ponieważ jest to jedyna część mojej witryny, na którą powinien mieć wpływ.


title: Dlaczego efekty uboczne są uważane za złe w programowaniu funkcjonalnym?

text: Czuję, że skutki uboczne są zjawiskiem naturalnym. Ale jest to coś w rodzaju tabu w językach funkcjonalnych. Jakie są powody? Edycja: Moje pytanie dotyczy stylu programowania funkcjonalnego. Nie wszystkie języki/paradygmaty programowania.


title: Umieszczenie metod pomocniczych

text: Oto pytanie, które zawsze mnie dręczyło. Użyję javy jako przykładu, ponieważ prawie nigdy nie napotkałem problemu w javie, w którym nie musiałem używać metod pomocniczych w strukturze klas. Załóżmy, że mam metodę, która wykonuje jedną lub dwie czynności, a następnie wywołuje metodę pomocniczą: public void doStuff() { int x = 4; int y = 5; doStuffHelper(x, y); } Teraz muszę stworzyć prywatną metodę `doStuffHelper`, która doStuff wywołuje x i y. Dla czytelności zawsze umieszczam pomocnika bezpośrednio nad lub pod funkcją, ale nigdy nie mogę zdecydować, który z nich jest lepszy. Jakie są Twoje przemyślenia/doświadczenia z tym związane? Wiem, że pytanie wydaje się trywialne, ale ponieważ nie mam żadnych przewodnich zasad, uważam, że zawsze zabija czas na decydowanie, co zrobić, i reorganizację kodu, jeśli to nie zadziała. Jeśli nie ma konsensusu, myślę, że nadszedł czas, aby w końcu zobowiązać się do jednego z drugim.


title: Jak zredukować błędy w dynamicznym języku, takim jak python, i poprawić jakość mojego kodu

text: Zamieszczam pytanie o pochodzenie w stackoverflow, niektórzy ludzie sugerują, abym tu zamieścił. Zawsze mam problem z dynamicznym językiem, takim jak Python. Kilka problemów: 1. Błąd literówki, mogę użyć pylinta, aby zmniejszyć niektóre z tych błędów. Ale wciąż są pewne błędy, których pylint nie może zrozumieć. 2. Błąd typu obiektu, często zapominam jaki jest typ parametru, int? ul? jakiś przedmiot? Zapomniałem też typu jakiegoś obiektu w moim kodzie. Test jednostkowy może mi czasem pomóc, ale nie zawsze mam wystarczająco dużo czasu na UT. Kiedy potrzebuję skryptu do wykonania małej pracy, linia kodu ma 100 - 200 linii, nie jest duża, ale nie mam czasu na test jednostkowy, ponieważ muszę jak najszybciej użyć skryptu. Pojawia się więc wiele błędów. Więc masz jakiś pomysł, jak zmniejszyć liczbę tych problemów?


title: Komentowanie wyrażeń regularnych

text: Czy istnieją jakieś wspólne praktyki dotyczące komentowania wyrażeń regularnych: komentarze w tekście odnoszące się do różnych części RegEx lub komentarz ogólny dla wszystkich wyrażeń?


title: C# typy dynamiczne

text: Właśnie przeczytałem rozdział w książce o programowaniu o typach dynamicznych. Chociaż są całkiem zgrabne, nie mogę wymyślić ani jednego przykładu z prawdziwego świata, w którym bym ich użył. Czy ktoś tutaj faktycznie ich używa i do czego?


title: Jak mogę zmotywować się do rozpoczęcia dalszej nauki?

text: Od jakiegoś czasu interesuję się programowaniem i powoli, powoli, powoli pracuję nad rzeczami przez lata. Jednak wydaje mi się, że niewiele się nauczyłem. Naprawdę utknąłem tylko w znanych językach (Java, C# i próbowałem trochę PHP). Problem polega na tym, że w tych językach tylko otarłem się o ich powierzchnię i ograniczyłem się do robienia całkiem prostych rzeczy. Na przykład jako projekt Java pobrałem kod źródłowy jakiejś gry i zmieniłem kilka rzeczy według moich upodobań, ale nic strasznie trudnego. W C# zrobiłem kilka projektów WinForm i konsoli, aby wykonać dla mnie powtarzające się lub rutynowe zadania, co jest miłe, ale znowu nic zbyt skomplikowanego. Dopiero co zacząłem rozumieć pojęcie klas, wielowątkowości i kilku podstawowych, ale niezbędnych narzędzi, które są wymagane w nowoczesnym programowaniu obiektowym. („Dlaczego nie mogę po prostu wrzucić wszystkiego do jednej klasy wielkości potwora?” „Dlaczego nie mogę po prostu uruchomić wszystkiego w jednym wątku?” to pytania, nad którymi się zastanawiałem) Nigdy sam nie tworzyłem dużego projektu . Ostatecznie, moim rodzajem hobbystycznego projektu „wymarzonego” jest to, że chciałbym stworzyć grę przy użyciu technologii DirectX. Mówię to, ponieważ używałem XNA, ale wymaga to od użytkownika zainstalowania frameworka, aby go uruchomić, a także czuję, że jeśli używam frameworka, wiele prac back-endowych jest dla mnie zasłoniętych. (Wydaje się, że DirectX lub OpenGL są tak blisko komputera, jak tylko mogę, bez przesady w złożoności. DirectX jest również instalowany na większości [jeśli nie na wszystkich] komputerach z systemem Windows, które planują uruchamianie gier.) Ale nawet nie zacząłem nawet pomyśleć o rozpoczęciu tego. Ilość rzeczy, które muszę wiedzieć, aby podjąć się zadania, jest absolutnie przytłaczająca. Nie wiedziałbym, od czego zacząć. Podobnie czuję się nieodpowiedni, ponieważ ograniczyłem się do [co uważam za] łatwych języków. Czuję, że powinienem zacząć uczyć się jakiegoś języka skryptowego albo nauczyć się tego lub tamtego, co jest dość zniechęcające. \-- **tl;dr** : Powoli uczę się programować już od jakiegoś czasu, ale ograniczam swoją wiedzę do ograniczonych języków i tylko zarysowuję to, co potrafię. Chcę dowiedzieć się więcej i ewentualnie rozpocząć przyzwoity projekt (mogę stworzyć tylko tyle tekstowych gier RPG i kalkulatorów), ale ogromna ilość wiedzy, której potrzebuję, jest bardzo onieśmielająca. Jedną z moich obaw jest to, że tak mało wiem o językach programowania. Czy lepiej nauczyć się kilku języków, czy móc zagłębić się w jeden język? Jak mogę się zmotywować, aby dowiedzieć się więcej? Czy myślę o tym w niewłaściwy sposób?


title: Dlaczego używanie System.out.println() jest takie złe?

text: Oczywiście bardzo dobrym zastosowaniem jest użycie struktury rejestrowania komunikatów o błędach lub ostrzeżeń. Ale czasami używam System.out.println(), jeśli chcę spróbować czegoś nowego w krótkim czasie. Czy używanie System.out.println() do szybkiego testu jest naprawdę takie złe?


title: Czy powinienem dodać stronę, którą utworzyłem jako doświadczenie w moim CV?

text: Jestem świeżo upieczonym absolwentem informatyki i zastanawiałem się, czy w swoim CV powinienem wymienić stronę internetową, którą stworzyłem jako doświadczenie. Strona nie miała charakteru technicznego, głównie plakaty demotywacyjne i komediowe listy rzeczy. Zbierał jednak średnio 2000-4000 odsłon dziennie. _**Pozytywy_** * Osobiście napisałem HTML/CSS/JavaScript dla części strony * Zdobyłem pewne umiejętności związane z analityką i reklamą, a także jak dotrzeć do odbiorców za pośrednictwem mediów społecznościowych _**Negatywy_** * Ogólna jakość i rodzaj treści na stronie powinienem chyba wspomnieć, że strona już nie istnieje. Wayback Machine to jedyny sposób, w jaki pracodawca może faktycznie zobaczyć witrynę. Jeśli chodzi o treść, byłem trochę niejasny. Najlepsze porównanie, jakie mogę wymyślić, to zawartość, która byłaby podobna do tej, którą ma teraz Cracked.com.


title: Dlaczego enumeracja flag jest uważana za umiejętność średnio zaawansowaną?

text: Czytałem ten artykuł: Projektowanie wyliczeń flag @ msdn i mówi > Łączenie wartości wyliczenia flag jest umiejętnością pośrednią, która nie powinna być > wymagana dla programistów wdrażających typowe scenariusze. Myślę, że wyliczanie flag jest niesamowite – coś, o czym dowiedziałem się podczas moich doświadczeń z C. Dlaczego wydaje się, że ten artykuł ostrzega programistów od tego, co uważam za przydatną (a nie złożoną) umiejętność?


title: Kiedy konfrontować się z dobrym liderem projektu lub szefem?

text: Nasz szef projektu jest genialnym architektem oprogramowania, ogólnie delikatną i taktowną osobą, maniakiem z natury i delikatnym głosem. Ale czasami my (moi koledzy z zespołu i ja) różnimy się opiniami - zwłaszcza w kwestiach dotyczących architektury oprogramowania, problemów z projektowaniem systemów, problemów z interfejsem użytkownika itp. - z naszym liderem. Kiedy i jak (jeśli w ogóle) powinniśmy wyrazić różnicę w opiniach?


title: Reguły biznesowe, logika biznesowa, walidacja danych wejściowych

text: Mogło być zadawane tysiące razy, ale nie mogłem znaleźć odpowiedzi. Zastanawiam się tylko, jak radzicie sobie z błędami logiki biznesowej? Próbuję zrobić fajne API dla mojego modelu biznesowego. Niektóre metody mają sporo walidacji i po prostu zastanawiam się, jak je zgłosić, jeśli coś pójdzie nie tak? Zwrócenie wartości prawda, fałsz lub wartość null czasami nie powie, jaka była rzeczywista przyczyna. Czasami to działa, czasami to za mało. Czytałem, że niektórzy używają wyjątków. Myślałem, że mogę zwrócić komunikaty o błędach i gdy wszystko pójdzie dobrze, będzie to zero. Jakoś kody błędów po prostu się nie sumują..


title: Używanie połączenia z bazą danych DSN to zła praktyka?

text: Przez całe moje zawodowe życie, kiedy programowałem w środowiskach Windows, radziłem moim przyjaciołom i współpracownikom, aby nie używali połączenia z bazą danych DSN w swoich aplikacjach, opierając się na moich osobistych wnioskach, ale tak naprawdę nie widziałem na to żadnych dowodów. Wiem, że korzystanie z połączenia DSN przez źródło danych ODBC oznacza, że to połączenie będzie używać sterownika ODBC. Wiem z dokumentacji, że ODBC jest niezależnym od języka, niezależnym od systemu operacyjnego interfejsem API do łączenia się z bazami danych, wszystko, co zapewnia ten poziom elastyczności, ma pewne wady (może być możliwe, że niektóre specyficzne funkcje nie mogą być używane z ODBC) lub może być to, że wydajność może być niższa niż przy użyciu bardziej bezpośredniego interfejsu API (OLEDB lub innego). Wiem, że korzystanie z połączenia bez DSN samo w sobie wiąże się z pewnymi problemami, takimi jak bezpieczne przechowywanie informacji dostępowych do serwera/pliku bazy danych (można to rozwiązać za pomocą pewnego rodzaju szyfratora danych) lub nieoczekiwane zmiany nazwy dostawcy używanego w sterowniki połączenia (specyficzny przypadek starych sterowników informix). Czy to prawda, czy coś nie rozumiem?


title: Najszybszy sposób na otwarcie pliku w Visual Studio, znając tylko jego nazwę

text: Jaki jest najlepszy/najszybszy sposób otwierania pliku w programie Visual Studio, znając tylko jego nazwę? W Eclipse jest "Open Resource", który pozwala na interaktywne wyszukiwanie wszystkich plików w obszarze roboczym, ale nie mogę znaleźć podobnej dobrej funkcji w Visual Studio. Normalna funkcja „otwórz plik” w Visual Studio otwiera okno dialogowe pliku systemu Windows, co jest dość bezużyteczne, ponieważ muszę dokładnie wiedzieć, gdzie znajduje się plik.


title: Co to znaczy, że flaga binarna pliku IO ma znaczenie tylko w systemie Windows?

text: Czytałem pytanie i jeden z komentarzy wspomniał, że „Flaga binarna ma znaczenie tylko w systemie Windows”. Biorąc pod uwagę kontekst pytania i odpowiedzi, interpretuję to stwierdzenie jako `na maszynach innych niż Windows, nie musimy określać trybu tekstowego ani binarnego podczas wykonywania operacji IO pliku` Kontekstem pytania jest odczytanie wszystkich bajtów pliku w łańcuch (przypuszczalnie zachowując bajty). Wydaje mi się bardzo istotne, czy czytam dane jako tekst czy bajty, ponieważ czytanie tekstu wiąże się z kodowaniem. Jeśli na przykład czytam plik UTF-16, to, co otrzymuję w trybie tekstowym, znacznie różni się od tego, co otrzymuję w trybie binarnym. Zakładając, że moja interpretacja instrukcji jest poprawna, czy nie jest konieczne określanie, czy plik powinien być otwierany w trybie tekstowym, czy binarnym na komputerach bez systemu Windows? Oznacza to, że domyślnie wszystkie pliki są odczytywane w trybie binarnym. W przeciwnym razie, do czego mogłoby się odnosić to stwierdzenie? (komentarz otrzymał wiele głosów za, więc przypuszczalnie nie jest to tylko opinia jednej osoby)


title: Jaka jest dobra metoda przechowywania danych testowych na potrzeby programowania i testowania jednostkowego za pomocą angular i jaśminu?

text: Jaka jest dobra metoda przechowywania danych/obiektów JSON na potrzeby programowania i testów jednostkowych za pomocą angular i jaśminu? Widziałem kilka sposobów na osiągnięcie tego. Jednak ponieważ jestem nowy w testowaniu jednostkowym za pomocą JavaScript, obawiam się, że pójdę w złym kierunku. Oto kilka przykładów tego, co chciałbym osiągnąć: * Powiedzmy, że chcę zbudować witrynę z zestawu danych testowych, a następnie podłączyć ją do bazy danych. Myślę, że byłoby łatwiej, gdybym zaczął rozwijać i testować te same dane. Może wszystko, co muszę zrobić, to odwołać się do pliku js, który zawiera metodę zwracania tablicy tych danych. Nie wiem, jakie to może mieć niepowodzenia. * Innym przykładem może być to, że moją początkową reakcją podczas próby wykonania testu wykorzystującego dane było po prostu wykonanie wywołania $http do mojego pliku .json. Szybko nauczyłem się, że nie mogę tego zrobić i będę musiał kpić z danych. Wydaje się, że posiadanie moich danych zarówno w makiecie testów jednostkowych, jak i pliku .json, gdy bieżący cel danych jest przeznaczony tylko do testowania/dev, wydaje się trudny. Załatwię to w dwóch miejscach.


title: Jak reżyser powinien przeprowadzić rozmowę kwalifikacyjną na stanowisko programisty/inżyniera oprogramowania?

text: Zawsze zastanawiam się, kiedy przeprowadzam wywiad, dlaczego zaangażowany jest dyrektor lub wiceprezes ds. Inżynierii? Jeśli zespół inżynierów i menedżer ds. rekrutacji chce zatrudnić osobę, nigdy nie widzę, żeby dyrektor lub wiceprezes zawetował, chyba że kandydat powiedziałby coś rażącego. Czy to tylko po to, by kandydat poczuł, że jest doceniany? Jakie jest uzasadnienie?


title: Jak włączyć/wyłączyć moduły kodu?

text: Staram się uruchomić wiele witryn używając jednej bazy kodu, a baza kodu składa się z następującego modułu (czyli klas) * modułu użytkownika * modułu Q&A * modułu Faq i każda klasa działa na wzorcu MVC czyli składa się z * klasy Entity * Helpera klasa (tj. klasa statyczna) * Wyświetl (tj. strony i kontrolki) i powiedzmy, że mam 2 witryny site1.com i site2.com. I staram się osiągnąć następującą funkcjonalność * site1.com może mieć uruchomiony moduł User, Q & A i Faq * site2.com może mieć aktywny moduł User i Q & A, gdy moduł Faq jest wyłączony, ale można go wyłączyć- w razie potrzeby, więc moje zapytanie tutaj jest najlepszym sposobem na osiągnięcie takiej funkcjonalności. Czy wprowadzam bit flagi, który sprawdzam na każdej stronie i kontrolkę należącą do tego modułu? Bardziej przypomina CMS, w którym możesz włączać/wyłączać różne funkcje. Staram się to ogarnąć, proszę podać mi przykład lub wskazać, czy nie robię złego podejścia.


title: Dlaczego w nazwach identyfikatorów w tak wielu językach jest $?

text: Wiele języków skryptowych, takich jak Perl, Awk, Bash, PHP itp. używa znaku $ przed nazwami identyfikatorów. Próbowałem sprawdzić dlaczego, ale nigdy nie znalazłem satysfakcjonującej odpowiedzi.


title: Środowisko Dev vs Stage vs Środowisko Prod

text: Pracuję dla firmy, w której budujemy aplikacje dla przedsiębiorstw i utrzymujemy trzy środowiska: dev, stage i prod. Znaczenie dev jest intuicyjne: to środowisko używane podczas tworzenia aplikacji. Jaka jest różnica między środowiskiem scenicznym a produkcyjnym?


title: Czy należy uczyć się nowych języków, czy tylko koncentrować się na językach, które już znasz i poszerzać swoją znajomość?

text: Która droga jest bardziej korzystna i produktywna?


title: Baza słów i słów pokrewnych dla wyszukiwarki

text: Muszę być w stanie wyszukać słowo w języku angielskim i wyświetlić listę powiązanych słów. Załóżmy, że mam listę 100 słów, które użytkownik powinien móc przeszukiwać. Dla każdego terminu musiałbym wypisać słowa kluczowe w bazie danych opisujących obiekt i jest bardzo prawdopodobne, że mógłbym zapomnieć o typowym słowie kluczowym lub dołączyć złe słowo. Czy istnieją wstępnie utworzone bazy danych, z których mogę korzystać? Aby sprecyzować, załóżmy, że wyszukałem słowo piłka nożna. Teraz moim wynikiem powinny być słowa/frazy związane z piłką nożną: piłkarze, piłka nożna, strzał, gol itp. Potrzebuję więc wyszukiwarki słów powiązanych lub bazy danych zawierającej relacje. Wygląda na to, że można było już to zrobić, więc znacznie wygodniej byłoby to wykorzystać niż wymyślać koło na nowo. Mój aktualny projekt dotyczy działań zwrotnych związanych ze słowem, więc posiadanie dostępu do bazy danych, aby móc ją modyfikować, byłoby pomocne.


title: Jak skutecznie przeprowadzić ręczne debugowanie?

text: Powiedzmy, że nie masz dostępnego debugera, jakie byłoby skuteczne podejście do debugowania kodu, który nie działa (zgodnie z oczekiwaniami)?


title: Dlaczego nie zaleca się posiadania właściwości „tylko zestaw”?

text: Dzisiaj w pracy jeden z moich kolegów przejrzał mój kod i zasugerował, abym usunął właściwość set-only i użył metody insted. Ponieważ obaj byliśmy zajęci innymi rzeczami, polecił mi zajrzeć do sekcji „Property Design” z książki „Framework Design Guidelines”. W książce autor poprosił właśnie o unikanie > Właściwości, w których setter ma większą dostępność niż getter. A teraz zastanawiam się, dlaczego nie zaleca się posiadania właściwości tylko do zbioru? Czy ktoś może mi wyjaśnić, proszę?


title: MPL 2.0. dynamiczne łączenie z GPL

text: Powiedzmy, że biblioteka "A" jest wydana na licencji GPL. Biblioteka „A” udostępnia niektóre funkcje API do dynamicznego łączenia. Napisałem opakowującą bibliotekę "B" do używania "A" w innym języku. Biblioteka „B” dynamicznie łączy się z biblioteką „A” (wywołania są wykonywane do ujawnionych funkcji API) . Chciałbym opublikować moją bibliotekę wrappera "B" pod MPL v.2.0. Główne pytanie brzmi... czy to jest legalne?


title: Czy powinienem dalej pisać własny kod, czy nabrać nawyku PONOWNEGO UŻYWANIA?

text: to jest ogólne pytanie dotyczące programowania, nie znoszę używać kodu innych ludzi i sam koduję rzeczy na swój własny sposób, nawet najprostsze rzeczy, takie jak szablon strony internetowej, kalendarz PHP lub moduł aktualności. Czy jest w tym coś złego? Czy powinienem się zmienić i przyzwyczaić się do ponownego wykorzystywania bezpłatnego kodu innych osób?


title: Jaka jest Twoja strategia przekształcania kompilacji RC w sprzedaż detaliczną?

text: Próbujemy wdrożyć strategię przejścia naszych kompilacji z wersji RC na wydany kod detaliczny. Kiedy oznaczamy kompilację jako kandydata do wydania, wysyłamy ją do kontroli jakości w celu przeprowadzenia regresji. Jeśli to zatwierdzą, to RC stanie się naszym wydanym kodem detalicznym. Podobał mi się pomysł „oczywistego” oznaczania wersji, aby użytkownik wiedział, czy ma wersję beta, RC lub kod detaliczny… gdzie w kodzie niedetalicznym miałbyś oczywisty znak wodny (pomyśl o Windows 7, gdzie RC lub nieoryginalny znak wodny kompilacji w prawym dolnym rogu). ... ale wydawało nam się dziwne manipulowanie projektem (aby usunąć znak wodny), gdy przeszedł on regresję. Jeśli wersja a.b.c.d z certyfikatem kontroli jakości, to nasz kod detaliczny powinien być tą samą wersją, a nie a.b.c.d+1, jakie strategie zastosowałeś, aby wyraźnie oznaczyć niepublikowane wersje oprogramowania bez zwiększania kompilacji w celu wyłączenia znaków wodnych w kodzie detalicznym? Jednym z pomysłów, który rozważałem, jest napisanie twojej kompilacji w celu wyszukania podpisanego pliku w archiwum instalatora ... kod niepublikowany nie zawierałby tego pliku, więc aplikacja będzie wiedziała, że wyświetla znak wodny. Ale nawet to wydaje się, że kontrola jakości pracuje wtedy z kodem niepublikowanym. Pomysły? **EDYTUJ:** A co z procesem, który sam QA może uruchomić w celu usunięcia wskaźnika „RC”? To może być interesujący sposób na poradzenie sobie z tym.


title: Ramy czasowe do przekazania MCPD Web Developer .NET 4

text: Mam 24-miesięczne doświadczenie w tworzeniu aplikacji klient/serwer .NET C# w moim zawodzie jako programista oprogramowania. Teraz rozpoczynając w nowej firmie mam okres próbny 6 miesięcy. Mój nowy pracownik chce dać mi 6 miesięcy na uzyskanie MCPD Web Developer 4. Jeśli dobrze zrozumiałem witrynę Microsoft, muszę zdać CZTERY egzaminy, są to: Web Developer 4 w Visual Studio 2010 Numer egzaminu Warunek MCTS: TS: Web Tworzenie aplikacji przy użyciu egzaminu Microsoft .NET Framework 4 Egzamin 70-515 Wymagania wstępne MCTS: TS: Windows Communication Foundation Development przy użyciu Microsoft .NET Framework 4 Egzamin 70-513 Wymagania wstępne MCTS: TS: Dostęp do danych przy użyciu egzaminu Microsoft .NET Framework 4 70-516 Wymagania MCPD : PRO: Projektowanie i tworzenie aplikacji internetowych przy użyciu Microsoft .NET Framework 4 Egzamin 70-519 Czy można to w ogóle osiągnąć w ciągu 6 miesięcy? Myślę, że to śmieszne. Jak myślisz, jaki jest najlepszy sposób, aby to osiągnąć? Jeszcze bardziej chciałbym usłyszeć twoje wrażenia, jak zrobiłeś "MCPD Web Developer 4"


title: Jak opracować stronę porównującą produkty

text: Chcę stworzyć stronę porównania produktów, na której użytkownik może porównać 2 lub 3 produkty. Myślałem o 3-kolumnowej liście wyświetlającej każdą specyfikację. Ale chcę podkreślić różnice. Mógłbym użyć listy i posortować je alfabetycznie. A następnie, jeśli element _x_ listy 1 nie jest równy elementowi _x_ listy 2, podświetl go. Ale nie jestem pewien, czy każdy produkt ma te same elementy. Może brakuje elementu _x_ na liście 2. Jaka może być dobra metoda na rozwinięcie tego? Czy powinienem zaznaczyć jakieś elementy na każdym produkcie, który można porównać (jak rodzaj klas elementów)? Abym mógł sprawdzić, czy elementy z klasy elementów _x_ różnią się na 2 produktach. Jakieś inne sugestie?


title: Kodowana technika automatyzacji testów interfejsu użytkownika

text: W jaki sposób kodowana technika testowania interfejsu użytkownika jest bardziej korzystna niż jakakolwiek inna technika testowania? Jaka jest główna zaleta korzystania z kodowanego testu interfejsu użytkownika?


title: Czy lista parametrów metody powinna zawierać obiekty lub identyfikatory obiektów?

text: Nasze zespoły prowadzą następującą dyskusję: Załóżmy, że mamy dwie metody: public Response Withdraw(int clubId, int terminalId,int cardId, string faktura, kwota dziesiętna); publiczna wypłata odpowiedzi (klub klubowy, terminal terminalowy, karta karty, faktura tekstowa, kwota dziesiętna); to, co jest wysyłane przez sieć, to tylko identyfikatory. jedna ze stron mówi, że pierwsza metoda jest poprawna, ponieważ mamy tylko identyfikatory terminala i klubu, a powinno być jasne, że nie mamy nic innego, takie jest moje podejście. druga strona mówi, że druga metoda jest poprawna, ponieważ jest bardziej elastyczna. Znamy ideę parametru obiektu, druga strona również uważa, że parametr obiektu powinien mieć obiekty jako właściwości. Jakie jest właściwe podejście? Może istnieje trzecie jeszcze lepsze podejście?


title: Dlaczego lepiej jest używać nieczytelnych bajtów do komunikacji klient-serwer?

text: Komponuję teksty komunikacji dla klienta-serwera i o czym myślę: * "authme username passord" (może być zaszyfrowane) * "accept" * "pobierz archiwum H2O od 03.02.2005 do 20.12.2064" * przenoszenie binarnej struktury lub „opis błędu”, dlaczego zawsze muszę zrobić coś takiego jak * 0x0FA52FD + CRC * 0x0D34423 + CRC * ... Widzę pewne bezpieczne powody, ale myślę, że to nie jest prawdziwy powód, więc nie mogę używać ciągów w kliencie- komunikacja z serwerem?


title: Poleć książkę techniczną wyjaśniającą, w jaki sposób przeglądarka i serwer komunikują się

text: Choć tworzę aplikacje webowe już prawie 6 lat, to nadal nie wiem, co się dzieje, gdy żądanie dotrze do serwera. Szukam książki, która działa poprzez to, co się dzieje, gdy żądanie dotrze do serwera i skąd serwer wie, który kod wywołać. Zakładam, że istnieje stara książka z wczesnych lat osiemdziesiątych i dziewięćdziesiątych, kiedy internet był jeszcze stosunkowo nowy dla programistów, która mogłaby to wyjaśnić; ale moje google-fu zawodzi w poszukiwaniu tej książki. Niezależnie od tego, czy książka dotyczy IIS, czy Apache, myślę, że byłaby dość interesująca do przeczytania i może być przydatna, więc wszelkie rekomendacje są mile widziane. Dziękuję Ci


title: Szybsze odczyty na nieskończonej płaszczyźnie siatki niż przy użyciu tablicy mieszającej?

text: W przeszłości odniosłem wiele sukcesów używając „Słownika” .NET, z „TKey” składającym się z połączonych współrzędnych X, Y. Jednak jego wydajność odczytu, mimo że jest amortyzowana przez stały czas, jest wąskim gardłem w moim projekcie. Moja aplikacja musi wykonać _dużo_ odczytów i bardzo skorzystałaby, gdyby wydajność odczytu była podobna do tablicy. Moje dane mają bardzo wysoki stopień lokalności przestrzennej; w załączeniu obrazek przedstawiający dwa wykresy rozkładu niektórych przykładowych danych na płaszczyźnie 2D _(przepraszam za brak etykiet)_ ; po lewej stronie są dane o małej lokalizacji przestrzennej, a po prawej jak wyglądają moje dane (zawsze jest to pojedyncza połączona masa i bryła w formie). ![tutaj podaj opis obrazka](http://i.stack.imgur.com/AQhJM.png) Mógłbym użyć tablicy (poprzez obliczenie prostokąta ograniczającego (`bRect`) wokół danych, a następnie wykonanie `data=array [(y-bRect.Top)*bRect.Height+x-bRect.Left]`), ale wtedy musiałbym przebudować całą tablicę za każdym razem, gdy zmieniono `bRect.Height` lub zwiększono `bRect.Width`. A więc moje pytanie brzmi, biorąc pod uwagę wysoki stopień lokalności przestrzennej, czy „Słownik” naprawdę jest tutaj najlepszym wyborem? Czy istnieje inne podejście, które mógłbym zastosować, gdzie mógłbym zbliżyć się do tablicy, takiej jak wydajność odczytu, ale nie muszę przebudowywać tablicy po dodaniu danych? (nie muszę nigdy usuwać danych)


title: Jak radzisz sobie z pytaniami opartymi na wiedzy podczas wywiadów?

text: W wywiadach technicznych, które przeprowadzają wywiady z doświadczonymi programistami, ankieterzy zadają wiele pytań opartych na wiedzy. [np. Jak skonfigurować to i tamto w xml] . Te pytania mają dokładnie jedną odpowiedź i jest bardzo prawdopodobne, że dobry programista może nie znać odpowiedzi na nie (i dlatego zostanie odrzucony). Czy istnieje dobry sposób, aby odpowiedzieć na te pytania? [Jak grzecznie powiedzieć ankieterowi, że odpowiedź to tylko wyszukiwanie w Google].


title: Co jest lepsze w przypadku drobnych poprawek i drobnych funkcji - nazywanie gałęzi według numeru zgłoszenia czy nazywanie ich według opisu funkcji?

text: Jestem w trakcie nieporozumienia (oczywiście serdecznego) z moim tropem co do prawidłowego nazewnictwa gałęzi. Dotyczy to gałęzi z poprawkami błędów i małych funkcji, a nie gałęzi funkcji długotrwałych. W przypadku długo działających gałęzi funkcji zgadzamy się, że nazwy czytelne dla człowieka są lepsze. Oto dwa punkty widzenia: Mój: Nazywanie oddziałów według ich zespołu i numeru biletu jest lepsze. Ułatwia to znalezienie ich w naszym systemie biletowym i krótsze do wpisania. Ułatwia również wyszukiwanie odpowiednich gałęzi w GIT podczas wyszukiwania informacji historycznych o bilecie. Przykład: nazwa-zespołu/12345 nazwa-zespołu/53719 His: Nazywanie gałęzi zgodnie z ich cechą/funkcjonalnością. Ułatwia autouzupełnianie i jest łatwiejszy do zapamiętania niż pojedyncze liczby. Przykład: nazwa-zespołu/fix-that-sql-bug nazwa-zespołu/expand-http-parser Jeden kompromis, który zaproponowałem to: nazwa-zespołu/12345-fix-that-sql-bug Ale on tego nie lubi, ponieważ miesza się z autouzupełnianiem GIT. Jeśli jest to głównie oparte na opinii, proszę udzielić mi wskazówek, w jaki sposób może to lepiej pasować do SO - ale myślę, że podane przeze mnie powody można zmienić/dodać, aby uzyskać empiryczną odpowiedź.


title: Który system VCS jest skuteczny w przypadku przechowywania małych zmian w dużych plikach tekstowych?

text: Agencja rządowa publikuje plik tekstowy z tysiącami rekordów. Cały plik ma około 60MB. Każdego dnia plik zawiera około 60 nowych lub zmienionych rekordów. Musimy zweryfikować niektóre informacje w tym pliku, a do celów audytu może być konieczne odzyskanie pliku w takim stanie, w jakim był w określonej dacie. Pomyślałem, że mógłbym użyć VCS do przechowywania pliku za pomocą git, ale rozumiem, że git przechowuje cały plik tekstowy spakowany gzipem, więc plik 60BM nadal będzie potrzebował około 30 MB do przechowywania codziennej wersji. Zastanawiam się, czy któryś z darmowych VCS przechowuje tylko pliki diff/patch.


title: Historia użytkownika i usługa sieciowa

text: Piszę historyjkę użytkownika i mam proste pytania. Zastanów się, piszę to dla modułu logowania, który wewnętrznie wywołuje usługę sieciową w celu uwierzytelnienia użytkownika i zwraca dane. Jak można to przekształcić w historyjkę użytkownika. Gdyby to było zapisane jako: > Jako użytkownik, > > Chciałbym zalogować się do systemu i zobaczyć zestaw wyników. i zostaw to, czy też powinienem napisać walidacje/wywołanie usługi internetowej. Jak rozumiem, jako użytkownik nie zajmuję się serwisem internetowym. Jak więc mam o tym napisać?


title: Poszukiwanie alternatywy dla xinetd do forkingu współbieżnych serwerów w Linuksie

text: Niedawno napisałem tutaj z pytaniem o wady posiadania procesu serwera powiązanego z dynamicznie przypisanym portem. Takie podejście pojawiło się, ponieważ xinetd, który uruchomił proces serwera, przydziela STDIN i STDOUT jako kanał komunikacyjny serwera do klienta, a my chcieliśmy, aby serwer używał gniazda dwukierunkowego. Odpowiedzi (i nasz zespół operacyjny) przekonały mnie do porzucenia takiego podejścia. Potrzebuję procesu demona do monitorowania wyznaczonego portu i równoczesnego rozwidlenia serwerów. Proces serwera jest napisany przy użyciu infrastruktury we/wy opartej na gnieździe. Opracowaliśmy proces serwera, który może zostać uruchomiony przez xinetd. Pierwszą rzeczą, jaką robi, jest powiązanie z dynamicznie przypisywanym numerem portu, wysłanie numeru portu do klienta przez STDOUT, a następnie nasłuchiwanie w gnieździe pod kątem connect() klienta - w którym momencie dobrze jest skorzystać z gniazda oparta na infrastrukturze we/wy. Nasz zespół operacyjny zrezygnował z używania portów dynamicznych ze względów bezpieczeństwa (patrz link). Szukam alternatywnego **sposób, aby klient mógł połączyć się z dynamicznie generowanym serwerem i komunikować się za pomocą gniazd.** Najprostszym rozwiązaniem byłoby coś identycznego pod wieloma względami z **xinetd** , ale które zamiast alokowanie STDIN/STDOUT jako połączenia serwera z klientem spowoduje przekazanie gniazda, które zostało przydzielone, gdy demon akceptował połączenie, do serwera. Przypuszczalnie, ponieważ numer gniazda nie byłby przewidywalny, demon musiałby również przekazać ten numer jako argument wiersza poleceń. Napisałem takiego demona w Perlu, ale waham się, czy rzucić własnego, ponieważ jestem pewien, że (x)inetd jest znacznie lepiej „utwardzony” niż to, co mógłbym łatwo wymyślić. Więc to jest problem i to, co uważam za najprostsze rozwiązanie. Byłbym wdzięczny wysłuchaniu alternatywnych rozwiązań, a nawet tego, czy w rzeczywistości xinetd _można_ skonfigurować tak, aby przekazywał gniazdo tak, jak opisałem.


title: Czy dekoratorzy nie łatwo łamią dostawcę usług internetowych?

text: „Zasada Interface-Segregation Principle (ISP) mówi, że żaden klient nie powinien być zmuszany do polegania na metodach, których nie używa”. Wzorzec dekoratora to wzorzec projektowy służący do dekorowania metody klasy. W tym celu dekorator implementuje ten sam interfejs, co dekorowany obiekt, więc może zająć jego miejsce. Ale czy to nie oznacza, że musi zaimplementować wszystkie metody w interfejsie, skoro używa tylko jednej z nich, tej, którą ozdabia? Więc myślę, że to narusza dostawcę usług internetowych. Jedyny przypadek, w którym tak nie jest, to taki, w którym dekorowany interfejs zawiera tylko metodę, którą należy ozdobić, ale uważam to za przypadek raczej rzadki. Przykładem może być to, że w książce są strony. Niektóre strony mają przypisy, inne mają tytuły u góry. Więc implementujemy te dodatki jako dekoratory metody, powiedzmy draw(). Ale strona ma również inne metody, powiedzmy: fold() i tear(), a inne metody mogą pojawić się później. Ale jeśli chcemy używać zdobionych wersji stron wstawionych do książki i pracując w ten sam sposób, w każdym dekoratorze implementujemy każdą metodę strony, gdzie jedyną rzeczą, która się dzieje, jest to, że dekorator przekazuje wywołanie do strony, na której jest zawierający. interfejs IPpage { public ITearResult tear(); public void draw(); } klasa FooterDecorator implementuje IPage { prywatna strona IPage; public FooterDecorator(strona IPpage) { this.page = page; //obiekt, który dekoruje } //narusza dostawcę usług internetowych, ponieważ musi go zaimplementować, ale go nie używa, //po prostu przekazuje operację public ITearResult tear() { return page.tear(); } //metoda dekorowana public void draw() { page.draw(); ... narysuj stopkę - dekoracja } } Czy nie rozumiem prawidłowo wzorca dekoratora lub dostawcy usług internetowych? Czy jest to dopuszczalne naruszenie, czy te dwie rzeczy naprawdę są ze sobą sprzeczne?


title: Czy wolniejsza wydajność języków programowania to naprawdę zła rzecz?

text: Oto jak to widzę. Jest kod maszynowy i to wszystko, czego potrzebują komputery, aby coś uruchomić. Komputery nie dbają o języki programowania. Nie ma dla nich znaczenia, czy kod maszynowy pochodzi z Perla, Pythona czy PHP. Języki programowania nie obsługują komputerów. Służą programistom. Niektóre języki programowania działają wolniej niż inne, ale niekoniecznie dlatego, że jest z nimi coś nie tak. W wielu przypadkach dzieje się tak dlatego, że robią więcej rzeczy, które programiści w innym przypadku musieliby zrobić (np. zarządzanie pamięcią) i robiąc te rzeczy, są lepsi w tym, co powinni robić - służą programistom. Czy więc wolniejsza wydajność języków programowania jest naprawdę zła?


title: Gdzie umieścić logikę biznesową w projekcie MVC?

text: Stworzyłem prostą aplikację Java MVC, która dodaje rekordy poprzez formularze danych do bazy danych. Moja aplikacja zbiera dane, weryfikuje je i przechowuje. Dzieje się tak, ponieważ dane są pozyskiwane online od różnych użytkowników. dane mają głównie charakter liczbowy. Teraz na danych liczbowych przechowywanych w bazie danych (serwer SQL) chcę, aby moja aplikacja wykonywała obliczenia i wyświetlała wyniki. Użytkownik nie jest zainteresowany sposobem wykonywania obliczeń, więc muszą być hermetyzowane. Użytkownik musi mieć możliwość wyświetlania tylko prostych danych obliczonych (na przykład dane kolumny A minus dane kolumny B podzielone przez dane kolumny C). Wiem, jak pisać procedury składowane dla tego samego, ale potrzebuję aplikacji trójwarstwowej. Chcę, aby dane, które umieściłem w bazie danych jako rekord, przepracowałem wykonując na nim obliczenia. Pierwotne dane powinny pozostać nienaruszone, natomiast nowe dane, po obliczeniach, należy zapisać jako nowy rekord jednostki w bazie danych. Gdzie mam napisać kod do obliczeń w tle? Skoro jest to reguła i logika biznesowa, czy powinienem umieścić go w nowych plikach JavaBeans?


title: W jaki sposób można ulepszyć ten schemat „przeniesienia kariery do rozwoju oprogramowania”?

text: Wygłaszam wykład w kwietniu 2011 r. na temat „Angielski dla programistów” i pokazuję moim **odbiorcom niebędącym programistami** , głównie nauczycielom języka angielskiego, różne diagramy wyjaśniające, jak programiści widzą swoją branżę itp. Jeden z tych diagramów to „ **Hot Technologie** ”, jeśli chcesz zostać programistą, jakich technologii powinieneś się nauczyć, aby mieć największą szansę na (1) zdobycie **pracy** (2) zarobienie dobrej **wynagrodzenia** i ( 3) pracuj z najbardziej **ekscytującą technologią**. To jest szkic, który stworzyłem, aby wydobyć kilka pomysłów, w zasadzie C#, PHP, Java to miejsce, w którym znajduje się większość zadań. Rozwój mobilny ma wielką przyszłość. JavaScript staje się coraz ważniejszy, a ja chcę wymienić "drobne technologie" takie jak Python, Ruby on Rails, zakładam m.in. że generalnie w tych technologiach jest znacznie mniejszy procent miejsc pracy, jak w C#, PHP, Java. **Jak można ulepszyć ten diagram?** ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/iMiOn.png) # AKTUALIZACJA Dziękujemy wszystkim za sugestie. Większość z nich umieściłem w mojej zaktualizowanej grafice. Czy ktoś zna więcej **technologii Java**, które byłyby odpowiednie tutaj i czy można coś dodać do **technologii gier**? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/ddW6n.png)


title: Śledzenie nieodpłatnego dobrowolnego wysiłku w projektach open source

text: Jestem ciekaw, czy jakikolwiek projekt open source rzeczywiście śledził wysiłek za pomocą takiego miernika, jak zgłoszone przez siebie godziny, wprowadzone przez nieopłacanych dobrowolnych programistów. Czy oni? Jak? Czemu? Nie obchodzą mnie funkcje szacowania kosztów SLOC lub inne nonsensowne zmienne. Proponuję jako odpowiedź przykład z wieloma współpracownikami z wyjaśnieniem, jak i dlaczego to robią.


title: W jaki sposób programista .net jest związany z zarządzaniem relacjami z klientami (CRM)?

text: Zastanawiam się, w jaki sposób umiejętności programisty ASP.NET mogą być pomocne w zarządzaniu relacjami z klientami? Przeglądałem portal z ofertami pracy, szukając pracy w ASP.NET i stwierdziłem, że do rozwoju CRM (może to być SAP, Seibel lub MS Dynamics) wymagane są umiejętności programisty ASP.NET, takie jak MS SQL, usługi internetowe itp. Jak programista ASP.NET może być pomocny w CRM?


title: Programiści, którzy potrzebują dużo "Pomocy z zewnątrz" - Czy to źle?

text: Czy jest to trochę tandetna lub kiepska praktyka, gdy programiści używają nietypowej ilości bibliotek/frameworków do wykonania pewnych zadań? Pracuję z kimś nad stosunkowo prostym projektem programistycznym obejmującym zapytania geolokalizacyjne. Facet wydaje mi się amatorem. W przypadku oprogramowania serwerowego ten gość użył Pythona, Django i kilku innych szalonych bibliotek („PostGIS + gdal, geoip i kilka innych bibliotek przestrzennych”, które pisze), aby go utworzyć. Napisał cały program w jednej metodzie (w views.py, niemniej jednak _facepalm_ ) i jest prawie nieczytelny. Czy to źle? Czy to naprawdę tandetne i amatorskie? Czy obecnie jestem jedynym minimalistą?


title: Jaki jest najlepszy sposób na rekrutację utalentowanych programistek?

text: Pracuję w zespole z kilkunastoma mężczyznami. Oni są wspaniali. Lubię je iw ogóle, ale nie mogę przestać się zastanawiać, dlaczego tak trudno znaleźć inne techniczne kobiety. Wiem, że istnieją, ponieważ spotykałem ich na konferencjach, czytałem ich blogi i widziałem na kampusie. Domyślam się, że w naszym zespole jest coś, co ich powstrzymuje. Jak możemy rekrutować utalentowane kobiety bez uciekania się do sztuczek? Nie szukam pełnego parytetu płci, ale dlaczego niektóre zespoły mają podział płci w stosunku 50/50, a nasz jest całkowicie nierówny?


title: wielojęzyczny system i zabezpieczenia z php

text: Po pierwsze przepraszam za mój angielski. Koduję nową stronę. To jak StackExchange, serwis społecznościowy i blog. Cokolwiek staram się tworzyć wielojęzyczne, jednak nie mogę się zdecydować jak to zrobić. Muszę używać modułów, więc muszę używać OOP, mając wielojęzyczny interfejs. Jak mogę to zrobić? Do wyboru są dwie opcje językowe (turecki i angielski), używane w sposób ciągły (przykład: strona główna itp.) lub nie (niektóre błędy; przykład: "proszę wpisać swój adres e-mail" itp.) 1. Potrafię używać klasy i używam tablicy ( do ciągłego używania), 2. Potrafię korzystać z klasy i strony XML (dla błędów) lub mogę mieć klasę i trzy strony językowe: turecki, angielski i błędy. Który daje najlepszą wydajność? * * * Innym problemem jest bezpieczeństwo php-mysql. Używam mysqli. Oczywiście blokuję znaki html i używam mysqli_real_escape_string. Ale to nie wystarczy. Używam więc procedur składowanych. Co jeszcze mogę zrobić? jaka jest Twoja rada?


title: Czy powinienem użyć repozytorium w obiekcie domeny, czy przenieść obiekt domeny z powrotem do warstwy usług?

text: Pochodzę ze świata skryptów transakcyjnych i dopiero zaczynam przyglądać się DDD. Nie jestem pewien, jak prawidłowo zintegrować projekt DDD z trwałością bazy danych. Oto, co mam: klasę usług o nazwie OrganizationService, której interfejs zawiera metody pobierania i zapisywania wystąpień obiektów domeny Organization. Organizacja jest zagregowanym rootem i posiada inne powiązane z nią dane: Członkowie i Licencje. Pierwszy DBContext bazy danych EF6 jest używany w usłudze OrganizationService do pobierania jednostek OrganizationDB i powiązanych jednostek MemberDB i LicenseDB. Wszystkie te elementy są przekształcane w ich odpowiedniki klasy obiektów domeny po pobraniu przez usługę OrganizationService i załadowaniu do obiektu domeny organizacji. Ten obiekt wygląda tak: public class Organizacja { public IList<Member> Members { get; ustawić; } public IList<Licencja> Licencje { get; ustawić; } } Nie używam wzorca Repository w OrganisationService... Używam samego EF jako repozytorium, ponieważ wydaje się, że EF6 w dużej mierze sprawiło, że repozytorium jest teraz zbędne. Na tym etapie projektowania obiekt domeny Organization jest anemiczny: wygląda jak klasa organizacji EF POCO. Klasa OrganizationService wygląda bardzo podobnie do repozytorium! Teraz muszę zacząć dodawać logikę. Ta logika obejmuje zarządzanie licencjami organizacji i członkami. Teraz w dniach skryptów transakcyjnych dodawałbym metody do OrganizationService do obsługi tych operacji i wywoływałby Repozytorium w celu interakcji z bazą danych, ale z DDD uważam, że ta logika powinna być zamknięta w samym obiekcie domeny Organization... To jest miejsce, w którym Nie jestem pewien, co powinienem robić: będę musiał utrwalić te dane z powrotem w bazie danych jako część logiki. Czy to oznacza, że w tym celu powinienem użyć DbContext w obiekcie domeny Organization? Czy korzystanie z repozytorium/EF w obiekcie domeny jest złą praktyką? Jeśli tak, to gdzie jest ta wytrwałość? public class Organizacja { public IList<Członek> Członkowie { get; ustawić; } public IList<Licencja> Licencje { get; ustawić; } public void AddLicensesToOrganisation(IList<License> licensesToAdd) { // Sprawdź poprawność/inne rzeczy/ // A teraz Zapisz do bazy danych??? using(var context = new EFContext()) { context.Licenses.Add(... } // Dodaj do kolekcji Licenses w pamięci Licenses.AddRange(licensesToAdd); } } Czy zamiast tego powinienem mutować obiekt domeny Organization w pamięć, a następnie wypchnięcie go z powrotem do OrganisationService w celu utrwalenia?Następnie muszę śledzić, co faktycznie zmieniło się w obiekcie (co EF robi z własnymi POCO! Mam wrażenie, że EF nie jest tylko zamiennikiem repozytorium , ale również może być warstwą domeny!) Wszelkie wskazówki tutaj są mile widziane.


title: Dokumentacja w OOP powinna unikać określania, czy "getter" wykonuje jakiekolwiek obliczenia?

text: Program CS mojej szkoły unika jakiejkolwiek wzmianki o programowaniu obiektowym, więc poczytałem na własną rękę, aby go uzupełnić - konkretnie, _Object Oriented Software Construction_ Bertranda Meyera. Meyer wielokrotnie podkreśla, że klasy powinny ukrywać jak najwięcej informacji o ich implementacji, co ma sens. W szczególności wielokrotnie przekonuje, że atrybuty (tj. statyczne, nieobliczone właściwości klas) i procedury (właściwości klas, które odpowiadają wywołaniom funkcji/procedury) powinny być nie do odróżnienia od siebie. Na przykład, jeśli klasa „Osoba” ma atrybut „wiek”, twierdzi on, że nie powinno być możliwe stwierdzenie, na podstawie notacji, czy „Osoba.wiek” odpowiada wewnętrznie na przykład „zwróć bieżący_rok – własna.data_urodzenia” lub po prostu `zwróć self.age`, gdzie `self.age` zostało zdefiniowane jako stały atrybut. To ma dla mnie sens. Twierdzi jednak, że: > Standardowa dokumentacja klienta dla klasy, znana jako krótka forma > klasy, zostanie opracowana tak, aby nie ujawniać, czy dana cecha jest > atrybutem, czy funkcją (w przypadkach, dla których mogłoby to być albo). tzn. twierdzi, że nawet **dokumentacja** dla klasy powinna unikać określania, czy „pobieracz” wykonuje jakiekolwiek obliczenia. Tego nie śledzę. Czy dokumentacja nie jest jedynym miejscem, w którym ważne byłoby poinformowanie użytkowników o tym rozróżnieniu? Gdybym miał zaprojektować bazę danych wypełnioną obiektami `Person`, czy nie byłoby ważne, aby wiedzieć, czy `Person.age` jest kosztownym wywołaniem, abym mógł zdecydować, czy zaimplementować dla niej jakiś rodzaj pamięci podręcznej ? Czy źle zrozumiałem, co mówi, czy jest to po prostu szczególnie ekstremalny przykład filozofii projektowania OOP?


title: Jak modelować dowolną liczbę typów

text: Obecnie jestem w trakcie modelowania generycznej formy transkrypcji RNA i RNA i mam trudności ze znalezieniem prawidłowego modelowania OO tego obszaru. Ludzkie RNA zawiera 4 typy **Nukleotydów** (A, G, U i C). Nić RNA to tylko ciąg tych 4 typów. np. AAGACAUUCUA... To, co próbuję modelować, jest bardziej ogólne w tym sensie, że chcę mieć możliwość decydowania o liczbie typów ** Nukleotydów ** w czasie wykonywania. Tak więc mój model obiektowy musi być w stanie reprezentować dowolną liczbę typów **Nukleotydów**. Początkowo myślałem, że będę miał po prostu klasę **Nucleotide**, która ma członka **int TypeId**. W ten sposób mógłbym mieć sekwencję wystąpień **Nukleotydów** dowolnych typów... ale to nie wydaje się właściwe. Nie jestem wielkim fanem przechowywania typu w zmiennej. Nie jestem również zadowolony z tego, co jest zasadniczo _definicją_ informacji ustawianą w każdym wystąpieniu (zamiast definiowania w klasie). Więc jak mam to obejść? Oto, co do tej pory wymyśliłem: * W poprzednim projekcie mielibyśmy obiekty Singleton, które reprezentowały typ innego obiektu. Drugi obiekt po prostu odwołuje się do singletona i to wszystko. Uniemożliwiło nam to posiadanie wielu przykładów „definicji” naszych typów. Niezbyt wielka IMO. * Pamiętam, że Entity Framework generuje dynamiczne proxy w czasie wykonywania. Mógłbym więc coś podobnego. Mogę mieć klasę bazową **NucleotideBase** i, w czasie wykonywania, zdefiniować klasy pochodne. Wierzę, że jest to możliwe dzięki refleksji. Nie jestem pewien, jaki wpływ na wydajność ma to podejście, ale zakładam, że to tylko jednorazowy narzut podczas definiowania klas. Czy są lepsze, więcej OO podejść?


title: Czy kompilacja do JavaScript jest uważana za złą praktykę w zależności od preferencji językowych?

text: Rozumiem, że kompilacja do Javascriptu jest czasami konieczna, a nawet w niektórych przypadkach skutkuje szybszą aplikacją. Zastanawiam się jednak, czy kompilacja do JavaScript do tworzenia aplikacji internetowych z języka takiego jak ruby jest uważana za złą praktykę. Specjalnie w celu preferencji językowych i wykonywania typowych funkcji front-endowych.


title: Interfejs użytkownika wymaga danych określonego typu. Czy może jechać w SPROC?

text: Właściwie to spieram się z tym, ale chcę zobaczyć, czy jestem poza linią. Mamy tabelę PaymentQueue i prosty interfejs użytkownika. Ta tabela jest obecnie używana głównie przez interfejs użytkownika, a nie inną logikę biznesową. Interfejs użytkownika wymaga danych, które znajdują się tylko w podzbiorze możliwych statusów. Jeden programista umieścił to ograniczenie statusu w samym SPROC. Przekonuję, aby umieścić go w warstwie interfejsu użytkownika witryny, ponieważ jest on zależny od widoku. Zaletą jego podejścia jest to, że zwraca mniej danych przez sieć, ale zakłóca inne procesy, które mogą w przyszłości korzystać z tego SP, ponieważ teraz zawsze ogranicza się do pewnych typów. Zaletą mojego podejścia jest zachowanie logiki widoku poza bazą danych, ale pobieranie większej ilości danych w sieci (planuję zawęzić zakres dat, aby to zminimalizować). Pomyślałem, aby wprowadzić flagę w SPROC, która, jeśli zostanie włączona, będzie filtrować według tych typów, dzięki czemu SPROC będzie bardziej elastyczny w obu przypadkach. Jakie jest najlepsze podejście? Dziękuję.


title: Przystępna książka o programowaniu funkcjonalnym

text: Szukam książki, która w przystępny sposób wyjaśnia programowanie funkcjonalne. Wolałbym też taki, który nie jest zbyt nudny i nie używa ezoterycznego języka. Idealnie będzie używać przykładów, które pokazują sytuacje, w których programowanie funkcjonalne prowadzi do bardziej eleganckich lub prostszych rozwiązań niż podejścia imperatywne. Mam spore doświadczenie w programowaniu, ale nie mam znajomości programowania funkcjonalnego. Dzięki za wszelkie sugestie


title: Jakie są najpopularniejsze algorytmy w dziedzinie geometrii obliczeniowej?

text: Do tej pory poruszyłem różne aspekty geometrii obliczeniowej, w tym konstruktywną geometrię planarną (przecięcia miejsc), algorytmy dla topologii grafów planarnych, 3D DDA, a ostatnio implementację 2D wypukłego kadłuba przy użyciu Grahama Scan i grupowania k-średnich reprezentowanych jako diagramy Voronoi . To fascynująca dziedzina. Chcę wiedzieć więcej. Chciałabym wiedzieć, które algorytmy są w tej dziedzinie najpowszechniejsze i co robią.


title: Co robi to oprogramowanie, gdy mówi „trasowanie z białą etykietą”?

text: Czytam o firmie rozpoczynającej działalność, która pracuje z ankietami online: > Fulcrum to pierwszy na świecie kompletny pakiet do zarządzania projektami, który daje klientom możliwość bezproblemowej > integracji wielu dostawców, zwiększenia > produktywności i obniżenia kosztów. Począwszy od pionowo zintegrowanych firm badawczych po przykładowych dostawców, klienci, którzy licencjonują Fulcrum, cieszą się zwiększoną > wydajnością i minimalnymi kosztami rozwoju technologii. Ta uproszczona > platforma do zarządzania ankietami oferuje routing z białą etykietą i ulepszone > doświadczenie respondentów, a jednocześnie zapewnia klientom wyjątkową kontrolę i > jakość próbki. Jestem trochę zdezorientowany tym, co się dzieje. Co to jest „trasowanie z białą etykietą”? OK, dowiedziałem się, że firma „panelowa” to firma geodezyjna.


title: Wady i zastrzeżenia Ruby on Rails

text: To nie jest gambit otwierający atak RoR - szczerze! Uczę się Ruby i ramy Rails. Prima facie wydaje się być całkiem fajnym i wspaniałym doświadczeniem w porównaniu do PHP. (W rzeczywistości przypomina mi to szczęśliwsze dni z C# i .NET.) Jednak wchodząc w to, nie mam doświadczenia z tym frameworkiem ani językiem i jestem ciekaw - jakie są obecne wady lub rzeczy, które chciałbyś wiedziałeś, kiedy zaczynałeś? (Może powinno to być społecznościowe wiki?)


title: Gadżety C# przeciążające formularz (nie widać lasu dla drzew)

text: Mam za zadanie przejąć program w C#, który jest bardzo źle napisany, jednak jestem nowy w C#. Formularz zawiera wiele obiektów, w tym etykiety, przyciski, panele itp., które nakładają się na siebie. Formularz jest przeciążony tymi obiektami podczas wyświetlania w programie Visual Studio podczas pisania kodu. Mam co najmniej 5 zachodzących na siebie paneli, nie wspominając o reszcie obiektów. Oczywiście, gdy program działa, niektóre są niewidoczne, gdy nie są w odpowiednim trybie. Jak możemy oddzielić te panele i inne obiekty w fazie projektowania (powiedzmy na formularzu podrzędnym), aby można je było oglądać tylko wtedy, gdy są potrzebne?


title: Idealny system zarządzania dokumentami

text: Jak myślisz, jakie byłyby cechy Twojego idealnego DMS? Mam na myśli listę wszystkich funkcji, które przychodzą ci do głowy, które mogą być oferowane w ramach systemu zarządzania dokumentami.