title: Gdzie są wszyscy administratorzy baz danych?

text: Z jakiegoś powodu pewnego dnia zacząłem myśleć o DBA i tym, co robią. Ten wątek w pewnym stopniu odpowiada na to pytanie, ale potem z ciekawości spojrzałem na wiodącą witrynę z ofertami pracy w mojej okolicy i wygląda na to, że jest więcej zadań Oracle DBA niż wiele innych specjalizacji technologicznych. Nawet stosunkowo powszechnie brzmiące, takie jak „Java Developer” czy „Network Administrator”. Oto rzecz: pracuję w tej branży od dziesięciu lat, pracowałem na kilku stanowiskach (w kilku w dość dużych sklepach korporacyjnych) i nigdy nie widziałem prawdziwego DBA na żywo. Zwykle był wokół siebie samouk „guru bazy danych”, który był pierwszym facetem od problemów z bazą danych (inaczej zatrudniony jako programista, jak reszta z nas), ale nigdy nie widziałem nikogo na oficjalnej roli DBA, nigdzie, nigdy. Więc gdzie są wszyscy administratorzy baz danych? Zgaduję, że ponieważ wszystkie miejsca, w których do tej pory pracowałem, były stosunkowo zorientowane na aplikacje, po prostu nigdy nie spotkałem się z bardzo hardkorowym środowiskiem z dużą ilością DB. W tym samym czasie co najmniej jedna z prac, które wykonywałem, wydawała się dość ekstremalną operacją skoncentrowaną na danych (rynki czasu rzeczywistego/systemy transakcyjne, ogromne bazy danych), a nawet tutaj jedynymi „ludźmi baz danych” byli ci „programiści, którzy były guru bazy danych na boku”. Brak oficjalnych ról DBA. Czy to naprawdę tylko przypadek, że nigdy nie byłem w środowisku, w którym potrzebni są administratorzy baz danych? Jeśli tak, jakie to środowisko? Czy to zjawisko może mieć związek z dzisiejszymi centrami danych, które są oddzielnymi/zlecanymi na zewnątrz operacjami, więc większość programistów po prostu ich już nie widzi? **Uwaga:** Zasadniczo staram się zrozumieć, gdzie jest podział między „programistami, którzy dobrze znają bazy danych” a rzeczywistymi administratorami baz danych. Wygląda na to, że wiele ról deweloperów wymaga obecnie dość hardkorowej wiedzy o bazach danych (i że większość zespołów programistycznych - nawet w środowiskach z dużym obciążeniem bazami danych - radzi sobie bez oficjalnego DBA w personelu). tj. Proszę nie zamykać ani nie przenosić się do dba.SE.


title: Javascript: funkcje anonimowe

text: Jak włączyć tę definicję funkcji anonimowej? Funkcja anonimowa to funkcja przypisana do zmiennej. Funkcje anonimowe są również używane, gdy chcesz wykonać krótkie i proste zadanie, w analogii?


title: Język naturalny w kryteriach wyszukiwania — zakresy dat

text: Rozważmy aplikację, która przechowuje zestaw rekordów, które zawierają: * Opis * Koszt * Data zakupu. Chciałbym umożliwić użytkownikom przeszukiwanie zbioru danych za pomocą języka naturalnego. Na przykład wyrażenie wyszukiwania: > niebieski z ostatniego miesiąca mniej niż 20 zł przełożyłoby się na (Linq jako przykład - poprawność zapytania nie jest kwestionowana): _db.Widgets.Where(w => w.Description.Contains( 'niebieski') && w.PurchaseDate >= DateTime.Now.AddMonths(-1) && w.Cost < 20) Mam problem ze znalezieniem punktu wyjścia. Wszelkie zasoby, które pomogą mi we właściwym kierunku, będą mile widziane (pracuję w .NET).


title: Jaki rodzaj pracy kontraktowej zapewnia największą stabilność, oferując jednocześnie elastyczność?

text: Starałam się sformułować to pytanie w taki sposób, aby pomogło innym, którzy są ciekawi tego samego, co ja. Obecnie jestem pełnoetatowym programistą C++. Zajmuję się również trochę programowaniem C#/.NET. Łącznie mam ponad 4 lata doświadczenia. Przyjrzałem się możliwości programowania kontraktowego. Staram się nie utknąć na zawsze w jednym zespole/projektu. Jestem samotna, nie mam dzieci i mam wystarczająco dużo zaoszczędzonych pieniędzy, aby przetrwać ponad rok bez dochodu. Mieszkam w jednym z największych miast w Stanach Zjednoczonych. Wiem, że istnieją różne rodzaje pracy kontraktowej, takie jak W2, praca niezależna, umowa na zlecenie itp. Szukam pracy na umowach, które trwają od 6 miesięcy do roku . Chciałbym uniknąć konieczności samodzielnego wykonywania większości prac marketingowych/ogólnych i po prostu zająć się programowaniem. Myślałem o zdobyciu pracy kontraktowej przez różne agencje, a oni otrzymaliby obniżkę wynagrodzenia za wykonanie dla mnie prac poszukiwawczych/ogólnych. Po prostu czuję się tak utknęła w mojej obecnej pracy i chcę mieć swobodę pracy nad różnymi projektami i mieć pewną elastyczność w zakresie godzin i lokalizacji (niezależnie od tego, czy pracujesz w domu, czy w innym biurze). Nie mam ochoty przechodzić na wyższe stanowiska kierownicze ani codziennie poruszać się po polityce biurowej. Jaka byłaby najlepsza opcja dla kogoś w mojej sytuacji? Kontrakty W2 za pośrednictwem agencji? Nie miałbym nic przeciwko dostaniu trochę niższego wynagrodzenia, o ile ktoś zajmowałby się większością związanych z tym prac marketingowych/ogólnych.


title: Java Communication API nie jest dostępna dla systemu Windows

text: Chcę napisać program w Javie używając RS-232. Ale nie mogę znaleźć pakietu java.comm dla systemu Windows. Z jakiej biblioteki powinienem skorzystać w tym celu? http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-misc-419423.html Jedyne dostępne pakiety nie są przeznaczone dla systemu Windows. Czy możesz mnie poprowadzić, ponieważ jestem nowy w tego rodzaju rozwoju. Używając rxtx + java otrzymałem ten kod z internetu import java.util.Enumeration; importuj gnu.io.CommPortIdentifier; public class SimpleWrite { public static void main (args String []) { Wyliczenie lista_portów = CommPortIdentifier.getPortIdentifiers(); System.out.println(lista_portów); while (port_list.hasMoreElements()) { CommPortIdentifier port_id = (CommPortIdentifier)port_list.nextElement(); if (port_id.getPortType() == CommPortIdentifier.PORT_SERIAL) { System.out.println ("Port szeregowy:" + port_id.getName()); } else if (port_id.getPortType() == CommPortIdentifier.PORT_PARALLEL) { System.out.println ("Port równoległy:" + port_id.getName()); } else System.out.println ("Inny port:" + port_id.getName()); } } } Ale ten kod daje mi błąd gnu.io.rxtx.properties nie został wykryty.


title: Czy frameworki wprowadzają za dużo abstrakcji?

text: Programuję od niespełna roku i mam pewne doświadczenie w pisaniu aplikacji systemowych, aplikacji internetowych i skryptów dla firm/organizacji. Jednak jedną rzeczą, której nigdy tak naprawdę nie robiłem, jest praca z frameworkiem takim jak Django, Rails czy Zend. Patrząc na framework Django, jestem trochę sfrustrowany tym, jak wiele jest abstrahowanych we frameworkach. Rozumiem podstawowe cele DRY i minimalnego kodu, ale niektóre z tego nadmiernego polegania na różnych modułach i ciężkiej abstrakcji podstawowych funkcji są takie same: , 2. Sprawia, że kod jest trudny do zrozumienia z powodu mnóstwa dostępnych frameworków i modułów oraz wszystkich ich cech charakterystycznych, 3. Sprawia, że kod jest mniej logiczny, chyba że przeczytałeś całą dokumentację; tzn. potrafię przeczytać niektóre wyrażenia listowe i logikę warunkową i dowiedzieć się, co robi program, ale kiedy widzisz funkcje, które wymagają przekazywania dowolnych ciągów i słowników, sprawy stają się trochę trudne do zrozumienia, chyba że jesteś już guru w dany moduł; oraz: 4. Sprawia, że przełączanie się między frameworkami jest trudne i żmudne. Przełączanie się między językami jest już wyzwaniem, ale można nim zarządzać, jeśli masz wystarczająco silne zrozumienie ich podstawowej funkcjonalności/filozofii. Przełączanie między frameworkami wydaje się być bardziej kwestią zapamiętywania na pamięć, co pod pewnymi względami wydaje się sprzyjać samej nieefektywności, którą te frameworki miały wyeliminować. Czy naprawdę musimy umieścić 50 warstw abstrakcji na czymś tak prostym jak zapytanie MySQL? Dlaczego nie użyć czegoś takiego jak interfejs PHP PDO, gdzie przygotowane instrukcje/testowanie danych wejściowych jest obsługiwane, ale powszechnie zrozumiałe zapytanie SQL jest nadal częścią funkcji? Czy te abstrakcje są naprawdę przydatne? Czy rozdęcie funkcji nie czyni ich bezużytecznymi, czyniąc aplikacje trudniejszymi w porównaniu z podobnymi aplikacjami napisanymi bez użycia frameworka?


title: Analiza statyczna, analiza dynamiczna i testowanie

text: Na podstawie odpowiedzi, które otrzymałem tutaj, a następnie potwierdzonych w niektórych autorytatywnych źródłach (nie ISTQB, co wydaje się zbyt niejasne), są 3 czynności: * Analiza statyczna * Analiza dynamiczna * Testowanie Ale czy jest jakiś powód, dla którego nie możemy tego wszystkiego połączyć jako "testowanie"? Mam na myśli, że nawet przegląd analizy dynamicznej programu w poszukiwaniu wycieków pamięci jest rodzajem testu, prawda?


title: Mały kod umożliwiający podstawianie słów w zależności od użytkownika

text: Tworzę demonstracyjną aplikację internetową w html, aby ludzie mogli fizycznie zobaczyć i skomentować aplikację przed zobowiązaniem się do prawidłowej kompilacji. Podczas gdy właściwa aplikacja będzie oparta na bazie danych, moje demo to zwykły html z kilkoma efektami JavaScript. Chcę pokazać, że różne grupy użytkowników będą widzieć różne słowa. Na przykład wyobraź sobie, że mam zdanie w html, które mówi: > Rozpoczęcie będzie kosztowało 100 funtów. To, czego potrzebuję, to jakiś sposób na zidentyfikowanie, że jeśli użytkownik uważa się za pochodzącego ze Stanów Zjednoczonych, zdanie mówi: > To będzie kosztować 100 USD na początek. To wymaganie pojawia się na wszystkich stronach, ale z przyjemnością dodam każdy z nich ręcznie. Więc wyobrażam sobie jakiś kod w stylu „najpierw usuń bagażnik [boot US]”, gdzie wersja brytyjska to „najpierw usuń boot”, ale kod mówi, że odwiedzający potrzebuje wersji amerykańskiej. Następnie szuka rozruchu (być może w bazie danych Access) i widzi, że tabela mówi o rozruchu dla US, wyświetlając 'trunk'. Nie jestem programistą, ale normalnie potrafię sklecić skrypty, więc mam nadzieję, że ktoś może mieć stosunkowo łatwe rozwiązanie w JavaScript, CSS lub ASP. Podsumowując: mam kilka słów lub krótkich zdań, które muszą wyglądać inaczej i w razie potrzeby chętnie wstawiam je ręcznie (ale byłoby jeszcze lepiej, gdyby słowa zostały automatycznie zmienione). I potrzebuję urządzenia, które pozwoli mi powiedzieć stronom, aby wybrały wersję amerykańską lub na przykład wersję nowozelandzką.


title: Usprawnianie wdrażania ASP.Net MVC?

text: Posiadam VPS z systemem Windows Server 2012. Mogę zainstalować na nim co chcę. W przeszłości podczas wdrażania projektu ASP.Net MVC klikałem prawym przyciskiem myszy projekt w rozwiązaniu i `Opublikowałem` go. Następnie skopiowałbym pliki do folderu IIS i byłoby to dla mnie „wdrożenie”. Ale to już nie jest coś, co chcę robić. Musi być prostszy sposób, prawda? Jak mogę usprawnić proces wdrażania? Jestem w 100% w ciemności na ten temat z .NET. Czy mogę skonfigurować coś na moim serwerze, aby móc korzystać z usługi Web Deploy na moim serwerze VPS? A może istnieje lepsza alternatywa? Dziękuję Ci!


title: rozwiązać problem węzła krawędziowego TOR za pomocą .onion proxy?

text: Chciałbym ulepszyć sieć TOR, gdzie węzły wyjściowe są podatne na ukrywanie ruchu. Z mojego zrozumienia, ruch do witryn .onion nie jest odszyfrowywany przez węzły wyjściowe, więc teoretycznie serwer proxy witryny .onion może być używany do dalszej anonimizacji ruchu. Tak nie? być może masz wgląd w kodowanie i routing kryjący się za tymi koncepcjami, aby wyjaśnić, dlaczego jest to dobry/niedobry pomysł.


title: Baza danych zgodna z ACID, która nie jest NoSQL?

text: Niekoniecznie pytam, czy baza danych NoSQL może być zgodna z ACID, o co pytano tutaj: Czy jest jakiś NoSQL zgodny z ACID? Zastanawiam się, czy mamy teraz lub w przyszłości bazę danych, której brakuje, czy jest to kolejna opcja dla tradycyjnego RDBMS? Wiem, że NoSQL miał być wielką rzeczą, a RDBMS miały zejść na margines i tak dalej (nie wiem, ile artykułów na ten temat). Ale to nigdy tak naprawdę nie rozwiązało problemu danych, które były bardzo surowe i musiały być spójne (takie jak transakcje bankowe… takie rzeczy). Więc kiedy RDBMS miał "podobno" zejść na bok... co miało zastąpić te dane, które musiały być surowe?


title: Organizacje płaskie a hierarchiczne dla rozwoju oprogramowania

