Więc chciałem odziedziczyć po `klasie zapieczętowanej` w _csharp_ i spaliłem się. Po prostu nie ma sposobu, aby go odpieczętować, chyba że masz dostęp do źródła. Potem pomyślałem "dlaczego `zapieczętowany` w ogóle istnieje?". 4 miesiące temu. Nie mogłem tego rozgryźć, pomimo przeczytania wielu rzeczy na ten temat, takich jak: * Życzenia Jona Skeeta „klasy były domyślnie zapieczętowane w .NET”. * Wolisz kompozycję od dziedziczenia? * "Nie powinieneś zapieczętować wszystkich klas (...)" * Jak kpisz z zapieczętowanej klasy? Od tamtej pory staram się to wszystko przetrawić, ale to dla mnie po prostu za dużo. W końcu wczoraj spróbowałem ponownie. Znowu przeskanowałem je wszystkie, plus kilka innych: * Dlaczego klasa miałaby być czymś innym niż „abstrakcyjna” lub „końcowa/zapieczętowana”? * W ciągu ponad 15 lat programowania, pierwszy raz usłyszałem o SOLID, z odpowiedzi na pytanie już połączone i oczywiście nie przeczytałem tego wszystkiego 4 miesiące temu W końcu, po wielu rozważaniach, zdecydowałem się _mocno_ edytować oryginalne pytanie oparte na nowym tytule. **Stare pytanie** było zbyt szerokie i subiektywne. Po prostu pytał: 1. W starym tytule: Jeden dobry powód, aby użyć seal 2. W ciele: Jak poprawnie zmodyfikować klasę seal? Zapomnij o dziedziczeniu? Użyć kompozycji? Ale teraz, _zrozumienie_ (czego nie zrobiłem wczoraj), że **wszystko, co robi `zapieczętowany`, zapobiega dziedziczeniu** i że możemy i powinniśmy używać kompozycji zamiast dziedziczenia, zdałem sobie sprawę, że potrzebowałem _praktycznych_ przykładów. Myślę, że moje pytanie tutaj jest (i faktycznie zawsze było) dokładnie tym, co Pan Mindor zasugerował mi na czacie: _W jaki sposób projektowanie pod kątem dziedziczenia może powodować dodatkowe koszty?_


title: Podmiot do wykorzystania DTO

text: Próbowałem wymyślić przepływ dla podstawowej, warstwowej aplikacji internetowej i czytałem sprzeczne informacje online. To, co próbuję ustalić, to to, czy nadal można używać obiektów DTO z warstwy DAO do usługi dzięki użyciu jakiegoś mapera. Przewidywany przeze mnie podstawowy przepływ jest następujący: 1. Model / formularz interfejsu użytkownika --> Kontroler 2. Kontroler konwertuje model na obiekt domeny (jednostka) 3. Obiekt domeny --> warstwa usług 4. Obiekt domeny --> DAO 5. DAO --> Obiekt(y) domeny 6. Usługa --> UI 7. UI konwertuje domenę na modele UI Gdyby przestrzegano DTO, DAO przekaże DTO, a nie Entity. Po przeczytaniu wydaje się, że DTO nieco przestało funkcjonować, ponieważ (przynajmniej w Javie) jednostki stały się POJO z adnotacjami, co oznacza, że ich ślad pamięci stał się bardzo mały. Czy tak jest, czy też DTO powinny być używane do całkowitego enkapsulacji obiektów domeny w warstwie DAO, a jeśli tak, to co warstwa usług przekaże do DAO? Wielkie dzięki!


title: Czy ankieter powinien być przygotowany na udzielenie odpowiedzi na każde pytanie, które zada?

