title: Czy struktura powinna zostać przebudowana na mniejsze struktury?

text: W jednym z projektów (w C) mam kod, który wygląda tak ( ** _nazwy są zaciemnione specjalnie dla pytania, aby nie podawać szczegółów projektu_** ): typedef struct Module_s { /* Te pola są parsowane przez f1() */ S1 *s11; S2 *s12; rozmiar_t n11; rozmiar_t n12; int i11; /* Te pola są analizowane przez f2() */ S2 *s21; S3 *s22; S4 *s23; znak *c24; /* Te pola są ustawiane przez f3() i później */ void *v31; bool b32; S5 s33[N]; bool b34; } Moduł_t; { /* Tylko do odczytu nagłówek pliku i * przeanalizuj pierwsze 5 pól, aby określić, jak załadować resztę. */ Moduł_t *moduł = f1(plik_wejściowy); /* Przeczytaj resztę pliku używając informacji ustawionych przez f1() * i określ, jak f3() ma ją wstępnie przetworzyć. */ f2(plik_wejściowy, moduł); /* Wstępne przetwarzanie pliku przy użyciu informacji dostarczonych przez f1() i f2(). */ f3(moduł); /* Przetwórz plik, korzystając z informacji dostarczonych przez f2() i f3(). */ f4(moduł); } Następnie pojawia się pytanie, czy dobrym posunięciem jest podzielenie `Module_t` na 3 mniejsze części, które będą zawierać odpowiadające sobie pola, ustawione przez każdą funkcję? Wtedy każda funkcja zaakceptuje i zwróci tylko mniejszą część `Module_t`, co prawdopodobnie jest dobre, ale może skomplikować dalszy rozwój, ponieważ połączenia stają się bardziej złożone — a utrzymywanie wszystkich zależnych pól w jednym miejscu wydaje się prostsze. Mam na myśli to, że: typedef struct SS1_s { /* Te pola są analizowane przez f1() */ S1 *s11; S2 *s12; rozmiar_t n11; rozmiar_t n12; int i11; } SS1_t; typedef struct SS2_s { /* Te pola są analizowane przez f2() */ S2 *s21; S3 *s22; S4 *s23; znak *c24; } SS2_t; typedef struct SS3_s { /* Te pola są ustawiane przez f3() i później */ void *v31; bool b32; S5 s33[N]; bool b34; } SS3_t; typedef struct Module_s { SS1_t ss1; SS2_t ss2; SS3_t ss3; } Moduł_t; { /* Tylko do odczytu nagłówek pliku i * przeanalizuj pierwsze 5 pól, aby określić, jak załadować resztę. */ SS1_t *ss1 = f1(plik_wejściowy); /* Przeczytaj resztę pliku używając informacji ustawionych przez f1() * i określ, jak f3() ma ją wstępnie przetworzyć. */ SS2_t *ss2 = f2(plik_wejściowy, ss1); /* Wstępne przetwarzanie pliku przy użyciu informacji dostarczonych przez f1() i f2(). */ SS3_t *ss3 = f3(ss1, ss2); /* Skomponuj moduł i * przetwórz plik używając informacji dostarczonych przez f2() i f3(). * Przechowuj ss1 również do wykorzystania w przyszłości. */ Moduł_t moduł = f4(ss1, ss2, ss3); } Czy zatem powinienem dokonać refaktoryzacji struktury na mniejsze podstruktury?


title: Gdzie powinna iść logika danych CMS

text: Mamy dużą witrynę internetową napisaną w `WebForms` i rozpoczęliśmy wdrażanie nowych modułów w MVC. Mamy niestandardowy CMS. Umieściłem strukturę danych do przechowywania danych CMS w klasie `BaseModel`. Teraz zastanawiam się, gdzie najlepiej umieścić logikę, która wywołuje menedżera danych CMS, aby uzyskać dane istotne dla strony. Z jednej strony mogę stworzyć `BaseModel`, który w swoim konstruktorze otrzymuje identyfikator strony i wywołuje menedżera CMS. Następnie zbuduj wszystkie modele na tym modelu. Z drugiej strony mogę zrobić to samo w `BaseController`. Nie mogę zdecydować, która jest bardziej słuszna, ponieważ nie wyobrażam sobie żadnej przewagi jednego nad drugim. Większość mojego doświadczenia dotyczy `WebForms`, więc zastanawiam się, jaki byłby bardziej ASP.NET MVC sposób umieszczania tej logiki.


title: Czy interfejsy API RESTful mają tendencję do zachęcania do anemicznych modeli domen?

text: Pracuję nad projektem, w którym staramy się zastosować zarówno projektowanie oparte na domenie, jak i REST w architekturze zorientowanej na usługi. Nie martwimy się o 100% zgodność z REST; prawdopodobnie lepiej byłoby powiedzieć, że próbujemy zbudować zorientowane na zasoby API HTTP (~poziom 2 modelu dojrzałości REST Richardsona). Niemniej jednak staramy się trzymać z daleka od używania żądań HTTP w stylu RPC, tj. próbujemy zaimplementować nasze czasowniki HTTP zgodnie z RFC2616, zamiast używać na przykład `POST` do wykonania `IsPostalAddressValid(...)`. Jednak nacisk na to wydaje się odbywać kosztem naszej próby zastosowania projektowania opartego na domenie. Używając tylko `GET`, `POST`, `PUT`, `DELETE` i kilku innych rzadko używanych metod, mamy tendencję do budowania usług CRUDdy, a usługi CRUDdy mają zwykle anemiczne modele domen. `POST`: Odbierz dane, zweryfikuj je, zrzuć do danych. `GET`: Pobierz dane, zwróć je. Nie ma tam prawdziwej logiki biznesowej. Używamy również komunikatów (zdarzeń) między usługami i wydaje mi się, że większość logiki biznesowej jest zbudowana wokół tego. Czy REST i DDD są na pewnym poziomie napięte? (A może coś tutaj nie rozumiem? Czy może robimy coś innego złego?) Czy można zbudować silny model domeny w architekturze zorientowanej na usługi, jednocześnie unikając wywołań HTTP w stylu RPC?


title: Twórz narzędzia do tworzenia aplikacji internetowych php, html, css, js

text: Jakie są zalecenia dotyczące narzędzia do budowania, które pozwoliłoby mi przesyłać zmiany na serwer WWW lub repozytorium i automatycznie minimalizować js i css, a nawet uruchamiać kompilator Closure w JavaScript? Nie martwię się o robienie czegokolwiek z kodem php poza aktualizacją z najnowszymi zmianami, chociaż w przyszłości chciałbym mieć automatycznie aktualizowany phpdoc. Zastanawiasz się tylko, czy istnieje sposób na zrobienie tego wszystkiego innego niż amalgamat skryptów, które działają lub muszą być wywoływane za każdym razem?


title: Grafika niskiego poziomu w Linuksie

text: W celach edukacyjnych chciałbym napisać aplikację w środowisku Linux, która może przetwarzać zdarzenia klawiatury i rysować grafikę bez ogromnych zależności, takich jak X czy SDL. Zakładam, że musi to być możliwe, ponieważ X i SDL są same w sobie tylko programami, więc muszą polegać na innych metodach właściwych środowisku. Czy to zrozumienie jest prawidłowe? Jeśli tak, to gdzie mógłbym nauczyć się pisać taki program? Moje ograniczone doświadczenie mówi mi, że wiązałoby się to z wykonywaniem wywołań jądra i/lub zapisywaniem do specjalnych plików; jednak nie udało mi się znaleźć żadnych samouczków na ten temat (nie jestem nawet pewien, co do Google). Ponadto, jeśli jest to istotne, używam Debiana Squeeze na Virtualbox. Użyłem płyty netinst bez pracy w sieci, więc obecnie nie ma na niej zbyt wielu zainstalowanych. Zainstaluję `gcc`, ale mam nadzieję, że nie dam rady nic więcej.


title: ponowne ładowanie klas singleton i zależności

text: Mam obiekt singletona. Jest to DAO, które wygląda trochę tak (kod pseudonimowy): class UsersDAO { public usersDAO init(string sDSN){ variable.sDSN = sDSN; zwróć to; } public array getUsers(){ //wykonaj zapytanie, aby pobrać użytkowników, przekształć w tablicę return aUsers; } } moje aplikacje tworzą instancję tego i używają go w całym kodzie, ale mam też inne DAO, które tego wymaga: class OrganisationsDAO { public OrganisationsDAO init(UsersDAO oUsersDAO,string sDSN){vari.sDSN = sDSN; zmienne.oUżytkownicyDAO = oUżytkownicyDAO; zwróć to; } tablica publiczna getUsersOrganisations(){ variable.aUsers = variable.oUsersDAO.getUsers(); //getOrganisations dla zwróconych użytkowników return aOrganisations; } } więc aby utworzyć obiekt OrganizationsDAO muszę przekazać mu UsersDAO. Na późniejszym etapie życia aplikacji muszę zaktualizować UsersDAO, aby zawierał funkcję `public user getUser(int userid)`. Zastanawiam się, czy istnieje sposób na przejście przez nowe UsersDAO do obiektów od niego zależnych, bez konieczności restartowania aplikacji. W tym przypadku aplikacja jest stroną internetową, a nie aplikacją komputerową.


title: Jaki jest cel RESTful URI dla metod POST/PUT/PATCH/DELETE?

text: W trakcie tworzenia frameworka aplikacji webowych, przez pewien czas zastanawiałem się nad pojęciem ścieżek RESTful. Gdybym chciał stworzyć m.in. nowy temat, mogę wysłać żądanie POST do /topics. Jego parametry mogą wyglądać następująco: `{ topic: { body: 'Body' } }` Jako takie, typ tworzonego zasobu można wywnioskować z parametrów. Ponieważ istnieje element najwyższego poziomu „topic”, możemy logicznie ustalić, że żądaniem jest utworzenie tematu. Dla mnie dziwne jest to, że tworzenie POST jest jedyną akcją, która wykracza poza pojęcie pojedynczego zasobu lub kolekcji. Zapewne nie jest. Oczywiście, dodajesz do kolekcji, ale w przeciwieństwie do powiedzenia „indeks GET”, nie pobierasz żadnej części tej kolekcji, a stan tej kolekcji w dużej mierze jest nieistotny. W przeciwieństwie do `GET`, `PUT/PATCH` lub `DELETE`, nie pobierasz pojedynczego elementu na podstawie identyfikatora. Tworzysz przedmiot, którego nie ma. Wymyśliłem usługę „master registrar”, która odpowiadałaby na wszystkie przychodzące żądania POST. Wyobraź sobie każdą formę od `POST`ing do `/`, z głównym rejestratorem określającym zamierzony zasób na podstawie parametrów i odraczającym usługi, które istnieją w celu utrwalenia zasobu na podstawie tych parametrów. W rzeczywistości dla każdego działania innego niż GET ścieżki stają się nieistotne. Nie wydają się mieć ważnego celu semantycznego. Użytkownik nie będzie podawać linku do adresu URL działania formularza. Nawet w przypadku „PUT”, „PATCH” lub „DELETE” Typ tworzonego lub modyfikowanego zasobu można wywnioskować z parametrów. Na przykład, gdybyśmy edytowali temat, a nie tworzyli, parametry mogłyby mieć postać `{ topic: { id: 1, body: 'New Body'} }`. Obecność identyfikatora w parametrach wskazuje, że dany temat już istnieje i należy go pobrać przede wszystkim. Nie wiem, czy to jest RESTful, czy nie. Niezależnie od tego nie rozumiem, dlaczego takie podejście jest nieważne lub niewskazane. Biorąc jednak pod uwagę moją ostrożność i naiwność, chciałbym wiedzieć, dlaczego tak jest.


title: Ile danych powinno być wymagane w żądaniu do serwisu internetowego?

text: Otrzymując dane od klientów, ile danych, które im dostarczyłeś, powinieneś od nich żądać? Na przykład, gdy klienci zamawiają produkt w serwisie internetowym, czy wystarczy podać kod produktu? Inną alternatywą byłoby wymaganie kodu produktu, nazwy produktu i ceny produktu ect. Zawsze budowałem usługi sieciowe w poprzedni sposób, z minimalną ilością danych zwracanych do mnie, jednak właśnie korzystam z innej usługi sieciowej, która wymaga ogromnej większości danych zwracanych do nich. Jakie są zalety drugiego sposobu?


title: Zaprojektowanie algorytmu raportującego postęp

text: Mam algorytm iteracyjny i chcę wydrukować postęp. Jednak mogę również chcieć, aby _nie_ drukować żadnych informacji, ani drukować ich w inny sposób, albo wykonywać inną logikę. W języku obiektowym wykonałbym następujące rozwiązania: **Rozwiązanie 1: metoda wirtualna** ma klasę algorytmu MyAlgoClass, która implementuje algorytm. Klasa implementuje również wirtualną metodę reportIteration(iterInfo), która jest pusta i może być ponownie zaimplementowana. Podklasę MyAlgoClass i zastąp reportIteration, aby robiła to, co powinna. Takie rozwiązanie pozwala na przenoszenie dodatkowych informacji (np. jednostki pliku) w reimplementowanej klasie. Nie podoba mi się ta metoda, ponieważ łączy dwie funkcjonalności, które mogą być niepowiązane, ale w aplikacjach GUI może być w porządku. **Rozwiązanie 2: wzorzec obserwatora** klasa algorytmu posiada metodę register(Observer), przechowuje listę zarejestrowanych obserwatorów i dba o wywołanie notyfikacji() na każdym z nich. Observer::notify() potrzebuje sposobu na uzyskanie informacji od podmiotu, więc albo ma dwa parametry, jeden z podmiotem, a drugi z danymi, które podmiot może przekazać, albo tylko podmiot i obserwator są teraz odpowiedzialni zapytania, aby pobrać odpowiednie informacje. **Rozwiązanie 3: wywołania zwrotne** Zwykle postrzegam metodę wywołania zwrotnego jako lekkiego obserwatora. Zamiast przekazywać obiekt, przekazujesz wywołanie zwrotne, które może być zwykłą funkcją, ale także metodą instancji w tych językach, które na to pozwalają (na przykład w pythonie możesz, ponieważ przekazanie metody instancji pozostanie powiązane z instancją). C++ jednak na to nie pozwala, ponieważ jeśli przekażesz wskaźnik do metody instancji, `to` nie zostanie zdefiniowane. Proszę mnie poprawić w tym zakresie, mój C++ jest dość stary. Problem z wywołaniami zwrotnymi polega na tym, że zazwyczaj musisz przekazać je razem z danymi, z którymi chcesz wywołać wywołanie zwrotne. Wywołania zwrotne nie przechowują stanu, więc musisz przekazać zarówno wywołanie zwrotne, jak i stan do „Tematu”, aby znaleźć go podczas wykonywania wywołania zwrotnego, wraz z wszelkimi dodatkowymi danymi, które „Temat” może dostarczyć o zgłaszanym zdarzeniu. **Pytanie** Moje pytanie dotyczy faktu, że muszę zaimplementować problem otwierający w języku, który nie jest zorientowany obiektowo, czyli Fortran 95, i walczę ze swoim zwykłym rozumowaniem, które opiera się na założeniach i stylu Pythona. Myślę, że w Fortranie koncepcja jest podobna do C, z dodatkowym problemem, że w C można przechowywać wskaźnik funkcji, podczas gdy w Fortranie 95 można go tylko przekazywać. Czy masz jakieś uwagi, sugestie, wskazówki i dziwactwa w tym zakresie (w C, C++, Fortran i python, ale także w każdym innym języku, aby mieć porównanie funkcji językowych, które można wykorzystać w tym zakresie) o tym, jak zaprojektować algorytm, który musi raportować postęp do jakiejś zewnętrznej jednostki, używając stanu zarówno z algorytmu, jak i zewnętrznej jednostki ?


title: proponowany algorytm i reprezentacja algorytmu

text: Jaka jest różnica między niejednoznacznością w proponowanym algorytmie a niejednoznacznością w reprezentacji algorytmu? Przeprowadziłem pewne badania i odkryłem, że niejednoznaczność w reprezentacji algorytmu ma miejsce wtedy, gdy reprezentacja może być zrozumiana przez grupę ludzi i niejasna dla innej grupy, np. laik i programista.


title: Jakiego oprogramowania do testów porównawczych użyjesz do oceny wydajności swojego sprzętu programistycznego?

text: Otrzymałem zadanie oceny nowego komputera dla naszego zespołu programistów, który ma tylko nieznacznie lepszą specyfikację niż nasze obecne modele. Czy ktoś mógłby polecić odpowiednie oprogramowanie do benchmarkingu, które byłoby przydatne do emulowania typowych zadań programistycznych?


title: Czy są zapachy architektury?

text: W sieci jest mnóstwo zasobów, które odnoszą się do zapachów kodu i wymieniają je. Jednak nigdy nie widziałem informacji na temat _zapachów architektonicznych_. Czy jest to gdzieś zdefiniowane i czy jest dostępna lista? Czy przeprowadzono jakieś formalne badania nad wadami architektury i ich wpływem na szybkość projektu, wady itp.? **Edytuj:** Tak naprawdę nie szukałem listy w odpowiedziach, ale dokumentacji (w sieci lub w książce) o zapachach architektury.


title: Którą odpowiedź http zwracasz na trafienie z adresu IP umieszczonego na czarnej liście?

text: Używam http:BL do blokowania złych adresów IP przed dostępem do mojej witryny. Jeśli złośliwy adres IP (spamer w komentarzach) próbuje trafić na stronę, po prostu `wychodzę` ze skryptu sieciowego, który niejawnie zwraca odpowiedź `200 OK`. Inne odpowiedzi, które mogę zwrócić: 404 — Nie znaleziono? Jeśli zwrócę 404, może roboty pomyślą „to strata czasu, przejdźmy do ataku na inną witrynę”, co zmniejszyłoby obciążenie witryny (obecnie otrzymuję około 2 trafień spamowych na sekundę). Jednak * Niechętnie zwracam kody 404 na adresy URL, które w normalnych okolicznościach _można_ znaleźć. * Nie jestem pewien, czy roboty spamujące mogą „marnować czas”. tj. Dlaczego twórca botów miałby zawracać sobie głowę kodowaniem błędów 404, skoro i tak po prostu zaatakował sieć? 401 Nieautoryzowany? Blokowanie złego adresu IP to nie to samo, co „zasób wymaga uwierzytelnienia użytkownika 1) który nie został jeszcze dostarczony lub 2) który został dostarczony, ale testy autoryzacji nie powiodły się” * * * Ogólnie uważam, że „odpowiadam na złe roboty zgodnie z właściwym protokołem http” daje złoczyńcom przewagę. W tym sensie, że gram zgodnie z zasadami, podczas gdy one nie (trochę jak Wielka Brytania w UE – ha, ha). W niektóre dni czuję, że powinienem zrobić coś sprytnego, aby odwrócić te boty. W inne dni po prostu myślę, że nie powinienem brać tego do siebie i po prostu je ignorować. Zaakceptowanie go jako równorzędne w trakcie prowadzenia strony internetowej. Nie wiem - jakie są twoje myśli? Jak reagujesz, gdy wiesz, że to zły adres IP?


