title: Jak możemy sprawić, by agile było przyjemne dla programistów, którzy osobiście lubią samodzielnie, od początku do końca, posiadać duże fragmenty?

text: Jesteśmy mniej więcej w połowie naszego przejścia od wodospadu do zwinności przy użyciu scrum; zmieniliśmy się z dużych zespołów w silosach technologii/dyscyplin na mniejsze zespoły wielofunkcyjne. Zgodnie z oczekiwaniami, zmiana na agile nie wszystkim odpowiada. Jest garstka programistów, którzy mają trudności z przystosowaniem się do Agile. Naprawdę chcę, aby byli zaangażowani i rzucali wyzwania, a ostatecznie czerpali radość z codziennego przychodzenia do pracy. To inteligentni, szczęśliwi, zmotywowani ludzie, których szanuję zarówno na poziomie osobistym, jak i zawodowym. Podstawowa kwestia jest następująca: Niektórzy programiści są przede wszystkim motywowani radością z podjęcia trudnej pracy, przemyślenia projektu, przemyślenia potencjalnych problemów, a następnie rozwiązania problemu kawałek po kawałku, przy minimalnej interakcji z innymi, przez dłuższy czas. okres czasu. Zazwyczaj wykonują prace na wysokim poziomie jakości i terminowo; ich praca jest łatwa do utrzymania i pasuje do ogólnej architektury. Przechodząc do zespołu wielofunkcyjnego, który ceni interakcję i wspólną odpowiedzialność za pracę oraz dostarczanie działającej funkcjonalności w krótszych odstępach czasu, zespoły ewoluują w taki sposób, że cały zespół pokonuje ten trudny problem. Wiele osób uważa to za pozytywną zmianę; ktoś, kto uwielbia brać problem i mieć go niezależnie od początku do końca, traci szansę na taką pracę. To nie jest problem, jeśli ludzie są otwarci na zmiany. Z pewnością widzieliśmy kilka osób, które nie lubią zmian, ale w przypadkach, o które się martwię, jednostki są dobrymi wykonawcami, autentycznie otwartymi na zmiany, podejmują wysiłek, widzą, jaka jest reszta zespołu zmieniają się i chcą się dopasować. To nie jest przypadek, że ktoś jest trudny, obstrukcyjny lub chce gromadzić najbardziej soczystą pracę. Po prostu nie znajdują radości w pracy, jak kiedyś. Jestem pewien, że nie możemy być jedynym miejscem, które na to nie wpadło. Jak podeszli do tego inni? Jeśli jesteś programistą, którego motywacją jest posiadanie dużej ilości pracy od początku do końca i dostosowałeś się do innego sposobu pracy, co ci to dało?


title: Jak dostać się do kodowania stron internetowych?

text: Nie wiem, jak dostać się do tego obszaru, a dokładniej, zostać twórcą stron internetowych. Oto, co teraz mam * html * jakiś skrypt java * C# * i trochę wszystkiego innego (php, css, xhtml, ect.) Byłem na w3schools.com od jakiegoś czasu czytając i robiąc tutoriale i stałem się znacznie większą wiedzę na temat stron internetowych odkąd zacząłem. Ale kiedy porównuję to, czego nauczyłem się od w3schools z pobranym szablonem witryny, zauważam w tym szablonie rzeczy, o których w3schools nawet nie wspomniał. Zastanawiam się, jaki jest najlepszy sposób na samodzielne zostanie programistą internetowym, czy kontynuowanie w3schools byłoby dobre? Lub po prostu pobierz szablon, przeczytaj je i dowiedz się, jak działa kod? Jeszcze jedno pytanie, zauważyłem, że wszystkie używają SQL, jak mam się uczyć SQL? i przepraszam, skłamałem, jeszcze jedno pytanie, jaki jest najlepszy proces podczas nauki kodu internetowego? jak jaka kolejność, html, potem css, a potem php? czy html potem xhtml potem css? tego rodzaju rzeczy. dzięki, Robert Edit: Moim celem w tej dziedzinie jest taka strona internetowa: geforce.com Czy uważasz, że stworzenie takiej strony jest trudne z punktu widzenia eksperta?


title: Czy powinienem zainwestować czas w naukę Coffeescriptu?

text: Jestem freelancerem i zarabiam na chleb pomagając innym pisać lepszy kod JavaScript. Mam dobre doświadczenie z większością frameworków JavaScript. Zastanawiam się, czy warto inwestować czas w naukę coffeescriptu. Kto powinien się tego nauczyć, a kto nie?


title: Konsekwencje uznania źródła książki w pliku kodu dostępnym na otwartej licencji

text: Piszę trochę oprogramowania OS tylko dla ciekawostek i jest ono licencjonowane przy użyciu MS-PL (tj. rób z nim prawie wszystko, co chcesz). Jest to projekt, z którego korzystam z wielu różnych źródeł (wiele osobistych czytań / badań w to wchodzę) i umieszczam oryginalną książkę / autora w nagłówkach komentarzy plików, jeśli dotyczy. Robię to tak, że jeśli ktoś faktycznie zdecyduje się przeczytać lub użyć kodu, może odwołać się do oryginalnych źródeł, które zainspirowały pracę. Uwaga: * Posiadam kopię każdego źródła * Wszystkie źródła mogą być zakupione przez ogół społeczeństwa (amazon) * O ile wiem, żadna z książek nie stwierdza wyraźnie, że kod jest licencjonowany * Żadna z kod jest kopiowany dosłownie. Przetłumaczyłem to wszystko z różnych języków (głównie C++) na C#, aw razie potrzeby dodałem obsługę wyjątków itp. Zastanawiam się tylko, czy są jakieś implikacje pozyskiwania tych książek w aplikacji/bibliotece o otwartym kodzie źródłowym.


title: Najlepsze praktyki dotyczące modernizacji starszego kodu za pomocą testów automatycznych

text: Zaraz podejmę się zadania ponownego zaimplementowania już zdefiniowanego interfejsu (zestawu plików nagłówkowych C++) w stosunkowo dużej i starej bazie kodu. Zanim to zrobię, chciałbym mieć jak najpełniejsze pokrycie testami, aby móc jak najwcześniej i łatwo wykryć błędy reimplementacji. Problem polega na tym, że istniejąca już baza kodu nie została zaprojektowana tak, aby była łatwo testowalna, z (bardzo) dużymi klasami i funkcjami, wysokim stopniem sprzężenia, funkcjami z (wieloma) skutkami ubocznymi itp. Miło byłoby usłyszeć o jakichkolwiek wcześniejsze doświadczenia z podobnymi zadaniami oraz kilka dobrych i konkretnych wskazówek dotyczących modernizacji testów automatycznych (jednostkowych, integracyjnych, regresyjnych itp.) w starszym kodzie.


title: Wprowadź testy jednostkowe, gdy baza kodu jest już dostępna

text: > **Możliwy duplikat:** > Najlepsze praktyki w zakresie doposażenia starszego kodu w testy automatyczne Od trzech lat pracuję nad projektem we Flex bez testów jednostkowych. Prostym powodem jest fakt, że po prostu nie zdawałem sobie sprawy z wagi testów jednostkowych na początku studiów na uniwersytecie. Teraz moje podejście do testowania zmieniło się całkowicie i dlatego chcę wprowadzić go do istniejącego projektu (około 20000LOC). Aby to zrobić, są dwa podejścia do wyboru: 1) Odrzuć istniejącą bazę kodu i zacznij od zera z TDD 2) Napisz testy i spróbuj sprawić, by przeszły, zmieniając istniejący kod Cóż, byłbym wdzięczny, aby nie musieć piszę wszystko od podstaw, ale myślę, że dzięki temu projekt byłby znacznie lepszy. Jakie byłoby twoje podejście?


title: Jak testować jednostkowo duże starsze systemy?

text: > **Możliwe duplikowanie:** > Najlepsze praktyki doposażania starszego kodu w testy automatyczne Podczas pracy w dużych, starszych systemach (dużych systemach bez testów jednostkowych) często spotykam ludzi, którzy mówią, że używaj testów jednostkowych jako narzędzia przeciwko możliwym błędom. Zastanawiam się, czy ktoś próbował go na dużych systemach bez żadnych testów jednostkowych. Oczywiście łatwo jest powiedzieć, że testowanie jednostkowe pomaga, ale w dużych systemach może to być bardzo czasochłonne. Pełne przetestowanie każdej części aplikacji może zająć miesiące, jeśli nie lata. Gdy zostaniesz poproszony o wykonanie funkcjonalności, która jest modyfikacją istniejącej funkcjonalności lub dodaniem nowej funkcjonalności do aplikacji, jak byś się do tego zabrał? Oczywiście będzie wiele przypadków, w których kod w różnych klasach będzie wyglądał podobnie i będziesz chciał ponownie rozłożyć te klasy, które bez odpowiednich testów jednostkowych mogą i najprawdopodobniej otworzą puszkę robaków. Jak więc podszedłbyś do testowania jednostkowego dużych aplikacji? A jakich innych środków użyłbyś, aby zredukować możliwe błędy w twoim kodowaniu (oczywiście niektóre błędy prawdopodobnie i tak pozostaną)?


title: Czy Scrum opiera się na „dziennym raportowaniu”?

text: Google tłumaczy „早请示晚汇报” jako „Skonsultuj wczesne i późne zgłaszanie” lub „Poproś o instrukcje, aby zgłosić później”. Bing tłumaczy się jako „wczesne i późne zgłaszanie”. Niektórzy przetłumaczyli treść: > Polityka wkroczyła we wszystkie aspekty życia codziennego podczas **Kultury > Rewolucji** , jako **早请示晚汇报**. Każdego dnia podczas działalności politycznej lub ceremonii > każdy, po wstaniu lub zgłoszeniu się do pracy/nauki, musiał „skonsultować się z > wielkim przywódcą, przewodniczącym Mao”, w sprawie pracy, nauki tego dnia. Pod koniec > dnia/przed pójściem spać, wszyscy musieli _przyznać się_ do „Wielkiego Przywódcy > Przewodniczącego Mao”, co stanowiło pracę/naukę tego dnia. **Późne zgłoszenie** nazywane jest „ > _wyznaniem swojego grzechu_ ”, ponieważ dzień pracy lub nauki z pewnością zawierałby > błędy, co opóźniało pracę rewolucyjną; stąd osoba > wyznałaby: „_przepraszam, wielki przywódco_”, co jest podobne do „ **wyznania swojego > grzechu**”. Ponieważ jednak „wyznanie grzechu” ma poważny religijny wydźwięk, nie uznano go za stosowne i zmieniono jego nazwę na „> **spóźnione zgłaszanie się**”. , domy kultury, które zapewniały trzy posiłki dziennie – > wszyscy zaangażowani musieli stawić się na **sprawozdanie zbiorcze**. Oto kolejny fragment, który brzmi pięknie nawet po maszynowym tłumaczeniu: > Zresztą kilka razy dziennie przez kilka lat usuwany z > "instrukcji", "raportowania" tak, aby "życie" tego krótkiego okresu było > w końcu wolne od politycznego cały czas kontrolować nakręcanie, każdy ma poczucie > ulgi. Ref: Lin Zhao, wpis na blogu, artykuł w gazecie. Czuję się zobowiązany, aby mieć pewność, że ta praktyka jest zdecydowanie źródłem procesu „Scrum”. Niektórych z tych podobieństw nie można po prostu wykluczyć jako zbiegów okoliczności. Moje pytanie brzmi: „Czy naprawdę istnieje związek? Jeśli tak, to czy powinniśmy przeczytać kilka oświadczeń o misji przed rozpoczęciem pracy, a na koniec dnia przed wyjazdem mamy stand-upy?”


title: Webserver / DB / Application - Najlepszy sposób na ustawienie systemu pod kątem wydajności

text: Mam aplikację turbogears, którą wprowadzam na żywo, która używa postgresql DB na zapleczu. Czy z powodu problemu z wydajnością lepiej mieć bazę danych i aplikację na osobnym serwerze, czy na tym samym serwerze? Czy na tym samym serwerze i lepiej mieć DB na osobnym dysku fizycznym?


title: Jaka jest jedna poprawna architektura w przypadku korzystania z bazy danych z wieloma klientami?

text: Posiadamy przestarzały system z danymi przechowywanymi w bazie danych SQL. Kilku klientów łączy się z tą bazą danych za pomocą usługi sieciowej. Usługa sieci Web udostępnia wiele „poleceń” służących do wysyłania zapytań do bazy danych i wykonywania operacji „do”. Na razie w porządku. Należy jednak dodać nowe operacje i nie można rozszerzyć usługi sieciowej. Możemy dodać nową usługę, która zaimplementowałaby operacje ze starej (nieco proste) oraz dodać własne operacje. Jednocześnie chcemy zwiększyć wydajność usługi sieciowej poprzez łączenie wielu żądań jako jednego żądania (odpowiedzi również wychodzą jako pakiet). Jednym z pożądanych wyników byłoby odizolowanie aplikacji od usługi sieciowej za pomocą interfejsów programistycznych i nieco ogólnego mechanizmu przesyłania wiadomości (lub czegokolwiek innego). Zastanawiamy się nad kilkoma sposobami efektywnej obsługi wielu klientów: korporacyjna magistrala usług, warstwa usług typu żądanie/odpowiedź, ORM z architekturą klient/serwer... Czy ktoś spotkał się z takimi problemami i na czym się skończyło?


title: Co się stanie, jeśli nie powiem wyraźnie „Ten program nie jest objęty gwarancją”?

text: I powiedzmy, moja aplikacja to prosty czytnik kanałów. Czy moja aplikacja naprawdę musi zawierać informację o braku gwarancji?


title: Czy muszę znać serwlety i JSP, aby nauczyć się spring, hibernate lub innych frameworków internetowych java?

text: Pytałem wiele osób, od czego zacząć naukę tworzenia stron internetowych w języku Java, znam już core java (wątkowanie, generyczne, kolekcje, trochę doświadczenia z (JDBC)) ale nie znam JSP i serwletów. Zrobiłem sprawiedliwy udział w rozwoju z kilkoma aplikacjami internetowymi używającymi PHP po stronie serwera i HTML, CSS, JavaScript, HTML5 po stronie klienta. Większość osób, o które poprosiłem, powiedziała mi, abym od razu przeskoczył do Hibernate, podczas gdy niektórzy powiedzieli mi, że nie muszę uczyć się serwletów i jsps i powinienem natychmiast przestudiować framework Spring. Czy to prawda? czy nie muszę uczyć się serwletów i JSP, aby nauczyć się hibernacji lub Spring? Wszystkie ich odpowiedzi wprawiały mnie w zakłopotanie i teraz zupełnie nie wiem, czego się uczyć lub studiować. Czuję, że gdybym pominął naukę JSP i serwletów, ominąłbym wiele ważnych koncepcji, które z pewnością pomogą mi w przyszłości. Tak więc pytanie, czy muszę mieć fundację / znać serwlety i JSP, aby nauczyć się wiosny lub hibernacji lub innych frameworków internetowych java.?


