title: Jak mogę zwrócić wygenerowany kod HTML i odpowiedź?

text: Moja aplikacja internetowa będzie często używać wywołań AJAX, dlatego ustawiłem trochę JavaScriptu do obsługi "wiadomości" lub "odpowiedzi". Te odpowiedzi są zwracane (z mojej aplikacji ASP.NET) jako obiekty JSON, które działają jako informacje zwrotne po zakończeniu funkcji. Załóżmy, że moje odpowiedzi zawierają trzy podstawowe elementy. * Typ (błąd, ostrzeżenie, informacja, sukces) * Tytuł * Wiadomość Na przykład `Zapisywanie nie powiodło się` `Twoje dane nie zostały zapisane z powodu XYZ.` Czasami jednak chcę, aby moja funkcja generowała i zwracała trochę kodu HTML. To dość proste, ale co, jeśli nadal chcę zwrócić wiadomość do użytkownika (lub innego JSON)? * Czy powinienem zwrócić kod HTML jako część JSON? * Czy mam zwrócić tylko jedną czy drugą? * Czy powinienem zwrócić kod HTML, a następnie wykonać kolejne wywołanie AJAX w celu uzyskania odpowiedzi? * Czy powinienem zwrócić HTML i przechowywać odpowiedź w tagach danych? Czy ktoś może wskazać mi właściwy kierunek?


title: Zostać profesjonalnym programistą bez pójścia na studia?

text: Niedawno odrzucono mnie z college'u, który wcześniej mnie przyjął, ponieważ spędziłem rok szkoły średniej w obcym kraju i uczelnia nie była zainteresowana uznaniem wykształcenia otrzymanego w innym kraju. Z tego powodu wyschło bardzo hojne stypendium, a finansowanie edukacji jest wątpliwe. Waham się też, czy stać się częścią systemu, który zademonstrował to, co uważam za rażącą ksenofobię. To, co chcę zrobić, to powiedzieć „pieprzyć college”, wybić się na własną rękę i zrobić coś niesamowitego, zachwycić wszystkich i zostać milionerem, który sam się stworzył. Rzeczywistość jest taka, że mam dwa tygodnie poza szkołą średnią, mam mniej więcej ekwiwalent kursu wprowadzającego do programowania wart doświadczenia samouka (chociaż jestem zmotywowany do nauki i doskonalenia), wciąż muszę płacić rachunki i mam podejrzenie, że każdemu pracodawcy będzie trudno traktować mnie poważnie. Jak rozumiem, jest to dość popularne przekonanie, że można to zrobić bez dyplomu, ale jak ktoś taki jak ja to robi? Czy ktoś potraktowałby mnie poważnie, gdybym wszedł do ich biura i powiedział: „Nie mam formalnego wykształcenia i minimum umiejętności, ale chcę pracować i chcę się uczyć. Proszę, daj mi pracę.”?


title: Programowanie w karierze — bez dyplomu. Czy to mądre?

text: Zapytałem o to wcześniej i mocno odrzuciłem głos, więc ktoś powiedział, że powinienem spróbować opublikować tutaj. . . Każda pomoc byłaby BARDZO pomocna. Robię Udacity, Udemy, Codecademy, Lynda i edX. Uczę się Javy (moja ulubiona), MySQL, Pythona (najtrudniejszy), Javascript, HTML, CSS i dopiero zacząłem uczyć się C. Ciężko nad nimi pracuję i uwielbiam to robić. OK, więc odwiedziłem mojego brata i jego rodzinę w zeszłym tygodniu i powiedziałem im, że robię kursy programowania online. I w zasadzie śmiali się z „darmowej edukacji” i powiedzieli mi, że żyję w „fantazji”. Mam 18 lat i nie bagatelizuję pomysłu pójścia na studia. Po prostu uważam, że to strata, kiedy mogę czerpać więcej radości z nauki online i oszczędzać pieniądze. Jednak wiem, że stopień wbija ci stopę w drzwi. Jednak w pewnym sensie wyczerpali moją motywację do kontynuowania kursów. Czy ktoś ma jakieś przemyślenia, historie sukcesu lub rady, które pomogą mi dalej działać? Czy ktoś jeszcze jest na tej samej łodzi? Miałem też zamiar wykonać trochę pracy na otwartym kodzie źródłowym i zbudować własne projekty, aby zdobyć trochę doświadczenia.


title: Pojęciowa różnica między Git a GitHub

text: Ostatnia linijka tej odpowiedzi skłoniła mnie do zadania tego pytania. Wiem, aby znać na poziomie koncepcyjnym różnicę między usługami Git i GitHub.


title: Jaka jest właściwa metoda HTTP do głosowania za?

text: Z punktu widzenia REST, jaka jest najbardziej odpowiednia metoda HTTP do akcji głosowania posta na forum (jak na StackExchange)? Powiedziałbym POST do głosowania i DELETE do anulowania głosowania, ale ponieważ użytkownicy mogą oddać tylko jeden głos na wiadomość, głosowanie można uznać za operację idempotentną, więc PUT może być również możliwe.


title: Jakie są argumenty przeciwko easter eggom? Czy są jakieś argumenty, aby w ogóle wspierać pisanki?

text: Jestem trochę błaznem, więc pomysł z jajkiem wielkanocnym wciąż mi się podoba. Dodałem je wcześniej w swoim kodzie, ale moja grupa przyjaciół ma żart, że używa CTRL-FU do uruchomienia jajka. Teraz mam też trochę paranoi na punkcie wydajności, więc lubię usuwać nadmiar, gdy tylko jest to możliwe. Jest to mocno sprzeczne z jajkami wielkanocnymi, ponieważ są one w 100% zbędnym kodem. Jakie są argumenty przeciwko easter eggom? Poza tym, czy są jakieś argumenty, aby w ogóle wspierać pisanki?


title: Dlaczego kolumna w relacyjnej bazie danych ma jeden cel?

text: Rozważ tabelę, w której kolumna przedstawia wartość pieniężną w niektórych przypadkach, a link do wartości innego rekordu w innych, tak, że mamy następujące dane: TABELA 1 Id Produkt Złożony 1 Jabłko Fałsz 2 Pomarańczowy Fałsz 3 Gruszka Prawda TABELA 2 Produkt Data Cena 1 2010-01-01 0,45 2 2010-01-01 0,50 3 2010-01-01 1,00 1 2010-01-02 0,46 2 2010-01-02 0,49 3 2010-01-02 2,00 Powyższe tabele przedstawiają fakt że cena Apple i Orange jest podana w każdym dniu w odpowiedniej kolumnie Cena w Tabeli 2, tak że cena Apple w dniu 01.01.2010 wynosi 0,45, a cena Orange 0,50 w tym samym dniu, jednakże , cena gruszki w dniu 2010-01-01 wynosi 0,45, a cena gruszki to 0,49 następnego dnia, przy czym cena gruszki jest określana na podstawie ceny jabłka w pierwszym dniu i ceny pomarańczy w dniu drugi dzień. Proszę wskazać plusy i minusy takiego podejścia?


title: Jak uzasadnić starania o ujednolicenie kapitalizacji nazw klas i właściwości?

text: W tym wątku menedżer produktu Oracle (nazwa użytkownika „Alex Keh”) odmówił sprawienia, aby dostawca Oracle EF był zgodny ze standardem kodowania .NET `PascalCase` dla nazw klas i nazw właściwości, mówiąc, że są to tylko „kosmetyki” bez żadnych „funkcjonalności”. wymagania". > Omówiłem to z moim zespołem. Jedną z kluczowych rzeczy, które chcemy wiedzieć, jest to, dlaczego programiści poświęcają tyle czasu na zmianę przypadku między Oracle a EF. Czy istnieje nieodparta funkcjonalna potrzeba zmiany z wielkich liter na > Pascala, a nie tylko na kosmetyczną? > > W narzędziu żądania funkcji i tym wątku ludzie pytali o funkcję >, ale nie podawali powodu, dla którego wielkość liter w Pascalu jest tak ważna, że > byliby skłonni przeprowadzić ręczne zmiany mapowania. Dla mnie głównym powodem jest to, że nie chcę widzieć mieszania się konwencji nazw Oracle `UPPER_CASE` w moim kodzie .NET, ale wydaje się, że to nie wystarczy. Jak uzasadniłbyś wysiłek wspierania konwencji PascalCase?


title: Czy klasy implementacyjne JAX WS są częścią pakietu Java 5/6, czy tylko częścią bibliotek serwera aplikacji?

text: Czy klasy implementacyjne JAX WS są częścią pakietu Java5, częścią pakietu Java6, czy tylko częścią bibliotek serwera aplikacji, takich jak WAS? Czytałem, że jest częścią Java EE? Co to znaczy? Java 5?


title: Jak wykorzystać OO do analizy danych?

text: W jaki sposób zorientowanie obiektowe (OO) może zwiększyć wydajność mojej analizy danych i umożliwić ponowne wykorzystanie większej ilości kodu? Analiza danych może być podzielona na 1. pobieranie danych (z db lub csv lub podobne) 2. przekształcanie danych (filtrowanie, grupowanie/przestawianie, ...) 3. wyświetlanie/wykreślanie (wykresy czasowe, tworzenie tabel itp.) W tym celu głównie używam Pythona i jego pakietów Pandas i Matplotlib, oprócz niektórych połączeń z bazą danych (SQL). Prawie cały mój kod jest mieszanką funkcjonalną/proceduralną. Kiedy zacząłem tworzyć obiekt danych dla pewnego zbioru szeregów czasowych, zastanawiam się, czy istnieją wzorce/podejścia projektowe OO dla innych części procesu, które mogą zwiększyć wydajność?


title: Graficzne struktury danych i format dziennika dla mini-IDE

text: Tło: Piszę małe/częściowe IDE. Kod jest wewnętrznie konwertowany/parsowany na strukturę danych wykresu (w celu szybkiej nawigacji, sprawdzania składni itp.). Funkcjonalność cofania/ponawiania (również między sesjami) i przywracania po awarii jest realizowana poprzez zapis i odczyt z dziennika. Dziennik rejestruje modyfikacje wykresu (nie źródła). Pytanie: Mam nadzieję na poradę w sprawie decyzji dotyczącej struktury danych i formatu czasopisma. W przypadku grafu widzę dwie możliwe wersje: _g-a_ Krawędzie grafu są zaimplementowane w taki sposób, że jeden węzeł przechowuje odniesienia do innych węzłów za pośrednictwem adresu pamięci _g-b_ Każdy węzeł ma identyfikator. Istnieje mapa ID-do-pamięci-adres. Graph używa identyfikatorów (zamiast adresów) do łączenia węzłów. Przemieszczanie się wzdłuż krawędzi z jednego węzła do drugiego za każdym razem wymaga wyszukiwania na mapie ID-adres. A także dla dziennika: _j-a_ Jest bieżący węzeł (jak bieżący katalog roboczy w powłoce + ustawienia systemu plików). Dziennik zawiera wpisy takie jak „utwórz nowy węzeł i połącz się z bieżącym”, „połącz pierwsze dziecko bieżącego węzła” (identyfikatory względne) _j-b_ Dziennik używa identyfikatorów bezwzględnych, np. "delete edge 7 -> 5", "delete node 5" Mógłbym np. połącz _g-a_ z _j-a_ lub połącz _g-b_ z _j-b_. W zasadzie również g-b i j-a powinny być możliwe. [Moją pierwszą/pierwotną próbą była _g-a_ i wersja _j-b_, która używa adresów, ale okazało się, że spowodowało to poważne ograniczenia: węzły nie mogą zmienić swoich adresów (lub dziennik musiałby to śledzić) i używanie dziennika między dwiema sesjami jest bałagan (a nawet niemożliwy)] Zastanawiam się, czy wariant _a_ lub wariant _b_ lub kombinacja byłyby dobrym pomysłem, jakie miałyby zalety i wady, a zwłaszcza czy jakiś wariant może później sprawiać kłopoty.


title: Kto powinien robić przeglądy kodu?

text: W mojej firmie głównie architekt robi przeglądy kodu. Jest bardzo doświadczonym i inteligentnym facetem od oprogramowania, więc jest w tym bardzo dobry. Kiedy programiści robią przeglądy kodu, nie robią tego w połowie tak dobrze. Próbowaliśmy dać programistom więcej recenzji kodu, ale jakość recenzji kodu nie była dobra. Używamy Scrum for jako metodologii rozwoju. Jednak w obecnym systemie pojawiają się dwa problemy: 1. Architekt staje się wąskim gardłem 2. Deweloperzy nie biorą odpowiedzialności za jakość kodu i architektury (co prowadzi do różnego rodzaju problemów). Jak możemy rozwiązać te problemy? Czy powinniśmy zmienić, kto przeprowadza przeglądy kodu?


title: Jak dbamy o aktualność zależnych struktur danych?

