title: Czy mogę zostawić nieprzetłumaczony zaawansowany dziennik?

text: Właśnie trochę się pokłóciłem z moim szefem na ten temat (dobrze szef zawsze wygrywa, więc zrobię to, co chce), ale chciałbym mieć opinię innych na ten temat: Robimy złożoną aplikację które będą używane przez doświadczonych użytkowników (takich jak ten, który zarządza kopiami zapasowymi firmy). Zrobiłem **Advanced log** , który zawiera 3 rodzaje logów: * komunikaty * alerty * błędy Każdy błąd jest tłumaczony i obsługiwany przez GUI, więc użytkownik zawsze będzie wiedział, dlaczego coś poszło nie tak. Martwię się o **wiadomości** : głównym celem tych wiadomości jest uzyskanie szczegółowego obrazu tego, co się dzieje i pomoc doświadczonemu użytkownikowi w samodzielnym rozwiązywaniu problemów bez wzywania pomocy. Aby to zrobić, loguję wiadomość (która pozostanie tylko w pamięci RAM, z maksymalną liczbą wiadomości) dla każdego drobnego rodzaju rzeczy, takich jak Łączenie z serwerem Połączenie pomyślne Żądanie listy plików ze ścieżki XXX Rozpoczęcie odbierania listy plików Pomyślnie odebrano listę plików Można pomóc dowiedzieć się **kiedy** wystąpił problem i ustalić, kto jest za niego winny. Głównym problemem jest to, że nasz program jest tłumaczony na ponad 10 języków! Przetłumaczenie tej OGROMNEJ ilości małych wiadomości będzie kosztowne i będzie używane tylko przez niektórych użytkowników. Dostęp do tej listy wiadomości możesz uzyskać za pomocą **panelu konsoli zaawansowanej** , więc jest jasne, że jest przeznaczona dla użytkowników **Zaawansowanych**. Mój szef chce, żeby te wiadomości zostały przetłumaczone, ale nie chce wydawać dużo na tłumaczenie, więc poprosił mnie, żebym ograniczył się do korzystania z tych wiadomości. Jeśli się ograniczę, ten dziennik wiadomości może stać się bezużyteczny, ale jeśli go nie przetłumaczymy, nasz program straci swoje " _przyjazne, przetłumaczone podejście_ ". Jaka jest najlepsza rzecz do zrobienia? Płacić więcej i wszystko tłumaczyć? Ograniczyć użycie wiadomości? Przekonać szefa, że Użytkownicy Zaawansowani **POWINIEN** znać angielski?


title: Dlaczego (nie) programowanie logiczne?

text: Nie słyszałem jeszcze o jakichkolwiek zastosowaniach logicznego języka programowania (takiego jak Prolog) w branży oprogramowania, ani nie wiem o jego wykorzystaniu w programowaniu hobbystycznym lub projektach open source. Jest on jednak (Prolog) do pewnego stopnia używany jako język akademicki (dlaczego jest używany w środowisku akademickim?). To sprawia, że zastanawiam się, dlaczego należy używać programowania logicznego, a dlaczego nie? Dlaczego nie jest wykrywalny w branży?


title: Używanie IIS jako serwera dla serwera innego niż http

text: Rozwijam system, który jest przeznaczony do wielu form współpracy. Istnieje strona internetowa, ale jest połączona za pomocą SDK, a także interfejsu zapytań HTTP w celu uzyskania dostępu do danych. Ale aby poprawić szybkość i jakość, myślałem o stworzeniu systemu wewnątrz IIS, który otrzymywałby każdą wiadomość wysłaną do serwera, każdą odpowiedź, ale nadal pozwalał IIS zarządzać SSL i normalnymi połączeniami gniazd. Czy istnieje sposób na hostowanie mojego projektu w IIS bez ASP lub innego rodzaju skryptu z dodatkowymi zdarzeniami behawioralnymi?


title: Zastosowania wiązania WCF

text: Z MSDN mamy następującą definicję powiązania WCF > powiązania określają, w jaki sposób punkt końcowy usługi WCF komunikuje się z innymi > punktami końcowymi. > > W swojej najbardziej podstawowej wersji powiązanie musi określać transport (na przykład HTTP > lub TCP), który ma być używany. Za pomocą powiązań można również ustawić inne cechy, takie jak bezpieczeństwo i > obsługa transakcji. Szukam praktycznych zastosowań WCF. Scnearions, w których ludzie dostosowują możliwości powiązania WCF. Niektóre z nich wymieniono poniżej. 1. **Eksportowanie metadanych** : — potwierdzenia zasad niestandardowych są eksportowane przez implementację interfejsu IPolicyExportExtension w klasie BindingElement. Jakie są inne praktyczne zastosowania Bindingu, z których zwykle korzystasz?


title: Zarządzanie LISP-ami

text: Próbuję nauczyć się Clojure, która wydaje się dobrym kandydatem na udany LISP. Nie mam problemu z koncepcjami, ale teraz chciałbym zacząć coś robić. Tu pojawia się mój problem. Ponieważ zajmuję się głównie webowymi rzeczami, przyglądałem się istniejącym frameworkom, bibliotekom baz danych, bibliotekom szablonów i tak dalej. Często te biblioteki są mocno oparte na makrach. Teraz bardzo podoba mi się możliwość pisania makr w celu uzyskania prostszej składni, niż byłoby to możliwe w innym przypadku. **Ale** to zdecydowanie dodaje kolejną warstwę złożoności. Pozwólcie, że wezmę przykład migracji w Lobos z wpisu na blogu: (defmigration add-posts-table (up [] (create clogdb (table :posts (integer :id :primary-key ) ) (varchar :title 250) (text :content ) (boolean :status (domyślnie false)) (sygnatura czasowa :created (domyślnie (teraz))) (timestamp :published ) (integer :author [:refer :authors :id] :not-null)))) (w dół [] (drop (tabela :posty )))) Jest naprawdę bardzo czytelny. Ale trudno rozpoznać, jaka jest struktura. Co zwraca funkcja `timestamp`? Czy jest to makro? Posiadanie całej tej swobody pisania własnej składni oznacza, że muszę uczyć się składni innych osób dla każdej biblioteki, z której chcę korzystać. > Jak mogę nauczyć się efektywnie korzystać z tych komponentów? Czy mam się nauczyć > każdego małego DSL jako czarnej skrzynki?


title: Biblioteka Active Record z obsługą zarówno SQL, jak i NoSQL?

text: Szukam biblioteki PHP Active Record, która obsługuje sterowniki SQL i NoSQL (w szczególności mongodb). Nie ma znaczenia, czy faktycznie ma sterownik NoSQL, mogę go napisać sam, o ile sama biblioteka go obsługuje. W szczególności potrzebowałbym takiego, który obsługuje pisanie niestandardowych metod AR w sterowniku, na wypadek gdyby były to metody, których po prostu nie można przenieść do innych sterowników. Powodem, dla którego tego chcę, jest to, że chciałbym móc rozmawiać z moimi bazami danych tak samo bez względu na sterownik, co pozwoli mi dość łatwo przenosić moje dane między różnymi bazami danych w celu testowania wydajności. Nie jestem pewien, czy jest to właściwe miejsce, aby o to poprosić, jeśli nie, przepraszam i chciałbym wiedzieć, jaka strona stackexchange byłaby odpowiednia. Dla przypomnienia, wygooglowałem to i wszystko, co mogę wymyślić, to biblioteki AR dla baz danych SQL, nie znalazłem ani jednej, która łączyłaby SQL i NoSQL. Dziękuję Ci.


title: Po co ktoś miałby inwestować czas w Microsoft „Roslyn”?

text: Właśnie czytałem niektóre białe księgi i przykłady firmy Microsoft „Roslyn” i koncepcja wydaje się bardzo interesująca. Z tego, co mogę powiedzieć, otwiera czarną skrzynkę, którą jest kompilator i zapewnia interfejs, którego możemy użyć do uzyskania informacji i metryk o kodzie napisanym w Visual Studio. Roslyn również wydaje się mieć możliwość "skryptowania" kodu i kompilowania/wykonywania go w locie (podobnie jak CodeDom), ale z mojego doświadczenia spotkałem się tylko w ograniczonym zakresie zastosowań tego typu funkcji. Podczas gdy element analizy i metryk kodu jest interesującą przestrzenią… jest to coś, co istnieje od bardzo dawna i jest wielu dostawców, którzy już zainwestowali dużo pieniędzy w narzędzia do analizy i refaktoryzacji kodu (np. ReSharper, CodeRush , nCover itp.) i robią to całkiem nieźle! Dlaczego jakakolwiek firma miałaby robić wszystko, aby wdrożyć coś, co można zapewnić za ułamek kosztów, kupując licencję na jedno z istniejących narzędzi? Może brakowało mi jakiejś kluczowej funkcjonalności projektu Roslyn, która umieszcza ją poza domeną wspomnianych narzędzi...


title: Jak zmodularyzowane powinny być moje interfejsy?

text: Natknąłem się na konkretny przypadek, w którym wydaje się, że modułowość i prostota są ze sobą w konflikcie. Zwykle tak nie jest, więc nie byłem pewien, jak to rozwiązać. Załóżmy, że chciałbym stworzyć interfejs kolejki: szablon<nazwa typu T> class kolejka { public: virtual ~queue() {} virtual void enqueue(const T& t) = 0; wirtualna kolejka pustych przestrzeni (T&&t) = 0; wirtualna kolejka T() = 0; }; Kiedy robiłem kilka implementacji (niektóre z nich są atomowe), zauważyłem, że mogę naprawdę zaoszczędzić czas, mając „klasę abstrakcyjną”, która odwołuje się do metod `empty()` lub `full()`, aby pomóc zaimplementować zmienne warunkowe . W ten sposób każda zsynchronizowana klasa, którą zaimplementuję, może również po prostu rozszerzyć tę „klasę abstrakcyjną”. Klasa abstrakcyjna z kolei implementowała rozszerzony interfejs: template<nazwa typu T> class bounded_queue : public queue<T> { public: virtual ~bounded_queue() {} virtual bool full() = 0; wirtualny bool pusty() = 0; }; Ale czy nie byłoby prościej, gdybym po prostu wrzucił te metody do `kolejki`, być może domyślnie zwracając `false`? Odpowiedź na to pytanie nie jest dla mnie od razu oczywista. Jeśli tak, rozważ drugi koniec spektrum. Nie jestem nawet pewien, czy powyższy projekt (w linku) działa zgodnie z oczekiwaniami! Jak zdecydować się na coś prostego, ale modułowego?


title: Czy kaskady metod były kiedykolwiek rozważane dla C#?

text: Smalltalk obsługuje funkcję składni o nazwie „kaskady wiadomości”. Kaskady są przyjmowane przez język programowania Dart. O ile wiem, C# nie obsługuje tego. Czy kiedykolwiek brano je pod uwagę podczas projektowania języka? Czy można sobie wyobrazić, że mogą pojawić się w przyszłej wersji języka?


title: Model domeny dla systemu powiadomień

text: Próbuję zbudować modułową usługę powiadomień w aplikacji sieci web ASP.NET MVC. Aplikacja generuje powiadomienia, a serwis odpowiada za dostarczenie powiadomień do odpowiednich użytkowników. Podczas tworzenia modelu domeny dla usługi powiadomień naturalnie przychodzi na myśl dziedziczenie. ![Model domeny powiadomień](http://i.stack.imgur.com/jXxy3.png) Jednym z wymagań usługi powiadomień jest to, że użytkownicy mogą subskrybować określone typy powiadomień. Na przykład **Użytkownik** może subskrybować powiadomienia **NewMessage**, ale nie powiadomienia **ProfileNotification**. Jak reprezentować relację, w której użytkownik ma subskrypcję typu powiadomienia, ale typ powiadomienia jest reprezentowany przez dziedziczenie. Oczywiście mogłoby to być możliwe dzięki refleksji, ale zastanawiałem się, czy istnieje model domeny, który wynika naturalnie z moich wymagań, ponieważ nie mogłem o nim wymyślić. ![Użytkownik ma subskrypcję](http://i.stack.imgur.com/XqX4g.png) Używam ASP.NET MVC i Entity Framework Code First, ale myślę, że pytanie jest wystarczająco ogólne dla dowolnego programowania obiektowego język.


title: Jak zaimplementować uprawnienia?

text: Używam cppcms do tworzenia bloga takiego jak aplikacja i próbuję napisać system uprawnień, chociaż nie wiem, jaka byłaby najbardziej wydajna i łatwa w zarządzaniu metoda. W tej chwili mam tabelę z identyfikatorem uprawnień, identyfikatorem użytkownika, typem uprawnienia (int) i wartością uprawnienia (parametr opcjonalny, rodzaj). Dla każdego oddzielnego uprawnienia należy dodać wiersz. Którą metodę polecasz? Jeśli potrzebujesz wyjaśnień lub dodatkowych informacji, nie wahaj się zapytać.


title: Czy ta licencja podobna do BSD osiąga to, czego chcę?

text: Zastanawiałem się, czy ta licencja jest: * samopokonująca * tylko klonem istniejącej, lepiej ustalonej licencji * praktyczna * bardziej „przyjazna dla korporacji” niż GPL * zbyt niejasna/otwarta i wreszcie, czy istnieje lepsza licencja który osiąga podobny efekt? Chciałem licencji, która (w uproszczeniu) * byłaby tak elastyczna / prosta jak licencja „Uproszczone BSD” (która jest zasadniczo licencją MIT) * pozwalałaby każdemu na wprowadzanie modyfikacji, o ile mi przypisano * wymagam, abym powiadomienie, że taki utwór pochodny istnieje * wymaga dostępu do kodu źródłowego i uzyskania licencji na korzystanie z kodu * nie zobowiązuje autora pracy pochodnej do udostępnienia kodu źródłowego ogółowi społeczeństwa * nie zobowiązuje autor pracy pochodnej do licencjonowania pracy pochodnej pod konkretną licencją Oto proponowana licencja, która jest uproszczoną wersją BSD z kilkoma dodatkowymi klauzulami (wszystkie są **pogrubione** ). > Prawa autorskie (c) (rok), (autor) (e-mail) > > Wszelkie prawa zastrzeżone. > > Redystrybucja i wykorzystanie w formie źródłowej i binarnej, z > modyfikacją lub bez, jest dozwolone pod warunkiem spełnienia następujących warunków: > > 1. Redystrybucja kodu źródłowego musi zawierać powyższą informację o prawach autorskich, > tę listę warunków i następujące zastrzeżenie. > 2. Redystrybucje w formie binarnej muszą zawierać w dokumentacji i/lub innych materiałach dostarczonych z dystrybucją powyższą informację o prawach autorskich, > tę listę warunków i następujące wyłączenie odpowiedzialności. ** > 3. Właściciel(e) praw autorskich musi zostać powiadomiony o wszelkich redystrybucjach > kodu źródłowego. > 4. Właściciel(e) praw autorskich musi(ją) zostać powiadomiony(e) o wszelkich redystrybucjach w > formie binarnej > 5. Właściciel(e) praw autorskich musi mieć zapewniony dostęp do kodu źródłowego > i/lub formy binarnej jakiejkolwiek redystrybucji na > żądanie.** > > > NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ WŁAŚCICIELI PRAW AUTORSKICH I WSPÓŁPRACOWNIKÓW „TAK JAK JEST” > ORAZ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU > SĄ ZRZECZONE. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WSPÓŁPRACOWNICY NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZASTĘPCZYCH; UTRATĘ DANYCH, UTRATĘ UŻYTKOWANIA, LUB ZYSKÓW LUB PRZERWANIE W DZIAŁALNOŚCI JEDNOCZEŚNIE SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI, CZY W RAMACH ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB INNEGO) WYNIKAJĄCE W JAKIKOLWIEK SPOSÓB Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, NAWET > MOŻLIWOŚĆ TAKICH USZKODZEŃ.


