title: Zepsute przez Pythona pod względem wygody i produktywności, zepsute przez C++ pod względem szybkości. Teraz niezadowolony z obu

text: Obecnie zmagam się z wyborem sposobu postępowania jako programista. Programowałem głównie gry i chciałbym kontynuować. I przez około 5 lat po prostu używałem C++ i OpenGL, więc spędziłem dużo czasu na infrastrukturze, dziwnych błędach i głównie na uruchamianiu podstawowych rzeczy. Mój przyjaciel polecił wtedy Pythona i po tym, jak początkowo byłem zniechęcony tym, że nie był tak wyraźny i formalny, jak byłem przyzwyczajony, byłem zszokowany tym, o ile bardziej mogę być produktywny i jak duży postęp mogę zrobić w bardzo małej ilości czas. Więc obecnie pracuję nad strzelanką dla wielu graczy i wielokrotnie zmagam się z tym, że python nie jest tak szybki, jak mógłbym chcieć. Wiem, że muszę teraz podchodzić do pisania wydajnego kodu w pythonie zupełnie inaczej, ale nawet z niewielką pomocą znajomych, którzy są bardziej doświadczeni w pythonie, czasami dzieje się za dużo (a ekstrapolując to, wiem, że skończę utknął). Jest wiele rzeczy, które naprawdę lubię w moim "języku ojczystym" C++, ale po tym, jak wiem, ile godzin mogę marnować, naprawdę nie chcę wracać. Jaki język możesz polecić, który oferuje wysoką produktywność, jest bezpieczny w pamięci (naprawdę tego nienawidziłem) i jest tak wydajny, jak tylko mogę, ale nadal jest wystarczająco dojrzały, aby można go było używać w poważnych projektach (związanych z grami) i może nawet na tyle dojrzali, że ludzie spędzili już trochę czasu na OpenGL-Bindings lub różnych bibliotekach dla Sound i podobnych (alternatywnie łatwy dostęp do bibliotek współdzielonych napisanych w C). Łatwa obsługa wielu platform to duży plus! Więc proszę nie .NET. Czy to w ogóle możliwe?


title: Metody czyszczenia kodu i/lub narzędzia pokrycia kodu

text: Mam aplikację w pracy, nad którą zaczęłam pracować około 7 lat temu. To było moje pierwsze zaangażowanie w aplikacje internetowe ASP.NET, a wychodząc z tła Win32 miałem trudności z dostosowaniem się. Przez cały ten czas zarówno projekt jak i ja „dojrzewaliśmy” i teraz większość jego części jest dobrze zdefiniowana, właściwie ustrukturyzowana i czytelna. Jest jednak w tym spora część, czyli „stare rupiecie”. Mam tu na myśli stary, przestarzały kod, który nie działał dobrze lub miał nieodpowiednią strukturę, który został zastąpiony, ale pozostawiony w plikach źródłowych zamiast zostać usunięty. Muszę tutaj zauważyć, że nie byłem jedynym programistą, ale większość kodowałem przez cały czas. To, co chcę zrobić, to zawsze, gdy mam wolny czas w pracy, aby usunąć stary przestarzały i nieużywany kod. Czy są jakieś techniki/metodologie, których mogę użyć/podążać, aby zrobić to bardziej efektywnie? Może jakieś narzędzia? **EDYTUJ: (wyjaśnienie na podstawie opinii)** Kod, o którym mówię, nie jest nigdzie używany i nie jest wywoływany z dowolnego miejsca w projekcie. Potrzebuję sposobu, aby dowiedzieć się, gdzie znajduje się kod, ponieważ mówimy o dużej bazie kodu. Pomogłoby więc coś w zakresie narzędzi do pokrywania kodu. Jakieś sugestie dotyczące projektów asp.net? (szczególny przypadek dotyczy formularza projektu witryny sieci Web)


title: Jaka struktura danych jest odpowiednia do implementacji dynamicznego kodowania i dekodowania Huffmana na fragmencie tekstu?

text: Jakiś pseudo kod lub zasoby będą mile widziane. Zastanawiałem się, czy zaimplementować go w postaci BST przechowywanego w tablicy. Jednak nie wszystkie operacje można łatwo wykonać przy użyciu tego podejścia. Jestem otwarty na wykorzystanie STL również w tym celu. Moim głównym celem jest wdrożenie go w możliwie najprostszy sposób.


title: Jak wykorzystać testy jednostkowe jako źródło informacji?

text: Mój kolega był kiedyś na seminarium o zwinnym rozwoju, gdzie usłyszał, że można wykorzystać testy jednostkowe jako dokumentację techniczną. Coś jak użycie testów jednostkowych jako przykładu użycia klasy. Szybkie wyszukiwanie w Google dostarczyło _TDD i Dokumentację_ , co udowadnia, że powinno to być możliwe. Ale patrząc na nasz kod, widzę, że oczywiście nie udało nam się zaimplementować testów jednostkowych w taki sposób. Moim zdaniem testy jednostkowe służą do testowania kodu jako minimalnej jednostki, nawet za pomocą atrap i fałszywych klas i funkcji. Tak więc pytania są następujące: * Czy zadaniem testów funkcjonalnych nie jest pokazanie, w jaki sposób klasa (lub zbiór klas) powinna być używana? * Jeśli możliwe jest wykorzystanie testów jednostkowych jako dokumentacji technicznej, czy istnieją jakieś wytyczne, jak zaimplementować takie testy jednostkowe?


title: Usługa sieciowa do zbierania danych z lokalnych serwerów co godzinę

text: Próbuję znaleźć sposób na zbieranie danych z różnych serwerów na całym świecie. Oto szczegóły: Na serwerach jest tylko jeden skrypt PowerShell, który szyfruje dane (prosty plik csv) i wysyła za pomocą preferowanej metody (może to być HTTP/HTTPS Post) Nie ma więcej kontroli na tych serwerach. Nie mogę zainstalować żadnej usługi, procesu itp. Po prostu mogę skonfigurować skrypt do wykonywania co godzinę. Ten skrypt będzie również miał zaszyfrowaną nazwę użytkownika/hasło/klucz licencyjny dla każdego serwera. Skrypt skompresuje dane i wyśle do mnie z tymi informacjami. Potrzebuję więc usługi (nie jestem pewien, czy Web Service jest właściwym rozwiązaniem) w chmurze, która pomoże mi: Otrzymać dane, które są wysyłane z serwerów za pomocą metody. Uwierzytelni żądanie rozpoznania nadawcy za pomocą klucza licencyjnego/nazwy użytkownika/hasła i co najważniejsze, przekieruje/wyśle ten plik cab do mojego serwera SQL w chmurze (Azure). Powinien również oddzielić dane zgodnie z informacjami o kliencie zawartymi w kluczu licencyjnym. Tak więc wszystkie dane dla każdego klienta będą przechowywane w dedykowanej bazie danych/tabeli na moim SQL. Wszystkie powyższe procesy powinny zostać zakończone automatycznie. Nie ma mowy o ręcznych krokach. Pytanie: Usługa sieciowa (SOAP lub Restful) jest właściwym rozwiązaniem?


title: Jaka jest przyjęta praktyka zarządzania zasobami ciągów w javie?

text: W Androidzie końcowe ciągi są przechowywane w pliku `strings.xml`, co ułatwia aktualizację tekstu, ponowne użycie ciągów i tłumaczenie aplikacji na inne ustawienia regionalne — ponieważ wszystko jest w jednym miejscu. Jednak we wszystkich przykładach aplikacji desktopowych, które widziałem, wszystkie ciągi zostały zakodowane na sztywno w każdej klasie. Czy zakodowanie ciągów na stałe w plikach jest standardową praktyką w przypadku aplikacji komputerowych? A może jest na to lepszy sposób?


title: Zalecana architektura interaktywnego widżetu tabeli z wieloma zachowaniami w JavaScript / jQuery

text: Przypadek użycia: Dla interfejsu administracyjnego potrzebuję interaktywnego widżetu tabeli z kilkoma zachowaniami: * Zwiń / rozwiń (tak, oznacza to, że wiersze są hierarchią) * Aktualizacja danych w komórce podrzędnej na podstawie komórki nadrzędnej. * Ukrywanie lub ujawnianie rzędu lub całego poddrzewa na podstawie aktualizacji wartości. * Co najmniej dwa elementy formularza w każdym rzędzie, które mogą od siebie zależeć. Np. pole wyboru, które będzie bałaganić z wartością pola tekstowego w tym samym wierszu. * Manipulacja DOM na nowo utworzonych wierszach. Np. pole wyboru może zostać przekształcone w bardziej wizualny rodzaj widżetu. Lub W innym przypadku użycia mam następujące dodatkowe zachowania: * Dodawanie i usuwanie wierszy, ręcznie lub automatycznie. * Przeciągnij i upuść wiersze. (chyba nie w połączeniu z zwinięcie/rozwinięcie, ale kto wie) Problem: * Idealnie chcemy, aby każde z tych zachowań było zaimplementowane jako osobny i niezależny moduł/wtyczka. ALE * Jeśli jedno zachowanie zmienia DOM, to inne zachowania muszą o tym wiedzieć. Np. jeśli wstawisz wiersz, zwiń/rozwiń musi wiedzieć, aby zdecydować, czy nowy wiersz ma być pokazany, czy ukryty. A nowo dodany wiersz wymaga nowych detektorów zdarzeń z różnych innych zachowań. * Mogą wystąpić zachowania wywołane stanem innych zachowań. Np. każdy wiersz może zawierać pole tekstowe iw zależności od wartości wiersz należy przesunąć w górę lub w dół (przeciągnij/upuść). Pytanie: kilka razy miałem do czynienia z takim problemem i generalnie udało mi się go uruchomić. Jednak zawsze nienawidziłem architektury, która z tego wyszła. To, co chciałbym, to podejście, które pozwala tworzyć różne zachowania jako niezależne moduły, a następnie jakoś je łączyć. Kilka bardziej szczegółowych pytań: * Gdzie każde z zachowań powinno przechowywać informacje o stanie * A co z informacjami o stanie dla określonego wiersza tabeli? Czy powinna być przechowywana jako zmienna w elemencie DOM? (np. `$('tr')[5].isExpanded = true`) czy raczej w kontenerze danych w samym module? * Skąd moduły mogą wiedzieć o aktualizacjach DOM? * Jak moduły powinny się ze sobą komunikować? * Jak powinien być skonstruowany kod każdego modułu? Jaki rodzaj API powinien udostępniać? * Jak obsłużyć wiele wystąpień tego rodzaju widżetu na jednej stronie? (W tym przypadku instancje globalne nie działają) Przykład: https://drupal.org/project/multicrud (przepraszam, jedyne co mam w bankomacie to moduły Drupal)


title: Kod wygranej przegranej, który nie czyni rekordu 1-0 lepszym niż ktoś taki jak 20-3

text: ok, szukam tylko przykładowego kodu wygranej przegranej. To może być dla dowolnego języka, po prostu chcesz mieć zarys. Dość nowy w programowaniu, więc wymyśl to dla mnie :) Mogę to zrobić (wygrana-przegrana/całkowita wygrana przegrana). Zgaduję, że jest to dobry standardowy stosunek wygranych do przegranych, ale nie chcę, aby nowa osoba, która ma 1-0, była wyżej w rankingu niż osoba, która ma 20-3. Każda pomoc jest doceniana i dziękuję. EDIT: Style szachowe są trochę więcej niż potrzebne. Po prostu chcesz mieć system rankingowy z wygraną/przegraną. więc nie można powiedzieć, że 20-3 jest teraz na szczycie w lidze. jak dotąd ma, powiedzmy, 23 tygodnie. jeśli jeden facet wejdzie i wygra pierwszy mecz przeciwko komukolwiek, nie chcę, żeby zajął pierwsze miejsce nad ludźmi, którzy są tam dłużej i mają świetne wyniki. Odpowiadając na ampt... może będzie najlepszy w lidze, ale nie chcę go tam od razu, bo miał jeden dobry mecz. Nie jestem pewien, czy to już wyjaśnia. Tak naprawdę nie podążałem za Doktorkiem przez całą drogę. Wygląda na to, że jest utrudniony na liście do 11. meczu. Nie jestem pewien, czy to jest to, o czym tam mówisz. Jeszcze raz dziękuję za wszystkie odpowiedzi.


title: Tworzenie szybkiego wyszukiwania dialogów w czasie rzeczywistym dla scenariuszy telewizyjnych

text: Mamy bazę scenariuszy telewizyjnych i chcielibyśmy ją przeszukać, uzyskując wyniki w trakcie pisania. Często zapamiętujemy słowa lub fragmenty dialogów, ale nie pamiętamy dokładnie, co zostało powiedziane lub w jakim odcinku zostało powiedziane: „Jaki był odcinek, w którym George idzie wbrew swoim instynktom i podchodzi do dziewczyny w restauracji i mówi jej, że jest bezrobotny ?" Za pomocą tego narzędzia wpiszesz „George bezrobotny”, a wynik z kontekstem (i prawdopodobnie innymi trafieniami) wyskoczy: EPIZOD: „The Opposite” George : Przepraszam, nie mogłem nie zauważyć, że szukałeś w moim kierunek. Victoria : Och, tak byłam, właśnie zamówiłeś dokładnie ten sam lunch co ja. (G bierze głęboki oddech) George: Nazywam się George. Jestem bezrobotna i mieszkam z rodzicami. Wiktoria : Jestem Wiktoria. Cześć. Moje pytanie dotyczy najlepszego sposobu zaprojektowania struktury danych w celu zaimplementowania tego rodzaju wyszukiwania? Mój dotychczasowy pomysł polega na przechowywaniu tabeli wyszukiwania w magazynie danych w pamięci, takim jak redis. Aby utworzyć tabelę, najpierw dałbym każdemu skryptowi (odcinkowi) identyfikator, a następnie przeanalizowałem skrypt na wiersze w oparciu o osobę mówiącą. Tak więc określony fragment dialogu może być zlokalizowany z identyfikatorem odcinka połączonym z identyfikatorem linii. Następnie przetworzyłbym każdą linię, tworząc strukturę danych zindeksowaną przez wszystkie słowa pojawiające się w dowolnym skrypcie i przechowując lokalizację odcinka/linii każdego wystąpienia, w którym słowo zostało użyte. apple -> [ { scriptid: 9, lines: [11,99] }, { scriptid: 21, lines: [103,211,214] } ] orange -> [ { scriptid: 2, lines: [101] } ] Moglibyśmy to sparować struktura danych z prostym algorytmem punktacji, dzięki czemu gdy użytkownik szukał wielu słów, pokazywaliśmy tylko dopasowania, w których oba słowa występują w tym samym skrypcie, i nadaliśmy wyższą rangę lokalizacjom, w których słowa znajdują się bliżej siebie. Istnieją inne szczegóły, które najlepiej byłoby uwzględnić, takie jak dopasowanie liczby mnogiej i błędnie napisane słowa. Czy to rozsądne podejście? Jak można to ulepszyć? Jakie inne szczegóły powinienem wziąć pod uwagę?