text: Załóżmy, że masz drzewo analizy, abstrakcyjne drzewo składni i wykres przepływu sterowania, z których każdy jest logicznie wyprowadzony z poprzedniego. W zasadzie łatwo jest skonstruować każdy wykres, biorąc pod uwagę drzewo analizy, ale jak możemy zarządzać złożonością aktualizacji wykresów, gdy drzewo analizy jest modyfikowane? Wiemy dokładnie, w jaki sposób drzewo zostało zmodyfikowane, ale jak zmiana może zostać przeniesiona na inne drzewa w sposób, który nie będzie trudny do zarządzania? Oczywiście wykres zależny można aktualizować, po prostu rekonstruując go od podstaw za każdym razem, gdy zmienia się pierwszy wykres, ale wtedy nie byłoby możliwości poznania szczegółów zmian na wykresie zależnym. Obecnie mam cztery sposoby na rozwiązanie tego problemu, ale każdy ma trudności. 1. Węzły drzewa zależnego obserwują odpowiednie węzły oryginalnego drzewa, aktualizując siebie i listy obserwatorów oryginalnych węzłów drzewa w razie potrzeby. Konceptualna złożoność tego może stać się zniechęcająca. 2. Każdy węzeł oryginalnego drzewa ma listę zależnych węzłów drzewa, które konkretnie od niego zależą, a gdy węzeł się zmienia, ustawia flagę na węzłach zależnych, aby oznaczyć je jako brudne, w tym rodziców węzłów zależnych wszystkich aż do korzenia. Po każdej zmianie uruchamiamy algorytm, który jest bardzo podobny do algorytmu konstruowania grafu zależnego od podstaw, ale pomija każdy czysty węzeł i rekonstruuje każdy brudny węzeł, śledząc, czy zrekonstruowany węzeł faktycznie różni się od węzła brudnego. To też może być trudne. 3. Możemy przedstawić logiczne powiązanie między oryginalnym grafem a grafem zależnym jako strukturę danych, taką jak lista ograniczeń, być może zaprojektowana przy użyciu języka deklaratywnego. Kiedy zmienia się oryginalny wykres, wystarczy przeskanować listę, aby odkryć, które ograniczenia zostały naruszone i jak drzewo zależne musi się zmienić, aby skorygować naruszenie, wszystko zakodowane jako dane. 4. Możemy zrekonstruować wykres zależny od podstaw tak, jakby nie istniał żaden wykres zależny, a następnie porównać istniejący wykres z nowym, aby odkryć, jak się zmienił. Jestem pewien, że to najłatwiejszy sposób, ponieważ wiem, że istnieją algorytmy do wykrywania różnic, ale wszystkie są dość kosztowne obliczeniowo i w zasadzie wydaje się to niepotrzebne, więc celowo unikam tej opcji. Jaki jest właściwy sposób radzenia sobie z tego rodzaju problemami? Z pewnością musi istnieć jakiś wzorzec projektowy, który sprawia, że to wszystko jest prawie łatwe. Byłoby miło mieć dobre rozwiązanie każdego problemu z tego ogólnego opisu. Czy ta klasa problemu ma nazwę? * * * Pozwólcie, że omówię problemy, jakie ten problem powoduje. Ten problem pojawia się w różnych miejscach, gdy dwie części projektu działają na wykresach, a każdy wykres jest inną reprezentacją tego samego, co zmienia się podczas działania oprogramowania. To jak zrobienie adaptera dla interfejsu, ale zamiast zawijać pojedynczy obiekt lub ustaloną liczbę obiektów, musimy zawinąć cały wykres o dowolnym rozmiarze. Za każdym razem, gdy tego próbuję, kończę z mylącym, niemożliwym do utrzymania bałaganem. Przepływ kontroli obserwatorów może być trudny do naśladowania, gdy staje się skomplikowany, a algorytm konwersji jednego wykresu na inny jest zwykle wystarczająco trudny do naśladowania, gdy jest ułożony w prosty sposób i nie jest rozłożony na wiele klas. Problem polega na tym, że wydaje się, że nie ma sposobu na użycie prostego, prostego algorytmu konwersji grafu, gdy oryginalny graf się zmienia. Oczywiście nie możemy po prostu użyć zwykłego algorytmu konwersji grafów bezpośrednio, ponieważ nie może on reagować na zmiany w żaden inny sposób niż zaczynanie od zera, więc jakie są alternatywy? Być może algorytm mógłby być napisany w stylu przekazującym kontynuację, w którym każdy krok algorytmu jest reprezentowany jako obiekt z metodą dla każdego typu węzła w oryginalnym grafie, tak jak odwiedzający. Następnie algorytm można złożyć, łącząc ze sobą różne proste osoby odwiedzające. * * * Inny przykład: Załóżmy, że masz GUI, który jest ułożony tak, jak w Java Swing, używając JPanels i menedżerów układu. Możesz uprościć ten proces, używając zagnieżdżonych paneli JPanel zamiast złożonych menedżerów układu, dzięki czemu otrzymujesz drzewo różnych kontenerów, które zawiera węzły, które istnieją tylko do celów układu i są bez znaczenia. Załóżmy teraz, że to samo drzewo, które jest używane do generowania GUI, jest również używane w innej części aplikacji, ale zamiast układać drzewo graficznie, pracuje z biblioteką, która wygeneruje drzewo abstrakcyjnej reprezentacji jako system folderów. Aby korzystać z tej biblioteki, musimy mieć wersję drzewa, która nie ma węzłów układu; węzły układu muszą zostać spłaszczone do węzłów nadrzędnych, ale biblioteka nadal musi być powiadamiana za każdym razem, gdy drzewo się zmienia, tak jakby dwie wersje drzewa były pojedynczą strukturą danych. * * * _Inny sposób patrzenia na to:_ Sama koncepcja pracy ze zmiennymi drzewami narusza Prawo Demeter. To naprawdę nie byłoby naruszeniem prawa, gdyby drzewo było wartością, jaką zwykle są drzewa parsowania i drzewa składni, ale w takim przypadku nie byłoby problemu, ponieważ niczego nie trzeba by aktualizować. Zatem ten problem istnieje jako bezpośredni skutek naruszenia prawa Demeter, ale jak ogólnie tego uniknąć, gdy wydaje się, że twoja domena polega na manipulowaniu drzewami lub wykresami? Wzór złożony to wspaniałe narzędzie do przekształcania wykresu w pojedynczy obiekt i przestrzegania Prawa Demeter. Czy można użyć wzorca Composite do efektywnego przekształcenia jednego rodzaju drzewa w inny? Czy można utworzyć drzewo składni złożonej, aby zachowywało się jak abstrakcyjne drzewo składni, a nawet wykres przepływu sterowania? Czy można to zrobić bez naruszania zasady pojedynczej odpowiedzialności? Wzorzec złożony powoduje, że klasy absorbują każdą odpowiedzialność, której dotykają, ale być może można go jakoś połączyć z wzorcem Strategia.


title: Jak zademonstrować skalowalność i właściwość równoważenia obciążenia aplikacji w chmurze na platformie Windows Azure?

text: Dla mojego projektu chcę stworzyć aplikację internetową z platformą Windows Azure przy użyciu języka C#. Ideą jest hostowanie strony internetowej uczelni w chmurze. Za każdym razem, gdy ogłasza wyniki online, następuje gwałtowny wzrost, a chmura poradzi sobie ze szczytowym wykorzystaniem dzięki właściwościom skalowalności i równoważenia obciążenia oraz wdroży niezbędne zasoby. Jednak ponieważ wszystko to jest obsługiwane wewnętrznie przez platformę Azure, nie ma możliwości zademonstrowania tego w naszym projekcie. Czy istnieje sposób, w jaki możemy coś specjalnie zaimplementować, aby zademonstrować to oceniającemu? Może wirtualny sposób...


title: Najlepsze zasoby, aby naprawdę zrozumieć złożoność czasu wykonywania

text: Znam podstawy analizy w czasie wykonywania, takie jak tworzenie niektórych typów kodu O(n) i O(n^2). Ale mam prawdziwy problem z nauką, zrozumieniem i naprawdę pamiętam, jak analizować fragmenty kodu, które działają w innych złożonościach, takich jak O(n log n) lub O(2^n). Szukam zasobów, które w prosty sposób wyjaśnią, jak działają te inne zawiłości, i niektórych problemów praktycznych, aby naprawdę zmusić mnie do zrozumienia.


title: Gdzie mogę znaleźć statystyki dotyczące programistów i producentów oprogramowania z całego świata?

text: Próbuję znaleźć odpowiedź na bardzo trudne pytanie. Pytanie brzmi: > Ilu programistów i ile firm programistycznych jest na świecie? Na przykład, jeśli sprawdzę stronę Statystyka Austrii, widzę, że w Austrii są 8383 firmy zatrudniające 35522 pracowników określonych jako „Programowanie komputerowe, doradztwo i działalność pokrewna” i kolejne 4102 firmy zatrudniające 15171 pracowników określone jako „Działalność w zakresie usług informacyjnych”. Ta statystyka jest dobra, ale dotyczy tylko Austrii. Czy jest podobny w Europie, USA, na całym świecie?


title: JavaScript (jQuery) i stylizacja CSS

text: Powiedzmy, że buduję wtyczkę jQuery, która ma wiele niekonfigurowalnych atrybutów css, które musi zastosować do elementów DOM tworzonych przez samą wtyczkę. Czy uważa się, że lepszą praktyką jest stosowanie CSS bezpośrednio w kodzie javascript, czy też lepiej jest utworzyć plik css i po prostu uwzględnić zarówno pliki css, jak i javascript? Zawsze miałem wrażenie, że lepiej byłoby mieć plik css tylko dlatego, że wydaje się nieco czystszy i tak naprawdę niewiele zyskujesz mając wszystko w kodzie javascript. Chodzi mi o to, że rozmiar plików css + javascript byłby prawdopodobnie mniej więcej taki sam, jak gdybyś zastosował css przez javascript, więc jedyną rzeczą, jaką zyskasz, jest to, że wystarczy zażądać 1 pliku zasobów zamiast 2, jeśli zastosujesz css w skrypt java. Jestem po prostu ciekawy, ponieważ buduję wiele wtyczek jQuery i zauważyłem kilka innych wtyczek, które osadzają dużo css w javascript zamiast pliku css.


title: Co to są „Skalowalne systemy zintegrowane”?

text: Natknąłem się na ogłoszenie o pracę, w którym prosi się o doświadczenie ze „Skalowalnymi zintegrowanymi systemami”, ale szczerze mówiąc, brzmi to jak „ogólne hasło” i próbuję dowiedzieć się, jaka jest rzeczywista praca stojąca za „Skalowalnymi zintegrowanymi systemami”. Jak wygląda „Skalowalny, zintegrowany system”? Czy tworzy oprogramowanie do przetwarzania rozproszonego? Czy jest to pisanie interfejsów API między usługami w sposób, w jaki się „skalują”, a jeśli tak, to w jaki sposób? Nie rozumiem, czym jest Skalowalny Zintegrowany System. Firma wydaje się kompetentna i mam kompetentnych znajomych programistów pracujących tam, którzy twierdzą, że są świetnym miejscem do pracy. Gdyby to był SpammyCoOnCraigslist@yahoo.com, nie zawracałbym sobie głowy pytaniem.


title: semantyka współbieżności odczytywanie zapisywanego pliku (ext)

text: W systemie plików Ext 3/4, jeśli mam otwarty plik dziennika i jestem do niego dopisywany, jeśli inny proces próbuje go odczytać (np. za pomocą `cat`), co się dzieje? 1. Czy proces czytania może odczytać część / niekompletny zapis? 2. Czy czytanie w trakcie pisania jest bezpieczne i nie zakłóci procesu pisania? Czy jest szansa, że w ten sposób logi mogą zostać uszkodzone? Gdzie należy czytać więcej?


title: Jak produktywnie spędzać „wolny czas” w biurze

text: Po wysłaniu wydania, raz na dwa do trzech miesięcy, otrzymuję od 10 do 15 dni wolnego czasu. Przez czas wolny rozumiem brak pracy, nikogo nie obchodzi, co robisz itp., ale musisz przyjść do biura i iść. Czy masz w ten sposób wolny czas? Jak wykorzystujesz ten czas? Zwykle czytam, ale wydaje mi się, że wkuwanie coraz większej ilości informacji nie jest najlepszym sposobem na ich wydanie.


title: Za dużo wolnego czasu w miejscu pracy

text: > **Możliwy duplikat:** > Jak produktywnie spędzać „wolny czas” w biurze Jestem programistą Coldfusion Web Developer. Niedawno zmieniłem firmę, aby móc przenieść się do innego stanu. Obecny projekt, który mam, to tylko stanowisko zapasowe na 3 miesiące. Nie mam dużo pracy, a praca, którą mam też nie ma nic wspólnego z programowaniem. Jak wy, inni programiści, generalnie wykorzystujecie tak dużo wolnego czasu? (Zamierzam zostać tu jeszcze przez dwa miesiące)


title: Czy powinienem szyfrować dane w bazie danych?

text: Mam klienta, dla którego zrobię aplikację webową o opiece nad pacjentem, zarządzaniu pacjentami, konsultacjach, historii, kalendarzach, w zasadzie wszystko o tym. Problem w tym, że są to dane wrażliwe, historia pacjenta i tym podobne. Klient nalega na szyfrowanie danych na poziomie bazy danych, ale myślę, że pogorszy to wydajność aplikacji internetowej. (Ale może nie powinienem się tym martwić) Przeczytałem przepisy dotyczące ochrony danych w kwestiach zdrowotnych (Portugalia), ale nie jest to bardzo konkretne (właśnie zapytałem ich o to, czekam na ich odpowiedź ). Przeczytałem poniższy link, ale moje pytanie jest inne, czy powinienem zaszyfrować dane w bazie danych, czy nie. Jednym z problemów, które przewiduję w szyfrowaniu danych, jest to, że będę potrzebować klucza, może to być hasło użytkownika, ale wszyscy wiemy, jak wyglądają hasła użytkowników (12345 itp.) I generowanie klucza, który musiałbym przechowywać to gdzieś to znaczy, że programista, dba, cokolwiek mogło mieć do niego dostęp, jakieś przemyślenia na ten temat? Nawet dodanie losowej soli do hasła użytkownika nie rozwiąże problemu, ponieważ zawsze mogę uzyskać do niego dostęp, a zatem odszyfrować dane.


title: Konwencje nazewnictwa specyficzne dla wersji klas Java

text: Muszę stworzyć adapter między dwoma programami (symulacja mech., non-cs). Zakładając, że mamy klasę o nazwie `ThatThing`. Mam do czynienia z różnymi implementacjami dla różnych dostawców. Te wersje nie mają znaczących nazw (w przeciwieństwie do eclipse helios, indygo itp.). **1\. Jak nazwać klasę, która powinna wyrażać numer wersji?** Klasy takie jak `ThatThing_3_6_Impl`, `ThatThing_3_7_Impl` są dla mnie dość niezręczne.


title: Klient natywny Google – koniec programowania po stronie klienta/serwera?

text: Jak niektórzy z was już wiedzą, klient natywny Google zostanie wydany z Chrome 14. Klient natywny Google to technologia, która pozwala nam uruchamiać natywny kod (C, C++) w sieci. (Przeglądarka). Słyszałem, że jest też całkiem bezpieczny. Czy to koniec programowania po stronie klienta/serwera? Koniec javascript, php, asp.net, ruby, jsp itp.??? Wygląda na to, że natywny klient Google ma potencjał, aby zmienić grę. Co myślisz?


title: Jak przewidzieć czas potrzebny na wykonanie zadania?

