title: Aplikacja samoaktualizująca się - filozofia

text: To jest pytanie filozoficzne. Biorąc pod uwagę hipotetyczną aplikację komputerową i chęć zapewnienia automatycznych aktualizacji (zamiast zmuszać ludzi do odwiedzania strony internetowej, sprawdzania aktualizacji, pobierania aktualizacji, instalowania), która z tych dwóch opcji jest bardziej podejściem „najlepszej praktyki”? 1. Podobnie jak iTunes, sprawdza, czy jest nowa wersja i prosi użytkownika o pobranie nowej wersji. Jeśli tak, pobiera pełny plik wykonywalny instalacji (w tym przypadku plik Instalatora Windows (.msi)), który instaluje pełną wersję (nie tylko uaktualnienie do poprzedniej wersji — zbyt wiele do zarządzania, jeśli dostępnych jest wiele wersji) . Powiedzmy, że jest to wersja 10.1.1 - niezależnie od tego, czy instalujesz nowy, czy aktualizujesz, używasz tego samego pliku. Po pobraniu instruuje użytkownika, aby zamknąć aplikację i samodzielnie uruchomić plik instalacyjny. 2. Podobnie jak druga, sprawdza nową wersję i prosi użytkownika o jej pobranie, ale zamiast po prostu pobierać plik wykonywalny i prosić użytkownika o jego uruchomienie, faktycznie uruchamia go za nich - zamyka otwarty program , zdobywając niezbędne zabezpieczenia do instalowania plików. Problemy z #2: wiele problemów związanych z zamykaniem programu, ponieważ program może otwierać inne programy (Outlook i Excel) lub co, jeśli użytkownik był w trakcie czegoś. Również w zakresie bezpieczeństwa, aby zainstalować, potrzebujesz dostępu administratora lokalnego, co jeśli go nie masz? W nowszych wersjach systemu Windows nie można po prostu ominąć zabezpieczeń danej osoby. Problemy z #1: niektórzy uważają, że będzie to zbyt trudne, zbyt duży wysiłek dla użytkownika końcowego. Zdecydowanie wolałbym jechać z numerem 1, ponieważ pozwoli to zaoszczędzić 80-120 godzin na moim projekcie i jest prostsze we wdrożeniu i utrzymaniu. Mamy jednak ludzi, którzy czują się mocno ze wszystkich stron. Jaka jest najlepsza praktyka dla tego typu rzeczy?


title: Jakie jest branżowe określenie programów „zarabiaj kredyty przez podmioty stowarzyszone” w grach na iPhone'a/Androida/itp.?

text: Na iPhonie, Androidzie i innych platformach do gier możesz czasami zarabiać, instalując inne gry, odwiedzając czyjąś witrynę, a nawet rejestrując się w celu uzyskania karty kredytowej. Na przykład w przypadku iPhone'a istnieją całe sieci utworzone dla tego rodzaju marketingu afiliacyjnego. Jaki jest termin branżowy na to?


title: Licencjonowanie projektu

text: Czy ktoś może mi wyjaśnić następujące rzeczy? Powiedzmy, że chcę zbudować stronę internetową i dodać do niej rozgłos, aby móc zarabiać na swojej pracy. Do programowania w tle używałbym Html5, a C# z ASP.NET. Używałbym Visual Studio jako mojego IDE i serwera SQL jako bazy danych. To tylko przykład na czubku głowy, ale nie wiem, od czego zacząć licencje. Czy potrzebuję jednego: * Tylko dla VisualStudio i SQLServer? * W przypadku VisualStudio, SQLServer i zapłacić jakieś prawa do Asp.net ? * Cały pakiet.. Zarówno VisualStudio, SQlServer plus prawa dla Asp.net I C# ? Wiem, że to pytanie jest trochę niejasne, ale naprawdę nie wiem, od czego zacząć, a opinia kogoś z doświadczeniem w tym może dać mi tylko pomoc, której potrzebuję, aby zacząć.


title: Przykłady modeli domen Witryna podobna do Databaseanswers.org

text: Kiedy próbowałem zrozumieć projektowanie baz danych, databaseanswers.org była fenomenalna. Teraz próbuję zrozumieć Spring Framework i chciałbym wiedzieć, czy są jakieś witryny, które mają już stworzone modele domen, które mógłbym wykorzystać jako podstawę do nauki Springa.


title: W jaki sposób oryginalne struktury kontrolne Fortran były niewystarczające?

text: Na moich zajęciach dotyczących koncepcji języka programowania wspomniałem mimochodem, że oryginalne struktury kontrolne Fortran były niewystarczające. Mówiono, że są one zbyt podobne do instrukcji maszynowych dla IBM 704. Czy tak było? Co właściwie sprawiło, że były niewystarczające?


title: MVC i delegacja

text: Jestem początkującym programistą iOS i używam modelu Model-View-Controller jako wzorca projektowego: mój model nie wie nic o moim widoku (aby był kompatybilny z dowolnym widokiem), mój widok nic nie wie mój model, aby wchodziły w interakcję za pośrednictwem mojego kontrolera. Bardzo typowym sposobem interakcji widoku z kontrolerem jest delegowanie: gdy użytkownik wchodzi w interakcję z aplikacją, mój widok powiadomi mój kontroler, który może wywołać niektóre metody mojego modelu i w razie potrzeby zaktualizować mój widok. Jednak czy byłoby sensowne, aby mój kontroler był również delegatem mojego modelu? Nie jestem przekonany, że to jest droga. Może to być przydatne dla mojego modelu, aby na przykład powiadomić mojego kontrolera o zakończeniu jakiegoś procesu lub poprosić użytkownika o dodatkowe dane wejściowe, jeśli nie ma wystarczających informacji do ukończenia zadania. Wadą tego jest jednak to, że mój kontroler byłby delegatem zarówno dla mojego kontrolera, jak i dla mojego modelu, więc nie byłoby tak naprawdę właściwego sposobu powiadamiania mojego modelu o zmianach w moim widoku i na odwrót. (Popraw mnie, jeśli się mylę.) Wniosek: Nie sądzę, aby mój kontroler był delegatem mojego modelu, ale samo bycie delegatem mojego poglądu byłoby w porządku. Czy tak radzi sobie większość modeli MVC? A może istnieje sposób, aby kontroler był delegatem zarówno kontrolera, jak i modelu, z odpowiednią komunikacją między nimi? Tak jak powiedziałem, jestem początkujący, więc chcę robić takie rzeczy od razu, zamiast spędzać mnóstwo godzin na modelach, które i tak nie będą działać. :)


title: Czy programista ma być samowystarczalny?

text: W moim obecnym miejscu pracy nie mamy testerów, a kierownictwo uzasadnia to stwierdzeniem: „gdybyśmy mieli testerów, w ogóle nie testowałbyś własnego kodu”. Takie myślenie wydaje się być szkodliwe dla jakości produktu, ponieważ testując własny kod, jest wiele rzeczy, za którymi tęsknię tylko dlatego, że znam system na wylot i nie wiem, jak go używać To błędne". Testowanie czarnoskrzynkowe tak naprawdę nie działa, ponieważ podświadomie unikam pułapek, w które wpadłby oddany tester. Dużo czasu poświęcam na naprawianie błędów, które wślizgnęły się do kodu produkcyjnego i zostały znalezione przez użytkownika końcowego. Omawiany system jest duży, ale jest rozwijany wyłącznie przeze mnie. Spowodowało to również, że spadły na mnie pewne obowiązki kierownicze, takie jak definiowanie harmonogramów i praca nad specyfikacjami. Czy tego rodzaju zadania powinny być moim obowiązkiem? Postrzegam siebie jako programistę i nic więcej. A jeśli to moja odpowiedzialność, to w jakim stopniu? Kiedy projekt jest tak duży, że wymaga testerów? Czy programista powinien dopracowywać specyfikację, martwić się o zarządzanie projektem, a nawet zapewniać obsługę klienta? ### Notatka Niektórzy mogą odnieść wrażenie, że jestem przeciwna poszerzaniu zakresu obowiązków - tak nie jest, jestem chętny na stanowisko, które wiąże się z większymi obowiązkami kierowniczymi, ale obecnie nie ma tego w moim opisie stanowiska. Dopóki nie zostanę oficjalnie zatrudniony jako taki lub nie zaczną pojawiać się dodatkowe obowiązki na mojej wypłacie, będę myślał o sobie jako „tylko” programista. Niestety, jako młodszy programista, przejście do obowiązków menedżerskich nie nastąpi szybko. Jak dotąd doskonałe odpowiedzi, zachęcaj do ich nadejścia, jeśli masz coś do dodania lub osobiste doświadczenia, którymi możesz się podzielić!


title: Przeszukiwacz sieci do nauki tematów w Wikipedii

text: Kiedy chcę poznać obszerny temat na Wikipedii, nie wiem od czego zacząć. Na przykład powiedzmy, że chcę dowiedzieć się o Binary Stars, a następnie muszę poznać inne rzeczy, do których prowadzą linki na tych stronach i linkowanych stronach na wszystkich linkowanych stronach i tak dalej dla **określonej liczby poziomów**. Chcę napisać robota indeksującego, takiego jak HTTracker lub coś podobnego, który będzie wyświetlał hierarchię linków na określonej stronie i linki na tych powiązanych stronach. **Chcę użyć jak najwięcej gotowego kodu.** Oto przykład: **Udając, że naginamy zasady, pobierając linki tylko z pierwszego zdania każdej strony** Przykładowe archiwa i „procesy” _dwa poziomy deep_ Strona jest operacją trójargumentową ## The First Level W matematyce operacja trójargumentowa jest operacją N-arną ## The Second Level ### W matematyce: Matematyka (z greckiego μάθημα máthēma, „wiedza, nauka, uczenie się”) jest abstrakcyjne badanie tematów obejmujących ilość, strukturę, przestrzeń, zmianę i inne; nie ma ogólnie przyjętej definicji. ### Pod N-arne W logice, matematyce i informatyce arnością i/ˈærɨti/ funkcji lub operacji jest liczba argumentów lub operandów, które funkcja przyjmuje ### Pod operacją W najprostszym znaczeniu w matematyce i logiki, operacja jest akcją lub procedurą, która tworzy nową wartość z jednej lub więcej wartości wejściowych ## \--------------------------- ---------------------------------------------- Potrzebuję jakiegoś sposobu aby określić, w jakiej kolejności należy podejść do wszystkich tych stron wiki, aby nauczyć się pojęcia (w tym przypadku operacji trójskładnikowych)... Zgodnie z tym przykładem, jednym ze sposobów pokazania ścieżki do odczytu byłby wydruk w następujący sposób: ![wprowadź opis obrazka tutaj](http://i.stack.imgur.com/1fLex.png) Pokazuje to, że pierwsze zdanie strony Matematyka nie łączy się z pierwszym zdaniem stron, do których prowadzą linki na stronie trójskładnikowej na dwa poziomy. (Proszę mi powiedzieć, jak mam to wyjaśnić) ---> Innymi słowy, węzeł potomny pierwszego zdania górnych stron, ternary_operation, nie ma żadnych węzłów potomnych, które odwołują się do potomków górnych stron innych węzłów potomnych- N- ary i operacji. Dlatego można to najpierw przeczytać. Ponieważ N-ar ma link do operacji, powinniśmy przeczytać stronę operacji jako drugą, a na końcu stronę N-ary jako ostatnią. Ponownie, **Chcę użyć jak najwięcej gotowego kodu** i zastanawiałem się, jakiego języka użyć i jaki byłby najprostszy sposób na zrobienie tego, jeśli jeszcze czegoś nie ma?


title: Aplikacje bankowe wymagają automatycznego zapisywania?

text: Tworzymy aplikację bankową. To wewnętrzny projekt banku. Aplikacja musi przechwycić ogromne ilości danych do przetworzenia. Więc automatyczny zapis jest zalecanym podejściem do przechwytywania? Jak wykonać walidacje w przypadku automatycznego zapisu? A na wyładowaniu jsp zapisywanie danych jest poprawnym podejściem? Jaki jest najlepszy sposób na zapisanie danych formularza w przypadku automatycznego zapisu? Jeśli wystąpią jakiekolwiek błędy sieciowe, jak postępować, czyli dać użytkownikowi końcowemu dane nie są zapisywane? Myślę, że to po prostu wykonalne rozwiązanie. Proszę o zaproponowanie optymalnego rozwiązania.


title: Pisanie kodu a używanie narzędzi przeciągnij i upuść

text: Jeśli przeciągasz i upuszczasz, pozwalasz edytorowi na budowanie kodu za Ciebie. Z pewnością oznacza to, że tak naprawdę nie programujesz. Budujesz aplikację, która nie ma odpowiedniej logiki kodu, prawda? Przeciągam proste kontrolki na formularzu internetowym w .NET, ale na pewno nie możesz polegać w 100% na budowaniu aplikacji w ten sposób? Chociaż niektóre podręczniki w .NET wymagają przeciągania i upuszczania w dowolnym miejscu. Przykład, odczyt z bazy danych za pomocą ASP.NET. Możesz upuścić kontrolki SQL na znacznik lub możesz zaprogramować pobieranie w kodzie znajdującym się pod spodem. Wolę kod z tyłu, ponieważ masz odpowiednią kontrolę imho. Myśli?


title: Jak określić czas wygaśnięcia tokena w serwisie internetowym REST?

text: Pracuję nad stworzeniem ws REST, odsłaniając kilka API. Token jest wymagany dla każdego wywołania API. Jestem zdezorientowany co do czasu wygaśnięcia, który należy ustawić dla tokena. Jeśli chodzi o bezpieczeństwo i wydajność, jaki jest idealny czas wygaśnięcia tokena (jeśli taki istnieje)?


title: Model-View-Controller: kto buforuje dane?

text: Tworzę GUI do interfejsu wbudowanego urządzenia do hosta PC. GUI zapewnia kontrolę nad parametrami urządzenia i wyświetla pewne informacje zwrotne z niego. GUI musi również emulować niektóre funkcje urządzenia i przedstawiać je użytkownikowi. Doradzono mi użycie wzorca Model-View-Controller, dzięki czemu jeśli urządzenie nie potwierdzi jakiejś komendy, użytkownik będzie wiedział o nieskuteczności swoich działań. Problem polega na tym, że nie mogę zdecydować, które komponenty powinny buforować dane. Przykład: kiedy wartość jest drukowana na ekranie, widok wyraźnie musi ją znać. Jednak model również musi ją znać, ponieważ wykorzystuje ją do obliczania innych wartości. Co więcej, kontroler również musi to wiedzieć, ponieważ na przykład zmiana wartości może być proporcjonalna do logarytmu działania użytkownika. Jak to zrobić prawidłowo?