title: Czy odszyfrowanie skompresowanych plików w iPhonie stanowi problem podczas przesyłania?

text: Mam zamiar złożyć aplikację na iPhone'a. Pobieram zaszyfrowane pliki Zip ze zdalnego serwera i oczywiście odszyfruję je, aby wyświetlić je użytkownikowi. Czy to oznacza, że muszę odpowiedzieć TAK dla Czy Twoja aplikacja ma szyfrowanie? kiedy przesyłam mój plik binarny?


title: Jak sprawić, by dekoratory były tak potężne jak makra?

text: Szybkie tło: Projektuję język Pythona, który chcę być tak potężny jak Lisp, a jednocześnie łatwy w użyciu. A przez „potężny” mam na myśli „elastyczny i wyrazisty”. Właśnie zapoznałem się z dekoratorami funkcji Pythona i podobają mi się. Znalazłem to pytanie, które sugeruje, że dekoratory _nie_ są tak potężne jak makra Lisp. Trzecia odpowiedź na to pytanie mówi, że powodem, dla którego nie są, jest to, że mogą operować tylko na funkcjach. Ale co by było, gdyby można było użyć dekoratorów do dowolnych wyrażeń? (W moim języku wyrażenia są pierwszorzędne, podobnie jak funkcje i wszystko inne, więc zrobienie tego byłoby całkiem naturalne.) Czy to uczyniłoby dekoratory tak potężnymi jak makra Lispa? A może musiałbym użyć reguł składni, takich jak Racket i Honu, lub innej techniki? **EDYTUJ** Poproszono mnie o podanie przykładu konstrukcji składniowej. Dla "dekoratora wyrażeń" byłby to po prostu dekorator wyrażenia (gdzie "$(...)" tworzy obiekt wyrażenia): @Decorator("Params") $(if (true): printf("Was true") else: printf("Nie było prawdziwe")) Ponadto, jeśli _ma_ potrzebować użyć reguł składni, jak wspomniano powyżej, użyłaby składni pasującej do wzorca: # Dopasuj wyrażenie logiczne, przecinek i łańcuch . macro attach(expr:bool lit string) { e , s }: if (!e): error s else: printf("Wszystko dobrze") Powyższe pasowałoby do tego: attach i == 0, "i powinno być 0 " To szkic, ale powinien dać ci pomysł.


title: Opóźniona inicjalizacja a wstępne przetwarzanie w aplikacji iOS opartej na obrazach

text: Tworzę aplikację na iOS, która zawiera galerię muzeum: użytkownik może przeglądać eksponaty, a następnie wybierać informacje o nich itp. Na ekranie wystawy mam dwa widoki ScrollView, które są różne, ale są zasilane ze wspólnego źródła danych. Każdy widok to zestaw obrazów. Dwa górne szare kwadraty to podglądy, a dolny (gdzie widać zdjęcie) to widok główny. Wszystkie scrollviews są ładowane leniwie. Pytanie brzmi, czy muszę przekształcić obrazy podglądu do odpowiedniego rozmiaru w ruchu, czy w jakiś sposób wstępnie je przetworzyć, aby przyspieszyć ładowanie i użyć wstępnie przetworzonych obrazów o zmienionym rozmiarze w podglądach? Zaletą leniwej inicjalizacji jest tutaj mniejsze marnowanie zasobów, ale wolniejsze ładowanie w porównaniu z gotowymi obrazami. Z drugiej strony wstępnie przetworzone obrazy marnują pamięć i sieć (obrazy zostaną załadowane tylko raz, a następnie będą przechowywane lokalnie). Co byłoby lepsze z punktu widzenia wydajności, biorąc pod uwagę, że aplikacja musi działać płynnie do iPhone'a 4 (najstarszy z iOS 7)? Czy to dobry pomysł, aby połączyć dwie metody i obrazy ładowane w pamięci podręcznej?


title: jakiej metody przechowywania danych powinienem użyć?

text: Obecnie piszę program i między innymi muszę przechowywać dane. Program nasłuchuje, jak dwa komputery rozmawiają ze sobą w znanym protokole (program wie, jaki to protokół, użytkownik podaje programowi strukturę protokołu), jeśli pakiet, który dotarł do programu, ma niewidoczną wartość w jednym lub więcej pola dodają go do bazy danych. Nie jestem pewien, jaką metodę przechowywania danych (np. serwer sql, xml itp.) wybrać, ponieważ nie wiem, czy dane przechowywane w bazie danych będą duże, czy nie, zależy to od konwersacji komputera Również będę musiał być w stanie bez problemu pobrać wszystkie dane z bazy danych i może być konieczne wyodrębnienie niektórych danych, a nie innych (na przykład wszystkie pakiety z wartością 24 w polu x) Za pomocą protokołu nie mogę po prostu podać jednego, ponieważ użytkownik programu określa, w jakim protokole odbywa się konwersacja. Przez konwersację rozumiem, że dwa komputery rozmawiają ze sobą, nie ma znaczenia, czy użytkownik obsługuje komputery, czy nie. Maksymalna liczba wpisów w bazie danych to liczba odmian, jakie może zawierać pakiet w określonym protokole. Mam na myśli, że jeśli protokół ma długość 8 bajtów, maksymalna liczba wpisów będzie wynosić 2^64, ale jeśli nagłówek jest dłuższy, liczba rośnie, ale liczba wpisów może być mniejsza w zależności od konwersacji i jest poza moją kontrolą. Program będzie przechowywał tylko unikalne nagłówki, mam na myśli, że te same kombinacje wartości w nagłówku nie będą dwa razy w DB, program przechowuje nagłówek, jeśli jest unikalny i nie jest przechowywany w DB, o którym myślałem, że użyje serwer sql, taki jak mysql, ale nie jestem pewien, jaka metoda przechowywania danych byłaby najbardziej odpowiednia w tej sytuacji?


title: Znajdź wspólnego przodka

