title: Bardzo dobrze znam JavaScript, ale bombarduję wywiady na temat kodowania

text: Więc obecnie szukam nowej pozycji jako Front-End Developer. Bardzo dobrze znam JavaScript i potrafię poetycko woskować na temat zamknięć, curryingu, dziedziczenia prototypów, wzorców projektowych, wydajności aplikacji i ogólnej architektury front-end. Ale wciąż kończę bombardowaniem rozmów kwalifikacyjnych. (FYI większość prac, dla których przeprowadzam rozmowę kwalifikacyjną, dotyczy budowania SPA z pewnego rodzaju frameworkiem MVC) Zazwyczaj testy kodowania to małe fragmenty kodu rzeczy, z którymi nigdy nie spotykam się profesjonalnie. Na przykład napisanie funkcji, która rozwiąże jakiś problem matematyczny. Oprócz odziedziczonej niezręczności polegającej na próbie kodowania, gdy trzymasz telefon w jednej ręce i gdy nieznajomy widzi twój ekran i ogląda każdą wpisaną postać, po prostu zwykle nie widzę tego rodzaju rzeczy w prawdziwym świecie. Czy brakuje mi poważnego zestawu umiejętności, czy też ankieterzy zadają mi nieistotne pytania. Myślę, że powinienem popracować nad moim funkcjonalnym programowaniem i algorytmami, ale nie znalazłem wielu dobrych zasobów w Internecie (lub w druku) żadnych sugestii?


title: Automatyzacja obsługi błędów formularzy

