title: Czy którykolwiek z tych sposobów jest właściwym sposobem na napisanie licencji dla twojego projektu opensource, rozwidlonej i zmodyfikowanej z istniejącej licencji różnych autorów?

text: Użyłem części źródła z istniejącego projektu biblioteki Java z czymś, co wydaje się być 3-klauzulową licencją BSD. Dokonałem znaczących zmian w bibliotece, które umożliwiają korzystanie z niej na nowej platformie, a także dodałem kilka nowych funkcji i nowe przykładowe projekty wykorzystujące zmodyfikowaną bibliotekę. Chcę wiedzieć, czy któryś z tych sposobów jest prawidłowym sposobem napisania licencji dla projektu (bez zmiany typu licencji) Proszę przeczytać obie wersje i podać odpowiedź porównawczą: ALBO: **<Nowa nazwa biblioteki dla innej platformy> ** **Copyright (c) 2014 nowe imię autora** **Wszelkie prawa zastrzeżone.** **Ten projekt zawiera kod z projektu zatytułowanego <oryginalna nazwa biblioteki dla innej platformy>, który ma swoje repozytorium kodu źródłowego w <repozytorium git link> z następującymi właścicielami praw autorskich:** **Prawa autorskie (c) 200x-200y imię i nazwisko autora oryginalnej biblioteki 1 imię i nazwisko autora oryginalnej biblioteki 2 imię i nazwisko autora oryginalnej biblioteki 3** **Wszelkie prawa zastrzeżone.** Redystrybucja i wykorzystanie w źródle i formy binarne, z modyfikacją lub bez, są dozwolone pod warunkiem spełnienia następujących warunków: Redystrybucja kodu źródłowego musi zawierać powyższą informację o prawach autorskich, tę listę warunki i następujące wyłączenie odpowiedzialności. Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, tę listę warunków oraz następujące zastrzeżenie w dokumentacji i/lub innych materiałach dostarczonych z dystrybucją. Ani nazwisko **<imię i nazwisko autora>, <nazwisko autora starej biblioteki 1>, <imię i nazwisko autora starej biblioteki 2>, <nazwisko autora starej biblioteki 3>**, ani nazwiska jego współtwórców nie mogą być używane do popierania lub promowania produkty pochodzące z tego oprogramowania bez uprzedniej pisemnej zgody. NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁCZYNNIKÓW „TAK JAK JEST” I WYŁĄCZA SIĘ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WŁAŚCICIELE NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZAMIENNYCH; UTRATĘ KORZYSTANIA, DANYCH LUB USŁUG LUB PRZERWANIA W DZIAŁALNOŚCI) JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB INNEGO) WYNIKAJĄCEJ Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, NAWET JEŚLI JEST WSKAZANE. LUB: **<Nowa nazwa biblioteki dla innej platformy> Copyright (c) 2014 imię i nazwisko autora nowej biblioteki Wszelkie prawa zastrzeżone.** Redystrybucja i wykorzystanie w formie źródłowej i binarnej, z modyfikacją lub bez, jest dozwolone pod warunkiem spełnienia następujących warunków : Redystrybucja kodu źródłowego musi zawierać powyższą informację o prawach autorskich, tę listę warunków i następujące wyłączenie odpowiedzialności. Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, tę listę warunków oraz następujące zastrzeżenie w dokumentacji i/lub innych materiałach dostarczonych z dystrybucją. Ani nazwisko **<nazwisko autora nowej biblioteki>**, ani nazwiska jego współtwórców nie mogą być używane do promowania lub promowania produktów wywodzących się z tego oprogramowania bez uprzedniej pisemnej zgody. NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁCZYNNIKÓW „TAK JAK JEST” I WYŁĄCZA SIĘ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WŁAŚCICIELE NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZAMIENNYCH; UTRATĘ KORZYSTANIA, DANYCH LUB USŁUG LUB PRZERWANIA W DZIAŁALNOŚCI) JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB INNEGO) WYNIKAJĄCEJ Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, NAWET JEŚLI JEST WSKAZANE. **Ten projekt zawiera kod z projektu zatytułowanego <oryginalna nazwa biblioteki dla innej platformy>, który ma swoje repozytorium kodu źródłowego w <link do repozytorium git> i który jest objęty następującymi warunkami:** **<Oryginalna nazwa biblioteki dla innej platformy > Prawa autorskie (c) 200x-200y imię i nazwisko autora oryginalnej biblioteki 1 imię i nazwisko autora oryginalnej biblioteki 2 imię i nazwisko autora oryginalnej biblioteki 3 Wszelkie prawa zastrzeżone.** Redystrybucja i wykorzystanie w formie źródłowej i binarnej, z modyfikacją lub bez, jest dozwolone pod warunkiem spełnienia następujących warunków są spełnione: Redystrybucja kodu źródłowego musi zawierać powyższą informację o prawach autorskich, tę listę warunków oraz następujące wyłączenie odpowiedzialności. Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, tę listę warunków oraz następujące zastrzeżenie w dokumentacji i/lub innych materiałach dostarczonych z dystrybucją. Ani imię i nazwisko **<imię i nazwisko autora oryginalnej biblioteki 1>, <imię i nazwisko autora oryginalnej biblioteki 2>, <imię i nazwisko autora oryginalnej biblioteki 3>**, ani nazwiska współtwórców nie mogą być używane do wspierania lub promowania produktów opartych na tym oprogramowaniu bez uprzedniej pisemnej zgody. NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁCZYNNIKÓW „TAK JAK JEST” I WYŁĄCZA SIĘ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WŁAŚCICIELE NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZAMIENNYCH; UTRATĘ KORZYSTANIA, DANYCH LUB USŁUG LUB PRZERWANIA W DZIAŁALNOŚCI) JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB INNEGO) WYNIKAJĄCEJ Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, NAWET JEŚLI JEST WSKAZANE.


title: Czy Chef jest odpowiednim narzędziem do wdrażania aplikacji?

text: Używamy Chef do obu zarządzania konfiguracją (upewniając się, że „Węzeł DB” ma odpowiednią wersję właściwej bazy danych; czy „Serwer aplikacji” ma odpowiednią wersję Java i zmiennych środowiskowych itp.). a także wdrożenie („chef-client --once”) naszych aplikacji do odpowiednich węzłów serwera aplikacji. Dla mnie osobiście uważam, że wdrażanie należy do sfery serwera CI. Wszystko poza aplikacją (kontener, system operacyjny, narzędzia systemowe, konfiguracja systemu itp.) należy do zarządzania konfiguracją, dlatego najlepiej zarządzają nimi narzędzia takie jak Chef, Puppet itp. Obecnie nasze kompilacje CI tworzą artefakt (plik wykonywalny JAR z osadzonym kontenerem Tomcat), a następnie wykonuje polecenie Chef-Client na wszystkich węzłach, w których należy wdrożyć JAR. Chef-Client jest skonfigurowany do ściągania pliku JAR z serwera CI. Wydaje mi się to dziwaczne i próbuję znaleźć lepsze, bardziej przekonujące rozwiązanie. Pytam więc: * Czy wdrożenie należy do serwera CI, czy do narzędzia CM? **Dlaczego?** * Jeśli należy do serwera CI, jakich mechanizmów (SSH, SCP itp.) powinien używać serwer CI, aby faktycznie przeprowadzić wdrożenie? Używamy Bamboo, ale równie dobrze możemy mówić o Jenkinsie, Hudsonie itp. * Istnieje różnica między _wdrażaniem_ (umieszczaniem aplikacji w węźle) a _uruchamianiem_. Czy bieganie należy również do serwera CI, narzędzia CM, czy jakiegoś innego procesu? Innymi słowy, co właściwie powinno _zatrzymać_ „starą” wersję aplikacji, zastąpić ją „nową” wersją, a następnie _uruchomić_ nową wersję? Czy to kandydat do czegoś takiego jak Run Deck?


title: Od czego powinienem zacząć od dużego równoległego zadania programistycznego?

text: Moim zadaniem jest wdrożenie rozproszonego systemu semaforów (linki do opisu) oraz aplikacji do niego. Będę używał gniazd Java, a będzie używał tablic znaków wodnych i kolejek priorytetowych (nie wiem gdzie), więc jestem ciekawy, jak poradzić sobie z tym projektem. W szczególności chciałbym wiedzieć, jaki jest dobry cel pierwszego kroku lub prosty podsystem, który mogę zaimplementować. W tej chwili po prostu nie wiem, na czym skupić swoją uwagę. Aplikacja jest systemem z licencją pływającą - jak w laboratorium komputerowym z tylko jedną kopią oprogramowania (być może programu CAD), co pozwala na korzystanie z oprogramowania tylko jednemu komputerowi w tym samym czasie. Gdy jedno urządzenie korzysta z oprogramowania, dostęp do oprogramowania jest zablokowany. Kiedy ta maszyna skończy z nią korzystać, rezygnuje z niej i kto pierwszy prosi, powinien być następny. Oto wspomniany algorytm pseudokodu — http://i.imgur.com/q9kRm.png


title: Mierzenie stanu postępu w zwinnym projekcie

text: Czy istnieje sposób na zmierzenie sukcesu projektu zwinnego w odniesieniu do dobrze zdefiniowanego wyniku? Na przykład zakodowałem grę życia Conwaya z 12 osobami używającymi TDD i za każdym razem było to inne, ale cel wdrożenia w pełni działającej wersji programu był za każdym razem taki sam. Oczywiście jest to skrajny przykład, a większość projektów nie będzie tak mała, ani tak dobrze zdefiniowana, ale jest to tylko próba wyrażenia koncepcji, którą przedstawiam i którą staram się lepiej zrozumieć.


title: Jak sobie radzić z programowaniem bezsenności?

text: Pracowałem do godziny 1:00 prawie każdego wieczoru. Potem jadę autobusem do domu i wyobrażam sobie ekran komputera w mojej głowie. Wracam do domu i śpię najwyżej cztery godziny, a następnego dnia zaczynam widzieć mój ekran w autobusie, kiedy zaczyna się od nowa. Po czterech lub pięciu dniach załamuję się i śpię 16 godzin lub dłużej. Dużo robię, ale wydaje mi się to niezdrowe i nie mogę się powstrzymać od zastanawiania się, czy rzeczywiście wykonałabym więcej w normalnym harmonogramie. Czy ktoś był w podobnej sytuacji? Czy jestem tylko pracoholikiem? Lubię programować i przez ostatni rok uczyłem się pisać aplikacje LOB i uwielbiam to.


title: Jak wyjaśnić początkującym program „Hello World”?

text: Mam zamiar dać niektórym początkującym prezentację na temat pisania pierwszego programu w Javie. Ten program będzie dotyczył drukowania "hello world". Nie jestem pewien, jak wyjaśnić pojęcia takie jak metoda główna (oraz publiczne i statyczne słowa kluczowe oraz argument args) oraz definicja klasy. Jakieś pomysły, jak to wyjaśnić, aby dokładnie zrozumieli, co mają na myśli? Nie mam problemu z wydaniem 1-2 prezentacji tylko w programie Hello world, ale chcę, żeby zrozumiały.


title: Dodawanie przełączników warunkowych do metod uruchamiania testów

text: Niedawno zaczęliśmy pisać testy dla naszej dość dużej bazy kodu PHP - używając PHPUnit piszemy testy jednostkowe i integracyjne dla naszych modeli i kontrolerów. Jaki jest cel przy ustawianiu przełącznika logicznego, który określa, czy klasa jest w trybie TEST_MODE, który zmienia zachowanie metody? Np. Funkcja pomocnika poczty e-mail - nie musimy wysyłać e-maila podczas testu i nie testujemy serwera pocztowego, tylko że ta metoda została wywołana. if (self::TEST_MODE) { return true; } Już odchodzę od tego pomysłu - nie sądzę, aby dodawanie dodatkowych sprawdzeń w całym kodzie do testowania było eleganckim rozwiązaniem. Ale na przykład w tym przykładzie - jaki byłby dobry sposób sprawdzenia, czy wiadomość e-mail została wysłana?


title: Zrobić wielką sprawę z == true?

text: Jest mój kolega, który ciągle pisze: if (someBool == true) To doprowadza mnie do szału! Czy powinienem zrobić z tego dużo, czy po prostu go porzucić?


title: Czy użycie jawnego porównania „== true” jest zawsze złe?

text: > **Możliwy duplikat:** > Zrób wielką sprawę z == true? Ostatnio przeglądałem wiele przykładów kodu i ciągle zauważam użycie... if( expression == true ) // zrób coś... i... x = ( expression == true ) ? x : y; Zawsze używałem... x = (wyrażenie)? x : y; i... if( wyrażenie ) // zrób coś... Gdzie `== true` jest niejawne (i oczywiste?) Czy to tylko mój nawyk i jestem wybredny co do jawnego użycia `== true`, czy to po prostu zła praktyka?


title: Optymalizacja Scruma Sprint

text: Poszukiwanie systematycznej metody szacowania i porównywania czynników sukcesu konfiguracji sprintu na podstawie: * Wielkość zespołu * Czas trwania sprintu * Liczba historii


title: Rozdzielenie projektu narzędziowego „zwiastun” na poszczególne komponenty z „opcjonalnymi” zależnościami