text: ![tutaj podaj opis obrazka](http://i.stack.imgur.com/GtimL.jpg) Biorąc pod uwagę liczbę X liści (liście obrączkowane na obrazku) w niezrównoważonym drzewie o głębokości około 100-1000 i całkowitej liczbie węzłów około 15 000 000. Szukam pierwszego wspólnego przodka tych liści. Jaki jest najskuteczniejszy sposób, aby to osiągnąć?


title: Jak to się dzieje, że komitet normalizacyjny C++ wprowadza słowo kluczowe, takie jak nullptr, i uchodzi mu to na sucho?

text: To musiało złamać wiele podstaw kodu ludzi, prawda? Każdy, kto miał zmienną o nazwie „nullptr” (która moim zdaniem byłaby dość powszechna), musi znaleźć „nullptr” i zastąpić ją „coś_innego”, zanim będzie mógł skompilować z c++11. Czy komisja normalizacyjna zakłada, że ludzie zrobią tyle „dostosowywania”?


title: Czy Hadoop może być stabilny produkcyjnie na platformie Windows?

text: Czy ktoś używa **Hadoop** w **Windows** (Win32 lub Win64) w **produkcji** do poważnej pracy? * Jeśli wypróbowałeś i odrzuciłeś tę kombinację, czy możesz podać swoje (górne) powody? * Jeśli udało Ci się go ustabilizować, czy możesz odnieść wrażenie, ile to zajęło? * * * **Tło:** Moja firma to 100% Windows. Niewiele mogę z tym zrobić, poza użyciem narzędzi, które otrzymałem. Zgodnie z dokumentacją Hadoop **tylko** platformy typu UNIX są zalecane dla środowisk produkcyjnych. Środowiska Windows są obecnie uważane za eksperymentalne. Wypróbowałem kilka podstawowych ustawień Hadoop na win32 i wydaje się, że jest wiele niedomówień i zaczynam podejrzewać, że może to być głupia linia badań. Rozumiem, że skrypty Hadoop zależą w pewnym stopniu od funkcji UNIX, takich jak Bash, Rsync, SSH, które może dostarczyć Cygwin - jednak nie planuję zostać pionierem. Chciałbym uruchomić coś, co jest poniekąd standardowe. Chcę mieć przyzwoitą szansę na uzyskanie wsparcia społeczności, jeśli jest coś, czego sam nie potrafię rozwiązać. Jestem gotów zainwestować trochę czasu, aby to zadziałało w systemach firmy, ale chciałbym uzyskać pewność od bardziej pionierskich typów, którzy byli tam wcześniej. Ewentualnie chciałbym otrzymać dobrą radę od kogoś, kto wie, że nie warto się tym zajmować!


title: Kiedy i jak korzystać z zaawansowanych funkcji git?

text: Nie jestem nowym użytkownikiem git, ale nigdy nie korzystałem z jego zaawansowanych funkcji, takich jak tagi, gałęzie, łączenie i inne. Nie użyłem nawet równoważnych funkcji z innego oprogramowania VCS. Moje projekty były tak proste, że potrzebowałem tylko commitów i czasami diffów. Teraz planuję open-source'owy projekt mojego serwera, który prawdopodobnie będzie znacznie większy i prawdopodobnie musi być lepiej zorganizowany. Git prawdopodobnie może mi w tym pomóc, ale jak? Metody rozwoju to scrum i TDD, jeśli to ma znaczenie.


title: Pytanie dotyczące projektu: Czy to dobry przypadek dla wzorca proxy, czy „przesunięte”?

text: Pracując nad poważnym ulepszeniem starszego kodu, zmagałem się ze sobą, czy jest to dobry przypadek do użycia wzorca Proxy, a dokładniej, czy jest to dobry przypadek do użycia Java Dynamic Proxy API. **BACKGROUND** Mamy klasę "FIXConnection" używaną do wysyłania zamówień do miejsca docelowego. Aplikacja obsługuje od 1 do n FIXConnections do wysłania (konkretny obiekt jest wybierany na podstawie tego, co użytkownik określił w zamówieniu). Normalnie zlecenie zostanie wysłane bezpośrednio na rynek. Ulepszenie polega na sprawdzeniu, czy zlecenie może zostać zrealizowane przez inne zlecenia już wysłane na rynek przed wysłaniem, a jeśli można je zrealizować, wykonać zupełnie inną logikę (tzn. nie wysyłać). Jeśli nie, deleguje do bieżącej logiki. Ta funkcja będzie używana tylko przez jednego klienta, więc jest włączana/wyłączana dynamicznie (lub przez ustawienie konfiguracji). Wydaje się, że jest to dobre zastosowanie wzorca Proxy/Dynamic Proxy, ponieważ pozwoliłoby to zaprojektować blok kodu do przechwytywania żądań do istniejącej metody FIXConnection.send (a także jej metody processResponse), tylko w przypadku, gdy funkcja jest włączony. Proxy może wykonać nową logikę (jeśli jest to uzasadnione) lub wysłać do istniejącej logiki. **ZALETY I MINUSY** _PRO_ * Korzystanie z Proxy pozwala uniknąć problemów z hierarchią klas (czasami tworzymy podklasę tej klasy FIXConnection). Jeśli poradziliśmy sobie z tym przez podklasę, inne dzieci mogą wymagać przeniesienia do tego pod tym jako rodzic. * Nie musimy aktualizować istniejącej klasy najwyższego poziomu żadną flagą, aby sprawdzić, czy ta funkcja jest włączona i warunkowo wykonać kod. (tj. nie twórz kodu dla jednego specjalnego przypadku, który byłby teraz uderzany we wszystkich przypadkach). * Pojedynczy punkt kontroli _CON_ * Istniejąca klasa ujawnia zmienne publiczne, wszystkie musiałyby zostać przekształcone w metody pobierające/ustawiające i musiałyby wyodrębnić interfejs (aby można było użyć Dynamic Proxy). tj. tętnienie w innych klasach. * Powiązanie między proxy a starszą metodą może być trochę tandetne (np. method.getName().equals("send") skomplikowane?Ogólnie rzecz biorąc, staram się zasubskrybować robienie „najprostszej rzeczy, która może działać”.To nie do końca tak się wydaje.Chciałbym usłyszeć czyjeś przemyślenia na temat tego, jak mogą poradzić sobie z tym pytaniem projektowym.


title: Co tak naprawdę się dzieje, gdy zmieniamy kodowanie w ciągu?

text: http://php.net/manual/en/function.mb-convert-encoding.php Powiedz, że tak: $encoded = mb_convert_encoding ($original); To wygląda na dość proste. Wyobrażam sobie, że następujący `$original` ma wskaźnik na sposób, w jaki łańcuch jest faktycznie zakodowany. Coś w rodzaju `char *`. A potem są takie rzeczy, jak to, co właściwie zakodowała postać. Prawdopodobnie jest to coś w rodzaju UTF-64, gdzie każdy glif jest rzeczywiście postacią. Teraz kiedy robimy $encoded = mb_convert_encoding ($original); kilka rzeczy może się wydarzyć: * oryginalna wewnętrzna reprezentacja nie zmienia się, ale jest PONOWNIE INTERPRETOWANA tak, że kod, który się wyświetla, różni się * oryginalny ciąg, który reprezentuje, nie zmienia się, jednak zmienia się KODOWANIE. Który jest poprawny?


title: Czy TSQL stanie się bezużyteczny z powodu nowych ORM-ów?

text: Wprowadzając LINQ do SQL, odkryłem, że ja i moi współpracownicy programiści .NET stopniowo przechodzili z TSQL do C#, aby tworzyć zapytania w bazie danych. Entity Framework sprawił, że ta zmiana jest prawie trwała. Teraz już prawie 2 lata używam LINQ to SQL i LINQ to Entities i nie używam tak często TSQL. Wczoraj kolega napotkał problem (musiał stworzyć SP) i pojechaliśmy mu pomóc. Ale wszyscy stwierdziliśmy, że nasza wiedza na temat TSQL na pewno się zmniejszyła, a proste SP, które wydawało się nam trywialne 2 lub 3 lata temu, było wyzwaniem do rozwiązania wczoraj. Tak więc przyszło mi do głowy, że choć życie TSQL jest związane z SQL Server i logicznie rzecz biorąc, dopóki SQL Server żyje i nie zmienia swojego języka SQL, TSQL też będzie żył, praktycznie może umrzeć i wkrótce niewiele osób może się o tym dowiedzieć. to. Czy mam rację? Czy istnienie ORM-ów, takich jak Entity Framework, zagraża życiu i użyteczności TSQL?


title: Jak przekonujecie zarząd do „zainwestowania” w testy jednostkowe?

text: W jaki sposób przekonałeś swojego menedżera, aby pozwolił Ci na testy jednostkowe? Przez „używanie” mam na myśli możliwość rozwoju, zaewidencjonowania do kontroli źródła i utrzymania testów jednostkowych w czasie itp. Typowe zastrzeżenia kierownictwa to: 1. Klient nie zapłacił za testy jednostkowe 2. Projekt nie daj czas na testy jednostkowe 3. Dług techniczny? Jaki dług techniczny? Znasz inne zastrzeżenia? Jakie były twoje odpowiedzi? Z góry dziękuję!


title: Jak podkreślić znaczenie testów jednostkowych dla mojego przełożonego?

text: Niedawno rozpocząłem nową pracę i otrzymałem zadanie ukończenia funkcji, której inny programista nie ukończył przed odejściem z firmy. Istniejące testy są nieaktualne (tj. bezużyteczne)... wszędzie dług techniczny. Myślę, że bardzo złym pomysłem byłoby zaimplementowanie funkcji bez testów, kilka razy mu to przekazywałem, a on ciągle powtarza, że dokończymy tę funkcję i wtedy będę mógł robić testy. Ale poprzedni programista nie zabrał się do aktualizacji testów, więc wydaje się, że mój menedżer po prostu to mówi, ale nie ma na myśli tego i wciąż naciska na więcej funkcji. Ta najnowsza funkcja jest bardzo duża i myślę, że ukończenie jej bez wcześniejszego pisania testów dla całej aplikacji byłoby naprawdę złym pomysłem. Rozumiem, że mój menedżer ma swoje własne terminy/presje itp., ale ta funkcja musi być wykonana poprawnie, w przeciwnym razie może wrócić i prześladować nas obu. Więc jak mam mu to przekazać w sposób, który pozwoli zrozumieć, jak ważna jest ta kwestia? Powinienem również wspomnieć, że jestem jedynym programistą, a menedżer nie jest techniczny.


title: Warstwy i warstwy SOAP

text: Projektuję back-end do usługi sieciowej SOAP i mam pytanie o to, jak myślę o tym. Mam zamiar przejść do prostego projektu warstwowego, który składa się z 3 oddzielnych warstw. Warstwa 1 -> Warstwa 2 -> Warstwa 3 **Warstwa 1 :** Zaimplementuje interfejs szkieletu SOAP, więc będzie to główny punkt wejścia do mojej aplikacji. Ta warstwa pobierze dane z żądania SOAP i przekaże je do warstwy logiki biznesowej jako obiekt biznesowy. Odzyska obiekty biznesowe z warstwy logiki biznesowej, za pomocą której wypełni odpowiedź SOAP. **Warstwa 2 :** Warstwa logiki biznesowej, która implementuje logikę biznesową usługi internetowej. Zostaną przekazane dane z warstwy 1 i będą współdziałać z warstwą 3, warstwą DAO. **Warstwa 3 :** Warstwa DAO, która wykona operacje CRUD na mojej bazie danych. Przy wypełnianiu obiektów odpowiedzi SOAP w moim kodzie implementacja może być nieco nieuporządkowana w warstwie 1, więc wymyśliłem następujące 3 opcje. Opcja 1 - Wystarczą trzy warstwy, więcej warstw byłoby przesadą. Obiekty SOAP zawsze będą wyglądać niechlujnie, po prostu przezwycięż to. Opcja 2 — Utworzenie dodatkowej warstwy między warstwami 1 i 2. Warstwa ta pobierałaby dane z żądania SOAP, wypełniała obiekt biznesowy, który następnie byłaby przekazywana do warstwy logiki biznesowej. Dzięki temu metody w warstwie 1 byłyby schludne i uporządkowane. Wyglądałoby to mniej więcej tak: Warstwa 1 -> Żądanie SOAP -> Warstwa 1.A -> Obiekt biznesowy -> Warstwa 2 Warstwa 1 <- Odpowiedź SOAP <- Warstwa 1.A <- Obiekt biznesowy <- Warstwa 2 Opcja 3 - Nie twórz więcej warstw. Wystarczy utworzyć obiekt narzędziowy za pomocą metody, która przyjmuje żądanie SOAP i zwraca obiekt biznesowy. Mógłbym następnie przekazać obiekt biznesowy do warstwy 2. Ten sam obiekt użytkowy mógłby być następnie użyty w warstwie 2 do przekazania odpowiedzi SOAP z powrotem do warstwy 1. A może to podejście zaciera granice i sprawia, że mój projekt jest mniej modułowy?


title: projekt z 2 typami interfejsów wykonujących różne zadania, czy powinny używać tej samej BLL i DAL?

text: pracuję nad projektem, który ma dwa interfejsy (web i desktop), nie wykonują tych samych zadań, ale używają tej samej LOGIKI i DAL, część webowa wykorzystuje 100% LOGIKI i DAL, podczas gdy pulpit musi tylko znać około 20% BLL i DAL. czy uważasz, że dobrym pomysłem jest, aby pulpit używał tej samej LOGIKI LOGISTYCZNEJ i DAL, co w sieci, co w konsekwencji doprowadzi do rozpowszechniania tych LOGIKI LOGICZNEJ i DAL z aplikacją komputerową? czy uważasz, że lepiej tworzyć nowe projekty BLL i DAL tylko po to, aby służyć aplikacji komputerowej? ale w tym przypadku wpadnę w pułapkę utrzymywania dwóch kopii tego samego kodu!


title: Czy mądrze jest, aby programista przechodził do zarządzania?

text: Wiele razy programista sugerował, że zostanę liderem zespołu, ponieważ jestem zmotywowany, ale w trakcie mojej kariery w branży IT widziałem tak wielu ludzi, którzy są świetni w programowaniu, przechodzą do zarządzania i są nieszczęśliwi. Widziałem też wielu menedżerów, którzy wracali do programowania, mówiąc: „Jestem osobą techniczną, lubię problemy techniczne”. Jeśli jest to tak powszechne, dlaczego programiści czują się zmuszeni do opuszczenia domeny technicznej i przejścia do zarządzania? Jasne, będziesz miał więcej pieniędzy i większą kontrolę, ale jeśli nie lubisz swojej pracy i nie rozwiązujesz problemów w zespole, nie jest to opłacalne dla twojego czasu. Po drugie, w wywiadach z programistami pytano mnie: „Czy rozważyłbyś kierowanie zespołem?” i zawsze mam ochotę cytować Zasadę Piotra na podstawie tego, co widziałem. Interesuje mnie dążenie do dalszego rozwoju, ale nie w sposób, w jaki może tego chcieć firma, czyli „Wiceprezes działu blah”. Szczerze mówiąc, widziałem to częściej w świecie korporacji niż w małych domach deweloperskich i zawsze zniechęca mnie to do powrotu do środowiska korporacyjnego. Po prostu czuję, że staje się to coraz bardziej normą i wpływa na morale zespołu oraz obniża jakość pracy. Pytanie: W oparciu o to, co powiedziałem, czy przejście do kierownictwa jest mądrym posunięciem dla osoby technicznej?


title: Jak myślisz o używaniu `//` dla komentarza JSON?

text: Rozważam rozszerzenie JSON przez dodanie komentarza. Tylko dla mojego własnego projektu, wewnętrznie. Jeśli JSON otrzymał komentarz, myślę, że jego składnia powinna być w stylu `//`~`\n`, składnia JavaScript. Jak myślisz?


title: Jak wyjaśnić, że pisanie uniwersalnego, wieloplatformowego kodu w C++ i dostarczanie produktów dla wszystkich systemów operacyjnych nie jest takie proste?

text: Nasza firma dostarcza szereg produktów desktopowych dla systemu Windows, a wielu użytkowników Linuksa skarży się na forach, że powinniśmy być napisane wersje naszych produktów dla Linuksa lata temu, a powodem, dla którego tego nie robimy, jest * jesteśmy chciwą korporacją * wszyscy nasi specjaliści techniczni są niewykwalifikowanymi idiotami Nasz przeciętny produkt to około 3 miliony linijek kodu C++. Analiza moich i moich kolegów jest następująca: * pisanie wieloplatformowego kodu w C++ nie jest takie proste * przygotowanie wielu pakietów dystrybucyjnych i utrzymywanie ich dla wszystkich rozpowszechnionych wersji Linuksa wymaga czasu * szacujemy, że rynek Linuksa to coś w rodzaju 5- 15% wszystkich użytkowników i ci użytkownicy prawdopodobnie nie będą chcieli płacić za nasz wysiłek, gdy pojawi się to pytanie, po raz kolejny odpowiedź jest taka, że jesteśmy chciwymi, niewykwalifikowanymi idiotami i że gdy wszystko jest zrobione dobrze, wszystko jest łatwe i bezbolesne. Jak uzasadnione są nasze oceny faktu, że pisanie kodu międzyplatformowego i utrzymywanie wielu pakietów dystrybucyjnych wymaga dużego wysiłku? Gdzie możemy znaleźć proste, ale szczegółowe analizy z prawdziwymi historiami, które pokazują ponad wszelką wątpliwość, ile dokładnie wysiłku wymaga?


title: Ssasz mniej każdego roku?

text: Mniej ssania każdego roku - Jeff Atwood Natknąłem się na ten wnikliwy artykuł. Cytując bezpośrednio z postu > Często myślałem, że mniej ssania każdego roku jest tym, jak skromni programiści > poprawiają się. Powinieneś być niezadowolony z kodu, który napisałeś rok temu. Jeśli nie >, oznacza to, że albo A) nie nauczyłeś się niczego w ciągu roku, B) Twojego > kodu nie można ulepszyć, albo C) nigdy nie wracasz do starego kodu. Wszystko to jest > pocałunkiem śmierci dla programistów. 1. Jak często ci się to zdarza lub nie przytrafia? 2. Ile czasu upłynie, zanim zauważysz rzeczywistą poprawę w swoim kodowaniu? miesiąc, rok? 3. Czy kiedykolwiek odwiedzasz **Twój** stary kod? 4. Jak często dręczy cię stary kod? czyli jak często masz do czynienia ze swoim długiem technicznym. Zdecydowanie bardzo bolesne jest naprawianie starych błędów i brudnego kodu, które mogliśmy zrobić, aby szybko dotrzymać terminu, a te szybkie poprawki, w niektórych przypadkach być może będziemy musieli przepisać większość aplikacji/kodu. Żadnych kłótni o to. Niektórzy z programistów, z którymi się spotkałem, twierdzili, że byli już na etapie _ewolucji_, w którym ich kodowanie nie wymaga poprawy lub nie można go już poprawić. * Czy tak się dzieje? * Jeśli tak, po ilu latach programowania w określonym języku można się tego spodziewać? Powiązane: Czy kiedykolwiek spojrzałeś wstecz na swój stary kod i skrzywiłeś się z bólu? Star Wars Moment in Code **"Luke! Jestem twoim kodem!" „Nie! Niemożliwe! To niemożliwe!”**


title: Jak zarządzać czasem?

text: Są chwile, kiedy tylko jeden błąd, który pożera twój czas jak diabli… na przykład ten. Zwykle marnuję godziny i zdaję sobie sprawę, że strasznie opóźniłem swój harmonogram i nie ukończyłem innych zadań. Gdy w przeglądarce jest otwartych n kart, w ostateczności zamieszczam pytanie w stackoverflow. Jakie są techniki zarządzania czasem, które pozwalają zatrzymać się, cofnąć i wrócić do działania w obliczu blokady drogowej?


title: Projektowanie zorientowane obiektowo: co zrobić, gdy odpowiedzialność klasy jest duża?

text: Zastosowałem zasady GRASP i skończyłem z klasą o nazwie Środowisko. Do obowiązków tej klasy należy: * Przechowywanie informacji o usługach w środowisku, tj. definicja środowiska (Usługa to inna klasa) * Uruchom/zatrzymaj usługi spełniające pewne kryteria * Zastosuj zmiany konfiguracji do innej usługi i zachowaj listę zaktualizowanych usług * Restartuj usługi ze zmianą konfiguracji * Przywróć zmiany w konfiguracji na koniec sesji * Wyszukaj/Przekaż klasę usługi w oparciu o kryteria (nazwisko itp.) Według OOD nie stanowi to problemu: _do tej klasy przypisana jest bardzo spójna odpowiedzialność_. Ale z drugiej strony jest to problem, ponieważ _klasa jest za duża_ , mimo że cała przypisana do niej odpowiedzialność ma sens. Jeśli chcę podzielić tę odpowiedzialność na oddzielne klasy, to wszystkie te klasy muszą wiedzieć o "definicji środowiska", co pogarsza sprzężenie i te klasy będą miały _"zazdrość"_. Jakie wzorce projektowe mają zastosowanie w takiej sytuacji? Lub jakie inne zasady można zastosować, aby uzyskać spójne, mniej sprzężone klasy? Z góry dziękuję.


title: Jakie zastosowania ma IronPython?

text: Zastanawiałem się, jakie zastosowania ma IronPython w środowisku .NET? co może zrobić, czego nie można zrobić za pomocą VB, C# lub F#? Wydaje się dziwne, że przechodzimy przez wszystkie problemy związane z tworzeniem DLR i włączaniem dynamicznych języków w clr tylko po to, aby dodać kolejny język. Do czego ludzie używają IronPythona?


title: Jakie są najlepsze rzeczy do umieszczenia w moim portfolio, aby zademonstrować moje umiejętności w języku Java i zwiększyć swoją popularność?

text: Studiowałem Javę od dłuższego czasu i napisałem wiele małych programów SE. Na tym etapie dobrze orientuję się w języku, ale niestety nie zajmuję się (na razie) programowaniem w Javie. Chciałbym stworzyć portfolio programów Java na potrzeby przeniesienia się w ten obszar. Jest to również istotne w większości wywiadów. Chciałbym również rozwinąć to portfolio, aby pogłębić moją naukę (być może w obszarze Java EE). Czy ktoś może polecić punkt wyjścia? GF


title: Jaka jest różnica między statyczną analizą kodu a przeglądem kodu?