text: W miarę jak zdobywam więcej doświadczenia zawodowego, stałem się nieco bardziej sceptyczny co do wielu polityk związanych z procesem rozmowy kwalifikacyjnej. W szczególności jestem ciekaw, czy wszyscy uważacie, że można zadać ankieterowi te same pytania, które zadano. Na przykład w wywiadzie kilka lat temu zapytano mnie: > Gdzie widzisz siebie za 5 lat? Udzieliłem przyzwoitej odpowiedzi, a następnie zapytałem ankietera: > Gdzie widzisz siebie za 5 lat? Właściwie udzielił dość przemyślanej odpowiedzi. A co z pytaniami typu: * Dlaczego lubisz tu pracować? * Opowiedz mi o tym, jak miałeś konflikt ze współpracownikiem i jak go rozwiązałeś. * Odpowiedz na to pytanie. EDYCJA: Miałem na myśli: * Odpowiedz na to pytanie [tu wstaw pytanie techniczne.


title: Używanie flagi w in-memory-repository do wskazania aktualizacji encji

text: Mam zamiar napisać dużo testów dla mojej aplikacji. Podczas gdy niektóre testy sprawdzają, czy wszystko działa, jeśli użytkownik wprowadzi prawidłowe dane, większość z nich dotyczy błędnych/brakujących danych. W takich przypadkach nic nie powinno być aktualizowane i należy zgłosić wyjątek. W tej chwili prowadzi to do wielu zduplikowanych kodów, ponieważ każdy test musi mieć pewność, że nie tylko zostanie zgłoszony wyjątek, ale także żadne dane w mojej (~~mocked~~ in-memory) bazie danych nie zostaną zmienione. Moim pierwszym pomysłem było przeniesienie tych testów do funkcji i wywoływanie tej funkcji w każdym teście. Pro: Nadal mogę używać bardzo wyraźnych testów. Przeciw: Muszę pamiętać o zmianie funkcji i dodaniu kolejnych testów za każdym razem, gdy dodaję więcej funkcjonalności do zaznaczonej funkcji. Ale równie dobrze mógłbym dodać właściwość do mojego ~~mocked~~ in-memory-repository, która wskazuje, czy encja została zaktualizowana. Pro: Nigdy nie będę musiał się martwić o zapomniany czek. Contra: Sprawdzenie jest dość niejasne - kiedy się nie powiedzie, będę wiedział tylko, że _coś_ zostało zmienione. Aby znaleźć błąd, będę musiał krok po kroku debugować funkcję. Jakie jest lepsze podejście? Może istnieje jeszcze lepsze trzecie rozwiązanie?


title: Pomóż w przygotowaniu umowy Open Source Friendly, ale nie zezwalaj na to, aby praca w pracy dziennej była Open Sourced

text: Więc po prostu zostałem zatrudniony w miejscu, które miało tylko jednego programistę i był on współwłaścicielem. Ich podręcznik dla pracowników miał coś w rodzaju następującego efektu. > Wszelkie prawa własności intelektualnej, wynalazki lub oprogramowanie, które rozwijasz w firmie X, są > własnością firmy. Dodatkowo będziesz musiał dostarczyć listę wszystkich > wcześniejszych wynalazków, oprogramowania lub własności intelektualnej opracowanych przed podjęciem pracy w firmie x. Jest to dla mnie problem, ponieważ mam oba projekty poboczne i od czasu do czasu przyczyniam się do rzeczy open source i chciałbym nadal mieć możliwość robienia obu. Rozmawiałem o tym z właścicielem, a on zgodził się na wprowadzenie zmian i poprosił mnie o zarys sprawiedliwy dla obu stron. Zabierał to do prawnika, a oni przejrzeli to i zastosowali. Tak więc szukam jakiegoś sformułowania, które mógłbym przedstawić w tym celu, aby pomóc mi połączyć to w taki sposób, aby ja i inni twórcy oprogramowania byli chronieni, a także firma x i jej oprogramowanie. To lub zasób lub wskazówka dla tego rodzaju rzeczy. Aby wyjaśnić, oprogramowanie firmy nie może być otwarte, ale pracownicy będą mogli pracować nad pobocznymi projektami zarówno o charakterze open source, jak i prywatnym, o ile nie będą konkurować z najlepszym interesem firmy. Jeśli to pomaga, jesteśmy w USA.


title: Jak wytłumaczyć złe oprogramowanie osobom nietechnicznym?

text: W rozmowach na temat rozwoju oprogramowania z osobami nietechnicznymi (klientami, właścicielami firm, sponsorami projektów itp.) często uciekam się do analogii i metafor. Stosunkowo łatwe i skuteczne jest użycie „domu” lub innej metafory do opisania rozmiaru i złożoności nowego projektu. Jednak często dziedziczymy czyjś kod lub dane, a to podejście wydaje się nie wytrzymywać, gdy próbujemy wyjaśnić, dlaczego patroszymy coś, co już wydaje się działać. Oczywiście możemy wskazać na czas cyklu i koszty, które należy zaoszczędzić w przyszłości, ale generalnie to nic nie znaczy dla ludzi biznesu. Wiem, że lekarze mogą powiedzieć „po prostu weź tę pigułkę”, ale nie jestem pewien, czy twórcy oprogramowania mają takie same uprawnienia. Pomysły? EDIT: Pozwolę sobie dodać trochę do dyskusji. Konkretny projekt, o którym mówię, ma klientów, którzy nie zdają sobie sprawy (lub nie przejmują się) konkretnymi aspektami systemu, który wycofujemy (tzn. uważają, że był w porządku): 1. System zapisywałby NOWY REKORD co czas, gdy ktoś zaktualizował pole 2. System zawierał tabele danych referencyjnych. Tabele te miały codziennie dodawane nowe rekordy, mimo że były duplikatami poprzednich rekordów. I nie było możliwości powiązania danych referencyjnych użytych dla konkretnego przypadku w momencie jego zamknięcia. To około 99% danych w starym systemie. 3. Pole NAMES zawiera również spacje, apostrofy i inne nieodpowiednie znaki, co utrudnia pracę. 4. Oprócz niewiarygodnej ilości zduplikowanych danych, mają około 1000 plików XLS z danymi, które chcą dodać do systemu. Wcześniej robili arkusz kalkulacyjny dla każdego przypadku w bazie danych, OPRÓCZ tego, co wpisali w bazie danych. Pozbycie się tych starych, niepotrzebnych informacji i potoków w danych XLS stanowi około 80% całkowitego wysiłku projektu i nie było czymś, co moglibyśmy dokładnie przewidzieć. Staram się znaleźć konkretny sposób na opisanie, jak źle było, głównie po to, aby klient zrozumiał, dlaczego proces migracji był tak czasochłonny. Właściwe kodowanie zostało wykonane dość szybko i nowy system działa dobrze, ale bez starych danych nie będą zadowoleni. Przepraszam, że zagłębiam się w chwasty, ale większość odpowiedzi, które do tej pory widziałem, to dość podstawowe kwestie dotyczące zakresu/harmonogramu/kosztów. Zajmuję się tym od 15 lat, więc jest to bardziej refleksyjna, filozoficzna kwestia – ale bez niektórych szczegółów może być trudno naprawdę docenić okropne piękno tego problemu.


title: Czy użycie DI/IoC powinno usunąć wszystkie wystąpienia słowa kluczowego „new”?

text: Czy użycie Dependency Injection i kontenera Inversion of Control powinno usunąć **wszystkie** wystąpienia słowa kluczowego „`new`” z kodu? Innymi słowy, czy każdy obiekt/zależność, bez względu na to, jak proste lub krótkotrwałe, powinien być „zarejestrowany” w twoim kontenerze IoC i wstrzyknięty do metody/klasy, która musi ich używać? Jeśli nie, gdzie narysujesz granicę między zależnościami/obiektami, które zostaną zarejestrowane w kontenerze IoC, a tym, co zostanie utworzone „w linii” jako konkretne odniesienie, za pomocą słowa kluczowego `new` ?


title: Zaciemnianie całej strony internetowej

text: Chcę zaciemnić wszystkie strony mojej witryny. Przeszukałem kilka bezpłatnych narzędzi, takich jak zaciemnianie HTML i Javascript, ale nie wiem, jak skuteczne są. Po pierwsze, czy ma sens zaciemnianie strony internetowej, która może zawierać różne kody, takie jak JavaScript, PHP itp. Po drugie, jak skuteczna jest ta metoda i polecam kilka darmowych, fajnych narzędzi.


title: O skuteczności testów jednostkowych

text: **EDYTUJ:** Myślę, że nikt tak naprawdę nie zrozumiał pytania. Myślę, że to też częściowo moja wina, więc mam nadzieję, że teraz będzie lepiej. Chodzi o to, że doskonale zdaję sobie sprawę z istnienia ramek prześmiewczych i tak dalej. To nie jest problem. Problem polega na tym, co się dzieje, gdy zmieniasz implementację swojej metody i po prostu nie wywołuje ona już makiety i zaczynasz widzieć pęk czerwonych świateł na swoim stosie testowym, ponieważ mocki nie są wywoływane tak, jak powinny? Test jednostkowy lub integracyjny, coś należy tutaj zrobić, prawda? Po drugie, jeśli zacznę pisać różne metody próbne dla każdego warunku testowego, który lubię, co się stanie, jeśli zdecyduję się zmienić sygnaturę klasy, którą wyśmiewałem? Wszystkie moje testy trafiają do kosza na śmieci, prawda? Czy to normalne, czy można tego uniknąć? Czy to problem projektowy? Mam nadzieję, że nie mylę was bardziej, chłopaki. Jak skuteczne są testy jednostkowe w rzeczywistości? Mam wrażenie, że w pewnym momencie testy jednostkowe zamieniają się w testy sprawdzające zależność między testowanym obiektem a innym obiektem. Jasne, zawsze można abstrahować zależności za pomocą interfejsów, ale co się dzieje, gdy nawet interfejsy powinny zostać zmienione? Co się stanie, jeśli testowana jednostka nie będzie już polegać na tych zależnościach? Jeśli nasze testy zakończą się niepowodzeniem z powodu problemów z zależnościami, czy oznacza to, że są zbyt powiązane z naszym kodem? Poza tym, czy musimy je zmieniać za każdym razem, gdy zmieniamy zależności? Jeśli zdarza się to dość często, czy to znak, że nasz projekt jest błędny? Miałem tendencję do przekonania, że testy jednostkowe są skutecznym sposobem testowania zapewnienia odporności, ale jeśli są zbyt powiązane z zależnościami, które nasze obiekty mają z innymi obiektami (wyrażonymi jako interfejsy), po prostu prowadzi to do większej straty czasu na ich naprawienie testy, aby przejść nowy projekt. Czy się mylę? UWAGA: Ktoś wspomniał, że kiedy testujemy zależności między dwoma obiektami, nie jest to już uważane za testowanie jednostkowe, ale raczej za testowanie integracyjne. Już nie wiem w co mam wierzyć


title: Tworzenie dużej ilości typów VS przy użyciu głównie tych dostarczonych przez język

text: Kilka razy kodujesz metodę, która ma dwa parametry tego samego typu, powiedzmy, liczby całkowite, `NumberOfUnitA` i `NumberOfUnitB`. Biorąc pod uwagę, że kodujemy w języku, który nie obsługuje parametrów nazwanych, dlaczego nie widzimy ludzi tworzących typy bliższe logice domeny, w tym przypadku `UnitA` i `UnitB`, ale tylko surowe liczby całkowite ? Wydaje mi się o wiele bardziej wyrazisty. A nawet w innych sytuacjach, wiele razy, musimy przekazać kilka flag i są to tylko liczby całkowite (nawet w przypadkach, gdy wydajność nie jest problemem), dlaczego to robimy? Czy stwarza niepotrzebne komplikacje? Jakie są problemy tego podejścia do tworzenia wielu typów?


title: Jakiego procesu zwykle używasz podczas próby debugowania problemu/problemu/błędu w swoim oprogramowaniu?

text: Większość ludzi traktuje debugowanie jako sztukę, a nie naukę. Dla tych, którzy traktują to jako naukę, a nie sztukę - jakiego procesu (procesów) zwykle używasz w obliczu nowego problemu/błędu/problemu?


title: śledzenie czasu dla osobistych projektów

text: Czy wszyscy śledzą czas spędzony na osobistych projektach? Uważam, że warto wiedzieć, ile czasu (i potencjalnych pieniędzy) poświęcono na hobby. Obecnie używam zbiorów do śledzenia czasu.


title: Kiedy Singleton jest odpowiedni?

text: Niektórzy utrzymują, że Wzorzec Singleton jest zawsze anty-wzorcem. Co myślisz?


title: Singleton: Czy Singleton jest anty-wzorcem?

text: Czytałam ciekawy wpis na blogu na temat wzorca projektowego Singleton, który jest tak szeroko stosowany. Jeśli jest to głupie lub jak w niektórych postach quora, to jest antywzorcem, dlaczego jest tak szeroko stosowany nawet we frameworkach. Np. Spring framework (java) udostępnia wszystkie klasy poprzez wstrzykiwanie zależności jako klasy Singleton, a dodanie prototypu jest opcjonalne.


title: Kiedy używać Singletona, a kiedy klasy statycznej

text: Szukałem o tym tutaj i na StackOverflow i znalazłem pewne różnice między nimi. Ale nadal nie jestem pewien _w jakich przypadkach wolałbyś Singletona, aw jakich wybrałby użycie klasy statycznej_. (W językach, które nie obsługują 'klas statycznych', takich jak Java, oczywiście mam na myśli klasy zawierające tylko statyczne metody i pola). Proszę podać konkretne przykłady przypadków, w których wybralibyście każdy z nich i wyjaśnić dlaczego.


title: Singletony w C++, czy są naprawdę potrzebne, używane?

text: > **Możliwy duplikat:** > Kiedy Singleton jest odpowiedni? Ok, większość ludzi prawdopodobnie wie, czym jest singleton, używa ich i zna wszystkie wady, w tym warunki wyścigu i tak dalej. Ale nigdy tak naprawdę nie doszedłem do wniosku, dlaczego ludzie nadal ich używają i dlaczego są tak popularne, podczas gdy implementacja jest zwykle podatna na błędy lub skomplikowana. Konstruktory podwójnie zablokowane i tak dalej. Bo wydaje się, że nawet w dużych projektach nie jest tak często, gdy masz obiekt, który należy stworzyć tylko raz, a jeśli jest, to wydają się być łatwiejsze sposoby na jego realizację. Czy ktoś rzeczywiście zdarzył się sytuacji, w której singleton cruft ułatwił mu życie przez resztę projektu?


title: Czy istnieje przypadek, w którym nie ma sensownego zamiennika dla wzorca projektowego singleton?

text: > **Możliwy duplikat:** > Kiedy Singleton jest odpowiedni? Widziałem wiele wyjaśnień, dlaczego Singleton jest zły. Ale czy naprawdę nie ma takiego przypadku, gdy Singleton jest jedynym pięknym rozwiązaniem?


title: Czy mogę ponownie zająć moją starą nazwę użytkownika GitHub w celu ochrony przekierowań repozytorium?

text: Rozważam zmianę mojej nazwy użytkownika GitHub ze starego aliasu, którego używałem jako dziecko, na moje prawdziwe imię. Martwię się o adresy URL moich repozytoriów. GitHub przekieruje stare adresy URL, ale jeśli ktoś utworzy nowe konto przy użyciu mojej starej nazwy użytkownika i utworzy repozytorium o tej samej nazwie, co jedno z moich repozytoriów, przekierowanie adresu URL zostanie przerwane, a adres URL będzie prowadzić do ich repozytorium, a nie do mojego. Teraz jest to zrozumiałe, a GitHub zaleca, aby w dłuższej perspektywie nie liczyć na przekierowania i aktualizować wszystkie piloty, ale martwię się o niektóre wtyczki Vima, które hostuję na GitHubie. Powszechną praktyką jest zarządzanie wtyczkami Vima za pomocą Git(jako oddzielnych repozytoriów lub jako podmodułów), a jeśli jeden z pilotów wtyczek zepsuje siędostanieszkomunikat o błędzie podczas próby zbiorczej aktualizacji wszystkich wtyczek (tak mi się przytrafiło raz...). Nie jest to **tak** trudne do rozwiązania, a szanse, że tak się stanie, są niewielkie, ale nadal chciałbym uniknąć problemów użytkownikom moich wtyczek... Aby temu zapobiec, myślę o utworzeniu nowego konta z moją starą nazwą użytkownika. W ten sposób mogę uniknąć ryzyka, że ktoś inny zabierze moją starą nazwę użytkownika i złamie przekierowania moich starych repozytoriów. Podczas badania tego podejścia natknąłem się na Politykę Przysiadania Nazw na GitHubie. Zgodnie z tą polityką GitHub może usuwać lub zmieniać nazwy nieaktywnych kont. W moim rozumieniu robią to, aby zapobiec Cybersquattingowi, ale z pewnością tak nie jest w przypadku mojego fałszywego konta - nie posiadam czyjegoś imienia i nazwiska, aby mu je sprzedać, po prostu zajmuję nazwisko ** Używałem** do ochrony **moich** starych adresów URL... Czy w takim przypadku dopuszczalne jest utworzenie fałszywego konta z moją starą nazwą użytkownika w ramach tego planu?


title: Czy powinienem pomagać w projektach związanych z anonimowością?

text: Projekty zwiększające anonimowość w sieci, takie jak Tor i bitcoin, pozwalają uwolnić się od rządowych ucisków, ale także pozwalają na bezkarność przestępstw. Czy jako deweloper powinienem współtworzyć takie projekty? Czy istnieje sposób na wymuszenie, aby te technologie nie były wykorzystywane do prania pieniędzy i pornografii dziecięcej?


title: Czy AOP jest szeroko stosowany w sektorze przedsiębiorstw?

text: Interesują mnie tutaj opinie osób pracujących w dużych organizacjach korporacyjnych, czy AOP jest szeroko (lub nawet skromnie) stosowany podczas ich rozwoju? Czy AOP jest czymś nieodłącznym od projektu. Ponieważ ze wszystkiego, co udało mi się znaleźć w Internecie (m.in. czytając książkę AspectJ in Action, wyd. 2), odniosłem wrażenie, że AOP jest czymś, co jest bardziej „niszową” technologią. Moim głównym celem jest to, czy jest sens inwestowania wysiłku i czasu w naukę na akceptowalnym poziomie – np. mechanizm łączenia punktów, porady itp. Ponadto, czy projektujesz z myślą o AOP, czy wykorzystujesz go do poprawiania niedociągnięć w istniejącym projekcie?


title: Firma chce, abyśmy korzystali z escrow lub zapewniali SLA

text: Mamy biznes SaaS (hostujemy wszystko), w którym ludzie korzystający z naszego oprogramowania płacą za różne usługi oferowane przez kilku „dostawców”. Zbieramy te pieniądze i co tydzień wpłacamy saldo na konto sprzedawcy. Nasz krój to mały kawałek z każdej z tych opłat serwisowych; więc jeśli nikt niczego nie kupuje, sprzedawca nic nie płaci. Ten model działał dobrze, ale obecnie prowadzimy rozmowy z większym sprzedawcą (rządem), który poprosił o depozyt dla naszych usług. Poprosili, aby wyzwalacz (uwolnienie kodu) to bankructwo, brak świadczenia usługi na rozsądnym poziomie (nie pamiętam faktycznie użytego terminu) lub przejęcie przez stronę trzecią. Powiedzieliśmy im, że nie mamy problemu z upadkiem, ale nie możemy się zgodzić z częścią przejęcia, bo kto chciałby nas kupić, gdyby nasi klienci mieli możliwość uruchomienia naszego oprogramowania za darmo. Czy słusznie martwi nas ten scenariusz? Po tym, jak wspomnieliśmy, że wyzwalacz nie może być przejęty przez oddzielną firmę lub jeśli uważają, że nasze oprogramowanie nie spełnia jakiegoś standardu, odpowiedzieli, że w tym przypadku chcieliby jakiegoś rodzaju umowy SLA z „naprawdę wysokimi wymaganiami” zamiast akwizycja lub usługa wyzwalają – ale nadal mają depozyt na bankructwo. Czy umowa SLA nie oznacza jakiejś miesięcznej lub rocznej opłaty za usługę? Skonstruowaliśmy nasz model tak, że jeśli firma korzysta z naszego oprogramowania, nic nie płaci. Pomyśleliśmy, że będzie to lepsze niż miesięczny/roczny koszt stały. Czy jesteśmy nierozsądni? Myśli?


title: Czy słuszne jest zredukowanie OOP do zwykłej hierarchicznej kompozycji struktur danych?

text: To znaczy, że OOP pozwala mi mieć drzewa danych o dowolnej głębokości i szerokości, z niektórymi liśćmi będącymi funkcjami (a te liście byłyby nazywane metodami)? Ponieważ wszystko inne, co ludzie często umieszczają w pobliżu znaku "OOP", po prostu nie ma z tym nic wspólnego. (Dziedziczenie, polimorfizm podtypów i enkapsulacja wydają się być prostopadłe do OOP). Czy mam rację? Czy coś mi brakuje?


title: Czy istnieją najlepsze praktyki dotyczące sprawdzania błędów w logice biznesowej dla odświeżania bazy danych?

text: Pracuję dla firmy z bardzo dużymi bazami danych, które odświeżają się z dnia na dzień i są gotowe do przesłuchania przez użytkowników rano. Te obciążenia w nocy zasadniczo obcinają wszystkie tabele i ponownie ładują się przy użyciu dość skomplikowanej logiki biznesowej. Wszystko jest w porządku i dobrze, ale czasami, zamiast przechodzić przez właściwe trasy, potrzebna jest szybka poprawka w logice biznesowej, a zmiany logiki biznesowej zostaną wprowadzone na serwerze „na żywo” bez zbytniego testowania. To, jak jestem pewien, że możesz sobie wyobrazić, doprowadziło do popełnienia subtelnych, ale znaczących błędów. Zasadniczo chcę teraz samodzielnie napisać logikę (prawdopodobnie w T-SQL), która będzie próbowała wykryć wszelkie nienormalne zmiany, więc przynajmniej wyprzedzam grę i mogę zgłosić je wcześniej. Moje pytanie jest dość oczywiste, czy ktoś ma jakieś rady na ten temat? Czy jest jakaś teoria lub ogólna dobra praktyka, którą mógłbym zastosować, aby, miejmy nadzieję, ograniczyć wpływ przyszłych „szybkich i brudnych” zmian na logikę biznesową? Abyś wiedział, używamy kontroli źródeł i używamy środowisk serwerowych Live, UAT i Dev, po prostu czasami zmiany muszą być wprowadzane natychmiast, zamiast przechodzić przez bardziej rygorystyczne kanały.


title: Czy korzystanie z WCF lub WebAPI dla urządzeń przenośnych jest korzystne?

text: Zamierzam zrobić swój pierwszy program mobilny przy użyciu Mono Touch i Mono dla Androida. Chciałbym, aby komunikowały się z witryną ASP.NET MVC 4, którą projektuję. Pracowałem z WCF i WebAPI w przeszłości, ale zastanawiam się, czy istnieją jakieś ** wymierne ** zalety używania jednego nad drugim w tym kontekście?


title: Lista zastrzeżonych słów, których nazwa użytkownika nie może być?

text: > **Możliwe zduplikowanie:** > Czy istnieje lista wspólnych nazw użytkowników do zarezerwowania w nowym systemie? Pracuję nad witryną, w której użytkownicy będą mieli niestandardowy adres URL, np.: http://domena.com/nazwa_użytkownika Chcę uniknąć sytuacji, w której użytkownik rejestruje się i tworzy nazwę użytkownika, której później potrzebuję, np. jeśli chcę mieć stronę pod adresem domain.com/about i ktoś już nazwał się „about”. Czy ktoś ma listę ogólnych słów, które można dodać do czarnej listy w tym celu?


title: Algorytm sprawdzający, czy zestaw można odtworzyć

text: Trudno mi rozwiązać ten problem i miałem nadzieję, że ktoś może mi pomóc w rozwiązaniu lub przynajmniej dać mi wyszukiwane hasło do wykorzystania w przypadku problemów takich jak ten. Uogólniony problem: mam zbiór liczb (np. `[1,2,3]`) i tablicę zbiorów (np. `[1,4,5],[4,2,3],[6, 7,8], [2], [1,3]`). Co muszę zrobić, to dowiedzieć się, czy mogę stworzyć pierwszy zestaw z pozostałych, biorąc z nich 1 lub 0 elementów (np. biorąc 1 z pierwszego, 2 z drugiego i 3 z ostatniego). Kolejność elementów nie ma znaczenia w żadnym z zestawów.


title: Który jest lepszy? Zmień daty sprintu lub jeden członek zespołu nie uczestniczy w planach sprintu przez 4 miesiące

text: Mamy zwinny zespół i prawie biegnie 80. sprint. Nasz sprint zaczyna się w środę i kończy we wtorek 10 dni później. Jeden z członków naszego zespołu, programista, będzie uczęszczał na kurs uniwersytecki w każdą środę przez 4 miesiące. Który z nich jest lepszy, jeśli powinniśmy wziąć udział dni sprintu od wtorku do poniedziałku, całkowity dzień sprintu nie zmieni się jeszcze o 10 lub jeden członek nie będzie uczestniczył w planach sprintu, a zespół da za nią zobowiązanie.


title: Jak obliczyć zamortyzowany koszt dla tablicy dynamicznej?

text: Próbuję zrozumieć, jak wykonać zamortyzowany koszt dla dynamicznego stołu. Załóżmy, że używamy metody księgowej. Niech A o rozmiarze m będzie tablicą n elementów. Kiedy n = m, to tworzymy nową tablicę o rozmiarze 4m, a następnie kopiujemy elementy A do nowej tablicy. Kiedy n = m/4, tworzysz nową tablicę o rozmiarze m/4 i kopiujesz elementy do tej tablicy. Jestem zdezorientowany tym, jak obliczyć koszty. Z tego co do tej pory wiem: Przed pierwszym rozszerzeniem płacisz dwa dolary za wstawienie. `1$` dla wstawiania, a `1$` po prostu przechowujesz z elementem, aby móc później użyć tego do operacji kopiowania. Następnie, gdy ją rozwiniesz, użyjesz tego zapisanego `$`, aby przenieść element do nowej tablicy. Teraz w nowej tablicy elementy nie będą miały ze sobą żadnego `$`. Ale teraz, gdy wstawiasz nowy element, używasz `3$`. `1$` dla wstawienia, potem jeszcze jeden dla siebie (dla przyszłej kopii) i jeszcze jeden dla poprzedniego elementu, który właśnie został skopiowany. Problem polega na tym, co zrobić, jeśli masz taką tablicę: `1$ 2$` Następnie wstaw element `1$ 2 3$ _ _ _ _ _` Teraz jak obsłużyć operację usuwania?


title: Plusy i minusy następujących metod analizowania?

text: Myślę o zrobieniu konwertera/kompilacji Python-JavaScript. Zastanawiałem się nad zaletami i wadami poniższych metod parsowania kodu Pythona na odpowiednik JavaScript. 1. Praca z wyjściem `ast.dump(ast.parse(code))` 2. Praca z tokenami. Próbowałem zważyć zalety i wady tych metod, ale cóż, nie jestem w stanie wymyślić żadnej większej, ponieważ nigdy ich nie używałem. Tak więc, w zasadzie ktoś mógłby mi pomóc, mówiąc mi, jakie są zalety i wady dwóch metod, o których wspomniałem powyżej, są? Także, jeśli jest coś lepszego, co mógłbym wykorzystać do tego celu, powiadom mnie o tym. PS: Do napisania konwertera będę używał Pythona..


title: Jak połączyć aplikację na iPada z aplikacją działającą w systemie Windows?

text: Niedawno kupiłem Macbooka i chcę zacząć robić kilka aplikacji na mojego iPada. Mam klienta czatu napisanego w c#, który jest interfejsem gry, w którą gram. To, co chciałbym zrobić, to napisać aplikację na iPada, która komunikowałaby się w jakiś sposób z moją aplikacją c#. Jakie byłoby najlepsze podejście do tego? Nigdy nie używałem JSON, ale czy właśnie tam powinienem szukać? Nie chcę spędzać tony czasu na szukaniu w niewłaściwym miejscu, mając nadzieję, że ktoś tutaj wskaże mi właściwy kierunek.


title: Jakie ostatnie badania wskazują na możliwą poprawę, jaką programista może wprowadzić w wyniku osobistych cech charakteru?

text: W rozdziale 33, Personal Character of Code Complete (wyd. drugie) McConnell przytacza niektóre badania, takie jak te wymienione poniżej, na poparcie twierdzenia, że poprawa 10-1 jest możliwa dzięki wysiłkom zmierzającym do poprawy naszego programowania w wyniku osobistej determinacji do doskonalenia. * Sackman, Erikson i Grant 1968; * Curtis 1981; Młyny 1983; * DeMarco i Lister 1985; * Curtis i in. 1986; * Karta 1987; * Valett i McGarry 1989 Jak widać z powyższej listy, badania te są dość przestarzałe. Czy przeprowadzono nowsze badania, które badały potencjał poprawy skuteczności programowania? Jak wyniki mają się do badań McConnella? Co te badania ujawniły na temat postępu nowoczesnych metod i narzędzi w naszej zdolności do programowania?


title: Uniwersalne standardy wymiany danych – czy istnieją i czy ich przestrzegasz?

text: **Głównie fakt i może trochę opinii:** Jednym z moich ulubionych zwierzątek w programowaniu jest wymiana danych. Pracuję wyłącznie z oprogramowaniem dla małych firm (w przeciwieństwie do pracy z korporacyjnymi systemami ERP) i widzę, że wiele małych firm przechowuje kontakty dwa lub trzy razy w różnych typach oprogramowania, gdzie wymiana jest niewielka lub żadna. Systemy zegara czasu zwykle nie integrują się z systemami kalendarzy i zarządzania projektami. Zarządzanie zadaniami może odbywać się w systemie odrębnym od zarządzania projektami lub częściej zadania są zarządzane na papierze lub mentalnie. To tylko kilka przykładów problemów z wymianą danych, które spotykam na co dzień w prawie każdej małej firmie. Wydaje się, że każda firma programistyczna ma inny pomysł na to, jak przechowywać dane i czy udostępniać te dane do wymiany i integracji. Jeśli ujawniają niektóre ze swoich danych, tak naprawdę nie ma wspólnego standardu ułatwiającego wymianę lub synchronizację. Zawsze jesteś zmuszony przeczytać dokumentację SDK/API, jeśli chcesz zaprogramować jakiś rodzaj integracji, a wtedy prawie nigdy nie jest to bezbolesne doświadczenie, aby to działało i działało. Bardzo fajnie byłoby otrzymać „dokument elektroniczny” od naszych dostawców, który umożliwiłby nam szybkie wprowadzanie rachunków do naszego systemu księgowego. Byłoby naprawdę fajnie, gdybyśmy zatrudnili nowego pracownika, abyśmy mogli gdzieś dokonać jednego wpisu, wpisać jego role, a następnie wprowadzić go do wszystkich poprawnych systemów, nawet jeśli jego informacje musiałyby zostać oznaczone do przeglądu w systemach takich jak księgowość . Byłoby miło, gdyby wszystkie nasze kontakty były płynnie dzielone między systemami, tak aby aktualizacja adresu lub numeru telefonu w jednym z nich spowodowała zmiany we wszystkich. **Pytania:** 1. Czy istnieją już standardy wymiany danych dla wspólnych podmiotów, takich jak ludzie, zamówienia zakupu, zamówienia/faktury sprzedaży, dokumenty wysyłkowe, projekty, zadania, spotkania itp.? 2. Zakładając, że niektóre istnieją, czy są to powszechnie akceptowane, ratyfikowane normy? 3. Czy zaprogramował(a)by Pan(i) system biznesowy tak, aby używał lub przestrzegał tych standardów, gdyby początkowe wymagania projektu tego nie wymagały? Innymi słowy, jak powszechne lub akceptowane są te standardy, których należy przestrzegać za każdym razem?


title: Kto w żargonie open source jest „zaangażowanym”?

text: W żargonie open source „zatwierdzający” to ktoś, kto tworzy zatwierdzenie, które zostaje zaakceptowane do projektu, czy „zatwierdzający” jest strażnikiem, który decyduje, jakie zatwierdzenia/łatki są lub nie są akceptowane do „błogosławionego” repozytorium?


title: Czy mogę oglądać, jak SHA-256 robi swoją magię wizualnie?

text: Czy jest jakiś możliwy sposób na pobranie programu, wpisanie wiadomości i obserwowanie, jak program wyświetla wizualnie, jakie iteracje mają miejsce i jaką formułę przechodzi postać, aż do komunikatu wyjściowego operacji SHA-256 czy jest to po prostu zbyt geekowskie, by o to prosić?


title: Wiele witryn z tą samą bazą kodu w Pythonie

text: Staram się prowadzić dużą liczbę witryn, które dzielą około 90% swojego kodu. Są one po prostu zaprojektowane do wysyłania zapytań do interfejsu API i zwracania wyników. Będą mieć wspólną bazę użytkowników / bazę danych, ale będą nieco inaczej skonfigurowane i będą miały inny CSS (być może nawet inny szablon). Moim początkowym pomysłem było uruchamianie ich jako oddzielnych aplikacji ze wspólną biblioteką, ale czytałem o frameworku witryn, który pozwalałby im uruchamiać się z jednej instancji Django, co może pomóc w zmniejszeniu zużycia pamięci. https://docs.djangoproject.com/en/dev/ref/contrib/sites/ **Czy framework witryny jest właściwym podejściem do takiego problemu i czy ma realne korzyści w porównaniu z uruchamianiem oddzielnych aplikacji?** * * * Początkowo myślałem, że tak, ale teraz myślę inaczej. Słyszałem, co następuje: > Twój SITE_ID jest ustawiony w settings.py, więc aby mieć wiele witryn, potrzebujesz > wielu konfiguracji settings.py, co oznacza wiele różnych > procesów/instancji. Możesz oczywiście podzielić się między sobą bazą kodu, ale > każda witryna będzie potrzebowała dedykowanego pracownika / demona WSGID do obsługi witryny. Skutecznie usuwa to wszelkie korzyści płynące z uruchamiania wielu witryn pod jednym kapturem, jeśli każda witryna wymaga uruchomionej instancji UWSGI. Alternatywne pomysły systemów: * https://github.com/iivvoo/django_layers * https://github.com/shestera/django-multisite Nie wiem jaką drogę z tym obrać.


title: Licencjonowanie kodu, który znajdę na forach lub w SO?

text: Powiedzmy, że przeglądam internet i natrafiam na odpowiedź/forum/blog SO z kodem, który doskonale rozwiązuje mój problem. Jedynym problemem jest to, że nie określili żadnego rodzaju licencji dla swojego kodu. Czy ten kod można wykorzystać w moim projekcie, czy złamałbym prawa autorskie? Czego wymagałoby ode mnie włączenie go do projektu o zamkniętym kodzie źródłowym? Projekt open source? Jakie licencje byłyby z nim zgodne lub niezgodne? (np. Czy mogę wziąć ich kod i wydać go z kodem GPL?)


title: Nie rozumiesz opcji kariery w tworzeniu stron internetowych

text: Obecnie jestem na ostatnim roku studiów na kierunku informatyka. Uwielbiam programować w PHP, ale nie pod presją. Ponieważ moje życie po ukończeniu studiów dobiega końca, muszę ukształtować swoją karierę. Moim osobistym pragnieniem jest zostać web developerem i po ukończeniu kursów założyć własną firmę internetową. Nie mam ochoty pracować w firmie jako programista. Obecnie posiadam znajomość programowania PHP, Mysql i Javascript. Chociaż nie ukończyłem żadnego projektu w PHP. Więc, aby zostać kompletnym programistą internetowym, co jeszcze muszę wiedzieć, aby móc uzyskać projekt deweloperski? Każdy projekt, o który się ubiegam, jest po prostu odrzucany z powodu braku portfolio. Więc jak mam postępować?


title: Zadawanie pytań z przewodnikiem Aplikacja na iOS

text: Tworzę aplikację na iPada, która wyświetli kilka wyborów i na podstawie twojego wyboru wyświetli serię pytań, z których każde uruchamia inny zestaw pytań. Zastanawiałem się, czy istnieje nazwa dla tej lub jakiejkolwiek biblioteki o otwartym kodzie źródłowym, którą ktoś stworzył dla tego rodzaju aplikacji. Jeśli nie, czy najlepiej byłoby zakodować wszystkie pytania i odpowiedzi w aplikacji, czy też odczytać je z pliku?


title: Czym dokładnie jest Timer Daemon w systemie Windows? jak mogę to uzyskać za pomocą C#?

text: Próbowałem znaleźć różnicę między zegarem RTC a zegarem systemowym. W końcu odkryłem, że Timer Deamon w oknach próbuje porównać czas pomiędzy RTC a zegarem systemu operacyjnego. Jeśli jest to więcej niż 1 minuta, czas zostanie zaktualizowany w zegarze systemu operacyjnego. Ale chodzi o to, że chcę wiedzieć, czym dokładnie jest demon czasu? jak mogę uzyskać dostęp do tego za pomocą c#?


title: Czy potrzebujemy „oczywistych” informacji z dokumentacji metody?

text: Wiem, że mamy ogólne pytania dotyczące komentarzy, ale szczególnie interesuje mnie tutaj dokumentacja metody w stylu Java Doc. * * * Obcinałem niepotrzebne komentarze podczas refaktoryzacji i zauważyłem, że nasz kod zawiera boleśnie oczywiste opisy metod. /** * @name save * @desc Weryfikuje i zapisuje przesłane informacje o codziennej produkcji zakładu. */ Większość "udokumentowanych" funkcji to tylko nazwy metod używane zgodnie z konwencją w naszym frameworku MVC (CakePHP). Jest z natury oczywiste, że metoda zapisywania w kontrolerze produkcji wykonuje niezbędne czynności w celu zapisania informacji o produkcji. W rzeczywistości nie używamy _use_ Java Doc i kwestionuję wartość tych opisów, nawet jeśli były one zawarte w dokumentacji stylu Java Doc. Jedynym powodem, dla którego ich nie dotknąłem, jest dokumentacja metody, która _podobno_ jest wartościowa. Dokumentacja metody również nie była używana _konsekwentnie_ , około połowa naszych metod kontrolera/modelu jest udokumentowana. Czy jest jakiś powód, aby zachowywać te oczywiste komentarze „Java Doc”, czy też powinienem je przycinać na rzecz „samodokumentującego kodu” i umieszczać komentarze Java Doc tylko dla mniej oczywistych metod?


title: Pielęgnowanie kreatywności

text: Jaka jest najlepsza metodologia rozwoju dla pielęgnowania osobistej kreatywności? Jak myślisz, dlaczego jest lepszy od innych? Metodologie mogą być zwinne, tradycyjne lub cokolwiek innego.


title: Jak mam opracować nietypowy interfejs użytkownika?

text: Powiedzmy, że mam pomysł na aplikację desktopową z nietypowymi wymaganiami interfejsu. Potrzebuję: * Kontrola na poziomie pikseli nad wyglądem i działaniem. * Precyzyjnie określone kontrole niestandardowe. * Niezależność od platformy. Moim typowym rozwiązaniem w tym scenariuszu byłoby użycie SDL (lub SDL+OpenGL) jako struktury graficznej, na której można zbudować interfejs od podstaw. * Czy praca w ten sposób jest dobrym pomysłem, czy powinienem użyć istniejącego zestawu narzędzi? * Jeśli to drugie, który zestaw narzędzi z powiązaniami dla C lub C++ oferuje najczystsze i najbardziej wszechstronne funkcje do rozszerzania (tworzenie nowych kontrolek) i dostosowywania (stylizowanie istniejących kontrolek)?


title: Czy można używać edycji VS Express do tworzenia małych narzędzi w pracy?

text: Jestem programistą pracującym głównie w języku C#, który został przydzielony do projektu Data Migration. (Smutna historia, wiem. Ale to na inny dzień). Obecnie tworzymy mapowanie kolumna-kolumna między tabelami w arkuszu programu Excel w określonym formacie. Teraz, jak wielu programistów, ja też nienawidzę tego rodzaju mechanicznej pracy. Myślałem o stworzeniu jakiejś małej aplikacji, która pomoże mi w dużej mierze zautomatyzować ten proces. W tym celu myślałem o użyciu edycji Visual Studio Express, ponieważ mój menedżer mówi, że projektu nie stać na pełnoprawną licencję VS. Czy można to zrobić, biorąc pod uwagę warunki licencji edycji Express?


title: Zalecenia dotyczące integracji kontenera DI/IoC z istniejącą aplikacją

text: Mam teraz do czynienia z integracją kontenera inwersji kontroli (IoC) z istniejącą aplikacją i szukam kilku zaleceń, w jaki sposób można to najłatwiej osiągnąć, mając na celu zmniejszenie sprzężenia, a tym samym zwiększenie testowalności. Chociaż generalnie nie klasyfikowałbym większości klas jako obiektów godnych, każda ma zbyt wiele obowiązków i ukrytych zależności poprzez statykę, singletony i brak interfejsów. Oto trochę tła niektórych wyzwań, z którymi należy się zmierzyć: * Wstrzykiwanie zależności jest rzadko używane * Mnożą się metody statyczne - zarówno jako metody fabryczne, jak i pomocnicze * Singletony są dość powszechne * Interfejsy, gdy są używane, nie są zbyt szczegółowe * Obiekty często wciągają niepotrzebne zależności poprzez klasy bazowe Naszym zamiarem jest, aby następnym razem, gdy będziemy musieli dokonać zmian w określonym obszarze, spróbować wydobyć zależności, które w rzeczywistości istnieją, ale są ukryte za globalami, takimi jak singletony i statyki. Przypuszczam, że to sprawia, że kontener IoC jest drugorzędny w stosunku do wprowadzenia wstrzykiwania zależności, ale spodziewałbym się, że istnieje zestaw praktyk i zaleceń, których można przestrzegać lub rozważyć, które pomogą nam przełamać te zależności.


title: Jak mam przekazać specyfikę przetwarzania w chmurze (w porównaniu z innymi)

text: Dzisiejsze spotkanie poszło dobrze, na którym wyjaśniłem, że przetwarzanie w chmurze, które jedna z osób rozpoznała, to coś innego niż tradycyjny RDBMS i powiedziałem, że przetwarzanie w chmurze polega na tym, że wszystko jest oprogramowaniem. To nie wyglądało jak „Aha!” kiedy to powiedziałem, więc zastanawiam się, co powinienem powiedzieć. Myślałem, że główną specyfiką przetwarzania w chmurze są usługi zintegrowane, żadne tradycyjne RDBMS i zasoby są przydzielane jako oprogramowanie, a model płatności to opłata za użycie zamiast opłaty za sprzęt. I/lub powinienem podkreślić koncepcję PaaS, czyli że jest to platforma? Wikipedia mówi, że rozróżnienie dotyczy produktów i usług, ale o usługach internetowych mówiliśmy 15 lat temu. Z góry dziękuję za odpowiedzi


title: Czy implementacje MVC mogą różnić się szczegółami projektu i nadal być uważane za implementacje MVC?

text: Czy wzorzec Model-View-Controller jest bardzo ściśle określony, co do szczegółów projektu? A może jest to termin, jak wiele innych, z wieloma różnymi interpretacjami i wersjami (wszystkie pasują do definicji)? Zetknąłem się z wieloma „wersjami” i interpretacjami terminu MVC. Na przykład: Niektóre wersje stwierdzają, że przy użyciu wzorca obserwatora widok rejestruje się jako obserwator w modelu. Dzięki temu widok otrzymuje aktualizacje z modelu, gdy się zmienia, i może aktualizować się sam. Inne wersje twierdzą, że widok nigdy nie może w żaden sposób współdziałać z modelem. Pierwsza wersja pochodzi z książki Head First Design Patterns. Drugą wersję przeczytałem tutaj na programistach. Dwie sprzeczne interpretacje konkretnych detali konstrukcyjnych MVC. I jest więcej przykładów. Moje pytanie brzmi: **Czy definicja wzorca MVC jest jednym z tych terminów, które są interpretowane na różne sposoby, które są akceptowalne?** Nie mówię o definicji wzorca z wyższym widokiem. To ma dość jasną definicję. **Mówię o bardziej szczegółowych szczegółach projektu.** Przykłady: _Czy Observer powinien być używany do aktualizacji Widoku o zmianach Modelu? Czy polecenia aktualizacji do Widoku powinny być do niego przekazywane tylko przez Kontrolera, czy też mogą być mu przekazywane bezpośrednio przez Model?_ Takie rzeczy. Czy wersje MVC różnią się pod względem tych szczegółów, ale wszystkie nadal pasują do definicji MVC? A może po prostu istnieje wiele „niewłaściwych” implementacji MVC?


title: Czy mądrze jest inwestować czas w naukę innej technologii, której nie trzeba używać w pracy?

text: Pochodzę głównie ze środowiska .net. W trakcie mojej zwykłej pracy uważam za męczące nadążanie za wszystkimi istotnymi technologiami (angular js, Windows workflow, wcf, Jquery, SSIS, SSRS, asp.net ...). Ponieważ większość czołowych firm technologicznych opiera się na javie, rozważam przejście na javę. Ale obawiam się, że poświęcenie czasu na javę może spowodować, że pozostanę w tyle w .net (który sam w sobie jest bardzo rozległym oceanem). Nie chcę spędzić kilku lat na doskonaleniu się w javie tylko po to, by zdać sobie sprawę, że skończyłem jako walet wszystkich transakcji i który nie jest dobry w niczym. Wiem, że zadaję bardzo ogólne pytanie, na które może być trudno odpowiedzieć. Ale wciąż mam nadzieję, że niektórzy z doświadczonych weteranów z wieloletnim doświadczeniem udzielą mi porady w tej sprawie.


title: Umieść dane pomiarowe w bazie danych (dostęp)

text: W oprogramowaniu wykorzystuję zapisy danych pomiarowych. Każdy rekord zawiera podstawowe informacje, takie jak nazwa, niektóre parametry i rzeczywiste dane pomiarowe w postaci trzech tablic podwójnych wartości, które mogą różnić się długością w zależności od rekordu. Obecnie do zapisywania tych rekordów używam formatu binarnego. Jednak nie jestem do końca zadowolony z tego podejścia, ponieważ utrudnia to utrzymanie (mogą być zmiany lub dodatkowe informacje w nowych wersjach i tak dalej). Myślałem więc o przeniesieniu danych do bazy danych, takiej jak dostęp. Byłoby to korzystne dla wszystkich. Mogę dodawać informacje, jak chcę, użytkownik może korzystać z bazy danych do innych celów, jeśli chce itp. Jestem jednak kompletnym nowicjuszem w zakresie baz danych i zastanawiam się, jak ustrukturyzowałbym bazę danych, aby reprezentować tę zawartość, zwłaszcza zmienną tablice. Myślałem o zakodowaniu podwójnych wartości w ciągu (jak ; oddzielone ciągi base64), ale wygląda to na brudny hack, który nie jest zbyt przyjazny dla użytkownika. Moje pytania to: * Czy baza danych, taka jak Access, jest odpowiednia dla mojego typu aplikacji. * W bazie danych programu Access nie ma pól „tablicy”, prawda? * Jak zwykle obsługiwane jest przechowywanie zmiennej ilości danych we wpisie bazy danych? * Czy mogę połączyć jedną tabelę dostępową z wpisem w innej tabeli? Więc utworzyłbym tabelę danych z wpisami dla każdego punktu danych i połączyłby to z konkretnym rekordem w mojej głównej tabeli? Mam nadzieję, że uda mi się jakoś wyjaśnić, ale trudno mi owinąć głowę wokół koncepcji. Jeśli potrzebujesz więcej informacji, zapytaj. Dziękuję Ci.


title: Czy zezwalając użytkownikowi na zmianę hasła, powinienem wygenerować nową sól?

text: W mojej bazie danych mam kolumnę z haszowanym hasłem i solą. Moja aplikacja umożliwia użytkownikom zmianę hasła. Czy powinienem użyć tej samej soli do hasła, czy wygenerować nową? Czy ma to znaczenie dla bezpieczeństwa aplikacji?


title: Czy rozsądne jest budowanie aplikacji (nie gier) przy użyciu architektury komponent-jednostka-system?

text: Wiem, że podczas tworzenia aplikacji (natywnych lub internetowych), takich jak te w sklepie z aplikacjami Apple AppStore lub Google Play, bardzo często używa się architektury Model-Widok-Kontroler. Czy jednak rozsądne jest tworzenie aplikacji również przy użyciu architektury Component-Entity-System, powszechnej w silnikach gier?


title: Jak projektować trasy dla uogólnionych/specjalistycznych zasobów

text: Mam nadzieję, że potrafię wyjaśnić, co mnie trapi. Przykład: Mam koszyk na przedmioty z listą przedmiotów z owocami. Więc normalnie zbudowałbym moje trasy w taki sposób, jak koszyki/{basketId}/owoce/{fruitId). Ale fruit jest interfejsem i istnieją różne implementacje, takie jak jabłka i pomarańcze, które wymagają własnej reprezentacji zasobów. Jak więc teraz zbudować swoje trasy? Jak jeden z nich?: * kosze/{basketId}/owoce/{fruitId}/jabłko, kosze/{basketId}/owoce/{owocId)/pomarańczowy i tak dalej * kosze/{basketId}/owoce/{fruitId}/ jabłka/{fruitId} , kosze/{fruitId}/owoce/{fruitId}/pomarańcze/{fruitId} * kosze/{basketId}/jabłka/{fruitId}, kosze/{basketId}/pomarańcze/{fruitId} spokojny sposób?


title: Ekrany informacji o transporcie

text: Muszę stworzyć serwis informacyjny w pociągach, aby dostarczać informacje na żywo. Szukam kilku sposobów, aby się do tego zabrać. W wielu wagonach znajdują się już monitory LCD. Zasilane są z akumulatora. Kiedy pociąg się porusza, chciałbym, aby na ekranach były wyświetlane następujące informacje: i) o trasie, następnych przystankach itp. ii) wiadomości iii) reklamy wideo wyświetlane, gdy pociąg znajduje się w „korytarzu” GPS. Aby to zadziałało, musimy umieścić GPS na pokładzie. Musimy również mieć połączenie z Internetem, aby móc pobierać dane na żywo (dla wiadomości) i móc przesyłać nowe treści wideo, gdy stają się dostępne. Nie chcę odwiedzać każdego wagonu tylko po to, żeby załadować nowe dane. Początkowo myślałem, że będę musiał mieć aplikację wbudowaną w Androida, która to wszystko robi, ale myślę, że byłoby łatwiej, gdybym mógł to uruchomić za pośrednictwem HTML5 w przeglądarce. Do tej pory wymyśliłem następujące 2 możliwości sprzętowe: 1) Kup tanie, używane tablety z popsutym ekranem (ponieważ nadal powinienem móc sterować nim za pomocą myszy). Powinny mieć wbudowany GPS lub za pośrednictwem klucza sprzętowego i mieć dostęp do Internetu (prawdopodobnie karta SIM). Wyświetlaj wyświetlacz na ekranie LCD. 2) Zainstaluj laptopa o tych samych możliwościach. W przypadku 1) można kupić starsze tablety lub z pękniętymi ekranami itp., dzięki czemu można utrzymać niższy koszt, chociaż niemożliwe byłoby uzyskanie standardowego typu (który byłby znacznie łatwiejszy w utrzymaniu). Można je przykręcić z tyłu monitora. Wadą jest to, że wyjście z tabletu może nie mieć wystarczająco wysokiej rozdzielczości po powiększeniu na ekranie LCD 2), laptopie, problem z rozdzielczością można łatwiej przezwyciężyć. Łatwiejsze może być również pozyskiwanie działających laptopów z uszkodzonymi/brakującymi ekranami. Wyobrażam sobie, że będę musiał wysyłać informacje o lokalizacji GPS do serwera co około 10 sekund, może w prostym GET w adresie URL, aby móc zaprezentować informacje na stronie internetowej. Może to działać w przypadku informacji, takich jak następny przystanek i kanały informacyjne, ale filmy prawdopodobnie będą dłuższe niż 10 sekund. Jak więc dostarczyć zawartość? Zastanawiam się między innymi, czy przeglądarka podłączona do Internetu może to wszystko zrobić. Lokalizacja musi być stale aktualizowana. Zamiast po prostu odtwarzać wszystko w pętli, rzeczy dzieją się, gdy pociąg znajduje się w określonych obszarach, np. zbliżanie się/opuszczanie stacji. Jednym ze sposobów, aby to zrobić, jest wysyłanie danych GPS z powrotem co 15 sekund, a następnie odświeżenie strony internetowej przeglądarki, aby wyświetlić zawartość w oparciu o lokalizację i kierunek GPS. Dodatkowo, czy zawartość wideo byłaby poprawnie buforowana? Gdy przeglądarka musi pokazać tę zawartość, byłoby miło, gdyby nie było dużego opóźnienia podczas próby pobrania nowego wideo (lub wyświetlenia istniejącego). I chociaż przy użyciu maszyn z uszkodzonymi ekranami, które są bardziej ekonomiczne i mniej narażone na kradzież, stają się one mniej przyjazne dla użytkownika. Co dzieje się w przypadku przerwy w zasilaniu? Czy można wszystko poprawnie zrestartować, aby przeglądarka wyświetlała wszystko i była połączona z GPS i internetem? Wiele do rozwiązania :)


