title: W jaki sposób JavaScript (ECMAScript) jest podobny do Self i Scheme?

text: Patrząc na specyfikację ECMAScript 4th Edition, można zauważyć, że > ES3 jest prostym, wysoce dynamicznym językiem opartym na obiektach, który czerpie główne > idee z języków Self i Scheme. Nie znam tych dwóch języków i nie mogę znaleźć żadnej wzmianki o tym, co dokładnie jest podobne do tych języków w ECMAScript. Czy ktoś mógłby mi wyjaśnić funkcje, które ECMAScript przejął z tych języków?


title: Jakie są najlepsze zasoby do nauki TDD?

text: Chcę nauczyć się (i opanować) TDD. Jakie są najlepsze: * książki * strony internetowe * filmy * lista ćwiczeń * osobiste słowa mądrości do nauki, doceniania i używania TDD?


title: Co przyciąga programistów takich jak wy, którzy decydują się na programowanie na platformę mobilną Android?

text: Drodzy programiści, w ramach mojego ostatniego roku uniwersyteckiego projektu prowadzę badania nad tym, co sprawia, że programiści wolą programować na Androida niż inne mobilne systemy operacyjne. Opis nie musi być jednak szczegółowy, staram się znaleźć wzorce między programistami, aby określić, jakie właściwości (poza pieniędzmi) musi mieć firma programistyczna, taka jak Android, aby przyciągnąć programistów i tym samym się rozwijać.


title: Czy są jakieś biblioteki Clojure dla p2p?

text: Jestem web developerem, ale ostatnio uczę się Clojure i teraz interesuje mnie tworzenie aplikacji p2p. A ponieważ Clojure jest językiem ogólnego przeznaczenia, myślę, że mogę go po prostu użyć. Jakieś sugestie?


title: SOLIDNE a unikanie przedwczesnej abstrakcji

text: Rozumiem, co SOLID ma osiągnąć i regularnie go używam w sytuacjach, w których modułowość jest ważna, a jej cele są wyraźnie przydatne. Jednak dwie rzeczy uniemożliwiają mi konsekwentne stosowanie go w mojej bazie kodu: * Chcę uniknąć przedwczesnej abstrakcji. Z mojego doświadczenia wynika, że rysowanie linii abstrakcji bez konkretnych przypadków użycia (takich, jakie istnieją teraz lub w _przewidywalnej_ przyszłości) prowadzi do ich rysowania w niewłaściwych miejscach. Kiedy próbuję zmodyfikować taki kod, linie abstrakcji przeszkadzają, a nie pomagają. Dlatego mam tendencję do popełniania błędów, nie rysując żadnych linii abstrakcji, dopóki nie mam dobrego pomysłu, gdzie byłyby przydatne. * Trudno mi uzasadnić zwiększanie modularności dla samego w sobie, jeśli czyni to mój kod bardziej gadatliwym, trudniejszym do zrozumienia itp. i nie eliminuje żadnych duplikatów. Uważam, że prosty, ściśle powiązany proceduralny lub boski kod obiektowy jest czasami łatwiejszy do zrozumienia niż bardzo dobrze przemyślany kod ravioli, ponieważ przepływ jest prosty i liniowy. O wiele łatwiej jest też pisać. Z drugiej strony ten sposób myślenia często prowadzi do obiektów Boga. Generalnie refaktoruję je konserwatywnie, dodając wyraźne linie abstrakcji tylko wtedy, gdy widzę pojawiające się wyraźne wzorce. Co jest nie tak z obiektami Boga i ściśle powiązanym kodem, jeśli wyraźnie nie potrzebujesz większej modułowości, nie masz znaczącej duplikacji, a kod jest czytelny? EDYCJA: Jeśli chodzi o indywidualne zasady SOLID, chciałem podkreślić, że substytucja Liskov jest IMHO formalizacją zdrowego rozsądku i powinna być stosowana wszędzie, ponieważ abstrakcje nie mają sensu, jeśli tak nie jest. Ponadto każda klasa powinna mieć jedną odpowiedzialność na pewnym poziomie abstrakcji, chociaż może to być bardzo wysoki poziom ze szczegółami implementacji, które są stłoczone w jednej ogromnej klasie zawierającej 2000 wierszy. Zasadniczo twoje abstrakcje powinny mieć sens tam, gdzie zdecydujesz się na abstrakcję. Zasady, które kwestionuję w przypadkach, w których modułowość nie jest wyraźnie użyteczna, to otwarte-zamknięte, segregacja interfejsów, a zwłaszcza odwrócenie zależności, ponieważ dotyczą one modułowości, a nie tylko abstrakcji mają sens.


title: Zależna serializacja obiektów

text: Jaki jest zalecany sposób serializacji obiektów zależnych, zwłaszcza gdy obiekty są świeżo konstruowane (aby uniknąć złośliwych strumieni bajtów lub cokolwiek innego)? Na przykład.... Po stworzeniu (uogólnionego, ale ustawionego przez Spring dla mojej firmy) kalendarza fiskalnego opartego na JodaTime, tworzę kolejną wersję opartą na JSR310 (używając back-portu do rozwoju) w ramach przygotowań do Java 8 Obecnie pracuję nad serializacją; jak mam serializować obiekty zależne? Większość istniejących rzeczy ma „jedną” chronologię, ale nie mogę na tym polegać (na przykład rok podatkowy może rozpocząć się w dowolnym dniu roku ISO, co oznacza nową chronologię fiskalną). Coś takiego: public class FiscalDate implementuje Serializable { private final long epochDays; prywatne końcowe FiscalChronology chronologia; // Wiele innych instancji „daty” również ma odniesienie do swojej „ery”: private final transient FiscalEra era; } public class FiscalChronology implementuje Serializable { // Te dwa wzorce kontrolują rok/miesiąc. prywatny finał RokWzór rokWzór; prywatny final MonthWzór miesiącaWzór; // Ze względów bezpieczeństwa należy to wyprowadzić podczas deserializacji. prywatne, przejściowe, końcowe epoki FiscalEra[]; private Object readResolve() { return FiscalChronology.create(yearPattern, monthPattern); } } Co mam zrobić w erze „pochodnej”? public class FiscalEra implementuje Serializable { // Tak więc ery mogą być singletonami, zgodnie z dokumentacją/zaleceniami JSR310. prywatne statyczne końcowe ConcurrentHashMap<FiscalChronology, FiscalEra[]>; prywatna ostateczna wartość int era; prywatne końcowe FiscalChronology chronologia; public statycznaEraObrachunkowa of(ChronologiaObrachunkowa chronologia, między erą) { return putIfAbsent(chronology, makeEras(chronology))[era]; } } Czy mam po prostu usunąć serializację? Serializować tylko parametr „eraValue” (i polegać na wykresie serializacji, w tym samej chronologii)? * * * # EDIT: W związku z tym, co mam zrobić dla wyjścia `toString()` \- czy powinna to być tylko nazwa ery (którą łączę z erami ISO) i oczekiwać ludzie dołączają informacje o chronologii, jeśli to ważne, czy zawsze dołączają informacje o chronologii?


title: Czy powinienem nadal używać normalnego mysql_query, czy przełączyć się na interfejs PDO w php?

text: Tworzę dużą witrynę internetową i używam starej, starej metody `mysql_query` do transakcji i komunikacji z bazą danych oraz do wszystkiego, co mi się udaje, łącznie z bezpieczeństwem. Jestem trochę zdezorientowany, czy powinienem przełączyć się na nowy interfejs PDO? ponieważ nauczyłem się, że jest to bezpieczniejsze, czy nadal używam starych metod `mysql_query()` i `mysql_fetch_assoc()`? Jestem bardzo bliski ukończenia strony, a przejście na interfejs `PDO` będzie kosztowało mnie czas, aby zacząć aktualizować moje kody. Jestem trochę zdezorientowany, **którego powinienem użyć i jakie są plusy i minusy?**


title: Różnica między CMS a Web Development Framework

text: Świat sieci jest zalany CMS-ami. Niektórzy reklamują swój CMS jako Web Development Framework. Niektórzy mówią, że to rozwiązanie do zarządzania treścią, a obecnie słyszę Content Management Framerowk. Kiedy słyszymy „Framework”, brzmi to jakby bardziej złożone i wyrafinowane. Czy jest jakaś konkretna różnica między tymi dwoma, tj. CMS i Web Development Framework? A może Web Development Framework może być CMS-em i na odwrót? Dziękuję


title: Idiomatyczna architektura kodu JavaScript

text: Piszę aplikację node.js, którą rozkładam na moduły, problem polega na tym, że nie jestem pewien, jak zorganizować kod w idiomatyczny sposób JavaScript. Obecnie każdy z moich modułów udostępnia zestaw funkcji, które mają być wywoływane bezpośrednio. Cały stan jest modyfikowany przez moduł, a gameId jest pierwszym parametrem : //snip var gameId = gameModule.createGame(); // Zwróć gameId do zdalnego klienta client.send(gameId); } // Gdy zdalny klient chce dodać gracza gameModule.addPlayer(gameId, "Player 1"); } Alternatywnym podejściem byłoby faktyczne użycie obiektów, np. : //snip var game = new gameModule.Game(); // Zwróć gameId do zdalnego klienta client.send(game.getId()); } //snip // Gdy zdalny klient chce dodać gracza var gameToModify = gameModule.getGame(gameId); gameToModify.addPlayer("Gracz 1"); gameModule.saveGame(gameToModify); Moje pytanie dotyczy wszystkich programistów JavaScript (lub zwykłych), czy która z dwóch powyższych alternatyw wygląda na najłatwiejszą do pracy / najbardziej naturalną?


title: Inspirujące problemy, aby pokazać znaczenie wyrażeń regularnych?

text: Zamierzam przeprowadzić prezentację/demonstrację na temat wyrażeń regularnych w pracy, aby zachęcić młodych programistów do dodania tego potężnego i ważnego narzędzia do ich zestawu narzędzi. Samo nauczanie składni tego nie ogranicza. Często widzę, jak ludzie mówią „miło”. Po prezentacji kontynuują swoje życie programistyczne, nawet nie myśląc o tym, by używać go głównie. Grabię moją szarą materię, aby znaleźć solidne przykłady, a nie tylko problemy pasujące do „kot” i „cięcie”. Brakowało mi zanotowania okazji do moich oświeceń regex do wykorzystania tutaj. :^( Czy masz jakieś inspirujące problemy, które można by rozwiązać za pomocą regex? Aktualizacja: Wow! Nie spodziewałem się tylu wspaniałych odpowiedzi. Dziękuję. Na razie oznaczę odpowiedź @tdammers jako zaakceptowaną. Przynieś je Wspomnienia regex ciągle przychodzą :-)


title: Wielojęzyczne komunikaty o błędach i numery błędów

text: Zastanawiamy się więc nad możliwością przeniesienia naszego oprogramowania do obsługi wielu języków, a jednym z obszarów, z którymi będziemy musieli się zmierzyć, są komunikaty o błędach i inne powiadomienia. Oczywiście muszą one być zgłaszane użytkownikom w ich własnym języku. Nasz zespół (w większości) mówi tylko po angielsku i nawet gdybyśmy wszyscy byli wielojęzyczni, zamierzamy sprzedawać do wielu krajów i nigdy nie moglibyśmy oczekiwać, że będzie mieć rozsądną liczbę osób mówiących wszystkimi językami (jesteśmy małą firmą ). Oczywistym sposobem obejścia problemu językowego w przypadku zgłaszanych błędów lub innych komunikatów, o które możemy zostać zapytani, są numery błędów, które byłyby spójne w różnych językach. Chociaż będą one istnieć w backendzie (choćby tylko jako klucz w komunikacie o błędzie), naprawdę wolałbym nie rzucać nimi w użytkowników, jeśli nie musimy, ale nie mam innego rozwiązania. Czy ktoś ma jakieś przydatne sugestie dotyczące alternatyw?


title: Czy istnieją platformy testowania jednostkowego niezależne od języka?

text: Zawsze byłem sceptycznie nastawiony do przepisywania działającego kodu - przenoszenie kodu nie jest od tego wyjątkiem. Jednak wraz z pojawieniem się TDD i automatycznych testów znacznie rozsądniejsze jest przepisanie i refaktoryzacja kodu. Czy ktoś wie, czy istnieje narzędzie TDD, które można wykorzystać do przeniesienia starego kodu? Idealnie byłoby, gdyby można było wykonać następujące czynności: 1. Napisz niezależne od języka testy jednostkowe dla starego kodu, który zdał (lub nie powiódł się, jeśli znajdziesz błędy!). 2. Uruchom testy jednostkowe na innej bazie kodu, która nie powiodła się. 3. Napisz kod w nowym języku, który przejdzie testy bez patrzenia na stary kod. Alternatywą byłoby podzielenie kroku 1 na "Napisz testy jednostkowe w języku 1" i "Przenieś testy jednostkowe na język 2", co znacznie zwiększa wymagany nakład pracy i jest trudne do uzasadnienia, jeśli stara baza kodu przestanie być utrzymywana po port (oznacza to, że nie uzyskujesz korzyści z ciągłej integracji w tej bazie kodu). EDYCJA: Warto zwrócić uwagę na to pytanie na StackOverflow.


title: Czy standardy zabudowy różnią się w zależności od miasta?

text: Jestem programistą .Net C#, który większość swojego doświadczenia zdobyłem pracując w urzędzie rządowym w DC. Tam stosunkowo łatwo było znaleźć pracę. Wypuściłem swoje CV i za nie więcej niż miesiąc miałem ofertę. Obecnie mieszkam w Seattle, a 2-miesięczne poszukiwanie pracy pełne osobistych rozmów kwalifikacyjnych daje ten sam wynik: „Podoba nam się Twoje umiejętności osobiste i dobrze pasujesz do zespołu, ale Twoje kodowanie nie jest zgodne z naszymi standardami ”. Mam 2 teorie, dlaczego tak się dzieje: 1) Większość zadań programistycznych w DC dotyczy obsługi aplikacji administracyjnych niskiego poziomu. Dopóki 20-30 osób może z niego korzystać bez problemów, jest to dobry produkt. Jednak większość prac rozwojowych w Seattle jest wykonywana dla prawdziwych firm, które opracowują prawdziwe produkty używane przez szeroką gamę klientów… i MUSZĄ spełniać bardziej rygorystyczne standardy rozwoju. 2) (Ten jest prawdopodobnie bardziej oczywisty) Szukam pracy, która pasuje do tego, co zrobiłem w DC. Ponieważ koszty utrzymania są tutaj niższe, oznacza to, że stawiam poprzeczkę na wyższym poziomie Senior, co działa na moją niekorzyść. Czy to w ogóle ma sens dla kogoś innego? Czy ktoś jeszcze znajduje tego rodzaju rozbieżność między byciem deweloperem w kontrastujących obszarach? ...czy po prostu się potykam? kupa śmiechu


title: Czy istnieje standard nazewnictwa części ścieżki pliku?

text: Na przykład: /ścieżka/do/pliku.zip # ścieżka bezwzględna /ścieżka/do/ # ścieżka plik.zip # nazwa pliku Nie mogę znaleźć standardu nazewnictwa części ścieżki w dowolnym miejscu...


title: Czy 100% pokrycia kodu to mrzonka?

text: Czy można oczekiwać 100% pokrycia kodu w ciężkich aplikacjach webowych jquery/backbonejs? Czy rozsądne jest niepowodzenie sprintu z powodu niespełnienia 100% pokrycia, gdy rzeczywiste pokrycie kodu wynosi około 92%-95% w javascript/jquery?


title: Naprawdę przydatne diagramy UML

text: UML ma _dżunglę_ diagramów. Diagramy profili, diagramy klas, diagramy pakietów... ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/8tmN9.jpg) Jednak (IMH-i-niezbyt-doświadczony-O) Widzę, że robienie każdego diagramu jest przesadą. W związku z tym, które Diagramy UML są bardziej odpowiednie w kontekście internetowym, a dokładniej blogu (chcemy zbudować go od podstaw). Rozumiem, że to, że użyłem Diagramów UML, nie oznacza, że nasz kod byłby świetny i genialny... ale na pewno byłby lepszy niż zwykły kod nieplanowany...


