title: Programy obsługi poleceń i DDD

text: Mam aplikację ASP.NET MVC, która używa usługi kwerendy do pobierania danych i usługi poleceń do wysyłania poleceń. Moje pytanie dotyczy części dowodzenia. Jeśli nadejdzie żądanie, usługa poleceń używa dyspozytora poleceń, który skieruje polecenie do wyznaczonego programu obsługi poleceń. Ten program obsługi poleceń najpierw sprawdza poprawność polecenia i jeśli wszystko jest do przyjęcia, wykonuje polecenie. Konkretny przykład: AddCommentToArticleCommandHandler otrzymuje AddCommentToArticleCommand, który ma ArticleId, CommentText i EmailAddress. Pierwszy; musi nastąpić walidacja, np.: \- sprawdź, czy artykuł istnieje \- sprawdź, czy artykuł nie jest zamknięty \- sprawdź, czy tekst komentarza jest wypełniony i zawiera od 20 do 500 znaków \- sprawdź, czy adres e-mail jest wpisany i ma poprawny format . Zastanawiam się, gdzie umieścić tę walidację? 1/ w samym programie obsługi poleceń. Ale wtedy nie można go ponownie wykorzystać w innych programach obsługi poleceń. 2/ w podmiocie domeny. Ale ponieważ jednostka domeny nie wie o repozytoriach lub usługach, nie może przeprowadzić wymaganej walidacji (nie może sprawdzić, czy artykuł istnieje). Ale z drugiej strony, jeśli encja nie zawiera logiki, staje się prostym kontenerem danych, który nie jest zgodny z zasadami DDD. 3/ funkcja obsługi poleceń używa walidatorów, dzięki czemu walidacja może być ponownie wykorzystana w innych programach obsługi poleceń. 4/ Inne mechanizmy? Szukam łańcucha odpowiedzialności dla tego konkretnego przykładu i jakie obiekty (podmioty, repozytoria, ...) odgrywają w nim rolę. Czy masz pomysły, jak mógłbyś to zaimplementować, zaczynając od obsługi poleceń do repozytoriów?


title: Czy 81-cyfrowy generator liczb może prowadzić do naruszenia praw autorskich?

text: Chcę napisać program, który będzie generował poprawne łamigłówki sudoku. Zasadniczo łamigłówka sudoku to tylko 81-cyfrowa liczba. (Puści to zera.) Następnie chciałbym użyć tych łamigłówek w aplikacji na Androida. Czy istnieje ryzyko korzystania z losowo generowanych łamigłówek w aplikacji? Jeśli inna aplikacja zawiera tę samą zagadkę, czy w jakiś sposób naruszam? Wszystkie dane komputerowe są liczbami, więc teoretycznie generator liczb losowych może w pewnym momencie natknąć się na dzieło chronione prawem autorskim.


title: Czy muszę licencjonować swój kod jako GPLv2, jeśli tylko odczytuję/zapisuję do bazy danych i potoku?

text: Piszę API dla systemu monitorowania sieci typu open source, który jest licencjonowany na licencji GPLv2. Zamierzam również otworzyć ten interfejs API, ale chciałbym go licencjonować na licencji BSD. * Nie używam ponownie ani nie linkuję do żadnego kodu w tym systemie i nie używam żadnych plików nagłówkowych. * Nie będę redystrybuować żadnej części kodu monitorowania sieci. * Część mojej aplikacji zainstaluje się w folderach instalacyjnych monitorowania sieci, ale nie zastąpi, nie usunie ani nie zmodyfikuje żadnego z jej plików. Moje połączenie z systemem odbywa się przez: * istniejące bazy danych MySQL należące do usługi, moje API odczytuje i zapisuje do tych baz danych bezpośrednio. Obawiam się tutaj, że chociaż nie kopiuję ich instrukcji SQL, istnieją pewne złożone operacje. Odkryłem, że w kilku przypadkach dotarłem do instrukcji SQL lub sekwencji zadań, które nie różnią się zbytnio od ich, trudno tego nie robić. * Rozmawiam z potoku, aby wydawać różne polecenia i przesyłać dane bezpośrednio do silnika sprawdzającego. Ten potok jest udokumentowany przez autora jako oficjalny mechanizm komunikacji z silnikiem sprawdzającym. Potok poleceń używa jednoliniowych ciągów do wydawania poleceń, potok nie zwraca żadnych danych, jest "uruchom i zapomnij". * W systemie jest wiele skryptów HTTP CGI, z których mogę pobierać informacje o statusie. Mogę ich użyć w przyszłym wydaniu. Czy to jest uważane za „długość ramienia”, abym mógł licencjonować swój kod na innej licencji? tj. > http://www.gnu.org/licenses/gpl-faq.html#MereAggregation > > Jednak w wielu przypadkach możesz dystrybuować oprogramowanie objęte licencją GPL > razem z własnym systemem. Aby zrobić to poprawnie, musisz upewnić się, że wolne i niewolne programy komunikują się na odległość, że nie są połączone w sposób, który czyniłby je efektywnie jednym programem. Czy odczytywanie i zapisywanie wierszy w bazie danych byłoby uważane za „wymianę złożonych wewnętrznych struktur danych”? > http://www.gnu.org/licenses/gpl-faq.html#MereAggregation > > W przeciwieństwie do tego, potoki, gniazda i argumenty wiersza poleceń są mechanizmami > komunikacyjnymi zwykle używanymi między dwoma oddzielnymi programami. Więc kiedy są > używane do komunikacji, moduły są zwykle oddzielnymi programami. Ale jeśli > semantyka komunikacji jest wystarczająco intymna, **wymienia się złożonymi > wewnętrznymi strukturami danych** , to również może być podstawą do rozważenia tych dwóch > części jako połączonych w większy program.


title: Ile ciągów jest tworzonych w pamięci podczas łączenia ciągów w Javie?

text: Zapytano mnie o ciągi niezmienne w Javie. Miałem za zadanie napisać funkcję, która połączy liczbę „a” z łańcuchem. Co napisałem: public String foo(int n) { String s = ""; for (int i = 0; i < n; i++) { s = s + "a" } return s; } Zapytano mnie wtedy, ile ciągów znaków wygeneruje ten program, zakładając, że odśmiecanie się nie dzieje. Moje myśli dla n=3 były 1. "" 2. "a" 3. "a" 4. "aa" 5. "a" 6. "aaa" 7. "a" Zasadniczo w każdej iteracji tworzone są 2 ciągi pętla. Jednak odpowiedź brzmiała n2. Jakie ciągi zostaną utworzone w pamięci przez tę funkcję i dlaczego tak jest?


title: Jak skontaktować się z organizacją open-source (np. Apache) w sprawie nowego projektu?

text: Stworzyłem oprogramowanie w mojej firmie i zgodziliśmy się, że przyszłością pracy jest udostępnienie go w domenie publicznej. Czy istnieje oficjalna procedura kontaktowa, aby skontaktować się z Apache Software Foundation, apache.org, aby zaproponować nowy projekt? Patrząc na apache.org nie mogłem znaleźć kontaktu e-mail ani formularza zapytania, więc uciekłem się do przeszukiwania list osób zaangażowanych w projekty Apache i przypadkiem niektórzy z nich mają blogi, które mogą mieć możliwość kontaktu. Wydaje mi się, że to trochę przypadkowy sposób na złożenie ważnej propozycji dotyczącej nowego projektu. Rozważam Apache jako organizację Open Source Software (OSS), ponieważ * projekt opiera się na istniejących bibliotekach Apache i dlatego jest praktyczną demonstracją problemu biznesowego z zastosowaniem tych bibliotek, istnienie na tej samej platformie open source jest korzystne dla obu stron - na przykład aktualizacje bibliotek mogą być łatwiejsze, projekt może być łatwiejszy do znalezienia jako powiązany projekt * Licencja na oprogramowanie Apache wydaje się być najbardziej odpowiednią licencją do użycia, biorąc pod uwagę, że biblioteki, z których korzysta projekt, używają tego samego i że ASL wydaje się być bardziej elastyczny i pragmatyczny niż GPL i prawdopodobnie przyciąga więcej programistów, w tym tych z motywacją komercyjną * Oparty na Javie: projekt jest oparty na Javie, a Apache jest dużym, być może nawet największym, niezależnym non-profit zwolennikiem Javy. Rozważyłbym też inne platformy, a jeśli tak, chciałbym wiedzieć, jak się z nimi skontaktować. **Czytanie w tle** Badałem, jak Open Source, do tej pory kilka godnych uwagi referencji: (ale jak dotąd nie widziałem, jak skontaktować się z organizacją OSS, gdy jesteś już prawie gotowy do publikacji) * http://oreilly.com /catalog/9780596517960/toc.html?CMP=ILC-search_spot1&ATT=intel-property-book \- książka opisuje wszystkie główne licencje OSS i historie branżowe * http://produducingoss.com/ \- porady ogólne * http:// stackoverflow.com/questions/3813613/looking-for-case-studies-of-managing-open-sourcing-code-from-a-company \- mój post o tym, jak inni to zrobili * http://stackoverflow.com/questions /1914104/how-to-license-code-source-but-keep-control-of-it/1914145#1914145 \- Mam zaakceptowaną odpowiedź tutaj


title: Programowanie przez dyktando?

