title: Praca z wieloma klientami

text: Po aplikowaniu na wiele kontraktowych stanowisk dostałem kilka rozmów kwalifikacyjnych, które następnie zostałem przyjęty do pracy. Jestem również studentem w pełnym wymiarze godzin, ale mam około 25-30 godzin tygodniowo, więc to nie jest problem. Mój problem polega na tym, jak **efektywnie zarządzać tym czasem**? Jedna z pozycji kontraktujących zaczyna się w przyszłym tygodniu, a ja już wczoraj zacząłem. Jak dostosować swój harmonogram do swoich klientów, aby dać im jak najwięcej czasu w ciągu dnia i nie utknąć w wąskiej ścieżce pracy dla jednego, dopóki nie poczujesz się skończony? Moi klienci wiedzą, że mam inną pracę, ale nie chcę, żeby myśleli, że wpłynie to na ich pracę, ani też nie chcę, żeby tak było. Jeśli możesz udzielić porady na temat podobnych doświadczeń związanych z **rzeczami, na które warto zwrócić uwagę**, lub tego, jak wielu klientów wpłynęło na **jakość pracy**. Mam nadzieję, że nie jest to zbyt subiektywne ani zbyt szczegółowe, więc skomentuj to ponownie, abym mógł to naprawić. Dziękuję!


title: jak oddzielić logikę różnych widoków podczas korzystania z androida viewFlipper?

text: Używam ViewFlipper w oknie dialogowym. Chcę pobrać dane z EditText w obu z nich, a także dodać detektory kliknięć do obu z nich. Mogę napisać cały kod w jednym dużym pliku, ale chcę rozdzielić logikę na różne pliki. ponieważ nie potrzebuję UI i pełnego cyklu życia, nie używam Aktywności, ale zwykłych menedżerów. co powinienem przekazać tym menedżerom, aby używali `findViewById()`? jeśli przekażę kontekst, jak mogę pobrać widok główny interfejsu użytkownika?


title: W jaki sposób ludzie obsługują powiadomienia o zmianach w bazie danych?

text: Wielu klientów może modyfikować bazę danych i wszyscy muszą zostać powiadomieni, jeśli nastąpi zmiana bazy danych. Tam, gdzie pracuję, jest to zaimplementowane za pomocą wątków aplikacji, które co sekundę odpytują bazę danych. Nie wydaje mi się to dobrym sposobem na zrobienie tego, więc zastanawiałem się, jak ludzie zwykle sobie z tym radzą?


title: Czy mogę ponownie sformatować kod innego programisty podczas modyfikowania/dodawania do modułu?

text: Podczas tworzenia w atmosferze grupowej i dodawania lub modyfikowania funkcji w jakiejś bazie kodu. Czy jest uważane za obraźliwe lub niegrzeczne ponowne sformatowanie poprzedniego kodu programistów w celu dostosowania go do obecnych standardów kodowania? Rozumiem, że standardy się zmieniły i prawdopodobnie będą się zmieniać, ale czy ktokolwiek z was poczułby się urażony, gdyby ktoś przyszedł i zmienił formatowanie kodu? Żeby było jasne, nie mówię o zmianie logiki, po prostu bawię się tabulatorami i spacjami i tak dalej. EDYCJA: Robię to nie tylko ze względu na standardy kodowania, pomaga mi to czytać ich kod i aktualizować go, abym mógł w pełni zrozumieć logikę, która została zaimplementowana, zanim zacznę modyfikować krytyczne aplikacje.


title: Różnice między systemami szablonów HTML

text: Patrzę na backbone.js i zauważyłem, że obsługuje różne systemy szablonów (odnoszą się one konkretnie do Mustache.js, Haml-js i Eco, ale rozumiem, że może obsługiwać jeszcze więcej) (np. Pure i dust.js) pytanie brzmi naprawdę, dlaczego jest ich tak wiele? Co sprawia, że jeden jest lepszy lub inny od innych? Czy ktokolwiek może rzucić światło na swoje indywidualne mocne i słabe strony.


title: Gdzie ORM zacierają granice między kodem a danymi, jak decydujesz, jaka logika powinna być procedurą składowaną, a co należy zakodować?

text: Weź następujący pseudokod: CreateInvoiceAndCalculate(ItemsAndQuantities, DispatchAddress, User); Powiedzmy, że `CreateInvoice` wykonuje następujące czynności: * Tworzy nowy wpis w tabeli Faktury należącej do określonego Użytkownika, który zostanie wysłany na podany Adres Wysyłki. * Utwórz nowy wpis w tabeli InvoiceItems dla każdego z elementów w ItemsAndQuantities, przechowując element, ilość i koszt elementu od teraz (wyszukując go z tabeli Items) * Oblicz łączną kwotę fakturę (np. koszty wysyłki i podatki) i przechowuj ją w nowym wierszu Faktura. Na pierwszy rzut oka nie będziesz w stanie stwierdzić, czy była to metoda w kodzie mojej aplikacji, czy procedura składowana w bazie danych, która jest udostępniana jako funkcja przez ORM. I do pewnego stopnia nie ma to większego znaczenia. Teraz technicznie nic z tego nie jest logiką biznesową. Nie podejmujesz żadnych decyzji - po prostu wykonujesz obliczenia i tworzysz rekordy. Jednak niektórzy mogą argumentować, że ponieważ wykonujesz obliczenia, które mają wpływ na firmę (całkowita kwota do zafakturowania), nie jest to coś, co powinno być wykonane w procedurze składowanej, a zamiast tego powinno być w kodzie. Więc dla tego konkretnego przykładu - dlaczego bardziej odpowiednie byłoby zrobienie jednego lub drugiego? A gdzie rysujesz linię? A może ma to szczególne znaczenie, o ile jest wystarczająco dobrze udokumentowane?


title: Wymaganie portfeli programistycznych w rozmowach kwalifikacyjnych/rekrutacji

text: Słyszałem o kilku wzmiankach o portfelach programistycznych. Portfel programistyczny składający się ze znacznej ilości kodu lub segmentów kodu. Czy portfolio programistyczne jest dobrym wyznacznikiem jakości programisty? Kolejną częścią tego pytania jest to, jak odrzucić prośbę potencjalnego pracodawcy o portfolio?


title: Właściwe wykorzystanie SQL CLR

text: Mamy kilka procesów zaplecza, które działają* na naszym serwerze sql (SQL Server), dotyczą przetwarzania oświadczeń. Wymaga to zarówno manipulacji danymi (logika biz), jak i odczytu/zapisu danych w tabelach. Zawarta logika biz nigdy nie powinna być używana przez żadną z naszych aplikacji użytkownika końcowego (klienta internetowego/grubego), tylko do tego (uruchamia się raz, co noc) procesu. * Przez „uruchomienie” rozumiem, że działa, ale jest powolny, pełny lub zawiera błędy i jest koszmarem w utrzymaniu. Chcemy to powtórzyć, aby rozwiązać te problemy. Jedną rzeczą, której staram się uniknąć, jest napisanie ponad 3000 linii Stored Proc (mamy kilka), która robi wszystko, nie jest możliwa do utrzymania. Moje początkowe przemyślenia/podejście to użycie: * SQL CLR (Sql 2012 / C# .Net 4.0) dla logiki biz (logika będzie pewna złożoności) * Entity Framework dla dowolnego prostego odczytu/zapisu CRUD * Procedury składowane dla dowolnych złożony odczyt/zapis danych. Nastąpi ostatni krok polegający na zapisaniu naszych wyników końcowych (danych) do baz danych innych firm, ale to ktoś inny odpowiedzialny. Chciałbym kilka przemyśleń na temat tego podejścia, jeśli jest dobre (czy jest lepsze podejście?), wszelkie sugestie będą mile widziane.


title: modyfikować źródło oprogramowania chronionego prawem autorskim

text: Istnieje program, którego chcę użyć, który jest udostępniany na dwa (w pełni chronione prawem autorskim) sposoby: 1. Stabilna forma binarna 2. Wersja beta, w większości stabilna forma binarna, która jest łatwa do uzyskania (wykorzystuje pliki jar) (ta wersja jest za darmo) Pytanie: 1. Czy mogę legalnie pobrać wersję beta, wprowadzić niezbędne zmiany, aby działała poprawnie na moim komputerze, przekompilować, a następnie korzystać z oprogramowania? 2. Jeśli tak na pytanie 1, czy mogę wyjaśnić osobom, z którymi pracuję, jak zrobić to samo, aby oni również mogli korzystać z produktu? W żaden sposób nie dałbym im zmodyfikowanego oprogramowania, a raczej rozprowadziłbym instrukcje, jak je zmodyfikować. Oryginalne pobranie nadal pochodziłoby od właściciela praw autorskich. Uważam, że dołożyłem należytej staranności przeszukując te i fora Google, ale jak zawsze, jeśli znajdziesz zduplikowane pytanie, daj mi znać (i wskaż, gdzie się znajduje). Wydaje mi się dziwne, że nie zostało to jeszcze omówione.


title: Jak radzić sobie z nieoczekiwanymi zmianami schematu w produkcyjnej bazie danych

text: Czy spotykanie się w produkcyjnej bazie danych ze zmianami schematu, zwłaszcza ze zmienionymi nazwami lub usuniętymi kolumnami, bez powiadomienia o zmianie, jest powszechną lub normalną praktyką? Jeśli w produkcyjnej bazie danych są przewidywane nieoczekiwane zmiany schematu, w jaki sposób są one chronione, poza podstawową obsługą wyjątków? Pracowałem głównie z oprogramowaniem kas kredytowych, oprogramowaniem DoD, aplikacjami webowymi e-commerce, systemami nieruchomości, robotyką, a ostatnio systemami CMMS, GIS i SCADA. Chociaż lata 90. i wczesne 2000 były bardziej dzikim zachodem, wszystko, z czym byłem związany przez ostatnie 10 lat, wymagało zarządzania zmianami. Modyfikacje produkcyjnej bazy danych bez kontroli zmian nie są dozwolone przez zasady i kontrole bezpieczeństwa. Komentarze w przyjętej odpowiedzi na to pytanie – Dlaczego „Wybierz * z tabeli” jest uważane za złą praktykę, sprawiają, że zastanawiam się, ile z tego jest akademickie, a ile rzeczywistości.


title: Jak nawiązać kontakty z innymi programistami?

text: Jakie sugestie byś dał, aby znaleźć możliwości nawiązywania kontaktów lub nawiązywania kontaktów w grupach użytkowników i innych miejscach dla deweloperów? Na przykład, gdybyś poszedł na obóz kodowania, czy spróbowałbyś tam nawiązać kontakt z innymi programistami? Jak byś to zrobił? Czy podszedłbyś do kogoś, kogo nie znasz, na lunchu i przedstawił się? Niedawno uczestniczyłem w spotkaniu grupy użytkowników i uznałem to za nieco nudne. Tylko kilka osób naprawdę wydawało się rozmawiać z innymi. Większość uczestników wydawała się trzymać dla siebie. Czy to typowe dla programistów? Nigdy nie byłem dobry w networkingu, prawdopodobnie trochę introwertyczny wobec ludzi, których nie znam, więc networking nie jest moją mocną stroną. Jednak na pewno chciałbym się bardziej rozwinąć i poznać innych programistów.


title: obsługa skryptów w aplikacji C#

text: jaki jest najprostszy i najszybszy sposób obsługi prostych skryptów w aplikacji .Net? Dużo szukam, ale znajduję tylko wiele rzeczy bez praktycznej dokumentacji lub przestarzałych od lat. Potrzebuję tylko przenieść prosty obiekt .Net do skryptu i uzyskać z niego wynik bool.


title: Czy ktoś ma konkretny przykład użycia wzorca wagi muchowej?

text: Studiowałem wzorce projektowe i natknąłem się na wzór ciężaru muchy. Próbowałem zobaczyć możliwości wykorzystania wzorca w moich aplikacjach, ale mam problem ze zrozumieniem, jak z niego korzystać. Ponadto, jakie są oznaki, że wzorzec wagi muchy jest używany, kiedy czytam kod innych ludzi? Zgodnie z definicją mówi ona: > Używaj współdzielenia, aby efektywnie obsługiwać dużą liczbę drobnoziarnistych obiektów. Jeśli dobrze przeczytałem, słowniki i tablice haszujące mogą być przykładami ciężarków muchowych, czy to prawda? Z góry dziękuję.


title: używanie nadrzędnych okien podrzędnych — czy chrome to wycofuje?

text: Często używam wyskakujących okienek podrzędnych w mojej aplikacji internetowej opartej na przeglądarce. Przykłady obejmują użycie dziecka do wyszukiwania informacji, które są przekazywane z powrotem do zaktualizowanego formularza rodzica lub używam dziecka do aktualizowania informacji o zestawie rekordów, które następnie aktualizują i odświeżają rodzica. Obecny kod działał świetnie w IE od lat i do ostatniej aktualizacji Chrome (wersja 34.0.1847.116) działał również w Chrome. Teraz nie ma. Z tego, co przeczytałem, wygląda na to, że Chrome w szczególności uniemożliwia przekazywanie uwagi rodzicowi przez dziecko. Nie rozumiem, dlaczego tak jest. Jest prosty, intuicyjny i łatwy. Czy ktoś może rzucić na to trochę światła? A jakie są przemyślenia na temat wykorzystania rodzic-dziecko w ten sposób jako metody? Mam nadzieję, że wyraziłem się jasno :) Z góry dziękuję.


title: Jaka jest idealna długość przeglądu/retrospektywy sprintu w oparciu o długość iteracji?

text: Brałem udział w kilku projektach wykorzystujących Scrum. Długość przeglądu sprintu i/lub retrospektywy różniła się w zależności od klienta, od projektu do projektu. Niektóre recenzje stały się zbyt długie (2 dni). Czasami traciłem skupienie podczas tych długich spotkań i chciałem po prostu wrócić do mojego bezpiecznego i szczęśliwego miejsca (moje krzesło przed komputerem). Jaka jest idealna długość tych spotkań? Jaki jest najlepszy sposób na uniknięcie długich spotkań?


title: Czytanie z pliku i wstawianie do bazy danych, dobra praktyka

