title: Jakie źródła przykładowej pracy należy wykorzystać podczas rozmowy kwalifikacyjnej?

text: Jeden z moich przyjaciół został zwolniony. Kiedy z nim rozmawiałem, powiedział, że nie pozwolili mu wziąć kopii wszystkiego, nad czym pracował. Kiedy zapytał w rozmowie kwalifikacyjnej, jak pokazać, nad czym pracował, innemu pracodawcy, powiedziano mu, że będzie miał do wyjaśnienia. Czy powinniśmy, jako programiści, mieć możliwość pobierania próbek naszej poprzedniej pracy byłych pracodawców? Jakimi źródłami kodu powinniśmy się pochwalić w rozmowie kwalifikacyjnej? Kiedy prawie każdy pracodawca prosi o przykładową pracę, jak mamy uzasadnić, co można wysłać? Czy naszym obowiązkiem jest utrzymywanie projektów po pracy przez całe życie, aby mieć kod, który możemy legalnie pokazać naszemu następnemu pracodawcy?


title: Korzystanie z prefiksowych pętli inkrementowanych w C#

text: Kiedy zaczynałem programować na studiach, przyjaciel zachęcił mnie do używania operatora inkrementacji prefiksu `++i` zamiast postfiksu `i++`, powołując się na niewielką szansę na lepszą wydajność bez realnej szansy na wady. Zdaję sobie sprawę, że jest to prawdą w C++ i stało się to powszechnym nawykiem, który nadal praktykuję. Mam wrażenie, że nie robi to żadnej różnicy, gdy jest używane w pętli w C#, niezależnie od typu danych. Najwyraźniej operatora ++ nie można przesłonić. Niemniej jednak bardziej podoba mi się wygląd i nie widzę w nim bezpośrednich wad. Jednak przed chwilą zaskoczył współpracownika, który przyjął (dość logiczne) założenie, że w rezultacie moja pętla zakończy się wcześnie. Jest programistą samoukiem i najwyraźniej nigdy nie spotkał się z konwencją C++. To sprawiło, że zadałem sobie pytanie, czy równoważne zachowanie operatorów inkrementacji i dekrementacji przed i po poprawce w pętlach jest wystarczająco dobrze znane. **Czy mogę nadal używać `++i` w konstrukcjach zapętlonych ze względu na preferencje stylów, nawet jeśli nie przynosi to rzeczywistej korzyści pod względem wydajności? A może spowoduje to zamieszanie wśród innych programistów?** * * * * Uwaga: Przy założeniu, że konwencja `++i` jest stosowana konsekwentnie w całym kodzie.


title: Pobieranie adresów URL z wyników wyszukiwania

text: Po miesiącu badań w zasadzie zrezygnowałem z programowego pobierania wszystkich adresów URL z wyników wyszukiwania, spojrzałem na interfejs API wyszukiwarki Google, aby znaleźć sposób na uzyskanie milionów wyników wyszukiwania „URL” tak, aby były specyficzne dla pliku tekstowego lub czegoś względnego, ale bez powodzenia , ale jestem w 100%, musi być na to jakiś sposób. Prawdziwe pytanie: Czy mimo to mogę programowo lub ręcznie uzyskać ponad 1000 wyników wyszukiwania (adresy URL za pomocą zapytania wyszukiwania, np. „Apple” zwracają milion wyników w google i chcę, aby jak najwięcej ich adresów URL powodowało w pliku tekstowym) Uwaga: Don Nie dbam o żadną konkretną wyszukiwarkę, język programowania, technikę lub oprogramowanie lub po prostu wskaż mi właściwy kierunek, ale tak, wypróbowałem to z Google API, nie mogę uzyskać więcej niż 100 wyników.


title: Roadblock-zmieszany ze strukturą programu

text: Jestem nowy w programowaniu i pracuję w C. Wiem, że jest to programowanie strukturalne, ale jeśli używam bloków, powiedzmy dla zmiennych lokalnych: { int i; for(i=0; i<25; i++){ printf("testowanie...\n"); } } Czy to nie sprawia, że jest to trochę zorientowane obiektowo? Czy to nadal jest uporządkowane?


title: Kto powinien szkolić nowych programistów? Młodsi czy starsi programiści?

text: W moim zespole często wymagamy od starszych programistów, aby szkolili/mentorowali zupełnie nowych młodszych programistów. Jednak ci sami starsi programiści są tymi, którzy wykonują większość prawdziwej, ważnej pracy. Próbowałem przekonywać mojego menedżera, że ma sens, aby młodzi programiści, którzy wykazują duże umiejętności, wzięli pod swoje skrzydła nowych programistów. Po pierwsze, zwolni starszych programistów do pracy nad ważniejszymi inicjatywami (nie, żeby mentoring nie był ważny). Następnie młodszych programistów będzie trochę dumny ze swojej pracy, że byliby traktowani z taką odpowiedzialnością i mogą nauczyć się czegoś w nauczaniu. Wreszcie, zaoszczędzi to firmie pieniądze, ponieważ starsi programiści kosztują znacznie więcej niż juniorzy. Mojego szefa nie udało się przekonać, bo najwyraźniej tak pracował w tym zespole od początku czasu. Zakładając, że zapadła decyzja, że jakiś rodzaj szkolenia/mentoringu jest obowiązkowy, czy ktoś może mi podać lepsze argumenty lub powiedzieć, dlaczego się mylę? Czym zajmuje się Twój zespół? **Wszyscy możemy się zgodzić, że staż pracy niekoniecznie oznacza kompetencje, więc przez „starszych programistów” po prostu załóżmy, że mam na myśli „najlepszych programistów”.


title: Czy mogę ponownie licencjonować kod Academic Free License zgodnie z 2-klauzulami BSD/ITC?

text: Chcę rozwidlić kawałek kodu na licencji Academic Free License. W przypadku projektu preferowane byłoby ponowne udzielenie licencji na podstawie licencji ISC lub 2-klauzulowej licencji BSD, które są równoważne. Rozumiem, że AFL przyznaje mi takie rzeczy, jak ograniczenie odpowiedzialności, ale spójność licencjonowania jest o wiele ważniejsza dla projektu, zwłaszcza że mówimy o zaledwie 800 linijkach kodu, z których jedną czwartą w jakiś sposób zmodyfikowałem. I bardzo ważne jest dla mnie, aby zwrócić te zmiany społeczności, biorąc pod uwagę fakt, że jest to oprogramowanie istotne dla bezpieczeństwa – potrzebuję publicznej kontroli, którą uzyskam tworząc publiczny widelec. W skrócie: Na górze pliku chcę powiedzieć to lub coś podobnego: # Na licencji Academic Free License, wersja 3 # Copyright (C) 2009 Oryginalny autor # Na licencji ISC License # Copyright (C) 2012 Stefano Palazzo # Copyright (C) 2012 Firma Czy mogę to zrobić? Moje dotychczasowe badania wskazują, że nie jest jasne, czy AFL jest zgodna z GPL, i tak naprawdę nie rozumiem żadnych rzeczy dotyczących ponownego udzielania licencji na inne licencje liberalne. Jako stop gap, byłbym w porządku z ponownym licencjonowaniem na GPL, jednak: nie mogę znaleźć zgody (choć mogę znaleźć spór) co do tego, czy jest to w ogóle dozwolone, i nie chcę ryzykować, oczywiście. * * * * Wikipedia: Licencja ISC * Wikipedia: Darmowa licencja akademicka


title: GPL - co to jest dystrybucja?

text: Interesujący punkt pojawił się w innym wątku dotyczącym _domniemanego_ przywłaszczenia projektu GPL. W tym przypadku oprogramowanie korporacyjne było używane przez kilka dużych firm, które zasadniczo wzięły kod, zmieniły nazwę, usunęły powiadomienia GPL i wykorzystały wynik. Chodziło o to, że jeśli firma to zrobiła **i** używała oprogramowania tylko wewnętrznie, to nie ma żadnej dystrybucji i jest to całkowicie legalne na licencji GPL. Dozwolone byłyby również modyfikacje dokonywane przez własnych pracowników do użytku wewnętrznego. _Więc w którym momencie staje się to dystrybucją?_ Przypuszczalnie, gdyby wezwali zewnętrznych wykonawców w ramach „pracy do wynajęcia”, ich modyfikacje również byłyby wewnętrzne, a więc nie byłyby dystrybucją. Gdyby wynajęli zewnętrzne oprogramowanie do wykonywania modyfikacji, a te zmiany byłyby wykorzystywane tylko wewnętrznie przez firmę - czy te zmiany byłyby rozpowszechniane? Czy GPL dotyczy klienta czy zewnętrznych programistów? Jeśli firma przekaże wynik innemu działowi, innej jednostce biznesowej, innej firmie? Co się stanie, jeśli druga firma jest spółką całkowicie zależną? ps. tak, wiem, że _odpowiedź_ to zapytać prawnika. Ale cała dyskusja, jaką widziałem na temat _dystrybucji_ GPL2/GPL3, dotyczyła usług sieciowych, a nie użytku wewnętrznego.


title: Standardy kodowania w Pythonie i. wydajność

text: Pracuję dla dużej organizacji humanitarnej nad oprogramowaniem do tworzenia projektów, które może pomóc ratować życie w nagłych wypadkach, przyspieszając dystrybucję żywności. Wiele organizacji pozarządowych rozpaczliwie potrzebuje naszego oprogramowania, a my jesteśmy opóźnieni o kilka tygodni. Jedną z rzeczy, która martwi mnie w tym projekcie, jest to, co uważam za nadmierne skupienie się na standardach kodowania. Piszemy w python/django i używamy wersji PEP0008, z różnymi modyfikacjami m.in. długość linii może sięgać 160 znaków, a wszystkie linie powinny być tak długie, jeśli to możliwe, brak pustych linii między importami, zasady zawijania linii, które dotyczą tylko niektórych rodzajów klas, wiele szablonów, których musimy użyć, nawet jeśli nie są najlepszy sposób na rozwiązanie problemu itp. itd. Jeden główny programista spędził tydzień na przepisaniu większej części systemu, aby spełnić nowe wtedy standardy kodowania, wyrzucając kilka zestawów testów w procesie, ponieważ przepisanie oznaczało, że były „nieważne” „. Spędziliśmy dwa tygodnie na przepisaniu wszystkich utraconych funkcji i naprawieniu błędów. Jest głównym deweloperem i jego słowo ma znaczenie, więc przekonał kierownika projektu, że te standardy są niezbędne. Młodsi programiści robią, co im każą. Wyczuwam, że kierownik projektu ma w tym wszystkim silne poczucie dysonansu poznawczego, ale mimo to stanowczo się z tym zgadza, nie wiedząc, co jeszcze zrobić. Dzisiaj miałem poważne kłopoty, ponieważ zapomniałem wstawić kilka spacji po przecinkach w argumencie słowa kluczowego. Zostałem dosłownie wykrzyczany przez dwóch innych deweloperów i kierownika projektu podczas rozmowy przez Skype. Osobiście uważam, że standardy kodowania są ważne, ale myślę też, że tracimy dużo czasu na ich obsesję, a kiedy to zwerbalizowałem, wywołało to wściekłość. Jestem postrzegany jako wichrzyciel w zespole, który szuka kozłów ofiarnych za swoje porażki. Od czasu wprowadzenia standardów kodowania produktywność zespołu wyraźnie spadła, ale to tylko wzmacnia obsesję, że główny programista po prostu obwinia nasze nieprzestrzeganie standardów za brak postępu. Uważa, że nie możemy czytać sobie nawzajem kodeksu, jeśli nie trzymamy się konwencji. To zaczyna być lepkie. Teraz próbuję zmodyfikować różne skrypty, autopep8, pep8ify i PythonTidy, aby spróbować dopasować się do konwencji. Uruchamiamy również pep8 w oparciu o kod źródłowy, ale jest tak wiele niejawnych poprawek do naszego standardu, że ciężko jest je wszystkie wyśledzić. Główny deweloper wskazuje błędy, których nie wychwytuje skrypt pep8, i krzyczy na nas na następnym spotkaniu stand-upowym. Co tydzień pojawiają się nowe dodatki do standardów kodowania, które zmuszają nas do przepisywania istniejącego, działającego, przetestowanego kodu. Dzięki Bogu wciąż mamy testy (cofnąłem kilka commitów i naprawiłem kilka tych, które usunął). Cały czas rośnie presja na dotrzymanie terminu. Uważam, że fundamentalną kwestią jest to, że główny programista i inny główny programista nie ufają innym programistom w wykonywaniu ich pracy. Ale jak sobie z tym poradzić? Nie możemy wykonywać swojej pracy, ponieważ jesteśmy zbyt zajęci przepisywaniem wszystkiego. Nigdy nie spotkałem się z taką dynamiką w zespole inżynierów oprogramowania. Czy mylę się, kwestionując ich przestrzeganie standardów kodowania? Czy ktoś inny doświadczył podobnej sytuacji i jak sobie z nią poradził? (Nie szukam dyskusji, tylko rzeczywistych rozwiązań znalezionych przez ludzi)


title: Jak wyeksportować do programu Excel na stronie aspx?

text: Próbuję pobrać dane, o które proszę, z bazy danych dostępowych i umieścić je w pliku Excela na komputerze klienckim. Zwykle używam ajax, aby poprosić o podsumowanie potrzebnych danych. Jest sformatowany w tabelę html. Potrzebuję, aby ta tabela była w formacie Excela, aby użytkownik mógł go pobrać. To, co już próbowałem, to użyć kodu vb.net do otwarcia programu Excel i po cichu zapisania danych do pliku, jednak zdałem sobie sprawę, że to strona serwera otwiera program Excel, a nie strona klienta, w moim lokalnym testowaniu kodu, excel otworzy się na moim komputerze i utworzy plik. Kiedy uruchamiam to w sieci, zdałem sobie sprawę, że excel nie jest na serwerze, nie jestem pewien, czy powinienem go po prostu zainstalować, czy spróbować przesłać plik strumieniowo?


title: Laptopy lub notebooki na spotkaniu?

text: Czy zabranie laptopa na spotkanie to dobry pomysł? Oczywiście lider projektu musi go mieć – ale programiści – zwłaszcza ci, którzy potrzebują tylko prostych instrukcji, co dalej robić w projekcie – czy muszą zabierać laptopy? Wydaje mi się, że zapisywanie notatek w oprogramowaniu zajmuje więcej czasu – i dużo łatwiej jest po prostu zapisać „rzeczy do zrobienia” w prostym notatniku. W ten sposób możesz nadążać za dyskusją i nie tracić z oczu tego, co ktoś mówi, spędzając zbyt dużo czasu na wpisywaniu tekstu w maszynie.