title: Programowanie .NET i klasy POCO

text: Myślałem dziś wieczorem, zastanawiając się nad jakimś wnioskiem, który muszę zmienić i dało mi to do myślenia. Jednostki Entity Framework to POCO (Zwykłe stare obiekty CLR), a modele używane w ASP.NET MVC są zwykle również POCO. Zasadniczo oznacza to tylko właściwości, a nie metody. Teraz programowanie obiektowe normalnie pozwala obiektowi na hermetyzację jego funkcjonalności, która obejmuje jego właściwości oraz metody, co pozwala na zajście polimorfizmu. Wraz ze wzrostem popularności klas POCO, wzorce projektowe, takie jak repozytoria generyczne, stały się bardziej popularne. Kiedy w przeszłości moje obiekty miały własne operacje CRUD, teraz mam je w repozytorium. Czy to tylko ewolucja w OO, w której operacje CRUD są usuwane z obiektów, aby umożliwić ich rozdzielenie, czy może operacje CRUD nie powinny być w przeszłości na poziomie obiektów, a ja się pomyliłem? do licha, może oba są całkowicie legalne i zawsze były. To tylko obserwacja, która dała mi do myślenia, więc pomyślałem, że poszukam innych opinii.


title: Jak pokazać kierownictwu, że testowanie jednostkowe jest na dłuższą metę tańsze niż testowanie ręczne?

