title: Jakie są zalety oddzielenia „wyniku” od „statusu”

text: Załóżmy, że masz pewne zautomatyzowane procesy, które zazwyczaj przechodzą przez następujące stany; zaplanowane - zainicjowane - sprawdzanie poprawności - wykonywanie - zakończone Ponadto te procesy mogą zostać przedwcześnie zakończone z powodu błędu lub wyraźnego anulowania przez użytkownika. Moim pierwszym impulsem jest po prostu dodanie _błąd_ i _anulowane_ do listy możliwych wartości statusu, ale zastanawiałem się nad (koncepcyjnymi) zaletami oddzielenia _wyniku_ od _statusu_ (chociaż wydaje mi się, że można by argumentować, że błąd i anulowane są również po prostu inne stany niż stan _zakończony_).


title: Ile czasu w pracy faktycznie poświęcasz na pracę?

text: Mój przyjaciel powiedział mi, że w **bardzo** dużej firmie programiści zostali poinformowani, że faktycznie będą pracować przez około 60% czasu **Dodano:** Miała na myśli 60% czasu, kiedy byli w pracy , mają działać, a resztę spędzać na surfowaniu po Internecie, graniu w bilard, ping ponga lub czymkolwiek, na czacie itp. Myślę, że mam około 70% Ile ty?


title: Starzenie się a umiejętności kodowania

text: Trochę tła, ponieważ może to być częścią mojego punktu widzenia. Jestem programistą C#/Java i mam 23 lata, koduję od 18 roku życia. Zacząłem studiować C i pracować z Cobolem, a po roku szybko przeszedłem do C#/Java Web Development i pracowałem z nim w około 3/4 firm. (Właśnie się przeprowadziłem) W swojej (krótkiej) karierze zawodowej spotkałem kilku starszych programistów, cały czas ciężko było z nimi pracować, ponieważ byłem znacznie lepszym programistą od nich. I nie chodzi tylko o umiejętności językowe, niektórzy z nich mieli poważne problemy ze zrozumieniem podstawowej logiki. Teraz zastanawiam się, w jaki sposób ci programiści zdobywają pracę na rynku, skoro (wyobrażam sobie) mają większe wydatki, a przez to muszą zarabiać więcej i są naprawdę bezproduktywne. W tych przykładach inni członkowie projektu muszą stale się zatrzymywać, aby im pomóc. Cały czas w końcu rezygnują... Zastanawiam się więc... 1. Czy proces starzenia może spowolnić tempo uczenia się i logiczne myślenie? 2. Czy programista musi, a przynajmniej powinien, przed starzeniem się przenieść do obszaru zarządzania? **Proszę, moim zamiarem nie jest brak szacunku dla osób starszych. Jestem w pełni świadomy, że nie dotyczy to wszystkich starszych programistów, często widuję w sieci bardzo dobrych starych programistów, po prostu nigdy ich nie spotkałem z bliska.**


title: Czy możliwe jest efektywne tworzenie aplikacji PHP w systemie Windows, które będą wdrażane na serwerach z systemem Linux?

text: Czy w porządku jest kodowanie PHP w systemie Windows i hostowanie go później na serwerze z systemem Linux? Czy mogą być jakieś problemy z migracją takiego projektu? Myślę, że naprawdę nie może być żadnych problemów, zwłaszcza, że jestem początkującym PHP i nie będę używał żadnych zaawansowanych funkcji, które mogą być specyficzne dla systemu operacyjnego. Jednak chciałbym się upewnić, ponieważ tak naprawdę w ogóle nie lubię Linuksa.


title: Polecić klasę bazy danych Stanford Online?

text: Biorę udział w zajęciach Stanford Online Machine Learning, które są znakomite. http://ml-class.org Czy ktoś bierze udział w zajęciach Stanford Online Database: http://www.db-class.org? Czy wydaje się to przydatne, jeśli masz kilka lat dość prostego doświadczenia w bazach danych, ale nie masz formalnego wykształcenia w tej dziedzinie? A może jest to w większości akademickie i nieistotne dla tworzenia i utrzymywania baz danych w „rzeczywistym świecie”?


title: Czy bloki zwiększają złożoność kodu?

text: Oto **_bardzo_ uproszczony przykład**. Niekoniecznie jest to pytanie specyficzne dla języka i **proszę zignorować wiele innych sposobów napisania funkcji i zmiany, które można w niej wprowadzić.**. Kolor jest unikalnego typu string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Tak, możesz"; } else { return "Nie, nie możesz"; } } Wiele osób, które spotkałem, ReSharper i ten gość (którego komentarz przypomniał mi, że od jakiegoś czasu chciałem o to zapytać) poleciliby refaktoryzację kodu, aby usunąć blok `else` pozostawiając to: (I nie pamiętam, co powiedziała większość, w przeciwnym razie mógłbym o to nie zapytać) string CanLeaveWithoutUmbrella() { if(sky.Color.Equals(Color.Blue)) { return "Tak, możesz"; } return "Nie, nie możesz"; } **Pytanie:** Czy nastąpił wzrost złożoności spowodowany pominięciem bloku `else`? Mam wrażenie, że „inne” bardziej bezpośrednio wyraża intencję, stwierdzając, że kod w obu blokach jest bezpośrednio powiązany. Dodatkowo uważam, że mogę zapobiec subtelnym błędom logicznym, zwłaszcza po modyfikacjach kodu w późniejszym terminie. Weźmy tę odmianę mojego uproszczonego przykładu (ignorując fakt operatora `or`, ponieważ jest to celowo uproszczony przykład): bool CanLeaveWithoutUmbrella() { if(sky.Color != Color.Blue) { return false; } zwróć prawdę; } Ktoś może teraz dodać nowy blok `if` w oparciu o warunek po pierwszym przykładzie bez natychmiastowego prawidłowego rozpoznania, że pierwszy warunek to nałożenie ograniczenia na ich własny warunek. Gdyby obecny był blok `else`, ktokolwiek dodałby nowy warunek byłby zmuszony przenieść zawartość bloku `else` (a jeśli w jakiś sposób go przesłoni, heurystyka pokaże, że kod jest nieosiągalny, czego nie ma w przypadku jednego „jeśli” ograniczającego drugie). Oczywiście istnieją inne sposoby na zdefiniowanie konkretnego przykładu, z których wszystkie zapobiegają takiej sytuacji, ale to tylko przykład. Długość podanego przeze mnie przykładu może wypaczyć wizualny aspekt tego, więc załóżmy, że przestrzeń zajęta do nawiasów jest stosunkowo nieistotna w stosunku do reszty metody. Zapomniałem wspomnieć o przypadku, w którym zgadzam się z pominięciem bloku else i kiedy używam bloku `if`, aby zastosować ograniczenie, które **musi być** logicznie spełnione dla **wszystkich** następujących kodów, takich jako test zerowy (lub jakikolwiek inny strażnik).


title: Film dokumentalny o kulturze open source?

text: Szukam kilku filmów na te tematy: 1. Film/dokument szczegółowo opisujący pochodzenie, historię i obecny stan kultury open source 2. Film/dokument o tym, jak faktycznie rozwija się oprogramowanie open source. Jakie są techniczne przepływy pracy. W jaki sposób ludzie tworzą projekty, rekrutują współpracowników, budują społeczność, przypisują role, śledzą problemy, asymilują nowych przybyszów... itd. Czy ktoś mógłby zasugerować tytuł?


title: Dlaczego nie ma innych języków programowania, które kompilują się do kodu bajtowego Pythona?

text: W Javie istnieje wiele języków, które kompilują się do kodu bajtowego Javy i mogą działać na JVM - Clojure, Groovy i Scala to główne, które pamiętam z głowy. Jednak Python zamienia się również w kod bajtowy (pliki .pyc), zanim zostanie uruchomiony przez interpreter Pythona. Mogę po prostu być ignorantem, ale dlaczego nie ma innych języków programowania, które kompilują się do kodu bajtowego Pythona? Czy to tylko dlatego, że nikt się tym nie przejmował, czy też istnieje jakieś nieodłączne ograniczenie lub bariera, które utrudniają robienie tego?


title: Jak zbudować aplikację .Net działającą na komputerze i jako usługę Windows?

text: Ok, mam nadzieję, że nie jest to zbyt mylące (z moim słabym angielskim). Chcę zbudować małą aplikację .Net 4.0, która monitoruje kilka innych aplikacji na serwerze Windows LUB na zwykłym komputerze z systemem Windows. Będzie miał GUI WPF z różnymi kontrolkami graficznymi. Aplikacja będzie używana w następujących sytuacjach: 1. Jeśli jest zainstalowana na komputerze PC, powinna działać jako „normalna” pojedyncza aplikacja komputerowa systemu Windows 2. Jeśli jest zainstalowana na serwerze, powinna działać jako usługa systemu Windows. Aby używać/zarządzać aplikacją, musi ona mieć ten sam GUI WPF jak w scenariuszu 1, a GUI powinien być uruchamiany na serwerze lub na zdalnym komputerze W tej chwili rozważam napisanie logiki aplikacji i połączenie jej z GUI WPF za pomocą samoobsługowa usługa danych WCF W OBU SCENARIUSZACH. Ponieważ nie jestem pro developerem, przypuszczam, że możliwe, że coś przeoczyłem ;-) Czy to zadziała? Czy istnieją inne/lepsze rozwiązania? Każda odpowiedź lub komentarz jest bardzo mile widziany.


title: Ile powinien kosztować tworzenie aplikacji na iPhone'a lub iPada?

text: Jestem programistą iOS (freelancerem) i chcę wiedzieć, ile kosztuje zbudowanie aplikacji? i jak mam oszacować cenę? jak ta aplikacja http://www.finalcad.fr/en/index.html


title: Dlaczego wiele struktur rejestrowania udostępnia indywidualne metody zamiast wyliczenia „poziomu”?

text: Widzę, że niektóre z bardziej preferowanych struktur rejestrowania, takich jak log4j, log4net itp., Wszystkie używają metod „śledzenia, debugowania” itp. Dlaczego używają ich zamiast metod, które przyjmują coś w rodzaju poziomu wyliczenia?


title: Czy używanie Kanban ma sens, jeśli wszystkie kroki wykonuje ta sama osoba?

text: W naszym zespole wszystkie etapy zadania wykonuje zawsze ten sam programista. Np. w przypadku zadania 1 osoba A projektuje, rozwija i testuje; w przypadku zadania 2 osoba B zajmuje się projektowaniem, rozwojem, testowaniem itp. Czy w tym przypadku ma sens używanie Kanban?


title: Jak przetestować klasę, która jest tylko adapterem, który rejestruje dane wejściowe i wyjściowe w bibliotece innej firmy?