title: Narzędzie do zarządzania projektami wbudowane w Visual Studio

text: Mój przyjaciel i ja pracujemy razem nad projektem w studio wizualnym i używamy subversion do kontroli kodu źródłowego. Używaliśmy wcześniej narzędzi do zarządzania projektami opartych na php do śledzenia zadań i błędów, ale uważamy, że niewygodne jest chodzenie godzinami do pracy w studio wizualnym, a następnie znalezienie strony internetowej, zalogowanie się i raportowanie tego, do czego już zrobiliśmy notatki, zwłaszcza, że czasami pracujemy offline, a potem musimy pamiętać, aby wrócić i zaktualizować trackery. Zastanawiamy się, czy istnieje narzędzie do zarządzania projektami (lub zestaw narzędzi), które jest wbudowane w (ukośnik dodatek) Visual Studio, które będzie współpracować z AnkhSvn, umożliwiając wielu osobom utrzymywanie i śledzenie zadań.


title: Jaki format jest najlepszy dla pierwszego prototypu nie na papierze?

text: Aplikacja konsolowa (moja ulubiona), szybka i niechlujna forma, MS Paint (dla GUI); co w większości przypadków sprawdza się najlepiej w Twojej standardowej aplikacji? Dlaczego?


title: Generowanie statystyk z dużego zbioru danych

text: Chciałbym wykonać następujące czynności: Mam dość duży zestaw danych, powiedzmy miliardy wierszy, z których każdy ma wiele kolumn binarnych. Chciałbym wygenerować szacunkowe statystyki z pewną pewnością dla tych wierszy. Statystyki miałyby prostą formę: ile jest wierszy z ustawionymi kolumnami 1, 7 i 10. Oczywiście przeglądanie wpisów nie jest dobrym rozwiązaniem. Szczerze mówiąc, wolałbym w ogóle nie dotykać zestawu danych, gdy muszę podać oszacowanie. Chciałbym wszystko wstępnie obliczyć, a następnie użyć wstępnie obliczonych danych, aby odpowiedzieć na pytania dotyczące zestawu danych. Czy znasz jakieś algorytmy/techniki rozwiązania takiego problemu?


title: Czy dobrze jest trzymać komentarze dotyczące poprawek w kodzie?

text: Mój zespół używa jasnych liter jako kontroli wersji. Projekt nad którym pracuję nie rozpoczął się 7-8 lat wstecz. Przez cały czas trwania projektu mieliśmy kilka wydań pakietów serwisowych z poprawkami błędów itp. Problemy są śledzone za pomocą systemu śledzenia błędów, a większość ludzi, którzy pracują nad poprawkami błędów, stosuje rutynę umieszczania komentarza w START/ Blok END z datą, autorem, identyfikatorem błędu itp. Uważam, że jest to dość nieistotne i powoduje, że kod jest zaśmiecony i niełatwy w utrzymaniu, a to są rzeczy, które muszą być częścią komentarzy/etykiet meldunkowych itp., gdzie możemy przechowywać dodatkowe informacje o cyklu życia produktu pracy. Jaka jest najlepsza praktyka, której należy przestrzegać? Niektórzy recenzenci kodu nalegają na komentarze na temat błędu i poprawki, aby ułatwić im życie. W moim rozumieniu muszą przejrzeć pliki, mapując je do widoku i uzyskać dziennik zmian gałęzi i przejrzeć go. Byłoby pomocne, gdybym mógł zapoznać się z najlepszymi praktykami dotyczącymi przesyłania zaktualizowanego kodu do sprawdzenia.


title: Znaczenie algorytmów w rozmowie telefonicznej

text: Zrobiłem wywiad telefoniczny i ankieter podał jakiś problem, dla którego miałem mu podać algorytm. Ponieważ była to rozmowa telefoniczna, a ja nie miałem papieru ani długopisu, więc nie mogłem podać mu właściwych rozwiązań. Więc trochę mnie zdemotywowało, że moje umiejętności rozwiązywania problemów są bardzo niskie (mam przyzwoite doświadczenie w tworzeniu oprogramowania). Jak przezwyciężyć tego rodzaju sytuacje i sugestie, aby poprawić umiejętności algorytmiczne, zwłaszcza w obliczu tego rodzaju wywiadów taktycznych.


title: Ochrona aplikacji za pomocą loginów

text: Jestem początkującym programistą Java i próbowałem znaleźć sposób na skonfigurowanie systemu logowania za pomocą mojej aplikacji Java. Aplikacja jest grą i nie chcę, aby ludzie po prostu przesyłali ją na stronę internetową, aby inni mogli ją pobrać i zagrać. Chcę użyć czegoś takiego jak MySQL, aby uwierzytelnić użytkownika w celu korzystania z aplikacji. Ktokolwiek ma jakieś sugestie?


title: Generowanie schematów kolorystycznych - teoria i algorytmy

text: Będę generował wykresy i diagramy oraz szukam jakiejś teorii na temat schematów kolorów i przykładów algorytmów. Przykładowe pytania: * Jak wygenerować kolory dopełniające lub analogiczne? * Jak generować pastelowe, zimne i ciepłe kolory? * Jak wygenerować dowolną liczbę losowych, ale wyraźnych kolorów? * Jak przetłumaczyć to wszystko na trójkę heksadecymalną (kolor sieci)? Moja implementacja będzie w AS3, ale wszelkie przykłady w pseudokodzie są mile widziane.


title: Jak Lisp może stworzyć iteracyjny proces z procedury rekurencyjnej?

text: Zaczynam się uczyć Lispu, korzystając z książki SICP. Autorzy wspominają, że procedura (tj. funkcja) może być rekurencyjna lub iteracyjna. Ponadto proces, który te procedury wygenerują, będzie również rekurencyjny lub iteracyjny, a co zaskakujące, procedura rekurencyjna może czasami generować proces iteracyjny. Podany przykład to procedura silnia, która jest procedurą rekurencyjną, ale generuje proces iteracyjny: (define silnia n) (iter 1 1 n)) (define (iter product counter max-count) (if (> counter max- count) product (iter (* licznik iloczyn) (+ licznik 1) max-count))) A oto cytat z książki: > Jednym z powodów, dla których rozróżnienie między procesem a procedurą może być > mylące jest to, że większość implementacji popularnych języków (w tym Ada, > Pascal i C) są zaprojektowane w taki sposób, że interpretacja dowolnej > procedury rekurencyjnej zajmuje ilość pamięci, która rośnie wraz z liczbą > wywołań procedur, nawet jeśli opisany proces jest w zasadzie > wielokrotny. Wdrożenie Planu, który będziemy rozważać, nie wiąże > tej wady. Wykona iteracyjny proces w stałej przestrzeni, nawet jeśli > iteracyjny proces jest opisany przez procedurę rekurencyjną. **Pytanie** : Zrozumiałem związane z tym zasady (tj. Co), ale nadal nie rozumiem, w jaki sposób interpreter/kompilator Lisp wygeneruje proces iteracyjny z funkcji rekurencyjnej, będąc w stanie obliczyć go za pomocą stałej przestrzeni i dlaczego większość innych języków nie jest w stanie tego zrobić.


title: Czy używanie PHP w JavaScript jest uważane za złą praktykę?

text: Tyle razy na tej stronie widzę ludzi próbujących robić takie rzeczy : <script type="text/javascript"> $(document).ready(function(){ $('<?php echo $divID ?>') .click(funkcja(){ alert('zrób coś'); }); }); </script> Nie sądzę, że jest to jakiś wzorzec, w który ludzie naturalnie wpadają. Musi istnieć jakiś samouczek lub materiał do nauki, który to pokazuje, w przeciwnym razie nie zobaczylibyśmy tego tak często. Pytam, czy robię z tego za dużo, czy jest to naprawdę zła praktyka? **EDYTUJ :** Rozmawiałem o tym z moim przyjacielem, który często umieszcza ruby w swoim JavaScript i poruszył tę kwestię. Czy można dynamicznie umieszczać stałe dla całej aplikacji w JavaScript, aby nie trzeba było edytować dwóch plików. na przykład... MYAPP.constants = <php echo json_encode($constants) ?>; również czy można bezpośrednio kodować dane, których zamierzasz użyć w bibliotece ChartLibrary.datapoints = <php echo json_encode($chartData) ?>; czy powinniśmy za każdym razem dzwonić AJAX?


title: DDD: Projekt fabryki modeli domen

text: Staram się zrozumieć, jak i gdzie zaimplementować fabryki modeli domen. Dołączyłem mój agregat `Firma` jako demonstrację tego, jak to zrobiłem. Moje decyzje projektowe zamieściłem na końcu - będę wdzięczny za wszelkie uwagi, sugestie, krytykę w tych punktach. **Model domeny `Firma`:** public class Firma : DomainEntity, IAggregateRoot { private string name; public string Name { get { return name; } private set { if (String.IsNullOrWhiteSpace(wartość)) { throw new ArgumentOutOfRangeException("Nazwa firmy nie może być pustą wartością"); } nazwa = wartość; } } Internal Company(int id, string name) { Name = name; } } **Fabryka domen`CompanyFactory`:** Ta klasa służy do zapewnienia, że reguły biznesowe i niezmienniki nie zostaną naruszone podczas tworzenia nowych wystąpień modeli domen. Znajdowałby się w warstwie domeny. public class CompanyFactory { protected IIdentityFactory<int> IdentityFactory { get; ustawić; } public CompanyFactory(IIdentityFactory<int> identityFactory) { IdentityFactory = identityFactory; } public Company CreateNew(string name) { var id = IdentityFactory.GenerateIdentity(); zwrócić nową firmę (identyfikator, nazwa); } public Company CreateExisting(int id, string name) { return new Company(id, name); } } **Mapowanie jednostek `CompanyMapper`:** Ta klasa jest używana do mapowania między rozbudowanymi modelami domeny i jednostkami danych Entity Framework. Znajdowałby się w warstwach infrastruktury. public class CompanyMapper : IEntityMapper<Company, CompanyTable> { private CompanyFactory factory; public CompanyMapper(FirmaFactory companyFactory) { fabryka = companyFactory; } public Company MapFrom(CompanyTable dataEntity) { returnFabrykaDomeny.CreateExisting(dataEntity.Id, dataEntity.Name); } public CompanyTable MapFrom(Company domainEntity) { return new CompanyTable() { Id = domainEntity.Id, Name = domainEntity.Name }; } } 1. Konstruktor `Firma` jest zadeklarowany jako `wewnętrzny`. **Powód:** tylko fabryka powinna wywoływać ten konstruktor. `internal` zapewnia, że żadne inne warstwy nie mogą go utworzyć (warstwy są oddzielone projektami VS). 2. Metoda `CompanyFactory.CreateNew(string name)` zostałaby użyta podczas tworzenia nowej firmy w systemie. **Powód:** ponieważ nie zostałby jeszcze utrwalony, trzeba będzie dla niego wygenerować nową unikatową tożsamość (za pomocą `IIdentityFactory`). 3. Metoda `CompanyFactory.CreateExisting(int id, string name)` będzie używana przez `CompanyRepository` podczas pobierania elementów z bazy danych. **Powód:** model miałby już tożsamość, więc trzeba ją dostarczyć do fabryki. 4. Element `CompanyMapper.MapFrom(CompanyTable dataEntity)` będzie używany przez `CompanyRepository` podczas pobierania danych z trwałości. **Powód:** tutaj jednostki danych Entity Framework muszą być zmapowane na modele domeny. Zakładka `FirmaFactory` zostanie użyta do stworzenia modelu domeny, aby zapewnić spełnienie reguł biznesowych. 5. Plik `CompanyMapper.MapFrom(Company domainEntity)` będzie używany przez `CompanyRepository` podczas dodawania lub aktualizowania modeli do trwałości. **Przyczyna:** modele domeny muszą być mapowane bezpośrednio na właściwości jednostki danych, aby Entity Framework mógł rozpoznać, jakie zmiany należy wprowadzić w bazie danych. Dziękuję


title: Jak rozwiązać ten problem – Sieć neuronowa? Zamazany? Inny?

text: Cześć Mam problem programistyczny, który chciałbym rozwiązać za pomocą techniki sztucznej inteligencji. Naprawdę nie wiem od czego zacząć. Potrzebuję wskazówek, jaką metodologię zastosować. Powiedzmy, że mam 10 000 zdjęć przypadkowych osób i muszę wykryć na zdjęciach osoby starsze. Mogę mieć algorytmy, takie jak wykrywacz zmarszczek, wykrywacz okularów, wykrywacz laski, wykrywacz brakujących zębów, wykrywacz deskorolek, wykrywacz Playstation itp. Każdy algorytm wykonuje skanowanie niezależnie i wyświetla liczbę od 0 do 10 według prawdopodobieństwa, że uzna, że obraz zawiera to przedmiot. Załóżmy, że to działa. Może istnieć 100 różnych algorytmów. Mój zestaw 10 000 zdjęć zostałby podzielony przez człowieka na dwie grupy, te, które zawierają osobę starszą i te, które nie zawierają. Teraz muszę opracować system, który pobiera szereg wartości z modułów algorytmu, gdy otrzymam obraz do analizy i oblicza pojedynczą wartość, która reprezentuje prawdopodobieństwo, że obraz zawiera osoby starsze, czy nie. Podczas szkolenia chciałbym, żeby potrafił automatycznie budować reguły, analizując wszystkie wyjścia algorytmów. Na przykład: * Jeśli wykrywacz zmarszczek, wykrywacz okularów, wykrywacz laski chodzącej i wykrywacz brakujących zębów, wszystkie generują wysoką liczbę, a następnie wyświetlają wysoką liczbę. * Jeśli detektory zmarszczek, okularów, laski i zębów są wysokie, ale detektory playstation i deskorolka też są wysokie, to wydajność nie jest ani niska, ani wysoka. * wykrywacz rąk i wykrywacz ubrań powinny być zasadniczo ignorowane, ponieważ zarówno starsi, jak i młodzi ludzie je mają (miejmy nadzieję). Jaki rodzaj technologii powinienem wdrożyć dla automatycznego systemu budowania reguł? Czy lepiej to rozwiązuje system sieci neuronowej? System logiki rozmytej? Coś innego? Dzięki za jakąkolwiek radę.


