title: Jak wskazać serwerowi WWW język zasobu?

text: Piszę interfejs API HTTP do serwera wydawniczego i potrzebuję zasobów z reprezentacjami w wielu językach. Użytkownik, którego klient OTRZYMUJE zasób, który ma koreański, japoński i Trad. Reprezentacje chińskie i wysyłanie `Accept-Language: en, ja;q=0.7` powinny otrzymać japoński. Jeden zasób, identyfikowany przez jeden URI, będzie zatem miał kilka różnych reprezentacji językowych. Wydaje mi się, że jest to całkowicie ortodoksyjne użycie negocjacji treści i wielu reprezentacji zasobów. Ale kiedy każdy tłumacz dostarcza serwerowi te alternatywne reprezentacje językowe, jaki jest właściwy sposób na poinstruowanie serwera, w którym języku ma przechowywać reprezentację? Tłumacze kładą całą reprezentację na ten sam URI, ale nie mogę dowiedzieć się, jak to zrobić elegancko. `Content-Language` to nagłówek odpowiedzi i żaden z nagłówków żądania nie wydaje się pasować do rachunku. Wygląda na to, że moje opcje to: 1. Wymyśl nowy nagłówek żądania 2. Dostarcz dodatkowe metadane w wieloczęściowym/powiązanym dokumencie 3. Podaj język jako parametr do `Content-Type` żądania, jak `Content-Type: text/html ;language=en` Nie chcę zajmować się rozszerzaniem HTTP i nie czuję się dobrze z dołączaniem dodatkowych metadanych do reprezentacji. Żadne podejście nie wydaje się również przyjazne dla pamięci podręcznych HTTP. Tak więc opcja 3 wydaje mi się najlepszym sposobem, jaki mogę wymyślić, ale nawet wtedy zdecydowanie niestandardowe jest umieszczanie własnych określonych parametrów na bardzo dobrze ugruntowanym typie treści. Czy jest jakiś oficjalny sposób na osiągnięcie tego?


title: Kod GPL umożliwiający lokalne kopie niedystrybuowanego kodu spoza GPL

text: Natknąłem się na książkę, w której twierdzi się, że zmiany i rozszerzenia dzieł GPL można trzymać blisko źródła, o ile nie są one rozpowszechniane w środowisku naturalnym. Dlatego też dostosowania witryn internetowych wywodzących się z pakietów GPL nie muszą być udostępniane na licencji GPL, a programiści mogą na nich zarabiać, oferując swoje usługi swoim klientom, jednocześnie utrzymując zamknięte źródło kodu na GPL. (por. Rozdział 17 WordPress Plugin Development autorstwa Wrox Press). Nigdy nie zdawałem sobie z tego sprawy, ale zasadniczo, nakładając ograniczenia na kod redystrybucyjny, GPL nie mówi nic o tym, co można, a czego nie można zrobić z kodem, który jest utrzymywany jako prywatny pod względem modelu licencjonowania. Czy dobrze to zrozumiałem?


title: Ogólnie rzecz biorąc, czy organizacja powinna przyjąć jedną metodologię, czy decydować na podstawie projektu?

text: Pracuję dla firmy, która moim zdaniem powinna wykonywać wszystkie prace związane z tworzeniem stron internetowych w sposób w pełni zwinny. W każdej chwili mamy niejasne, konkurencyjne pomysły na temat produktu. I mamy sztywne terminy. Tak więc na arenie internetowej wydaje się sensowne działanie w jak najbardziej zwinny sposób. Mogę jednak wyobrazić sobie projekty po stronie aplikacji biznesowych – lub nawet złożony podprojekt po stronie internetowej (integracja z istniejącą aplikacją innej firmy?), który, przynajmniej ze względu na argument, nie jest w ogóle zmienny zakres. Zakres części integracyjnej byłby, pod każdym względem, w pełni możliwy do określenia z góry, z zerową szansą na zmianę. Ogólnie rzecz biorąc, czy można przyjąć projekt X w organizacji, która zwykle stara się osiągnąć zwinność i pracować nad nim w sposób kaskadowy? Czy w jakiś sposób zagraża to sprawności organizacji jako całości? Jeśli organizacja naprawdę stara się być zwinna, czy „sztywnym” projektem nadal należy „zarządzać” w zwinny sposób?


title: Jak maszyny wirtualne implementują wywoływanie funkcji?

text: Czytam podręcznik kompilatora, który kompiluje się do jakiejś formy zestawu. Ponieważ nie znam tego języka asemblera, postanowiłem wymyślić własny prosty "język asemblera" i zaimplementować podstawową "maszynę wirtualną", która wykona te instrukcje. Obecnie zastanawiam się, jak zaimplementować deklarację funkcji i wywoływanie funkcji w języku i VM. Wpadłem na następujący pomysł, proszę powiedz mi, co myślisz: Deklaracje funkcji wyglądałyby jak proste etykiety. Na końcu funkcji znajduje się instrukcja `end`. „Program główny” jest funkcją samą w sobie. Na przykład: main: // trochę logiki CALL funcA // więcej logiki END funcA: // .. trochę logiki END Jednak różnica między `call <function>` a `goto <label>` jest taka: `goto` po prostu ustawia 'wskaźnik instrukcji' (rejestr przechowujący numer następnej linii do wykonania) na numer linii etykiety. `call` robi to, co robi `goto`, ale _przed skokiem_ odkłada bieżący numer linii (plus 1) na stos. Po osiągnięciu `end` maszyna wirtualna wskakuje na szczyt stosu i przeskakuje do tego numeru wiersza. Jeśli na stosie nie ma nic, program kończy działanie. Na przykład dla powyższego kodu dzieje się tak: main: // tu zaczyna się maszyna wirtualna // jakaś logika CALL funcA // wstawiamy na stos liczbę 4 (3+1) i przechodzimy do etykiety funcA // więcej logiki .. tutaj wracamy z funkcji funcA END // przeskakujemy na szczyt stosu i przechodzimy do tego numeru wiersza. nic -> zakończ funcA: // .. jakaś logika END // przeskocz na górę stosu (cyfra 4) i przeskocz do tego wiersza numer Co sądzisz o tym podejściu?


title: std::shared_ptr w ostateczności?

text: Właśnie oglądałem streamy "Going Native 2012" i zauważyłem dyskusję o `std::shared_ptr`. Byłem trochę zaskoczony słysząc nieco negatywną opinię Bjarne'a na temat `std::shared_ptr` i jego komentarz, że powinno być ono używane jako „ostatnia deska ratunku”, gdy czas życia obiektu jest niepewny (co według niego powinno rzadko się zdarza). Czy ktoś chciałby wyjaśnić to nieco bardziej szczegółowo? Jak możemy programować bez `std::shared_ptr` i nadal zarządzać czasem życia obiektów w **bezpieczny** sposób?


title: Czy komunikat git commit powinien wspominać o pliku, który został zmodyfikowany?

text: W pierwszym wierszu wiadomości o zatwierdzeniu git mam zwyczaj wymieniać plik, który został zmodyfikowany, jeśli zmiana nie obejmuje wielu plików, na przykład: Dodaj [jakiśfunc] do [jakiśplik] Czy to dobrze, czy to jest niepotrzebny?


title: Small Basic a Microsoft Small Basic

text: Czy **Small Basic** ( **SB** ) i **Microsoft Small Basic** ( **MSB** ) są ze sobą powiązane, czy jest to pomyłka wynikająca z podobnych nazw? Czytałem, że **SB** jest napisane w C i jest na licencji GPL. Najstarsza data na SourceForge to rok 2004, ale grupa na Facebooku podaje, że ma ponad 10 lat. **MSB** jest napisany w .NET 3.5 przez Microsoft DevLabs. Wikipedia podaje, że powstał w 2008 roku. Wydają się zupełnie niepowiązane. Czy to kolejna taktyka firmy Microsoft „Obejmij, rozszerz i zgaś”? Przeczytałem, że **MSB** nie zezwala na dystrybucję: > Licencja jest prezentowana podczas instalacji oprogramowania. Small Basic zawiera > kompilator wiersza poleceń, który może być używany jako część produktu. Możesz > zainstalować i używać dowolnej liczby kopii oprogramowania w swojej siedzibie, aby > przetestować działanie z Twoimi programami, dystrybucja jest niedozwolona. Prosimy > zapoznać się z warunkami licencji w celu uzyskania dodatkowych praw/ograniczeń użytkowania. Dziękuję Ci. -Fora MSB


title: Wzór jednostki pracy

text: Przejrzałem wiele artykułów i nadal nie wiem, czy użyć wzorca Jednostka pracy, czy nie. Używam repozytoriów generycznych (wzorzec repozytorium), ale jeśli moje rozumienie wzorca UOW jest poprawne, większość dzisiejszych narzędzi utrwalania oferuje już zaimplementowany wzorzec jednostki pracy (DbContext, ObjectContext, DbSet). Chcę wiedzieć, czy w takich przypadkach nie powinniśmy w ogóle próbować zaimplementować wzorca UOW? lub widziałem w jednym z artykułów (przepraszam, że nie mogę się do niego odnieść, ponieważ gdzieś go przegapiłem), że otoczyli DbContext wewnątrz klasy UOW i zastanawiałem się, z jakiego powodu mogą to zrobić.


title: Kto zachowuje prawo własności, gdy zlecane jest niestandardowe oprogramowanie?

text: Właściciel lokalnej firmy chce zatrudnić mnie (umową) do zbudowania niestandardowego oprogramowania dla jego firmy i pracowników. Prawdopodobnie będzie to mała aplikacja internetowa, którą będę hostować w AWS. Kto zachowuje prawa własności intelektualnej do systemu? Czy zachowam prawo własności do kodu źródłowego i udzielam mu wieczystej licencji na jego używanie, czy też klient zazwyczaj nabywa prawa? **Wiem**, że porozumienie można zawrzeć w celu dostosowania do obu strategii, ale zastanawiałem się, jakie są tutaj normy branżowe.


title: Czy mój kod powinien być SUCHY czy czytelny, jeśli nie może być obu?

text: Piszę kod Rubiego do prostego ćwiczenia z szyfrowania i często napotykam ten dylemat (ćwiczenie jest szyfrem pasjansowym, jeśli musisz wiedzieć). Jest to pytanie, czy powinienem uzupełnić moją logikę zmiennymi opisowymi i instrukcjami pojedynczego kroku, które sprawiają, że funkcja jest czytelna, zamiast zwięzłych, nawet zwartych instrukcji, które eliminują powtórzenia i/lub minimalizują ryzyko błędów. Mój najnowszy przykład: Mój program pobiera dane wejściowe i ze względu na sztywne wytyczne dotyczące formatu może łatwo określić, czy dane wejściowe powinny być zaszyfrowane, czy odszyfrowane. Aby uprościć, gdy klucz szyfrujący i wiadomość zostaną przekonwertowane/wygenerowane, aby były kompatybilne, to kwestia odjęcia klucza od zaszyfrowanej wiadomości lub dodania klucza do niezaszyfrowanej wiadomości, aby uzyskać pożądany wynik (myśl o kluczu jako o szyfrowaniu, wiadomość + szyfrowanie = kod; kod - szyfrowanie = wiadomość). Pozycja DRY mówi mi, że powinienem konwertować zaszyfrowaną wiadomość inaczej niż niezaszyfrowaną, aby funkcja, która pobiera klucz szyfrowania i stosuje go do wiadomości, nigdy nie musiała rozróżniać. Odkryłem, że oznacza to, że potrzebuję zagnieżdżonych instrukcji if w funkcji, ale logika wydaje się być solidna. Ten kod nie jest jednak łatwy do odczytania. Aby było to jasne, wymagałoby to pewnego komentarza. Z drugiej strony mógłbym napisać dwie różne funkcje, które są wywoływane na podstawie flagi ustawionej, gdy aplikacja określa szyfrowanie lub deszyfrowanie. Byłoby to prostsze do odczytania, ale powielałoby funkcję wysokiego poziomu stosowania klucza szyfrowania do wiadomości (powodując, że jest ona szyfrowana lub deszyfrowana). Czy powinienem skłaniać się ku czytelnemu kodowi, czy zwięzłemu kodowi? A może przegapiłem inny sposób na uzyskanie tej funkcjonalności i spełnienie obu zasad? Czy jest to pozycja w skali, w której należy rozważyć cel projektu i podjąć najlepsze decyzje, aby temu celowi służyć? Jak dotąd kładę nacisk na zwięzły, DRY kod nad kodem czytelnym.


title: Przekształcenie algorytmu fizycznego w skomputeryzowany

text: Zdałem sobie sprawę, że możliwe jest tworzenie algorytmów, które działają fizycznie, aby rozwiązywać problemy znacznie wydajniej niż w samym komputerze. Rozważ następujące kwestie: Znalezienie najkrótszej ścieżki między 2 punktami na połączonym wykresie. Gdyby fizycznie stworzyć wykres z wagami krawędzi odpowiadającymi długości fizycznych łączników, a węzłom coś odpowiadającego np.: drewniane kulki i przędza oba oznaczone, to można wygenerować wykres z danych w czasie O(N), a następnie określenie najkrótszej ścieżki między 2 węzłami wymagałoby po prostu uchwycenia obu tych węzłów i przeciągnięcia ich tak, aby między nimi utworzyła się linia prosta (lub wiele linii prostych!), a reszta zwisała. Ta prosta linia byłaby najkrótszą ścieżką z oczywistych powodów. Jak dokładnie wziąć tę fizyczną metodę rozwiązania problemu i zaimplementować ją w komputerze?


title: Czy patenty software'owe powinny być legalne?

text: Naprawdę dużym problemem, z którym wiele osób ma problemy, są patenty na oprogramowanie. Według Wikipedii, niektóre z wielkich problemów związanych z patentami na oprogramowanie to: * Gdzie powinna leżeć granica między patentowalnym i niepatentowanym oprogramowaniem * Czy krok wynalazczy i wymóg nieoczywistości są stosowane zbyt luźno do oprogramowania * Czy patenty na oprogramowanie zniechęcają, zamiast zachęcać do innowacji Jednym ze słynnych przykładów wątpliwych patentów na oprogramowanie jest patent Amazona na kasę 1-Click, który został początkowo przyznany przez USPTO w 1999 roku, ponownie zbadany w 2007 roku i ostatecznie zmieniony w 2010 roku z powodu wielu debat dotyczących jego ważności. Pomysł uproszczenia doświadczenia zakupowego użytkownika poprzez zmniejszenie liczby czynności wymaganych do sfinalizowania transakcji wydaje się zdrowym rozsądkiem dla prawie każdego, więc dlaczego takie patenty miałyby być legalne? Jako profesjonalista lub hobbysta, co myślisz o patentach na oprogramowanie? Czy tłumią innowacje, blokując [często] zdroworozsądkowe pomysły, czy też są koniecznością sukcesu i rentowności?


