title: Skąd freelancerzy wiedzą, ile warta jest ich praca?

text: Chcę zacząć trochę freelancingu w tworzeniu stron internetowych przy użyciu ASP.NET MVC3 i PHP i mam już kilka osób, które są zainteresowane zatrudnieniem mnie, ale nadal nie wiem, ile mam pobrać za projekty, ponieważ nigdy tego nie robiłem to. Na przykład ile kosztowałaby ta strona? Czy kosztowałoby więcej, gdyby autor zbudował go od podstaw, zamiast używać WordPressa jako CMS? A co z prostszą witryną, taką jak ta? Ile czasu jest uważane za dobre/normalne na budowach takich jak te? A może niektórzy freelancerzy z doświadczeniem mogą mi powiedzieć, jakie są zwykłe prośby, które otrzymują od klientów. Jakie witryny są najbardziej poszukiwane? Pytam, ponieważ jestem studentem i naprawdę nie mogę pracować na co dzień na pełny etat, ale potrzebuję pieniędzy, więc myślę, że trochę by mi pomogło.


title: return Trywialne wartości logiczne?

text: Piszę prosty kawałek kodu. Jest to funkcja, która pozwalała użytkownikowi wypłacić trochę pieniędzy. Istnieją jednak pewne ograniczenia. 1. Użytkownik nie może wypłacić więcej niż wyznaczony limit wypłat. 2. Użytkownik nie może wypłacić więcej pieniędzy, które posiada. Skrypt zakończy się, jeśli tak się stanie, i poinformuje o tym użytkowników. W przeciwnym razie użytkownik może wypłacić pieniądze i zaktualizować saldo, otrzyma również wiadomość z potwierdzeniem. Teraz moje pytanie brzmi, czy powinienem zwrócić „Fałsz”, jeśli trafią w przypadek 1 lub 2? I czy powinienem zwrócić wartość „True”, jeśli transakcja zakończy się pomyślnie? Nie mam aktualnych planów, w których będę potrzebował wartości logicznych z wywołania funkcji. Ale zastanawiam się, czy dobrą praktyką kodowania jest zwracanie czegoś w przypadku, gdy funkcja może obrać różne ścieżki. Przykładowy kod (Python): limit = 500 balance = 5000 def throw_money(amount): if kwota > limit: # powyżej limitu print('Nie możesz wypłacić więcej niż ${}'.format(balance)) return False elif amount > saldo: # za mało pieniędzy print('Niewystarczające środki') return False else: # faktycznie przepracowane saldo -= kwota print('Twoje nowe saldo to ${}'.format(balance)) return True


title: Wywiad: Firma zajmuje się ogromnymi ilościami danych?

text: Firma, z którą zamierzam przeprowadzić wywiad, mówi, że ma do czynienia z ogromnymi ilościami danych. Jak przygotować się do wywiadu, w którym fakt ten jest wcześniej telegrafowany jako coś, nad czym naprawdę należy się zastanowić? Czy powinienem zapamiętać maksymalne rozmiary plików dla systemów plików Ext4 czy coś takiego? Lub po prostu bądź świadomy potrzeby najlepszych możliwych algorytmów... Dzięki.


title: Czy powinienem uczyć się Linq, poleceń Direct SQL (w .net), EF lub innych?

text: Zasadniczo mam bardzo dobrą znajomość zwykłego starego SQL pochodzącego z programowania klasycznego ASP. W ciągu ostatnich kilku miesięcy uczyłem się C#, a dziś był mój pierwszy pełny dzień w MVC 3 (Razor), który uwielbiam! Muszę wrócić do Baz danych i wiem, że pisanie wszędzie SqlCommand jest oczywiście przestarzałe (chociaż to miłe, nadal mogę to zrobić!). Kiedyś chodziłem do świetnej grupy użytkowników jako informatyk i sprawy programistyczne przeszły mi całkowicie przez głowę, jednak pamiętam kilka rzeczy, które ciągle się pojawiały, takie jak LINQ ... Jednak to było jakiś czas temu, a teraz tak samo ludzie na Twitterze mówią, jak bardzo jest przestarzały. Próbowałem przeprowadzić badania nad obydwoma i nie mam pojęcia, w jakim kierunku powinienem iść, ani kiedy użyć jednego z drugim (jeśli uczenie się obu jest dobrą rzeczą). Jestem bardziej zdezorientowany, ponieważ myślałem, że EF jest częścią .Net Framework, jednak czytając przewodnik szybkiego startu, musiałem pobrać komponent za pomocą Nuget. ... Zasadniczo jestem tutaj bez głębi i potrzebuję tylko szczerej porady, gdzie się udać!


title: Dyskretny kurs matematyki i informatyki

text: Niedawno zostałem przyjęty do programu Computing and Software Systems (zasadniczo inżynieria oprogramowania), a jeden z pierwszych kursów, w których będę uczestniczył, nazywa się _Mathematical Principles of Computing_. Opis kursu: _"Integracja zasad matematycznych ze szczegółowymi instrukcjami w programowaniu komputerowym. Bada rozumowanie matematyczne i struktury dyskretne poprzez programowanie obiektowe. Obejmuje analizę algorytmów, podstawowe abstrakcyjne typy danych i struktury danych."_ Nie jestem fanem matematyka, ale odkąd zacząłem dwa lata temu szło mi dobrze na wszystkich zajęciach z matematyki, głównie na piątki i piątki, i robię matematykę co kwartał – nigdy nie brałem ani jednej czwartej bez matematyki – więc robię to wszystko po kolei bez przerw. Martwię się jednak o tę klasę. Przeczytałem krótko, czym jest matematyka dyskretna iz tego, co powiedział mi mój doradca, jej związek z informatyką polega na tym, że ma wiele wspólnego z dowodzeniem algorytmów. Jedną rzeczą, którą moi instruktorzy poruszyli krótko i nigdy nie zagłębiali się w szczegóły, było udowodnienie algorytmów, a kiedy próbowałem, po prostu nie byłem zbyt dobry w indukcji matematycznej. To jedna z rzeczy, które ignorowałem za każdym razem, gdy pojawiało się w zadaniu domowym (zwykle w rachunku różniczkowym III, który właśnie kończę). Pytania: 1\. Czego mogę się spodziewać po tej klasie? 2\. Jak mogę się przygotować do tych zajęć? 3\. Inne wskazówki? Dziękuję Ci.


title: błędnie wpisujesz dane wzoru?

text: Czy ktoś może wskazać mi dane lub badania na temat wzorców błędnego pisania na klawiaturze? Na przykład zauważyłem, że Google czasami automatycznie poprawia słowo, które błędnie wpisałem, ponieważ moja ręka była niewłaściwa, a każdy klawisz został przesunięty o jeden w prawo. Interesują mnie również słowa, w których występuje błędna koordynacja obu rąk, takie jak „teh” i wszelkie inne błędy ortograficzne, które są artefaktami związanymi z klawiaturą i manualną zręcznością. Patrzymy na kilka przyjaznych dla użytkownika funkcji autokorekty i chcę, aby niektóre dane pomogły naszemu zespołowi uzyskać ogólny przegląd krajobrazu i zdecydować, co będziemy, a czego nie będziemy obsługiwać.


title: Czy powinienem wybrać funkcjonalny język programowania?

text: Ostatnio bardziej martwi mnie sposób, w jaki piszę swój kod. Po przeczytaniu kilku książek o wzorcach projektowych (i nadgorliwym ich wdrażaniu, jestem pewien) zmieniłem znacznie swoje myślenie w kierunku ujęcia tego, co się zmienia. Zwykle zauważam, że piszę mniej interfejsów, a bardziej kod zorientowany na metody, w którym uwielbiam tchnąć życie w stare klasy za pomocą predykatów, akcji i innych zadań delegowanych. Wydaje mi się, że często to działania się zmieniają, więc je przedstawiam. Często, choć nie zawsze, rozbijam interfejsy na jedną metodę, a potem wolę używać delegata do zadania, zamiast wymuszać na kodzie klienta tworzenie nowej klasy. Więc myślę, że wtedy mnie uderzyło. Czy powinienem zamiast tego robić programowanie funkcjonalne? **Edycja:** _Mogę mieć błędne wyobrażenie na temat programowania funkcjonalnego._ Obecnie moim ulubionym językiem jest C# i wywodzę się ze środowiska C++. Pracuję jako programista gier, ale obecnie jestem bezrobotny. Mam wielką pasję do architektury. Moje zalety to czysty, elastyczny, wielokrotnego użytku i konserwowalny kod. Nie wiem, czy zostałem otruty tymi sposobami, czy to na lepsze. Czy mam gorączkę refaktoryzacyjną, czy powinienem przejść dalej? Rozumiem, że może to być pytanie o _„użyj odpowiedniego narzędzia do pracy”_ , ale chciałbym poznać Twoją opinię. Czy powinienem wybrać język funkcjonalny? Jednym z moich czynników strachu jest opuszczenie komfortu Visual Studio.


title: Dlaczego Chrome i Adobe używają „kreatorów pobierania” do instalowania oprogramowania?

text: Dlaczego producenci oprogramowania korzystają z kreatorów pobierania dużych plików, zamiast pozwalać użytkownikom na bezpośrednie pobieranie pliku? Czy jest tak, że użytkownik nie zraża się czasem oczekiwania, czy jest to coś innego?


title: Gdy klient prosi o Proof Of Concept i oczekuje gotowego produktu

text: Mamy klienta, z którym łączy nas relacja polegająca na dostarczaniu _tylko_ weryfikacji koncepcji. Ale kiedy przychodzi czas na demo, oczekują wczesnej wersji rozwiązania. Chcą baz danych wypełnionych prawdziwymi danymi, wyglądem i działaniem gotowego produktu i innymi rzeczami (w tym cechami), które są trywialne i nie mają żadnego wkładu w _udowodnienie_ koncepcji. Co z tym zrobisz? Jak radzisz sobie w takiej sytuacji? (Jestem deweloperem, a także osobą, która będzie rozmawiać z klientem wraz z innymi nie-deweloperami.)


title: Potrzebujesz krytyki planu architektury .NET/WCF SOA

text: Pracuję nad refaktoryzacją niektórych usług i byłbym wdzięczny za krytykę mojego ogólnego podejścia. Pracuję z trzema systemami danych zaplecza i muszę ujawnić uwierzytelniony interfejs API frontonu przez powiązanie http, JSON i REST dla aplikacji wewnętrznych, a także integrację stron trzecich. Poniżej mam przybliżony pomysł, który jest hybrydą tego, co mam i gdzie zamierzam skończyć. Zamierzam zbudować rozszerzenia wskazówek, aby wspierać tę architekturę, aby deweloperzy mogli szybko ją zbudować. Oto aktualny pomysł na naszą strukturę: 1. Front-endowa usługa routingu WCF (rozłożona na wiele serwerów IIS za pośrednictwem sprzętowego równoważenia obciążenia) * Równoważenie obciążenia usług stojących za routingiem jest obsługiwane w ramach usługi routingu, prawdopodobnie w trybie okrężnym * Jedna z usług będzie być tokenem * Wiele powiązań na usługę wystawionych na adres JSON, REST i cokolwiek innego pojawi się później * Wszystkie wejścia / wyjścia są obsługiwane za pośrednictwem POCO DTO * Użyj jedności, aby skanować, jakie usługi są dostępne i ujawniać je usługi końcowe za usługą routingu nie robią nic więcej niż ujawniają API i przeprowadzają konwersję DTO<->Entity * Implementacja usługi wstrzykiwania Unity, aby umożliwić mockowanie * automapper dla konwersji DTO/Entity * Wywoływanie usług WF, w których odpowiedź jest wymagana natychmiast * Kolejka do ESB dla async WF -- ESB wywoła WF później 3. Warstwa WF logiki biznesowej * Ujawnia to samo API co usługi front-end * Implementuj logikę biznesową * Zawijaj kontekst transakcji tam, gdzie jest to potrzebne * Wywołanie usług złożonych/atomowych 4. Usługi złożone/atomowe * Ujawnione jako WCF * Jedna usługa na system zaplecza * Standardowe operacje atomowe CRUD plus operacje złożone * Obsługa kontekstu transakcji Mam następujące pytania: * Czy rozdzielenie obaw opisane powyżej korzystne? Obecna myśl jest taka, że każda warstwa poniżej to własny projekt, z wyjątkiem rzeczy zaplecza, gdzie każdy system otrzymuje jeden projekt. Projekt ma hosta usług, a wszystkie usługi znajdują się w folderze usług. Interfejsy żyją w osobnym projekcie na każdej warstwie. DTO i Entities znajdują się w dwóch oddzielnych projektach we wspólnym folderze. * Obecnie planuję zbudować dedykowane usługi dla wspólnych funkcji, takich jak rejestrowanie i przeciążanie rzeczy, takich jak tracelistener, aby wywoływać te usługi. Czy to słuszne podejście? * Jakieś inne sugestie/komentarze?


title: Czy lepiej najpierw nauczyć się DOM lub jQuery?

text: Bardzo dobrze zapoznałem się z podstawową funkcjonalnością Javascript, a teraz zamierzam nauczyć się manipulacji DOM. Myślałem już o nauce jQeury w tym celu, ale nie wiem, czy dobrze jest uczyć się go przed pierwszym zapoznaniem się z podstawową funkcjonalnością DOM. Czy powinienem najpierw nauczyć się podstawowej funkcjonalności DOM, a następnie nauczyć się jQuery? Jeśli tak, dlaczego? A może powinienem po prostu iść dalej i uczyć się jQuery?


title: Jak zarządzać czasem nauki podczas pracy?

text: Od 8 lat programuję dla firmy. Budujemy systemy oprogramowania Business Intelligence. Ponieważ myślałem, że praca to nauka, zawsze studiowałem pod kątem tego, co robię w firmie, pracując po 60 godzin tygodniowo. W dzisiejszych czasach jednak szukam nowej firmy do pracy, widzę, że myśl była głupim pomysłem, ponieważ często mi się nie udaje na rozmowach kwalifikacyjnych głównie z powodu braku wiedzy z innych dziedzin. Oczywiście nadal chcę się doskonalić i naprawdę się staram. Ale pracując tyle czasu w tygodniu, nie mogę znaleźć odpowiedniej ilości czasu na naukę, aby nadrobić zaległości. Nie sądzę, że jestem jedyną osobą, która się tym przejmuje, więc chciałbym zapytać, jak znajdujecie czas na naukę w swojej karierze? Ile godzin przeznaczasz na studiowanie innych dziedzin? Czy brakuje mi umiejętności zarządzania czasem?