title: Czy żartowali, kiedy nazwali PHP?

text: PHP oznacza: > PHP: Hypertext Preprocessor To pętla rekurencyjna, jeśli się nie mylę. Czy twórca PHP miał to na myśli, kiedy nazwał PHP? Czy to jedyny język, w którym nazwa zawiera jakąś fałszywą gramatykę, pisownię lub fonetykę?


title: Umiejętności wymagane od starszego programisty ActionScript/Flex

text: Chcę przenieść moją wiedzę dotyczącą ActionScript na wyższy poziom i mam problem ze znalezieniem tego, czego potrzeba, aby zostać starszym programistą AS. Z moich poszukiwań wynika to, co do tej pory wymyśliłem: * Tworzenie komponentów * Debugowanie/profilowanie użycia pamięci * Specyficzne użycie OOP * Prawidłowe użycie kodu * Dostęp do zdalnych danych * Struktury architektury Flex * Cykl życia komponentów To są tylko te tematy, które udało mi się znaleźć. Zasoby dotyczące opanowania tych tematów były bardzo trudne do zdobycia (tj. Jakie są typowe wzorce projektowe AS itp.). Może po prostu nie szukam poprawnie, ale jakakolwiek pomoc tutaj byłaby bardzo wdzięczna. Skupiam się na rozwoju AS specyficznych dla Flex. Obecnie znalazłem tutaj i oto najbardziej podobne pytania SO, jakie udało mi się znaleźć. Jakakolwiek pomoc byłaby mile widziana, choć szukam konkretnych przykładów. * _to pytanie zostało po raz pierwszy zadane przy przepełnieniu stosu i poproszono o przeniesienie tutaj_


title: Jak najlepiej zorganizować nasze testy jednostkowe

text: Przez lata zbudowaliśmy znaczną liczbę testów jednostkowych dla naszego głównego programu. Kilka tysięcy. Problem polega na tym, że nie mamy jasnego pojęcia, jakie mamy testy, ponieważ jest ich tak wiele. I to jest problem, ponieważ nie wiemy, gdzie jesteśmy słabi na testach (ani gdzie mamy duplikaty). Nasza aplikacja to silnik raportowania. Możesz więc mieć szablon, który służy do testowania parsowania (czy odczytujemy wszystkie właściwości tabeli), scalania danych (czy zachowaliśmy prawidłowe właściwości tabeli w scaleniu), formatowania końcowej strony (czy tabela jest poprawnie umieszczona na stronie ) i/lub format wyjściowy (czy utworzony plik DOCX jest poprawny). Dodaj do tego to, co musimy przetestować. Weź dopełnienie wokół komórki tabeli (do projektowania raportu używamy programów Word, Excel i PowerPoint). Musimy przetestować wypełnienie w poprzek podziału strony, dla tabeli wewnątrz komórki, komórek scalonych w pionie, komórek scalonych w poziomie, komórki scalonej w pionie i poziomie, która zawiera tabelę z komórkami scalonymi w pionie i poziomie w tabeli wewnętrznej, gdzie ta tabela łamie się na stronie. Więc do jakiej kategorii należy ten test? Dopełnienie tabeli, podziały stron, komórki zagnieżdżone, komórki scalone w pionie, komórki scalone w poziomie lub coś innego? A jak dokumentujemy te kategorie, nazywamy testy jednostkowe itp.? **Aktualizacja:** wiele osób sugerowało użycie narzędzi do sprawdzania, czy mamy pełne pokrycie. Niestety ma to ograniczone zastosowanie w naszym przypadku, ponieważ błędy zwykle wynikają z określonych kombinacji, więc jest to kod, który został przetestowany w całości, ale nie w tej kombinacji. Na przykład wczoraj mieliśmy klienta, który uruchomił zakładkę programu Word na końcu pętli forEach w swoim szablonie (dokumencie programu Word) i zakończył ją na początku następnej pętli forEach. To wszystko używało kodu, który ma przeciwko nim testy jednostkowe, ale nie myśleliśmy, że kombinacja szablonu rozszerzającego zakładkę zaczyna się 25 razy, a potem kończy 10 razy (dwie pętle forEach miały różną liczbę wierszy).


title: Strategie komentowania w C# i asp.net web api

text: Pracowałem nad projektem ASP.NET Web Api 2 jako ćwiczeniem edukacyjnym i zastanawiałem się, jaka jest norma dotycząca komentowania. Używam wzorca Repozytorium/Usługa i wszystko jest bardzo rozłączne, co skutkuje posiadaniem dużej liczby klas, których przeznaczenie jest dość jasne. Nazywam również moje zmienne w taki sposób, aby same się wyjaśniały. To sprawia, że zastanawiam się, co właściwie powinienem komentować w tym scenariuszu. * Czy powinienem po prostu trzymać się podsumowań zajęć (nawet jeśli sama klasa nie wymaga wyjaśnień)? * A co z metodami oczywistymi? * Czy klasy danych / podmiotów gospodarczych wymagają podsumowania? * A co z interfejsami? Aby nadać nieco więcej kontekstu, oto jedna z moich klas repozytorium, która zapewnia funkcjonalność CRUD: public class UserRepository : RepositoryBase<User, decimal> { private readonly ShortStuffContext _context; public UserRepository (kontekst ShortStuffContext) { _context = kontekst; } public override IEnumerable<Użytkownik> GetAll() { return _context.Users.BuildUser(); } public override User GetById(identyfikator dziesiętny) { return _context.Users.FirstOrDefault(u => u.Id == id).BuildUser(); } public override CreateStatus<dziesiętny> Create(Eencja użytkownika) { if (_context.Users.Any(u => u.Id == entity.Id)) { return new CreateStatus<dziesiętny> { status = CreateStatusEnum.Conflict }; } var user = new Data.Entities.User(); user.InjectFrom<SmartConventionInjection>(encja); _kontekst.Użytkownicy.Dodaj(użytkownik); _context.SaveChanges(); return new CreateStatus<decimal> { status = CreateStatusEnum.Created, Id = user.Id }; } public override UpdateStatus Update(encja użytkownika) { var dbUser = _context.Users.FirstOrDefault(u => u.Id == entity.Id) .InjectFrom<NotNullInjection>(entity); if (dbUser != null) { var changeTrackerUser = _context.ChangeTracker.Entries<Data.Entities.User>() .FirstOrDefault(u => u.Entity.Id == entity.Id); zmieńTrackerUser.CurrentValues.SetValues(dbUser); if (_context.SaveChanges() == 0) { return UpdateStatus.NoChange; } return UpdateStatus.Updated; } return UpdateStatus.NotFound; } public override void Usuń(identyfikator dziesiętny) { var user = _context.Users.FirstOrDefault(u => u.Id == id); _kontekst.Użytkownicy.Usuń(użytkownik); _context.SaveChanges(); } } Czy więc w takiej klasie warto umieścić podsumowanie typu „Zapewnia funkcjonalność CRUD dla encji danych użytkownika” (a następnie powtórzyć to podsumowanie dla każdego innego repozytorium), czy nie? A co z komentarzami do metod lub komentarzami wbudowanymi? Edycja: Mój projekt jest na Github. Wiem o dodawaniu komentarzy do bardziej złożonych metod i planuję wkrótce dodać komentarze do klas Extensions i ValueInjecter (które przechowują zdecydowanie najbardziej złożony kod). Poza tym bardzo mile widziane są wszelkie porady dotyczące tego, gdzie umieszczać komentarze.


title: Wzorzec delegata do pobierania danych vs. za pomocą prostych seterów

text: Rozważam użycie wzorca Delegate, aby uzyskać pewne dane niezbędne do operacji. Istnieje kilka różnych danych, które algorytm musi uruchomić, ale wszystkie mają wartości domyślne, których można użyć, jeśli nie są jawnie ustawione. Gdybym miał użyć wzorca delegata, zdefiniowałbym interfejs, który definiuje funkcję dla każdej informacji, której algorytm używałby następnie do pobierania danych zgodnie z potrzebami. Inną opcją, którą widzę, jest ustawienie ustawiaczy w obiekcie algorytmu, aby te właściwości można było ustawić jawnie, zamiast czekać na żądanie za pośrednictwem wzorca delegata. Korzystanie z wzorca delegatów ma wiele zalet, ale wydaje mi się, że wiele z nich tak naprawdę nie ma zastosowania do mojej sytuacji. Jedną z największych rzeczy jest to, że eliminuje potrzebę tworzenia wyspecjalizowanych podklas obiektu, ale w moim przypadku użycie seterów również tę potrzebę eliminuje. Ponadto wzorzec delegata umożliwia ponowne użycie delegatów, takie jak „konfiguracje”. Jeśli używam ustawiaczy, wszystko będzie musiało być jawnie ustawione przy każdej rekonfiguracji (zamiast tylko zmieniać delegatów). Zdecydowanie skłaniałbym się ku używaniu wzorca delegatów, moim jedynym problemem jest to, że jest to publiczny interfejs, z którego będą korzystać osoby, które niekoniecznie są zaznajomione z wzorcem. Uważam, że używanie seterów byłoby bardziej naturalnym sposobem na zrobienie tego dla kogoś bez znajomości wzorców projektowych. **Bardzo prosty przykład** tego, co próbuję zrobić, będzie następujący: Mam algorytm, który określi, czy określony zakres znaków występuje w ciągu. Konfigurowalne opcje algorytmu to: * Pierwszy znak (np. "k" ) * Ostatni znak (np. "p" spowoduje wyszukanie k,l,m,n,o i p) * liczba znaków spoza zakresu trzeba dopasować Więc jeśli mam ciąg "przepełnienie stosu" wyszukiwanie z zakresem znaków "k-p" wymagający dopasowania co najmniej 4 znaków, powinien zwrócić true, ponieważ zawiera "k", "o", "l" i „o”. Przy użyciu wzorca delegata wyglądałoby to tak (niekoniecznie najbardziej wydajne): char startRange = delegate.startChar(); char endRange = delegat.endChar(); int targetCount = delegate.charCount(); int currentCount = 0; for( char c in targetString ) { if( c >= startRange && c <= endRange ) { currentCount++; if( currentCount == targetCount ) return true; } } return false; W przeciwnym razie algorytm wymagałby zdefiniowania funkcji i zmiennych składowych w celu ustawienia i przechowywania tych wartości. Algorytm wyglądałby tak. int currentCount = 0; for( char c in targetString ) { if( c >= mStartRange && c <= mEndRange ) { currentCount++; if( currentCount == mTargetCount ) return true; } } return false; Zmienne mogą być często zmieniane lub nie, i na pewno będzie można ponownie wykorzystać te konfiguracje zmiennych. Czy są jakieś zalety wzorca delegatów, których mi brakuje? Czy są jakieś wady używania seterów, których mi brakuje? Jakieś inne uwagi lub sugestie? Dziękuję!!


