title: Kuratorka projektów zmarłych przyjaciół

text: Niedawno zmarł mój bardzo dobry przyjaciel i zapalony programista. Pozostawił blisko 40 projektów na BitBucket. Większość z nich jest publiczna, ale kilka z nich jest oznaczonych jako prywatne. Zdecydowałam się przejąć obowiązki kuratorskie dla projektów, zamiast zostawiać jego pracę znikną. Jeśli byłeś w takiej samej sytuacji, co zrobiłeś? Czy udostępniłeś wszystko? Kontynuować rozwój? Usunąć to wszystko? Bardzo interesuje mnie słuchanie doświadczeń innych ludzi. Istnieje kilka powodów, dla których niektóre projekty są oznaczone jako prywatne (projekty prywatne na BitBucket są widoczne tylko dla zaproszonych użytkowników i oryginalnego twórcy): * Jednym z nich jest aplikacja internetowa na iOS, która była bezpłatna w sklepie z aplikacjami. Musiałem usunąć aplikację ze sklepu, ponieważ zamykam jego strony internetowe jako przysługę dla wdowy po nim. Jednak już upubliczniłem aplikację na licencji GPL v3 (był wielkim zwolennikiem GPL). * Jeden z nich zawiera zastrzeżony kod. Nie może być open-source. * Inne są bardzo w toku. Nie wiem, czy zamierzał zrobić z nich hostowane, płatne usługi, czy też chciał rozdać kod na licencji open-source po ich ukończeniu. Oto lista prywatnych projektów: * Jakiś rodzaj symulatora żywych komórek, który używa SBML wraz z algorytmami Runge-Kutty i Eulera do... czegoś. Jest tu sporo kodu, ale nie wiem, co on robi ani jak daleko jest. Brak dokumentów. * Aplikacja księgowa; wydaje się, że ma za sobą solidny projekt DB, ale na dodatek jest trochę kodu. * Strona, której celem jest sugerowanie dobrych restauracji. Zbudowany na Yii. Wydaje się, że mam dużo kodu, ale musiałbym skonfigurować stos WAMP, aby zobaczyć, jak daleko jest. * Witryna przeznaczona do przechowywania upamiętnień osób, które cierpiały z powodu tego samego problemu, co on. Zbudowany na Joomla. Nie jestem pewien, ile kodu to tylko Joomla, a ile jest niestandardowe; znowu musiałbym uruchomić Joomla, aby się dowiedzieć. Właśnie przedstawiłem go Mercurialowi i BitBucketowi. Wszystkie prywatne projekty to pojedyncze zatwierdzenia baz kodu, w których nie używał on kontroli wersji/wcześniej używał SVN. Nie mam repozytoriów SVN, więc nie widzę dzienników zmian.


title: Radzenie sobie z nieelastycznymi programistami

text: Czasami programiści, którzy pracują nad projektem przez długi czas, stają się nieelastyczni i trudno jest z nimi rozumować. Nawet jeśli uda nam się ich przekonać, prawdopodobnie nie zrealizują naszych sugestii. Na przykład niedawno dołączyłem do projektu, w którym proces budowania i wydawania jest zbyt skomplikowany i ma niepotrzebne blokady. Zasugerowałem, abyśmy pozbyli się niektórych narzutów programistycznych (takich jak wypełnianie kilku arkuszy kalkulacyjnych) po prostu integrując narzędzia do zarządzania defektami i kontroli wersji (oba są narzędziami IBM-Rational, więc integracja może być bardzo łatwym, jednorazowym wysiłkiem). Ponadto, jeśli używamy narzędzi takich jak Maven & Ant (projekt obejmuje Javę i niektóre produkty COTS), kompilację i wydanie można uprościć, co powinno zmniejszyć liczbę błędów i interwencji ręcznych. Udało mi się przekonać innych i jestem gotów podjąć wysiłek opracowania proof of concept. Ale „starszy” programista nie jest chętny, być może dlatego, że obecny proces czyni go bardziej wartościowym. Jak radzimy sobie z tą sytuacją, nie wywołując tarcia w zespole?


title: Bezpośrednie mapowanie pamięci fizycznej systemu Windows

text: Jestem trochę rozczarowany, że prawie nie ma dyskusji na ten temat, bez względu na to, gdzie spojrzę, więc chyba będę musiał zapytać. Piszę wieloplatformową aplikację do analizy porównawczej pamięci, która wymaga bezpośredniego mapowania adresów fizycznych zamiast adresowania wirtualnego. **EDYTUJ** Rozwiązanie wyglądałoby jak wywołania systemowe Linux/Unix: int fd = open("/dev/mem", O_RDONLY); mmap(NULL, len, PROT_READ, MAP_SHARED, fd, PHYSICAL_ADDRESS_OFFSET); co będzie wymagało od jądra podania mapowania strony wirtualnej na żądany adres fizyczny lub zwrócenia błędu. Wymaga to uprawnień nadzorcy, ale to jest w porządku. Widziałem wiele informacji o pamięci współdzielonej i plikach mapowanych w pamięci, ale wszystkie one znajdują się na dysku i dlatego nie są tak naprawdę przydatne, gdy próbuję dokonać odczytu zależnego od systemu. Jest to bardzo podobne do pisania sterownika IO, chociaż nie potrzebuję uprawnień do zapisu na adres fizyczny. Ta strona podaje przykład, jak to zrobić na poziomie sterownika za pomocą zestawu Windows Driver Kit: NT Insider: Współdzielenie pamięci między sterownikami i aplikacjami To rozwiązanie prawdopodobnie wymagałoby Visual Studio, do którego obecnie nie mam dostępu. (Pobrałem api WDK, ale skarżył się na moje użycie GCC dla Windows). Tradycyjnie jestem programistą Linuksa, więc mam nadzieję, że brakuje mi czegoś naprawdę prostego. Z góry dziękuję, jeśli wiesz coś, czego ja nie wiem!


title: W jaki sposób Git i Mercurial rozwijały się tak podobnie w tym samym czasie?

text: Git i Mercurial stosują podobne modele i mają podobną terminologię. Pierwsze wydanie Mercurial miało miejsce zaledwie 12 dni po wydaniu Gita. W jaki sposób te dwa projekty, w początkowej fazie rozwoju w tym samym czasie, okazały się tak podobne? Czy ktoś zna historię?


title: Jakich algorytmów mogę użyć do wykrycia, czy artykuły lub posty są duplikatami?

text: Próbuję wykryć, czy artykuł lub post na forum jest zduplikowanym wpisem w bazie danych. Zastanowiłem się nad tym, dochodząc do wniosku, że ktoś, kto powiela treść, zrobi to za pomocą jednego z trzech (w dół trudnych do wykrycia): 1. proste kopiowanie wklejanie całego tekstu 2. kopiowanie i wklejanie fragmentów scalania tekstu 3. skopiuj artykuł z zewnętrznej strony i zamaskuj jako własny **Przygotowanie tekstu do analizy** Zasadniczo wszelkie anomalie; celem jest, aby tekst był jak najbardziej „czysty”. Aby uzyskać dokładniejsze wyniki, tekst jest „standaryzowany” przez: 1. Usunięcie zduplikowanych białych znaków oraz przycięcie początku i końca. 2. Nowe wiersze są standaryzowane do \n. 3. Tagi HTML są usuwane. 4. Za pomocą RegEx o nazwie Daring Fireball adresy URL są usuwane. 5. Używam kodu BB w mojej aplikacji, więc idzie do. 6. (ä)centy i obce (oprócz angielskiego) są konwertowane na ich nieobcą formę. Informacje o każdym artykule przechowuję w (1) tabeli statystyk oraz w (2) tabeli słów kluczowych. **(1) Tabela statystyk** Przechowywane są następujące statystyki dotyczące zawartości tekstowej (podobnie jak ten post) 1. długość tekstu 2. liczba liter 3. liczba słów 4. liczba zdań 5. średnia słów w zdaniu 6. czytelność automatyczna index 7. Gunning fog score _W przypadku języków europejskich należy używać indeksu Coleman-Liau i Automated Readability Index, ponieważ nie stosuje się w nich liczenia sylab, co powinno dawać w miarę dokładny wynik._ **(2) Tabela słów kluczowych** Słowa kluczowe są generowane przez z wyłączeniem ogromnej listy słów pomijanych (słów wspólnych), np. „the”, „a”, „of”, „to” itp. **Dane przykładowe** * długość_tekstu, 3963 * liczba_liter, 3052 * liczba_słów , 684 * liczba_zdań, 33 * słowo_w_zdaniu, 21 * mgła strzelnicza, 11.5 * auto_read_index, 9.9 * słowo kluczowe 1, zabici * słowo kluczowe 2, funkcjonariusze * słowo kluczowe 3, policja Należy zauważyć, że po zaktualizowaniu artykułu wszystkie powyższe statystyki są regenerowane i mogą mieć zupełnie inne wartości. Jak mogę wykorzystać powyższe informacje, aby wykryć, czy artykuł, który jest publikowany po raz pierwszy, już istnieje w bazie danych? * * * Zdaję sobie sprawę, że wszystko, co zaprojektuję, nie będzie idealne, a największym ryzykiem jest (1) Treść, która nie jest duplikatem, zostanie oznaczona jako duplikat (2) System przepuszcza zduplikowaną treść. Tak więc algorytm powinien generować numer oceny ryzyka od 0 oznacza brak duplikatu ryzyko 5 oznacza możliwy duplikat, a 10 oznacza duplikat. Wszystko powyżej 5, to istnieje duże prawdopodobieństwo, że treść jest zduplikowana. W takim przypadku treść może zostać oznaczona i połączona z artykułami, które mogą być duplikatami, a człowiek może zdecydować, czy usunąć, czy zezwolić. Jak powiedziałem wcześniej, przechowuję słowa kluczowe dla całego artykułu, jednak zastanawiam się, czy mógłbym zrobić to samo na podstawie akapitów; oznaczałoby to również dalsze oddzielenie moich danych w DB, ale ułatwiłoby to również wykrycie (2) w moim początkowym poście. Myślę o średniej ważonej między statystykami, ale w jakiej kolejności i jakie byłyby tego konsekwencje...


title: Co to jest programista „Business Intelligence”?

text: Jakich cech/umiejętności oczekuje rola Business Intelligence Developer w porównaniu z tradycyjną rolą Web Developera?


title: klient proxy usługi sieciowej do testowania jednostek/integracji

