title: Jak deweloperzy powinni radzić sobie z gorszymi warunkami pracy?

text: W obecnej pracy pracuję niecały rok i na początku nie miałam odwagi powiedzieć nic o rzeczach, które mnie niepokoiły. Teraz mam już trochę dosyć i potrzebuję rzeczy, aby się polepszyć. Pierwszy problem nie jest przypadkowy, ale i tak o nim wspomnę. Kończy nam się miejsce, więc każdy nowy pracownik dostaje mniejszy stolik. Obiecujemy, że problem z przestrzenią zostanie wkrótce naprawiony. Prawie każdy pracownik ma inną klawiaturę, mysz, słuchawki (jeśli są). Ja mam klawiaturę za 10 dolarów, losową tanią myszkę i losowe, gówniane słuchawki z mikrofonem. Wszystkie te były używane i brudne, kiedy je dostałem. Liczba monitorów to 1-3 i różne rozmiary. Mam 2 ładne monitory i nie mogę narzekać, ale niektórzy dostają 1 mały monitor. Kiedy jest to ich pierwsza praca, nie mają odwagi prosić o 2, nawet jeśli większość innych ma 2. Nikogo też nie obchodzi. Kierownik projektu zapytał, czy to w porządku? Oczywiście powiedział, że poradzi sobie z 1 małym. Następnie kierownik powiedział, że możesz poprosić o jeszcze 1. Oglądam to i myślę idę i pytam gdzie? Firma stara się zatrudnić więcej osób, ale niewiele robi po podpisaniu przez osobę umowy. Zostaliśmy umieszczeni w jednym pokoju, który jest otwarty na korytarz i jest bardzo głośny. Czasami prawie jak zoo. Nawet jeśli nikt nie mówi, gówniane klawisze robią za dużo hałasu. * Czy to normalne? * Czy jestem zbyt negatywny i czy powinienem wykonywać swoją pracę z tym, co mi dano? * Czy powinienem domagać się lepszych rzeczy? * Czy firma powinna mieć jakiś system, w którym każdy dostaje coś w jakimś przedziale cenowym?


title: Jak wirtualna maszyna Javy wykonuje kod napisany w innych językach?

text: Od wersji Java 1.6 JVM może obsługiwać wiele języków programowania zamiast samej Javy. Rozumiem koncepcyjnie, jak Java działa na maszynie wirtualnej Java, ale nie rozumiem, jak mogą na niej działać inne języki. Dla mnie to wszystko wygląda jak czarna magia. Czy masz jakieś artykuły, które mogłyby mi pomóc, abym mógł lepiej zrozumieć, jak to wszystko do siebie pasuje?


title: Jakiej licencji powinienem używać do projektów wewnętrznych?

text: Muszę spakować projekt wewnętrzny jako pakiet Debiana. Ten projekt nigdy nie zostanie pobrany przez nikogo spoza naszej firmy, ale system pakietów Debiana nalega na istnienie pliku `copyright`. Co powinienem wybrać dla tego pliku? Istnieje możliwość, że administrator systemu natknął się na ten pakiet i chciałby przeczytać jego licencję. Co więc powinien przeczytać?


title: Jak lepiej zacząć uczyć się programowania - z językami imperatywnymi czy deklaratywnymi?

text: Ktoś jest zainteresowany nauką programowania. Jaki paradygmat językowy powinienem mu polecić - imperatywny czy deklaratywny? A od jakiego języka programowania powinien zacząć? Myślę, że to deklaratywne, ponieważ jest bliższe matematyki. I powiedziałbym, że Prolog może być najlepszym początkiem, ponieważ opiera się na logice, a programy są krótkie. Z drugiej strony w szkole zaczęliśmy uczyć się z języków imperatywnych i nie jestem pewien, czy warto zacząć od nich zamiast deklaratywnych. Dziękuję. :)


title: Negatywne doświadczenie TDD

text: Jaka jest negatywna strona twojego doświadczenia z TDD? Czy uważasz, że małe kroki (najprostsze rozwiązanie, aby test był zielony) były irytujące i bezużyteczne? Czy uważasz, że testy bezwartościowe (kiedy test początkowo ma sens, ale w końcowej implementacji sprawdza tę samą logikę co inne testy) mają krytyczne znaczenie? itp. Powyższe pytania dotyczą rzeczy, z którymi czuję się niekomfortowo podczas moich doświadczeń z TDD. Dlatego interesuje mnie, czy inni programiści mają podobne odczucia i co o nich myślą. Byłbym wdzięczny za linki do artykułów opisujących negatywne strony TDD (Google jest pełen pozytywnych i często fanatycznych artykułów).


title: Czy dojrzały, zwinny zespół wymaga zarządzania?

text: Po niedawnej gorącej debacie na temat Scrum, zdałem sobie sprawę, że moim problemem jest to, że myślę o zarządzaniu jako o dość niepotrzebnej i zbędnej czynności w całkowicie zwinnym zespole. Uważam, że dojrzały zespół Agile nie wymaga zarządzania ani żadnego nietechnicznego procesu podejmowania decyzji. Dla moich (najwyraźniej błądzących) oczu jest więcej niż oczywiste, że jedynym odpowiednim i zdolnym do _zarządzania_ dojrzałym zespołem programistycznym jest ich coach (który jest najbardziej kompetentnym technicznie kolegą z odpowiednimi umiejętnościami komunikacyjnymi). Nie wyobrażam sobie, jak mistrz Scrum może przyczynić się do takiego zespołu. Mam duże trudności z uświadomieniem sobie i zrozumieniem wartości takich rzeczy w Scrumie i _menedżerze_ jako ktoś, kto nie jest doświadczonym programistą, ale jest dobrze wyszkolony w planowaniu cykli produkcyjnych, gdy w zespole jest trener. Co to w ogóle znaczy? Jak, u licha, ktoś bez umiejętności rozwoju może zarządzać wysoce technicznym zespołem? Może zarządzanie oznacza tu coś innego? Zarządzanie postrzegam jako całkowitą stratę czasu i produkt uboczny niedojrzałości. W moim rozumieniu dojrzały zespół jest w pełni samozarządzający. Najwyraźniej się mylę, ponieważ wielu wspaniałych ludzi mówi inaczej, ale nie mogę się przekonać.


title: WPF4: Czy to oskarżenie dotyczące formantów DevExpress WPF jest prawidłowe i jaki jest dobry alternatywny dostawca?

text: Moja firma rozpoczyna duży projekt rozwojowy od podstaw przy użyciu kontrolek DevExpress WPF. Właśnie przeczytałem ten krytyczny przegląd ich formantów WPF. Czy zgadzasz się, że DevExpress nie rozumie paradygmatu WPF i spowoduje smutek naszych programistów podczas opracowywania i konserwacji? Czy możesz zaproponować alternatywnego dostawcę formantów WPF? Szukam dostawcy z kontrolkami WPF, który ulepszy naszą aplikację, jednocześnie dobrze dopasowując się do interfejsu API WPF, powiązania i MVVM. Możesz przeczytać cytat z wpisu na blogu tutaj.


title: Jaki jest najbardziej czytelny sposób echa z PHP?

text:
Czy powinienem używać <?php if(!$user->is_logged_in()){ echo '
Kliknij tutaj, aby się zalogować
' ; } ?> lub <?php if(!$user->is_logged_in()){ ?>
Kliknij tutaj, aby się zalogować.
 <?php } ?> ? Czemu? Pierwsza z nich nie będzie miała pokolorowanych znaczników HTML, więc jest mniej czytelna w edytorach kodu, ale w przypadku drugiej wydaje się, że źle byłoby zajmować trzy wiersze tylko po to, aby dodać nawias klamrowy. Którego powinienem używać?


title: Generatory w Javascript w nowy standard ECMA

text: Generatory wprowadzane są w nowej wersji standardów ECMA. Czy ktoś mógłby zasugerować znaczenie i użycie generatorów w obecnym świecie Javascript? Pomocne będą przykłady generatorów w rzeczywistych problemach.


title: Jak zwizualizować funkcjonalność timera na diagramie sekwencji?

text: Zajmuję się tworzeniem oprogramowania do komunikacji z urządzeniem zewnętrznym poprzez port szeregowy. Aby lepiej zrozumieć nową funkcjonalność staram się wyświetlić ją na diagramie sekwencji. Przebieg zdarzeń jest następujący. Wysyłam do urządzenia polecenie, aby je zresetować. Jest to operacja asynchroniczna, więc między żądaniem a odpowiedzią występuje pewne opóźnienie (zwykle 100 ms). Może się zdarzyć, że odpowiedź nigdy nie nadejdzie (np. urządzenie nie jest podłączone do określonego portu lub jest aktualnie wyłączone). W tym celu tworzę timer z okresem dwukrotnie większym od maksymalnego czasu odpowiedzi. W moim przypadku jest to 2*125 ms = 250 ms. Jeśli odpowiedź nadejdzie w określonym przedziale czasowym, niszczę już działający timer. Jeśli odpowiedź nie nadejdzie w określonym przedziale czasowym, timer inicjuje akcję. Po tej akcji możemy go zniszczyć. Jak skutecznie zamodelować tę sytuację na diagramie sekwencji? **Dodatek 1:** Na podstawie porad scarfridge narysowałem schemat UML. Komentarz Ozair jest również pomocny w jeszcze większym uproszczeniu diagramu. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/F4Vnh.png)


title: Jak być lepszym w rozwiązywaniu problemów z programowaniem dynamicznym

text: Niedawno natknąłem się na to pytanie: „Otrzymujesz wyrażenie logiczne składające się z ciągu symboli 'prawda', 'fałsz', 'i', 'lub' i 'xor'. Policz liczbę sposobów umieszczenia w nawiasach wyrażenie takie, że zwróci prawdę. Na przykład istnieją dwa sposoby na umieszczenie w nawiasach „prawda i fałsz x lub prawda” tak, aby zwróciło się do prawdy”. Wiedziałem, że jest to dynamiczny problem programowania, więc próbowałem samodzielnie wymyślić rozwiązanie, które jest następujące. Załóżmy, że mamy wyrażenie A.B.C.....D, gdzie '.' reprezentuje dowolną operację i, lub, xor, a wielkie litery oznaczają prawdę lub fałsz. Powiedzmy, że liczba sposobów dla tego wyrażenia o rozmiarze K, aby wytworzyć prawdę, wynosi N. Kiedy do tego wyrażenia dodawana jest nowa wartość logiczna E, istnieją 2 sposoby na umieszczenie tego nowego wyrażenia w nawiasach 1. ((A.B.C......D) .E) tj. ze wszystkimi możliwymi nawiasami ABC.....D dodajemy E na końcu. 2\. (ABC (D.E)) tj. najpierw oceń D.E, a następnie znajdź liczbę sposobów, w jakie to wyrażenie o rozmiarze K może dać prawdę. załóżmy, że T[K] to liczba sposobów, w jakie wyrażenie o rozmiarze K daje prawdę, a następnie T[k]=wart1+wart2+wart3 gdzie wart1,wart2,wart3 są obliczane w następujący sposób. 1)Gdy E jest zgrupowane z D. i)Nie zmienia wartości D ii)odwraca wartość D w pierwszym przypadku val1=T[K]=N.( Ponieważ redukuje się to do początkowego A.B.C... .D wyrażenie ). W drugim przypadku należy ponownie oszacować dp[K] z odwróconą wartością D, czyli val1. 2) gdy E jest zgrupowane z całym wyrażeniem. //wart2 zawiera liczbę „prawdy” wytworzonych przez E z wyrażeniami, które dały „prawda” wśród wszystkich ujętych w nawiasy wystąpień A.B.C.......D i) jeśli prawda.E = prawda, to wart2 = N ii) jeśli prawda. E = false then val2 = 0 //val3 zawiera liczbę 'prawdy', które wygeneruje E z wyrażeniami, które dały 'false' wśród wszystkich ujętych w nawiasy wystąpień A.B.C.......D iii) jeśli false.E=true to val3 =( 2^(K-2) - N ) = M tj. liczba sposobów, w jakie wyrażenie o rozmiarze K daje fałsz [ 2^(K-2) to liczba sposobów umieszczenia wyrażenia w nawiasach K ]. iv) if false.E=false then val3 = 0 To jest podstawowy pomysł, który miałem na myśli, ale kiedy sprawdziłem jego rozwiązanie http://people.csail.mit.edu/bdean/6.046/dp/dp_9.swf podejście tam było zupełnie inne. Czy ktoś może mi powiedzieć, co robię źle i jak mogę być lepszy w rozwiązywaniu DP, abym mógł wymyślić rozwiązania takie jak to podane powyżej. Z góry dziękuję.


title: Programowa pamięć transakcyjna — przykład kompozycyjności

text: Jedną z głównych zalet programowej pamięci transakcyjnej, o której zawsze się wspomina, jest możliwość komponowania i modularność. Różne fragmenty można łączyć w celu uzyskania większych elementów. W programach opartych na blokadach często tak nie jest. Szukam prostego przykładu ilustrującego to rzeczywistym kodem. Wolałbym przykład w Clojure, ale Haskell też jest w porządku. Dodatkowe punkty, jeśli przykład zawiera również kod oparty na blokadzie, którego nie można łatwo skomponować.


title: Framework JavaScript/UI do uzupełnienia WebAPI/TypeScript/ASP.NET MVC?

text: Niedługo podejmiemy ryzyko zbudowania zupełnie nowej aplikacji SAAS, która musi mieć świetnie wyglądający i wyrafinowany interfejs. Interfejs użytkownika ma być jednostronicowy, zbudowany na bazie Web API i przy użyciu Typescript. Backend znajduje się w ASP.NET/MVC. Interfejs użytkownika będzie obciążony wykresami/wykresami/raportami/pulpitami nawigacyjnymi, a także danymi/wprowadzaniem parametrów. Pulpity nawigacyjne muszą być „na żywo”, ale wszystkie inne dane można odświeżyć na ekranach ręcznie, bez konieczności wciskania ich na żywo. Cele dla frameworka obracają się wokół następujących kryteriów: 1) Możliwość akceptacji-testowania warstwy danych UI bez Selenium (tj. tylko json, nie chce utrzymywać testów na kruchej warstwie HTML) 2) Umiejętność pracy z Typescript 3) Świetne narzędzia w odniesieniu do Visual Studio 4) Łatwa praca, zrozumienie i wykrywanie problemów/błędów. 5) Html5 i responsywny projekt są bardzo ważne Doceniaj wszelkie porady lub odpowiedzi na pytania


title: Zrozumienie systemów zarządzania pakietami