title: Dostęp do weryfikacji tokena

text: Spędziłem kilka dni na czytaniu o środkach bezpieczeństwa opartych na Oauth i tokenach dla REST API i obecnie zastanawiam się nad wdrożeniem podejścia opartego na uwierzytelnianiu Oauth prawie dokładnie takiego, jak to opisane w tym poście (alternatywa OAuth dla systemu 2 stron). Z tego co rozumiem, token ma być weryfikowany przy każdym żądaniu do serwera zasobów. Oznacza to, że serwer zasobów musiałby pobrać token z magazynu danych, aby zweryfikować token klientów. Biorąc pod uwagę, że musiałoby się to zdarzyć przy każdym żądaniu, jestem zaniepokojony konsekwencjami szybkości uderzania w magazyn danych, taki jak MySQL lub NoSQL, przy każdym żądaniu tylko po to, aby zweryfikować token. Czy jest to standardowy sposób weryfikacji tokenów poprzez przechowywanie ich w bazie danych RDBMS lub NoSQL i pobieranie przy każdym żądaniu? Czy jest to odpowiednie rozwiązanie, aby mieć je w pamięci podręcznej (mając na uwadze, że mówimy o milionach użytkowników)?


title: Dlaczego wersje Beta mają tak wiele błędów?

text: Kiedy pracowałem w Microsoft nad antywirusem MSE, mieliśmy kilka etapów przedpremierowych: Alpha, Beta, RC. Największą różnicą między tymi etapami były poprawki błędów. Za każdym razem naprawialiśmy więcej błędów i zwykle aktualizowaliśmy kilka pomniejszych funkcji. Apple działa w ten sam sposób. Spójrz tutaj: http://www.techrepublic.com/article/pro-tip-how-to-create-a-bootable-usb-installer-for-os-x-yosemite/ Wydali wersję beta systemu operacyjnego Yosemite, ale beta jest pełna błędów. Dlaczego te duże firmy tak działają? Czy nie lepiej wydać wersję beta, która została bardzo dokładnie przetestowana, ale po prostu nie zapewnia wszystkich funkcji, które zapewni wersja ostateczna?


title: Czy dobrym pomysłem jest wykorzystanie serwera ze zlewozmywakiem do różnych usług?

text: Mój (nowy) zespół programistów konfiguruje swoje środowisko programistyczne. Nie będę opisywał całego scenariusza, bo to kolejne, bardzo oczerniane pytanie. W każdym razie będziemy mieć usługi takie jak kontrola źródła (mercurial), wiki, tracker problemów, serwer plików/dokumentów, DNS i być może inne rzeczy. Moje pytanie: Czy dobrym pomysłem jest umieszczenie jak największej liczby na jednym serwerze typu „zlew kuchenny”? A może lepiej rozłożyć je na tyle, na ile pozwalają na to pieniądze, moc i miejsce w serwerowni? **Uwagi:** * Wiem, że niektóre rzeczy muszą przejść na inny serwer, na przykład ciągłe/okresowe budowanie, z dużym zaangażowaniem. Mówię o (teoretycznie) lżejszych rzeczach. * Nasz zespół składa się z 4 osób i oczekuje się, że w ciągu najbliższych kilku lat może się podwoić. * O ile wiem, nie będziemy „młotkować” usług. * Oczekiwany sprzęt dla serwera to zwykły waniliowy komputer PC, najwyżej 1000 USD, może z dyskiem SSD.


title: Jaki jest właściwy sposób na uzyskanie efektu przenikania?

text: Jednym z bardziej popularnych efektów podczas tworzenia suwaka obrazu jest użycie efektu przenikania. Różne suwaki wykorzystują różne techniki, aby stworzyć taki efekt. Główne techniki, które do tej pory znalazłem, to: * **Metoda 1:** Użyj nakładki i podkładki `<div>` i zanikaj wzajemnie swoją widoczność. * **Metoda 2:** Utwórz `<div>` pasujący dokładnie do rozmiaru suwaka podczas inicjalizacji, pobaw się jego właściwością `z-index`, a następnie zanikaj nawzajem. Używając metody `method-1`, trzeba utworzyć dwa niepotrzebne i nadmiernie wykorzystywane elementy blokowe, najczęściej `div`. Najpierw właściwość background jest stosowana do underlayed-div, a następnie overlayed-div jest zaciemniana, a następnie zmieniana we właściwości z-index, aby była pozycjonowana niżej niż druga. Używając `method-2`, tworzy tylko jeden dodatkowy div, a teraz tło kontenera jest zmieniane, a nakładka div jest wygaszona. Zaimplementowanie tego efektu ogranicza teraz efekt przejścia, który można zbudować (ale _to nie jest to pytanie_ ). Powodem, dla którego uważam, że mogłoby to być lepsze, jest to, że zawsze trzeba będzie dodać dodatkowe elementy, aby uzyskać efekt. Z tego powodu tworzenie efektów takich jak „nivo-slider” wymaga stworzenia od 12 do 15+ divów, aby uzyskać efekt. Zsumowanie liczby elementów w celu utworzenia elementu nie wydaje się być właściwym sposobem. Czy metody, o których wspomniałem powyżej, są używane tak często, ponieważ nie ma innych sposobów? Muszą być lepsze sposoby na stworzenie efektu przenikania. Więc moje pytanie jest proste: _Czy istnieje lepszy sposób na uzyskanie tego efektu?_ Jeśli tak, jakie one są?


title: Jak korzystać z kontenerów DI i DI

text: Buduję mały framework PHP mvc (tak, jeszcze jeden), głównie do celów edukacyjnych i staram się to zrobić we właściwy sposób, więc chciałbym użyć kontenera DI, ale nie pytam który używać, ale raczej jak używać jednego. Nie wchodząc w szczegóły, mvc jest podzielony na moduły, które mają kontrolery, które renderują widoki akcji. Oto jak przetwarzane jest żądanie: * Obiekt Main tworzy instancję obiektu Request oraz Routera i wstrzykuje Request do Routera, aby dowiedzieć się, który moduł został wywołany. * następnie tworzy instancję obiektu Module i wysyła do niego Request * Module tworzy ModuleRouter i wysyła Request w celu ustalenia kontrolera i akcji * następnie tworzy Kontroler i ViewRenderer oraz wstrzykuje ViewRenderer do Kontrolera (tak, aby kontroler może wysyłać dane do widoku) * ViewRenderer musi wiedzieć, który moduł, kontroler i akcja zostały wywołane, aby znaleźć ścieżkę do skryptów widoku, więc Moduł musi to rozgryźć i wstrzyknąć do ViewRenderera * Moduł następnie wywołuje metodę akcji na kontrolerze i wywołuje metodę render na ViewRenderer Na razie nie mam skonfigurowanego żadnego kontenera DI, ale mam kilka metod initX(), które tworzą wymagany komponent, jeśli jest jeszcze nie tam. Na przykład Module posiada metodę initViewRenderer(). Te metody init są wywoływane tuż przed tym, jak ten składnik jest potrzebny, a nie wcześniej, a jeśli składnik został już ustawiony, nie zostanie zainicjowany. Pozwala to na przełączanie komponentów, ale nie wymaga ręcznego ustawiania, jeśli ich tam nie ma. Teraz chciałbym to zrobić, implementując kontener DI, ale nadal utrzymywać ręczną konfigurację na absolutnym minimum, więc jeśli przestrzegana jest struktura katalogów i konwencja nazewnictwa, wszystko powinno działać, nawet bez dotykania konfiguracji. Jeśli używam kontenera DI, czy wstrzykuję go do wszystkiego (kontener wstrzykuje się sam podczas tworzenia komponentu), aby inne komponenty mogły z niego korzystać? Kiedy należy zarejestrować komponenty w DI? Czy składnik może rejestrować inne składniki w DI w czasie wykonywania? Czy mam utworzyć „wspólną” konfigurację i jej używać? W jaki sposób mogę w locie dowiedzieć się, jakich komponentów potrzebuję i jak należy je skonfigurować? Jeśli Main używa Routera, który używa Request, Main następnie musi użyć kontenera, aby uzyskać Module (lub czy moduł musi zostać wcześniej znaleziony i ustawiony? Jak?) Moduł używa Routera, ale musi określić ustawienia dla ViewRenderer i Controller w locie, a nie z góry, więc mój kontener DI nie może ustawić tych na Module, zanim moduł zrozumie kontroler i akcję... A jeśli kontroler potrzebuje innej usługi? Czy wstrzykuję kontener do każdego kontrolera? Jeśli zacznę to robić, może po prostu wstrzyknę to we wszystko... Zasadniczo szukam najlepszych praktyk w radzeniu sobie z takimi rzeczami. Wiem, czym jest DI i co robią kontenery DI, ale szukam wskazówek, jak używać ich w prawdziwym życiu, a nie pojedynczych przykładów w sieci. Przepraszamy za długi post i z góry wielkie dzięki. EDYCJA: po przeczytaniu nieco więcej wydaje się, że wstrzyknięcie samego kontenera do obiektów i sprawienie, by używały kontenera do znajdowania rzeczy, jest w rzeczywistości lokalizacją usługi, a nie wstrzykiwaniem zależności. Więc moim najnowszym pomysłem jest wykorzystanie fabryk do rzeczy, które powinny być dynamicznie pozyskiwane w oparciu o coś (na przykład uzyskiwanie kontrolerów na podstawie tego, co mówi router), a kontener byłby wstrzykiwany do fabryk, gdzie byłby używany bardziej jako lokalizator usług . Komponenty niedynamiczne byłyby rejestrowane wcześniej, a komponenty te byłyby budowane przez kontener i zwracane w pełni sprawne, z wypełnionymi wszystkimi ich zależnościami. Więc przepływ będzie wyglądał tak: * pobierz Main z kontenera, Main jest wstrzykiwany z Request, Router i ModuleFactory, który używa kontenera do znalezienia modułów. To wszystko jest wstępnie skonfigurowane * Główny używa ModuleFactory do tworzenia modułu, wstrzykiwanego z ModuleRouter, Request, ControllerFactory i ViewRenderer. * Module używa ControllerFactory do utworzenia kontrolera, wstrzykiwanego z dowolną usługą, od której zależy, a następnie Module wywołuje akcję na kontrolerze i wysyła wynik do ViewRenderer w celu renderowania widoku. Czy dostanę coś z tym?


title: Jak można przewidzieć czas potrzebny na komunikację dwóch procesów na dwóch różnych maszynach w klastrze?

text: Staram się opracować aplikację komputerową, która potrzebuje dużo pamięci (>500 GB). Zakup jednej maszyny do tego jest zbyt drogi. Mogę jednak kupić ~100 małych instancji na Digital Ocean lub podobnym, podzielić pamięć na bloki i użyć TCP do emulacji pamięci współdzielonej między instancjami. Teraz moje pytanie brzmi: jak mogę zmierzyć/przewidzieć czas, jaki zajmie dwóm procesom na dwóch różnych maszynach współdzielenie informacji, w porównaniu z IPC i pamięcią współdzieloną? Czy istnieją praktyczne zasady? Nie chcę dokładnych wartości, ale mniej więcej wiedza o tym, o ile jest szybszy, byłaby bardzo pomocna w wizualizacji wykonalności tego podejścia.


title: Czy certyfikacja ICCP jest cenna w karierze programisty?

text: Patrząc na różne towarzystwa zawodowe AITP prowadziło mnie pośrednio do certyfikacji ICCP Certified Computer Programmer (i innych z ICCP). Nigdy nie słyszałem o tym programie, ale zarówno AITP, jak i, co dla mnie ważniejsze, ACM mają członków w zarządzie ICCP. Czy ktoś zna ten certyfikat? Szczerze mówiąc, strona internetowa nie budzi zaufania, ale patrząc na nią, wydaje się, że program jest skierowany do osób z wewnętrznego świata oprogramowania z listy Fortune 1000. Ktoś w jakiś sposób certyfikowany przez ICCP? Czy to pozytywnie wpływa na karierę w tworzeniu oprogramowania?


title: Przykład(y) "wyrażenia z indeksem dolnym ([ ]), które nie daje w wyniku tablicy" w C

text: Myślę, że nigdy nie widziałem [], który nie oznacza tablicy w C. Tło: Czytałem o wartościach l i wartościach r tutaj: http://msdn.microsoft.com/en-us/library/bkbs2cds .aspx i tak jest napisane. Jestem ciekaw.


title: Czysty kod VS wielokrotnego użytku — gdzie jest równowaga?

text: Załóżmy, że mam model danych dla postów na blogu i mam dwa przypadki użycia tego modelu — pobieranie wszystkich postów na blogu i uzyskiwanie tylko tych postów na blogu, które zostały napisane przez określonego autora. Zasadniczo mogę to zrealizować na dwa sposoby. **1st model** class Artykuły { public function getPosts() { return $this->connection->find() ->sort(array('creation_time' => -1)); } public function getPostsByAuthor( $authorUid ) { return $this->connection->find(array('author_uid' => $author_uid)) ->sort(array('creation_time' => -1)); } } **1st usage** (prezenter/kontroler) if ( $GET['author_uid'] ) { $posts = $articles->getPostsByAuthor($GET['author_uid']); } else { $posts = $artykuły->getPosts(); } **Druga** klasa Artykuły { public function getPosts( $authorUid = NULL ) { $query = array(); if( $authorUid !== NULL ) { $query = array('author_uid' => $authorUid); } return $this->connection->find($query) ->sort(array('creation_time' => -1)); } } **Drugie użycie** (prezenter/kontroler) $posts = $articles->getPosts( $_GET['author_uid'] ); Podsumowując (wady): 1) czystszy kod 2) więcej kodu wielokrotnego użytku Który z nich jest lepszy i dlaczego? Czy istnieje jakiś kompromis między tymi dwoma?


title: Ogólny analizator logów, który generuje raporty