title: Scrum: Pisanie czasu potrzebnego na wykonanie zadania

text: W mojej organizacji, gdy przenosimy zadanie do kolumny „Gotowe”, piszemy, ile godzin zajęło wykonanie zadania. Może to być przydatne, gdy podczas retrospektywy zespół stara się zrozumieć, dlaczego wdrożenie niektórych historii zajęło więcej czasu niż oczekiwano. Jest to jednak również uciążliwe, a deweloperzy czują się nieco mikrozarządzani lub zestresowani, gdy muszą to zrobić. Co robisz w swoich zespołach? Co polecasz?


title: Czy praktykując kolektywną własność kodu, mogą być eksperci od każdego komponentu?

text: Rozważ złożony i rozbudowany komponent oprogramowania; na przykład wielojęzyczny silnik renderujący tekst, framework IPC, harmonogram, który może obsługiwać wiele stref czasowych, moduł pełen zawiłości spowodowanych koniecznością zachowania kompatybilności wstecznej itp. Wymaga dużej znajomości szczegółów utrzymanie i rozszerzenie takiego komponentu bez wprowadzania błędów przy każdej zmianie kodu. Często pomocne jest poznanie historii błędów podczas otrzymywania nowego raportu o błędzie. Ponadto wymaga gruntownej wiedzy na temat projektu komponentu, aby móc zachować jego spójność po przyszłych rozszerzeniach, i dobrze jest znać przesłanki wcześniejszych decyzji projektowych. Można by próbować udokumentować tego rodzaju wiedzę, ale wymagałoby to dużo czasu i wysiłku, szybko stałaby się przestarzała, a przez to niewiarygodna. Co gorsza, każdy nadal musiałby mieć w pamięci tę pisemną dokumentację. Wydaje mi się, że w przypadku takich komponentów najlepiej mieć kogoś, kto ma dogłębną wiedzę, ponieważ nie można dogłębnie poznać i nadążyć za kodem produkowanym przez całą grupę ludzi bez nadmiernego narzutu na komunikację i naukę. Zastanawiam się, czy praktyka kolektywnej własności kodu pozwala na takich ekspertów, bo wydaje mi się, że wymagałoby to pewnego rodzaju „słabej własności kodu”. A jeśli nie: jak może odnieść sukces bez ogromnej ilości duplikatów pracy?


title: Wzorzec używany do powiązania wielu źródeł danych z różnymi widżetami danych użytkownika

text: Mam aplikację intranetową klient x serwer, która zasadniczo pobiera dane z serwera, formatuje je i wysyła te dane do klienta w celu wyświetlenia. Na serwerze korzystamy z ASP.NET C# uruchomionego na IIS, a na kliencie mamy widgety Javascript. Żądania klient x serwer są wykonywane przez wywołania ajax. Mam dużo (100+) obiektów serwerowych, które można wyświetlić w 10 różnych formatach w przeglądarce za pomocą różnych widżetów graficznych. Zasadniczo mamy więc następującą strukturę: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/JJLxc.png) Tak więc, dla każdego obiektu serwera, którego potrzebuję, w obiektach nnnWidgetDataGetter, aby wykonać pewne dane przekształcenie do formatu danych widżetu do wysłania do klienta. Każdy widżet może żądać danych ze wszystkich obiektów serwera. Używając normalnego podejścia, musiałbym napisać mnóstwo metod, po jednej dla każdej klasy podstawowej serwera razy każda klasa datagettera. Aby uniknąć pisania setek metod o podobnym zachowaniu, zdecydowaliśmy się zastosować podejście dynamiczne w klasach DataGetter (klasach statycznych), gdzie obiekt biznesowy jest oceniany w czasie wykonywania, z tego obiektu zbierane są dane, formatowane i wysyłane do klienta. Problem polega na tym, że używając dynamicznego tworzenia i wywoływania obiektów tracimy Intellisense, więc kod staje się bardzo duży i trudny do zrozumienia i utrzymania. Po pewnym czasie odkryliśmy, że nie stosujemy właściwego podejścia i zaczęliśmy myśleć o wzorcach sw, które pomogłyby nam rozwiązać ten problem. Więc szukamy właściwego wzorca, aby rozwiązać ten problem, który zachowałby typową strukturę, w której mógłby działać Intellisense i który pozwoli uniknąć napisania setek różnych metod. Bardzo doceniamy każdą pomoc.


title: Jak kierować wiadomości między klientami za pomocą centralnego serwera w Pythonie?

text: W pobliżu stoją trzy Raspberry Pis. Chcę, aby 2 z nich mogło rozmawiać, podczas gdy trzeci przekierowuje wiadomości (działa jako serwer między nimi). Ogólny przebieg zdarzeń powinien wyglądać mniej więcej tak: * Serwer zaczyna działać na Pi #1 * Pi #2 zaczyna działać i łączy się z serwerem (którego adres IP będzie, jak sądzę, statyczny) z wybraną przez niego nazwą. Pi #3 robi to samo co #2. * Pi #3 może wtedy, znając nazwę Pi #2, wysłać wiadomość do Pi #2 używając... czegoś. To jest ogólny zarys tego, co chcę osiągnąć. Nie jestem pewien, jaki powinien być serwer działający na Pi #1 (słyszałem o frameworkach serwerowych, takich jak Flask, ale nie mam wystarczającej wiedzy, aby określić, czy pasują do moich potrzeb). Nie jestem też pewien, czego powinienem używać po stronie klienta (Pi #2,3). Prawdopodobnie mógłbym użyć gniazdek, ale zakładam, że jest lepszy/łatwiejszy sposób.


title: Czy licencje na oprogramowanie (tj. MIT) muszą być dołączone do pliku wykonywalnego?

text: Ilekroć licencja na oprogramowanie brzmi: `... Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu powinny być dołączone do wszystkich kopii lub istotnych części Oprogramowania.` Czy to oznacza, że musisz dołączyć je do pliku wykonywalnego (wersja, którą otrzymują klienci) lub tylko kod źródłowy (dla programistów)? Przepraszam, jeśli to głupie pytanie, ale nie określa jasno, do czego odnosi się „Oprogramowanie”, i widzę, że ludzie mogą chcieć za to podziękować. Jeśli nie musisz dołączać licencji do pliku wykonywalnego, czy musisz w jakiś inny sposób podać oznaczenie w swoim pliku wykonywalnym, na przykład w innym rodzaju informacji o prawach autorskich, która mówi po prostu „Prawa autorskie”? Czy jest do tego konkretny format?


title: Wyszukiwanie zakresu z WebGL

text: Czy można w jakiś sposób wykorzystać WebGL, aby przyspieszyć wyszukiwanie w zakresie 1d? Muszę znaleźć nakładające się interwały dat i pomyślałem, że gry 3d zwykle mają bardzo podobny problem z renderowaniem klatek... _Czytam drzewa interwałów jako alternatywę, jeśli ten pomysł nie działa, ale jestem otwarty na sugestie... Btw . jeśli stackoverflow byłby lepszym miejscem na to pytanie, daj mi znać!_


title: Substytucja Liskov i klasy abstrakcyjne / wzorzec strategii

text: Staram się podążać za LSP w praktycznym programowaniu. I zastanawiam się, czy naruszają to różne konstruktory podklas. Byłoby wspaniale usłyszeć wyjaśnienie, a nie tylko tak/nie. Dzięki wielkie! PS Jeśli odpowiedź brzmi „nie”, jak mogę tworzyć różne strategie z różnymi danymi wejściowymi bez naruszania LSP? class IStrategy { public: virtual void use() = 0; }; class FooStrategy : public IStrategy { public: FooStrategy(A a, B b) { c = /* niektóre operacje z a, b */ } virtual void use() { std::cout << c; } prywatny: C c; }; class BarStrategy : public IStrategy { public: BarStrategy(D d, E e) { f = /* niektóre operacje z d, e */ } virtual void use() { std::cout << f; } prywatne: F f; };


title: Jak przechowywać prawa dostępu opartego na rolach w aplikacji internetowej?

text: Obecnie pracuje nad internetowym systemem typu CRM, który zajmuje się różnymi modułami takimi jak firmy, kontakty, projekty, podprojekty itp. Typowy system typu CRM (formularz webowy asp.net, C#, backend SQL Server). Planujemy wdrożyć zabezpieczenia oparte na rolach, aby zasadniczo użytkownik mógł mieć jedną lub więcej ról. Role zostaną podzielone według typu modułu, na przykład: -Firma -Kontakt A następnie według działań dla tego modułu, na przykład, każdy moduł otrzyma tabelę taką jak ta: Rola1 Przykład: Moduł Utwórz Edytuj Usuń Wyświetl Firma Tak Właściciel Tylko Nie Tak Kontakt Tak Tak Tak Tak W powyższym przypadku „Role1” ma dwa typy modułów (Firma i Kontakt). W przypadku firmy osoba przypisana do tej roli może tworzyć firmy, może przeglądać firmy, może tylko edytować utworzone przez siebie rekordy i nie może usuwać. W tej samej roli dla modułu kontakt ten użytkownik może tworzyć kontakty, edytować kontakty, usuwać kontakty i przeglądać kontakty (w zasadzie pełne prawa). Zastanawiam się, czy najlepiej po wejściu do systemu sesję roli użytkownika z czymś w rodzaju: `List<Role> role;` Gdzie klasa `Role` miałaby jakieś moduły `List<Module>;` (może zawierać Firmę, Kontakt itp.).? Coś w efekcie: class Role{ nazwa ciągu; opis ciągu; Lista modułów <moduł>; } A klasa akcji modułu miałaby zestaw akcji (Create, Edit, Delete, itd.) dla każdego modułu: class ModuleActions{ List<Action> actions; } A akcja ma wartość określającą, czy użytkownik może wykonać to prawo: class Action{ string right; } Tylko przybliżony pomysł, wiem, że akcja może być enum, a ModuleAction można prawdopodobnie wyeliminować za pomocą `List<x, y>`. Moje główne pytanie brzmi, jaki byłby najlepszy sposób przechowywania tych informacji w tego typu aplikacji: Czy powinienem przechowywać je w stanie sesji użytkownika (mam klasę sesji, w której zarządzam rzeczami związanymi z użytkownikiem). Zwykle ładuję to podczas początkowego ładowania aplikacji (global.asax). Mogę po prostu przyłączyć się do tej sesji. Czy może to być ładowane przy zdarzeniu ładowania strony każdego modułu (ładowanie strony firmy itp.). W końcu muszę być w stanie ukryć / odkryć różne przyciski / elementy div w oparciu o rolę użytkownika i to skłoniło mnie do myślenia, aby załadować to za pośrednictwem sesji. Wszelkie przykłady lub punkty byłyby świetne.


title: Android z lokalnej bazy danych (DAO) do synchronizacji serwera (JSON) — problem z projektem

text: Synchronizuję dane między moją lokalną bazą danych a serwerem. Szukam najczystszego sposobu na wymodelowanie tego wszystkiego. Mam pakiet com.something.db, który zawiera pomocnika danych i kilka klas DAO reprezentujących obiekty przechowywane w db (nie napisałem tej części) com.something.db --public DataHelper --public Pracownik @DatabaseField np. "name" będzie rzeczywistą nazwą kolumny w bazie danych -name @DatabaseField -salary etc... (wszystkie we wszystkich 50 polach) Mam pakiet com.something.sync, który zawiera wszystkie szczegóły implementacji dotyczące wysyłania danych do serwer. Sprowadza się to do menedżera połączeń, który jest zasilany przez różne klasy, które implementują interfejs 'Request' com.something.sync --public interface ConnectionManager --package ConnectionManagerImpl --public interface Request --package LoginRequest --package GetEmployeesRequest Mój problem to: w pewnym momencie procesu synchronizacji muszę JSONise i de-JSONise moje dane (np. klasa Employee). Ale naprawdę nie mam ochoty, aby ta sama klasa Employee była odpowiedzialna zarówno za jego JSONizację, jak i jego rzeczywistą reprezentację w lokalnej bazie danych. To naprawdę nie jest w porządku, ponieważ starannie oddzieliłem resztę, utknąłem tylko w tej sprawie JSON. Co powinienem zrobić ? Czy powinienem napisać 3 zajęcia dla pracowników? EmployeeDB @DatabaseField np. "name" będzie rzeczywistą nazwą kolumny w bazie danych -name @DatabaseField -salary -etc... 50 fields EmployeeInterface -getName -getSalary -etc... 50 fields EmployeeJSON -JSON_KEY_NAME = "name" Klucz JSON taka sama jak nazwa tabeli, ale nie jest wymagana -name -JSON_KEY_SALARY = "salary" -salary -etc... 50 pól Wydaje się, że jest dużo duplikatów. Czy istnieje wspólny wzór, którego mogę tam użyć?


title: Rozsądna liczba węzłów i krawędzi grafu ukierunkowanego

text: Ile węzłów grafu skierowanego jest zazwyczaj reprezentowanych w przeglądarce? Pracuję z dużymi zestawami danych z węzłami i krawędziami przekraczającymi 400 000. Zastanawiam się, czy idę bezowocną ścieżką, próbując reprezentować je w przeglądarce za pośrednictwem arbor.js lub podobnych bibliotek JS. Jaki jest najskuteczniejszy sposób umożliwienia dużej liczbie (w porównaniu z moją domeną transakcji dotyczących nieruchomości, może 1-10.000) użytkowników wizualizacji i przeglądania dużego ukierunkowanego wykresu zawierającego do 500 000 rekordów?


title: Nie rozumiem, dlaczego algorytmy są takie wyjątkowe

text: Jestem studentką informatyki i staram się w wolnym czasie chłonąć jak najwięcej informacji na ten temat. Ciągle wracam do algorytmów w różnych formatach (kurs online, książka, samouczek internetowy), ale koncepcja nie przykuwa mojej uwagi. Po prostu nie rozumiem: dlaczego algorytmy są tak wyjątkowe? Mogę ci powiedzieć, dlaczego fraktale są niesamowite, dlaczego złoty podział jest niesamowity, dlaczego origami jest niesamowite i jakie są naukowe zastosowania tego wszystkiego. Cholera, nawet uwielbiam prawa Newtona i sekcje stożkowe. Ale jeśli chodzi o algorytmy, po prostu się nie dziwię. W ogóle nie są wnikliwi w nowe sposoby ludzkiego poznania. Spodziewałem się, że algorytmy będą niszczyć uprzedzenia i zmieniać umysły, ale raz za razem zawodzą. Być może robię coś złego w swoim podejściu. Czy ktoś może mi powiedzieć, dlaczego algorytmy są tak ważne w programowaniu?


title: Czy powinieneś tworzyć prywatne nieruchomości?

text: prywatny ciąg mCokolwiek; private string Cokolwiek { get { return this.mWhatever; } ustaw { this.mCokolwiek = wartość; } } Widziałem ludzi, którzy tworzą właściwości dla każdego członka, prywatnego lub nie... czy to ma jakiś sens? Widziałem, że ma to sens w 1% przypadków, w których chcesz kontrolować dostęp do elementu członkowskiego wewnątrz klasy go zawierającej, ponieważ jeśli nie użyjesz właściwości dla każdego elementu członkowskiego, doprowadziłoby to do niespójności i sprawdzenia, czy członek ma dostęp lub nie (ponieważ masz dostęp do obu w zakresie klasy).


title: Najlepsze praktyki dotyczące stałych

text: Jak radzicie sobie ze stałymi, zwłaszcza w Javie (statyczny finał) i C++ (definicja)? * Czy używasz dedykowanych nagłówków (C++) czy klas (Java) dla wszystkich stałych? * Czy przekształcasz wszystkie wartości dosłowne w stałe, czy tylko te, których chcesz używać w wielu miejscach? To chyba trochę subiektywne, więc szczególnie interesują mnie powody twojego podejścia.


title: Modelowanie relacji aplikacja/komisja studencka

text: Opracowuję ERD dla programu dla absolwentów studiów menedżerskich (to jest dla klasy uniwersyteckiej, więc jest to dość banalna implementacja). W tym fragmencie modelu próbuję opracować encje/relacje „aplikacji” i „komitetu”. Zasadniczo komisja - składająca się z pracowników - może zostać utworzona i przypisana do przeglądu wniosku. Oto encje, które wymyśliłem: * **wniosek:** Składa się z danych aplikacyjnych studenta przesłanych za pomocą formularza (identyfikator studenta, data złożenia, stopień, itp.). * **Komisja:** Nie wymaga wyjaśnień. Grupa pracowników, którzy mogą przeglądać wnioski. * **staff_member:** Każdy członek wydziału. * **committee_membership:** Jednostka asocjacyjna, którą stworzyłem, aby rozwiązać relację wiele-do-wielu między komitetem a członkiem personelu, ponieważ komitet może mieć wielu członków personelu, a członek personelu może należeć do wielu komitetów. Czy to skuteczna realizacja tego, co staram się zrobić? Wciąż staram się owijać głową wokół bytów asocjacyjnych i kiedy są potrzebne. Wydaje się dziwne, że tabela „komitetu” składa się z jednej kolumny. Poza tym – wiem, że przekazałem ci ograniczone informacje – czy moje relacje wyglądają ogólnie poprawnie? ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/6fo25.png)


