title: Jak określić prędkość, kiedy poprzedni sprint był w połowie przypadkami User Stories i w połowie defektami?

text: Poniższy scenariusz często zdarza się z moim zespołem w biurze. Powiedzmy, że zdecydowaliśmy się zaplanować nasz Sprint w ten sposób: * 50% nowych funkcji * 50% naprawiania błędów (mają wysoki priorytet ORAZ _nieocenione_, ponieważ poprawki są łatwe, a trudną i czasochłonną częścią jest śledztwo) Sprint idzie dobrze i kończymy wszystkie funkcje, powiedzmy X punktów historii i sporo nieoszacowanych błędów. Nasuwają się dwa pytania: 1. Jaka jest nasza prędkość sprintu? Czy to X? 2. Zakładając, że jest to X; jak zaplanować kolejny sprint z wykorzystaniem „wczorajszej pogody” (X punktów historii), jeśli teraz chcemy wykonać sprint ze 100% nowymi funkcjami?


title: Oddzielna przestrzeń nazw tylko dla wyjątków?

text: Robiłem przegląd kodu i natknąłem się na coś dziwnego, czego nigdy wcześniej nie widziałem. Deweloper zdecydował się stworzyć pod-przestrzeń nazw tylko po to, aby zawierała wszystkie wyjątki w asemblerze. Myślałem, że przeczytałem, że to wyraźnie nie było dobre wykorzystanie przestrzeni nazw i że wyjątki powinny być przechowywane w „najniższej” przestrzeni nazw, z której są wyrzucane, ale nie znalazłem niczego w MSDN (ani nigdzie indziej) . Jednocześnie wydaje się dziwne, że nie spotkałem się z tym wcześniej w samym frameworku ani w bibliotekach stron trzecich, z których korzystałem. Czy istnieją jakieś wytyczne, które odpychają od przechowywania wszystkich wyjątków w podprzestrzeni nazw .Exceptions?


title: Jakiego rodzaju procesów lub analizy statycznej użyjesz do wyłapania niewłaściwych błędów bufora, takich jak ten, który spowodował krwawienie?

text: Jaki rodzaj procesu lub analizy statycznej wyłapałby błąd powodujący krwawienie z serca, inny niż przeglądy kodu ludzkiego, o których już wiemy, że nie powiodły się. Zatwierdzenie naprawy jest tutaj.


title: Jak współtworzyć jQuery?

text: Jestem zdezorientowany co do natury projektu jQuery. Może być licencjonowany na licencji GPL lub MIT, zgodnie z komentarzami w projekcie. Jednak witryna jQuery zawiera listę członków zespołu, jakby był to produkt komercyjny. Napisałem trochę kodu, aby usprawnić jQuery, aby obejść paskudny błąd w Internet Explorerze i chciałbym wiedzieć, jak najlepiej zgłosić mój pomysł do projektu.


title: Jak radzić sobie z filozofią ponownego wykorzystania kodu?

text: Ciągle łapię się na myśleniu o ponownym wykorzystaniu kodu podczas rozpoczynania nowego projektu. W jakim stopniu powinienem umożliwić ponowne użycie mojego kodu? Czy powinienem ograniczyć go do zakresu aplikacji, czy powinienem ponownie wykorzystać go poza projektem? Czasami wydaje mi się, że ponowne wykorzystanie kodu może przeszkadzać w prostym projekcie. Podziel się własnym rozumieniem i podejściem do ponownego wykorzystania kodu.


title: Jenkins bez testów automatycznych

text: Wiem, że Jenkins koncentruje się na ciągłym budowaniu/testowaniu, monitorowaniu zadań wsadowych dotyczących projektu. Mamy za sobą projekt, który taki warunek : 1) Posiada zespół programistów. 2) Ma SVN do zarządzania kodem źródłowym 3) Niektóre zadania cron dla niektórych operacji. 4) Kompilacja i budowa nie zajmuje dużo czasu, nie ma bardzo skomplikowanych zależności. 5) Nie ma żadnych automatycznych klas testowych/junitowych i nie będzie miał. Chciałbym zapytać doświadczonych użytkowników o Jenkins, czy nadal warto używać Jenkinsa do centralnego budowania i zarządzania projektem?


title: Zasada jednostki pracy powoduje problem w aplikacji MVC3

text: Realizuję stronę internetową z wykorzystaniem MVC3, Entity Framework 4.1 oraz wzorca Repositoty, Unit of work. Ale podczas wdrażania tego mam duży problem. Opracowałem statyczną klasę ObjectContext. Ta klasa jest używana we wszystkich repozytoriach, więc przestrzegany jest wzorzec jednostki pracy. posiadam m.in. Repozytoria ICustomer, IProduct. Używam konkretnie tylko jednego repozytorium w kontrolerze, który również jest wstrzykiwany za pomocą NInject. CustomerController(ICustomer customer) { } ProductController(IProduct product) { } Ponieważ klasa kontekstu obiektu jest statyczna, a IProduct, ICustomer posiada sparametryzowany konstruktor akceptujący klasę objectContext, więc te dwie będą współdzielić tę samą instancję ObjectContext. Gdy wykonanie jest jednowątkowe, wszystko idzie dobrze, ale w wielowątkowości otrzymuję nieobsługiwany wyjątek, ponieważ jedno repozytorium zamyka połączenie, które było używane przez inne. Myślę, że jeśli uczynię klasę ObjectContext niestatyczną, to rozwiąże to problem (jeszcze nie przetestowano), ale wtedy jednostka pracy nie będzie obserwowana. Czy możesz zaproponować rozwiązanie tego problemu?


title: Wydajność jednego interfejsu API w porównaniu z wieloma interfejsami API

text: Rozmawiałem z kolegą i chociaż moja opinia ma dla mnie sens, nie byłam w stanie tego poprzeć. Jestem w trakcie tworzenia API, które będzie uruchamiane setki tysięcy razy dziennie. Jest to dość proste i po prostu robi kilka wstawek do relacyjnej bazy danych. Zasadniczo muszę stworzyć 3 funkcje. Pytanie brzmi, co miałoby lepszą wydajność, tworząc jedno API z różnymi kontrolerami (za pomocą .NET Web API lub NodeJS jakoś tak) lub 3 różne API. Myślę, że na przykład z .NET Web API, bez względu na to, czy jest 1, czy 3, wszystkie są hostowane i korzystają z tych samych zasobów. Uważał, że posiadanie 3 API będzie 3 razy szybsze, ponieważ będzie miało 3 razy więcej zasobów. Po prostu nie miałem dowodu, żeby to obalić.


title: Zarządzanie JS i CSS dla statycznej aplikacji internetowej HTML

text: Pracuję nad niewielką aplikacją sieci Web, która używa trochę statycznego kodu HTML i opiera się na JavaScript, aby załadować dane aplikacji jako JSON i dynamicznie tworzyć z tego elementy strony sieci Web. **Pierwsze pytanie** : Czy to z gruntu zły pomysł? Nie wiem, ile witryn i aplikacji internetowych całkowicie rezygnuje z generowania kodu HTML po stronie serwera. (Istnieją oczywiste wady aplikacji internetowych obsługujących tylko JS w obszarach wdzięcznej degradacji / progresywnego ulepszania i bycia przyjaznym dla wyszukiwarek, ale nie wierzę, że jest to problem w przypadku tej konkretnej aplikacji.) **Drugie pytanie** : Jaki jest najlepszy sposób zarządzania statycznym kodem HTML, JS i CSS? W przypadku mojej „kompilacji programistycznej” chciałbym, aby kod strony trzeciej nie został zminimalizowany, wiele plików JS i CSS dla łatwiejszej organizacji itp. W przypadku „kompilacji wydania” wszystko powinno zostać zminifikowane, połączone razem itp. Gdybym był robiąc generowanie kodu HTML po stronie serwera, byłoby łatwo mieć mój framework sieciowy generować inny kod HTML, który zawierał wiele gadatliwych i połączonych, zminimalizowanych kodów. Ale biorąc pod uwagę, że robię tylko statyczny HTML, jaki jest najlepszy sposób na zarządzanie tym? (Zdaję sobie sprawę, że mógłbym coś zhakować razem z ERB lub Perl, ale zastanawiam się, czy są jakieś standardowe rozwiązania.) **W szczególności** , ponieważ nie robię żadnego generowania HTML po stronie serwera, czy jest to łatwe , półstandardowy sposób konfigurowania mojego statycznego kodu HTML tak, aby zawierał kod taki jak <script src="js/vendors/jquery.js"></script> <script src="js/class_a.js"></script > <script src="js/class_b.js"></script> <script src="js/main.js"></script> w czasie opracowywania i <script src="http://ajax.googleapis. com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="js/entire_app.min.js"></script> do wydania?


title: Potencjalnie możliwy do wysłania przyrost produktu — co, jeśli użytkownicy nie lubią najnowszego przyrostu?

text: W naszej firmie przeprowadzamy test użyteczności na koniec każdego Sprintu. Wiele razy odkrywamy, że użytkownikom nie podoba się zaimplementowana funkcja, więc albo całkowicie ją zmieniamy, albo usuwamy w następnym Sprincie. Jeśli jednak zaczniemy tworzyć produkt potencjalnie nadający się do wysyłki, naprawiając w ten sposób wszystkie błędy, przeprowadzając wiele testów, przygotowując dokumentację dla FDA i dla użytkowników, naprawiając drobne problemy z interfejsem użytkownika - cała ta praca pójdzie na marne, jeśli użytkownikom nie spodoba się ta funkcja. Czy nie lepiej NIE robić tych wszystkich dodatkowych potencjalnie możliwych do wysłania rzeczy, dopóki nie upewnimy się, że użytkownicy rzeczywiście lubią tę funkcję?


title: Jaki przepływ pracy uważasz za wydajny, gdy jednocześnie rozwijasz wiele współzależnych oddziałów GIT?

text: Zacznę od stwierdzenia, że moja wiedza na temat GIT jest dość płytka, więc zgaduję, że może czegoś mi brakuje. **USTAWIENIA:** Jako przykład mamy projekt, który jest rozwijany jako zbiór wtyczek/modułów. Niektóre moduły, takie jak zarządzanie kontaktami, zależą od innych, takich jak walidacja. Każdy moduł ma swoją własną gałąź. **BIEŻĄCY PRZEBIEG PRACY:** Nasz moduł walidacji jest rozwijany równolegle z innymi naszymi modułami, tylko w osobnym strumieniu. Robiąc to, stwierdzam, że muszę zrobić ** dużo ** sprawdzania tam iz powrotem (a także dużo przechowywania (i łączenia, ale z tym nie mam nic przeciwko)). Na przykład, załóżmy, że rozwijam module_x, który potrzebuje nowej reguły walidacji (która będzie miała zastosowanie również w innych modułach) ... Następnie: 1. przechowuję swoją pracę 2. pobieram gałąź walidacji 3. piszę regułę 4. zatwierdź 5. wyewidencjonuj gałąź module_x 6. wyjmij schowek 7. połącz gałąź walidacji z modułem_x. Teraz, jeśli wymyślę ulepszenie czegoś w gałęzi walidacji (lub po prostu muszę naprawić błąd), muszę przejść przez to wszystko od nowa. Pomiędzy nowymi programami, refaktoryzacjami/ulepszeniami i naprawianiem błędów, wydaje mi się, że spędzam zbyt dużo czasu na przełączaniu się między strumieniami rozwoju i nie mogę się powstrzymać od myślenia, że jest lepszy sposób. **NALEŻY i NIE:** Czy _naprawdę_ to się robi, czy też zupełnie brakuje mi szerszego obrazu? :) Co Ci odpowiada?


title: Dlaczego java nie używa sortowania opartego na podstawie na prymitywach?

text: `java.util.Arrays.sort(/* int[], char[], short[], byte[], boolean[] */)` jest zaimplementowane jako dostrojone szybkie sortowanie, a nie sortowanie oparte na podstawie. Jakiś czas temu przeprowadziłem porównanie prędkości i przy czymś takim jak n>10000 sortowanie radix było zawsze szybsze. Dlaczego?


title: Czy jako programiści naszym zadaniem jest zgłaszanie problemów, jeśli nikogo to nie obchodzi?

text: **edytuj:** powinienem zaznaczyć; Osobiście uważałem, że powinienem być proaktywny. Wiem, że czasami muszę ugryźć się w język i chciałem uzyskać wkład społeczności (był to jeden z tych czasów). Nie mogłem znaleźć bardziej odpowiedniego miejsca, aby zadać to pytanie w rodzinie witryn SO. Oto scenariusz -- * mała organizacja < 70 pracowników * brak działu qa * strona internetowa oglądana codziennie przez tysiące. * Jestem jedynym twórcą strony internetowej * Nigdy nie miałem ani jednej skargi, że strona jest uszkodzona w IE6 * Odkryłem, że nasza strona od lat nie działa w IE6. Osoba, którą zastąpiłem, która ją stworzyła, musiała ją "testować" tylko na IE7. Odpaliłem Virtual PC i IE6, a na naszej stronie panuje kompletny bałagan. Nie możesz wybrać niektórych pozycji menu, które są tak zniekształcone. Wygląda okropnie. Więc znowu, czy naszym zadaniem jest proaktywne wyszukiwanie błędów, czy po prostu naprawiamy to, czego żąda klient... Osobiście chcę wykorzystać tę okazję w mojej organizacji, aby porzucić wszelkie oczekiwania dotyczące obsługi IE6 lub kompatybilności.


title: Dlaczego systemy operacyjne robią rzeczy niskiego poziomu w C i C++? Dlaczego nie tylko C++?

text: Na stronie Wikipedii dla systemu Windows stwierdza się, że system Windows jest napisany w asemblerze dla bootloadera i przełącznika zadań oraz C _i_ C++ dla procedur jądra. IIRC, możesz wywoływać funkcje C++ z zewnętrznego bloku "C". Mogę używać C do funkcji jądra, aby mogły z nich korzystać aplikacje w czystym C (takie jak `printf` i tym podobne), ale jeśli można je po prostu opakować w blok `extern "C"`, to dlaczego kod w C?


title: Czy dowody poprawności kodu kiedykolwiek wejdą do głównego nurtu?

text: Wszystkie programy, z wyjątkiem najbardziej trywialnych, są wypełnione błędami, więc wszystko, co obiecuje je usunąć, jest niezwykle kuszące. W tej chwili dowody poprawności są bardzo ezoteryczne, głównie z powodu trudności w nauce i dodatkowego wysiłku, jaki trzeba włożyć, aby udowodnić poprawność programu. Czy myślisz, że sprawdzanie kodu kiedykolwiek zacznie działać?