text: Chciałem tylko wiedzieć, jaka jest różnica między statyczną analizą kodu a przeglądem kodu. Jak robi się każdy z tych dwóch? A dokładniej, jakie są obecnie dostępne narzędzia do przeglądu kodu/analizy statycznej PHP? Chciałbym również wiedzieć o dobrych narzędziach do przeglądu kodu dla dowolnego języka.


title: Dlaczego czas ładowania mojej strony jest tak ściśle skorelowany z liczbą zapytań do bazy danych?

text: Za każdym razem, gdy pracuję nad tworzeniem stron internetowych, a wygenerowanie strony trwa dłużej niż pół sekundy, wiem, że gdzieś mój kod zbyt wiele razy trafia do bazy danych. Normalnym sposobem naprawienia tej sytuacji jest poproszenie DB o wszystkie informacje na raz, wykonując JOIN i tym podobne. Moje pytanie brzmi: Dlaczego wiele zapytań do bazy danych spowalnia stronę? Każde zapytanie musi wiązać się ze znacznym obciążeniem, ale co to jest? **EDIT** : W porządku, weźmy przykład (jest trochę głupi i mały, ale wystarczy) tabela `people`: | nazwa | Football_team_id | +------+------------------+ | jim | 1 | | mikrofon | 3 | | Karol | 2 | Tabela `football_team`: | identyfikator | kolor | +----+-------+ | 1 | czerwony | | 2 | niebieski | | 3 | zielony | Wszyscy wiemy, że to jest powolne: SELECT name,football_team_id FROM people; # zacznij renderować stronę, zdaj sobie sprawę, że potrzebujemy kolorów SELECT color FROM football_team WHERE id=1 # oops, potrzebuję koloru mike'a SELECT color FROM football_team WHERE id=3 # och, i Carla SELECT color FROM football_team WHERE id=2 Jest trochę lepiej : SELECT nazwa,piłkarz_id_drużyny FROM osób; SELECT id,color FROM football_team WHERE id IN (1,3,2) Najlepiej: SELECT name,football_team_id,color FROM people JOIN football_team ON people.football_team_id=football_team.id W każdym przykładzie otrzymujemy taką samą ilość danych , ale ten drugi jest z pewnością najszybszy. Nie spodziewałbyś się takiego samego zachowania, gdybyś na przykład czytał z deskryptora pliku.


title: Definicja języka opartego na C

text: Jaka jest definicja języka opartego na C? Czy C# jest uważany za oparty na C? Czy Java jest uważana za opartą na C? Co więcej, co to znaczy, że język i tak jest oparty na innym języku?


title: Jakie jest prawidłowe podejście do przekazywania danych z kilku modeli do usługi?

text: Mam `AccountModel` i stronę, na której użytkownik może przesłać plik. Chciałbym, żeby się stało, gdy użytkownik prześle plik. `PageController` robi coś podobnego do poniższego. to jest szybka próba właśnie napisana w pytaniu, aby zilustrować moje pytanie. public class PageController : Kontroler { private Service service; public ActionResult Upload(HttpPostedFileBase f){ service.savefile(f,_AccountModel_whatever.currentlyloggedinuser.taxid) } } public class Service { // mnóstwo walidacji i sprawdzania błędów, aby upewnić się, że plik jest dobry do przechowywania } Czy nie byłoby to podejście w złej praktyce? Ponieważ uzależniam mój kontroler od istnienia modelu konta? W ciągu najbliższych kilku lat ten program stanie się **OGROMNY** i naprawdę chcę teraz zmaksymalizować jakość tego frameworka.


title: Przechwytywanie dźwięku systemu urządzenia mobilnego (wyjście)

text: Próbuję znaleźć sposób na przechwytywanie dźwięku systemowego telefonu z systemem Android i/lub Windows. Pomysł polega na udostępnieniu strumienia opartego na muzyce, którą aktualnie odtwarzam na moim telefonie. Nie jestem jednak pewien, jakie byłoby najlepsze podejście do przesyłania dźwięku. Najlepiej, jeśli chciałbym przechwycić cały dźwięk urządzenia (tak samo, jak po podłączeniu do urządzenia Bluetooth). Ale nie jestem pewien, czy jest to możliwe z Androidem czy Windows Phone. W przypadku Androida znalazłem ten artykuł http://xzpeter.org/?p=254, stwierdza on, że nie jest to możliwe bez stworzenia własnej kompilacji Androida. Co nie jest dla mnie opcją. W przypadku Windows Phone mogę znaleźć tylko sposoby przechwytywania dźwięku z mikrofonu. Nie bezpośrednio z systemu. Jedyną alternatywą, jaką mogę wymyślić, jest pozwolenie aplikacji na dostarczanie całego dźwięku, co oznacza, że musiałbym wbudować w aplikację wszystkie podstawowe funkcje odtwarzacza multimedialnego. Ale to oznaczałoby, że musiałbym włożyć znacznie więcej pracy w aplikację i nie byłbym w stanie korzystać z innych aplikacji, takich jak Winamp i YouTube, do dostarczania dźwięku. Czy może przeoczyłem sposób na przechwycenie całego dźwięku urządzenia? A może istnieje sposób na przechwytywanie dźwięku z określonych aplikacji? **Edytuj** Po przeprowadzeniu dalszych badań naprawdę wątpię, czy mogę uchwycić cały dźwięk systemowy. A może da się zasymulować urządzenie audio bluetooth? W przypadku Windows Phone wybierałem alternatywne rozwiązanie: wybieranie utworów, które następnie byłyby przesyłane strumieniowo na serwer. Wygląda jednak na to, że w przypadku Windows Phone nie jest nawet możliwe uzyskanie fizycznego dostępu do utworów: http://stackoverflow.com/questions/16251400/stream-a-xna-framework-media-song-to-a-server


title: Czy pętla zdarzeń jest tylko pętlą for/while ze zoptymalizowanym odpytywaniem?

text: Próbuję zrozumieć, czym jest pętla zdarzeń. Często wyjaśnienie jest takie, że w pętli zdarzeń robisz coś, dopóki nie otrzymasz powiadomienia o wystąpieniu zdarzenia. Możesz zająć się wydarzeniem i kontynuować robienie tego, co robiłeś wcześniej. Aby zmapować powyższą definicję z przykładem. Mam serwer, który "nasłuchuje" w pętli zdarzeń, a po wykryciu połączenia z gniazdem dane z niego są odczytywane i wyświetlane, po czym serwer przechodzi do nasłuchiwania, które robił wcześniej. * * * Jednak to wydarzenie i powiadomienie nas „tak po prostu” to dla mnie zbyt wiele. Możesz powiedzieć: „To nie 'tak po prostu' musisz zarejestrować nasłuchiwanie zdarzeń”. Ale co to jest detektor zdarzeń, jeśli nie funkcja, która z jakiegoś powodu nie zwraca. Czy znajduje się w swojej własnej pętli, czekając na powiadomienie o wydarzeniu? Czy detektor zdarzeń powinien również rejestrować detektor zdarzeń? Gdzie to się kończy? * * * Zdarzenia są przyjemną abstrakcją do pracy, jednak tylko abstrakcją. Uważam, że w końcu głosowanie jest nieuniknione. Być może nie robimy tego w naszym kodzie, ale niższe poziomy (implementacja języka programowania lub system operacyjny) robią to za nas. Zasadniczo sprowadza się to do następującego pseudokodu, który działa wystarczająco nisko, aby nie powodować zajętego oczekiwania: while(True): zrób rzeczy sprawdź, czy zdarzenie się wydarzyło (sonda) zrób inne rzeczy * * * To jest moje zrozumienie całego pomysłu i chciałbym usłyszeć, czy to prawda. Otwarcie zgadzam się z tym, że cały pomysł jest z gruntu błędny, w takim przypadku chciałbym uzyskać prawidłowe wyjaśnienie. Z poważaniem


title: Napisz strukturę katalogów (pseudokod)

text: Piszę artykuł wiki i zastanawiam się, jaki jest właściwy sposób napisania schematu katalogów? Robię coś w rodzaju głównego folderu - podfolderu - podfolderu ... Ale po tym utknąłem. Jakaś pomoc?


title: Zostałem zwolniony po trzech miesiącach – czy powinienem uwzględnić to w moim CV?

text: W mojej ostatniej pracy zostałem zatrudniony do konkretnego projektu, który firma straciła, zanim w ogóle dostałem szansę na rozpoczęcie pracy: cztery osoby zostały zwolnione tego samego dnia. Spędziłem tam trzy miesiące i chociaż nauczyłem się nowych umiejętności programistycznych (pracowałem nad drobnym projektem, czekając na start nad głównym), nie mogę uważać się za eksperta w specjalności tej firmy (ledwie mijanej). Czy jako programista powinienem zachować to w swoim CV? Czy w ogóle mówię, że zostałem zwolniony, czy najlepiej całkowicie to pominąć? Okraść :)


title: Obliczanie WPM przy zmiennym strumieniu wejściowym

text: Tworzę aplikację, która siedzi w tle i rejestruje wszystkie naciśnięcia klawiszy (obecnie jest to zrobione i działa; zdarzenie jest wywoływane przy każdym naciśnięciu/naciśnięciu klawisza). Chcę zaoferować użytkownikowi funkcję, która pokaże mu jego WPM przez całą sesję, dla której program był uruchomiony. Byłoby to łatwe, gdybym dodał przycisk „Start” i „Koniec”, aby aktywować licznik czasu, ale muszę wykrywać tylko wtedy, gdy użytkownik pisze nieprzerwanie – ignorując wszystkie jednorazowe skróty klawiaturowe i przerywając pisanie. Jak u licha podchodzę do tego? Czy jest to możliwe realistycznie i dokładnie?


title: Jak radzić sobie z danymi o modelu specyficznym dla wykorzystywanej technologii?

text: W niektórych przypadkach wydaje się, że niektóre dane dotyczące klasy modelu domeny aplikacji zależą od używanej technologii. Oto jeden z przykładów: załóżmy, że budujemy jedną aplikację w .NET, taką, że potrzebna jest klasa Employee. Załóżmy dalej, że zamierzamy zaimplementować relacyjną bazę danych, to Pracownik ma klucz podstawowy, prawda? Aby klasa była czymś w rodzaju public class Pracownik { public int IdentyfikatorPracownika { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } ... } Teraz, że EmployeeID zależy od technologii, prawda? To jest coś, co ma związek ze sposobem, w jaki zdecydowaliśmy się utrwalać nasze dane. Czy powinniśmy spisać klasę niezależną od takich rzeczy? Jeśli robimy to w ten sposób, jak powinniśmy pracować? Myślę, że musiałbym cały czas mapować między modelem domeny a konkretnymi typami trwałości, ale nie jestem pewien.


title: Jak zaimplementować wielomotywową aplikację PHP

text: Tworzę aplikację, która obsłuży wiele wirtualnych sklepów i chciałbym mieć wiele motywów, które użytkownik mógłby w każdej chwili wybrać. Chciałbym wiedzieć, jaki jest główny pomysła na jego realizację. Będę go rozwijał przy użyciu Symfony 2. Myślałem o zaimplementowaniu własnych widoków i zasobów dla każdego motywu * Zasoby * widoki * motyw 1 * Produkt * List.html * Szczegóły.html * ... * motyw 2 * Produkt * Lista. html * Detail.html * ... * theme 3 * Product * List.html * Detail.html * ... * public * theme 1 assets * js * css * images * ... * theme 2 assets * js * css * obrazy * ... * motyw 3 zasoby * js * css * obrazy * ... A w bazie danych każdy użytkownik miałby własne preferencje (nazwa motywu, kolor, itp...). Poszukuję realizacji, która pozwoli mi dodać dowolny motyw. Na przykład jeden motyw, na stronie głównej ikona koszyka przejdzie na stronę koszyka, a inny motyw, ikona koszyka wyświetli okno z produktami. Jakie jest najlepsze podejście do implementacji wielotematycznej aplikacji internetowej? Czego mi brakuje?


title: Uwierzytelnianie/autoryzacja usługi REST

text: Mam usługę odpoczynku WCF, która będzie używana przez wielu klientów. Informacje zwracane przez klienta wymagają ode mnie znajomości tego, kim jest, abym mógł zwrócić informacje specyficzne dla niego. Czy najlepszym sposobem podejścia do tego typu projektu jest ich uwierzytelnienie i zwrócenie tokena dla ich sesji, a następnie przekazanie go wraz z każdym żądaniem? Dziękuję.


title: Kiedy należy używać bool w C++?

text: Mieliśmy zadanie dla naszej klasy, w którym musieliśmy stworzyć grę _Kółko i krzyżyk_. Ludzie lubią się komplikować, więc pisali złożone gry zawierające menu. Pod koniec gry musiałeś mieć możliwość ponownego zagrania lub wyjścia z programu. Użyłem do tego zmiennej `int`, ale zauważyłem, że niektórzy koledzy z klasy używają BOOLów. Czy jest bardziej wydajny? Jaka jest różnica między przechowywaniem odpowiedzi, która powinna przechowywać tylko dwie wartości w `int`, a nie przechowywaniem jej w wartości logicznej? Jaki jest dokładny cel tych zmiennych?


title: Projekt wielostrumieniowy a projekt jednostrumieniowy

text: Jeśli chcemy mieć przeglądy kodu, zanim programista dostarczy swoją pracę, możesz zasugerować, czy projekt wielostrumieniowy {tj. każdy programista tworzy swój własny strumień i widok, a następnie dostarcza go do jednego strumienia.} czy pojedynczy strumień {tj. wszyscy programiści pracują w tym samym strumieniu }, co jest wskazane.


title: Łączenie wielu wydarzeń w jedną akcję / Odrocz odświeżanie

text: Tak więc w programie GUI mam wiele zdarzeń, które wyzwalają aktualizację obszaru roboczego. To wezwanie do aktualizacji jest kosztowne, więc chciałbym, aby nie zdarzało się to zbyt często. Użytkownik może wybrać coś z listy rozwijanej (wyzwala odświeżenie ), a następnie zaznaczyć pole wyboru (również wyzwala odświeżenie ). Jeśli zrobi to w krótkim odstępie czasu, może to spowodować, że pierwsze odświeżenie będzie nieistotne. Jednym ze sposobów poradzenia sobie z tym byłoby posiadanie przycisku odświeżania, który użytkownik może nacisnąć, lub przełącznika, aby ustawić automatyczne odświeżanie. Ale nie chciałbym oddawać tego w ręce użytkownika. Czy jest jakaś inna strategia, która okazała się skuteczna i wolna od błędów? PS. W szczególności używam .Net 4.0 -> C# -> WPF -> Caliburn.Micro, ale chciałbym usłyszeć o dowolnej metodzie, którą można odtworzyć za pomocą .net 4