text: tj. wypowiadasz kod, a ktoś inny w pokoju wpisuje go. Czy ktoś tego próbował? Oczywiście osoba biorąca dyktando również musiałaby być koderem, więc nie musiałeś wszystkiego wyjaśniać i wchodzić w żmudne szczegóły (nie „otwarty nawias, nowa linia…”, ale raczej „utwórz nową klasę o nazwie myParser wymaga to trzech argumentów, pierwszy to...'). Pomyślałem o tym, ponieważ czasami zbyt łatwo rozpraszam się przy komputerze. Otoczony przyciskami, natychmiastowa satysfakcja w zasięgu kliknięcia, świat na wyciągnięcie ręki. Aby coś zrobić, chcę uciec, napisz swój kod na papierze. Ale to oznaczałoby utratę dostępu do niezbędnych zasobów i konieczność późniejszego żmudnego wpisywania. Rozwiązanie? Dyktować. Plusy: * nie ma szans na sprawdzenie reddita, stackexchange, gmaila itp. * kod, gdy chodzisz po pokoju, kładziesz się, grasz w bilard, cokolwiek * trenujesz swój mózg, aby myśleć bardziej abstrakcyjnie (musisz wizualizować rzeczy, jeśli nie możesz po prostu zobaczyć na ekranie) * pomiń żmudne szczegóły (zamykanie nawiasów itp.) * maszynistka może przyjrzeć się bardziej doświadczonemu programiście i nauczyć się, jak pracuje * maszynistka może udzielić pomocy/sugestii * zewnętrzna presja ze strony maszynistki oczekująca instrukcji, zachęcająca do skupienia się Wady * może być zbyt trudne * może nie działać lepiej * raczej nieefektywne korzystanie z pomocy programisty * trzeba znaleźć / zapłacić komuś, aby to zrobił


title: Proste wyjaśnienie gniazd Unix

text: Mogę szukać i zajrzałem już do wpisu w Wikipedii oraz w kilku innych miejscach, ale mimo że mam pewne doświadczenie w programowaniu, tak naprawdę nie rozumiem tego pojęcia. Czy możesz traktować mnie jak 10-latka i dać mi jasne wyjaśnienie na temat komunikacji z gniazdem?


title: Procent czy piksel dla układów?

text: * Czego użyjesz do układu strony internetowej? Procent czy piksele? * Kiedy należy używać jednego nad drugim?


title: heurystyka do przeszukiwania nieidealnie posortowanych danych

text: Biorąc pod uwagę posortowane dane, rozwiązanie wyszukiwania jest oczywiste. Biorąc pod uwagę nieposortowane dane, rozsądnymi opcjami są sortowanie, a następnie wyszukiwanie lub po prostu wyszukiwanie liniowe. To pytanie dotyczy tego, co zrobić, jeśli dane są _nieco_ posortowane, ale **ale nie można ich przeorganizować** (operacje zapisu wymagają wymazywania sektorów, a sektory nie mieszczą się w pamięci RAM). szczegóły: Rekordy danych są rejestrowane **sekwencyjnie ze znacznikiem czasu**. Jednak zegar sygnatury czasowej od czasu do **czas jest resetowany do Epoki** na chwilę przed synchronizacją lub po prostu cofany ze względu na czas letni itp. Wynikiem wyszukiwania powinien być zapis dziennika ze sygnaturą czasową najbliższą podanemu czasowi. Podczas wykonywania binarnego wyszukiwania rekordu o określonym znaczniku czasowym można wylądować na skrawku nieciągłych danych dziennika i obrócić się w niewłaściwym kierunku. Czy poza brutalną metodą liniową istnieje heurystyka, z której możemy skorzystać? np. Wyszukiwanie Simplex odporne na lokalne minima? **update:** Możemy założyć, że około 95% rekordów jest w posortowanej kolejności. około 5% (rozrzucone po kłodzie) to brudna czkawka. Początek czkawki _można_ zidentyfikować, gdy znacznik czasu cofa się w czasie i **i ma wcześniejszy stempel niż początek dziennika**


title: Standard nazwy metody testowania jednostkowego dla metod przeciążonych

text: Przeczytałem kilka postów, które omawiają standard kodowania dotyczący nazywania metod testów jednostkowych w celu poprawy czytelności. Podążam za tym `NameOfMethod_ExpectedBehavior_WhenSomeScenario`, ale teraz nie wiem, jak mam to kontynuować w obliczu przeciążonych metod. Może istnieć kilka metod o tej samej nazwie, ale różnych podpisach. Czy ktoś może mi zasugerować, jak włączyć przeciążenie w nazwach metod? Na przykład: Java Code class ClassUnderTest{ public int method1(){ } public int method1(int arg){ } } Teraz muszę przetestować obie metody indywidualnie z mojego przypadku testowego. Myślę o jakimś standardzie, który ma zastosowanie w tym scenariuszu.


title: Przekazywanie parametrów do procedury składowanej do użycia w obiekcie czytnika danych

text: using (SqlConnection con = db.con(user.Authority)) { string command = "[Dashboard_GetUserPTOAndIncidentTotals]"; using (SqlCommand cmd = new SqlCommand(polecenie, con)) { cmd.Parameters.AddWithValue("@UserName", cboIncidentsActiveDirectory.Text.Trim()); // Wyświetl informacje o wybranych użytkownikach con.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.HasRows) { while (dr.Read()) { nudPTO.Value = Convert.ToDecimal(dr["PTO_REMAINING"]); nudIncidents.Value = Convert.ToDecimal(dr["TOTAL_INCIDENTS"]); } } else { nudPTO.Value = 0; nudIncidents.Value = 0; } dr.Zamknij(); } } } Piszę aplikację biznesową, która pomaga śledzić pozostały czas PTO i incydenty dla naszych pracowników, jednak mam problem z parametrami mojego kodu. Początkowo zacząłem od wbudowanej instrukcji SQL w miejsce [Dashboard_GetUserPTOAndIncidentTotals], która działała doskonale, jednak po skończeniu kodu bazowego zostałem poproszony o migrację wszystkich instrukcji aplikacji do procedur składowanych po stronie serwera. Po tym przejściu napotkałem wiele problemów i jest to jedyny, którego nie mogę rozwiązać. Za każdym razem, gdy uruchamiam ten kod, wyświetla komunikat o błędzie „Procedura lub funkcja „Dashboard_GetUserPTOAndIncidentTotals” oczekuje parametru „@UserName”, którego nie podano”. Ten błąd występuje w tym wierszu: using (SqlDataReader dr = cmd.ExecuteReader()) Jestem zdezorientowany, ponieważ według mojej najlepszej wiedzy podaję tutaj żądany parametr: cmd.Parameters.AddWithValue("@UserName", cboIncidentsActiveDirectory .Tekst.Przytnij()); Czy po prostu konfiguruję to niepoprawnie, czy też trzeba zrobić coś dodatkowego, aby poprawnie utworzyć wystąpienie obiektu datareader za pomocą mojej procedury składowanej?


title: Zmieniasz certyfikat Sun SCJP na certyfikat Oracle?

text: Posiadam Sun SCJP sprzed mniej więcej dziesięciu lat. Początkowo miała to być certyfikacja tymczasowa (ważna kilka lat, nie pamiętam dokładnie: pamiętam tylko, że miałam datę ważności na mojej karcie certyfikacyjnej), potem Sun zmienił zdanie i zdecydował, że SCJP jest dożywotni ważny. Inny programista SCJP powiedział mi, że mogę zmienić certyfikat, więc skontaktowałem się z Sun (była procedura, której też nie pamiętam) i otrzymałem mój nowy SCJP (bez daty ważności). Teraz, gdy Oracle kupiło Sun, zastanawiałem się: czy mogę w jakiś sposób zdobyć papier/kartę/plakietkę Oracle/Sun SCJP, wiedząc, że posiadam SCJP? Jeśli ktoś tutaj trzymający stary SCJP zmienił go na Oracle/Sun (jeśli coś takiego istnieje), chciałbym usłyszeć, co można zrobić. (btw jestem tu nowy, więc nie mogę utworzyć nowego tagu: może ktoś z większą liczbą przedstawicieli mógłby utworzyć tag Sun?)


title: Wstydzisz się przyznać do używania jQuery?

text: Coś, co zauważyłem w ciągu ostatnich kilku tygodni, to to, jak wiele dużych komercyjnych witryn korzysta z jQuery w połączeniu z wieloma wtyczkami - ale nie przyznaj się do tego. Zmienią nazwę głównej biblioteki na coś niejasnego, a także wtyczek. Wiele z nich usunie nawet komentarze zawierające informacje o licencji MIT/GPL. (właśnie zauważyłem dzisiaj, że odeon.co.uk zrobiło dokładnie to) Dlaczego to robią? czy są zawstydzeni tym, że korzystają z darmowej biblioteki o otwartym kodzie źródłowym?


Pytanie: **Dlaczego RMI może być rozsądną opcją komunikacji między klientem a serwerem w aplikacji internetowej?** _Więc dlaczego RMI miałby być używany do komunikacji między klientem a serwerem w aplikacjach internetowych?_


title: Czy potrzebujemy jeszcze więcej frameworków internetowych w C# teraz, gdy async await jest tutaj?

text: Tworzenie niekończących się frameworków dla aplikacji internetowych, stron internetowych i usług internetowych to zawsze świetna zabawa. To jeden z najbogatszych obszarów, w którym masz 100 różnych sposobów na osiągnięcie prawie tego samego. Nawet przy całej tej obfitości ostatnio udało mi się znaleźć brak frameworka webowego w C#. Czuję, że nowe API async-await w C# 5.0 naprawdę zmieni sposób pisania kodu po stronie serwera. Osiągnięcie stanu zen pełnej asynchroniczności zawsze było świętym Graalem programistów po stronie serwera. Ale zawsze było to zbyt skomplikowane i zajmowało za dużo kodu. Niestety, 90% frameworków internetowych na świecie nadal blokuje. Dlatego myślę, że node.js stał się tak popularny – oferuje tanią asynchroniczność. Ale teraz, dzięki async-await, C# skradnie show i stanie się nowym "asynchronicznym cudownym dzieckiem". Żegnaj JS (po stronie serwera, nie wkurzaj się). Przynajmniej tak jest w moim przypadku, C# po prostu stał się seksowny. Czy ta nowa era wymaga nowej generacji frameworków internetowych? Brakuje mi ramy sieci web lub więcej ekosystemu sieci web w C#, który przypomina `node.js` Coś takiego jak node.cs. To podstawowe zasady: * Obietnica pełnej asynchroniczności. Każdy pakiet w ekosystemie **musi** oferować interfejs API asynchronicznego oczekiwania. Nie wyobrażam sobie już, żebym mógł uzyskiwać dostęp do DB i blokować, kiedy to robię. Ponadto sam rdzeń powinien być zbudowany wokół interfejsów asynchronicznych - z przepływami wyglądającymi tak. * Oparte na pakietach i modułowe. C# jest znany z posiadania nadętych monolitycznych struktur internetowych. Chcę mieszać i łączyć. Chcę mieć wybór między 10 silnikami widoku (napisanymi przez 10 różnych osób) i wyborem między 10 silnikami routingu. Te rzeczy nie powinny być częścią rdzenia. * Szczupły i zwięzły kod. Przepraszam, ale frameworki w C# nigdy nie wydają się zwinne. Wszystko jest zawsze przesadzone. Warstwy i warstwy abstrakcji, dopóki nie będziesz miał pojęcia, co się naprawdę dzieje. Nie zrozum mnie źle, te ogromne frameworki są dobre do wielu rzeczy, ale nie do wszystkiego. * Zmniejszenie blokady dostawcy. Z przyjemnością zaoferuję hosting alternatyw dla IIS. Może pochodzić z własnym opcjonalnym asynchronicznym serwerem internetowym, takim jak węzeł. Chociaż usługi IIS również powinny być obsługiwane. Obsługa mono w systemie Linux jest ważna, z integracją asynchroniczną z nginx i przyjaciółmi. Nie udało mi się znaleźć ekosystemu o tych cechach. Gdyby istniał, przyciągnąłby programistów do wielkich korzyści ukrytych we wzorcu async-await .., który jest unikalny dla C# (przynajmniej w produkcji). **Edytuj:** Przepraszam, moje pytanie nie było jasne. Pytam: 1. Czy znasz już istniejące rozwiązanie, które odpowiada moim wymaganiom? 2. Jeśli nie, czy uważasz, że warto o tym napisać? Czy uważasz to za przydatne? Czy użyłbyś go jako alternatywy dla obecnie dostępnych frameworków internetowych w C#? 3. Jakie są wasze krytyki i pochwały dla propozycji wymienionych powyżej, gdybym miał stworzyć ramy, które odnoszą się do tych propozycji.


title: Problemy z licencją publikowania motywu WordPress, zbudowanego z motywem Roots, w Themeforest

text: Chcę stworzyć motyw WordPress za pomocą struktury motywów Roots, a następnie sprzedać go na themeforest.net. Licencja motywu Roots pozwala mi sprzedawać motyw zgodnie z dyskusją jego założyciela z jakimś facetem w tym poście na grupie google. Mówi, że produkt powinien mieć licencję zgodną z MIT. Pytanie brzmi: - Jeśli sprzedam go na themeforest, to czy będzie zgodny z licencją MIT? Uważam, że Themeforest ma swoją własną „zwykłą licencję”. Czy nabywca motywu będzie miał prawo zmodyfikować kod źródłowy mojego motywu i sprzedać go ponownie w themeforest? Uwaga: nie mam dużej wiedzy na temat licencji, dlatego tu jestem. Proszę nie proś mnie o przeczytanie licencji, ponieważ nie rozumiem ich skomplikowanego języka angielskiego. „W TYM, ALE NIE OGRANICZONE”, „TAK JAK JEST”, „CZYNNY CZY INACZEJ” itp. Nie rozumiem tego wyraźnie.


title: Najlepsze praktyki tworzenia Django

text: Spędziłem trochę czasu studiując Django i zrobiłem kilka aplikacji. Ale tak naprawdę nie wiem, jakie jest najlepsze podejście podczas tworzenia aplikacji, mam na myśli kilka opcji: Stwórz wszystkie modele, potem wszystkie adresy URL, widoki, a następnie stwórz wszystkie szablony. Inni zalecają stosowanie zwinnego podejścia, branie przykładu użycia i pójście na całość, aż będzie całkowicie funkcjonalne, i oczywiście mogą istnieć inne możliwe zalecenia. Osobiście bardzo pociąga mnie podejście zwinne, ale tak naprawdę nie wiem, ponieważ na przykład każdy model, który dodam do mojej bazy danych, oznaczałby utworzenie nowego. Podsumowując, jakie jest najlepsze podejście, jakie należy przyjąć podczas tworzenia i aplikacji w Django, biorąc pod uwagę wszystkie konsekwencje, jakie to niesie?


title: Czy istnieje język programowania bazy danych z enkapsulacją, aby zapobiec wstrzyknięciom?

text: Jedną z rzeczy, które denerwują mnie w SQL jest to, że nie potrafi on myśleć w kategoriach obiektów, a brak enkapsulacji sprawia, że ciągle muszę uciekać od poleceń, aby zapobiec wstrzykiwaniu. Potrzebuję języka bazy danych, który może być polimorficzny i bezpieczny. Szukałem w Internecie nieproceduralnych języków programowania baz danych i jak dotąd moje wyszukiwanie w Google zakończyło się niepowodzeniem. Wiem, że w językach takich jak php istnieją sposoby na zapobieganie wstrzyknięciom poprzez dobre enkapsulację PHP, ale nie wszystkie sytuacje związane z programowaniem baz danych wymagają osadzenia języka bazy danych w innym języku. W sytuacjach, w których jest to tylko programowanie baz danych, czy istnieje język programowania baz danych, który sam w sobie jest zorientowany obiektowo? Jeśli nie, czy pracują nad jednym?


title: Apache License 2.0 — dla początkujących

text: Buduję aplikację zbliżonego źródła z niektórymi bibliotekami, które używają Apache License 2.0. Punkt 4 punkt a) licencji stanowił, że: (a) Musisz przekazać innym odbiorcom Dzieła lub Dzieł pochodnych kopię niniejszej Licencji; Czy to oznacza, że moja aplikacja jest teraz na licencji Apache License 2.0, ponieważ dołączyłem tę licencję do mojej aplikacji? Gdzie powinienem dołączyć tę licencję? W moim kodzie źródłowym czy w GUI? Dziękuję.


title: Jak zaangażować się w projekt open source? (programista Android/java)

text: Moje pytanie może brzmieć głupio i nie pasujące do tej strony, ale nie mam lepszego miejsca, aby zadać pytanie tutaj, więc proszę o wyrozumiałość. Jestem studentem, który uwielbia bawić się Androidem. Mniej więcej w zeszłym roku zmieniłem mój główny system operacyjny na Ubuntu i uważam, że jest niesamowity. Zdecydowałem więc, że chcę pomóc w rozwoju projektu open-source. Jednak ubuntu używa C++ i QML, a nie javy, więc nie mogę dla nich kodować. Czy wiesz, gdzie mogę znaleźć dobry lub powszechnie używany projekt open source na Androida? Wiem, że mogę znaleźć projekty w code.google, ale jest zbyt wiele projektów. Nie wiem, który jest dla mnie odpowiedni/dobry. Każda pomoc/sugestia jest mile widziana (w końcu nadal jestem studentem). A jeśli zastanawiasz się „dlaczego nie uczę się c++?”, myślę, że nie mam teraz wystarczająco dużo czasu na naukę, ponieważ mam również pracę w niepełnym wymiarze godzin jako programista android. Dlatego preferuję androida, a przynajmniej javę. Dziękuję za Twój czas


title: Jak uczyć delegatów

text: Jak traktujesz nauczanie Delegatów nowych programistów? Jakieś przykłady wykraczające poza koncepcję programowania, których użyłbyś do ich nauczania? Na przykład z dziedziczeniem uczysz go w następujący sposób. Kot to zwierzę. Pies też jest zwierzęciem. Możemy więc umieścić wspólne cechy, które wszystkie zwierzęta mają w grupie Animal (czytane jako klasa), a następnie umieścić specyficzne cechy, które mają koty w grupie Cat (czytane jako klasa). W podobny sposób (lub w inny sposób), jak byś nauczał Delegatów?


title: Jakie wysiłki podejmujesz, aby pozostać na krawędzi doskonałej produktywności?

text: Może to tylko ja, ale czasami wydaje mi się, że poświęcam zbyt dużo czasu na refaktoryzację i pracę z abstrakcjami. Mój projekt zwykle zaczyna się od studiowania jakiejś nowej technologii, takiej jak MVP, .NET, MVC, WPF itd. Bardzo rzadko staję na czymś, co już znałem. W mojej głowie zawsze nowe rzeczy wygrywają z konkurencją. Potem próbuję zrobić dobrą infrastrukturę, zajmując się abstrakcjami, interfejsami i tak dalej. Jednocześnie próbuję kilku małych konkretnych rzeczy, aby upewnić się, że wiem, jak zrobi się ten konkretny kawałek i niestety te badania też zabierają dużo czasu. A potem... zaczynam refaktoryzować moje abstrakcje, bo już nie odpowiadają moim rzeczywistym potrzebom. Wygląda na to, że to zły nawyk lub jakaś ukryta próba ucieczki przed prawdziwym wyzwaniem. Ukryta część góry lodowej staje się zbyt duża w porównaniu z tym, czego się spodziewałem. Wygląda na to, że jedna z moich części lubi „bawić się w programowanie”, co jest nie do zaakceptowania przez moją drugą część: daj wynik! Nie wspomniałem o wymaganiach, ponieważ w moim obecnym projekcie wiem dokładnie, co program ma robić, nawet w szczegółach. Wszystko to i tak daje jakiś efekt, ale za wolno. Zdecydowanie wiem, że muszę zwiększyć swoją produktywność. Mój umysł (kiedy jest wystarczająco czysty, heh) tworzy pewne kierunki doskonalenia: 1. Treningi koncentracji 2. Zostań managerem dla kogoś innego (teraz pracuję sam) 3. Przestań programować i zacznij coś innego 4. Po prostu pracuj więcej 5. Przenieś się do dużego miasta i dołącz do profesjonalnego zespołu 6. Przeczytaj kilka książek z powiązanymi pomysłami 7. Zacznij zadawać takie pytania :) 8. ... Jaką linię powinienem obrać na początku, a może są jakieś inne rady? Chcę po prostu wiedzieć, jakie podejmujesz (lub w moim kontekście) próby, aby pozostać na granicy doskonałej produktywności, a także jak rozpoznać, że nadszedł czas, aby zrobić coś innego, tylko na chwilę. I przepraszam za takie niekonkretne pytanie, ale naprawdę myślę, że coś omijam. Jestem nowy tak przy okazji. Dziękuję.


title: Korzystanie z aplikacji na Androida z licencją Apache 2.0 K9 Email w komercyjnej aplikacji e-mail

text: Chcę poprawić użyteczność klienta K9 Email, stworzyć nowy interfejs użytkownika i zaimplementować dodatkowe funkcjonalności. To oprogramowanie jest licencjonowane w ramach Apache 2.0. http://code.google.com/p/k9mail/ https://github.com/obra/k-9 Czy mogę użyć całego kodu źródłowego tej aplikacji z pewnymi modyfikacjami niektórych klas i uczynić tę aplikację komercyjną? Jeden? Potrzebuję porady prawnej. Jeśli mi się to uda, chciałbym podzielić się przychodami z oryginalnym twórcą tej aplikacji. Proszę o kilka wskazówek na ten temat. Przeczytałem o licencji Apache 2.0. Nie mam jasności co do tej linii.. „zapewnij wyraźne przypisanie do The Apache Software Foundation dla wszelkich dystrybucji, które zawierają oprogramowanie Apache” Od Apache FAQ http://www.apache.org/foundation/licence-FAQ.html Oraz klauzula 4 D z tego linku http://www.apache.org/licenses/LICENSE-2.0 Proszę podać swoje dane wejściowe na ten temat..


title: Jak wywoływać funkcje anonimowe w testowaniu?

text: Poniżej znajduje się kod Java. Muszę omówić poniższą funkcję. Przeszukałem wiele stron internetowych, ale wciąż nie mam pomysłów. Czy istnieją metody na pokrycie anonimowych klas zastępujących? public static void addEnterListener(Tekst tekstowy, końcowy String MethodName, końcowy obiekt wywołany) { text.addKeyListener(new KeyListener() { @Override public void keyReleased(KeyEvent arg0) { if (arg0.keyCode == '\r') { spróbuj { Method method = callee.getClass().getMethod(methodName, KeyEvent.class); method.invoke(callee, arg0); } catch (wyjątek e) {e.printStackTrace();} } } @Override public void keyPressed( KeyEvent arg0) { } }); }


title: Przygotowane alternatywy dla instrukcji dla tego programu pośrednika?

text: Mam program, który używa przygotowanej instrukcji do łączenia się i pisania do bazy danych, która działa ładnie, a teraz muszę utworzyć program pośredniczący, który będzie wstawiał między tym programem a bazą danych. Ten program pośrednika będzie faktycznie zapisywał dane do wielu baz danych i obsługiwał wszelkie błędy oraz problemy z połączeniem. Chciałabym porady, jak powielić przygotowane stwierdzenia tak, aby wywierać minimalny wpływ na istniejący program, jednak nie wiem od czego zacząć. Myślałem o stworzeniu "klasy instrukcji SQL", która naśladuje przygotowaną instrukcję, ale wydaje się to głupie. Istniejący program jest w Javie, chociaż i tak będzie połączony z siecią, więc byłbym otwarty na napisanie go w prawie wszystkim, co miałoby sens. Bazy danych to obecnie MySQL, chociaż chciałbym być otwarty na zmianę typu bazy danych w przyszłości. Moje główne pytanie brzmi, jak powinien wyglądać interfejs tego programu i czy robienie tego ma sens? Rozproszona baza danych byłaby idealnym rozwiązaniem, ale wydaje się zbyt skomplikowana i droga jak na moje potrzeby. Mam nadzieję, że za pośrednictwem tego pośrednika uda mi się odtworzyć główną funkcjonalność rozproszonej bazy danych. Nie jestem zbyt obeznany z serwerami opartymi na sql, które dystrybuują dane (lub ogólnie bazę danych...) - być może toczę pod górę bitwę, próbując rozwiązać ją za pomocą programowania, ale chciałbym przynajmniej spróbować.


title: Licencje pozwalające na dystrybucję aplikacji bez źródła

text: Załóżmy, że planuję sprzedaż aplikacji _.NET_ w mojej witrynie. Jeśli potrzebuję użyć biblioteki `A` (odniesienie do skompilowanego zestawu, a nie kodu źródłowego)... **Pod jaką licencją może być `A`, więc mogę to zrobić?**


title: Zrozumienie testów jednostkowych/TDD dla formularzy internetowych ASP.NET

text: Jestem głównym programistą w małej firmie programistycznej (obecnie 4 programistów, w tym ja), tworzymy dedykowane aplikacje ASP.NET WebForms dla firm. Dołączyłem tam w 2010 roku tuż po studiach, więc była to moja pierwsza prawdziwa praca. Po odejściu starszych programistów awansowałem na lidera i zatrudniliśmy dla mnie grupę młodszych programistów jako mentorów. Moim problemem jest to, że obecnie mamy ogromną ilość pracy z opóźnionych projektów (opóźnienie około 2-3 lat), więc nasz rozwój jest bardzo pospieszny, a testowanie jest pozostawione na ostatnią chwilę, a nasze wydania często wychodzą z oczywistymi błędami, które powinien był odebrać. To naprawdę obniża morale i bardzo stresuje wszystkich, łącznie ze mną. Nie mamy w ogóle ram testowych ani prawie żadnej organizacji do tego, co mamy robić. Nigdy nie stosujemy testów jednostkowych, a wszystkie testy są ręczne i bardzo pracochłonne. Tego rodzaju metodologia to wszystko, z czym miałem do czynienia odkąd zostałem programistą, ale szybko uczę się, że software house nie tak powinien działać. Próbowałem zapoznać się z testowaniem TDD i jednostkowym, ale to wszystko jest dla mnie bardzo obce i trudno mi sobie wyobrazić, jak moglibyśmy je wykorzystać w naszych aplikacjach. Większość logiki wewnątrz naszych aplikacji znajduje się w kodzie każdej strony (coś, od czego teraz naciskam, aby uciec), a z tego, co przeczytałem, to znacznie utrudnia testowanie. Czy ktoś ma jakąś radę lub zna jakieś dobre tutoriale, które pomogą nam zacząć od podstaw TDD? Mamy wiele innych problemów, w tym nieskuteczne korzystanie z SVN, posiadanie bardzo podstawowego HelpDesku dla naszych błędów i dawanie naszemu zespołowi dość niejasnych specyfikacji. Znowu są to rzeczy, których sam chcę się nauczyć, ale muszę poświęcić dużo czasu na uczenie się tego wszystkiego. Więc jeśli ktoś ma jakieś rady na ten temat, byłbym wdzięczny, ale nasze testy są teraz najważniejszą rzeczą.


title: Jak przejść na C++11?

text: Od jakiegoś czasu programuję w C++, ale głównie skupiam się na niskopoziomowych funkcjach C++. Mam tu na myśli głównie pracę ze wskaźnikami i surowymi tablicami. Myślę, że to zachowanie jest znane jako używanie C++ jako C z klasami. Mimo to dopiero niedawno po raz pierwszy spróbowałem C. Byłem mile zaskoczony, jak języki takie jak C# i Java ukrywają te szczegóły w wygodnych standardowych klasach bibliotecznych, takich jak Słowniki i Listy. Zdaję sobie sprawę, że standardowa biblioteka C ++ ma wiele kontenerów, takich jak wektory, mapy i ciągi, a C ++ 11 dodaje tylko do tego, mając std:: array i ranged loops. Jak najlepiej nauczyć się korzystać z tych nowoczesnych funkcji językowych i które są odpowiednie w jakich momentach? Czy to prawda, że inżynieria oprogramowania w C++ w dzisiejszych czasach w większości nie wymaga ręcznego zarządzania pamięcią? Wreszcie, którego kompilatora należy użyć, aby w pełni wykorzystać nowy standard? Visual Studio ma doskonałe narzędzia do debugowania, ale nawet VS2012 wydaje się mieć straszną obsługę C++11.


title: Jak uwzględnić warunki w diagramach sekwencji UML?

text: Lubię rysować diagram sekwencji UML, aby wyświetlić sekwencję działań i interakcji różnych części mojego systemu (myślę, że nazwali aktorów). Muszę jednak zawrzeć tutaj stwierdzenia `if then else`. Czy robię coś złego? Czy mogę używać instrukcji warunkowych if w moim diagramie sekwencji UML? Jak?


title: Jakie są powody tworzenia podklasy UIView?

text: Zauważyłem, że w moim starszym projekcie istnieje wiele podklas UIView. Przeważnie jedynym powodem takiej podklasy jest podzielenie większego widoku na niestandardowe widoki podrzędne i zapewnienie układu dla jego widoków podrzędnych oraz delegowanie akcji UIButtons za pośrednictwem protokołu delegata widoku. Zastanawiam się więc, czy to poprawny projekt?


title: Stosunek branży do tego, co nazywa się „studiami licencjackimi”

text: Jestem zapisana na studia licencjackie magisterskie. To będzie mój pierwszy stopień - kurs 4 letni - ale będzie się nazywał magisterski. Nie uzyskam dyplomu średnio zaawansowanego. Pochodzi z jednego z najbardziej prestiżowych instytutów w Indiach, które znalazło się w Top 20 w Azji pod względem technologii i nauki według Asia Week. Jak traktuje to branża? Na równi z innymi kandydatami na MS czy na równi z innymi kandydatami na studia licencjackie?


title: Czym są rejestry procesora?

text: To pytanie dręczy mnie od jakiegoś czasu i dzisiaj pomyślałem, że go wygoogluję. Czytałem o tym kilka rzeczy i wydawało mi się to bardzo podobne do tego, co zawsze nazywałem pamięcią podręczną procesora. Czy jest między nimi różnica, czy mam rację, gdy myślę, że są takie same? Czy rejestr rzeczywiście musi znajdować się wewnątrz procesora, aby mógł działać? Według Wikipedii rejestr to miejsce w procesorze, w którym można szybko uzyskać dostęp do pamięci i zmodyfikować ją przed odesłaniem do pamięci RAM. Czy źle to zrozumiałem, czy pamięć podręczna i rejestr faktycznie są takie same?


title: Jak pobierać opłaty od klientów za rozwiązanie oparte na AGPL-3?

text: Jeśli mówię o openERP jego i źródle (AGPL-3), to przestudiowałem to, ale nie mogę znaleźć pytania, np. 1: opracowaliśmy system zarządzania szkołą przy użyciu openERP w wersji 7.0, ponieważ zgodnie z moim rozumieniem nie możemy sprzedawać każdemu klientowi, ponieważ wydaje się być darmowy, podobnie jak inne moduły openERP. Czy powinienem obciążać klienta za moje usługi? jakie powinny być kryteria tego? CZY nadal jest szansa, że mogę sprzedać mój nowo opracowany moduł?


title: Czy łapanie ogólnych wyjątków jest naprawdę złe?

text: Zazwyczaj zgadzam się z większością ostrzeżeń dotyczących analizy kodu i staram się ich przestrzegać. Jednak jest mi z tym trudniej: > CA1031: Nie łap ogólnych typów wyjątków, rozumiem uzasadnienie tej reguły. Ale w praktyce, jeśli chcę wykonać tę samą akcję niezależnie od zgłoszonego wyjątku, dlaczego miałbym obsługiwać każdy z nich konkretnie? Co więcej, jeśli obsłużę określone wyjątki, co się stanie, jeśli wywołany przeze mnie kod zmieni się, aby zgłosić nowy wyjątek w przyszłości? Teraz muszę zmienić kod, aby obsłużyć ten nowy wyjątek. Natomiast jeśli po prostu złapałem `wyjątek`, mój kod nie musi się zmieniać. Na przykład, jeśli Foo wywołuje Bar, a Foo musi zatrzymać przetwarzanie bez względu na typ wyjątku zgłoszonego przez Bar, czy jest jakaś korzyść z precyzowania typu wyjątku, który przechwytuję? Może lepszy przykład: public void Foo() { // Trochę logiki tutaj. LogUtility.Log("jakaś wiadomość"); } public static void Log() { try { // Aktualne logowanie tutaj. } catch (wyjątek ex) { // Zjedz to. Błędy rejestrowania nie powinny nas powstrzymywać przed przetwarzaniem. } } Jeśli nie złapiesz tutaj ogólnego wyjątku, musisz przechwycić każdy możliwy typ wyjątku. Patrick ma rację, że `OutOfMemoryException` nie powinien być traktowany w ten sposób. A co, jeśli chcę zignorować każdy wyjątek oprócz `OutOfMemoryException`?


title: Zawartość pliku AUTORS

text: GNU zaleca stworzenie pliku `AUTHORS`, aby wylistować autorów i współtwórców programu. Ale ile „poziomów” autorów i współtwórców powinien zawierać plik? Np. jeśli piszę program `foo`, który aktywnie korzysta z jakiejś biblioteki, czy powinienem dołączyć autorów tej biblioteki do pliku `AUTHORS`? Wydaje się, że odpowiedź brzmi „tak”, ponieważ cały kod `foo` zawiera kod z biblioteki. Ale jeśli tak, to znaczy, że powinienem uwzględnić również autorów wszystkich innych bibliotek, w tym standardowych bibliotek kompilatora, autorów kompilatora i innych narzędzi do tworzenia końcowego kodu wykonywalnego, autorów systemu operacyjnego... Kiedy powinienem przestać?


title: Plusy i minusy architektury RESTful

text: Najczęstsza dyskusja, jaką widziałem, dotycząca zalet i wad REST, ma tendencję do formułowania tej dyskusji w odniesieniu do SOAP. W żadnym z nich nie mam doświadczenia. Obecnie stoję przed decyzją, którą mój brak doświadczenia utrudnia mi ocenę. Zaczynam opracowywać aplikację, która ma kilka komponentów - przede wszystkim aspekt administracyjny, który pozwala właścicielowi administrować kilkoma witrynami - oraz interfejs użytkownika dostępny publicznie, który pozwala użytkownikowi na interakcję z danymi przechowywanymi na hoście. Muszę ocenić konsekwencje pozwolenia drugiej części na hostowanie w dowolnym miejscu i komunikowanie się z pierwszą za pomocą architektury RESTful - lub wymaganie, aby oba komponenty znajdowały się na tym samym hoście. Jakie są kluczowe implikacje rozwoju architektury RESTful, szczególnie w odniesieniu do jej pojemności w następujących obszarach: 1: Bezpieczeństwo 2: Wydajność 3: Złożoność interfejsu EDIT: Patrząc na niektóre odpowiedzi na to pytanie - powinienem wyjaśnić. Nie szukam porównania do SOAP - raczej przeglądu aplikacji REST vs aplikacji, w których wszystkie komponenty znajdują się na jednym hoście. (dzięki za te odpowiedzi!)


title: Co należy zrobić, gdy aktualizacja kompilatora wprowadza błąd w istniejącym projekcie?

text: Mamy pod ręką 4 wbudowane oprogramowanie układowe. Dwa z nich zostały wydane, są w fazie konserwacji. Pozostałe dwie zostaną wydane. Wydany produkt wykorzystuje OKI 411 micro, podczas gdy jeszcze nie wydane produkty są na OKI 431 micro. Do tej pory kompilowaliśmy kod przy użyciu kompilatora OKI CCU8 3.08. Obsługuje zarówno sprzęt 411, jak i 431. Niedawno zaktualizowali kompilator do wersji 3.10 i zaczęliśmy go używać we wszystkich produktach. Nagle odkryliśmy, że 3.10 powoduje nieoczekiwane zachowanie w jednym projekcie opartym na 431. Jest to związane z optymalizacją kompilatora. Tak więc kompilacja wydania wykazywała błąd i zmarnowano całe dwa dni, aby dowiedzieć się, że oprogramowanie układowe działa dobrze, jeśli jest skompilowane z wersją kompilatora 3.08. Zauważ, że inny produkt oparty na 431 nie wykazał żadnego problemu. Dlatego zdecydowaliśmy się porzucić najnowszy kompilator dla wszystkich projektów i użyć poprzedniego. Jakie kroki należy podjąć, gdy wystąpi taka sytuacja? Również podczas aktualizacji kompilatora, co należy zrobić, aby upewnić się, że nie zepsuje on żadnej kompilacji?


title: Prezenterzy widoku modelu i interakcje z użytkownikami obejmujące oddzielne okna dialogowe

text: Mam formularz interfejsu użytkownika napisany przy użyciu modelu-widoku-prezentera, który ma między innymi pole listy zawierające wiele różnych obiektów domeny. Formularz zawiera również przycisk dodawania/aktualizowania, który otwiera okno dialogowe umożliwiające użytkownikowi dodanie/aktualizację obiektu domeny. Formularz domena-obiekt jest ogólny i służy do zbierania podstawowych informacji, takich jak nazwa obiektu. Zasadniczo jest to skromne okno dialogowe, które zbiera informacje i wywołuje zdarzenie z tymi informacjami, gdy formularz zostanie pomyślnie zamknięty, umożliwiając odpowiednie dodanie lub aktualizację obiektu domeny. Aby wyjaśnić nieco więcej, nie jestem pewien w wielu różnych obszarach: * Czy istnieje standardowy model interakcji lub czy istnieją standardowe wzorce interakcji do użycia między interfejsami użytkownika podczas korzystania z MVP? * Czy odpowiedzialność za wyświetlanie wymaganych formularzy lub okien dialogowych powinna leżeć po stronie prezentera, widoku, czy też nie? * Czy fakt, że do zbierania informacji używam skromnego okna dialogowego, narusza zasadę „powiedz, nie pytaj” i sprawia, że sprawy są trudniejsze niż to konieczne? * Czy interfejs odpowiedzi jest specyficzny, a jeśli tak, jakie pytania pomogłyby mi uzyskać dobrą odpowiedź? Inne uwagi: * Wydaje się, że odpowiedzialność za wyświetlanie wymaganych formularzy i okien dialogowych spoczywa w większym stopniu na widoku niż na prezentera, ponieważ inne widoki mogą używać alternatywnych sposobów gromadzenia tych informacji — prezenter musi tylko zostać odpowiednio ostrzeżony. * Bardziej interesują mnie powiązane wzorce i praktyki niż szczegóły techniczne. * W duchu niskiego sprzężenia zazwyczaj używam przekazu przekazu między formularzami i komponentami.


title: Jak być odpowiedzialnym wcześnie adoptującym?

text: Niepokojąco duża liczba nowych technologii/paradygmatów jest przereklamowana (co widać z odpowiedzi na to pytanie). Połącz to z faktem, że bycie wczesnym użytkownikiem jest z natury ryzykowne. To sprawia, że ocena technologii przed przyjęciem ma kluczowe znaczenie. Więc jak dokładnie podchodzą do tego wcześni adoptujący. Myślę o następujących ogólnych kryteriach. 1. W przypadku wczesnej adopcji technologia musi odnosić się do wcześniej nierozwiązanego problemu i/lub 2. W przypadku akceptacji poza wczesną adopcją technologia powinna dotyczyć wydajności 3. Jednym ze wskaźników, że coś jest **niewłaściwe**, jest zbyt duży żargon dotyczący technologii, która jest albo nieistotne, albo nie ma dowodów na poparcie tego. Jaka jest twoja opinia. Aktualizacja: 4\. BTW, największym powodem do **strachu** technologii jest to, że jest ona narzucana przez zarządzanie nieświadome technologii oparte wyłącznie na liczbie buzzwordów.


title: Jak stworzyć mapę obiektów?

text: Mam duży projekt poboczny, który robię od 3 lat. Ma wiele dodatkowych małych narzędzi, które pomagają mi wykonywać zadania. Większość z tych narzędzi jest tak stara, że zapomniałem, co tam mam. Jak stworzyć mapę funkcji, aby łatwo przypominać o tym, co jest możliwe? Czy istnieje dla niego jakiś specjalny zapis diagramu UML? Jak to zrobić? Myślę, że wersja graficzna byłaby lepsza niż plik tekstowy readme.


title: Jak licencjonować moje zamknięte źródła i freeware (darowizny) - używając Creative Commons?

text: Po przeprowadzeniu trochę badań na temat licencjonowania mojego bezpłatnego oprogramowania, dotarłem do tego: Attribution-NonCommercial-NoDerivs 3.0 Unported - http://creativecommons.org/licenses/by-nc-nd/3.0/ * * * jak to uwzględnić w moim oprogramowaniu lub na stronie internetowej ? * * * tutaj: https://creativecommons.org/choose/ Widzę tekst, który powinienem dołączyć: > Ta praca jest objęta licencją Creative Commons Uznanie autorstwa-Użycie niekomercyjne- > NoDerivs 3.0 Unported License. Aby wyświetlić kopię tej licencji, odwiedź > http://creativecommons.org/licenses/by-nc-nd/3.0/.


title: Jak zdecydować: aplikacja na telefon lub aplikacja internetowa

text: Z twojego prawdziwego doświadczenia życiowego i wykonanej pracy. Jak wybrać między rozpoczęciem projektu jako aplikacja na telefon lub aplikacja internetowa? Z tego, co czytałem, jest to kwestia: potrzeba vs czas i gotówka na rozwiązanie tego problemu. Nie jestem pewien na dłuższą metę i przy ograniczonym budżecie, jaką drogę wybrać. Moje główne obawy i porównania : Aplikacja na telefon * zablokowana na danej platformie * specyficzna dla każdego urządzenia * określone umiejętności programistyczne wymagane dla każdego urządzenia * koszt programowania * koszt dystrybucji * ograniczony kanał dystrybucji Aplikacja internetowa * otwarta platforma * bardziej przyjazne dla wielu urządzeń * nakładające się umiejętności programistyczne * koszt programowania * brak kosztów dystrybucji * brak kanału dystrybucji Jakie są twoje plusy / minusy


title: Programiści z certyfikatem Java: Czy na egzaminie certyfikacyjnym było coś, co cię zaskoczyło?

text: W czwartek mam zamiar podejść do egzaminu certyfikacyjnego Java 6 SE. Zastanawiam się tylko, czy któryś z was znalazł coś nieoczekiwanego na tych egzaminach lub rzeczy, na które chciałbyś zwrócić większą uwagę. Wszelkie ogólne wskazówki, sztuczki lub ostrzeżenia byłyby bardzo mile widziane. (Proszę nie marnuj czasu, próbując powiedzieć mi, że marnuję swój czas/pieniądze, ponieważ robię to tylko po to, aby uzyskać natychmiastowe A w mojej klasie Java.) Dzięki!


title: Jak traktowane są dane pozycji wiersza/kolumny w bibliotekach parsera?

text: Buduję parser przy użyciu biblioteki kombinatora parsera. Muszę śledzić, gdzie węzły AST zaczynały się i kończyły w danych tekstowych — numery wierszy i kolumn. Jak podchodzi się do tego problemu i/lub jakie są strategie radzenia sobie z nim? **Wyjaśnienie:** pytam jak/kiedy/gdzie obliczane są dane w wierszach i kolumnach. Dwie możliwe alternatywy to 1) jako dodatkowy element monad stanu ala i transformatorów monad, które są aktualizowane za każdym razem, gdy zużywany jest token (znak) oraz 2) wstępne przetwarzanie strumienia tokenów w celu dodania wiersza/kolumny do każdego z nich. Wady: 1) spowoduje, że ta sama praca zostanie wykonana wiele razy, jeśli nastąpi cofanie się. 2) znacznie zwiększyłoby użycie pamięci, gdyby cały strumień wejściowy był wykonywany z góry.