title: Jak podchodzisz do nauki frameworka?

text: Kiedy musisz nauczyć się frameworka, jakie kroki podejmujesz, aby się go nauczyć? Czy masz określoną metodologię uczenia się frameworka?


title: Czy ktoś jeszcze lepiej zrozumiał wskaźniki podczas nauki list połączonych?

text: Jestem studentem Uniwersytetu i chodzę na zajęcia ze struktur danych. Czy ucząc się list połączonych i list podwójnie połączonych, czuliście, że nauczyliście się głębszego zrozumienia wskaźników, dynamicznej alokacji pamięci i wykorzystania pamięci? Właśnie stworzyłem swoją pierwszą listę powiązaną (w rzeczywistości była to lista podwójnie połączona) i wydawało mi się, że to prawdziwy otwieracz oczu. Twoje myśli?


title: Wybór (prawda?) projektu aplikacji

text: Pracując nad tworzeniem oprogramowania dla startupów na wczesnym etapie, widziałem dwie bardzo powszechne szkoły myślenia, które definiują podejście do projektowania aplikacji. Te dwa paradygmaty zazwyczaj obejmują projektowanie aplikacji opartej na „rozszerzalnej bazie kodu” lub „wyrzucanej bazie kodu”. Jakie czynniki należy wziąć pod uwagę/zmierzyć, aby określić swoje podejście do projektowania aplikacji? Jakie są alternatywne sposoby myślenia o projektowaniu aplikacji? Niektóre czynniki sugerowane do tej pory obejmują: * ilość czasu dostępnego na zbudowanie produktu, * całkowitą wielkość dostępnego budżetu, * poziom jakości.


title: Mam za zadanie prowadzić prace nad dokumentacją istniejącego, całkowicie nieudokumentowanego oprogramowania — jakie są dostępne zasoby, aby mi pomóc?

text: Jestem programistą w firmie technologicznej. Otrzymałem zadanie prowadzenia prac nad dokumentacją produktu, nad którym pracuję. Celem jest stworzenie dokumentacji wewnętrznej dla programisty, a projekt przenosi się na stronę biznesową, gdzie obejmuje dokumentację wymagań. Ten projekt jest trudny. W szczególności mam do czynienia z produktem, który: \- istnieje od dłuższego czasu, co najmniej 6 lat. \- nie ma żadnej innej dokumentacji poza małymi, przestarzałymi fragmentami tu i tam. \- zawiera komentarze w kodzie, ale są one techniczne i nie przekazują żadnego nadrzędnego zachowania (nawet od strony technicznej). \- ze względu na brak dokumentacji, często jest niepotrzebnie skomplikowany pod osłonami. Ponadto nie dano nam dużo czasu na pracę nad tym projektem. Nie posiadam żadnej formalnej dokumentacji, wykształcenia pisarskiego, szkolenia ani doświadczenia. Wykazałem się pewną umiejętnością pisania/komunikowania się w biurze, może dlatego zostałem przydzielony do tego projektu. Podziel się swoją radą lub rekomendacją dotyczącą zasobów, które pomogą mi przygotować i poradzić sobie z tym projektem. Szukam odniesień do książek/stron internetowych/forów/cokolwiek, aby pomóc mi wymyślić projekt planu z kamieniami milowymi, poznać najlepsze praktyki, delegowanie zadań, szablony, wpisowe itp. Mam nadzieję, że konkretnie w przypadku zasobów ukierunkowanych lub ze szczególną wzmianką o wprowadzeniu dobrej dokumentacji do **istniejących, nieudokumentowanych projektów**.


title: Podejście do naprawy błędów

text: Pracowałem nad projektem składającym się z baz danych i niedawno otrzymałem raport o błędzie dotyczący zdalnego wykonywania niektórych zapytań. Zwykle próbujesz znaleźć faktyczną przyczynę wystąpienia błędu, a następnie go naprawić. Ale czasami to, co robię, kiedy mam dość szukania informacji (i nie mogę znaleźć odpowiednich informacji w Internecie), to po prostu zmiana logiki, co zajmuje mi znacznie mniej czasu w porównaniu z inną opcją. Czy to podejście jest poprawne, czy też powinienem spróbować naprawić pierwotny błąd obejmujący więcej prac badawczo-rozwojowych?


title: Używasz JSTestdriver do testowania UI/DOM?

text: Czy JSTestDriver może służyć do testowania zachowań i interakcji DOM? Widzę, że mogę pisać testy, aby ćwiczyć czysty JS, ale jak mam przejść do testowania przeciwko HTML lub DOM? Czy mogę dostarczać z każdym testowym kodem HTML do renderowania przeglądarek i przeprowadzania testów?


title: Czy to poprawny przykład zwisającego wskaźnika?

text: Książka „Struktury danych w C” (Horowitz i Sahni) sugeruje, że w poniższym kodzie wskaźnik pf zachowuje się jak wisząca referencja: float f,*pf; pf=(float*) malloc(sizeof(float)); *pf=2,6; pf=(float*) malloc(sizeof(float)); Rozumowanie, które podają, jest takie, że po ostatnim wierszu nie ma możliwości odzyskania pamięci, w której przechowywano 2.6. Jednak wikipedia definiuje wiszący wskaźnik jako Wiszące wskaźniki i dzikie wskaźniki w programowaniu komputerowym to wskaźniki, które nie wskazują na prawidłowy obiekt odpowiedniego typu W powyższym kodzie pf nie spełnia tej definicji - wskazuje na prawidłowy obiekt odpowiedniego typu . Czy pf to zwisający wskaźnik, czy coś innego?


title: Czy klientom/klientom zależy na MVC lub formularzach internetowych?

text: Mam plan, aby wkrótce założyć małą firmę. Będzie to rodzaj freelancingu do tworzenia stron internetowych i aplikacji przy użyciu ASP.NET. Chcę się skoncentrować na formularzach internetowych lub MVC. Nie mam jednak pojęcia, czy ma to jakieś znaczenie dla klienta. Chodzi mi o to, czy klienci wiedzą o MVC lub formularzach internetowych? Czy wolą jeden z nich?


title: Jaki błąd jest najtrudniejszy do znalezienia?

text: Jeśli to możliwe, napisz, jak uniknąć tego rodzaju błędu (oczywiście poza testowaniem napisz konkretną technikę)


title: Czy twórca oprogramowania jest związany licencją, którą mu udziela?

text: Na przykład, jeśli osoba tworzy aplikację, którą udostępnia jako open source na podstawie licencji, która mówi, że możesz użyć tego kodu, ale nie możesz go sprzedać, czy ta osoba po prostu zobowiązała się, że nie będzie jej sprzedawać teraz?


title: Jak zaimplementować łącze agregacji dziecko-rodzic w C++?

text: Załóżmy, że mam * trzy klasy `P`, `C1`, `C2`, * relacje kompozycji (silna agregacja) między `P <>-C1` i `P <>-C2`, tj. każdą instancją `P` zawiera instancję „C1” i instancję „C2”, które są niszczone po zniszczeniu nadrzędnej instancji „P”. * relacja asocjacji między instancjami „C1” i „C2” (niekoniecznie między dziećmi tego samego „P”). Aby to zaimplementować, w C++ normalnie * definiuję trzy klasy `P`, `C1`, `C2`, * definiuję dwie zmienne składowe `P` typu `boost::shared_ptr<C1>`, `boost::shared_ptr <C2>` i zainicjuj je nowo utworzonymi obiektami w konstruktorze `P`, * zaimplementuj relację pomiędzy `C1` i `C2` używając zmiennej składowej `boost::weak_ptr<C2>` w `C1` i zmienna składowa `boost::weak_ptr<C1>` w `C2`, którą można ustawić później odpowiednimi metodami, gdy relacja zostanie ustanowiona. Teraz chciałbym również mieć link z każdego obiektu `C1` i `C2` do jego obiektu nadrzędnego `P`. Jaki jest dobry sposób na wdrożenie tego? Moim obecnym pomysłem jest użycie prostego **stałego** surowego wskaźnika (`P * const`), który jest ustawiany z konstruktora `P` (który z kolei wywołuje konstruktory `C1` i `C2`) , czyli coś takiego: class C1 { public: C1(P * const p, ...) : paren(p) { ... } private: P * const parent; ...}; class P { public: P(...) : childC1(new C1(this, ...)) ... { ... } private: boost::shared_ptr<C1> childC1; ...}; Szczerze mówiąc, nie widzę ryzyka w używaniu surowego wskaźnika **private constant** w ten sposób, ale wiem, że surowe wskaźniki są często niemile widziane w C++, więc zastanawiałem się, czy istnieje alternatywne rozwiązanie.


title: Dlaczego pracodawca miałby prosić o „długą” próbkę kodu?

text: Co duży projekt obejmujący wiele plików i ponad 1000 wierszy pokazałby pracodawcy, że nie można przechwycić kilku pojedynczych plików i kilkuset wierszy?


title: Czy 'if password == XXXXXXX' wystarczy, aby zapewnić minimalne bezpieczeństwo?

text: Jeśli tworzę login do aplikacji, która ma średnie lub niskie ryzyko bezpieczeństwa (innymi słowy, nie jest to aplikacja bankowa ani nic innego), czy mogę zweryfikować hasło wprowadzone przez użytkownika, po prostu mówiąc coś takiego: if( enterPassword == zweryfikowane hasło) SendToRestrictedArea(); else DisplayPasswordUnknownMessage(); Wydaje się, że łatwo jest być skutecznym, ale z pewnością nie miałbym nic przeciwko, gdyby to było wszystko, czego potrzeba. Czy wystarczy proste sprawdzenie kombinacji nazwa użytkownika/hasło? **Aktualizacja:** konkretny projekt jest usługą internetową, weryfikacja odbywa się wyłącznie po stronie serwera i nie jest open-source. Czy domena zmienia sposób, w jaki sobie z tym poradzisz?


title: Dlaczego pracownicy marketingu, menedżerowie produktu itp. zasługują na własne biuro, a programiści są zatłoczeni w pomieszczeniu jak najwięcej?

text: Nie rozumiem, dlaczego wiele (wiele) firm traktuje programistów tak, jakby byli pracownikami linii montażowej tworzącymi widgety. Joel Spolsky ma świetny przykład problemów, jakie to stwarza: > Z programistami jest to szczególnie trudne. Produktywność zależy od > umiejętności żonglowania wieloma drobnymi szczegółami w pamięci krótkotrwałej jednocześnie. Jakikolwiek rodzaj przerwy może spowodować awarię tych szczegółów. Kiedy > wznawiasz pracę, nie możesz zapamiętać żadnych szczegółów (takich jak zmienna lokalna > nazwy, których używałeś lub miejsce, w którym zaimplementowałeś ten algorytm wyszukiwania >) i musisz ciągle wyszukiwać te rzeczy, co spowalnia dużo spadasz, dopóki nie wrócisz do prędkości. >> Oto prosta algebra. Powiedzmy (jak sugerują dowody), że > jeśli przerwiemy programiście, nawet na minutę, to naprawdę tracimy > 15 minut produktywności. Na potrzeby tego przykładu ustawmy dwóch programistów, Jeffa > i Mutta, w otwartych boksach obok siebie w standardowej > fermie cielęcej Dilberta. Mutt nie pamięta nazwy wersji Unicode funkcji > strcpy. Mógłby to sprawdzić, co zajmuje 30 sekund, lub mógł > zapytać Jeffa, co zajmuje 15 sekund. Ponieważ siedzi tuż obok Jeffa, > pyta Jeffa. Jeff rozprasza się i traci 15 minut produktywności (aby zaoszczędzić Muttowi 15 sekund). >> Teraz przenieśmy je do oddzielnych biur ze ścianami i drzwiami. Teraz, gdy > Mutt nie pamięta nazwy tej funkcji, mógłby ją sprawdzić, co > nadal trwa 30 sekund, lub zapytać Jeffa, co teraz zajmuje 45 sekund i > wymaga wstawania (nie jest to łatwe zadanie, biorąc pod uwagę przeciętna sprawność fizyczna > programistów!). Więc sprawdza to. Więc teraz Mutt traci 30 sekund > produktywności, ale oszczędzamy 15 minut dla Jeffa. Ach! Cytuj Link Więcej Spolsky o biurach Dlaczego menedżerowie i właściciele tego nie widzą?


title: Jak mogę uniknąć równoczesnego dostępu w PostgreSQL?

text: Chciałabym poznać Twoją opinię, jak sobie poradzę, gdy silnik PDO i silnik Hibernate "rozmawiają" z tym samym db? Istnieje aplikacja PHP jako frontend, a Java wykonująca jakąś pracę po użytkowniku przez PHP tak mówi. Czy możemy zatem uniknąć jednoczesnego dostępu do tych samych rekordów? I nie masz problemów? Baza danych to PostgreSQL.