text: Z naszej aplikacji korzysta około 600 klientów. Mamy bardzo szczegółowe logi dotyczące wszystkiego, co dzieje się w aplikacji, od zmian w modelu danych, wykorzystaniu pamięci i procesora/GPU po kliknięcia elementów interfejsu użytkownika. Chcemy móc analizować logi pochodzące od tych klientów i analizować je, aby zrozumieć, w jaki sposób użytkownicy korzystają z naszej aplikacji i co dzieje się wewnętrznie w aplikacji. Czy istnieje analizator logów, który może automatycznie generować takie raporty?


title: Jak znaleźć partnerów do projektów open source?

text: W przeszłości stworzyłem kilka projektów open-source i odniosłem pewien sukces. Proces ogólnie wyglądał następująco: zaczynałem sam, tworzyłem coś, co działa, promowałem to i wreszcie (być może) dostawałem jakiś wkład. Teraz mam mniej tego do wniesienia do open-source, ale wciąż mam pomysły i wciąż umiem kodować :) Zastanawiam się więc, czy jest miejsce lub sposób na poznanie ludzi (online), omówienie pomysłów i projektowanie, a potem rozpoczęcie pracy razem w projekcie? Powodem, dla którego zastanawiam się nad internetowym sposobem na zrobienie tego z nieznajomymi, jest to, że chociaż mam znajomych programistów, bardzo rzadko mamy te same potrzeby i zainteresowania w tym samym czasie. Wydaje mi się, że łatwiej byłoby znaleźć takie pasujące w globalnej społeczności internetowej. Jakiś wgląd?


title: Czy projekt bez licencji jest domeną publiczną?

text: Jeśli projekt nie ma licencji lub ma nieznanych autorów, czy jest domeną publiczną?


title: „Sytuacje poszły nie tak” dla aplikacji internetowych

text: Wiem, że krąży trochę przyzwoitych materiałów dotyczących bardziej konkretnych obszarów, ale chciałem uzyskać opinie od ludzi, którzy mieli złe doświadczenia w przeszłości. Mam projekt, w którym mogę mieć coś do powiedzenia na temat projektowania aplikacji internetowej B2C, która ma kilka zewnętrznych interfejsów API. UX jest kluczowy, podobnie jak szybkość. Nie jestem pewien, jaka technologia zostanie zastosowana na tym etapie. Projektując tę aplikację, chcę mieć pewność, że nie zostaną pominięte oczywiste funkcje (tj. takie, które ułatwiają utrzymanie / rozwój). Czy możecie mi opowiedzieć o „sytuacjach, które poszły nie tak”, których można było uniknąć, gdyby poświęcono więcej uwagi? Chcę ogólnie zebrać opinie, więc nie martw się, jeśli Twój przykład dotyczy konkretnej branży/technologii – o ile dotyczy sieci. Dziękuję za przeczytanie, czekam na Wasze odpowiedzi!


title: Jak zacząć z tym projektem?

text: Niedawno skończyłem klasę programowania C++ i we wrześniu zacznę szkołę. Istnieje ograniczona rejestracja miejsc parkingowych online i zawsze jest ona bardzo szybko zapełniana. Chciałbym stworzyć kod, który szybko uzyska dostęp do strony i zarejestruje się dla mnie. Pytanie brzmi, jak to jest możliwe? Myślę, że mógłbym użyć Pythona lub JavaScript, ale nie mam pojęcia, jak przejść z mojej klasy C ++. Czego powinienem się nauczyć/zrobić, aby zaprogramować ten kod? EDYCJA: Zamieściłem to pytanie również na innych forach i otrzymywałem wiele odpowiedzi takich jak: musisz skorzystać z biblioteki ... Przepraszam, jeśli jestem noobem, ale nigdy nie korzystałem z biblioteki i mam kłopoty ze zrozumieniem tego. Czy to tak, jakby #include biblioteka dawała mi dostęp do wielu funkcji, wykonując #inlude?


title: Jak określić najtrudniejsze przypadki testowe do testowania dowolnego algorytmu?

text: Rozwiązując każdy problem, piszemy algorytmy. Niektóre sprawne, niektóre nie, niektóre działają, niektóre zawodzą. Ale czasami kończymy na pisaniu czegoś, co jest w większości sukcesem, gdy wykonujemy test na sucho, być może sposób, w jaki formułujemy dane testowe, jest uprzedzony, ale algorytm zawodzi w niektórych innych przypadkach. W przypadku niektórych algorytmów natura danych może być różnorodna i duża, na przykład jak problem: > Znajdź maksymalną sumę podciągu tablicy liczb całkowitych, która zawiera zarówno liczby dodatnie, jak i ujemne, i zwróć indeks początkowy i końcowy w obrębie szyk. Czy ktoś może mi powiedzieć, czy istnieje jakaś konkretna i ogólna zasada kciuka, według której możemy zaprojektować najbardziej rygorystyczne przypadki testowe, aby przetestować poprawność algorytmów takich jak ten?


title: Jak zbudować widoki MVC, które współpracują z projektowaniem modelu domeny polimorficznej?

text: To jest bardziej pytanie typu „jak byś to zrobił”. Aplikacja, nad którą pracuję, to aplikacja ASP.NET MVC4 przy użyciu składni Razor. Mam fajny model domeny, który ma kilka klas polimorficznych, świetny do pracy w kodzie, ale mam kilka pytań dotyczących frontonu MVC. Widoki są łatwe do zbudowania dla normalnych klas, ale jeśli chodzi o te polimorficzne, utknąłem w decydowaniu, jak je zaimplementować. Jedyną (brzydką) opcją jest zbudowanie strony, która obsługuje typ bazowy (np. IContract) i ma kilka instrukcji if, aby sprawdzić, czy przekazaliśmy instancję IServiceContract lub ISupplyContract. Nie ładna i bardzo paskudna w utrzymaniu. Inną opcją jest zbudowanie widoku dla każdej z tych klas podrzędnych IContract, całkowicie łamiąc zasady DRY. Nie lubię tego robić z oczywistych powodów. Inną opcją (również nienajlepszą) jest podzielenie widoku na porcje z częściami i zbudowanie widoków częściowych dla każdego z typów potomnych, które są ładowane do głównego widoku dla typu podstawowego, a następnie podjęcie decyzji o pokazaniu lub ukryciu części w jednym, jeśli oświadczenie w części. Również niechlujny. Zastanawiałem się również nad zbudowaniem strony wzorcowej z sekcjami dla pól, które występują tylko w podklasach oraz nad budowaniem widoków dla każdej podklasy odwołującej się do strony wzorcowej. To wygląda na najmniej problematyczne rozwiązanie? Pozwoli to na dość prostą konserwację i nie wiąże się z powielaniem kodu. Jakie są Twoje myśli? Czy brakuje mi czegoś oczywistego, co ułatwi nam życie? Propozycje?


title: Wskrzeszenie planu testów 5000 linii, który ma już dekadę

text: Obecnie buduję plan testów dla systemu, nad którym pracuję. Plan ma 5000 linii i ma około 10 lat. Struktura jest następująca: 1. Tytuł testu warunek wstępny: niektóre W muszą być ustawione, X musi być ukończone akcja: zrób trochę Y warunek końcowy: wyświetlany jest komunikat z informacją Z 2. ... Jak nazywa się ten typ testowania? To jest użyteczne ? To nie jest zautomatyzowane.. testy musiałyby zostać przekazane jakiejś pechowej osobie do przeprowadzenia, a następnie wyniki musiałyby zostać przekazane do rozwoju. Nie wydaje się to wydajne. Czy warto unowocześniać tę metodę testowania (usuwanie testów dla usuniętych funkcji, aktualizowanie testów, w których występują inne warunki końcowe, ...) czy może bardziej odpowiednie byłoby zupełnie inne podejście? Planujemy rozpocząć testy jednostkowe, ale oprogramowanie wymaga tak wiele pracy, aby faktycznie „jednostki” przetestować - obecnie nie ma jednostek! Dziękuję Ci.


title: Przemysł przechodzi na technologie kosmiczne

text: Jestem absolwentem CS i programuję od 5 lat. Lubię to. Jako doświadczony programista chciałbym przejść bardziej w kierunku przemysłu kosmicznego. **Jakie umiejętności** sądzisz, że programista już miałby/musiał je zdobyć, aby dokonać tej zmiany? Ponadto **dlaczego** te konkretne umiejętności i **jak** postrzegasz je jako związane z przemysłem kosmicznym?


title: Myślenie pragmatycznie o skalowalności

text: Niedawno zostałem poproszony jako ćwiczenie o zaprojektowanie skalowalnego wykresu. Moją pierwszą intuicją było jak oddzielić wykres i rozłożyć go (sharding, konsekwentne haszowanie..itd) Okazuje się, że moje myślenie było na złej linii, wiem, czym jest skalowalność, ale wydaje się, że trochę trudno myśleć o tym pragmatycznie . Jaki jest pragmatyczny sposób myślenia o skalowalności. Wiem, że potrzebuję wysokiej dostępności, replikacji i odporności na awarie, ale jakie są typowe wzorce/paradygmaty potrzebne do wdrożenia tych kluczowych punktów?


title: Dlaczego musimy umieszczać członków prywatnych w nagłówkach?

text: Zmienne prywatne są sposobem na ukrycie złożoności i szczegółów implementacji przed użytkownikiem klasy. To całkiem fajna funkcja. Ale nie rozumiem, dlaczego w c++ musimy umieścić je w nagłówku klasy. Widzę dwa irytujące wady tego: * Zaśmieca nagłówek użytkownika * Wymusza ponowną kompilację wszystkich bibliotek klienckich za każdym razem, gdy wewnętrzne są modyfikowane Czy jest jakiś koncepcyjny powód tego wymogu? Czy ma to tylko ułatwić pracę kompilatorowi?


title: Punkt wyjścia do nauki przetwarzania języka naturalnego w Javie

text: Obecnie jestem uczniem liceum i jestem nowy w dziedzinie przetwarzania języka naturalnego. Próbuję napisać program w języku Java, który może dostarczyć odpowiedzi zrozumiałych dla ludzi na pytania w języku naturalnym. Przejrzałem dokumentację Javy i stronę Lynda.com, ale obawiam się, że wskakuję dalej, niż mogę sięgnąć. Bardzo szybko się uczę, więc mogę iść na głęboką wodę. Na przykład wiem, że mogę użyć funkcji `split` do minimalnego parsowania, ale nie jestem pewien, gdzie przejść, aby uzyskać działania, których potrzebuję, i nie mam wystarczająco dużo godzin dziennie, aby usiąść i przeczytać całą ogromną ilość Informacja. Byłoby wspaniale, gdyby dla ucznia takiego jak ja istniał punkt wyjścia, abym mógł wziąć jedną sekcję na raz. Jaki byłby idealny punkt wyjścia, jeśli chodzi o tematy CS (i dokumentację), aby zanurzyć się w tym temacie?


title: Czy za dobrą praktykę SQL uważa się używanie identyfikatora GUID do łączenia wielu tabel z tym samym polem identyfikatora?