title: oprogramowanie infrastrukturalne/technologie do tworzenia usług internetowych

text: [Edycja: Dzięki S.Lott za podpowiedzi] Tworzę serwis internetowy od podstaw. Usługa może mieć potencjał 10 000 żądań dziennie. Właściwie, szczerze mówiąc, wymagania nie są tak jasne na tym etapie projektu. To, czego chce zespół zarządzający, to zbudować coś i sprawić, by działało. Jednak ma potencjał, aby stać się większy, więc muszę dobrze odłożyć *podstawę*. Postanowiłem 1. Użyć Tomcata 6.0 jako serwera aplikacji 2. Użyć Apache Axis2 jako silnika serwisu WWW (Zainstaluj go w Tomcat) 3. Użyć ??? do implementacji usługi sieciowej 4. Użyj Hibernate do dostępu do bazy danych Punkt 3 jest nieco rozmyty, nie jestem pewien, czy powinienem używać jax-ws, jaxb lub spring lub ejb, czy po prostu POJO do wdrożenia usługi. Dla osób, które korzystały z tych technologii, która z nich jest łatwa w użyciu, która jest łatwa w utrzymaniu, a która jest łatwa do skalowania? Dzięki, Sarah


title: Pytanie dotyczące znaku towarowego: nazwanie aplikacji po rzeczowniku pospolitym, gdy używa go aplikacja z innego sklepu

text: Oto mój scenariusz z wymyślonymi nazwami: duża firma o nazwie Supersoft ogłosiła, że za około 3 miesiące wyda aplikację na Androida o nazwie „Supersoft Metronome” (gdzie Metronome jest dość powszechnym rzeczownikiem). Chcę nazwać moją nową aplikację na iPhone'a (zauważ, że druga aplikacja jest na Androida) "Metronome" i jestem gotowy do wydania za tydzień. Czy powinienem zmienić nazwę mojej aplikacji? Czy inaczej wpadnę w kłopoty prawne? Obie aplikacje należą do tej samej kategorii programu. Kupiłem już powiązaną nazwę domeny, zapłaciłem za grafikę i zaprojektowałem moją aplikację wokół tej nazwy, więc naprawdę nie chcę jej teraz zmieniać. Rozważałem rozszerzenie nazwy na coś w rodzaju „Metronome Music Editor”. Czy to by mnie chroniło?


title: CA1819: Właściwości nie powinny zwracać tablic. Czy dzieje się tak tylko w przypadku tablic? Jeśli tak, dlaczego?

text: Mam pytanie dotyczące ostrzeżenia o wydajności CA1819 msdn. Zasada jest taka: Tablice zwracane przez właściwości nie są chronione przed zapisem, nawet jeśli właściwość jest tylko do odczytu. Aby zabezpieczyć tablicę przed manipulacją, właściwość musi zwrócić kopię tablicy. Zazwyczaj użytkownicy nie rozumieją negatywnych skutków wywołania takiej właściwości. W szczególności mogą używać właściwości jako właściwości indeksowanej. Rozumiem zasadę. Chcę wiedzieć, czy dzieje się tak tylko z tablicami? Jeśli tak, dlaczego?


title: czy mogę użyć XML dla AJAX w witrynie stworzonej w HTML5?

text: Jestem nowy w programowaniu internetowym i właśnie zacząłem uczyć się XML i AJAX. Tworzę witrynę z grami społecznościowymi dla mojego projektu na uczelni. Jestem zdezorientowany w momencie używania XML dla AJAX w HTML5. Ponieważ XHTML jest zastępowany przez HTML5, czy można używać XML, czy powinienem wybrać JSON (nic nie wiem o JSON, ale to właśnie znalazłem w odpowiedziach w Internecie na pytanie dotyczące wyboru między JSON i XML). Moją preferencją jest XML, ponieważ znajduje się w moim programie nauczania, ale chcę się upewnić, że XML i HTML5 nie będą powodować konfliktów.


title: Czy testowanie kontekstowe jest odpowiednie dla wszystkich projektów?

text: Jedyne, czego nigdzie nie mogę znaleźć, to: czy to podejście ogranicza się do niekrytycznego oprogramowania? Ponieważ w krytycznych (lub po prostu wtedy, gdy klient chce, abyśmy przestrzegali jego zasad) nie mamy swobody w testowaniu i po prostu przestrzegamy procedur. Czy mam rację?


title: Jak przetestować/odtworzyć Heisenbug, prawdopodobnie w związku z usługą Multimedia Class Scheduler?

text: ## Problem Szukam błędu w aplikacji internetowej związanej z wielokrotnym przesyłaniem za pomocą filmu/apletu Flash. Czasami pasek postępu, który jest używany w aplecie Flash do wskazywania postępu przesyłania pliku, odczytuje ponad 100% dla postępu i powoduje zatrzymanie całego systemu przesyłania. Oprócz błędów logicznych związanych z resztą tego kodu, próba odtworzenia tego błędu w celu śledzenia wykonania i debugowania jest sama w sobie wyczynem. To Heisenbug i widziałem go tylko raz na około dwa dni próbowania. Maszyny innych deweloperów mogą go odtwarzać z większą regularnością. Odtworzyłem go tylko raz, po ponownym uruchomieniu po zmianie klucza rejestru na `SystemResponsiveness`, ponieważ mój komputer korzysta z systemu Windows Server 2008 R2. Ten klucz rejestru kontroluje priorytet procesora dla aplikacji multimedialnych. Windows Server 2008 R2 ustawia ten klucz na `100` (nadając aplikacjom multimedialnym bardzo niski priorytet), podczas gdy ja ustawiam mój na `20`, ponieważ jest to ustawienie w przypadku instalacji Windows 7 na komputerze stacjonarnym. Wszystkie inne maszyny deweloperskie, które mogą odtworzyć ten problem, mają ustawioną domyślną wartość „Responsiveness” na 100. Kiedy ustawię „Responsiveness” z powrotem na wartość „100”, od razu zauważyłem ten problem. Jednak odtworzenie problemu jest nadal niekonsekwentne. ## Moja teoria Wychodzę z założenia, że ten błąd, ponieważ dotyczy Flasha, jest powiązany z kluczem rejestru `SystemResponsiveness`, jak opisano w dokumentacji Microsoft dla usługi Multimedia Class Scheduler Service, która jest podsystemem multimediów w systemach Windows 7 i Windows 2008 R2. Ustawiając czas reakcji na 100, multimedia, takie jak „filmy” Flash (którym jest ten przesyłający) mogą napotkać problemy, a to staje się problemem synchronizacji/przerwania dla przesyłającego, co z kolei powoduje pojawienie się innych błędów. ## Jak testować? Teraz próbuję wymyślić sposób na przetestowanie tej teorii. Myślę, że muszę mieć proces w tle, aby określić zużycie procesora na 100% (na 4 rdzeniach), a następnie spróbować użyć programu do przesyłania. Usługi działające w tle/nie-multimedialne powinny powodować gorsze działanie takich rzeczy jak Flash i powinienem napotkać problemy. **edytuj** Zdecydowałem się przeprowadzić test obciążenia procesora, aby określić wykorzystanie procesora mojego systemu na 100% - poza spowolnieniem mojej maszyny do indeksowania, błąd się nie ujawnił. Ten Heisenbug naprawdę wymyka się reprodukcji. ## Moje dochodzenie Jednak nie jestem pewien, czy jest to właściwe podejście do testowania mojej teorii, więc zastanawiam się, czy ktoś ma jakiś wgląd w śledzenie problemów związanych z MMCSS?


title: Jak nazwać funkcję zagnieżdżoną?

text: Kiedy masz funkcję, która otacza inną w Scali. Jak nazywasz funkcję zagnieżdżoną? Znalazłem to: def factorial(i:Int): Int = { def fact(i:Int, accumulator:Int): Int = {if (i <= 1) accumulator else fact(i - 1, i * accumulator) } fact(i, 1) } Zwykle używam po prostu _do_, ponieważ jest krótsze, ogólne i wyraźne. Ale czy istnieje lepszy sposób lub konwencja nazewnictwa dla funkcji zagnieżdżonych? def mojaFunkcja() = { def do(i:Int) = { ... } do(1) }


title: Czy jest jakaś różnica między kontrolą niestandardową a kontrolą użytkownika w .NET?

text: Jak stwierdzono w pytaniu, czy istnieje jakaś różnica w znaczeniu tych dwóch w odniesieniu do formantów platformy .NET. A może są sobie aliasami?


title: Co sądzisz o języku F#?

text: Co sądzisz o języku F#? Chciałbym się dowiedzieć, jakie są pozytywne i negatywne punkty. Jakie masz doświadczenia z tym językiem? Kiedy ktoś powinien lub nie powinien używać F#? Zobacz też: F# w Microsoft Research


title: Czy powinienem zawracać sobie głowę nauką małych lub niszowych języków?

text: Jeśli przeglądasz pytania dotyczące kodu golfowego na StackExchange, zauważysz mnóstwo niestandardowych, ale rzeczywistych języków (np. nie-mózgowych), takich jak F#, Scala, R, J i Clojure. Odwiedzając ich strony internetowe, niektóre języki wyglądają interesująco, rozwiązując problemy w dowolnym języku, którego już używasz. Jednak jest kodowanie w wolnym czasie i kodowanie dla pieniędzy. Najbliżej prawdy o tym, kto używa danego języka, jest indeks TIOBE, który nie wymienia żadnego z powyższych języków w pierwszej dziesiątce. Co sprawia, że zastanawiam się, czy kiedykolwiek ich użyję. Czy powinienem zawracać sobie głowę nauką niektórych małych języków niszowych? Nie wygląda na to, żebym zarabiał pieniądze, a niektórzy prawdopodobnie i tak poniosą porażkę.


title: Jak wyrozumiały musisz być dla nowych pracowników?

text: Od niedawna mamy w naszym zespole nowego programistę. Przyspieszamy go i zaczyna to wszystko dość szybko, ale nowy programista oznacza nowe (zagraniczne) style kodowania i sposoby rozwiązywania problemów. To trochę małostkowe, zacząć marudzić o stylach kodowania na pierwszych trzech zajęciach, które koduje, ale jak wyrozumiali jesteście, gdy macie do czynienia z nowymi programistami? Czy pozwalasz im się mieszać i zwracasz na to uwagę później? A może natychmiast władasz berłem nietolerancji? Kiedy wyznaczasz granicę, a jeśli nie, to dlaczego? _PS Nowy koleś, jeśli to czytasz: świetnie sobie radzisz, tak trzymaj ;)_ **Edytuj:** Zaakceptowałem odpowiedź, która uzyskała najwięcej głosów, ponieważ większość odpowiedzi ma ten sam komunikat: Bądź miły, ale powiedz im jak najszybciej!


title: Jak zarządzać wątkami w C++?

text: Używamy `pthread` do zarządzania wątkami w systemach opartych na C. pthread jest generalnie kompilowalny przez kompilator C++ (jak g++). Jednak jakie są lepsze sposoby abstrakcji dla wątków w C++? Ponadto, aby dowolny system działał w systemie wielowątkowym, ważne jest również, aby zabezpieczyć wątki. Jakie są standardowe biblioteki, które wymagają alternatywy (instalacji), aby były bezpieczne wątkowo, czy też są niebezpieczne dla środowisk wielowątkowych? Czy inteligentne wskaźniki, szablony wymagają specjalnych środków, aby były bezpieczne? Jakie są najlepsze praktyki zarządzania wątkami w C++?


title: Gdzie znaleźć popularne skróty baz danych w języku hiszpańskim?

text: Wykonuję małą pracę pro bono dla organizacji w Ameryce Środkowej. Nieźle sobie radzę z hiszpańskim, a moje kontakty są bardzo płynne, ale nie są to ludzie techniczni. Nawet jeśli _nie_ nie obchodzi, co nazywam niektórymi polami w bazie danych, _I_ nadal chcę zrobić tak czysty schemat, jak to tylko możliwe, i chciałbym wiedzieć, jakie są typowe skróty nazw pól / zmiennych w języku hiszpańskim. Rozumiem, że skróty i konwencje nazewnictwa są całkowicie osobiste. **Nie** proszę o "poprawny" lub "najlepszy" sposób skracania nazw obiektów bazy danych. Szukam tylko odniesień do list typowych skrótów, które byłyby łatwo rozpoznawalne przez kompetentnego technicznie native speakera języka hiszpańskiego. Uważam, że jestem przyzwoitym googlerem, ale w tym nie miałem szczęścia. Na przykład w mojej firmie (gdzie angielski jest językiem podstawowym) „Data” jest zawsze skracana do „DT”, „Code” do „CD”, „Item” do „IT” itd. To łatwe dla tłumów IT pracownicy tymczasowi, którzy obracają się w różnych projektach, aby dowiedzieć się, że „DT” oznacza „Date”, „YR” dla „Roku” lub „TN” dla „Transakcja” bez konieczności sprawdzania oficjalnej listy skrótów.


title: Certyfikaty MS dla studentów nieinformatycznych