text: Przez lata używania C#/.NET w wielu wewnętrznych projektach jedna biblioteka rozrosła się organicznie w jeden ogromny plik. Nazywa się „Util” i jestem pewien, że wielu z was widziało jedną z tych bestii w swojej karierze. Wiele części tej biblioteki jest bardzo samodzielnych i można je podzielić na osobne projekty (które chcielibyśmy udostępnić). Jest jednak jeden poważny problem, który należy rozwiązać, zanim zostaną one wydane jako osobne biblioteki. Zasadniczo istnieje wiele, wiele przypadków tego, co mógłbym nazwać **"opcjonalnymi zależnościami"** między tymi bibliotekami. Aby to lepiej wyjaśnić, rozważ niektóre moduły, które są dobrymi kandydatami do stania się samodzielnymi bibliotekami. `CommandLineParser` służy do analizowania linii poleceń. `XmlClassify` służy do serializacji klas do XML. `PostBuildCheck` wykonuje kontrole skompilowanego zestawu i zgłasza błąd kompilacji, jeśli się nie powiedzie. `ConsoleColoredString` to biblioteka dla kolorowych literałów łańcuchowych. `Lingo` służy do tłumaczenia interfejsów użytkownika. Każda z tych bibliotek może być używana całkowicie samodzielnie, ale **jeśli** są używane razem, można uzyskać przydatne dodatkowe funkcje. Na przykład, zarówno `CommandLineParser`, jak i `XmlClassify` udostępniają funkcjonalność sprawdzania po kompilacji, która wymaga `PostBuildCheck`. Podobnie, `CommandLineParser` pozwala na dostarczenie dokumentacji opcji przy użyciu kolorowych literałów łańcuchowych, co wymaga `ConsoleColoredString` i obsługuje tłumaczoną dokumentację przez `Lingo`. Kluczową różnicą jest więc to, że są to **funkcje opcjonalne**. Można użyć parsera wiersza poleceń ze zwykłymi, niepokolorowanymi ciągami, bez tłumaczenia dokumentacji lub wykonywania jakichkolwiek kontroli po kompilacji. Można też sprawić, by dokumentacja była możliwa do tłumaczenia, ale nadal niepokolorowana. Lub zarówno kolorowe, jak i możliwe do przetłumaczenia. Itd. Przeglądając tę bibliotekę "Util", widzę, że prawie wszystkie potencjalnie separowalne biblioteki mają takie opcjonalne funkcje, które łączą je z innymi bibliotekami. Jeśli miałbym rzeczywiście wymagać tych bibliotek jako zależności, to ten zwitek nie jest tak naprawdę rozplątany: nadal potrzebujesz wszystkich bibliotek, jeśli chcesz użyć tylko jednej. Czy istnieją ustalone podejścia do zarządzania takimi opcjonalnymi zależnościami w .NET?


title: Czy powinienem tworzyć repozytoria ze specjalnymi funkcjami, takimi jak getStaffActive()?

text: Widziałem wiele artykułów, ale żaden mi nie pomógł. To dlatego, że chcę używać Dappera jako DAL. Czy powinienem tworzyć repozytoria ze specjalnymi funkcjami? Jak getStaffActive()? **Jeśli używam repozytoriów** * Mogę zaimplementować z dapper-extension generyczne crud * Nie mam pojęcia, jak obsłużyć połączenie z bazą danych. Gdzie otworzyć połączenie? Jeśli robię to w każdej funkcji, to jak mam używać zakresu transakcji? W jakiś sposób repozytoria, z którymi pracuję, powinny udostępniać połączenie, aby transakcja działała. Ale jak to zrobić? Otwarcie połączenia w BLL? Jeśli używam zapytań i wykonuję je bezpośrednio, to nadal to samo.


title: Czy częste skomplikowane konflikty scalania są oznaką problemów?

text: W naszym zespole używamy Gita jako kontroli źródła. Mamy kilka obszarów kodu, które są prawie niezależne, ale częściowo się pokrywają. Ostatnio omawialiśmy przepływy pracy i podejścia do korzystania z kontroli źródła. Jedna skarga, która pojawia się, gdy promuję korzystanie z przepływu pracy gałęzi funkcji, polega na tym, że ludzie często napotykają skomplikowane konflikty scalania, które niepoprawnie rozwiązują. Przez skomplikowane mam na myśli „nieoczywiste, jak rozwiązać”. W związku z tym coraz aktywniej wykorzystywane są inne przepływy pracy, takie jak przepływ pracy oparty na „przeciąganiu”. Jako zwolennik podejścia opartego na gałęzi funkcji, tak naprawdę nie otrzymuję skargi. Tak, musisz aktualizować lokalne gałęzie funkcji z poziomu głównego lub z dowolnego miejsca, ale to jedyny prawdziwy problem, jaki widzę. Myślę, że jeśli twoje scalenia są zawsze skomplikowane i mogą mieć drugorzędne skutki, to jest to bardziej problem z pracą zespołową niż problem z Git. Czy mam rację, myśląc o tym? Czy skomplikowane konflikty scalania są oznaką czegoś dobrego lub złego?


title: Mapowanie do siebie wielu różnych taksonomii

text: W pracy posiadamy zróżnicowaną liczbę stron internetowych sprzedających produkty używane. Szefowie zauważyli, że produkty sprzedawane na niektórych stronach często nakładają się na siebie i chcieliby dystrybuować treści z jednej witryny do jednej lub kilku innych. Główny problem, jaki mam, polega na tym, że taksonomia w każdej witrynie jest inna, więc umieszczanie reklam z witryny A w znanej lokalizacji taksonomii w witrynie B nie jest prostym zadaniem. trzy witryny sprzedają używane rowery, ale każda taksonomia witryny jest inna... Taksonomia witryny A: Na sprzedaż > Sprzęt sportowy > Rowery Taksonomia witryny B: Rowery > Rowery górskie Taksonomia witryny C: Używane > Rowery > Rowery dla dorosłych > 26-calowe koło Założenie jest takie, że na przykład wszystkie reklamy umieszczone w witrynie A zostaną przesłane do silnika routingu, który decydowałby o tym, czy reklama powinna zostać przesłana do innych witryn, i uderzyło mnie, że może to być miejsce do zrobić mapowanie taksonomii… ale jestem zakłopotany, jeśli chodzi o elegancki sposób, aby to zrobić. Jestem również świadomy, że chociaż te taksonomie są dość stabilne, nie są osadzone w kamieniu! Czy podejść do tego problemu?! Pozdrawiam, Adam


title: Szczegóły implementacji API synchronizacji bazy danych

text: Chcę osiągnąć synchronizację bazy danych między bazą danych mojego serwera a aplikacją kliencką. Na serwerze działałby MySQL, a aplikacje mogą obsługiwać różne technologie bazodanowe, ich implementacja nie jest istotna. Mam bazę danych MySQL online i dostępną w sieci za pośrednictwem interfejsu API, który napisałem w PHP (tylko szczegół). Moja aplikacja kliencka jest dostarczana z kopią danych online. W miarę upływu czasu moim celem jest sprawdzanie wszelkich zmian w bazie danych online i udostępnianie tych aktualizacji aplikacji klienckiej za pośrednictwem wywołania interfejsu API, wysyłając datę do punktu końcowego interfejsu API odpowiadającego ostatniej dacie aktualizacji aplikacji, odpowiedź będzie być JSON wypełnionym wszystkimi nowymi obiektami i zaktualizowanymi obiektami oraz usuwać identyfikatory, co umożliwia odpowiednią aktualizację lokalnego sklepu. Zasadniczo chcę to zrobić: http://dbconvert.com/synchronization.php Moje pytanie dotyczy szczegółów implementacji. 1. Czy muszę dodać do tabel bazy danych kolumnę z datą „ostatniej modyfikacji”? 2. Ponieważ aplikacja kliencka może być bardzo nieaktualna, jeśli była wyłączona przez długi czas, oznacza to również, że nie powinienem usuwać danych z bazy danych online, ale zamiast tego ustawić inną kolumnę o nazwie „usuń” ustawioną na „1” i zmodyfikowana data została odpowiednio zaktualizowana? 3. Czy moje zapytanie SQL po prostu sprawdzi wszystkie dane z datą modyfikacji wyższą niż data przekazana do żądania API przez klienta? Czuję, że jest w tym o wiele więcej niż mnóstwo randek na całym świecie. A także martw się, że będę musiał zachować wiele starych danych, aby mieć pewność, że stare wersje aplikacji klienckiej zawsze będą miały możliwość usunięcia części swoich danych, gdy będą mogły się zsynchronizować.


title: Błędy pojawiają się ponownie w naszym oprogramowaniu GUI podczas rozwoju. Jak należy się tym zająć?

text: Posiadamy oprogramowanie, które ma wiele funkcji użytkowych i ciągle je zmieniamy. Mamy problemy z takimi rzeczami, jak utrzymywanie się pozycji przewijania, które wydają się być naprawione, ale są ponownie zepsute po wydaniu. Mamy dobrych testerów, ale wydaje się, że brakuje nam takich rzeczy, ponieważ w aplikacji jest tak wiele funkcji, że trudno jest przeprowadzić dokładne testy regresji. Jak najlepiej rozwiązać ten problem? Chciałbym mieć automatyczne testy interfejsu użytkownika, ale są one kruche. Bardzo chciałbym, aby nasi testerzy testowali każdą funkcję za każdym razem, gdy wdrażamy nową funkcję, ale zajęłoby to wieczność i wydaje się niepraktyczne. Chciałem ocenić, jak robią to inne sklepy z oprogramowaniem i jak unikają powtarzających się błędów.


title: Poprawa umiejętności analizy

text: Jestem inżynierem oprogramowania z kilkuletnim doświadczeniem. Jednak uważam, że moje umiejętności rozwiązywania problemów wymagają poprawy. Krótko mówiąc, biorąc pod uwagę fakty A i fakt B mam trudności z dojściem do wniosku X ? Wydaje się, że niektórzy ludzie są w stanie dojść do wniosku X, biorąc pod uwagę fakty A i B, a także pamiętając o uwzględnieniu faktów C, D. Jakich technik używasz, aby poprawić swoje umiejętności rozwiązywania problemów i analizy?


title: Jak działa remote_api Google App Engine

text: Jak rozumiem i może się mylę, ale remote_api GAE pozwala jednej aplikacji na dostęp do magazynu danych innej aplikacji. Będę szczery, nie rozumiem, jak to działa. Przeczytałem artykuł, na który wszyscy lubią wskazywać, ale nadal nie rozumiem, jak można połączyć dwie aplikacje. Czy ktoś może mi to wyjaśnić, może na małym przykładzie lub po prostu wskazać mi samouczek, który to robi?


title: Zmuszanie rejestratora/dołącza do linii wyjściowej zarejestrowanej na niższym poziomie niż obecny?

text: Rozważmy następujący scenariusz: Piszę Dispatcher Servlet, który deleguje przetwarzanie do różnych programów obsługi w zależności od adresu URL żądania; obiekty obsługi, które wcześniej zarejestrowały się dla wzorców adresów URL, podobnie jak serwlety rejestrują się w web.xml. Gdy program obsługi rejestruje lub wyrejestrowuje się dla wzorca, chcę zarejestrować wiersz zawierający akcję i wzorzec; a także bieżące mapowania, dzięki czemu gdy kolejne przetwarzanie żądań rejestruje ostrzeżenie, że żądanie nie zostało przetworzone, mogę wrócić do dzienników i znaleźć mapowania. Pytanie brzmi, jak zapewnić, że wiersze zarejestrowane przez `registerUrlPattern`/`unregisterUrlPattern` faktycznie pojawią się w pliku dziennika: * Wydaje mi się, że te metody powinny rejestrować zmiany mapowania na poziomie INFO, ponieważ jest to rejestrowana dodatkowa INFO. Ale poziom rejestratora to WARN, więc to nie zadziała. Rejestrator otrzymuje wiele innych komunikatów na poziomie INFO, więc nie jest możliwa zmiana jego poziomu na INFO w środowisku produkcyjnym, z wyjątkiem rozwiązywania problemów. * Mógłbym zalogować to na poziomie WARN, ale qa/usability/klient nie lubi pojawiać się takich ostrzeżeń. Przychodzą mi do głowy następujące alternatywy: * Zmień poziom Loggera na INFO podczas rejestrowania tych linii, prawdopodobnie dodając metodę `forceInfo` w moim Loggerze (która otacza standardowy logger typu log4j) * Użyj innego Loggera dla tych metod i ustaw jego poziom na INFO * Zaloguj się na poziomie ostrzeżenia, ale zmień język, aby wskazać, że nie ma się czym martwić


title: Aplikacja internetowa oparta na bazie danych, znaczenie C# Front-End i F# Back-End

text: Cześć Jestem stażystą pracującym z ASP.NET. Moim obecnym zadaniem jest stworzenie strony internetowej, która będzie zawierała kilka funkcji przeglądania jquery. Wydaje mi się, że ten projekt będzie dotyczył przede wszystkim odczytywania danych z bazy danych i robienia z nich wykresów. Będzie to wymagało ode mnie tworzenia niestandardowych zapytań z tego, na co patrzy klient. Myślę, że będzie to coś, co ten gość nazywa narzędziem do zapytań ad hoc. Moim planem jest stworzenie witryny opartej na bazie danych. Dzięki temu mogę wykorzystać możliwości dynamicznego przeglądania jquery. Natknąłem się na paradygmat programowania funkcjonalnego i znalazłem F#. Czytałem, że ze względu na swój paradygmat programowania funkcyjnego, jest to dobry język do wykonywania funkcji asynchronicznych. Czytałem o tym, jak można to wykorzystać z LINQ to SQL i jak łatwo jest tworzyć zapytania bez faktycznego wprowadzania języka zapytań. Rozumiem koncepcję wzorca projektowego MVC. Ale _**Nie rozumiem, co mają na myśli mówiąc, że C# jest front-endem, a F# back-endem**_. Czy ktoś może mi to wyjaśnić? Co sądzisz o zrobieniu tego projektu w ten sposób? Wszelkie uwagi i przemyślenia są bardzo mile widziane. Czuję, że nauka F# będzie dla mnie wspaniałym doświadczeniem edukacyjnym. Domyślam się, że back-end F# jest jak część, w której kontroluje wywołania do bazy danych. F# jest prawdopodobnie modelową częścią wzorca projektowego. A C# jest kontrolerem. Tak więc HTML, Javascript i Jquery będą moim wzorcem projektowym View. Proszę wyjaśnić?


title: Logowanie, czy to robisz?