title: Pytania o profesjonalne programowanie w C++

text: Obecnie zawodowo programuję w C#, a odkąd zacząłem w 2008 roku byłem ciekaw jak wygląda programowanie niezarządzane w C++. Spojrzałem na oczywistą odpowiedź - spojrzeć na opisy stanowisk w Internecie - ale są to opisy wysokiego poziomu i wymagania stanowisk, które tak naprawdę nie wnikają w szczegóły tego, jak wygląda profesjonalne programowanie w C++. Jeśli jesteś programistą Windows, czy zwykle wiąże się to z pracą z CLI, MFC lub ATL? Ile zadań dotyczy utrzymywania starszego kodu w porównaniu z wprowadzaniem innowacji do czegoś nowego? Czy dodatkowa uwaga poświęcona zarządzaniu pamięcią jest ciekawym wyzwaniem czy żmudnym zadaniem? Czy praca z bibliotekami standardowymi i Windows/UNIX jest przyjemna? Jak często widzisz programistę przechodzącego z bardziej „wysokopoziomowego” języka, takiego jak C# lub Java, do C++, a jak często widzisz programistów idących w innym kierunku? Jak myślisz, co będzie napędzać popyt na przyszłe pokolenia programistów C++ (np. tworzenie gier lub utrzymywanie starszych systemów)?


title: Jak zarządzać zmianami formatu dokumentów za pomocą pamięci lokalnej?

text: Programuję aplikację JavaScript, która zapisuje "dokumenty" w localStorage. Wraz z rozwojem aplikacji naturalnie zachodzą zmiany w formacie dokumentu. Próbowałem szukać, ale nic nie znalazłem – prawdopodobnie (przynajmniej częściowo) z powodu niejednoznaczności wyszukiwanych haseł. Jaka jest dobra praktyka w zarządzaniu wersjami/uaktualnieniami formatu dokumentów z podejściem implementacji magazynu lokalnego?


title: Język programowania i prymitywy współbieżnego blokowania bazy danych

text: Piszę artykuł o prymitywach blokujących język programowania (które są tak naprawdę opakowaniami dla prymitywów systemu operacyjnego) i prymitywach blokujących bazę danych. Czy są jakieś krótkie, szeroko rozpowszechnione tytuły dla tych dwóch rodzajów blokowania? Na przykład „blokowanie kodu” i „blokowanie bazy danych”?


title: Co definiuje standard?

text: Co definiuje standard taki jak HTML5, C++0x itp.? Czy po prostu przekazujesz coś do W3C/ANSI/ISO/..., oni tworzą dokument o długości kilkuset stron i nagle staje się to standardem? Czy jako jednostka nie mogę sam czegoś stworzyć i ustandaryzować? Z pewnością mógłbym stworzyć kilkusetstronicowy dokument, który w każdym szczególe opisuje moje dzieło. Jaka jest więc korzyść z wydawcy: Stoisko W3C... ?


title: Czy to prawda, że pierwsze wersje kompilatorów C działały dziesiątki minut i wymagały wymiany dyskietek między etapami?

text: Zainspirowany tym pytaniem. Słyszałem, że bardzo, bardzo wczesne wersje kompilatorów C dla komputerów osobistych (przypuszczam, że około 1980 roku) znajdowały się na dwóch lub trzech dyskietkach, więc aby skompilować program trzeba było najpierw włożyć dyskietkę za pomocą "pierwszego przejścia", uruchomić "pierwszy przebieg", następnie zmień dysk na "drugi przebieg", uruchom to, a następnie zrób to samo dla "trzeciego przebiegu". Każde przejście trwało kilkadziesiąt minut, więc deweloper tracił mnóstwo czasu nawet w przypadku literówki. Jak realistyczne jest to twierdzenie? Jakie były rzeczywiste liczby i szczegóły?


title: Jak być lepszym w testowaniu własnego kodu

text: Jestem stosunkowo nowym programistą i uważam, że jedną z rzeczy, które powinienem poprawić, jest umiejętność testowania własnego kodu. Za każdym razem, gdy opracowuję nową funkcjonalność, naprawdę trudno mi podążać wszystkimi możliwymi ścieżkami, aby znaleźć błędy. Zwykle podążam ścieżką, na której wszystko działa. Wiem, że jest to dobrze znany problem programistów, ale u mojego obecnego pracodawcy nie mamy testerów, a moi koledzy wydają się być w tym całkiem dobrzy. W mojej organizacji nie zajmujemy się ani programowaniem opartym na testach, ani testami jednostkowymi. Bardzo by mi to pomogło, ale jest mało prawdopodobne, żeby to się zmieniło. Jak myślicie, co mógłbym zrobić, żeby to przezwyciężyć? Jakie podejście stosujesz podczas testowania własnego kodu?


title: Dlaczego edytory XSLT wstawiają znaki tabulacji lub spacji do XSLT, aby go sformatować?

text: Wszystkie edytory XSLT, których próbowałem do tej pory, dodają znaki tabulacji lub spacji do XSLT, aby wciąć go do formatowania. Odbywa się to nawet w miejscach w XSLT, gdzie te znaki są istotne dla procesora XSLT. XSLT zmodyfikowany w celu formatowania w ten sposób może dawać wynik bardzo różny od oryginalnego XSLT, jeśli nie miał formatowania. Aby temu zapobiec, elementy _xsl:text_ lub inne XSLT muszą zostać dodane do konstruktora sekwencji, aby pomóc w oddzieleniu formatowania od zawartości, ten dodatkowy XSLT ma wpływ na łatwość utrzymania. Formatowanie znaków również negatywnie wpływa na ogólną użyteczność narzędzia na wiele sposobów (dlatego chyba edytory tekstu ich nie używają) i zwiększają rozmiar pliku. W ramach większego projektu musiałem opracować lekki edytor XSLT, zaprojektowany do prawidłowego formatowania XSLT, ale bez znaków tabulacji i spacji, po prostu dynamiczny lewy margines dla każdej nowej linii. XSLT nie potrzebuje więc dodatkowych elementów do oddzielenia znaków tabulacji formatowania lub spacji od treści. Problem polega na tym, że jeśli XSLT z tego edytora zostanie otwarty w innych edytorach XSLT, znaki zostaną dodane ze względu na formatowanie i XSLT może w związku z tym nie zachowywać się zgodnie z przeznaczeniem. Dlaczego zatem istniejące edytory XSLT używają tabulatorów lub spacji do formatowania? Uważam, że muszą istnieć ważne powody, być może historyczne, może praktyczne. Odpowiedź pomoże mi zrozumieć, czy muszę jakoś umieścić opcje zgodności w moim edytorze XSLT, czy powinienem po prostu wrócić do używania tabulatorów lub spacji zarówno dla zawartości XSLT, jak i formatowania (chociaż wydaje mi się to krokiem wstecz) lub nawet czy wystarczająca liczba użytkowników XSLT może przekonać swoich dostawców narzędzi do włączenia alternatywnych metod formatowania do tabulatorów lub spacji. **Uwaga:** W odpowiedzi na pytanie: _Tabulatory a spacje — jaki jest właściwy znak wcięcia dla wszystkiego, w każdej sytuacji, kiedykolwiek?_


title: Co myślisz o otwieraniu komentarzy w nawiasach klamrowych w kodzie źródłowym?