text:
Nie jestem pewien, czy jestem sprytny, czy utrudniam sprawy. Pracuję w niestandardowej strukturze MVC, a w niektórych z moich "widoków", które zawierają formularze, zachowuję błędy wprowadzania i stylizacji w następujący sposób: <form action="submit" method="POST"> Nazwa: <input <?php if (in_array('name', $error)) { echo 'class="form-error"'; } ?> type="text" name="name" value="<?php if (isset($name)) { echo $name; } elseif (isset($valid_user)) { echo $valid_user['name'] ; } ?>" maxlength="20" required="required" />
<input type="submit" class="submit" value="Update" /> W tym przykładzie `$valid_user['name ']` będzie wartością domyślną dla istniejących danych (kiedy formularz jest ładowany po raz pierwszy), a `$name` będzie zaksięgowaną wartością wyświetlaną tutaj ponownie w przypadku wystąpienia błędu użytkownika, który musi zostać naprawiony. Osadzenie wszystkich tych wartości jest bardzo czasochłonne podczas tworzenia nowych formularzy, dlatego staram się sobie ułatwić. Chcę pozostać przy rozwiązaniu po stronie serwera, ponieważ uważam, że strony internetowe powinny być uzupełniane przez Javascript, a nie od niego zależne. Doszedłem do wniosku, że prawdopodobnie mógłbym to wszystko zrobić dynamicznie, używając DOMDocument PHP: $dom = new DOMDocument(); $dom->preserveWhiteSpace = false; $dom->loadHTMLFile($view); $forms = $dom->getElementsByTagName('formularz'); $total_forms = $formy->długość; for ($i = 0; $i < $total_forms; $i++) { $inputs = $forms->item($i)->getElementsByTagName('input'); $total_inputs = $inputs->długość; if ($total_inputs > 0) { foreach ($inputs as $input) { $type = $input->getAttribute('type'); switch ($type) { case 'text': // sprawdź błędy $attr_name = $input->getAttribute('name'); if (in_array($attr_name, $error)) { $input->setAttribute('class', 'form-error'); } // sprawdź domyślne / wysłane wartości if (isset($$attr_name)) { $input->setAttribute('value', $$attr_name); } elseif (isset($_POST[$attr_name])) { $input->setAttribute('value', $_POST[$attr_name]); }                         przerwanie; } } } } echo $nagłówek; // usuń niechciane tagi, które są dodawane automatycznie echo preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom ->zapiszHTML()); echo $stopka; Przejście z takim podejściem będzie oczywiście wymagało napisania dużo dodatkowego kodu, więc zanim przejdziemy dalej, jestem tylko ciekaw, jakie są twoje opinie lub czy są jakieś potencjalne wady, o których być może nie myślę? Czy nie byłoby lepiej pozostać przy moim oryginalnym podejściu, czy są inne rozwiązania, które sprawią, że będzie to mniej żmudne?


title: Jakie są dobre wskazówki dla programisty próbującego zaprojektować skalowalną bazę danych MySQL?

text: Jak wynika z pytania, jestem programistą, a nie DBA. Mam doświadczenie w projektowaniu dobrych schematów ER i mam dość dużą wiedzę na temat normalizacji i dobrego projektowania schematów. Pracowałem również z hurtowniami danych, które wykorzystują modelowanie wymiarowe z tabelami faktów i tabelami dim. Jednak wszystkie aplikacje oparte na bazach danych, które opracowałem na poprzednich stanowiskach, były aplikacjami wewnętrznymi w intranecie firmy i nigdy nie odbierały „ruchu ze świata rzeczywistego”. Co więcej, na poprzednich stanowiskach zawsze miałem DBA lub kogoś, kto wiedział o tym znacznie więcej ode mnie. W tej nowej pracy, którą właśnie rozpocząłem, zostałem poproszony o opracowanie publicznej aplikacji z backendem MySQL i oczekuje się, że dane przechowywane przez tę aplikację będą rosły bardzo szybko. Aha, i nie mamy DBA. Cóż, chyba jestem DBA. ;) Jeśli chodzi o projektowanie bazy danych tak, aby była skalowalna, to nawet nie wiem od czego zacząć. Czy ktoś ma jakieś dobre wskazówki lub zna jakieś dobre materiały edukacyjne dla programisty, który został w pewnym sensie wepchnięty do roli projektanta DBA/bazy danych i otrzymał zadanie zaprojektowania skalowalnej bazy danych do obsługi takiej aplikacji? Czy jacyś inni programiści przechodzili przez takie rzeczy? Co zrobiłeś, żeby szybko stać się dobrym w tej roli? Znalazłem tutaj kilka dobrych slajdów na ten temat, ale trudno jest ze slajdów wydobyć szczegóły. Szkoda, że nie mogłem uczestniczyć w rozmowie tego faceta. Znalazłem też dobry wpis na blogu zatytułowany 5 Ways to Boost Scalability MySQL, który zawierał kilka dobrych informacji, choć część z nich była ponad moją głową. ## tl;dr Chcę się tylko upewnić, że baza danych nie musi być całkowicie przeprojektowana, gdy skaluje się w górę, i szukam wskazówek, jak zrobić to dobrze za pierwszym razem. Odpowiedź, której szukam, to „lista rzeczy, które każdy programista powinien wiedzieć o tworzeniu skalowalnej bazy danych MySQL, aby Twoja aplikacja nie działała jak gówno, gdy dane stają się ogromne”.


title: Jak wybrać odpowiedni telefon z Androidem do testowania mojej aplikacji?

text: Chcę kupić telefon z Androidem, aby przetestować moją pierwszą aplikację na Androida. Na co powinienem zwrócić uwagę, aby wybrać najbardziej odpowiednie urządzenie?


title: 2-godzinne pytanie do rozmowy kwalifikacyjnej dla starszego inżyniera oprogramowania

text: jakie pytanie należy zadać, aby przetestować programowanie i znajomość bazy danych dewelopera? zgaduję, że 2 godziny praktyczne byłyby w porządku. To jest dla starszego zasobu PHP i czy ktoś może zasugerować mi kilka przykładów pytań do testu technicznego? Nie jestem pewien, czy to właściwe miejsce, aby zadać to pytanie. jeśli nie, czy mogę wiedzieć, gdzie o to zapytać?


title: Jakie są/byłyby cechy i zastosowania paradygmatu programowania, w którym funkcje nie mogą mieć instrukcji?

text: Załóżmy, że istnieje język, w którym zamiast instrukcji, funkcje mogą być zdefiniowane tylko w odniesieniu do innych funkcji i operatorów, takich jak częściowe zastosowanie i kompozycja. Jakie byłyby cechy takiego języka? Czy wszystko, co jest zrobione z oświadczeniami, można zrobić na tym projekcie? Jakie byłyby ograniczenia? Czy są takie języki?


title: Przechowywanie dużych ilości danych w sesji HTTP (aplikacja Java)

text: Zadaję to pytanie w kontynuacji podejścia http-sesja-lub-baza-danych. Planuję podążać tym podejściem. 1. Gdy użytkownik doda produkt do koszyka, utwórz model koszyka, dodaj elementy do koszyka i zapisz w bazie danych. 2. Konwertuj model koszyka na dane koszyka i zapisz go w sesji HTTP. 3. Dowolna aktualizacja/edycja aktualizacji bazowego koszyka w bazie danych i aktualizacja migawki danych w sesji. 4. Gdy użytkownik kliknie stronę widoku koszyka, po prostu wybierz dane koszyka z sesji i wyświetl je klientowi. Mam następujące zapytania dotyczące sesji HTTP * Jak dobrze jest przechowywać duże dane (koszyk) w sesji? * Jak skalowalne może być to podejście? (W odniesieniu do sesji) * Czy moja aplikacja nie będzie jadła i nie będzie wymagała dużej ilości pamięci? * Czy moje podejście jest w porządku, czy muszę wziąć pod uwagę inne punkty podczas projektowania? Chociaż możemy kontrolować, jakie wszystkie dane koszyka powinny być przechowywane w sesji, ale nadal musimy mieć pewne informacje w danych koszyka przechowywane w sesji?


title: Metody statyczne czy funkcje statyczne?

text: Właśnie czytałem http://stackoverflow.com/questions/155609/what-is-the- difference-between-a-method-and-a-function i nagle przyszło mi do głowy, że metody. Ponieważ metody statyczne nie są w żaden sposób powiązane z obiektem, jak można je wywołać jako metody statyczne (prawie wszyscy programiści)? Czy moje zrozumienie metod/funkcji jest prawidłowe?


title: Porady dotyczące rozpoczęcia nowej pracy

text: Za tydzień rozpocznę nową pracę w firmie produkcyjnej zarządzającej rozwojem nowego serwisu eCommerce. Firma otrzymuje około 3 w teście „Joela”. Odziedziczę 3 programistów, którzy stworzyli firmową stronę internetową i zajmują się ogólnym programowaniem IT. Mam siwe włosy i referencje, aby mieć ich początkowy szacunek, ale jestem inżynierem, a nie menedżerem. Szukam praktycznych porad - szczególnie na pierwsze 90 dni - jak się zbudować, utrzymać zespół razem i iść naprzód.


title: Dowody empiryczne na wybór paradygmatu programowania w celu rozwiązania problemu

text: Wiki C2 zawiera dyskusję na temat dowodów empirycznych dla programowania obiektowego, która zasadniczo stwierdza, że nie ma nic poza odwołaniem się do autorytetu. Ostatnia edycja tego dokumentu miała miejsce w 2008 roku. Dyskusja wydaje się to potwierdzać: na pytania o to, czy OO jest przestarzałe, kiedy programowanie funkcjonalne jest złym wyborem, a na wady i zalety AOP odpowiada się opiniami kontrybutorów bez opierania się na dowodach. Oczywiście opinie uznanych i renomowanych praktyków są mile widziane i cenne, ale są bardziej wiarygodne, gdy są zgodne z danymi eksperymentalnymi. Czy ten dowód istnieje? Wiem, że inżynieria oprogramowania oparta na dowodach jest rzeczą, ale czy mogę ją praktykować w tym kontekście? W szczególności, jeśli mam konkretny problem „P”, który chcę rozwiązać, pisząc oprogramowanie, czy istnieje zasób wiedzy, studiów i badań, które pozwoliłyby mi zobaczyć, jak wynik rozwiązywania problemów takich jak „P” zależał od wybór paradygmatu programowania? Wiem, że to, który paradygmat wychodzi jako „właściwa odpowiedź”, może zależeć od tego, na jakie metryki zwraca się uwagę dane badanie, na jakich warunkach badanie jest stałe lub zmienne, a także bez wątpienia od innych czynników. To nie wpływa na moje pragnienie znalezienia tych informacji i krytycznej ich oceny. Staje się jasne, że niektórzy myślą, że szukam rozwiązania typu „obróć korbę” - jakiejś maszyny do kiełbasek, w której umieszczam informacje o moim problemie i z której pochodzi słowo typu „funkcjonalny” lub „ustrukturyzowany”. To nie jest mój zamiar. To, czego szukam, to badania nad tym, w jaki sposób - z wieloma zastrzeżeniami i założeniami, o które nie będę się tutaj wnikał, ale dobra literatura na ten temat - pewne właściwości oprogramowania różnią się w zależności od problemu i wyboru paradygmatu. Innymi słowy: niektórzy mówią, że "OO daje większą elastyczność" lub "funkcjonalne programy mają mniej błędów" - (częściowo) to, o co proszę, jest tego dowodem. Reszta prosi o dowody przeciwko temu lub o założenia, pod którymi te stwierdzenia są prawdziwe, lub o dowody pokazujące, że te rozważania nie są ważne. Istnieje wiele opinii na temat tego, dlaczego jeden paradygmat jest lepszy od drugiego; czy jest coś obiektywnego za którymkolwiek z nich?


title: Co tak naprawdę oznacza dobre polecenie nad API?

text: Widziałem wiele organizacji szukających programistów, którzy mają dobrą kontrolę nad Facebookiem, Google i innymi API. Teraz jestem trochę zdezorientowany. Opracowałem fanpage na Facebooku, osadzałem przyciski facebooka na stronach internetowych i używałem API map Google, ale chodzi o to, że te API są bardzo duże, aby je całkowicie opanować. Ile dokładnie oznacza dobre polecenie nad API?


title: Dlaczego NoSQL jest lepszy w tym scenariuszu?

text: Scenariusz hipotetyczny: załóżmy, że pobieramy JSON z Facebooka ze szczegółami meldunków, postów itp. znajomego użytkownika... Są one dostarczane jako jeden dokument na znajomego na aktywność, więc przy 8 czynnościach użytkownik z 300 znajomymi spowoduje, że nasz system wyślij 2400 żądań do Facebooka, pobierając 2400 dokumentów JSON. Powiedzmy, że chcemy połączyć te 2400 dokumentów razem, posortować działania według data_utworzenia malejąco, a następnie przeglądać je w czymś w rodzaju pseudo-newsfeed. Proszę nie komentować sensowności odtwarzania w ten sposób kanału informacyjnego na Facebooku. Załóżmy również, że chcemy ponownie pobrać wszystkie te dane, gdy tylko zostaniemy powiadomieni o ich zmianie przez Facebooka. (FB ma usługę aktualizacji, którą możesz subskrybować dla użytkowników Twojej aplikacji). Ze względu na argument załóżmy, że wszystkie dane muszą być odświeżane co 5 minut, a następnie załóżmy, że chcemy obsługiwać 1000 jednoczesnych użytkowników, a średni rozmiar dokumentu JSON to 25kb. Jestem ciekawy, w jaki sposób techniki NoSQL byłyby lepsze niż analizowanie JSON przy przejmowaniu do relacyjnej bazy danych? Wydaje mi się, że map/reduce to tylko synonimy parse/aggregate i że oba podejścia będą wymagały tego samego. Jakie korzyści przyniosłoby mi używanie NoSQL?


title: Internacjonalizacja poprzez SQL Database i problemy z wydajnością

text: Używam technologii .Net, a ponieważ "natychmiastowe tłumaczenie" ASP.Net nie jest łatwe do zrobienia z ResX, ponieważ musi być kompilowany po każdej zmianie, dostępnych jest kilka hacków (http://www.onpreinit. com/2009/06/updatable-aspnet-resx-resource-provider.html), ale tak jak jest, są to hacki... i wydają się mieć problemy. Zdecydowałem więc jakiś czas temu (w 2006 roku, zanim jeszcze zobaczyłem rozwiązania takie jak poprzedni link), że zamierzam ustawić wszystkie tłumaczenia w bazie danych SQL i buforować wszystkie tłumaczenia potrzebne w pamięci do wydajności. Prawdziwy problem zaczyna się, gdy chcę zrobić tabelę złączeń między wieloma polami, które są tłumaczone. Zasadniczo to, co robię, to przechowywanie identyfikatora tłumaczenia w każdym polu, dzięki czemu mogę niezależnie dodawać lub edytować tłumaczenia na języki. Na przykład (nie jest prawdziwy, ale powinien pokazywać koncepcję): ITEM(ItemID, TranslationReference_Name, TranslationReference_Use, ...) TRANSLATION(TranslationReference, IDLanguage, Content) Następnie, jak można się domyślić, kiedy chcę, aby zapytanie SQL zawierało, potrzebuję to do join I tu się brudzi, bo nie znalazłem innego sposobu na zrobienie tego, a dla każdego pola ITEM, który wymaga tłumaczenia na konkretny język IDL, muszę zrobić join. Niekorzystnie wpływa to na wydajność, ponieważ tabela TRANSLATION zawiera tysiące wierszy. Więc za każdym razem muszę wykonać pełne sprzężenie dla każdej kolumny, która wymaga tłumaczenia. Plus, innym problemem jest to, że chciałbym mieć podstawowe tłumaczenie na angielski, jeśli określony język nie został jeszcze przetłumaczony, więc jak można się domyślić, kodowanie staje się znacznie bardziej brudne... Nie mam pojęcia, jak to poprawić . Czy powinienem po prostu zrezygnować z pomysłu złączeń bazy danych i przetłumaczyć każdy wynik bazy danych na mój kod .Net, odwołując się do słownika (który już mam) zawierającego tłumaczenie, aby nie wymagało to rzeczywistych złączeń? A to tylko niektóre z wad tego rozwiązania… ponieważ w prawdziwym użytkowaniu potrzebuję, aby użytkownicy wgrywali własne dynamicznie przetłumaczone treści i zarządzali wersjami tych tłumaczeń. `Pamiętaj, że nie chcę mieć N wierszy (N to liczba języków, w których ten rekord jest dostępny) dla tabeli „ITEM”, wiem, że mogę ustawić 1 wiersz według języka i przetłumaczyć jego zawartość w nvarchar wewnątrz niego, ale nie tego chcę, ponieważ potrzebuję tego samego identyfikatora dla każdego rekordu, niezależnie od języka, na który można go przetłumaczyć.` Przeszukałem Internet i nie znalazłem żadnego dobrego artykułu na ten temat. Rozmawiałem z innym programistą, który miał tłumaczenie na kilka języków dla swojej bogatej w dane witryny internetowej, jeśli dobrze pamiętam, że używał wielu tabel do tłumaczenia, nie przechowywałby IDLanguage w globalnej tabeli TRANSLATION, ale dzieliłby każde tłumaczenie w osobnej tabeli i zrób coś takiego jak wstrzyknięcie języka do kodu SQL, aby zmienić, coś takiego: SELECT Content FROM Translation_EN ... SELECT Content FROM Translation_FR ... Byłoby to na pewno bardziej efektywne niż robienie złączenia na pełnej tabeli, ale to nie uprościć mój SQL pełen złączeń... Więc prawdopodobnie muszę pomyśleć o alternatywach i potrzebuję twoich pomysłów i komentarzy na ten temat. Dziękuję Ci bardzo.


title: Co dokładnie obejmuje „Dokumentacja”?

text: **Kiedy mówimy „dokumentacja” oprogramowania, co to obejmuje, a czego nie powinno zawierać?** Na przykład ostatnie pytanie zadane, czy komentarze są uważane za dokumentację? Ale jest wiele innych obszarów, dla których jest to również ważne pytanie, niektóre bardziej oczywiste niż inne: * Podręczniki (oczywiście) * Informacje o wydaniu? * Poradniki * Komentarze * Jakieś inne? Gdzie jest narysowana linia. Na przykład, jeśli 'tutorial' jest dokumentacją, czy jest to dokumentacja 'video tutorial', czy jest to coś innego? Ogólnie rzecz biorąc, coś w oprogramowaniu nie jest „zrobione”, dopóki nie zostanie zaimplementowane, przetestowane i udokumentowane. Stąd pytanie, jakie rzeczy powinniśmy wziąć pod uwagę jako część dokumentacji, aby uznać coś „zrobione”. * * * Inspiracja do pytania z niedawnych opinii klientów na naszej konferencji, wskazujących, że nasz doktor potrzebuje więcej „próbek”, których wcześniej nie byliśmy tak dobrzy w rozważaniu, jak powinniśmy. Odbiorcy: programiści korzystający z naszych baz danych, języków programowania i powiązanych narzędzi (takich jak klienci administracyjni do wspomnianej bazy danych)


title: Projektowanie klas zorientowane obiektowo

text: Zastanawiałem się nad dobrym projektowaniem klas zorientowanych obiektowo. W szczególności trudno mi zdecydować między tymi opcjami: 1. **statyczna** vs **metoda instancji** 2. **metoda bez parametrów lub zwracana wartość** vs **metoda z parametrami i zwracana wartość* * 3. **nakładanie się** vs **oddzielna funkcjonalność metody** 4. **prywatna** vs **metoda publiczna** * * * _Przykład 1:_ Ta implementacja wykorzystuje metody instancji, bez zwracanych wartości ani parametrów, bez nakładania się funkcjonalności i wszystkich metod public XmlReader reader = new XmlReader(url); czytelnik.otwórzUrl(); czytnik.odczytXml(); Wynik dokumentu = reader.getDocument(); _Przykład 2:_ Ta implementacja używa metod statycznych, z wartościami zwracanymi i parametrami, z nakładającą się funkcjonalnością i metodami prywatnymi. Wynik dokumentu = XmlReader.readXml(url); * * * W przykładzie pierwszym wszystkie metody są instancjami publicznymi, co ułatwia testowanie jednostkowe. Chociaż wszystkie metody są różne, metoda readXml() jest zależna od metody openUrl(), a openUrl() musi zostać wywołana jako pierwsza. Wszystkie dane są deklarowane w polach wystąpienia, więc w żadnej metodzie nie ma zwracanych wartości ani parametrów, z wyjątkiem konstruktora i akcesorów. W przykładzie drugim tylko jedna metoda jest publiczna, reszta to prywatna metoda statyczna, co utrudnia test jednostkowy. Metody nakładają się na siebie w tym, że readXml() wywołuje openUrl(). Nie ma pól, wszystkie dane są przekazywane jako parametry w metodach, a wynik jest zwracany natychmiast. Jakimi zasadami powinienem się kierować, aby poprawnie programować obiektowo?


title: Artykuł Petera Norviga cytowany przez Brendana Eich

text: Czytam Coders at Work, a Brendan Eich cytuje artykuł Norviga z czasów, gdy był w Harlequin, „o tym, że wzorce projektowe są tak naprawdę tylko błędami w twoim języku programowania”. Czy ktoś może podać link do tego artykułu?


title: Czy czternasta linia Zen w Pythonie jest odniesieniem do Dijkstry?

text: Zen Pythona stwierdza w wierszu 14., że: > Chociaż na początku może to nie być oczywiste, chyba że jesteś Holendrem. Czy to nawiązanie do słynnego holenderskiego informatyka Edsgera W. Dijkstry?


title: Jak zaimplementować obiekt „kontrola przypadków użycia” w (iOS) MVC?

text: We wzorcu architektury MVC (np. w iOS) istnieje kontroler na widok. W UML istnieje koncepcja posiadania obiektu Control na przypadek użycia, aby zawrzeć przypadek użycia, który może obejmować więcej niż jeden widok. Czasami ten sam widok może obsługiwać wiele przypadków użycia, w takim przypadku dobrze byłoby mieć wiele obiektów „kontroli przypadków użycia”. Czy powinienem utworzyć oddzielny obiekt „kontrola” oprócz „Kontrolera” systemu iOS, aby zawrzeć przypadek użycia? Jakiś pomysł, jak zaimplementować obiekt „kontrola przypadków użycia” w iOS MVC? Naprawdę interesuje mnie koncepcja posiadania obiektu kontrolnego dla przypadku użycia, a nie według widoku (fragmentu przypadku użycia).


title: Jak zaimplementować RGBA w 8-bitowym mikrokontrolerze?

text: Pomyślnie podłączyłem swój mikrokontroler do telewizora za pomocą wykonanej przeze mnie przejściówki VGA, która konwertuje sygnały cyfrowe na analogowe za pomocą rezystorów. Obecnie używam 8 pinów, których używam jako 2 czerwone 2 zielone 2 niebieskie 1 Hsyn i 1 Vsyn. Myślałem, że jeśli jest sposób, aby dodać w nim 'A' Alpha, to służy to przejrzystości. Moje kolejne pytanie dotyczy tego, czy jest to oprogramowanie sterowane przez Alpha, czy jest to sprzęt? Najwyraźniej nie znalazłem żadnych odpowiednich zasobów po stronie sprzętowej RGBA. Zauważyłem, że Gameduino użyło go w swoim 16-bitowym mikrokontrolerze. Czy w tym problemie można zastosować multipleksowanie/charlieplexing?


title: Próbuję zakodować punkty na kole

text: Próbuję to zrozumieć: napisałem kod dla punktów na okręgu o promieniu 1. Zauważ, że pierwszy i ostatni punkt celowo się pokrywają. czy i=1,imax X(i,1) = COS(-2*4.0*ATAN(1.0)*(i-1)/(imax-1)) Y(i,1) = SIN(-2*4.0 *ATAN(1.0)*(i-1)/(imax-1)) print *, X(i,1)**2 + Y(i,1)**2 end do Kod ma być okręgiem , ale poniższy rysunek przedstawia fabułę w Mathematica. Wygląda mi jak elipsa. czy robię coś źle? A może tak właśnie rysuje Mathematica? ![http://imgur.com/0XMfZsw](http://i.imgur.com/0XMfZsw.jpg) Polecenie dla wykresu to ListPlot[a, PlotLabel -> "MeshPoints", AxesLabel -> {"x ", "y"}, Zakres wykresu -> {{-2, 2}, {-2, 2}}]


title: Konwersja apletu Java do aplikacji internetowej

text: Chciałbym przekonwertować ten aplet Java na równoważną aplikację internetową. Po raz pierwszy tworzę aplikację internetową, ale mam pewne doświadczenie w programowaniu i czas, i jestem gotów nauczyć się wszystkich niezbędnych narzędzi. Przez „aplikację webową” rozumiem aplikację, która działałaby w przeglądarkach, nie wymagając np. Javy czy Flasha. Dlatego może działać na kompatybilnych urządzeniach mobilnych. Jakich narzędzi powinienem szukać w tym projekcie deweloperskim?


title: Wykorzystanie typów surowych w Java XML-RPC

text: Badałem implementację XML-RPC w Javie. Główne biblioteki open-source (np. Apache XML-RPC) używają typów surowych do reprezentowania niektórych typów XML-RPC w Javie, np. Struktury są reprezentowane jako surowe mapy. Surowe typy w nowym kodzie są odradzane w Javie. Z JLS: > Używanie surowych typów jest dozwolone tylko jako ustępstwo na > kompatybilność starszego kodu. Stosowanie typów surowych w kodzie napisanym po wprowadzeniu > generyczności do języka programowania Java jest zdecydowanie odradzane. Możliwe, że przyszłe wersje języka programowania Java nie zezwoli na używanie typów surowych. Ale ze względu na charakter protokołu XML-RPC, czy typy surowe są w tym przypadku nieuniknione?


title: Jak przygotować się do rozmowy kwalifikacyjnej online (może przez Skype)?

text: Ubiegam się o firmę daleko i jeśli dostanę rozmowę kwalifikacyjną, prawdopodobnie odbędzie się ona zdalnie. Szukałem porad na ten temat, ale wszystkie wskazówki wydają się być skierowane na spotkania twarzą w twarz (takie jak „mocno uścisnąć dłoń”). Jakie są różnice? Jak najlepiej wykorzystać te różnice? Aktualizacja: Jest to stanowisko programisty, więc jest też coś o pytaniach technicznych (takich jak, mogę wygooglować wszystko, co zaproszą ;) To pytanie dotyczy również wszystkich freelancerów, którzy mają do czynienia z klientami lub rekruterów, którzy przeprowadzają zdalne rozmowy kwalifikacyjne. Mam nadzieję, że będzie to odpowiednie dla tej strony. Może również pomóc, jeśli zachowasz odpowiedzi związane z programistami.


title: Czym właściwie jest moduł w inżynierii oprogramowania?

text: Ponieważ definicja „moduł składa się z pojedynczego bloku kodu, który można wywołać w sposób, w jaki wywoływana jest procedura, funkcja lub metoda”, definicja wydaje się bardzo niejasna i szeroka. Czy ktoś mógłby to wyjaśnić innymi jasnymi słowami i pokazać jakiś rzeczywisty przykład, jak podzielić wymaganie na moduł. Dziękuję


title: Wprowadzenie do C dla doświadczonego programisty

text: To odpowiedź na pytanie "Nie znam C. A dlaczego mam się tego uczyć?" czy jestem zainteresowany nauką C. Czym jest dobry program do samodzielnej nauki (podręcznik/strona internetowa/OpenCourseWare itp.) dla kogoś, kto ma już duże doświadczenie w językach wysokiego poziomu?


title: Jaki jest najlepszy sposób na prowadzenie technicznego klubu książki?

text: W pracy od jakiegoś czasu prowadzimy kluby książki w porze lunchu. Do tej pory wykonaliśmy: * Czysty kod * Efektywna praca z Legacy Code * Pragmatyczny programista Czytamy jeden rozdział tygodniowo, a jedna osoba jest przydzielona do zaprezentowania treści i ułatwienia dyskusji. Z tej trójki prawdopodobnie największy sukces odnieśliśmy z The Pragmatic Programmer. Wygląda na to, że im bardziej skomplikowana technicznie treść była, tym więcej osób rezygnowało z książki. Chciałbym napisać ciężką technicznie książkę, taką jak SICP lub Java Concurrency in Practice, ale nie znam dobrych sposobów, aby to zadziałało z formatem, który obecnie wykonujemy. Jakie masz rady?


title: W jaki sposób „wstępna alokacja” macierzy komórek może poprawić wydajność w programie MATLAB?

text: Czytałem ten artykuł w MathWorks o poprawie wydajności MATLAB i zauważysz, że jedną z pierwszych sugestii jest wstępne przydzielenie tablic, co ma sens. Ale mówi również, że wstępne przydzielenie tablic Cell (czyli tablic, które mogą zawierać różne, nieznane typy danych) poprawi wydajność. Ale w jaki sposób może to poprawić wydajność, ponieważ typy danych są nieznane, więc nie wie, ile ciągłej pamięci będzie wymagało, nawet jeśli zna kształt tablicy komórek, a zatem nie może na pewno wstępnie przydzielić pamięci? Więc jak to skutkuje jakąkolwiek poprawą wydajności? Przepraszam, jeśli to pytanie lepiej pasuje do StackOverflow niż dla programistów, ale nie pyta o konkretny problem, więc pomyślałem, że lepiej tutaj pasuje, proszę daj mi znać, jeśli się jednak mylę. Wszelkie wyjaśnienia byłyby bardzo mile widziane :)


title: Silnik reguł w .NET

text: Muszę zaimportować dane z Excela do bazy SQL. Dane Excela zawierają różne parametry i ich wartości, takie jak P1, P1, P4, P5 itp. Muszę zastosować reguły biznesowe. Podobnie jak _jeśli (P1 > 100 i P1 < 200) to wstaw rekord do bazy danych_. Podobnie w niektórych przypadkach sprawdzane są również wartości ciągów. Czy mogę mieć dowolny aparat reguł typu open source, który zawiera interfejs użytkownika do zmiany, dodawania i usuwania reguł? Używam C# do odczytywania danych programu Excel i wstawiania rekordów. Jeszcze jedno, które z poniższych jest najlepszym podejściem? * Najpierw odczytaj dane z Excela i przechowuj każdy rekord jako obiekt w kolekcji, przeprowadź iterację kolekcji, zastosuj reguły biznesowe do każdego obiektu i wstaw rekord do bazy danych. Lub * Odczytaj jeden rekord z Excela, zastosuj reguły biznesowe i wstaw rekord do bazy danych. Powtórz ten proces dla całego arkusza kalkulacyjnego Excel.


title: Czy kompilatory muszą być napisane dla każdego modelu procesora?

text: Czy podczas pisania kompilatora musisz brać pod uwagę różne procesory i ich instrukcje? Czy instrukcje zostały ustandaryzowane? Lub jakie narzędzia i techniki są dostępne, aby w tym pomóc? Np. Ignorowanie instrukcji maszyny, które są specyficzne dla określonego modelu procesora.


title: Wykrywaj frameworki i/lub CMS używane na stronach internetowych w Firefoksie

text: Przebudowuję witrynę mojej biblioteki akademickiej i sprawdzam inne witryny, aby określić, jakie technologie są używane. Rzeczy takie jak: * Frameworki internetowe * Frameworki JavaScript * Technologia po stronie serwera * System zarządzania treścią Teraz odniosłem prawdziwy sukces w Firefoksie, używając wtyczek takich jak Wappalyzer, Firebug i DOM Inspector. Ale niektóre witryny po prostu nie wyświetlają żadnych informacji. Szukam korzystania z tych narzędzi, zwłaszcza wydaje się, że używany jest CMS na poziomie korporacyjnym. Czy ktoś zna inne narzędzia do wykrywania tego rodzaju danych? Również w przypadku Firebuga i Inspektora DOM jest wiele informacji. wyświetlane i zastanawiałem się, czy istnieje sposób na wykrycie obecności technologii po stronie serwera, CMS itp. W niektórych elementach strony internetowej? Ponadto, jeśli to pytanie dotyczy innej witryny Stack Exchange, daj mi znać, a zamiast tego opublikuję je tam. Wielkie dzięki, Jasonie


title: Czy warto wziąć udział w tym kursie?

text: Obecnie nie mam żadnych kwalifikacji w żadnej formie tworzenia stron internetowych (z wyjątkiem poziomu A-Level w ICT). Zacząłem pracować w firmie zajmującej się tworzeniem stron internetowych 4 lata temu i wreszcie dostałem szansę brania udziału w kursach. Mój menedżer nie ma zbyt dużej wiedzy technicznej, więc zostawił mi decyzję, czy kurs, na który chce mnie skierować, jest wart zachodu. Czy z Twojego doświadczenia wynika, że poniższy kurs jest wartościowym i wiarygodnym kursem, który pomoże mi poprawić moje umiejętności w zakresie ASP.NET/SQL? http://www.cvision.co.uk/realcbt/mcpd-asp-dot-net-35-csharp.htm A może możesz polecić podobne alternatywy?


title: Pokrycie testów jednostkowych

text: Jaką część kodu testujesz jednostkowo? Czy starasz się uzyskać 100% pokrycie wszystkiego, czy pomijasz niektóre zajęcia? **Tło** Stworzyliśmy lekką warstwę ORM, dla której napisaliśmy wiele testów. Ponadto używamy kontraktów kodu, aby określić, co każda metoda w każdym interfejsie powinna akceptować i zwracać. **Klasy do testowania lub nie** Tworzymy klasy repozytorium do pobierania elementów lub kolekcji. Klasy te są w zasadzie zapytaniami SQL i wywołaniami warstwy ORM. Mamy również klasy mapowania jednostek podobne do tych w płynnym nhibernacji. **Dlaczego pytam** Powodem, dla którego pytam jest to, że nie widzę sensu w pisaniu testów jednostkowych dla tych klas. Cóż, jest sens, gdybyśmy mogli użyć testowej bazy danych, aby zobaczyć, że nie są zgłaszane żadne wyjątki. Nasze testowe bazy danych są nieco nieuporządkowane i nigdy nie są resetowane, dlatego nie można zweryfikować żadnych danych (a to jest poza moją kontrolą). Moglibyśmy użyć fałszywej/imitacji warstwy ORM, aby wypróbować repozytoria, ale nie widzę w tym sensu.


title: Zasada segregacji interfejsów - wpisz podpowiedź do wielu interfejsów

text: Pytanie dotyczy **wpisywania interfejsów ról**. _Przykład kodu_ zawiera dwa DataMappery, które wskazują interfejs, którego potrzebują w konstruktorze, typ FooDataMapper wskazuje interfejs Preparable. Ponieważ to zależy od tego i żadnej innej metody z zależności. W drugim mapperze, BarDataMapper, zamieniłem wskazówkę dotyczącą typu na ??? ponieważ wymaga zarówno interfejsu Preparable, jak i Queryable. Jak sobie z tym poradzić (co powinno zastąpić ???), pisanie jednego z nich nie wystarczy, czy powinienem stworzyć nowy interfejs (może taki, który rozszerza poprzedni wspomniany) i podpowiedzieć ten nowy interfejs? Przykładowy kod jest sprowadzonym przykładem w PHP, a wskazówka typu (???) znajduje się w ostatniej zadeklarowanej klasie. <?php // DWA ROLE INTERFEJSY, MAŁA SEGREGOWANA CZĘŚĆ interfejsu DBAL Do przygotowania { funkcja public read( .. ); } Interfejs Queryable { public function query(... ); } // ADAPTER IMPLEMENTY SEGREGACJA class DbalAdapter implementuje Preparable, Queryable { private $dbal; funkcja publiczna __construct($dbal) { prywatne $this->dbal = $dbal; } public function Prepare( .. ) { .. return $this->dbal->prepare( .. ); } public function query( .. ) { .. return $this->dbal->query( .. ); } } // DATAMAPPER CTOR WSKAZÓWKI DOTYCZĄCE METOD, KTÓRYCH POTRZEBUJE UŻYĆ class FooDataMapper implementuje DataMapper { private $dbal; funkcja publiczna __construct(Przygotowalne $dbal) { $this->dbal = $dbal; } public function create(Foo $Foo) { .. $this->dbal->prepare( .. ) } } // DATAMAPPER CTOR WSKAZÓWKI DOTYCZĄCE METOD, KTÓRE TRZEBA UŻYĆ NOWY INTERFEJS? klasa BarDataMapper implementuje DataMapper { private $dbal; funkcja publiczna __construct(??? $dbal) { $this->dbal = $dbal; } public function SomeMethodThatNeedsBothPrepareNQuery(Bar $Bar) { .. $this->dbal->query( .. ) $this->dbal->prepare( .. ) } } Początkowym rozwiązaniem, do którego doszedłem, jest rozszerzenie nowego interfejsu te potrzebne. _Uważaj, że nazwy klas w kodzie są tylko pokazane, równie dobrze mogłyby być Fooable, BarAble..._


title: Wytyczne dotyczące przeglądu architektury dla projektu Java/JEE

text: Zamierzamy zrobić pełny przegląd aplikacji opartej na Java/JEE. Obejmuje to przegląd architektury, przegląd kodu i przegląd sprzętu platformy. Chociaż jesteśmy trochę świadomi technik przeglądu kodu, zastanawiam się, czy istnieje szablon lub model referencyjny do robienia **przeglądu architektury dla systemów Java/JEE**. Obecnie przyglądamy się podążaniu za modelem ATAM, aby zbudować drzewo atrybutów jakości obejmujące elementy wydajności, niezawodności, dostępności, bezpieczeństwa, modyfikowalności, przenośności, zmienności, podzbieralności, integralności konceptualnej i funkcjonalności. Pytanie brzmi, czy są jakieś inne standardowe modele, które obserwujesz, lub czy ktoś próbował wcześniej ATAM i ma jakieś **wskazówki/zalecenia/narzędzia do przeglądu architektury.**


title: Jakie przerwy w pracy są bardziej produktywne: krótkie czy długie?

text: Które sesje pracy są bardziej efektywne w programowaniu: krótkie (<= 30 minut), średnie czy długie (>= 2 godziny)? W jakich przypadkach? (Rozważ kodowanie nowej funkcjonalności, wprowadzanie drobnych modyfikacji, poprawianie interfejsu użytkownika, refaktoryzację, debugowanie, uczenie się interfejsu API, próby zrozumienia kodu innych osób). Co możesz powiedzieć na podstawie swoich doświadczeń? Mile widziane są również informacje z badań i najlepszych praktyk. Chociaż byłoby miło zobaczyć linki lub referencje. Bardziej wiarygodne informacje niż kompletna odpowiedź. * * * Cenne rzeczy na wynos: * Skoncentrowane myślenie jest tutaj ostatecznym celem * Generalnie nieprzerwana praca > 2-3 godziny skutkują utratą skupienia i mglistymi myślami * Kiedy jesteś w flow, lepiej pozwolić sobie na 1-2 godziny pracy * To warto spróbować ćwiczyć Technikę Pomodoro, aby pomóc przezwyciężyć inercję myślenia i prokrastynację, aby uzyskać lepsze poczucie czasu. Szczególnie może to pomóc w rozpoczęciu robienia rzeczy, których nie lubisz robić. * Używając oprogramowania do zarządzania przerwami, możesz pozwolić sobie na większą elastyczność, np. pominąć 1 przerwę, ale nie więcej. Pozwala to przystosować się do sytuacji: bądź w ruchu, gdy jest w ruchu, bądź zarządzalny, gdy nie jest w ruchu * Świeże powietrze, relaks i ćwiczenia podczas przerwy mogą pomóc w zaangażowaniu prawej półkuli, aby uzyskać nowe pomysły i rozwiązania Wypróbuj oprogramowanie narzędzia do 'zarządzania przerwami': * Pomodairo - dodatkowo śledzi listę zadań i posiada piękny interfejs użytkownika * WorkRave - zapewnia większą elastyczność w konfiguracji. można używać również bez głośników


title: Baza danych do przechowywania książek według grupowania, ich stron oraz spisu treści

text: Szukam lepszego sposobu na poradzenie sobie z projektem, który tu mam, nie jestem pewien, czy jest naprawdę odpowiedni. Aby nadać temu kontekst, powiedzmy, że mamy kilka grup, jedna grupa może być "SQL", a inna może być "Gotowanie". Grupa SQL miałaby książki takie jak "Normalizacja" i "T-SQL", podczas gdy gotowanie mogłoby mieć "Making pasta" i "Pizza jest niesamowita". Same książki będą miały wiele stron, co może nie skończyć się w kamieniu, muszę umieć je zmieniać (a to jest naprawdę problem z moim już obmyślonym schematem). Spis treści _Pizza jest Awesome_ może wyglądać tak: 1. Historia 1. Wielka rewolucja pizzy 13901 AD 1. Pierwsza pizza 2. Robienie pizzy 1. Przygotowanie psychiczne 1. Myśl jak gazel 1. Głód jak lew 1 Budowa piekarnika 1. Prawdziwą pizzę robi się za pomocą miotacza ognia. 1. Jak zrobić miotacz ognia 1. Jak uzyskać pozwolenie na miotacz ognia 3. Cieszyć się pizzą 4. Kredyt Potem biegnę i wypełniam tabele SQL w następujący sposób: Grupy: pizza, SQL Książki: Pizza jest świetna Strony: Wszystkie 13 stron, które wymieniłem w przykładzie Spis treści. Oto szkopuł: Spis treści. W moim istniejącym projekcie miałabym tabelę, w której każdy element ma własną pozycję, więc „kredyty”, „historia” i inne elementy pierwszego poziomu mają przypisaną pozycję z zagnieżdżoną wartością 0. Elementy takie jak „Głód lew” znajdują się na 7 pozycji w spisie treści, z zagnieżdżoną wartością 2 (ponieważ ma 2 poziomy głębokości). To naprawdę nie zaspokaja wielu potrzeb bez skomplikowanego programowania: 1. A gdybym chciał przenieść robienie pizzy ponad historię? Muszę ponownie zindeksować całą rzecz! 2. A gdybym chciał zagnieździć się robiąc pizzę pod pizzą cieszącą się smakiem? 3. Co jeśli napiszę zupełnie nową sekcję? 4. Jak upewnić się, że zagnieżdżone poziomy mają sens? Zasadniczo muszę zaktualizować cały indeks, a poziom „zagnieżdżony” nie ma możliwości sprawdzenia, czy coś ma sens (tj. pierwszy element może być zagnieżdżony 6 razy). Szukam lepszej odpowiedzi. Na marginesie, rzeczywista baza danych zawiera zmiany wersji każdej strony oraz miejsce na dodatkowe treści, takie jak komentarze. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/PfnxU.png)


title: Testowanie subskrypcji C# Eventhandler

text: Chcę, aby moje testy jednostkowe były w stanie zweryfikować, czy niektóre wydarzenia zostały subskrybowane lub anulowane w określonych punktach. Obecnie widzę dwie opcje. - -**VerifiableEventHandler** - Każdy klient subskrybuje używając wspólnej notacji `+=` i `-=`. Każda klasa, która ma weryfikowalną procedurę obsługi zdarzeń, musi zaimplementować funkcję IsSubscribed(), która może wysyłać zapytania do modułu obsługi zdarzeń za pomocą funkcji GetInvocationList(). interfejs publiczny IVerifiableEventHandler<T> { zdarzenie EventHandler<T> EventHandler; bool Subskrybowany (pełnomocnik d); } // impl public bool IsSubscribed(Delegate d) { return EventHandler.GetInvocationList().Contains(d); } **Niestandardowy interfejs subskrypcji** Rzeczywista procedura obsługi zdarzeń języka C# byłaby ukryta, a klienci mogą subskrybować tylko za pomocą funkcji Subskrybuj / Anuluj subskrypcję. interfejs publiczny IEventSource<T> { void Subscribe(EventHandler<T> func); void Anuluj subskrypcję(EventHandler<T> func); void Raise(nadawca obiektu, T event_args); } **Za i przeciw** Dla mnie zaletą pierwszego podejścia jest to, że nie zostaje naruszona zasada najmniejszego zaskoczenia. Programista .Net będzie oczekiwał, że zdarzenia będą subskrybowane przy użyciu notacji `+=`. Zaletą drugiego podejścia jest to, że bardzo łatwo je przetestować, ponieważ funkcje nie są niczym specjalnym i można je łatwo zweryfikować, jeśli klasa zawierająca obsługę zdarzeń jest fałszowana. Czy istnieje lepszy sposób na rozwiązanie tego problemu? Jeśli nie, który z tych dwóch wariantów powinien być preferowany i dlaczego?


title: Implementacja wzorca strategii z wstrzykiwaniem zależności

text: OK, więc celem jest tutaj zaimplementowanie wzorca strategii, który można przetestować za pomocą dowolnego narzędzia do automatycznego testowania. Od kilku tygodni zmagam się koncepcyjnie z tym problemem i chcę to wyjaśnić. Więc obecna konfiguracja wygląda mniej więcej tak: <?php // CreateReportUseCase.php class CreateReportUseCase { protected $factory; funkcja publiczna __construct(Fabryka $fabryka) { $to->fabryka = $fabryka; } public function create($params) { // na podstawie czegoś w parametrach // poproś fabrykę o podanie jednej z klas strategii // dla tego przykładu załóżmy, że zamierzam wykonać // inną strategię opartą w roli użytkownika. // np. Admin $strategy = $this->factory->make($params['user_role']); // wykonaj strategię używając danych z parametrów $strategy->execute($params); } } // Factory.php class Factory { protected $admin_strategy; chronione $strategia_użytkownika; funkcja publiczna __construct(AdminStrategy $admin_strategy, UserStrategy $user_strategy) { $this->admin_strategy = $admin_strategy; $this->user_strategy = $user_strategy; } public function make($role) { switch($role) { case 'Admin': return $this->admin_strategy; przerwanie; case 'Użytkownik': zwróć $this->user_strategy; przerwanie; } } } AdminStrategy implementuje RoleStrategy { public function execute($params) { // nie jest ważne co tutaj robimy. return json_encode($params); } } Czy to wygląda na rozsądne? Jak mógłbym to poprawić? Dla mnie fabryka wygląda trochę niezręcznie, ponieważ po prostu zwraca jakąś wstrzykniętą zależność zamiast tworzyć instancję strategii.


title: czy rozsądną praktyką jest rozszerzanie klasy tylko w celu ponownego użycia pojedynczej funkcji?

text: Opracowuję szereg filtrów postów dla witryny Wordpress i zbudowałem pierwsze 4 z jedną klasą. Ostatnie dwa są wystarczająco różne pod względem zakresu, aby współdzielić tylko jedną funkcję (funkcję do tworzenia końcowych linków) w swoich klasach. Czy rozsądne jest, w tym przypadku lub w dowolnej liczbie podobnych hipotetycznych wystąpień, rozszerzenie oryginalnej klasy w celu uzyskania tej funkcjonalności, czy też istnieje lepszy sposób?


title: Usługa e-mailowa: do lub UDW?

text: Jestem zajęty kodowaniem usługi poczty elektronicznej wielokrotnego użytku dla mojej firmy. Serwis pocztowy będzie robił sporo rzeczy poprzez wstrzykiwanie poprzez wzorzec strategii (m.in. obsługę throttlingu e-mail send rate, przełączanie między Smtp a AmazonSES lub Google AppEngine dla klientów pocztowych po przekroczeniu dziennych limitów, wysyłanie statystyk śledzenie (głównie dlatego, że jest to konieczne, aby pozostać w ramach limitów), aby wymienić tylko kilka). Ponieważ wysyłanie wiadomości e-mail będzie musiało być dławione i istnieją inne ograniczenia (np. maksymalny limit odbiorców w AmazonSES ograniczający odbiorców do 50 na wysłanie), wiadomości e-mail zazwyczaj muszą być podzielone. Z Twojego doświadczenia, czy lepiej byłoby wysłać zbiorczo (wielu adresatów na e-mail) czy pojedynczą wiadomość e-mail na adresata? Konsekwencją powyższego byłoby wysłanie do 1000 odbiorców, przy limicie 50 na wysłanie, wysłałbyś 20 e-maili za pomocą BCC w scenariuszu newslettera. Wysyłając wiadomość e-mail na odbiorcę, wyśle 1000 e-maili. Wysyłanie wiadomości e-mail jest asynchroniczne (ze względu na dziedziczenie opóźnień podczas wysyłania zazwyczaj można wysłać tylko 5 wiadomości e-mail na sekundę, chyba że używasz wielu klientów asynchronicznie). **Edytuj** Tylko w celu pełnego ujawnienia, ta usługa nie będzie używana ani sprzedawana spamerom i będzie, w miarę możliwości, automatycznie zgodna z prawem krajowym i międzynarodowym. ***Zamknięte <** Dziękujemy za wszystkie cenne uwagi. Obawy dotyczące zgodności z przepisami prawa, doświadczenia użytkownika (ogólne lub spersonalizowane anulowanie subskrypcji) i regulacji spamu za pośrednictwem czarnej listy dostawców usług internetowych sprawiają, że **Do** jest preferowanym i prawdopodobnie jedynym wyborem podczas wysyłania generowanych przez system wiadomości e-mail do odbiorców.


title: Czy skrypty rozszerzeń powinny być uruchamiane w piaskownicy?

text: W szczególności dotyczy to rozszerzeń do gier napisanych w lua (luajit-2.0). Zastanawiałem się, czy powinienem ograniczyć to, co te skrypty mogą zrobić, i doszedłem do wniosku, że prawdopodobnie nie powinienem: * Trudno to zrobić dobrze. Brzmi głupio, ale są szanse, że moja piaskownica i tak będzie nieszczelna. * Jedyną korzyścią, o jakiej mogłem pomyśleć, byłoby zapewnienie użytkownikom poczucia bezpieczeństwa podczas uruchamiania skryptów innych firm. * Wadą byłoby to, że jest to po prostu niesamowicie denerwujące dla twórców rozszerzeń. To znaczy na razie ja (treść gry będzie w większości oskryptowana). Powodem, dla którego pytam o to teraz, zanim faktycznie będę miał cokolwiek reprezentacyjnego, jest to, że dodanie piaskownicy na początku jest łatwe, ale nałożyłoby te irytujące ograniczenia na mnie. Jednak jeśli najpierw pójdę dalej, a później zdecyduję, że mimo wszystko potrzebuję piaskownicy, napotkam problemy (musiałbym albo przepisać skrypty, które już tam są, albo wprowadzić jakąś formę systemu zarządzania zaufaniem co wydaje się być więcej kłopotów niż jest to warte).


title: Jakiego wspólnego terminu można użyć w odniesieniu do usług sieci Web, usług systemu Windows itp.?

text: Moje pytanie dotyczy przede wszystkim przygotowania CV. Zwykle w sekcji Język wymieniamy poszczególne języki programowania, których używaliśmy. Na przykład C#, C++, PHP. W sekcji Platforma możemy wymienić różne systemy operacyjne i urządzenia. Do której kategorii należą usługi sieci Web/usługi systemu Windows? Chodzi mi o to, że nie są to platformy same w sobie i na pewno nie są językiem. Czy jest jakiś wspólny termin, którego można użyć do ich opisania?


title: Wybór projektu OO i zasada pojedynczej odpowiedzialności

text: Obecnie refaktoryzuję aplikację, która okresowo pobiera zawartość z różnych źródeł (http, ftp, sql itp.). Istnieje harmonogram, który kontroluje godziny, w których aplikacja może być aktywna. Na przykład może pobierać treści między 8 rano a 16 wieczorem. Aplikacja została napisana w języku obiektowym (C#). Oto ogólny projekt, który wymyśliłem w mojej pierwszej iteracji: ![Projekt pierwszej iteracji](http://i.stack.imgur.com/aincc.png) Klasa Scheduler będzie odpowiedzialna za przestrzeganie ogólnego harmonogramu. Rozpoczyna pobieranie na początku zaplanowanego okresu i zatrzymuje je na końcu. Harmonogram zawiera szereg implementacji ITask, z których każda ma swój własny fragment do pobrania. Stworzyłem abstrakcyjną implementację klasy bazowej, która okresowo wywołuje chronioną metodę abstrakcyjną "StartDownload". Podklasy Task zaimplementują tylko tę metodę i nie będą musiały martwić się o czas i planowanie. Na razie w porządku. Ale podczas TDD z klasą bazową Task zdałem sobie sprawę, że w rzeczywistości trudno było kpić z zachowania StartDownload. Gdy zegar zadania zostanie odliczony, powinien wywołać StartDownload tylko wtedy, gdy zakończył poprzednią iterację pobierania. Ale ponieważ są to szczegóły implementacji, trudno jest kpić. To sprawiło, że zacząłem się zastanawiać, czy klasa Task w rzeczywistości nie narusza zasady pojedynczej odpowiedzialności. W końcu dba o cykliczne wywoływanie StartDownload. A za faktyczne pobieranie odpowiada metoda StartDownload. Wymyśliłem więc bardziej oddzielny projekt: ![Projekt drugiej iteracji](http://i.stack.imgur.com/VVIA3.png) Tutaj odpowiedzialność klasy Task ogranicza się do okresowego wywoływania klienta. A jedyną odpowiedzialnością Klienta jest pobieranie treści. Testowanie klasy Task będzie teraz łatwiejsze, ponieważ mogę po prostu wstrzyknąć makiety IDownloadClient. Zadanie i pobieranie mają relację 1 do 1. Tak więc każde zadanie wykonuje jedno pobranie, że tak powiem. W praktyce wszystkie instancje Task zostaną dodane do jednej instancji Schedulera i stamtąd będą uruchamiane/zatrzymywane. Zastanawiam się, czy rzeczywiście jest to bardziej przejrzysty projekt... Klasa Task wydaje się teraz nieco dziwna, ponieważ jest tylko pojedynczą implementacją bez żadnych podklas. Co myślicie?


title: Jak mogę rozwiązać ten potencjalny luk w zabezpieczeniach (dotyczący oszczędzania zasobów REST)?

text: Mam tabelę bazy danych plików z następującymi kolumnami: `Id (PK), Nazwa pliku` I tabelę bazy danych dokumentu z następującymi kolumnami: `Id (PK), Nazwa, Opis, FileId (FK)` Kiedy użytkownik chce " zapisz” dokument, mój JavaScript po stronie klienta robi to w dwóch szybkich wywołaniach AJAX (w celu zachowania RESTful i zapisania każdego zasobu osobno): 1. Przesyła wybrany plik. Spowoduje to utworzenie rekordu pliku w bazie danych, a klient otrzyma w odpowiedzi jego identyfikator. 2. Zapisuje Dokument z podanymi danymi (Nazwa, Identyfikator Pliku itp.). Spowoduje to utworzenie/zaktualizowanie rekordu dokumentu w bazie danych. Mam skonfigurowaną usługę, która pozwala użytkownikowi pobrać plik, pod warunkiem, że określi jego identyfikator. Jednak w usłudze istnieje pewna logika bezpieczeństwa, która sprawdza, czy użytkownik ma _uprawnienie_ do pobrania pliku, sprawdzając, czy jest z nim powiązana co najmniej jedna „jednostka” bazy danych, do której użytkownik ma dostęp. Na przykład Dokument będzie jednym z takich podmiotów. Jeśli więc użytkownik może uzyskać dostęp do określonego dokumentu (określonego przez pewne reguły biznesowe - ale powiedzmy, że wielu użytkowników może uzyskać dostęp do tego samego dokumentu), może pobrać jego plik. Na pierwszy rzut oka wszystko wydaje się w porządku, **ale jest problem**. Dwuetapowy proces zapisywania dokumentu to JavaScript po stronie klienta, więc haker może łatwo zmodyfikować krok 2, tak aby dowolny dowolny identyfikator pliku był wysyłany do serwera. Spowoduje to skojarzenie tego pliku z dokumentem, co oznacza, że później użytkownik będzie miał uprawnienia do jego pobrania! W jaki sposób mogę rozwiązać ten problem?


title: Czy powinienem samodzielnie zarządzać uwierzytelnianiem, jeśli alternatywa jest bardzo niska w użyteczności i już zarządzam rolami?

text: Jako mały wewnętrzny dział deweloperski mamy doświadczenie tylko w tworzeniu aplikacji dla naszego intranetu. Do zarządzania kontami użytkowników używamy **istniejącego Active Directory**. Zawiera konta wszystkich pracowników firmy oraz wielu (ale nie wszystkich) partnerów biznesowych, z którymi współpracujemy. Teraz najwyższe kierownictwo chce aplikacji do wymiany technologii, a ja jestem głównym deweloperem nowego projektu. Zasadniczo jest to baza danych zawierająca nasze know-how, wraz z webowym frontendem. Nasi pracownicy, współpracujący z nami partnerzy biznesowi oraz osoby, które chcą zostać naszymi współpracującymi partnerami biznesowymi, powinni mieć do niego dostęp i zobaczyć, jakimi dysponujemy technologiami, aby mogli za nich handlować z działem, który jest ich właścicielem. Technologie nie są opatentowane, ale są bardzo cenne dla konkurencji, więc szefowie działów są **paranoikami, że ktoś nieuprawniony uzyskał dostęp** do ich opisu technologii. To ograniczenie wymaga koszmarnie skomplikowanego wielowymiarowego modelu hybrydowego RBAC. Ponieważ Active Directory nie zawiera nawet wszystkich informacji potrzebnych do wywnioskowania ról, których używam, będę musiał **zarządzać rolami** oraz wyjątkami przyznanymi dla poszczególnych technologii **w moim systemie**. Obecny plan zakłada użycie Active Directory do uwierzytelniania. Spowoduje to wielogodzinny proces rejestracji dla naszych partnerów biznesowych, w którym właściciel bazy danych będzie musiał ręcznie utworzyć loginy w naszym Active Directory i przesłać im dane uwierzytelniające. Jeśli **zarządzam loginami we własnym systemie** , moglibyśmy znacznie poprawić użyteczność**, na przykład pozwalając ludziom mieć aktywne (ale nieuprzywilejowane) konto, gdy tylko się zarejestrują. Wydaje mi się, że po tym, jak i tak mam tabelę użytkowników w bazie danych (i zarządzam brzydkimi szczegółami, takimi jak przechowywanie historycznych identyfikatorów użytkowników, aby odzyskane identyfikatory użytkowników w Active Directory nie otrzymały nieoczekiwanie uprawnień do przeglądania czyichś technologii), * *Dodatkowa złożoność** wynikająca z implementacji funkcji uwierzytelniania będzie minimalna. Dlatego zaczynam skłaniać się ku samodzielnemu zarządzaniu logowaniem użytkowników i całkowicie zapominam o AD. Z drugiej strony widzę kilka **powodów, aby pozostać przy Active Directory**. Po pierwsze, konwencjonalna mądrość, którą słyszałem od doświadczonych programistów, brzmi: **nie samodzielnie zarządzaj użytkownikami**, jeśli możesz tego uniknąć. Po drugie, mamy **kod, którego mogę ponownie użyć** do połączenia z active directory, podczas gdy ja musiałbym zakodować uwierzytelnianie w systemie (a mój szef jasno stwierdził, że dostarczenie projektu na czas ma znacznie wyższy priorytet niż dostarczanie systemu o wysokiej użyteczności). Po trzecie, nie jestem bardzo doświadczonym programistą (jest to moja pierwsza pozycja lidera) i nigdy wcześniej nie zajmowałem się zarządzaniem użytkownikami, więc obawiam się, że **przeoczam** kilka ważnych powodów do korzystania z AD lub że nie doceniam ilość pracy pozostała do wykonania własnego uwierzytelnienia. _**Chciałbym wiedzieć, czy jest więcej powodów, dla których warto skorzystać z mechanizmu uwierzytelniania AD_**. W szczególności, jeśli chcę wykonać własne uwierzytelnianie, co musiałbym wdrożyć oprócz bezpiecznego połączenia dla ekranu logowania (którego i tak bym potrzebował, nawet jeśli przenoszę tylko pw do AD), wyszukanie skrótu hasła i mechanizm odzyskiwania hasła (który prawdopodobnie będzie obejmował ręczną weryfikację tożsamości, więc nie ma potrzeby stosowania skomplikowanych rozwiązań typu mTAN)? A jeśli masz doświadczenie z takimi krytycznymi dla bezpieczeństwa systemami, którego byś użył i dlaczego? * * * _Aktualizacja_ Kiedy pisałem pytanie, mój szef powiedział mi, że uzyskam dostęp tylko do odczytu do Active Directory i że wszyscy użytkownicy mojego systemu będą przestrzegać wewnętrznych procedur zarządzania kontami (takich jak wyświetlanie identyfikator zdjęcia do naszej sekretarki, aby zresetować zapomniane hasło). Nie miałbym możliwości tworzenia własnych grup. Ale po wyjaśnieniu sytuacji mojemu szefowi i administratorowi AD uzyskałem pozwolenie na zapisywanie kont moich użytkowników w oddzielnej jednostce organizacyjnej i zarządzanie nimi według własnego uznania. Więc teraz mogę korzystać z Active Directory i nadal oferować zadowalające wrażenia użytkownika. Mimo to, jeśli masz odpowiedź, która odnosi się do mojego pytania pod starymi ograniczeniami, zapisz ją, chciałbym usłyszeć więcej na ten temat, nawet jeśli moje zainteresowania są teraz tylko akademickie.


title: Czym dokładnie jest przetwarzanie rozproszone?

text: Jestem więc na ostatnim roku studiów i kilka tygodni temu przeprowadziłem wywiad w firmie Microsoft na stanowisko dla początkujących pracowników SDE. Podczas gdy większość wywiadów (spośród wszystkich 7) dotyczyła ogólnych zasad struktur danych i algorytmów, jeden z ankieterów zapytał mnie, czy wiem coś o obliczeniach rozproszonych. Odpowiedziałem, że chociaż nie miałem kursu na temat „przetwarzania rozproszonego” per se, chciałbym zająć się tym pytaniem. Zadał pytanie dotyczące muteksów i semaforów, które były omawiane w naszym kursie dotyczącym systemów operacyjnych, i pomyślałem, że chodzi bardziej o równoległość i współbieżność niż o przetwarzanie rozproszone. Po przejściu tego doświadczenia zastanawiam się, co dokładnie stanowi przetwarzanie rozproszone? Czy wiele równoległych wątków próbujących zsynchronizować się w celu uzyskania dostępu do zasobu stanowi problem w dziedzinie przetwarzania rozproszonego?


title: Podstawowe pytanie z pamięcią memcached

text: Czytałem o rozproszonym haszowaniu. Dowiedziałem się, że do dystrybucji kluczy między maszynami z pamięcią podręczną używa się spójnego haszowania. Dowiedziałem się również, że klucz jest duplikowany w wielu pamięciach podręcznych, aby poradzić sobie z awarią hostów pamięci podręcznej. Ale to, co spotkałem na memcached, nie wydaje się być zgodne z tym wszystkim. Przeczytałem, że wszystkie węzły pamięci podręcznej są od siebie niezależne i że jeśli pamięć podręczna ulegnie uszkodzeniu, żądania trafiają do DB. Nie ma wzmianki o braku pamięci podręcznej na hoście, co powoduje, że host kieruje żądanie do innego hosta, który może trzymać klucz lub jest bliżej klucza. Czy możesz mi powiedzieć, jak te dwa pasują do siebie? Czy memcached jest bardzo wstępną formą rozproszonego haszowania, która nie ma zbytniego wyrafinowania?


title: Jak należy rozdzielić model i kontroler między podwidokami widoku?

text: W wielu bibliotekach interfejsu użytkownika mamy koncepcję widoków i podwidoków. więc zgodnie ze wzorcem MVC każdy widok powinien aktualizować model, gdy tylko się zmieni. Do tego widok powinien mieć odniesienie do swojego modelu. Jeśli mamy widok podrzędny i wykonuje on pewne obliczenia, to czy ten model powinien być również przekazany do widoku podrzędnego, czy część tego modelu odnosząca się do tego widoku podrzędnego powinna zostać przekazana do tego widoku podrzędnego. i Powiedz, kiedy podejmujemy pewne działania, czy powinien istnieć oddzielny kontroler dla widoku podrzędnego, czy działania na widoku podrzędnym powinny być obsługiwane przez kontroler widoku nadrzędnego?


title: Dobre praktyki podczas pisania parsera dla standardowego formatu pliku (takiego jak ePub)

text: Rozważam napisanie oprogramowania czytnika Androida, które może czytać ePub i wyświetlać je. Sprawdziłem standardowe dokumenty ePub. Zawierają one jednak wiele informacji. Zastanawiam się więc, jak wygląda proces wdrażania standardu formatu pliku. Jakie są kroki, aby uzyskać działającą implementację bez przechodzenia przez części standardu? Czy są jakieś najlepsze praktyki? Czy można w ogóle zaprogramować to samo w rozsądnym czasie? Z tego, co już się dowiedziałem, ePub to w zasadzie archiwum zip. Oznacza to, że prawdopodobnie mógłbym użyć zlib do dekompresji. Treść jest w XHTML i CSS, więc uważam, że powinno być możliwe wyświetlanie jej w WebView. Brakujące części to pisanie kodu, który może odczytywać metadane i zarządzać niestandardowymi rozszerzeniami XHTML.


title: Programowanie według użycia

text: Programuję od 15 lat i często czytam w Internecie, że wydaje się, że wiele osób planuje swoje obiekty i sposób ich interakcji oraz potrzebne dane, a to wydaje się kształtować wyeksponowany interfejs. Jednak uważam, że mój mózg działa od użycia wstecz do struktury i danych. **Zastanawiam się, czy jest to powszechne i czy są jakieś plusy/minusy tego podejścia, które każdy może wymyślić, i jaki jest twój sposób myślenia, gdy nowe zadanie jest rzucane w twoją stronę. Chcę zbadać inne pomysły i podejścia w sposobie myślenia, ale znam tylko swój sposób myślenia i robię to od tak dawna. Czy to jest to, co wszyscy robią?** Na przykład, gdybym miał zrobić klasę zszywacza, najpierw napisałbym użycie, które miałoby dla mnie sens i jak chciałbym go użyć, a następnie wypełniłbym to użycie. Pierwszą rzeczą, którą robię, jest otwieranie notatnika ++ i wpisywanie: Stapler stapler = new Stapler (200); zszywacz.Załaduj(200); zszywacz.Zszywki (dokumenty); zszywacz.Odcinanie(); int stapleCount = zszywacz.StaplerCount; Patrząc na to, mówi mi, że mój zszywacz potrzebuje tych funkcji/właściwości i mogę wywnioskować, jakie są parametry, patrząc na nie przez większość czasu. Wydaje mi się, że łatwiej jest mi myśleć o użyciu kodu w ten sposób, niż myśleć o abstrakcyjnym obiekcie i całej jego funkcjonalności przed napisaniem jakiegokolwiek kodu. Zapisanie użycia często sprawia, że abstrakcyjny obiekt staje się realny w moim umyśle i jest łatwiejszy do uchwycenia.


title: Uprawnienia Windows dla programistów?

text: Pracuję w firmie z listy Fortune 500 jako programista Windows w dziale R&D. Korporacyjny dział IT przygotowuje się obecnie do wdrożenia systemu Windows 7 w całej firmie i w ramach tego chcą całkowicie zablokować prawa administratora na wszystkich komputerach (w tym na naszych stacjach roboczych). Otrzymałem zadanie współpracy z nimi, aby przejście było tak płynne, jak to tylko możliwe. Mam szczęście. Chciałbym wiedzieć, czy istnieją jakieś opublikowane lub inne bardzo szanowane zasoby, których mogę użyć, aby: 1. dowiedzieć się, gdzie narysować linię na piasku, 2. wzmocnić swoją pozycję. Osobiście uważam, że zajmujemy się badaniami i rozwojem, a naszym zadaniem jest robienie rzeczy, które są „niestandardowe”. Dlatego potrzebujemy uprawnień administratora. Jednak po rozpoczęciu mojej kariery jako administrator systemu Windows jestem świadomy ich celów i tego, co muszą osiągnąć. To, co muszę odkryć i wykonać kopię zapasową, to sposób na zbudowanie środowiska w taki sposób, aby zarówno dział IT, jak i dział badawczo-rozwojowy mogły z nim żyć i nadal produktywnie wykonywać swoją pracę. Programowanie maszyn wirtualnych z lokalnymi prawami administratora na pewno bardzo pomoże, ale nie we wszystkich przypadkach, ponieważ współpracujemy z wieloma niestandardowymi urządzeniami. CIO, który wprowadza te zmiany, jest zdecydowanie typem „czystego IT”, który ma ograniczoną wiedzę na temat procesu rozwoju, więc potrzebuję kilku referencji, którymi można by się podzielić z kimś takim. Nie zamierzam zbierać wielu osobistych opinii (z których wiele już zostało tutaj udostępnionych), naprawdę potrzebuję białych ksiąg, artykułów z czasopism, prac naukowych itp., Aby przedstawić mocne argumenty kierownictwu wyższego szczebla.


title: implikacje dużej klasy częściowej

text: Piszę warstwę pośrednią między kodem dostawcy a logiką biznesową firmy. Częścią ćwiczenia jest odizolowanie naszej logiki biznesowej od typów dostawców, aby ułatwić zamianę kodu dostawcy. W związku z tym piszę wiele metod rozszerzających, które wykonują translację do iz. Umieszczam te rozszerzenia w publicznych statycznych klasach częściowych. Dla celów organizacyjnych i po prostu dlatego, że dla statycznych metod rozszerzeń sama klasa nie ma znaczenia (czy jest to poprawne założenie btw?) EDIT: Aby było jasne, tworzę wiele różnych odpowiednio nazwanych plików źródłowych, z których wszystkie zostały zaimplementowane częściowa klasa Moje pytanie brzmi, ile kodu jest za dużo dla częściowej klasy. Mogę sobie wyobrazić posiadanie setek metod w jednej klasie (w pewnym momencie). Kiedy staje się to obciążeniem dla kompilatora i warstwy CIL? Czy naprawdę istnieje limit, jeśli te klasy częściowe nie mają stanu/pamięci?


title: Czy B-drzewa i inne struktury danych staną się przestarzałe wraz z pojawieniem się dysków SSD?

text: Wiele (być może większość?) aplikacji bazodanowych używa dziś B-Trees i odmian do przechowywania danych, ponieważ ta struktura danych optymalizuje operacje odczytu, zapisu i wyszukiwania na dysku twardym (a te operacje z kolei odgrywają ważną rolę w ogólnej wydajności bazy danych). Czy dyski półprzewodnikowe (SSD) powinny całkowicie zastąpić tradycyjne dyski twarde (HDD), czy możemy powiedzieć, że B-drzewa i ich odmiany staną się przestarzałe, dając miejsce na struktury danych, które działają wydajniej na pamięci bezpośredniego dostępu? Jeśli tak, to jakie będą te struktury? (np. tablice mieszające, drzewa AVL)


title: Dlaczego frameworki/biblioteki JavaScript posiadają funkcje, które już istnieją w czystym JavaScript?

text: Zastanawiam się, dlaczego frameworki/biblioteki mają swoich własnych pomocników, mimo że istnieją już natywnie. Weźmy jQuery i AngularJS. Mają swoje własne funkcje iteracyjne `każdy`: * jQuery.each() * angular.forEach() Ale mamy `Array.prototype.forEach`. Podobnie, * jQuery.parseJSON() * angular.fromJson() Ale mamy funkcję `JSON.parse()` w waniliowym JavaScript.


title: Konfigurowanie prostego środowiska Ruby\Rails

text: Pochodzę ze środowiska .NET i rozpoczynam swoją podróż do środowiska Mac OSX\Ruby\Rails. Wiele zasobów, które znalazłem, takich jak ten, ma od 5 do 10 kroków do skonfigurowania środowiska Ruby\Rails. Moje pytanie brzmi, jakie są minimalne wymagania do skonfigurowania działającego środowiska Ruby\Rails? Czy mogę użyć RailsInstaller i skończyć? Czy powinienem zainstalować wszystkie narzędzia, które sugeruje powyższy link (XQuartz, Homebrew, RVM itp.), Nawet jeśli tak naprawdę nie wiem, co robią? W tej chwili nie płacę mi za to, ale jestem również ciekawy, co robią profesjonalni programiści Rails podczas konfigurowania środowiska. Jestem również bardziej zaniepokojony _dlaczego_ jak w _dlaczego nie powinienem używać RailsInstaller_ lub _dlaczego powinienem zainstalować RVM_.


title: Konwersja kodu Fortran 77 do C#

text: Próbuję przekonwertować program Fortan77 do C#. Mam podprogram z około 650 liniami kodu i przerażającymi instrukcjami GOTO w każdym miejscu. Mam dużo problemów z wizualizacją przebiegu podprogramu, aby dowiedzieć się, co on robi. Czy jest ktoś z doświadczeniem w tego typu sprawach, który mógłby mi udzielić porady, jak uzyskać przegląd tego podprogramu? Czy są dostępne narzędzia przyspieszające lub ułatwiające tego typu konwersję?


title: Klasa konfiguracji/Struktura: Wzorzec czy Anti-Wzorzec? Alternatywy?

text: Jeśli dodasz nowe opcje konfiguracyjne do programu, często może mieć mnóstwo efektów, jeśli chodzi o dostarczanie opcji tam, gdzie trzeba na nie zareagować. Są trzy podstawowe sposoby radzenia sobie z tym, o których jestem świadomy: 1. Przekaż wszystkie ustawienia konfiguracyjne do tych części programu, które wymagają ich jawnie jako prymitywów. To najbardziej wyraźny sposób, który najbardziej rozdziela rzeczy. Minusem jest to, że jest to zarówno gadatliwe, jak i kruche. 2. Ustaw najczęściej używane ustawienia konfiguracji jako globalne/statyczne. Jest to najprostszy sposób, ale wprowadza działanie na odległość, utrudnia testowalność i zakłada, że konfiguracja jest naprawdę globalna (że w danym momencie potrzebna jest tylko jedna konfiguracja). 3. Utwórz klasę/strukturę konfiguracyjną, która zawiera wszystkie opcje konfiguracyjne dla całego programu lub dla każdego głównego problemu w programie, a następnie przekaż ją w sposób jawny. Jest to mniej wyraźne niż (1), ale bardziej wyraźne niż (2). Jeśli chcesz zmienić ustawienie tylko dla jednego wywołania funkcji, możesz sklonować obiekt config i zmienić tę jedną wartość. Jest to przydatne zarówno w testowaniu, jak iw praktyce. Jednak nadal potencjalnie przekazujesz mnóstwo informacji do funkcji, której nie potrzebuje, a zmiana wartości w klasie/strukturze konfiguracji może nadal powodować działanie na odległość. Czy rozważyłbyś (3) wzór czy anty-wzorzec? Jeśli to jest antywzor, co zamiast tego robisz?


title: Jak nauczyć się matematyki kryjącej się za kodem?

text: Niedawno zająłem się programowaniem. (Chociaż wiem, że liczba przeczytanych książek nie określa twoich kompetencji programistycznych ani zdolności, wystarczy narysować „mapę” tego, gdzie jestem pod względem treści, które znam…) Ukończyłem książki: Python 3 For Absolute Beginners Pro Python Python Standard Library by Example Piękny kod Zwinne tworzenie stron internetowych z Railsami i jestem w połowie drogi do programowania Ruby. Napisałem wiele małych programów (jeden, który odnajduje, które pliki zostały zaktualizowane i usunięte w katalogu, taki, który porównuje wartości wielu graczy w baseball fantasy, a także niektóre gry tekstowe i wiele innych). Oczywiście, ponieważ nie jestem jakimś cudownym dzieckiem, nie mogę uczęszczać na formalny kurs informatyki przed liceum. Naprawdę chcę nauczyć się informatyki, aby poszerzyć swoją wiedzę na temat kodu i sposobu jego działania. Naprawdę zainteresowałem się częścią matematyczną po przeczytaniu kodu źródłowego modułu random Pythona. Czy jest miejsce, w którym mógłbym za darmo uczyć się CS, czyli programowania matematyki online, na poziomie, który byłby przynajmniej częściowo zrozumiały dla osoby w moim wieku?


title: Legalne użycie botów IRC

text: Ostatnio widziałem pytanie na SE o to, jak zrobić to a to podczas tworzenia bota IRC. Jedyne znane mi użycie botów IRC to zalewanie wiadomości i spamowanie. Poszukałem w Google ciągu, którego użyłem jako mojego tytułu i zostałem doprowadzony do **artykułu**, który otworzył oczy na to, co każdy zły bot IRC może zrobić, ale nie widziałem żadnego wyjaśnienia życzliwego ( lub neutralne) użycie bota IRC. Czy jest jakiś? Jeśli tak, do czego służą?


title: Czy LGPL mi na to pozwala?

text: Planuję stworzyć komercyjne oprogramowanie z wykorzystaniem oprogramowania LGPL. W oprogramowaniu LGPL, którego używam, niektóre funkcje w klasie nie są w pełni zaimplementowane. Chcę zmodyfikować kod LGPL tak, aby klasa i niezaimplementowane funkcje były widoczne poza biblioteką dll przez dodanie dllexport przed klasą i dodanie wirtualnego słowa kluczowego przed funkcją. Następnie planuję zaimplementować te funkcje w moim autorskim oprogramowaniu. Jestem gotowy do rozpowszechniania zmodyfikowanego kodu LGPL, ale nie prawnie zastrzeżonego oprogramowania, które implementuje funkcje tak, jak chcę. Czy to narusza warunki LGPL?


title: Wydawanie poprawek i aktualizacji użytkownikom usług internetowych

text: Napisałem jeden serwis internetowy w Javie. Jest już na żywo (działa i działa). W trakcie rozwoju posiadam SVN (repozytorium) + Jira do obsługi zadań + Maven do budowania usług webowych. Teraz mam małą aktualizację dla moich usług internetowych i stworzyłem to zadanie w Jira i zatwierdziłem pliki w svn z uwzględnieniem Jira-Id po wszystkich testach itp. Powiedzmy, że moje usługi sieciowe są używane przez 10 klientów, nie daliśmy nasz kod źródłowy do nich. Czy są dostępne jakieś kroki/procedury do wydania poprawki/aktualizacji? Czy istnieje sposób na renderowanie/tworzenie dziennika zmian w czasie kompilacji (maven)? Jak zarządzać dziennikiem zmian dla wszystkich wersji lub aktualizacji poprawek w czasie kompilacji? (Automatycznie)


title: Czy powinienem wrócić do college'u i ukończyć studia ze słabym GPA, czy spróbować wskoczyć na stanowisko rozwojowe na poziomie podstawowym?

text: Uczęszczałem kiedyś do 10 najlepszych amerykańskich uniwersytetów, ale obecnie nie chodzę do szkoły z kilku różnych powodów. Najważniejszym z nich jest to, że bardzo słabo zaliczyłem dwa semestry, a jeden z nich nawet oblałem (dostałem dwa F), co spowodowało, że dostałem automatyczne zawieszenie. Moja specjalizacja to nie CS, ale matematyka. W tej chwili jestem w marynacie. Po zawieszeniu dostałem pracę w niszowej firmie informatycznej w okolicy. Jestem zatrudniony jako coś w rodzaju generalisty IT; moje główne obowiązki to administracja/sieciowanie systemów Windows, ale zajmuję się również programowaniem na Androida, iOS i .NET. Udostępniłem kilka aplikacji do sklepu z aplikacjami pod moim imieniem i nazwą mojej firmy, a także wykonaliśmy pracę dla kilku dużych klientów. Zacząłem pracę w swojej pracy około 1,5 roku temu i jestem trochę szczęśliwie zatrudniony, ale nie uważam tego za długoterminową, ponieważ jest to mała firma z niewielkimi możliwościami rozwoju. Chciałbym przeprowadzić się do Kalifornii, a zwłaszcza do Bay Area, aby znaleźć pracę w bardziej renomowanej lub ekscytującej firmie, nawet za niższą stawkę wynagrodzenia, ale nie jestem pewien, czy powinienem to zrobić, czy spróbować wrócić do szkoła. Gdybym wrócił do szkoły, ukończenie szkoły zajęłoby 1-1,5 roku i trochę $. Najlepszy scenariusz, który ukończyłbym z GPA 2,9 lub 3,0. Jest to szkoła w pierwszej dziesiątce, ale to kiepski GPA. Jeśli nie wrócę do szkoły, będę dziedziną, w której większość ludzi ma stopnie naukowe, bez dyplomu. Jeśli coś pójdzie nie tak, mogę być naprawdę spieprzony, ponieważ czuję, że bez dyplomu nie dostanę szacunku. Z drugiej strony naprawdę chciałbym rozpocząć pracę w terenie i poważniej podejść do opracowywania dobrych praktyk programistycznych, uczenia się nowych języków/frameworków i pracy z ludźmi, którzy wiedzą o wiele więcej niż ja, abym mógł się uczyć i rozwijać jako programista i w końcu zrobić swoje. Zasadniczo zastanawiam się: 1. Czy powinienem po prostu wrócić do szkoły? Ile waży zła reputacja GPA / dobra w szkole? A co z faktem, że jestem specjalistą z matematyki, a nie z CS (nigdy nie brałem udziału w kursie CS)? 2. Czy moje umiejętności ogólne dobrze wróżą mi znalezienie pracy na starcie w Bay Area? 3. Jeśli nie (2), czy powinienem skulić się i skupić na tworzeniu naprawdę dobrych (lub kilku przeciętnych) aplikacji na iOS? Aplikacje Android? itd. 4. Jak _Ty_ byś spojrzał na kogoś, kto świetnie sobie radził w HS, trochę wygłupiał się w college'u i ostatecznie zrezygnował i zaczął się rozwijać?


title: Jakie struktury internetowe mogą ładować inne aplikacje internetowe w czasie wykonywania?

text: Nie jestem pewien, jak to wyrazić, ale w asp.net istnieje pojęcie „aplikacji internetowej”, która jest zasadniczo tylko biblioteką DLL, którą ładuje serwer sieciowy. Ma możliwość dynamicznego wykrywania i ładowania kontrolek użytkownika w czasie wykonywania (np. dostosowanego przycisku), używając czegoś zwanego MEF (które może wykrywać biblioteki dll i je ładować). Nie udało mi się znaleźć niczego na temat tego, czy asp.net jest w stanie ładować inne aplikacje internetowe asp.net. Np. aplikacja internetowa A, szuka dowolnych bibliotek dll w folderze i dynamicznie ładuje je jeden po drugim (i być może ładuje ich strony index.html w ramce iframe). Czy można to zrobić w asp.net lub innych frameworkach internetowych?


title: Wdrażanie funkcji zbiorczej aktualizacji i jej kompromisów

text: Funkcja, którą należy wdrożyć, to umożliwienie użytkownikowi wybierania elementów i zbiorczego stosowania aktualizacji danych. Jest to bardzo podobne do możliwości JIRA zbiorczej aktualizacji listy wybranych problemów. W moim przypadku: * iteruję po elementach, * i dla każdego elementu po prostu wywołuję istniejącą metodę służącą do indywidualnej aktualizacji elementu. Zwróć uwagę, że nie mogę tego zrobić na poziomie sql (tj. Aktualizacja wsadowa sql), ponieważ logika biznesowa jest w java. Najwyraźniej **dla wydajności** będzie wolniej, biorąc pod uwagę, że użytkownik zdecyduje się zaktualizować wiele elementów, dlatego można oczekiwać, że szybkość = liczba elementów * szybkość transakcji. W efekcie aktualizowanie pozycji pojedynczo powinno przebiegać z taką samą szybkością, jak aktualizacja zbiorcza listy zawierającej jeden element. To jest w porządku, ponieważ **to kompromis**. Moja **inna obawa** jest jednak taka: metoda używana do indywidualnej aktualizacji pozostanie niezmieniona i będzie po prostu wywoływana przez aktualizację zbiorczą wiele razy, zgodnie z liczbą wybranych elementów; ta metoda **uzyskuje blokady** do zaangażowanych tabel, dopóki nie zakończy transakcji. W efekcie spowoduje to blokowanie przez długi czas, jeśli istnieje wiele elementów do zaktualizowania, dlatego użytkownik nie będzie mógł korzystać ze strony widoku i wyszukiwania, która pobiera z zablokowanych tabel. To **kompromis, który może nie być tak akceptowalny** jak pierwszy punkt, który omówiłem powyżej. Jestem skonfliktowany, biorąc pod uwagę, że naturą istniejącej metody indywidualnej aktualizacji elementu jest tak naprawdę zdobycie zamków i nie przypuszczam, aby dotykać tego kodu. Przypuszczam, że tylko ponownie użyję tej metody, wywołując ją wielokrotnie, aby zaimplementować zbiorczą aktualizację. **Czy ten drugi kompromis jest czymś, czego nie możemy ominąć, czy jest to ważny kompromis?** _Pamiętaj również, że nie jestem ekspertem w transakcjach i blokadach._


title: Jak rozliczasz swoją prokrastynację?

text: Niedawno przestawiłem się z bycia pracownikiem na samozatrudnienie. Jednak przez wiele dni spędzam dużo czasu na bezproduktywności i zwlekaniu. Wiele moich dni wygląda tak, jak kiedyś opisał Joel Spolsky, mija trochę czasu, zanim mogę zacząć pracować. Kiedy byłem jeszcze pracownikiem w firmie, było to częścią moich godzin pracy. Teraz mam problem z tym, że źle się czuję z rozliczaniem klientów za czas, w którym tak naprawdę nie pracuję, ale czekam na rozpoczęcie pracy. Z drugiej strony nie zwlekałbym, gdybym nie pracował dla klientów. Jak radzisz sobie z tym problemem? Czy obciążasz swoich klientów za ten czas?


title: Czy mogę przechowywać kod i używać go później?

text: Programuję od wielu miesięcy. Odkryłem: * Lider mojego zespołu ilustruje mi projekt. * Zaczynam z pustym projektem. * W przypadku wielu typowych zadań (takich jak wywoływanie serwisu internetowego, pokazywanie siatki itp.) albo otwieram konto evernote, albo mój poprzedni projekt. * Kopiuję i wklejam kod i dostosowuję go do moich aktualnych wymagań. * Do zwykłych rzeczy (takich jak alertboxy, przechowywanie plików cookie itp.) używam intellisense. * Po przeczytaniu czegokolwiek innego przechodzę do google, po przeczytaniu wyszukuję i kopiuję kod i dopasowuję go do swoich potrzeb. Kiedy kończę projekt, lider zespołu i klient są zadowoleni, ponieważ zadanie jest wykonane. Ale czy można wygooglować kod, przechowywać go i używać później? Pamiętaj, że rozumiem kod, mogę go później poprawić, ale nie pamiętam nawet właściwych nazw klas. Naprawdę nie pamiętam kodu. Czy robię to dobrze?


title: Clojure: vars, atoms i refs (oh my)

text: także: defs, pola java, agenci Witryna internetowa clojure zawiera dokumentację dotyczącą tych pojęć: * Vars * Atomy * Referencje * Agenci Rozumiem słowa, ale nie rozumiem ich _celu/znaczenia_. Kiedy powinienem / skąd mam wiedzieć, kiedy ich używać?


title: Problemy z projektowaniem platformy

text: Załóżmy, że projektuję platformę na platformie (powiedzmy Java, Win32 lub .NET), która składa się z różnych warstw, takich jak baza danych, interfejs użytkownika, chmura itp. Teraz każdy zespół pracowałby nad stworzeniem swojego produktu, powiedzmy, że baza danych jest jak najlepsza i mniej skupiona na ich relacje z innymi zespołami, co skutkuje różnymi problemami podczas ich integracji. Oto moje pytania, aby uzyskać stabilną i wolną od błędów platformę: 1. W jaki sposób można zapewnić, że integrując wszystkie warstwy, będzie to mniej narzutu, a także czy istnieje inny sposób na zautomatyzowanie tego procesu? 2. Ponadto, jeśli jeden konkretny zespół korzysta z wywołań API dostarczonych przez inny zespół, a drugi zespół nadal nie jest gotowy na wywołania API, pojawia się DEADLOCK . Jak przejść przez takie sytuacje? 3. Powiedzmy, że chcę monitorować i otrzymywać informacje zwrotne od różnych zespołów na temat ich postępów. Czy jest jakaś automatyzacja dla takich działań?


title: Jaka część informatyki faktycznie koncentruje się na programowaniu?

text: Powodem, dla którego o to pytam, jest to, że kiedy czytam artykuły, takie jak HCI Wikipedii lub raporty na temat sztucznej inteligencji, stwierdzam, że wiele z tego, o czym mówi, to rzeczywista _teoria_ projektu. Czy tego dotyczy większość informatyki? Mówią, że jest różnica między byciem koderem a informatykiem. Czy na tym polega różnica między architektem a rysownikiem?


title: Jakie są niektóre z głównych różnic w zarządzaniu procesami między CGI a nowszymi (lepszymi) technologiami?

text: Wiem, że CGI tworzy nowy proces dla każdego żądania HTTP, które obsługuje, podczas gdy serwlety używają jednego procesu Java do obsługi wielu żądań. Co robią inne technologie (rails, WSGI/django, mod_php, asp.net itp.), aby serwery WWW nie musiały odradzać nowego procesu, nowego żądania HTTP?


title: C++ odpowiednik specyfikacji Sun Java Language Specification i JVM?

text: Czy C++ ma „oficjalny” dokument specyfikacji języka, podobny do Sun/Oracle: http://docs.oracle.com/javase/specs/#6.6.1


title: Co jeśli stwierdzenie wymaga mniej obliczeń?

text: Mam if (!b && c || a && c) //wykonaj a else //... Z powodu wewnętrznej relacji między a, b i c. `!b && c || a && c` **jest równoważne** `(! a && b) || c`. Zastanawiam się tylko czy `(! a && b) || c` być prostsze niż `!b && c || a && c`? Czy możesz to udowodnić? Załóżmy, że prawdopodobieństwo a,b,c bycia Prawdą lub Fałszem jest równe. **Nie pytam, który styl jest lepszy**. **Pytam, które stwierdzenie ma mniejszą złożoność obliczeniową**. Podobnie jak szybkie sortowanie i sortowanie bąbelkowe, które ma mniejszą złożoność obliczeniową. Nie odpowiesz to zależy, jest to związane z kompilatorem i sprzętem, ponieważ niektóre urządzenia mają specjalną instrukcję dla Bubble Sort. Mam nadzieję, że usłyszę nlog(n) i n^2.


title: W jaki sposób dział uczenia się/rozwoju Twojej firmy mógłby najlepiej Ci służyć?

text: Poprzem moje pytanie zastrzeżeniem - nie jestem inżynierem, jestem po prostu kimś, kto pracuje z nimi w pełnym wymiarze godzin, w zakresie uczenia się i rozwoju. Biorąc to pod uwagę, jednym z komentarzy, które regularnie otrzymuję od inżynierów, których mam za zadanie rozwijać, jest to, że czują, że mają rozwiązania (zarówno techniczne, jak i nietechniczne) do rozwoju „wpychane” im w porównaniu z kimkolwiek z mojej dziedziny konsultując się z nimi, aby ustalić, czego naprawdę potrzebują. Więc moje pytanie brzmi – jeśli mógłbyś podać swojej firmie listę 3-5 najważniejszych rzeczy, które mogą zrobić – w klasie lub w innym miejscu – aby rozwinąć znaczące umiejętności, które pomogłyby ci być lepszym inżynierem, lepszym pracownikiem i jednym bardziej prawdopodobne, że zostanie z firmą na dłuższą metę, co spowodowałoby cięcie i dlaczego? Z góry dziękuję za odpowiedzi.


title: Pozyskiwanie danych ze strony internetowej w stabilny i wydajny sposób

text: Niedawno dowiedziałem się, że używanie wyrażenia regularnego do parsowania kodu HTML witryny w celu uzyskania potrzebnych danych nie jest najlepszym sposobem działania. Więc moje pytanie jest proste: Jaki jest zatem najlepszy/najbardziej wydajny i ogólnie stabilny sposób na uzyskanie tych danych? Powinienem zauważyć, że: * Nie ma API * Nie ma innego źródła, z którego mógłbym uzyskać dane (brak baz danych, kanałów itp.) * Nie ma dostępu do plików źródłowych. (Dane z publicznych stron internetowych) * Załóżmy, że dane są zwykłym tekstem, wyświetlanym w tabeli na stronie html. Obecnie używam Pythona w moim projekcie, ale byłoby miłe rozwiązanie/wskazówki niezależne od języka. Poboczne pytanie: jak byś się do tego zabrał, gdy strona jest tworzona przez wywołania Ajax? **EDYTUJ:** W przypadku parsowania HTML wiem, że nie ma stabilnego sposobu na uzyskanie danych. Jak tylko strona się zmieni, twój parser jest gotowy. Co mam na myśli ze stable w tym przypadku to: wydajny sposób parsowania strony, który zawsze daje mi te same wyniki (oczywiście dla tego samego zestawu danych) pod warunkiem, że strona **nie** się nie zmienia.


title: Jak zaimponować pracodawcom swoim CV?

text: Zbudowałem całą witrynę od podstaw w 10 dni, która wygląda profesjonalnie, a witryna jest wyjątkowa. Witryna posiada funkcje takie jak logowanie, wysyłanie e-maili aktywacyjnych, wyszukiwanie tagów/treści (lucence.net), podświetlanie składni (pretify) i diff (jedna z różnic js), znaczniki komentarzy na tej stronie i autouzupełnianie w polu tekstowym (pamiętaj, 10 dni). Napisałem, że mam ponad 5 lat doświadczenia w C# (mógłbym skłamać i powiedzieć więcej, ale sprytni pracodawcy będą wiedzieć, że ma tylko 8 lat, a 1.1 bardzo różni się od tego, z którego korzystamy teraz). Miałem pracodawców WIELOKROTNIE mówili, że szukają kogoś, kto ma większe doświadczenie w C#... wtf. Może nie czytają mojego CV, może w to nie wierzą lub mnie ignorują, bo nie jestem jeszcze absolwentem. Roześmiałem się, kiedy po raz pierwszy przeczytałem Steve'a Yegge'a Pięć podstawowych pytań dotyczących ekranu telefonu, ponieważ wiedziałem o tym wszystkim (chociaż nadal nigdy nie używałem wykresu datastruct ani zbyt wiele o nim nie wiem). Jestem prawie pewien, pod względem kompetencji, mogę wykonać tę pracę. Jestem również przekonany, że nikt nie zauważył, że mam znacznik, diff, autouzupełnianie ani aktywację e-mailem/zapomniałem hasła (oferuję testowe konto użytkownika). Może więc moja witryna/przykładowa praca nie jest imponująca, ponieważ nie zdajesz sobie sprawy, co w niej jest. Krótko mówiąc, wydaje mi się, że nie czytają mojego CV lub nie zauważają mojej strony. Jak zaimponować pracodawcom? PS: Problem w tym, że nie dostaję się na rozmowę kwalifikacyjną. Miałem jeden i zepsułem go, mówiąc zbyt technicznie do premiera, ponieważ byłem zdenerwowany. Pozostałe 25+ miejsc pracy albo nie skontaktowało się ze mną, albo było na tyle uprzejme, aby wysłać e-mail z odrzuceniem.


title: Skoro niezmienne obiekty są dobre, to dlaczego ludzie tworzą zmienne obiekty?

text: Skoro obiekty immutable¹ są dobre, proste i oferują korzyści w programowaniu współbieżnym, dlaczego programiści wciąż tworzą zmienne obiekty²? Mam czteroletnie doświadczenie w programowaniu w Javie i jak widzę, pierwszą rzeczą, jaką ludzie robią po stworzeniu klasy, jest generowanie getterów i seterów w IDE (w ten sposób czyniąc je zmiennymi). Czy brakuje świadomości, czy w większości scenariuszy możemy używać zmiennych obiektów? * * * ¹ Obiekt niezmienny to obiekt, którego stan nie może być modyfikowany po utworzeniu. ² Obiekt mutowalny to obiekt, który po utworzeniu można modyfikować.


title: znajdowanie domów w promieniu

text: Podczas wywiadu poproszono mnie o następujące pytania: Aplikacja do obsługi nieruchomości, która zawiera listę wszystkich domów, które są obecnie na rynku (tj. na sprzedaż) w określonej odległości (powiedzmy na przykład, że użytkownik chce znaleźć wszystkie domy w promieniu 20 mil), jak zaprojektowałbyś swoją aplikację (zarówno strukturę danych, jak i algorytm) do budowy tego typu usługi? Jakieś pomysły? Jak byś to zaimplementował? Powiedziałem mu, że nie wiem, ponieważ nigdy wcześniej nie robiłem żadnych rzeczy związanych z geometrią.


title: Dlaczego języki programowania nie oddzielają stylu od treści?

text: Mój idealny język programowania pozwoliłby mi zdefiniować niestandardowy css, który ułożyłby kod zgodnie z moimi specyfikacjami rozmieszczenia kolumn / spacji / nawiasów itp. I zaewidencjonowałby tylko zawartość. Każdy dostaje swój własny layout – dzięki temu unikamy długich, wietrznych dyskusji o stylach. Język, który mógłby wykonać refaktoryzację nazw zmiennych / nazw funkcji zgodnie z moimi wymaganiami dotyczącymi stylu, byłby lepszy. Inny, który mógłby przetłumaczyć na lokalny język, byłby niesamowity! Czy istnieje jeden taki wariant językowy C/C++? Jakie są tego negatywy?


title: Klasyfikacja transakcji. Sztuczna inteligencja

text: Do projektu muszę zaklasyfikować listę transakcji bankowych na podstawie ich opisu. Załóżmy, że mam 2 kategorie: zdrowie i rozrywka. Początkowo transakcje będą zawierały podstawowe informacje: datę i godzinę, kwotę oraz opis nadany przez użytkownika. Przykład: Transakcja 1: 17.09.2012 12:23:02 - 45.32$ - "opłaty za leki" Transakcja 2: 18.09.2012 13:56:54 - 8.99$ - "bilet na film" Transakcja 3: 18.09.2012 19:46:37 - 299,45$ - "wizyta u dentysty" Transakcja 4: 19.09.2012 06:50:17 - 45,32$ - "zakupy gier wideo" Pomysł polega na tym, aby użyć tego opisu do klasyfikacji transakcja. 1 i 3 trafiłyby do kategorii „zdrowie”, a 2 i 4 do kategorii „rozrywka”. W tym celu chcę użyć interfejsu API przewidywania Google. W rzeczywistości mam 7 różnych kategorii, a dla każdej z nich wiele słów kluczowych związanych z tą kategorią. Część wykorzystałbym do treningu, a część do testów. Czy to w ogóle możliwe? Chodzi mi o określenie kategorii podając kilka słów? Ponadto liczba słów nie zawsze jest taka sama w każdej transakcji. Dzięki za pomoc lub wskazówki! Bardzo doceniane Możliwe rozwiązanie: https://developers.google.com/prediction/docs/hello_world?hl=es#theproblem


title: czy OOP jest dominującym modelem programowania w świecie rzeczywistym?

text: ** Przedmioty Nigdy? No cóż, prawie nigdy** W sekcji VIEWPOINT w Communications of the ACM znalazłem interesujący artykuł zatytułowany „Obiekty nigdy? Cóż, prawie nigdy”. To radykalnie inna perspektywa niż obiekty-najpierw lub obiekty-późne. Sugeruje „przedmioty-nigdy”, a może „przedmioty-szkoła podyplomowa”. Autor opowiedział o OOP i zadał pytanie o to, jak OOP jest używany w rzeczywistych środowiskach programistycznych. Uważa, że OOP nie jest dominującym modelem programowania. Na przykład, twierdzi, 70% programów jest wykonywanych dla systemów wbudowanych, w których OOP nie jest tak naprawdę odpowiednie. Kiedy niektórzy profesorowie na uniwersytetach chcą rozmawiać o korzyściach z OOP, mówią o ponownym wykorzystaniu kodu. Jako kolejny przykład, ponownie twierdzi, że tak nie jest w prawdziwym świecie. ponowne użycie kodu jest trudniejsze niż to, co twierdzi się na uniwersytetach. Twierdzę, że korzystanie z OOP nie jest tak powszechne, jak większość ludzi sądzi, że nie jest tak skuteczne, jak twierdzą jego zwolennicy, a zatem, że jego centralne miejsce w programie nauczania CS nie jest uzasadnione. Interesujące jest dla mnie, jak myślą o tym ludzie z przepełnieniem stosu? Czy OOP jest dominującym modelem programowania z punktu widzenia programistów? PS: Pytałem o to na StackOverflow, ale ktoś sugeruje, że należy o to zapytać tutaj. mam nadzieję, że uda mi się znaleźć dobry wynik :-) PS2: Jeśli powinienem wybrać/nauczyć się/użyć tylko jednego podejścia, czy jest to OOP, czy nie? Dlaczego?


title: Opcje licencjonowania dla martwego projektu

text: Obecnie pracuję nad projektem, w którym oryginalny autor nieformalnie powiedział mi, że nie chce publikować źródła. Od tego czasu oryginalny autor odszedł, zostawiając mnie jako jedynego programistę w projekcie. Kilka razy próbowałem się z nim skontaktować w sprawie stworzenia projektu open source, aby inni programiści mi pomogli, ale on nie odpowiada na żadne komunikaty. Nie planuję zarabiać na oprogramowaniu, po prostu chcę mieć ogólną licencję, która pozwoli mi umieścić kod na GitHub lub BitBucket, aby inne osoby ze społeczności mogły mi pomóc w rozwoju. Czy mogę to zrobić, ponieważ on odszedł i nie odpowiada na żadną formę komunikacji? Czy jest czas, na który muszę czekać? Wiem, o co proszę, to porada prawna, po prostu nie mam pojęcia, od czego zacząć szukać odpowiedzi, więc postanowiłem zacząć tutaj.


title: Profesjonalne mentoringi i grupy badawcze dla doświadczonych programistów?

text: Obecnie jestem zatrudnionym inżynierem oprogramowania, mniej niż dziesięć lat po ukończeniu studiów. Biorąc pod uwagę, gdzie chciałbym być w mojej karierze, obecnie staram się doskonalić swoje umiejętności, aby znaleźć następną pracę. Czuję jednak, że mam pewne braki techniczne, wynikające z dyplomu i wyboru pracy, które utrudniają mi samodzielną naukę lub przejście na stanowiska, które mam nadzieję osiągnąć. Z tego powodu staram się znaleźć profesjonalny mentoring lub stałą grupę edukacyjną dla praktyków spoza mojego miejsca pracy, ponieważ uważam, że skorzystałbym z posiadania kogoś z większym doświadczeniem, wyjaśniającego obszary, w których mógłbym chcieć budować kompetencje. pomóc zidentyfikować materiał, którego w innym przypadku nie byłbym w stanie znaleźć samodzielnie. Dotyczy to zwłaszcza szkolenia z algorytmów, którego brakowało mi na studiach. Próbując to wzmocnić, brałem udział w Top Coder, Coursera, MIT Open Courseware i Project Euler. Kupiłem też, przetrawiłem i pracowałem z wieloma książkami poświęconymi CS i programowaniu. To dobrze i dobrze, ale kierowanie tym procesem wyłącznie na siebie jest zarówno izolacją, jak i brakiem niezbędnych społecznych informacji zwrotnych na temat tego, jak moje studia łączą się z prawdziwym światem. W związku z tym jestem ciekawa, jakie zasoby mogą być korzystne dla kogoś, kto szuka ludzkiego komponentu do studiowania SE/CS poza miejscem pracy. Czy byłoby cenne, gdybym sam założył grupę dla osób, które chcą studiować te obszary? * * * _Pełne ujawnienie: To jest nowe konto, ponieważ wolę oddzielić to pytanie od mojej tożsamości zawodowej. Czuję się tym prawie zawstydzony, do tego stopnia, że nie pytam, i właśnie dlatego czuję, że może to być cenne dla innych tutaj._


title: Co robić po zablokowaniu

text: Zacząłem kodować 3 różne projekty i jest w porządku, robiłem to od 5 miesięcy, trochę php, trochę c, trochę matlab, ale z jakiegoś powodu utknąłem... Zwykle jak przechodzę przez to wychodzę na kiedy lub idę spać (a podczas snu zastanawiam się nad rozwiązaniem problemu, z którym się borykam, najważniejszy lub pilny), a zwykle kiedy wracam (jeśli dobrze spałem) mam rozwiązanie i pojawia się kod z łatwością. Nie wiem, co myślisz, ale utknąłem przez około 10 kolejnych dni! Nie mogę wydostać się z dziury, widzę tylko jak mija czas... Co robisz, gdy tracisz inspirację? Niektórzy przyjaciele mówią: Idź zaczerpnąć powietrza, uprawiać sport, cóż, próbowałem... Wiem, że wielu z was przeszło ten etap, ale jak?


title: Jak pogodzić się z warunkami technicznymi

text: Od kilku lat pracuję jako freelancer, a wcześniej pracowałem jako koder dla początkujących w firmie nietechnicznej. "Rozumiem", jak delegaci i MVC, i jak zrobić aplikację i sprawić, by działała, ale ostatnio zrobiłem kilka wywiadów i zadają mi pytania, na które nie znam odpowiedzi. Są to pytania, na które _powinnam_ znać odpowiedzi, ale w zasadzie nigdy nie musiałem używać języka technicznego. Nie trzeba dodawać, że czuję się bardzo głupio, kiedy to się dzieje, ale nie wiem, jak przygotować / rozwiązać ten problem bez powrotu do Comp Sci 101. To tak, jakbym mógł wykonać pracę, ale nie wiem, o czym mówią o. Wszelkie sugestie byłyby bardzo mile widziane.


title: Jak zorganizować testowanie jakości dużej strony internetowej?

text: Stworzyłem całkiem spory serwis internetowy. Sam przetestowałem to najlepiej, jak potrafię, ale nie mogę przetestować wszystkich scenariuszy, na które mogą napotkać moi użytkownicy. Znalazłem zespół testerów w Indiach, ale wygląda na to, że nie mają żadnego systematycznego podejścia do testowania funkcjonalności witryny. Testują każdą pojedynczą stronę, a nie cały proces, który użytkownik wykonuje na stronie internetowej. Jakich procesów lub narzędzi powinienem użyć, aby dokładnie przetestować swoją witrynę?


title: Przekazywanie danych między zajęciami

text: Pytanie podobne do tego zostało zadane wcześniej i jestem pewien, że zostanie zadane ponownie. Spędziłem trochę czasu googlując i próbując rozwiązać to dla siebie, ale jestem w impasie. To, co staram się osiągnąć, to zaimplementować ekran przeszukiwania bazy danych dla aplikacji, którą miałem za zadanie stworzyć. To, co robię, to ładowanie JFrame z JPanels poprzez cardlayout. Na kilku z tych paneli JPanel będę miał przycisk, który wywołuje inną ramkę JFrame, która przeszukuje bazę danych i ładuje zestaw wyników do tabeli wyświetlanej na ramce. Wyszukiwanie odbywa się dopiero po wpisaniu przez użytkownika danych wyszukiwania i naciśnięciu przycisku wyszukiwania. Ekran należy wyrzucić i zwrócić wartości po wybraniu przez użytkownika wiersza w tabeli i naciśnięciu innego przycisku. Mam utworzone wszystkie komponenty GUI i działa funkcjonalność wyszukiwania DB. Problem, który mam, to zwracanie wartości. W tej chwili mam obiekt Search JFrame utworzony przez JPanel, który ma przycisk, ale wszelkie próby, które podjąłem, aby pobrać dane z ramki wyszukiwania, zakończyły się wynikiem zerowym. Czy istnieje sposób na zwrócenie wartości w ten sposób, a jeśli tak, to w jaki sposób? Próbowałem metod getter/setter, ale oczywiście, ponieważ początkowe wyniki zmiennych są null, zwracane są jako null. Próbowałem połączyć wynik z tabelą z tym samym wynikiem. (Właściwie to zwróciło -1, ale to tylko podział włosów). Próbowałem zmienić ekran wyszukiwania na JDialog, ponieważ czytałem, że może to zatrzymać działający kod podczas oczekiwania na odpowiedź. Próbowałem różnych metod, aby sprawdzić, czy ekran wyszukiwania jest włączony/widoczny i je zatrzymać. Wszystko na próżno. Każda pomoc jest mile widziana.


title: Czy istnieje e-commerce bez koszyka?

text: Wyobraź sobie, że chcesz założyć minimalistyczną witrynę e-commerce dla „straganu z lemoniadą”. Masz tylko dwa produkty - dużą szklankę lemoniady _LUB_ małą szklankę lemoniady (zawsze albo/albo; nigdy oba). Chcesz, aby ludzie wybierali, płacili i cieszyli się — tak szybko, tak prosto i bez innych rozpraszających funkcji/opcji. Ponieważ jesteś dzieckiem, które nie umie dodawać, a w każdym razie sam ustalasz zasady, każdy musi osobno zapłacić za jedną szklankę lemoniady. Koszyk nie ma sensu, a w rzeczywistości umniejsza wartość oferowanego produktu. Z drugiej strony chcesz zachęcić stałych klientów, więc pewnego rodzaju baza danych klientów może być przydatna (lub nie). A gdzieś w przyszłości można sobie wyobrazić wprowadzenie średniej szklanki lemoniady jako trzeciego produktu. Ale to jest tak skomplikowane, jak to tylko możliwe. Jeśli to jest twój brief, jakie opcje należy rozważyć? Pisanie funkcjonalności od podstaw? Zabierasz gotowy pakiet i konfigurujesz go/usuwasz z powrotem? Korzystasz z wózka na zakupy za kulisami, ale ukrywasz go? Interesuje mnie, jakie podejścia są opłacalne, a które prawdopodobnie będą wymagały najmniej pracy, aby uzyskać akceptowalny wynik. Preferowane są odpowiedzi, które skłaniają się ku implementacji w PHP/MySQL lub napisanych w nich frameworkach e-commerce.


title: czy zwracanie nowego obiektu we właściwości jest złą praktyką programistyczną?

text: Zawsze miałem to pytanie i myślę, że nadszedł czas, aby ustalić odpowiedź, czy jest to duże obciążenie, aby to zrobić: public Rect Bounds { get { var Top = (_targetPosition + _translationY) - _size / 2.0f; return new Rect(callOutStarMargin, Top, _size, _size); } } jako alternatywa: private Rect _boundsRect = new Rect(); public Rect Bounds { get { var Top = (_targetPosition + _translationY) - _size / 2.0f; _boundsRect.Y = Góra; return _boundsRect; } } robiąc to Unikam tworzenia nowego Rect za każdym razem, gdy wywoływana jest właściwość, nie jestem pewien, czy zrobienie tego w pierwszy sposób spowoduje powstanie dodatkowej nadwagi pamięci/prędkości, jeśli powiedzmy, że ta właściwość jest dostępna 1 lub 2 razy na liście 100 pozycji na sekundę. Więc który powinienem wybrać? **EDYTUJ:** Myślę, że nie jestem tutaj jasny, moje prawdziwe pytanie brzmi: jak ciężkie jest tworzenie nowych instrukcji prostych obiektów, takich jak Rect, jak wydajny jest odśmiecacz C# na przykład w tym scenariuszu 100 nowych prostokątów na po drugie, a różnica cyklu procesora między jednym lub drugim sposobem


title: Dlaczego mówimy, że Lisp jest zorientowany na człowieka, a Fortran na maszynę?

text: > Lisp i Fortran były pniami dwóch oddzielnych drzew ewolucyjnych, jednego > zakorzenionego w matematyce, a drugiego zakorzenionego w architekturze maszynowej. Widzę to w _Hackers and Painters: Big Ideas from the Computer Age_. Ktoś powiedział, że Lisp jest zorientowany na człowieka, a Fortran na maszynę. Tutaj zorientowany na człowieka oznacza, że sposób rozwiązywania problemów jest bardziej prawdopodobny. A zorientowanie na maszynę oznacza, że sposób rozwiązywania problemów jest bardziej prawdopodobny. Myślę, że Lisp i bazują na S-wyrażeniu i symbolu. Fortran bazują na von Neumann i Variables. Czy to jest poprawne?