text: W firmie, w której pracuję, istnieje wymóg, aby cały kod został poddany wszelkiego rodzaju testom, ponieważ chcą, aby jak najmniej użytkowników zgłaszało usterki. Mając to na uwadze, postanowiłem wprowadzić zasadę, że kod powinien być testowany jednostkowo do C0 (100% pokrycia każdej linii, a nie każdego warunku). Teraz inni mówią, że jest to droższe niż wykonanie testu ręcznego. Intuicyjnie powiedziałbym, że jest to błąd, ponieważ za każdym razem, gdy dokonujesz zmiany, musisz wszystko ponownie przetestować ręcznie i jest to prawdopodobnie więcej wysiłku niż tylko wykonanie testów i aktualizacja tych, które wymagają aktualizacji, ale nie znajduję sposobu, aby usprawiedliwiam się liczbami, dokumentami lub innymi informacjami. Czy możesz podać mi kilka dobrych punktów, aby udowodnić moje podejście do osób, którym podlegam? **EDYTUJ** : Dzięki wszystkim, którzy pomogli w pytaniu. Widzę, że brakowało w nim kilku kluczowych punktów: * Jest to nowy produkt, który zaczęliśmy rozwijać rok temu z myślą o testowaniu, więc używamy DI wszędzie i wszystko jest przygotowane do testów. * Mamy już produkt komercyjny, który pozwala nam osiągnąć 100% pokrycie, ponieważ możemy kpić prawie wszystko, w tym klasy .Net, dzięki czemu możemy naprawdę izolować klasy (JustMock). * Posiadamy narzędzia do obliczania zasięgu testowania. * Nie usuwamy testerów i testów ręcznych. Usuwamy testy ręczne wykonywane przez programistów. Mamy osobny zespół SQ, ale kierownictwo chce, aby liczba błędów, które docierają do zespołu SQ, była jak najmniejsza, więc programiści muszą w jakikolwiek sposób osiągnąć 100% pokrycie przed dostarczeniem kodu do zespołu SQ. Więc to, co zrobiłem, to zastąpienie ręcznego testowania deweloperów testowaniem automatycznym (testy jednostkowe i integracyjne) i to jest to, co zarząd chce cofnąć. **Pytanie to nie to samo, co pytanie „zduplikowane”, ponieważ mam już wymóg 100% pokrycia.**