title: czy generator losowy Microsoft LC jest opatentowany?

text: Potrzebuję _bardzo_ prostego generatora pseudolosowego (bez żadnych szczególnych wymagań jakościowych) i znalazłem wariant algorytmu LCG firmy Microsoft używany do funkcji biblioteki wykonawczej C rand(), który pasuje do moich potrzeb (gcc wydaje się zbyt skomplikowany). Znalazłem algorytm tutaj: http://rosettacode.org/wiki/Linear_congruential_generator#C Jednak martwię się, że algorytm (w tym jego "magiczne liczby" tj. współczynniki) może być opatentowany lub ograniczony do użycia w inny sposób. Czy wolno używać tego algorytmu bez żadnych ograniczeń licencyjnych lub patentowych, czy nie? Nie mogę używać biblioteki rand(), ponieważ chcę, aby moje wyniki były dokładnie odtwarzalne na różnych platformach


title: Klejnot Rails-API, czy istnieje coś takiego jak aplikacja tylko z API?

text: Zbudowałem kilka API przy użyciu kompletnego stosu szyn. W każdym projekcie było wiele zastosowań podstawowych cech szyn. Każdy z API ma ekrany zarządzania do monitorowania użycia, zarządzania kluczami uwierzytelniania itp. Czy istnieje coś takiego jak API bez interfejsu zarządzania?


title: Po co używać typedefs dla struktur?

text: w C (ANSI, C99 itd.) struktury żyją we własnej przestrzeni nazw. Struktura dla połączonej listy może wyglądać mniej więcej tak: struct my_buffer_type { struct my_buffer_type * next; struct mój_typ_bufora * prev; nieważne * dane; }; Wydaje się jednak całkiem naturalne, że większość programistów C automatycznie typdef tych struktur, takich jak poniższe typedef struct tag_buffer_type { struct my_buffer_type * next; struct mój_typ_bufora * prev; nieważne * dane; } mój_typ_bufora; A następnie odwołuj się do struktury jak do normalnego typu, tj. `get_next_element(mój_typ_bufora * ptr)`. Teraz moje pytanie brzmi: czy jest ku temu konkretny powód? Wikipedia mówi http://en.wikipedia.org/wiki/Typedef#Usage_concerns > Niektórzy ludzie są przeciwni szerokiemu używaniu typedef. Większość argumentów > koncentruje się na idei, że typedefs po prostu ukrywa rzeczywisty typ danych zmiennej >. Na przykład Greg Kroah-Hartman, haker jądra Linuksa i dokumentator, odradza ich używanie do czegokolwiek poza deklaracjami prototypu funkcji. Twierdzi, że ta praktyka nie tylko niepotrzebnie zaciemnia > kod, ale może również powodować, że programiści przypadkowo nadużywają dużych struktur > myśląc o nich jako o prostych typach.[4] >> Inni twierdzą, że użycie typedef może ułatwić utrzymanie kodu. K&R > stwierdza, że istnieją dwa powody używania typedef. Po pierwsze, zapewnia > środki do uczynienia programu bardziej przenośnym. Zamiast zmieniać typ > wszędzie, gdzie pojawia się w plikach źródłowych programu, wystarczy zmienić tylko jedną instrukcję > typedef. Po drugie, typedef może uczynić złożoną deklarację > łatwiejszą do zrozumienia. Osobiście zastanawiam się, czy nie ma wystarczających korzyści z posiadania oddzielnej przestrzeni nazw `struct`, aby czasami nie używać struktur typedef'd, a ponieważ istnieje kilka kultur programowania C (programowanie Windows C ma inne tradycje niż programowanie Linux C), jeśli istnieją inne tradycje, których nie znam. Następnie interesują mnie rozważania historyczne (poprzednicy, pierwsze wersje C).


title: Dlaczego JavaScript używa JSON.stringify zamiast JSON.serialize?

text: Zastanawiam się tylko nad _"stringify"_ vs _"serialize"_. Dla mnie są tym samym (chociaż mogę się mylić), ale w moim przeszłym doświadczeniu (głównie z asp.net) używam `Serialize()` i nigdy nie używam `Stringify()`. Wiem, że mogę utworzyć prosty alias w JavaScript, // albo JSON.serialize = function(input) { return JSON.stringify(input); }; // lub JSON.serialize = JSON.stringify; http://jsfiddle.net/HKKUb/ ale zastanawiam się tylko nad różnicą między tymi dwoma i dlaczego wybrano stringify. * * * do celów porównawczych, oto jak serializować XML do String w C# publicznym ciągu statycznym SerializeObject<T>(this T toSerialize) { XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType()); StringWriter textWriter = new StringWriter(); xmlSerializer.Serialize(textWriter, toSerialize); return textWriter.ToString(); }


title: Nazywanie zmiennych za pomocą jednostek stałoprzecinkowych

text: Jak nazwać zmienną, która ma jednostki ze stałym punktem? int herpLimitLo_psig2 = 6000; // 60,00 psig int derpLimitLoPsig z dwiema cyframi; int herpLimitHiPsigfixedtwo; int herpLimitHi_psig_timesOneHundred; Najwyraźniej jestem do niczego w nazywaniu rzeczy.


title: Użyj ogólnych nazw określonych funkcji dla podobnych obiektów

text: Czy istnieje szkoła myślenia skupiająca się na używaniu ogólnych nazw funkcji, w przeciwieństwie do nazywania funkcji w oparciu o to, co robią? **Przykład** Załóżmy, że mamy obiekt `Rachunek/Cennik`, który zawiera pozycje Rachunek: * Opłata za wysyłkę 5,00 USD * Opłata za skrzynkę 6,00 USD * Obciążenie podatkowe 8,00 USD Ogólne nazwy funkcji to: //kod funkcji wie, jak dodać element zamówienia bill->addLineItem("Opłata za wysyłkę", 5); bill->addLineItem("Opłata za skrzynię", 6); bill->addLineItem("Opłata podatkowa", 8); Konkretne nazwy funkcji to: //kod funkcji odzwierciedla znajomość tej konkretnej pozycji bill->addShippingCharge(5); rachunek->addCrateCharge(6); rachunek->dodajTaxCharge(8); Można to rozszerzyć na dowolny zestaw podobnych działań, w których robi się coś podobnego. Bardziej ogólna funkcja pobiera rzeczywisty parametr i może być uważana za bardziej elastyczną — każdy nowy element zamówienia można dodać za pomocą tej samej funkcji. Bardziej szczegółowej funkcji można użyć tylko dla tego konkretnego elementu zamówienia. Dodanie nowego typu elementu zamówienia wymaga nowej funkcji. Coś mi mówi, że konkretna droga jest bardziej preferowana, ale nie potrafię zwerbalizować dlaczego i może się mylę. Ale być może sprawia to, że kod jest bardziej przejrzysty, co do tego, do czego ma służyć ta pozycja. Więc jeśli konkretne nazewnictwo jest lepsze i piszę kod dla restauracji z 600 pozycjami w menu (takie restauracje istnieją), nie jestem pewien, czy chcę mieć 600 unikalnych funkcji dla każdej pozycji menu. Ale w takim przypadku może być uzasadnione inne podejście. Więc o co tutaj pytam, to czy mam rozsądną klasę pozycji (tj. 10-20) dla mojej konkretnej możliwej listy pozycji, czy poleciłbyś jakieś konkretne podejście z tych opisanych (konkretne vs ogólne), czy też wszystko zależy od specyfiki mojego projektu?


title: Czy istnieje ogólny wzorzec, który można wykorzystać do opisania migracji danych?

text: W naszej firmie musimy zwolnić oprogramowanie i wprowadzić nowe. Otrzymałem zadanie śledzenia i dbania o całą migrację danych. Korzystamy z 3 różnych źródeł danych (każde zawiera inny rodzaj informacji), których rekordy muszą zostać połączone w unikalną docelową bazę danych. Ponieważ nowa baza danych ma inny schemat, wymagane są również pewne kroki mapowania, aby połączyć dane z dwóch środowisk. Technicznie wszystko jest jasne, ale muszę opisać w "weryfikacji koncepcji" proces migracji. **Czy istnieje jakiś ogólny wzorzec, który mógłby posłużyć do opisu migracji danych?** Opiszę zaangażowane systemy, które dane zostaną przeniesione, użyte tabele mapowania i planowane testy w celu zapewnienia jakości danych. Czy jednak ktoś może zaproponować inne podejście? Może w ten sposób zorientuję się, że czegoś mi brakuje w mojej dokumentacji.


title: Projekt aplikacji JavaScript MVC (canvas)

text: Mam trudności w uchwyceniu sposobu struktury/architektury aplikacji kanwy przy użyciu podejścia podobnego do MVC w JavaScript. Interfejs użytkownika będzie dość płynny i animowany, gry dość uproszczone, ale z dużym naciskiem na animacje i animacje. Rozumiem, jak działa MVC w zasadzie, ale nie w praktyce. Wygooglowałem z tego buggery, przeczytałem bardzo dużo i teraz jestem tak samo zdezorientowany, jak wtedy, gdy zaczynałem. Niektóre szczegóły dotyczące obszaru aplikacji: * Struktura gry wieloekranowej - wiele gier będzie działać w tej strukturze, wspólne „ekrany” interfejsu użytkownika obejmują: ustawienia, informacje, wybór poziomu trudności, menu główne itp. * wiele metod wprowadzania danych * wspólne elementy interfejsu użytkownika, takie jak menu górne pasek na niektórych ekranach * możliwość korzystania z różnych metod renderowania (canvas/DOM/webGL) W tej chwili posiadam AppModel, AppController i AppView. Stąd planowałem dodać każdy z "ekranów" i dołączyć go do AppView. Ale co z takimi rzeczami, jak górny pasek menu, czy powinny być kolejną triadą MVC? Gdzie i jak mógłbym go przymocować bez ciasno sprzęgających się elementów? Czy akceptowaną praktyką jest posiadanie jednej triady MVC w innej? tj. czy mogę dodać każdy „ekran” do AppView? Czy „triada” jest w ogóle akceptowanym terminem MVC?! Mój umysł rozpływa się pod wpływem opcji... Czuję, że brakuje mi tutaj czegoś fundamentalnego. Mam już uruchomione rozwiązanie bez użycia podejścia MVC, ale skończyło się na ściśle powiązanej zupy - logika i widoki i obecnie połączone. Pomysł polegał na otwarciu go i umożliwieniu łatwiejszej zmiany widoków (np. zamiana widoku kanwy na widok oparty na DOM). Obecne używane biblioteki: require.js, createJS, podkreślenie, GSAP, ręczna implementacja MVC Wszelkie wskazówki, przykłady itp., szczególnie w odniesieniu do faktycznego projektu rzeczy i podziału "ekranów" na odpowiednie M, V lub C byłyby doceniane. ...lub bardziej odpowiednia metoda inna niż MVC _[Uwaga: jeśli widziałeś to pytanie wcześniej, to dlatego, że zadałem je w 2 innych nieprawidłowych społecznościach wymiany stosów... mój mózg przestał działać]_


title: Jenkins: Przekształcenia XML witryny .NET, ale bez pliku .sln ani pliku kompilacji

text: Konfigurujemy Jenkins dla CI i wdrożeń. Mamy witrynę .NET, która nie jest zarządzana przez Visual Studio. Jest to aplikacja Logi Analytics, więc rozwijamy się wyłącznie za pośrednictwem LogiStudio. W związku z tym nie ma plików kompilacji (.sln). Istnieją jednak pliki konfiguracyjne sieci Web i inne pliki XML, które muszą się zmienić w zależności od środowiska, w którym są wdrażane. Slow Cheetah wygląda na dobre rozwiązanie do przekształcania plików xml innych niż web.config, ale znowu problemem jest to, że nie zarządzamy to jako rozwiązanie Visual Studio, więc nie ma pliku .sln. W przeszłości używałbym NAnt do tego typu rzeczy, ale podoba mi się konwencja MS używana przez powolnego geparda do definiowania transformacji. Nie chciałbym umieszczać aplikacji w rozwiązaniu tylko po to, aby to zadziałało, i mam nadzieję, że ucieknę od NAnt, ponieważ jestem jedynym tutaj, który jest wygodny w używaniu i utrzymywaniu skryptów NAnt. Czy są jakieś świetne opcje, których mi brakuje?


title: Naśladowanie rozłączenia Bluetooth

text: Napisałem program do sterowania urządzeniem bluetooth. Próbuję testować przypadki rozłączania się bluetooth, czyli poza zasięgiem. Fizyczne wyniesienie urządzenia poza zasięg jest jedną z możliwości, ale jest to dość kłopotliwe i muszę wyjść poza moje biuro, aby to osiągnąć. Co mogę zrobić, aby wywołać rozłączenie? Czy istnieje na przykład zakłócacz, który mogę skonfigurować, powiedzmy na telefonie z Androidem, który spowoduje zerwanie połączenia? Lub ograniczyć moc transmisji Bluetooth? Jakieś inne możliwości?


title: Dlaczego specyfikacje wyjątków są złe?