text: Wracając do mojego ostatniego tematu: pytań do wywiadu. Niedawno poproszono mnie o opisanie czasu, w którym korzystałem z logowania. Moim pierwszym instynktem było odpowiadanie ostrzeżeniami kompilatora ustawionymi na pełne i błąd. Interesowało go wykorzystanie rejestrowania jako narzędzia do debugowania. Niestety w tym czasie nie mogłem wymyślić żadnego innego oprócz tego, który zostałem przydzielony, ponieważ klienci, którzy mieli problemy z połączeniem z serwerami licencyjnymi i wsparciem, chcieli mieć log. Jednak teraz myśląc jaśniej... zdałem sobie sprawę, że _używałem_ dużo rejestrowania i nadal robię to w małych eksperymentalnych projektach. Nadal używam go podczas tworzenia na systemach Unix, ale nie tak bardzo na Windowsie. Czemu? Ponieważ tak bardzo gardzę Visual Studio i uważam, że ich kompilator jest prawdopodobnie jednym z najgorszych w okolicy (każdego dnia natrafiam na wiele błędów i problemów z nim), debugger był dobry! Gdybym mógł umieścić debugger Visual Studio na plikach wykonywalnych zbudowanych przez gcc, absolutnie bym to zrobił. Dodaj do tego użycie testów jednostkowych, aby skupić się na rzeczach, po prostu nie potrzebowałem zbyt wiele rejestrowania. Z drugiej strony może naprawdę tęsknię. Od czasu do czasu z niej korzystam iw rzeczywistości niektóre rzeczy, które nie są dokładnie „logowane”, wydają mi się bardzo podobne. Na przykład w trybie debugowania niestandardowy widżet, który stworzyłem dla tej aplikacji do rysowania, rysuje kilka dodatkowych wizualnych wskazówek reprezentujących obwiednie i punkty aktywne. Bardzo intensywnie korzystam również z asercji i wyjątków. Mam kilka pozorowanych klas, które "logują", ale nigdy nie są używane w prawdziwym programie. Na przykład mam niestandardowe opakowanie kontekstu rysowania, które pozwala mi używać tego samego kodu rysowania dla różnych interfejsów API interfejsu użytkownika. Mam wersję, która po prostu wypluwa wszystkie polecenia, które otrzymuje, do ciągu, który następnie porównuję z oczekiwanymi wynikami. Używam tego do testu jednostkowego kodu rysowania. Jeśli mam użyć logowania jako narzędzia do debugowania, chciałbym to zrobić w spójny, ustandaryzowany sposób. Z drugiej strony trochę nie potrafię myśleć o jednym. Przypuszczam, że gdybym pisał coś, co otaczało komunikację sieciową i takie, uznałbym, że bardzo potrzebne jest posiadanie dzienników debugowania i różnych wyników gadatliwości. Z drugiej strony piszę dość proste programy UI w porównaniu. Czy korzystasz z logowania? Do czego tego używasz? Jak rejestrowanie wpisuje się w twoje standardy kodowania?


title: Wyszukiwanie zaawansowane Procedura przechowywana

text: Tak więc pracuję nad aplikacją sieci web MVC ASP.NET, która koncentruje się na dużej ilości danych i manipulacji danymi. PRZEGLĄD PROBLEMÓW: Mamy zaawansowane wyszukiwanie z 25 różnymi kryteriami filtrowania. Dla tego wyszukiwania używam procedury składowanej. Procedura składowana przyjmuje parametry, filtruje określone obiekty i oblicza dane zwracane z tych obiektów. Wysyła zapytania do dużych tabel 14 milionów rekordów w niektórych tabelach, filtrowanie i tabele tymczasowe pomogły złagodzić niektóre wąskie gardła dla tych zapytań. PROBLEM: Procedura składowana używana do uruchomienia przez 1 minutę, która tworzy limit czasu zwracający 0 wyników do przeglądarki. Przepisałem procedurę i skróciłem ją do 21 sekund, więc limit czasu nie występuje. Zdarza się to TYLKO tak powolnie przy PIERWSZYM uruchomieniu wyszukiwania, po czym zajmuje to około 5 sekund. Zastanawiam się, czy powinienem przyjąć inne podejście do tego problemu, czy powinienem się martwić o tego typu problem z wydajnością, jeśli nie upłynie limit czasu?


title: Jeśli twój algorytm jest poprawny, czy ma znaczenie, ile czasu zajęło ci jego napisanie?

text: Niedawno dowiedziałem się, że Facebook miał wyzwanie programistyczne, że jeśli zostanie poprawnie wypełniony, automatycznie otrzymasz rozmowę telefoniczną. Jest przykładowe wyzwanie, które prosi o napisanie algorytmu, który może rozwiązać problem typu Wieża Hanoi. Biorąc pod uwagę liczbę kołków i krążków, konfigurację początkową i końcową; Twój algorytm musi określić możliwie najmniej kroków, aby uzyskać ostateczną konfigurację i wyprowadzić kroki. To przykładowe wyzwanie daje ci 45-minutowy limit czasu, ale pozwala nadal testować kod, aby sprawdzić, czy minął po wygaśnięciu limitu czasu. Nie znałem żadnego uroczego rozwiązania matematycznego, które mogłoby to rozwiązać, i nie chciałem go szukać, ponieważ uważam, że byłoby to oszustwo. Więc starałem się sam rozwiązać wyzwanie najlepiej jak potrafiłem. Udało mi się stworzyć algorytm, który zadziałał i przeszedł. Jednak zajęło mi to ponad 4 godziny, znacznie dłużej niż wymaganie 45 minut. Ponieważ zajęło mi to znacznie więcej czasu niż wyznaczony, nie podjąłem się prawdziwego wyzwania. To mnie jednak zastanowiło, w rzeczywistości czy to naprawdę ma znaczenie, że zajęło mi to tak długo? Chodzi mi o to, czy to znak, że nie będę w stanie znaleźć pracy w takim miejscu (nie tylko Facebook, ale Google, Fog Creek itp.) i muszę obniżyć aspiracje, czy fakt, że faktycznie zdałem przy mojej pierwszej próbie, mimo że trwało to zbyt długo, można ją uznać za dobrą?


title: Jak uniknąć rzucania irytujących wyjątków?

text: Lektura artykułu Erica Lipperta na temat wyjątków zdecydowanie otworzyła mi oczy, jak powinienem podejść do wyjątków, zarówno jako producent, jak i konsument. Jednak wciąż walczę o zdefiniowanie wytycznych dotyczących tego, jak uniknąć rzucania wyjątków irytujących. W szczególności: * Załóżmy, że masz metodę Save, która może się nie powieść, ponieważ a) _Ktoś inny zmodyfikował rekord przed Tobą_ lub b) _Wartość, którą próbujesz utworzyć, już istnieje_. Te warunki są oczekiwane i nie są wyjątkowe, więc zamiast zgłaszać wyjątek, decydujesz się utworzyć wersję Try metody, TrySave, która zwraca wartość logiczną wskazującą, czy zapisywanie powiodło się. Ale jeśli to się nie powiedzie, skąd konsument będzie wiedział, na czym polega problem? A może najlepiej byłoby zwrócić wyliczenie wskazujące wynik, rodzaj Ok/RecordAlreadyModified/ValueAlreadyExists? W przypadku integer.TryParse ten problem nie istnieje, ponieważ istnieje tylko jeden powód, dla którego metoda może się nie powieść. * Czy poprzedni przykład jest naprawdę dokuczliwą sytuacją? A może preferowanym sposobem byłoby zgłoszenie wyjątku w tym przypadku? Wiem, że tak to się robi w większości bibliotek i frameworków, w tym frameworku Entity. * Jak zdecydować, kiedy utworzyć wersję Try swojej metody, a kiedy zapewnić jakiś sposób wcześniejszego sprawdzenia, czy metoda będzie działać, czy nie? Obecnie stosuję się do następujących wskazówek: * Jeśli istnieje możliwość wystąpienia sytuacji wyścigu, utwórz wersję Try. Zapobiega to konieczności wyłapania przez konsumenta egzogenicznego wyjątku. Na przykład w opisanej wcześniej metodzie Save. * Jeśli metoda testowania warunku wykonałaby wszystko to, co robi oryginalna metoda, utwórz wersję Try. Na przykład liczba całkowita.TryParse(). * W każdym innym przypadku utwórz metodę testowania stanu.


title: Jeśli ktoś powie Android Message API, z czym to się wiąże? Na jakich zajęciach się składa?

text: Niedawno rozpoczęte programowanie na Androida. Opracowałem 3 aplikacje używające wątków, UI API, telefonii API. Moje pytanie brzmi, czy ktoś mówi, że API wiadomości na Androida, z czym to się wiąże? Na jakich zajęciach się składa? „Właściwie widziałem to w poście na Androida” Dzięki


title: Wskazówki dotyczące tworzenia aplikacji mobilnej z zespołem

text: Obecnie jestem uczniem liceum, zostałem przydzielony do zarządzania grupą w mojej szkole w celu opracowania aplikacji mobilnej i problem w tym, że wszyscy nie mamy doświadczenia w tworzeniu projektu w zespole, a większy problem w tym, że my na przesłanie aplikacji masz tylko do końca miesiąca. Czy mogę uzyskać kilka wskazówek, jak rozwiązać ten problem? Zdecydowaliśmy się również zrobić aplikację w Pythonie z Kivy, znamy Pythona.


title: Dlaczego pliki Coldfusion CFM i CFC nie są w postaci zwykłego tekstu?

text: Uczę się Coldfusion, jednak gdy próbuję otworzyć pliki CFM i CFC, wydają się one nieczytelne. Niektóre dane wyglądają jak kod Java, ale inne wyglądają tak: "¸ aº*3¶ H**´ !½ zY¼S¶". Myślałem, że może to być skompilowane za pomocą Javy, ale http://java.decompiler.free.fr nie wydaje się być w stanie go zdekompilować.


title: Co oznacza „kpiący”?

text: Natknąłem się na ten termin, patrząc na "cechy" PHP (które są najwyraźniej złe, ponieważ między innymi nie można ich wyśmiewać), ale tak naprawdę nie mogę znaleźć definicji tej "możliwości naśladowania". Może to być związane z polimorfizmem? Nie ma nawet wpisu w Wikipedii, który mógłbym znaleźć!


title: Czy istnieje standardowy sufiks nazwy klasy do komunikowania się z usługami zdalnymi?

text: Mój system wykorzystuje wiele różnych zdalnych (tj. internetowych) usług w celu uzyskania danych (głównie). Usługi te znajdują się w różnych systemach wewnątrz firmy (tzn. nie mam nad nimi kontroli). Chcę napisać klasy, które hermetyzują komunikację z tymi usługami (na zasadzie jeden do jednego). Na przykład jedna klasa, która komunikuje się z CustomerService, jedna, która komunikuje się z AccountService itp. Każda z tych klas używa pojedynczej klasy klienta (np. HttpClient) do rzeczywistej podstawowej komunikacji transportowej. Moje pytanie brzmi, jak nazwałbyś te typy zajęć, które rozmawiają z usługą? ...klienci? konsumenci? adaptery? (Przykład: CustomerService, klasa, która nazwałaby to CustomerServiceClient(?)). Dodatkowe: Jeśli każda z moich klas komunikuje się z usługą zdalną (poprzez klasę HttpClient) i tworzy wewnętrzne DTO z danych typu zdalnego DTO, czy powiedziałbyś, że jest to Adapter?


title: Łączenie dwóch frameworków MVC w projekcie

text: Czy dobrze jest łączyć ze sobą dwa frameworki MVC w projekcie? Czy to dość powszechne podejście? Zastanawiam się nad użyciem frameworka po stronie serwera, takiego jak **CodeIgniter/Laravel** i frameworku po stronie klienta **AngularJS** w projekcie sieci web głównie opartym na CRUD. Jestem trochę zaniepokojony tym pomysłem. Myślę, że takie podejście nie pozwala na najlepsze wykorzystanie obu frameworków i może przeszkadzać sobie nawzajem, czyniąc aplikację niepotrzebnie skomplikowaną. Czy istnieją dobre podejścia/praktyki, jeśli chce się połączyć te ramy razem?


title: Czy to normalne, że mamy „mini” dział IT w dziale firmy?

text: Firma, w której pracuję, ma bardzo przyzwoity dział IT, który zapewnił _prawie_ wszystko, czego potrzebujemy od działu IT. Zresztą ze względu na charakter pracy w moim dziale (niezwiązany w żaden sposób z informatyką) czasami potrzebujemy jakichś aplikacji, aby ułatwić nam pracę, te małe aplikacje (jeśli mają być wykonane przez dział IT) będą używane tylko przez nasz dział w małym zakresie i z dużą ilością zmian od czasu do czasu, więc dział IT z tych powodów, a także ze względu na to, że nie wie zbyt wiele na temat charakteru naszej pracy, nie jest zainteresowany tworzeniem takich aplikacji do nasz dział. Na szczęście w tym dziale jest dwóch facetów, którzy wiedzą, jak programować (powiedzmy, że mają średnie umiejętności), zaczynają tworzyć małe aplikacje w wolnym czasie (w pracy) i aktualizują je, aby pomóc pracownikom naszego działu w zakresie produktywności , wszystko jest w porządku i wszyscy są zadowoleni, także, że od czasu do czasu dostajemy jakieś problemy z działu IT (co myślę, że jest normalne). Jedynym powodem, dla którego dział IT tego nie blokuje, są menedżerowie, którzy wspierają te aplikacje, ponieważ ułatwiają im życie. Można powiedzieć, że dział IT jest neutralny wobec tych aplikacji, o ile są one wystarczająco bezpieczne. Czy to normalne w firmach? dział (lub zespół) „mini IT” wewnątrz działu w firmie, który nie zajmuje się głównym działem IT dotyczącym tych aplikacji, również są to aplikacje instalowane w sieci firmowej i generalnie oceniane przez dział IT pod kątem bezpieczeństwa . Czy to normalne? czy to brzmi dziwnie? Uwaga: te aplikacje nie są czymś, jeśli ich zgubienie spowoduje problem dla firmy lub coś w tym rodzaju. Mają one wyłącznie pomóc w produktywności.


title: Kto tworzy zwinną definicję done (DoD)?

text: Uważam, że „Definicja ukończenia” jest **tworzona** przez **Zespół**, a „Kryteria akceptacji” są tworzone przez **Klienta**. Mam rację? Czy klient może zdefiniować definicję ukończenia dla zespołu zwinnego?


title: Jakie są alternatywy dla zagadnień przekrojowych innych niż programowanie aspektowe?

text: Programowanie zorientowane aspektowo obiecuje uporać się z problemami przekrojowymi, ale nie jestem jeszcze w pełni sprzedany. Czy były jakieś inne próby poradzenia sobie z tym problemem?


title: Programowanie jako rozmowa

text: Często zastanawiałem się, czy dałoby się napisać język programowania, który działałby jako rozmowa. Powiedziałbym komputerowi, że chcę przechowywać współrzędne, a on zapytał, jakiej reprezentacji użyję. Następnie poprosiłbym o znalezienie najkrótszej ścieżki między punktami i zapytałbym, czy chcę użyć Djkstry, brutalnej siły, czy użyć Floyda? Jakie badania przeprowadzono w celu stworzenia takiego systemu?