text: Próbuję zrozumieć, czym jest system zarządzania pakietami. Rozumiem jego główną koncepcję, ale mam kilka pytań. * Czy system zarządzania pakietami instaluje funkcje (kompilatory, biblioteki, maszyny wirtualne) niezbędne do uruchomienia aplikacji ORAZ instaluje aplikację, czy tylko instaluje funkcje niezbędne do uruchomienia aplikacji? * Czy systemy zarządzania pakietami są zewnętrznymi aplikacjami, które uruchamiasz za pomocą argumentów wiersza poleceń, czy są to biblioteki API, które integrujesz z kodem instalatora? Aby użyć przykładu; jeśli moja aplikacja używa Pythona 2.7 i wxPython, czy system zarządzania pakietami zapewni, że python 2.7 jest zainstalowany i wxPython jest zainstalowany, a następnie zainstaluje moją aplikację (pliki skryptów Pythona)?


title: Dlaczego żądanie GET nie powinno zmieniać danych na serwerze?

text: W całym Internecie widzę następującą radę: GET nigdy nie powinien zmieniać danych na serwerze - używaj do tego żądania POST Jaka jest podstawa tego pomysłu? Jeśli tworzę usługę php, która wstawia dane do bazy danych i przekazuję jej parametry w ciągu zapytania GET, dlaczego to źle? (Używam przygotowanych instrukcji, aby zająć się SQL Injection). Czy żądanie POST jest w jakiś sposób bezpieczniejsze? A może jest ku temu jakiś historyczny powód? Jeśli tak, jak ważna jest dzisiaj ta rada?


title: Diagramy służące do modelowania architektury i funkcjonalności strony internetowej

text: Próbuję zrozumieć, jakie modele/diagramy UML można wykorzystać do komunikowania architektury stron internetowych. Celem modelu lub modeli jest przekazanie architektury i funkcjonalności strony internetowej osobom technicznym (innym programistom i inżynierom). Funkcje witryny: \- Witryna jest wyszukiwarką przepisów \- Kod po stronie serwera to Python. Strona klienta korzysta z HTML, CSS, JQuery i AJAX. \- Witryna będzie miała przeszukiwacz/indeksator sieci \- Podczas przeglądania wyników wyszukiwania wykorzystywane jest nieskończone przewijanie, więc będę musiał modelować żądania asynchroniczne (zarówno GET, jak i POST). Diagramy, do których zmierzam, to Diagram Komponentów (w celu przekazania architektury) i Diagram sekwencji (w celu przekazania funkcjonalności żądania HTTP). Jakich diagramów używałeś w przeszłości, aby komunikować architekturę i funkcjonalność strony internetowej osobom technicznym?


title: Czy w MVC uważa się, że dobrą praktyką jest posiadanie prywatnych, niedziałających funkcji w klasie kontrolera?

text: Czasami funkcje akcji w klasie kontrolera mogą stać się ogromne i nieprzyjemne, z wieloma wierszami kodu, aby po prostu kontrolować przepływ danych z modelu do widoku. W pewnym momencie te ogromne funkcje całkowicie tracą świadomość podstawowych zasad dobrego kodu, tj. robienie tylko jednej rzeczy, bycie małym, czytelnym i łatwym do zarządzania itp. Czy byłoby uważane za dobrą praktykę rozbicie tych ogromnych funkcji akcji na mniejsze prywatne funkcje w kontrolerze klasy, czy konieczność takiej optymalizacji oznacza, że powinniśmy je raczej dodać do modelu? Głosowałbym za tym, aby mniejsze funkcje były prywatne w kontrolerze, aby były zależne od akcji, ale słyszałem argumenty, że kontroler powinien być prosty, podczas gdy model może stać się ogromny i nierówny; i zastanawiałem się, która z nich byłaby najbardziej preferowana.


title: Czy złożona klasa unifikująca powinna wykonywać obliczenia?

text: Mam dużą aplikację w Javie wypełnioną niezależnymi klasami, które są zunifikowane w klasie `PlayerCharacter`. Klasa jest przeznaczona do przechowywania danych postaci do gry zwanej Płonącym Kołem, przez co jest niezwykle złożona. Dane w klasie muszą mieć obliczenia kontrolowane przez interfejs użytkownika, ale musi to robić w określony sposób dla każdego obiektu w klasie. W klasie `PlayerCharacter` znajduje się 19 obiektów. Myślałem o skondensowaniu tego, ale jestem prawie pewien, że to nie zadziałałoby nigdzie w aplikacji w obecnej formie. prywatne Nazwa ciągu = ""; prywatna koncepcja ciągu = ""; prywatny Wyścig ciągów = ""; prywatne int wiek = -1; private ArrayList<CharacterLifepath> lifepaths = new ArrayList<>(); prywatne statystyki StatSet = nowe StatSet(); private ArrayList<Afiliacja> afiliacje = new ArrayList<>(); private ArrayList<Kontakt> kontakty = new ArrayList<>(); private ArrayList<Reputacja> reputacje = new ArrayList<>(); //10 więcej linii deklaracji Rozważałem ten problem już od jakiegoś czasu i rozważałem wiele podejść. Problem pojawia się przede wszystkim, gdy dane są usuwane – na przykład, ponieważ prawie wszystko inne (ale nie niektóre części!) zależy od ścieżek życia, kiedy ścieżka życia jest usuwana, prawie wszystko inne musi zostać przeliczone. Jeśli jednak Umiejętność zostanie usunięta, tylko kilka rzeczy musi zostać przeliczonych ponownie. Dodatkowo aplikacja musi gdzieś śledzić pewne wartości; punkty umiejętności, punkty cech itp., aby upewnić się, że użytkownik nie przekroczy przypadkowo tych wartości. Więc moje pytanie jest ogólnie następujące: Gdzie wszystko powinno iść? Co sprawia, że jest to najłatwiejsze? Istnieje kilka opcji: * Umieść obliczenia sumy punktów w klasie PlayerCharacter (ale jak to generuje ostrzeżenie?) * Zajmij się wszystkimi obliczeniami poza klasą PlayerCharacter i po prostu użyj PlayerCharacter jako kontenera dla wszystkich informacji o postaci * Umieść _all_ obliczenia w klasie PlayerCharacter; po każdej zmianie pozycji przelicz całą postać. Następnie, jeśli wystąpią problemy wynikające z usunięcia, wyrzuć ostrzeżenia z powrotem w interfejsie użytkownika. Jestem nieco przytłoczony zakresem tej konkretnej klasy – podczas gdy wszystko, co do tej pory zrobiłem, zostało łatwo podzielone na małe, łatwe do opanowania kawałki, ta bestia wydaje się opierać oswojeniu. Jeśli istnieje lepsze podejście do tego, jestem cały za uszami! Ale w tej chwili jestem trochę zdezorientowany, a bezcelowe postępy prawdopodobnie nigdzie mnie nie zaprowadzą. Wszelkie porady są mile widziane. Przepraszam, jeśli jest to niejasne - jestem pewien, że brakuje mi słownictwa oprogramowania, aby właściwie przekazać moje pomysły. Chciałbym poprawić to pytanie - każda pomoc tutaj jest mile widziana!


title: Czy posiadanie klasy A rozszerzającej klasę B spowolni wydajność mojego środowiska wykonawczego w porównaniu z posiadaniem klasy, która zawiera wszystkie elementy klasy C?

text: Mam klasę z wieloma metodami. Chciałbym zgrupować podobne metody we własnej klasie, ale _wszystkie_ metody muszą rozszerzać inną klasę, _ClassC_. Myślałem więc o posiadaniu _ClassA_ , która zawiera pierwszą grupę metod, extend _ClassB_ , która rozszerza Class_C itd. Czy jest to nieefektywne pod względem wydajności w czasie wykonywania, czy są praktycznie takie same? Uwaga: będą działały setki instancji tej klasy jednocześnie, więc naprawdę nie chciałbym marnować pamięci.


title: Gdzie masz swój klucz Control?

text: W związku z super pytaniem tutaj: http://programmers.stackexchange.com/questions/2254/what-are-good-keyboards-for-programming Gdzie mapujesz swój klawisz Control i dlaczego? ![Klawisz sterujący](http://i.stack.imgur.com/z0syX.png)


title: Jak mogę uzyskać dostęp do trac na telefonie komórkowym?

text: jako programista mieszkam z Trac, jak uzyskać dostęp do projektów trac przez telefon komórkowy, nokia/android/iphone/windows mobile, platforma mobilna nie jest ważna, mogę dostać nowy telefon, ale trac zostanie.


title: Najlepszy sposób kodowania systemu internetowego pod względem wydajności

text: Do tej pory używałem IPB i moich niestandardowych skryptów zakodowanych w PHP, ale jestem naprawdę rozczarowany jego długoterminową wydajnością. Chciałbym przejść do kodowania natywnego, czas poświęcony na naukę nie ma żadnego znaczenia. Znalazłem CppCMS i wydaje się, że jest to dokładne rozwiązanie, którego szukałem. Chciałbym wiedzieć od każdego, kto wybrał tę drogę, co zrobiłeś? Czy CppCMS jest najlepszy pod względem wydajności? Jeśli tak, z jakim serwerem internetowym powinienem go uruchomić i jakąkolwiek specjalną konfiguracją? Naprawdę szukam najlepszej drogi pod względem wydajności (czas nauki i czas kodowania nie ma znaczenia).


title: Jak daleko powinien 'var' i operator koalescencji null '??' bawić się bez ograniczania czytelności?

text: Wiem, że tytuł pytania jest bardzo subiektywny, ale spotkałem się z użyciem operatora `??` przez moich rówieśników, gdzie jednocześnie nie byłem zbyt zadowolony/komfortowy z zastosowaniem `var` w nowym kodzie . Argumentem podanym za użyciem operatora `??` było to, że odbiera on czytelność kodu. Moje pytanie brzmi, czy to samo dzieje się, gdy zaczynasz używać `var`?


title: Jaki system wiki/dokumentów polecacie do zarządzania wiedzą?

text: Jestem założycielem strony internetowej Now.in. Wszystkie programy pisałem na początku sam. I będziemy prowadzić start-up. Wkrótce więcej osób się w to zaangażuje. Niektóre know-how/przeglądy istnieją tylko w moim umyśle, wyjaśnienie nowicjuszom wymaga czasu. Dlatego chciałbym napisać kilka dokumentów do przeczytania przez innych. Tu pojawia się problem, jak pisać dokumenty? Jakiego narzędzia/platformy powinienem użyć? Mam pewne obawy. ## Przenośność Na pewno mogę po prostu pisać dokumenty w Google Docs, uruchamiać Wiki, a nawet bezpośrednio korzystać z wiki z repozytorium BitBucket. Ale problem polega na tym, co jeśli chciałbym użyć innego systemu dokumentów, a nie obecnego? Konwersja dokumentów między językami przeceny/Dokumentami Google byłaby trudna i kosztowna. ## Łatwe w użyciu Diagramy są ważne w dokumentach, aby wyjaśnić różne rzeczy. Niektóre proste systemy wiki/doc nie obsługują przesyłania obrazów. Możesz przesłać obraz w inne miejsce i wstawić tag obrazu w dokumentach, co jest dość niewygodne w użyciu. Ponadto wydaje się, że niektóre z tych języków przecenionych są trudne do nauczenia i zapamiętania. Nie lubię spędzać miesiąca na nauce czegoś, co wygląda jak LaTeX i zacząć pisać dokument, który doprowadza mnie do szału. Przydałby się prosty i wyrazisty przecena/WYSIWYG. ## Wyrażenie kodu Google Doc jest łatwy w użyciu i wystarczająco wydajny. Jednak czasami chciałbym napisać przykłady kodu w dokumentach. Dobrze jest mieć podświetlanie składni. Ale Dokument Google nie jest przyjazny dla użytkownika do pisania kodu. Bycie przyjaznym dla kodu, byłoby również miło mieć funkcję. ## Integracja z dokumentami API W przypadku dokumentów przeglądowych/SOP/know-how, dobrze jest napisać je bezpośrednio w systemie dokumentów. Ale dla mojej bazy kodu Pythona mogą istnieć wygenerowane dokumenty na poziomie API z tych kodów. Niewygodne byłoby posiadanie dwóch systemów dokumentów, jednego dla API i jednego dla przeglądów. Myślę więc, że fajnie byłoby je zintegrować. ## Więc.... Czego użyć? Może mam w głowie jeszcze jakieś obawy, ale w tej chwili nie mogę ich sobie przypomnieć. Chciałbym wiedzieć, jakiego systemu dokumentów używasz? Czy mógłbyś coś polecić? Nawet jeśli korzystanie z platformy/systemu wymaga pewnej opłaty, możemy sobie pozwolić, jeśli nie jest to zbyt drogie.


title: Jaka jest dobra praktyka czytania informacji o kulturze (języku) dla użytkowników aplikacji internetowej?

text: Staram się zorientować, jaka byłaby lepsza praktyka/wdrożenie dla użytkowników aplikacji, którą zamierzam zlokalizować. Co byłoby lepsze i dlaczego? * Przeczytaj informacje o kulturze (preferowany język) z przeglądarki. lub * Mieć opcję wyboru języka w aplikacji, zwykle zaimplementowaną za pomocą flag (ikon) lub listy rozwijanej. Lub zasugeruj lepszy pomysł.


title: Trudne porównanie, dziedziczenie, łatwe do rozszerzenia - Java

text: Załóżmy, że mamy 4 klasy A, B, C, D, gdzie: A jest nadklasą zarówno B, jak i C, a C jest nadklasą D. Przypuszczam, że na diagramie powinno to wyglądać tak: A / \ B C \ D Ponadto klasa A implementuje interfejs Comparable<A> oraz implementuje metodę public int CompareTo(A another) Chciałbym móc porównać każdą parę obiektów x,y tak, aby były instancjami klas z klasy zbiór {A, B, C, D}. Naturalnie powinienem zaimplementować metodę CompareTo w każdej z tych klas, ale domyślnie robię to z efektem jednostronnym, czyli zdefiniowanie sposobu porównywania obiektu c z C z b z B nie mówi nic o tym, jak porównywać b z c. Teraz mógłbym napisać dużo kodu i obsłużyć wszystkie te przypadki (oznacza to również, że musiałbym użyć metody 'isInstance', aby je obsłużyć, prawda?), ale wtedy co dwie klasy muszą być 'świadome' istnienia innych . Czyli gdybym chciał dodać kolejną klasę E, taką, że D jest superklasą E, musiałbym obsłużyć wszystkie przypadki w nowej klasie E i dodatkowo musiałbym coś zmienić w klasach A,B,C,D aby „być świadomym E”. Walczę więc o znalezienie eleganckiego rozwiązania tego problemu, tj. takiego, które nie wiąże się z dużymi zmianami podczas dodawania nowej klasy do hierarchii. Jak mogę to osiągnąć? Z góry dziękuję za pomoc.