text: W szkole jakieś 10 lat temu uczono cię używania specyfikatorów wyjątków. Ponieważ jestem jednym z programistów C z Torvaldish, którzy uparcie unikają C++, chyba że są do tego zmuszani, kończę w C++ tylko sporadycznie, a kiedy to robię, nadal używam specyfikatorów wyjątków, ponieważ tego mnie uczono. Jednak większość programistów C++ wydaje się marszczyć brwi na specyfikatory wyjątków. Przeczytałem debatę i argumenty różnych guru C++, takich jak te. O ile rozumiem, sprowadza się to do trzech rzeczy: 1. Specyfikatory wyjątków używają systemu typów, który jest niezgodny z resztą języka ("system typów cieni"). 2. Jeśli twoja funkcja ze specyfikatorem wyjątku zgłasza cokolwiek innego poza tym, co określiłeś, program zostanie zakończony w zły, nieoczekiwany sposób. 3. Specyfikatory wyjątków zostaną usunięte w nadchodzącym standardzie C++. Czy czegoś mi tu brakuje, czy to są wszystkie powody? Moje własne opinie: Odnośnie 1): I co z tego. C++ jest prawdopodobnie najbardziej niespójnym językiem programowania, jaki kiedykolwiek powstał, pod względem składni. Mamy makra, goto/etykiety, hordę (zgromadzenie?) zachowań niezdefiniowanych/nieokreślonych/zdefiniowanych przez implementację, słabo zdefiniowane typy liczb całkowitych, wszystkie niejawne reguły promocji typów, słowa kluczowe, takie jak przyjaciel, auto , zarejestruj się, wyraźne... I tak dalej. Ktoś prawdopodobnie mógłby napisać kilka grubych książek o całej dziwności w C/C++. Dlaczego więc ludzie reagują na tę szczególną niespójność, która jest drobną wadą w porównaniu z wieloma innymi znacznie groźniejszymi cechami języka? Odnośnie 2): Czy to nie moja odpowiedzialność? Jest tak wiele innych sposobów na napisanie krytycznego błędu w C++, dlaczego ten konkretny przypadek jest jeszcze gorszy? Zamiast pisać `throw(int)`, a następnie rzucać Crash_t, równie dobrze mogę twierdzić, że moja funkcja zwraca wskaźnik do int, a następnie dokonuje dzikiego, jawnego rzutowania typów i zwraca wskaźnik do Crash_t. Duchem C/C++ zawsze było pozostawienie większości odpowiedzialności programiście. A co z zaletami? Najbardziej oczywistym jest to, że jeśli twoja funkcja próbuje jawnie wyrzucić dowolny typ inny niż ten, który określiłeś, kompilator wyświetli błąd. Uważam, że standard jest w tym względzie jasny (?). Błędy pojawią się tylko wtedy, gdy twoja funkcja wywoła inne funkcje, które z kolei wyrzucą niewłaściwy typ. Pochodząc ze świata deterministycznych, osadzonych programów w języku C, z pewnością wolałbym dokładnie wiedzieć, co rzuci na mnie funkcja. Jeśli jest coś w języku, który to wspiera, dlaczego by tego nie użyć? Alternatywy wydają się być następujące: void func() throw(Egg_t); i void func(); // Ta funkcja wyrzuca Egg_t Myślę, że istnieje duża szansa, że wywołujący zignoruje/zapomni zaimplementować try-catch w drugim przypadku, mniej w pierwszym przypadku. Jak rozumiem, jeśli którykolwiek z tych dwóch formularzy zdecyduje się nagle rzucić inny rodzaj wyjątku, program ulegnie awarii. W pierwszym przypadku, ponieważ nie można zgłosić kolejnego wyjątku, w drugim, ponieważ nikt nie spodziewał się, że zgłosi ono SpanishInquisition_t i dlatego wyrażenie nie zostanie przechwycone w miejscu, w którym powinno być. W przypadku tego ostatniego, posiadanie jakiegoś ostatniego ratunku(...) na najwyższym poziomie programu nie wydaje się niczym lepszym niż awaria programu: "Hej, gdzieś w twoim programie coś wyrzuciło dziwny, nieobsługiwany wyjątek .". Nie możesz odzyskać programu, gdy jesteś tak daleko od miejsca, w którym został zgłoszony wyjątek, jedyne, co możesz zrobić, to wyjść z programu. Z punktu widzenia użytkownika nie obchodzi go, czy otrzyma zły komunikat z systemu operacyjnego z informacją „Program zakończony. Blablabla pod adresem 0x12345” lub zły komunikat z twojego programu o treści „Nieobsługiwany wyjątek: mojaklasa. func.coś". Błąd wciąż tam jest. * * * Wraz z nadchodzącym standardem C++ nie mam innego wyjścia, jak porzucić specyfikatory wyjątków. Ale wolałbym raczej usłyszeć jakiś solidny argument, dlaczego są złe, niż "Jego Świątobliwość to stwierdził i tak jest". Może jest więcej argumentów przeciwko nim niż te, które wymieniłem, a może jest ich więcej, niż sobie uświadamiam?


title: Deklaracja funkcji jako var zamiast funkcji

text: Coraz częściej widzę funkcje deklarowane, takie jak var foo = function() { // things }; Zamiast tego, czego się nauczyłem, jak function foo() { // rzeczy } Jaka jest różnica? Lepsza wydajność? Zakres? Czy powinienem używać tej metody?


title: Obsługa wewnętrznych problemów IT

text: W firmie, w której pracuję, programiści pełnią również funkcję wewnętrznego wsparcia technicznego. Oznacza to, że musimy zrobić trzy rodzaje rzeczy: * **Rozwój:** pisanie rzeczywistego kodu w celu wdrożenia nowych funkcji i nowych produktów * **Konserwacja:** obsługa błędów i drobnych zmian w istniejącym oprogramowaniu skierowanym do klientów * **Technologia wsparcie:** zajmujemy się sprawami wewnętrznymi innych pracowników m.in. zablokowanie AD, brak dysku sieciowego, brak internetu, instalacja nowego oprogramowania, potrzeba zmiany uprawnień itp. Aspekt pomocy technicznej w mojej pracy jest obecnie najbardziej niepokojący. Dzieje się tak dlatego, że: * ktoś z problemem prawdopodobnie natychmiast ci przerwie, odciągając cię od rozwoju * problemy przychodzą na zbyt wiele sposobów: e-mail, czat w Google, telefon, karteczki samoprzylepne na biurku itp. * ludzie często nie mogą lub nie określaj powagi lub zakresu problemu przed zwróceniem się o pomoc, tj. proste problemy, które mogą powodować niedogodności dla jednej osoby w ten sam sposób – i często z taką samą pilnością – jak poważne problemy dotyczące klientów, które mogą mieć wpływ na tysiące * *Moje pytanie brzmi: Jakie są sprawdzone metody radzenia sobie z wewnętrznymi problemami IT?** Czy powinniśmy używać oprogramowania przeznaczonego do tego celu? Jeśli tak, w jaki sposób należy go oddzielić od oprogramowania używanego do rozwiązywania problemów klientów lub oprogramowania do śledzenia błędów? W jaki sposób dział IT/rozwoju może zapewnić jego właściwe wykorzystanie? Czy jest też problemem to, że programiści w pierwszej kolejności radzą sobie z tymi wewnętrznymi problemami? Czy byłoby idealnie, gdyby osobna osoba lub dział zajmował się tego typu problemami?


title: Kontynuacja kontra S-Q-L

text: > **Possible Duplicate:** > Jaka jest historia nieoficjalnej wymowy języka SQL? Co jakiś czas słyszę to "In sequel server..." iz jakiegoś powodu za każdym razem się wzdrygam. Może dlatego, że SQL nie oznacza sequela, ale Structured Query Language. Waham się jednak wspomnieć o czymkolwiek, ponieważ jest to w końcu trochę czepiające się. Widzę podobieństwo między SQL a sequelem, ale nadal jest źle, prawda? Skąd bierze się ten sposób frazowania?


title: Funkcja PHP __autoload($class_name) jak załadować dwa katalogi ze ścieżkami klas

text: Używam następującej funkcji do automatycznego ładowania klas, działa dobrze, jeśli używam tylko jednego katalogu o nazwie „klasy”, ale gdy próbuję użyć biblioteki Smarty, również się nie udaje i wyświetla błąd Błąd krytyczny: Nie znaleziono klasy „Baza danych” w / home/... na przykład: require_once(DOC_ROOT."/libs/Smarty.class.php"); function __autoload($nazwa_klasy) { require_once( CLASS_LIB."/".$nazwa_klasy .'.class.php'); } $db = nowa Baza danych(); $session=nowa sesja(); $smarty = nowy Smarty(); ale jeśli to zrobię, pojawia się błąd niemożliwy do załadowania klasy smarty.. function __autoload($nazwa_klasy) { require_once( CLASS_LIB."/".$nazwa_klasy .'.class.php'); require_once(DOC_ROOT."/libs/Smarty.class.php"); } $db = nowa Baza danych(); $session=nowa sesja(); $smarty = nowy Smarty(); Ostrzeżenie: require_once(/home/.../classes/Smarty_Internal_TemplateCompilerBase.class.php) [function.require-once]: nie udało się otworzyć strumienia: Brak takiego pliku lub katalogu w /home/.../includes/init.php Masz jakiś pomysł, co robię źle tutaj? muszę być w stanie automatycznie załadować katalog klas, ale muszę się upewnić, że nie zgubię też ścieżki smarty ..


title: Jak zweryfikować informacje na serwerze bez korzystania z bazy danych lub sesji?

text: Każdy użytkownik ma wiele witryn, dla których może uzyskać dostęp do danych raportowania w aplikacji, nad którą pracuję. Aby zapobiec konieczności przechodzenia do bazy danych przy każdym żądaniu, potwierdzam, że mają dostęp do witryny tylko wtedy, gdy zmieniają witryny, a następnie przechowuję bieżący identyfikator witryny w sesji. **Próbuję wyeliminować stan sesji, aby moje asynchroniczne żądania ajax nie były synchronizowane, a także aby użytkownik mógł mieć otwartą inną witrynę na każdej karcie przeglądarki. Nie chcę też wracać do wywoływania bazy danych przy każdym żądaniu, aby sprawdzić, czy użytkownik ma dostęp do danej witryny wysyłając żądanie.** Widziałem implementacje, w których ludzie będą szyfrować id na kliencie, ale tak jest nie jestem pewien, co uniemożliwiłoby osobie trzeciej zajrzenie komuś przez ramię (być może widząc identyfikator w ciągu zapytania), a następnie użycie tego samego identyfikatora z własnym loginem do złożenia żądania. **Mam dwa pomysły:** 1) Zaszyfruj identyfikator za pomocą nazwy uwierzytelnionej użytkownika jako ziarno... Następnie zaszyfruj go ponownie za pomocą klucza prywatnego. Gdy nadejdzie żądanie, odszyfruję kluczem prywatnym, a następnie spróbuję odszyfrować przy użyciu bieżącej nazwy użytkownika i odzyskać identyfikator. A może połączyłbym nazwę użytkownika z identyfikatorem, takim jak nazwa_użytkownika@nazwa_użytkownika.com_[SITEID], a następnie zaszyfruj to za pomocą klucza prywatnego i podziel je, aby sprawdzić, czy bieżąca nazwa użytkownika pasuje do pierwszej części. Problem z tym polega jednak na tym, że tak naprawdę nigdy nie wygasa, więc mogą w przyszłości złożyć wniosek, nawet jeśli utracili dostęp, o ile mają identyfikator. 2) Podobny do pomysłu 1, ale jako trzeci klucz użyłbym identyfikatora sesji z szyfrowaniem. Problem polega jednak na tym, że jeśli sesja wygaśnie i pozostawi otwartą kartę, wszystkie żądania nie powiedzą się z karty, która pozostała otwarta, mimo że sesja jest aktywna. 3) Użyj pamięci podręcznej, aby nie wpływać na żądania asynchroniczne, i po prostu przechowuj klucze, takie jak nazwa_użytkownika@nazwa_użytkownika.com_[VALIDATED_SITE_ID], a następnie sprawdź, czy klucz istnieje, gdy nadejdzie żądanie, a jeśli nie, uruchom bazę danych, aby ustalić klucz walidacji. **Czy ktoś zajmował się tego typu scenariuszem, w którym musisz sprawdzić, czy użytkownik może wykonać określony typ żądania, ale robisz to bez sesji lub uderzania w bazę danych za każdym razem, gdy wysyłane jest żądanie?**


title: Co znajduje się w folderze „contrib”?

text: Często projekty oprogramowania typu open source mają folder o nazwie „contrib”. Na przykład Django ma jeden. Po co to jest?


title: Gdzie należy umieścić funkcje i zmienne, które są potrzebne tylko jednej funkcji w klasie?

text: Powiedzmy, że masz klasę samochodów. Właściwościami, które mają sens dla klasy Car, mogą być: var make; var model; var rok; var Włącz; // funkcja Ale funkcja `turnOn` jest bardzo skomplikowana i ostatecznie wymaga zmiennej statycznej i kilku funkcji podrzędnych: var isTurningOn; // zbyt specyficzna jak na zmienną klasy function turnOn() { // 30 wierszy, aby uruchomić silnik // 30 wierszy, aby uruchomić klimatyzator // 30 wierszy, aby uruchomić radio } Więc teraz mamy funkcję, która może być t naprawdę nadaje się do przekształcenia we własną klasę i zanieczyszcza klasę Car zmienną, której używa tylko funkcja `turnOn`. Dodatkowo funkcja zawiera sekcje kodu, które powinny zostać przekształcone w ich własne funkcje. Więc co robisz w takich sytuacjach?


title: Jaki jest właściwy sposób zaimplementowania interfejsu OnClickListener dla wielu przycisków?

text: Moja aktywność na Androidzie zawiera wiele przycisków, z których wszystkie wymagają OnClickListener. Widziałem wiele różnych sposobów na zrobienie tego, takich jak: * Implementacja interfejsu w klasie aktywności * Tworzenie oddzielnej klasy implementującej interfejs * Definiowanie anonimowej klasy wewnętrznej dla każdego przycisku. Widziałem wiele przykładów każdego podejścia. Jednak nie jest dla mnie jasne, dlaczego jedno podejście miałoby być stosowane zamiast innego. Czy różnice między tymi podejściami są stylistyczne, czy są powody, które sprawiają, że jedno podejście jest lepsze?


title: Jak działają mashupy z polityką tego samego pochodzenia?

text: Jeśli JavaScript może uzyskiwać dostęp tylko do skryptów z tej samej domeny, w jaki sposób strona internetowa może tworzyć mashupy, które muszą czytać i modyfikować treść z innej domeny?


title: Jak zaprojektować skuteczny system moderacji komentarzy?