title: Obsługa przeglądarki dla wewnętrznych narzędzi korporacyjnych

text: Jesteśmy na skraju nawrócenia. Przez lata nasza firma wspierała tylko IE dla swoich wewnętrznych (intranetowych) domowych narzędzi. Ponieważ kilku naszych użytkowników nadal korzysta z XP, co oznacza, że IE osiąga tylko 8... strona z dużą ilością JS / jQuery nawet się nie ładuje! Jesteśmy w trakcie konwersji, aby zamiast tego korzystać z Chrome, aby wykorzystać jego wydajność javascript. Ale teraz zasugerowano, że obsługujemy wszystkie popularne przeglądarki... wewnętrznie dla tych narzędzi. Oznacza to więcej czasu na rozwój, aby zmniejszyć niektóre z tych nowych aplikacji, więcej czasu na testowanie we wszystkich przeglądarkach, a my już mamy za mało personelu. Czy są jakieś dobre strony informacyjne/posty, które już podnoszą ten argument?


title: Co z niechęcią do dokumentacji w branży?

text: Wydaje się, że istnieje niechęć do pisania nawet najbardziej podstawowej dokumentacji. Nasze pliki README projektu są stosunkowo puste. W dokumentacji nie ma nawet zaktualizowanych list zależności. Czy jest coś, o czym nie wiem w branży, co sprawia, że programiści nie lubią pisać dokumentacji? W razie potrzeby mogę pisać akapity dokumentów, więc dlaczego inni tak bardzo się temu nie podobają? Co ważniejsze, jak mam ich przekonać, że pisanie dokumentów pozwoli nam zaoszczędzić czas i frustrację w przyszłości?


title: Agregacja danych z plików CSV java

text: Mam pliki csv `k` (na przykład 5 plików csv), każdy plik ma pola `m`, które tworzą klucz i wartości `n`. Muszę utworzyć pojedynczy plik csv z zagregowanymi danymi. Szukam najskuteczniejszego rozwiązania tego problemu, głównie prędkości. Przy okazji nie sądzę, że będziemy mieć problemy z pamięcią. Chciałbym również wiedzieć, czy haszowanie jest naprawdę dobrym rozwiązaniem, ponieważ będziemy musieli użyć 64-bitowego rozwiązania haszującego, aby zmniejszyć szansę na kolizję do mniej niż 1% (mamy około 30000000 wierszy na agregację). Na przykład plik 1: f1,f2,f3,v1,v2,v3,v4 a1,b1,c1,50,60,70,80 a3,b2,c4,60,60,80,90 plik 2: f1,f2 ,f3,v1,v2,v3,v4 a1,b1,c1,30,50,90,40 a3,b2,c4,30,70,50,90 wynik: f1,f2,f3,v1,v2,v3, v4 a1,b1,c1,80,110,160,120 a3,b2,c4,90,130,130,180 algorytm, o którym myśleliśmy do tej pory: 1. haszowanie (przy użyciu concurentHashTable) 2. sortowanie przez scalanie plików 3. DB: przy użyciu mysql, hadoop lub redis. Rozwiązanie musi być w stanie obsłużyć ogromne ilości danych (każdy plik więcej niż dwa miliony wierszy) lepszy przykład: plik 1 kraj,miasto,peopleNum anglia,londyn,100000 anglia,coventry,500000 plik 2: kraj,miasto,ludzieNum anglia,londyn,500000 anglia,coventry,500000 anglia,manchester,500000 połączony plik: kraj,miasto,ludzieNum anglia,londyn,1500000 anglia,coventry,100000 anglia,manchester,500000 Kluczem jest: „kraj,miasto”. To tylko przykład, mój prawdziwy klucz ma rozmiar 6, a kolumny danych mają rozmiar 8 - łącznie 14 kolumn. Chcielibyśmy, aby rozwiązanie to było najszybsze w zakresie przetwarzania danych.


title: jak stworzyć bazę, w której trzeba okresowo dodawać nowe kolumny?

text: Chcę stworzyć bazę danych, która śledzi różne projekty i ich finanse. Ponieważ finanse są śledzone co miesiąc, dla każdego miesiąca należy utworzyć nową kolumnę. Mógłbym stworzyć wszystkie stoły razem na początku, tak, ale myślę, że byłaby to zła strategia rozwoju. Zgadywałbym też liczbę miesięcy. Będę tworzyć aplikację do monitorowania tych projektów (takich jak wykresy itp.) więc może mógłbym zaprogramować program, aby robił to w regularnych odstępach czasu.


title: Czy posiadanie kodu to zapach kodu?

text: To jest coś, o czym myślałem odkąd przeczytałem tę odpowiedź w kontrowersyjnym wątku opinii programistycznych: > **Twoim zadaniem jest pozbycie się pracy.** > > Kiedy piszesz oprogramowanie dla swojego pracodawcy, każdy Oprogramowanie, które tworzysz > musi być napisane w taki sposób, aby mógł zostać odebrany przez każdego programistę i > zrozumiany przy minimalnym nakładzie pracy. Jest dobrze zaprojektowany, przejrzysty i > konsekwentnie napisany, sformatowany czysto, udokumentowany tam, gdzie powinien, > buduje się codziennie zgodnie z oczekiwaniami, sprawdzany w repozytorium i > odpowiednio wersjonowany. > > Jeśli zostaniesz potrącony przez autobus, zwolniony, zwolniony lub odejdziesz z pracy, twój pracodawca > powinien być w stanie zastąpić cię w mgnieniu oka, a następny facet może > wkroczyć w twoją rolę, odebrać twój kod i być gotowym do pracy w ciągu tygodnia > topy. Jeśli on lub ona nie może tego zrobić, oznacza to, że poniosłeś sromotną porażkę. > > Co ciekawe, odkryłem, że osiągnięcie tego celu uczyniło mnie bardziej wartościowym dla > moich pracodawców. Im bardziej staram się być jednorazowy, tym bardziej staję się dla nich cenny. Zostało to nieco omówione w innych pytaniach, takich jak to, ale chciałem omówić to ponownie, aby omówić z bardziej pustego punktu widzenia „ **to zapach kodu!!** ” – co nie t naprawdę został jeszcze szczegółowo omówiony. Od dziesięciu lat jestem profesjonalnym programistą. Miałem jedną pracę, w której kod był na tyle dobrze napisany, że każdy przyzwoity nowy programista stosunkowo szybko go podchwycił, ale w większości przypadków w branży wydaje się, że bardzo wysoki poziom własności (zarówno indywidualnej, jak i zespołowej) jest norma. Wydaje się, że większości baz kodu brakuje dokumentacji, procesów i „otwartości”, które pozwoliłyby nowemu programiście na ich szybkie podniesienie i rozpoczęcie pracy. Zawsze wydaje się, że istnieje wiele niepisanych małych sztuczek i hacków, o których wiedziałby tylko ktoś, kto bardzo dobrze zna bazę kodu ("posiada" ją). Oczywiście oczywistym problemem jest to: co się stanie, jeśli dana osoba zrezygnuje lub „zostanie potrącona przez autobus”? Albo na poziomie zespołu: co, jeśli cała drużyna dostanie zatrucia pokarmowego, kiedy wyjdą na obiad zespołowy i wszyscy umrą? Czy byłbyś w stanie stosunkowo bezboleśnie zastąpić zespół świeżym zestawem nowych losowych programistów? - W kilku moich poprzednich pracach w ogóle nie wyobrażam sobie, żeby to się zdarzyło. Systemy były tak pełne sztuczek i hacków, że " _po prostu trzeba wiedzieć_ ", że każdy nowy zespół, którego zatrudnisz, zajęłoby znacznie więcej czasu niż zyskowny cykl biznesowy (np. nowe stabilne wydania), aby wszystko zaczęło się znowu dziać. Krótko mówiąc, nie zdziwiłbym się, gdyby produkt musiał zostać porzucony. Oczywiście utrata całego zespołu naraz byłaby bardzo rzadka. Ale myślę, że jest w tym wszystkim bardziej subtelna i złowroga rzecz – i to jest punkt, który skłonił mnie do rozpoczęcia tego wątku, ponieważ nie widziałem tego wcześniej w tych warunkach. Zasadniczo: myślę, że **wysoka potrzeba posiadania kodu jest bardzo często wskaźnikiem długu technicznego**. Jeśli w systemie brakuje procesu, komunikacji, dobrego designu, wielu drobiazgów i hacków, które „po prostu trzeba znać” itp. – zwykle oznacza to, że system pogrąża się w coraz głębszym długu technicznym. Chodzi jednak o to, że własność kodu jest często przedstawiana jako rodzaj „lojalności” wobec projektu i firmy, jako pozytywna forma „wzięcia odpowiedzialności” za swoją pracę – więc niepopularne jest jawne jej potępianie. Ale jednocześnie strona równania dotycząca długu technicznego często oznacza, że baza kodu staje się coraz mniej otwarta i trudniejsza w obsłudze. A zwłaszcza, gdy ludzie się zmieniają i nowi deweloperzy muszą zająć ich miejsce, koszt długu technicznego (tj. utrzymania) zaczyna rosnąć. Tak więc w pewnym sensie uważam, że byłoby dobrze dla naszego zawodu, gdyby wysoki poziom potrzeby posiadania kodu był jawnie postrzegany jako zapach pracy (w wyobraźni popularnych programistów). Zamiast postrzegać to jako „branie odpowiedzialności i dumy” z pracy, powinno być postrzegane bardziej jako „okopywanie się i tworzenie sztucznego bezpieczeństwa pracy poprzez dług techniczny”. I myślę, że test (eksperyment myślowy) powinien zasadniczo brzmieć: co by było, gdyby osoba (lub cały zespół) miała jutro zniknąć z powierzchni Ziemi. Czy byłaby to gigantyczna - być może śmiertelna - szkoda dla projektu, czy bylibyśmy w stanie sprowadzić nowych ludzi, nakłonić ich do przeczytania dokumentacji i plików pomocy oraz pobawić się kodem przez kilka dni - a potem wrócić biznes w kilka tygodni (i powrót do pełnej produktywności za około miesiąc)?


title: Stosowanie problemu Galerii Sztuki w celu optymalnego rozmieszczenia czujnika

text: Staram się zaprojektować algorytm _optymalnego rozmieszczenia czujnika_ w danym obszarze. Po przeprowadzeniu pewnych badań znalazłem _Problem Galerii Sztuki_. Jednak ten problem zakłada, że strażnicy widzą całą drogę do obwodu ze swoich pozycji, co nie ma miejsca w przypadku czujników (czujniki mają zasięg). Czy możliwe jest rozwiązanie problemu optymalnego rozmieszczenia czujnika poprzez przypisanie go do problemu z galerią sztuki i wypróbowanie jakiegoś rekursywnego rozwiązania? Byłbym wdzięczny, gdyby ktoś mógł rzucić nieco światła na to pytanie lub poprowadzić mnie do odpowiedniego źródła.


title: Zalecenia dotyczące internetowego systemu pomocy

text: Tworzę dość duży GUI. Jestem osobą techniczną, ale bardziej od strony sprzętu, a nie oprogramowania. Zastanawiam się, jaki pakiet oprogramowania byłby najbardziej odpowiedni, aby umożliwić mi wygenerowanie internetowego systemu pomocy. Najlepiej zajmuje się dużo kodowaniem, co pozwala mi skupić się na treści. Na przykład, użytkownik może kliknąć łącze w GUI, gdy ma pytanie, które prowadzi go do internetowego Przewodnika pomocy, na przykład zawierającego przegląd sposobu korzystania z GUI, być może indeksu przeszukiwalnego (klucz indeks słowny), spis treści itp. do nawigacji po Przewodniku pomocniczym. Moją pierwszą myślą było zaprogramowanie wszystkiego w XHTML za pomocą programu Dreamweaver, ale moje wymagania dotyczące układu są dość skromne (tylko liczby i tekst, może kilka równań) i wolałbym nie spędzać dużo czasu na programowaniu. Zastanawiał się, czy istnieje jakieś oprogramowanie, które ułatwia tworzenie/publikowanie stron internetowych, które można nawigować. Ponownie, tak naprawdę nie jestem programistą, więc jeśli jest coś oczywistego, prawdopodobnie nie jestem tego świadomy.


title: Czy podpisanie serii kontraktów zaszkodzi twojej karierze?

text: Więc kontraktuję już od 6-7 miesięcy. Problem, jaki mam, polega na tym, że kiedy szukam pracy, biorę umowę, a potem nie chcę rezygnować z osób pracujących w moim kontrakcie. Potem, kiedy kontrakt się kończy, mówię sobie, że podejmę kontrakt podczas szukania itp. Obawiam się, że jeśli ten trend się utrzyma, nie będzie to dobre dla mojej kariery. Szczególnie martwi mnie fakt, że kontrakty (od 3 do 6 miesięcy) nie są wystarczająco długie, abym mógł wziąć udział w pełnym SDLC. Czy wzięcie serii 3-6-miesięcznych kontraktów utrudnia później wylądowanie na stałe, starsze stanowisko? Na przykład nie wyobrażam sobie kogoś, kto zatrudni konsultanta do pełnienia funkcji kierownika zespołu. Więc jeśli przechodzisz od kontraktu do kontraktu, czy szkodzi to twojej zdolności do zostania liderem zespołu?


title: Czy istnieje antywzór do opisania tej metody kodowania?

text: Mam bazę kodu, w której programista ma tendencję do zawijania rzeczy w obszarach, które nie mają sensu. Na przykład, mając dziennik błędów, który mamy, możesz zalogować się za pomocą ErrorLog.Log (np. "przyjazna wiadomość"); Dodał różne inne środki, aby wykonać dokładnie to samo zadanie. NP. SomeClass.Log(ex, "przyjazna wiadomość"); Który po prostu się odwraca i wywołuje pierwszą metodę. Zwiększa to poziom złożoności bez dodatkowych korzyści. Czy jest jakiś antywzór, żeby to opisać?


title: Czy rozsądnie wysyłam duże ilości danych?