title: Aplikacja do pobierania danych statystycznych dotyczących żądania/odpowiedzi HTTP

text: Szukam aplikacji, która pobiera adres strony internetowej, przegląda ją i dostarcza raporty na podstawie określonych przez użytkownika kryteriów dotyczących żądań/odpowiedzi HTTP. Na przykład ta aplikacja powinna raportować, ile obrazów nie ma nagłówka odpowiedzi Cach-Control lub ile elementów ma rozmiar większy niż 25 KB (w tym obrazy, skrypty, style itp.). Wiem o PageSpeed lub WebPageTest, lub Firebug lub YSlow i tego typu wtyczkach. Ale nie mają niestandardowych raportów i należy ręcznie przejrzeć każdą odpowiedź, aby coś sprawdzić. Nie są też powtarzalne. Szukam aplikacji, w której parametry wpisujesz raz, a potem wielokrotnie testujesz stronę w trakcie jej tworzenia. Czy istnieje taka aplikacja? Czy ktoś ma jakieś referencje?


title: Programowanie PHP w iPadzie

text: Chcę tworzyć aplikacje PHP na moim urządzeniu iPad, ale są 2 problemy! Po pierwsze, nie mogę znaleźć żadnych lokalnych aplikacji serwerowych na iPadzie, takich jak Wamp lub Lamp, a po drugie mój Googling zwraca tylko IDE oparte na chmurze! dowolny pomysł?


title: Co oznacza „inwersja” w zasadzie projektowania Dependency Inversion?

text: Czytam o wzorcach projektowych. Wiem, do czego służy ta zasada. Klasy wysokiego i niskiego poziomu zależą od abstrakcji. Ale dlaczego mówimy, że to jest inwersja?


title: Informatyka i inne zaawansowane tematy nauczane w javascript

text: Jestem "w porządku" programistą Javascript pracującym nad javascriptem przeglądarki i node.js. Jednak ponieważ jestem samoukiem, zaczynając od kopiowania i wklejania jquery, jest wiele luk w mojej edukacji programistycznej/CS. Tak naprawdę nie mam czasu, aby poświęcić się w pełni nauce wszystkich koncepcji CS, które mogą być nauczane w prawdziwym programie uniwersyteckim, i nauce C, Scali lub czegokolwiek, jestem po prostu zbyt uzależniony od hakowania i tworzenia rzeczy, które działają. Na pewnym poziomie studiowanie CS wydaje się być „przedwczesne skalowanie” w żargonie Hacker News. Ale od czasu do czasu uderza mnie myśl, że może jest coś, czego naprawdę powinienem się nauczyć, aby przenieść swoje umiejętności i produktywność na wyższy poziom. Czy jest jakaś książka, lista pojęć lub rzeczy, które mogę studiować i uczyć się w moim „przestoju”, które przyniosłyby rozsądny zwrot z mojej produktywności i umiejętności w ciągu 1-2 miesięcy? Dziękuję! I tak, jedynym językiem, którego _znam_ i używam, jest Javascript, chociaż w przeszłości majstrowałem przy Pythonie (liceum), Ruby (RoR), PHP (Drupal) i Assemblerze (Making Diablo 2 Mods). Proszę zauważyć, że książka taka jak JavaScript Web Applications O'Reilly'ego jest dla mnie zbyt łatwa i nie do końca to, o czym mówię.


title: Czy istnieje standardowy pseudokod dla algorytmów równoległych?

text: Popularne style pseudokodu są w dużej mierze zrozumiałe i jest mniej lub bardziej jasne, jak pisać pseudokod dla programów sekwencyjnych. Ale jeśli paralelizm nie jest ukryty za pełną biblioteką i jest uważany za normalną część programowania, to powinien być traktowany w ten sam sposób w odniesieniu do pseudokodu. Czy istnieje spójny i szeroko stosowany styl pseudokodu dla algorytmów równoległych? Czy są na to dobre, praktyczne przykłady?


title: Czy powinniśmy osadzać maszyny wirtualne, a nie języki?

text: Ok, więc próbuję nauczyć się programowania front-end. Próbując zrozumieć, jak trudny jest JavaScript, różne projekty (GWT, Coffeescript, Capuccino's objective/j...) próbują to naprawić za pomocą języków, które kompilują się do JS. Co byś zrobił, gdybyś wymyślił przeglądarkę na nowo? Myślę, że osadziłbym maszynę wirtualną, a nie język (zupełnie jak aplety Java, z wyjątkiem mniej skomplikowanych i z API DOM zamiast kanwy i samodzielnego środowiska). Przypuszczam, że było to sugerowane wiele razy, ale nie mogę znaleźć zasobów na ten temat, a większość samouczków dotyczących osadzania natknąłem się na języki osadzania adresów (guile, lua, python, cokolwiek). Myśli?


title: Warunki dla tradycyjnego systemu znajomych a otwarty system śledzenia

text: Jestem po prostu ciekawa dla wszystkich, którzy tworzą tam serwisy społecznościowe. Kiedy tworzysz metodę łączenia użytkowników, wolisz używać systemu w stylu obserwowania (podążaj za mną, możesz zobaczyć wszystkie moje informacje, a ja mogę po prostu podążać za tobą), czy zamiast tego wybierasz mieć przyjaciół -stylowy system (muszę zezwolić na wyświetlanie wszystkich moich informacji na Twojej stronie głównej, nawet jeśli jest ona ogólnodostępna, vice versa). Dlaczego iw jakich okolicznościach używasz każdego z nich? Jak zarządzasz prywatnością między użytkownikami? Czy korzystasz z innego sposobu łączenia użytkowników? Przykłady wybranych przez Ciebie metod i sposobu zarządzania prywatnością użytkownika (domyślnie prywatna a otwarta w sieci) są niesamowite; może wykazywać korelację i zapewnia rzeczywisty wygląd.


title: Synchronizacja modelu Backbone z edytowalnym widokiem

text: Tworzę formularz internetowy do edycji niektórych obiektów. Nazwę te obiekty Foos. Mam model Backbone, który reprezentuje Foos. Mam widok Backbone, który renderuje formularz edytora, wypełniając pola na podstawie stanu podanego modelu Foo. Moim celem jest utrzymanie synchronizacji modelu Foo z polami formularza. Pomysł 1: Mogę podłączyć odbiorniki „onkeyup” lub „onchange” do wszystkich pól wejściowych. Za każdym razem, gdy użytkownik zmieni pole, model zostanie natychmiast zaktualizowany. Ręczne dodawanie detektora zdarzeń do każdego pola wejściowego wydaje się jednak przesadą. Pomysł 2: Mógłbym dodać do mojego widoku metodę `updateModel`. Wywołanie tej metody spowoduje sprawdzenie pól formularza i zaktualizowanie modelu. Problem polega na tym, że jeśli zapomnisz wywołać `updateModel`, będziesz pracował ze starym modelem. Jakie są najlepsze praktyki dotyczące synchronizowania modelu Backbone z jego widokiem edytowalnym przez użytkownika?


title: Jak poprawić swoje umiejętności pracując w małym sklepie?

text: Jestem programistą samoukiem i pracuję w firmie, która nie zajmuje się bezpośrednio tworzeniem oprogramowania (producent szkła z małym zespołem IT). Jestem tam jedynym programistą .NET, chociaż jest tam 3 programistów SAP z odrobiną doświadczenia w Visual Basic 6. Teraz sam jestem programistą średniego poziomu i chcę doskonalić swoje umiejętności, ale jest to raczej trudne, gdy jesteś „jednookim królem” w przysłowiowej krainie blindów. Co mogę zrobić, nie opuszczając pracodawcy, aby poprawić swoje umiejętności w tak kiepskim środowisku uczenia się?


title: Jak zacząć wyśmiewać aplikację mobilną?

text: Mam pomysł na „najlepszą aplikację na świecie”. Wiem, co to zrobi, jakie potrzeby ma wypełnić, pomysł na kod od wysokiego do średniego poziomu i do kogo mam zamiar skierować. Teraz jestem gotowy do rozpoczęcia: biorę długopis, papier, nasadkę do myślenia, postawę potrafię to zrobić, ustawiam zegar na GO-TIME--Ta aplikacja będzie świetna!......2 godziny później , wszystko, co mam na swoim papierze, to duży prostokąt... Można by pomyśleć, że makieta będzie _łatwą_ częścią, ale narysowanie „prostego i eleganckiego” projektu jest trudniejsze niż się wydaje. Czy są jakieś techniki/rady, których możesz udzielić na wyśmiewanie aplikacji? Wszelkie odniesienia lub wskazówki dotyczące zasad, które możesz podać, byłyby również bardzo mile widziane. Z góry dziękuję.


title: Jak mogę wpłynąć na mój zespół, aby stał się bardziej zwinny?

text: Uważam się za zwinnego programistę, skonfigurowałem CI w ostatnich trzech zespołach, z którymi pracowałem, a w mojej poprzedniej roli pracowałem w stylu, który polegał na pisaniu nieudanych testów przed naprawieniem błędów, bardzo krótkich cyklach informacji zwrotnych (zazwyczaj rozpoczynając UAT nowe funkcje w ciągu kilku dni) i bardzo krótki cykl wydawniczy. Teraz jestem jedyną osobą, która napisała test jednostkowy C# w ciągu ostatnich 6 miesięcy, walcząc z bezwładnością w celu poprawy jakości kodu i wspierając system, w którym nowe funkcje są właśnie wydawane z zamiarem ich późniejszego naprawienia. Jakie sztuczki mogę zastosować, aby spróbować ustabilizować sytuację? Próbowałem skonfigurować CI, zautomatyzować wdrażanie UAT z oddzielnej gałęzi kontroli źródeł i publikować lokalne bezpłatne rozmowy na temat rozwoju oprogramowania, ale z niewielkim sukcesem.


title: Stroustrup i wstęp do złożoności C++

text: Słyszałem od znajomego, że Bjarne Stroustroup przyznał, że nie zna całkowicie języka programowania C++ ze względu na jego ogromną złożoność. Czy to prawda i istnieją jakieś źródła, do których można się odnieść, czy to tylko przesada? Ta afirmacja powinna być obecna na jego stronie internetowej, powiedział to jakiś czas temu w wywiadzie/konferencji


title: Dlaczego C++ nie może przyjąć podejścia D do implementacji koncepcji?

text: Jak wielu z was wie, _koncepcje_ , podejście C++ do ograniczania możliwych typów argumentu szablonu nie zostało uwzględnione w C++11. Dowiedziałem się, że język programowania D 2.0 ma podobną funkcję do programowania generycznego. Jego rozwiązanie wydaje mi się dość eleganckie i proste. Więc moje pytanie brzmi _dlaczego C++ nie może użyć podobnego podejścia_. * Cel koncepcji C++ może być większy niż to, co zapewnia implementacja D? * A może spuścizna C++ uniemożliwia mu takie podejście? * Lub jakikolwiek inny? Dzięki za odpowiedzi. p.s. Aby zobaczyć kilka przykładów ogólnej mocy programowania D, zapoznaj się z tym: http://stackoverflow.com/questions/7300298/metaprogramming-in-c-and-in-d/7303534#7303534


title: Co powinno być w standardzie kodowania?

text: Co powinno być w dobrym (czytaj:przydatnym) standardzie kodowania? * Rzeczy, które powinien mieć kod. * Rzeczy, których kod nie powinien mieć. * Czy standard kodowania powinien zawierać definicje elementów, które wymusza język, kompilator lub program formatujący kod? * A co z metrykami, takimi jak złożoność cyklomatyczna, wiersze na plik itp.?


title: Co powinienem zrobić w AJAX lub PHP?

text: Odkąd odkryłem radość AJAX, mam tendencję do wysyłania wszystkich moich żądań do serwera za pomocą AJAX. Czy to dobry pomysł? Według Ciebie, co powinienem zrobić w PHP, a co powinienem zrobić w AJAX? Lubię przesyłać moje żądania do serwera za pomocą AJAX, ponieważ mogę go używać jako rodzaj usługi internetowej.


title: Aplikacje internetowe mają „listę rzeczy do zrobienia”. Jaki jest analogiczny program do programowania systemów?

text: Możesz znaleźć wiele frameworków z przykładową listą zadań do zademonstrowania małej, ale pełnej aplikacji we frameworku. Nie musisz brać pod uwagę dużych problemów, takich jak skalowanie lub buforowanie, ale nadal ćwiczysz większość podstaw tego frameworka na liście rzeczy do zrobienia. Czy istnieje analogiczna aplikacja do programowania na poziomie systemu?


title: Czy powinienem przekazać przedmiot lub wartości?

text: Załóżmy, że mam model z metodą „zakupu”. Sposób zakupu powinien dbać o zakup produktu. Podpis zakupu zakupu funkcji publicznej ($token, Model_Member $member, Model_Product $produkt, Model_Recipient $recipient); Aby wywołać tę metodę, muszę ustawić $member, $product i $recipient w moim kontrolerze. Czy uważa się, że lepszym rozwiązaniem jest przekazanie tablicy wartości do **zakupu**, aby zakup mógł wykonać te wymagane obiekty, takie jak poniżej? zakup funkcji publicznej ($token, $member_id, $product_id, array $recipient); w tym przypadku **zakup** powinien pobrać rekord członka z bazy danych i stworzyć jego model. Jakie jest lepsze podejście?


title: Przepływ pracy w Git - doradź nowicjuszowi

text: Zaczynam pracować z git po raz pierwszy i próbuję wymyślić przepływ pracy, który działa dla mnie, więc pomyślałem o przyjściu i zapytaniu. Obecnie jestem w kilku projektach, w których jestem jedynym programistą i tak naprawdę jedynym popychaczem do pochodzenia. Pracuję w ten sposób, gdzie `c` to commit, `p` to push, a `m` to scalanie: /feature2-c-c-c-c-m-c-c-c-c / / \ master------------ ----------m-p------m-p \ / \ \-feature1-c-c-c-c-c-c-c-c-c-c-m-c-c Teraz doszedłem do wniosku, że zmiana bazy byłaby bardziej "poprawna" niż te, które robię w tej funkcji gałęzie, a przynajmniej tak by się wydawało.. ale nie jestem pewien, czy robię to dobrze. Teraz zdałem sobie sprawę, że przez scalenie wzorca z innymi moimi gałęziami, mieszam z historią gałęzi i dodaję do niej wszystkie niezwiązane ze sobą zmiany funkcji. Może powinienem rozgałęziać więcej, przez podzadanie, dodając trzeci poziom w ten sposób: ....................\ master----------- -----m-p--m-p-.... \ / \ \-feature1------------m------ -----m..... \ / \ \-feature11-c-c-c feature12-c-c-c.. Pomija to fakt, że czasami funkcja jest większa niż powinna być gałąź. To są moje dotychczasowe przemyślenia na ten temat, więc jestem bardzo otwarty na sugestie dotyczące najlepszego przepływu pracy git w zespołach jedno- lub dwuosobowych. Mam nadzieję, że schematy są łatwe do naśladowania.


title: Jaka jest różnica między „czytelnością kodu” a „konwencją językową” używaną w społeczności?

text: Kiedy patrzę na pytania zadawane w witrynach, takich jak stackoverflow, dotyczące tego, jak sprawić, by dany fragment kodu był „bardziej pythoniczny”, zwykle pojawiają się sugestie, aby użyć złożonych list składanych lub generatorów lub innych funkcji Pythona, które nie są dostępne, powiedzmy, Jawa. Jestem zwykłym programistą Pythona i czasami nie umiem śledzić tego, co się dzieje bez starannego rozwinięcia logiki w mojej głowie. Czasami listy składane są zagnieżdżone w taki sposób, że myślę „prawdopodobnie powinieneś po prostu napisać to za pomocą pętli”. Oczywiście doświadczeni użytkownicy Pythona prawdopodobnie nie będą mieli z tym problemu, ale coraz częściej odnoszę wrażenie, że „kod Pythona” jest lepszy od pisania kodu, który byłby czytelny dla „przeciętnego programisty”, który może nie być zbyt biegły w Pythonie. Ogólnie rzecz biorąc, jakie są pewne wytyczne i heurystyki, których należy przestrzegać przy wyborze między czytelnością kodu a przestrzeganiem konwencji używanych w określonej społeczności języków programowania?


title: Jaki jest najlepszy algorytm „wypełniania wiadra”?

text: Jestem całkiem nowy w przetwarzaniu obrazu i obecnie pracuję nad aplikacją przypominającą farbę, która będzie zawierała wypełnienie wiadra. Jednak nie mam pojęcia, jaki jest najlepszy algorytm do wypełnienia wiadra. Zaimplementowałem przykład, który znalazłem na tej stronie, jednak napotkał problemy z nieskończoną pętlą, gdy użytkownik próbował wypełnić wiadro obszar, który był już wypełniony tym samym kolorem. Obecnie pracuję nad tym problemem, wypełniając w lewo, w prawo, w górę iw dół; jednak zrobiłem to tak, że gdy piksel zostanie wypełniony po lewej stronie, nie może wypełnić po prawej, co oznacza kształty takie jak: ![Przykład](http://i.stack.imgur.com/bDHrE. png) nie zostanie prawidłowo wypełniony, jeśli narzędzie łyżki zostanie użyte w miejscu czerwonej kropki. Dlatego mam nadzieję, że ktoś zna algorytm lub link do takiego, który rozwiąże wszystkie te problemy. **Dodatkowe informacje:** zostanie zaimplementowane przy użyciu JavaScript jako narzędzia do malowania. Będzie używany online z wykorzystaniem elementu Canvas.


title: Czy właściwości powinny mieć skutki uboczne?

text: Czy właściwości w języku C# powinny mieć skutki uboczne oprócz powiadamiania o zmianie w jego stanach? Widziałem właściwości używane na kilka różnych sposobów. Od właściwości, które załadują wartość przy pierwszym dostępie, do właściwości, które mają ogromne skutki uboczne, takie jak przekierowanie na inną stronę.


title: Praca zespołowa i zwinny rozwój

text: Myślę, że to pytanie dotyczyło nie tylko zwinności, ale ogólnie pracy zespołowej. Kiedy pracujemy w zespole i każdy członek pracuje nad historyjką użytkownika, aby zakończyć, jak uniknąć tworzenia zduplikowanych klas i konfliktów? Chodzi mi o to, że jeśli moja historyjka użytkownika wymaga stworzenia klasy A, a także członek mojego zespołu potrzebuje tej samej klasy i stworzył taką samą (może ją stworzyć pod nieco inną nazwą), jak mielibyśmy zaplanować, aby poruszać się płynnie?


Jaka jest złożoność czasowa algorytmu sprawdzania, czy liczba jest liczbą pierwszą? Oto algorytm: bool isPrime(liczba int){ if(liczba < 2) return false; if(liczba == 2) zwraca prawdę; if(liczba % 2 == 0) return false; for(int i=3; (i*i)<=liczba; i+=2){ if(liczba % i == 0 ) return false; } zwróć prawdę; }


title: Czy istnieje konkretna strategia projektowania, którą można zastosować do rozwiązania większości problemów z kurczakiem i jajkiem przy użyciu niezmiennych obiektów?

text: Pochodzę ze środowiska OOP (Java), sam uczę się Scali. Chociaż łatwo dostrzegam zalety indywidualnego używania niezmiennych obiektów, trudno mi zobaczyć, jak można zaprojektować taką aplikację. Podam przykład: powiedzmy, że mam obiekty, które reprezentują „materiały” i ich właściwości (projektuję grę, więc naprawdę mam ten problem), takie jak woda i lód. Miałbym „kierownika”, który jest właścicielem wszystkich takich instancji materiałów. Jedną z właściwości byłaby temperatura zamarzania i topnienia oraz to, do czego materiał zamarza lub topi się. [EDYTUJ] Wszystkie instancje materiałów są "singleton", trochę jak Java Enum. Chcę, żeby „woda” powiedziała, że zamarza do „lodu” w 0C, a „lód”, żeby powiedzieć, że topi się do „wody” w 1C. Ale jeśli woda i lód są niezmienne, nie mogą uzyskać odniesienia do siebie jako parametrów konstruktora, ponieważ jeden z nich musi zostać utworzony jako pierwszy, a nie można uzyskać odniesienia do jeszcze nieistniejącego drugiego jako parametru konstruktora. Mógłbym rozwiązać ten problem, dając im odniesienie do kierownika, aby mogli zapytać o to, aby znaleźć inną instancję materiału, której potrzebują za każdym razem, gdy są pytani o właściwości zamrażania/topnienia, ale potem pojawia się ten sam problem między kierownikiem i materiałów, że potrzebują odniesienia do siebie, ale można je podać w konstruktorze tylko dla jednego z nich, więc ani menedżer, ani materiał nie mogą być niezmienne. Czy ich po prostu nie sposób obejść ten problem, czy też muszę użyć „funkcjonalnych” technik programowania lub jakiegoś innego wzorca, aby go rozwiązać?


title: Kontrola przepływu php

text: Mam skrypt php example1.php Jak wyglądałby przepływ sterowania, gdy wywołam inny skrypt php example2.php z example1.php. Wróg Np. example1.php wygląda tak .... ... .... example2.php (wywołując example2.php z example1.php) ..... ..... Jak działa przepływ sterowania dla tego ? Czy example1.php czeka, aż example2.php zakończy wykonywanie, a następnie będzie kontynuowane z resztą logiki kodu, czy po prostu kontynuuje pozwalając na niezależne działanie example2.php?


title: Dlaczego potrzebny jest rejestr systemu Windows?

text: Ponieważ mam debugowane problemy w com, ramię w ramię, zajmowałem się piekłem dll, a jednocześnie nienawidziłem rejestru systemu Windows z pasją, zastanawiałem się, dlaczego jest to potrzebne. Nigdy nie czułem się zmuszony do przeczytania całej książki na temat najlepszych praktyk rejestrowych, a potem po prostu „zdobądź to”. Używałem jednak Linuksa i Mac OS i patrzę, jak można zainstalować wiele wersji Pythona i jego bibliotek na tym samym komputerze *nix. Ponieważ rejestr ma nieco darmowy (choć brzydki) format i jest używany do różnych celów, nigdy nie rozumiałem, jaki zasadniczy problem próbuje rozwiązać. Na przykład Microsoft nie chce, aby dwie różne wersje MS Office były instalowane obok siebie. Używają rejestru, aby wymusić to podczas instalacji. To ograniczenie jest moim zdaniem sztuczne. Gdyby naprawdę chcieli pozwolić na inne zachowanie, mogliby odpowiednio dostosować swoją architekturę. W systemie Mac OS możesz instalować i usuwać aplikacje, po prostu upuszczając je do określonego folderu. Tak więc: A) Jaki zasadniczy problem próbuje rozwiązać? B) Jak rozwiązują to inne systemy operacyjne?