text: Oto praca, którą chcę wykonać: Mój projekt to strona internetowa, na której będzie **dużo** komentarzy. Te komentarze będą moderowane: moderator połączy się, zobaczy komentarze i zaakceptuje je lub odrzuci. Potrzebuję tych rzeczy: * komentarze nie będą miały przypisanego "moderatora". Co oznacza, że gdy moderator się połączy, system „przypisuje” 20 pierwszych komentarzy temu moderatorowi, a następnie wysyła je za pośrednictwem żądania AJAX/JSON * oczywiście oznacza to, że te komentarze nie mogą być przypisywane innym moderatorom Jak mogę to zrobić projekt, żebym miał pewność, że „zdobycie 20 pierwszych komentarzy dla moderatora” może być operacją atomową? I jest jeszcze jedna rzecz do przemyślenia (nie wiem, czy może to mieć wpływ na mój problem, czy nie): jeśli jest podłączonych powiedzmy 10 moderatorów, jeden z nich ma 20 komentarzy do sprawdzenia, a ten facet odchodzi od swojego komputera cały dzień. Mogę zaimplementować coś w rodzaju „limitu czasu” dla tego moderatora, wtedy, gdy spróbuje zatwierdzić, wiadomość powie mu „przepraszam, ten komentarz był już moderowany przez innego moderatora”, a skrypt AJAX otrzyma „świeżych nowych 20 komentarzy Mój pierwszy pomysł był najprostszy: * moderator łączy się * skrypt jQuery AJAX prosi serwer o 20 komentarzy * serwer (1) natychmiast wysyła żądanie 20 pierwszych darmowych komentarzy do bazy danych * serwer (2) "zamraża" 20 darmowych komentarzy * serwer (3) tworzy odpowiedź JSON i wysyła ją Ale operacje (2) i (3) nie są atomowe, co się stanie, jeśli w międzyczasie inny operator poprosi o 20 pierwsze darmowe komentarze?Oboje otrzymają 20 pierwszych bezpłatnych komentarzy.To nie jest dobre rozwiązanie.Myślę, że jest to klasyczny problem atomowej operacji na db.Jakiś pomysł, jak to zaprojektować (lub gdzie szukać)?W rzeczy samej bardzo dziękuję !


title: Jak stopniowo ulepszać stary framework IBM Host C++

text: Wyobraź sobie framework C++ jako warstwę biznesową, ale z logiką controllingu. Np. prawa użytkownika, stan webflow itp. Z prostym kodem w C, aby uzyskać dostęp do DB2. Cały framework jest oparty na hoście. Szukamy sposobu na stopniowe zastępowanie istniejącego frameworka frameworkiem java. Główne wyzwania to: aplikacja jest już ogromna, jest kilka klientów aplikacji podłączonych do frameworka c++ jednocześnie (jest to jedna aplikacja webowa z wieloma instancjami), moja wiedza na temat tego, co jest możliwe dzisiaj z javą na hoście jest bardzo ograniczona ( ponieważ wszyscy, z którymi pracuję, trzymają się C++) Czy istnieją dobre pomysły na stopniowe przenoszenie starego frameworka bez łamania istniejącego kodu? Myślę, że jako wpis można by oczekiwać usługi sieciowej lub serwera RMI do transakcji. Ale to, jak stopniowo zastąpić logikę biznesową/kontrolerską, nadal jest dla mnie czarną skrzynką.


title: „Boję się” nauczyć nowego języka

text: Od około 8 lat rozwijam się w C#. Czuję, że mam duże doświadczenie i wiedzę na temat całej platformy .net. Dotarłem do punktu, w którym chcę rozpocząć naukę, cel-c. Oglądam filmy deweloperskie, czytam książki i szukam informacji online. Jak dotąd mam dobre pojęcie o zasadach rozwoju. ALE. Nie napisałem 1 linijki kodu. Z jakiegoś głupiego powodu mam pewien rodzaj mentalnej blokady dotyczącej pisania kodu. Ciągle myślę: Ale co, jeśli nie jestem tak dobry, jak wtedy, gdy robię kodowanie w C#. To pozostawia mnie w nieskończonej spirali, w której nie mogę kodować. Jeśli byłeś w takiej sytuacji, jaki był najlepszy sposób, aby się z niej wydostać.


title: Co oznacza termin „bug pierwszego dnia”?

text: Ostatnio natknąłem się na ten termin w łańcuchu pocztowym. Google mówi mi, że istnieje termin zero-day bug, a Microsoft i Adobe są faworytami :) Czy istnieje takie określenie jak **bug pierwszego dnia**? Co to może oznaczać?