title: Który produkt jest lepszy: ADFSv2, Ping Identity, CS Siteminder?

text: Porównuję różne STS dla uwierzytelniania opartego na oświadczeniach i próbuję, kiedy należy użyć każdego z nich. Wydaje się, że ADFSv2 powinien być używany we wszystkich środowiskach Windows. Ping i Siteminder są bardziej dla Uniksa... chociaż przedstawiciel handlowy powiedział, że Ping jest lepszy dla Windows, tak naprawdę nie rozumiałem "dlaczego" Wszelkie informacje porównawcze są bardzo mile widziane!


title: Jak obsługiwać różne wersje API

text: Piszę Rest API i zastanawiam się, jak najlepiej poradzić sobie z obsługą różnych wersji. Nie mam na myśli tego, jak zdefiniować URI jako V2 lub V3, ale raczej jak ustrukturyzować kod, biorąc pod uwagę, że musiałby on: * Wspierać wiele wersji w tym samym czasie, np. URI V1 i V2 i V3 muszą być aktywne w tym samym czasie. Odszedłbym na emeryturę V1, gdy powiedzmy, że pojawi się V4, aby ograniczyć ilość obsługiwaną w dowolnym momencie. * Unikaj jak największej duplikacji kodu * Ułatw dodawanie trwałych zmian do wersji, bez wpływu na inne wersje Wygląda na to, że istnieje kilka metod, które można zastosować: * Użyj Git do kontrolowania wersji, z gałąź dla różnych wersji (i stare wersje zasadniczo nie mają na nich żadnych nowych prac programistycznych). Oznaczałoby to brak powielania kodu, ponieważ w kodzie znajduje się tylko najnowsza wersja, ale poprzednie wersje musiałyby współpracować z nową wersją bazy danych, dopóki nie zostaną wycofane. * Zduplikuj kod, aby każda wersja była obsługiwana w tej samej aplikacji i miała całkowicie oddzielną ścieżkę kodu, ale oznaczałoby to wiele duplikacji * Ponowne użycie dużej ilości kodu w różnych wersjach, ale utrudniłoby to utrzymanie zmiana jednej wersji z większym prawdopodobieństwem wpłynie na poprzednią. Czy istnieje jakaś najlepsza praktyka radzenia sobie z tym problemem, ponieważ wydaje się, że wszystkie opcje mają swoje własne problemy?


title: Tworzenie GUI w C#/C++ bez przeciągania i upuszczania?

text: Obecnie programuję Javę, wcześniej bawiłem się C++, ale nigdy nie dotknąłem GUI, ponieważ czuję się "jak oszustwo" podczas korzystania z jego systemu przeciągania i upuszczania. Czuję się dobrze i lubię programować własne GUI, tak jak robię to w Javie, jest to o wiele bardziej satysfakcjonujące. Czy jest jakiś sposób na zaprogramowanie GUI dla C#/C++ jak w Javie, bez systemu przeciągania i upuszczania, a jeśli tak, czy ktoś mógłby mi polecić samouczek (wiele samouczków korzysta z systemu przeciągania i upuszczania)? Do tej pory próbowałem to zbadać i naprawdę nie mogę znaleźć zbyt wiele wyjaśnienia, jak to zrobić.


title: Prosty generator diagramów drzewa zależności

text: Mam potrzebę stworzenia prostego diagramu drzewa zależności. Dane wejściowe będą miały następujący prosty format: ITEM_NAME DEPENDENCY ---------------------------- ITEM_101 ITEM_75 ITEM_102 ITEM_77 ITEM_102 ITEM_61 ITEM_102 ITEM_11 oznacza, że ITEM_101 zależy od ITEM_75, a ITEM_102 zależy od pozycji ITEM_77, ITEM_61 i ITEM_11. Zatem diagram miałby elementy ELEMENT_77, ELEMENT_61 i ELEMENT_11 na jednym poziomie pionowym, a ELEMENT_102 znajdowałby się pod nim z linią łączącą każdą z trzech zależności z ELEMENT_102. To samo byłoby dla ITEM_101, ITEM_75 byłby gdzieś nad nim i byłaby łącząca go linia. W prawdziwym świecie to drzewo reprezentuje hierarchię planowania zadań. Mamy bardzo rozbudowaną hierarchię automatyzacji obciążeń w programie „Autosys” i słyszałem, że jego narzędzie front-end ma coś w rodzaju tej wizualnej reprezentacji drzewa, jednak z jakiegoś powodu to narzędzie zostało wyłączone przez administratorów. Moi użytkownicy biznesowi chcą widzieć tę hierarchię w łatwym do użycia formacie. Miałem nadzieję, że nie będę musiał programować czegoś takiego od zera, ponieważ wydaje się to dość powszechnym wymogiem raportowania, a dane wejściowe są po prostu sformatowane. Moje pytanie brzmi: czy istnieje narzędzie FOSS, które pobiera ustandaryzowane dane wejściowe i tworzy takie hierarchiczne drzewo? Dziękuję


title: Jak zmutować wartość w algorytmie genetycznym przy użyciu rozkładu Gaussa?

text: Czytałem „Wprowadzenie do algorytmów ewolucyjnych”. Ta metoda jest podana, ale nie została opisana, i nie mogę znaleźć nic bardziej konkretnego w Internecie. s.44/45 2. edycji w celach informacyjnych. „dodanie do bieżącej wartości genu ilości losowo wylosowanej z rozkładu Gaussa ze średnią zerową i odchyleniem standardowym określonym przez użytkownika” Byłoby wspaniale uzyskać krok po kroku, od wartości początkowej do zmutowanej, w tym jak działa rozkład Gaussa (lub link do czegoś, co mogłoby tę lukę wypełnić). Dziękuję!


title: Wzorzec architektoniczny mikrojądra i możliwość zastosowania w aplikacjach biznesowych

text: Zajmujemy się tworzeniem konfigurowalnych aplikacji internetowych. Mamy główny zespół, który zapewnia coś, co nazywamy **podstawową _platformą_** (zapewnia takie usługi, jak bezpieczeństwo, rozliczenia itp.), na którym tworzone są **podstawowe _produkty_**. Te podstawowe produkty to rozwiązania specyficzne dla branży, takie jak telekomunikacja, usługi komunalne itp. Te podstawowe produkty są później wykorzystywane przez inne zespoły do tworzenia **_specyficznych_ rozwiązań dla klienta** w określonej branży. Do tej pory mamy luźną separację między platformą a produktem podstawowym. Rozwiązania specyficzne dla klienta są tworzone przez dostosowanie 20-40% podstawowej oferty i przepakowanie. Podstawowa platforma i podstawowe produkty są wydawane razem jako monolityczne aplikacje (ucho). Zamierzam zaimprowizować obecną sytuację, aby istniała czystsza separacja tych 3. To pozwala nam ewoluować każdą z tych 3 osobno itd. Przeczytałem architekturę Mircokernel i poczułem, że mogę zastosować zasad w moim kontekście. Ale większość moich czytań na temat tego wzorca jest zawsze w kontekście systemów operacyjnych lub serwerów aplikacji itp. Zastanawiam się, czy są jakieś przykłady, w jaki sposób ten wzorzec był używany do projektowania aplikacji biznesowych. Możesz też podać jakiś wgląd w to, jak zastosować ten wzór do mojego problemu.


title: Czy sklep Windows 8 obsługuje tylko system Windows RT?

text: Jestem w projekcie stworzenia silnika gry i ostatecznie gry, i potrzebujemy pomysłów, jak umieścić naszą grę w Internecie. Wpadłem na pomysł, aby umieścić go w sklepie Windows 8 za niewielką opłatą (lub za darmo) w celu wydobycia wiadomości, ale **czy sklep Windows 8 obsługuje tylko aplikacje zaprogramowane w systemie Windows RT?** Nasza gra będzie wbudowany w C++ / OpenGL / GLEW / Actionscript / GLM / etc., więc nie będziemy w ogóle korzystać z żadnej funkcjonalności Windows RT.


title: Tabela Entity-Attribute-Value vs pojedyncza tabela do przechowywania postów, wydarzeń i stron

text: Staram się zdecydować, czy po prostu używać pojedynczych tabel z większą liczbą pól do przechowywania postów, stron i wydarzeń, czy używać tabel z podstawowymi polami plus posiadanie tabel EAV również dla pól, które są opcjonalne. Ponadto EAV pozwoliłoby na dodanie większej liczby „atrybutów” do każdego podmiotu bez faktycznej zmiany bazy danych (tylko nieznacznie zmieniając kod aplikacji). Martwię się jednak o wydajność. Czy EAV zmniejszy wydajność w takim scenariuszu (przechowywanie danych, takich jak zdarzenia)? Poza tym, czy warto dodać do bazy tabelę EAV, taką jak event_meta, na wypadek, gdybym musiał później dodać dodatkowe pola/atrybuty do modelu (gdy zmienią się specyfikacje i trzeba będzie rozbudować system)? Obecnie przychodzą mi do głowy dwie opcje: 1. Nieużywanie tabel EAV i posiadanie pojedynczych tabel dla każdego typu encji (posty, strony i zdarzenia) oraz posiadanie wszystkich danych (około 15 pól) w tabeli encji. 2. Używaj tabel EAV do przechowywania opcjonalnych danych, które zwykle nie są wprowadzane przez użytkowników (zapobiega to posiadaniu wielu pustych pól w tabelach encji), ale przechowuj wszystkie wymagane i kluczowe dane w tabelach encji. Ponadto w przypadku opcji drugiej mogę mieć tylko jedną ogólną tabelę „posty” zamiast 3 postów w tabelach, stron i zdarzeń i po prostu użyć większej liczby wierszy atrybutów w tabeli EAV (i mieć pole typu w postach stół). Jednak prawdopodobnie jeszcze bardziej obniżyłoby to wydajność. Opcja 1 jest znacznie łatwiejsza do wdrożenia. Jednak opcja 2 może ułatwić rozbudowę jednostek w przyszłości, ponieważ baza danych nigdy nie będzie musiała być dostosowywana. Kolejną ważną rzeczą do rozważenia jest wydajność. Co się dzieje, gdy mamy miliony wierszy w event_meta. Za każdym razem, gdy ktoś oglądałby zdarzenie, aplikacja musiałaby wykonywać zapytania na obu tabelach, co byłoby dość duże i obawiam się, że zmniejszyłoby to wydajność. Więc jakiej opcji powinienem użyć w mojej sytuacji?


title: Ustawienia aplikacji, status i więcej jako Singleton?

text: Jestem stosunkowo nowy w programowaniu (teraz 1 rok doświadczenia w terenie) i myślę, że nadużywam wzorca singleton i potrzebuję informacji, jak to zrobić w lepszy sposób. W tej chwili używam singletonów jako wymówki dla statycznych danych globalnych. Używam singletona do Statusu Aplikacji, Ustawień Aplikacji, a także dużo dla "Menedżerów". Zasadniczo są to wszystkie obiekty, które są potrzebne różnym częściom mojej aplikacji. Myślę, że ten wzór ułatwia tworzenie jednego obiektu i wstrzykiwanie go do wszystkich części, które tego potrzebują. Jakieś wady tego podejścia? Jakieś sugestie w tej sprawie?


title: Używanie pojedynczych znaków dla nazw zmiennych w pętlach/wyjątkach

text: Odbyłem kilka dyskusji ze współpracownikiem na temat użycia jednoliterowych nazw zmiennych w pewnych okolicznościach w naszej bazie kodu, z czym oboje się nie zgadzamy. On opowiada się za bardziej rozbudowaną konwencją nazewnictwa, a ja nie. Moim zdaniem są trzy scenariusze, w których używam jednoliterowych nazw zmiennych: * **Loops** \- `i` `for(int i = 0; i < 10; i++) { ... }` * **Lambda wyrażenia w C#** \- `x/y/z`: `.Where(x => x == 5)` * **Wyjątki** \- `e`: `try { ... } catch(ExceptionType e) { /* użycie 'e' */ }` To są **tylko** scenariusze, w których bym go używał, i oczywiście używam bardziej szczegółowych konwencji nazewnictwa gdzie indziej. Kolega wysunął następujące argumenty za wyjątkami i pętlami: * `i` \- to nic nie znaczy. * `e` \- to najpopularniejsza litera w języku angielskim. Jeśli chciałbyś przeszukać rozwiązanie pod kątem wyjątków, znalazłbyś wiele niepożądanych wystąpień `e`. Akceptuję te argumenty, ale odpowiadam, że jeśli ktoś nie wie, co oznacza `i` w pętli for, to prawdopodobnie nie powinien być programistą. Jest to bardzo powszechny termin na pętle i wyjątki, podobnie jak `e`. Wspomniałem również, że jeśli ktoś chce, może w przypadku wyjątku wyszukać „złap”. Zdaję sobie sprawę, że jest to subiektywne, ale wtedy można by argumentować, że standardy kodowania są właśnie tym - opiniami, aczkolwiek opiniami naukowców. Byłbym szczęśliwy i prześlę mu wyniki, ale wolałbym, abyśmy (nasza firma) nadal używali jednego standardu kodowania, zamiast mieć dwóch programistów z różnymi opiniami na temat tego, czego użyć.


title: Kiedy muszę korzystać z replikacji sesji?

text: Pracuję przy wielu projektach internetowych dla firmy. Większość projektów to jedna lub dwie strony danych wejściowych, a następnie zapis do bazy danych MySQL. Moi administratorzy systemu starają się, aby replikacja sesji działała w JBoss, ale tak naprawdę nie widzę żadnej potrzeby i całego jej obciążenia. Potrzebujemy równoważenia obciążenia i klastrowania, więc jeśli serwer przestanie działać, możemy przenieść nowe żądania na serwer zapasowy, ale nie jestem zbyt duży w replikacji sesji. To są bardzo małe projekty. Moim zdaniem, jakie są szanse, że użytkownik znajdzie się w projekcie, gdy serwer przestanie działać na jednej lub dwóch stronach? Staram się przekonać administratorów systemu, że replikacja sesji jest w tym przypadku niepotrzebną komplikacją. Czy w mojej sytuacji powinienem używać replikacji sesji? Jeśli nie, jakie są najlepsze powody, aby z niego nie korzystać, aby przekonać administratorów systemu?