title: Czy „kodowanie tablicy” jest niewłaściwe podczas wywiadów?

text: To nieco subiektywne pytanie, ale chciałbym usłyszeć opinie/opinie od ankieterów/odpowiadających na ten temat. Naszą część techniczną podzieliliśmy na 4 części. Napisz kod, czytaj i analizuj kod, projektuj sesję i kod na tablicy. Ostatnią częścią, o którą prosimy rozmówców, jest napisanie małego fragmentu kodu (4-5 wierszy) na tablicy i wyjaśnienie podczas przechodzenia przez niego. Pozwólcie, że wyjaśnię, że celem nie jest wyłapywanie ludzi. Nie szukamy idealnej składni. Cholera, to może być nawet pseudokod. ale chodzi o to, aby dać im bardzo prosty problem i sprawdzić, czy ich mózg może nam przekazać rozwiązanie. Przez proste problemy mam na myśli "Odwróć łańcuch", "FizzBuzz" itp... **EDYTUJ** > Tylko w odniesieniu do komentarza na temat Pseudo-Kodu. Zawsze najpierw prosimy o > wyraźny język. Jesteśmy domem .NET C#. powiedzieliśmy tylko „pseudo->kod”, gdy ktoś wygasał/naprawdę zmagał się z kodem. Moje pytanie brzmi: ** „Czy niestosowne/nierozsądne jest oczekiwanie, że programista podczas rozmowy kwalifikacyjnej napisze fragment kodu na tablicy?”**