text: Istnieją trzy scenariusze, w których jestem proszony o przewidzenie, jak długo to potrwa: > 1. Wiem, że mogę rozwiązać problem bez dalszych konsultacji > (to znaczy, że w problemie nie ma _nieznanego_. Mam już wszystkie > wiedza potrzebna do rozwiązania problemu) > 2. Wiem, że problem można rozwiązać, ale muszę przeprowadzić wiele > eksperymentów, aby zobaczyć, jak wszystko działa (na przykład, możesz wiedzieć, że opona samochodowa > jest łatwa do zmiany, ale jeśli nigdy tego nie zmieniałem, możesz napotkać problemy >, których będziesz > unikać/poprawiać następnym razem, dzięki czemu > _przewidywanie_, jak długo to zajmie, będzie lepsze... tak, wiem, że jest to jedna z > odpowiedzi na moje pytanie tutaj... doświadczenie) > 3. Powiedziano mi, że problem można rozwiązać, ale nie mam pojęcia od czego zacząć > więc zaczynam dzielić go na małe kawałki i przechodzę do kroku 2 (gdzie wiem > może być rozwiązany, ale wymaga eksperymentowania) > Generalnie nie potrafię przewidzieć, jak długo coś potrwa, nawet jeśli wcześniej coś zrobiłem _podobnie_. Zawsze wpadam w pułapkę, której nie przewidziałem. Moje pytanie dotyczy głównie punktu 1 i nieco punktu 2 (w punkcie 3 wiem, że moje przewidywania zawsze będą błędne). Wiem, że wymaga to doświadczenia, które pozwoli mi dobrze przewidywać, ale _musi_ istnieć kilka podstawowych _zasad_, których mogę przestrzegać, aby przynajmniej zacząć nieco trafnie przewidywać. W tej chwili czuję, że nigdy nie będę w stanie dobrze przewidzieć, bez względu na to, ile zdobędę doświadczenia. Jedna zasada, o której słyszałem, to coś w stylu „przewiduj, ile to zajmie, a następnie pomnóż to przez 2, a potem dodaj jeszcze dwa tygodnie” (więcej żartu… a może nie?) Teraz wiem, że przewidywanie to, jak długo zajmie wykonanie zadania, jest ogólnym problemem w branży, ale ludzie nadal do pewnego stopnia przewidują i nie zawsze mogą się mylić (szczególnie w przypadku mniejszych zadań). W moim przypadku, jeśli ktoś powie mi „Jak myślisz, ile czasu zajmie połączona lista z tymi funkcjami?”, podam błędną prognozę, mimo że wiem, jak ją stworzyć bez konsultacji z żadnym ciałem/książką. > **Więc moja prośba do SO (zwłaszcza weteranów w branży) polega na udzieleniu mi > (nam) wskazówek, jak lepiej przewidywać, ile czasu > zajmie zadanie.** **Tło** Obecnie jestem student studiów magisterskich pracujący w firmie. Jestem bardzo młoda pod względem doświadczenia branżowego i ogólnie doświadczenia. Czytam wiele książek o lepszym programowaniu, projektowaniu itp. (większość z nich jest polecana tutaj w SO), a moja wiedza na temat programowania stale rośnie dzięki pracy/szkole i SO; ale oczywiście muszę wchłonąć dosłownie tony więcej.


title: Jakie tematy dotyczące wydajności powinienem znać?

text: Kiedy kodujesz fragmenty kodu, które mają krytyczne znaczenie dla wydajności (niekoniecznie duże, ale kod, który jest wykonywany dużo), o jakich tematach powinienem wiedzieć/wziąć pod uwagę. Jestem już dość zaznajomiony z buforowaniem, aliasowaniem, rozgałęzieniem, kosztem operacji arytmetycznych, rozwijaniem pętli (i myślę, że kilka innych, które nie przychodzą mi do głowy). Co jeszcze powinienem wiedzieć? (niekoniecznie szukam szczegółów, tylko koncepcje mogę samemu wyszukać)


title: Czy ma sens tworzenie wrappera Rubiego, aby odwoływać się do obiektu Java, który robi dokładnie to samo?

text: Używam `JRuby`. W moim kodzie `Java` mam klasę o nazwie `Texture`, zdolną do wykonywania pewnych czynności związanych z manipulacją graficzną. W moim kodzie `Ruby` zwykle będę musiał coś rysować, więc powinienem po prostu wywołać klasę `Texture` `Java`, aby wykonać rysunek za mnie. Skończyło się jednak na stworzeniu klasy `Ruby` o nazwie `Texture`, **która otacza instancję `Texture`**` Javy`. Jakoś tak (tylko przykład, ale raczej dokładny): class Texture def zainicjuj @reference = getMeAnInstanceOfAJavaTexture end def draw @reference.draw end def rotate @reference.rotate end def clear @reference.clear end end Jak widać, wszystkie ta klasa `Texture` to... cóż, powiedz `Teksturze` `Java`, aby wykonała za nią zadanie. Tylko to. Podświadomie chyba chciałem to zrobić w ten sposób **bo ładnie wygląda** (lol). Teraz, trochę bardziej technicznie, możliwą zaletą, którą widzę, jest to, że **w ten sposób nie muszę zbyt wiele wchodzić w interakcje ze stroną `Java` projektu**. Większość pracy, którą wykonam, będzie dotyczyć Ruby, a utrzymywanie stałej interakcji pomiędzy Ruby i Java może być mylące. Jeśli stworzę klasę `Ruby`, która zajmie się tym za mnie, może w przyszłości będę czuł się bardziej komfortowo, gdy będę musiał stworzyć jakieś sto tekstur, ale zamiast stukrotnie wchodzić w interakcję z `Java`, robię to za pomocą ` Ruby`, moje główne środowisko. Czy moje rozumowanie ma sens, czy jest to kiepska wymówka, by zrobić coś, co wygląda ładnie? A może rzeczywiście istnieje dobry powód, aby zrobić to, co właśnie zrobiłem?


title: Jak śledzić dokument wymagań w zespole zwinnym?

text: Rozumiem, że User Stories dominują w zwinnym świecie, ale jak są przechowywane te artefakty, aby nowi programiści, którzy dołączają do zespołu, mogli szybko dostosować się do wymagań? Co się stanie, jeśli historia użytkownika zmieni się później, w jaki sposób jest aktualizowana i przechowywana jako artefakt? Widziałem wiele zespołów, które po prostu otwierały nowe zgłoszenie/prośby o nowe funkcje/raporty o błędach, zamiast śledzić oryginalną historię.


title: Czy dobrze używamy wzorca repozytorium?

text: Używamy kilku oddzielnych klas z przyrostkiem `-repository` do pobierania danych z bazy danych; dla każdej tabeli własne repozytorium. Mamy na przykład klasę `customerrepository`, która posiada wszystkie rodzaje metod do pobierania klientów, oraz `vacancyrepository`, która posiada wszystkie rodzaje metod do odzyskiwania wakatów. Mam dwa pytania dotyczące tego sposobu działania: 1. Co powiesz na pobieranie danych obejmujących wiele tabel? Na przykład mam ekran, który pokazuje wszystkich klientów, którzy jeszcze nie utworzyli wakatu. Czy `repozytorium klienta` może używać metod z `vacancyrepository`, czy też oba repozytoria zwracają wyniki i czy istnieje klasa wyżej w hierarchii (nazwijmy ją `dataservice`), która pobiera wyniki z obu repozytoriów i łączy je w jeden wynik ? 2. ile logiki może obsłużyć takie repozytorium? Myślę, że można zaimplementować „gdzie aktywne == prawda” w repozytorium, aby pobrać tylko aktywne rekordy, czy nawet ta prosta logika powinna być obsługiwana przez klasę wyżej w hierarchii (nazwijmy ją „usługą danych”)? Przykład, na który teraz natknąłem się, jest następujący: Mamy listę pytań, która zawiera jedno lub więcej pytań. Pytanie może mieć wynik, który jest przechowywany w osobnej tabeli. Jeśli więc chcesz pobrać całkowity wynik z listy pytań, musisz połączyć dane z tabeli `questionlist`, tabeli pytań i tabeli `questionstatus`. W tej chwili mamy 3 różne repozytoria dla tych tabel. Gdybym zapytał `repozytorium listy pytań` jaki jest łączny wynik dla listy numer 12, musiałoby ono pobrać dane z dwóch innych repozytoriów, a zatem mieć w tym jakąś logikę, czy to dozwolone? A może istnieje `questionlistdataservice`, który wie, których repozytoriów użyć? Jeszcze jedno: nasze repozytoria mogą dawać wynik `IQueryable`, dzięki czemu usługa wywołująca może łatwo łączyć wyniki, ale co powiesz na to, że jeśli tak nie jest, nie sądzę, aby pobieranie całej zawartości wszystkich trzech tabele z bazy danych.


title: Wyprowadzanie algorytmu z jego reprezentacji sieci neuronowej

text: Nie jestem pewien, czy to pytanie jest głupie, czy nie, czy nawet bezsensowne, ale czy sieć neuronową można przekształcić w tradycyjną reprezentację algorytmiczną? Dla np. NN dla programu rozpoznawania wzorców. Czy jest na to jakaś matematyczna podstawa? Dzięki Pozdrawiam


title: Ponowne wykorzystywanie wartości zmiennych segmentu podczas generowania wychodzących adresów URL

text: Gdy trasy zostaną dopasowane do _wychodzących adresów URL_ , system routingu spróbuje znaleźć wartości dla każdej ze _zmiennych segmentów_ we _wzorzec adresu URL trasy_, sprawdzając również wartości z _bieżącego żądania_. W razie potrzeby system routingu ponownie użyje _wartości zmiennych segmentu_ z _przychodzącego adresu URL_ Fragment pochodzi z książki _Pro Asp.Net MVC 4_: > System routingu ponownie użyje wartości tylko dla zmiennych segmentu, które występują > wcześniej we wzorcu adresu URL niż jakiekolwiek dostarczone parametry do metody > Html.ActionLink. Załóżmy, że próbowaliśmy utworzyć taki link: > > @Html.ActionLink("Kliknij mnie", "Lista", "Katalog", nowy {color="Aqua"}, null) > > Podaliśmy wartość koloru , ale nie dla strony. Jednak kolor pojawia się > przed stroną we wzorcu adresu URL, więc system routingu nie użyje ponownie wartości > z przychodzącego adresu URL, a trasa nie będzie pasować. > > ... Zdecydowanie zalecamy, aby nie polegać na tym zachowaniu i > podawać wartości dla wszystkich zmiennych segmentu we wzorcu adresu URL. Opierając się > na tym zachowaniu, w końcu przyjmujesz założenia dotyczące kolejności, w jakiej twoi > użytkownicy zgłaszają żądania Uwaga: trasa, do której odnosi się fragment, jest zdefiniowana jako: route.MapRoute("MyRoute", "{controller}/{ akcja}/{kolor}/{strona}"); a) > System routingu ponownie użyje wartości tylko dla zmiennych segmentu, które występują > wcześniej we wzorcu adresu URL niż jakiekolwiek parametry dostarczone do metody > Html.ActionLink Co może się nie udać, jeśli system routingu ponownie użyje wartości dla _zmiennych segmentu_, które występują później we _wzorzec adresu URL_ niż parametry dostarczone do `Html.ActionLink`? b) > Zdecydowanie zalecamy, aby nie polegać na tym zachowaniu i podać wartości dla wszystkich zmiennych segmentu we wzorcu adresu URL. Opierając się > na tym zachowaniu, w końcu przyjmujesz założenia dotyczące kolejności, w jakiej twoi > użytkownicy zgłaszają żądania Nie rozumiem, jak niepodanie wartości dla wszystkich _zmiennych segmentów_ przekłada się na przyjmowanie założeń dotyczących kolejności, w jakiej użytkownicy składają _żądania_?! Bardzo doceniane


title: Losowość w testach akceptacyjnych

text: Mam proste rozwiązanie uwierzytelniania, w którym użytkownik może zalogować się za pomocą adresu e-mail lub nazwy użytkownika. Ponieważ chcę pokazać tę małą funkcję w testach akceptacyjnych, ale nie chcę ich zanieczyszczać, pomyślałem, że wprowadzę trochę losowości. Czy uważasz, że to jest złe czy dobre? krok "Wypełnij moje dane uwierzytelniające" wykonaj fill_in :user_login, z: [@user.email, @user.name].sample fill_in :user_password, with: @user.password end


title: Narysuj wykres funkcji, której cechy są nieznane

text: Załóżmy, że mam funkcję. Mam kod, który przy wartości x daje wartość y. Mogę założyć, że funkcja jest w pewnym sensie matematycznie rozsądna, a nie czymś szalonym, jak funkcja wszędzie-nieciągła lub tym podobne, ale poza tym nic o tym nie wiem. Chcę narysować wykres, który może mieć sens dla kogoś, kto na niego patrzy. Moje granice dla wartości x i y są ustalone. Oczywiście mogę wstawić kilka wartości x, uzyskać odpowiadające im wartości y i bawić się łączeniem kropek. Ale w niektórych przypadkach da to mylące odpowiedzi. Na przykład wykres y=1/x ma nieciągłość przy x=0. Jeśli zagram w łączenie kropek, a zero nie jest jedną z moich wejściowych wartości x, narysuję linię w poprzek nieciągłości, zamiast zwiększać y do nieskończoności, gdy x zbliża się do zera z góry, a następnie pojawiać się ponownie od minus nieskończoność dla nieznacznie ujemnego x. Wydaje się, że mógłbym chcieć być podejrzliwy za każdym razem, gdy kierunek zmiany wartości y się odwraca. Innymi słowy, nie ufaj pozornym szczytom i dolinom; spójrz na kilka innych punktów, aby zobaczyć, co się naprawdę dzieje. Ale to też może się nie udać; rozważ funkcję y=100x+1/x. Teraz, o ile moje punkty próbkowania nie zbliżą się do zera, nadal przegapię asymptotę. Ktoś musiał przestudiować ten problem. Czy istnieje odpowiednia literatura? Jeśli tak, to gdzie?


title: Jak podzielić pracę nad aplikacjami internetowymi?

