Zastanawiam się nad przeprowadzką do nowego miasta (uwiedzenie się przez te wielkie światła miasta) i próbuję zdecydować, czy mój brak umiejętności z zakresu informatyki sprawi, że będę nadmiernie niekonkurencyjny. Pozwólcie, że wyjaśnię nieco moją sytuację: * Programowanie od jr. liceum, zawodowo od 2004 roku. Od 2006 roku pracuję w małej firmie zajmującej się tworzeniem aplikacji webowych (PHP). * Studiowałem samodzielnie wzorce projektowe i wykorzystywałem je w swojej pracy. * Pracował z frameworkami MVC (PHP) od kilku lat. Mam duże rozeznanie, jak napisać dobry, konserwowalny kod MVC zgodny z zasadami MVC (a nie tylko wpychanie kodu tam, gdzie się da w ramach frameworka.) * Ostatnio wykonałem trochę pracy z C#, dzięki któremu się uczę wstrzykiwanie zależności i wzorzec MVVM. Grokking tych, ale wciąż wiele do zrobienia. * Pełne uzupełnienie umiejętności tworzenia stron internetowych (znormalizowane bazy danych, SQL, HTML, CSS, JavaScript) i jestem w nich bardzo pewny swoich umiejętności. Zdaje sobie również sprawę z problemów związanych z bezpieczeństwem oraz z tego, jak napisać bezpieczną aplikację. Moją główną wadą jest skalowalność, której niestety nigdy nie musiałem się uczyć. Denerwuję się tym, czego nauczyłbyś się na studiach CS. Mój stopień naukowy dotyczy inżynierii lotniczej, nie CS, ale zdecydowałem, że programowanie jest tym, na czym naprawdę mi zależy. Co wiem: * Podstawowe struktury danych: Wziąłem klasę, w której zaimplementowałem podstawowe połączone listy oraz zbudowane na nich kolejki i stosy. Napisałem podstawowe drzewo binarne (wstawki, różne przechodzenie, ale nie usuwanie (byłem naprawdę pijany, kiedy pisałem kod i okazało się, że w ogóle nie działa)). Znam się na tablicach mieszających i rozumiem niektóre zasady ich implementacji. * Rozumiem notację big-O, ale ponieważ nie jestem zaznajomiony z algorytmami, podejrzewam, że mogę przegapić pytania do rozmowy kwalifikacyjnej na ten temat. (jaki jest najgorszy czas wstawiania do tablicy mieszającej? Nie mam pojęcia.) * Zrobiłem trochę programowania funkcjonalnego za pomocą JavaScript, python i dabbling w Haskell. (Zdaję sobie sprawę, że pierwsze dwa nie są funkcjonalnymi językami programowania, ale mają funkcjonalne aspekty). Rozumiem curry i funkcje wyższego rzędu. Czego nie wiem: * Tak naprawdę nie znam w ogóle formalnych algorytmów. Nie mogłem posortować wyjścia z papierowej torby (no _może_ sortowanie bąbelkowe, które wiem, że to O(n2)). Chyba znam niektóre z ich imion. * Nigdy nie pisał parsera, kompilatora ani żadnego składnika systemu operacyjnego. Nigdy nie robiłem niczego interesującego ze współbieżnością (np. nic poza używaniem podstawowych wywołań asynchronicznych w .NET, aby zapobiec blokowaniu mojego interfejsu użytkownika). _Chcę_ nauczyć się tych wszystkich rzeczy, wyłącznie z zainteresowania, ale na razie po prostu nie mam teraz czas na pracę główną + pracę poboczną + życie poza programowaniem ( _hasp!_ wiem). Nie chcę niepotrzebnie wstrzymywać moich większych planów życiowych, jeśli nie muszę. Nie dążę do Google czy Microsoftu, ale chciałbym przynajmniej znaleźć interesującą pracę. Jak bardzo będą mnie powstrzymywać wymienione przeze mnie braki? Czuję się stosunkowo pewnie, że w pracy, o którą faktycznie bym się ubiegał i dostałbym, byłbym w stanie bardzo dobrze sobie radzić, ale co z rozmowami kwalifikacyjnymi? Chciałbym wiedzieć: * Jak ważne są tematy informatyki w znalezieniu pracy?


title: Jak obsłużyć kontroler, który nie kontroluje określonego modelu?

text: Mam ładną konfigurację MVC, ale moja witryna wymaga niektórych widoków, które nie są mapowane bezpośrednio do modelu. W szczególności mam kilka ogólnych raportów, które użytkownicy muszą uruchomić, a teraz tworzę narzędzie do porównywania niektórych konfiguracji systemu. W tej chwili logika jest zapchana w kontrolerze raportów i zaczynam kontroler porównania, ale wydaje się to dużym nadużyciem systemu. Oba kontrolery używają asortymentu różnych modeli do pobierania danych i są one powiązane tylko na podstawie _co robi użytkownik_. Raporty są uruchamiane z kontrolera raportów, a ich widoki są zgrupowane w strukturze systemu plików/adresu URL. Czy jest to dopuszczalne użycie paradygmatu Administratora? Nie mogę wymyślić lepszego sposobu na uporządkowanie moich kontrolerów, a tworzenie kontrolera dla każdego modelu, którego używam do tworzenia raportów/ect, nie wydaje się dobrym pomysłem; Skończyłbym z jednym kontrolerem/modelem/widokiem na raport lub porównanie, znacznie komplikując widoczną strukturę mojej witryny.


title: Jaki jest właściwy sposób OO, aby utworzyć klasę licznika/inwentarza, która działa zarówno dla zróżnicowanych, jak i niezróżnicowanych elementów policzalnych?

text: Piszesz grę wideo o handlu fasolą. Czerwona fasola, czarna fasola, fasola pinto, co tylko chcesz. Jak wszyscy wiedzą, wszystkie ziarna są takie same. Napisujesz klasę "Inventory" dla tradera w tej grze wideo w następujący sposób (pomijając wszystkie kontrole null): class BeansInventory{ HashMap<BeanType,Integer> milesOwned; public void odbierz(BeanType typeReceived, int kwota) {amountsOwned.put(typeReceived,amountsOwned.get(typeReceived)+amount)} public void remove(BeanType typeRemoved, int amount) {amountsOwned.put(typeRemoved,amountsOwned.get(typeRemoved) -amount)} public Integer kwotaOwned(BeanType type) {amountsOwned.get(type)} } Działa dobrze przez lata. Nagle ktoś inny wpada na świetny pomysł, aby dodać do gry handel ziarnami kawy. Jak wszyscy wiedzą, każde pojedyncze ziarno kawy jest zupełnie inne. Więc nie możesz po prostu dodać kawy jako innego rodzaju ziarna. Każde ziarno kawy to osobna instancja. Klasa inwentarza kawy wygląda mniej więcej tak: class CoffeeInventory{ HashMap<CoffeType,List<CoffeeBeans>> coffeOwned; public void receive(CoffeType typeReceived, CoffeeBeans... beans) {coffeOwned.get(typeReceived).addAll(beans)} public void remove(CoffeType typeRemoved, CoffeeBeans... beans) {coffeOwned.get(typeRemoved).removeAll(beans) )} public Integer numberOwned(CoffeType type) {amountsOwned.get(type).size()} } Ale teraz masz mnóstwo problemów. Masz dwa interfejsy API do tego samego zadania. Cała infrastruktura handlowa musi teraz dokładnie sprawdzić, czy jest to handel ziarnami pinto czy kawą i wywołać inny ekwipunek i inną metodę z inną sygnaturą dla tego, co w końcu jest tym samym zadaniem: „przechowuj to”. Więc teraz mam ten kod, który jest wypełniony sprawdzaniem `if` i `instanceof` i wszystkimi innymi oznakami zapachu kodu. Ale nie potrafię wymyślić sposobu na użycie pojedynczego prostego API. Nie mam pojęcia, co należy zrobić.


title: Czy dynamiczny układ HTML jest dobry z punktu widzenia SEO?

text: Zastanawiasz się tylko, czy dynamicznie budowany układ HTML jest dobry z punktu widzenia SEO? Załóżmy więc silnik e-commerce i jego najpopularniejszą stronę - katalog produktów. Tak więc 90% strony jest zbudowane przy użyciu biblioteki knockoutjs AJAX i MVVM, która buduje HTML w locie po stronie klienta. Jak więc boty wyszukiwania przeanalizowałyby takie treści? Czy jest dobrze zindeksowany i byłby tak skuteczny jak strony HTML budowane po stronie serwera z punktu widzenia SEO?


title: jak robić aktualizacje bazy danych w każdym wydaniu

text: Nasza aplikacja korzysta z bazy danych (głównie Oracle), a baza danych jest rdzeniem. Każdy klient ma własną bazę danych, z własną kopią aplikacji. Teraz z każdą nową wersją naszego produktu musimy również aktualizować schemat bazy danych. Te zmiany to dodawanie nowych tabel, usuwanie kolumn, manipulowanie danymi itp. Jak ludzie sobie z tym radzą? Czy są do tego jakieś standardowe procesy? EDYCJA: - Głównym problemem jest to, że bazy danych są ogromne z wieloma tabelami i większą ilością danych. Dostarczamy skrypty i narzędzia do manipulacji danymi. Jak radzić sobie z awariami i fałszywymi negatywami? Więcej szukam tego rodzaju artykułów. http://thedailywtf.com/Articles/Database-Changes-Done-Right.aspx


title: Czy jest jakaś wartość w pozyskiwaniu twoich projektów do zabawy?

text: Napisałem dla mnie mnóstwo zabawnych projektów i pokazywałem je znajomym i tym podobne. Czy jest jakaś wartość w wykonywaniu pracy i tworzeniu tych projektów jako open source, ponieważ zainteresowanie i użyteczność są ograniczone.


title: Kopiujesz schemat bazy danych konkurenta?

text: Wkrótce wydam oprogramowanie, które będzie wymagało od użytkowników uruchomienia lokalnej bazy danych. W tej przestrzeni jest konkurent, który robi to samo i ma dość wyrafinowany schemat bazy danych, którego używa. Ich oprogramowanie jest komercyjne, ale schemat bazy danych jest w pełni widoczny po zainstalowaniu. Jaka jest legalność opierania mojego produktu na tym samym schemacie bazy danych i potencjalnej zmiany nazw kolumn i tabel, a może usunięcia jednej lub dwóch rzeczy?


title: Czy rozsądne jest używanie JavaScript MVC Frameworks dla płatnych aplikacji internetowych o zamkniętym kodzie źródłowym?

text: Zastanawiam się, czy rozsądne jest pisanie zamkniętych, płatnych aplikacji internetowych w JavaScript (JS MVC Frameworks, takie jak AngularJS, Backbone, Knockout, ...)? Martwię się, ponieważ w tego typu frameworkach używasz zazwyczaj backendu REST dla operacji CRUD, a większość logiki biznesowej i aplikacji dzieje się w JavaScript, który może być wyszukiwany przez każdego, kto korzysta z mojej aplikacji. On widzi, jak robię różne rzeczy. Kiedy używam na przykład PHP lub Javy (Wicket), większość logiki dzieje się na serwerze, więc znacznie mniej mojego kodu źródłowego jest ujawniane. Wydaje mi się to o wiele bezpieczniejsze, jeśli chcę mieć przewagę nad konkurencją, więc potencjalnie zarabiam więcej pieniędzy. Czy rozsądne jest używanie frameworków JavaScript MVC do płatnych aplikacji? Czy to zależy od czegoś, a jeśli tak od czego?


title: czy programiści bardziej wybaczają wadliwe oprogramowanie?

text: Z Twojego doświadczenia, czy Ty lub ogólnie programiści jesteście bardziej lub mniej skłonni do wybaczania błędów w oprogramowaniu, z którego korzystacie? np. jeśli natkniesz się na błąd w jakiejś aplikacji (komercyjnej lub open source), czy twoja reakcja jest irytująca z powodu niekompetencji, empatii lub czegoś innego (szkoda)?


title: Czy źle jest być jedyną osobą wspierającą oprogramowanie, które stworzyłeś?

text: Mój pracodawca potrzebuje aplikacji internetowej do zarządzania i udostępniania danych w dziale, z około 50-75 potencjalnymi użytkownikami. Czuję, że mogę to dla nich napisać. Prawdopodobnie użyłbym Pythona/Django z bazą danych MySQL, więc byłby to open source. Jednak jestem jedyną osobą w moim dziale IT (nasza większa organizacja ma oddzielny personel wsparcia IT, z którym często pracuję, ale nie przy tworzeniu stron internetowych). Chcę rozwijać tę aplikację, ale jeśli wyjadę za 1-2 lata, a ktoś inny będzie musiał po mnie przyjść i ją wesprzeć, czy będzie to postrzegane jako zła decyzja? Zakładam wszystkie oczywiste punkty – napiszę dokumentację, skomentuję swój kod i będę starał się przestrzegać dobrych zasad projektowania aplikacji. Ale czy to wystarczy? Czy w zasadzie jest dopuszczalne, aby jedna osoba tworzyła i wspierała całą aplikację internetową? Czy jest to sytuacja typu „najpierw zrób, potem pokaż i zapytaj”, czy też powinienem być pewien, że zostanie ona przyjęta przez wszystkich zaangażowanych jako pierwsza? Jeśli chodzi o konkrety, to pracuję w wydziale akademickim uniwersytetu, który ma określone procedury dla kandydatów na studentów i ich przyjmowania. Musisz złożyć podanie na uniwersytet I mój wydział osobno. Proces specyficzny dla wydziału jest bardzo ręczny i poskładany w całość, i właśnie tam wszedłby mój rozwój. My (ja i IT) już planujemy włączyć dodatkowe pytania dotyczące mojego wydziału do głównej aplikacji uniwersyteckiej (która JEST elektroniczna, i zasila PeopleSoft), dzięki czemu rozwiązuje się front-end i wszystko będzie w jednym miejscu. Ale aby wykładowcy i pracownicy mogli zdobyć i „przetrawić” te informacje w trakcie procesu rekrutacji, będzie wymagało pewnego rodzaju aplikacji, którą wolałbym zrobić „po swojemu”. Pracownicy IT chcą rozwijać to WSZYSTKO w PeopleSoft i obawiam się, że będzie to zbyt mało elastyczne i nie zostanie dobrze przyjęte przez nasz dział i nadal może nie w pełni odpowiadać naszym potrzebom. Istnieją rozwiązania firm trzecich, które doskonale spełniają tę potrzebę, ale są one nieopłacalne. Chciałbym zapytać o dane z PeopleSoft i przedstawić je w taki sposób, w jaki wiem, że wykładowcy i pracownicy muszą je zobaczyć. (Uzyskanie dostępu do zapytania PeopleSoft to zupełnie inna bitwa).