title: Dlaczego miałby powiedzieć „Nie chcemy wspierać MVC3”?

text: Pracuję w małym sklepie w dość dużej firmie zajmującej się intranetowymi aplikacjami webowymi. Mówiąc krótko, mam na myśli jeszcze jednego faceta na moim stanowisku... i ukończył ze mną szkołę w grudniu zeszłego roku. (nie jesteśmy jedynym IT, ale jedynym w swojej branży) Wymieniamy stary system COBOL i przekształcamy tylko używany pakiet aplikacji na aplikację internetową. Moja firma podpisała umowę z firmą zajmującą się aplikacjami internetowymi, aby pomóc w tym procesie, która wybrała ASP.NET MVC, podczas jednego z ważnych spotkań zapytałem, czy będą korzystać z MVC2 czy MVC3. Ich główny programista powiedział: > „MVC2, nie chcemy obsługiwać MVC3. haha” Moje pytanie brzmi, dlaczego tak jest? To było kilka miesięcy temu i robiłem obszerny i samodzielny trening, przygotowując się do przełącznika MVC. Ze wszystkiego, co rozumiem, MVC3 jest jak MVC2, jeśli nie używasz Razor i naprawia szereg mniejszych błędów, które miał MVC2. Więc w moich oczach nie widzę powodu, aby **NIE** używać MCV3. Musi być coś, czego mi brakuje. Ponieważ tak naprawdę nie mam żadnych mentorów, do których mógłbym się zwrócić w prawdziwym świecie, przychodzę tutaj. Jakie problemy są z MVC3, które mogą skłonić go do powiedzenia tego, czego mi brakuje?


title: Jak obsługiwać wymagających klientów?

text: Często jestem przeciążony kontraktami. Przez większość czasu żongluję co najmniej 2 projektami, oprócz licznych stron internetowych, które muszę utrzymywać i konserwować. Niestety, wielu moich klientów będzie stale oczekiwało aktualizacji - stale dodają do listy rzeczy do zrobienia więcej, niż jakikolwiek programista byłby w stanie nadążyć, i wariują, ponieważ termin był już spóźniony, gdy zaczynałem projekt. Ciągle spotykam się z faktem, że większość klientów tak naprawdę nie rozumie ilości pracy, którą można wykonać za kulisami, zwłaszcza jeśli nie ma to wpływu na wzrok. Czy ktoś zna dobre sposoby radzenia sobie z sytuacjami, które mogę przeoczyć?


title: Wstaw błędy gramatyczne w poprawnym zdaniu

text: Chciałbym wstawić błędy gramatyczne (nie literówki) w poprawnym zdaniu, aby zrobić małą grę. Na przykład: Nazywam się Jan -> Nazywam się Jan Opuszcza pokój -> Opuszcza pokój Znalazłem tylko kilka narzędzi do wykrywania języków, ale nic o wykrywaniu czasowników/rzeczowników/przymiotników/transformacji. Czy istnieje narzędzie, które mogłoby mi pomóc?


title: Jak utrzymujesz produktywność poza pracą? (Harmonogram programowania)

text: Lubię programować, ale programowanie w pracy to tylko praca. Chciałbym dalej rozwijać swoje osobiste zainteresowania programowaniem. Przez cały tydzień wyobrażam sobie, że w weekend kończę mały projekt lub kończę książkę związaną z programowaniem. Jednak w rzeczywistości często nie spełniam swoich oczekiwań. Często dostaję tylko jeden lub dwa rozdziały czytania i jeszcze mniej kodowania. W rzeczywistości spędzę czas surfując po Internecie, oglądając telewizję lub odwiedzając znajomych i odpoczywając... bo to weekend. Ale kiedy nadchodzi niedzielny wieczór, często zastanawiam się nad moim weekendem i jestem bardzo rozczarowany tym, jak wykorzystałem czas. Więc moje pytanie brzmi: jak utrzymujesz swoją produktywność poza pracą? Jestem pewien, że niektórzy programiści mogliby mniej dbać o programowanie w swoim wolnym czasie. Chociaż myślę, że większość programistów, zwłaszcza na stackexchange, pasjonuje się programowaniem. 1. Czy powinienem spędzić weekend na programowaniu, czy też wypalę się i odmówię programowania, jeśli poświęcę na to tyle czasu? 2. Jak mam zająć się programowaniem w wolnym czasie? Czy powinienem ustalić harmonogram? Ile czasu powinienem na to poświęcić? **Co najważniejsze, jak mam postępować zgodnie z tym harmonogramem?** Odwlekanie to jedyna ludzka natura. Wiem, że jest tu wiele pytań. Nie wahaj się odpowiedzieć na te, które dotyczą Twojego skupienia poza pracą. Jestem pasjonatem programowania, ale po 40 godzinach programowania może być trudno utrzymać ten entuzjazm.


title: Jak delegaci pasują do ASP.NET?

text: Deweloper powiedział mi, że użyli delegatów do powiązania większości swoich zdarzeń w ASP.NET. Do tego czasu nawet nie wiedziałem, że można sensownie używać delegatów w ASP.NET. Rozumiem, że ASP.NET/MVC3 działa za pośrednictwem czasowników HTTP, a nie zdarzeń/delegatów. Czy możliwe jest nawet wywołanie pożaru zdarzenia od klienta do serwera? To wydaje mi się nieprawidłową formą IPC.


title: Jakie są kompromisy związane z odwoływaniem się do kontekstu w bibliotece?

text: `Kontekst` jest jedną z podstawowych klas Androida, a wiele funkcji, które zawiera, jest użytecznych w projektach bibliotecznych Androida, szczególnie przy dostępie do konfiguracji. Jakie są kompromisy związane z dostępem do `Kontekstu` w bibliotece, czy to przez wstrzyknięcie, czy przez utworzenie podklasy `Aplikacji` w bibliotece i utworzenie podklasy tej w aplikacji. Czy to sprawia, że aplikacja jest krucha lub wprowadza nieodpowiednie sprzężenie?


title: Aktualizacja haszowania hasła bez wymuszania nowego hasła dla istniejących użytkowników

text: Utrzymujesz istniejącą aplikację z ustaloną bazą użytkowników. Z czasem zostaje podjęta decyzja, że obecna technika haszowania haseł jest przestarzała i wymaga aktualizacji. Ponadto, ze względu na UX, nie chcesz, aby istniejący użytkownicy byli zmuszani do aktualizowania hasła. Cała aktualizacja skrótu hasła musi odbywać się za ekranem. Załóżmy „uproszczony” model bazy danych dla użytkowników, który zawiera: 1. ID 2. Email 3. Hasło Jak rozwiązać taki wymóg? * * * Moje aktualne przemyślenia to: * utworzyć nową metodę haszowania w odpowiedniej klasie * zaktualizować tabelę użytkowników w bazie danych, aby zawierała dodatkowe pole hasła * Gdy użytkownik pomyślnie zaloguje się przy użyciu nieaktualnego hash hasła, wypełnij drugie pole hasła ze zaktualizowanym hashem To pozostawia mi problem, że nie mogę racjonalnie odróżnić użytkowników, którzy mają, i tych, którzy nie zaktualizowali hash hasła, a zatem będę zmuszony sprawdzić oba. Wydaje się to strasznie wadliwe. Co więcej, zasadniczo oznacza to, że stara technika haszowania może zostać zmuszona do pozostania w nieskończoność, dopóki każdy użytkownik nie zaktualizuje swojego hasła. Dopiero w tym momencie mogłem zacząć usuwać stary test haszowania i usunąć zbędne pole bazy danych. Głównie szukam tutaj kilku wskazówek projektowych, ponieważ moje obecne „rozwiązanie” jest brudne, niekompletne, a co nie, ale jeśli do opisania możliwego rozwiązania wymagany jest kod, możesz użyć dowolnego języka.


title: Uwierzytelnij natywną aplikację mobilną za pomocą REST API

text: Niedługo rozpoczynam nowy projekt, którego celem jest aplikacja mobilna na wszystkie główne platformy mobilne (iOS, Android, Windows). Będzie to architektura klient-serwer. Aplikacja ma charakter informacyjny i transakcyjny. W przypadku części transakcyjnej wymagane jest posiadanie konta i zalogowanie się przed dokonaniem transakcji. Jestem nowy w programowaniu mobilnym, więc nie wiem, jak odbywa się część dotycząca uwierzytelniania na tych platformach. Klienci będą komunikować się z serwerem poprzez REST API. Oczywiście będzie korzystał z protokołu HTTPS. Nie zdecydowałem jeszcze, czy chcę, aby użytkownik logował się podczas otwierania aplikacji, czy tylko podczas wykonywania transakcji. Otrzymałem następujące pytania: 1) Podobnie jak w przypadku aplikacji Facebook, poświadczenia wpisujesz tylko wtedy, gdy otwierasz aplikację po raz pierwszy. Następnie za każdym razem, gdy otwierasz aplikację, logujesz się automatycznie. Jak to osiągnąć? Po prostu szyfrując i przechowując dane uwierzytelniające na urządzeniu i wysyłając je przy każdym uruchomieniu aplikacji? 2) Czy muszę uwierzytelniać użytkownika dla każdego żądania (transakcyjnego) kierowanego do REST API, czy też stosować podejście oparte na tokenach? Zachęcamy do zaproponowania innych sposobów uwierzytelniania. Dziękuję!


title: Generowanie kodu i IDE a pisanie per Hand

text: Programuję od około roku. Dość szybko zdałem sobie sprawę, że potrzebuję świetnego narzędzia do pisania kodu i nauczyłem się Vima. Byłem zadowolony z C i Ruby i nigdy nie podobał mi się pomysł IDE. Do czego zachęciło mnie dużo czytania o programowaniu.[1] Jednak zacząłem od (mojego pierwszego) Projektu Java. W kursie CS używaliśmy paradygmatu wizualnego i zachęcaliśmy program do generowania naszego kodu z diagramu klas. Nie podobał mi się ten pomysł, ponieważ: 1. Nasz diagram klas był wadliwy. 2. Studenci bardziej doświadczeni w Javie powiedzieli, że napisaliby kod odręcznie. 3. Nigdy wcześniej nie pisałem żadnej Javy i nie rozumiałem zbyt wiele z wygenerowanego kodu. Więc przyjąłem inne podejście i napisałem wszystkie metody na rozdanie (w tym getter i setter). Moi członkowie zespołu napisali swoje części (częściowo wygenerowane przez VP) w IDE i ja też byłem „zmuszony” do korzystania z niego. Zdałem sobie sprawę, że wygenerowali taką samą ilość kodu w krótszym czasie i nie spędzili dużo czasu na ustawianiu CLASSPATH i pisaniu skryptów do kompilacji tego sukinsyna. Dodatkowo musieliśmy zaimplementować GUI i nie wiem, jak moglibyśmy to zrobić w rozsądnej sprawie w Vimie. Oto mój problem: zakochałem się w Vimie i sposobie uniksowym. Ale wygląda na to, że dla wykonania tej pracy (na czas) podejście do generowania IDE/kodu jest lepsze. Czy masz równe doświadczenia? Czy Java z natury języka jest po prostu bardziej odpowiednia dla podejścia generowanego przez IDE/kod? A może brakuje mi wiedzy, aby wyprodukować taką samą ilość kodu „na rozdanie”? [1] http://heather.cs.ucdavis.edu/~matloff/eclipse.html


title: Jak nazywasz interfejs bez metod definiujących używanych jako ustawiacze właściwości?

text: W ASP.NET i C# natknąłem się na to wcześniej. Twoja klasa musi zaimplementować interfejs `ISomething`, aby coś w super klasie mogło ci coś dostarczyć. Nie pamiętam szczegółów, bo natknąłem się na to jakiś czas temu, ale miało to coś wspólnego ze zmiennymi sesji w ASP.NET C#. Był częścią frameworka .NET. Początkowo myślałem, że ta praktyka jest raczej głupia i można ją z większą wdziękiem wdrożyć. Jednak teraz łapię się na tym, że wdrażam to w architekturze własnego projektu, nad którym pracuję. Używając refleksji, wykrywam włączanie lub wyłączanie zachowania na podstawie tego, czy implementuje ono ISomething. Po prostu pusty interfejs bez żadnych metod. Jaka jest nazwa techniczna tego i czy jest to dobra praktyka?


title: Jak radzisz sobie z kosztami zbyt szybkiej zmiany?