text: Około rok temu w moim miejscu pracy postanowiliśmy zająć się tworzeniem aplikacji internetowej do użytku wewnętrznego (w ramach bardziej skomplikowanego systemu, który nie ma związku z tym pytaniem). Nikt tak naprawdę nie miał doświadczenia w tworzeniu stron internetowych, więc prawdopodobnie niektóre z naszych decyzji były błędne, ale w sumie odnieśliśmy sukces z narzędziem, które tworzyliśmy. Ponieważ mieliśmy doświadczenie w programowaniu w Pythonie, wybraliśmy Django jako naszą platformę. Moje pytanie dotyczy „kto co robi”. Sposób, w jaki podzieliliśmy naszą pracę, był następujący: jest jeden zespół, który zajmuje się całym kodem Pythona - czyli wszystkimi adresami URL, widokami i modelami Django, a także faktycznym backendem do obsługi asynchronicznego wykonywania zadań (coś trochę jak Celery). Za szablony (data binding), javascript, design, HTML, CSS itp. odpowiada inny zespół (a dokładniej jedna osoba w innej grupie deweloperskiej - ale to tylko implementacja). Powiedziałem, od około roku. Zaczynam myśleć, że być może linia odpowiedzialności między dwoma zespołami jest zła. Powodem jest to, że za każdym razem, gdy musimy wejść w interakcję, mamy do czynienia z dość dużym obciążeniem – a to dużo. Na przykład, kiedy dodajemy nową tabelę i chcemy ją wyświetlić, musimy poinformować „faceta od frontendu”, jaki będzie adres URL i co będzie zawierał. Następnie musimy zintegrować naszą pracę, aby zobaczyć, czy wszystko jest w porządku. Czasami nie przekazaliśmy szablonowi wystarczającej ilości kontekstu, aby działał, i między nami jest powolny ping-pong informacji. Więc moje pytanie brzmi – jaki jest zwyczajowy sposób dzielenia pracy na aplikacjach webowych? Kto zajmuje się różnymi modułami - modelami, widokami, adresami URL, szablonami, projektem, doświadczeniem użytkownika, HTML, CSS, javascript?


title: Filtrowanie Bayesa i przechowywanie danych z rozbudowanymi zestawami danych

text: Chcę napisać filtr Bayesa, który będzie działał jako wskaźnik tematu dla wielu tematów ze zmienną liczbą źródeł. Przy naprawdę dużej liczbie kanałów RSS, a tutaj naprawdę dużych może być tylko kilkaset, tylko kilka procent (powiedzmy 2%) jest interesujących dla danej grupy. To, co chcę napisać (w PHP) to filtr, który mogę wytrenować, aby powiedzieć, że to jest temat X, a to nie jest. Następnie chcę, aby wybrani użytkownicy mogli dalej trenować filtr. Ale chcę używać tylko podstawowego szkolenia do wybierania tematów, aby oznaczyć je jako interesujące dla Tematu X, a następnie udoskonalić ten zbiór w oparciu o szkolenie dostarczone przez użytkownika, aby uzyskać najbardziej interesujące wyniki dla tego użytkownika, ponownie oceniając prawdopodobieństwa, w tym szkolenie dostarczone przez użytkownika na krótkiej liście na użytkownika. A może ocenianie krótkiej listy i wybieranie „najlepszych” przedmiotów, które mają być wyświetlane jako pierwsze. Tak więc z biegiem czasu zyskam dość duży zbiór danych (wszystkie nagłówki i notki z setek kanałów) i zamierzam oflagować pozycje kanału „tak” i „nie” w nieokreślonej liczbie tematów i użytkownicy również to zrobili. Nagłówek i notatka będą przechowywane do łatwego wyświetlania później, ale nie chcę trzymać zbyt wielu elementów, które są „nie” (do 98%, jak sobie wyobrażam). Biorąc pod uwagę, że korzystam, powiedzmy, z tej implementacji z GitHub, którą znalazłem wcześniej dzisiaj https://github.com/benwaine/BayesPHP (lub można ją namówić do samodzielnego rozwijania), jaki jest najbardziej wydajny sposób na przechowywanie potrzebnych danych przeprowadzić ocenę? Czy proszę o kłopoty, jeśli po prostu spróbuję przechowywać wszelkie nagłówki wiadomości itp. Oznaczone „tak”, ale przechowuj jakieś podsumowanie dla podstawowych ocen „nie”, a następnie po prostu wypracuj to w locie za każdym razem, gdy przechowujesz wynikowe „tak”. Serwer, z którym mam pracować, już robi całkiem sporo i nie oszczędzi mi na to dużo mocy. Więc równoważąc wydajność przetwarzania i potrzeby w zakresie przechowywania, co możesz polecić?


title: Koncepcja i projekt przed kodowaniem: ile to jest prawdą?

text: Nauczyłem się w szkole, a także czytałem wszędzie, że dobra metodologia rozwoju wymaga koncepcji i projektu przed właściwym kodowaniem. To nie jest nowa informacja nawet dla początkującego programisty. Zastanawiam się jednak, czy to dobra rada, ponieważ odkąd zacząłem programować w kilku językach programowania, nigdy nie udało mi się zaprojektować i wymyślić wszystkiego od początku. Mam na myśli to, że zawsze łączyłem design, koncepcję i programowanie. Czy jestem najgorszym programistą na świecie, czy też pomysł, którego uczymy się w szkole, to tylko stary bezsensowny „religijny” dogmat? Jak możemy nawet wymyślić i zaprojektować coś, czego nigdy wcześniej nie doświadczyliśmy i nie zaprogramowaliśmy? Czy to nie śmieszne? Czy zamiast tego programowanie nie kieruje koncepcją i projektowaniem?


title: Czy jest to przykład „nadmiernej inżynierii” czy dobra praktyka?