title: Czy dobrze jest zacząć od prostego podzbioru wymagań, a następnie rozszerzyć program?

text: Kiedy przydzielono mi program, zwykle buduję je blok po bloku. Na przykład musiałem napisać program umożliwiający przesyłanie plików FTP, który umożliwia także kolejkowanie transferu i transfer wielowątkowy zamiast transferu jednowątkowego. Co bym zrobił to: 1) Spróbować, aby program mógł przesłać 1 plik 2) Spróbować wykonać transfer w kolejce 3) Spróbować zaimplementować wielowątkowość Czy zamiast tego zrobiłbyś to: 1) Przeczytaj cały materiał/ tutorial wszystkich 3 wymagań 2) Spróbuj zebrać je w ogólny obrazek 3) Napisz program od razu. Co myślisz?


title: Silnik zbierania statystyk dla systemów C++

text: Mamy projekt badawczy z cyklem rozwoju pomysłu->prototypu->statystyki. W każdym razie nasz produkt końcowy jest prototypem, więc zestaw do zbierania statystyk nie jest używany na stałe. Przypuśćmy, że mam następującą klasę: class Transform { private: someData; public: transformForward (inp_block, outp_block); transformBackward (inp_block, outp_block); }; Wyobraź sobie, że jest częścią dużego systemu. Muszę okresowo zbierać statystyki dotyczące takiej transformacji (mogą być również brane pod uwagę dane wewnętrzne). Wydaje się, że dodanie procedur statystycznych byłoby pogwałceniem zasady pojedynczej odpowiedzialności. Drugim zapachem jest to, że nie chcę dotykać kodu, który używa instancji `Transform` do jawnego wywołania tych procedur. Najlepiej byłoby, gdybym mógł po prostu uruchomić jakiś przełącznik, aby zebrać statystyki dla tego modułu. Wielokrotnie spotykałem się z tym wyzwaniem i mam wrażenie, że ciągle wynajduję koło na nowo. Czy istnieją dobre praktyki dotyczące konfigurowania i gromadzenia zestawu statystyk dla systemu złożonego bez ingerencji w jego wewnętrzną bazę kodu? ## AKTUALIZACJA: Jak widzę z proponowanych odpowiedzi, moje pytanie jest zbyt niekonkretne, więc podam bardziej konkretny przykład. Rozważmy system kompresji obrazu złożony z dwóch _ogromnych_ bloków: `Predictor` i `Encoder`. Istnieje wiele różnych algorytmów przewidywania i kompresji, podczas naszych badań musimy zbadać zachowanie komponentów w różnych warunkach. Powinniśmy odpowiedzieć na pytania typu „ile razy piksel jest przetwarzany w każdym kontekście”, „jak dobrze działa ten predyktor”, „jak każdy predyktor wpływa na stan wewnętrzny kodera” i wiele innych. W każdym razie, nasz produkt końcowy to po prostu _kodek_ bez dostarczonego z nim pakietu statystycznego; podczas naszych badań wykorzystujemy wewnętrznie wszelkiego rodzaju statystyki. Powstaje zatem pytanie: jak zbudować elastyczny silnik statystyczny, który zna same elementy wewnętrzne systemu? Jak można utrzymać sam system niezależny od silnika statystyk?


title: Jak zorganizować CSS strony?

text: Rozumiem pojęcie CSS. Ale w wielu projektach odkryłem, że mam tendencję do gubienia się i kończenia z milionami plików CSS dla milionów różnych stron! Zdaję sobie sprawę, że celem CSS jest kaskada. W przeciwnym razie byłby to po prostu arkusz stylów! Chciałbym tylko, aby ludzie rzucili trochę światła na to, w jaki sposób wykorzystują CSS w pełni! Na mojej obecnej stronie mam do tego MasterPage i jeden plik css. następnie dla wszystkich podstron mam tendencję do pisania oddzielnego css dla każdych 5 stron. Nie podoba mi się, że moje pliki css są OGROMNE, bo wtedy po prostu się mylę. Jak ty to robisz? Trudno mi pojąć, że niektórzy ludzie używają jednego pliku css na CAŁĄ stronę. czy to już skończone?


title: Jak tworzyć wysokiej jakości zespoły produkujące kod? (jako lider grupy)

text: Przychodzę z jasnym planem, jak poprawnie kodować. Kiedyś byłem liderem zespołu i udało mi się przy użyciu znacznej ilości mentoringu stworzyć zespół, który tworzy wysokiej jakości kod. Teraz mam pod sobą 3 zespoły, każda ma swojego lidera zespołu. Mój czas spędzam głównie na spotkaniach strategicznych i nie mogę poświęcić wystarczająco dużo czasu na mentoring moich zespołów. Kiedy już zobaczę kod lub projekt, zwykle znajduję w nim wady, ale niewiele z nich widzę i obawiam się, że cały kod, którego nie widzę, jest źle zaprojektowany lub napisany. Jak mogę się upewnić, że moje zespoły tworzą świetny kod? Uwaga: nie jestem w stanie nikogo zwolnić.


title: Kiedy przypisania łańcuchowe (tj. a=b=c) mają złą formę?

text: Pracuję nad projektem VB.Net WinForms i odkryłem, że piszę kod w następujący sposób: this.Fizz.Enabled = this.Buzz.Enabled = someCondition; Nie mogłem zdecydować, czy to był zły kod, czy nie. Czy istnieją jakieś wytyczne dotyczące platformy .NET dotyczące tego, kiedy/kiedy nie wykonywać łańcuchów przydziałów?


title: Obsługa danych frontendowych i backendowych