text: Mam zamiar zaprojektować usługę konwersji wideo, która jest skalowalna po stronie konwersji. Architektura jest następująca: * Strona internetowa do przesłania wideo * Po zakończeniu wiadomość zostaje wysłana do jednego z kilku serwerów zmiany rozmiaru * Serwer lokalizuje wideo, zapisuje je na dysku i konwertuje do kilku formatów i rozdzielczości * Serwer zmiany rozmiaru przesyła dane wyjściowe do serwera treści i informuje, że konwersja została wykonana. Wiadomości to coś, co omówiłem, ale teraz przesyłam przez FTP i zastanawiam się, czy istnieje lepszy sposób? czy jest coś szybszego lub bardziej niezawodnego? Wszystkie serwery będą znajdować się w tym samym przełączniku gigabitowym lub w sąsiednim przełączniku, więc oczekuje się szybkiego transferu. EDYCJA: Pytanie idzie po stronie serwera <-> rzeczy. Serwery znajdują się w tej samej sieci LAN, więc bezpieczeństwo połączeń międzysieciowych nie jest głównym problemem.


title: Wersja próbna oprogramowania: ograniczony czas czy ograniczona funkcjonalność?

text: Obecnie rozwijam swój pierwszy poważny kawałek oprogramowania w C#. Jak dotąd jest to dobre doświadczenie edukacyjne. Moje oprogramowanie jest w zasadzie narzędziem do planowania zadań z kilkoma zaawansowanymi funkcjami i możliwościami. Nie zbliżam się jeszcze do końca, ale zastanawiałem się, jakie są opinie ludzi na temat próbnych wersji oprogramowania. Czy uważasz, że ogólnie bardziej korzystne byłoby posiadanie ograniczonej czasowo wersji próbnej (powiedzmy 30 dni) lub wersji oprogramowania o ograniczonej funkcjonalności? Myślę, że wiem, z czym bym poszła, jednak zawsze lubię słuchać opinii innych. Dziękuję,


title: framework encji 6 wystarczająco różnych platform SQL Server i OS?

text: To mój pierwszy raz, kiedy używam serwera sql, zwykle używam MySQL, więc nie jestem pewien, jak to zrobić. Projekt, który mi przypisano, zostanie wdrożony na wielu platformach, w szczególności na komputerach PC z różnymi serwerami SQL od 2008 do 2014, niektóre z nich to edycja ekspresowa, niektóre to edycja standardowa i Windows od XP, 7, 8 i 8.1 dla obu x86 i systemy 64-bitowe Jeśli używam struktury encji 6 na moim komputerze deweloperskim, 64-bitowe Windows 8.1 i SQL Server 2012 Express. Czy będzie to stanowić problem podczas wdrażania?


title: Jak radzisz sobie ze zmianami w ukierunkowaniu na klienta?

text: Pracujemy nad dużym, trwającym projektem, który ma ciągłe zmiany funkcji. Wykonanie tych funkcji może potrwać nawet 3-4 tygodnie. To oczywiście byłoby w porządku, z wyjątkiem tego, że klient zawsze zmienia swoje priorytety/koncentrację w oparciu o naciski ze strony ICH klientów, którzy mogą chcieć wdrożyć pewne funkcje przed innymi. Dlatego często musimy zmieniać biegi w trakcie tworzenia głównych funkcji i uruchamiać nową funkcję, która nagle ma wyższy priorytet. Mamy wtedy oczywiście koszt połączenia wszystkiego razem w pewnym momencie, a także koszt utraty impetu oryginalnej funkcji. W tym momencie nasze szacunki wychodzą poza okno. Czy jest jakiś dobry sposób na poradzenie sobie z tym? Kilka opcji, o których myślałem: 1. Załóżmy, że tak właśnie będzie i zastosuj współczynnik „rozproszenia klienta” do 100% we wszystkich szacunkach (jest to niebezpieczne w przypadku, gdy możemy faktycznie wykonać funkcję bez przerwania) 2. edukować klienta na temat kosztów zmiany biegów i być może zastosować premię za zmianę do poprzednich szacunków, jeśli chce, abyśmy przeszli na pracę nad inną funkcją 3. odmówić pracy nad więcej niż jedną funkcją/wydaniem na raz (oprócz poprawek błędów). To prawdopodobnie nie jest realistyczne. Z niecierpliwością czekam na wiadomość o tym, jak inni sobie z tym poradzili. To nie może być rzadkie.


title: Wyświetlanie obrazów z chmury Google w rozmiarze 300x200

text: Pracuję nad aplikacją, która używa pamięci Google Cloud do obsługi obrazów mojej aplikacji. Obrazy są przesyłane z aplikacji na Androida do kodu silnika aplikacji Google, który ma przesłać obrazy do gcs, a następnie utworzyć link i zaktualizować w mojej bazie danych. To działa dobrze. Wyzwaniem, przed którym stoję, jest to, że potrzebuję różnych urządzeń do obsługi tego samego obrazu, ale w różnych wymiarach. np. urządzenie1 może zażądać wyświetlania obrazów w rozmiarze 300x300, a urządzenie2 może zażądać wyświetlania tego samego obrazu w rozmiarze 500x500. Próbowałem wyszukać problem w Google, ale nie wydaje mi się, aby uzyskać prawidłowy sposób obsługi mojego obrazu w różnych rozmiarach, ale mam tylko pewną strukturę adresu URL, która użyje klucza blob, a następnie przeanalizuje rozmiar jako parametr pobierania w adresie URL, a obraz jest przycięte do wymaganych wymiarów. np. http://lh4.ggpht.com/TgjDT- cPRr6bjrpSVQeILk93o4Ouzjo1ygMB6KpmnCHhyH5vJKKRrqxCD2bC3T09CRIP6h5QFsV_l0hnhio5bN7z=s1000-c Moje obrazy url pisaków. jak mogę to osiągnąć za pomocą adresu URL, który mam? Próbowałem odczytać obraz z adresu URL, zmieniając jego rozmiar do rozmiaru żądanego przez urządzenie, a następnie odpychając obraz do urządzenia, ale wydaje mi się to nudne i wykorzystuje wiele zasobów serwera, biorąc pod uwagę, że mogę mieć średnio 100 połączeń na drugie prośby o zdjęcia.


title: Licencjonowanie oprogramowania i generowanie kodu

text: Zajmuję się tworzeniem narzędzia, które generuje kod z różnych danych. Samo narzędzie będzie licencjonowane z licencją MIT, co stanowi dla mnie dobrą równowagę pod względem swobody użytkowania i modyfikacji, przy jednoczesnym zachowaniu praw autorskich. OK, ale jaki jest status prawny kodu _wygenerowanego_ przez narzędzie? Kto posiada prawa autorskie do kodu wygenerowanego przez narzędzie? Czy muszę dać użytkownikom narzędzia licencję na wygenerowany kod, czy też już ją posiadają, ponieważ jest przez nich generowany? Różnicą w tym systemie generowania kodu (co może być istotne) jest to, że informacje źródłowe o generowaniu kodu są dostarczane przez sam system. Użytkownik nie podaje danych źródłowych; dane źródłowe są dołączane do niego. Po prostu mają środki, aby przekształcić je na różne sposoby (odfiltrowując części danych, których nie chcą itp.). Oczywiście mogli edytować dołączone dane. Czy to ma jakiś wpływ na to?


title: Jakie są możliwości programowego wykorzystania aplikacji Windows w VB.NET? (Naciśnięcie przycisku i pociągnięcia klawiatury)

text: Mam tę złożoną aplikację Windows, dla której muszę stworzyć zautomatyzowany system testujący. Muszę używać VB.NET i musi on być w stanie klikać różne rzeczy, być świadomym okien otwieranych w aplikacji, okien dialogowych i robić rzeczy, które człowiek zrobiłby w tej aplikacji. Dzięki moim badaniom odkryłem, że FindWindowEx będzie dla mnie przydatny. Byłbym wdzięczny za wszelkie informacje zwrotne, w jakim kierunku powinienem iść w tworzeniu tego zautomatyzowanego systemu testowania. (czy są jakieś funkcje, biblioteki lub inne wbudowane rzeczy, które mogą mi pomóc? Jeśli tak, to jakie) Dzięki, Phil


title: Czy potrzebujemy rejestrowania podczas TDD?

text: Wykonując cykl Red, Green & Refactor, zawsze powinniśmy napisać minimalny kod, aby przejść test. W ten sposób uczono mnie o TDD i prawie wszystkie książki opisują ten proces. Ale co z wycinką? Szczerze mówiąc rzadko korzystałem z logowania w aplikacji, chyba że działo się coś naprawdę skomplikowanego, jednak widziałem wiele postów, które mówią o znaczeniu prawidłowego logowania. Tak więc poza logowaniem wyjątku nie mogłem uzasadnić rzeczywistej wagi logowania w odpowiedniej testowanej aplikacji (testy jednostkowe/integracyjne/akceptacyjne). Więc moje pytania to: 1. Czy musimy się logować, jeśli robimy TDD? czy nieudany test nie ujawni, co jest nie tak z aplikacją? 2. Czy powinniśmy dodać test dla procesu logowania w każdej metodzie w każdej klasie? 3. Jeśli niektóre poziomy logów są wyłączone na przykład w środowisku produkcyjnym, czy nie wprowadzi to zależności między testami a środowiskiem? 4. Ludzie mówią o tym, jak logi ułatwiają debugowanie, ale jedną z głównych zalet TDD jest to, że zawsze wiem, co jest nie tak z powodu nieudanego testu. Czy jest coś, czego mi brakuje?


title: Czy dobrym pomysłem jest wykonanie TDD na niskopoziomowych komponentach?

text: Rozważam napisanie niskopoziomowego sterownika lub składników/jądra systemu operacyjnego. Ludzie z osdev.org zdają się myśleć, że ważnych fragmentów nie da się w ten sposób sensownie przetestować, ale czytałem kilka dyskusji, w których ludzie myśleli inaczej. Rozejrzałem się, ale nie znalazłem żadnych rzeczywistych przykładów TDD na komponentach niskiego poziomu. Czy to jest coś, co ludzie faktycznie robią, czy tylko coś, o czym ludzie mówią w teorii, ponieważ nie ma dobrego sposobu, aby to zrobić w praktyce?


title: Jak zaimplementować właściwą identyfikację i zarządzanie sesją na żądaniach json post?