text: Kod, który odziedziczyłem, ma projekt, którego nie znam (nadal jestem nowy w świecie programowania). Jest to projekt .net i mamy tu do czynienia z 3 klasami. public Class1 { public void ZrobićCoś() { Class2 class2 = new Class2(); string mojaWartość = class2.GetSomeValuePlease(); //dlaczego miałbym nie robić class2.MyClass3.GetActualValue(); } } public Class2 { public Class3 MojaKlasa3 = new Class3(); ciąg publiczny GetSomeValuePlease() { return this.MyClass3.TheActualValue(); } } public Class3 { public string TheActualValue() { return "To jest wartość"; } } Jak widać, wszystkie 3 klasy są publiczne. Nie rozumiem, dlaczego korzystając z powyższego przykładu w ogóle miałbym używać Class2? Mogę zrozumieć, jeśli w metodzie `GetSomeValuePlease()` była jakaś logika, która wpłynęła na Class2, ale nie ma. Zwykle po prostu usunę metodę Class2 (GetSomeValuePlease) i wywołam metodę Class3 (GetActualValue) bezpośrednio z Class1, ale programista, którego przejąłem (z którym nie można się skontaktować) jest mądrzejszy i bardziej doświadczony niż ja. a _uczucie_ to jest tylko przepracowanie, a to tylko dodatkowy kod / dodatkowa konserwacja. Czy ktoś ma doświadczenie w projektowaniu w ten sposób, które mogłoby wyjaśnić proces myślowy lub implikacje posiadania tej „klasy średniej” w przeciwieństwie do pójścia wprost?


title: Buforowanie obrazu podczas renderowania tych samych obrazów na różnych stronach

text: Powiedziano mi, żebym pomyślał o buforowaniu obrazów, które będą wyświetlane na stronie. Obrazy będą powtarzane w całej witrynie na różnych stronach i powiedziano mi, abym wymyślił najlepszy sposób na buforowanie tych obrazów. Na jednej stronie może być od kilku do kilkunastu zdjęć. Oto kilka pytań: * Czy buforowanie przeglądarki będzie działać, aby wyświetlać te same obrazy na różnych stronach internetowych? * Czy powinienem zamiast tego przechowywać obrazy w postaci streszczonej w pamięci, używając tablic JavaScript? * Przechowywać je na dysku twardym za pomocą „localStorage”? * Jaka byłaby najłatwiejsza, ale najlepsza opcja do tego? * Czy są jakieś inne alternatywy? * Jak wymusić pamięć podręczną? Wszelkie inne informacje byłyby bardzo mile widziane...


title: Obsługa arkusza stylów z prawdziwego języka programowania

text: Ostatnio bawiłem się CSS (i innymi technologiami webowymi). Nie jestem programistą internetowym i prawdopodobnie zbytnio wpływa to na moje podejście. Uważam, że składnia CSS jest bardzo ograniczona, więc dałem szansę na SASS i LESS (głównie to drugie). Te dwa języki są o wiele bardziej przydatne, ale wciąż mam kilka problemów: wygląda na to, że te języki nie pozwalają mi robić większości rzeczy, które chciałbym robić. Mam wrażenie, że te języki mają być tak dyskretne, jak to tylko możliwe, pozostając bardzo blisko CSS i mając bardzo małe zrozumienie tego, co się dzieje; rezultatem jest dziwna mieszanka procesora makr i języka deklaratywnego. Na przykład niektóre rzeczy, które przyprawiają mnie o ból głowy w LESS to: * Lenistwo języka sprawia, że dość trudno jest zrozumieć przepływ wykonywania (i przewidzieć, czy coś jest zdefiniowane i jaka jest jego wartość) * Właściwości CSS nie mogą być dostępu, jesteś zmuszony polegać na zmiennych LESS * Scoping jest jakoś niejasny (prawdopodobnie z powodu lenistwa i sposobu, w jaki mixiny są rozszerzane) * Jeśli nie poświęcasz dużo uwagi, wynik jest zwykle nieoptymalny, z dużo duplikacji itp * Składnia nie jest zbyt ładna: nie lubię używać @ dla zmiennych, @{} dla nazw klas zmiennych, uważam, że lepszym rozwiązaniem może być wygenerowanie CSS z prawdziwego języka programowania (o dobrze znanej składni i mnóstwo dostępnych funkcji), które śledzą wszystkie właściwości każdego selektora i gdzie moja logika jest wykonywana sekwencyjnie. Tutaj spróbuję naszkicować przykład tego, co mam na myśli; Używam JavaScript i podejście inspirowane jQuery: var x = new CSS('HTML5'); // `x` to mój styl, który zaczął się od domyślnego arkusza stylów HTML5 CSS. // `x(selector)` umożliwi nam dostęp do stylu selektora CSS `selector`. x.import('plik.css'); // zaimportujmy więcej reguł console.log( x('a').fontSize ); // Wyświetla domyślną właściwość rozmiaru czcionki dla elementów 'a' x('.myClass > p').display = 'block'; // CSS: .myClass > p { display: block; }; var c1 = x('ciało > div.class1'); // Tylko dla towaru... c1.width = x('.class2 > div').width; // Nie można tego zrobić w CSS/LESS/SASS :( // Powinno to oczywiście powrócić poprawnie lub dać błąd, jeśli ta właściwość nie zostanie znaleziona x('.class3').set( c1.deepCopy() ); // Wprowadzanie zagnieżdżonych selektorów x('.class4').set( c1.copy() ); // Tylko kopiowanie właściwości // Introspekcja! F**k tak! c1.forEachProperty( function(property){ ... } ); c1.forEachChild( function(selector){ ... } ); c1.forEachDescendant( function(selector){ ... } ); x.forEachElement( function(selector){ ... } ); var c1Rule = c1.generate(); // Generowanie reguły CSS dla określonego selektora x.delete('.class1'); // Nie potrzebujemy/nie chcemy już `.class1` w naszym arkuszu stylów x.deepDelete('.class1' // Usunięcie również jego zagnieżdżonych selektorów // Wygenerujmy teraz nasz końcowy arkusz stylów // Funkcja `generate` może zająć się optymalizacją arkusza stylów var stylesheet = x.generate(); * * * Tl;dr: I „chciałbym obsługiwać arkusz stylów tak, jakby był zapytaniem do bazy danychab” le z prawdziwego języka programowania. Teraz zastanawiam się: * Czy jest jakiś do generowania CSS podobny do tego pomysłu? * Czy uważasz, że takie podejście by się sprawdziło? * Jakie wady miałoby to podejście w odniesieniu do CSS/SASS/LESS?


title: Algorytm dopasowujący zdarzenia ze znacznikiem czasu z dwóch źródeł

text: Mam dwa różne urządzenia fizyczne (jedno to kamera, drugie to inne urządzenie), które obserwują tę samą scenę i zaznaczają, kiedy następuje określone zdarzenie. (nagraj sygnaturę czasową) Tak więc każdy z nich tworzy serię sygnatur czasowych „kiedy zaobserwowano zdarzenie”. Teoretycznie zarejestrowane znaczniki czasu powinny być bardzo dobrze wyrównane: Wizualizacja idealnej sytuacji na dwóch liniach czasu „s” i „r” zarejestrowanych z dwóch urządzeń: ![Zwizualizowane znaczniki czasu zdarzeń w idealnych warunkach](http://i.stack. imgur.com/VJALZ.png), ale bardziej prawdopodobne jest, że nie będą one tak dobrze wyrównane i może brakować wydarzeń z osi czasu s lub r: ![Wizualne znaczniki czasu wydarzeń w warunkach rzeczywistych](http://i.stack. imgur.com/PFmVQ.png) Szukam algorytmu dopasowującego zdarzenia z „s” i „r” w następujący sposób: ![Dopasowane zdarzenia](http://i.stack.imgur.com/PKlrR.png) Więc że wynik będzie taki: (s1,null); (s2,r1); (s3,null); (s4,r2); (s5,r3); (null,r4); (s6,r5); Albo coś podobnego. Może z pewną oceną „zaufania”. Mam kilka pomysłów, ale czuję, że może to być prawdopodobnie dobrze znany problem, który ma kilka dobrych znanych rozwiązań, ale nie znam odpowiedniej terminologii. Jestem trochę poza moim żywiołem, to nie jest mój główny obszar programowania. Wszelkie pomoce, sugestie itp. będą mile widziane.


title: Czy Jquery zasadniczo używa CSS3 do animacji i efektów?

text: Początkowo zacząłem to pytanie od "co to jest JQuery i jak to działa", jeśli chodzi o wszystkie te fantazyjne animacje, efekty, wtyczki pokazu slajdów itp. Nie byłem pewien, jak JQuery robi te wszystkie fantazyjne rzeczy. Ale po przeczytaniu w Internecie z przyjemnością przyznaję, że JQuery jest w zasadzie „biblioteką javascript”, a przez to myślę, że oznacza to, że JQuery to czysty tekst, kod javascript, składający się z publicznych metod, funkcji, stałych itp. , z założeniem, że wywoływanie tych prostych metod lub funkcji może zastąpić mnóstwo kodu javascript i że jest to spójny sposób. Czy mam rację mówiąc, że wszystkie te wymyślne animacje, efekty itp. nie są „w rzeczywistości” osiągane przez javascript/Jquery? Osiąga się je za pomocą CSS3? A CSS3 jest językiem arkusza stylów, który przeglądarka może zrozumieć i czy potrafi wykonać te instrukcje arkusza stylów? Wiem, bardzo niejasne i niejednoznaczne pytanie, ale próbuję zrozumieć, jak uzyskać te niesamowite animacje jquery itp.


title: Przeprowadzając testy integracyjne, jaki byłby dobry sposób na dostarczenie wartości testowych ze źródeł zewnętrznych?

text: Buduję rozwiązanie do testowania integracji z wykorzystaniem Selenium w VS2012, które w niedalekiej przyszłości zostanie uruchomione na serwerze CI. Muszę podać sposób na zróżnicowanie wartości używanych do testowania. Najłatwiej byłoby dostarczyć testerom QA kilka szablonów arkuszy kalkulacyjnych, które mogą wypełnić, aby przeprowadzić testy z tymi wartościami (na przykład Zaloguj się, Utwórz nowego użytkownika, Utwórz nową rezerwację, Aktualizuj rezerwację itp.). W tej chwili mam projekt Test przy użyciu NUnit i inny projekt, który zawiera kod wykonania testu przy użyciu Selenium, z przykładowymi wartościami zakodowanymi na sztywno w przepływach pracy dla każdego testu. Zrobiłem trochę poszukiwań, ale nie znalazłem odpowiednich wyników. Albo używam niewłaściwej terminologii, albo nigdy tego nie zrobiono (nieprawdopodobne, wiem). Czy to zrobiłeś lub słyszałeś/przeczytałeś o kimś, kto to zrobił? Nie chciałbym wymyślać na nowo tego konkretnego koła.


title: C Elastyczne tablice: kiedy stały się częścią standardu?

text: Nauczyłem się programować w C wiele lat temu i używałem C stale przez około 10 lat. Obecnie od czasu do czasu muszę zaglądać do kodu C, ponieważ nasze niestandardowe moduły uruchamiające Informix 4GL RDS również zawierają kod C, ale jest to dość uproszczony kod. Kiedy dużo używałem C, nigdy nie słyszałem o elastycznych tablicach. Zadaję to pytanie, ponieważ natknąłem się na to pytanie SO. Dziękuję.


title: Jak sprawdzić, czy moje testy nie zostały usunięte przez innych programistów?

text: Właśnie natknąłem się w pracy na interesujący problem dotyczący wspólnego kodowania. Napisałem kilka testów jednostkowych/funkcjonalnych/integracyjnych i zaimplementowałem nową funkcjonalność do aplikacji, nad którą pracuje około 20 programistów. Wszystkie testy zdały i sprawdziłem w kodzie. Następnego dnia zaktualizowałem swój projekt i zauważyłem (przypadkowo), że niektóre z moich metod testowych zostały usunięte przez innych programistów (scalanie problemów na ich końcu). Nowy kod aplikacji nie został dotknięty. Jak mogę automatycznie wykryć taki problem? To znaczy, piszę testy, aby automatycznie sprawdzić, czy mój kod nadal działa (lub nie został usunięty), jak mam zrobić to samo dla testów? Jeśli ma to znaczenie, używamy Javy, JUnit, Selenium, SVN i Hudson CI.


title: Nauczanie logicznego/analitycznego myślenia

text: Przez ostatni rok próbowałem prowadzić klub, w którym uczę programowania i podczas gdy oni poczynili postępy, to, czego tak naprawdę im brakuje, to najbardziej fundamentalna koncepcja programowania, analitycznego myślenia. Kiedy zbliżam się do drugiego roku nauczania dzieci (w wieku 12-14 lat), zdaję sobie sprawę, że zanim zacznę uczyć ich składni i tego, jak właściwie zaprogramować aplikację (lub co oni wolą grę), muszę najpierw wprowadź ich w myślenie analityczne. Znalazłem już Scratcha i podobne rzeczy, takie jak Light-Bot i na pewno będę ich używał, aby nauczyć ich _zaimplementować_ swoje logiczne myślenie, ale to, czego naprawdę potrzebuję, to kilka wskazówek lub artykułów na temat **jak uczyć analitycznego myślenia** dla dzieci w wieku od 12 do 14 lat. Szukam pomysłów na to, jak nauczyć tego rodzaju myślenia, którego te dzieci będą potrzebowały, aby nauczyć je programowania, czy to analitycznego, logicznego czy krytycznego. **Jak i czego mam ich nauczyć** w związku ze sposobem, w jaki ich umysły muszą być połączone podczas programowania rozwiązań problemów?


title: Licencja MIT w bibliotece referencyjnej: implikacje prawne?

text: Próbuję określić, jakie są moje zobowiązania prawne, jeśli w moim programie używam biblioteki licencjonowanej przez MIT (plik JAR). Czy muszę dołączyć kod źródłowy biblioteki podczas dystrybucji mojego programu? Czy muszę dołączyć plik README wyjaśniający licencjonowanie spakowanego pliku JAR? Jeśli po prostu dołączam nieedytowany plik JAR, czy muszę w ogóle dołączyć coś dodatkowego?


title: Jak zidentyfikować problem z klasyfikacją PDF?

text: Przeszukujemy i pobieramy wiele firmowych plików PDF i próbujemy wybrać te, które są raportami rocznymi. Takie raporty można pobrać ze stron poświęconych relacjom inwestorskim większości firm. Pliki PDF są skanowane, a baza danych jest wypełniana między innymi: * Tytułem * Treścią (pełny tekst) * Liczba stron * Liczba słów * Orientacja * Pierwsza linia Korzystając z tych danych sprawdzamy oczywiste frazy, takie jak: * Raport roczny * Sprawozdanie finansowe * Raport kwartalny * Raport okresowy Następnie odnotowuje się częstotliwość tych fraz i innych. Do tej pory mamy do zeskanowania około 350 000 plików PDF oraz zestaw szkoleniowy zawierający 4000 dokumentów, które zostały ręcznie sklasyfikowane jako raport lub nie. Eksperymentujemy z wieloma różnymi podejściami, w tym z klasyfikatorami bayesowskimi i ważeniem różnych dostępnych czynników. Budujemy klasyfikator w Ruby. Moje pytanie brzmi: gdybyś myślał o tym problemie, od czego byś zaczął?


title: Kontakty z inżynierami, którzy często odchodzą z pracy

text: Mój przyjaciel jest kierownikiem projektu w firmie programistycznej. Najbardziej frustrujące jest dla niego to, że jego **inżynierowie często odchodzą z pracy**. Firma ciężko pracuje nad rekrutacją nowych inżynierów, transferem projektów i utrzymaniem stabilnej jakości produktu. Kiedy ludzie odchodzą, doprowadza to mojego przyjaciela do szaleństwa. Ci inżynierowie są dość młodzi i ambitni, chcą wyższych zarobków i lepszych stanowisk. Wielki szef myśli o tym tylko w kategoriach finansowych, a jego teoria mówi, że „trzech nowicjuszy jest zawsze lepszych niż jeden weteran” (co jako doświadczony inżynier wiem, że jest błędne). Mój przyjaciel nienawidzi tej teorii. Jakieś rady dla niego?


title: Zaloguj się do aplikacji internetowej za pomocą certyfikatów PKI

text: Rozumiem PKI dość dobrze z koncepcyjnego punktu widzenia – tj. klucze prywatne/publiczne – matematyczna matematyka za nimi, użycie skrótu i szyfrowania do podpisania certyfikatu, cyfrowe podpisywanie transakcji lub dokumentów itp. Pracowałem również nad projektami, w których openssl Biblioteki C zostały użyte z certyfikatami do zabezpieczenia komunikacji i uwierzytelniania. Jestem również bardzo zaznajomiony z narzędziami wiersza poleceń openssl. Jednak mam bardzo małe doświadczenie z projektami opartymi na sieci PKI i dlatego staram się zaprojektować i zakodować osobisty projekt, aby lepiej to zrozumieć. ## Wymagania To jest strona internetowa dla banku. Wszyscy użytkownicy bankowości internetowej mogą używać dowolnego certyfikatu wydanego przez kilka znanych urzędów certyfikacji (verisign, Thawte, entrust itp.). Bank nie ponosi odpowiedzialności za uzyskanie certyfikatów dla użytkownika. Certyfikaty te będą używane do uwierzytelniania na stronie internetowej banku zamiast lub jako dodatek do logowania za pomocą nazwy użytkownika/hasła. Platformy/system operacyjny itp. nadal nie są naprawione. Załóżmy, że rejestracja została zakończona – tzn. bank wie, z jakiego certyfikatu będzie korzystać każdy użytkownik. ## Projekt Zastanawiałem się, jaki jest najlepszy sposób na uwierzytelnianie? 1. Widziałem, że Apache ma sposób na włączenie 2 way ssl - w tym przypadku myślę, że przejście do strony automatycznie poprosi użytkownika o certyfikat. Ale nie jestem pewien, czy to wystarczy, ponieważ wydaje się, że sprawdza tylko, czy certyfikat jest podpisany przez zaufany urząd certyfikacji, a także czy znajduje się na białej liście wierszy tematu certyfikatów itp. Ale to nie wystarczy w przypadku sprawy bankowej, ponieważ musisz mieć możliwość powiązania identyfikatora bankuserid z certyfikatem. 2. IIS wydaje się mieć sposób, dzięki któremu mogę przechowywać certyfikat dla każdego użytkownika w Active Directory. To zrozumiałem, czytając kilka artykułów MSDN. Włączasz dwukierunkowy SSL w IIS, a następnie, gdy użytkownik próbuje przejść do witryny, IIS wyśle do przeglądarki żądanie z listą zatwierdzonych urzędów certyfikacji, a przeglądarka pozwoli użytkownikowi wybrać odpowiedni certyfikat z jego certstore i wyśle go do zaplecza. Zakładam, że IIS zrobi 2 rzeczy * Upewnij się, że użytkownik ma klucz prywatny odpowiadający certyfikatowi (w ramach negocjacji przykrywkowych) * Na podstawie mapowania certyfikatu użytkownika AD, IIS zgłosi nazwę użytkownika do aplikacji. 3. Przeprowadź uwierzytelnianie jawnie, wywołując funkcje kryptograficzne, a raczej w zależności od serwera WWW, który to zrobi. * Pokaż ekran użytkownika, na którym przesyła certyfikat, a aplikacja upewni się, że użytkownik ma klucz prywatny odpowiadający certyfikatowi (poproś interfejs użytkownika o podpisanie jakiegoś ciągu znaków za pomocą certyfikatu). * Aplikacja posiada bazę danych, w której przechowywane są niektóre dane, co pozwala każdemu użytkownikowi przyporządkować jego identyfikator użytkownika. Może to być * cały certyfikat odpowiadający każdemu identyfikatorowi użytkownika * CA i numer seryjny certyfikatu odpowiadający każdemu identyfikatorowi użytkownika. Zastanawiałem się, jaka jest powszechnie stosowana metoda? Jakie są najlepsze praktyki? Jeśli powinienem wybrać #3, jakie są najlepsze sposoby, aby to zrobić?


title: Dodawanie jawnych interfejsów do kodu zarządzanego w starszej wersji C++

text: Mam małe wyzwanie i nie wiem, jak do tego podejść. Mamy bardzo duży projekt (mniej więcej 5 lat). Baza kodu jest OGROMNA, więc pełna refaktoryzacja nie wchodzi w rachubę. To, co będziemy robić, to refaktoryzacja fragmentów kodu, gdy używamy tych części (jest to kod backendowy, którego będziemy używać w systemie frontendowym). Istniejący kod ma zerową abstrakcję i chcemy zbudować dla niego testy jednostkowe. Używamy frameworku RhinoMock, a moi przełożeni zwracają się do moich przełożonych, że musimy dodać jawne interfejsy do kodu, tym samym abstrahując go, abyśmy mogli zakpić obiekty w RhinoMock. Mam jedno szersze i jedno węższe pytanie: 1) Czy jawny interfejs jest najlepszą opcją? A może powinienem zasugerować jakąś inną technikę... 2) Czy ktoś może zaproponować wysokopoziomowe podejście do tego typu refaktoryzacji kodu? Nigdy nie byłem w sytuacji, w której musiałem dodawać jawne interfejsy do istniejącego kodu. (Nawiasem mówiąc, starszym kodem jest Managed C++) Z góry dziękuję za odpowiedzi. Ponadto, jeśli to pytanie jest w niewłaściwym miejscu lub zbyt szerokie, przepraszam.


title: Czy efektywniej jest uczyć się w miarę realizacji projektu, czy rozwijać szeroką bazę umiejętności programistycznych?

text: Na przykład, powiedzmy, że chcę zbudować grę i mam ograniczoną wiedzę na temat programowania (część, ale zdecydowanie za mało). Czy moim pierwszym krokiem powinno być zaprojektowanie gry, a następnie nauczenie się implementacji poszczególnych części? A może powinieneś naprawdę dobrze nauczyć się języka przed zaprojektowaniem gry?


title: Narzędzia do analizy statycznej do wykrywania wzorców architektonicznych

text: Obecnie dla szkoły pracujemy nad projektem badawczym. Centralnym pytaniem tego projektu jest: jakie wzorce architektoniczne można wykryć za pomocą statycznej analizy kodu? Przez wzorzec architektoniczny rozumie się wzorce architektoniczne z książki: Patterns of Enterprise Application Architecture autorstwa Martina Fowlera. Podczas naszych badań literaturowych nie znaleźliśmy żadnych opracowań/artykułów/czasopism, które poruszałyby ten problem. Dlatego w naszym podejściu do tego projektu zastanawialiśmy się nad stworzeniem prototypu tego rodzaju narzędzia. Ale najpierw musimy wiedzieć, czy istnieją jakieś (open-source) narzędzia o tej samej funkcjonalności? (wykrywanie wzorców architektonicznych za pomocą statycznej analizy kodu) Więc moje pytanie brzmi: czy znasz narzędzie, które wykrywa wzorce architektoniczne? Wiemy o istnieniu narzędzi, które mogą wykrywać wzorce projektowe Gangu Czterech. A masz jakieś sugestie dotyczące naszego podejścia? Z góry dziękuję


title: Gdzie mogę się udać, aby wykonać próbny test select2perform?

text: Wykonałem szybkie wyszukiwanie przed pytaniem i pojawiło się to: Gdzie są przykładowe pytania testowe Select2Perform? Chcę przystąpić do przykładowego egzaminu Java, ale powyższy temat nie wspomina o zasobach, do których mógłbym się udać - tylko, że ktoś wziął wersję C++. Gdyby ktoś mógł pomóc, byłoby świetnie.


title: Regexp czy niestandardowy algorytm parsowania?

text: Próbowałem przeanalizować plik właściwości java, aby uniknąć niektórych pułapek podczas ładowania właściwości (brak zamówienia, utrata komentarzy). (Właściwość ma postać 'klucz = wartość', gdzie wartość może rozciągać się na wiele wierszy przy użyciu znaku \ specjalnego) Próbowałem uzyskać właściwe wyrażenie regularne, aby przeanalizować właściwości, ale po tym, jak zrezygnowałem po ponad godzinie walki. (wersja dla groovy znaleziona tutaj: `~ /^([^#=].*?)=(.+)$/)` Udaje mi się napisać to samo za pomocą jednej pętli i bardzo trywialnego kodu w 5 minut. .. Jestem przeciętnym programistą, gdy mam do czynienia z regexp: muszę ponownie czytać dokument za każdym razem, gdy chcę z niego skorzystać, a zaawansowane funkcje są dla mnie wciąż niejasne. Często mając do czynienia z regexp mam wrażenie, że niektórzy bardzo doświadczeni programiści mogą stworzyć/odszyfrować bardzo rozbudowane regexp w kilka sekund, ale inni mają problemy z ich obsługą. Pytanie: czy powinienem poświęcić trochę czasu na dogłębne poznanie regexp i stworzenie tajemniczego i potężnego parsera, czy powinienem nadal używać jakiegoś brzydkiego, łatwego do debugowania/zrozumienia algorytmu parsowania?


Czy to w porządku, jeśli obiekt domeny przekracza granicę usługi? Wszyscy zalecają, aby Serwisy zwracały tylko DTO. Tworzę prostą aplikację CRUD. Czy to jest w porządku, jeśli moje metody usług zwracają obiekt domeny zamiast płaskich obiektów DTO. Oszczędzi mi to od wielu konfiguracji związanych z mapowaniem. Czy istnieje jakieś alternatywne podejście?


title: wykrzykniki w komunikatach o błędach

text: Co myślisz o używaniu wykrzykników w komunikatach o błędach? czyli „Adres jest nieprawidłowy!”. Osobiście uważam, że to nic nie wnosi, obraża użytkownika i sprawia, że produkt wygląda tak, jakby został napisany w TRS-80 BASIC przez 12-latka.


title: Wykonywanie ustawień konfiguracyjnych użytkownika

text: Dla API buduję to, co robi, to ładowanie pliku XML, który jest do niego przekazywany jako ciąg, drążenie do właściwego elementu, modyfikowanie wartości i zwracanie zmodyfikowanego XML. Robię coś takiego w moim kodzie if (valid) { XDocument docRoot = XDocument.Parse(XMLstring); var node1 = docRoot.Descendants(przestrzeń nazw + @"węzeł1"); foreach (var wynik w węźle1) { var dziecko1 = wynik.Potomkowie(ns + "dziecko1"); var test = child1.First(); test.SetValue(Transform(test.Value)); } //zwróć przekształcony XML } else { } Teraz chcę utworzyć plik konfiguracyjny w formacie XML, który pozwoli użytkownikowi określić, które węzły w XML modyfikować i jaką modyfikację wykonać (później chcę to wykorzystać w GUI), więc coś takiego jak <root Value=""> <Modify Xpath="\parent\child1\superchild\" Attribute="" Mode="delete" /> <Modify Xpath="\parent\child2\" Attribute= "Wartość" Mode="multiply" /> </root> I mam te dwie części, ale nie wiem, jak je ze sobą połączyć. Myślę, że muszę zrobić klasę z mojego pliku konfiguracyjnego XML i jakoś mapować je do wartości w innym XML.


title: Czy nadal warto uczyć się tworzenia graficznego interfejsu użytkownika?

text: Przez ostatnie kilka lat wszystkie poważne projekty, nad którymi pracowałem, były albo oparte na sieci WWW, albo miały niegraficzny interfejs użytkownika (usługi, skrypty wiersza poleceń itp.). W razie potrzeby mogę połączyć aplikację WinForms lub wykonać prosty WPF, ale nigdy tak naprawdę nie zagłębiałem się w niektóre interfejsy API niższego poziomu, takie jak MFC lub QT. Rozumiem, że to zależy od sytuacji, ale ogólnie, czy nadal warto poświęcić czas, aby dobrze nauczyć się tworzenia desktopów, czy też aplikacje przenoszą się do sieci i urządzeń mobilnych w tempie, które sprawia, że ta wiedza jest mniej istotna? Ponadto, czy oczekujesz, że programiści, z którymi współpracujesz, będą mieli doświadczenie w obsłudze pulpitu?


title: Dlaczego w mojej firmie testy automatyczne wciąż kończą się niepowodzeniem?

text: Kilka razy próbowaliśmy wprowadzić automatyczne testowanie programistów w mojej firmie. Nasz zespół QA używa Selenium do automatyzacji testów UI, ale zawsze chciałem wprowadzić testy jednostkowe i testy integracyjne. W przeszłości za każdym razem, gdy próbowaliśmy, wszyscy byli podekscytowani przez pierwszy miesiąc lub dwa. Po kilku miesiącach ludzie po prostu przestają to robić. Kilka obserwacji i pytań: 1. **Czy testowanie automatyczne faktycznie działa?** Większość moich kolegów, którzy pracowali w innych firmach, próbowała i nie udało się wdrożyć strategii testów automatycznych. Wciąż nie widziałem prawdziwej firmy produkującej oprogramowanie, która faktycznie z niej korzysta i nie tylko o tym mówi. Tak wielu programistów postrzega automatyczne testowanie jako coś, co jest świetne w teorii, ale w rzeczywistości nie działa. Nasz zespół biznesowy chciałby, aby programiści robili to nawet za 30% dodatkowego czasu (przynajmniej tak mówią). Ale programiści są sceptykami. 2. **Nikt tak naprawdę nie wie, jak prawidłowo przeprowadzać testy automatyczne.** Tak, wszyscy czytaliśmy przykłady testów jednostkowych w Internecie, ale używanie ich w dużych projektach to coś zupełnie innego. Głównym winowajcą jest wyśmiewanie/zatykanie bazy danych lub cokolwiek innego, co nie jest trywialne. Skończyło się na tym, że spędzasz więcej czasu na wyśmiewaniu niż na pisaniu rzeczywistych testów. Kiedy pisanie testów zaczyna trwać dłużej niż kod, wtedy się poddajesz. 3. Czy są jakieś dobre **przykłady** testów jednostkowych/testów integracji systemów wykorzystywanych w złożonych aplikacjach webowych zorientowanych na dane? Jakieś projekty open source? Nasza aplikacja jest zorientowana na dane, ale ma też mnóstwo logiki domenowej. W pewnym momencie wypróbowałem podejście oparte na repozytorium i stwierdziłem, że jest ono całkiem dobre do testów jednostkowych, ale stało się to kosztem możliwości łatwej optymalizacji dostępu do danych i dodało kolejną warstwę złożoności. Mamy duży projekt realizowany przez 20 doświadczonych programistów. Wydaje się, że jest to idealne środowisko do wprowadzenia testów jednostkowych/testów integracyjnych. Dlaczego to nie działa u nas? Jak sprawiłeś, że działało to w Twojej firmie?


title: ASP.Net czy WPF(C#)?

text: Nasz zespół jest w tej kwestii podzielony i chciałem zasięgnąć opinii osób trzecich. Budujemy aplikację i nie możemy zdecydować, czy chcemy używać aplikacji .Net WPF Desktop z serwerem WCF, czy aplikacji internetowej ASP.Net przy użyciu jQuery. Pomyślałem, że zadam pytanie tutaj, z kilkoma specyfikacjami, i zobaczę, jakie byłyby zalety/wady korzystania z którejkolwiek ze stron. Mam swojego faworyta i czuję, że jestem stronniczy. W idealnym przypadku chcielibyśmy zbudować pierwsze wydanie oprogramowania tak szybko, jak to możliwe, a następnie zwolnić i poświęcić trochę czasu na wbudowanie dodatkowych funkcji/komponentów, które chcemy później. Przede wszystkim chcemy, aby oprogramowanie było szybkie. Użytkownicy przeglądają rekordy przez cały dzień, a opóźnienia w ładowaniu rekordów lub odświeżaniu ekranów zabijają ich produktywność. Szczegóły aplikacji: * Szacuję około 100 różnych ekranów dla początkowej wersji, planuję dodanie wielu dodatkowych ekranów później po pierwszym wydaniu. * Zamierzamy używać komunikacji dwukierunkowej w systemach przypomnień i zdarzeń * Obecnie musi obsługiwać około 100 użytkowników, chociaż powiedziano nam, aby umożliwić wzrost do 500 użytkowników * Mamy wiele lokalizacji Elementy do rozważenia (może nie na początku w niektórych przypadkach, ale w przyszłych wydaniach): * Miejsce na dodatkowe komponenty, które zostaną dodane po pierwszym wydaniu (jest ich wiele... może działają tutaj niż początkowa aplikacja) * Nawigacja za pomocą klawiatury * Wydajność jest koniecznością * Szybkość produkcji do wersji początkowej * Niskie koszty utrzymania * Wsparcie w przyszłości * Integracja softphone/Scanner Nasi programiści: * Mamy 1 programistę, który uczył się WPF w ciągu ostatnich kilku miesięcy i był tym, który zasugerował, abyśmy używali do tego WPF. * Mamy drugiego programistę, który jest zaznajomiony z ASP.Net i który może pomóc w przyszłości przy projekcie, chociaż nie będzie nad tym pracował aż do pierwszego wydania, ponieważ jego czas poświęca na utrzymanie naszego obecnego oprogramowania. * Jestem ja, który pracowałem z obydwoma i czuję się komfortowo w obu. * Mamy zewnętrzną firmę zajmującą się zarządzaniem projektami, która jest firmą ASP.Net. * Planujemy zatrudnić 1-2 inne osoby, jednak musimy wiedzieć, w jakim kierunku zmierzamy w pierwszym środowisku: * Zwykli użytkownicy korzystają z serwera Windows 2003 z usługami terminalowymi. Łączą się za pomocą cienkich klientów WYSE przez połączenie RDP. Personel administracyjny ma własne komputery z XP lub wyższym. Użytkownicy mogą określić własną rozdzielczość, chociaż ograniczają się do używania IE jako przeglądarki internetowej. * Inne lokalizacje łączą się z naszą siecią przez połączenie MPLS Na tej podstawie, co byś wybrał i dlaczego? Pytam tutaj zamiast SO bo szukam opinii a nie odpowiedzi


title: Który kodujesz najpierw, MVC?

text: Kodowałem już od jakiegoś czasu i znalazłem projekt, nad którym chcę pracować - aplikację internetową Pythona używającą django + mongodb. Wiem, co chcę zrobić w mojej aplikacji internetowej. Kiedy jesteś w takiej sytuacji (po prostu zaczynasz nowy projekt), od czego zaczynasz? Co najpierw kodujesz? Czy najpierw kodujesz widoki? Mam nadzieję, że nie było o to wcześniej pytane (zrobiłem to szybko), ale przydałby mi się jakiś ogólny kierunek.


title: Działa tylko bez klasy w pliku cpp! dobry projekt czy nie?

text: Kiedy przechodziłem przez projekt, nad którym pracuję, natknąłem się na plik cpp, który zawiera tylko funkcje i zmienne statyczne. Zastanawiałem się, dlaczego nie umieścili wszystkiego w klasie! Ilekroć trzeba wywołać funkcje wewnętrzne, dołączany jest plik cpp. Czy to dobry projekt? jakie są plusy i minusy tego typu konstrukcji? na przykład //niezależny.cpp #include "jakaśklasa.h" static int var1; statyczny obiekt someclass("cześć"); statyczny bool var2; void foo(const char* dir, const char* nazwa_pliku){ ... } somefile.cpp #include "independent.cpp" przykład klasy{ public: void caller(){ foo("c:\", "file.txt ”); } }


title: Jaki jest dobry przegląd opcji kontroli dostępu/uprawnień?

text: Jestem w trakcie projektowania części kontroli dostępu w umiarkowanie złożonej aplikacji, ale czuję, że odkrywam na nowo wiele kół. Czy istnieje dobry przegląd domeny „kontrola dostępu”, w tym terminologia, dyskusja na temat kompromisów różnych schematów (RBAC, ACL, ???), jej interakcja z polityką biznesową („Alicja może uzyskać dostęp tylko do ekspresu do kawy przed 11:30”) i ewentualnie sugestie wdrożeniowe? Przepraszam, jeśli to pytanie jest nieco niejasne. Wciąż jestem w kategorii „W pewnym sensie wiem, co chcę osiągnąć, ale nie wiem zbyt wiele o domenie lub terminologii”.


title: Pierwszy język programowania bankomatów

text: Pierwsze bankomaty wykonywały zadania jak bankomat, były to maszyny offline, które pracowały z kartami dziurkowanymi impregnowanymi Carbonem i 6-cyfrowym kodem PIN. Maksymalna wypłata z karty wynosiła 10 funtów, a każda z nich była kartą jednorazowego użytku - karty połknięte przez bankomat! Pierwszy bankomat został zainstalowany w Londynie w 1967 roku, jak przyjrzałem się osi czasu języków programowania, było wiele języków programowania stworzonych przed tą dekadą. Nie wiem też o sprzęcie, ale w jakim języku programowania został napisany? (także jakiego sprzętu użyto?) _*Nie znalazłem szczegółowej biografii Johna Shepherda-Barrona (wynalazcy bankomatu w latach 70.)_ **_Aktualizacja_** Znalazłem to zdjęcie, które pochodzi z gazety z poprzedniego roku 1972 w Iranie. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/eIQj8.jpg) **_Translated PS_** : > Pokazuje pana Rad-lona _(jeśli pisownia jest poprawna)_ , Menedżer Barros _(jeśli > napisano poprawnie)_ Międzynarodowy Instytut Edukacyjny w Wielkiej Brytanii > po prawej oraz Mr. Jim Sutherland - Ekspert od kiosków komputerowych. W pozostałej części tekstu, który znalazłem w tym artykule, tego rodzaju bankomaty, które nazywają się „Automatycznym kioskiem komputerowym” były reklamowane w następujący sposób: > Pan Rad-lon _(jeśli pisownia jest poprawna)_ umieszcza swoją kartę w jednym konkretnym miejscu > Automatyczny kiosk komputerowy i po 10 sekundach wypłaca gotówkę. Kolejne dwa pytania to: **1-** Jak te bankomaty działały tak szybko? (wycofanie w ciągu 10 sekund w tym roku) **2-** Nie znalazłem w Internecie żadnego tekstu, który mówi o „Automatycznym kiosku komputerowym”, Czy jest on ważny, czy w tym czasie nazywano go _Komputer_?


title: Wywołanie metody statycznej z instancji klasy

text: Jako programista jestem fanem metod statycznych. Ostatnio natknąłem się na różnice między językami OOP dotyczące tych statycznych metod. Wszystkie języki OOP używają metody statycznej, aby uzyskać dostęp do dowolnej metody bez tworzenia instancji niż klasa. Możemy więc wywołać tego rodzaju metodę za pomocą samej nazwy klasy. Ale niektóre języki pozwalają na dostęp do metody statycznej ze zmiennej instancji również jak Java, a inne nie lubią Objective - C. Więc co jest przyczyną takiej różnicy między dwoma językami OOP? Jakie jest prawidłowe zachowanie OOP? Po prostu jestem ciekaw, żeby to wiedzieć.


title: Prognozowanie algorytmiczne i rozpoznawanie wzorców

text: Powiedzmy, że użytkownik może wprowadzić dane projektu do mojego oprogramowania. Każdy projekt ma 2 zmienne „rozmiar” i „praca”, które są ze sobą powiązane, ale zależność nie jest znana. Czy istnieje sposób na programowe określenie relacji między zmiennymi na podstawie wcześniejszych danych i prognozowanie ilości wykonanej pracy, choćby biorąc pod uwagę wielkość projektu w przyszłości? Załóżmy na przykład, że użytkownik ręcznie wprowadził następujące projekty. * Projekt 1 - Rozmiar:1, Praca: 4 * Projekt 2 - Rozmiar:2, Praca: 7 * Projekt 3 - Rozmiar:3, Praca: 10 * Projekt 4 - Rozmiar:4, Praca: x Na co powinienem zwrócić uwagę być w stanie programowo określić, że Praca = Rozmiar*3+1, a zatem móc powiedzieć, że x=13?


title: Zadzwoń Ajax lub js, aby zaktualizować cenę koszyka

text: Tworzę koszyk w Javie i chciałbym dać użytkownikom możliwość aktualizacji ilości i natychmiastowego zobaczenia nowej ceny. Używam _BigDecimal_ na zapleczu, aby uzyskać pełną dokładność, ale wywołanie ajax wprowadza niewielkie opóźnienie. To niewiele, ale mogę sprawić, że aktualizacja będzie natychmiastowa, wysyłając aktualizację na serwer i po prostu aktualizując cenę w JavaScript, zanim jeszcze zwróci. Szybkość byłaby wspaniała, ale odbywa się to kosztem błędów zaokrąglania przedstawianych użytkownikowi. Teraz obliczona cena zaplecza byłaby tą pokazaną na stronie płatności, więc byłaby przynajmniej dokładna, ale czy prędkość jest warta ryzyka wyświetlenia złej wartości w koszyku w systemie eCommerce?


title: Formatowanie wydruku JavaScript

text: Uczę się NodeJS i przepisuję trochę kodu, aby zobaczyć, jak wypada w porównaniu. W jednym skrypcie próbuję wziąć daty w postaci ciągów i zamienić je w obiekty Data JavaScript, aby wykonać obliczenia. Udało mi się to zrobić, przekształcając ciąg w tablicę i przetwarzając każdy znak. Wygląda to jednak tak brzydko, zastanawiam się, czy istnieje czystszy sposób, jak odpowiednik sprintf czy coś takiego. Jestem pewien, że mogę znaleźć moduł, ale zastanawiam się, czy istnieje natywny sposób w JS. Oto co mam: var a = '081320141900'.split(''); data utworzenia = a[0] + a[1] + "/" + a[2] + a[3] + "/" + a[4] + a[5] + a[6] + a[7] + " " + a[8] + a[9] + ":" + a[10] + a[11]; console.log('Data utworzenia: ' + data utworzenia); Wyjście: Stworzenie Data: 13.08.2014 19:00 Znowu powyższe działa dobrze, tylko zastanawiam się, czy można to zrobić czyściej.


title: Czy jest sens umieszczania „dziennika zmian” w każdym pliku kodu podczas korzystania z kontroli wersji?

text: Miałem wrażenie, że system kontroli wersji wyeliminował potrzebę umieszczania „dzienników zmian” w całym kodzie. Często widziałem ciągłe używanie dzienników zmian, w tym duże długie bloki na początku procedur składowanych z dużą sekcją zablokowaną na zmiany w pliku i zaśmiecanie kodu takimi rzeczami jak: // 2011-06-14 (John Smith) Zmień XYZ na ABC, aby naprawić błąd nr 999 i: // 2009-95-12 (Bob Jones) Wyodrębnij ten kod do Class Foo // <zakomentowany kod tutaj> Powód tego, jak mi wyjaśniono jest to, że przesiewanie naszych dzienników VCS, próbując znaleźć, kto co zmienił i dlaczego, zajmuje zbyt dużo czasu, mając to w samym pliku kodu, na górze lub w pobliżu odpowiedniej zmiany, ułatwia sprawdzenie, kto zmienił co i gdy. Chociaż widzę, że to jest sens, wydaje się to zbędne i po prostu trąci w stylu „Ech, tak naprawdę nie rozumiemy, jak właściwie używać naszego VCS, więc w ogóle nie będziemy się tym zawracać”. Co myślisz? Czy używasz zarówno komentarzy, jak i dziennika? Tylko dziennik? Czy uważasz, że łatwiej jest kodować, gdy widzisz powyżej blok kodu, który John Smith zmienił metodę sprawdzania XYZ tydzień temu, zamiast przeszukiwania dzienników i porównywania plików kodu w narzędziu Diff? EDYCJA: Korzystanie z SVN, ale w zasadzie tylko jako repozytorium. Bez rozgałęzień, bez fuzji, nic oprócz dziennika + przechowywania.


title: Jak wykorzystać ViewModels w architekturze warstwowej?

text: Mam aplikację Java, która wykorzystuje architekturę warstwową, mamy: warstwę prezentacji, warstwę biznesową i warstwę dostępu do danych. Nasza warstwa biznesowa wykorzystuje modele do przetwarzania „wniosków”. Używamy koncepcji "ViewModel", więc każda relacja Widok-Akcja ma swój Widok. To, co się dzieje, to fakt, że mamy wiele ViewModeli. Liczba plików jest dość myląca, ale prawdziwym problemem jest to, że mamy do czynienia z problemem konfliktu nazw. Pojawiło się kilka pytań: 1. W tym przypadku używamy ViewModels w architekturze warstwowej. Czy to podejście jest w porządku? 2. Czy spotykanie się z dużą liczbą plików jest normalne? 3. Czy istnieje jakaś konwencja nazewnictwa, której używasz, aby jasno określić, do którego widoku „należy” model? 4. Jeśli model jest dokładnie taki sam dla dwóch widoków, czy powinny one być udostępniane, czy powinienem mieć dwa różne modele, które mają dokładnie tę samą treść?


title: Oznacz obraz w różnych miejscach i zapisz w bazie danych

text: Chciałbym stworzyć coś podobnego do tego, co widzisz tutaj... http://www.houzz.com/ideabooks/9424693/list/8-Beautiful-Ways-to-Work-Glass-Into-Your-Kitchen-Cabinets Jeśli klikniesz na drugie zdjęcie w dół, zauważysz, że ma kilka tagów, linków do rzeczywistych produktów lub tylko opisów produktów. Czy robi się to za pomocą nałożonego na zdjęcie płótna HTML5? Albo jaki byłby najskuteczniejszy sposób na wdrożenie tego? Mam listę 1 000 000 produktów, które użytkownik będzie mógł oznaczyć. Chcę połączyć te dwie rzeczy, aby jak on oznaczył, zapisał to w bazie danych, a następnie każdy inny oglądający jego pokój mógł wejść i kliknąć łącze, aby przejść do tego produktu. Dziękuję


title: Jak zmierzyć dokładność algorytmu?

text: Mam kilka algorytmów optymalizacyjnych (do znajdowania minimum funkcji) i chciałbym sprawdzić na ile są dobre. Załóżmy, że buduję przypadki testowe i porównuję rzeczywiste wyniki z teoretycznymi. Jakimi miarami powinienem użyć, aby oszacować, czy minimum funkcji zostało faktycznie znalezione? Myślałem o: * średniej liczbie ocen funkcji (± odchylenie standardowe) * wskaźniku sukcesu (jak często faktycznie znajduje minimum) Czy są jeszcze jakieś inne, które przegapiłem (powiedzmy, że algorytm kończy 1e-4 od znanego rozwiązania. Czy to jest sukces już czy nie?) Edytuj: Moim głównym zmartwieniem jest **nie** złożoność czasowa. Jest to dokładność algorytmu w przypadkach, gdy dokładne rozwiązanie może nigdy nie zostać znalezione (np. wielowymiarowe przestrzenie rozwiązań). Jak obliczyć stopę konwergencji?


title: Dziwny cykl wydawniczy firmy: Go Distributed Source Control?

text: Przepraszam za ten długi post, ale myślę, że warto. Właśnie zacząłem od małego sklepu .NET, który działa trochę inaczej niż inne miejsca, w których pracowałem. W przeciwieństwie do moich poprzednich stanowisk, napisane tutaj oprogramowanie jest skierowane do wielu klientów i nie każdy klient otrzymuje najnowszą wersję oprogramowania w tym samym czasie. W związku z tym nie ma „bieżącej wersji produkcyjnej”. Gdy klient otrzymuje aktualizację, otrzymuje również wszystkie funkcje dodane do oprogramowania od czasu ostatniej aktualizacji, co mogło mieć miejsce dawno temu. Oprogramowanie jest wysoce konfigurowalne, a funkcje można włączać i wyłączać: tak zwane „przełączniki funkcji”. Cykle wydawnicze są tutaj bardzo napięte, w rzeczywistości nie są zgodne z harmonogramem: gdy funkcja jest ukończona, oprogramowanie jest wdrażane u odpowiedniego klienta. Zespół dopiero w zeszłym roku przeniósł się z Visual Source Safe do Team Foundation Server. Problem polega na tym, że nadal używają TFS tak, jakby był VSS i wymuszają blokady Checkout na pojedynczej gałęzi kodu. Za każdym razem, gdy poprawka błędu zostanie wprowadzona w teren (nawet dla pojedynczego klienta), po prostu budują to, co jest w TFS, testują, czy błąd został naprawiony i wdrażają u klienta! (Ja pochodzę z branży farmaceutycznej i oprogramowania urządzeń medycznych, to niewiarygodne!). W rezultacie na wpół upieczony kod deweloperski zostaje wprowadzony do produkcji bez nawet testowania. Błędy zawsze pojawiają się w kompilacjach wydań, ale często klient, który właśnie otrzymał kompilację, nie zobaczy tych błędów, jeśli nie użyje funkcji, w której znajduje się błąd. Dyrektor wie, że jest to problem, ponieważ firma zaczyna się rozwijać. nagle pojawiło się kilku dużych klientów i więcej mniejszych. Zostałem poproszony o przyjrzenie się opcjom kontroli kodu źródłowego, aby wyeliminować wdrażanie wadliwego lub niedokończonego kodu, ale nie poświęcać nieco asynchronicznej natury wydań zespołów. W swojej karierze korzystałem z VSS, TFS, SVN i Bazaar, ale TFS jest tam, gdzie jest większość mojego doświadczenia. Wcześniej większość zespołów, z którymi pracowałem, korzysta z dwu- lub trzygałęziowego rozwiązania Dev-Test-Prod, w którym przez miesiąc programiści pracują bezpośrednio w Dev, a następnie zmiany są scalane z Test, a następnie Prod lub promowane „po zakończeniu”, a nie w stały cykl. Wykorzystano zautomatyzowane kompilacje, wykorzystujące tempomat lub Team Build. W mojej poprzedniej pracy Bazaar był używany na szczycie SVN: programiści pracowali we własnych małych gałęziach funkcji, a następnie przesunęli swoje zmiany do SVN (który był powiązany z TeamCity). To było miłe, ponieważ łatwo było izolować zmiany i dzielić się nimi z gałęziami innych ludzi. W przypadku obu tych modeli istniała centralna gałąź dev i prod (a czasami testowa), przez którą wypchnięto kod (a etykiety były używane do oznaczania kompilacji w prod, z których powstały wydania… a te zostały przekształcone w gałęzie w celu usunięcia błędów do wydań i połączyła się z powrotem do wersji deweloperskiej). To jednak nie pasuje do sposobu pracy tutaj: nie ma kolejności, kiedy różne funkcje zostaną wydane, są one przesuwane, gdy są gotowe. Wraz z tym wymogiem podejście „ciągłej integracji”, jak widzę, załamuje się. Aby uzyskać nową funkcję z ciągłą integracją, należy ją wypchnąć za pomocą programu dev-test-prod, który przechwyci wszelkie niedokończone prace w dev. Myślę, że aby to przezwyciężyć, powinniśmy przejść na model z wieloma funkcjami, bez gałęzi dev-test-prod, a raczej źródło powinno istnieć jako seria gałęzi funkcji, które po zakończeniu prac rozwojowych są zablokowane, przetestowane, naprawione, zablokowane , przetestowane, a następnie wydane. Inne gałęzie funkcji mogą pobierać zmiany z innych gałęzi, kiedy tego potrzebują/chcą, więc ostatecznie wszystkie zmiany zostaną wchłonięte przez wszystkich innych. To bardzo pasuje do czystego modelu Bazaru z tego, czego doświadczyłem w mojej ostatniej pracy. Choć brzmi to tak elastycznie, wydaje się to dziwne, że nie ma gdzieś pnia deweloperskiego ani gałęzi prodowej, i martwię się, że gałęzie rozwidlają się, aby nigdy nie reintegrować, lub małe późne zmiany, które nigdy nie zostaną przeciągnięte do innych gałęzi, a deweloperzy narzekają na katastrofy scalające... Co ludzie myślą na ten temat? Drugie ostatnie pytanie: jestem nieco zdezorientowany co do dokładnej definicji rozproszonej kontroli źródeł: niektórzy ludzie wydają się sugerować, że chodzi po prostu o brak centralnego repozytorium, takiego jak TFS lub SVN, niektórzy twierdzą, że chodzi o rozłączenie (SVN jest rozłączony w 90% a TFS ma doskonale funkcjonalny tryb offline), a inni twierdzą, że chodzi o rozgałęzianie funkcji i łatwość łączenia między gałęziami bez relacji rodzic-dziecko (TFS ma również bezpodstawne łączenie!). Być może to drugie pytanie!


title: Zalety wykorzystania logiki biznesowej w modelu

text: W frameworku MVC często słyszałem, że w modelu wykorzystuje się logikę biznesową. Ale myślę, że przy użyciu logiki biznesowej w kontrolerze będzie działać szybciej, ponieważ widok jest bezpośrednio podłączony do kontrolera. Chcę wiedzieć, jakie są zalety korzystania z logiki biznesowej w modelu?


title: Która z nich jest lepszą praktyką statycznej metody fabrycznej tej samej klasy, czy oddzielnej klasy fabrycznej z metodami?

text: Widziałem to w wielu miejscach. Klasa Parent ma statyczną metodę tworzenia obiektów odpowiedniej podklasy, a czasami mamy dedykowaną klasę fabryczną z metodami instancji do tworzenia obiektów różnych podklas. Który jest używany w jakim scenariuszu? Podobnie jak statyczne metody fabryczne InetAddress w java.net do tworzenia podklas klasy InetAddress Vs BorderFactory do tworzenia różnych granic.


title: Licencje na oprogramowanie w praktyce

text: Prawie wszystkie pytania i informacje dotyczące zarówno SO, jak i „Google” opisują, jak działają różne licencje i jaką licencję wybrać dla swojej pracy? **Ale jak one działają w rzeczywistości.** Prawie wszyscy, z którymi rozmawiałem, mają zupełnie inne poglądy na temat ich działania, w tym hard core programiści open source, którzy chętnie dzielą się swoimi bibliotekami i konsultantami, którzy interesują się tylko pieniędzmi i nigdy nie ujawniają ich libacje. Najpierw przedstawię moje wrażenie, jak działają w praktyce, za pomocą trzech pytań / stwierdzeń i możesz się ze mną zgodzić lub nie zgodzić z nimi. 1. Powiedzmy, że robię dużą aplikację i mam małą część tego z kodu GPL, a następnie właściciel praw autorskich nie może wiele z tym zrobić, ponieważ uważa się, że jest to kod nieistotny dla mojej aplikacji, a tym samym „prawo” rządzi na GPL ? 2. Jeśli kod jest ogólny, prawa autorskie nie obowiązują. Na przykład, jeśli zrobię samouczek, jak skonfigurować silnik szachowy, nikt nie będzie musiał się przejmować moją licencją. To dlatego, że mój kod ma charakter mechaniczny. 3. Jeśli używam dużo kodu GPL, który jest niezbędny dla mojej aplikacji i nie ujawniam go, a ktoś się dowie, moją „karą” będzie wydanie całego mojego kodu źródłowego, duże firmy są tym przerażone. Ale dla małego programisty hobbystów nie jest to duży problem, ponieważ oprogramowanie w ogóle nie zostałoby napisane lub byłoby otwarte od samego początku? Osobiście nie lubię tego podejścia, ponieważ uważam je za nieetyczne i lekceważące dla oryginalnego autora. **EDYTUJ:** W komentarzu wyjaśniono, że nie zadaję pytania. Moje pytanie brzmi, czy te 3 stwierdzenia są poprawne.


title: Czy istnieje lepszy sposób na zaprojektowanie tych klas?

text: Mam dwie klasy biznesowe: TimesheetDay i TimeSlot. Jeden dzień grafiku może mieć jeden lub więcej przedziałów czasu. Klasy TimesheetDay i TimeSlot będą zależne od obiektu, który implementuje odpowiedni interfejs TimesheetDayData i TimeSlotData. W ten sposób mogę pisać klasy danych, aby zmapować obiekty do bazy danych MySQL, ale jeśli w przyszłości użyję innego sposobu przechowywania danych, mogę wstrzykiwać obiekty z innej klasy danych. Obiekty te nie stworzą innych obiektów i odmawiam użycia w nich słowa kluczowego "new". Chcę, aby można je było przetestować w całkowitej izolacji. Na przykład tworzę instancję obiektu TimesheetDay w taki sposób (w kontenerze): $mTimesheetDayData = new TimesheetDayMysqlData($databaseHost, $timesheetDayId); $mTimesheetDay = new TimesheetDay($mTimesheetDayData); Obiekty TimeSlot będą konstruowane w ten sam sposób: $mTimeSlotData = new TimeSlotMySqlData($databaseHost, $timeSlotId); $mTimeSlot = nowy TimeSlot($mTimeSlotData); Mój problem polega na pobieraniu obiektów TimeSlot, które zawiera TimesheetDay. Nie mogę mieć klasy TimesheetDay tworzącej obiekty. W przeciwnym razie mógłbym napisać metodę, która zwraca tablicę obiektów TimeSlot, na przykład: $timeSlotsForThatDay = array(); $timeSlotsForThatDay = $mTimesheetDay->getTimeSlots(); Ale to wymagałoby metody getTimeSlots() do tworzenia obiektów. Jak byś sobie z tym poradził?


title: Poleć oprogramowanie lub technikę samorozmawiającego rejestratora

text: Zauważyłem, że dyskutowanie z samym sobą o problemie jest dość powszechną praktyką. Uważam, że jeszcze lepiej jest napisać to, co myślisz. Nie tylko zmusza cię do zmaterializowania twojego problemu, ale materiał pisemny może służyć ci jako dziennik do wykorzystania w przyszłości. Próbowałem na różne sposoby rejestrować swój własny czat, stworzyłem konto gtalk, z którym chciałbym porozmawiać. Ale odkryłem, że w ten sposób musiałbym ustawić dużo kontekstu przed przejściem do problemu. Zrobiłem mały skrypt, w którym po prostu dodałem tekst, z odpowiednią datą, na końcu pliku dziennika w bieżącym katalogu roboczym. Będąc w katalogu projektu, określiłbym część kontekstu, w którym się znajdowałem, a nawet pozostawiłbym pewne informacje współtwórcom projektu. Zacząłem lubić tę metodę i miałem zamiar poprawić swój skrypt, ale potem pomyślałem, że może to jest rozwiązany problem. Niektórzy ludzie lubią blogować. Próbowałem tego, ale posty są generalnie syntezą całej historii i przez większość czasu zapomniałbym o fragmentach, które były istotne. Mógłbym być bardziej atomowy. Głośnik wysokotonowy wydawałby się do tego lepiej dopasowany, ale wtedy wpisuje się w argument kontekstowy, który opisałem powyżej. myśli? ćwierkać


title: Jaki jest właściwy sposób zarządzania połączeniem MySQL przez C#

text: Moje pytanie, w dolnej linii, jest odpowiednim (najlepszym) sposobem zarządzania naszym połączeniem z bazą danych MySQL za pomocą C#. Otóż aktualnie pracuję nad jakąś aplikacją C# (typ winforms) <-> MySQL i oglądałem Połączenia Serwera w MySQL Administrator, byłem świadkiem wykonania moich mysql_queries, połączenie otwiera się i zamyka... na! W moim kodzie C# pracuję tak i to jest przykład: public void InsertInto(string qs_insert) { try { conn = new MySqlConnection(cs); poł.Otwarte(); cmd = new MySqlCommand(); cmd.Połączenie = połączenie; cmd.CommandText = qs_insert; cmd.ExecuteNonQuery(); } catch (MySqlException ex) { MessageBox.Show(ex.ToString()); } wreszcie { if (conn != null) { conn.Close(); } } } To znaczy, za każdym razem, gdy chcę wstawić coś do tabeli db, wywołuję tę tabelę i przekazuję ciąg zapytania insertowego do tej metody. Połączenie zostało nawiązane, otwarte, zapytanie wykonane, połączenie zamknięte. Możemy więc stwierdzić, że w ten sposób zarządzam połączeniem MySQL. Dla mnie i mojego punktu widzenia obecnie to działa i wystarcza na moje wymagania. Cóż, masz Javę i Hibernate, C# i Entity Framework, a ja to robię :-/ i to mnie myli. Czy powinienem używać MySQL z Entity Framework? Jaki jest najlepszy sposób współpracy między C# i MySQL? Nie chcę się martwić, czy połączenie, które otworzyłem, jest zamknięte, czy to samo połączenie może być szybsze, ...


title: W jaki sposób standardy i usprawnienia procesów powinny być wprowadzane w organizacji bez nich?

text: Otrzymałem zadanie usprawnienia procesu tworzenia oprogramowania poprzez wdrożenie ulepszeń procesu, z których najprawdopodobniej będziemy używać CMMI for Development w wersji 1.3 jako wytycznej i zaadoptować najlepsze praktyki w całości lub w części. Jaki jest najlepszy sposób na wprowadzenie standardów i usprawnień procesów, aby zminimalizować stopień odpychania i oporu ze strony programistów?


title: Strategie deklaratywnego języka wprowadzania

text: Muszę opracować prosty język deklaratywny do obsługi aplikacji. Mam różne moduły obliczeniowe, niektóre z nich zależą od innych modułów, które również wymagają konfiguracji. Problem w tym, że nie wiem, jak manipulować słowami kluczowymi. Wyjaśnię się na przykładzie Optymalizacja zadań Jednostki Liczniki System { // dane wejściowe } Optimizer { type Simplex convergenceCriteria 0,001 } PointEvaluator { type MyEvaluatorTechnique convergenceCriteria = 0.1 } jest to rozwiązanie, które posiada nagłówek bardzo ogólne encje opisujące znaczenie każdego sekcji, ale mógłbym mieć również sekcje, które wprost dotyczą konkretnych technik Zadanie { optymalizator typu Simplex } Jednostki Liczniki System { // dane wejściowe } Simplex { convergenceCriteria 0.001 PointEvaluator MyEvaluatorTechnique } MyEvaluatorTechnique { convergenceCriteria = 0.1 } Chciałbym poznać Twoją opinię na temat która metoda może brzmieć lepiej pod względem poprawności projektu oraz zalet i wad obu rozwiązań. Jedna rzecz, która mi się nie podoba w pierwszym rozwiązaniu, to na przykład fakt, że w zależności od typu mogę mieć opcje, które nie mają sensu dla tego konkretnego typu. W drugim rozwiązaniu nie konfiguruję jednak zadania ogólnego (które następnie wykorzystuje określone typy podsystemów). Zamiast tego określam konkretne podsystemy realizujące zadanie.


title: Który z tych dwóch algorytmów losowania jest bardziej losowy?

text: Który z poniższych dwóch algorytmów odtwarzania losowego („shuffle1” i „shuffle2”) jest bardziej losowy? publiczne klasy końcowe Tasowanie { prywatne statyczne Losowo losowe; public static void shuffle1(final Object[] array) { if (random == null) { random = new Random(); } for (int i = array.length - 1; i > 0; i--) { swap(array, i, random.nextInt(i + 1)); } } public static void shuffle2(final Object[] array) { if (random == null) { random = new Random(); } for (int i = 0; i < tablica.length; i++) { swap(tablica, i, i + random.nextInt(tablica.length - i)); } } protected static void swap(final Object[] array, final int i, final int j) { final Object tmp = array[i]; tablica[i] = tablica[j]; tablica[j] = tmp; } } Algorytm `shuffle2` gwarantuje, że wszystkie elementy są bezpośrednio dotykane, ale w algorytmie `shuffle1` element o indeksie = 0 nigdy nie jest bezpośrednio dotykany z powodu warunku `i > 0`.


title: Zaproponuj kod innych osób do nauki

text: Jaki kod open source Java sugerowałbyś mi do nauki? EDIT: Interesuje mnie design, prostota(?), styl programowania, logika. EDIT2: Pierwszą rzeczą, która przyszła mi do głowy, jest kod źródłowy JUnit. Zacząłem się temu przyglądać i byłem pod wrażeniem tego, jak „Pieniądze” są zaprojektowane/reprezentowane. Podobnie są jakieś sugestywne projekty open-source.


title: Pytanie dotyczące projektu open source w wywiadzie

text: Niedawno ubiegałem się o stanowisko programisty C# i podczas wywiadu ankieterzy wielokrotnie pytali mnie, czy przyczyniam się do rozwoju jednego lub więcej projektów open source. Ponieważ pozwolili mi napisać dużo kodu (od podstaw do TDD,MVVM,MVP), nie rozumiałem sensu takiego pytania, szczególnie dlatego, że bardzo upierali się przy temacie i zaczęło mi to przeszkadzać. Chciałbym mieć wystarczająco dużo czasu na tworzenie oprogramowania open source, ale nie rozumiem, dlaczego firma sprzedająca oprogramowanie udaje, że jej pracownicy pracują za darmo w wolnym czasie. Jaki jest prawdziwy powód tego pytania (poza sprawdzeniem kodu)?


title: Dobrze zaprojektowane aplikacje Open Source WPF

text: Zastanawiam się tylko, czy ktoś wie o niektórych dobrze zaprojektowanych aplikacjach .NET Open Source przy użyciu WPF? Próbowałem już szukać w zwykłych witrynach, takich jak GitHub i Sourceforge, ale nie byłem zbyt zadowolony z wyników. Właściwie interesuje mnie właściwe wykorzystanie MVVM, Data Binding itp. w kontekście stosunkowo dużego oprogramowania (przynajmniej więcej niż kilka linijek przykładowego kodu, które znajdziesz w większości samouczków i książek). Moją główną troską jest również ORM z NHibernate. Obecnie mam też ogólne wrażenie, że WPF nie jest w ogóle używany zbyt intensywnie, czy mam rację? Które oprogramowanie z zamkniętym źródłem (komercyjne) jest tam dostępne, używając go?