title: „Możliwość” przejęcia utrzymania małej, wewnętrznej strony internetowej. Co powinienem zrobić?

text: Zaproponowano mi „okazję” przejęcia utrzymania małej wewnętrznej strony internetowej prowadzonej przez moją grupę, która zawiera informacje o harmonogramach i zdjęcia z wydarzeń, które odbyły się grupy. Mój menedżer wysłał mi link do strony i sprawdziłem. Strona wyglądała na czystą i schludną, ale załadowała się w ~5 sekund. Myślałem, że to trochę za długo, biorąc pod uwagę, że strona naprawdę nie zawierała dużo treści. To skłoniło mnie do przyjrzenia się pod maską kodu źródłowego strony. Ku mojemu przerażeniu zostało to całkowicie zhakowane przy użyciu **zagnieżdżonych tabel**! Jestem nowy, więc naprawdę nie mogę odmówić tej „szansy”, więc co mam z nią zrobić? Każde włókno mojej istoty czuje, że jedyną właściwą rzeczą do zrobienia jest przerobienie witryny za pomocą CSS, Div, Span i innych odpowiednich tagów, których używałby na początku rozsądny/dobry programista, zamiast polegać na magii zachęty do renderowania tabel . Ale chciałbym zapytać bardziej doświadczonych ode mnie programistów, którzy znaleźli się w takiej sytuacji. Co powinienem zrobić? Czy moją jedyną realistyczną opcją jest pozostawienie horroru bez zmian i dostosowanie zawartości tylko zgodnie z życzeniem? Jestem naprawdę rozdarty między dobrym rozwojem a korporacyjną rzeczywistością, której jestem częścią. Czy istnieje jakiś środek, na którym można poprawić sytuację, nawet jeśli nie jest idealna? Dzięki z góry. **Edycja:** Przyglądałem się temu nieco głębiej i zauważyłem typ rozszerzenia, który był renderowany jako HTML, ale w rzeczywistości był ".cfm". Po przyjrzeniu się temu dowiedziałem się, że to plik ColdFusion. Który najwyraźniej jest programem Adobe WYSIWIG, który musiał być użyty przez mojego poprzednika do stworzenia tej strony. Oznacza to, że konserwacja będzie banalna, gdy otrzymam kopię ColdFusion. Prawdopodobnie nadal będę musiał robić takie rzeczy, jak tworzenie gwoździ kciuka i przenoszenie niektórych treści na stronie głównej w inne miejsce, aby skrócić czas ładowania. Wątpię, czy mogę posunąć się znacznie dalej w optymalizacji witryny bez wyrzucania ColdFusion. Jestem bardzo wdzięczny za wszystkie dobre rady i będę o nich pamiętał w przyszłych "Możliwościach".


title: Dlaczego Railsy zostały napisane w Rubim?