text: Wyrobiłem sobie nawyk pisania komentarzy w swoim kodzie, umieszczając je w tym samym wierszu, co otwierający nawias klamrowy, po nawiasie klamrowym. Odkryłem, że oszczędza to miejsce w pionie. Pozostawia też wskazówkę, dlaczego coś zostało zrobione, ale zastanawiam się, czy jest to czytelne dla innych. Przykład: void DoSomeInterestingImageManipulation(char *pImage) {//Skonwertuje to obraz do formatu ABC, co pozwala zaoszczędzić x% miejsca na dysku if(pImage && pImage[0] == 0xFF) {//Przetwórz dodatkowy przypadek, w którym wewnętrzny format obrazu wymaga dekompresji ++pImage; //... //... //... } //Kontynuuj normalnie *pResult = Foo(pImage); } Czy uważasz, że czytanie jest łatwiejsze czy trudniejsze?


title: Zarządzanie wersją procedur składowanych SQL

text: Pracuję z zespołem 5 osób. Używamy SQL Server jako naszej bazy danych. Od dłuższego czasu chcę przechowywać procedury składowane w SVN, aby można było zachować wersje. Czy istnieje jakieś narzędzie, które może być użyte jako wtyczka do SQL Server Management Studio i umożliwia stamtąd zaewidencjonowanie?


title: Optymalizacja oprogramowania a optymalizacja sprzętu — co ma większy wpływ?

text: Zastanawiałem się, jak porównuje się optymalizację oprogramowania i optymalizację sprzętu, jeśli chodzi o wpływ, jaki mają na wzrost szybkości i wydajności komputerów. Słyszałem, że poprawa wydajności oprogramowania i algorytmów na przestrzeni lat przyniosła ogromny wzrost wydajności. Oczywiście oba są niezwykle ważne, ale co wywarło większy wpływ w ciągu ostatnich 10, 20 czy 30 lat? A jak zmiany sprzętu wpływają na zmiany oprogramowania? Ile optymalizacji oprogramowania jest bezpośrednim wynikiem ulepszeń sprzętu, a ile jest niezależne od sprzętu? Żeby było jasne, pytam o optymalizacje oprogramowania na poziomie kompilatorów i systemów operacyjnych. Oczywiście użycie lepszych algorytmów wysokiego poziomu spowoduje największe przyspieszenie (pomyśl: sortowanie szybkie kontra sortowanie bąbelkowe), ale to pytanie dotyczy podstawowego powodu, dla którego komputery są dziś ogólnie szybsze.


title: Jak usunąć efekty brzegowe wynikające z dopełnienia zera w scipy/numpy fft?

text: Zrobiłem kod Pythona, aby wygładzić dany sygnał za pomocą transformacji Weierstrassa, która jest w zasadzie splotem znormalizowanego gaussiana z sygnałem. Kod wygląda następująco: #Import odpowiednich bibliotek z __future__ import dzielenie ze scipy.signal import fftconvolve import numpy as np def smooth_func(sig, x, t= 0,002): N = len(x) x1 = x[-1] x0 = x[0] # definiując nową tablicę y, która jest symetryczna wokół zera, aby uczynić tablicę gaussowską symetryczną. y = np. linspace(-(x1-x0)/2, (x1-x0)/2, N) #gaussian wyśrodkowany wokół zera. gaus = np.exp(-y**(2)/t) #używanie fftconvolve do przyspieszenia konwolucji; gaus.sum() jest stałą normalizacji. return fftconvolve(sig, gaus/gaus.sum(), mode='same') Jeśli uruchomię ten kod, powiedzmy, funkcję kroku, wygładzi róg, ale na granicy interpretuje inny róg i wygładza go jako skutkuje niepotrzebnym zachowaniem na granicy. Wyjaśniam to za pomocą figury pokazanej na tym obrazku. Ten problem nie pojawia się, jeśli bezpośrednio integrujemy, aby znaleźć splot. Stąd problem nie leży w przekształceniu Weierstrassa, a zatem problem tkwi w funkcji splotu scipy. Aby zrozumieć, dlaczego pojawia się ten problem, musimy najpierw zrozumieć działanie fftconvolve w scipy. Funkcja fftconvolve zasadniczo wykorzystuje twierdzenie o splocie, aby przyspieszyć obliczenia. W skrócie mówi: convolution(int1,int2)=ifft(fft(int1)*fft(int2)) Jeśli bezpośrednio zastosujemy to twierdzenie, nie otrzymamy pożądanego rezultatu. Aby uzyskać pożądany wynik, musimy wykonać fft na tablicy o rozmiarze dwukrotnie większym od max(int1,int2). Prowadzi to jednak do niepożądanych efektów granicznych. Dzieje się tak dlatego, że w kodzie fft, jeśli size(int) jest większe niż size(nad którym należy wykonać fft), wypełnia on zerem dane wejściowe, a następnie pobiera fft. To zerowe wypełnienie jest dokładnie tym, co jest odpowiedzialne za niepożądane efekty brzegowe. _**Czy możesz zasugerować sposób na usunięcie tych efektów granicznych?_** Próbowałem to usunąć za pomocą prostej sztuczki. Po wygładzeniu funkcji porównuję wartość wygładzonego sygnału z oryginalnym sygnałem w pobliżu granic i jeśli się nie zgadzają, zamieniam wartość wygładzonej funkcji na sygnał wejściowy w tym punkcie. Wygląda to następująco: i = 0 eps=1e-3 natomiast abs(smooth[i]-sig[i])> eps: #zestawianie sygnałów na lewej granicy smooth[i] = sig[i] i = i + 1 j = -1 while abs(smooth[j]-sig[j])> eps: # porównywanie na prawej granicy. smooth[j] = sig[j] j = j - 1 Jest problem z tą metodą, ponieważ przy użyciu epsilon występują małe skoki w funkcji smooth. _**Czy mogą być wprowadzone jakieś zmiany w powyższej metodzie, aby rozwiązać ten problem z granicami?_**


title: Jaki jest sens używania modyfikatora dostępu prywatnego dla członków klasy C#?

text: Z MSDN... > Poziom dostępu dla elementów członkowskich klasy i elementów struktury, w tym zagnieżdżonych > klas i struktur, jest domyślnie prywatny. Jeśli członkowie klasy są domyślnie prywatni, to po co używać dla nich modyfikatora dostępu prywatnego? Widzę to cały czas w przykładach kodu i projektach open source, w tym w źródle ASP.NET MVC. Używam go nawet we własnych projektach, ale zastanawiam się dlaczego.


title: Wiele projektów - podobne platformy czy jak najbardziej różne?

text: Kiedy pracujesz nad wieloma projektami jednocześnie (dla uproszczenia powiedzmy, że po pół czasu każdy na dwóch projektach), co jest lepsze? Czy oba projekty powinny * używać tego samego języka? Te same/podobne frameworki? * Używasz zupełnie innych języków? Dodatkowo, czy najlepiej jest, jeśli są one przeznaczone dla podobnych platform lub różnych (internet, komputer stacjonarny, telefon komórkowy, biblioteka narzędziowa do użytku wewnętrznego)? Pierwsze odpowiedzi, które przychodzą mi do głowy to * Powinny być podobne i wykorzystywać mocne strony programisty, aby pomóc mu w zarządzaniu nimi obiema * Powinny być jak najbardziej różne, aby pomóc programiście zachować porządek Ponieważ nigdy tego nie robiłem to w profesjonalnym otoczeniu, miałem nadzieję, że więcej doświadczonych programistów rzuci trochę światła na najlepszy sposób na zrobienie tego. **EDYTUJ** : To pytanie zakłada istnienie wielu innych projektów, z których każdy jest w toku (myślę, że niektóre w toku i niektóre zupełnie nowe, bez decyzji projektowych, byłyby zbyt szerokie na jedno pytanie). Czy wybierając między istniejącymi projektami dla drugiego projektu, deweloper powinien wziąć pod uwagę, jak podobny jest jego nowy projekt do jego obecnego projektu i jak powinno to wpłynąć na decyzję?


title: Nauka programowania w C (pochodzące z Pythona)

text: Jeśli to niewłaściwe miejsce na zadanie tego pytania, daj mi znać. Z zawodu jestem programistą Pythona. Chciałabym nauczyć się C. Rzeczywiście, próbowałam wiele razy, ale zawsze się zniechęcam. W Pythonie piszesz kilka linijek, a program czyni cuda. W C nie wydaje mi się, żebym był w stanie zrobić nic pożytecznego. Nawet połączenie z Internetem wydaje się być bardzo skomplikowane. Czy masz jakieś sugestie, co mogę zrobić, aby nauczyć się C? Czy są jakieś dobre strony internetowe? Jakieś fajne projekty? Dziękuję


title: Przedłużenie rejestracji użytkowników w serwisie Django, który korzysta zarówno z tabel administratora witryny, jak i mojego własnego modułu?

text: Piszę witrynę Django, która rejestruje określony typ użytkownika i odbywa się to za pomocą zasobów, które są dostarczane z frameworkiem, administracją witryny. Problem: Chciałbym stworzyć nowy model z kluczem obcym do tabeli strony administratora i załadowany z cvs excela, który powiększa dane z formularza rejestracyjnego użytkownika. Chciałbym to zrobić w sposób niezależny od bazy danych bez sql. Po prostu za pomocą modeli, adresów URL, formularzy, języka szablonów itp. Nie wiem, jak sprawdzić zawartość formularza rejestracyjnego użytkownika w nowej tabeli? **forms.py** z django import formularzy z django.contrib.auth.models import Użytkownik z django.contrib.auth.forms import UserCreationForm z django.core.mail import send_mail # # Wywoływane przez widok register_user. # class MyRegistrationForm(UserCreationForm): email = form.EmailField(required=True) class Meta: model = pola użytkownika = ('username', 'password1', 'password2', 'email', 'first_name', 'last_name', ) def save(self, commit=True): # utwórz i załaduj obiekt użytkownika user = super(MyRegistrationForm, self).save(commit=False) user.email = self.cleaned_data['email'] user.first_name = self. clean_data['first_name'] user.last_name = self.cleaned_data['last_name'] if commit: user.save() send_mail('Twoja rejestracja rejestracji dostawcy', 'Jesteś teraz uwierzytelnionym dostawcą!', 'donfox1@mac. com', [user.email], fail_silently=False) zwraca użytkownika **models.py** class NPIdata(models.Model): ''' Dane NPI są powiązane z kontami użytkowników witryny administracyjnej. ''' NPI = modele.IntegerField(max_length=10) nazwisko = modele.CharField(max_length = 20) imię = modele.CharField(max_length = 20) Credential = models.CharField(max_length = 15) user = modele.ForeignKey(User )


title: Czy mogę użyć silverlight do budowy aplikacji Social Networking?

text: Zastanawiam się: jak wykonalne byłoby rozpoczęcie tworzenia serwisu społecznościowego w całości opartego na silverlight; To było dyskutowane przez lata na korzyść HTML. Czy coś się zmieniło wraz z ulepszeniami Silverlight na przestrzeni lat? A co z: * Wydajność -- aktywni użytkownicy -- używana technologia, MVVM + MEF (możliwość opóźnień, przepełnienie pamięci serwera...) * Bezpieczeństwo --- WCF Ria Services & EF Co sądzisz na ten temat?


title: Jak skomentować PEP?

text: Propozycje nowych funkcji Pythona są gromadzone w dokumentach zwanych PEP (Python Enhancement Proposals). Na stronie http://www.python.org/dev/peps/ znajduje się główna lista, do której prowadzą linki (na przykład): * Oznaczone przerwą i kontynuuj http://www.python.org/dev/peps/pep-3136/ * Obsługa asynchronicznych operacji we/wy http://www.python.org/dev/peps/pep-3153/ * Kontynuacja usuwania backslash http://www.python.org/dev/peps/pep-3125/ Wspaniale, że propozycje są publikowane publicznie do przeczytania przez społeczność. Jak jednak ma uczestniczyć społeczność? Strony nie pozwalają na komentarze. Wydaje mi się dziwne, że programiści Pythona upubliczniają propozycje, a następnie celowo wykluczają społeczność z dyskusji. Czy coś przegapiłem? W szczególności chciałbym przeczytać komentarze innych osób na http://www.python.org/dev/peps/pep-0453/ i dodać własne. * * * Dla porównania, propozycje funkcji Rubiego są umieszczane jako posty w jego narzędziu do śledzenia błędów. Możesz przeczytać komentarze wszystkich poniżej i dodać własne (po założeniu konta) * Udoskonalenia i metody zagnieżdżone https://bugs.ruby-lang.org/issues/4085 * Składnia zamrożonych ciągów https://bugs.ruby-lang .org/issues/8579 * Wyjątek#powoduje przeniesienie oryginalnego wyjątku wraz z nowym https://bugs.ruby-lang.org/issues/8257 Żądania funkcji Nodejs są zwykłymi problemami z GitHub, które są prawdopodobnie najbardziej włączające. Bardzo łatwo jest dołączyć do GitHub i dodać komentarz. * https://github.com/joyent/node/issues?labels=feature-request


title: Interakcja między programami

text: Piszę interaktywny program, w którym pobiera dane głosowe od użytkownika dla określonej listy poleceń. Lista poleceń będzie przechowywana lokalnie na wykresie iw zależności od użycia ich waga zostanie zmodyfikowana. Wejście mowy jest pobierane i przetwarzane na tekst, a następnie wykonywane przez skrypty bash. Zastanawiam się, czego powinienem użyć do interakcji (synchronizacji) między silnikiem rozpoznawania mowy, a następnie listą i programem bash. Używam C++ i Bash w systemie Unix. Myślałem o muteksie, ale problem polega na tym, że jeśli użytkownik wprowadzi wiele danych wejściowych, będę musiał je buforować, a następnie przetwarzać sekwencyjnie, a to spowolni system. Skrypt bash służy do wywoływania poleceń narzędzia systemowego zgodnie z żądaniem użytkownika. Czy powinienem używać tylko C++ lub Basha? Zastanawiam się nad przechowywaniem wykresu w formacie binarnym. Czy to najlepszy sposób na przechowywanie wykresu? Proszę zasugerować alternatywy.


title: Jak przekonać moją firmę (działającą w sektorze finansowym) do przejścia z PHP na Javę

text: Moja firma działa w sektorze finansowym i używa PHP jako języka programowania. Sam jestem programistą PHP. Prowadzę duży projekt zaczynający się niemal od zera. Widzę, że PHP nie jest najlepszym kandydatem do budowania solidnych platform. Chcę przekonać moją firmę do _stopniowego_ przejścia na Javę (z którą mam doświadczenie). Próbowałem znaleźć jak najwięcej argumentów na poparcie. Czy możesz w tym pomóc? Do tej pory znalazłem te: * Większość konkurentów używa Javy (w każdym razie nie PHP) * Większość firm finansowych używa Javy zamiast PHP * Średnio programiści Javy są lepiej przygotowani (średnio!) * Proces kompilacji dużo łapie problemów, zanim oprogramowanie zostanie uruchomione w środowisku produkcyjnym * Silne pisanie sprawia, że wszystko jest bardziej niezawodne, ponieważ kontrakty między interfejsami są dobrze zdefiniowane. Jakieś inne punkty, których mi brakuje? Dziękuję!


title: Najlepsza metoda postępowania dotycząca włączania obrazów do DataGrid przy użyciu MVVM

text: Wszystko mam WPF "DataGrid". Ten `DataGrid` pokazuje pliki gotowe do kompilacji i powinien również pokazywać postęp mojego kompilatora podczas kompilacji plików. Format `DataGrid` to Obraz|Ścieżka pliku|Stan -----|---------|----- * |C:\AA\BB |Skompilowany & |F:PP \QQ |Niepowodzenie > |G:HH\LL |Przetwarzanie .... Problemem jest kolumna obrazu (*, & i > służą tylko do reprezentacji). Mam „ResourceDictionary”, który zawiera setki obrazów wektorowych jako obiekty „Canvas”: <ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas. microsoft.com/winfx/2006/xaml/presentation"> <Canvas x:Key="appbar_acorn" Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0 ,0"> <Path Width="22.3248" Height="25.8518" Canvas.Left="13.6757" Canvas.Top="11.4012" Stretch="Fill" Fill="{DynamicResource BlackBrush}" Data="F1 M 16.6309, 18.6563C 17.1309,8.15625 29.8809,14.1563 29.8809,14.1563C 30.8809,11.1563 34.1308,11.4063 34.1308,11.4063C 33.5,12 34.6309,13.1563 34.6309,13.1563C 32.1309,13.15609 31.14.1390.132.314. 27.9062C 24.6309,24.9063 21.1309,22.1562 16.6309,18.6563 Z M 16.6309,19.9063C 21.6309,24.1563 25.1309,26.1562 31.6309,28.6562C 31.6309,28.6562 26.3809,39.1562 18.3809.38.36.36.15 34,9 063 16.3809,34.9063C 16.3809,34.9063 10.1309,30.9062 16.6309,19.9063 Z "/> </Canvas> </ResourceDictionary> Teraz chcę móc uwzględnić je w kolumnie obrazu i zmieniać je w czasie wykonywania. Miałem zamiar spróbować to zrobić, konfigurując właściwość w moim modelu widoku, która była typu `Image` i wiążąc to z moim widokiem za pośrednictwem: <DataGrid.Columns> <DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly= "True"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Image Source="{Binding Canvas}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> Gdzie w modelu widoku I mają odpowiednią właściwość. Powiedziano mi, że to nie jest „czysty” MVVM. Nie do końca to akceptuję, ale chcę wiedzieć, czy istnieje lepszy sposób na zrobienie tego. Powiedzmy, powiązanie z wyliczeniem i użycie konwertera, aby uzyskać obraz? Wszelkie porady byłyby mile widziane.


title: Rozumujesz składnię notacji ósemkowej w Javie?

text: Java ma następującą składnię dla różnych baz: int x1 = 0b0101; //binarny int x2 = 06; //ósemkowe int x3 = 0xff; //szesnastkowy Czy istnieje jakieś uzasadnienie, dlaczego jest to „0” zamiast czegoś takiego jak „0o”, jak to, co robią dla binarnego i szesnastkowego? Czy jest jakaś dokumentacja, dlaczego poszli tą drogą?


title: Czy dla wewnętrznych programistów (nie kierowników projektów) zazwyczaj otrzymujesz wcześniej spisane instrukcje projektowe?

text: Jestem całkiem nowy w pracy jako programista, przynajmniej jako zwykły pracownik w firmie. Często jestem sfrustrowany stylem zarządzania mojej firmy, ponieważ po prostu wybierają losowe zadania, które przypadną do gustu głównemu programiście tego dnia lub dzień wcześniej, i dają mi zadanie (zadania zwykle trwają krócej niż 1 dzień). Wiele zadań, które mam teraz, jest dość małych i dotyczy dodawania ulepszeń do aplikacji webowych, poprawiania błędów itp. Martwi mnie jednak fakt, że nie planują z wyprzedzeniem, aby dać mi pisemny zarys projektów z kilkudniowym wyprzedzeniem, żeby np. zardzewiały na czymś, żebym mógł przynajmniej w swoim czasie się z tym zapoznać lub przynajmniej mieć bardziej zrelaksowane podejście do pracy, żeby wszystko nie musiało być być tak reakcyjnym z mojej strony (gdzie mogę przemyśleć różne rzeczy w czasie wolnym przed rozpoczęciem pracy nad nimi itp.) Myślę, że jestem po prostu ciekawy, czy jest to normą lub czy większość prac programistycznych ceni sobie jasno określone specyfikacje zadań i są w stanie przygotować je nieco wcześniej. Chciałbym usłyszeć czyjeś doświadczenia / opinie itp. Dzięki


title: Gdzie znaleźć wolontariuszy open source?

text: Mamy projekt open source Java (REMPL) i aktywnie poszukujemy wolontariuszy. Jak najlepiej je znaleźć? Młodsi programiści są dla nas OK.


title: Dobry zestaw narzędzi do rozwoju ASP.NET

text: Jakie są dobre (lub muszą mieć) narzędzia programistyczne/debugujące ASP.NET oprócz środowiska IDE programu Visual Studio? Jak dotąd jedyną sztuczką w mojej kieszeni jest .NET Reflector, który przydał się już wcześniej. (Jeśli to możliwe, ograniczyłbym dodatki do przeglądarek do IE, ponieważ pracuję w intranecie korporacyjnym i używanie FF nie zawsze jest opcją).


title: Czy używanie NoStackTrace w scala to dobra praktyka?

text: Natknąłem się na mixin `NoStackTrace` dla wyjątków w scala. Czy używanie go jest dobrą praktyką, czy też powinno być uważane za „wewnętrzne” dla scala i pozostawione w spokoju?


title: Czy model widoku „Boga” jest pożądany w WPF?

text: Moja aplikacja ma kontrolki użytkownika w kontrolkach użytkownika. Zobacz zrzut ekranu jednej z najpiękniejszych aplikacji wszechczasów (UC = kontrola użytkownika): ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/EEvpd.png) Wszystkie właściwości są aktywne w kodzie MainWindow za, nie ma żadnego w moich UserControls. Aby powiązać z moimi właściwościami, używam DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1,AncestorType=Window}}" Działa to dobrze, ale oznacza to, że wszystkie właściwości powiązania znajdują się w kodzie mojego MainWindow (lub Model widoku głównego okna). Czy jest to pożądane w podejściu MVVM (a może powinienem powiedzieć WPF), w którym wszystkie dzieci współdzielą ten sam ViewModel?


title: Czy należy sprawdzać wartość null, jeśli nie oczekuje wartości null?