text: Tworzę aplikację na Androida, która odczytuje kilka plików JSON i wstawia odczytane informacje do tabel w mojej bazie danych. Na przykład istnieją trzy pliki: 1. countries.json { "countries": [ { "name": "United States", "org_ids": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }, { "name": "Chiny", "org_ids": [ { "id": 1 }, { "id": 2 } ] }, { "name": "Hongkong ", "org_ids": [ { "id": 3 }, { "id": 4 }, { "id": 5 } ] } ] } 2. orgs.json { "orgs": [ { "id": 1, "name": "UNO" }, { "id": 2, "name": "Organizacja Stanów Zjednoczonych" }, { "id": 3, "name": "INTERPOL" }, { "id" : 4, "name": "Unii Europejskiej" }, { "id": 5, "name": "Wspólnota Narodów" } ] } 3.kontynenty.json { "kontynenty": [ { "id": 1 , "name": "Afryka" }, { "id": 2, "name": "Ameryka Północna" }, { "id": 3, "name": "Ameryka Południowa" }, { "id": 4 , "name": "Asia" }, { "id": 5, "name": "Europa" }, { "id": 6, "name": "Australia" } ] } Proszę nie zwracać uwagi na zawartość moich plików JSON nie zawiera rzeczywistych członków wymienionych organizacji międzynarodowych. To tylko przykład. Widzę dwa sposoby. **PRZEGLĄDNY SPOSÓB.** Przechowuj każdy kraj z jego danymi w instancji klasy i zdefiniuj `SparseArray` zawierający identyfikator kraju jako klucz i obiekt `CountryInfo` jako wartość. /** Każdy element zawiera identyfikator kraju (klucz) i odpowiednie dane (wartość) */ private SparseArray<CountryInfo> mCountriesInfo = new SparseArray<JsonParser.CountryInfo>(); Po odczytaniu wszystkiego z plików, dane z `SparseArray` zostaną wstawione do bazy danych. private class CountryInfo { String mCountryName; int identyfikator kontynentu; Ciąg mNazwaKontynentu; /** Zawiera identyfikatory (klucze) i nazwy (wartości) organizacji */ SparseArray<String> mOrgNames = new SparseArray<String>(); } **Wady.** * Im więcej JSON-ów (lub bardziej złożonych JSON-ów), tym bardziej złożona klasa do przechowywania. * Powielanie danych. **Korzyści** * Czytanie i wstawianie nie zależy od siebie. **TÓŻSZY SPOSÓB.** Czytaj i wstawiaj bez wcześniejszego zapisywania. **Wady.** * Logika bazy danych i logika odczytu są mieszane. **Korzyści.** * Brak dodatkowych zajęć. * Brak powielania danych. Który sposób jest lepszą praktyką?


title: Jak radzisz sobie z bólem związanym z nadmiernym pisaniem?

text: To chyba nie jest właściwe miejsce na to pytanie, ale wydaje mi się, że jest to tablica odwiedzana przez tysiące programistów, a ja jestem programistą i jest to powiązane, więc i tak bym spróbował. Nie jest to pytanie techniczne, a raczej fizyczne – skierowane głównie do programistów, którzy, jak wszyscy wiemy, prowadzą niezwykle intensywnie korzystający z klawiatury tryb życia. Ciągłe poruszanie się w przód i w tył, szybkie pisanie, niemal ekspercka płynność w posługiwaniu się klawiszami. Nie mogę być jedyną osobą, która cierpi z powodu długotrwałego przewlekłego bólu z tego wszystkiego. Więc zadaję pytanie innym programistom, jak zwalniasz? Jak obniżyć te ogromne szybkości pisania do poziomów, które pozwolą Ci funkcjonować w codziennym obciążeniu pracą? Obecnie próbuję nieznanych układów klawiatury, artretycznych rękawiczek, restrykcyjnych podkładek, a nawet narzędzi do opóźniania słów i mam wiele problemów z „nauczeniem się” wolniejszego pisania i nie oparzenia rąk. Przepraszam, jeśli to nie jest odpowiednia treść, po prostu znalazłem miejsce, w którym wszyscy programiści mieliby pewien wgląd.


title: Ramy trwałości i zdrowy rozsądek

text: Studiowałem niektóre frameworki trwałości, głównie Hibernate, DORM, TMS Aurelius i zastanawiam się. W modelu typu: TOrderFiscal < > ----- > Items < > -------- > TOrderItem ------- > TProduct TOrderFiscal --------- > TSuplier - -------- > TCidade -------- > Stan Każda klasa this z niezliczonymi atrybutami, wszystkie poprawnie odwzorowane na odpowiadające im tabele i pola. Gdy prowadzenie notatki bez użycia „Lazy Load” zawsze będzie wykonywane z kilkoma sprzężeniami, wybierz wszystkie pola, które mają pochodzić z każdej z tych klas. Ale byłoby to marnotrawstwem, ponieważ notatka potrzebuje tylko atrybutów kodu i nazwy dostawcy, atrybuty OrderItem potrzebują tylko kodu, nazwy ilości. Zbiory. Jakie rozwiązanie należy podjąć, aby stworzyć konkretnego dostawcę klasy z uwagami właśnie z tymi atrybutami? np. TOrder <> ----- > Items <> -------- > TOrderItem ------- > TNotaItemProduct TOrder -------- > TOrderSupplier Jeśli to jest rozwiązanie , jakie dzieje się, gdy regułą biznesową w TProduct powinno być również TOrderItemProduct? duplikuję kod w obu klasach? Czy dziedzictwo, np. TORderItemProduct i TProduct, oba dziedziczą po TBaseProduct ? Czy jest to problem, którego my, programiści, nie powinniśmy mieć?


title: Czy Windows nadaje się do programowania w Ruby?

text: Czytałem, że Windows nie jest zalecany do programowania w Rubim i jest to ostatnia rzecz, która powstrzymuje mnie przed rozpoczęciem niektórych projektów w Rubim. Czy są w tym jakieś zmiany? Lub jakieś sugestie, aby rozwój był mniej bolesny? PS. Bardzo lubię Win 7 jako desktop OS, ale do produkcji będę używał serwera Linux.


title: API biblioteki C++: nowe czy pobierające?

text: Piszę wrapper C++ dla mojej biblioteki C (moje umiejętności C++ są nieco zardzewiałe) i zastanawiam się, co jest lepsze: umożliwienie użytkownikowi samodzielnego konstruowania obiektów lub nadawania im obiektów za pomocą pobierających? Jaki byłby odpowiednik idiomatyczny C++ tej funkcji C? wynik* process_foo(biblioteka_uchwyt*, foo*); konstruktor taki jak ten: Result *res = new Result(library_handle, foo); czy taki getter? (który w zasadzie zawiera powyższy kod): Wynik *res = library->get_result(foo); Czy odpowiedź się zmienia, jeśli tworzenie wyniku może się nie powieść? Getter może zwrócić `NULL`, ale co powinna zrobić wersja konstruktora w przypadku niepowodzenia? AFAIK niektórzy ludzie nie lubią wyjątków. Dodatkowa metoda, taka jak `init()` lub `is_valid()`, nie wydaje się elegancka. OTOH obiekt `Result` przykleja się do RAII, jest mały z metodami wbudowanymi, więc może być dobrym kandydatem do alokacji stosu.


title: Mając dwie posortowane tablice w porządku rosnącym o tej samej długości N, oblicz Kth min a[i]+b[j]. Złożoność czasowa O(N)

text: Mając dwie posortowane tablice w porządku rosnącym o tej samej długości N, oblicz Kth min a[i]+b[j]. Złożoność czasowa `O(N).` Inny wariant pytania wygląda tak: mając macierz z posortowanymi wierszami i posortowanymi kolumnami, znajdź k-tą najmniejszą. Możemy łatwo sformułować rozwiązanie `O(klogk)` za pomocą minheap, ale wyzwaniem jest zrobienie tego samego w czasie `O(N)` ... Poniższy artykuł formułuje rozwiązanie, ale nie mogłem go zrozumieć. Czy ktoś może to wyjaśnić lub jakiś alternatywny pomysł? wskazówka: http://www.cse.yorku.ca/~andy/pubs/X%2BY.pdf


title: Kiedy używać MVC

text: Tworzę witrynę z PHP i zaplecza MySQL. Ale obecnie nie używam żadnego typu frameworka. Czy powinienem używać kontrolera widoku modelu?


title: Jak zapamiętać szczegóły (Core API) jednego języka komputerowego?

text: Zauważyłem, że często zatrzymywałem się, aby sprawdzić określone użycie jednego rdzenia API podczas pisania `javascript` lub `Ruby`. Zastanawiam się, jak radzą sobie inni faceci? Czy trzeba pamiętać o każdym użyciu Core API? Odpowiedź brzmi **tak** , jak to zrobiłeś **skutecznie**?


title: czy quicksort zapewnia mniej kroku wymiany?

text: Jak dotąd większość najszybszych i najczęstszych metod sortowania to sortowanie szybkie. Chociaż ma swoje wady i zalety. Myślę jednak, że chociaż ta metoda sortowania jest szybka, ale czy zapewnia najkrótszy krok wymiany? Ponieważ quicksort dzieli zestaw elementów na 2, a następnie sortuje, czy podwoi to krok wymiany?


title: Zarządzanie dużą liczbą plików app.config

text: Mamy wiele usług Windows i aplikacji internetowych, które opierają się na wielu wspólnych ustawieniach. Obecnie używamy tylko appSettings w razie potrzeby i są one przywoływane przez klucz. Niektóre ustawienia są specyficzne dla aplikacji i są znane tylko zespołowi ds. aplikacji, podczas gdy inne są specyficzne dla środowiska i znane tylko zespołowi wdrożeniowemu. Mamy również problemy, gdy musimy dokonać zmiany w typowych ustawieniach, co wymaga zmiany setek plików i ponownego uruchomienia wszystkich odpowiednich usług. Dzięki dużej różnorodności ustawień istnieją duplikaty, które nie są już używane, a wiele z nich nie oznacza tego samego dla różnych aplikacji. Aby rozwiązać ten problem, wpadłem na pomysł dwojakiego rodzaju: napisalibyśmy grupę sekcji niestandardowej konfiguracji dla firmy z niestandardowymi sekcjami konfiguracji dla każdej aplikacji i jedną dla wspólnych. Wspólna sekcja byłaby w stanie uzyskać dostęp przez usługę wcf i sprawdzić, czy wszystkie jej ustawienia są bieżącymi ustawieniami. Moje pytanie brzmi, czy wymyślam koło na nowo, czy istnieją jakieś dobre frameworki/projekty/produkty, które są zaprojektowane do zarządzania wieloma plikami konfiguracyjnymi w środowisku rozproszonym, a jeśli nie, to podejście, które zdecydowałem, należy przyjąć rozsądne.


title: Dlaczego Qt miałoby być uważane za szkodliwe?

text: Duża lista "szkodliwych rzeczy" związanych z tworzeniem oprogramowania znajduje się na cat -v. Czy Qt jest szkodliwe? Jakie byłoby uzasadnienie uznania Qt za szkodliwe? Dlaczego Tcl/Tk miałby być przedstawiany jako lepsza alternatywa?


title: Rozwój systemu operacyjnego w C++ Pytania

text: Jako projekt magisterski projektuję prosty system operacyjny. Został zaprojektowany do pracy w 16-bitowym trybie rzeczywistym na architekturze x86. Idealnie, chciałbym stworzyć ten system operacyjny w C++ i tylko tam, gdzie jest to konieczne. Do tej pory mam program ładujący napisany w asemblerze, który ładuje jądro będące mieszanką C++ i asm. Moje pytanie dotyczy używania C++. Jak na razie skompilował się i może działać, ale nie użyłem żadnej dynamicznej alokacji pamięci. Gdybym używał C, sensowne byłoby napisanie funkcji malloc, które obsługiwałyby alokację pamięci, ale w C++ używane jest słowo kluczowe new. Więc... **Jak "nowe" działa za kulisami, aby alokować pamięć i jak mam sobie z tym poradzić?** A jako następstwo... **Czy jest sens używać C++ do podjęcia korzyść z abstynencji na wyższym poziomie? A może używanie go byłoby bardziej kłopotliwe i czy powinienem trzymać się C?** Proszę podać uzasadnienie, jeśli uważasz, że C++ nie byłby dobrym wyborem.


title: Dlaczego kompatybilność wsteczna C++ jest ważna/konieczna?

text: O ile rozumiem, w społeczności C++ rozpowszechniona jest opinia, że niektóre funkcje C++ (w tym niektóre funkcje odziedziczone bezpośrednio z C), chociaż nadal są użyteczne same w sobie, nie pasują dobrze do najnowszych _najlepszych praktyk_ C++. Na przykład przeczytałem komentarz na tej stronie stwierdzający, że należy całkowicie unikać nowych / usuwać na rzecz inteligentnych wskaźników. W związku z tym często zastanawiam się, dlaczego wsteczna kompatybilność z C i wcześniejszymi funkcjami C++ jest nadal ważna: według mojej wiedzy nie ma 100% kompatybilności, ale większość C i C++ jest zawarta w C++11 jako podzbiór. Być może więc byłoby możliwe / sensowne wyrzucenie wcześniejszych funkcji C++ (np. wspomnianego nowego / usunięcia) z przyszłego standardu C++, aby nie można było ich użyć w nowym kodzie. Istniejący kod można nadal utrzymywać przy użyciu odpowiedniego kompilatora. Interoperacyjność między starszym a nowym kodem byłaby obsługiwana przez oddzielną kompilację. Można nadal używać wcześniejszego standardu lub przyjąć nowszy, tylko mieszanie tych dwóch nie byłoby możliwe: programista / zespół musiałby **wyraźnie wybrać** styl programowania, którego chce użyć. Najbardziej elastycznym rozwiązaniem byłoby posiadanie opcji kompilatora do włączania i wyłączania niektórych funkcji (np. brak nowych / dozwolone usuwanie). Czy byłaby to realna strategia zachęcania do przyjmowania nowoczesnych praktyk C++? Czy istnieją problemy techniczne (np. kompilacja istniejących szablonów, kompatybilność z ABI), które sprawiają, że taka zmiana jest zbyt trudna lub wręcz niemożliwa? **EDYTUJ** Zgodnie z sugestiami zawartymi w komentarzach i odpowiedziach skróciłem i częściowo przeredagowałem pytanie. To jest **NIE** pytanie C kontra C++. Jest to pytanie o najlepsze praktyki C++ i sposoby ich promowania. **EDYTUJ 2** Liczba głosów przeciwnych sugeruje mi, że sens pytania nie został przez niektórych zrozumiany. Zmieniłem sformułowanie, aby jeszcze bardziej podkreślić ten ważny punkt.


title: Jak zachować kompromis między liczbą kolumn w tabeli a operacjami złączenia?