title: Architektura OOCSS / BEM / SMACSS

text:
Pracowałem nad tym artykułem, aby uporządkować mój kod frontonu. Odwołuje się do artykułów na temat BEM / SMACSS, które z kolei odwołują się do innych artykułów. Naprawdę staram się zrozumieć, jakie są najlepsze praktyki… Mam kilka dni na określenie tego „standardu”, a potem muszę przejść przez projekt o wysokim priorytecie / wysokiej widoczności / ograniczonym czasie. W związku z tym chciałbym mieć pewność, że zaczynam od podstaw, które będą skalować się tak, jak moja aplikacja. Biorąc pod uwagę komponent o nazwie `segment`... tworzę strony, które będą miały ~10 `segmentów` na stronę. Każdy „segment” będzie współdzielić tę samą klasę bazową. Jednak niektóre „segmenty” będą miały modyfikatory (różne kolory tła). Co więcej, elementy w każdym bloku (w podejściu BEM) również będą miały modyfikatory. Aby zademonstrować, oto prosta implementacja (z tylko jednym elementem `strzałka`, podczas gdy moja pełna strona będzie miała 4-5 elementów w każdym `segmencie`): .segment__arrow { position: absolute; dół: -24px; po lewej: 50%; margines lewy: -11px; pozycja tła: środek bez powtórzeń; wysokość: 21px; szerokość: 21px; indeks z: 2; } .segment__arrow--pomarańczowy { @extend .segment__arrow; obraz w tle: url('/images/arrow_orange.png'); } .segment__arrow--white { @extend .segment__arrow; obraz w tle: url('/images/arrow_white.png'); } Więc to jest podejście jednoklasowe:
 ...
 Alternatywnie, mógłbym skorzystać z podejścia wieloklasowego: .segment__arrow { position: absolute; dół: -24px; po lewej: 50%; margines lewy: -11px; pozycja tła: środek bez powtórzeń; wysokość: 21px; szerokość: 21px; indeks z: 2; } .segment__arrow--orange { background-image: url('/images/arrow_orange.png'); } .segment__arrow--white { background-image: url('/images/arrow_white.png'); } Gdzie mój znacznik byłby:
 ...
 Po trzecie, mógłbym zrobić: .segment__arrow { position: absolute; dół: -24px; po lewej: 50%; margines lewy: -11px; pozycja tła: środek bez powtórzeń; wysokość: 21px; szerokość: 21px; indeks z: 2; } .segment__arrow.orange { obraz w tle: url('/images/arrow_orange.png'); } .segment__arrow.white { background-image: url('/images/arrow_white.png'); } A potem moją definicją klasy byłoby
 ...
 Być może nawet umieszczając pomarańczowe przestrzenie nazw z czymś w rodzaju `sa_orange`, aby uniknąć luźnych selektorów. Rezultatem końcowym, którego szukam, jest mniej kodu / łatwiejsze w utrzymaniu (co prawdopodobnie wyklucza podejście z jedną klasą (opcja 1), jak opisano w tym wspaniałym artykule o skalowalnej architekturze. Podejście wieloklasowe (opcja 2) powoduje dużo gadatliwości (zwłaszcza w moim HTML), ale jest bardzo wyraźny.Trzeci używa podejścia wieloklasowego, ale nie używa modyfikatorów przestrzeni nazw (takich jak .segment__arrow), więc jest nieco mniej gadatliwy (ale także mniej wyraźny i wyższy możliwość kolizji).


title: Dobre przykłady testów jednostkowych dla programistów osadzonych C

text: W przyszłym tygodniu mam zamiar wygłosić wykład w moim dziale na temat testów jednostkowych i rozwoju opartego na testach. W ramach tego pokażę kilka przykładów z życia wziętych z jakiegoś kodu, który napisałem ostatnio, ale chciałbym też pokazać kilka bardzo prostych przykładów, które napiszę podczas wykładu. Szukałem w sieci dobrych przykładów, ale starałem się znaleźć takie, które szczególnie pasowałyby do naszego obszaru rozwoju. Prawie całe oprogramowanie, które piszemy, to głęboko osadzone systemy sterowania działające na małych mikrokontrolerach. Istnieje wiele kodu C, który można łatwo zastosować do testów jednostkowych (będzie mówił o testowaniu jednostkowym na PC, a nie na samym celu), o ile trzymasz się z dala od „dolnej” warstwy: rzeczy, które mówią bezpośrednio do urządzeń peryferyjnych mikrokontrolera. Jednak większość znalezionych przeze mnie przykładów opiera się na przetwarzaniu ciągów znaków (np. doskonały przykład z cyframi rzymskimi Dive Into Python) i ponieważ prawie nigdy nie używamy ciągów znaków, nie jest to odpowiednie (jedyne funkcje biblioteczne, których zwykle używa nasz kod są `memcpy`, `memcmp` i `memset`, więc coś opartego na `strcat` lub wyrażeniach regularnych nie jest całkiem poprawne). Przejdźmy więc do pytania: czy ktoś może zaoferować kilka dobrych przykładów funkcji, których mogę użyć do zademonstrowania testów jednostkowych podczas sesji na żywo? Dobrą odpowiedzią w mojej (może się zmienić) opinii byłaby prawdopodobnie: * Funkcja, która jest na tyle prosta, że każdy (nawet ci, którzy tylko okazjonalnie piszą kod) może zrozumieć; * Funkcja, która nie wydaje się bezcelowa (np. obliczanie parzystości lub CRC jest prawdopodobnie lepsze niż funkcja, która mnoży dwie liczby i dodaje losową stałą); * Funkcja, która jest wystarczająco krótka, aby pisać przed salą ludzi (mogę skorzystać z wielu schowków Vima, aby zmniejszyć błędy...); * Funkcja, która przyjmuje liczby, tablice, wskaźniki lub struktury jako parametry i zwraca coś podobnego, zamiast obsługiwać ciągi; * **Funkcja, która zawiera prosty błąd (np. `>` zamiast `>=`), który jest łatwy do wprowadzenia i który nadal będzie działał w większości przypadków, ale będzie działał z pewnym szczególnym przypadkiem brzegowym: łatwy do zidentyfikowania i naprawienia za pomocą test jednostkowy.** Jakieś myśli? Chociaż prawdopodobnie nie jest to istotne, same testy zostaną prawdopodobnie napisane w C++ przy użyciu Google Test Framework: wszystkie nasze nagłówki mają już otoczkę `#ifdef __cplusplus extern "C" {`; to zadziałało dobrze z testami, które przeprowadziłem do tej pory.


title: Różnica w implementacji między Lombok a AutoValue

text: Myślałem, że zarówno Project Lombok, jak i AutoValue używały procesorów adnotacji kompilatora, ale z tej prezentacji slajdów i odpowiedzi na przepełnienie stosu wydaje się, że „Lombok” nie? A przynajmniej nie tylko procesory adnotacji? Czym różnią się pod tym względem `Lombok` i `AutoValue`?


title: Wydajność i pobieranie danych

text: Obecnie pracuję nad aplikacją mobilną w **Objective C** na urządzenia **iOS**. Wykonując aplikację dochodzę do momentu, w którym muszę pobrać dane z bazy danych i pokazać je w tabeli (nazwa konkretnego treningu i jego opis). Moim zdaniem mogę to zrobić na dwa sposoby: 1. Mogę wybrać każdy trening z bazy danych i związanego z nim opisu, zbudować kolekcję obiektów, wysłać do odpowiedniego kontrolera i pokazać w tabeli wszystkie nazwy, kiedy jeden jest wybrany Mogę wysłać odpowiedni obiekt do innego kontrolera (ten z następnego widoku) i pokazać odpowiedni opis (w ten sposób wykonuję tylko jedną operację na bazie danych i zarządzam wieloma obiektami). 2. Innym sposobem na zrobienie tego jest po prostu pobranie nazw wszystkich treningów, gdy jeden jest wybrany, pobierz powiązany opis z bazy danych i pokaż go (w ten sposób wykonuję dwie operacje na bazie danych, ale zarządzam znacznie mniejszą ilością danych i obiektów w Aplikacja). Martwię się o wydajność. Czy lepiej wykonać więcej operacji na bazie danych i zarządzać mniejszą ilością informacji i obiektów w aplikacji, czy lepiej wykonać mniej operacji na bazie danych i zarządzać większą ilością informacji i obiektów? Wiem, że każda aplikacja jest inna i jedna odpowiedź nie może być zastosowana do każdej z nich, ale jak mam o tym myśleć przy tworzeniu jednej? Dziękuję za poświęcony czas i pomoc.


title: Dlaczego jedna podklasa zamiast kompozytu miałaby być używana podczas korzystania z wzorca projektowego Factory Method?

text: Obecnie uczę się wzorców projektowych. Dowiedziałem się o wzorcu Factory Method. Wzorzec ten oznacza, że aby zaimplementować fabrykę do tworzenia obiektów, należy podklasę podklasę, która potrzebuje tych obiektów, i zlecić jej utworzenie. W ten sposób nadklasa działa tylko z bardziej abstrakcyjnymi referencjami zamiast z konkretnymi implementacjami generowanymi przez podklasę, co tworzy luźno powiązany projekt. Zwykle oznacza to, że nadklasa staje się „abstrakcyjna”, ponieważ jej metoda „createObject()” musi być „abstrakcyjna”, aby podklasa zawierająca metodę fabryki musiała zaimplementować tę metodę. Jak każdy wzorzec fabryki, ten wzorzec hermetyzuje tworzenie konkretnego obiektu i pozwala klientowi pracować na wyższym poziomie abstrakcji. Ale ten specyficzny wzór jest zbudowany na dziedziczeniu. **To czego nie rozumiem to** \- Dlaczego ktokolwiek miałby trudzić się z podklasowaniem klasy, która potrzebuje fabryki i uczynieniem jej „abstrakcyjną”? **Kompozycja jest o wiele lepsza do tego celu pod każdym względem.** Dużo bardziej sensowne jest **utworzenie abstrakcyjnej klasy lub interfejsu o nazwie `Factory`.** Zadeklarowałaby jedną metodę: `createObject()`. **Tworzymy konkretne jego implementacje do różnych celów** (`WeaponFactory`, `TitleFactory`..) Następnie **dajemy klientowi instancję członkowską `Factory` `factory`.** Ta referencja jest **ustawiona do czegokolwiek konkretnego `Factory` jest potrzebnego w czasie wykonywania**, a klient może po prostu użyć `createObject()` `factory` w razie potrzeby (bez konieczności posiadania wiedzy na temat konkretnej implementacji `factory`). Nie rozumiem, dlaczego ktoś miałby kłopotać z podklasyfikowaniem klasy i uczynieniem jej abstrakcyjną tylko po to, by umożliwić jej używanie fabryki w luźno powiązany sposób. Prosty projekt kompozycyjny, który opisałem, jest pod każdym względem lepszy – myślę. **Czy sie zgadzasz? Czy mógłbyś wyjaśnić, dlaczego ktoś miałby użyć opisanego przeze mnie wzorca metody fabrycznej?**


title: Interoperacyjność SQL wysokiego poziomu

text: Czy w scenariuszu serwer -> klient nie byłoby prostsze i szybsze przyznanie publicznemu użytkownikowi dostępu do procedury składowanej zamiast korzystania z usług internetowych (XML, REST, SOAP itp.) i innych rozwiązań interoperacyjnych? W ten sposób możesz połączyć się bezpośrednio z bazą danych, uzyskać odpowiednią treść i zrobić z nią to, co chcesz w ten sam sposób we wszystkich językach i systemach?


title: Jak opisać n-wymiarową kostkę?

text: Chcę opisać sześcian n-wymiarowy (sześcian dwuwymiarowy to kwadrat, sześcian trójwymiarowy to sześcian itd.). Jestem prawie pewien, że potrzebuję tablicy, ale jak zorganizować ją w najlepszy możliwy sposób? Jak dotąd uważam, że najlepszym sposobem jest utworzenie tablicy o wymiarach n (np. kwadrat to `$kostka [][]`), ale nie rozumiem, jak ją utworzyć. Podobnym podejściem może być przechowywanie n-sześcianu jako tablicy n kostek o n-1 wymiarach, co jest znacznie bardziej praktyczne (np. sześcian to tablica kwadratów, a każdy kwadrat to tablica punktów).


title: Czy testy jednostkowe HSQLDB są wzorcem anty?

text: HSQLDB jest świetny. Ma (również) tryb osadzony (nie jest potrzebny dedykowany serwer), który pozwala na szybkie prototypowanie rzeczy takich jak Proof of Concepts, a także może być świetny w aplikacjach gotowych do produkcji, jako szybkie i proste przechowywanie różnych danych. Jednak co najmniej 90% projektów, nad którymi pracowałem w ciągu ostatnich lat, jeśli w jakikolwiek sposób zajmują się bazą danych SQL, nieuchronnie będą miały testy jednostkowe wykorzystujące wbudowaną bazę danych HSQLDB. Rzeczywiście, te projekty (które najczęściej używają standardowej struktury Maven) mają mnóstwo "testów jednostkowych" (lub przynajmniej jakiś rodzaj testów, ale które znajdują się w obszarze "testów jednostkowych" projektu (np. "src/test/java")), które wykorzystują jedną lub więcej osadzonych instancji HSQLDB w celu wykonania niektórych operacji CRUD i sprawdzenia wyników. Moje pytanie brzmi: czy to jest antywzór? Czy fakt, że HSQLDB jest łatwy do zintegrowania, a wbudowany serwer jest bardzo lekki, sprawia, że można go przeoczyć jako „makietę” rzeczywistej bazy danych, podczas gdy nie powinno tak być? Czy takie testy nie powinny być traktowane bardziej jak testy integracyjne (bo każdy z nich składa się z „czegoś” _ORAZ_ tego „czegoś” integrującego z serwerem bazy danych)? A może brakuje mi czegoś w definicji "testu jednostkowego" i możemy faktycznie powiedzieć, że używanie HSQLDB w ten sposób po prostu jest zgodne z częścią definicji "testu jednostkowego" "naśladuj zależności i testuj tylko jednostkę"?


title: Walidacja e-maili w PHP

text: Napisałem następującą funkcję do sprawdzania poprawności wiadomości e-mail dla aplikacji internetowej, nad którą pracuję: function validate_email($email) { $valid = true; if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $valid = false; } $email_parts = explode("@", $email); if(count($email_parts) < 2) { $valid = false; } else { if(!checkdnsrr($email_parts[1], "MX")) { $valid = false; } } return $poprawny; } Nie ma na celu zastąpienia e-maila weryfikacyjnego wysłanego do użytkownika z linkiem do zakończenia rejestracji. Wiem, że nie złapie wszystkich nieważnych, po prostu je zmniejszy. W związku z tym zmniejsz liczbę otrzymanych odsyłanych wiadomości e-mail. Moje pytania to: 1. Czy poprawny adres e-mail zostanie oznaczony jako fałszywy alarm? 2. Czy można polegać na sprawdzaniu DNS w celu zweryfikowania domeny? Każda pomoc jest mile widziana. Dziękuję.