title: Czy to błąd, czy zadanie, gdy coś jeszcze nie działa w procesie rozwoju?

text: Zazwyczaj mamy ten dylemat w naszym zespole. Czasami, aby zrealizować zadanie lub historię, przekonujemy się, że system musi być w określonym stanie. Na przykład, należy wcześniej wykonać konkretną konfigurację systemu. Zadanie / historyjka może zostać ukończona i działa zgodnie z opisem z odpowiednią konfiguracją. Zauważ, że konfiguracja nie jest bezpośrednio związana z zadaniem. Następnie musimy stworzyć nowy ... ??? ... coś dla procesu generowania tego pliku konfiguracyjnego. Tu pojawiają się problemy. Niektórzy mówią, że jest to _błąd_, inni mówią, że jest to _zadanie_ lub dodatkowa _funkcja_. Więc gdzie jest granica między błędami a zadaniami w fazie rozwoju? Czy powinniśmy nawet uznać coś za błąd, jeśli wszystkie zadania działają zgodnie z ich definicjami? Czy rzecz można uznać za błąd, ponieważ porównuje się ją z obecnym (niestabilnym) stanem systemu? _Krótki przykład_ : * Funkcja wymaga skonfigurowania usługi komunikacyjnej dla określonej operacji. * W trakcie wdrożenia zespół odkrywa, że usługa wymaga, aby nazwy hostów gruszek były możliwe do rozwiązania na adres IP. * Zespół dodaje nazwy hostów do serwera DNS (lub hostuje pliki) i kontynuuje wdrażanie wymaganej funkcji. * Po uruchomieniu początkowej funkcji pojawia się pytanie. Czy administrator powinien skonfigurować plik DNS lub hosts, czy nasza aplikacja powinna to zrobić automatycznie? * Możliwe jest rozwiązanie automatyczne. Podjęta zostaje więc decyzja o jego wdrożeniu. * ... tutaj rozpocznij dyskusje ... czy to błąd, czy dodatkowa funkcja / zadanie? PS: Wiem, że w pytaniu pomieszałem funkcję/zadanie/historię. To jest zamierzone. Interesuje mnie oddzielenie błędów od reszty. Nie ma znaczenia, co _reszta_ oznacza w konkretnym przypadku.


title: Jak przechowywać dane dla aplikacji Windows Store?

text: Posiadam aplikację, która wymaga ode mnie zapisywania danych do bazy danych nie znajdującej się na komputerze użytkownika. Które podejście jest najlepsze do zapisywania i uzyskiwania dostępu do danych w tym scenariuszu? Normalnie używałbym Entity Framework i MS Sql Server, ale wydaje mi się, że nie jest to opcja dla aplikacji ze sklepu Windows.


title: Opłacalny, wieloplatformowy sprzęt mobilny/usługa komórkowa

text: Jaka jest zalecana strategia przejęcia w przypadku posiadania wieloplatformowych urządzeń z dostępem do usług dla programistów mobilnych? Czy konieczne jest posiadanie oddzielnych numerów telefonów i planów usługowych dla każdej platformy? Domyślam się, że posiadanie telefonów Droid, iPhone i Windows 7 na tym samym planie i tym samym numerze telefonu jest niedostępne.


title: Jak mam wyczucie projektowania wizualnego jako programista?

text: Przez ostatnie lata programowania internetowego zauważyłem, jak kiepsko sobie radzę z projektowaniem rzeczy. Mam dużą wiedzę na temat HTML i CSS, potrafię sprawić, by strona wyglądała tak, jak chcę, mam dość dużą wiedzę na temat użyteczności. Moim jedynym problemem jest to, że nie potrafię zaprojektować strony internetowej ani nawet jej elementu, aby wyglądała dobrze i solidnie. Albo kolory są złe, albo odstępy, przez większość czasu nie mogę tego określić, ale za każdym razem coś jest nie tak. Jak mogę uzyskać lepsze wyczucie spraw projektowych, takich jak komponowanie lub kolorowanie? Czy mógłbyś polecić jakieś książki, artykuły, a może szkolenia?


title: Planowanie rozwoju w przypadku badań naukowych

text: Drodzy koledzy programiści, jak robicie „planowanie oprogramowania”, gdy w grę wchodzą badania naukowe? Na marginesie, jak przekonać szefa, że pisanie oprogramowania **nie** przypomina budowanie domu, a raczej pisanie powieści? Krwawe szczegóły znajdują się poniżej. Kieruję małym zespołem deweloperskim pracującym w laboratorium badawczym. Zaczęliśmy tworzyć oprogramowanie, którego celem było upublicznienie pewnego dnia (tj. sprzedawanie i zarabianie na tym). Takie oprogramowanie jest uzależnione m.in. od co najmniej dwóch niezależnych linii badawczych, czyli od co najmniej dwóch doktoratów. kandydatów, którzy, miejmy nadzieję, pewnego dnia wyjdą z działającą implementacją tego, czego potrzebujemy. Główne oprogramowanie zależy również od innych, bardziej konkretnych zasobów, którymi my jako programiści możemy się zająć: renderowaniem grafiki, deformacjami miękkich ciał itp. Mój szef poprosił mnie o napisanie specyfikacji, wymagań ORAZ cholernego wykresu GANTTA całego projektu. W obliczu faktu, że nie mam pojęcia o części badawczej, a takie badania są fundamentalne dla oprogramowania, powiedział: „zrób założenia”. Dla jasności argumentacji jest profesorem, którego doktorat. studenci powinni wymyślić potrzebne nam badania. A wywodzi się ze stricte inżynierskiego zaplecza: najpierw wszystko zaplanuj, spisuj specyfikacje, a dopiero potem napisz kod, że „to już ostatnia część”. Co teraz robię: 1. Podzieliłem produkt na cechy; każda „cecha” jest de facto osobnym produktem; 2. Każda funkcja jest zbudowana na poprzedniej; 3. Gdy funkcja (A) ma działający prototyp, zespół może rozpocząć pracę nad następną funkcją (B), podczas gdy kontrola jakości jest wykonywana dla funkcji A (jeśli pozwalają na to pieniądze, można wprowadzić więcej osób itp.); 4. Cechy zależne od badań będą ostatnie: do tego czasu, miejmy nadzieję, część badawcza zostanie zakończona ( _kiedy_ jest jeszcze duże pytanie); Ustawiłem też zespół, aby używał SCRUM do rozwoju „wersji 1.0”, która ma się ukazać za kilka miesięcy. Termin ten można było ustalić na podstawie rozsądnych założeń: wymieniliśmy wszystkie wymagane funkcje, policzyliśmy naszą dostępność i podaliśmy rozsądne szacunki. Więc moje pytania, znowu, brzmią: * Jak uszczęśliwić mojego szefa, a jednocześnie wyciągnąć coś za drzwi? * Jak mam napisać _specyfikacje_ czegoś, czego my - deweloperzy - nie mamy pojęcia, czy jest to możliwe, czy nie? (Nadal nie zdecydowaliśmy, których bibliotek użyć do niektórych zadań; zrobimy to, kiedy będzie trzeba) * Jak uzyskać _wymagania_ na to, biorąc pod uwagę, że nie ma jeszcze klientów ani inwestorów, po prostu dużo interesy i obietnice? * Jak uzyskać pokój na świecie? Jestem pewien, że przynajmniej na jedno z moich pytań uzyskam odpowiedź :) ps: Piszę to anonimowo, ponieważ potencjalny inwestor może odnieść odwrotny skutek, jeśli zostanie to odkryte. Mam nadzieję, że zrozumiesz. Muszę jednak powiedzieć, że nie podoba mi się ta mentalność „ukrywania prawdy”: ten program prawdopodobnie przyniesie wiele korzyści, a brak możliwości mówienia o tym otwarcie (z dołączonym nazwiskiem i reputacją) wydaje się cenzurą. Ale niestety, teraz bardziej zależy mi na twoich sugestiach.


title: Najlepsze rozwiązanie dla dużych transakcji bazodanowych

text: Mam proces COBOL CICS uruchomiony w starszym systemie mainframe. Proces wykonuje ponad 2K DML w wysoce współbieżnym środowisku bazy danych. Po każdej operacji CRUD wynik jest używany do wykonania dalszych obliczeń, po których następują ponownie operacje CRUD. Cały ten proces przebiega w ramach bloku transakcji, tak że jakiekolwiek niepowodzenie przed jego pomyślnym zakończeniem powoduje wycofanie całego zestawu zmian w bazie danych, tylko po pomyślnym zakończeniu każdego kroku w procesie do końca następuje zatwierdzenie. Program w języku COBOL jest napisany w taki sposób, aby nie zużywał więcej niż 20 nieparzystych sekund na jego zakończenie lub niepowodzenie, aby inny proces nie głodował zasobów DB (blokady, blokady itp.) z powodu ogromu tej transakcji. Teraz zlecono nam udostępnienie tej starszej aplikacji jako usługi internetowej Java SOAP. Mam trzy podejścia: 1. Warstwa usługowa mojego kodu Java wysyła wiadomość do kolejki z parametrami wejściowymi, istniejący już program w języku COBOL pobiera wiadomość z kolejki i wykonuje transakcję. Warstwa Java pinguje kolejkę asynchronicznie i gdy otrzyma wynik z procesu COBOL, odsyła go z powrotem do kontrolera. 2. Napisz procedurę składowaną, która naśladuje zadanie wykonane przez proces COBOL, w tym transakcję DB i wywołaj tę SP z warstwy Java Service. 3. Napisz logikę biznesową wewnątrz warstwy Java Service/DAO oraz transakcje wewnątrz bloku transakcyjnego Spring. Biznes nie chce podejścia nr 1, ponieważ oznacza to zależność od starszego programu COBOL. Mam tutaj dwie wątpliwości: 1. Rozumiem, że SP są lepsze z punktu widzenia wydajności. Ale czy SP będzie w stanie obsłużyć 2K lub więcej nieparzystych DMLs w ramach bloku transakcji i wykonać zadanie w czasie co najmniej równym czasowi, jaki zajmuje proces COBOL? Jeśli tak, to czy będzie wystarczająco wydajny w blokowaniu i zwalnianiu zasobów DB, ponieważ DB jest wysoce współbieżny i nie chcę, aby inne procesy były z tego powodu głodowane. 2. Nigdy nie przeprowadziłem transakcji DB tej wielkości z kodu Java i wątpię, czy blok transakcji Spring może skutecznie przechowywać 2K DMLs w jednym bloku. Nawet jeśli tak, to jestem pewien, że nie dorównałby szybkością COBOL-owi lub SP, stąd może blokować rekordy itp. i zagłodzić inne procesy, które muszą mieć do nich dostęp przez długi czas. Transakcje nie znajdują się w konkretnej tabeli DB, są one podzielone na 20 nieparzystych różnych tabel zawierających krytyczne dane finansowe. Myślałem o złamaniu dużej liczby operacji CRUD w kawałkach bloków transakcyjnych Spring, ale wtedy byłoby ogromnym zadaniem zakodować całą logikę wycofywania w Javie, ale to w porządku, moim głównym zmartwieniem jest blokowanie innych procesów z DB dostęp w międzyczasie. Jestem programistą Java ze słabą znajomością RDBMS i praktycznie bez znajomości języka COBOL. Byłbym wdzięczny, gdyby ktoś pomógł mi wskazać właściwy kierunek, abym sam znalazł rozwiązanie.


title: Czy powinienem aktualizować posty na blogu, czy przepisywać je w miarę zmian technologii (i mnie)?

text: Zacząłem bloga programistycznego na początku tego roku i odkąd go zacząłem, pewne rzeczy się zmieniły. Niektóre zmiany wynikają ze zmiany technologii, niektóre są spowodowane poprawą moich bibliotek kodu, a niektóre (ok, prawdopodobnie większość) są spowodowane zmianami w miarę uczenia się więcej. Chcę wrócić i całkowicie przepisać niektóre posty na blogu. Czy lepiej jest przepisywać posty, aby usuwać stare informacje i aktualizować je nowymi, czy tworzyć zupełnie nowe posty i ewentualnie usuwać stare? Nie mówię o małych zmianach w kodzie, czy kilku dodatkowych zdaniach, ale o całkowitym przepisaniu z nowym kodem, nowymi informacjami itp. Należy wziąć pod uwagę komentarze pod postem, subskrybenci, którzy otrzymują aktualizacje, gdy tworzone są nowe posty, i zakładki użytkownika.


title: Tworzenie aplikacji HTML5 na Androida i iOS

text: Sprawdzałem samouczek wideo na temat HTML5 przy użyciu programu Dreamweaver do tworzenia aplikacji na Androida i iOS (przy użyciu Phonegap) i wyraźnie wspomniałem, że potrzebujesz komputera Mac do debugowania i symulacji dla iPhone'a, iPoda itp. Czy można to obejść? Naprawdę chcę tworzyć aplikacje na iOS i Androida (więcej iOS) przy użyciu HTML5, ale muszę wiedzieć, że jeśli tworzysz aplikację w HTML5 i debugujesz ją w środowisku Androida, czy nadal jest przenośna na iOS? Przepraszam, jeśli to pytanie wydaje się nieco ignoranckie, ale żadne z moich wyszukiwań w Google nie zwraca wyników, które odpowiedziały na moje pytanie. Może nawet nie zadaję właściwego pytania.


title: Jakie zalety mają proste edytory tekstu, takie jak TextMate, nad programowaniem Eclipse for Java?

text: Jestem rozdarty, którego IDE użyć. Moc zaćmienia lub prostota TextMate. Zastanawiam się, który z nich ma konkretną przewagę nad drugim, jeśli chodzi o produktywność.


title: Czy istnieje kanoniczna książka o programowaniu symulacyjnym?

text: Zainteresowałem się pisaniem symulacji opartych na życiu w języku C. Próbowałem znaleźć zasoby online i książki, ale niczego nie znalazłem. Czy istnieje książka, która jest de facto standardem opisującym najlepsze praktyki, metodologie projektowania i inne przydatne informacje dotyczące programowania symulacji? Co w tej książce czyni ją wyjątkową?


title: Jak radzić sobie z błędami w środowisku API

