title: Co zapobiega sytuacji wyścigu na zamku?

text: Rozumiem podstawy tego, czym są wyścigi danych i jak blokady/muteksy/semafory pomagają im zapobiegać. Ale co się stanie, jeśli masz „warunek wyścigu” na samym zamku? Na przykład dwa różne wątki, być może w tej samej aplikacji, ale działające na różnych procesorach, próbują uzyskać blokadę _dokładnie w tym samym czasie_. Co się wtedy stanie? Co się robi, aby temu zapobiec? Czy to niemożliwe, czy po prostu nieprawdopodobne? A może jest to _prawdziwy_ stan wyścigu, który czeka, aby się wydarzyć?


title: Delegacja i MetaClass w C++

text: Na naszej uczelni mamy kurs OOP, podczas omawiania koncepcji natknąłem się na MetaClass i Delegation. O ile wiem, nie istnieją one w C++. Czy ktoś mógłby podać przykład, dzięki któremu lepiej zrozumiem, jak je symulować.


title: Nagłówek odpowiedzi HTTP dla unikalnego identyfikatora żądania dla usługi REST

text: Dla naszej usługi REST chcę odesłać unikalny identyfikator żądania z każdą odpowiedzią; przydatne do debugowania projektów wewnętrznych, ale także do oferowania wsparcia osobom trzecim, które mogą korzystać z usługi w przyszłości. Zdecydowałem, że muszę użyć nagłówka odpowiedzi, ponieważ nie wszystkie żądania REST muszą skutkować treścią odpowiedzi (często interfejsy API REST niższego poziomu wykorzystują wyłącznie kod statusu i opis), ale nadal musiałbym odesłać to żądanie ID. Jeśli to możliwe, chcę się upewnić, że używam nagłówka odpowiedzi HTTP, który jest _mało prawdopodobne_, że zostanie usunięty przez jakiekolwiek serwery proxy po drodze. Może to być bardzo ważne, ponieważ duża liczba klientów będzie prawdopodobnie urządzeniami mobilnymi z „interesującą” topologią sieci między nimi a naszymi serwerami. Jednak te same usługi będą prawdopodobnie sprzedawane innym firmom z własnymi korporacyjnymi zaporami/serwerami proxy. Z tego powodu w zasadzie odrzuciłem pomysł używania niestandardowego nagłówka odpowiedzi na rzecz dobrze znanego nagłówka. Moim aktualnym, dobrze znanym nagłówkiem, który wygrałby, byłby nagłówek `ETag`, ale chociaż jest _prawie_ słuszny, to nie do końca — ponieważ `ETag` dotyczy zasobu, a nie żądania (tj. dwa oddzielne żądania dla tego samego zasobu zostaną zwrócone zgodnie z prawem ten sam „ETag”). Co więcej, jeśli tego użyję, będzie to oznaczać, że nie mogę zrobić żadnego tagowania jednostek dla niczego innego. Czy ktoś ma lepsze pomysły? _Aktualizacja_ Wygląda na to, że można użyć nagłówka Pragma, ale mam problemy z pisaniem do niego w ramach interfejsu Asp.Net WebAPI. Oto powiązane pytanie na SO.


title: Czy powinienem obliczyć gorąco postu na życzenie, czy wstępnie obliczyć?

text: Oto gorący algorytm Reddita: cpdef double _hot(długie wzrosty, długie spadki, podwójna data): """Gorąca formuła. Powinna odpowiadać równoważnej funkcji w postgresie.""" s = score(wzrosty, spadki) kolejność = log10 (max(abs(s), 1)) if s > 0: znak = 1 elif s < 0: znak = -1 else: znak = 0 sekund = data - 1134028003 return round(order + sign * sekundy / 45000, 7 ) Mój mózg mówi, że gorąco postu powinno być obliczane na każde żądanie, ponieważ stare posty powinny mieć niski wynik atrakcyjności. Zaimplementowałem tę funkcję w MySql, ale jak można się domyślić, jest powolna. Są tam bardzo wolne indeksy parzyste. A potem myślę, aby zaktualizować pole hotness postu przy każdym głosowaniu za lub przeciw postu. Załóżmy, że właśnie opublikowaliśmy post, który ma 100 głosów za i 1 przeciw, a jego popularność to 78 (przykład). Ale przez 3 dni nie dostaje żadnych głosów. Po 3 dniach pojawia się nowy post, który otrzymuje 100 upvotes i 1 downvote i ma 78 punktów. Jeśli aktualizuję wynik popularności na głosach, post sprzed 3 dni i nowy post będą wyświetlane razem. Ale teoretycznie post sprzed 3 dni nie powinien nawet pojawiać się na stronie głównej. Jaka jest najbardziej opłacalna metoda do wdrożenia w tej sytuacji?


title: Jak upewnić się, że aplikacja kliencka .net nie została zhakowana w celu ominięcia oświadczeń autoryzacyjnych?