text: Moja organizacja była płaska dwa lata temu i ludzie uważali, że dyrektor generalny ma nieproporcjonalne, niemal dyktatorskie uprawnienia. Również dyrektor generalny nie miał czasu na szkolenie pracowników, więc niektórzy pracownicy byli dysfunkcyjni i nic z nimi nie zrobiono. Jednak z drugiej strony wszyscy byli zaangażowani w podejmowanie decyzji, stąd motywacja była bardzo wysoka. Więc co myślisz o płaskich i hierarchicznych strukturach organizacyjnych w tworzeniu oprogramowania?


title: Zrozumienie słów kluczowych clojure

text: Pierwsze kroki stawiam z Clojure. Poza tym jestem trochę kompetentny w JavaScript, Pythonie, Javie i trochę C. Czytałem ten artykuł, który opisuje destrukturyzację wektorów i map. Np. => (def punkt [0 0]) => (niech [[x y] punkt] => (println "współrzędne to:" x y)) współrzędne to: 0 0 ale mam trudności ze zrozumieniem słów kluczowych. Na pierwszy rzut oka wydają się bardzo proste, ponieważ same oceniają: => :test :test Ale wydaje się, że używa się ich na wiele różnych sposobów i nie rozumiem, jak o nich myśleć. Np. możesz też robić takie rzeczy: => (defn imię i nazwisko [& {first :first last :last}] => (println first last)) => (imię :first "Tom" :last " Brennan”) Tom Brennan zero To nie wydaje mi się intuicyjne. Zgadywałbym, że argumenty powinny wyglądać bardziej w stylu: (pełne imię {:first "Tom" :last "Brennan"}), ponieważ wygląda na to, że w definicji funkcji mówisz "brak wymaganych argumentów, ale zmienna liczba argumentów ma postać pojedynczej mapy”. Ale wygląda na to, że mówisz "brak wymaganych argumentów, ale przychodzi zmienna liczba argumentów, która powinna być listą naprzemiennych słów kluczowych i wartości...?" Nie jestem do końca pewien, jak to wszystko ogarnąć. Również takie rzeczy dezorientują mnie: => (def populacja {:humans 5 :zombies 1000}) => (:zombies populacja) 1000 => (populacja :zombies) 1000 Jak mapy i słowa kluczowe nagle stają się funkcjami? Gdybym mógł uzyskać jakieś wyjaśnienie dotyczące użycia słów kluczowych w tych dwóch przykładach, byłoby to bardzo pomocne. **Aktualizacja** Widziałem również http://stackoverflow.com/questions/3337888/clojure-named-arguments i chociaż przyjęta odpowiedź jest świetnym pokazem, jak używać słów kluczowych z destrukturyzacją i nazwanymi argumentami, jestem naprawdę bardziej szukam zrozumienia, jak o nich myśleć – dlaczego język jest zaprojektowany w ten sposób i jak najlepiej zinternalizować ich użycie.


title: Czy nadużywam drzew jako modelu, czy są one po prostu bardzo powszechne?

text: Pracuję nad projektem i odkryłem, że zamodelowałem dwa największe komponenty jako drzewa. Moje dotychczasowe główne zastosowania to: 1. Ogólne modelowanie fizycznych pojemników (i podkontenerów, podkontenerów itp.) 2. Modelowanie próbek ciekłych (i podpróbek i pochodnych próbek - i ich podrzędnych itp.) Teraz muszę modelować niektóre imprezy oparte na wysyłce próbek m.in. zebrane w lokalizacji X, po przybyciu do centrum przetwarzania wykonaj Y Teraz wydaje się naturalne modelowanie zdarzeń jako drzewa w celu oznaczenia, które zdarzenia następują po innych. Zaczynam się zastanawiać, czy widzę wszędzie drzewa, bo tego chcę, czy też jest to legalne podejście? **Edytuj, aby odpowiedzieć na kilka zebranych punktów** Wydaje się, że wszyscy zgadzają się z drzewami dla pojemników. W przypadku próbek ciekłych, chociaż są różne rodzaje - to, co naprawdę muszę śledzić, to pochodzenie, aby na podstawie dowolnej próbki szybko znaleźć wszystkie rzeczy, które w jakiś sposób się z niej wywodzą. Powiedziano mi, że mogę założyć, że próbki nie będą łączone, więc wszystkie podpróbki (lub pochodne) będą miały tylko jednego rodzica. Jeśli chodzi o wydarzenia, tak, myślę, że po prostu wybrałem drzewo dla ułatwienia. Po przeczytaniu komentarzy i dalszych przemyśleń nie ma to dla mnie większego sensu. Dzięki wszystkim za wkład.


Czy programowanie symboliczne i metaprogramowanie to to samo? Zawsze czytałem o programowaniu symbolicznym podczas korzystania z Mathematica, ale nigdy nie szukałem jego znaczenia, szukałem go dzisiaj i stwierdziłem, że oba pojęcia są podobne, czy są jakieś różnice?


title: Nauczyłeś się kiedyś umiejętności rysowania/sztuki?

text: Często widuję programistów, którzy doradzają ludziom, którzy nie znają technologii, że powinni „po prostu nauczyć się kodować”, jeśli chcą zrealizować swój wielki pomysł, mówiąc, że nie jest to takie trudne. Jednak podczas gdy jako programiści możemy być biegli w pisaniu stron internetowych, w tym backendów i systemów CMS itp., nadal istnieje wielka potrzeba, aby to coś **ładnie wyglądało.** Zwykle możemy wykorzystać cliparty i szablony itp. oraz dokonać edycji obrazu, aby dawać sobie radę finansowo. Ale zgaduję, że umiejętność samodzielnego rysowania oryginalnej sztuki byłaby dużą zaletą. Więc moje pytanie brzmi: czy ktoś tutaj próbował odświeżyć swoje umiejętności artystyczne, aby pomóc w projektowaniu aspektów swoich projektów? Wiem, że niektórzy ludzie „zawsze” byli dobrzy w sztuce, a przynajmniej byli dobrzy w rysowaniu od czasów licealnych, ale jestem ciekawa, kto przeszedł od bycia złym w rysowaniu do regularnego wykonywania oryginalnych dzieł sztuki, które weszły do produkcji w witrynie lub interfejsie aplikacji.


title: Kompilator JIT dla C, C++ i tym podobnych

text: Czy istnieje kompilator just-in-time dla języków kompilowanych, takich jak C i C++? (Pierwsze nazwy, które przychodzą na myśl, to Clang i LLVM! Ale nie sądzę, że obecnie to obsługują.) Wyjaśnienie: Myślę, że oprogramowanie może skorzystać z informacji zwrotnych dotyczących profilowania w czasie wykonywania i agresywnie zoptymalizowanej rekompilacji hotspotów w czasie wykonywania, nawet w przypadku skompilowanych- języki maszynowe, takie jak C i C++. Optymalizacja sterowana profilem wykonuje podobną pracę, ale z tą różnicą, że JIT byłby bardziej elastyczny w różnych środowiskach. W PGO uruchamiasz swój plik binarny przed jego wydaniem. Po wydaniu nie będzie używał żadnych informacji zwrotnych dotyczących środowiska/wejścia zebranych w czasie wykonywania. Więc jeśli wzorzec wejściowy zostanie zmieniony, jest to próba obniżenia wydajności. Ale JIT działa dobrze nawet w takich warunkach. Jednak myślę, że kontrowersyjne jest to, czy korzyści związane z wydajnością kompilacji JIT przewyższają własne koszty.


title: W jaki sposób JavaScript jest niepewny i jakie są główne metody używane do radzenia sobie z tym?

text: Właśnie przeczytałem o Caja, która jest „oczyszczoną” wersją JavaScriptu. Ale zastanawiam się - jaki jest duży problem z JavaScriptem (wydaje się, że jest tak powszechnie używany)? Jak bardzo jest to niebezpieczne?


title: Dlaczego nie zostałem wybrany w rozmowie kwalifikacyjnej?

text: W rozwoju pracuję od 4 lat, a 3,5 w PHP - dlaczego nie mogę zostać wyselekcjonowany na rozmowie kwalifikacyjnej. Chcę wiedzieć, jakie szczególne rzeczy ankieter chce zobaczyć u kandydatów - na starsze stanowiska programisty PHP. Ankieter zadaje mi 10 pytań, a ja jestem w stanie odpowiedzieć tylko na 5. Czy selekcja zależy od tych rzeczy? Nie oznacza to, że nie mogę rozwiązać problemu, mogę wygooglować pytanie, mogę zadać na forach. Dlaczego nie rozumieją, że mężczyzna nie pamięta wszystkich odpowiedzi na każde pytanie? Zwłaszcza programistyczne. Proszę doradź.


title: Wprowadzenie konstrukcji programowania funkcjonalnego w niefunkcjonalnych językach programowania

text: To pytanie ostatnio dość często przychodzi mi do głowy, a ponieważ nie znalazłem na nie przekonującej odpowiedzi, chciałbym wiedzieć, czy inni użytkownicy tej strony również o tym pomyśleli. W ostatnich latach, mimo że OOP jest nadal najpopularniejszym paradygmatem programowania, programowanie funkcjonalne zyskuje na znaczeniu. W swojej pracy używałem tylko języków OOP (C++ i Java), ale staram się nauczyć trochę FP w wolnym czasie, ponieważ uważam to za bardzo interesujące. Tak więc zacząłem uczyć się Haskella trzy lata temu i Scali zeszłego lata. Planuję również nauczyć się trochę SML i Caml, a także odświeżyć moją (małą) wiedzę na temat Scheme. Cóż, dużo planów (zbyt ambitnych?), ale mam nadzieję, że w ciągu najbliższych kilku lat znajdę czas, aby nauczyć się chociaż podstaw FP. Dla mnie ważne jest to, jak działa programowanie funkcjonalne i jak/czy mogę je wykorzystać w realnych projektach. Opracowałem już małe narzędzia w Haskell. Pomimo mojego dużego zainteresowania FP, trudno mi zrozumieć, dlaczego konstrukcje programowania funkcjonalnego są dodawane do języków takich jak C#, Java, C++ i tak dalej. Jako programista zainteresowany FP uważam, że bardziej naturalne jest używanie, powiedzmy, Scali lub Haskella, zamiast czekać na dodanie kolejnej funkcji FP do mojego ulubionego języka, który nie jest FP. Innymi słowy, dlaczego miałbym chcieć mieć tylko **niektóre** FP w moim oryginalnym języku niebędącym językiem FP, zamiast szukać języka, który ma lepszą obsługę FP? Na przykład, dlaczego miałbym być zainteresowany posiadaniem lambd w Javie, jeśli mogę przełączyć się na Scala, gdzie mam znacznie więcej koncepcji FP i mimo to mam dostęp do wszystkich bibliotek Java? Podobnie: dlaczego **niektóre** FP w C# zamiast używać F# (o ile wiem, C# i F# mogą współpracować)? Java została zaprojektowana jako OO. Cienki. Mogę robić OOP w Javie (i chciałbym nadal używać Javy w ten sposób). Scala została zaprojektowana do obsługi OOP + FP. W porządku: mogę używać kombinacji OOP i FP w Scali. Haskell został zaprojektowany dla FP: mogę robić FP w Haskell. Jeśli potrzebuję dostroić wydajność konkretnego modułu, mogę połączyć Haskella z niektórymi zewnętrznymi procedurami w C. Ale dlaczego miałbym chcieć robić OOP z tylko ** jakimś podstawowym ** FP w Javie? Więc moim głównym celem jest: dlaczego niefunkcjonalne języki programowania są rozszerzane o **jakąś** koncepcję funkcjonalną? Czy nie powinno być bardziej komfortowe (ciekawe, ekscytujące, produktywne) programowanie w języku, który od samego początku został zaprojektowany jako funkcjonalny lub wieloparadygmatyczny? Czy różne paradygmaty programowania nie integrują się lepiej w języku, który został dla niego zaprojektowany, niż w języku, w którym jeden paradygmat został dodany dopiero później? Pierwszym wyjaśnieniem, jakie przyszło mi do głowy, jest to, że ponieważ FP jest nową koncepcją (wcale nie jest nowa, ale jest nowa dla wielu programistów), należy ją wprowadzać stopniowo. Pamiętam jednak moje przejście z imperatywu na OOP: kiedy zacząłem programować w C++ (pochodzącym z Pascala i C), naprawdę musiałem przemyśleć sposób, w jaki kodowałem, i zrobić to dość szybko. Nie było stopniowe. Nie wydaje mi się to więc dobrym wytłumaczeniem. Czy może być tak, że wielu nie-FP-idiomów nie jest tak naprawdę zainteresowanych zrozumieniem i używaniem programowania funkcjonalnego, ale uważają za praktycznie wygodne przyjęcie pewnych **idiomów FP** w ich języku innym niż FP? **WAŻNA UWAGA** Na wszelki wypadek (ponieważ widziałem kilka _wojen językowych_ na tej stronie): Wspomniałem języki, które znam lepiej, to pytanie w żaden sposób nie ma na celu rozpoczęcia porównań między różnymi językami programowania, aby zdecydować, który jest lepszy / gorzej. Nie interesuje mnie też porównanie OOP z FP (za i przeciw). Interesuje mnie to, aby zrozumieć, dlaczego FP jest wprowadzany po trochu do istniejących języków, które nie zostały do tego zaprojektowane, mimo że istnieją języki, które były / są specjalnie zaprojektowane do obsługi FP.


title: Dlaczego miałbym wybrać Unity zamiast Autofac?

text: Zamierzam uruchomić nową aplikację i chcę użyć Dependency Injection. Mam w naszym sklepie wiele „Microsoft to jedyny sposób, aby iść, faceci”, więc oczywiście Unity jest drogą, którą chcieli iść. Jednak bardziej skłaniam się ku Autfac ze względu na jego szybkość i funkcję modułu. Na tej stronie znalazłem wyniki dotyczące szybkości. Jeśli używasz Autofac lub Unity, czy możesz podać mi solidne powody, aby nie używać Unity i używać Autofac zamiast Unity? Jeśli nie, czy możesz wskazać mi dobry kierunek, aby przeprowadzić rozeznanie na temat powrotu na następne spotkanie?


title: Dlaczego podręczniki architektury komputerowej preferują architekturę MIPS?

text: Przeczytałem wiele podręczników architektury komputerowej i zastanawiam się, dlaczego większość z nich (jeśli nie wszystkie) używało MIPS jako architektury do nauczania. Dlaczego MIPS, a nie Intel, AMD czy coś innego? Co sprawia, że architektura nadaje się do nauczania?


title: Czy dodanie w nagłówku typu licencji wystarczy, aby powiedzieć: „mój kod jest licencjonowany”?

text: Czytałem na różnych stronach o licencjach. Właśnie umieściłem typ licencji w pliku nagłówkowym (w moim przypadku plik javascript, open-source): /* * "codeName" "version" * http://officialsite.com/ * * Copyright 2012 "codeName" * Wydany na licencji "LICENSE NAME" * http://officialsite.com/LICENSE NAME */ kod javascript... W tym samym folderze zostawiam kopię licencji. Listing folderu wygląda tak: * codeName.js * LICENSE W pliku `LICENSE` znajduje się pełny tekst licencji, z której korzysta mój kod. Nie mogę znaleźć nigdzie, które mówi, że to wystarczy, aby powiedzieć _mój kod jest licencjonowany_ (w przypadku open-source). Czy potrzeba czegoś więcej?


title: Czy pętle for mają być odczytywane do wewnątrz czy na zewnątrz?

text: for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { cout << arr2d[i][j] << "\t"; } cout << endl; ..... Na przykład tak. Czy czytasz pętlę for do wewnątrz-wychodząc (zaczynając od `for (j = 0; j < 4; j++)`) czy na zewnątrz (zaczynając od `for (i = 0; i < 3; i++)`) Po prostu zastanawianie się. :D


title: Pytanie o koncepcję przechowywania haseł

text: Moje poprzednie pytanie jest tutaj - Pytanie o przechowywanie haseł To pytanie jest trochę związane z moim poprzednim, ale z kilkoma nowymi wątpliwościami. Weźmy na przykład Windows. Słyszałem, że Windows przechowuje hasła w hashach NTLM gdzieś w rejestrze (jeśli się nie mylę). Istnieją programy, które łamią skróty NTLM w celu odzyskania haseł (metoda brute-force) na wypadek, gdybyś je zapomniał lub po prostu chciał zhakować czyjś komputer. Dlaczego po prostu nie zastąpią skrótów NTLM w rejestrze czymś powszechnym, takim jak - skrót NTLM „hasła”? To był tylko przykład dla twojego zrozumienia. Próbuję się dowiedzieć, jak duże programy przechowują, zmieniają lub weryfikują hasła bez możliwości ich odczytania przez hakera/napastnika?


title: Czy duży wzrost prędkości jest realistyczny w środowisku Scrum?

text: Mój menedżer ostatnio naprawdę naciskał na wykorzystanie szybkości jako celu i miary produktywności. Obecnie pracujemy ze średnią prędkością 50 punktów fabularnych. Mój menedżer chce, abyśmy zwiększyli go o 40% do 70 punktów fabularnych (bez zwiększania liczby członków zespołu). Jeśli nie osiągniemy tego wzrostu, chce, abyśmy przedstawili pełny opis wyjaśniający dlaczego. Cały pomysł mierzenia wydajności zespołu za pomocą prędkości i używania jej jako celu wydaje mi się błędny, ale trudno mi wyjaśnić, dlaczego. Jakaś pomoc? Dlaczego nie jest to właściwy sposób mierzenia i motywowania produktywności?


title: Wdrażanie uwierzytelniania użytkownika w wielowarstwowej aplikacji internetowej

text: _Doceniam wszelką pomoc i opinie. Części pogrubione są częściami krytycznymi, jeśli jest to zbyt szczegółowe. Być może warto wspomnieć, że jestem zielonym deweloperem. Znalazłem kilka przydatnych informacji z powiązanych pytań zamieszczonych tutaj i na Stack Overflow, ale nic, co miałoby 100% sensu._ ## Tło Obecnie pracujemy nad tworzeniem aplikacji internetowej ze ścisłymi ograniczeniami określonymi przez klienta. Normalnie jesteśmy sklepem Railsowym, ale klient naprawdę chciał z nami pracować. Dlatego, aby dopasować się do ich architektury, będziemy używać ASP.NET. Nie mamy dużego doświadczenia z ASP.NET, ale część zespołu, w tym ja, używała .NET do aplikacji desktopowych. Ta aplikacja jest trójwarstwowa i obejmuje: * Serwery publiczne * Serwery usług sieci Web * Serwery danych Klient oczekuje dużego popytu i może mieć wiele serwerów w jednej z warstw. Pomiędzy każdym poziomem znajduje się zapora. Z mojego punktu widzenia jest to bardzo powszechna konfiguracja. **Głównym celem jest zminimalizowanie liczby podróży przez sieć z serwera publicznego do bazy danych.** ## Problem **Jak radzimy sobie z uwierzytelnianiem użytkowników bez ograniczania wydajności aplikacji N-Tier z potencjalnie wieloma serwerami na każdym warstwa?** ## Co zrobiliśmy do tej pory Bawiliśmy się pomysłem użycia stanu widoku, ale ostatecznie uznaliśmy, że to kiepski pomysł. Oczywiście nie jesteśmy przeciwni ponownemu odwiedzaniu stanu widoku, ale uważamy, że stan widoku nie zapewnia żadnych korzyści w porównaniu z plikami cookie i po prostu utrudnia użytkownikowi otwieranie wielu kart naszej aplikacji. Odkrywam ścieżkę korzystania z domyślnego stanu sesji z niestandardowym zaimplementowanym magazynem sesji. **Domyślny stan sesji ma tendencję do generowania wielu żądań przechodzących przez sieć. Logowanie i wylogowanie jest w porządku, ale gdy użytkownik korzysta z aplikacji, nie chcemy tego.** Niestandardowy magazyn sesji pomaga zminimalizować wpływ, ale nie w wystarczającym stopniu. ## Wnioski i możliwy pomysł Ponieważ podróż do bazy danych będzie nieunikniona w przypadku prawie wszystkich żądań znajdujących się w aplikacji, być może najlepszym sposobem jest podanie użytkownikowi klucza po pomyślnym zalogowaniu. Następnie, gdy użytkownik zażąda nowej strony lub opublikuje nową stronę, możemy wysłać ten klucz z powiązaną transakcją SQL dla żądania i zweryfikować klucz. Wierzę, że to znacznie uprości bazę kodu. Powtórzmy więc problem: **Jak radzimy sobie z uwierzytelnianiem użytkowników bez ograniczania wydajności aplikacji wielowarstwowej z potencjalnie wieloma serwerami w każdej warstwie?** Czy powyższy pomysł brzmi jak solidna implementacja? Dzięki, Jonatonie


title: Jak zablokować przedmioty, gdy robimy zakupy w aplikacjach handlowych?

text: Mam konkretne wymagania. Powiedzmy, że mamy 3 przedmioty, a użytkownik wybrał wszystkie 3 przedmioty do kupienia. Muszę zablokować 3 przedmioty (co oznacza, że inne osoby, które chcą kupić te same przedmioty, nie mogą ich zobaczyć) na około 10 minut. Jak to zaimplementować? Zajmuję się tworzeniem aplikacji internetowej Java przy użyciu Hibernate i rozpórek.


title: Użyj warstwy usług z MVC

text: Jeśli kontroler staje się gruby i instancja modelu zaczyna się sumować, można użyć warstwy usług. * Jeśli po prostu zawinię logikę w klasę usług, otrzymam kilka usług z jedną lub dwiema metodami. To przypomina zapach kodu. Jakieś najlepsze praktyki w tym zakresie? * Czy usługa może tworzyć egzemplarze modeli? * Jeśli usługa tworzy instancje modeli, usługi nie mogą być testowane jednostkowo. Czy można je objąć tylko testami integracyjnymi?


title: Najlepszy sposób na przechowywanie słownika z pliku

text: Pracuję nad tłumaczem w C++. Zasadniczo chcę przeanalizować plik z tłumaczeniami i zapisać go w moim programie, abym mógł **przeszukiwać słowa i po prostu uzyskać dostęp do odpowiedniego słowa**. Mój plik będzie wyglądał tak: słowo|tłumaczenie drugie słowo|drugie tłumaczenie itd. Nie musi to być `|` jako ogranicznik, a słowo może zawierać spacje. Więc po zapisaniu go w moim programie chcę wyszukać słowo i łatwo uzyskać odpowiadające mu słowo. Pytanie brzmi, jaki jest „najlepszy” sposób przechowywania tego słownika? Czy powinienem używać struktur dynamicznych i łączyć je? Może wektory? A może powinienem użyć dwuwymiarowej tablicy do przechowywania 2 ciągów? Czy mógłbyś mi zaproponować jak będzie wyglądała konstrukcja?


title: Jak efektywnie wykorzystać git-flow w projekcie, w którym utrzymywana jest więcej niż jedna główna wersja?

text: Przeprowadziłem migrację kilku moich projektów do przepływu pracy git i bardzo mi się to podoba. Jednak nie znalazłem najlepszej praktyki, która zapewniłaby płynny przebieg pracy z projektem, w którym jednocześnie utrzymywana jest więcej niż jedna główna wersja. _W szczególności nie utrzymuję „darmowej wersji” i „płatnej wersji” ani żadnego innego równoległego modelu, mówię o projekcie, w którym wersja 1 zostaje wydana i pozostaje obsługiwany przez wersje pomocnicze (1.1, 1.2, itp. .) do czasu wydania wersji 3, w którym to punkcie 2 i 3 zostaną utrzymane, do czasu wydania 4... masz pomysł._ W jaki sposób utrzymujesz dwie lub więcej obsługiwanych wersji projektu na raz w przepływie pracy gitflow?


title: Radzenie sobie z odpornością na testowanie kodu

text: Niedawno zmieniłem pracę. W mojej poprzedniej pracy wszyscy pisali testy i wszyscy byliśmy w szczęśliwym miejscu. W mojej nowej roli zostałem poproszony o skonfigurowanie CI i testowanie. Doświadczam pewnego oporu wobec testowania ze strony niektórych programistów i zastanawiałem się, czy ktoś tego doświadczył i miał strategie radzenia sobie z oporem?


title: Co oznacza „gnicie kodu”?

text: Proszę powiedzieć, że "kod gnije", jeśli go nie wyczyścisz. Co to znaczy? Oczywiście kod jest tekstem, a nie organizmem, który może się zmienić. Dlaczego więc kod „gnije”, jeśli go nie dotykasz? Co sprawia, że „gnije” i co to właściwie oznacza? Proszę o wyjaśnienie, przykłady byłyby mile widziane.


title: przegląd kodu z git-flow i github

text: Za pomocą zwykłego git i github mogę wykonać przegląd kodu, po prostu tworząc pull request z gałęzi funkcji, nad którą pracuję, do gałęzi master. Jak zrobić przeglądy kodu za pomocą git-flow? Z przepływem pracy, takim jak „zakończenie funkcji przepływu git”, jestem zdezorientowany, gdzie faktycznie odbywa się przegląd kodu i jak git-flow lub git może ułatwić tę recenzję.


title: Czy są jakieś badania empiryczne dotyczące wpływu komentowania kodu źródłowego na jakość oprogramowania, łatwość utrzymania i produktywność programistów?

text: Jestem zwolennikiem komentowania kodu źródłowego i dokumentowania oprogramowania. Z mojego osobistego doświadczenia i obserwacji wynika, że praca nad kodem źródłowym, który jest rygorystycznie komentowany, pomogła mi na różne sposoby, gdy musiałem rozwijać oprogramowanie lub je utrzymywać. Istnieje jednak inny obóz, który twierdzi, że komentowanie jest ostatecznie bezwartościowe lub jego wartość jest wątpliwa. Liczni zwolennicy kodowania bez komentowania twierdzą, że: * Jeśli fragment kodu jest dobrze napisany, jest zrozumiały sam przez się i dlatego nie wymaga komentarza * Jeśli fragment kodu nie jest zrozumiały sam przez się, należy go przefaktoryzować i uczynić samo- wyjaśniający, aby nie wymagał żadnych komentarzy * Twój zestaw testów jest twoją dokumentacją na żywo * Z biegiem czasu kod i komentarze nie są zsynchronizowane i stają się kolejnym źródłem bólu głowy * Agile mówi, że działający kod jest ważniejszy niż stosy dokumentacji, więc możemy bezpiecznie ignoruj pisanie komentarzy Dla mnie to tylko dogmat. Ponownie, moja osobista obserwacja była taka, że oprogramowanie napisane przez zespoły inteligentnych i doświadczonych programistów ostatecznie kończy się znaczną ilością kodu, który nie jest oczywisty. Ponownie, Java API, Cocoa API, Android API itp. pokazują, że jeśli chcesz pisać i utrzymywać dokumentację wysokiej jakości, jest to możliwe. Powiedziawszy to wszystko, rozmowy o zaletach i wadach dokumentacji oraz komentowanie kodu źródłowego oparte na osobistych przekonaniach zwykle nie kończą się dobrze i nie prowadzą do satysfakcjonujących wniosków. W związku z tym poszukuję artykułów naukowych i badań empirycznych na temat wpływu dokumentacji oprogramowania, w szczególności komentowania kodu źródłowego, na jego jakość i łatwość utrzymania oraz wpływu na produktywność zespołu. Czy natknąłeś się na takie artykuły i jaki był ich wynik, jeśli w ogóle?


title: Jak model ETVDX wpisuje się w zarządzanie projektami?

text: Na wykładzie prowadzący opisał następujący model: E - wpis (warunki zadania). T - zadanie - wykonanie zadania V - weryfikacja jakości zadań D - Realizacja zadania X - Wyjście. lub ETVDX Jeśli ktoś zna ten „ogólny model zgodności”, jak dokładnie pasuje on do tworzenia oprogramowania? Przypuszczam, że jest to odpowiednik kaskadowego modelu negocjowania wymagań > etapu definiowania/dekompozycji > szacowania nakładu > szacowania zasobów > opracowywania harmonogramu.


title: Żaba przekraczająca problem z drogą N pasa

text: Problem mówi, że: > Jest `N` pasów i podana jest prędkość każdego pasa. Istnieje wiele > samochodów na wszystkich pasach ruchu i podana jest pozycja startowa oraz długość każdego samochodu i > odpowiadający mu pas. Jest żaba, która może wykonywać 2 funkcje: > `wait()` lub `jump()`. Sprawdź, czy istnieje ścieżka, w której żaba może przejść od pasa > „1” do pasa „N” bez potrącenia przez którykolwiek z poruszających się samochodów. Nie jestem w stanie tego rozwiązać. Wziąłem struktury danych `speed[1..n]` do oznaczania prędkości samochodów na `i`tym pasie, `długość[1..n]` oznaczające długość samochodów, `start[1..n]` oznaczające pozycja wyjściowa samochodów. Potem wziąłem pas startowy i na podstawie obliczeń czasu zdecydowałem, czy skoczyć, czy poczekać. **Mój algorytm** : dla każdego pasa 1. Zakładam, że skok na następny pas jest bezpieczny. 2. Następnie obliczę czas, w którym można trafić w żabę (czas, w którym doliczę długość samochodu do całkowitej odległości i czas, w którym nie dodam długości samochodu.) 3. Teraz jeśli żaba dojedzie do następnego pasa w tym okres, wtedy dobrze jest czekać na aktualnym pasie. 4. Czekając sprawdzę również, czy zostanie uderzony przez samochód na aktualnym pasie, czy nie. Ale w niektórych przypadkach mój algorytm nie zadziała. Jak powinienem uporządkować kod, aby rozwiązać ten problem?


title: Jak zacząć programowanie konkurencyjne?

text: Od jakiegoś czasu ćwiczę kodowanie, ale problem polega na tym, że napisanie rozwiązania problemów zajmuje mi dużo czasu. Chcę zapytać, czy programowanie konkurencyjne może mi pomóc w poprawie tego. Jeśli tak, to od czego zacząć i z jakich stron internetowych mogę korzystać (np. TopCoder)? Oczywiście na razie nie będę w stanie rozwiązać bardzo trudnych problemów. Co powinienem zrobić? Jeśli nie, co jeszcze powinienem zrobić? Mam też inny problem, że chcę się nauczyć kodowania, ale chodzi o to, że czuję, że nie jestem w tym zbyt dobry. Co powinienem zrobić? To jak drażnienie mnie od środka. Wiem, że niektórzy ludzie mogą nie uznać tego pytania za pouczające, ale proszę przynajmniej pozwól mi uzyskać odpowiedź.


title: Dlaczego niezmienność, kowariancja i kontrawariancja są konieczne w typowanych językach?

text: Ok, nie jestem pewien, czy mam rację. Dopiero niedawno dowiedziałem się, że muszę mieć interfejs kontrawariantny, aby móc przekazać ten interfejs jako parametr w C#, a ta funkcja została dodana tylko w .NET 4.0. Więc oczywiście jest jakiś powód, dla którego nie możesz zrobić tego interfejsu kowariantnego lub niezmiennego i prawdopodobnie ma to coś wspólnego z przekazywaniem, wydobywaniem klasy generycznej. Nie jestem do końca pewien, jakie jest tutaj ograniczenie i wiem, że widziałem, gdzie można użyć interfejsu kontrawariantnego, gdzie inni nie mogą, gdzie mogę użyć kowariantnego (kiedy jest to konieczne?). To wszystko z ciekawości (bardzo interesują mnie koncepcje programowania otaczające niektóre języki). Chciałbym zobaczyć (link byłby w porządku) kilka przykładów, dlaczego konieczne jest korzystanie z tych funkcji, co by się zepsuło, gdybyśmy wpuścili kowariant/niezmiennik na scenę kontrawariantną i vice versa i gdzie każdy z nich świeci.


title: Czy lepiej jest używać wielu stron html, czy po prostu zmieniać treść na tej samej stronie za pomocą JavaScript?

text: Czy lepiej jest używać wielu stron html i łączyć je razem za pomocą `href`, czy po prostu zmieniać zawartość tej samej strony za pomocą JavaScript? Zastanawiam się nad układem strony i nie mam dużo treści. Prawdopodobnie byłoby około trzech stron for, gdybym tylko użył całego html. Gdybym przełączał i zamieniał fragmenty html za pomocą JavaScript, prawdopodobnie mógłbym zmieścić to wszystko na jednej stronie i byłoby to trochę „fajniejsze”, ponieważ jest to bardziej aplikacja, dynamika itp. Ale zastanawiam się tylko jaki jest najlepszy sposób, aby się tutaj udać? Czy to straszne mieć zbyt dużo JavaScriptu „zgniecionego” w jednym dokumencie? Skąd wiesz, gdzie narysować granicę, gdy o tym myślisz?


title: Czy te kroki wystarczą, aby umieścić mój skrypt basha na licencji GPL 3?

text: Napisałem skrypt basha, który chciałbym umieścić na licencji GPL v3. Przeczytałem dokumentację GNU o tym, jak stosować te warunki do swoich nowych programów i jak używać licencji GNU dla własnego oprogramowania. Mimo to nie jestem do końca pewien, co tam umieścić i jakie artefakty są potrzebne. Do tej pory wykonałem następujące czynności: 1. Umieściłem plik o nazwie `COPYING` (który zawiera licencję) do folderu projektu 2. Na początku skryptu dołączyłem do skryptu: > up to funkcja bash aby uprościć nawigację w pionowym systemie plików. > > Copyright (C) 2012 Oliver Weiler > > Ten program jest wolnym oprogramowaniem: możesz go redystrybuować i/lub modyfikować > zgodnie z warunkami Powszechnej Licencji Publicznej GNU opublikowanej przez Free > Software Foundation, w wersji 3 Licencja lub (według Twojego wyboru) > dowolna nowsza wersja. > > Ten program jest rozpowszechniany w nadziei, że będzie przydatny, ale BEZ > ŻADNEJ GWARANCJI; nawet bez dorozumianej gwarancji PRZYDATNOŚCI HANDLOWEJ lub > PRZYDATNOŚCI DO OKREŚLONEGO CELU. Zobacz Powszechną Licencję Publiczną GNU > więcej szczegółów. > > Powinieneś otrzymać kopię Powszechnej Licencji Publicznej GNU wraz z > tym programem. Jeśli nie, zobacz http://www.gnu.org/licenses/. Czy to wszystko, co mam do zrobienia? Czy rzeczywiście potrzebne jest umieszczenie licencji w osobnym pliku, jeśli informacja w pliku skryptu prowadzi do niej?


title: Ubieganie się o pracę: jak zaprezentować pracę wykonaną dla (prywatnych) byłych klientów?

text: Chcę ubiegać się o moją pierwszą "prawdziwą" (czytaj: nie freelancer) pracę w Ruby on Rails. Zbudowałem już kilka aplikacji. Moja najlepsza praca (również najbardziej skomplikowana logicznie aplikacja) była dla niezależnego klienta i chciałabym ją pokazać potencjalnym pracodawcom. Jedynym problemem jest to, że nie jest już online. I straciłem kontakt z klientem. Jak mogę włączyć tę pracę do mojego portfolio? * * * **O aplikacji:** To gra na Facebooku. Pomysł na biznes klienta na tę aplikację nie był najlepszy. Nigdy nie przyniesie żadnych pieniędzy. Myślę, że to był dla niego rodzaj próżności. Logo i grafika są jednak ładne i zostały zaprojektowane przez klienta. Właściwie spędziłem ostatnio dużo czasu na przekodowaniu większości aplikacji i dodaniu pełnego zestawu testów. Chcę zaprezentować zdobyte umiejętności BDD/TDD. * * * Nie znam dobrze etykiety (/prawa?) dotyczącej tej sytuacji. Czy mogę po prostu umieścić moją nową wersję aplikacji pod bezpłatnym adresem URL Heroku (być może z sekcją „kredyty”, gdzie przypisuję pomysły i projekty graficzne mojemu byłemu klientowi)? **UWAGA:** Ponownie, to tylko po to, aby pokazać potencjalnych pracodawców. **Nie** próbuję promować aplikacji jako mojego pomysłu ani przyciągać użytkowników. Czy mogę umieścić część lub całość kodu na GitHub? Co się stanie, jeśli nie udostępnię kodu publicznie, a jedynie wyślę archiwum tar do potencjalnych pracodawców? Czy muszę prosić o zgodę mojego byłego klienta (a co jeśli odmówi)? Ostatnią rzeczą, jaką chcę zrobić, to wpaść w kłopoty prawne lub obrażać ludzi, od których próbuję znaleźć pracę. Ale wierzę, że moja praca i doświadczenie w _tej aplikacji_ są moją najwyższą rekomendacją do znalezienia pracy.


title: Jakie są wady rozpoczęcia projektu open source, jeśli nie jest się doświadczonym programistą?

text: Mam mnóstwo pomysłów na produkty do zbudowania. Problem w tym, że mam niecały rok doświadczenia zawodowego i boję się **negatywnej oceny w przyszłości** na podstawie tego, co produkuję teraz. Nie mam pojęcia, czy mój kod jest dobry. Nie znam żadnego ze schematów kodowania. Wszystko, co wiem, to tworzenie produktów, które działają. Chcę mieć publiczny profil na githubie dla moich przyszłych projektów i będę się starał, aby był dobrze komentowany, zoptymalizowany i czysty. Oto rzeczy, których obawiam się, że zostaną publicznie ujawnione: 1. Mój kod może nie być wysoce zoptymalizowany. 2. Niewłaściwe użycie pewnych bibliotek lub funkcji, które przypadkowo wykonują zadanie. 3. Nieznajomość żadnego wzorca kodowania ani nie podążanie za nim. 4. Dużo błędów / nieuwzględnianie przypadków narożników, krawędzi 5. Zasadniczy brak zrozumienia i zastosowania pewnych pojęć, takich jak bezpieczeństwo wątków, problemy ze współbieżnością w programowaniu wielowątkowym itp. Czy powinienem iść dalej i zacząć, czy dalej się trzymać budowanie rzeczy lokalnie i prywatnie, dopóki nie zdobędę większego doświadczenia. Nie chcę, aby popełnione tutaj błędy na dłuższą metę prześladowały moje perspektywy zawodowe.


title: Jakich problemów z patentami na oprogramowanie należy być świadomym podczas pisania oprogramowania?

text: **Zakres tego pytania ma mieć charakter globalny:** techniki (podejścia do rozwiązania problemu, np. użycie palety warstw), operacje (działania, które może wykonać oprogramowanie lub jego użytkownik, np. użycie narzędzie do wiaderka z farbą do wypełnienia zaznaczenia lub innego ograniczonego obszaru) itp. Jeśli w grę wchodzi proces rozwoju, na przykład osoba A mówiąca „Musimy zaimplementować tę jedną fajną funkcję w oprogramowaniu X” i być może jakiekolwiek badanie tej funkcjonalności poprzez dekompilację, edycję szesnastkową itp. (w przeciwieństwie do bardziej autentycznego, niezależnego procesu wyobrażania sobie funkcjonalności lub pisania specyfikacji), to należałoby o tym wspomnieć. Jestem w trakcie tworzenia poważnej aplikacji i nie wiem, jak dużym problemem będą patenty na oprogramowanie. Mam wrażenie, że nikt nie może opatentować narzędzia „wiadro z farbą” (chociaż nie znałbym prawnego uzasadnienia, dlaczego nie można go opatentować), ale być może jeśli odejdziesz znacznie dalej od tego, będziesz oberwać pozwem? Naprawdę nie mam pojęcia! W moim przypadku nawet z tego powodu nie patrzę na oprogramowanie konkurencji. Usiadłem z kimś, kto używa oprogramowania, które jest obecnie na rynku wystarczająco długo, aby wiedzieć, że mogę je łatwo zburzyć, ale po prostu rozważę to badanie rynku. Jedyne, co mnie ekscytowało podczas tej małej sesji demonstracyjnej, to przypadki, w których wymyśliłem jakąś funkcjonalność, a jego odpowiedź brzmiała: „Tak, to byłoby naprawdę przydatne i nie, to oprogramowanie nie może tego zrobić”. Nie było "Naprawdę muszę skopiować tę funkcję!" ponieważ, cóż, aplikacja była w większości śmieciem, pomimo swojej ceny.


title: Dodać złożoną personalizację do formularza czy utworzyć dwa formularze?

text: Pracuję w aplikacji WPF, która importuje i eksportuje rozdzielane pliki tekstowe. Na obu końcach znajduje się UserControl, który zawiera pewną logikę dotyczącą konfiguracji ograniczników. Zawiera kilka elementów sterujących do indywidualnego wybierania ograniczników oraz menu rozwijane „Ustawienia wstępne” umożliwiające szybkie wybieranie niektórych popularnych kombinacji, takich jak CSV. Otrzymałem zadanie zmodyfikowania okna dialogowego konfiguracji eksportu. Chcą, aby funkcja ustawień wstępnych została zmodyfikowana tak, aby obejmowała również niektóre opcje formatowania tekstu, które nie są związane z ogranicznikami. Zmiany powinny pojawić się tylko w oknie konfiguracji eksportu, ponieważ dane ustawienia nie dotyczą importu. Będą wiązać się z dodaniem nowych kontrolek, co nie jest takie złe. Potrzebne będą jednak również dodatkowe ustawienia wstępne, które nie są dostępne w oknie dialogowym importu, a ich obecność może wpłynąć na ogólne zachowanie okna dialogowego. Nie jestem pewien, jak najlepiej to zrobić. Przychodzą mi na myśl trzy opcje, ale oczywiście może mi brakować jednej: 1. Sklonuj UserControl i wprowadź w nim wymagane zmiany. Każde okno dialogowe ma teraz osobną kontrolkę. Jednak obie kontrolki będą miały wiele wspólnego z logiką, więc nie czuję się z tym komfortowo z perspektywy SUCHEJ. 2. Zachowaj pojedynczy UserControl, ale wrzuć właściwość „mode”. W oparciu o jego ustawienie pokaż lub ukryj określone kontrolki, zamień ItemsSource na menu rozwijane „Presets” itp. Jest to atrakcyjne, ponieważ wymaga mniej kopiowania i wklejania, ale kosztem pojedynczego elementu sterującego jest ogólnie bardziej skomplikowane, i być może trudniejsze do utrzymania na dalszej drodze. 3. Przerobić całą architekturę, aby aspekty związane z zachowaniem były właściwie zarządzane w osobnym ViewModelu. Ten nowy ViewModel powinien być programowo konfigurowalny do reprezentowania różnych trybów pracy (zasadniczo poprzez zamianę listy dostępnych Presetów, z których każdy jest reprezentowany jako instancja klasy Preset). Utwórz dwa różne zestawy interfejsu użytkownika, aby reprezentować różne układy, z których jeden po prostu nie ma elementów sterujących opcjami, na których mu nie zależy. Instynkt podpowiada mi, że #3 to najlepsza opcja. Obawiam się jednak, że jest to nadmierny wysiłek i że jestem po prostu zbyt wybredny, jeśli chodzi o jedną z dwóch pierwszych opcji. Albo że jest z tym jakaś inna pułapka, o której nie pomyślałem. Mam trochę historii z tym UserControl i moim osobistym odczuciem jest to, że jest to rodzaj PITA do utrzymania, więc chcę być ostrożny na wypadek, gdybym był zbyt chętny do przepisywania z powodów emocjonalnych.


title: Przełączanie między usługami Azure Mobile Services a moją własną implementacją. Czy zmienią się identyfikatory UID?

text: Patrzę na Azure Mobile Services, w szczególności na część dotyczącą uwierzytelniania (która moim zdaniem opiera się wyłącznie na OAUTH 1 lub 2). Chcę się upewnić, że moja aplikacja nie jest ściśle powiązana z usługą i że mogę przywrócić uwierzytelnianie we własnym zakresie, korzystając z jednej z następujących metod: 1. Używam wersji usługi Azure Mobile Services opracowanej dla 2012 R2 (która może obejmować wsparcie dla AMS + OAUTH) 2. Do obsługi uwierzytelniania używam lokalnej biblioteki DLL, takiej jak .NET Open OAuth. Moja teoria jest taka, że identyfikatory UID są przenośne między wszystkimi trzema scenariuszami (trzecim są same usługi Azure Mobile Services), ponieważ ręcznie wpisywałbym ten sam klucz tajny do każdego dostawcy. Moja druga intuicyjna reakcja jest taka, że żadne identyfikatory Windows Live nie będą miały tego samego adresu URL i nie są przenośne w tych scenariuszach (na podstawie mojego doświadczenia z usługą Azure ACS i LiveID). Jednak odkąd zauważyłem obsługę OAuth w .NET OpenID myślę, że mogę się mylić. **Pytanie** Czy ktoś lepiej zaznajomiony z uwierzytelnianiem i produktami firmy Microsoft może dać mi znać, czy w razie potrzeby można „przenieść” uwierzytelnianie do iz usług Azure Mobile Services? Myślę, że głównym punktem spornym będą różne identyfikatory użytkowników po zmianie, co oznaczałoby, że po migracji użytkownicy stracą swoją historię itp. w mojej aplikacji.


title: Jakich argumentów mogę użyć, aby uzasadnić użycie XML lub JSON do przechowywania i przesyłania danych obiektowych?

text: Mój kierownik projektu uważa oba te podejścia za niepotrzebne koszty ogólne. Byłem zaangażowany i byłem świadkiem wielu rozmów na temat XML vs JSON, ale po raz pierwszy słyszę argument przeciwko OBU. Używamy c# w .Net 4. Będziemy przechowywać dane w bazie danych serwera sql na serwerze, a także na urządzeniach mobilnych. Słyszałem wszystkie argumenty między nimi, ale teraz muszę zrozumieć argumenty za i przeciw używaniu dowolnej notacji obiektowej do przechowywania danych - mój kierownik projektu preferuje format csv.


title: Który język funkcjonalny jest dobry dla początkującego?

text: > **Możliwy duplikat:** > Wybieram funkcjonalny język programowania Jestem programistą C++, który chce uczyć się języka funkcjonalnego jako hobby i z czystej ciekawości. Nie chcę być ekspertem, ale tylko po to, aby zrozumieć programowanie funkcjonalne. Ten język powinien być łatwy do nauczenia i mieć dobre tutoriale i zasoby dla początkujących. Czy są takie języki?


title: Używanie wzorca odwiedzających z dużą hierarchią obiektów

text: **Kontekst** Używałem z hierarchią obiektów (drzewo wyrażeń) wzorca gościa "pseudo" (pseudo, ponieważ nie używa podwójnej wysyłki) : public interface MyInterface { void Accept(SomeClass operationClass); } public class MójImpl : MójInterfejs { public void Akceptuj(KlasaKlasyOperacji) {KlasaOperacji.DoCoś(); OperationClass.DoSomethingElse(); // ... i tak dalej... } } Ten projekt był jednak wątpliwy, ale całkiem wygodny, ponieważ liczba implementacji MyInterface jest znaczna (~50 lub więcej) i nie musiałem dodawać dodatkowych operacji. Każda implementacja jest unikalna (jest to inne wyrażenie lub operator), a niektóre są złożone (tj. węzły operatorów, które będą zawierać inne węzły operatora/liści). Przemierzanie jest obecnie wykonywane przez wywołanie operacji Accept na węźle głównym drzewa, która z kolei wywołuje Accept na każdym z jego węzłów podrzędnych, co z kolei... i tak dalej... Ale nadszedł czas, w którym muszę **dodaj nową operację** , taką jak ładne drukowanie : public class MyImpl : MyInterface { // Właściwość nie pochodzi z MyInterface public string SomeProperty { get; ustawić; } public void Akceptuj(JakaśKlasaOperacjiKlasa) {KlasaOperacji.DoCoś(); OperationClass.DoSomethingElse(); // ... i tak dalej ... } public void Accept(SomePrettyPrinter printer) { printer.PrettyPrint(this.SomeProperty); } } Zasadniczo widzę dwie opcje: * Zachowaj ten sam projekt, dodając nową metodę dla mojej operacji do każdej klasy pochodnej, kosztem utrzymania (nie opcja, IMHO) * Użyj wzorca „true” Visitor, kosztem rozszerzalności (nie jest to opcja, ponieważ spodziewam się, że po drodze pojawi się więcej implementacji...), z około 50+ przeciążeniami metody Visit, z których każde pasuje do konkretnej implementacji ? **Pytanie** Czy poleciłbyś użycie wzorca Odwiedzający ? Czy jest jakiś inny wzorzec, który mógłby pomóc rozwiązać ten problem?


title: Jak „firmy zajmujące się niestandardowym oprogramowaniem” radzą sobie z długiem technicznym?

text: **Co to są „firmy zajmujące się niestandardowym oprogramowaniem”?** Przez „firmy zajmujące się niestandardowym oprogramowaniem” rozumiem firmy, które zarabiają głównie na tworzeniu niestandardowych, jednorazowych części oprogramowania. Przykładem są agencje lub firmy zajmujące się oprogramowaniem pośredniczącym lub wykonawcy/konsultanci tacy jak Redify. **Co jest przeciwieństwem „producentów oprogramowania niestandardowego”?** Przeciwieństwem powyższego modelu biznesowego są firmy, które koncentrują się na produktach długoterminowych, niezależnie od tego, czy są to możliwe do wdrożenia aplikacje komputerowe/mobilne, czy oprogramowanie SaaS. **Pewny sposób na budowanie długu technicznego:** Pracuję dla firmy, która stara się skoncentrować na pakiecie produktów SaaS. Jednak ze względu na pewne ograniczenia czasami kończymy się naginaniem do woli niektórych klientów i kończymy tworzenie kawałków niestandardowego oprogramowania, które może być używane tylko dla tego klienta. To pewny sposób na zaciągnięcie długu technicznego. Teraz mamy trochę oprogramowania do utrzymania, które nie dodaje nic do naszego podstawowego produktu. **Jeśli praca na zamówienie to niezawodny sposób na budowanie długu technicznego, jak radzą sobie z tym agencje?** To mnie zastanowiło. Firmy, które nie mają podstawowego produktu jako centrum ich modelu biznesowego, zawsze wykonują niestandardowe oprogramowanie. Jak radzą sobie z pojęciem długu technicznego? Jak to nie prowadzi ich do _technicznego bankructwa_?


title: Unikanie wszechobecnych starć językowych

text: Czytałem DDD szybko i zastanawiałem się, jak uniknąć kolizji nazw z terminami technicznymi i terminami domenowymi. Na przykład, jeśli często używam wzorca repozytorium (z klasami takimi jak AddressRepository), ale klient ma również coś, co nazywa się repozytorium w swojej domenie. Jak najlepiej uniknąć pomylenia tych dwóch rzeczy?


title: Jak poprawnie zaimplementować isValid?

text: Usiłuję zapewnić mechanizm sprawdzania poprawności mojego obiektu w następujący sposób: class SomeObject { private $_inputString; prywatne $_errors=tablica(); funkcja publiczna __construct($inputString) { $this->_inputString = $inputString; } public function getErrors() { return $this->_errors; } public function isValid() { $isValid = preg_match("/Tutaj jakieś wyrażenie regularne/", $this->_inputString); if($isValid==0){ $this->_errors[]= 'Znaleziono błąd w danych wejściowych'; } return $isValid==1; } } Następnie testując swój kod robię to tak: $obj = new SomeObject('nieprawidłowy ciąg wejściowy'); $prawidłowy = $obj->prawidłowy(); $errors=$obj->getErrors(); $this->assertFalse($isValid); $this->assertNotEmpty($błędy); Teraz test przechodzi poprawnie, ale zauważyłem tutaj problem projektowy. Co się stanie, jeśli użytkownik wywoła `$obj->getErrors()` przed wywołaniem `$obj->isValid()`? Test zakończy się niepowodzeniem, ponieważ użytkownik musi najpierw zweryfikować obiekt przed sprawdzeniem błędu wynikającego z walidacji. Myślę, że w ten sposób użytkownik zależy od sekwencji działań, aby działał poprawnie, co moim zdaniem jest złą rzeczą, ponieważ ujawnia wewnętrzne zachowanie klasy. Jak rozwiązać ten problem? Czy powinienem wyraźnie powiedzieć użytkownikowi, aby najpierw sprawdził poprawność? Gdzie mam o tym wspomnieć? Czy powinienem zmienić sposób walidacji? Czy jest na to lepsze rozwiązanie? AKTUALIZACJA: Wciąż rozwijam klasę, więc zmiany są łatwe, a zmiana nazw funkcji i ich refaktoryzacja jest możliwa.


title: Jak obliczyć notację Big-O dla danego fragmentu kodu?

text: Tak więc wziąłem dzisiaj strukturę danych śródokresowych i zostałem poproszony o określenie czasu wykonywania, w notacji Big O, następującej pętli zagnieżdżonej: for (int i = 0; i < n-1; i++) { for(int j = 0; j < i; j++2) { //1 Instrukcja } } Mam problem ze zrozumieniem formuły określającej czas wykonywania. Pomyślałem, że skoro wewnętrzna pętla ma 1 stwierdzenie i używając równania szeregowego: (n * (n - 1)) / 2, obliczyłem, że będzie to: 1n * (n-1) / 2. Zatem równanie (n ^2 - 1) / 2. Uogólniłem więc czas działania na O(n^2 / 2). Nie jestem pewien, czy to prawda, haha, czy powinienem ponownie podzielić swoją odpowiedź przez 2, skoro j jest zwiększane w odstępach 2? Czy moja odpowiedź jest całkowicie nieaktualna?


title: Czy programiści powinni rozmawiać z klientami/użytkownikami według metod MSF/agile?

text: Właśnie przeczytałem dwa stwierdzenia, które wydają się bardzo różne: > Des Weiteren ist mangelnde Kommunikation zwischen Programmierern und Nutzern > eine nicht zu vernachlässigende Quelle von unzureichenden Produkten. > > Przetłumaczone: > > Brak komunikacji między programistami a użytkownikami jest źródłem kiepskich produktów > [oprogramowania]. Źródło: de.wikipedia.org Myślę, że przeczytałem coś podobnego w raporcie CHAOS Standish Group. Oraz > Insbesondere bei der Rolle Development ist Kontakt zum Kunden oder zu den > Benutzern nach Meinung des MSF geradezu zu unterbinden. > > Przetłumaczone: > > Według MSF, zwłaszcza rola „Rozwój” nie powinna mieć kontaktu > z klientem ani z użytkownikiem. Źródło: msdn.microsoft.com To też ma sens, ponieważ jako programista chcę mieć zadowolonych użytkowników końcowych. Aby użytkownik lubił mieć nową funkcję, postaram się ją zaimplementować. Może to prowadzić do pełzania funkcji. Jeśli dobrze rozumiem, MSF (Microsoft Solution Framework) próbuje uniknąć tego problemu poprzez rolę, która ma kontakt z klientem (jest to menedżer produktu, rola doświadczenia użytkownika i może rola testująca, prawda?) i tylko jedna rola, która ma kontakt z rolą programistyczną (menedżer programu). **Pytanie 1:** Jak metody zwinne radzą sobie z problemem pełzania funkcji? Czytałem, że programiści powinni mieć bardzo silny kontakt z klientami w metodach zwinnych i że jednym z głównych problemów w stosowaniu scrum jest przekonanie klienta do zaangażowania się w proces. Czy w SCRUM tylko Product Owner ma kontakt z użytkownikiem/klientem? Czy to nie problem, ponieważ programista może dostrzegać inne problemy niż właściciel produktu? **Pytanie 2:** Kto zajmuje się inżynierią wymagań w metodach zwinnych i MSF? **Pytanie 3:** Czy walidujesz w metodach MSF / agile, czy Twój produkt spełnia oczekiwania klienta, a użytkownik potrzebuje go przed wysyłką? Jak ty to robisz?


title: mapa myśli dla programistów

text: W jaki sposób mapy myśli są przydatne programistom w organizowaniu sposobu ich pracy?


title: Programowanie spartańskie... Do czego służy?

text: Ku przerażeniu wszystkich jesteśmy zmuszeni do używania programowania spartańskiego w projekcie. Więc rozumiem, to sprawia, że metody są naprawdę krótkie i najpierw obsługuje proste przypadki. Ale czy naprawdę warte jest ceny kodu, który wygląda jak coś z konkursu Obfuscated C Code? Czy widzisz, że jest to przydatne do czegoś?


title: najlepsza praktyka: konfiguracja kilku IDE / frameworków (na poziomie pliku/katalogu)

text: Nie wiem jak dokładnie szukać tego tematu, więc jeśli jest dużo odpowiedzi na ten temat to proszę po prostu podać link :) Dostaję nowy laptop za kilka tygodni i zastanawiam się nad założeniem logicznego , łatwa w użyciu i czysta struktura folderów do kodowania od samego początku. (mieszanie wszystkiego, co teraz dotyczy kodowania) Moje pytanie brzmi: Czy struktura folderów wygląda tak: C:\grails C:\Java\jre-... C: \JAVA\jdk-... C:\eclipse ... etc czy zawsze używasz katalogu domyślnego? czy sortujesz je, np.: C:\ide\, C:\framewor i C:\CMS\ Czy umieszczasz frameworki i ide na osobnej partycji? Czy odpowiednio mapujesz swoje projekty? Jak nazywasz swoje projekty i jak wygląda struktura plików zapisu? Czy jest naprawdę dobry sposób, który przegapiłem? Mam na myśli to, że mam tylko garść projektów, którymi muszę się zająć i głównie robię trochę lekkiego kodowania lub drobnych zmian, a mimo to jestem zdezorientowany za każdym razem, gdy próbuję coś znaleźć lub często jestem zaskoczony, gdy kilka starszych wersji jest nadal aktywnych. .. Kilka informacji: * Podwójny rozruch na drugiej partycji nie wchodzi w rachubę, lubię wygodę (powód nr 1, dla którego próbuję programować: ułatwienie mi pracy.) * Dostanę dysk SSD, więc przestrzeń jest ograniczona. * Z systemem Windows 7 Prof- 64bit * Potrzebuję: Eclipse, NetBeans, Grails, Groovy, VisualStudio, Ruby, Perl. Mam nadzieję, że każdy ma o tym dobry pomysł. Bardzo mnie to denerwuje, a ponieważ mam okazję zmienić, to jest dobry moment, żeby się nad tym zastanowić.


title: Zależność klasy wyników

text: Mam obiekt zawierający wyniki obliczeń. To obliczenie jest wykonywane w funkcji, która przyjmuje obiekt wejściowy i zwraca obiekt wynikowy. Obiekt wynikowy ma metodę drukowania. Ta metoda drukowania musi wydrukować wyniki, ale aby wykonać tę operację, potrzebuję oryginalnego obiektu wejściowego. Nie mogę przekazać obiektu wejściowego podczas drukowania, ponieważ naruszyłoby to podpis funkcji drukowania. Jednym z rozwiązań, którego teraz używam, jest umieszczenie w obiekcie wynikowym wskaźnika do oryginalnego obiektu wejściowego, ale nie podoba mi się ta zależność między nimi, ponieważ obiekt wejściowy jest zmienny. Jak zaprojektowałbyś taki przypadek?


title: Która struktura zwrotów jest łatwiejsza w użyciu i bardziej sensowna przy opracowywaniu proxy klienta mydlanego?

text: Piszę (w PHP) klienta/proxy dla usługi sieci web SOAP. Zwracane typy są konsekwentnie opakowane w obiekty odpowiedzi, które zawierają zwracane wartości. W wielu przypadkach ma to sens - na przykład, gdy zwracanych jest wiele wartości: Obiekt GetDetailsResponse ( Obiekt wyników ( [TotalResults] => 10 [NextPage] => 2 ) [Szczegóły] => Tablica ( [0] => Detail Object ( [Id] => 1 ) ) ) Ale niektóre metody zwracają pojedynczą wartość skalarną lub pojedynczy obiekt lub tablicę opakowaną w obiekt odpowiedzi: GetThingummyIdResponse Object ( [ThingummyId] => 42 ) W niektórych przypadkach te obiekty mogą być dość głębokie, więc dotarcie do właściwości wewnątrz wymaga przewiercenia kilku warstw: $response->Details->Detail[0]->Contents->Item[5]->Id A jeśli rozpakuję je przed przekazaniem z powrotem, mogę je rozebrać wydobyć warstwę z kodu konsumentów. Wiem, że prawdopodobnie jestem tu trochę astronautą architektury, ale ten drugi styl naprawdę mnie denerwuje, więc pracowałem nad moim kodem, aby moje metody proxy po prostu zwracały wartość skalarną do kodu klienta, gdzie nie ma absolutna potrzeba owijającego obiektu. Moje pytanie brzmi, czy rzeczywiście utrudniam życie użytkownikom mojego kodu? Czy lepiej byłoby zostawić zwracane wartości opakowane w obiekty odpowiedzi, aby wszystko było spójne, czy też warto usunąć niepotrzebne warstwy pośredniości/abstrakcji?


title: Gry mobilne: płatne czy z reklamami?

text: > **Możliwy duplikat:** > Co daje więcej korzyści przy sprzedaży w sklepach z aplikacjami mobilnymi: bezpłatne czy > płatne? Pracuję nad grą i mam nadzieję rozpowszechniać ją w sklepach Android i/lub Apple. Ważna decyzja, którą muszę podjąć: czy pobieram pieniądze za grę? Czy mogę umieścić w nim reklamy? Naprawdę nienawidzę reklam, więc wolałbym nie narażać na to moich użytkowników, ale zrobię to, jeśli to jedyny sposób na zarabianie pieniędzy. Chciałbym usłyszeć od każdego, kto ma doświadczenie w dystrybucji aplikacji mobilnych. Również od zwykłych użytkowników sklepów Apple i Android; jak łatwo jest Ci wydać na coś 0,99 USD?


title: Czy jest jakiś powód w programie Java do specjalnego nazewnictwa dla argumentów funkcji?

text: Chciałbym wiedzieć, dlaczego miałbym chcieć mieć specjalne przedrostki dla argumentów funkcji, takie jak "p_name", "p_age", "p_sex"? Z jednej strony pomaga odróżnić parametr od zmiennej lokalnej lub pola w dalszej części ciała funkcji, ale czy to pomogłoby? Z drugiej strony nie widziałem nigdzie takich zaleceń dotyczących nazewnictwa, w tym oficjalnych konwencji języka Java. Proszę podać wszelkie powody korzystania z takiej polityki nazewnictwa


title: Wydrukuj wszystkie wartości w obiekcie wartości

text: Muszę debugować problem, który wymaga ode mnie wydrukowania wszystkich wartości obiektu wartości, który jest zwracany przez wywołanie usługi sieci web. Obiekt Value jest w tym sensie obiektem złożonym, ma inny obiekt jako swój element, który z kolei ma inny obiekt. Drukowanie wszystkich wartości za pomocą metod get jest kłopotliwe. Zastanawiałem się więc, czy istnieje sposób na rozbicie obiektu wartości w jakikolwiek sposób, aby dostać się do pierwotnego poziomu, takiego jak String lub int lub Date i wydrukować je wszystkie przy użyciu jednego interfejsu API? Rzuciłem okiem na poniższe pytanie, ale moim problemem jest to, że nie mam dostępu do kodu źródłowego obiektu wartości. Źródła znajdują się w zaciemnionym słoiku. http://stackoverflow.com/questions/2413001/jak-drukować-wartości-obiektu-w-java


title: Nadążanie za zmianami wprowadzanymi podczas dodawania drobnych poprawek, a nawet dużych zmian

text: Często muszę zastosować drobne poprawki (aby działały w moim środowisku) lub nawet zmienić niektóre części oprogramowania (aby dostosować je do moich potrzeb) na oprogramowanie z zewnątrz. Jednak to oczywiście stwarza problem z aktualizacją wspomnianego oprogramowania, nawet jeśli nie zmienia nic związanego z moją poprawką. Byłoby łatwiej, gdyby oprogramowanie zapewniało integrację niektórych wtyczek, ale najczęściej tak nie jest. Jaki byłby idealny przepływ pracy w tym zakresie? Większość projektów to repozytoria git, które wyciągnąłem z zewnątrz. Jak zastosować moje zmiany, aby móc bezboleśnie aktualizować? Możesz założyć, że zmiany zewnętrzne są znacznie częstsze i większe niż moje własne, więc przeglądanie każdej z nich nie będzie rozwiązaniem.


title: szukam krótkiego wyjaśnienia logiki rozmytej

text: Wpadłem na pomysł, że podstawy logiki rozmytej nie są trudne do uchwycenia. I odniosłem wrażenie, że ktoś mógłby mi to wytłumaczyć w jakieś 30 minut. Tak jak rozumiem sieci neuronowe i jestem w stanie odtworzyć słynny problem Xor. I wyjdź poza to i stwórz 3-warstwową sieć x węzłów. Chciałbym zrozumieć rozmyte aż do podobnego użytecznego poziomu, w języku C#. Jakkolwiek problem jest widoczny, chciałbym mieć dobrą koncepcję, jednak widzę wiele stron internetowych, które zawierają wiele błędów w ich podstawowym wyjaśnieniu. Na przykład pokazywanie zdjęć i używanie różnych liczb, jak pokazano na zdjęciach, aby obliczyć, tak jakby wiele osób po prostu kopiowało rzeczy, nie zauważając, co zapisują. Podczas gdy inni dla mnie zagłębiają się w ich zapis matematyczny). Dla mnie to bardzo irytujące uczyć się od. Dla mnie nie ma potrzeby wymyślania koła na nowo; Aforge ma już framework logiki rozmytej. Więc to, czego szukam, to kilka dobrych przykładów, dobrych przykładów, takich jak rozwiązanie problemu neuronowego XOR. Czy jest ktoś taki zasób instruktażowy; Czy znasz stronę internetową lub YouTube, gdzie jest krótko wyjaśnione, co byś mi polecił? Zauważ, że ten artykuł jest bliski; ale mi to nie wystarcza. Potem ściągnąłem kilka darmowych plików PDF, ale większość z nich ma charakter akademicki i jest dla mnie trudna do odczytania (nie jestem Anglikiem i nie mam specjalnego dyplomu z matematyki). (Dużo się tego rozglądałem, trudno znaleźć dobry materiał na początek).


title: Proszenie potencjalnych programistów o narysowanie diagramów UML podczas rozmowy kwalifikacyjnej

text: Nasz proces rozmowy kwalifikacyjnej składa się obecnie z kilku pytań dotyczących kodowania, pytań technicznych i doświadczeń z ich obecnej i poprzedniej pracy. Pytania dotyczące kodowania to zazwyczaj pojedyncza metoda, która coś robi (pomyśl o tym jako fizzbuzz lub odwróć pytanie typu string) Planujemy wprowadzić dodatkowy krok, w którym dajemy im problem biznesowy i poprosimy o narysowanie schematu blokowego, aktywności, klasy lub diagram sekwencji. Uważamy, że nasz obecny proces rozmowy kwalifikacyjnej nie pozwala nam ocenić sposobu myślenia kandydata na wyższym poziomie (co jest istotne w przypadku stanowisk na poziomie architekta/starszego). Aby dać ci trochę kontekstu, jesteśmy średniej wielkości firmą programistyczną z około 30 programistami w zespole. Jeśli masz ten etap w procesie rozmowy kwalifikacyjnej, w jaki sposób poprawił twoją prawdziwość rozmowy kwalifikacyjnej? Jeśli nie, co jeszcze pomogło ci lepiej ocenić kandydatów z technicznego punktu widzenia.


title: Jak powinno wyglądać CV programisty samouka/bez doświadczenia?

text: Jakiś czas temu zadałem pytanie, czy wiesz, kiedy jesteś gotowy na szukanie pracy, i otrzymałem pozytywne odpowiedzi. Teraz pracuję nad pisaniem CV, aby rozpocząć poszukiwanie pracy. Tytuł właściwie podsumowuje pytanie, co powinien umieścić w CV programista samouk, który nie ma nic poza osobistym doświadczeniem projektowym? PS. To, o co naprawdę chciałbym poprosić, to aby ktoś rzucił okiem na moje CV (projekt), ale wiem, że to zbyt szczegółowe. Czy jest miejsce, w którym mogę zadać tego typu pytanie? **EDYTUJ:** Dziękujemy wszystkim za opinie. Skończyłem wersję RC i mam nadzieję, że wkrótce wejdę na rynek pracy.


title: Dlaczego katalogi Oracle noszą nazwę /u01 /u02 itd...?

text: Pracuję z Oracle RDBMS od kilku lat i dzisiaj, po zainstalowaniu go po raz n-ty, zastanawiałem się, dlaczego instalujemy go w /u01, /u02 itd.? Oczywiście można by zainstalować go gdzie indziej, ale z jakiegoś niewiadomego powodu ta konwencja jest używana wszędzie i nie widziałem żadnej poważnej instalacji Oracle, np. w /opt. Jakaś lekcja historii, którą przegapiłem?


title: Zwracanie kodu statusu, w którym mógł wystąpić jeden z wielu błędów

text: Zajmuję się tworzeniem komponentu logowania PHP, który zawiera funkcje do manipulowania obiektem User, takie jak `$User->changePassword(string $old, string $new)` Potrzebuję porady, jak zwrócić status, ponieważ funkcja może się powieść (nie trzeba podawać żadnych dalszych informacji) lub zakończyć się niepowodzeniem (a wywołujący kod musi wiedzieć dlaczego, na przykład nieprawidłowe hasło, problem z bazą danych itp.) Mam następujące pomysły: * Styl uniksowy: zwraca 0 w przypadku sukcesu, inny kod w przypadku niepowodzenia. Nie wydaje się to szczególnie powszechne w PHP i koercja typu w tym języku miesza się z tym (funkcja zwracająca FALSE w przypadku sukcesu?). * Zrzuć wyjątek w przypadku błędu. Obsługa wyjątków PHP jest ograniczona, a to utrudni życie każdemu, kto próbuje korzystać z tych funkcji. * Zwraca tablicę zawierającą wartość logiczną dla „sukcesu” lub nie, oraz ciąg znaków lub int dla „stanu niepowodzenia”, jeśli dotyczy. Żadne z nich nie wydaje się szczególnie atrakcyjne, czy ktoś ma jakieś rady lub lepsze pomysły?


title: Rozszerzyć API lub użyć tej samej nazwy co klasa w API?

text: Coraz częściej napotykam ten problem: nie jestem zadowolony z obecnego API i w końcu tworzę własną klasę, która robi to, czego bym chciał, aby API zrobiło; jednak nie rozszerzam „superklasy”, ponieważ nie czuję, że w pełni pasuje. Nie wyobrażam sobie, że to dobra praktyka, więc czy powinienem po prostu rozszerzyć „super klasę”, czy też powinienem nazwać klasę nieco inaczej niż to, co powinna była zrobić oryginalna klasa? Na przykład w Javie piszesz dziesięć wierszy kodu tylko po to, by wczytać plik na Listę, gdzie każdy wpis jest jednym z plików. Więc znowu, w takich przypadkach, czy nazwa klasy powinna zostać zmieniona na coś podobnego, czy też powinna iść dalej i po prostu rozszerzyć klasę o zachowanie, które chciałeś? Rozszerzanie klas API wydaje mi się prawie niewłaściwe, ale jednocześnie, nie robiąc tego, pokonujesz punkt dziedziczenia w OOP.


title: Przechowywanie dużej ilości dużych ciągów z częstymi „dodatkami” i kilkoma odczytami

text: W moim bieżącym projekcie muszę przechowywać bardzo długi ciąg ASCII do każdego wystąpienia danego obiektu. Ten ciąg otrzyma 2 dołączenia na minutę i nie będzie pobierany tak często. Najgorszy scenariusz to ciąg 5-10 MB. Będę miał tysiące instancji mojego obiektu i obawiam się, że przechowywanie wszystkich tych ciągów w systemie plików nie byłoby optymalne, ale nie mogę wymyślić lepszego rozwiązania. Czy ktoś może zaproponować alternatywę? Może sklep typu klucz-wartość? W takim razie który? Jakieś inne myśli?


title: Jeśli masz już pełną specyfikację, co pozostaje do zrobienia deweloperowi?

text: Pracuję w małej firmie, zaczynałem jako programista i zakodowałem fragmenty dużego systemu ze szczegółowymi specyfikacjami. W ciągu pięciu lat przeszedłem na stanowisko analityka. Wiem, jak budowane są istniejące części systemu, więc kiedy potrzebujemy nowego podsystemu, wiem, jak połączyć go z istniejącymi elementami. Analizuję więc wymagania do wykonania nowego podsystemu, projektuję nowy moduł, a następnie koduję jego główne części. Następnie wraz z moimi kolegami, którzy są dobrymi analitykami, piszę szczegółowe specyfikacje dla młodszych programistów, aby ukończyć moduł. Problem w tym, że nie widzę dla siebie nowej pracy. Zdaję sobie sprawę, że wszechstronność nie jest uważana za dobrą i nie widzę takiej pracy w dużej firmie. Ale gdybym szukał pracy programisty, to znów byłbym trochę jak junior? Bo jeśli dostanę szczegółowy opis tego, co ma robić oprogramowanie, wydaje mi się, że pozostaje mi tylko przetłumaczenie specyfikacji na kod, co jest po prostu nudne. Ale uważa się, że programista rozwiązuje problemy, więc jakie to powinny być problemy? Jedynymi problemami technicznymi, jakie mogę sobie wyobrazić, jest optymalizacja wydajności. Więc w zasadzie moje pytanie brzmi - z jakimi problemami programiści powinni się zmierzyć i rozwiązać, jeśli wszystkie decyzje dotyczące tego, jak aplikacja powinna działać, aby zaspokoić potrzeby klientów, są uważane za pracę analityka? Jakie problemy rozwiązujesz w pracy?


title: Czy to dobry przykład otwartej rekurencji?

text: Rozumiem _open recursion_ jako proces metody w klasie wywołującej inną metodę w klasie przy użyciu słowa kluczowego, takiego jak `this`, ale dzięki któremu wywołanie metody może być faktycznie powiązane z podklasą w czasie wykonywania. Czy to uczciwa demonstracja otwartej rekurencji? class Sup { go() { alert('sup'); } callGo() { this.go(); } } class Sub extends Sup { go() { alert('sub'); } } var sub = new Sub(); sub.callGo();


title: Zgadywanie kodu kraju numeru telefonu

text: To jest problem, nad którym pracuję: mając numer telefonu z dowolnego miejsca na świecie i pewne informacje o lokalizacji (stan, prowincja, ewentualnie nazwa kraju, jeśli mam szczęście itp.), zwróć kod ISO tego numeru. Na potrzeby tego pytania nie będę się koncentrować na informacjach o lokalizacji, ponieważ stanowi to alternatywne rozwiązanie do określania kodu kraju, który nie musi już nawet używać numeru telefonu (chociaż byłoby to przydatne do celów walidacji) Kiedy po raz pierwszy zacząłem pracować nad tym problemem, miałem nadzieję, że istnieje deterministyczny sposób rozwiązania tego problemu, ponieważ istnieje jakiś międzynarodowy standard. Od razu stało się jasne, że nie istnieje dla numerów telefonów. Istnieją normy w krajach, między krajami (na przykład NANP), ale nie ma ujednoliconych norm międzynarodowych. Bawiąc się z libphonenumbers przez kilka dni, wydaje się, że jest w stanie zapewnić dokładną walidację numeru telefonu, jeśli otrzymam kod kraju (np. CA dla Kanady, GB dla Wielkiej Brytanii itp.). Biblioteka udostępnia dwie metody: `isPossibleNumber` i `isValidNumberForRegion`. To jest kod, którego używam boolean isValid; Numer telefonu; PhoneNumberUtil util = PhoneNumberUtil.getInstance(); Ciąg numStr = "(123) 456-7890"; for (String r : util.getSupportedRegions()) { try { // sprawdź, czy jest to możliwa liczba isValid = util.isPossibleNumber(numStr, r); if (isValid) { liczba = util.parse(numStr, r); // sprawdź czy jest to poprawna liczba dla danego regionu isValid = util.isValidNumberForRegion(number, r); if (isValid) System.out.println(r + ": " + number.getCountryCode() + ", " + number.getNationalNumber()); } } catch (NumberParseException e) { e.printStackTrace(); } } Na przykład, gdybym wziął dowolny numer telefonu, taki jak `+44 20 7930 4832` i przepuścił go przez tę metodę, otrzymałbym następujące dane wyjściowe GB: 44, 2079304832 Teraz, przy założeniu, że otrzymam kod wybierania (czasami tam jest). Gdybym nie dostał numeru kierunkowego, mógłbym otrzymać coś w rodzaju „20 7930 4832”, a wyniki nie byłyby tak ładne DE: 49, 2079304832 US: 1, 2079304832 GB: 44, 2079304832 FI: 358, 2079304832 AX : 358, 2079304832 RS: 381, 2079304832 CN: 86, 2079304832 NZ: 64, 2079304832 IN: 91, 2079304832 IR: 98, 2079304832 JP: 81, 2079304832 Mając numer telefonu, mogę przejrzeć wszystkie różne reguły dla każdy kraj i przefiltruj listę od 244 do około 20 lub mniej, jeśli mam szczęście, ale nie jestem pewien, czy jest coś jeszcze, co mógłbym zrobić, aby spróbować odgadnąć kraj.


title: Jakie są zalety Cejlonu nad Javą?

text: Szukając najnowszych i potężnych nadchodzących języków programowania przez sieć, natknąłem się na Cejlon. Wpadłem na ceylon-lang.org i jest tam napisane: > Cejlon jest pod silnym wpływem Javy. Widzisz, jesteśmy fanami Javy, ale > znamy jej ograniczenia na wylot. Ceylon zachowuje najlepsze fragmenty Javy, ale > poprawia rzeczy, które z naszego doświadczenia są irytujące, nużące, frustrujące, > trudne do zrozumienia lub podatne na błędy. Jakie są zalety Cejlonu nad Javą?


title: Słabość metody TDD?

text: Oto w skrócie metoda TDD: 1. Napisz test 2. Sprawdź, czy ten test się nie powiedzie 3. napisz kod produkcyjny 4. uruchom test Myślę, że TDD w formie przedstawionej działa tylko w idealnych warunkach. Wezmę prosty przykład: **Specyfikacja**: Napisz program, który oblicza pierwiastek kwadratowy z liczby, użytkownik musi wprowadzić liczbę. Jeśli liczba jest ujemna, program powinien wyświetlić błąd, a jeśli liczba jest dodatnia lub zero, program powinien wyświetlić liczbę, której kwadrat jest wprowadzoną liczbą, lub liczbę dziesiętną, której kwadrat jest najbliższy wprowadzonej liczbie. **Test pisania** class SquareRootTest { prywatny SquareRoot squareRoot; public void testNegativeNumber() { attachException(squareRoot.execute(-5); } public void testIntegerSquareRoot() {asserEqual(squareRoot.execute(9),3); } public void testDecimalSquareRoot() {assetEqual(squareRoot.execute(3) ,1.732); } } **uruchom nieudany test** **pisanie kodu produkcyjnego:** class SquareRoot { public double execute(numer) { if(liczba < 0) wyrzuć wyjątek; if(liczba < 1) return squareRootLessThanOne( number); w przeciwnym razie return squareRootGreaterThanOne(numner); } //metody prywatne.... } tak jest podczas pisania kodu produkcyjnego, stwierdzam, że mam do czynienia z liczbami mniejszymi niż jeden inaczej niż liczbami większymi niż 1. muszę zaktualizować moje testy, aby to odzwierciedlić. **Aktualizacja testu** class SquareRootTest { public void testNegativeNumb er() { attachException(squareRoot.execute(-5)); } public void testIntegerSquareRoot() { attachEqual(squareRoot.execute(9),3); } public void testDecimalSquareRoot() { attachEqual(squareRoot.execute(3),1.732); } public void testNumberLowerThanOne() { attachEqual(squareRoot.execute(0.04),0.200); } } Gdybym znalazł jeden algorytm do obliczania pierwiastka kwadratowego, nie zmieniłbym swoich testów. Metoda TDD skupia się wyłącznie na testach ze specyfikacji, ale istnieją testy wywodzące się z implementacji, w szczególności wszystkie instrukcje warunkowe i wszystkie instrukcje sterowane pętlami powinny być normalnie testowane. Te przypadki testowe nie mogą zostać wykryte w momencie specyfikacji. Moje pytanie: Jak TDD poradzi sobie z tą sytuacją? czy faktycznie jest słabością TDD?


title: Powtarzalność testów mocno obciążających procesor na sprzęcie NUMA

text: Rozważ test porównawczy aplikacji C++. Wykonuje niewiele operacji we/wy lub nie wykonuje ich wcale, proporcjonalnie do całkowitego czasu działania — jest to intensywne obliczeniowo. Jest to program jednowątkowy. Na początku strony/odczytuje wszystkie swoje dane, a następnie wykonuje wiele iteracji podstawowego zadania, aby uśrednić pamięć podręczną lub inne efemeryczne odmiany. Uruchamiamy go na dużym, wielordzeniowym systemie Linux ze znacznie większą ilością pamięci niż używa, który ma hierarchię pamięci NUMA. Uruchamiamy go na maszynie, gdy jest „bezczynna”. Oczywiście ma pewną liczbę zwykłych demonów unoszących się wokół, ale powinno być mnóstwo rdzeni i pamięci, aby były szczęśliwe. Obserwujemy zaskakujący (dla nas) zakres zmienności w wynikach czasu zegara ściennego. Czy ktoś może zasugerować, gdzie szukać wyjaśnienia lub co zrobić, aby zmniejszyć zmienność? uname: Linux perf2.basistech.net 2.6.32-71.29.1.el6.x86_64 #1 SMP poniedziałek 27 czerwca 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux numactl --show: ~/ numactl --show policy : domyślny preferowany węzeł: bieżący physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cpubind: 0 1 nodebind: 0 1 membind: 0 1 ~/ numactl --dostępny sprzęt: 2 węzły (0-1 ) węzeł 0 procesor: 0 2 4 6 8 10 12 14 węzeł 0 rozmiar: 6144 MB węzeł 0 wolny: 2030 MB węzeł 1 procesor: 1 3 5 7 9 11 13 15 węzeł 1 rozmiar: 6134 MB węzeł 1 wolny: 144 MB węzeł odległości: węzeł 0 1 0: 10 20 1: 20 10


title: Czy są wymierne korzyści z bycia MVP firmy Microsoft?

text: Mam kilka certyfikatów, MCPD, MCTS, MCAD itp. i dowiedziałem się, że MVP to nagroda (tylko tytuł), a nie certyfikat. Więc gdybym chciał zdobyć jeden z nich, musiałbym spędzić cenny czas na społecznościach, dzieląc się wiedzą i udzielając odpowiedzi innym za darmo, konsekwentnie, przez _lata_ , aż w końcu ktoś szczególny mnie zauważy i nagrodzi. Wyobrażam sobie, że po drodze pojawiłyby się jakieś osobiste korzyści, ale zakładając, że osiągnąłem ten cel i zostałem MVP, czy to się opłaci finansowo w jakikolwiek sposób (możliwości kariery, wyższa skala płac itp.)?


title: Jaką różnicę robi doświadczenie?

text: Widzę wiele ogłoszeń o pracę, które wymagają co najmniej x-letniego doświadczenia. Pytanie brzmi, skąd wiesz, kiedy kandydat ma wymagane lata doświadczenia? Czego oczekujesz od osoby z X-letnim doświadczeniem (edytuj: jak skutecznie sprawdzić, czy CV nie kłamie bez polegania na sprawdzaniu umiejętności)? Co może zrobić osoba z x-letnim doświadczeniem, której nie może zrobić osoba mająca y lat (z y < x) (edycja: zakładając, że ma podobne umiejętności)? Mogą zdarzyć się przypadki, gdy jakiś zapalony programista z y-letnim doświadczeniem, który ma ogromną wiedzę i pracował nad wieloma projektami, oraz inny programista z x-letnim doświadczeniem (x > y), który pracował nad kilkoma projektami i nie ma tak dużego doświadczenia. Dlaczego nie można tego sprowadzić do czegoś takiego „jeśli znasz tę technologię i wiesz, jak to zrobić (czy to projektowanie, komunikacja, kosztorysowanie itp.), to nadajesz się do naszej pracy”? Wiem, że na stanowisko architekta korporacyjnego nie można zatrudnić świeżo upieczonego absolwenta z rocznym stażem, ale widzę też problem z faktem, że prawie wszystkie ogłoszenia wymagają doświadczenia. IMHO przede wszystkim należy wziąć pod uwagę pasję. Po pierwsze nie wiedziałem, czy pytanie jest odpowiednie dla tej strony, ale ponieważ jest tam tag rekrutacji i doświadczenia, uważam, że ma tu swoje miejsce.


title: Czy to tylko ja, czy to zaskakujące pytanie do wywiadu technicznego?

text: ## Tło Poproszono mnie w wywiadzie technicznym o napisanie algorytmu przemierzającego „obiekt” (zwróć uwagę na cudzysłowy), w którym A jest równe B, B jest równe C, a A jest równe C. To wszystko. To wszystkie informacje, które otrzymałem. Zapytałem ankietera, jaki jest cel, ale najwyraźniej nie było żadnego, po prostu „przemierzaj” „obiekt”. Nie wiem o nikim innym, ale wydaje mi się to głupie pytanie. Zapytałem ponownie „czy szukam wartości?”. Nie. Po prostu „przemierz” to. Dlaczego miałbym kiedykolwiek chcieć bez końca przechodzić przez ten „obiekt”? Może stopić mój procesor? _Odpowiedź_ według ankietera była taka, że powinienem był napisać funkcję rekurencyjną. OK, więc dlaczego po prostu nie poprosić mnie o napisanie funkcji rekurencyjnej? A kto napisałby funkcję rekurencyjną, która nigdy się nie kończy? ## Moje pytanie: Czy to ważne pytanie dla reszty z was, a jeśli tak, czy możesz podać wskazówkę, czego może mi brakować? Być może za bardzo myślę o rozwiązywaniu rzeczywistych problemów. Od dawna z powodzeniem koduję, ale ten proces wywiadu technicznego sprawia, że czuję się, jakbym nic nie wiedział.


title: Jak zapewnić prawidłowe oszacowanie czasu podczas planowania sprintu bez „za dużo” projektowania?

text: Mój zespół nabiera tempa w zakresie Scrum, ale większość z nas jest bardziej zaznajomiona z metodologiami niezwinnymi lub „pseudo-”zwinnymi. Częścią, która jest dla nas największą przeszkodą, jest przeprowadzenie wydajnego spotkania dotyczącego planowania sprintu, podczas którego dzielimy elementy zaległości na zadania i szacujemy godziny. (Używam terminologii z szablonu Scrum VS2010; przepraszam, jeśli użyję gdzieś niewłaściwego słowa.) Kiedy próbujemy obliczyć, ile czasu zajmie zadanie, często wpadamy w pułapkę projektowania funkcji na poziom kodu – układ tabeli, interfejsy itp. – aby dowiedzieć się, jak długo to zajmie. Jestem prawie pewien, że to nie jest odpowiednie miejsce do robienia tego rodzaju projektów. Powinniśmy planować zadania na te spotkania projektowe podczas sprintu. Jednak mamy problem z ustaleniem, jak inaczej wymyślić sensowne szacunki dotyczące zadań. Czy są jakieś praktyczne nawyki/techniki/itp. za podjęcie decyzji o tym, jak długo potrwa dana funkcja, nie wiedząc, jak planujesz ją wdrożyć? Jeśli nasze szacunki czasowe ulegną znacznej zmianie po zakończeniu projektu, jak możemy odpowiednio zaplanować nasz backlog Sprintu z wyprzedzeniem? EDYCJA: Tylko dla wyjaśnienia, ponieważ niektóre komentarze/odpowiedzi są bardzo ważne, ale myślę, że zajęłam się niewłaściwym pytaniem. **_wiemy_**, że to, co robimy, nie jest właściwe i że powinniśmy poświęcić czas na sprint do tego projektu. Rozumieją to koncepcyjnie wszyscy programiści. Wprowadzamy również członka zespołu z doświadczeniem w Scrum, aby utrzymać nas na dobrej drodze, jeśli zaczniemy chwastów. Problem polega na tym, że _bez_ przechodzenia przez ten proces projektowania, trudno nam podać konkretne szacunki czasu dla czegokolwiek. Ciągle mówimy takie rzeczy jak „cóż, jeśli zaprojektujemy to w ten sposób, może to zająć 8 godzin, ale jeśli zamiast tego będziemy musieli zrobić to w inny sposób, zajmie to około 32, ale może nie być tak źle, gdy zaczniemy próbować to napisać ...". Zakładam również, że proces ten ulegnie poprawie, gdy będziemy mieć pewną historyczną prędkość do pracy, ale wiele technologii i wzorców architektonicznych, których używamy, jest dla nas nowych. Ale jeśli potencjalnie szalenie błędne szacunki są tylko naturalną częścią adaptacji tego procesu, to będziemy musieli się tylko przygotować, aby to zaakceptować :)


title: Co sprawia, że Instagram jest tak cenny?

text: Skoro tak jak w FAQ, dopuszcza się tutaj tematy dotyczące biznesu (branży komputerowej), to chciałbym się dowiedzieć, dlaczego Instagram może być tak cenny, że jest kupowany za 1 miliard dolarów (USD). Mówiąc prościej, czy nie jest to tylko aplikacja do ulepszania zdjęć (takich jak robienie zdjęć w stylu vintage) oraz udostępnianie tych zdjęć na Facebooku? To dlatego, że PlayFish miał świetne gry na Facebooku, i wiele z nich, i są o wiele bardziej wyrafinowane (takie jak Restaurant City i Pet Society). A PlayFish został przejęty zaledwie za 400 milionów dolarów. Niektóre firmy, takie jak RockYou, miały aplikację numer jeden na Facebooku, ale nie zostały nawet przejęte za niską cenę, jak 200 milionów dolarów. A teraz tylko aplikacja do filtrowania zdjęć i udostępnianie zdjęć, a jest to biznes wart miliard dolarów. Dlaczego?


title: Algorytm do szybkiego wyszukiwania tagów

text: Problem jest następujący. * Istnieje zestaw prostych jednostek E, z których każda ma zestaw tagów T. Każda jednostka może mieć dowolną liczbę tagów. Łączna liczba encji to blisko 100 milionów, a całkowita liczba tagów to około 5000. Zatem początkowe dane są mniej więcej takie: E1 - T1, T2, T3, ... Tn E2 - T1, T5, T100, .. Tk .. Ez - T10, T12, ... Tl Te dane początkowe są dość rzadko aktualizowane. * W jakiś sposób moja aplikacja generuje wyrażenie logiczne na tagach takich jak: T1&T2&T3 | (T5&!T6) * Muszę obliczyć liczbę encji pasujących do danego wyrażenia (uwaga - nie encje, tylko liczbę). Oczywiście to może nie być do końca dokładne. To, co mam teraz, to proste wyszukiwanie tabeli w pamięci, dające mi czas wykonania 5-10 sekund w jednym wątku. Jestem ciekaw, czy jest jakiś skuteczny sposób na poradzenie sobie z tymi rzeczami? Jakie podejście polecasz? Czy są do tego jakieś wspólne algorytmy lub struktury danych? **Aktualizacja** Trochę wyjaśnienia zgodnie z życzeniem. 1. Obiekty `T` są w rzeczywistości stosunkowo krótkimi ciągami stałymi. Ale to właściwie nie ma znaczenia - zawsze możemy przypisać jakieś identyfikatory i operować na liczbach całkowitych. 2. Zdecydowanie możemy je posortować.


title: Jakie czynniki należy wziąć pod uwagę przed podjęciem decyzji o budowie magistrali komunikatów z usługami SOAP?

text: Wydaje mi się, że koszt posiadania zespołu programistów zbudowania i utrzymania wszystkich komponentów niezbędnych do zapewnienia routingu, orkiestracji przepływu pracy, trwałości, bezpieczeństwa i innych funkcji zapewnianych przez komercyjną magistralę ESB byłby równy, a nawet wyższy niż, licencjonowanie komercyjnej ESB. Poza kosztami licencyjnymi z góry i być może preferencjami architektonicznymi, jakie są ważne czynniki, które należy wziąć pod uwagę podczas projektowania architektury integracji wokół budowania magistrali komunikatów przy użyciu usług SOAP zamiast licencjonowania oprogramowania magistrali komunikatów od komercyjnego dostawcy i integrowania z nim komponentów biznesowych?


title: czy złą praktyką jest wywoływanie widoku z innego widoku w MVC?

text: Mam kilka prostych widoków, nie mają za nimi żadnej logiki (nie ma za nimi żadnej akcji ani kontrolera), ich jedyną propozycją jest powiadomienie użytkownika o czymś w rodzaju „Wysłaliśmy Ci e-mail, aby potwierdzić Twoje konto”, „Nie masz dostępu do tego zasobu” itp. Te widoki są naprawdę proste i wywoływanie ich za pomocą kontrolera/akcji wydaje się być zbyt dużym obciążeniem, ale jakoś czuję, że nie jest to całkiem poprawne. Co myślisz? Jak radzisz sobie w takich sytuacjach? Wydaje mi się, że to pytanie będzie dotyczyć dowolnego MVC Framework, ale w moim przypadku korzystam z platformy ASP.NET MVC 3.


title: Jak najlepiej zorganizować warsztaty dla początkujących programistów?

text: Planujemy zorganizować warsztaty programowania dla web developerów Java z podstawowym kodowaniem, ale bez doświadczenia projektowego. Celem warsztatów jest zapoznanie tych programistów z czystym kodem. Obszary koncentracji: * TDD * Cztery zasady prostego projektowania * przeprowadza wszystkie testy * nie zawiera duplikatów * wyraża intencje programistów * minimalizuje liczbę zajęć i metod Struktura: * 6 całodniowych warsztatów coachingowych rozłożonych na 3 miesiące przy użyciu programowania w parach i zamiana par * Każdy warsztat zawiera * cztery 15 minutowe prezentacje/dema * cztery 90 minutowe ćwiczenia rozwiązywania problemów * 4 minuty pecha kuchy przez każdego programistę Planowane kata na pierwsze warsztaty: * liczby pierwsze * gra w kręgle * punktacja w tenisie * cyfry arabskie na rzymskie konwersja * czynniki pierwsze Czy uważasz, że jest to dobry sposób na zorganizowanie warsztatów programistycznych? Czy są jakieś elementy, które mógłbym wprowadzić do warsztatów, aby były bardziej interaktywne i wzbudziły większe zainteresowanie wśród programistów? Edycja 1: Podsumowanie opinii * Zainteresuj się czytaniem książek. * Mieć prawdziwe przykłady projektów. * Mieć kontakt z grupą w dni wolne.


title: Kontrola wersji oparta na pamięci przenośnej?

text: Opracowuję osobiste projekty na dwóch komputerach bez korzystania ze współdzielonego serwera lub połączenia sieciowego między nimi. Czy jakiekolwiek popularne systemy kontroli wersji niezawodnie obsługują korzystanie z przenośnej pamięci masowej (takiej jak urządzenie flash USB) jako udostępnionego repozytorium?


title: Dlaczego organizacje ograniczają dostęp do kodu źródłowego do inżynierów?

text: Większość organizacji ogranicza dostęp do kodu źródłowego do inżynierów, a nawet w miejscach takich jak Google kod źródłowy Androida jest niedostępny dla większości inżynierów w firmie. Czemu? Uwaga: nie mówię o dostępie do zapisu dla wszystkich w firmie, mówię o dostępie do odczytu.


title: Czysta stara struktura vs klasa w tym przypadku?

text: Stroustrup mówi, że powinieneś używać struktur, chyba że możesz określić niezmiennik dla struktury danych. Muszę przedstawić obiekt fizyczny, który posiada takie rzeczy jak położenie, prędkość, masa i bezwładność (i tak dalej). Chcę również wyrenderować obiekt, dla którego będę potrzebować ustawienia w konstruktorze i wyładowania rzeczy w destruktorze. Więc myślę, że to jest niezmiennik, ale wydaje się niewłaściwe, aby umieścić w nim te wszystkie fizyczne rzeczy, które tak naprawdę nie mają niezmienników. Części do rysowania są dość trywialne, więc nie warto w tym przypadku oddzielać ich od sztywnej bryły. Jakakolwiek rada? edit: Przypuszczam, że właśnie zdałem sobie sprawę z odpowiedzi na moje własne pytanie. Ciała sztywne **mają** niezmienniki, mianowicie muszą przestrzegać praw fizycznych.


title: Jaki jest związek SSL z infrastrukturą klucza publicznego?

text: To prawdopodobnie głupie pytanie, ale jak SSL ma się do infrastruktury klucza publicznego? Pozdrawiam, J


title: Czy muszę wiedzieć, jak działa Ajax, skoro Asp.net zapewnia mi UpdatePanel?

text: Pracuję nad formularzem internetowym Asp.net i już dostarcza mi gotowe do użycia rozwiązanie Ajax za pomocą panelu aktualizacji, więc czy powinienem poświęcić swój czas na naukę, jak naprawdę działa Ajax?


title: Samoorganizacja podczas planowania sprintu

text: Podczas planowania sprintu należy podjąć wiele decyzji: 1. Ile PBI powinien zobowiązać zespół? 2. Jakie zadania powinny stanowić każdy PBI? 3. Ile czasu powinno zająć każde zadanie? Bez lidera zespołu nie zawsze jest łatwo podejmować wszystkie te decyzje, ponieważ będą pewne punkty decyzyjne (czasem więcej niż kilka), w których członkowie zespołu będą się nie zgadzać. Zastanawiałem się nad kilkoma opcjami radzenia sobie z takimi nieporozumieniami, gdy konsensus nie może zostać osiągnięty w krótkim czasie (nie chcemy niekończących się sporów). 1. Niech zdecyduje ScrumMaster 2. Niech zdecyduje osoba, która najprawdopodobniej będzie pracować nad historią. 3. Głosowanie większością 4. Niech decyduje osoba, która faktycznie pisze zadania w Excelu (w takim przypadku zadania do każdego historyjki pisze inna osoba). Mam dwa pytania: 1. Jak zmierzyć konsensus? Czy Scrum Master powinien zapytać każdą osobę, czy zgadza się z każdą proponowaną decyzją? 2. Jeśli w najbliższym czasie nie można osiągnąć konsensusu, którą opcję z zaproponowanej przeze mnie listy powinniśmy wybrać, jeśli w ogóle? Dziękuję Ci!


title: Zaloguj się w try-catch czy później?

text: Czy należy rejestrować powodzenie operacji w bloku try-catch-block, czy po nim? Przykład: try do x log('successful') catch log('fail') end czy lepiej: spróbuj do x catch log('fail') end log('successful') Powiedziałbym, że logger nigdy nie powinien zawieść , ale co, jeśli z jakiegoś powodu tak się dzieje? W tym konkretnym przypadku miałem plik dziennika na dysku sieciowym, który rozłączył się z powodu działań do(x), które jednak nie zawiodły -- oczywiście moja próba nie powiodła się, ale moja operacja zadziałała. Jednak uważam, że ten ostatni przykład jest trudniejszy do odczytania i staram się, aby mój kod był jak najściślejszy, aby był czytelny.