title: Jak datomowy radzi sobie z „poprawkami”?

text: **tl;dr** * Rich Hickey opisuje datomic jako system, który pośrednio zajmuje się znacznikami czasu związanymi z przechowywaniem danych * z mojego doświadczenia, dane są często niedokładnie przechowywane w systemach i w wielu przypadkach muszą być poprawione z mocą wsteczną (tj. pytanie „czy było prawdą we wtorek o 12:00?” będzie zawierało nieprawidłową odpowiedź w bazie danych) To wydaje się być miejscem, w którym abstrakcje stojące za datomic mogą się zepsuć – prawda? Jeśli nie, to jak system radzi sobie z takimi poprawkami? * * * Rich Hickey w kilku swoich wystąpieniach uzasadnia stworzenie datomiczne i wyjaśnia jego zalety. Jego praca, jeśli dobrze rozumiem, jest motywowana rdzennym wglądem, że ludzie, mówiąc o danych i faktach, bezwarunkowo łączą niektóre z powiązanych kontekstów ze swoją pracą (data-godzina). Przesuwając do bazy danych pracę wymaganą do zarządzania niejawnym komponentem daty i czasu kontekstu, stworzył system, który jest zarówno dużo łatwiejszy do zrozumienia, jak i łatwiejszy do zaprogramowania. W praktyce okazuje się to istotne dla większości programistów baz danych - jego praca pozwala zaoszczędzić wiele czasu na zarządzaniu złożonymi, trudnymi do wyprodukowania/debugowania/naprawienia zapytaniami czasowymi. Jednak, zwłaszcza w dużych bazach danych, dane są często uszkodzone/niepoprawne (może nie zostały wprowadzone poprawnie, może z czasem uległy erozji itp.). Podczas gdy większość aktualizacji baz danych to wstawianie nowych faktów i rzeczywiście powinno być traktowane w ten sposób, nietrywialny podzbiór pracy wymaganej do zarządzania zapytaniami czasowymi ma związek z aktualizacjami z mocą wsteczną. Nie widziałem jeszcze żadnej dokumentacji, która wyjaśniałaby, jak takie poprawki lub aktualizacje wsteczne są obsługiwane przez datomic; Z mojego doświadczenia wynika, że są one nietrywialną (i niezwykle trudną do pokonania) podzbiorem manipulacji danymi związanymi z czasem, z którymi mają do czynienia programiści baz danych. Czy datom z wdziękiem radzi sobie z takimi aktualizacjami? Jeśli tak to jak?


title: Proces resetowania hasła

text: Pracuję więc nad moim pierwszym mechanizmem resetowania hasła. Przechodzę do tego, co rozumiem jako dość powszechną procedurę: 1. Użytkownik klika „Zapomniałem hasła” 2. Użytkownik jest proszony o podanie adresu e-mail 3. Jeśli wprowadzony adres e-mail jest prawidłowy, wyślij e-mail z linkiem do resetowania do niego 4. Link do resetowania używa pewnego rodzaju tokena do identyfikacji konta użytkownika i zabezpieczenia jego danych 5. Po zresetowaniu hasła wygeneruj nowy token i zapisz go na koncie użytkownika. Czuję, że powinno to być całkiem bezpieczne, ale byłem Zastanawiam się, czy ktoś mógłby przedstawić jakieś spostrzeżenia, których być może nie rozważam w tym momencie.


title: Dobra nazwa dla ValueObject, który zawiera aktualizowanie bazy danych/tworzenie wartości kolumn

text: Wszyscy znamy te pola, administratorzy baz danych lubią dodawać: * UserCreated i DateCreated * UserUpdated i DateUpdated Muszą być wyświetlane w interfejsie użytkownika, więc chcę je umieścić w jakimś `ValueObject`, ale nie mogę wymyślić dobrego nazwa, aby zadzwonić do klasy...


title: Wzorzec budowniczego: kiedy zawieść?

text: Wdrażając Wzorzec Budowniczego, często mylę się, kiedy pozwolić, by budowanie się nie powiodło, a nawet co kilka dni udaje mi się zająć inne stanowisko w tej sprawie. Najpierw kilka wyjaśnień: * Z _failing early_ mam na myśli, że budowanie obiektu powinno zakończyć się niepowodzeniem, gdy tylko zostanie przekazany nieprawidłowy parametr. Więc wewnątrz `SomeObjectBuilder`. * Przez _nieudane opóźnienie_ mam na myśli, że budowanie obiektu może się nie powieść tylko w przypadku wywołania `build()`, które niejawnie wywołuje konstruktor obiektu, który ma zostać zbudowany. Następnie kilka argumentów: * Na korzyść późnego niepowodzenia: Klasa konstruktora nie powinna być niczym więcej niż klasą, która po prostu przechowuje wartości. Co więcej, prowadzi to do mniejszej duplikacji kodu. * Na korzyść wczesnego niepowodzenia: Ogólne podejście w programowaniu polega na tym, że chcesz wykrywać problemy tak wcześnie, jak to możliwe, a zatem najbardziej logicznym miejscem do sprawdzenia jest konstruktor klasy konstruktora, „settery” i ostatecznie metoda kompilacji . Jaki jest ogólny konsensus w tej sprawie?


title: Najlepszy sposób na ponowne wykorzystanie wspólnych funkcji między stronami ASPX?

text: Mam kilka funkcji, które są używane w wielu plikach ASPX. Chcę je skondensować do jednego pliku, który będzie używany dla wszystkich plików ASPX. Mam kilka pomysłów, ale chcę wiedzieć, jaka byłaby przyjęta metoda na zrobienie tego. Mam pomysł, aby po prostu stworzyć klasę, w której będą je umieszczać. Zastanawiałem się jednak, czy mógłbym je umieścić na stronie ascx, ale to nie wygląda na rozwiązanie, którego szukam. Czy istnieje akceptowana metoda dla tego typu sytuacji?


title: Programowanie sportowe

text: Poza programowaniem jestem uzależniony od sportu. Chciałbym połączyć te dwie rzeczy razem. Jakich języków programowania używają firmy takie jak ESPN do pracy ze statystykami? Jakie techniki są do tego wykorzystywane i jak mogę to zrobić sam?


title: Czy algorytm śledzenia promieni obejmuje rasteryzację obrazu?

text: Konstruuję algorytm ray tracingu, wiem, że pierwszym krokiem jest opracowanie specyfikacji kamery i płaszczyzny widoku. Czy następnym krokiem jest wykonanie algorytmu rasteryzacji na obrazie przed skonstruowaniem drzewa BVH, aby można było przeprowadzić testy przecięcia? Uprzejmy przewodnik


title: Jak ustrukturyzować projekt, który obsługuje wiele wersji usługi?

text: Mam nadzieję na kilka wskazówek dotyczących tworzenia projektu (ASP.NET MVC, ale myślę, że to nie ma znaczenia) przeciwko wielokrotnym wersjom usługi (w tym przypadku faktycznie wielu zestawom usług WCF). Obecnie aplikacja internetowa korzysta tylko z niektórych usług, ale ostatecznym celem byłoby korzystanie z funkcji wszystkich usług. Kod użyty do zaimplementowania funkcji usługi byłby prawdopodobnie bardzo podobny między wersjami w większości przypadków (ale oczywiście wszystko się różni). Jak więc ustrukturyzowałbyś taki projekt? Oddzielne gałęzie kontroli źródła dla każdej innej wersji? Trochę się przed tym uciekam, ponieważ nie wydaje mi się, że łączenie gałęzi powinno być czymś, co będziemy robić naprawdę często. Różne pliki projektów/rozwiązań w tej samej branży? Czy można łatwo połączyć te same współdzielone projekty Zbudować pewien rodzaj warstwy abstrakcji na wierzchu usług, tak aby bez względu na to, z jakiej usługi korzystamy, jest ona taka sama dla aplikacji internetowej?


title: Jakie są tak zwane „poziomy” rozumienia wielowątkowości?

text: Wydaje mi się, że pamiętam, jak czytałem gdzieś listę 4 „poziomów” rozumienia wielowątkowości. To _mógł_ być w formalnej publikacji lub _mógł_ być w bardzo nieformalnym kontekście (nawet jak na przykład w pytaniu Stack Overflow). Niestety nie pamiętam, kto się do nich odwoływał, a właściwie czym były. Przypominam sobie, że były one z grubsza takie jak: 1. Całkowita ignorancja 2. Świadomość połączona z niekompetencją 3. Względna kompetencja połączona ze strachem 4. Prawdziwe zrozumienie Moim zamiarem jest odniesienie się do tych poziomów w pisanym przeze mnie poście na blogu odniesienie; ale nie pamiętam, gdzie po raz pierwszy spotkałem się z tą listą. Krótkie wyszukiwania w Google okazały się bezowocne.


title: Używasz π, φ, λ itp. jako nazw zmiennych podczas programowania?

text: Jest to funkcja w pliku d3.v3.js (biblioteka grafów D3.js): function d3_geo_areaRingStart() { var λ00, φ00, λ0, cosφ0, sinφ0; d3_geo_area.point = function(λ, φ) { d3_geo_area.point = nextPoint; λ0 = (λ00 = λ) * d3_radiany, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ); }; function nextPoint(λ, φ) { λ *= d3_radiany; φ = φ * d3_radiany / 2 + π / 4; var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ); d3_geo_areaRingSum.add(Math.atan2(v, u)); λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ; } d3_geo_area.lineEnd = function() { nextPoint(λ00, φ00); }; } Byłem całkowicie zaskoczony, że programiści używali π, φ i λ jako nazw zmiennych. Co zaskakujące, te zmienne zostały zaakceptowane nawet przez Notatnik (tj. nie zamienił się w śmieci/nierozpoznane znaki). Czy stosowanie takich zmiennych jest dobrą praktyką? Widzę, że są też bardzo intuicyjne i łatwe do przeszukiwania, ale trochę niepokojące.


title: Wydanie oprogramowania jednym kliknięciem

text: Przepisuję instalator vb6 do NSIS. Jednym z moich priorytetów jest kompilacja do wydania w najmniejszej możliwej liczbie kroków; najlepiej jest to proces jednego kliknięcia, w którym wszystkie potrzebne pliki są dołączane, rejestrowane i umieszczane w odpowiednich folderach. W tej chwili tworzę kilka folderów. Jeden dla plików app_path, jeden dla plików system_files itp. Tak więc za każdym razem, gdy plik jest modyfikowany lub dodawany nowy plik, po prostu upuszczam go we właściwym folderze i ponownie kompiluję. Jeśli jednak dołączony jest zupełnie nowy plik, kroki takie jak rejestracja biblioteki DLL nadal muszą być zaimplementowane w kodzie. Jakieś sugestie, jak ulepszyć to podejście? lub jak zaprojektować proces kompilacji do wydania jednym kliknięciem? EDYCJA: Oryginalny instalator został utworzony za pomocą kreatora Package and Deployment z Visual Basic 6.0. Za każdym razem, gdy potrzebuję wydać oprogramowanie, sam aktualizowałem i dodawałem pliki, aktualizowałem odpowiedni plik lst i przepakowywałem wszystko (pliki CAB, dll itp.) do jednego pliku exe, aby zwolnić go z naszej strony internetowej. To uciążliwy proces. Dodatkowo ze względu na czysty design. Oryginalne oprogramowanie zostało skopiowane i wklejone w kilku projektach, tworząc kilka aplikacji i odpowiednich instalatorów VB6 (powtarzając wiele typowych plików). Najlepiej byłoby, gdyby istniał jeden instalator, który umożliwiałby instalację różnych plików wykonywalnych i zarządzałby wszystkimi współdzielonymi plikami.