text: Chcę połączyć kilka stołów ze stołem **wiele do wielu** (m2m). Jeden stół nosiłby nazwę **lokalizacja** i zawsze znajdowałby się po jednej stronie stołu m2m. Ale będę miał na przykład listę kilku tabel: * Karty * Fotografie * Ilustracje * Wektory Czy użycie identyfikatorów GUID między tymi tabelami w celu połączenia ich z pojedynczą kolumną w innej tabeli byłoby uważane za „dobrą praktykę”? Czy Mysql pozwoli mi na automatyczne kaskadowanie aktualizacji i usuwanie? Jeśli tak, czy wielokrotne kaskady prowadzą do problemów? ![Przykład diagramu proponowanej struktury](http://i.stack.imgur.com/BR6LX.jpg) ## UPDATE Czytałem ten GUID (numer szesnastkowy) Generalnie zajmuje więcej miejsca w bazie danych i spowalnia zapytania na dół. Jednak nadal mógłbym generować „unikalne” identyfikatory, po prostu mając inicjały tabeli jako część identyfikatora, tak aby identyfikator karty tabeli wynosił c0001, a następnie ilustracje byłyby I001. Niezależnie od tej zmiany, pytania wciąż pozostają aktualne.


title: Jakie są zalety wzorca delegata nad wzorcem obserwatora?

text: W **wzorzec delegata** tylko jeden obiekt może bezpośrednio nasłuchiwać zdarzeń innego obiektu. W **wzorzec obserwatora** dowolna liczba obiektów może nasłuchiwać zdarzeń danego obiektu. Podczas projektowania klasy, która musi powiadamiać inne obiekty o zdarzeniach, dlaczego miałbyś kiedykolwiek używać wzorca delegata zamiast wzorca obserwatora? Uważam, że wzorzec obserwatora jest bardziej elastyczny. Teraz możesz mieć tylko jednego obserwatora, ale przyszły projekt może wymagać wielu obserwatorów.


title: Zbiorczy termin na wstrząsanie urządzeniem i używanie akcelerometru urządzenia

text: Czy ktoś wie, co to jest zbiorcze określenie na potrząsanie urządzeniem, aby coś osiągnąć lub użycie akcelerometru urządzenia do zrobienia czegoś? Czy to technologia dotykowa?


title: Jakie umiejętności matematyczne są wymagane do nauki uczenia maszynowego?

text: Jestem zainteresowany udziałem w tym kursie online dotyczącym uczenia maszynowego. W obecnej formie moja matematyka jest bardzo elementarna i zasadniczo uczę się matematyki od podstaw w akademii Khana. Jeśli chodzi o programowanie, mam spore doświadczenie i dobre ogólne zrozumienie. Moje pytanie brzmi, jakie umiejętności matematyczne są mi potrzebne, aby móc skutecznie rozumieć i wykorzystywać uczenie maszynowe?


title: Jak sobie radzisz / co pobierasz za dokumentację, szkolenia, gwarancję, zmiany w zakresie itp…

text: Obecnie współpracuję z klientem, który chce, abym podpisał kontakt z gwarancją na rok bez dodatkowych opłat. Jak również wszelkie rozsądne zmiany, których chce w trakcie umowy, które wykraczają poza wytyczne, bez dodatkowych opłat i bez wpływu na terminy. I wreszcie dokumentacja i szkolenie dla wszystkich pracowników bez dodatkowych opłat. Wszędzie w tej umowie krążą czerwone flagi i chciałem usłyszeć od profesjonalistów, jak sobie radzicie / ile pobieracie za dokumentację, szkolenia, gwarancje, zmiany w zakresie itp...


title: Zmniejszenie złożoności naszego niestandardowego frameworka

text: W naszej firmie posiadamy niestandardową aplikację oprogramowania wykorzystującą własny framework. Ramy powstały mniej więcej w 2002 lub 2003 roku, na długo przed moim pojawieniem się w firmie. Większość funkcji we frameworku jest solidna, więc nadal ich używamy, ponieważ nigdy nie mieliśmy z nimi żadnych problemów, mówię o funkcjach bazy danych i funkcjach do pobierania/publikowania parametrów i danych ucieczki itp. bądź tylko ja pracuję nad projektami, więc nigdy nie miałem żadnych problemów z kodem, jednak teraz mamy do 6 programistów, którzy niedawno rozpoczęli pracę nad frameworkiem, więc sprawy stały się bardziej skomplikowane. W naszym obecnym frameworku ustaw go w następujący sposób: /cms/ /cms/modules/ /cms/modules/filemanager/ /cms/modules/filemanager/index.php /cms/modules/pages/ /cms/modules/pages/ index.php /cms/... Teraz wewnątrz każdego pliku indeksu każdego modułu mamy: require_once '../../config.php'; require_once '../../database_functions.php'; require_once '../../url_functions.php'; Coraz trudniej jest mi utrzymać zmiany teraz, a teraz, gdy niektóre moduły wchodzą w interakcję z innymi modułami, to po prostu szaleństwem jest utrzymywanie tego wśród całego naszego zespołu programistów. Kiedyś było to bardzo proste, ale teraz nasz moduł strony faktycznie integruje inne moduły z modułem głównym, w zasadzie w symbole zastępcze, dzięki czemu można umieścić na stronie dowolną treść z poszczególnych modułów. Problem pojawia się, gdy dokonujemy zmiany w naszym module galerii i teraz muszę dokonać zmian w interfejsie (wyjście html), samym module galerii, bazie danych, a następnie debugować wszystkie błędy, które pojawiają się w innych modułach, które są aktualnie korzysta z danych z modułu galerii. W zasadzie staje się reakcją łańcuchową zmian. Czy ktoś ma jakieś sugestie, jak usprawnić sprawy lub lepiej kontrolować utrzymanie naszej aplikacji? Nadal używamy bardzo ustrukturyzowanego sposobu kodowania za pomocą prostych skryptów i funkcji, a nie OOP, ponieważ jestem przyzwyczajony do kodowania w C i nie lubię komplikować niczego bardziej niż to konieczne. * * * Poza tymi problemami, nie używamy obecnie niczego podobnego w naszym oprogramowaniu, rozdaliśmy świetną pracę, a klienci uwielbiają oprogramowanie, które rozdajemy, po prostu nie mamy na nich wersji i żadnych kompilacji ani cokolwiek, co jest prawdopodobnie dużym błędem samym w sobie. Wszelkie pomysły lub sugestie, a nawet link do miejsca, które może pomóc nam dowiedzieć się, jak lepiej ustrukturyzować nasz proces rozwoju (jeśli jest to problem), byłyby bardzo mile widziane.


title: Wyszukiwanie rozmyte dla podciągu bez tokenów

text: Powiedzmy, że mam następujące wiersze: Lorem ipsum dolor sit amet, (tag) consectetur adipiscing elit. Phasellus congue nisi vel lorem dignissim tristique. (tag) Etiam vulputate lacus nec velit lobortis ut adipiscing mauris condimentum. (tag ) Vestibulum quis nulla id nisi ultricies placerat. (teg) In tempus vulputate ante, quis suscipit nunc euismod in. (teg ) Phasellus iaculis diam in felis pellentesque tristique. (ta g) (tag Praesent vestibulum sollicitudin velit, non mollis lacus scelerisque in. Nunc ac erat enim, at lobortis libero. (ciekawe) W każdym wierszu powinien znajdować się znacznik ujęty w nawias. Ale jak widać, dane są bardzo brudne i wewnątrz znaczników są dodatkowe spacje, brakuje rodziców, błędnie napisane znaczniki itp. Jak mam zidentyfikować wiersze zawierające „(tag)” lub coś podobnego? na koniec. Muszę porównać długi ciąg z krótszym podciągiem, więc coś takiego jak odległość Levenshteina nie zadziała (a może będzie?). Techniki tokenizowane wydają się sztywne, ponieważ chociaż mogę tokenizować wszystko w nawiasach, co się dzieje, gdy brakuje?


title: Jak zrobić wydarzenie cykliczne? Takich jak wpis w porządku obrad

text: Mam encję (model) o nazwie Powiadomienie, pokazywaną Użytkownikom systemu. Do tej pory Powiadomienia były tworzone i pokazywane użytkownikom natychmiast po ich włączeniu oraz ukrywane po wyłączeniu lub usunięciu. Ponadto użytkownicy mogą zamknąć/anulować powiadomienie, aby już go nie widzieć, a ta akcja jest utrwalana w kolekcji (tabeli bazy danych) powiadomień wyświetlanych przez użytkowników. System musi teraz zaimplementować powtórki tych Powiadomień, np. agendy czy kalendarze, w których wpisy mogą się powtarzać codziennie, co tydzień, co miesiąc itd., a także wysłać e-mail do Użytkownika na dzień przed datą wystąpienia Powiadomienia. Koncepcyjnie jak to jest realizowane? A co z obliczeniem powtórzeń? Do tej pory myślałem o utrwaleniu trzech nowych właściwości w encji Powiadomienie, jednej dla typu powtarzania (codziennie, co tydzień itp.), jednej dla daty (godziny) rozpoczęcia i drugiej dla daty (godziny) zakończenia. i nową kolekcję (tabela bazy danych), w której zapisuję „wystąpienia” tych powiadomień (nie instancje, takie jak instancja klasy, ale bardziej ogólna koncepcja pojedynczego wystąpienia czegoś), z właściwościami takimi jak identyfikator powiadomienia oraz data (godzina) rozpoczęcia i zakończenia tego wystąpienia. W ten sposób same Powiadomienia nie byłyby prezentowane Użytkownikom, ale wystąpienia tych Powiadomień. Potem pomyślałem o zaplanowanym zadaniu (cronjob), które działa kilka razy dziennie, generując instancje z kolekcji Notifications, obliczając, kiedy te powtórzenia powinny się zdarzyć, a także wysyłając e-mail, gdy obliczona data instancji jest jutro. Nie jestem pewien, czy to najlepszy sposób i chciałbym usłyszeć rekomendacje. Zacząłem go wdrażać w ten sposób i jak na razie wydaje się to łatwe, ale zaraz zacznę od logiki zaplanowanego zadania (najtrudniejsza część) i zastanawiam się, czy obliczenie daty wystąpienia na podstawie instancji będzie bardzo skomplikowane o specyfikacji powtórzeń (codziennie wydaje się łatwe, dodaj dzień do wartości daty, ale co powiesz na co trzeci piątek miesiąca?).


title: Gdzie mogę dowiedzieć się więcej o programowaniu niskiego poziomu?

text: Przede wszystkim ukończyłem studia na uniwersytecie z tytułem licencjata. w informatyce i chociaż czuję, że mam mnóstwo doświadczenia w programowaniu ..... Naprawdę przegapiłem rzeczy SUPER niskiego poziomu. C dość dobrze znam C++, ale w zasadzie nie znam asemblera. Tak naprawdę nie wiem, jakie są rzeczy takie jak ślady stosu ...... i w tym przypadku tak naprawdę nie rozumiem stosu, przepełnienia stosu lub przepełnienia bufora ani niczego w tym rodzaju. Zasadniczo wszystko na niskim spektrum (czego naprawdę muszę się nauczyć). Uważam również, że hakowanie / łamanie jest interesujące (z punktu edukacyjnego), które wykorzystują te rzeczy niskiego poziomu (jak przepełnienie stosu). Gdzie mógłbym się dowiedzieć o takich rzeczach? Jaki byłby dobry sposób na rozpoczęcie?


title: Jak postępować z „darmowymi projektami”? Czy należy je akceptować, czy nie?

text: Ok, jako inżynier oprogramowania czuję, że moje umiejętności są cenne w innych kontekstach, na przykład przyszła do mnie koleżanka i poprosiła mnie o założenie strony internetowej dla jej badań, a ja zrobiłem to za darmo. Na początku myślałem, że to wyeksponuje moje nazwisko i da mi coś do pracy i doskonalenia umiejętności w wolnym czasie... Ale nie mogłem przestać myśleć, że marnuję czas na niepłatną pracę. Teraz przychodzi do mnie drugi znajomy z tą samą historią: „Czy mógłbyś to dla mnie zrobić? Umieszczę tam twoje nazwisko, wiesz, zdobędzie mnóstwo wyświetleń… Yadda Yadda…” Jak sobie radzisz ten? Czy w wolnym czasie pobierasz opłaty za usługi, nawet jeśli mówimy o przyjaciołach? Jeśli tak, to jak zapłaciłbyś za to, na przykład jako konsultant?


title: Który fragment kodu wolisz znaleźć?

text: Właśnie spojrzałem na klasę szyfrowania CodeIgniters i znalazłem następującą funkcję: function sha1($str) { if ( ! function_exists('sha1')) { if ( ! function_exists('mhash')) { // użyj implementacji CI require_once(BASEPATH.'libraries/Sha1'.EXT); $SH = nowy CI_SHA; return $SH->generuj($str); } else { // użyj alternatywnej wbudowanej funkcji return bin2hex(mhash(MHASH_SHA1, $str)); } } else { // użyj wbudowanej funkcji return sha1($str); } } Gdybym pisał tę funkcję, zrobiłbym to tak: function sha1($str) { // użyj wbudowanej funkcji if(function_exists('sha1')) return sha1($str); // użyj alternatywnej wbudowanej funkcji if(function_exists('mhash')) return bin2hex(mhash(MHASH_SHA1, $str)); // użyj implementacji CI require_once(BASEPATH.'libraries/Sha1'.EXT); $SH = nowy CI_SHA; return $SH->generuj($str); }      Który jest lepszy i dlaczego?


title: Jak uchronić swoje podstawowe umiejętności przed atrofią?

text: Programuję od około 10 lat i zacząłem migrować na stanowisko kierownicze projektów. Nadal koduję, ale teraz rzadziej. Jedną z rzeczy, które moim zdaniem powstrzymują mnie w mojej karierze, jest to, że nie mogę „odpuścić”. Myślę, że boję się, że ciężko wywalczone umiejętności programistyczne zanikną, kiedy siedzę na spotkaniach i notuję wymagania. (Nie wspominając o tym, że nie ufam ludziom, którzy nie rozumieją kodu, piszą wymagania.) Nie mogę po prostu czytać książek i czasopism o kodowaniu. W wolnym czasie zajmuję się niektórymi projektami open source, a stackoverflow i przyjaciele trochę pomagają, ponieważ mam możliwość pomagania ludziom w rozwiązywaniu problemów programistycznych bez mikrozarządzania, ale żaden z nich nie jest strasznie ustrukturyzowany, więc praca jest kusząca najpierw o problemach, które mogę łatwo rozwiązać. Myślę, że chciałbym znaleźć uporządkowany zestaw ćwiczeń (nieważne, w jakim języku lub środowisku), które… * …mogę wykonywać okresowo * …ma pewien rodzaj wymaganego czasu, więc mogę stwierdzić, czy byłem wygłupianie się * …ma jakiś rodzaj punktacji, więc mogę stwierdzić, czy popełniam błędy Czy istnieje coś takiego? Co byś zrobił, aby zachować świeżość swoich umiejętności?


title: Operacje na wektorach: vec1.dot(vec2) vs vec1 * vec2 vs dot(vec1, vec2)

text: Jaki jest twój preferowany sposób implementacji/używania operacji wektorowych? * vec1.dot(vec2) * pozwala na ponowne użycie vec1, ale jest trudny do odczytania dla dłuższych równań * dot(vec1, vec2) * Mój przyjaciel woli to, ponieważ "kropka" nie jest własnością wektora * vec1 * vec2 * prawdopodobnie wygląda najlepiej, ale nie we wszystkich językach (np. Java)


title: Przejście z PHP do Pythona — uwagi dotyczące frameworka

text: Jako długoletni programista PHP zaczynam teraz poznawać świat Pythona. Zawęziłem wybór frameworka do Django i Pyramid, prawdopodobnie nie jest to wielka niespodzianka. Grałem trochę w oba frameworki. Bardzo podoba mi się admin Djangos i fakt, że wszystko jest już zintegrowane. Moje obawy związane z Django polegają jednak na tym, że wydaje się, że trudniej jest wyrwać się z robienia rzeczy tak, jak oni chcą. W przypadku dużej, złożonej witryny może to być problematyczne w dalszej części drogi. Czy to uzasadniona obawa? To, co naprawdę przykuło moją uwagę, to fakt, że społeczność Django wydaje się DUŻO większa. Nie mówiąc już o ogromnej liczbie dokumentów i samouczków dla Django (nie mogłeś zbyt wiele dla Pyramid poza oficjalnymi dokumentami?). Największym problemem jest sama liczba aplikacji, które zostały zbudowane specjalnie dla Django: południe, smaczne, wielodostępne, rejestracja itp. Czy mam rację zakładając, że te aplikacje są (w większości?) specyficzne dla Django i że nie mogą być używany w Piramidzie? Gdzie są konkretne aplikacje Pyramid? A może będą współpracować dobrze?


title: Ochrona CSRF z inicjatorem kodu

text: Mam bardzo małą wiedzę na temat bezpieczeństwa aplikacji. Często widziałem, jak chronią twoją aplikację przed atakami csrf, gdy programiści używają tokenów i przekazują te tokeny z żądaniem weryfikacji. Chcę wiedzieć, czy właśnie sprawdzam, czy żądanie pochodzi z mojego serwera i odrzucam wszystkie żądania pochodzące z innego serwera, jak może to być niebezpieczne?


title: Wykorzystanie wzoru Visitor i możliwe nad inżynierią

text: Zajmuję się tworzeniem małej aplikacji w .NET i myślę o użyciu XML, aby zapisać model obiektowy. Moją pierwszą myślą było oddzielenie modelu i generowania XML za pomocą wzorca Visitor. Klasa poruszałaby się po hierarchii obiektów i tworzyła kod XML. Ale potem pomyślałem o metodzie programowania ekstremalnego i zasadzie "nie będziesz tego potrzebować" (YAGNI). Nie przewiduję potrzeby tworzenia kolejnego odwiedzającego, aby wyprowadzić dane w inny sposób (jest to prosta aplikacja). Chcę tylko użyć formatu czytelnego dla człowieka, aby zapisać dane aplikacji. Czy powinienem użyć wzorca odwiedzającego, czy też po prostu przepracowałem rozwiązanie?


title: Struktura aplikacji jednostronicowej

text: Zamierzam opracować aplikację jednostronicową i prawdopodobnie będę używać node.js do kodowania po stronie serwera. Staram się uzyskać poradę dotyczącą kodowania po stronie klienta. Chociaż zdaję sobie sprawę, że coś takiego jak backbone.js naprawdę mi pomogłoby, ponieważ jestem bardzo nowy w rozwoju, krzywa uczenia się jest dla mnie bardzo wysoka. Więc zamierzam używać czegoś takiego jak dust.js do tworzenia szablonów po stronie klienta. Obecnie tworzę kilka makiet ekranów (w sumie jest ich 4), które są budowane w zwykłym html/css. Kiedy zabieram się za kodowanie po stronie klienta i serwera, czy lepiej jest dla mnie połączyć cały kod prezentacji w jeden plik html, czy w wiele plików, a następnie wywoływać je osobno, biorąc pod uwagę, że jest to aplikacja jednostronicowa, którą tworzę?


title: Jak wybrać między lekką lub ciężką platformą dla aplikacji internetowych?

text: W mojej obecnej roli programisty w sklepie **Java/Spring/Hibernate/JSF** czasami jestem proszony o tworzenie wielkoskalowych aplikacji internetowych z wieloma systemami interfejsów i/lub dużymi bazami danych _jak również_ sieciami na małą skalę aplikacje o małym natężeniu ruchu i/lub proste bazy danych. Aby dostosować się do tej odmiany, chciałbym mieć do wyboru 2 stosy technologii, w zależności od typu aplikacji, którą mam opracować. Myślę, że przyniosłoby to nam korzyści, ponieważ uważam, że nasz stos technologiczny, o którym wspomniałem powyżej, jest nieco przekombinowany lub niewygodny dla małych, prostych aplikacji CRUD. Jeśli na przykład wybrałem **Spring Framework** do moich dużych aplikacji i **Graj! Framework** dla moich aplikacji na małą skalę, jak wybrać, którego użyć w danej aplikacji? Innymi słowy, jak mogę stwierdzić, czy proponowana aplikacja internetowa kwalifikuje się do ciężkiego frameworka, takiego jak Spring, czy może odnieść więcej korzyści z lekkiego, zwinnego frameworka, takiego jak Play? Czy ktoś może mi podać kilka wstępnych punktów kontrolnych, które pomogą mi zdecydować, jakiego typu frameworka użyć (ciężki lub lekki)? Jeśli korzystasz z tego podejścia opartego na dwóch platformach, powiedz mi, jakich kryteriów używasz, aby zdecydować, który framework najlepiej pasuje do danej aplikacji internetowej.


title: Czy składnia języków programowania zależy od ich implementacji?

text: Chociaż moje pytanie może być zupełnie nieistotne, ale wyczułem wzorzec między większością języków programowania a ich oficjalnymi implementacjami. **Interpretowane** (zinterpretowane bajtowo?) Języki takie jak Python , Lua itp. mają zwykle bardzo łagodną i łatwą składnię i są zazwyczaj bez typu lub nie wymagają od programisty jawnego pisania typów zmiennych w kodzie źródłowym; **Skompilowane** języki, takie jak C , C++ , Pascal itp. zwykle mają ścisłą składnię, zazwyczaj mają typy i wymagają więcej czasu na kod / rozwój Języki, których oficjalne implementacje są **skompilowane z JIT**, takie jak Java / C#, zwykle są unikalny kompromis między powyższymi dwoma z jednymi z najlepszych cech obu. Niektóre z bardziej nowoczesnych skompilowanych języków programowania, takich jak D i Vala (oraz implementacja Java GNU GJC) są prawdopodobnie wyjątkiem od tej reguły i przypominają składnię i funkcje języków skompilowanych z JIT, takich jak Java i C#. Moje pierwsze pytanie brzmi, czy to naprawdę istotne? A może to tylko zbieg okoliczności, że większość interpretowanych języków ma łatwą składnię , języki skompilowane w JIT mają umiarkowaną składnię i funkcje itp. Po drugie, jeśli to nie przypadek, to dlaczego? Na przykład, czy niektóre funkcje mogą być zaimplementowane w języku programowania tylko wtedy, gdy je kompilujesz JIT?


title: Czy powinienem zmienić nazwisko autora w pliku klasy, jeśli dokonam więcej niż 80% zmian?

text: Dokonuję refaktoryzacji istniejącego zestawu klas testowych java do automatycznych testów interfejsu użytkownika. Czasami w końcu wprowadzam ogromne zmiany w pliku klasy lub całkowicie go przerabiam. To sprawia, że myślę, że kiedy przepisuję całą klasę, to czy powinienem zmienić nazwisko autora w sekcji komentarzy na moje? Czy jestem chciwy? czy przyda się, aby ktoś zobaczył moje imię i zapytał mnie w razie wątpliwości?


title: Czy więcej komentarzy jest lepszych w środowiskach o dużym obrocie?

text: Rozmawiałem dzisiaj z kolegą. Pracujemy nad kodem dla dwóch różnych projektów. W moim przypadku jestem jedyną osobą pracującą nad moim kodem; w jej przypadku wiele osób pracuje nad tym samym kodem, w tym studenci spółdzielni, którzy przychodzą i odchodzą dość regularnie (co 8-12 miesięcy). Powiedziała, że jest liberalna w swoich komentarzach, umieszczając je wszędzie. Jej rozumowanie jest takie, że pomaga jej zapamiętać, gdzie są rzeczy i co robią, ponieważ większość kodu nie została napisana przez nią i może zostać zmieniona przez kogoś innego niż ona. Tymczasem staram się minimalizować komentarze w moim kodzie, umieszczając je tylko w miejscach z nieoczywistym obejściem lub błędem. Jednak ogólnie lepiej rozumiem mój kod i mam nad nim większą kontrolę. Moja opinia na ten temat powinna być minimalna, a kod powinien opowiadać większość historii, ale jej rozumowanie też ma sens. Czy są jakieś błędy w jej rozumowaniu? Może to zaśmiecać kod, ale ostatecznie może być bardzo pomocne, jeśli wiele osób pracuje nad nim w krótkim lub średnim okresie.


title: Która platforma dla mobilnej aplikacji internetowej HTML5?

text: Byłem programistą aplikacji na iPhone'a. Teraz często pojawiają się pytania dotyczące wieloplatformowej aplikacji mobilnej. Więc szukam rozwiązania internetowego i znajduję Sencha Touch. Czy jest więcej opcji? Jakie masz doświadczenie i komentarze na temat tych ram? Dziękuję!


title: Które wzorce projektowe GOF są już zaimplementowane jako pierwszorzędne funkcje językowe w C#?

text: (To pytanie zostało zamknięte na Stack Overflow, ponieważ jest „zbyt szerokie” i „nie jest prawdziwym pytaniem”, więc może jest bardziej odpowiednie tutaj?) Zainspirowane tym pytaniem. Wiemy, że zdarzenia są implementacją wzorca Observer na poziomie języka. Czy istnieją inne wzorce projektowe zaimplementowane jako funkcje języka w C#? Chcę zachować to pytanie specyficzne dla języka C#, ponieważ istnieje wiele wzorców projektowych zaimplementowanych w innych językach i chcę, aby to było skoncentrowane. Nie szukam implementacji wzorców w BCL (takich jak dekorator w wielu klasach WCF lub Factory Method w `WebClient`), ale wzorce _language-level_. Do tej pory znam obserwatora (`event`) i iteratora (`foreach` w połączeniu z wieloma klasami i interfejsami BCL). Brakuje chyba innych oczywistych.


title: test rozwoju frontendu - html/css/jquery/javascript

text: Nieustannie ulepszamy nasz test front-end developera, który przeprowadzamy wewnętrznie po zdaniu przez kandydata testu online. Test online zawiera następujące pytania: * Jak zaczyna się pętla for? * Jaki jest prawidłowy sposób napisania tablicy JavaScript? * Napisz selektor css dla trzeciego elementu listy w uporządkowanej liście o identyfikatorze "myList" * For var shoppingList = ["mleko", "kluski", "chleb"]; - jak zwrócilibyście knedle do zmiennej o nazwie foodItem? * FizzBuzz Więc omówimy podstawy i spróbujemy uzyskać wgląd w ich wiedzę. Ale w domu naprawdę chcemy przetestować ich umiejętności rozwiązywania problemów, podejście logiczne itp. I nie sądzę, że znaleźliśmy dobry sposób na zrobienie tego dla programistów front-end. Dla użytkowników interfejsu jest to łatwiejsze — dajemy im wyzwanie projektowe i białą tablicę i sprawdzamy, czy proszą o więcej informacji, jak podchodzą do problemu itp. Ale nie znaleźliśmy sposobu na powtórzenie tego podejścia z programistami internetowymi ( dla przypomnienia, jestem jednym z twórców stron internetowych w zespole) Myśli o tym, jak podejść?


title: Żarówka do długotrwałego użytkowania komputera

text: Chciałbym otrzymać rekomendację dotyczącą wyboru rodzaju żarówki (np. CFL) i temperatury barwowej, która jest najlepsza przy dłuższym użytkowaniu komputera. Zajmuję się również dziedziną, w której ważna jest spójność kolorów, więc jeśli konkretna temperatura lampy jest przydatna, również chciałbym o tym wiedzieć.


title: Jakie są alternatywy dla „przesłaniania metody” podczas używania kompozycji zamiast dziedziczenia?

text: Jeśli mamy przedkładać kompozycję nad dziedziczenie, część dotycząca danych jest jasna, przynajmniej dla mnie. Nie mam jasnego rozwiązania, jak należy zaimplementować metody nadpisywania lub po prostu ich implementacji, jeśli są zdefiniowane w postaci czysto wirtualnej. Oczywistym sposobem jest zawinięcie instancji reprezentującej klasę bazową w instancję reprezentującą podklasę. Ale głównymi wadami tego jest to, że jeśli masz powiedzmy 10 metod i chcesz zastąpić jedną, i tak musisz delegować wszystkie inne metody. A gdyby było kilka warstw dziedziczenia, masz teraz kilka warstw zawijania, co staje się coraz mniej wydajne. Ponadto rozwiązuje to tylko problem obiektu „klient”; kiedy inny obiekt wywołuje górne opakowanie, dzieje się tak, jak w przypadku dziedziczenia. Ale kiedy metoda najgłębszej instancji, klasa bazowa, wywołuje własne metody, które zostały opakowane i zmodyfikowane, zawijanie nie ma żadnego efektu: wywołanie jest wykonywane przez własną metodę, a nie przez najwyższe opakowanie. Jedną z ekstremalnych alternatyw, która rozwiązałaby te problemy, byłaby jedna instancja na metodę. Zawijasz tylko te metody, które chcesz nadpisać, więc nie ma bezcelowej delegacji. Ale teraz otrzymujesz niesamowitą liczbę klas i instancji obiektów, co będzie miało negatywny wpływ na użycie pamięci, a to będzie wymagało również dużo więcej kodowania. Czy istnieją więc alternatywy (najlepiej alternatywy, które mogą być użyte w _Java_ ), które: * Nie powodują wielu poziomów bezcelowej delegacji bez żadnych zmian. * Upewnij się, że nie tylko klient obiektu, ale także cały kod samego obiektu, jest świadomy, jaka implementacja metody powinna zostać wywołana. * Nie powoduje eksplozji klas i instancji. * Idealnie umieszcza dodatkowy narzut pamięci, który jest wymagany na poziomie "klasy"/"konkretnej kompozycji" (statyczny, jeśli chcesz), zamiast zmuszania każdego obiektu do płacenia narzutu pamięci związanego z kompozycją. Moje odczucie mówi mi, że instancja reprezentująca klasę bazową powinna znajdować się na „szczycie” stosu/warstw, aby bezpośrednio odbierać wywołania i mogła je również przetwarzać bezpośrednio, jeśli nie zostaną nadpisane. Ale nie wiem, jak to zrobić w ten sposób. [EDYTUJ] Wygląda na to, że wiele osób czytających to pytanie myśli, że zastanawiam się, czy powinienem użyć kompozycji czy dziedziczenia, i że „poprowadzenie” mnie do jednego lub drugiego rozwiąże mój problem. Nie o to chodzi. Zawsze używam dziedziczenia, kiedy tylko mogę, z prostego faktu, że kompozycja wymaga więcej kodowania, a także więcej pamięci. Nie trzeba mnie przekonywać, że dziedzictwo nie jest złem. Mam bardzo dobry powód, aby chcieć użyć kompozycji. Chcę stworzyć system, który modeluje obiekty domeny, które mogą „zmieniać naturę” w czasie. Oznacza to, że w wyniku pewnych działań mogą z czasem zarówno zyskać, jak i stracić funkcjonalność/właściwości. Jest to o wiele bardziej naturalne, gdy jest modelowane jako kompozycja. Gdyby komponenty, które mogą być dynamicznie dodawane i usuwane, składały się wyłącznie z właściwości, byłoby to łatwe. W rzeczywistości znalazłem już 14 różnych możliwych projektów, które obsługują ten przypadek, z różnymi kompromisami w zakresie złożoności kodu, zużycia pamięci i szybkości. Prawdziwy problem pojawia się, gdy wszystkie te komponenty muszą być świadome siebie nawzajem i rozmawiać ze sobą. Nie jest to wymagane, gdy są to tylko „fasola” (w sensie Java). Chcę wiedzieć, czy są jakieś, a miejmy nadzieję, kilka sposobów na umożliwienie komponentom komunikowania się ze sobą, a dokładniej, jak mieć kilka komponentów _tego samego typu_ , gdzie jeden służy jako klasa bazowa, a inne stopniowo zastępują niektóre z jego metod. Widzę dwa sposoby na symulację nadrzędności obecnej w dziedziczeniu. Pierwszym z nich jest posiadanie komponentu podstawowego, a wszystkie nadrzędne komponenty są budowane jako opakowanie na innym komponencie tego samego typu. W ten sposób możesz wybrać w czasie wykonywania, którą hierarchię składników chcesz. To jak rury i filtry. Problem polega jednak na tym, że w przypadku dziedziczenia klasa pochodna nie tylko może wywoływać metody klasy bazowej, ale działa też na odwrót. Klasa bazowa może deklarować czystą metodę wirtualną, która jest implementowana przez podklasę, a klasa bazowa może wywoływać tę metodę. Nie wiem, jak to zrobić, używając całego opakowania komponentów. Ponadto, jeśli mamy N warstw dziedziczenia/zawijania, to wywołania metody komponentu podstawowego otrzymują N poziomu delegacji, nawet jeśli metoda nie została nadpisana przez żaden z komponentów zawijających. Inną alternatywą, jak powiedziałem w "Jedna ekstremalna alternatywa...", jest zrobienie tego jak powyżej, ale zmuszenie każdego komponentu do zawierania _jednej metody_. W takim przypadku rozwiązujemy problem polegający na tym, że klasa bazowa nie widzi/wywołuje metod klas pochodnych, dla wszystkich metod, z wyjątkiem własnej metody. Tak więc działa teraz poprawnie we wszystkich przypadkach z wyjątkiem rekurencji. Ale cena, jaką płacimy za zużycie pamięci, jest wysoka, przynajmniej w Javie. A Java nie jest "funkcjonalna", więc jest dużo narzutu składni, aby przekształcić każdą metodę obiektową w indywidualny obiekt. Jeśli istnieją lepsze alternatywy niż te dwie wymienione powyżej, chciałbym o tym wiedzieć.


title: Jak szeroki powinien być student informatyki/inżynierii?

text: Zostały mi niecałe 2 lata studiów i nadal nie wiem na czym się skupić. Ale tu nie chodzi o mnie, chodzi o bycie przyszłym deweloperem. Zdaję sobie sprawę, że pytania typu „Którego języka powinienem nauczyć się dalej?” nie są zbyt popularne, ale myślę, że moje pytanie jest szersze. Często widzę, że ludzie piszą takie rzeczy jak „Musisz nauczyć się wielu różnych rzeczy. Bycie programistą nie polega na nauce jednego języka programowania/technologii i robieniu tego przez resztę życia”. No jasne, ale nie da się wszystkiego dokładnie nauczyć. Czy to oznacza, że należy po prostu nauczyć się podstaw wszystkiego, a potem po zdobyciu konkretnej pracy nauczyć się kilku rzeczy dokładniej? Mam na myśli, że najlepszym sposobem na naukę programowania jest samo programowanie... Ale projekty wymagają czasu. Czy przeciętny programista naprawdę przełącza się między (na przykład) byciem programistą internetowym, robieniem sztucznej inteligencji i rzeczy związanych z uczeniem maszynowym i programowaniem blisko sprzętu? To znaczy, wiem wiele różnych rzeczy, ale nie czuję się biegły w żadnej z tych rzeczy. Jeśli chcę znaleźć pracę jako web developer (to tylko przykład) po skończeniu studiów, czy nie powinienem zrobić jakiegoś projektu związanego z web (być może używając czegoś, czego wciąż nie wiem), zamiast próbować uczyć się programowania funkcjonalnego? Pytanie więc brzmi: jak szerokie powinno być pole zainteresowania studenta informatyki? Jeden język programowania jest z pewnością zbyt wąski, ale co jest zbyt szerokie?


title: Jak ustrukturyzować program stażowy?

text: W mojej firmie myślimy o uruchomieniu programu szkoleniowego dla programistów. Myślimy o przyciągnięciu osób z dyplomem CS, ale niewielkim lub żadnym doświadczeniem (lub osób z odpowiednim doświadczeniem, ale bez dyplomu). Zastanawiam się, co powinien oferować program stażysty i jak go ustrukturyzować. Chcemy, aby stażyści byli prawdziwymi członkami naszego zespołu programistów, ale korzystali z wyższego poziomu nadzoru, wzajemnej oceny, programowania w parach itp. Powinniśmy również zapewnić pewną ilość wykładów/mentoringu i zapewnić pewną wymaganą lekturę. Myślę, że program powinien zawierać plan na dwa lata, ale nie jestem pewien. Programy szkoleniowe nie są powszechne wśród programistów w moim kraju. Więc jakie elementy byś uwzględnił? Jak proponujesz strukturę mentoringu? Na jakich zasadach i praktykach powinniśmy się skupić i jak opracować „program nauczania”? PS: Nasz obecny zespół składa się z czterech wysoko wykwalifikowanych programistów Agile. Najczęściej robimy .NET i ćwiczymy TDD.


title: Minimalna rozliczalna jednostka czasu – branżowy standard programowania kontraktowego?

text: Jesteśmy klientem, który niedawno wynajął firmę zajmującą się programowaniem kontraktowym do wykonania dość skoncentrowanej pracy (zasadniczo pisanie „skryptów” rozszerzających funkcjonalność aplikacji firm trzecich). Próbujemy ocenić ich wydajność i wartość niektórych prac, które dla nas wykonali, ale jesteśmy trochę nowi w korzystaniu z programistów kontraktowych i przydałaby się nam pomoc: 1. Jeśli zatrudniałeś firmę jako wykonawcę do wykonania program komputerowy dla Ciebie, a minimalna jednostka czasu rozliczeniowego nie została wymieniona w umowie, czy spodziewałbyś się, że będziesz rozliczany w ratach za całą godzinę (tak, że 5 minut rozmowy telefonicznej jest rozliczane jako 1 godzina)? 2. Jaka jest standardowa praktyka branżowa w zakresie minimalnej rozliczanej jednostki czasu pracy związanej z programowaniem kontraktowym? 3. Gdybyś zatrudnił firmę wykonawczą, która zatrudniała dwóch pracowników, czy spodziewałbyś się, że czas każdej osoby zostanie podzielony i zaokrąglony w górę do minimalnej rozliczanej jednostki czasu? Powiedzmy, że starszy facet pracował z młodszym facetem przez 15 minut, a młodszy pracował tego dnia o 4:15. Czy zgodziłbyś się na rachunek za 1 godzinę (starszy facet) plus 5 godzin (młodszy facet), czy oczekiwałbyś rachunku za tylko 5 godzin? Moje dalsze pytanie dotyczące kluczowych punktów kontraktowych może być dla Ciebie interesujące.


title: Jaką rolę w platformie odgrywa „językowa historia kultury”?

text: Niedawno natknąłem się na ten artykuł sprzed kilku lat. Twierdzi, że znaczące różnice w kulturze otaczającej VB i C#, a nie faktyczne różnice w języku, przyczyniają się do tego, że koderzy C# są ogólnie bardziej utalentowani niż koderzy VB. Oczywiście spowodowało to wiele wojen, a pytanie, czy C#ers czy VBers są głupsi, nigdy nie otrzyma odpowiedzi. Biorąc to pod uwagę, autorzy twierdzą, że kultura otaczająca konkretną platformę przyczynia się do jakości zespołu, nadal może być wiarygodna. Na przykład, mimo że Java jest obecnie bardziej wydajna do tworzenia aplikacji, zespół programistów Google Go wydaje się być przeciętnie wyższego kalibru niż zespół programistów Java, ponieważ aby nauczyć się Go, programista prawdopodobnie być super-wczesnym adeptem i mistrzem hakowania granic. Krótko mówiąc, **jak kultura otaczająca jedną lub inną platformę wpływa na jakość przeciętnego programisty na tej platformie, jeśli w ogóle?**


title: Pisanie programów bez graficznego IDE

text: Nie jestem pewien, czy jest to w ogóle możliwe, ale obejrzałem kilka filmów z przykładami programowania, w których wydaje się, że program jest pisany w jakimś wierszu poleceń, a nie w ładnym graficznym IDE. Jestem po prostu ciekaw, co może się dziać w tych filmach. Czy można napisać program bez IDE? oto dwa przykłady: http://www.youtube.com/watch?v=hFSY9cWjO8o(@6 min) http://www.youtube.com/watch?v=tKTZoB2Vjuk (@ 5 min) Czy ktoś mógłby wyjaśnić, jak to jest Gotowe? Dziękuję wszystkim za wspaniałą opinię!


title: Skalowanie aplikacji

text: Co powinienem wziąć pod uwagę, przenosząc aplikację (internet) z kilku do setek lub tysięcy użytkowników? Zasadniczo, co powinienem wziąć pod uwagę, myśląc o eskalacji?


title: Jak zostałeś nawróconym na stałą poprawność?

text: Po 15 latach C++ nadal nie nauczyłem się kochać używania const. Rozumiem jego zastosowanie, ale tak naprawdę nigdy nie byłem w sytuacji, w której bycie poprawnym pozwoliłoby uniknąć problemu, z którym się borykałem. Jak więc pokochałeś zalety consts?


title: Wielowątkowy JavaScript?

text: Wiem, wiem — obecnie nie jest to możliwe, ALE moje pytanie brzmi: Czy byłoby możliwe napisanie wtyczki do przeglądarek dla głównych przeglądarek, które _włączają_ prawdziwy, wielowątkowy JavaScript? Po prostu wydaje się, że byłoby to możliwe, a jeśli tak, to wyniosłoby sieć (nie wspominając o JavaScript) na nowe wyżyny. Dziękuję!


title: Wzór obserwatora za pomocą mechanizmu ciągnącego

text: Zastanawiałem się nad następującą implementacją publicznej void update (Observable obs, Object arg), podczas gdy chcę wysłać do wszystkich moich obserwatorów i zaktualizować za pomocą `notifyObserver()` i przekazując referencje do `this` obserwator może użyć „getters” od podmiotu, aby wyciągnąć żądane informacje. do czego służy argument `arg` w metodzie aktualizacji?


title: Użyj kontrolera w widoku w MVC

text: Mam problem z przekonaniem kolegów z zespołu, dlaczego nie powinniśmy używać (bezpośredniego odniesienia) kontrolera w widoku podczas tworzenia komponentów w duchu MVC. Odwoływałem się do oddzielenia i naturalnej intuicji, ale i tak te argumenty się nie sprawdziły. Na swoją obronę mówią, że to normalny kompromis. Jakie argumenty są przekonujące? Czy mają rację? Jak praktyka używania kontrolera w widoku może w dłuższej perspektywie wpłynąć na projekt?


title: Czy projekt zazwyczaj jest najpierw budowany lub projektowany (graficznie)?

text: Załóżmy, że zamierzasz zbudować dość dużą witrynę internetową. Czy wszystkie strony zostałyby zaprojektowane przed ich zbudowaniem, czy też wszystkie strony byłyby zbudowane i funkcjonowałyby zanim zostaną zaprojektowane graficznie? Jestem programistą i grafikiem. Kiedy buduję nową stronę internetową, zwykle mam ogólny zarys wszystkich stron, których będę potrzebować i jak będą działać. Następnie zwykle zaczynam budować strony, ponieważ buduję strony, jednocześnie projektuję interfejs graficzny. Zaczynam myśleć, że to źle, ponieważ każda strona wygląda dobrze, ale nie jednolicie. A nawet jeśli wydają się być jednolite, tak naprawdę nie są. Na przykład na **stronie A** i **stronie B** nagłówek wygląda tak samo, ale na **stronie A** ma `50px margines`, natomiast na **stronie B** ma `50px dopełnienie”. Stylizacja nagłówka na **stronie A** jest zdefiniowana w jednym pliku `CSS`, a stylizacja nagłówka na **stronie B** jest zdefiniowana w innym. Z czasem może stać się gigantycznym bałaganem. Potrzebuję nowego podejścia. Nauczyłem się na wiele sposobów, aby tego typu rzeczy nie miały miejsca w kodzie (DRY). Jednak nie bardzo wiem, jak je zastosować w tym obszarze. A może po prostu nie mam obecnie tej dyscypliny. Jednym z pomysłów jest, po zakończeniu szkicu projektu, stworzenie projektów graficznych tego, jak będą wyglądały wszystkie strony, zanim je zbuduję. Wtedy powinienem być w stanie zaprojektować style przed budowaniem stron, więc nie będę wprowadzał zduplikowanych definicji stylów podczas tworzenia. Problem polega na tym, że zanim zaprojektuję stronę w HTML/CSS, zaprojektuję ją w Photoshopie. Jednak nie zawsze działają dokładnie tak, jak zaprojektowałem je w Photoshopie. Czasami muszę wprowadzić poprawki, aby wyglądało to dobrze na stronie. Czasami potrzebne korekty różnią się w zależności od strony. Nie wiem, jak mogę to zaplanować z wyprzedzeniem. Jaki jest normalny przepływ pracy dla czegoś takiego?


title: Radzenie sobie z opcjonalnymi zależnościami klas

text: Zastanawiam się, jak radzicie sobie z opcjonalnymi właściwościami klasy. Powiedzmy, że mam produkt, który może pączkować, nie musi mieć właściwości „kolor”. Czy to naprawdę najlepszy sposób na zrobienie tego? Czy powinienem używać wzorca zerowego obiektu? Może powinienem użyć wzorca strategii? Czy powinienem użyć tutaj wzoru dekoratora, aby mieć `Product` i `ProductWithColor`? Co się stanie, jeśli inna właściwość zostanie dodana i stanie się opcjonalna? <?php klasa Produkt { prywatne $id; prywatny $tytuł; /** * @var string|null */ private $color; function __construct($id, $title, array $color = null) { $this->id = $id; $ten->tytuł = $tytuł; $ten->kolor = $kolor; } }


title: Zewnętrzny bufor ramek OpenGL Dwa różne cele

text: Próbuję użyć obiektów bufora ramki do renderowania w tekstury. W poniższym kodzie mam obiekt framebufferobject z 2 teksturami i dołączonym do niego buforem głębokości. Moim celem jest wyrenderowanie kolorowego sześcianu z przednią i tylną powierzchnią wybraną dla dwóch tekstur. Później użyję ich jako danych wejściowych do programu Fragment Shader nazwanego w moim kodzie "shaderProgramFinal". Jednak nie byłem w stanie wyrenderować zarówno wersji tylnej, jak i przedniej, w dwóch teksturach. Stają się jednocześnie wersją pozbawioną tylnej lub przedniej twarzy. Chcę, aby frontTex zawierał poprzednią selekcję, a backTex zawierał przednią wersję bez selekcji. Czy ktoś może mi pomóc, gdzie się mylę w moim kodzie poniżej? #include <GL/glew.h> #include <GLFW/glfw3.h> #include <stdlib.h> #include <stdio.h> #include "Shader.hpp" #include "ShaderProgram.hpp" #include <math .h> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> #include <glm/gtc/type_ptr.hpp> #include <glm/gtx/euler_angles.hpp> #define screenSizeX 500 # zdefiniuj rozmiarekranuY 500 GLFWwindow* okno; static void error_callback(int error, const char* description){fputs(description, stderr);} void glSetup(){ glfwInit(); glfwSetErrorCallback(error_callback); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,0); glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE,GL_FALSE); window = glfwCreateWindow(screenSizeX, screenSizeY, "Graphics World", NULL, NULL); glfwMakeContextCurrent(okno); glewExperimental = GL_TRUE; glewInit(); printf ("Renderer: %s\n", glGetString (GL_RENDERER)); printf ("Obsługiwana wersja OpenGL %s\n", glGetString (GL_VERSION)); glEnable (GL_DEPTH_TEST); glDepthFunc (GL_LESS); } void shaderSetup(Shader* vertexShader, Shader* fragmentShader, ShaderProgram* shaderProgram){ vertexShader->loadFromFile("myVert.S"); vertexShader->kompilacja(); fragmentShader->loadFromFile("myFrag.S"); fragmentShader->kompilacja(); shaderProgram->attachShader(*vertexShader); shaderProgram->attachShader(*fragmentShader); shaderProgram->linkProgram(); shaderProgram->addAttribute("Pozycja"); shaderProgram->addAttribute("KolorC"); shaderProgram->addUniform("rotateMatrixX"); shaderProgram->addUniform("rotateMatrixY"); shaderProgram->addUniform("rotateMatrixZ"); } void shaderSetupFinal(Shader* vertexShader, Shader* fragmentShader, ShaderProgram* shaderProgram){ vertexShader->loadFromFile("myVertFinal.S"); vertexShader->kompilacja(); fragmentShader->loadFromFile("myFragFinal.S"); fragmentShader->kompilacja(); shaderProgram->attachShader(*vertexShader); shaderProgram->attachShader(*fragmentShader); shaderProgram->linkProgram(); shaderProgram->addAttribute("Pozycja"); } int main(void) { glSetup(); Shader vertexShader(GL_VERTEX_SHADER); Fragment ShaderShader(GL_FRAGMENT_SHADER); ShaderProgram* shaderProgram = nowy ShaderProgram(); shaderSetup(&vertexShader, &fragmentShader, shaderProgram); Shader vertexShaderFinal(GL_VERTEX_SHADER); Fragment shaderaShaderFinal(GL_FRAGMENT_SHADER); ShaderProgram* shaderProgramFinal = new ShaderProgram(); shaderSetupFinal(&vertexShaderFinal, &fragmentShaderFinal, shaderProgramFinal); wierzchołki zmiennoprzecinkowe[] = { -0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, //Zielony0 -0.5f, -0.5f, -0.5f, 0.0f, 0.0f, 0.0f, //Czarny1 0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f, //Czerwony2 0.5f, 0.5f, -0.5f, 1.0f, 1.0f, 0.0f, //Żółty3 -0.5 f, 0.5f, 0.5f, 0.0f, 1.0f, 1.0f, //Cyjan4 -0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, //Niebieski5 0.5f, -0.5f, 0.5f, 1.0f, 0.0f, 1.0f, //Magenta6 0.5f, 0.5f, 0.5f, 1.0f, 1.0f, 1.0f //Biały7 }; Elementy GLuint[] = { 2,0,3, 2,1,0, 6,4,5, 6,7,4, 3,4,7, 3,0,4, 2,6,5, 2, 5,1, 2,3,7, 2,7,6, 1,5,4, 1,4,0 }; wierzchołki zmiennoprzecinkoweFinal[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, -1.0f, 1.0f, 0.0f }; Elementy GLuintOstateczny[] = { 0,1,3, 1,2,3 }; GLuint VAO, VBO, EBO, backTex, frontTex, frameBuffer, renderBuffer, VAOFinal, VBOFinal, EBOFinal; glGenVertexArrays(1, &VAO); glBindVertexArray(VAO); glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(wierzchołki), wierzchołki, GL_STATIC_DRAW); glEnableVertexAttribArray(shaderProgram->attribute("Pozycja")); glVertexAttribPointer (shaderProgram->attribute("Pozycja"), 3, GL_FLOAT, GL_FALSE, 6*sizeof(GLfloat), NULL); glEnableVertexAttribArray(shaderProgram->attribute("ColorC")); glVertexAttribPointer (shaderProgram->attribute("ColorC"), 3, GL_FLOAT, GL_FALSE, 6*sizeof(GLfloat), (void*)(3 * sizeof(GLfloat))); glGenBuffers(1, &EBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementy), elementy, GL_STATIC_DRAW); glGenTextures(1, &backTex); glBindTexture(GL_TEXTURE_2D, backTex); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,RozmiarekranuX,RozmiarekranuY, 0, GL_RGBA, GL_FLOAT, NULL); glBindTexture(GL_TEXTURE_2D, 0); glGenTextures(1, &frontTex); glBindTexture(GL_TEXTURE_2D, frontTex); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,RozmiarekranuX,RozmiarekranuY, 0, GL_RGBA, GL_FLOAT, NULL); glBindTexture(GL_TEXTURE_2D, 0); glGenFramebuffersEXT(1, &frameBuffer); glGenRenderbuffersEXT(1, &renderBuffer); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBuffer); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, backTex, 0); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, frontTex, 0); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderBuffer); glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, screenSizeX, screenSizeY); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, renderBuffer); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER_EXT); if(status != GL_FRAMEBUFFER_COMPLETE) cout << "Bufor ramki yokki!\n"; glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glGenVertexArrays(1, &VAOFinal); glBindVertexArray(VAOFinal); glGenBuffers(1, &VBOFinal); glBindBuffer(GL_ARRAY_BUFFER, VBOFinal); glBufferData(GL_ARRAY_BUFFER, sizeof(verticesFinal), verticesFinal, GL_STATIC_DRAW); glEnableVertexAttribArray(shaderProgramFinal->attribute("Pozycja")); glVertexAttribPointer(shaderProgramFinal->attribute("Pozycja"), 3, GL_FLOAT, GL_FALSE, 3*sizeof(GLfloat), NULL); glGenBuffers(1, &EBOFinal); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBOFinal); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementsFinal), elementsFinal,GL_STATIC_DRAW); while (!glfwWindowShouldClose(okno)) { double mouseX, mouseY; glfwGetCursorPos(okno, &mouseX, &mouseY); mouseX -=RozmiarekranuX/2; mouseY -=RozmiarekranuY/2; shaderProgram->use(); glBindVertexArray(VAO); glUniformMatrix4fv(shaderProgram->uniform("rotateMatrixX"), 1, GL_FALSE, glm::value_ptr(glm::eulerAngleX((float)(mouseY/25.0)))); glUniformMatrix4fv(shaderProgram->uniform("rotateMatrixY"), 1, GL_FALSE, glm::value_ptr(glm::eulerAngleY((float)(-mouseX/25.0)))); glUniformMatrix4fv(shaderProgram->uniform("rotateMatrixZ"), 1, GL_FALSE, glm::value_ptr(glm::eulerAngleY((float)(0.0/50.0)))); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBuffer); glBindTexture(GL_TEXTURE_2D, backTex); glBindTexture(GL_TEXTURE_2D, frontTex); glActiveTexture(GL_TEXTURE0); glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glDrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); glDisable(GL_CULL_FACE); glActiveTexture(GL_TEXTURE1); glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glDrawElements (GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); glDisable(GL_CULL_FACE); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); shaderProgram->wyłącz(); shaderProgramFinal->use(); glBindVertexArray(VAOFinal); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glDrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glDisable(GL_CULL_FACE); shaderProgramFinal->disable(); glfwSwapBuffers(okno); glfwPollEvents(); } glfwDestroyWindow(okno); glfwZakończ(); wyjście (EXIT_SUCCESS); }


title: Jakieś dobre zasoby dla nietechnicznego faceta, aby nauczyć się zarządzania projektami oprogramowania?

text: Istnieje wiele zasobów dotyczących ogólnego zarządzania projektami, ale czy istnieją jakieś przeznaczone specjalnie dla osób nietechnicznych do zarządzania projektami oprogramowania, obejmujące takie tematy, jak zbieranie wymagań, przypadki użycia i ogólna architektura?


title: Czy niektóre języki lub funkcje językowe są lepsze do testowania?

text: Jestem i lubię być koderem VB.net. Mam kilka dużych programów w c#, które muszę utrzymywać i nie lubię pisać kodu w C# podczas programowania. Nie jest to straszne, ale zdecydowanie wolę środowisko VB.net do programowania. Jednak ostatnio zacząłem pisać wszystkie moje testy w C#. Zacząłem to robić, aby móc korzystać ze wszystkich wspaniałych narzędzi, takich jak makietowe biblioteki dostępne w C#. Ale nawet po tym, jak znalazłem Teleriks niezwykle wydajną darmową edycję justmock dla VB.net, odkryłem, że nadal piszę prawie wszystkie moje testy w C# (teraz używam wersji C# JustMock BTW). Nawet jeśli nie potrzebuję tych narzędzi testowych, stwierdzam, że po prostu bardziej lubię C# do pisania testów. Myślę, że lubię VB.net do ogólnego kodowania przy rozwiązywaniu problemów jak piszę, ponieważ: 1\. Jak słodka słodycz rzeczy takich jak XML Literals. Plus LINQ wydaje się po prostu łatwiejszy i bardziej wyrazisty w VB. 2\. Nie martw się o składnię prawie tak bardzo (obudowa, terminatory linii itp.), że mogę skupić się na moich pomysłach. (Dodatkowa gadatliwość jest obsługiwana przez #3 poniżej oraz Coderush i inne narzędzia IDE) 3\. Pomyśl, że ścisła integracja z IDE Visual Studio i VB.net (na przykład kompilacja w tle) to tylko kolana pszczół. (Chociaż C# jest coraz lepszy.) Ale do testów nie myślę o całościowym obrazie ani o rozwiązywaniu problemów. Każda metoda testowa jest niezależna, a zwięzłość C# tylko wzmacnia i wspomaga ten fakt. Początkowo wydawało mi się to zaskakujące, ponieważ zawsze myślałem, że język skryptowy byłby lepszy do pisania testów. Ale po napisaniu wielu tysięcy z nich nie widzę żadnych korzyści z używania języka skryptowego. W rzeczywistości uważam, że Option Strict i Explicit są prawdziwe (co odwraca skryptową naturę vb) jeszcze bardziej pomocne w projektach testowych. Ale może się mylę i są języki jeszcze bardziej przystosowane do pisania testów? Czy coś takiego jak IronPython byłoby dobre do pisania testów? Może BOO z jego makrami? Nie sądzę, ale czy język funkcjonalny może przynieść coś do stołu? Mówiąc prościej, czy istnieją cechy języka, które pomagają w pisaniu dobrych testów? A jeśli tak, to jaki język ma najwięcej tych pożądanych cech?


title: Dlaczego w mojej karierze muszę wybierać między utworami „zarządzającymi” a „technicznymi”?

text: Niedawno zostałem zwolniony i chociaż znalazłem nowy koncert, jestem trochę sfrustrowany tym, jak działają ścieżki kariery w świecie tworzenia oprogramowania. Naprawdę lubię robić po trochu wszystkiego: kodowanie, testowanie, architekt(y), przywództwo/zarządzanie, kontakt z klientem, zbieranie wymagań, rozwój personelu itp. Jednak firmy programistyczne chcą, abym wpasował się w niszę: jestem albo koder, tester lub manager. Kiedy staram się im wytłumaczyć, że najlepiej robię to wszystko na raz, wydają się bardzo zdezorientowani. Sympatyzuję z ich zainteresowaniami, ale jednocześnie jestem sfrustrowany, że branża działa w ten sposób. Jakakolwiek rada? Czy po prostu muszę dostać się do programu, że tak powiem?


title: Uzyskiwanie wsparcia organizacyjnego w pozycji „nieprogramującej”

text: Na moim obecnym stanowisku w jednostce nieinformatycznej pracuję od około roku. Zostałem zatrudniony głównie do zarządzania treścią i prostych zadań typu webmaster. Ze względu na mieszankę słabnącego wsparcia IT i zwiększonych oczekiwań dotyczących jednostki/produktywności, a także mojej własnej motywacji do zdobywania nowych umiejętności, powoli podjąłem się tego, co określiłbym jako front-end web developer. Nic, co określiłbym jako „misję krytyczną”, ale z pewnością rzeczy, do których nie zatrudniłbyś nie-programisty. Wziąłem tylko kilka zajęć z CS w college'u i chociaż zajmuję się projektowaniem i tworzeniem stron internetowych jako freelancer, coraz bardziej obawiam się, że wpadnie mi w głowę bez odpowiedniego ugruntowania. Idealnie chciałbym mieć wsparcie IT, wskazówki, przegląd kodu, wynagrodzenie na poziomie programisty itp. Niestety uważam, że podziały organizacyjne i semantyczne naprawdę nie pozwalają mi być „programistą”, ponieważ nie praca w jednostce związanej z IT. Kierownictwo jest z grubsza świadome tego problemu, ale wydaje mi się, że nie traktują go poważnie, więc planuję zająć się tym razem z nimi. Kiedy to robię, chcę, aby usłyszeli: „Jestem zmotywowanym pracownikiem, który chce wziąć na siebie większą odpowiedzialność” zamiast „Mam ograniczone i niewiarygodne umiejętności, potrzebuję pomocy IT!” Jakie masz sugestie dotyczące rozwiązania problemu (kierownictwu) i przedstawienia rozwiązania?


title: Język C - K&R 1. czy 2. edycja?

text: Mam zamiar kupić książkę do nauki języka C. Wielu twierdzi, że K&R jest obowiązkową książką dla programistów C, więc wybrałem ją. Widzę, że są dwa wydania. Jakie są między nimi różnice?


title: Wpisane wyszukiwanie w złożonym modelu. Możliwe rozwiązanie CQRS/NoSQL

text: Biorąc pod uwagę następujący model relacyjny: ![model bazy danych](http://i.stack.imgur.com/Xl8nl.jpg) Muszę zaimplementować typowane wyszukiwanie hoteli, które powinno być w stanie zapytać o nazwę, miasto, kraj , kategoria, typ hotelu, cena pokoju, typ niestandardowy, typ niestandardowy pokoju i typ pokoju lub dowolna kombinacja tych kryteriów. W tej chwili robię to przez Entity Framework, dynamicznie konstruując zapytanie nad encją Hotel (IQueryable). To jest w porządku, ponieważ obecnie jest bardzo mało danych. Jednak nie jest to zbyt skalowalne, a gdy jest dużo danych, stanie się to bardzo powolne, ponieważ jest to zapytanie obejmujące 10 tabel. Pamiętaj, że muszę załadować tylko dane hotelu, a nie cały wykres. Zastanawiam się nad sposobami poprawy skalowalności tej części. Przyglądałem się rozwiązaniom CQRS i być może NoSQL. Jednym z podejść, które miałem na myśli, jest posiadanie tego modelu po stronie zapisu (w celu wymuszenia spójności) i posiadanie innego modelu po stronie odczytu. Przy zapisie aktualizowałbym model odczytu (viewmodel). Ponieważ jednak jest to już mniej lub bardziej skomplikowany model pod względem relacji, widzę z tym kilka problemów: * Aktualizacja metadanych (takich jak kategoria, typ pokoju, typ hotelu) wymagałaby ode mnie aktualizacji wszystkich hoteli lub pokoi w model odczytu. Może to być dość powolne lub niemożliwe, gdy jest dużo danych. * Załóżmy, że używam bazy danych dokumentów, takiej jak MongoDB, i zapisuję hotel ze wszystkimi powiązanymi elementami zdenormalizowanymi, czy zapytanie dotyczące tej tabeli nie będzie nadal powolne, ponieważ musi przeszukiwać każdy dokument, czy nadal jest dość szybkie w NoSQL? Podsumowując kilka pytań: * Czy denormalizacja tego modelu jest właściwym podejściem i jaki byłby najlepszy sposób? * Czy NoSQL będzie szybszy? * Czy są jakieś lepsze podejścia, które mogę zastosować lub sposoby na zerwanie relacji i spłaszczenie hierarchii przy jednoczesnym zachowaniu możliwości wyszukiwania wpisanego na klawiaturze? * Idealnie byłoby, gdyby niektóre pola obsługiwały również wyszukiwanie rozmyte, jaki byłby najlepszy sposób, aby to osiągnąć?


title: W jaki sposób wysyłane są adresy portów I/O i dane?

text: Przede wszystkim chciałbym powiedzieć, że jest to pytanie na poziomie sprzętu, które jest bardzo blisko związane z poleceniami "in" i "out" w assemblerze x86. Szukałem od dłuższego czasu, ale nadal nie znalazłem sposobu, w jaki wysyłają adresy i dane. Czy 8086 najpierw wysyła adres, a potem dane? Jeśli tak, to skąd odbiorca wie, czy 8086 wysyła adres 16-bitowy czy adres 8-bitowy? Poza tym chciałbym również dowiedzieć się, jak działa 8255 i jak akceptuje określone porty, takie jak "port 60H". Dziękuje za przeczytanie! :D


title: Jak zrefaktoryzować statyczne składowe klas podstawowych

text: Obecnie pracuję nad projektem w języku C++, który można zaliczyć do projektu „legacy”. Wiele źle napisanego kodu zostało popełnione z powodu braku doświadczenia i pod presją terminów. Kiedy próbuję naprawić błędy, w końcu robię nowy. Ostatnio mam trochę więcej wolnego czasu i chcę ulepszyć ten projekt. Aby być dokładnym, chcę zacząć używać TDD. Okazało się jednak, że nie jest to takie proste. Zetknąłem się z problemem, że nie mogę napisać testu na żadne zajęcia. Singletonowie są wszędzie. Nawet podstawowe klasy używają elementów statycznych. Na przykład w projekcie szeroko używamy klasy "Numeric" (która jest opakowaniem biblioteki decNumber C do obliczeń dziesiętnych). Ta klasa ma statyczny element członkowski, aby zachować kontekst (dokładność, tryb zaokrąglania itp.). Oczywiste jest, że muszę dokonać refaktoryzacji tej klasy, aby uniknąć pól statycznych. Od razu pomyślałem o wstrzyknięciu zależności i wzorcu fabrycznym. Fabryka zachowa pojedynczy kontekst, każda klasa użytkownika powinna tworzyć instancje Numeric tylko przy użyciu tej fabryki. Ale kod będzie bałaganiarski, ponieważ fabryka powinna być wstrzykiwana do każdej klasy, która chce skonstruować instancję „numeryczną”. Jakiego wzoru mogę użyć w tym przypadku? Który z nich upewnia mnie, że każde wystąpienie klasy „Numeryczne” używa jednego współdzielonego stanu? PS: Z tym pytaniem są znaczące podobieństwa – wstrzykiwanie zależności; dobre praktyki, aby zredukować standardowy kod.


title: Jakiego systemu kontroli rewizji użyć na 2 semestralnym kursie zwieńczenia?

text: Jaki byłby dobry wybór dla studentów studiów licencjackich CS pracujących na 2-semestralnym kursie zwieńczenia bez wcześniejszego kontaktu z systemami kontroli wersji? Pożądane cechy byłyby łatwe w użyciu (tj. powinno to być narzędzie, z którego mogą korzystać, a nie spędzać dużo czasu na walce z nim) i nadal miałyby znaczenie dla późniejszej pracy zawodowej po ukończeniu studiów (nie musi to oznaczać to samo narzędzie później, o ile koncepcje przetrwają). Łatwy w instalacji i utrzymaniu dla osoby, która to robi. Nie jestem pewien, czy brakuje mi jeszcze czegoś ważnego. Jestem świadomy subversion (scentralizowany), git (dystrybuowany) i mercurial (również dystrybuowany?) - ale nie wiem wystarczająco dużo o żadnym z nich, aby mieć świadomą opinię. Czy są inne, które powinienem wziąć pod uwagę? Będzie to głównie w środowisku Windows. EDIT: Bardzo interesuje mnie **pedagogiczny** aspekt nauczania/uczenia się tych systemów, nie tyle z perspektywy doświadczonego programisty.


title: Jak programista-amator może przekroczyć swoje granice, gdy formalne zasoby edukacyjne nie są dostępne?

text: Programowaniem zajmuję się od 5 lat od gimnazjum. Nauczyłem się prawie wszystkich podstaw programowania i przeszedłem przez C/C++ i język Java. Jednak uczelnia w moim kraju tak naprawdę nie oferuje mi wiedzy, która pomoże mi poprawić moją karierę programisty. Dlatego muszę sam się uczyć. Ostatnio wybieram natywne API Windows i próbuję zrobić aplikację okienną zgodnie z tym, co mam na myśli. Jednak ciągle zawodziłem i brakowało mi wiedzy we wszystkich kierunkach: maszyna niskiego poziomu (system, arch, asm itp.), elementy wewnętrzne systemu Windows (jądro, system itp.), sieci (TCP/IP itp.), projektowanie umiejętności, programowanie graficzne i wiele innych zaawansowanych tematów. Dlatego w tej chwili jestem na krawędzi decyzji, czy kontynuować rozwój systemu Windows, czy zagłębić się w niskopoziomową strukturę maszyn, czy też porzucić to wszystko i przejść do programowania zorientowanego na Internet, lub zrobić jakiekolwiek inne dostępne opcje. Idealnie chciałbym poznać je wszystkie (naprawdę uwielbiam wszystkie tematy związane z programowaniem) i chciałbym głęboko zrozumieć każdy z nich. Jednak nie wiem od czego zacząć. Więc jakieś wytyczne od profesjonalnego programisty, jak kontynuować moją ścieżkę nauki? A jakie byłyby najlepsze zasoby?


title: co to są frameworki wywołań zwrotnych?

text: Czytam Efektywną Javę i ma to zdanie. > Wady klas owijarek są nieliczne. Jedynym zastrzeżeniem jest to, że wrapper > klasy nie nadają się do użycia w frameworkach wywołań zwrotnych, w których obiekty przekazują > autoreferencje do innych obiektów w celu kolejnych wywołań („callbacks”). Co to jest framework wywołań zwrotnych? Czy możesz wskazać mi przykład ram oddzwaniania?


title: Wyjaśnienie dotyczące Event Producer w StreamInsight

text: Potrzebuję małego wyjaśnienia na temat streamInsight, wiem przez doc's, że StreamInsight może obsłużyć wiele współbieżnych zdarzeń. Ale czy producent zdarzeń będzie osobną funkcją, na przykład: muszę oglądać folder z nowymi plikami, ponieważ wszystkie moje czujniki zapisują odczyty codziennie w nowym pliku na konkretnym dysku. **Metoda 1: FileSystemWatcher:** Jest to tradycyjne podejście, w którym piszemy usługę za pomocą FileSystemWatcher do obserwowania folderu w poszukiwaniu nowych plików itp. Po otrzymaniu zdarzenia z FileSystemWatcher wykonuję pewne operacje na tych plikach. **Jak to zrobić za pomocą streamInsight???** Wiedziałem, że używając IObservable mogę wypchnąć zdarzenia do StreamInsight. Ale czy jest coś do obserwowania, folder to sreamInsight jak FileSystemWatcher. LUB Aby zgłaszać zdarzenia do streamInsight, musimy używać FileSystemWacther? Wszelkie sugestie dotyczące tego są wysoko cenione. Z góry dziękuję


title: Czy istnieje sposób na wizualizację projektu ASP.NET MVC, tj. diagramu klas, ale również ze stronami internetowymi?

text: Może szukam wizualizatora/matrycy zależności. Nie jestem pewny. Po prostu próbuję owinąć głowę wokół istniejącej i dużej aplikacji internetowej i lubię ładne zdjęcia. Znam Autodiagrammera, ale nie sądzę, aby pokazywał relacje strona wzorcowa/podstrona. Czy coś takiego jest w ogóle możliwe?


title: Pytanie o właściwości Visual C++

text: Czy ktoś mógłby wyjaśnić tę linię: > W bardziej skomplikowanych kontekstach, takich jak "+=", **przepisywanie** jest wykonywane przez > zarówno get, jak i put. Zaczerpnięte z: MSDN — Właściwość Co to znaczy przepisać? Czy jest to przepisanie w czasie kompilacji, czy powoduje to obciążenie w czasie wykonywania? O ile wiem, w trybie wydania właściwości są kompilowane do tego samego, więc muszą mieć taka sama wydajność jak gettery/settery, prawda?


title: Scrum Board dla rozproszonego zespołu

text: Szukam rekomendacji na cyfrowej tablicy Scrum, którą można udostępnić w Internecie. Wyobrażam sobie coś w rodzaju dużego tabletu, na którym można rysować i do którego dostęp mają także zdalni użytkownicy. Nie lubię oprogramowania Scrum, ponieważ uważam, że jedną z głównych zalet Scrum Board jest jego fizyczna obecność. To powinno być trudne do zignorowania. Najlepszym rozwiązaniem byłyby dwa duże tablety, na których można rysować i które można synchronizować. Czy ktoś ma rekomendacje produktów na coś takiego? A może wolisz korzystać z oprogramowania? Z poważaniem, Sokół


title: Co sprawia, że seria instrukcji maszynowych jest rzeczywistym procesem/wątkiem w pamięci?

text: Każda instrukcja pochodzi z pamięci głównej/RAM. W bootloaderze, przynajmniej w przypadku oprogramowania układowego Intela i IBM PC i oznaczeń, masz przeskok BIOS do adresu pamięci, aby rozpocząć pobieranie instrukcji w dowolnym celu, zwykle w celu załadowania jądra, kiedy lub gdzie zaczyna się instancja procesu? Stosy sprzętowe są ograniczone, ale czy ich używanie stanowi proces lub wątek? Chodzi mi po prostu o to, co czyni coś „wątkiem” lub „procesem”, a nie tylko większą ilością bajtów z pamięci? Gdzie przebiega granica w tej sytuacji?


title: Zwracać wartości dla metod CRUD?

text: Piszę podstawowy internetowy interfejs API w Javie, który robi to, co robią prawie wszyscy inni: pobiera dane wejściowe, weryfikuje je, a następnie wykonuje operacje CRUD na bazie danych. Napisałem już kilka interfejsów API i już prawie zorientowałem się, co stanowi dobrą odpowiedź zwrotną do klienta. Jednak, podobnie jak w przypadku większości interfejsów API, istnieje kilka warstw obiektów wywoływanych między obiektem API klienta frontonu a kodem, który faktycznie wykonuje zapytania w bazie danych. Zawsze starałem się wiedzieć, jakie obiekty interakcji z bazą danych powinny zwrócić z powrotem do funkcji, które je wywołują. Wyobrażam sobie, że przy błędach będę rzucał wyjątki i łapał je dalej w stosie wywołań. Co jednak zwracam po sukcesach? Oto czego używałem wcześniej: 1. Create - Zwraca wartość logiczną informującą, czy tworzenie się powiodło, czy nie 2. Read - Zwraca żądany obiekt 3. Update - Zwraca wartość logiczną informującą, czy aktualizacja się powiodła, czy nie 4. Usuń - Zwróć wartość logiczną informującą, czy usunięcie powiodło się, czy nie. Czuję się komfortowo ze zwrotami Odczyt i Usuń, ponieważ nie mogę wymyślić, co jeszcze można zwrócić w takich sytuacjach. Jednak nie mam pojęcia, jaka byłaby najlepsza praktyka dla wartości zwracanych z funkcji tworzenia i aktualizacji. Czy powinienem zwrócić nowy obiekt ze zaktualizowanymi wartościami? Czy powinienem zmodyfikować przekazany obiekt? Czy powinienem po prostu zwrócić wartość logiczną oznaczającą sukces lub porażkę?