text: Jak większość współczesnych programistów, cenię zasady Agile, takie jak współpraca z klientem i reagowanie na zmiany, ale co się dzieje, gdy właściciel produktu (lub ktokolwiek określa wymagania i priorytety) zbyt często zmienia wymagania i priorytety? Jak kilka razy dziennie? Niedawno odziedziczyłem niewielką bazę kodu, która była błędna, niekompletna i nie radziła sobie nawet z najprostszym scenariuszem, jaki powinien. Potrafię poradzić sobie z problemami technicznymi, ale otrzymuję kilka e-maili, SMS-ów lub telefonów dziennie z informacją „O Boże, MUSISZ nad tym pracować TERAZ! NAJWYŻSZY PRIORYTET! To MUSI!!! jeden” (to tylko lekka przesada) Co gorsza, większość rzeczy to drobne szczegóły, które nie są nawet istotne dla tego, co oprogramowanie ma faktycznie robić, a wdrożenie i tak zajęłoby kilka dni. Próbowałem tłumaczyć, że czasu jest niewiele i że powinniśmy najpierw skupić się na najważniejszych rzeczach, ale wydaje się, że coś się gubi w tłumaczeniu, ponieważ to samo dzieje się dzień lub dwa później. Czy istnieje jakaś rola Właściciela Produktu-Obsługi, dogłębne studium, metafora lub cytat, który może pomóc mi zmniejszyć ilość zmarnowanego wysiłku lub przynajmniej wyjaśnić koszty tego chaotycznego zachowania?


title: Czy Rhino ma przyszłość?

text: Chcę dodać poważne skrypty do mojej aplikacji Java, a JavaScript byłby świetnym wyborem językowym. Martwi mnie jednak projekt Rhino i jego przyszłość. Podczas gdy Groovy/Jruby itp. podlegały ciągłym aktualizacjom, a silniki takie jak V8 i SpiderMonkey zapewniają ciągły i znaczący wzrost wydajności; Rhino słabnie z ostatnim wydaniem w marcu '09. Widziałem trochę pracy przy hakowaniu Rhino: * Wielkie Grzmiące Nosorożce! prezentacja firmy Oracle * Poznaj i zaimplementuj projekt JDK7 InvokeDynamic Google Summer of Code Ale nie ma nic solidnego w faktycznym połączeniu tego kodu z projektem i pozyskiwaniu wokół niego aktywnej społeczności twórców. Czym jest mapa drogowa Rhino? Na przykład, czy jest jakiś plan wprowadzenia „invokedynamic” do świata Rhino?


title: Skąd wiedzieć, ile powinno być szczegółowych wymagań?

text: Ta wątpliwość ma związek z fazą zbierania wymagań każdej iteracji w jednym projekcie opartym na zwinnych metodykach. Powstało z następującej sytuacji: załóżmy, że spotykam się z moim klientem, aby zebrać wymagania i mówi coś w stylu: „Muszę mieć możliwość dodawania, edytowania, usuwania i przeglądania danych moich pracowników”. W porządku, ale jak powinniśmy zarejestrować ten wymóg? Czy powinniśmy po prostu napisać coś w stylu „system musi pozwalać użytkownikowi na zarządzanie pracownikami”, czy też powinniśmy pisać bardziej konkretnie dla punktów 1. System musi umożliwiać użytkownikowi dodawanie pracowników; 2. System musi umożliwiać użytkownikowi wgląd w dane pracowników; 3. System musi umożliwiać użytkownikowi edycję pracowników; 4. System musi umożliwiać użytkownikowi usuwanie pracowników; Oczywiście to tylko przykład sytuacji, w której miałem wątpliwości. Najważniejsze tutaj jest: jak wiedzieć, jak bardzo muszę być szczegółowy i jak wiedzieć, co powinienem zarejestrować? Czy istnieją strategie radzenia sobie z tymi rzeczami? Z góry bardzo dziękuję!


title: Jak uniknąć pracy w złym oddziale?

text: Ostrożność zwykle wystarcza, aby zapobiec problemom, ale czasami muszę dwukrotnie sprawdzić gałąź, nad którą pracuję ( _np._ "hmm... jestem w gałęzi `dev`, prawda?") poprzez sprawdzenie ścieżka kontroli źródła losowego pliku. Szukając prostszego sposobu, pomyślałem o odpowiednim nazwaniu plików rozwiązania ( _np. _ `MySolution_Dev.sln`), ale z różnymi nazwami plików w każdej gałęzi, nie mogę scalić plików rozwiązania. Nie jest to wielka sprawa, ale czy są jakieś metody lub „małe sztuczki”, których używasz, aby szybko upewnić się, że jesteś we właściwej branży? Używam programu Visual Studio 2010 z TFS 2008.


title: Przechowujesz kod JavaScript dla konkretnej strony w witrynie opartej na technologii AJAX?

text: Mam ogólne pytanie dotyczące umieszczania kodu JavaScript w aplikacji internetowej opartej na technologii AJAX. W poprzedniej pracy mieliśmy tendencję do umieszczania wszystkiego w jednym monolitycznym pliku. Kiedy utrzymywanie tego pliku stało się zbyt trudne, podzieliliśmy go na wiele mniejszych plików i „skleiliśmy” je z powrotem za pomocą „ładowacza” php (właściwie tylko kilka instrukcji include). Ponieważ wszystkie moje strony są dynamicznie ładowane przez AJAX, Nie mogę po prostu mieć różnych plików wywoływanych osobno dla każdej strony. Oczywistą wadą tej metody jest to, że cały twój JavaScript jest ładowany przez użytkownika końcowego, nawet jeśli nie jest to wymagane przy pierwszym załadowaniu strony. (Co pogłębia problem, im więcej masz stron) Aby obejść ten problem, zacząłem umieszczać specyficzny dla strony skrypt JavaScript na samej stronie szablonu, w tagu `<script>` na dole, który działa zgodnie z przeznaczeniem. Załadowany jest tylko żądany javascript. Nie jestem jednak pewien, czy ta praktyka jest tabu, czy też istnieją lepsze strategie ładowania mojego javascriptu. Mam wrażenie, że mieszanie mojego szablonu z moim skryptowym kodem to przepis na katastrofę..


title: Czy spójność naprawdę zmniejsza sprzężenie?

text: _Spójne klasy redukują sprzężenia_ ' Więc jeśli klasy kohezyjne lub klasy połączone redukują sprzężenia (unia), którego elementu układanki mi brakuje? BTW, to zdanie zaczerpnąłem z artykułu o identyfikowaniu klas przed jakimkolwiek rozwojem, w którym staram się zrozumieć cały sens, dlaczego, kiedy, jak używać „takich” poszczególnych klas, polimorfizmu, abstrakcji itp. Na pewno Jestem na początkowym etapie, jeśli chodzi o OOD. Przeczytałem kilka książek, ale nie rozumiem związku między spójnością a sprzężeniem.


title: Plusy i minusy używania ogólnych delegatów jako funkcji zagnieżdżonych

