title: Synchroniczne vs. asynchroniczne w przypadku publikowania subskrypcji komunikacji między obiektami JavaScript

text: Zaimplementowałem wzorzec publikowania subskrypcji w module JavaScript, który ma być używany przez obiekty JavaScript zorientowane wyłącznie po stronie klienta. Ten moduł nie ma nic wspólnego z komunikacją klient-serwer w jakikolwiek sposób, kształt czy formę. Moje pytanie brzmi, czy lepiej, aby metoda publikowania w takim module była synchroniczna czy asynchroniczna i dlaczego. Jako bardzo uproszczony przykład załóżmy, że tworzę niestandardowy interfejs użytkownika dla widżetu odtwarzacza wideo HTML5: Jednym z moich modułów jest moduł „video”, który zawiera element VIDEO i obsługuje różne funkcje i zdarzenia związane z tym elementem. Prawdopodobnie miałaby to przestrzeń nazw w rodzaju „widgets.player.video”. Innym jest moduł „sterowanie”, który zawiera różne przyciski — odtwarzanie, pauza, głośność, przewijanie, pełny ekran itp. Może mieć przestrzeń nazw podobną do „widgets.player.controls”. Te dwa moduły są potomkami nadrzędnego modułu „player” („widgets.player” ??) i jako takie nie mają o sobie wzajemnej wiedzy, gdy zostaną utworzone jako elementy potomne obiektu „player”. Elementy „kontroli” musiałyby oczywiście mieć możliwość wprowadzenia pewnych zmian w filmie (kliknij „Odtwórz”, a wideo powinno zostać odtworzone) i na odwrót (zdarzenie „timeUpdate” wideo jest uruchamiane i wyświetla bieżący czas w kontrole powinny zostać zaktualizowane). Mógłbym ściśle powiązać te moduły i przekazywać sobie referencje, ale wolę bardziej luźno powiązane podejście, konfigurując moduł typu pubsub, który może zarówno subskrybować, jak i publikować. SO (dziękuję za wyrozumiałość) w tego rodzaju scenariuszu, czy jest taka czy inna przewaga publikacji synchronicznej w porównaniu z publikacją asynchroniczną? Widziałem kilka rozwiązań opublikowanych w Internecie, które pozwalają na albo / lub z flagą logiczną, podczas gdy inne robią to automatycznie asynchronicznie. Osobiście nie widziałem implementacji, która automatycznie idzie w parze z publikacją synchroniczną... czy to dlatego, że nie ma z tego żadnych korzyści? Wiem, że mogę to osiągnąć dzięki funkcjom dostarczanym przez jQuery, ale wydaje się, że może to być zbyt duże. Wzorzec subskrypcji publikowania może być zaimplementowany za pomocą stosunkowo lekkiego kodu zaprojektowanego specjalnie do tego konkretnego celu, więc wolę używać tego niż bardziej ogólnego systemu obsługi zdarzeń, takiego jak jQuery (którego użyję do bardziej ogólnych potrzeb związanych z obsługą zdarzeń :-).


title: W jaki sposób projekty open-source mogą się utrzymać?

text: Zawsze miałem to pytanie na myśli, ale nie mogłem znaleźć odpowiedniego miejsca, aby je zadać. W sieci jest kilka naprawdę fajnych i świetnych darmowych programów typu open source. Jak te produkty utrzymują się finansowo? Jedną rzeczą jest pisanie małego narzędzia, które robi coś fajnego, ale pisanie skomplikowanego produktu z całą masą funkcji to zupełnie inna gra w piłkę. Powtórzę więc jeszcze raz, jak działają finansowo?


title: Czy programista może zrzec się własności kodu źródłowego?

text: Natknąłem się na tę licencję: /** * Autor zrzeka się praw autorskich do tego kodu źródłowego. Zamiast * zawiadomienia prawnego, oto błogosławieństwo: * * Czyń dobro, a nie zło. * Obyś znalazł przebaczenie dla siebie i wybaczył innym. * Obyś mógł swobodnie dzielić się, nigdy nie biorąc więcej niż dajesz. */ Czy miałoby to takie samo znaczenie prawne jak licencja WTFPL?


title: Diagramy UML dla małych projektów

text: Nagle w naszej organizacji pojawiła się potrzeba odpowiedniej formalnej dokumentacji. Dużo pracy, którą wykonuję, to ulepszenia i uzupełnienia istniejącego systemu. Generalnie szybka naprawa lub nowa metoda itp. Po prostu nie jestem pewien, jakiego rodzaju diagramów powinienem/mógłbym użyć do małych projektów. Na przykład dodaję nową funkcjonalność do istniejącego systemu, który weryfikuje format pola i chcą odpowiedniego "Opisu projektu komponentu z diagramami" dla prostego wyrażenia regularnego, które weryfikuje format jednego pola. W przeszłości robiliśmy tylko pseudokod i to wystarczało w przypadku takich projektów, ponieważ system jest nieco przestarzały z bardzo małą oryginalną dokumentacją.


title: Co zyskają firmy Google lub Microsoft, udostępniając pliki JS w swoich sieciach dostarczania treści (CDN)?

text: Jak wiecie, Google, Microsoft i jQuery.com oferują pliki JS w swojej sieci CDN. Aby to zrobić, muszą obsługiwać znaczące serwery, co musi być dla nich kosztem. Dlaczego to robią i co z tego zyskują?


title: .NET CQRS Frameworks nCQRS vs Lokad.CQRS

text: Przez ostatnie kilka tygodni czytałem i oglądałem wszelkie zasoby, jakie mogę znaleźć na CQRS. Bardzo podoba mi się ta koncepcja i chcę zacząć sięgnąć głębiej. Znalazłem tylko 2 główne frameworki .NET dla CQRS i próbuję ocenić różnice między nimi. Szukam wdrożenia CQRS na bazie danych noSql, najprawdopodobniej RavenDB. Lokad wydaje się być bardzo skoncentrowany na Windows Azure, nie jest pewien, czy obsługuje Raven. Ma obszerną dokumentację, ale nie ma dużej aktywności w społeczności. nCQRS jest bardzo aktywny i wspiera Raven. Zastanawiałem się, czy ktoś ma jakieś doświadczenie w pracy z tymi dwoma frameworkami i jakie są między nimi główne różnice.


title: Czy kod OpenCL musi być skompilowany dla konkretnego GPU?

text: Większość samouczków OpenCL daje ładne wprowadzenie do OpenCL, jednak nie znalazłem informacji na temat interoperacyjności celów kompilacji. Wygląda na to, że muszę skompilować kod OpenCL dla docelowego GPU. Czy tworząc binarną dystrybucję aplikacji przy użyciu OpenCL, trzeba tworzyć kilka kompilacji dla platform dostawców?


title: Nadmiarowość wyjątków Java

text: W jakim stopniu wyjątki powinny być zbędne lub niepodzielne w metodzie. Załóżmy na przykład, że mam metodę `public void uwierzytelnianie(String username, String password)`, która wywołuje `private void invokeServer(String username, String password)`. Obie metody wymagają, aby te parametry miały niezerową długość, dlatego w razie potrzeby podniosę `NullPointerException`. Czy powinienem sprawdzać poprawność w `invokeServer`, a także `uwierzytelniać` na podstawie tego, że potencjalnie może być używany niezależnie w późniejszym terminie?


title: Czy możemy stworzyć aplikację ASP.NET MVC z bazą danych MySQL?

text: Najczęściej widziałem strony ASP.NET używające MSSQL jako bazy danych. Nawet ja opracowałem jeden jakiś czas temu. Dlaczego tylko MSSQL, skoro MySQL jest darmową alternatywą. Pytanie brzmi, czy można zintegrować bazę danych MySQL tak łatwo, jak MSSQL z aplikacją ASP.NET, czy też potrzebujemy do tego jakiegoś API?


title: Jak zdecydować między umieszczeniem kodu w bazie danych a umieszczeniem kodu w aplikacji?

text: Dla wywodu: * Załóżmy, że budowana przez nas aplikacja jest harmonogramem amortyzacji. * Załóżmy również, że w bazie danych znajduje się tabela o nazwie tblAmortizationPayments, która przechowuje informacje o każdej miesięcznej płatności w osobnym wierszu. * Załóżmy dalej, że język bazy danych może obsługiwać obliczenia matematyczne potrzebne do wykonania obliczeń. Gdybyś miał zbudować ten harmonogram spłat kredytu hipotecznego na 30 lat, jak byś zdecydował między umieszczeniem kodu do wykonywania tych obliczeń 360 w bazie danych (zakładam, że byłaby to procedura składowana) lub w aplikacji? Bardziej interesuje mnie twój proces myślowy dotyczący podejmowania tego typu decyzji lub podobnego scenariusza, który może się pojawić.


title: Uzasadnienie funkcji biblioteki C nigdy nie ustawia errno na zero

text: Standard C nakazuje, aby żadne funkcje biblioteki standardowej C nie ustawiały `errno` na zero. Dlaczego dokładnie tak jest? Zrozumiałem, że jest to przydatne do wywoływania kilku funkcji i sprawdzania tylko `errno` po ostatniej - na przykład: errno = 0; podwójne x = strtod(str1, NULL); długie y = strtol(str2, NULL); if (errno) // albo "strtod" albo "strtol" nie powiodło się inaczej // oba się powiodły Czy nie jest to jednak uważane za "złą praktykę"? Ponieważ sprawdzasz tylko `errno` na samym końcu, wiesz tylko, że jedna z funkcji _zawiodła_, ale nie _która_ zawiodła. Czy po prostu wiedza, że _coś_ zawiodło, jest wystarczająca dla większości praktycznych programów? Próbowałem szukać różnych dokumentów C Rationale, ale wiele z nich nie zawiera zbyt wielu szczegółów dotyczących `<errno.h>`.


title: Różnica między DevOps a zarządzaniem konfiguracją oprogramowania

text: Jaka jest różnica między operacjami programistycznymi a zarządzaniem konfiguracją oprogramowania? Wydaje mi się, że jest tak samo, o ile zarówno DevOps, jak i Software Configuration Management skupiają się na: 1. Ustanowieniu **infrastruktury programistycznej** \- bycie odpowiedzialnym za _kontrolę wersji, zarządzanie kompilacją, zarządzanie wdrażaniem, zarządzanie zależnościami, ciągłą integrację and delivery_ , itp. 2. Wykorzystanie najlepszych praktyk w organizacji **środowiska deweloperskiego**. 3. **Zapewnienie jakości** procesów rozwojowych - zbieranie mierników efektywności rozwoju, praca nad eliminacją wąskich gardeł procesu rozwojowego (przeprowadzanie testów jednostkowych, ocena pokrycia testów jednostkowych, przeprowadzanie inspekcji itp.) 4. **Zarządzanie infrastrukturą** \- platformy docelowe i ich specyfika. 5. **Zarządzanie wydaniami** \- upewnienie się, że wydanie zostało dostarczone do klienta/klienta na czas. Może czegoś mi brakuje? To łącze pokazuje, że przeważa użycie terminu „Zarządzanie konfiguracją oprogramowania”. Ale jakiej kombinacji słów wolisz użyć do opisania wymienionego zakresu działań: **Operacje programistyczne** czy **Zarządzanie konfiguracją oprogramowania**?


title: JQuery / JSON + .Net Service Layer - do WCF czy nie do WCF?