text: W zeszłym tygodniu mieliśmy gorący spór dotyczący obsługi wartości null w warstwie usług naszej aplikacji. Pytanie dotyczy kontekstu .NET, ale tak samo będzie w Javie i wielu innych technologiach. Pytanie brzmiało: czy zawsze należy sprawdzać wartości null i sprawić, by kod działał bez względu na wszystko, czy też pozwolić wyjątkowi wzrosnąć, gdy nieoczekiwanie zostanie odebrany null? Z jednej strony sprawdzanie null tam, gdzie się tego nie spodziewasz (tzn. nie masz interfejsu użytkownika do obsługi) jest moim zdaniem tym samym, co pisanie bloku try z pustym haczykiem. Po prostu ukrywasz błąd. Błąd może polegać na tym, że coś się zmieniło w kodzie i null jest teraz wartością oczekiwaną lub wystąpił inny błąd i do metody jest przekazywany nieprawidłowy identyfikator. Z drugiej strony sprawdzanie wartości null może być ogólnie dobrym nawykiem. Co więcej, jeśli zostanie wykonana kontrola, aplikacja może nadal działać, a tylko niewielka część funkcji nie przyniesie żadnego efektu. Następnie klient może zgłosić mały błąd, taki jak „nie można usunąć komentarza”, zamiast znacznie poważniejszy błąd, jak „nie można otworzyć strony X”. Jaką praktykę stosujesz i jakie są twoje argumenty za lub przeciw którymkolwiek podejściom? Aktualizacja: chcę dodać trochę szczegółów na temat naszego konkretnego przypadku. Pobieraliśmy niektóre obiekty z bazy danych i przetwarzaliśmy je (powiedzmy, że zbudujemy kolekcję). Deweloper, który napisał kod, nie przewidział, że obiekt może mieć wartość null, więc nie uwzględnił żadnych sprawdzeń, a podczas ładowania strony wystąpił błąd i nie wczytała się cała strona. Oczywiście w tym przypadku powinien być czek. Następnie wdaliśmy się w spór o to, czy każdy przetwarzany obiekt powinien być sprawdzany, nawet jeśli nie oczekuje się, że go brakuje, i czy ewentualne przetwarzanie powinno zostać po cichu przerwane. Hipotetyczną korzyścią byłoby dalsze działanie strony. Pomyśl o wynikach wyszukiwania w Stack Exchange w różnych grupach (użytkownicy, komentarze, pytania). Metoda może sprawdzić, czy nie ma wartości null i przerwać przetwarzanie użytkowników (co z powodu błędu ma wartość null), ale zwrócić sekcje „komentarze” i „pytania”. Strona będzie nadal działać, z wyjątkiem tego, że będzie brakować sekcji „użytkownicy” (co jest błędem). Czy powinniśmy wcześnie zawieść i zepsuć całą stronę, czy kontynuować pracę i czekać, aż ktoś zauważy, że brakuje sekcji „użytkownicy”?


title: Czy metoda powinna walidować swoje parametry?

text: Załóżmy, że projektujesz metodę pierwiastka kwadratowego sqrt. Czy wolisz, aby walidacja przekazanego parametru nie była liczbą ujemną, czy też pozostawiasz to osobie wywołującej, aby upewnić się, że przekazany parametr jest prawidłowy. Jak zmieni się twoja odpowiedź, jeśli metoda/API jest przeznaczona do użytku przez osoby trzecie, czy ma być używana tylko dla konkretnej aplikacji, nad którą pracujesz Jestem zdania, że metoda powinna walidować swój parametr, jednak Pragmatic Programmer w sekcji Projektowanie według umowy (rozdział 4) mówi, że obowiązkiem dzwoniącego jest przekazanie dobrych danych (str. 111 i 115) i sugeruje użycie asercji w metodzie, aby to sprawdzić. Chcę wiedzieć, co myślą o tym inni.


title: Czy (powinna?) zmiana nazwy schematu URI zmienia semantykę?

text: Jeśli weźmiemy: http://example.com/foo, czy można uczciwie powiedzieć, że: ftp://example.com/foo .. wskazuje na _ten sam_ zasób, po prostu używając innego mechanizmu do jego rozwiązania (i oczywiście prawdopodobnie inną reprezentację, ale może nie)? Wyszło to na jaw w dyskusji, którą prowadziliśmy wokół wewnętrznych narzędzi z Git. Musimy przetworzyć niektóre repozytoria Git, które zaczynają być używane jako "git@{autorytet}/{ścieżka}" , jednak biblioteka, której używamy do łączenia się z nimi, nie obsługuje protokołu `git`. Zasugerowałem, że powinniśmy uczynić usługę solidną, ponieważ próbuje używać HTTP lub SSH, w istocie odkrywając, jakie protokoły/schematy są obsługiwane w celu rozwiązania repozytorium w {ścieżce} pod każdym {urzędem}. Spotkało się to z pewną krytyką: „Nie wiemy, czy to to samo repozytorium”. Moja odpowiedź brzmiała: „Lepiej, żeby tak było!” Patrząc na RFC 3986, widzę następujący fragment: > „Rozwiązywanie” URI to proces określania mechanizmu dostępu i > odpowiednich parametrów niezbędnych do wyłuskania adresu URI; to rozwiązanie może > wymagać kilku iteracji. Aby użyć tego mechanizmu dostępu do wykonania akcji > na zasobie URI, należy „wyłuskać” URI. Co każe mi myśleć, że proces rozwiązywania może wypróbować różne protokoły, ponieważ: > Chociaż wiele schematów URI jest nazwanych po protokołach, nie oznacza to, > że użycie tych URI spowoduje dostęp do zasobu przez nazwany protokół. Jedyną obawą, jaką mam, jak sądzę, jest to, że widzę tylko odniesienie do pojęcia zmiany protokołów, jeśli chodzi o przechodzenie relacji: > możliwe jest, aby pojedynczy zestaw dokumentów hipertekstowych był jednocześnie > dostępny i możliwy do przechodzenia przez każdy z schematy „file”, „http” i „ftp” > jeśli dokumenty odwołują się do siebie z odniesieniami względnymi. Skłonny jestem sądzić, że myliłem się w swoich początkowych przekonaniach, ponieważ sekcja „Normalizacja i porównanie” wspomnianego RFC nie wspomina o żadnym sposobie traktowania dwóch identyfikatorów URI jako równoważnych, jeśli używają one różnych schematów. Wygląda na to, że schematy nazwane/oparte na protokołach IP powinny przynajmniej mieć to pojęcie?


title: sugerowanie dużych zmian/przepisywanie na staż

text: **Kontekst:** * to projekt wewnętrzny (nie wydaje mi się, że używa go wiele osób) * jest stary * aktualizujemy go **Problemy:** 1. nadużywa frameworku mvc (nie wykorzystanie modeli, logika biznesowa w widokach itp.) 2. to, o co jesteśmy proszeni, jest małe, ale ze względu na niską spójność mamy dwie opcje: 1. nadal spartaczyć rzeczy 2. przenosić duże fragmenty kodu lub przepisać rzecz **Rozwiązania (widzę):** 1. Kontynuuj pracę, ignoruj najlepsze praktyki na rzecz szybkiego wykonania i nie wprowadzania nowych błędów poprzez refaktoryzację/przepisanie 2. refaktoryzacja/przepisanie Chyba moje pytanie jest naprawdę : jeśli chcę dokonać dużych zmian w tym projekcie, jak mam to zaproponować bez obrażania kogokolwiek? A może lepiej byłoby, gdybym po prostu płynął z prądem, nawet jeśli czasami oznacza to (metaforycznie) taśmę klejącą?


title: Jak istotny jest wpływ systemu typów (statyczny/dynamiczny) na ogólny projekt programów?

text: Pochodzę z Javy, nigdy nie używałem języka z dynamicznym pisaniem. Jestem bardzo przyzwyczajony do statycznego sposobu myślenia. Moje pytanie brzmi: w jakim stopniu użycie dynamicznego pisania w przeciwieństwie do statycznego pisania wpływa na ogólny projekt programów pisanych w językach z takim rodzajem pisania? **Czy rodzaj pisania (statyczny/dynamiczny) znacząco wpływa na projektowanie programów?** Pracując z językiem z typami dynamicznymi, czy zbudowałbyś swoją aplikację w inny sposób niż praca z językiem typowanym statycznie? **A może jest to tylko cecha języka, która wpływa głównie na lokalne szczegóły implementacji, ale nie wpływa na ogólny projekt?**


title: C API w C++ z RAII, dwie alternatywy implementacji obsługi błędów (Wyjątki)