text: Nauczyłem się, że jeśli w tabeli jest więcej kolumn, to uzyskaj te wyniki za pomocą zapytania sprzężenia. Jak określić maksymalną liczbę kolumn w tabeli? Jak wykonalne jest „Dołącz do operacji”, jeśli zaangażowanych jest zbyt wiele stolików? **A jeśli operacja łączenia szkodzi wydajności** Czy możemy zdefiniować wszystkie kolumny w jednej tabeli, aby pozbyć się operacji łączenia? Znalazłem wielu programistów, którzy mówili mi, że lepiej jest mieć kilka dodatkowych kolumn, jeśli są one często potrzebne w większości operacji na bazie danych, niż mieć wiele tabel.


title: Jakie przyzwoite web-frameworki istnieją dla programowania funkcjonalnego?

text: Chciałbym zrobić trochę programowania internetowego za pomocą programowania funkcjonalnego. Jakie przyzwoite web-frameworki istnieją dla funkcjonalnych języków programowania?


title: Przykłady z życia P, NP, NP twarde, NP Kompletne problemy

text: Muszę znać rzeczywiste lub rzeczywiste przykłady wyżej wymienionych problemów, dzięki!


title: Narzędzia do operowania na dużych ilościach danych tekstowych

text: Muszę obsłużyć i przetworzyć około 5 milionów artykułów z wiadomościami, ilość wystarczająco małą, aby zmieścić się na zwykłym pulpicie, ale zbyt dużą, aby przetwarzać ją seryjnie. Do tej pory używałem Pythona/`pickle` do serializacji, ale to łatwo wymyka się spod kontroli. Jednak nie mam serwera, a tym bardziej klastra od razu dostępnego do rozproszonego przechowywania. Jakich narzędzi mogę używać do przechowywania, wykonywania zapytań i operowania na tym rozmiarze zbioru danych? Większość operacji, które muszę wykonać, można sformułować jako operacje na mapie; jedynym wyjątkiem jest to, że część przetwarzania języka naturalnego jest obsługiwana przez wywołanie pakietu oprogramowania CoreNLP Stanforda (potrzeba kilku sekund, aby załadować kilka dużych plików parametrów).


title: Co najmniej jeden widok bazy danych na tabelę bazy danych — czy to dobry czy zły projekt i dlaczego?

text: Tworzymy aplikację opartą na systemie Windows Mobile, która będzie współpracować z istniejącą aplikacją internetową klienta. Odczytujemy i zapisujemy dane do bazy danych SQL Server 2008 klienta. Klient chce, aby wszystkie odczyty odbywały się za pośrednictwem widoków SQL, a wszystkie zapisy odbywały się za pośrednictwem procedur składowanych. Ale patrząc na ich schemat bazy danych, mają widok na każdą tabelę. I mają widok na każde zapytanie, które byłoby używane do odczytu danych, zamiast korzystać z istniejących widoków w ich tabelach. Do tej pory mają 348 tabel i 655 widoków. Chcą, abyśmy w podobny sposób zamodelowali naszą aplikację mobilną, czyli stworzyli dodatkowe widoki dla wszystkich zapytań, których używamy do pobierania danych. Wiem, że to kiepski projekt, ale nie jestem w stanie wyjaśnić klientowi, dlaczego jego strategia oparta na poglądach jest kiepska. Jaki jest konsensus w społeczności co do tego, kiedy używać widoków? W jaki sposób posiadanie tak wielu widoków wpływa na wydajność serwera SQL?


title: Dobre zasoby do nauki Railsów?

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna księga o Ruby on Rails? Właśnie skończyłem pracę nad „Beginning Ruby” Petera Coopera. Więc teraz mam rozsądne podstawy w języku Ruby i chciałbym przejść do nauki Railsów. Odpowiedzi na to pytanie dają dobre wskazówki, ale chciałbym posłuchać konkretnych recenzji książek i materiałów internetowych. Generalnie najlepiej się uczę, pracując z książkami z dobrymi praktycznymi/technicznymi przykładami ORAZ pewnymi pasywnymi treściami do czytania, które rozdzielają naukę między sesjami praktycznymi i czytającymi (to właśnie sprawiło, że "Beginning Ruby" było dla mnie świetne), ale martwię się, że RoR szybko ewoluuje i każda drukowana książka, którą zamawiam, może być przestarzała, zanim ją dostanę i przerobię. Czy to uczciwe zmartwienie? A może ktoś może polecić dobrą książkę o Rails 3, która powinna być aktualna przynajmniej przez następny rok? Ponadto, rzuciłem okiem na niektóre zasoby online z innych pytań, a Rails for Zombies wydaje się być bardzo chwalone. Czy ktoś tutaj faktycznie użył go jako przewodnika wprowadzającego do Railsów? Zasadniczo chciałbym usłyszeć relacje z pierwszej ręki osób, które niedawno przeszły przez fazę nauki „Ruby-to-Rails” i które materiały były dla Ciebie przydatne.


title: Jak powinienem się uczyć Ruby i Rails?

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna księga o Ruby on Rails? Naprawdę chcę zmienić moją specjalizację PHP na Ruby. Mam trochę doświadczenia z Ruby/Rails i stworzyłem już kilka aplikacji Ruby i kilka aplikacji Rails, ale chcę sięgnąć głębiej. Mam na co dzień ograniczony czas na naukę, więc szukam skutecznego sposobu na doskonalenie swoich umiejętności. Chcę nauczyć się i zrozumieć wiele tematów specyficznych dla Rubiego, np.: * Styl kodowania Ruby * Zrozumienie wewnętrznych elementów Ruby/Rails * OOP i realizacja funkcjonalna * Wzorce OO w Ruby Również wszelkie inne technologie związane z Ruby i Rails, które pośredniczą/starszymi programistami powinien wiedzieć. Nie chcę się mylić czytając/oglądając wszystko bez planu, więc potrzebuję dobrej mapy drogowej; Sam mógłbym stworzyć ten plan, ale chciałbym usłyszeć porady od bardziej profesjonalnych programistów. **Aktualizacja: oto co mam do tej pory** : 1. Naucz się niejasnych części składni Rubiego; części, które nie są wyjaśnione w książkach, które po prostu obejmują składnię. 2. Naucz się TestUnit. 3. Naucz się TDD i używaj go za każdym razem, gdy piszę kod. 4. Naucz się wzorów Ruby. Architektura OO Rubiego różni się od PHP/Java/C++, więc wzorce wyglądają inaczej. 5. Naucz się technik metaprogramowania. 6. Napisz własny serwer WWW, który ma wspólne cechy, np. oparte na procesach, oparte na wątkach. Opublikuj go na GitHub i uzyskaj pomoc od innych w stackoverflow itp. 7. Kopnij do racka. 8. Zagłębić się w przydatne klejnoty i narzędzia, takie jak: rake, haml, sass, rspec, nokogiri, capistrano, cucumber itp. 9. Napisz własny prosty framework MVC, który wykorzystuje kilka ORM-ów. Opublikuj go na GitHub i uzyskaj pomoc od innych na stackoverflow itp. 10. Naucz się Railsów, ucząc się każdego tematu z różnych źródeł: książek, artykułów, screencastów. Na przykład: ucz się generatorów z książek, z railscastów, wyszukiwania w stackoverflow, google groups itp. 11. Przeczytaj tematy związane z Railsami w Crafting Rails Applications, płatne screencasty z RailsCasts, PeepCode, TekPub, Rails for Zombies v2.


title: Czy istnieje dobra instrukcja obsługi ruby/rails?

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna księga o Ruby on Rails? Przejście z Javy na Ruby/Rails jest dla mnie bardzo trudne. Czuję, że książki i strony internetowe o szynach, które widziałem, są programami na przykładach, a jeszcze nie widziałem czegoś takiego, jak kompletne odniesienie. W świecie java/spring istnieje wiele przykładów, ale także bardzo dokładne instrukcje. Więc chociaż mogę uruchomić zabawkową aplikację xyz po południu z szynami, obawiam się, że zrobię coś ważnego. Chętnie przyznam, że może to dlatego, że od kilku lat uprawiam javę/wiosnę i mam prawie zerowe doświadczenie z rubinami/rails. Zastanawiam się tylko, czy ktoś jeszcze w to wpadł, czy coś mi brakuje.


title: Propozycje dotyczące książek kolejowych

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna księga o Ruby on Rails? Chcę się nauczyć Ruby on Rails. Mam już małe doświadczenie w Ruby i nie potrzebuję książki, która obejmuje obie te rzeczy, ponieważ kilka dni temu zamówiłem książkę o kilofach. Niedawno przeczytałem część Beginning Ruby on Rails-Steven Holzner, ale porzuciłem to po zobaczeniu wielu stwierdzeń na SO o tym, jak okropny był w nim kod, a także o tym, że używał Rails 1… Zastanawiałem się tylko, co jest najlepsze książka dla ABSOLUTNEGO POCZĄTKUJĄCEGO w Railsach?


title: Kwestie prawne tworzenia wersji klasycznej gry (Snake)

text: Niedawno stworzyłem wersję Snake, klasycznej gry spopularyzowanej przez Nokię i zamierzam wykorzystać ją jako przykład moich umiejętności w zakresie tworzenia gier. Chcę tylko wiedzieć, czy są jakieś problemy z prawami autorskimi, które mogą się pojawić, jeśli to zrobię?


title: Java SE i Java EE?

text: Rozmawiałem teraz z kilkoma ludźmi i powiedzieli mi, że jeśli jestem zainteresowany pracą w przyszłości w programowaniu w języku Java, nie powinienem spędzać zbyt dużo czasu tylko na nauce Java SE, powinienem zamiast tego poświęcić czas na naukę Java EE. na kilka pytań. Java Enterprise Edition dlaczego warto korzystać z tego? Co mogę z tym zrobić, czego nie mogę zrobić w Java SE? I do jakich aplikacji jest to dobre? Czy są jakieś dobre książki, które mogę przeczytać, aby nauczyć się Java EE? Jeśli dobrze znam Java SE, czy łatwiej jest nauczyć się Java EE? Dziękuję! Będę dalej przeglądał Internet w poszukiwaniu odpowiedzi na te pytania.. A jeśli coś znajdę, zaktualizuję to pytanie.


title: Jaka jest różnica między Enterprise Java a Core Java?

text: Mam pewne doświadczenie w programowaniu w Javie, ale zastanawiam się, czy ktoś mógłby wyjaśnić, jaka jest różnica między Enterprise Java a Core Java? Ktoś zadał mi pytanie, czy używam core-Java czy Enterprise Java. Teraz muszę zapytać, czy istnieje coś takiego jak core-java?


title: Dystrybucja bibliotek

text: Jak zwykle dystrybuowane są biblioteki? Ponieważ muszą być skompilowane z **tym samym kompilatorem** w **tych samych ustawieniach** co projekt, który go używa, rozpowszechnianie plików `.dll`, `.lib` itp. wydaje się niepraktyczne. Czy kod źródłowy został właśnie udostępniony do pobrania?


title: Jaka jest różnica między informatyką a programowaniem?

text: Jestem nowy w informatyce i programowaniu i zastanawiałem się, czy jest różnica między informatyką a programowaniem? i czy możesz zdecydować się na studiowanie tylko jednego z nich na uniwersytecie, czy obu?


title: Jakie elementy umieszczasz w dokumencie analizy wpływu?

text: Więc naprawiasz błędy, a potem napotkałeś taki, który może mieć wpływ na inne moduły oprogramowania. Twoje dane nie są wystarczające do poparcia Twojego twierdzenia o skutkach poprawki i zostałeś poproszony o utworzenie dokumentu analizy wpływu. 1. Czy istnieje zdefiniowany proces, jak to zrobić? 2. Jakie są potrzebne kluczowe informacje? 3. Czy istnieją znane formaty/szablony tego dokumentu?


title: Znajdź materiał do poprawy moich umiejętności SQL

text: Potrzebuję dużo przeszkolenia w zakresie kodowania SQL na serwerze MS SQL Kolejna część, którą należy poprawić to: * skrypt * T SQL * Procedura * Funkcja Problem: Skąd mogę uzyskać materiał do poprawy moich umiejętności w zakresie kodowania SQL? Czy jest jakaś strona internetowa do pobrania bazy danych z innym zadaniem/zadaniem i rozwiązaniem? Gdzie powinienem się udać, aby przejrzeć wiele kodu SQL?


title: Projektowanie zarządzania statusami modułu przetwarzania plików