text: Niedawno rozmawiałem z kolegą o zaletach / wadach WCF. Wspomniał o tym, ile kodu jest generowane do obsługi WCF, a także o wymaganych narzutach. Wspomniano, że prosty post jQuery /Ajax do strony .aspx (lub handlera o to chodzi), który zwraca JSON, działałby wydajniej i wymagałby znacznie mniej kodu do zaimplementowania. Jestem również świadomy nowego interfejsu API sieci Web WCF i uważam, że technologia może rozwiązać „rozdętą”-ness wymaganą do uzyskania serwera proxy itp., Po prostu wyprowadzając kod JSON. Tak więc podczas opracowywania modelu pamięci masowej relacyjnej bazy danych (MSSQL) z dość złożoną warstwą biznesową (C#) i warstwą dostępu do danych (EntityFW)… jaka jest dobra technologia do tworzenia „warstwy usług”, która wypluwa modele widoków reprezentowane w JSON , z myślą o podejściu CQRS(Command Query..). Aplikacja będzie wykorzystywać warstwę usług do obsługi wymaganego interfejsu użytkownika, a także udostępniać dostępny podzbiór usług (wyprowadzanie danych JSON) dla subskrybentów usług.. Innymi słowy panel administracyjny do obsługi interfejsu administratora oraz punkty końcowe usługi, które zwracają kod JSON w celu uzyskania dostępu do konfiguracji wykonanych z interfejsu administracyjnego. Jakie są potencjalne technologie do wykorzystania jako warstwa transportowa/komunikacyjna. Chciałbym użyć czystego podejścia RESTful, ale nie jestem przeciwny przepisaniu adresów URL za pomocą IIS. Oczywiście niektóre z dostępnych technologii to: WCF WCF Web API (czy to powinno być nawet oddzielne?) Proste żądanie/odpowiedź (ciąg zapytania do .aspx/program obsługi) Czy użycie MVC .Net rozwiąże cały ten problem? może ich podejście do aplikacji na jednej stronie? jakieś sugestie / opinie z rozwoju tego typu aplikacji? Dziękuję,


title: Czy masz jakieś techniki, które pomogą Ci zacząć rano?

text: Nie jestem rannym ptaszkiem. Przyzwyczaiłem się do pracy od 10 do 7/8, czasem 9. Niemniej jednak wiele miejsc, w których pracowałem, prosiło o coś bardziej jak 8 do 6 lub 9 do 6. Szczerze mówiąc, mam naprawdę ciężki okres uruchamianie mojego mózgu rano i wchodzenie w kod. Kiedy już to zrobię, mogę się skoncentrować przez długi czas i być całkiem produktywnym. Dostaję się do kodu i zaczynam działać, z czym mam problem. Czasami rano marnuję czas tylko dlatego, że nie mogę się skupić na problemie (tak, piszę to rano). Całą moją pracowitą pracę odkładam rano, ale jako programista nie mam dużo zajętej pracy. To w pewnym sensie staje się samowzmacniającą rzeczą; ponieważ nie robisz rzeczy rano, musisz zostać później. Ponieważ musisz zostać później, to trudniej jest zacząć następnego ranka itp. Czy inni ludzie mają z tym problemy? Jeśli tak, jakich technik się nauczyłeś? Dziękuję!


title: Zrozumienie złożoności cyklomatycznej

text: Niedawno natknąłem się na złożoność cyklomatyczną i chciałbym spróbować lepiej ją zrozumieć. Jakie są praktyczne przykłady kodowania różnych czynników, które biorą udział w obliczaniu złożoności? W szczególności, w przypadku równania „M = E − N + 2P” z Wikipedii, chcę lepiej zrozumieć, co oznacza każdy z poniższych terminów: * E = liczba krawędzi wykresu * N = liczba węzłów wykresu * P = liczba połączonych komponentów Podejrzewam, że albo _E_ albo _N_ może być liczbą punktów decyzyjnych (jeśli, inaczej if, for, foreach itp.) w bloku kodu, ale nie jestem do końca pewien, który lub co oznacza drugi. Zgaduję również, że _P_ odnosi się do wywołań funkcji i instancji klas, ale nie ma jasnej definicji, którą widzę. Jeśli ktoś mógłby rzucić trochę więcej światła za pomocą jasnych przykładów kodu każdego z nich, pomogłoby to. Kontynuując, czy złożoność cyklomatyczna bezpośrednio koreluje z liczbą testów jednostkowych potrzebnych do 100% pokrycia ścieżki? Na przykład, czy metoda o złożoności 4 wskazuje, że potrzebne są 4 testy jednostkowe, aby objąć tę metodę? Wreszcie, czy wyrażenia regularne wpływają na złożoność cyklomatyczną, a jeśli tak, to w jaki sposób?


title: Czy korzystając z dostawcy członkostwa, używasz identyfikatora użytkownika czy nazwy użytkownika?

text: Natknąłem się na to w kilku różnych aplikacjach, nad którymi pracowałem. Wszyscy używali dostawcy członkostwa ASP.NET dla kont użytkowników i kontrolowania dostępu do niektórych obszarów, ale kiedy dotarliśmy do kodu, zauważyłem, że w jednym z nich przekazujemy nazwę użytkownika opartą na ciągach, na przykład „Ralph Waters ” lub przekazujemy identyfikator użytkownika oparty na identyfikatorze Guid z tabeli członkostwa. Teraz oba wydają się działać. Możesz tworzyć metody, które są pobierane według nazwy użytkownika lub według identyfikatora użytkownika, ale obie wydają się nieco "śmieszne". Kiedy przekazujesz ciąg znaków, taki jak „Ralph Waters”, przekazujesz zasadniczo dwa oddzielne słowa, które tworzą unikalny identyfikator. A z Guidem przekazujesz kombinację ciąg/liczba, którą można rzucić i uczynić niepowtarzalną. Więc moje pytanie jest takie; podczas korzystania z dostawcy członkostwa, którego używasz, nazwy użytkownika lub identyfikatora użytkownika, aby wrócić do użytkownika? Dziękuje wszystkim!


title: Data jako numer wersji oprogramowania

text: Twórcy oprogramowania zazwyczaj nie używają daty jako numeru wersji, chociaż format RRRRMMDD (lub jego wariancje) wygląda wystarczająco solidnie, aby można go było używać. Czy jest coś nie tak z tym schematem? A może dotyczy to tylko ograniczonych „typów” oprogramowania (takich jak produkcje własne)?


title: Czy HTML5 nadaje się do synchronizowania danych między urządzeniami?

text: Pracuję dla firmy ubezpieczeniowej. Mają bazę danych kontaktów, która jest przekazywana agentom terenowym przez Lotus Notes. Próbujemy odejść od Lotus Notes, ale najpierw musimy usunąć naszą zależność od niego. Zasugerowano, że rozwiązanie HTML5 może zapewnić dostęp offline do kontaktów agentów i być używane do synchronizacji zmian z serwera w dół i klienta w górę. Rozumiem, że możliwości przechowywania SQL w HTML5 nie są w pełni zaimplementowane (IE i Firefox najwyraźniej nie obsługują jeszcze jednej czytanej witryny). LocalStorage może nie być wystarczająco solidny dla danych, które musimy zsynchronizować ze względu na limit rozmiaru jest stosunkowo niewielka. Czy HTML5 jest wykonalnym rozwiązaniem tego problemu, czy też powinniśmy znaleźć jakieś rozwiązanie do synchronizacji? (Czytałem o jednym od ludzi Ubuntu i Microsoftu.) Dzięki!


title: Czy należy unikać lub być ostrożnym z funkcjami C99 w kodzie C?

text: Niektórzy zdają się mówić, że należy unikać funkcji C99 w kodzie C, ponieważ kompilatory tak naprawdę nie obsługują tych funkcji. C99 to standard z 1999 roku, czy te funkcje nie powinny być teraz dość rozpowszechnione? Czy należy unikać używania funkcji C99 w nowym kodzie? W starszym kodzie? Zdarza mi się dość często korzystać z niektórych funkcji C99, czy powinienem przestać to robić, czy być bardziej ostrożnym przy korzystaniu z tych funkcji?


title: problem z wysoką spójnością - zasada DRY we wszystkich komponentach

text: W naszej firmie musimy postępować zgodnie ze sztywnym cyklem: 1. Dokumentu analizy wymagań (dokumentu przypadku użycia). 2. Dokument projektowy (najpierw poziom wysoki, potem poziom niski) 3. Kodowanie zgodnie z dokumentem. 4. Testowanie jednostkowe. 5. Zespół QA następnie testuje **Streszczenie:** Wszystko zaczęło się, gdy opracowaliśmy komponent w początkowym cyklu życia projektu. Komponent składał się z własnej warstwy domeny/warstwy biznesowej, warstwy danych, interfejsów ... itd. Po powiedzmy około miesiącu musieliśmy stworzyć nowy komponent ze względu na pewne inne wymagania, składał się on również z własnej warstwy domeny/biznesu warstwa, warstwa danych, interfejsy... itd. W naszym rozwiązaniu znajduje się Wspólny Komponent, w którym przechowujemy wszystkie wspólne metody/klasy w całym rozwiązaniu. Kontynuowaliśmy rozwój drugiego komponentu w miarę zbliżania się wymagań i dostarczaliśmy nowe funkcje w tym komponencie, w wyniku czego projekt również zaczął ewoluować w tym komponencie. Pierwszy element pozostał nietknięty, ze starym wzornictwem. Były jednak pewne klasy/interfejsy, które były w większości podobne, ale zduplikowane, naruszając DRY. * * * **Pytanie:** Czy można po prostu dodać odniesienie do warstwy biznesowej, warstwy danych lub „innych istotnych komponentów” komponentu 2 w komponencie 1, czy to podejście jest zgodne z jakimikolwiek **najlepszymi praktykami projektowania architektury/oprogramowania** ? Lub Wspólne klasy/metody powinny być promowane do wspólnego komponentu, gdzie mogłyby być wykorzystywane przez inne komponenty (zgodnie z zasadą DRY)? * * * Przy pierwszym podejściu wydaje się, że mój składnik/rozwiązanie będzie zagrożone wielką kulą błota. Przy drugim podejściu wydaje się, że jeśli klasa jest używana w więcej niż jednym komponencie, powinna być promowana do komponentu Common. Czy to nie narusza zasady wysokiej spójności Tak więc, krótko mówiąc **Proszę o wszelkie porady ekspertów dotyczące dwóch wymienionych podejść lub może to być inna od specjalistów oprogramowania/architektów**. Ponieważ jest to powszechny problem, z którym boryka się każdy produkt, więc jak sobie z nim poradzić?


title: Jaka jest ta odmiana MVC w JavaScript?

text: Pracuję nad uporządkowaniem mojego kodu **Javascript**. Obecnie mam widoki zaimplementowane bez żadnego modelu lub kolekcji. Teraz pracuję nad oddzieleniem Modelu od Widoku. Więc dla tej transformacji planuję następująco: Widok ---> X <--- | ---> Serwer < Strona klienta > Założenia: 1. Widok nie będzie zawierał żadnych danych, które mają być wczytane z serwera. 2. X porozmawia z serwerem i uzyska wymagane dane. Wtedy X odpali zdarzenie. 3. Widok będzie słuchał zdarzeń i odpowiednio się aktualizował. 4. X nie jest dokładną repliką jakiejś jednostki na serwerze. X po prostu pobierze te podmioty/dane z serwera, a następnie View może zażądać tych danych od X. 5. Będzie dokładnie jeden X dla każdego widoku. Teraz pytanie brzmi: Jak się nazywa X? Opcje — Model, Kontroler, ViewModel, Presenter lub cokolwiek innego. Czy to bardzo prymitywna rzecz, która nie może mieć terminologii?


title: Którą klasę uruchomić TDD aplikacji gry karcianej? Jakie są następne 5-7 testów?

text: Zacząłem pisać aplikacje do gier karcianych. Niektóre klasy modeli: * CardSuit, CardValue, Card * Deck, IDeckCreator, RegularDeckCreator, DoubleDeckCreator * Board * Hand i niektóre klasy gier: * Turn, TurnHandler * IPlayer, ComputerPlayer, HumanPlayer * IAttackStrategy, SimpleAttachStrategy, IDefenceStrategy, Simple GameData,Strategy są * już napisane. Moim pomysłem jest stworzenie silnika, w którym dwóch graczy komputerowych może grać w grę, a później dodać część UI. Już od jakiegoś czasu czytam o Test Driven Development (TDD) i mam pomysł, aby zacząć pisać aplikację od zera, ponieważ obecnie mam tendencję do pisania niepotrzebnego kodu, który wydaje się przydatny w przyszłości. Również kod nie posiada żadnych testów i ciężko je teraz dodać. Wygląda na to, że TDD może poprawić wszystkie te problemy - minimum potrzebnego kodu, dobre pokrycie testami, a także może pomóc w dojściu do właściwego projektu aplikacji. Ale mam jeden problem - nie mogę zdecydować, od czego zacząć TDD? Czy powinienem zacząć od dołu - Klasy związane z kartami, czy gdzieś na górze - Gra, TurnHandler, ... ? ** Od jakich zajęć byś zaczął? A jakie będą następne 5 do 7 testów?** _(użyj gry karcianej, którą znasz najlepiej)_ Chciałbym rozpocząć TDD z Twoją pomocą, a potem kontynuować sam!


title: Fragmenty portfela

text: Właśnie wyszedłem ze szkoły. I miałem zamiar stworzyć moje portfolio .... ale tak naprawdę cały mój kod wygląda tak prosto, że zastanawiam się, jakie fragmenty kodu są wystarczająco dobre, aby dodać je do portfela ??? A może mój pogląd na wielkość jest tak wysoki, że po prostu nad tym myślę… I mówię urywki, ponieważ nikt nie chce patrzeć na projekt, prawda? i są też wszystkie te nda, które są uciążliwe... Proszę, jeśli możesz podać przykłady, byłoby świetnie, zwłaszcza przykłady fragmentów portfolio, ponieważ mogę zobaczyć, jak to przedstawiają. Dziękuję...


title: Dlaczego używanie klasycznych pętli for jako iteratorów w stl jest uważane za złe?

text: Przeczytałem kilka artykułów (przykład), które rozważają złą praktykę klasycznej pętli `for (int ...... size() .... i++)` podczas iteracji na przykład wektorów w stl. Zamiast tego zaleca się używanie iteratorów wektorowych, tj. `begin, end` itp. Dlaczego tak jest?


title: Kiedy podejścia RPC są bardziej odpowiednie niż REST?

text: Po obejrzeniu wykładu Steve'a Vinoskiego na temat REST, Reuse i Serendipity, zastanawiam się, czy istnieją przypadki biznesowe w projektach _greenfield_ dla konfiguracji (XML-)RPC, których REST nie mógłby rozwiązać w lepszy sposób. Kilka problemów związanych z RPC, o których wspomina: * Koncentracja na języku (dopasuj rozproszony system do języka, a nie na odwrót) * „Spraw, by wyglądał lokalnie” (i radzenie sobie z awariami i opóźnieniami jako wyjątkami, a nie regułą) * zamierzone być niezależnym od języka, ale nadal ma „wywołania funkcji” w różnych językach jako główny składnik * Szablon IDL * Iluzja bezpieczeństwa typu * i kilka innych ... * * * Aby to trochę udramatyzować, niektóre wyniki wyszukiwania dynamicznego Google dla RPC vs REST: ![RPC](http://i.stack.imgur.com/jkIJ3.png) ![REST](http://i.stack.imgur.com/F9C2z.png)


title: Czy istnieją opublikowane wytyczne, normy lub odniesienia, które proponują więcej niż 80 znaków w wierszu?

text: Pomimo wzrostu rozmiaru ekranu i rozdzielczości, wiele źródeł nadal sugeruje, że kod powinien być ograniczony do 80 znaków na linię. Zdaję sobie sprawę, że istnieje wiele różnych opinii na ten temat, ale zastanawiam się, czy istnieją organy normalizacyjne lub wpływowe firmy, które stosują inne ograniczenia (częstą alternatywą jest 120 znaków). Na przykład, czy jakieś organy normalizacyjne rozważają „zwiększenie” sugerowanego limitu? Czy istnieją projekty oprogramowania na dużą skalę (np. w NASA lub ESA), które wykorzystują większe limity? > Uwaga: nie jest to kolejne pytanie o to, co robią poszczególne osoby, ani o powiązane opinie, chociaż z chęcią zapoznam się z takimi informacjami, jak _komentarze_. Jest to > konkretne pytanie o to, czy istnieją jakiekolwiek przesłanki wskazujące na to, że standardowa praktyka lub zalecenia (w formie konkretnych przykładów) prawdopodobnie wkrótce się > zmienią.


title: Jak wyceniacie swoją pracę?

text: Cóż, pozwólcie, że wyjaśnię: To był dla mnie problem od tak dawna. A co gorsza - skoro kodowanie to coś, co po prostu _ADORE_ (zdecydowanie bym to zrobiła, nawet jeśli nie było w tym żadnej płatności...) - jest to, że zawsze czuję się trochę niezręcznie... W każdym razie... **Więc , oto oferta :** Rozpoczynasz pracę nad projektem, możesz mieć coś na myśli, a nawet jeśli masz szczęście i klient nie potrzebuje " **kosztów kosztów**" wcześniej, prędzej czy później Stanę przed ostatecznym dylematem wyceny własnej pracy. * * * **Więc, jak to robisz?** * Szacując **czas**, który na to włożyłeś? _(oczywiście, to nie jest dokładne, bo być może bardziej kompetentny koder będzie potrzebował znacznie mniej czasu na to samo niż niezbyt kompetentny koder + nawet ten sam koder może nie zawsze „sprawować” jednakowo) _ * Przez **wiersze kodu**, które napisałeś? _(oczywiście to też nie jest miara: 10-liniowy skrypt, który robi dokładnie to samo ze skryptem 1000-liniowym, jest przynajmniej dla mnie „lepszy”)_ * Biorąc pod uwagę poziom **złożoności ** projektu i, być może, jaka jest specjalistyczna tematyka? * Biorąc pod uwagę inne czynniki? _(np. **wartość** projektu dla Twojego klienta)_


title: Czy od deweloperów oczekuje się umiejętności analityków biznesowych?

text: Nasz analityk biznesowy opuścił zespół. Teraz oczekuje się od nas, że wykonamy pracę, którą wcześniej wykonał analityk biznesowy, a kierownictwo uważa, że zadanie, które analityk biznesowy wykonuje w ciągu trzech miesięcy, może wykonać w ciągu miesiąca programista. Moje doświadczenie dotyczy tylko programowania i nie znam narzędzi business intelligence. Wydaje mi się to być może niesprawiedliwym porównaniem lub oczekiwaniem, a nawet może zbanalizować rolę analityka biznesowego. Czy ktoś jeszcze spotkał się z taką sytuacją? Jak sobie z tym poradzić?


title: C++ 'using': czy powinienem go używać, czy powinienem go unikać?

text: Zdaję sobie sprawę, że niektóre z nich mają subtelnie inną semantykę z powodu ADL. Ogólnie jednak: który z nich powinienem preferować (jeśli w ogóle) i dlaczego? (A może zależy to od sytuacji (np. nagłówek wbudowany czy implementacja?) Ponadto: czy powinienem preferować `::std::` nad `std::`? używając przestrzeni nazw std; pair<string::const_iterator, string:: const_iterator> f(const string &s) { return make_pair(s.begin(), s.end());} lub std::pair<std::string::const_iterator, std::string::const_iterator> f( const std::string &s) { return std::make_pair(s.begin(), s.end()); } lub używając std::pair; używając std::string; pair<string::const_iterator, string: :const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } lub std::pair<std::string::const_iterator, std::string::const_iterator> f (const std::string &s) { używając std::make_pair; return make_pair(s.begin(), s.end()); } lub std::pair<std::string::const_iterator, std::string ::const_iterator> f(const std::string &s) { używając standardowej przestrzeni nazw; return make_pair(s.begin(), s.end()); }      albo coś innego? (Zakładam, że nie mam C++11 i `auto`.)


title: Czy używanie testów jednostkowych do opowiedzenia historii to dobry pomysł?

text: Mam więc moduł uwierzytelniania, który napisałem jakiś czas temu. Teraz widzę błędy na swojej drodze i piszę dla niego testy jednostkowe. Podczas pisania testów jednostkowych trudno mi wymyślić dobre nazwy i dobre obszary do przetestowania. Na przykład mam takie rzeczy jak * RequiresLogin_should_redirect_when_not_logged_in * RequiresLogin_should_pass_through_when_logged_in * Login_should_work_when_given_proper_credentials Osobiście uważam, że jest to trochę brzydkie, chociaż wydaje się „właściwe”. Mam też problem z rozróżnianiem testów, po prostu je skanując (muszę przeczytać nazwę metody co najmniej dwa razy, aby wiedzieć, co właśnie się nie powiodło) Pomyślałem więc, że może zamiast pisać testy, które czysto testują funkcjonalność, może napisać zestaw testów które obejmują scenariusze. Na przykład jest to testowy kod, który wymyśliłem: public class Authentication_Bill { public void Bill_ma_no_account() { //assert nazwa użytkownika „rachunek” nie znajduje się w UserStore } public void Bill_attempts_to_post_comment_but_is_redirected_to_login() { //Wywołania WymaganeLogin i powinny przekierować do strony logowania } public void Bill_creates_account() { //udawaj, że strona logowania podwoiła się jako rejestracja i założył konto. Dodaj konto tutaj } public void Bill_logs_in_with_new_account() { //Login("bill", "password"). Assert nie został przekierowany na stronę logowania } public void Bill_can_now_post_comment() { //Wywołania wymaganego logowania, ale nie powinien zabijać żądania ani przekierowywać na stronę logowania } } Czy to jest znany wzorzec? Widziałem historie akceptacji i tym podobne, ale to jest zasadniczo inne. Duża różnica polega na tym, że wymyślam scenariusze, aby „wymusić” testy. Zamiast ręcznie próbować wymyślać możliwe interakcje, które będę musiał przetestować. Wiem też, że zachęca to do testów jednostkowych, które nie testują dokładnie jednej metody i klasy. Myślę, że to jest w porządku. Zdaję sobie też sprawę, że będzie to sprawiało problemy przynajmniej niektórym frameworkom testowym, ponieważ zwykle zakładają one, że testy są od siebie niezależne i kolejność nie ma znaczenia (gdzie by to w tym przypadku było). Zresztą, czy to w ogóle słuszny wzór? A może byłoby to idealne rozwiązanie do testów integracyjnych mojego API, a nie do testów „jednostkowych”? To tylko osobisty projekt, więc jestem otwarty na eksperymenty, które mogą się udać lub nie.


title: Jakie znasz przydatne alternatywne struktury sterowania?

text: Podobne pytanie zostało zamknięte na SO. Czasami, gdy programujemy, okazuje się, że jakaś konkretna struktura sterowania byłaby dla nas bardzo przydatna, ale nie jest bezpośrednio dostępna w naszym języku programowania. **Jakie alternatywne struktury kontrolne Twoim zdaniem są użytecznym sposobem organizowania obliczeń?** Celem jest uzyskanie nowych sposobów myślenia o strukturyzacji kodu, aby poprawić chunking i wnioskowanie. Możesz stworzyć życzeniową składnię/semantykę niedostępną w tej chwili lub zacytować mniej znaną strukturę sterowania w istniejącym języku programowania. Odpowiedzi powinny dawać pomysły na nowy język programowania lub ulepszyć rzeczywisty język. Pomyśl o tym jako o burzy mózgów, więc opublikuj coś, co uważasz za szalony pomysł, ale w niektórych sytuacjach może to być wykonalne. Chodzi o programowanie imperatywne.


title: Które z tych przykładów OOP demonstrują właściwe koncepcje OOP?

text: Nadal próbuję owinąć głowę wokół OOP. Oczywiście wszystkie poniższe przykłady działają, ale czy istnieje jeden (lub być może inny), który najlepiej ilustruje koncepcje OOP? /** * W poniższych przykładach klasa Image wysyła zapytanie do obrazu * i skojarzonych informacji z bazy danych, która jest * przekazywana do tworzenia instancji poprzez wstrzykiwanie zależności. */ $obraz = nowy obraz(nowy Db()); **Przykład 1:** if ($image->setImageId($id, $size)) { header('content-type: ' . $image->content_type); header('content-length: ' . $image->length); echo $image->getBytes(); } **Przykład 2:** if ($image_info = $image->getImageInfoByIdAndSize($id, $size)) { header('content-type: ' . $image_info->content_type); header('content-length: ' . $image_info->length); echo $image->getImageBytesByIdAndSize($id, $rozmiar); } **Przykład 3:** $image->setImageIdAndSize($id, $rozmiar); if ($image_info = $image->getImageInfo()) { header('content-type: ' . $image_info->content_type); header('content-length: ' . $image_info->length); echo $image->getImageBytes(); }


title: Czy map-reduce przesyła dane i wykonywalne instrukcje?

text: Kiedy map-reduce dzieli zadanie i wysyła dane do każdego procesu roboczego, czy przekazuje również instrukcje, jak operować na danych? Załóżmy na przykład, że Google ma ogromną liczbę komputerów, które używają map-reduce do indeksowania stron internetowych. Jeśli chcieliby tymczasowo użyć tej samej macierzy systemów do zrobienia czegoś innego, czy musieliby ręcznie przekonfigurować każdy system, czy też map-reduce obsługuje przesyłanie nowych instrukcji wykonywalnych do pracowników?


title: Firma chce napisać niestandardowe narzędzie do zarządzania projektami, zamiast korzystać z produktów innych firm

text: W firmie, w której pracuję, bardzo chcemy zagłębić się w zwinną metodykę tworzenia oprogramowania. Jedną rzeczą, która mnie nie ekscytuje, jest fakt, że kierownictwo chce, abyśmy zbudowali niestandardową funkcję zarządzania projektami w intranecie firmy. Myślę, że to totalna strata czasu. Dostępnych jest wiele świetnych narzędzi innych firm (np. Axosoft OnTime), które mogą zrobić wszystko, czego potrzebujemy, a nawet więcej. Za ile czasu na rozwój kosztowałoby nas zbudowanie własnego modułu do zarządzania projektami, mogliśmy kupić liczne licencje na produkt innej firmy. Jedną z obaw jest to, że podczas pisania kodu dla klienta i korzystania z naszego niestandardowego modułu zarządzania projektami w intranecie znajdujemy w nim błędy, które wymagają naprawy jak najszybciej. Oznacza to konieczność przerwania pracy nad kodem klienta, aby naprawić Intranet. To po prostu przyprawia mnie o dreszcze. Kolejnym zmartwieniem, jakie mam, jest brak funkcjonalności. Ten niestandardowy moduł będzie tak prosty, że korzystanie z niego będzie po prostu bzdurne. Może to zabrzmieć trochę smętnie, ale na miłość boską, wiele narzędzi innych firm jest tak bogatych w funkcje, że pomysł napisania własnego narzędzia sprawia, że czujemy się bardzo nieswojo. W rzeczywistości nie mogę się tym przejmować. Co myślicie? Zamierzam poruszyć tę kwestię z moim szefem, ponieważ uważam, że jest to bardzo ważny temat do omówienia. EDYCJA: Dziękuję za świetne odpowiedzi, bardzo doceniam. Podsumowując niektóre z nich: **Pieniądze** Oczywiście mój szef chce zaoszczędzić pieniądze, nie wydając kilkuset funtów na licencje. Jednak, abyśmy napisali niestandardowe narzędzie, zajmie to x dni pomnożone przez około 500 funtów, co jest naszym kosztem. Nie widzę w tym wartości biznesowej. Kierownictwo wspomniało, że chcą sprzedawać Intranet jako produkt w przyszłości, ale jest on tak dostosowany do naszych potrzeb (i wręcz podstawowy), że aby przekazać go innemu klientowi, widzę, że musimy rozwidlić wersję kod i mimo wszystko odbuduj większość. Więc to nie jest tak, że czerpiemy coś z ponownego wykorzystania. **Cechy** Posiadanie własnego niestandardowego modułu oznacza brak nadużywania funkcji - w produkcie znajdzie się tylko wymagana przez nas funkcjonalność. Mój problem polega na tym, że istnieje wiele darmowych narzędzi do zarządzania projektami typu open source z minimalnymi funkcjami. Więc nawet jeśli koszt jest problemem, możemy przyjrzeć się otwartemu oprogramowaniu. Znowu wszystko sprowadza się do tego, że nie widzę sensu pisania narzędzia do zarządzania projektami w dzisiejszych czasach. To trochę jak pisanie własnej przeglądarki internetowej – dlaczego?, po co? Chociaż kierownictwo prosi o to narzędzie, tylko dlatego, że tak jest, nie oznacza to, że zamierzam ich zadowolić i zrobić to tylko dlatego, że o to poprosili. Jeśli coś nie ma sensu, zgłoszę to jako problem. Ostatecznie to programiści piszą kod, to programiści zarabiają na biznes. Tak więc, jeśli o mnie chodzi, deweloperzy mają bardzo dużą rolę w decydowaniu o tym, jak firma powinna zarządzać projektami i jakie narzędzia są używane. "Jestem Spartaninem, argh!" :) Hmm, z jakiegoś powodu nie udało mi się zamienić tego pytania na wiki, więc będę musiał wybrać odpowiedź do zaakceptowania. Edycja: Miałem dzisiaj spotkanie z moim szefem. Opowiedziałem o swoich obawach związanych z tworzeniem od podstaw niestandardowego narzędzia. Pokazałem mu nawet OnTime 2010, a ponadto uruchomiłem przykładowy projekt OnTime SDK, który pokazał, że możemy napisać własny, niestandardowy kod do interakcji z danymi i robić, co tylko chcemy. Pokazałem wszystkie listy, funkcje, jakie mogłem wymyślić. Ale nie był przekonany. Nie-f@król-wiarygodne! :( Więc będziemy musieli napisać wszystko od zera, wiedząc doskonale, że możemy po prostu kupić narzędzie z półki, aby wykonać pracę. Jest wiele przekleństw, których mogę teraz użyć, aby opisać, jak się czuję!


title: Czym zajmuje się uczeń w społeczności Microsoft Developer Community

text: Studiuję Inżynierię Oprogramowania i obecnie jestem na 4 semestrze. Poproszono mnie o reprezentowanie mojej uczelni jako partnera Microsoft Student. Odmówiłem, ponieważ chodziło głównie o organizację imprezy. Później zostałem wybrany przez Microsoft do społeczności Microsoft Developer Community. Niewiele wiem o mojej roli, jeśli ją mam, i nie wiem, co mam zrobić lub nauczyć się dla tego wyboru. Wiem, że zostałem wybrany z powodu mojego GPA. Mój profesor powiedział mi, żebym wyróżniał się w technologiach Microsoftu, i niewiele informacji jest jeszcze dostępnych. Powiedziano mi również, że Microsoft ma moje informacje! Pytam tutaj z góry, ponieważ nie chcę dać się złapać w sytuacji, gdy Microsoft prosi mnie o udział w wydarzeniu programistycznym lub pokazanie jakiejś odpowiedniej pracy, a ja nadal nie jestem przygotowany na takie wydarzenie. Jaka jest rola lub oczekiwania wobec uczniów wybranych w społeczności deweloperów firmy Microsoft. Czy mogę skontaktować się bezpośrednio z firmą Microsoft, aby zapytać o to, jak mogę to zrobić. Czy otrzymam również konto lub identyfikator od firmy Microsoft, aby uzyskać dostęp do jakiejś witryny internetowej?


title: Jak przetwarzać duże pliki w NetLogo?

text: Mam problemy z NetLogo z dużymi plikami *.csv / *.txt. Dokumenty mogą składać się z około 1 miliona zestawów danych i muszę je przeczytać (aby docelowo stworzyć diagram na podstawie danych). Przy najprostszym kodzie źródłowym mój program potrzebuje około 2 minut na przetworzenie tych plików. Jak mam podejść do szybszego czytania tak dużych plików danych w NetLogo? Czy NetLogo w ogóle nadaje się do takich zadań (bo wydaje się, że jest przeznaczone bardziej do nauczania i uczenia się)?


title: Tworzenie dynamicznej witryny za pomocą Node.js

text: Próbuję uzyskać kilka wskazówek, jaka byłaby najlepsza metodologia do naśladowania dla aplikacji sieci Web. Najpierw trochę tła: zbudowałem dwa różne API przy użyciu Node.js, gdzie Node dostarcza dane klientom za pomocą interfejsu JSON. Obaj klienci to aplikacje na iOS, które intensywnie korzystają z Socket.io i Express. Teraz próbuję wejść w świat tworzenia stron internetowych – chciałbym móc stworzyć jednostronicową aplikację uruchamianą w przeglądarce, ponownie używając Socket.io i Express. Jednak jestem trochę zawieszony, co dokładnie powinienem zrobić. * Czy powinienem hostować swoją witrynę poza Nginx/Apache i używać Node jako zwykłego serwera „danych”, przesyłającego dane przez JavaScript na kliencie w celu aktualizacji kodu HTML witryny? * Czy powinienem hostować to wszystko przez Node, dodając trasy dla plików na bieżąco? * Czy powinienem spróbować utworzyć jakąś formę frameworka typu „wyślij polecenie przez Socket.io do klienta JS, aby dynamicznie zbudować stronę”? * Czy powinienem zrobić coś zupełnie innego? Zasadniczo jestem programistą iOS i API, nieprzyzwyczajonym do technologii internetowych, próbującym dowiedzieć się, jak najlepiej wykorzystać wiedzę o metodologii obsługi danych Node i zastosować ją do aplikacji internetowej po stronie klienta. Czytałem mnóstwo informacji w Internecie i chociaż pomocne, wydaje się, że wszystko wydaje się zakładać, że wiem już dużo o tworzeniu stron internetowych i po prostu próbuję dostosować je do Node, podczas gdy zamiast tego jest odwrotnie: wiem o Node, ale nie o tworzeniu stron internetowych. Sprawdziłem na przykład stos MEAN i chociaż podoba mi się ta koncepcja, nie wydaje się (na pierwszy rzut oka), że Angular jest bardziej odpowiedni dla Node niż, powiedzmy, jQuery (jestem pewien, że się mylę tutaj – musi być jakiś powód, dla którego „ŚREDNIA” jest czymś). Każdy wkład jest bardzo mile widziany!


title: Czy grupowanie i minifikacja skryptów przynosi efekt przeciwny do zamierzonego?

text: Na stronie internetowej mam 1 tag skryptu, który zawiera cały mój zminifikowany JavaScript (używam SquishIt dla .NET). Widzę jednak, że kilka osób woli ładować swoje skrypty równolegle, używając czegoś takiego jak requirejs lub headjs. Zastanawiałem się, co jest lepsze pod względem wydajności i czy łączenie i minimalizowanie całego mojego JavaScriptu jest warte wysiłku?


title: Problem ze zrozumieniem, co oznacza „eksportowanie funkcji”

text: Nie rozumiem, co oznacza poniższy tekst: „Aplikacje ISAPI można pisać w dowolnym języku, który umożliwia eksport standardowych funkcji C, na przykład C, C++, Delphi”. Co to jest „zezwalanie na eksport funkcji C/C++/Delphi”? PS Jestem bardzo nowa.


title: Czy istnieje wzorzec lub najlepsze rozwiązanie dotyczące przekazywania typu referencyjnego do wielu klas w porównaniu z klasą statyczną?

text: Moja aplikacja .NET tworzy pliki HTML i jako taka struktura wygląda jak zmienna myData BuildHomePage() zmienna wykres = new BuildGraphPage(myData) zmienna tabela = BuildTablePage(myData) BuildGraphPage i BuildTablePage wymagają danych dostępowych, obiektu myData. W powyższym przykładzie przekazałem obiekt myData do 2 konstruktorów. To właśnie robię teraz, w moim obecnym projekcie. Obiekt myData i jego właściwości są tylko do odczytu. Problem w tym, że wzrosła liczba stron, które będą wymagały tego obiektu. W rzeczywistym projekcie jest ich obecnie 4, ale nowa specyfikacja ma mieć około 20. Przekazywanie tego obiektu konstruktorowi każdego nowego obiektu i przypisywanie go do pola jest trochę czasochłonne, ale nie jest to trudne! To stawia pytanie, czy lepszą praktyką jest kontynuowanie tego, co mam, czy refaktoryzacja i utworzenie nowej statycznej klasy dla myData, do której można się odwoływać z dowolnego miejsca w moim projekcie. Myślę, że moje umiejętności korzystania z Google są słabe, ponieważ próbowałem znaleźć odpowiedni wzór, ponieważ jestem pewien, że tego typu projektowanie musi być powszechne, ale moje wyniki nic nie zwróciły. Czy istnieje odpowiedni wzorzec, czy też najlepsze praktyki skłaniają się ku jednemu wdrożeniu nad drugim.


title: Zarządzanie plikami DLL, wdrażanie i łatwość użytkowania dla użytkownika końcowego

text: Ostatnio myślałem o byciu użytkownikiem końcowym, który chciałby pobrać jeden z moich własnych projektów i używać go na idealnie przeciętnej maszynie. Mając równe doświadczenie w systemie Unix i Windows, wiem, że zarządzanie pakietami w systemie Unix znacznie ułatwia programiście ułatwienie użytkownikowi końcowemu. Jeśli pakiet jest wymagany, jest po prostu wymagany, a wszystkie wymagane biblioteki po prostu tam są. Jednak w systemie Windows jest to inna historia. Mam projekt, który przechowuję na GitHub, który jest w zasadzie aplikacją C++ GUI do interfejsu z Wii Remote. Niewiele. Jednak na początku podzieliłem część mojego początkowego projektu na osobny projekt biblioteczny, ponieważ mogłem przewidzieć, że byłoby to przydatne. Końcowym rezultatem tego wszystkiego jest to, że mam rzeczywisty projekt aplikacji na GitHubie, który wymaga zarówno niektórych plików DLL wxWidgets, jak i DLL z mojego oddzielnego projektu biblioteki, co z kolei wymaga pliku Boost DLL (threading) i pliku DLL wiiuse, żaden z nich normalny użytkownik nie będzie miał na swoim komputerze, nie mówiąc już o swojej PATH. Mógłbym wziąć WSZYSTKIE te pliki DLL, skompresować je i umieścić w aplikacji, ale musiałbym pamiętać o zastąpieniu mojego oddzielnego pliku DLL biblioteki za każdym razem, gdy pracowałem nad biblioteką. W każdym razie, jakie jest powszechne podejście do radzenia sobie z tym w systemie Windows? Czy istnieją narzędzia instalacyjne, które mogą mi pomóc w rozwiązywaniu problemów opisanych powyżej?


title: Jak radzić sobie z problemami projektowymi OOP w rozmowach kwalifikacyjnych?

text: To jest pytanie, w którym szukam wskazówek od kolegów/starszych programistów, aby dostać się do mojej wymarzonej firmy - jest to pionier w OOP i Agile. Już raz nie udało mi się załatwić wywiadu. Jedną z części, która wydaje mi się największym wyzwaniem, jest wymyślenie odpowiedniego projektu zorientowanego obiektowo (klasy, interfejsy, metody, interakcje itp.) w bardzo krótkim czasie dla pewnych sytuacji, takich jak Pacman, Game of Life i tak dalej. Ponieważ problemy są bezprecedensowe - moje podejście polega głównie na próbowaniu różnych rzeczy, a następnie podejmowaniu decyzji - które ich zdaniem nie są jasne i nie są takie, jakich oczekują od programisty z ponad 5 letnim doświadczeniem. Przestudiowałem już kilka książek o wzorach, OOP - niewiele mi to pomogło i myślę, że zajmie to trochę więcej. Czy ktoś mógłby wskazać, co konkretnie powinienem ćwiczyć, abym mógł lepiej radzić sobie z problemami projektowymi, jak powyżej. Chcę udoskonalić swoje podejście i mieć lepszy proces myślowy.


title: ASP.NET a ASP.NET MVC

text: Właśnie zacząłem uczyć się frameworka ASP.NET MVC, który bardzo różni się architekturą od zwykłego programowania ASP.NET. Przejście z formularzy systemu Windows do WPF było miłe i wydawało się krokiem naprzód w technologii. Ale ucząc się ASP.NET MVC, nie czuję tego samego, nie jestem w stanie przekonać się, że MVC jest lepszy niż WebForms. Po prostu wydaje się, że dokonali pewnych poprawek w już dostępnym frameworku internetowym i zaadaptowali architekturę MVC z innego języka. Czy ASP.NET MVC to krok do przodu w rozwoju? Czy powinienem uczyć się i rozwijać moje przyszłe projekty w oparciu o tę platformę i architekturę? Wydaje mi się, że Microsoft rzuca nową architekturę razem z WPF lub kopiuje Ruby on Rails. WPF wydaje się obiecujący i świetny, podczas gdy ASP.NET MVC po prostu sprawia, że jesteś okruchem _[sic]_. Usunęli kontrolki, wrzucili nowy system kontroli i pakiety danych, a to wszystko razem stanowi ekstremalną zmianę w WebForms. Zdaję sobie sprawę, że z MVC masz dużą swobodę w aspekcie testowania, ale nie wierzę, że ma to duże znaczenie w przypadku małych stron internetowych lub projektów. Jeśli zignorujesz wartość testowania, jakie są twoje zdanie na ten temat?


title: Dlaczego C++ nadal jest „hybrydowy”

text: W pokrewnym pytaniu wyjaśniono, dlaczego C++ nie jest kompatybilny z C pod wieloma względami. Jednak C++ jest nadal językiem "hybrydowym"*. I niestety, wielu programistów nadal uważa C++ za „C ze strumieniami i wbudowanymi ciągami”. Skutkuje to naprawdę złym kodem napisanym, że nie jest to ani C++, ani C. IMHO, byłoby lepiej, gdyby język/kompilator zmusił programistów do pewnego stopnia do pisania bardziej eleganckiego kodu. Czy istnieje zatem uzasadnienie dla utrzymywania nowoczesnej hybrydy C++ (na przykład C++0x i przyszłe wersje)? * Przez hybrydę rozumiem, że to od programisty zależy, czy użyje: standardowych ciągów i strumieni, klas, przestrzeni nazw innych niż domyślne itp.


title: Strategia pamięci podręcznej PHP - geniusz czy zwykła głupota?

text: Mam hosting współdzielony z ograniczonymi możliwościami. Memcache i mod_cache nie są dla mnie dostępne. Chciałbym zaimplementować własną metodę buforowania PHP, aby buforować wyniki mocno obciążonego zapytania SQL. Używanie tabel podsumowań w SQL nie wchodzi w grę, ponieważ zapytanie przyjmuje wiele parametrów, które mogą przyjmować tysiące różnych wartości (jest to system statystyczny). Mój pomysł jest taki, jak ta funkcja execQuery($parametr) { $query = "SELECT ....... ". $parametr; //kod zapytania został wygenerowany $rand = mt_rand(0,10); //nie ma potrzeby sprawdzania/zapisywania dat ważności, losowo generuj cache dla szybkości if($rand == 0) { //wykonaj zapytanie normalnie i generuj nowy cache $result = mysql_query($query); $md5 = md5($zapytanie); // nazwa pliku pamięci podręcznej jest równa md5 zapytania $cache_file = fopen("/cache/" . $md5 .php", "w"); fwrite($plik_cache, $wynik); // wynik jest zapisywany jako kod php generujący gotową do użycia tablicę wyników, kod musi zostać zmodyfikowany Myślę //zwróć wynik } else { //zostanie użyty cache $md5 = md5($query); if(file_exists("/cache/" .$md5 .php")) { include("/cache/" .$md5 .php"); zwróć $wynik; } else { //brak pamięci podręcznej, uruchom zapytanie normalnie i wygeneruj pamięć podręczną } } } Co o tym myślisz i jakie są możliwe pułapki? Jakie są konsekwencje używania mt_rand, md5? Czy uważasz, że przewyższają zapytania intensywnie obciążone? Czy wielokrotne zapisy plików systemowych są tego warte (tylko jeden zapis na każde 10 trafień i może być nawet zwiększony)? Mile widziane są ulepszenia i sugestie.


title: Najlepsza organizacja dla aplikacji zespołowej

text: Tworzę aplikację opartą na tej strukturze : /Root /--- Index.php /--- /includes/ /--- /modules/ /-------- /Mod1/ /--- ----- /Mod2/ /-------- /ModN/ W przyszłości w projekcie weźmie udział 2 programistów. 1. Muszę ograniczyć dostęp dla programistów. Nie powinni uzyskiwać dostępu do folderu „/includes/”. Zawiera rdzeń systemu. Będą musieli tylko zakodować moduły. 2. Użyję Mercurial. Jaka jest najlepsza "organizacja" (repozytorium, blokada, uprawnienia...) dla tego typu projektu. Potrzebuję porad. Dziękuję Ci :)


title: Czy ojczysty język mówiony wpływa na jakość kodu?

text: W lingwistyce istnieje szkoła myślenia, według której rozwiązywanie problemów jest bardzo związane ze składnią, semantyką, gramatykami i elastycznością własnego ojczystego języka mówionego. Pracując z różnymi międzynarodowymi zespołami programistycznymi, wyraźnie widzę kulturę mentalną (jeśli chcesz) w bazie kodu. Pomijając język programowania, niemieckie kodowanie różni się znacznie od moich kolegów z Indii. Co więcej, kod jest wyraźnie inny w Ameryce Środkowej niż w Ameryce Wybrzeża (właściwie IBM zauważył to lata temu). Czy zauważasz wraz ze swoimi międzynarodowymi kolegami (z KAŻDEGO kraju), że styl kodowania i rozwiązywanie problemów są zgodne z językami ojczystymi?


title: Narzędzia wspierające naukę nowej domeny biznesowej

text: Załóżmy, że właśnie przyjąłeś pracę, pisząc kod w branży, w której nigdy wcześniej nie pracowałeś. Aby być skutecznym, chcesz zanurzyć się w domenie biznesowej - zrozumieć słownictwo, zagadnienia i ludzi, z którymi będziesz pracować. Oczywiście pierwszym krokiem jest znalezienie dobrych mentorów i materiałów do czytania, aby rozpocząć poznawanie domeny. Jak potem „uczysz się” biznesu? Jakich narzędzi, technik i zasobów używasz? Na przykład, czy wiki to dobry sposób na uchwycenie języka domeny?


title: Dlaczego aplikacje nie mają zabezpieczeń opartych na ograniczeniach?

text: W prawie każdym systemie bezpieczeństwa, jaki kiedykolwiek widziałem, kontrolowane jest to, że **która osoba ma dostęp do której części**. Jednak w rzeczywistości w wielu sytuacjach systemy bezpieczeństwa uwzględniają również **kiedy** i **gdzie** dana osoba może coś zrobić. Na przykład **możesz jeździć szybko w dzień** , ale **nie możesz jechać szybko w nocy** , albo **możesz oficjalnie poślubić homoseksualistę w X** , ale **nie możesz wyjść za mąż tej samej płci w Y**. Czy zabezpieczenia oparte na ograniczeniach mają jakiekolwiek znaczenie w kontekście oprogramowania. Na przykład, system może uniemożliwić wejście w określonych porach dnia (na przykład po pracy) lub inny system może pozwolić Ci pozostać zalogowanym tylko wtedy, gdy wpiszesz wystarczająco szybko, lub inny system może pozwolić na wprowadzanie danych, tylko jeśli obecnie znajdujesz się w USA (Geolocation API) itp. Dlaczego systemy bezpieczeństwa komputerowego nie pasują do rzeczywistych scenariuszy?


title: Pytanie terminologiczne: Uogólnij Heisenbug

text: Czy istnieje jakieś uogólnienie o nazwie Heisenbug? Ponieważ chciałbym opisać w mojej dokumentacji, jak instrumentowanie programu zmienia wykonanie bez względu na wszystko. W The New Hacker's Dictionary jest on zdefiniowany następująco: > **heisenbug** /hi:'zen-buhg/ /n./ [z zasady nieoznaczoności Heisenberga > w fizyce kwantowej] > > **Błąd, który znika lub zmienia swój zachowanie, gdy ktoś próbuje go zbadać lub > wyizolować.** (To użycie nie jest nawet szczególnie fantazyjne; użycie debuggera czasami > znacząco zmienia środowisko operacyjne programu > wystarczająco dużo tego błędnego kodu, takiego jak ten, który opiera się na wartościach > niezainicjowana pamięć, zachowuje się zupełnie inaczej.) Antonim błędu Bohra; zobacz > także mandelbug, schroedinbug. W C dziewięć na dziesięć błędów heisenbug jest wynikiem > niezainicjowanych zmiennych automatycznych, fandango na temat podstawowych zjawisk (szczególnie strat > związanych z uszkodzeniem areny malloc) lub błędów, które rozbijają stos. Właściwie jest to ogólny problem, gdy próbujemy obserwować stan programu za pomocą instrumentacji (śledzenie, debugowanie, itp.) wykonanie programu jest zmieniane bez względu na wszystko. Ale definicja Heisenbuga wyraźnie mówi, że jest to błąd, który jest maskowany z powodu debugowania i który znika. A co z błędami, które pojawiają się w wyniku debugowania - nie ma na to słowa. Czy istnieje jakieś uogólnienie, jak _zasada Heisenbuga_?


title: Jaka jest największa przeszkoda, jaką kiedykolwiek napotkałeś w ASP.NET MVC? Dlaczego i jak można to naprawić?

text: Jakie aspekty ASP.NET MVC można uznać za złe praktyki firmy Microsoft lub za problematyczne? W formularzach internetowych ASP.NET, takie rzeczy jak ViewState, Automatycznie generowane identyfikatory i nazwy, użycie pojedynczego formularza i wzorca, takie jak ten, są często problematyczne. Ponieważ żadne twierdzenie nie powinno być bezpodstawne, lepiej więc wspomnieć, dlaczego ten aspekt jest przeszkodą. Również znalezienie jakiegoś problemu samo w sobie oznacza, że lubimy go rozwiązywać. Dlatego proszę również polecić sposoby rozwiązania tego problemu.


title: Czy legalne jest pokazywanie w mojej witrynie miniatur zdjęć, które nie są moje?

text: Chciałbym zbudować aplikację internetową, która będzie miała miniatury (około 100x100) zdjęć. Te miniatury będą połączone z oryginalną witryną (właścicielem praw autorskich). Czy jest to legalne? Np. będzie to podobne do wyszukiwarki grafiki Google.


title: JavaScript — dlaczego frameworki wiążą się z $()

text: Zastrzeżenie: wiem, że nie ma na to ściśle poprawnej odpowiedzi, ale natknąłem się na coś, co nie ma dla mnie sensu i chciałbym spróbować lepiej to zrozumieć, widząc, co inni ludzie mają do powiedzenia na ten temat . W każdym razie myślałem o tym, jak wiele różnych frameworków JavaScript definiuje nieco inne odmiany funkcji `$()` (a także rzeczy takie jak `$$()`, `$E()` i tak dalej) i byłem zastanawiasz się, dlaczego to robią. Oto co wymyśliłem: **Zalety** * Wpisanie `$()` jest szybkie. **Wady** * Sama nazwa `$` nie implikuje niczego sensownego semantycznie. * `$` jest właściwością w globalnej przestrzeni nazw, a zatem może być żądana tylko przez jeden framework w danym momencie. * Posiadanie wielu platform konkurujących o te same nazwy globalne sprawia, że są one mniej kompatybilne ze sobą. * Starszy kod, który używa funkcji `$()` zdefiniowanej w jednym frameworku, może zostać przypadkowo uszkodzony przez proste zaimportowanie drugiego frameworka, który zapewnia własną wersję `$()`. * Gdy każdy udostępnia inną wersję `$()`, kod staje się mniej czytelny, ponieważ nie można zakładać, co robi `$()`, nie wiedząc, jaki framework jest w użyciu. * Czasami początkujący programiści wpadają w zły pomysł na podstawie wszystkich znaków dolara i myślą, że muszą poprzedzić wszystkie deklaracje funkcji znakiem „$”. Wydaje mi się więc, że wady zdecydowanie przeważają nad zaletami. Co nasuwa pytanie, jeśli jest tak wiele negatywów związanych z twierdzeniem, że `$()` jako własne, dlaczego wiele frameworków robi to automatycznie? Czy są jakieś inne korzyści, których mi brakuje?


title: Języki powiązania C++ inne niż C?

text: Język C++ umożliwia mieszanie C++ i C w jednym pliku źródłowym. Na przykład extern "C" { struct bar { /* ... */ } } Czy C++ lub czy kiedykolwiek obsługiwał inne "języki powiązania" inne niż C? np. `extern „Pascal”` lub ``extern „Haskell”`


title: Czy formularze internetowe ASP.Net faktycznie tworzą HTML zgodny z ADA? Czy zestaw narzędzi ASP/AJAX podważa cel zgodności z ADA?

text: Staram się przekonać mojego pracodawcę do skorzystania z zestawu narzędzi Microsoft ASP/AJAX, ponieważ upraszcza on implementację wielu kontrolek. Jednak odrzucili ten pomysł, ponieważ tworzy „kod AJAX”, który nie jest zgodny z ADA. Jednak ten sam pracodawca wymaga, aby strony internetowe były pisane w formularzach ASP.NET Web Forms, co, o ile wiem ze źródła, jest bardzo dalekie od zgodności z ADA. Jestem nowy w programowaniu internetowym i zgodności z ADA. Moje pytania to: 1. Czy formularze internetowe ASP.Net faktycznie tworzą HTML zgodny z ADA? 2. Czy zestaw narzędzi ASP/AJAX podważy cel zgodności z ADA?


title: Projektowanie zorientowane na dane - niepraktyczne z więcej niż 1-2 "członkami" struktury?

text: Typowym przykładem projektowania zorientowanego na dane jest struktura Ball: struct Ball { float Radius; pływak XYZ[3]; }; a następnie tworzą algorytm, który iteruje wektor `std::vector<Ball>`. Następnie dają ci to samo, ale zaimplementowane w projektowaniu zorientowanym na dane: struct Balls { std::vector<float> Radiuses; std::wektor<XYZ[3]> XYZ; }; Co jest dobre i wszystko, jeśli zamierzasz najpierw iterować przez wszystkie promienie, potem wszystkie pozycje i tak dalej. Jak jednak przesuwasz kulki w wektorze? W oryginalnej wersji, jeśli masz `std::vector<Ball> BallsAll`, możesz po prostu przenieść dowolne `BallsAll[x]` do dowolnego `BallsAll[y]`. Jednak aby to zrobić dla wersji Data Oriented, musisz zrobić to samo dla każdej właściwości (2 razy w przypadku Ball - promień i pozycja). Ale jest gorzej, jeśli masz dużo więcej właściwości. Będziesz musiał zachować indeks dla każdej „piłki”, a kiedy próbujesz nią poruszać, musisz wykonać ruch w każdym wektorze właściwości. Czy to nie zabija korzyści związanych z wydajnością projektowania zorientowanego na dane?


title: Dlaczego więcej firm nie zatrudnia na odległość?

text: Ciągle słyszę o desperackich wysiłkach rekrutacyjnych firm w centrach technologicznych, takich jak SF i NYC. Jednak za każdym razem, gdy kontaktuje się ze mną startup, dowiaduję się, że stanowisko jest na miejscu i praca zdalna nie jest możliwa. Pozwolę sobie wyjaśnić, że są to startupy technologiczne. Powinni być bardzo zadowoleni z pomysłu wykorzystania technologii do załatwiania spraw i łączenia ze sobą zespołów. Przy obecnym rynku mieszkaniowym wielu z nas nie może się przenieść, nawet jeśli chcielibyśmy zapłacić wyższe koszty utrzymania. Dlaczego tak wiele firm wciąż tkwi w industrialnym sposobie myślenia tyłków na siedzeniach?


title: Obsługa szybko rozwijających się usług wielofunkcyjnych

text: Mój zespół od ponad roku tworzy biznesową aplikację internetową. Zaczęło się dość małe, ale teraz rośnie i rośnie. Myślę, że nadszedł czas na refaktoryzację. Patrząc na kod widzę poniższą sytuację: IUserService * addUser * deleteUser * updateUser * addMember * deleteMember * updateMember * registerMember * deactivateMember .... * getExpiringMember * nominateMember Ogólnie mówiąc, jest około 50 funkcji dla ponad 2500 linii logika biznesowa. Kiedyś przeczytałem "Czysty kod", stwierdza on, że nie powinno być więcej niż 200 wierszy na normalną klasę. Nasz kod poważnie narusza ten wymóg i zaczynam odczuwać trudności związane z zarządzaniem kodem. Prostym rozwiązaniem może być podzielenie tej usługi na wiele innych usług, ale nie jest to wykonalne/rozsądne: 1. Ta klasa usług służy jako punkt API dla klienta mobilnego, więc każda zmiana w interfejsie (nawet zmiana nazwy) wymaga zmiany dla klienta również. Nie chcę tracić cennego czasu naszego zespołu, jeśli nie z dobrego powodu. 2. Podzieliłem już część tej usługi na inne klasy, ale ta klasa (RegistrationService) również rośnie dość szybko i ostatnio sięga 500 linijek kodu. 3. Ostatnio coraz więcej logiki biznesowej żądań, a te usługi będą rosły jeszcze bardziej. Obawiam się, że w pewnym momencie stracimy ślady, jeśli członek zespołu, który zarządza określonym serwisem, przejdzie na emeryturę. Czy jest jakiś sposób na ułatwienie zarządzania tą usługą? Jakikolwiek wzorzec projektowy, technika refaktoryzacji, którą mogę zastosować? Wciąż nie mam wystarczającego doświadczenia w tej dziedzinie... wszelkie sugestie i wskazówki są mile widziane.


title: Dobre zasoby do zaawansowanych tematów C++?

text: Jakie są dobre zasoby do zaawansowanych tematów C++. Znam C++, ale mam niewielką wiedzę o wątkach, zaawansowanym metaprogramowaniu i wewnętrznym działaniu metaprogramowania i chciałbym być lepszy.


title: Czy metody połączone, które wymagają tylko jednego parametru na metodę, są równoważne z curryingiem?

text: Ostatnio bawiłem się Ruby i zacząłem się zastanawiać, czy w czystych językach obiektowych (a nawet tych, które nie są czyste) tworzenie metod, które przyjmują tylko jeden parametr, a następnie są łączone razem, jest równoznaczne z curry w językach z funkcjonalną styl? Jeśli nie, dlaczego nie? Byłbym wdzięczny za szczegółową, nawet rygorystyczną odpowiedź na ten temat.


title: Czy programowanie ogólnie staje się łatwiejsze do czytania, pisania i zrozumienia w miarę zdobywania doświadczenia?

text: Jestem początkującym programistą i czytałem książki, studiowałem, czytałem artykuły i tak dalej. Uzyskuję świetne wyniki, odkąd zacząłem uczyć się programowania, a kiedy byłem początkującym, wydawało mi się, że wiem wszystko o programowaniu, ale gdy nauczyłem się więcej, zdałem sobie sprawę, jak trudna jest ta dziedzina (w rzeczywistości wszystkie dziedziny są trudne, ale nie o to chodzi). Obecnie pisałem funkcjonalne oprogramowanie i nauczyłem się PODSTAW 3 języków i jestem średniozaawansowany tylko w jednym języku. Kiedy patrzę na zaawansowane rzeczy, takie jak programowanie MYSQL, czy programowanie OpenGL, czy nawet kod Visual Studio C++, przyprawia mnie to o ból głowy, a nawet podczas wizualizacji kodu źródłowego HTML wielu stron internetowych (Większość kodów źródłowych na stronach internetowych, widzianych przez google chrome wydaje się bardzo niechlujna i niezorganizowana ) wprawia mnie w zakłopotanie do granic mojego mózgu. Na początku wszystko wydaje się proste, ale patrząc na te zaawansowane rzeczy, zastanawiam się, jak można się tak wiele nauczyć. Krótko mówiąc, pytanie brzmi, czy te rzeczy stają się jaśniejsze dla programisty w miarę postępów w swojej karierze. Czy skomplikowane tematy, takie jak te wymienione powyżej (OpenGL, MySQL, zaawansowane strony html) stają się łatwiejsze do czytania, pisania i zrozumienia, gdy uczysz się więcej, czy po prostu staje się to bardziej skomplikowane w miarę postępów? Jak możesz zwalczyć uczucie, że jesteś mrówką w świecie programowania, a te rzeczy są stopą, która cię zmiażdży?


title: Czy dobrym podejściem jest poleganie na oprogramowaniu firm trzecich (nie na bibliotece)?

text: Mamy program ( napisany w VB ) używający wywołania programu winzip lub narzędzia wiersza poleceń 7zip do skompresowania niektórych plików. Raz przypadkowo odinstalowałem winzip na moim komputerze i spowodowałem, że jeden z naszych programów (stworzony przez programistę już odszedł) uległ awarii. Więc nie możemy odinstalować programu winzip. Teraz piszemy kolejny program z plikiem wsadowym java + windows. I doszedłem do punktu, w którym muszę podjąć decyzję między 1) użyciem wywołania zewnętrznego narzędzia (na przykład 7z) dla gzip w pliku wsadowym systemu Windows, 2) lub wykonaniem programu java do gzipowania pliku. Oczywiście zewnętrzne narzędzie, takie jak 7z, jest wygodne i możemy uniknąć dodatkowego kodowania w javie. Wręcz przeciwnie, jeśli 7z zostanie przypadkowo odinstalowany, nasz program ulegnie awarii. Co myślisz?


title: Kiedy reguły biznesowe wpływają na prezentację w MVC

text: Wzorzec projektowy MVC ma prowadzić do oddzielenia reguł biznesowych od prezentacji. Ale czasami zasady biznesowe WPŁYWAJĄ na prezentację. Jak najlepiej sobie z tym poradzić? Czy wtedy należy użyć ViewModel? Na przykład, wracając do mojej nieistniejącej aplikacji Biblioteka, bibliotekarz skanuje zwrócone książki. System wskazuje, że książka jest spóźniona i nakłada na tego patrona grzywnę. Niektórzy pracownicy mogą mieć zabezpieczenie w celu unieważnienia tej grzywny w oparciu o określone warunki. Warstwa prezentacji mojej aplikacji bibliotecznej będzie musiała pozwolić pracownikowi ustawić grzywnę na 0 lub kliknąć przycisk, aby zastąpić grzywnę. Ale pracownicy, którzy NIE mają zabezpieczeń, aby to zrobić, powinni postrzegać opłatę jako nieaktywne wejście lub może tylko do odczytu. _Pamiętaj, że bezpieczeństwo może nie być jedyną regułą biznesową_. To tylko przykład. Na przykład moja aplikacja może mieć ustawione informacje konfiguracyjne, które powodują, że pole na ekranie staje się niepotrzebne itp. Chociaż kod może po prostu pozwolić każdemu zmienić grzywnę, a następnie wyświetlić komunikat weryfikacyjny, nie jest to dobre doświadczenie użytkownika. Jaka jest dobra praktyka, aby to osiągnąć? Opcje, które mogę wymyślić (używając ASP.NET MVC) to: 1. Spraw, aby sam widok sprawdził regułę biznesową i wyłącz lub włącz pole. 2. Użyj funkcji HTMLHelper, która implementuje prezentację dla pola fine, i poproś tę funkcję pomocniczą o sprawdzenie reguły biznesowej. 3. Poproś kontrolera o sprawdzenie reguły biznesowej i użycie innego widoku. 4. Niech kontroler sprawdzi regułę biznesową i ustawi właściwość w ViewBag, która wskazuje, czy pole jest włączone. 5. Użyj ViewModel sprawdza regułę biznesową i ustawia informacje wskazujące, że pole jest włączone. Opcje 1 i 2 powodują, że warstwa prezentacji musi przeprowadzać walidację reguł biznesowych, a to miesza. Opcja 3 spowoduje duplikację wysiłków, ponieważ teraz masz zdefiniowane dwa widoki. Opcja 4 i 5 wymaga, aby warstwa prezentacji wiedziała, że pole MOŻE być włączone lub wyłączone, ale nie DLACZEGO. Myślę, że najbardziej lubię 4 lub 5. Czy są inne opcje, o których nie myślę?


title: Jaki jest punkt wyjścia do tworzenia aplikacji Ubuntu?

text: Myślę o tworzeniu oprogramowania dla Ubuntu i innych powiązanych dystrybucji opartych na Linuksie (takich jak Linux Mint). Ale obecnie nie wiem, od czego zacząć. Czy nauka Pythona byłaby wystarczająca/dobra? A o jakich innych rzeczach powinienem wiedzieć przed rozpoczęciem tego rodzaju rozwoju? I czy będę mógł publikować moje aplikacje w sklepie z oprogramowaniem, takim jak sklep Ubuntu, nawet jeśli jestem spoza USA/Wielkiej Brytanii? Jeśli nie, jakie mam opcje, aby moje aplikacje dotarły do odbiorców? * * * Jak wielu użytkowników prosiło, zamierzam budować aplikacje tylko dla Linuksa (myślę o Gnome), które będą trochę zorientowane na biznes i przedsiębiorstwo. Obecnie jestem certyfikowanym programistą Java w Oracle w J2SE i J2ME. I trochę znam Pythona.


title: Złóż wniosek o czas na superkomputer

text: Aby przetestować i uruchomić bardzo intensywne aplikacje C++ do przetwarzania liczb, musimy ubiegać się o czas superkomputera. Chciałbym otrzymać od Ciebie informacje zwrotne i opinie; za którymi wezwaniami się kierujecie, do których centrów superkomputerowych aplikujecie itd. Na chwilę obecną DEISA znam tylko w Europie.


title: Życiorysy: projekty open-source, odkrywanie koła na nowo?

text: Czy pisząc CV powinienem się obawiać, że niektóre projekty open source, które stworzyłem, mogą być dla mnie przeszkodą, ponieważ będą postrzegane jako odkrywanie koła na nowo? Stworzyłem kilka bibliotek open source, które mogą być postrzegane jako takie przez zatrudniających menedżerów, ponieważ istnieje znacznie więcej ugruntowanych narzędzi, które wykonują podobne zadania. Mam swoje powody, by zacząć od zera, ale są one praktycznie niemożliwe do wyjaśnienia w CV i mogą być nieco kontrowersyjne wśród techników. Zasadniczo te biblioteki są napisane w D i nie było biblioteki D, która robiłaby to, co chciałem. Czułem, że tworzenie powiązań do bibliotek w innym języku zamiast zaczynania od zera ograniczyłoby moją zdolność do zbytniego korzystania z funkcji specyficznych dla D i sprawiłoby, że biblioteki byłyby zbyt kruche i trudne do uruchomienia. Z drugiej strony te projekty są związane z domeną, o którą aplikuję i byłyby dobrym sposobem na pokazanie mojej wiedzy domenowej. Czy powinienem umieścić je w swoim CV, czy nie?


title: Czy wyświetlanie informacji o starych hasłach w przypadku niepowodzenia logowania jest bezpieczne?

text: Kiedy wczoraj zmieniłem hasło do Facebooka, przez pomyłkę wprowadziłem stare i otrzymałem to: ![Zrzut ekranu logowania na Facebooku](http://i.stack.imgur.com/T1M59.png) Czy czegoś tu brakuje, czy jest to duże potencjalne ryzyko dla użytkowników. Moim zdaniem jest to problem PONIEWAŻ jest to FaceBook i jest używany przez, no cóż, wszystkich, a najnowsze statystyki pokazują, że 76,3% użytkowników to idioci [źródło:ja], czyli więcej niż 3/4!! Żarty na bok: * Czy nie jest to przydatna informacja dla atakującego? * Ujawnia prywatne informacje o użytkowniku! * Może to pomóc atakującemu uzyskać dostęp do innej witryny, w której użytkownik użył tego samego hasła * Oczywiście nie powinieneś używać tego samego hasła dwa razy (ale pamiętaj: 76,3%!!!) * Czy to nie zwiększa po prostu powierzchnia dla napastników? * Przynajmniej zwiększa szanse na uzyskanie przydatnych informacji. * Czy w witrynie takiej jak Facebook pierwszego wyboru dla hakerów i (złych) osób zainteresowanych cennymi danymi osobowymi nie powinno być usuwane coś, co zwiększa prawdopodobieństwo wystąpienia luki w zabezpieczeniach? Czy czegoś mi brakuje? Czy jestem paranoikiem? Czy 76,3% kont zostanie zhakowanych po tym poście?


title: Jak powiedzieć szefowi, że jego styl programowania jest naprawdę zły?

text: Jestem studentem, aw wolnym czasie pracuję w dużym przedsiębiorstwie jako programista Java. Praca jest dobra, ale problem polega na tym, że mój szef pisze bardzo dziwny kod. Nie chcę narzekać, ale niektóre kwestie są moim zdaniem naprawdę dziwne. Na przykład: * nie zna żadnych wartości logicznych. Wszystkie warunki logiczne to ciągi o nazwie „YesOrNo”, a następnie w warunku, którego używa if (YesOrNo == „Yes”) * w nazwach metod i zmiennych jest wiele bardzo dziwnych znaków, takich jak é õ ô lub è * wszystkie pętle są nieskończone pętle w stylu for(;;). Następnie na końcu pętli testowany jest warunek i jeśli warunek jest spełniony, przerwij; jest nazywany. Nie wiem, czy powinnam mu powiedzieć, że uważam, że to nie jest dobra praktyka, ponieważ to on jest moim szefem i decyduje, jak i co robić. Z drugiej strony niektóre z jego przykładów są naprawdę bardzo dziwne. Jakieś wskazówki, jak sobie z tym poradzić? I czy to tylko ja uważam, że to zły styl?


title: Jakie są korzyści z programowania natywnego JavaScriptu?

text: Biorąc pod uwagę, o ile prostsze jest tworzenie jQuery w porównaniu z natywnym JavaScriptem, co sprawia, że ludzie całkowicie rezygnują z bibliotek takich jak jQuery? Czy to dlatego, że jQuery ma ograniczenia, czy jest wolne? Chodzi mi o to, że jeśli jQuery jest tak łatwe w porównaniu do natywnego javascriptu, jakie powody mają ludzie, aby nadal używać czystego javascriptu?


title: Dlaczego w przypadku frameworków PHP używana jest koncepcja „trasy”?

text: Powodem, dla którego o to pytam, jest to, że skrypt PHP nie jest trasą? Na przykład, jeśli masz article.php, twoja trasa to po prostu http://mysite.com/article.php. Po co dalej abstrahować od koncepcji trasy, skoro już istnieje jako prosty plik?


title: Dlaczego scanf nazywa się scanf? (To samo dla printf.)

text: Jestem tylko ciekaw, dlaczego w języku programowania C funkcję odczytu sformatowanych danych wejściowych nazwano „scanf” w przeciwieństwie do „readf”. Zakładam, że wywodzi się z wcześniejszego języka, więc w takim razie dlaczego został tak nazwany we wcześniejszym języku? (Rekurencja.) Ponadto, dlaczego „printf” zamiast „writef”? W językach innych niż C, dlaczego „drukuj” lub „pisz” zamiast „wyświetlaj”?


title: jakie jest dobre podejście do pracy z wieloma bazami danych?

text: Pracuję nad projektem, który ma własną bazę danych o nazwie InternalDb, ale także wysyła zapytania do dwóch innych baz danych, nazwij je ExternalDb1 i ExternalDb2. Zarówno ExternalDb1, jak i ExternalDb2 są w rzeczywistości wymagane przez kilka innych projektów. Zastanawiam się, jakie jest najlepsze podejście do radzenia sobie z tym? Obecnie właśnie stworzyłem projekt dla każdej z tych zewnętrznych baz danych, a następnie wygenerowałem Edmx i encje przy użyciu podejścia encji-framework. Pomyślałem, że mógłbym wtedy włączyć te projekty do dowolnego z moich rozwiązań, które wymagają dostępu do tych baz danych. Poza tym nie mam osobnych warstw biznesowych. Mam tylko rozwiązanie takie jak poniżej: Project.Domain ExternalDb1Project.Domain ExternalDb2Project.Domain Project.Web Tak więc moje projekty domeny zawierają dostęp do danych, a także POCO generowane przez Entity Framework i dowolną logikę biznesową. Ale nie jestem pewien, czy to dobre podejście. Na przykład, jeśli chcę zrobić Walidację w moim Project.Domain na jednostkach w InternalDb, to jest w porządku. Ale jeśli chcę zrobić Walidację dla jednostek z jednej z zewnętrznych baz danych, zastanawiam się, gdzie powinna się udać? Aby być bardziej szczegółowym, pobieram pracowników z ExternalDb1Project.Domain. Jednak chcę się upewnić, że są aktywne. Gdzie powinna iść ta weryfikacja? Jak zaprojektować taki projekt na wysokim poziomie? Ponadto chcę się upewnić, że używam IoC do moich kontekstów danych, aby móc tworzyć Fakesy podczas pisania testów. Zastanawiam się, gdzie znajdowałyby się interfejsy dla tych różnych kontekstów danych?


title: Minimalizacja danych przesyłanych przez połączenie usługi internetowej przy drogim połączeniu

text: Pracuję w systemie, który ma wiele zdalnych laptopów połączonych z Internetem przez komórkowe połączenia danych. Aplikacja będzie się okresowo synchronizować z centralną bazą danych. Problem polega na tym, że ze względu na czynniki od nas niezależne koszty przesyłania danych przez sieci komórkowe są spektakularnie wysokie. Obecnie wysyłamy skompresowany plik XML przez sieć, gdzie jest przetwarzany i robimy różne rzeczy (głównie umieszczamy go w bazie danych). Moje pierwsze przemyślenia dotyczyły przekonwertowania tego dokumentu XML na json, tuż przed transmisją i skonwertowania go z powrotem do XML zaraz po otrzymaniu na drugim końcu, i uzyskania dodatkowej kompresji za darmo bez większych zmian. Inną myślą było przetestowanie różnych innych algorytmów kompresji, aby określić najmniejszy z możliwych. Chociaż nie jestem do końca pewien, jak wielką różnicę zrobiłby json vs xml po skompresowaniu. Pomyślałem, że muszą być dostępne zasoby, które rozwiązują ten problem z perspektywy teorii informacji. Czy ktoś wie o takich zasobach lub sugestiach, w jakim kierunku należy iść. Zostało to opracowane na stosie MS .net w systemie Windows w celach informacyjnych.


title: Jak mogę wyodrębnić słowa ze zdania i określić, jaką częścią mowy jest każde z nich?

text: Chcę napisać coś, co bierze zdanie i identyfikuje każde zawarte w nim słowo oraz określa, jaką częścią mowy jest każde słowo. Na przykład > Witaj świecie, jestem zdanie zwróciłby ten czasownik rzeczownik, zaimek czasownik przymiotnik rzeczownik Idealnie chciałbym w końcu pójść o krok dalej i wziąć zdanie i programowo sprawić, by zrozumiało, co próbuje zinterpretować i może coś z tym zrobić. Więc moje pytanie brzmi, czy ktoś słyszał o czymś takim?


title: Jaka struktura danych do reprezentowania możliwych nawigacji między ekranami gry?

text: Staram się znaleźć odpowiednią strukturę danych do reprezentowania dostępnych nawigacji między ekranami gry. * Używając _linkowanej listy_ , węzeł może mieć tylko jeden węzeł po nim: nieodpowiedni. * Używanie _drzewa_ wydaje się być odpowiednie, ponieważ węzły mogą mieć wiele węzłów podrzędnych, ale jest niespójne w tym sensie, że rzekomo podrzędny element _Opcje_ może mieć rodzica _Tytuł_ jako dziecko. Jak mam reprezentować nieskończoną sekwencję sprawy _Title -> Race -> Title -> Race ..._ bez niekończącego się powtarzania tego w moim drzewie? Mimo to jest to najlepsza struktura, jaką znalazłem, aby wykonać tę pracę. Oto przykład możliwych sekwencji: 1. Tytuł * Opcje * Rasa 2. Opcje * Tytuł * Rasa 3. Rasa * Opcje * Tytuł Czy wiesz, czy _drzewo_ jest właściwą drogą, czy też istnieje lepsza struktura dla tej pracy ? * * * **Edycja:** Istnieje świetna biblioteka do tworzenia wykresów dla C#/WPF : http://graphsharp.codeplex.com/ Używa wewnętrznie http://quickgraph.codeplex.com/. Oto mały przykład: ![wprowadź tutaj opis obrazu](http://i.stack.imgur.com/jsYew.png) Kod: using System.Collections.Generic; za pomocą System.Windows; za pomocą GraphSharp.Controls; za pomocą QuickGraph; przestrzeń nazw WpfApplication15graph { wewnętrzna klasa ScreenVertex { ciąg publiczny Witaj { get; ustawić; } } internal class ScreenEdge : Edge<ScreenVertex> { public ScreenEdge(ScreenVertex źródło, ScreenVertex target) : base(źródło, cel) { } } wewnętrzna klasa ScreenLayout : GraphLayout<ScreenVertex, ScreenEdge, ScreenGraph> { } wewnętrzna klasa ScreenGraph< : Dwukierunkowy ScreenVertex, ScreenEdge> { } public częściowa klasa MainWindow : Window { public MainWindow() { InitializeComponent(); Załadowany += MainWindow_Loaded; } private void MainWindow_Loaded(object sender, RoutedEventArgs e) { // kompilacja wykresu var screenGraph = new ScreenGraph(); var screenVertex1 = nowy ScreenVertex {Hello = "1"}; var screenVertex2 = nowy ScreenVertex {Hello = "2"}; var screenVertex3 = nowy ScreenVertex {Hello = "3"}; screenGraph.AddVertex(screenVertex1); screenGraph.AddVertex(screenVertex2); screenGraph.AddVertex(screenVertex3); screenGraph.AddEdge(nowy ScreenEdge(screenVertex1, screenVertex2)); screenGraph.AddEdge(nowy ScreenEdge(screenVertex2, screenVertex1)); screenGraph.AddEdge(nowy ScreenEdge(screenVertex1, screenVertex3)); screenGraph.AddEdge(nowy ScreenEdge(screenVertex3, screenVertex1)); screenGraph.AddEdge(nowy ScreenEdge(screenVertex3, screenVertex2)); ScreenLayout.Graph = ScreenGraph; // pobierz połączenia dla określonego wierzchołka IEnumerable<ScreenEdge> inEdges = screenGraph.InEdges(screenVertex3); IEnumerable<ScreenEdge> outEdges = screenGraph.OutEdges(screenVertex3); } } } XAML: <Window x:Class="WpfApplication15graph.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft. com/winfx/2006/xaml" xmlns:controls="clr-namespace:WPFExtensions.Controls;assembly=WPFExtensions"xmlns:controls1="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls"xmlns:wpfApplication15Graph="clr -namespace:WpfApplication15graph" Title="MainWindow" Width="525" Height="350"> <Window.Resources> <DataTemplate x:Key="SvTemplate" DataType="wpfApplication15Graph:ScreenVertex"> <Grid> <TextBlock Text= "{Binding Hello}" /> </Grid> </DataTemplate> <Style TargetType="controls1:VertexControl"> <Style.Setters> <Setter Property="Template"> <Sette r.Value> <ControlTemplate TargetType="controls1:VertexControl"> <Border CornerRadius="5" Width="50" Height="50" Background="LightBlue"> <ContentPresenter Content="{TemplateBinding Vertex}" ContentTemplate=" {DynamicResource SvTemplate}" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style.Setters> </Style> </Window.Resources> <Grid> <controls:ZoomControl> < wpfApplication15Graph:ScreenLayout x:Name="ScreenLayout" HighlightAlgorithmType="Simple" LayoutAlgorithmType="Circular" OverlapRemovalAlgorithmType ="FSA" /> </controls:ZoomControl> </Grid> </Window>


title: Jak mogę lepiej wyjaśniać programistom złożone procesy związane z oprogramowaniem?

text: Naprawdę mam problemy ze specyfikacją oprogramowania. Nie jestem profesjonalnym programistą, ale lubię to robić dla zabawy i stworzyłem oprogramowanie, które chcę sprzedać później, ale nie jestem zadowolony z jakości kodu. Chciałem więc zatrudnić prawdziwego programistę, aby przepisał moje oprogramowanie w bardziej profesjonalny sposób, aby w przyszłości było ono obsługiwane przez innych programistów. Przeczytałem i znalazłem kilka przykładowych specyfikacji i stworzyłem własne, stosując ich strukturę do mojego dokumentu i chciałem, aby mój przyjaciel programista przeczytał to i udzielił mi porady. Po półtorej godzinie zrozumiał dokładnie, co próbowałem zrobić i jak to zrobiłem (moje algorytmy, stos itp.). **Jak mogę być lepszy w wyjaśnianiu rzeczy programistom?** Dodaję wiele szczegółów i wyjaśnień do wszystkiego (w tym działającego kodu), ale nie jestem pewien, w jaki sposób mogę nauczyć się przekazywać szczegółową wiedzę o domenie (moje oprogramowanie stosuje duże zbiory danych , uczenie maszynowe, teoria grafów do finansów). Moim celem końcowym jest sprawienie, aby zrozumieli jak najwięcej z dokumentu, a następnie zapytali o wszystko, czego nie rozumieją, ale teraz wydaje się, że muszą wydobyć ode mnie dużo informacji. Jak mogę ulepszyć przekazywanie wiedzy o domenie programistom?


title: Logika aplikacji RESTful i operacje na wielu zasobach

text: Mam interfejs API RESTful, który pozwala moim użytkownikom na otrzymywanie zapytań dotyczących ich działalności, np. „Chciałbym zarezerwować usługę x w dniu y. Czy to jest dostępne?”. Interfejs API zapisuje te informacje jako zasób dla następujących użytkowników URI/{userId}/enquiries/{enquiryId} Informacje wyświetlane podczas pobierania tego zasobu są standardowym rodzajem rzeczy, których można oczekiwać od zapytania - e-mail, imię, nazwisko , adres, wiadomość API umożliwia również tworzenie klientów dla użytkownika. Klient posiada login i hasło, a także profil. Następujące identyfikatory URI ujawniają te dwa zasoby PUT users/{userId}/customers/{customerId} PUT users/{userId}/customers/{customerId}/profile Mam problem z tym, że chcę mieć możliwość zezwalania użytkownikom stworzyć klienta z zapytania. Na przykład użytkownik może oferować swoją usługę w żądanym terminie, a następnie będzie chciał skonfigurować klienta z danymi logowania itp., aby umożliwić mu zarządzanie resztą procesu. Oczywistą odpowiedzią byłoby użycie identyfikatora URI, takiego jak users/{userId}/enquiries/{enquiryId}/convert-to-client. Problem polega na tym, że jest to w pewnym stopniu sprzeczne z tym, co czytałem o tym, jak zaimplementuj REST (konkretnie z książki Restful Web Services, która sugeruje, że URI powinny wskazywać na zasoby, a nie operacje na zasobach). Inną opcją byłoby uzyskanie aplikacji klienckiej (tj. kodu, który wywołuje api) do obsługi części tej logiki aplikacji. Nie wydaje mi się to w porządku. W moim projekcie zaimplementowałem, że aplikacja kliencka jest dość głupia. Wie tylko tyle, aby wyświetlić wyniki z API i nie zawiera żadnej logiki aplikacji. Byłoby wspaniale usłyszeć, jakie są opinie innych na temat najlepszego sposobu konfiguracji. Czy myliłem się, że nie mam logiki aplikacji w aplikacji klienckiej? Jak wykonać tę operację wyłącznie w interfejsie API REST?


title: Czy trzymanie się jednego języka w konkretnym projekcie to dobra praktyka?

text: Opracowuję potok do przetwarzania tekstu, który trafi do produkcji. Pytanie, które sobie zadaję, brzmi: czy powinienem trzymać się jednego języka projektu, gdy szukam narzędzia do wykonania określonego zadania (np. NLTK, PDFMiner, CLD, CRFsuite itp.)? A może mieszanie i dopasowywanie języków w projekcie jest w porządku? Więc wybieram najlepsze narzędzie, niezależnie od tego, w jakim języku jest napisane (np. OpenNLP, ParsCit, poppler, CFR++ itp.) i opasuję (owijam) mój kod wokół niego? Uwaga, _nie_ pytam, czy programista powinien trzymać się tylko jednego języka w swojej karierze.


title: WPF - Jakie są implikacje obecnych plotek

text: Moje osobiste doświadczenie zawsze dotyczyło aplikacji internetowych i wielu "zaplecza", ale ostatnio szukam osobistych projektów, aby poszerzyć swoją wiedzę. Oczywistą rzeczą, na którą należy spojrzeć w świecie .net, jest WPF, ale teraz czytam to: WPF nie ma menedżera produktu I z bloga tego samego gościa (jest on byłym menedżerem produktu Silverlight): > WPF nie ma inwestycji, jest utrzymywany razem przez szkieletową załogę, a jej > wysiłki ewangelizacyjne / wspólnotowe mają niewielkie lub żadne fundusze związane z tym. > Jest martwy, teraz pytanie brzmi, w jaki sposób zwłoki zostaną pochowane i żadne > prowadzenie cheerleaderek nie zmieni tego wyniku w najbliższej przyszłości. Chociaż nie zmieni to moich krótkoterminowych planów - czy powinno to wpłynąć na ilość wysiłku, jaki wkładam w naukę WPF? Jakie są moje alternatywy, na które warto zwrócić uwagę, jeśli chcę mieć aktualną wiedzę o interfejsie użytkownika winapp?


title: Kiedy potrzebujemy asemblera?

text: W jakich sytuacjach asembler będzie jedynym rozwiązaniem?


title: skracanie adresu URL do cms

text: Cześć Mamy aplikację CMS, która umożliwia tworzenie stron internetowych pod naszą domeną. System został zbudowany kilka lat temu i wykorzystywał metodę, która przenosi parametry takie jak id strony, kod folderu i inne za pomocą adresu url. ta metoda stworzyła gigantyczny adres URL dla każdego elementu w witrynie Na przykład: Moja domena to www.domena.com Witryna użytkownika w mojej domenie to www.domena.com/użytkownik i za każdym razem, gdy użytkownik wchodzi na jego witrynę, otrzymuje link jak to www.domain.com/page.aspx?code=blablasdsdsdsdsds&folder=blablablablablabla i więcej. Staramy się zmniejszyć rozmiar ciągu w adresie URL. Jakie mamy opcje? czy możemy pokazać użytkownikowi jeden adres URL jako wirtualny i nadal działać tak samo ze starym adresem URL? Staramy się znaleźć rozwiązanie, które nie zmusi nas do przepisywania całej naszej aplikacji. aplikacja jest zbudowana w c#, a serwer WWW to iis 6. Dzięki


title: Jak korzystać z danych ukształtowanych przez interfejs użytkownika z ViewModel, zachowując oddzielne obawy?

text: Pochodzę z tła WinForm i próbuję uzyskać dostęp do MVVM i XAML. W tej chwili zastanawiam się, w jaki sposób mogę skorzystać z kontroli kształtowania danych (natywnej lub dostarczonej przez stronę trzecią), zachowując jednocześnie nienaruszoną separację obaw. Przykład: mam typową siatkę innej firmy, która zawiera funkcje grupowania, sortowania i filtrowania danych. Chcę, aby użytkownik końcowy mógł korzystać z tych funkcji, aby uzyskać niestandardowy zestaw danych, na których może wykonywać działania. Te akcje są widoczne w modelu widoku. Oczywiście wie o kolekcji płyt, ale nie ma żadnego pojęcia o tym, jak jest obecnie wyświetlana w interfejsie użytkownika. Biorąc to pod uwagę, w jaki sposób model widoku może wiedzieć, na których danych należy wykonać akcje, **bez wiedzy o kontrolce, w której jest wyświetlany**? Obecnie jedynym sposobem, jaki przychodzi mi do głowy, jest wystawienie dodatkowej właściwości w ViewModel (coś w rodzaju `CurrentUIData`) i obsługa każdego pojedynczego zdarzenia kształtowania danych w widoku, tak aby właściwość była zawsze reprezentatywna dla stanu interfejsu użytkownika. To jednak wydaje mi się niewłaściwe. Czy tak powinienem postępować, czy czegoś tu brakuje?


title: Nauka C dla programistów C++

text: Zgadza się, nauczyłem się programować w C++ i oczywiście znam wspólny zestaw cech obu języków, więc mogę programować w C. Ale naprawdę chciałbym czytać samouczki lub książki, które uczą C i _sposób C_ programowania, z perspektywy programisty C++.


title: Jak radzić sobie w „publicznym” środowisku pracy?

text: W ciągu ostatnich 6 miesięcy 4 razy zmieniałem biurka w swoim biurze. Nie przeszkadza mi to, bo to ze względu na rozbudowę firmy i pozyskanie nowej powierzchni biurowej oraz osiedlenie się wszystkich. Jednak naprawdę tęsknię za półprywatnym biurem, w którym siedziałem 2 biurka temu. Siedzę teraz w dużym pokoju z kilkoma innymi osobami. Mój problem z tym nie dotyczy moich współpracowników; wszyscy tutaj są wspaniali. Mój problem polega na tym, że w zależności od konfiguracji pomieszczenia, bez względu na to, na którym biurku siedzę, moje monitory BĘDĄ skierowane w stronę otwartego okna. To powoduje odblaski na moich monitorach i doprowadza mnie do szału. Wolę ciemny motyw IDE, ponieważ uważam, że jest łatwiejszy dla oczu, ale to tylko sprawia, że odblask jest znacznie gorszy. Jak programiści powinni radzić sobie z ustawieniami urzędów publicznych? Po drugie, jak mam sobie poradzić z moim konkretnym problemem? Czy powinienem się poddać i przyjąć lekki motyw IDE, który zmniejszy widoczność odblasków, ale zwiększy zmęczenie oczu, czy też powinienem trzymać się broni i znaleźć inne rozwiązanie?


title: Jak mierzysz wartość swojego oprogramowania?

text: Jedną z zasad Agile jest to, że powinieneś mierzyć działające oprogramowanie: > Działające oprogramowanie jest podstawowym miernikiem postępu - 12 zasad Agile Chodzi o to, że mogę mierzyć moje oprogramowanie pod kątem zrobionych historii, zgniecionych błędów lub objętości liczba zgłaszanych usterek maleje, utknąłem na tym, jak zmierzyć wartość mojego oprogramowania. Jeśli użyję Mike'a Cohna jako przykładu i jego pomocy SalesForce.com w dostarczaniu klientom 500% większej wartości w porównaniu z poprzednim rokiem* - jak zmierzyć ten wzrost? Jak zmierzyć, gdzie jestem teraz? Inne wskaźniki, których używa, to liczba funkcji i liczba funkcji na programistę. To jest coś, co mógłbym wypracować, gdyby moje zaległości były w dobrym stanie, a historie zostały podzielone według „funkcji”, ale dopiero zaczynamy z Agile, więc potrzebuję jakiegoś sposobu na ustalenie, jaką wartość dostarczamy teraz , a następnie użyj podobnego wskaźnika za powiedzmy sześć miesięcy, aby sprawdzić, czy zwiększyliśmy wydajność. Słyszałem o mierzeniu wartości oprogramowania przez wzrost przychodów lub wzrost zadowolenia klientów (jak byś to zmierzył?), ale te wzrosty można przypisać czemukolwiek w firmie (sprzedaż, księgowość, wsparcie), a nie bezpośrednio do pracy, którą wykonuje mój dział. Jak więc mierzycie wartość swojego oprogramowania i jak zacząłeś? * Sukces z Agile \- Mike Cohn


title: Zalecenia dotyczące książek dla osób, które porzuciły szkołę średnią

text: Jeśli jeden z twoich znajomych porzucił szkołę średnią i chciałby pogłębić swoje umiejętności programowania i inżynierii oprogramowania, którą książkę byś mu doradził, aby przeczytał i uczył się, aby zrekompensować wiedzę, którą mógł zdobyć na czołowym amerykańskim uniwersytecie informatycznym. Wszystkie rodzaje książek są mile widziane: Algorytmy, Struktury danych, Projektowanie kompilatorów, języki, wzorce projektowe, Język maszynowy, Matematyka (absolutne minimum wymagane dla inżynierów oprogramowania), Rozwiązywanie problemów, Podręcznik inżynierii ogólnej, które mogą być pomocne dla SE ...


title: Najlepsza praktyka sprawdzania argumentów

text: Powiedzmy, że mam usługę sieciową z metodą `MyWebServiceMethod(string passValue)`. Usługa sieciowa wywołuje metodę `MyServiceMethod(string passValue)`, w której przekazywana jest wartość z usługi sieciowej. Usługa wywołuje metodę repozytorium `MyRepositoryMethod(string passValue)`, gdzie ponownie przekazywana jest wartość z usługi. Mam nadzieję, że to jest wystarczająco jasne. W razie potrzeby mogę wysłać kod pocztowy. **Moje pytanie dotyczy sprawdzania argumentów zerowych.** Czy powinienem sprawdzić `passedValue` i zgłosić wyjątek w: 1. Serwisie WWW 2. Serwisie 3. Repozytorium Oczywiście, jeśli `passedValue` w serwisie WWW ma wartość null, poniższe metody nigdy nie zostaną wywołane, ale czy powinienem sprawdzić, czy rozwiązanie zmieni się w przyszłości? Edycja Powinienem był powiedzieć, że nie oczekuję, że null będzie kiedykolwiek prawidłową wartością. Ponadto martwię się w takich sytuacjach, że ktoś może zmienić usługę sieciową lub utworzyć innego klienta bez sprawdzania argumentów, który wywoła usługę z nieprawidłowymi argumentami. Więc wydaje mi się, że sprawdzanie powinno odbywać się w obu miejscach. Potem myślę o YAGNI i zastanawiam się, czy nie powinniśmy przejść przez ten most, kiedy do niego dojdziemy. Co jest uważane za najlepszą praktykę w takich sytuacjach?


title: Czy krosno żakardowe można uznać za bezpaństwowe?

text: Czy krosno żakardowe pokazane poniżej w komplecie z łańcuchami papierowych kart ![Krosno żakardowe](http://i.stack.imgur.com/zyqKB.jpg) może być uważane za bezpaństwowe? O ile wiem, to wiem, każda operacja nie jest zależna od poprzedniej. A może miał jakąś koncepcję rozgałęzień i/lub pętli?


title: Pomysły na tryb offline i synchronizację na wielu platformach

text: Szukam pomysłów na implementację, aby umożliwić aplikacjom offline synchronizowanie danych z serwerem centralnym. Serwerem będzie Sql Server 2008. Klienci będą pobierać dane z serwera, gdy będzie dostępny dostęp do Internetu i będą musieli zezwolić użytkownikowi na wprowadzanie zmian w trybie offline, a następnie zsynchronizować zmiany z powrotem z serwerem, gdy będą ponownie dostępne. Klienci będą dostępni w wielu wersjach, od Windows po Androida, więc wszystko, czego używam, musi być łatwo przetłumaczone na wiele systemów operacyjnych. Patrzyłem na używanie Odata Microsoftu (odata.org) na serwerze. Wygląda na to, że ma kilka całkiem fajnych funkcji i wydaje się, że nawet częściowo obsługuje to, czego chcę (za pomocą tokena współbieżności) - chociaż nie jestem pewien, jak logika obracałaby się jeszcze wokół używania tego tokena, mam nadzieję aby się z tego wydostać. Tak więc – moje pytanie brzmi: czy istnieje narzędzie lub aplikacja innej firmy, której mogę używać na wielu platformach, które mogą obsługiwać scenariusze offline i synchronizować? Jeśli nie, czy ktoś może mi podsunąć pomysły, jak zaimplementować logikę synchronizacji danych z powrotem z serwerem i poradzić sobie z konfliktami itp.?


title: Czy jest jakiś pożytek z inteligentnego programisty algorytmów, który deleguje kodowanie?

text: W mojej pracy jako programista algorytmów odpowiadam nie tylko za tworzenie algorytmów, ale także za ich implementację, aż do napisania kodu, który trafia do produkcji. Słyszałem, że są firmy, w których istnieje rozdział między tworzeniem i wdrażaniem algorytmów. Algorytm ludzie wymyślają „koncepcję” i nie piszą żadnego kodu poza celami badawczymi. Następnie są programiści odpowiedzialni za implementację algorytmów. W mojej firmie pojawiły się ostatnio myśli o zatrudnieniu wyznaczonych programistów algorytmów, którzy nie będą pisać kodu, jak opisano powyżej. Intuicyjnie sprzeciwiam się temu pomysłowi, ale nigdy wcześniej nie pracowałem w takim miejscu, więc mogę być stronniczy. Czy to opłacalny model tworzenia oprogramowania?


title: Czy Lisp jest pierwszym językiem, w którym zastosowano programowanie strukturalne?

text: Nie mogłem znaleźć żadnych linków ani książek twierdzących, że Lisp jest pierwszym językiem programowania, w którym zastosowano programowanie strukturalne (właściwie większość z nich w ogóle nie wspomina o Lispie), ale jeśli warunki warunkowe zostały wymyślone przez McCarthy'ego i później trafiły do Algola, czy można powiedzieć, że Lisp jest pierwszym?


Staram się poszerzyć moje zrozumienie historii i rozwoju programowania obiektowego i jestem ciekawa **czy C został zaprojektowany, aby ułatwić programowanie obiektowe?** (jak **C++** i ** Objective-C** zdecydowanie tak jest) lub wręcz przeciwnie, po prostu sprytne wykorzystanie konstrukcji języka. Wydaje mi się, że nie mogę znaleźć żadnych źródeł, w tym _K &R_, gdzie pierwotni autorzy komentują to podejście. Ostatnio przyglądałem się programowi OOP w ANSI-C, który jest opisany w **Programowaniu zorientowanym obiektowo z ANSI-C** autorstwa **Axela Schreinera**. W celu uzyskania bezpłatnej wersji PDF odwiedź http://www.cs.rit.edu/~ats/books/ooc.pdf. Nieco inne podejście jest stosowane w części jądra Linuksa zajmującej się systemami plików, odwiedź http://lwn.net/Articles/444910/, aby uzyskać więcej informacji. Powszechną ideą jest umieszczenie `wskaźnika funkcji` w `strukturze` razem z `polami` w celu 'emulowania' metod `klasy`' i `elementów danych`. **Chronologia** Z Wikipedia.org/wiki/Object-orientated_programming#Historia > Obiekty jako formalne pojęcie w programowaniu zostały wprowadzone w latach 60. w > Simula 67 Podczas gdy Wikipedia.org/wiki/C_programming#K.26R_C stwierdza, że > W 1978 Brian Kernighan i Dennis Ritchie opublikowali pierwsze wydanie > Języka programowania C. Chronologia wydaje się sugerować, że K&R musiał być dobrze świadomy OOP. I znowu: **Czy C został zaprojektowany, aby ułatwić programowanie obiektowe?**


title: Skuteczny sposób na zdobycie praktycznej wiedzy

text: Obecnie zbliżam się do końca mojego pierwszego roku studiów CS i byłem rozczarowany brakiem kodowania, o który zostałem poproszony (jedna jednostka). Zasadniczo szukam skutecznego sposobu na zdobycie praktycznej wiedzy, ale nie jestem pewien, gdzie szukać doświadczenia z perspektywy prawie **początkującego**.


title: Czy należy ogólnie opracować bibliotekę klienta dla usług REST, aby zapobiec awariom interfejsu API?

text: Mamy projekt, w którym kod UI będzie rozwijany przez ten sam zespół, ale w innym języku (Python/Django) niż warstwa usług (REST/Java). Kod dla każdej warstwy wychodzi w różnych repozytoriach kodu, które _mogą_ podlegać różnym cyklom wydawniczym. Próbuję wymyślić proces, który zapobiegnie/ograniczy łamanie zmian w warstwie usług z perspektywy warstwy interfejsu użytkownika. Pomyślałem, że napiszę testy integracyjne na poziomie warstwy interfejsu użytkownika, które będziemy uruchamiać za każdym razem, gdy tworzymy interfejs użytkownika lub warstwę usług (używamy Jenkins jako naszego narzędzia CI do budowania kodu, który znajduje się w dwóch repozytoriach Git) i jeśli są awarie, wtedy coś w warstwie usług się zepsuło i zatwierdzenie nie jest akceptowane. Czy byłoby również dobrym pomysłem (czy jest to najlepsza praktyka?), aby deweloper warstwy usług utworzył i utrzymywał bibliotekę klienta dla usługi REST, która istnieje w warstwie interfejsu użytkownika, którą będzie aktualizował za każdym razem, gdy nastąpi przełomowa zmiana w ich Service API? Można sobie wyobrazić, że mielibyśmy wtedy przewagę w postaci statycznego interfejsu API, na którym opiera się kod interfejsu użytkownika. Jeśli interfejs API biblioteki klienta ulegnie zmianie, kod interfejsu użytkownika nie zostanie skompilowany (więc wcześniej będziemy wiedzieć, że nastąpiła poważna zmiana). Po zbudowaniu warstwy interfejsu użytkownika lub usług nadal uruchamiałbym testy integracji, aby dodatkowo sprawdzić, czy integracja między interfejsem użytkownika a usługami nadal działa.