text: Napisaliśmy prostą aplikację desktopową .NET (C#) w Wpf. Użyliśmy również WIF (Windows Identity Framework), aby uzyskać listę oświadczeń dla uwierzytelnionego użytkownika. Oto kilka przykładów: * CanOverrideSalesAmount * CanAddContact * itp. Działa to dobrze i klient wydaje się bardzo chroniony. Ale kiedy debugowałem aplikację, przyszło mi do głowy, że cała autoryzacja dzieje się po stronie klienta. Przebiegła osoba może użyć narzędzia takiego jak Snoop, aby podłączyć się do aplikacji i wprowadzić zmiany w modelu domeny, których nie powinna robić. Pomyśleliśmy o przeniesieniu kontroli autoryzacji do ustawiaczy właściwości, ale nawet to nie jest wystarczająco dobre, ponieważ gdy serializujemy graf obiektów w celu wysłania przez przewód, serializowane dane mogą zostać zmienione (daleko pobrane, ale nadal możliwe). Wydaje mi się, że jedynym prawdziwym sposobem ochrony mojego wykresu obiektów jest umieszczenie go tylko na serwerze i wywołanie przez klienta jego aktualizacji, ale wydaje się to przesadą. Czy istnieje lepszy sposób na poradzenie sobie z tą sytuacją? Chcę, aby nasza aplikacja była jak najbardziej bezpieczna.


title: Zespół początkującego testowania jednostek musi przeprowadzić testy jednostkowe

text: Pracuję z nowym zespołem, który w przeszłości nie przeprowadzał ŻADNYCH testów jednostkowych. Moim celem jest, aby zespół _ostatecznie_ zastosował TDD (Test Driven Development) jako swój naturalny proces. Ale ponieważ TDD jest tak radykalną zmianą umysłu dla zespołu niebędącego testerem jednostkowym, pomyślałem, że po prostu zacznę od pisania testów jednostkowych po kodowaniu. Czy ktoś był w podobnej sytuacji? Jaki jest skuteczny sposób, aby zespół czuł się komfortowo z TDD, jeśli nie przeprowadzał żadnych testów jednostkowych? Czy ma sens zrobienie tego w kilku krokach? A może powinniśmy od razu zanurkować i stawić czoła wszystkim rosnącym bólom? **EDYTUJ** Tylko dla wyjaśnienia, nie ma nikogo w zespole (poza mną), który ma JAKĄKOLWIEK ekspozycję / doświadczenie w testowaniu jednostek. Planujemy też korzystać z wbudowanej w Visual Studio funkcji testowania jednostkowego.


title: System zarządzania czasem na komputerach lokalnych

text: Zamierzam stworzyć „aplikację” do zarządzania czasem, którą będzie można pobrać i używać indywidualnie w całej mojej firmie. Teoretycznie ta aplikacja byłaby używana do śledzenia czasu spędzonego na kilku różnych projektach, dlatego potrzeba przechowywania/śledzenia czasu na podstawie nazwy użytkownika lub identyfikatora pracownika wydaje się być najlepszą trasą. Chciałem to zrobić za pośrednictwem C# WPF. Moje zamieszanie wynika z architektury: czy po pobraniu wdrażam osobną bazę danych? A może hostuję jedną główną bazę danych umieszczoną na kliencie/serwerze, z którego może korzystać cała firma? Z mojego punktu widzenia - niekoniecznie widzę jakiekolwiek obawy o prywatność lub potrzebę systemu zarządzania logowaniem. Po prostu nazwa użytkownika (jako PK), nazwa projektu, godziny i data byłyby zasadniczo wszystkimi polami w tabeli. Chociaż mówię, że zamierzam zbudować go do użytku wewnętrznego w mojej firmie, w rzeczywistości nie będzie on używany przez firmę - tylko do osobistego śledzenia projektu. Dane te prawdopodobnie nie będą wykorzystywane (chyba że firma tego wymaga) przez kogokolwiek innego niż osoba uczestnicząca w projekcie.


title: Czy powinienem obciążyć klienta za błędy, które popełniłem?

text: Po opracowaniu strony internetowej dla klienta zdałem sobie sprawę, że czas ładowania jest zbyt ekstremalny i trzeba wprowadzić pewne zmiany. Ekstremalne czasy ładowania są przypisywane rozdętym frameworkom css/js, których używałem. Znaczna część kodu, który został dołączony do tych platform, nie jest nawet używana i spowalnia czas ładowania witryny. Moim planem jest pozbycie się frameworka css i po prostu użycie responsywnego frameworka css, który ma rozmiar tylko 1kb i po prostu dodaj tylko potrzebny kod. Więc moje pytanie brzmi, czy powinienem obciążyć klienta za cofnięcie się i naprawienie tego błędu?


title: Kolejny krok po stworzeniu makiet

text: Stworzyłem kilka makiet dla mojej aplikacji w HTML/CSS. Łącznie mam 4 ekrany. Nie zawierają kodowania po stronie klienta, tj. Javascript lub jQuery. Same ekrany są w tej chwili dość nijakie i zdaję sobie sprawę, że wymagają dalszej pracy. Niektóre z moich planów na przyszłość to: - Wprowadzenie szablonów po stronie klienta: np. Mustache/Dust.js * Dodanie efektów i przejść za pomocą jQuery * Poprawa wyglądu ekranów (poprzez css i obrazy) Jestem niezdecydowany co do najlepszej drogi naprzód. Moim głównym celem jest, aby zmiany były łatwe do zarządzania, dlatego najpierw wykonałem makiety, zgodnie z zaleceniem w książce _Getting Real_ autorstwa 37Signals. Obecnie jestem w trakcie zbierania opinii na temat ekranów makiet. Z punktu widzenia programowania, który z powyższych 3 kroków byłby dobrym logicznym krokiem naprzód, biorąc pod uwagę moje wymaganie łatwego zarządzania zmianami? Powinienem zaznaczyć, że programowanie i rozwój są dla mnie bardzo nowe i po raz pierwszy uczę się programowania. Niektóre terminy mogą nie mieć dla mnie sensu i być może będziesz musiał je rozwinąć.


title: Oprogramowanie do wymagań i przypadków użycia

text: Zajmuję się oprogramowaniem do modelowania UML, którego na rynku jest pod dostatkiem, ale tylko nieliczne, które znalazłem, obsługują rejestrację wymagań i pisemnych przypadków użycia (jeszcze nie schematy). Czy są jakieś narzędzia lub metody, które powinienem sprawdzić, aby tworzyć wymagania i przypadki użycia? A może powinienem po prostu odpalić program Word i utworzyć osobny dokument dla każdego przypadku użycia?


title: Jaka jest różnica między licencjami BSD i MIT?

text: Zakładam na podstawie tej odpowiedzi, że jedyną różnicą między MIT a BSD jest fakt, że MIT nie wymaga kredytów przy redystrybucji. Czy to prawda? Czy jest jakiś powód, aby używać jednego z drugim?


title: Efektywne zarządzanie informacjami na poziomie osobistym

text: Czy miałeś problemy z zarządzaniem informacjami i znalazłeś sposoby na efektywne zarządzanie informacjami? Kiedy mówię „zarządzaj”, mam na myśli przechowywanie, grupowanie, tagowanie, ustalanie priorytetów, wyszukiwanie, udostępnianie itp. Kiedy mówię informacje, mam na myśli linki do stron internetowych, kanały, filmy, e-maile, dokumenty, Twoje przemyślenia, zadania, spotkania itp. Trudno naprawdę nadać temu pytaniu lepszy kontekst bez napisania długiego (i być może nudnego) monologu, ale pozwólcie, że trochę wyjaśnię. Nie pytam koniecznie o przeciążenie informacjami (o to ostatnio pytano) lub jak napisać oprogramowanie lub bazy danych do zarządzania informacjami (oprogramowanie już istnieje). A kiedy mówię „osobiste”, nie mówię o twoim życiu miłosnym; Mówię o sposobach, w jakie osobiście zarządzasz informacjami w odniesieniu do Twojej pracy. To pytanie może być bardziej odpowiednie dla niezależnych konsultantów lub pracowników, którzy muszą żonglować i zarządzać wieloma zadaniami i informacjami w swojej pracy. Chciałbym usłyszeć o wszelkich narzędziach lub „metodach”, które Twoim zdaniem są skuteczne lub rewolucyjne, jeśli chodzi o zarządzanie informacjami.


title: Czy powinienem napisać test, aby udowodnić, że usunięcie kodu naprawia błąd?

text: Od czasu do czasu napotkam sytuację, w której naprawienie błędu wymaga _usuwania_ części kodu. Puryści z TDD poparliby (zakładam) napisanie nieudanego testu, usunięcie kodu, a następnie obejrzenie zdania testu. Teraz wydaje się to naprawdę dziwne, że test stwierdzający, że jakiś kod został usunięty. Jasne, przypuszczam, że zapewniłoby to, że nikt nie przekopał się do kontroli źródła i nie włożył tego kodu z powrotem, ale czy warto? Jeśli warto, to z pewnością wydaje się mniej wartościowe niż napisanie testu dla kodu, który został _dodany_ , prawda?


title: Jak poradzić sobie ze sprzecznymi osobowościami w zespole opartym na Scrum/Agile?

text: Stosujemy Scrum/Agile i mamy dwa zespoły. Drugi zespół ma konflikt interesów (a raczej osobowości) między dwoma deweloperami. Chciałbym pomóc w rozwiązaniu tego problemu i chciałbym wiedzieć, jak sobie z tym poradzić, jeśli kiedykolwiek zdarzy się to w moim zespole. Nie jestem liderem zespołu, ponieważ używamy płaskiej konstrukcji. Konflikt najczęściej ujawnia się podczas codziennych stand-upów oraz podczas retrospekcji end-sprint. Do tej pory nie było otwartych wybuchów krzyków ani nawet „przemocy”, ale przy obecnym tempie przypuszczam, że którekolwiek z nich może być nieuniknione. Konflikty dotyczą obszarów kodu lub standardów lub sposobów radzenia sobie ze Scrumem w projekcie. Żaden z członków zespołu nie myli się bardziej ani nie widzi bardziej niż drugi, więc wybór strony jest niemożliwy. Skutkiem tego podkreślającego konfliktu jest negatywny wpływ morale zespołu i początkujący, którzy nie czują się na tyle bezpiecznie, aby wydawać opinie lub zacząć przejmować swoje zadania z obawy przed zaangażowaniem się w taką lub podobną sytuację z seniorami. Zatem, z perspektywy Scrum/Agile, jak można / można by zrobić, aby deweloperzy odłożyli na bok różnice i ponownie pracowali jako cały zespół?


title: Czy najlepszą praktyką jest pisanie zawsze wielkimi literami nazw plików klas w PHP i innych językach?

text: Pytam, ponieważ widziałem kilka samouczków OO PHP, które nie trzymają się tego, ale dla mnie ma to sens. Ułatwia natychmiastowe sprawdzenie, czy plik jest klasą, czy nie, jeśli wszystkie pliki nie należące do klasy używają nazw pisanych małymi literami.


title: Jak (i gdzie) zorganizować zespół do wykonania strony internetowej?

text: Potraktuj to pytanie poważnie. Mam trochę pieniędzy i pomysłów i chciałbym zatrudnić programistów/grafików, aby zapisali moje pomysły na stronie internetowej. Mogłabym to wszystko zrobić sama, mam odpowiednią wiedzę, ale nie mam czasu. Teraz problem polega na tym, że jeśli zatrudnię dobrych programistów i powiem mu o moich pomysłach, kto zapewni mnie, że nie ukradnie mojego pomysłu i sam zbuduje stronę? (weź film z sieci społecznościowej) Najlepszą rzeczą do zrobienia byłoby stworzenie zespołu z przyjaciółmi i zrobienie tego, ale szczerze w moim mieście i w moim kraju moi przyjaciele mogą maksymalnie uruchomić komputer -> otwórz facebook.com Co byłyby twoje ruchy? Poza „ukradzioną częścią” chciałbym również poznać wskazówki dotyczące zarządzania zespołem


title: robienie notatek podczas czytania kodu źródłowego dużych projektów

text: Za każdym razem, gdy zaczynamy czytać kod źródłowy dużego projektu, często konieczne jest zanotowanie łańcuchów wywołań i odnotowanie powodu, na przykład, dla którego wybrano konkretny wzorzec kodu. Zauważyłem, że prymitywne narzędzia, takie jak arkusze A4, nie mają możliwości wycinania i wklejania ani znajdowania. Rozważ pracę z bardzo prostym edytorem, takim jak wiersz poleceń (takim jak `vim`/`emacs` lub `nano`) lub innymi prostymi środowiskami IDE, takimi jak `Geany`. Jakie są twoje metody robienia notatek, które pomogą ci śledzić fałdy kodu i – ummm – labirynty?


title: Jakich strategii używasz do migracji swojej witryny z Silverlight do HTML5 + JavaScript?

text: Firma Microsoft wydała Silverlight 5, ale nie było żadnych informacji o wydaniu jakichkolwiek przyszłych wersji (z wyjątkiem wydań usług). W połączeniu z rosnącą widocznością HTML5 i nowoczesnych bibliotek JavaScript, teraz ma sens rozpoczęcie przyjmowania nowej i powstającej technologii zamiast polegania na Silverlight, którego przyszłość jest wątpliwa. Biorąc to pod uwagę, jakie są strategie migracji, których używasz, aby odejść od Silverlight? Jakieś wnioski wyciągnięte do tej pory?


title: Czy aplety Java mają dziś miejsce w sieci?

text: Wiele przeglądarek domyślnie wyłącza teraz aplety Java, co wymaga ich włączania na poziomie każdej strony. Wygląda na to, że aplety niewiele się zmieniły w ciągu ostatnich kilku lat. W rzeczywistości wydaje się, że Java po stronie klienta (aplety, aplikacje komputerowe, ...) całkowicie umiera, a Java staje się przede wszystkim językiem po stronie serwera. Poza kwestiami kompatybilności, czy jest jakieś miejsce, w którym aplety są nadal przydatne w dzisiejszej sieci? Jako twórca stron internetowych, który jest zaznajomiony z Javą i JavaScriptem, dlaczego miałbym kiedykolwiek zdecydować się na użycie apletu zamiast jakiegoś JavaScript?


title: Czy CC0 zezwala na sublicencjonowanie utworów pochodnych?

text: Chcę wydać wszystkie moje przyszłe projekty FOSS na licencji "public domain", takiej jak CC0. Ma to na celu uniknięcie wymogu przypisania autorstwa obecnego w większości licencji FOSS, głównie wtedy, gdy kod jest skompilowany do postaci binarnej, ale także wtedy, gdy ktoś zdecyduje się skopiować małą część mojego kodu do własnego projektu open source. Załóżmy więc, że ktoś kopiuje metodę z mojego kodu do własnego, którą planuje wydać na licencji MIT. Aby zwolnić kod w ramach MIT, muszą rościć sobie prawa autorskie do kodu; ale czy mogą rościć sobie prawa autorskie do całości, jeśli część kodu nie była ich dziełem? Czy to oznacza roszczenie praw autorskich do dzieła pochodnego? Może wydawać się dziwne, że ktoś może wziąć fragment kodu z domeny publicznej, zmodyfikować go i zastosować nową licencję do zmodyfikowanej wersji, która nakłada dalsze ograniczenia na jego użycie, takie jak wymóg przypisania autorstwa MIT. Ale ponieważ ich dodatkowe ograniczenia dotyczyłyby tylko wersji zmodyfikowanej, a nie oryginalnej, wydaje się to uzasadnione. Moją główną troską jest maksymalizacja sposobów, w jakie ludzie mogą wykorzystać mój kod, bez martwienia się o wymagania licencyjne, a także uniknięcie efektu wirusowego polegającego na tym, że wszelkie prace pochodne muszą być objęte licencją CC0.


title: Czy ktoś może wyjaśnić Syndrom Bliźniaczych Programistów?

text: Zdaję sobie sprawę, że to dość dziwne pytanie, ale w ostatnich rundach zatrudniania zauważyliśmy dość dziwny trend wśród nowych programistów, który spektakularnie nie spełnia naszych oczekiwań. Tak bardzo, że pod każdym względem wydają się być zupełnie inną osobą niż osoba, z którą przeprowadzono wywiad i test. Wstępnie sprawdzamy kandydatów podczas ich wstępnej rozmowy kwalifikacyjnej dość nieprzyjemnym testem pisemnym PHP/MySQL, który sprawdza zarówno ich znajomość PHP/MySQL, jak i niektóre podstawowe aspekty projektowania aplikacji. Nie można uzyskać wysokich punktów w tym teście, po prostu zapamiętując podręczniki PHP i MySQL (popełniliśmy ten błąd w przeszłości). Jestem pewien, że nie jest to w żaden sposób niezawodne, ale ma wystarczyć do wyeliminowania tych, którzy wyraźnie kłamali w swoich życiorysach. Wnioskodawcy, którzy przejdą ten etap, otrzymują drugą rozmowę kwalifikacyjną, po której następuje 2 godzinny test praktyczny, podczas którego muszą opracować małą aplikację zgodnie z określoną specyfikacją. Niekoniecznie oczekuje się od nich wykonania zadania, ale ocenia się ich podejście do danego zadania. Już trzy razy zatrudniał „najlepszego” kandydata na podstawie rozmowy kwalifikacyjnej i wyników testów, a za każdym razem osoba, która stawiła się do pracy w pierwszy poniedziałek rano, była całkowicie pozbawiona umiejętności i doświadczenia, które wcześniej wykazała. Każdy z tych kandydatów uzyskał wynik ponad 90% na teście pisemnym i przekroczył nasze oczekiwania, gdy otrzymał praktyczne zadanie do wykonania. Stąd mój pomysł na frazę „Deweloper Twin Syndrome” Czy ktoś inny doświadczył podobnego trendu w zatrudnianiu programistów?


title: Czy współczesne języki nadal używają generatorów parserów?

text: Badałem pakiet kompilatora gcc na wikipedii, kiedy pojawiło się to: > GCC zaczęło używać parserów LALR generowanych przez Bison, ale stopniowo > przeszło na parsery rekurencyjne; dla C++ w 2004, a dla > C i Objective-C w 2006. Obecnie wszystkie frontendy używają ręcznie pisanych > parserów rekursywnych. Tak więc w tym ostatnim zdaniu (i na tyle, na ile ufam wikipedii) mogę zdecydowanie powiedzieć, że „C (gcc), C++ (g++), Objective-C, Objective-C++, Fortran (gfortran), Java (gcj), Ada (GNAT), Go (gccgo), Pascal (gpc),... Mercury, Modula -2, Modula-3, PL/I, D (gdc) i VHDL (ghdl)” to wszystkie interfejsy, które nie używają już generatora parsera. Oznacza to, że wszystkie używają ręcznie pisanych parserów. Moje pytanie brzmi zatem, czy ta praktyka jest wszechobecna? W szczególności szukam dokładnych odpowiedzi na pytanie „czy standardowa/oficjalna implementacja x ma odręczny parser” dla x w [Python, Swift, Ruby, Java, Scala, ML, Haskell]? (Właściwie, informacje na temat innych języków są również mile widziane.) Jestem pewien, że po wielu poszukiwaniach znajdę to sam. Ale jestem również pewien, że społeczność może na to łatwo odpowiedzieć. Dziękuję!


title: Korzystanie z Django bez bazy danych

text: Czy Django to dobre rozwiązanie do tworzenia aplikacji, które nie korzystają z żadnej bazy danych i komunikują się tylko poprzez wewnętrzne API?


title: Czy kompozycja funkcji Haskella jest instancją wzorca architektonicznego potoku i filtra?

text: Wzorzec architektoniczny potoku i filtra jest zdefiniowany jako łańcuch elementów przetwarzających, ułożonych w taki sposób, że dane wyjściowe każdego elementu są danymi wejściowymi następnego. Każdy przykład wydaje się uwzględniać połączenie między procesami lub między wątkami wykonywane przez jakiś rodzaj współdzielonego bufora. Wydaje mi się, że kompozycja funkcji Haskella wykonuje to samo zadanie. Czy możemy powiedzieć, że jest to instancja tego wzorca, nawet jeśli chodzi tylko o porządkowanie funkcji i nie jest używany jawny bufor jako potok? Jeśli tak, czy możemy powiedzieć to samo o nieleniwym języku?


title: Obsługa dynamicznej ilości ciągów do trwałego i wykonawczego przechowywania w aplikacji IOS

text: **Tło** Dynamicznie buduję zapytanie FQL i ze względu na charakter aplikacji wykluczam członków rodziny FB, jest to podstawowa część zapytania i pozostaje dość statyczna. Zapytanie zwraca zdjęcie profilu FB i wyświetlam je w interfejsie użytkownika. Jednak po wyświetleniu znajomych z FB w interfejsie użytkownika chcę dać użytkownikowi opcję wybrania zwróconego znajomego z FB, który nigdy nie zostanie zwrócony w przyszłych zapytaniach i zwrócenia nowego użytkownika w tym miejscu użytkownika Obecnie przechowuję drugiego zwróconego uid członka jest tymczasowym wykluczeniem w Mutable Array, aby zapobiec jednoczesnemu wyświetlaniu zduplikowanych członków na ekranie, przechowuję wykluczonego członka w innej zmiennej tablicy. Następnie buduję instrukcję zapytania dynamicznie wstawiając wykluczenie wszystkich identyfikatorów uid w tablicy tymczasowej i tablicy wykluczonej, a następnie zrzucam tablicę tymczasową po zwróceniu nowego użytkownika w miejscu, którego wybrali do wykluczenia. **Pytania** Jakie są zalecenia dotyczące następujących kwestii: 1. Przechowywanie tych wykluczonych identyfikatorów UID (ciągów) przez cały okres eksploatacji aplikacji? uciekaj się do trwałej metody przechowywania (dane podstawowe/sqlite) lub przechowuj w tablicy, która jest częścią obiektu użytkownika (NSUSer Defaults wydaje się złym wyborem, ponieważ ta lista może być potencjalnie bardzo długa) 2. Jakie są zalecenia dotyczące niektórych trwałych pamięć masowa, aby wykluczenia mogły zostać uwzględnione w zapytaniu po zamknięciu i uruchomieniu aplikacji (core data/sqlite/nsuserdefaults wydają się być jedynymi opcjami, userdefaults wydaje się być najmniej korzystny z powodu wspomnianego powyżej) są zalecenia dotyczące wstrzykiwania tej nieznanej ilości identyfikatorów uid (ciągów) do wyrażenia zapytania FQL, które samo w sobie będzie ciągiem?


title: Wybór odpowiedniego języka do pracy

text: Obecnie pracuję dla firmy w zespole inżynierskim liczącym około 5-6 osób i otrzymałem zadanie kierowania przeprojektowaniem testera systemów wbudowanych. Ustaliliśmy ogólne wymagania i atrybuty, które byłyby pożądane w systemie, a teraz muszę zdecydować, który język będzie używany w systemie, a przynajmniej wymyślić listę języków z zaletami i wadami do zaprezentowania do zespołu. Ogólną ideą projektu jest to, że obecnie mamy testera napisanego w c++, który nigdy nie został zaprojektowany jako tester, ale ewoluował w taki sposób w ciągu 3-4 lat w zależności od potrzeb. Pisanie testów dla nowego produktu wymaga zmodyfikowania „szkieletu” i napisania kodu, który jest całkowicie nieczytelny dla człowieka lub intuicyjny ze względu na sposób, w jaki system został pierwotnie zaprojektowany. Teraz zdecydowaliśmy, że czas na modyfikację tego testera dla każdego nowego produktu, który chcemy przetestować, jest zbyt długi i chcemy częściowo przepisać system, abyśmy mogli zaprogramować rzeczywiste testy w języku skryptowym, który wtedy użyj zmodyfikowanego frameworka c++ na zapleczu, aby przetestować rzeczywiste systemy. Framework c++ byłby odpowiedzialny za wykonanie całej faktycznej pracy, a język skryptowy po prostu zintegrowałby się z nim, aby powiedzieć frameworkowi, co ma robić. Nigdy nie programowałem w języku skryptowym (programujemy systemy wbudowane), natknąłem się na ścianę, w której nie mam doświadczenia z żadnym z języków, których moglibyśmy używać, ale muszę jakoś podać zalety i wady każdego języka, abyśmy mogli może wybrać najlepszy do pracy. Obecnie moja krótka lista możliwości obejmuje: * Python * TCL * Lua * Perl Moje pytanie brzmi: **Jak osoba może ocenić język, którego nigdy wcześniej nie używał? Jakie kryteria są dobrymi wskaźnikami potencjalnej użyteczności języka w projekcie?** Chociaż pomocne sugestie dla mojego konkretnego przypadku są doceniane, uważam, że posiadanie tej umiejętności jest dobrą umiejętnością i chciałbym móc zastosować ją w wielu różnych projektach, jeśli w ogóle możliwe


title: Czy istnieje podstawowy zestaw problemów agnostycznych językowych?

text: Chciałbym zaprojektować język programowania rozwiązując określony zestaw problemów. Szukam podstawowego zestawu problemów programistycznych, które są niezależne od języka. Wydaje się, że istnieje szereg problemów, które programiści wielokrotnie rozwiązują. Szczegóły implementacji różnią się w zależności od języka, ale w zasadzie problem, który rozwiązują, pozostaje taki sam. Na przykład: * Biblioteki numeryczne (http://en.wikipedia.org/wiki/List_of_numerical_libraries) * Kryptografia * Niektóre biblioteki sieciowe * Kreślenie/wykresy * Testowanie jednostkowe Czy w literaturze były jakieś ich wyliczenia?


title: Jaki jest preferowany modyfikator dostępu do zmiennych instancji obiektu przesyłania danych?

text: Tworzę obiekt transferu danych i nie mogę zdecydować, czy lepiej byłoby po prostu dać publiczny dostęp do zmiennych instancji, czy też byłoby celowe używanie getterów i seterów w celu uzyskania dostępu do danych? Zgodnie z artykułem w Wikipedii dotyczącym transferu danych: > DTO nie zachowuje się niczym poza przechowywaniem i wyszukiwaniem własnych > danych (akcesory i mutatory). DTO to proste obiekty, które nie powinny > zawierać żadnej logiki biznesowej wymagającej testowania. Wydaje się, że publiczny dostęp byłby uzasadniony dla zmiennych instancji DTO. Oto przykład, nad którym pracuję: **Ivars z modyfikatorem dostępu publicznego:** class ServerContext { public String host; publiczny użytkownik String; publiczne hasło String; publiczny port wewnętrzny; ServerContext(String host, String user, String hasło, int port) { this.host = host; this.user = użytkownik; this.password = hasło; ten.port = port; } } a **modyfikatory dostępu prywatnego:** class ServerContext { private String host; prywatny użytkownik String; prywatne hasło String; prywatny port wewnętrzny; ServerContext(String host, String użytkownik, String hasło, port int) { setHost(host); ustawUżytkownik(użytkownik); setPassword(hasło); setPort(port); } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getPassword() { zwróć hasło; } public void setPassword(String password) { this.password = hasło; } public String getUser() { return user; } public void setUser(String user) { this.user = użytkownik; } public int getPort() { port powrotu; } public void setPort(int port) { this.port = port; } } **EDYTUJ:** Czy mogą to być prawidłowe argumenty za zachowaniem prywatnych ivarów: 1. Potencjał późniejszej refaktoryzacji DTO w celu uzyskania większej funkcjonalności? 2. Chcesz zachować spójność implementacji między DTO a zwykłymi obiektami?


title: Jak działa GPL w odniesieniu do języków takich jak Dart, które kompilują się do innych języków?

text: Język Google Dart nie jest obsługiwany przez żadną przeglądarkę internetową poza specjalną kompilacją Chromium znaną jako Dartium. Aby użyć Darta w kodzie produkcyjnym, musisz uruchomić go przez kompilator/tłumacz Dart->JavaScript, a następnie użyć wyprowadzonego JavaScript w swojej aplikacji internetowej. Ponieważ JavaScript jest językiem interpretowanym, każdy, kto otrzymuje plik „binarny” (czyli plik .js), otrzymał również kod źródłowy. Teraz Powszechna Licencja Publiczna GNU v3.0 stwierdza, że: „Kod źródłowy dzieła oznacza preferowaną formę dzieła do wprowadzania w nim modyfikacji”. Co oznaczałoby, że oryginalny kod Darta oprócz kodu JavaScript musi być również dostarczony użytkownikowi końcowemu. Czy to oznacza, że jakakolwiek aplikacja internetowa napisana w Dart musi również udostępniać oryginalny kod Dart wszystkim odwiedzającym ich witrynę, nawet jeśli kopia kodu źródłowego została już dostarczona w formie czytelnej/zapisanej/modyfikowanej przez człowieka?


title: Czy ktoś kiedykolwiek używa logowania url OpenId?

text: Myślę, że jako programiści jesteśmy najbardziej skłonni do korzystania z nowych technologii i rzeczy, które nie są tak mainstreamowe. Absolutnie uwielbiam możliwość logowania się za pomocą OpenId przy użyciu poświadczeń, które już posiadasz, ale zawsze korzystam z dostawcy, z którego już korzystam i który jest najszybszy do zalogowania, takiego jak google. Bóg wie, że nigdy bym go nie użył, gdybym musiał wpisać całe „https://www.google.com/accounts/o8/id”. Lubię kliknąć przycisk google, a potem po prostu powiedzieć tak (za pierwszym razem , a następnie wystarczy kliknąć przycisk). Czy ktoś z was kiedykolwiek używa ogólnego identyfikatora OpenId „Wprowadź własnego dostawcę”? Czy uważasz, że warto oferować go bardziej przypadkowym użytkownikom końcowym?


title: Odpowiednia licencja na dostępne źródło, zakaz nieautoryzowanej dystrybucji

text: Mam program (technicznie dodatek do programu), którego kod chcę, aby był swobodnie dostępny do celów edukacyjnych lub tworzenia pochodnych na własny użytek. NIE chcę jednak zezwalać na nieuregulowaną redystrybucję kodu zmodyfikowanego lub niezmodyfikowanego, zarówno za darmo, jak i dla zysku. Jednak chcę zezwolić na możliwość "wstępnie zaakceptowanych" prac pochodnych - to znaczy, że programista może poprosić o pozwolenie na dystrybucję pracy pochodnej (zasadniczo dodatek do dodatku). Wreszcie, licencja na program nadrzędny (którego nie jestem właścicielem) zabrania bezpośredniej sprzedaży mojego dodatku, ale nie zabrania zarabiania innymi środkami (np. adfly). Nie chcę, aby inni mogli zarabiać na moim oryginalnym kodzie, ale chcę pozwolić im na zarabianie na wstępnie zatwierdzonych pracach pochodnych. Ze względu na dość zniuansowany charakter tych wymagań oraz fakt, że NIE jest to licencja wolnego rozpowszechniania, jaka byłaby wymagana w przypadku „prawdziwej” licencji Open Source (zgodnie z oficjalną definicją), nie wiem, jakiej licencji użyć . Czy stworzenie własnego byłoby najlepszym wyborem? Zwróć uwagę, że nie mam prawnika ani nie mam środków, aby go uzyskać. Wydaje się, że jest najbliżej licencji „widocznego źródła”, ale te wydają się nie uwzględniać aspektu „zatwierdzonej pracy pochodnej”, o którą mi chodzi. Oto licencja, jaką mam do tej pory. Czy jest to prawidłowy format i czy można używać tych terminów w ten sposób? /************************************************** ****************************** * @author Reika * * Ten kod jest własnością i jest własnością firmy Reika i jest przez nią chroniony prawami autorskimi. * * Każdy i wszyscy użytkownicy mogą korzystać ze źródła w celach edukacyjnych lub tworzyć dzieła pochodne * wyłącznie do użytku prywatnego. * * O ile nie zostanie udzielona wyraźna pisemna zgoda - pisanie elektroniczne jest dopuszczalne - żaden użytkownik nie może redystrybuować * tego kodu źródłowego ani żadnych prac pochodnych. Te wstępnie zatwierdzone prace muszą wyraźnie zawierać tę informację o prawach autorskich. * * Ponadto, nikt poza oryginalnym autorem nie może podejmować prób uzyskania korzyści finansowych z tego kodu. * W przypadku wstępnie zatwierdzonych prac pochodnych wszelkie zyski pieniężne zostaną podzielone między pierwotnego autora * i innych programistów, proporcjonalnie do stosunku kodu pochodnego do oryginalnego. * * Wreszcie, wszelkie wyświetlenia, duplikaty lub pochodne tego kodu muszą być wyraźnie oznaczone jako takie i muszą zawierać * przypisanie oryginalnego autora, w tym link do oryginalnego źródła. Wszelkie próby ubiegania się o kredyt za * ten kod będą traktowane jako umyślna kradzież. * * Ze względu na Warunki świadczenia usługi Mojang i Minecraft Mod oraz ograniczenia licencyjne, skompilowane wersje tego kodu * muszą być dostarczane bezpłatnie. Jednak z wyjątkiem wcześniej zatwierdzonych prac pochodnych, tylko oryginalny autor * może rozpowszechniać skompilowane wersje binarne tego kodu. * * Nieprzestrzeganie tych ograniczeń stanowi naruszenie prawa autorskiego i zostanie odpowiednio potraktowane. ************************************************** ******************************/


title: Anemiczny model domeny a DDD z definicji przykład(-y)?

text: Jaki jest przykład „logiki biznesowej”, która powinna znajdować się w modelu domeny, tj. wewnątrz jednostki zamiast w usłudze (domeny), a także przykładowa logika, która powinna znajdować się w usłudze. Oto, co uważam za całkiem jasne case(?): Basic Validation zostanie wykonane przez atrybuty definicji ViewModel i walidację jQuery. Dlatego poprawność danych powinna być w porządku do czasu, gdy dane dotrą do Service/DomainModel(Entity). Pewna logika biznesowa, która zależy od innych encji, będzie należeć gdzieś poza encją w usłudze (naturalnie/przypuszczalnie). Coś, co mógłbym wyobrazić sobie w modelu DomainModel (Entity), byłoby proste dodawanie elementów do właściwości listy (upewnij się, że nie istnieją duplikaty itp.). Być może jakieś podstawowe funkcje kopiowania. Co jeszcze umieszczasz w Entity/DomainModel zamiast w Usłudze? Trudno jest dokonać jasnego rozróżnienia, a przynajmniej wydaje się, że większość logiki trafiłaby do Usług.


title: Wydajny sposób na tasowanie przedmiotów

text: Piszę program do quizu. Mam klasę pytań zawierającą ArrayLists dla pytania, odpowiedzi, opcji, znaków i znaków ujemnych. Coś takiego: class question { private ArrayList<Integer> index_list; private ArrayList<String> lista_pytań; private ArrayList<String> lista_odpowiedzi; private ArrayList<String> opt1_list; private ArrayList<String> opt2_list; } Chcę przetasować wszystkie pytania, ale aby pytania zostały przetasowane, wszystkie obiekty muszą zostać przetasowane. Podszedłbym do tego problemu w ten sposób: Po pierwsze, nie użyłbym tego projektu i nie użyłbym typu String, a nie `ArrayList<String>` jako zmiennych instancji, a następnie użyłbym metody `Collections.shuffle` do przetasowania przedmioty. Ale mój zespół nalega na ten projekt. Teraz klasa pytań zawiera rosnące tablice ArrayLists w miarę tworzenia wpisów do pytań. Jak teraz potasować pytania?


title: Jaki jest najlepszy sposób na stworzenie wersji próbnej oprogramowania dla OS X?

text: Mam kogoś, kto opracuje dla mnie program i chcę go sprzedać za jakieś 10 dolarów. Zastanawiałem się, jaki jest najlepszy sposób na stworzenie wersji próbnej, którą mogę zlecić mojemu programiście. Jak 30-dniowy okres próbny. A w jaki sposób mogę sprawić, że po zapłaceniu mogę wysłać im kod odblokowujący. Co zostało zrobione w programie, aby to umożliwić? Jeśli mógłbyś dać mi odpowiedź, którą mógłbym przekazać mojemu programiście, byłoby to bardzo mile widziane. Dziękuję!


title: modelowanie danych / modeli UI w odniesieniu do Warstwy Danych

text: Mam interfejs użytkownika w Asp.Net MVC, który musiałby na przykład załadować listę produktów do wyświetlenia. Załóżmy, że to wywołuje `ProductRepository.GetProducts()` . W warstwie danych mam klasę `ProductData`, która jest rzeczywistymi danymi przechowywanymi w produkcie. Chciałbym oddzielić frontend (UI) od bezpośredniego dostępu do warstwy danych. Czy najlepiej byłoby mieć interfejs mówiący `IFrontendProduct`, który byłby zaimplementowany przez `ProductData`. Wtedy `ProductController` będzie łączyć się bezpośrednio z `ProductRepository`, czy też kontrolery nie powinny nawet 'wiedzieć' o `ProductData`, ale tylko o interfejsie wystawionym na frontend, `IFrontendProduct`? Czy bardziej sensowne byłoby posiadanie modelu, powiedzmy „FrontendProductModel”, niż rzeczywistego interfejsu? Następnie backend wykona most pomiędzy `ProductData` => `FrontendProductModel`. Zawsze lubię myśleć o tym jako o dwóch oddzielnych jednostkach rozwijających frontend i backend. W takim przypadku podmiot rozwijający frontend nie „wiedziałby” o „DataProduktu”, a jedynie o interfejsie/modelu udostępnianym przez API opracowane przez podmiot opracowujący backend. Czy to ma sens, czy też przenosi separację na dodatkowy, niepotrzebny poziom? Osobiście uważam, że najlepszym scenariuszem byłoby posiadanie `FrontendProductModel`, do którego frontend ma tylko dostęp, a frontend nawet nie wiedziałby o `ProductData`. Następnie wszelkie wywołania, które frontend wykonuje do usług zaplecza, zwracają je jako `FrontendProductModel`. Następnie backend przetłumaczy wyniki z warstwy danych na model. Uważam, że tworzy to najlepszą separację między warstwami, ale czasami może być dość kłopotliwe do wdrożenia, ponieważ wymaga dużej ilości nadmiarowego kodu i kopiowania właściwości do/z warstwy danych i modeli frontendu.


title: Uzyskaj informacje o licencji dla wszystkich używanych pakietów nuget

text: Aby utrzymać porządek w naszym domu, chcę automatycznie gromadzić licencje dla zależności projektu w naszej dokumentacji, zamiast dodawać je ręcznie. Czy ktoś zna prosty sposób na przechodzenie przez zestaw plików CSPROJ i wyodrębnianie informacji o licencji dla przywoływanych pakietów?


title: Kto zarządza systemem CMS po zakończeniu projektu freelancerskiego?

text: Od kilku lat jestem pełnoprawnym programistą .net korzystającym z C#/MVC4/SQL Server i nigdy nie brałem udziału w projekcie niezależnym. Dzieje się tak, ponieważ do tej pory pracowałem tylko jako pełnoetatowy konsultant na godziny lub przy start-upach na rzecz kapitału. Ponadto pracowałem tylko nad bardzo dużymi, złożonymi projektami, które musiały zostać zbudowane na dużą skalę, a zatem miały wiele warstw. Mam teraz do czynienia z potencjalnym klientem, który chce mieć witrynę, która jest dość prosta: 1. Istniejąca strona klienta 2. Budowanie nowej bazy danych produktów 3. Utwórz kilka stron do istniejącej strony klienta 4. Dodaj funkcję wyszukiwania/filtrowania do wyszukiwanie produktów w bazie danych Moja zwykła procedura programistyczna do tworzenia złożonych, skalowalnych aplikacji jest bardzo przesadna, więc po raz pierwszy chciałbym użyć CMS. Ponieważ jestem programistą .NET, Orchard CMS wygląda świetnie i chciałbym od razu wskoczyć. Próbuję oszacować pracę, ale nie wiem, jak działają projekty freelancerów do kodu źródłowego. Po skonfigurowaniu wszystkiego, udostępniam projekt WebMatrix klientowi, aby mógł zacząć używać CMS jako administrator, dodawać treści za pośrednictwem pulpitu nawigacyjnego itp., Czy też publikuję tylko produkt końcowy i muszą do mnie wrócić po dodać funkcjonalność poprzez panel CMS? Oczywiście umowa może być tak czy inaczej, ale czy programiści generalnie pobierają więcej za faktyczne ujawnienie projektu i pulpitu nawigacyjnego klientowi, czy jest to zazwyczaj domyślnie w przypadku projektów CMS? Jako dodatkowe pytanie, czy powinienem czuć się zobowiązany do ujawnienia użycia CMS za kulisami (zakładając, że faktycznie pobieram opłatę za rzeczywisty czas potrzebny na skonfigurowanie CMS)?


title: Czy PHP i Javascript mogą działać razem?

text: Tworzę aplikację z kolegą, której backend planujemy napisać częściowo w PHP, a częściowo w Javascript z Node.js. Zaangażowanie frontonu JavaScript w PHP sprawia, że jest to trudne pytanie dla Google. Używamy również szablonów ejs, bazy danych MySql i będzie ona uruchamiana na serwerze Fedory, jeśli te czynniki mają znaczenie. **Pytanie:** Potrzebuję podstawowej wiedzy o tym, jak się łączą, a może ważniejsze jest to, czy lepiej przygotować się do tego scalenia teraz, czy jest to coś, co możemy wymyślić później?


title: Jak przedstawić potencjalnemu klientowi platformę ASP.NET przez PHP?

text: Pracuję w sklepie Microsoft zajmując się głównie tworzeniem stron internetowych. Mieliśmy klienta, który poprosił nas o przejrzenie (ulepszenie) modelu danych dla swojej aplikacji internetowej, ale powiedział, że chce rozwijać swoją aplikację w PHP (zna „kolesia”, który może to zrobić). Kiedy zapytałem go, dlaczego chce iść na PHP, podał mi standardowy zestaw argumentów z lat 90.: 1. Microsoft jest zły, a PHP jest darmowe 2. Pisanie aplikacji ASP.NET jest droższe (programowo) 3. Dlaczego Facebook miałby używać PHP, gdyby to był zły pomysł? **[classic]** Miał jeszcze kilka komentarzy na temat kosztów związanych z przejściem na platformę .NET. Prawda jest taka, że „Microsoft jest drogi” już nie wytrzymuje, dzięki pakietowi „Express” możesz opracować aplikację ASP.NET bez płacenia za oprogramowanie. Jeśli chodzi o hosting, możesz zaoszczędzić kilka dolarów dzięki PHP przez .NET, ale to niewielki ułamek przewidywanych kosztów rozwoju (podaliśmy 10-15 tys.). Wracając do mojego pytania, ** jakie argumenty podałbym klientowi na korzyść ASP.NET zamiast PHP? [proszę podać źródła oświadczeń ilościowych]**


title: Uruchamianie całego frontonu systemu na płaskiej pamięci podręcznej plików

text: Jestem w trakcie odchodzenia od PyroCMS do niestandardowego rozwiązania zbudowanego na Laravelu. Nie będę wchodzić w szczegóły, dlaczego tutaj, ale jest to konieczność. Bawię się pomysłem buforowania rzeczy takich jak strony i posty do pliku płaskiego po ich utworzeniu, a następnie ładowanie ich (jeśli istnieją) i powrót do bazy danych mysql, jeśli pamięć podręczna nie zostanie znaleziona. To dało mi do myślenia. Czy istnieje problem z uruchomieniem całego „frontendu” systemu lub witryny na płaskich, wstępnie renderowanych plikach z pamięci podręcznej? Z pewnością pamięć podręczna wymaga tylko usunięcia/zastąpienia, gdy post lub strona zostanie zmodyfikowana, więc pamięć podręczna może być przechowywana przez cały okres istnienia witryny. Chyba, że czegoś mi brakuje, na pewno jest to coś, co powinno być zrobione o wiele więcej, czyż nie? Nawet jeśli po prostu przechowywał dane serializowane lub json z tabel bazy danych, musi to być szybsze niż otwieranie połączenia mysql, prawda?


title: Pojedynczy zapis, wielokrotny odczyt obiektów stanowych

text: Scenariusz: * Jeden kanał danych wejściowych (nazwij to „Źródło”) * Wiele obiektów (nazwij się „Warstwa1”) **odczytaj** to „Źródło” i przeanalizuj kanał. Ta analiza jest stanowa. * Obiekty `Layer1` posiadają parametry konfiguracyjne. Na przykład `new FooLayer1(10, 20)` wykona inną analizę niż `new FooLayer1(20, 20)` wykona inną analizę niż `new FooLayer1(20, 30)` * Analiza `Layer1` jest wykonywana asynchronicznie. * Jeszcze inne obiekty (nazywamy je `Layer2`) **readonly** dane wyjściowe obiektów `Layer1` i przetwarzają te wyniki. Ta analiza jest również stanowa. * Hierarchia tworzenia obiektów Guice * Potrzebne obiekty `Layer1` są dostępne na tyle często, że nie ma znaczenia, czy są tworzone leniwie, o ile pozostają w pamięci po utworzeniu po raz pierwszy. * Potrzeby obiektów `Layer2` są zakodowane na stałe; nie ma dobrego sposobu, aby z góry wiedzieć, które obiekty „Layer1” będą potrzebne. Chcę mieć możliwość ponownego wykorzystania pracy obiektów `Layer1`. Na przykład, powiedzmy, że mam: * obiekt `AlphaLayer2` który odczytuje wyjście `FooLayer1` i `BarLayer1` * `BetaLayer2` odczytuje wyjście `BarLayer1` i `BazLayer1` * `QuuxLayer1` jest zaimplementowany, ale nie nie chcę, aby mój serwer obliczał wartość `QuuxLayer1`, chyba że istnieje obiekt `Layer2`, który tego potrzebuje. Obecnie mam fabrykę, do której mają dostęp wszystkie obiekty „Layer2”, która tworzy tylko odpowiedni obiekt „Layer1” w razie potrzeby i przechowuje wszystkie utworzone obiekty „Layer1” w Mapie. Ale ponieważ obiekty `Layer1` mają również parametry konfiguracyjne, muszę się upewnić, że przechowuję obiekty `Layer1` w dobrej strukturze danych. Jednak funkcjonalność warstwy „Warstwa1” musi być elastyczna i myślę, że gdy tworzę więcej rodzajów obiektów „Warstwa1”, ten rodzaj „Mapy” może stać się naprawdę skomplikowany. Zadaję to pytanie, ponieważ, o ile teraz jest dobrze, wraz ze wzrostem złożoności, utrzymanie struktury danych w ten sposób wydaje się być naprawdę trudne. Próba wykonania jakiejś zagnieżdżonej struktury danych `Map` powinna dać mi czasy dostępu `O(1)` przy znalezieniu tych obiektów `Layer1`, ale sprawi, że buforowanie będzie bardzo skomplikowane. Alternatywnie, mógłbym zachować je w znacznie bardziej płaskiej strukturze i przejrzeć listę wszystkich obiektów `Layer1` i sprawdzić, czy mają właściwe parametry. Jeśli nie znaleziono, utwórz nowy. Dopóki obiekty „Layer2” zachowują odniesienie, powinno to nastąpić tylko raz. Jeszcze inną opcją byłoby utworzenie `Map<Class, Set<Layer1>>` tak, aby wystarczyła iteracja przez utworzone obiekty `Layer1` odpowiedniej klasy. Czy ktoś widział już taki scenariusz? Która z wymienionych przeze mnie opcji jest preferowana? A może jest coś, o czym jeszcze nie wspomniałem? Ponadto, czy jest jakiś sposób na użycie Guice do tworzenia obiektów „Warstwa1” w taki sposób, abym mógł je ponownie wykorzystać (co muszę zrobić, ponieważ są one stanowe)


title: Odpowiedni algorytm do łączenia rekordów z wielu baz danych

text: Jestem w trakcie pisania biblioteki, która służy do uzyskiwania dostępu do danych z bazy danych. Biblioteka wymaga wstępnej definicji wszystkich tabel, których aplikacja będzie używać w postaci klas, które rozszerzają klasę abstrakcyjną w bibliotece. Klasy te zawierają połączenie z bazą danych, w którym przechowywana jest tabela, nazwę tabeli, kolumny, indeksy i relacje między tabelami. Klasa abstrakcyjna zawiera statyczne funkcje, które pozwalają użytkownikowi „wybrać” lub „wstawić” wiersze do tej konkretnej bazy danych. Funkcja `select` zwraca obiekt, który pozwala na złożenie zapytania, który udostępnia opcje dla `pól`, `joins`, `gdzie`, `group`, `having`, `order` i `limit`, co kończy się funkcją `fetch`, która zwraca obiekt zawierający wynikowe rekordy wraz z funkcjami `save` i `delete`. Teraz działa to dobrze, gdy działa między tabelami w tej samej bazie danych, w połączeniu z tabelami w innej bazie danych, ale staram się to uzyskać, aby móc zrobić coś takiego: class tabA extends tableBase { public static $database = 'mojaSqlDB'; public static $tablename = 'tableA'; public static $columns = array( 'tableAID' => 'int(11)', 'tableAKey' => 'varchar(128)', 'tableBRefID' => 'int(11)', ); } class tabB extends tableBase { public static $database = 'oracleDB'; public static $tablename = 'tableB'; public static $columns = array( 'tableBID' => 'int(11)', 'tableBSpecial' => 'boolean', 'tableBValue' => 'text', ); } tabA::select()->join('tabB', 'LEFT')->where(andCondition(eqCondition(tabA::tableAKey, 'foo'), eqCondition(tabB::tableBSpecial, true)))-> fetch() Gdzie zwrot `fetch` składałby się z wierszy zawierających znalezione kolumny z dwóch baz danych. Sterowniki baz danych używają wspólnego interfejsu, którego funkcja select wygląda następująco: function select ($kolumny, $from, $joins, $gdzie, $grupa, $posiadanie, $zamówienie, $limit, $przesunięcie) Jestem świadomy, że klasa tableBase będzie musiała rozbić zapytanie, które będzie wykonywać na dwa oddzielne zapytania, jedno do zapytania z tabA, a drugie z tabB, a następnie połączyć wyniki w zdefiniowanym typie (w tym przypadku LEFT join). Ale mam problem z wymyśleniem odpowiedniego algorytmu podziału zapytania na dwa oddzielne bloki zapytań, a następnie jak połączyć wyniki (spełniające warunek „gdzie”) w wydajny sposób. Moje dotychczasowe przemyślenia wiązałyby się z usunięciem kolumn (z wyłączeniem pól, które pochodzą z operacji między danymi w dwóch bazach danych) i warunków, które są istotne dla każdej bazy danych, używając tych wyszukiwań w każdej bazie danych, przechodząc przez wyniki głównej tabeli bazy danych wyniki i dane łączące (odrzucanie wierszy, które nie pasują do sprzężenia), (w tym momencie, jeśli istnieją jakiekolwiek pola pochodne, jak podano powyżej, są one obliczane), a następnie przechodzą przez wszystkie wiersze wynikowe, aby zapewnić, że wszelkie pozostałe lub spełnienie warunków i zastosowanie wszelkich ostatecznych zamówień. Ale moim zdaniem nie wydaje się to najbardziej wydajne i powoduje problemy podczas korzystania z limitów, chyba że pobierze wszystkie wiersze, a następnie zastosuje operację limitu na końcowym wyniku. Czy są więc jakieś zasoby lub informacje o tym, jak można to zrobić w lepszy/bardziej wydajny/czystszy sposób? **DODATKOWE** Chociaż są to bazy danych SQL, baza danych NoSQL może działać tak długo, jak zbudowany sterownik działa w granicach interfejsu sterownika bazy danych. W tej chwili jest tylko jeden sterownik, który używa PDO, ale pracuję nad budowaniem sterowników dla datastore XML i MongoDB.


title: Pisanie wtyczki Jenkins — nie-Java-Expert

text: Czy ktoś może wskazać mi (.NET przez karierę, głównie Ruby przez hobby) właściwy kierunek (kierunki) do nauki pisania wtyczki Jenkins? Zajmuję się konkretnie informacjami podsumowującymi budowę i wykresami trendów ze statystyk PartCover. Nie martwię się, że będę w stanie znaleźć swoją drogę w Javie, chociaż nie chcę się o tym wszystkiego uczyć, zanim zaatakuję problem.


title: Ilu juniorów powinien starszy mentor?

text: Rozmiar naszego sklepu dynamicznie rośnie, więc planujemy zatrudnić kilku nowych juniorów, ale nie chcielibyśmy przytłaczać seniorów zbyt dużą ilością mentoringu i szkoleń. Ilu (zwykle świeżo po studiach) młodszych programistów mogłoby (i powinno) być starszym mentorem programisty, podczas gdy starszy nadal jest w stanie skutecznie wykonywać swoje zadania?


title: Silniki HTML, JS, CSS

text: Po prostu się bawię, próbując dowiedzieć się, jak to działa, a teraz mam kilka pytań dotyczących silników HTML, JS i CSS. Wiem, że istnieją dwa główne silniki JavaScript - V8 i JavaScriptCore (silnik JS WebKit, o ile wiem). Czy to jest poprawne? A jakie są główne renderery HTML + CSS? Powiedzmy, że chcę zbudować przeglądarkę internetową za pomocą V8 (widziałem, że ma trochę dokumentacji i rzeczy + podoba mi się sposób, w jaki działa), jakie są dla mnie najlepsze opcje? Częściowo inne pytanie. Czy jest jakaś zwykła przeglądarka, która używa V8 i działa przynajmniej na Ubuntu? PS Jestem użytkownikiem Ubuntu i wolę C++.


title: Czy możliwe jest testowanie jednostkowe witryny z formularzami internetowymi?

text: Czy jest możliwe (i sensowne) testowanie jednostkowe witryny z formularzami internetowymi? Wydaje mi się, że ponieważ tak wiele z tego zależy od stanu i danych wejściowych użytkownika, nie byłoby to wykonalne. Jeśli nie jest to wykonalne, czy istnieje prawidłowa zautomatyzowana alternatywa?


title: Delegat a metoda

text: Czy jest jakaś korzyść z używania delegatów zamiast metod? Na przykład: public void LoginAuthenticate(object sender, AuthenticateEventArgs e) { if (Membership.ValidateUser(lgUserLogin.UserName, lgUserLogin.Password)) { Func<string, string> getDestinationPage = (userLogin) => { //definicja }; e.Uwierzytelniony = prawda; lgUserLogin.DestinationPageUrl = pobierzDestinationPage(lgUserLogin.UserName); } else { Akcja<ciąg> invalidLogin = (msg) => { lgUserLogin.FailureText = string.IsNullOrWhiteSpace(msg) ? "Nieprawidłowy login" : msg; e.Uwierzytelniony = fałszywy; }; Użytkownik MembershipUser = Membership.GetUser(lgUserLogin.UserName); if (user != null) { if (user.IsLockedOut) { invalidLogin("Użytkownik został zablokowany"); } else if (!user.IsApproved) { invalidLogin("Użytkownik nie jest aktywowany"); } else { nieprawidłowyLogin(null); } } else { nieprawidłowyLogin(null); } } } Jeśli `getDestinationPage` zdefiniuję jako `private string getDestinationPage(string login){...}` a `invalidLogin` jako `private void invalidLogin(string msg){...}` czy daje to jakieś korzyści?


title: Jak skutecznie „sprzedawać” dobry projekt na dużych spotkaniach

text: Wielokrotnie byłem świadkiem smutnej tragedii. Oto, co się dzieje: 1. Przegląd projektu zespołu dla nowego projektu. 2. Widzę prosty projekt, który ma sporo otworów. 3. Od niechcenia wspominam o dziurach i sposobach ich uniknięcia. 4. Ostrzeżenia są ignorowane z komentarzami typu „że 'nigdy' nie zdarzy się w prawdziwym życiu” 5. W końcu zdarzą się rzeczy, które 'nigdy' się nie zdarzą. 6. Przegląd projektu zespołu ratunkowego w przypadku zepsutego projektu. Więc co mam zrobić? Pokonanie postawy „tak ci mówiłem” nie będzie zdobywać przyjaciół i wpływać na ludzi. Czasami lata mijają, a komentarze z kroku 3 i tak zostają zapomniane. Zdecydowanie nie chcę być denerwującym szkodnikiem przypominającym światu gotchas. Często siedzę i patrzę, jak Titanic odpływa do Europy. To frustrujące, gdy złe projekty posuwają się do przodu. Frustrujące jest również to, że nie mogę przekonać innych o zbliżającym się niebezpieczeństwie na obecnej ścieżce. Najgorzej radzę sobie na spotkaniach zespołu, gdzie każdy inaczej rozumie różne terminy. Ponadto ego zwykle wygrywa z rozsądkiem i myślą. Szukam dobrych taktyk, aby przekonać ludzi do nowych i skomplikowanych pomysłów.


title: Jak przekonać współpracowników do zalet lokalnych środowisk rozwojowych

text: Staram się przekonać moich współpracowników o zaletach rozwoju w lokalnych środowiskach, ale jak dotąd nie mam szczęścia w moich poszukiwaniach. Poza mną inni programiści z moją firmą tworzą oddzielne foldery na tym samym serwerze, co nasz serwer programistyczny, używając tego samego serwera DB/DB/serwera internetowego dla wszystkich folderów, ze standardowym edytorem tekstu na lokalnych komputerach. Wspomniałem o korzyściach płynących z wszelkich błędów (np. powiedzmy stray while błędna konfiguracja pętli) zlokalizowanych na jednej maszynie, sieci lub serwerze, które nie mają znaczenia ani wpływu na pracę i mogą korzystać z xdebug (chociaż można go używać na współdzielonym serwerze , problemy z sesjami, o których mi powiedziano, są problematyczne... a brak pełnoetatowego administratora systemu, który utrzymywałby wszystko w dobrym stanie, też nie zaszkodzi). Jak dotąd bez kości. Pytam więc społeczność SO, co można zrobić, aby przekonać innych do tego, czy to ja jestem na złej ścieżce. Obecne środowisko, które mamy, to typowe środowiska WAMP, ale chciałem, aby język pytań i środowisko były jak najbardziej niezależne. Z góry dziękuję!


title: Uderz w górny limit możliwości interfejsu API międzyplatformowego

text: Jestem młodszym programistą, który pracuje jako stażysta (8 m-cy na staż) w jednoosobowym zespole (tylko ja) tworząc aplikacje i strony internetowe na telefony komórkowe. Stworzyłem aplikację, która działa dokładnie tak, jak powinna i ma kilka całkiem fajnych funkcji, ale aplikacja nie działa na Androidzie (główna platforma docelowa dla nas, działa na emulatorze komputera stacjonarnego, ale nie na Androidzie) z powodu problemów z pamięcią duże aplikacje w Mosync API (zobacz linki, aby uzyskać więcej informacji na temat problemu z pamięcią). Najbardziej demoralizującym aspektem problemu jest to, że (jak wyjaśniono w poniższych linkach) aplikacja zawiesza się losowo i nie konsekwentnie, więc wprowadzasz zmianę, uruchamiaj ją na platformie kilka razy i gdzie coś działało, zanim teraz się zawiesi, a następnie spowoduje aplikacja się zawiesiła (Android OS zabija moją aplikację). http://www.mosync.com/content/android-how-much-memory-too-much-memory http://usingimho.wordpress.com/2011/06/14/why-you-should-stay-away -from- appcelerators-titanium/ Zainwestowałem 4 tygodnie w rozwój aplikacji (interaktywny kalendarz) i 5 miesięcy w naukę API Mosync dla aplikacji, które nie będą działać na platformie. **Mój problem:** Muszę zdecydować między zrzuceniem aplikacji i ponownym uruchomieniem aplikacji w natywnym Android Java (znam Javę) lub poważnym zmniejszeniem liczby zasobów (.png) i funkcji aplikacji (efekt polaroidu to produkuje), aby działał na platformie Android. Efekt końcowy będzie funkcjonalny, ale niskiej jakości (pod względem grafiki) i prosty. **Na co zdecydowaliby się bardziej doświadczeni programiści i jak wytłumaczylibyście tę decyzję/zalecenie swojemu nietechnicznemu szefowi?**


title: Czy kiedykolwiek będzie możliwe tworzenie wysokiej jakości stron internetowych z samymi edytorami, bez konieczności znajomości języka HTML?

text: Wiele dużych firm, od Apple przez Microsoft po Google, inwestuje coraz więcej pieniędzy w tworzenie narzędzi, które pozwolą każdemu stworzyć stronę internetową z edytorem WYSIWYG. Na przykład ten e-mail, który właśnie otrzymałem od Adobe: > **Tworzenie stron internetowych tak szybko i łatwo, jak w przypadku układu Adobe® InDesign®.** > > Obecnie w wersji beta aplikacja o nazwie kodowej „Muse” jest nową technologią który umożliwia grafikom korzystanie ze znanych, swobodnych narzędzi > do projektowania i publikowania witryn HTML i CSS — wszystko to bez pisania kodu lub ograniczania się do szablonów. Dołącz do tej niesamowitej bezpłatnej wersji zapoznawczej > i przekonaj się, jak Muse zrewolucjonizuje sposób, w jaki tworzysz w sieci. Jako programista stron internetowych nie mogę przewidzieć, że Adobe lub jakakolwiek inna firma stworzy jakieś rozwiązanie, które pozwoli użytkownikowi bez znajomości HTML/CSS/JS zbudować użyteczny projekt strony internetowej z następujących powodów: * Wygenerowany kod prawie na pewno będzie bałagan, co utrudni programiście, który chce napisać backend witryny, aby z nim pracował. Mogą nawet być zmuszeni do samodzielnej zmiany kodu, aby ustrukturyzować go zgodnie z potrzebami. * HTML nie jest oparty na pikselach, więc bardzo trudno jest opracować narzędzie, które może łatwo projektować szablony, które mogą płynąć ze zmianami wielkości tekstu itp. Ponadto elementy powinny następować po sobie w rozsądnej kolejności, a nie w jakiejś przypadkowej kolejności (np. podyktowane momentem dodania elementu). * Kod wygenerowany w jednym narzędziu prawdopodobnie nie byłby łatwy do przeniesienia do innych narzędzi, co zablokowałoby Cię w oryginalnym narzędziu. (Zakładam, że narzędzie umożliwiłoby pełną kontrolę nad stroną internetową; jak powiedział Adobe, „tak szybko i łatwo jak układ Adobe InDesign”. Programy, które pozwalają korzystać z profesjonalnie zaprojektowanych szablonów, to inna historia). czy osoba niewprawna w HTML będzie kiedykolwiek mogła tworzyć wysokiej jakości (zarówno zakulisowe, jak i wizualne) projekty/witryny internetowe?


title: Relacje złożonych dokumentów w bazach dokumentów

text: Patrzyłem na wiele baz danych dokumentów (RavenDB, CouchDB, MongoDB) i są w nich dwie rzeczy, które bardzo mi się podobają i sprawiają, że muszę je jak najwięcej włączyć i to jest mniej naturalne (nie to są one mniej schematyczne na każde powiedzenie, ale jest to bardzo elastyczny schemat, który jest znacznie łatwiejszy do zmiany niż te z RDBMS) oraz fakt, że istnieje znacznie mniej niedopasowania impedancji podczas mapowania danych z bazy danych na kod. Odkryłem wiele rzeczy, które uniemożliwiły mi korzystanie z bazy danych dokumentów, ponieważ uważam, że potrzebuję ich cały czas. Niektóre z nich znalazłem rozwiązania dla takich jak unikalne dziedziny. Chociaż bazy danych dokumentów nie obsługują bezpośrednio tej funkcji, akceptowalnym rozwiązaniem jest utworzenie innego dokumentu z adresem e-mail, a następnie wstawienie użytkownika, jeśli wstawienie w dokumencie e-mail zakończyło się sukcesem, jednak jest jedna wielka rzecz że nie sądzę, aby baza danych dokumentów mogła mi dostarczyć z moich poszukiwań. Ta cecha to relacje ze złożonymi dokumentami. Jednym z moich projektów, w którym chciałem wykorzystać bazę dokumentów, jest system zarządzania projektami. Problem polega na tym, że istnieje wiele miejsc, w których potrzebuję relacji z dużymi obiektami (i wielu relacji w jednym dokumencie). Jeśli chodzi o coś takiego jak zadanie lub użytkownika, są to złożone dokumenty, a osadzony dokument nie byłby dobrą rzeczą, ponieważ niezgodność danych z tymi elementami nie może się zdarzyć. Teraz, jeśli po prostu odwołuję się do dokumentu, to naprawdę czerpię korzyści z używania bazy danych dokumentów, ponieważ teraz prawdopodobnie będę miał o wiele więcej zapytań, które muszę uruchomić w porównaniu z relacyjną bazą danych. Chociaż miałem nadzieję, że większość moich danych będzie przechowywana w bazie danych dokumentów, im więcej na to patrzę, wydaje się, że większość danych musi znajdować się w RDBMS. Czy mam rację zakładając, że tego typu relacje wymagają RDBMS, czy też nie jestem świadomy, jak można to osiągnąć w bazie danych dokumentów.


title: spokojne tworzenie stron internetowych w scala

text: Jestem programistą php od 4 lat i pracowałem w OO PHP i prawie wszystkich rodzajach frameworków PHP mvc. Dołączyłem do nowej firmy i tutaj używamy scala do tworzenia stron internetowych. Mamy produkt, który ma frontend opracowany w js mvc i backend w scala. Właściwie ten rodzaj spokojnej architektury sam w sobie jest dla mnie zupełnie nowy. W PHP po prostu używamy PHP zarówno dla frontendu, jak i backendu. Zacząłem więc pracować w scala i zrobiłem kilka podstawowych rzeczy z aplikacji konsolowej. Ale nie ma artykułów o tym, jak muszę używać scala do spokojnego tworzenia stron internetowych. W scala opracowano framework o nazwie winda. Ale tego nie użyliśmy. Nasza aplikacja jest czystą aplikacją scala bez wind. Dowiedziałem się o dwóch blogach, ale jest tam za mało informacji o implementacji. Czy ktoś może wskazać mi właściwy kierunek, kiedy należy użyć spokojnej architektury w porównaniu z architekturą mvc i absolutnymi przewodnikami dla początkujących, jak stworzyć aplikację internetową przy użyciu spokojnej architektury w scala.


title: Negocjowanie z Google jako samotny programista

text: > **Possible Duplicate:** > Czy programiści potrzebują unii? Natknąłem się na tę stronę, która jest związkiem zawodowym programistów Androida http://www.andevuni.org/ Po tym poście zainspirowało mnie do wyszukania związku zawodowego. Czy programiści powinni akceptować nadgodziny/pracę w weekend/odmowy premii? który był prezentowany w Hacker News Jak skuteczny może być związek zawodowy w poprawie warunków pracy dla programistów, a dokładniej dla programistów Androida? Sam jestem programistą Androida i zamierzam wydać swoją aplikację za mniej więcej miesiąc. Czy ta petycja związku zawodowego może być skuteczna w renegocjacji 32% podatku Google od aplikacji na Androida? Jeśli tak, czy powinienem poczekać z wydaniem mojej aplikacji?


title: Co to jest stan, stan zmienny i stan niezmienny?

text: To pytanie dla początkujących, ale nie mogłem znaleźć w Google odpowiedzi wystarczająco odpornej na nowicjuszy. Co ludzie mają na myśli, gdy mówią „stan” – w programowaniu w ogóle, a w programowaniu OO konkretnie? Co to jest stan mutable i immutable - znowu, ogólnie w programowaniu, a także w szczególności w OOP?


title: Jakie są najważniejsze kategorie treści, które należy zorganizować w wewnętrzny portal deweloperski w dużej firmie?

text: Otrzymałem zadanie zorganizowania wszystkich wewnętrznych treści firmy, które są obecnie rozproszone wokół programu SharePoint, podręcznika dotyczącego przecen i konfluencji w jeden spójny i użyteczny portal w konfluencji. Chcę, aby strona główna była „centrum deweloperów” i była miejscem, w którym wskazujemy nowych deweloperów i gdzie wszyscy udają się w celach informacyjnych i by zobaczyć, co dzieje się w firmie. Oto kilka ogólnych kategorii, które, jak sobie wyobrażam, mogą być ważne: 1. aktualności... co się dzieje w firmie, promocje, nowi pracownicy, aktualizacje projektów 2. najlepsze praktyki... standardy kodowania, rozwiązania typowych problemów, itp... 3. on-boarding... dokumenty opisujące, jak skonfigurować środowisko programistyczne na stacji roboczej 4. kultura firmy... schemat organizacyjny, role i obowiązki, funkcje różnych grup, procesy 5. szkolenia... zbliżające się kursy , zalecane i wymagane szkolenie 6. wydarzenia... zbliżające się wydarzenia, slajdy i materiały z poprzednich wydarzeń Coś jeszcze, co Twoim zdaniem jest ważne? Moim celem jest, aby ten portal był czymś, na co deweloperzy chcą patrzeć wiele razy dziennie, aby uzyskać pomoc w wykonywaniu swojej pracy. Oczekiwana baza użytkowników to około 500 programistów, testerów, opsów itp. w kilkunastu zespołach. W przedsiębiorstwie używane są zarówno .Net, jak i Java. Strona będzie w Confluence, więc wierzę, że możemy pozwolić każdemu w jakiś sposób wnieść swój wkład, czy też powinniśmy ją zablokować i wyznaczyć menedżerów treści? Dobra uwaga na temat analityki. Zamieszczę to w mojej propozycji. Dzięki za wkład!!


title: Jak mogę tworzyć / instalować aplikacje na iPhone'a bez posiadania iPhone'a?

text: Jakie mam opcje? Słyszałem, że emulator iPhone'a nie jest niezawodny. Czy mogę też kupować aplikacje na iPhone'a bez posiadania iPhone'a? BTW, używam systemu Linux i maszyny wirtualnej z systemem Windows. Dziękuję!


title: Algorytm dla najwyższego wyniku lokalnego wyrównania z określonym dopasowaniem znaków między dwoma podsekwencjami

text: Piszę kod, który identyfikuje lokalne wyrównanie o najwyższej punktacji między podciągiem X' z X i podciągiem Y' z Y, który ma co najmniej jedną kolumnę, w której C z X' jest wyrównany do W z Y'. Przykład: jeśli X=:HCEA i Y=:HWEA, to niektóre z lokalnych wyrównań z kolumną, która wyrównuje C do W to: > 1. CE > > WE > > 2. HCE > > HWE > > 3. H-CE > > -HW- > > Muszę obliczyć wszystkie te możliwości i znaleźć tę, która ma maksymalny wynik wyrównania. Moje rozwiązanie: Wziąłem powyższe 2 sekwencje jako dane wejściowe i próbowałem rozwiązać problem. Oto mój kod. Sam wiem, że nie odpowiedziałem na pytanie, ponieważ zidentyfikowałem sam pasujący podciąg. Czy ktoś może mi powiedzieć, jak powinienem poprawić swój kod, aby uzyskać pożądany rezultat. public class Q1 { public static void main(String[] args) { // Input Protein Sequences String seq1 = "HCEA"; Ciąg seq2 = "HWEA"; // Tablica do przechowywania wyniku int[][] T = new int[seq1.length() + 1][seq2.length() + 1]; // zainicjuj seq1 for (int i = 0; i <= seq1.length(); i++) { T[i][0] = i; } // Zainicjuj seq2 for (int i = 0; i <= seq2.length(); i++) { T[0][i] = i; } // Oblicz wynik macierzy for (int i = 1; i <= seq1.length(); i++) { for (int j = 1; j <= seq2.length(); j++) { if ((seq1. charAt(i - 1) == seq2.charAt(j - 1)) || (seq1.charAt(i - 1) == 'C') && (seq2.charAt(j - 1) == 'W') ) { T[i][j] = T[i - 1][j - 1]; } else { T[i][j] = Matematyka.min(T[i - 1][j], T[i][j - 1]) + 1; } } } // Ciągi do przechowywania wyrównanych sekwencji StringBuilder equalSeq1 = new StringBuilder(); StringBuilder wyrównanySeq2 = nowy StringBuilder(); // Zbuduj dla sekwencji 1 i 2 z wyniku macierzy dla (int i = seq1.length(), j = seq2.length(); i > 0 || j > 0;) { if (i > 0 && T[ i][j] == T[i - 1][j] + 1) { wyrównanySeq1.append(seq1.charAt(--i)); wyrównanySeq2.append("-"); } else if (j > 0 && T[i][j] == T[i][j - 1] + 1) { wyrównanySeq2.append(seq2.charAt(--j)); wyrównanySeq1.append("-"); } else if (i > 0 && j > 0 && T[i][j] == T[i - 1][j - 1]) { wyrównanySeq1.append(seq1.charAt(--i)); wyrównanySeq2.append(seq2.charAt(--j)); } } // Wyświetl wyrównaną sekwencję System.out.println(alignedSeq1.reverse().toString()); System.out.println(alignedSeq2.reverse().toString()); } } Post stwierdza, że programowanie dynamiczne może lepiej rozwiązać to pytanie. Czy jest też inny sposób na optymalne rozwiązanie pytania? Jeśli to możliwe, każdy może opublikować pseudokod lub algorytm, abym mógł go kodować.


title: Jak obsłużyć wyjątek w REST API

text: Biorąc pod uwagę interfejs API REST, który zgłasza wyjątek podczas obsługi żądania od klienta. Za każdym razem, gdy interfejs API REST zgłosi wyjątek, jest on rejestrowany, a aplikacja (w tym przypadku aplikacja konsolowa) jest zamykana, aby zapobiec dalszym uszkodzeniom. Czy mam wysłać odpowiedź do klienta, którego żądanie spowodowało wyjątek, wskazujący, że wystąpił błąd, czy też pozwolić klientowi zawiesić się i poradzić sobie z nim (przekroczenie limitu czasu)?


title: Jakie jest zalecane podejście do funkcji pomocniczych w JavaScript?

text: Jakie jest zalecane podejście do funkcji pomocniczych? Chciałbym wybrać jedną technikę i pobiec z nią, aby stworzyć moją nową „klasę”. Oto opcje projektowe, nad którymi się zastanawiałem: **Opcja 1: Funkcja pomocnicza w zewnętrznym zakresie, wywołaj z kontekstem instancji** function createPane (pane) { // logika tworzenia panelu var proto = Object.create(this.paneList) ; $.extend(paneProto, panel); panel powrotuProto; } Panes.prototype.initialize = function (panes) { var _this = this; _.each(panes, function() { _this.panes.push(createPane.call(_this, this)); }); } * **Zalety:** Prosta składnia. `createPane` nie jest publikowane w instancji. * **Wady:** `createPane` jest dostępne w innych zakresach. **Opcja 2: Funkcja pomocnicza w zamknięciu, wywołanie z kontekstem instancji** Panes.prototype.initialize = (function () { function createPane (pane) { // ta sama logika co w ostatnim createPane } return function (panes) { // ta sama logika co poprzednio - wywołuje createPane } })(); * **Zalety:** `createPane` nie jest publikowane w instancji. * **Wady:** Niższa czytelność i testowalność; Testowanie tego pomocnika musi nastąpić w zakresie inicjalizacji. **Opcja 3: Dołącz _ do nazwy, aby wskazać metodę prywatną** Panes.prototype._createPane = function (pane) { // ta sama logika co w ostatnim createPane } Panes.prototype.initialize = function (panes) { // ta sama logika na koniec, z wyjątkiem wywołań this._createPane } * **Zalety:** Niejawny kontekst `_createPane` jest instancją. Testowalność z zewnątrz. * **Wady:** Ujawnianie funkcji pomocniczej w instancji. **Opcja 4: Funkcje pomocnicze jako argumenty** Panes.prototype.initialize = (function (createPane) { return function (panes) { // ta sama logika co poprzednio - wywołuje createPane } })(function createPane () { // ta sama logika jako ostatnia createPane }); * **Zalety:** `createPane` nie jest publikowane w instancji. Funkcje pomocnicze nie mają do siebie dostępu. * **Wady:** Niższa czytelność i testowalność; Testowanie tego pomocnika musi nastąpić w zakresie inicjalizacji.


title: Fantasy: Jeden język/standard obsługiwany przez wszystkie urządzenia?

text: Nie wymaga wprowadzenia ani opisu. Wszyscy wiemy, jak kłopotliwe jest tworzenie różnych kodów i testowanie kodów na różnych platformach i przeglądarkach, takich jak IE, Firefox, Chrome, Android 2.3 i nowsze, iOS, Windows itp. W całej sieci, tu i tam, prowadzimy rozmowy płynnego działania aplikacji HTML5 na wszystkich urządzeniach. Czy to kiedykolwiek będzie prawdą? Czy ta przyszłość się zbliża?


title: Kiedy warto stworzyć własny język programowania?

text: Czy istnieją typy zabójczych aplikacji, klasy problemów algorytmicznych itp., w których na dłuższą metę lepiej jest stworzyć własny język? PS: Dla pewności mam na myśli nowy język programowania i kompilator, a nie nowy kompilator dla istniejącego języka. **EDYTUJ** : Dziękuję za odpowiedzi. Czy możesz podać kilka przykładów, w których absolutnie niepotrzebne jest tworzenie DSL lub przypadki, w których DSL może być dobrym pomysłem?


W numeracji bardzo ważne jest, aby móc identyfikować niestabilne schematy i poprawiać ich stabilność. Jak zidentyfikować niestabilne obliczenia zmiennoprzecinkowe? Pracuję nad bardzo złożoną symulacją, w której współdziała wiele schematów numerycznych i poszukuję metodyki identyfikacji jej słabych części. Pracuję nad modelem fizycznym z wykorzystaniem równań różniczkowych. Widok całego procesu z lotu ptaka to: 1. (Krok wstępny) Zbierz obserwacje fizyczne _P_. 2. Wyznacz początkowe parametry symulacji. Wykorzystuje to algorytm optymalizacji, w którym poruszamy się w przestrzeni parametrów i szukamy parametrów _C_ takich, że pewna funkcja błędu _E(F(C), P)_ jest minimalizowana, gdzie _F_ jest pewną pochodną wielkością parametrów. 3. Podłącz _C_ do silnika symulacji. Jest to schemat Eulera EDP, tak więc w każdym kroku czasowym obliczamy warunki napędzające dynamikę (każdy z nich jest złożoną funkcją, potencjalnie podatną na niestabilność) i zasilamy schemat Eulera tymi dynamicznymi terminami, aby obliczyć następny państwo. Trwa to przez tysiące punktów czasowych. 4. Na koniec symulacji obliczamy pewną funkcję _Dowód(S)_ stanu końcowego _S_ i porównujemy z pewnymi wielkościami _Wymagaj(P)_ wyprowadzonymi z obserwowanych wielkości. To nie jest formalny dowód wyniku, a raczej sprawdzenie wiarygodności. Widzę też wieżę złożonych operacji (obliczanie wyrazów dynamicznych, w ramach schematu Eulera, w ramach _Dowód_). I chciałby rozpoznać „złe części” i je naprawić. Spekuluję, że użycie programowej implementacji liczb zmiennoprzecinkowych o zmniejszonej precyzji zwiększyłoby niestabilność schematów numerycznych, ułatwiając w ten sposób porównywanie różnych implementacji. Czy jest to powszechna technika badania tego pytania? Czy można wykorzystać maszynę wirtualną, jak Bochs, aby to osiągnąć bez zmiany programu? Aby właściwie poradzić sobie z pytaniem o stabilność, czasami dopuszczalne jest kierowanie się na typowy sygnał wejściowy procedury numerycznej, tak aby można go było dostroić tak, aby działał dobrze na tym wejściu, a być może gorzej na innych ważnych, ale mało prawdopodobnych danych wejściowych. Mając próbkę typowych danych wejściowych, możliwe jest _podsłuchiwanie_ niektórych wyników pośrednich i przygotowanie dla nich profilu statystycznego. Ponownie, czy jest to powszechna technika badania problemów ze stabilnością? Czy przydaje się do tego maszyna wirtualna?


title: W jakich scenariuszach localStorage aplikacji zostanie wyczyszczony?

text: Tworzę hybrydową aplikację na Androida w HTML5, która będzie działać całkowicie offline. Dziś rano, kiedy otworzyłem aplikację, zobaczyłem, że wszystkie dane przechowywane w localStorage zostały wyczyszczone. W jakich scenariuszach można wyczyścić localStorage? Biorąc pod uwagę te scenariusze, czy warto używać localStorage?


title: Java ma wiele bibliotek. O ile więcej niż inne współczesne języki?

text: Jedynym językiem programowania, którego używałem „poważnie” do tworzenia stosunkowo dużych aplikacji, jest Java. Dlatego bardzo dobrze wiem, że Java oferuje wiele wbudowanych bibliotek, które pomagają w wielu zadaniach, które w przeciwnym razie musiałbyś zaimplementować samodzielnie. Chciałem jednak zapytać: czy Java oferuje znacznie więcej wbudowanych bibliotek niż inne nowoczesne języki OO, na przykład C#? Czy Java jest szczególnie hojna w bibliotekach, które daje, w porównaniu z innymi współczesnymi językami? Również jako inne pytanie: czy uważa się za „mniej profesjonalne” częste korzystanie z wbudowanych bibliotek zamiast samodzielnego wdrażania?


title: Chcę włączyć opcję VB.Net Strict

text: Niedawno dowiedziałem się o silnym typowaniu w VB.Net (oczywiście było to tutaj, dzięki!) i postanawiam zrobić kolejny krok w kierunku bycia lepszym programistą. Przeszedłem z makr vba -> VB.Net, ponieważ potrzebowałem programu, który mógłbym zautomatyzować i nigdy nie czytałem nic o silnym typowaniu, więc wpadłem w domyślną pułapkę VB.Net. Teraz chcę go włączyć i uporządkować całą tę sprawę. Miałem nadzieję, że ktoś skieruje mnie do jakichś środków, aby to przejście było jak najbardziej bezbolesne. Czytałem kilka i ctype wydaje się pojawiać dużo, ale w przeszłości jestem trochę zagubiony. Jakie są korzyści ze zmiany? Czy jest w tym coś więcej niż tylko używanie ctype do rzucania rzeczy? Czuję, że jest dobry artykuł, na który nie trafiłem i każdy kierunek byłby świetny. Czy dobrym rozwiązaniem byłoby przepisanie programu, który jest napisany z opcją ścisłego wyłączenia i odnotowania różnic?


title: Czy klasa bez zmiennych instancji powinna być uważana za klasę?

text: Załóżmy, że musisz zaimplementować kilka ściśle powiązanych funkcji, które zapewniają pewną funkcjonalność, ale nie ma potrzeby śledzenia żadnego stanu między tymi funkcjami, po prostu czasami przekazują między sobą pewne parametry. Jaka byłaby najlepsza decyzja z punktu widzenia projektu? Czy to klasa, czy tylko oddzielny plik źródłowy zawierający te funkcje? UPD: Objective-C, brak przestrzeni nazw


title: Efektywne sposoby modelowania samochodów poruszających się po drodze

text: To nigdy się nie pojawiło, więc nigdy nie zastanawiałem się, jak powinien działać model danych lub programowania, który symuluje (a) widok poruszających się samochodów z lotu ptaka i niektóre podstawowe zasady fizyki, (b) jak samochody będą podążać za układem drogi i (c ), jak wyglądałaby wydajna struktura danych dla dróg. Oczywiście to pytanie oznacza również pytanie, w jaki sposób struktury danych o drogach będą oddziaływać z samochodami. Jakieś rekomendacje lub recenzje takich modeli danych?


title: Na jakie niespójności w JavaScript powinienem zwracać uwagę?

text: Pamiętam, że kiedyś czytałem kilka „śmiesznych” przykładów dziwnych wyników, jakie JavaScript może dać, gdy na przykład dodajesz ciągi do liczb itp. Czy ktoś ma jakieś dobre przykłady lub link do bloga, na którym mogłem je przeczytać? Które z nich mogą przyłapać programistę w prawdziwym świecie?


title: Jak dokładnie ocenić potencjalnego pracodawcę?

text: Dużo słyszymy o zapachach kodu, testach, a nawet projektach, ale poza testem Joela nie słyszałem żadnej dyskusji o „zapachach” pracodawcy. Po wielu frustracji związanych z pracą dla pracodawców z bukietem nieprzyjemnych zapachów kultury korporacyjnej, uważam, że nadszedł czas, abym aktywnie poszukiwał bardziej dojrzałego środowiska rozwoju. Zacząłem gromadzić listę pytań, aby pomóc w weryfikacji pracodawców, identyfikując problemy podczas rozmowy kwalifikacyjnej i szukając dodatkowych pomysłów. Przypuszczam, że ta lista mogłaby być łatwo zmodyfikowana przez pracodawcę, aby zweryfikować również pracownika, ale proszę o odpowiedź z perspektywy rozmówcy. Myślę, że byłoby ważne, aby zadać wiele z tych pytań wielu osobom, aby dowiedzieć się, czy udzielane są spójne odpowiedzi. W większości starałem się umieszczać pytania w każdej sekcji w kolejności, w jakiej mogą zostać zadane. Niepożądana odpowiedź na wczesne pytanie często powoduje, że kontynuacja staje się dyskusyjna. **Wartości** * Co oznacza „dobrze napisane” oprogramowanie? * Jakie atrybuty ma dobry programista? To samo pytanie do kierownika. Kim są Twoi najbardziej cenieni pracownicy/menedżerowie i dlaczego? **Proces** * Czy masz proces rozwoju? * Jak rygorystycznie go przestrzegasz? * Jak decydujesz, ile procesu zastosować do każdego projektu? * Opisz typowy cykl życia projektu. Zapytaj następujące, jeśli nie wymyślą inaczej: * Wodospad/iteracja: Ile czasu spędza się na wstępnym zbieraniu wymagań? z góry projekt? **Testowanie** * Kto opracowuje testy (programiści czy oddzielni inżynierowie testowi?) * Kiedy są opracowywane? * Kiedy przeprowadzane są testy? * Jak długo trwa ich wykonanie? * Co sprawia, że test jest dobry? * Skąd wiesz, że przetestowałeś wystarczająco dużo? * Jaki procent kodu jest testowany? **Recenzja** * Jak wygląda proces sprawdzania? * Jaki procent kodu jest sprawdzany? Projekt? * Jak często mogę uczestniczyć jako recenzent kodu/projektu/recenzent? * Jakie są kryteria stosowane do przeglądu i skąd się biorą? **Ulepszanie** * Jakie nowe narzędzia i techniki zostały ocenione lub wdrożone w ciągu ostatniego roku? * Jakie szkolenia przeszli Twoi pracownicy w ciągu ostatniego roku? Co będę robił przez pierwsze sześć miesięcy w Twojej firmie (wskazując, jaki rodzaj zorganizowanego mentoringu/szkolenia został przemyślany, jeśli w ogóle) * Jakie zmiany w Twoim procesie rozwoju zostały wprowadzone w ciągu ostatniego roku? * Jak możesz się doskonalić i uczyć się na błędach jako organizacja? Jaki był największy błąd Twojej organizacji w ostatnim roku i jak został rozwiązany? * Jakie opinie przesłałeś ostatnio kierownictwu? Czy został wdrożony? Jeśli nie, dlaczego? * W jaki sposób Twoja firma korzysta z „najlepszych praktyk”? Jak ich szukać z zewnątrz lub wewnątrz i jak dzielicie się nimi ze sobą? **Etyka** * Opowiedz mi o problemie etycznym, który Ty lub Twoi pracownicy mieli ostatnio do czynienia i jak został rozwiązany? * Czy korzystasz z oprogramowania open source? Jakiego wkładu w open source dokonałeś? **Follow-Ups** Podobało mi się to, co @jim-leonardo powiedział na to pytanie Stack Overflow: _Naprawdę trzeba sobie zadać pytanie: „Czy ta osoba wydaje się, że próbuje mnie zrekrutować i zainteresować?” Myślę, że to jeden z najważniejszych bitów. Jeśli wydaje się, że przyjmują postawę, że jedyną osobą, z którą przeprowadza się wywiad, jesteś ty, prawdopodobnie będą cię źle traktować. Dobrzy ankieterzy rozumieją, że muszą sprzedać stanowisko tyle, ile kandydat musi sprzedać siebie._ @SethP dodał: _Glassdoor.com to dobra strona internetowa do wyszukiwania potencjalnych pracodawców. Zawiera informacje o tym, jak poszczególne firmy przeprowadzają wywiady..._


title: Dlaczego nie ma standardowej biblioteki fortran?

text: Aby być językiem skoncentrowanym na matematyce i obliczeniach naukowych, zawsze jestem zdumiony całkowitym brakiem przydatnych procedur matematycznych w standardowej bibliotece Fortran. Można by oczekiwać, że zostanie dostarczony przynajmniej z procedurą obliczania odchylenia standardowego i średniej, ale tak nie jest. W szczególności po wprowadzeniu Fortranu 90 i dodaniu modułów (co zmniejsza zanieczyszczenie przestrzeni nazw), nie widzę powodu tego krytycznego braku usług. Chciałbym poznać Twoją wiedzę o tym, dlaczego tak się dzieje.


title: Tworzenie aplikacji iOS za pomocą MonoTouch

text: Planuję nauczyć się objective-c, aby móc tworzyć aplikacje na iOS. Widziałem kilku facetów używających sdk Monotouch, naprawdę nie wiem, od czego zacząć. Mam solidne doświadczenie w tworzeniu witryn i aplikacji przy użyciu technologii .NET Framework, czy powinienem wybrać `Monotouch`? Czy aplikacja wykonana na platformie natywnej będzie działać szybciej? Wielkie dzięki.


title: Czy mogę używać narzędzia na licencji korporacyjnej w domu/do osobistych projektów?

text: Zwykle firma, w której pracuje programista, posiada licencjonowane narzędzia, które są przydatne dla programisty (np. zastrzeżone IDE, reflektory, narzędzia do tworzenia diagramów, narzędzia biurowe i kreatory PDF itp.) Czy mogę: * Zainstalować go w domu i używać w firmie projektowanie? * Zainstalować go w domu i używać do osobistych projektów (ewentualnie komercyjnych)? * Używasz go w biurze do osobistego projektu (np. po godzinach pracy)? Nie proszę tutaj ściśle o poradę prawną (chociaż przydałby się też jakiś prawniczy punkt widzenia). Ale czy generalnie jest to słuszne?


title: Dlaczego natywne dane aplikacji są pobierane szybciej niż w przypadku PhoneGap?

text: Wiem, że aplikacja stworzona za pomocą PhoneGap jest wolniejsza niż natywna, ponieważ w PhoneGap cały kod musi zostać zinterpretowany w czasie wykonywania na natywną. Ale czy ktoś mógłby wyjaśnić lub mieć dobrą, dogłębną stronę internetową, która wyjaśnia, dlaczego natywna aplikacja pobiera dane (obraz lub tekst) z zasobów internetowych szybciej niż aplikacja z PhoneGap? Czy obie aplikacje obsługują połączenia internetowe w inny sposób, czy też aplikacja PhoneGap pobiera więcej danych?


title: Jakie są obowiązki inżyniera zarządzania oprogramowaniem (SCM) w dużej firmie?

text: Jakie są kanoniczne obowiązki tak wyspecjalizowanej roli? Normalnie spodziewałem się, że będzie to część zadań normalnego programisty, ale w dużych firmach wiem, że tę rolę ma pełnić sam inżynier. W mojej obecnej firmie istnieje możliwość nowego otwarcia na stanowisko SCM, więc mógłbym aplikować, ale najpierw chciałbym usłyszeć, co według Pana doświadczenia najlepiej charakteryzuje tę rolę.


title: Jakie są wymagania wstępne dotyczące pisania usług sieci Web platformy .NET?

text: Jestem bardzo nowy w tworzeniu stron internetowych. Jestem programistą C,C++ od 5 lat i zaczynam zajmować się tworzeniem stron internetowych, pisaniem serwisów internetowych itp. Rozumiem podstawowe pojęcia serwisów internetowych. Wiem, że usługi sieciowe .Net można napisać w VB lub C#. Praca z C,C++ pomoże przyzwyczaić się do pisania kodu w C#. Nie mam doświadczenia we frameworku .Net. Chciałbym szybko zająć się pisaniem usług internetowych .Net i nauką w podróży, bez poświęcania dużej ilości czasu na naukę frameworka .Net (jeśli to możliwe) Jakieś sugestie? Aktualizacja — znam się na bazach danych i sql express w Visual Studio


title: Jaka jest najlepsza strategia przekształcania ciągów Unicode w nazwy plików?

text: Mam kilka (tysiące) zasobów w pliku RDF/XML. Piszę pewien podzbiór zasobów do plików — jeden plik dla każdego, a jako nazwę pliku używam właściwości title zasobu. Jednak tytuły są codziennymi tytułami artykułów, witryn internetowych i wpisów na blogu, więc zawierają znaki niebezpieczne dla identyfikatora URI (krok niezbędny do skonstruowania prawidłowej ścieżki do pliku). Znam Jersey UriBuilder, ale nie mogę go zmusić do pracy dla moich potrzeb, jak wyszczególniłem w innym pytaniu na SO. Rozważałem kilka możliwości: * Ponieważ każdy zasób powinien mieć również skojarzony adres URL, mógłbym spróbować użyć nazwy pliku na serwerze. Wadą tego jest to, że czasami ludzie nie nazywają swoich treści logicznie i myślę, że tytuł artykułu lepiej odzwierciedla treść, która będzie znajdować się w każdym pliku tekstowym. * Skonstruuj białą listę poprawnych znaków i sam przeanalizuj ciąg, definiując podstawienia dla niebezpiecznych znaków. Wadą tego jest to, że wynik może być tak samo nieczytelny jak poprzednie rozwiązanie, ponieważ prawdopodobnie twórcy treści przeszli podobny proces podczas umieszczania plików na swoim serwerze. * Wybierz bardziej ogólny schemat nazewnictwa, umieść tytuł w pliku tekstowym wraz z innymi atrybutami i powiedz mojemu szefowi, aby z tym żył. Więc moje pytanie brzmi: jakie metody sprawdzają się w przypadku scenariusza, w którym trzeba konstruować nazwy plików z ciągów znaków z potencjalnie niebezpiecznymi znakami? Czy istnieje rozwiązanie, które lepiej wypełnia moje ograniczenia?


title: Czy warto podejmować zobowiązania wyłącznie po to, aby rozwiązać niekrytyczne literówki?

text: Jeśli natknę się na niekrytyczną literówkę w kodzie (powiedzmy, błędny apostrof w instrukcji print(error)), czy warto zrobić zatwierdzenie, aby naprawić ten błąd, czy po prostu zostawić go w spokoju? W szczególności jestem ciekaw, jak porównać gumowanie dziennika zatwierdzeń z wartością rozwiązania tych niekrytycznych literówek. Skłaniam się ku ich rozwiązaniu. Czy jestem pedantyczny?


title: WCF + N-warstwa = dlaczego?

text: Widziałem projekty, które używają warstwy N z WCF. Podczas tworzenia projektu WCF w rozwiązaniu często jest on nazywany słowem „usługa?” Główne pytania: Dlaczego i jakie korzyści masz podczas korzystania z WCF w odniesieniu do warstwy N? Która sytuacja powinna być używana z WCF i N-tier?


title: Czy obszerna dokumentacja to zapach kodu?

text: Każda biblioteka, projekt open-source i SDK/API, z jakimi kiedykolwiek się spotkałem, zostały zapakowane w (zazwyczaj duży) plik dokumentacji, co wydaje się być sprzeczne z szeroko rozpowszechnionym przekonaniem, że dobry kod wymaga niewielkich lub żadnych komentarzy. Co odróżnia dokumentację od tej metodologii programowania? jedno- lub dwustronicowy przegląd pakietu wydaje się rozsądny, ale elegancki kod w połączeniu ze standardowym intelisense powinien teoretycznie przekreślić dotychczasową praktykę tworzenia dokumentacji przez IMO. Czuję, że firmy tworzą tylko szczegółową dokumentację i tutoriale, ponieważ zawsze tak robiły. Dlaczego programiści mieliby nieustannie przeszukiwać dokumentację online, aby dowiedzieć się, jak to zrobić, gdy takie informacje powinny być nieodłączną częścią klas, metod i przestrzeni nazw?


title: Jak zidentyfikować procesy (biznesowe) do automatyzacji?

text: Niedawno rozpocząłem pracę w firmie i zajmuję się statystyczną analizą danych i obsługą danych (badania rynkowe). Wiele z moich zadań było wcześniej wykonywanych całkowicie ręcznie, dlatego stworzyłem kilka narzędzi do automatyzacji większości mojej pracy. Mój szef zapytał, czy mogę iść dalej i poszukać innych możliwości automatyzacji. Na pewno mam czas i umiejętności, ale nie wiem jak znaleźć procesy, które byłyby dobrymi kandydatami do automatyzacji. Mógłbym zapytać współpracowników, ale większość z nich nie rozumie, co jest łatwe do zautomatyzowania, a co nie. Wierzę, że istnieją procesy na tego typu rzeczy - ale nie wiem wystarczająco dużo, aby zacząć Googling. **Co jest przed wykrywaniem i analizą wymagań?** **Jak zidentyfikować procesy biznesowe, które będą wydajniejsze jako zadania automatyczne?**


title: Co powinienem zrobić, czekając na recenzję?

text: Zanim zadam pytanie, muszę wyjaśnić sytuację. Pracuję dla firmy jako młodszy inżynier oprogramowania. Jeden z seniorów zawsze mnie zatrzymuje, gdy kończę rozwój i chcę się zaangażować. Zawsze chce, żebym poczekała, aż to przejrzy. To jest ok, ponieważ zwykle znajduje jakieś błędy i dokonuje pewnych optymalizacji. Muszę jednak zatwierdzić swój kod przed upływem terminu. Kiedy skończyłem, dzwonię do niego i mówię, że to skończone. Zwykle się spóźnia. Więc mój kod też się spóźnia. Moje pytanie brzmi, co mam zrobić? Mam poczekać z nim na recenzję? **EDYCJA:** Dodatek do pytania. Ciekawi mnie jeszcze jedna kwestia. Chcę być wolny podczas kodowania. Jak zdobyć zaufanie do wolności rozwoju? **Kilka wyjaśnień:** Rozmawiałem z nim na ten temat. Ale to nie pomogło. Korzystamy już z narzędzia do śledzenia problemów, ale nie ma żadnego zadania dotyczącego recenzji. Są tylko zadania programistyczne i testowe.


title: Jak przekonać kierownika projektu, że nie ma sposobu na rozwiązanie wszystkich problemów ze zgodnością?

text: Pracuję nad tym projektem od ponad roku, a zbliżamy się do premiery, kierownik projektu chce, aby produkt był doskonały i działał w każdym aspekcie. Podoba mi się to i uwielbiam pracować pod ideą perfekcji, ale wygląda na to, że zbytnio opóźnia wprowadzenie na rynek z powodu problemów z kompatybilnością, chce, aby produkt działał w każdej instalacji, w każdej możliwej konfiguracji, a w większości przypadków w produkcie po prostu działa bez problemów, gdy jest w rękach klienta. * * * UPDATE : tak, produkt nie działa poprawnie, gdy występują konflikty, na przykład inne produkty, które nie używają wytycznych ani standardów do ładowania bibliotek (powoduje podwójne ładowanie biblioteki, co prowadzi do awarii), bufor to kolejny przykład i tak dalej ..... ale ostrzegamy klientów o konflikcie przed zakupem i pomagamy im go naprawić po zakupie * * * Próbowałem to wyjaśnić, podając kilka przykładów na głównych produktach, rozumie sytuację, ale nie może wierzyć, że jest prawie niemożliwe (jeśli nie jest niemożliwe), aby robić to, czego chce. Mam nadzieję, że zostało to wystarczająco wyjaśnione, aby społeczność mogła odpowiedzieć.


title: Doświadczenia z WebSphere?

text: Niedługo będę stażystą w banku (to moja pierwsza praca związana z oprogramowaniem) i powiedziano mi, że będę pracował głównie z: * Java (znam już SE) * WebSphere * DB2 Widziałem ten wątek na reddicie ostatnio i powiedzmy, że trochę się skuliłem podczas czytania komentarzy. Obecnie przechodzę przez Head First JSP & Servlet i używam tomcat jako kontenera, aby trochę wyprzedzić. Chciałbym poznać Twoje doświadczenie w pracy z powyższymi technologiami. Czy WebSphere naprawdę jest taki zły z serwera? czy jest to tylko typowa redditowa nienawiść do Javy?


title: Jak statyczny system typów wpływa na projekt języka opartego na prototypie?

text: Artykuł Wikipedii na temat języków opartych na prototypach zawiera następujący akapit: > Prawie wszystkie systemy oparte na prototypach są oparte na językach interpretowanych i dynamicznie > typowanych. Systemy oparte na statycznie typowanych językach są jednak > technicznie wykonalne. W jaki sposób statyczny system typów nakłada ograniczenia lub wprowadza złożoność w języku opartym na prototypach i dlaczego istnieje więcej dynamicznie typowanych języków prototypowych?


title: Co to jest parser XML expat?

text: Znalazłem termin tutaj: https://developer.mozilla.org/en/Mozilla_Web_Developer_FAQ Wiem co to jest parser XML. nie rozumiem; co to właściwie jest parser XML **expat**?


title: Jeśli masz kawałek logiki, który musi być dzielony między dwa kontrolery, gdzie go trzymasz?

text: Mam zestaw funkcji jednofunkcyjnych, których potrzebuję w dwóch oddzielnych kontrolerach. W tej chwili mam tylko zduplikowany kod i chcę się go pozbyć. Ten kod jest częścią kontrolera i nie należy do mojej warstwy usług. Gdzie byś to położył?


title: Jak ocenić projekt open source z myślą o dołączeniu?

text: Zakładając, że znalazłem projekt open source, który mnie interesuje, jak ocenić projekt (członków, poziom aktywności itp.), aby ustalić, czy dołączenie do projektu będzie dobrym sposobem wykorzystania mojego czasu i energii?


title: Czy FFMpeg obsługuje przyspieszenie GPU kodowania/dekodowania multimediów?

text: Zastanawiałem się, czy ffmpeg obsługuje przyspieszenie GPU. Czytałem na ich stronach internetowych i natknąłem się na sprzeczne informacje. http://www.ffmpeg.org/general.html#Video-Codecs -H.264 / AVC / MPEG-4 AVC / MPEG-4 część 10 (akceleracja VDPAU) http://ffmpeg.org/trac/ffmpeg/ wiki/x264EncodingGuide — Czy karta graficzna przyspieszy kodowanie x264? Nie. libx264 ich nie używa (przynajmniej jeszcze nie). Istnieje kilka zastrzeżonych koderów, które wykorzystują GPU, ale to nie znaczy, że są dobrze zoptymalizowane, chociaż czas kodowania może być krótszy; i mogą być gorsze niż x264 i prawdopodobnie wolniejsze. Niezależnie od tego, FFmpeg dzisiaj nie obsługuje żadnych sposobów kodowania gpu, poza libx264. Jeśli nie, czy jest jakiś sposób na dodanie akceleracji GPU do kodowania/dekodowania h.264?


title: "Morale pracowników to odpowiedzialność pracownika"

text: Jak prawdziwe powinno (lub czy) brzmi to stwierdzenie dla programistów? Wiele osób, z którymi rozmawiałem, mówi „wszędzie tak jest”, podczas gdy podobna liczba traktuje to jako praktycznie zaproszenie do rezygnacji. To oszałamiające stwierdzenie i jestem ciekawa, czy ktoś tego doświadczył i ma pomysły, jak podejść do menedżera, który podziela ten punkt widzenia.


title: „jak zły” jest niepowiązany kod w bloku try-catch-finally?

text: To jest pokrewne pytanie: Czy użycie klauzuli ostateczności do wykonania pracy po zwrocie jest złym stylem/niebezpieczne? W przywoływanym Q ostateczny kod jest związany z używaną strukturą i koniecznością wstępnego pobierania. Moje pytanie jest trochę inne i wierzę, że jest istotne dla szerszej publiczności. Mój konkretny przykład to aplikacja winform w języku C#, ale w końcu dotyczyłoby to również użycia C++ / Java. Zauważam sporo bloków try-catch-finally, w których jest dużo kodu niezwiązanego z wyjątkami i obsługą wyjątków / czyszczeniem zakopanym w bloku. I przyznam, że mam tendencję do posiadania bardzo ciasnych bloków try-catch-finally z kodem ściśle związanym z wyjątkiem i obsługą. Oto kilka przykładów tego, co widzę. Bloki try będą miały wiele wstępnych wywołań i zmiennych, które prowadzą do kodu, który może zostać wygenerowany. Informacje o logowaniu zostaną skonfigurowane i uruchomione również w bloku try. Wreszcie bloki będą miały wywołania formatowania formularzy / modułów / kontrolek (pomimo tego, że aplikacja ma się zakończyć, co zostało wyrażone w bloku catch), a także tworzenie nowych obiektów, takich jak panele. Z grubsza: methodName( ... ) { try { // Dużo kodu dla metody ... // Kod, który może rzucić ... // Dużo więcej kodu dla metody i zwrot ... } catch(coś) { // obsłuż wyjątek } w końcu { // jakieś czyszczenie z powodu wyjątku, zamykanie rzeczy // więcej kodu dla rzeczy, które zostały utworzone (ignorując, że wszelkie wyjątki mogły zostać zgłoszone) ... // może utwórz więcej obiektów } } kod działa, więc ma jakąś wartość. Nie jest dobrze zahermetyzowany, a logika jest nieco zawiła. Jestem (boleśnie) zaznajomiony z ryzykiem związanym z przenoszeniem kodu, a także z refaktoryzacją, więc moje pytanie sprowadza się do chęci poznania doświadczeń innych z podobnie ustrukturyzowanym kodem. Czy zły styl usprawiedliwia wprowadzenie zmian? Czy ktoś się mocno poparzył z podobnej sytuacji? Czy zechciałbyś podzielić się szczegółami tego złego doświadczenia? Zostawić tak, bo przesadzam, a to nie jest taki zły styl? Zyskaj korzyści związane z utrzymaniem porządku dzięki porządkowaniu rzeczy?


title: Jak dodać funkcję potwierdzania do wzorca poleceń, biorąc pod uwagę, że odpowiedź od odbiorcy jest otrzymywana asynchronicznie na serwerze?

text: Mam scenariusz, w którym zaimplementuję wzorzec poleceń opisany w tym artykule. Właściwie z widoku Asp.Net MVC, niektórzy użytkownicy będą wywoływać różne polecenia/działania, takie jak Uruchom wideo na żywo, Uruchom obraz na żywo, Rozpocznij nagrywanie itp. Następnie serwer Web Socket otrzyma te polecenia i wyśle je do odbiornika (aplikacji opartej na systemie Windows ). Odbiorca przed wykonaniem żądanego polecenia najpierw potwierdzi odebrane polecenie i potwierdzi nadawcy, że wysłane polecenie zostało odebrane do przetworzenia. Uwaga: Potwierdzenie i/lub rzeczywista odpowiedź zostaną zwrócone do serwera Web Socket Server zawsze w sposób asynchroniczny, a następnie odpowiednio wysłane do nadawcy. Oznacza, że cały system jest oparty na zdarzeniach. Więc moje pytanie brzmi: Biorąc pod uwagę wzorzec polecenia opisany w artykule, teraz, w jaki najlepszy sposób mógłbym dodać do niego Potwierdzenie polecenia i czy zwrócone potwierdzenie i/lub rzeczywista odpowiedź będą również w formie jakiegoś polecenia/wiadomości czy czegoś innego? Jeśli mamy zrobić coś innego w celu wysłania potwierdzenia lub odpowiedzi, to jakiego wzorca użyć?


title: Produktywność Pythona VS Produktywność Java

text: Powyżej w SO natknąłem się na pytanie, która platforma, Java czy Python, jest najlepsza do programowania w Google AppEngine. Wiele osób chwaliło się zwiększoną produktywnością wynikającą z używania Pythona w porównaniu z Javą. Jedną rzeczą, którą chciałbym powiedzieć na temat argumentu produktywności Python vs Java, jest to, że Java ma doskonałe IDE, aby przyspieszyć rozwój, podczas gdy Pythonowi naprawdę brakuje w tej dziedzinie ze względu na swoją dynamiczną naturę. Więc chociaż wolę używać Pythona jako języka, nie wierzę, że daje to znaczny wzrost wydajności w porównaniu z Javą, zwłaszcza gdy używam nowego frameworka. Oczywiście, gdyby była to Java vs Python, a jedynym edytorem, którego można użyć, był VIM, to Python dawałby ogromny wzrost produktywności, ale kiedy IDE zostaną wprowadzone do równania, nie będzie to tak jasne. Myślę, że zalety Javy są często oceniane wyłącznie na poziomie języka i często na podstawie przestarzałych założeń, ale Java ma wiele zalet zewnętrznych w stosunku do samego języka, np. JVM (często krytykowana, ale oferuje ogromny potencjał), doskonałe IDE i narzędzia, ogromna liczba osób trzecich Biblioteki imprezowe, platformy itp. Pytanie: Czy Python/pokrewne języki dynamiczne naprawdę zapewniają ogromny wzrost wydajności, o którym często się mówi? (z uwzględnieniem wykorzystania nowych frameworków i pracy ze średnimi i dużymi aplikacjami).