text: Znam PHP i Rubiego. Używając klona PHP Rails (nie z wyboru), zwanego Symfony, (który jest najwyraźniej najlepszym frameworkiem PHP), zauważyłem, że jest to klon Rails. Myślę, że Symfony jest głupie i to (SensioLabs to sprytny biznes), ponieważ Railsy już istnieją. Poza projektami open-source, które zarabiają pieniądze, nie rozumiem, dlaczego ludzie tworzą klony Railsów w PHP, skoro Railsy już istnieją. Dlaczego nie skorzystać z Railsów? Z pewnością nie bez powodu Railsy kodowane DHH z Ruby. Używając Symfony, zauważam, że coś jest nie tak, ale nie wiem, co to jest. Nauczyłem się o Railsach w gównianym e-booku Sitepoint i zapomniałem go, więc teraz uczę się go z e-booka PragProg i uwielbiam ten e-book. Nie znam w pełni Railsów, ale rozumiem, jak to działa (dzięki Symfony). Chciałbym dokończyć przeglądanie całego ebooka, abym mógł stworzyć 2 aplikacje Railsowe. Pamiętam, że Railsy były bardziej zabawne niż Symfony używające ebooka Sitepoint, którego nie mogłem dokończyć, a to nie miało nic wspólnego z ładną składnią Rubiego. 1. Dlaczego Railsy są zakodowane w Ruby? 2. Co takiego jest w klonach PHP Rails, które nie wydają się właściwe? 3. Co takiego robią Railsy, czego nie robią klony Railsów?


title: czy można tworzyć aplikację z funkcją overscroll?

text: Skoro Apple wygrał procesy przeciwko Motoroli i Samsungowi o tzw. „patent overscroll”, zadaję sobie pytanie, jakie są konsekwencje prawne wydania aplikacji z taką funkcją? Myślę, że gdyby wydać aplikację w IOS, byłoby dobrze, ale co dzieje się w Androidzie lub Windowsie? Czy zostanę pozwany? Co się stanie, jeśli napiszę aplikację dla przeglądarki? Czy ten overscrollowy patent nie jest patentem na projekt? Jeśli to prawda, wszystkie aplikacje, które używają overscrollowania i nie są napisane przez Apple, byłyby nielegalne. Bardzo mylące. Czy ktoś może to wyjaśnić?


title: W jaki sposób obsługa łamania wierszy w Pythonie różni się od automatycznych średników w JavaScript?

text: JavaScript ma funkcję o nazwie Automatyczne wstawianie średników, w której w zasadzie, jeśli parser napotka nieprawidłowy token, a ostatnim tokenem przed tym był podział wiersza, parser wstawi średnik w miejscu, w którym znajduje się podział wiersza. Pozwala to w zasadzie napisać cały kod JavaScript bez średników, ale musisz być świadomy niektórych przypadków brzegowych, głównie jeśli masz słowo kluczowe return, a następnie wartość, którą chcesz zwrócić w nowej linii. function test(){ // Zwróci to 'undefined', ponieważ return jest poprawną instrukcją // a "john" jest samodzielną poprawną instrukcją. return "john" } Z powodu tych błędów pojawiły się dziesiątki artykułów o tytułach takich jak 'Automatyczne wstawianie średników jest złe', 'Zawsze używaj średników w JavaScript' itp. Ale w Pythonie nikt nigdy nie używa średników i ma dokładnie takie same błędy. def test(): # To zwróci 'undefined', ponieważ return jest poprawną instrukcją # a "john" jest poprawną instrukcją. return "john" Działa dokładnie tak samo, a mimo to nikt nie boi się śmiertelnie zachowania Pythona. Myślę, że przypadki, w których javascript zachowuje się źle, są na tyle nieliczne, że powinieneś być w stanie łatwo ich uniknąć. Zwrot + wartość w nowym wierszu? Czy ludzie naprawdę często to robią? Jakieś opinie? Czy używasz średników w javascript i dlaczego?


title: Jakie są problemy licencyjne związane ze sporem dotyczącym java Oracle/Apache?

text: Właśnie zacząłem z zainteresowaniem śledzić operę mydlaną związaną z przejęciem Javy przez Oracle i uszczerbkiem na dobrej woli, jaki wytworzyła ona w społeczności open source. W szczególności próbuję teraz zrozumieć konsekwencje decyzji Oracle o odrzuceniu Apache licencji open source dla Harmony. Moje pytania: 1) Czym właściwie jest Harmony? Na ich stronie internetowej czytamy: „Oprogramowanie Apache Harmony to modułowe środowisko wykonawcze Java z bibliotekami klas i powiązanymi narzędziami”. Czym to się różni od J2SE lub J2EE? A może Harmony jest podobna do Andrioda? 2) Sedno tego problemu dotyczy zestawu Java Technology Compatibility Kit (lub TCK), który poświadcza, że twoja implementacja jest zgodna ze specyfikacjami JSR. Jeśli dobrze rozumiem, Oracle odmawia oferowania bezpłatnego lub open source'owego dostępu do TCK, odmawiając udostępnienia projektów takich jak Harmony jako open source. Dlaczego to taka ważna sprawa dla Apache? Np. dlaczego nie mogą (lub nie mogą) wydać Harmony na ograniczonej licencji? 3) Z tej strony jest następujący cytat: > Wygląda na to, że plan Oracle polega na ograniczeniu wdrożeń > Java na niektórych rynkach, zwłaszcza na platformach mobilnych, aby > mogła zarabiać na własnej ofercie Java na tych rynkach bez > konkurencji . Przypuszczalnie wszystko, co wyprodukuje Oracle, podlegałoby takim samym ograniczeniom, jakie nakłada na innych w odniesieniu do licencji na technologię końcową, więc jak mogliby zdobyć przewagę nad konkurencją? Choć bez wątpienia odrażający, czy inni konkurenci, tacy jak Google lub Apache, nie byliby w stanie wypuszczać konkurencyjnych platform na tej samej licencji co Oracle?


title: Czy kompilacja powinna sterować tagami, czy tagi powinny sterować kompilacją?

text: Nasza obecna metoda tworzenia wydania produktu polega na oznaczeniu wszystkich naszych repozytoriów komponentów następną odpowiednią wersją, a następnie zmodyfikowaniu głównego skryptu kompilacji przy użyciu nowych numerów wersji dla każdego komponentu. Następnie zostanie uruchomiony główny skrypt kompilacji, który wykona wyewidencjonowanie SCM każdego składnika, a następnie zmodyfikuje plik AssemblyInfo.cs, tak aby skompilowany plik .exe (lub .dll) miał poprawny numer wersji, a następnie skompilował składnik. Wszystkie te komponenty są następnie łączone w wersję produktu, która jest „wersjonowana” z czysto marketingową liczbą. Tak więc nasz proces mieści się w opisie „tagi napędzają kompilację”, ale nie jestem pewien, czy jest to najlepsza metoda. W szczególności, gdy widzę, że to nas zawodzi, gdybyśmy mieli zintegrować naszą wersję wydania z procesem CI, wydaje się, że byłoby to odwrotne. Nie tylko to, ale gdzie w typowym procesie zarządzania wydaniami pojawia się decyzja o numerze wersji nowego komponentu? Ktoś musi zdecydować, kiedy składnik A zmieni się z 2.1.4 na 3.0.0 i czy biblioteka B powinna zmienić się z 6.3.2 na 6.3.3 lub 6.4.0. Gdzie są przechowywane te numery wersji i na jakim etapie są podejmowane decyzje? Obecnie decyzje te podejmujemy „w ostatniej chwili” i są one przechowywane w głównym skrypcie budowania. Sam główny skrypt kompilacji jest wersjonowany i jest oznaczony numerem wersji „marketingowej”.


title: Wykonawca - Dopuszczalne Warunki Płatności?

text: Zastanawiam się, czy jako wykonawca postąpiłem słusznie. Zasadniczo jestem w trzecim miesiącu, a mój obecny klient popsuł płatność w pierwszym miesiącu i właśnie dowiedziałem się, że znowu spóźniają się z płaceniem mi za drugi miesiąc. Nie byłoby tak źle, gdybym nie znajdował się w trudnej sytuacji finansowej, ponieważ było to moje pierwsze doświadczenie kontraktowe. Ale co do zasady, odszedłem od nich i powiem im, że nie wrócę, dopóki nie ustalą wynagrodzenia. Część mnie wydaje się, że nie było to bardzo profesjonalne zajęcie, ale nie uważam też, że było to bardzo profesjonalne, aby zepsuć moje płatności, dwa razy z rzędu. Czy podjąłem właściwą decyzję? Nadal chcę pracować dla tych facetów i cieszyć się tą pracą, ale muszę zająć się życiem, które wymaga finansów i nie mogę sobie pozwolić na ciągłe mieszanie się z taką pensją. Próbowałem sformułować pytanie tak, aby było zorientowane na zachowania kontrahentów wobec klientów, którzy źle ich traktują, a jako część odpowiedzi, które do tej pory pojawiły się, jest to dobra dyskusja. Napływające odpowiedzi są świetne w różnych subiektywnych sytuacjach. Aktualizacja: W odpowiedzi na niektóre odpowiedzi, konfiguracja to Ja -> Firma parasolowa -> Klient. Jestem pracownikiem firmy Umbrella, której warunki są takie, że nie otrzymuję zapłaty, chyba że klient zapłacił. Tak więc, kiedy dowiedziałem się, że klient spóźni się z zapłatą firmie Umbrella, byłem bardzo zdenerwowany. Wierzę też, że w TYM przypadku po prostu odejście było złym posunięciem. Najbardziej profesjonalnym sposobem radzenia sobie z tym byłoby poinformowanie mojego bezpośredniego przełożonego o moich problemach, a następnie pozwolenie mu na ich rozwiązanie, zamiast tego jego szef i inni dowiedzieli się o tym przed nim i został z bzdurami, z którymi musiał sobie poradzić, bez szansa na poradzenie sobie z tym, zanim wymknie się spod kontroli. Jeśli nadal byłem niezadowolony z ich rozwiązania, mógłbym powiedzieć firmie Umbrella, że nie jestem zadowolony i jestem gotów odejść, co wtedy mogliby mi doradzić w bardziej profesjonalny sposób, jakie mam opcje. Później, jak się dowiedziałem, było wiele innych, bardziej profesjonalnych sposobów radzenia sobie z tym. Jednak nie kontraktowałem się na długo i miałem bardzo emocjonalną reakcję na sytuację, w której wcześniej nie byłem. Jestem przekonany, że bardziej profesjonalną i dojrzałą odpowiedzią byłoby coś innego, niż po prostu odejście, stworzenie trudnej sytuacji dla mojego szefa, a teraz dla innych osób w firmie i dla mnie. Jak dotąd absolutnie świetne odpowiedzi. Dziękuję wszystkim za doświadczone rady.


title: Czy SQL jest ważny, jeśli dobrze znam frameworki ORM?

text: Nie mam żadnego poważnego doświadczenia w SQL, a nawet nienawidzę pisać SQL zamiast LINQ. Jestem wystarczająco zadowolony z ORM-ów. Czy z punktu widzenia pracodawców i branży znajomość SQL jest ważna? Czy muszę na tym opanować? Czy firmy, które preferują czysty SQL od frameworków ORM, są „dinozaurem” w świecie programowania?


title: Wskazówki dotyczące przejścia od projektów osobistych do projektów na skalę korporacyjną

text: Chciałem wiedzieć, czy ktoś ma jakieś wskazówki dotyczące przejścia z małych projektów osobistych i zajęć na projekt na dużą skalę korporacyjną? Jestem na drugim roku na uniwersytecie i zdobyłem staż w dużej firmie technologicznej, aby pracować nad dość dużym projektem, po prostu obawiam się „odnalezienia drogi” tak dużego projektu.


title: Jakie kroki mogę podjąć, aby uniknąć problemów z kodowaniem znaków w aplikacji internetowej?

text: W poprzednich aplikacjach internetowych, które zbudowałem, miałem problemy z wprowadzaniem przez użytkowników egzotycznych znaków do formularzy, które są dziwnie przechowywane w bazie danych, a czasami wyglądają inaczej lub są podwójnie zakodowane, gdy są pobierane z bazy danych i wyświetlane z powrotem w przeglądarce. Rozpoczynam teraz nowy projekt i chcę od samego początku zapobiegać tym problemom. To, czego szukam, to lista rzeczy, które mogę zrobić, aby zapobiec problemom z kodowaniem znaków, takim jak te, bez względu na to, co użytkownicy wprowadzają do formularzy. Jeśli ustawię moje tabele bazy danych na UTF-8 i ustawię wszystkie moje strony internetowe, aby zakładały, że treść jest UTF-8, czy to wystarczy? Czy niektóre znaki nadal będą wyglądać inaczej niż wprowadzone przez użytkownika? Czy powinienem przeprowadzić walidację po stronie klienta, która nie pozwala użytkownikom wprowadzać określonych znaków?


title: Złożoność cykliczna z dwoma IF - dlaczego jest to 3?

text: Przeczytałem artykuł z następującym przykładem: void func() { if (condition1) a = a + 1; jeśli (warunek 2) a = a - 1; } Mówi, że CC wynosi 3, ponieważ istnieją trzy możliwe ścieżki. Dlaczego? Dlaczego nie 4? Spodziewałbym się PRAWDA, PRAWDA; FAŁSZ, FAŁSZ; PRAWDA, FAŁSZ i FAŁSZ, PRAWDA. Nie ma znaczenia, jakie są stwierdzenia. CC=Jeśli-punkty końcowe+2. Zawsze jest to 3 dla 2 IF i jednego zakończenia.


title: Znajomość parsera i interpretera jako sposób na ocenę umiejętności programisty

text: To tylko anegdotyczny dowód, ale z moich wcześniejszych spotkań z programistami w różnych miejscach pracy, programiści, którzy rozumieją podstawy parsowania i interpretacji, wydają się być ogólnie lepszymi programistami. Są też mniej religijni w stosunku do swoich narzędzi. Moje subiektywne doświadczenie wskazuje, że mają tendencję do pisania lepszego kodu. Pracowałem głównie z programistami aplikacji i wiem, że jest to bardzo ograniczona poddyscyplina programowania w ogóle, więc weź moje ograniczone doświadczenie za to, czym jest i nic więcej. Jakie są inne fundamentalne elementy CS, które są zwykle skorelowane z umiejętnościami i zdolnościami programowania? Zakładam pewne podstawowe zrozumienie podstawowych struktur danych, więc to jest dane.


title: Jaka jest najlepsza praktyka odczytu dużej liczby ustawień niestandardowych z pliku tekstowego?