title: Jakie produkty można przekazać klientowi za aplikację internetową?

text: Ukończyłem aplikację internetową, która jest zasadniczo napisana w PHP i jest po prostu kolejną zwykłą aplikacją internetową. Zwykle, gdy dostarczam ostateczną wersję produkcyjną, po prostu przekazuję klientowi dokumentację kodu i informacje o architekturze. Jednak w przypadku tego konkretnego projektu klient nalega na posiadanie pełnych danych wejściowych i wyjściowych o projekcie. Zastanawiam się więc tylko... Jakie są obowiązkowe dokumenty techniczne i nietechniczne, które mogę przekazać klientowi poza dokumentacją kodu i architektury? (Także fajnie byłoby zapytać klienta o różne statystyki i dane dotyczące projektu, aby rzeczywiście wiedział, ile pracy jest w to włożone i jak fajny jest produkt.)


title: Jak mogę poprawić swoje umiejętności gracza zespołowego?

text: Obecnie pracuję w wymarzonej pracy w laboratorium badawczym jako jedyny programista w multidyscyplinarnym zespole. Trochę się martwię, bo zapominam o kodowaniu w zespole (nie mam starszego kodu, sam go opiekuję, zajmuję się własnym programem itp.). Chociaż staram się przestrzegać niektórych najlepszych praktyk, takich jak ciągłe dostarczanie, TDD i SCRUM tylko dla mnie, myślę, że tracę zdolność do pracy w zespole programistów. Dołączyłem do projektu open source i zacząłem zajmować się kodem katas i kodem golfem. Ale to nie wypoleruje mojego profilu gracza zespołowego. Jakie byłyby twoje sugestie, jak poprawić moje umiejętności gracza zespołowego? _Aktualizacja:_ Tak, moje umiejętności komunikacyjne są teraz lepsze i mogę rozmawiać z doktorantami jak nigdy dotąd. Jak powiedzieli @Nicholas i @Erick, pewnego dnia zmierzę się z zespołem deweloperskim (może w mojej obecnej pracy, a może nie) i chcę być na bieżąco z praktykami, które czynią dobrego programistę lepszym członkiem zespołu, takimi jak programowanie w parach lub kod recenzja.


title: Jakie są dobre ściągi do programowania?

text: Jakie są dobre do pobrania ściągawki do nauki określonego języka lub narzędzia?


title: Podejścia do uczenia się lub nauczania środowisk programistycznych linux i systemów budowania

text: Widziałem kilka przypadków, w których programiści byli utrudnieni podczas instalowania nowego oprogramowania lub tworzenia nietrywialnego projektu oprogramowania, z powodu braku wiedzy na temat korzystania z kompilatorów, systemów budowania i binutils. Przykłady błędów, w których ktoś utknął to * 'make' nie wie, jak zbudować konkretną nazwę pliku * System budowania wywołuje program z argumentami, których nie rozumie * Nie znaleziono pliku nagłówkowego poza projektem * Symbol nazwa nie jest znaleziona w czasie linkowania Jak nauczyć programistów tego, co muszą wiedzieć, aby zrozumieć, co oznacza błąd systemu kompilacji, zawęzić jego przyczynę i go naprawić? Czy jest dobre odniesienie do tego, jak działają środowiska programistyczne linux?


title: Propozycja nazwy komponentu huśtawki dla określonego interfejsu

text: Jako projekt uniwersytecki muszę odtworzyć Raptora. Interpreter schematów blokowych. Interfejs wygląda tak ![tutaj wstaw opis obrazu](http://i.stack.imgur.com/GTFmw.gif) Ale ponieważ nie jestem doświadczonym programistą swingów, nie mam pojęcia, które elementy huśtawki użyć dla której części. Wiem: 1. Całość to JFrame. 2. Na górze znajduje się MenuBar. 3. Pasek narzędzi dokładnie pod nim. Pytanie 1: Czy mam rację? Pytanie 2: Jakiego komponentu powinienem użyć dla _symboli_ po lewej stronie i reszty części o nazwie _main_ na zdjęciu? Czego byś użył? Uwaga 1: Możemy przeciągać i upuszczać symbole z symboli do głównego. Uwaga 2: Nie szukam żadnego kodu. Chcę tylko kierunku. Ponieważ w Javie zawsze jest tak wiele opcji. Łatwo się pomylić. Dużo szukałem, ale nie znalazłem nic konkretnego, ponieważ jest to głównie problem projektowy.


title: Problem z sortowaniem pojemników — pomóż w kategoryzacji

text: Mam problem, dla którego opracowuję rozwiązanie i obecnie rozwiązuję go metodą brute force, która sprawdza wszystkie możliwości. Działa to dla małej liczby pojemników, ale chciałbym pracować z rozsądną szybkością dla rosnących liczb, jednak algorytm, którego używam (brute force) zwiększa czas obliczeń w sposób czynnikowy związany z liczbą pojemników. Innymi słowy, po około 6 lub 7 pojemnikach robi się zbyt wolno. Chciałbym sklasyfikować problem, aby sprawdzić, czy jest to NP-Complete, NP-Hard lub inny, więc wiem, gdzie szukać przy próbie optymalizacji. Podstawowym problemem jest to. Masz liczbę punktów n i masz wagi dla tych punktów. Punkty mają również taką kolejność, że punkty w koszu muszą następować po sobie. Musisz umieścić je w maksymalnie k pojemnikach. Kosze zawierają oszacowanie dla umieszczonego w nim zbioru punktów, a całkowity błąd wartości bezwzględnej różnicy punktów i oszacowania musi być zminimalizowany. Celem jest znalezienie sposobu umieszczenia tych punktów w koszach, aby uzyskać minimalny błąd całkowity. Dziękuję!


title: Powód, dla którego jakiś kod jest open source

text: Mam bibliotekę, która sprawia, że architektura ładuje dane z serwera i wyświetla wszystkie kontrolki w układzie tabeli. Działa świetnie, ale zawiera wiele TODO. Również ta biblioteka w 99% stworzona przeze mnie. Zaczynam go rozwijać, gdy pracuję w jednej firmie, kontynuuję rozwój w innej firmie - po prostu przenoszę prototyp kodu do nowego miejsca pracy. Biblioteka zawiera dużą ilość funkcji/hacków/poprawek iPhone'a, których ponowne pisanie nie ma sensu. Wszystkie stworzone przeze mnie aplikacje biznesowe na iOS, oparte na tej bibliotece. Gdy biblioteka stała się potrzebna w kilku projektach jednocześnie, chciałem, aby biblioteka była otwarta na GitHub, ale mój Team Lead poprosił o utworzenie dla niej prywatnego repozytorium. Biblioteka zawiera i wykorzystuje 12 bibliotek open source. * A więc: 1. Czy to dobry pomysł, aby taka biblioteka była open source? Zawiera całe moje doświadczenie w programowaniu iOS. 2. Jak uzasadnić moje życzenie, aby biblioteka była open source dla kierownika zespołu? 3. Jeśli nie mogę uczynić tej biblioteki open source - czy mogę jej użyć w innej firmie? W umowie, z którą współpracuję, powiedziałem, że przekazuję wszystkie prawa autorskie na pracodawcę.


title: Czy operatory są bardziej zrozumiałe niż słowa kluczowe lub funkcje?

text: Jest to nieco subiektywne, ale mam nadzieję, że lepiej zrozumiem, jakie czynniki sprawiają, że operator jest jasny w użyciu, a nie tępy i trudny. Zastanawiałem się ostatnio nad projektami językowymi i jedną kwestią, do której zawsze wracam, jest to, kiedy wykonać jakąś kluczową operację w języku jako operator, a kiedy użyć słowa kluczowego lub funkcji. Haskell jest z tego powodu dość znany, ponieważ operatory niestandardowe są łatwe do utworzenia i często nowy typ danych jest dostarczany z kilkoma operatorami do użycia. Na przykład biblioteka Parsec zawiera mnóstwo operatorów do łączenia parserów, z klejnotami takimi jak `>.` i `.>` Nie pamiętam nawet, co one oznaczają w tej chwili, ale pamiętam, że są bardzo łatwe do pracy, gdy nauczyłem się na pamięć, co one właściwie oznaczają. Czy wywołanie funkcji, takie jak `leftCompose(parser1, parser2)` byłoby lepsze? Z pewnością bardziej gadatliwy, ale pod pewnymi względami jaśniejszy. Przeciążenia operatorów w językach podobnych do C to podobny problem, ale połączony przez dodatkowy problem przeciążania znaczenia znanych operatorów, takich jak `+`, nietypowymi nowymi znaczeniami. W każdym nowym języku wydaje się to dość trudną kwestią. Na przykład w języku F# rzutowanie używa matematycznie pochodnego operatora rzutowania typu zamiast składni rzutowania stylu C# lub pełnego stylu VB. C#: `(int32) x` VB: `CType(x, int32)` F#: `x :> int32` Teoretycznie nowy język może mieć operatory dla większości wbudowanych funkcji. Zamiast `def`, `dec` lub `var` dla deklaracji zmiennej, dlaczego nie `! imię` lub `@ nazwa` lub coś podobnego. Z pewnością skraca deklarację, po której następuje wiązanie: `@x := 5` zamiast `declare x = 5` lub `let x = 5` Większość kodu będzie wymagała wielu definicji zmiennych, więc dlaczego nie? Kiedy operator jest jasny i użyteczny, a kiedy zaciemnia?


title: „Paradoks bluba” i c++

text: Czytałem artykuł tutaj: http://www.paulgraham.com/avg.html i część o „paradoksie klubowym” była szczególnie interesująca. Jako ktoś, kto koduje głównie w c++, ale ma kontakt z innymi językami (głównie Haskell) znam kilka przydatnych rzeczy w tych językach, które są trudne do odtworzenia w c++. Pytanie dotyczy głównie osób biegle posługujących się zarówno c++, jak i innym językiem, czy istnieje jakaś potężna funkcja języka lub idiom, którego używasz w języku, który byłby trudny do konceptualizacji lub zaimplementowania, gdybyś pisał tylko w c++? W szczególności ten cytat przykuł moją uwagę: > Dzięki indukcji, jedynymi programistami, którzy są w stanie dostrzec wszystkie różnice > w mocy między różnymi językami, są ci, którzy rozumieją > najpotężniejszy. (Prawdopodobnie to miał na myśli Eric Raymond mówiąc o tym, że Lisp > uczyni cię lepszym programistą.) Nie możesz ufać opiniom innych, > z powodu paradoksu Bluba: są zadowoleni z dowolnego języka, którego > używają, ponieważ dyktuje sposób, w jaki myślą o programach. Jeśli okaże się, że jestem odpowiednikiem programisty „Blub” z racji używania c++, rodzi się następujące pytanie: Czy istnieją jakieś przydatne koncepcje lub techniki, które napotkałeś w innych językach, a które trudno byłoby Ci zrozumieć, gdybyś pisał lub "myślał" w c++? Na przykład paradygmat programowania logicznego widziany w językach takich jak Prolog i Mercury można zaimplementować w c++ przy użyciu biblioteki castor, ale ostatecznie uważam, że koncepcyjnie myślę w kategoriach kodu Prologa i tłumacząc go na odpowiednik c++, używając tego. Jako sposób na poszerzenie mojej wiedzy programistycznej, staram się dowiedzieć, czy istnieją inne podobne przykłady użytecznych/potężnych idiomów, które są wydajniej wyrażane w innych językach, o których mógłbym nie wiedzieć jako programista c++. Innym przykładem, który przychodzi mi do głowy, jest system makr w lisp, generowanie kodu programu z poziomu programu wydaje się mieć wiele korzyści w przypadku niektórych problemów. Wydaje się, że jest to trudne do zaimplementowania i przemyślenia z poziomu c++. EDYCJA: To pytanie nie ma być debatą „c ++ vs lisp” ani debatą typu wojny językowe. Zadawanie takiego pytania to jedyny sposób, w jaki widzę, że mogę dowiedzieć się o rzeczach, o których nie wiem, o których nie wiem.


title: Czy udoskonalasz swój kod na bieżąco, czy najpierw KOŃCZYSZ produkt, a później poprawiasz strukturę?

text: Niedawno przeczytałem post na blogu (do którego zgubiłem link), który naprawdę skłania mnie do myślenia. Pisarz powiedział, że jednym z największych problemów w projektach oprogramowania jest jego ukończenie, a większość ludzi porzuci pracę. Programowania uczę się samodzielnie od ponad 15 lat, na tym etapie właściwie czuję się całkiem kompetentny. Jednak nigdy nie ukończyłem żadnego dużego projektu, który zamierzałem zrobić. To, co zwykle robię, to: 1. Szkicuję swój pomysł w kodzie, kompiluję i uruchamiam, aby sprawdzić, czy działa, i wyobrażam sobie, jak inne rzeczy mogą się ze sobą połączyć. 2. Gdy "szkic" staje się bałaganiarski, zaczynam go refaktoryzować, konsolidować funkcje, tworzyć klasy, reorganizować struktury danych itp. 3. Powtarzam 1 i 2... na zawsze! Próbowałem pisać na papierowych diagramach UML itp., ale zawsze kończy się to rzeczami, które przeoczam, a następnie wymaga drastycznych zmian, a potem znów staje się 1, 2, 1, 2, 1, 2. Jak projekty komercyjne radzą sobie z terminami? Czy powinienem po prostu szkicować, aż produkt końcowy zostanie ukończony, zanim pomyślę o zwiększeniu czytelności/ponownego użycia/architektury/silnika?


title: Budowanie dedykowanego codepada w PHP

text: Jestem autorem rozwijającego się frameworka, który skupia się wokół budowania interfejsu użytkownika w PHP. Niezbędne wymagania dla nadchodzącego przeprojektowania strony internetowej to możliwość **uruchamiania przykładów kodu**. Jestem skłonny rozszerzyć tę opcję na autorów dodatków, co oznaczałoby, że **inne osoby** będą mogły wykonywać kod na moim serwerze. Proszę zasugerować, jak bezpiecznie skonfigurować środowisko, które pozwoli mi na wykonanie kodu PHP 3rd party zbudowanego na moim frameworku. Chciałbym usłyszeć pomysły od kogoś, kto miał doświadczenie w budowaniu rozwiązań piaskownicy.


title: Które k-najlepsze algorytmy o najkrótszej ścieżce należy wziąć pod uwagę?

text: Rozwiązuję problem optymalizacji wyszukiwania wykresów. Muszę znaleźć k najlepszych acyklicznych najkrótszych ścieżek poprzez skierowany wykres ważony. Wiem, że istnieje wiele dokładnych i przybliżonych k-najlepszych algorytmów, ale większość ostatnich badań wydaje się być zorientowana na bardzo duże, bardzo słabo powiązane grafy (np. wyznaczanie tras i kierunków), a mój wykres nie jest żadnym z nich. Wyróżniające aspekty mojego problemu: * Wykres składa się z około 160 wierzchołków. * Wykres jest prawie całkowicie połączony (dwukierunkowo, więc ~160^2 ~= 25k krawędzi) * k będzie dość małe (prawdopodobnie mniej niż 10) * Maksymalna długość ścieżki będzie prawdopodobnie ograniczona i również bardzo mała (np. 3- 5 krawędzi) * Wyżej powiedziałem 'acykliczny', ale powtórzę - rozwiązania nie mogą zawierać cykli. Nie jest to problem dla 1-najlepszej najkrótszej ścieżki, ale staje się problemem dla k-najlepszych – na przykład rozważ trasę drogową – druga najkrótsza ścieżka z A do B może być taka sama jak 1-najlepsza, z szybka wycieczka gdzieś po okolicy. To może być matematycznie optymalne, ale niezbyt przydatne rozwiązanie. ;-) * Może zajść potrzeba ponownego ważenia krawędzi w locie dla każdego obliczenia. Koszt krawędzi składa się z ważonej sumy kilku czynników, a ostateczne wymagania (kiedy je otrzymamy) mogą pozwolić użytkownikowi określić własną priorytetyzację tych czynników ważenia, zmieniając wagi krawędzi. Jest to stosunkowo mały wykres (powinniśmy być w stanie przedstawić go w kilkuset KB), więc prawdopodobnie rozsądne jest sklonowanie wykresu w pamięci, zastosowanie ponownego ważenia, a następnie wykonanie wyszukiwania na sklonowanym wykresie. Ale jeśli istnieje bardziej efektywna metoda wyszukiwania podczas obliczania wag w locie, jestem zainteresowany. Patrzę na algorytmy opisane w Santos (algorytmy K shortest path), Eppstein 1997 (Finding the k Shortest Paths) i innych. Interesujący jest algorytm Yena, przede wszystkim ze względu na istniejącą implementację Javy. Nie boję się czytać prac naukowych, ale pomyślałem, że warto wyrzucić szczegóły mojego problemu i poprosić o wskazówki, aby zaoszczędzić trochę czasu na czytanie. A jeśli masz wskazówki do implementacji Java, jeszcze lepiej.