title: Jaka jest różnica między `aktualizacją` a `uaktualnieniem`

text: Jaka jest różnica między „aktualizacją” a „uaktualnieniem” w kontekście oprogramowania aplikacji?


title: Wolność słowa a bezpieczeństwo komputera

text: Latem znalazłem ciasteczko umieszczone na moim komputerze przez sieć szkolną, które wydawało mi się, że może stanowić problem. Przechowywał informacje uwierzytelniające i (krótko mówiąc) odkryłem, że jeśli umieścisz łatwo dostępne informacje innych osób, zostaniesz zalogowany jako oni. Powoli, ale pewnie, odkryłem 3 exploity bezpieczeństwa, które podczas wspólnej pracy naruszyły WSZYSTKIE zabezpieczenia na stronie. Teoretycznie mógłbym zalogować się jako nauczyciel, uzyskać dostęp do poczty e-mail dowolnego ucznia (z możliwością wysyłania), dostosować wszystkie oceny, cokolwiek chciałem zrobić, mogłem zrobić. Od tego czasu naprawili ten błąd, nie tylko plik cookie zniknął, ale witryna została zastąpiona fundamentem Microsoft Sharepoint zamiast ich własnym systemem. Nie badałem tego, aby skorzystać z exploita. Zrobiłem to, ponieważ te wyczyny pozwoliłyby na oglądanie MOICH informacji przez KAŻDEGO, ucznia szkoły lub nie. Poszedłem więc do działu IT mojej szkoły, żeby to naprawili. Zrobili to i prawie miesiąc po naprawie postanowiłem napisać dwustronicowy artykuł na moim blogu. Dodałbym teraz link do tej strony, z wyjątkiem tego, że szef działu IT poprosił o usunięcie strony. Twierdzi, że ustaliliśmy, że nigdy nie porozmawiam o exploitie z nikim spoza IT. Wiem, że nigdy się na to nie zgodziłem, ponieważ od początku chciałem wziąć kredyt za moje 3-4 tygodnie ciężkiego śledztwa i pracy, w pełni zamierzałem powiedzieć ludziom o problemie. Swój artykuł napisałem z dyskrecją. Nigdy nie wymieniłem nazwy szkoły i zawierała bardzo mało subiektywnej treści, przede wszystkim chodziło o to, jak znalazłem exploity, czym one były i jak można je było wykorzystać. Pomysł polegał na tym, że gdybym opowiedział o tym z punktu widzenia odkrywcy, pokazałoby to wgląd w to, jak rozwijać się przeciwko niemu. Szkoła bardzo doceniła to, że nie wykorzystałem tych exploitów i że przyszedłem prosto do nich z zamiarem ich naprawienia. Bloguję tylko o koncepcjach Software Development. Znajdowanie luk w zabezpieczeniach na wolności to idealny temat na mój blog. Poza tym chcę wyrobić sobie markę w świecie cyberbezpieczeństwa, Bruce Schneier połączył mnie z artykułem na swoim blogu mówiącym o tym, jak jeśli chcesz wyrobić sobie markę w świecie cyberbezpieczeństwa, musisz złamać szyfry, znaleźć dziury w zabezpieczeniach i napraw je, i tak dalej. Krótko mówiąc, uważam, że zasługuję na uznanie za ciężką pracę, którą wykonałem, uważają, że wizerunek szkoły jest ważniejszy, mimo że luka w zabezpieczeniach jest więcej niż naprawiona. Jaki jest najlepszy sposób, aby uzyskać tutaj mój kredyt? W międzyczasie opublikowałem pseudoocenzurowaną wersję. AKTUALIZACJA: koniec z pseudoocenzurowaną wersją, właśnie opublikowałem nowy artykuł, który jest trochę bardziej niejednoznaczny, nawet jeśli chodzi o szkołę. Nowy artykuł można znaleźć tutaj.


title: Jaki algorytm stosują przeglądarki, aby zapamiętać wartości kontrolek formularzy?

text: Możesz mieć różne elementy „input” HTML w jednym „formularzu” HTML i wszystkie z nich mają powiązane zapamiętane wartości (wartości, które wpisałeś w tych polach); Czy jest powiązany z atrybutem „id” lub „name” elementu „input”? Brak dowodów? Twój adres e-mail pojawia się w wielu elementach „input” na różnych stronach internetowych, a wszystkie te pola mają różne atrybuty „id” i „name”. Więc jest tu tajemnica, której nie rozumiem. Jak przeglądarki zapamiętują wartości kontrolek formularzy HTML? Jaki jest algorytm? Skąd wiedzą, że powinni wyświetlać Twój e-mail w kontrolce _this_, a nie _that_, podczas gdy kontrolki są elementami HTML `input type=text`?


title: Różnica między tabelami wyszukiwania wstecznego a tabelami tęczy

text: Używając tabel wyszukiwania wstecznego, tworzysz tabelę przeglądową składającą się z hashów haseł kont użytkowników. Następnie używasz innej tabeli, która składa się z hashów z odgadniętymi hasłami. Następnie porównujesz te dwa, aby sprawdzić, czy zaszyfrowane hasło zhakowanego konta użytkownika pasuje do zaszyfrowanego hasła w tabeli wyszukiwania. Korzystanie z Rainbow Tables wydaje się być tą samą techniką, z wyjątkiem tego, że tabela przeglądowa jest mniejsza, dzięki czemu można je szybciej przeszukiwać. Jaka jest prawdziwa różnica między tabelami wyszukiwania wstecznego a tabelami tęczy?


title: Co to za termin oznaczający „utrzymywanie jak najbardziej zbliżonych argumentów dla różnych wywołań API”?

text: Jest słowo, którego nigdy nie pamiętam... wyraża cel projektu, aby wywołania API (lub funkcje, metody lub cokolwiek) były jak najbardziej podobne w swoich wzorcach argumentów. Może również obejmować nazewnictwo. Innymi słowy, jeśli wszystkie inne rzeczy są takie same, prawdopodobnie źle jest mieć te trzy funkcje: deleteUser(email) petRemove(petId,gatunek) destroyPlanet(planetName,starName) jeśli zamiast tego możesz mieć deleteUser(userId) deletePet(petId) deletePlanet (planetId) Jakie jest słowo na tę koncepcję? Ciągle myślę, że jest „ortogonalny”, ale zdecydowanie nie jest. Jest to bardzo ważna koncepcja i dla mnie jest to jedna z największych rzeczy, które sprawiają, że praca z niektórymi interfejsami API jest przyjemnością (ponieważ gdy nauczysz się kilku rzeczy, możesz praktycznie używać wszystkiego bez patrzenia na doco), a inne są uciążliwe (ponieważ każda funkcja jest wykonywana niekonsekwentnie).


title: Czy wszystkie problemy programistyczne to problemy z algorytmem?

text: Podoba mi się „Wprowadzenie do algorytmów” Cormena i in. przekazuje wiedzę. Jednym z powodów jest to, że wszystko ma związek z problemami programistycznymi, a książka nie jest zaimplementowana w żadnym konkretnym języku programowania. Ta niezależność językowa zapewnia ogólną koncentrację na pomysłach. Więc moje pytanie brzmi, jak mówi tytuł. Czy każdy rozwiązywalny problem programistyczny można rozwiązać, myśląc w ten algorytmiczny sposób. Bez względu na język, dziedzinę itp ? Jeśli tak, daj argumenty, w przeciwnym razie daj argumenty! Nie wdrażałem wielu skomplikowanych programów z GUI, AI, grafiką itp... Ale czy tego typu problemy to także kwestia wymyślenia dobrych algorytmów?


title: Używanie wersjonowanych obiektów/danych do obsługi zgodności wersji programu?

text: Czy istnieje powszechna nazwa praktyki przechowywania numeru wersji w swoich danych, aby różne wersje programu mogły identyfikować, na przykład, „bieżąca”, „starsza” i „zbyt stara, aby sobie z nią poradzić” wersje tego samego typu obiektu? Jak omówiono tutaj: Strategia wstecznej kompatybilności pamięci trwałej.


title: Czy istnieje kanoniczna dokumentacja referencyjna jUnit?

text: Nie mogę znaleźć żadnego kompletnego odniesienia do jUnit. Jedynym sposobem, w jaki udało mi się dowiedzieć o wszystkich funkcjach jUnit, jest sprawdzenie wszystkich informacji o wydaniu. Na przykład nie ma wzmianki o @Rules na oficjalnej stronie, chyba że policzysz posty na blogu. Ale do tego najpierw musisz wiedzieć, że istnieje funkcja, aby ją wyszukać. Czy istnieje kanoniczne odniesienie do jUnit? Jaka jest najlepsza metoda poznawania funkcji jUnit? Co próbowałem: * jUnit Cookbook \- Naprawdę podstawowe, bardzo mało omówionych funkcji * Oficjalne FAQ \- Obejmuje więcej, ale nie ma @Rules ani niczego tam omówionego. Ostatnia aktualizacja w 2006 r.


title: Kto powinien sterować nawigacją w aplikacji MVVM?

text: Przykład #1: Mam widok wyświetlany w mojej aplikacji MVVM (użyjmy Silverlight do celów dyskusji) i klikam przycisk, który powinien przenieść mnie do nowej strony. Przykład #2: Ten sam widok ma inny przycisk, który po kliknięciu powinien otworzyć widok szczegółów w oknie potomnym (oknie dialogowe). Wiemy, że pojawią się obiekty Command wyeksponowane przez nasz ViewModel, powiązane z przyciskami za pomocą metod reagujących na kliknięcie użytkownika. Ale co wtedy? Jak realizujemy akcję? Nawet jeśli korzystamy z tak zwanej usługi nawigacyjnej, co to mówimy? Mówiąc bardziej szczegółowo, w tradycyjnym modelu View-first (takim jak schematy nawigacji oparte na adresach URL, takie jak w Internecie lub wbudowanej strukturze nawigacji SL) obiekty Command musiałyby wiedzieć, jaki widok wyświetlić jako następny. Wydaje się to przekraczać granicę, jeśli chodzi o oddzielenie obaw promowanych przez wzorzec. Z drugiej strony, jeśli przycisk nie był połączony z obiektem Command i zachowywał się jak hiperłącze, reguły nawigacji można było zdefiniować w znacznikach. Ale czy chcemy, aby widoki kontrolowały przepływ aplikacji i czy nawigacja nie jest tylko kolejnym rodzajem logiki biznesowej? (Mogę powiedzieć tak w niektórych przypadkach, a nie w innych). Dla mnie utopijną implementacją wzorca MVVM (a słyszałem, jak inni to przyznają) byłoby okablowanie ViewModel w taki sposób, aby aplikacja mogła działać bez głowy (tj. brak widoków). Zapewnia to największą powierzchnię do testowania opartego na kodzie i sprawia, że widoki są prawdziwą skórą aplikacji. A mój ViewModel nie powinien dbać o to, czy jest wyświetlany w oknie głównym, ruchomym panelu czy w oknie podrzędnym, prawda? Zgodnie z tym podejściem, od jakiegoś innego mechanizmu w czasie wykonywania zależy „powiązanie” tego, jaki widok powinien być wyświetlany dla każdego modelu ViewModel. Ale co, jeśli chcemy udostępnić widok wielu ViewModelom lub odwrotnie? Biorąc więc pod uwagę potrzebę zarządzania relacją View-ViewModel, abyśmy wiedzieli, co wyświetlić, kiedy wraz z potrzebą nawigowania między widokami, w tym wyświetlania okien / okien dialogowych podrzędnych, jak naprawdę możemy to osiągnąć we wzorcu MVVM?


title: Sprzężenie semantyczne a duża klasa

text: Mam sprzęt, z którym komunikuję się przez TCP. Ten sprzęt akceptuje ~40 różnych poleceń/żądań z około 20 różnymi odpowiedziami. Utworzyłem klasę HardwareProxy, która _ma_ TcpClient do wysyłania i odbierania danych. Nie podobał mi się pomysł posiadania 40 różnych metod do wysyłania poleceń/żądań, więc zacząłem podążać ścieżką posiadania pojedynczej metody SendCommand, która przyjmuje ICommand i zwraca IResponse, co skutkuje 40 różnymi klasami SpecificCommand. Problem polega na tym, że wymaga to sprzężenia semantycznego, tj. Metoda wywołująca SendCommand otrzymuje IResponse, którą musi sprowadzić do SpecificResponse, ja używam przyszłej mapy, która moim zdaniem zapewnia odpowiednią SpecificResponse, ale mam wrażenie, że ten kod pachnie. Poza sprzężeniem semantycznym, ICommand i IResponse są zasadniczo pustymi klasami abstrakcyjnymi (interfejsy znaczników) i wydaje mi się to podejrzane. Jeśli pójdę z 40 metodami, nie sądzę, że złamałem zasadę pojedynczej odpowiedzialności, ponieważ obowiązkiem klasy HardwareProxy jest działanie jako sprzęt, który ma wszystkie te polecenia. Ta trasa jest po prostu brzydka, a dodatkowo chciałbym mieć wersje asynchroniczne, więc byłoby około 80 metod. Czy lepiej ugryźć kulę i mieć dużą klasę, zaakceptować sprzężenie i MarkerInterfaces dla mniejszego rozwiązania, czy też brakuje mi lepszego sposobu? Dziękuję. ## Możliwe rozwiązanie Na podstawie odpowiedzi DXM wymyśliłem to: struct Proxy { template<klasa C, klasa R> ICommand<C, R>* CreateCommand() { return new C(this); } void Send(std::string s) { //tcp wyślij tutaj na razie print nazwa polecenia cout << s << endl; } }; template<klasa Pochodna> struct IResponse {}; struct DerivedResponse1 : IResponse<DerivedResponse1> { std::string GetValue() { return "DerivedResponse1"; } }; template<pochodna klasa, odpowiedź klasy> struct ICommand { protected: Proxy* pProxy; public: Response* Send() { std::string msg = "Sent: " + static_cast<Derived*> (this)->GetName(); pProxy->Wyślij(wiadomość); //czekaj na przyszłość tutaj Response* pResponse = new Response; //zastąp wartością przyszłą return pResponse; } }; struct DerivedCommand1 : public ICommand<DerivedCommand1, DerivedResponse1> { DerivedCommand1(Proxy* pProxy) { this-> pProxy = pProxy; } std::string GetName() { return "DerivedCommand1"; } }; int main() { Proxy proxy; ICommand<DerivedCommand1, DerivedResponse1>* pDerivedCommand = proxy.CreateCommand<DerivedCommand1, DerivedResponse1>(); DerivedResponse1* pDerivedResponse = pDerivedCommand->Send(); cout << "Otrzymano:" << pDerivedResponse->GetValue() << endl; zwróć 0; } Jak to wygląda? Wygląda na to, że mogę nawet nie potrzebować interfejsu IResponse, będziemy musieli zobaczyć, kiedy go zaimplementuję. Zdaję sobie sprawę, że brakuje wielu ważnych rzeczy, takich jak przyszłość, ale najpierw chciałem pobrać szablony. Co myślisz o przekazywaniu proxy do polecenia? A co z wysyłaniem w ICommand, w przeciwieństwie do pisania go dla każdego polecenia? Czy naruszam jakiekolwiek inne zasady OO? Dziękuję.