text: Mam kilka drobnych połączeń komunikacyjnych z serwerem ze strony internetowej za pośrednictwem żądań json. Mam jeden punkt końcowy, który dystrybuuje żądania zgodnie z danymi identyfikacyjnymi. Używam serwera asynchronicznego i obsługi danych, gdy nadejdą. Teraz myślę o przedłużeniu próśb o jakąś sesję. Próbowałem użyć podejścia REST/JSON, przekazując pojedynczy identyfikator w json. Na przykład rejestruję się na stronie, otrzymuję jakiś identyfikator tokena jako odpowiedź i używam tego tokena z każdym żądaniem postu. Post request składa się z trzech prostych części: type, data, token_id. Mój problem polega na tym, że nie jestem pewien, jak buforować token po stronie przeglądarki. Używam Tornado jako serwera internetowego i zapisuję token za pomocą takich plików cookie (http://technobeans.wordpress.com/2012/08/07/tornado-cookies/). Problem polega na tym, że nie jestem pewien, jak długo ustawiony jest czas wygaśnięcia i jak powinienem wymusić odnowienie pliku cookie. Na przykład, czy powinienem, gdy plik cookie wygaśnie (naprawdę nie wiem, jak go wykryć), aby uruchomić zdarzenie po stronie klienta, aby się zarejestrować. Próbowałem też usuwać żądania i używać interfejsów typu socket (sock-js) do przesyłania danych. Uważam, że obsługa była o wiele łatwiejsza: zaloguj się, otwórz dane posta w gnieździe, zamknij. Tam, gdzie mogłem to wdrożyć, byłem z tego zadowolony. Uważam jednak, że posiadanie otwartego połączenia nie jest rozwiązaniem wszystkich problemów, szczególnie rzadkich, nieregularnych transmisji danych. Szukam pomysłów, jak poprawnie identyfikować posty i jak radzić sobie z nieregularnymi połączeniami json. Podsumowując: 1. **Jak najlepiej zdefiniować sesję post request?** Po zarejestrowaniu pobieraj plik cookie i używaj tokena tak długo, jak trwa sesja z każdym żądaniem? Czy powinienem zaimplementować limit czasu dla tokena? Czy istnieją alternatywne metody? Czy mogę buforować tokeny do żądań tego samego pochodzenia? Czego mogę użyć po stronie klienta (przeglądarki internetowej)? 2. **A co z bezpieczeństwem?** Jakich technik powinienem użyć, aby odrzucać żądania zawierające zniekształcone dane do dużych zbiorów danych bez blokowania serwera? **Czy powinienem się martwić?**


title: Refaktoryzacja o niskim wpływie i czyszczenie kodu z niechlujnego kodu podczas oczekiwania na wymagania

text: Odziedziczyłem istniejącą bazę kodu dla produktu, który jest karygodnie niechlujny. Podstawowy projekt jest żałośnie niewystarczający, co niestety nie mogę zrobić bez kompletnego refaktora (wysokie sprzężenie, NISKA spójność, gwałtowne powielanie kodu, brak dokumentacji technicznej projektu, testy integracyjne zamiast testów jednostkowych). Produkt ma historię, wysoką ekspozycję na krytycznych klientów „dojnych krów” z minimalną tolerancją na ryzyko, dług techniczny, który sprawi, że Grecy się zarumienią, BARDZO dużą bazę kodu i złożoność oraz zmęczone walką, defetystyczne podejście do błędów przez zespół wcześniej ja. Stary zespół przeskoczył statek do innej dywizji, aby mieć okazję zrujnować kolejny projekt. Rzadko zdarza mi się doświadczać niepowodzenia projektu związanego z niekompetencją techniczną, w przeciwieństwie do niepowodzenia zarządzania projektem, ale jest to rzeczywiście jeden z tych przypadków. Na razie jestem sam, ale mam dużo czasu, swobodę decyzji i przyszłego kierunku oraz możliwość zbudowania od podstaw zespołu, który mi pomoże. Moim pytaniem jest zebranie opinii na temat refaktoryzacji o niskim wpływie na projekt taki jak ten, gdy masz trochę wolnego czasu na etapie zbierania wymagań funkcjonalnych. Istnieją tysiące ostrzeżeń kompilatora, prawie wszystkie z nich to nieużywane importy, nieprzeczytane zmienne lokalne, brak sprawdzania typu i niebezpieczne rzutowania. Formatowanie kodu jest tak nieczytelne i niechlujne, że wygląda na to, że koder cierpiał na chorobę Parkinsona i nie mógł kontrolować, ile razy spacja została naciśnięta w danym wierszu. Dalsze zasoby bazy danych i plików są zwykle otwierane i nigdy nie są bezpiecznie zamykane. Bezsensowne argumenty metod, zduplikowane metody, które robią to samo itp. Czekając na wymagania dla następnej funkcji, czyściłem rzeczy o niskim wpływie i niskim ryzyku i zastanawiałem się, czy marnuję czas, czy robię dobrze rzecz. Co się stanie, jeśli nowa funkcja oznacza wyrwanie kodu, nad którym wcześniej spędziłem czas? Zamierzam rozpocząć podejście Agile i rozumiem, że jest to dopuszczalne i normalne, aby stale refaktorować podczas rozwoju Agile. Czy możesz pomyśleć o jakichś pozytywnych lub negatywnych skutkach mojej pracy, które chciałbyś dodać?


title: Jak wytłumaczyć, że trudno oszacować czas potrzebny na większy projekt oprogramowania?

text: Jestem młodszym programistą i trudno mi oszacować, ile czasu zajmuje ukończenie większego projektu oprogramowania. Ogólnie wiem, jak ustrukturyzować architekturę, ale trudno mi wiedzieć, jakie szczegóły mam do zrobienia i jakie problemy mam do rozwiązania. Trudno więc oszacować, ile czasu zajmie ukończenie większego projektu, bo nie wiem, jakie problemy muszę rozwiązać i ile czasu zajmie ich rozwiązanie. Jak mam to wyjaśnić osobie, która **nie jest programistą**?


title: Sales Manager: „Dlaczego szacowanie czasu jest tak złożone?”

text: Kilka dni temu zadał mi to pytanie kierownik sprzedaży. Ale w tym momencie nie znałem odpowiedzi, którą mógłby zrozumieć. On nie jest programistą! W tej chwili pracuję nad produktem, który ma ponad 8 lat. Nikt nie myślał o architekturze czy ewoluowalności. Codziennie mam przed sobą bagno kodu, który nie jest testowany. Z tego powodu szacowanie czasu jest dla mnie bardzo trudne. Jak mam opisać ten problem **sprzedawcy**? Nie tylko mój problem z bagiennym kodem, ale ogólnie!


title: Wyznaczanie terminów w tworzeniu oprogramowania

text: Sama pracuję nad systemem od około dwóch lat. System odziedziczyłem po wykonawcy, który spędził nad nim około dwóch lat przede mną (sam). System nie jest szczególnie dobrze zaprojektowany, ponieważ łączy się w nim logika biznesowa, logika prezentacji i logika danych. Jest to bardzo złożony system, który staram się refaktoryzować na bieżąco, a to wymaga czasu. Zrekrutowano nowego programistę, ale wydaje się, że przejmuje bardziej rolę zarządzania projektami. Bardzo bezpośrednio pyta, jak długo to potrwa; kwestionowanie wszystkich moich założeń i przewidywań, co jest trudne ze względu na złożoność i fakt, że w tej chwili jestem jedynym ekspertem. Jestem bardzo zorganizowana w życiu osobistym. Na przykład w zeszłym tygodniu zapytano mnie, o której godzinie przyjadę do Manchesteru, więc podałem dokładny czas na wypadek wypadków i prac drogowych po drodze. Obecnie trudno mi zastosować te same zasady w pracy przy tworzeniu oprogramowania. Nie zrozum mnie źle. W przeszłości pracowałem z kierownikami projektów przy mniej złożonych projektach i miałem dobre relacje, ale wtedy projekty były mniej złożone i zawsze dostarczałem je przed terminem. Walczę z tym konkretnym kierownikiem projektu i to powoduje stres. Jak inni programiści radzą sobie z kierownikami projektów, którzy chcą odpowiedzi i dokładnych terminów realizacji?


title: Struktura aplikacji sieciowych/API/etc

text: Ponieważ cały szum web2.0 i aplikacje internetowe są wściekłe, jedyną zaletą korporacyjnego punktu widzenia, o którym myślę, że mają aplikacje internetowe, jest to, że łatwiej jest obsługiwać bazę użytkowników: aktualizacje stają się prostsze z kilku rzeczy. Tyle, że przeglądarka nie jest dobrą platformą. Od jakiegoś czasu się nad tym zastanawiam. Moim pierwotnym pomysłem było użycie Pythona, potem dowiedziałem się o QSA. Lubię QT. Jego widżety są doskonałe do większości celów i są wieloplatformowe. Na komputerze klienta jest zainstalowana ogólna aplikacja QT. Wskazują go na adres URL, aby rozpocząć wykonywanie podpisanej/zaszyfrowanej aplikacji w tej lokalizacji. Rzeczywista aplikacja może być napisana w skrypcie Qt. Może być rozwijany bardzo podobnie jak tradycyjna aplikacja MVC. Albo mógłby i prawdopodobnie powinien być rozwijany jak WT, tak aby aplikacja "sieciowa" mogła być zakodowana w ten sam sposób, co aplikacja "desktopowa". Zanim przejdę do ponownego wymyślania koła, czy istnieją takie platformy/frameworki? Jeśli pójdę wymyślić to koło, o czym powinienem wiedzieć?


title: Co ma na myśli Douglas Crockford, gdy mówi, że jQuery nie skaluje się?

text: W sekcji pytań i odpowiedzi Douglas Crockford mówi, że jQuery nie skaluje się tak dobrze, jak niektóre inne popularne biblioteki. Co on przez to rozumie i co takiego jest w innych bibliotekach, co czyni je bardziej skalowalnymi?


title: Czy po powrocie z okresu nieprogramowania poprawiłeś się?

text: Wygląda na to, że za każdym razem, gdy robię sobie dłuższą przerwę w programowaniu – czy to w celu realizacji innych zainteresowań, czy po prostu dlatego, że na jakiś czas wypadłem z tego przyzwyczajenia – niezmiennie odkrywam, że kiedy wracam do projektu i zaczynam kodować, przychodzę z mnóstwem nowych pomysłów, nowatorskimi podejściami i po prostu lepszym kodem. Może dlatego, że mam wiele innych kreatywnych zainteresowań poza programowaniem, a mój umysł lubi znajdować korelację i skrzyżowanie między nimi, więc kiedy robię jedną rzecz, z tyłu głowy zwykle stosuję ją również do inne. Więc jakie masz doświadczenie? Czy kiedykolwiek wracasz z przerwy (zamierzonej lub nie) czując się nie tylko odświeżony, ale także jakoś _widocznie poprawiony?_ Czy to rzeczywiście norma?


title: Jaki jest jednolity sposób wyrażania kraju, miasta, stanu? (norma ISO itp.)

text: Muszę zakodować dane w tokenie użytkownika, który opisuje kraj, stan i miasto użytkownika. Rozumiem, że różne deskryptory mają zastosowanie do różnych hierarchii rządowych, ale szukam jakiegoś standardu, który już to rozwiązał. Jaki standard ISO, format binarny itp. najlepiej opisuje użytkownika, który może pochodzić z dowolnego kraju?


title: Pozbywasz się kontrolera Massive View w iOS?

text: Rozmawiałem z kolegą o następującym problemie. Mamy aplikację, w której potrzebujemy funkcjonalności filtrowania. Na dowolnym ekranie głównym w górnym pasku nawigacyjnym znajduje się przycisk w prawym górnym rogu. Po dotknięciu tego przycisku pojawi się modalnie niestandardowy widok typu Alert View, a za nim półprzezroczysty widok czarnej nakładki. W tym widoku modalnym znajduje się widok tabeli opcji i możesz wybrać wyłącznie jeden. Na podstawie dokonanego wyboru po zamknięciu tego widoku modalnego lista elementów w widoku głównym jest filtrowana. Jest to po prostu modalnie prezentowany filtr do filtrowania głównego widoku tabeli. Ten projekt interfejsu użytkownika jest podyktowany przez dział projektowy, nie mogę nic z tym zrobić, więc przyjmijmy to jako założenie. Również główny przycisk filtra na pasku nawigacyjnym zmieni kolory, aby wskazać, że filtr jest aktywny. Mam pytanie dotyczące wdrożenia. Zasugerowałem koledze utworzenie osobnej klasy XYZFilter, która będzie * będzie instancją stworzoną przez główny kontroler widoku * pozyska opcje filtrowania * zajmie się zapisywaniem i przywracaniem jego stanu - czyli ostatniego wybranego filtra * udostępnienie jego dwóch widoków - nakładki Widok i widok modalny * być źródłem danych dla tabeli w jej widoku modalnym. Z jakiegoś niewiadomego powodu mój kolega wcale nie był pod wrażeniem takiego podejścia. Chce po prostu wykonać te funkcje w głównym kontrolerze widoku, może dlatego, że nie był do tego przyzwyczajony w przeszłości :-/ Czy jest jakiś zasadniczy problem z moim podejściem? Chcę * zachować mały kontroler widoku, aby nie mieć kodu spaghetti * utworzyć składnik wielokrotnego użytku (do użytku poza projektem) * mieć bardziej zorientowane obiektowo, oddzielone podejście. * zapobiegaj powielaniu kodu, ponieważ potrzebujemy filtrowania w dwóch różnych miejscach, ale w obu wygląda to tak samo.. Jakieś porady?


title: Czy ktoś zna dobre referencje dotyczące algorytmów uczenia maszynowego i rozpoznawania obrazów?

text: Potrzebuję go do mojej pracy magisterskiej i z jakiegoś powodu trudno mi znaleźć przyzwoite książki lub strony internetowe. Temat mojej pracy magisterskiej to "Klasyfikacja obrazów sztuki nowoczesnej przy użyciu metody uczenia maszynowego". Moim celem jest zaklasyfikowanie przykładów malarstwa sztuki współczesnej do odpowiedniego nurtu sztuki współczesnej (ekspresjonizmu, realizmu itp.) przy użyciu podejścia do uczenia maszynowego. Również sugestie i uwagi dotyczące mojej pracy są bardzo mile widziane.


title: Szukasz narzędzia, które wygenerowało opisy gramatyczne JSON Rail-Road

text: Obecnie pracuję nad małym językiem i chciałbym bardziej rygorystycznie wyrazić jego gramatykę. Wiem o EBNF i fajnie jest generować parsery (Bison/Yacc), jednak nie jest to łatwe do wizualizacji. Strona Wikipedii na diagramie składni wskazuje, że jednym z sukcesów JSON jest wyświetlanie jego gramatyki jako diagramu Rail-Road. Rzeczywiście, jeśli wejdzie się na stronę JSON, można zobaczyć ładne diagramy, które są łatwo dostępne i (uważam) atrakcyjne wizualnie, na przykład: ![http://json.org/object.gif](http://i .stack.imgur.com/raLaZ.gif) Łatwo przekazuje strukturę „obiektu” w JSON, łatwo radząc sobie z wieloma alternatywami i powtórzeniami. Bardzo podobny sposób wyrażania gramatyki można znaleźć na SQLite (chociaż wolę JSON). ![http://www.sqlite.org/images/syntax/deletestmt.gif](http://i.stack.imgur.com/Oiv6H.gif) Czy ktoś wie, czy było narzędzie do generowania diagramy JSON ? (a jeśli tak, to gdzie mogę go znaleźć). Strona wikipedii odwołuje się do niektórych generatorów, ale żaden nie generuje tak ładnych diagramów.


title: Jakie są proste techniki skanowania książek w poszukiwaniu nowych informacji?

text: Nie mogę się oprzeć ciągłemu kupowaniu tanich e-booków programistycznych i technicznych z dziedzin takich jak Drupal, PHP itp., a także kompulsywnemu pobieraniu darmowych materiałów udostępnianych, np. z bloga deweloperskiego Microsoftu... Główny problem z dużą biblioteką Rozwinąłem to, że w tych książkach jest wiele rozdziałów (szczególnie kilka pierwszych) wypełnionych informacjami, które już znam, ale z pomocnymi ciekawostkami ukrytymi pomiędzy nimi. Logicznym krokiem byłoby pominięcie tych rozdziałów i przeczytanie tych, o których nic nie wiem, ale obawiam się, że w ten sposób mogę stracić naprawdę ważne informacje. Ale oczywiście nużące jest ponowne czytanie o zmiennych, funkcjach i obiektach, gdy na przykład próbujesz dowiedzieć się więcej o wzorcu rejestru. Trudno jest szukać tego w sieci, ponieważ samo moje pytanie wydaje się niejasne i trudne do sformułowania w jednym zapytaniu wyszukiwania. Potrzebuję rady ludzi - co robisz w tej sytuacji?


title: Co sądzisz o wycofaniu skryptów JavaFX?

text: Oracle nie będzie już rozwijać skryptu JavaFX (języka), a teraz aplikacje będą kodowane przez API. Myślę, że skrypt JavaFX był całkiem fajny. Czy rozsądne wydaje się zatrzymanie rozwoju języka i używanie go tylko przez API? Linki: http://jonathangiles.net/blog/?p=916 http://java.dzone.com/articles/javaone-2010-alternative-jvm


title: Czy przechowywanie informacji o metadanych w nazwach plików to zła praktyka? Lepsze rozwiązania?

text: Zauważyłem, gdzie pracuję, ludzie chętnie przechowują informacje w nazwach plików i analizują nazwy plików. Nie wydaje mi się to szczególnie dobrą praktyką. Widzę już sporadyczne problemy ze skryptami globbującymi plik i błędnymi, ponieważ inny plik pasuje jako pierwszy. Dyskutujemy również o tym, jak obejść problemy z separatorami pól. Czy uważa się to za złą praktykę, czy nie? Jakie są inne akceptowane rozwiązania do pobierania plików z systemu plików na podstawie pewnego typu metadanych?


title: Załadować wszystkie szablony przy starcie?

text: Zajmuję się tworzeniem aplikacji mobilnej jQuery. W tej aplikacji często używam szablonów Mustache.js w osobnych plikach html. Właściwie każdy szablon jest potrzebny użytkownikowi, ale moja aplikacja ładuje szablon (metodą GET) tylko wtedy, gdy jest potrzebny. Na razie wszystkie szablony są małe i wszystkie są używane przez klienta w czasie wykonywania. Ale oczywiście nie potrwa to długo, w przypadku dodania rozszerzeń, które będą potrzebne lub nie przez użytkowników. Mógłbym załadować każdy szablon na raz, ale obawiam się, że w przyszłości może to stać się punktem blokującym. Na podstawie Twojego doświadczenia, co najlepiej zrobić? Załadować wszystkie szablony naraz lub w razie potrzeby załadować je jeden po drugim?


title: Czy istnieje jakiś standard dla dokumentu projektowego?

text: To pytanie jest czysto akademickie. W ramach laboratorium inżynierii oprogramowania po wygenerowaniu SRS ma powstać dokument projektowy. Czy istnieje jakikolwiek standard tworzenia dokumentu projektowego. Ponieważ przy tworzeniu SRS postępowaliśmy zgodnie ze standardem IEEE. Jakie wszystkie rzeczy można zawrzeć w dokumencie projektowym z akademickiego punktu widzenia? Zastanawiam się nad włączeniem różnych diagramów UML.


title: Jak mam przetestować moją aplikację?

text: Zrobiłem prostą aplikację, która wyszukuje pliki i foldery na komputerze użytkownika. Ponieważ jestem studentem obecnie na pierwszym roku i nie mam żadnego formalnego szkolenia i złożyłem swoją aplikację podczas nauki C# i .Net framework, nie miałem wiedzy na temat testów jednostkowych i innych dobrych stosowanych metod testowania przez profesjonalistów. Chociaż większość mojego kodu działa poprawnie, czasami zgłasza wyjątki lub pojawia się inna nieoczekiwana sytuacja i kod się psuje. Mając na uwadze powyższe doświadczenia, nie sądzę, aby moja aplikacja była gotowa do wdrożenia, dlatego chciałbym przetestować moją aplikację w profesjonalny sposób i mieć pewność, że moja aplikacja jest wolna od błędów. Dlatego chcę zapytać tutaj profesjonalistów, aby mając na uwadze moją sytuację, jak powinienem rozpocząć testowanie mojej aplikacji. Jakie kroki powinienem wykonać, aby zapewnić jakość mojej aplikacji.


title: Testowanie jednostkowe w iOS — czy powinienem podzielić model danych na jego własną klasę?

text: Próbuję po raz pierwszy wypróbować test jednostkowy w nowej aktywności iOS do pracy. Uwielbiam pomysł testowania jednostkowego, ale zawsze uważam, że szczegóły są… niechlujne. Dostaję ogólne zasady – dużo o tym czytałem, więc chciałem zadać konkretne pytanie. Moja sytuacja: * Mam UITableView, który może mieć od 10 do 10 000 elementów. Chciałbym dokonać częściowego załadunku. Załaduj pierwsze 100 lub coś koło tego, a gdy użytkownik przewinie do połowy, załaduj następne 100. Albo coś w tym stylu. * Moje wywołania do DB są asyc (nie kontroluję tego, chociaż myślę, że mógłbym blokować i czekać na główny wątek, gdybym naprawdę chciał). Moją pierwszą myślą jest posiadanie NSMutableArray i funkcji do ładowania/aktualizowania danych w moim UIViewController. Muszę również śledzić, czy ładowanie danych zostało zakończone i czy dane są obecnie ponownie ładowane (ponieważ jest to wywołanie asynchroniczne). Zastanawiam się jednak, czy lepiej podzielić to na własną klasę do testowania? Nazwijmy to SmartMutableArray? Moje obawy to 1. Jeśli to zrobię, wymaga to większej liczby selektorów niż wcześniej. Muszę już utworzyć wywołanie zwrotne dla mojego wywołania do bazy danych, a teraz muszę utworzyć kolejne, aby mój UIViewController był powiadamiany o zakończeniu ładowania SmartMutbleArray. Myślę, że to sprawia, że mój kod jest trudniejszy do odczytania. 2. Ponieważ moja nowa tablica jest aktualizowana w tle, myślę, że muszę użyć `self performSelectorOnMainThread:@selector(addObjectsFromArray:) withObject:response.balances waitUntilDone:YES];`, aby zaktualizować nową tablicę w mojej nowej klasie SmartMutableArray. Co wydaje mi się dziwne, że ta klasa musi wiedzieć, że jest źródłem danych dla elementu interfejsu użytkownika. 3. Jeśli nie zerwę tego, muszę przetestować całe to ładowanie pośrednio, wywołując moje polecenia delegata UITableView. Zacząłem tworzyć nową klasę dla tej listy... ale jestem ciekaw, co ludzie z większym doświadczeniem myślą o czymś takim. Czy to przesada? Dzięki za wszelkie uwagi, przepraszam za długość. Daj mi jednak znać, jeśli brakuje mi jakichkolwiek przydatnych szczegółów.


title: Korzystasz z wielu repozytoriów Git zamiast jednego zawierającego wiele aplikacji z różnych zespołów?

text: Migruję 10-letnie duże repozytorium CVS do Git. Podział tego repozytorium z wieloma projektami na kilka Git wydawał się oczywisty. Ale decydenci są przyzwyczajeni do CVS, dlatego ich punkt widzenia jest pod wpływem filozofii CVS. Aby przekonać ich do migracji z jednego repozytorium CVS do różnych repozytoriów Git, muszę podać im kilka argumentów. Kiedy rozmawiam z kolegami pracującymi nad repozytorium Git od lat, mówią, że korzystanie z wielu repozytoriów Git jest sposobem na korzystanie z Git. Naprawdę nie wiem dlaczego (podają mi kilka pomysłów). Jestem nowicjuszem w tej dziedzinie, więc zadaję tutaj moje pytanie. **Jakie są argumenty za używaniem wielu repozytoriów Git zamiast jednego zawierającego różne aplikacje i biblioteki z różnych zespołów?** Wymieniłem już: * gałęzie/tagi wpływają na całe pliki repozytorium Git => zanieczyszczają inne projekty zespołowe * 4GB ogranicz rozmiar repozytorium Git, ale jest to błąd * adnotacja git może działać wolniej w _bloat_ repozytorium Git... **EDYTUJ:** * Eamon Nerbonne zauważył powiązane pytanie: Wybieranie pomiędzy jednym a wieloma projektami w repozytorium git? * Powód, dla którego kierownicy zespołu w końcu zaakceptowali podział: pojedyncze repozytorium Git (550 MB) wymagało 13 minut na sklonowanie w systemie Windows. * Repozytorium CVS _bloat_ podzielone na 100 repozytoriów Git: * każda martwa aplikacja w jednym repozytorium * każda ustabilizowana biblioteka w jednym repozytorium (kod źródłowy prawie nigdy się już nie zmienia) * powiązane aplikacje/biblioteki trzymane razem w jednym repozytorium * przeniesione duże pliki nie są używane do kompilacji (config...) do innych repozytoriów (Git nie lubi dużych plików) * pominął inne nieistotne pliki (`*.jar`, `*.pcb`, `*.dll`, `*.so`, ` *.backup` ...) * Pomyślnie zainstalowano narzędzie `repo` używane przez Android Open Source Project w celu obsługi wszystkich tych repozytoriów Git: * łatwa instalacja w systemie Linux * trudniejsza w systemie Windows ze względu na wymagania dotyczące natywnych dowiązań symbolicznych Cygwin i NTFS


title: Gdzie umieścić klasy modeli jednostek w przypadku korzystania z warstwy usługi danych?

text: Jeśli moje rozwiązanie ma zarówno projekt „dataservice”, jak i projekt „logika biznesowa”, gdzie należą modele jednostek, które reprezentują tabele bazy danych? Początkowo myślałem o umieszczeniu ich w warstwie dataservice, ale potem potrzebowałbym zduplikowanych modeli w warstwie logiki biznesowej, gdybym chciał zapewnić logikę wielokrotnego użytku zajmującą się lub zależnymi od danych z bazy danych. Umieszczenie modeli w projekcie logiki biznesowej zmusiłoby warstwę usług danych do uzależnienia od głównego projektu.


title: Niestandardowy silnik szablonów PHP

text: Zajmowałem się tworzeniem niestandardowego silnika szablonów PHP, który odpowiadałby moim potrzebom, a także aby uzyskać trochę więcej praktyki z PHP. To, co zrobiłem, to stworzenie klasy Template, która po prostu otrzymuje jako parametr konstruktora ścieżkę do pliku szablonu i ciąg znaków, który powinien być symbolem zastępczym dla zawartości stron. W takim przypadku plik szablonu jest plikiem HTML z kilkoma symbolami zastępczymi zapisanymi jako [placeholder]. Zostaną one wypełnione prawdziwą treścią przez inną klasę. Na przykład, [tytuł] powinien być wypełniony tytułem, [treść] treścią wybranej strony i tak dalej. Stworzyłem również klasę Page, która jako parametr konstruktora otrzymuje katalog stron, a następnie posiada metody określające, jakiej nazwy pliku ma użyć (wypełnia się tak jak lubimy przy inicjalizacji, podczas pracy z przyjaznym adresem URL najczęściej częstym sposobem, w jaki tego używam, jest ustawienie jako pierwszy element adresu URL) i metody, aby ustawić więcej danych jako pary ciągu znaków zastępczych i rzeczywistej zawartości. Moim jedynym problemem jest to, jak radzić sobie z tytułami i metatagami. Każda strona ma tytuł i zbiór metatagów. Moim jedynym sposobem poradzenia sobie z tym było utworzenie w różnych plikach jednej tablicy z tytułami i jednej tablicy z metatagami. Obydwa otrzymują jako indeks nazwę pliku strony. Na przykład $titles["home"] powinien być tytułem strony głównej, a $meta_tags["home"] powinien być kodem HTML dla metatagów strony głównej. Problem polega na tym, że jak tylko będzie dużo stron, będzie to miało jeden niepotrzebny koszt pamięci: system będzie ładował dla każdego żądania wszystkie tytuły i wszystkie metatagi, podczas gdy musi ładować tylko ten wymagany. Myślałem o użyciu bazy danych, ale wygląda na to, że zabicie jednej mrówki bombą atomową. Więc następną najlepszą rzeczą, o której pomyślałem, był XML. Jakie jest najlepsze rozwiązanie w takiej sytuacji? Użyj XML, użyj bazy danych MySQL lub innej metody? Jak już powiedziałem, wiem, że zaleca się korzystanie z silników szablonów, które są już dostępne, ponieważ są testowane wiele razy, są już stabilne i tak dalej, ale walczę z tymi rzeczami jako sposób na uzyskaj więcej praktyki w programowaniu w PHP. Z góry bardzo dziękuję za pomoc. Poza tym nie sądziłem, że jest to potrzebne do publikowania kodu, który napisałem, ale jeśli jakiś kod pomoże, proszę pytaj, a ja go wyślę.


title: Klasa C++ z tylko czystymi funkcjami wirtualnymi: jak to się nazywa?

text: Więc szukam pewnych danych wejściowych/konsensusu, jakiej terminologii powinniśmy używać do opisania czegoś, co wygląda tak: class Printable { public: virtual void printTo(Printer *) = 0; wirtualny podwójny getWidthInPoints() = 0; wirtualny podwójny getHeightInPoints() = 0; }; To jest klasa, która ma tylko czysto wirtualne metody. Każda klasa, która go dziedziczy, musi zaimplementować całość, tj. nie ma częściowej implementacji. Więc jak to się nazywa? Najczęściej widziałem dwie różne nazwy: 1) _Interfejs_ Używany w programowaniu Windows COM (być może pochodzi z IDL), jest słowem kluczowym zarówno w C#, jak i Javie, a także dyrektywą/słowo kluczowym kompilatora w Objective-C (ale nie jest ta sama rzecz). Słyszałem, że inżynierowie używają wyrażenia „interfejs” jako synonim „API”, ale przynajmniej w tym scenariuszu jest to jedna rzecz, podczas gdy interfejs API może składać się z więcej niż jednego. 2) _Protokół_ Widziałem to używane w różnych bibliotekach open-source, takich jak Bloomberg BSL i jest to dyrektywa/słowo kluczowe kompilatora w Objective-C, ale niekoniecznie musi być w hierarchii dziedziczenia. W szerszym znaczeniu informatycznym protokół jest formalną definicją wymiany informacji między dwiema stronami, takimi jak TCP i HTTP, ale ta definicja odnosi się również do powyższej klasy. Czy istnieje wyraźne rozróżnienie między nimi w C++, czy są one w zasadzie wymienne?


title: Dwóch szefów, obaj chcą innego sposobu realizacji

text: Podczas lunchu mój kolega, który ma kierownika (osobę bezpośrednio odpowiedzialną za projekt) i szefa BOSSa, został poproszony o rozwiązanie jednego problemu. Kierownik kłócił się z szefem o to, jak należy to rozwiązać. Oboje zgodzili się, że pójdą drogą kierownika. Kiedy mój kolega zaczął rozwiązywać problem, szef dzwoni i powiedział: „Robisz to po mojemu”. W takim razie, co byś zrobił?!


title: Co robi moduł python Codecs?

text: Właśnie przeczytałem dokumentację modułu Codecs, ale myślę, że moja wiedza/doświadczenie comp sci nie jest jeszcze wystarczająco głębokie, abym mógł to zrozumieć. Służy do radzenia sobie z kodowaniem/dekodowaniem, zwłaszcza Unicode, i chociaż dla wielu z was jest to kompletne i doskonałe wyjaśnienie, dla mnie jest to _naprawdę_ niejasne. W ogóle nie rozumiem, co to znaczy. Tekst jest tekstem jest tekstem w pliku .txt? A przynajmniej tak myślał ten amator. Czy ktoś może to wyjaśnić?


title: Jak zbudować klasy potomne jako konfiguracja rodzica?

text: Używam Codeigniter PHP Framework do tworzenia aplikacji internetowej, a podczas tworzenia strefy administracyjnej zakończyłem budowanie ogólnej klasy nadrzędnej o nazwie AdminController, która jest rozszerzona o klasy podrzędne do rozwijania moich stref administracyjnych. **Skróciłem swój kod, aby pokazać to, co naprawdę chcę pokazać** , mój kod wygląda mniej więcej tak: Klasa rodzica: class AdminController { protected $url_action = null; chronione $uprawnienia = null; protected $formulario_gestion = null; function __construct() { if ( empty( $this->permissions ) ) { throw new Exception( 'Brak określonych uprawnień' ); } if ( empty( $this->url_action ) ) { wyrzuć nowy wyjątek( 'Nie ma definitywnych działań url_action' ); } if ( empty( $this->formulario_gestion ) ) { wyrzuć nowy wyjątek( 'No se ha definido el formulario_gestion' ); } } public function create() { if ( ! $this->checkPermissions( $this->permissions, $this->user ) { redirect( base_url ); } $formulario = new $this->formulario_gestion( null ); $ formulario->setFormValues( $this->get_update_values() ); // Więcej kodu poniżej... } // Robię to, aby upewnić się, że nadpiszę public function get_update_values() { throw new Exception('Nie ma definitywnego get_update_values '); } // Więcej metod i rzeczy... Następnie używam mojej klasy potomnej, aby zainicjować wszystkie wartości wymagane w rodzicu, nadpisuję wszystkie funkcje, które muszę nadpisać, i idę: Child Class class Webs extends AdminController { function __construct() { // Inicjowanie wartości nadrzędnych: $this->permissions = 'webs'; $this->url_action = strtolower(__CLASS__) ; $this->formulario_gestion = 'FormularioWebs'; pa wynajem::__construct(); } // Nadpisywanie tego, co muszę nadpisać public function get_update_values() { $values = $array( 'field1' => 'value1' , 'field2' => 'value2' ); zwróć $wartości; } I to działa całkiem dobrze: wszystkie strony mają to samo zachowanie, a ja piszę tylko odpowiedni kod. **Mój problem** : To koszmar podczas budowania z nim całego CRUDa: skończyłem z wieloma właściwościami, których używam tylko w niektórych metodach i nie wiem, czy istnieje "standardowy" lub poprawny sposób robić to. Mam na myśli jakie są wady robienia tego w ten sposób? Jest poprawna? Nie lubię mieć tak wielu właściwości, które mają być używane tylko w metodzie, i nie wiem, jak je hermetyzować w sposób, w jaki tylko metoda go używa. Skończyło się na czymś w rodzaju kodu poniżej, ale tak naprawdę nie podoba mi się to, ponieważ nie wiesz w rodzicu, gdzie deklarowana jest wartość. Metoda w klasie nadrzędnej: public function show() { echo $this->var; } Metoda w klasie potomnej: public function show() { $this->vars = 'value' parent::show(); }


title: Scalanie około 15 małych repozytoriów Git z nieopcjonalnymi scentralizowanymi składnikami usług internetowych w jedno duże repozytorium

text: W scentralizowanym serwisie internetowym rozkładamy komponenty na różne małe repozytoria Git za pomocą modułów oprogramowania, np. moduł uwierzytelniania, moduł autoryzacji, moduł dostępu do danych itp. (obecnie około 15 repozytoriów) Dobrą rzeczą jest to, że łatwo jest zarządzać mniejszą bazą kodu, jednak nasza produktywność znacznie spadła, ponieważ trzeba wprowadzić sporo zmian zaktualizuj kilka repozytoriów jednocześnie. Ponadto wdrożenie jest trudniejsze, ponieważ zaangażowanych jest wiele wersji modułu, zawsze musimy pomyśleć o zależności. Rozważam scalenie wszystkich modułów z powrotem do jednego repozytorium, ponieważ * nasze usługi muszą wymagać istnienia wszystkich modułów, nie są one opcjonalne dla naszej usługi * nie jesteśmy dużym zespołem (w rzeczywistości 3 osoby) i koszty utrzymania zbyt wiele repozytoriów nie jest tego warte, wszystkie muszą mieć wiedzę na temat wszystkich baz kodu Co o tym sądzisz? Jakieś plusy i minusy, jeśli połączymy się w gigantyczne repozytorium?


title: Czy nowoczesny C++ zastępuje C#? Czy Microsoft zmusza programistów do przyjęcia C++?

text: Słyszę o popularności współczesnego C++ i mówię o migracji z powrotem do C++ z C# lub innych języków podobnych do C. Wiem o funkcjach C++11, ale chciałbym poznać Twoje doświadczenia, zwłaszcza od programistów, którzy przenieśli się z C# do C++. Co ważniejsze, czy Microsoft zmusza programistów do używania C++? Jeśli tak, dlaczego?


Mój profesor skomentował dzisiaj: "...Mają problemy z wydajnością systemu plików, a ponieważ są bardziej grafikami, poprosili nas, ludzi od systemów, o pomoc...". Czym dokładnie są „systemy komputerowe”? Co to znaczy być „człowiekiem od systemów”? A czym jest pasjonat „faceta od systemów”? Dla kontrastu, czym nie są systemy komputerowe? Co mogłoby znudzić „faceta od systemów”?


title: Jednorazowy przychód z powtarzającymi się kosztami: jak utrzymać aplikację w chmurze

text: Masz pomysł na oprogramowanie/aplikację/aplikację internetową/stronę internetową, którą chciałbyś poświęcić trochę wysiłku i wdrożyć. Twój pomysł korzysta z systemu w chmurze, aby wszystko działało, i myślisz, że możesz zarobić trochę pieniędzy, dystrybuując swój produkt i pobierając **niewielką** jednorazową opłatę. Ale jest problem: pierwszą rzeczą, z której zdajesz sobie sprawę, jest to, że pewnego dnia użytkownik korzystający z twojego systemu może zjeść wszystkie pieniądze, które ci dał, przez swoje pośrednie, powtarzające się niewielkie wydatki w chmurze. Jak byś zrobił matematykę, aby dowiedzieć się, czy twój pomysł jest wykonalny?


title: Aplikacja na iOS z dużą ilością tekstu

text: Właśnie zadałem pytanie na StackOverflow, ale myślę, że część tego należy tutaj, ponieważ pytania dotyczące wzorca projektowego są mile widziane przez faq. Oto moja sytuacja. Stworzyłem prawie całkowicie natywną aplikację na iOS. Ostatnia sekcja, którą muszę wdrożyć, to wszystkie zasady sportu, więc to dużo tekstu. Ma jeden główny poziom sekcji, podzielonych na podsekcje, zawierających dużo tekstu strukturalnego (akapitów, kilka zdjęć, listy punktowane/numerowane, tabele). Nie mam absolutnie żadnego problemu z kodowaniem, szukam tylko porady, jak ulepszyć i stworzyć najlepszy możliwy wzorzec projektowy dla mojej aplikacji. Mój pierwszy strzał (ostatni jak dotąd) to `UITableViewController` zawierający sekcje, wysyłający użytkownika do innego `UITableViewController` z podsekcjami wybranej sekcji, a następnie jeden _dziwny_ ostatni `UITableViewController` gdzie komórki zawierają `UITextViews` , nagłówki sekcji pomagają ustrukturyzować treść itp. Chciałbym otrzymać twoją radę, jak ulepszyć strukturę tej sekcji. Jestem doskonale gotowy do zniszczenia/odbudowania całości, naprawdę gubię się w moim projekcie tutaj. Jak powiedziałem na SO, zacząłem implementować `UIWebView` w `UIViewController`, pokazując stronę html z JQuery Mobile do wyświetlania treści i jest w porządku. Moje pytanie dotyczy bardziej 2 widoków prowadzących użytkownika do tej treści. Użyłem `UITableViewController`s, ponieważ to wydawało się najbardziej odpowiednie dla hierarchii strukturalnej, takiej jak ta. Ale nie wydaje się to najlepszym rozwiązaniem z punktu widzenia user experience.. **Jaką strukturę / "przepływ wyświetleń" / rodzaj prezentacji chciałbyś wdrożyć w mojej sytuacji?** Jak zawsze, jakakolwiek pomoc byłaby * *mile widziane! * * * Abyś mógł lepiej zrozumieć hierarchię, za pomocą prostego przykładu: -----> Sekcja 1 -----> Podsekcja 1.1 -----> Treść | -----> Podsekcja 1.2 -----> Treść | -----> Podrozdział 1.3 -----> Treść | | | UINavigationController -------> Sekcja 2 -----> Podsekcja 2.1 -----> Treść | -----> Podrozdział 2.2 -----> Treść | -----> Podrozdział 2.3 -----> Treść | -----> Podrozdział 2.4 -----> Treść | -----> Podrozdział 2.5 -----> Treść | -----> Sekcja 3 -----> Podrozdział 3.1 -----> Treść -----> Podrozdział 3.2 -----> Treść |----------- -------| |--------------------| |-------------| 1 UITableViewController 3 UITableViewControllers 10 UIViewControllers (3 wiersze) (z różnymi z liczbą wierszy UIWebView)


title: serwer i prośba o zrozumienie

text: Chcę wiedzieć, co robi serwer, aby uruchomić aplikację php. Poniżej jest to, co myślę: klient A typ www.blahblahblah.blah/ 1. Serwer rozwiązuje adres URL i katalog itp. 2. Serwer przechodzi do index.php 3. index.php ma w sobie klasę wzorca Singleton ze zmienną statyczną o nazwie instance . Czy teraz serwer przydziela pamięć tej zmiennej statycznej we własnej pamięci RAM, aby wszystkie żądania następujące po tym pierwszym używały tej samej zmiennej statycznej? LUB dla każdego nowego żądania serwer alokuje nową pamięć i ta nowa pamięć będzie miała przydzieloną nową przestrzeń dla tej zmiennej statycznej? Moje zamieszanie: jeśli każde żądanie jest uruchamiane we własnym obszarze pamięci, co to jest połączenie trwałe? Druga rzecz, nad którą się zastanawiam: czy mogę mieć program komputerowy, który stale wysyła specjalny klucz do mojej aplikacji internetowej, a moja aplikacja internetowa wysyła klucz w sposób ciągły, aby połączenie HTTP było pełne, a nie mniej? W ten sposób mogę potwierdzić, kto jest połączony z moją aplikacją jako klient, a kto jest połączony z INTERNETEM. Znam sesje, ale zmniejszają one połączenie http i wtedy istnieje szansa na spoofing i przejęcie sesji. Wiem, że możesz zabezpieczyć sesję, ale nadal moja aplikacja nie będzie wiedzieć, czy klient jest martwy, i może usunąć dane z sesji i poinformować innych, że klient blah jest odłączony.


title: Wpływ na wydajność braku implementacji relacji na poziomie bazy danych?

text: Wyobraźmy sobie model danych z klientami i fakturami. Istnieje relacja 1 do n między klientem a jego fakturami. Używamy ORM (jak Hibernate). Można jawnie zaimplementować relację 1-n (na przykład używając JPA) lub nie. Jeśli nie, to trzeba trochę więcej popracować, aby pobrać faktury. Dużo łatwiej jest jednak utrzymywać, ulepszać i rozwijać model danych aplikacji, w których relacje między obiektami nie są jawnie zaimplementowane w bazie danych. Moje pytanie brzmi, czy ktoś zauważył znaczący wpływ na wydajność, gdy nie wdrażał relacji w bazie danych?


title: Strategia/zasoby do pisania serwisów internetowych LISP?

text: Tło: Zamierzam napisać kilka w pełni funkcjonalnych usług internetowych w Common Lisp jako żart primaaprilisowy dla reszty zespołu programistów w mojej firmie. Są na to dwa elementy: odczytywanie informacji z/zapisywanie ich do bazy danych MySQL oraz odbieranie/przetwarzanie/odpowiadanie na żądania przez HTTP. (Właściwie jest trzecia część, pisanie automatycznych testów, ale mój partner w zbrodniach kontroli jakości zajmie się tą częścią.) Po pewnym wyszukiwaniu w Google znalazłem dobre źródło tutaj ( http://www.ymeme.com/creating- dynamic-websites-lisp-apache.html ), ale dziwię się, że jest pozornie tylko jeden przewodnik. Czy ktoś zna innych lub może podzielić się osobistymi doświadczeniami z pisaniem usług internetowych w CLisp?


title: Oszczędność kosztów przetwarzania w chmurze dla dużych przedsiębiorstw

text: Staram się zrozumieć, czy cloud computing jest przeznaczony dla małych i średnich firm CZY też dla dużych firm. Wyobraź sobie stronę internetową z bardzo dużą bazą użytkowników. Wymagania dotyczące przechowywania i przepustowości, a także liczba transakcji bazodanowych są niewiarygodnie wysokie. Witryna może zawierać filmy, muzykę, obrazy itp., Które utrzymują wysokie wymagania. Czy ma sens przebywanie w chmurze, gdy wiesz, że potrzebujesz ogromnych ilości pamięci masowej, przepustowości i GET, PUT itp. upraszanie? (Każda z tych zmiennych kosztuje w chmurze) CZY budowanie własnej infrastruktury ma sens? Widzę oszczędności kosztów przetwarzania w chmurze, jeśli prowadzisz małą firmę, ale jeśli mierzysz w kolejną wielką rzecz w Internecie, nie dostrzegam korzyści.


title: Co myślisz o pracy opartej głównie na weryfikacji koncepcji?

text: Pracuję jako programista w małej firmie programistycznej, której głównym zadaniem jest łączenie się między oddzielnymi aplikacjami, na przykład między systemem telefonii a systemem kontroli środowiska, między telewizorami IP a systemami hotelowymi itp. I wygląda na to, że jestem kandydat na nowe stanowisko w firmie, jako osoba, która wykonuje proof of concept nowego projektu interfejsu oraz prowadzi prace badawczo-rozwojowe w zakresie prototypowania. Jak myślisz, jakie byłyby plusy i minusy takiej pracy, biorąc pod uwagę głównie indywidualny postęp/regres osoby jako inżyniera oprogramowania? A jakie aspekty uważasz za niezbędne, aby osoba mogła postawić ją na takim stanowisku?


title: Czy referencje zerowe są naprawdę złe?

text: Słyszałem, że mówiono, że włączenie odwołań do wartości NULL w językach programowania jest „błędem miliarda dolarów”. Ale dlaczego? Jasne, mogą powodować NullReferenceExceptions, ale co z tego? Każdy element języka może być źródłem błędów, jeśli zostanie użyty niewłaściwie. A jaka jest alternatywa? Przypuszczam, że zamiast mówić tak: Customer c = Customer.GetByLastName("Goodman"); // zwraca null, jeśli nie zostanie znaleziony if (c != null) { Console.WriteLine(c.FirstName + " " + c.LastName + " jest super!"); } else { Console.WriteLine("Nie było klienta o nazwisku Goodman. Co za kiepski!"); } Można powiedzieć tak: if (Customer.ExistsWithLastName("Goodman")) { Customer c = Customer.GetByLastName("Goodman") // zgłasza błąd, jeśli nie zostanie znaleziony Console.WriteLine(c.FirstName + " " + c.LastName + „jest super!”); } else { Console.WriteLine("Nie było klienta o nazwisku Goodman. Co za kiepski!"); } Ale jak to jest lepsze? Tak czy inaczej, jeśli zapomnisz sprawdzić, czy klient istnieje, otrzymasz wyjątek. Przypuszczam, że CustomerNotFoundException jest nieco łatwiejszy do debugowania niż NullReferenceException ze względu na to, że jest bardziej opisowy. Czy to wszystko?


title: Czy istnieje kanoniczna książka o wzorcach projektowych?

text: Interesuje mnie nauka wzorców projektowych i chciałbym wiedzieć, jakie książki są uważane za najlepsze w nauce tego przedmiotu. Czy istnieje książka, która jest de facto standardem opisującym najlepsze praktyki, metodologie projektowania i inne przydatne informacje na temat wzorców projektowych? Co w tej książce czyni ją wyjątkową?


title: Ustalenie realistycznych oczekiwań co do terminów

text: Jestem kierownikiem technicznym małego zespołu. Jednym z głównych zadań na moim talerzu jest komunikacja z klientem. Szczególnie trudno jest mi dotrzymać terminów, ponieważ są one narzucone przez klienta i często nie jestem konsultowany. Zazwyczaj interakcja przebiega według następującego wzorca. Klient wymyśla funkcję, którą chce dodać, funkcję X. Funkcja X będzie dobrze wyglądać w przyszłotygodniowej wersji aplikacji, która będzie dostępna za około 6 dni roboczych. W tym momencie żądanie funkcji musi przejść przez zatwierdzenie i często istnieją inne zależności, z którymi należy się uporać. W końcu, N dni później, prośba o nową funkcję spływa do mojego zespołu. Nawet jeśli pierwotny termin (określony przez menedżera nie będącego deweloperem) był osiągalny, to już nie jest. Mój zespół jest obwiniany, ~~czuje się zniechęcony i panuje ogólna atmosfera porażki~~ , czuję się zniechęcony i pokonany. Oczywiście cały proces jest zepsuty. Niestety niewiele mogę zrobić, ponieważ nie mam tutaj władzy. Moje obecne podejście polega na delikatnym przypomnieniu klientowi o naszej dacie rozpoczęcia w porównaniu z ostatecznym terminem, zakresem funkcji itp. Wydaje mi się jednak, że robię wymówki. Czy byliście w podobnych sytuacjach? Co się dla ciebie sprawdziło/nie działa?


title: Math Major chce zostać inżynierem oprogramowania

text: Jestem specjalistą z matematyki, która byłaby dla mnie najlepszą dziedziną informatyki/inżynierii komputerowej, w której mógłbym zastosować moje umiejętności, których używałem na studiach matematycznych (tj. Algebra Liniowa, Analiza Rzeczywista, Teoria Liczb, Analiza Numeryczna , itp...) Dzięki


title: Jak defensywni powinniśmy być?

text: Uruchomiliśmy Pex nad pewnym kodem i pokazuje on kilka dobrych rzeczy (no cóż, złych, ale pokazuje je, zanim trafi do produkcji!). Jednak jedną z miłych rzeczy w Pex jest to, że niekoniecznie przestaje on próbować znajdować problemy. Jednym z obszarów, który znaleźliśmy, jest to, że podczas przekazywania ciągu nie sprawdzaliśmy pustych ciągów. Zmieniliśmy więc: if (inputString == null) na if (string.IsNullOrEmpty(inputString)) // *** To naprawiło początkowe problemy. Ale potem, kiedy ponownie uruchomiliśmy Pex, zdecydowaliśmy, że: inputString = "\0"; sprawiał problemy. A potem inputString = "\u0001"; Zdecydowaliśmy, że w przypadku napotkania `// ***` można użyć wartości domyślnych i że cieszymy się, widząc wyjątek spowodowany przez inne dziwne dane wejściowe (i radzimy sobie z nim). Czy to wystarczy?


title: Co robisz, aby mieć pewność, że robisz odpowiednie/wystarczające przerwy, jednocześnie unikając niepożądanych skutków ubocznych robienia przerw?

text: preambuła> Wydaje mi się, że programiści komputerowi są jedną z nielicznych grup ludzi, którzy faktycznie czerpią przyjemność z siedzenia przed komputerem przez długi czas. Większość ludzi w innych zawodach aktywnie nie lubi spędzać czasu przy komputerze i stara się go unikać (więc zakładam, że nie mają problemów z robieniem sobie przerw). Przynajmniej dla mnie posiadanie zewnętrznych wskazówek co do robienia przerw i jasne instrukcje, co robić z każdą przerwą (rozciągnij się, idź na spacer, zamknij oczy, spójrz w odległość najlepiej kilku km i skup się na odległych obiektach itp. ...), jest koniecznością. Do tej pory po prostu wymyślałem przerwy i narzędzia, aby je uzyskać w miarę postępów, w oparciu o to, co wygląda na informacje o niskiej szczegółowości znalezione w sieci (ogólne porady dotyczące ergonomii dla pracowników biurowych). Doprowadziło to do różnego rodzaju skutków ubocznych - utrata uwagi, gdy rozpraszam się, gdy chodzę, przerwy w przepływie z budzikami przerywającymi moje myśli i ludźmi wokół mnie, którzy zakładają, że mam mało pracy ze względu na częstotliwość chodzenia w porównaniu do wszystkich innych. /preamble> **tl;dr** * Robienie sobie przerw jest ważne * Mój wewnętrzny system robienia przerw nie działa, a te doraźne mają niepożądane skutki uboczne * Co robisz, aby mieć pewność, że robisz sobie odpowiednie przerwy? * Jak uniknąć niepożądanych skutków ubocznych, takich jak rozproszenie uwagi lub przerwanie przepływu pracy lub danie współpracownikom wrażenia, że spędzasz dużo czasu na wygłupianiu się?


title: Uruchom własny robot indeksujący, aby zaindeksować jedną konkretną witrynę, która ma wiele wpisów

text: Jakie języki byłyby w stanie poradzić sobie z pisaniem własnego robota sieciowego? Czy PHP poradzi sobie z tym? Jestem całkiem dobry w PHP (postępując zgodnie z najlepszymi praktykami itp.). Ale chciałbym mieć dobry powód, aby nauczyć się nowego języka, jeśli będę tego potrzebował. Chodzi o to, aby przeszukać jedną konkretną stronę internetową, która ma wiele wpisów, podobnie jak kanał RSS, ale nie oferuje tego kanału RSS witryny...


title: Czy to typowe, że dostawca usług internetowych udostępnia również biblioteki klienckie?

text: Moja firma buduje korporacyjną aplikację internetową Java i skłaniamy się ku używaniu GWT-RPC jako protokołu klient-serwer ze względu na wydajność. Jednak w przyszłości będziemy musieli zapewnić interfejs API dla innych systemów korporacyjnych, aby uzyskać dostęp do naszych danych. W tym celu myśleliśmy o usłudze sieciowej opartej na SOAP. Z mojego doświadczenia wynika, że komercyjni dostawcy aplikacji internetowych dla przedsiębiorstw dostarczają biblioteki klienckie (Java, .NET, C#, itp.). Czy generalnie tak jest? Pytam, bo jeśli tak, to po co zawracać sobie głowę używaniem SOAP lub REST lub jakiegokolwiek standardowego protokołu usług internetowych? Dlaczego nie stworzyć po prostu bibliotek klienckich, które komunikują się za pośrednictwem GWT-RPC?


title: Jak zbierać dane początkowe dla witryny z opiniami użytkowników produktów/usług?

text: Dane = informacje takie jak nazwa, adres lokalnych firm. Firmy, ich produkty, usługi itp. Gdy użytkownicy zaczną się angażować, sami mogą dodawać/edytować dane w stylu wikipedii. ponieważ jeśli początkowo nie ma danych, użytkownicy nie będą przyciągani, a jeśli nie ma użytkowników, nie będzie można rozszerzyć danych. Jakie są różne opcje ładowania początkowego z początkowym zestawem danych? \- Przeszukuj i znajduj informacje w różnych zasobach internetowych \- Zbieraj i wprowadzaj ręcznie \- Zatrudnij kolektory danych \- Jakieś miejsce do zakupu takich danych \- Jakieś inne?


title: Warunki zapytania repozytorium, zależności i DRY

text: Dla uproszczenia załóżmy, że aplikacja posiada `Konta` i `Użytkownicy`. Każde konto może mieć dowolną liczbę użytkowników. Istnieją również 3 konsumenci `UserRepository`: * Interfejs administratora, który może wyświetlać wszystkich użytkowników * Publiczny interfejs, który może wyświetlać wszystkich użytkowników * API uwierzytelnione przez konto, które powinno wyświetlać tylko swoich własnych użytkowników Zakładając, że `UserRepository` wygląda mniej więcej tak: class UsersRepository extends DatabaseAbstraction { private function query() { return $this->database()->select('users.*'); } funkcja publiczna getAll() { return $this->query()->exec(); } // WAŻNE: // Mnóstwo innych metod wyszukiwania, filtrowania, // łączenia innych tabel, porządkowania itp... } Mając na uwadze powyższy komentarz i konieczność abstrahowania warunków zapytań użytkownika, Jak mam sobie radzić odpytywanie użytkowników filtrujących według `identyfikator_konta`? Mogę sobie wyobrazić trzy możliwe drogi: ### 1\. Czy powinienem utworzyć `AccountUsersRepository`? class AccountUsersRepository extends UserRepository { funkcja publiczna __construct(Konto $konto) { $to->konto = $konto; } private function query() { return parent::query() ->where('account_id', '=', $this->account->id); } } _Ma to tę zaletę, że ogranicza powielanie metod `UsersRepository`, ale nie pasuje do niczego, co do tej pory czytałem o DDD (przy okazji, jestem nowicjuszem)_ ### 2\. Czy powinienem umieścić to jako metodę w `AccountsRepository`? class AccountsRepository extends DatabaseAbstraction { public function getAccountUsers(Account $account) { return $this->database() ->select('users.*') ->where('account_id', '=', $account->id) ->exec(); } } _Wymaga to zduplikowania wszystkich metod `UserRepository` i może wymagać innej warstwy `UserQuery`, która implementuje logikę zapytań w sposób łańcuchowy._ ### 3\. Czy powinienem wysłać zapytanie „UserRepository” z poziomu encji konta? class Konto extends Entity { public function getUsers() { return UserRepository::findByAccountId($this->id); } } _To dla mnie bardziej jak zbiorczy root, ale wprowadza zależność `UserRepository` od encji `Account`, co może naruszać kilka zasad._ ### 4\. A może zupełnie mi brakuje sensu? Może jest jeszcze lepsze rozwiązanie? **Przypisy:** Poza tym, że uprawnienia są problemem związanym z usługą, w moim rozumieniu nie powinny implementować zapytania SQL, ale pozostawić to repozytoriom, ponieważ mogą one nawet nie być oparte na SQL.


title: Dziedziczenie obiektów i parametry/typy zwracanych metod — proszę sprawdzić moją logikę

text: Przygotowuję się do testu i robię pytania ćwiczeniowe, a szczególnie tego nie jestem pewien, czy zrobiłem poprawnie: Dostajemy bardzo prosty diagram UML, aby zademonstrować dziedziczenie: mam nadzieję, że jest to jasne, pokazuje, że W dziedziczy po V i tak dnia: |-----T V <|----- W<|-----| |-----X<|----Z i ten kod: public X metoda1(){....} metoda2(nowa Y()); metoda2(metoda1()); metoda2(metoda3()); **Pytania i moje odpowiedzi:** 1. **P:** Jakie typy obiektów może faktycznie zwrócić metoda1? **A:** X i Z, ponieważ definicja metody zawiera X jako typ zwracany, a ponieważ Z jest rodzajem X, to również można je zwrócić. 2. **P:** Jaki może być typ parametru metody2? **A:** Ponieważ metoda2 w kodzie akceptuje Y, X i Z (jako zwrot z metody1), typem parametru musi być V lub W, ponieważ Y,X i Z dziedziczą po obu. 3. **P:** Jaki może być typ zwracanej metody3? **A:** Typ zwrotu metody 3 musi być V lub W, ponieważ byłoby to zgodne z odpowiedzią 2.


title: Jak mogę uzasadnić technologię nad inną? (Java przez .NET)

text: Pracujemy w firmie Java/.NET i mój zespół oraz planuję projekt dla klienta. Jednym z wymagań jest to, że projekt ma być wykonany w .NET. Pytałem o to wymaganie, a klient powiedział, że to nie ma znaczenia i że jeśli mam dobry powód, możemy użyć innej technologii. Ale muszę uzasadnić decyzję. Jako Project Manager/Analityk jestem zainteresowany wykonaniem projektu w Javie, ponieważ: * Zespół zna javę znacznie lepiej, jeśli chodzi o język i frameworki * Nie znam się na technologii .NET (i może moglibyśmy podjąć złe decyzje myślenie w sposób Java) * W firmie są inni ludzie, którzy mają większe umiejętności w .NET, ale mają inne projekty o wyższym priorytecie. Z doświadczenia jestem pewien, że jeśli użyjemy Javy, projekt będzie miał znacznie lepszą jakość. Ale te argumenty mogą być słabe z perspektywy klienta. Jak mogę uzasadnić wykonanie projektu w Javie? EDIT: Nie pytam, czy jedna technologia jest lepsza od drugiej. Pytanie „To nie jest wojna technologiczna”.


title: Jaka jest różnica między programistą freelancerem a programistą pracującym w firmie programistycznej?

text: Dział HR powiedział mi, że doświadczenie jako freelancer nie jest uważane za doświadczenie zawodowe. Jaki może być powód?


title: Ruby: Wielowątkowość CSV z danymi wyjściowymi

text: Mam skrypt napisany w języku Ruby, który przez ostatnie 2 godziny maksymalnie wykorzystywał rdzeń procesora Xeon mojego serwera. Ponieważ obecnie używa tylko jednego z czterech możliwych rdzeni, chcę spróbować przepisać skrypt, aby wykorzystać wszystkie cztery rdzenie. Mogę użyć metody .each_slice(n) na tablicy zawierającej moje dane, ale jestem ciekawy, jaki byłby wtedy najlepszy/najwydajniejszy sposób zapisania tych danych do pliku. Wygląda na to, że mam kilka opcji. 1. Przekaż obiekt plikowy do funkcji wywoływanych przez funkcję Thread.new (zakładam, że jest to dozwolone w ruby?) i poproś ich, aby pisali tak, jak uznają to za stosowne. 2. Niech każda funkcja przechowuje wyniki w tablicach, zwraca tablicę po zakończeniu i pozwala programowi głównemu na zapis na dysku. 3. Przekaż ten sam obiekt tablicy do każdego elementu i dodaj je do niego, a następnie posortuj. Zakładam, że chociaż 2 prawdopodobnie wymagałoby większej ilości pamięci, będzie to zdecydowanie najbardziej wydajna metoda. Czy istnieje inny sposób na osiągnięcie tego, co robię?


title: Architektura i technologie do tworzenia bezpiecznej, szybkiej, niezawodnej i łatwo skalowalnej aplikacji internetowej

text: ^ _Jeśli chodzi o konkretne pytania, przejdź do list poniżej_ Rozumiem, że to niejasny temat, ale proszę, zanim odwrócisz się w drugą stronę i zignorujesz mnie, wysłuchaj mnie. Obecnie robię research dla aplikacji internetowej (nie wiem, czy aplikacja jest właściwym słowem na to, ale na razie będę to kontynuował), że pewnego dnia może być potrzebne wszystko, co jest wymienione w tytule. Nic mnie nie wiąże. Oznacza to, że każdy język, system operacyjny i framework jest akceptowalny, ale tylko wtedy, gdy udowodni swoją przydatność. A jeśli zamierzasz powiedzieć, że skalowalność i szybkość zależą od kodu, który piszę dla tej aplikacji, to zgadzam się, ale po prostu staram się znaleźć coś, co później nie stanie mi na drodze. Sporo czytałem na ten temat, ale nadal nie mam jasnego obrazu, co odpowiada moim potrzebom, więc przychodzę do Ciebie, StackOverflow, aby udzielić mi wskazówek. Wiem, że wszyscy pewnie się zastanawiacie, co buduję, ale zapewniam was, że to nie ma znaczenia. Słyszałem jednak o _12-czynnikowej aplikacji_, jeśli masz jakieś podobne wytyczne lub co jest, aby zasugerować, proszę, śmiało. Aby Twoje odpowiedzi były jak najbardziej otwarte, nie zamierzam przedstawiać Ci moich doświadczeń dotyczących niczego, co zostało napisane w tym pytaniu. ^ _Skipperzy, zacznij tutaj_ Po pierwsze - wagi wymagań są prawdopodobnie takie (w skali 10): * Bezpieczeństwo - 10 * Szybkość - 5 * Niezawodność (współbieżność) - 7,5 * Skalowalność - 10 _Prędkość i współbieżność nie są najwyższy priorytet, w tym sensie, że program może intensywnie wykorzystywać procesor, a zatem powolny, i akceptować tylko niezbyt dużą liczbę jednoczesnych użytkowników, ale oba te czynniki muszą być poprawiane przez skalowanie systemu. moje pytania: * **Ile warstw powinna mieć aplikacja, aby była przyszłościowa i jak najlepiej spełniała powyższe wymagania?** Na razie mam na myśli wersję najpopularniejszą: 1. Całkowicie odseparowany front koniec, może to być strona internetowa lub aplikacja MMI, a nawet jedno i drugie. 2. Część komunikacji oprogramowania pośredniczącego między frontem a tyłem. Jest to prawdopodobnie serwer, który komunikuje się z interfejsem za pośrednictwem protokołu HTTP. Sposób obsługi komunikacji z zapleczem prawdopodobnie zależy od zaplecza. 3. Z tyłu. Coś, co obsługuje dane za pośrednictwem zasobów, takich jak DB itp., i wykonuje różne obliczenia na danych. Ta część oprogramowania, jako o najwyższym priorytecie, musi być później łatwo rozpowszechniana na wielu komputerach i nie ma żadnych znanych luk w zabezpieczeniach. Myślę, że idealnie, aby oprogramowanie pośredniczące wysyłało żądanie do kolejki, z której jeden z procesów zaplecza przyjmuje to żądanie, dzieli je na mniejsze części i umieszcza te części żądania z powrotem w tej samej kolejce, co żądanie początkowe, po jakie te części będą następnie obsługiwane przez inne procesy zaplecza. Coś *map-reduce*y, że tak powiem. * **Jakich frameworków, języków itp. powinny używać te warstwy?** 1. Zastosowane tu technologie nie są w tej chwili tak ważne, na razie możesz zignorować tę część 2. Wskazano mi na node.js dla ta część. Czy znacie jakieś lepsze alternatywy, albo macie jakieś powody, dla których powinienem (nie) używać node.js do tej konkretnej pracy. 3. Właściwie nie mam dobrego pomysłu, czego użyć do tej pracy, jest zbyt wiele opcji, więc proszę o kierowanie mnie. Ta część (i druga również, jak sądzę) zależy w dużej mierze od systemu operacyjnego, więc sugeruj dowolne systemy operacyjne wraz z technologiami/frameworkami. Początkowo wszystkie komputery (lub 1 na początek) obsługujące zaplecze będą maszynami wirtualnymi. Proszę podać sugestie dotyczące dowolnej części pytania, co do której uważasz, że posiadasz obszerną wiedzę i/lub doświadczenie. A także wskaż, czy czujesz, że jakakolwiek część obecnej konfiguracji oznacza natychmiastową (lub nawet odległą) porażkę, czy też pominąłem bardzo ważny aspekt do rozważenia. Nie szukam ostatecznej odpowiedzi, jak osiągnąć moje cele, ponieważ z pewnością nie ma takiej, ponieważ nie dostarczyłem Ci wszystkich wymaganych informacji. Szukam tylko rekomendacji i wskazówek, na co warto zwrócić uwagę. Miej też na uwadze, że nie jest to coś, co muszę zrobić szybko, sprzedać i pozwolić, aby przepisał to nowy właściciel (do czego, jak mi wielokrotnie mówiono, powinienem dążyć dla). Mam cały czas na świecie i naprawdę chcę się nauczyć robić coś naprawdę high-endowego. Poza tym przepraszam, jeśli mój język nie jest najlepszy, nie jestem tubylcem. W każdym razie. Z góry dziękuję każdemu, kto poświęci czas, aby mi tutaj pomóc. PS. Kiedy wydaje mi się, że wymyślę dobrą architekturę/projekt dla tego projektu, z pewnością uczynię go otwartym projektem i będę was informował o jego rozwoju. Tak jak w tym, co mogłeś mi powiedzieć wcześniej itp. _Z oczywistych powodów to samo pytanie zostało zamknięte na SO, ale czy nadal moglibyście mi pomóc?._


title: Jak wytłumaczyć OOP programiście Matlab?

text: Mam wielu przyjaciół, którzy wywodzą się z inżynierii elektrycznej / fizycznej / mechanicznej i są ciekawi, o co chodzi w "OOP". Wszyscy dość dobrze znają Matlaba, więc mają podstawowe przygotowanie programistyczne; ale bardzo trudno jest im pojąć złożony system typów, który może skorzystać z koncepcji wprowadzonych przez OOP. **Czy ktoś może zaproponować sposób, w jaki mógłbym spróbować im to wyjaśnić?** Sam nie znam Matlaba, więc mam problemy ze znalezieniem podobieństw. Myślę, że używanie prostych przykładów, takich jak kształty lub zwierzęta, jest zbyt abstrakcyjne dla tych inżynierów. Do tej pory próbowałem użyć interfejsu Matrix w porównaniu z implementacjami opartymi na tablicy / rzadkim / cokolwiek, ale to nie działało tak dobrze, prawdopodobnie dlatego, że różne typy macierzy są już dobrze obsługiwane w Matlab.


title: Jakieś dowody empiryczne na skuteczność CMMI?

text: Zastanawiam się, czy są jakieś badania, które badają skuteczność projektów oprogramowania w organizacjach zorientowanych na CMMI. Na przykład, czy organizacje CMMI są bardziej skłonne do zakończenia projektów na czas i/lub w ramach budżetu niż organizacje spoza CMMI? _Edytuj w celu wyjaśnienia:_ CMMI to skrót od „Capability Maturity Model Integration”. Został opracowany przez Instytut Inżynierii Oprogramowania na Uniwersytecie Carnegie-Mellon (SEI-CMU). Nie jest to _certyfikacja_ , ale są różne firmy, które będą "oceniać" Twoją organizację na różnych poziomach CMMI, takich jak poziom 2 i 3. (Uważam, że poziom 1 CMMI jest zwierzęcym, hobbesowskim, wolnym dla wszystkich, do którego nikt nie aspiruje Innymi słowy, każdy ma co najmniej poziom CMMI 1, nawet jeśli nigdy wcześniej nie słyszałeś o CMMI.) Zdecydowanie nie jestem ekspertem, ale wierzę, że organizację można ocenić pod kątem poziomów CMMI w różnych zakresach praca: tj. dostarczanie usług, tworzenie oprogramowania, foobaring itp. Moje pytanie koncentruje się na ocenie rozwoju oprogramowania: czy organizacja, która została oceniona na CMMI Level X dla projektów oprogramowania, ma większe szanse na ukończenie projektu oprogramowania na czas i w budżecie niż inna organizacja, która nie została oceniona do CMMI Level X? Jednak z powodu braku twardych danych na temat CMMI zorientowanych na oprogramowanie, byłbym zainteresowany wpływem, jaki oceny CMMI mają również na inne działania. Pierwotnie zadałem to pytanie, ponieważ widziałem różne badania prowadzone nad oprogramowaniem (np. eseje w The Mythical Man Month odnoszą się do licznych badań empirycznych, podobnie jak McConnell's Code Complete), więc wiem, że istnieją organizacje prowadzące badania empiryczne nad rozwojem oprogramowania .


title: Czy to wzór? Pełnomocnictwo/delegowanie interfejsu do istniejącej konkretnej implementacji

text: Od czasu do czasu piszę taki kod, gdy chcę zastąpić małe części istniejącej implementacji: interfejs publiczny IFoo { void Bar(); } public class Foo : IFoo { public void Bar() { } } public class ProxyFoo : IFoo { private IFoo _Implementation; public ProxyFoo (implementacja IFoo) { this._Implementation = implementacja; } #region Członkowie IFoo public void Bar() { this._Implementation.Bar(); } #endregion } Jest to znacznie mniejszy przykład niż rzeczywiste przypadki, w których użyłem tego wzorca, ale jeśli implementacja istniejącego interfejsu lub klasy abstrakcyjnej wymagałaby dużej ilości kodu, z których większość jest już napisana, ale muszę zmienić małą część zachowania, wtedy użyję tego wzorca. Czy to jest wzór czy anty wzór? Jeśli tak, czy ma nazwę i czy są jakieś dobrze znane plusy i minusy tego podejścia? Czy istnieje lepszy sposób na osiągnięcie tego samego wyniku? Przepisanie interfejsów i/lub konkretna implementacja nie jest zwykle opcją, ponieważ będzie dostarczane przez bibliotekę innej firmy.


title: Jaka jest korzyść z programowania obiektowego nad programowaniem proceduralnym?

text: Próbuję zrozumieć różnicę między językami proceduralnymi, takimi jak C, a językami obiektowymi, takimi jak C++. Nigdy nie używałem C++, ale rozmawiałem z przyjaciółmi o tym, jak je rozróżnić. Powiedziano mi, że C++ ma koncepcje obiektowe, a także tryby publiczne i prywatne do definiowania zmiennych: rzeczy, których C nie ma. Nigdy nie musiałem ich używać podczas tworzenia programów w Visual Basic.NET: jakie są z nich korzyści? Powiedziano mi również, że jeśli zmienna jest publiczna, można uzyskać do niej dostęp w dowolnym miejscu, ale nie jest jasne, czym różni się ona od zmiennej globalnej w języku takim jak C. Nie jest również jasne, jak zmienna prywatna różni się od zmiennej lokalnej. Inną rzeczą, o której słyszałem, jest to, że ze względów bezpieczeństwa, jeśli funkcja musi być dostępna, powinna być najpierw odziedziczona. Przykładem użycia jest to, że administrator powinien mieć tylko tyle praw, ile potrzebuje, a nie wszystko, ale wydaje się, że warunek będzie również działał: if ( login == "admin") { // wywołaj funkcję } Dlaczego to jest nieidealny? Biorąc pod uwagę, że wydaje się, że istnieje proceduralny sposób na zrobienie wszystkiego zorientowanego obiektowo, dlaczego miałbym przejmować się programowaniem zorientowanym obiektowo?


title: Co sprawia, że OOP jest „dobre”?

text: Jest dość oczywiste, że OOP jest dziś postrzegany jako swego rodzaju srebrna kula programowania. Na każdym kursie informatyki zapowiadane są zalety OOP. Chciałbym wiedzieć, dlaczego ludzie lubią OOP. Szczerze mówiąc, łączenie procedur, typów i struktur danych w jeden konglomerat wydaje mi się złe. Wolałbym widzieć dane jako zwykłe dane. Lubię myśleć, że przekażę właściwe dane przez funkcję i otrzymam właściwe dane wyjściowe, a nie muszę uważać, że dane są w stanie operować na sobie. Ponadto chcę wiedzieć, czy istnieją dobre przykłady solidnych programów napisanych specjalnie z lub bez OOP, które mają dostępny kod źródłowy.


title: Czym localStorage różni się od indexedDB?

text: localStorage i indexedDB są używane do przechowywania danych offline w HTML5. Jakie są ich kluczowe różnice i która z nich jest lepsza w jakich sytuacjach?


title: Wydajny algorytm znajdowania zbioru liczb w zakresie

text: Jeśli mam tablicę posortowanych liczb i każdy obiekt jest jedną z liczb lub mnożenia. Na przykład, jeśli posortowana tablica to `[1, 2, 7]`, to zestaw to `{1, 2, 7, 1*2, 1*7, 2*7, 1*2*7}`. Jak widać, jeśli w posortowanej tablicy jest n liczb, rozmiar zbioru to 2n-1. Moje pytanie brzmi, jak znaleźć dla danej posortowanej tablicy n liczb wszystkie obiekty w zestawie, aby obiekty znajdowały się w danym przedziale. Na przykład jeśli posortowana tablica to `[1, 2, 3 ... 19, 20]` jaki jest najbardziej wydajny algorytm do znajdowania obiektów większych niż 1000 i mniejszych niż 2500 (bez obliczania wszystkich 2n-1 obiektów )?