text: Taki kod pisałem już wcześniej: private void Strings_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var onAdd = new Action(() => { if(e.NewItems != null) { foreach(string item in e.NewItems) {                     // Zrób coś                 }             }         }); var onRemove = new Action(() => { if(e.OldItems != null) { foreach(string item in e.OldItems) { // Zrób coś } } }); switch(e.Action) { case NotifyCollectionChangedAction.Add: onAdd(); przerwanie; case NotifyCollectionChangedAction.Remove: onRemove(); przerwanie; case NotifyCollectionChangedAction.Replace: onRemove(); naDodaj(); przerwanie; } } Uważam, że ten styl jest przydatny, gdy istnieje niewielka funkcja wielokrotnego użytku, która ma zastosowanie tylko w zakresie innej funkcji. Jednak podczas przeglądu kodu otrzymałem informację zwrotną, że jest to niepotrzebnie skomplikowane i trudne do odczytania. Osobiście uważam ten styl za nieco elegancki, ale widzę argument za czytelnością. Jakie inne zalety i wady ma ten styl?


title: Programowanie pytania strukturalnego, kontrolowanie wielu stanów i określonych przejść między stanami dla każdego przypadku

text: To jest dla mnie pytanie teoretyczne, aby spróbować napisać lepszy kod. Jestem całkiem nowy, więc mam nadzieję, że używam terminów takich jak stan we właściwy sposób. Jak powinienem myśleć o tym problemie? Koduję coś, co działa, ale cokolwiek robię, wydaje mi się to skomplikowane, trudne do zrozumienia i trudne do zmodyfikowania. Odtwarzam klip wideo z identyfikatorem, chcę również, aby mógł dynamicznie przełączać się na widok miniatury tego klipu wideo. Chcę mieć również możliwość ustawienia tego wideo pustego i wyłączenia wszystkich połączeń, które nie są potrzebne, staram się to wszystko robić wydajnie - nie łączę się ponownie z serwerem, gdy nie jest to potrzebne itp. ** więc ja mieć-** podłączony -> identyfikator wideo wł./wył. -> tryb ciągu -> strumieniowe wideo/widok miniatur/wyłączony **Mam nadzieję, że zobaczysz mój dylemat z kilkoma przykładami-** _Przypadek 1.Użytkownik zaczyna od zera i chce aby zobaczyć miniaturę wideo "a"_ -połącz się z serwerem dla "a", wyślij prośbę o miniaturkę, włącz obiekt miniatury. _Przypadek 2.Użytkownik zaczyna oglądać miniaturę wideo „a” i chce rozpocząć oglądanie strumienia wideo „b”_ -porównaj ciągi „a” i „b” – zobacz, że są różne. ukryj obiekt miniatury i wyczyść jego bufor. Odłącz się od serwera „a” i połącz się z serwerem „b”. rozpocząć przesyłanie strumieniowe wideo, włączyć obiekt wideo, zażądać miniatury z serwera, aby została załadowana do pamięci na wypadek, gdyby użytkownik chciał przełączyć się w tryb miniatur. _Przypadek 3.użytkownik ogląda strumień „b” i chce zobaczyć miniaturę „b”_ -porównaj ciągi „b” i „b”- zobacz, że są takie same i pozostań w kontakcie z serwerem, ukryj obiekt wideo i zatrzymaj transmisję, włącz obiekt miniatury, wyślij kolejne żądanie do serwera o miniaturę... Wszystkie te opcje robią mi wrażenie, chcę, aby wybrał najbardziej efektywny sposób przejścia z jednego stanu do drugiego, ale wszystkie inne opcje dezorientują mnie. Myślę, że szukam pomocy w kwestii tego, jaki jest najlepszy sposób na uporządkowanie tego, ponieważ to, co robię w tej chwili, wydaje się bardzo mylące, kończy się na ogromnym drzewie zagnieżdżonych przypadków wielu konkretnych przypadków, a następnie łatam, gdzie coś idzie nie tak. if (podłączony, ale kiedyś był rozłączony) { if (tryb przesyłania strumieniowego, ale kiedyś był miniaturą) {... if (tryb przesyłania strumieniowego, ale kiedyś był przesyłany strumieniowo) {... if (podłączony, ale był podłączony) {.. .. if (rozłączone, ale kiedyś połączone) {.... if (rozłączone, ale kiedyś odłączone) {... to trwa w nieskończoność..


title: Czy powinienem zachować w CV technologię, z której od dawna nie korzystałem?

text: Pracowałem z OfBiz i Opentaps przez kilka miesięcy w 2005 roku i wtedy czułem się bardzo komfortowo w programowaniu z nimi. Kilka tygodni temu spojrzałem na kod Opentaps i wydaje mi się, że nie rozumiem ani nie pamiętam czegokolwiek z obecnego kodu. Czy nadszedł czas, aby usunąć ją z mojego CV jako technologię, którą znam?


title: Używanie SDK z szalonym kodem

text: Ostatnio musiałem pracować z pakietem SDK, który zawierał wiele szalonych części*. Nie używanie SDK nie wchodziło w grę, ponieważ musiał rozmawiać z oprogramowaniem innych firm. Jaki jest najlepszy sposób na poradzenie sobie z szalonym kodem? Generalnie używałem metod statycznych do konwersji między sensownymi typami danych do wymaganego formatu (tj. bool na yesNo). Ta metoda doprowadziła jednak do wielu wywołań bardzo nieintuicyjnych metod statycznych (która z trzech metod dateToString powinna być wywoływana gdzie?). Czy lepszym podejściem byłoby przechowywanie prawie wszystkiego jako ciągu w bazie danych? Lub ewentualnie przekonwertuj każdy typ danych w wierszu, aby był przejrzysty (chociaż z powtarzającym się kodem). Być może jest jakieś bardziej eleganckie rozwiązanie, o którym nie pomyślałem? * _Niektóre metody wymagały wyliczenia o nazwie yesNo, które zawierało „Tak”, „y”, „Nie” i „n”. Istniało również wiele różnych formatów łańcuchów, które chcieli reprezentować niespójnie używane daty i godziny. Były też inne mniejsze fragmenty szalonego kodu._


title: Czy naprawdę istnieje związek między liczbą osób przydzielonych do projektu a liczbą defektów?

text: Oto cytat z podręcznika szkoleniowego dotyczącego SLIM i szacowania oprogramowania: > Zauważ również, że istnieje korelacja między wysiłkiem a defektami. Oznacza to, że > im więcej osób zostanie przypisanych do projektu o danej wielkości, tym więcej > będzie braków. Nakład pracy to osobo-czas (osobo-lata, osobo-miesięcy) dla projektu. Defekty to liczba defektów wykrytych w dowolnym momencie cyklu życia. Rozmiar definiuje się jako przypadki użycia, punkty funkcyjne lub SLOC, które składają się na projekt. Wydaje się to sprzeczne z intuicją, zakładając dobry proces i zdolnych inżynierów. Na przykład posiadanie większej liczby osób oznacza więcej uwagi na wszystkie artefakty (specyfikacje wymagań, projekty, kod, testy). Poza tym, że mam więcej oczu, moja intuicja podpowiada, że w projekcie, który wykorzystuje odpowiednie techniki jakości, istnieje niewielki związek między wysiłkiem a defektami. Nie udało mi się znaleźć żadnych dokumentów, poza tymi dotyczącymi Modelu Putnama (który jest używany przez SLIM), które sugerowałyby jakikolwiek znany związek między wadami a wysiłkiem lub wadami i liczbą osób w projekcie. Czy jest to znany związek i czy twierdzenie, że „więcej ludzi = więcej wad” jest słuszne?


title: Używanie Jythona i Tomcata w pakiecie - czy powinniśmy w ogóle próbować?

text: Czy kiedykolwiek używałeś Jythona w pakiecie z tomcat w jakiejś poważnej, gotowej do produkcji usłudze? Jakie zalety i wady możesz wymienić? Czy warto próbować, jeśli wszyscy w zespole nie mają problemów z kodowaniem na Javie, ale znają się na pythonie?


title: Usługa WCF, która pobiera plik XML

text: Mam wymagania klienta, w których należy uwidocznić usługę sieci web, która pobiera XML. Klient wykorzysta moją usługę sieciową i wyśle XML. Ta usługa internetowa musi być asynchroniczna. Czy mógłbyś zasugerować jakieś dobre sprawdzone podejście? z zaletą / wadą


title: Czy montaż jest nadal aktualny?

text: Czy istnieją główne różnice między językiem asemblerowym a językami wyższego poziomu, jeśli chodzi o kodowanie i/lub zarządzanie projektami? Oczywiście potrzeba więcej instrukcji w asemblerze do wykonania określonej operacji niż w większości innych języków, ale czy istnieją różnice, które wpływają na to, jak projekt musi (lub powinien) być uruchamiany w oparciu o docelowy język asemblera (w szczególności język asemblera x86/x64) ? Do tego stopnia, że istnieją różnice między asemblerem a innymi językami, wydaje się rozsądne zgadywać, że przynajmniej niektóre z nich są zaletami dla innych języków. Czy ktoś może wskazać konkretne wady języka asemblera i sposoby na złagodzenie tych wad? Jednym konkretnym przykładem może być dostępność personelu. Czy ktoś miał problem ze znalezieniem doświadczonych programistów języka asemblerowego, a jeśli tak, jakie kroki można podjąć, aby złagodzić ten problem?


title: Co to jest system czasu rzeczywistego

text: Jaka jest najwłaściwsza definicja systemu czasu rzeczywistego? Czy rezerwacja kolejowa online jest systemem czasu rzeczywistego? Czy system sterowania samolotem jest systemem czasu rzeczywistego? Czy system kontroli procesu jest systemem czasu rzeczywistego?


title: Jeden programista, dwie maszyny

text: Obecnie używam Maca Pro do programowania Xcode, ale rozważam zakup MacBooka Air, gdy pojawią się nowsze modele. Jak powinienem współpracować z _sobą_, gdy używam obu komputerów w tym samym projekcie? Czy powinienem używać Git, czy powinienem po prostu uzyskać dostęp do Maca Pro jako dysku sieciowego z MacBooka, czy czegoś innego?


title: Jakie są projekty baz danych, które obsługują śledzenie pochodzenia?

text: # Środowisko * PostgreSQL 9.1 * Java # Problem Postaram się tutaj zilustrować problem jak najprościej: próbuję zapisać następującą zależność: Węzeł 1 => Węzeł 2 => Węzeł 3 Gdzie Węzeł 1 jest rodzicem Węzeł 2, a Węzeł 2 jest rodzicem węzła 3. W tabeli bazy danych początkowy projekt śledzi te dane w formie połączonej listy. Jednak uważam, że jest to wyjątkowo nieefektywne, ponieważ za każdym razem, gdy chcę prześledzić rodowód powiedzmy Węzła 1, musiałbym pobrać Węzeł 2, a następnie z Węzłem 2 odzyskałbym Węzeł 3. Ponieważ wyświetlałbym rodowód Węzła 1 do użytkownika, musiałbym wykonać 3 oddzielne wywołania do bazy danych, aby wyświetlić te informacje. Chciałbym też się cofnąć, ale dla uproszczenia pominąłem tę część. # Alternatywy Niektóre alternatywy, które rozważałem, ale na które nie mogę się teraz udać, to Neo4j i inne podobne rozwiązania. Niestety w tej chwili muszę zostać w Postgresql. # Pytanie Czy istnieje wzorzec projektowy, dzięki któremu mogę pobrać wszystkie te informacje naraz? Jeśli tak, jak byś zaimplementował w powyższym przykładzie? # AKTUALIZACJA Dzięki komentarzowi @MichaelT i znalezieniu Common Table Expressions, zostałem doprowadzony do tego linku, który wydaje się dostarczać więcej informacji na ten temat: http://stackoverflow.com/questions/53108/is-it-possible-to -make-a-recursive- sql-query


title: Czy powinienem przechowywać dane kodów pocztowych w Wielkiej Brytanii w mojej bazie danych?

text: Tworzę witrynę internetową dla odbiorców z Wielkiej Brytanii, która będzie wykorzystywać dane o lokalizacji, aby oferować wyniki wyszukiwania na podstawie żądanej lokalizacji lub adresu domowego. Mam dużą listę kodów pocztowych i lokalizacji geograficznych w Wielkiej Brytanii, które mogę przeanalizować i wprowadzić do mojej bazy danych, aby użyć ich w wyszukiwaniu. Zastanawiam się, czy to jest właściwe? Czy lepiej byłoby po prostu polegać na API, takim jak geolokalizacja Google?


title: Jakie są główne strony internetowe programistów w innych krajach?

text: Patrząc na dane demograficzne witryn takich jak ta, wydaje się, że w USA istnieje bardzo duża liczba użytkowników. Wiem, że toczyły się dyskusje na temat używania języka angielskiego jako programisty, ale istnieją duże kraje z dużymi bazami programistów, które muszą korzystać ze zlokalizowanych witryn. W szczególności w krajach takich jak Brazylia i Chiny, na jakich stronach programiści chodzą na dyskusje? Czy wiele wątków prowadzi do stron anglojęzycznych, takich jak te? We Francji oczywiście wolą swój własny język, jak wyglądają ich odpowiedniki? Nie chcę zamieniać tego w dyskusję mówiącą po angielsku, taką jak ta, to raczej ogólna ciekawostka z zakresu programowania transkulturowego.


title: Rozszerzalność w systemach wielodostępnych?

text: > **Możliwe powielenie:** > Jak zarządzasz rozszerzalnością w swoich systemach wielodostępnych? Zapytałem o to na StackOverflow, ale pomyślałem, że może to być bardziej odpowiednie dla programistów. * * * Mam teraz kilka dużych produktów dla wielu dzierżawców opartych na sieci Web i bardzo szybko widzę, że będzie wiele dostosowań dostosowanych do dzierżawców. Dodatkowe pole tu lub tam, może dodatkowa strona lub dodatkowa logika w środku przepływu pracy - takie rzeczy. Niektóre z tych dostosowań można wprowadzić do produktu podstawowego i to świetnie. Niektóre z nich są bardzo konkretne i przeszkadzają innym. Mam na myśli kilka pomysłów na zarządzanie tym, ale żaden z nich nie wydaje się dobrze skalować. Oczywistym rozwiązaniem jest wprowadzenie mnóstwa ustawień na poziomie klienta, pozwalających na włączanie różnych „funkcji” dla każdego klienta. Wadą tego jest oczywiście ogromna złożoność i bałagan. Można naprawdę wprowadzić ogromną liczbę ustawień, a z czasem różne rodzaje logiki (prezentacja, biznes) mogą wymknąć się spod kontroli. Następnie pojawia się problem z polami specyficznymi dla klienta, który prosi o coś czystszego niż tylko dodanie kilku pól dopuszczających wartość null do istniejących tabel. Więc co robią ludzie, aby tym zarządzać? Force.com wydaje się być mistrzem rozszerzalności; oczywiście stworzyli platformę od podstaw, która jest bardzo rozszerzalna, dodajesz prawie wszystko za pomocą ich internetowego interfejsu użytkownika. FogBugz zrobił coś podobnego, tworząc solidny model wtyczek, który, jak o tym pomyśleć, mógł być w rzeczywistości inspirowany przez Force. Wiem, że poświęcili na to dużo czasu i pieniędzy i jeśli się nie mylę, intencją było wykorzystanie jej wewnętrznie do przyszłego rozwoju produktu. Brzmi jak coś, co mógłbym kusić, ale prawdopodobnie nie powinienem. :) Czy potężna inwestycja w architekturę wtykową to jedyna droga? Jak radzisz sobie z tymi problemami i jakie widzisz rezultaty?


title: Oprogramowanie do organizowania i utrzymywania dokumentacji projektowej, specyfikacji?

text: Poszukuję oprogramowania do organizowania i utrzymywania dokumentacji wewnętrznej projektów, specyfikacji, wymagań itp. Obecnie całą dokumentację przechowujemy w postaci wielu plików MS Word DOC w repozytorium kontroli źródeł, co daje nam kontrolę wersji i to jest miłe. Ale nie możesz przeszukiwać tych informacji, tworzyć powiązań między nimi, kategoryzować, współpracować. _Wymagania, preferencje:_ * Zero instalacji po stronie klienta (oparte na sieci WWW). * Kontrola wersji dokumentu. * Adnotacje do dokumentów. * Łączenie dokumentów. * Pełne wyszukiwanie (cała dokumentacja). * MS Word (*.doc) import\eksport. * Edytor tekstu WYSIWYG. _Systemy, które do tej pory odkryłem i wypróbowałem:_ * MediaWiki * XWiki * Confluence


title: Dlaczego większość korzysta z Cygwina, a nie z Uwina?

text: Większość badaczy akademickich, których znam, celuje tylko w *nix i polega na Cygwin, aby udostępnić swoje aplikacje w systemie Windows. Próbowałem wielu z tych projektów i zawsze uważałem je za zbyt niestabilne, aby można je było poważnie wykorzystać podczas pracy na Cygwinie. Uwin wygląda na obiecującą alternatywę dla Cygwina. Jeszcze go nie wypróbowałem, ale znalazłem kilka komentarzy, że jest szybszy i stabilniejszy. Jednak nie widziałem żadnego wykorzystania Uwin do obsługi uruchamiania aplikacji *nix w systemie Windows. Jakie są społeczne i/lub techniczne przyczyny braku popularności Uwina?


title: Wybór programu różnicowego dla Mercurial

text: Postanowiłem spróbować przyczynić się do rozwoju Firefoksa, a oni używają Mercurial do kontroli źródeł. W dokumentacji dotyczącej korzystania z Mercuriala zalecano, aby wybrać program do porównywania i zrobić to przed rozpoczęciem kodowania. Wymieniają kilka opcji, z których jedna wydaje się być standardowym programem do porównywania systemów Unix/Linux, który jest mi trochę zaznajomiony z podstawowym użyciem. Chodzi o to, że nie zdawałem sobie sprawy, że program diff może być nawet problemem i mam wrażenie, że nie będę wiedział, jak wybrać jeden, dopóki nie wybiorę niewłaściwego i jakoś mnie to przekręci. Aby pominąć tę niepotrzebną przeszkodę, chciałbym zapytać, na co powinienem zwracać uwagę przy wyborze programu porównującego iw jakich przypadkach wybór jest ważny (iw jaki sposób)?


title: Jak pomóc członkom zespołu docenić wkład innych?

text: Smutną rzeczywistością jest to, że członkowie zespołu pełniący różne role widzą się różnymi oczami. Powyższy link przedstawia bardzo prawdziwy obraz tego, jak postrzegamy się nawzajem w SDLC. Prawda jest jednak taka, że jako zespół potrzebujemy siebie nawzajem, aby odnieść sukces. Pracując razem, a nie przeciwko sobie, wydajność zespołu rośnie wykładniczo. Jako członek zespołu (lider, szef, współpracownik), który to rozumie, w jaki sposób można stworzyć atmosferę wzajemnego szacunku dla roli w procesie? Na przykład, jak sprawić, by programiści zrozumieli znaczenie testerów QA i wartość projektantów? Jak sprawić, by projektanci docenili wkład programistów? itp...


title: Jak algorytmy rozwiązywania problemów napotkanych w wywiadach przekładają się na rozwiązania w świecie rzeczywistym?

text: Niedawno ukończyłem studia licencjackie z informatyki i szukam pracy. Podczas poszukiwań napotkałem kilka interesujących (i trudnych) problemów, które wymagały sprytnych algorytmów do rozwiązania. Używam również google code jam jako zestawu ćwiczeń. Nie rozumiem, jak te rozwiązania przekładają się na rozwiązywanie rzeczywistych problemów. Wiele problemów wydaje mi się nie tylko wymyślonych i fantastycznych, ale także bardzo specyficznych, aby być rozwiązaniem ogólnego przeznaczenia (chociaż nie jest niemożliwe rozwinięcie ich za pomocą pomysłowości). Czy te problemy służą tylko testowaniu umiejętności rozwiązywania problemów, czy też są one zakamuflowane?


title: Mądrze jest wymieniać w CV informacje o zastrzeżonych doświadczeniach językowych?

text: Moja pozycja na początkowym etapie sprawiła, że nagle wszyscy zaczęli korzystać z zastrzeżonego języka skryptowego. Pomyśl o tym jako PASCAL/PERL. W każdym razie, ponieważ jest to praca na poziomie podstawowym, na pewno w przyszłości przeniosę się do pracy. Czy mądrze byłoby dodać w moim CV, że mam doświadczenie w używaniu języków zastrzeżonych? Myślę, że oznaczałoby to, że szybko uczę się nowego stylu i składni w locie, ale wydaje się to niepotrzebnym dodatkiem do kariery, która wymaga lat nauki.


title: Sprawdzanie pustych kolekcji przy (nie)równościach - jaka jest najlepsza praktyka?

text: Od dłuższego czasu mam w zwyczaju sprawdzać, czy kolekcja (tablica, słownik, cokolwiek) jest niepusta z nierówną jakością. Na przykład: if ( MyArray.Length < 1 ) { // Zrób coś, jeśli tablica jest pusta } Czasami robię to również dla łańcuchów i innych rodzajów kolekcji. W praktyce powinno to wyglądać tak samo, jak if ( MyArray.Length == 0 ) { // Zrób coś, jeśli tablica jest pusta } Ponieważ długość kolekcji i tak nie powinna być mniejsza niż 0, prawda? Więc zawsze myślałem - co do cholery, uwzględnię nierówności i będę podwójnie bezpieczny nawet w przypadku, gdy niebo spadnie. Ale dzisiaj przyszło mi do głowy, że druga wersja może być bardziej czytelna niż pierwsza. Wyraża to wyraźniej, że przypadek, którego szukam, to pusta tablica, co nie jest od razu widoczne w pierwszej wersji. Więc może powinienem użyć tego zamiast? Skoro, wiecie, jeśli długość kolekcji jest mniejsza niż 0, to i tak mam przerąbane. Z której wersji korzystasz i której polecasz innym (i dlaczego)? **Wyjaśnienie:** miało to być pytanie o proste kolekcje, w których uzyskanie `.Length` jest O(1) lub w inny sposób niedrogie. Jeśli `.Length` samo w sobie jest operacją nietrywialną (taką jak konieczność iteracji poprzez listę z łączem lub kontaktowanie się z bazą danych), to jest to całkowicie błędne podejście. Pytanie dotyczyło `x < 1` vs `x == 0` gdzie x jest nieujemną liczbą całkowitą (chociaż może nie być wpisana jako taka).


title: Pamięć stosu i sterty w Javie

text: Jak rozumiem, w Javie pamięć stosu zawiera prymitywy i wywołania metod, a do przechowywania obiektów używana jest pamięć sterty. Załóżmy, że mam klasę klasy A { int a ; Ciąg b; //gettery i settery } 1. Gdzie będzie przechowywany prymityw 'a' w klasie A? 2. Dlaczego w ogóle istnieje pamięć sterty? Dlaczego nie możemy przechowywać wszystkiego w stosie? 3. Kiedy obiekt zostanie wyrzucony na śmieci, czy stos związany z przedmiotem sprzeciwu zostanie zniszczony?


title: Jak zarządzasz testami jednostkowymi javascript?

text: Kiedy piszesz testy jednostkowe JavaScript, gdzie umieszczasz cały kod testowy? Widzę dwa potencjalne podejścia: 1. Pozostaw cały kod testowy w zwykłym projekcie sieciowym i wyraźnie nie wypuszczaj kodu na produkcję. 2. Utrzymuj osobny projekt, który uruchamia wszystkie twoje testy. W obu przypadkach widzę plusy i minusy. Jestem ciekaw, z czego korzystali bardziej doświadczeni programiści JavaScript.


title: 'dok' działa w prostych słowach

text: Chciałbym poznać ideę działania „dokowania” w aplikacjach. Pracowałem z aplikacjami, w których komponenty z poszczególnych formularzy są zadokowane na pojedynczym formularzu głównym, aby zapewnić niezbędne GUI. Ale nie mam pojęcia, co dzieje się w tle. Według Wikipedii _Dock to graficzny element interfejsu użytkownika, który zazwyczaj zapewnia użytkownikowi sposób uruchamiania, przełączania i monitorowania uruchomionych programów lub aplikacji._ Teraz jestem trochę zdezorientowany, jeśli jest to jakiś komponent, zdarzenie lub właściwość albo coś innego. EDYCJA: Aplikacja została opracowana w Delphi na platformie Windows. W Delphi jest coś więcej (dok ręczny i dok automatyczny).


title: Deklaracje funkcji opartych na warunku

text: Niedawno natknąłem się na dziwny fragment kodu if(foo == bar){ function foo_bar(){ // Definicja funkcji } } Czy to dobra praktyka kodowania?


title: Czy język programowania, który jest niewizualny… możliwy?

text: W życiu codziennym do programowania używamy tekstu. Ale dlaczego nie gesty lub głos? **Czy są jakieś badania na ten temat?**


title: Jak uniknąć pisania wielu funkcji tranzytowych w opakowaniu?

text: Mam klasę, która otacza inną klasę wspólnego typu bazowego. Ponieważ interfejs typu podstawowego jest dość duży, wymaga to napisania wielu funkcji tranzytowych. Szukam sposobu na uniknięcie tego. Zróbmy przykład: Car / \ Volvo VolvoWithTrailer Teraz muszę zaimplementować każdą funkcję w interfejsie samochodu dla VolvoWithTrailer i wywołać odpowiednią funkcję na opakowanym obiekcie Volvo, z wyjątkiem może GetMaxSpeed(), która zwróci coś niższego. Zasadniczo będę miał wiele funkcji, takich jak int VolvoWithTrailer::GetNumSeats() { return mVolvo.GetNumSeats() } Oczywistym sposobem rozwiązania tego byłoby uczynienie VolvoWithTrailer podklasą Volvo Car | Volvo | VolvoWithTrailer, ale wydaje się to naruszać zasadę przedkładania kompozycji nad dziedziczenie. Jak inaczej mógłbym uniknąć pisania wszystkich tych opakowań (językiem jest C++)? Lub - jeśli takie jest twoje stanowisko - dlaczego miałbym je po prostu pisać / po prostu używać dziedziczenia? Czy jest jakaś magia szablonów, która mogłaby w tym pomóc?


title: Eksternalizacja zapytań SQL w Javie

text: Jakie są zalety i wady eksternalizacji zapytań SQL w Javie (lub podobnym obiektowym języku programowania ogólnego przeznaczenia? Eksternalizacja oznacza przechowywanie całego SQL w oddzielnym pliku lub plikach innych niż Java. Kilka dobrych przykładów jest tutaj. Czy to utrudnia debugowanie czy łatwiej?


title: Czy SQLite nie jest trochę niedoceniany?

text: Zanim zadam pytanie, najpierw opiszę moje przemyślenia na temat SQLite. Lubię narzędzia, które są małe, szybkie i co ważniejsze, mają tylko naprawdę niezbędną funkcjonalność. Dlatego lubię SQLite, a trochę mniej MS-SQL. Na przykład: MS-SQL może mieć znacznie większą funkcjonalność, skalowalność itp., ale może być również trudny do zainstalowania, jeśli masz pecha. Oczywiście nie mówię, że trudna instalacja jest powodem, aby nie wybierać konkretnej bazy danych. Nie zrozum mnie źle: MS-SQL to produkt dobrej jakości. Mam duże doświadczenie z MS-SQL; Jako profesjonalista bardzo dobrze rozumiem produkt. Po prostu wolę go mniej w niektórych okolicznościach, gdzie _nie jest to naprawdę potrzebne_ (= niewielu użytkowników, < 10-15). Z jakiej funkcjonalności bazy danych naprawdę korzystasz? Z mojego doświadczenia wynika, że często jest to po prostu zwykły SQL (SELECT, INSERT i UPDATE). Lubię SQLite. Fascynuje szybko. Jest niezwykle łatwy do „instalacji”. Myślę, że SQLite może zrobić więcej, niż twierdzi, że może. Dlaczego używać go tylko w aplikacjach jednoprocesowych/pojedynczych użytkowników? W końcu niewiele aplikacji ma stały dostęp do bazy danych. Na przykład: rozważmy aplikację ERP z, powiedzmy, 15 użytkownikami. Dlaczego nie można do tego użyć SQLite? Spójrzmy prawdzie w oczy: z mojego doświadczenia zawodowego większość czasu użytkownicy tego rodzaju aplikacji będą mieli dostęp do bazy danych przez około 5-10% całkowitego czasu korzystania z aplikacji. W pozostałych 90-95% po prostu ogląda informacje na ekranie, wpisuje dane w siatce/formularzu, a kiedy zapisuje swoje dane, to nie więcej niż 1 sekunda czasu bazy danych. Np.: 1,5 minuty czasu wprowadzania vs. 1 sekunda czasu oszczędzania. Jeśli plik bazy danych SQLite jest zablokowany podczas „oszczędzania czasu”, inni użytkownicy, którzy potrzebują dostępu do bazy danych, po prostu czekają, ale nie zauważają tego, ponieważ czas oczekiwania będzie bardzo krótki (niezauważalny). W kodzie musisz po prostu poradzić sobie z możliwym "zajętym" czasem bazy danych, aby uniknąć wyjątków, ale nie jest to trudne. Pewien facet, który musi myśleć tak samo jak ja, zbudował nawet rozwiązanie klient-serwer dla SQLite: SQLitening. To mnie bardziej przekonało, że być może nie oszukuję siebie. Oczywiście istnieją aplikacje intensywnie korzystające z baz danych, do których SQLite nie pasuje. Ale jak teraz o tym myślę, wiele aplikacji wieloużytkownikowych, jeśli nie przekracza 15 użytkowników, powinno dobrze sobie radzić z SQLite. Wielu naszych klientów nie wydaje dużo na sprzęt, więc często spotykam się z pojedynczym serwerem, na którym znajduje się wszystko (Exchange, SQL(y), klienci, itp.) iz tego powodu są prawie „zadyszani”. Gdybym mógł dostarczyć produkt, który nie ma wysokich wymagań systemowych, mój klient byłby zadowolony. SQLite nie dodaje żadnej wagi (przynajmniej niewiele), robi to MS-SQL. Więc nie wybrałbym SQLite, ponieważ jest darmowy, tani lub łatwy w instalacji. Wybrałbym to ze względów praktycznych/technicznych. FYI: W moim zawodzie sprzedajemy produkty (niestandardowe i standardowe, głównie związane z ERP) klientom, gdzie średnio korzysta z produktu nie więcej niż 5-6 osób. Są pewne wyjątki, ale nie więcej niż 10-15 użytkowników. _Pytanie brzmi:_ Czy mam rację sądząc, że mogę użyć SQLite do jakiejś aplikacji dla wielu użytkowników, takiej jak w opisanym przeze mnie przykładzie? Czy są jakieś wady techniczne, o których powinienem wiedzieć? Jakie są Twoje doświadczenia (negatywne lub pozytywne), które pomogą mi dokonać właściwego wyboru? Aktualizacja: Proszę nie postrzegać tego jako negatywnej oceny innych baz danych. W większości są to dobre produkty. Po prostu dzielę się tutaj moimi przemyśleniami i interesuję się twoimi opiniami na ten temat.


title: OO Design: wskazówka EntityManager, aby wstępnie załadować niektóre zestawy danych

text: powiedz, że mam EntityManager, który może "odczytywać (PK)" zestaw danych z bazy danych i zwrócić go. Mam aplikację, która będzie przetwarzać wiele rekordów, iterować po nich i dla każdego użyć EntityManager do odczytania każdego rekordu. Dlatego dobrze byłoby poinformować EntityManager o nadchodzącym obciążeniu, aby mógł sprawniej wstępnie załadować potrzebne dane. Jak zintegrowałbyś takie opcjonalne wskazówki w czystym, SoC OO-Design? Wielkie dzięki


title: Jakie punkty końcowe należy podać, jeśli w ogóle, aby umożliwić testowanie łączności dla moich usług sieci Web?

text: Jakie punkty końcowe należy podać, jeśli w ogóle, aby umożliwić testowanie łączności/dostępności dla moich usług internetowych/interfejsu API? * * * **TL;DR** Zajmuję się tworzeniem zarówno serwera jak i klienta w środowisku korporacyjnym. Klient będzie komunikował się z serwerem za pośrednictwem interfejsu RESTful Web API. Chciałbym wskazać użytkownikowi, że poprawnie wpisał główny adres URL interfejsu API sieci Web. Chciałbym również w przyszłości wdrożyć monitorowanie łączności API. Żaden z publicznych interfejsów API (Facebook, Twitter itp.), które wyglądały, nie ma dedykowanego punktu końcowego do testowania łączności. Istnieje wiele witryn internetowych, które zapewniają monitorowanie dostępności publicznych interfejsów API. Jeden z nich, Watchmouse, poinformował, że przeprowadza testy dostępności, faktycznie wykonując API (logowanie, wykonanie akcji i testowanie wyników). Z drugiej strony wywołanie głównego adresu URL dla CouchDB zwraca i konfigurowalny komunikat oraz wersję CouchDB. Czy powinienem zapewnić dedykowane punkty końcowe do testowania łączności/dostępności? Jeśli tak, jakie punkty końcowe? A może powinienem po prostu sprawdzić istniejące punkty końcowe?


title: której wersji systemu Windows powinienem używać do tworzenia aplikacji

text: Muszę opracować aplikację dla systemu Windows, którą można zainstalować w dowolnej wersji systemu Windows od XP do 7. Której wersji systemu Windows powinienem używać do tworzenia aplikacji. Do rozwoju będę używał Qt-C++/GTK+. Jak mogę zdecydować/określić, która wersja systemu Windows będzie używana do rozwoju?


title: Nauka każdego rodzaju języka programowania

text: Kilka razy słyszałem, że każdy programista powinien uczyć się jednego z każdego rodzaju języka. To niekoniecznie prawda, ale uważam, że to dobry pomysł. Nauczyłem się języka proceduralnego (Perl), ale jakie **są** inne typy? Jakie są między nimi różnice i jakie są przykłady każdego z nich?


title: Testowanie responsywnych projektów dla dużych wyświetlaczy... na laptopie

text: Używam laptopa o przekątnej 13 cali. Chcę przetestować responsywne projekty witryn na ekranach o wymiarach większych niż 1280 x 800. Czy jest na to łatwy sposób? A może powinienem ustawić to jako najpopularniejsze zapytanie o media?


title: Co zmienić w Ruby on Rails?

text: W moim ostatnim wywiadzie zapytano mnie, co bym zmienił w Ruby on Rails, aby było lepiej. Codziennie używam Ruby on Rails i nie byłem w stanie udzielić odpowiedzi. Tak więc moje pytanie brzmi: 'Co można zmienić w Ruby on Rails, aby było lepiej?'


title: Jaki jest najbardziej kompatybilny, powszechnie używany język produkcyjny do eksportowania wiedzy i umiejętności zdobytych od Haskella?

text: Lubię Haskella, proste i proste. Chociaż Haskell jest używany w oprogramowaniu produkcyjnym, nie jest on szczególnie szeroko wdrażany z tego, co widziałem. Jaki jest najbardziej podobny i nadal powszechnie używany język w odniesieniu do projektów produkcyjnych, abym miał szansę wykorzystać coś podobnego w przemyśle? Czy ten sam język z pierwszej części jest dostępny na wielu platformach? Jeśli nie, jaka jest najlepsza alternatywa, która ma szerokie wdrożenie platformy? Chciałbym umieścić na mojej liście rzeczy do zrobienia jeden język, a nie ogromny rój lub rodzinę. Mocne dowody byłyby plusem.


title: Przekierowanie portów i aplikacje C++ Winsock Client-Server

text: Jak mówi tytuł, tworzę klienta TCP i program serwera w C++. Moje pytanie brzmi, czy podczas uruchamiania klienta i serwera na dwóch oddzielnych maszynach, które przechodzą przez inny router z firewallem przez Internet, ma znaczenie, który router ma przekierowane porty? Były. Czy tylko router używany przez komputer kliencki może mieć przekierowywane prawidłowe porty TCP i można ustanowić połączenie z serwerem klienta?


title: Zrozumienie struktury delegatów C#

text: Próbowałem zrozumieć delegatów C# przy użyciu Pro C# 5. Krótko mówiąc, autor opisuje motywację delegatów jako ustrukturyzowany sposób radzenia sobie ze wskaźnikami funkcji i wywołaniami zwrotnymi lub dwukierunkową komunikacją między obiektami. Część, którą uważam za mylącą, to składnia/implementacja tego: * Z jednej strony obiekt typu delegat jest postrzegany jako _handler_ lub ten odpowiedzialny za wywołanie jakiejś metody lub listy metod. W tym celu posiada metody takie jak `Invoke()` itp. * Z drugiej strony, typ delegata jest używany jako 'opakowanie', za pomocą którego można przekazywać metody. Na przykład wydaje mi się dziwne, że wywołanie funkcji `GetInvocationList()` delegata zwraca tablicę delegatów. Czy nie powinno być czegoś innego, czym można by owijać metody? Spodziewałem się, że będzie jakiś inny konstrukt/typ, powiedzmy, „MethodContainer”, który zawija metody. Wtedy składnia dodawania metod do delegata będzie wyglądać tak: class MojaKlasa{ void Method(string s){} } MojaKlasa c = new MojaKlasa(); Kontener MethodContainer = nowy MethodContainer(c.Method); deleguj void MyDelegate(string s); Mój Delegat d = nowy Mój Delegat(); d.Dodaj(kontener); d.GetInvocationList(); // zwraca tablicę MethodContainer


title: Doświadczenie zawodowe przed mistrzami

text: Nie wiem, czy to właściwe miejsce do zadawania takich pytań: mam licencjat na indyjskim uniwersytecie. Chcę kontynuować studia magisterskie na jednym z uniwersytetów w USA. Mój profil jest wystarczająco dobry, abym został przyjęty do szkoły, którą preferuję. Mam też list z ofertą od jednej z czołowych firm programistycznych w Indiach. Nie wiem, którą drogą iść, wiem, że studia magisterskie będą bardzo pomocne w przyszłości zarówno pod względem finansowym, jak i zawodowym, ale nie wiem, czy chcę to robić w tej chwili. Na niektóre kursy zapisałem się na edx i coursera i bardzo lubiłem uczyć się ich online. Nie jestem pewien, czy udział w tych kursach może zastąpić tytuł magistra. Również jak będę w stanie odróżnić się w realnym świecie, jeśli nie mam tytułu magistra, skoro w Indiach jest wielu, którzy go nie mają. I czy wskazane jest dla mnie trochę doświadczenia zawodowego, powiedzmy 1-2 lata, a następnie ubieganie się o tytuł magistra. Chociaż uniwersytety nie wymieniają wprost doświadczenia zawodowego jako kryterium, czy jakiekolwiek doświadczenie zawodowe pomoże mi w podjęciu decyzji, czy chcę zrobić magisterkę? Na koniec chcę wiedzieć, jakie są wady nie robienia mistrzów.


title: Korzystanie z WebStorm dla składni Razor MVC

text: Buduję wiele ciężkich aplikacji typu SPA po stronie klienta z VS2010 i MVC3/4. Edycja JavaScript/HTML/CSS VS2010 (głównie javascript) jest nieskończenie wolna i powolna. Bardzo chciałbym użyć czegoś takiego jak WebStorm JetBrains do edycji moich plików .CSHTML (z osadzonym javascriptem itp., ponieważ używam Razora do wpisywania nazw adresów URL itp.) WebStorm wydaje się mieć wszystko, czego chcę .. lepsze rozpoznawanie języka ("intellisense") i możliwość integracji z tym dodatkowych bibliotek zewnętrznych (używam Kendo) itp. Czy to możliwe? Jak sprawić, by WebStorm rozpoznał wstawki językowe wywołane @"" w języku Razor? Każda pomoc lub sugestie będą mile widziane.


title: Proste menu - ukryj i pokaż po kliknięciu

text: Wysłałem już to pytanie na stackoverflow, ale oznaczali, że byłoby to lepsze miejsce, aby zapytać. Więc oto jestem :) Jestem nowy w Jquery i obecnie ćwiczę. Napisałem mały kawałek kodu, aby pokazać i ukryć nawigację po kliknięciu i zmienić tekst przycisku, gdy nawigacja jest otwierana i zamykana. Ponieważ jestem świeży w tej dziedzinie, chciałbym uzyskać informacje zwrotne na temat kodu, na przykład, czy istnieją sposoby, aby zrobić to lepiej, z mniejszą ilością kodu lub w jakimkolwiek innym obszarze sprawy. Tylko mały przegląd kodu do nauki i ćwiczenia. (zwłaszcza druga, jeśli mnie niepokoi :)) Dziękuję A oto mała linijka kodu: // Function Ukryj funkcję nawigacji hideNav() { $('nav').hide(); } // Ukryj nawigację hideNav(); // Function Show Nav function showNav() { $('nav').show(); } // Clickevent na przycisku $('button').click(function() { if($('nav').is(':hidden')){ // Pokaż Nav na Clickevent showNav(); // Zmień Tekst, gdy Nav pokazuje $(this).text('Close me'); } else hideNav(); // Zmień tekst z powrotem, gdy Nav się ukrywa if($('nav').is(':hidden')) { $('przycisk').text('Otwórz mnie'); } });


title: Historia protokołów i formatów, które poszły nie tak, ale nadal są używane

text: Próbuję znaleźć historyczne dowody na temat protokołów lub formatów, które miały różne implementacje, w których interoperacyjność prowadziła do problemów, które wciąż możemy zobaczyć, lub błędów w implementacjach, które stały się funkcjami. To, co próbuję zrobić, to przekonać ludzi do zainwestowania w referencyjną implementację formatu, aby uniknąć problemów z interoperacyjnością. Najlepiej byłoby podać przykłady z przeszłości, które nie szły tak dobrze i powodowały wiele problemów. Na przykład STMP EHLO vs. HELO. O ile pamiętam EHLO to tylko Microsoft. dzięki za twoje pomysły.


title: Co to jest Hadoop i jakie są jego przykładowe zastosowania?

text: Tytuł w zasadzie mówi wszystko. Ciągle słyszę o Hadoop, a z wpisu w wikipedii na pewno _brzmi to interesująco, ale jestem ciekaw, czy istnieją dobre przykłady, w których sensowne jest poszukiwanie rozwiązania przy użyciu tej technologii? Innymi słowy, jeśli podniosę nową zabawkę, lubię przynajmniej wiedzieć, jak mam się nią bawić!


title: Wyjaśnianie programowania dziecku

text: Jak mógłbym wytłumaczyć programowanie dziecku w wieku od 6 do 8 lat?


title: Eliminowanie magicznych liczb: Kiedy nadszedł czas, aby powiedzieć „nie”?

text: Wszyscy zdajemy sobie sprawę, że magiczne liczby (wartości zakodowane na stałe) mogą siać spustoszenie w twoim programie, zwłaszcza gdy nadszedł czas na modyfikację sekcji kodu, która nie ma komentarzy, ale gdzie narysować linię? Na przykład, jeśli masz funkcję, która oblicza liczbę sekund między dwoma dniami, czy zastępujesz sekundy = liczba_dni * 24 * 60 * 60 sekundami = liczba_dni * HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE W którym momencie decydujesz, że jest całkowicie oczywiste, co oznacza wartość zakodowana na sztywno i zostaw to w spokoju?


title: Czy możesz nauczyć się programowania funkcjonalnego w C?

text: W wyniku dyskusji o komentarzach tutaj zastanawiam się, czy można nauczyć się programowania funkcjonalnego w C?


title: Dlaczego JavaScript jest szybszy niż Jquery?

text: Czytałem wątek i zobaczyłem ten post, który mówi, że JavaScript jest szybszy niż Jquery, ponieważ używa kodu natywnego. Ale dlaczego korzystanie z kodu natywnego jest szybsze? Czy zawsze tak jest? Jakie przeszkody ma Jquery w wydajności?


title: Czy istnieje optymalna liczba wierszy kodu na funkcję?

text: Funkcje służą nie tylko do minimalizacji duplikacji kodu - służą również do dzielenia długiej funkcji na mniejsze w celu zwiększenia czytelności, a także do samodzielnego komentowania kodu. Jednak ten zysk nie jest bezpośrednio odwrotnie proporcjonalny do liczby LOC na funkcję lub metodę; w przeciwnym razie mielibyśmy mnóstwo funkcji, z których wszystkie zawierają tylko jedną lub dwie linie kodu. To skłoniło mnie do zastanowienia się: ** Czy istnieje optymalna liczba LOC na funkcję? Jeśli tak, to co to jest i czy różni się między językami?**


title: Jak opłacalna jest „Fundacja przepływu pracy systemu Windows”? Jakie alternatywy powinienem rozważyć?

text: Zacząłem uczyć się WF 3.0 kilka lat temu i nigdy się z tym nie orientowałem. Czy ktoś nauczył się WF 4.0 (teraz, gdy został przepisany)? Czy jest to opłacalna platforma warta rozważenia? Jakie istnieją alternatywy?


title: Czy w opisie stanowiska programisty właściwe jest, aby jako kluczowy wynik był „bezbłędny”?

text: W ramach przeglądu wszystkich opisów stanowisk moja firma zdecydowała się uwzględnić następujące dane jako kluczowe wyniki: > rozwój strony internetowej ukończony na czas, zgodnie ze specyfikacją i **błąd > wolny** Biorąc pod uwagę, że specyfikacje regularnie się zmieniają, nie ma formalnego Proces kontroli zmian i środowiska są, powiedzmy, trochę nieprzewidywalne, jak realistyczny i uzasadniony jest ten KPI?


title: Czy ktoś zna sposób na uzyskanie PRAWDZIWEJ karty kredytowej przeznaczonej specjalnie do testowania e-commerce?

text: Chodzi mi o to, że zawsze chcemy testować coś w rzeczywistym środowisku produkcyjnym na żywo, niezależnie od wszelkich testów, które przeprowadzamy z fałszywymi numerami kart płatniczych PayPal lub innymi numerami w piaskownicy. Więc zamiast używać naszych osobistych kart, zastanawiam się, czy istnieje firma kredytowa, która dostarczy w pełni funkcjonalną kartę kredytową specjalnie na potrzeby tego rodzaju testów w świecie rzeczywistym? Przypuszczam, że odpowiedzią może być po prostu zdobycie karty kredytowej i używanie jej tylko do tego, ale chciałbym mieć pewność, że jest to „poza pętlą”, jeśli chodzi o wpływ na wyniki kredytowe lub tego typu rzeczy.


title: Jak wybrać najlepsze podejście podczas dodawania funkcji/kodu refaktoryzacji?

text: Mam problem. Naprawdę trudno mi przewidzieć wpływ, jaki moje zmiany w kodzie wywrą na całą aplikację, zarówno gdy będę musiał dodać nowe funkcje, jak i dokonać refaktoryzacji. Bardzo często dopiero w czasie testów dowiaduję się, że powinienem był zrobić coś w inny sposób lub że te zmiany powodują nieoczekiwane zachowanie. Chciałbym wiedzieć, jak podchodzicie do zmian w kodzie, w jaki sposób dowiecie się, jak te zmiany wpłyną na wasz obecny kod, jakie wskazówki i triki będą dla was najlepsze, lub jakie są zalecane lektury na ten temat. Każda pomoc będzie mile widziana! Wielkie dzięki chłopaki


title: Czy rzeczywiście możliwe jest posiadanie „użytecznego” języka programowania, który nie jest kompletny w zakresie Turinga?

text: Tam, gdzie przyjmuje się, że język musi być kompletny pod względem Turinga, aby był dobry, czy rzeczywiście możliwe jest posiadanie „użytecznego” języka programowania, który nie jest kompletny pod względem Turinga? Powinienem wyjaśnić, że chodzi tu konkretnie o języki „programowania” w tradycyjnym sensie, a nie o języki znaczników lub zapytań.


title: Czy istnieją kompletne, dynamiczne języki nieturingowe, które można wykorzystać do tworzenia przydatnych programów?

text: Chociaż do stworzenia dowolnego programu, który można sobie wyobrazić, potrzebny jest kompletny język Turinga, czy możliwe jest obliczenie najbardziej „użytecznych” programów za pomocą kompletnego języka nie-turinga z typowaniem dynamicznym? Na przykład, czy istnieje nieturingowy kompletny język, który jest w stanie rozwiązać problemy Projektu Euler?


title: Czy w firmie, której podstawową działalnością jest oprogramowanie, programiści nadal są uważani za „IT”?

text: Myślę, że firma, której podstawową działalnością jest tworzenie widgetów, grupuje programistów z sieciami, wsparciem itp., ponieważ nic z tego nie jest biznesem, to wsparcie dla biznesu. Jeśli Twoja główna działalność to sprzedaż oprogramowania, nazwałbym grupę programistyczną „Badania i rozwój” lub coś podobnego. Może gdybyś miał kilku programistów, którzy pracowali wyłącznie nad aplikacjami wewnętrznymi, byliby zajęci IT/Support/Comms itp. Jaka jest norma dla firm takich jak Microsoft, Google itp.? Czy w magazynie CIO jest jakiś słownik na tego typu rzeczy? Czym zajmuje się twoja firma?


title: Co to jest program „opakujący”?

text: Tam, gdzie pracuję, pracownicy korzystają z programu komputerowego innej firmy dla swoich klientów. Ten program zapisuje dane do pliku płaskiego. Mój kolega chce napisać program w języku Java, który przesyła ten plik tekstowy na zdalny serwer, otwiera program komputerowy, gdy plik tekstowy jest pobierany z witryny sieci Web, i sprawdza, czy program komputerowy jest uruchomiony, czy nie, patrząc na procesy systemu Windows. Cały czas nazywa ten program pomocniczy/narzędziowy „opakowaniem”. Ale niczego nie zawija! Próbowałem to z nim wyjaśnić, ale powiedział: „Cóż, nazywam to opakowaniem”. Teraz wszyscy w firmie nazywają to „opakowaniem”. Jak byś to nazwał? Mówię, że jest to program pomocniczy lub program narzędziowy.


title: Czy Node.js jest „uważany” za własny język programowania?

text: Za każdym razem, gdy czytam posty na blogu dotyczące nowej aplikacji, w której był zaangażowany Node.js, blogerzy często piszą „aplikacja została **napisana** w węźle”. Ale rzadko spotykam frazę w stylu „aplikacja została napisana w JavaScript, przy użyciu środowiska uruchomieniowego Node.js”. Teraz zaczynam pytać, czy Node.js to tylko środowisko uruchomieniowe, czy może twórcy planują teraz dodać więcej funkcji, których JavaScript nie oferuje, a może dlatego, że znacznie łatwiej jest powiedzieć „napisany w Node” niż „napisany w JavaScript, ale działa na Node”. O co chodzi?


title: Najlepsze praktyki projektowania aplikacji bazodanowych

text: Dawno, dawno temu powszechną praktyką było pisanie zarówno logiki biznesowej, jak i logiki bazy danych w tym samym języku (np. PL/SQL, Transact SQL itp.), ostatnio praktyką jest dzielenie aplikacji na warstwy/poziomy, takie jak bazy danych, logiki biznesowej i prezentacji, z każdą warstwą napisaną w innym języku. Zazwyczaj ORM służy do ułatwienia komunikacji między logiką biznesową a bazą danych. Od czasu do czasu jednak, zwłaszcza gdy aplikacja jest stosunkowo niewielka, nadal piszę aplikacje z logiką biznesową zepchniętą w warstwę bazy danych, poza bazą danych jest jedynie interfejs użytkownika. Zdaję sobie sprawę z różnych argumentów za i przeciw, jednak zastanawiam się, czy istnieją współczesne najlepsze praktyki, gdyby w ten sposób pisać aplikację bazodanową? Istnieje wiele książek o modelach danych itp., ale żadna nie mówi tak naprawdę o tym, jak ustrukturyzować rzeczywisty kod aplikacji pod kątem procedur składowanych, funkcji i tak dalej. Istnieje również wiele książek na temat refaktoryzacji baz danych lub antywzorców baz danych, ale znowu ogólnie zakładają, że baza danych jest używana tylko do utrwalania danych. Znalazłem ten artykuł autorstwa Blaha, „Projektowanie zorientowane obiektowo na procedury składowane w bazie danych”. Czy istnieją inne książki, artykuły lub przykładowe bazy danych, które ilustrują najlepsze praktyki współczesnego projektowania aplikacji bazodanowych? Wydaje się, że tworzenie aplikacji w ten sposób jest stosunkowo powszechne, jednak wydaje się, że jest to jedna z tych rzeczy, które ludzie zaakceptowali, nie jest najlepszą praktyką, więc chcą uniknąć mówienia o tym. Czy firmowa procedura składowana może uzyskiwać bezpośredni dostęp do tabeli? A może cały dostęp do tabel powinien odbywać się za pomocą metod CRUD? Czy są jakieś polecane przez ludzi narzędzia do generowania kodu? Dziękuję.


title: Znaczenie procedur składowanych i wyzwalaczy w tworzeniu aplikacji internetowych?

text: Prawie w każdym wywiadzie na stanowisko web developera pytają o procedury składowane i wyzwalacze, dobrze wiem z ich definicji i podstawowych zastosowań, ale prawda jest taka, że nigdy nie używałem żadnego z nich w żadnym z moich projektów. Cóż, widziałem innych programistów, którzy z nich korzystali, ale tylko wtedy, gdy były jedynym rozwiązaniem. Moje pytanie brzmi, czy są naprawdę ważne, a wywiad jest niekompletny bez zadawania pytań o wyzwalacze i procedury składowane. Mam tendencję do zachowywania prawie wszystkich moich logik w PHP, na przykład jeśli zmiana w jednym wierszu tabeli bazy danych będzie wymagała zmiany w innym wierszu tabeli bazy danych, uruchamiam inne zapytanie z PHP zamiast pisać wyzwalacz, czy to źle, czy zła praktyka? czy muszę zmienić swoje podejście? jakieś przykłady, w których użycie procedur składowanych i wyzwalaczy jest lepsze niż wykonywanie podobnych operacji w PHP?


title: Ile logiki biznesowej powinna implementować baza danych?

text: Pracowałem w kilku projektach, w których większość logiki biznesowej została zaimplementowana w bazie danych (głównie poprzez procedury składowane). Z drugiej strony słyszałem od niektórych kolegów programistów, że jest to zła praktyka („Bazy danych służą do przechowywania danych. Aplikacje są po to, aby robić resztę”). Które z tych podejść jest ogólnie lepsze? Zalety implementacji logiki biznesowej w DB, o których mogę pomyśleć, to: * Centralizacja logiki biznesowej; * Niezależność od typu aplikacji, języka programowania, systemu operacyjnego itp.; * Bazy danych są mniej podatne na migrację technologii lub duże refaktoryzacje (AFAIK); * Brak przeróbek w migracji technologii aplikacji (np. .NET do Java, Perl do Pythona itp.). Wady: * SQL jest mniej produktywny i bardziej złożony do programowania logiki biznesowej, ze względu na brak bibliotek i konstrukcji językowych, które oferują najbardziej zorientowane na aplikacje języki; * Trudniejsze (jeśli w ogóle możliwe) ponowne wykorzystanie kodu przez biblioteki; * Mniej wydajne IDE. Uwaga: Bazy danych, o których mówię, to relacyjne, popularne bazy danych, takie jak SQL Server, Oracle, MySql itp. Dzięki!


title: Czy procedury składowane naruszają separację trójwarstwową?

text: Niektórzy z moich kolegów powiedzieli mi, że posiadanie logiki biznesowej w procedurach składowanych w bazie danych narusza separację trójwarstwową, ponieważ baza danych należy do warstwy danych, podczas gdy procedury składowane są logiką biznesową. Myślę, że bez przechowywanych procedur świat byłby bardzo ponurym miejscem. Czy naprawdę naruszają trzystopniową separację?


title: Jak uniknąć pułapek analizy statycznej

text: Pracuję w firmie, która uzyskałaby 11 punktów na teście Joela - przynajmniej na papierze. W praktyce jednak nic nie działa tak dobrze, jak oczekiwano, a projekt jest na **DEFCON 1** od pół roku. Teraz większość moich rówieśników jest szczęśliwa, jeśli mogą wrócić do domu o 18:00 - w niedzielę. Jedną z pozornie dobrych praktyk, która wydała mi się nieskuteczna, jest użycie narzędzi do analizy statycznej. Projekt śledzi zarówno ostrzeżenia gcc -Wall, jak i zastrzeżone i bardzo drogie narzędzie _"C/C++"_. Ostrzeżenia Gcc najczęściej wskazują na prawdziwe (jeśli w większości przypadków nieobraźliwe) błędy. Jednak zastrzeżone narzędzia zawierają listę takich rzeczy, jak niejawne rzutowania i sizeof'ing literału łańcuchowego. Niejawne obsady są również na czarnej liście w ich podręczniku stylów. Standardową praktyką jest to, że ludzie są zmuszani do zamykania każdego ostrzeżenia. Zauważ, że wyklucza to ostrzeżenia, które są w większości fałszywymi alarmami, to nie jest problem. Rezultat jest następujący: 1. Ludzie dodają rzutowania typów do każdej rwartości i do każdego argumentu, ukrywając w procesie rzeczywiste problematyczne niezgodności typów. 2. Ludzie wprowadzają jeden błąd lub używają innego problematycznego języka (strlen zamiast sizeof, strncpy zamiast strcpy itp.) 3. Ostrzeżenia są wyciszane. 4. Zaczynają pojawiać się raporty o błędach. Głównym punktem jest to, że oryginalny kod działał i został napisany przez ludzi, którzy bawili się bezpiecznie w ramach swoich umiejętności językowych, podczas gdy poprawki nie były. Teraz naprawdę nie sądzę, żeby tę firmę można było uratować. Chciałabym jednak wiedzieć, czy istnieje lepszy, najlepiej działający sposób korzystania z narzędzi __"pro"_, czy też powinienem po prostu unikać ich używania na wypadek, gdybym to ja podejmował decyzję w przyszłości. Rozwiązanie, które nie zakłada, że wszyscy programiści są geniuszami, którzy nie mogą się mylić. Bo jeśli tak, to nie ma potrzeby używania narzędzi w pierwszej kolejności.


title: Najlepsze praktyki lub zalecenia dotyczące obsługi wyjątków?

text: Myślę, że dwa główne problemy z moimi programami to struktura/organizacja kodu i obsługa błędów. Czytam Code Complete 2, ale potrzebuję czegoś do przeczytania do pracy z potencjalnymi problemami. Na przykład na stronie internetowej, jeśli coś może się zdarzyć tylko wtedy, gdy użytkownik manipuluje danymi za pomocą javascript, czy piszesz o tym? A kiedy nie łapiesz błędów? Kiedy piszesz klasę, która oczekuje ciągu i int jako danych wejściowych, a nie są one ciągiem i int, czy to sprawdzasz, czy pozwalasz, aby przepłynęła do metody wywołującej, która przesłała nieprawidłowe parametry? Wiem, że jest to obszerny temat, na który nie można odpowiedzieć w jednej odpowiedzi, więc szukam książki lub zasobu, który jest powszechnie akceptowany jako nauczanie właściwej praktyki obsługi wyjątków.


title: Jak połączyć Mapy Google z geolokalizowanymi zdjęciami z jednej lub kilku sieci społecznościowych?

text: Pracuję nad weryfikacją koncepcji projektu i muszę przypiąć losowe zdjęcia do mapy Google. Te zdjęcia mogą pochodzić z innej sieci społecznościowej, ale nie mogą być pornografią. Do tej pory przeprowadziłem pewne badania, interfejs Google Image Search API jest przestarzały. Trzeba więc skorzystać z interfejsu API wyszukiwania niestandardowego. Wiele obrazów to nie zdjęcia i nie jestem pewien, jak dobrze radzi sobie z geolokalizacją. Twitter wydaje się trochę bardziej odpowiedni, z wyjątkiem tego, że ludzie mogą publikować zdjęcia praktycznie wszystkiego. Zamierzałem również przyjrzeć się interfejsom API dla innych sieci, takich jak Flickr, Picasa, Pinterest i Instagram. Wiem, że istnieją pewne usługi zbiorcze, które mogły również wykonać dla mnie część tej mash-upu. Jeśli jest ktoś, kto ma do czynienia z interfejsami społecznościowymi API i gdzie powinienem szukać tego typu rozwiązania, naprawdę byłbym wdzięczny za pomoc. Ponadto w przypadkach, gdy implementacja po stronie serwera ma znaczenie, jestem z doświadczenia programistą .NET.


title: Wzorce defektów oprogramowania

text: Czy zasada Pareto, że 20% przyczyn jest powiązanych z 80% problemów, ma zastosowanie do błędów w oprogramowaniu, a jeśli tak, to czy istnieją jakieś wspólne wzorce notowań średnio w 20% przyczyny?


title: Pisanki jako ochrona IP w oprogramowaniu

text: Pracuję w oprogramowaniu wbudowanym i z jakiegoś powodu kierownictwo chce ukryć jajko wielkanocne jako środek ochrony IP. Nazywają to znakiem wodnym, a ponieważ nasze oprogramowanie wchodzi w interakcję z kanałem podglądu wideo (obrazem wyświetlanym na ekranie przed zrobieniem zdjęcia), chcą, abym zaimplementował wyzwalacz, który zareaguje na nietypowe wejście wideo (kod konami wideo jak ciemny - jasny - ciemny - jasny - cokolwiek). Po uruchomieniu tego wyzwalacza dzieje się coś dziwnego (co wykracza poza normalne zachowanie oprogramowania). Celem jest sprawdzenie, czy nasze oprogramowanie jest zawarte w urządzeniu. Czy to brzmi jak dobry pomysł? Mam wiele argumentów przeciwko temu ruchowi: * Co jeśli kod konami jest zbyt wrażliwy i użytkownik go uruchomi? * Czy ten rodzaj „znaku wodnego” ma jakąkolwiek wartość prawną? * Co jeśli ta „funkcja” zostanie wykryta przez klienta? * Kara wydajności powinna być bardzo mała, ponieważ łagodnie działa na małych urządzeniach. * To ja rozwijam ten wyzwalacz. Jeśli coś pójdzie nie tak, jaka jest moja odpowiedzialność? Jaka jest Twoja opinia na temat tej metody? Nie mogę znaleźć linku, ale pamiętam, że widziałem odpowiedź na tej stronie sugerującą, że umieszczenie pisanek w celach ochronnych było dobrym pomysłem. Czy ktoś próbował tego z dobrymi wynikami?


title: Jak promować moje nowo opracowane oprogramowanie?

text: Niedawno opracowałem narzędzie do czyszczenia rejestru. Ale jeśli o mnie chodzi, na rynku jest już tak wiele środków do czyszczenia rejestru, a niektóre z nich zyskały dużą popularność. Czy to oznacza, że mam małe szanse na zwrócenie uwagi moich klientów? Jak mogę sprawić, by moje oprogramowanie było znane moim docelowym klientom?


title: Zagnieżdżona próba obsługi błędów przechwytywania z plikami dziennika?

text: Pytanie dotyczące najlepszych praktyk dotyczących obsługi błędów w języku C#? W naszym systemie będziemy wypisywać pliki, a każdy plik będzie miał odpowiedni plik błędu. Plik błędu zostanie zapisany za każdym razem, nawet jeśli nie ma żadnych błędów. Szukam najlepszego sposobu radzenia sobie z błędami. Zakładając, że kiedy przejdziemy do pisania głównego pliku CSV, otrzymalibyśmy szereg błędów. Od uprawnień do folderu po wyjątek analizy podczas przekształcania Datatable w plik CSV. Jeśli otrzymamy błąd uprawnień, plik dziennika błędów również się nie powiedzie. Czy zrobiono by to w wyjątku? w innym spróbuj złapać (co byłoby złe .. myślę). Chcielibyśmy również, aby wyjątek został umieszczony w pliku błędu. Jakiś pseudokod poniżej (bez try catch w wyjątku) lub powinien być bardziej rozbity i przy użyciu metod, które zawierają własne Try / Catch, które mogą bulgotać wiadomości do logowania i zapisywania do plików. Message.log("rozpocznij pisanie pliku"); try { try { // pobierz dane z bazy danych // zapis do pliku CSV // wszystko w porządku, zapisz pusty plik dziennika błędów i plik główny } catch(wyjątek ex) { // zapis pliku błędu z ex.toCSV // zapis komunikatu dziennika . Message.log("błąd: " + ex.ToString()); } } catch (Exception ex) { var e = new Exception(string.Format("Wystąpił nieoczekiwany błąd dla pliku.\r\n{0}", ex.Message)); Wiadomość.log(e); rzut mi. } Message.log("zapisano wszystkie pliki");


title: Czy wywołanie wirtualnej metody chronionej z klasy bazowej narusza LSP?

text: Powiedzmy, że mamy tę klasę bazową: class MyBase { public string Name { get; ustawić; } public string GetDescription() { var descriptionList = new List<string>() { this.Name }; descriptionList.AddRange(this.ExtraDescriptions.ToList()); return string.Join(", ", descriptionList(); } protected virtual IEnumerable<string> ExtraDescriptions() { return new List<string>(); } } Następnie dodaj klasę pochodną: class MyDerived : MyBase { protected override IEnumerable< string> ExtraDescriptions() { return new List<string>() { "a", "b" }; } } Wydaje mi się, że narusza to LSP (ponieważ zmieniamy zachowanie metody `GetDescription`) , a jednak jest to również podstawowa cecha programowania obiektowego. Klasa bazowa _oczywiście_ deklaruje zamiar umożliwienia nadpisania metody `ExtraDescriptions`, ale niekoniecznie jest to widoczne dla użytkownika klasy. Odkąd się dowiedziałem jeśli chodzi o LSP, ten problem naprawdę mnie dręczy.Więc: 1.Czy to narusza LSP?2.Jaka jest właściwa alternatywa?


title: najlepszy sposób na wysyłanie wiadomości do wszystkich subskrybentów z wieloma abonamentami i wieloma dostawcami

text: Piszę aplikację, w której - Wielu użytkowników może subskrybować posty publikowane przez innych użytkowników. Tak więc dla jednego wydawcy może być wielu subskrybentów. Gdy wiadomość zostanie opublikowana przez użytkownika X, wszyscy użytkownicy, którzy zasubskrybowali wiadomości użytkownika X, otrzymają wiadomość e-mail. Jak to osiągnąć? Zastanawiam się nad użyciem wzorca publikuj-subskrybuj. A potem przeszedłem przez JMS. Jaka jest najlepsza implementacja JMS zgodnie z Twoim doświadczeniem? Albo jakie jeszcze rozwiązanie proponujesz dla danego problemu? Czy mam wybrać proste rozwiązanie?: Użytkownik x wysyła wiadomość, znajduję wszystkich użytkowników (z bazy danych), którzy subskrybują użytkownika x, a następnie dla każdego użytkownika wywołuję metodę sendEmail(). [EDYTUJ] Moim zamiarem nie jest wysyłanie e-maili. Naprawdę przepraszam, jeśli to nie było jasne. Poza e-mailem muszę też wysyłać powiadomienia systemowe do wszystkich subskrybentów. W tej chwili zaimplementowałem wysyłanie e-maili jako threadPool


title: Określ etykietę skupień w K-średnich

text: Mam zestaw danych, który zawiera 150 danych, które są faktycznie podzielone na 3 grupy. Każda grupa ma swoją własną etykietę. Do grupowania danych wykonuję proces grupowania z algorytmem K-średnich. Muszę przypisać etykietę każdej grupie, która jest tworzona przez proces K-średnich. Mogłem więc porównać wynik K-średnich z treningiem danych. Czy ktoś mógłby pomóc wyjaśnić, jak określić etykietę każdej grupy?


title: Dlaczego wielu programistów przenosi swój kod na github?

text: Przez ostatnie 6 miesięcy lub dłużej widziałem wiele kodów hostowanych na sourceforge.net, a także na innych witrynach hostingowych „Przenieś do GitHub”. Sama wyszukiwarka Google z frazą „Moved to Github” zwraca kilka wyników zawierających tekst przeniesiony na github. To dla mnie bardzo mylące i zastanawiam się, dlaczego właściwie ludzie się poruszają? Czy to oznacza, że GitHub jest lepszy, czy jest jakaś specjalna zaleta, której nie widzę?


title: Czy programista powinien naprawić nieudaną kompilację innej osoby?

text: Jeden programista zlecił trochę pracy w repozytorium SVN, po czym wrócił do domu. Po jego odejściu automatyczna kompilacja Hudsona nie powiodła się. Inny programista zauważył to i po przejrzeniu zmian w kodzie wykrył, że problemem był brak jednej biblioteki. Dodał tę bibliotekę do SVN i następna kompilacja zakończyła się pomyślnie. Czy drugi programista postąpił słusznie, czy powinien był po prostu poczekać, aż pierwszy programista naprawi problem?


title: Czy WCF dobrze pasuje do tego problemu?

text: Pracuję nad wdrożeniem rozwiązania usługi danych, które ma 2 funkcje żądań, ale może odpowiadać jednym z 3 typów transmisji: 1. x12 EDI 2. HTTP MIME multipart 3. SOAP/XML + WSDL Potrzebuję również dołączyć logowanie i nazwę użytkownika /hasło uwierzytelnianie do usług. Jestem na bardzo wczesnych etapach nauki WCF. Czy WCF dobrze się do tego nadaje?


title: HTML5 localStorage i zaszyfrowane poufne dane

text: Szukam sposobu, aby strona internetowa zapamiętywała poufne dane, ale bez faktycznego przechowywania ich po stronie serwera. A ja szukałem w HTML5 `localStorage`, aby to zrobić. Oto plan, jaki widzę. 1. Użytkownik wprowadza do formularza dane wrażliwe i przesyła. 2. Serwer szyfruje dane za pomocą AES-256 z silnym kluczem, który jest utrzymywany pod kontrolą prywatnego źródła. 3. Serwer odpowiada, dostarczając zaszyfrowane dane do renderowanej strony. 4. Strona uruchamia javascript, aby zapisać zaszyfrowane dane w `localStorage` Później... 1. Użytkownik odwiedza stronę, która używa javascript do pobierania zaszyfrowanych danych z `localStorage` i wysyła je na serwer. 2. Serwer odszyfrowuje zaszyfrowane dane, uzyskując dostęp do poufnych informacji dla tego żądania. Uważam, że to pozwala na skompromitowanie klienta lub serwera, a wszystko pozostaje bezpieczne. Jeśli klient zostanie naruszony, haker może odczytać tylko zaszyfrowany ciąg, w którym nie ma klucza do odszyfrowania. Jeśli baza danych serwera zostanie naruszona, dane po prostu nie są tam przechowywane, więc haker nie ma do nich dostępu. (Oczywiście niektóre rodzaje hakowania serwerów mogą odczytywać poufne dane, gdy tylko się pojawiają, ale taki hak działałby niezależnie od tego, czy klient je przechowuje, czy nie, więc nie ma to zastosowania do tej dyskusji. Również hackowanie klientów, które rejestrują klucze i inne pracy, mówię po prostu o skompromitowaniu przechowywania danych po obu stronach) Ale nie jestem ekspertem od bezpieczeństwa, więc zastanawiam się, czy mój plan ma jakieś dziury? Jakieś rażące luki w zabezpieczeniach, których tu brakuje?


title: Jaki jest sens wykresu Gantta i czy mi pomoże?

text: Mój (nietechniczny) kolega zagroził mi wykresem Gantta dla nowego projektu, który obecnie planujemy. Co to może nam zapewnić i czy będzie to pomocne narzędzie?


title: Twoja strategia zapewnienia pionowego wzrostu

text: Jaka jest najważniejsza rzecz, którą robisz, aby zapewnić rozwój kariery? Innymi słowy, czego musisz się uczyć\oduczyć\wdrażać każdego dnia, aby nie zapaść w stagnację na poziomie w firmie i aby stale rosnąć w pionie. Strategie te mogą być różne dla każdej roli i mogą się różnić w różnych segmentach, takich jak zespoły deweloperskie \ zespoły ds. utrzymania \ zespół kontroli jakości i zespoły publikacji technicznych. Pytanie jest niezależne od tego, w jakim zespole jesteś. P.S: Wzrost pionowy może być również na ścieżce technicznej.


title: Czy ludzie w krajach nieanglojęzycznych kodują po angielsku?

text: Słyszałem, jak mówiono (przez współpracowników), że wszyscy „kodują po angielsku”, niezależnie od tego, skąd pochodzą. Trudno mi w to uwierzyć, ale nie zdziwiłbym się, gdyby dla większości języków programowania obsługiwany zestaw znaków był stosunkowo wąski. Czy kiedykolwiek pracowałeś w kraju, w którym angielski nie jest językiem podstawowym? Jeśli tak, jak wyglądał ich kod?


title: Konwencje nazewnictwa inne niż angielskie

text: > **Możliwy duplikat:** > Czy ludzie w krajach nieanglojęzycznych kodują po angielsku? Wiem, że istnieją języki inne niż angielski, w których słowa kluczowe są w innym języku, ale popularne języki są w języku angielskim. Jeśli jednak nie jesteś rodzimym użytkownikiem języka angielskiego i rozwijasz się na rynek inny niż angielski, czy używasz swojego języka ojczystego podczas nazywania funkcji, klas, zmiennych itp.? Jeśli tak, to jaką morfologię przyjmiesz? Na przykład funkcje są często nazywane z czasownikami (np. „buildData”), czy użyłbyś formy rozkazującej – jeśli Twój język ma taką – w nazwie (np. „construisciDati” po włosku)? Powiązane pytanie: Dla użytkowników systemów pisma niełacińskiego i języków obsługujących nazewnictwo Unicode, czy korzystasz z tego, czy trzymasz się latynizacji? np. `建造数据`, dla naszego przykładu `buildData` w [Googled] Mandarin.


title: Czy dobrą praktyką jest kodowanie w języku angielskim?

text: > **Możliwy duplikat:** > Czy ludzie w krajach nieanglojęzycznych kodują po angielsku? Mam nadchodzący rozwój, który ma być sprzedawany w Ameryce Łacińskiej (język hiszpański), ale słyszałem od niektórych partnerów, że dobrą praktyką jest zawsze kodować po angielsku, mam na myśli tylko kod (metody, klasy, nazwy stron, itd.), etykiety na GUI będą w całości w języku hiszpańskim... Kod będzie edytowany w przyszłości przez deweloperów firm z Ameryki Łacińskiej i może tylko niektóre z zewnątrz. Jak myślisz? Jakieś doświadczenia z tym?


title: Kiedy należy używać języka mówionego programisty podczas programowania?

text: Jestem włoskim programistą, ale dobrze rozumiem angielski. Czasami, tworząc aplikację skierowaną do włoskich odbiorców, zastanawiam się, czy poprawne jest używanie w moim kodzie języka włoskiego, czy nie. Przez „język włoski w moim kodzie” rozumiem nazwy metod, klas, komentarzy, zmiennych i tak dalej. Na przykład, kiedy piszę taki kod: /* Attenzione: metodo esageratamente complicato */ public double calcolaImposteDeiServizi() { ... } Czy łamię jakieś święte prawo programowania, ponieważ nie napisałem tego kodu w następujący sposób? /* Uwaga: zbyt skomplikowana metoda */ public double countTaxesOfServices() { ... } Pamiętam projekt, nad którym pracowałem jakiś czas temu. Chodziło o obliczenie VAT/podatków/bonusów. Część tego kodeksu dotyczyła koncepcji, które w tamtym momencie istniały tylko we włoskiej gospodarce. Wolałam napisać ten projekt używając tylko włoskich nazw metod, inaczej stałoby się jasne, że _VAT_ to włoska _IVA_ i tak dalej. Korzystając z tego przykładu, czy powinna istnieć jakaś zasada decydowania, kiedy użyć swojego języka, a kiedy nie w kodzie? Czy jakikolwiek wysoce autorytatywny programista kiedykolwiek powiedział coś na ten temat? Jak podejmujesz tego rodzaju decyzje w swoich projektach?


title: HTML/CSS w innych językach mówionych?

text: > **Możliwy duplikat:** > Czy ludzie w krajach nieanglojęzycznych kodują po angielsku? Czy programiści, którzy natywnie nie mówią po angielsku, nadal kodują przy użyciu angielskich nazw właściwości i tagów? Na przykład, czy japoński programista front-end nadal musiałby wiedzieć, co oznacza border-radius w języku angielskim, aby go używać, czy też japońskie witryny używałyby japońskiego CSS? Pytam, ponieważ jestem anglojęzycznym programistą internetowym, który pewnego dnia aspiruje do wielojęzyczności, i być może spróbuję wykorzystać tę kombinację umiejętności, aby trochę podróżować po świecie. Czy nadal będę kodować w języku angielskim, nawet podczas tworzenia witryn w Chinach lub Japonii? Jeśli tak, czy zwiększyłoby to moje szanse na znalezienie pracy?


title: Licencje na oprogramowanie własnościowe typu „open source”?

text: Piszę jakieś oprogramowanie, które (choć raz - zwykle open source'owe rzeczy na sourceforge/github/etc.) planuję sprzedawać. Do każdego pliku źródłowego chcę dołączyć licencję na oprogramowanie własnościowe, która nie pozwala nikomu na używanie, modyfikowanie, wyprowadzanie itp. oprogramowania (i kodu źródłowego) bez mojej wyraźnej zgody. Przyglądałem się licencjonowaniu źródeł referencyjnych firmy Microsoft i chętnie z niego skorzystam, jednak nie jestem pewien, czy mogę (zgodnie z prawem). Pytam więc: w taki sam sposób, w jaki są dobrze znane i powszechnie uważane licencje na oprogramowanie open source (ASL, GNU itp.), czy istnieją dobrze znane licencje własnościowe, które są „otwarte” w tym sensie, że mógłbym ich użyć do chronić mój produkt? Z góry dziękuję!


title: Czy w optymalnym projekcie oprogramowania musiałbyś kiedykolwiek zgłosić InvalidOperationException?

text: .NET definiuje `InvalidOperationException` jako > Wyjątek, który jest generowany, gdy wywołanie metody jest nieprawidłowe dla > bieżącego stanu obiektu. Czy w przypadku optymalnego projektu oprogramowania sensowne byłoby rzucenie tego wyjątku? Twierdzę, że „optymalne” API zapobiega wszelkim nadużyciom, w tym nigdy nie zezwalaniu na wywołanie metody, gdy jej stan jest nieprawidłowy.


title: Jak uczyć informatyki?

text: Dopiero zaczynam uczyć informatyki. To tylko podstawowy poziom. Odkrywam, że czasami nie wiem, jak podejść do tematów w sposób, który pozwala uczniom łatwo zrozumieć. Odkryłem, że najlepiej używać analogii. Straszny, który działał dobrze, przedstawiał rekurencję za pomocą procesu jedzenia burgera. (Jesz jeden kęs, potem zjadasz resztę). Ciekawe przykłady ze świata rzeczywistego czynią tu cuda. Chciałbym poznać techniki, których używałeś do nauczania, lub nauczycieli, których używałeś, a które okazały się szczególnie skuteczne. Chciałbym również poznać twoje najlepsze analogie i przykłady do tematów w CS101, szczególnie dla tych trudniejszych do zrozumienia tematów. Prowadzę zajęcia w Javie (zgodnie z wymaganiami).