title: Kodowanie praw użytkownika

text: Wyobraź sobie system, który ma wiele funkcji i liczbę użytkowników. Użytkownik musi mieć uprawnienia do określonej funkcji. Użytkownicy mogą należeć do grupy. Grupa może należeć do grupy. Na przykład, użytkownik A ma uprawnienia do funkcji 1 i 2. Użytkownik b ma uprawnienia do funkcji 2 i 3. Użytkownik A jest w grupie1, która ma uprawnienia do funkcji 3, ale jest negatywna, tj. wyraźnie odmówiono dostępu do funkcji 1. dodatkowa złożoność, być może funkcja ma prawa domyślne. Można więc powiedzieć, że domyślnie każdy ma dostęp do funkcji a lub nikt nie ma dostępu do funkcji a. Myślę, że to to samo, co posiadanie grupy Everybody. Więc pytanie brzmi, jak zarządzasz prawami użytkowników? Czy dodajesz wszystkie prawa do dodatków? Czy pozwalasz na wyraźne zaprzeczenie, o którym wspominam na końcu? Czy masz system, w którym przyznawany jest największy możliwy dostęp lub najmniejszy? Czy sprawiasz, że prawa użytkownika mają pierwszeństwo przed prawami grupowymi, czy odwrotnie? Widziałem wiele wariantów stosowania praw. Teraz definiuję swoje własne i naprawdę szukam jakiegokolwiek doświadczenia w tej dziedzinie, w którym chciałbyś zrobić coś innego lub byłeś zachwycony, że wybrałeś określony sposób działania. Dziękuję


title: Jak zostać profesjonalnym web developerem od programisty C/C++?

text: Obecnie jestem uczniem liceum i wiem, jak używać Pascala i C/C++, aby brać udział w konkursach, takich jak Olimpiada Informatyczna. Poznałem struktury danych i wiele algorytmów do rozwiązywania różnego rodzaju problemów. Teraz chcę przejść do zostania web developerem. Wiem jednak, że tworzenie stron internetowych różni się od programowania konkurencyjnego. Aby stworzyć aplikację internetową, muszę opanować HTML, bazy danych, programowanie back-end itp. Ale to wszystko wygląda jak oddzielne fragmenty informacji. Nie wiem od czego zacząć i w jakiej kolejności mam się kierować. Ktoś, kto może podać wyczerpującą listę punktów do nauki? Wiem, że istnieją HTML, Ruby on Rails, CSS i Javascript. Co jeszcze? Co ważniejsze, czy ktoś może podać krótki zarys swojego związku?


title: Czy formularze Django naruszają MVC?

text:
Właśnie zacząłem pracować z Django wywodzącym się z lat Spring MVC i implementacja formularzy wydaje się nieco szalona. Jeśli nie jesteś zaznajomiony, formularze Django zaczynają się od klasy modelu formularza, która definiuje twoje pola. Podobnie wiosna zaczyna się od obiektu wspierającego formę. Ale tam, gdzie Spring udostępnia taglib do wiązania elementów formularza z obiektem zapasowym w ramach JSP, Django ma widżety formularzy powiązane bezpośrednio z modelem. Istnieją domyślne widżety, w których możesz dodać atrybuty stylu do pól, aby zastosować CSS lub zdefiniować całkowicie niestandardowe widżety jako nowe klasy. Wszystko dzieje się w twoim kodzie Pythona. To wydaje mi się szalone. Po pierwsze, umieszczasz informacje o swoim widoku bezpośrednio w modelu, a po drugie łączysz swój model z określonym widokiem. Czy czegoś mi brakuje? EDYCJA: Przykładowy kod zgodnie z żądaniem. Django: # Klasa definiuje dane powiązane z tą klasą formularza CommentForm(forms.Form): # nazwa to CharField, a argument mówi Django, aby użył <input type="text"> # i dodał klasę CSS "special" jako atrybut. To, co powinno # znaleźć się w szablonie nazwa = formularze.CharField( widget=forms.TextInput(attrs={'class':'special'})) url = formularze.URLField() # Ponownie, komentarz to <input type="text" size="40" /> mimo że rozmiar pola wprowadzania # jest ograniczeniem projektu wizualnego i nie jest powiązany z modelem danych comment = form.CharField( widget=forms.TextInput(attrs={'size':' 40'})) Spring MVC: public class User { // Klasa formularza w tym przypadku jest POJO, przekazywana do szablonu w kontrolerze private String firstName; prywatne Nazwisko String; get/setWhatever() {} }  <%@ taglib prefix="form" uri="http://www.springframework.org/tags/ form" %>  <form:form commandName="user">

 Imię:	 <! -- Atrybut „path” ustawia pole nazwy i wiąże się z obiektem na zapleczu --> <form:input path="firstName" class="special" />

 Nazwisko:	 <form:input path="lastName" size="40" />

  <input type ="submit" value="Zapisz zmiany" />

 </form:form>


title: Delphi Build Server - Czy muszę zaewidencjonować pliki .dres?

text: Używamy ostatecznego konstruktora do budowania projektu Delphi, a osoba zarządzająca serwerem kompilacji zauważyła, że projekty bez plików .dres nie były kompilowane, ponieważ nie są w SVN i ponieważ nie są w SVN, nie znajdują się na zbudować maszynę. Więc umieścił je w SVN. Jestem jednak trochę sceptyczny co do konieczności umieszczenia ich w SVN. Po pierwsze, jeśli są one potrzebne serwerowi kompilacji, to nie są one budowane przez serwer kompilacji i tak naprawdę nie tworzymy kompilacji w jednym kroku, ponieważ używamy wstępnie skompilowanego kodu (równie dobrze po prostu sprawdź moje DCU, oderwij brodę i zwróć moją kartę lojalnościową Delphi-4-Ever). Widzę w Delphi po skompilowaniu projektu: ` c:\program files (x86)\embarcadero\rad studio\9.0\bin\cgrc.exe -c65001 "PROJResource.rc" -foPROJ.dres ` Te pliki są tworzone przez kompilację brcc32 plik RC. Powiedziałbym, po prostu dodaj tę linię do serwera kompilacji, ale `PROJResource.rc` też nie jest w SVN! `PROJResource.rc` jest automatycznie generowany przez Delphi z dodawania rzeczy za pomocą menedżera projektu i nigdy tego nie zauważyłem, więc nigdy nie dodałem go do SVN i nikt inny nie narzekał (myślę, że za tym stoi plik .dproj). Pliki RC, które sam napisałem, są jednak w SVN. Więc ... jaki jest najlepszy sposób, aby to naprawić, po prostu sprawdź PROJResource.rc, czy jest coś, co możemy zrobić, aby to usprawnić?


title: Baza transakcyjna i Datawarehouse na tym samym klastrze Postgresql?

text: Czy koncepcyjnie wykonalne jest posiadanie w klastrze Postgresql bazy danych transakcyjnych i jednocześnie hurtowni danych, która byłaby zasilana przez bazę danych transakcyjnych?


title: Jak być na bieżąco z platformą LAMP?

text: W większości przypadków o nowościach dowiaduję się zbyt późno. To jest w porządku, przynajmniej wiem o nich, nie ma znaczenia skąd wiem, ale czuję, że jest za późno, aby wiedzieć o tych funkcjach. Pracuję na platformie LAMP i chcę być na bieżąco z nowościami, wszystkim, co dzieje się z LAMP. Czy możesz mi powiedzieć, jakich zasobów powinienem użyć? Jakie grupy powinienem śledzić? Skąd mogę uzyskać najnowsze informacje o aktywności, wydarzeniu i funkcji związanej z LAMP?


title: Szukasz projektu open source w Pythonie

text: Szukam praktycznych zadań, aby zdobyć doświadczenie z Pythonem. Samo czytanie książek i nie wykonywanie zadań w języku nie jest skuteczne. Rozwiązałem niektóre problemy na Project Euler i TopCoder i pomogło mi to lepiej nauczyć się składni języka. Są to jednak zadania trudne algorytmicznie, ale z reguły dość proste z punktu widzenia programowania. Teraz szukam ciekawego projektu open source w Pythonie, w którym udział pomoże mi lepiej zrozumieć model języka OO. Chociaż jest to mój pierwszy krok z Pythonem, generalnie jestem doświadczonym programistą i mogę się przydać w projekcie. Może ktoś może coś zasugerować?


title: Co to jest projekt szczegółowy? jakie są zalety wady korzystania z niego?

text: Naprawdę nie rozumiem pomysłu: 1. Co to jest projekt szczegółowy. 2. Dlaczego warto korzystać z szczegółowego projektu. 3. Zalety/Wady stosowania Projektu Szczegółowego. 4. Wszelkie alternatywne metody inne niż zastosowanie Projektu Szczegółowego. Czy ktoś mógłby mi pomóc/wytłumaczyć?


title: Jak nazwać ludzi, którzy rozszerzają moją klasę w dokumentacji klasy bazowej?

text: Nazywałem ich „realizatorami”, ale wydaje mi się to dziwne. /// <summary> /// Implementatorzy powinni to zaimplementować. Derp /// </summary> protected abstract void InternalExecute(); Dla wyjaśnienia, interesuje mnie, jak nazwać **ludzi**, którzy tworzą klasy dla dzieci, a nie same klasy dla dzieci. „Hej, ty tam”, a nie „ta rzecz tam”.


title: Jak przechowywać wiele wymagań za pomocą OR i AND?

text: Cóż, pracuję nad osobistym projektem, który musi sprawdzić, czy użytkownik spełnił określone wymagania, a są one w formie Wymagania: [c1 OR c2] AND [d1 OR d2] Wymagania: [c1 AND c2] OR [ d1 AND d2] Wymaganie: c1 AND dowolne dn(n może być dowolną liczbą całkowitą) Po prostu nie jestem pewien, jak przechowywać tego rodzaju wymagania, myślę o użyciu innego obiektu do przechowywania c1,c2,d1,d2. ..dn i OR, ale wydaje się, że jest to okrężny sposób robienia rzeczy. Czy istnieje lepsza metoda?


title: Jaki jest najlepszy sposób na zaimplementowanie różnych widoków jednego zasobu w sposób RESTful?

text: Wyobraź sobie, że istnieje zasób, na przykład wydarzenie. Użytkownik ma możliwość uzyskania listy zdarzeń w formacie HTML. Powinien móc przeglądać tę listę na dwa sposoby: jako listę i jako kalendarz. Jak interfejs API powinien reagować na te opcje? Najprostszym podejściem, jak sądzę, jest przekazanie jakiegoś parametru do akcji indeksowania, aby określić, jakiego typu prezentacji użyć, ale mi się to nie podoba. Nie wiem dlaczego, to nie jest dla mnie RESTful. Jak myślisz, czy coś źle zrozumiałem i powinienem zachować prostotę, czy jest lepsze podejście?


title: Gdzie Microsoft obecnie stoi na językach dynamicznych?

text: Skoro języki Python i Ruby wciąż mają dobrą pozycję na rynku, jakie jest obecne stanowisko Microsoftu w sprawie języków dynamicznych? Czy Microsoft ma jakieś plany na włączenie lub wymyślenie własnego dynamicznego języka?


title: Korzystanie z mechanizmu zaplecza do kopiowania plików do bazy danych i powiadamiania aplikacji