title: DB API do skryptów powłoki (dowolna powłoka)

text: Mam do czynienia z pewnymi starszymi skryptami powłoki, które uruchamiają zadania przetwarzania danych wsadowych w Oracle przy użyciu `SQL+`. W większości warstwa danych nie musi komunikować się z powrotem do skryptu z pobranymi danymi, które mają zostać przekazane do przetwarzania na poziomie powłoki, ale w kilku przypadkach tak się dzieje. Problem polega na tym, że SQL+ ma być aplikacją dla użytkownika końcowego, a nie interfejsem API, który może programowo komunikować się z innymi klientami. Właśnie dlatego ludzie wymyślili API, takie jak `DBD::DBI` dla Perla, `JDBC` dla Javy, ODBC itp. Sposób, w jaki to się robi, polega na tym, że wywołują SQL+, a następnie analizują dane wyjściowe, które są wyraźnie zaprojektowane do użytku przez ludzkie oko , używając narzędzi takich jak `sed` i `awk`. Całość jest w najlepszym razie hackiem i bardzo podatna na błędy. Ponieważ ten klient jest raczej konserwatywny w swojej technologii, nie chcą skalować swoich skryptów do Perla lub Pythona, gdzie istnieją interfejsy API dostępu do danych. Zastanawiam się więc, czy istnieją podobne API dla powłoki, np. K lub bash. Chciałbym, aby API zwracało dane w dwuwymiarowej tablicy lub ciągach (z powodu braku ustawienia typu), abym mógł po prostu odczytać dane DB w ten sposób. Sposób, w jaki robią to teraz, jest podobny do parsowania kodu HTML zwykłej strony internetowej w celu uzyskania pojedynczego notowania giełdowego, zamiast czystego wywoływania usługi sieciowej i skończenia z tym. Czy ktoś zna produkt, którego mogę użyć? Dziękuję


title: Czy to zapach testowy, czy jeszcze gorszy?