text: Mam API napisane w C, które generuje wynik, zwracając wskaźnik do przydzielonej pamięci. Aby używać go z C++ (C++11) umieściłem wywołania funkcji w obiektach, które przechowują wynik w `std::shared_ptr`. Na razie w porządku. Jednak biblioteka C zawiera _dwie_ funkcje dla każdej operacji. Jeden prawdopodobnie popełnia błąd, drugi nigdy. Nazwijmy je `some_pod * do_it_with_error(Parameter ..., Error **)` i `some_pod * do_it_without_error(Parameter ...)` Mogę przekazać w adresie wskaźnika `Error *` do pierwszej funkcji i jeśli jest błąd, później nie będzie to `NULL`. Aby rozwiązać ten problem, pomyślałem o dwóch różnych implementacjach. Po pierwsze, mógłbym SFINAE wybrać pomiędzy funkcjami `with_error` i `without_error`, na przykład: template<typename NoThrow = void> struct do_it { public: void operator()(...) { Error * error = NULL; m_result = std::shared_ptr<jakiś_pod>(zrób_to_z_błędem(..., &błąd)); if (błąd) { throw(MyExceptionWithError(error)); } } prywatne: std::shared_ptr<jakiś_pod> m_result; }; template<> class do_it<std::nothrow_t> { public: void operator()(...) noexcept { if (! m_result) { m_result = std::shared_ptr<jakiś_pod>(do_it_without_error(...)); } } prywatne: std::shared_ptr<jakiś_pod> m_result; }; Sposób użycia: zrób_to<> di_error; spróbuj { di_error(...); // może rzucić } catch (...) {} do_it<std::nothrow_t> di_no_error; di_brak_błędu(...); // na pewno nie wyrzuci Jednak, ponieważ wynik jest opakowany w `std::shared_ptr`, będzie również metoda `get()`: const std::shared_ptr<some_pod> & get(void) { return m_wynik; } Do sprawdzania błędów mógłbym po prostu zaimplementować inną metodę `check`. Domyślna implementacja wyglądałaby teraz tak: struct do_it { public: // nigdy nie wyrzuci const std::shared_ptr<some_pod> & get(void) noexcept { if (! m_result) { m_result = std::shared_ptr<some_pod>( zrób_to_bez_błędu(...)); } return m_result; } // może rzucić do_it & check(void) { if (! m_result) { Error * error = NULL; m_result = std::shared_ptr<jakiś_pod>(zrób_to_z_błędem(..., &błąd)); if (błąd) { rzut ...; } } return *to; } prywatne: std::shared_ptr<jakiś_pod> m_result; }; Sposób użycia: zrób to di_error; spróbuj { auto wynik = di_error.check().get(); } catch (...) {} zrób to di_no_error; di_no_error.get(); Tak więc obie implementacje wydają mi się równie dobre (lub złe). Jak mogę zdecydować, którego użyć. Jakie są plusy i minusy?


title: Znajdź wspólne funkcje lub funkcje między 2 programami

text: Ostatnio spotkałem się z problemem, w którym chcę zoptymalizować dwa programy. W tym celu chciałem stworzyć coś w rodzaju "Wspólnego interfejsu", który mógłbym ponownie wykorzystać między moimi dwoma programami. Jednak ich kod to około 1000 wierszy i nie chcę spędzać dużej ilości czasu na sprawdzaniu, czy ta lub inna funkcja jest taka sama jak ta i cokolwiek innego. Użyłem więc BOUML, aby sprawdzić podobieństwa między diagramami klas. Ale zastanawiam się, czy istnieje globalny sposób na przeprowadzenie takiego badania?


title: jak wyrazić alternatywne przepływy na diagramie aktywności

text: Chcę wyrazić poniższe zdarzenia na diagramie aktywności: * Alternatywny przepływ, taki jak „w kroku x podstawowego przepływu użytkownik klika anuluj zamiast OK”. * Alternatywny wpis do przypadku użycia, taki jak „zamiast kliknąć pogrubiony przycisk, użyj można nacisnąć Ctrl-B”. * Błąd, taki jak „gdy użytkownik kliknie Zapisz, system nie może zapisać pliku na dysku”. Jak mogę to zrobić? Dziękuję Ci.


title: W jakich okolicznościach (jeśli w ogóle) warto pracować w startupie za darmo?

text: Od jakiegoś czasu kręcę się po startupowym świecie i większość startupów, które widziałem, ma (między innymi) dwie cechy wspólne: 1. Brak pieniędzy 2. Niemożność rzetelnego zatrudniania dobrej jakości deweloperzy Oznacza to, że dla startupów idealnym najemnikiem jest ktoś, kto jest wolny – gdzie może poczekać, aż oboje zdobędą pieniądze i przekonają się, że wynajem jest wart swojej ceny. Kiedy (jeśli w ogóle) jest to wygrana sytuacja? Dla Ciebie, jako programisty lub programisty, kiedy miałoby to sens?


title: Jak możesz nauczyć C# delegata nowicjusza?

text: Recenzowałem książkę Andrew Troelsena na temat C# 4.0. Część wyjaśniająca delegatów zaczyna się tak gładko, jak: public class SimpleMath { //declare delegate public delegate int BinaryOp(int x, int y); public static int Add(int x, int y) { return x + y; } } class Program { static void Main(string[] args) { //utworzenie delegata wskazującego na metodę Add BinaryOp b = new BinaryOp(SimpleMath.Add); //Wywołaj metodę Add za pomocą delegata Console.WriteLine("10 + 10 to {0}", b(10,10)); Konsola.CzytajLinię(); } } niż robi się tak skomplikowana jak public class Car { public int CurrentSpeed {get;set;} public int MaxSpeed {get;set;} private bool carIsDead {get;set;} public Car() {MaxSpeed=10;} public Car (int maxSpeed, int currentSpeed) { MaxSpeed = maxSpeed; AktualnaPrędkość = aktualnaPrędkość; } //deklaruj delegat publiczny delegat void CarEngineHandler(string msgForCaller); //zdefiniuj członka tego delegata private CarEngineHandler listOfHandlers; //dodaj funkcję rejestracji dla wywołującego public void RegisterWithCarEngine(CarEngineHandler methodToCall) { listOfHandlers = methodToCall; } public void Accelerate(int delta) { if (carIsDead) { if (listOfHandlers!=null) listOfHandlers("Przepraszamy, samochód nie żyje"); } else { Bieżąca prędkość+=delta; if (10== (MaxSpeed - CurrentSpeed) && listOfHandlers!=null) { listOfHandlers("Zaraz wybuchnie!"); } if (CurrentSpeed >= MaxSpeed) carIsDead = true; else Console.WriteLine("Aktualna prędkość = {0}", CurrentSpeed); } } } Jeśli spróbujemy wybrać tę treść i nauczyć kogoś innego, będzie nam ciężko, ponieważ stanie się to trudne. Jak możesz uczyć delegatów C# w sposób, w jaki on/ona jest w stanie jasno zrozumieć, kiedy ich używać?


title: Debugowanie, śledzenie wydajności, profilowanie, narzędzia itp. - pakiet?

text: Mój klient chce ujednolicić swój pakiet narzędzi „pomocniczych”, aby pomóc programistom bardzo dużego projektu .NET w debugowaniu, profilowaniu, znajdowaniu wycieków pamięci i wąskich gardeł wydajności itp. Rodzaje problemów Wszyscy programiści używają VS2010, docelowego .NET 4.0 i obsługuje duży system rozproszony: klient Winform UI (framework CAB), SQL2008 Backened, warstwa aplikacji CSLA z Dataportal i usługami zdalnymi oraz duża warstwa przetwarzania zadań z pakietem klastrowym Compute (CCP), a także kilka tuzin innych technologii peryferyjnych. Aby dać ci wyobrażenie o rozmiarze, system prawdopodobnie znajduje się na północ od 5 milionów linii kodu, ma około 100 programistów na całym świecie i przez ostatnie 5 lat wspierał rozwój i produkcję przy tej samej wielkości zespołu. Przez lata klient nie miał jednej strategii, która obracałaby się wokół narzędzi do profilowania. Klient kupił narzędzia, gdy programiści powiedzieli: „och, fajnie jest rozwiązać ten konkretny problem, który mam”. Więc teraz klient chce ustandaryzować zestaw narzędzi. Co do tej pory działało: Mrówki do profilowania pamięci. dotTrace do profilowania wydajności. Obecnie firma CA Wiley poważnie rozważa monitorowanie produkcji. Profilowanie VS2010 zostało uznane za niewystarczająco dobre i nie działa wystarczająco dobrze w obecnym systemie. Czy ktoś może polecić jeden zestaw narzędzi, który byłby dobrym substytutem WSZYSTKICH narzędzi wymienionych powyżej? Integracja z VS2010 jest koniecznością. Wymagane są wszelkiego rodzaju dzwonki i gwizdki oraz łatwość użycia i zdolność do drążenia do najgłębszych poziomów, aby znaleźć najdziwniejsze problemy. Dziękuję za sugestie


title: Gdy nie ma API

text: Kiedy konieczna jest integracja z aplikacją internetową, a interfejs API jest niedostępny, czy jest to opłacalne rozwiązanie do symulowania interakcji przeglądarki internetowej z aplikacją internetową tak, jak wszedłby w nią prawdziwy użytkownik? AKTUALIZACJA Trochę kontekstu. Web App należy do dostawcy/partnera. Ich harmonogram budowy odpowiedniego API nie spełni naszych potrzeb. Skrobanie danych to najrzadziej używana część. Wymagane jest pełne CRUD do interakcji z aplikacją. Jako programista widzę, że to zadziała, ale chcę mieć możliwość rozwiania obaw, które inni mogą zgłaszać w związku z tym podejściem. Czy oparcie aplikacji biznesowej o znaczeniu krytycznym na tym podejściu? Dlaczego lub dlaczego nie?


title: Jaka jest różnica między programowaniem na poziomie uczelni a programowaniem korporacyjnym?

text: Właśnie ukończyłem studia licencjackie w dziedzinie IT. Bardzo interesuję się kodowaniem i naprawdę chcę być w tym profesjonalistą. Teraz poza kursami na studiach sam uczę się programowania (C#) (programowanie na poziomie college'u jest zbyt proste). Teraz czuję, że potrzebuję trochę więcej czasu, aby być blisko profesjonalnego programisty. Ale niektórzy z moich seniorów twierdzą, że programowanie świata korporacyjnego jest zbyt różne od programowania książkowego, więc nie ma sensu tracić czasu. (Oni sami nie są programistami, prawdopodobnie to słyszeli). Czy skorzystałbym z osiągnięcia zaawansowanego poziomu C#? lub ponieważ przeciętny poziom jest wystarczający do przerwania rozmów kwalifikacyjnych, wyższe poziomy nie mają znaczenia dla firm, ponieważ polegają one wyłącznie na szkoleniu, aby uczyć, jak działają rzeczy w świecie korporacyjnym, a uczenie się więcej mi niewiele pomoże? Proszę, jeśli są profesjonalni programiści, którzy mogą pomóc, obiecuję, że jest to coś, o co każdy student zainteresowany programowaniem chce zapytać na moim etapie. „Jak faktycznie zmienić się z ucznia w profesjonalistę w dziedzinie programowania?” - ucz się dalej, aż osiągniesz perfekcję lub dołączanie do firmy jest koniecznością, gdy poznasz podstawy?


title: Unikalna wartość obiektu a jednostka

text: Próbując przekształcić niektóre byty w obiekty wartości, utknąłem w sytuacji, w której to, co wydaje się obiektem wartości, musi być unikatowe w agregacie. Załóżmy, że mamy encję **Movie**, która tworzy korzeń agregatu. Ta jednostka **Film** jest powiązana z pewnym zestawem obiektów **AdvertisementEvent**, których rolą jest wyświetlanie reklamy o określonej sygnaturze czasowej. **Reklama** zawiera link do jakiegoś **Banera**, który musi być wyświetlony, współrzędne i niektóre filtry efektów. Ponieważ **AdvertisementEvent** jest tylko _zbiorem parametrów konfiguracyjnych_, nie jestem pewien, czy powinienem dbać o jego tożsamość i traktować go jak obiekt o dużej wartości. Obchodzi mnie jednak to, że w **filmie** musi być tylko jedno wydarzenie **Reklama** o określonej sygnaturze czasowej, prawdopodobnie nawet _wokół_ sygnatur czasowych. Trudno mi podzielić swoje wątpliwości na wiele niezależnych pytań, więc oto one: 1. Czy _zbiór parametrów konfiguracyjnych_ brzmi jak obiekt wartości? 2. Czy łączę koncepcję unikatowości **Reklamy** z **Filmem** i zasadą integralności transakcyjnej? 3. Czy _jakikolwiek_ z wyborów w punkcie (2) oznacza, że **Reklama** musi należeć do zbioru stworzonego przez **Film**? 4. Czy mój obiekt **AdvertisementEvent** jest bytem, obiektem wartości czy obiektem zdarzenia? (Użyłem sufiksu _Event_ w nazwie, aby podkreślić moje zmieszanie) 5. Czy przedmioty o dużej wartości, takie jak ten, są zapachem designu? Wydaje mi się, że nie mam do czynienia z Wydarzeniem w sensie DDD, ponieważ nie jest to coś, co się po prostu _zdarza_. Prawdziwe wydarzenie DDD powinno przypominać _AdvertisementEventReached_


title: Staż wraz z Google Summer of Code?

text: Zastanawiam się, ile czasu zwykle zajmuje Google Summer of Code. Mam w kolejce staż tego lata, ale GSoC wydaje się być niesamowitym doświadczeniem. Bardzo chcę też zająć się rozwojem Open Source. Stwierdzono w FAQ, że nie jest dobrym pomysłem próbować obu, ale nie podaje żadnych szczegółów. Zastanawiam się, czy można zrobić jedno i drugie. A może lepiej byłoby, gdybym spróbował pracować nad open source w wolnym czasie? Dzięki za wszelką pomoc!


title: Jakie są zalety/wady klasyfikacji defektów podczas wzajemnego przeglądu kodu?

text: Około 3 miesiące temu nasza grupa inżynierów wdrożyła tablicę przeglądową, która ma być używana do wszystkich przeglądów kodu partnerskiego. Dzisiaj rozmawiałem z jedną z osób zaangażowanych w ten proces i dowiedziałem się, że już szukamy zamiennika (być może czegoś komercyjnego) z powodu kilku brakujących funkcji. Jedną z funkcji, o którą najwyraźniej prosi wiele osób, jest możliwość klasyfikowania/kategoryzowania każdego komentarza przeglądu kodu (tj. czy jest to kwestia stylu, konwencji kodowania, wycieku zasobów, błędu logicznego, awarii... cokolwiek). Czy ta kategoryzacja jest powszechną praktyką w tych zespołach, które regularnie ćwiczą przegląd kodu? Czy to robisz? czy robiłeś to w przeszłości? Czy to jest dobre/złe? Z jednej strony daje zespołowi więcej metryk i prawdopodobnie wskaże bardziej konkretne obszary, w których programiści mogą potencjalnie wymagać szkolenia (przynajmniej na tym polega argument). Czy są inne korzyści? Z drugiej strony, i to jest moje zmartwienie, to znacznie bardziej spowolni proces przeglądu kodu. Jako kierownik zespołu zrobiłem dość dużą część recenzji i zawsze podobała mi się możliwość wyróżnienia fragmentu kodu, napisania komentarza i jak najszybszego przejścia. Chociaż nie próbowałem tego osobiście, mam wrażenie, że za każdym razem rozwijanie tego pola kombi i przewijanie/szukanie odpowiedniej kategorii byłoby jak coś cię potykać. Poza tym, jeśli zaczniemy zachowywać metryki w tym zakresie, moją drugą obawą jest to, że cenny czas spotkania poświęcony przeglądowi kodu zostanie poświęcony na kłótnie, czy coś jest błędem logicznym, czy też powinno zostać sklasyfikowane jako awaria.


title: Jak mogę pomóc sobie skoncentrować się na projekcie, gdy istnieje fajniejszy, nad którym mogę pracować?

text: Cierpię na ADHD dorosłych. Czasami nudzą mnie projekty lub zadania przydzielone mi w pracy, ponieważ nie są szczególnie interesujące. W końcu wymyślam ciekawsze prace i zamiast tego pracuję nad nimi, nie wykonując swoich zadań na czas. W końcu robię użyteczne oprogramowanie, ale nie to, do czego się zobowiązałem. Wiem, że muszę to „podssać” i „po prostu to zrobić”, jednak ADHD utrudnia mi wybór tego, o czym myśleć. W rezultacie często się rozpraszam i nie dostarczam na czas. Czy są jakieś techniki, które powinienem spróbować, aby utrzymać się na zadaniu, zwłaszcza gdy mogę wykonać więcej zabawy?


title: Jaka jest (najbardziej szalona, najgłupsza, najgłupsza) rzecz, o którą poprosił cię klient/szef?

text: Zobacz tytuł, ale pytam z technicznego punktu widzenia, a nie > Zabierz moją 40-letnią dziewiczą siostrzenicę na randkę albo zostaniesz zwolniony.


title: Projektowanie obiektu enkapsulacji podobnego do SQL do użytku programistycznego

text: W ciągu ostatnich kilku tygodni pracowałem nad biblioteką mapowania danych, która wymagała wielu badań, eksperymentów, płaczu, obwiniania tablicy za to, że nie jest wystarczająco duża, i dalszych badań. Ale teraz mam pełne pojęcie o tym, co próbuję zrobić. Zdecydowałem, że przed przystąpieniem do pracy z jakimikolwiek adapterami źródła danych muszę zbudować bibliotekę wyrażeń SQL. Zapytania nie są składane z ciągu tekstowego, ale w postaci skonkretyzowanego obiektu, zawierającego wiele innych obiektów powiązanych z częścią zapytania, której dotyczy. W związku z tym obiekt zapytania `SELECT` będzie zawierał obiekty dla `kolumn`, `tabeli z`, `joins`, `gdzie`, `group bys`, `having klauzul`, `order bys` i `limit `. Obiekty te są następnie przekazywane do adaptera źródła danych, który pobiera dane wejściowe i przekształca je w zapytanie (lub wykorzystuje je w inny sposób), aby można było pobrać dane w zwykły sposób. Chociaż jest to wystarczająco dobre dla prostych zapytań, jeśli chodzi o bardziej złożone zapytania, w których odwołanie do złączenia lub warunek w klauzuli WHERE jest zagnieżdżonym zapytaniem wybierającym (np. `SELECT * FROM tblA INNER JOIN (SELECT * FROM tblB WHERE foo = 'bar')` lub `SELECT * FROM tblA WHERE alice IN (SELECT * FROM tblB WHERE foo = 'bar')`), mam problem z zaprojektowaniem interfejsu, w którym można by to zdefiniować, co później byłoby przekazane do adaptera, który mógłby go używać w dowolny sposób. Czy zatem ktoś może zaproponować projekt, który pozwalałby na abstrakcyjne definiowanie takich zapytań, które można by interpretować jako zapytanie sql lub wywołanie funkcji interfejsu programistycznego nosql? **EDYTUJ** Projekt systemu jest taki, że wszystkie tabele i kolumny są zdefiniowane jako obiekty (oddzielnie, ale z nazwanymi skojarzeniami do łączenia). Oto przykład kodowania, które mam nadzieję wykonać: tblA::select() ->where(new inCondition( 'tblAfooCol', tblB::select()->where(new isNullCondition('tblBbarCol') ) ) ) ->pobierz(); Teraz, zamiast tłumaczyć to bezpośrednio na SQL (co jest bardzo łatwe), staram się zaplanować sposób, w jaki można to zwrócić do adaptera źródła danych (wewnętrznie poprzez funkcję `fetch`). Do tej pory zbudowany przeze mnie system może obsługiwać polecenia dla pojedynczego parsowanego zapytania `SELECT`, ale dzieje się tak wtedy, gdy podzapytania są używane w połączeniu z zapytaniem, które zostanie przekazane do adaptera. Mam problemy z określeniem sposobu hermetyzacji zapytania podrzędnego, aby adapter mógł je sam przetworzyć. Jak wspomniano wcześniej, konwersja bezpośrednio do SQL działa świetnie, ale jeśli chcę go użyć ze specjalnym adapterem, który nie używa SQL (tj. Adapter XML lub MongoDB), bez funkcji konwertującej SQL na polecenia (lub jeśli jest SQL, konwersja niektórych składni do poprawnej specyfikacji dla tych rmdb), których można użyć, może wymagać dużego obciążenia procesora (tylko dla niektórych zapytań) i kosztować sporo wydajności.