text: To może wydawać się głupim pytaniem, ale przynajmniej dla mnie jest ważne i ciekawie cię usłyszeć. Jestem programistą .NET 4 lata temu, jeszcze zanim poszedłem na studia, obecnie zdobywam MCTS w tworzeniu stron internetowych, a niektórzy z nich powiedzieli mi, że jest to bezcenne dla mojej pozycji, nie jestem i nie chciałbym i tak być studentem informatyki, tylko dlatego, że wierzę, że w dziedzinie IT wiedzę można zdobyć z doświadczenia i samokształcenia (poprzez książki i filmy), wiem, że wielu studentów informatyki (przynajmniej w moim regionie) walczy tylko dla dobra dyplomu i zdobycia pracy, nie więcej... Obecnie nie mogę się doczekać ukończenia mojej ścieżki w zakresie certyfikacji MS i posiadania MCPD, czy to naprawdę, że powinieneś być informatykiem, aby uzyskać certyfikat? czy to ma dla Ciebie sens, że studenci spoza informatyki nigdy nie potrzebują tych certyfikatów?


title: Kiedy zatrzymać dziedziczenie?

text: Dawno temu zadałem na Stack Overflow pytanie o dziedziczenie. Powiedziałem, że projektuję silnik szachowy w stylu OOP. Więc dziedziczę wszystkie moje kawałki z klasy abstrakcyjnej Piece, ale dziedziczenie nadal trwa. Pokażę kodem public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} Programiści znaleźli mój projekt trochę ponad inżynierią i zasugerowali, aby usunąć kolorowe klasy elementów i zachować kolor elementu jako element właściwości poniżej. public abstract class Piece { public Color Color { get; ustawić; } public abstract void MakeMove(); public abstract void TakeBackMove(); } W ten sposób pionek może poznać swój kolor. Po wdrożeniu zauważyłem, że moja implementacja wygląda jak poniżej. public abstract class Pawn: Piece { public override void MakeMove() { if (this.Color == Color.White) { } else { } } public override void TakeBackMove() { if (this.Color == Color.White) { } else { } } } Teraz widzę, że trzymam właściwość color powodującą instrukcje if w implementacjach. To sprawia, że czuję, że w hierarchii dziedziczenia potrzebujemy określonych elementów kolorystycznych. Czy w takim przypadku miałbyś klasy takie jak WhitePawn, BlackPawn, czy mógłbyś przejść do projektowania zachowując właściwość Color? Nie widziałem takiego problemu jak chciałbyś zacząć projektować? Zachować właściwość Color lub mieć rozwiązanie dziedziczenia ? **Edytuj:** Chcę określić, że mój przykład może nie do końca pasować do przykładu z życia. Więc zanim spróbujesz odgadnąć szczegóły implementacji, skoncentruj się na pytaniu. Właściwie pytam po prostu, czy użycie właściwości Color spowoduje, że instrukcje if lepiej będą używać dziedziczenia?


title: projekt parsera do obsługi bardzo dużych plików

text: Napisałem program, który rejestruje komunikaty protokołu między aplikacją a urządzeniem sprzętowym, który dopasowuje każde żądanie aplikacji do każdej odpowiedzi sprzętowej. Jest tak, abym mógł później usunąć sprzęt, podłączyć aplikację „odtwarzającą” do aplikacji głównej i czekać na żądanie aplikacji oraz odpowiedzieć dopasowaną kopią komunikatu odpowiedzi wymaganego sprzętu. Moja aplikacja do odtwarzania zapisuje dopasowane żądanie/odpowiedź na liście (przy użyciu C++ std::list). Działa to dobrze na małej sesji interakcji. Moim problemem jest teraz to, że muszę być w stanie wykorzystać powtórkę podczas długiej, długiej sesji. W mojej obecnej implementacji program odtwarzający w końcu zużywa całą dostępną pamięć na moim komputerze i ulega awarii. Potrzebuję więc pewnego rodzaju spojrzenia w przyszłość - a nie analizowania całej sesji za jednym razem. Czy ktoś może coś zasugerować, jak zacząć?


title: HTML, CSS i trochę JavaScript... co dalej?

text: Właśnie ukończyłem kurs front-end web development. Teraz mam podstawową wiedzę na temat tego, czego potrzeba, aby strona internetowa była ładna i minimalnie funkcjonalna. Teraz wiem też (ledwo), jak połączyć się z api przez AJAX. Nie wiem, co dalej. Wiem, że chcę się dowiedzieć, jak tworzyć aplikacje internetowe do współpracy w czasie rzeczywistym. node.JS? Kurs online? Czego powinien nauczyć się początkujący, aby rozpocząć tworzenie oprogramowania do współpracy w czasie rzeczywistym?


title: @Przestarzałe od wersji x.y w JavaDoc

text: To pytanie i odpowiedzi na nie są przydatne, ale niewystarczające dla mojego problemu. Moje pytanie brzmi, czy chcę dodać plik javadoc jako _@Przestarzały Od wersji x.y, zastąpiony przez {@link SomeClass}_ w pliku javadoc mojego bieżącego pliku, to jaka powinna być wersja nr. zamiast x.y ?? Niech moja aktualna wersja to 1.2, a po sprawdzeniu CVS będzie 1.3


title: Dlaczego wciąż aktywnie rozwijane są słabo pisane języki?

text: Zastanawiam się, dlaczego wciąż aktywnie rozwijane są słabo pisane języki. Na przykład, jaką korzyść można odnieść z możliwości napisania $someVar = 1; (...) // Jakiś fragment kodu $someVar = 'SomeText'; zamiast używać znacznie innej, mocno wpisanej wersji int someInt = 1; (...) string JakiśString = 'JakiśTekst'; To prawda, że w drugim przykładzie trzeba zadeklarować dodatkową zmienną, ale czy to naprawdę boli? Czy wszystkie języki nie powinny dążyć do silnego typowania, ponieważ wymusza to bezpieczeństwo typów w czasie kompilacji, unikając w ten sposób pewnych pułapek w rzutowaniu typów?


title: Dlaczego nie używamy klasy i jej statycznych członków do robienia tego, co robi singleton?

text: W Javie, C++, Objective C, C# i wszystkich innych podobnych językach OOP, dlaczego nie użyjemy klasy ze statycznymi metodami i zmiennymi, zamiast przechodzić przez składnię singletona, mając do czynienia z różnymi scenariuszami?


title: Która technika szacowania historii użytkownika jest lepsza?

text: Znalazłem dwie techniki szacowania historyjek użytkownika: 1. na podstawie rozmiaru historii, który jest bez jednostek 2. na podstawie szacowanego czasu, który jest mierzony liczbą dni Pierwsza wykorzystuje względne porównanie między historiami, aby wywnioskować czas, niezależny od doświadczenia programisty, podczas gdy drugi zależy od doświadczenia programisty. Próbowałem pierwszego, co jest dobre, ale uważam, że drugi jest bardziej przyjazny dla programistów i chcę zobaczyć wady i zalety każdego z nich z praktycznego doświadczenia. Dowolny pomysł?


title: Jak programista może ocenić efektywność swojego przepływu pracy?

text: To pytanie zaprzątało mi głowę chyba od 10 lat. Odkąd zacząłem zarabiać na życie programowaniem. Widziałem wiele dyskusji na temat dobrego dopasowania, rozpraszania uwagi, przebywania w strefie itp. Ale nie widziałem linków do niektórych informacji/badań, które mogłyby dać obiektywną miarę/narzędzie do samooceny, aby zrozumieć, jak naprawdę sobie radzisz . Ciągle mnie denerwuje to, że wydaje mi się, że nie spędzam wystarczająco dużo czasu na kodowaniu, a efektywne godziny pracy to nie 8 z 8, ale mniej, a niektóre dni są nawet bardzo nieefektywne, dokładnie tak jak w tym artykule. Istnieje kilka wskaźników wyrażonych jako wiersze kodu dziennie, niektóre źródła podające 1,5 są dobre, a niektóre wskazujące 500 dziennie to normalne, ale to znowu jest całkowicie niepoprawna metryka, o ile widzę. Więc pod koniec dnia masz zadanie, wykonujesz je, ale część czasu ulatnia się w taki sposób, jak „co robiłem”. E-maile, po prostu wpatrywanie się w kod, myślenie, malowanie mentalnego obrazu kodu w twojej głowie, unoszenie się gdzieś, przemyślenie, w jaki sposób można by to zrobić bardziej efektywnie itp. Z tego powodu nigdy nie jestem pewien, czy muszę to zrobić coś JAK NAJSZYBCIEJ, żeby utrzymać podwyżki, czy jestem paranoikiem, czy to po prostu normalne. Jedyną w połowie dobrą miarą, jaką do tej pory znalazłem, jest obserwowanie ilości kodu, który inni programiści produkują w porównaniu z kodem, który tworzę. A to zwykle krąży wokół tej samej liczby. Ale kiedy patrzę na mój kod lub inny kod, wciąż mam wrażenie, że można to zrobić 10x szybciej. Z drugiej strony, przetwarzanie kodu nie działa lub wydaje się powodować wypalenie, jeśli nie jest odpowiednio obsługiwane. Czy znasz dobre podejście do samooceny, aby sprawdzić, czy jesteś nieskuteczny/skuteczny? Jak oceniasz pracę, którą wykonałeś?


title: Jak radzić sobie ze zmiennymi podczas wyodrębniania metod do mniejszych metod?

text: To abstrakcyjne pytanie wyjaśniające koncepcję refaktoryzacji w języku ruby. Załóżmy w prawdziwym świecie, że w metodzie Klasa mebli i Refinish byłoby znacznie więcej zmiennych i metod. Mam klasę o nazwie Meble. Ma metodę o nazwie ''refurnish(VarnishToUse, TimeToTake)''. Ta metoda ma lakier_koszt = Varnish(VarnishToUse).price * TimeToTake Chcę wyodrębnić kalkulację kosztów do def Cena lakieru * TimeToTake end wtedy klasa Meble może mieć po prostu: def Refurnish(VarnishToUse) lakier_cost = VarnishCost(VarnishToUse) end Jak to zrobić Przekazuję VarnishToUse do VarnishCost? Czy metoda powinna być def VarnishCost(Varnish) ... end, czy powinienem ustawić zmienną instancji `@varnish = VarnishToUse` w klasie Refinish, a następnie oczekiwać, że zmienna instancji będzie dostępna w metodzie VarnishCost, jak pokazałem powyżej? Czy to ma znaczenie, jeśli inna metoda jest prywatna? chroniony? Chcę zminimalizować użycie zmiennych i wielu obowiązków dla klasy (SRP).


title: Odpowiednie słownictwo pomagające początkującym programistom

text: Często pomagam początkującym programistom; wyjaśnianie, dlaczego ich kod nie działa, gdy pytają, sugerując rozwiązania i tym podobne. Ludzie, którym pomagam, mają formalną edukację programistyczną z modułu pierwszego roku w języku Java, ale czuję, że nie mogę się z nimi zbyt dobrze porozumieć. Na przykład: można napisać funkcję, ale nie rozumieć, dlaczego nie jest ona wykonywana, nie zdając sobie sprawy, że zapomniano ją wywołać. Jeśli używam wyrażeń takich jak `"(make a) call (to) function/it"` i `"pass it the..."` Otrzymuję puste spojrzenia. Mój normalny proces polegałby wtedy na znalezieniu miejsca w ich kodzie, w którym wywołują funkcję z języka i powiedzenie im, że mogą wywoływać własne funkcje w taki sam sposób, w jaki nazywali tę inną funkcję. Czasami nawet to staje się puste. **Czy istnieją inne elementy słownictwa, które są bardziej odpowiednie (lepsze do?) pomagania początkującym programistom? Czy to nie jest kwestia komunikacji?**


title: Dlaczego język miałby pozwalać programiście na obsługę dzielenia przez zero?

text: Dzieje się tak na przykład w JavaScript, że dzielenie przez zero nie jest obsługiwane przez sam język. Czy jest ku temu uzasadniony powód? Postrzegam to jako bardzo podstawowy wyjątek, z którym język powinien sobie poradzić (obsługują nawet 0/0 jako NaN NaN). > lub wyciągnij pierwiastek kwadratowy z liczby ujemnej lub użyj operatorów arytmetycznych > z nienumerycznymi operandami, których nie można przekonwertować na liczby.


title: Najlepszy sposób tworzenia stron internetowych w języku JavaScript w Netbeans (wdrożenie na gorąco)

text: Zaczynam tworzyć Javascript i jako początkujący w JavaScript popełniam wiele błędów. Sposób, w jaki się rozwijam, jest bardzo nieproduktywny, ponieważ każdy błąd, który naprawię, muszę zamknąć Glassfish, przebudować aplikację i ponownie ją wdrożyć. Moja aplikacja to back-end Java z usługami REST i Html, JavaScript, CSS dla frontendu. Całość spakowana jest w pliku .ear. W tej chwili pracuję tylko z frontendem, ale muszę wykonać cały proces, aby zaktualizować pliki. Moje pytanie brzmi ... czy istnieje lepszy sposób na zrobienie tego? Czy ktoś może powiedzieć, jak pracujecie w podobnej konfiguracji, aby wykonywać codzienny rozwój?


title: Czy możliwe jest sprawne przechowywanie w pamięci wszystkich możliwych numerów telefonów?

text: Biorąc pod uwagę standardowy format numerów telefonów w Ameryce Północnej: (Area Code) Exchange - Abonent, zbiór możliwych numerów wynosi około 6 miliardów. Jednak efektywne rozbicie węzłów na sekcje wymienione powyżej dałoby mniej niż 12000 odrębnych węzłów, które można zorganizować w grupy, aby uzyskać wszystkie możliwe liczby. Wydaje się, że problem został już rozwiązany. Czy zrobiłoby to za pomocą wykresu czy drzewa?


title: Czego programiści Business Intelligence (BI) szukaliby w przeglądach kodu?