text: Omawiamy najlepszy sposób obsługi błędów w wywołaniach metody. Mamy model kredytowy, w którym pozwalamy użytkownikom odliczać kredyty za określone działania. Chcielibyśmy zadzwonić do: User.DeductCredits(10); Następnie metoda Deduct sprawdzi rzeczy takie jak 1. Czy użytkownik istnieje? 2. Czy użytkownik jest aktywny? 3. Czy użytkownik posiada co najmniej 10 kredytów? Jeśli nie, ten wynik powinien się nie powieść. Obecnie piszemy to tylko jako bibliotekę klas, ale staramy się pozostawić ją otwartą, aby w przyszłości przekonwertować ją na usługę internetową. Opcje, które omówiliśmy do tej pory to: 1. Zrzuć wyjątek, gdy wystąpi błąd. 2. Utwórz nowy obiekt Result, w którym T będzie miał typ danych oczekiwanych z powrotem, i opakuj go kodem stanu i komunikatem. Nie spodobała nam się opcja nr 1, ponieważ wtedy kod do wywołania odliczenia kredytów wyglądałby mniej więcej tak: try { user.DeductCredits(10); } catch(InvalidUserException e) { } catch(InactiveUserException e) { } catch(CreditBalanceException e) { } Dodatkowo, jeśli włączymy to do usługi, nie możemy wymusić wyjątków na użytkowniku. Głównym powodem, dla którego nie spodobała nam się opcja nr 2, było to, że wydawała się zwracać więcej danych, niż potrzebujemy. Na przykład: var adres = user.GetMailAddress(); Teraz adres ma kod statusu i komunikat, a także właściwość danych lub właściwość wartości. Aby uzyskać miasto, miałbyś kod taki jak: if(!address.HasError) state = address.Data.State; w przeciwieństwie do: stan = adres.Stan; Czy istnieje zatem najlepsza praktyka w tego typu sytuacjach? Czy jedna opcja jest naprawdę lepsza od drugiej?


title: Gdzie mogę znaleźć zlokalizowane informacje o naszej branży?

text: Pytania takie jak „Jakie prace są dostępne w Houston” lub „Za co deweloperzy zarabiają w Londynie” są tutaj notorycznie nie na temat. Moje pytanie brzmi: gdzie są te pytania? Czy jest odpowiednie miejsce w Internecie, w którym mogę zadać tego rodzaju pytania lub przeprowadzić badania nad tym, jak wygląda rynek po drugiej stronie świata? Mając średnioterminowy plan przeprowadzki za granicę, dobrze byłoby wiedzieć, jak może wyglądać potencjalny rynek pracy w moim miejscu docelowym. Różne technologie i produkty dostawców są bardziej popularne w różnych regionach, względne stawki płac są bardzo zróżnicowane, a umiejętności wymagane w różnych branżach (technologia, komunikacja, produkcja, marketing) są bardzo zróżnicowane. Tego rodzaju informacje są bardzo cenne. Gdzie mogę to znaleźć?


title: Standardowe próbki tekstowe

text: Jako przykład muszę użyć długiego tekstu. Następnie za pomocą algorytmu wezmę jego podłańcuch, którego długość jest stała (przekazywana jako parametr), ale startIndex jest losowy, dlatego za każdym razem powinien brać inną część tego tekstu. Jednak, jeśli to możliwe, wziąłbym standardowy tekst jako próbkę do mojej aplikacji. Szukając w internecie prawie zawsze używa się tekstu Lorem Ipsum. Czy można to uznać za „standardowe”, czy jest to standard relacyjny? Dziękuję


title: Podana liczba będąca sumą niektórych z 10 liczb. Jak ustalić, że podana liczba zawiera jedną z 10 liczb?

text: Mam: * dziesięć liczb: +1, +2, +4, +8, +16, +32, +64, +128, +256, +512. * flaga == suma niektórych z tych dziesięciu liczb. Jak ustalić, że suma zawiera 2 lub 32?


title: Zasady SOLID i struktura kodu

text: Na niedawnej rozmowie kwalifikacyjnej nie mogłem odpowiedzieć na pytanie o SOLID \-- poza podaniem podstawowego znaczenia różnych zasad. Naprawdę mnie to wkurza. Zrobiłem kilka dni grzebania i jeszcze nie wymyśliłem satysfakcjonującego podsumowania. Pytanie do wywiadu brzmiało: > Gdybyś miał spojrzeć na projekt .Net, o którym mówiłem, że ściśle przestrzegasz > Zasady SOLID, czego byś się spodziewał w odniesieniu do projektu i > struktury kodu? Trochę się kręciłem, właściwie nie odpowiedziałem na pytanie, a potem zbombardowałem. Jak mogłem lepiej poradzić sobie z tym pytaniem?


title: Czy jest korzyść z kompilowania kodu w miarę postępów?

text: Niedawno odbyłem rozmowę o pracę, podczas której dali mi godzinę na napisanie prawdziwego kodu. Nie była to ogromna ilość, prawdopodobnie mniej niż 100 linijek. Po około 45 minutach skompilowałem, uruchomiłem i uruchomiłem. Być może spędziłem 5-10 minut pracując nad błędami kompilacji i kilkoma drobnymi błędami, ale ogólnie poszło bardzo gładko. (Nawiasem mówiąc, dostałem od nich ofertę.) Jednak zdziwiło mnie to, że po przekazaniu ukończonego kodu ankieter powiedział mi, że jedyną rzeczą, którą zrobiłem źle, było „nie kompilowanie w miarę postępów”. Zapytałem go, jaka jest różnica, a on powiedział „co byś zrobił, gdybyś skończył kod i nie skompilował się na czas”. W moim rozumieniu jest to nieprawidłowy argument, ponieważ „pobieranie kodu do kompilacji” dla danej długości kodu zazwyczaj wiąże się z naprawieniem stałej liczby błędów kompilacji i zajmuje dość stałą ilość czasu, która powinna być taka sama, niezależnie od tego, czy robisz to po sobie dokończ pisanie kodu lub jeśli przeplatasz go czasem kodowania. Jeśli już, przerwanie kodowania w celu wyszukania brakujących średników prawdopodobnie zaszkodziłoby twojej wydajności. Poza ekstremalnymi okolicznościami, kiedy eksperymentuję z niejasnościami wokół przypadków brzegowych, takich jak funkcje wirtualne w klasach pochodnych itp., wydaje się rozsądne oczekiwać, że kod napisany przez doświadczonego programistę będzie się kompilował, bez okazjonalnego błędu w pisaniu, a nawet jeśli nie, to nie jest tak, że musiałbym przepisać część kodu, aby naprawić błąd kompilacji. W innym podobnym incydencie podczas wywiadu otrzymałem niekompletną bazę kodu i poproszono mnie o jej ukończenie i wprowadzenie niezbędnych modyfikacji, aby działał. Zacząłem od przeczytania istniejącego kodu, a potem po kilku minutach (nawet zanim skończyłem przeglądać kod) ankieter powiedział mi, że to wystarczy. Kiedy zapytałem go, co by zrobił (tj. „Co zrobiłem źle”), odpowiedział, że zacząłby od natychmiastowego skompilowania kodu. Dlaczego to jest nawet istotne? Moim zdaniem i z mojego doświadczenia, to, czy fragment kodu się kompiluje, czy nie, jest zasadniczo losowe, obejmuje takie rzeczy, jak brak średników i ma niewiele wspólnego z poprawnością programu bazowego. (Dla mnie skupienie się na kompilacji jest jak sprawdzanie pisowni artykułu bez korekty w celu sprawdzenia gramatyki.) Jeśli dasz mi fragment niekompletnego kodu, pierwszą rzeczą, jaką zrobię, będzie jego przeczytanie. Nawet nie będę próbował go skompilować, dopóki nie dowiem się, co robi kod i nie dowiem się, że algorytm jest poprawny. W każdym razie było to tylko kilka ostatnich incydentów, ale ogólnie słyszałem, jak wielu programistów mówi o kompilowaniu swojego kodu w miarę postępów, a mimo to nikt nie był w stanie powiedzieć mi korzyści z tego płynących. Rozumiem korzyści płynące z _testowania_ kodu w miarę postępów, ale po co kompilować? Więc moje pytanie brzmi: Czy jest coś, co przegapiłem? Czy kompilacja jest rzeczywiście korzystna? A może jest to jakiś mit propagowany przez społeczność programistów, że musisz często kompilować swój kod?


title: Czy jest to antywzorzec modyfikujący przychodzący parametr?

text: Programuję w Javie i zawsze tworzę konwertery mniej więcej tak: public OtherObject MyObject2OtherObject(MyObject mo){ ... Wykonaj konwersję return otherObject; } W nowym miejscu pracy wzorzec to: public void MyObject2OtherObject(MyObject mo, OtherObject oo){ ... Wykonaj konwersję } Dla mnie jest to trochę śmierdzące, ponieważ przyzwyczaiłem się do nie zmieniania parametrów przychodzących. Czy ta nadchodząca zmiana parametru jest antywzorcem, czy jest w porządku? Czy ma jakieś poważne wady?


title: projektowanie w zwinnym procesie

text: Niedawno odbyłem wywiad z zespołem programistów w firmie. Zespół stosuje agile + TDD. Ćwiczenie kodu implementuje wypożyczalnię wideo, która generuje zestawienie obliczające całkowitą opłatę za wypożyczenie dla każdego typu wideo (nowe wydanie, dzieci itp.) dla klienta. Istniejący kod używa obiektów takich jak: * Oświadczenie do generowania wyciągu i opłaty za kalkulację, w której znajduje się instrukcja dużego przełącznika, aby użyć wyliczenia do określenia, jak obliczyć opłatę za wypożyczenie * klient posiada listę wypożyczeń * klasę bazową filmu i klasę pochodną dla każdego typu filmu ( NEW, CHILDREN, ACTION, itp.) Kod pierwotnie nie kompiluje się, ponieważ zakładano, że właściciel został potrącony przez autobus. Oto, co zrobiłem: * przedstawiłem ulepszenie modelu obiektowego, aby mieć większą odpowiedzialność za każdą klasę. * użyj wzorca strategii, aby zastąpić instrukcję switch i wpleść je w konfigurację. Ale zespół twierdzi, że to strata czasu, ponieważ nie ma na to żadnych wymagań, a zestaw testów UAT działa i jest jedyną wskazówką dotyczącą decyzji o architekturze. Podstawową historią jest po prostu udostępnienie funkcji wyceny i niemówienie nic o tym, jak to zrobić. Dyskusja skupia się więc na tym, dlaczego należy poświęcić czas na refaktoryzację instrukcji switch. W moim rozumieniu metodyka zwinna nie oznacza zerowego projektowania z góry i takiego zapachu kodu należy unikać na początku. Również żaden zestaw testów jednostek/UAT nie wykryje takiego zapachu kodu, w przeciwnym razie sonar, findbugs nie będą istnieć. Tutaj chcę zapytać: 1. czy istnieje coś takiego jak projektowanie zwinne w metodyce zwinnej? Podobnie jak dokumentacja zwinna. 2. jak z góry zdefiniować zwinny projekt? jak wiedzieć wystarczy? W moim rozumieniu architektura ballparku i kontrakt danych między komponentami powinny być zdefiniowane przed/po rozpoczęciu projektu, a nie szczegóły. Czy mam rację? 3. Czy ktoś może wyjaśnić, czego tak naprawdę zespół szuka w takiej konfiguracji? czy chodzi o aspekt projektowy czy aspekt zwinny? 4. jak zaimplementować koncepcję minimalnej opłacalności produktu w procesie zwinnym w projekcie w świecie rzeczywistym? Czy to musi, że wstydzisz się być MVP?


title: Jak ważne jest unikanie kolizji nazw między bibliotekami należącymi do różnych domen?

text: Napisałem małą bibliotekę Java typu open source, która ułatwia konwersje między różnymi typami obiektów (w stylu gson Google, ale ogólniej). Wydaje mi się, że ładną naturalną nazwą dla mojej biblioteki jest _JConverter_ , po przejrzeniu sieci w celu sprawdzenia, czy inna biblioteka o tej samej nazwie już istnieje, znalazłem bibliotekę o tej samej nazwie dla Joomla. Moje konkretne pytanie brzmi: jak ważne jest unikanie kolizji nazw podczas tworzenia biblioteki open source, jeśli istniejąca biblioteka o wybranej nazwie już istnieje w zupełnie innej domenie? (w moim konkretnym przypadku są to biblioteki zaimplementowane nawet dla różnych języków).


title: Najlepszy sposób na przechowywanie niewielkiej liczby danych uwierzytelniających użytkownika

text: Pracuję nad aplikacją do obsługi wiadomości, opartą na architekturze serwer/klient. Teraz myślę o sposobie przechowywania poświadczeń użytkownika. Nie jest to ogromna liczba, tylko około 20 wpisów z ich identyfikatorami użytkownika, nazwami użytkownika i zaszyfrowanymi hasłami. Moim zdaniem przechowywanie go na serwerze SQL jest przesadą. Czy lepiej przechowywać go w pliku tekstowym, czy w pliku bazy danych SQLite? Te metody zapewniłyby przenośność serwera i prostą instalację. I czy haszowanie haseł wystarczy, aby utrzymać je w tajemnicy? Jak najlepiej sobie z tym poradzić?


title: OOP : Jakie są sytuacje, w których projektowanie oparte na klasach jest lepsze niż projektowanie oparte na interfejsie?

text: Czytałem stronę JDOM. > Dlaczego JDOM API jest definiowany w kategoriach konkretnych klas, a nie > interfejsów? > > Jason Hunter podsumowuje argumenty przeciwko API opartemu na interfejsach dla > JDOM: > > Dzięki interfejsom wszystko staje się fabryką, elementy muszą być "importowane" > do nowych dokumentów, a nie tylko dodawane, funkcje takie jak długoterminowa > serializacja nie mogą być gwarantowane, a lista jest długa. > > Właściwie zaczęliśmy od interfejsów. Podczas naszego przeglądu przedpremierowego dla niektórych > rówieśników otrzymaliśmy informację zwrotną, że powinniśmy wypróbować konkretne klasy. Zrobiliśmy i > projekt był znacznie lepszy. Jestem początkującym projektantem. Wszystkie rady, o których do tej pory słyszałem, to **_odradzanie_** używania projektowania z użyciem klas betonu. Mogą być używane konkretne zajęcia, które są odpowiednie w niektórych miejscach. Czy są jakieś wspólne problemy z klasami, dla których używanie konkretnych klas w projektowaniu jest w porządku?