text: Po pierwsze, chciałbym uzyskać odpowiedź od osoby doświadczonej (nie jednoosobowej), kogoś, kto pracował w średnim/dużym zespole i musiał wcześniej zmagać się z tym palącym pytaniem. **Problem** : ciągle jestem proszony o nieprzesyłanie **pustych** wierszy po wierszach = mam na myśli listę elementów i właściwości. Dobrym przykładem może być przesyłanie wielu plików. <form> <input type="tekst" name="pic[0][label]" /> <input type="file" name="pic[0][file]" /> <input type="text" name="pic[1][etykieta]" /> <input type="plik" name="pic[1][file]" /> <input type="text" name="pic[2][label] " /> <input type="plik" name="pic[2][plik]" /> <input type="submit" value="Prześlij" /> </form> **Wymaganie stanowi** : > * Jako użytkownik powinienem otrzymać pola 3 (trzy) pola przesyłania. > * Dla każdego pola powinien być odpowiedni tytuł/nazwa/etykieta > * Powinien być przycisk „Dodaj więcej”, aby umożliwić mi (użytkownikowi) dodawanie więcej > obrazów. > Powodem powyższego wymagania jest doświadczenie użytkownika. (Wymagane jest mniej kliknięć) **Argument Backend** Przesyłanie pustych wierszy (do serwera) jest „podatne na błędy” lub jest postrzegane jako „róg weryfikacji” **Argument Front-end** * Backend nie powinien dyktować, co FE może/nie może zrobić. * JavaScript jest bardzo niestabilny i nie powinien zarządzać/sprawdzać, czy należy wysyłać puste wiersze, czy nie **Pytanie**, jeśli użytkownik: * Wpisuje 1 (jeden) tytuł/etykietę * Wybiera 1 (jeden) obraz ze swojej lokalnej PC * Prześlij kliknięcia * Pozostawia ostatnie 2 (dwa) pola przesyłania puste. Tak więc w twojej opinii/doświadczeniu z tego rodzaju problemem. Czy fronton powinien wysyłać na serwer puste wiersze lub dane, czy nie?


title: Jakie aplikacje do pracy grupowej/zarządzania projektami (najlepiej samodzielnie hostowaną aplikację internetową) polecasz dla małego sklepu deweloperskiego?

text: Prowadzę mały sklep konsultingowy dotyczący Drupala i od dawna próbowaliśmy różnych rozwiązań do pracy grupowej, ale nic, co znaleźliśmy, nie wydaje się pasować. * Nie potrzebujemy nadmiaru CRM, takiego jak oferuje SugarCRM – to po prostu za dużo jak na nasz mały rozmiar. * Potrzebujemy integracji z git (co najmniej łatwy sposób na powiązanie zatwierdzeń z problemami) * Śledzenie czasu w konfigurowalnych lub 15-metrowych przyrostach * Śledzenie problemów na projekt * Rozliczenia (w tym cykliczne rozliczenia za umowy wsparcia itp.) * W pewnym sensie notatek/wiki dla każdego projektu, takich jak dane logowania, dane kontaktowe klienta itp. * Rejestrowanie kontaktów (klient zadzwonił o 14:20 i poprosił o dodanie paska do specyfikacji, podpisany dodatek z ceną ze względu na klienta NLT CoB dzisiaj, do zwrotu jutro przez CoB) * Rozwiązania typu open source są zdecydowanie preferowane od zamkniętych * **Przede wszystkim powinno być bardzo wydajne w użyciu.** Kilka rozwiązań właśnie tutaj wypadło z użycia, ponieważ wymagały zbyt wielu kliknięć dla prostych , częste zadania, takie jak rejestrowanie czasu spędzonego nad problemem lub odnotowywanie połączenia od klienta. Sporządzanie notatki nie powinno zająć 20 minut. **Edytuj:** Prawie zapomniałem wspomnieć: jesteśmy mieszanym sklepem Linux/Mac bez użytkowników Windows.


title: Czy programiści mogą się czegoś nauczyć, badając złośliwe oprogramowanie?

text: Malware wykorzystuje interesujące techniki ukrywania się przed oprogramowaniem antywirusowym i nie tylko. Mogą się „polimorfować”: praktycznie zmienić kod, podczas gdy dla maszyny wykonującej będzie to oznaczać prawie to samo, unieważnić definicje antywirusowe itp. Zastanawiam się, czy jest coś (niezłośliwego) programiści, którzy mogliby się nauczyć, badając źródło takie lub odwracanie ich i studiowanie wszystkiego, co uzyskasz z tego procesu, jeśli źródło nie jest dostępne, może to być przydatne poza tą (ciemną?) sferą. ** _Nie_ jestem zainteresowany pisaniem złośliwego oprogramowania.** (przynajmniej nie w celach nieedukacyjnych) To pytanie nie ma dotyczyć tego, jak napisać złośliwe oprogramowanie itp., ale czego można się nauczyć z już napisanego złośliwego oprogramowania. Ponadto, może trochę nieetyczne (mam nadzieję, że nie), czy byłoby jakieś korzyści z napisania własnego złośliwego oprogramowania, tylko dla lepszego zrozumienia luk/exploitów/bezpieczeństwa lub bazowego systemu operacyjnego?


title: Porównanie funkcji w aplikacji internetowej asp.net przy użyciu różnych metodologii baz danych

text: Mam sklep internetowy, który sprzedaje komponenty (jest to projekt akademicki), który wygląda tak. Tę samą aplikację webową stworzyłem przy użyciu następujących metodologii bazodanowych: 1. MS Sql Server z procedurami składowanymi i czytnikiem danych sql 2. LINQ to Sql 3. DB4o z wykorzystaniem LINQ (Client/Server) Jakie funkcje mogę porównać poza technicznymi i teoretycznymi szczegóły między relacyjną bazą danych a bazą danych zorientowaną obiektowo ? Jest to mój projekt dyplomowy/pracy magisterskiej. Chcę, aby cechy, które chcę porównać, były bardziej praktyczne i interesujące, abym mógł wyciągnąć konkretne i znaczące wnioski, a nie abstrakcyjne porównania, które nie wzbudzają dużego zainteresowania i są trudne do wnioskowania. Proszę pomóż mi.


title: Zarządzanie prywatnym repozytorium dla potencjalnych pracodawców

text: Mam kilka projektów, których nie chcę oglądać publicznie (niektóre z nich są pracą szkolną), ale chcę je pokazać moim potencjalnym pracodawcom. Idealnie byłbym w stanie wygenerować linki w stylu bit.ly, które wygasają po pewnym czasie. Domyślam się, że mogę to zrobić za pomocą publicznego linku Dropbox, w którym umieszczam link do kodu w CV, a po pewnym czasie usuwam folder za pomocą `crontab`, ale zastanawiam się, czy są lepsze opcje. Mam konta na github i bitbucket.


title: Wskazówki dotyczące życiorysu solowego programisty

text: **Wersja skrócona:** jestem samodzielnym programistą od 5 lat, zaraz po szkole, i szukam wskazówek dotyczących CV, ponieważ chcę znaleźć pracę w większej, dobrze zorganizowanej firmie. **Wersja długa:** Mam 26 lat, ukończyłem CS w 2007 roku. Odbyłem staż w małej firmie od 2006 roku i nadal w niej pracuję. Szukam pracy w większej firmie z powodów wykraczających poza zakres tego postu. W tym czasie byłem jedynym programistą i projektowałem/kodowałem/utrzymywałem cztery aplikacje .NET dla różnych branż. Te cztery projekty sprawiły, że byłem bardzo zajęty. Moje aplikacje mają zadowolonych klientów, działają dobrze i ładnie wyglądają. Zdaję sobie sprawę, że bycie samodzielnym programistą dało mi pewne mocne i słabe strony w porównaniu z moimi rówieśnikami. * Moją mocną stroną jest to, że potrafię dobrze się kształcić i osobiście poniosłem konsekwencje błędów, więc mogę podać BARDZO dobre powody, dla których robię rzeczy tak, jak robię. * Moją słabością jest brak mentora i stracone możliwości uczenia się od niego. Brakuje mi też pracy zespołowej przy programowaniu. Ściśle współpracowałem z innymi osobami technicznymi i miałem własne serwery SVN/TFS, ale nigdy nie współpracowałem ściśle z innymi programistami, nie delegowałem zleceń, ani nie pełniłem innej roli niż „robienie wszystkiego”. Zdaję sobie sprawę, że praca zespołowa jest kluczowym elementem dojrzałego programisty. A teraz kilka pytań na temat CV i/lub rozmowy kwalifikacyjnej: 1. Czy powinienem mówić otwarcie, że tak długo jestem na samotnej wyspie programowania? 2. Czy pisząc listę moich projektów w CV, skoro byłem deweloperem solo, powinienem opisać projekty szczegółowo i powiedzieć, że zrobiłem wszystko, zamiast mówić „zrobiłem xxx, yyy, zzz”? 3. Mój obecny pracodawca ma strony internetowe z filmami/zrzutami ekranu mojego oprogramowania w akcji, czy powinienem do nich linkować? 4. Czy uważasz, że moje mocne strony nadrabiają moje słabości i pozostawiają mnie > 0? 5. Jakieś inne wskazówki?


title: Kiedy można ponownie przypisać model do widoku w MVC?