text: Pozwolę sobie poprzedzić to stwierdzeniem, że **_nie_** jestem programistą Business Intelligence (BI). Jestem programistą .NET i mam tylko mgliste pojęcie o tym, czym jest i obejmuje BI. Byłem głosicielem bezpiecznego cyklu życia rozwoju w naszej firmie, a ostatnio przekonałem resztę zespołu programistów, że powinniśmy przeprowadzać wzajemne recenzje, w tym... * Przeglądy wymagań * Przeglądy kodu * Przeglądy architektury/projektu * Przeglądy dokumentacji Zespół .NET robi przeglądy kodu, a my szukamy różnych rzeczy - ogólny przegląd: * Utrzymanie (przejrzysty projekt, odpowiednio udokumentowane, itp.) * Przejrzystość kodu (standardowe wytyczne dotyczące kodowania / nazewnictwa .NET) * Bezpieczeństwo (skanowanie w poszukiwaniu błędów w celu oczyszczenia danych wejściowych, zapobieganie wstrzykiwaniu SQL itp.) * Funkcjonalność (czy robi to, co powinna) * Użyteczność * Wydajność W każdym razie nasi programiści Business Intelligence nie wykonują tego samego typu kodowania/rozwoju, co my dla stron internetowych, aplikacji Windows, itp. Nasze szablony/listy kontrolne tak naprawdę ich nie dotyczą. Ponieważ to ja staram się ewangelizować i sprawić, by wszyscy zaczęli robić wzajemne recenzje, poprosili mnie o radę, jakich rzeczy powinni szukać. Prawdopodobnie mógłbym ich poprowadzić i pomóc im opracować własne listy kontrolne, zadając pytania o to, co może pójść nie tak, co jest dla nich ważne itp., Ale pomyślałem, że zapytam i zobaczę, czy ktoś zna ustalone wytyczne dotyczące postępowania „ przeglądy kodu” dla programistów BI. Od osób zajmujących się BI wezmę również „Czego byś szukał przy ocenie pracy innego programisty BI?”.


title: Kodujesz przeglądarkę internetową w systemie Windows za pomocą silnika układu graficznego?

text: Nigdy wcześniej nie próbowałem czegoś takiego, ale chcę zakodować przeglądarkę dla systemu Windows. Wiem, że mogę korzystać z kontrolki przeglądarki internetowej udostępnionej przez Microsoft, ale interesuje mnie, jak problem zostanie rozwiązany z niższego poziomu. Więc chcę wiedzieć, na jaki silnik layoutu powinienem patrzeć? A może najlepszym rozwiązaniem jest silnik układu graficznego? Patrzyłem na WebKit, ale wydaje się, że jest to raczej Mac-centryczny, więc zastanawiam się, czy są jakieś bardziej praktyczne dla Windows? Czy firma Microsoft wydała kod źródłowy swojej przeglądarki internetowej winforms w ramach platformy .Net? Przypuszczam, że to i tak byłoby zależne od CLR? Jakieś sugestie?


title: Git: Pchanie do zdalnego repozytorium ze zdalnego repozytorium?

text: Mam zdalne repozytorium docelowe i repozytorium źródłowe, które jest również zdalne. Chciałbym, aby mój lokalny komputer działał jako serwer proxy, aby umożliwić mi wypychanie do miejsca docelowego ze źródła bez pobierania repozytorium na mój komputer. czy to możliwe?


title: Dlaczego wątki nazywane są wątkami?

text: Rozumiem, że proces jest jednostką własności zasobu i wykonywalnymi instrukcjami. Wątki umożliwiają procesowi współdzielenie zasobów z wieloma wykonaniami, a system operacyjny może łatwiej zaplanować wątki ze względu na cały narzut związany z całymi procesami. Ale dlaczego nazwa _nić_? Czy ma jakieś odniesienie do _ciągu_ lub przeplatania wykonania? Mimo to moim zdaniem nie jest to termin intuicyjny.


title: Czy pokój rozmów oparty na bazie danych to zły pomysł?

text: Większość prostych systemów „czatów grupowych” opiera się na lokalnych dziennikach przechowywania plików (np. _log.txt_ ). Zajmuję się tworzeniem prostego czatu grupowego (jednocześnie poniżej 20 użytkowników) z jQuery/AJAX. Tak więc kod po stronie klienta ładuje log z serwera **co sekundę**. Musi być szybki. W systemie bazodanowym (PHP/MySQL) oznaczałoby to zapytanie MySQL co sekundę. Czy to przeciążenie serwera (hosting współdzielony)?


title: Zarządzanie listą wątków podrzędnych

text: Po tylu badaniach pomyślałem, że powinienem zapytać ekspertów. Pracuję nad projektem dla mojego pracodawcy korporacyjnego, mamy aplikacje mobilne na Androida i iPhone'a, które wysyłają żądanie do serwisu internetowego, żądanie jest zalogowane w stanie oczekiwania na przetworzenie. Usługa systemu Windows pobiera oczekujące żądania i tworzy nowy wątek dla każdego żądania. Dzieje się tak, ponieważ żądanie może zostać skierowane do różnych dostawców, którzy przetwarzają żądanie na różne sposoby. Jeden mógł natychmiast przetworzyć prośbę i zwrócić informację zwrotną, inni mogli otrzymać prośbę i zająć do 30 sekund, aby zwrócić informację zwrotną, którą musisz odpytać o status. Aplikacja mobilna będzie również odpytywać o status żądania. Teraz moim wyzwaniem jest: myślę o stworzeniu listy wątków, powiedzmy 100 i przydzieleniu każdemu wątku do wykonania żądania, po zakończeniu wątek zostanie odtworzony i zostanie mu przydzielone nowe żądanie. Jest to platforma o wysokiej odpowiedzi, więc myślę o nieużywaniu ThreadPool. Czy wskazane jest kręcenie nowych wątków w sekwencji pożaru i zapomnienie lub zarządzanie listą wątków, a jeśli jest to zarządzane, to jakie jest najlepsze podejście do zarządzania tymi listami wątków i zapewnienia wysokiej wydajności w C#, ponieważ aplikacje mobilne będą odpytywanie o odpowiedź.


title: Jak radzić sobie z edycją dużego pliku dla nietechnicznego użytkownika

text: Mam klienta, który otrzymuje plik .txt rozdzielany tabulatorami, zawierający setki tysięcy wierszy. Mam taką historyjkę użytkownika: > Jako użytkownik chcę wziąć plik tekstowy i dodać nową wartość na końcu > każdego wiersza, który zawiera połączoną wartość dwóch kolumn. na przykład jeśli plik odczytuje tekst_jeden tekst_dwa, muszę wyprowadzić następujące (najlepiej do pliku .txt) tekst_jeden tekst_dwa tekst_jeden tekst_dwa Moje pierwsze podejście polegało na poproszeniu dostawcy dostarczającego plik o wykonanie połączenia przed dostarczeniem pliku, najłatwiejszym sposobem rozwiązania problemem jest wyeliminowanie go, prawda? jednak są bardzo niechętni do współpracy i stanowczo odmówili. Przyjrzałem się tworzeniu prostej aplikacji JavaScript, która wykonuje tę stronę klienta, aby nietechniczny użytkownik mógł wybrać plik za pomocą selektora plików. Takie podejście ma kilka problemów * Plik może mieć rozmiar ponad GB i nie można go załadować bezpośrednio do pamięci, próbowałem i przeglądarka się zawiesza * Nie ma możliwości napisania pliku w javascript, więc muszę wyprowadzić zawartość na ekran i poprosić użytkownika o jej zapisanie (jakoś) Myślałem, czy mógłbym obejść ograniczenia rozmiaru pliku, mógłbym po prostu wyprowadzić edytowaną zawartość na stronę i poprosić użytkownika o zapisanie strony jako pliku .txt , jednak myślę, że jest lepszy sposób niż użycie javascriptu, który nadal będzie uwzględniał brak wiedzy technicznej użytkowników. Proszę uznać to pytanie za niezależne od stosu, ale pamiętaj, że ładny mały skrypt powłoki lub skrypt Pythona byłby uznany za nieodpowiedni dla nietechnicznego użytkownika, chyba że istnieje sposób na „pakowanie” go ładnie dla nietechnicznego użytkownika. ## Aktualizacje Plik jest za duży, aby otworzyć go w programie Excel. Proces musi być uruchamiany co tydzień, ale nie wymaga planowania ani automatyzacji... (jeszcze)


title: Czy element Collection w Javie jest uważany za złą praktykę?