text: Ostatnio przyglądałem się testscripts, które wyglądają trochę jak ... try { ReceiveSomething(); // coś zostało odebrane, mimo że nie powinno to zakończyć się niepowodzeniemTest(); } catch (TimeoutException e) { // nic nie powinno zostać odebrane succedTest(); } Problem, jaki mam z tego typu testami, to 1. Nie są deterministyczne. Nie wiesz, czy nic nie zostało wysłane celowo, czy wszystko się zawiesiło. 2. Bardzo trudno jest jednocześnie przetestować coś innego, co mogłoby w tym przypadku wysłać coś. Moje myśli są po jednej stronie, w jaki sposób można lepiej projektować tego typu testy, a po drugie, czy może to wskazywać na większy zapach projektowy testowanego oprogramowania? EDYTUJ Aby wyjaśnić, te skrypty testowe są używane do testowania w czarnej skrzynce złożonego oprogramowania opartego na zdarzeniach, a nie do testowania jednostkowego, i mam wrażenie, że zdarzenie „nic nie robienie” jest bardzo niejednoznaczne. :)


title: Która warstwa powinna uporządkować kolumny wyświetlane użytkownikowi podczas korzystania z MVC?

text: Załóżmy, że chcesz renderować tabelę z pięcioma kolumnami, ale chcesz, aby kolejność kolumn była różna w zależności od określonego parametru. Byłoby to bardzo łatwe do osiągnięcia, gdyby model ustalił kolejność. Widok może wtedy po prostu użyć pętli i odpowiednio utworzyć tabelę. Jednak o ile nie zrozumiałem czegoś źle, chcemy, aby widok obsługiwał sposób renderowania rzeczy (chociaż wydaje mi się, że może tu być zaangażowany szary obszar, jeśli chodzi o to, co widok „powinien decydować o tym, jak renderować”)? To również brzydkie, gdy model ustawia formatowanie / kolejność, ale może to kolejna rzecz, którą mogłem źle zrozumieć? Jeśli widok ma zajmować się kolejnością kolumn, jaki jest dobry sposób, aby to osiągnąć (czytaj: konieczność używania wielu instrukcji if i innego brzydkiego kodu w widoku)?


title: Jeden właściciel produktu dla wielu zespołów Scrum

text: Czy powszechną praktyką jest posiadanie jednego właściciela produktu dla więcej niż jednego zespołu Scrum, czy zwykle masz właściciela produktu dla każdego zespołu (nawet jeśli wiele zespołów pracuje nad tym samym produktem). Dziękuję


title: Użyć funkcji setStatus($arg) czy mieć oddzielne funkcje enable() i disable()?

text: W tej chwili mam dwie funkcje: suspendGroupsAndUsers($groupId){} enableGroupsAndUsers($groupId) {} Ale różnica między nimi to jedna zmienna/ciąg. Czy powinienem po prostu mieć: setStatusGroupsAndUsers($status,$groupID) {} To wydaje się bardziej SUCHY... A może powyższe dwie funkcje faktycznie wywołują funkcję setStatus? Gut mówi użyj setStatus ...


title: Dokumenty projektowe w ramach Agile

text: W moim miejscu pracy stajemy przed wyzwaniem polegającym na tym, że „zwinność” zbyt często oznaczała „niejasne wymagania, złe kryteria akceptacji, powodzenia!” Staramy się rozwiązać ten problem jako ogólny wysiłek na rzecz poprawy. W ramach tego proponuję więc generowanie dokumentów projektowych, które wykraczając poza poziom historyjki użytkownika dokładnie odzwierciedlają wynik wstępnych badań wpływu danej funkcji w systemie i zawierają odpowiedzi na pytania, które mamy zapytał biznes. Czy istnieje na to skuteczny standard? Obecnie mamy do czynienia z sytuacją, w której nowa funkcja może wpłynąć na wiele obszarów naszego systemu „wielkiej kuli błota”, a szacunki zaczynają rosnąć z powodu tego długu technicznego. Miejmy nadzieję, że bardziej przemyślane procesy projektowania mogą pomóc.


title: Haskell vs Erlang dla usług internetowych

text: Zamierzam rozpocząć eksperymentalny projekt przy użyciu języka funkcjonalnego i próbuję decydować między Erlangiem a Haskellem. Obaj mają pewne punkty, które bardzo mi się podobają. Podoba mi się mocny system typów i czystość Haskella. Mam wrażenie, że ułatwi to pisanie naprawdę niezawodnego kodu. I myślę, że moc Haskella znacznie ułatwi to, co chcę zrobić. Z drugiej strony mam wrażenie, że niektóre frameworki do robienia rzeczy internetowych na Haskell, takie jak Yesod, nie są tak zaawansowane, jak ich odpowiedniki Erlanga. Raczej podoba mi się podejście Erlanga do wątków i tolerancji na błędy. Mam wrażenie, że skalowalność Erlanga może być dużym plusem. Co prowadzi do mojego pytania, jakie jest doświadczenie ludzi we wdrażaniu backendów aplikacji internetowych zarówno w Haskell, jak i Erlang. Czy istnieją pakiety dla Haskella, aby zapewnić niektóre z lekkich wątków i aktorów, które ma w Erlang?


title: Perl: Negatywne spojrzenie za pytanie o regex

text: Perlre w Perldoc nie wchodził w szczegóły dotyczące negatywnego rozglądania się, ale próbowałem go przetestować i nie działał zgodnie z oczekiwaniami. Chcę zobaczyć, czy mogę odróżnić definicję makra preprocesora C (np. #define MAX(X) ....) od rzeczywistego użycia (y = MAX(x);), ale nie działało zgodnie z oczekiwaniami. moja $macroName = 'MAX'; moje $macroCall = "y = MAX(X);"; my $macroDef = "# zdefiniuj MAX(X)"; moja $granica = qr{\b$nazwa_makro\b}; mój $bstr = " MAX(X)"; if($bstr =~ /$boundary/) { print "granica: $bstr pasuje do: $granica\n"; } else { print "Błąd: brak dopasowania: granica: $bstr, $granica\n"; } mój $negLookBehind = qr{(?<!define)\b$macroName\b}; if($macroCall =~ /$negLookBehind/) # "y = MAX(X)" pasuje do "(?<!define)\bMAX\b" { print "negatywne spojrzenie za: $macroCall pasuje: $negLookBehind\n"; } else { print "brak dopasowania: negatywne spojrzenie za: $macroCall, $negLookBehind\n"; } if($macroDef =~ /$negLookBehind/) # "#define MAX(X)" nie powinien pasować do "(?<!define)\bMAX\b" { print "Błąd: negatywne spojrzenie za: $macroDef pasuje: $ negLookBehind\n"; } else { print "brak dopasowania: negatywne spojrzenie za: $macroDef, $negLookBehind\n"; } Wygląda na to, że zarówno `$macroDef` jak i `$macroCall` pasują do wyrażenia regularnego `/(?<!define)\b$macroName\b/`. Wycofałem się z oryginalnego `/(?<\#)\s*(?<!define)\b$macroName\b/` ponieważ to też nie działało. Więc co schrzaniłem? Czy Perl pozwala także na tworzenie łańcuchów wielu wyrażeń rozglądania się?


title: Programowanie wielowątkowe?

text: Niedawno skończyłem uczyć się programowania wielowątkowego na pojedynczych obiektach współdzielonych, ale byłem ciekawy, jak różne rzeczy mogą wyglądać, aby z powodzeniem programować na wielu obiektach współdzielonych?


title: Co muszę wziąć pod uwagę, używając kodu na licencji Apache w aplikacji przesłanej do Mac App Store?

text: Po pierwsze, jestem nowy w licencjach i sklepach z aplikacjami. Istnieje przykładowa aplikacja na frameworku, która ma plik `Class` z wieloma funkcjami, których potrzebuję dla mojej własnej aplikacji. Ma mniej niż 1000 linii kodu i jest rozpowszechniany na licencji Apache License 2.0. 1. O ile wiem, mogę używać/modyfikować kod i po prostu potwierdzić programistę i dołączyć licencję, ale czy to oznacza, że mój _cały_ projekt będzie rozpowszechniany na licencji Apache License 2.0, czy tylko dotyczy tego pliku źródłowego? 2. Czy po zakończeniu projektu będę mógł opublikować swoją aplikację w Mac App Store? Czy byłbym w stanie go tam sprzedać? Plik pochodzi z przykładowego projektu, który w zasadzie pokazuje wszystko, co jest możliwe we frameworku, a użycie go w moim projekcie zaoszczędziłoby mi mnóstwo czasu. Jeśli jednak nie jest to możliwe, to chyba będę musiał sam to zakodować.


title: Czy zarządzanie pamięcią w programowaniu staje się nieistotnym problemem?

text: **Tło** Odwiedziłem starą (ale świetną) stronę, na której nie byłem od dawna - Alioth Language Shootout (http://benchmarksgame.alioth.debian.org/). Zacząłem programować w C/C++ kilka lat temu, ale od tego czasu pracuję prawie wyłącznie w Javie ze względu na ograniczenia językowe w projektach, w których brałem udział. Nie pamiętając liczb, chciałem w przybliżeniu zobaczyć, jak dobrze Java w porównaniu z C/C++ pod względem wykorzystania zasobów. **Czasy wykonywania** były nadal stosunkowo dobre, a Java w najgorszym przypadku działała 4x wolniej niż C/C++, ale średnio około (lub mniej) 2x. Ze względu na charakter samej implementacji Javy, nie było to zaskoczeniem, a jego wydajność była faktycznie _niższa_ niż się spodziewałem. Prawdziwą cegiełką była **alokacja pamięci** \-, w najgorszym przypadku, Java przydzieliła: * aż 52x więcej pamięci niż C * i 25x więcej niż C++. 52x więcej pamięci... Absolutnie paskudne, prawda? ... Albo to jest? Pamięć jest obecnie stosunkowo tania. **Pytanie:** Jeśli nie mówimy o platformach docelowych ze ścisłymi ograniczeniami pamięci roboczej (np. systemy wbudowane itp.), **czy użycie pamięci powinno być problemem przy wyborze języka ogólnego przeznaczenia?** pytam po części dlatego, że rozważam migrację do Scali jako mojego podstawowego języka. Bardzo podobają mi się jej funkcjonalne aspekty, ale z tego co widzę, jest jeszcze droższa pod względem pamięci niż Java. Ponieważ jednak pamięć wydaje się z roku na rok coraz szybsza, tańsza i coraz liczniejsza (coraz trudniej znaleźć konsumenckiego laptopa bez co najmniej 4 GB pamięci RAM DDR3), czy nie można twierdzić, że zarządzanie zasobami staje się coraz bardziej nieistotne w porównaniu do (ewentualnie drogich implementacyjnych) funkcji języka wysokiego poziomu, które pozwalają na szybszą budowę bardziej czytelnych rozwiązań?


title: Czy programowanie na życie zrujnowało twoją zdolność do korzystania z technologii?

text: Cytując Arthura C. Clarke'a: > Każda wystarczająco zaawansowana technologia jest nie do odróżnienia od magii. Kiedyś patrzyłem na technologię z podziwem i zdumieniem. Chciałem to rozebrać, zrozumieć, jak to działa, rozgryźć to wszystko. Technologia była magiczna. Jestem starszy, wiem więcej i spędzam dni na tworzeniu rzeczy, które, miejmy nadzieję, napełniają innych ludzi tego rodzaju cudami. Ale ostatnio odkryłem, że mój własny podziw dla technologii został poważnie ograniczony. Częściej po prostu denerwuje mnie, że nie jest tak elegancki, bezszwowy, dopracowany lub doskonale dostarczony, jak wydawało mi się w mojej młodości. Wszystko to wygląda na zepsute i niezręczne lub sklecone i źle przetestowane. Czy programowanie zrujnowało twoją zdolność do korzystania z technologii? Czy przestałeś się zastanawiać z podziwem i po prostu zacząłeś mówić: „Mogli zrobić to lepiej” za każdym razem, gdy sięgasz po odrobinę technologii?


title: Czy Visual Studio to tylko środowisko IDE?

text: Mam na myśli programowanie Windows. Patrząc na inne pytania, istnieją alternatywy dla VS, ale wydają się być oparte na sieci Web, co jest w porządku, lub możesz zaprogramować całą witrynę .net w notatniku, jeśli zachęci Cię do tego. Ale czy jest w tym coś więcej niż tylko IDE dla Windows Development? TJ. Czy mogę stworzyć aplikację w zwykłym notatniku, czy kompilator jest częścią Visual Studio, czy jest oddzielny, co można wywołać z wiersza poleceń lub coś takiego? Nie chcę nie używać VS, jestem z niego zadowolony, robię to, czego potrzebuję itp. itd., Po prostu bardziej ciekawi mnie aspekt.


title: SICP - Po co używać akumulować z wadami, gdy filtr już zwraca listę?

text: W SICP 2nd Edition sekcja 2.2.3 autorzy mają następujący kod: (define (even-fibs n) (accumulate cons nil (filter even? (map fib (enumerate-interval 0 n))))) Moje pytanie brzmi: dlaczego czy w tym przypadku użyli _akumuluj_? Czy nie mogliby uzyskać tej samej odpowiedzi z _filtru_ bez użycia _akumulacji_?


title: Czy korzystanie z PhoneGap w swojej pierwszej aplikacji mobilnej to dobry pomysł?

text: Jestem początkującym programistą. Uzyskałem stopień AS w CS, który wystawił mnie na podstawy c++, struktur danych i algorytmów, a także mam niewielkie doświadczenie z html/css/javascriptem, po prostu bawiąc się budowaniem własnych podstawowych stron internetowych. Nie jestem jeszcze w pobliżu biegłego zawodowego programisty. Moje pytanie brzmi, czy użycie PhoneGap do stworzenia mojej pierwszej „aplikacji” na Androida/iosa/cokolwiek byłoby dobrym pomysłem, czy też powinienem zacząć od tworzenia aplikacji natywnych? Przy całym szumie wokół html5/javascript w tej chwili PhoneGap wydaje się zbyt dobry, aby mógł być prawdziwy dla początkującego takiego jak ja. Myśli? za I przeciw?


W wielu wywiadach zadano mi to pytanie. Co to jest diagram pakietów? i co to jest diagram sekwencji? i różnica między diagramem pakietów a diagramem sekwencji. Z góry dziękuję. **Edytuj** Przepraszam, google daje mi dużo odpowiedzi, ale chcę praktycznej odpowiedzi z przykładem.


title: Pytanie do wywiadu z klasyfikacją funkcji skrótu

text: W kilku miejscach w Internecie znajduje się pytanie do rozmowy kwalifikacyjnej > Klasyfikuj funkcje haszujące na podstawie różnych metod wyszukiwania klucza > wartości. z odpowiedziami typu * Metoda bezpośrednia * Metoda odejmowania * Metoda dzielenia modulo * Metoda wydzielenia cyfr * Metoda Mid-Square * Metoda składania * Metoda pseudolosowa, która wydaje mi się dziwna. Myślę, że dużo wiem o haszowaniu, ale to dla mnie zwykły bełkot, czy ktoś mógłby to wyjaśnić?


title: Jak udokumentować podwójną licencję open source?

text: Jeśli projekt jest objęty podwójną licencją **GPL** i **BSD** , czy powinien istnieć jeden plik `LICENSE` z tekstem obu licencji? A może dwa osobne pliki, po jednym dla każdej licencji? I myślę, że powinienem umieścić komentarz dotyczący praw autorskich/licencji na górze każdego pliku źródłowego. Jak ten komentarz powinien wskazywać na status projektu z podwójną licencją?


title: Radzenie sobie z plikami proj w aplikacjach wieloplatformowych

text: Więc robiłem kilka wieloplatformowych aplikacji mobilnych przy użyciu cocos2d-x. Zasadniczo używa zwykłego kodu c++, który można łatwo skompilować na popularne platformy mobilne za pomocą małego kodu opakowującego, który pozostaje stały podczas pracy na wspólnym kodzie c++. Wszystko działa świetnie, ale mam problem z aktualizacją wszystkich plików projektu. Na przykład, aby skompilować do systemu Windows, mam plik .csproj, który zawiera cały kod c++ do skompilowania, dla iOS mam plik .xcodeproj, który przechowuje pliki, a dla Androida mam plik make, który wskazuje pliki do skompilowania. Oznacza to, że za każdym razem, gdy dodam nowy plik do mojego projektu lub zrobię cokolwiek, aby zmienić strukturę plików, mam 3 pliki, które muszę zaktualizować, aby kontynuować budowanie dla wszystkich platform, jeśli dodam jakiekolwiek inne platformy, problem będzie się pogarszał . Zastanawiam się, czy to problem, który został rozwiązany? Jestem pewien, że nie jestem pierwszym, który ma takie problemy, utrzymując wiele plików projektu / make do aktualizacji dla różnych platform do kompilacji. Myślałem o napisaniu własnego wrappera, który może łatwo aktualizować te pliki bez konieczności otwierania IDE / notatnika w celu ręcznej aktualizacji za każdym razem, gdy dodam plik. Ale zanim to zrobiłem, pomyślałem, że zadam pytanie, czy istnieje dobrze akceptowany sposób rozwiązania tego problemu, być może coś, co już istnieje, co dotyczy dokładnie tego problemu. Byłem ciekaw, czy zapytać o to tutaj, czy o stackoverflow, ponieważ jestem ciekawy zarówno konkretnego przypadku cocos2d-x, jak i ogólnego przypadku, gdy wiele projektów musi zostać zaktualizowanych za każdym razem, gdy dodawany jest nowy kod. Zdecydowałem się zamieścić to tutaj, ale jestem zainteresowany odpowiedzią na oba pytania (konkretnie, jeśli cocos2d-x ma coś już szeroko stosowanego do rozwiązania problemu i rozwiązania problemu w ogólnym przypadku).


title: Dlaczego uruchamianie wybranych elementów z serwera prod jest złe?

text: Zasadniczo szukam argumentów, aby przekonać wewnętrznych "konsultantów" w pracy, ponieważ następujące elementy nie działają: * Co się stanie, jeśli zrobisz dołączenie kartezjańskie i zawiesisz serwer? * Nie musisz wybierać z tego serwera. Masz do tego inne serwery. * To nie dla Ciebie, to dla klientów. Zamierzamy wdrożyć wyzwalacze o szerokim zasięgu DB, aby powstrzymać przypadkowe logowanie w godzinach pracy, ale z zabezpieczeniem przed awariami, aby deweloperzy / administratorzy baz danych mogli naprawiać problemy, jeśli się pojawią, ale potrzebują więcej argumentów, aby powstrzymać krzyki, które prawdopodobnie się wydarzą. **EDYTUJ** Aby wyjaśnić; nie ma rzeczywistych problemów. Baza danych będzie lepiej zablokowana bez względu na wszystko. Nie szukam technicznych powodów do robienia rzeczy ani porad dotyczących zarządzania bazą danych. Mam nadzieję, że jacyś inni technicy mają tu jakieś rady, jak wyjaśnić osobom nietechnicznym, być może tylko postrzegane, znaczenie tej konkretnej kwestii.


title: Obsługa wielu dzierżawców — pojedyncza baza danych a wiele baz danych

text: Mamy wielu klientów, których systemy mają pewną funkcjonalność, ale też są dość zróżnicowane. Liczba klientów rośnie - zawsze zdrowa rzecz! - rośnie również różnorodność między ich działalnościami. Obecnie istnieje jedna witryna sieci Web ASP.Net (formularze sieci Web) (w przeciwieństwie do projektu sieci Web), która ma podfoldery dla każdego najemcy z niestandardowymi stronami tego najemcy. Istnieje osobny projekt modelowy, który zajmuje się dostępem do bazy danych i logiką biznesową. Co jest preferowane - a co najważniejsze, dlaczego - między posiadaniem (a) 1 bazy danych na klienta, z tylko funkcjami powiązanymi z tym klientem; lub b) pojedynczą bazę danych współużytkowaną przez wszystkich klientów, w której tylko podzbiór tabel jest używany przez jednego klienta. Główne problemy w firmie kończą się: * utrzymywanie wielu zasobów - kopie zapasowe, kontrola wersji itp. * promowanie ponownego wykorzystania w jak największym stopniu W jaki sposób zapewnisz rozwiązanie tych problemów, które rozwiązanie jest preferowane i dlaczego? (Powstałem również odpowiedzi na podobne pytania) **Edytuj** : oto najważniejsze informacje z moich badań z innych źródeł: Czy powinienem używać jednej bazy danych na aplikację, czy dzielić jedną bazę danych między wieloma aplikacjami Podział jednego projektu na biblioteki Wspieranie wielodostępność Wielodostępność — pojedyncza baza danych kontra wiele baz danych http://msdn.microsoft.com/en-us/library/aa479086.aspx http://stackoverflow.com/questions/2213006/how-to-create-a-multi -tenant- database-with-shared-table-structures http://cloudcomputing.sys-con.com/node/1610582 http://blogs.msdn.com/b/cbiyikoglu/archive/2011/03/23/moving -to-multi-tenant- model-made-easy-with-sql-azure-federations.aspx http://ask.sqlservercentral.com/questions/3615/one-database-or-multiple.html http://devlicio .us/blogs/anne_epstein/archive/2009/04/24/the-case-for-multiple-dbs-in-multi-tenancy-situations.aspx http://ayende.com/blog/3497/multi-tenancy- model-danych-fizycznych http://www.codeproject.com/Articles/51334/Multi-Ten ants-Database-Architecture http://discuss.joelonsoftware.com/default.asp?design.4.319460.16 http://stackoverflow.com/questions/3479297/multiple-application-using-one- database http://stackoverflow .com/questions/1676552/single-or-multiple-databases http://mikehadlow.blogspot.co.uk/2008/11/multi-tenancy-part-1-strategy.html http://mikehadlow.blogspot.co .uk/2008/11/multi-tenancy-part-2-components- and.html http://www.sqlservercentral.com/Forums/Topic893107-373-1.aspx#bm1047297


title: Dobra praktyka tworzenia instancji obiektów w MVC

text: W MVC modele domeny (z warstwy modelu) powinny tworzyć instancje innych modeli domeny lub wszystkie modele domeny powinny być tworzone na kontrolerach i przekazywane za pomocą wstrzyknięć zależności? Jak zaimplementować to w rzeczywistych aplikacjach? Jeśli wybierzesz tę ścieżkę, czy kontroler nie przytyje?


title: Przemyślenia nad architekturą tworzenia stron internetowych poprzez integrację C++ w przyszłości z aplikacją webową

text: Zamierzam zbudować stronę internetową (właściwie to będzie komercyjny startup). Zobaczyłem to pytanie i _naprawdę_ rzuciło trochę światła na kilka rzeczy, które miałem nadzieję zrozumieć (chwała dla op). Po zobaczeniu tego, miałoby sens, że jeśli witryna nie musiałaby mieć milionów odwiedzin dziennie, nie byłoby opłacalnym rozwiązaniem napisanie backendu w C++ po stronie serwera. Ale to dało mi do myślenia. co jeśli w (mało prawdopodobnych) wydarzeniach z przyszłości _robi_ tę drogę? Problem polega na tym, że podczas gdy myślę o rozpoczęciu tego wszystkiego za pomocą .Net (na początku), tylko po to, aby uzyskać coś szybkiego i łatwego bez wielu kłopotów (w zakresie uczenia się), a następnie przejść do czegoś bardziej Open Source (takich jak Python/Django lub RoR) później, aby zaoszczędzić pieniądze i wspierać OSS, zastanawiam się, czy jeśli strona rzeczywiście stanie się duża, czy dobrym pomysłem będzie zintegrowanie backendu C++ i użycie Pythona na C++ dla silnego fundament, a następnie złagodzić HTML/CSS/AJAX/etc na fundamentach backendu? Domyślam się, że chciałbym wiedzieć, że biorąc pod uwagę okoliczności, gdyby to miało się wydarzyć, czy byłoby to właściwe podejście z punktu widzenia architektury? Zdecydowanie wspierałbym MVC, ponieważ wydaje się, że jest to świetny sposób na zaimplementowanie strony internetowej. W sumie, czy można by to uznać za racjonalne, czy też istnieją inne alternatywy? Lubię .Net i chciałbym go używać na początku, ponieważ mam _znacznie_ większe doświadczenie w tym niż, powiedzmy, Python czy PHP i wolę go ogólnie, ale naprawdę chcę wspierać OSS w przyszły. **Przypuszczam, że zdanie, którego szukam, brzmi: „czy to jest pragmatyczne?”**


title: Dzielenie się opłatami programistycznymi z innym programistą

text: Moje pytanie dotyczy tego, w jaki sposób powinienem dzielić opłaty wnoszone przez klientów ze mną i innym programistą, z których obaj są freelancerami. Myślałem o kilku opcjach, ale mam dylemat, która z nich byłaby najbardziej motywująca dla nas obojga. 1) Pierwsza opcja, o której pomyślałem, to akcja pięćdziesiąt pięćdziesiąt. Jednak więcej pracy umysłowej wykona mój kolega, a przynajmniej początkowo będę zajmował się komunikacją z klientami. 2) Druga opcja to udział 60-40, gdzie kolega, który wkłada więcej wysiłku, otrzymuje większy udział. Jest to opcja, którą najbardziej chciałabym przyjąć, ale nie jestem pewien, jak to będzie wyglądać na dłuższą metę. 3) Trzecia opcja polega na obliczeniu wkładu każdej osoby pod względem liczby przepracowanych godzin i odpowiednim podziale dochodów. Wspaniale będzie usłyszeć opinie wszystkich na ten temat!


title: XAML — Lubię/Nie lubię?