title: Pytanie o agregacje, kompozycje, referencje (strzałka) i proste relacje linków (nic) w UML2?

text: Mam kilka pytań dotyczących relacji między agregacjami, kompozycjami, referencjami (strzałka) i prostymi relacjami linków (nic) w UML2 ? 1. Jeśli A -> B -> C każdy ma relację składu. Czy korzeń jest odpowiedzialny za stworzenie i zniszczenie obiektu B i C ? 2. Jakie agregacje nie mają prostego linku lub referencji? Co je wyróżnia? Dziękuję. Edycja: Pytanie było nieco niejasne i nieobiektywne. Zredagowałem to.


title: Języki kompozycji architektonicznych

text: Niedawno natknąłem się na ten artykuł (PDF) mówiący o listach ACL lub językach kompozycji architektonicznych. Są połączeniem dwóch wcześniejszych linii badawczych: języków definicji architektury (takich jak UML) i języków kompozycji obiektów (takich jak XAML, WWF lub języki skryptowe). Celem listy ACL jest posiadanie wysokopoziomowego opisu architektury programu, który można również skompilować w uruchamialny program. Opis wysokiego poziomu wspomaga automatyczną analizę, podczas gdy „wykonalność” oznacza, że zmiany mogą być natychmiast testowane. Nadal pisałbyś komponenty programu w konwencjonalnym języku programowania (C, Java, Python, itp.), ale byłyby one _złożone_ w kompletny program przez ACL. Jedną z oczekiwanych korzyści jest możliwość przeniesienia programu na inną platformę poprzez zamianę „podobnych, ale różnych” komponentów. Od dłuższego czasu tęskniłem za czymś takim (zobacz odpowiedź, której udzieliłem kilka lat temu na pytanie StackOverflow). W artykule wspomniano, że naukowcy pracowali nad językiem o nazwie ACL/1, który początkowo był ukierunkowany na Javę, ale miał być również przeniesiony do obsługi .Net. Jednak nie mogę znaleźć nigdzie więcej wzmianki o ACL/1. Czy wykonano w tej sprawie jeszcze jakąś pracę? Czy są jakieś inne implementacje koncepcji ACL, które są dostępne do użytku lub eksperymentowania?


title: Jak można wykorzystać umiejętność programowania, aby pomóc ludziom żyjącym w ubóstwie?

text: Jako studentka informatyki na studiach często słyszę od znajomych pracujących przy różnych projektach humanitarnych i sama chcę coś zrobić. Wydaje się jednak, że programiści nie mają tak wielu oczywistych sposobów pomocy, jak, powiedzmy, lekarze czy nauczyciele. W jaki sposób programiści mogą wykorzystać swój talent dla ludzi żyjących w ubóstwie?


title: W jakiej kolejności ludzie budują strony internetowe?

text: Na stronę internetową trzeba mieć pomysł, projekt i dane, zdarzenia i dane wyjściowe, prawda? Niezależnie od tego, czy będzie to blog, aplikacja internetowa, witryna z pytaniami i odpowiedziami, wyszukiwarka... W każdym razie jest to tylko nieznacznie związane z moim pytaniem. Moje pytanie brzmi: od czego mam zacząć, projektując stronę internetową, pod warunkiem, że znam cel? Czy powinienem najpierw zacząć od CSS, projektując i look&feel, używając fikcyjnych danych, czy też programować w logice, zdarzeniach i danych wyjściowych, a później stylizować? Jak wygląda proces projektowania większości stron internetowych tworzonych od podstaw?


title: Czy jest sens pisania w C lub C++ zamiast w C#, nie wiedząc konkretnie, co sprawi, że program będzie szybszy?

text: Napisałem małą bibliotekę w Pythonie do obsługi plików STFS konsoli Xbox 360, które mają być używane w moich aplikacjach internetowych. Chciałbym przepisać go do użytku w wielu programach komputerowych, które ludzie piszą do modowania gier 360, ale nie jestem do końca, czy powinienem nadal używać C# lub zagłębiać się w C ++, a nawet C. STFS to używany system plików w pliku przez konsolę Xbox 360, a zadaniem biblioteki byłoby wyodrębnianie/wstrzykiwanie plików, co może zająć zauważalną ilość czasu. To, co wiem w C#, pochodzi z samouczków i zasobów internetowych, podobnie jak wszystko, czego dowiaduję się o C++, więc pytam, czy lepiej zbliżyć się do języka nieco niższego poziomu bez wcześniejszego poznania cech języka, które zwiększają lub kontynuuj, zakładając, że optymalizacje kompilatora i mój brak doświadczenia oznacza, że wybrany przeze mnie język nie będzie miał znaczenia.


title: Dobre przykłady nauczania szacowania oprogramowania (rozmiar, harmonogram, nakład pracy)?

text: Będę prowadzić zajęcia, które obejmują szeroki pędzel technik szacowania. Zamierzam omówić techniki szacowania bezwzględnego oparte na SLOC (np. Punkty funkcyjne, COCOMO II itp.) oraz relatywistyczne, takie jak dobór koszulek, estymacja story-point itp. Zastanawiałem się, jakie dobre ćwiczenia do przeprowadzenia na zajęciach zrozumieć co, dlaczego i jak szacować. Mam nadzieję, że wzbudzę ich zainteresowanie konkretnymi praktycznymi przykładami, a nie _śmiercią przez powerpoint_. Przykładem, który zasugerował mój kolega, było przyniesienie gazety na zajęcia i poproszenie ich o oszacowanie liczby słów w gazecie (w przypadku krótkich artykułów lub tylko strony w przypadku długich). Ponieważ nie mogą tego całkowicie policzyć, będą zmuszeni wymyślić własne heurystyki i stamtąd wziąć wykład, aby pomóc im uzyskać wgląd w ich własną _technikę szacowania_. Chociaż jest to dobry przykład, nie wydaje się dobrze łączyć z szacowaniem oprogramowania IMHO. Zastanawiałem się, jakie byłyby dobre przykłady nauczania szacowania oprogramowania w.r.t. oszacowania wielkości, harmonogramu i nakładu pracy, które napotkają w praktyce. Wolę praktyczne przykłady, które mogę „poprowadzić na zajęciach” zamiast „po prostu o tym mówić”. **AKTUALIZACJA** : Aby rzucić więcej światła na strukturę klasy - Tak, omówię aspekty szczegółowości, tj. na etapie RFP, co jest najlepsze, co można zrobić. W jaki sposób można doprecyzować oszacowanie, gdy więcej wiadomo o problemie (np. FP po zakończeniu prototypowania) i jak przydatne mogą być punkty fabularne, gdy masz listę historii, do których należy przejść Lub jak mogą być modele typu COCOMO oparte na liczbie SLOC stosowana architektura/projektowanie postów. Tj. zawężenie stożka niepewności w miarę postępów w realizacji projektu. Moim celem jest zebranie przykładów, które zespoły uczniów mogą ćwiczyć na zajęciach, aby lepiej wyczuć techniki i zrozumieć ich łatwość użycia (lub trudność) oraz poziom dokładności, który można uzyskać na tym poziomie szczegółowości i wiedzy. **PS** : Jeśli sprzeciwiasz się głosowaniu, będę wdzięczny za komentarz podkreślający to samo. To nie jest subiektywne pytanie i raczej nietrywialne, aby uczyć w sposób praktyczny i ma możliwość wyboru „najlepszej odpowiedzi”


title: Gdzie mogę uzyskać kod, który piszę samodzielnie, do oceny praktyki?

text: Jestem świeższy. Moja praca nie jest dla mnie zbyt wymagająca, jeśli chodzi o ćwiczenie umiejętności programowania. Zacząłem więc sam pisać kod (prosty program do inwazji w kosmos, aplikacja do czatu itp.). Niektóre z nich skończę za kilka tygodni, ale martwię się o to, jak mój kod zostanie oceniony/skrytykowany. Jestem nowy i mówią, że potrzeba lat, aby zostać dobrym programistą, więc oczywiście popełniam błędy. Ale kto może mi powiedzieć, jakie błędy popełniam? Ilość kodu, który piszę w mojej firmie i który jest sprawdzany lub poprawiany przez starszych programistów, jest zbyt mała, aby mieć znaczący wpływ na moją karierę. Proszę pomóż.


title: Czy moduł może przyjmować niejawne założenia?

text: Używam .Net i C#. Mam następujący kod w jakimś module: DateTime validFrom = Convert.ToDateTime(validFromTxt.Text); To sprawia (moim zdaniem) domniemane założenie *, że istnieje tekst w validFromTxt.Text *, że można go przekonwertować na typ DateTime. Moje pytanie brzmi, czy moduł może przyjąć te niejawne założenia (ze względu na „znajomość” kontekstu strony), czy lepiej byłoby je sprawdzić przed poleceniem?


title: Jak język po stronie serwera może obejmować wiele serwerów?

text: Chciałbym zapytać Was jako ekspertów o PHP, ASP.NET/C#, Python lub jakikolwiek inny język po stronie serwera. Jak obejmują wiele serwerów? Kiedy widzę dużą witrynę i sprawdzam, z ilu serwerów dedykowanych korzysta, używa przynajmniej 10 serwerów. Siedzę i zastanawiam się, jak język, który został użyty do budowy tej strony, obejmuje te serwery? Czy jest coś w samym języku lub jego architekturze, co sprawia, że jest on w stanie z tym współpracować **i czy jest jakiś język, który jest lepszy od innych?** **Edytuj:** Ale widzę wiele ASP.NET i PHP zasilane witryny, które znajdują się na wielu serwerach, w tym przypadku jak ta sama zaprogramowana witryna może znajdować się na serwerze 1, na serwerze 2 itd. Czy **Serwer 1** zawiera na przykład jakieś funkcje, a **Serwer 2** zawiera inne? A może po prostu programują witrynę, a firma hostingowa zapewnia równowagę między tymi serwerami?


title: Prawidłowe wyrównanie przy komentowaniu kodu