title: Jakie programowanie powinienem znać przed studiami?

text: Jestem uczennicą liceum, która od podstawówki chciała zostać programistą komputerowym. Niewiele jest miejsc, w których mieszkam, które uczą programowania ludzi w moim wieku, więc jestem całkowicie samoukiem, korzystając z zasobów internetowych, takich jak MSDN. Nauczyłem się i stałem się przyzwoity w QBASIC-u (który wiem, że jest bardzo stary, nawet kiedy się go nauczyłem), C, C++, C# i zanurzyłem palce w Javie. Rozumiem podstawową ideę OOP. Planuję iść do college'u i zdobyć stopień naukowy z informatyki, a być może z inżynierii komputerowej i elektrotechniki, ponieważ programy nauczania są podobno bardzo podobne, według mężczyzny, którego spotkałem i z którym krótko rozmawiałem. Szkoła Wyższa. Co powinienem wiedzieć o informatyce/programowaniu przed pójściem na studia? Czy powinienem już dużo wiedzieć, znać biegle jeden lub dwa języki i mieć dość wysokie umiejętności programowania/komputera, czy też zajęcia w zasadzie zaczynają się od zera?


title: Jaki format kodu został zweryfikowany przez studia przypadków jako najbardziej czytelny?

text: Czy są jakieś studia przypadku eyetrackingowe lub podobne badania przeprowadzone w celu sprawdzenia, jaki format kodu jest najłatwiejszy do odczytania, utrzymania i pracy. Zawsze formatuję swój kod w ten sposób. function thing() { if(something) { // zrób coś } else { // zrób coś innego } } Ale nigdy nie widziałem, aby następowało to gdzie indziej. W większości interfejsów API lub projektów open source robi się to w ten sposób. function thing() { if(something) { // zrób coś } else { // zrób coś innego } } Czy możesz udzielić odpowiedzi, która nie jest oparta na twoich osobistych preferencjach, ale jest poparta badaniami lub jakimś faktem? **Czy przeprowadzono jakiekolwiek badania wizualnego skanowania oczu w celu potwierdzenia, który format jest najlepszy?**


title: Czy istnieje nazwa tego wzorca projektowego?

text: Nie lubię singletonów, ale teraz muszę iść na kompromis (ale tylko jako środek tymczasowy). Jednak nie chcę iść całkowicie singletonem. Wolałbym użyć tego wzorca: interface NameThisInterface { //Zwraca aktualnie scentralizowany obiekt. funkcja statyczna prąd(); //Centralizuje instancję. funkcja centralizacji(); } klasa A implementuje NameThisInterface { ... } $obj = new A; $obj->centralizuj(); ...               Prąd(); //pobiera $obj. Zasadniczo A byłaby moją klasą "Aplikacji". Wszystkie kontrolery, modele i widoki itp. będą miały dostęp do tylko jednej jego instancji. Ale ze względu na łatwiejsze testowanie jednostkowe, między innymi, chcę, aby obiekt aplikacji był przechowywany jako odniesienie do wszystkich klas MVC. Tak więc z powyższym wzorcem konwersja w tym późniejszym momencie będzie łatwiejsza, a niektóre testy jednostkowe mogą być łatwiejsze. Czy istnieje ogólnie przyjęta nazwa tego wzoru?


title: Użyj motywu/skórki lub CSS w Asp.Net

text: Pracuję nad stroną internetową, która używa szablonów skórek wszędzie na stronie. Z tego powodu wszystkie kontrolki, nawet etykiety, są kontrolkami serwera. Zastanawiałem się, czy warto zmienić chociaż etykiety na kontrolki HTML i tworzyć dla nich CSS. Czy jest jakaś przewaga używania skórki nad CSS?


title: Jak zdefiniować szczegóły wdrożenia?

text: W naszym projekcie montaż łączy logikę IoC-Container, elementy wewnętrzne projektu i warstwę komunikacyjną. Obecna wersja ewoluowała, aby mieć tylko klasy wewnętrzne w zespołach dodatkowych. Moim głównym problemem związanym z tym podejściem jest to, że punkt wejścia jest dostępny tylko przez IoC-Container. Do zainicjowania zestawu nie można użyć niczego innego niż odbicie. Wszystko, co znajduje się za interfejsem IoC, jest zdefiniowane jako szczegóły implementacji i dlatego nie jest przeznaczone do zastosowań na zewnątrz. Powszechnie wiadomo, że nie należy testować szczegółów implementacji (takich jak metody prywatne i wewnętrzne), ponieważ powinny one być testowane przez interfejs publiczny. Powszechnie wiadomo również, że twoje testy nie powinny używać kontenera IoC do konfiguracji SUT, ponieważ spowodowałoby to zbyt wiele zależności. Dlatego używamy InternalsVisibleTo-Attribute, aby elementy wewnętrzne były widoczne dla naszych testowych zestawów i testujemy tak zwane szczegóły implementacji. Zdałem sobie sprawę, że jednym z problemów może być pomieszanie różnych problemów w tym zespole, zmiana tego uczyniłaby tę dyskusję bezużyteczną, ponieważ klasy muszą być zdefiniowane publicznie. Ignorując moje obawy z tym związane, czy potrzeba testowania klasy nie jest wystarczającym powodem, aby upublicznić ją, użycie InternalsVisibleTo wydaje się niezamierzone i trochę "hacking". Podejście polegające na testowaniu tylko względem publicznie dostępnego kontenera IoC jest zbyt kosztowne i skutkowałoby testami stylu integracji. Zaletą korzystania z elementów wewnętrznych jest to, że zastosowania są dobrze znane i nie muszą być implementowane tak, jak musiałaby być metoda publiczna (dokumentacja, kompletność, wersjonowanie,...). Czy istnieje rozwiązanie, aby nie testować z elementami wewnętrznymi, ale zachować ich przewagę nad klasami publicznymi, czy też musimy przedefiniować szczegóły implementacji.


title: Zagadka wywiadu na temat podróżowania na odcinku linii

text: Oto interesujące pytanie, na które natknąłem się: powiedzmy po prostu na osi liczbowej o długości `M`, gdzie `0 <M <= 1 000 000 000`, podałeś `N` (`1 < N <= 100 000`) całkowitych par punktów . W każdej parze pierwszy punkt oznacza, gdzie aktualnie znajduje się obiekt, a drugi punkt oznacza, gdzie obiekt powinien zostać przeniesiony. (Pamiętaj, że `drugi` punkt może być _mniejszy_ niż `pierwszy`). Teraz załóżmy, że zaczynasz od punktu „0” i masz wózek, który może pomieścić obiekt „1”. Chcesz przesunąć wszystkie obiekty z ich początkowych pozycji do odpowiednich końcowych pozycji, podróżując najmniejszą odległość wzdłuż osi liczbowej ( _nie_ przemieszczenie). Musisz skończyć na punkcie `M`. Teraz próbowałem zredukować ten problem do prostszego problemu. Szczerze mówiąc, nie mogę nawet wymyślić brutalnej siły (prawdopodobnie chciwego) rozwiązania. Jednak moją pierwszą myślą było przekształcenie ruchu wstecznego w dwa ruchy do przodu, ale to nie działa we wszystkich przypadkach. Wyciągnąłem te `3` przykładowe przypadki testowe tutaj: ![http://i.stack.imgur.com/zRv4Q.png](http://i.stack.imgur.com/dj9l8.png) Odpowiedź do pierwszego przypadku testowego jest `12`. Najpierw podnosisz „czerwony” element w punkcie „0”. Następnie przechodzisz do punktu „6” (odległość = „6”), tymczasowo upuszczasz „czerwony” element, a następnie podnosisz „zielony” element. Następnie przechodzisz do punktu „5” (odległość = „1”) i upuszczasz „zielony” element. Następnie cofasz się do punktu „6” (odległość = „1”) i podnosisz upuszczony „czerwony” element, przechodzisz do punktu 9 (odległość = „3”), a następnie przechodzisz do punktu „10” (odległość = „ 1`), aby zakończyć sekwencję. Całkowita przebyta odległość wynosiła „6 + 1 + 1 + 3 + 1 = 12”, co stanowi minimalną możliwą odległość. Wydaje mi się, że pozostałe dwa przypadki mają odpowiedzi „12”. Nie potrafię jednak znaleźć ogólnej zasady, jak to rozwiązać. Czy ktoś ma jakieś pomysły?


title: Jakie jest najlepsze pytanie do rozmowy kwalifikacyjnej C++?

text: Gdybyś mógł zadać programiście C++ jedno pytanie, aby zmierzyć jego umiejętności C++, co by to było? Myślę, że najlepsze pytanie brzmi: **Czy możesz nazwać „usuń to”; wewnątrz funkcji członkowskiej?** (Umieszczam to jako link, abyś mógł to przemyśleć najpierw, a następnie przejdź do Najlepszego pytania do rozmowy kwalifikacyjnej C++ – kiedykolwiek!, aby zobaczyć poprawną odpowiedź.) Nie pytam o to, ponieważ oczekuję najbardziej ludzie znają odpowiedź. Gdyby to zrobili, nie byłoby to tak przydatne pytanie. Pytam, czy mogą dojść do prawidłowej odpowiedzi i jak to robią.


title: Wysyłanie kolekcji danych do API. Wiele małych połączeń a jedno duże połączenie

text: Obecnie tworzę API i zaimplementowałem kilka podstawowych akcji REST, takich jak pobieranie, aktualizacja, wyszukiwanie itp. Inny program zbierający dane musi je zsynchronizować z tym API. Moja obecna myśl brzmi: Jaka byłaby dobra praktyka, aby zsynchronizować te dane? Kilka informacji: Ilość danych do zsynchronizowania różni się w zależności od aplikacji. Niektórzy mogą przesyłać 100 rekordów na minutę, inni 10 000 rekordów na minutę. Obowiązuje limit transferu na godzinę, aby utrzymać równowagę obciążenia serwera. Dodatkowo żądania są podpisywane tokenem w celu sprawdzenia autentyczności. Oto mała lista pro/con, którą właśnie stworzyłem. Nie jestem pewien, czy są to prawdziwe plusy/minusy, ani nie jestem pewien, czy powinienem zważyć niektóre z nich. **Opcja pierwsza** Przeprowadź pętlę przez te dane i utwórz wywołanie interfejsu API dla każdego rekordu. Plusy: * lepiej integruje się z obecnym REST API * nieudane wpisy synchronizacji można ustawić w kolejce do ponownego wysłania Wady: * większe obciążenie z powodu wielu wywołań **Opcja druga** Zbuduj pakiet wszystkich tych danych i wyślij go w jednym połączenie. Plusy: * mniejsze obciążenie * tylko jedno zapytanie Minusy: * błąd przesyłania może spowodować utratę wszystkich danych * oddzielna implementacja, aby umożliwić


title: Kiedy potrzebujesz „setek tysięcy” wątków?

text: Erlang, Go i Rust twierdzą w ten czy inny sposób, że wspierają programowanie współbieżne za pomocą tanich "wątków"/współprogramów. FAQ Go stwierdza: > Praktyczne jest tworzenie setek tysięcy gorutyn w tej samej > przestrzeni adresowej. Samouczek Rusta mówi: > Ponieważ zadania są znacznie tańsze w tworzeniu niż tradycyjne wątki, > Rust może tworzyć setki tysięcy jednoczesnych zadań w typowym > 32-bitowym systemie. Dokumentacja Erlanga mówi: > Domyślny początkowy rozmiar sterty wynoszący 233 słowa jest dość konserwatywny w celu > obsługi systemów Erlanga z setkami tysięcy a nawet milionów > procesów. Moje pytanie: jaki rodzaj aplikacji wymaga tylu współbieżnych wątków wykonania? Tylko najbardziej obciążone serwery internetowe otrzymują nawet tysiące jednoczesnych odwiedzających. Aplikacje typu boss-worker/job-dispatching, które napisałem, zmniejszają zwroty, gdy liczba wątków/procesów jest znacznie większa niż liczba fizycznych rdzeni. Przypuszczam, że może to mieć sens w przypadku aplikacji numerycznych, ale w rzeczywistości większość ludzi deleguje równoległość do bibliotek innych firm napisanych w Fortran/C/C++, a nie do języków nowszej generacji.


title: Dziedziczenie klas i dodatkowe parametry

text: Próbuję utworzyć bramkę SMS.. Mam żądanie od klienta (formularz internetowy lub API lub rekord bazy danych), które muszę przetworzyć i przekazać do zewnętrznego dostawcy API lub SMS. Aby wszystko było prostsze, postanowiłem stworzyć interfejs, który zaimplementuje każda implementacja dostawcy: interfejs SMSProvider metoda publiczna sendSMS(sendTo,message) metoda publiczna sendWakeup(sendTo) Pomyślałem, że to będzie moja najlepsza droga naprzód, ponieważ wtedy nie muszę zmieniać kodu przy wysyłaniu do innego dostawcy - wiedziałem, że tworząc mojego dostawcę, po prostu wywołuję metodę do wykonania funkcji z normalnymi parametrami i wszystko jest w porządku... No, dopóki nie mam nowego dostawcy, który wymaga nowych parametrów nowy dostawca wymaga - sendTo - message - sendFrom - validPeriod Więc co teraz mam zrobić ? jak mogę teraz używać mojego interfejsu? kiedy nowy dostawca potrzebuje dodatkowych parametrów ?


title: Czy w OnionArchitecture interfejs użytkownika może komunikować się bezpośrednio z datastorem, czy nie?

text: Jestem fanem architektury cebulowej, ale szukam relaksujących rozwiązań w niektórych obszarach. Przede wszystkim myślałem o komunikacji bezpośrednio z UI (od kontrolera w mvc) do danych po stronie odczytu. Jak każdy widzi, interfejs użytkownika nie powinien odwoływać się do żadnego zestawu z wyjątkiem Core. Kiedy chcę wyświetlić listę krajów na stronie, aby wybrać jeden, czy naprawdę muszę to zrobić za pośrednictwem mojego Core? Widzę dwa rozwiązania: * UI ma odniesienie do NHibernate i mówi bezpośrednio * dodaj bardzo cienką warstwę abstrakcji, w której definiuję IFinder<> (tylko do odczytu danych), który zostanie zaimplementowany w infrastrukturze Myśli?


title: metoda sprawdzania poprawności wartości zależnych od zamówienia otrzymywanych asynchronicznie

text: Mam szereg urządzeń sprzętowych, które podłączam, aby tworzyć ścieżki. Mam pewne sprawdzenie poprawności, aby upewnić się, że potencjalne ścieżki są prawidłowe i zrobią to, co jest zamierzone, ale aby zrobić to poprawnie, muszę wiedzieć, jakie urządzenie jest źródłem ścieżki, i inne informacje z tego źródła. Po skonfigurowaniu wszystkiego mogę wywnioskować źródło, podążając ścieżką wstecz. Jednak po pierwszym uruchomieniu i wywnioskowaniu stanu oraz gdy wysyłam żądanie równolegle do wielu urządzeń, połączenia mogą nie działać; więc nie mogę prześledzić moich połączeń z powrotem do źródła, ponieważ wiem, że połączenie A i C wychodzą, ale nie jestem jeszcze świadomy B, więc nie mogę jeszcze prześledzić C z powrotem do A. Oznacza to, że trudno jest poprawnie sprawdzić błędy podczas dodawania połączenia. Moje pytanie brzmi: jak mam sprawdzić zdrowie psychiczne? Mam trzy opcje, z których żadna do końca nie podoba mi się 1) ufam, że dobrze wykonam swoją pracę i nie są wykonywane żadne złe żądania 2) próbuję przechowywać źródło z każdym połączeniem podczas jego tworzenia, abym mógł przejść bezpośrednio do źródła w celu sprawdzenia logiki bez śledzenia ścieżki do tyłu. Można to zrobić teoretycznie, ale obawiam się, że teraz muszę ufać, że kiedy moja logika wyznaczania ścieżki mówi, że coś jest źródłem, to jest to właściwe i to źródło nigdy się nie zmieni, a także logika do wnioskowania o źródle, gdy nadejdą połączenia ze sprzętu i ogólnie wydaje się potencjalnie nieelegancki w utrzymaniu. 3) spróbuj wykonać sprawdzanie poprawności, gdy tylko będę miał pełną ścieżkę (kiedy dodaję B, teraz sprawdzam, czy B i C są dobre), problem polega na tym, że wyrzucam wyjątek na urządzenie B, aby zgłosić problem z połączeniem nawiązanym na urządzeniu C wydaje się... mylące. 4) nawiązywać połączenia bez sprawdzania ich poczytalności, ale mieć kogoś innego odpowiedzialnego za sprawdzenie poczytalności po podłączeniu wszystkich ścieżek (lub bezpośrednio przed)?