text: Piszę na nowo bibliotekę PHP klient/proxy, która zapewnia interfejs do usługi sieciowej .Net opartej na SOAP, aw tym procesie chcę dodać kilka testów jednostkowych i integracyjnych, aby przyszłe modyfikacje były mniej ryzykowne. Praca wykonywana przez bibliotekę, nad którą pracuję, polega na rozmieszczeniu wywołań do usługi sieciowej i niewielkiej reorganizacji odpowiedzi, aby przedstawić nieco bardziej zorientowany obiektowo interfejs do usługi bazowej. Ponieważ ta biblioteka to niewiele więcej niż cienka warstwa na wierzchu wywołań usług internetowych, moim podstawowym założeniem jest to, że naprawdę będę pisać testy integracyjne bardziej niż testy jednostkowe - na przykład nie widzę powodu, aby wyśmiewać sieć serwis - praca wykonywana przez kod, nad którym pracuję jest bardzo lekka; prawie przekazuje odpowiedź z usługi z powrotem do klienta. Większość wywołań to podstawowe operacje CRUD: CreateRole(), CreateUser(), DeleteUser(), FindUser(), &ct. Zacznę od znanego stanu bazy danych - system, którego używam do tych testów, jest izolowany do celów testowych, więc wyniki będą mniej lub bardziej przewidywalne. Moje pytanie brzmi: czy naturalne jest używanie wywołań usług webowych do potwierdzania wyników operacji w ramach testów i resetowania stanu aplikacji w ramach każdego testu? Oto przykład: Jednym z testów może być createUserReturnsValidUserId() i może wyglądać tak: public function createUserReturnsValidUserId() { // zakładamy globalne połączenie z usługą $newUserId = $client->CreateUser("user1"); attachNotNull($nowyIdUżytkownika); AssertNotNull($client->FindUser($newUserId); $client->deleteUser($newUserId); } Tworzę więc użytkownika, upewniając się, że otrzymam identyfikator i reprezentuje on użytkownika w systemie, a następnie sprzątanie po sobie (żeby późniejsze testy nie polegały na sukcesie lub niepowodzeniu tego testu, na przykład z liczbą użytkowników w systemie).Jednak to nadal wydaje się dość kruche - wiele zależności i możliwości aby testy zakończyły się niepowodzeniem i wpłynęły na wyniki późniejszych testów, których zdecydowanie chcę uniknąć.Czy brakuje mi niektórych opcji sposobów oddzielenia tych testów od testowanego systemu, czy jest to naprawdę najlepsze, co mogę zrobić?Myślę, że tak jest dość ogólne pytanie dotyczące testowania jednostek/integracji, ale jeśli ma to znaczenie, używam PHPUnit do testowania.


title: Przydatność przechodzenia przed i po złożeniu zamówienia przez drzewa binarne

text: To może być bardzo naiwne, ale zastanawiałem się, czy kontekst drzew binarnych (zwykłych, posortowanych i zrównoważonych) wszystkich typów przechodzenia -order * width-first jaka jest rzeczywista użyteczność tych przed i po zamówieniu? Chodzi mi o to, czy istnieje jakiś typ i/lub konfiguracja drzewa binarnego, w którym przechodzenie przed i/lub po złożeniu zamówienia dałoby (pewną) przewagę nad pozostałymi dwoma? AFAICS, istnieją pewne typy i konfiguracje drzew binarnych, dla których w kolejności i wszerz może dać pewną przewagę: * w przypadku zrównoważonego drzewa binarnego każde przechodzenie w głąb zużyje mniej miejsca w pamięci w porównaniu do wszerz (np. . dla zrównoważonego drzewa binarnego z 6 lub 7 węzłami, wysokość wynosi 2, więc każde przechodzenie w głąb będzie musiało przechowywać maksymalnie 2 węzły w danym momencie, podczas gdy ostatni poziom ma 3 lub 4 węzły, więc przechodzenie wszerz będzie musiało przechowywać do 3 lub 4 węzły w pewnym momencie). W tym przypadku użycie przechodzenia w kolejności wykorzystuje najmniejszą ilość pamięci i odwiedza węzły w ich naturalnej kolejności. * w przypadku niezrównoważonego drzewa binarnego, jeśli jest on zbliżony do najgorszego scenariusza wstawiania, przechodzenie przez niego najpierw wszerz zużyłoby mniej pamięci w porównaniu z dowolnym przechodzeniem w głąb. Tak więc w tym przypadku szerokość na pierwszym miejscu jest zaletą. Przechodzenie w kolejności ma tę zaletę, że odwiedza wartości w ich naturalnym porządku. Nie wyobrażam sobie jednak sytuacji, w której przed i po przejściu dałoby przewagę nad pozostałymi dwoma.


title: Jak mogę skalować wiosenny kontekst aplikacji?

text: Obecnie pracuję nad projektem, który musi być dynamicznie skalowany na żądanie w zależności od potrzeb. Moje pytanie dotyczy skalowania kontekstu wiosennego. Moja aplikacja webowa posiada klasyczny wielomodułowy rdzeń (usługa, trwałość, domena), z którego korzysta aplikacja kliencka (webapp, api). Aplikacja końcowa użytkownika może być sklastrowana, także baza danych, ale nie wiem, jak postępować z kontekstem wiosennym. Planuję użyć aktorów Scala Akka w serwisie Spring, ale nie jestem przekonany do rozwiązania polegającego na wykorzystaniu jednego kontekstu eksponowanego przez aktorów. Cała reszta aplikacji jest zbudowana przy użyciu technik opartych na zdarzeniach (zdarzenia wiosenne są tworzone przez warstwę usług). Zbudowałem już różne aplikacje internetowe według profilu użytkownika w celu skalowania zgodnie z rolą użytkownika (np. admin, użytkownik końcowy), jednak jedyną rzeczą jest Spring Context dla operacji biznesowych. **Pytanie:** Czy muszę scalać w jednym kontekście współdzielonym przez wszystkie aplikacje klienckie, czy też powinienem inicjować jeden kontekst na aplikację? > ![http://i.stack.imgur.com/0ysv7.png](http://i.stack.imgur.com/0ysv7.png)


Czy istnieje sposób na odgrywanie roli JavaScript w dowolnym innym języku, takim jak C#? Jednym ze sposobów, który wpadł mi do głowy, jest instalowanie silverlight, używanie C# zamiast JavaScript dla wszystkich skryptów po stronie klienta (chociaż C# nie jest językiem skryptowym). Czy to możliwe? Nie mówię o czymś takim jak GWT(Java) lub Script#(C#). Prawdopodobnie pytanie może być sformułowane jako- "Czy po zainstalowaniu Silverlight mogę zrobić wszystko, co jest obsługiwane przez JavaScript (takie jak manipulacja DOM itp.) Za pomocą C#?" Mam nadzieję, że jest jaśniejsze.


title: Zapewnienie zgodności metodologii Agile i DevOps z wymaganiami PCI

text: Chciałbyś usłyszeć od osób pracujących w środowisku zgodności PCI i praktykujących metodykę Agile Development i Devops, w jaki sposób zachowujesz zgodność z wymaganiami PCI. W szczególności, co robisz, aby rozwiązać: * oddzielenie obowiązków między rozwojem/testowaniem i produkcją * dostosowanie ciągłej integracji/wdrożeń i kontroli zmian * dostosowanie historii agile do dokumentacji wymagań


title: Czy SCRUM zazwyczaj wiąże się z ogromnymi nadgodzinami?

text: Chciałbym wiedzieć, czy nadgodziny są normalne w sprintach, czy jest to nadużycie tej metodologii. Czuję się naiwny i pozbawiony kręgosłupa robiąc całonocne, jeśli nie muszę. * * * Pytanie jest specyficzne dla SCRUM. Porównaj metodologie.


title: Kto uzyskuje dostęp do kodu źródłowego za pomocą apl

text: Po przeczytaniu przez kilka dni o szczegółach GPLv3, a dokładniej AGPLv3, mam jedno pytanie dotyczące dystrybucji i komu. Jeśli tworzę aplikację internetową (serwer i klient) dla klienta. Płacą mi, oddaję wszystkie źródła i własność. Aplikacja internetowa jest obecnie dostępna tylko dla pracowników i kontrahentów; ale ze względu na argument, może to być każdy, ponieważ jest w Internecie. Kod AGPLv3 nie jest modyfikowany (w tym przypadku iText), służy do generowania pliku PDF z innego tekstu (a wszystko to [może] się wydarzyć we własnym projekcie/dll całkowicie oddzielonym od głównej aplikacji internetowej). Komu źródło musi zostać udostępnione i udostępnione: 1. Pracownikom 2. Każdemu użytkownikowi aplikacji 3. Każdemu użytkownikowi niebędącemu pracownikiem (klauzula dotycząca dystrybucji wśród pracowników organizacji)


title: Prezenter widoku modelu dla formularzy WebForms i WinForm

text: Mam projekt formularzy systemu Windows przy użyciu wzorca prezentera widoku modelu i chciałbym zbudować projekt formularzy sieci Web na tej samej strukturze MVP. Projekt formularzy systemu Windows nic nie wie o członkostwie w ASP.Net i po prostu komunikuje się za pośrednictwem prezentera z modelem, a następnie z warstwą biznesową w celu zalogowania/walidacji użytkownika. W projekcie formularzy internetowych stworzyłem niestandardowe klasy, które dziedziczą z wbudowanych klas członkostwa i klas dostawców ról, dzięki czemu mogę korzystać z istniejących tabel użytkowników i ról, a także ładnie integrować się z kontrolkami logowania ASP.Net. Jednak obecnie musiałem odwoływać się do warstwy biznesowej bezpośrednio w niestandardowej klasie członkostwa, aby zweryfikować użytkowników, więc jeśli podążam za MVP, kod członkostwa nie powinien znajdować się w widoku z odniesieniami do warstwy biznesowej, powinien być w modelu, ale oznacza to odwoływanie się do System.Web.Security w modelu. Czy istnieje sposób, aby nadal korzystać z członkostwa ASP.Net z MVP, w którym projekty formularzy internetowych i winforms są budowane na tej samej strukturze MVP? Myślę, że muszę przekazać zależność od członkostwa prezenterowi, a następnie modelowi, ale nie widzę prostego sposobu, aby to zrobić. Jedną z powszechnie wymienianych zalet MVP jest to, że pozwala na budowanie różnych UI na tych samych prezenterach, modelach itp. Jednak w praktyce, czy to naprawdę działa dobrze, czy najlepiej jest wdrażać MVP osobno dla każdej technologii UI? Również w odniesieniu do projektu formularzy internetowych, czy stan sesji jest czymś, z czym widok może sobie poradzić, czy też wymaga to opakowania z niestandardową klasą i interfejsem i przekazania do prezentera w celu utrzymania?


title: Przeglądanie stron internetowych i nagłówek Accept-Datetime

text: Byłem w trakcie generowania dokumentacji do nadchodzącego projektu. Jedną z cech danych dostępnych w tym projekcie jest to, że zostaną one zrewidowane (lub przynajmniej duża ich część będzie). Natknąłem się na (jak rozumiem, bardzo nowy) nagłówek HTTP "Accept-Datetime". Wygląda to absolutnie idealnie, jeśli chodzi o umożliwienie dostępu do poprawionych danych przy użyciu istniejących interfejsów. Moje pytanie jest takie. Jakiego typu zwrotu należy użyć dla: 1. Otrzymanej daty, która jest przed początkową datą danych (myślę, że może 404 z opisem błędu w ciele)? 2. Dane, które są żądane za pomocą nagłówka, ale które nie obsługują wersji , wstępnie wprowadzam kod 406 - Niezaakceptowany


title: Czy istnieje praktyczny przewodnik po Team Software Process?

text: Widziałem stronę Carnegie Mellon dotyczącą TSP. Poszukuję praktycznego, nieakademickiego przewodnika po zastosowaniu TSP w realnym świecie. Naprawdę chciałbym wiedzieć, w jaki sposób TSP redukuje błędy?


title: Książki o Pythonie 3.1 nadal mają bezpośrednie zastosowanie do nauki Pythona 2.7?

text: Muszę nauczyć się Pythona (v2.7) do mojej pracy i szukać najlepszej książki wprowadzającej dla profesjonalnych programistów. Odkryłem (przez amazon), że "The Quick Python Book" jest najlepszy, ale to dla Pythona 3.1 Wiem, że jest wiele podobieństw w 2.7 i 3.1, a gdzieś przeczytałem, że możesz używać głównie składni 3.1 w 2.7 jako dobry " przyszłej praktyki”. Czy ktoś z doświadczeniem może sprawdzić, czy książka do nauki Pythona3 nadal będzie miała bezpośrednie zastosowanie w wersji 2.7? Dziękuję Ci bardzo. edit: „Książka Quick Pythona” jest przeznaczona dla wersji 3.1


title: Jak zapobiec ładowaniu bezużytecznych treści na stronie w projektowaniu responsywnym?

text: W responsywnym designie elementy są ukryte na stronie za pomocą zapytań `@media` oraz `display: none` w CSS. Ok. Jednak w moim projekcie przeglądarki, które mają mniej niż 800 pikseli szerokości, powinny w ogóle unikać ładowania niektórych treści. Po uzyskaniu dostępu za pomocą urządzenia z ponad 800px ekranu strona ładuje się w pełni. Na urządzeniach mobilnych lub nawet na komputerach stacjonarnych o szerokości mniejszej niż „800px” część treści jest ukryta. Chcę przyspieszyć ładowanie strony na urządzeniach o niskiej rozdzielczości i uniknąć ładowania fragmentów treści, których użytkownik nigdy nie zobaczy. Jak mam się do tego zabrać?


title: Problemy z klasyfikacją wagi błędów

text: W książce, którą mam, istnieje następująca klasyfikacja defektu: 1. Krytyczna: defekt otrzymuje „krytyczny” poziom ważności, jeśli jedna lub więcej krytycznych funkcji systemu jest uszkodzona przez defekt, który jest uszkodzony i nie ma obejścia. 2. Wysoki: Defekt otrzymuje „wysoki” poziom ważności, jeśli niektóre podstawowe funkcje systemu są osłabione, ale istnieje obejście. 3. Średnia: defekt otrzymuje „średni” poziom istotności, jeśli żadna krytyczna funkcja nie jest uszkodzona i istnieje obejście defektu. 4. Niski: Defekt otrzymuje „niski” poziom ważności, jeśli problem dotyczy kosmetycznej cechy systemu. Szczerze mówiąc, nie rozumiem. Na przykład punkt 2. Co jeśli podstawowa, ale nie krytyczna funkcja jest osłabiona i NIE ma obejścia. To samo w przypadku punktu 3: co się stanie, jeśli nie ma to wpływu na krytyczną funkcjonalność, ale nie ma obejścia? Np. pole opcjonalne w formularzu rejestracyjnym nie działa. Brak obejścia, ale ledwo problem.


title: W dobrym Scrumie, kiedy i jak powinna nastąpić ideacja i pisanie historii?

text: Wygląda na to, że większość artykułów i książek o Scrumie, które czytałem, a także wykłady, które słyszałem, mają bardzo niewiele do powiedzenia na temat procesu tworzenia pozycji w backlogu. W jaki sposób zespół w średnim lub dużym projekcie (tj. więcej niż kilku członków zespołu) powinien podejść do tworzenia i wyszczególniania pozycji w backlogu? Kiedy i jak powinna nastąpić ideacja i pisanie historii? Kto powinien być zaangażowany i kiedy? Kiedy członkowie zespołu (oczywiście inni niż właściciel produktu) powinni dołączyć do procesu? Jaka część zespołu jest potrzebna? Zauważ, że nie pytam o to, jak mała grupa mogłaby stworzyć historyjkę użytkownika lub inny element zaległości z pomysłów. Pytam więcej o to, kiedy i jak ta idea i pisanie opowiadań powinno przebiegać i kogo należy zaangażować. Jak możemy być bardziej zwinni na etapie tworzenia pomysłów/pisania historii?


title: Czy frontendy strony powinny być renderowane po stronie klienta czy po stronie serwera?

text: Rozmawiałem z kolegą, który przeniósł się z AS3 do świata HTML. Stworzył małą witrynę internetową (podobno nie ma żadnej dynamicznej zawartości) po raz pierwszy przestrzegając zasad braku flashowania i jakbyś miał młotek, który ma tendencję do wbijania wszystkiego, postanowił stworzyć framework w `JavaScript`, więc mógł zrobić wszystko "sposób AS3", z ramkami, czystą animacją współrzędnych X-Y i tak, aby animować zawartość. Strona byłaby najpierw w pełni załadowana, najpierw ładowałaby ogromną ilość JS, a potem strona byłaby dostępna bez zmiany adresu URL. Widoki zamieniłyby się w metody klasy (gdzie klasa reprezentuje sekcję, a metoda oznacza widok), które dołączają tekst do zmiennej, która jest następnie dodawana do elementu div. Broni tej sytuacji z wielu powodów: * Strony internetowe z dużą liczbą użytkowników robią to, aby zapobiec przeciążeniu serwera. * Łatwiej jest tworzyć nowe sekcje. * Łatwiej jest tłumaczyć, ponieważ tłumaczenia, teksty i prawie wszystko jest ładowane z `JSON`. * Możesz rozwinąć więcej sekcji bezpośrednio z pliku `JSON`. * Wszystko jest płynne, ponieważ nie przechodzisz na inną stronę. Teraz nadchodzi lojalny wobec PHP deweloper, który broni przeciwnej strony. Mówię, że widoki powinny być podzielone na mniejsze pliki, ale zawarte w plikach `.php` lub nawet `.html`, z logiką biznesową w kontrolerze i logiką widoku w tych plikach. To zwalnia klienta, ponieważ może wyłączyć `JavaScript` i nadal wyświetlać zawartość bez problemu. Oczywiście twój serwer musi wykonywać obliczenia, ale to tylko renderowanie plików. Niektóre korzyści mogą być następujące: * Nie musisz najpierw ładować całej witryny. Strony internetowe ładują się szybciej. * Twoje adresy URL są zawsze czyste i (jeśli to zrobiłeś) przyjazne, bez wtyczek i działają bezproblemowo w starych przeglądarkach, gdy przechodzisz na inną stronę. * Widoki są przechowywane w niezależnych plikach, dzięki czemu łatwiej jest z nimi pracować w zespole. * Widoki są zwykłymi plikami `html`, a nie wywołaniami metod dołączających łańcuchy, więc ich edycja jest po prostu naturalna. * Nadal potrzebujesz `PHP` (lub dowolnego innego języka), aby załadować dane z serwera (NodeJS nie jest tutaj brany pod uwagę) I oczywiście tutaj pojawia się prawdziwe pytanie. **Czy widoki powinny być renderowane po stronie klienta czy serwera?**


title: Czy programowanie zadaniowe w C++ wymagałoby nowych standardowych funkcji językowych?

text: Widziałem więc ten film na Youtube z tymi wszystkimi mistrzami C++ na GoingNative 2012 : Interaktywny panel, w którym każdy mógł zadawać pytania. Oto film, o którym mówiłem: GoingNative 2012 - Dzień 1 - Panel interaktywny: Znaczenie bycia natywnym A w czasie 0:24:00 ktoś zadał bardzo interesujące pytanie: > Od jakiegoś czasu zajmujemy się programowaniem współbieżnym przy użyciu pthreads, używanie > wątków windows i tak dalej i jestem bardzo szczęśliwy, że C++ i C dogoniły > programowanie współbieżne, ale wydaje mi się, że jest już o pięć lat lub dziesięć lat, ponieważ w tej chwili mamy wszystkie te potężne > wielordzeniowe i programowanie tych wielordzeniowych naprawdę nie powinno być > oparte na wątkach, powinno być oparte na zadaniach [...] a Microsoft ma _bibliotekę PPL > i tak dalej, a to zupełnie nie znajduje odzwierciedlenia w C++ standard. > [...] Jedyną rzeczą, której się boję, jest to, że standard może zostać zablokowany w > wątkach i utrudnić przejście do _Programowanie oparte na zadaniach_... Teraz jestem w tym całkiem nowy koncepcje i jestem trochę zdezorientowany. Czym właściwie jest _Programowanie oparte na zadaniach_. Czy ten termin odnosi się do tej samej rzeczy, do której odnosi się _Programowanie bez blokady_? Czy te dwa terminy są równoważne, czy są między nimi jakieś powiązania?


title: Czy zezwalasz na wdrażanie kodu warstwy prezentacji poza cyklem kompilacji?

text: W przypadku każdego standardowego projektu internetowego jako zasoby kodu będziesz mieć kod po stronie serwera, strony serwera, pliki JavaScript i CSS. Standardową praktyką dla kodu po stronie serwera jest posiadanie zestawu testów i skryptowego procesu kompilacji do kompilacji/pakowania/wdrażania kodu. Kompilacje zwykle przebiegają zgodnie z harmonogramem po przetestowaniu i zweryfikowaniu kodu w środowisku QA. Z drugiej strony często mamy wymagania, aby móc dowolnie przesyłać zasoby kodu warstwy prezentacji. Ponieważ nie wymagają kompilacji ani restartów, jest to wykonalne, ale jestem przekonany, że ten kod jest połączony z kodem po stronie serwera i jest równie prawdopodobne, że zniszczy całą witrynę, jeśli jest zepsuta. Dlatego nigdy nie należy go wypychać poza cykl kompilacji. Co jest uważane za najlepszą praktykę w tym zakresie?


title: Przesuwaj bajty przez bufor o stałym rozmiarze

text: Piszę `InputStream`, który przetwarza strumienie danych zawierające dane "przyczepy". Oznacza to, że końcowe **_n_** bajtów strumienia jest fragmentem danych, które muszą być obsługiwane oddzielnie i nie powinny być zwracane przez metody `read`. Moja klasa będzie utrzymywać wewnętrzną tablicę bajtów o długości **_n_** i odczytywać dane do tej tablicy bajtów ze strumienia bazowego. Następnie dane zostaną wyrzucone z przodu bufora, aby obsłużyć żądania odczytu. Implementacja metody `int read()` jest dość prosta — po prostu wywołuję tę samą metodę w strumieniu bazowym, przesuwam tablicę bajtów o 1 i przesyłam wynik do wywołującego. Zaimplementowanie `int read(byte[] b)` jest trudniejsze, ponieważ wymaga przesunięcia dużej liczby bajtów przez mój **_n_** -bajtowy bufor, przy jednoczesnym pobieraniu i porównywaniu bajtów od początku. Zasadniczo bufor „przesuwanego okna”, zawsze zawierający ostatnie **_n_** bajtów z mojego podstawowego strumienia. Mam wrażenie, że wynajduję koło na nowo, jeśli zacznę to kodować od zera. Czy ktoś może zasugerować, czy przeoczyłem istniejącą implementację `InputStream` lub `Queue`, która byłaby dobrze dopasowana do tego zadania?


title: Baza danych w chmurze?

text: Niektórzy z moich ostatnich klientów proszą o zdalne połączenia z serwerem biurowym, pracę autonomiczną itp. w aplikacjach winForm. Ponieważ pojęciem sieci jest zdalne połączenie z serwerem zarówno danych, jak i zasobów, powinno być możliwe umieszczenie obu tego w chmurze i połączenie z nim aplikacji winForm tak, jak z aplikacji internetowych. Jak każdy to testował, czy tak działa? Czy to wystarczająco szybko? Czy to jest bezpieczne? Jaki jest najlepszy host w chmurze do tego typu pracy?


title: Wysyłaj wiele e-maili do dostawców poczty e-mail, ale bez faworyzowania

text: Obecnie pracujemy nad nowym systemem wdrażania poczty e-mail. Mamy obecnie skonfigurowany system tak, aby odczytywał rekord z bazy danych, ładował treść wiadomości e-mail i wdrażał ją do celu. Teraz chcemy przenieść to do wielu wątków. Można to łatwo zrobić, z wyjątkiem tego, że następnie trafiamy do dostawców poczty e-mail zwracających kody SMTP o treści „Zbyt wiele połączeń” lub „Połączenie odroczone”. Rozwiązaniem tego problemu jest otwarcie przez wątek połączenia z dostawcą poczty e-mail i wdrożenie _n_ wiadomości e-mail, a następnie rozłączenie. Obecnie skonfigurowaliśmy aplikację tak, aby obsługiwała te wdrożenia poczty e-mail oparte na _sesji_. Problem polega na tym, że tabela bazy danych zawiera wiele adresów e-mail i nie są one pogrupowane według dostawcy poczty e-mail, ponieważ będzie to wskazywać na faworyzowanie. Musimy mieć możliwość pobrania określonej liczby np. Hotmaila, e-maili (@hotmail.com, @hotmail.co.uk, @live.co.uk), aby zmniejszyć liczbę połączeń do Hotmaila i zmniejszyć ryzyko wystąpienia błędu „Zbyt wiele połączeń”. Jesteśmy w punkcie, w którym krążyliśmy w kółko, próbując znaleźć rozwiązanie, więc pomyślałem, że wyrzucę to i zobaczę, czy ktoś ma jakieś pomysły? **EDYTUJ** Chciałbym podkreślić, że ta aplikacja nie jest używana do celów spamowania.


title: Szybki algorytm do przeszukiwania posortowanej tablicy liczb zmiennoprzecinkowych w celu znalezienia pary elementów zmiennoprzecinkowych obejmujących wartość wejściową

text: Mam tablicę pływaków, posortowaną od najmniejszej do największej, i muszę być w stanie wybrać najbliższy pływak większy lub mniejszy niż przekazana wartość wejściowa. Ta wartość wejściowa niekoniecznie jest obecna jako wartość w tablicy. Naiwnym podejściem byłoby wykonanie prostego liniowego przeszukiwania tablicy. Może to wyglądać tak: void FindClosestFloatsInArray( float input, std::vector<float> array, float *min_out, float *max_out ) { attach( input >= array[0] && input < array[ array.size()- 1 ] ); for( int i = 1; i < array.size(); i++ ) { if ( array[i] >= input ) { *min = array[i-1]; *maks = tablica[i]; } } } Ale oczywiście w miarę jak tablica staje się większa, będzie to stawało się coraz wolniejsze. Czy ktoś ma pomysł na algorytm, który pozwoli mi optymalnie znaleźć te dane? Przełączyłem się już na wyszukiwanie binarne, co nieco poprawiło sytuację, ale nadal jest znacznie wolniejsze niż bym chciał, a ponieważ nie szukam konkretnej wartości, która istnieje w tablicy, nigdy nie może się zakończyć wczesny. Więcej informacji: Wartości zmiennoprzecinkowe w tablicy niekoniecznie są rozłożone równomiernie (tzn. tablica może składać się z wartości „1.f, 2.f, 3.f, 4.f, 100.f, 1200.f , 1203.f, 1400.f". Wykonuję tę operację setki tysięcy razy, ale mogę wykonać dowolną ilość wstępnego przetwarzania na tablicy pływaków, jeśli poprawi to czas wyszukiwania. Absolutnie mogę zmień na użycie czegoś innego niż wektor do ich przechowywania, jeśli to pomoże.


title: Jaki jest standardowy/akceptowalny czas obsługi określonej wersji oprogramowania?

text: Powiedzmy, że wersja 2.4.x Software Package X została wydana 2 lata temu i była sprzedawana do około 6 miesięcy temu. Wersja 3.1.0 jest już dostępna (która rozwiązuje wiele problemów z wersją 2.4.x) i jest jedyną aktywnie sprzedawaną wersją. W tym przypadku oprogramowanie jest sprzedawane dużym firmom, a nie osobom fizycznym, więc wymagany nakład związany z konserwacją jest znaczny. Jak długo firma powinna oferować wsparcie dla wersji 2.4.x?


title: Jak działają serwisy internetowe do pobierania dzwonków?

text: Chcę dowiedzieć się więcej o działaniu usług internetowych pobierania dzwonków. Zajmuję się programowaniem stron internetowych w java i chciałbym stworzyć usługę sieciową, która wysyła dzwonek na telefon komórkowy użytkownika, gdy użytkownik wysyła SMS do usługi sieciowej. * Czy ktoś zna ten rodzaj usługi? * Czego potrzebuję, aby móc stworzyć coś takiego? * Czy system dzwonków zarabia na każdym SMS-ie, czy też operator komórkowy otrzymuje to wszystko?


title: jak mogę narysować zatwierdzenie transakcji bazy danych na diagramie sekwencji?

text: Jak narysować zatwierdzenie transakcji bazy danych na diagramie sekwencji? EDIT Chcę narysować proces zatwierdzania/wycofywania transakcji bazy danych diagramu sekwencji


title: Czy jest to właściwa „reguła” identyfikacji zapisu „duże O” algorytmu?

text: Dowiedziałem się więcej o notacji Big O i o tym, jak ją obliczać na podstawie tego, jak napisany jest algorytm. Natknąłem się na ciekawy zestaw „reguł” obliczania algorytmu notacji Big O i chciałem sprawdzić, czy jestem na dobrej drodze, czy też zboczem. **Duża notacja O: N** function(n) { For(var a = 0; i <= n; i++) { // To N, bo to tylko jedna pętla // Zrób coś } } **Wielka notacja O : N 2** function(n, b) { For(var a = 0; a <= n; a++) { For(var c = 0; i <= b; c++) { // N do kwadratu, bo dwa zagnieżdżone pętle // Do rzeczy } } } **Big O Notation: 2N** function(n, b) { For(var a = 0; a <= n; a++) { // Do rzeczy } For(var c = 0;i <= b;c++) { // Jest 2N pętle są poza sobą // Zrób coś } } **Duża notacja O: NLogN** function(n) { n.sort(); // NLogN pochodzi z rodzaju? For(var a = 0; i <= n; i++) { // Do rzeczy } } Czy moje przykłady i dalszy zapis są poprawne? Czy istnieją dodatkowe zapisy, o których powinienem wiedzieć?


title: W prostym języku angielskim, do czego indeks bazy danych jest najbardziej podobny?

text: **Konfiguracja** : Załóżmy, że prowadzisz zajęcia wprowadzające do klasy Bazy danych, uczniowie są studentami CS, którzy mają praktyczną wiedzę na temat struktur drzewa, tego, jak mogą przyspieszyć wyszukiwanie i prawdopodobnie zaimplementowali kilka w swoim życiu. **Pytanie** : Jak opisałbyś sposób, w jaki baza danych używa indeksów do wyszukiwania w tabeli zestawu kluczy? Do jakiej struktury najbardziej przypomina indeks bazy danych? **Bonus** : Jak ktoś może napisać zapytanie SQL gdzie klauzula, aby skorzystać z możliwości wyszukiwania indeksu, który projektuje w danej tabeli? Odpowiedzi powinny odnosić się do wszystkich produktów bazodanowych jako całości. Poszukuję ogólnych wskazówek, które pozwolą na szybsze przeszukiwanie wszystkich baz danych. Zwykłe angielskie opisy proszę, bez kodu, opisy wyszukiwania Big O są w porządku. To pytanie może być zbyt specyficzne dla tej strony, rozważałem pytanie na StackExchange, ale ponieważ proszę o prosty angielski opis szerokiej koncepcji, pomyślałem, że ta strona będzie w porządku.


title: Znaczenie licencji MIT

text: Załóżmy, że do tworzenia oprogramowania używam tego API ActionScript wydanego na licencji MIT: http://www.cove.org/ape/docs/api/ 1. Czy mogę sprzedać to oprogramowanie? 2. Czy muszę oddać kod źródłowy mojego oprogramowania? 3. Czy każdy, kto otrzyma moje oprogramowanie, może je odsprzedać?


title: Jak wdrożyć system do ukrywania spamowanych treści użytkowników?

text: Staram się wypracować dobry sposób zarządzania treścią przesłaną przez użytkownika i stworzyć metodę określania, kiedy spamowana/słaba treść powinna być ukryta. Celem jest stworzenie głosowania komentarzy podobnego do komentarzy na youtube typu „lubię/nie lubię”, a jeśli wynik jest dobry, pokaż komentarze, w przeciwnym razie są niewidoczne. **Podejście** Pomyślałem, że zrobię to za pomocą tabeli komentarzy, możesz utworzyć dwie kolumny stawki w górę, stawki w dół. Dla każdej oceny w górę komentarz otrzymuje kolumnę **rateup** to: rateup = rateup + 1 i tak samo dla **ratedown** : ratedown = ratedown + 1 Następnie można umieścić klauzulę w zapytaniu bazy danych, aby tylko wybrać komentarze, jeśli ich współczynnik stawki jest większy niż liczba, powiedzmy -5: WHERE (rateup - ratedown) > -5, ale wymagałoby to dużo głosowania w górę iw dół, jeśli użytkownik opublikuje wiele postów ze spamem/o niskiej zawartości w witrynie? Aby wzmocnić podejście, mógłbym dodać te same dwie kolumny do tabeli użytkowników, a także zaktualizować te kolumny, aby uzyskać ogólny widok połączonego współczynnika przesyłania treści przez użytkowników, a następnie wyświetlić komentarze w następujący sposób: WHERE ((comment.rateup - comment.ratedown) > -5 ) && ((user.rateup - user.ratedown) > -5 ) **Problemy** Czy takie podejście prowadziłoby do przypadków masowego tworzenia fałszywych kont przez użytkowników w celu zaatakowania dobrych użytkowników i zrujnowania ich reputacji? Jakich innych metod mogę użyć, aby ukryć spamowane/słabe treści bez konieczności ręcznego przeglądania wszystkiego przez moderatorów?


title: Czy podejście do frameworka Play koniecznie prowadzi do zamieszania w kodzie?

text: Chcę rozpocząć nowy projekt i właśnie skontaktowałem się z frameworkiem Play, który ma podejście przypominające ruby on rails, które zwróciło moją uwagę. Nie jestem ekspertem od szyn, ale uważam, że produktywność w tych frameworkach jest świetna. Śledzę kilka samouczków, ale zastanawiam się: Play ma Model, który służy do wypełniania widoku, ale także służy do wykonywania zapytań DB. Wydaje mi się to trochę niezręczne, ale zauważyłem, że rails ma również takie podejście. Zastanawiam się, czy użycie tej samej encji do mapowania relacyjnego obiektów i wypełnienie widoku może powodować kłopoty. Oto dwa przykłady, które mogę sobie wyobrazić: * Mój widok wymagał tylko nazwy i identyfikatora z dużej jednostki * Mój widok wymaga informacji od różnych jednostek W drugim przypadku przypuszczam, że byłbym w stanie wykonać sprzężenie. Ale wydaje się to jakoś niechlujne: przyłącza w moim kontrolerze, encje DB są używane do wypełniania widoków. Czy brakuje mi tutaj jakiegoś punktu? Mam na myśli, że te frameworki wydają się świetne i chciałbym z nich skorzystać, ale zastanawiam się, czy moja rana kodu zamieni się w kod spaghetti. Wydaje się, że jest w przeciwnym kierunku niż dowiedziałem się o rozdzieleniu obaw. Jeśli rozdzielam w architekturze warstwowej (modele dla moich widoków, warstwa logiki biznesowej i warstwy DAO), czy powinienem nadal używać gry, czy powinienem przejść na coś innego, jak Spring?


title: Jak można dostosować Scrum do środowiska akademickiego?

text: Obecnie pracuję z profesorem na moim uniwersytecie nad opracowaniem nowych programów nauczania dla kursów inżynierii oprogramowania i projektowania Capstone oferowanych na mojej uczelni. Do niedawna oba kursy wykorzystywały wyłącznie model kaskadowy, dzięki czemu studenci spędzali większość czasu na pisaniu długich raportów. Po wielu naciskach ze strony mojego profesora, mój profesor zdecydował się włączyć Scrum do programu nauczania Inżynierii Oprogramowania w ostatnim semestrze. Pierwsza połowa semestru była nadal kaskadowa, a studenci pisali 40-stronicowe raporty projektowe i dokumenty specyfikacji oprogramowania. W połowie semestru wszystkie zespoły musiały wydać demo swoich aplikacji. W tym momencie kurs przeszedł na Scrum, z dwoma 3-tygodniowymi sprintami. Teraz próbujemy znaleźć sposób na całkowite wyeliminowanie wodospadu i stworzenie wyłącznie programu nauczania opartego na Scrumie. Niestety, napotkaliśmy kilka niezgodności między Scrumem a uczniami: * Codzienne spotkania Scrumowe są prawie niemożliwe dla uczniów. Nawet podczas samych zajęć uczniom niewygodne jest organizowanie spotkań Scrum, ponieważ profesor zwykle prowadzi wykłady. * Szacowanie punktów/godzin jest trudne, ponieważ uczniowie są niedoświadczeni i dlatego nie mogą dokładnie przewidzieć, jak długo coś potrwa. * Scrum działa najlepiej z pełnoetatowymi, współlokalizowanymi programistami, ale studenci nie. Co najwyżej studenci poświęcają na kurs 15-20 godzin tygodniowo, a organizowanie spotkań roboczych może być niezwykle trudne. Zespoły mogą liczyć do 10 uczniów (i zawsze jest jeden lub dwóch wolnych). * Profesorowie pragną dokumentacji! Nie słyszałem o żadnych raportach Scruma — tylko o zaległościach i wykresach wypalania (które, nie jestem pewien, wystarczą, by uspokoić naukowców). * Uczniowie często zakładają, że agile oznacza „wskocz od razu i zacznij kodować, nie oglądając się za siebie”. Prowadzi to do jednego z najstraszniejszych kodów, jakie można sobie wyobrazić. Dlatego szukam sposobu na wymuszenie prawidłowego projektowania bez konieczności posiadania 50-stronicowego dokumentu lub stosu diagramów UML. Biorąc pod uwagę te problemy, jak myślisz, jak mój profesor i ja możemy dostosować Scrum do funkcjonowania w środowisku akademickim (a czy powinniśmy w ogóle zawracać sobie głowę Scrumem)? Poza tym, czy nadal warto uczyć modelu kaskadowego? Z góry dziękujemy za wszelkie uwagi!


title: Różnica między "String" a "String" w .NET i która jest najlepsza?

text: W .NET Framework, przynajmniej w języku C#, mamy dwie "wersje" typu string: * "string" * "String" Wydaje się, że są one zamienne, ale czy na pewno? Jeśli nie są one zamienne, czy generalnie lepiej jest używać jednego zamiast drugiego iw jakich okolicznościach?


title: Czy instalowanie TortoiseSVN na serwerach produkcyjnych jest bezpieczne?

text: Mały sklep, kilka serwerów produkcyjnych, brak serwerów testowych i deweloperskich, wszystko oparte na Win2k3 WEB. Istnieje potrzeba przechowywania wersjonowanych plików na jednym z komputerów. Czy TortoiseSVN jest bezpieczny przed wykorzystaniem, czy potrzebuje dodatkowego wzmocnienia? Jakieś znane problemy licencyjne, niezgodności?


title: Właściwe podejście do konwersji dokumentu Word zawierającego formularze w aplikacji internetowej

text: Wiedziałbym, czy ktoś może zasugerować dobre podejście do konwersji dokumentu tekstowego zawierającego formularze w aplikacji internetowej, a konkretnie w aplikacji zbudowanej za pomocą WaveMakera. wspomniałem). Na przykład, jeśli mam stronę w dokumencie Word, która mapuje pola encji użytkownika, jakie może być moje „podejście programisty”, aby przekonwertować ją bez większego użycia kopiowania i wklejania, ale z dynamiczną metodologią?


title: Oddzielanie modelu od interfejsu użytkownika

text: Mam aplikację Swing z niestandardowym modelem TreeModel, który może odwoływać się do wystąpień domeny. Zastanawiam się, jakie zmiany mógłbym wprowadzić, gdybym później rozważył przejście do interfejsu internetowego. Czy model wtykowy byłby uważany za dobry projekt? Co byś zrobił?


title: Gdzie mogę zacząć naukę budowania aplikacji webowych w C#

text: Do tej pory pisałem strony internetowe w PHP, z wyjątkiem mojego ulubionego projektu napisanego w Pythonie. Chciałbym rozpocząć naukę języka C# do użytku w sieci Web, ale nie mam pojęcia, od czego zacząć. Nic nie wiem o .Net. Czy są jakieś dobre tutoriale lub książki online itp., które zawierają krótkie wprowadzenie do środowiska .Net (konkretnie C#, a konkretnie dla sieci)? Nie jestem nawet pewien, co muszę zainstalować. Chyba Visual Studio, ale co jeszcze? Coś specjalnego, czy VS załatwi sprawę?


title: Jak mogę zredukować mój problem do problemu maksymalnego przepływu?

text: Próbuję zredukować mój problem do problemu z maksymalnym przepływem, aby móc uruchomić algorytm maksymalnego przepływu w tym problemie. Ale jest kilka rzeczy, których mi brakuje podczas przekształcania mojego problemu. Mój problem to: * są klasy o maksymalnej pojemności * są studenci i ich lista życzeń zawiera 5 klas, które chcą * studenci mogą wybrać maksymalnie 5 klas. A celem jest: * zmaksymalizowanie liczby zajęć, na które zapisują się studenci. ![Obraz](http://i.stack.imgur.com/sjYPF.jpg) Jeśli umieszczę uczniów i klasy jako wierzchołki (patrz obrazek powyżej), dodaj węzeł źródłowy `s` który ma krawędź do każdego student i węzeł ujścia `t`, który ma krawędź do każdej klasy, jakie będą koszty krawędzi? * koszt krawędzi między klasami a węzłem ujścia t lub * koszt krawędzi między węzłem źródłowym s i a uczniami Czy poniższe założenia są poprawne? Myślę, że przewaga między kosztami uczniów i zajęć powinna wynosić 1. Ponieważ uczeń może zapisać się na zajęcia tylko raz w semestrze. Myślę, że koszt krawędzi pomiędzy klasami a węzłem ujścia `t` będzie maksymalną pojemnością klasy. Nie mam pojęcia o kosztach brzegowych między węzłami źródłowymi a węzłami uczniów. A na koniec, po ułożeniu, wystarczy uruchomić algorytm max flow?


title: Twórcy Javy: dlaczego nie skorzystać z Groovy?

text: OK, więc w dzisiejszych czasach sporo osób używa Javy. Ale ponieważ język zbliża się do dwóch dekad, nie jest to najfajniejsza opcja na świecie. Wielu z nas jest podekscytowanych językami dynamicznymi z pewnymi funkcjami funkcjonalnymi, takimi jak Ruby czy Python, mimo że spędzamy całe dnie na Javie. Dlaczego więc adopcja Groovy jest tak powolna? Wygląda na to, że Groovy oferuje wiele korzyści płynących z Ruby i Pythona, ale znacznie łatwiej jest przenieść sklep Java do Groovy. Nawet jeśli chodziło o wydajność, wydaje się, że wielu chciałoby używać Groovy do testowania produkcyjnego kodu Java. Lub użyj Groovy/Grails dla aplikacji wewnętrznych, w których problemy z wydajnością są minimalne. Lub do pisania jednorazowych skryptów do generowania kodu. Jednak Groovy pozostaje poza 50 najlepszymi językami Tiobe z powodów, które są dla mnie niejasne. Profesjonalnie używam Groovy i Grails od około czterech miesięcy i było to wspaniałe doświadczenie, tak że nienawidzę myśleć o powrocie do modelu Java/Spring/Hibernate. Czy ktoś ma jakiś sens, dlaczego nie widzimy bardziej znaczącej migracji z Javy do Groovy? Zauważ, że nie pytam, dlaczego programiści Java nadal używają Javy do nowych projektów. Moje pytanie brzmi: Dlaczego większość programistów Java nadal nie używa Groovy'ego _w ogóle._ **Edycja:** Zakładam, że wszyscy dobrzy programiści widzą użyteczność dynamicznego pisania i funkcji wyższego rzędu _dla niektórych zadań programistycznych._ ( Nawet jeśli zostanie to uznane za nieodpowiednie dla kodu produkcyjnego).


title: Jak przyspieszyć strony internetowe oparte na PHP?

text: Wiele osób mówi o czymś takim jak akcelerator, kod operacyjny itp., aby przyspieszyć działanie witryny. Szczerze mówiąc, nie wiem, jak sprawić, by jakakolwiek strona PHP działała dobrze i kiedy muszę używać takich rzeczy i co jeśli ich użyję, będzie mnie to dużo kosztować? Ogólnie lubię strony internetowe, które działają dobrze z doskonałym i szybkim czasem ładowania dla użytkownika (wiem, że czas ładowania ma inne czynniki takie jak szybkośćinternetu ale zależy mi tutaj na wydajności samego kodu PHP jak sprawić, by działał lepiej ). Czy możesz opowiedzieć mi o wszystkich sposobach przyspieszenia dowolnej witryny PHP i czy są one możliwe i łatwe do wdrożenia, czy nie?


title: Wiele małych klas a logiczne (ale) skomplikowane dziedziczenie

text: Zastanawiam się, co jest lepsze pod względem dobrego projektowania OOP, czystego kodu, elastyczności i unikania zapachów kodu w przyszłości. Sytuacja obrazowa, w której masz wiele bardzo podobnych obiektów, które musisz przedstawić jako klasy. Klasy te nie mają żadnej konkretnej funkcjonalności, są tylko klasami danych i różnią się tylko nazwą (i kontekstem) Przykład: Class A { String name; opis ciągu; } Klasa B { Nazwa ciągu; Liczba ciągów; opis ciągu; } Klasa C { Nazwa ciągu; Liczba ciągów; opis ciągu; Ciąg obrazuUrl; } Klasa D { Nazwa ciągu; Liczba ciągów; } Klasa E { Nazwa ciągu; Liczba ciągów; Ciąg obrazuUrl; Wiek sznurka; } Czy lepiej byłoby trzymać je w osobnych klasach, aby uzyskać "lepszą" czytelność, ale z wieloma powtórzeniami kodu, czy też lepiej użyć dziedziczenia, aby być bardziej DRY? Używając dziedziczenia, uzyskasz coś takiego, ale nazwy klas stracą to kontekstowe znaczenie (z powodu is-a, not has-a): Class A { String name; opis ciągu; } Klasa B : A { Liczba ciągów; } Klasa C : B { String imageUrl; } Klasa D : C { Wiek łańcucha; } Wiem, że dziedziczenie nie jest i nie powinno być używane do ponownego użycia kodu, ale nie widzę innego możliwego sposobu na zmniejszenie powtórzeń kodu w takim przypadku.


title: Nazwy typów, klas i wyjątków czasami się nie udają

text: Właśnie zacząłem pracować jako programista systemu i nie lubi etykietowania wyjątku domowego: `HumanErrorException`. Moim zdaniem nie ma czegoś takiego jak błąd ludzki w systemie komputerowym - tylko użytkownicy, którzy nie postępują tak, jak oczekiwał programista. Tak więc prawdziwą etykietą wyjątku byłoby `DeveloperNotTakingUserBehaviourSeriouslyException`, ale myślę, że będzie walka, kiedy zmienię etykietę :) Czy kiedykolwiek widziałeś źle oznaczony wyjątek (typ, klasa lub metoda)? Jeśli tak, co z tym zrobiłeś?


title: Jaki jest przypadek użycia klasy przyjaciela C++?

text: Próbuję zrozumieć przyjaciela C++. Kiedy jest dobrym przypadkiem użycia przyjaciela? Przypuszczam, że jeśli chcemy, aby inna klasa miała dostęp do atrybutów innych klas, dlaczego nie zrobimy tego po prostu jako publiczna lub zamiast tego nie odziedziczymy po tej klasie? Dziękuję za pomoc.


title: O książce „Peopleware – produktywne projekty i zespoły”

text: Czytałem Peopleware w 2009 roku. Była to jedna z najlepszych książek, jakie kiedykolwiek czytałem. Ale ta książka jest trochę stara. Chciałabym wiedzieć, Twoim zdaniem, co jest, a co nie jest istotne w tej książce?


title: Oddzielne strony Oddzielne ładunki?

text: Praca w dwóch formatach w całej naszej witrynie - PC i mobile. Każde zgłoszenie będzie posiadało sprawdzenie, kim jest klient. Wtedy dwie metody wydają się opcjonalne: 1. Odpowiednio renderuj stronę. 2. Przekierowanie do strony równoległej Czy istnieje różnica w obciążeniu serwera (np. może 2 ma mniejsze obciążenie, ponieważ żądania są faktycznie kierowane na różne strony)? Natomiast wydaje się, że posiadanie jednej strony byłoby łatwiejsze w utrzymaniu.


title: Jak często refaktorujesz lub restrukturyzujesz swój kod w długoterminowych projektach?

text: Jako programiści zawsze chętnie uczymy się nowych rzeczy i doskonalimy to, co robimy. Wszyscy mieliście chwile, kiedy patrzycie na swój stary kod i macie takie wrażenie: > " _WTH, nie mogę uwierzyć, że kiedyś pisałem taki kod_ " Cóż, jeśli chodzi o długoterminowe projekty, nad którymi pracujesz , co robisz, gdy patrzysz na swój stary kod? Prawdopodobnie nauczyłeś się nowych technik, których nie używałeś, rozpoczynając projekt. Więc prawdopodobnie bardzo chcesz przeprowadzić refaktoryzację lub restrukturyzację, lub wymienić moduły w swoim projekcie. Ale kiedy jest na to właściwy czas i jak często to robisz? Ponadto istnieje ryzyko, jeśli przeprowadzisz poważną refaktoryzację. Istnieją również ograniczenia budżetowe, więc możesz mieć ochotę na wprowadzenie zmian, ale kierownik projektu nie da ci na to czasu. Jak ludzie podchodzą do takich sytuacji?


title: Jakie pułapki tkwią w korzystaniu z klas częściowych?

text: W odpowiedzi na to pytanie w komentarzach, o których wspomniałem, słyszałem, że najlepiej unikać zajęć częściowych, jeśli to możliwe. A jeśli jakakolwiek jest przyczyna tego sentymentu? Lub jeśli jest to nieważny sentyment, w jaki sposób można przezwyciężyć postrzegane szkody?


title: Narzędzia Subversion pomagające w rozgałęzianiu i łączeniu

text: Nasz sklep wkrótce wyda nową wersję naszej aplikacji. I będziemy musieli naprawić błędy w wersjach w terenie, jednocześnie rozwijając nowe funkcje dla następnej wersji. Szczerze mówiąc, jestem trochę przytłoczony myślą, że spróbuję zarządzać tym wszystkim za pomocą wiersza poleceń. Czy są naprawdę dobrzy klienci Subversion, którzy pomagają zarządzać rozgałęzieniami i łączeniem? Mamy do dyspozycji komputery z systemem Windows i Linux; więc każda platforma jest w porządku. Jeśli nie ma żadnych dobrych narzędzi, które pomagają w odpornym na idiotów rozgałęzianiu i łączeniu, jakie są najlepsze wskazówki dotyczące zarządzania wieloma gałęziami?


title: Czy istnieje spersonalizowany język programowania, którego możesz użyć do konwersji na inne?

text: Czy istnieje język programowania, w którym można ustawić własne konfiguracje składni i przekonwertować kod na wybrany przez Ciebie język? Na przykład, możesz wybrać określone konfiguracje, takie jak "indeksowane bloki Pythona", `[a,b,c]` inicjuje tablice, `^` do potęgowania i inne. Skrypt przekonwertowałby go na odpowiednik wybranego przez Ciebie języka.


title: Podwójne licencjonowanie z biblioteką GPL

text: Mam pytanie dotyczące prac pochodnych oprogramowania na GPL. Wyobraź sobie następującą sytuację: Firma pisze oprogramowanie (A) przy użyciu biblioteki (B), która jest wydana na warunkach GPL. Oczywiście teraz oprogramowanie (A) musi zostać wydane na licencji zgodnej z GPL. Ale co z podwójnym licencjonowaniem? Jeśli oprogramowanie (A) jest wydane na dwóch licencjach, GPL i komercyjnej, czy jest to niezgodne z warunkami biblioteki (B)? Reformując pytanie, czy GPL wymusza wyłączność na prace pochodne?


title: Tworzenie interfejsu interfejsów

text: **Tło:** Mamy klasę, która zarówno nasłuchuje na gnieździe, jak i ustawia dla siebie wartości na podstawie tego, co odczytuje z gniazda. Wierzę, że trzyma się SRP. Aby dostosować się do ISP, stworzyliśmy jeden interfejs do obsługi gniazd (np. `StartListening`, `StopListening`) oraz inny interfejs, który zawiera pola tylko do odczytu dla wartości odczytanych z gniazda i zmodyfikowaliśmy naszą klasę, aby zaimplementować oba. Pomysł polegał na tym, że przekazujemy `ISocketStuff` (nie jego prawdziwą nazwę) do kodu, który musi rozpocząć/zatrzymać nasłuchiwanie i przekazujemy `ISocketValues` do miejsc, które muszą znać wartości. **Pytanie:** Przeglądałem kod współpracownika i miał coś takiego: `interfejs publiczny ISocketStuffAndValues : ISocketStuff, ISocketValues {};` I przekazywał go do konstruktora. Czułem się źle, ale nie mogłem wymyślić żadnego powodu, żeby tego nie robić. Chodziło o obejście drażliwego problemu projektowego, mógł po prostu przejść w `ISocketValues`, ale chciał to zrobić i nie mogłem mu powiedzieć, dlaczego był to zły wybór. Czy to zły wybór? Jakie powody mogłem podać, aby po prostu przekazać `ISocketValues` i nie tworzyć `ISocketStuffAndValues`?


title: najlepsza (webowa) architektura dla mojego projektu

text: Nie jestem więc pewien, czy to naprawdę właściwe miejsce, aby zadać pytanie, czy nawet właściwe pytanie, ale chcę spróbować. Wymagania: Powinniśmy mieć bazę danych i serwis internetowy (lub coś podobnego), który działa w NASZYM biurze, klienci mogą uzyskać dostęp do aplikacji przez internet ("wohooo"). Klienci muszą mieć możliwość tworzenia zamówień w prostej masce. Istnieje maska podstawowa (którą mają wszyscy klienci), ale maska może również zawierać pewne elementy specyficzne dla klienta. Po utworzeniu zamówienia etykieta z kodem kreskowym (zawierającym numer zamówienia) jest drukowana lokalnie (i automatycznie) w ich biurze na drukarce etykiet. Biorą etykietę i umieszczają ją na próbce, którą następnie wysyłają do nas (w rzeczywistą pocztę). Pobieramy próbkę, skanujemy kod kreskowy na etykiecie i zamówienie pojawia się na naszym "ekranu administracyjnym". Mamy wtedy wszystkie potrzebne informacje o zamówieniu (i próbce). Z pewnością potrzebujemy również backendu, w którym nasi pracownicy mogą edytować maskę specyficzną dla klienta i dodawać niektóre pola (dla konkretnych klientów) i inne dane podstawowe. * * * W sumie nie brzmi to zbyt skomplikowanie. Jedyną rzeczą, która trochę się wyróżnia, może być automatyczny wydruk etykiet na ich miejscu. Z tego powodu może nie być możliwe użycie architektury „tylko po stronie serwera” (takiej jak jsf lub spring z jsp itd.), ponieważ musisz mieć dostęp bezpośrednio na ich lokalnych drukarkach. Pomyślałem więc, że dobrym sposobem może być użycie spring (z Hybernate, JavaBeans (JEE)) razem z JavaFX, co pozwoliłoby na dostęp do lokalnych drukarek i tak dalej. Pomyślałem, że możemy po prostu zrobić webinstaller/webstart dla aplikacji, która zainstaluje klienty JavaFX dla klientów. Klient JavaFX mógłby wówczas komunikować się z serwerem internetowym (wiosna) i tam wstawiać zamówienie, uzyskać wszystkie wymagane informacje, takie jak numer zamówienia do wydrukowania etykiety i tak dalej. Dla backendu w naszym biurze mógłbym sobie również wyobrazić użycie JavaFX... Więc gdzie moje pytanie? Cóż, to proste: czy to dobry sposób na zrobienie tego? Czy to są odpowiednie technologie? A może jest to już zbyt skomplikowane i można to zrobić w znacznie prostszy sposób? Jeśli tak, co proponujesz? Oczywiście chcę również położyć duży nacisk na łatwość rozszerzalności i konserwacji.


title: Skrócenie prostych instrukcji IF

text: Jeśli założymy, że mamy ten mały fragment kodu: string str = "checked"; test logiczny1; if (str == "sprawdzone") { test1 = prawda; } else { test1 = fałsz; } Czy zmiana prostej instrukcji takiej jak ta na następującą jest złą praktyką?: bool test2 = (str == "checked"); Ponieważ działają dokładnie tak samo i działają zgodnie z wymaganiami, więc nie wyobrażam sobie, jak by to było. Jednak jako młody, niedoświadczony programista nie jestem świadomy, czy coś takiego jest mile widziane, czy nie. Czy ktoś może mi powiedzieć, jeśli to NIE jest w porządku, dlaczego nie? Następujący program testowy: za pomocą Systemu; public class Test { public static void Main() { string str = "sprawdzone"; test logiczny1; if (str == "sprawdzone") { test1 = prawda; } else { test1 = fałsz; } bool test2 = (str == "sprawdzone"); bool test3 = (str != "sprawdzone"); Konsola.WriteLine(test1.ToString()); Konsola.WriteLine(test2.ToString()); Konsola.WriteLine(test3.ToString()); } } Dane wyjściowe: Prawda Prawda Fałsz Wszelkie spostrzeżenia itp. są mile widziane.


title: Jako programista, jakie ścieżki powinienem obrać w zakresie edukacji?

text: Po serii narzekań na temat prac domowych, przydatności zajęć, które chodzę, i mojego nauczyciela informatyki, mam kilka pytań dotyczących edukacji w mojej ścieżce zawodowej jako programista. Nauczyłem się wszystkiego, co wiem o programowaniu. Ostatnio zastanawiałem się nad korzyściami uczenia się siebie w porównaniu z uczeniem się od nauczyciela. Czuję, że mogę przegapić kilka rzeczy, których normalnie bym się nauczył. Mogę nauczyć się pewnych pojęć źle, lub coś takiego. W końcu edukacja informatyczna istnieje dłużej niż ja. Problem polega na tym, że na moich zajęciach z programowania nie uczę się niczego nowego o informatyce. Umieściłem 2 kurs programowania komputerowego w moim harmonogramie (oznaczony jako Informatyka, kiedy się zapisałem). Okazuje się, że to tylko nauka C++ i oczywiście OOP. W rzeczywistości uczniowie CP2 są w tej samej klasie w tym samym czasie, co uczniowie CP2, z wyjątkiem tego, że kurs CP1 obejmuje półroczną klasę, a nie cały rok. Pomyślałem, że zrobimy coś w rodzaju struktur danych (innych niż tablice) lub coś, w czym mam mniej doświadczenia. Nauczyciel kazał mi zmienić mój harmonogram na CP1, ale „puszcza mnie” do pracy nad projektami z uczniami CP2 podczas gdy on uczy uczniów CP1. Zwykle kończę pomaganiem uczniom CP2 w błędach budowania i tym podobnych rzeczach, gdy skończę. Z pewnością nie mam nic przeciwko pomaganiu im, ale nie uczę się niczego nowego i prawdopodobnie nie będę, widząc, że listy połączone AFAIK będą najbardziej zaawansowanym nauczanym pojęciem (dla uczniów CP2; zajęcia kończą ten semestr dla CP1 , w tym mnie). Szczerze mówiąc, nie jestem zainteresowany kopiowaniem kodu źródłowego z papieru na ekran, co stanowi 90% tego, co robią studenci CP2. Chcę się uczyć czegoś związanego z informatyką. Nie chciałbym siedzieć i czekać, aż nadrobię zaległości. Chcę brać udział w zajęciach nie oferowanych przez moje liceum, jak matematyka dyskretna, algorytmy i struktury danych lub coś w tym rodzaju. Więc moje pytanie brzmi, gdzie mogę wziąć zajęcia, których nie ma w mojej szkole średniej? Czy mogę uczęszczać na zajęcia w college'u? (należy pamiętać, że w moim liceum nie ma żadnych równoległych, AP ani zajęć na odległość dotyczących informatyki, poza klasą CP1/CP2, w której chodzę). Czy znasz jakieś zajęcia online, na które mógłbym wziąć udział? Dzięki, Danny Shields PS: Mówię o moim doświadczeniu w programowaniu na moim profilu StackExchange, jeśli to pomaga.


title: Czy można obejść bzdury .htaccess Apache w innym języku?

text: Mam dość wszystkich dziwactw Apache'a i rozważam rozpoczęcie unikania `.htaccess` tak bardzo, jak tylko mogę na rzecz pisania rzeczywistego, przewidywalnego kodu. Emulowanie takich rzeczy jak bezpieczeństwo plików i przepisywanie oraz dokładne kontrolowanie tego, co jest, a co nie jest dziedziczone między katalogami, byłoby łatwe i proste bez konieczności używania dziwnych, rozwartych dyrektyw. Czy byłyby w tym jakieś wady? Mówię o zastąpieniu np. tego: # .htaccess RewriteCond %{HTTP_USER_AGENT} blah RewriteRule ^(.*)$ /test$1 [R=301,L] czymś takim: # PHP, w pliku nagłówkowym if(strpos($_SERVER['HTTP_USER_AGENT'], 'blah') !== false) przekierowanie(301, '/test' . $_SERVER['REQUEST_URI']); Powtarzając pytanie, **jakie byłyby wady implementacji funkcjonalności w PHP, które tradycyjnie obsługuje `.htaccess`?**


title: Zmodyfikuj, a następnie sprzedaj kod innej osoby

text: Wraz ze współautorem pracuję nad zestawem narzędzi do modelowania danych, który pewnego dnia zostanie sprzedany. Częścią funkcjonalności jest niezwykle powszechny PCA, który robimy w bardziej solidny sposób. Dlatego potrzebujemy funkcji PCA, która ma zwykły algorytm z pewnymi modyfikacjami. W przypadku niekomercyjnych, recenzowanych badań naukowych, mogłem łatwo znaleźć już napisany kod PCA, zmodyfikować go tak, aby odpowiadał moim potrzebom i wykorzystać go, powołując się na autora w moich badaniach. Mój współautor upiera się, że w tym komercyjnym przedsięwzięciu należy zrobić to samo. Możemy wziąć chroniony prawami autorskimi kod innego autora (np. „Copyright (c) 1997 by bla bla bla”, niekoniecznie licencję GNU), zmodyfikować go tak, aby odpowiadał naszym potrzebom, i rozpowszechniać wraz ze sprzedawanym przez nas zestawem narzędzi. Mówi, że dopóki cytujemy oryginalnego autora, jest to całkowicie do przyjęcia. Równie usilnie upieram się, że nie jest to legalne, ale nie udało mi się znaleźć prostej dokumentacji. Czy ktoś może wskazać mi jednoznaczną dokumentację tego?


title: Jaka jest dobra miara testowania/wydajności testera?

text: Za chwilę wezmę udział w dyskusji z kierownictwem na temat mierzenia naszej wydajności testowania jako organizacji QA. Głównym powodem tego jest fakt, że połowa naszego zespołu jest wynajęta na zewnątrz, a nasza firma chciałaby zapewnić pewne mierniki tego, jak jesteśmy efektywni/wydajni, abyśmy mieli podstawowe dane, na podstawie których możemy negocjować parametry kontraktu z umową serwisową naszych kontrahentów . Trochę się pogrzebałem i większość opinii, które znalazłem na ten temat, dotyczy wydajności programistów: linijek kodu, dostarczonych punktów fabularnych, wprowadzonych defektów itp. Ale co z testerami? Nasze testowanie opiera się głównie na wymaganiach i jest mieszanką testów ręcznych, półautomatycznych i automatycznych (nie dlatego, że nie zabraliśmy się za automatyzację wszystkiego, ale dlatego, że niektóre rzeczy nie są zautomatyzowane w naszym systemie testowym).


title: MongoDB: Czy to dobry projekt schematu?

text: Pracuję nad aplikacją Meteor, która pozwala użytkownikom tworzyć wydarzenia i przypisywać im członków załogi. Bawiłem się już wcześniej MongoDB i po drodze zrobiłem kilka doświadczeń, gdzie na przykład moja pierwsza próba przesadziła z osadzonymi obiektami i szybko stała się powolna i trudna do utrzymania. W związku z tym kilka osób zasugerowało spróbowanie bardziej tradycyjnego podejścia do projektowania i to właśnie zrobiłem tym razem. Podzieliłem moje kolekcje z myślą o ręcznych referencjach, **Events** _id : ObjectID, propA: "Jakaś prop", propB: "Jakaś inna prop", pracownicy: [ {employee_id: ObjectID, crew_id: ObjectID}, {employee_id: ObjectID, crew_id: ObjectID}, ] **Pracownicy** _id : ObjectID, propA: "Jakiś rekwizyt", crew_id: ObjectID **Załogi** _id : ObjectID, propA: "Jakiś rekwizyt" kolekcja zdarzeń stanie się dość pokaźna podczas cyklu życia aplikacji, dlatego uważam, że powielanie jest czymś złym. Inną wartą uwagi cechą jest to, że pracownik musi należeć do określonej załogi, ale na rzeczywistym wydarzeniu może pracować w dowolnej załodze. Początkowo byłem całkiem zadowolony z tego projektu, ale znalazłem pewne problemy, które mnie tutaj doprowadziły. 1) Kiedy wypisuję wydarzenie, muszę ręcznie dołączyć do odnośników, aby pokazać rzeczywiste właściwości pracowników i ekip (takie jak imię i nazwisko), jest to trochę nużące, ale najbardziej martwi mnie wydajność: Zamiast uruchamiać jedno zapytanie, muszę uruchom trzy (najpierw pobierz wydarzenie, następnie przejdź przez tablicę pracowników, a następnie dołącz do pracownika z kolekcją Employee, a na koniec dołącz do załogi z kolekcją Crew). 2) Moim największym problemem do tej pory jest to, co uważam za głębokie zapytania. Przed dodaniem pracownika do zdarzenia muszę wiedzieć, czy jest już przypisany, co wymaga odpytywania kolekcji Zdarzenia o zdarzenie o podanym ID, a także sprawdzenia, czy dany pracownik istnieje w tablicy pracowników. Do tej pory nie mogłem tego zrobić w jednym zapytaniu. Więc moje pytanie sprowadza się do tego. Czy mój projekt jest w porządku, czy powinienem go zmienić, biorąc pod uwagę moje przypadki użycia? Lub alternatywnie, jeśli zachowam swój obecny projekt, jak mam poradzić sobie z problemem 1 i 2 (to znaczy, że ręczne łączenia i referencje są w porządku. Ale czy wydajność jest naprawdę możliwym przebojem?).


title: Wskaźniki do przejścia z usług opartych na SOAP do usług opartych na REST

text: Obecnie posiadamy usługę sieciową opartą na SOAP, która jest używana przez różne zespoły jako podstawowe źródło danych. Ostatecznie chcemy przejść na usługi oparte na REST. Niechętnie robimy to teraz, ponieważ klienci musieliby dokonać zmian. Co możemy zrobić, aby to przejście było płynne?


title: Czy można zabezpieczyć scraping json api za pomocą losowych tokenów?

text: Zbudowałem spokojne API json dla sklepu internetowego przy użyciu Laravela. Teraz chcę utworzyć aplikację AngularJS do uruchamiania aplikacji sieci web frontonu. Ceny produktów w moim sklepie muszą aktualizować się co sekundę, więc Angular musi raz na sekundę pobierać produkt json z serwera, aby zaktualizować html. Chciałbym jakoś zrobić coś, aby chronić te publicznie dostępne dane json przed kradzieżą przez skrobaki / boty, które wielokrotnie uderzają w moje API, aby ukraść moje dane o produktach i cenach. Moje przemyślenia: Każda odpowiedź json api zawiera losowy token jednorazowego użytku (jestem świadomy robienia rzeczy, aby zatrzymać kolizje). Ten losowy token jest wstrzykiwany przez AngularJS do ukrytego pola na stronie html. Angularjs odczytuje ukryty token przed ponownym zażądaniem interfejsu API i używa go w nagłówku następnego żądania get. Odpowiedź json jest dostarczana tylko z poprawnym tokenem w nagłówku. Gdy token jest używany, wygasa, a każda próba ponownego użycia wygasłego tokenu powoduje zablokowanie tego adresu IP na pewien czas lub oznaczenie go administratorowi w celu zbadania. Czy istnieje lepszy sposób na zrobienie powyższego? Czy są jakieś aktualnie dostępne rozwiązania mojego problemu? Biorąc pod uwagę, że w pierwszej kolejności płacę za kanał cen produktów, naprawdę nie chcę, aby jakiś gnojek dostał go ode mnie za darmo tylko dlatego, że ujawniłem API! Chociaż rozumiem, że prawdopodobnie nie ma sposobu na uzyskanie 99% pewności, że ktoś mógłby znaleźć sposób na zeskrobanie mojego json, musi być coś stosunkowo prostego, co mogę zrobić, aby chronić mój kanał json przed głupimi botami / scraperami, po prostu używając curl do kradzieży danych .


title: Jakie umiejętności opanować, aby stać się lepszym programistą ASP.net?

text: Jestem web developerem ASP.net od około 2,5 roku. Opisałbym moje wcześniejsze szkolenie techniczne jako „klasyczny” C++. Wydawało się, że przyzwyczajenie się do ASP.net zajęło wieczność. Ciągle chciałem myśleć o programowaniu w VB.net i C#.net jak o programowaniu w C++, co oczywiście tak nie jest. Nawet mój przełożony przyznał, że na początku miał wątpliwości co do „trzymania mnie na pokładzie”, ale udało mi się. Od około roku pracuję nad własnym projektem. Oto kilka koncepcji i technologii, z którymi po drodze nabrałem pewnych umiejętności. * dziedziczenie klas * separacja obaw * LINQ * SQL * Stan sesji * JavaScript * jQuery * AJAX * CSS Pierwsze dwa, o których wspomniałem, są niezbędne do utrzymania porządku w kodzie. LINQ jest bardzo fajny, aby uniknąć konieczności ciągłego pisania pętli „for”. Wygląda na to, że JavaScript stał się podstawą programowania internetowego pomimo swoich niedociągnięć, a jQuery wydaje się bardzo ściśle powiązać go z CSS. Włożyłem duży wysiłek w nauczenie się pisania lepszego JavaScriptu; głównie poprzez czytanie na stronie internetowej Douglasa Crockforda. Chciałbym wiedzieć, od bardziej doświadczonych twórców stron internetowych, oprócz tego, o czym wspomniałem tutaj, jakie są najważniejsze narzędzia, które należy mieć w swoim zestawie narzędzi do pisania świetnych aplikacji internetowych?


title: Który wzorzec projektowy jest bardziej odpowiedni do rejestrowania?

text: Powinienem rejestrować niektóre zdarzenia w programie, ale z tego, co wiem, lepiej byłoby trzymać kod logowania poza programem, ponieważ nie chodzi o rzeczywistą funkcjonalność programu. Czy możesz mi więc powiedzieć, czy powinienem całkowicie wyłączyć to z kodu i używać tylko obserwatorów i słuchaczy do rejestrowania zdarzeń? Lub mogę dodać wiersz kodu, taki jak następujący, wszędzie tam, gdzie muszę coś zarejestrować: MyGloriousLogger.getXXXLogger().Log(LogPlace, new LogObject(z1, z2, z3, z4, ..., z99)); Czy popełniłem błąd używając wzorca projektowego Observer? Potrzebuję innego wzorca projektowego? Czy powinienem przestać myśleć o wzorcach projektowych? PS1. Jeśli chcę logować się używając tylko słuchaczy i obserwatorów, z pewnością będę musiał dodać i ulepszyć obserwatorów i słuchaczy programu. PS2. Na pewno wiem, że są różne biblioteki do logowania w Javie i używam java.utils.logging, ale potrzebuję wrappera, aby logował moje specjalne obiekty.


title: Czy język, który nie pozwala na komentarze, dawałby bardziej czytelny kod?

text: Z ciekawości zacząłem się zastanawiać, czy język, który nie pozwala na komentarze, dawałby bardziej czytelny kod, ponieważ byłbyś zmuszony do pisania kodu do samodzielnego komentowania. Z drugiej strony możesz napisać tak samo zły kod jak poprzednio, ponieważ po prostu cię to nie obchodzi. Ale jaka jest twoja opinia?


title: Jak zautomatyzować wdrożenia produkcyjne bez skrajnego niepokoju?

text: W naszym sklepie używamy SVN do kontroli kodu źródłowego i CruiseControl dla CI do obsługi automatycznych kompilacji i wdrożeń w naszych środowiskach programistycznych, testowych i integracyjnych. Wszystko to działa płynnie, jednak ze względu na ograniczenia sprzętowe i zasoby, nasze środowisko integracyjne nie jest środowiskiem o zrównoważonym obciążeniu dwóch serwerów, jak nasze środowisko produkcyjne. Chociaż wszystko inne jest równe, byłaby to jedyna różnica między naszymi środowiskami integracyjnymi i produkcyjnymi (choć duża!) Teoretycznie różnica polega na nieco innej konfiguracji naszych serwerów aplikacji, a skrypt wdrażania musiałby po prostu upuścić artefakty kompilacji na dwa serwery zamiast tylko jednego, ale dlaczego tak się denerwuję automatyzacją naszych wdrożeń produkcyjnych?! Generalnie nie jestem maniakiem kontroli, ale zawsze czuję nienasyconą potrzebę ręcznego wdrażania produkcji do produkcji. Słyszałem od kolegów, że generalnie jest to **Naprawdę ZŁA Rzecz™**, ale nie udało im się wnieść sprawy przeciwko temu. Wiem, że kiedy robię to ręcznie, widzę, że fizycznie kopiuję poprawne pliki, fizycznie wyłączam serwery aplikacji i zapewniam ich pomyślne zamknięcie, fizycznie uruchamiam kopie zapasowe serwerów, a następnie fizycznie sprawdzam logi, aby je wykonać upewnij się, że działa poprawnie, a wdrożenie powiodło się. Daje mi spokój. Jakie są argumenty przeciwko tym argumentom OR dla automatycznego wdrażania skryptów produkcyjnych?


title: Jaki jest sens właściwości string.Empty?

text: Dlaczego właściwość `string foo = string.Empty` została uwzględniona w BCL? Wydaje się bardziej gadatliwy i nie bardziej przejrzysty niż użycie pustego ciągu (`string foo = ""`)


title: Czy programowanie jest ogólnie polem zwolnionym z nadgodzin?

text: Mój menedżer powiedział mi, że branża nie płaci programistom nadgodzin. Czy to prawda?


title: Tworzenie aplikacji Salesforce w Ruby on Rails

text: Chcę zbudować aplikację sieci Web korzystającą z danych Salesforce.com i chcę ją szybko zbudować. Jestem programistą .NET (WPF, C#, ASP.NET MVC). Rozumiem Rubiego i RoR dość dobrze, ale nie dostarczyłem żadnych aplikacji Railsowych. Zastanawiam się, czy Ruby on Rails jest odpowiednim narzędziem do szybkiego budowania aplikacji Salesforce, czy też jest lepszy dla „tradycyjnych” rzeczy web2.0, takich jak Groupon i Twitter? Innymi słowy, czy użycie RoR pomogłoby mi osiągnąć mój szybki (np. trzymiesięczny) cel w porównaniu z używaniem .NET, które już znam?


title: Zapytaj o coś i zwróć przyczynę, jeśli niczego nie znaleziono

text: Załóżmy, że mam zapytanie — tak jak w CQS, które ma zwrócić pojedynczą wartość. Załóżmy, że przypadek, w którym nie zostanie znaleziona żadna wartość, nie jest wyjątkowy, więc w tym przypadku nie zostanie zgłoszony żaden wyjątek. Zamiast tego zwracane jest `null`. Jeśli jednak nie znaleziono żadnej wartości, muszę działać zgodnie z _powodem_, dlaczego nie znaleziono żadnej wartości. Zakładając, że Query zna przyczynę, **jak zakomunikowałbym to do wywołującego Query?** Prostym rozwiązaniem nie byłoby zwrócenie wartości bezpośrednio, ale obiekt kontenera, który zawiera wartość i przyczynę: public class QueryResult { public TValue Wartość { get; zestaw prywatny; } public TReason ReasonForNoValue { get; zestaw prywatny; } } Ale wydaje się to niezręczne, ponieważ jeśli wartość zostanie znaleziona, `ReasonForNoValue` nie ma sensu, a jeśli żadna wartość nie zostanie znaleziona, `Value` nie ma sensu. Jakie mam inne opcje, aby podać powód? Co sądzisz o jednym wydarzeniu z jakiegoś powodu? Dla odniesienia: zostanie to zaimplementowane w C#.


title: Czy Ruby on Rails mógł zostać stworzony w innym języku?

text: Czy Ruby on Rails zostało stworzone w innym języku, takim jak PHP, czy też są jakieś funkcje w języku Ruby, które robią różnicę?


title: Organizujesz niekomentowany, brudny kod?

text: Chciałbym zadać Ci kilka pytań dotyczących brudnego kodu. Jest kilku początkujących, którzy programowali w średnim projekcie. Kod to bardzo wielka kula błota. Nie są zaawansowanymi programistami. Po prostu wiedzą, jak korzystać z klawiatury, trochę o javie. Właśnie napisali kod z 12 000 wierszami w swojej głównej klasie, chociaż 6 000 wierszy należy do samego NetBeans. Moim zadaniem jest przeanalizowanie kodu i zaproponowanie dobrego sposobu na jego utrzymanie. Moim pomysłem jest złomowanie projektu i rozpoczęcie nowego z metodologią OOP. Ostatnio zebrałem kilka notatek i pomysłów na ten problem, z tej strony i kilku innych. Teraz mam następujące pytania: 1. Czy powinniśmy naprawić kod i zmienić go na OOP? Teraz go debugujemy. 2. Kod nie zawiera komentarzy, dokumentacji, określonego stylu programowania i tak dalej. Zmiana go jest naprawdę kosztowna i czasochłonna. Co możemy z tym zrobić? 3. Jak mogę nauczyć ich przestrzegania wszystkich zasad (komentowanie, OOP, dobra jakość kodu itp.)? 4. Kod jest błędny i podatny na błędy. Co możemy zrobić? Testujesz? Piszemy prawie dwa lub trzy kartki A4 do korekty, ale wydaje się, że nie ma końca. Powinienem powiedzieć, że jestem z nimi nowy. Myślę, że złamałem też zasady dotyczące zbyt późnego dodawania ludzi do projektu. Myślisz, że muszę ich zostawić?


title: Chce zbudować 2 aplikacje Java. czy powinna to być aplikacja internetowa czy samodzielna?

text: Pierwsza aplikacja (internetowa) będzie zlokalizowana w lokacji 1, a po przetworzeniu informacji zostanie wysłana do drugiej aplikacji (internetowej) zlokalizowanej w lokacji2. Aplikacja2 musi być w stanie zrobić to samo, co aplikacja1. Z tego powodu musi istnieć sposób udostępniania bazy danych, aby zachować synchronizację danych. Chciałem korzystać z tych dwóch aplikacji w Internecie, ale pojawia się problem, co jeśli internet nie działa? Jeśli aplikacja1 przestanie działać z powodu braku dostępu do Internetu lub utraty połączenia z Internetem, aplikacja2 nadal powinna być w stanie zrobić to, czego potrzebuje. Myślałem, że baza danych/serwer będzie na Amazon EC2. Nawet jeśli pójdę z samodzielną aplikacją dla site1 i site2, nadal potrzebuje jakiegoś połączenia z Internetem, aby komunikować się ze współdzieloną bazą danych/serwerem, czy jest to możliwe przez połączenie tcp? Z tego powodu nie rozumiem, dlaczego nie miałaby to być po prostu aplikacja internetowa. To jest spór, który mam z moim zespołem. Chcę poznać zalety i wady tworzenia tych dwóch aplikacji jako samodzielnej lub internetowej.


title: pyton losowy z pochyleniem

text: Staram się stworzyć bardzo prosty algorytm ewolucji dla symulatora stworzeń, chciałbym aby oba stworzenia miały cechę i poziom dominacji, oba odnotowane przez int. cecha ich dziecka będzie losową liczbą pomiędzy cechą istoty A a cechą istoty B, a następnie przekrzywiona na bardziej dominującą. Więc jeśli A ma cechę 5 i dominację 2, a B ma cechę 10 i dominację 7, pochylenie będzie wynosić -5, więc bardziej skłania się w kierunku B. Ich dziecko częściej ma cechę 8 niż 6. Czy jest na to dobry sposób? Wizualizuję, że kończy się to tak: A5-6--7---8----9-----10B Nie potrafię określić, jak duże powinno być pochylenie, dopóki nie będę w stanie przetestować wyników, więc na razie jest to trochę arbitralne. Dziękuję wszystkim za poświęcenie czasu na pomoc.


title: LGPL 2.1 a LGPL 3.0 Zalety i wady

text: Z tego, co przeczytałem, LGPL 3.0 pozwala na używanie licencji razem z innymi licencjami, bardziej liberalnymi (co do tego nawet nie jestem pewien). Z https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility jest napisane, że nie jest zgodny z GPLv2, podczas gdy LGPL 2.1 jest z nim zgodny. To trochę sprzeczne z tym, co czytałem... Czy wiesz, jakie są prawdziwe zalety i wady LGPL 3.0 nad LGPL 2.1? Jedną wadą jest to, że nie jest kompatybilny z GPLv2.


title: Czy zapisywanie wszystkich dzienników w jednym pliku jest normalne?

text: Nasz teamlead powiedział, że wiele plików jest znacznie gorszych niż jeden, mimo że pracujemy nad dużym projektem. Twierdził, że nasi klienci mogliby łatwiej przesyłać nam logi, gdyby był tylko jeden plik. Aby zrozumieć nasz plik dziennika, chce opracować własny analizator dziennika, który przeanalizuje pojedynczy plik dziennika, dzieląc go na wiele


title: Dlaczego tak trudno jest mi dzielić się moją pracą?

text: Zrobiłem tam jakąś aplikację, kodowanie nie jest problemem. Ale jeśli chodzi o wdrażanie / komunikowanie się / dzielenie się z kumplami i przyjaciółmi, utknąłem. Czuję, że będę upokorzony, bo są pluskwy, ludzie nie będą z tego korzystać... Na pewno nie tylko ja w tej sytuacji. Nie potrafię tego dobrze opisać, ale... Oto przykład. Stworzyłeś aplikację webową do zarządzania listą rzeczy do zrobienia, używasz jej już od jakiegoś czasu. Myślisz, że to miłe, robi robotę - za Ciebie. Ale po prostu nie masz siły, aby wysłać e-maila do znajomego lub kumpli z pracy, ponieważ spojrzą na ciebie inaczej, na przykład „to gość z ambicjami, który zrobił niezbyt dobrą aplikację”…


title: Jak szybko może iść?

text: Go to jeden z nielicznych języków, które mają działać „blisko metalu”, m.in. mi. jest skompilowany, statycznie wpisany i wykonuje kod natywnie, bez maszyny wirtualnej. Powinno to dać mu przewagę szybkości nad Javą, C# i podobnymi. Wygląda jednak na to, że stoi za Javą (zobacz Shootout w języku programowania). Zakładam, że w dużej mierze odpowiadają za to mniej dojrzałe kompilatory, ale czy są jakieś inne powody? Czy jest coś nieodłącznego od projektu Go, co uniemożliwiłoby mu szybsze działanie niż, powiedzmy, Java? Mam bardzo mało wyrafinowany pogląd na modele runtime, ale wydaje mi się, że przynajmniej w zasadzie powinien działać szybciej niż Java, dzięki wykonywaniu kodu natywnego.


title: Jak skompresować ciągi ASCII do mniejszych bajtów?

text: Pracuję z wbudowanym urządzeniem z unikalnym protokołem, który wysyła wiadomości do innych urządzeń oraz tworzę aplikację, która analizuje wysłane pakiety. Każdy pakiet zawiera 8 bajtów. Protokół definiuje się tak, że pierwszy bajt to nagłówek, a pozostałe 7 bajtów to dane. Próbują przekazać konkretny ciąg identyfikatora, ale ciąg identyfikatora ma 8 znaków (ASCII), więc nie zmieści się w 7 bajtach. Mój kolega powiedział mi, że zamienią 8 bajtów ascii oryginalnego łańcucha na liczbę całkowitą (dziesiętną) i wyślą mi 4 bajty. Powiedzieli mi, że powinienem uzyskać oryginalny ciąg z 4 bajtów. Trudno mi się nad tym zastanowić. Więc jeśli masz ciąg ID, taki jak „IO123456”, to jest to 0x49 0x4f 0x31 0x32 0x33 0x34 0x35 0x36 w ASCII.. Jak u licha możesz skompresować to w 4 bajty, zamieniając go na liczbę całkowitą i mogę uzyskać z niego oryginalny ciąg ? Czy czegoś mi brakuje, czy mój kolega się myli? Rozumiem, że to naprawdę dziwaczne pytanie, ale to naprawdę nie ma dla mnie sensu.


title: Jak abstrakcyjne przejście między widokami?

text: Nasz zespół rozwija aplikację przy użyciu WPF z MVVM. Chcemy, aby ViewModels można było ponownie wykorzystać. Z tą intencją chcemy wyabstrahować logikę przejścia między widokami (ViewModels, używamy podejścia ViewModel-first z Caliburn.Micro), tak aby inna aplikacja mogła ją zastąpić. Na przykład mamy App1 i App2. Po pierwsze, opracowaliśmy App1 i ma FooViewModel, który tworzy FunViewModel, gdy użytkownik kliknie przycisk Dalej. Ale rozwijając App2 chcemy przejść do NotFunViewModel zamiast FunViewModel, gdy użytkownik kliknie przycisk Dalej. Jak wykonać takie zadanie? Rozwiązanie musi być uniwersalne i bezpieczne zgodnie z typami (w czasie kompilacji).


title: Czy należy powiązać dane z Eval na aspx lub zastąpić ItemDataBound w kodzie?

text: W przypadku kontrolek powiązanych z danymi (Repeater, ListView, GridView itp.) Jaki jest preferowany sposób wiązania danych? Widziałem to, gdy ludzie używają Eval() bezpośrednio na aspx/ascx wewnątrz kontrolki powiązanej z danymi, aby wyciągnąć pole danych, ale dla mnie wydaje się to po prostu… nieeleganckie. Wydaje się to szczególnie nieeleganckie, gdy trzeba manipulować danymi, więc kończysz z metodami podkładek, takimi jak `<%# FormatMyData(DataBinder.Eval(Container.DataItem, "DataField")) %>` w kontrolce. Osobiście wolę umieścić kontrolki Literal (lub inne odpowiednie kontrolki) i dołączyć do zdarzenia OnItemDataBound dla kontrolki i wypełnić wszystkie dane w odpowiednich polach w kodzie. Czy są jakieś zalety robienia jednego nad drugim? Wolę to drugie, ponieważ dla mnie sensowne jest oddzielenie logiki wiązania danych i warstwy prezentacji. Ale może to tylko ja.


title: Czy bycie zabawnym może zaszkodzić twoim możliwościom awansu?

text: Zawsze byłem towarzyskim facetem, który lubi żartować i być zabawnym. Chociaż jest to oczywiste dla każdego, kogo spotykam, czy to na imprezie, czy po prostu uczestnicząc w rozmowie. Taka po prostu jestem. Teraz, kiedy byłem w dziewiątej klasie w nowej szkole, gdzie nikt nie wiedział, kim jestem. Próbowałem zaprzyjaźnić się, jak każdy inny pierwszoroczniak w nowej szkole - nie mniej w liceum. Tak więc w klasie żartowałem, rozmawiając z ludźmi próbującymi nawiązać przyjaźnie; Wykorzystałem umiejętności, które posiadałem, łamiąc dowcipy, rozśmieszając ludzi itp. Teraz, gdy koniec pierwszego semestru toczył się wokół naszej szkoły, miał w zwyczaju wyróżniać uczniów, którzy dostali się do listy honorowej przed całą szkołą na sali gimnastycznej. Nie, mieli dwa poziomy honoru uznania i wysoki poziom honoru. Teraz zwykli podejrzani idą w górę i zdobywają dwie minuty sławy. Potem pojawił się wysoki honor, wykrzyknięto moje imię, zupełne milczenie uderzyło w twarze moich przyjaciół, zastanawiając się, jak udało mi się to osiągnąć, kiedy zawsze żartuję i po prostu nie widziałem mnie jako osobę intelektualną. Niezależnie od tego, czy moja karta ze świadectwem czyta się jak ktoś wołający o drogie życie (AAAAAAAAAAAAAAAAAAAA). Zawsze byłem lubiany i lubiłem zaskakujących ludzi, którzy mnie nie doceniali; Rozkoszowałem się tym. Zawsze lubiłem szokować ludzi i zmuszać ich do zjadania ich słów. Coś, z czym zawsze żyłam. Teraz po ukończeniu studiów mam tytuł, który oznacza szacunek w zależności od tego, w jakich kręgach społecznych się kręcisz (tu patrzę na was projektantów). Obawiam się, że moja towarzyska natura będzie kosztować mnie awans lub kierownictwo nie dostrzegania całej osoby, którą jestem. Spaliło mnie to w przeszłości, gdy byłem na uniwersytecie, pracując dla ludzi, którzy widzieli tylko lekkie żarty, które przedstawiałem, i umieszczanie innych ludzi na stanowiskach, do których miałem lepsze kwalifikacje. Jako programista wiem, że moja praca będzie mówić sama za siebie, ale mogą postrzegać żarty jako nieodpowiedzialne lub ignoranckie. Brakuje mu odpowiedzialności, wszystkich rzeczy związanych z ludźmi, którzy żartują. Czy powinienem się dusić, żeby ludzie zobaczyli, jaki naprawdę jestem? Albo nadal czekaj na okazję, aby ich zaszokować, które nie zawsze się pojawiają, ponieważ pod koniec semestru nie ma rzutu honoru. Proszę i dziękuję, xoxo Gossip Girl (tylko żartuję)


title: Czy ma sens licencjonowanie fragmentów kodu źródłowego przez CC-BY (-SA)

text: Jeśli chcę umieścić losowe fragmenty kodu źródłowego w publicznie dostępnym repozytorium git, czy ma sens licencjonowanie przez CC-BY (-SA), biorąc pod uwagę, że licencje CC-BY generalnie nie są zalecane dla oprogramowania? Dla mnie istnieje różnica między pełnym projektem oprogramowania, w którym CC-BY wyraźnie nie jest odpowiednie, a małymi losowymi plikami kodu źródłowego. CC-BY wydaje się być prostą licencją, w której GPL jest górą. Głównym powodem, dla którego pytam, jest to, że mogę pobrać kod ze StackOverflow (zmodyfikowany lub nie), który moim zdaniem jest licencjonowany jako CC-BY-SA. Czasami byłoby dla mnie wygodniej umieścić to wszystko w jednym miejscu, aby mieć do nich łatwy dostęp i znaleźć je w przyszłości. Chociaż mogę być nadmiernie paranoikiem, chciałbym przestrzegać licencji StackExchange CC-BY-SA. Licencjonowanie wszystkiego, co tam umieściłem, jako CC-BY-SA jest proste i wydaje się odpowiednie dla fragmentów (oczywiście kod zaczerpnięty z innych źródeł, powiedzmy z GPL/BSD lub cokolwiek, w razie potrzeby zachowa oryginalną licencję). Wreszcie czy mogę połączyć CC-BY-SA z GPL?


title: Czy ten model relacyjnej bazy danych ma sens?

text: Oto płaska wersja mojego modelu danych. To odczyty czujników dla różnych urządzeń akwizycji danych. ![0](http://i1295.photobucket.com/albums/b628/colnewman26/Work%20Screen%20Shots/RobinDataModel_zpsdfc40151.png~original) http://i1295.photobucket.com/albums/b628/colnewman26/Work %20Screen%20Shots/RobinDataModel_zpsdfc40151.png~original Oto mój model relacyjnej bazy danych. Czy to ma sens. ![1](http://i1295.photobucket.com/albums/b628/colnewman26/RobinDataModel_zps847d94b5.png~original) http://i1295.photobucket.com/albums/b628/colnewman26/RobinDataModel_zps847d94b5.png~original Jeśli co sugerujesz?


title: Czy uzyskanie licencji na dystrybucję oprogramowania korzystającego z dołączonego środowiska uruchomieniowego Mono jest obowiązkowe?

text: Moje oprogramowanie składające się z EXE i zależnej biblioteki klas dll, zbudowanej w systemie Windows przy użyciu Visual Studio C# Compiler. Udało mi się uruchomić go bezpośrednio w systemie Mac OS X przy użyciu _mono myApp.exe_ bez przebudowy. Teraz dla wdrożenia pomyślnie utworzyłem pakiet mono przy użyciu **mkbundle** z opcją _\--deps_ dla wszystkich zależnych zestawów bibliotek klas. Ale **NIE** użyłem opcji _\--static_. Więc moja aplikacja dynamicznie łączy się z mono i glib. Umieściłem go w pakiecie mac APP, a następnie skopiowałem potrzebną bibliotekę _[XYZ]_.dylib i wszystkie inne zależne biblioteki natywne z _Library/Frameworks/Mono.framework_ do tego pakietu, zmieniając każdy identyfikator dylib i nazwę instalacji na kopię wewnątrz pakietu zamiast oryginalnego w katalogu Mono.framework. Przetestowałem pakiet _M_ na wolnej maszynie mono. pakiet działał idealnie. **Moje pytanie** brzmi, czy nadal muszę uzyskać licencję od Xamarin, aby dystrybuować moją aplikację do użytkowników końcowych na mojej licencji własnościowej, pod warunkiem, że wszystkie mono natywne biblioteki wykonawcze mono znajdują się w pakiecie aplikacji i użytkownik może je zaktualizować/zamienić zgodnie z licencją LGPL środowiska uruchomieniowego mono? Dziękuję!


title: Automatyzacja zarządzania wydaniami i CI w projektach Pythona w ramach mercurial VCS

text: Mam zestaw projektów Pythona, które są objęte mercurial VCS. Chciałbym zautomatyzować następujące zadania: * Uruchom zestaw testów dla każdego zatwierdzenia (CI). * Stwórz dystrybucję źródłową dla każdego zatwierdzenia, która ma znacznik mercurial. Jest to uważane za nowe wydanie. * Skopiuj dystrybucję do specjalnego repozytorium. Istnieje _Jenkins_ jako propozycja dla podobnych pytań, ale nie jestem pewien, czy poradzi sobie z zarządzaniem wydaniami tak, jak zamierzono.


title: Obsługa błędów, tworzenie osi czasu, potrzebujesz pomocy w określeniu, które aspekty środowiska wymagają śledzenia

text: W przypadku mojego ostatniego roku projektu pracuję nad skryptem, który uruchomi twój program w pythonie i zapewni harmonogram wydarzeń (do tej pory pracuję nad zadaniami) i stworzę historię tego, co się stało (zmiany w zmiennych). Na podstawie tego, jaki wyjątek zostanie zgłoszony, możesz użyć udostępnionej przeze mnie biblioteki, aby pomóc w ustaleniu, co się stało i jak to się stało. (Mam nadzieję, że wyjaśniłem to znacznie lepiej niż w przypadku przepełnienia stosu) Moje pytanie do ciebie, oprócz zmiennych, kiedy pojawia się błąd/wyjątek, którego nie możesz obsłużyć, co byś przejrzał, aby spróbować rozwiązać problem? Wielkie dzięki.


title: Co muszę wiedzieć o serwerach w roli programistów internetowych?

text: Wiem, że może to zabrzmieć trochę niejasno, więc postaram się to wyjaśnić nieco dalej... Po wielu latach pracy na własny rachunek jako programista, szukam teraz komercyjnej roli programisty stron internetowych. Moje jedyne doświadczenie z serwerami i hostingiem to przesyłanie przez FTP i trochę zabawy z CPanel/WHM. Rola, do której się wybieram, to tworzenie stron internetowych PHP, MySQL, HTML, CSS, ale w ostatnich wywiadach zadano mi pytania dotyczące konfiguracji rzeczy na serwerze, że nie miałem pojęcia, co zostało powiedziane... co nie było idealne! Nie wiedząc więcej niż ja, trudno jest wyjaśnić, czego dokładnie chcę się nauczyć, ale w zasadzie to tylko elementy serwera, które powinienem znać jako programista? Jeśli jesteś programistą internetowym, czy masz do czynienia z serwerem poza przesyłaniem plików, a jeśli tak, to co? Czy rzeczy takie jak Subversion (SVN) i systemy kontroli wersji są często konfigurowane przez zespół programistów internetowych, czy o tym mówili?


title: Ile zrobić „automatycznie”?

text: Czytam Code Complete 2 i jestem w rozdziale, w którym mówi (parafrazując) „unikanie programowania przez interfejs”. Dlaczego źle jest programować „przez” interfejs? Bardziej konkretny przykład: jeśli mam metodę klasy, która przesyła zabawne zdjęcie, co jest nie tak z logowaniem mnie również? Czy powinienem po prostu podać więcej metod „pomocniczych”, które robią to automatycznie? Czy lepiej byłoby podzielić to na: * set_login(nazwa użytkownika, hasło) * login() * submit_picture(funny_picture) * easy_submit(funny_picture) # gdzie zaloguje się (jeśli jeszcze nie) i prześle


title: Co zrobić, gdy szacowanie czasu się nie powiedzie?

text: Załóżmy, że szacowany czas na rozpatrzenie sprawy to 3 dni. W drugim dniu zauważasz, że sprawa się rozrasta i pojawiają się nowe scenariusze, które nie zostały policzone, gdy szacowano czas. Nowe odkrycie prowadzi do 2 dodatkowych dni (w sumie 5 dni). Jest to typowy problem, z którym prędzej czy później zmierzysz się jako programista. * Którą strategię można zastosować, gdy zamierzasz powiadomić lidera projektu o nowym terminie dostawy? * Często pojawia się pytanie dlaczego? Jak motywujesz nowy czas dostawy? Faktem jest, że wiele projektów nie poświęca dużo czasu na analizę i projektowanie podczas SDLC. **EDYTUJ:** W bardzo złożonych projektach, bez względu na to, ile rozsądnego czasu poświęcisz na analizę i projektowanie, zawsze są niespodzianki, ponieważ reguły biznesowe są zbyt złożone. Uważam jednak, że w takich przypadkach lider projektu musi być świadomy złożoności i mieć właściwe nastawienie, gdy pojawiają się nieoczekiwane niespodzianki. Pytanie brzmi, jak poradzić sobie z liderami projektów, którzy nie rozumieją złożoności.


title: Jaka jest różnica między „Składnią” a „Cudem składniowym”

text: ## Tło Strona Wikipedii na temat Syntactic Sugar stwierdza: > W informatyce cukier syntaktyczny to składnia w języku programowania > zaprojektowana, aby ułatwić czytanie lub wyrażanie. To sprawia, że język jest „słodszy” dla ludzi: rzeczy mogą być wyrażane jaśniej, bardziej zwięźle lub w alternatywnym stylu, który niektórzy mogą preferować. Naprawdę nie rozumiem, jaka jest różnica między cukrem składniowym a składnią. Doceniam to, że słodka wersja może być wyraźniejsza, bardziej zwięzła, być może wygotować się na jakimś schemacie. Ale czuję, że na pewnym poziomie cała składnia zasadniczo robi to, aby utworzyć abstrakcję nad tym, do czego kod zostanie skompilowany. Z tej samej strony Wikipedii: > Procesory języka, w tym kompilatory, analizatory statyczne i tym podobne, > często rozszerzają konstrukty z cukrem do bardziej podstawowych konstrukcji przed > przetwarzaniem, co jest czasem nazywane „odcukrzaniem”. Jako ćwiczenie myślowe, jeśli przyjmę „często” w tym stwierdzeniu jako „zawsze”: gdyby różnica polegała tylko na tym, czy kompilator „odcukrza” składnię przed przejściem do następnego etapu, jak może koder, który nie zna wnętrzności kompilatora wiedzieć (lub dbać), jaka jest składnia Sugar'd, czy nie? Bardzo podobne pytanie na tej stronie "Rigorous Definition of Syntactic Sugar?" ma odpowiedź, która zaczyna się: > IMHO Nie sądzę, że możesz mieć definicję cukru składniowego, ponieważ > wyrażenie to jest BS i jest prawdopodobnie używane przez ludzi, którzy mówią o "prawdziwych > programistach" używających "prawdziwych narzędzi" na "prawdziwe systemy operacyjne" Co może mi wskazywać, że być może nie ma dużej różnicy w stosunku do kodera używającego języka? Może różnica jest dostrzegalna tylko dla piszącego kompilator? Chociaż mogą zaistnieć przypadki, w których koder używający języka może wiedzieć, co kryje się pod maską cukru składniowego? (Ale może w rzeczywistości każdy dyskurs na ten temat ma tendencję do używania tego terminu jako przynęty na płomienie?) ## Sedno pytania Więc... skrócona wersja pytania: * Czy istnieje prawdziwa różnica między składnią a cukrem składniowym? * Dla kogo to ma znaczenie? ## Extra Food for Thought Bonus na temat sprzeczności: Na stronie Wikipedii podano przykład: > Na przykład w języku C notacja `a[i]` jest cukrem składniowym dla > `*(a + i)` Podczas gdy inna odpowiedź na powyższe pytanie dotyczy tego samego przykładu: > Rozważmy teraz `a[i] == *(a + i)`. Pomyśl o jakimkolwiek programie w C, który używa tablic > w jakikolwiek merytoryczny sposób. I podsumowuje to: > Notacja `[]` ułatwia tę abstrakcję. To nie jest cukier syntaktyczny. Odwrotny wniosek dla tego samego przykładu!


title: Programowanie rozszerzenia Google Chrome dla opornych?

text: Chcę zacząć pisać rozszerzenia dla Google Chrome. Jestem od wielu lat programistą C, C++, Delphi, itp. z pewnymi umiejętnościami Java. Uważam, że rozszerzenia Chrome są napisane w C++, ale być może niektórzy ludzie zorientowali się, jak tworzyć programy w innych językach za pomocą alternatywnych metod. [AKTUALIZACJA: Wtyczki NPAPI są napisane w C++. Ogólne rozszerzenia przeglądarki Chrome używają HTML, CSS i JS, jak wskazano w komentarzach i odpowiedziach poniżej.] Czy istnieje książka, która opisuje tworzenie rozszerzeń Google Chrome dla nowych użytkowników, ale czy są to doświadczeni programiści? Jakieś inne zasoby? Byłbym bardzo wdzięczny za zasoby, które wycinają większość materiałów do nauki otoczenia i przechodzą prosto do sedna sprawy z dobrymi próbkami po drodze. Kilka wskazówek dotyczących programowania przy użyciu narzędzi programistycznych działających na platformie MS-Windows byłoby również świetne. \-- roschler


title: Konwencje nazewnictwa: camelCase kontra underscore_case ? co myślisz o tym?

text: Używam underscore_case od około 2 lat, a ostatnio przeszedłem na camelCase z powodu nowej pracy (później używałem przez około 2 miesiące i nadal uważam, że underscore_case lepiej nadaje się do dużych projektów, w których jest zaangażowanych wielu programistów, głównie dlatego, że kod jest łatwiejszy do odczytania). Teraz wszyscy w pracy używają camelCase, ponieważ (tak mówią) kod wygląda bardziej elegancko. Co myślisz o camelCase lub underscore_case p.s. proszę wybaczyć mój zły angielski **Edytuj** Najpierw trochę aktualizacji: * używana platforma to PHP (ale nie oczekuję ścisłych odpowiedzi związanych z platformą PHP, każdy może podzielić się swoimi przemyśleniami na temat tego, która byłaby najlepsza do użycia, dlatego przyszedłem tutaj w pierwszej kolejności) * Używam camelCase tak jak wszyscy w zespole (tak jak większość z was poleca) * używamy Zend Framework, który również poleca camelCase Kilka przykładów (związanych z PHP): * Framework Codeigniter poleca underscore_case , i szczerze kod jest łatwiejszy do odczytania. * ZF poleca camelCase i nie tylko ja uważam, że kod ZF jest nieco trudniejszy do naśladowania. Więc moje pytanie zostałoby przeformułowane: > Weźmy przypadek, w którym masz platformę Foo, która nie zaleca > żadnych konwencji nazewnictwa i wybór należy do lidera zespołu. Ty > jesteś liderem zespołu, dlaczego miałbyś wybrać camelCase lub dlaczego underscore_case? p.s. dziękuję wszystkim za szybkie odpowiedzi do tej pory


title: Dlaczego niektórzy mówią, że Java będzie nowym językiem COBOL?

text: Słyszałem wieści o Javie i JCP/Apache. Nie rozumiem, dlaczego to musi wpłynąć na rynek Java? Jasne, licencja się zmieniła i może przenosi się do nieco bardziej zamkniętego źródła, ale dlaczego ludzie mieliby myśleć /to/będzie/ nowy COBOL?