text: Ten scenariusz: użytkownik kopiuje duże pliki do folderu lokalnego. Chcę obejrzeć ten folder, a kiedy nowy plik zostanie upuszczony, przejdź i skopiuj go do bazy danych, aby później, po zakończeniu kopiowania, mógł go użyć w mojej aplikacji. (Aplikacja C# WinForms). Fajnie byłoby również znaleźć sposób, aby jakoś otrzymać powiadomienie w Aplikacji, że hej kopiowanie pliku do bazy danych jest zakończone i gotowe do użycia... Używam C#.net, Windows... Jakie rozwiązania/architekturę proponujecie dla tego? Na przykład, gdy usługa Windows jest uruchomiona przez cały czas, obserwując ten folder, gdy coś skopiowanego idzie i zapisuje to do bazy danych ... to co powiesz na powiadomienie? MSMQ jest czymś, czego mogę użyć? niewiele o tym jeszcze wiem. Dziękuję.


title: Jak zarządzasz projektami pozostawionymi przez innych pracowników?

text: Zdarza się, że ktoś nagle opuszcza firmę. Teraz jego praca musi zostać ukończona i tobie ją przydzielono. Nie mając pojęcia, co kombinuje (czy zrobiono to w 90%, czy w 9%), jak sobie radzisz z resztkami? 1. Czy mam zacząć od zera? A jeśli zrobiono to w 90%? 2. Czy powinienem spróbować zrozumieć to, co zrobił? A jeśli to była tylko bzdura?


title: Czy moja aplikacja jest wystarczająco bezpieczna?

text: po pierwsze, nie mam tutaj żadnego kodu do wyświetlenia w moim pytaniu, ponieważ wciąż projektuję strukturę aplikacji, więc mam tylko opracowany projekt. Tworzę aplikację na telefon, którą staram się uczynić tak bezpieczną, jak to tylko możliwe, wiem, że nie jest to konieczne w przypadku aplikacji o rozmiarze mojej, ale nadal dobra praktyka. Moja aplikacja jest na Angular z phonegap, strona serwera jest dostępna przez https i jest nodejs z mongoDB, jest bezstanowym serwerem, spokojnym interfejsem API. Po zalogowaniu użytkownika (za pomocą użytkownika i hasła lub facebooka) identyfikator sesji jest przechowywany po stronie klienta (angular cookies) i jest wymagany przy każdym dostępie do serwera (sprawdzenie, czy użytkownik jest zalogowany za pomocą tego identyfikatora sesji ). Słyszałem też o tokenach formularzy, więc wszczepiłem to - na każdym formularzu, który w końcu wyśle żądanie do serwera (na przykład zmiana informacji o użytkowniku i naciśnięcie zapisu) będzie również wymagał tokena formularza, losowej wartości, która jest generowana dla sesja dotycząca budowania formularza - funkcja onLoad wywołująca serwer w celu wygenerowania określonego tokena formularza. Wygląda całkiem fajnie, ale nadal nie jestem pewien, czy jest dobry. Myśląc o tym, ktoś może wywołać moją spokojną metodę, aby wygenerować dowolny token formularza, używając identyfikatora sesji, który znalazł (przez brutalne wymuszenie lub cokolwiek), a następnie wywołać dowolną inną spokojną metodę, aby zmienić cokolwiek dla tego użytkownika ... także mój serwer powinien być ograniczony, aby można było uzyskać do niego dostęp tylko z aplikacji... nie można ograniczyć pochodzenia, ponieważ IP zmienia się z telefonu na telefon... jakie ograniczenia powinien mieć mój serwer? Jestem początkującym w bezpieczeństwie aplikacji internetowych i wszelkie porady, wyjaśnienia i pomoc naprawdę by pomogły! czy moja aplikacja jest wystarczająco bezpieczna?


title: Dlaczego repozytoria Git/Mercurial zajmują mniej miejsca?

text: Czytałem w kilku dyskusjach tutaj i na SO, że repozytoria DVCS zajmują mniej więcej tyle samo lub mniej miejsca niż ich scentralizowane odpowiedniki. Może to przegapiłem, ale nie znalazłem dobrego wyjaśnienia, dlaczego tak jest. Ktoś wie?


title: Jak zaprojektować jednostkę domeny, która używa zależności do zarządzania polem stanu?

text: Jestem nowy w DDD i IOC/DI i mam pewne problemy z ustaleniem, jak zaprojektować jednostkę, która musi używać wzorca stanu do zarządzania swoim statusem. Ponieważ przejścia są nieco skomplikowane, do obsługi stanów używam automatu skończonego (FSM) (używam Stateless). Aby jeszcze bardziej skomplikować sytuację, FSM musi być luźno powiązany z jednostką. Tj. chociaż wiem, że stan jednostki musi być obsługiwany przez FSM, niekoniecznie wiem dokładnie, czym jest FSM (tj. jednostka nie wie, przez jakie stany/wyzwalacze/przejścia może przejść). Użytkownicy używają terminu przepływ pracy do zdefiniowania FSM (stan, wyzwalacze, przejścia, reguły itp.). Przepływ pracy zmienia się niezależnie od jednostki. Mogą chcieć dodać nowe stany, zmienić reguły, wyzwalacze itp. niezależnie od jakichkolwiek zmian w encji. Obsługuję to, dynamicznie ładując zestaw, który zawiera definicję FSM (który implementuje znany interfejs), a następnie używając usługi, która jest wstrzykiwana do encji, encja wywołuje usługę i pobiera FSM, której używa. Wiąże się to z potencjalnym ładowaniem zestawów, buforowaniem fabryki, która tworzy FSM, a następnie przypisywaniem FSM, który jest w odpowiednim stanie do jednostki. Na koniec FSM może zwrócić zestaw prawidłowych wyzwalaczy, które można dostarczyć do interfejsu użytkownika, aby można było wybrać i uruchomić jeden z tych wyzwalaczy. Rzeczywisty przepływ pracy jest całkowicie hermetyzowany na zewnątrz jednostki. Tak więc obecnie jestem moja jednostka wygląda mniej więcej tak: public class EntityUsingWorkflow { private readonly workflowService; public Order(IWorkflowService service, string workflowKey, string status) { this.workflowService = service; this.WorkflowKey = workflowKey; ten.Status = stan; // Zauważ, że dwie lambdy służą do pobierania // i ustawiania stanu encji. this.Workflow = service.GetStateMachine(workflowKey, () => this.Status, stateValue => this.Status = statValue ); } ciąg publiczny WorkflowKey { get; ustawić; } publiczny przepływ pracy IStateMachine { get; zestaw prywatny; } ciąg publiczny Status { get; zestaw prywatny; } } Jestem zainteresowany tym projektem. Moje podstawowe zrozumienie jest takie, że encje domeny nie powinny mieć wstrzykiwanych zależności, ale tutaj je wstrzykuję. Rozumiem również, że encja musi obsługiwać własny stan, więc waham się, czy całkowicie przenieść przepływ pracy z encji. Inne pomysły, które miałem, takie jak metoda init, po prostu przenosiły wstrzykiwanie do metody wstrzykiwania. Jaki byłby czysty sposób na zaprojektowanie jednostki spełniającej te wymagania? Czy w tej sytuacji można wstrzyknąć zależność?


title: Czy jest legalne / moralne ponowne publikowanie projektu oss autora, który nie odpowiada?

text: Kilka miesięcy temu znalazłem mały projekt oss (jeden plik) na czyimś blogu. Licencja to „Uznanie autorstwa-Na tych samych warunkach 2.5 Ogólna”. Wysłałem e-mail do autora, jeśli mogę umieścić to na github, ale nie otrzymałem odpowiedzi. Tymczasem jego blog został zamknięty. Nie jestem prawnikiem, ale wydaje się, że ponowne opublikowanie kodu (z odpowiednim przypisaniem) na githubie jest legalne. Czy mam rację? Czy to jest moralne? Może facet po prostu chce zniknąć na chwilę...


title: Jak mogę dystrybuować unikalną bazę danych już w produkcji?

text: Załóżmy, że dobrze działająca aplikacja webowa Spring działa na bazie danych MySQL lub PostgreSQL. Ruch staje się tak duży, a ilość danych tak duża, że rozwiązanie rozproszonej bazy danych musi zostać zaimplementowane w celu rozwiązania problemu skalowalności. Załóżmy również, że ta aplikacja korzysta z Hibernate, a warstwa dostępu do danych jest wyraźnie oddzielona obiektami DAO. Najlepiej byłoby, gdyby można było łatwo dodawać lub usuwać bazy danych. Mile widziane jest również rozwiązanie awaryjne. Jaka byłaby najlepsza strategia skalowania tej bazy danych? Czy można zminimalizować kod shardingowy (Shard) w aplikacji?


title: Czytałem Pro ASP .NET MVC 2 Framework - coś jeszcze dla AJAX w MVC 2?

text: Czytałem Pro ASP .NET MVC 2 Framework, aby spróbować nauczyć się ASP .NET MVC Framework, ale naprawdę mam problemy z Ajaxem w MVC, nawet po przejrzeniu tego rozdziału raz za razem. Wydaje mi się, że dobrze orientuję się w MVC 2 bez Ajaksu. Użyłem kontrolek Ajax z ASP .NET (nie MVC) i jestem przyzwyczajony do kontrolek użytkownika w panelach aktualizacji. Mam nieco skomplikowane obiekty z zagnieżdżonymi zestawami obiektów na mojej stronie internetowej, a próba aktualizacji ich po stronie klienta i utrzymywania porządku w ich zagnieżdżonych indeksach tablicowych zabija mój mózg. Niewielka znajomość skryptów internetowych w ogóle i JavaScript / jQuery / JSON w szczególności nie pomaga. Czy jest coś jeszcze, co mógłbym przeczytać, co może pomóc mi lepiej zrozumieć Ajax w MVC? Czy Ajax jest słabo obsługiwany w MVC 2, czy po prostu walczę, ponieważ mam ogromne luki w zrozumieniu sieci ze względu na styl WebFormsish starego ASP .NET? Licząc na to drugie. . . moją własną ignorancję można naprawić.


title: Czy można zmodyfikować algorytm wzajemnego wykluczania Lamporta, aby działał bez gwarancji FIFO?

text: Próbuję zaimplementować zmodyfikowaną wersję algorytmu Wzajemnego Wykluczenia Lamport. Oryginalny algorytm zakłada kolejność komunikatów FIFO między połączonymi systemami, ale chciałbym użyć ~~UDP~~ protokołu, który nie gwarantuje FIFO. Czy można zmodyfikować ten algorytm, aby działał bez FIFO? EDYCJA: Zapomnij o UDP. Załóżmy tylko, że jest to jakiś protokół, w którym jedynym problemem jest to, że FIFO nie jest gwarantowane. To jedyny problem, którym się teraz martwię.


title: Czy programista powinien brać lekcje pisania, aby poprawić ekspresję kodu?

text: Biorąc pod uwagę, że programiści są autorami i piszą kod wyrażający abstrakcyjne myśli i koncepcje, a dobry kod powinien być czytany przez innych programistów bez trudności i nieporozumień, czy programista powinien brać lekcje pisania, aby pisać lepszy kod? Abstrahowanie pojęć i rzeczywistych problemów/podmiotów jest ważną częścią pisania dobrego kodu, a dobre opanowanie języka używanego do kodowania powinno pozwolić programiście na łatwiejsze lub lepsze wyrażanie swoich myśli. Poza tym, próbując napisać lub przepisać jakiś kod, aby go ulepszyć, dużo czasu można poświęcić na określenie nazw funkcji, zmiennych lub struktur danych. Myślę, że może to również pomóc w uniknięciu pisania kodu z więcej niż jednym znaczeniem, często powodującym nieporozumienia między różnymi programistami. Kodeks powinien zawsze jasno i jednoznacznie wyrażać swoją funkcję.


title: Skąd Java bierze swoją reputację SOA?

text: Widzę wiele książek o SOA dotyczących Javy i zawsze miałem podświadome przekonanie, że Java jest "właściwym" językiem dla solidnego/korporacyjnego SOA, mimo że wiem, z czym wiąże się SOA i że jest to całkowicie możliwe przy użyciu innych języków i frameworków. Jakie _wyłączne_ cechy Java ma, których nie mają inne języki/platformy, co sprawia, że jest tak popularna w przypadku SOA?


title: Jak dobrze w praktyce sprawdzają się zasady dotyczące projektów free-to-open-source?

text: W porównaniu z licencją open source i żądaniem darowizn, czy projekty typu „free for open source” (lub bezpłatne dla niekomercyjnych deweloperów) z zamkniętym kodem źródłowym i komercyjnymi innymi projektami mogą uzyskać wyższe opłaty licencyjne? A może po prostu zrazić potencjalnych użytkowników? Załóżmy, że projekt ma wartość dla programistów - szukam tutaj uogólnień, choć konkretne przykłady porównujące istniejące projekty będą bardzo interesujące. Mam na myśli narzędzia programistyczne do generowania kodu. Jedną z kwestii, o której mogę pomyśleć, jest prawie całkowita niemożność wyegzekwowania jakichkolwiek ograniczeń licencyjnych. W końcu nie mogę krążyć po Internecie żądając, aby wszyscy pokazali mi swój kod źródłowy na wszelki wypadek!


title: Czy istnieje możliwość migracji aplikacji opartej na rozpórkach/wiosnach do GWT?

text: W swojej aplikacji wykorzystuję połączenie sprężyny, zabezpieczenia sprężynowego, rozpórek i iBatis. Teraz zamierzam przenieść interfejs użytkownika rozpórek do GWT. Nowa kombinacja musi być wiosna, wiosna-zabezpieczenie, GWT i iBatis. Do opracowania aplikacji zastosowałem podejście warstwowe. W warstwie Controller/UI używam Struts. Chcę wymienić rozpórki i użyć GWT w warstwie Controller/UI. Czy można używać GWT bez wpływu na inne warstwy DAO/BL/SL?


title: Czym dokładnie jest test integracyjny?

text: Moi przyjaciele i ja staramy się dokładnie sklasyfikować, czym jest test integracyjny. Teraz, w drodze do domu, zdałem sobie sprawę, że za każdym razem, gdy próbuję podać przykład testu integracyjnego z prawdziwego świata, okazuje się, że jest to test akceptacyjny, czyli tzw. coś, co przedsiębiorca powiedziałby na głos, co określa, co system powinien zapewniać. Sprawdziłem dokumentację Ruby on Rails pod kątem klasyfikacji tych typów testowania i teraz całkowicie mnie rzuciła. Czy możesz podać mi krótki akademicki opis testu integracyjnego na przykładzie ze świata rzeczywistego?


title: Jak zasugerować zmiany jako nowo zatrudniony pracownik?

text: Niedawno zostałam zatrudniona w dużej firmie (tysiące ludzi, żeby dać wyobrażenie o wielkości). Powiedzieli, że zatrudnili mnie ze względu na mój rygor i dlatego, że pomimo mojej młodości (mam 25 lat) miałem doświadczenie jako programista C/C++. Teraz, kiedy jestem w środku, widzę, że cały system jest stary i często korzysta z przestarzałych technologii. Nie ma konwencji nazewnictwa (pliki, funkcje, zmienne, ...), nie używają kontroli wersji, nie stosują wyjątków ani polimorfizmu i wydaje się, że prawie każdy stracił swoją pasję (niektórzy z nich mają dopiero 30 lat ). Chciałbym zasugerować pewne zmiany, ale nie chcę być „nowym facetem, który chce zmienić wszystko tylko dlatego, że nie chce się dopasować”. Próbowałem „dopasować się”, ale tak naprawdę zajmuje mi tydzień, aby zrobić to, co zrobiłbym w jedno popołudnie, tylko z powodu kiepskich narzędzi, których jesteśmy zmuszeni używać. Wielu moich kolegów nigdy nie patrzy na nowe „rzeczy” i techniki, których ludzie używają w dzisiejszych czasach. To tak, jakby się po prostu poddali. Sytuacja jest naprawdę frustrująca. Czy kiedykolwiek byłeś w podobnej sytuacji, a jeśli tak, to jakich rad byś mi udzielił? Czy istnieje subtelny sposób zmiany rzeczy bez stania się tutaj czarną owcą? A może powinienem też po prostu zrezygnować z mojej pasji i energii? Dziękuję Ci. ## Aktualizacje Na wszelki wypadek (jeśli kogoś to obchodzi): podążając za waszymi cennymi radami, mogłem zasugerować zmiany i jestem teraz odpowiedzialny za zespół, który musi stworzyć i wdrożyć Subversion :D Dziękuję wam wszystkim!


title: Czy zaraz po studiach powinienem być dobrym programistą?

text: > **Możliwy duplikat:** > Ukończyłem studia na kierunku informatyka, ale nie wydaje mi się, że jestem nawet blisko bycia ekspertem w dziedzinie programowania Niedawno ukończyłem studia i od tego czasu dołączyłem do działu rozwoju zespół, w którym jestem zdecydowanie najmniej doświadczonym programistą z być może kilkoma terminami pracy na swoim koncie. Tymczasem reszta zespołu ma 5-10 lat doświadczenia. Byłem bardzo dobrym uczniem i całkiem niezłym programistą, jeśli chodzi o zabutelkowane zadania i testy. Z powodzeniem pracowałem nad niektórymi projektami, ale teraz pracuję ze znacznie większą bazą kodu, a krzywa uczenia się jest znacznie wyższa. Zastanawiałem się, ilu innych programistów rozpoczęło karierę w zespołach i odeszło, jakby byli do niczego. Kiedy to się zmieni? Jak mogę przyspieszyć ten proces? Moi seniorzy mi pomagają, ale chcę być teraz świetny i pokazać swoją wartość.


title: Ile niespójności wynika z dużej elastyczności Javascript?

text: Przyznam to, nie opanowałem jeszcze języka, ale moje doświadczenie z nim mówi mi, że JavaScript jest językiem bardzo elastycznym, pozwalającym na prototypowe dziedziczenie, dynamiczne pisanie, działa jak obywatele pierwszej klasy i wiele innych fajnych rzeczy. Myślę, że takie funkcje wprowadzają pewne niespójności, ale to nic nowego, większość ludzi by się ze mną zgodziła. Chciałem omówić konkretne przykłady, które mnie denerwowały, takie jak pętle "for in": for(var role in rolesToAdd){ if(rolesToAdd.hasOwnProperty(role)){ // for body } } Dlaczego mam to robić ? Czy to nie łamie koncepcji klas i dziedziczenia? Mogę nie chcieć przechodzić przez cały prototyp, ale co, jeśli nadal potrzebuję niektórych atrybutów/metod od bezpośredniego rodzica obiektu, na przykład? Byłbym również bardzo wdzięczny, gdyby ktoś mógł mi wyjaśnić, dlaczego interpreter nie pozwala synonimicznym zmiennym globalnym/lokalnym na dzielenie tego samego zakresu, podczas gdy z pewnością istnieje sposób, aby odróżnić jedno od drugiego. Jak w: var foo = function() { var wth = bar(); var bar = wth; // ciało...     }(); function bar(){ return 'bar micwa'; } Widać, że chociaż nasz bar lokalny został zadeklarowany po wywołaniu naszego globalnego bara, wartość bar w zakresie foo zawsze będzie odzwierciedlać bar lokalny, który będzie zawierał 'undefined'. Czy to nie dziwne zachowanie? Chciałbym, aby starsi programiści Js oświecili mnie w tym i pokazali, co można uzyskać z tych pozornie dziwnych funkcji i czy wady, o których tutaj wspomniałem, są słuszne.


title: Najlepsze praktyki dotyczące zmiany nazwy, refaktoryzacji i łamania zmian za pomocą zespołów

text: Jakie są najlepsze praktyki dotyczące refaktoryzacji i zmiany nazwy w środowiskach zespołowych? Przytaczam to, mając na uwadze kilka scenariuszy: 1. Jeśli biblioteka, do której często się odwołuje, jest refaktoryzowana, aby wprowadzić przełomową zmianę do dowolnej biblioteki lub projektu, który się do niej odwołuje. Np. dowolnie zmieniając nazwę metody. 2. W przypadku zmiany nazwy projektów i konieczności przebudowania rozwiązań ze zaktualizowanymi odniesieniami do nich. 3. Jeśli struktura projektu zostanie zmieniona na „bardziej zorganizowaną” poprzez wprowadzenie folderów i przeniesienie istniejących projektów lub rozwiązań do nowych lokalizacji. Kilka dodatkowych myśli/pytań: 1. Czy takie zmiany powinny mieć znaczenie, czy też wynikający z tego ból jest oznaką nieprawidłowej struktury? 2. Kto powinien ponosić odpowiedzialność za naprawienie błędów związanych z przełomową zmianą? Jeśli programista dokona przełomowej zmiany, czy powinien być odpowiedzialny za wejście do dotkniętych projektów i ich aktualizowanie, czy też powinien powiadomić innych programistów i zachęcić ich do zmiany rzeczy? 3. Czy jest to coś, co można zrobić zgodnie z harmonogramem, czy jest to coś, co powinno być wykonywane tak często, jak to możliwe? Jeśli refaktoryzacja jest odkładana na zbyt długi czas, coraz trudniej jest to pogodzić, ale jednocześnie spędzać 1 godzinę na przyrostach na naprawę buildu z powodu zmian zachodzących gdzie indziej. 4. Czy jest to kwestia formalnego procesu komunikacji, czy może być organiczne?


title: Refaktoryzacja kodu spaghetti jQuery do użycia DDD

text: Większość mojego kodu po stronie klienta kończy się jako długi skrypt w jednym pliku, który najczęściej wygląda tak: <script> function jakaśFunkcja1(){/*...*/} function jakaśFunkcja2(){/*...*/} ... var globalZmienna1; var globalna zmienna2; ... $(function(){ $('selector1').click(function(){ //pobierz odpowiednie dane z różnych elementów DOM //niektóre reguły logiki biznesowej i walidacja //otwórz okno dialogowe //więcej reguł logiki biznesowej i więcej walidacji //wyślij żądanie ajax //zaktualizuj DOM }) //wiele innych zdarzeń //wiele okien dialogowych jQuery }); </script> To koszmar konserwacyjny. Chociaż używam dobrze zaprojektowanej struktury po stronie serwera przy użyciu DDD (usługi aplikacji, usługi domenowe, obiekty wartości itp.), nie miałem szczęścia w konstruowaniu kodu klienta w celu lepszego oddzielenia obaw. Nie buduję aplikacji po stronie klienta. Po prostu intensywnie używam jQuery po stronie klienta. Jak podejść do struktury kodu, aby zastosować DDD po stronie klienta?


title: Jakie zadania związane z programowaniem możesz wykonać z „martwym” mózgiem?

text: Oto mój problem: programowanie (nauka programowania, kodowania itp.) to moje hobby. Robię to w wolnym czasie. Mam pracę na pełen etat, która dosłownie wysysa mi mózg (nie żartuję!) pod koniec dnia tak bardzo, że nie mogę nawet dodać trzycyfrowych liczb, ale nadal chcę robić pewne rzeczy związane z programowaniem. Uczenie się w tym stanie jest głupie, znajdowanie błędów jest niemożliwe. Pisanie testów jednostkowych trochę zadziałało :D Rozumiem, że programowanie jest bardzo świadomą czynnością, ale muszę codziennie wykonywać swoją pracę i nadal chcę zajmować się pewnymi sprawami związanymi z programowaniem, ponieważ jest to dla mnie bardzo zabawne. Co sugerujesz ? Myślałem o oglądaniu filmów, ale jakiego tematu powinienem szukać z takim stanem umysłu (które są łatwe do zrozumienia, ale wciąż mogę się z nich wiele nauczyć) ? (Nie mogę tego zrobić przed pracą, bo o wiele ważniejsze jest, aby być tam świeżym niż w czasie mojego hobby...) Edit: Pytanie wymaga trochę uzupełnienia, które celowo pominąłem na początku, ponieważ nauczyłem się pytanie jest jasne. Nie mam żadnego problemu z aktywnością mojego mózgu ani nic w tym stylu, przyczyną „drenażu mózgów” jest to, że wykonuję 9-10 godzin _bardzo intensywną_ pracę umysłową dziennie (znacznie intensywniejszą niż np. programowanie lub myślenie o rozwiązywaniu problemów), z przerwą mniejszą niż 5 minut co godzinę. Pomiędzy tymi godzinami pracy nie można tego zmienić, więcej pauzować ani myśleć mniej (hh?!).


title: Spotkania Sprintowe – O czym rozmawiać

text: W pracy dopiero zaczęliśmy stosować metodykę Scrum, sprawdza się to dobrze, ale mam pytanie dotyczące codziennych spotkań sprintowych. Przeznaczyliśmy na spotkanie 15 minut (pomiędzy trzema deweloperami i scrum masterem, jeśli uważamy, że jest potrzebny), ale stwierdziłem, że normalnie skończyliśmy o 5 minut. Może to być spowodowane tym, że powiedzieliśmy wszystko, co należy powiedzieć, ale zastanawiałem się, o czym ludzie w nich mówią, na wypadek, gdybyśmy czegoś przegapili. Dla przypomnienia zazwyczaj aktualizujemy się nawzajem o bieżących celach, kłopotliwych poprzednich celach i planach na resztę dnia (w tym, jeśli nie będziemy dostępni w tym projekcie).


title: Jakie są techniki debugowania błędów po stronie klienta zdalnego?

text: Jakie są dostępne techniki debugowania błędów po stronie klienta zdalnego w aplikacji internetowej, zwłaszcza gdy dotyczą one tylko niewielkiej podgrupy użytkowników? W moim przypadku mamy aplikację, która działa dobrze dla setek użytkowników, wewnętrznie i zewnętrznie, ale garstka (12) ma specyficzny problem z JavaScriptem, który uniemożliwia im korzystanie z witryny. Mamy zrzuty ekranu błędu, potwierdziliśmy, że nie występują błędy po stronie serwera, potwierdziliśmy, że wszystko jest poprawnie renderowane w przeglądarce, widzieliśmy konkretny błąd w konsoli IE, ale nadal nie mamy pojęcia, dlaczego to nie działa w przypadku tych określonych użytkowników. Emisja jest wystawiana na różnych wersjach IE. Nigdy nie byliśmy w stanie powtórzyć tutaj problemu. Nie szukam tutaj rozwiązania mojego problemu, ale raczej jakie kroki podjąłbyś, aby rozwiązać tego rodzaju problem i jakie narzędzia mogą być pomocne?


title: Zastosuj filtr w kolejce Kafki

text: Czy można nałożyć filtr na strumień tematu Kafki? To, co chcę zrobić, to odfiltrować wiadomości podczas konsumowania, a następnie uruchomić na tym niestandardową logikę. Jest to coś, na co pozwala nam burzowy trójząb (zastosuj filtr na strumieniu). Do tej pory odkryłem, że mogę utworzyć topologię trójzębową i przeprowadzić filtrowanie, ale byłoby bardzo korzystne, gdybym mógł odfiltrować sam strumień, ponieważ zmniejszy to ilość ruchu po stronie klienta. Wiem, że to szaleństwo, ale czy to może być prawidłowe podejście? Proszę, popraw mnie jeśli się mylę.


title: C++ Pytanie do rozmowy kwalifikacyjnej

text: Ten problem zadano mi na poprzedniej rozmowie kwalifikacyjnej. To już koniec, ale chciałbym przejść przez moje błędy i mam nadzieję, że następnym razem będę lepiej przygotowany! // Zidentyfikuj jak najwięcej błędów i założeń w poniższym kodzie. // PAMIĘTAJ, że jest/są (co najmniej): // 1 główne założenie algorytmiczne // 2 problemy z przenośnością // 1 błąd składni // Funkcja kopiowania 'nbajtów' danych z src do dst. void mojaMemcpy(char* dst, const char* src, int nBytes) { // Staraj się być szybki i kopiuj słowo na raz zamiast bajt po bajcie int* wordDst = (int*)dst; int* wordSrc = (int*)src; int numWords = nBajtów >> 2; for (int i=0; i < liczbaSłów; i++) { *słowoDst++ = *słowoSrc++; } int numRemaining = nBytes - (numWords << 2); dst = (znak*) słowoOdst; src = (znak*)SłowoSrc; for (int i=0 ; i <= liczbaPozostał; i++); { *dst++ = *src++; } } Wszystko, co znalazłem, to błąd składni w wierszu for (int i=0 ; i <= numRemaining; i++); Również pierwsza pętla for wygląda podejrzanie. Czy potraficie znaleźć jakieś inne błędy?


title: Języki programowania z tymi funkcjami

text: Mam mały projekt, w którym mogę wybrać dowolny język. Mój zespół woli poczucie bezpieczeństwa, jakie daje statyczne pisanie. Z naszego doświadczenia wynika, że języki dynamicznie typowane mogą być trudniejsze w utrzymaniu (uważamy, że są zbyt „magiczne”). Zwykłym wyborem byłaby Java, ale nasz zespół wyraża zainteresowanie zwięzłością i elastycznością zapewnianą przez funkcje niektórych innych języków, takich jak Python i Ruby. W oparciu o zainteresowania mojego zespołu potrzebuję pomocy w ocenie, którego języka użyć. W idealnym przypadku język wspierałby następujące funkcje: * typowanie statyczne, * właściwości lub jakaś forma zasady jednolitego dostępu, * funkcje pierwszej klasy, * funkcje anonimowe (mniej ważne). Dodatkowe punkty za języki, które: * Nie są zależne od firmy Microsoft ani żadnego konkretnego systemu operacyjnego. * Mieć implementację inną niż JVM. * Mieć ORM. * Mieć framework do tworzenia stron internetowych. Oprócz tych kryteriów, nadal chciałbym poznać więcej powodów, dla których warto wybrać język(i) w swojej odpowiedzi, oraz wszelkie doświadczenia z nimi związane. Mam nadzieję, że odpowiedzi tutaj przydadzą się każdemu, kto chce ocenić niektóre alternatywy dla Javy bez ślepego przełączania innego popularnego języka, takiego jak C#. _*Edytuj: Moje pytanie zostało zamknięte ze względu na to, jak słabo wcześniej je przekazałem. Mam nadzieję, że wszystko wyjaśniłem, odkąd ponownie otworzyłem pytanie. Nawiasem mówiąc, umieściłem swoje własne badania w społecznościowej odpowiedzi wiki poniżej, więc nie myśl, że nie odrobiłem żadnej pracy domowej. ;-)_