text: Załóżmy, że mam jakiś kod void some_block(void) { some_statement_1(); jakieś_oświadczenie_2(); jakieś_oświadczenie_3(); } Teraz chciałbym zakomentować wypowiedź nr 2, ale tutaj nigdy nie mogę znaleźć sposobu, w którym jest to właściwe. Zwykle robię co następuje: void some_block(void) { some_statement_1(); // jakaś_wypowiedź_2(); jakieś_oświadczenie_3(); } Ale teraz mamy coś, co wygląda jak dodatkowe wcięcie w instrukcji nr 2, ale można się spierać, czy to wcięcie jest nadal "poprawne". Alternatywnie możemy zrobić: void some_block(void) { some_statement_1(); //jakas_oświadczenie_2(); jakieś_oświadczenie_3(); } Wygląda to trochę lepiej, ale wciąż jakoś też nie tak. Jednak następujące po prostu wygląda na nie na miejscu: void some_block(void) { some_statement_1(); //jakas_oświadczenie_2(); jakieś_oświadczenie_3(); } Jak skomentować kod i zachować "poprawne" wcięcia? **Aktualizacja** Wygląda na to, że większość osób, które udzieliły odpowiedzi, nie odpowiedziała na moje pytanie, ale po prostu stwierdziła, że pozostawianie martwego kodu jest złą praktyką. Chociaż całkowicie się z tym zgadzam, nie o to chodziło. W tej chwili mam do czynienia z przykładem, w którym mam 5 funkcji pomocniczych, które zarządzają dla mnie 5 podobnymi, ale nieco różnymi strukturami. Używam tych funkcji pomocniczych, aby mój kod był łatwiejszy do odczytania. Ale w tej chwili (i prawdopodobnie przez następny miesiąc) jedna ze struktur nie będzie używana. I nie mogę zatwierdzić niczego, co powoduje ostrzeżenia kompilatora, więc muszę odkomentować tę część kodu i zatwierdzić ją w ten sposób. Zapomniałem też o tym ostatnim wariancie, który moim zdaniem wygląda po prostu źle: void some_block(void) { some_statement_1(); // jakaś_wypowiedź_2(); jakieś_oświadczenie_3(); }


title: „Generatory są pochodnymi funkcji”

text: Czytam ten artykuł na temat nowej funkcji generatorów ECMAscript 6, które lądują w interpreterze JavaScript V8. Niezbyt daleko od góry autor proponuje analogię: > generatory są jak funkcje, ich ciała są doprowadzone do pierwszej > pochodnej. Wywołanie „next” integruje dwa punkty „yield”. Bardzo podoba mi się ta analogia. Czy ta analogia była już omawiana w literaturze? Czy są podobne? Czy mieści się w szerszych ramach analogii? (Zrobiłem szybkie wyszukiwanie w Google, ale to nie pomogło).


title: Znalezienie odpowiedniej licencji dla mojego open source

text: Mam zamiar stworzyć nowy projekt open-source i nie jestem pewien, jaką metodę licencjonowania powinienem wybrać. Oto co wiem: * Projekt zostanie zbudowany na bazie istniejącego już open source. Oddzielę się od oryginalnego projektu i zbuduję społeczność wokół nowego projektu, który ma bazę kodu z oryginalnego projektu. * W przypadku, gdy nowy projekt odniesie sukces, będę chciał pewnego dnia przejść na rozszerzoną wersję, na której zarobię. Chcę, aby wersja niewolna nie była open-source. Na razie mam 2 główne projekty, które mogę wykorzystać jako projekt bazowy. Jeden posiada licencję GPL, a drugi licencję MIT. Zastanawiam się, co lepiej odpowiadałoby moim potrzebom. Zastanawiam się też, jakiej licencji powinienem użyć dla mojego open-source, aby być może kiedyś rozwidlić płatną wersję, która nie będzie open-source?


title: Początkujący próbujący zrozumieć istniejący projekt

text: Mam projekt, który wymaga ode mnie sterowania ruchem robota SCARA za pomocą VC. Jestem początkującym programistą, więc pomyślałem o wykorzystaniu istniejącego programu jako punktu odniesienia. Robot SCARA, którego używam, jest cenną własnością działu i musi być obsługiwany ze szczególną ostrożnością. Nie mogę po prostu zrobić programu znikąd, aby zapewnić, że robot nie zostanie uszkodzony. Trudno mi zrozumieć istniejący program i przytłaczają mnie długie linie kodowania. Niestety ostatnia osoba zaangażowana w program już odeszła i nikt w moim dziale nie ma żadnego doświadczenia z programem. Obecnie nie otrzymuję pomocy, której naprawdę potrzebuję. Mam nadzieję, że ktoś udzieli mi wskazówek dotyczących tego projektu.


title: Co zrobić, gdy nie możesz renegocjować określonego projektu oprogramowania?

text: Cóż, mam pewien spór z kolegą. Mamy projekt oprogramowania, w którym budujemy wszystkie nasze widżety po stronie serwera i wysyłamy je po stronie klienta jako html. Przez większość czasu lepiej i łatwiej jest kontrolować i dodawać elementy. Ale czasami po prostu nie jest tak dobrze; sprawia, że strona klienta działa „opóźniona” w odniesieniu do danej sytuacji. Kolejną poważną wadą jest to, że robi się naprawdę wolno z niejasnych powodów. Więc co byś zrobił w tym przypadku? **Edycja:** Kiedy mówię „opóźniony”, mam na myśli, że strona klienta nie jest świadoma żadnych zmian dokonanych po stronie serwera, po prostu otrzymuje ciąg funkcji, które ma wywołać, jeśli coś pójdzie nie tak z załadowaniem jednego z zasoby przekazywane ze strony serwera (np. obraz lub inny skrypt) po stronie klienta są ograniczone w razie potrzeby obsługi błędów. Sytuacje te są traktowane bardzo słabo, ponieważ strona klienta nie ma „jasnego obrazu” stanu. Oczywiście można poradzić sobie z sytuacją od strony serwera (w pokręcony sposób), ale z drugiej strony po co się tak męczyć, skoro jest to o wiele bardziej uproszczone przy dzieleniu rolek.


title: Jak mogę chronić aplikację Java, która ma zostać wdrożona na rynku aplikacji Google Chrome?

text: Tworzę aplikację Java. Ma rozwiązać problem inżynierski. Myślę, że fajnie byłoby sprzedać go jako aplikację na rynku google chrome, ale martwię się o bezpieczeństwo. Próbowałem znaleźć jakieś informacje na ten temat, ale bezskutecznie. Czy ktoś ma jakieś przemyślenia na ten temat? jak bezpieczny jest rynek Google Chrome? Mam na myśli bezpieczeństwo w tym sensie, że ktoś pobiera twoje oprogramowanie i używa go – i rozpowszechnia – bez pozwolenia. Byłbym wdzięczny za wszelkiego rodzaju informacje, czy to linki do książek czy osobistych doświadczeń, cokolwiek. Dziękuję!


title: Jak radzić sobie z „statycznymi” danymi systemu w javie?

text: Zastanawiałem się tylko, czy istnieje lepszy sposób obsługi „statycznych” danych konfiguracyjnych systemu. Powiedzmy, że masz system, który oferuje kilka operacji, które są w kodzie przetłumaczone na kod operacji, ale musisz zachować inne powiązane informacje z tą operacją, takie jak opis, priorytet itp. Nieprzyjemny sposób, który widziałem, to publiczne statyczne stałe końcowe. Lepszym sposobem, którego używałem wcześniej, było utworzenie klasy np.: public abstract Codebook{ private int id; prywatny opis ciągu; ... getters setters } Następnie dla danej kategorii - w tym przypadku OperationalCode: public class OperationalCode extends Codebook{} Instancje tej klasy zostały utworzone z danych z BD. Teraz nie mogę używać DB, więc pomyślałem, że stworzę fabryki, które zapełnią klasy o zadanym zestawie parametrów. ALE wszystko jest zakodowane na sztywno do klasy fabrycznej, co mi się nie podoba. Czy istnieje lepsze rozwiązanie, jak poradzić sobie z tą sprawą, ponieważ uważam, że nie jestem pierwszym, który to rozwiązuje. Jakieś poręczne ramy lub… prawdopodobnie nie byłem wystarczająco jasny. Jestem w pełni świadomy możliwości Właściwości w javie, ale to nie spełnia kryteriów. Pozwólcie, że wyjaśnię więcej: Kiedy mówię konfiguracja, mam na myśli konfigurację biznesową. Nigdy nie wiadomo, ile możliwych przedmiotów dostaniesz. Na przykład w systemie bankowym możesz anulować umowę i jesteś zmuszony podać powód wypowiedzenia - predefiniowana lista zawierająca tekst, kod w Twoim systemie oraz tłumaczenie na kody systemów firm trzecich, gdzie Twój system również musi wykonać operację anulowania. Te możliwości muszą zostać uzewnętrznione w twoim systemie, ponieważ prawdopodobnie będą się często zmieniać. Pliki własności nie wydają się dobrym wyborem, a strona przeciwna - używanie Buisiness Rule Systems (np. Drools ) wydaje mi się przesadą. Używanie wyliczeń z określonymi właściwościami nie byłoby dobrze dopasowane, ponieważ od czasu do czasu musisz być w stanie rozpoznać, że jest to konfiguracja, a nie zwykłe wyliczenie. To przyczyna dziedziczenia klas - operator instanceof rozwiązuje ten problem.


title: Zastrzeżone formaty i oprogramowanie Open Source

text: Jak to możliwe, że otwarte oprogramowanie, takie jak OpenOffice.org, obsługuje zastrzeżone formaty, takie jak Microsoft DOC i MP3? AFAIK, format DOC nie jest otwarty, a implementacja tej funkcji w OO.org wymagała znacznej ilości inżynierii wstecznej. Dlaczego więc Microsoft (ani żaden inny gracz prawnie zastrzeżony) nie robi z tego problemu? W tym samym świetle, dlaczego wtyczki GStreamera mogą odtwarzać zastrzeżone formaty?


title: Najlepszy algorytm/praktyka przy tworzeniu mechanizmu przeszukiwania Twojej bazy danych?

text: Projektowałem bazę danych, w której bardzo ważne jest zapewnienie użytkownikom dobrego mechanizmu wyszukiwania. Zastanawiałem się więc, jakie są najlepsze praktyki dotyczące używania słów kluczowych do przeszukiwania wielu tabel bazy danych i zwracania odpowiednich rekordów? Kilka innych rzeczy, które mnie interesują: * Lokalizacja użytkowników, jeśli podają adres * Szybkość działania algorytmu Dodatkowe informacje: Używam C# i LINQ-To-SQL.


title: Jak mogę rozpocząć testowanie w testowej antykulturze?

text: Muszę wyznać: sformalizowane automatyczne testowanie nigdy nie było częścią mojego doświadczenia w programowaniu. Obecnie pracuję w bardzo dużej firmie z wieloma programistami (większość z nich to _web_ programiści tego czy innego rodzaju) i widać, że większość z nich również nie testuje*. (*Nie będę powtarzał _formalnie_; proszę to wywnioskować.) Jeśli będę czekać na wsparcie mojej organizacji, aby rozpocząć testowanie, nigdy się to nie stanie. Jeśli spróbuję „zmieniać rzeczy od środka”, wpychając testowanie w kierownictwo, zabraknie mi energii, zanim nastąpi zmiana. Muszę teraz zacząć testować. Ale z TDD i podobnymi, będę miał dużo kodu testowego razem z kodem produkcyjnym. Nasze systemy kontroli wersji (wszystkie scentralizowane) nie są zorganizowane do przechowywania kodu testowego. Będę musiał znaleźć na to wszystko miejsce na mojej stacji roboczej. Czy można rozpocząć osobistą praktykę testowania oprogramowania w kulturze, która nie ceni ani nie dostarcza do tego narzędzi? Jakich technik i narzędzi używasz, aby umożliwić Ci testowanie, gdy oficjalne narzędzia i organizacja nie mają miejsca na testy, frameworki i automatyzacje?


title: Czy istnieje wspólna konwencja kapitalizacji w C++?

text: Dużo pracuję w Pythonie i Javie, a oba te języki mają dość powszechne (choć nie uniwersalne) konwencje dotyczące używania wielkich liter w identyfikatorach: oba używają `PascalCase` dla nazw klas i `ALL_CAPS` dla stałych „globalnych” , ale w przypadku innych identyfikatorów wiele kodu Java używa `mixedCase`, podczas gdy wiele kodu Pythona używa `underscore_delimiters`. Wiem, że żaden język ani biblioteka nie wymuszają żadnej określonej wielkości liter, ale odkryłem, że kiedy trzymam się standardowych konwencji dla języka, którego używam, mój kod wydaje się o wiele bardziej czytelny. Teraz zaczynam projekt w C++ i chciałbym zastosować ten sam pomysł. Czy jest jakaś najczęstsza konwencja pisania wielkimi literami, o której powinienem wiedzieć?


title: Co to są C++/CX i C++/CLI i jak mają się do C++ i WinRT?

text: Rozważałem podjęcie wyzwania nauki C++ do projektowania aplikacji Metro i wtedy natknąłem się na C++/CX. Czy aplikacje Metro mogą być kodowane w C++ 11? Czy do działania wymagają C++/CX? A czym dokładnie jest C++/CX? Czy można utworzyć aplikację Metro przy użyciu tylko C++, czy jest wymagany C++/CX? Jak C++/CLI łączy się z tym obrazem?


title: Certyfikat Java — czy powinienem uaktualnić?

text: Mam certyfikat Java 1.2, który ukończyłem w 2002 roku. Teraz mam 10 lat doświadczenia w Javie i próbowałem nadrobić zaległości we wszystkich nowych funkcjach Java 5/6, ale czasami gubię się w niektórych nowych rzeczach, zwłaszcza w przypadku wielowątkowości i generyków które zostały odnowione w późniejszych wydaniach? Czy powinienem ponownie podjąć SCJP dla Java 6 lub Java 7? Jakieś doświadczenia w tej sprawie? Jakieś sugestie?


title: Dlaczego komputery nie są dostarczane ze specjalistycznym sprzętem, takim jak sieci sortujące?

text: Zamiast programować w sposób, w jaki to robimy, dlaczego nie określimy typowych zadań, takich jak „sortowanie”, a następnie pozwolimy środowisku skompilować je, aby jak najlepiej wykorzystać jego sprzęt? W ten sposób moglibyśmy dostarczyć komputer z nowym wyspecjalizowanym sprzętem, takim jak sieci sortujące, i automatycznie działałby z istniejącym kodem.


title: Uproszczony plecak w PHP

text: Mam dwa przypadki, w których chciałbym wyświetlić informacje w „uzasadnionym” wyrównaniu - ale nie obchodzi mnie, czy wartości są przełączane w kolejności. Jednym z przykładów jest wyświetlanie nazw użytkowników online: `Anton Brother68 Komisarz Dougheater Elflord Foobar Goop Hoo Iee Joo` Przestawiając je, możemy uzyskać dokładnie 22 znaki w każdej linii: Anton Brother68 Foobar Komisarz Elflord Goop Dougheater Hoo Iee Joo plecakowy, z wyjątkiem tego, że wydaje się, że powinno być rozwiązanie P, ponieważ nie zależy mi na perfekcji i mam wiele linijek. Druga instancja jest identyczna, z wyjątkiem tego, że zamiast nazw i liczby znaków wyświetlałbym losowe obrazy i używałbym ich szerokości.


title: Jaka jest różnica między aplikacjami sieci Web ASP.NET a witrynami internetowymi?

text: Obecnie czytam _Pro ASP.NET 4 w C#_ i w nim opisane są dwa sposoby tworzenia aplikacji webowej: * Strona internetowa * Projekt aplikacji webowych W jakich scenariuszach powinienem wybrać ten pierwszy nad drugim i na odwrót?


title: Czy powinienem trzymać się Pythona, czy porzucić go, aby radzić sobie ze współbieżnością?

text: Mam projekt 10K LOC napisany w Django z sporą ilością Celery (RabbitMQ) dla asynchroniczności i zadań w tle tam, gdzie jest to potrzebne, i doszedłem do wniosku, że części systemu skorzystałyby na przepisaniu w _czymś_ innym niż Django dla lepszej współbieżności . Powody obejmują: * Obsługa sygnałów i obiekty mutowalne. Zwłaszcza, gdy jeden sygnał wyzwala inny, obsługa ich w Django za pomocą ORM może być zaskakująca, gdy instancje zmieniają się lub znikają. Chcę użyć pewnego podejścia do przesyłania wiadomości, w którym dane przekazywane nie zmieniają się w programie obsługi (podejście kopiowania przy zapisie w Clojure wydaje się ładne, jeśli mam to dobrze). * Części systemu nie są oparte na sieci WWW i wymagają lepszego wsparcia przy jednoczesnym wykonywaniu zadań. Na przykład, system odczytuje tagi NFC, a gdy jeden z nich zostanie odczytany, na kilka sekund zapala się dioda LED (zadanie Celery), odtwarzany jest dźwięk (inne zadanie Celery) i odpytywana jest baza danych (inne zadanie). Jest to zaimplementowane jako polecenie zarządzania Django, ale Django i jego ORM są z natury synchroniczne i współdzielą pamięć (zastanawiamy się nad dodaniem większej liczby czytników NFC i nie sądzę, aby podejście Django+Celery już działało, Chciałbym zobaczyć lepsze możliwości przekazywania wiadomości). Jakie są zalety i wady używania czegoś takiego jak Twisted lub Tornado w porównaniu z korzystaniem z języka takiego jak Erlang lub Clojure? Interesują mnie praktyczne korzyści i szkody. > W jaki sposób doszedłeś do wniosku, że niektóre części systemu będą radzić sobie > lepiej w innym języku? Czy masz problemy z wydajnością? Jak poważne są te problemy? Skoro może być szybszy, to czy konieczne jest, aby był > szybszy? **Przykład 1:** Django w pracy poza żądaniem HTTP: 1. Odczytywany jest tag NFC. 2. Baza danych (i prawdopodobnie LDAP) jest przeszukiwana i chcemy coś zrobić, gdy dane staną się dostępne (czerwone lub zielone światło, odtwórz dźwięk). Blokuje to użycie Django ORM, ale dopóki są dostępni pracownicy Celery, nie ma to znaczenia. Może być problem przy większej liczbie stacji. **Przykład 2:** „przekazywanie wiadomości” przy użyciu sygnałów Django: 1. Obsługiwane jest zdarzenie `post_delete`, inne obiekty mogą zostać z tego powodu zmienione lub usunięte. 2. Na koniec należy wysłać do użytkowników powiadomienia. Tutaj byłoby miło, gdyby argumenty przekazywane do obsługi powiadomień były kopiami usuniętych lub do usunięcia obiektów i gwarantowały, że nie zmienią się w obsłudze. (Można to zrobić ręcznie, po prostu nie przekazując obiektów zarządzanych przez ORM do programów obsługi).


title: Czy rzeczywiście musimy płacić, aby tworzyć aplikacje na Windows Phone, Android lub iPhone?

text: Chcę wiedzieć, ile kosztuje stworzenie bezpłatnej aplikacji na telefon (co oznacza, że wyceniam ją na 0 USD) na: 1. WP7 2. iPhone 3. Android A jeśli teraz chcę wycenić aplikację na 0,99 USD? Ile muszę zapłacić, jeśli jest to: 1. WP7 2. iPhone 3. Android Ponadto, czy potrzebuję dodatkowego sprzętu (używam systemu Windows Vista Home Premium 32-bit) I czy muszę płacić za oprogramowanie?


title: Jakie jest ogólne słowo określające zarówno metody, jak i atrybuty?

text: Na diagramie klas każda klasa zawiera metody i atrybuty. Jakie jest właściwe słowo na opisanie ich obu poza czymś ogólnym, takim jak zawartość lub przedmioty? Kontekst: > Klasa Orange rozszerza klasę Fruit i dziedziczy jej **rzeczy**. gdzie _stuff_ = pojedyncze słowo dla metod i atrybutów


title: Czy podjęcie pracy związanej z siecią i bazami danych ograniczy moje późniejsze możliwości rozwoju oprogramowania?

text: Uwielbiam programować, szczególnie OOP. Moje szkolne doświadczenie dotyczyło głównie Javy/OOP i przez ograniczony czas miałem pracę w Javie, Pythonie i innych językach OOP. Jednak ten ruch wymagał zmiany pracy, a teraz skończyłem na pracy nad tworzeniem stron internetowych i baz danych. Możliwe, że utrzymam tę pracę przez kilka lat. Moje pytanie brzmi, czy to ograniczy moje późniejsze wybory? Czy będę w stanie znaleźć inną pracę związaną z Java / programowaniem, czy też zostanę odrzucony, ponieważ moje doświadczenie będzie dotyczyć głównie innej dziedziny?


title: W jaki sposób git używa SHA-1 do wykrywania korupcji w transferach?

text: Czytałem o gita w książce "Pro Git" Apressa. Wspomina, że SHA-1 służy do wykrywania zmian w zatwierdzeniach, a także do sprawdzania, czy nie ma uszkodzeń podczas pobierania z serwera. Znam skrót wiadomości wykrywający zmianę, ale w jaki sposób sprawdza się i przypuszczalnie koryguje błędy? Strona Wikipedii dotycząca SHA-1 nie wspomina o funkcjach takich jak CRC. Dzięki, Scott


title: Trójwarstwowa architektura aplikacji, logika i baza danych

text: (Uwaga: przykłady są uproszczone) Podzieliłem moje rozwiązanie na 3 projekty * Witryna internetowa * Logika biznesowa * Logika dostępu do danych Witryna ma dostęp do BL i DAL BL nie ma dostępu do niczego DAL ma dostęp do BL Na stronie internetowej Mogę zrobić coś takiego BL.User user = DAL.GetUser(1) Mam również ten typ logiki w witrynie user = [informacje o nowym użytkowniku] If Not DAL.DoesEmailExists(user) Then DAL.InsertNewUser(user) End If Jaka byłaby moja opcja, aby usunąć to, jeśli/wstawić ze strony? Moją idealną opcją byłoby umieszczenie tej logiki w BL.User, ale nie jest to możliwe. Jeśli BL ma dostęp do DAL, tworzy odwołanie cykliczne.


title: Na co powinienem zwrócić uwagę podczas poszukiwania pracy, aby znaleźć silny nacisk na OOD?

text: Obecnie szukam pracy. Mam dobre CV, ale małe doświadczenie branżowe, więc problemem jest to, że nie do końca wiem, czego szukam. **To, co zrobiłem**, to dobry licencjat z informatyki i obszerna sześcioletnia praca jako uniwersalny programista w jednostce wojskowej. Nie będę wdawał się w szczegóły, ale pracowałem nad dość dużą liczbą projektów, z ogromną różnorodnością, ale każdy o dość ograniczonym zakresie. Jestem też na razie bardzo generalistą - nie mam konkretnej dziedziny, w której się specjalizuję. **Najbardziej podobało mi się** sfera designu - obiektowe projektowanie modułów , API, architektura projektu, co masz. **Jako ostateczny cel** Wierzę, że chciałbym widzieć siebie jako architekta oprogramowania. **To, co w tej chwili chciałbym** to pozycja, w której OOD ma duże znaczenie – gdzie mogę uczyć się i rozwijać swoje umiejętności, a w końcu ćwiczyć OOD na większą skalę niż dotychczas. Oczywiście nikt nie ma czystego OOD jako opisu stanowiska; nie tego oczekuję i nie tego szukam. Ale nie jestem zaznajomiony z głównymi poddziedzinami rynku pracy w inżynierii oprogramowania, a moja wiedza na temat głównych obecnych technologii jest dość podstawowa. Bardzo trudno jest mi stwierdzić na podstawie opisu stanowiska (a nawet rozmowy z osobą przeprowadzającą rozmowę kwalifikacyjną), czy praca może mieć istotny element projektu. Tak wiele stanowisk, które widzę, może wiązać się z dużą ilością OOD lub wcale - a przynajmniej tak wydaje się tej niedoświadczonej osobie poszukującej pracy. Wydaje się, że tak bardzo zależy to od dokładnego charakteru pracy i od tego, jak dokładnie używają stosów technologii, których nie znam (i nawet nie poznam ich nazw bez poważnego kopania lub akceptacji pracy :P). **Czego mogę szukać na stanowisku, aby znaleźć pracę z naciskiem na OOD?** Czy istnieją określone dziedziny, typy firm lub stanowiska, których powinienem szukać lub których powinienem unikać? Czy są pytania, które mogę zadać podczas rozmów kwalifikacyjnych, które mi pomogą?


title: Mam bibliotekę i kilka małych programów, które z niej korzystają: jak mam uporządkować repozytoria git?

text: Mam kod, który używa biblioteki, którą ja i inni często modyfikuję (zwykle tylko przez _dodawanie_ funkcji i metod). Każdy z nas prowadzi lokalny widelec biblioteki do własnego użytku. Mam też wiele małych programów "sterowników" (~100 linii), które korzystają z biblioteki i są używane wyłącznie przeze mnie. Obecnie posiadam zarówno programy sterownika, jak i bibliotekę w tym samym repozytorium, ponieważ często dokonuję zmian w obu logicznie połączonych (dodanie funkcji do biblioteki, a następnie wywołanie jej). Chciałbym scalić moje rozwidlenie biblioteki z rozwidleniami moich współpracowników, ale nie chcę, aby programy sterowników były częścią scalonej biblioteki. Jaki jest najlepszy sposób na zorganizowanie repozytoriów git dla dużej, współdzielonej biblioteki, która musi być często scalana, oraz wielu małych programów, które mają zmiany powiązane ze zmianami w bibliotece?


title: Czy gem open source powinien zawierać .rvmrc?

text: Używanie `.rvmrc` wydaje się być uważane za najlepszą praktykę dla aplikacji. Ale czy klejnot open source powinien zawierać `.rvmrc` w swoim kodzie źródłowym na Github? Myślę, że nie jest dobrze wymagać od wszystkich, którzy chcą wnieść swój wkład, aby używali dokładnie tej samej wersji Ruby lub gemset co ty.


title: skrypt linux jako usługa w PHP i JS

text: Czy możliwe jest stworzenie aplikacji/usługi internetowej w PHP, w której szkieletem aplikacji/usługi jest tak naprawdę skrypt linuksowy, a PHP po prostu przekazuje dane ze skryptu? Skrypt linux wymaga pewnych typów sprzętu i sterowników, aby działać płynnie. Będę hostował aplikację internetową i skrypt linuksowy, ale nie sprzęt ani sterowniki. Zastanawiam się nad napisaniem kodu javascript, który sprawdzi, czy użytkownik końcowy spełnia wymagania sprzętowe/sterownika i ma jakieś połączenie, jeśli tak, skrypt linuxa wykona i wykorzysta sprzęt użytkownika do przetwarzania danych, które są następnie przekazywane do PHP. JAK!? ;o Czy moje podejście do tego jest prawidłowe, czy istnieje prostszy sposób? Dziękuję!


title: Schematy rozwiązywania zakleszczeń

text: Interesują mnie badania, które wykrywają i wychodzą z impasów. Innymi słowy, system jest w stanie odzyskać sprawność po błędach zakleszczenia. Interesują mnie wielordzeniowe procesory pamięci współdzielonej. Do tej pory widziałem tylko badania dotyczące systemów rozproszonych. Czy ktoś może mnie w tym poprowadzić.


title: Jak odzyskać siły po zawstydzeniu siebie i swojej firmy?

text: Pracuję w firmie outsourcingowej w Rosji, a jednym z naszych klientów jest firma finansowa zlokalizowana w USA. Przez ostatnie pół roku pracowałem nad kilkoma projektami dla tej konkretnej firmy, a ponieważ przydzielono mi większy projekt, **zostałem zaproszony do pracy na miejscu w USA w celu zrozumienia i poznania nowego systemu**. Sprawy nie potoczyły się tak dobrze, jak się spodziewałem, ponieważ środowisko było bałaganiarskie po oryginalnych programistach i musiałem spędzić sporo czasu, aby zrozumieć dziwactwa. Udało nam się jednak wydać kilka dni temu i wygląda na to, że wszystko idzie całkiem gładko. Z technicznego punktu widzenia mój klient wydaje się być ze mnie zadowolony. Moje rozwiązania wydają się działać i zawsze staram się dodać odrobinę kreatywności do tego, co robię. Jednak jestem w pewnym sensie bardzo zdezorganizowany, tak jak wielu z was, koledzy. Pozwolę sobie zauważyć, że moja obecna praca jest moją pierwszą w życiu i miałam szczęście, że dostałam pracę z elastycznym harmonogramem, co oznacza, że mogę przychodzić i wychodzić z biura, kiedy tylko chcę, pod warunkiem, że mam 40 godzin pracy w tygodniu. Czasami chcę spędzić wieczór ze znajomymi, a w kolejne dni lubię dobrze spać rano – dlatego elastyczny grafik (lub jego brak) jest dla mnie idealnym rozwiązaniem. [Właśnie zdałem sobie sprawę, że ten akapit wygląda zbyt poważnie, powinienem był ozdobić go jakimiś JEDNOROŻCAMI!] Oczywiście po przyjeździe do USA wszystko się zmieniło. To nie jest jakaś firma programistyczna ze specjalnym traktowaniem dla nerdów. Tutaj musisz wstać o 7:30, aby dotrzeć do biura o 9 rano, a następnie siedzieć do 17:00. Osobiście _nienawidzę_ wstawać rano, żeby nie powiedzieć, że moja produktywność zaczyna rosnąć dopiero o 5 rano, czyli **jestem bardzo powolny, dopóki nie muszę**, co jest ironią losu. Czasami zostaję nawet dłużej niż 8 godzin, aby dokończyć moje bieżące rzeczy bez przerw. W każdym razie mógłbym sobie z tym poradzić. W końcu **_płacili za moją podróż, kim ja jestem, żeby narzekać?** Potrzebują, żebym był w ich godzinach pracy, żeby móc omówić różne sprawy._ To ma sens, że stały harmonogram nie ma żadnego sensu Dla mnie. Ale to _ma_ sens, że ma to sens dla mojego klienta. A _ja_ jestem tu _dla klienta_ , więc sens jest przekazywany. Ojej, rozumiesz. Kilka razy proszono mnie, żebym przyszedł dokładnie o 9 rano, ale z lenistwa i arogancji nie potraktowałem tych próśb wystarczająco poważnie. To się w końcu opłaciło — ** ostatniego dnia obudziłem się 10 minut przed ostatecznym spotkaniem z właścicielem firmy, ponieważ zaspałem również poprzedniego dnia**. Oczywiście wkurzyło to kilka osób, w tym mojego klienta, ponieważ zignorowałem jego bezpośrednią prośbę o przybycie na czas przez dwa dni z rzędu, w tym mój ostatni dzień. Oczywiście nie zrobiłem tego celowo, ale z pewnością mogłem się upewnić, że mam co najmniej dwa alarmy, które mnie obudzą, i tak dalej... Nie zrobiłem tego. Wysłał też e-mail do mojego szefa, nazywając moje zachowanie **śmiesznym i wstydliwym dla mojej firmy i mówiąc „w ogóle nie jest zadowolony z mojego profesjonalizmu”**. Mój szef powiedział mi, że „system musi działać zarówno na wejściu, jak i poza nim” i zasugerował, abym został do późnej nocy, pracując w trybie berserkera, naprawiając jak najwięcej problemów i wysyłając maila statusowego do mojego klienta. Tak zrobiłem, ale jeszcze nie otrzymałem odpowiedzi. Oto moje pytania do wspaniałej społeczności programistów: > Czy miałeś sytuacje, w których Twoja **ignorancja i osobiste, nietechniczne > błędy powodowały problemy dla Twojej firmy**? > > Czy udało Ci się **nadrobić swoją winę** i **pozostać w dobrych > relacjach** z klientem lub szefem? Jak? > > Jak byś się zachował **gdybyś był w mojej sytuacji**? * * *


title: Dodajesz wywołanie zwrotne do funkcji?

text: Czy istnieje sposób na dodanie wywołania zwrotnego do dowolnej funkcji javascript bez zmiany jej definicji? Czy można to zrobić bez korzystania z biblioteki takiej jak deferred?


title: Reprezentowanie liczb zmiennoprzecinkowych w kodzie bajtowym

text: W jaki sposób języki interpretowane zazwyczaj zajmują się reprezentowaniem liczb zmiennoprzecinkowych w ich kodzie bajtowym? Załóżmy na przykład, że mam program w Javie z wierszem `double a = 3.0;` Jak wygląda `3.0` w kodzie bajtowym programu? Widzę dwie możliwości: 1) Zapisanie reprezentacji liczby w pamięci na poziomie bitu w kodzie bajtowym, a następnie po prostu wczytanie jej z powrotem do pamięci, gdy tego potrzebujemy. Prawdopodobnie są tutaj problemy z przenośnością (rozmiar `podwójnego` na różnych maszynach może się różnić, więc jak możemy przechowywać liczbę w kodzie bajtowym w przenośny sposób?). 2) Napisz kanoniczną reprezentację liczby do kodu bajtowego, który można zdekodować, gdy nadejdzie czas wykonania programu. Dosłowny łańcuch `3.0` może służyć tutaj do tego celu, ale wtedy marnujemy czas wykonania na analizowanie liczby zmiennoprzecinkowej w czasie wykonywania. Więc moje pytanie brzmi, która strategia jest najbardziej powszechna/wydajna/najlepsza? Możesz swobodnie cytować przykłady z różnych interpretowanych języków, które skompilują się do kodu bajtowego (Python, Lua itp.) lub po prostu wskazać mi niektóre zasoby odpowiednich artykułów, jeśli jest to konieczne (w Google trochę, ale niewiele maszyn wirtualnych jest dobrze udokumentowanych).