Programuję w Windows Forms i MySQL. Jeśli zadeklaruję to w programie, mogę wykorzystać obiekty połączenia i polecenia na całej stronie .cs: MySqlConnection connection = null; Polecenie MySqlCommand = null; Czytnik MySqlDataReader; Ale jeśli napiszę poniższy kod, obiekty połączenia i polecenia są deklarowane dwukrotnie: private void cmbo_class_SelectedValueChanged(object sender, EventArgs e) { string clas = cmbo_class.SelectedItem.ToString(); spróbuj { MySqlConnection connection = new MySqlConnection(hp.myConnStr); Polecenie MySqlCommand = połączenie.CreateCommand(); Czytnik MySqlDataReader; command.CommandText = "wybierz id, kod z reg_class_master gdzie name ='" + clas + "' i Delete_Status=0"; połączenie.Otwórz(); Czytnik = polecenie.ExecuteReader(); while (Reader.Read()) { class_id = Convert.ToInt32(Reader[0].ToString()); kod_klasy = Czytnik[1].ToString(); } połączenie.Zamknij(); } catch(Wyjątek np.) { MessageBox.Show("Błąd w ","Informacje",MessageBoxButtons.OK,MessageBoxIcon.Information); } cmbo_division.Items.Clear(); spróbuj { MySqlConnection connection = new MySqlConnection(hp.myConnStr); Polecenie MySqlCommand = połączenie.CreateCommand(); Czytnik MySqlDataReader; command.CommandText = "wybierz nazwę z reg_division_master gdzie class_id = " + class_id + " i Delete_Status=0 porządku według display_index"; połączenie.Otwórz(); Czytnik = polecenie.ExecuteReader(); while (Reader.Read()) { cmbo_division.Items.Add(Reader[0].ToString()); } połączenie.Zamknij(); } catch { } Myślę, że deklaracja jednego obiektu jest najlepszym sposobem. Czy więcej deklaracji obiektów wpływa na program?


title: Czy posiadanie większej liczby klas koniecznie zwiększa wymagania dotyczące pamięci aplikacji?

text: Kiedy dodajemy pliki .edmx do biblioteki DLL, zwiększa się fizyczny rozmiar biblioteki DLL. Pliki DLL są ładowane do pamięci. Jednak infrastruktura .NET z funkcjami takimi jak kompilacja JIT i GAC komplikuje sprawy. Czy to prawda, że posiadanie większej biblioteki DLL automatycznie zwiększa wymagania dotyczące pamięci aplikacji? Innymi słowy, czy problemy z pamięcią to dobry powód, aby dzielić wygenerowany kod, taki jak struktura encji, na biblioteki N DLL?


title: Czy nadużywam inicjalizacji instancji?

text: Często piszę testy, gdy potrzebuję ustawić obiekt danych do testów integracyjnych obejmujących kilka stron z formularzami. Tutaj każdy formularz na stronie może być reprezentowany przez inną klasę obiektu danych. Zdarza się, że test kończy się wypełnieniem tych samych danych dla określonej strony, jednocześnie zmieniając je dla innych stron i weryfikując ogólny przepływ. Pomyślałem, że zamiast za każdym razem ustawiać obiekt danych z metody testowej, mogę skorzystać z bloku inicjalizacji instancji, aby ustawić dane do testów. W tym miejscu wymieniłem mniejszą wersję testów, które zwykle piszę - To moja klasa danych, która przechowuje dane dla wartości formularzy - pole tekstowe, rozwijane itp. Nie trzymałem ustawiających ze względu na zwięzłość - public class DataClass { private int i; prywatne int j; public DataClass() { i=1; j=1; } public int getI(){ return i; } public int getJ(){ return j; } } Poniżej znajduje się klasa pomocnicza, która jest używana przez klasę testową do wypełnienia danych formularza na stronie - public class WorkerClass { private DataClass data; public void setData(DataClass data){ this.data = data; } public int add() { return data.getI()+data.getJ(); } public int substract() { return data.getI()-data.getJ(); } } A oto metoda testowa. Zauważ, że zamiast wywoływania setData klasy WorkerClass w każdej metodzie testowej użyłem bloku inicjalizacji instancji - public class TestClass { private DataClass data = new DataClass(); WorkerClass workerClass = new WorkerClass(); {pracownikClass.setData(dane); } @Test public void testAddition() { attach workerClass.add()==0:"dodanie nie powiodło się"; } @Test public void testSubstraction() { attach workerClass.substract()==0:"odejmowanie nie powiodło się"; } } Moje pytanie brzmi, czy niewłaściwie używam bloku inicjalizacji instancji i powinienem raczej wywoływać go z każdej metody testowej, nawet jeśli wszystkie metody testowe wymagają tego samego zestawu danych?


title: Czy warto zamieszczać w CV repozytoria testowe lub samouczące się?

text: Mam repozytorium GitHub z programami-zabawkami, które piszę, gdy czegoś się uczę. Na przykład, kiedy czytam o algorytmach lub strukturach danych, piszę szybką implementację, aby upewnić się, że działa i rozumiem. Czasami rozwiązuję zagadki algorytmów i struktur danych, które trafiają do repozytorium. Czy warto zamieścić link do tego repozytorium w moim CV, czy w rzeczywistości zaszkodziłoby to moim szansom na zatrudnienie?


title: Jaka jest największa słabość studentów kończących studia z informatyki?

text: To pytanie skierowane jest bardziej do pracodawców i doradców/profesorów doktorantów, ale wszelkie opinie są mile widziane. Co uważasz za powszechną słabość nowo zatrudnionych i/lub nowych absolwentów? Czy jest to całkowicie zmienne zależne od studenta i jego uczelni? Czy jest jakaś szczególna umiejętność lub zestaw umiejętności, w których chcieliby Państwo, aby nowi pracownicy/badacze mieli wiedzę specjalistyczną i jak możemy naprawić ten brak? Zdaję sobie sprawę, że to pytanie jest ogólne i tak naprawdę zawiera dwa pytania, jedno o słabości nowych inżynierów oprogramowania i jedno o słabości nowych badaczy. Jednak obydwa typy ludzi zwykle pochodzą z podobnych kierunków studiów, więc zastanawiam się, czy coś się pokrywa. Uwaga: nie jestem profesorem, ale interesuje mnie, jak najlepiej zrewidować program studiów licencjackich w CS.


title: Jak mogę ocenić zdolność kandydata do uczenia się podczas rozmowy kwalifikacyjnej?

text: Zatrudniamy mały dział rozwoju w średniej wielkości firmie, dla której oprogramowanie nie jest główną linią biznesu. W związku z tym próbujemy zrekrutować osobę, którą nazwaliśmy _starszym programistą_. Celem jest znalezienie kogoś, kto potrafi zaprojektować, wdrożyć i utrzymywać całe nowe i istniejące systemy od bazy danych po front-end. Niezależnie od tego, czy kandydaci twierdzą, że mają doświadczenie (czytaj: masowo splecione CV), czy wyniki testu technicznego, naprawdę zależy mi na ich zdolności do uczenia się i szybkości, z jaką przyswajają technologie lub pojęcia, których nie znają aby wypełnić wszelkie luki, jakie mogą mieć w swojej wiedzy. Jak mogę uzyskać pomysł na zdolność (lub szybkość) uczenia się kandydata?


title: Jak Python jest używany w prawdziwym świecie?

text: Szukam pracy jako programista Pythona. Znam podstawy języka i stworzyłem z nim kilka gier za pomocą pygame. Zacząłem też eksperymentować z Django. Jednak patrząc na rynek pracy, wydaje się, że niewiele stanowisk w Pythonie jest związanych z siecią. Jeśli chodzi o komputery stacjonarne, nie wydaje się, aby wiele firm korzystało z popularnych bibliotek GUI, takich jak pyQt lub wxPython. W jaki sposób firmy faktycznie używają Pythona? Na jakich obszarach należy się skupić, aby dostać pracę jako programista Pythona?


title: Do jakich scenariuszy najlepiej nadają się wdrożenia usługi dystrybucji danych Object Management Group (OMG)?

text: Zawsze byłem wielkim fanem asynchronicznego przesyłania wiadomości i implementacji pub/sub, ale wywodząc się z Javy, najbardziej znam systemy przesyłania wiadomości oparte na JMS, takie jak JBoss MQ, HornetQ, ActiveMQ, OpenMQ itp. Śledziłem też luźno dyskusję na temat AMQP. Ale ostatnio dowiedziałem się o specyfikacji usługi dystrybucji danych z Object Management Group i odkryłem, że istnieje kilka implementacji open-source: OpenSplice OpenDDS Wygląda na to, że te rzeczy koncentrują się na tego rodzaju scenariuszach o dużej objętości, które zwykle kojarzymy z giełdami handlu finansowego i czym nie. Moje obecne zainteresowanie jest bardziej związane z powiadomieniami związanymi z przetwarzaniem strumienia aktywności (pomyśl na Twitterze / Facebooku) i zastanawiam się, czy serwery DDS są warte dalszej analizy. Czy ktoś, kto ma praktyczne doświadczenie z tą technologią i/lub dogłębnie ją rozumie, może wypowiedzieć się na temat jej przydatności i do jakich scenariuszy najlepiej się nadaje? Jak to się układa w porównaniu z bardziej „tradycyjnymi” serwerami JMS i/lub AMQP (lub nawet STOMP lub OpenWire, itp.?) Edycja: FWIW, znalazłem trochę informacji w tym wątku StackOverflow. Nie jest to pełna odpowiedź, ale każdy, kto znajdzie to pytanie, może również uznać ten wątek za przydatny, stąd dodany link.


title: Użyj obiektu null jako argumentu metody

text: Rozważmy następujący fragment kodu class Foo { public: //... bool valueFirstGet(int& value) const { if(this==nullptr) {return 0;} value=values[0]; powrót 1; } //... prywatne: int* wartości; rozmiar_t n_wartości; }; int main() { Foo* obj=findObject("klucz"); int wartość; if(!obj->valueFirstGet(value)) {printf("klucz nie istnieje\n");} return 0; } findObject zwraca nullptr, jeśli nie może znaleźć obiektu. Czy można pozwolić funkcji członkowskiej na sprawdzenie wartości null zamiast jej wywołującego. W moim kodzie jest kilka wywołań findObject, po których następuje bezpośrednie wywołanie valueFirstGet, więc pozostawienie czeku wywołującemu sprawia, że kod jest brzydki. EDYCJA: Czy istnieje czystszy sposób na uniknięcie wszystkich sprawdzania wartości null oprócz znajdowania obiektu findObject w celu zgłoszenia wyjątku zamiast zwracania wartości null? EDYCJA 2: A co z opakowaniem statycznym?


title: Najlepsza metoda walidacji parametrów funkcji

text: Bawiłem się pomysłem stworzenia własnego CMS dla doświadczenia i dlatego, że fajnie byłoby uruchomić moją stronę internetową z własnej bazy kodu. Jedną z decyzji, do której ciągle wracam, jest najlepsza walidacja parametrów przychodzących dla funkcji. Odnosi się to głównie do prostych typów danych, ponieważ walidacja obiektów byłaby nieco bardziej złożona. Na początku zastanawiałem się nad stworzeniem konwencji nazewnictwa, która zawierałaby informacje o tym, jakie powinny być parametry (int, string, bool, itp.), a następnie pomyślałem, że mogę stworzyć opcje do walidacji. Ale potem w każdej funkcji nadal muszę uruchomić jakiś rodzaj walidacji parametrów, który analizuje nazwę parametru, aby określić, jaka wartość może być następnie zweryfikowana względem niej, pod warunkiem, że byłoby to obsługiwane przez przekazanie listy parametrów do funkcji, ale to nadal musi zdarzyło się, a jednym z moich celów jest usunięcie walidacji parametrów z samej funkcji, aby można było mieć tylko rzeczywisty kod funkcji, który wykonuje zamierzone zadanie, bez dodatkowego kodu do walidacji. Czy jest jakiś dobry sposób na radzenie sobie z tym, czy jest to tak niski poziom, że zazwyczaj sprawdzanie poprawności parametrów jest wykonywane po prostu na początku wywołania funkcji, więc powinienem się tego trzymać.


title: Jaki jest najlepszy sposób na zrozumienie kodu w projekcie z dokumentacją null?

text: To nasza pierwsza gra i jesteśmy start-upem. Mieliśmy programistę, który nagle wydaje się martwy. Chociaż znaliśmy go osobiście, myśleliśmy, że był tak samo zmotywowany jak my, dlatego nigdy nie szukałem przeglądu kodu ani dokumentacji. Teraz wygląda na to, że bardzo się obija i chcemy go wyrzucić. Teraz podczas rozmowy powiedział, że nie będzie dokumentował kodu, abyśmy mogli być od niego zależni. Spojrzałem na kod i nie ma dokumentacji. Kod jest wszędzie. Jaki byłby najlepszy sposób na zrozumienie jego kodu? Szczegóły kodu: * Napisany w C# i skierowany na platformę mobilną przy użyciu Unity3D. * Mechanika rozgrywki i kamera to skrypty, które nie mają dokumentacji. * Za dużo wiadomości Send/Broadcast, więc nie mogę zobaczyć referencji w Mono. * Znowu mocne użycie łańcuchów w wywoływaniu metod lub przekazywaniu parametrów * Uaktualnij funkcję wszędzie, która mogłaby zostać zredukowana do współprogramów. * Nazewnictwo jest kiepskie i niespójne * Absolutnie nie ma łączenia z użyciem zniszczenia i tworzenia instancji. Spodziewam się wycieków pamięci. Jakie protokoły powinienem przyjąć, aby zrozumieć kod i pracować nad nim?


title: Dlaczego do prób złapania wymagane są nawiasy?

text: W różnych językach (przynajmniej Java, pomyśl także C#?) możesz robić takie rzeczy jak if( condition ) singleStatement; while( warunek ) singleStatement; for( var; warunek; przyrost ) singleStatement; Więc kiedy mam tylko jedną instrukcję, nie muszę dodawać nowego zakresu za pomocą `{ }`. Dlaczego nie mogę tego zrobić za pomocą try-catch? spróbuj singleStatement; catch(Wyjątek e) singleStatement; Czy jest coś wyjątkowego w try-catch, który wymaga zawsze nowego zakresu lub czegoś takiego? A jeśli tak, czy kompilator nie mógłby tego naprawić?


title: Uzyskać informacje o systemie z programu C?

text: Piszę mały program w C, którego chcę użyć do wyświetlenia niektórych statystyk systemowych na moim wyświetlaczu HD44780 16x2 znaków. System, z którym będę pracował to system Debian ARM i choć nie ma to znaczenia, wyświetlacz jest na nagłówku GPIO. (System to Raspberry Pi). Jako początkową (nieco mało ambitną) próbę chciałbym zacząć od czegoś prostego, takiego jak użycie pamięci RAM i procesora (jestem nowy w C). Rozumiem, że jeśli wykonuję zewnętrzne wywołania poleceń, muszę fork() i execve() (lub jakiś equiv, który pozwoli mi zwrócić wyniki), chciałbym wiedzieć, jak uzyskać informacje, których chcę w ładny, czysty format, którego mogę użyć. Na pewno nie będę musiał dzwonić (np.); free -h A potem użyj awk lub podobnego, aby wyciąć kawałek, który chcę? Musi być czystszy sposób? Pytanie powinno być postrzegane jako bardziej ogólne, jaka jest najlepsza praktyka uzyskiwania informacji o systemie w C (wykorzystanie pamięci RAM/procesora to tylko wstępny przykład).


title: Asp.Net MVC CMS lub koszyk lub inny rodzaj systemu

text: Od jakiegoś czasu uczę się Asp.Net MVC i przeszedłem przez wiele samouczków, od MVC Music Store, przez Code-First, Custom Membership, aż po adnotacje danych. Zasadniczo mam mocną kontrolę nad tym, jak wszystko działa w tych nowych ramach. Ale jest kilka rzeczy, których sam nie jestem w stanie zrozumieć i zrozumieć. Rzeczy takie jak osiągnięcie paginacji, Katalog produktów, AJAX i kilka innych rzeczy. Dlatego myślałem o nauce i poznaniu tych aspektów za pomocą dowolnego CMS typu open source, koszyka na zakupy lub innego rodzaju systemu. W ten sposób mogę zobaczyć kod i zrozumieć, jak te rzeczy można osiągnąć w Asp.Net MVC. Sprawy były łatwiejsze w zwykłym Asp.Net, ponieważ nie mieliśmy do czynienia z HTML, więc jestem trochę powolny w tych działach i potrzebuję pomocy w drobnych sprawach, takich jak paginacja. **Więc, czy jest jakiś dostępny opensource Asp.Net MVC CMS lub jakikolwiek inny system wykorzystujący brzytwę?**


title: Wiele wątków i jedno źródło wyjściowe

text: Na potrzeby ćwiczenia powiedzmy, że masz plik wejściowy z serią wierszy tekstu w celu odwrócenia odpowiednich sekwencji znaków. Teraz wprowadź 5 nitek, z których każda wykona odwrócenie, nić 1 zajmie się linią 1, nitka 2 zajmie się linią 2 i tak dalej. Jeśli celem jest zapisanie tych odwróconych linii w kolejności, w jaki sposób zapisałbyś je w tym samym pliku? PS: Myślałem o zrobieniu jakiejś kolejki, ale nie ma gwarancji na zamówienie. Zastanawiam się również, czy istnieje jakiś sposób, aby tymczasowo zablokować plik i wątek czekać na swoją kolej. Wyobrażam sobie, że powinienem śledzić, która linia jest zapisywana.


title: Wyodrębnianie zip jako systemu plików - C++

text: Chciałbym uzyskać dostęp w trybie odczytu i zapisu do archiwum zip bez dekompresowania go na dysku: jakie mam opcje? Muszę wykonać zwykłe akcje IO zarezerwowane dla systemu plików, takie jak odczytywanie, zapisywanie nowych plików, usuwanie ich. Jeśli to możliwe, chciałbym pozostać przy bibliotece zlib.


title: Jak czytać i rozumieć diagramy ER

text: Dostałem diagram ER dla dość złożonej bazy danych. Skomplikowane dla mnie co najmniej 849 tabel. Jeden z architektów mówi, że aby zrozumieć kod, trzeba zrozumieć bazę danych i relacje. Teraz jestem w zasadzie programistą Java, więc nie jestem zbyt zaznajomiony z tym. Jak zacząć? Czy powinienem zacząć od czegoś podstawowego, takiego jak USER lub ORDER i sprawdzić, jakie mają relacje z innymi tabelami wokół siebie? Wszelkie wskazówki lub samouczki bardzo by pomogły


title: Co określiłbyś jako wrażliwe dane użytkownika?

text: Ostatnie moje poprzednie pytanie miało odpowiedź, która wywołała w mojej głowie inne i niezwiązane pytanie: Klient chce zmodyfikować pliki .properties spakowane w naszym pliku WAR Pytanie, o którym pomyślałem po przeczytaniu tej odpowiedzi, brzmi: jak niskie ryzyko czy dane są gromadzone o osobach (nie użytkownikach, powiedzmy po prostu „ludziach”) w mojej aplikacji? * Imię i nazwisko * Firma lub organizacja, w której osoba jest obecnie zatrudniona. * (Opcjonalnie) Adres e-mail * (Opcjonalnie) Numer telefonu osoby * Zdjęcie twarzy osoby * Podpisany cyfrowo dokument PDF fizycznie podpisany za pomocą elektronicznego bloku do podpisu (odręczny podpis osoby) Brak innych danych wrażliwych, takich jak numery ubezpieczenia społecznego, numery kart kredytowych lub cokolwiek, co może dokładnie zidentyfikować osobę ze 100% dokładnością. Jak wrażliwe oceniłbyś typy danych wymienione powyżej? Czy przy powyższych informacjach kradzież tożsamości jest możliwa nawet na odległość? W świetle wszystkich niedawnych epidemii sukcesów hakerskich i naruszeń danych, gdyby coś takiego stało się z moją aplikacją (załóżmy, że mam rozsądne środki bezpieczeństwa, SSL, szyfrowane hasła z solą, blokadę konta po tylu nieudanych próbach itp. ...), jaka Twoim zdaniem odpowiedź byłaby odpowiednia dla mojej organizacji? Czy należy podejmować wszelkie próby powiadomienia osób, że informacje te zostały naruszone? Czy warto? Dzięki za podzielenie się swoimi przemyśleniami.


title: Czy warto tłumaczyć aplikację na Androida na hiszpański i inne języki?

text: Mam „stronę użytkownika” tej historii, myślę, że chcą, aby była lepsza, jeśli jest po hiszpańsku. Ale co z programistami? Czy tworzycie swoje programy wielojęzyczne? Czemu? Dlaczego nie? Kto tłumaczy Twoje oprogramowanie? Czy możesz płacić komuś za przetłumaczenie Twojej aplikacji, czy wolisz robić to samemu? Czy korzyści są większe niż koszty?


title: Obliczanie powierzchni nieregularnych kształtów

text: Czy istnieje jakiś algorytm, który może pomóc podzielić nieregularny kształt na regularne kształty i ostatecznie obliczyć powierzchnię głównego obiektu, sumując obszary tych regularnych obiektów?


title: Czy grupa instrukcji Select liczy się jako prawidłowy model?

text: Tworzę aplikację na Facebooku i próbuję prawidłowo śledzić MVC. Ale zastanawiałem się, czy mam klasę, która była zbiorem zapytań fql (pobieranie danych z facebooka), czy powinienem zachować je w kontrolerze lub modelu? Zgodnie z instrukcją użytkownika Codeigniter "Modele to klasy PHP, które są zaprojektowane do pracy z informacjami w Twojej bazie danych". Skoro fql współdziała z bazami danych Facebooka, a nie z moją własną, czy posiadanie klasy pełnej tego, co w zasadzie jest tylko instrukcjami SQL Select, liczy się jako prawidłowy model?


title: jaki jest najlepszy sposób na poznanie najnowszych technologii

text: W dzisiejszym świecie IT mamy zbyt wiele technologii. Jak najlepiej być w stanie wyjaśnić koncepcyjnie podstawy techniczne? Jak możemy znaleźć wszystkie pojęcia dostępne w technologii i wymagane do nauczenia? Doświadczenie w programowaniu zawsze ma znaczenie, ale chcę poznać idee, które odkładają doświadczenie na bok. Mam na myśli to, że jeśli zacznę samodzielnie opracowywać projekt, jak mogę dowiedzieć się, z jaką najnowszą technologią i koncepcjami powinienem korzystać? Proszę zasugeruj.


title: Jakie problemy można rozwiązać za pomocą Generics?

text: Od dłuższego czasu nie używałem Generics w C#. Za każdym razem, gdy myślę, że muszę ich użyć, albo idę w złym kierunku i poddaję się, albo stwierdzam, że tak naprawdę ich nie potrzebuję. Czuję, że przegapiam lub ignoruję technikę, która może być użyteczna i potężna. Zdaję sobie sprawę z tego, jak mają być używane generyki (a przynajmniej tak mi się wydaje). Jeśli masz trzy metody, które robią to samo z różnymi typami, użycie generyków pozwala mieć tylko jedną metodę, która będzie działać z tymi trzema typami. EDIT (w odpowiedzi na komentarz) **Czy są jakieś zapachy lub wzorce kodu, na które powinienem zwracać uwagę?** Uwaga Często używam `List<>`, więc nie ignoruję generyków w standardowej bibliotece. Tyle, że przez jakiś czas nie pisałem niestandardowego kodu przy użyciu Generics.


title: Ścieżki audytu i rejestrowanie działań

text: **Tło** Dyskusja, która pojawiła się ostatnio w pracy, dotyczy tego, jak radzimy sobie z rejestrowaniem audytów i rejestrowaniem zdarzeń. Integrujemy się z aplikacją innej firmy, więc wyzwalacze są od początku zabronione, więc obsługujemy to w kodzie. Napisaliśmy kilka prototypowych komponentów do obsługi, ale na razie nic nie wydaje się właściwe. Głównym problemem jest to, że chcemy stworzyć ramy czasowe w stylu Facebooka, aby użytkownicy mogli zobaczyć, jakie działania miały miejsce w ostatnim czasie, ale wydaje się, że nie pasują one do tego, jak rejestrujemy audyty. Moje pytanie brzmi, jak najlepiej poradzić sobie z tego typu scenariuszem? * Czy powinniśmy dostosować tabele dziennika audytu do wymagań interfejsu użytkownika? * Czy powinniśmy mieć oddzielne tabele do obsługi "Akcji" i oddzielne zdarzenia i inspekcje * Czy powinniśmy szukać architektury bardziej opartej na komunikatach, aby była to bardziej jak komponent typu Event sourcing? Wkład od kogoś, kto wykonał tego typu system, byłby bardzo mile widziany.


title: Chcesz zrobić trochę kontroli uszkodzeń

text: Ubiegałem się o pracę w firmie. Wstępna rozmowa przebiegła pomyślnie. Wysłali mi zadanie i poprosili o napisanie aplikacji internetowej i wysłanie jej w określonym czasie. Wydawało się to dość proste. Wypełniłem i wysłałem do nich. Teraz mój umysł całkowicie kręci się wokół kodu, który napisałem i teraz czuję, że był jeden mały wymóg, którego nie spełniłem. Zanim wydadzą werdykt, powinienem być proaktywny i przyznać się do tego. Na pewno to znajdą i jestem tego pewien. Mogę wysłać im e-mail z informacją, że zapomniałem to dodać. Co powinienem zrobić? Czy jest coś, co robię, aby kontrolować szkody?


title: Dla jakiego rodzaju pamięci podręcznej ten program nie będzie działał dobrze? Jak można go zoptymalizować?

text: Rozważmy następujący fragment kodu: int a[8192], b[8192], c[8192]; wew; for(i = 0; i < 8192; i++) c[i] = a[i] + b[i]; Dla jakiego rodzaju pamięci podręcznej ten program nie będzie działał dobrze (ustaw asocjacyjny, bezpośredni, asocjacyjny)? Myślałem o tym, jak to zoptymalizować, ale naprawdę nie widzę, jak można to zrobić. Jak zmienić ten kod, aby mieć mniej błędów w pamięci podręcznej?


title: Poprawna terminologia w teorii typów: typy, konstruktory typów, rodzaje/sorty i wartości

text: W odpowiedzi na poprzednie pytanie rozpoczęła się mała debata na temat poprawnej terminologii dla niektórych konstrukcji. Ponieważ nie znalazłem pytania (innego niż to czy tamto, co nie jest całkiem właściwe), aby jasno to rozwiązać, robię to nowe. Wątpliwe terminy i ich relacje to: _type, konstruktor typu, parametr typu, rodzaje lub sorty oraz wartości_. Sprawdziłem też wikipedię pod kątem teorii typów, ale to też nie wyjaśniało tego zbytnio. Tak więc w celu uzyskania dobrej odpowiedzi referencyjnej i sprawdzenia własnego zrozumienia: * Jak te rzeczy są właściwie zdefiniowane? * Jaka jest różnica między każdą z tych rzeczy? * Jak są ze sobą powiązane?


title: Jak i kiedy skalujesz instancje platformy Azure?

text: Kiedy masz do czynienia z instancjami platformy Azure, które są mniej wydajne, jak decydujesz, kiedy skalować instancje? Czy skalujesz w poziomie, dodając więcej instancji, czy w pionie, zwiększając możliwości istniejących instancji?


title: Funkcja modyfikująca argument, czy powinienem zwrócić zmodyfikowany obiekt?

text: Mamy funkcję, która modyfikuje obiekt JS, dodając do niego pewne niestandardowe właściwości. Funkcja nie zwraca nic. addTransaction: function (obj) { obj.transactionId = this.getTransactionId; obj.id = ten.recordId; } Ktoś powiedział, że wolał, aby `addTransaction` zwracał `obj`. Oto, co pomyślałem * Jeśli nic nie zwrócę (i udokumentuję, że obiekt będzie modyfikowany), jest trochę jasne, że obiekt zostanie zmodyfikowany, tak jakby nazwa była addTransactionToObj * Jeśli chcę dodać wartość zwracaną, nie powinienem modyfikować przychodzącego obiektu, powinienem sklonować dany obiekt, dodać moje właściwości do klonu i zwrócić klon. * Posiadanie wartości zwracanej, która po prostu zwraca jeden z (zmodyfikowanych) parametrów, brzmi źle. Czy ktoś ma preferencje w tej kwestii?


title: Nazywanie klas, metod, funkcji i zmiennych

text: Istnieją 3 ważne konwencje nazewnictwa: 1. `z_podkreśleniami` 2. `PascalCased` 3. `camelCased` Inne warianty nie są ważne, ponieważ nie są powszechnie używane. W przypadku zmiennych wygląda na to, że ta z podkreśleniami jest najczęściej używana przez programistów, więc będę się tego trzymać. Myślę, że to samo dotyczy funkcji. Ale co z nazwami klas i metod? Który z tych 3 jest najczęściej używany przez programistów do takich konstrukcji? (osobiście jest to 3. dla metod i 2. dla klas) Proszę nie publikować rzeczy typu "użyj tego, co uważasz za słuszne", ponieważ kod, który piszę to API dla innych programistów i chciałbym zaadoptować najpopularniejszy styl kodowania :)


title: ASP.Net MVC niejednoznaczne metody akcji - dlaczego wybrana ścieżka

text: Czy jest ktoś, kto mógłby rzucić światło na to, dlaczego niejednoznaczne metody nie są dozwolone w ASP.Net MVC? Zaktualizowałem moje pytanie tylko po to, aby je wyjaśnić (przy użyciu przykładu Carson63000 z jego odpowiedzi), samo pytanie pozostaje takie samo. Powiedzmy, że mamy następującą akcję /article/list/sport, która wywołuje public ActionResult List(string category) { } i chcemy mieć również następującą akcję: /article/list/sport/20110904 like do wywołania towarzyszącej metody public ActionResult List(string category, DateTime date) { } Obecnie framework zgłasza `AmbiguousMatchException`, ponieważ znalazł dwie metody o nazwie List. Jest to jedyny powód zgłoszenia wyjątku, w którym znaleziono więcej niż jedną metodę, która pasuje do nazwy akcji. Po tym, jak framework zorientuje się, jakiej metody użyć i zdecyduje, że nie jest to niejednoznaczne, spróbuje zmapować dostarczone dane z żądania na parametry metody. Dlaczego nie zrobić tego na odwrót? Najpierw uzyskaj wszystkie odpowiednie metody, a następnie spróbuj znaleźć najlepsze dopasowanie, mapując parametry. Jeśli dozwolone są niejednoznaczne metody, myślę, że nadal można wykonać następujące czynności. Biorąc pod uwagę, że `/article/list/sport` używa trasy `/{kontroler}/{action}/{category}` a `/article/list/sport/20110903` używa trasy `/{controller}/{action }/{category}/{date}` byłoby wtedy nadal możliwe mapowanie danych dla adresu url `/article/list/sport?date=20110903` ponieważ będzie pasować do trasy tylko dla kategorii, ale nadal może mapować dane dla metoda `public ActionResult List(string kategoria, DateTime data) { }`. Na chwilę obecną nie widzę powodu, dla którego z punktu widzenia projektowania nie dopuszczać metod niejednoznacznych. Jedyne, co o sobie myślę, to to, że za bardzo spowalnia framework, dlatego obecne rozwiązanie jest bardziej logiczne. A może brakuje mi tu jeszcze jednego punktu?


title: Czy to kiedykolwiek w porządku, aby warunkowe wywoływały skutki uboczne?

text: Uczęszczam na kurs średniozaawansowanych struktur danych jako warunek wstępny do programu CS MS na uniwersytecie, o którym wszyscy w Ameryce słyszeli. Jedna linijka kodu, który został napisany na zajęciach, przykuła moją uwagę: `if (a > 33 | b++ < 54) {...}` To nigdy nie przeszłoby przeglądu kodu w moim miejscu pracy. Gdybyś napisał taki kod w rozmowie kwalifikacyjnej, nie zostałbyś zatrudniony. To nie przesada. (Oprócz tego, że jest warunkowy ze skutkami ubocznymi, jest sprytny kosztem przejrzystości.) W rzeczywistości nigdy nie widziałem warunkowego z efektami ubocznymi, a Google też nie pojawia się zbyt często. Inny uczeń został po zajęciach, żeby o to zapytać, więc nie tylko ja uważam, że to dziwne. Ale profesor był bardzo nieugięty, że to jest akceptowalny kod i że napisze coś takiego w pracy. (Jego praca w FT jest dyrektorem SWE w firmie, o której wszyscy słyszeliście.) Nie wyobrażam sobie świata, w którym ta linia kodu byłaby kiedykolwiek akceptowalna, a co dopiero pożądana. Czy się mylę? Czy to jest ok? A co z bardziej ogólnym przypadkiem: warunkowe ze skutkami ubocznymi? Czy one kiedykolwiek są w porządku?


title: Od czego zacząć opracowywanie silnika gry jako aplikacji internetowej

text: Muszę stworzyć aplikację internetową, najlepiej hostować ją w Google App Engine. jest to gra wieloosobowa, więc musi być interaktywna. Jestem zaznajomiony tylko z kodowaniem C/C++ i zacząłem uczyć się Pythona. Stworzyłem też gry wieloosobowe (multi-player i single player), ale bez GUI. Ktoś mi powiedział, że interfejs aplikacji internetowej będzie musiał być napisany w JavaScript. A zaplecze może być w pytonie lub w dowolnym innym języku. Pamiętaj, że nie mam problemów z zakodowaniem back-endu, silnika gry, aplikacji internetowej. Tylko że nie wiem co jest i jak itp. o aplikacjach webowych. I w zasadzie, jak zintegrować kod back-endu z aplikacją internetową (którą muszę zbudować od zera) (ja też pisałbym back-end, więc od teraz jest pełna elastyczność) Więc proszę, pokaż mi światło! Nie mam pojęcia, od czego zacząć! Proszę powiedz mi, od czego zacząć i co mam przeczytać, co może szybko dać mi wgląd w prace programistyczne! Jak korzystać z GUI. A jakich wszystkich możliwych kombinacji językowych mogę używać? Im łatwiejszy w użyciu, tym lepiej.


title: Oddzielny Kernel, MMX/SSE i transmisja TCP z nich?

text: Czytałem więc o Java Convolve i ktoś powiedział, że może być szybsza niż implementacja MMX/SSE. Jeden z komentarzy zawierał tablicę kernal i mówił, że można go oddzielić. 1. Co to jest oddzielne jądro? Jak to jest przydatne do przetwarzania obrazu? 2. Co to jest MMX/SSE? Strona wikipedii wymienia je jako zestawy instrukcji. Czy są specjalnie zaprojektowane do przetwarzania obrazu? 3. Jak przesłałbyś zestaw danych w formacie MMX/SSE (zakładam) przez TCP? Dziękuję.


title: Jak czytasz kod innych?

text: Niemal każdy zaawansowany programista twierdzi, że bardzo przydatne jest czytanie kodu innych profesjonalistów. Zwykle doradzają open source. Czy czytasz to czy nie? Jeśli tak, to jak często i jak wygląda procedura czytania kodu? Ponadto nowicjuszom jest trochę trudno poradzić sobie z SVN - mnóstwem plików. Jakie jest rozwiązanie?


title: Jak zapobiec duplikowaniu aplikacji .NET?

text: Utworzyłem aplikację formularzy Windows .net, której nie chcę duplikować. Chcę, aby ta aplikacja była przenośna, więc chciałbym umożliwić jej przenoszenie. Jak mógłbym to zrobić bez zarządzania tym przez zdalny serwer?


title: Pisanie wtyczki Jenkins: gdzie jest dokumentacja?

text: W moim obecnym projekcie używamy Jenkinsa do monitorowania naszych kompilacji. Teraz chcą, abym napisał wtyczkę Jenkins, aby dodać kilka parametrów monitorowania. Rzuciłem okiem na działanie wtyczki monitora stanu i nie mogę zrozumieć niektórych rzeczy. Próbowałem poszukać dokumentacji do napisania wtyczki, ale wydaje się, że bardzo mi jej brakuje. (witryna wspomina tylko o tym, jak wygenerować projekt bazowy i odnosi się do samouczka, który nie jest tak pouczający) To, co próbuję zrobić, to po prostu dodać kilka opcji do każdej kompilacji, dodać link i stronę monitorowania. Dodawanie do strony głównej odbywa się najwyraźniej przez dodanie akcji, ale wciąż próbuję rozgryźć resztę. I jak to wszystko się łączy. Czy ktoś ma jakieś wskazówki, albo miejsce, gdzie znajdę jakąś porządną dokumentację?


title: Rzeczy do przeczytania na temat wniosków o wycenę

text: Mam zamiar wydać aplikację i nie mam pojęcia, jaka byłaby idealna cena. Nie jestem pewien, jak w moim przypadku wycena wysoka i sprzedaż kilku egzemplarzy będzie się równać przychodom z cenami niskimi i sprzedażą wielu egzemplarzy. Czy ktoś może wskazać mi książki/artykuły/posty na blogu/itp., które poruszają temat, najlepiej biorąc pod uwagę takie rzeczy jak konkurencja, ilość funkcji, bycie pierwszym na rynku, badanie, czy tego rodzaju aplikacja jest w ogóle potrzebna itp. ?


title: Używać instrukcji switch do przepływu aplikacji?

text: Zwykle używam instrukcji switch, aby uprościć blok wielu instrukcji if – na przykład – zwracanie użytkownikowi ciągu informacji zwrotnej na podstawie danych wejściowych wielokrotnego wyboru. Mam również tendencję do konstruowania klas tak, aby istniała jedna metoda „zarządzania”, aby uniknąć kolejnych kroków lub wywoływania metod łańcuchowych w ramach innych metod klasy. Odkryłem, że pomaga to zachować elastyczność i koncentrację metod - tj. class MyClass{ // ta metoda nie robi nic więcej niż wywoływanie odpowiedniej metody // w zależności od statusu następującego po poprzedniej. Całkowitym celem // jest kontrola przepływu aplikacji public function manageFlow($input){ $status = $this->stepOne($input); if($status == false){ //wyjście z procedury } $status = $this->stepTwo($input); if($status == false){ //wyjście z procedury } } // ta metoda ma zaimplementowanych bezpośrednio w niej kilka kolejnych kroków, // np. dla logującego się użytkownika // uniemożliwia ponowne użycie któregokolwiek z kroki pośredniczące public function tangledFlow($input){ if($input == 'coś){ //100 linii kodu } //następnie przekazanie do następnego bitu if($this->User->Authenticated){ // kolejne 100 wierszy... } } } Wtedy przyszło mi do głowy, że mogę użyć instrukcji switch do kontrolowania tego rodzaju sekwencyjnego wykonywania - więc moje pytanie brzmi: czy ktoś używał instrukcji switch do tego rodzaju kontroli przepływu?


title: System operacyjny zorientowany obiektowo

text: Kiedy myślałem o napisaniu systemu operacyjnego, natknąłem się na punkt, którego sam nie potrafiłem rozgryźć: czy system operacyjny naprawdę może być napisany w języku programowania zorientowanego obiektowo (OOP)? Skoro te typy języków nie pozwalają na bezpośredni dostęp do pamięci, czy nie uniemożliwiłoby to programiście napisania całego systemu operacyjnego przy użyciu tylko języka OOP? Weźmy na przykład system operacyjny Android, który obsługuje wiele telefonów i niektórych tabletów używanych na całym świecie. Uważam, że ten system operacyjny używa tylko Javy, języka zorientowanego obiektowo. W Javie nie udało mi się wskazać i manipulować konkretnym adresem pamięci, którego środowisko wykonawcze (JRE) nie przypisało niejawnie do mojego programu. W C, C++ i innych językach innych niż OOP mogę to zrobić w kilku linijkach. To sprawia, że zastanawiam się, czy system operacyjny można napisać w OOP, zwłaszcza w Javie. Wszelkie kontrprzykłady lub inne informacje są mile widziane.


title: Najlepszy sposób oszacowania kosztów związanych z przeniesieniem kodu z języka A na język B?

text: Niech klient myśli o oszacowaniu kosztów przeniesienia projektu z języka A na język B. W jaki sposób najlepiej złożyć zapytanie ofertowe, aby to zrobić?


title: Jak mam podejść do wykonywania podobnej pracy na boku do tego, co robię w pracy w ciągu dnia?

text: Obecnie mam dobrą pracę, spędzam 70% dnia robiąc to, co kocham, minusem tego jest oczywiście to, że pracuję dla kogoś innego, a nie dla siebie. Idealnie chciałbym zrobić coś własnego, projekt nocny itp., który mógłby spływać z niektórych funduszy. Minusem tego oczywiście byłoby to, że byłby to konflikt interesów. Mógłbym oczywiście po prostu założyć własną małą rzecz, ale gdybym to odkrył, mógłbym zaryzykować swoją pracę. Mogłabym rzucić pracę, ale wtedy straciłabym dochód (rodzina + kredyt hipoteczny) i moje pomysły mogą się nie powieść. Myśląc o tym dziś wieczorem, porozmawiam o tym jutro z moim szefem – jest dobrym facetem, ale mam tylko nadzieję, że tego nie pogrzebie lub po prostu nie zaoferuje z czasem. Ktoś w tej łodzi? Rób to, co kochasz w ciągu dnia (dla kogoś innego) i nie możesz tego czytać w nocy.... Edytuj: Żeby wyjaśnić, że to, co chcę robić w nocy, jest bardzo podobne do tego, co robię w ciągu dnia. Ogólnie rzecz biorąc, nie jest to „uwielbiam programowanie”, ale lubię eksplorację danych – i to właśnie robię w pracy. Bardzo blisko spokrewniony.


title: Uniemożliwianie parserowi przekształcenia się w (pozornie) obiekt wielkości boga

text: Mam więc program, którego celem jest pobieranie plików tekstowych i parsowanie ich do formatu binarnego, zrozumiałego dla systemu wbudowanego. Jednak format tekstu, który odziedziczyłem, który muszę przeanalizować, jest na tyle złożony, że po refaktoryzacji głównej procedury `parse` zostaje mi klasa z ponad 50 metodami, które prawie wszystkie wyglądają jak `parseChannel`, ` parseWCommand`, `parseVCommand`, `parsePCommand`, `parseLoop`, `parseHex`, `parseInt` itd. itd. itd. itd. Nie trzeba dodawać, że klasa, z jej deklaracji, wygląda na ogromną i zniechęcającą. Jednak metody interfejsu z klasą są niezwykle proste, wystarczy `parse` (skompilować tekst, określić jego skompilowany rozmiar) i `link` (naprawić wskaźniki, gdy lokalizacja w pamięci jest znana, zwrócić sfinalizowane nieprzetworzone dane binarne ). Naprawdę, dla użytkownika klasa nie ma praktycznie żadnego innego powodu istnienia poza tymi dwiema funkcjami, ale w deklaracji klasy jest tyle pozornie bezużytecznego luzu, że trudno nawet zobaczyć, co ma robić. Podobna sytuacja ma miejsce z dość ogromną liczbą członków danych, które znowu są bezużyteczne dla wszystkiego poza wewnętrznymi metodami klasy, które potrzebują ich do komunikowania się ze sobą, chociaż nie wiem, czy jest to aż tak duży problem. Rozważałem stworzenie oddzielnej klasy wyłącznie do parsowania, która jest używana w metodzie `parse`, ale wydaje mi się dziwne, aby zbudować całkowicie oddzielną klasę, która jest używana tylko w jednej metodzie w jednej klasie. Wydaje się to trochę... zbyteczne, jak sądzę? I nawet nie wiem, czy to atakuje właściwy problem. Myślę, że na koniec oto, o co pytam: 1. Czy ta pozornie wielka klasa rzeczywiście stanowi problem? Nie sądzę, że jest to ściśle „obiekt boga”, ale powierzchownie wygląda jak jeden. 2. Jeśli jest to problem, jakie są najlepsze metody jego rozwiązania?


title: Jak mogę ograniczyć zasoby dostępne dla programu?

text: Zagłębiam się w programowanie wielowątkowe w Javie, ale trudno mi przetestować mój program pod kątem błędów. Mój komputer ma po prostu zbyt wiele zasobów i rdzeni, przez co trudno jest zobaczyć, jak mój program działa w stresie. Czy jest jakiś sposób na ograniczenie zasobów dostępnych dla mojego programu? Wydaje się śmieszne, że moją jedyną opcją w tej chwili jest otwarcie innej aplikacji i renderowanie wideo HD w celu zagłodzenia aplikacji, którą debuguję.


title: Czego oczekuje się od programisty?

text: Później zająłem się tworzeniem stron internetowych i często rozmawiając z ludźmi, dostanę „Czy możesz zrobić mi stronę internetową [do mojej książki]?” typy. - Tak. Ale... Cóż, czego od tego chcesz? „Chcę, żeby wyglądało ładnie i przyciągało ludzi, a ludzie będą chcieli kupić moją książkę”. "..." **Co tak naprawdę oznacza tworzenie strony internetowej dla kogoś od strony projektanta/dewelopera?** * Jaka jest odpowiedzialność za grafikę? Czy mamy zrobić z nich ładny nagłówek z ich nazwą/logo i ładny wygląd? * Schemat kolorów? Ogólny klimat witryny? (To znaczy, czy sami decydujemy, czy też rozmawiamy z klientem?) * Konkretne sformułowania treści (takie jak tekst na stronie głównej. Oczywiście nie oczekuje się od nas, że napiszemy sekcję O autorze.)? * Dodatkowa funkcjonalność, którą naszym zdaniem może docenić użytkownik? Najlepiej byłoby porozmawiać z klientem i dowiedzieć się, czego chce, ale tak naprawdę – czy klienci kiedykolwiek _naprawdę_ wiedzą, czego chcą? **Czego oczekuje się od klienta, aby móc zrobić dla niego stronę internetową?** **Czy webdesigner i web-developer są w zasadzie wymienni w zwykłym mowie, czy...?** * * * Chyba to pytanie naprawdę powstaje, ponieważ dowiaduję się, że nie lubię tego robić. Nie programuję się jako projektant. Moje umiejętności artystyczne są prawdopodobnie lepsze niż przeciętnego programisty, ale nie o to chodzi. Właściwie wolałbym, żeby klient przyszedł do mnie i powiedział „Chcę, żeby tak wyglądało” i wręczył mi papierową kopię, którą mógłbym powielić. To, co mnie _interesuje_, to bardziej zakulisowa funkcjonalność stron internetowych. Czy jest płynny, funkcjonalny, czy użytkownik musi poruszać się po całym świecie, czy polegać na wyszukiwaniu, aby znaleźć to, czego szuka? Proszę rzucić trochę światła na ten postrzegany podział zadań dla mnie.


title: Czy silni deweloperzy muszą dźwigać na swoich barkach ciężar świata?

text: Jako programiści nieustannie staramy się rozwiązywać problemy mas. Nieustannie poszukujemy również nowych metodologii, języków i ewentualnie organizacji, które pomogą nam dalej rozwijać naszą zdolność do rozwiązywania problemów. Czuję się tak, jakbym zawsze był jednym z najlepszych członków mojego zespołu. Czuję też, że szukam sposobów na usprawnienie swojej pracy w sposób, na który inni często nie dbają. Zaczynam odczuwać lekkie wypalenie po ~6 latach wspierania technologii. Obwiniam fakt, że pracuję tak ciężko i stawiam sobie wysokie wymagania. Niektórzy z największych programistów na świecie już nawet nie piszą kodu, aby żyć. Często jego wypalenie. Niektórzy mówią, że znudzi im się „gra”, ale zastanawiam się, czy problem nie jest nieco prostszy. Jeden z „noszenia ciężaru świata na swoich barkach”. Jeśli czujesz, że jesteś silnym programistą i jednocześnie uważasz, że nie stanowi to dla Ciebie problemu, proszę, oświecaj mnie swoim podejściem. Jak możesz być na bieżąco z technologią, pomagać innym i szybko/dokładnie rozwiązywać problemy bez konieczności nakręcania się?


title: Gdzie jest złoty środek między monokulturą językową a polikulturą?

text: Moja firma od wielu lat używa Javy (jako języka i platformy). Mamy wiele produktów różniących się znacznie rozmiarem, przeznaczeniem i złożonością. Niezależnie od wymagań odpowiedź jest zawsze taka sama - Java. Ta postawa ma oczywiście zalety i wady. Zaletą jest brak przełączania kontekstu między zadaniami pracy nad różnymi projektami, każdy programista w firmie może być stosunkowo produktywny w wielu projektach; z drugiej strony małe narzędzie może zostać „zmiażdżone” przez Hibernate. Z jednej strony można ujednolicić środowiska pakowania, wdrażania i wykonywania; z drugiej strony możemy stracić sprawność umysłu i stracić optymalne rozwiązania, zawsze „myśląc w Javie”. Mógłbym iść i dalej i dalej. Programowanie poliglota stało się dość powszechne w niedawnej przeszłości, o ile mogę to zaobserwować. W moich uszach zawsze brzmią również słowa typu „właściwe narzędzie do pracy”. Chęć otwarcia się i wystawienia się na więcej „właściwych narzędzi” jest dość silna, ale gdzie jest haczyk? Jeszcze lepiej, gdzie jest złoty środek? Przechodzenie z jednej skrajności w drugą jest zawsze niebezpieczne. Boję się dnia, w którym obudzę się w niezrozumiałym bałaganie gigantycznego stosu Java, Groovy, Python, Ruby, PHP, Scala itp. wraz ze wszystkimi odpowiadającymi im narzędziami, frameworkami, serwerami i filozofiami. Czy masz praktyczne doświadczenie w pracy w polikulturze językowej i platformowej od co najmniej dwóch lat? Jakie są Twoje główne obserwacje? Czym nadal jesteś podekscytowany i czego się boisz?


title: Inżynier oprogramowania, już w późnych latach trzydziestych, czy miałbym problem ze znalezieniem nowej pracy?

text: > **Możliwy duplikat:** > Czy ageizm w tworzeniu oprogramowania opiera się na czymś innym niż uprzedzenia? Jestem inżynierem oprogramowania w Stanach Zjednoczonych od około 10 lat, a jestem już po trzydziestce. Wciąż mam pasję i poświęcenie dla tej branży i wciąż staram się doskonalić każdego dnia w pracy. Ze względów rodzinnych muszę przenieść się do innego stanu, w którym muszę znaleźć nową pracę. Ponieważ jestem czysto technicznym facetem, nadal chciałbym znaleźć pracę inżyniera oprogramowania. Trochę jednak martwię się o swój wiek, bo jestem już po trzydziestce. Jestem pewny mojego wcześniejszego doświadczenia i siły technicznej, jednak czynnik wieku jest czymś poza moją kontrolą. Moje pytanie brzmi: czy będę dyskryminowany ze względu na swój wiek, szukając stanowiska inżyniera oprogramowania? Jeśli rzeczywiście jestem tak dobry, jak mi się wydaje, czy pracodawcy i tak byliby zainteresowani zatrudnieniem mnie? Wszelkie uwagi/sugestie dotyczące zwiększenia moich szans na zatrudnienie również są mile widziane! Żadnych sugestii typu „spróbuj zostać menedżerem”, proszę, ponieważ nie interesują mnie żadne prace związane z zarządzaniem. Dziękuję Ci!


title: Kiedy wykonać ten skok i zaprogramować?

text: Studiowałem przewodnik dla początkujących po ASP.NET 4 przez ostatnie półtora miesiąca i jestem na końcu książek. Następna książka będzie pierwsza (Professional guide). Jak dotąd zaprogramowałem tylko ćwiczenia, które są w książkach, a nie mój własny kod. Kiedy powinienem zacząć tworzyć własny kod? Po przeczytaniu obu książek? Ponadto nadal jestem zdezorientowany zorientowanym obiektowo i jak to działa z ASP.NET 4.


title: Czy jest jakieś praktyczne zastosowanie pustego typu w Common Lisp?

text: Specyfikacja Common Lisp stwierdza, że `nil` jest nazwą _pustego typu_ , ale nigdy nie znalazłem żadnej sytuacji w Common Lisp, w której czułem, że _pusty typ_ był użyteczny/konieczny. Czy istnieje tylko ze względu na kompletność (a usunięcie go nikomu nie zaszkodzi)? Czy naprawdę istnieje jakieś praktyczne zastosowanie _pustego typu_ w Common Lisp? Jeśli tak, to wolałbym odpowiedź z przykładem kodu. Na przykład w Haskell _pusty typ_ może być używany podczas wiązania obcych struktur danych, aby upewnić się, że nikt nie próbuje tworzyć wartości tego typu bez użycia obcego interfejsu struktury danych (chociaż w tym przypadku typ nie jest tak naprawdę pusty) .


title: Jakie są dobre sposoby na zapoznanie się z IL .Net?

text: Niedawno przyjąłem pracę, w której będę dużo pracował z IL (w zespole pewnego zaciemniacza, który jest dołączony do Visual Studio). Wiedzą, że mam małą wiedzę na ten temat, więc będę miał trochę czasu, żeby się tego nauczyć w pracy. Ale w międzyczasie chcę trochę przyspieszyć. Jeśli chodzi o moje tło, nigdy nie napisałem żadnego IL i bardzo mało go czytałem. Rozumiem, co to jest i tak dalej. Znam assembler x86 i tym podobne, więc nie jestem głupi, jeśli chodzi o kod typu assembler. Ale w każdym razie, jakie są dobre sposoby na zapoznanie się z IL i nauczenie się zwykłych opkodów i tym podobnych, a także tego, jak to jest zbieranie śmieci i tak magicznie działa na poziomie asemblera?


title: Gdzie umieszczasz scenariusze na tablicy scrumowej?

text: Więc tradycyjna tablica scrum wygląda mniej więcej tak: Backlog | Opowieść nierozpoczęta w toku Ukończona opowieść 1 Zadania w ramach opowieści 1 Zadania w ramach opowieści 2 Opowieść .. Opowieść n Epicka x Epicka x+1 Jednak ogólnie rzecz biorąc, historia ma wiele scenariuszy i podczas pracy z BDD chcesz napisać każdy scenariusz dla historii jako dany, kiedy i następnie. Również scenariusze nie należą do kolumny nierozpoczęte, w toku lub wykonane, ponieważ scenariusz nie jest zadaniem. Zdajesz sobie więc sprawę, że scenariusz/e powinny mieć własną kolumnę między „historią” a „nierozpoczętym”, ponieważ scenariusz może mieć wiele zadań, które należy uznać za wykonane. Jeśli zamierzasz budować swoje zadanie ze scenariuszy, to po co w ogóle potrzebować historii na tablicy scrumowej, może powinny one zostać pozostawione w backlogu. Niektórzy umieszczają scenariusze na odwrocie każdej historii. To trwa debata w moim zespole i chciałem zobaczyć, czy ktoś rozwiązał to inaczej. Twoje zdrowie!


title: Strona internetowa lub dowolny materiał do ćwiczenia algorytmów, który wyjaśnia rozwiązanie

text: Znam kilka projektów i stron internetowych do ćwiczenia algorytmów, takich jak TopCoder i Project Euler. Jednak po prostu dyktują rozwiązanie konkretnego problemu. Zastanawiam się, czy istnieje zasób, strona internetowa lub jakikolwiek materiał, który nie tylko podaje kod, ale również dokładnie wyjaśnia rozwiązanie?


title: Jaki jest status praw autorskich do standardowego kodu?

text: Sprawdzam zgodność z Open Source pod kątem kodu komercyjnego. Ostatnio znalazłem kilka przykładów, w których źródło komercyjne jest dopasowane do kilku projektów OSS. Dopasowania są bardzo podobne, ale nie dokładne, powiedzmy około 30 wierszy kodu z około 4 metodami, kilka nazw zmiennych się różni, kilka dodatkowych wierszy w kodzie komercyjnym, ... ale zasadniczo takie same. Nie sądzę, że jest to kod generowany automatycznie, ani kopiuj-pasta, ponieważ rzeczy takie jak komentarze będą się różnić. Wygląda to raczej jak schemat - twórcy twierdzą, że Grails (a te przykłady zawsze pojawiają się w Grails, ale może to być dowolny framework) wymaga określonego formatu skryptu dla operacji CRUD (a te przykłady są również głównie operacjami CRUD). Jeśli doda się standardowy styl kodu źródłowego, to sprowadza się to do schematu - nawet jeśli jest oryginalny, skończy się na bardzo podobnym wyglądzie w wielu bazach kodu. Co pozostawia mi 2 pytania: 1. Czy jest to rozsądna obrona przed oskarżeniami o naruszenie praw autorskich? 2. Jak można by sądzić, że codeX jest takim schematem, a codeY nim nie jest (jako niespecjalista od języka+frameworków)?


title: Dlaczego mamy przyrost przyrostka?

text: _Zastrzeżenie_ : Doskonale znam semantykę przyrostu przedrostka i przyrostka. Więc proszę nie wyjaśniaj mi, jak one działają. Czytając pytania dotyczące przepełnienia stosu, nie mogę nie zauważyć, że programiści są ciągle myleni przez operator przyrostu przyrostka. Z tego wynika następujące pytanie: czy istnieje przypadek użycia, w którym przyrost przyrostka zapewnia rzeczywistą korzyść pod względem jakości kodu? Pozwólcie, że wyjaśnię moje pytanie na przykładzie. Oto bardzo zwięzła implementacja `strcpy`: while (*dst++ = *src++); Ale to nie jest najbardziej samodokumentujący się kod w mojej książce (i generuje dwa irytujące ostrzeżenia na rozsądnych kompilatorach). Więc co jest nie tak z następującą alternatywą? while (*dst = *src) { ++src; ++dst; } Możemy wtedy pozbyć się mylącego przypisania z warunku i uzyskać kod całkowicie pozbawiony ostrzeżeń: while (*src != '\0') { *dst = *src; ++src; ++dst; } *dst = '\0'; (Tak, wiem, `src` i `dst` będą miały różne wartości końcowe w tych alternatywnych rozwiązaniach, ale ponieważ `strcpy` natychmiast powraca po pętli, nie ma to znaczenia w tym przypadku.) Wygląda na to, że celem przyrostu przyrostka jest aby kod był jak najbardziej zwięzły. Po prostu nie rozumiem, do czego powinniśmy dążyć. Jeśli pierwotnie chodziło o wydajność, czy jest to nadal aktualne?


title: automatyczne testy akceptacyjne / BDD i workflow do projektowania systemu

text: Niedawno zacząłem czytać książkę Specification by Example, która dotyczy zautomatyzowanych testów funkcjonalnych i BDD (z tego, co zrozumiałem do tej pory). Próbowałem użyć Concordion (.Net) i wydaje się to bardzo interesujące. Mam problemy z przechowywaniem jakiejkolwiek przydatnej dokumentacji dla dowolnego zaprojektowanego systemu, a to może pomóc. Mój problem polega na tym, jak można zasugerować, że przepływ pracy w projektowaniu kompletnego systemu jest? Pojawiają się pytania: * Czy idealnym rozwiązaniem jest próba zaprojektowania całego systemu na początku? * Czy należy zaprojektować bardzo wysoki poziom przeglądu systemu, a następnie tworzyć specyfikacje po jednej głównej funkcji na raz, tj. tworzyć szczegółowe specyfikacje -> opracowanie -> test -> przejście do następnej głównej funkcji? * Czy powinieneś tworzyć specyfikacje w stylu BDD dla **każdej** metody w systemie, nawet tak trywialnej jak niektóre `GetProductByReferenceCode`? Problem polega na tym, że w większości przypadków, kiedy zaczynasz programować, zaczynasz zdawać sobie sprawę, że coś musi być zrobione inaczej niż pierwotnie sądzono, lub pominięcia niezauważone podczas początkowego projektowania. Uważam, że czasami wstępny etap projektowania zajmuje dużo czasu, tylko po to, aby rzeczywisty projekt systemu był bardzo różny po uruchomieniu produktu. Mój obecny przepływ pracy przy projektowaniu systemu to: 1. Najpierw zacznij od interfejsu użytkownika, tworząc makiety każdego ekranu, z którym będą mieli do czynienia użytkownicy. Uważam, że jest to najbardziej wizualna metoda, jaką mogą zrozumieć użytkownicy biznesowi. 2. Zdefiniuj logikę bezpośrednio związaną z interfejsem użytkownika 3. Zdefiniuj dowolną logikę, która dzieje się _w tle_ , na przykład powiadomienia itp. Czy to ma sens? Czy można to poprawić?


title: Jak organizować pliki programistyczne w katalogi?

text: Czasami tworzy się prototyp eksploracyjny i zapomina się o strukturze katalogów... Jakie są dobre wskazówki dotyczące dzielenia plików programistycznych na (kilka poziomów) katalogów?


title: URI reprezentujący pojedynczy zasób z dwoma możliwymi identyfikatorami

text: Mam zasób, który można przedstawić na dwa sposoby: 1. Duży numer seryjny lub 2. Mały numer seryjny Czy bliższe przestrzeganie zasad REST jest następujące: * A: należy określić typ zapytania w ciągu zapytania (https:// acme.org/api/widget/aaa-111-aaa?type=big vs https://acme.org/api/widget/aaa?type=small) lub * B: ciąg zapytania określa typ jako parametry wyszukiwania (https://acme.org/api/widget?serial=aaa-111-aaa?type=big vs https://acme.org/api/widget?serial=aaa?type=small) lub * C: w URI (https://acme.org/api/widget/big/aaa-111-aaa vs https://acme.org/api/widget/small/aaa) lub * D: coś innego (np.: nagłówki)? Wydaje mi się, że posiadanie go w URI (opcja C) określa zupełnie inny zasób iw tym przypadku powinien reprezentować dokładnie ten sam zasób. Czy opcja A jest najlepszym sposobem na przedstawienie tego?


title: Konstrukcja warunkowa dla typu danych kleenean

text: Myślałem o hipotetycznym języku programowania z typem danych `kleenean`, który implementowałby trójwartościową logikę Kleene'a. Podsumowując, jest to rozszerzenie typu danych logicznych o trzy stałe „true”, „false” i „unknown”, gdzie „unknown” oznacza, że wartość jest albo „true” albo „false”, ale nie wiedzieć, które. Tabele prawdy dla typu kleenean są dobrze znane, a logika jest dość łatwa do zrozumienia. Zastanawiałem się jednak, jak zaprojektować konstrukcję warunkową, aby uwzględnić tę „nieznaną” wartość. Podstawowa konstrukcja warunkowa typu „jeśli-to-inaczej” jest prawie zawsze następująca: if (warunek logiczny) to warunek jest prawdziwy, zrób coś innego warunek jest fałszywy, zrób coś innego koniec Mam jednak problemy z zobaczeniem, co jest kleenean wyglądałaby konstrukcja. Jak możemy zinterpretować „nieznaną” stałą? Technicznie rzecz biorąc, może spełniać zarówno warunek „prawdziwy”, jak i „fałszywy”, ponieważ jest jednym z tych dwóch. Jednak nie możemy dopasować go do żadnego z nich, ponieważ może to być drugi, nie jest to tak naprawdę „prawda” ani „fałsz”. Czy istnieje znany sposób na zaimplementowanie takiej konstrukcji? **EDYTUJ:** Aby trochę sprecyzować, wolałbym coś innego niż sposób działania `boost::tribool` lub prosty `switch`, jakby był enum. Mile widziane są odpowiedzi na temat superpozycji kwantowej i semantyki.


title: Kiedy skrypt nie jest już skryptem?

text: Piszę wiele skryptów PowerShell dla organizacji, w której aktualnie pracuję. Ostatnio współtworzyłem narzędzie, które ostatecznie będzie miało wiele funkcji (poza jednym celem), będzie konfigurowalne i będzie miało zarówno CLI, jak i GUI, wszystko w PowerShell. Kiedy więc skrypt przestaje być skryptem i kiedy można go nazwać aplikacją lub programem. Czy to tylko w oku patrzącego?


title: Jak asertywny powinienem być w obsłudze wyjątków w obiektach?

text: Ostatnio dużo piszę w C# 4.0 i staram się pisać tak oszczędnie, jak to tylko możliwe. W związku z tym nie używałem tak często klasycznych bloków try/catch i instrukcji using using. Rozumiem ogólną funkcję wyrzucania śmieci i obsługi wyjątków w .Net - _Chcę zabezpieczyć swój kod przed kulami i efektywnie posługiwać się obiektami, ale staram się to osiągnąć przy minimalnej ilości 'dodatkowego kodu'_ (ponieważ wyłączony). Aby było jasne, rozumiem, że `using()` ma fundamentalne znaczenie dla porzucania zasobów na uchwyty i inny kod oraz jego związku z interfejsem `IDisposable`. Ale staram się lepiej zrozumieć, jak asertywny powinien być programista w obsłudze wyjątków obiektów. Czy istnieją kluczowe miejsca w kodzie, o których można powiedzieć, że bloki „try/catch” i/lub instrukcje „using” są bezdyskusyjnie konieczne? W kontekście wyrzucania elementów bezużytecznych i obsługi wyjątków, jakie powszechnie używane obiekty/scenariusze polecilibyście zwrócić szczególną uwagę? Czy powinieneś po prostu utworzyć blokadę catch dla każdego możliwego wyjątku, przez który może przejść obiekt? Jak głęboko powinny być zagnieżdżone? Czy są jakieś kroki, które mogę podjąć, aby proaktywnie zbierać śmieci (na przykład, aby zwalczyć przykład w komentarzach dotyczących oczekiwania na wywołanie `Dispose()`)?


title: Jakie są dobre klawiatury do programowania?

text: Programiści mają tendencję do pisania dużej ilości kodu, wbijania wielu skrótów i wielu innych rzeczy. Jakie klawiatury są dobre do programowania?


title: Jak odpowiadasz na „Opowiedz mi trochę o sobie”. pytanie w wywiadach?

text: Zostałem o to poproszony w kilku wywiadach. I zawsze mnie to zaskakuje. Moje doświadczenie zawodowe i akademickie jest już w CV, na które oczywiście przyjrzała się osoba przeprowadzająca wywiad. Co więcej mu/jej powiedzieć? Czy powinienem zacząć od moich hobby? Lubię pracować w ogrodzie lub oglądać zdjęcia NSFW na reddicie w wolnym czasie? Co i jak odpowiadasz na to konkretne pytanie? Masz na to przygotowaną odpowiedź? Czy się mylę, jeśli uważam, że to pytanie jest trochę głupie? **AKTUALIZACJA** Na to pytanie pojawiło się wiele świetnych odpowiedzi. Jestem w zalewie, którą wybrać jako „poprawną” odpowiedź, ponieważ większość z nich jest bardzo wnikliwa. Znalazłem świetne pismo na ten temat. To trochę szalone jak na mój gust, ale ciekawe: jak się przedstawić… mam na myśli praktycznie


title: Licencjonowanie biblioteki JavaScript

text: Rozwijam darmową bibliotekę JavaScript o otwartym kodzie źródłowym (duh) i zastanawiam się, jak ją licencjonować. Rozważałem GNU GPL, ale słyszałem, że muszę rozpowszechniać licencję wraz z oprogramowaniem i nie jestem już pewien. Chciałbym, aby biblioteka była dostępna podobnie jak jQuery: w darmowym skrypcie do pobrania, najlepiej w oryginalnej lub skróconej formie. Czy mylę się co do warunków licencji GNU GPL? jQuery jest licencjonowane podwójnie na licencji GNU GPL lub MIT. W jaki sposób GPL odnosi się do takich pojedynczych plików skryptowych? Czy mogę licencjonować swoją bibliotekę za pomocą tylko kilku zdań w pliku skryptu? Czy istnieje inna licencja, która lepiej odpowiada moim potrzebom? To, co byłoby miłe, to licencja, która pozwala na umieszczenie adresu URL w źródle, aby ludzie mogli czytać, jeśli chcą. Nie wiem, czy wielu to robi, chyba że się mylę. Generalnie zamierzam wydać bibliotekę jako wolne oprogramowanie, jak określa GPL, **ale nie chcę zmuszać licencjobiorców do pobrania pełnej licencji, chyba że chcą ją przeczytać.**