text: Po uderzeniu głową w ceglaną ścianę, którą jest XAML, postanowiłem przyjść tutaj i zapytać innych ludzi, czy są tak samo sfrustrowani jak ja. Więc * Czy lubisz XAML? Proszę uzasadnić. * Czy XAML to problem, czy brak dobrych narzędzi? Mój problem mógłby zostać rozwiązany, gdyby system powiązań podał mi lokalizację numeru wiersza pliku powiązania, które uległo awarii. To nie jest problem XAML, ale problem z debugerem. Poza problemami z narzędziami stwierdzam, że XML nie tworzy odpowiedniego języka programowania i że XAML ma obejścia, aby naprawić rzeczy, które nie stanowiłyby problemu w żadnym innym „prawdziwym” języku programowania. Na przykład formatowanie ciągu w powiązaniu. XAML przerywa się również, gdy trzeba wyjść poza strukturę hierarchiczną, np. w przypadku menu kontekstowych. Ponieważ są one zdefiniowane w hierarchii xaml, ludzie zakładają, że są również częścią hierarchii wizualnej, co nie jest prawdą. Może to prowadzić do subtelnych problemów z wiązaniem, które są trudne do debugowania itp. Dla porównania, HTML-CSS-Javascript działa dobrze, ponieważ każda część obsługuje określoną część wyświetlania strony internetowej. HTML dla danych i układu, CSS dla stylu i JavaScript do wykonania. W przeciwieństwie do tego XAML próbuje zrobić wszystko i kończy się niepowodzeniem. Pamiętaj, że uwielbiam WPF, więc nie traktuj tego jako krytyki WPF, Silverlight lub jakiejkolwiek konkretnej kontroli WPF/Silverlight. Interesuje mnie tylko dyskusja na temat języka XAML.


title: Konwencja przypadku — dlaczego różnica między językami?

text: Pochodzę ze środowiska Java, jestem bardzo przyzwyczajony do camelCase. Podczas pisania C użycie podkreślenia nie było dużym dostosowaniem, ponieważ było używane tylko oszczędnie podczas pisania prostych aplikacji uniksowych. W międzyczasie trzymałem się camelCase jako mojego stylu, podobnie jak większość zajęć. Jednak teraz, gdy uczę się C# w ramach przygotowań do moich nadchodzących jesiennych zajęć z projektowania użyteczności, konwencja PascalCase tego języka naprawdę mnie denerwuje i muszę bardzo polegać na intellisense, aby mieć pewność używana jest prawidłowa metoda API. Szczerze mówiąc, przejście na układ PascalCase nie zapadło jeszcze całkiem w pamięci mięśniowej, a to jest frustrujące z mojego punktu widzenia. Skoro C# i Java są uważane za języki bratnie, ponieważ oba wywodzą się od C++, to dlaczego różnice w konwencjach językowych? Czy była to osobista decyzja twórców oparta na ich poziomie komfortu, czy po prostu granie w gry umysłowe z nowymi osobami wprowadzającymi do języka?


title: Jak modelować opcjonalne przypadki użycia w UML

text: Powiedzmy, że chcę zamodelować aplikację, która pozwala użytkownikom modelować diagramy klas. Przypadek użycia wysokiego poziomu można zamodelować jako UC1:Model Class Diagram, który przekształca się w UC11: Model Class, UC12: Model Connection, UC13: Model Composition itp. Ponieważ UC11, 12, 13 są częścią UC 1, użyłem stowarzyszenie dołączania. Niestety, specyfikacja UML mówi, że dołączone przypadki użycia są istotnymi częściami i jeśli pominiesz jeden z nich, zachowanie wysokiego poziomu nie będzie już możliwe do osiągnięcia. Ale w tym przykładzie poprawny diagram klas można utworzyć bez modelowania połączenia lub kompozycji, więc te przypadki użycia są opcjonalne. Sprowadzając się do sedna: w jaki sposób można modelować opcjonalne przypadki użycia w UML, zapewniając jednocześnie mechanizm ponownego wykorzystania (np. skojarzenie z dołączeniem)?


title: Narzędzia open source PHP do zwinnego programowania

text: Witam wszystkich, Jest tak wiele pytań na Stackoverflow dotyczących narzędzi Agile, ale nie widziałem narzędzia, które można zainstalować na serwerze PHP. Po prostu szukam _**Open Source Scrum Tool**_ lub po prostu _**Open Source Scrum Dashboard**_ dla mojego zespołu, który można zainstalować w mojej przestrzeni internetowej (**php** ). Dziękuje Ci za pomoc!


title: Co dzieje się w świecie technologii serwerowych w związku z boomem na aplikacje mobilne?

text: Ponieważ technologie mobilne stają się coraz bardziej popularne, co dzieje się po stronie serwera z większością tych aplikacji, gdy muszą komunikować się z zapleczem? Jestem przyzwyczajony do świata technologii sprzed 10 lat, kiedy większość zasobów była dostępna przez żądanie dynamicznej strony internetowej, która za tym, co widziane, używała języka po stronie serwera, aby uzyskać potrzebne informacje z relacyjnej bazy danych. Czy nadal tak jest, a jeśli nie, to jakie są duże zmiany?


title: W linux, jak uzyskać „niekompatybilne” biblioteki i386 f77 do pracy z obecnymi kompilatorami Fortran, takimi jak gfortran?

text: Chciałbym uruchomić bibliotekę elf32-i386 libkernlib.a z programem Fortran 77 na moim najnowszym komputerze z systemem Linux Ubuntu. Z tego, co przeczytałem, `gfortran` jest wstecznie kompatybilny z Fortranem 77, ale mam problem z uruchomieniem go z biblioteką. Próbowałem -ff2c, -fbackflash itp., ale wszystko nadal daje mi $ gfortran -ff2c -O -o wyjście f77fortran.f -lkernlib /usr/bin/ld: pomijanie niekompatybilnych //usr/local/lib/libkernlib .a podczas wyszukiwania -lkernlib /usr/bin/ld: nie można znaleźć -lkernlib Próbowałem również użyć `fort77`. Nie mogę znaleźć działającego `f77`. **Jeśli ktoś wie, jak uruchamiać programy f77 i ich biblioteki, czy to za pomocą `gfortran` czy czegoś innego, byłoby świetnie.** Btw, biblioteka libkernlib.a ma starsze wersje z linków "biblioteki" na tej stronie, ale te, które wypróbowałem, dają ten sam błąd i są i386 (doszedłem do tego przez `objdump -f libkernlib.a`). Kontekst: To jest część projektu Mathematica, który używa starego kodu.


title: Model domeny a model widoku

text: Jestem na wczesnym etapie mojej kariery programistycznej i pracuję z MVC już od około roku. Spędziłem dużo czasu na poznawaniu wzorca i koncepcji, które za nim stoją, ale w miarę jak projekty, nad którymi pracuję, stają się większe, zaczynam myśleć, że może nie mam najlepszego zrozumienia, jak powinna wyglądać warstwa modelu pracować. Dużo słyszę o tym, aby zawsze mieć model widoku do ochrony modelu domeny, ale jak to działa w praktyce? Jak wygląda relacja między nimi? Co jeśli model nie potrzebuje dodatkowej logiki „widoku”, czy powinienem po prostu utworzyć jego kopię? Czemu?


title: Java dla idealnego odtwarzacza multimedialnego?

text: Nie mogę się doczekać zbudowania odtwarzacza multimedialnego z javą i zasadniczo znalazłem JMF. Ale z drugiej strony ten interfejs API nie jest aktualny i nie obsługuje najnowszych formatów, takich jak `MKV`. Podczas dalszych badań natknąłem się na http://stackoverflow.com/questions/10440152/any-simple-and-up-to-date-java-frameworks-for-embedding-movies-within-a-swing ale potem kopanie trochę więcej, zostawiło mi to http://stackoverflow.com/questions/8153227/adding-other-video-codecs-dvd-support-to-javafx-2-2 Teraz jestem rozczarowany i w naprawie jak wszystkie dobre odtwarzacze multimedialne (VLC, KMPlayer itp.) były w stanie obsługiwać wszystkie formaty wideo i audio. Muszą być zbudowane przy użyciu języka programowania IMHO ! Tak więc moje pytanie brzmi, aby zbudować `kompletny odtwarzacz multimedialny` który obsługuje `wszelkie rodzaje plików multimedialnych`: 1. Czy `JAVA` jest niekompetentna? 2. Czy kiedykolwiek zbudowano dobry odtwarzacz multimedialny używając `JAVA` ? 3. Jeśli Java nie może, jak jest ich tak wiele odtwarzaczy multimedialnych na `android`, z całą obsługą wideo? 4. Czy to tylko Java, czy żaden nowoczesny język nie może tego zrobić? 5. Czy muszę polegać i wybrać C, C++, aby to zrobić?


title: Używanie jednej tabeli do tożsamości i metadanych