title: Czy możemy utworzyć referencję do obiektów DOM, takich jak document.location?

text: Ponieważ mamy wspaniałą koncepcję zwaną podpinaniem, gdzie możemy utworzyć referencję do funkcji i połączyć inną funkcję W ten sam sposób możemy stworzyć referencję do obiektów DOM. Na przykład możemy utworzyć funkcję i **zaczepić ją** do **document.location**, tak aby za każdym razem, gdy używany jest document.location, inna funkcja musi zostać uruchomiona.


title: Czy przestrzeganie jednego potwierdzenia na test jest w tym przypadku głupią spójnością?

text: Mam zajęcia, które testuję. Klasa posiada funkcję: `apply(List<IRule> rules, List<ITarget> Targets);` W jednym teście chcę się upewnić, że każdy cel został przekazany do jednej reguły, a la: rule1.AssertWasCalled(fnord => fnord.Test(cel1)); rule1.AssertWasCalled(fnord => fnord.Test(cel2)); rule1.AssertWasCalled(fnord => fnord.Test(cel3)); Wydaje mi się, że ograniczenie się do pojedynczego stwierdzenia twierdzenia byłoby dość hobgoblinem. Czy mam rację w tym założeniu, czy jest jakiś inny sposób, w jaki mógłbym stwierdzić, że każdy cel został w rzeczywistości przetestowany?


title: Jak zamodelować opcjonalne dane wejściowe do działania?