title: Czy można uruchomić metody konfiguracji i rozkładania tylko dla określonych testów jednostkowych?

text: Obecnie mam klasę testową z metodą `setUp` do tworzenia pliku tymczasowego i metodą `tearDown` do usuwania pliku tymczasowego. Jednak tylko niektóre metody `test_` w tej klasie wymagają tej funkcjonalności. Czy można albo zignorować te 2 metody dla przypadków testowych, które tego nie wymagają, albo wywołać tylko te 2 metody dla przypadków testowych, które tego wymagają? Wywołanie tych 2 metod dla każdego testu wydaje się nieco „niewłaściwe”, nawet jeśli plik tymczasowy nie jest używany w każdym z nich.


title: Zamawianie pozycji menu podawanych z wielu modułów.

text: Mam główną aplikację, która może ładować moduły (lub wtyczki). Każdy moduł może zdefiniować jeden lub więcej linków (lub elementów), które będą wyświetlane w menu bocznym zdefiniowanym w głównej aplikacji. W tej chwili moja główna aplikacja wykonuje listę ItemProviders, które są ładowane z modułów. Te ItemProviders zwracają listę elementów do wyświetlenia w menu bocznym. Moje pytanie brzmi teraz, jak mam zamówić te pozycje, skoro nie znają swojego rodzeństwa w menu? Pamiętaj, że w zamówieniu nie ma określonej logiki, zależy to od tego, czego chce klient. Moim głównym rozwiązaniem było nadanie im numeru zamówienia (indeks). Problem z tym podejściem polega na tym, że moje moduły nie będą już całkowicie niezależne, a „numer zamówienia” będzie zależał od liczby innych modułów. Jaki byłby właściwy sposób postępowania w tym konkretnym przypadku?


title: O udostępnionych (statycznych) członkach i ich zachowaniu

text: Właśnie zdałem sobie sprawę, że mogę uzyskać dostęp do współdzielonych członków z instancji klas (prawdopodobnie nie jest to poprawne, ale skompilować i uruchomić), a także nauczyć się/odkryć, że mogę modyfikować współdzielone elementy, a następnie utworzyć nową instancję i uzyskać dostęp do nowej wartości współdzielony członek. Moje pytanie brzmi, co dzieje się ze współdzielonymi członkami, gdy wraca do wartości "domyślnej" (deklaracja klasy), jak niebezpieczne jest to robienie? czy to jest całkowicie złe? czy jest to ważne w niektórych przypadkach?. Jeśli chcesz przetestować mój punkt, tutaj jest kod (projekt konsoli vb.net), którego użyłem do testowania współdzielonych członków, jak widać/kompiluje/uruchamia, współdzielony element "x" klasy "Hello" ma wartość domyślną ciąg "Default", ale w czasie wykonywania zmienia go i po utworzeniu nowego obiektu tej klasy, ten obiekt ma nową wartość współużytkowanego elementu członkowskiego. Moduł Module1 Public Class hello Public Shared x As String = "Default" Public Sub New() End Sub End Class Sub Main() Console.WriteLine("hello.x=" & hello.x) Dim obj As New hello() Console .WriteLine("obj.x=" & obj.x) obj.x = "Domyślny element współdzielony, zmodyfikowany w obiekcie" Console.WriteLine("obj.x=" & obj.x) hello.x = "Domyślny element współdzielony , zmodyfikowany w klasie" Console.WriteLine("hello.x=" & hello.x) Dim obj2 As New hello() Console.WriteLine("obj2.x=" & obj2.x) Console.ReadLine() End Sub End Moduł **AKTUALIZACJA:** Po pierwsze, dziękuję wszystkim, każda odpowiedź daje informację zwrotną, przypuszczam, że z całym szacunkiem powinnam wybrać jedną jako „odpowiedź”, nie chcę nikogo obrażać, więc proszę nie Źle to zniosę, jeśli nie wybrałem twojej odpowiedzi.


title: Luźne zależności sprzęgania i tasowania