text: **Tło** Jedną z funkcjonalności produktu, nad którym aktualnie pracuję, jest przetwarzanie zestawu skompresowanych plików (zawierających pliki XML), które będą okresowo udostępniane w stałej lokalizacji (lokalizacja lokalna lub zdalna - nie nie ma to na razie znaczenia) i zrzuć zawartość każdego pliku XML do bazy danych. Zająłem się projektem ogólnego modułu analizującego, który powinien być w stanie pomieścić analizowanie dowolnego typu pliku, jak wyjaśniłem w moim pytaniu połączonym poniżej. Nie ma potrzeby zaglądania na poniższy link, aby odpowiedzieć na moje pytanie, ale na pewno zapewniłoby to lepszy kontekst problemu Projektowanie parsera plików generycznych w Javie przy użyciu wzorca Strategia **Cel**, który chcę zachować ścieżka statusu każdego pliku XML i status każdego skompresowanego pliku zawierającego pliki XML. Prawdopodobnie mogę mieć zdefiniowane różne statusy dla plików XML, takie jak NOWY, PRZETWARZANIE, ŁADOWANIE, UKOŃCZONE lub NIEUDANE. Status skompresowanego pliku mogę uzyskać na podstawie statusu plików XML w skompresowanym pliku. np. status skompresowanego pliku to COMPLETE, jeśli żaden plik XML w skompresowanym pliku nie jest w stanie FAILED lub status skompresowanego pliku to FAILED, jeśli status przynajmniej jednego pliku XML w skompresowanym pliku to FAILED. **Możliwe rozwiązanie** _Model_ Muszę utrzymywać status każdego pliku XML i skompresowanego pliku. Będę musiał zdefiniować kilka POJO do przechowywania informacji o pliku XML, jak pokazano poniżej. Należy zauważyć, że nie ma potrzeby przechowywania statusu skompresowanego pliku, ponieważ status skompresowanego pliku można określić na podstawie statusu jego plików XML. public class FileInformation { private String skompresowanyFileName; private String xmlFileName; prywatny long lastModifiedDate; prywatny status int; public FileInformation (końcowy ciąg skompresowanyFileName, końcowy ciąg xmlFileName, końcowy długi lastModified, końcowy stan int) { this.compressedFileName = compressFileName; this.xmlFileName = xmlFileName; this.lastModifiedDate = lastModified; ten.status = status; } } Mogę wtedy mieć klasę o nazwie StatusManager, która agreguje instancje Map of FileInformation i dostarcza mi status danego pliku w dowolnym momencie życia aplikacji, jak pokazano poniżej: public class StatusManager { private Map<String,FileInformation > processingMap = new HashMap<String,FileInformation>(); public void add(FileInformation fileInformation) { fileInformation.setStatus(0); // 0 oznacza, że plik jest w stanie NOWY. 1 wskaże, że plik jest w toku itd. processingMap.put(fileInformation.getXmlFileName(),fileInformation); } public void update(String filename,int status) { FileInformation fileInformation = processingMap.get(nazwa pliku); fileInformation.setStatus(status); } } To zajmuje się modelem ze względu na wyjaśnienie. _**Więc jakie mam pytanie?_** Zredagowane po komentarzach Lokiego i odpowiedzi Erica: - Chciałbym wiedzieć, czy istnieją jakieś istniejące wzorce projektowe, do których mogę się odwołać podczas tworzenia projektu. Chciałabym również wiedzieć, jak powinienem zabrać się za projektowanie klas zarządzania statusem. Bardziej interesuje mnie zrozumienie, w jaki sposób mogę modelować zajęcia z zarządzania statusem. Nie interesuje mnie, jak inne komponenty będą aktualizowane w tej chwili o zmianie statusu, jak sugeruje Eric.


title: Czy programiści myślą inaczej niż nie-programiści?

text: Czytając różne komentarze na tej stronie, surfując po sieci i rozmawiając z innymi programistami/nie-programistami, odkryłem, że powracającym motywem jest to, że programiści myślą inaczej niż nie-programiści. Czy naprawdę myślisz, że tak jest? Czy programiści nie są po prostu ludźmi, którzy mają umiejętności, które mogą być trudne do szczegółowego wyjaśnienia nie-programistom? Czy nie jest to ten sam problem, który ma każda wykwalifikowana osoba, wyjaśniając to komuś niewykwalifikowanemu w tej samej dziedzinie? Edycja 2: Hakerzy i malarze – To jest link z odpowiedzi Michaela. Zdecydowanie warto przeczytać, jeśli masz wolne 15 minut Edytuj: Oto link wyjaśniający moje pytanie Programiści myślą inaczej niż nie-programiści Autor tego bloga stoi na stanowisku, że programiści nie myślą inaczej niż inni. Czy ktoś się z tym nie zgadza? Jeśli tak, dlaczego?


title: Testy jednostkowe dla naukowej biblioteki obliczeniowej

text: Miałem już trochę doświadczenia z testowaniem jednostkowym, w czymś, co nazywam (nie pejoratywnie) klasycznym projektem inżynierii oprogramowania: MVC, z graficznym interfejsem użytkownika, bazą danych, logiką biznesową w warstwie środkowej itp. Teraz” m pisanie naukowej biblioteki obliczeniowej w C# (tak, wiem, że C# jest zbyt wolny, używaj C, nie wymyślaj na nowo koła i tak dalej, ale na moim wydziale mamy wielu ludzi zajmujących się obliczeniami naukowymi w C#, i trochę tego potrzebujemy). To mały projekt, jak na branżę programistyczną, bo piszę go głównie sam, a od czasu do czasu z pomocą kilku kolegów. Poza tym nie dostaję za to zapłaty, a co najważniejsze, to projekt akademicki. To znaczy, spodziewam się, że pewnego dnia będzie miał profesjonalną jakość, ponieważ planuję przejść na open source i mam nadzieję, że z odpowiednim czasem powiększy społeczność programistów. W każdym razie projekt robi się duży (około 18 000 linijek kodu, co moim zdaniem jest duże jak na projekt jednego człowieka) i wymyka się z moich rąk. Używam git do kontroli źródeł i myślę, że wszystko w porządku, ale testuję jak old school, to znaczy piszę pełne aplikacje konsolowe, które testują dużą część systemu, głównie dlatego, że nie mam pojęcia jak zrobić testy jednostkowe w tym scenariuszu, chociaż czuję, że to właśnie powinienem robić. Problem polega na tym, że biblioteka zawiera głównie algorytmy, na przykład algorytmy grafowe, klasyfikatory, solwery numeryczne, rozkłady losowe itp. Po prostu nie wiem, jak określić małe przypadki testowe dla każdego z tych algorytmów, a ponieważ wiele z nich jest stochastyczny nie wiem jak sprawdzić poprawność. Do klasyfikacji służą na przykład niektóre metryki, takie jak precyzja i przypomnienie, ale te metryki są lepsze do porównywania dwóch algorytmów niż do oceny pojedynczego algorytmu. Jak więc mogę tutaj zdefiniować poprawność? Wreszcie jest też problem wydajności. Wiem, że to zupełnie inny zestaw testów, ale wydajność jest jedną z ważnych cech narzędzi naukowych, a nie satysfakcją użytkownika lub innymi wskaźnikami inżynierii oprogramowania. Jednym z moich największych problemów są struktury danych. Jedyny test, jaki mogę wymyślić dla drzewa kd, to test warunków skrajnych: wstaw wiele losowych wektorów, a następnie wykonaj wiele losowych zapytań i porównaj z naiwnym wyszukiwaniem liniowym. To samo dotyczy wydajności. A dzięki optymalizatorom numerycznym mam funkcje porównawcze, które mogę przetestować, ale z drugiej strony jest to test warunków skrajnych. Nie sądzę, aby te testy można było zaklasyfikować jako testy jednostkowe, a co najważniejsze, przeprowadzane są w sposób ciągły, ponieważ większość z nich jest dość ciężka. Ale myślę też, że te testy muszą zostać wykonane, nie mogę po prostu wstawić dwóch elementów, pop root i tak, to działa w przypadku 0-1-n. A więc, jeśli w ogóle, jest podejście do (jednostkowego) testowania tego rodzaju oprogramowania? I jak zorganizować testy jednostkowe i te ciężkie wokół cyklu kompilacji kodu, zatwierdzania i integrowania?


title: Kilka pytań o sprint w metodyce scrum

text: To ogólny tytuł pytania, ale mam kilka pytań do Sprintu w metodologii SCRUM. 1. Co się stanie, jeśli HOTFIX pojawi się w środku sprintu. np. Awarie witryny lub części witryny, nad którymi nie pracowano od dłuższego czasu (np. autoryzacja karty kredytowej lub usługi sieciowe itp.). W jaki sposób włączysz to w obecne Sprinty? 2. Jak radzić sobie z błędami pod koniec sprintu. Wiem, że możemy mieć sprint śledzenia defektów, ale czy powinienem to zaplanować na początku? Czy też umieszczam ten sprint z powrotem w backlogu produktu i zaczynam go planować od następnego planowania sprintu. 3. Jak zdecydować, ile sprintów jest wymaganych? dziękuję za pomoc


title: Funkcja przeciągnij i upuść na stronie internetowej

text: Muszę zaprojektować stronę internetową, która będzie posiadała funkcje przeciągnij i upuść do tworzenia e-kartki. Wybierasz więc elementy z przybornika, a następnie przeciągasz i upuszczasz ten element w obszarze karty. Po ukończeniu projektu możesz opublikować e-kartkę w sieci, klikając przycisk „Zapisz i opublikuj”. Jakie są możliwe technologie implementacji tej funkcji? Warunkiem jest, aby aplikacja nie obniżała wydajności serwisu i nie zabierała dużo czasu na publikację po kliknięciu przez użytkownika przycisku „Zapisz i opublikuj”.


title: Czy istnieje wzorzec fabryki, który zapobiega wielu wystąpieniom tego samego obiektu (wystąpienia, które jest równe) dobrego projektu?

text: Posiadam szereg obiektów przechowujących stan. Zasadniczo istnieją dwa rodzaje pól. Te, które jednoznacznie definiują, czym jest obiekt (jaki węzeł, jaka krawędź itp.), oraz inne, które przechowują stan opisujący, jak te rzeczy są połączone (ten węzeł jest połączony z _tymi_ krawędziami, ta krawędź jest częścią _tych_ ścieżek) itp. Mój model aktualizuje zmienne stanu przy użyciu metod pakietu, więc wszystkie te obiekty działają jako niezmienne dla każdego, kto nie znajduje się w zakresie modelu. Wszystkie obiekty rozszerzają jeden typ podstawowy. Bawiłem się ideą podejścia Factory, które akceptuje obiekt Builder i konstruuje odpowiedni obiekt. Jednakże, jeśli instancja obiektu już istnieje (tzn. zwróciłaby true gdybym stworzył obiekt zdefiniowany przez konstruktora i przekazał go do metody równości dla istniejącej instancji), fabryka zwraca bieżący obiekt zamiast tworzyć nową instancję. Ponieważ metoda Equal porównuje tylko to, co jednoznacznie definiuje typ obiektu (jest to węzeł A do węzła B), ale nie sprawdza stanu dynamicznego (węzeł A jest obecnie połączony z węzłami C i E), byłby to sposób upewnienie się, że każdy, kto chce mieć mój węzeł A, automatycznie zna jego połączenia stanu. Co ważniejsze, zapobiegłoby to koszmarom aliasowania kogoś, kto próbuje przekazać instancję węzła A o innym stanie niż węzeł A w moim modelu. Nigdy wcześniej nie słyszałem o tym wzorze i jest to trochę dziwne. Musiałbym wykonać kilka nadpisań metod serializacji, aby to zadziałało (upewnij się, że kiedy czytam zserializowany obiekt, dodaję go do mojej listy fabrycznych znanych instancji i/lub zwracam istniejącą fabrykę w jej miejsce), a także używanie słabegoHashMap tak, jakby był słabymHashSet, aby wiedzieć, czy instancja istnieje, bez martwienia się o wystąpienie quasi-pamięci wycieku. Nie wiem, czy jest to zbyt mylące lub podatne na własne niejasne błędy. Wiem tylko, że wtyczki współpracują ze sprzętem najniższego poziomu. Wtyczki muszą być w stanie zwrócić stan inny niż moja pamięć; opowiedzieć mojej pamięci, kiedy jej własny stan jest niespójny. Wierzę, że jest to możliwe pomimo ich aportowania obiektów, które istnieją w mojej pamięci; umożliwiamy budowanie obiektów bez sprawdzania ich spójności z modelem, dopóki i tak nie zostanie wywołany addToModel; a istniejący projekt wtyczek został napisany, zanim cały ten dodatkowy stan istniał i działał dobrze, nawet nie będąc tego świadomym. Czy powinienem po prostu użyć innego projektu, aby uniknąć tego szaleństwa? (Mam inne pytanie dotyczące tego, które publikuję).


title: Co to znaczy, gdy kod „działa” w środowisku .NET CLR?

text: .NET CLR nie jest interpreterem, ponieważ kod jest kompilowany do kodu natywnego przez kompilator JIT. Więc uważam, że zwykły opis kodu "działającego na" CLR jest mylący. Jak kod natywny współdziała z środowiskiem CLR? Czy kompilator wstawia na przykład wywołania do metod CLR na początku i na końcu twoich metod? Nie mam pojęcia.


title: Czy to, że moje obiekty są tak świadome każdego połączenia, jest złą rzeczą?

text: Zamierzam dokonać refaktoryzacji istniejącego projektu; przenieść kilka rzeczy z bazy danych do pamięci, gdzie powinny być (jest wiele powodów, dla których podejście DB jest niebezpieczne, tak jak jest teraz). Moim pierwszym aktem było zabranie wszystkich istniejących obiektów i rozszerzenie ich stanu. Poprzednie obiekty nowe tylko ich rodzice i tyle. Od najmłodszego dziecka można było podejść, aby znaleźć rodziców, ale w ogóle nie można było zapytać „jakie krawędzie są na tym węźle”. Zmieniłem rzeczy, aby stan był bardziej dostępny z każdego obiektu. Teraz każdy przedmiot skutecznie wie o swoim rodzicu i wszystkich swoich dzieciach. Myślałem, że to oczywiste uproszczenie, które znacznie ułatwi przechowywanie rzeczy w pamięci. Problem polega na tym, że muszę być w stanie konstruować obiekty bez modyfikowania mojego modelu, aż do wywołania addToModel, co oznacza, że muszę być w stanie konstruować obiekty w jednym stanie, a następnie aktualizować niektóre ich stany, aby były zgodne ze stanem Modelu i właściwie reprezentować wszystkie połączenia (węzeł musi być poinformowany o dodaniu krawędzi, krawędź musi znać swoje ścieżki itp. itp.). Utrzymanie spójności okazało się zaskakująco skomplikowane. Kończę albo problemy z enkapsulacją (jak założenie, że każdy obiekt wie, aby nie wywoływać metod zakresu pakietu, które zmieniają pamięć z metod publicznych, które nie powinny być w stanie zmienić stanu), a także obawy o aliasing (co, jeśli ktoś utworzy nowy węzeł A bez połączeń, gdy mój model mówi, że węzeł A powinien być połączony z B, C i E?). Myślałem o wielu podejściach, które działają, ale żadne nie wydaje się „czyste”. Czy problemem jest to, że staram się, aby moje obiekty były zbyt świadome stanu, a tym samym wkładam zbyt dużo wysiłku w mój model, aby utrzymać ten stan?


title: Gdzie umieścić szczegóły dotyczące kryteriów akceptacji historyjki użytkownika?

text: W tym poście na blogu dotyczącym kryteriów akceptacji autor wyjaśnia, że dobre kryteria akceptacji powinny: * Określać intencję, a nie rozwiązanie (np. „Użytkownik może wybrać konto” zamiast „Użytkownik może wybrać konto z listy rozwijanej”) * Są niezależne od implementacji (najlepiej sformułowanie byłoby takie samo niezależnie od tego, czy ta funkcja/historia byłaby zaimplementowana np. w sieci, telefonie komórkowym czy systemie aktywowanym głosem) * Są stosunkowo na wysokim poziomie (nie każdy szczegół musi być napisany) I dalsze szczegóły takie jak: * Nagłówek kolumny to „Saldo” * Format bilansu kroczącego to 99 999 999 999,9 D/CR * Powinniśmy użyć listy rozwijanej zamiast przenosić pola wyboru do _wewnętrznej dokumentacji zespołu_ lub _Automatycznych testów akceptacyjnych_ **Jednak** , ja często słyszę, jak ludzie marszczą brwi na temat używania Cucumber lub podobnych frameworków do wykonywania testów GUI. Co więcej, korzystanie z dokumentacji wewnętrznej może generować wiele problemów z powodu braku regularnego aktualizowania dokumentacji. Wciąż nie mogę znaleźć skutecznego sposobu na uchwycenie takich szczegółów podczas rozmowy z klientem.


title: Jak zarządzać dostosowanymi/markowymi narzędziami internetowymi?

text: Tworzymy szereg narzędzi analitycznych, które zmieniamy markę i dostosowujemy do innych firm, aby mogły umieścić je na swoich stronach internetowych. Narzędziami są zazwyczaj porównywanie produktów, analiza danych/trendów oraz tworzenie raportów (w bardzo konkretnym sektorze). Obecnie narzędzia te działają jako pojedyncza instancja we własnym zakresie, nasi klienci przekierowują tam ruch do nas z parametrem URL określającym klienta do brandingu i personalizacji. Do tej pory używaliśmy podejścia MVC z widokami XSLT. Jeśli klient chce dostosować, dodajemy przełączniki w MVC i/lub importujemy i zastępujemy w XSLT. Przez jakiś czas było to możliwe do opanowania, ale teraz mamy tak wiele wersji i dostosowań dla tak wielu klientów, że uzyskanie stabilnych kompilacji za drzwiami staje się koszmarem. Chcemy przejść do MS asp.mvc3 z użyciem Razor dla naszych widoków, ale wcześniej Zastanawiam się, czy istnieją jakieś standardowe praktyki lub wzorce rozwoju i zarządzania bałaganem, do którego zmierzamy? Pozdrawiam, T


title: Hot swap/plug komponenty w clojure?

text: Używam OSGi od jakiegoś czasu i **naprawdę** podoba mi się możliwość zamiany/wymiany komponentów, gdy moja aplikacja jest uruchomiona. Muszę po prostu zbudować swój moduł i umieścić go w kontenerze OSGi. Czy istnieje podobna koncepcja/ramy dla clojure? Wiem o zarządzaniu zależnościami Leiningena, które naprawdę pomaga w modułowości, ale nie znam wbudowanego sposobu na kod hot swap.


title: Obiekt REST z zasobami

text: Projektuję REST API oparte na HTTP. Załóżmy, że mam encję o nazwie „Entity”, która ma kilka właściwości. Niektóre z jego właściwości to pliki. Powiedzmy, że `Entity` ma następujące właściwości: name: string opis: string photos: tablica zdjęć video: tablica filmów API jest przeznaczone do używania z urządzeń mobilnych i powinno działać dobrze w warunkach wolnego lub niestabilnego połączenia. Rzecz w tym, że obiekt nie powinien być uważany za kompletny, dopóki nie prześlę wszystkich zasobów, które posiada klient. Jaki jest najlepszy sposób na skonstruowanie nowego obiektu? * * * Na razie wymyślam następujące rozwiązanie. Dodaj flagę gotowości `isReady`, najpierw umieść podstawowe dane obiektu w pojedynczym json: POST /entities/ {name: "somename", description: "description", isReady: false} uzyskaj id nowo utworzonego `entityId` Następnie załaduj zasoby jeden przez jeden: POST /entities/{entityId}/photos/ <dane zdjęcia> POST /entities/{entityId}/videos/ <dane wideo> A następnie zaktualizuj flagę gotowości obiektu PUT /entities/{entityId}/ {isReady: true} * * * Drugim rozwiązaniem, które przychodzi mi do głowy, jest tworzenie osobnych punktów końcowych dla zdjęć, filmów. Wtedy będę mógł najpierw publikować zdjęcia i filmy, a następnie tworzyć „Entity” z odniesieniami do zasobów. POST /photos <dane zdjęcia> uzyskaj id POST /videos <dane wideo> uzyskaj id POST /entities/ {nazwa: "jakieś", opis: "opis", zdjęcia: id[], filmy:ids[]} Pytanie z drugie rozwiązanie: czy można odwoływać się do zasobu przez wiele identyfikatorów „URI”? /entities/photos/{photoId} /photos/{photoId} * * * Czy pierwsze rozwiązanie jest poprawne? Czy druga nie byłaby zbyt skomplikowana? Z góry dziękuję


title: Co właściwie definiuje hermetyzację?

text: Uważam, że koncepcja enkapsulacji jest nieco myląca. Do tej pory przeczytałem, że członkowie klasy powinni być prywatni i każdy dostęp do prywatnych członków musi odbywać się poprzez metody pobierające i ustawiające, które są publiczne. Czy to jedyne właściwości, które definiują prawidłowo zahermetyzowaną klasę? Jeśli tak, co z chronionymi członkami klasy? Możemy uzyskać dostęp do chronionych elementów członkowskich w tym samym pakiecie poprzez odwołanie do obiektu — czy klasy zawierające chronione elementy członkowskie są niewłaściwie hermetyzowane? Proszę o wyjaśnienie.


title: Zarządzanie jednorazowymi skryptami za pomocą DVCS

text: Jako naukowiec dzielę swój kod szeroko na (1) spójne projekty oraz (2) jednorazowe skrypty, które wykonują pojedyncze zadanie. Zarządzam kodem z kategorii (1) za pomocą DVCS, takiego jak git lub hg w tandemie z github i bitbucket, i to działa całkiem dobrze dla mnie. Chciałbym użyć DVCS dla kategorii (2) i szukam sugestii dotyczących dobrej strategii, aby to zrobić. Problem polega na tym, że wszystkie te skrypty są rozproszone po całym moim systemie plików, zwykle znajdują się w katalogu powiązanym z danymi, na których pracują. Nie ma sensu mieć repozytorium dla każdego skryptu, ponieważ całkowicie zaśmieciłoby to moje konta github/bitbucket. Z drugiej strony posiadanie jednego ogromnego repozytorium z losowymi skryptami wydaje się być bałaganem w śledzeniu, gdzie ma działać każdy skrypt zawarty w repozytorium, a nadanie im opisowych nazw może być trudne ze względu na ich specyfikę. Czy ktoś ma doświadczenie w zarządzaniu losowymi skryptami w rozsądny sposób, który dobrze dla niego działa za pomocą systemu kontroli wersji? Sugestie byłyby mile widziane.


title: Czy sprawdzanie poprawności nazwy użytkownika w czasie rzeczywistym jest dobre czy złe?

text: Mam prosty formularz, w którym użytkownik może zarejestrować się w mojej witrynie; z polami e-mail, nazwy użytkownika i hasła. Teraz próbujemy zaimplementować walidację ajax, aby użytkownik nie musiał publikować formularza, aby dowiedzieć się, czy nazwa użytkownika jest już zajęta. Mogę to zrobić w przypadku zdarzenia **keyup** lub zdarzenia **blur** tekstu. Moje pytanie brzmi: _Który z tych sposobów jest naprawdę najlepszy?_ ## Keyup Od użytkownika POV, byłoby dobrze, gdyby walidacja była wykonywana podczas pisania, _(na zdarzeniu key up)_ \- oczywiście czekam pół sekundy, aby zobaczyć, czy użytkownik przestanie pisać przed uruchomieniem żądania, a użytkownik może natychmiast wprowadzić dowolne zmiany. Ale oznacza to, że wysyłam o wiele więcej żądań, niż gdybym zweryfikował nazwę użytkownika w zdarzeniu _Blur_. ## Rozmycie Liczba żądań będzie znacznie niższa, gdy walidacja zostanie wykonana w zdarzeniu rozmycia, ale oznacza to, że użytkownik musi odejść od pola tekstowego, spojrzeć na wynik walidacji i, jeśli to konieczne, wrócić do niego, aby wykonać zmiany i powtarzaj cały proces, dopóki nie zrobi tego dobrze. * * * Rzuciłem okiem na google, tumblr, twitter i nikt tak naprawdę nie sprawdza walidacji nazwy użytkownika w zdarzeniach keyup (do licha, tubmlr czeka na opublikowanie formularza), ale mogę przysiąc, że widziałem walidacje kluczy w wielu miejsca też. Wracając więc do pytania, **czy walidacji kluczy będzie za dużo dla serwera, czy jest to niepotrzebne obciążenie? czy warto wziąć te trafienia, aby zapewnić użytkownikowi lepsze wrażenia?** ps: wszystkie moje walidacje regexów itp. są już wykonywane w javascript i dopiero po spełnieniu wszystkich innych kryteriów wysyła żądanie do serwera, aby sprawdzić, czy nazwa użytkownika jest już istnieje. (Serwer wykonuje `select count(1) od użytkownika, gdzie nazwa_użytkownika = ''` \- nic istotnego, ale wciąż wystarcza, aby zająć trochę zasobów) pps: Jestem na asp.net, stosie MS SQL., jeśli to się liczy.


title: Napięcie między zasadą odwracania zależności a unikaniem „nowości” w C++?

text: Widziałem wiele rad, że lepiej zrobić `Type object;` niż Type* object = new Type(); w C++, kiedy tylko jest to możliwe — tj. _zminimalizuj użycie `nowego`_. Rozumiem kryjące się za tym racjonalne przesłanki i doceniam to. Ale zgodnie z moim rozumieniem, praktyka odwracania zależności wymaga wskaźników, np.: Type* object = new Implementation(); gdzie „Typ” jest abstrakcyjny (tzn. zawiera co najmniej jedną czystą metodę wirtualną), a „Implementacja” jest konkretna. Nie można wykonać Type object = Implementation(); ponieważ oznacza to obiekt Type; obiekt = Implementacja(); co początkowo wymaga skonstruowania „obiektu” jako „Typu”, ale nie można tego zrobić, ponieważ „Typ” jest abstrakcyjny. Czy istnieje nieodłączne napięcie między zasadą odwracania zależności a unikaniem „nowego” podczas używania C++? Jeśli tak, jakie wzorce/zasady/praktyki można zastosować, aby złagodzić to napięcie?


title: Renderuj obiekt Ruby do interaktywnego html

text: Rozwijam narzędzie, które wykrywa usługi sieciowe włączone na hoście i pisze na nich krótkie podsumowanie w następujący sposób: init,1 └── login,1560 -- └── bash,1629 └── nc,12137 -lup 50505 { :net => [ [0] "*:50505 IPv4 UDP" ], :fds => [ [0] "/root (cwd)", [1] "/", [2] "/bin/nc.traditional", [3] "/xochikit/ld_poison.so (statystyka: brak takiego pliku lub katalogu)", [4] "/dev/tty2", [5] "*:50505" ] } Okazało się, że jest bardzo ładnie sformatowany i użyteczny do szybkiego odkrycia dzięki kolorom zapewnianym przez klejnot `awesome_print`. Jednak jego wyjście to tylko tekst. Jedną z kwestii jest to, że jeśli chcę się tym podzielić, tracę kolory. Chciałbym też składać i rozkładać części przedmiotów, szybko przeskakiwać do konkretnych procesów, a co nie? Na przykład dodawanie komentarzy. Dlatego chcę czegoś opartego na sieci. Jakie jest najlepsze podejście do implementacji takich funkcji? Nie pracowałem wcześniej z interfejsami internetowymi i nie mam dużego doświadczenia z Ruby. **Aktualizacja** : Może nie napisałem wystarczająco jasno swoich chęci. Myślę, że chcę czegoś, co zachowuje się jak chrome://chrome/settings/ Chromium (lub oczywiście lepiej). Czy jest może szablon erb lub instrukcja pokazująca, jak to wdrożyć? Myślałem, że to jest rzecz potrzebna dość często.


title: Kto jest właścicielem tej pracy?

text: Pracowałem dla małej firmy jako wieloletni wykonawca stron internetowych i innych tego typu rzeczy. Przychodzi klient i płaci, jak powiedział, "Dużo pieniędzy" za spędzenie tygodnia na jego stronie internetowej. Zapłacił firmie. Nie widziałem żadnych jego pieniędzy, od tego czasu rzuciłem tę pracę, ponieważ są mi winni miesiące zaległego wynagrodzenia i wygląda na to, że nie dostanę zbyt wiele. (Zła sytuacja) Chcę teraz rozważyć możliwość sprawdzenia, kto jest właścicielem jakiejkolwiek pracy, którą wykonałem, która była nieopłacana, ponieważ jeśli zajdzie taka potrzeba, mogę użyć jej jako dźwigni, aby pomóc mi odzyskać należne pieniądze. Firma nadal korzysta z nieodpłatnej pracy wewnętrznej, do której znacznie wyraźniej mówię o kwestionowaniu praw. To, z czym się zmagam, to wypracowanie, co zrobić ze stroną internetową klienta. Zapłacił za to ze swojego POV, jest jego. Z mojego punktu widzenia zrobiłem to i nie dostałem za to zapłaty, więc jest mój. Kto to jest właścicielem? Jeśli to zrobię, nie chciałbym mu tego odbierać, wydaje się to naprawdę niesprawiedliwe, ale chciałbym użyć tego jako dźwigni, jeśli do tego dojdzie.


title: Wykorzystujesz uczenie maszynowe do celowania w lustra w panelu słonecznym?

text: Myślałem o kolektorach słonecznych, w których kilka niezależnych luster skupiało światło na kolektorze słonecznym, podobnie jak poniższy projekt z Energy Innovations. ![Solar Array](http://i.stack.imgur.com/zFSwl.jpg) Ponieważ wystąpią błędy w montażu tego panelu słonecznego, przyjmuję następujące założenia (lub ich brak): * oprogramowanie zna „pozycję” każdego lustra, ale nie wie, jak ta pozycja ma się do świata rzeczywistego lub do innych lustra. Będzie to tłumaczyć słabą kalibrację lustra lub inne czynniki środowiskowe, które mogą wpływać na jedno lustro, ale nie na inne. * Jeśli lustro przesunie 10 jednostek w jednym kierunku, a następnie 10 jednostek w przeciwnym kierunku, skończy w miejscu, w którym się zaczęło. Chciałbym wykorzystać uczenie maszynowe do prawidłowego ustawienia lusterek i skupienia światła na kolektorze. Spodziewam się, że potraktowałbym to jako problem optymalizacji, optymalizując położenie lusterek, aby zmaksymalizować ciepło wewnątrz kolektora i moc wyjściową. Problem polega na znalezieniu małego celu w hałaśliwej, wielowymiarowej przestrzeni (biorąc pod uwagę, że każde lustro ma 2 osie obrotu). Niektóre z przewidywanych przeze mnie problemów to: * pochmurne dni, nawet jeśli natkniesz się na idealne ustawienie lustra, w tym czasie może być pochmurno * zaszumione dane z czujników * słońce jest ruchomym celem, porusza się po ścieżce i podąża za inna ścieżka każdego dnia - chociaż w każdej chwili możesz obliczyć dokładną pozycję słońca, nie wiedziałbyś, jak ta pozycja ma się do twoich luster Moje pytanie nie dotyczy panelu słonecznego, ale możliwych technik uczenia maszynowego, które pomogłyby w to problem „małego celu w hałaśliwej, dużej przestrzeni wymiarowej”. Wspomniałem o kolektorze słonecznym, ponieważ był katalizatorem tego pytania i dobrym przykładem. Jakie techniki uczenia maszynowego mogą znaleźć tak mały cel w hałaśliwej, wielowymiarowej przestrzeni? EDIT: Kilka dodatkowych przemyśleń: * Tak, możesz obliczyć położenie słońc w realnym świecie, ale nie wiesz jak pozycja lusterek ma się do realnego świata (chyba że jakoś się tego nauczyłeś). Możesz wiedzieć, że azymut słońc wynosi 220 stopni, a elewacja słońc to 60 stopni i możesz wiedzieć, że lustro jest na pozycji (-20, 42); teraz powiedz mi, czy to lustro jest prawidłowo ustawione w stosunku do słońca? Nie wiesz. * Załóżmy, że masz bardzo wyrafinowane pomiary ciepła i wiesz, że „przy takim poziomie ciepła muszą być prawidłowo ustawione 2 lustra”. Teraz pytanie brzmi, które dwa lustra (z 25 lub więcej) są prawidłowo ustawione? * Jednym z rozwiązań, które rozważałem, było przybliżenie poprawnej "funkcji wyrównania" przy użyciu sieci neuronowej, która pobierałaby azymut i elewację słońca jako dane wejściowe i wyjściowe dużej tablicy z 2 wartościami dla każdego lustra, które odpowiadają dwóm osiom każdego lustra. Nie jestem jednak pewien, jaka jest najlepsza metoda treningowa. Więcej myśli: * Lustra mają układ współrzędnych, do którego oprogramowanie ma dostęp, ale oprogramowanie nie wie, jak ten układ współrzędnych odnosi się do świata rzeczywistego. Powiedzmy, że lustro znajduje się na pozycji (4, 42); co to znaczy? Nie wiem, oprogramowanie też nie. Ale wiem, że jeśli przesunę lustro, a następnie przesunę je z powrotem do (4, 42), lustro będzie w tej samej pozycji, w której było poprzednio. Dodatkowo dwa lustra mogą znajdować się w pozycji (4, 42), ale być skierowane w przeciwnych kierunkach w świecie rzeczywistym. * Tak, przy wielu wysokiej jakości czujnikach problem jest łatwy do rozwiązania. Energy Innovations wypadło z rynku, o ile mogę powiedzieć, prawdopodobnie dlatego, że używało kilku naprawdę niesamowitych czujników, a ludzie mówili: „Po prostu kupię panele słoneczne, są tańsze”. * Jedyne czujniki w systemie znajdują się w głowicy kolektora.


title: Implementacja Glicko Rating w Pythonie

text: Ostatnio dla zabawy próbowałem zaimplementować działającą wersję Glicko Rating System. Jednak nie rozumiem, jak programowo wyodrębnić „R” w kroku 2. Jak widać, „R” pojawia się po obu stronach równania i dla zmiennej liczby wystąpień. Jak programowo rozwiązałbym problem „R” za pomocą Pythona? Dzięki za pomoc :) EDYCJA: Właściwie to „R” w kroku 2 nie powinno być „R_0” po prawej stronie równania? Czy to literówka? Uwaga w „Systemie Glicko” profesora Marka E. Glickmana, równania są identyczne, z wyjątkiem tego, że wszystkie „R” są po jednej stronie, a „R” po drugiej.


title: Optymalizacje kombinacji Y i ogona

text: Definicja kombinatora Y w F# jest taka, że re y f x = f (y f) x f oczekuje, że jako pierwszy argument będzie miała kontynuację podproblemów rekurencyjnych. Używając y f jako kontynuacji, widzimy, że f będzie stosowane do kolejnych wywołań, jak możemy rozwinąć niech y f x = f (y f) x = f (f (y f)) x = f (f (f (f (y f))) x itd. Problem polega na tym, że a priori ten schemat wyklucza użycie jakiejkolwiek optymalizacji wywołania ogona: rzeczywiście, może istnieć jakaś operacja oczekująca na f, w takim przypadku nie możemy po prostu zmutować lokalnej ramki stosu powiązanej z f. Tak więc: * z jednej strony użycie kombinatora Y wymaga jawnej _innej_ kontynuacji niż sama funkcja. * z drugiej strony, aby zastosować TCO, chcielibyśmy, aby żadna operacja nie toczyła się w f i tylko wywołanie f. Czy znasz jakiś sposób na pogodzenie tych dwóch? Jak Y z trikiem z akumulatorem, czy Y z trikiem z CPS? Albo argument dowodzący, że nie da się tego zrobić?


title: Czy dobrym pomysłem jest stworzenie nowej tabeli dla każdego klienta aplikacji internetowej?

text: Jest to w połowie hipotetyczne, a ponieważ nie mam doświadczenia w pracy z ogromnymi tabelami bazy danych, nie mam pojęcia, czy z jakiegoś powodu jest to okropne. Przejdźmy do sytuacji: wyobraźmy sobie aplikację internetową – powiedzmy oprogramowanie księgowe – która ma 20 000 klientów, a każdy klient ma ponad 1000 wpisów w tabeli. To 20 milionów wierszy, o których wiem, że z pewnością spowalniają złożone zapytania. Czy w takim przypadku bardziej sensowne jest tworzenie nowej tabeli w bazie danych dla każdego klienta? Jak bazy danych reagują na posiadanie 20 tys. (lub więcej!) tabel?


title: Programowo utwórz plik nagłówkowy

text: Jaki jest najlepszy sposób na programowe utworzenie pliku nagłówkowego dla innego projektu? Oto konkretny przypadek użycia: jeden program pobiera odcisk palca urządzenia w celu uzyskania dyskretnych informacji, takich jak numer wersji, ciąg identyfikatora itp., a następnie tworzy plik nagłówkowy wypełniający statyczne struktury/stałe programu. Ten plik nagłówkowy jest następnie używany przez wiele projektów w celu zdefiniowania typu tej klasy. Myślałem o czytaniu pisania w pliku xml lub płaskim, co oznacza, że konsumujące projekty muszą znać strukturę bibliotek i podłączyć je, aby je odczytać.


title: Jak szczegółowy powinien być Twój raport/faktura za pracę godzinową?

text: Kiedy pracujesz nad projektami rozwojowymi (np. aplikacja na iPhone'a dla klienta), jak szczegółowe powinny być Twoje raporty przy wystawianiu faktury? Innymi słowy, jak konkretny powinieneś być w odniesieniu do **konkretnych zadań rozwojowych**, nad którymi pracowałeś w danym momencie? Równie pomocny byłby krótki przykład tego, jak wygląda jedna z Twoich faktur, z przykładowymi czasami i zadaniami, które zwykle zawierasz.


title: Najlepszy sposób na wskazanie kilku metod – prośba o krytykę

text: Zacznę od krótkiego wprowadzenia tego, co wiem z języka C: * wskaźnik to typ przechowujący adres lub NULL * operator `*` odczytuje lewą wartość zmiennej po jej prawej stronie i używa tej wartości jako adres i odczytuje wartość zmiennej pod tym adresem * operator `&` generuje wskaźnik do zmiennej po jego prawej stronie. Myślałem więc, że w C++ wskaźniki również mogą działać w ten sposób, ale się myliłem. Aby wygenerować wskaźnik do metody statycznej, muszę zrobić tak: #include <iostream> class Foo{ public: static void dummy(void){ std::cout << "Jestem dummy" << std::endl; }; }; int main(){ void (*p)(); p = Foo::manekin; // krok 1 p(); p = &(Foo::dummy); // krok 2 p(); p = Foo; // krok 3 p->atrapa(); powrót(0); } Teraz mam kilka pytań: * Dlaczego krok 1 działa? * Dlaczego krok 2 też działa? Wygląda jak „wskaźnik do wskaźnika” dla p dla mnie, bardzo różni się od kroku 1. * Dlaczego krok 3 jest jedynym, który nie działa i jest jedynym, który ma dla mnie jakiś sens, szczerze? * Jak mogę napisać tablicę wskaźników lub strukturę wskaźników do przechowywania metod (statycznych lub niestatycznych z rzeczywistych obiektów)? * Jaki jest najlepszy styl składni i kodowania do generowania wskaźnika do metody?


title: Najlepszy sposób na zapisanie ustawień aplikacji

text: W systemie Windows domyślnym sposobem jest rejestr. Pozwala to na rozróżnienie ustawień dla całego systemu i dla poszczególnych użytkowników. W systemie Unix powinieneś używać plików tekstowych w folderze /etc dla ustawień ogólnosystemowych (jaka jest konwencja dla ustawień na użytkownika?). Wiele nowych programów (a zwłaszcza tych zaprojektowanych jako przenośne) używa plików XML. * Jaki jest najlepszy sposób (i lokalizacja) na przechowywanie ustawień innych niż BLOB? * Czy powinniśmy stosować się do każdego domyślnego systemu, czy mieć ujednolicone rozwiązanie? * A jaki jest najlepszy **przenośny** sposób?


title: Jak unieważnić zaznaczone wyjątki w Javie?

text: Uważam, że sprawdzony wyjątek za błąd projektowy w języku Java. Prowadzą do nieszczelnych abstrakcji i dużego bałaganu w kodzie. Wydaje się, że zmuszają programistę do wcześniejszej obsługi wyjątków, chociaż w większości przypadków są one ostatnio lepiej obsługiwane. Więc moje pytanie brzmi jak uniknąć zaznaczonego wyjątku? Moim pomysłem jest wykonanie rzeczywistego kodu wewnątrz translatora wyjątków za pomocą wyrażeń lambda. Przykład: ExceptionConverter.convertToRuntimeException(() => { // rób rzeczy, które mogą tutaj wyrzucić sprawdzone wyjątki }); Jeśli na przykład wystąpi „IOException” zostanie on ponownie zgłoszony jako wyjątek o tej samej nazwie, ale z innej hierarchii klas (na podstawie „RuntimeException”). Takie podejście skutecznie usunęłoby potrzebę obsługi lub deklarowania sprawdzonych wyjątków. Wyjątki mogą być wtedy obsługiwane tam, gdzie i jeśli ma to sens. Innym rozwiązaniem byłoby zadeklarowanie IOException `throws Exception` dla każdej metody. Jak myślisz, które rozwiązanie jest lepsze? Czy znasz lepsze podejście do unikania (tłumienia) zaznaczonych wyjątków w Javie?


title: Jak stworzyć środowisko p2p na jednym laptopie?

text: Zajmuję się tworzeniem aplikacji przestrzeni danych peer-to-peer. W tym celu chcę stworzyć środowisko peer-to-peer lokalnie (na pojedynczym komputerze, laptopie). Czy jest jakaś metoda lub narzędzie, aby to zrobić?


title: Interfejs we/wy dla przenośnej biblioteki

text: Piszę nową przenośną bibliotekę .NET, która może odczytywać format pliku, a operacje we/wy pliku nie są dostępne dla bibliotek przenośnych. Artykuł „Jak sprawić, by przenośne biblioteki klas działały dla Ciebie” stwierdza, że będę musiał napisać biblioteki specyficzne dla platformy, aby rozwiązać ten problem dla każdej platformy. To nie jest problem. Tak więc, będę miał kod odczytu formatu pliku w bibliotece przenośnej, a następnie kilka bibliotek specyficznych dla platformy, które pomogą w operacjach we/wy specyficznych dla platformy: jedna biblioteka specyficzna dla platformy zostanie napisana przy użyciu tradycyjnego tradycyjnego systemu .NET `System.IO .File`, podczas gdy biblioteka aplikacji Windows Store będzie używać `Windows.Storage`, a Windows Phone użyje `System.IO.IsolatedStorage`. Wiem, że WinRT jest w całości asynchroniczny, ale mam doświadczenie tylko z tradycyjnym „plikiem” .NET i synchronicznym we/wy. Każda z tych bibliotek specyficznych dla platformy będzie odwoływać się do biblioteki przenośnej i zapewnia czytnikowi formatów plików implementację obiektu źródła danych specyficzną dla platformy: ISomeDataSource dataSource = new WinRTDataSource(@"filename.bin"); var reader = new FileFormatReader(dataSource); **Jak zaprojektować interfejs (np. `ISomeDataSource` powyżej) tak, abym mógł czytać i wyszukiwać dane?** Ale wtedy jest niezależny od platformy, a może nawet asynchroniczny? Mam dostęp do wszystkich funkcji Visual Studio 2012 i C# 5 (`async` i `await`), ale ponieważ nie korzystam z Windows 8, nie mogę wypróbować WinRT.


title: Implementacja kontekstowej funkcji Cofnij/Ponów

text: Obecnie implementuję mechanizm cofania/ponawiania przy użyciu wzorca poleceń. Jak dotąd wszystko działa. Moim problemem jest teraz zaimplementowanie funkcji cofania/ponawiania w taki sposób, aby była ona powiązana z danym kontekstem. Załóżmy następującą sytuację: Masz _win1_ i _win2_. W _win1_ wykonujesz _action1_; następnie przełączasz się na _win2_ i wykonujesz _action2_ i _action3_. Cofanie stosu wyglądałoby następująco * akcja3 * akcja2 * akcja1 Teraz co się stanie, jeśli _win1_ zostanie zamknięte/usunięte i zaczniesz cofać. W _action1_ program prawdopodobnie uległby awarii, ponieważ kontekst, na którym został wykonany poprzednio (tj. _win1_ ) już nie istnieje. W związku z tym, gdy _win1_ zostanie zamknięte, wszystkie odpowiadające mu akcje powinny zostać usunięte ze stosu „cofnij stos”. Moje pytanie dotyczy tego, czy istnieją już wdrożenia/najlepsze praktyki dotyczące prawidłowego wdrożenia takiego scenariusza? A może masz jakieś pomysły?


title: Wzmacnianie elementów składni

text: Obecnie uczę się języka JavaScript i jest jeden element składni, którego po prostu nie mogę przygwoździć. Ten element dodaje średniki na końcu każdej linii. Nauczyłem się Pythona i Rubiego, i napisałem ich mnóstwo, więc brak średników utkwił mi w pamięci! Czy istnieje sposób, aby to (lub nawet dowolną składnię, aby była bardziej użyteczna dla przyszłych czytelników) w moim mózgu?


title: Użycie magicznych ciągów/liczb

text: To nieco kontrowersyjny temat i wydaje mi się, że opinii jest tyle, ile programistów. Ale ze względu na to chcę wiedzieć, jakie są powszechne praktyki w biznesie (lub w twoich miejscach pracy). W moim miejscu pracy mamy ścisłe wytyczne dotyczące kodowania. Jedna z sekcji poświęcona jest magicznym ciągom/liczbom. Stwierdza (dla C#): > Nie używaj w kodzie wartości literałowych, liczbowych lub ciągów, innych niż definiowanie stałych symbolicznych. Użyj następującego wzorca, aby zdefiniować > stałe: > **public class Whatever > { > public static readonly Color PapayaWhip = new Color(0xFFEFD5); > public const int MaxNumberOfWheels = 18; > }** > Są wyjątki: wartości 0, 1 i null prawie zawsze mogą być > bezpiecznie użyte. Bardzo często wartości 2 i -1 też są OK. Ciągi przeznaczone do > logowania lub śledzenia są wyłączone z tej reguły. Literały są dozwolone, gdy > ich znaczenie wynika z kontekstu i nie podlega przyszłym zmianom. > **średnia = (a + b) / 2; // ok > WaitMilliseconds(waitTimeInSeconds * 1000); // wystarczająco jasne** Idealną sytuacją byłby jakiś oficjalny artykuł badawczy pokazujący wpływ na czytelność/możliwość utrzymania kodu, gdy: * Magiczne liczby/ciągi są wszędzie * Magiczne ciągi/liczby są zastępowane stałymi deklaracjami (lub w różne stopnie pokrycia) - i proszę nie krzyczeć na mnie za używanie "rozsądnie", wiem, że każdy ma inne wyobrażenie co to jest "rozsądnie" (patrz mój przykład poniżej) Chciałbym to zrobić, aby mieć jakieś naukowe argumenty podczas kłótni z jednym z moich kolegów, który zmierza do deklarowania stałych, takich jak: private const char SemiColon = ';'; private const char Spacja = ' '; private const int Liczba Dziesięć = 10; Innym przykładem może być (a ten jest w JavaScript): var someNumericDisplay = new NumericDisplay("#Div_ID_Here"); Czy umieszczasz identyfikatory DOM na górze pliku javascript, jeśli ten identyfikator jest używany tylko w 1 miejscu? Przeczytałem następujące tematy: StackExchange StackOverflow Bytes IT Community Jest o wiele więcej artykułów, a po ich przeczytaniu wyłaniają się pewne wzorce. Więc moje pytanie brzmi, czy w naszym kodzie należy używać magicznych ciągów i liczb? W szczególności szukam odpowiedzi ekspertów, które są poparte referencjami, jeśli to możliwe.


title: Czy należy pisać automatyczne testy sprawdzające poprawność danych (zawartość plików konfiguracyjnych, baz danych itp.)?

text: Mówiąc prościej: czy istnieje najlepsza praktyka określająca, czy programiści powinni pisać automatyczne testy sprawdzające poprawność danych (zawartość plików konfiguracyjnych, baz danych itp.)? Jeśli tak, co to jest? Załóżmy, że dane są statyczne dla danej wersji i określone jako część wymagań.


title: Jak w rozmowie kwalifikacyjnej „wybrać wygodny język programowania”?

text: Kiedy proszą Cię o wybranie języka programowania, w którym czujesz się komfortowo **przed** rozmową, czy chodzi o zadawanie pytań o język programowania, czy o sprawdzenie, jak dobrze w nim kodujesz? Na przykład, jeśli nie wiem, jakie iteratory są w Pythonie, ale czuję się dobrze z Pythonem ze względu na jego wbudowane funkcje, czy powinienem używać Pythona, czy nie? Mogłem studiować wszystko o Haskell od wieków, ale pisanie kodu w Haskell zajmuje mi więcej czasu (wyobraź sobie pisanie drzewa AVL w Haskell). Czy zatem Haskell to dobry wybór?


title: Nieudany projekt: kiedy to nazwać?

text: Kilka miesięcy temu moja firma zajęła się rozpalonym do białości nagłym projektem, a cały mój sześcioosobowy zespół wykonał w zasadzie pięciotygodniowy „tydzień kryzysu”. W ciągu 48 godzin przed uruchomieniem przepracowałem 41 z nich, dwie z nich przez całą noc. Głęboko w środku zamieściłem pytanie, które było moim najbardziej udanym do tej pory. Przez cały ten czas nigdy nie było mowy o „porażce”. Zawsze brzmiało „zrób to, bez względu na ból”. Teraz, gdy sprawa się skończyła i jako organizacja mieliśmy trochę czasu, aby usiąść i podsumować to, czego się nauczyliśmy, przyszło mi do głowy jedno pytanie. Nie mogę powiedzieć, żebym kiedykolwiek brała udział w projekcie, o którym powiedziałbym, że się nie powiódł. Wiele z nich było spóźnionych lub przekroczyło budżet, niektóre katastrofalnie, ale zawsze kończyło się dostarczaniem COŚ. Jednak cały czas słyszę o „nieudanych projektach IT”. Zastanawiam się, czy ludzie mają z tym doświadczenie. Jakie były parametry określające „awaria”? Jaki był kontekst? W naszym przypadku jesteśmy sklepem z oprogramowaniem z klientami zewnętrznymi. Czy projekt wewnętrzny dużej korporacji ma więcej miejsca na „porażkę”? Kiedy dzwonisz? Co się stanie, gdy to zrobisz? Wcale nie jestem przekonany, że robienie tego, co zrobiliśmy, jest mądrym posunięciem biznesowym. To nie była moja rozmowa (jestem tylko małpą kodu), ale zastanawiam się, czy nie lepiej byłoby zmniejszyć nasze straty, powiedzieć, że nie dostarczamy i iść dalej. Nie mówię tylko, że z powodu długich godzin pracy – firma po królewsku straciła koszulkę w projekcie, a niematerialne koszty poniesione przez firmę pod względem morale pracowników i lojalności były _duże_. Czynnik, że na tle PR-owego hitu, jakim jest niepowodzenie w realizacji tak głośnego projektu jak ten, był... i nie wiem, jaka jest prawidłowa odpowiedź.


title: Przechowywanie kodu sortowania / numeru konta na stronie internetowej. Bezpieczeństwo?

text: Ludzie w Wielkiej Brytanii prawdopodobnie lepiej zrozumieją, czym jest kod sortowania i jak kod sortowania i numery kont są używane do przelewów itp., ale pytanie dotyczy każdego, kogo jestem pewien. Dla wyjaśnienia: Podanie komuś swojego kodu i numeru konta pozwala mu na przelew pieniędzy do twojego banku... AFAIK nie ma możliwości wyciągnięcia pieniędzy z czyjegoś konta. Czy nadal potrzebujesz tak wysokiego poziomu bezpieczeństwa w witrynie, jak w przypadku numerów kart kredytowych itp.? Czy przejmiesz te dane z taką samą starannością, jak w przypadku numerów kart? Pytam, ponieważ klient poprosił o przechowywanie danych w swojej bazie danych - nie ma certyfikatu SSL do obsługi tych danych, ale czy to ma znaczenie? Widzisz, że wszystko, co ktoś może zrobić, to przelać Ci pieniądze...? Prawidłowy?


title: Czy Bootstrap koliduje z jQuery lub jQuery Mobile?

text: Zajmuję się tworzeniem aplikacji internetowej. Używałem już jQuery i jQuery Mobile jako wtyczek do aplikacji. Teraz chcę dołączyć bootstrap. Chciałem zapytać, czy jest jakaś możliwość konfliktu Bootstrapa z jQuery lub jQuery Mobile - żebym mógł być lepiej przygotowany. Czy są w konflikcie?


title: Klasa kontekstu we wzorcu Strategy

text: Próbuję zrozumieć _wzorzec strategii_ i zadaję sobie pytanie: czy klasa context must-have, czy mogę ją pominąć bez narażania celu wzorca? Miałem wrażenie, że potrzebowałem jakiegoś przełącznika do czytania różnych typów plików, ale nie chciałem tak po prostu zhakować, a później zająć się refaktoryzacją (choć oczywiście zawsze się zdarza, że kod można zrefaktoryzować, ale pomysł był taki: spróbuj być tak mądrym, jak to możliwe w projekcie wcześniej...): ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/3bqgp.jpg) Obraz pobrany z wikimedia Czy klient może przekazać delegację bezpośrednio do Interfejs strategii, czy jest coś, czego po prostu przegapiłem, aby zrozumieć o klasie kontekstu? interface Reader { // odczyt informacji z pliku i wypełnienie pola listy danych Klienta readFile(); } class ExcelReader implementuje Czytnik{ /* */ } class PdfReader implementuje Czytnik{ /* */} class Klient{ // wybór strategiczny Czytnik r; // pole listy danych List<Data> data; // Konstruktor klienta public Client(){ if(<plik kończy się na .xls>) r = new ExcelReader(); w przeciwnym razie r = nowy PdfReader(); r.odczytajPlik(); } } Tak więc na powyższym obrazku brakuje klasy kontekstu. Czy kod jest zgodny ze wzorcem strategii?


title: Tworzenie rozszerzalnego, kompatybilnego z wieloma platformami programu „core”

text: Zasadniczo brief jest stosunkowo prosty. Musimy stworzyć rdzeń programu. Silnik, który będzie zasilał wszelkiego rodzaju programy z dużą liczbą różnych potencjalnych aplikacji i wdrożeń. Rdzeniem będzie procesor analityczno-algorytmiczny, który będzie zasadniczo uwzględniał scenariusze wejściowe i wyjściowe specyficzne dla użytkownika na podstawie uzyskanych informacji, jednocześnie rejestrując te informacje do celów raportowania. Musi być kompatybilny z różnymi platformami. Coś, co może mieć nałożone warstwy specyficzne dla platformy, które mogą łączyć się z rdzeniem. Musi również być rozszerzalny, na przykład modułowy, a programiści mogą pisać „dodatki” lub „rozszerzenia”, które mogą zmieniać funkcje programu końcowego i mogą w pełni wykorzystywać rdzeń. (Na przykład dobrym przykładem tego, co chcę stworzyć, jest przeglądarka. Ma ona swój główny rdzeń, na przykład silnik web-kit, a na dodatek ma GUI specyficzny dla platformy i może również mają dodatki i rozszerzenia, które mogą zmienić zachowanie programu.) Naszym problemem jest to, że rozszerzenia muszą łączyć się bezpośrednio z głównym rdzeniem i rozszerzać/zmieniać tę funkcjonalność, a nie „warstwę” specyficzną dla platformy. Tak więc, biorąc pod uwagę, że nie mam w tym żadnego doświadczenia (mam doświadczenie w PHP i ostatnio cel-c), od czego powinienem zacząć i czy jest jakaś wiedza/mądrość, którą możesz mi przekazać? Dzięki za wszelką pomoc i rady, których możesz mi udzielić. :) Jeśli potrzebujesz więcej wyjaśnień, po prostu zapytaj. W tej chwili jest na bardzo wczesnym etapie rozwoju, więc po prostu badamy wszystkie możliwe drogi rozwoju. Wielkie dzięki


title: Czy istnieje przyzwoity sposób na utrzymanie rozwoju witryn wordpress przy użyciu tej samej bazy?

text: Od jakiegoś czasu masowo produkujemy witryny z wordpress i chcielibyśmy zachować podstawowe repozytorium, które będzie można wykorzystać podczas rozpoczynania nowego projektu, a także aktualizować istniejące witryny o zmiany w bazie wordpress. Czy mylę się zakładając, że byłoby to dobre? Dbamy o aktualizację witryn, więc posiadanie wspólnej bazy ułatwiłoby to. Patrzyłem na rozwiązania za pomocą git, takie jak rozwidlenie repozytorium podstawowego i używanie go do ściągania zmian do bazy wordpress, ale zatwierdzanie witryny do własnego repozytorium. A może, jeśli to możliwe, przechowywanie bazy jako podmodułu git, ale wymagałoby to przechowywania motywów i wtyczek poza tym. Czy jest jakiś wspólny sposób na tego rodzaju tworzenie stron internetowych?


title: Czy ludzie często używają const podczas programowania w celu C?

text: Powiązane: ostrzeżenie „wysyłanie 'const NSString *' do parametru typu 'NSString *' odrzuca kwalifikatory” Czasami myślę, że jest to przydatne. Być może będę musiał przekazać tabelę i chcę się upewnić, że zawartość tabeli się nie zmieni. Jednak w większości przykładów programów Objective-C nigdy nie widzę `const`. Moje pytanie brzmi: dlaczego?


title: Sprawiać, by rzeczy po prostu działały, a następnie je ulepszać, czy też starać się, aby były „doskonałe” od samego początku?

text: Nie mam żadnego doświadczenia w pracy jako programista - na razie koduję tylko jako hobby. Kilka lat temu usłyszałem, jak programista powiedział, że powinienem skupić się na tym, aby mój kod _po prostu działał_, mimo że jest wolny (to była gra, więc było bardziej zauważalne, czy mój kod jest wolny, czy nie), a potem poświęciłbym swój czas na ulepszanie by było szybko i lepiej. Zastanawiam się, jak często te rady są stosowane w rzeczywistych środowiskach pracy. Czy robisz coś, co (ledwo) działa, a resztę czasu spędzasz na ulepszaniu, czy też sprawiasz, że jest to „doskonałe” (lub akceptowalne) od samego początku, nie oglądając się wstecz? Zakładam, że różnica między nimi polega na tym, że jedno polega bardziej na napisaniu pierwszego rozwiązania, które przychodzi ci do głowy, a drugie na uważnym zaplanowaniu i przemyśleniu tego, co zamierzasz napisać - zakładając, że to drugie jest, cóż, znacznie wolniej niż poprzedni.


title: coffeescript vs maszynopis vs JSX vs dart vs fantom

text: Witryna TypeScript oferuje następujący przykład D3, czy jest jakieś porównanie tych samych kodów D3 dla następujących dostępnych języków: * CoffeeScript * TypeScript * JSX * Dart * Fantom Czy chciałbyś zobaczyć, który z nich jest naprawdę łatwiejszy w użyciu? Z góry dziękuję.


title: Czy istnieje sposób na wsparcie różnych stylów kodowania w zespole programistycznym?

text: Problem: Dwóch programistów => trzy opinie na temat wcięcia, nawiasy klamrowe na nowej linii lub nie itp. Zwykle pracujemy z trzema lub czterema osobami nad naszymi projektami i każdy z nich ma swój własny styl kodu. Wiem, powszechnym rozwiązaniem jest uzgodnienie stylu kodu, którego każdy musi używać, ale nie chcę zmuszać kreatywnych programistów do garnituru, który do nich nie pasuje. Więc pytanie brzmi: Czy istnieje sposób, aby każdy programista żył własnym stylem, ale mając wspólną bazę kodu w repozytorium? Myślę o jakiejś wtyczce git / svn / whatever, która zmienia się między osobistym a powszechnym stylem przy kasie i zatwierdzeniu. Wydaje mi się, że trudną częścią tego podejścia jest obsługa poprawnych różnic między wersjami pliku


title: Używanie potwierdzeń a rzucanie wyjątków?

text: Często, kiedy piszę funkcję, chcę się upewnić, że dane wejściowe są prawidłowe, aby jak najszybciej wykryć takie błędy (wierzę, że są to warunki wstępne). Gdy warunek wstępny nie powiedzie się, zawsze zgłaszam wyjątek. Ale zaczynam wątpić, czy jest to najlepsza praktyka, a jeśli nie, bardziej odpowiednie byłyby twierdzenia. Więc kiedy mam to zrobić: kiedy należy użyć asercji, a kiedy należy zgłosić wyjątek?


title: Czy powinienem nadal używać Debug.Assert dzisiaj?

text: Niedawno natknąłem się na nowy kod, który był przeplatany dużą ilością Debug.Assert (C#). Czy powinniśmy nadal używać tego szeroko, pomimo ogólnego stosowania TDD, BDD i testów jednostkowych?


title: Czy powinienem dochodzić w paczkach?

text: Przeczytałem już kilka pytań dotyczących twierdzeń i wyjątków; Pytam jednak konkretnie o widoczne w pakiecie klasy. Kiedy piszesz pakiet, klasy oznaczone jako "public" są wystawione na świat zewnętrzny, dlatego używane są wyjątki, aby użytkownicy interfejsu pakietu wiedzieli, że używają pakietu w niewłaściwy sposób. Klasy, które pozostają nieoznaczone, są wystawione tylko na wnętrze paczki, nieprawdaż? Skłaniam się więc do stwierdzenia, że gdy coś pójdzie nie tak w widocznej klasie pakietu, użyte zostaną asercje, aby powstrzymać zbudowane przeze mnie klasy przed przesyłaniem sobie nawzajem złych danych. Czy to dobra rzecz do zrobienia? Przyjąłem ideę, że obiekty przechowują własne dane jako prywatne, a metody są publiczne/prywatne w zależności od potrzeb do pracy wewnętrznie lub z innymi klasami. Gdy klasa zostanie zidentyfikowana jako robiąca za dużo, zostanie podzielona na prostsze obiekty przeznaczone do współpracy. W tym momencie istnieje wiele klas, ale tylko niektóre powinny być wystawione na świat zewnętrzny. Doszedłem więc do wniosku, że pakiety są jak super obiekty, odsłaniające na tyle, aby cała „społeczność” klas mogła współpracować w celu rozwiązania problemu. W ten sposób implementacja jest ukryta, ale usługa jest nadal świadczona. Czy to zrozumienie jest poprawne? Na tym właśnie opiera się pytanie, skoro społeczność klas jest tworzona w sposób "prywatny do pakietu", nie jest eksponowana na zewnątrz, a więc czy zamiast tego należy używać asercji?


title: Asercje a wyjątki – czy moje rozumienie różnic między nimi jest poprawne?

text: > Design By Contract wykorzystuje warunki wstępne i końcowe metod > publicznych w klasie, aby utworzyć umowę między klasą a jej klientami. a) W kodzie implementujemy _warunki wstępne_ i _warunki końcowe_ jako _asercje_ lub jako _wyjątki_? b) Wdrażamy _warunki wstępne_ i _warunki końcowe_ w kodzie jako _wyjątki_ jeśli niespełnienie _warunków wstępnych_ lub _warunków końcowych_ nie oznacza logicznie niemożliwych sytuacji lub błędów programistycznych? c) implementujemy je w kodzie jako _asertacje_, gdy niespełnienie _warunków wstępnych_ lub _warunków końcowych_ wskazuje na logicznie niemożliwe sytuacje lub błędy programistyczne? d) Czy _warunki wstępne_ i _warunki końcowe_ powinny być definiowane tylko w metodach publicznych? **EDYTUJ:** Czy poniższe sprawdzenia nie są uważane za część normalnej operacji (i jak już wspomniałem, widziałem wiele artykułów na temat DbC używających podobnych przykładów dla warunków wstępnych, w których sprawdzano argumenty dostarczone przez użytkownik ), ponieważ jeśli użytkownik wprowadzi złe dane, to bez sprawdzeń operacja nie zostanie odrzucona i jako taki system przestanie działać zgodnie ze specyfikacją: Link: public User GetUserWithIdOf(int id, UserRepository userRepository) { // Warunki wstępne if (userRepository == null) wyrzuć nowy ArgumentNullException( "userRepository"); if (id <= 0) wyrzuć nowy ArgumentOutOfRangeException( "id musi być > 0"); Znaleziono użytkownikaUser = userRepository.GetById(id); // Warunki końcowe if (foundUser == null) wrzuć nowy KeyNotFoundException("Nie można znaleźć użytkownika o identyfikatorze " + " id.ToString() + "."); return foundUser; }


Czy należy zgłosić wyjątek, jeśli wartości wejściowe metody są poza zakresem? np. //brak liczb urojonych public int MySquareRoot(int x) { if (x<0) { throw new ArgumentOutOfBoundsException("Musi być nieujemną liczbą całkowitą"); } //nasza implementacja tutaj } Teraz ta metoda nigdy nie powinna być wywoływana z liczbą nieujemną, ale cóż, programiści popełniają błędy. Czy rzucanie wyjątków tutaj jest właściwą rzeczą?


title: Asercja w publicznych metodach

text: Jestem fanem używania asercji w kodzie do sprawdzania warunków wstępnych. Pytanie brzmi, czy mądrze jest używać asercji w metodach publicznych do sprawdzania warunku wstępnego? Moja osobista opinia jest taka, że jeśli moja metoda nie radzi sobie z brakiem parametru (lub jego nieprawidłową wartością) i jest częścią API, ale nie opiera się na danych wejściowych użytkownika, to problem (zły parametr) musi zostać rozwiązany w trakcie procesu rozwoju (przynajmniej przez testy integracyjne), a nie później, gdy oprogramowanie jest używane w terenie. Z tego powodu używam asercji nawet w metodach publicznych. Mam na myśli coś takiego: public class SomeMagic implementuje MagicAPI { public WoW doSomeMagic ( źródło rzeczy ) { asercja źródła != null : "Nieprawidłowe użycie API"; // jeśli asercje są dezaktywowane (powinno tak być w środowisku produkcyjnym) // ta linia wygeneruje NpEx if ( source.isPlainStuff() ) { // trochę magii z prostymi rzeczami } return Wow.beSurprised; } }


title: Czy zgłaszasz wyjątek argumentu lub wyjątek argumentnull z metod prywatnych?

text: Właśnie przeglądałem kod, który napisałem jakiś czas temu, i widzę, że mam kilka prywatnych metod, które rzucają argumentnullexceptions i/lub argumentexceptions, jeśli występują problemy z parametrami metod. Myślę, że moim uzasadnieniem jest to, że pomaga to w przyszłości sprawdzać aplikację, jeśli ktoś spróbuje „niewłaściwie użyć” metody w przyszłości. Jednak biorąc pod uwagę, że jest to metoda prywatna, a osoby, które prawdopodobnie ją wywołają, widzą powiązane komentarze i kod, po prostu nie trzeba tego rzucać. Z pewnością nie zaszkodzi ich mieć, chociaż powoduje to bałagan. Mam wrażenie, że te wyjątki są ogólnie bardziej przydatne w przypadku czegoś takiego jak API, które zostanie ujawnione publicznie.


title: Czy istnieje sposób na przyspieszenie mojego kodu php, który analizuje pliki XML?

text: Zajmuję się tworzeniem aplikacji internetowej i używamy XML jako bazy danych, a ja używam Linuxa jako platformy i centos 6.5 jako serwera. Zmiana jakiejś wartości spowodowałaby wiele zmian w około sześciu plikach XML. Oto problem: Naciśnięcie przycisku Zapisz po edycji, dodaniu, usunięciu zajmuje około półtorej minuty lub więcej! Dzieje się tak, ponieważ mój kod musi zaktualizować około sześciu plików XML, plików dziennika i pliku crontab. Zastanawiam się, czy jest coś podobnego do wątków w PHP? Mam swoje funkcje i cały kod, którego chcę, chcę tylko wiedzieć, jak można wykorzystać php w nowy sposób, aby poprawić wydajność. Czy możesz mnie poprowadzić nawet linkami do przeczytania? Nie wiem, na czym dokładnie polega ten problem, żeby go szukać. Nadal jestem początkującym. Oto funkcja aktualizacji, której używam: public static function update($tableName, $fieldsToUpdate, $newValues, $value = NULL) { //Załaduj plik XML $fileName = G_APP_SCRIPTS_PATH . "/XMLS/xmls/" . $nazwa_tabeli . ".xml"; $xml = nowy dokument DOMD; $xml->load($nazwapliku); //Załaduj plik XSD $xsdfileName = G_APP_SCRIPTS_PATH . "/XMLS/xsds/" . $nazwa_tabeli . ".xsd"; $xsd = nowy dokument DOMD; $xsd->load($xsdfileName); //Generuj Xpath $path = c_XML::generateXPath($xml, $xsd, $fieldsToUpdate, $value); $xpath = nowa ścieżka DOMX($xml); //Zapytaj węzły do aktualizacji $nodes = $xpath->query($path); // print_r($węzły->element(0)); //Jeżeli liczba nowych wartości < liczba elementów do aktualizacji, oznacza to, że musimy zaktualizować //wszystkie określone elementy w XML bez żadnych warunków if (count($newValues) < $nodes->length) { for ($i = 0; $i < $węzły->długość/liczba($noweWartości); $i++) $noweWartości = array_merge($noweWartości, $noweWartości); } //Iterowanie nad węzłami do aktualizacji ($i = 0; $i < $nodes->length; $i++) { $oldNode = $nodes->item($i); for ($index = 0; $index < count($fieldsToUpdate); $index++) { //Znajdź powiązany indeks w tablicy $fieldsToUpdate if (strcmp($oldNode->nodeName, $fieldsToUpdate[$index]) == = 0) { przerwa; } } //Utwórz nowy węzeł o nazwie starego węzła $newNode = $xml->createElement($oldNode->nodeName); //var_dump($nowyWęzeł); //jeśli nowa wartość jest tablicą, oznacza to, że musimy zaktualizować węzeł wewnętrzny if (is_array($newValues[$index])) { //przejdź do żądanego węzła w XSD i pobierz jego elementy potomne, //aby wiedzieć ich format $xsdxpath = new DOMXPath($xsd); $children = $xsdxpath->query("/xs:schema/xs:element/xs:complexType/xs:sequence/xs:element/xs:complexType/xs:sequence/xs:element[@name='" . $ staryWęzeł->NazwaWęzła "']/xs:complexType/xs:sequence/xs:element"); //przekonwertuj listę węzłów $chlidren na tablicę, aby przekazać funkcję createNode. for ($c = 0; $c < $children->length; $c++) { $childrenArray[$c] = $children->item($c); } //utwórz żądany węzeł c_XML::createNode($xml, $xsdxpath, $newNode, $childrenArray, $newValues[$index]); } //Jeśli nowa wartość nie jest tablicą, w przeciwnym razie $newNode->nodeValue = $newValues[$index]; //Zamień stary węzeł na nowy $parent = $oldNode->parentNode; $parent->replaceChild($nowyWęzeł, $staryWęzeł); } //Sprawdź i zapisz XML $isValid = c_XML::validateXMLtoXSD($xml, $xsdfileName); if ($isValid == 1) { $xml->save($fileName); zwróć prawdę; } w przeciwnym razie zwróć false; } a gdy użytkownik aktualizuje wartość, używam w ten sposób aktualizacji innych plików xml: private static function change_value_in_xml_file($old_value, $new_value) { $all_nodes = c_XML_h::select(tables::xmlfile, '*'); $węzły = tablica(); for ($i = 0; $i < liczba($wszystkie_węzły); $i++) { $węzły[$i] = array(); //po prostu zdobądź węzły, które chcę $nodes[$i][0] = $all_nodes[$i][0]; $węzły[$i][1] = $wszystkie_węzły[$i][3]; } //znajdź starą wartość i zastąp ją nową wartością foreach ($węzły jako $węzeł) { $nowaWartość[0] = $nowa_wartość; if ($węzeł[1] == $stara_wartość) { $id_to_update = $węzeł[0]; $fieldsToSelect[0] = xmlfile:: wartość; c_XML_h::update(tables::xmlfile, $fieldsToSelect, $newValues, $id_to_update); } } }


title: Jak ukryć obsługę błędów?

text: Wiele osób uważa wyjątki za problem, ponieważ tworzą one niewidoczne ścieżki w kodzie. Na przykład w tym fragmencie: function writeToFile(tekst, nazwapliku): filehandle = open(nazwapliku) dla każdego wiersza w tekście: filehandle.write(linia) filehandle.close() Metoda `write` może zgłosić wyjątek. W takim przypadku funkcja zakończy się przedwcześnie, a uchwyt pliku nie zostanie zamknięty. Pisanie bezpiecznego kodu wyjątków jest trudne. Z drugiej strony dodanie jawnej obsługi błędów, jak w C, znacznie zaśmieca kod. (Wydaje się, że jest to opcja "inna", jeśli nie lubisz wyjątków.) function writeToFile(text, filename): filehandle = open(filename) if nullptr == filehandle: zwraca foreach linii w tekście: if(!filehandle. write(line)): filehandle.close() return filehandle.close() To tylko prosty przykład. Właśnie napisałem kod, aby wykonać logowanie i między abstrakcyjną koncepcją „Po prostu zrzuć dane do pliku!” a moja realizacja to różnica około 200 linii. Więc co ludzie robią, aby ich kod był czytelny pomimo tych wszystkich nagich przypadków, na które muszą uważać i radzić sobie? Czy musimy uciekać się do piśmiennego programowania? :)