title: Jak zlecić obsługę interfejsu użytkownika dynamicznej aplikacji internetowej?

text: Mam aplikację internetową opracowaną przy użyciu Spring i Hibernate, która wykorzystuje REST API i Javascript do wyświetlania i aktualizacji treści. Projekt jest prawie ukończony, ale chcę poprawić wygląd i styl. Będzie to obejmować lepszą grafikę i dodatkowe zachowanie. Chcę zlecić to zadanie freelancerowi przez Internet. Nie mam doświadczenia z outsourcingiem i nie wiem, jak włączyć do projektu osobę z zewnątrz. Chodzi mi o to, że chciałbym uniknąć innych osób, aby uzyskać dostęp do źródła zaplecza, jeśli mogę. Jedyny kod, który chcę zmienić, działa po stronie klienta. Czy to wykonalne? Pomyślałem, że mogę po prostu podać adres URL projektantowi i wymagać od niego użycia narzędzi „Rozszerzonego przeglądania”, takich jak Greasemonkey lub Tampermonkey do pracy nad interfejsem użytkownika. Czy jest to coś, do czego projektanci stron internetowych są przyzwyczajeni lub chcą to zrobić? Czy są jakieś lepsze opcje, aby to osiągnąć? **EDYTUJ** : Podstawowe wymaganie: Na liście znajdują się elementy, które są generowane na bieżąco na podstawie danych JSON, przy użyciu szablonów kierownicy. Chcę, aby te elementy można było usunąć, na przykład po najechaniu myszą na te elementy powinien pojawić się przycisk. Chcę też, żeby te przedmioty wyglądały lepiej. Będzie to wymagało zintegrowania z istniejącym kodem kodu JavaScript, HTML i CSS.


title: W celu C, gdzie kończy się łańcuch dziedziczenia?

text: W celu C klasy są obiektami, ale jaki obiekt jest właścicielem obiektów klasy? Staram się jak najdokładniej zrozumieć programowanie iOS i to pytanie pojawiło się w mojej głowie, więc zdecydowałem, że powinienem znać odpowiedź.


title: Jak wskazać, że klasa może implementować interfejs?

text: Powiedzmy, że mam klasę użytkownika i administratora interfejsu. Niektórzy użytkownicy są administratorami i mogą dzięki temu implementować interfejs. Większość jednak nie jest, więc fałszywe jest stwierdzenie, że „Użytkownik implementuje Administratora”. Jak mogę to przedstawić na diagramie klas? Czy powinienem użyć klasycznej strzałki implementacji, czy istnieje stereotyp klasy, która **może** zaimplementować interfejs?


title: Schemat/Kod do przestrzegania różnych harmonogramów

text: Przyjmujemy leady od wiodących dostawców. Zezwalamy tylko niektórym dostawcom na publikowanie leadów w określonych dniach/o określonych godzinach. Obecnie mamy 3 harmonogramy, ale w przyszłości możemy dodać 1 lub n więcej: 1. Niedziela o 8:00 - piątek o 15:00 - wszystkie godziny pomiędzy. 2. Poniedziałek - Piątek w godzinach 8:00 - 17:00. 3. 24 godziny na dobę, każdego dnia. Ponadto chcemy mieć możliwość jednorazowego korzystania z określonych godzin, więc powiedzielibyśmy niektórym wiodącym dostawcom: „Wiem, że zwykle piszesz od 8:00 do 17:00 od poniedziałku do piątku, ale poniedziałek jest dniem wolnym od pracy, więc nie t wtedy opublikować." Problem polega na tym, że niektórzy dostawcy leadów nie są skonfigurowani do obsługi harmonogramu (lub po prostu ignorują go, jeśli chcą sprzedać nam więcej leadów). Muszę więc teraz dodać to sprawdzenie do naszego systemu w momencie, w którym przyjmujemy potencjalnych klientów, i najpierw sprawdzić, czy ten wiodący dostawca (identyfikuje się w wysyłanym pliku XML) może publikować potencjalnych klientów w tym konkretnym czasie . Szczerze nie wiem od czego zacząć. Czy ktoś to zrobił wcześniej? Jak sobie z tym poradziłeś i co jest dobrego/złego w twojej metodzie?


title: Pytania dotyczące architektury dotyczące frameworków MV**, modeli danych NoSQL i stopniowej refaktoryzacji

text: Mam aplikację internetową, którą chciałbym stopniowo refaktoryzować, dodając do niej strukturę. Zawęziłem opcje do Backbone (z kilkoma wtyczkami), Ember.js i AngularJS Moim celem jest refaktoryzacja tej aplikacji, która ma zwykłe spaghetti jQuery i _stopniowo_ dodawanie do niej jakiejś struktury. **Wymagania** * nie są to ramy typu „wszystko albo nic”, np. zezwól na stopniowe przenoszenie kodu od „przed” do „po” bez przepisywania aplikacji od zera (zwycięzca - Backbone?) * coś, co ma przyszłość, ludzie wydają się podekscytowani i ma za tym dużą firmę (Angular bierze ten punkt) * Niech czasami robię rzeczy „po mojemu” i nie narzucam paradygmatu (Backbone to wyraźny zwycięzca) * Coś, co naprawdę zwiększy moją produktywność i usunie potrzebę stosowania standardowego kodu (Angular + Ember) * Coś, co jest dobre nie tylko z oczywistymi rzeczy, ale także rzeczy złożone, np. przejścia animacji, modele zagnieżdżone, obsługa modalnych widoków okien dialogowych, obsługa przeciągania i upuszczania, system widżetów itp. Jedną z opcji jest zostanie zaawansowanym programistą we wszystkich 3, a drugą jest poproszenie osób, które zrobiły coś podobnego. Wiem, że z Backbone mogę robić wszystko, co chcę, ale chcę wiedzieć, czy nie jestem „ostrożny” i zastanawiam się, czy nie tracę, nie podejmując ryzyka korzystania z AngularJS / Ember.js **Pytania** Więc moje konkretne, odpowiedzi , konstruktywne (na tyle, na ile mogłem) pytania to: 1. Czy Angular / Ember jest w stanie obsługiwać przeciąganie i upuszczanie bez pochylania się do tyłu? 2. Czy którykolwiek z tych frameworków może dobrze obsługiwać przejścia animacji? 3. Który z tych 2 frameworków jest łatwiej „dodawać” stopniowo i nie przepisywać wszystkiego „na swój sposób” 4. Który z nich ma lepszą obsługę modeli opartych na NoSQL/dokumentach niż w dokumentach MongoDB (np. niż model relacyjny). zbudować model z dowolnej wielopoziomowej / zagnieżdżonej struktury przypominającej drzewo bez konieczności definiowania modelu NoSQL w relacyjnej strukturze danych (np. hasMany, submitTo zamiast tylko dokumentu typu JSON). Poza tym nie chcę przestać używać JqueryUI, ponieważ nie jest to w 100% zrobione w „Ember way” lub „Angular way”, czy Backbone naprawdę jest moją najlepszą opcją? Czy ładne dzwonki i gwizdki, które są dostarczane z Angular / Ember, są w kompromisie z elastycznością? Czy dobrym wyborem architektonicznym jest użycie Angulara lub Embera podczas refaktoryzacji istniejącego makaronu wywołań zwrotnych jQuery w stopniowym, iteracyjnym podejściu?


title: Zrobić kod PHP uruchamiany w .net?

text: Potrafię napisać aplikację PHP na platformie linux. Jednak otrzymuję prośbę o zbadanie pomysłu uruchomienia aplikacji PHP na .NET. Mam zerową wiedzę na temat .NET. Więc zastanawiasz się, czy to możliwe? Czy to wskazane? Implikacja ? A może powinienem najpierw zainstalować platformę .NET do zabawy? W skrócie, zero zmian w kodzie, z wyjątkiem konfiguracji środowiska PHP w .net. Zastanawiasz się również, czy skorzysta na tym bezpieczeństwo .net? Powodem, dla którego badam ten pomysł, jest to, że strona rządu Singapuru musi działać w .NET (i zamierzam zaoszczędzić kilka dolarów, nie zatrudniając programistów dot net). Myślę, że pomysł na uruchomienie aplikacji na .NET jest absurdalny (żart dla mnie), po prostu pokazując jeden ze „światowej klasy” standardu w Singapurze :)


title: Przezwyciężenie ogólnego braku umiejętności projektowania interfejsu użytkownika u programistów

text: Powiedziano mi i przekonałem się, że wielu programistów nie jest dobrych w projektowaniu interfejsu użytkownika (nie wiem na ile to prawda), ale _to prawda przynajmniej o mnie_. W tworzeniu stron internetowych dobre umiejętności tworzenia kodu nie wystarczą bez wielkich umiejętności projektowania interfejsu użytkownika. Więc dla mnie i wielu programistów takich jak ja, którzy mają tylko połowę rzeczy (dobre umiejętności programistyczne), jak powinniśmy ukończyć naszą drugą połowę, poza płaceniem za projektanta? Czy korzystanie z szablonów internetowych Open Source z niewielkimi modyfikacjami jest najlepszym rozwiązaniem, czy są inne opcje?


title: Jaki jest najlepszy sposób, aby zarówno struktura dokumentu html, jak i struktura kontroli php były dobrze widoczne w złożonym pliku widoku?

text: W swojej pracy tworzę wiele widoków w ramach wspólnego wzorca MVC stosowanego we frameworkach internetowych, takich jak Code Igniter i Cake. Stosuję się również do następującej maksymy najlepiej jak potrafię: grube modele i obiekty biblioteczne wykonujące logikę; chude kontrolery reagujące na działania użytkownika po stronie serwera; oraz widoki prezentujące wyniki żądania i dostarczające UI. To prowadzi mnie do sytuacji, w której wiele widoków to tylko html, zmienne echa i pętle for, z towarzyszącym im znacznikiem dla aplikacji css i javascript. Ładnie i przejrzyście. Jednak w niektórych przypadkach poglądy muszą być bardziej złożone. Możemy potrzebować na przykład robić różne rzeczy w oparciu o stan każdego zapętlonego elementu, a czasami staje się to dość skomplikowane. Problem polega na tym, że identyfikacja zastosowana zarówno do html, jak i php wkrótce przestaje być zsynchronizowana. Bardzo prosty przykład: <ul> <li> ... </li> <li> ... </li> <?foreach> <li> ... </li> <?endforeach> </ul> Mamy teraz elementy li, które są na tej samej głębokości w dokumencie wyjściowym, ale nie na tym samym poziomie w kodzie. Jeśli zaczniemy używać innych struktur kontrolnych, sytuacja może się pogorszyć: <ul> <li> ... </li> <li> ... </li> <?foreach> <li> ... </li> < ?if> <li> ... </li> <?endif> <?endforeach> </ul> I tak dalej... Czy istnieje dobrze wykorzystany wzorzec, który mogę zastosować, który minimalizuje ten problem nawet przy złożonych widokach?


title: W jaki sposób często niewłaściwie używane są pozorowane przedmioty?

text: Niedawno przeczytałem artykuł, w którym stwierdzono, że pozorowane przedmioty są często źle rozumiane i niewłaściwie używane. Czy są jakieś wyraźne prześmiewcze antywzorce, na które mogę zwrócić uwagę?


title: Jakie są opcje, gdy Sql generowany przez ORM wymaga dostrojenia?

text: Rozpoczynam pracę nad projektem internetowym przy użyciu django. Podczas badania, czy użyć Sqlalchemy, czy surowego sql, gdy django orm nie wystarcza, co również zadałem tutaj: Raw Sql vs SqlAlchemy, gdy Django ORM nie wystarcza Jedno pytanie mnie zaskoczyło. Wraz ze wzrostem obciążenia strony dowiadujemy się, że zapytania sql uruchamiane przez ORM wymagają dostrojenia. Ale nie mamy kontroli nad tym, jak ORM wykonuje zapytania. W takim przypadku musimy użyć surowych zapytań sql, ponieważ dają nam one najlepszą kontrolę. Ale jeśli zaczniemy używać surowych zapytań sql, wszystkie korzyści płynące z używania ORM znikną. Utknęliśmy zarówno z kodem sql, jak i orm, co z pewnością utrudni czytanie i konserwację kodu. Wydaje mi się, że wybieramy łatwy kod zamiast wielu późniejszych problemów. Bez wątpienia nasz początkowy kod będzie szybki i łatwy w utrzymaniu, ale może to spowodować późniejsze problemy. Chciałbym poznać myśli innych na ten temat. Nie zaczynam pytania porównującego orms i sql, ale chciałbym się dowiedzieć, jakie są opcje, gdy stworzyliśmy aplikację webową przy użyciu ORM-a i dochodzi do sytuacji, gdy jest jasne, że ORM nie wspiera naszej sprawy?


title: Pytanie algorytmu ustawiania odległości

text: Mam wiele zestawów zawierających liczby całkowite. Liczba całkowita może występować w jednym zestawie lub wielu zestawach. Chciałbym znaleźć/dopasować zestawy z najczęstszymi liczbami całkowitymi. Przykład s1 {1, 2, 3, 4} s2 {1, 3, 4, 5} s3 {6, 7, 8, 9} s4 {1, 6, 8, 10} W tym przypadku chciałbym: efektywnie” grupują s1+s2, ponieważ mają najbardziej nakładające się elementy (3), a następnie s3+s4(2) s1+s4(1). Możesz to zrobić metodą brute force (dopasuj wszystkie możliwości - a następnie posortuj) Szukasz skutecznego sposobu na zrobienie tego.


title: Dlaczego składnia C dla tablic, wskaźników i funkcji została zaprojektowana w ten sposób?

text: Po obejrzeniu (i zadaniu!) tylu pytań podobnych do > Co oznacza `int (*f)(int (*a)[5])` w C? a nawet widząc, że stworzyli program, który pomoże ludziom zrozumieć składnię C, nie mogę przestać się zastanawiać: dlaczego składnię C zaprojektowano w ten sposób? Na przykład, gdybym projektował wskaźniki, przetłumaczyłbym „wskaźnik na 10-elementową tablicę wskaźników” na int*[10]* p; i _nie_ int* (*p)[10]; z którym, jak sądzę, większość ludzi by się zgodziła, jest znacznie mniej oczywiste. Więc zastanawiam się, dlaczego ta, hm, nieintuicyjna składnia? Czy był jakiś konkretny problem, który rozwiązuje składnia (być może niejednoznaczność?), którego nie jestem świadomy?