text: Mam kilka klas, które wyglądają mniej więcej tak: public class MyGame() { private Graphics graphics; prywatny gracz gracza; public MojaGra() { grafika = nowa grafika(); //... } protected void Initialize() { player = new Player(); //... } protected void Update() { player.DoStuff(); //... } Czytałem o wzorcach projektowych i zrozumiałem, że nie jest to zbyt dobry projekt, ponieważ nie jest luźno powiązany. Zamiast kodować do interfejsów, koduję do implementacji (Graphics, Player itp.). Aby rozwiązać ten problem, zaczynam od zmiany tych zależności na interfejsy: public class MyGame() { private IGraphics graphics; prywatny odtwarzacz IPlayer; public MojaGra() { grafika = nowa grafika(); //... } protected void Initialize() { player = new Player(); //... } Nie jestem pewien, na ile to naprawdę jest pomocne, ale fajnie, że pole grafiki (na przykład) nie jest powiązane z klasą Graphics — mogę zamiast tego użyć klasy AwesomeGraphics lub SparklyGraphics, o ile te klasy implementują IGraphics. Ale nadal jestem mocno uzależniony od grafiki i odtwarzacza, więc jaki był sens całej tej refaktoryzacji? (Mój rzeczywisty kod jest znacznie bardziej skomplikowany.) Zrozumiałem również, że wstrzykiwanie zależności jest dobrym pomysłem, więc staram się to zrobić dalej: public class MyGame() { private IGraphics grafika; prywatny odtwarzacz IPlayer; public MyGame( grafika IGraphics, odtwarzacz IPlayer ) { this.graphics = grafika; this.player = gracz; //... } Wygląda to naprawdę ładnie, ponieważ nie mam już żadnych twardych zależności w MyGame. Jednak zależności nadal są w moim kodzie - właśnie zostały przeniesione do klasy, która tworzy instancję MyGame: static class Program { static void Main( string[] args ) { using ( var game = new Game( new Graphics(), new Player() ) { game.Run(); } } } Teraz jestem z powrotem, gdzie zacząłem! Ta klasa nie jest w ogóle luźno powiązana! Więc znowu, jaki był sens całej tej refaktoryzacji? na pewno mógłbym użyć kontenera IoC, aby jakoś zająć się tymi zależnościami, ale prawdopodobnie spowodowałoby to po prostu mnóstwo komplikacji do już skomplikowanego projektu.Ponadto, czy nie byłoby to po prostu przeniesieniem tych zależności ponownie do innej klasy? trzymać się tego, co miałem w pierwszej kolejności, czy jest jakaś wymierna korzyść, której jeszcze nie widzę?


title: Czy opłata z Google Apps Marketplace w wysokości 100 USD dotyczy wszystkich moich programistów, czy tylko mnie?

text: Na stronie z wykazem dostawców w Google Apps Marketplace Google podaje następujące informacje: > Google pobiera jednorazową opłatę w wysokości 100 USD za przesłanie pierwszego wpisu. Przeszukałem Grupy dyskusyjne Google i inne fora i nie mogę znaleźć odpowiedzi na pytanie, czy jednorazowa opłata w wysokości 100 USD dotyczy _tylko mojego indywidualnego loginu do Aplikacji Google_, czy też dotyczy innych loginów do Aplikacji Google w mojej domenie również. Na przykład, jeśli ja, james@mojadomena.com, zapłacę 100 USD, aby móc przesłać N ofert, czy dotyczy to również jan@mojadomena.com, czy też Jan musi zapłacić 100 USD, aby mógł publikować swoje aplikacje bez musisz mnie o to prosić? Czy najlepiej jest używać pojedynczego loginu grupowego, takiego jak admin@mojadomena.com lub development@mojadomena.com, płacąc opłatę za wystawienie w wysokości 100 USD? Jakie jest twoje doświadczenie w tym zakresie z publikowaniem wielu ofert na rynku, w którym zaangażowanych jest N deweloperów?


title: Pytanie o surowy Javascript vs frameworki w wywiadach

text: Jeśli mądrzej jest znać framework, taki jak jQuery, MooTools, DoJo itp., aby poradzić sobie z problemami z różnymi przeglądarkami, dlaczego w wywiadach pyta się tylko o javascript?


title: Gdzie szukasz pomocy?

text: Udzieliłem czterech wywiadów i to pytanie („Gdzie szukasz pomocy?”) zadano trzy razy. Jaki jest tego sens? Jaka jest moja opinia, która jest nieco kontrowersyjna, jak Google jest w porządku? Czy ta odpowiedź jest w porządku? **AKTUALIZACJA:** Wygląda na to, że poszło dobrze.


title: Czy istnieje wtyczka minimapy dla Eclipse?

text: Szukam wtyczki Eclipse, która może pokazać coś w rodzaju mini-mapy kodu. Myślę, że to może być fajna funkcja. Tutaj możesz zobaczyć przykład o co mi chodzi (jest to wtyczka TextMap dla gedit).


title: Jaka powinna być relacja między nadrzędnymi i podrzędnymi komponentami GUI?

text: Wydaje się, że dzieje się tak za każdym razem, gdy tworzę GUI. Mam problem ze zrozumieniem, w jaki sposób klasy dziecięce powinny komunikować się z rodzeństwem. To ogólny problem, ale prawdopodobnie łatwiej jest użyć konkretnego przykładu (mam nadzieję, że nadal jest w porządku na tym forum? Wiem, że różni się od StackOverflow): Mam okno zawierające 4 panele. W tej chwili dzieci są po prostu obiektami składowymi rodzica. Naciśnięcia klawiszy zmieniają wszystkie 4 panele, więc obiekty podrzędne przerzucają zdarzenie z powrotem do swojego rodzica, który wykonuje logikę, a następnie wykonuje odpowiednie wywołania dla każdego panelu. Jednak zdarzenia myszy są inne. Zmieniają pozycję kamery (należącej do rodzica), której każdy panel używa do renderowania. Muszę więc przeliczyć kilka macierzy, aby wyrenderować każdy panel. Matryce są różne dla każdego panelu. Mam problem: kiedy mam dać dzieciom matryce? Myślę, że mam trzy możliwości: 1. Podczas odczytu zdarzenia myszy oblicz macierze i wywołaj metody ustawiające dla każdego panelu. Czasami jednak macierz zostanie zastąpiona przed wyrenderowaniem okna. 2. Nadaj panelowi potomnemu referencję do rodzica, a podczas wywołania renderowania zażądaj macierzy od rodzica (albo za pomocą metody lub zmiennej składowej). 3. Zmodyfikuj child.render() tak, aby akceptował dwa parametry macierzy i spraw, aby parent.render() wywoływał je odpowiednio. #2 wydaje się dobrze, ponieważ nie ustawiam niepotrzebnie matrycy w oknie potomnym. Ale wymaga to również bałaganu z deklaracjami przekazywania dla obiektów członkowskich, co wydaje się złą praktyką. I #3 Nie jestem do końca pewien, jak to zaimplementować, ponieważ render jest wywoływany przez wiele rzeczy innych niż mój kod (na przykład odminimalizowanie) i nie mogę ich dotknąć. Więc przypuszczam, że to nr 1? Czy istnieje jakiś wzorzec projektowy, który ludzie zwykle stosują do tego? Czy po prostu zastanawiam się, a #1 jest właściwie w porządku?


title: Automatyczne generowanie kodu źródłowego – dobry pomysł czy potencjalny koszmar?

text: W odpowiedzi na moje pytanie dotyczące generowania kodu źródłowego Java otrzymałem tę odpowiedź ostrzegającą mnie o potencjalnych problemach z utrzymaniem: > 1. miksowanie automatycznie generowanego kodu zawsze stwarza ryzyko, że ktoś go zmodyfikuje > w przyszłości tylko po to, aby poprawić drobne zachowanie. To tylko kwestia następnego > buildu, kiedy te zmiany zostaną utracone. > 2. będziesz musiał polegać wyłącznie na komentarzach na górze automatycznie wygenerowanego > źródła, aby uniemożliwić programistom robienie tego. > 3. Kontrola wersji - Powiedzmy, że aktualizujesz szablon metody someMethod(), > teraz cała wersja pliku źródłowego zostanie zaktualizowana, nawet jeśli źródło > aktualizacje są generowane automatycznie. zobaczysz zbędną historię. > Jego proponowaną alternatywą jest ulepszanie klas w czasie wykonywania przy użyciu generowania kodu bajtowego. Myślałem, że wstrzykiwanie wygenerowanego kodu do istniejących plików kodu źródłowego poprawi łatwość utrzymania, ponieważ sprawia, że staje się oczywiste, co się dzieje, zamiast wykonywać pewne operacje za kulisami. Czy powinienem: 1. stworzyć narzędzie do dodawania wygenerowanego kodu do istniejącego kodu źródłowego; lub 2. ulepszyć klasy za pomocą generowania kodu bajtowego w czasie wykonywania? Jakie masz doświadczenia z którymkolwiek z tych podejść?


title: Jeśli zamierzasz wdrożyć aplikację Rails 3, którą platformę polecisz?

text: Szukam porady, gdzie wdrożyć aplikację Rails dla małej firmy: * internetowej * potrzebne https * mniej niż 500 użytkowników * (prawdopodobnie) mniej niż 20 jednoczesnych użytkowników Jak dotąd czytam informacje o cenach: * Amazon EC2 * Dreamhost VPS * Heroku * Self-hosting (najbardziej nieprawdopodobne) Jakieś sugestie i/lub plusy i minusy do podzielenia się? Dziękuję!


title: Jak rekrutować absolwenta programisty?

text: > **Możliwy duplikat:** > Czym są skuteczne pytania podczas rozmowy kwalifikacyjnej? Obecnie szukam programisty .Net i zdecydowaliśmy się wziąć absolwenta prosto z uniwersytetu. Rolą zawodową będzie (ostatecznie) głównie tworzenie stron internetowych. Czy ktoś ma doświadczenie w rekrutacji absolwentów prosto z uczelni? Jak podejść do rekrutacji kogoś, kto ma bardzo niewiele twardych umiejętności, które można bezpośrednio przetestować? Jakiego rodzaju techniki rozmowy kwalifikacyjnej możesz zastosować (telefon/test techniczny/pytania i odpowiedzi/sesje na tablicy itp.)? Jakich umiejętności lub cech osobowości powinieneś szukać?


title: Jak postępować zgodnie z DRY podczas dokumentowania struktury i interfejsów modułu?

text: W tym artykule zaleca się, aby jeden dokument zawierał następujące elementy: * struktura modułu * interfejsy modułów Jeśli piszę szczegółowe struktury modułów i interfejsy w samodzielnym dokumencie, czy nie powtarzam pracy, która jest również wykonywana z deklaracjami obiektów, jednostka testy i dokumenty? Jeśli tak i jeśli jest to złe powtórzenie w sensie DRY, to jak profesjonalni programiści unikają tego rodzaju powtórzeń? * Automatycznie generować testy/docstrings/kod z dokumentacji? * Automatycznie generować dokumentację z testów/dokumentów/kodu? * Polegać na kodzie jako dokumentacji i przede wszystkim nie duplikować? * Ssij to, Nancy! Nie bez powodu nazywa się to „pracą”.


title: Czy istnieje akceptowana nazwa fałszywego obiektu wstrzykiwanego przez szew preprocesora?

text: Mam do czynienia ze starym, niechlujnym kodem C++, w którym znajduje się struktura z dużą ilością składowych danych i funkcji. Chcę przetestować klasę, którą zaimplementowałem, która używa struktury, ale ta zależność sprawi, że testy jednostkowe będą wyjątkowo brzydkie. Zainspirowany dyskusją Michaela Feathera o **przetwarzaniu wstępnym szwów** w _Efektywne działanie ze starszym kodem_ , przygotowuję się do rozwiązania tego problemu poprzez sfałszowanie brzydkiej struktury za pomocą polimorfizmu preprocesora (nie z dziedziczeniem), jak pokazano w poniższym kodzie pojęciowym. ### test.cpp #include <iostream> #include "NotAsUgly.hpp" #include "DependsOnUgly.hpp" int main() { std::cout << DependsOnUgly().getDescription() << std::endl; } ### DependsOnUgly.hpp #ifndef _DEPENDS_ON_UGLY_HPP_ #define _DEPENDS_ON_UGLY_HPP_ #include <string> #include "Ugly.hpp" class DependsOnUgly { public: std::string getDescription(). ); } }; #endif ### Ugly.hpp #ifndef _UGLY_HPP_ #define _UGLY_HPP_ struct Ugly { double a, b, ..., z; void extraneousFunction { ... } std::string getName() { return "Brzydkie"; } }; #endif ### NotAsUgly.hpp #ifndef _UGLY_HPP_ // Ta sama nazwa co w Ugly.hpp---celowo! #define _UGLY_HPP_ struct Brzydkie { // Ponownie, powtarzanie nazwy jest celowe std::string getName() { return "nie tak brzydkie"; } // Wszystko, od czego zależy DependsOnUgly }; #endif Czy istnieje specjalna nazwa dla typu fałszywego obiektu, którego tu używam? Jestem skłonny nazwać to skrótem, ale jest to raczej coś innego niż to, co normalnie uważam za skrót. Spodziewałbym się, że coś o nazwie _stub_ zaimplementuje interfejs klasy, która ma zostać sfałszowana przez dziedziczenie. Tutaj implementacja jest tylko częściowa i odbywa się za pośrednictwem preprocesora. Czy istnieje już znana nazwa tego rodzaju fałszywego/testowego obiektu? Chcę nazwać plik nagłówkowy, który go zawiera (w moim przykładzie NotAsUgly.hpp), aby poprawnie informować innych programistów, do czego służy.


title: Czy możliwa jest integralność danych bez normalizacji?

text: Pracuję nad aplikacją, która wymaga przechowywania informacji o lokalizacji, takich jak miasto, stan, kod pocztowy, szerokość i długość geograficzna. Chciałbym mieć pewność, że: 1. Dane lokalizacji są dokładne * ~~Detroit, Kalifornia~~ * Detroit **_IS NOT_** w Kalifornii * Detroit, MI * Detroit **_IS_** w Michigan 2. Pisownia miast i stanów poprawnie * **Kalifornia** nie ~~Kalefornia~~ * **Detroit** nie ~~Detriot~~ 3. Miasta i stany są nazwane konsekwentnie * Poprawne: * CA * Detroit * Niepoprawne: * Cali * California * DET * d-town * The D Ponadto, ponieważ dane miasta/kodu pocztowego nie są gwarantowane jako statyczne, aktualizacja tych danych w znormalizowany sposób może być trudna, podczas gdy może być zaimplementowana jako lokalizacja _de facto_, jeśli są zdenormalizowane. Kilka myśli, które przychodzą mi do głowy: 1. Zbiór tabel referencyjnych, które przechowują listę wszystkich stanów oraz najczęstszych miast i kodów pocztowych, które mogą z czasem rosnąć. Przeszuka bazę danych w celu znalezienia dokładnego lub podobnego dopasowania i zaleci poprawki. 2. Użyj jakiejś usługi, aby sprawdzić poprawność danych o lokalizacji przed ich zapisaniem w bazie danych. Czy możliwe jest spełnienie tych wymagań bez normalizacji, a jeśli tak, to czy powinienem denormalizować te dane?


title: Czy na 4-godzinnych zajęciach Powershell 101 powinienem pominąć/na chwilę/do zrobienia i po prostu uczyć ForEach-Object

text: Tworzę program nauczania PowerShell dla nie-programistów. Pierwszą grupą niepilotażową, z którą poprowadzę kurs, będzie zespół, który wdraża i konfiguruje jeden z naszych produktów programowych. Są inteligentnymi, zmotywowanymi pracownikami IT, ale nie programistami. Zamierzam omówić podstawy (zmienne, tablice, funkcje i pętle), a następnie przejść do przykładów zbliżonych do ich dziedziny problemowej. Nie jestem żonaty z 4-godzinnymi zajęciami, w razie potrzeby mogę je rozszerzyć do dwóch 4-godzinnych zajęć. Bawię się pomysłem przeskakiwania pętli for i while i po prostu uczenia ForEach-Object. Osobiście używałem tradycyjnych pętli for i while w skryptach powershell, ale zawsze można je przepisać jako pętle ForEach-Object przy odrobinie kreatywności. Część mnie czuje, że stary dobry ($i=0 $i <foo; $i++) jest niezbędną podstawą przed przejściem na foreach, ale druga część mnie myśli, że może to być ja kurczowo trzymający się mojego Modelu M i mojej Biblii K&R . Aby narysować analogię do SQL, nigdy nie uczyłbym kursorów ani innych pętli na 4-godzinnych zajęciach, ponieważ powinieneś być w stanie zrobić wszystko w SQL jako operację SET. Teoretycznie powinieneś trzymać się potoku w PowerShell. Używam pętli for i while w PowerShellu częściej niż robię to z kursorów i pętli while w SQL. Jednak PowerShell jest językiem skryptowym, a konwencje są mniej rygorystycznie egzekwowane, a także przesuwam granice powershell za pomocą wbudowanego C# i nadmiernych zależności od wywoływania natywnych interfejsów API .NET. Moja publiczność tego nie zrobi. Dla tych, którzy nie są biegli w powershell, jestem prawie pewien, że tak naprawdę nie potrzebujesz pętli for lub while. Używam ich, ale to dlatego, że mam doświadczenie z innymi językami. Na przykład, jeśli chcesz tylko pierwszych 10 członków tablicy 20 członków: 1..20 | Wybierz obiekt - pierwsze 10 | ForEach-Object { Write-Host $_ }


title: Jakie jest rozwiązanie na „niewystarczające doświadczenie komercyjne”?

text: Mam prawie 2 lata komercyjnego doświadczenia w tworzeniu stron internetowych. Jednak za każdym razem, gdy ubiegam się o pracę, otrzymuję oddzwonienie „Przepraszam, że nie masz wystarczającego doświadczenia handlowego na to stanowisko”. Ostatnie 6 miesięcy minęło tak: 10 Postaraj się zdobyć doświadczenie handlowe. 20 Nie mogę znaleźć pracy, ponieważ nie mam wystarczającego doświadczenia handlowego. GOTO 10 Aplikuję na stanowiska programisty PHP pracując z istniejącymi bazami kodu i wymagając od 1 do 2 lat doświadczenia. Jak mogę zdobyć wiarygodne „doświadczenie komercyjne”, gdy nikt nie zatrudni?


title: Czy uruchamianie pliku wykonywalnego jako procesu podrzędnego jest tym samym, co łączenie biblioteki?

text: Planuję uruchomić plik wykonywalny jako proces potomny w moim programie (np. używając rodziny funkcji `popen` Rubiego lub `exec()` w C). Jednak plik wykonywalny, który planuję uruchomić, jest objęty licencją GPL. GPL, jak rozumiem, wymaga, aby cały kod powiązany z kodem na licencji GPL również był na licencji GPL. Ale jest też wyjątek "arm's length", omówiony w FAQ: > Jednak w wielu przypadkach możesz dystrybuować oprogramowanie objęte licencją GPL > razem ze swoim zastrzeżonym systemem. Aby zrobić to poprawnie, musisz upewnić się, że wolne i niewolne programy komunikują się na odległość, że nie są połączone w sposób, który czyniłby je efektywnie jednym programem. Czy uruchomienie pliku wykonywalnego jako procesu podrzędnego byłoby częścią tego wyjątku, czy nadal byłoby uważane za „łączenie” dla celów licencji? Jeśli jest uważane za "linkowanie", czym różni się od uruchomionego programu, takiego jak Nmap, z wiersza poleceń?


title: RESTful web service i aktualizacje delta - zalety i wady

text: Nasi programiści front-end zażądali, aby usługi sieciowe Java RESTful wspierały zapytania delta. Przypadkiem użycia tego jest obsługa okresowego odświeżania ekranu ajax w celu wprowadzenia nowych danych (delt). Widzę kilka zalet tego rozwiązania: * Ułatwia logikę front-endu (tj. nie wymaga skomplikowanej logiki deduplikacji) * Zmniejsza ruch w sieci (tj. rozmiar odpowiedzi jest mniejszy) Jednak są też pewne obawy: * obsługa delty będzie wymagała usługi być stanowym, co wpływa na skalowalność * intensywne użycie buforowania (wyniki buforowane na użytkownika na zapytanie, aby określić deltę) * intensywne przetwarzanie na serwerze Moje pytania to: 1. Czy są dodatkowe zalety zapytań delta? 2. Jaka jest dobra implementacja dla zapytań delta, która wyeliminowałaby niektóre wady (możesz założyć, że zamierzamy drastycznie zrefaktoryzować nasz kod)


title: Dlaczego potrzebujemy zabezpieczenia usługi REST, jeśli mamy HTTPS?

text: Odnoszę się do tego doskonałego artykułu http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ , który mówi o amazon jak o bezpieczeństwie usług internetowych. Jednak w zespole zadano mi pytanie, po co nam to, skoro już używamy HTTPS. Nie byłem w stanie odpowiedzieć, ponieważ naprawdę wydaje mi się, że mogą mieć rację, chociaż przeczucie mówi mi inaczej. Czy są też miejsca podczas świadczenia usług REST, w których HTTPS może nie działać? Lubisz strony internetowe innych firm? Jeśli ktoś ma doświadczenie w zabezpieczaniu usług internetowych za pośrednictwem publicznych sieci, rzuci trochę światła na swoje doświadczenie. Z góry dziękuję. EDYCJA: Aby wyjaśnić, nie mówię o uwierzytelnianiu użytkownika, ale bardziej o uwierzytelnianiu klienta. Można założyć, że uwierzytelnianie użytkownika jest zwykłym tekstem przez HTTPS+ REST. Martwię się, że nadal pozwala to każdemu na korzystanie z usługi sieciowej bez mojego klienta, ponieważ wszystko jest tekstem plai, chociaż przez HTTPS punkt końcowy klienta może nadal korzystać z mojej usługi sieciowej bez aplikacji klienckiej.


title: Aplikacje OpenGL Image Load-Store Atomics

text: Pierwotnie zapytałem o to na zwykłym starym stosie, ale był on zamknięty, ponieważ był zbyt otwarty. (Co było dobrym telefonem, ponieważ jest to lepsze miejsce na takie pytania.) Oryginalny link: http://stackoverflow.com/questions/15132135/opengl-image-load-store-atomics-applications Tak więc wydaję przez ostatnie kilka miesięcy zapoznawanie się z najnowszymi funkcjami OpenGL 4, gdy mam wolny czas. (Rzeczy takie jak sprzężenie zwrotne transformacji, teselacja, shadery obliczeniowe itp.) W końcu poświęciłem trochę czasu na korzystanie z tekstur Image Load-Store i podczas gdy pomysł na możliwość atomowego odczytu/zapisu dowolnej tekstury z dowolnego GPU rdzeń niezależnie od etapu cieniowania wydaje się niesamowicie potężny, nie mogłem wymyślić ciekawych aplikacji wykorzystujących unikalne udogodnienia, jakie zapewniają te tekstury. Nawet po skonsultowaniu się z „google” w poszukiwaniu ciekawych aplikacji, zostałem z pustymi rękami. Więc, czy są jakieś WOW-THATS-FOOL lub nawet CHOLERNIE-THATS-HANDY aplikacje, które możesz wymyślić? Aplikacja 1 (sugerowana przez Nicol Bolas): „Wyszukaj przezroczystość niezależną od kolejności. To wymaga operacji na obrazach atomowych”.


title: Zmiana int na ciąg w PHP / MySQL Schema

text: ## Tło Próbuję wybrać najlepszy sposób zarządzania zmianą wymagań. Obecnie, gdy administrator jest przypisany do zgłoszenia, rekord nagłówka zgłoszenia otrzymuje właściciela, a pole OwnerID jest aktualizowane wartością identyfikatora, która odpowiada rekordowi w tabeli TeamMembers. Właściciel (członek zespołu) jest powiadamiany, gdy użytkownik (klient) aktualizuje zgłoszenie komentarzem. Teraz muszę dodać do zgłoszenia dodatkowych członków zespołu, aby oni również zostali powiadomieni. ## Pytanie ? Czy... 1. Utworzyć pole OwnerID OwnerIDs i przechowywać listę identyfikatorów oddzielonych przecinkami w ciągu znaków? 2. Dodaj nowe pole extraOwnerIDs i przechowuj dodatkowe identyfikatory po głównym właścicielu jako ciąg oddzielony przecinkami ? 3. Utworzyć nową tabelę, która po prostu łączy identyfikator biletu z przypisanymi właścicielami i ma jeden wiersz na właściciela ? 4. Zrobić coś jeszcze ? ## Rozważania Chcę dostarczyć nową funkcjonalność tak szybko, jak to możliwe, zmiana przeznaczenia istniejącego pola może wydawać się najprostszym rozwiązaniem, ale wymagałoby to zmiany typu schematu istniejących danych, więc będzie potrzebny skrypt migracji, aby przepisać setki tysięcy wierszy . Dodanie nowego pola nie wymagałoby wtedy tyle pracy związanej z migracją, ponieważ byłoby to pusty ciąg dla wszystkich istniejących rekordów i domyślnie pusty ciąg dla nowych rekordów. Nowa tabela łączy wydaje się najbardziej poprawnym programowo sposobem (IMHO), ale wymagałaby najwięcej czasu na jej wdrożenie i przetestowanie, a migracje byłyby najbardziej skomplikowane pod względem wyodrębnienia istniejących właścicieli biletów do nowej tabeli. Zmiana kodu do pobierania/aktualizowania właściciela w celu zapytania o nową tabelę. Następnie usuń nieistniejącą kolumnę OwnerID z istniejącej tabeli. Przeoczyłeś coś? Które podejście jest najlepsze pod względem utrzymania bazy kodu w przyszłości?


title: Dlaczego nie ma interfejsu zapytań sprzętowych ISO?

text: Obecnie czytam książkę, rozdział o I/O i przyszło mi do głowy jedno pytanie. Zasadniczo, gdy programujesz w C/C++, masz niesamowitą możliwość optymalizacji pod kątem zachowania sprzętu. Używaj buforowania dla urządzeń blokowych, używaj przesyłania strumieniowego i asynchronicznego we/wy dla urządzeń sieciowych o dużym opóźnieniu i tak dalej. A jeśli piszesz aplikację serwerową, która jest przeznaczona dla aplikacji o dużym obciążeniu i możesz zoptymalizować ją pod kątem urządzeń we/wy, może to w rzeczywistości ogromnie zmienić wymagania sprzętowe. Powiedzmy, że wiesz, że pamięć podręczna HDD ma około 32 MB i lubi przesyłać strumieniowo dane w blokach 8 MB, a masz 16 GB pamięci RAM, która jest tania i bezczynna, możesz po prostu użyć niskiego poziomu `_read` z buforem 8 MB i skończyć z to. Co usunęłoby mnóstwo blokad i przejść użytkownik->jądro->użytkownika, które są spowodowane mniejszymi odczytami, powiedzmy 64 KB każdy. Problem polega na tym, że zasadniczo musisz uruchomić program na platformie docelowej, aby uzyskać rzeczywiste dane dotyczące wydajności i zoptymalizować je. A jeśli przeniesiesz tę aplikację na ARM, optymalizacje mogą nawet przynieść odwrotny skutek. Dlaczego więc nie ma API, aby uzyskać najlepsze wartości dla architektury, na której pracujesz. Powiedz „QueryOptimalHddReadBuffer”, „QueryOptimalHddWriteBuffer”, „QueryHddSeekTimeCharacteristics”, „QueryOptimalNetworkCardReadBuffer” itp.


title: Czy duże firmy programistyczne opracowują swoje rozwiązania do zarządzania procesami biznesowymi (ERP) we własnym zakresie?

text: Patrzyłem na listę klientów kilku dostawców ERP, takich jak SAP. Firmy na liście to w większości firmy spoza branży IT. Zastanawiam się więc, jak firmy IT podchodzą do problemu zarządzania procesami biznesowymi. Na przykład każda firma informatyczna zatrudniająca kilka tysięcy pracowników w różnych lokalizacjach będzie potrzebować oprogramowania do zarządzania zasobami ludzkimi, księgowości i tak dalej. A dostawca oprogramowania (taki jak Microsoft) będzie potrzebował oprogramowania CRM. Wygląda na to, że kupowanie oprogramowania korporacyjnego od zewnętrznego dostawcy może być kłopotliwą i kosztowną propozycją, zwłaszcza gdy mogą zakodować je we własnym zakresie, korzystając z doskonałej znajomości wymagań specyficznych dla ich działalności. Czy firmy te zazwyczaj budują własne rozwiązania z własnych zasobów, czy kupują je od innych dostawców oprogramowania?


title: Kiedy odpytywanie zdarzeń byłoby lepsze niż używanie wzorca obserwatora?

text: Czy istnieją scenariusze, w których odpytywanie pod kątem zdarzeń byłoby lepsze niż użycie wzorca obserwatora? Boję się korzystać z ankiet i zacząłbym go używać tylko wtedy, gdyby ktoś dał mi dobry scenariusz. Jedyne, o czym mogę myśleć, to o tym, że wzorzec obserwatora jest lepszy niż odpytywanie. Rozważ ten scenariusz: > Programujesz symulator samochodu. Samochód jest przedmiotem. Gdy tylko samochód > się włączy, chcesz odtworzyć klip dźwiękowy „vroom vroom”. Możesz to wymodelować na dwa sposoby: **Odpytywanie** : co sekundę odpytuj obiekt samochodu, aby sprawdzić, czy jest włączony. Gdy jest włączony, odtwórz plik dźwiękowy. **Wzorzec obserwatora** : Ustaw samochód jako przedmiot wzorca obserwatora. Niech opublikuje zdarzenie „włączone” wszystkim obserwatorom, gdy samo się włączy. Utwórz nowy obiekt dźwiękowy, który nasłuchuje samochodu. Niech zaimplementuje wywołanie zwrotne "on", które odtwarza klip dźwiękowy. Myślę, że w tym przypadku wygrywa wzorzec obserwatora. Po pierwsze, odpytywanie intensywniej obciąża procesor. Po drugie, klip dźwiękowy nie uruchamia się od razu po włączeniu samochodu. Ze względu na okres odpytywania może wystąpić przerwa do 1 sekundy.


title: W jaki sposób odwołania biblioteki dynamicznej do zmiennej statycznej są tłumaczone raz w uruchomionej aplikacji?

text: Jeśli dynamiczna biblioteka eksportuje adres do zmiennej globalnej zdefiniowanej w bibliotece, w jaki sposób dostęp do tej zmiennej jest tłumaczony podczas dynamicznego łączenia, aby uruchomiona aplikacja mogła z nią współdziałać?


title: czy istnieje problem z bezpieczeństwem podczas używania Jquery do tworzenia aplikacji internetowych asp.net?

text: Jestem nowy w aplikacjach internetowych. Stworzyłem aplikację webową korzystając z ASP.net. Po usłyszeniu o jquery i przejrzeniu kilku przykładów zmieniłem istniejącą aplikację i użyłem jquery do wykonania większości prac ajaxowych. Po stronie serwera wykorzystałem handlery html do połączeń db i przetwarzania danych. Ponieważ używam jquery, obawiam się, że mój skrypt jest widoczny dla użytkowników aplikacji. Czy będzie to kwestia bezpieczeństwa? Czy podążam właściwą ścieżką?


title: Czy powinienem przetestować witrynę ukierunkowaną na Chiny za pomocą „Bezpiecznej przeglądarki 360” (przeglądarki w Chinach)?

text: Tworząc serwis skierowany na rynek chiński zastanawiam się czy powinienem zrobić testy kompatybilności z bezpieczną przeglądarką 360, która bazuje na silniku układu Trident (np. Internet Explorer). Każdy programista doświadczony w projektowaniu stron internetowych dla Chin? Czy testowałeś w tej przeglądarce? Czy to naprawdę różni się od IE? Jaki jest jego udział w rynku w Chinach kontynentalnych? _Uwaga: pomnóż przez wersje systemu operacyjnego x przypadki użycia x wydania stron internetowych, a testowanie kosztuje dużo, więc muszę dokładnie przemyśleć dodanie przeglądarki do listy obsługiwanych przeglądarek._


title: Jaki jest cel czerwonej strefy?

text: Strefa czerwona to obszar w pamięci o stałym rozmiarze poza wskaźnikiem stosu, który nie został „przydzielony”. Kompilatory generują zestaw, aby uzyskać dostęp do tego obszaru w prostych funkcjach liścia. Ale nie widzę żadnych realnych korzyści dla czerwonej strefy. Dostęp do pamięci poza wskaźnikiem stosu jest naprawdę niebezpieczny i może łatwo doprowadzić do uszkodzenia danych. Dlaczego w ogóle to robisz? Zapisanie 2 instrukcji procesora (push ebp; mov ebp esp) nie przyniesie rzeczywistego przyspieszenia. PS Było już pytanie na SO, które zostało zamknięte jako nie na temat (straszna niesprawiedliwość).


title: Czy podpięcie metody dostępu do danych na niewłaściwym obiekcie jest szkodliwe dla programisty?

text: W prostej aplikacji, którą tworzę, znajduje się Admin i użytkownicy, w których administrator może tworzyć użytkowników. Obecnie tworzę klasy, które hermetyzują wywołania CRUD bazy danych za pomocą metod. Na przykład: `adminStore.CreateUser(userObject)` zachowa ten obiekt użytkownika w Bazie Danych i zwróci obiekt. Jestem teraz zdezorientowany, do której jednostki DataAccess muszę dołączyć takie metody. Wykonanie ich na `adminStore` sprawi, że będą sensowne w tym sensie, że programista zrozumie, że admin tworzy użytkownika i ma rolę dostępu. Ale z innej perspektywy poniższe brzmi logicznie. jak: `userStore.CreateUser(userObject);`. Więc moje pytania brzmią trochę jak projekt API, pytanie dotyczące projektu klasy, ale chciałbym wiedzieć, które, jeśli poniższe jest właściwe. 1 `UserStore.CreateUser(userObject)` 2 `AdminStore.CreateUser(userObject)` Aktualizacja: Oto, co wymyśliłem później po przejrzeniu odpowiedzi. > Użytkownik { Nazwa , E-mail, Hasło } > > Admin:Użytkownik,IImplementsAdmin { FlagPost() etc etc } > > AdminStore { CreateUser(), SetUserStatus() }


title: Jak narysować dobry schemat biznesowego przepływu pracy? Jakie oprogramowanie?

text: Chcę utworzyć ilustrację do **kreatora zakupu produktów** i zilustrować sposób interakcji użytkownika z kreatorem. Jest to w zasadzie prosty schemat blokowy lub prosty przepływ pracy: 1. Użytkownik uruchamia kreatora 2. Użytkownik wybiera produkt 3. Użytkownik powinien sprawdzić dostępność tego produktu (ręcznie) 4. Jeśli produkt jest dostępny, to następny przycisk jest włączony, w przeciwnym razie jest wyłączony 5. Jeśli użytkownik zmieni typ produktu, przycisk Dalej powinien być wyłączony 6. Użytkownik przechodzi do następnego kroku 7. W zależności od typu produktu w kolejnym kroku jest mu pokazywany inny interfejs 8. Powinien dostosować kilka innych ustawień, ... Zacząłem tworzyć diagram sekwencji, ale wkrótce okazało się, że nie pasuje. Potem przerzuciłem się na diagram aktywności, znowu bez powodzenia. Jaki typ diagramu powinienem wybrać, aby zilustrować ten schemat blokowy (który jest pełen warunków, rozgałęzień, zarządzania stanem, interakcji z użytkownikiem i nie tylko)? Czy w ogóle mamy taki ogólny schemat? Jakiego oprogramowania powinienem używać? **Aktualizacja:** Aby dokładniej wyjaśnić, chciałbym narysować diagram przedstawiający **scenariusz** zamiast **przepływu pracy**.


title: co oznacza „Raport z rozbiórki”

text: Przepraszam, jeśli to złe miejsce na zadanie pytania. Widziałem użycie "Raport z rozbiórki" dla produktu Co to oznacza?


title: Za co powinienem odpowiadać jako pierwszy programista w dużym projekcie internetowym?

text: Jestem pierwszym deweloperem projektu internetowego na dużą skalę, w sektorze nieruchomości. Nie jestem ekspertem w żadnej dziedzinie, znam się na podstawach, programowaniu, bazach danych, coś o designie i trochę o SEO i optymalizacji/cachingu stron internetowych. I mam trochę wiedzy na temat innych technologii i rzeczy, które mogą być wymagane w projekcie. Więc jestem programistą, mój szef rysuje na papierze, żeby przedstawić mi swoje pomysły, a potem zaczynam programować i pokazuję mu wynik. Do tej pory nie było problemu, ale teraz aplikacja webowa jest wystarczająco duża i brakuje jej odrobiny optymalizacji bazy danych oraz intuicyjnego interfejsu użytkownika. Oprócz strony internetowej projekt ma również gazetę offline i aplikację komputerową, która jest zmniejszoną wersją online, obie te rzeczy nie są zarządzane przeze mnie, ale przez inne osoby lub programistów spoza firmy. Nie używamy narzędzia kolaboracyjnego do dzielenia się wiedzą pomiędzy osobami pracującymi nad tym projektem, tylko e-maili i nie stosujemy metodyki rozwoju, ponieważ dla zespołu jesteśmy: * developerem (ja), * projektantem, * sekretarza i * szefa. Mam możliwość poprosić szefa o zatrudnienie ludzi, których chcę, abym mógł powiększyć zespół i mieć odpowiednią osobę, która zajmie się właściwą częścią projektu. To jest historia, prawdziwe pytanie brzmi, jaki powinien być mój stosunek do projektu i firmy? Czy powinienem zostać deweloperem i od czasu do czasu uczestniczyć w podejmowaniu decyzji i organizowaniu zadań, aby pomóc szefowi? A może powinienem podejść do tego poważniej i spróbować nauczyć się zarządzania projektami i wdrożyć wszystko, co uważam za konieczne, aby zapewnić jakość pracy i wyniki końcowe? Jestem tym, który najlepiej wie, co zostało opracowane do tej pory, czy powinienem starać się zorganizować całą pracę i zespół? A może powinienem poprosić szefa, aby zatrudnił do tego eksperta?


title: Zminimalizuj dotykanie już działającego kodu, gdy wymagana jest radykalna zmiana

text: Mam kod, który w dużym stopniu opiera się na strukturze `Array`, jak poniżej: $array['customer'][$customer_id]['details'][..]; // sięga około 10 poziomów w głąb Jednak po prawie dwóch latach od początkowego rozwoju, teraz muszę dołączyć kolejny element wysokiego poziomu do tej tablicy, co sprawi, że będzie to coś takiego: $array['company'][$ id]['klient'][..]; Wyzwanie polega na tym, że około 12 000 linii kodu źródłowego jest napisanych przez czterech programistów -- tylko ja pracuję nad projektem i nie ma testów jednostkowych, getterów i seterów, DI itp. Struktura. Tak więc zmiana struktury tej tablicy prawdopodobnie będzie wymagała zmodyfikowania 30% metod, aby dostosować się do nowej zmiany, w przeciwnym razie po prostu nie będą działać zgodnie z oczekiwaniami. Czy istnieje ogólne podejście do tego rodzaju bólów głowy? Czy mogę zaimplementować metodę, która może jakoś wypełnić lukę? Wiem, że pytanie jest zbyt niejasne, nie widząc rzeczywistego kodu źródłowego, jednak bardzo doceniam wszelkie zalecenia. **Aktualizacja** Obecnie zastanawiam się nad posiadaniem metody/funkcji, która zwraca _starą tablicę_ , jednak można faktycznie przekazać żądany _identyfikator_ i umieścić go w pętli, aby uzyskać ten sam efekt - nie jestem pewien, czy to zadziała we wszystkich przypadkach, ale miejmy nadzieję, że będzie pasować w większości przypadków: $data = get_legacy_array( $company_id ); // Zamiast: $data = $array['customer']...


title: R* Praca w drzewie z danymi dynamicznymi

text: Poszukuję algorytmu do przechowywania moich danych (które są współrzędnymi poruszających się obiektów) i umożliwienia mi wyszukiwania obiektów w określonym promieniu określonego punktu. Wymyśliłem R* Tree, o którym mówi się, że jest dobrym rozwiązaniem dla danych geograficznych, ale jak dalej studiowałem, R* Tree przechowuje dane w pamięci pomocniczej, a jego dane w większości nie zmieniają się w czasie. Ale moje dane są aktualizowane co sekundę, więc jeśli zaimplementuję drzewo R*, część algorytmu wstawiania i usuwania będzie wywoływana wiele razy. Czy drzewo R* nadaje się do mojego przypadku, czy nie? Jeśli tak nie jest, czy ktoś może mi zaproponować lepszy algorytm?


title: Jak uporządkować podstawy i dalej wykonywać swoją pracę?

text: Jestem inżynierem oprogramowania w domenie Embedded. Tutaj używamy QT, C++, Sql, UPNP, LINUX i DBUS. Jednak nigdy nie przećwiczyłem całego mechanizmu IPC, C++, Sql, QT i UPNP. Na przykład, jak działa gniazdo itp.? Staram się uporządkować swoje podstawy, ale jednocześnie muszę uczyć się nowych technologii. Moim zdaniem można łatwo ogarnąć nową technologię, jeśli istnieją dobre podstawy. Ale mam tutaj problem. Jak mogę się uczyć i dobrze pracować? Kiedy próbuję spojrzeć na podstawy, tracę czas. To wpływa na produktywność. Ale też bez podstaw mogę pracować, ponieważ generalnie potrzebne są umiejętności logiczne. Ale wtedy powinieneś być gotowy, aby spalić się, tak jak robisz permutacje i kombinacje. Jak sobie z tym poradzić? Jak mogę to zrównoważyć?


title: Jaki jest cel fragmentowania ciągów w przetwarzaniu języka naturalnego?

text: Widzę wiele przykładów bibliotek, które używają chunkera, a także ludzi pytających, jak pisać chunkery, ale po co to jest i dlaczego tego potrzebujemy? Czy nie wystarczy podzielić tekst za pomocą spacji lub innych znaków, które wyznaczają granice między słowami?


title: Deklaracja vs. prototyp vs. symbol vs. definicja vs. implementacja

text: Widzę, że terminy „deklaracja”, „prototyp” i „symbol” są rzucane zamiennie, jeśli chodzi o kod, taki jak ten: void MyUndefinedFunction(); To samo dotyczy "definicji" i "implementacji" takich rzeczy: void MyClass::MyMethod() { // Rzeczywisty kod tutaj. } Czy istnieją różnice między terminami, czy są one naprawdę synonimami? EDYCJA: Nie jestem pewien, czy to należy do Stack Overflow...


title: Gdzie w aplikacji MVVM znajduje się kod inny niż MVVM?

text: Przez kod inny niż MVVM mam na myśli takie rzeczy, jak wysoce uogólnione komponenty, takie jak jeden z typowymi metodami rozszerzającymi dla typów CLR i inne klasy pomocnicze „bezdomnych” itp.? Mam projekt `Core`, do którego odwołuje się większość innych, ale aby rozwiązać zależności cykliczne, musiałem dokonać refaktoryzacji rozszerzeń do innego projektu. Wydaje się to częstym wyzwaniem w dobrze ułożonym projekcie. W niektórych przypadkach łatwiej jest mieć jedną kopię klasy w każdym z dwóch lub więcej składników i nie mogę używać dowiązań symbolicznych dla tych kopii, ponieważ przestrzeń nazw jest inna. Albo skończę z dość grubym projektem `Core`, hostującym różne grupy klas pomocniczych. Do jakiej szczegółowości mogę je rozłożyć i zwiększyć liczbę zależności klientów tych usług. Jaka jest tutaj konwencja ogólna?


title: Używanie Pythona/Ruby/Lua do skryptów startowych Java

text: Mam kilka różnych narzędzi Java, które są dostarczane razem. Obecnie istnieją dwa skrypty startowe dla każdego narzędzia: `.sh` dla Linuksa i `.bat` dla Windows. Zastanawiam się nad przepisaniem skryptów startowych przy użyciu Pythona, a może Ruby, Perl, Lua lub innego języka skryptowego. W ten sposób unikam posiadania różnych wersji dla każdego systemu operacyjnego. Czy to dobry pomysł? Czy są projekty, które już wykorzystują to podejście? Jaki język skryptowy najlepiej nadawałby się do tego zadania? Jakie są inne możliwości uniknięcia oddzielnych plików `.sh`, `.bat` dla tej grupy narzędzi?


title: Po prostu zatrudniony jako starszy programista, nigdy nie był nawet młodszym programistą, czego powinienem się spodziewać?

text: Od jakiegoś czasu jestem freelancerem i koderem, a ostatnio zostałem zatrudniony po kilku poziomach rozmów kwalifikacyjnych w miłej firmie z Nowego Jorku, mimo że mam pewne braki w konkretnych dziedzinach. Czy firmy często zatrudniają seniorów z mniejszym doświadczeniem? Czy poczekają kilka tygodni, aby uszanować pewną krzywą uczenia się? Nie wiem nic o pracy w firmie, dlatego się martwię. Po tygodniu wciąż sprawdzam i eksploruję źródła, ale po tygodniu pracy wydaje się, że niektórzy współpracownicy uważają, że jestem wolny. Jestem dobry z matematyki, fizyki, algorytmów, ale wciąż muszę poznać wszystkie szablony używane w tej firmie. Ktoś tutaj otrzymał już mniej doświadczonego starszego członka w swoim zespole? Czy to jest dopuszczalne? Planuję spotkanie z szefem, żeby przestać się tym martwić. Brzmi jak dobry pomysł? [EDYTUJ] Dzięki za te odpowiedzi. Zdecydowanie jestem -nowym - starszym programistą. W poniedziałek wróciłem do biura z większą pewnością siebie. Myślę, że to normalne, że czujesz się trochę niekompetentny w obliczu nieznanych szablonów/źródeł w pierwszych tygodniach, kiedy otrzymujesz dobre wynagrodzenie.


title: Czy przeglądy wyników i wynagrodzeń *naprawdę* są szkodliwe?

text: W drugim wydaniu PeopleWare, DeMarco i Lister sugerują, że coroczne przeglądy wyników i wynagrodzeń sprzyjają zespołowi, ponieważ zachęcają do rywalizacji w zespole. Spolsky powtarza ten pomysł w swoim eseju „Płaca motywacyjna uznana za szkodliwą”. Czy tak jest naprawdę? A jeśli nie mamy przeglądów wynagrodzeń, jak należy zrobić podwyżki?


title: Jak wyjaśnić znaczenie korzystania z [rozproszonego] systemu kontroli wersji komuś, kto nie zajmuje się CS?

text: Dobrym przykładem kogoś, kto pasuje do tego opisu, może być kierownik projektu. Pewnego dnia mój szef zapytał mnie, „co to za rzecz z Githubem i dlaczego jest ważna?”. Ma kilka autorskich projektów, więc potrzebowałby prywatnego hostingu, a ja miałem trudności z wyjaśnieniem poza zwykłymi: VCS sprawiają, że współpraca jest banalna, zapewniają historię i „kopie zapasowe” wszystkich danych oraz pozwalają na rejestrowanie niepodzielnych zmian w bazie kodu . W mojej głowie myślałem: „to prawie tak, jakbyś musiał użyć DRVS, aby naprawdę zrozumieć, jakie to korzystne”. Skończyło się na tym, że wskazałem mu BitBucket, ponieważ dają nieograniczone prywatne repozytoria (musiałem nawet wyjaśnić, czym jest repozytorium). Czy ktoś ma naprawdę dobre konkretne przykłady tego, jak system VCS uratował mu tyłek, ułatwił życie itp. - w zasadzie, jak sprzedałbyś DVSC komuś, kto nie jest obeznany z programowaniem, ale nie jest programistą z zawodu?


title: Czy jest jakiś powód, aby używać klas „zwykłych starych danych”?

text: W przestarzałym kodzie czasami widzę klasy, które są tylko opakowaniami danych. coś takiego: class Butelka { int wysokość; średnica wewnętrzna; Czapka Typ; pobierające/ustawiające, być może konstruktor } Moje rozumienie OO jest takie, że klasy są strukturami danych _i metodami operowania na tych danych._ Wydaje się, że wyklucza to obiekty tego typu. Dla mnie są one niczym więcej jak „strukturami” i czymś w rodzaju pokonania celu OO. Nie sądzę, że jest to koniecznie złe, chociaż może to być zapach kodu. Czy istnieje przypadek, w którym takie przedmioty byłyby konieczne? Jeśli jest to często używane, czy sprawia to, że projekt jest podejrzany?


title: Jaki wzorzec projektowy najlepiej pasuje do tego kontekstu?

text: Mam klasę bazową Shape i klasy sterowane Line Segment, Arc, B-spline,... Chcę znaleźć punkt przecięcia tych kształtów. Chciałbym: Kształt* a = new LineSegment(); Kształt* b = nowy Łuk(); bool did_intersect = a->Przecięcie(b); Nie podoba mi się ten projekt w Intersect: bool LineSegment(Shape* s) { Arc* arc = dynamic_cast<Arc*>(s); if (NULL != arc) return LineSegmentArcIntersection(this, arc); BSpline* bspline = dynamic_cast<BSpline*>(s); if (NULL != bspline) return LineSegmentBSplineIntersection(this, bspline); ... } Więc jaki **wzorzec projektowy** najlepiej pasuje do tego kontekstu?


title: Czy bułka tarta nadal jest realnym sposobem poruszania się po witrynach internetowych i aplikacjach internetowych?

text: Obecnie pracuję nad następującymi rodzajami witryn i aplikacji: 1. e-commerce jak Amazon 2. System rezerwacji (pomyśl o recepcjoniście hotelowym sprawdzającym dostępność pokoi) 3. Zarządzanie fakturami jak Freshbook Na Amazon nie zauważyłem żadnych okruszków chleba , tylko fasetki z lewego panelu. Jednak newegg używa zarówno bułki tartej, jak i fasetek. W systemie zarządzania, takim jak rezerwacje hotelowe lub zarządzanie fakturami, zazwyczaj masz unikalny numer rezerwacji lub klienta, który przeszukujesz w swoim systemie. Każda rezerwacja może następnie rozwinąć się do większej liczby sekcji, na przykład: Rezerwacje > Rezerwacja #123456 > Goście > Pokój > Odbiór z lotniska > Płatność Na każdej unikalnej stronie rezerwacji używam menu nawigacyjnego, aby pokazać położenie bieżącej strony względem witryny. Czy to dobry sposób na przedstawienie tego rodzaju informacji? Czy powinienem używać zakładek lub innych technik?


title: Jak uwierzytelnić moje wywołania zwrotne w aplikacji REST?

text: Tworzę aplikację REST i umożliwiam moim klientom uwierzytelnianie na kilka sposobów (zwykle za pomocą `Authorization: Token ...` jak w OAuth 2.0, ale jest też opcja uwierzytelniania opartego na sesji dla interfejsu API z możliwością przeglądania w sieci). Aplikacja umożliwia klientowi dostarczenie punktu końcowego, do którego moja aplikacja będzie później POST z pewnymi danymi, gdy wystąpi określone zdarzenie. Teraz zastanawiam się: jaki jest najlepszy sposób, aby aplikacja kliencka autoryzowała, że jest to wywołanie mojej aplikacji? Czy powinienem sam coś podsumować (np. dołączyć token uzyskany z klucza tajnego aplikacji klienckiej, który następnie zweryfikuje aplikacja kliencka), czy może istnieje bardziej konwencjonalne podejście, które mogę zastosować?


title: Edycja plików CSS dla zespołów? (jak nie stawać sobie na nogach?!)

text: Zastanawiam się, czy ktoś ma dobre rozwiązanie, gdy pracujesz jako zespół i w całym projekcie jest używany jeden plik (np. Plik styles.css) i wszyscy muszą go używać przez cały dzień - nieuchronnie ktoś zrobi zmiany i zapisz bez wcześniejszego pobierania najnowszej wersji. Czy istnieje jakiś program do edycji grup dla Windows/web? Obecnie uzyskujemy dostęp do plików CSS przez FTP i edytujemy je w naszych zwykłych edytorach. Prawdopodobnie edytor, który może wczytywać i zapisywać zmiany w locie?


title: Programowanie SBCL w systemie Windows, w tym CFFI

text: Zostałem poproszony o zautomatyzowanie działania aplikacji Windows (WinForms), wykonując po drodze dość skomplikowaną analizę statystyczną. Moją pierwszą myślą byli zwykli podejrzani: .NET, C# i White lub AutoItX. Wtedy przyszło mi do głowy, że mógłbym spróbować alternatywnego stosu: SBCL, CFFI i AutoItX. W ten sposób mogłem pisać w języku, który lubię (Common Lisp), używając moich natywnych narzędzi programistycznych Linuksa poprzez SLIME i Swank. Stąd moje pytanie: czy jest jakiś powód, dla którego nie powinienem tego próbować? Jestem nowicjuszem w Common Lisp i zasadniczo nie mam doświadczenia w CL FFI lub SBCL w systemie Windows. Krzywa uczenia się nie stanowi jednak problemu. Martwię się, że ktoś mógł spróbować czegoś takiego w przeszłości i odkrył problemy nie do pokonania. Moja lista obaw obejmuje: * stabilność / kompletność CFFI na SBCL w systemie Windows * uzyskanie SLIME w systemie Linux rozmawianie z SBCL działającym na komputerze z systemem Windows Jakiekolwiek doświadczenie, porady lub ostrzeżenia dotyczące dowolnego aspektu proponowanego przeze mnie stosu byłyby bardzo mile widziane.


title: strategia rozwoju kariery dla uzupełnienia 0+ lat OO PHP

text: Zacząłem programować w PHP jakiś czas przed ostatnimi świętami Bożego Narodzenia. Wcześniej zajmowałem się rozwojem w programie Access/VBA (1-2 lata). Mam tytuł licencjata z historii sztuki i magistra kompozycji muzycznej. Studiowałem OOP z PHP 5.3, Zend Framework i kilkoma podręcznikami wzorców projektowych i zaczynam czuć się swobodnie, biegle. Niestety pracuję w banku. Mówię niestety po prostu dlatego, że tak naprawdę nie pełnię roli technicznej w dobrej wierze w banku (chociaż mój menedżer naprawdę wspiera moją pracę rozwojową, prawdopodobnie ponieważ pracuję za orzeszki ziemne), a większość wakatów tutaj ubiegałabym się są dla .Net lub Java. Naprawdę dobrze się bawię i kończę moją pierwszą kompletną aplikację ZF tutaj w pracy. Ale jestem w punkcie, w którym chciałbym zacząć uczyć się czegoś innego i nowego. Chcę się tym ekscytować, ale chcę też podejść do tego realistycznie/strategicznie, ponieważ nie udało mi się znaleźć „prawdziwej” pracy programisty i to jest mój cel (nie obchodzi mnie, w jakim języku, lub nawet w jakim środowisku pracy w tym momencie — nie mam jeszcze żadnego doświadczenia w pracy jako programista, aby wiedzieć, co lubię najbardziej, szczerze. Po prostu wiem, że muszę być teraz częścią zespołu — koniec pracy sam w ciemności). Słyszałem, jak ludzie mówią, że najlepiej jest nauczyć się kilku języków zamiast trzymać się tego samego (zwłaszcza jeśli z jakiegoś powodu jest to PHP). Ale słyszałem też coś przeciwnego. Moje pytanie dotyczy tego: co najlepiej uzupełnia ponad 0-letnie doświadczenie zawodowe programisty PHP, który chce nauczyć się czegoś nowego, ale dąży do tego, aby być dostępnym na rynku? Czy powinienem nauczyć się innych narzędzi PHP, takich jak Drupal, Joomla, Wordpress? A może powinienem nauczyć się innego języka skryptowego, takiego jak Groovy, Python lub Ruby? A może powinienem wybrać język bardziej podobny do Java lub C# (lub nawet Objective-C)? Tak czy inaczej, będę się dobrze bawić, chcę tylko mieć pewność, że nie dywersyfikuję za bardzo (lub za mało), zmniejszając moje szanse na pierwszy prawdziwy koncert. Jak powinienem zrobić, aby stać się dostępnym na rynku?


title: Słownictwo: Czy powinienem nazwać to zastosowaniem czy mapą?

text: Tak więc mam za zadanie uporządkować kod i zbudować bibliotekę z całym wspólnym kodem wśród naszych produktów. Jedna rzecz, która wydaje się zdarzać cały czas i chciałem streścić, jest zamieszczona poniżej w pseudokodzie i nie wiem, jak to nazwać (różne produkty mają różne implementacje specyficzne dla domeny i nazwy dla tego) funkcja list idk_what_to_name_it (list list_of_callbacks, value common_parameter ): list list_of_results = nowa lista for_each(callback w list_of_callbacks) list_of_results.push(callback(common_parameter)) end for_each return list_of_results funkcja końcowa Czy nazwałbyś tę konkretną konstrukcję listą ListOfCallbacks.Map(wartość wartość lub lepiej byłoby to_mapować) być wartością Value.apply(list list_of_callbacks) Jestem naprawdę ciekaw tego rodzaju rzeczy. Czy istnieje standardowy przewodnik po tych rzeczach?


title: Jak znaleźć optymalną ścieżkę do każdego węzła z równoległymi pracownikami, komplikowanymi przez dynamiczne koszty krawędzi?

text: Załóżmy, że masz acykliczny graf skierowany z ważonymi krawędziami i tworzysz N pracowników. Moim celem jest obliczenie optymalnego sposobu, w jaki pracownicy mogą przejść przez cały wykres równolegle. Jednak koszty brzegowe mogą się po drodze zmienić. Przykład: A -1-> B A -2-> C B -3-> C (jeśli A zostało już odwiedzone) B -5-> C (jeśli A nie zostało jeszcze odwiedzone) Czy to, co opisuję, nadaje się do standardu podejście algorytmiczne, czy alternatywnie może ktoś zasugerować, czy patrzę na to w sposób z natury wadliwy (mam intuicję, że mogę być)?


title: Używanie listy krotek a listy niestandardowych obiektów

text: Mam sytuację, w której mam kilka dokumentów tekstowych i chcę stworzyć listę zawierającą słowa w tych dokumentach. Ale muszę też zapisać kilka właściwości każdego słowa. Te właściwości to: * Indeks słowa we wszystkich słowach w dokumentach (Integer) * Samo słowo (String) * Dokument, w którym to słowo się znajduje (Integer) * Wartość tematu związana z tym słowem (Integer) Mogę pomyśl o dwóch sposobach na zrobienie tego. Pierwszym z nich jest po prostu utworzenie listy krotek w formie (słowo,dokument,temat), gdzie indeks słowa jest podany przez indeks krotki na liście. Moim drugim pomysłem jest stworzenie klasy słów, w której podane właściwości są zmiennymi składowymi w klasie. Następnie po prostu utwórz listę obiektów z tej klasy. Więc moje pytanie brzmi, które jest najlepsze rozwiązanie - lista krotek czy lista obiektów słownych? Pokrewnym pytaniem jest, jakie są sytuacje, w których którekolwiek z tych podejść jest lepsze?


title: Przechowujesz edytowalną zawartość witryny?

text: Mamy witrynę opartą na Django, dla której chcieliśmy, aby część treści (tekst i logika biznesowa, taka jak plany cenowe) była łatwa do **edycji we własnym zakresie** , więc zdecydowaliśmy się przechowywać ją poza bazą kodu. Zwykle powodem jest jeden z następujących: * To coś, co **osoby nietechniczne** chcą edytować. Jednym z przykładów jest copywriting na stronę internetową – programiści przygotowują szablon z tekstem, który domyślnie brzmi „Lorem ipsum...”, a rzeczywista treść jest wstawiana później do bazy danych. * To coś, co chcemy móc szybko zmienić, **bez konieczności wdrażania nowego kodu** (co obecnie robimy dwa razy w tygodniu). Przykładem mogą być funkcje dostępne obecnie dla klientów na różnych poziomach cenowych. Zamiast zakodować je na stałe, odczytujemy je z bazy danych. Opisane rozwiązanie jest elastyczne, ale są powody, dla których mi się nie podoba. * Ponieważ zawartość musi być odczytana z bazy danych, istnieje **narzut wydajności**. Ograniczamy to, stosując schemat buforowania, ale to również zwiększa złożoność systemu. * Deweloperzy, którzy uruchamiają kod lokalnie, widzą system w znacznie **innym stanie** w porównaniu do tego, jak działa w środowisku produkcyjnym. Testy automatyczne również sprawdzają system w innym stanie. Sytuacje, takie jak testowanie nowych funkcji na serwerze pomostowym, również stają się trudniejsze — jeśli serwer pomostowy nie ma najnowszej kopii bazy danych, może ona nieoczekiwanie różnić się od produkcyjnej. Moglibyśmy to złagodzić, wprowadzając okazjonalnie nowy stan do repozytorium (np. dodając migracje danych), ale wydaje się to złym podejściem. Czy to jest? Jakieś pomysły, jak najlepiej rozwiązać te problemy? Czy istnieje lepsze podejście do obsługi zawartości, którą przeoczam?


title: Korzystanie z adresów URL Hash Bang. Najlepsze praktyki? Najlepsze biblioteki? Ważne pułapki?

text: WIĘC mam zamiar stworzyć nową witrynę i chciałbym się tym zająć, tworząc aplikację internetową, która analizuje adresy URL /#!/ i żąda odpowiedniej zawartości za pośrednictwem wywołań AJAX do interfejsu API JSON, który jest już złożony. Moje pytania to... 1. Jakie są najlepsze praktyki dotyczące #! url's 2. Czy są jakieś dobre biblioteki JavaScript, które są zbudowane do obsługi routingu i historii? czy powinienem rzucić własną? 3. Jakie są pułapki, o których powinienem wiedzieć? Proszę nie "/#!/ url łamią internet!" komentarze , Przeczytałem artykuł Mike'a Daviesa oraz ten i ten drugi. Chcę usłyszeć od osób, które już wdrożyły tego typu strukturę url i mogą mi opowiedzieć o swoich doświadczeniach.


title: Klasa menedżera/kontenera a metody klas statycznych

text: Załóżmy, że mam klasę Widget, która jest częścią frameworka używanego niezależnie przez wiele aplikacji. Tworzę instancje Widget w wielu sytuacjach, a ich czasy życia są różne. Oprócz metod określonych dla instancji Widget, chciałbym móc wykonać następujące operacje na całej klasie: * Znajdź pojedynczą instancję Widget na podstawie unikalnego identyfikatora * Iteruj po liście wszystkich Widgetów * Usuń widżet z zestawu wszystkich widgets Aby obsługiwać te operacje, rozważałem dwa podejścia: 1. **Container class** \- Utwórz jakiś kontener lub klasę menedżera WidgetContainer, która przechowuje listę wszystkich instancji Widgetów, obsługuje iterację i udostępnia metody dodawania Widgetów , usuwanie i wyszukiwanie. Na przykład w C#: public class WidgetContainer : IEnumerable&ltWidget;> { public void AddWidget(Widget); publiczny widżet GetWidget (identyfikator widżetu); public void RemoveWidget (identyfikator widgetu); } 2. **Metody klas statycznych** \- Dodaj metody klas statycznych do widgetu. Na przykład: public class Widget { public Widget(WidgetId id); publiczny statyczny Widget GetWidget(WidgetId id); public static void RemoveWidget(WidgetId id); publiczny statyczny IEnumerable&ltWidget;> AllWidgets(); } Użycie klasy kontenera wiąże się z dodatkowym problemem dostępu do klasy kontenera. Czy to singleton?..fuj! Utworzyć jakiś obiekt World, który zapewnia dostęp do wszystkich takich klas kontenerów? Widziałem wiele frameworków, które używają podejścia klasy kontenera, więc jaki jest ogólny konsensus?


title: Jaki jest najlepszy wzorzec projektowy do sprawdzenia pod kątem cykli podczas modelowania wirtualnej płytki drukowanej?

text: Dla uproszczenia załóżmy, że masz tylko bramki AND i OR. Każdy ma dwa wejścia i jedno wyjście. Wyjście dwóch wejść może być wykorzystane jako wejście dla kolejnej bramki Na przykład: A AND B -> E C AND D -> F E OR F -> G Zakładając dowolną liczbę bramek, chcemy sprawdzić, czy układ kiedykolwiek się połączy z powrotem w siebie we wcześniejszym stanie? Na przykład: E AND F -> A To powinno być nielegalne, ponieważ tworzy nieskończony cykl. Jaki wzorzec projektowy najlepiej sprawdziłby się pod kątem tych cykli?


title: Konstrukcja MVC, singleton w modelu z inicjalizacją

text: Niedawno dowiedziałem się o MVC (kontroler widoku modelu) i próbuję dokonać refaktoryzacji istniejącego programu. Jestem w sytuacji, w której chciałbym mieć dokładnie jeden obiekt danej klasy, więc wydawało mi się oczywiste, że powinienem użyć singletona. Ten singleton będzie używany do przechowywania hashmap pewnych rzeczy. Jednak ten hashmap będzie musiał zostać zainicjowany, gdy singleton zostanie utworzony przez odczytanie węzłów z pliku xml i przechowywanie ich jako obiektów klasy. Teraz mam dylemat: 1. Jeśli inicjuję atrybuty xml (odczytywanie i konwertowanie na obiekty klasy), efektywnie robię rzeczy w klasie modelu, które powinien robić kontroler, co zdecydowanie nie jest dobre. 2. Jeśli umieściłbym metodę inicjalizacji w klasie kontrolera, musiałbym odwołać się do klasy kontrolera z klasy modelu, która nie jest zgodna z projektem MVC. 3. Jeśli umieściłbym cały singleton w kontrolerze, musiałbym szukać hashmap w pakiecie kontrolera, co jest sprzeczne z celem posiadania klas modeli. 4. Nie mogę też przekazać gotowego hashmap do singletona jako parametru, ponieważ konstruktor jest prywatny.. Cóż, technicznie mógłbym, podając go jako parametr do metody getInstance(), ale wydaje się to brudne sposób naprawy, ponieważ teraz albo przekazuję null za każdym razem, albo tworzę inną metodę getInstance(), która nie akceptuje parametru. W tej chwili mój kod wygląda tak: public class CategoryCatalog{ private static CategoryCatalog categoryCatalog; private HashMap<CarOptionCategory, Ustaw<ICarOption>> categoryOptionsMap; private CategoryCatalog(){ categoryOptionsMap = new HashMap<CarOptionCategory, Set<ICarOption>>(); zainicjować(); } public static CategoryCatalog getInstance(){ if(categoryCatalog == null){ categoryCatalog = new CategoryCatalog(); } zwróć kategorięKatalog; } private void initialize(){ // TODO: xml } } Czy coś przeoczam, czy powinienem zastosować inne podejście?


title: Jeśli przechowywany proc spróbuje zrobić więcej, próbując uniknąć narzutu php mysql tam iz powrotem

text: Mam architekturę REST, z uruchomionym PHP po stronie serwera, który przechowuje i wysyła zapytania do bazy danych Mysql. Ponownie oceniam jedną decyzję dotyczącą projektu architektury: **DECYZJA** do ponownej oceny: Próbując uniknąć narzutu komunikacji między PHP a Mysql: 1. Dla niektórych żądań przeglądarki (na przykład: 'GET /sessions/ 4'), jedno żądanie wymaga dużej odpowiedzi z powiązanymi linkami obiektów. 2. W takich sytuacjach zaprojektowałem kilka dużych procedur składowanych mysql, aby wysyłać zapytania do wielu tabel. Dlatego dla jednego żądania przeglądarki PHP uruchamia tę jedną procedurę składowaną Mysql, która jest wykonywana. Przy odbiorze wyników PHP mój kod PHP przechodzi przez każdy pakiet wyników zapytania, aby utworzyć obiekty i połączyć je logicznie. 3. Pod koniec tego procesu PHP wysyła zapytanie do moich wewnętrznych obiektów widoku logicznego, aby skonstruować sformatowaną odpowiedź zwróconą na żądanie przeglądarki. 4. Alternatywą byłoby zażądanie wielu procedur składowanych i uruchomienie każdej z nich w PHP zamiast w ramach tej jednej procedury składowanej. **PROBLEMY** : Zarządzanie zmianami z biegiem czasu staje się dość trudne. Te procedury składowane stają się trudne do utrzymania, ponieważ każda zmiana tabeli ma wpływ na jedną z nich. **PYTANIE** : Zacząłem ten projekt, ponieważ wiele frameworków generowanych w kodzie jest krytykowanych za brak wydajności w komunikacji między warstwą PHP i Mysql. Wykonując te procedury składowane ręcznie, spodziewałem się, że uzyskam najlepszą wydajność w produkcji, jednak konserwacja zaczyna być denerwująca. Czy prawdziwa architektura o wysokiej wydajności próbuje ograniczyć liczbę komunikacji PHP-(procedura składowana Mysql) tam iz powrotem, czy też próbuję otoczyć fałszywy problem? Dziękuję


title: Jak lookahead są propagowane w „kanałowej” metodzie budowania parsera LALR?

text: Metoda jest opisana w Dragon Book, jednak przeczytałem o niej w ""Technikach Parsingu" autorstwa D.Grune'a i C.J.H.Jacobsa. Zaczynam od mojego zrozumienia budowania kanałów dla NFA: 1. kanały są budowane raz, są jak kanały wodne z prądem 2. „upuszczasz” symbole wyprzedzające w odpowiednich miejscach (źródłach) kanału i propagują się z „prądem” 3. gdy symbol się propaguje, nie ma barier (jedyne rzeczy wystarczające do propagacji to obecność kanału i kierunku/prądu); tj. lookahead nie może po prostu umrzeć znikąd Czy to prawda? Jeśli mam rację, to `eof` lookahead powinno być obecne we wszystkich stanach, ponieważ jego źródłem jest początek produkcji, a wszystkie inne stany produkcji są osiągalne od stanu początkowego. Nie jest dla mnie do końca jasne, w jaki sposób DFA jest zrobiony z tego NFA – autorzy wspomnianej książki piszą o zachowaniu kanałów, ale nie widzę sensu, jeśli propagujesz lookaheads. Jeśli kanały muszą być zachowane, czy są one odcięte od źródła, jeśli stan DFA nie obejmuje źródłowego stanu NFA? Zakładam, że nie – kanały nadal działają między stanami DFA, nie tylko w obrębie danego stanu DFA. W efekcie `eof` nadal powinno być obecne we wszystkich pozycjach we wszystkich stanach. Ale gdy spojrzysz na DFA przedstawione w książce (pdf pochodzi z erraty): DFA dla LALR (rys. 9.34 w książce, s.301) zobaczysz, że w lookahead są pozycje bez `eof`. Gramatyka dla tego DFA to: S -> E E -> E - T E -> T T -> ( E ) T -> n Więc jak to zostało obliczone, kiedy zostało usunięte `eof` i na jakich warunkach? ## Update Jest to tekstowy pdf, więc dwa interesujące stany (w DFA; `#` to `eof`): Stan 1: S--- >•E[#] E--- >•E-T[#-] E --- >•T[#-] T--- >•n[#-] T--- >•(E)[#-] Stan 6: T--- >(•E)[#-) ] E--- >•E-T[-)] E--- >•T[-)] T--- >•n[-)] T--- >•(E)[-)] Łuk od 1 do 6 jest oznaczony `(`.


title: Czy można bezpiecznie modyfikować źródła w repozytorium, gdy git svn dcommit jest w toku?

text: Mam duże repozytorium i `git svn dcommit` zajmuje sporo czasu. Czy moje repozytorium będzie w stanie spójnym, jeśli zmodyfikuję źródła (bez żadnych operacji git), gdy dcommit jest w toku?


title: Dlaczego nagły wzrost liczby osób przesyłających Git na wykresie popcon Debiana w latach 2010-01?

text: Prawie każdy artykuł, który przeczytałem 1 porównujący Git i Mercurial, wydaje się, że Mercurial ma lepszy UX wiersza poleceń, a każde polecenie jest ograniczone tylko do jednego pomysłu (w przeciwieństwie do powiedzmy `git checkout`). Ale w pewnym momencie Git nagle stał się bardzo popularny i liczba użytkowników Git na wykresie popcon Debiana (patrz obraz wykresu poniżej) dosłownie eksplodowała. ![Git kontra popularność Mercurial](http://i.stack.imgur.com/nq8qW.png) Źródło: Debian Co wydarzyło się w latach 2010-01, wszystko nagle się zmieniło. Wygląda na to, że GitHub został założony wcześniej – w 2008 roku.


title: Wnioskowanie o typach w Javie 8

text: Czy wprowadzenie nowej notacji lambda (patrz np. ten artykuł) w Javie 8 będzie wymagało pewnego rodzaju wnioskowania o typie? Jeśli tak, w jaki sposób nowy system typów wpłynie na język Java jako całość?


Czy znasz scenariusz, w którym asp.net mvc może przewyższyć asp.net? Ponieważ porównując te dwa, ludzie zawsze mówią, że każda z nich to inne bestie i może być lepszym wyborem w zależności od scenariusza.


title: Czy kolejność komunikatów TCP jest nadal gwarantowana podczas korzystania z asynchronicznego we/wy?

text: Oto scenariusz, który sobie wyobrażam. Przesyłane są dwie wiadomości, każda będzie wymagać 2 pakietów (wiem, że nie zajmujesz się pakietami bezpośrednio przez TCP, ale na poziomie IP każda wiadomość będzie składać się z 2 pakietów [lub segmentów, jak są one nazywane w TCP]). Problem, który przedstawiam, buforuje pierwszy pakiet pierwszej wiadomości, ale router z jakiegoś powodu zrzuca drugi pakiet. Ponieważ jest to TCP, drugi pakiet jest gwarantowany do ponownego wysłania i wiem, że TCP przekaże te dwa pakiety w kolejności do warstwy aplikacji. Ale mimo że jest obsługiwany asynchronicznie, ten pierwszy pakiet będzie nadal przekazywany do aplikacji, która nie będzie blokować w okresie, w którym podstawowa warstwa TCP obsługuje retransmisję drugiego pakietu. Co się stanie, jeśli pierwszy pakiet drugiej transmisji dotrze przed ostatnim pakietem pierwszej transmisji? Czy TCP nie przekaże tych pakietów, dopóki pierwsza transmisja nie zostanie w pełni obsłużona? Czy klient asynchroniczny nie wyśle drugiej wiadomości, zanim pierwsza zostanie w pełni obsłużona? Wiem, że TCP zagwarantuje kolejność pakietów dla każdej wiadomości. Moje wątpliwości polega na tym, czy w przypadku obsługi asynchronicznej zostanie w pełni ukończona jedna transmisja przed przetworzeniem drugiej transmisji.


title: Najlepsza książka do nauki celu C dla doświadczonych programistów

text: Jestem doświadczonym programistą C#/C++. Jaka jest najlepsza książka do nauki Celu C dla programistów takich jak ja? PS: Interesuje mnie programowanie na iPhone'a.


title: Jakiej funkcji lub metody mogę użyć, aby równomiernie rozłożyć obciążenie?

text: To bardziej pytanie matematyczne niż algorytmiczne; niemniej jednak zostanie zaimplementowany w php. Mam szereg N zadań. Każde zadanie zajęło t czasu (np. zadanie 1 zajęło 5 godzin). Teraz, aby sprawdzić, czy te zadania zostały wykonane poprawnie, muszę przydzielić określoną liczbę użytkowników U do sprawdzenia każdego z nich. Każdemu użytkownikowi zostanie przydzielona określona liczba zadań, najlepiej, przy czym każdy użytkownik ma mniej więcej taką samą liczbę godzin przydzielonych jak inni. NP. Jest 10 zadań. zadanie 1 zajęło 4 godziny, zadanie 2 zajęło 18 godzin, zadanie 3 zajęło 6 godzin... itd... w sumie 80 godzin. Jest 8 użytkowników. Jeśli każdy z 8 użytkowników ma w idealnym przypadku mieć taką samą liczbę godzin (niektórzy dostają więcej, ale mniej dłuższych zadań, inni mniej, ale dłuższe zadania), jaki jest dobry sposób na automatyczne sortowanie przydzielonych zadań?


title: Tworząc stronę internetową. Jak śledzić stale rosnący zestaw parametrów adresów URL i oczekiwanych wartości?

text: Strona, którą tworzę, staje się coraz większa pod względem funkcjonalności. Co oznacza, że jest więcej parametrów adresu URL, które są przekazywane ze strony A do B lub B do C itd. Czy ktoś ma jakieś wskazówki, jak śledzić i używać kluczy parametrów i oczekiwanych wartości? Były. Powiedz, że adres URL, który muszę zbudować to `www.example.com?type=this&mode=a` Czy istnieje jakiś system, który pozwoli mi łatwo śledzić fakt, że klucz parametru „type” to w rzeczywistości „type "? Starałem się trzymać je wszystkie w stałej klasie, ale ta klasa szybko wymknęła się spod kontroli. public class URLParameters { public static final String TYPE = "type" ; public static final String MODE = "tryb" ; //więcej "kluczy" public static class Wartości { public static final String TYPE_THIS = "this" ; public static final String TYPE_THAT = "to" ; publiczne statyczne końcowe String MODE_PRIMARY = "a" ; publiczne statyczne końcowe String MODE_SECONDARY = "b" ; //więcej oczekiwanych wartości } }