text: Konstruuję diagram aktywności UML 2.0. Zadanie polega na ocenie danych z badania użyteczności prototypu. Opcjonalnie może się to skończyć tylko uzyskaniem wyników zadowolenia użytkownika. Ale jeśli firma chce wybrać, które funkcje wdrożyć w ostatecznej wersji, które zmienić, a które pominąć w oparciu o satysfakcję, musi również dokonać tej oceny. Jeśli wybiorą dodatkową ewaluację, potrzebują również pewnych kryteriów decyzyjnych. ![błędny diagram](http://i.stack.imgur.com/8uamv.png) Jak rozumiem formalizm UML 2.0, węzeł obiektowy :klasyfikacja kryteriów" w powyższej wersji diagramu musi istnieć. Musi tam być , aby był dostępny do generowania tokenów itp. Ale w mojej działalności, jeśli firma nie chce robić gałęzi "klasyfikuj cechy" i zdecyduje się zakończyć aktywność w węźle końcowym przepływu, nie musi przygotowywać żadnych kryteria klasyfikacji przed rozpoczęciem działania.Z drugiej strony kryteria są zewnętrzne w stosunku do działania, więc nie mogę ich tak naprawdę umieścić po podziale, muszą być na granicy.Jak poprawnie modelować tę sytuację ?


title: Czy dobrze jest mieć zadanie dochodzeniowe w sprincie?

text: Ćwiczę agile już od ponad roku. W ramach naszego sprintu czasami będziemy mieć **zadania dochodzeniowe**. Pomijamy planowanie pokera dla tych zadań i dodajemy ogólne liczby. Tezy to zadania takie jak zbadanie skomplikowanych defektów lub technicznej wykonalności niektórych funkcji itp. Czy jest to właściwe, czy istnieją alternatywne sposoby rozwiązania tego problemu?


title: Chcę zastosować zwinną metodologię - w firmie, która w ogóle NIE ma procesu?

text: Jestem w zespole składającym się z dwóch programistów i obecnie nie mamy formalnych procesów tworzenia i testowania oprogramowania - chciałbym początkowo zaadoptować jednego solo. Gdzie potrzebuję opinii, to naprawdę od czego zacząć? Po przeczytaniu różnych książek nie jest strasznie jasne, jaki byłby najlepszy punkt wyjścia. Ostatnio stworzyłem prostą bazę danych punktów dostępu/dostępu do rejestrowania problemów i rozwiązań oraz dziennik zmian. Poza tym testowanie jest procesem ręcznym. W mojej kontroli jest proces, w którym projektuję i rozwijam dowolne z moich własnych narzędzi lub treści i bardzo chciałbym zastosować lekką zwinną metodologię, która działa dobrze dla jednego programisty, ale ma być „podążaj za moim przykładem” dla firma wciągnęła w to cały rozwój oprogramowania. Lubię wybierać elementy z różnych projektów, które mam w podróży i refaktoryzować je lub dodawać funkcjonalności; jednym z pojęć, które rozważałem, było pojęcie historyjek użytkownika, dzięki którym mogłem wybrać różne historie, gdy byłem w ogólnym projekcie, którego dotyczy. Ktoś inny na podobnym stanowisku jednego programisty, który przyjął zwinną/inną „logię”?


title: Nowoczesna recenzja Java

text: Programuję od kilku lat i zacząłem w Javie, a w swoim czasie znalazłem wiele różnych źródeł twierdzących, że Java jest w jakiś sposób gorszym językiem. Doskonale zdaję sobie sprawę, że każdy język ma swoje mocne i słabe strony, ale wiele rzeczy, które przeczytałem o Javie, wydaje się przestarzałych. Najczęściej przytaczanym powodem, dla którego Java jest gorsza, jest to, że jest znacznie wolniejsza niż inne natywnie kompilowane języki, takie jak na przykład C++. Wiele osób krytykuje projektanta gry Notcha (który stworzył Minecrafta) za używanie Javy z powodu jego widocznego braku w dziale wydajności. Wiem, że Java była wtedy znacznie wolniejsza, ale od tego czasu wprowadzono wiele ulepszeń, zwłaszcza kompilacja JIT. Chciałbym dziś uzyskać obiektywne opinie o Javie jako języku. Więc moje pytanie ma 4 części. 1. Wydajność. a. Jaka jest dzisiejsza szybkość Javy w porównaniu do C++? b. Czy byłoby możliwe stworzenie nowoczesnego tytułu AAA przy użyciu Javy? c. W jakich konkretnie obszarach Java jest wolniejsza niż C++, jeśli w ogóle? (tj. przetwarzanie liczb, grafika lub po prostu dookoła) 2. Czy Java jest obecnie uważana za język skompilowany lub język interpretowany? 3. Jakie są główne niedociągnięcia Javy, które zostały rozwiązane od samego początku? 4. Jakie są główne niedociągnięcia Javy, którymi trzeba się jeszcze zająć? Edycja: tylko dla wyjaśnienia nie robię tego Java vs C++, oczywiście średnio c++ będzie trochę szybszy niż Java. Potrzebuję po prostu czegoś do porównania Java pod względem dojrzałości jako języka w tym momencie. Ponieważ c++ istnieje od zawsze, pomyślałem, że będę dobrym punktem odniesienia.


title: Rozwiązania problemów, które .NET może rozwiązać lepiej niż Java (lub odwrotnie)

text: Wydaje mi się, że są to dwie różne platformy, które rozwiązują podobne problemy przedsiębiorstwa (ale nie tylko). Interesują mnie jednak problemy, które Java może rozwiązać lepiej niż C#/.NET lub C#/.NET może rozwiązać lepiej niż Java. Pomijając czynnik „kosztów”, ponieważ nie stanowi to problemu dla dużych firm (programiści prawdopodobnie kosztują więcej niż licencje od Microsoftu - to tylko myśl), a nawet dla małych projektów są darmowe/open-source narzędzia dla .NET, więc koszt może być zerowy również w świecie .NET. Dzięki Mono możesz przenieść platformę .NET na systemy Linux i MacOS, więc korzyści płynące z Java (na wielu platformach) nie są czynnikiem decydującym o dzisiejszym korzystaniu z Javy. znacznie lepsze rozwiązanie niż Java i na odwrót? Interesują mnie tylko rozwiązania problemów.


title: Licencje Open Source

text: Samodzielnie tworzę grę opartą na fizyce przy użyciu płótna HTML5 i JavaScript; Nie użyłem żadnego zewnętrznego kodu (w tym fizyki czy silników gier), a mój kod ma około 5000 linii. Rozwój jest prawie ukończony, a teraz chcę go wydać. Planuję wydać grę jako płatną aplikację w sklepach z aplikacjami Chrome, Android i Apple, ale chcę też wydać kod na licencji open source - takiej, która pozwala na swobodny odczyt i zbieranie pomysłów z mojego kodu, ale nie pozwala na skopiowanie więcej niż kilku wierszy. Zasadniczo chcę, aby ludzie, którzy wiedzą, gdzie szukać i jak używać, aby znaleźć bezpłatny kod, a ogół społeczeństwa, aby go kupić, jednocześnie zapobiegając piractwu lub rozwojowi bliskiej kopii. Czy jest to możliwe z licencją open source? Jakiej licencji powinienem użyć?


title: Tworzenie nowego języka skryptów do nauki?

text: Czy warto tworzyć język skryptowy do mojego osobistego doświadczenia edukacyjnego? Powodem, dla którego pytam, jest to, że jest już dostępnych tak wiele języków programowania, wiem, że mój nigdy nie będzie miał innego zastosowania niż zapewnienie dobrego doświadczenia w nauce. Dostrzegam jednak wady tworzenia języka skryptowego jako doświadczenia edukacyjnego: zajmie mi to dużo czasu i wysiłku, abym mógł robić coś bardziej „produktywnego”. Czy stworzenie języka programowania (w tym pisanie szkiców jego zamierzonego celu, składni, filozofii, interpretera itp.) byłoby warte czasu, wysiłku i doświadczenia w nauce? A może są inne projekty, z których mógłbym skorzystać bardziej?


title: Dlaczego witryny internetowe wymagają pewnych znaków w swoich poświadczeniach?

text: Wygląda na to, że gdy witryna internetowa zawiera listę wymagań dotyczących znaków MUSZĄ znajdować się w haśle, udostępnia ona jedynie mapę haseł dla kogoś, kto chce zhakować swój system. Na przykład fsd.gov wymaga: Hasło musi mieć długość 10-14 znaków. Hasło musi zawierać po dwa z następujących elementów: wielkie/małe litery, cyfry i znaki specjalne. Przykładem dopuszczalnego hasła jest: AAbb1234!@ Gratulacje! Gdybym chciał zhakować twoje hasło, teraz wiem, że próba odgadnięcia „aaaaaaaaa” będzie błędem, dałeś mi wskazówki co do tego, co mogę odgadnąć i pomogłeś to zawęzić. Wydaje mi się, że jest to bardziej otwarte i więcej możliwych kombinacji, jeśli nie wymagają znaków specjalnych. Następnie, jeśli je włączyłeś, Twoje konto jest teraz bezpieczniejsze. _Uwaga – jak pewnie się domyślasz, nie jestem specjalistą od bezpieczeństwa, dlatego opublikowałem tutaj._


title: Architektura danych dla wielu najemców

text: Jesteśmy na etapie planowania i przeprojektowywania naszej aplikacji karty lojalnościowej. Jak rozumie się, będzie to aplikacja dla wielu najemców. I muszę zabrać twoje myśli. Oto kilka kluczowych punktów, które powinniśmy wziąć pod uwagę, aby przeprojektować logiczną i fizyczną strukturę danych: 1. Kampanie: Możemy organizować kampanie między najemcami, na przykład jeśli kupisz to od najemcy A, możesz kupić to od najemcy B z 10% rabatem. 2. Hierarchia najemców: Z punktu widzenia bezpieczeństwa oddziały najemców widzą tylko swoje transakcje, a nie inny oddział lub najemca. 3. Personalizacja dla najemców będzie rzadkością do zignorowania: uważamy, że dostosowanie będzie dotyczyć tylko danych posiadacza karty (przynajmniej nie będziemy mieli szansy na dostosowanie bazy najemców w ciągu najbliższych jednego lub dwóch lat). 4. Posiadacz karty (nie jest to użytkownik najemcy, również możemy zalogować się w celu administrowania i zgłaszania wszystkich najemców) może zalogować się do systemu, aby zobaczyć dokonaną przez siebie transakcję. Ogólnie zgadzam się z ideą rozdzielenia baz danych najemcy lub shardingu na pewnym poziomie. Ponieważ mamy kryteria nr 1, wymaga to od nas zapytania wszystkich baz danych, aby zdecydować, czy jej transakcja jest objęta kampanią, czy nie. Może to być ogromny problem z wydajnością. Albo co myślisz o shardingu, czy to naprawdę powoduje problemy z wydajnością? Co byś wolał, jeśli musisz utworzyć system OLAP, w którym musisz wysyłać zapytania do bazy danych z wieloma fragmentami w celu raportowania i podejmowania decyzji? Z drugiej strony, dzięki oddzieleniu bazy danych, bardziej aktywni najemcy uzyskają większy wzrost wydajności systemu, zwłaszcza podczas sporządzania raportów. Ponieważ ich dane transakcyjne będą znajdować się we własnej bazie danych i zostanie wykonane jedno zapytanie. Możemy przeznaczyć więcej zasobów na system i podać rozsądną cenę za korzystanie z aplikacji. Sharding będzie również pomocny, jeśli rozważymy umieszczenie tej aplikacji w chmurze, ponieważ sqlServer azure ma limit 10 GB na db. Jednym z pomysłów jest oddzielenie baz danych, ale utrzymanie głównej bazy danych dla decyzji krzyżowych, takich jak kampanie itp. (jak ta wspomniana tutaj w edycji części pytania). Ale wszystkie raporty zostaną pobrane z baz danych, które posiadali. Drugim pomysłem jest oddzielenie znacznie bardziej aktywnych najemców i obsługa pozostałych przez podejście tenantID w głównej bazie danych. Na koniec możemy rozważyć nosql graph db do przetwarzania transakcji na serwerze kampanii. Będziemy również używać narzędzia NHibernate do ORM. Ale projekt shardingu nie został ukończony i powinniśmy wziąć pod uwagę wdrożenie jednego, aby zaimplementować oddzielne podejście db za pomocą shardingu lub podejścia master db. Co myślisz o korzystaniu z nhibernate w obsłudze transakcji? Czy będzie to spadek wydajności przy użyciu NHibernate w usłudze czasu rzeczywistego, która powinna zapewniać szybką reakcję? Jeśli tak, co byś zaproponował? ## EDIT @rae1n Aby być bardziej zrozumiałym na temat moich pewnych potrzeb: 1 - Zgodnie z kluczowym punktem, o którym wspomniałem powyżej, jaką architekturę danych sugerowałbyś? * Jedna baza danych i tenantID na tabelę, w razie potrzeby replikuj bazę danych. * Używanie odłamków z tabelą główną. * Używanie kombinacji shardingu i tenantID. * Twoja własna sugestia. 2 - Czy NHibernate jest odpowiedni dla twojej sugestii dla #1 i jak? Czy możesz zasugerować przykładową aplikację lub link do artykułu? 3 - Czy NHibernate nadaje się do usługi oceny kampanii. Proszę wziąć pod uwagę, że mogą być bardzo złożone kampanie wśród 1 do n lokatorów i powinniśmy wspierać te zachowania. 4- Czy zasugerowałbyś wykres db nosql do oceny kampanii i czy znasz próbkę do tego zastosowania?


title: Jak sprawdzany jest typ w interpreterze/kompilatorze języka dynamicznego, takim jak JavaScript?

text: W językach dynamicznych, takich jak JavaScript czy Python, typ zmiennej jest określany w czasie wykonywania. To jeden z powodów, dla których są wolniejsze niż języki maszynowe, takie jak Java. Jak przebiega sprawdzanie typu? Jaki jest główny powód, dla którego ten proces jest powolny?


title: Zarządzanie kontrahentami na Github

text: Chcę zarządzać zewnętrznymi wykonawcami, aby pomóc rozwijać nasz kod. Kod znajduje się na Github. Chciałbym użyć uproszczonej wersji tego modelu rozgałęzienia: http://nvie.com/posts/a-successful-git-branching-model/ Na razie kod nie jest modułowy, więc nie mogę ukryć przed niektórymi jego części deweloperzy, a la http://stackoverflow.com/questions/3852601/github-branches Chcę podłączyć nasze serwery produkcyjne i pomostowe do repozytorium, więc muszę zarządzać dostępem do zapisu w repozytorium kodu. P1 – czy to oznacza, że potrzebuję konta ORGANIZACJI na Github? Zakładam, że tak. Q2 — Czy ta metodologia rozgałęziania zadziała: repozytorium `Główne` z gałęziami `Master` i `Integration`. Kontrahenci (nie mający dostępu do zapisu) będą pobierać dane z tego repozytorium (lub je rozwidlać?). Kiedy skończą z zadaniem, wyślą żądanie ściągnięcia za pośrednictwem witryny. Q2A - czy to oznacza, że nie będę miał możliwości śledzenia gałęzi zadań w moim repozytorium? Q2B - jak będzie przebiegał proces integracji? Czy muszę przydzielić nowy zespół, zwany integratorami? Czy przeciągną ukończone zadania do gałęzi integracyjnej głównego repozytorium, przetestują ją i czy dobrze scalą się z gałęzią główną? P3 - Czy istnieje lepszy model? **EDYTUJ** \- Ufam tym programistom w moim kodzie (w odniesieniu do tajności). Nie ufam im, że będą decydować, kiedy funkcja jest gotowa do produkcji lub jakie poprawki trafią do następnej wersji. Dziękuję! Tal.


title: Wyjaśnianie klientom precyzji zmiennoprzecinkowej

text: Jak najlepiej wyjaśnić **_klientom_** problem z zaokrąglaniem liczb zmiennoprzecinkowych? Znam http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html jak również wpisy w C++ FAQ i różne inne strony skierowane do programistów i naukowców, ale czy jest jakiś strona internetowa, artykuł lub wyjaśnienie skierowane do „stałych” klientów o ograniczonym zapleczu matematycznym lub naukowym? (dla których powyższe odniesienia są płaskie). Gdyby był utrzymywany lub pochodził z dobrze znanej i uznanej instytucji lub korporacji, tym lepiej, biorąc pod uwagę, że jak niektórzy z was mogli doświadczyć, samodzielne wyjaśnienie tego może być trochę skomplikowane.


title: Dlaczego programowanie funkcjonalne

text: O co chodzi z programowaniem funkcjonalnym? Często o tym mówię, ale szczerze mówiąc nigdy nie uważałem ich za przydatne. Dlaczego najwyraźniej tak wiele uniwersytetów ich naucza?


title: Jak radzisz sobie z coraz dłuższymi czasami kompilacji podczas pracy z szablonami?

text: Używam Visual Studio 2012 i zdarzają się przypadki, w których dodaliśmy parametry szablonów do klasy „just” w celu wprowadzenia „punktu szwu”, dzięki czemu w teście jednostkowym możemy zastąpić te części obiektami pozorowanymi. Jak zwykle wprowadzasz punkty szwu w C++: używając interfejsów i/lub mieszając w oparciu o pewne kryteria z niejawnymi interfejsami, używając również parametrów szablonów? Jednym z powodów, aby o to zapytać, jest również to, że podczas kompilacji czasami pojedynczy plik C++ (zawierający pliki szablonów, które mogą również zawierać inne szablony) powoduje wygenerowanie pliku obiektowego, który trwa około 5-10 sekund na komputerze deweloperskim . O ile rozumiem, kompilator VS nie jest zbyt szybki w kompilowaniu szablonów, a także ze względu na model włączania szablonów (praktycznie uwzględniasz _definicję_ szablonu w każdym pliku, który używa go pośrednio i prawdopodobnie ponownie tworzysz ten szablon za każdym razem, gdy modyfikujesz coś, co nie ma nic wspólnego z tym szablonem), możesz mieć problemy z czasami kompilacji (przy kompilacji przyrostowej). Jakie są twoje sposoby obsługi czasu kompilacji przyrostowej (i nie tylko) podczas pracy z szablonami (oprócz lepszego/szybszego kompilatora :-)).


title: Jak zastosować zwinną metodologię scrum w małym zespole .Net?

text: Pracuję w małej firmie produktowej rozwijającej aplikacje .Net. Jest mały zespół składający się z 5-6 programistów. Jestem osobą odpowiedzialną za planowanie wszystkiego. Ale moją główną rolą jest programista. Teraz nasz obecny projekt jest bardzo niestabilny z powodu złej organizacji. Dzisiaj mój szef zadzwonił do mnie i kazał złożyć raport o potrzebnych zasobach, odpowiedniej metodologii, wymaganej sile roboczej i ich rozliczeniach, aby obecny projekt zakończył się sukcesem. Wiem, że nie mam wystarczających umiejętności organizacyjnych i muszę zagłębić się w swoje umiejętności programistyczne. Więc muszę skupić się tylko na rozwoju. Więc nie mogę już zarządzać projektem. Teraz szukam innych sposobów, aby odnieść sukces w rozwoju. Moje pytania to: * Jaka jest odpowiednia metodologia zwinna dla mojego zespołu? * Czy Scrum nadaje się do powyższego scenariusza? * Jeśli przyjmiemy Scrum, co musimy zrobić dalej? (Myślę, że zatrudnienie nowego do zarządzania projektem jest bardziej odpowiednie. Więc musimy zdobyć Scrum Mastera i kilku innych programistów.) * Czy są jakieś zasoby (książki, blogi itp.), aby uzyskać wskazówki i porady, jak rozwiązać ten problem? * Jeśli Scrum nie jest odpowiednią metodologią dla naszego scenariusza, co jeszcze może być bardziej odpowiednią metodologią do zastosowania? Czy ktoś może podać dobre rozwiązanie mojego problemu?


title: Czy programiści, testerzy i użytkownicy biznesowi powinni mieć jeden ujednolicony skrypt testowy?

text: Na etapie programowania normalnie posiadałbym własne skrypty testowe, które dokumentowałyby dane, scenariusze i kroki wykonania, które planuję przetestować; to jest mój plan testów deweloperskich. Gdy funkcjonalność zostanie wdrożona w Test, testerzy testują ją za pomocą własnego skryptu testowego, który napisali. W UAT użytkownik biznesowy testuje następnie przy użyciu własnego planu testów. Z perspektywy czasu wygląda na to, że zapewnia to lepsze pokrycie, z testami deweloperskimi będącymi mieszanką testów czarno-białych, podczas gdy testerzy i użytkownicy biznesowi skupiają się na testowaniu czarnej skrzynki. Ale z drugiej strony powoduje to pojawienie się odrębnych przypadków testowych, które są wykonywane tylko na etapie (tj. niektóre przypadki, o których testerzy myśleli, że są wykonywane tylko na etapie testowym) i chcieliby, aby programista je pominął, co sprawia, że jest to znalezisko/błąd . Czy warto konsolidować skrypty testowe od samego początku? W ten sposób przy użyciu jednego zunifikowanego skryptu testowego, czy jest to trochę trudne do zrobienia z góry?