text: Tak więc przeglądałem kod, który napisałem kilka lat temu, do programu symulacji ekonomicznej. Każda symulacja ma dużą liczbę ustawień, które można zapisać do pliku, a następnie wczytać z powrotem do programu, aby ponownie uruchomić tę samą/podobną symulację. Niektóre ustawienia są opcjonalne lub zależą od tego, co jest symulowane. Kod do odczytu parametrów to w zasadzie jedna bardzo duża instrukcja switch (z kilkoma zagnieżdżonymi instrukcjami switch). Zastanawiałem się, czy istnieje lepszy sposób na poradzenie sobie z tą sytuacją. Jedna linijka pliku ustawień może wyglądać tak: #RA:1,MT:DiscriminatoryPriceKDoubleAuction,OF:Demo Output.csv,QM:100,NT:5000,KP:0.5 //continue... I część kodu, który przeczytałby tę linię: switch( Character.toUpperCase( s.charAt(0) ) ) { case 'R': randSeed = Integer.valueOf( s.substring(3).trim() ); przerwanie; przypadek 'M': marketType = s.substring(3).trim(); System.err.println("TypRynku: " +Typrynku); przerwanie; przypadek 'O': nazwaPlikuWyjściowego = s.substring(3).trim(); przerwanie; case 'Q': numberOfMarkets = Integer.valueOf( s.substring(3).trim() ); przerwanie; przypadek 'N': maxTradesPerRound = Integer.valueOf( s.substring(3).trim() ); przerwanie; wielkość liter 'K': kParameter = Float.valueOf( s.substring(3).trim() ); przerwanie; // trwa...     }


title: Czy mam zapamiętać kod z książki, której używam do nauki?

text: Obecnie korzystam ze świetnej książki, aby dowiedzieć się, co muszę wiedzieć o tworzeniu aplikacji na iPhone'a za pomocą cocos2d. Jak na razie radzę sobie świetnie, czytam cały kod i przez większość czasu pasuje i rozumiem. Czasami przechodzę przez to jeszcze kilka razy, raz za razem, żeby coś w pełni zrozumieć. Moje pytanie brzmi... czy mam zapamiętać ten kod? Bo chociaż rozumiem każdy blok kodu i dlaczego istnieje, pamiętam również kod, ale czy jest to konieczne? Co mam zapamiętać? Kolejność? Rozumiem już 99% składni (do tej pory wszystko jest jasne) .. Mam nadzieję, że mam tutaj sens. Czy idę dalej po przeczytaniu i zrozumieniu bloku kodu? Czy mogę przejść do następnego bloku kodu tylko wtedy, gdy pamiętam, co było w poprzednim bloku kodu? Bo mogę to zrozumieć, napisać kod, dowiedzieć się, dlaczego tam jest itp., a potem idę dalej, ale czy pamiętam to wszystko, co mam zrobić?


title: Algorytm eksploracji miasta

text: Celem algorytmu jest stworzenie `n` tras na mapie geograficznej, gdzie podaje się `n`, podczas gdy wszystkie trasy nie zajmują więcej niż `t` jednostek czasu na piechotę i kończą się tam, gdzie się zaczynają, przy czym możliwie najmniejsze nakładanie się, co oznacza, że użytkownik spacerujący po trasach przechodzi po jak najmniejszej liczbie ulic dwa razy lub częściej, jak to możliwe. Program ma obliczać trasy zamknięte (punkt początkowy = punkt końcowy), przy czym długość tras powinna być równa czasowi `t`. Innym ograniczeniem jest to, że każdą ulicą należy spacerować jak najmniej razy, aby zawsze odkrywać nowe obszary, idąc przez ten sam okres czasu. Przykład: Jesteś w Nowym Jorku (mapy google na przykładowej mapie) * Chcesz chodzić przez 40 minut. * Chcesz być na nowych drogach lub ścieżkach tak często, jak to możliwe. Zdjęcie z nitką. Wątek ma długość `velocity_walking * t` w mniejszej skali. Teraz przyklejasz koniec i zaczynasz od punktu startowego na mapie, `lat` i `lon`. Następnie przesuwasz wątek, aby znajdował się tylko na ulicach/ścieżkach spacerowych, bez dwukrotnego przebywania na tej samej ulicy. Teraz bierzesz kolejny wątek i przyklejasz koniec i zaczynasz od punktu startowego na mapie, `lat` i `lon`. Teraz robisz to samo, co powyżej, starając się nie nakładać tego na drugi wątek. Powtarzasz to `n` razy w sumie, więc biorąc pod uwagę pierwsze dwa wątki, powtarzasz to `n-2` razy. Kroki są następujące: 1. Wpisz `n` 2. Wpisz `t` 3. Wpisz punkt początkowy w `lat` i `lon` 4. Utwórz `n` trasy, które wymagają jednostek czasu `t` na przejście pieszo, zacznij i kończyć się na `lat`,`lon` i jeśli to możliwe, nie zawierać dwa razy tych samych ulic lub części ulic. Mój pomysł: Posiadanie okręgu o promieniu równego `prędkość_chodu * t/2`. Planuj trasy od początku do punktu na okręgu do początku. Wady: * Te same ulice do obwodu koła iz powrotem. * Wiele ulic zostało pominiętych. Jaki jest lepszy algorytm do tego? Język nie ma znaczenia, liczy się algorytm.


title: czy jestem po prostu za stary, aby spróbować pracy jako programista?

text: Chciałem tylko zapytać wszystkich programistów o te Q. Nie jestem wiosennym kurczakiem, mam 36 lat. Uczę się Pythona i Visual Basic od około 2 lat i bardzo mi się to podoba. Nigdy wcześniej nie zajmowałem się programowaniem i żałuję, że tego nie zrobiłem, ponieważ bardzo mi się to podoba. Wiem, że gdybym przekonał się, jak bardzo mi się to podoba i zainteresowałem się nim lata temu, na pewno bym to robił dużo wcześniej. Nigdy nie pracowałem w programowaniu ani nawet w IT, zanim zawsze pracowałem ręcznie i zastanawiam się, czy mógłbym spróbować dostać pracę jako programista, gdy moja wiedza programistyczna polepszy się za rok lub 2 lata, co sprawi, że będę miał późne 30 lat . Czy to byłoby za stare, aby spróbować znaleźć pracę w terenie? Naprawdę zależy mi tylko na tym, co mogę zdobyć i wiem, że nie będę pracował dla EA Games czy coś takiego. Mam nadzieję, że mógłbym być gdzieś „juniorem” pomimo zakłopotania w moim wieku. Rozpoczęcie tak późno w terenie bez żadnego doświadczenia bardzo mnie martwi, że nie będę traktowany poważnie. Mój przyjaciel programista mówi, że możesz zacząć w każdym wieku, jeśli wiesz, co robisz, ale znowu słyszałem coś innego. Chociaż chcę pracować jako programista, tak naprawdę nie chcę spędzać więcej czasu na nauce programowania tylko po to, by znaleźć się w ogóle nie brany pod uwagę przez pracodawców, ponieważ jestem za stary i niedoświadczony, a nie jakaś młoda uniwersytecka zapalniczka. Co powinienem zrobić? inni twierdzą, że istnieją możliwości online, które potencjalnie można wykorzystać jako doświadczenie, ale czy są? proszę pomóż mi.


title: Idealny system operacyjny

text: Dobra. Więc obecnie próbuję zaprojektować system operacyjny, ale potrzebuję pomysłów. Mniejsza o wykonalność w tej chwili, to dopiero faza projektowania. Gdybyś miał system operacyjny, który robił to, co chciałeś, co byś chciał, żeby robił? Proszę być konkretnym i żadnych odpowiedzi "emulować Unix lub DOS". Dziękuję Ci.


title: Reprezentacja UML typu przekazywanego jako parametr

text: Chcę narysować diagram UML mojego programu. Klasa `Barney` ma metodę `Yabadaba(Doo d)`, która przyjmuje parametr typu `Doo`. Jak mam reprezentować, że klasa „Doo” jest używana w klasie „Barney” na moim diagramie UML?


title: Rozwiązanie programowe z lat 2000, czy powinienem spróbować załatać lub przerobić całość?

text: Zostałem wysłany, aby omówić system, z którego obecnie korzysta dana firma i co należy z nim zrobić. Firma produkuje różne ekspozytory kartonowe. System ten został opracowany w celu śledzenia klientów, zamówień i cen. Wiele się wydarzyło od czasu utworzenia systemu i jest on teraz, jak to określił kierownik, „ _zablokowany_ ” i „ _problematyczny_ ”, co tłumaczę jako „niedynamiczny” i „niestabilny”. Trochę informacji o systemie * Został opracowany około 2000 roku * Dość mały system, 2-5 użytkowników, 6 formularzy, ~8 tabel ze średnią ilością danych * Oparty na wczesnym Visual Basicu, formularze tworzone metodą przeciągnij i upuść. Interfejs to w zasadzie tylko okno z menu i kilkoma formularzami * Wykorzystuje bazę danych MSSQL (serwer SQL2005) do przechowywania danych i sterownik ODBC do zapytania, dane były migrowane z Excela przed tym systemem, a przed Excelem były obsługiwane, obliczane i zapisywane ręcznie i papier * Użytkownicy pracują w środowisku Microsoft XP (i wyżej) Ich głównym problemem jest to, że nie potrafią już poprawnie dostosowywać i obliczać cen, nie mogą już poprawnie dodawać nowych rodzajów opakowań itp., ponieważ nie mogą (a raczej nie potrafią) t wiedzieć, jak) dotknąć danych na serwerze. Zasugerowałem 3 możliwe rozwiązania 1. Spróbuj załatać obecny system 2. Stwórz nowy interfejs (najlepiej podobne środowisko, oparte na VB.net lub VB) 3. Przywróć go do rozwiązania Excela, biorąc pod uwagę, że jest to taki mały system może być więcej opcji, ale to są te, o których mógłbym pomyśleć. Moje pytania to * Co powinienem polecić i dlaczego? * Jakie są lub mogą być zalety i wady tych alternatyw? * Czy istnieją inne (prawdopodobnie lepsze) alternatywy?


title: Czy tworząc projekt open source kodowanie w VB.net to zły pomysł?

text: Planuję stworzyć projekt open source, jednak zastanawiałem się, czy programiści mają tendencję do odchodzenia od projektów, które są kodowane w VB.net, nawet jeśli znają VB.net. Z tego, co przeczytałem, więcej profesjonalistów używa C++/C# i nie lubi VB.net, ale początkujący bardziej lubią VB.net. Staram się, aby mój projekt był przyjazny dla początkujących, jednak nadal potrzebuję bardziej doświadczonych programistów, więc nie muszę dźwigać ciężaru trudniejszych rzeczy. **Czy będę miał znacznie większy wkład (w kod, a nie pieniądze), gdy wybiorę C++ lub C#? Czy więcej programistów będzie "bawić się" moim kodem?** Nie martwię się o ludzi, którzy nie zawracają sobie głowy przeglądaniem kodu, chcę tylko wiedzieć, czy mój projekt będzie bardziej prosperował, jeśli użyję bardziej popularnego języka , czy jeśli mam dobry pomysł, to się uda bez względu na język, którego używam? Nawiasem mówiąc, bez względu na wybrany język, będę używał frameworka .net dla ułatwienia użytkowania. **Jeśli zdecyduję się na użycie jakiejś formy C, polecacie C# czy C++? Mam pewne doświadczenie z C (Arduino) i planuję dostać książkę do biblioteki, jeśli użyję jej do mojego projektu, więc nie stanowi to problemu, ale naprawdę nie chcę, aby mój projekt stał się porzucanym oprogramowaniem. Właściwie mam nadzieję, że pewnego dnia, jeśli będę mógł, to w ogóle nie będzie ode mnie zależne. (Nie mówię, że się nie wniosę, ale nie muszę poświęcać całego czasu na pracę nad tym.) * * * **EDYTUJ:** Do tej pory prawie wszyscy uważają, że powinienem używać C# lub C++. **Który jest bardziej popularny? Czy istnieje przewaga jednego nad drugim?** * * * **EDYTUJ 2:** ## **W odpowiedzi podaj fakty (np. liczbę projektów open source, które używają języka __ itp., aby można było je pokazać trendy).**


title: rozszerzalne efekty w czystym skrypcie

text: W Purescript, IO innymi efektami zarządza się za pomocą monady Eff i extensible, które są deklarowane w następujący sposób: main :: Eff (trace :: Trace, random :: Random) {} Więc jeśli dobrze rozumiem, to `main Deklaracja ` pozwala jedynie zalogować się do konsoli i wygenerować liczby losowe. „Ślad :: Ślad, losowo :: Losowo” jest rzędem efektu, tj. nieuporządkowanym, oznaczonym zbiorem efektów. Teraz rozumiem, że „Trace” to efekt, a „trace” to jego etykieta. Ale dlaczego potrzebujemy obu? Ma to sens dla rekordów takich jak `{ foo::String, bar::String }`, ale nie mogę zrozumieć, dlaczego musiałbym zarządzać dwoma efektami `Random` z różnymi etykietami. tzn. napisałbym co następuje: main :: Eff (Trace, Random) {} -- bez zbędnych etykiet Czy etykiety efektów są przydatne w czystym skrypcie? Jeśli tak, to po co?


title: Jak zezwolić na innowacje w metodyce Agile

text: Jedną rzeczą jest stwierdzenie, że metodyki zwinne są dobre w środowiskach, w których wymagania są słabo rozumiane lub w których występuje znacząca nowość. Ale czy powinien być stosowany tam, gdzie wymagana jest całkowita innowacja? Jeśli tak, to jak? Jeśli to, co rozważasz, jest nieznane w branży lub nawet uważane za niemożliwe, może być trudno wyobrazić sobie historie użytkowników i powiązane zadania. Na przykład, czy byłoby korzystne dla Alberta Einsteina (lub hipotetycznego pracodawcy, któremu podlega) opracowanie ogólnej teorii względności poprzez rozbicie jej na eposy, sprinty i zadania? Jeśli odpowiedź brzmi „tak”, to jakie specjalne udogodnienia powinny zostać wprowadzone, aby pomóc zwinnemu podejściu najlepiej współpracować ze sposobem Einsteina na osiągnięcie rewolucyjnego wglądu? Aby podać konkretny przykład oprogramowania, wyobraź sobie, że rok to 2008 i chcesz użyć programu WCF, aby zapewnić funkcje typu COMET lub "długiego odpytywania". Wszystkie twoje badania „wcześniejszej pracy” nic nie dają, a nawet czytasz blogera MSDN, który mówi, że to niemożliwe. Ponownie, jakie poprawki lub „smaki” można wprowadzić do historyjek użytkowników i zadań, aby dostosować się do pomysłowości (lub śmiałości?) tego dręczyciela? A może rzeczywiście lepiej byłoby stwierdzić, że wysiłek jest tak innowacyjny (w 2008 r.), że najlepiej pozostawić go jako nieukierunkowane ćwiczenie typu think-tank? Innowator, który działa w ramach dwutygodniowych sprintów, z pewnością nie chce zostać zestrzelony za każdym razem, gdy porzuca zadanie bez wyjścia i zaczyna pracować nad nowo odkrytym zadaniem, którego nie przewidywano w momencie definiowania sprintu. Podobnie, gdy sprint się kończy i nie dostarcza się żadnego działającego kodu ani podejść roboczych, innowator nie powinien zostać zestrzelony przez kierownictwo. Potrzebny jest sposób, aby nawet w takich okolicznościach określić ten wysiłek jako „sukces”. Być może w jednym lub trzech kolejnych sprintach tego rodzaju „ślepego zaułka” innowator może w końcu trafić na coś, co działa. W jaki sposób agile pozwala kierownictwu wiedzieć, że każdy sprint był „w porządku” pomimo innowacyjnych niepowodzeń? Jak to zrobić, aby wykres spalania nie wyglądał niedorzecznie?