title: Na czym polega biznes w tworzeniu języka programowania?

text: Zastanawiałem się, czy wydawanie języka programowania, takiego jak Java lub C#, przynosi duże, bezpośrednie przychody? Sprzedawanie IDE, licencjonowanie swojej marki na książki lub zdobywanie prestiżu przedsiębiorstwa wydaje mi się marginalną korzyścią w porównaniu z wysiłkiem, jaki niewątpliwie wymagał rozwój (choć mogę się oczywiście mylić).


title: Szybkie pytanie OOAD

text: Biorąc pod uwagę następujący zestaw klas: Aparat, Zdjęcie, Sesja Zdjęciowa, Przedmiot. W jaki sposób będą oddziaływać, aby modelować następujące zdanie? _Następny temat jest wywoływany i ma zrobione zdjęcie._ Chcę zobaczyć, czy istnieje preferowane rozwiązanie. **Edytuj:** Przepraszam, że powinienem powiedzieć w C#.


title: rozwiązania kontroli przepływu w Node.js - użyć async.waterfall?

text: Patrząc na node.js i unikając zagnieżdżania wywołań zwrotnych. Znalazłem Async.js, czy ktoś może mi pokazać, jak mogę przepisać ten kod przy użyciu metody async.waterfall? // db jest instancją mongodb db.open(function(err, client){ client.createCollection("docs", function(err, col) { client.collection("docs", function(err, col) { for ( var i = 0; i < 100; i++) { col.insert({c:i}, function() {}); } console.log('Wstaw gotowe.'); }); }); }) ; Jakie problemy ma to naiwne rozwiązanie z funkcjami wewnętrznymi w porównaniu z metodą asynchroniczną? db.open(otwartyiwstaw); function openAndInsert(err, client) { var myCollection = "docs"; client.createCollection(myCollection, openCollection); function openCollection(err, col) { client.collection(myCollection, insertIntoCollection); } function insertIntoCollection(err, col) { for (var idx = 0; idx < 100; idx += 1) { col.insert({c:idx}, function () {}); } console.log('Wstaw gotowe.'); } } Trzy poziomy zagnieżdżania w oryginalnym kodzie wydają się być zapachem kodu, ale nie jestem pewien, czy moje rozwiązanie home rolled lub asynchroniczne są ogólnie lepsze. Czy ktoś woli pozostawić zagnieżdżone funkcje bez zmian? Jeśli tak, to jak głębokie musiałoby być zagnieżdżenie przed użyciem jakiegoś rodzaju kontroli przepływu?


Jaka jest najlepsza wartość dla identyfikatora we wzorcu ActiveRecord (PHP). auto-inkrementacja nie wchodzi w rachubę. Chciałbym wygenerować wartość identyfikatora, której mogę użyć do utworzenia nowego rekordu, ale będzie ona unikalna. wartości losowe mają szansę na kolizję. zapytanie, aby uzyskać ostatnio użyty identyfikator, a następnie zwiększenie tej wartości ma szansę, że w przybliżeniu w tym samym czasie zostanie utworzony inny rekord o tej samej wartości identyfikatora. czego najczęściej używa się w tej sytuacji? jaka jest najlepsza rzecz do wykorzystania w tej sytuacji?


title: Dzielenie protokołu pakietów na warstwy

text: Pracuję na systemach wbudowanych, więc często muszę implementować protokoły. Kiedy to robię, lubię tworzyć ładne, czyste warstwy. Jednak staje się to trudne, gdy pola używane przez różne warstwy są wspólne. Lubię myśleć o warstwach jako oferujących szereg usług zgodnych z duchem modelu OSI: **Framing** 1\. bajt początkowy / sekwencja (SOF) 2\. długość pakietu / wiadomości 3\. integralność wiadomości (CRC, suma kontrolna xor) **Sieć** 4\. Źródło / Miejsce docelowe **Aplikacja** 5\. Typ polecenia/odpowiedzi (jak interpretować ładunek). (Zdaję sobie sprawę, że to nie jest model ISO, ale mam nadzieję, że rozumiesz, o co mi chodzi.) Czasami protokół istnieje na łączu punkt-punkt (gniazdo RS232 lub tcp), więc nie ma pojęcia źródła i celu. Zazwyczaj posiadam warstwę oprogramowania dla każdego z: ramek, sieci i aplikacji. Warstwa jest zwykle maszyną stanów przetwarzającą bajty, ramki lub pakiety. Na górze znajduje się punkt zaczepienia dla funkcji specyficznej dla aplikacji. Zazwyczaj, gdy pakiet przesuwa się w górę stosu, a warstwy są usuwane, po prostu przekazuję wskaźnik do następnego zakresu wewnętrznego. Najpierw wskaźnik do SOF, następnie wskaźnik do pól sieciowych, a na końcu wskaźnik do ładunku aplikacji. Gdy pola są analizowane, są one dodawane do struktury specyficznej dla warstwy, która je tworzy. (Struktura o nazwach takich jak: Ramka, Pakiet, Wiadomość/Polecenie/Odpowiedź) Każda struktura ma wskaźnik do bufora pakietów. Na górze mogę zwolnić strukturę, wywołując free na każdej warstwie, aż na dole pojawi się wskaźnik do zwolnienia. (lub powrót do puli) Pytanie brzmi, jak mogę czysto obsłużyć przypadki, w których pola mają podwójne zastosowanie lub są polami bitowymi w bajcie. (górny półbajt to długość ładunku, dolny półbajt to typ pakietu itp.) Przykładem tego jest prosty format pakietu, taki jak ten: `<SOF> <CMD> <ładunek specyficzny dla polecenia> <CRC>` W tym przypadku długość pakietu wynika z kodu komendy. Tak więc pole CMD (w tym przypadku pojedynczy bajt) jest współdzielone między warstwami ramek i aplikacji. Myślę, że w tym przypadku warstwa ramek ma tabelę przeglądową dla polecenia do długości i przekazuje wskaźnik do pola CMD do warstwy aplikacji do obsługi w strukturze.


title: Czy pozyskiwanie wydarzeń jest gotowe na prime time?

text: Event Sourcing został spopularyzowany przez LMAX jako środek zapewniający szybkość, skalowalność wydajności, przezroczystą trwałość i przejrzyste tworzenie kopii lustrzanych na żywo. Zanim zmieniono nazwę na Event Sourcing, ten typ wzorca architektonicznego był znany jako System Prevalence, ale nigdy nie byłem zaznajomiony z tym wzorcem, zanim zespół LMAX upublicznił. Czy ten wzorzec sprawdził się w wielu systemach produkcyjnych i dlatego nawet konserwatywne osoby powinny czuć się upoważnione do przyjęcia tego wzorca, czy też pozyskiwanie zdarzeń / rozpowszechnienie systemu jest egzotycznym wzorcem, który najlepiej pozostawić nieustraszonym?


title: Potrzebujesz porady na temat projektowania w Ruby On Rails

text: Do osobistych celów edukacyjnych tworzę stronę na konferencję. Jednym z obiektów występujących w konferencji jest sesja, która ma różne stany iw każdym stanie ma nieco inne atrybuty: 1. Po przesłaniu ma prelegenta (w systemie `Użytkownika`), Tytuł i streszczenie. 2. W trakcie recenzji posiada recenzje i komentarze (oprócz podstawowych danych) 3. W przypadku akceptacji ma określony przedział czasowy, ale nie ma już recenzentów. Uważam, że nie jest najlepszą rzeczą dodawanie atrybutów „statusu” i rozpoczęcie dodawania wielu instrukcji „jeśli”… Pomyślałem więc, że lepiej byłoby mieć różne klasy dla każdego stanu, z których każda ma swoje własne walidacje i zachowania. Co myślisz o tym projekcie? Masz lepszy pomysł?


title: Czy programista C#, który został programistą VB, może kiedykolwiek wrócić do C# na późniejszym etapie swojej kariery bez znaczącej kary?

text: **Tło** : Rekrutacja IT w Wielkiej Brytanii całkowicie eksplodowała w ciągu ostatnich pięciu lat i co tydzień otrzymuję sporo telefonów od rekruterów z pozycjami. Jeden z rekruterów zaproponował mi, że zaproponuje mi świetnie wyglądającą pozycję za świetną pensję w obszarze, którego chciałem, więc odbyłem rozmowę telefoniczną, która przebiegła bardzo dobrze i naprawdę spodziewałem się, że rozmowa twarzą w twarz pójdzie dobrze. Niestety, ponieważ muszę przesiewać kilka szalenie nieodpowiednich stanowisk, albo pomyliłem dwa opisy stanowisk, albo po prostu nie przeczytałem ich poprawnie. W każdym razie okazuje się, że praca jest programistą VB.NET, a ja jestem programistą C#/Java. Chociaż jestem pewien, że mogę wykonać tę pracę, obawiam się, że zaakceptowanie tego może utrudnić mi późniejszą karierę, jeśli kiedykolwiek będę chciał wrócić do C#. Obawiam się również, że wielu moich rówieśników jest dość snobistycznie nastawionych do VB i nie jestem pewien, jak popularna jest ta pozycja. **Rzeczywiste pytania** : Jako programista C# (z 4-letnim doświadczeniem), rozważając przyjęcie stanowiska jako programista VB, za 5 lat będę mógł wrócić na inną pozycję w C# (lub Javie) bez konieczności posiadania wrócić do mojego obecnego poziomu stażu pracy? Ponadto, jeśli ktoś faktycznie dokonał tego transferu - czy praca w VB była rozczarowująca, czy też ograniczała?


title: Czy konieczne jest czyste oop?

text: Proszę nie kierować mnie do tego posta: http://stackoverflow.com/questions/1551/how-to-think-in-oo. Przeczytałem i nadal nie mam odpowiedzi. Od lat programuję w c++ i uczono mnie, że w projektowaniu wszystko powinno być w porządku. Niedawno uruchomiłem java i uważam, że jest bardzo ograniczający w sposobie, w jaki sprawia, że wszystko jest członkiem lub metodą klasy. Chociaż zgadzam się, że klasyfikowany kod wielokrotnego użytku poprawia kod, ale wszystko musi być klasą. jako przykład w prostej grze o najeźdźców kosmicznych byłyby klasy dla kosmitów, statków i pocisków, ale są też takie rzeczy, jak wynik i licznik czasu, które są pojedynczymi natychmiastami. Uważam, że działają one lepiej jako klasy globalne niż klasa, która zostanie użyta tylko raz. Zaczynam zastanawiać się, czy jestem programistą oop i czy chcę nim być. Tak naprawdę nie szukam jasnej odpowiedzi, ponieważ to nie jest pytanie, po prostu zastanawiam się, czy robię to wszystko źle, czy po prostu inaczej. Dzięki EDIT: Pokazuję tutaj moją ignorancję, ale co do diabła ... jaką różnicę robi umieszczenie wszystkich globalnych rzeczy w globalnej klasie poza dostępem i dwulicowością (multiplayer)? Czy istnieje jakiś kąt wydajności lub pamięci, którego nie widzę?


title: JSON a klucze obce

text: Tworzę stronę firmową i muszę zdefiniować kilka sekcji w następujący sposób: * Mam wiele sekcji i każda sekcja ma wiele (lub jedną) podstron. * Liczba podstron różni się w zależności od sekcji. * Każda podstrona nie powinna być dłuższa niż 2500 znaków Ponadto muszę korzystać z relacyjnej bazy danych (MySQL). Mam wątpliwości, co byłoby lepsze pod względem projektu i/lub wydajności: 1. Przechowywanie tablicy `JSON`, ze wszystkimi podstronami jako obiektem, jako pojedynczą kolumnę tabeli `Sekcje`; 2. Aby utworzyć tabelę `Pod-strony`, która odwołuje się do sekcji nadrzędnej za pomocą `Klucza obcego`.


title: Czy Entity Framework jest gotowy do produkcji?

text: Zaglądam do Entity Framework dla nowego projektu, który zamierzam podjąć, i w ramach moich badań pytam niektórych specjalistów z branży, czy jest stabilny i gotowy do wdrożenia w „rzeczywistym świecie”. W biegu jest: * EF * NHibernate * DevExpress XPO Mam już spore doświadczenie z XPO, ale nie jestem z niego szczególnie zadowolony.


title: Klasa API z intensywnymi żądaniami sieci

text: Pracuję nad interfejsem API, który działa jako "pośrednik" między interfejsem API REST a deweloperem. W ten sposób, gdy programista zrobi coś takiego: User user = client.getUser(nickname); wykona żądanie sieciowe, aby pobrać z usługi dane o użytkowniku, a następnie programista może wykorzystać dane, wykonując takie czynności, jak user.getLocation(); użytkownik.getWyświetlanaNazwa(); i tak dalej. Teraz jest kilka metod, takich jak `getFollowers()`, które wykonują kolejne żądanie sieciowe i mogę to zrobić na dwa sposoby: 1. Pobierz **wszystkie** dane w metodzie `getUser` (i nie tylko najważniejsze), ale w ten sposób czas żądania może być bardzo długi, ponieważ powinien wykonać żądanie do różnych adresów URL 2. Pobierz dane, gdy użytkownik wywoła metodę, wygląda to na najlepszy sposób i aby go poprawić, mógłbym buforować wynik, więc następne wywołanie to `getFollowers` zwraca natychmiast z danymi już pobranymi zamiast ponownego wykonania żądania. Jaka jest najlepsza droga? I powinienem pozwolić metodom takim jak `getUser` i `getFollowers` zatrzymać wykonywanie kodu do czasu, gdy dane będą gotowe, czy powinienem zaimplementować wywołanie zwrotne, aby gdy dane są gotowe, wywołanie zwrotne zostanie uruchomione? (to wygląda jak JavaScript)


title: Czym Node.js różni się od innych frameworków po stronie serwera?

text: Zauważyłem, że Node.js stał się bardzo popularny i widziałem kilka przypadków ludzi wykonujących w nim projekty na małą skalę. Przyjrzałem się również listom zalet i wad, aby zorientować się, co może zrobić Node.js, ale nadal nie wiem, czym różni się od innych, bardziej dojrzałych technologii po stronie serwera, takich jak PHP, Perl lub Ruby na Szyny. Co konkretnie odróżnia Node.js od obecnych alternatyw i dlaczego?


title: Jak odkryć klasę w PHP dynamicznie, podobnie jak architektura wtyczek?