text: Z mojego zrozumienia ElementCollection nie ma klucza podstawowego, jest osadzony z klasą i nie można wykonać zapytań. Brzmi to dość mocno, ale pozwala mi na komfort pisania klasy enum, która pomaga również w internacjonalizacji (używając klucza enum do wyszukiwania w moim pakiecie ResourceBundle). **Przykład:** Mamy użytkownika na stronie z mediami, który może wybrać, w jakim formacie pobiera pliki ![](http://s9.postimg.org/9y69wyfin/Database.png) @Entity @Table( name = "użytkownik") public class Użytkownik { /* wycinanie innych pól */ @Enumerated @ElementCollection( targetClass = DownloadFilePreference.class, fetch = FetchType.EAGER ) @CollectionTable(name = "download_file_preference", joinColumns = @JoinColumn(name = "user_id") ) @Column(name = "name") private Set<DownloadFilePreference> downloadFilePreferences = new HashSet<>(); } public enum DownloadFilePreference { MP3, WAV, AIF, OGG; } Wydaje mi się to całkiem niezłe i przypuszczam, że sprowadza się to do "to zależy od twojego przypadku użycia", ale wiem też, że jestem szczerze tylko nowicjuszem, jeśli chodzi o projektowanie baz danych. Niektóre najlepsze praktyki sugerują, aby nigdy nie mieć klasy bez klucza podstawowego — nawet w tym przypadku? To również nie wydaje się zbyt rozszerzalne - czy powinienem tego użyć i zaryzykować, jeśli nigdy nie będę musiał pytać o FilePreferences?


title: Jaką funkcjonalność powinien mieć (podstawowy) model makiety?

text: Jeśli miałbym zacząć od pisania prostego frameworka Mock, to jakie rzeczy MUSZĄ mieć podstawowy framework Mock? Oczywiście kpi z dowolnego przedmiotu, ale co z twierdzeniami, a może innymi rzeczami? Kiedy myślę o tym, jak napisałbym swój własny model, zdaję sobie sprawę, ile naprawdę wiem (lub nie wiem) i na czym bym się potknął. Więc to jest bardziej do celów edukacyjnych. Oczywiście zrobiłem badania i to jest to, co wymyśliłem, że minimalny framework do mockowania powinien być w stanie zrobić. Teraz moje pytanie w tym wszystkim brzmi: czy brakuje mi ważnych szczegółów w moich pomysłach? * * * # Naśmiewanie * **Naśmiewanie się z klasy:** Powinno być możliwe naśmiewanie się z dowolnej klasy. Mock powinien zachować właściwości i ich oryginalne wartości, tak jak zostały ustawione w oryginalnej klasie. Wszystkie implementacje metod są puste. * **Wywołania metod Mock:** Framework Mock musi być w stanie zdefiniować, co musi zwrócić mockowana metoda. IE: `$MockObj->CallTo('SomeMethod')->Returns('pewna wartość');` # Asercje W moim rozumieniu frameworki do prześmiewania mają również zestaw asercji. To są te, które moim zdaniem są najważniejsze (zaczerpnięte z SimpleTest). expect($method, $args) Argumenty muszą być zgodne, jeśli są wywołane expectAt($timing, $method, $args) Argumenty muszą być zgodne, gdy są wywoływane $timing-ty czas expectCallCount($method, $count) Metoda musi zostać wywołana dokładnie tyle razy expectMaximumCallCount($method, $count) Wywołaj tę metodę nie więcej niż $count razy expectMinimumCallCount($method, $count) Musi zostać wywołana co najmniej $count razy expectNever($method) Nigdy nie może być wywołana expectOnce($method, $args) Musi być wywołana raz i z oczekiwanymi argumentami, jeśli podano expectAtLeastOnce($method, $args) Musi zostać wywołana przynajmniej raz i zawsze z oczekiwanymi argumentami * * * I to w zasadzie, o ile rozumiem, co makieta ramy powinny być w stanie zrobić. Ale czy to naprawdę wszystko? Ponieważ obecnie nie wydaje się wielkim problemem, aby zbudować coś takiego. Ale jest to również powód, dla którego mam wrażenie, że brakuje mi ważnych szczegółów dotyczących takiego frameworka. Czy moje rozumienie makiety jest słuszne? A może brakuje mi wielu szczegółów?


title: Wzorzec projektowy dla sesji klient/serwer?

text: Czy istnieją jakieś wspólne wzorce lub ogólne wskazówki, z których mogę się nauczyć, jak zaprojektować system klient/serwer, w którym zarówno klient, jak i serwer muszą utrzymywać jakiś stan sesji na klienta? Znalazłem wiele bibliotek, które mogą pomóc w niektórych instalacjach hydraulicznych, ale zastanawiam się nad ogólnym projektem. Otwarte kwestie w mojej głowie: * Jak ustrukturyzować komunikację klient/serwer, aby możliwe były dwukierunkowe synchroniczne i asynchroniczne żądania? * Po stronie serwera musi pojawić się kilka procesów pomocniczych dla każdego połączonego klienta. Jak sobie z tym poradzić? * Jak zarządzać mapowaniem od danego klienta (i wszystkich jego żądań) do stanu serwera i instancji procesu pomocniczego w obliczu wielu klientów i przerywanej łączności sieciowej. * Większość komunikacji może polegać na prostym blokowaniu żądania/odpowiedzi, ale niektóre z nich będą długotrwałymi zadaniami przetwarzania, które klient będzie chciał mieć na oku. W zakresie, w jakim ma to znaczenie, platformą jest Linux/C/C++. Nie oparty na sieci. Po prostu istniejąca aplikacja z grubym klientem jest modyfikowana, aby komunikować się z serwerami zaplecza w przypadku niektórych zadań.


title: Licencjonowanie wspólnego projektu badawczego

text: Jestem zaangażowany w międzynarodowy projekt badawczy, który obejmuje wiele różnych uniwersytetów, krajowych laboratoriów i firm. Projekt jest rozwijany dzięki grantom krajowym i wsparciu rzeczowym. Jednym z zadań w projekcie jest opracowanie kodu usprawniającego przepływ pracy w naszej domenie (symulacja energetyczna) poprzez skryptowanie typowych zadań pre- i post-processingu dla różnych narzędzi. Chcemy, aby ten kod mógł być swobodnie rozpowszechniany wśród społeczności symulacyjnej. Jak możemy zapewnić, że ten wysiłek będzie strawny przez działy prawne tych różnych stron, tak aby zaangażowane osoby mogły swobodnie kodować?


title: Kod czasowy testowania jednostek

text: Obecnie pracuję nad aplikacją, która wykonuje wiele operacji związanych z czasem. Oznacza to, że na podstawie `long now = System.currentTimeMillis();` i w połączeniu z harmonogramem obliczy okresy czasowe, które parametryzują wykonanie niektórych operacji. np.: public void execute(...) { // wykonywane przez harmonogram co x minut final int now = (int) TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()); final int wyrównanyTime = now - now % getFrequency(); final int czas startu = czas wyrównany - 2 * getFrequency(); final int endTimeSecs = wyrównanyCzas - getFrequency(); uploadData(cel, startTime, endTimeSecs); } Większość części aplikacji jest testowana jednostkowo niezależnie od czasu (w tym przypadku `uploadData` ma naturalny test jednostkowy), ale zastanawiałem się nad najlepszymi praktykami testowania części ograniczonych czasowo, które opierają się na `System.currentTimeMillis() `?


title: Czy „Ochrona” jest akceptowalną nazwą klasy Java?

text: Pochodzi to z zamkniętego wątku przy przepełnieniu stosu, gdzie jest już kilka przydatnych odpowiedzi, chociaż komentator zasugerował, abym opublikował tutaj. Mam nadzieję, że to jest w porządku! Staram się pisać dobrze czytelny kod, ale często mam wątpliwości w swojej pracy! Tworzę kod, aby sprawdzić stan chronionego oprogramowania i stworzyłem klasę, która ma metody sprawdzania, czy używane oprogramowanie jest licencjonowane (istnieje osobna klasa Licensing). Nazwałem klasę „Ochrona”, do której obecnie uzyskuje się dostęp, poprzez utworzenie obiektu appProtect. Metody w klasie pozwalają sprawdzić szereg rzeczy dotyczących aplikacji, aby potwierdzić, że faktycznie jest ona licencjonowana do użytku. Czy „Ochrona” jest akceptowalną nazwą dla takiej klasy? Czytałem gdzieś, że jeśli musisz długo myśleć w nazwach metod, klas, obiektów itp., to być może nie kodujesz w sposób zorientowany obiektowo. Spędziłem dużo czasu zastanawiając się nad tym przed napisaniem tego posta, co doprowadziło mnie do wątpliwości, czy nazwa jest odpowiednia! Tworząc (i sprawdzając) ten post, zaczynam poważnie wątpić w swoją dotychczasową pracę. Myślę też, że prawdopodobnie powinienem zmienić nazwę obiektu na applicationProtection zamiast appProtect (chociaż jestem otwarty na wszelkie komentarze na ten temat?). Publikuję jednak w nadziei, że nauczę się czegoś od innych poglądów/opinii, nawet jeśli po prostu potwierdzają, że „zrobiłem to źle”! EDYCJA: Dzięki za wszystkie odpowiedzi, które były pomocne. Myślę, że 'Protector' idealnie pasuje do tej ustawy, ponieważ klasa sprawdza licencję i postępuje zgodnie z nią.


title: Zautomatyzowane testy algorytmu różnicującego

text: Projektujemy algorytm różnicowania (na podstawie Longest Common Subsequence), który porównuje tekst źródłowy i zmodyfikowaną kopię w celu wyodrębnienia nowej treści (tj. treści, która znajduje się tylko w zmodyfikowanej kopii). Obecnie kompiluję bibliotekę danych przypadków testowych. Musimy mieć możliwość uruchamiania automatycznych testów, które weryfikują przypadki testowe, ale nie chcemy weryfikować ścisłej dokładności. Biorąc pod uwagę heurystyczną naturę naszego algorytmu, potrzebujemy, aby nasze wyniki/nieudane testy były rozmyte. Chcemy określić próg nakładania się pożądanego wyniku i rzeczywistego wyniku (tj. wyodrębnionej treści). Mam w głowie kilka szkiców, jak to rozwiązać, ale czy ktoś to zrobił wcześniej? Czy ktoś ma wskazówki lub pomysły, jak to zrobić skutecznie?


title: Symulacja projektora w openGL

text: Chciałbym zasymulować ekran projektora w OpenGL, gdzie obraz jest rzeczywiście wyświetlany na ścianie w czasie rzeczywistym. Rozumiem przez to, że jeśli jakiś przedmiot znajdzie się pomiędzy projektorem a ścianą, ta część obrazu pojawi się na przeszkodzie. Czy ta funkcjonalność jest możliwa w OpenGL? A jakie technologie/biblioteki mogę wdrożyć, aby ułatwić ten rozwój?


title: Wsparcie COM INTEROP - co jest lepsze? C# lub VB

text: Ciągle słyszę, że c# jest „lepszy” niż vb… ale o ile widzę, oprócz różnic składniowych, oba kompilują się do tego samego IL. Znalazłem kilka dobrych artykułów przez Google, które wyjaśniają, jakie są różnice między nimi, więc czuję się komfortowo w „rozpraszaniu” rozmów między programistami kłócącymi się o vb / c#. =) Ale przeczytałem artykuł, który powiedział, że vb.net 2005 ma lepsze wsparcie dla rzeczy com interop. Ale zastanawiam się, czy nadal tak jest? Jest to dla mnie interesujące, ponieważ jesteśmy w trakcie przeprojektowywania starej aplikacji vb6, która komunikuje się z niektórymi starszymi komponentami COM. Czy ktoś ma niedawne doświadczenie z .NET i COM interop? Dziękuję.


title: definicja Acme Developers na iPhone'a

text: Słyszałem określenie acme developer iPhone'a. Zastanawiałem się tylko, co to oznacza? Myślę, że znam znaczenie, kiedy programista idzie do klienta i przedstawia swoje pomysły na aplikację. Dzięki za pomoc.


title: Jedno logowanie wśród wielu aplikacji ASP.NET MVC

text: Pracowałem nad aplikacją ASP.NET MVC 4, która używa uwierzytelniania opartego na formularzach. Użytkownicy są sprawdzani względem dostawcy członkostwa na podstawie wyboru dostawcy w formularzu logowania. Na przykład w tej chwili istnieją dwaj dostawcy: active directory i niestandardowy dostawca, który wywołuje zewnętrzną usługę sieciową. Jeśli użytkownik jest prawidłowy, aktualizujemy informacje w naszej tabeli użytkowników lokalnych, takie jak data ostatniego logowania itp. Jeśli użytkownik jest prawidłowy i nie istnieje w tabeli użytkowników lokalnych, dodajemy go. Gdy to wszystko zostanie zrobione, ustawiamy plik cookie i przechodzimy do głównej treści. Wszystkie kontrolery sprawdzają **User.Identity.IsAuthenticated** i wracają do strony logowania, jeśli test się nie powiedzie. Teraz powiedziano mi, że ta aplikacja przechodzi z pojedynczej aplikacji internetowej do rozwiązania z wieloma aplikacjami. Każda aplikacja powinna istnieć niezależnie od innych, mieć ten sam wygląd i działanie oraz korzystać z tej samej funkcji logowania. Każda aplikacja może wymagać dodania nowego dostawcy członkostwa. Dodamy również dane do ograniczenia dostępu do aplikacji. Jeden użytkownik może mieć dostęp tylko do jednej aplikacji, podczas gdy inny użytkownik ma dostęp do nich wszystkich. Konfiguracja przechowywania danych nie stanowi problemu. Udostępnianie układu z jednej aplikacji do wykorzystania w innych również nie stanowi problemu. Mam problem z podjęciem decyzji, jak „refaktoryzować” funkcjonalność logowania, tak aby dodanie nowego dostawcy członkostwa i aplikacji „w dalszej części” nie wymagało od nas ponownego publikowania istniejących aplikacji. W tej chwili nie chcieliby również strony uruchamiania pojedynczego logowania dla aplikacji. Chcieliby, aby użytkownicy przeszli od razu do aplikacji, zalogowali się i zrobili to, po co tam przyszli. Mogę więc wejść na http://site1.mysites.com, zalogować się i wykonać swoją pracę, podczas gdy facet obok mnie przejdzie do http://site2.mysites.com, zaloguje się i wykona swoją pracę. Mam problem z określeniem najlepszego sposobu na zrobienie tego. Moją pierwszą myślą była usługa sieci Web WCF do logowania. Miałbym akcję kontrolera wywołania usługi internetowej przekazującej poświadczenia logowania. Jeśli logowanie się powiodło, mógłbym uzyskać listę aplikacji dla użytkownika z lokalnego magazynu. Dodanie kolejnych aplikacji nie wymagałoby od nas ponownego publikowania istniejących aplikacji ze względu na brak zmian w usłudze sieciowej dla tych aplikacji. Ciągle też słyszę o tych rzeczach ASP.NET Web API. Czy powinienem zamiast tego wybrać tę trasę? Mogę chcieć zbudować witrynę wokół administrowania lokalną bazą danych użytkowników, więc posiadanie witryny hostującej internetowe API może być opcją. Czy elementy interfejsu API sieci Web są nieprawidłowe w tej sytuacji? Jeśli nie, czy ma przewagę nad usługą sieci Web WCF? Czy istnieją alternatywne metody osiągnięcia mojego efektu końcowego?


title: Projekt odczytywania plików wejściowych pod kątem wartości domyślnych/przekształceń

text: Załóżmy, że masz aplikację, która odczytuje plik wejściowy w języku, który nie obsługuje koncepcji Brak. Dane wejściowe są odczytywane, analizowane, a zawartość jest przechowywana w strukturze do późniejszego wykorzystania. Teraz, ogólnie rzecz biorąc, chcesz wziąć pod uwagę transformację danych z danych wejściowych, na przykład dodawanie wartości domyślnych, gdy nie są one określone, lub dodawanie informacji o pełnej ścieżce do ścieżki względnej określonej w danych wejściowych. Istnieją dwie różne strategie, aby to osiągnąć. Pierwsza strategia polega na wykonaniu tych przekształceń w czasie odczytu pliku wejściowego. W praktyce w analizatorze danych wejściowych umieszczasz całą inteligencję, a Twoja aplikacja nie ma logiki, aby poradzić sobie z nieoczekiwanymi okolicznościami, takimi jak nieokreślona wartość. Tracisz informacje o tym, co zostało określone, a co nie, ale zyskujesz na zaciemnianiu szczegółów. Twój „uruchomiony kod” potrzebuje tych informacji w każdym przypadku i we właściwej formie, i nie ma znaczenia, czy jest to informacja domyślna, czy określona przez użytkownika. Drugą strategią jest posiadanie czytnika plików prawdziwego mapowania jeden do jednego z pliku do obiektu przechowywanego w pamięci, bez inteligentnego zachowania. nieokreślone wartości nie są wypełniane (co może jednak stanowić problem w językach, które nie obsługują Brak), a dane są przechowywane dosłownie z pliku. Inteligencja potrzebna do odzyskania musi teraz przejść do „działającego kodu”, który musi sprawdzić, co zostało określone w pliku, w końcu powrócić do wartości domyślnych lub odpowiednio zmodyfikować dane wejściowe przed jego użyciem. Chciałabym poznać Twoją opinię na temat tych dwóch podejść, a zwłaszcza tego, które z nich było najczęściej wdrażane.


title: Wybór użytkownika i tworzenie obiektów

text: Piszę aplikację GUI. Użytkownik wybiera element z ComboBox (nie można go edytować). Następnie włączana jest odpowiednia kontrola danych wejściowych i użytkownik wprowadza dane. Następnie tworzony jest odpowiedni obiekt zgodnie z wybranym elementem comboBox. 1. Pomyślałem o użyciu tablicy String[] do wyświetlenia listy wyborów, a następnie użyciu instrukcji warunkowych do utworzenia obiektu. 2. Lub utwórz wszystkie obiekty przed wybraniem przez użytkownika i odpowiednio ustaw właściwości każdego obiektu po wprowadzeniu danych użytkownika. Nie mogę wymyślić lepszego sposobu na zrobienie tego, więc chciałbym zapytać, czy istnieje. Jeśli nie, to pierwszy lub drugi sposób wymieniony powyżej jest lepszy? Dziękuję Ci.


title: Czy programista powinien mieć umiejętność szybkiego pisania?

text: > **Możliwy duplikat:** > Jak ważna jest umiejętność pisania bezwzrokowego? Zamierzamy zatrudnić nowych programistów i zastanawialiśmy się, czy powinniśmy uwzględnić umiejętność pisania w naszych filtrach zatrudnienia? Ktoś już aplikował na wolne stanowisko i jest na nie zakwalifikowany. Jedyne, co budzi wątpliwości, to jego słaba umiejętność pisania na klawiaturze (używając 2 palców i powoli). Czy powinniśmy uznać to za wysoce negatywny punkt? Lub ogólnie, czy programiści powinni wiedzieć, jak szybko pisać? Chcę też wiedzieć, jak szybko potrafi pisać na maszynie bezwzrokowej? Mój to 69 wpm z 95% dokładnością (690 lpm)


title: Programowanie tak szybko, jak tylko potrafisz, pisz... Jak dostać się do tego etapu?

text: Niedawno zrobiłem test i stwierdziłem, że mogę wygodnie dotykać pisania przy około 100 wpm ... a gdybym otrzymał jakąś autokorektę / inteligencję, to byłoby to jeszcze szybsze (kto wie, może 150 wpm?) ... zdecydowanie nie wiem program w dowolnym miejscu zbliżonym do tej prędkości... To sprawiło, że zacząłem się zastanawiać, jak konkretnie można stać się szybszym w programowaniu? Kiedy przyjrzę się problemowi i zaprojektuję algorytm, aby go rozwiązać (problem został rozwiązany ... wiem, co zamierzam po wykonaniu lub wzięciu uruchomień debugowania), dlaczego faktycznie wpisanie kodu zajmuje mi o wiele więcej czasu program? Odkryłem, że ogólnie, kiedy koduję, dopóki nie skończę pisać słowa... nawet jeśli jest to tylko litera a lub cyfra 1, nie mogę jednocześnie myśleć i pisać. Oznacza to, że mogę wymyślać rzeczy podczas pisania, ale nie mam możliwości patrzenia w przyszłość. To jedno albo drugie... Na przykład pisząc to, mogę wyczuć, dokąd to zmierza, ale dopóki moje palce nie uderzą w klawiaturę, tak naprawdę nie wiem, co powiem dalej. Jak to zmienić? Jak uzyskać zdolność wybiegania w przyszłość podczas pisania, aby móc wykorzystać szybkość pisania? Również ogólnie, jak można szybciej rozwiązywać problemy? Znam zwykłą listę ćwiczeń (z którymi nie mam problemu), ale czy jest jakieś szczególne ćwiczenie, na które należy położyć nacisk, aby ćwiczyć umysł? Na przykład, czy granie w różne gry logiczne (sudoku itp.) może pomóc w poprawie poczucia logiki w innych obszarach programowania? Przepraszam, że to kilka pytań na raz, ale wszystkie są powiązane... P.S. Czy do programowania można użyć stenografu? Słyszałem, że użytkownicy stenografów mogą osiągać zawrotne prędkości rzędu 200 - 300 wpm. Zakładając, że jakoś potrafię myśleć szybciej... to byłoby całkiem fajne. Oczywiście szybkie programowanie != dobre programowanie. Ale jeśli zawsze trenujesz, aby stać się lepszym programistą, nie zaszkodzi być w stanie zrobić to szybko.


title: Umożliwienie klientowi wyboru danych do zwrotu przez interfejs REST

text: Mam usługę odpoczynku, która jest zasadniczo serwerem proxy do wielu innych usług. Więc jeśli wywołam `GET /users/{id}`, otrzyma on ich profil użytkownika, historię zamówień, dane kontaktowe itp... wszystko z różnych usług i zagreguje je w jeden ładny obiekt. Mój problem polega na tym, że każde wywołanie innej usługi może potencjalnie wydłużyć pierwotne żądanie, więc wolelibyśmy nie otrzymywać WSZYSTKICH danych przez cały czas, jeśli konkretny klient nie dba o wszystkie elementy. Rozwiązanie, do którego doszedłem, to zrobienie czegoś takiego: `GET /users/{id}?includeOrders=true&includeX=true&includeY=true...` To działa i pozwala mi robić tylko to, czego potrzebuję, ale to jest uciążliwe. Dodaliśmy wystarczająco dużo różnych źródeł danych, że istnieje zbyt wiele parametrów, aby ten styl był użyteczny. Mógłbym zrobić coś podobnego z pojedynczą liczbą całkowitą i maską bitową lub czymś podobnym, ale to tylko utrudnia czytanie i nie jest to bardzo Restful. Mógłbym podzielić to na wiele wywołań, więc musiałyby wywoływać `/users/{id}/orders` i `/users/{id}/profile` oddzielnie, ale tego rodzaju przekreśla cel agregującego serwera proxy, który jest celem jest ułatwienie klientom pracy. Czy są jakieś dobre wzorce, które mogą pomóc mi zwrócić tylko wystarczającą ilość danych dla każdego klienta, nie utrudniając im filtrowania i wybierania tego, czego chcą?


title: Czy wstrzykiwanie kodu HTML może stanowić problem z bezpieczeństwem?

text:
Niedawno natknąłem się na stronę, która generuje losowy przymiotnik otoczony prefiksem i sufiksem wprowadzonym przez użytkownika. Na przykład, jeśli użytkownik wpisze „123” jako prefiks i „789” jako sufiks, może wygenerować „123Productive789”. Mieszałem z tym i pomyślałem, że mogę coś wypróbować. Wpisałem to w polu prefiksu: Kliknij
 I rzeczywiście, otrzymałem link, a następnie `<hr>` , a następnie losowy przymiotnik. Zastanawiam się, czy to może być niebezpieczne? Musi być dużo więcej stron internetowych, które mają ten problem, czy wszystkie z nich są podatne na jakiś rodzaj wstrzyknięcia php?


title: Jaki jest najlepszy sposób komentowania przestarzałej klasy w Javie?

text: Chciałbym wiedzieć, jak najlepiej dodać komentarz, aby zidentyfikować przestarzałą klasę w Javie. Czy powinienem usunąć poprzedni komentarz dodany na górze klasy, który pomaga innemu programiście wiedzieć, do czego służy ta klasa, czy powinienem dodać go poniżej komentarza?


title: Ustawia strukturę danych w Golang

text: Naprawdę lubię Google Golang, ale czy ktoś mógłby wyjaśnić, dlaczego implementatorzy pominęli podstawową strukturę danych, taką jak zestawy ze standardowej biblioteki?


title: Jaki jest cel klauzuli „tak to” w definicji historyjki użytkownika?

text: Historię użytkownika można zdefiniować w zdaniu takim jak: Jako <typ użytkownika> chcę <jakiś cel>, aby <jakiś powód> Tylko Google dla „formuły historyjki użytkownika” i pierwsze linki proponują tę formułę. Moje pytanie brzmi: jaki jest cel klauzuli **aby** tak**? Czy jest dla menedżerów? Czy istnieje po to, aby kierownicy projektów i interesariusze mogli lepiej zrozumieć priorytet pozycji? Dlaczego tam jest? Uwaga: Pracowałem z formułą `jako <typ użytkownika> Chcę <jakiś cel>` i działa po prostu dobrze. Nie zauważyłem żadnego problemu w swojej pracy przy wdrażaniu tego formatu, który jest bardziej zwięzły.


title: Czy korzystne jest posiadanie wieloletniego doświadczenia w określonej technologii, a nie krótkoterminowych wielokrotnych?

text: Obecnie pracuję w asp.net i mam prawie 1 rok doświadczenia. Teraz moja firma chce zmienić moją technologię i wprowadzić mnie w rozwój mobilny (może być inny niż rozwój mobilny .net). Czy byłoby to szkodliwe dla mojej kariery? Jak słyszałem, korzystniejsze jest posiadanie dłuższego doświadczenia w określonej technologii niż wielokrotne.


title: Kiedy standardem pakowania kodu źródłowego Linuksa stał się .tar.gz?

text: Podczas przeglądania projektów typu open source, które zostały opracowane głównie dla systemów Linux i pobierania najnowszych pakietów, kod źródłowy jest zawsze przechowywany w pliku .tar.gz lub .tar.bz2. Czy jest jakiś powód, aby używać .tar.gz lub .tar.bz2 zamiast czegoś takiego jak .zip lub .rar lub jakiś inny algorytm kompresji (lub nawet pozostawić go bez kompresji, jeśli projekt jest wystarczająco mały)?


title: Co się stało ze zunifikowanym modelem plików Alana Coopera?

text: Przez długi czas Alan Cooper (w 3 wersjach swojej książki „About Face”) promował „ujednolicony model plików”, aby między innymi zrezygnować z tego, co nazywa najbardziej idiotyczną skrzynką wiadomości, jaką kiedykolwiek wymyślono – tą, którą wyskakuje po naciśnięciu przycisku zamykania w aplikacji lub formularzu z pytaniem „Czy chcesz odrzucić swoje zmiany?” Podoba mi się ten pomysł i jego argumenty, ale mam też odruchową reakcję na to, co ma większość doświadczonych programistów i użytkowników. Chociaż książka Coopera wydaje się dość popularna i szanowana, w Internecie jest niezwykle mało dyskusji na ten temat w Internecie. Wspomina o tym Petter Hesselberg, autor "Programming Industrial Strength Windows", ale wydaje się, że to dotyczy. Mam możliwość wdrożenia tego w projekcie (desktopowym), nad którym pracuję, ale napotykają na opór ze strony klientów i współpracowników, którzy oczywiście znają sposób działania MS Word i Excel. Mogę odrzucić ich zastrzeżenia, ale nie jestem pewien, czy powinienem. Moje pytania brzmią: Czy są jakieś dobre dyskusje na ten temat, których nie udało mi się znaleźć? Czy ktoś robi to w swoich aplikacjach? Czy to dobry pomysł, że niestety nie jest to praktyczne, dopóki nie zrobi tego, powiedzmy, Microsoft?


title: Zapewnienie jakości (testowanie) w Scrum

text: Właśnie miałem Retrospektywę Wydań dla mojego zespołu scrumowego. Dużo rozmawialiśmy o naszym procesie wydawania. Wskazałem, że ponieważ nasza firma nie jest w stanie tolerować błędów w naszym środowisku produkcyjnym, nie jesteśmy w stanie trzymać się tradycyjnej mantry scrum, by często wydawać. Krótko mówiąc, jesteśmy firmą medyczną. Błędy w produkcji mogą powodować problemy z opieką nad pacjentem. (Szybkie wydanie poprawki nie pomaga pacjentowi, na który błąd wpłynął negatywnie.) Wskazałem, że scrum nie ma formalnego procesu zapewniania jakości. (Zakłada się, że testowanie zostanie wykonane podczas tworzenia oprogramowania.) Następnie stwierdziłem, że scrum ma domniemane oczekiwanie na błędy w produkcji. (Oparte na procesie wczesnego i częstego wypuszczania.) Ludzie z Procesu Scrum na sali powiedzieli, że scrum nie jest w ten sposób. Powiedzieli, że prawidłowo wykonany scrum może być wolny od błędów w produkcji. Oto moje pytanie: **Jak działa testowanie i zapewnianie jakości w przypadku Scrum? (W związku z tym, że błędy w produkcji są bardzo rzadkie.)** LUB **Czy istnieje dokumentacja, że w Scrumie spodziewane są niewielkie błędy (wraz z kolejnymi wydaniami)?** UWAGA: To jest dla pełnego przedsiębiorstwa poziom rozwoju. Mamy ponad 6 usług WCF, kilka magistral usług, 4 bazy danych, aplikację frontonu WPF i interfejs sieci Web, wszystkie napisane przez dwa oddzielne zespoły scrum, każdy po około 6-8 osób. _Oznacza to, że odpowiedzi, które zawierają tylko prawidłowe zakodowanie za pierwszym razem, nie są realistyczne._ UWAGA II: Wiem, że żadne oprogramowanie nie będzie wolne od błędów. Ale nasz proces wydawania (niezwinny) wyłapuje te nieliczne, które wychodzą poza nasz proces rozwoju i zbliża nasze oprogramowanie do poziomu „Bez błędów”.


title: Czy INT_MIN-1 jest niedomiarem czy przepełnieniem?

text: Wydaje mi się, że pamiętam, że czytałem, że * `niedomiar` oznacza, że masz zbyt małą _wielkość_, która nie może być już prezentowana w typie * `przepełnienie` oznacza, że masz zbyt dużą _wielkość_, której nie można już przedstawić w typie. Jednak w praktyka Rozumiem, że terminy są używane w taki sposób, że * „niedomiar” oznacza, że masz zbyt małą _wartość_, która nie może być już prezentowana w typie * „przepełnienie” oznacza, że masz zbyt dużą _wartość_, której nie można już przedstawić w typie Co to jest prawidłowe znaczenie tutaj użyć? Czy terminy są inaczej definiowane dla typów całkowitych i zmiennoprzecinkowych?


title: Sposoby zachęcania do dobrego zachowania podczas korzystania z serwerów współdzielonych?

text: To pytanie zostało wywołane komentarzem pozostawionym pod innym pytaniem odnoszącym się do tego artykułu. Czym jest czysty kod? Myślałem o tym, jak ten sentyment można zastosować do współdzielonych zasobów (serwerów itp.). Jakie są sposoby, które według Ciebie działają, aby zapewnić, że inne osoby korzystające ze współdzielonego serwera posprzątają po sobie? * Usuń pliki / foldery po jednorazowym użyciu (po poprawce lub aktualizacji) * Pozostaw pulpit czysty od śmieci * Nie instaluj oprogramowania, którego mogą używać na swoim pulpicie * Nie twórz udziałów systemu plików, które nie są potrzebne do rozwiązania O tak, dotyczy głównie do środowiska serwera Windows, w zespole programistów + personel pomocniczy liczący około 25 osób. Wiem, że jest kilka sposobów rozwiązania tego problemu, więc co, jak odkryliście, działa?


title: Rozprowadzanie zgłoszeń uczestników między wieloma pojemnikami, czy to jest plecak?

text: Jestem nowicjuszem w dziedzinie algorytmów i mam do czynienia z dość trudnym problemem. Zajmuję się konkursami. Istnieje * **zawodnik** - indywidualny gracz * **wejście** - zawodnicy mogą mieć wiele wpisów do turnieju * **konkursy** - streszczenie - posiada właściwość maksymalnej liczby wpisów * **instancje konkursów** - zawiera wpisy Moje wymagania to: 1. wszystkie zgłoszenia zawodników muszą być zgrupowane tylko w jednej instancji (nie mogą obejmować instancji) 2. zminimalizować liczbę utworzonych instancji. 3. Jeśli wymaganych jest wiele wystąpień, rozdziel zawodników między siebie, aby uzyskać jak najbardziej zbliżone rozkłady zgłoszeń (jeśli jest 120 zgłoszeń i 2 wybrane instancje należy rozdzielić jak najbliżej 60 / 60, zachowując jednocześnie zgłoszenia każdego zawodnika w tylko 1 instancja, whoa) 4. Jeśli wszystkie wpisy nie mieszczą się w przydzielonej liczbie instancji, zaalarmuj użytkownika. 5. Istnieje sztywny limit liczby wystąpień. Przykładowy scenariusz użytkownika końcowego to: * klient wybiera konkurs, który ma maksymalnie 100 zgłoszeń * klient wybiera, że zapłaci za maksymalnie 200 zgłoszeń (2 instancje) * klient rejestruje uczestników i przyznaje zgłoszenia * załóżmy, że klient ma 22 zarejestrowanych uczestników i przyznaje im po 9 zgłoszeń (łącznie 198 zgłoszeń) * następnie klient rejestruje innego zawodnika i przyznaje mu 2 zgłoszenia. * W powyższym scenariuszu kombinacja zawodnik/zgłoszenie nie będzie pasować dokładnie do 2 instancji, więc musimy to wykryć. Trudność polega na dopasowaniu tych bloków zgłoszeń konkursowych tylko do 1 instancji przy jednoczesnym przestrzeganiu sztywnego limitu liczby instancji. Moje obecne rozwiązanie jest wyjątkowo nijakie, w tej chwili (z tego, co przeczytałem, rozwiązuję je jako bardziej styl pakowania w bin) umieszczam bloki wpisów w pierwszej instancji i rozlewam się do pozostałych dostępnych instancji. Jeśli w żadnej z instancji nie ma wolnego miejsca, usuwam pojedyncze wpisy i scalam instancje. To działało, ponieważ musielibyśmy wygenerować tylko 1 instancję, może 2 od czasu do czasu i było sporo pojedynczych wpisów, ale teraz, gdy musimy wygenerować wiele instancji, to całkowicie się nie udaje. Czy to przykład problemu z wieloma plecakami? Na pewno na to wygląda, ale chcę mieć absolutną pewność, zanim zacznę zagłębiać się w rozwiązania takie jak http://www.or.deis.unibo.it/kp/Chapter6.pdf , ponieważ takie papiery są dla mnie wyzwaniem i przepracowanie czegoś takiego zajmie bardzo dużo czasu.


title: Jak nazwać dyscyplinę polegającą na dokonywaniu właściwego wyboru diagramów języka/paradygmatu/klas?

text: Jako fizyk sam nauczyłem się programowania. Ale chciałbym poznać nazwę dyscypliny (jak algorytmika jest dyscypliną projektowania algorytmów), która polega na: * dokonaniu właściwego wyboru języka/paradygmatu * zaprojektowaniu diagramu klas * zorganizowaniu różnych części kodu i ich będą oddziaływać między sobą


title: Python - asercja vs if i return

text: Piszę skrypt, który robi coś z plikiem tekstowym (choć to, co robi, nie ma znaczenia dla mojego pytania). Więc zanim zrobię coś z plikiem, chcę sprawdzić, czy plik istnieje. Mogę to zrobić bez problemu, chodzi raczej o estetykę. Oto mój kod, mam dwa sposoby na zrobienie tego samego. def modyfikacja_pliku(nazwapliku): attach os.path.isfile(nazwapliku), 'plik NIE istnieje.' Traceback (ostatnie wywołanie ostatniego): Plik "clean_files.py", wiersz 15, w <module> print(clean_file('tes3t.txt')) Plik "clean_files.py", wiersz 8, w clean_file attach os.path. isfile(nazwapliku), 'plik NIE istnieje.' AssertionError: plik NIE istnieje. lub: def modyfikacja_pliku(nazwapliku): jeśli nie os.path.isfile(nazwapliku): return 'plik NIE istnieje.' plik nie istnieje. Pierwsza metoda daje wynik, który jest w większości trywialny, jedyną rzeczą, na której mi zależy, jest to, że plik nie istnieje. Druga metoda zwraca ciąg znaków, jest prosta. Moje pytania brzmią: która metoda jest lepsza, aby poinformować użytkownika, że plik nie istnieje? Użycie metody „asert” wydaje się bardziej pytoniczne.


title: Urządzenie FPGA + sieć + zestaw oprogramowania

text: Przepraszam za bardzo abstrakcyjne i niepewne pytanie, ale myślę, że gdybym mógł zadać je lepiej, sam bym na nie odpowiedział. Oto rzecz. Coraz bardziej interesuję się układami FPGA. Trudno jednak powiedzieć, od czego powinienem zacząć. Chcę napisać prostą aplikację, która nasłuchuje pakietów UDP i wysyła pakiety TCP/IP. Więc myślę, że coś takiego jak Xinix Virtex®-7 FPGA będzie działać dla mnie jako FPGA. Jak to brzmi? Potrzebuję również karty PCI, która będzie go obsługiwać z kartą Ethernet. Oczywiście nie jestem tak dobry w sprzęcie na tym poziomie i sam tego nie zrobię. Czy są jakieś gotowe rozwiązania? Myślę też, że musi już istnieć rdzeń do pracy z adapterem Ethernet. Czy mam rację? Gdzie mam szukać? Czy jest coś z interfejsem zbliżonym do gniazd POSIX? Jaki jest najlepszy zestaw oprogramowania, którego będę potrzebować, aby to osiągnąć? Dziękuję Ci!


title: W Visual Studio 2010, który jest lepszy: VS Installer czy InstallShield LE?

text: Zbudowałem projekt VS Installer w Visual Studio 2008. Widzę, że w VS 2010 mają alternatywę InstallShield LE. Używałem InstallShield dawno temu jako część Borland Delphi, ale tak naprawdę nie zaglądałem do najnowszej wersji. Jestem ograniczony czasowo i nie chcę spędzać dużo czasu na kopaniu w to, jeśli nie jest to tego warte. Czy ktoś może podać zalety i wady korzystania z niego w porównaniu z narzędziem VS Installer? Nie chcę ponownie tworzyć instalatora, chyba że istnieje naprawdę ważny powód, aby to zrobić. Dzięki, Michael


title: Jak projektujesz programy w Haskell lub innych funkcjonalnych językach programowania?

text: Mam pewne doświadczenie w językach programowania obiektowego, takich jak c# czy ruby. Wiem, jak zaprojektować program w stylu obiektowym, jak tworzyć klasy i obiekty oraz jak definiować relacje między nimi. Znam też pewne wzorce projektowe. Jak ludzie piszą programy funkcjonalne? Jak zaczynają? Czy istnieją wzorce projektowe dla języków funkcjonalnych? Czy metodologie takie jak programowanie ekstremalne lub programowanie zwinne mają zastosowanie do języków funkcjonalnych?


title: Czy programowanie Agile może być wykorzystane w projektach określonych umową?

text: Niedawno rozmawiałem z innym deweloperem na temat Agile Software Development. Rozumiem zasadę, ale wydaje się, że ciągle zmieniające się wymagania stwarzają potencjał, aby projekt trwał wiecznie. Ale przynajmniej tam, gdzie pracuję, projekty muszą zostać ukończone, ponieważ to kontrakt. Oznacza to, że pierwsza iteracja może zająć miesiące, ponieważ w przypadku niektórych projektów klient nie może skorzystać z niekompletnej aplikacji. W przypadku niektórych projektów myślę, że najpierw należy zdefiniować gotowe, a następnie można je podzielić na iteracje i udoskonalić definicję po każdej iteracji. Ale musisz zawsze mieć taką definicję. Jeśli Agile Software Development obejmuje zmieniające się wymagania, skąd wiesz, gdzie to się kończy? Jak możesz zabudżetować projekt, gdy efekt końcowy ciągle się zmienia? Czy Agile Software Development to bardziej zwinny proces, czy zwinny produkt?


title: Związek między „Biblioteką zadań równoległych” a „Asynchronicznym wzorcem opartym na zadaniach”?

text: Jaka jest relacja między „Biblioteką zadań równoległych” a „Asynchronicznym wzorcem opartym na zadaniach” w kontekście C#, .NET 4/4.5 używanego dla aplikacji działającej na serwerze sieci Web? Rozumiem, że jedna to biblioteka, a druga to wzór. Ale zagłębić się głębiej, czy to tak: „Biblioteka jest wykorzystywana przez wzorzec do egzekwowania dobrych praktyk”. Nie wiem również, czy oba są obsługiwane w .NET 4.0 (ze słowami kluczowymi `await` i `async`) Edytuj: Wygląda na to, że `await` i `async` są tylko w .NET 4.5 ...


title: Pomóż mi zrozumieć część specyfikacji języka Java

text: Czytam część 17.2.1 specyfikacji języka Java: http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.2.1 Nie skopiuję tekst, jest za długi, ale chciałbym wiedzieć, dlaczego w trzecim kroku sekwencji mówią, że `Jeżeli wątek t został usunięty z ustawionego w kroku 2 oczekiwania m z powodu przerwania` Wątek nie mógł przejść do kroku 2 nie został usunięty z zestawu waitów, ponieważ został napisany dla kroku 1: `Wątek t nie wykonuje żadnych dalszych instrukcji, dopóki nie zostanie usunięty z zestawu waitów m` Tak więc wątek nie może zostać usunięty z zestawu wait ustawionego w kroku 2 cokolwiek to ze względu na to, że został już usunięty. Proszę, pomóż mi to zrozumieć.


title: W jaki sposób można zapisywać obrazy w Ruby on Rails?

text: Programuję na iOS i przechodzę z backendu PHP na Ruby on Rails. Format wymiany to JSON. Szybkie wyszukiwanie w Google hasła „zapisz obrazy w Rails” daje prawie każdy wynik mówiący o zapisywaniu danych obrazu jako obiektów blob w bazie danych. Może się mylę, ale mam wrażenie, że zapisywanie danych obrazu w bazie danych to ogromna strata czasu i miejsca (w przeciwieństwie do zapisywania linku do lokalizacji pliku ('/img/subcat/4656.png') W PHP standardem jest odbieranie danych, generowanie nazwy pliku, zapisywanie tego pliku na dysku i aktualizowanie bazy danych o lokalizację obrazu na dysku.Czy jest to takie samo dla Ruby on Rails, czy jest jakiś wbudowany ActiveRecord funkcjonalność obrazu, której nie znam?


title: Liczysz wydania produktów, jeśli pracujesz na backendach/usługach online?

text: Próbuję zaktualizować swoje CV i chciałbym policzyć „wydanie produktów”, w które byłem bezpośrednio zaangażowany w firmie. Wydaje się, że służy jako miernik wydajności. Problem polega na tym, że pracowałem na zapleczu bardzo dużego systemu rozproszonego, takiego jak Hadoop lub inna ogromna baza danych. Mieliśmy regularne, 6-miesięczne wydania główne i inne drobne wydania. Mój menedżer ciągle powtarzał, że „wysyłaliśmy” te wydania, ale „wysyłanie” produktu brzmi jak wydawanie pojedynczych kawałków oprogramowania, tak jak Microsoft wysłałby Office 11 czy coś takiego. Jakieś pomysły dotyczące „wydań produktu” dla inżynierów serwisu zaplecza lub innego rodzaju miernika wydajności?


title: Programista VS Systemy komercyjne (ERP)

text: Moje pytanie dotyczy pracy dla programistów. Dlaczego pracodawca nadal zatrudnia programistów, skoro dziś na rynku dostępnych jest dużo dobrego systemu komercyjnego? Chcę w tym miejscu bardzo jasno powiedzieć, że to pytanie dotyczy tylko systemu, a dokładniej systemów ERP. Może to pytanie wygląda trochę bezużytecznie, ale teraz pracuję i ta wątpliwość pojawiła się we mnie i moim szefie. Na własne pytanie mam kilka odpowiedzi, ale naprawdę chciałbym trochę bardziej spekulować na ten temat. Wiem też, że każda dobra firma potrzebuje systemu szytego na miarę, ale… pytanie jest tutaj. :-) Każda odpowiedź sprawi, że poczuję się lepiej. Dziękuję.


title: Najlepsze praktyki: wzorce programowania aplikacji bazodanowych

text: Do tej pory napisałem wiele aplikacji internetowych bazodanowych (MySQL), ale zawsze uważam, że moja struktura jest trochę niezdarna. Chcę ulepszyć wzorzec programowania/projektowania, którego używam, mając nadzieję, że uzyskam tutaj kilka porad. W szczególności nie mogę znaleźć struktury, która uzupełnia podejście OOP, które hermetyzuje implementację bazy danych (schematu). Myślę, że moje pytanie można najlepiej wyjaśnić na przykładzie. Istnieją 2 podejścia, których teraz używam, mówiąc, że mam obiekt/klasę Invoice: pierwsze to użycie statycznych funkcji składowych class Invoice { int id; ciąg ref; int identyfikator_klienta; Data utworzenia; termin płatności; identyfikator statyczny create(); aktualizacja static bool (id, pole1, pole2, ...); usuwanie (id) statycznego bool; static bool get(id); }; Drugim podejściem jest umieszczenie wszystkiego w obiekcie bazy danych: class Database extends ProprietaryDBConnecter, Singleton { id createInvoice(); bool updateInvoice(id, pole1, pole2, ...); bool usuńFakturę(id); bool pobierz fakturę(id); id utwórzKlienta(); bool updateCustomer(id, pole1, pole2, ...); bool usuńKlienta(id); bool getCustomer(id); // itd... } Uważam, że oba sposoby funkcji składowych (SQL) są bardzo nieoddzielne od "widoku", ponieważ "widok" określa, co klasy muszą mieć, a zatem wydaje się, że psuje dokument/widok architektura. Ponadto wydaje się to trochę nieefektywne, na przykład instrukcja SELECT powinna wybierać tylko to, co jest potrzebne, ale obecność zmiennych składowych w fakturze wydaje się sugerować „dane gwarantowane”. Nie wiem, czy jasno wyjaśniłem pytanie: Jakie są inne najlepsze podejścia do tej architektury/wzorca projektowego/co-to-jest-znane-jak? Dzięki za porady


title: Jak określić ilościowo korzyści ze szkolenia z programowania?

text: Prowadzę szkolenie z programowania od 3 miesięcy. Szczegóły w tym linku - Szczegóły szkolenia programowania. Moje pytanie brzmi: „Jak wyliczyć korzyści z takiego szkolenia?”. Myślę, że dwa ważne czynniki, na których należy się skoncentrować, to: - Jakość kodu - Wydajność Moje obecne myślenie polega na tym, aby grupa rozwiązała problem pierwszego dnia szkolenia i porównała go z tym, jak grupa rozwiązuje podobny problem w ostatnim dniu dzień szkolenia. **Edytuj 1 :** Dziękujemy za opinię. Jest to program, który planuję rozszerzyć na inne zespoły, jeśli się powiedzie. A tam przez przemyślenia, jak określić ilościowo korzyści. Zgadzam się, że wszystkie odpowiedzi mówią: „Trudno to określić ilościowo!” Odbyłem dalsze dyskusje na zewnątrz, które pomogły mi zrozumieć, że pomiary mogą nawet przynieść odwrotny skutek.


title: Dlaczego OOP jest wymuszany w Javie i C#?

text: W wielu innych językach, takich jak C++ i JavaScript, OOP jest opcjonalne. Kod proceduralny jest w porządku. Ale w językach takich jak Java i C#, OOP jest nieco wymuszane. Wszystko ma być częścią klasy lub przedmiotu. Jakie są korzyści?


title: Typy w Lisp i Schemat

text: Teraz widzę, że Racket ma typy. Na pierwszy rzut oka wydaje się to prawie identyczne z pisaniem Haskella. Ale czy CLOS Lispa obejmuje niektóre z kosmosu okładek Haskella? Tworzenie bardzo ścisłego typu Haskell i obiektu w dowolnym języku OO wydaje się niejasno podobne. Po prostu wypiłem trochę kool-aidów Haskella i mam całkowitą paranoję, że jeśli pójdę drogą Lisp, zostanę przerąbany z powodu dynamicznego pisania.


title: Czy curry jest zbyt skomplikowanym narzędziem, którego można użyć?

text: Dziś czuję się, jakbym w końcu najadł się curry (w Javascript) i oczywiście, jak każdy programista, który nauczył się nowej sztuczki, mój umysł natychmiast zaczął ścigać się, jak ulepszyć moją obecną bazę kodu, używając go. I znowu, jak każdy programista, mały głosik krzyczy „[nowa sztuczka] wszystkie rzeczy!” został uciszony innym powiedzeniem: „[nowa sztuczka] jest naprawdę złożona. Może nie powinieneś jej używać”. W końcu curry to cukier. Rozumiem, że nie ma nic złego w korzystaniu z funkcji z umiarem, zwłaszcza tak skomplikowanej jak curry, ale dla uproszczenia powinienem unikać jej używania, jeśli wystarczy coś równie wydajnego?