title: Jak przesłałbyś dane między swoimi strukturami danych a bazami danych?

text: Uczę się programowania w szkole i mam pytanie, które wkurza mnie o struktury danych i przenoszenie informacji w nich przechowywanych do baz danych. Robimy tylko małe systemy - rejestracja na wydarzenie, punkt sprzedaży dla lokalnej restauracji, sprzedaż i inwentaryzacja itp. Powiedzmy, że ktoś sam się rejestruje, czy należy to przekazać do struktury danych, a następnie do bazy danych, czy po prostu zostać przeniesione bezpośrednio do bazy danych?


title: Czy w terenie używany jest język programowania Mercury?

text: Mam silne zainteresowanie programowaniem funkcjonalnym i logicznym, a Mercury wydaje się dobrym połączeniem tych dwóch. Czy w ogóle jest używany w przemyśle? Lubię uczyć się języka tylko dla zabawy, ale fajnie byłoby mieć do tego praktyczne, dające się zatrudnić drogi. Nie mogłem znaleźć wiele przykładów użycia w przemyśle na stronie językowej.


title: Czy warto się uczyć Haskella?

text: Patrzę na to pytanie przede wszystkim z punktu widzenia kariery, więc mam nadzieję, że odpowiesz na nie odpowiednio. Jestem dość biegły w Pythonie, potrafię pisać w C++ i jestem studentem ostatniego roku inżynierii informatycznej. Chcę się nauczyć Haskella, ponieważ dużo o nim słyszałem. Moje pytanie brzmi: oprócz uczenia się tego z powodu całego dobra, jakie o nim słyszałem, czy jest to dobre dla mojej kariery? Czy jest używany w branży? Jestem ciekaw, żeby się tego nauczyć, ale o ile nie pomoże mi to jakoś w mojej karierze, nie mam ochoty na tę zmianę na tym etapie. Szukasz osobistych doświadczeń tutaj. Dziękuję!


title: Czy osoby spoza branży IT mogą obsługiwać wiki?

text: Moja firma chce usprawnić zarządzanie danymi z badań rynkowych. **Obecny styl zarządzania danymi:** * „Hej Jimbo, gdzie jest to zdjęcie naszego WhatZit 2.0? * „Tak, pamiętam tego e-maila o tej firmie od tego faceta, daj mi kilka minut na przeszukanie mojego Outlooka” * „kto ma najnowszy egzemplarz katalogu produktów Ważnego Konkurenta? Mój jest z 2009 roku.” … „Colleen ma i jest na urlopie macierzyńskim. Musisz do niej zadzwonić, aby uzyskać hasło do stacji roboczej...” **Pożądany styl zarządzania danymi:** * dane uporządkowane według tematu (prawne, ekonomiczne, przemysłowe, konkurencyjne) * dla każdego tematu, wiele typów multimediów jest przechowywanych razem (zdjęcia produktów firmy, informacje prasowe, informacje kontaktowe), ale nadal starannie posortowane według typu * historie edycji danych * dostęp komunalny (brak silosów danych) Myślałem o stworzeniu wiki działu, do której mieliby dostęp wszyscy użytkownicy. Wydaje się, że spełnia ona wymagania czterech kryteria powyżej, ale jestem trochę zaniepokojony tym, jak przyjazny dla użytkownika (czytaj: do rozszyfrowania dla osób nietechnicznych) jest dla bardziej zaawansowanych funkcji, takich jak galerie obrazów, formatowanie artykułów itp. Czy ktoś tutaj skonfigurował wiki dla osób niebędących informatykami i gdyby się nie zapaliło, nie stało się miastem duchów lub nie wyglądało jak Geocities? Dodatkowe pytanie: czy widzisz jakieś oczywiste wady w moim wyborze MediaWiki (lub jakiejkolwiek innej wiki) w celu rozwiązania tego problemu? Mam nadzieję, że niektórzy z Was już wcześniej napotkali ten problem i może zaoferować pewne informacje...)


title: Jak uzasadnić uaktualnienie do systemu Windows Server 2008?

text: Właśnie zaczynamy nowy projekt greenfield — jest to wysoce funkcjonalna aplikacja internetowa wykorzystująca ASP.NET MVC3, SQL Server itp. Po raz pierwszy będziemy również korzystać z Windows Workflow Foundation. Nasz klient chce tylko używać swoich istniejących serwerów sieci Web Windows Server 2003. Moim głównym problemem (poza tym, że ma 8 lat) jest to, że nie mamy dużego doświadczenia w rozwoju WWF, ale rozumiemy, że używanie AppFabric (tylko Server 2008) poprawi rozwój WWF. To znaczny koszt dla klienta, ponieważ potrzebujemy również serwerów awaryjnych i środowiska UAT. Czy mam rację w moim rozumieniu i jakich metodologii mogę użyć, aby uzasadnić koszt aktualizacji?


title: Jak napisać narzędzie do analizy i refaktoryzacji kodu do współpracy z programem Visual Studio?

text: Ostatnio podczas pracy nad moim projektem i refaktoryzacji wpadłem na pomysł napisania niestandardowego narzędzia, które pomoże mi analizować mój kod w bardzo konkretnym kontekście i przeprowadzać bardzo niestandardowe refaktoryzacje. To, co chcę zrobić, to w jakiś sposób połączyć się z Visual Studio i wykorzystać jego możliwości do analizy mojego kodu i przeprowadzenia refaktoryzacji. Istnieje widok klasy, który wyświetla logiczną strukturę projektu wraz z jego klasami, metodami i zmiennymi, więc zakładam, że dostępne są wysokopoziomowe informacje o kodzie. Pytanie brzmi, czy jest narażony na użytkownika? Czy jest jakieś API, z którego mogę skorzystać? Zasadniczo chcę następujących rzeczy: 1. Sposób na uruchomienie kilku prostych bloków kodu analizy kodu ze złożonością testów jednostkowych, nic naprawdę wyszukanego. Podobnie jak w przypadku uzyskania listy klas pasujących do określonego wzorca nazw, iteruj przez ich metody, filtruj te z określonymi atrybutami, zajrzyj do środka, czy istnieją wywołania do określonych metod, jeśli tak, potwierdź te wywołania mające określone parametry. Następnie wrzuć wynik analizy do okna wyjściowego, tak aby po dwukrotnym kliknięciu tam w obszarze roboczym została otwarta lokalizacja w odpowiednim pliku kodu. 2. Możliwość polecenia Visual Studio do przeprowadzenia refaktoryzacji chirurgicznej, takiej jak zmiana nazwy określonej zmiennej, a następnie zastosowanie jej wbudowanej refaktoryzacji zmiany nazwy w całym projekcie. Te podstawowe operacje refaktoryzacji są dostępne dla użytkownika w trybie ręcznym, czy można je wywołać z kodu? 3. Nic, co mogłoby uszkodzić styl kodu. Podobnie jak wbudowana refaktoryzacja, która pozostawia nienaruszony styl kodu. 4. Nie jest to statyczna wtyczka dla programu Visual Studio, ale kod zależny od rozwiązania, dzięki czemu podróżuje wraz z rozwiązaniem. Bez instalacji. Może jak osobny projekt analizy w rozwiązaniu, które mogę ustawić jako aktywne, odkomentować pożądane metody analizy i pozwolić im działać. 5. Coś bardzo podstawowego, bez GUI. Wystarczy plik konfiguracyjny i pliki kodu analizy. 6. Ewentualnie bez korzystania z narzędzi firm trzecich, nie chcę wprowadzać dodatkowej zależności Jeśli jest to w ogóle możliwe, czy możesz podać mi jakieś wskazówki dotyczące nazw, słów kluczowych, po co google? Interesują mnie wszelkie informacje, które możesz udzielić na temat - opisz zakres moich opcji, znane problemy, trudności, problemy? Wszystko, aby ogólny obraz był jasny. I pytanie za milion dolarów: jeśli to możliwe, czy coś takiego można szybko zhakować w ciągu kilku godzin?


title: Dlaczego za najlepszą praktykę uważa się pakowanie kodu programu i kodu interfejsu graficznego w różnych klasach?

text: Więc mój nauczyciel mówi mi, że bardzo ważne jest, aby nie hermetyzować kodu programu i kodu interfejsu graficznego w tych samych klasach, ale aby były całkowicie niezależne. Obecnie piszę grę na iPhone'a z siatką. dla mnie o wiele bardziej sensowne jest tworzenie zarówno siatki graficznej, jak i kodu technicznego w tej samej klasie „Grid”. Czy inni programiści będą się na to krzywić? Czy rzeczywiście bardzo ważne jest, aby zachować niezależny interfejs graficzny i kod. Jakie problemy się pojawią, jeśli tego nie zrobię? Dziękuję Ci! EDYCJA: dzięki chłopaki! Czy byłoby w porządku, gdybym najpierw napisał projekt, a następnie skopiował kod, aby utworzyć oddzielenie projektu obaw. Wiem, że może to całkowicie zniweczyć cel, ale tak samo jak praktyka... Żeby następnym razem móc zastosować ten wzorzec projektowy od samego początku?


title: Warstwa aplikacji a warstwa domeny?

text: Czytam Domain-Driven Design autorstwa Evansa i jestem w części omawiającej architekturę warstwową. Właśnie zdałem sobie sprawę, że warstwy aplikacji i domeny są różne i powinny być oddzielne. W projekcie, nad którym pracuję, są one jakby mieszane i nie widzę różnicy, dopóki nie przeczytam książki (i nie mogę powiedzieć, że teraz jest dla mnie bardzo jasna), naprawdę. Moje pytania, skoro oba dotyczą logiki aplikacji i mają być pozbawione aspektów technicznych i prezentacyjnych, jakie są zalety wytyczenia granicy tych dwóch?


title: Oblicz liczbę Pi do N miejsc

text: Próbuję obliczyć, jak obliczyć Pi do N miejsc dziesiętnych, myślę, że domyślny DP dla float/double to 5, a następnie masz setprecision(), jednak są one oczywiście niewystarczające, potrzebuję nieskończonej liczby miejsc. Czy ktoś ma też pomysł, jak zakodować coś takiego jak y-cruncher?


title: Używanie stylu Metro w moich aplikacjach internetowych

text: Uwielbiam interfejs Metro (nowoczesny interfejs użytkownika / interfejs w stylu Windows 8, cokolwiek) i chciałbym mieć również projekt „kafelków” na mojej stronie. Coś takiego lub tego. Czy mogę to zrobić, czy muszę najpierw skontaktować się z MS w tej sprawie? Jest już jedno pytanie, ale w tym wysłana i zaakceptowana odpowiedź obejmowała bardziej kontrolę obrotu niż kafelkowy interfejs użytkownika.


title: Czy ma kiedykolwiek sens licencjonowanie kodu źródłowego jako zasobu edukacyjnego na licencji GPL?

text: Niedawno natknąłem się na serię artykułów opisujących, jak stworzyć interpreter schematów. Przeglądałem kod, kiedy zdałem sobie sprawę, że to AGPL. W większości sam kod jest narzędziem nauczania. Zasadniczo potrzebuję kodu w takim stanie, w jakim jest, jednak chciałem również zrozumieć, jak to wszystko do siebie pasuje. Zdałem sobie jednak sprawę, że jeśli skopiuję i wkleję pojedynczą linię kodu, mój projekt stanie się AGPL. Być może przez jeszcze bardziej trywialne działania? Zresztą, czy to w ogóle standardowa praktyka? Czy jestem po prostu nadmiernie paranoikiem? Ponadto, jakie są korzyści z tego systemu licencjonowania?


title: Jak rozpocząć programowanie

text: Ukończyłem kurs programowania 2 lata temu, ale od tego czasu nie pracuję w programowaniu. Niedawno znalazłem pracę programisty, ale nie ma zespołu programistycznego, więc mogę zdobyć cenne doświadczenie. Sam programuję i wprowadzam zmiany w programie już wykonanym przez mojego byłego kolegę. Muszę wiedzieć, co powinienem zrobić, aby być na dobrej drodze do zostania profesjonalnym programistą bez zespołu, z którego mógłby czerpać doświadczenie. Jakie dobre praktyki należy poprawić, a jakie złe? Używam VB.Net, ASP.Net i SQL.


title: Jaki jest właściwy sposób na napisanie setera?

text: Ja sam próbuję nauczyć się JAVA. W jednej z książek, które czytam, autor mówi, że nie ma konwencji pisania poprawnego setera. Jego przykład wyglądałby mniej więcej tak: public void setUnitCost(double inUnitCost) { unitCost = inUnitCost; } Jednak używając środowiska Eclipse i każ mu utworzyć gettery i settery, robi to: public void setUnitCost (double unitCost){ this.unitCost = unitCost; } Moje pytanie brzmi, która droga jest lepsza? Czy to robi różnicę w świecie programowania? Jaka jest dokładnie różnica między nimi?


title: Obsługa trudnych rozproszonych systemów kontroli wersji łączy się z programowaniem w parach