title: Kiedy należy poprzedzić nazwy nazwą projektu?

text: Jeśli pracujesz z SharePoint, zobaczysz klasy takie jak `SPList`, `SPSite` itp. Widziałem wariacje na temat tego w innych projektach, w innych technologiach, m.in. w przypadku projektu CRM, klasy o nazwach `CRMLoggingFactory`, `CRMEntity` itp. To wyróżnia się, gdy patrzysz na kod i wiesz, do czego odpowiada prefiks, ale kiedy rysujesz linię? Jakie są warunki, aby klasa była poprzedzona nazwą projektu, nazwą firmy itp. (czyli „nazwą domeny” projektu)?


title: Udostępnianie użytkownikom informacji o historii wersji programu?

text: Jednym z ograniczeń programu, który utrzymuję, jest to, że użytkownicy końcowi często nie wiedzą, jakie zmiany zostały wprowadzone. Aby temu zaradzić, chciałbym pokazać moim użytkownikom uproszczoną listę zmian dokonanych w ich programie. Czy istnieje dobra metodologia/podejście, które można zastosować, aby utworzyć łatwą do aktualizacji listę, którą można następnie wprowadzić do interfejsu użytkownika? Na przykład: Czy powinienem przechowywać wszystko w pliku XML, który jest wczytany do formularza? Czy historia zmian powinna trafić do bazy danych? Uwaga: Program to WinForm (C# 4.0). **AKTUALIZACJA** Bazując na doskonałych opiniach, zdecydowałem się użyć SQLite do przechowywania informacji i udostępnię użytkownikom chronologiczną listę zmian w kontrolce TreeView.


title: Aplikacja Ruby on Rails współpracująca z drukarką kodów kreskowych Datamax

text: Próbuję znaleźć samodzielny sposób na interfejs z drukarką etykiet Datamax M-Class Mark2 za pośrednictwem aplikacji Ruby on Rails. Obecnie mam działające rozwiązanie, które używam javascript do interfejsu z obiektem ActiveX na maszynie użytkownika. Jeśli to w ogóle możliwe, chciałbym to zrobić bez potrzeby korzystania z obiektu ActiveX.


title: Jak rozwiązać błędy instalacji zgłaszane przez użytkowników na Androidzie?

text: Mam jakąś aplikację w Google Play, którą można bezpłatnie pobrać, ale niektórzy ludzie zgłaszają takie rzeczy, jak: „Wystąpił problem z instalacją na moim htc x”. Jak mogę pomóc tym ludziom? Mógłbym odpowiedzieć i zapytać o ich wersję Androida, a co nie, ale to naprawdę nie pomoże mi w debugowaniu, ponieważ błąd pojawia się podczas instalacji! Jakieś ogólne pomysły, jak sobie z tym poradzić? Może jakieś wskazówki dotyczące ogólnych problemów z instalacją Androida lub jak pomóc ludziom?


title: Naprawianie duplikacji danych w dwóch podobnych tabelach w różnych bazach danych

text: Obecnie zajmuję się konserwacją starego systemu zamówień, który wyrósł na dziecko z plakatu z powodu złych praktyk kodowania. Jedną z rzeczy, z którymi mam do czynienia, jest duże powielanie danych, które chcę naprawić. Problem polega na tym, że jedna centralna tabela „użytkownicy” istnieje w dwóch różnych bazach danych (A i B), w A jest powiązany z systemem zamówień, B jest powiązany z systemem logistycznym. Nowi użytkownicy są dodawani do obu tabel i zawierają identyczne informacje, z wyjątkiem tego, że w B znajdują się trzy dodatkowe pola. Moim instynktem jest usunięcie duplikacji danych. Obecnie wiele zapytań jest skierowanych do A i B przez ich odpowiednie łańcuchy narzędzi. 1. Moją pierwszą myślą jest zmiana zapytań dla A.users na B.users i usunięcie tabeli A.users. Chociaż wydaje się to złe, byłyby JOINS przechodzące od A do B, gdy jakiekolwiek narzędzia do zamawiania muszą sprawdzać w tabeli użytkownika (a jest to dużo). 2. Moim drugim pomysłem jest przeniesienie tabeli użytkowników do oddzielnej bazy danych zawierającej tylko dane specyficzne dla użytkownika i przeniesienie pól związanych z logistyką do oddzielnej tabeli na B. Jakieś pomysły, jak to rozwiązać?


title: Artykuły dotyczące bezpieczeństwa w sieci mobilnej

text: Zaczynam wprowadzać mobilne aplikacje internetowe do mojej firmy, ale mój niezbyt zaawansowany technicznie szef martwi się o problemy z bezpieczeństwem sieci na urządzeniach mobilnych. Jestem nowy w świecie mobilnym, ale jako programista stron internetowych znam podstawy bezpieczeństwa w sieci (takie jak najlepsze praktyki wymienione w OWASP), ale nie wiem, czy jest coś innego, co mogłoby sprawić, że moja mobilna aplikacja internetowa jest podatna na ataki specjalnie dla urządzeń mobilnych przeglądarki internetowe. Potrzebuję też artykułu internetowego, który można przeczytać od szefów, którzy nie znają się na technologii, który pomoże mi przekonać go, jak bezpieczna może być nasza mobilna aplikacja internetowa, jeśli zastosuję wspólne najlepsze praktyki bezpieczeństwa w sieci. czy możesz mi z tym pomóc? PS. Używam Javy jako backendu i jQuery Mobile jako frontendu.


title: Jak używać pozorowanych obiektów [C++] bez przekazywania ich jako argumentów do funkcji?

text: Jestem w trakcie integrowania struktury testów jednostkowych dla istniejącej bazy kodu w C++. Wyzerowałem CxxTest, ale jak się okazuje, możemy również używać innych Mocking Frameworks (takich jak googlemock) w połączeniu z CxxTest. Po przeczytaniu tutoriali na temat CxxTest (Mocking) i googlemock (niesławny przykład żółwia), mam ogólną koncepcję, że musisz zdefiniować klasę mock (używając makr itp.), zadeklarować obiekt klasy mock, a następnie przekazać go do funkcji przeprowadzasz testy jednostkowe. Obecnie w istniejącej bazie kodu jest wiele sytuacji, w których nie jest to możliwe. Oto pseudo przykład do wyjaśnienia: class CCandidateForTest { public: bool foo(int a) { CAnotherClass obj; int b = obj.bar(a+2); if (a == b) { zwróć prawdę; } else { return false; } } } (Jest to zbyt uproszczone, są też wyjątki, a typami pierwotnymi mogą być również inne obiekty itp.; ale masz ogólną ideę) (także tworzenie obiektów nie zawsze jest bezpośrednie i czasami może wykorzystywać fabrykę) Chcę napisać test dla funkcji `CCandidateForTest::foo`. Ta metoda wewnętrznie tworzy obiekt `CAnotherClass`, który muszę zakpić, aby `CAnotherClass::bar` zwracał różne wartości, dzięki czemu różne ścieżki kodu w `foo` są przemierzane w testach jednostkowych. Krótko mówiąc, problem polega na tym, że testowana funkcja wewnętrznie tworzy obiekt klasy, który ma zostać zafałszowany - stąd przekazanie instancji zaklętego obiektu do funkcji nie jest możliwe. Jak w takim przypadku skorzystać z kpiny? Czy istnieje konkretny framework do prześmiewania, który to umożliwia?


title: Co zrobić (lub nie) gdy deweloper nie dostarczy towaru?

text: Niedawno miałem nieszczęście zatrudnić programistę, który nie dostarczył **działającego** produktu w umówionym terminie. Mam oprogramowanie, ale powoduje błędy podczas instalacji. Deweloper powiedział, że produkt działa. Chciałem dać deweloperowi korzyść z wątpliwości, ale zignorowali wszystkie prośby o pokazanie mi działającego demo. Założyłem stronę specjalnie po to, żeby mogli zainstalować oprogramowanie, ale nic nie zrobili (powinna być kwestia wgrania zipa i zmiany paru rzeczy w konfiguracji). Zignorowali również wszystkie prośby o informacje dotyczące ich konfiguracji. Właściwie naprawdę trudno jest uzyskać od nich jakąkolwiek odpowiedź. Minęło prawie 1,5 miesiąca od terminu. **Możliwe pomysły** * Poproś osobę trzecią o sprawdzenie oprogramowania. * Złóż roszczenie w Paypal (chociaż myślę, że jest za późno i i tak nie jest objęte ubezpieczeniem). * Upublicznij to (zakładam, że nie jest to zniesławienie, bo to prawda). **PYTANIE:** Co mam z tym zrobić (lub nie)? **EXTRA** * Zauważyłem, że nawet jeśli oprogramowanie miało działać, jest wiele funkcji, o które prosiłem (przed przyjęciem zlecenia), a które zostały zignorowane. * Znalazłem w sieci komentarze na temat firmy mówiące, że taka sytuacja jest dla nich normalna. Wydaje się, że wykorzystują błędy w swoim oprogramowaniu jako wymówkę do wyłudzania większych pieniędzy od swoich klientów. Właściwie była to ulga, ponieważ potwierdzała moje przekonanie, że zostałam oszukana. * Nie mają numeru telefonu na swojej stronie internetowej. * Deweloper ma siedzibę w USA. **EDYTUJ:** Ustalono, że zapłaciłem 25% kosztów rozwoju. Deweloper zachowa wszelkie prawa do produktu. Produkt integrował już istniejący komponent open source z systemem CMS. Wyprodukowałem ikony i wykonałem stylizację dla części komponentu (ukończone). Deweloper wykonałby komponent z funkcjami, o które prosiłem, do połowy grudnia. **EDIT2:** Deweloper powiedział, że będzie w stanie zapewnić wszystkie funkcje, o które prosiłem. **EDIT3:** Brak dokumentacji z oprogramowaniem.


title: Jaka jest najlepsza metoda renderowania innego szablonu GSP na podstawie typu obiektu w kolekcji?

text: Załóżmy, że mam kolekcję skonfigurowaną w moim kontrolerze o nazwie „rzeczy”. W tej kolekcji znajduje się niejednorodny asortyment przedmiotów. Załóżmy, że niektóre są typu „Rzecz”, a inne typu „Inna Rzecz”. Na stronie GSP, która renderuje tę listę, chcę renderować każdy inny typ obiektu w inny sposób. Wiem, że poniższy kod działa, ale nie mogę oprzeć się wrażeniu, że powinien istnieć bardziej elegancki sposób na zrobienie tego. Czy ktoś ma lepszy sposób? <div id="eventStream"> <ul> <g:each in="${rzeczy}" var="rzecz"> <g:if test="${rzecz.type.equals( 'Rzecz' )}" > <g:render template="/renderThing" bean="thing" /> </g:if> <g:if test="${thing.type.equals( 'OtherThing')}"> <g:render template="/renderOtherThing" bean="thing" /> </g:if> </g:each> </ul> </div> (Uwaga: istnieje pole „typ” zdefiniowane w 'Rzecz' i ' OtherThing”, który zawiera te literały łańcuchowe. To tylko skrót). EDYCJA: Właśnie zdałem sobie sprawę, że jest inny sposób na zrobienie tego, który zależy od pojęcia „konwencja nad konfiguracją”. Mógłbym po prostu pójść z konwencją, że szablony są zawsze nazywane mniej więcej tak: _renderXXXXTemplate.gsp, gdzie XXX to „rzecz” lub „inna rzecz” lub cokolwiek innego. Następnie renderuję coś w stylu: <g:render template="/render${thing.class.name}Template" bean="thing" /> Czy ktoś chciałby podzielić się swoimi przemyśleniami na temat zalet takiego podejścia?


title: Alternatywy dla korzystania z plików cookie?

text: Jakie są alternatywy dla używania plików cookie/przechowywania po stronie klienta dla witryny opartej na PHP/MySQL na Apache. Scenariusz/Wymagania: * Chcę spróbować użyć kodu antybotowego, aby uniemożliwić dostęp do strony określonym scraperom itp. * Chciałbym uruchomić ten kod przed uruchomieniem reszty strony (przed dostępem do bazy danych itp.). * Nie chcę ciągle uruchamiać tego samego kodu przy każdym ładowaniu strony po pomyślnym przejściu wstępnego sprawdzenia przez użytkownika. * Chciałbym uniknąć korzystania z plików cookie/przechowywania po stronie klienta, jeśli to w ogóle możliwe. Jedyne rozwiązanie, jakie przychodzi mi obecnie do głowy, to zapisywanie plików na serwerze na podstawie adresu IP/UA odwiedzających lub zapisanie ich listy w pojedynczym pliku. Jednak ma to ograniczenie wielu użytkowników za pośrednictwem serwera proxy/tego samego połączenia itp. Czy masz jakieś pomysły/sugestie? A może po prostu przepracowuję problem?


title: Ciągłe wywołania bazy danych czy przechowywanie w obiektach?

text: Tworzę dość prostą aplikację sterowaną bazą danych. Ilekroć tworzę aplikację db, tworzę klasy, które naśladują dane w db. Czy to dobra praktyka? Czy lepiej jest wykonać jedno duże wywołanie bazy danych i wypełnić moje obiekty i pracować z tymi obiektami, czy też powinienem pobierać dane z bazy danych tylko w razie potrzeby?


title: Licencja MIT: Dlaczego nie jest uważana za wirusową?

text: Pierwsza część licencji sugeruje, że możesz z nią robić w zasadzie wszystko, co chcesz (kopiować, modyfikować, sprzedawać itp.). Ale druga część mówi, że te wolności muszą rozprzestrzenić się na wszystkie kopie oprogramowania. Moja interpretacja tego jest taka, że możesz włączyć oprogramowanie do swojego zastrzeżonego projektu, ale ta część musi pozostać otwarta… więc wszelkie modyfikacje oprogramowania muszą zawierać dołączoną licencję, wymuszając, aby moje zmiany były otwarte. Czy to nie jest powód, dla którego ludzie uważają GPL za restrykcyjną/wirusową? Ponieważ wymusza to, aby modyfikacje były open source? Oto kopia licencji: > Niniejszym udziela się nieodpłatnie każdej osobie otrzymującej kopię > tego oprogramowania i powiązanych plików dokumentacji ("Oprogramowanie") na > korzystanie z Oprogramowania bez ograniczeń, w tym bez ograniczeń. ograniczenia > praw do używania, kopiowania, modyfikowania, łączenia, publikowania, rozpowszechniania, udzielania sublicencji i/lub > sprzedawania kopii Oprogramowania oraz zezwalania na to osobom, którym Oprogramowanie jest > dostarczane, z zastrzeżeniem następujących warunków: > > Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu będą dołączone do > wszystkich kopii lub istotnych części Oprogramowania. > > OPROGRAMOWANIE JEST DOSTARCZANE „TAK JAK JEST”, BEZ JAKICHKOLWIEK GWARANCJI, WYRAŹNYCH LUB > DOROZUMIANYCH, W TYM MIĘDZY INNYMI GWARANCJI WARTOŚCI HANDLOWEJ, > PRZYDATNOŚCI DO OKREŚLONEGO CELU I NIENARUSZANIA PRAW. W ŻADNYM WYPADKU AUTORZY LUB WŁAŚCICIELE PRAW AUTORSKICH NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK ROSZCZENIA, SZKODY LUB INNĄ ODPOWIEDZIALNOŚĆ, CZY NA TEMAT UMOWY, CZYNNEGO LUB INNEGO, WYNIKAJĄCEJ > Z OPROGRAMOWANIA LUB Z UŻYTKOWANIEM LUB INNEGO TRANSAKCJE > W OPROGRAMOWANIU.


title: Jaki jest standard łączności projektu jednostki/bazy danych dla bazy danych mySQL?

text: Hostuję rozwiązanie, które służy jako warstwa internetowa na maszynie Ubuntu z systemem Apache i Mono. Obecnie rozwijam projekt na OSX, używając Mono. Rozumiem, że nie ma natywnej obsługi Linq to SQL w Mono, więc korzystałem ze starej szkoły i opracowywałem procedury składowane dla mojej interakcji z bazą danych. Używam ADO.NET do łączności. Rozwój jest niezwykle powolny. Za każdym razem, gdy wprowadzam zmianę w procedurze składowanej, muszę zaktualizować pola w całej mojej architekturze. Stałem się bardzo leniwy, jeśli chodzi o możliwość łatwego usuwania encji w Linq to SQL i aktualizowania moich obiektów o nowe pola. Wydaje się, że programowanie trwa 10 razy dłużej niż natywnie w .NET w systemie Windows. Czy istnieje lepsza architektura, której mógłbym użyć do połączenia z bazą danych? Chociaż metodologia, której się stosuję, jest prosta i działa dobrze, jest to po prostu powolne podejście.


title: jaki jest dobry sposób na pokazanie doświadczenia mysql?

text: Jak zawsze, jeśli jest to zduplikowane pytanie, którego jeszcze nie odkryłem, możesz je zamknąć lub usunąć. Próbuję wejść do branży programistycznej. Skupiłem się głównie na PHP ze względu na jego szerokie zastosowanie, ale mam też pewne doświadczenie w innych językach. Chodzi o to, że znam składnię SQL całkiem dobrze, a jeśli chodzi o PHP, nie mam zbyt wiele problemów z używaniem interfejsu mysqli (jeśli muszę) lub PDO. Jednak jestem trochę zakłopotany tym, co stworzyć jako fragment portfolio, który byłby dobrą wizytówką tego, co mogę zrobić z SQL. Powodem tego jest to, że większość wartych uwagi frameworków zawiera jakąś formę ORM. Większość podstawowych prac związanych z konfiguracją zapytań do bazy danych i tak dalej jest zwykle wykonywana za Ciebie i ukryta przed Tobą, dzięki czemu możesz skupić się na logice domeny. Mam _trochę_ doświadczenia z CakePHP, który używa własnej formy ORM i jestem zainteresowany dalszym rozwojem tego doświadczenia, ponieważ jest to dość popularny (i dlatego prawdopodobnie pojawi się jako wymóg pracy). Symfony jest równie nieprzydatnym AFAIK, ponieważ masz do wyboru Propel lub Doctrine; Chętnie bym się z nimi zapoznała, ale nie widzę na nie dużego popytu, przynajmniej nie w przypadku prac na poziomie podstawowym, na które patrzyłem. Mam jednak świadomość, że CodeIgniter pozwoli Ci nadpisać swoje możliwości ORM/ActiveRecord i pozwoli na pisanie własnych zapytań SQL. Mam stosunkowo prostą aplikację internetową, którą chcę utworzyć jako element portfela. Jeśli używam CakePHP do jego stworzenia, kończę z kawałkiem, który pokazuje moje umiejętności w CakePHP, ale nie moje umiejętności SQL, przynajmniej nie bezpośrednio. Jeśli używam CI, mogę bezpośrednio pochwalić się swoimi umiejętnościami SQL, ale potem zdobywam doświadczenie w frameworku, który nie wydaje się być używany tak często, przynajmniej nie w przemyśle. Prawdziwe pytanie sprowadza się do tego: jeśli byłeś (lub jesteś) odpowiedzialny za zatrudnienie nowego programisty do swojego zespołu, a Twoje wymagania obejmują na przykład MySQL, w jaki sposób wolałbyś, aby obecny programista pokazał swoje doświadczenie w ta umiejętność? Czy zaakceptowałbyś programistę, który miał tylko rozwiązania oparte na ORM, aby pokazać Ci bezpośrednio, ale mógłby, na żądanie, z łatwością wykonać dość złożone zapytanie SQL? Jeśli nie, co poleciłbyś jako sposób na zademonstrowanie umiejętności w SQL? Przypuszczam, że alternatywny tytuł tego pytania mógłby brzmieć: „Czego ankieterzy oczekują od kandydatów na poziomie podstawowym w zakresie SQL?”


title: Silverlight 5 w przeglądarce czy poza nią?

text: Decyduję, czego potrzebuję do mojej nowej aplikacji LOB. Wymienię PRO każdego z nich i jeśli się mylę - popraw mnie, ponieważ tak to widzę. W przeglądarce 1. Użytkownicy mogą nawigować za pomocą adresów URL. Postrzegam to jako DUŻĄ rzecz. Użytkownicy mogą udostępniać linki, takie jak app.com/orders/12345 2. Z podwyższonymi uprawnieniami mogę robić to samo. Użyj COM, systemu plików itp. 3. Mogę otwierać inne okna przeglądarki z innymi funkcjami, jeśli potrzeba wielu okien. Jedyna różnica - nie będę miał takiej kontroli nad tymi oknami jak poza przeglądarką. Poza przeglądarką 1. Wychodzi z przeglądarki. Nie wiesz, dlaczego mnie to obchodzi? 2. Bardziej problematyczna obsługa aktualizacji 3. Tak, są okna, które mogę otworzyć, ale nie modalne. Tak więc, oddzielne okno przeglądarki IE prawie identyczne Czy coś mi brakuje? Zwykle trzymam to w przeglądarce, ale chcę zobaczyć, gdzie się ograniczam.


title: Jeśli w trakcie iteracji ujęto zakres historii, to co zrobić z jej oszacowaniem/rozmiarem?

text: Czasami zmieniamy zakres historyjki użytkownika, aby ją uzupełnić w trakcie iteracji. Na przykład Oryginalna historia (8 punktów): Jako użytkownik chcę zapisać moje dane w formacie PDF. De-Scoped story: Jako użytkownik chcę zapisać moje dane **tekstowe** w formacie PDF. Czy teraz muszę również zmniejszyć rozmiar historii z dezakresem? **EDYTUJ** Co robisz w takich przypadkach i dlaczego?


title: Konwencje Rails a architektura „korporacyjna”

text: (Tytuł prawdopodobnie nie jest tak dobry, jak powinien być, nie mogę wymyślić lepszego) Mam zamiar wrócić do pomysłu na startup, a moją wybraną platformą jest Ruby on Rails. Niedawno zacząłem ponownie czytać książkę "Enterprise Rails", która sugeruje, że **nie** przestrzegasz domyślnych konwencji Rails, ale zamiast tego rozdzielasz swoje warstwy na komponenty "fizyczne" i "logiczne". To jedyna książka, której nie widziałem, gdzie jest wyrażona ta opinia; każda inna książka o Railsach wydaje się po prostu podążać za mantrą „konwencja nad konfiguracją”. Krótko mówiąc, sugestie książki dotyczące podziału aplikacji/folderu na następujące: * app/models/physical (używane w przypadku rzeczywistych plików modeli .rb) * app/models/logical (używane w przypadku interfejsów API usług internetowych, jak sądzę) i zrób to samo z Twoimi kontrolerami i innymi obszarami aplikacji. Książka radzi również, aby w ogóle nie używać migracji baz danych, ale używać surowych skryptów SQL (a później korzystać z widoków i funkcji SQL) w osobnym folderze, który nie jest zgodny z normą Railsów. Moje pytanie brzmi, czy powinienem się tym martwić, jeśli dopiero zaczynam rozwijać swoją aplikację. Oczywiście książka radzi, abym uniknąć _możliwych_ problemów w przyszłości, a programista .NET we mnie chce się zgodzić, ale programista Rails we mnie (wciąż niemowlę) mówi mi, abym po prostu podążał „ścieżką Rails” w 100% ponieważ wciąż uczę się frameworka i języka Ruby. Zastanawiam się, ile odnoszących sukcesy aplikacji Railsowych po prostu podąża za normą ze wszystkimi modelami w aplikacji/modelach, wszystkimi kontrolerami w aplikacji/kontrolerach bez dalszej segregacji, a ile z nich tworzy architekturę typu „enterprise-y”?


title: Naprawianie błędów na morzu

text: Gdyby potencjalny pracodawca powiedział Ci, że „zlecił naprawianie błędów na zewnątrz, ponieważ programiści nie znoszą ich naprawiania”, co byś pomyślał? Jakie mogą być twoje obawy?


title: Najbezpieczniejsza metoda asynchronicznej wymiany losowych łupów w ściśle offline ARPG

text: Interesuje mnie konceptualny (problem agnostyczny języka programowania) proces wysyłania obiektu gry do innego gracza w zamian za inny obiekt gry bez bezpośredniej obecności obu stron w sieci. Należy to zrobić, aby teoretycznie w grze wykorzystanie błędów systemu handlowego nie było możliwe do skopiowania przedmiotów lub kradzieży przedmiotów od innego gracza. W tym przypadku nie rozważam oszustów (ściśle definiuję oszustwo jako manipulowanie pamięcią RAM/sejwami w grze, a NIE wykorzystywanie oprogramowania/nieodłącznych błędów/wad) tylko zdolność użytkowników do kopiowania lub kradzieży przedmiotów bezpośrednio z samej gry. Możliwy pomysł na rozwiązanie tego problemu: 1. Gracz 1 (P1) i (P2) spotykają się poza grą, aby zaaranżować wymianę łupów z gry i dojść do porozumienia między sobą. 2. Obaj gracze wchodzą do gry, aby dokonać wymiany, oddając swój przedmiot „do gry” do zatrzymania i pozostając niedostępnym przez cały czas trwania wymiany. W zamian otrzymują proceduralnie wygenerowany alfanumeryczny kod szyfrujący (taki jak pokemon Mystery dungeon lub podobny) specyficzny dla siebie oraz nazwy i numeru identyfikacyjnego innego gracza (podobnie jak w popularnych grach pokemonowych). 3. Obaj gracze dzielą się swoimi kodami i wprowadź przeciwny kod do swojej gry. 4. pojawi się ekran potwierdzenia dla obu graczy pokazujących ofertę drugiego gracza. jeśli gracz zaakceptuje ofertę, otrzymuje inny kod, który przekazuje drugiej osobie. 5. Obaj gracze wprowadzają kod potwierdzający drugiego do swojej gry i obaj gracze otrzymują swój przedmiot w grze. 6. nie jestem pewien, ale może dodatkowo wymagać od obu graczy wprowadzenia kodu z podziękowaniami, aby naprawdę potwierdzić, że obaj gracze otrzymali swoje przedmioty, ale myślę, że jest to objęte kodem potwierdzającym, ponieważ jeśli P1 potwierdza i otrzymuje potwierdzenie P2, oznacza to również potwierdzenie P2. I podobnie, jeśli P2 potwierdził i otrzymał potwierdzenie P1, to P1 potwierdził. Ale jak o tym myślę, jeśli P1 akceptuje, a P2 akceptuje, a P1 podaje kod, ale P2 nie, to P2 jest w stanie uzyskać pożądany przedmiot kosztem swojego przedmiotu, a P2 jest teraz oszustem dla P1, ponieważ P1 był odmówiono mu nowego przedmiotu (zniknął) Spowodowałoby to, że gracze stopniowo wymienialiby się przedmiotami o mniejszej wartości, ponieważ nie mogliby stracić tych wspaniałych łupów, których nie mogliby użyć, ale nadal byłyby cenne; marnowanie czasu i zniechęcanie do handlu. Również kod z podziękowaniami wydłużyłby proces i nie spowodowałby żadnych dodatkowych zabezpieczeń. Właściwie uważam, że jest to prawdziwy problem umów, handlu towarami i zaufania, który wymaga handlu synchronicznego. Myślę, że nie da się tego rozwiązać w grze, tak samo jak w prawdziwym życiu. Popraw mnie, jeśli się mylę.


title: Historie użytkowników — jak należy je zdefiniować w przypadku złożonych zmian obejmujących wiele aplikacji

text: To jedna z definicji, o które pytam dla historyjek użytkownika - _Kiedy przychodzi czas na tworzenie historyjek użytkownika, jeden z developerów (lub właściciel produktu w Scrumie) spotyka się z przedstawicielem klienta. Klient jest odpowiedzialny za sformułowanie historyjek użytkownika. Deweloper może użyć serii pytań, aby zachęcić klienta do działania, na przykład zapytać, czy pożądana jest jakaś konkretna funkcjonalność, ale musi uważać, aby nie zdominować procesu tworzenia pomysłu._ W dużej organizacji może istnieć wiele linii biznesowych. W przypadku określonej linii biznesowej może istnieć wiele aplikacji (ponad 10), które mogą być zaangażowane w spełnienie wymagania biznesowego. Wymaganie dla każdego z tych zespołów aplikacji może być dostarczone przez analityka biznesowego, a rozwiązanie wysokiego poziomu może zostać sformułowane przez projektanta rozwiązania. Czy w scenariuszach takich jak te, jedna historyjka użytkownika byłaby zdefiniowana dla konkretnego żądania zmiany, które ma wpływ na wiele aplikacji, czy też dla każdej aplikacji byłyby tworzone różne historyjki użytkownika? Jeśli jest to pojedyncza historyjka użytkownika, to czy dla każdej aplikacji, której to dotyczy, zdefiniowany byłby oddzielny SRS, czy musiałby być powiązany ze zdefiniowaną historyjką użytkownika?


title: Czy istnieje praca w stylu „Programisty QA”?

text: Zasadniczo programista, który pojawia się w fazie testowania projektu i gdy tester znajdzie błąd, śledzi przyczynę. Lubię ten proces śledczy i generalnie jestem w stanie wyśledzić przyczynę niejasnych błędów nawet w kodzie, nad którym nigdy nie pracowałem. Zrobiłem coś takiego wewnętrznie w firmach, w których pracowałem, ale zastanawiam się, czy jest to coś, co robią ludzie na zasadzie niezależnego wykonawcy?


title: Jak zrobić TDD dla czegoś z wieloma permutacjami?

text: Podczas tworzenia systemu takiego jak sztuczna inteligencja, który może bardzo szybko obrać wiele różnych ścieżek, lub tak naprawdę dowolnego algorytmu, który ma kilka różnych danych wejściowych, możliwy zestaw wyników może zawierać dużą liczbę permutacji. Jakie podejście należy przyjąć, aby użyć TDD podczas tworzenia systemu, który generuje wiele, wiele różnych kombinacji wyników?


title: Czy mógłbyś opisać „GNU General Public License (GPLv2)” w terminach „dla opornych”?

text: Chcę tylko upewnić się, że używam odpowiedniej licencji dla mojego projektu opakowania API open source dla niektórych sieci społecznościowych, a także upewnić się, że to rozumiem. Czy mógłbyś opisać tylko podstawy tej licencji? Co mogę, a czego nie mogę zrobić itp.? Czy te rzeczy są zgodne z licencją GPLv2: * Open Source'ness * Możliwość wykorzystania go we własnym projekcie * Ale także podawaj za to informacje na swojej stronie internetowej i przechowuj informacje o prawach autorskich na górze plików źródłowych * Miej nad tym kontrolę tak, jak gdyby nie podoba ci się, jak ktoś używa twojego kodu, możesz to zgłosić gdzieś po skontaktowaniu się z deweloperem. * Chciałbym również tworzyć wersje komercyjne i dodawać reklamy do mojego projektu - więc zostałyby odnotowane wyjątki w licencji. * * * Dziękuję wszystkim za odpowiedzi i komentarze. Wybrałem krótszą i łatwiejszą do zrozumienia Nową Licencję BSD (BSD). W każdym razie dzięki.


title: Czy łamanie łańcucha dekoracji przez dekoratora jest złą praktyką?

text: Obecnie używam dekoratorów, aby zastosować różne modyfikacje do szablonu przed jego renderowaniem. Nie jestem jednak pewien co do mojego dekoratora pamięci podręcznej, ponieważ obecnie jest w stanie przerwać łańcuch dekoratorów i zwrócić obiekt w pamięci podręcznej, w przeciwieństwie do oryginalnie udekorowanego obiektu. class Cache : Decorator { public String Render() { if(templateCache.IsCached('jakiś_identyfikator_szablonu')) { return templateCache.Get('jakiś_identyfikator_szablonu'); } String renderedTemplate = Szablon.Render(); templateCache.Cache(renderedTemplate); return renderedTemplate; } } Czy to zła praktyka? Czy powinienem _zawsze_ zwracać oryginalnie udekorowany przedmiot, czy mogę przerwać przepływ w ten sposób i zwrócić inny przedmiot?


title: Implementacja RSA w aplikacji do obsługi wiadomości na Androida

text: Wdrażam szyfrowanie RSA w aplikacji na Androida, aby móc bezpiecznie wysyłać wiadomości SMS, każdy telefon będzie miał swój własny klucz publiczny i prywatny wygenerowany przez aplikację. Ale utknąłem w podejmowaniu decyzji o najlepszym sposobie przechowywania kluczy, mam następujące opcje: 1. Utwórz magazyn kluczy i przechowuj klucz publiczny i prywatny w magazynie kluczy. 2. Zapisz klucz publiczny i prywatny w oddzielnych plikach. 3. Użyj wspólnych preferencji do przechowywania kluczy. Myślałem też o zaszyfrowaniu klucza prywatnego za pomocą blowfish, jeśli jest on przechowywany tylko w pliku. Czy ktoś może mi pomóc wyjaśnić, która opcja jest najbezpieczniejsza?


title: Czy małe demo to dobry pomysł na rozmowę kwalifikacyjną?

text: Niestety większość mojej pracy ma charakter wewnętrzny – bawiłem się pomysłem małej demonstracji internetowej, aby dać firmie lepszy wgląd. Co myślisz?


title: Jak powinienem przetestować mój kod TESTOWY?

text: > Jedną z niewielu rzeczy, co do których zgadza się większość programistów, jest to, że > nie powinieneś polegać na kodzie, aby działał poprawnie, chyba że go przetestujesz. Jeśli go > nie przetestujesz, może mieć ukryte błędy, które tylko spowodują, że będziesz więcej pracować > w przyszłości. Rozumiem, jak testować mój normalny kod, ale **jak mam przetestować mój kod testowy, aby upewnić się, że może skutecznie znajdować i zgłaszać błędy, gdy są obecne?** Osobiście byłem na tyle głupi, aby napisać błędne przypadki testowe, które zdałyby egzamin kiedy nie powinni, tym samym pokonując przede wszystkim cel moich testów pisemnych. Na szczęście znalazłem i naprawiłem błędy na czas, ale zgodnie z mantrą testowania wydaje się, że żaden zestaw testów nie byłby kompletny bez własnego zestawu testów, aby upewnić się, że działa. Wydaje mi się, że najlepszym sposobem, aby to zrobić, byłoby upewnienie się, że test nie powiedzie się pod kątem błędnego kodu.* Jeśli spędzę 2 minuty na przemian dodając błędy do kodu i upewniając się, że się nie powiedzie, powinienem mieć akceptowalny stopień pewności, że testy „działają”. To prowadzi mnie do mojego drugiego pytania: **Jakie są dobre sposoby na wprowadzanie błędów, aby upewnić się, że zostaną wyłapane przez przypadki testowe?** Czy powinienem po prostu losowo skomentować wyrażenia, upewnić się, że niewłaściwa gałąź `if-else' ` jest uruchamiany przez zanegowanie swojego warunku i zmianę kolejności wykonywania kodu z efektami ubocznymi itp., dopóki nie będę zadowolony, że moje testy wykryją _najczęściej_ typowe błędy? W jaki sposób profesjonalni programiści sprawdzają, czy ich testy faktycznie robią to, co mają robić? Czy po prostu zakładają, że testy działają, czy też poświęcają czas na ich przetestowanie? Jeśli tak, jak testują testy? Nie sugeruję, że ludzie powinni spędzać tyle czasu na testowaniu swoich testów, a następnie testowaniu ich pod kątem testów, że nigdy nie napisali prawdziwego kodu, ale zrobiłem wystarczająco głupie rzeczy, z których czuję, że mógłbym trochę skorzystać „metatestów” i była ciekawa, jak najlepiej się do tego zabrać. :D * Mógłbym sprawdzić, czy test wypadł pomyślnie podczas testowania kodu 'bezbłędnego', ale użycie kodu jako specyfikacji testu wydaje się dość odwrotne...


title: Czy związek między językiem programowania C# a muzyką jest oczywisty dla native speakera języka angielskiego?

text: Francuski jest moim językiem ojczystym i właśnie zdałem sobie sprawę, że „#” w „C#” to ten sam znak, co w przypadku znaku muzycznego _diese_, który podnosi nutę o pół tonu. Poza tym, kiedy uczyłem się muzyki na podstawówce po francusku, nie zdawałem sobie sprawy, że C jest również nutą muzyczną, ponieważ po francusku używamy _do_. Po odrobinie poszukiwań zauważyłem, że ten link został stworzony celowo. Oto moje pytanie: czy ten link jest oczywisty dla native speakera języka angielskiego? Czy ten link automatycznie aktywuje jakiś dzwonek jako akronim BASIC i podstawową wiedzę, czy akronim SOAP i środek czyszczący.


title: Czy to dobry test sprawdzający umiejętności programistów? Jakieś inne sugestie?

text: Jeśli chodzi o zatrudnianie nowych inżynierów w naszej firmie, mocno wierzymy w testowanie, czy ktoś może rzeczywiście napisać sensowny, użyteczny i rozsądnej jakości kod. Od jakiegoś czasu próbuję wymyślić na to test. Cechy, których szukam w tym teście to: 1. Nie powinno to zająć mniej niż 3-4 godziny pracy, co jest czasem przeznaczonym na test. 2. Powinien być niezależny od języka i technologii. 3. To nie powinno być podchwytliwe pytanie, jeśli potrafisz dobrze kodować w wybranym przez siebie języku, powinieneś być w stanie zrobić to łatwo przy odrobinie googlowania. 4. Dokładny kod odpowiedzi nie powinien być dostępny w samym google. 5. Powinien stale mieć ten sam poziom trudności, abyśmy zawsze porównywali jabłka z jabłkami. Jednocześnie jeden kandydat wychodzący z drzwi po przystąpieniu do testu nie powinien być w stanie udzielić żadnej wskazówki ani odpowiedzi następnemu kandydatowi. Biorąc pod uwagę wszystkie te kwestie, jedynym testem, który rozważamy, jest posiadanie bardzo dużej liczby adresów URL wskazujących na wiadomości w sieci, a pomysł polega na przyznaniu każdemu kandydatowi losowego adresu URL z tego dużego zestawu i poproszeniu go o zeskrobanie historii wiadomości , biorąc pod uwagę wybrany przez nią język, i zapisz go w uporządkowany sposób (json, xml), tak aby wszystkie wymagane pola zostały poprawnie wyodrębnione. Na przykład tytuł opowiadania, data, autor, tekst itp. Kandydaci mogą swobodnie korzystać z Internetu i korzystać z wszelkiej pomocy, jaką mieliby w innym przypadku, gdy próbowali rozwiązać prawdziwy problem programistyczny w środowisku pracy. Co społeczność myśli o tym sposobie testowania? Jak myślisz, jakie uprzedzenia istnieją w tym teście? Chciałbym też usłyszeć innych ludzi testujących programistów podobnymi metodami testowania. Chciałby również usłyszeć sugestie dotyczące podobnych/lepszych pytań testowych. EDIT: Zdaję sobie sprawę, że pytanie, które wymyśliliśmy, nie jest idealne, w rzeczywistości dalekie od niego. Tak więc, chociaż twoja krytyka jest mile widziana, powinieneś również zasugerować kilka pytań, które są neutralne językowo, neutralne dla domeny, wymagają nietrywialnego kodowania i nie mają już odpowiedzi dostępnych w Internecie. EDYCJA: Najwyraźniej ludzie uważają, że programiści są obraźliwi, aby dzwonić do swoich znajomych, jeśli utkną z problemem, więc usuwam to z procesu. (Ale, jak na ironię, pytanie kogoś o stackoverflow jest w porządku)


title: BitBucket współpracuje z wieloma programistami nad tym samym projektem

text: Jestem nowy w BitBucket. Mam swoje repozytorium. Pracują nad tym dwie osoby, ja, administrator i inny programista z dostępem tylko do odczytu **. Aby więc mógł wprowadzić zmiany, rozwidlił repozytorium i wprowadził zmiany, przesłał do swojego repozytorium i utworzył pull request. Teraz połączyłem to żądanie ściągnięcia z moim repozytorium. A potem wprowadziłem kilka drobnych zmian, a także zatwierdziłem je i wrzuciłem do mojego repozytorium. Jaki byłby następny krok, aby kontynuować pracę? Czy musi to rozwidlać za każdym razem, gdy wprowadzam zmiany w moim repozytorium? Czy jest jakiś sposób na zsynchronizowanie swojego z moim repozytorium bez tworzenia za każdym razem nowego rozwidlenia?


title: Czy ponowne użycie kodu w projektach innych klientów jest legalne?

text: Pracuję jako niezależny programista aplikacji mobilnych. Klient prosi mnie o stworzenie aplikacji mobilnej. Tak więc w tej chwili liczę czas i wysiłek, aby napisać ofertę na ten projekt. Sama aplikacja będzie używana tylko przez pewien czas, ponieważ jest powiązana z pewnym wydarzeniem, po którym będzie bezużyteczna. Jednak podstawową funkcjonalność aplikacji będzie można ponownie wykorzystać dla innych klientów, którzy chcą mieć podobną aplikację na swoje wydarzenie. W tej chwili zastanawiam się, czy można stworzyć aplikację dla klienta, pozwolić mu zapłacić za rozwój i ponownie wykorzystać część kodu źródłowego do aplikacji innego klienta? Więc jaki byłby dla mnie najlepszy sposób na poradzenie sobie z tym scenariuszem? * Do kogo należy kod źródłowy aplikacji? * Czy muszę przekazać kod źródłowy klientowi, gdy zapłacił za rozwój? * Jeśli muszę, czy nadal mogę zachować kopię i wykorzystać ją później? * Czy muszę prosić klienta o ponowne wykorzystanie kodu? * Czy muszę tutaj pracować z jakimś modelem licencjonowania. I pozwolić pierwszemu klientowi zapłacić tylko określoną część rozwoju, abym mógł ponownie wykorzystać kod bez żadnych obaw? Mam nadzieję, że wyjaśniłem swoją sytuację. Nie mogę się doczekać odpowiedzi.


title: Jaki jest najbardziej produktywny sposób radzenia sobie z awariami związanymi z rozwojem?

text: Wszyscy tam byliśmy: * Twój projekt nie powiódł się lub został anulowany. * Kod, nad którym pracowałeś przez kilka dni, został odrzucony przez Twój zespół. * Wzorzec projektowy, który wprowadziłeś do zespołu, stworzył chaos. * Wszyscy ignorują twoje pomysły. Moje pytanie brzmi, jaki jest najbardziej produktywny sposób, w jaki programista radzi sobie z takimi awariami związanymi z rozwojem, jak te?