text: Mam następujące (w C#, ale pytanie może również dotyczyć Java): interfejs publiczny ILibraryAdapter { string Property1 { get; } ciąg Method1(string param1); ... } public class ThirdPartyLibrary : ILibraryAdapter { private readonly ThirdPartyClass thirdPartyClass; prywatny dziennik ILog tylko do odczytu; public ThirdPartyLibrary(ThirdPartyClass thirdPartyClass, dziennik ILog) { this.thirdPartyClass = thirdPartyClass; this.log = dziennik; } public string Property1 { get { log.Trace("ThirdPartyClass.get_Property1()"); var wynik = thirdPartyClass.Property1; log.Trace(string.Format("ThirdPartyClass.get_Property1() zwrócił {0}", wynik)); zwróć wynik; } } public string Method1(string param1) { log.Trace(string.Format("ThirdPartyClass.Method1({0})", param1)); var wynik = thirdPartyClass.Method1(param1); log.Trace(string.Format("ThirdPartyClass.Method1({0}) zwrócił {1}", param1, wynik)); zwróć wynik; } ... } gdzie `...` reprezentuje więcej właściwości i metod, które są pakowane i rejestrowane (łącznie około dwóch tuzinów). Częścią wymagań są oddzielne wywołania rejestratora w każdej metodzie. Jak powinienem przetestować tę klasę? **Uwaga:** Nazwy właściwości i metod klasy innej firmy nie zawsze są zgodne z nazwami właściwości i metod ILibraryAdapter.


title: Jak uniknąć sytuacji „DO YOU HAZ TEH CODEZ”?

text: Mam dziwną sytuację w pracy, gdzie kolega często prosi mnie i innych współpracowników o działający kod. Chciałabym mu pomóc, ale ta ciągła prośba o błahe urywki przerywa moje myśli i czasami utrudnia koncentrację. Poza tym mam wrażenie (...), że te prośby są generowane bardziej przez brak kompetencji niż przez lenistwo. W rzeczywistości często zadaje pytania, udając, że zna odpowiedź, ponieważ gdy rozwiązuję problem, zwykle mówi rzeczy typu „Jasne”, „Tak, tak myślałem”, co sprawia wrażenie, że moja odpowiedź nie jest tego warta. Jak mogę rozwiązać tę wstydliwą sytuację? Czy powinienem wyraźniej pokazać innym kolegom jego brak wiedzy (mówiąc takie rzeczy jak: „zrób to sam, jeśli możesz, proszę”), czy dalej dawać mu to, czego chce? Myślę, że powinien zebrać wszystkie swoje pytania w jednym, abym mógł poświęcić mu część swojego czasu i mógł sam pracować nad swoimi rzeczami. W zespole nie ma hierarchii, muszę przyznać, że obaj mamy podobny staż, mniej więcej pięć lat. Z tego samego powodu uważam, że nie mogę zgłaszać się do kierownictwa, ponieważ często ignorowane są błahe pytania. Rozmawiałem z pozostałymi dwoma członkami i zgadzają się ze mną: w rzeczywistości często zadaje pytania kolegom przez kolegów.


title: Plusy i minusy używania HTML5 i frameworków do wieloplatformowego programowania mobilnego

text: Zacznę tworzyć aplikację do mojej pracy i chciałbym wiedzieć, jakie jest najlepsze podejście. Aplikacja będzie podstawowym trackerem dla niektórych aplikacji, które posiadamy, a ponieważ nasi pracodawcy używają zarówno telefonów z systemem Android, jak i Apple, nie chcę rozwijać aplikacji dwa razy tylko po to, aby działała na obu platformach. Czy warto stworzyć aplikację HTML5, która mogłaby działać na wszystkich urządzeniach, czy powinienem używać niektórych frameworków, takich jak appcelerator? Czy istnieją mocne plusy i minusy obu tych podejść?


title: Czy jest jakaś korzyść ze sztucznego zmniejszania WIP w systemie Kanban?

text: Wyobraź sobie więc taki scenariusz: jest tylko 1 deweloper, który również jest wąskim gardłem (testerzy itp. są zajęci innymi umowami). Istnieje nietrywialna lista zgłoszeń, z których większość jest zablokowana, ponieważ nie można ich odtworzyć, są niezrozumiałe, nierozwiązywalne (z obecnymi pomysłami, personelem i technologiami). Czy jest jakaś szczególna korzyść z tworzenia systemu, który rozdziela bilety jednemu programiście po jednym lub dwóch na raz? System do tej pory od razu tworzył luz z powodu opóźnień w przypisywaniu nowych biletów po przepracowaniu aktualnych biletów. Gdy zablokowane bilety są przypisane, teraz siedzą na biurku programisty zablokowane, dopóki nie zostaną przeniesione z powrotem do nieprzypisanych biletów. Czy są jakieś korzyści z tego systemu „sztucznego niskiego WIP” i jak mógłby/powinien zostać wdrożony?


title: Pomoc przy wstrzykiwaniu zależności

text: Nadal jestem bardzo zdezorientowany, dlaczego i kiedy używać Dependency Injection. Jeśli ktoś mógłby wyjaśnić, może przy użyciu poniższego przykładu, który byłby świetny, wszelkie inne wyjaśnienia byłyby mile widziane. Powiedzmy, że tworzę aplikację internetową, która będzie zapisywać recenzje filmów napisane w C# z ASP.NET MVC 5. Jeśli mam następujący **Model code** , namespace MovieReviewProject.Models { public class MovieReviews { [Key] public int RecenzjaID_int{ get; ustawić; } /// <summary> /// Adres e-mail zgłaszającego /// </summary> public string EmailAddress_str{ get; ustawić; } /// <summary> /// Nazwa filmu /// </summary> public string MoveName_str{ get; ustawić; } /// <summary> /// Recenzja /// </summary> public string Review_str { get; ustawić; } /// <summary> /// Data przesłania z /// </summary> public DateTime SubmissionDate_dt { get; ustawić; } /// <summary> /// Ocena filmu /// </summary> public int Rating_int { get; ustawić; } } } jak wyglądałaby klasa, która dostarcza Kontrolerowi Listę wszystkich recenzji, dodaje średnią dla filmu i nie tylko? Wiem, że DI służy głównie do łatwiejszego testowania jednostkowego, ale poza tym, jakie są z tego korzyści? Czy warto przechodzić przez stare projekty i upewnić się, że wszyscy dostawcy korzystają z tej zasady?


title: Co dokładnie oznacza warunek w licencji MIT?

text: Cytując samą licencję: > Prawa autorskie (C) [rok] [posiadacze praw autorskich] > > Niniejszym udziela się nieodpłatnie zezwolenia każdej osobie otrzymującej kopię > tego oprogramowania i powiązanych plików dokumentacji („Oprogramowanie”), do > wykorzystywania Oprogramowania bez ograniczeń, w tym bez ograniczeń > praw do używania, kopiowania, modyfikowania, łączenia, publikowania, rozpowszechniania, udzielania sublicencji i/lub > sprzedawania kopii Oprogramowania oraz do zezwalania osobom, dla których Oprogramowanie jest > dostarczona w tym celu, z zastrzeżeniem następujących warunków: > > **Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu powinny być dołączone do > wszystkich kopii lub istotnych części Oprogramowania.** Nie jestem do końca pewien, co oznacza pogrubiona część. Powiedzmy, że tworzę jakąś bibliotekę i licencjonuję ją na licencji MIT. Ktoś decyduje się na rozwidlenie tej biblioteki i stworzenie komercyjnej wersji o zamkniętym kodzie źródłowym. Zgodnie z licencją powinien mieć do tego swobodę. Co jednak dodatkowo musi zrobić na tych warunkach? Uznać mnie za twórcę? Wydaje mi się, że „powyższa informacja o prawach autorskich” odnosi się do części „Prawa autorskie (C) [...”, ale czy nie wymieniłaby _mnie_ jako autora _jego_ kodu (chociaż technicznie wypisałem kod)? I czy umieszczenie „informacji o pozwoleniu” w obecnej _jego_ bibliotece nie byłoby praktycznie licencją na tych samych warunkach, na jakich licencjonowałem moją własną bibliotekę? Czy może źle to interpretuję? Czy odnosi się to do moich zobowiązań dotyczących praw autorskich i informacji o pozwoleniu?


title: Bufor o stałej wielkości lub bufory o zmiennej wielkości z gniazdami C#

text: Jestem zajęty projektowaniem klasy TCP Server w języku C#, która zawiera zdarzenia i umożliwia użytkownikowi klasy definiowanie pakietów, które serwer może wysyłać, rejestrując klasę pochodzącą z mojej klasy „GenericPacket”. Mój TCPListener używa metod asynchronicznych, takich jak .BeginReceive(..); Mój problem polega na tym, że używam metody .BeginReceive(); Podczas wywoływania funkcji muszę określić rozmiar bufora. Oznacza to, że nie mogę odczytać całego pakietu, jeśli jeden z moich zdefiniowanych pakietów jest zbyt duży. Pomyślałem o utworzeniu nagłówka o stałej wielkości, który jest odczytywany przy użyciu .BeginRead(); a resztę przeczytaj za pomocą Stream.Read(); ale spowoduje to, że cały serwer będzie musiał czekać na zakończenie tej operacji. Chciałbym wiedzieć, czy ktoś wcześniej się z tym zetknął i byłbym wdzięczny za wszelkie sugestie.


title: Pierwsze kroki w gromadzeniu i analizie danych

text: Mam bardzo ograniczoną wiedzę na temat SQL i PHP. Mam kilka projektów, nad którymi chcę spróbować i pracować, które będą wymagały wykonania skrobania sieci w celu zebrania danych, a następnie przechowywania, sortowania i analizowania danych. Chciałbym, aby te dane były również dostępne w mojej witrynie, aby inni również mogli je przeglądać. Moje pytanie brzmi, w jakim kierunku powinienem iść, aby nauczyć się niezbędnych do tego umiejętności. Jestem gotów poświęcić czas i wysiłek, ale chcę się upewnić, że robię to we właściwy sposób. Moją pierwszą myślą było wzięcie udziału w internetowym kursie Standford Intro to Databases, potem kilka samouczków web scrapingu, a potem kilka samouczków PHP. Następnie natknąłem się na oprogramowanie o nazwie „Orange”, które jest „Wizualizacja i analiza danych open source dla początkujących i ekspertów. Eksploracja danych za pomocą programowania wizualnego lub skryptów w języku Python. Komponenty do uczenia maszynowego. Dodatki do bioinformatyki i eksploracji tekstu. funkcje do analizy danych”. Czy nie byłoby lepiej zrezygnować z nauki SQL i PHP i skupić się na nauce tego „pomarańczowego” programu? Lub jakieś inne programy? Każda pomoc byłaby mile widziana. Jestem gotów ciężko nad tym pracować, ale nie chcę spędzać dużo czasu na nauce SQL i PHP, jeśli mam się skupić gdzie indziej.


title: LSP vs OCP / Liskov Substytucja VS Otwórz Zamknij

text: Próbuję zrozumieć SOLIDne zasady OOP i doszedłem do wniosku, że LSP i OCP mają pewne podobieństwa (jeśli nie powiedzieć więcej). > zasada open/closed stwierdza, że „elementy oprogramowania (klasy, moduły, > funkcje, itp.) powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację”. LSP w prostych słowach stwierdza, że każdą instancję `Foo` można zastąpić dowolną instancją `Bar` pochodzącą od `Foo` i program będzie działał w ten sam sposób. Nie jestem profesjonalnym programistą OOP, ale wydaje mi się, że LSP jest możliwe tylko wtedy, gdy `Bar` wywodzący się z `Foo` niczego w nim nie zmienia, a jedynie je rozszerza. Oznacza to, że w konkretnym programie LSP jest prawdziwe tylko wtedy, gdy OCP jest prawdziwe, a OCP jest prawdziwe tylko wtedy, gdy LSP jest prawdziwe. Oznacza to, że są równe. Popraw mnie, jeśli się mylę. Naprawdę chcę zrozumieć te idee. Wielkie dzięki za odpowiedź.


title: Jaki jest odpowiednik słowa „kompilacja” w języku interpretowanym?

text: (Zachęcono mnie do zadania tego pytania tutaj.) W C mówimy: > GCC _kompiluje_ `foo.c`. Dla tłumaczy ustnych (takich jak Lua) jaki jest odpowiednik czasownika? > Interpreter Lua **___ __ ___** `foo.lua`. Kiedy piszę instrukcje dla użytkowników mojego skryptu Lua, często mówię: > Uruchom interpreter na `foo.lua`. Myślę, że można to powiedzieć bardziej zwięźle: > _Interpretuj_ (lub _Przetłumacz_ ) `foo.lua`. ale z jakiegoś powodu brzmi to niezręcznie (być może dlatego, że nie jestem pewien jego poprawności). Naprawdę nie mogę powiedzieć _kompilacja_, ponieważ użytkownicy mogą pomylić to z użyciem kompilatora Lua, podczas gdy mam na myśli interpreter Lua.


title: Przewodnik dla początkujących dotyczący tworzenia oprogramowania optymalizacyjnego

text: Jestem nowicjuszem w programowaniu „poważnym”, tj. aplikacjach, które zajmują się aplikacjami z życia codziennego i projektami oprogramowania, które wykraczają poza zadania szkolne. Moje zainteresowania to optymalizacja, badania operacyjne, algorytmy, a ostatnio odkryłem, jak bardzo lubię projektowanie/rozwój/inżynierię oprogramowania. Opracowałem już kilka prostych aplikacji desktopowych dla niektórych "sławnych" problemów, takich jak TSP przy użyciu podejścia heurystycznego, solver VRP (w toku) i tak dalej. Tworząc tego typu oprogramowanie, faktycznie korzystałem z podstawowych pojęć nauczanych w szkole, takich jak analiza obiektowa i projektowanie. Ale uważam, że te kursy są raczej elementarne i dość nudne (jak na moje oczekiwania). Postanowiłem więc pójść trochę dalej i zacząć tworzyć „prawdziwe” oprogramowanie (i tu zdałem sobie sprawę, jak ważna i interesująca jest inżynieria/projektowanie oprogramowania). A teraz mój problem: nie mogę znaleźć „podręcznika” do tworzenia oprogramowanie tego rodzaju. Obecnie istnieje wiele zasobów (książek, stron internetowych, tutoriali) dotyczących projektowania i tworzenia złożonych IS, aplikacji internetowych, aplikacji na smartfony, ale nie mogę znaleźć książki zatytułowanej np. "Tworzenie oprogramowania optymalizacyjnego". Z pewnością ktoś mógłby twierdzić, że „wzorce projektowe mają zastosowanie do oprogramowania w ogóle”, ale nie o to mi chodzi. Chodzi mi o to, że mógłbym po prostu użyć wyobraźni do „prostych” realizacji, ale co się dzieje, gdy moja wyobraźnia nie może iść dalej? Innymi słowy szukam przewodnika/ścieżki, która wypełniłaby lukę pomiędzy: Matematyką-Algorytmem Projektowanie-Inżynieria Oprogramowania-Optymalizacja-Rozwój oprogramowania


title: Rozwiązanie szefa a rozwiązanie dla programistów

text: Problem: Kiedy wysyłaliśmy newslettery do klientów, nie było możliwości potwierdzenia, czy klient już otrzymał pocztę. Szef postanowił więc wdrożyć ten pomysł: Pomysł szefa: Za każdym razem, gdy wysyłana była poczta, w bazie danych wstawiaj WSTAWKĘ z tytułem wysyłanego newslettera i adresem e-mail, na który trafia adres e-mail. Aby upewnić się, że żaden adres e-mail nie otrzyma dwa razy tego samego e-maila, wykonaj WYBIERZ w tabeli i znajdź tytuł wysyłanego biuletynu: if (znaleziono tytuł biuletynu) { sprawdź e-mail, na który wysyłamy pocztę jest już obecny. jeśli tak, nie wysyłaj poczty } else { wyślij pocztę } Mój pomysł: utwórz kolumnę o nazwie unique i oznacz ją jako UNIQUE. Za każdym razem, gdy wiadomość była wysyłana, połącz adres e-mail + identyfikator biuletynu i zapisz go w wierszu UNIQUE. Następnym razem, gdy sprawdzamy "mysql_affected_rows", aby zobaczyć, czy nasza INSERT się powiodła, wysyłamy pocztę, w przeciwnym razie istnieje już duplikat i nie ma potrzeby go wysyłać.


title: Ile pokrycia kodu jest „wystarczające”?

text: Zaczynamy naciskać na pokrycie kodu w mojej pracy i skłoniło mnie to do myślenia.... Ile pokrycia kodu wystarczy? Kiedy dochodzisz do punktu malejących zwrotów z pokrycia kodu? Jaki jest słodki punkt między dobrym kryciem a niewystarczającym? Czy różni się to w zależności od typu tworzonego projektu (tj. WPF, WCF, Mobile, ASP.NET) (Są to klasy C#, które piszemy).


title: Konsekwentne formułowanie informacji o wydaniu

text: W moim projekcie natknąłem się na zrozumienie, że pisanie informacji o wydaniu jest zarówno pomocne, jak i konieczne. Jednak nie jest to wymagane przez moje kierownictwo i przechowuję te pliki praktycznie dla siebie. Można powiedzieć, robię to dla samoorganizacji. Dla każdej wersji wewnętrznego oprogramowania do prototypowania tworzę numer wersji i aktualizuję plik RELEASE o zmiany, które zaszły od ostatniej wersji. Informacje o wydaniu są podzielone na listy nowych funkcji, poprawek błędów i pozostałych ograniczeń (funkcje, które zostaną zaimplementowane w następnej wersji). Ponieważ moje kierownictwo nie wymaga ode mnie tego dokumentu, piszę informacje o wydaniu w sposób swobodny. Teraz nie jestem pewien, jak najlepiej sformułować (mam nadzieję, że nie zostanie wysłany do English@SE; nie interesują mnie funkcje gramatyczne, ale doświadczenie innych programistów tutaj, którzy _do_ wypełniają informacje o wydaniu dla klientów) funkcje, które zostały zaimplementowane . Obecnie używam innej gramatyki, która jest niespójna między nutami. Chcę zebrać doświadczenie od innych programistów. Czy formułujesz uwagi do wydania: * zaczynając od ja/my (ja/my zintegrowaliśmy/przetestowaliśmy/zaktualizowaliśmy jakąś nową funkcję), czy * jako niespersonalizowane zdania (jakaś nowa funkcja została zintegrowana/przetestowana/zaktualizowana), czy * jako rzeczowniki: integracja/test/aktualizacja jakiejś nowej funkcji, czy * innej? W tej chwili mieszam wszystkie te style i wybierając jeden styl chcę być zgodny ze standardem branżowym.


title: Czy muszę duplikować komentarze w każdym pliku?

text: Mam bardzo podobny kod w wielu plikach w moim projekcie. Jeśli klient chciałby mieć jakiś poziom komentowanego kodu, czy musiałbym poświęcić czas na zduplikowanie kodu dla każdego pliku. Myślę, że byłaby to po prostu strata czasu. Jaki byłby najlepszy/najłatwiejszy sposób zgłaszania uwag klientowi. (Odnieś je do pliku readme, aby pokazać jeden plik z komentarzami?) Jest to zgodne z adresami URL, które należy wskazać i BOOL, które należy zmienić. **Dla wyjaśnienia: nie chcę i nie sądzę, że dobrym pomysłem byłoby skonsolidowanie kodu w celu stworzenia jednego miejsca na ustawienia. Gdybym budował aplikację desktopową lub używał PHP, utworzyłbym plik konfiguracyjny. Ale to nie jest sytuacja, do której byłoby to potrzebne. W rzeczywistości można to uznać (z tego, co rozumiem) za najlepszą praktykę. Całkowicie to rozumiem. Dobrym pomysłem jest wyeliminowanie zduplikowanego kodu, ale nawet nie sądzę, że istnieje skuteczny i prosty sposób na wyeliminowanie zduplikowanego kodu podstawowego. Moje pytanie dotyczy tego, jak powinienem komentować dla klientów/programistów w takich sytuacjach*** Zastrzeżenie: Następnym razem zacznę od komentarzy, zamiast dodawać je później.


title: Czwórka z duplikatami

text: Wdrażam drzewo czwórkowe. Dla tych, którzy nie znają tej struktury danych, dołączam następujący krótki opis: > Drzewo czworokątne jest strukturą danych i jest w płaszczyźnie euklidesowej tym, czym ośmiornica > jest w przestrzeni trójwymiarowej. Powszechnym zastosowaniem drzew czwórkowych jest indeksowanie przestrzenne. > > Podsumowując, jak one działają, drzewo czwórkowe to zbiór — powiedzmy > prostokąty — o maksymalnej pojemności i początkowym polu ograniczającym. Kiedy > próbujesz wstawić element do drzewa czwórkowego, który osiągnął swoją maksymalną > pojemność, drzewo czwórkowe jest dzielone na 4 drzewa czwórkowe (którego reprezentacja geometryczna > będzie miała czterokrotnie mniejszą powierzchnię niż drzewo > przed wstawieniem); każdy element jest redystrybuowany w poddrzewach > zgodnie z jego położeniem, tj. górna lewa granica podczas pracy z prostokątami. > > Tak więc drzewo czworokątne jest albo liściem i ma mniej elementów niż wynosi jego pojemność, albo > drzewem z 4 drzewami czwórkowymi jako dzieci (zwykle północno-zachodni, północno-wschodni, południowo- > zachodni, południowo-wschodni). Obawiam się, że jeśli spróbujesz dodać duplikaty, może to być ten sam element kilka razy, czy kilka różnych elementów w tej samej pozycji, drzewa czwórkowe mają fundamentalny problem z obsługą krawędzi. Na przykład, jeśli pracujesz z drzewem czwórkowym o pojemności 1, prostokąt jednostkowy jako prostokąt ograniczający: [(0,0),(0,1),(1,1),(1,0)] I próbujesz dwukrotne wstawienie prostokąta, którego górna lewa granica jest początkiem: (lub podobnie, jeśli spróbujesz wstawić go N+1 razy w drzewie czwórkowym o pojemności N>1) quadtree->insert(0.0, 0.0, 0.1, 0.1 ) quadtree->insert(0.0, 0.0, 0.1, 0.1) Pierwsza wstawka nie będzie problemem: ![Pierwsza wstawka](http://i.stack.imgur.com/p9NQa.png) Ale potem pierwsza wstawka wywoła podział (ponieważ pojemność wynosi 1): ![Druga wstawka, pierwszy podział](http://i.stack.imgur.com/a0Gxx.png) Oba prostokąty są więc umieszczane w tym samym poddrzewie. Z drugiej strony te dwa elementy pojawią się w tym samym drzewie czwórkowym i wywołają podpodział… ![Druga wstawka, drugi podpodział](http://i.stack.imgur.com/laE9l.png) I tak dalej, i tak dalej, metoda podziału będzie działać w nieskończoność, ponieważ (0, 0) zawsze będzie znajdować się w tym samym poddrzewie z czterech utworzonych, co oznacza, że wystąpi problem nieskończonej rekurencji. Czy możliwe jest posiadanie drzewa czwórkowego z duplikatami? (Jeśli nie, można go zaimplementować jako `Zestaw`) Jak możemy rozwiązać ten problem bez całkowitego zniszczenia architektury drzewa czwórkowego?


title: Walidacje wartości nieruchomości na podmiotach POCO

text: Z góry przepraszam, jeśli to pytanie jest tak trywialne. ## Sytuacja W bazie danych istnieje podmiot `Klient`, którego identyfikator jest ograniczony do dwóch liter (od A do Z). Ponadto użytkownik może wprowadzić wartość `ID` z formularza Windows. Myślę, że najlepszą opcją jest walidacja tego formularza (za pomocą kontrolera) za pomocą wyrażenia regularnego takiego jak `^[a-zA-Z0-9]{2}$` czy wartość jest prawidłowa. ## Pytanie (pytania) * Czy encja `Customer` powinna również przeprowadzać walidację, gdy ustawiam wartość właściwości ID? * Czy ta walidacja powinna być zlecona na zewnątrz, jeśli na przykład istnieje podobna walidacja w innych właściwościach jednostki? Myślę, że odpowiedź jest taka, że zależy to od tego, czy wartość nieruchomości jest wymaganiem użytkownika, czy jest to decyzja projektowa dotycząca bazy danych, ale doceniam twoją wiedzę i doświadczenie, aby poprowadzić mnie na właściwą drogę. Z góry dziękuję.


title: Skąd fascynacja Scali flatmapem? (Wydaje się, że nie jest tak samo dla mapcat w świecie Clojure)

text: W społeczności Scala - widoczna jest fascynacja funkcją FlatMap. Teraz rozumiem, że FlatMap jest znaczący, ponieważ jest używany jako część wiążąca Monady. (i że społeczność Clojure nie zagłębiła się jeszcze w Monad, z kilkoma wspaniałymi wyjątkami). Teraz we Wspólnocie Clojure - nie ma odpowiadającego idiomu kulturowego, np. "MapCat that S***". Moja teoria na temat różnicy między tymi dwiema społecznościami i przyczyną tej różnicy jest taka, że prymitywy współbieżności w Clojure umożliwiają rozwiązywanie problemów na jednej maszynie w jednej instancji. (Tj Clojure jest dobry w współbieżności). Podczas gdy w Scala World, wraz z pojawieniem się modelu Aktora, Scala jest nieco bardziej skoncentrowana na rozwiązywaniu problemów z wieloma maszynami. To skupienie się na problemach z wieloma maszynami ma większy nacisk na rozbicie problemów na części i większy nacisk na to, co można rozbić i Skalę. (np. Monoids) (Teraz zdaję sobie sprawę, że w Scali jest STM i że modele Actora, Avout i Cascalog są wspaniałymi wyjątkami od tego - robię uogólnienie) Moje pytanie brzmi, dlaczego Scala fascynuje flatmapą? (Nie próbuję wszczynać wojny ogniowej – myślę, że obie społeczności skorzystały na wzajemnym istnieniu – próbuję zrozumieć zachowanie kulturowe).


title: Jak decydujesz o swoich projektach pobocznych

text: W każdej chwili mam zwykle kilka pomysłów na weekendowe/poboczne projekty, nad którymi mogę pracować. Pomysły można ogólnie podzielić na następujące kategorie: 1\. Samokształcenie: Nauka nowego języka/technologii/struktury 2\. Związane z pracą: Nauka/robienie czegoś, co pomogłoby Ci w pracy 3\. Pieniądze: Projekty, które (jak myślisz) mogą zarobić trochę pieniędzy 4\. Projekty rozrywkowe/użytkowe To tylko przybliżone kategorie, o których mogę pomyśleć i może być więcej/innych sposobów klasyfikacji. Moje pytanie opiera się na twoim doświadczeniu, co powinno kierować decyzją o rodzaju projektu do pracy. Jakie parametry poza typem projektu powinny wpłynąć na tę decyzję (czas, wysiłek, pieniądze...)


title: Jakie są najczęstsze nadużycia słowa „enum” w języku C?

text: Widziałem kod C, w którym ludzie często używali enum. Ale wszystko, co robi, to mylenie innych. W wielu miejscach zwykłe liczby całkowite mogą zrobić to samo z mniejszą niejednoznacznością. Jakie są najczęstsze nadużycia enum?


title: Czy programowanie turystyki jest realną możliwością?

text: Wyjeżdżam na 10 dni do Paryża we Francji. Właściwie to jest życzenie mojej dziewczyny, żeby tam pojechać, ale nie jestem zbyt zainteresowany zwiedzaniem, zwiedzaniem itp. Ostatnio wpadłem na pomysł, żeby spróbować zrobić coś takiego jak programowanie turystyki. :) Chciałbym zrobić coś związanego z programowaniem w firmie typu startup. Nie chcę wynagrodzenia ani jakiegokolwiek odszkodowania. Chcę omówić proces, aspekty społeczne, środowisko i „jak to jest tworzyć oprogramowanie w innym kraju. Pochodzę z Rosji. Jestem programistą od 2003 roku i chociaż wolę C#, jestem gotowy używać czegokolwiek Turing-complete.Mam kilka certyfikatów MS i znam wszystkie .NETs od 1.1.Obecnie kończę doktorat z CS.Interesuje mnie indeksowanie wielowymiarowe i potrafię zamienić dowolny fragment danych i kodu na system OLAP, ale zajęłoby to zbyt dużo czasu :) Co mogę zrobić? Mam nie więcej niż tydzień, ale chcę _całkowicie ukończony projekt w krótkim czasie_. testowany projekt 2. Przeprowadź przegląd kodu 3. Debuguj problemy z pamięcią, wydajnością i współbieżnością 4. Przeprowadź testy jednostkowe A więc jeśli chodzi o pytania: 1. Czy jest to legalne? wiza turystyczna 2. Czy jest to możliwe?Jestem pewien, że biurokratyczne firmy z dużą ilością HR i PMów nie pozwolą na takie eksperymenty, ale małe firmy mogą sobie na to pozwolić. Jestem gotów zagwarantować wsparcie mojego kodu po wyjściu do domu. :) P.S. Nadal nie zacząłem uczyć się francuskiego; Mam nadzieję, że nie zajmie to zbyt wiele czasu :) * * * P.P.S. 1. Tak, jest zatwierdzony przez dziewczynę. 2. Co w tym jest dla mnie? To zabawne. Fajnie jest widzieć nowe systemy i ludzi, którzy je stworzyli. Fajnie jest ukończyć znaczące rzeczy. Szybko. 3. Co z tego dla nich? Funkcje, debugowanie, przeglądanie lub testowanie. Jeśli moi krótkoterminowi koledzy lubią ten styl pracy, mogę ich zaprosić na podobną wycieczkę do mojej firmy. :) Myślę, że w Rosji jest jeszcze bardziej ekscytująco. :)


title: Jeden punkt kontaktowy z dobrymi praktykami kodowania i wskazówkami dotyczącymi wydajności?

text: Chociaż może to być bardzo subiektywne pytanie, zastanawiałem się, czy jest miejsce (lub wiele miejsc) w sieci, w którym można poczytać o dobrych wskazówkach dotyczących kodowania i wydajności dla różnych języków i jak można je porównać z innymi? Na przykład w AS3 szybciej jest mnożyć niż dzielić, czy tak samo jest w przypadku JS? Jakie są inne wskazówki, które naprawdę sprawią, że nasz kod będzie działał błyskawicznie? A gdzie są te wskazówki?


title: Nowoczesny REPL dla Haskella - czy ktoś nad tym pracuje?

text: Nadszedł czas, aby Haskell miał nowoczesną REPL, taką jak Mathematica (lub lepsza). Spraw, aby każde obliczenie było uruchamiane w osobnym wątku, aby użytkownik miał kontrolę nad zasobami każdego pola obliczeniowego (możliwość wstrzymywania, odtwarzania, anulowania, powtórki, ustawiania limitów pamięci/stosu/czasu itp.). Zezwalaj również na wyjście graficzne (jak?). Następnie odłącz te pudełka od dzisiejszego płótna GHCi 1D do przestrzeni 2D, zezwól na klonowanie pudełek (klon otrzymuje to samo źródło, czeka, aż użytkownik naciśnie przycisk "odtwórz"...), edycję ich kodu źródłowego (pozwól na więcej niż jedna linia też). Następnie pozwól na złożenie tych pudełek w łańcuchy - lub sieci - jeśli typy pasują (wydedukuj nowe ograniczenia, jeśli takie istnieją, jak w zwykłym wnioskowaniu o typach). Utworzyć połączone pola w jedną funkcję/moduł, automatycznie wygenerować wynikowy plik źródłowy itp. itd. Czy jest to wykonalne? Czy społeczność ekspertów może się sama zorganizować, aby coś takiego wyprodukować „na wielkie dobro”?


title: Czy kod stworzony na zamówienie klienta oznacza własność praw autorskich?

text: Znam potencjalnego klienta, który przez kilka lat płacił za prace nad rozwojem strony internetowej w trybie godzinowym przez kilku niezależnych wykonawców, ale nigdy nie podpisał umowy co do warunków lub własności. Po prostu dostają rachunek i płacą go. Czy to oznacza, że istnieje domniemana własność dewelopera (ów), który napisał oprogramowanie i nie mogę modyfikować kodu bez pisemnego opisu? Kto jest właścicielem kodu źródłowego w tym przypadku, ponieważ pracuje nad nim dwóch innych programistów? Swoją drogą jestem programistą w USA, pracuję w Missouri. Znalazłem ten przydatny link, który potwierdził moje podejrzenia dotyczące praw autorskich do oprogramowania. Mają też darmowy ebook IP (własność intelektualna) do pobrania. Nie jest też wymagana rejestracja. Zastrzeżenie: Rozumiem, że żadnych odpowiedzi nie należy interpretować jako porady prawnej, ale zastanawiam się, czy ktoś inny natknął się na ten problem i wie z własnego doświadczenia.


title: Jak osiągnąć luźno powiązane REST API, ale ze zdefiniowaną i dobrze rozumianą umową?

text: Jestem nowy w REST i staram się zrozumieć, jak prawidłowo zaprojektować system REST, aby umożliwić zarówno luźne łączenie, ale jednocześnie umożliwić konsumentowi REST API zrozumienie interfejsu API. Jeśli w kodzie klienta wyślę żądanie GET dla zasobu i odzyskam XML, skąd mam wiedzieć, co zrobić z tym xml? np. jeśli zawiera `<fname>John</fname><lname>Smith</lname>` skąd mam wiedzieć, że odnoszą się one do pojęcia „imię”, „nazwisko”? Czy to do osoby piszącej REST API należy zdefiniować w dokumentacji jakieś miejsce, co oznacza każde z pól XML? Co jeśli producent API chce zmienić implementację na `<firstname>` zamiast `<fname>`? Jak to robią i powiadamiają swoich konsumentów, że ta zmiana nastąpiła? A może konsumenci po prostu napotykają błąd, a następnie patrzą na ładunek i sami dowiadują się, że się zmienił? Czytałem w REST w praktyce, że używanie narzędzia WADL do tworzenia implementacji klienta opartej na WADL (i ukrywania faktu, że wykonujesz wywołanie rozproszone) jest "anty-wzorcem". Ale planowałem to zrobić — przynajmniej wtedy miałbym wywołanie API, które, gdyby się zmieniło, byłoby znane w czasie kompilacji, a nie w czasie wykonywania. Dlaczego generowanie kodu klienta w oparciu o WADL jest złe? A skąd mam wiedzieć, co zrobić z linkami zwróconymi w odpowiedzi POST do REST API? Co definiuje tę umowę i nadaje prawdziwe znaczenie temu, co zrobi każdy link? Proszę pomóż! Nie rozumiem, jak przejść od typu statycznego lub nawet SOAP/RPC do REST!


title: Jak radzisz sobie z problemem abstrakcji, kiedy uczysz się technologii/języka?

text: Uważam, że kiedy próbuję nauczyć się na przykład Pythona, kończę się martwieniem o problemy, które są poza zakresem, takie jak w jaki sposób Python implementuje tę rzecz itp. Na przykład powiedz, że uczę się zakręconego frameworka, w końcu zastanawiam się, jak Python może zdefiniować rzeczy w taki sposób i takie tam - prowadzi to do martwienia się głównie o wewnętrzne elementy języka, zamiast mieć problem pod ręką! Mogę jednak przyjąć inne podejście, w którym akceptuję abstrakcję i mówię ok ... TCP to robi ... Nie muszę wiedzieć więcej i akceptować połączenia TCP są obsługiwane, gdy wydam to polecenie ... i kontynuuję pracę, a następnie martwić się o te rzeczy później. Co dokładnie śledzicie? Jestem zakłopotany, widząc, że wielu z nich jest tak dobrych w obu tych rzeczach, podczas gdy ja po prostu wydaje mi się, że jest tam ciężko :). Można powiedzieć, że mam do czynienia z problemem przeprojektowania, który jest dużym problemem i potrzebuję pomocy, aby go rozwiązać :)


title: Udostępnianie obiektu między 2 klasami

text: **edytuj** : Myślę, że wstrzykiwanie zależności jest najlepszym podejściem. Staram się owinąć głowę nad możliwością dzielenia obiektu między dwiema klasami. Chcę móc stworzyć tylko jedną instancję obiektu, `commonlib` w mojej klasie `main`, a następnie mieć klasy `foo1` i `foo2`, aby móc współdzielić właściwości commonlib. `commonlib` jest klasą innej firmy, która ma właściwość `Queries`, która zostanie **dodana** do każdej klasy podrzędnej `bar`. Dlatego ważne jest, aby stworzona została tylko jedna instancja. Tworzę dwa oddzielne zapytania w `foo1` i `foo2`. Oto moja konfiguracja: abstract class bar{ //wspólne metody } class foo1 extends bar{ //dodaj zapytanie do commonlib } class foo2 extends bar{ //dodaj zapytanie do commonlib } class main { public $commonlib = new commonlib(); public function start(){ //celem jest udostępnienie jednej instancji $this->commonlib między foo1 i foo2 //aby obie mogły dodać właściwości $this->commonlib (globalne //pomiędzy tymi dwoma) / /teraz wykonaj wszystkie zapytania po foo1 i foo2 dodaj swoje zapytanie $this->commonlib->RunQueries(); } }


title: Gdzie powinny być przechowywane parametry bazy danych i poczty w aplikacji Symfony2?

text: W domyślnej strukturze folderów projektu Symfony2 dane uwierzytelniające bazy danych i serwera pocztowego są przechowywane w pliku `parameters.yml` wewnątrz `ProjectRoot/app/config/parameters.yml` z następującymi wartościami domyślnymi: parameters: database_driver: pdo_mysql database_host: 127.0. 0.1 database_port: null database_name: symfony database_user: root database_password: null mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: null mailer_password: null locale: en secret: ThisTokenIsNotSoSecretChangeIt Podczas programowania zmieniamy te parametry na rozwojową bazę danych i serwery pocztowe. Ten plik jest zaewidencjonowany w repozytorium kodu źródłowego. Problem pojawia się, gdy chcemy wdrożyć na serwer produkcyjny. Myślimy o zautomatyzowaniu procesu wdrażania poprzez pobranie projektu z git i wdrożenie go na serwer produkcyjny. Chodzi o to, że nasz kierownik projektu musi ręcznie aktualizować te parametry po każdej aktualizacji. Parametry produkcyjnej bazy danych i serwerów pocztowych są poufne i zna je tylko nasz kierownik projektu. Potrzebuję sposobu na zautomatyzowanie tego kroku i sugestii, gdzie przechowywać parametry produkcyjne do czasu ich zastosowania?


title: Skupić się na JavaScript czy JQuery?

text: Jestem studentem na studiach i zauważyłem, że wiele firm poszukuje osób, które mają doświadczenie z Javascriptem. Czy obejmuje to biblioteki JavaScript, takie jak JQuery? A może szukają tylko osób z Javascriptem? Prawdopodobnie zależy to od firmy, ale jaka jest ogólna rada dla studenta, który chce wykonać jakąś pracę front-endową? Czy JavaScript jest potężniejszy niż JQuery? Wiem, że Jquery jest biblioteką i upraszcza wiele zadań, ale czy jest jakiś powód, dla którego używałbyś JavaScriptu zamiast Jquery?


title: Dlaczego w C++ możesz mieć definicję metody w pliku nagłówkowym, podczas gdy w C nie możesz?

text: W C nie można mieć definicji/implementacji funkcji w pliku nagłówkowym. Jednak w C++ możesz mieć pełną implementację metody wewnątrz pliku nagłówkowego. Dlaczego zachowanie jest inne?


title: Jak obsługiwać zestawy danych „X” jako dane wejściowe?

text: Uczestniczyłem dzisiaj w konkursie kodowania i odkryłem, że prawie wszystkie dane wejściowe wiersza poleceń, które musiały otrzymać nasze programy, zaczynały się od liczby całkowitej reprezentującej ilość zestawów danych do prześledzenia. Było 6 różnych problemów i wszystkie zaczęły się w ten sposób. Na przykład jeden przykładowy problem miał: „Wkład do tego problemu zaczyna się od wiersza zawierającego jedną liczbę całkowitą N (1 <= N <= 100) wskazującą liczbę zestawów danych. Każdy zestaw danych składa się z następujących składników: * A wiersz zawierający pojedynczą liczbę całkowitą W, która określa liczbę tuneli czasoprzestrzennych * Seria wierszy W zawierających.... * itd. " Prawie wszystkie problemy związane z konkurencją miały ten format, z pierwszą liczbą całkowitą reprezentującą ilość zestawów danych do prześledzenia. Moją początkową reakcją (i sposobem, w jaki próbowałem rozwiązać problem) było użycie wektora o rozmiarze N, gdzie każdy element reprezentował zbiór danych. Problem w tym, że w tych zestawach danych jest cała masa rzeczy. Korzystanie z tego podejścia często pozostawiało mi wektor wektorów wektorów (może przesada, ale masz pomysł), który był bardzo trudny do zarządzania. Innym pomysłem było zapętlenie całego programu N razy, ale nie zawsze wydaje się to odpowiednie. Zdaję sobie sprawę, że to niejasne pytanie, ale to dlatego, że szukam ogólnego rozwiązania tego typu problemu. Jakie jest najlepsze podejście do obsługi tego typu danych wejściowych?


title: Czy to prawda, że posiadanie Nexusa S jest o wiele lepsze dla programisty Androida?

text: Niedługo zacznę programować Androida, ponieważ znam trochę Javę. Dostanę też telefon z Androidem. Moje dwie opcje to Nexus S i Atrix 4G. Słyszałem, że seria Nexus jest idealna dla programistów – czy ktoś może mi powiedzieć, dlaczego? Dlaczego Atrix jest zły jako programista?


title: Jak freelancerzy zarządzają hostingiem dla klientów?

text: Zbudowałem wiele stron internetowych dla przyjaciół, rodziny itp. I umieściłem je wszystkie na jednym współdzielonym koncie hostingowym. Teraz, gdy są zbudowane, chcę wyjść z biznesu, wspierając je i płacić za nie (moi znajomi zwracają mi pieniądze, ale płacę za rzeczywisty rachunek), więc myślałem o tym, aby utworzyli własne konta hostingowe i powoli przeprowadzili migrację strony powyżej. Zastanawiałem się, jak każdy freelancer to robi? Czy zmuszają swoich klientów do skonfigurowania własnego hostingu z góry i pozwalają programiście zalogować się na konto klienta podczas rozwoju? Co zrobić, jeśli w przyszłości pojawi się błąd i będą musieli wrócić? Byłem ciekaw, jakiego modelu używa większość ludzi, którzy budują strony internetowe dla innych, ponieważ wydaje się to trudna sytuacja.


title: Czym oData różni się od usługi REST?

text: Zastanawiam się nad napisaniem API usługi internetowej i myślę o stworzeniu usługi REST. Co oznacza OData w tym kontekście? Czy możesz wyjaśnić różnicę między OData a REST?


title: Szum HTML5 jako natywny zamiennik aplikacji - rzetelna analiza i źródła

text: Zadaję to jako obiektywne pytanie i nie interesuje mnie wszczynanie wojny z ogniem. Moim celem jest zebranie dowodów, które pomogą w podejmowaniu decyzji i komunikowaniu się z osobami nietechnicznymi w łańcuchu zarządzania. Jestem w zespole UX w firmie programistycznej. W przeszłości współpracowaliśmy z WPF i Silverlight, ale niektórzy menedżerowie uwierzyli w ten szum i rozważają przeniesienie wszystkiego do HTML5. Nasze obawy związane z tworzeniem HTML5, oparte na kilkumiesięcznych eksperymentach z nim, są następujące: * HTML5 zapewnia znacznie mniej rozwinięty model programowania, zaplecza i interfejsu użytkownika niż WPF czy Silverlight. Robienie czegokolwiek zajmuje dużo czasu, a efekt końcowy jest znacznie mniej gładki. * Współpraca między projektantami i programistami. Jedną dużą zaletą WPF było to, że zespół UX mógł zaprojektować cały interfejs użytkownika i przekazać go programistom do pozostałej pracy. Dzięki aplikacjom internetowym wracamy do projektowania czerwonych linii/szkieletów i rzucania ich przez ścianę, biorąc pod uwagę brak dobrych narzędzi i ilość kodowania wymaganego, aby nawet podstawowe animacje działały. * Bóle głowy w różnych przeglądarkach. Z naszego doświadczenia wynika, że obsługa przeglądarek jest bardzo niespójna, a rozwiązania zastępcze są wymagane do prawie wszystkiego. * Nie jest jasne, czym HTML5 różni się od poprzedniego HTML/JS/CSS. Nowe tagi (sekcja, nav itp.) nie przynoszą żadnych oczywistych korzyści. Tracimy całe powiązanie, bezpieczeństwo, funkcjonalność bazy danych i bogaty interfejs użytkownika. * Stylizacja, prezentacja interfejsu użytkownika. Nie możemy stylizować kontroli poza bardzo podstawowym stylem lub koniecznością uciekania się do hacków. * Typografia jest niezawodna w porównaniu z WPF/Silverlight. Więc moje pytanie brzmi: czy wykonałeś jakieś podobne analizy dla HTML5 vs aplikacji natywnej (i nie mam na myśli trywialnej aplikacji na telefon, ale bardzo dużą, złożoną aplikację korporacyjną) i ma źródła lub analizy, które mogą udostępnić?


title: Jeśli to jest camelCase, co to jest?

text: Konwencja nazewnictwa dla terminu takiego jak „zrobić coś” to przypadek wielbłąda. Jak nazwałaby się konwencja nazewnictwa „zrób-coś”?


title: Jak obliczyć percentyl w Javie bez korzystania z biblioteki

text: Próbuję obliczyć „95. percentyl” z zestawów danych, które wypełniłem w mojej poniższej „ConcurrentHashMap”. **Interesuje mnie, ile połączeń wróciło w 95 percentylu czasu** Moja mapa będzie wyglądać tak i zawsze będzie posortowana w kolejności rosnącej na klawiszach- W którym kluczu - oznacza liczbę milisekund wartość - oznacza tyle połączeń trwało milisekundy milisekundy Liczba 0 1702 1 15036 2 14262 3 13190 4 9137 5 5635 6 3742 7 2628 8 1899 9 1298 10 963 11 727 12 503 13 415 14 311 15 235 16 204 17 140 18 109 19 83 20 72 Na przykład z powyższych zestawów danych oznacza to, że > 1702 połączenia wróciły w ciągu 0 milisekund > > 15036 połączeń wróciło w ciągu 1 milisekundy Teraz ja może obliczyć 95 percentyl, podłączając powyższe zestawy danych do „arkusza Excela”. Ale myślałem o obliczeniu percentyla w kodzie Java. Wiem, że algorytm będzie wyglądał mniej więcej tak: zsumuj wszystkie wartości z mapy, oblicz 95% sumy, iteruj klucze mapy w kolejności rosnącej, zachowując bieżącą sumę wartości, a gdy suma jest równa lub wyższa od wcześniej obliczonych 95% suma całkowita, kluczem powinien być 95. percentyl, jak sądzę. Ale nie jestem w stanie wpiąć tego algorytmu do kodu Java. Poniżej znajduje się mapa, która będzie zawierała powyższe zbiory danych. Map<Long, Long> histogram = new ConcurrentHashMap<Long, Long> Nie jestem pewien, jaki jest najlepszy sposób obliczania percentyla w Javie. Nie jestem pewien, czy jestem algorytmem, czy też nie. Próbuję tylko dowiedzieć się, ile połączeń wróciło w 95 percentylu czasu. private static void obliczyćPercentyl() { for (Długi czas : CassandraTimer.histogram.keySet()) { } } Czy ktoś może podać jakiś przykład, jak to zrobić? Każda pomoc będzie mile widziana. **Zaktualizowany kod:-** Poniżej znajduje się kod, który mam do tej pory. Daj mi znać, czy wszystko się zgadza podczas obliczania 95. percentyla- /** * Prosta metoda rejestrowania informacji o 95. percentylu */ private static void logPercentileInfo() { double total = 0; for (Map.Entry<Long, Long> entry : CassandraTimer.histogram.entrySet()) { long value = entry.getKey() * entry.getValue(); suma += wartość; } suma podwójna = 0,95*łącznie; podwójna sumaSuma = 0; SortedSet<Long> keys = new TreeSet<Long>(CassandraTimer.histogram.keySet()); for (long key : keys) { totalSum += CassandraTimer.histogram.get(key); if(totalSum >= sum) { //to chyba 95 percentyl System.out.println(key); } } }


title: Jak przydatne jest „debugowanie gumowej kaczki”?

text: Właśnie dowiedziałem się o debugowaniu gumowej kaczuszki, w której programista wyjaśnia kod linijka po linijce gumowej kaczce lub innemu nieożywionemu obiektowi, aby znaleźć problem. Takie podejście wydaje się czasochłonne, ale wydaje się, że działa dobrze z tego, co przeczytałem. Czy ktoś, kto ma doświadczenie w tym podejściu, może powiedzieć, na ile jest to skuteczne i czy jest to sposób na debugowanie wadliwego kodu, który jest czasooszczędny w porównaniu z innymi technikami, takimi jak przechodzenie przez program i obserwowanie zmiennych w debugerze?


title: Jaka jest „dobra liczba” wyjątków do zaimplementowania w mojej bibliotece?

text: Zawsze zastanawiałem się, ile różnych klas wyjątków powinienem zaimplementować i wrzucić dla różnych części mojego oprogramowania. Mój szczególny rozwój jest zwykle związany z C++/C#/Java, ale uważam, że jest to pytanie dla wszystkich języków. Chcę zrozumieć, jaka jest duża liczba różnych wyjątków do rzucenia i czego społeczność programistów oczekuje od dobrej biblioteki. Kompromisy, które widzę, obejmują: * Więcej klas wyjątków pozwala na bardzo drobne poziomy obsługi błędów dla użytkowników interfejsu API (podatnych na błędy konfiguracji użytkownika lub błędów danych lub nie można znaleźć plików) * Więcej klas wyjątków umożliwia osadzanie informacji o błędach w wyjątku, a nie tylko w postaci komunikatu tekstowego lub kodu błędu * Więcej klas wyjątków może oznaczać większą konserwację kodu * Więcej klas wyjątków może oznaczać, że interfejs API jest mniej dostępny dla użytkowników Scenariusze, w których chcę zrozumieć użycie wyjątków, obejmują: * Podczas konfiguracji ' etap, który może obejmować wczytywanie plików lub ustawianie parametrów * Podczas fazy typu 'operacja' gdzie biblioteka może wykonywaćzadania i wykonywaćtrochę pracy, być może w innym wątku Inne wzorce raportowania błędów bez używania wyjątków lub mniej wyjątków (jako porównania) może obejmować: * Mniej wyjątków, ale osadzanie kodu błędu, który może być użyty jako wyszukiwanie * Zwracanie kodów błędów i flag bezpośrednio z funkcji (niektóre czasy niemożliwe z wątków) * Zaimplementowano system zdarzeń lub wywołań zwrotnych w przypadku błędu (unika rozwijania stosu) Jako programiści, co wolisz widzieć? Jeśli jest WIELE wyjątków, czy i tak przeszkadza ci błąd ich oddzielnej obsługi? Czy preferujesz rodzaje obsługi błędów w zależności od etapu operacji?


title: Kiedy muszę używać frameworka?

text: Jestem nowicjuszem w programowaniu stron internetowych i obecnie uczę się PHP. Chciałbym wiedzieć, kiedy muszę użyć frameworka PHP, takiego jak CakePHP? Co oferuje mi ten i inne podobne frameworki PHP? I czy naprawdę ważne jest, aby używać frameworka, aby być profesjonalistą? * Czy mogę stworzyć własny framework, aby zapewnić w nim funkcje, które mi się podobają?


title: Czy odmowa użycia frameworka PHP byłaby złym pomysłem?

text: > **Możliwy duplikat:** > Kiedy muszę używać frameworka? Czuję się dość kompetentny w tworzeniu wielu aplikacji w PHP i do tej pory nie widziałem potrzeby korzystania z jednego z popularnych frameworków (CakePHP, Zend itp.). Jako programiście daje mi to komfort, że wiem dokładnie, co robi mój kod i przypuszczam, że wcześniej miało to sens, ponieważ uczyłem się języka. Czy to z mojej strony ignorancja, że nie chcę używać jednego z tych mainstreamowych frameworków? **Czy to zaszkodzi mojej produktywności? Dlaczego nie miałbym po prostu stworzyć własnej bazy kodu, która ma dla mnie sens?** Poza możliwością utrudniania późniejszych wyborów zawodowych, w których wiele ról może wymagać doświadczenia w zakresie frameworka, nie jestem pewien, czy coś mi brakuje...


title: Ciąg zawiera końcowe zera po konwersji z dziesiętnego

text: Natknąłem się na niezwykłe dziwactwo w programie, który piszę, i próbowałem dowiedzieć się, czy ktoś zna przyczynę. Pamiętaj, że **naprawienie** problemu jest dość łatwe. Po prostu nie mogę zrozumieć, dlaczego tak się dzieje. Mam program WinForms napisany w _VB.NET_, który wyświetla podzbiór danych. Zawiera kilka etykiet, które pokazują wartości liczbowe (właściwość `.Text` etykiet jest przypisywana bezpośrednio z wartości Decimal). Te liczby są zwracane przez bibliotekę DLL, którą napisałem w _C#_. Biblioteka DLL wywołuje usługę sieciową, która początkowo zwraca żądane wartości. Zwraca jeden jako ciąg, a drugi jako ułamek dziesiętny (nie mam żadnej kontroli nad usługą sieciową, po prostu go używam). Biblioteka DLL przypisuje je do właściwości obiektu (obie są wartościami dziesiętnymi), a następnie zwraca ten obiekt z powrotem do programu WinForm, który wywołał bibliotekę DLL. Oczywiście z usługi internetowej jest zużywanych wiele innych danych, ale nie są wykonywane żadne inne operacje, które mogłyby zmodyfikować te właściwości. Krótka wersja to: * WinForm żąda nowego `Foo` z biblioteki DLL. * DLL tworzy obiekt `Foo`. * DLL wywołuje usługę sieciową, która zwraca `SomeOtherFoo`. //Zarówno Foo.Bar1 jak i Foo.Bar2 są ułamkami dziesiętnymi Foo.Bar1 = decimal.Parse(SomeOtherFoo.Bar1); //SomeOtherFoo.Bar1 to łańcuch równy "2.9000" Foo.Bar2 = SomeOtherFoo.Bar2; //SomeOtherFoo.Bar2 to ułamek dziesiętny równy 2,9D * DLL zwraca Foo do WinForm. WinForm.lblMockLabelName1.Text = Foo.Bar1 //Sprawdzenie Foo.Bar1 wskazuje, że moja wartość to 2,9D WinForm.lblMockLabelName2.Text = Foo.Bar2 //Sprawdzenie Foo.Bar2 również wskazuje, że mam 2,9D Więc o co chodzi? WinForm.lblMockLabelName1.Text jest wyświetlany jako **"2.9000"** , natomiast WinForm.lblMockLabelname2.Text jest wyświetlany jako **"2.9"**. Teraz wszystko, co wiem o C# i VB, wskazuje, że format ciągu, który został początkowo przeanalizowany do postaci dziesiętnej, nie powinien mieć wpływu na wynik późniejszej operacji decimal.ToString() wywoływanej na tym samym miejscu dziesiętnym. Spodziewałbym się, że `decimal.Parse(someDecimalString).ToString()` zwróci ciąg bez żadnych końcowych zer. Wszystko, co znajduję w Internecie, wydaje się to potwierdzać (istnieją niezliczone pytania dotyczące przepełnienia stosu, które pytają dokładnie odwrotnie ... jak zachować formatowanie przed wstępnym analizowaniem). W tej chwili właśnie usunąłem końcowe zera z początkowego ciągu, który jest analizowany, co ukryło dziwactwo. Jednak w pierwszej kolejności chciałbym wiedzieć, dlaczego tak się dzieje.


title: Czy muszę zmienić firmę, aby upewnić się, że jestem wystarczająco dobry?

text: Jako programista pracuję od czwartego roku studiów do chwili obecnej. W przyszłym roku robię magisterkę (z modelowania matematycznego). Cały czas pracowałem dla tej samej firmy, najpierw na .Net, potem na Androidzie, a teraz znowu na .Net. Wygląda na to, że w mojej obecnej firmie radzę sobie całkiem nieźle. Niektórzy z moich kolegów z kursu próbowali pracować w mojej firmie, ale po pewnym czasie im się nie udało. To (i nie tylko to) sprawia, że myślę, że naprawdę jestem coś wart. Ale pracujemy nad bardzo konkretnym projektem. Zastanawiałem się, czy jestem wystarczająco dobry i czy dam radę w innej firmie. Kocham swoją obecną pracę, ale czasami mam wrażenie, że nie idę dalej. Czy można więc ciągle się doskonalić pracując w tej samej firmie, przy tej samej technologii i przy podobnych zadaniach? Wiem, że większość programistów bardzo często jeździ z miejsca na miejsce. Czy to jedyny sposób?


title: Preferuj przykłady niż dokumentację. Czy to problem behawioralny?

text: Ilekroć natknąłem się na nowe API lub język programowania, a nawet proste strony podręcznika Linuxa, zawsze (odkąd pamiętam) unikałem ich i zamiast tego leniwie polegałem na przykładach, aby zrozumieć nowe koncepcje. Podświadomie unikam dokumentacji/API, gdy nie jest to proste, zagadkowe lub po prostu nudne. Minęły lata, odkąd zacząłem programować, a teraz czuję, że muszę naprawić swoje sposoby, ponieważ teraz zdaję sobie sprawę, że wyrządzam więcej szkód, powstrzymując się od czytania zagadkowej/trudnej dokumentacji, ponieważ jest ona wciąż milion razy lepsza niż oficjalne przykłady dokumentacja ma większy zasięg niż jakikolwiek inny przykład. Nawet po uświadomieniu sobie, że przykłady należy traktować jako „wartość dodaną”, a nie „pierwotne” źródło do nauki. Jak zerwać z tym złym nawykiem jako programista, czy też za dużo się zastanawiam?


title: Ile jeden programista może zrobić sam?

text: W przypadku oprogramowania, którego rozwój wymagają całe zespoły ludzi, jak wiele może osiągnąć jeden programista samodzielnie? Innymi słowy, czy jedna osoba mogłaby napisać w Photoshopie, MS Word itp.? A jeśli nie, to czy tworzenie stron internetowych byłoby obszarem, w którym jeden programista mógłby wiele zdziałać?


title: Jak traktować ostrzeżenia „Pole nigdy nie jest używane”?

text: > Ostrzeżenie 1 Pole 'MCS_SPS_School.Fees.DiscountAmt.rtvalue' jest przypisane >, ale jego wartość nigdy nie jest używana G:\Jagadeeswaran\Nov 17\MCS-SPS School\MCS-SPS > School\Fees\DiscountAmt.cs > > Ostrzeżenie 2 Pole 'MCS_SPS_School.Fees.DiscountAmt.dt' nigdy nie jest używane > G:\Jagadeeswaran\Nov 17\MCS-SPS School\MCS-SPS School\Fees\DiscountAmt.cs Ten typ ostrzeżenia nadal występuje w moim projekcie. Ale projekt przebiega bezpiecznie. Teraz, co mam zrobić, aby te ostrzeżenia naprawić lub zignorować? Czy jest to niebezpieczne, jeśli to zignorujesz, jeśli chodzi o wydajność lub inne?


title: Parametr metody pobiera obiekt ze swojej własnej klasy?

text: Nie jestem do końca pewien, czy to właściwe miejsce na to pytanie. Ale myślę, że StackOverflow nie będzie odpowiednim miejscem. Czy z jakiegoś powodu jest to zły sposób na przekazanie obiektu do metody z tej samej klasy? Z jakiegoś powodu nie czuję się dobrze z pierwszym rozwiązaniem. Metoda `Start` uruchamia grę z danym graczem. CurrentGame.Start(CurrentGame.CurrentPlayer); lub CurrentGame.StartWithCurrentPlayer(); Ale ostatnia metoda może wymagać drugiej metody, takiej jak: public void SetCurrentPlayer(Player player) { CurrentPlayer = player; }


title: Ruby on Rails - Belongs_to i Active Admin nie tworzą obcego ID

text: Mam następującą konfigurację: class Category < ActiveRecord::Base has_many :products end class Product < ActiveRecord::Base należy_to :category has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => " 200x200>" } validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/ end ActiveAdmin.register Produkt do allow_params :title, :price, :slideshow, :photo, :category form do |f| f.inputs "Szczegóły produktu" do f.input :tytuł f.input :kategoria f.input :cena f.input :pokaz slajdów f.input :zdjęcie, :wymagane => false, :as => :koniec pliku f.actions koniec pokazu |reklama| atrybuty_tabela wykonaj wiersz :title wiersz :kategoria wiersz :zdjęcie wykonaj image_tag(ad.photo.url(:medium)) koniec koniec koniec indeks wykonaj kolumna :id kolumna :tytuł kolumna :kategoria kolumna :cena wykonaj |produkt| number_to_currency product.price end action end class ProductController < ApplicationController def create @product = Product.create(params[:id]) end end Za każdym razem, gdy tworzę pozycję produktu w activeadmin, kategoria pojawia się pusta. Nie wypełni kolumny id_kategorii produktu. Po prostu pozostawia to puste. Co ja robię źle?


title: OAuth2 a publiczny interfejs API

text: Moje rozumienie OAuth (2.0) polega na tym, że jest to stos oprogramowania i protokół, który umożliwia co najmniej 2 aplikacjom internetowym udostępnianie informacji o jednym użytkowniku końcowym. Użytkownik A jest członkiem Ośrodka B i Ośrodka C; Witryna B chce pobrać pewne dane z Witryny C na temat Użytkownika A i tutaj wkracza OAuth. Po pierwsze, jeśli ta ocena jest nieprawidłowa, zacznij od wyjaśnienia mi tego i poprawienia! Zakładając, że jestem na dobrej drodze, to chyba nie widzę potrzeby używania OAuth na początku (!). Jestem pewien, że po prostu nie widzę tutaj „lasu przez drzewa”, ale tak, jak to widzę, witryna C nie może po prostu ujawnić publicznego interfejsu API, którego witryna B mogłaby użyć do pobrania tych samych danych (bez OAuth) ? Jeśli Witryna C wymagała poświadczeń użytkownika, aby uzyskać dostęp do danych, czy ten publiczny interfejs API może po prostu używać protokołu HTTPS do bezpiecznego transportu i wymagać nazwy użytkownika/hasła jako części każdego wywołania interfejsu API? Ponownie, jestem pewien, że czegoś mi brakuje, ale po prostu nie rozumiem, dlaczego potrzebuję OAuth, gdy bezpieczny, publiczny interfejs API napisany i udostępniony przez Witrynę C wydaje się więcej niż zdolny do dostarczenia tego, czego potrzebuje Witryna B w odniesieniu do Użytkownika A. Ogólnie rzecz biorąc, szukam zestawu wytycznych, którymi można się kierować, decydując się na wybór między używaniem OAuth dla moich aplikacji internetowych lub po prostu pisaniem własnej usługi internetowej (ujawnianie publicznego interfejsu API). Z góry dziękuję!


title: Jak przechowywać i zabezpieczać certyfikaty z podpisem własnym?

text: Jestem prawie pewien, że nie powinienem zatwierdzać certyfikatów do kontroli źródła. Nawet jeśli repozytorium jest prywatne i tylko uwierzytelnieni współpracownicy (na przykład) mają do niego dostęp. To pozwoliłoby na przypadkowe ujawnienie (napędy kciuka, wycieki danych uwierzytelniających, cokolwiek). Ale **jak mam przechowywać i zabezpieczać certyfikaty?** Nie sądzę, że powinienem je po prostu umieścić na sieciowym serwerze plików, z tych samych powodów, dla których nie poddałbym ich kontroli źródła, prawda? Czy istnieje jakiś bezpieczny magazyn certyfikatów, który mogę uruchomić? Czy "keystore" Javy robi to ogólnie, czy jest specyficzny dla serwerów weblogic lub czegoś podobnego?


title: Gdzie przechowywać dane frontonu dla "kalkulatora obiektów"

text: Niedawno ukończyłem bibliotekę językową, która działa jak gigantyczny filtr dla artykułów spożywczych i działa trochę w ten sposób `:Produkty -> Przepisy -> MenuItems -> Posiłki` i wreszcie, po przesłaniu, tworzy `Zamówienie`. Ukończyłem również strukturę bazy danych, która przechowuje wszystkie istotne informacje dla każdej klasy i wydaje się, że pasuje do moich potrzeb. Problem, który mam, to połączenie tych dwóch. Wyobraziłem sobie, że wszystkie informacje są lokalne dla każdej instancji produktu, gdzie istnieje jeden użytkownik zaplecza, który edytuje i manipuluje danymi, oraz wielu użytkowników frontonu, którzy wybierają swój posiłek (posiłki), aby utworzyć zamówienie. Idealnie byłoby, gdyby wszyscy użytkownicy frontonu mieli wszystkie te informacje przechowywane lokalnie w bibliotece i aktualizowaliby bibliotekę podczas uruchamiania z bazy danych. W jaki sposób mam przechowywać dane, aby móc je ładować do biblioteki za każdym razem, gdy użytkownik otwiera aplikację? Czy mam spakować bazę danych na pokładzie i po prostu ładować i wypełniać za każdym razem? Jedyna metoda, jaką mogę sobie wyobrazić, aby to zrobić, nawet jeśli mam tylko 500 możliwych obiektów `Produktu`, wymagałaby ode mnie foreach listy dla każdego `Produktu`, który muszę dopasować do `Recipe` i tak dalej i tak dalej dalej za każdym razem, gdy ponownie uruchamiam program, co wydaje się być bardzo marnotrawnym ładowaniem. Oto ogólny przepływ mojej architektury: Produkty: public class Product: IPortionable { public Product(string n, uint pNumber = 0) { name = n; numer produktu = numer p; } public string name { get; ustawić; } public uint numer produktu { get; ustawić; } } Receptury: public Recipe(string n, dziesiętny uzyskAmt, Volume.Unit unit) { name = n; wydajność = nowy wolumen (yieldAmt, jednostka); uzysk.KonwertujJednostkę(); } /// <summary> /// Tworzy nowy obiekt składnika /// </summary> /// <param name="n">Nazwa</param> /// <param name="yieldAmt">Przepis Yield</param> /// <param name="unit">Jednostka zysku</param> public Recipe(string n, dziesiętny uzyskAmt, Weight.Unit unit) { name = n; wydajność = new Weight(yieldAmt, jednostka); } public Przepis(Przepis) { nazwa = r.nazwa; wydajność = r.wydajność; składniki = r.składniki; } public string name { get; ustawić; } public IZmierz wydajność; public Dictionary<IPortionable,IMeasure> components = new Dictionary<IPportionable,IMeasure>(); MenuItems: public abstract class MenuItem : IScalable { public statyczny tytuł ciągu = null; public string name { get; ustawić; } public dziesiętna maxPortionSize { get; ustawić; } public dziesiętna minPortionSize { get; ustawić; } public Dictionary<IPortionable, IMeasure> components = new Dictionary<IPportionable, IMeasure>(); and Meal: public class Meal { public Meal(int guests) { guestCount = guests; } public int liczba gosci { get; zestaw prywatny; } //TODO: Utwórz nową klasę MainCourse, która przechowuje makaron i Entree publiczny Dictionary<string, int> counts = new Dictionary<string, int>(){ {MainCourse.title, 0}, {Side.title , 0}, {Przystawka.tytuł, 0} }; public List<MenuItem> items = new List<MenuItem>(); Baza danych po prostu przechowuje i łączy każdą z tych podstawowych nazw i kwot razem przy użyciu identyfikatorów (`RecipeID, ProductID i MenuItemID`)


title: Czy można używać zastrzeżonych bibliotek w licencjonowanym źródle MPL 2.0?

text: Czy legalne jest używanie biblioteki innej firmy w projekcie oprogramowania, który sam jest objęty licencją MPL 2.0? Niektóre potencjalne hierarchie projektów mogą wyglądać tak: * Library Project [MPL 2.0] (Open Source, Distributed) * Trzecia biblioteka [Proprietary] (Closed source, niedystrybuowane) * * * * Projekt innej osoby [MPL 2.0] (Open source , dystrybuowane) * Library Project [MPL 2.0] (Open Source, Distributed) * Biblioteka innej firmy [Proprietary] (Zamknięte źródło, nierozprowadzane) * * * Moje praktyczne odczucie jest takie, że to jest w porządku, w przeciwnym razie nie byłoby możliwości wykorzystania tej licencji na wielu platformach, których podstawowe biblioteki są zastrzeżone, jak na przykład na iOS. Jedyna różnica polega na tym, że te biblioteki są dystrybuowane do zarejestrowanych programistów.


title: Jak wibracje mogą wpływać na pomiary głębokości sensora Kinect

text: Obecnie prowadzę badania nad rozwojem produktu Microsoft Kinect. Mój kierownik projektu wymyślił potencjalny projekt montażu kamery do robienia zdjęć. Rozwiązanie to oznacza jednak, że kamera może być poddawana wibracjom, ponieważ platforma, na której się znajduje, jest bezpośrednio połączona z miejscem, w którym będą się poruszać obiekty. Myślałem, że wibracje wpłyną na jakość wyników, jednak nie mogłem wymyślić realnego wyjaśnienia, dlaczego, poza tym, że trzymasz aparat w dłoni i trzęsie ci się ręka vs. statyw. Czy wibracje wpływają na pomiary głębokości w sensorze Kinect, a jeśli tak, jak mogę to wyjaśnić w prosty sposób mojemu kierownikowi, aby pomóc w opracowaniu lepszego projektu, do którego można przymocować czujnik?


title: Jaki jest właściwy sposób przetwarzania niespójnych plików danych?

text: Pracuję w firmie, która używa plików Excela do przechowywania danych produktów, w szczególności wyników testów produktów przed ich wysłaniem. Istnieje kilka tysięcy arkuszy kalkulacyjnych zawierających od 50 do 100 odpowiednich punktów danych na plik. Na przestrzeni lat schemat arkuszy kalkulacyjnych zmienił się znacząco, ale nie jednokierunkowo – w tym sensie, że zmiany często są cofane, a następnie ponownie dodawane w przestrzeni od kilkudziesięciu do kilkuset plików. Mój projekt polega na przekształceniu około 8000 tych arkuszy kalkulacyjnych w bazę danych, którą można przeszukiwać. Używam MongoDB do radzenia sobie z niespójnością danych i Pythona. Moje pytanie brzmi, jaki jest „właściwy” lub kanoniczny sposób radzenia sobie z ogromną rozbieżnością w moich plikach źródłowych? Napisałem strukturę danych, która przechowuje dane, które chcę dla najnowszego szablonu, który będzie ostatecznym szablonem używanym w przyszłości, ale to pomaga tylko w przypadku kilkuset plików w historii. Wymuszanie brutalnego rozwiązania oznaczałoby pisanie podobnych struktur danych dla każdej wersji/szablonu - co oznacza potencjalnie pisanie setek schematów z dziesiątkami pól każdy. Wydaje się to bardzo nieefektywne, zwłaszcza gdy czasami zmiana w szablonie sprowadza się do przesunięcia pojedynczego wiersza danych o jeden wiersz w dół lub podzielenia tego, co kiedyś było jednym polem danych, na dwa pola danych. Nieco bardziej eleganckim rozwiązaniem, które mam na myśli, byłoby napisanie schematów dla wszystkich wariantów, jakie mogę znaleźć dla predefiniowanych grup w plikach źródłowych, a następnie napisanie funkcji dopasowującej konkretną serię plików do serii wariantów, które do niej pasują zestaw plików. Dzieje się tak dlatego, że częściej większość pliku pozostanie spójna przez długi czas, zakłócona tylko jedną lub dwiema błędnymi sekcjami, ale wewnątrz okresu, która jest niespójna, jest niespójna. Na przykład, powiedzmy, że plik ma cztery sekcje z trzema polami danych, które są reprezentowane przez cztery słowniki Pythona z trzema kluczami każdy. Dla plików 7000-7250, sekcje 1-3 będą spójne, ale sekcja 4 zostanie przesunięta o jeden wiersz w dół. Dla plików 7251-7500, 1-3 są spójne, sekcja 4 jest o jeden wiersz niżej, ale pojawia się sekcja piąta. Dla plików 7501-7635 sekcje 1 i 3 będą spójne, ale sekcja 2 będzie miała pięć pól danych zamiast trzech, sekcja piąta zniknie, a sekcja 4 będzie nadal przesunięta o jeden wiersz w dół. W przypadku plików 7636-7800 sekcja 1 jest spójna, sekcja 4 zostaje przesunięta z powrotem w górę, sekcja 2 powraca do trzech komórek, ale sekcja 3 jest całkowicie usuwana. Pliki 7800-8000 mają wszystko w porządku. Proponowana funkcja pobierałaby numer pliku i dopasowywała go do słownika reprezentującego odwzorowania danych dla różnych wariantów każdej sekcji. Na przykład, słownik section_four_variants może mieć dwa elementy, jeden dla wersji przesuniętej w dół i jeden dla wersji normalnej, a section_two_variants może mieć trzy i pięć elementów pól itd. Skrypt odczyta wtedy dopasowania, załaduje poprawne mapowanie , wyodrębnij dane i wstaw je do bazy danych. Czy jest to akceptowany/właściwy sposób rozwiązania tego problemu? Czy powinienem uporządkować rzeczy inaczej? Nie wiem, czego szukać w Google, aby zobaczyć, jakie mogą być inne rozwiązania, chociaż uważam, że problem leży w domenie przetwarzania ETL. Poza tym, czego nauczyłem się przez lata, nie mam również żadnego formalnego szkolenia CS. Jeśli to nie jest właściwe forum na to pytanie, proszę powiedz mi, gdzie je przenieść, jeśli w ogóle. Jakakolwiek pomoc jest mile widziana. Dziękuję Ci.


title: Jakie są rzeczy, które Java zrobiła dobrze?

text: Jakie są rzeczy, które Java (język i platforma) mają kategorycznie poprawne? Innymi słowy, jakie rzeczy zachowują i rozwijają nowsze języki programowania? Niektóre proste odpowiedzi to: garbage collection, VM, brak wskaźników, classloaders, reflection(?) A co z odpowiedziami opartymi na języku? Proszę nie wymieniać rzeczy, które Java zrobiła źle, tylko dobrze.


title: Jeśli twój kolega odchodzi z pracy, czy powiadomiłbyś swojego szefa?

text: Jeśli kolega z Twojego zespołu planuje odejść z pracy i może to wywołać złe odczucia w Twojej firmie, czy powiadomiłbyś swojego szefa?


title: Co dokładnie oznacza angielskie słowo „for” w pętlach „for”?

text: Angielski nie jest moim pierwszym językiem, ale ponieważ słowa kluczowe w językach programowania są słowami angielskimi, zwykle z łatwością czytam kod źródłowy jako angielskie zdania: * `if (x > 10) f();` => "If variable ` x` jest większe niż `10`, a następnie wywołaj funkcję `f`." * `while (i < 10) ++i;` => "Gdy zmienna `i` jest mniejsza niż `10`, zwiększ `i` o `1`." Ale jak należy czytać pętlę `for`? * `dla (i = 0; i < 10; ++i) f(i);` => ??? To znaczy, wiem, czym jest pętla „for” i jak działa. Mój problem polega tylko na tym, że nie wiem, co dokładnie oznacza angielskie słowo „for” w pętlach „for”.


title: Czy ktoś może mi wyjaśnić, czym są lambda w programowaniu?

text: Do tej pory słyszałem o : * rachunku lambda * programowaniu lambda * wyrażeniach lambda * funkcjach lambda Co wydaje się być związane z programowaniem funkcjonalnym... Podobno zostanie on zintegrowany z C++1x, więc może teraz lepiej to zrozumiem: http ://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions Czy ktoś może pokrótce zdefiniować, czym są lambdy i podać, gdzie może się to przydać?


title: Wzorzec projektowy dla aplikacji korporacyjnych

text: Przeczytałem kilka artykułów na temat wzorca złożonego i chcę wiedzieć, czy ma on zastosowanie w następującej sytuacji, odkryłem, że "Obiekt encji złożonej może reprezentować obiekt gruboziarnisty i wszystkie powiązane z nim obiekty zależne" public class PatientRegistrationDTO { public string RegistrationNo; publiczny identyfikator ciągu; public DateTime AdmitDate; } public class PersonDTO { public string ID { get; ustawić; } ciąg publiczny Pełna nazwa { get; ustawić; } ciąg publiczny Imię { get; ustawić; } } używając tych dwóch obiektów muszę utworzyć public class Patient { public string ID { get; ustawić; } ciąg publiczny Pełna nazwa { get; ustawić; } public DateTime AdmitDate; } Czy mogę tutaj użyć wzorca Composite dla aplikacji korporacyjnych? Czy mogę dodać jakąś klasę jak poniżej? public class PatientDTO { public static Pacjent ConvertToEntity(PatientRegistrationDTO pregDTO, PersonDTO person) { Pacjent p = nowy Pacjent(); p.ID= pregDTO.ID; p.PełneNazwisko = osoba.PełneNazwisko; p.DataPrzyjęcia = pregDTO.DataPrzyjęcia; powrót p; } }


title: Skuteczność samokształcenia

text: Czy uważasz, że samouczenie się w tworzeniu oprogramowania jest dobre? Podaj przykład tego, czego sam się skutecznie nauczyłeś.


Pytanie jest dość oczywiste. Czy warto używać oprogramowania VCS (Version Control Softwares) do projektów hobbystycznych/małych/osobistych?


title: Wywoływanie usługi sieci Web w projekcie Web API… w której warstwie należy wywołać?

text: Używam **Microsoft ASP.NET Web API 2** i jeden z moich punktów końcowych musi wewnętrznie wywoływać starsze usługi sieci web innych niż Microsoft (nie `asmx` lub `svc`). W której warstwie powinienem to wywołać? Obecnie mam : ** Warstwę repozytorium: ** gdzie wszystkie wywołania CRUD do DB są teraz wykonywane. **Menedżer domeny:** gdzie odpowiednie klasy menedżera wywołują metody `Warstwy repozytorium`. A moje metody **Web API Controller** wywołują odpowiednie metody Menedżera domen. Czy powinienem mieć inną metodę w mojej **Warstwa repozytorium**, która wywołuje usługę sieciową? I postępuj zgodnie ze zwykłym wzorem powyżej?


title: Identyfikacja, który wzór pasuje lepiej

text: Tworzę oprogramowanie do programowania urządzenia. Mam kilka poleceń, takich jak `Reset`, `Read_Version`, `Read_memory`, `Write_memory`, `Erase_memory`. „Reset” i „Read_Version” są naprawione. Nie potrzebują parametrów. Parametry `Read_memory` i `Erase_memory` wymagają tych samych parametrów, co Długość i Adres. `Write_memory` wymaga długości, adresu i danych. Dla każdego polecenia mam w kolejności te same kroki, które przypominają `sendCommand`, `waitForResponse`, `treatResponse`. Mam trudności z określeniem wzorca, którego należy użyć. Fabryka, metoda szablonu, strategia lub inny wzorzec. ## Edytuj Postaram się lepiej wyjaśnić biorąc pod uwagę podane komentarze i odpowiedzi. Zrobiłem już to oprogramowanie i teraz próbuję je zrefaktoryzować. Staram się używać wzorców, nawet jeśli nie jest to konieczne, ponieważ korzystam z tego małego oprogramowania, aby poznać pewne wzorce. Mimo to uważam, że jeden (lub więcej) wzorzec pasuje tutaj i mógłby poprawić mój kod. Gdy chcę odczytać wersję oprogramowania mojego urządzenia, nie muszę asemblować komendy z parametrami. Jest naprawione. Więc muszę to wysłać. Poczekaj na odpowiedź. Jeśli pojawi się odpowiedź, potraktuj ją (lub przeanalizuj) i zwróć. Aby odczytać część pamięci (maksymalnie 256 bajtów), muszę złożyć polecenie używając parametrów `Len` i `Address`. Więc muszę to wysłać. Poczekaj na odpowiedź. Jeśli pojawi się odpowiedź, potraktuj ją (lub przeanalizuj) i zwróć. Aby zapisać fragment w pamięci (maksymalnie 256 bajtów), muszę złożyć polecenie używając parametrów `Len`, `Address` i `Data`. Więc muszę to wysłać. Poczekaj na odpowiedź. Jeśli pojawi się odpowiedź, potraktuj ją (lub przeanalizuj) i zwróć. Myślę, że mógłbym użyć metody szablonu, ponieważ mam prawie ten sam algorytm dla wszystkich. Ale problem polega na tym, że niektóre polecenia są poprawkami, inne mają 2 lub 3 parametry. Uważam, że parametry należy przekazać konstruktorowi klasy. Ale każda klasa będzie miała konstruktor zastępujący konstruktor klasy abstrakcyjnej. Czy jest to problem dla metody szablonu? Czy powinienem użyć innego wzoru?


title: Co najczęściej dzieje się z programistami podczas czytania kodu innych?

text: Czy czytając kod innych osób, zwykle masz problemy ze zrozumieniem go, czy też częściej kwestionujesz kod innych, że jest błędny/nieefektywny/niewłaściwie sformatowany (itd.)? Ktoś czytający to, co zakodowałeś w swojej pierwszej pracy


title: W jaki sposób programiści używali sieci do współdzielenia drogich zasobów komputerowych w latach 60-tych i 70-tych?

text: Jestem młody i nie żyłem w latach 60-tych i 70-tych, żeby doświadczyć networkingu i programowania tak, jak kiedyś. Oglądałem niektóre wykłady Van Jacobsona na temat Content Centric Networking i w tych wykładach przedstawia on historyczną perspektywę, stwierdzając, że w latach 60. i 70. networking został zaprojektowany w celu rozwiązania problemu współdzielenia zasobów, takiego jak uzyskanie dostępu do rzadkich czytników kart lub szybkie napędy taśmowe. Następnie mówi, że w tej epoce było bardzo mało danych, a dane „nie żyły na komputerach”, były czymś, co nosiłeś ze sobą, np. na taśmach lub wydrukach. Mam dwa pytania dotyczące tego: 1) W jaki sposób ludzie "zdalnie" używali czegoś takiego jak czytnik kart? Z pewnością w pewnym momencie fizyczne karty musiały zostać dostarczone tam, gdzie znajdował się komputer. Jeśli znajdowałeś się 100 mil stąd, czy to oznaczało, że wysłali karty z wyprzedzeniem, a następnie po prostu użyli sieci, aby wykonać polecenia niezbędne do uruchomienia tych talii? 2) W jaki sposób ludzie ogólnie otrzymali wyniki swoich programów? Czy został odesłany przez drut, czy też wydruki/taśmy itp. zostały wysłane po ponownym uruchomieniu programu do zdalnego badacza? Przepraszam, jeśli moja epoka pomieszała mi się tutaj w jakikolwiek sposób, tak jak powiedziałem, nie żyłem w tym czasie. Dziękuję.


title: Jak oceniam programowanie stron internetowych przygotowujących do rozmów kwalifikacyjnych?

text: Natknąłem się na stronę CareerCup, która mówi, że mogą pomóc Ci przygotować się do rozmów programistycznych z różnymi czołowymi amerykańskimi firmami technologicznymi. Niczego nie „gwarantują”, a witryna wydaje się być poparta dobrze zrecenzowaną książką*. *Recenzje są na Amazon Byłem aktywnym członkiem StackOverflow, więc według mnie najlepszym źródłem do przygotowania byłby StackOverflow. Ale widziałem, że CareerCup zebrał pytania do rozmów kwalifikacyjnych z różnych firm. Tak więc kluczowa różnica polega na tym, że musiałbym szukać pytań do wywiadu w SO w porównaniu z pytaniami już zagregowanymi przez drugą stronę. Jak mam przejść do oceny wiarygodności takiej strony internetowej? Jak mogę ocenić, czy ich oferty dotyczące przygotowania do rozmowy kwalifikacyjnej są warte zachodu?


title: Włączenie stron HTML projektanta stron internetowych do aplikacji MVC4

text: Rozpoczynamy nowy projekt, który będzie wykorzystywał platformę ASP .NET MVC4. Zostałem poinformowany, że projekt jest zlecany firmie zajmującej się projektowaniem na zamówienie, która dostarczy nam strony HTML i arkusze stylów. Jak łatwo będzie włączyć te arkusze stylów css i strony HTML do naszej aplikacji? Czy muszę prosić o coś więcej niż strony HTML? Moje osobiste doświadczenie ogranicza się do jednej witryny, która została zbudowana dla firmy i użyłem HTMLHelper do generowania widoków. Innym moim doświadczeniem z przeszłości jest używanie klasycznego ASP i to było bardzo proste, ponieważ mogłem dosłownie połączyć ASP i HTML. Moje pytanie brzmi, co to jest dobre podejście do włączania HTML i arkuszy stylów od projektanta stron internetowych do aplikacji internetowej ASP.NET MVC4?


title: Jak pozbyć się cyklicznych odniesień w tym projekcie?

text: Mam 3 zajęcia: **Spotkanie** , **Projekt** i **Agenda**. * **Projekt** zawiera wszelkiego rodzaju informacje + listę spotkań. * **Agenda** zawiera listę nadchodzących Spotkań. * **Spotkanie** zawiera pewne dane + listę Projektów, które były tam omawiane. Agenda sprawdza nadchodzące spotkania. Gdy je znajdzie, wywołuje metodę _Meeting::alarm()_, która z kolei wyświetla dane, które otrzymuje z listy projektów, do których odnosi się to spotkanie. Do **Spotkań** można odwoływać się w projekcie bez zaplanowania ich w **Agendzie** , ale umieszczanie odniesienia do spotkania w programie nie ma sensu, jeśli nie jest ono zawarte w projekcie. ![Zależność między klasami](http://i.stack.imgur.com/FDo2L.png) Ponieważ **Agenda** może być parsowana w wątku, podczas gdy wątek główny usuwa **projekt** , ja sprawił, że zarówno Agenda, jak i Project używają wspólnych wskaźników na spotkaniach, aby wątek analizujący nie znalazł wiszącego wskaźnika. W destruktorze **Projekt** proszę **Agenda** o sprawdzenie spotkań związanych z tym projektem w celu oczyszczenia tych, którzy nie mają żadnego innego powiązanego projektu. Oto mój problem: _Jaką strukturą danych powinien być członek Meeting::parentProjects?_ Jeśli Spotkanie zostanie wywołane przez Agenda, gdy jego Projekt jest usuwany, a parentProjects jest prostym kontenerem surowych wskaźników, mogę mieć tutaj zawieszony . Ale nie mogę też użyć shared_ptr do Project, ponieważ spowodowałoby to cykliczną zależność... Czuję, że jest to niepotrzebnie skomplikowane. _Jak mogę to zmienić?_ Uwaga: **Muszę** zachować 2 wątki.


title: Algorytm do wykrywania KLIKNIĘCIA w zakresie kwadratowym

text: Może to proste pytanie, ale szukam optymalnego rozwiązania. Będę miał wydrukowane cyfry na ekranie i będę świadomy współrzędnych. Liczby/symbole będą miały 4 punkty (kwadrat), aby określić ich granice. Współrzędne tego konkretnego symbolu zostaną zapisane w pliku. Powiedzmy, że jest liczba _5_ i jej 4 współrzędne na ekranach to: **(2,20,20,20,2,40,20,40)** Teraz załóżmy, że ciąg _555_ reprezentuje wartość w pliku , powiedzmy, że wartość to _Samochód1_ Gdy użytkownik naciśnie trzykrotnie klawiaturę numeryczną _5_, powinien wykryć, że potrzebuje _Samochód1_. Chciałbym wiedzieć, czy istnieje jakaś standardowa formuła / algorytm, aby znaleźć zakres między tymi 4 współrzędnymi, czy też muszę pracować samodzielnie. Formuła, która przyszła mi do głowy to: Symbol = (X1+X2+X3+X4)(Y1+Y2+Y3+Y4) = (62)(120) = 182(Reprezentujące _5_ ) Ale jestem sceptyczny, czy to prawda i czy formuła zawsze otrzyma unikalną wartość na symbol/znak na podstawie podanych współrzędnych?


title: Deterministyczne i sterowalne, w pełni zautomatyzowane zarządzanie pamięcią

text: W pełni zautomatyzowane zarządzanie pamięcią znacznie zwiększa wydajność i integralność, ale zwykła implementacja (GC) ma poważny problem. Jest niedeterministyczny i niemożliwy do kontrolowania. Powoduje to wiele problemów, takich jak gwałtowne obciążenie procesora, które jest krytyczne dla aplikacji czasu rzeczywistego. Pewne rodzaje optymalizacji (przyrostowe/współbieżne GC) mogą zredukować te problemy, ale nadal nie są deterministyczne i nie mogą całkowicie wyeliminować problemu. Myślałem, że GC nigdy nie rozwiąże tego problemu, ale ostatnio nauczyłem się i zdałem sobie sprawę, że działanie GC nie musi być całkowicie ukryte. GC może być również deterministyczny i wolny od impulsów procesora, ujawniając niektóre prawidłowo zaprojektowane kontrolki zachowania. Myślę, że (RC + ręcznie wywoływane wykrywanie cyklu) może to zrobić. Ale to nie wygląda na wydajne. Czy istnieje lepsze podejście do deterministycznej i sterowalnej w pełni automatycznej implementacji zarządzania pamięcią? Czy mogę uzyskać link do przykładowych realizacji? **Edytuj** Dodałem te wiersze, aby moje pytanie było bardziej przejrzyste. * _deterministyczny i kontrolowany_ w tym kontekście oznacza, że użytkownik może bezpośrednio śledzić i uruchamiać kod podczas tworzenia i niszczenia obiektów. A także kontroluje ilość i czas obciążenia operacji zarządzania pamięcią. * _w pełni automatyczny_ oznacza, że alokuje i czyści pamięć jak GC bez dodatkowych obaw.


title: Jak mogę być lepszy w wyjaśnianiu kodu innym programistom?

text: Choć samo pytanie może brzmieć głupio, odpowiedź jest dla mnie bardzo ważna, ponieważ czuję, że ta kwestia negatywnie wpływa na moją wydajność w pracy. Trochę tła tutaj: jestem doświadczonym starszym programistą w średniej wielkości dziale oprogramowania firmy nie będącej oprogramowaniem. Będąc powyżej średniej pod względem technicznym, jestem znacznie uboższy w komunikowaniu się i wyjaśnianiu rzeczy. Nawet wyjaśniając coś innym programistom. Najwięcej trudności pojawia się, gdy wyjaśniam, jak działa konkretny _mały fragment kodu_. Zabawne jest to, że wyjaśnianie i dostarczanie przykładów jak coś działa na znacznie wyższym poziomie, np. interakcje pomiędzy oddzielnymi modułami i podsystemami są dla mnie znacznie łatwiejsze. Aby było jaśniej, to, co nazywam "umiejętnością wyjaśniania kodu źródłowego" to a) umiejętność jasnego wyjaśnienia przepływu wykonania kodu - np. „ta rzecz nazywa tę rzecz, która zwraca ten obiekt, co później wywołuje metodę A, przekazując obiekt B do…” a) umiejętność jasnego wyjaśnienia problemów z obecnym projektem lub, co ważniejsze, implikacji zmiana kodu źródłowego jak w „jeśli ze względów wydajnościowych zaczniemy buforować obiekt jako pole klasy, musielibyśmy dokonać modyfikacji w dziesięciu różnych miejscach, aby pamięć podręczna była zawsze w aktualnym stanie” itd. próbowałem przeanalizować, dlaczego jestem kiepski w wyjaśnianiu rzeczy i nie znalazłem żadnych wyjaśnień, może poza tym, że wyjaśniam rzeczy w sposób wypunktowany, który niektórzy mogą uznać za zbyt sztywny. Również, kiedy wyjaśniam rzeczy, być może zbytnio skupiam się na tym, co sam mówię i pomijam pytania, co ludzie zadają, ale znowu wydaje mi się, że te pytania są często nieistotne i po prostu odciągają rozmowę. Co mógłbyś polecić (poza oczywistymi „praktykami, które czynią to idealnym”, których tak naprawdę nie kupuję, ponieważ myślę, że prawdopodobnie ćwiczyłbym więcej tych samych błędów w kółko), abym mógł poprawić źródło kod wyjaśniający umiejętności.


title: Uczenie maszynowe z przykładowym zestawem danych

text: Mam ogólne pytanie dotyczące uczenia maszynowego. Rozważmy następujący scenariusz: Mając fragment tekstu, chcemy, aby program wiedział, czy tekst jest „obraźliwy”, czy nie. W tym celu możemy dać programowi 1000 próbek tekstu i ręcznie zaznaczyć, które z nich są pozytywne, a które negatywne. Program bada je i rejestruje, które słowa/wzory są powszechne w obraźliwych tekstach. Następnie dajemy mu kolejne 1000 nieoznaczonych tekstów i udaje mu się zidentyfikować 95% z nich poprawnie, używając wzorców, których nauczył się z oryginalnego 1000. To wszystko dobrze, ale co po tym, gdy oprogramowanie zostanie „uruchomione”? Oznacza to, że zostawiamy mu ściąganie kolejnych 1000 SMS-ów każdego dnia i pozostajemy do samodzielnego ustalenia, czy są obraźliwe, czy nie. Można by pomyśleć, że dobrym pomysłem byłoby dalsze rozpoznawanie słów/wzorów, aby „uczyć się” coraz więcej każdego dnia? Ale problem polega na tym, że nie wiemy na pewno, czy program poprawnie identyfikuje każdy tekst. Jeśli więc oznaczy czysty tekst jako obraźliwy, fałszywie zarejestruje słowa/wzory jako obraźliwe. To z kolei spowoduje, że inteligencja programu stanie się coraz bardziej niepoprawna i błędna. Jakie jest ogólne podejście do powyższego problemu?


title: Czy nazwy interfejsów powinny zaczynać się od przedrostka „I”?

text: Czytałem "Czysty kod" Roberta Martina, aby miejmy nadzieję, że zostanę lepszym programistą. Chociaż jak dotąd żadna z tych rzeczy nie była naprawdę przełomowa, sprawiła, że zacząłem inaczej myśleć o sposobie projektowania aplikacji i pisania kodu. Jest jedna część książki, z którą nie tylko się nie zgadzam, ale nie ma dla mnie sensu, szczególnie w odniesieniu do konwencji nazewnictwa interfejsów. Oto tekst zaczerpnięty bezpośrednio z książki. Pogrubiłem ten aspekt, który uważam za mylący i chciałbym wyjaśnić. > Wolę pozostawić interfejsy bez ozdób. Poprzednie ja, tak powszechne w dzisiejszych > spuściznach, jest w najlepszym razie odwracaniem uwagi, a w najgorszym zbyt dużą ilością informacji. **Nie chcę, aby moi użytkownicy wiedzieli, że przekazuję im interfejs**. Być może dlatego, że jestem tylko studentem, a może dlatego, że nigdy nie zajmowałem się programowaniem profesjonalnym ani zespołowym, ale _chciałbym, aby użytkownik wiedział, że jest to interfejs._ Jest duża różnica między implementacją interfejsu a rozszerzeniem klasy . Moje pytanie sprowadza się więc do: **"Dlaczego mamy ukrywać fakt, że jakaś część kodu oczekuje interfejsu?"** **Edytuj** W odpowiedzi na odpowiedź: > Jeśli twój typ to interfejs lub klasa to Twoja firma, a nie firma > kogoś, kto używa Twojego kodu. Więc nie powinieneś ujawniać szczegółów swojego kodu > w tym kodzie strony trzeciej. Dlaczego nie powinienem „wyciekać” szczegółów, czy dany typ jest interfejsem czy klasą do kodu firm trzecich? Czy nie jest ważne, aby zewnętrzny programista używający mojego kodu wiedział, czy będzie implementował interfejs, czy rozszerzał klasę? Czy różnice nie są po prostu tak ważne, jak je sobie wyobrażam?


title: Jak nie mieszać HTML z PHP?

text: Zrobiłem aplikację w EXTJS, ale mój architekt techniczny i kierownik projektu twierdzą, że nie chcemy dużego pliku, więc usunąłem EXTJS i stworzyłem obiektowo zorientowany kod PHP i JavaScript, mieszając HTML z PHP. Ale nie chcę mieszać HTML i PHP z powodu złej struktury kodowania i złej praktyki kodowania. Co powinienem zrobić?


Czy modele domen oparte na ActiveRecord powinny mieć widoczne właściwości? Dlaczego lub dlaczego nie? Moje doświadczenie i badania zawsze prowadziły mnie do przekonania, że właściwości obiektów powinny być zawsze chronione, a dane powinny być manipulowane/dostępne tylko za pomocą metod. Gwarantuje to, że jeśli elementy wewnętrzne klasy wymagają refaktoryzacji, inne obiekty, które opierają się na tym obiekcie, również nie muszą być refaktoryzowane. Często jednak widzę modele domeny z publicznie widocznymi właściwościami, a modele można przekazać, aby powiedzieć obiekty widoku, które mają bezpośredni dostęp do tych właściwości podczas budowania widoku. Zawsze myślałem, że jest to być może jedyny wyjątek od powyższej reguły, ponieważ w przeciwnym razie musiałbyś stworzyć gettery i settery dla obiektów takich jak widok lub inne, równie kłopotliwe rozwiązanie. Może się mylę w tej sprawie? Chciałbym uzyskać informację zwrotną na ten temat.


title: Czy istnieje dobry powód, aby unikać node.js w przypadku aplikacji internetowych nie działających w czasie rzeczywistym?

text: Widziałem wiele rozmów o tym, jak niesamowity jest Node.js dla aplikacji internetowych czasu rzeczywistego -- rzeczy, które wymagają gniazd, Comet, komunikacji z dużą ilością AJAX i tak dalej. Wiem, że jego oparty na zdarzeniach, asynchroniczny, oparty na wątkach model jest również dobry dla współbieżności z niskim obciążeniem. Widziałem również samouczki Node.js dla prostszych, „tradycyjnych” aplikacji nie działających w czasie rzeczywistym (np. standardowy przykład bloga, który wydaje się być standardowym „Hello World” dla osób uczących się tworzenia aplikacji). Wiem też, że node-static umożliwia obsługę zasobów statycznych. Moje pytanie brzmi: czy jest jakiś dobry powód, aby _unikać_ Node.js dla tradycyjnych aplikacji internetowych, takich jak ogłoszenia, fora, wspomniany przykład bloga lub rodzaj aplikacji CRUD, które tworzysz dla wewnętrznych aplikacji biznesowych? Tylko dlatego, że wyróżnia się we wszystkich zabawnych rzeczach w czasie rzeczywistym, czy to jest przeciwwskazane do bardziej statecznych zastosowań? Jedyne, co przychodzi mi do głowy, to brak dojrzałych bibliotek (choć to się zmienia). (Powodem, dla którego pytam, jest to, że rozważam porzucenie PHP dla Node.js, głównie po to, aby przezwyciężyć niedopasowanie impedancji przełączania między językami, ale także po to, aby móc ponownie użyć kodu weryfikacyjnego i tak dalej. Moje superego upomina mnie, abym wybrał najlepsze narzędzie do pracy; jednak nie mam dużo czasu, aby nauczyć się piętnastu języków i wszystkich ich bibliotek w przestrzeni użytkownika, tylko po to, aby mieć obszerny arsenał. Pocieszające jest również to, że Node.js może dać mi łatwiejszą ścieżkę optymalizacji niż PHP/ Apache w przyszłości, kiedy będę musiał zacząć myśleć o dużym natężeniu ruchu.) **[EDYTUJ]** Dzięki za dotychczasowe odpowiedzi, ludzie; Chcę tylko zobaczyć, czy ktoś inny będzie brał udział, zanim wybiorę odpowiedź. Odpowiedź od @Raynos w pewnym sensie potwierdza to, co myślę, a linki od komentujących dostarczyły dobrego materiału do przemyśleń, ale chcę sprawdzić, czy ktoś inny ma jakieś odpowiedzi specyficzne dla węzła, takie jak „NIE UŻYWAJ WĘZŁA DO PROBLEMÓW X „. (Oprócz zadań wymagających dużej mocy obliczeniowej; już to wiem :-)


title: Jak radzić sobie z projektantami?

text: > **Możliwe powielenie:** > Jak sobie radzisz z grafikiem, który myśli, że jest projektantem stron internetowych? Jako mobile/web developer w mojej firmie, dużo zajmuję się projektantami (np. projektantami pakietu Adobe). Problem polega na tym, że ci projektanci zawsze chcą rzeczy ze swojego punktu widzenia, przez co rozumiem, że nie rozumieją zasad UX i innych rzeczy, takich jak interakcja użytkowników z oprogramowaniem. I tu zaczynają się problemy... Jakieś sugestie, jak sobie z nimi radzić?


title: Zarządzanie procesem oprogramowania

text: Chcemy sformalizować nasz proces rozwoju. Celem jest zapewnienie przejrzystego obrazu oprogramowania na każdym etapie. Na przykład, aby przetłumaczyć wymagania na zadanie, określić warunki wstępne i końcowe zadania itp. Aby każda rola (analityk, programista, tester) mogła działać lepiej i miała listę kontrolną, aby poprawnie zakończyć swoją pracę Czy Twoja firma stosuje jakiekolwiek oprogramowanie proces m.in. Agile, OpenUP, RUP itp. Jeśli tak, jakich narzędzi używasz, aby to wymusić lub ułatwić?


title: Kiedy „skrypciarz” staje się „programistą”?

text: Czy jest różnica między „skryptami” a „programistami”? Jaka jest linia podziału między skrypterami a programistami? Być może wszyscy skrypciarze są uważani za programistów. Jeśli nie wszyscy skrypterzy mogą należeć do tego samego obozu, co z tymi ludźmi, którzy używają zewnętrznych obiektów, takich jak obiekty COM, Win32 itp. za pośrednictwem biblioteki interop? Jeśli chodzi o języki skryptowe, o których myślę, to (ale nie wyłącznie) perl, bash, javascript, powershell i pliki wsadowe.


title: .Net - kontrolki internetowe i kontrolki formularzy wygranych

text: Następna wersja aplikacji będzie aplikacją opartą na .NET (zarówno desktopową, jak i webową). **Wymaganiem** jest to, że obie aplikacje muszą wyglądać i działać dokładnie tak samo. Myślałem, że może istnieje sposób na stworzenie kontrolki internetowej lub czegoś podobnego i użycie jej w obu aplikacjach. czy to możliwe? Na przykład, czy mogę utworzyć kontrolkę użytkownika dla sieci i używać jej na pulpicie (bez użycia kontrolki przeglądarki internetowej)? Jeśli powyższe nie jest możliwe, jakie mam alternatywy? Proszę daj mi znać.