text: Czy naprawdę można zmienić przypisanie modelu do widoku w MVC? (Lub MV*, jeśli ma to zastosowanie). Innymi słowy, w przypadku pojedynczego wystąpienia widoku, czy jest kiedykolwiek w porządku, aby ponownie przypisać model widoku? Oznacza to, że w przeciwieństwie do używania ustawiaczy (mutatorów) w modelu, aby nie trzeba było go ponownie przypisywać. Na jakich warunkach (jeśli w ogóle) jest to akceptowalny projekt MVC? Oto przykład w JavaScript, ale pytanie jest niezależne od języka. var Model = function (m) { var wiadomość = m; return { getMessage: function () { wiadomość zwrotna; }, setMessage: function (m) { wiadomość = m; } }; }; var Widok = funkcja (m) { var model = m; return { render: function () { alert(model.getMessage()); }, setModel: function (m) { model = m; // hmm, czy to w porządku? } }; }; var model1 = new Model('Witaj świecie'); var widok = nowy Widok(model1); var model2 = new Model('cześć'); zobacz.render(); view.setModel(model2); // ponownie przypisz model view.render(); model2.setMessage('cześć ponownie'); // zmutuj model za pomocą settera view.render(); W wierszu `view.setModel(model2);` model jest ponownie przypisywany (podejście, o którym mowa). W wierszu `model2.setMessage('hej ponownie');`, model jest mutowany przez swój własny seter, który moim zdaniem wydaje się ogólnie preferowany. Jedną z głównych wad zmiany przypisania modelu jest to, że może to skomplikować próby ponownego wykorzystania modelu w innym miejscu aplikacji. W niektórych aplikacjach MVC pojedynczy współdzielony model może być używany do obsługi wielu widoków (np. listy, edytora i wyświetlania widoków tych samych danych), w którym to przypadku ponowne przypisanie modelu byłoby problematyczne — wymagałoby co najmniej dodatkowej złożoności komunikacji ponowne przypisanie modelu do widoków zależnych. Myślę, że tutaj zasada DRY przewyższa zasadę braku mutatorów. (Tutaj można dyskutować.) Czy można przedstawić jeszcze silniejszy argument? Reasumując, w jakich okolicznościach cesja modelowa może być akceptowalna, jeśli w ogóle? Być może w niektórych językach, przy ekstremalnych ograniczeniach wydajności...? Czy _"nie zmieniaj przypisywania modeli"_ jest dobrą praktyczną zasadą? Pomocne byłoby wskazanie autorytatywnego źródła lub sytuacji w świecie rzeczywistym.


title: Jaki jest szkielet projektu?

text: Jakie jest faktyczne znaczenie makiety projektu?


title: Jak zaprojektować moje zajęcia tak, aby zawierały wydarzenia z kalendarza przechowywane w bazie danych?

text: Tworzę kalendarz internetowy w php (używając Symfony2) inspirowany iCal dla mojego projektu. W tej chwili mam dwie klasy: klasę „Calendar” i klasę „CalendarCell”. Oto dwie właściwości klas i deklaracje metod. klasa Kalendarz { prywatny $miesiąc; prywatny $miesiącNazwa; prywatny $rok; prywatny $kalendarzCellList = array(); prywatny tłumacz $; public function __construct($month, $year, $translator) {} public function getCalendarCellList() {} public function getMonth() {} public function getMonthName() {} public function getNextMonth() {} public function getNextYear() {} public function getPreviousMonth() {} funkcja public getPreviousYear() {} funkcja public getYear() {} funkcja prywatna obliczDayPoprzednia Miesiąc() {} funkcja prywatna obliczNumericDayOfTheFirstDayOfTheWeek() {} funkcja prywatna isCurrentDay(\DateTime $dateMonthTime) {} funkcja prywatna is(Differ \DateTime $dateTime) {} } class CalendarCell { private $day; prywatny miesiąc $; prywatny $dayNameSkrót; prywatne $numericDayOfTheWeek; prywatny $isCurrentDay; prywatny $isDifferentMonth; prywatny tłumacz $; public function __construct(array $parameters) {} funkcja public getDay() {} funkcja public getMonth() {} funkcja public getDayNameSkrót() {} funkcja public isCurrentDay() {} funkcja public isDifferentMonth() {} } Każdy dzień kalendarzowy może zawiera wiele wydarzeń kalendarza (takich jak spotkania lub harmonogramy) przechowywanych w bazie danych. Moje pytanie brzmi: jaki jest najlepszy sposób zarządzania tymi wydarzeniami z kalendarza na moich zajęciach? Myślę, że dodać właściwość eventList w CalendarCell i wypełnić ją tablicą obiektów CalendarEvent pobranych z bazy danych. Takie rozwiązanie nie pozwala innym programistom na ponowne wykorzystanie klas bez bazy danych (ponieważ powinienem wstrzyknąć przynajmniej usługi repozytorium) tylko do tworzenia i wizualizacji kalendarza ... więc może lepiej byłoby rozszerzyć CalendarCell (na przykład w CalendarCellEvent) i dodać funkcje bazy danych? Czuję, że brakuje mi jakiegoś kluczowego wzorca projektowego! Wszelkie sugestie będą bardzo mile widziane!


title: Co powinno mieć pierwszeństwo: YAGNI czy Dobry Design?

text: W którym momencie YAGNI powinien mieć pierwszeństwo przed dobrymi praktykami kodowania i vice versa? Pracuję nad projektem w pracy i chcę powoli wprowadzać dobre standardy kodowania moim współpracownikom (obecnie ich nie ma i wszystko jest po prostu zhakowane bez ładu i składu), ale po stworzeniu serii klas (my nie rób TDD, ani, niestety, żadnych testów jednostkowych) Zrobiłem krok wstecz i pomyślałem, że to narusza YAGNI, ponieważ prawie wiem z całą pewnością, że nie potrzebujemy rozszerzania niektórych z tych klas. Oto konkretny przykład tego, co mam na myśli: mam warstwę dostępu do danych, która otacza zestaw procedur składowanych, która używa podstawowego wzorca w stylu repozytorium z podstawowymi funkcjami CRUD. Ponieważ istnieje kilka metod, których potrzebują wszystkie moje klasy repozytoriów, stworzyłem ogólny interfejs dla moich repozytoriów, nazwany `IRepository`. Jednak potem stworzyłem interfejs „marker” (tj. interfejs, który nie dodaje żadnej nowej funkcjonalności) dla każdego typu repozytorium (np. `ICustomerRepository`) i implementuje go klasa konkretna. Zrobiłem to samo z implementacją Factory, aby zbudować obiekty biznesowe z DataReaders/DataSets zwrócone przez Stored Procedure; podpis mojej klasy repozytorium wygląda mniej więcej tak: public class CustomerRepository : ICustomerRepository { ICustomerFactory factory = null; public CustomerRepository() : this(new CustomerFactory() { } public CustomerRepository(ICustomerFactory factory) { this.factory = factory; } public Customer Find(int customerID) { // dostęp do danych tutaj return factory.Build(ds.Tables[ 0].Rows[0]); } } Moim zmartwieniem jest to, że naruszam YAGNI, ponieważ wiem z 99% pewnością, że nigdy nie będzie powodu, aby dać temu repozytorium coś innego niż konkretną fabrykę klienta ; ponieważ nie mamy testów jednostkowych, nie potrzebuję `MockCustomerFactory` ani podobnych rzeczy, a posiadanie tak wielu interfejsów może mylić moich współpracowników. Z drugiej strony użycie konkretnej implementacji fabryki wydaje się być projektem zapach.Czy istnieje dobry sposób na osiągnięcie kompromisu między właściwym projektowaniem oprogramowania a nie nadmierną architekturą rozwiązania?Pytam, czy muszę mieć wszystkie „interfejsy pojedynczej implementacji” lub czy mogę sac Dopracować trochę dobrego projektu i po prostu mieć na przykład interfejs bazowy, a następnie pojedynczy konkretny, i nie martwić się programowaniem interfejsu, jeśli implementacja będzie kiedykolwiek używana.


title: Efektywne spotkania zespołu

text: Jestem liderem zespołu 8 programistów w firmie liczącej około 20 osób technicznych. Pracują nad różnymi projektami, te projekty angażują również osoby z innych zespołów, które są poza moją kontrolą. Moja organizacja nie prowadzi odpowiedniego rozwoju zwinnego i są nieco odporne na zmiany, ale prowadzę codzienne spotkania stand-up w moim zespole i wszyscy uważamy je za przydatne, wszyscy są zaangażowani i skończyliśmy w ciągu 10-15 minut. Mam również cotygodniowe indywidualne spotkania z każdym członkiem zespołu, podczas których omawiamy różne ogólne tematy (zarówno techniczne, jak i nietechniczne) bardziej szczegółowo, a także różne spotkania tematyczne ad hoc. Jednak to, z czym borykam się, to moje cotygodniowe spotkanie zespołu. Traci rozpęd i nie byłem w stanie utrzymać zainteresowania ludzi. Nadal chcę odbyć dłuższe spotkanie, nawet jeśli ma to być co dwa tygodnie lub co miesiąc. Celem było omówienie różnych tematów, których nie można zrobić na spotkaniu stand up, ponieważ wymagają więcej czasu. Aktualizacje ode mnie zawierają podsumowanie każdego bieżącego projektu, nad którym pracują (czy to zgodnie z harmonogramem, różne opóźnienia itp.), wszelkie zmiany kierunku, przyszłe projekty, zmiany w procesie rozwoju itp. wykład ode mnie i co najmniej 2 osoby są oczywiście wyłączone, a reszta jest co najwyżej średnio zainteresowana. Próbowałem zachęcić ludzi do większego zaangażowania, skłaniając ich do mówienia o swoim tygodniu, ale przy 8 osobach zajmuje to dużo czasu i (częściowo dlatego, że wiele ich pracy nie przekracza zbyt wiele), większość reszty zespołu robi to nie dba o to, nad czym bardziej szczegółowo pracowali ich współpracownicy (otrzymują przegląd na wysokim poziomie podczas stand-upów). Tak więc podczas tych spotkań przynajmniej niektórzy ludzie są bardzo znudzeni i jest dla mnie prawie żenujące, gdy je trzymam. Stanowi to wyraźny kontrast do naszych pełnych energii porannych spotkań na stojąco. Jakieś porady dotyczące tego, co mogę zrobić, aby ludzie byli bardziej zaangażowani i zainteresowani? I jak mogę zmusić ich do prezentowania rzeczy na swoich lub rozpoczynania dyskusji z udziałem wszystkich, zamiast być monologiem ode mnie?


title: Notacja średniej złożoności czasowej algorytmu

text: Jakiej notacji używasz dla **średniej** złożoności czasowej algorytmu? Wydaje mi się, że właściwym sposobem byłoby użycie big-theta w odniesieniu do zestawu wyników (nawet jeśli konkretna próba może się różnić). Na przykład średnie wyszukiwanie w tablicy to Θ(n+1)/2. Czy to jest poprawne? Wyjaśnienie średniego czasu wyszukiwania wynoszącego Θ(n+1)/2: Biorąc pod uwagę, że suma czasów dostępu dla n pierwszych liczb całkowitych wynosi n(n+1)/2, średni czas dla dużej liczby losowych dostępów do tablicy będzie być (n(n+1)/2)/n = (n+1)/2. W tym przypadku powiedziałbym, że Θ(n+1)/2 będzie średnim czasem dostępu. To ma sens (dla mnie), ale ponieważ jestem nowy w notacji asymptotycznej (i ogólnie w programowaniu), chciałbym wiedzieć, czy jest to powszechna praktyka. Pytam, ponieważ jestem zdezorientowany, widząc, że big-O jest używane wszędzie na stronach takich jak http://bigocheatsheet.com. np.: średni przypadek przeszukiwania tablicy O(n).


title: Jak serwer może inicjować żądanie w protokole SIP?

text: Zarówno klient, jak i serwer mogą zainicjować żądanie w SIP. Jak to jest możliwe? Skąd serwer będzie wiedział o kliencie?


title: Jaka jest wartość sprawdzania w nieudanych testach jednostkowych?

text: Chociaż istnieją sposoby zapobiegania wykonywaniu testów jednostkowych, jaka jest wartość sprawdzania w przypadku nieudanych testów jednostkowych? Posłużę się prostym przykładem: wielkość liter. W bieżącym kodzie rozróżniana jest wielkość liter. Prawidłowe dane wejściowe do metody to „Cat” i zwróci ona wyliczenie Animal.Cat. Jednak pożądana funkcjonalność metody nie powinna uwzględniać wielkości liter. Więc jeśli opisana metoda została przekazana jako "cat", prawdopodobnie mogłaby zwrócić coś takiego jak Animal.Null zamiast Animal.Cat, a test jednostkowy zakończyłby się niepowodzeniem. Chociaż prosta zmiana kodu sprawiłaby, że zadziałałoby to, naprawienie bardziej złożonego problemu może zająć tygodnie, ale zidentyfikowanie błędu za pomocą testu jednostkowego może być mniej złożonym zadaniem. Analizowana aplikacja ma 4 lata kodu, który „działa”. Jednak ostatnie dyskusje dotyczące testów jednostkowych wykazały błędy w kodzie. Niektóre po prostu potrzebują wyraźnej dokumentacji implementacji (np. z uwzględnieniem wielkości liter lub nie) lub kodu, który nie wykonuje błędu na podstawie tego, jak jest obecnie wywoływany. Ale testy jednostkowe można tworzyć wykonując określone scenariusze, które spowodują, że błąd będzie widoczny i będą prawidłowymi danymi wejściowymi. > Jaką wartość ma sprawdzanie w testach jednostkowych, które sprawdzają błąd, do czasu > gdy ktoś będzie mógł zająć się naprawą kodu? Czy ten test jednostkowy powinien być oznaczony zignorować, priorytetem, kategorią itp., aby określić, czy kompilacja zakończyła się pomyślnie na podstawie wykonanych testów? Ostatecznie należy utworzyć test jednostkowy, aby wykonać kod, gdy ktoś go naprawi. Z jednej strony pokazuje, że zidentyfikowane błędy nie zostały naprawione. Z drugiej strony, w dziennikach mogą pojawiać się setki nieudanych testów jednostkowych i trudno będzie znaleźć te, które powinny zakończyć się niepowodzeniem, w porównaniu do niepowodzeń z powodu zaewidencjonowania kodu.


Czy aplikacja internetowa musi znajdować się w przeglądarce, aby mogła nazywać się aplikacją internetową? A może cienki klient, który wykorzystuje usługę sieciową do większości swoich funkcji, jest aplikacją sieciową?


title: Czy protokół OAuth jest odpowiedni w tym scenariuszu?

text: Muszę stworzyć prostą aplikację internetową do śledzenia wydatków, z kilkoma podstawowymi czynnościami (użytkownik musi być w stanie założyć konto i zalogować się, wyświetlić listę wydatków, edytować je itp.) z REST API dla każdego z nich, a cały trik polega na tym, że Muszę mieć możliwość przekazywania poświadczeń zarówno do strony internetowej, jak i do interfejsu API. Tak więc, po kilku badaniach znalazłem kilka przykładów używania uwierzytelniania szyfrowanego i HMAC, ale wiele postów wspominało również o OAuth jako alternatywnym podejściu, więc moje pytanie brzmi, czy biorąc pod uwagę ten scenariusz, czy właściwe byłoby użycie OAuth? To znaczy, o ile rozumiem, OAuth jest odpowiedni, gdy chcesz dzielić zasoby z inną aplikacją, czego nie robię w tym projekcie; poza tym, gdy próbujesz uzyskać dostęp do współdzielonego zasobu, pojawia się strona żądająca pozwolenia na obcą aplikację, czy ta strona pojawi się w pewnym momencie w mojej aplikacji? (może po zalogowaniu?) Jeśli OAuth nie byłoby odpowiednie, czy jest jakaś inna opcja poza uwierzytelnianiem szyfrowanym i uwierzytelnianiem HMAC?


title: Jakich parametrów użyć do porównania frameworków/zestawów narzędzi GUI?

text: Przeprowadzam badania nad najlepszym zestawem narzędzi GUI do wykorzystania w przyszłych produktach w firmie. Mówimy o dość dużych organizacjach z sporą ilością kodu i całkowitym przepisaniem projektu w planowaniu. Nie pytaj. W każdym razie staram się stworzyć listę odpowiednich parametrów, aby ocenić zestawy narzędzi. Czego użyłbyś do przeprowadzenia porównania? Oto, co mam do tej pory: * Dojrzałość * Łatwość rozwoju * Łatwość tworzenia prototypów * Łatwość utrzymania * Wielkość puli pracowników * Dostępna wiedza w firmie * Koszty szkolenia * Wielkość społeczności * Poziom wiedzy społeczności (jak trudno jest znaleźć dobre odpowiedzi na złożone problemy) * Ilość dostępnych książek na poziomie eksperckim * Możliwość interfejsu do innych technologii * Zagadnienia dotyczące wdrożenia * Estetyka wizualna * Możliwość dostępu do zasobów systemu operacyjnego * Obsługa wielu monitorów (coś, co może się przydać w naszej konkretnej aplikacji)


title: przyszłość produktów komercyjnych

text: Widzę, że rozwiązania open source szybko się rozwijają i wiele firm korzysta z nich teraz. Jak myślisz, jaka będzie przyszłość produktów lub rozwiązań komercyjnych?


title: Styl i zalecenia komentowania kodu

text: Chcę usłyszeć od Ciebie wszelkie rady i doświadczenia związane z pisaniem komentarzy w Twoim kodzie. Jak je napisać w najprostszy i najbardziej pouczający sposób? Jakie masz nawyki podczas komentowania fragmentów kodu? Może jakieś egzotyczne rekomendacje? Mam nadzieję, że to pytanie zbierze najciekawsze porady i zalecenia dotyczące komentowania, coś przydatnego, z którego każdy może się nauczyć. OK, zacznę. 1. Zwykle nie używam komentarzy `/* */` nawet jeśli potrzebuję zakomentować wiele linii. **Zalety** : kod wygląda wizualnie lepiej niż po połączeniu takiej składni z jednowierszowymi komentarzami. Większość IDE ma możliwość komentowania zaznaczonego tekstu i zwykle robią to za pomocą składni jednowierszowej. **Wady**: Trudno edytować taki kod bez IDE. 2. Umieść kropkę na końcu każdego zakończonego komentarza. Na przykład: //Rozpoznaj styl tapety. Tutaj chciałem dodać dodatkowe szczegóły int style = int.Parse(styleValue); //Zastosuj styl do obrazu. Zastosuj (styl); **Zalety** : Umieść kropkę tylko w komentarzach, które zostały zakończone. Czasami możesz wpisać informacje tymczasowe, więc brak "kropki" będzie oznaczał, że chciałeś wrócić i dodać dodatkowy tekst do tego komentarza. 3. Wyrównaj tekst w wyliczeniach, parametrach komentarzy itp. Na przykład: public enum WallpaperStyle { Fill = 100, //WallpaperStyle = "10"; TileWallpaper = "0". SizeToFit = 60, //WallpaperStyle = "6"; TileWallpaper = "0". Stretch = 20, //WallpaperStyle = "2"; TileWallpaper = "0". Kafelek = 1, //WallpaperStyle = "0"; TileWallpaper = "1". Środek = 0 //WallpaperStyle = "0"; TileWallpaper = "0". }; **Zalety** : Po prostu wygląda lepiej i wizualnie łatwiej znaleźć to, czego potrzebujesz. **Wady** : spędzanie czasu na wyrównaniu i trudniejsze do edycji. 4. Napisz w komentarzu tekst, którego nie uzyskasz analizując kod. Na przykład głupi komentarz: //Zastosuj styl. Zastosuj (styl); **Zalety** : w komentarzach będziesz mieć przejrzysty i mały kod, zawierający tylko przydatne informacje.


title: Odpowiednie połączenie planowania i programowania w nowym projekcie

text: Zaraz zaczynam nowy projekt (gra, ale to nieistotne). Podstawowa idea tkwi w mojej głowie, ale nie wszystkie szczegóły. Nie chcę zaczynać programowania bez planowania, ale poważnie walczę z chęcią zrobienia tego. Chcę wcześniej zaplanować, aby zapobiec refaktoryzacji całej aplikacji tylko dlatego, że wymaga tego nowa funkcja, o której mógłbym pomyśleć. Z drugiej strony nie chcę planować wielu miesięcy (wolny czas) i zaczynać, bo obawiam się, że w tym czasie stracę motywację. To, czego szukam, to sposób na połączenie obu bez dominacji jednego nad drugim. Czy projekt powinienem realizować w sposób scrumowy? Czy powinienem tworzyć historyjki użytkowników, a następnie je realizować? Czy powinienem pracować oparty na funkcjach? (Mam pewne doświadczenie w scrum i klasycznym sposobie "specyfikacji do kodu".) **Aktualizacja** : Co powiesz na rozpoczęcie od "kliknięcia" i zaimplementowanie funkcjonalności później?


title: Jaka jest zalecana ścieżka nauki dla PHP i JavaScript?

text: Od kilku miesięcy chciałem nauczyć się JavaScript i PHP, ale brak czasu nie dał mi takiej możliwości. Jestem w sytuacji, w której mam wystarczająco dużo czasu, aby nauczyć się tylko jednego języka i przećwiczyć go lub oba z rzędu bez wykonywania jakiejkolwiek praktyki przez około 1-2 miesiące, z wyjątkiem kodu w książkach. Mam trochę doświadczenia w programowaniu Java i zbudowałem 3 aplikacje w Javie, więc nie jestem zupełnie nowy, jeśli chodzi o programowanie, ale nie mogę powiedzieć, że jestem na poziomie średniozaawansowanym. Mam też pewne doświadczenie z jQuery, co przy okazji niedawno zdałem sobie sprawę, że błędem było uczyć się jQuery przed Javascriptem i XHTML/CSS. Oto materiały, które zamierzam przeczytać dla obu z nich: JavaScript: 1. Dobre korzystanie z JavaScript 2. Profesjonalny JavaScript dla programistów WWW 3. edycja 3. 24-godzinny trener JavaScript 4. Wzorce JavaScript 5. JavaScript: dobre części PHP: 1. Rozwiązania PHP Dynamiczne projektowanie stron internetowych stało się łatwe 2. edycja 2. PHP i MySQL Web Development 4. edycja 3. Oreilly PHP Cookbook 2. edycja To były zasoby, które polecił mi znajomy, aby w pełni zrozumieć te dwie technologie dokładnie w ten porządek i to właśnie planuję przeczytać w czasie, jaki mam latem. Jeśli jest coś, co chciałbyś dodać, proszę, powiedz mi. Zależy mi na poznaniu ich obu w pełni ich potencjału. Więc o co chcę zapytać, czy jest właściwe, aby spróbować nauczyć się PHP natychmiast po nauczeniu się JavaScript, czy powinienem trzymać się tylko jednego z nich, dopóki nie nauczę się go lepiej i przejdę do drugiego po?


title: Jak zrobić dokumentację kodu i dlaczego oprogramowanie jest (często) słabo udokumentowane?

text: Istnieje kilka dobrych przykładów dobrze udokumentowanego kodu, takich jak java api. Jednak wiele kodu w projektach publicznych, takich jak git i wewnętrzne projekty firm, jest słabo udokumentowane i niezbyt przyjazne dla nowicjuszy. We wszystkich moich fazach rozwoju oprogramowania miałem do czynienia ze słabo udokumentowanym kodem. Zauważyłem następujące rzeczy - 1. Niewiele komentarzy w kodzie lub ich brak. 2. Nazwy metod i zmiennych nie są samoopisujące. 3. Istnieje niewielka lub żadna dokumentacja dotycząca tego, jak kod pasuje do systemu lub procesów biznesowych. 4. Zatrudnianie złych programistów lub brak mentoringu dla dobrych . Nie potrafią napisać prostego i czystego kodu. Stąd trudno lub niemożliwe jest udokumentowanie kodu przez nikogo, w tym dewelopera. W rezultacie musiałem przejść przez dużo kodu i porozmawiać z wieloma ludźmi, aby się czegoś nauczyć. Czuję, że to marnuje czas wszystkich. Stwarza również potrzebę sesji KT/transferu wiedzy dla nowicjuszy w projekcie. Dowiedziałem się, że dokumentacji nie poświęca się tyle uwagi, na jaką zasługuje, z następujących powodów: 1. Lenistwo. 2. Deweloperzy nie lubią robić niczego poza kodowaniem. 3. Bezpieczeństwo pracy. (Jeśli nikt nie może łatwo zrozumieć twojego kodu, możesz nie być łatwym do zastąpienia.) 4. Trudne terminy pozostawiają mało czasu na udokumentowanie. Zastanawiam się więc, czy istnieje sposób na zachęcanie i egzekwowanie dobrych praktyk dokumentacyjnych w firmie lub projekcie. Jakie są strategie tworzenia porządnej dokumentacji systemów i kodu dowolnego projektu, niezależnie od jego złożoności? Czy są jakieś dobre przykłady, kiedy wymagana jest minimalna lub żadna dokumentacja? IMHO, uważam, że powinniśmy mieć przegląd dokumentacji po dostarczeniu projektu. Jeśli nie jest to proste, zwięzłe, ilustracyjne i przyjazne dla użytkownika, odpowiedzialność za to ponosi programista lub inżynier dokumentacji technicznej i musi to naprawić. Nie oczekuję, że ludzie zrobią ryzy dokumentacji, nie liczę, że będzie ona przyjazna dla użytkownika jak pierwsze książki, ale oczekuję, że wyeliminuje to potrzebę godzin analiz i marnotrawstwa sesji KT. Czy istnieje sposób na zakończenie lub złagodzenie tego szaleństwa? Może "rozwój oparty na dokumentach"?


title: Zrozumienie bezpaństwowego internetu

text: Zmieniam się jako programista komputerów stacjonarnych na programistę stron internetowych i mam problem ze zrozumieniem, dlaczego HTTP jest bezstanowy. Jakie są tego powody? W jaki sposób programista komputerów stacjonarnych, taki jak ja, może przejść do bezstanowego środowiska programistycznego?


title: Czy jako młodszy inżynier oprogramowania powinienem powiedzieć, że coś zostało zrobione nie tak, jeśli tak uważam?

text: Niedawno dołączyłem do firmy i jest to moja pierwsza praca. Czytając bazę kodu czułem, że kod nie jest dobrze napisany. Wydawało mi się, że kod miał większość wspomnianych tutaj problemów, a także wydawał się mieć Anemiczny Model Domeny. Nie ma testów jednostkowych i nie wykorzystują żadnych narzędzi do sprawdzania jakości kodu, takich jak findbugs czy pmd. Problem, jaki mam, polega na tym, że kod jest bardzo trudny do zrozumienia. Może moje wnioski są błędne, bo nie jestem aż tak doświadczony. Potrzebuję porady, czy powyższe fakty przekazać przełożonemu, czy nie. Jeśli mam się komunikować, z kim (Tech Lead, Architekt, Product Manager) i jak? A jeśli się komunikuję, czy źle to przyjmą, skoro jestem juniorem i nie mam doświadczenia?


title: Pytanie licencyjne dotyczące braku instrumentów pochodnych

text: Pracuję nad projektem, w którym chciałbym uzyskać następujące warunki licencyjne: * Zezwalaj na niezmodyfikowaną redystrybucję, z uznaniem autora * Nie zezwalaj na zmodyfikowaną redystrybucję * Użytkowanie niekomercyjne Teraz licencja CC BY-NC-ND 4.0 jest do tego idealna. jednak nie obejmuje on żadnych tematów związanych z oprogramowaniem, a same CC twierdzą, że tak naprawdę nie należy używać licencji CC do projektów oprogramowania. Więc czego powinieneś użyć w takim przypadku? LGPL zbliża się, ale pozwala na komercyjne wykorzystanie. Standardowe prawa autorskie bez licencji również się zbliżają, ale pozwalają na komercyjne wykorzystanie, jednocześnie zabraniając redystrybucji. BTW, rozumiem, że nie jesteście prawnikami. Ale możesz mieć doświadczenie z licencjonowaniem, aby wiedzieć, jakiego rodzaju licencji powinieneś szukać w przypadku moich potrzeb.


title: Czy podczas korzystania z licencji Apache nadal istnieje potrzeba zawarcia umowy licencyjnej współautora (CLA)?

text: Z pewnością widzę potrzebę CLA z krótszą licencją, taką jak MIT lub BSD, ale bardziej gadatliwy Apache wydaje się już mieć w sobie tego typu słownictwo. Wolałbym nie dodawać tego poziomu komplikacji do projektu open source, jeśli nie jest to konieczne z licencją Apache 2.0. CLA wydają się przede wszystkim przyznawać licencję praw autorskich i licencję patentową od współtwórcy projektu, które są już w tekście licencji Apache 2.0 (sekcje 2 i 3). Jeśli korzystam z licencji Apache, czy naprawdę muszę dodać dodatkowy wymóg dla współtwórców, aby podpisać CLA? Zasadniczo chcę uzyskać ogólne korzyści z CLA (takie jak jednoznaczne prawo do ponownej licencji, chociaż kontrybutor zachowuje prawo własności) bez zmuszania współtwórców do wypełniania garści informacji i podpisywania umowy w formie innej firmy. Czy czynność klonowania repozytorium, modyfikowania kodu i wysyłania żądania ściągnięcia nie oznacza zgody na warunki powiązanej licencji? Sekcja 5 Licencji Apache 2.0 wyraźnie stwierdza, że wkłady będą również podlegać Apache 2.0: > **Przesyłanie Wkładów**: O ile Użytkownik wyraźnie nie określi inaczej, wszelki > Wkład celowo przesłany do Utworu przez Użytkownika > Licencjodawcy podlegać warunkom niniejszej Licencji, bez > żadnych dodatkowych warunków. Niezależnie od powyższego, żadne > zawarte w niniejszym dokumencie nie zastąpi ani nie zmodyfikuje warunków jakiejkolwiek oddzielnej umowy licencyjnej > zawartej z Licencjodawcą w odniesieniu do takich Wkładów. W połączeniu z sekcjami 2 i 3 dotyczącymi udzielania licencji praw autorskich i licencji patentowej „...powielanie, przygotowywanie prac pochodnych, sublicencjonowanie...” wydaje się, że Apache 2.0 obejmuje już podstawy projektu dotyczące zgłoszeń. Czy może źle rozumiem możliwą różnicę między „sublicencją” a faktyczną zmianą licencji projektu? (Ponieważ witryna z pytaniami i odpowiedziami na temat licencjonowania Open Source jest nadal tylko propozycją, zaakceptuję odpowiedzi IANAL tutaj.)


title: Czy proces pull request na GitHub może stanowić podpis elektroniczny CLA?

text: Doceniam potrzebę zawarcia umowy licencyjnej współautora (CLA) w projektach oprogramowania typu open source, a nawet rozumiem, że niektóre narzędzia zaczynają ułatwiać ten proces (np. CLAHub o niskim tarciu dla GitHub i Project Harmony). Jednak zamiast wymagać przesłania formularza strony trzeciej do podpisu elektronicznego, należy dodać dodatkowe zdanie i samą umowę CLA do CONTRIBUTING.md, do którego link GitHub, gdy współtwórca przesyła żądanie ściągnięcia (wyświetlane jako „Proszę zapoznać się z wytycznymi dla przyczyniając się do tego repozytorium”), zezwalaj na prawidłowy podpis elektroniczny (np. „Przesłanie żądania ściągnięcia do tego repozytorium w serwisie GitHub z Twoim imieniem i nazwiskiem oraz adresem e-mail stanowi Twoją zgodę i podpis elektroniczny następującej Umowy Licencyjnej Współtwórcy...”)? Być może argument ten opiera się na definicji „podpisu elektronicznego” (ESIGN, UETA itp.): > **„Podpis elektroniczny”** oznacza elektroniczny dźwięk, symbol lub proces > dołączony lub logicznie powiązany z zapisem i wykonany lub przyjęte przez > osobę z zamiarem podpisania protokołu. I chciałbym zaproponować, aby „proces” żądania ściągnięcia GitHub był „logicznie powiązany” z „rekordem” CONTRIBUTING.md/CLA i aby kontrybutor miał „zamiar podpisania” poprzez przyjęcie procesu... (Ponieważ Witryna z pytaniami i odpowiedziami dotyczącymi licencjonowania open source jest nadal tylko propozycją, tutaj zaakceptuję odpowiedzi IANAL.)


title: Aplikacje ułatwiające prezentacje kodu na żywo?

text: Naprawdę lubię oglądać demonstracje kodu na żywo, zwłaszcza gdy czas koncentruje się na tym, co robi kod, a nie na tym, co pisze prezenter. Wiele osób wydaje się używać aplikacji do zarządzania schowkiem w celu wklejenia kodu do IDE. Jakie aplikacje są dostępne do umiejętnego zarządzania schowkiem, aby bezproblemowo wykonać demo kodu? AKTUALIZACJA: Znalazłem tę aplikację, z której korzystają inżynierowie Apple, o nazwie _DemoMonkey_. W rzeczywistości jest to demo aplikacji OS X dla, jak na ironię, schowka i usług systemowych. Link zawiera źródło, więc stworzenie odpowiednika na PC byłoby łatwe, czy naprawdę nic tam nie ma?


title: Jaka jest etykieta wydawania modułu Perla opartego na module innej osoby?

text: Napisałem moduł Perla, zaczynając od istniejącego modułu Perla o powiązanej funkcjonalności i mocno modyfikując. W rzeczywistości, zgodnie z git winą, zmieniłem (lub stworzyłem) każdą linię kodu nie biolerplate w module. Oczywiście zmieniłem też nazwę modułu, więc gdybym wrzucił go do CPAN, nie kolidowałby bezpośrednio z oryginalnym modułem. W każdym razie, pomimo moich ciężkich modyfikacji, moduł nadal jest koncepcyjnie oparty na swoim poprzedniku i chciałbym pochwalić jego autorów. Widzę jednak, jak mogą nie doceniać, gdy ich nazwiska i e-maile są umieszczane w czymś, co wydaje się być nowym modułem bez ich wiedzy. Czy powinienem więc po prostu określić siebie jako jedynego autora i umieścić autorów oryginalnego modułu w sekcji „Podziękowania”? Jaki jest najlepszy sposób na uznanie oryginalnych autorów w moim module?


title: Co to jest „rojenie”?

text: Słyszałem o **roju** wspominanym w kontekście Agile lub Extreme Programming. Wydaje się być dopełnieniem parowania. Co to właściwie jest? Kiedy należy go zastosować? Jak dobrze to robisz?


title: Czy kod bezwarunkowy jest uważany za oddział?

text: Mając prosty kod, taki jak ten: int A=5; obiekt X=Console.ReadLine() if(Condition) DoSomething(); inny DoStuff(); Zrób coś innego(); Niektóre źródła podają, że w rzeczywistości istnieją 4 gałęzie: pierwsza bezwarunkowa, dwie dla instrukcji IF i kolejna bezwarunkowa po instrukcji IF. Niektórzy twierdzą, że są tylko dwie gałęzie. Co byłoby poprawne? Np. tutaj: http://www.ruleworks.co.uk/testguide/BS7925-2-Annex-B7.asp


title: Gdzie zazwyczaj używałbym Deque w oprogramowaniu produkcyjnym?

text: Jestem dość zaznajomiony z tym, gdzie używać stosów, kolejek i drzew w aplikacjach, ale nigdy wcześniej nie korzystałem z Deque (kolejki z podwójnym zakończeniem). Gdzie zazwyczaj spotkałbym je na wolności? Czy byłby w tych samych miejscach co Kolejka, ale z dodatkowymi chwytakami?


title: Czym jest Biblia haszowania?

text: Czy istnieje odniesienie podobne do Cormena na temat haszy i haszowania? Ta konkretna struktura z jakiegoś powodu nie poświęca wiele uwagi mojej edukacji CS, ale chciałbym dowiedzieć się więcej, ponieważ wydaje się, że są wszędzie. Wiem, że Cormen to obejmuje, ale szukam czegoś bardziej specjalistycznego i dogłębnego.


title: Dlaczego metoda add() listy Linkedlist zwraca wartość true w Javie?

text: Dlaczego metoda `add` w Linkedlist zwraca true w Javie? http://docs.oracle.com/javase/1.5.0/docs/api/java/util/LinkedList.html#add(E) Dlaczego nie zrobić z tego metody void? Wiem, że jest napisane „zgodnie z ogólną umową Collection.add”, ale dlaczego ta umowa/interfejs nie powoduje, że `add` jest metodą void?


title: Dlaczego ludzie uważają Python za słaby język?

text: Używam Pythona od jakiegoś czasu i bardzo mi się to podoba, ale kilku moich znajomych mówi mi, abym zaczął używać języka takiego jak C# lub Java i podał następujące powody: 1. Python jest językiem skryptowym 2. Aplikacje w języku Python nie są dobrze przystosowane do osób, które nie mają Pythona 3. Trudno jest tworzyć dobre GUI w Pythonie, ponieważ jest to język skryptowy. PyPI jest dla mnie naprawdę przydatne. Czy jest jakiś konkretny powód, dla którego Python jest uważany za słaby język?


title: Nazywanie wydania

text: OS X 10.9 nazywa się nie tylko 10.9, ale także Mavericks. iOS7 nazywa się po prostu iOS7. Wersje na Androida noszą nazwy słodyczy. Jakie jest uzasadnienie nadawania nazwy wydanej wersji? Jakie są korzyści, jeśli w ogóle? Większość aplikacji po prostu zwiększa liczbę w miarę wypychania nowych wersji. Czy nazywanie wydania (Mavericks, Kit kat itp.) jest tylko w celach marketingowych?


title: Dlaczego platformy .NET i C# nie są dostępne na platformach chmurowych?

text: Sprawdziłem Google App Engine i Heroku, ale oba nie obsługują aplikacji .NET/C#. Mimo że Google App Engine pokazuje obsługę Windows Azure, ale w obsługiwanych językach nie pokazuje C# ani VB. Czy platforma .NET nie jest obsługiwana w Cloud Platform?


title: Pokaż swoim klientom swoją mapę drogową

text: Czytałem jakiś czas temu artykuł o „Zarządzaniu oczekiwaniami” i zadaję sobie pytanie, czy to dobry czy zły pomysł, aby podzielić się swoją mapą drogową z klientami? Z twojego doświadczenia, jakie są plusy i minusy takiego postępowania?


title: Co to jest kod „lambda”?

text: Ostatnio słyszałem, jak ludzie mówią, że kod to „lambda”. Nigdy wcześniej nie słyszałem o tym zdaniu. Co to znaczy?


title: Gdzie w kodzie zazwyczaj umieszcza się wiele metod testowych JUnit?

text: Właśnie przeczytałem samouczek Vogella JUnit i uznałem go za bardzo pomocny w zrozumieniu, jak korzystać z JUnit. Jednak jestem trochę zdezorientowany, jaka jest konwencja umieszczania wielu metod testowych w kodzie. Samouczek umieszcza tylko jedną metodę testową w klasie, a następnie opisuje, w jaki sposób można użyć zestawu testów do grupowania wielu klas testowych. Czy to oznacza, że powszechną praktyką dla każdej klasy testowej jest posiadanie tylko jednej metody testowej, a następnie używanie zestawów testów do łączenia ich razem? A może było to po prostu niezamierzone i zamiast tego powszechną praktyką jest umieszczanie wielu metod testowych w klasie?


title: Skalowalne korporacyjne a skalowalne internetowe, jakie jest znaczenie i różnice?

text: Czytając o aplikacjach Java EE, gdzieś widziałem ludzi mówiących, że są skalowalne w przedsiębiorstwie, nie wiem, co to tak naprawdę oznacza? Czy aplikacje internetowe Java są głównie napisane i nadają się do tworzenia narzędzi do zarządzania przedsiębiorstwem, a nie do witryn o dużym natężeniu ruchu w dzisiejszym świecie, które muszą być skalowane do dużej populacji Internetu?


title: Jak organizujesz swój framework MVC, jednocześnie wspierając moduły/wtyczki?

text: Istnieją dwie główne struktury kodu, które widziałem, jeśli chodzi o frameworki MVC. Problem polega na tym, że oboje wydają się mieć błąd organizacyjny, który im towarzyszy. **Standardowy MVC** /controller /model /view _Problem: Brak rozdzielenia powiązanych komponentów (forum, blog, użytkownik itp.)_ **Modular MVC** /blog /controller /model /view /user /controller / model /view /forum /controller /model /view Wybór systemu opartego na modułach pozostawia problem. * Długie nazwy (Forum_Model_Forum = forum/model/forum.php) (jak Zend) * System plików przeszukuje system plików za pomocą `is_file()`, aby znaleźć folder, w którym znajduje się model forum? (Jak Kohana) **Czy są jakieś inne struktury MVC, które działają dobrze przy próbie oddzielenia różnych modułów?** Czy są jakieś korzyści z tych struktur, których mi brakuje?


title: Czy programiści Pythona uważają, że problem z białymi znakami jest niewygodny?

text: Wielu programistów, po pierwszym zetknięciu się z Pythonem, od razu zniechęca się znaczeniem białych znaków. Słyszałem wiele powodów, dla których jest to niewygodne, ale nigdy nie słyszałem narzekań od programisty Pythona. Oczywiście nie spotkałem wielu programistów Pythona, ponieważ swoją karierę spędziłem w świecie Javy. Więc moje pytanie jest skierowane do tych z Was, którzy uczestniczyli w dużym projekcie Pythona (ponad 3 miesiące, gdzie Python jest głównym używanym językiem): Czy problem z białymi znakami jest niewygodny i ciągle denerwujący? A może nie było to problemem, gdy znalazłeś się w ruchu? Nie zadaję tego pytania, ponieważ jestem za lub przeciw Pythonowi, albo za lub przeciw jego używaniu spacji. Tak się składa, że lubię Pythona, ale nigdy nie używałem go do niczego dużego. Proszę nie spekulować, jeśli nie masz doświadczenia w Pythonie.


title: Czy zasady projektowania są ważne, a jeśli tak, to dlaczego nie używa ich więcej osób?

text: Jestem programistą pracującym w wewnętrznym dziale technologii teleinformatycznych (ICT). Zwykle jestem bardzo krytyczny, gdy patrzę na kod, którego nie napisałem, ponieważ raz po raz stwierdzam, że nie przestrzega on zasad takich jak SOLID (pojedyncza odpowiedzialność itp.). Kiedyś zakładałem, że to dlatego, że pracowałem w wewnętrznym dziale ICT, a nie w outsourcingu usługi ICT. Jednak teraz próbuję zintegrować wewnętrznie opracowaną aplikację z kilkoma aplikacjami innych firm opracowanymi przez dużych dostawców oprogramowania. Jednak znowu kod nie wydaje się być zbyt dobrze napisany, np. nie ma interfejsów i każda metoda jest publiczna. Widzę to raz po raz, kiedy programiści tworzyli kilka klas i to wszystko (tzn. wszystko związane ze sprzedażą idzie w klasie sprzedaży itp.) Nie chcę brzmieć, jakbym marudził; Zastanawiałem się tylko, czy inni programiści uważają zasady projektowania za ważne. Zastanawiam się, czy nie jestem zbyt ograniczony.


title: Jak ORM zarządza operacjami CRUD w środowisku wielowątkowym?

text: Załóżmy, że mam kod, który pobiera obiekt, modyfikuje go i przesyła go za pomocą dowolnego ORM z aplikacji internetowej. Poniżej znajduje się pseudokod: Pierwsze żądanie var objCust = _dbContext.Customers.Where(c=>c.CustomerId == "ALFKI").SingleOrDefault(); objCust.Address ="adres testowy 1"; //i dodaj kilka zamówień _dbContext.SubmitChanges(); Drugie jednoczesne żądanie var objCategory = _dbContext.Categories.Where(c=>c.CategoryId == 1).SingleOrDefault(); objCategoryName = "nazwa testu"; _dbContext.PrześlijZmiany(); W jaki sposób pierwsze żądanie obejmuje tylko zmiany wprowadzone do klientów i przesyła zmiany. Czy istnieje mechanizm wbudowany w ORM do śledzenia zmian w jednostkach na wątek lub żądanie.


title: Czy ten status pokazuje zielony sygnał?

text: Wykonałem tę statyczną analizę kodu za pomocą programu Code Analyzer. Czy to zielony sygnał, czy powinienem poprawić standardy kodowania? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/UVXFb.jpg)


title: Zależności projektu Git w serwisie GitHub

text: Napisałem framework PHP i CMS na szczycie frameworka. CMS jest zależny od struktury, ale struktura istnieje jako samodzielny folder w plikach CMS. Chciałbym zachować je jako osobne projekty na GitHub, ale nie chcę mieć bałaganu związanego z aktualizacją projektu CMS za każdym razem, gdy aktualizuję framework. Idealnie, chciałbym, aby CMS jakoś ściągał pliki frameworka w celu włączenia do predefiniowanego podkatalogu, a nie fizycznie zatwierdzał te pliki. Czy jest to możliwe z Git/GitHub? Jeśli tak, co muszę wiedzieć, aby to działało? Pamiętaj, że jestem na bardzo, bardzo podstawowym poziomie doświadczenia z Git - mogę tworzyć repozytoria i zatwierdzać za pomocą wtyczki Git dla Eclipse, łączyć się z GitHub i to wszystko. Obecnie pracuję solo nad projektami, więc do tej pory nie musiałem uczyć się zbyt wiele o Git, ale chciałbym udostępnić go innym w przyszłości i chcę się upewnić, że mam rację. Jaki powinien być mój idealny przepływ pracy dla projektów z zależnościami? Wszelkie wskazówki na ten temat również byłyby mile widziane. Jeśli potrzebujesz więcej informacji na temat mojej konfiguracji, po prostu zapytaj w komentarzach.


title: Co następuje po analizie leksykalnej?

text: Pracuję nad kompilatorem zabawek (dla jakiegoś prostego języka, takiego jak PL/0) i mam uruchomiony lekser. W tym momencie powinienem zacząć pracę nad budowaniem drzewa parsowania, ale zanim zacząłem, zastanawiałem się: Ile informacji można zebrać z samego ciągu tokenów? Oto co zebrałem do tej pory: 1. Można już robić podświetlanie składni mając tylko listę tokenów. Liczby i operatory są odpowiednio pokolorowane, a słowa kluczowe również. 2. Powinno być również możliwe autoformatowanie (wcięcia). Jak? Określ dla każdego typu tokena, ile spacji lub znaków nowej linii powinno po nim następować. Również podczas drukowania tokenów modyfikuj zmienną wyrównania (gdy drukarka kodów odczytuje „{” zwiększ zmienną wyrównania o 1 i zmniejsz o 1 dla „}”. Za każdym razem, gdy zacznie drukować w nowej linii, drukarka kodów zostanie wyrównana zgodnie z tym zmienna wyrównania) 3. W językach bez podprogramów zagnieżdżonych można uzyskać pełną listę podprogramów i ich sygnaturę. Jak? Po prostu przeczytaj, co następuje po słowie kluczowym „procedure” lub „function”, dopóki nie naciśniesz pierwszego „)” (powinno to działać dobrze w języku Pascala bez zagnieżdżonych podprogramów) 4. W językach takich jak Pascal możesz nawet określić lokalne zmienne i ich typy, ponieważ są zadeklarowane w specjalnym miejscu (ok, nie da się też obsłużyć inicjalizacji, ale można parsować sekwencje typu: "var a, b, c: integer") 5. Możliwe jest również wykrywanie funkcji rekurencyjnych , a nawet graficzną reprezentację, która podprogram wywołuje kto. Jeśli można zidentyfikować ciało funkcji, można również poszukać, czy są jakieś wzmianki o nazwach innych funkcji. 6. Zbieranie statystyk dotyczących kodu, takich jak liczba linii, instrukcji, podprogramów EDIT: Wyjaśniłem, dlaczego uważam, że niektóre procesy są możliwe. Czytając komentarze i odpowiedzi, zdaję sobie sprawę, że odpowiedź zależy w dużej mierze od języka, który analizuję.


title: CSS vs codebehind, jeśli mam zrobić część stylu w codebehind, czy powinienem zrobić to wszystko tam?

text: Pracuję z ASP.Net i próbuję stylizować ImageButton. Próbowałem to zrobić za pomocą CSS tylko po to, aby odkryć, że z jakiegoś powodu .Net automatycznie zapisuje styl wbudowany, ustawiając szerokość obramowania na 0. Zastępuje to szerokość obramowania z CSS, więc muszę ustawić ją ręcznie w kodzie. Moje pytanie brzmi, czy powinienem wykonać wszystkie stylizacje w kodzie, aby zachować to wszystko w jednym miejscu, czy tylko tam szerokość obramowania, a resztę zrobić w arkuszu stylów? Dla wyjaśnienia mam na myśli całą stylizację _dla tego obiektu_, a nie dla całej witryny.