text: Jestem we wczesnej fazie projektowania projektu, aby zapewnić platformę e-commerce, która będzie wymagała modelowania kilku podmiotów, produktów, klientów, zamówień, stron CMS itp. Wszystkie będą miały kilka cech wspólnych (identyfikator, znacznik czasu utworzenia, znacznik czasu ostatniej modyfikacji itp.). Moją pierwszą myślą było zwykle nadanie różnym tabelom kolumny ID, która będzie wykorzystywać mechanizm bazy danych do przypisywania unikalności (autoinkrementacja w MySQL, sekwencje w Postgresie itp.), ale biorąc pod uwagę, że mają one kilka cech wspólnych, rozważałem projekt, w którym wszystkie te dane są przechowywane w podstawowej tabeli BusinessObject, a tabele dla innych jednostek używają podstawowego klucza obcego, który odwołuje się do tabeli BusinessObject. Na przykład (w pseudokodzie) CREATE TABLE BusinessObject ( id, date_created, date_updated, is_deleted, // etc PRIMARY KEY id AUTOINCREMENT ); CREATE TABLE Klient ( id, imię, nazwisko, // etc PRIMARY KEY id FOREIGN KEY id REFERENCES BusinessObject.id ); CREATE TABLE Produkt ( id, nazwa, cena, opis, // etc PRIMARY KEY id FOREIGN KEY id REFERENCES BusinessObject.id ); i tak dalej. Przychodzi mi do głowy szereg zalet takiego podejścia. Po pierwsze, konkretny identyfikator zawsze mapuje tylko jeden konkretny obiekt. Na przykład identyfikator 3 w systemie, w którym każda tabela generuje własne identyfikatory, może odnosić się do klienta, zamówienia lub czegokolwiek innego, podczas gdy w powyższym projekcie identyfikator 3 zawsze będzie zamówieniem, ponieważ nigdy nie może być klienta lub produkt o identyfikatorze 3. Ułatwiłoby to ekstrapolację obiektu biznesowego, do którego prowadzi odwołanie, z adresu URL, umożliwiając prostszy routing w warstwie aplikacji. Jednak oznacza to również, że każda tabela w systemie musi się połączyć z tabelą BusinessObject i obawiam się, że spowodowałoby to pewne istotne wady. Na przykład fakt, że jedna konkretna tabela będzie brana pod uwagę w prawie wszystkich zapytaniach, może skutkować obniżoną wydajnością tej tabeli lub że wiersz w Kliencie może odwoływać się do tego samego wiersza w BusinessObject jako wiersza w produkcie, skutkujące utratą integralności danych, chyba że zostaną podjęte dodatkowe kroki, aby temu zapobiec. A zatem, jakie są zalety i wady projektu, w którym pojedyncza tabela dostarcza dane tożsamości dla większości reszty bazy danych? Czy takie projekty są dość powszechne, czy też lepiej jest po prostu, aby każda tabela miała własne źródło tożsamości i polegała na sprytniejszej logice aplikacji, aby określić, do którego obiektu się odwołuje?


title: Struktura danych: efektywnie sortuj i wyszukuj

text: Muszę mieć strukturę danych z powiedzmy 4 klucze. Mogę sortować według dowolnego z tych kluczy. Jaką strukturę danych mogę wybrać? Czas sortowania powinien być bardzo krótki. Pomyślałem o drzewie, ale będzie to tylko pomoc w wyszukiwaniu na jeden klucz. W przypadku innych kluczy będę musiał przerobić drzewo na tym konkretnym kluczu, a następnie je znaleźć. Czy istnieje jakaś struktura danych, która może obsługiwać wszystkie 4 klucze jednocześnie? te 4 pola [źródłowe ip, docelowe ip, źródłowy port, miejsce docelowe] mają łącznie 12 bajtów i całkowity rozmiar każdego rekordu - 40 bajtów.. mają też ograniczenia pamięci... wokół jednego lac operacje na rekordach to: wstawianie, usuwanie, sortowanie na różnych klawiszach. W przypadku drukowania sortowanie rekordów na jednym z klawiszy nie powinno zająć więcej niż 5 sekund.


title: Czy „3 lub więcej użyj for” jest dobrą zasadą?

text: Kiedy powtarzające się operacje stają się zapachem kodu? Przeczytałem ten artykuł Charlesa Petzolda, w którym to zasugerował i zastanawiałem się, co myślą ludzie.


title: Refaktoryzacja kodu aplikacji wysyłkowej w celu wykorzystania fabryk DDD

text: Próbowałem znaleźć przykłady wykorzystania fabryk DDD i natknąłem się na aplikację wysyłkową z książki Erica Evansa. Jednak kiedy sprawdziłem BookingService, kod do utworzenia `Cargo` miał ten komentarz w linii **37** : 34 public TrackingId bookNewCargo(final UnLocode originUnLocode, 35 final UnLocode destinationUnLocode, 36 final Date arrivalDeadline) { 37 // TODO modeling to jako fabryka ładunków może być odpowiednia 38 final TrackingId trackingId = cargoRepository.nextTrackingId(); 39 ostateczna lokalizacja pochodzenia = locationRepository.find(originUnLocode); 40 ostateczna lokalizacja docelowa = locationRepository.find(destinationUnLocode); 41 final RouteSpecification routeSpecification = new RouteSpecification(origin, destination, arrivalDeadline); 42 43 końcowy ładunek cargo = nowy ładunek (trackingId, routeSpecification); 44 45 cargoRepository.store(cargo); 46 logger.info("Zarezerwowany nowy ładunek z identyfikatorem śledzenia " + cargo.trackingId().idString()); 47 48 powrót cargo.trackingId(); 49 } W jaki sposób należy tutaj wykorzystać fabrykę DDD? Które dokładnie części powinny zostać zrefaktoryzowane, aby wykorzystać fabrykę w tym fragmencie kodu?


title: Czy wszystkiemu programowaniu, w tym refaktoryzacji, powinien towarzyszyć problem ze śledzeniem?

text: **Debata:** Czy wszelkim pracom deweloperskim, w tym refaktoryzacji, powinna towarzyszyć kwestia śledzenia? (w naszym przypadku Jira) **Wspólna płaszczyzna:** Naszym nadrzędnym celem jest jakość. Działający produkt, każde wydanie, jest ważniejszy niż cokolwiek innego. Nasza baza kodu jest stara i brakuje testów automatycznych; pracujemy nad tym, ale to projekt długoterminowy, potrzebujemy procesów przejściowych. **Pozycja 1:** Refaktoryzacja musi być śledzona w Jira. Jeśli nie jest to w oczywisty sposób związane ze zmianą, którą wprowadzasz, musisz poruszyć inną kwestię. Jeśli tego nie zrobisz, praca ominie przegląd i testowanie i istnieje ryzyko dla naszego głównego celu. Argumentowano, że zgodność PCI (cel biznesowy na niedaleką przyszłość) wymaga tego poziomu śledzenia; Nie jestem w stanie powiedzieć, czy to prawda czy fałsz z jakimkolwiek stopniem pewności. **Pozycja 2:** Jakość kodu jest bardzo ważna. Im lepiej się to robi (do pewnego momentu; punktu, do którego nie jesteśmy w pobliżu), tym większe prawdopodobieństwo, że będziemy nadal wypuszczać działający produkt. Wszystko, co stawia barierę, nieważne jak małą, na drodze refaktoryzacji, stanowi zagrożenie dla naszego głównego celu. Często IDE wykonuje pracę za Ciebie, więc i tak nie może się nie udać. **Zastosowaliśmy następujące przypadki:** Czy spełniłoby to oba warunki, gdyby programista napisał na karcie „Refaktor” i odpowiednie numery wersji? Szczerze mówiąc, wydaje się, że sprawi to, że wszyscy będą równie nieszczęśliwi. Wciąż stawia pewien opór podczas refaktoryzacji, ale nie zapewnia wystarczającego śledzenia. A co z posiadaniem kompleksowych problemów Jira, które obejmują prace refaktoryzacyjne dla iteracji? Tak, to usuwa warstwę oporu programistów, ale obawiam się, że usuwa również korzyści ze śledzenia związane z problemem Jira. W jaki sposób kontrola jakości ma jasny pomysł, co należy przetestować? Wydaje się to być rozwiązaniem politycznym, mającym na celu uspokojenie wszystkich poprzez dodanie lekkiego, ale ostatecznie bezsensownego procesu. Wydaje mi się, że biorąc pod uwagę, że obie strony debaty ostatecznie chcą tego samego, powinno istnieć rozwiązanie, które naprawdę uszczęśliwi wszystkich. Nie mogliśmy być pierwszymi osobami, które zadały to pytanie, więc jakie doświadczenia mieli inni w podobnych sytuacjach?


title: Jakie są główne praktyki i wzorce projektowe, które powinien znać każdy użytkownik .NET?

text: W moim krótkim czasie pracy jako zawodowy programista widziałem wiele aplikacji napisanych przez programistów, których cała edukacja wydaje się czytać kilka pierwszych rozdziałów w książce .NET 2.0. Heck, kiedy zaczynałem, napisałem większość tych aplikacji! Jakie są największe wzorce projektowe kluczowe dla pisania AWESOME .NET aplikacji? Przez niesamowite mam na myśli też wnętrze!


title: Które aplikacje napędzały rozrzut masy jednostek zmiennoprzecinkowych?

text: Jednostki zmiennoprzecinkowe są obecnie standardem w procesorach, a nawet komputery stacjonarne mogą ich dziś używać (efekty 3D). Zastanawiam się jednak, które aplikacje początkowo napędzały rozwój i masowe przyjęcie jednostek zmiennoprzecinkowych w historii. Dziesięć lat temu, myślę, że większość zastosowań arytmetyki zmiennoprzecinkowej stanowiła 1. Aplikacje inżynieryjne i naukowe 2. Grafika 3D w grach komputerowych Myślę, że dla każdej aplikacji, w której w tym czasie mogły pojawić się liczby dziesiętne, arytmetyka stałoprzecinkowa była wystarczająca ( grafika 2D) lub nawet pożądana (finanse). Użycie liczb całkowitych byłoby wtedy wystarczające. Myślę, że te dwie aplikacje były główną motywacją do ustanowienia arytmetyki zmiennoprzecinkowej w sprzęcie jako standardu. Czy możesz wymienić innych, czy jest jakiś ważny powód, by się nie zgodzić?


title: Klasa główna przekazuje dbConn obj do wszystkich swoich usług, muszę zmienić dbConn dla jednej z jej usług. - propozycja wzoru projektowego

text: Istnieje ta główna klasa i jest kilka usług ( które używają połączenia db do pobierania danych ) Te usługi są inicjowane w głównej klasie Właściwości db są uzyskiwane z pliku właściwości, a następnie dbconnection jest otwierane przez wywołanie metody dbOpen() zapisanej w główna klasa i wynikowy obiekt połączenia jest ustawiany na obiekty usługi poprzez iterację po liście usług i wywołanie metody setConnection na usłudze `uwaga: usługi są tworzone w głównej klasie, a główna klasa nie jest nadklasą usług .` Muszę również wspomnieć, że istnieje scenariusz `recycle db connection`, którego świadoma jest tylko klasa główna. /** łączy się z bazą danych, opcjonalnie odtwarza istniejące połączenie), * zgłasza RuntimeException, jeśli nie można się połączyć */ private void connectDb(boolean recycle) { try { if (recycle) { log.status( log.getSB().append(" Recykling połączenia DB") ); zamknijDb(); } otwórzDb(); for ( int i = 0 ; i < service.length ; i++ ) { service[i].setConnection(db); } } Jedna z usług musi korzystać z innej bazy danych, jaki jest najlepszy wzorzec projektowy?


title: Czy w WPF powinienem opierać moje konwertery na typach lub przypadkach użycia?

text: Szukam porady, jak napisać moje konwertery wartości WPF. Sposób, w jaki obecnie je piszę, są bardzo specyficzne, jak (bool?,bool) => Brush, czyli piszę każdy konwerter pod konkretny przypadek użycia, w tym przypadku Brush jest powiązany ze wskaźnikiem pokazującym informacje o równości między boolem? i bzdury. To oczywiście sprawia, że ponowne użycie jest bardzo trudne i kończę z dość dużą listą konwerterów. Czy powinienem starać się pisać moje konwertery w bardziej ogólny sposób? Czy mogę?


title: Technika dla wielu użytkowników na tych samych zbiorach danych

text: To bardziej pytanie do nauki niż kodowania, ale jestem pewien, że jest to powszechny problem dla każdego, kto tworzy systemy administracyjne lub aplikacje w php/mysql/js itp. Opracowałem dość złożoną aplikację, która pozwala użytkownikom przesyłać obrazy i definiować hotspoty w nich z powiązanymi działaniami. Obrazy są przechowywane w tabeli, a akcje w innej, z danymi json dla każdej akcji w polu tekstowym. Jednak, jak mówię, problem jest ogólny. Zasadniczo obawiam się, że jeśli ktoś edytuje ten sam obraz i zestaw działań w tym samym czasie i oboje przesyłają zmiany, lub jeśli był edytowany przez kogoś innego, to istnieje cała seria struktur, które potencjalnie zakończą się niepowodzeniem po przesłaniu. Nie chcę wdrażać systemu blokowania, ponieważ system jest bardzo szeroki (linki do innych obrazów itp.) i myślę, że jest trochę brzydki. Widziałem ten link (artykuł o architekturze MSDN Multi-tenant) w innym pytaniu, ale wydaje się trochę przytłaczający i wyspecjalizowany dla serwera sql. Więc - jakie są tutaj warunki dotyczące architektury danych i systemu, które mogę zbadać, czy też są jakieś dobre artykuły na ten temat, które ludzie mogą polecić? Specjalnie dla świata php/web byłoby świetnie!


title: używanie znaków towarowych/obrazów chronionych prawem autorskim w mojej publicznej aplikacji internetowej

text: Rozważmy publiczną aplikację internetową, która chce „wyglądać” lepiej, wykorzystując korporacyjne obrazy. Zdjęcia miałyby zostać wykorzystane, aby dać odwiedzającym witrynę wybór: Coca-Cola lub Pepsi, Starbucks lub Dunkin, Yankees lub Red Sox itp. Jest to usługa, która chce poprawić wrażenia użytkownika, umieszczając te logo w odpowiednich miejscach. Aplikacja internetowa nie będzie sprzedawać tych obrazów ani niczego z obrazami. Witryna będzie generować przychody za pośrednictwem reklam lub płatnych usług. Czy w sieci istnieje ogólnie przyjęta praktyka dotycząca obrazów lub logo będących znakami towarowymi? Czy zostało to przetestowane prawnie w jakiejkolwiek jurysdykcji?


title: Kiedy mogę powiedzieć, że umiem programować w C?

text: Zobaczmy. Widziałem w kilku miejscach, w tym Advice for Computer Science College Students autorstwa Joela Spolsky'ego, że absolwent informatyki musi znać C. **Skąd mam wiedzieć, czy znam C, czy nie?** Opracowałem kilka projekty w C (implementacja systemu plików _ext2_ z FUSE i kilkoma innymi), ale przypuszczam, że oznacza to coś więcej niż tylko znajomość wskaźników, wolne itp.


title: Skalujesz się w porównaniu z lepszym modelem programisty/roli?

text: Po obejrzeniu tego filmu muszę zapytać, jak programista może mierzyć się z innymi, lepszymi programistami, tak jak zrobiłby to szachista. Jak zdecydujesz, kto jest wzorem do naśladowania na początek? Mam na myśli to, że Jamesa Goslinga zna każdy programista Java, ale to on wynalazł język i prawie na pewno istnieje ekspert, który mógłby mu pokazać kilka sztuczek. Teraz powiedz, że znalazłeś ten wzór do naśladowania. Może to być, powiedzmy, supergwiazda StackOverflow, Jon Skeet. Można przeczytać jego odpowiedzi na StackExchange, odwiedzić jego bloga i przeczytać jego książki, ale co z rzeczywistymi umiejętnościami programowania? Jak mógłbyś zająć się rozwiązywaniem problemów i określaniem, gdzie jesteś w spektrum umiejętności programistycznych?


title: Przejrzyj moją hierarchię klas

text: Stworzyłem hierarchię klas dla systemu inwentaryzacji książki/magazynu. Oto obrazek: ![wpisz tutaj opis obrazka](http://i.stack.imgur.com/3WGKd.jpg) Czy to wystarczy? Wiem, że nie ma jeszcze zajęć z czasopism, ale zastanawiałem się, czy ktoś mógłby zaproponować lepszy pomysł.


title: Sprzedaż projektu open source: niektóre problemy

text: Jestem twórcą / głównym programistą małego projektu open source (PHP) (GPL3). Obecnie istnieje zespół programistów składający się z 3 osób (w tym ja). Ten zespół jest dość aktywny od jakiegoś czasu, ale od prawie 2 lat niewiele się wydarzyło. Sam zdecydowałem, że chcę przestać pracować nad projektem, ale nie mogę tak po prostu opuścić projektu, bo mi na nim zależy i wiem, że jeśli go porzucę, to tylko kwestia czasu, zanim projekt całkowicie umrze. W tej chwili jest jeszcze kilku użytkowników, a projekt jest tylko trochę nieaktualny. Zastanawiam się więc nad sprzedażą całego projektu. Oczywiście musiałbym uzyskać zgodę innych deweloperów, ale na razie zakładam, że to nie jest duży problem. Więc w tej chwili mam 2 pytania: 1) Gdyby projekt został sprzedany stronie komercyjnej, czy byłoby możliwe przekonwertowanie projektu na zamknięte źródło? Wolałbym sprzedać projekt firmie/organizacji, która kontynuowałaby rozwój na licencji open source. 2) Czy ktoś ma jakieś wskazówki, jak znaleźć zainteresowanych? Nie wiem, czy chcę po prostu umieścić na stronie projektu napis „Na sprzedaż”. Może ktoś ma doświadczenie w podobnej sytuacji. Ok, z góry dzięki!


title: Gdzie jest M w MVC?

text: Próbuję przerobić moją aplikację na MVC, ale utknąłem w części M. W aplikacji opartej na bazie danych model jest zaimplementowany w kodzie aplikacji, prawda? Ale wtedy **co znajduje się w bazie danych — czy to nie jest również model?** _(Nie używam bazy danych jako prostej składnicy obiektów — dane w bazie danych to zasób przedsiębiorstwa)._


title: Jak obsługiwać wiele wersji oprogramowania układowego?

text: Pracuję nad aplikacją, która komunikuje się z urządzeniem Bluetooth o niskim zużyciu energii (BLE) i wymienia z nim spersonalizowane dane. Nasz zespół zdefiniował modele danych i istnieje metoda, która przeanalizuje ładunek danych i przypisze wartości do odpowiednich cech. Wszystko działa dobrze, dopóki nie wprowadzimy nowego oprogramowania. W tym nowym oprogramowaniu sprzętowym niektóre wartości w ładunku danych zostały ponownie zdefiniowane lub zmieniono przesunięcie określonej wartości. Tak więc metoda analizowania będzie musiała zostać zaktualizowana/przepisana zgodnie z nową definicją ładunku. Wtedy pojawia się problem: obie wersje oprogramowania muszą być obsługiwane! Oczywiście mógłbym teraz napisać dużo if/else w metodzie parsowania, ale co się stanie, jeśli 3 inne aktualizacje oprogramowania pojawią się jedna po drugiej? Wyobrażam sobie, że kod stanie się trudny do odczytania i straci swoją prostotę. Zastanawiam się, czy istnieje elegancki sposób na zarządzanie współistnieniem wersji oprogramowania. Może wzór projektowy, który można tu przyjąć? **Aby uczynić to bardziej szczegółowym:** W mojej klasie modelu `Temperatura` mam następujące właściwości: @property (nonatomic, readonly) float temp_outside; @property (nieatomowe, tylko do odczytu) float temp_inside; Biblioteka musi obsługiwać 3 różne wersje oprogramowania: * **V1** obsługuje tylko `temp_outside` * **V2** obsługuje `temp_outside` i `temp_inside` * **V3** obsługuje `temp_outside` i ` temp_inside`, ale `temp_inside` należy uzyskać inaczej niż w przypadku **V1 i V2** Zakładając, że oprogramowanie układowe udostępnia swoje informacje w `danych producenta` reklam jako surowe dane: * **Oprogramowanie V1:** 00 42 0a * (bajt 1: sw id, bajt 2: id protokołu, bajt 3: temp_outside) * **V2 firmware:** 00 43 0a 10 * (bajt 1: sw id, bajt 2: id protokołu, bajt 3: temp_outside , bajt 4: temp_inside) * **V3 firmware:** 00 44 10 0a * (bajt 1: sw id, bajt 2: identyfikator protokołu, bajt 3: temp_inside, bajt 4: temp_outside) Jaki jest najlepszy sposób na zaimplementowanie tego ? Należy wziąć pod uwagę kilka rzeczy: 1. Model posiada wartości, które mogą nie być wypełnione przez określone oprogramowanie; czy powinienem mieć osobne modele na oprogramowanie układowe lub jak mogę się upewnić, że dostęp do obsługiwanych właściwości będzie dostępny? 2. Metoda odpowiedzialna za parsowanie bajtów do modelu musi obsługiwać wszystkie firmware. Czy powinna istnieć jedna metoda/parser z kilkoma warunkami w oparciu o identyfikator protokołu czy kilka klas parserów? 3. Korzystanie z biblioteki w kontrolerach widoków powinno być jak najbardziej wygodne.


title: Jakie informacje mogę wyodrębnić z pliku dll?

text: Wcześniej miałem do czynienia z wirusem, który był plikiem .dll zamaskowanym jako RUNDLL.dll, który jest regularnie widoczny w menedżerze zadań i uruchamia się podczas uruchamiania. Chciałbym wiedzieć, ile informacji mogłem wydobyć z tej biblioteki dll przed jej usunięciem. Użyłem reflektora .NET, a plik był nierozpoznany (co oznacza, że nie był to kod c# z tego, co rozumiem). Użyłem Visual Studio i próbowałem się do niego odwołać, ale zostałem powitany przez inny błąd. Visual studio obsługuje wszystkie języki .net, więc byłem co najmniej zaskoczony. Spodziewałem się znaleźć przynajmniej nazwy funkcji w przeglądarce obiektów, jeśli nie cokolwiek innego. Dekompilacja prawdopodobnie byłaby stratą czasu, gdyby był to c++/c, ponieważ byłby to po prostu kod asemblera. W jaki sposób plik .dll taki jak ten może zapobiegać ujawnianiu informacji (nazw funkcji, liczby funkcji itp.)? Czy pliki c++/c .dll są w zasadzie niemożliwe do zbadania w celu uzyskania dalszych informacji? Dziękuję.


title: W jaki sposób menedżer może zapewnić, że programiści codziennie pchają do początku?

text: Nasz zespół korzysta z Gita od kilku lat. Uwielbiam to po wcześniejszym korzystaniu z Visual Source Safe, SVN i TFS. Jednak mój menedżer jest coraz bardziej poruszony tym i grozi, że wróci do SVN lub TFS. Problem tkwi w ludzkiej naturze: programiści zapominają codziennie naciskać do źródła, potem chorują lub biorą urlop, a ktoś inny musi odebrać projekt i nie wiedzą, czy najnowszy kod jest w początku, czy też siedzi na maszynie nieobecnego programisty. Nie ma widoczności, który programista jako ostatni pracował nad którym plikiem, tak jak w przypadku scentralizowanego systemu kontroli źródła. Naprawdę chcę uniknąć powrotu do SVN TFS. Więc moje pytanie brzmi: jak zespół może z powodzeniem korzystać z Gita w sposób, który uwzględnia ludzką naturę (zapominanie, lenistwo itp.)? Jak mogę się upewnić, że pod koniec każdego dnia najnowszy kod zostanie przekazany do źródła, aby ktoś inny mógł wkroczyć i przejąć kontrolę następnego dnia, jeśli zajdzie taka potrzeba? Czy odpowiedź jest ciągłą integracją? Czytałem o przepływach pracy, które obejmują konieczność wypychania do gałęzi CI w źródle w celu skompilowania projektu.


title: Używasz Google Analytics do śledzenia statystyk odwiedzających/pobierania dla projektu Google Code?

text: Czy możesz używać Google Analytics do śledzenia odwiedzających/pobierających dla projektu Google Code? Szukałem odpowiedzi w Google, ale otrzymuję wyniki dotyczące Google Analytics jako samego projektu Google Code, a nie zastosowania go do projektu Google Code w celu uzyskania danych o odwiedzających/pobieranych.


title: Kod Morse'a - drzewo binarne

text: Jak określana jest reprezentacja litery alfabetem Morse'a? "E" = "." "T" = "-" Dlaczego nie jest alfabetyczne? Jak w niech "A" = ".", "B" = "-", "C" =".-" itd. Staram się opracować algorytm przemierzającego Drzewo Binarne wypełnione tymi literami. Moim głównym celem jest szukanie litery, takiej jak „A”, ale nie wiem, jakich warunków użyć, aby określić, kiedy rozgałęziać się do prawego lub lewego węzła.


title: Amazon Cloud (EC2) z serwerem SQL. Płacić za instancję SQL lub korzystać z AMI z SQL Server Express?

text: Rozważałem użycie chmury Amazon (EC2) dla małej aplikacji workflow. Jeśli chodzi o moc i pamięć masową, baza danych SQL Server Express spełni moje potrzeby z nawiązką. Zostałem ostrzeżony przed płaceniem tylko za instancję serwera Windows i instalowaniem SQL Server Express ze względu głównie na kwestie bezpieczeństwa. Czy rozsądne jest myślenie, że istnieje obraz maszyny Amazon (wstępnie skonfigurowane obrazy, które można załadować na swoją instancję) z zainstalowanym SQL Server Express, gdzie większość "utwardzania" serwera została zajęta? Mądrym kursem może być po prostu zapłacenie za instancję Windows + SQL Server, więc jest już skonfigurowana dla mnie, ale jest to spora różnica w kosztach.


title: Książka problemów i odpowiedzi SQL dla działającego programisty SQL

text: Wczoraj zwrócono mi uwagę, że muszę zdobyć książkę o SQL i dobrze się o tym dowiedzieć. To chyba uczciwa ocena; Jestem działającym programistą SQL, który na ogół potrafi wyodrębnić z bazy danych potrzebne informacje, ale gdy tylko wyodrębnię dane, potrzebuję więcej niż kilku „join” i klauzuli „where” zapytania, które wymyśliłem prawdopodobnie nie jest tak dobry, jak mógłby być. Wcześniej pracowałem w sklepie Oracle, gdzie było kilku bardzo dobrych programistów SQL, którzy generalnie projektowali bardziej złożone zapytania i byli pod ręką, aby odpowiedzieć na pytania, ale teraz jestem w sklepie SQL Server, gdzie nikt tak naprawdę nie ma zbyt wiele pojęcia o SQL, więc czuję, że muszę podnieść swoje umiejętności. To czego szukam to książka, która jest dość krótka i bardzo praktyczna, którą mogę przerabiać wieczorami z serią trudnych problemów SQL, a następnie dobrze wyjaśnionymi rozwiązaniami wraz z kilkoma mądrymi radami skierowanymi do programisty kto potrafi "robić SQL", kto chce zostać bardziej "programistą SQL". Doceniam to, że wiele rzeczy związanych z SQL zależy od platformy, więc ponieważ obecnie pracuję w sklepie SQL Server, wolę książkę skierowaną na TSQL. Jakieś sugestie?


title: Jak zaawansowane są metody rozpoznawania autora?

text: Na podstawie tekstu napisanego przez autora, jeśli program komputerowy analizuje tekst, ile może dziś powiedzieć program komputerowy o autorze niektórych (wystarczająco długich, by były istotne statystycznie) tekstów? Czy program komputerowy może nawet stwierdzić z „pewnością”, czy mężczyzna czy kobieta napisali ten tekst wyłącznie na podstawie treści tekstu, a nie na podstawie śledztwa, takiego jak numery IP itp.? Interesuje mnie, czy istnieją algorytmy używane na przykład do automatycznego rozpoznania, czy autor był mężczyzną czy kobietą, lub podobnych cech autora, które program komputerowy może określić na podstawie analizy tekstu pisanego przez autora. Warto wiedzieć przed przeczytaniem wiadomości, co komputer analizuje o autorze, zgadzasz się? Jeśli na przykład dostanę dłuższą wiadomość od mojej żony, że miała wypadek w Nigerii, a program komputerowy powie, że z 99% prawdopodobieństwem wiadomość została napisana przez mężczyznę po sześćdziesiątce niekaukaskiego pochodzenia lub podobnie, albo przez ktoś, kto nie jest moją żoną, program komputerowy może pomóc mi zbadać, dlaczego dana wiadomość różni się cechami. Mogą również istnieć inne zastosowania, na przykład po prostu wykrywanie wartości odstających w większym zbiorze danych ograniczonym geograficznie lub demograficznie. Wykrywanie oszustw to oczywiste zastosowanie, o którym myślę, ale mogą być też inne zastosowania. Czy istnieją już takie programy, które analizują tekst pisany, aby powiedzieć coś o autorze na podstawie doboru słów, użycia zaimków, nietypowego użycia języka lub podobnie?


title: Algorytmy redundancji danych i przełączania awaryjnego dla rozproszonego systemu pamięci masowej?

text: Buduję rozproszony system pamięci masowej, który działa z różnymi rozmiarami pamięci. Na przykład moje urządzenia pamięci masowej mają rozmiary 50 GB, 70 GB, 150 GB, 250 GB, 1000 GB, 5 systemów pamięci masowej w jednym systemie. Moja aplikacja będzie przechowywać wszystkie pliki w systemie pamięci masowej. Pytanie: Jak mogę zbudować rozproszoną pamięć masową z ideą redundancji danych i przełączania awaryjnego do przechowywania dokumentów, filmów wideo, dowolnego typu plików, jednocześnie zapewniając, że w przypadku awarii jednego z urządzeń pamięci masowej będzie ich kolejna kopia pliki na innym urządzeniu pamięci masowej. Problem polega jednak na tym, że 50 GB pamięci może przechowywać tylko tę maksymalną liczbę plików w porównaniu do 70 GB, 150 GB itp. Mając na uwadze jedną pamięć, przyniesienie 5 systemów pamięci masowej, takich jak pamięć w chmurze, czy istnieje logiczny sposób na dystrybucję lub przechowywanie pliki za pośrednictwem mojej aplikacji? Jak zapewnić nadmiarowość danych w przypadku różnych rozmiarów magazynu? Czy istnieje jakiś algorytm do sortowania wielu plików blob w jednym archiwum plików? Jakie jest najlepsze rozwiązanie dla jednej pamięci masowej w chmurze z wieloma różnymi rozmiarami pamięci? Otwieram ten temat w celu omówienia najlepszego sposobu realizacji tego pomysłu, zakładając prostotę, jakie są problemy tej realizacji, pomiary wydajności i omówienie ograniczeń.


title: Wykorzystanie trwałych struktur danych w językach niefunkcjonalnych

text: Języki, które są czysto funkcjonalne lub prawie czysto funkcjonalne, korzystają z trwałych struktur danych, ponieważ są niezmienne i dobrze pasują do bezstanowego stylu programowania funkcjonalnego. Ale od czasu do czasu widzimy biblioteki trwałych struktur danych dla języków (opartych na stanie, OOP), takich jak Java. Często słyszy się twierdzenie na korzyść trwałych struktur danych, że ponieważ są one niezmienne, są _bezpieczne wątkowo_. Jednak powodem, dla którego trwałe struktury danych są bezpieczne wątkowo, jest to, że jeśli jeden wątek miałby "dodać" element do trwałej kolekcji, operacja zwraca kolekcję _new_ podobną do oryginalnej, ale z dodanym elementem. Inne wątki zatem zobaczą oryginalną kolekcję. Te dwie kolekcje mają oczywiście wiele wspólnego stanu wewnętrznego -- dlatego te trwałe struktury są wydajne. Ale ponieważ różne wątki widzą różne stany danych, wydaje się, że trwałe struktury danych same w sobie _nie_ są wystarczające do obsługi scenariuszy, w których jeden wątek wprowadza zmianę, która jest widoczna dla innych wątków. W tym celu wydaje się, że musimy użyć takich urządzeń jak atomy, referencje, oprogramowanie pamięci transakcyjnej, a nawet klasyczne zamki i mechanizmy synchronizacji. Dlaczego zatem niezmienność PDS jest reklamowana jako coś korzystnego dla „bezpieczeństwa wątków”? Czy istnieją realne przykłady, w których PDS pomagają w synchronizacji lub rozwiązywaniu problemów ze współbieżnością? A może PDS to po prostu sposób na zapewnienie bezstanowego interfejsu do obiektu w celu wsparcia funkcjonalnego stylu programowania?


title: Zagrożenia bezpieczeństwa związane z niepodpisanymi manifestami ClickOnce

text: Korzystając z podpisanych manifestów we wdrożeniach ClickOnce, nie można modyfikować plików po opublikowaniu pakietu wdrożeniowego — instalacja zakończy się niepowodzeniem, ponieważ informacje o skrótach w manifeście nie będą pasować do zmodyfikowanych plików. Niedawno natknąłem się na sytuację, w której było to problematyczne - klienci muszą mieć możliwość ustawienia takich rzeczy, jak parametry połączenia w app.config przed wdrożeniem oprogramowania dla swoich użytkowników. Ominąłem problem, usuwając zaznaczenie opcji „Podpisz manifesty ClickOnce” w programie VS2010 i jawnie wykluczając plik app.config z listy plików, aby podczas procesu publikowania były generowane skróty. Z powiązanej strony na MSDN > "Niepodpisane manifesty mogą uprościć tworzenie i testowanie > aplikacji. Jednak niepodpisane manifesty wprowadzają znaczne zagrożenia > bezpieczeństwa w środowisku produkcyjnym. Rozważ użycie niepodpisanych manifestów tylko wtedy, gdy > aplikacja ClickOnce działa na komputerach w intranecie to jest > całkowicie odizolowane od Internetu lub innych źródeł złośliwego kodu." W mojej sytuacji nie jest to natychmiastowy problem - wdrożenie nie będzie połączone z Internetem. Jednak jestem ciekaw, jakie byłyby „istotne zagrożenia bezpieczeństwa” związane z tym, co zrobiłem, gdyby było to połączenie internetowe (lub gdyby coś się zmieniło i musiało to nastąpić w przyszłości). Z góry dziękuję! * * * **Edycja / kontynuacja:** Czy _nie podpisuje_ manifestu ClickOnce stanowi niepodpisany manifest (zgodnie z definicją MSDN)? Manifest aplikacji zawiera skrót plików w pakiecie wdrożeniowym. Wszelkie zmiany w zawartych w nim plikach powodują niepowodzenie sprawdzania poprawności podczas instalacji. Czy to w ogóle neguje powyższe zagrożenia bezpieczeństwa?


title: Rozwiązania dla błędów zaokrąglania liczb zmiennoprzecinkowych

text: Budując aplikację, która zajmuje się wieloma obliczeniami matematycznymi, napotkałem problem polegający na tym, że pewne liczby powodują błędy zaokrąglania. Chociaż rozumiem, że liczba zmiennoprzecinkowa nie jest dokładna, problemem jest _jak_ mam sobie radzić z dokładnymi liczbami, aby upewnić się, że podczas wykonywania na nich obliczeń zaokrąglanie zmiennoprzecinkowe nie powoduje żadnych problemów?


title: Automatycznie twórz lub aktualizuj obiekt w bazie danych

text: Mam klasę bazy danych z następującym interfejsem: public Database { //zwraca false jeśli p (jego identyfikator) jest już dostępny //w przeciwnym razie dodaje p do listy i zwraca true public boolean create(Person p); //zwraca false jeśli p (jego ID) nie został znaleziony na liście //zastępuje dostępną Person q (q.ID == p.ID) na p i zwraca true public boolean update(Person p); //zwraca false jeśli p (jego ID) nie został znaleziony na liście //oznacza dostępną Person q (q.ID == p.ID) jako nieaktywną zwraca true public boolean remove(Person p); } „Osoba” jest niezmienna i można ją zidentyfikować za pomocą unikalnego identyfikatora. Mam `EditDialog`, który wygląda tak: ![Edycja osoby i dostępne funkcje Zapisz/Wybierz/Usuń](http://i.stack.imgur.com/H7l0E.png) Chciałem ponownie użyć mojego kodu i więc `EditDialog` służy do tworzenia `Person` lub jej aktualizacji. Tak więc to okno dialogowe jest inicjowane przez dostępną instancję `Person` (Edit-Operation) lub przez nową (Create-Operation). Ponieważ dowiedziałem się, że zawsze istnieje zły użytkownik, chciałem uniknąć następującego scenariusza: * Kliknij przycisk "Utwórz osobę" * Nowa `Osoba` jest tworzona w Bazie danych * Wyświetla się `EditDialog` dla nowej `Osoby` * Kliknij "Kancelaria" button * `Osoba` musi zostać usunięta (= oznaczona jako nieaktywna) z `Bazy danych` * `EditDialog` jest usuwany * powtórz Co doprowadziłoby do wielu nieaktywnych `Osob` w `Bazie danych`. Zdecydowałem się więc utworzyć `Osobę` w `Bazie danych` tylko wtedy, gdy użytkownik kliknie przycisk „Zapisz”. Co prowadzi do dwóch możliwych scenariuszy dla `Listener` przycisku „Save”: 1. Nowa osoba powinna zostać utworzona w `Database` 2. `Person` powinna zostać zaktualizowana w `Database` Tak wygląda kod Listener jak poniżej: if(!database.create(p) { database.update(p); } Co moim zdaniem nie jest takie ładne. Długie i krótkie jest, **czy baza danych powinna automatycznie** * * *zaktualizować`Osobę`, jeśli jest dostępna przy wywołaniu `create(osoba)`?** * **utworzyć`osobę`, jeśli nie jest jeszcze dostępna przy wywołaniu `aktualizacji(osoba)`?** **Czy jest jest inne rozwiązanie/praktyka, o której nie myślałem?**


title: Jak zamodelować prosty system plików za pomocą diagramu klas UML

text: Chcę zamodelować system plików, który zawiera zarówno pliki, jak i katalogi, a katalogi mogą zawierać pliki lub inne katalogi. Do tego doszedłem do tej pory: ![Mój prosty diagram klas systemu plików](http://i.stack.imgur.com/6URV9.png) W książce OOSE natomiast prezentowany jest podobny model: ![klasa przedstawiony schemat systemu plików](http://i.stack.imgur.com/GonyF.png) Teraz mam dwa pytania: 1. Zastanawiam się, dlaczego autor nie użył _Interfejsu_ do reprezentowania typu abstrakcyjnego **FileSystemElement* *? Czy użycie interfejsu dla tego typu jest nieprawidłowe? 2. Jak wiemy, pliki i katalogi muszą mieć nazwy z podobnym ograniczeniem (np. maksymalna długość 256 znaków). Dlatego byłoby miło, gdybym modelował to w **FileSystemElement**. Ale **interfejs** nie może mieć _abstrakcyjnego atrybutu_ , więc muszę powtórzyć atrybut **nazwa** zarówno w klasach **Directory**, jak i **File**. Czy istnieje lepsze obejście tego problemu?


title: Co powinien zrobić architekt?

text: Wydaje się, że rola architekta różni się w zależności od firmy programistycznej. Co obejmuje rola architekta standardu? Np. 1. Narysuj diagramy wysokiego poziomu i wyjaśnij zespołowi, dlaczego jest to rozsądna architektura. 2. Napisz dokumenty dla menedżerów lub klientów. 3. Napisz infrastrukturę oprogramowania, do której inni dodają więcej funkcji. 4. Pisz różne prototypy i przeprowadzaj testy wydajnościowe. 5. Opracuj dodatkowe funkcje i ulepszenia istniejących funkcji i poprowadź zespół w ich kierunku. 6. Inne obowiązki.


title: Jaka jest różnica między wymaganiami a kryteriami akceptacji?

text: Staram się trochę lepiej zrozumieć różnicę, ponieważ wydaje się, że są tym samym. Pracuję w projektach bez użycia wymagań i wszystko jest kryterium akceptacji, a także w projektach, które mają oba.


title: Nowe i stare technologie współistnieją w dotychczasowym systemie

text: Nowe technologie mogą wykonywać istniejące zadania w bardziej wydajny i wydajny sposób. Ale czasami starych technologii nie można niestety odrzucić, więc większa liczba technologii w jednym systemie utrudnia utrzymanie. Czy warto wprowadzać nowe technologie? Na przykład starszy system używa wewnętrznie SOAP, a JSON to nowa technologia zastępująca SOAP. Problem polega na tym, że JSON może zastąpić tylko **niektóre** SOAP, ponieważ reszta SOAP jest zbyt złożona, aby ją zastąpić. W rezultacie system będzie używał jednocześnie SOAP i JSON. Utrzymanie jest jeszcze trudniejsze niż wcześniej. Czy rozsądne jest wprowadzanie nowych technologii w celu zastąpienia **części** starych?


title: Projektowanie aplikacji internetowych: lokalne buforowanie a wymagające

text: Piszę aplikację internetową w javascript, która będzie obsługiwana przez przeglądarkę klientów. Intencją jest, aby aplikacja była wyświetlana klientowi jako aplikacja monolityczna, a nie seria powiązanych ze sobą odświeżających stron internetowych. Moje pytanie dotyczy wspólnej architektury. Aby odnieść się do pytania, wspomnę, że szczególną cechą aplikacji internetowej jest „wycieczka”; gdy klient kliknie przycisk oznaczony „wycieczka”, aplikacja internetowa załaduje div z informacją o samej aplikacji i o tym, co może zrobić dla użytkownika. Można to obsłużyć na dwa sposoby: przeglądarka klienta może pobrać znacznik wycieczki z serwera, gdy użytkownik kliknie przycisk, lub serwer może go pobrać (i wszystkie inne podobne funkcje) po pierwszym pobraniu aplikacji. Jeśli pobiorę wycieczkę na żądanie, prawdopodobnie zaoszczędzę przepustowość sieci, ponieważ nie wszyscy wezmą udział w wycieczce, aplikacja też będzie mniejsza. Ale oznacza to, że aby ktoś mógł w pełni korzystać z aplikacji, będzie więcej przeciążenia sieci, ponieważ w sieci pojawi się kolejny hit do załadowania wycieczki. Jeśli początkowo udostępniam wszystkie funkcje, aplikacja jest większa, ale sieć jest mniej przeciążona, ponieważ po pobraniu zmniejsza się zapotrzebowanie na dostęp do sieci (chyba że wymagana jest świeża kopia aplikacji (tzn. -od).Ta funkcja „wycieczki” nie jest tak naprawdę problemem samym w sobie, to tylko przykład wyjaśniający moje pytanie.Jak zrównoważyć buforowanie i wymagania w projektowaniu aplikacji internetowych?


title: Czy należy brać pod uwagę okresy w „roku doświadczenia”, podczas gdy w rzeczywistości nie koduje się regularnie?

text: Przepraszam, jeśli tytuł brzmi trochę niezdarnie. Scenariusz, który staram się opisać jest taki, że w czasie moich lat akademickich kodowałem głównie w C/C++. Zrealizowano niewiele małych projektów, ale nie wykonano żadnej pracy na dużą skalę. Odtąd, po wejściu do branży, rzadko koduję w C++, ale kiedy to robię, korzystam z jego funkcji tak głęboko, jak rozumiem. A teraz, czy powinienem nawet uważać się za programistę C++ i liczyć każdego roku, odkąd zacząłem kodować, jako liczbę moich lat w C++.


title: Czy poniższy przykład jest wzorcem strategii?

text: W moim zadaniu miałem dużo obiektów o nieco odmiennym zachowaniu, ale identycznych atrybutach i metodach z identycznymi interfejsami. Warianty obiektów były dość liczne i nie chciałem tworzyć klasy dla każdego z nich, z dużą ilością powtarzającego się kodu. Pominąłem tworzenie wielu pochodnych klasyfikowanych według następującej konstrukcji (pseudokod dla skrótu) #aTP = wszystkie parametry def _function_version_1(aTP): ... ... def _function_version_BIG(aTP): ... class BaseClass(object): _typesOfImplementation = {'ONE' : _function_version_1, ... 'BIG' : _function_version_BIG, } def __init__(self, type, ...) ... if type not in _typesOfImplementation: raise Exception('Unknown type') # odpowiednia funkcja dla tego obiektu self.function = lambda aTP:BaseClass._typesOfImplementation[type](self, aTP) Czy to nadal implementacja wzorca strategii, chociaż nie użyłem klas dla odpowiedniej wersji funkcji (co byłoby okropne znowu kilka zajęć)?


title: Jaki jest najbardziej efektywny rytm pracy programisty?

text: Zastanawiałem się, jaki jest najlepszy rytm pracy dla pracy programisty? Koduję cały dzień i czasami mam problem i zajmuje mi to kilka godzin, zanim zdaję sobie sprawę, że może potrzebuję przerwy. Niektórzy mówią, że pomagają ci częste i krótkie przerwy, ale czasami, gdy skupiam się na problemie, czuję, że przerwa nie pomoże, a raczej tracę koncentrację. Jak często należy robić sobie przerwę i jak długo? Bardziej podstawowe pytanie dotyczące tego problemu wynika z faktu, że w sieci można znaleźć mnóstwo „dobrych pomysłów” (na przykład „promodo”), które obiecują, że będziesz bardziej efektywny we wszystkim, co robisz. Czy te zasady są dobre, czy też każdy powinien sam o tym decydować? Zastanawiam się, czy któryś z nich może osiągnąć to, co obiecuje! Mam na myśli to, że obiecują, że (jeśli spełnione są warunki) działa dla **wszystkich**. Czy naprawdę istnieją takie zasady? A jeśli są, to co to jest i jak możemy je znaleźć?


title: Dlaczego większość witryn wymaga aktywacji przez e-mail?

text: Większość popularnych obecnie aplikacji wymaga aktywacji konta przez e-mail. Nigdy nie robiłem tego z opracowanymi przeze mnie aplikacjami, więc czy brakuje mi jakiejś ważnej funkcji bezpieczeństwa? Przez aktywację e-mail rozumiem, że kiedy rejestrujesz się na stronie, wysyłają ci e-mail zawierający link, który musisz kliknąć, zanim twoje konto zostanie aktywowane.


title: programowanie systemu eksperckiego

text: Muszę zaprogramować system ekspercki, który zgodnie z szeregiem złożonych możliwości zwróci dobrze zdefiniowany wynik, wraz z pewnego rodzaju diagnostyką, co te wyniki oznaczają. Jaki jest ogólny proces definiowania zachowania systemu eksperckiego, od wstępnej oceny warunków do rzeczywistego kodu?


title: Jak POST CSV za pomocą XMLHttpRequest

text: Chciałbym wysłać plik CSV przez POST w XMLHttpRequest, ale nie mam pewności co do dwóch rzeczy. Po pierwsze, czy jest coś, co odróżnia plik CSV od ciągu podzielonego przecinkami? A jaki rodzaj Content-Type mam umieścić w `setRequestHeader`?


title: Obliczanie kombinacji z kategorii

text: Staram się obliczyć każdy możliwy wybór z różnych kategorii. Należy dokonać 1 wyboru z każdej kategorii, a kategorie są zawsze w tej samej kolejności. Zapisuję ciąg, w którym każdy znak jest numerem tego wyboru z tej kategorii. Rozwiązałem to za pomocą rekurencji i działa to dobrze, gdy istnieją tysiące możliwości, ale jest zbyt wolne, gdy są miliony. Chciałbym zmienić to na pętlę, aby miejmy nadzieję, że to przyspieszy. Oto moja funkcja rekurencyjna (C#): private void GetPartNumberPermutations(IList<int> choices, string partNumber) { for (int i = 0; i < choices[0]; i++) { if (choices.Count > 1) GetPartNumberPermutations( wybory.Pomiń(1).ToList(), partNumber + i.ToString()); else { //dodaj numer części do listy } } } Wybór jest listą liczby wyborów dla każdej kategorii i może wyglądać tak: { 2, 4, 5, 8, 2, 4 }. Zignorujmy problem, gdy jeden z wpisów jest > 9. Moja ostateczna lista numerów części jest następująca: 000000 000001 000002 000003 000010 000011 000012 000013 000100 000101 itd.


title: Jak skutecznie radzić sobie z ogromnymi projektami Linux/makefile?

text: Od około 10 lat zajmuję się tworzeniem aplikacji Windows w C++. A ostatnio zacząłem zagłębiać się w pewne projekty linuksowe i nie mogę znieść tego, jak bardzo jestem bezproduktywny... Szybko się uczę i od jakiegoś czasu używam Linuksa jako podstawowej platformy. I czuję się bardzo dobrze z powłoką, zasadami systemu operacyjnego i GUI. Ale jeśli chodzi o rozwój, czuję się, jakbym wrócił do szkoły. Jak tylko otworzę jakiś większy projekt, utknąłem. Większość z nich jest oparta na makefile, więc gdy próbuję nawigować po nich za pomocą QT lub CodeBlocks, w najlepszym razie mogę użyć intellisense na podstawie pliku. W większości przypadków zmienne wyciekają z zakresu. Potem jest kwestia przejścia do definicji, która wydaje się nie istnieć, spróbuj dołączyć do jakiegoś większego projektu z Sourceforge, a utkniesz na kilka dni, ponieważ nawigacja do definicji jest tak trudna... `grep -r "this_def" . --include "*.cpp" --include "*.h"` wydaje się tak powolny i niezdarny. A potem debugowanie gdb działa, ale bez względu na to, co robię, wydaje się, że jest o lata świetlne za debuggerem WinDbg lub VisualStudio. I te rzeczy sprawiają, że jestem zdesperowany, chcę pisać kod, ale po prostu idzie tak wolno... Zaczynam myśleć, że programiści Linuksa uczą się definicji funkcji na pamięć i analizują kod oczami, ale nie mogę uwierzyć, że to więc. Czy ktoś przez to przechodził? Czy brakuje mi czegoś, co mogłoby sprawić, że będę bardziej produktywny?


title: Zmienna aliasu a wielokrotne użycie gettera

text: Czy wolałbyś: $this->getDoctrine()->getManager()->persist($currency); $this->getDoctrine()->getManager()->persist($user); $this->getDoctrine()->getManager()->flush(); lub $em = $this->getDoctrine()->getManager(); $em->persist($waluta); $em->persist($użytkownik); $em->flush(); Czy użycie zmiennej aliasującej do szybszego kodowania to mądry wybór, czy też programista powinien raczej używać zmiennych tylko wtedy, gdy są naprawdę zmiennymi.


title: Jaki jest powód istnienia metod ze zwracanymi wartościami i metod z void?

text: Chcę zrozumieć, dlaczego w C# istnieje metoda, która może zwrócić wartość, na przykład: public int Accelerate() { Speed++; prędkość powrotu; } i metodę, która nie zwraca wartości (void)? Jaka jest różnica w poniższym przykładzie powyższego: public void Accelerate() { Speed++; Konsola.WriteLine(Prędkość); } Widzę, że ostatnia zaoszczędzi nam czasu, zamiast definiować zmienną do przechowywania tego pola podczas tworzenia nowego obiektu! Jestem początkujący, więc czy ktoś mógłby to wyjaśnić?


title: Czytanie danych wejściowych razem czy w krokach?

text: W przypadku wielu quizów programistycznych otrzymujemy kilka wierszy wejściowych i musimy przetworzyć każde wejście , wykonać obliczenia i wyprowadzić wynik. Moje pytanie brzmi, jaki jest najlepszy sposób na optymalizację czasu wykonywania rozwiązania? 1. Odczytaj wszystkie dane wejściowe, zapisz je (w tablicy lub czymś), oblicz wynik dla nich wszystkich, a na koniec wyślij je wszystkie razem. lub 2\. Odczytaj jedno wejście, oblicz wynik, wypisz wynik i tak dalej dla każdego podanego wejścia. AKTUALIZACJA Ponieważ żadna odpowiedź nie była konkretna, spytałbym, które podejście jest najlepsze w przypadku takich problemów: > ### Zapytania kwadrantowe (30 punktów) > > Na płaszczyźnie jest N punktów. Punkt i ma współrzędne (xi, yi). > Wykonaj następujące zapytania: > > 1) Odbij wszystkie punkty pomiędzy punktami i oraz j, w tym na osi X. > To zapytanie jest reprezentowane jako "X i j" > 2) Odzwierciedla wszystkie punkty między punktami i oraz j, w tym wzdłuż osi Y >. To zapytanie jest reprezentowane jako „Y i j” > 3) Policz, ile punktów między punktem i i j, w tym leżą w każdym > z 4 kwadrantów. To zapytanie jest reprezentowane jako "C i j" > > ### Wejście: > > Pierwszy wiersz zawiera N, liczbę punktów. Następuje N linii. > `i` linia zawiera xi i yi oddzielone spacją. > Kolejny wiersz zawiera Q liczbę zapytań. Kolejne wiersze Q zawierają > jedno zapytanie z jednego z powyższych formularzy. > Wszystkie indeksy są indeksowane 1. > > ### Wynik: > > Wypisz jedną linię dla każdego zapytania typu "C i j". Odpowiedni wiersz > zawiera 4 liczby całkowite; liczba punktów posiadających indeksy z przedziału [i..j] > odpowiednio w 1., 2., 3. i 4. kwadrancie. > > ### Ograniczenia: > > > 1 <= N <= 100000 > 1 <= Q <= 1000000 > > > Można założyć, że żaden punkt nie leży na osi X lub Y. > Wszystkie (xi,yi) zmieszczą się w 32-bitowej liczbie całkowitej ze znakiem > ...


title: Nowe zadania starszego programisty

text: Mam starszego programistę z ośmioletnim doświadczeniem w .NET, który od jutra pracuje nad aplikacją z 11 000 wierszy kodu. W zespole jestem ja i drugi programista. Oboje mamy około trzech lat doświadczenia. To mój pierwszy projekt jako manager (jestem też developerem w projekcie) i po raz pierwszy musiałem komuś przedstawić już ugruntowaną bazę kodu. Oczywiście będę omawiał każdy moduł, proces wdrażania itp. i podawał im lokalizację repozytorium kontroli źródła, dokumentację (która nie jest najlepsza) itp. Jak długo mam je podawać, zanim zostaną gotowy do pisania nowych funkcji i naprawiania błędów?


title: Po co przechowywać funkcję w słowniku Pythona?

text: Jestem początkującym Pythonem i właśnie nauczyłem się techniki obejmującej słowniki i funkcje. Składnia jest łatwa i wydaje się banalna, ale moje zmysły Pythona mrowią. Coś mi mówi, że to głęboka i bardzo pytoniczna koncepcja i nie do końca rozumiem jej znaczenie. **Czy ktoś może nadać nazwę tej technice i wyjaśnić, jak/dlaczego jest ona przydatna?** * * * Technika ma miejsce wtedy, gdy masz słownik Pythona i funkcję, której zamierzasz w nim użyć. Wstawiasz dodatkowy element do dict, którego wartością jest nazwa funkcji. Kiedy jesteś gotowy do wywołania funkcji, wydajesz wywołanie _pośrednio_, odwołując się do elementu dict, a nie do funkcji według nazwy. Przykład, na którym pracuję, pochodzi z książki Learn Python the Hard Way, 2nd Ed. (Jest to wersja dostępna po zarejestrowaniu się przez Udemy.com; niestety dostępna na żywo bezpłatna wersja HTML to obecnie Ed 3 i nie zawiera już tego przykładu). Parafrazując: # stwórz słownik stanów USA i głównych miast = {'CA':'San Diego', 'NY':'New York', 'MI':'Detroit'} # zdefiniuj funkcję do użycia na takich definicja słownika find_city (mapa, miasto): # robi coś, zwraca wartość jeśli miasto na mapie: return map[city] else: return "Nie znaleziono" # następnie dodaj końcowy element dict, który odnosi się do funkcji miasta['_found '] = find_city Następnie następujące wyrażenia są równoważne. Funkcję można wywołać bezpośrednio lub odwołując się do elementu dict, którego wartością jest funkcja. >>> find_city (cities, 'Nowy Jork') NY >>> cities['_found'](cities, 'Nowy Jork') NY Czy ktoś może wyjaśnić, co to za funkcja językowa i może programowanie? To zabawkowe ćwiczenie wystarczyło, aby nauczyć mnie składni, ale nie zaprowadziło mnie tam do końca.


title: Jak mam reprezentować typ wyliczeniowy w relacyjnej bazie danych?

text: Pracuję nad stworzeniem relacyjnej bazy danych, która śledzi transakcje zachodzące na urządzeniu, na którym pracuję dla mojej firmy. Istnieją różne typy transakcji, które mogą wystąpić na urządzeniu, dlatego mamy pole „trans_type” w jednej z naszych głównych tabel rekordów. Moja grupa zdecydowała, że typ tego pola będzie liczbą całkowitą i będzie traktowany jako typ wyliczany. Intuicja podpowiada mi, że lepszym pomysłem byłoby uczynienie tego pola ciągiem znaków, aby dane z naszej bazy danych były bardziej czytelne i użyteczne. Moi współpracownicy wydają się być zaniepokojeni, że spowoduje to więcej kłopotów, niż jest to warte. Porównanie ciągów znaków jest zbyt kosztowne, a możliwość literówek jest zbyt dużą barierą. Czy zatem Twoim zdaniem, mając do czynienia z polem w relacyjnej bazie danych, które jest zasadniczo wartością wyliczaną, lepszą decyzją projektową jest uczynienie tego pola liczbą całkowitą czy ciągiem znaków? A może jest jakaś inna alternatywa, którą przeoczyłem? Uwaga: jawne typy wyliczeniowe nie są obsługiwane przez używaną przez nas bazę danych. A oprogramowanie, które tworzymy, które będzie współpracowało z tą bazą danych, jest napisane w C++.


title: Kiedy programiści mówią o „strukturach danych”, do czego mają na myśli?

text: Kiedy programiści mówią o „strukturach danych”, czy mówią tylko o abstrakcyjnych typach danych, takich jak listy, drzewa, skróty, wykresy itp.? Czy ten termin obejmuje jakąkolwiek strukturę, która przechowuje dane, takie jak typy złożone (obiekty klas, struktury, wyliczenia itp.) i typy pierwotne (boolean, int, char itp.)? Słyszałem tylko, że programiści używają tego terminu do odwoływania się do złożonych struktur danych lub abstrakcyjnych typów danych, jednak artykuł w Wikipedii, który zawiera listę struktur danych, zawiera w definicji zarówno typy złożone, jak i typy pierwotne, co nie jest tym, czego się spodziewałem (nawet choć ma to sens). Kiedy rozglądam się po Internecie, widzę inne miejsca, które odnoszą się do terminu „struktura danych” w znaczeniu programistycznym jako odnoszące się tylko do abstrakcyjnych typów danych, takie jak ten wykład z Wydziału Informatyki Uniwersytetu Stony Brook, który stwierdza: > Struktura danych jest rzeczywista implementacja konkretnego abstrakcyjnego typu danych >. lub ten wikibook o strukturach danych, który używa tego terminu w zdaniach takich jak: > Ponieważ struktury danych są abstrakcjami wyższego poziomu, przedstawiają nam > operacje na grupach danych, takie jak dodawanie elementu do listy lub wyszukiwanie > w górę element o najwyższym priorytecie w kolejce Dlaczego więc programiści odnoszą się do złożonych struktur danych lub abstrakcyjnych typów danych tylko wtedy, gdy używają terminu „struktura danych”? Czy programiści mają inną definicję terminu niż definicja słownikowa?


title: W jaki sposób buforowanie połączeń z bazą danych poprawia wydajność aplikacji?

text: Nie rozumiem, dlaczego buforowanie połączeń poprawia wydajność aplikacji. Przypuszczam, że nawiązanie połączenia spowodowałoby opóźnienie. Jednak ponowne wykorzystanie nawiązanego połączenia wymaga bardziej złożonej obsługi błędów. Serwer aplikacji musi śledzić stan każdego połączenia, aby ustawić połączenie do stanu początkowego przed ponownym użyciem (takim jak odrzucenie wszystkich transakcji, przełączenie na domyślny poziom izolacji), co również kosztuje czas.


title: Dlaczego demon Git nie uruchamia się w tle?

text: Tak jak w tytule, dlaczego `git daemon` nie uruchamia usługi w tle, skoro jest to "demon", będący procesem w tle? Wiem, że mogę go uruchomić w tle za pomocą `git daemon &`, ale zastanawiam się tylko nad filozoficznym powodem tej decyzji.


title: Czy kod rekurencyjny jest wolniejszy niż kod nierekurencyjny?

text: Teraz jestem tylko początkującym programistą, ale moi przyjaciele, którzy studiują programowanie, mówią mi, że kod rekurencyjny jest dobrą rzeczą, prowadzi do mniejszej duplikacji kodu i wygląda bardziej elegancko. Teraz może tak być, ale za każdym razem, gdy próbowałem swoich sił z kodem rekurencyjnym, zawsze okazywało się, że jest znacznie wolniejszy niż kod nierekurencyjny, nie jestem pewien, czy chodzi o to, w jaki sposób go używałem, ale Szczerze w to wątpię, użyłem go do dość prostych rzeczy, takich jak generowanie liczb Collatza i Fibonacciego, ale ilekroć porównuję go z normalnym kodem iteracyjnym, podejście rekurencyjne będzie konsekwentnie taktować około dwa razy więcej czasu niż rozwiązania iteracyjne.