text: Częstym problemem w moim bardzo małym przepływie pracy zespołu jest obsługa scalania z repozytoriów trunk/stabilnych do gałęzi funkcji, które wyprzedzają wersje trunk lub wersje stabilne, ale które muszą śledzić zmiany w wersji trunk i stabilne wersje. Używamy mercurial, ale każdy DVCS może mieć podobny przepływ pracy, w tym Git lub inne. Początkowo mieliśmy przepływ pracy, w którym starszy programista (ja) wykonał większość scalania, ponieważ był to model, którego doświadczyłem w poprzednim miejscu pracy, ale podobnie jak w poprzednim miejscu, w którym tak pracowaliśmy, stanowiło to duże obciążenie jeden programista, aby zebrać wyniki dużej liczby zatwierdzeń i posprzątać powstały bałagan. Jeśli scalałeś jedną zmianę, z jednym komunikatem o zatwierdzeniu, może mógłbyś to zrobić czysto, ale co często mi się przytrafia, jest trochę w tyle i tydzień zmian musi zostać scalony. Zastanawiam się, kiedy wpadniesz w sytuację, w której konieczne jest duże scalenie przy użyciu Mercurial lub DVCS, jakiego procesu używasz i czy obejmuje on współpracę między wieloma programistami w zespole i czy Twój zespół użyj programowania w parach, aby rozwiązać ten złożony problem programowania, jak sortować i wprowadzać zmiany z TRUNK, które muszą dostać się do gałęzi FEATUREXYZ. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/SOli1.jpg) Przepływ pracy lub standardowa praktyka, którą wyobrażam, wygląda tak: * gdy scalanie do gałęzi funkcji wygląda na łatwe i tylko wiąże się z moimi własnymi zmianami robię to sam * gdy scalenie do gałęzi funkcji również wciąga czyjeś zmiany, które nie są trywialne, włączam tę osobę do scalenia. Zdrowy rozsądek? Tak myślę. Podejrzewam jednak, że inni poszli tą drogą i mogą zaoferować wyraźniej opracowane i „wypróbowane i prawdziwe” podejście do tej ogólnej sytuacji.


title: Pełne zrozumienie rozwiązań problemów 1000-pt w TopCoderze zajmuje mi godziny. Czy powinienem się zniechęcać?

text: Czasami dotyczy to również tych 500-pt. Czasami zaczynam czuć, że nigdy nie poprawię się na tyle, aby kodować je z łatwością jak inni. Czy powinienem po prostu zrezygnować? Jeśli nie, dlaczego? To jest niezwykle irytujące, zasmucające i sprawia, że czuję się niezmiernie niezdolna i głupia.


title: O licencji programu Open source

text: Rozwijam program open source, który jest dla mojego szkolnego projektu. Zrobiłem trochę badań na ten temat, ale wciąż jest kilka pytań. Jest to projekt szkolny, nie jest to aplikacja zaliczkowa i chętnie dzielę się swoją pracą. 1. Czy to oznacza, że jeśli wydam swój program z licencją, ludzie będą bali się zmienić mój kod, ponieważ może to skutkować pozwem? 2. Czy mogę twierdzić, że mój produkt jest "open source", jeśli nie mam licencji, mogę zdefiniować jakąś regułę (ale bez ochrony prawnej)? 3. Czy muszę ubiegać się o te licencje (np. GNU), muszę przesłać kod produktu czy wypełnić tylko w formularzu?


title: Odbywasz dwa staże jednocześnie?

text: Potrzebuję porady i byłbym wdzięczny za twoją pomoc. Niedawno dostałem się na dwa staże, oba wymagają ode mnie pracy 20 godzin tygodniowo i zastanawiam się, czy mądrze jest przyjąć oba i pracować 40 godzin tygodniowo jako stażysta w obu firmach, czy to w ogóle możliwe? Szczerze mówiąc, interesuje mnie jedno i drugie i trudno mi wybrać między nimi, ale obawiam się, że zrobienie obu będzie dla mnie zbyt trudne. Z drugiej strony, jeśli pracuję dla obu, mogę być w bardziej stabilnym stanie (jeśli chodzi o pieniądze) i bardzo by mi to pomogło w opłacaniu moich funduszy na studia (między innymi). Potrzebuję porady proszę?


title: Weryfikacja a walidacja ponownie, czy testowanie należy do weryfikacji? Jeśli tak, to jakie?

text: Pytałem już wcześniej i wzbudziłem wiele kontrowersji, więc próbowałem zebrać trochę danych i ponownie zadać podobne pytanie. Np. V&V, gdzie wszystkie testy są tylko walidacją: http://www.buzzle.com/editorials/4-5-2005-68117.asp Zgodnie z normą ISO 12207, testowanie odbywa się w ramach walidacji: 1. • Przygotuj wymagania testowe, przypadki i specyfikacje 2. •Przeprowadź testy weryfikacyjne, jak wspomina. > Kod wdraża odpowiednią sekwencję zdarzeń, spójne interfejsy, > prawidłowy przepływ danych i kontroli, kompletność, odpowiedni czas alokacji i > ustalanie budżetów oraz definicję błędów, izolację i odzyskiwanie. oraz Komponenty oprogramowania i jednostki każdego elementu oprogramowania zostały > całkowicie i prawidłowo zintegrowane z elementem oprogramowania. Nie jestem pewien, jak zweryfikować bez testowania, ale nie ma tego jako techniki. Od IEEE: > Weryfikacja: Proces oceny oprogramowania w celu określenia, czy produkty danej fazy rozwoju spełniają warunki nałożone na początku tej fazy. [IEEE-STD-610]. > Walidacja: Proces oceny oprogramowania w trakcie lub na końcu procesu tworzenia > w celu ustalenia, czy spełnia ono określone > wymagania. [IEEE-STD-610] Pod koniec fazy rozwoju? To by oznaczało UAT. Pytanie brzmi zatem, jakie testowanie (jednostkowe, integracyjne, systemowe, uat) będzie uważane za weryfikację czy walidację? Nie rozumiem, dlaczego niektórzy twierdzą, że weryfikacja dynamiczna to testowanie, a inni, że tylko walidacja. **Przykład: testuję aplikację. Wymagania systemowe mówią, że są dwa pola z max. długość 64 znaków i przycisk Zapisz. Przykład użycia powiedz: Użytkownik wpisze imię i nazwisko i zapisze. Sprawdzając pola i obecność przycisku Zapisz, powiedziałbym jego weryfikację. Kiedy śledzę przypadek użycia, jego walidację. Więc to jest jedno i drugie, wykonywane w systemie jako całości.**


title: Jaki projekt zaproponowaliby Państwo do rejestrowania danych raportowania, aby łatwiej było zaimplementować przechwytywanie, powiedzmy, dodatkowego pola formularza?

text: Dlaczego kładzie się nacisk na rejestrowanie informacji raportowania za pośrednictwem aplikacji w oddzielnej bazie danych? Widziałem projekty, w których menedżer rejestrowania jest dostępny dla każdej klasy warstwy biznesowej, niezależnie od tego, czy tego potrzebuje, czy nie. To samo w sobie może powodować koszty ogólne? Pomyślałem, że rejestrowanie informacji o raportowaniu powinno być wykonywane jako osobna usługa, jeśli wymaga (w ogóle) wykorzystania w innej aplikacji. Niemniej jednak większość danych (zwłaszcza, gdy dane są przechowywane jako nieschematyczne xml) po prostu marnuje miejsce w bazie danych. Dlaczego jest tak wiele złych projektów, że trudno jest odpowiedzieć na wymagania raportowania bez zmiany, powiedzmy, trzech różnych warstw oprogramowania? Jaki projekt chciałbyś zaproponować do rejestrowania danych raportowania, aby można było łatwo dokonać zmian w wymaganiach dotyczących raportowania? Zazwyczaj zmiana wymagań raportu wiąże się z żądaniem przechwycenia dodatkowego pola w formularzu.


title: Czy używasz czasu przeszłego (pasywny głos) w celu skojarzenia niezmienności? (np. Array.Transposed vs. Array.Transpose)

text: _[Uwaga: Poniższy tekst jest nieco ciężki w C# w swojej składni i konwencjach, takich jak cytowanie reguł FxCop, ponieważ to jest moje tło, ale intencją tej dyskusji jest niezależność od języka, a użyte przykłady kodu powinny być ogólnie traktowane jako pseudokod. -- Mike]_ Myślę, że wszyscy zgodzimy się, że klasy powinny być projektowane w taki sposób, aby ich instancje obiektów były niezmienne wszędzie tam, gdzie jest to praktyczne, a wyniki wywoływania składowych klas powinny być wolne od efektów ubocznych, na ile to możliwe. Historyczne konwencje nazewnictwa mają jednak tendencję do używania głosu aktywnego: „GetSomething”, „DoSomehing” itp., a to jest dobre, ponieważ jasno określa, jakie działanie podejmie członek klasy. Jednak teraz zaczynam myśleć, że członkowie mogą czasami (lub często) korzystać z nazwy w czasie przeszłym, aby skojarzyć, że wartość jest zwracana bez wpływu na obiekt, do którego się odwołujemy. Na przykład w przypadku metody, która transponuje tablicę, bieżące style nazewnictwa prawdopodobnie będą miały nazwę „Array.Transpose”, ale jeśli ten element członkowski zwróci tablicę _new_, bez transpozycji obiektu, do którego się odwołuje, to myślę, że nazywając go „Array.Transposed ' byłoby dokładniejsze i bardziej zrozumiałe dla programisty. Podczas pracy z metodą 'Array.Transpose()' można przypadkowo spróbować użyć kodu takiego jak: Array myArray = new Array(); mojaTablica.Transponuj(); Ale jeśli metoda „Transpose” zwróci nową tablicę bez wpływu na obiekt, do którego się odwołuje, to ten kod nic nie robi — to znaczy „myArray” po cichu _nie_ zostanie transponowany. (Przypuszczam, że gdyby „Transpozycja” była właściwością, kompilator wykryłby, że powyższe jest niezgodne z prawem, ale wytyczne FxCop stwierdzają, że element członkowski, który wykonuje konwersję, powinien być metodą). Ale jeśli metoda została nazwana w przeszłości napięta jako 'Array.Transposed', dla użytkownika będzie jaśniejsze, że wymagana jest następująca składnia: Array myArray = new Array(); Tablica transposedArray = myArray.Transposed(); Inne nazwy, które moim zdaniem pasowałyby do tej kategorii, to członkowie o nazwach „Zmieniony” vs. „Zmień rozmiar”, „Przesunięty” vs. czas przeszły byłby używany dla elementów członkowskich, które zwróciły nową wartość bez wpływu na obiekt, do którego się odwołuje. Innym podejściem, które jest obecnie bardziej powszechne, jest poprzedzanie każdego imienia przedrostkiem „Get” lub „To”, ale myślę, że dodaje to niepotrzebnej wagi, podczas gdy zmiana na czas przeszły skutecznie komunikuje znaczenie. Czy ma to sens dla innych programistów tutaj, czy ten pomysł czasu przeszłego brzmi zbyt niezręcznie podczas czytania? **Edytuj:** Świetne dyskusje poniżej, bardzo wszystkim dziękuję. Kilka punktów, które chciałbym podsumować w oparciu o Wasze komentarze i moje własne zrewidowane myślenie na ten temat, znajduje się poniżej. _Składnie „płynne” łączenia metod_ W oparciu o poniższe dyskusje, użycie czasu przeszłego ma prawdopodobnie pewną wartość, gdy jest używane w klasie mutowalnej, aby było jasne, które składowe wpływają lub nie wpływają na stan wewnętrzny przywoływanej klasy obiekt. Jednak w przypadku klas niezmiennych, które powinny stanowić większość przypadków (miałbym nadzieję), uważam, że użycie czasu przeszłego może sprawić, że składnia będzie niepotrzebnie niezręczna. Na przykład w przypadku „płynnych składni”, takich jak te utworzone przez tworzenie łańcuchów metod, użycie czasu przeszłego spowoduje, że kod będzie mniej czytelny. Na przykład podczas korzystania z LINQ za pośrednictwem C# typowy łańcuch metod może wyglądać następująco: dataSource.Sort().Take(10).Select(x => x.ToString); W przypadku zmiany na czas przeszły stałoby się to niewygodne: dataSource.Sorted().Taken(10).Selected(x => x.ToString); Pamiętaj, że dataSource.Sorted() ma w rzeczywistości jaśniejsze znaczenie niż dataSource.Sort(), ponieważ wyrażenia LINQ zawsze tworzą nowe wyliczenie bez wpływu na źródło. Ponieważ jednak jesteśmy tego w pełni świadomi, używając tego paradygmatu, użycie czasu przeszłego jest zbędne i sprawia, że „płynność” czytania go staje się niezręczna bez żadnych korzyści. _Użycie właściwości a metody_ Kluczowy problem, który został poruszony poniżej, dotyczy wytycznych FxCop dotyczących używania metod „Get” w porównaniu z właściwościami tylko do odczytu. Np. reguła FxCop CA1024. Chociaż nie jest to wyraźnie wspomniane w tej regule FxCop, użycie metod "To" wydaje się mieć zastosowanie również do tego uzasadnienia, ponieważ metody ToXXXXXX() są metodami konwersji. A w przypadku ToArray() metoda jest zarówno metodą konwersji, jak i metodą zwracającą tablicę. _Użycie czasu przeszłego dla właściwości logicznych_ Niektórzy sugerowali, że czas przeszły może kojarzyć się z wartością logiczną, np. właściwość „Sukceed” lub „Połączona”. Uważam, że poniższe riposty podkreślające użycie „jest”, „ma” lub „są” dla właściwości i pól logicznych są poprawne. Czas przeszły również może pomóc w tym względzie, ale nie tak bardzo, jak użycie przedrostka „Is”. Możesz swobodnie używać czasu przeszłego dla właściwości i pól logicznych, to pomaga, ale myślę, że jeszcze ważniejsze jest, aby poprzedzić nazwę przedrostkiem „jest”, „ma” lub „jest”. _Ogólne wnioski?_ W przypadku problemu Tranpose() vs. Transposed() myślę, że „skizzy” ma rację, sugerując, że powinna to być Transpose() dla akcji mutacyjnej vs. GetTransposed() dla niemutującego wyniku . To sprawia, że jest to w 100% jasne. Ale znowu myślę, że może to dotyczyć tylko klasy mutowalnej, takiej jak tablica. W przypadku klas niezmiennych, zwłaszcza tam, gdzie można użyć płynnej składni łączenia metod, myślę, że ta składnia stałaby się niepotrzebnie niezręczna. Na przykład porównaj: var v = myObject.Transpose().Resize(3,5).Shift(2); do: var v = myObject.GetTransposed().GetResized(3,5).GetShifted(2); Hmmm... właściwie nawet tutaj wydaje się, że jest to w 100% jasne, że wynik nie ma wpływu na źródło, ale nie jestem pewien. Myślę, że dla paradygmatu takiego jak LINQ, gdzie jest dobrze znany, użycie "Get" i/lub czasu przeszłego nie jest konieczne, ale w przypadku nowego API może mieć pewną wartość - na początku! Jeśli API zawiera tylko niezmienne obiekty, gdy użytkownik to zrozumie, użycie "Get" i/lub czasu przeszłego tylko zmniejsza czytelność. Myślę więc, że nie ma tu łatwych odpowiedzi. Myślę, że trzeba pomyśleć o całości swojego API i starannie wybrać! \-- Michał