text: W tej chwili spotykam się z częstym problemem w PHP (i większości innych języków), gdzie projektowane przeze mnie systemy wymagają aktualizacji w wielu miejscach, aby dodać nowe funkcje, podczas gdy chciałbym mieć rdzeń, w którym mogę dodawać nowe funkcje, wtyczki itp. bez konieczności dotykania podstawowego kodu. Przykładem może być menu nawigacyjne, w którym menu ładuje swoje elementy z katalogu lub przestrzeni nazw X. Moim celem jest to, że gdy ja lub inny programista dodamy nowy plik, rozszerzymy klasę MenuItem, cokolwiek to jest, klasę ładującą menu odkryłby ten nowy plik i wyświetlił go bez konieczności dotykania kodu ładowania głównego menu. Najlepsze, jakie do tej pory wymyśliłem, to: function get_menu_items() { $menu_items = array(); $raw_files = scandir(ROOT_DOKUMENTU . '/menu/menu_items'); foreach($raw_files as $file){ require_once($plik); $nazwa_klasy = substr($plik, 0, -4); // odetnij '.php' $menu_items []= new $class_name(); } return $menu_items; } Ale powyższe wydaje się niewłaściwe, ponieważ nie powinienem sprawdzać katalogu pod kątem istnienia plików pod kątem funkcji! Wyobrażam sobie, że jest to powszechny wzorzec projektowy, którego używałby Wordpress do odkrywania wtyczek? Szukałem od jakiegoś czasu, ale nie byłem w stanie ulepszyć powyższego! Każda pomoc byłaby bardzo mile widziana!


title: Jaki jest sens korzystania z DTO (obiektów transferu danych)?

text: Jaki jest sens korzystania z DTO i czy jest to przestarzała koncepcja? Używam POJO w warstwie widoku do przesyłania i utrwalania danych. Czy te POJO można uznać za alternatywę dla DTO?


title: Jak „czytać” aplikacje szynowe?

text: Właśnie skończyłem pierwszy samouczek dotyczący szyn i teraz chcę się dowiedzieć czegoś o tym, jak inni programiści go używają. Czy można więc „czytać” aplikacje webowe railsów, aby poznać ich architekturę i projekt?


title: Kolejka ofert pracy w różnych stanach i z różnymi usługami wokół

text: Muszę zaprojektować „kolejkę” zadań (w aplikacji bardzo zorientowanej na interfejs użytkownika), którą może uruchomić użytkownik, i potrzebuję innych przemyśleń, aby wybrać optymalne podejście od podstaw. Moje zadania mogą znajdować się w różnych stanach (importowane, wysyłane z innych miejsc, tworzone przez użytkownika, a nawet symulowane z zaimportowanym zarejestrowanym postępem - zgodnie z zupełnie innym przepływem pracy) itp. Dlatego mogą również przechodzić przez różne stany ich cykl życia, jak tworzenie, uruchamianie, wstrzymywanie, walidacja lub edytowanie przez użytkownika (w przypadku nieprawidłowych parametrów zadania), importowanie lub nawet usuwanie (przynajmniej w celu logowania lub audytu). Z tego powodu wszystkie zadania muszą mieć swój stan w każdym momencie i muszą być w jakiś sposób zarządzane przez wspólną logikę. Istnieją również reguły domeny i aplikacji, że tylko jeden może być uruchomiony/zatrzymany/edytowany w stanie czasowym itp. Moje główne pytanie brzmi, czy zaimplementować jakiś rodzaj monolitycznego kontrolera singletona dla wszystkich stanów, w których może on odpowiadać na stan strażników każdego z nich (może/nie może przejść do innego stanu) dla wszystkich stanów i może wywoływać na nich akcje (inne usługi), czy też implementować automaty stanów wewnątrz samych zadań i jakoś wywoływać usługi i związaną z nimi logikę warunkową z sami (usuń mnie / edytuj mnie i tak dalej). Muszę też mocno powiązać to z UI, żeby mieć listę zadań ze stanami widocznymi dla użytkownika, ale mam też rozdzielenie problemów (samo zadanie jako obiekt domenowy parametrów - nie stany, UI) . To tylko krótki opis mojego głównego problemu, więc mogę zaktualizować wymagania, gdy nadejdzie sugestia lub więcej pytań, na które zapomniałem odpowiedzieć.


title: napisz własny lub wybierz framework do udostępniania linków

text: Jestem programistą PHP i do tej pory wykonywałem projekty oparte na PHP i MySQL bez użycia frameworka. Teraz zamierzam stworzyć duży system udostępniania linków (doskonały, modułowy, szybki, tematyczny, bezpieczny itp.). Ale nie mam wcześniej doświadczenia w korzystaniu z jakichkolwiek frameworków. Muszę wiedzieć, który jest dla mnie lepszy.Wybierz framework (łatwy w użyciu i szybko się go nauczysz) czy nadal stosuj moją metodę?


title: Czy powinienem dokonać refaktoryzacji klasy F z klimatu kodu?

text: Zgodnie z klimatem kodu, klasą jest `F`, czyli najgorsza ocena, jaką można otrzymać. Wysłałem żądanie ściągnięcia, aby zmienić jego kolejność tutaj, co zostało odrzucone, ponieważ nowy kod jest podobno zbyt abstrakcyjny. Jestem całkowicie przekonany, że „F” ma prawdziwe znaczenie i powinno być naprawione, zwłaszcza gdy jest jedną z głównych klas projektu. Jaki jest twój punkt widzenia?


title: Czy korzyści z żywicy/Quercus przewyższają koszty ogólne?

text: Ostatnio coraz bardziej przyglądam się Resin + Quercus jako technologii do opracowania mojej aplikacji. Powodem, dla którego zacząłem się nad tym zastanawiać, było to, że ta aplikacja ma duże potrzeby w zakresie raportowania, z których wiele nie może (lub realistycznie nie powinno) być tworzone w czasie rzeczywistym. Java oferuje niezłe zaplecze do kolejkowania i generowania raportów. Ponadto dzięki Quercus mógłbym rozwijać moje modele danych w Hibernate i używać ich "z PHP", dzięki czemu skutecznie rozciągałem te modele na front i back-end. Ta sama koncepcja miałaby również zastosowanie do dowolnej wspólnej logiki biznesowej front/back-end, którą można by opracować w bibliotekach Java. Minusem jest to, że niezależnie od tego, który front-end (PHP) Framework MVC wybiorę (moim celem było Symfony 2), jest mało prawdopodobne, aby działał bez dużych modyfikacji, jeśli w ogóle może działać. Quercus jest dość bliską implementacją PHP i powinien być kompatybilny z PHP5.3, więc przestrzenie nazw i domknięcia NIE POWINNY być problemem, ale kiedy próbowałem uruchomić istniejącą aplikację Symfony 1.4, nie udało mi się. Tak więc moje pytanie do ciebie brzmi, czy uważasz, że korzyści z Resin + Quercus przewyższają koszty korzystania z niezbyt doskonałej/stabilnej implementacji PHP? Gdyby to była Twoja aplikacja, a Twoim celem był produkt końcowy, a nie cele edukacyjne, co byś wybrał?


title: Sugestie dotyczące przejścia z projektowania stron internetowych opartego na lampach na projektowanie gier

text: Mam około 2,5 letnie doświadczenie jako web developer cum designer pracując głównie na platformie LAMP. Teraz chcę wypróbować tworzenie gier (takich jak strzelanki pierwszoosobowe, takie jak Call of Duty (COD)). Jednym z moich marzeń jest, aby kiedyś udało się stworzyć dochodową, popularną, komercyjną grę tego typu. Jednak nigdy nie robiłem żadnego biznesu ani nawet nie robiłem jeszcze freelancerów, nawet w domenie internetowej. Dobra, po pierwsze, dopiero zaczynam i nie mam jeszcze pojęcia o technologiach, językach, silnikach (silnikach gier) itp. związanych z tym. Chciałbym, żeby to pytanie było kompletnym przewodnikiem dla osób o podobnych zainteresowaniach. **Najlepsze zasoby, aby naprawdę szybko zdobyć domenę** Jakie byłoby najlepsze podejście, aby naprawdę szybko uzyskać podstawowe informacje o domenie? Wszelkie zasoby dla programistów pochodzących z innych domen/doświadczonych w innych domenach byłyby dla mnie idealne. Np. jeśli ktoś zapytałby mnie o dobre źródło do szybkiej nauki PHP/MySql, sugerowałbym książki takie jak "Jak zrobić wszystko z PHP i MySql" - ![Jak zrobić wszystko z PHP i MySql](http://i stos w końcu projekty robocze, które pomagają w zastosowaniu umiejętności nabytych w rozdziałach książki. Czuję, że to najlepszy sposób dla samouczących się. Byłbym wdzięczny za podobny zasób, który łączy wszystkie koncepcje razem, aby uzyskać szerszy obraz. Czytałem o C, C++, C#, JAVA używanym w programowaniu gier, ale nie jestem pewien, który język wybrać (wcześniej nauczyłem się trochę C i JAVA). Czytałem też o silnikach gier, ale byłyby różne inne koncepcje. **Powszechnie akceptowane sposoby uczenia się** Czy takie gry 3D należy wypróbować po grach 2D? Czy istnieją powszechnie akceptowane sposoby uczenia się tego rodzaju gier? Podobnie jak w przypadku tworzenia stron internetowych, powinniśmy sięgnąć po frameworki po dobrym przećwiczeniu podstawowego języka, AJAX po poprawnym wykonaniu z prostym przeładowaniem strony itp. Poza tym wszelkie przydatne wskazówki (takie jak wybór języka itp.) byłyby bardzo mile widziane. Ponieważ wysoce zalecane jest wnoszenie wkładu w projekty internetowe o otwartym kodzie źródłowym w celu uzyskania uznania, czy istnieją podobne projekty gier o otwartym kodzie źródłowym? Dzięki, Sandeepan


title: Czy to jest przykład rekurencji?

text: Wdrażam dziedziczenie czegoś, co nazywa się Kontekstami. Każdy kontekst zawiera łącze do swojego kontekstu nadrzędnego. Jeśli ten kontekst jest kontekstem głównym, jego rodzic ma wartość null. Aby przejść do drzewa dziedziczenia i pobrać dane z każdego kontekstu, chcę to zrobić (w pseudokodzie) private Hashtable getDataAsMap() { Hashtable map = this.parent != null ? this.parent.getDataAsMap() : nowy Hashtable(); // dodaj moją mapę zwrotów danych; } Czy to rekurencja? Wywołuję tę samą metodę, ale na innym obiekcie. Czy to się jeszcze liczy? Jeśli nie, jak byś to nazwał?


title: Możliwość zastosowania CQRS, gdy niektóre polecenia muszą blokować interfejs użytkownika

text: Pracuję nad aplikacją, którą bardzo chciałbym przejść z dość tradycyjnej architektury warstwowej do CQRS, z wielu powodów, między innymi dlatego, że posiadanie solidnego dziennika zdarzeń spowoduje dodanie kilku żądań funkcji, które widzę pędząc do mnie trywialnie, żeby się dostosować. Teraz mam problem koncepcyjny: z około 40 poleceń, które użytkownik może zainicjować, są trzy, które użytkownik _musi_ mieć pewność, że zostały pomyślnie wykonane, zanim interfejs użytkownika pozwoli mu zrobić cokolwiek innego. Wszystko inne pasuje do modelu „prześlij żądanie, zapytaj o sukces później”, z wyjątkiem tych trzech poleceń. Jak to jest obsługiwane w CQRS-land? Czy rozdzielę te trzy polecenia blokujące na efektywnie trzecią usługę, aby mieć polecenia, zapytania i polecenia blokujące? Czy mam dwustopniowy procesor zdarzeń z pierwszym etapem blokowania na żądanie, który jest używany tylko do poleceń blokujących? Czy istnienie tych trzech poleceń oznacza, że cały pomysł zastosowania CQRS jest nieważny? Czy mam po prostu udawać, że _nie_ blokują_ i odpytywać o sukces w interfejsie użytkownika? Jestem pewien, że musi to pojawić się w innych projektach, jak to zwykle jest obsługiwane?


title: Czy ważna jest znajomość C/C++ dla programowania na Androida?

text: Czy można używać tylko Javy (bez C++ /NDK) do budowania dobrych, szybkich, pięknych aplikacji na Androida (w tym programowania 3D)? Kiedy szukam wymagań na stanowisko programisty Androida (wolne stanowiska), widzę, że znajomość C/C++/NDK jest bardzo ważna. Niektóre firmy wymagają nawet budowania swoich zadań testowych tylko przy użyciu C++ (OpenGL).


title: log4net - wyrzucenie własnego singletona, użycie LogImpl itp.?

text: Przesyłanie tutaj... miejmy nadzieję, że jest to lepsze miejsce do zasięgnięcia opinii w tej sprawie. :) Pisanie własnej klasy opakowującej log4net przy użyciu C#. Chcę stworzyć bibliotekę tak, abym mogła odwoływać się do niej z dowolnego projektu/zespołu w danym rozwiązaniu przy minimalnym nakładzie pracy. tj.: dołącz odwołanie, może wrzuć instrukcję using, a następnie wykonaj wywołania typu MyLogger.Debug(blahblah); z być może właściwością (MyLogger) ustawianą gdzieś z "głównej" metody. Po przeczytaniu dokumentacji nie jestem pewien, czy powinienem pisać sam, czy używać LogImpl? Wydaje się, że ta ostatnia zawiera wszystko, co chciałbym umieścić w swoim własnym opakowaniu, więc po co wymyślać koło na nowo? Ale w pomocy znajduje się również uwaga, która mówi, że element członkowski instancji typu logimpl nie jest bezpieczny wątkowo, podczas gdy element statyczny to ... OTOH, gdybym stworzył własną, spojrzałbym na klasę singletona, którą mogę utworzyć raz i używać w całym moim rozwiązaniu (przekazując referencję singletona do obiektów, które tego wymagają), ale muszę przepisać wszystkie sekcje Debug, Error itp. Więc... nie jestem pewien, jakie podejście przyjąć. Co sugerowalibyście na początek?


title: Standaryzowane techniki / procedury programowania

text: Nie wiem, czy to pytanie, czy początek rozmowy, czy nawet zupełnie nieistotny temat. Dlaczego programowanie nie jest bardziej ustandaryzowane? Jestem w tym naprawdę nowy i piekielnie trudno jest mi znaleźć odpowiedź na nawet podstawowe pytania. Rzeczy takie jak-- * Jak dodać walidację do wielu skrzynek texbox w asp.net c# bez używania poszczególnych kontrolek walidacji? * Jak dodać dane wejściowe z texbox do trwającej tablicy? Mówię o rzeczach podstawowych, które cały czas się przyzwyczajają. Spodziewałbym się odpowiedzi typu „o tak, zobacz metodę walidacji Jonesa (link) lub pole tekstowe petersa do funkcji tablicy (link). Pomyślałem, że będą standardowe techniki, takie jak w szachach, do robienia rzeczy podobnych. Mam nadzieję ma to sens i ktoś może wskazać mi właściwy kierunek, jeśli istnieją katalogi standardowych technik programowania.


title: Czy mogę sprzedawać rozwidlony kod GPL?

text: Wiem, że można sprzedawać kod na GPL, ale chciałem wiedzieć, czy można sprzedawać kod na GPL, który został rozwidlony i zmodyfikowany. Rozwidlony i zmodyfikowany kod będzie nadal dostępny do użycia, modyfikacji i redystrybucji.


title: tabele odwołujące się do siebie, dobre czy złe?

text: Reprezentując lokalizacje geograficzne w aplikacji, projekt bazowego modelu danych sugeruje dwie jasne opcje (a może więcej?). Jedna tabela z odwołującą się do siebie kolumną parent_id uk — london (london parent id = UK id) lub dwie tabele z relacją jeden do wielu przy użyciu klucza obcego. Preferuję jedną tabelę odwołującą się do siebie, ponieważ umożliwia ona łatwe rozszerzenie do tylu podregionów, ile potrzeba. Ogólnie rzecz biorąc, ludzie odwracają się od tabel odsyłających do siebie, czy też są w porządku?


title: Języki programowania inne niż angielski

text: Uniwersytet Antioquia w Kolumbii prowadzi kursy wprowadzające z programowania w Lexico, hiszpańskim, zorientowanym obiektowo języku .NET. Celem jest nauczenie koncepcji programowania w ojczystym języku uczniów przed wprowadzeniem głównych języków opartych na języku angielskim. Istnieje wiele innych języków programowania innych niż angielski, a w Stack Overflow pojawia się nawet powiązane pytanie. Mam kilka pytań dotyczących tych języków: * Czy ktoś na tej stronie nauczył się programować w języku innym niż angielski? Jeśli tak, to jak trudne było przejście na pierwszy język angielski? * Czy istnieją dowody oparte na badaniach, że osoby nieanglojęzyczne uczą się programowania szybciej/lepiej, używając języków ze słowami kluczowymi w ich ojczystym języku zamiast w języku angielskim?


title: Czy używanie niestandardowych komentarzy jednowierszowych jest w porządku w C?

text: Zauważyłem, że Visual C++ 2010 (moje obecne środowisko) i XCode pozwalają na niestandardowe, jednoliniowe komentarze w moich programach C. Ponieważ są to obie moje platformy docelowe, zakładam, że można z nich korzystać? VC++ 2010 nie obsługuje C99, więc jestem ograniczony do C89, chociaż wiem, że C99 dodało obsługę.


title: Statyczna a dynamiczna alokacja pamięci - wiele obiektów stałych, tylko niewielka ich część jest używana w czasie wykonywania

text: Oto dwie opcje: Opcja 1: enum QuizCategory { CATEGORY_1(new MyCollection<Question>() .add(Question.QUESTION_A) .add(Question.QUESTION_B) .add...), CATEGORY_2(new MyCollection<Question>() .add(Pytanie.PYTANIE_B) .add(Pytanie.PYTANIE_C) .add...), ... ; publiczna kolekcja MojaKolekcja<Pytanie>; private QuizCategory(MyCollection<Question> collection) { this.collection = collection; } pytanie publiczne getRandom() { return collection.getRandomQuestion(); } } Opcja 2: enum QuizCategory2 { CATEGORY_1 { @Override protected MojaZbiór<Pytanie> populateWithQuestions() { return new MojaZbiór<Pytanie>() .add(Question.QUESTION_A) .add(Question.QUESTION_B) .add...; } }, CATEGORY_2 { @Override protected MojaKolekcja<Pytanie> populateWithQuestions() { return new MojaKolekcja<Pytanie>() .add(Pytanie.QUESTION_B) .add(Pytanie.QUESTION_C) .add...; } }; public Question getRandom() { MojaKolekcja<Pytanie> collection = populateWithQuestions(); return collection.getRandomQuestion(); } protected abstract MojaKolekcja<Pytanie> populateWithQuestions(); } Będzie około 1000 kategorii, każda zawierająca od 10 do 300 pytań (średnio 100). W czasie wykonywania zwykle używanych jest tylko 10 kategorii i 30 pytań. Każde pytanie jest samo w sobie stałą wyliczeniową (z jej polami i metodami). Staram się wybierać między tymi dwiema opcjami w kontekście aplikacji mobilnej. Nie dokonałem żadnych pomiarów, ponieważ nie napisałem jeszcze pytań i chciałbym zebrać więcej informacji przed podjęciem takiej lub innej opcji. O ile rozumiem: (a) Opcja 1 będzie działać lepiej, ponieważ nie będzie potrzeby wypełniania kolekcji, a następnie wyrzucania pytań; (b) Opcja 1 będzie wymagała dodatkowej pamięci: 1000 kategorii x 100 pytań x 4 bajty na każde odwołanie = 400 Kb, co nie jest znaczące. Skłaniam się więc do Opcji 1, ale zastanawiałem się, czy mam rację w swoich założeniach i nie przegapię czegoś ważnego? Może ktoś stanął przed podobnym dylematem? A może to właściwie nie ma aż takiego znaczenia?


title: Dlaczego CS uczy się zapamiętywania?

text: W zeszłym roku uczęszczałem na zajęcia z informatyki na zaawansowanym poziomie. Wygląda na to, że nauczono nas po prostu **zapamiętywać** kod i funkcje, a **nie** być zaradnym i wydajnym w korzystaniu z dokumentacji i tym podobnych. Praktycznie wyobrażam sobie, że wiele (jeśli nie wszystkie) zadań programistycznych pozwoliłoby ci przeglądać dokumentację, przeglądać przeszły kod i kod innych, zasadniczo robiąc to, co mój nauczyciel uznałby za „oszukiwanie”. Chociaż zgadzam się, że podstawowe pojęcia są niezbędne do zapamiętania (w każdym temacie), wydaje mi się zbyteczne i niepraktyczne zdawanie egzaminu pisemnego na zajęcia z CS, zwłaszcza gdy praktycznie masz kompilator, debugger, referencję podręczniki i **cały internet**, do których można się odwoływać w każdej rzeczywistej sytuacji w pracy. **Dlaczego naucza się CS skupiając się na _zapamiętywaniu_ kodu i funkcji, w przeciwieństwie do uczenia przydatnych umiejętności, takich jak używanie i interpretacja dokumentacji, przykładowy kod, debugger itp.?**


title: Jak zdecydować, jakiego frameworka testowego użyć?

text: Sytuacja jest taka. Jestem młodszym programistą w małym rządowym projekcie IT. Nie mamy nic z ciągłej integracji ani zautomatyzowanego środowiska testowego. Ale pomysł polega na rozwijaniu tego rodzaju rzeczy / ulepszaniu naszego rozwijającego się środowiska. Produktem jest algorytm przetwarzania danych, który następnie wyświetla informacje użytkownikowi końcowemu za pośrednictwem aplikacji internetowej. Tak więc nadchodzi sporo pracy nad modyfikacją javascript aplikacji internetowej. W związku z tym chcemy zaimplementować testowanie jednostkowe dla javascript. Przyjrzałem się temu pytaniu o przepełnienie stosu, które przedstawia kilka różnych struktur testowania jednostek dla javascript. Pytanie brzmi – jak mam zdecydować, z którego frameworka zacząć korzystać? * Jaka jest lista kryteriów wyboru platformy testowej? * Czy praktyczne jest wypróbowanie ich wszystkich? * Poświęć dużo czasu na czytanie forów itp. o tym, jak są używane?


title: Jak skuteczne są wyzwania programistyczne w procesie rekrutacji?

text: Myślę, że nasza firma może tworzyć wyzwania mające na celu znalezienie kandydatów na inżynierów oprogramowania, którzy są: * Dobrzy w rozwiązywaniu problemów, a nie w zadziwianiu rekruterów. * Bardziej prawdopodobne, że będzie się bać przyjść do nas na targach kariery. * Bardziej prawdopodobne, że nie będą w pełni wykorzystywane w swojej obecnej pracy programistycznej, ale są zbyt introwertyczni, aby coś z tym zrobić. Aby zapoznać się z przykładem, zobacz ten artykuł, w którym omówiono ukrywanie adresu e-mail w obrazie za pomocą programu Piet. Po prostu nie mogę znaleźć żadnych badań ani twardych danych na temat tego, czy to faktycznie działa, czy nie.


title: Jak korzystać z MessageBox za pomocą wzorca MVVM?

text: Implementuję aplikację UI przy użyciu wzorca projektowego MVVM. Chodzi o to, że czasami, gdy wykryjesz, że coś jest nie tak z danymi wprowadzonymi przez użytkownika, chciałbyś go jakoś powiadomić. Rozwiązaniem, z którego korzystałem do tej pory, było posiadanie "szkieletu wiadomości", który pozwala mi zasadniczo wyświetlać wiadomości w `ListView`, który integruję w oknie. Jednak czasami okna są nieco „przeładowane” elementami graficznymi i chciałbym móc wyświetlać komunikaty w oknie komunikatów (w zasadzie okno modalne). Ponieważ `ViewModel` nie powinien być świadomy niczego o interfejsie użytkownika, nie mogę „jawnie” utworzyć instancji żadnego okna. Idealnie, to okno modalne również używałoby wzorca MVVM, a zatem zaimplementowałbym dla tego okna `ViewModel`, który byłby tworzony w `ViewModel` głównego okna i przekazywany do okna modalnego przez `DataContext`. Chciałbym mieć „prosty” przykład, jak to zrobić? A może to podejście powinno być zabronione w aplikacji MVVM? **EDYTUJ** : Czy polecasz korzystanie z Unity Framework?


title: Brudny hack, aby uniknąć licencjonowania GPL

text: Właśnie znalazłem coś dziwnego w kodzie firmy, dla której pracuję. W oprogramowaniu osadzonym, w którym dynamiczne łączenie nie istnieje, współdzielona biblioteka (udostępniona na licencji GPL) jest kopiowana do obiektu, który jest następnie statycznie łączony. Oto fragment pliku makefile: $(TARGET_DIR)/$(PHOST)_P_LIBxxxxxx.o: $(TARGET_DIR)/$(BINIMAGE) $(ECHO) --- Przechowywanie dynamicznie powiązanej biblioteki jako obiektu ELF --- $(QUIET )cd $(TARGET_DIR) && \ powerpc-eabi-objcopy --input-target binary --output-target \ elf32-powerpc --binary-architecture powerpc:common \ --keep-global-symbol=_binary_$(PHOST) _P_LIB_xxxxxx_start \ --keep-global-symbol=_binary_$(PHOST)_P_LIB_xxxxxx_end \ --keep-global-symbol=_binary_$(PHOST)_P_LIB_xxxxxx_size \ --rename-section .data=.rodata,alloc,load,readonly,data ,contents \ $(BINIMAGE) $(PHOST)_P_LIBxxxxxx.o $(RM) $(TARGET_DIR)/$(BINIMAGE) $(ECHO) $(ECHO) --- Biblioteka P gotowa --- Czy to w jakiś sposób omija zasady GPL ? Czy po prostu to nielegalne?


title: Skąd pochodzą symbole *args i **kwargs w Pythonie?

text: Wiem, że `*args` i `**kwargs` to sposoby na dostarczenie większej ilości argumentów do funkcji w Pythonie. Zastanawiam się, skąd te terminy się wywodzą. Dlaczego na początku są wszystkie gwiazdki? Co oznacza kw w kwargs?


title: jakie są główne różnice między serwerem WWW a serwerem aplikacji?

text: Jestem nowy w tworzeniu stron internetowych i właśnie zacząłem odkrywać różne rzeczy. Czytałem o tym, jak strona internetowa jest przetwarzana i wysyłana do klienta przez serwer WWW, ale pomyliłem się z serwerem aplikacji. Jaka jest różnica między nimi ? dlaczego aplikacja. serwer jest potrzebny ? i kilka przykładów obu z nich.


title: Czy ta prosta zaszyfrowana komunikacja XOR jest całkowicie bezpieczna?

text: Powiedzmy, że Alice i Peter mają pamięć flash USB o pojemności 4 GB. Spotykają się i zapisują na obu kijach dwa pliki o nazwach `alice_to_peter.key` (2GB) i `peter_to_alice.key` (2GB), które zawierają losowo generowane bity. Nigdy więcej się nie spotykają, ale komunikują się drogą elektroniczną. Alicja utrzymuje również zmienną o nazwie `alice_pointer`, a Peter utrzymuje zmienną o nazwie `peter_pointer`, z których obie są początkowo ustawione na zero. Kiedy Alicja musi wysłać wiadomość do Piotra, robi to (gdzie `n` jest n-tym bajtem wiadomości): szyfrowana_wiadomość_do_peter[n] = wiadomość_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] szyfrowany_payload_to_peter = alice_pointer + szyfrowany_petersage_topoint += length(encrypted_message_to_peter) ~~(dla większego bezpieczeństwa wykorzystana część klucza może zostać usunięta)~~ Peter otrzymuje `encrypted_payload_to_peter`, czyta `alice_pointer` przechowywany na początku wiadomości i robi: message_to_peter[n] = crypto_message_to_peter[n] XOR alice_to_peter.key[alice_pointer + n] ~~A dla maksymalnego bezpieczeństwa, po przeczytaniu wiadomości również usuń używaną część klucza.~~ \- EDIT: W rzeczywistości ten krok za pomocą tego prostego algorytmu (bez integralności sprawdzanie i uwierzytelnianie) zmniejsza bezpieczeństwo, patrz post Paŭlo Ebermann poniżej. Kiedy Peter musi wysłać wiadomość do Alice, robią odwrotnie, tym razem używając `peter_to_alice.key` i `peter_pointer`. Dzięki temu trywialnemu schematowi mogą codziennie przez następne 50 lat przesyłać 2 GB / (50 * 365) = ~115kB zaszyfrowanych danych w obu kierunkach. Jeśli potrzebują więcej danych do wysłania, mogą użyć większych kluczy, na przykład przy dzisiejszych dyskach twardych o pojemności 2 TB (1 TB kluczy) możliwa byłaby wymiana 60 MB dziennie przez następne 50 lat! W praktyce to dużo danych; na przykład przy zastosowaniu kompresji to ponad godzina wysokiej jakości komunikacji głosowej. Wydaje mi się, że atakujący nie ma możliwości odczytania zaszyfrowanych wiadomości bez kluczy, bo nawet jeśli ma nieskończenie szybki komputer, to z brutalną siłą może dostać każdą możliwą wiadomość poniżej limitu, ale to astronomiczna liczba wiadomości, a atakujący nie wie, która z nich jest rzeczywistą wiadomością. Czy mam rację? Czy ten schemat komunikacji jest naprawdę całkowicie bezpieczny? A jeśli jest bezpieczny, to czy ma swoją nazwę? Szyfrowanie XOR jest dobrze znane, ale szukam nazwy tej konkretnej praktycznej aplikacji używającej dużych kluczy po obu stronach? Pokornie oczekuję, że ta aplikacja została wymyślona przez kogoś przede mną. :-) ~~Uwaga: Jeśli jest to absolutnie bezpieczne, to jest niesamowite, ponieważ przy dzisiejszych tanich dużych urządzeniach do przechowywania danych, bezpieczna komunikacja byłaby znacznie tańsza niż w przypadku drogiej kryptografii kwantowej, a to ma równoważne bezpieczeństwo!~~ **EDYTUJ :** Myślę, że w przyszłości będzie to bardziej praktyczne, ponieważ koszty przechowywania spadają. ~~Może rozwiązać bezpieczną komunikację na zawsze.~~ Dziś nie masz pewności, czy ktoś z powodzeniem zaatakuje istniejące szyfry nawet rok później i sprawi, że ich często kosztowne implementacje staną się niepewne. W wielu przypadkach zanim dojdzie do komunikacji, gdy obie strony spotkają się osobiście, nadszedł czas na wygenerowanie kluczy. Myślę, że jest idealny do komunikacji wojskowej, na przykład między okrętami podwodnymi, które mogą mieć HD z dużymi kluczami, a centralą wojskową może mieć HD dla każdej łodzi podwodnej. Może to być również praktyczne w życiu codziennym, na przykład do kontrolowania konta bankowego, ponieważ podczas zakładania konta spotykasz się z bankiem itp.


title: Pytanie o rzutowanie klasy w Javie za pomocą generyków

text: W klasie Java 6<? extends ArrayList<?>> a = ArrayList.class; daje i błąd, ale Class<? extends ArrayList<?>> b = (Class<? extends ArrayList<?>>)ArrayList.class; daje ostrzeżenie. Dlaczego (a) jest błędem? Co to jest, że Java musi zrobić w zadaniu, jeśli nie obsada pokazana w (b)? I dlaczego `ArrayList` nie jest kompatybilny z `ArrayList<?>` Wiem, że jeden jest „surowy”, a drugi „ogólny”, ale co można zrobić za pomocą `ArrayList<?>`, a nie za pomocą „ArrayList”, czy na odwrót?


title: Jak uwzględnić responsywny design przy wycenie aplikacji webowych?

text: W przeszłości zwykle musiałem jedynie szacować aplikacje internetowe na podstawie obsługi przeglądarek. Ale w przypadku nowszych projektów bardzo ważna jest również obsługa urządzeń i platform (rozdzielczość ekranu). Mam trudności z przedstawieniem szacunkowej oceny „projektu responsywnego”. Ile dodatkowego czasu (tylko oszacowanie) potrzeba na rozliczenie tego w całym wdrożeniu projektu internetowego?


title: Czy ta metoda jest czysta?

text: Mam następującą metodę rozszerzenia: public static IEnumerable<T> Apply<T>([NotNull] to źródło IEnumerable<T>, akcja [NotNull] Action<T>) gdzie T: class { source.CheckArgumentNull("źródło") ; action.CheckArgumentNull("akcja"); zwróć źródło.ApplyIterator(akcja); } private static IEnumerable<T> ApplyIterator<T>(to źródło IEnumerable<T>, akcja Action<T>) gdzie T : class { foreach (element var w źródle) { action(item); pozycja zwrotu plonów; } } Po prostu stosuje akcję do każdego elementu sekwencji przed jej zwróceniem. Zastanawiałem się, czy powinienem zastosować atrybut `Pure` (z adnotacji Resharper) do tej metody i widzę argumenty za i przeciw. **Zalety:** * ściśle mówiąc, to _jest_ czyste; samo wywołanie go w sekwencji nie zmienia sekwencji (zwraca nową sekwencję) ani nie powoduje żadnej obserwowalnej zmiany stanu * wywołanie go bez użycia wyniku jest wyraźnie błędem, ponieważ nie ma żadnego efektu, chyba że sekwencja jest wyliczona, więc ja Chciałbym, żeby Resharper mnie ostrzegł, jeśli to zrobię. **Wady:** * mimo że sama metoda `Apply` jest czysta, wyliczając wynikową sekwencję _będzie_ dokonywać obserwowalnych zmian stanu (co jest celem metody). Na przykład `items.Apply(i => i.Count++)` zmieni wartości elementów za każdym razem, gdy zostanie wyliczony. Zatem stosowanie atrybutu Pure jest prawdopodobnie mylące... Jak myślisz? Czy powinienem zastosować ten atrybut, czy nie?


title: Jak zapobiegać celowemu przeszacowywaniu w historyjkach użytkownika?

text: Pytam o to z czysto hipotetycznego punktu widzenia. Zgodnie z sekcją Spotkanie Planowania Sprintu w Przewodniku po Scrumie: „Liczba elementów wybranych z Backlogu Produktu dla Sprintu zależy wyłącznie od Zespołu Deweloperskiego. Tylko Zespół Deweloperski może ocenić, co może osiągnąć w nadchodzącym Sprincie”. Pytania: 1. Co może powstrzymać zespół programistów przed celowym przeszacowaniem czasu potrzebnego na ukończenie historyjek użytkownika? 2. Jeśli mamy do czynienia z długotrwałym kontaktem z właścicielem produktu i zespołem deweloperskim, czy należy to określić w umowie jako jakieś naruszenie lub naruszenie umowy? 3. Kto byłby odpowiedzialny za wykrycie takiego naruszenia? 4. W jaki sposób właściciel produktu mógł udowodnić, że takie naruszenie miało miejsce? Dziękuję za przeczytanie.


title: Co jest nie tak z względnymi importami w Pythonie?

text: Niedawno zaktualizowałem wersje pylint, popularnego kontrolera stylu Pythona. Poszło balistycznie w całym kodzie, wskazując miejsca, w których importuję moduły w tym samym pakiecie, bez określania pełnej ścieżki pakietu. Nowy komunikat o błędzie to W0403. > W0403: Względny import %r, powinien być %r > > Używany, gdy zostanie wykryty import względem katalogu pakietu. * * * ### Przykład Na przykład, jeśli moje pakiety mają taką strukturę: /cake /__init__.py /icing.py /sponge.py /drink a w pakiecie sponge piszę: import icing zamiast import cake.icing Otrzymam ten błąd. * * * Chociaż rozumiem, że nie wszystkie przesłania Pylint są równie ważne i nie boję się ich odrzucać, nie rozumiem, dlaczego taka praktyka jest uważana za kiepski pomysł. Miałem nadzieję, że ktoś może wyjaśnić pułapki, abym mógł poprawić swój styl kodowania, zamiast (jak obecnie planuję) wyłączać to pozornie fałszywe ostrzeżenie.


title: Czym dokładnie jest model względem klasy ModelAndView w Spring?

text: Co dokładnie oznacza część „Model”? Czy jest taki sam jak model domeny? Czytałem, że to mapa, ale trudno mi zrozumieć koncepcję.


title: Co to znaczy oczekiwany czas działania i średni czas działania algorytmu?

text: Powiedzmy, że chcemy analizować czas działania algorytmów. Czasami mówimy, że chcemy znaleźć czas działania algorytmu, gdy rozmiar wejściowy wynosi n iw najgorszym możliwym przypadku jest to oznaczane przez O(n). Czasami jednak widzę książki/artykuły mówiące, że musimy znaleźć **oczekiwany czas** algorytmu. Czasami używany jest również **średni czas pracy** . Co to jest „oczekiwany czas”? W jakich przypadkach warto znaleźć _oczekiwany czas_ zamiast najgorszego czasu? **Edytuj**: Myślę, że istnieje subtelna różnica między _oczekiwanym czasem działania_ a _średnim czasem działania_, ale nie jestem pewien. W tym poście chcę poznać dokładną różnicę, jeśli w ogóle.


title: Czy składnia Clojure jest naprawdę prostsza niż Scala?

text: Argument, który zawsze jest wysuwany na korzyść Clojure, jest taki. Składnia jest prostsza i istnieje tylko jeden sposób wyrażania kodu bez skomplikowanych reguł. Jednak Scala ma mnóstwo różnych typów składni i konstrukcji w porównaniu do Clojure. Ale przez ostatni tydzień, próbując nauczyć się Clojure, zauważyłem, że lista wbudowanych makr jest nieskończona. Mimo że piszemy je z tą samą składnią nawiasów, musimy nauczyć się, jak każde z nich działa. Więc w jakim sensie składnia Clojure jest prostsza? Dla LISPerów może tak być, ale dla ludzi z różnych środowisk uczenie się różnych konstrukcji w Scali wydaje się prostsze. Więc z neutralnego punktu widzenia, która składnia jest prostsza i czytelna?


title: Czy tworząc API powinienem trzymać się małych funkcji i wielu wywołań, czy kilku wywołań i dużych funkcji?

text: Posiadam platformę szynową, którą utrzymuję. Na jego bazie zbudowano wiele różnych aplikacji internetowych. Jednak teraz klient prosi o API, aby utrzymać użytkowników na swojej stronie, ale skorzystać z niektórych zautomatyzowanych zadań, które mamy. Platforma służy do budowania aplikacji ubezpieczeniowych i umożliwia ich zakup online, a także udostępnia sposoby pobierania dokumentacji związanej z Twoją polisą. Więc moje pytanie podczas budowania API jest następujące: Kiedy muszę zrobić wiele rzeczy, takich jak "sprawdzanie", tworzenie "użytkownika", "profil użytkownika" i "polityka" prawie w tym samym czasie. Czy powinienem wykonać 4 oddzielne wywołania API i sprawić, by klient zbudował 4 wywołania po swojej stronie. LUB powinienem mieć jedno wywołanie, które wyłącza wiele parametrów, które weryfikuje klienta i tworzy wszystkie 3 z tych rzeczy w tym samym czasie, upraszczając rzeczy dla klienta? W tym przypadku klient otrzymuje wszystkie wymagane informacje w tym samym czasie, więc nie jest tak, że w jego aplikacji występuje naturalny przepływ, w którym zatrzymuje się i może wykonać wywołanie API do mojej platformy. Ponieważ byłem już po stronie klienta, korzystając z wielu interfejsów API, moim instynktem jest sprawienie, aby klient był tak prosty, jak to tylko możliwe i aby wykonał tylko jedno wywołanie. Jednak prowadzi to do dość dużych `funkcji` w API, których też nie jestem fanem. Jak sugerujesz, żebym sobie z tym poradził? Przypominam, że nie jestem przekonany, czy klienci będą w stanie zaimplementować skomplikowane API po swojej stronie.


title: Strategie zarządzania wieloma klientami, które mogą jednocześnie edytować te same dane

text: Jak poradzić sobie z sytuacjami, w których wielu klientów może edytować ten sam obiekt w tym samym czasie? Na przykład mam aplikację internetową z konsolą administracyjną, która pozwala edytować dane profilu. Kilku użytkowników chce otworzyć ten sam profil i edytować go. Jeśli po prostu pozwolę, aby wszystko poszło tak, jak oni, otrzymam sytuację „ostatni, który ratuje, wygrywa” i wszyscy inni użytkownicy stracą swoje zmiany. Zablokowanie obiektu do edycji na kliencie, gdy ktoś wejdzie na stronę edycji, wydaje się stosunkowo łatwe i ogólnie akceptowalne dla prostych obiektów. Jednak w przypadku złożonych obiektów, gdy różni użytkownicy mogą chcieć zmienić różne części obiektu, scalanie byłoby znacznie lepsze. Czytałem artykuł na temat bezkonfliktowych replikowanych typów danych i wydaje się, że jest dość złożony i nie obejmuje sytuacji konfliktowych. Czy istnieją inne sposoby łączenia obiektów? A może istnieją zupełnie inne strategie radzenia sobie z sytuacją?


title: Przekazywanie wielu błędów z powrotem z warstwy usług

text: Używam Springa do aplikacji internetowej. Aby sprawdzić poprawność danych wprowadzonych przez użytkownika w formularzu, na przykład w celu utworzenia encji Person I walidacja użytkownika JSR 303 w celu sprawdzenia, czy nie ma pustych/pustych lub prawidłowych wzorców itp. Niektóre rzeczy jednak sprawdzam w warstwie usług, takie jak upewnienie się, że pole jest unikalne w bazie danych, a jeśli nie, zgłasza wyjątek. Łapię ten wyjątek w kontrolerze i dodaję błąd do pola. To jest w zasadzie to, co robi Ben J w Opcji 1 tutaj http://stackoverflow.com/questions/3224749/passing-errors-back-to-the-view-from-the-service-layer Warstwa usług public Person createPerson(String username, String fullName, String specialCode) throws DuplicateUsernameException { // Sprawdź, czy nazwa użytkownika istnieje i wyrzuć wyjątek, w przeciwnym razie utwórz osobę. if (checkNazwaUżytkownikaIstniejąca(nazwaużytkownika)) { wyrzuć nowy Wyjątek ZduplikowanejNazwyUżytkownika(); } Osoba osoba = nowa Osoba(username, fullName, specialCode); zwróć personDao.create(osoba); } Kontroler void createPerson(formularz, błędy błędów) { spróbuj { service.createPerson(form.getUsername(), form.getFullName(), form.getSpecialCode()); } catch (DuplicateUsernameException e) { error.add("nazwa użytkownika", "Ta nazwa użytkownika istnieje"); } // render view ... } Do tej pory dobrze mi to służyło, ale teraz muszę sprawdzić, czy dwa pola są indywidualnie unikalne i chcę o tym poinformować użytkownika. W powyższym przykładzie, jeśli chciałem sprawdzić, czy specialCode był również unikalny, mógłbym dodać kolejny test poniżej istniejącego w warstwie usług i wyrzucić osobny DuplicateSpecialCodeException. Warstwa usług public Person createPerson(String nazwa użytkownika, String fullName, String specialCode) throws DuplicateUsernameException, DuplicateSpecialCodeException { if (checkUsernameExists(username)) { throw new DuplicateUsernameException(); } if (checkSpecialCodeExists(specialCode)) { throw new DuplicateSpecialCodeException(); } Osoba osoba = nowa Osoba(username, fullName, specialCode); zwróć personDao.create(osoba); } Kontroler void createPerson(formularz, błędy błędów) { spróbuj { service.createPerson(form.getUsername(), form.getFullName(), form.getSpecialCode()); } catch (DuplicateUsernameException e) { error.add("nazwa użytkownika", "Ta nazwa użytkownika istnieje"); } catch (DuplicateSpecialCodeException e) { error.add("specialCode", "Ten specjalny kod istnieje"); } // render view ... } Problem polega na tym, że jeśli użytkownik poda zduplikowaną nazwę użytkownika i zduplikowany kod specjalny, zostanie poinformowany tylko o zduplikowanej nazwie użytkownika. Chcę pokazać oba pola. Jaki jest fajny sposób na zrobienie tego? Moje dotychczasowe pomysły to: * Zrzuć wyjątek, który zawiera wszystkie błędy. * Przekaż obiekt Errors do usługi i dodaj do niego wartości. Obie te metody polegałyby na tym, że warstwa usługowa znałaby nazwy pól i odpowiedni kod błędu, co wydaje się być sprzeczne z utrzymywaniem oddzielnych warstw.


title: Co to jest ASM.js i co to oznacza dla wszystkich?

text: Zaczynam słyszeć pogłoski o projekcie o nazwie ASM.js. Obecnie ich strona internetowa jest okropna i zagmatwana. Oto, co wiem z moich badań w sieci. * Jest to podzbiór JavaScriptu, który można bardzo zoptymalizować. Zgaduję, ponieważ unika bardziej dynamicznych części języka. * Wydajność kodu skompilowanego do ASM.js działa mniej więcej o połowę szybciej niż C (nie jest to światło). * Intencją jest, aby kompilatory stworzyły swój język docelowy ASM.js. * Firefox będzie dostarczany z wbudowaną optymalizacją ASM.js. * Zespoły Mozilli i Unreal przeniosły za jego pomocą _Unreal Engine do sieci_ i uruchomiły go w kompilacji _Firefox_ z niemal natywną szybkością. Wydaje się, że w sieci nie ma żadnych konkretnych informacji o tym, czym tak naprawdę jest, ani o przydatności lub ostatecznym celu. Czy to, że mogę skompilować mój kod po stronie serwera i uruchomić go w przeglądarce z prędkością zbliżoną do natywnej? Jakie są konsekwencje dla deweloperów?


title: Czy rozważasz odejście z pracy, jeśli przez dłuższy czas nie możesz dodać niczego nowego do swojego CV?

text: > **Możliwy duplikat:** > Kiedy wiesz, że nadszedł czas, aby odejść od obecnej pracy? Właśnie zdałem sobie sprawę, że nie mogę dodać żadnych nowych umiejętności programistycznych do mojego CV przez jakieś 10 miesięcy. Nie jestem pewien, czy to zły znak, czy nie, jeśli chodzi o moją obecną pracę. Jak byś zinterpretował tę sytuację, gdybyś był młodszym programistą .NET w wieku 27 lat?


title: Ruszać dalej i szukać gdzie indziej, czy skonfrontować się z szefem?

text: > **Możliwy duplikat:** > Kiedy wiesz, że nadszedł czas, aby odejść od obecnej pracy? **Problem:** Nie miałem wcześniejszego doświadczenia podczas rozmowy kwalifikacyjnej, więc nie wiedziałem dokładnie, o co zapytać _ich_ o firmę, kiedy zostałem zatrudniony. Od tego czasu zauważyłem wiele znaków ostrzegawczych i irytacji, takich jak: * Czterech programistów, kiedy zaczynałem, i wszyscy mówili o odejściu „Ben” lub „Ryan”. Jeden inżynier zatrudniony trzydzieści dni przede mną, drugi dwa tygodnie po mnie. Większość działu zatrudnia dużą liczbę osób, odkąd zacząłem. * Bardzo ograniczony dostęp do internetu. Rozumiem pomysł z punktu widzenia IT, ale blokowany jest nie tylko Facebook, ale także Youtube, Twitter i Pandora. Odkryłem również, że blokują wszelki dostęp do stron internetowych innych niż DNS (http://xxx.xxx.xxx.xxx/) i, co dziwne, Miranda-IM. * Niskie kabiny. Co jest w porządku, ponieważ lubię moich najbliższych współpracowników, ale umieszczają programistów z obsługą klienta, szkoleniem klientów i działem kontroli jakości w ogromnym otwartym pomieszczeniu. Hałas, hałas, hałas i ludzie przestają gawędzić przez cały dzień. Słuchawki idą tylko tak daleko. * Odkąd zacząłem mówić nam programistom, żeby nie rozmawiali w naszych boksach o sprawach niezwiązanych z pracą, takich jak gry wideo, mój szef wysłał kilka e-maili, mimo że spędzamy na tym tylko pięć minut co kilka godzin. Dalsze kopanie mówi mi, że dzieje się tak dlatego, że ktoś ciągle narzeka, że programiści „obijają się”. * Przez cały dzień ludzie patrzą mi przez ramię. Byłem na czacie internetowym Freenode, aby uzyskać pomoc z problemami programistycznymi, aw ciągu kilku minut otrzymałem e-mail od mojego szefa (do wszystkich programistów) z informacją, że NIE powinniśmy być połączeni z żadnym zewnętrznym serwerem czatu w pracy. * System kontroli wersji z 2005 roku, do którego musimy uzyskać dostęp za pomocą IE i zachować zainstalowane środowisko Java 1.4 JRE, aby móc z niego korzystać. Pewnego dnia przypadkowo zaktualizowałem Javę 6 i spędziłem kolejne dwa dni walcząc z moim komputerem, aby rozwiązać ten „problem”. * Bez kontroli źródeł, komentarzy na temat czegokolwiek, standardów, przeglądu kodu, testów jednostkowych, zdrowego rozsądku. Dosłownie znalazłem problem w sposobie obsługi tłumaczeń zasobów ciągów, który wynika z prostego faktu, że nie przycinają nadmiaru białych spacji, co prowadzi do tego, że programiści robią: getResource("Date:") zamiast: getResource("Date") + ": " i kazano mi po prostu dodać nadmiarowe spacje z powrotem do bazy danych, zamiast bezpośrednio zajmować się problemem. Niektóre z tych rzeczy chciałbym zrozumieć, ale lubię mieć otwarty IRC, aby rozmawiać w kilku różnych pokojach w ciągu dnia i utrzymywać kontakt z przyjaciółmi/rodziną przez komunikator internetowy. Nie zakłócają mojej koncentracji (nie BLISKO tak bardzo, jak pani z działu kontroli jakości, która wpada, żeby porozmawiać o swoim synu), ale ponieważ ludzie patrzą mi przez ramię przez cały dzień, przechodząc obok, narzekają, gdy widzą coś, co nie jest „programistą”. - wygląda praca". Mój szef i dział kontroli jakości powiedział mi, że wykonuję dobrą, szybką pracę. Powinienem być oceniany na podstawie wyników i jakości mojej pracy, a nie tego, co mam na ekranie przez pięć sekund, przez które przechodzisz. Więc moje pytanie brzmi, mimo że ledwo dobiegam 90 dni: **Jak to zrobić decydujesz się na odejście z pracy i szukanie gdzie indziej, lub kiedy powinieneś zacząć współpracować z szefem, aby rozwiązać te problemy? Czy jest w ogóle możliwe, aby szef współpracował ze mną w wielu z tych rzeczy?** To jedyne miejsce, z którego usłyszałem odpowiedź, mimo że wysyłałem kilka CV dziennie przez kilka miesięcy, a to miejsce dobrze się opłaca za umieszczenie z ich wieloma wadami, ale zaczynam być już tak nieszczęśliwy, pracując tutaj. Czy powinienem się z tym pogodzić? **Edytuj:** Doceniam wszystkie odpowiedzi! Po pierwsze: jestem w Stanach Zjednoczonych i mam pensję, a od zakończenia 90-dniowego okresu próbnego dzieli mnie około 5 dni. Chociaż to mój bezpośredni szef wysyła e-maile, o których wspomniałem, uważam, że to kierownik działu wykonuje większość zginania rąk. Jest też jedynym, który ma biuro. Mój bezpośredni szef to miły facet, jest po prostu zadowolony z siebie. Jak wspomniałem, Facebook/Twitter/Youtube ma sens z punktu widzenia IT (i zarządzania). Niektórzy ludzie _nie_ muszą mieć te rzeczy ograniczone, inaczej marnują na nie czas. Jednak od czasu do czasu natrafiam na filmy na Youtube, które mogą być przydatne, na przykład podczas tworzenia Androida (którym jestem). Przydałoby się to również, jeśli chodzi o część „badawczą” działu „B+R”, w którym pracuję. To może być po prostu moja naiwność, ale uważam, że ludzie powinni być oceniani na podstawie ich pracy (szybkości i jakości), a nie tego, co zdarzają się, gdy przechodzisz obok. Jeśli wykonuję swoją pracę i jest ona dobra, to czy ma znaczenie, na jakiej stronie jestem? Powiązane z powyższym, ale _do_ rozumiem powody ograniczania dostępu do komunikatorów internetowych i/lub IRC w pracy i rozumiem, że płacą mi za bycie tutaj i mogą dyktować mi, co mogę, a czego nie mogę zrobić. Chociaż, znowu, oceniaj mnie na podstawie mojej pracy, a nie tego, co jest na moim ekranie. Czy to naprawdę takie rzadkie w dziedzinie tworzenia oprogramowania? Z mojego zrozumienia i doświadczenia wynika, że wpatrywanie się w IDE przez 8 godzin, cały czas pisząc, jest całkowicie nierealne. Mogę rozmawiać przez IM/IRC, ciesząc się czasem spędzonym w pracy łatwiej dzięki temu, bez wyrzucania "pamięci krótkotrwałej", kontynuując pracę nad problemem w mojej głowie. Nie mogę tego zrobić, kiedy Becky z QA zatrzymuje się, żeby porozmawiać ze mną o lunchu. Czuję, że poszczęściło mi się w tej pracy i cieszę się, że ją mam. To miejsce ma swoje pozytywy: pobłażania w kwestii ubioru, pobłażania, kiedy musimy być w pracy (najlepiej przed 9 rano, tu trochę swobody), wielkie korzyści. Ale poważnie wziąłbym mniej pieniędzy, gdyby oznaczało to, że mógłbym cieszyć się dniem bardziej tylko w prostych rzeczach, o których, przyznaję, _są_ głównie ja marudę. Po prostu czuję, że jeśli mam siedzieć za komputerem ponad 8 godzin dziennie, chciałbym, aby było to tak przyjemne, jak to tylko możliwe.


title: Wizualizuj schemat blokowy z wieloma symbolami końcowymi

text: Szukam znormalizowanego sposobu wizualizacji następującej hierarchicznej logiki: Stan wątku jest reprezentowany przez odpowiedzi na hierarchiczny zestaw pytań Możesz przeczytać tę listę jak schemat blokowy, iterujesz nad pytaniami, zdecyduj, idź o krok głębiej i tak dalej. Dlatego pomyślałem, że najlepiej to zwizualizować za pomocą schematu blokowego. Problem polega na tym, że w tym hierarchicznym zestawie można skończyć w więcej niż jednym stanie i jest to całkowicie ważne. Nigdy nie widziałem schematu blokowego, w którym można wprowadzić więcej niż jeden stan. Czy nadal jest to możliwe i brakuje mi odpowiedniego symbolu, aby przedstawić tę logikę, czy schemat blokowy i tak nie pasuje? Jakiej innej reprezentacji graficznej mogę użyć, czy w UML jest coś pasującego? Niedeterministyczna maszyna stanów wydaje się być niewystarczająco intuicyjna, przeniesienie jej do deterministycznej maszyny stanów doprowadziłoby do wielu stanów i tak dalej.


title: „Super” kontra „metoda chroniona” do uruchamiania wspólnego kodu

text: W wielu językach `super()` pozwala wywołać metodę nadrzędną, którą nadpisałeś. Używałem `super` w moim JavaScript (z fałszywą implementacją obiektową) do uruchamiania wspólnego kodu przez długi czas bez problemów. Teraz w końcu trafiłem na przypadek, w którym wywołanie metody klasy bazowej `protected` byłoby lepsze niż wywołanie `super`. Oto konkretny przykład. > Dziadkowie -> Rodzic -> Dziecko Potrzebowałem dodać dziecko. Jest identyczny z Parent, z wyjątkiem jednej metody o nazwie someMethod. Kid's someMethod potrzebna do robienia zwykłych rzeczy Dziadka, ale nie konkretnych rzeczy Rodzica. Więc metoda SomeMethod dziecka nie mogła wywołać „super”, ponieważ spowodowałoby to wyzwolenie specyficznego kodu rodzica. Zamiast zmieniać strukturę mojej wielkiej klasy, po prostu sprawiłem, że Kid powielił wspólny kod dziadka. Dziadkowie { jakaś metoda { rób zwykłe rzeczy }; } Rodzic: Dziadkowie { jakasMetoda { super(); do rodziców } } Kid: Parent { someMethod { duplikat typowych rzeczy do konkretnych dzieci } } W mojej książce zduplikowany kod jest zły. Gdyby tylko dziadek pisał swoje zwykłe rzeczy jako metodę chronioną, nie musiałbym duplikować kodu. Grandparent { protected commonMethod virtual jakaśMethod } Rodzic: Grandparent { someMethod { commonMethod do określonych rzeczy dla rodziców } } Kid: Parent { someMethod { commonMethod do konkretnych rzeczy dla dzieci } } Czy powinienem całkowicie przestać używać `super` i przełączyć się na `chronione` metody dla uruchamiasz wspólny kod? Czy są jakieś pułapki związane z chronionymi metodami uruchamiania zwykłych rzeczy?


title: Niestandardowe szablony w aplikacji internetowej

text: Chcę zrozumieć zalety i wady generowania dynamicznych kontrolek aplikacji sieci Web. Pomysł polega na tym, aby dynamicznie generować wszystkie kontrolki na podstawie danych wyjściowych procedury bazy danych i wypełniać kontrolki, powiedzmy, w strukturze siatki/niezależnych kontrolkach. Wiem, że tworzenie kontrolek użytkownika i wypełnianie do układu to jedna z opcji. Powiedzmy, że jeśli nie wiemy, jaka jest struktura kontrolek, procedura zostanie wygenerowana w oparciu o złożoną logikę; co należy wziąć pod uwagę przy generowaniu struktury układu? Czy to, o czym myślę, nie jest logiczne w sensie aplikacji internetowych? Czy muszę rozwiązać ten problem w podejściu odgórnym niż w podejściu oddolnym?


title: Co definiuje rolę „programisty”?

text: Jestem młodszym programistą i pracuję w firmie niecały rok. Chociaż zawsze myślałem, że bycie programistą oznacza tworzenie oprogramowania i KODOWANIE czegoś, moje zadania są bardziej związane z pracą administracyjną, taką jak konfigurowanie Jenkins, replikacja SQL itp. Czy tego typu zadania są zawarte w roli programisty, czy też programista tworzy tylko oprogramowanie? Czy powinienem porozmawiać o tym z moim przełożonym? Czy jest to powszechny sposób oceny „rozwoju” umiejętności przez firmy?


title: Odpowiedni dobór ram bezpieczeństwa

text: Mam aplikację internetową do napisania przy użyciu RESTeasy API i do tego muszę zaimplementować zabezpieczenia (uwierzytelnianie oparte na formularzach). Więc nie jestem pewien, czy pasuje do tego najbardziej. Jak szukałem w Google, znalazłem Apache Shiro, Spring Security, itp. Przeczytałem też coś o słojach uwierzytelniania dostarczanych przez Rest. Proszę, pomóż mi z tym. EDYCJA: Moje wymagania: 1\. Powinienem być w stanie bez problemu korzystać z frameworka z RestEasy API. 2\. Powinien zapewniać przynajmniej uwierzytelnianie i autoryzację


title: Zawiłości gniazd w TCP i UDP

text: Dobrze znam TCP i UDP. Rozumiem proces, w którym TCP nawiązuje połączenia i inne teoretyczne fakty dotyczące TCP, ale kiedy czytam o dziurkowaniu TCP dla NAT Transversal, zaskoczył mnie sposób, w jaki connect(), accept() i listen() są wykonywane w TCP. Czy jest to jedno, czy wiele gniazd, które są używane do tego wszystkiego w TCP i czy robi się to w ten sam sposób w UDP?


title: Ładowanie kawałków wokół środka

text: Tworzę grę wokselową taką jak Minecraft. Mogę załadować porcje za pomocą wielowątkowości z kodem... for (int x = 0; x < WorldSettings.WORLD_WIDTH_IN_CHUNKS; x++) { for (int y = 0; y < WorldSettings.WORLD_LENGTH_IN_CHUNKS; y++) { chunks[x, y]. BulidVertexData(); Wątek.Uśpienie(50); } } działa to dobrze, zaczyna się od załadowania odległego fragmentu i ładuje go tam iz powrotem jak wycieraczka, która zbliża się, ale wolałbym, aby ładował się w kółko wokół gracza, najpierw ładując bliskie fragmenty. Jakieś pomysły?


title: Czy powinienem używać nawiasów w wyrażeniach logicznych, nawet jeśli nie jest to konieczne?

text: Załóżmy, że mam warunek logiczny „a AND b OR c AND d” i używam języka, w którym „AND” ma wyższy priorytet operacji niż „OR”. Mógłbym napisać następujący wiersz kodu: If (a AND b) OR (c AND d) Then ... Ale tak naprawdę jest to równoważne: If a AND b OR c AND d Then ... Czy są jakieś argumenty dla lub przeciwko dołączaniu obcych nawiasów? Czy doświadczenie praktyczne podpowiada, że warto je włączyć do czytelności? A może jest to znak, że programista musi naprawdę usiąść i nabrać pewności w podstawach swojego języka?


title: Czy oglądanie losowych fragmentów kodu jest przydatne do szybkiego określenia jakości projektu?

text: Aby zorientować się w jakości projektu, którego nigdy wcześniej nie widziałem (zazwyczaj projekty open source, które rozważam, czy użyć, czy nie), często zaczynam od otwierania losowych plików i przyglądania się drobnym szczegółom kodu. Szukam rzeczy takich jak: * Styl (czy jest zgodny z przyjętymi konwencjami dla języka i czy jest spójny) * Jakość i spójność komentarzy * Błędy charakterystyczne dla wspólnego języka (np. konsekwentnie nieużywanie `===` w javascript) * Czy to _wygląda_ Uważam, że logicznej struktury daje mi to dobre wyobrażenie o umiejętnościach programisty, który napisał kod, nawet jeśli nie wiem absolutnie nic o tym, co ma robić ten kod. Czy ludzie uważają, że jest to przydatne? Co należy wziąć pod uwagę, aby szybko ocenić jakość bazy kodu projektu, zakładając brak wiedzy o tym, jak to właściwie działa?


title: Jak zweryfikować dane z localStorage na serwerze?

text: W mojej aplikacji mobilnej przechowuję nazwę użytkownika zalogowanej osoby i pobieram niektóre dane dla podanej/zapisanej nazwy użytkownika. Gdy użytkownik sprawdza aktualizacje zawartości swoich danych na serwerze, serwer wylicza deltę treści na podstawie nazwy użytkownika. Aplikacja następnie odpowiednio aktualizuje swój lokalny wyświetlacz. Problem polega na tym, że ponieważ używam localStorage, nie ma gwarancji, że ktoś nie zmieni nazwy użytkownika przechowywanej lokalnie i spróbuje zażądać danych przeznaczonych dla kogoś innego. Jaki byłby najlepszy sposób na obejście tej możliwej luki w zabezpieczeniach? Proszę skomentować tę metodę, którą planuję wdrożyć: 1. Przy każdym logowaniu generowany jest losowy ciąg znaków, który jest przechowywany do przyszłego sprawdzenia w bazie danych, wraz z nazwą użytkownika i datą/godziną żądania. 2. Za każdym razem, gdy pojawia się żądanie pobrania danych dla nazwy użytkownika, musi mu towarzyszyć ciąg znaków z poprzedniej próby. Ponadto każdej nowej aktualizacji dla klienta towarzyszy nowy losowy ciąg, który jest przechowywany w bazie danych, a stary uznaje się za wygasły. 3. Jeśli losowy ciąg nie zostanie podany poprawnie, użytkownik zostanie wylogowany z aplikacji mobilnej (ponieważ potencjalnie może to być ktoś, kto manipuluje przy aplikacji). Zaletą tej metody jest to, że mam również ścieżkę audytu do późniejszej weryfikacji i kryminalistyki. Jakie są wady?


title: Zatwierdzenia zbiorcze a szybkie zatwierdzenia

text: Wiem, że większość z Was poradziłaby, aby podążyć za strategią i metodologią projektu. Jednak mam tylko szybkie pytanie, z punktu widzenia Seniora, co byłoby lepsze, aby zobaczyć szybkie małe zmiany od dewelopera lub duży fragment kodu wypchnięty do gałęzi?


title: Dlaczego komitet ISO 8601 wybrał poniedziałek jako pierwszy dzień tygodnia?

text: Niedziela jest uważana za pierwszy dzień tygodnia w Stanach Zjednoczonych i krajach, które naśladowały tradycję grecko-rzymską.


title: Mam dane, które wysyłam w "serii" po 100 rekordów ze znacznym opóźnieniem. Jak ustrukturyzować moje klasy pod kątem wielowątkowości?

text: Moje źródło danych wysyła informacje w 100 partiach po 100 rekordów z opóźnieniem od 1 do 3 sekund między partiami. Chciałbym rozpocząć przetwarzanie danych zaraz po ich otrzymaniu, ale nie jestem pewien, jak najlepiej do tego podejść. Kilka pomysłów, którymi się bawiłem to: * `yield` * Concurrent Dictionary * ConcurrentDictionary with INotifyProperyChanged * Events * itp. Jak widać, jestem wszędzie i doceniłbym przetestowane wskazówki, jak do tego podejść


title: Narzędzie do identyfikacji (i usuwania) niepotrzebnych plików witryny?

text: Nieuchronnie przestanę używać przestarzałego css, skryptu lub pliku obrazu. Zwłaszcza, gdy osobny projektant majstruje przy rzeczach i testuje kilka wersji obrazów. Zanim sam je zbuduję, czy istnieją jakieś narzędzia, które będą przeglądać witrynę i wyświetlać listę niepołączonych plików? W szczególności interesują mnie witryny ASP.NET MVC, więc wykrywanie wywołań (i między innymi) @Url.Content(...) jest ważne.


title: Formularze dynamiczne: wzór czy antywzór?

text: Jestem pewien, że to widziałeś. Baza danych zawiera kilka tabel o nazwach `Forms`, `Controls`,`FormsControls`, `ControlSets`, `Actions`, a program, który wysyła zapytania do tych tabel, ma dynamicznie generowany interfejs użytkownika. Odczyta wszystkie formularze, załaduje stronę główną, która zawiera łącza do nich wszystkich, lub osadzi je na jakiejś stronie głównej z kartami lub stronicowaniem, a dla każdego z tych formularzy odczyta różne pola tekstowe, pola wyboru, przyciski radiowe, prześlij przyciski, pola kombi, etykiety i inne elementy z kontrolek i tabel łączenia formularz-do-kontroli, ułóż te elementy zgodnie z bazą danych i połącz wszystkie kontrolki z logiką zgodnie z innymi regułami w bazie danych. Dla mnie to jest antywzór. W rzeczywistości sprawia to, że aplikacja jest trudniejsza w utrzymaniu, ponieważ jej projekt jest teraz rozłożony na wiele różnych systemów. Ponadto baza danych nie jest kontrolowana przez źródło. Jasne, może sprawić, że jedna lub dwie zmiany zajdą szybciej, po tym jak i tak przeanalizujesz program, aby zrozumieć, jak zmienić dane i pod warunkiem, że nie odbiegniesz od rodzaju zmian, które były przewidywane i uwzględniane, ale to często po prostu nie jest zrównoważone. Co mówisz?


title: Jakie mam opcje niezależnej sprzedaży oprogramowania w systemie Windows?

text: Zamierzam przenieść narzędzie ze sklepu z aplikacjami dla komputerów Mac do systemu Windows, platformy, na której obecnie spędzam większość czasu. Rozmawiałem z autorem oryginalnej aplikacji i zaczęliśmy rozmawiać o opcjach licencjonowania, jeśli zdecyduję się sprzedać aplikację, i wydaje się, że byłoby to wykonalne. Nigdy nie sprzedawałem oprogramowania niezależnie, nie mówiąc już o systemie Windows. Wiem o tym, że nie ma (jeszcze) równoważnego sklepu z aplikacjami dla systemu Windows (może taki, który pojawi się w systemie Windows 8). Zakładając, że mój produkt został dzisiaj ukończony i jestem gotowy do wejścia na rynek, jakie mam opcje sprzedaży oprogramowania dla systemu Windows jako niezależny programista lub Micro-ISV? Wiem, że mogę sprzedawać je przez własną stronę internetową i akceptować PayPal, ale czy istnieją opcje, które zapewnią większą widoczność, podobnie jak w sklepach z aplikacjami Apple? Jakieś opcje, których należy unikać?


title: Jak programista PHP może najlepiej przygotować się do kursu C++?

text: Nigdy nie programowałem w C++, ale w styczniu zamierzam wziąć udział w zajęciach obejmujących programowanie w C++. Chcę być w stanie wybić się w klasie i szukać porady, ponieważ pochodzę z PHP. Jak najlepiej przygotować się na sukces?


title: Scrum – spotkania „Co i jak”

text: Mój zespół i ja zmagamy się ze spotkaniami co i jak. Ciężko nam wybrać, nad czym pracować, kiedy nie wiemy, jak to będzie zrobione. Nasze szacunki mogą być dalekie od wskazywania szacunkowego poziomu wysiłku. W tym momencie dyskutuje się, czy powinniśmy zrobić jak przed co, aby to pbi było przynajmniej dość dobrze oszacowane. Jakie są inne opcje, które nie wymagają zmiany kolejności przyjętych praktyk scrumowych?


title: Skąd pochodzi termin „Front End”?

text: Skąd pochodzi termin „front-end”? Czy istnieje szczególna prezentacja/rozmowa/oferta pracy, która jest uważana za pierwsze użycie tego terminu? Czy komuś przypisuje się ukucie tego terminu? Wpis Merriam-Webster dotyczący „front-endu” twierdzi, że pierwszym znanym użyciem tego terminu był rok 1973, ale nie wydaje się, aby zawierał szczegóły dotyczące tego pierwszego znanego użycia. Podobnie strona Wikipedii o frontach i back-endach jest dość niskiej jakości i cytuje bardzo niewiele źródeł.


title: Czy wszystkie modele widoku mają być dostępne za pośrednictwem głównego modelu widoku w MVVM?

text: Obecnie pracuję nad aplikacją WP8. Mój obecny projekt polega na bezpośrednim powiązaniu każdego widoku z określonym modelem widoku. Jednak patrząc na próbki, wydaje się, że innym sposobem jest uzyskanie dostępu do wszystkich modeli widoku za pośrednictwem głównego modelu widoku, a następnie uzyskanie wszystkich widoków do ich modeli widoku za pośrednictwem MVM. Czy jest to właściwy sposób na zrobienie tego (aby nie powodowało to elastyczności i innych problemów w przyszłości)?


title: Dlaczego VBA / VBScript wymaga prefiksu „Ustaw”?

text: Kiedy ustawiam zmienną na obiekt w VBA / VBScript, zawsze muszę poprzedzić instrukcję "Set", na przykład: `Set Dict = CreateObject("Scripting.Dictionary")` Jeśli ustawię zmienną na prymityw lub tablicę wartość, muszę pominąć "Ustaw" taki jak: `Num = 123` Różni się to od języków takich jak JavaScript, PHP, Python itp. Czy jest jakiś techniczny powód, dla którego mają to wymaganie w VBA / VBScript?


title: Jaki jest realistyczny sposób obsługi poprawek oprogramowania specyficznych dla klienta?

text: Staram się zebrać skuteczne sposoby, w jakie inni rozwiązali następujący problem. W pracy zostaliśmy zmuszeni do wydania łatki oprogramowania (do zainstalowania na systemach użytkowników końcowych), którą chcemy, aby była widoczna tylko dla konkretnego klienta. Kod niestandardowy znajduje się we własnej gałęzi kontroli źródła. Problem polega na tym, że mamy dwie równoległe linie kodu (i budujemy skrypty), aby zachować synchronizację, a za każdym razem, gdy łatamy oryginalny kod, musimy łatać i testować kod specyficzny dla klienta. Jestem ciekaw, jak inne organizacje radzą sobie z tym scenariuszem? Jesteśmy otwarci na rozwiązania biznesowe, a nie _tylko_ techniczne (związane z kontrolą źródeł). Na przykład mówiliśmy o poinformowaniu klienta, że nie może otrzymywać aktualizacji w tej gałęzi. Nasza strategia rozgałęziania jest taka (na podstawie Przewodnika rozgałęziania programu Visual Studio TFS, chociaż używamy do tego Subversion) ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/XXtU0.png)


title: Sprawdź jakość kodu

text: Zostałem poproszony o sprawdzenie jakości dwóch baz kodu. Nigdy czegoś takiego nie robiłem i potrzebuję porady, jak to zrobić i zgłosić. **Tło** Istnieją dwaj dostawcy kodu, jeden w VB, a drugi w C (ISO 9899:1999 (C99)). Te dwa programy nie współpracują ze sobą zbyt dobrze i oczywiście obaj dostawcy obwiniają się nawzajem. Dlatego jako niezależna osoba dokonam przeglądu obu kodeksów, na poziomie kompleksowym, dokonam przeglądu jakości kodów, aby dowiedzieć się, gdzie najprawdopodobniej leży problem. Nie będę szukał problemów, ale po prostu przejrzę jakość i prostotę zarządzania i zrozumienia kodu. **Edytuj** : Nie otrzymałem jeszcze wielu informacji na temat tego, na czym polega problem. Właśnie powiedziano mi, że przeanalizuję kod pod kątem jakości. Niewiele więcej. Nie znam tła, dlaczego podjęli tę decyzję.


title: Jak poinformować Centrum powiadomień SignalR, że istnieje nowe powiadomienie bez sondowania SignalR w tej tabeli?

text: Zajmuję się tworzeniem systemu powiadomień wypychanych dla mojej aplikacji ASP.NET MVC. Pomysł polega na użyciu Redis do kolejkowania, ServiceStack do przetwarzania kolejek i SignalR do powiadomień wypychanych w celu zaimplementowania systemu, który jest w stanie dystrybuować różne typy powiadomień. Zrobiłem szybki prototyp, w którym mam usługę ServiceStack, która nasłuchuje w kolejce Redis. Po odebraniu wiadomości przegląda właściwość ReplyTo wiadomości, która zawiera adres URL pracownika (subskrybenta), który może przetworzyć wiadomość. Następnie formułuje odpowiedź dla tego pracownika i umieszcza ją w kolejce Redis. Tutaj zasadniczo ServiceStack używa funkcji PUBSUB Redis, aby powiadomić pracownika, że ma nowy element do przetworzenia. Następnie pracownik rozpoczyna przetwarzanie wiadomości. Na przykład, jeśli jest to komunikat żądania połączenia, spróbuje pobrać wszystkie wymagane dane z bazy danych SQL na podstawie identyfikatorów w komunikacie. Na koniec zapisuje wiadomość w tabeli „Powiadomienia”. Zgaduję, że byłoby wielu tych pracowników, przetwarzających różne typy powiadomień pochodzących z wszelkiego rodzaju prac w tle. Oto problem. Nie mam pojęcia, jak poinformować Centrum powiadomień sygnalizujących, że istnieje nowe powiadomienie bez sondowania sygnalizującego w tej tabeli. Mógłbym tutaj użyć zależności SQL, ale wydaje się to brzydkie. Ostatecznie fajnie byłoby trafić do tego Huba z żądaniem HTTP od mojego pracownika, ale nie wiem, czy jest to w ogóle możliwe. Co byście zasugerowali?


title: Czy jeśli połączę wiele aplikacji internetowych w jedną, zaoszczędzę zasoby?

text: Porównuję 2 różne podejścia architektury aplikacji J2EE: 1. Podziel niezależne części jako moduły jednej dużej aplikacji webowej. 2. Podziel niezależne części na różne aplikacje internetowe działające na tym samym serwerze. Pomiędzy tymi podejściami wolę drugie, ponieważ pozwala mi wprowadzać zmiany bez ponownego wdrażania całej aplikacji. Wyobraź sobie, że chcesz coś zmienić w app2. W przypadku jednej dużej aplikacji musisz ponownie wdrożyć całą aplikację. W drugim przypadku wystarczy ponownie wdrożyć app2. Ale mam pewne wątpliwości co do zużycia zasobów, takich jak zużycie pamięci i użycie procesora. Osobiście uważam, że każda aplikacja J2EE, bez względu na jej wielkość, ma pewien minimalny limit pamięci, z której będzie musiała korzystać. Ten minimalny limit jest potrzebny do ładowania kontekstu, plików konfiguracyjnych frameworka WWW, bibliotek jar i innych rzeczy. Moja hipoteza brzmi tak: „Posiadanie wielu aplikacji internetowych działających na tym samym serwerze prowadzi do zwielokrotnienia marnowania domyślnych minimalnych zasobów”. Czy poniższy obrazek jest prawidłowy? Czy jedna duża aplikacja chroni mnie przed mnożeniem domyślnych zasobów pokazanych na obrazku? ![Opis](http://i.stack.imgur.com/j0fgq.png)


title: Porady dotyczące refaktoryzacji projektu PHP

text: Mam mały SAS ERP, który został napisany kilka lat temu przy użyciu PHP. W tamtym czasie nie używał żadnego frameworka, ale kod nie jest bałaganem. Obecnie projekt się rozrasta i teraz pracuję z 3 kolejnymi programistami. Często pytają mnie, dlaczego nie migrujemy do frameworka takiego jak Laravel. Chociaż chciałbym wypróbować Laravela, prowadzę małą firmę i nie mam czasu ani pieniędzy, aby przestać i spędzić cały rok, budując wszystko od podstaw. Muszę żyć i płacić rachunki. Tak więc dużo czytałem na ten temat i zdecydowałem, że zrobienie refaktoryzacji jest najlepszym sposobem na zrobienie tego. Poza tym nie jestem pewien, czy framework ułatwi sprawę. Cele biznesowe to: * Ułatwienie kodu nowo zatrudnionym programistom * Oddzielenie „widoku”, aby: * wypuszczać różne wersje tego produktu (przy użyciu tego samego kodu), ale pod różnymi markami i stronami internetowymi przy minimalnych kosztach (tylko zmieniający się widok) * wypuszczaj różne wersje, aby pasowały do telefonu komórkowego/tabletu. * Twórz różne typy tego produktu, sprzedając pakiety tak, jakby były wtyczkami. * Opracuj niestandardowe pakiety dla niektórych klientów (takie jak wtyczki/dodatki, które mogą kupić, aby umieścić je w głównej aplikacji). Cele kodu: * Przedstaw najlepsze praktyki, standardy dla wszystkich * Spróbuj zbudować własną strukturę MVC * Popraw walidację danych/formularzy (obecnie są one mieszane zarówno w ajax, jak i klasach) * Stwórz procedury automatycznego testowania w celu zapewnienia jakości. * * * Mój obecny projekt struktury: * class\ * extra\ * hd\ * logs\ * public_html\ * public_html\includes\ * public_html\css|js|images\ * * * ## class\ Istnieją trzy typy klas . Wszystkie są „automatycznie ładowane” z czymś podobnym do PSR-0, ale nie używam przestrzeni nazw. **1\. class.Something.php** Łączy się z bazą danych przy użyciu określonych metod. Czyli: Klient->lista(); Używa „class.Db.php”, co jest abstrakcją mysql w każdej metodzie. **2\. class.SomethingProc.php** Rób rzeczy, które „łączą” rzeczy, które pochodzą z „class.Something.php”. Podobnie jak JEŻELI/ELSE, operacje matematyczne. **3\. class.SomethingHTML.php** Klasy z przyrostkiem „HTML” implementują tylko metody statyczne i tylko kod HTML. **Przykład z życia:** Wszyscy programiści muszą używać $cCoś ($c do klasy) i $arrCoś (do tablicy). Klient.php (widok) <?php $cCosumter = nowy Klient(); $arrCostumer = $cCostumer->list(); echo CostumerHTML::table($arrCostumer); ?> ## Extra\ Przechowuj projekty/klasy innych firm, takie jak MPDF, PHPMailer itp. ## Hd\ Przechowuj pliki użytkownika poza witryną wwwroot reż. ## Logs\ Przechowuj phplogs i logi samego systemu (Mamy statyczną metodę Log::error(), którą umieszczamy w każdej metodzie każdej klasy) ## Public_html\ Przechowuje pliki, których używają ludzie. ## Public_html\includes\ Przechowuj główny plik „config.php” i wszystkie pliki, które robią „ajax things” ajax.Costumer.php, na przykład. ## Potrzebna jest pomoc ;) Tak więc, jak widać, mamy pewne standardy, a także dla rzeczy bazodanowych. Ale chcę napisać podręcznik naszych zasad. Coś, co mogę dać każdemu nowemu programiście w mojej firmie, a on może kontynuować. Nie jest to całkowity bałagan, ale lepiej byłoby zobaczyć nowe praktyki. Co mogę zrobić, aby oddzielić to jako MVC, aby mieć wiele widoków. Czy możesz dać mi kilka wskazówek dotyczących moich celów? Miej na uwadze różne produkty/rzeczy niestandardowe dla konkretnych klientów bez naruszania głównej aplikacji. Przydałby się URL do samouczków, książek itp.


title: Czy programiści piszą SQL?

text: Czy programiści piszą SQL, czy programiści baz danych dostarczają SQL, a programiści go używają? Jestem nowicjuszem w tworzeniu oprogramowania. Próbuję tylko zrozumieć proces tworzenia oprogramowania, ponieważ tego lata muszę odbyć staż. Z góry przepraszam, jeśli to jest podstawowe pytanie.


title: Struktura danych do szybkiego uruchamiania Z filtrowaniem słownika

text: Mam listę angielskich słów. Próbuję wymyślić strukturę danych, która pozwala mi na szybkie filtrowanie StartsWith, takie jak: var words = dictionary.StartsWith("foo"); Myślałem o stworzeniu takiej struktury danych: ![Struktura danych](http://i.stack.imgur.com/ZhA1A.png) Ale najpierw chciałem zapytać: a) Czy powyższa struktura danych ma już Nazwa? b) Czy to najszybszy sposób na wdrożenie tego, czego szukam? Edycja: Struktura danych zostanie zbudowana na początku i nie zmieni się. Będę musiał zrobić tylko odpowiednik StartsWith i Zawiera.


title: Czy powinienem uczyć się w c++ lub c# (dla stopnia informatyki)?

text: Mam zamiar rozpocząć studia licencjackie (w Australii, semestr zaczyna się w marcu) i mam możliwość nauczenia się c# lub C++. Przede wszystkim znam już C# i uwielbiam C#. Jest po prostu tak łatwy w użyciu. Brak martwienia się o zarządzanie pamięcią lub zbieranie śmieci powoduje mrowienie w moim mózgu. Zrobiłem wiele aplikacji / gier w C# i uważam, że składnia jest łatwa do naśladowania, uwielbiam intellisense (którego myślę, że C++ nie ma) i ogólnie wydaje się, że jest to fajny język. Próbowałem owinąć głowę wokół C++. Pierwszą rzeczą, którą mogę powiedzieć... TO TRUDNE. Przez połowę czasu myślę sobie: „Czy muszę dołączyć symbol ^ po String?” itp. Składnia wydaje się trudna do zrozumienia i naprawdę mnie to denerwuje. To jest po prostu ze mną próbującym uczyć się bez nauczyciela. Moim celem po ukończeniu studiów jest dołączenie do firmy zajmującej się grami i asystowanie przy tworzeniu gier, więc to musi być głównym czynnikiem w podejmowaniu decyzji. Czy możecie mi udzielić porady? Dziękuję.


title: Generator ruchu SOAP

text: Próbuję zbudować generator komunikatów SOAP, który będzie generował komunikaty SOAP różnego rodzaju, które określiłem. Każda z tych wiadomości ma również odpowiedź, która wróci. Zadaniem tego generatora jest generowanie komunikatów SOAP i mierzenie wydajności na niektórych urządzeniach, przez które są przesyłane komunikaty. Dlatego muszę być w stanie generować wiadomości w szybkim tempie, a podczas ich wysyłania muszę również potwierdzić, ile wiadomości zostało usuniętych, jeśli w ogóle. Moim podstawowym planem w tym projekcie jest wysyłanie i odbieranie komunikatów SOAP (i odpowiedzi) w różnych wątkach, aby zapewnić maksymalną wydajność. Próbowałem przeczytać na temat SOAP, czytając artykuły Wikipedii i W3Schools tutaj: http://www.w3schools.com/soap/default.asp http://en.wikipedia.org/wiki/SOAP http:// www.w3schools.com/wsdl/wsdl_intro.asp http://en.wikipedia.org/wiki/Web_Services_Description_Language Nadal nie mam jednak jasnego obrazu działania SOAP. **Czy można wysyłać i odbierać odpowiedzi w różnych wątkach? Jak można to zrobić?** Jeśli nie jest to możliwe, przypuszczam, że wiadomość/odpowiedź SOAP musiałaby przejść przez to samo „gniazdo”. **Czy możliwe jest wysyłanie wielu wiadomości bez oczekiwania na odpowiedź przez to samo „gniazdo”? Jak można to zrobić? (po prostu kontynuuj pętlę i wysyłaj?)** W implementacji zostaną użyte Java i Apache CXF. Byłbym bardzo wdzięczny za wszelkie przemyślenia, wskazówki lub ogólne pomysły na ten temat. EDYCJA: Istnieje wiele zaleceń dotyczących korzystania z innych narzędzi, ale jakkolwiek głupio by to nie zabrzmiło, naprawdę chciałbym ponownie wymyślić koło i napisać własne małe środowisko testowania wydajności. To, co naprawdę chciałbym wiedzieć, dotyczy **przepływu wiadomości** w SOAP. Trochę wyjaśniłem pytania.


title: Dlaczego monada nie przyjmuje `(M a -> M b)`?

text: Wybaczcie, wciąż zaglądam na zewnątrz Haskella. Dlaczego powiązanie monady ma taką sygnaturę: > M a -> (a -> M b) -> M b i nie > M a -> (M a -> M b) -> M b tj. funkcja, która przyjmuje `M a` zamiast tylko `a` `a` jest dostępna dla funkcji w obu przypadkach, ale kontekst, który zapewnia `M` nie jest dostępne dla funkcji w 1. Tylko sama podniesiona wartość. (Jeśli to głupie pytanie, po prostu zagłosuj na mnie za dużo, a usunę je... jak mówię, wciąż bardzo na zewnątrz, patrząc do środka)