title: Najlepsze praktyki dotyczące przechowywania informacji ze skryptu php do wykorzystania w przyszłości

text: Mój pracodawca używa formularzy, aby pomóc ludziom w wyszukiwaniu produktów. Listy produktów mogą się od czasu do czasu zmieniać, a formularze muszą być ponownie aktualizowane. Dostęp do informacji o produkcie można uzyskać za pośrednictwem zewnętrznego API, z którym zacząłem majstrować. Niedawno zbudowałem skrypt, który pobiera informacje za pomocą PHP oraz tworzy i wypełnia formularz dynamicznie za pomocą Javascript. **Jak dotąd dobrze, ale...** Istnieją ograniczenia dotyczące API, głównie można do niego uzyskać dostęp tylko określoną liczbę razy na godzinę, prawdopodobnie jest to więcej niż mój formularz/skrypt, ale chcę tworzyć skrypt, który jest minimalnie inwazyjny. **Moje główne pytanie brzmi...** **Jaka jest najlepsza praktyka, aby uzyskać jednorazowy dostęp do informacji i przechowywać je na tyle długo, aby umożliwić zresetowanie API?** Zastanawiałem się nad utworzeniem pliku cookie, ale istnieje możliwość, że użytkownicy które mają je wyłączone. _(Robię to również jako osobisty projekt, ale lubię ludzi, dla których pracuję i myślę, że to im pomoże.)_ Z góry dziękuję.


title: Czy nazwa mojego programu powinna być czasownikiem ("frobnicate") czy rzeczownikiem ("frobnicator")?

text: Jeśli mam program, który pobiera jakieś dane wejściowe, frobnicuje dane i wyprowadza wynik, czy nazwa programu powinna być czasownikiem „frobincate” czy rzeczownikiem „frobnicator”? Oto hipotetyczne wywołanie w formie czasownika: cat data.txt | frobnicate > frobnicated.txt i oto to samo wywołanie z formą rzeczownikową: cat data.txt | frobnicator > frobnicated.txt (Oczywiście, "frobnicate" to wyimaginowany czasownik użyty tutaj jako przykład.)


title: Czy istnieje kompilator prozy do kodu?

text: W swoim czasie widziałem okropny kod, w tym ludzi, którzy wirtualnie duplikowali kod w komentarzach // dodaj 4 do x x+=4; // dla każdego i od 0 do 9 for (int i = 0; i < 10; i++) { // pomnóż x przez i x *= i; } Kontynuując tę koncepcję, jestem ciekaw, czy istnieją kompilatory prozy do kodu. * Czy istnieje prawidłowy przypadek użycia angielskiej prozy do kodowania? * Czy istnieją kompilatory, które to robią? Różnica między tym kodem a kodem generowanym automatycznie polega na tym, że kod generowany automatycznie jest zazwyczaj zawsze podzbiorem projektu. Czy możemy automatycznie wygenerować kompletne projekty z angielskiej prozy? Zdaję sobie sprawę, że może to pokrywać się z pojęciem języków deklaratywnych.


title: Czy nadmierne poleganie na narzędziach oznacza, że jesteś leniwy?

text: Zacząłem programować w C++ na uniwersytecie i bardzo mi się to spodobało. W następnym semestrze przeszliśmy na VB6 i nienawidziłem tego. Nie mogłem powiedzieć, co się dzieje, przeciągasz przycisk do formularza, a ide pisze za Ciebie kod. Chociaż nienawidziłem sposobu funkcjonowania VB, nie mogę twierdzić, że było to szybsze i łatwiejsze niż robienie tego samego w C++, więc rozumiem, dlaczego jest to popularny język. Teraz nie nazywam programistów VB leniwymi, mówiąc, że jest to łatwiejsze niż C++ i zauważyłem, że wiele nowszych języków podąża za tym trendem, np. C#. To skłania mnie do myślenia, że im więcej biznesu chce szybkich rezultatów, więcej ludzi będzie programować w ten sposób i prędzej czy później nie będzie czegoś takiego jak to, co teraz nazywamy programowaniem. Przyszli programiści powiedzą komputerowi czego chcą, a kompilator napisze dla nich program jak w star trek. Czy to tylko niedoinformowana opinia młodego programisty, czy ogólnie programiści stają się coraz bardziej leniwi i mniej kompetentni? EDYCJA: Wiele odpowiedzi mówi, dlaczego wynaleźć koło i zgadzam się z tym, ale kiedy są dostępne koła, ludzie nie zadają sobie trudu, aby nauczyć się je robić. Mogę wygooglować, jak zrobić prawie wszystko w dowolnym języku, a połowa języków robi dla ciebie tak wiele, jeśli chodzi o debugowanie, że nie mają pojęcia, co robi kod, jak naprawić błąd. W ten sposób wymyśliłem teorię, że programiści stają się coraz bardziej leniwi i mniej kompetentni, ponieważ nikt nie dba o to, jak coś działa, tylko tak, jak działa, dopóki nie działa.


title: Czy istnieje kanoniczna książka o programowaniu równoległym z naciskiem na C++?

text: Szukam dobrej książki o programowaniu równoległym z naciskiem na C++. Coś odpowiedniego dla osoby dość dobrej w programowaniu w C++, ale bez doświadczenia w współbieżnym tworzeniu oprogramowania. Z drugiej strony wolałabym książkę praktyczną, bez mnóstwa głupich przykładów o filozofach jedzących obiad. Czy istnieje książka, która jest de facto standardem opisującym najlepsze praktyki, metodologie projektowania i inne przydatne informacje na temat programowania równoległego z naciskiem na C++? Co w tej książce czyni ją wyjątkową?


title: O gramatyce, hierarchii Chomsky'ego i formacie pliku obj

text: Biorąc pod uwagę format pliku Wavefront obj, w którym ta składnia pasuje do hierarchii Chomsky'ego i dlaczego? Nie jestem też pewien, czy gramatyki PEG są brane pod uwagę w rodzaju klasyfikacji dokonanej przez Chomsky'ego i czy obj jest prawdziwym przykładem gramatyki PEG. żeby to sformalizować: jakiego rodzaju gramatyki i parsera potrzebuję, aby odczytać plik obj?


title: Wpływ buforowania na wydajność programu

text: Jak buforowanie wpływa na wydajność uruchomionego programu? Z mojego punktu widzenia założenie, że każda instrukcja zajmuje zawsze tyle samo czasu, nie zawsze jest poprawne ze względu na skutki buforowania. Jak buforowanie wpływa na wydajność algorytmów? Z góry dziękuję. **EDYTUJ 1:** Aby dalej rozwinąć, powiedzmy, że uruchamiam ten program Java, który odczytuje milion liczb całkowitych. Z tego, co rozumiem na temat tego programu, jego kolejność wzrostu jest sześcienna i zajmie trochę czasu, aby zakończyć działanie. W jaki sposób buforowanie poprawiłoby wydajność tego programu podczas jego działania?


title: Jak wydostać się z pracy programistycznej w ślepym zaułku?

text: Mam prawie 9 lat doświadczenia w branży IT z czego 7 lat pracowałem w firmie informatycznej. Przez ostatnie 2 lata utknąłem w firmie niezwiązanej z IT, korzystającej z przestarzałych technologii i metodologii. Nie stosujemy żadnych dobrych praktyk ani nie modernizujemy się do najnowszych technologii ze względu na ograniczenia budżetowe. Przez pewien czas było trochę pracy, aby utrzymać mnie przy życiu, ale ostatnio są tylko prace konserwacyjne dla produktu działającego na starym stosie technologicznym. Więc chcę wyjść z tej pracy i zająć się taką, która jest bardziej moją szybkością: korzystam z najnowszych technologii, piszę nowe rzeczy, a właściwie w dziedzinie IT. Ale wciąż brakuje mi rozmów kwalifikacyjnych z powodu ostatnich kilku lat pracy, która jest poza czasem technologii. Co mogę zrobić, aby się przygotować i udowodnić nowszym firmom, że sprostam tej pracy?


title: Jak wyrwać się z roli opiekuna kodu?

text: W ostatnich trzech pracach byłem opiekunem kodu. We wszystkich trzech przypadkach zostałem zatrudniony _po_ napisaniu większości kodu do projektu. Jestem programistą samoukiem. Zanim zacząłem swoją pierwszą zawodową pracę, miałem na koncie może kilkanaście projektów, które z powodzeniem rozpocząłem i zrealizowałem. Pisanie nowego kodu i utrzymywanie istniejącego kodu to dwie zupełnie różne prace. To jak porównywanie inżyniera lotnictwa z mechanikiem lotniczym. Szczególnie jest to do bani, gdy jesteś mechanikiem lotniczym pracującym nad samolotem zaprojektowanym przez inżyniera, który nie próbował zaprojektować samolotu tak, aby był w jakikolwiek sposób logiczny lub łatwy w utrzymaniu. Zaczynam mieć ochotę być w pobliżu, kiedy projekt zaczyna się po raz pierwszy, musisz być jednym z tych _specjalnych_ ludzi, którzy w jakiś sposób prześcignęli resztę ludzi w dziedzinie informatyki. Co trzeba zrobić, aby znaleźć się w takiej sytuacji? Wydaje mi się, że na to pytanie nie ma łatwej odpowiedzi, ale czy ktoś mógłby mi dać jakieś spostrzeżenia? Czy byłeś kiedyś na parterze nowego projektu? Co zajęło, żeby się tam dostać?


title: Zostać „programistą utrzymania ruchu”

text: Tak więc trochę się denerwowałem z powodu obecnej sytuacji, w której się znajduję i chciałbym uzyskać informacje od innych programistów na ten temat. Jestem w moim obecnym miejscu pracy od około 11 miesięcy. Kiedy zaczynałem, pracowałem nad wszystkimi nowymi funkcjami. Zasadniczo pracowałem nad całym nowym projektem internetowym przez pierwsze 5-6 miesięcy, kiedy tu byłem. Po tym zostałem przeniesiony do roli bardziej zorientowanej na usługi (która wciąż była świetna, wszystko dla mnie nowe) i byłam w tej roli przez ostatnie 5-6 miesięcy. Oto, gdzie pojawia się problem. W zasadzie, kilka dni temu zostałem facetem od wsparcia/konserwacji. Teraz mamy zespół wsparcia IT, więc nie mówię o tym rodzaju wsparcia, mówię raczej o gościu wsparcia drugiego poziomu (kiedy ludzie na powierzchni nie mogą naprawdę dotrzeć do źródła problemu) , w połączeniu z pracą nad problemami konserwacyjnymi, które od jakiegoś czasu pozostają w zaległościach. Dla mnie, programisty z około 3 letnim doświadczeniem, jest to trochę przygnębiające. Przy takim typie miejsca pracy nie zdziwiłbym się, gdyby te problemy z pomocą techniczną zajęły większość moich dni, a ledwo udaje mi się pracować nad problemami z konserwacją. Ponadto większość z tych problemów z obsługą nie jest nawet związana z kodem, są one mniej więcej po prostu znajomością architektury systemu, pracą nad upewnieniem się, że usługi działają/rozpoczynają się prawidłowo, obsługą/naprawianiem złych danych itp. deweloper, więc ta część jest do bani. Ponadto, nawet gdy mam czas na prace konserwacyjne, są to w zasadzie tylko poprawki błędów/ulepszanie złego kodu, więc to też jest do dupy, jednak przynajmniej jest związane z kodowaniem. Czy się mylę, że się tu złościę? Naprawdę nie chcę na to narzekać, ale szczerze mówiąc, nie rozmawiano ze mną o tym ani o niczym, po prostu wysłałem e-mail z informacją, że jestem facetem do tego typu rzeczy i to było to. Cały zespół poświęcił kilka minut, aby wygłosić mi „to do bani”, ponieważ wiedzą, jak denerwujące jest wspieranie tego rodzaju pracy, którą wykonujemy, więc wiem, że nie jestem jedynym facetem, który wie, że to nieprawda to wspaniała okazja. Jestem po prostu na ogrodzeniu o tym, jak iść do przodu. Oczywiście zamierzam na razie kontynuować pracę, nie ma sensu robić na nikim złego wrażenia, ale chciałbym wiedzieć, jak podeszliście do tej sytuacji lub jak myślicie, że powinienem się z tym czuć / jak czulibyście.


title: Jak poradzić sobie z pracą bez wyjścia?

text: > **Możliwy duplikat:** > Jak wydostać się z bezmyślnej pracy programistycznej? Jestem zapalonym programistą w dobrze płatnej, ślepej zaułku pracy w oprogramowaniu. Minusem jest to, że łatam bzdurny kod (w tym tygodniu dokonałem kilkuset zmian, podobnie jak ludzki skrypt) iz różnych powodów nie mogę zrezygnować. Plusem jest to, że płacą mi całkiem nieźle, a ja muszę pracować tylko około 6 (prawdziwych) godzin dziennie, może nawet 4. Moim marzeniem jest praca w ciekawszej pracy: startup, firma zajmująca się grami, Google, cokolwiek. Jestem gotów ciężko na to zapracować. Jak utrzymać głowę nad wodą i w końcu przejść do czegoś, co lubię robić? Jestem programistą .NET; ludzie, którzy robią ciekawe rzeczy, unikają .NET jak zarazy. I muszę zostać w Kanadzie ze względów prawnych (USA nie wchodzi w grę). Mam 35 lat, ale w ciągu ostatnich 5 lat zajmowałem się głównie oprogramowaniem biznesowym.


title: Jak mogę przejść z pracy wymagającej tylko konserwacji?

text: Po rozpoczęciu pracy w firmie dowiedziałem się, że praca polega na utrzymaniu oprogramowania. Większość pracy, którą wykonuję, to znajdowanie i naprawianie błędów. To nie jest łatwa praca. Jednak nie ma nowych funkcji. Martwię się o to, ponieważ może to oznaczać, że nigdy nie będę miał szansy skupić się na rozwoju. Co mogę zrobić, aby przejść z pracy, która jest tylko konserwacją, do pracy, w której tworzę i projektuję oprogramowanie?