title: Jaka zasada OOAD łamie ten wzorzec?

text: Próbuję zrobić przypadek, aby nie umieścić struktury w nadrzędnej klasie BaseModule, którą pokazałem poniżej. Jestem bardziej za Wzorcem Strategii i minimalizowaniem dziedziczenia na rzecz relacji typu has-a, ale nie jestem do końca pewien, jaką zasadę OOAD ten wzorzec łamie. Jaka zasada OOAD łamie ten wzorzec? Potencjalny wzorzec: interfejs publiczny IStringRenderer { string Render(); } public class BaseModel : IRequestor { public abstract void Init(); public abstract void Load(); } public class BaseModule<TModel> : IStringRenderer gdzie TModel : BaseModel { public TModel Model { get; ustawić; } public override string Render() { return string.Join( "", new string[] { "<header/>", "<main-container>", "<side-nav>", "<side-navigation/ >", "</side-nav>", "<main-content>", RenderMainContent(), "</main-content>" }); } publiczny abstrakcyjny ciąg RenderMainContent(); } public class MyModuleModel : BaseModel { public List<int> Ints { get; ustawić; } ... } public class MyModule : BaseModule<MyModuleModel> { public override string RenderMainContent() { return string.Join(",", Model.Ints.Select(s => s.ToString()).ToArray()) ; } } Preferowany wzorzec (zduplikowany kod, aby był przejrzysty): interfejs publiczny IStringRenderer { string Render(); } public class BaseModel : IRequestor { public abstract void Init(); public abstract void Load(); } public class MyModuleModel : BaseModel { public List<int> Ints { get; ustawić; } ... } public class MyModule : IStringRenderer { public MyModuleModel Model { get; ustawić; } public MyModule(MyModuleModel model) { this.Model = model; } public override string Render() { return string.Join( "", new string[] { "<header/>", "<main-container>", "<side-nav>", "<side-navigation/ >", "</side-nav>", "<main-content>", RenderMainContent(), "</main-content>" }); } public string RenderMainContent() { return string.Join(",", Model.Ints.Select(s => s.ToString()).ToArray()); } } Są części tego wzorca, na których nie próbuję się koncentrować, ale zamiast tego myślę o tym, gdzie znajduje się 'struktura' lub 'znaczniki'. W pierwszym przykładzie żyją w rodzicu, ale w drugim zostały wepchnięte do klasy pochodnej. W tej chwili przykłady są dość proste, ale coś takiego jak „nawigacja boczna” może potencjalnie się skomplikować, a i tak może wymagać kontroli przez dziecko. Czuję, że zasada jest taka, że nie czuję, że struktura „tag” nie powinna znajdować się w klasie nadrzędnej, jak w pierwszym przykładzie. Są inne rzeczy, które usunąłem w mojej „preferowanej wersji” — mianowicie generyki. (Wszelkie sugerowane lektury na temat dobrych/złych dla tego wyboru są mile widziane). Zwolennicy osadzonej struktury pierwszego przykładu lubią fakt, że mogą wprowadzać zmiany w dużej liczbie klas potomnych. Uważam, że najlepszym rozwiązaniem jest oferowanie elastyczności klasom pochodnym, a jeśli potrzebny jest rodzic, ten rodzic oferuje tylko funkcjonalność i funkcje przekrojowe, ale nie ogranicza struktury w puszkach.


title: czy zawsze należy wprowadzać błąd w systemie śledzenia błędów?

text: > **Możliwy duplikat:** > Czy programiści powinni wprowadzać błędy do systemu śledzenia błędów? > Czy powinienem rejestrować trywialne poprawki? Nad projektem, który będę robił wkrótce w szkole, będę pracował z 6 innymi osobami. Prawdopodobnie będziemy używać YouTrack do śledzenia naszych błędów i oczywiście możemy zobaczyć wartość w tym systemie. Moje pytanie brzmi jednak, czy błąd powinien być zawsze wpisywany do systemu śledzenia błędów. W naszym przypadku niektórzy będą programistami front-end, inni back-end, ale złożoność projektu nie będzie na tak wysokim poziomie, aby programiści back-end nie wiedzieli, jak rozwiązać błąd front-endu . Nie mam na myśli tego, że faktycznie go rozwiążą, ale ponieważ (myślą), że wiedzą, że to łatwa naprawa, co powstrzymuje ich przed poinformowaniem jednego z programistów front-endu o błędzie, mówiąc mu przez stół. Oto główne powody, na które mogę wymyślić: * Na pierwszy rzut oka błąd może wydawać się bardzo łatwy do naprawienia, ale w rzeczywistości ujawnia znacznie większy problem (w tym momencie przypuszczalnie zostałby wprowadzony, ale przez front-end developera). Możesz wyprowadzić kogoś ze „strefy", po prostu od niechcenia wspominając, że ma gdzieś błąd, który może zostać rozwiązany w ciągu 10 sekund, ale potem wymaga 15 minut, aby wrócić do strefy. Z drugiej strony wydaje się to głupie, że musiałbyś wprowadzić błąd, który ** można ** naprawić w 2 minuty, zwłaszcza jeśli część, nad którą pracujesz w tym czasie, wymaga tego błędu.Rozumiem, że jest to prawdopodobnie nieco subiektywne, ale ja Uważam również, że inni ludzie mogą podać bardzo dobre powody, aby to zrobić w taki czy inny sposób, co chciałbym usłyszeć.


title: Czy powinienem rejestrować trywialne poprawki?

text: Jestem w sklepie z kodami dla dwóch osób. I chociaż rozumiem, że narzędzie do śledzenia błędów jest przydatne, gdy liczba programistów jest większa lub równa jeden, nie jestem przekonany, że rejestrowanie błędów, zmian i poprawek jest warte czasu, gdy są one trywialne. Kiedy znajdę prosty błąd, rozumiem go, naprawiam i przepuszczam przez kilka testów. I WTEDY zdałem sobie sprawę, że muszę to zarejestrować. Teoretycznie wiem, że rejestrowanie błędów powinno odbywać się gdzieś pomiędzy znalezieniem błędu a jego naprawą, ale jeśli naprawienie go jest szybsze niż rejestrowanie go, wydaje się, że jest to przeciąganie. W większych sklepach z kodami szef zwraca uwagę na to, kto co robi i fajnie jest wiedzieć, gdzie inni się wygłupiają. Opisuję rzeczy, które już naprawiłem, a potem natychmiast je zamykam. Mam wątpliwości, czy ktoś jeszcze kiedykolwiek przyjrzy się temu zamkniętemu błędowi. Czy nadszedł czas, aby przyciąć tłuszcz procesowy?


title: zwykły, przeciętny programista - boi się geeków i ich umiejętności

text: Tak jak w każdej innej dziedzinie, 90% pracowników robi błahe, rutynowe rzeczy, a tylko mniej niż 10% robi rzeczy najtrudniejsze. Większość programistów w branży jest przeciętna, ja też. Jest wielu mądrych/maniaków, którzy kodują/programują od 10-12 roku życia. Oczywiście mają większe doświadczenie niż ja – zacząłem uczyć się programowania/programowania w wieku 20 lat, kiedy po raz pierwszy poszedłem na uniwersytet. Zdaję sobie sprawę, że aby dorównać ich poziomowi, musiałbym spędzać całe lata na rozwiązywaniu problemów, zmuszaniu mózgu do ciężkiej pracy i przyzwyczajania się do mentalności programisty. Mając wiele innych rzeczy do zrobienia w życiu, rozumiem, że najprawdopodobniej będę stale za geekami - nie umiem rozwiązywać problemów TopCoder/Google CodeJam, jestem kiepski z algorytmami itp. Powinienem studiować programowanie od dzieciństwa, aby dopasować poziom innych geeków. Innymi słowy, czuję się winny, głupi, a przede wszystkim zazdrosny i boję się geeków! Żaden supermądry geek nie wie wszystkiego o programowaniu, ale: są ludzie, którzy są po prostu 10 razy lepsi ode mnie. Czuję się zmuszony do ciągłego studiowania, ale nie mogę i nie chcę. Jestem pewien, że wielu programistów miało to uczucie - kiedy zazdrościsz komuś znacznie mądrzejszemu od siebie. Jak radzisz sobie z tym uczuciem? Jestem naprawdę zdezorientowany, ciągle myślę, że mogą ukraść moją pracę, a ja nawet nie mogę z nimi konkurować.


title: Jakie jest ogólne określenie nazwy/identyfikatora? (w przeciwieństwie do etykiety)

text: Muszę odwołać się do wielu _rzeczy_, które mają zarówno wartość identyfikatora (używaną w kodzie i konfiguracji), jak i etykietę czytelną dla człowieka. Są to między innymi: * kolumny bazy danych * pozycje listy rozwijanej * podaplikacje * obiekty przechowywane w słowniku Chcę mieć dwa jednoznaczne terminy. Jeden odwołuje się do identyfikatora/wartości/klucza. Jeden, aby odnieść się do etykiety. Jak widać, jestem całkiem zadomowiony w tym drugim :) W przypadku pierwszego _identyfikator_ wydaje się najlepszy (nie wszystko jest ściśle _kluczem_ , a _wartość_ i _nazwa_ mogą odnosić się do etykiety; chociaż _identyfikator_ zwykle odnosi się tylko do nazwy zmiennej ), ale wolałbym postępować zgodnie z ustaloną praktyką, jeśli taka istnieje. Czy jest na to ustalony termin? (Proszę podać źródło.) Jeśli nie, czy są jakieś przykłady do wyboru z ważnego źródła (Java API, MSDN, duży projekt FLOSS)? _(Nie byłem pewien, czy należy to opublikować tutaj, czy w Języku angielskim i jego użyciu. Pomyślałem, że to bardziej odpowiednia grupa ekspertów. Jeśli nie, chętnie przeprowadzimy migrację.)_


title: Opublikować/zasubskrybować/zażądać wymiany dużych, złożonych i poufnych danych?

text: Pracuję nad projektem, w którym strona internetowa musi wymieniać złożone i poufne (a tym samym zaszyfrowane) dane z innymi systemami. Dane obejmują dane osobowe, rysunki techniczne, dokumenty publiczne itp. Wolelibyśmy unikać wzorca Żądanie-Odpowiedź do systemów zależnych (a jest ich DUŻO), ponieważ spowodowałoby to strasznie dużo pustego ruchu. Z drugiej strony nie jestem pewien, czy czysty wzorzec wydawca/subskrybent byłby odpowiedni – głównie ze względu na złożony i obszerny charakter wymienianych danych. Z tego powodu omówiliśmy możliwość rozwiązania „publikuj/subskrybuj/zapytaj”. Część Publikuj/Subskrybuj polegałaby na opublikowaniu komunikatu do systemów zależnych, że coś jest gotowe do odbioru. Rzeczywista treść jest następnie pobierana przez starą akcję Żądaj-Odpowiedz. Jak to dla ciebie brzmi?


title: Termin błędu, gdy kod jest wykonywany przed odpowiedzią ajax?

text: Jak nazywa się błąd spowodowany wykonaniem bloku kodu przed powrotem odpowiedniej odpowiedzi ajax? np. oś czasu: **13:00:01** wykonaj getDataViaAjax(); **13:00:02** wykonaj doSomethingWithMyAjaxData(); **13:00:03** dane ajax wracają, za późno, ponieważ zapomniałem, aby kod na nie czekał... Mam wrażenie, że mogę powiedzieć "doh!" kiedy ktoś poda mi odpowiedź, ale nie mogę przez całe życie myśleć, jaki rodzaj błędu może to nazwać.


title: Jaka jest korzyść z 64-bitowego A7 w iPhonie

text: Próbuję dowiedzieć się, dlaczego przejście na 64-bitowe procesory jest tak wielką sprawą w iPhonie. Rozumiem, że będzie dwa razy więcej rejestrów, aby procesor mógł pracować z dwukrotnie większą ilością danych, co powinno zwiększyć wydajność. Jednak nie widzę wielu telefonów, które w najbliższym czasie będą miały więcej niż 4 GB pamięci. Wydaje się to przesadą i negatywnie wpłynęłoby na żywotność baterii. Innym problemem, który widzę, jest to, że większość zmiennych potrzebuje teraz dwa razy więcej pamięci. Spowoduje to problemy w środowisku mobilnym z małą ilością pamięci. Uważam, że ludzie w Apple są inteligentni i prawdopodobnie mają ku temu świetne powody, po prostu staram się ich zrozumieć. **EDYTUJ** Niewiele wiem o GPU, ale powiedziano mi, że przy 64 bitowych rejestrach można załadować 2 piksele do każdego rejestru i wykonywać na nich operacje indywidualnie. Czy jest jakaś graficzna przewaga dotycząca wersji 64-bitowej?


title: Czy mój zespół powinien używać jakiegoś powszechnie uznawanego standardu kodowania jako podstawy dla własnego?

text: Zespół badawczo-rozwojowy, w którym należę, zdecydował się na przyjęcie standardu kodowania. Dopiero niedawno utworzyliśmy i mamy zbyt mało kodu i wspólnego czasu na kodowanie, aby oprzeć nasze dokumenty standardów/konwencji na tym, co rozwinęło się organicznie w naszym zespole oraz na dobrych przykładach z naszego własnego kodu itp. Teraz każdy z nas ma pewne doświadczenie z poprzednich miejsc pracy - chociaż nikt z nas nie jest w stanie powiedzieć „przyjmijmy ten obszerny dokument, który uważam za odpowiedni do rodzaju pracy, którą tutaj wykonujemy” (*). Poza tym niektórzy z nas (w tym ja) mają doświadczenie tylko z miejsc, w których nie ma oficjalnego standardu kodowania lub pisania w różnych językach w innym otoczeniu (środowisko produkcyjne wydawane pod wysokim ciśnieniem w przeciwieństwie do prac rozwojowych bardziej zorientowanych na badania). jedną z opcji, o których myślałem, jest wzięcie stosunkowo dobrze znanego i lubianego dokumentu, wycięcie tego, na czym nam nie zależy/nie zależy nam i wprowadzenie pewnych modyfikacji w oparciu o nasze preferencje. Czy to powszechna praktyka? Czy uważasz, że to dobry pomysł? Jeśli tak, jaki byłby rozsądny „podstawowy” standard kodowania (nie mów, który jest najlepszy, nie chcę tutaj rozpoczynać konfliktu religijnego; po prostu wskaż, co byłoby wystarczająco kompleksowe lub „neutralne”, na którym można by oprzeć .) **Uwagi:** * Spodziewamy się pracować z C, C++, OpenCL, CUDA, Python. * Jesteśmy zespołem składającym się z 4 osób + manager, który w ciągu roku ma urosnąć do około 5-6 osób. * W naszej firmie zespoły są prawie całkowicie autonomiczne i zazwyczaj w ogóle nie wchodzą w interakcję (nawet za pomocą kodu - praca toczy się nad zupełnie innymi projektami); więc - nie trzeba brać pod uwagę całej firmy. * Jeśli chodzi o narzędzia, w tej chwili wiemy, że będziemy używać Eclipse, więc jego formater kodu będzie przynajmniej jednym narzędziem. Ctrl+Shift+F jest moim przyjacielem od dawna * Kiedy piszę Javę, przyjąłem praktykę jak najściślejszego trzymania się efektywnej Javy Blocha. To nie jest do końca standard kodowania, ale możesz nazwać kilka cegieł, cementu i zaprawy jako standard kodowania. Myślałem o ewentualnym włączeniu czegoś takiego jako części „miksu” (pamiętając, że nie robimy Javy). * Mam na myśli standardy kodowania w szerszym tego słowa znaczeniu, m.in. przyjęcie sugestii zawartych w odpowiedziach na to pytanie P.SE. * Znalazłem dużą listę dokumentów standardów kodowania C++; może powinienem wydobyć, że nasza podstawa. * (*) To nie do końca prawda, ale nie chcę komplikować tego pytania zbyt wieloma szczegółami.


title: Jak zrobić testy ab

text: Wiele książek na temat start-upów/kanban zdecydowanie zaleca stosowanie testów AB w celu walidacji funkcji produktu. Nie miałem z tym żadnego doświadczenia, ale brzmi to jak świetny pomysł na niektóre projekty. Moje pytanie brzmi, jak w praktyce wygląda testowanie funkcji AB? Załóżmy, że chcesz przetestować, jak zarejestrowani użytkownicy wchodzą w interakcję z określoną funkcją. Czy tworzysz tabele, aby ustawić, które partie użytkowników widzą jakie funkcje? A co z niezarejestrowanych użytkowników. itd. Załóżmy, że na podstawie Twoich testów ustalono, że funkcja nie jest potrzebna. Czy wracasz do bazy kodu i wycinasz ten kod?


title: W scrum, jak wykorzystać „testy użyteczności” w zespole?

text: Obecnie czytam materiały Jeffa Pattona dotyczące Agile i UX. http://www.agileproductdesign.com/presentations/index.html Chciałem dowiedzieć się od społeczności, jakie zachowania związane z projektowaniem i testowaniem UX wydawały się NAJBARDZIEJ pomocne dla ich zespołów scrumowych w tworzeniu WSPANIAŁYCH i zachwycających produktów. 1. użyteczność korytarza? 2. prototypy papierowe? 3. zobaczyć, jak użytkownicy faktycznie korzystają z oprogramowania? 4. inne? Dziękuję!


title: Początkujący programista ASP.NET zmuszony do korzystania z MVC4 za pomocą formularzy WebForms

text: Niedawno zostałem zatrudniony jako nowy programista ASP.NET (za kodem C#). Kiedy przyjechałem, powiedziano mi, że przeprowadzają się do MVC 4, więc kupiłem dwie książki na ten temat. Jednak pewnego dnia dowiedziałem się, że NIE używają Razor, ale używają WebForms. Większość wyników przez Google zwracała artykuły sprzed czasu, gdy silnik widoku WebForms był najwyraźniej wybierany jako opcja zamiast Razor, ale moje pytanie brzmi: * Czy można nauczyć się MVC za pomocą WebForms, a nie Razor? Mówiąc możliwe, mam na myśli, czy jest to „warte czasu”, czy też powinienem pozostać przy Razor (opisanym w obu moich książkach) i powoli dostosowywać tę wiedzę do formularzy WebForms? * Czy są jakieś drastyczne zmiany, które należy zrozumieć, ucząc się MVC z perspektywy WebForms? Dziękuję za Twój czas.


title: Jakie warunki historyczne doprowadziły do tego, że programowanie obiektowe stało się głównym paradygmatem programowania?

text: Jakie czynniki ekonomiczne (i inne historyczne) doprowadziły do tego, że języki programowania obiektowego zyskały na znaczeniu? Wiem, że _Simula_ wszystko zaczęło, ale czy przyjęcie języków OOP było spowodowane stale rosnącymi potrzebami biznesu? A może przyjęcie wynikało bardziej z nowych rzeczy, które można zrobić za pomocą języków OOP? **Edytuj** Najbardziej interesuje mnie, czy istniały jakieś czynniki zewnętrzne w stosunku do samych języków, które pozwoliły im się utrzymać.


title: Klasa o nazwie Klasa?

text: To jest bardziej pytanie dotyczące stylu, ale jest to coś, nad czym obecnie zastanawiam się nad moim projektem. Załóżmy, że tworzysz aplikację, która modeluje szkołę. Istnieją więc jednostki takie jak Uczeń, Szkoła itp. Teraz wszystko jest w porządku i intuicyjne, dopóki nie przejdziesz do klasy, ponieważ (w większości języków) „Klasa” jest słowem zastrzeżonym. Tak więc, biorąc pod uwagę, że „Klasa” jest zastrzeżonym słowem kluczowym, jak nazwałbyś taki byt, który modeluje klasę szkolną?


title: Potrzebujesz interpretacji sekcji w specyfikacji C#

text: Czytam specyfikację C#. Mógłbym użyć wyjaśnienia w segmencie: > C# ma ujednolicony system typów. Wszystkie typy C#, w tym typy pierwotne, takie jak > int i double, dziedziczą z jednego typu obiektu głównego. W ten sposób wszystkie typy > współdzielą zestaw wspólnych operacji, a wartości dowolnego typu mogą być > przechowywane, transportowane i obsługiwane w spójny sposób. Ponadto C# > obsługuje zarówno typy odwołań zdefiniowane przez użytkownika, jak i typy wartości, umożliwiając dynamiczną > alokację obiektów, a także bezpośrednie przechowywanie lekkich struktur. Co w tym kontekście oznacza „przechowywanie w linii lekkich konstrukcji”?


title: Co stanowi dobry system baz danych (związany z Javą / SQL)

text: Przeprowadziłem tak wiele badań, ale nadal nie mogłem dojść do własnych wniosków, przed kontynuowaniem tego pytania chciałbym przybliżyć moją obecną sytuację. Mam 18 lat i niedawno zostałam wybrana i zaproponowana przez moją szkołę do zaprojektowania i opracowania systemu bazy danych dla mojego wydziału Psychologii. Sam system jest bardzo prosty, zwłaszcza na papierze, ale po przeczytaniu tylu nie jestem pewien, jak sobie z tą sytuacją poradzić. Nigdy wcześniej nie budowałem całego systemu, pracowałem z wieloma API, klientami gier, osobistymi programami i małymi mini projektami, ale nigdy nie robiłem tego dla kogoś innego. Uprzejmie proszę o pomoc w odpowiedzi na moje pytanie. Koduję od jakiegoś czasu, a Java jest moją najmocniejszą stroną, mam jeszcze wiele do nauczenia w odniesieniu do innych języków w stylu C, moja szkoła mi ufa i wstydziłbym się ich zawieść. Co składa się na dobry system bazodanowy? * * * Kiedy budujesz system baz danych, jakie są pierwsze kluczowe czynniki, które należy wziąć pod uwagę? Przypuszczam, że jest to bezpośrednio związane z rzeczywistym szkieletem systemu i układem. Jest to stosunkowo łatwe lub lepsze, a nie tak skomplikowane jak reszta do zrobienia. Obejmuje to znormalizowaną bazę danych, która jest bezpieczna i łatwa w użyciu. W tym miejscu pojawia się moje pytanie dotyczące połączenia Java i SQL. Mogę oczywiście (i już mam) napisać system bazodanowy w całości w Javie, dosłownie nie ma w nim SQL, sam napisałem zapytania i zrobiłem to wszystko w Javie, jednak nie sądzę, aby to było bardzo satysfakcjonujące dla większości ludzi (nie jestem pewien dlaczego, gdyby ktoś mógł wyjaśnić byłoby super). Czytałem w JDBC i nadal muszę się w to zagłębić, ponieważ samouczenie się od czasu do czasu staje się trochę trudne. Jednak szukałem więcej i widziałem różne Java Database Engines, takie jak: > HypersonicSQL - http://java-source.net/open-source/database-engines \- Open > source Database Engine Jak dobrze byłoby pracować z takimi silnikami, czy jest z nim jakieś zagrożenie bezpieczeństwa, czy powinienem po prostu zrezygnować z tego pomysłu? Wiem, że wielu z was tutaj na StackOverflow ma BARDZO wiedzę w tej dziedzinie i wiem, że wielu z Was zbudowało własne systemy bazodanowe (offline), więc uprzejmie proszę o przekazanie wiedzy, która może okazać się cenna.


title: Jak zarządzać stylami w grupie witryn

text: Do tej pory style były obsługiwane przez jeden plik CSS (dla każdej witryny). Dostosowuję to w ten sposób: * otworzyłem witrynę w Firefoksie * otworzyłem inspektor/edytor stylów * zmieniałem wartości CSS, dopóki nie byłem zadowolony z wyglądu witryny * skopiowałem wygenerowany kod CSS i wkleiłem go do pliku .css z serwer Projekt jest dość przestarzały, więc postanawiam zaktualizować aplikację, która obsługuje strony i projekty. Ale teraz mój programista mówi mi, że robię to źle. Chce używać "mniej", "kompilacji i pamięci podręcznej do css", tworzyć motywy i pozwalać mi zmieniać tylko podstawowe rzeczy, takie jak kolory i czcionki, przez interfejs administracyjny. Mówi, że jeśli chcę dostosować głębsze rzeczy, musiałbym nauczyć się CSS i edytować „mniej” pliki w edytorze kodu, a nie w Firefoksie. Jest szalony czy co? Nie rozumiem, jak to jest lepsze niż to, co obecnie robię?


title: Porady dotyczące licencji ISC

text: Czy licencja ISC jest odpowiednia jako zamiennik licencji MIT lub Uproszczonego BSD? Jakie są zalety i wady ISC w porównaniu z MIT lub BSD?


title: DVCS pobłogosławił replikację repozytorium w zespołach rozproszonych geograficznie

text: Moja firma bada przejście z Perforce na DVCS i obecnie używamy wielu serwerów proxy Perforce, ponieważ **zespoły programistyczne są rozproszone po Niemczech, Chinach, USA i Meksyku**, a czasami przepustowość z jednego miejsca do drugiego nie jest tak świetna . Rozmawiając z IT, zaczęliśmy szukać sposobu, aby wszystko działało płynnie z perspektywy rozproszonej geograficznie, tak aby każdy otrzymał najnowsze i najlepsze bez określania, który serwer repo jest źródłem prawdy (tj. **Przejrzysta replikacja** ). Pomyślałem, że **może moglibyśmy emulować mechanizm DNS za pomocą haków pre-push i pre-pull**. Rozważmy na przykład kraje A, B i C. Po przejściu z błogosławionego A, samo A będzie ciągnąć za zmiany z B, co z kolei będzie ciągnąć za zmiany w C. Jeśli B i C mają nowe zmiany, spadną w kierunku A. I odwrotnie, gdy jest nacisk, może zostać rozprzestrzeniony do wszystkich błogosławionych repozytoriów. Zdaję sobie sprawę, że **na ogół masz tylko jedno błogosławione repozytorium, jednak może to nie skalować się globalnie**, a każde błogosławione repozytorium będzie miało zastosowanie tylko do zespołów z jednego kraju. **Moje pytanie**: czy koncepcja replikacji DVCS jest używana w praktyce? Czy ktoś zrobił to z powodzeniem? Jeśli tak, to jaki jest właściwy sposób to zrobić?


title: Wygeneruj produktywne środowisko, gdy programiści mają różne opinie

text: Moje pytanie jest proste. Jestem programistą i pracuję z innym programistą, który jest tu od wielu lat więcej niż ja. Ma swoje zdanie na temat wdrażania rzeczy; jest raczej osobą zrób to sam. Jestem raczej osobą nie wymyślajmy na nowo koła. Ostatnio na przykład mieliśmy dużą dyskusję o tym, jak moim zdaniem powinniśmy przenieść się do chmury i jak uważa, że powinniśmy zachować własne rozwiązanie dla naszych serwerów (do hostowania naszych stron internetowych). Albo jak myślę, że Java jest lepiej dopasowana do tego, czego potrzebujemy, ale on lubi PHP, więc tego musimy użyć. To wszystko są argumenty, które ludzie mają w sieci… niektórzy lubią chmurę, niektórzy nie… niektórzy lubią Javę, niektórzy nie. I jestem całkowicie w porządku ze zróżnicowaną opinią... jednak doszło do tego, że jestem nieproduktywny i bez szefa, który zna się na programowaniu (nasz szef nie wie nic o kodowaniu, po prostu zarządza nami), który zajmuje stanowisko podejmowania decyzji, zawsze wygrywa w jego opinii, ponieważ jest bardziej doświadczonym programistą... co nie wydaje mi się produktywne. Czy kiedykolwiek spotkałeś się z takim problemem zespołowym? Jak myślisz, co powinienem zrobić? Jaki jest najlepszy sposób na stworzenie produktywnego środowiska?


title: Czy rozsądne jest używanie POCO, które dziedziczą po DTO?

text: Projektuję warstwową aplikację .NET i chcę użyć podejścia Code First. Jestem w tym nowy, więc nie mogę sobie wyobrazić, jak należy to zaprojektować. Czy poniższe podejście byłoby rozsądnym podejściem? Jakie problemy lub ograniczenia mogę napotkać? * Napisz zajęcia DTO dla mojej domeny. Będą one używane do przesyłania danych między serwerem a klientem przez WCF. * Napisz zestaw klas POCO, które dziedziczą po klasach DTO. Użyj ich do wygenerowania bazy danych na serwerze. * Napisz kolejny zestaw klas POCO, który dziedziczy po klasach DTO. Użyj ich, aby wygenerować bazę danych SDF na kliencie.


title: Przejście od inżynierii do programowania

text: Ukończyłem inżynierię chemiczną, ale przez cały czas pracowałem na pół etatu jako programista PHP. Przekształciło się to w pracę na pełen etat. Zastanawiałem się, w jaki sposób posiadanie dyplomu Chem-e zamiast CS wpłynie na moje dalsze postępy w tej karierze. Czy ktoś ma z tym doświadczenie i może jakieś wskazówki?


title: Jaki jest sens posiadania interfejsu w każdej klasie usług?

text: W firmie, w której pracuję, każda klasa usług ma odpowiedni interfejs. Czy to koniecznie? Większość z tych interfejsów jest używana tylko przez jedną klasę i nie tworzymy żadnego publicznego API. Z nowoczesnymi bibliotekami mockingu, które potrafią symulować konkretne klasy i IDE, które są w stanie wyodrębnić interfejs z klasy za pomocą mniej więcej dwóch kliknięć, czy jest to tylko pozostałość z wcześniejszych czasów?


title: Czy muszę używać interfejsu, gdy tylko jedna klasa go kiedykolwiek zaimplementuje?

text: Czy cały sens interfejsu nie jest taki, aby wiele klas przestrzegało zestawu reguł i implementacji?


title: Wszystko ma interfejs

text: > **Possible Duplicate:** > Czy muszę używać interfejsu, gdy tylko jedna klasa go zaimplementuje? Przejmuję projekt, w którym każda prawdziwa klasa implementuje interfejs. Zdecydowana większość tych interfejsów jest zaimplementowana przez pojedynczą klasę, która ma podobną nazwę i dokładnie te same metody (np. MyCar i MyCarImpl). Prawie żadne 2 klasy w projekcie nie implementują więcej niż interfejs o tej samej nazwie. Wiem, że ogólne zalecenie to kodowanie do interfejsu, a nie implementacji, ale czy nie jest to trochę za daleko? System może być bardziej elastyczny, ponieważ łatwiej jest dodać nową klasę, która zachowuje się bardzo podobnie do istniejącej klasy. Jednak znacznie trudniej jest przeanalizować kod, a zmiany metod wymagają teraz 2 edycji zamiast 1. Osobiście zwykle tworzę interfejsy tylko wtedy, gdy istnieje potrzeba, aby wiele klas zachowywało się tak samo. Subskrybuję YAGNI, więc nie tworzę czegoś, chyba że widzę realną potrzebę. Czy robię to wszystko źle, czy ten projekt idzie za burtą?


title: Jak zapobiec niewiadomemu powielaniu kodu?

text: Pracuję na dość dużej bazie kodu. Setki klas, tony różnych plików, mnóstwo funkcjonalności, ściągnięcie nowej kopii zajmuje więcej niż 15 minut itp. Dużym problemem z tak dużą bazą kodu jest to, że ma ona sporo metod użytkowych i takich, które wykonują to samo lub ma kod, który nie używa tych metod narzędziowych, kiedy tylko może. A także metody użytkowe nie są tylko w jednej klasie (ponieważ byłby to ogromny bałagan). Jestem raczej nowy w kodzie, ale kierownik zespołu, który pracuje nad tym od lat, wydaje się mieć ten sam problem. Prowadzi to do dużej ilości kodu i powielania pracy, a gdy coś się zepsuje, zwykle jest to zepsute w 4 kopiach zasadniczo tego samego kodu. Jak możemy ograniczyć ten wzorzec? Jak w przypadku większości dużych projektów, nie cały kod jest udokumentowany (chociaż niektóre są) i nie cały kod jest… cóż, czysty. Ale w zasadzie byłoby naprawdę fajnie, gdybyśmy mogli popracować nad poprawą jakości w tym zakresie, aby w przyszłości było mniej duplikacji kodu, a rzeczy takie jak funkcje użytkowe były łatwiejsze do odkrycia. Ponadto funkcje użytkowe są zwykle albo w jakiejś statycznej klasie pomocniczej, w jakiejś niestatycznej klasie pomocniczej, która działa na pojedynczym obiekcie, albo jest statyczną metodą w klasie, w której głównie "pomaga". Miałem jeden eksperyment z dodawaniem funkcji użytkowych jako metod rozszerzających (nie potrzebowałem żadnych elementów wewnętrznych klasy, a zdecydowanie było to wymagane tylko w bardzo specyficznych scenariuszach). Miało to wpływ na zapobieganie zaśmiecaniu klasy podstawowej i tym podobne, ale tak naprawdę nie jest to już wykrywalne, chyba że już o tym wiesz


title: Jak ustrukturyzować swój udostępniony kod, aby można go było „odnaleźć ponownie” dla nowych programistów?

text: Zacząłem pracować w mojej obecnej pracy około 8 miesięcy temu i było to jedno z najlepszych doświadczeń, jakie miałem jako młody programista. To mała firma, a obaj moi współtwórcy to wspaniali ludzie. Jedną z praktyk, do której zachęcają oboje, jest częste ponowne wykorzystanie kodu. Nasza baza kodu to głównie C# i używamy scentralizowanego systemu kontroli wersji. Sposób, w jaki repozytorium jest obecnie zorganizowane, istnieje jeden folder, w którym umieszczone są wszystkie współdzielone biblioteki klas (wraz z testami jednostkowymi dla każdej biblioteki), a nasz system kontroli wersji umożliwia udostępnianie lub łączenie tych bibliotek z innymi projektami. W tym momencie próbuję zrozumieć, w jaki sposób bieżąca struktura folderu może być bardziej sprzyjająca ponownemu znajdowaniu tych bibliotek. Rozmawiałem o tym z innymi programistami i zgadzają się, że zrobiło się trochę bałaganu. Uważam, że czasami „wynajduję koło na nowo”, ponieważ nie zdawałem sobie sprawy, że istnieje fragment kodu, który rozwiązuje konkretny problem. Problem dodatkowo komplikuje fakt, że udostępniamy część kodu między projektami ASP.NET MVC2, WinForms i Windows CE, **oraz** udostępniamy kod między aplikacjami zbudowanymi na wielu wersjach .NET. Jak podchodzą do tego inni ludzie? Czy odpowiedzią jest nazewnictwo bibliotek w określony sposób, czy lepiej zainwestować w oprogramowanie do wyszukiwania kodu? Czy odpowiedź jest w komentarzach do dokumentów? Czy powinniśmy w ogóle udostępniać biblioteki, czy po prostu rozgałęziać biblioteki klas do ponownego wykorzystania? Dzięki za wszelką pomoc!


title: Kto odpowiada za licencjonowanie oprogramowania w ITIL?

text: Kto w standardowym dziale teleinformatycznym odpowiada za zarządzanie licencjami na oprogramowanie? Zacząłbym od stwierdzenia, że odpowiada za to kierownik ds. ICT. Ale kto ponosi odpowiedzialność, używając ITIL jako standardowego modelu dla działu ICT, czy Service Delivery Manager czy Development Manager? Menedżer ds. dostarczania usług musi zapewnić ciągłość działania, ale czy po przejściu do przodu z nowymi wersjami oprogramowania Menedżer ds. Rozwoju otrzymuje kontrolę nad tym, co kupić? Ponieważ nie chodzi tylko o dostarczanie usługi, chodzi o jej ulepszanie.


title: Jak zdefiniować złożone reguły biznesowe za pomocą User Stories?

text: Szybka i brudna definicja User Story: „Jako <rola> chcę <cel/pragnienie>, aby <korzyść>” W tej powszechnie akceptowanej definicji jest niewiele miejsca na zdefiniowanie reguł biznesowych, ograniczeń lub danych wejściowych użytkownika. Trywialny przykład tylko dla zilustrowania: > > Jako <bibliotekarz> chcę <zarejestrować nowe książki>, aby <studenci> > > mogli znaleźć ich dostępność online> W tym głupim przykładzie, gdzie można by zdefiniować pola potrzebne podczas rejestracji książka? Czy powinno być gdzieś napisane? A może wymagane reguły biznesowe powinny być przekazywane ustnie przez Właściciela Produktu?


title: Jak nazywasz „komórkę” w terminologii bazy danych?

text: Przez „komórkę” rozumiem wartość konkretnej kolumny w konkretnym wierszu. Nie jestem pewien, czy nazywa się to po prostu „komórką”, czy jest to arkusz kalkulacyjny.


title: Jakie są najlepsze monitory do programowania?

text: Od czasu do czasu wypróbowałem kilka monitorów. Moja główna praca to kodowanie (praca, doktorat itp.). W pracy mam LG Flatron L246WH, który gorąco polecam. Jednak w domu mam LG W2363V, z którym podczas kodowania czuję się dość niekomfortowo. Czcionki, subpiksele lub cokolwiek mi przeszkadza podczas korzystania z gładkich czcionek. Jakie są obecnie najlepsze monitory, które najlepiej odpowiadają naszym potrzebom?


title: Czy powinienem zmienić język, aby przestać się starzeć?

text: Jestem programistą ASP.Net/C# przy użyciu programu SQL Server jako zaplecza. Jestem dyrektorem technicznym firmy, jestem bardzo zadowolony ze wszystkiego, co robię, a języki i systemy, których używamy, są idealne do tego, co robimy. W głębi duszy wiem jednak, że z czasem programiści mogą się zestarzeć. Jako maleńki młodzieniec pamiętam, że wszyscy ci "starzy" programiści minęli to i nie mogli nadążyć za młodzieżą. Więc biorąc pod uwagę, że jestem szczęśliwy we wszystkim, co robię. Jakie są opcje, aby nadążyć za wszystkim i uniknąć stania się. Jednym szczególnym pomysłem, którego używam, jest umożliwienie wszystkim nowym programistom używania i prezentowania rzeczy, które uważają za fajne. Jeśli coś wpadnie mi w oko, to z pewnością będzie to coś, z czego wszyscy będziemy korzystać w przyszłości. Myśli?


title: Zbuduj funkcjonalność wokół projektu, czy na odwrót?

text: Kiedy tworzysz aplikację, czy lepiej najpierw zaprojektować interfejs użytkownika (w Photoshopie lub innym), a następnie wdrożyć funkcjonalność zgodnie z zaprojektowanym interfejsem użytkownika, czy też programować i budować projekt na bieżąco? Zalety, które widzę, używając UI jako odniesienia: * aplikacja będzie bardzo przyjazna dla interfejsu użytkownika :) * jak wspomniał pdr, jeśli pracuje dla klienta, otrzymuje dokładnie to, co sobie wyobrażał Wady: * programowanie będzie bardziej skomplikowane, więc czas na opracowanie zwiększa jakiekolwiek inne? :D


title: Jaka jest różnica między pracą w firmie programistycznej a firmą, która koncentruje się na innej dziedzinie?

text: Niedawno skontaktowała się ze mną lokalna agencja reklamowa z ofertą pracy. Wprowadzają cały program internetowy / interaktywny we własnym zakresie i dodają do swojego zespołu programistów. Mam dość mojej wygodnej, ale nudnej pracy w korporacji i intryguje mnie to stanowisko. Ponieważ pracowałem tylko dla sklepów z oprogramowaniem, których głównym biznesem było tworzenie oprogramowania, obawiam się, że mogą nie kłaść nacisku na praktyki związane z oprogramowaniem wysokiej jakości, ponieważ rozwój nie jest głównym celem ich działalności. Czy ktoś z doświadczeniem w pracy w firmie programistycznej może porównać/porównać pracę w firmie, która akurat ma własny zespół programistyczny lub dział?


title: Czy programiści w firmach niezwiązanych z oprogramowaniem potrzebują tego samego, co w firmach programistycznych?

text: Istnieje wiele dowodów na to, że takie rzeczy, jak biura, wiele ekranów, prawa administracyjne własnego komputera i możliwość korzystania z dowolnego oprogramowania, są świetne dla produktywności podczas opracowywania. Jednak badania, które widziałem, dotyczą firm, które sprzedają _oprogramowanie_. Dlatego utrzymanie produktywności programistów ma kluczowe znaczenie dla rentowności firmy. Jednak w firmach, które produkują oprogramowanie tylko po to, by wspierać ich podstawową funkcję, programowanie jest jedynie rolą pomocniczą. Czy te same zasady obowiązują w firmie, która wykorzystuje tylko produkowane przez siebie oprogramowanie do wspierania swojej działalności, a duża część pracy programisty to utrzymanie?


title: Czy praca w IT ograniczy Twoje perspektywy zawodowe jako programista?

text: Podjąłem pracę jako informatyk (programowanie SQL, helpdesk itp.), ponieważ potrzebowałem pracy (aby spłacić kredyty studenckie zgromadzone w szkole). Bardzo się cieszę, że mam pracę, ale ostatecznie chcę zostać programistą C++. W wolnym czasie uczę się podręczników do C++ i zaczynam robić projekty z nowo nabytymi umiejętnościami SQL. Ale pytanie, które wciąż krąży mi po głowie, brzmi: „czy będę teraz programistą SQL do końca mojego życia?” Z twojego doświadczenia, czy spędzenie roku lub dwóch w mojej obecnej pracy będzie przeszkodą w dostaniu się do programowania w C++?


title: Czy złą praktyką jest zaprzestanie świadczenia pomocy technicznej dla nieaktualnego oprogramowania, jeśli aktualizacje są bezpłatne i łatwe?

text: Zapewnienie wsparcia dla przestarzałego oprogramowania jest zarówno mało ekscytujące, jak i kosztowne. Jeśli ludzie nadal korzystają z wersji, która została sprzedana dziesięć lat temu, oznacza to, że znajdą błędy, których nie ma w następnych wersjach, ich oprogramowanie może nie działać zgodnie z oczekiwaniami na nowym sprzęcie lub systemie operacyjnym itp. Pracownicy wsparcia muszą również przeszkolony do korzystania z tej starej wersji. Jest to nieuniknione w kilku przypadkach: * Kiedy każda kolejna wersja oprogramowania jest opłacana, nie można zmuszać wszystkich do wydawania pieniędzy co dwa lata na zakup kolejnej wersji. Przykład: Microsoft musi jeszcze wspierać Windows XP, ponieważ zrozumiałe jest, że ludzie nie chcą płacić setek dolarów za Windows Vista, potem Seven, potem Windows 8. * Gdy aktualizacja jest skomplikowana. Przykład: jeśli wiesz, że zainstalowanie dodatku SP2 dla Microsoft SQL Server 2008 może spowodować, że Twój serwer będzie całkowicie bezużyteczny, możesz odłożyć instalację aktualizacji i pozostać przy nieaktualnej wersji, która ma jedną mocną stronę: _działa_. * Gdy w grę wchodzą starsze systemy lub względy bezpieczeństwa. Przykład: automatyczna aktualizacja oprogramowania promu kosmicznego co tydzień może mieć pewne wady. W ten sam sposób nie można zaktualizować sprzętu, jeśli starsze oprogramowanie wymaga do działania starego sprzętu. Załóżmy teraz, że proces aktualizacji przebiega równie dobrze, jak w Google Chrome. Użytkownik nie musi zawracać sobie głowy aktualizacjami; nie ma żadnych powodów dotyczących bezpieczeństwa ani starszych, aby nie aktualizować, a aktualizacje są bezpłatne. Czy w takim przypadku złą praktyką dla firmy jest zaprzestanie świadczenia wsparcia dla wersji nieaktualnych od kilku miesięcy i poproszenie klientów o aktualizację oprogramowania, a następnie skontaktowanie się z pomocą techniczną, jeśli problem będzie się powtarzał?


title: Jak zobrazować stan globalny lub współdzielony?

text: Załóżmy, że budujesz FSM dla czegoś takiego jak gra i masz stany takie jak: * Menu główne * Opcje * Tryb jednego gracza * Tryb wieloosobowy Twój diagram stanu może wyglądać mniej więcej tak: ![tutaj podaj opis obrazka](http://i .stack.imgur.com/vjxus.png) Teraz powiedzmy, że masz stan współdzielony, `DevConsole`, (pokazuje konsolę po naciśnięciu tyldy i otrzymuje dane wejściowe KB itp. Jestem pewien, że widziałeś to wcześniej) taki, że bez względu na to, w jakim jesteś stanie, ten stan ma zastosowanie. Jak to przedstawiasz? _edytuj_ * Przykład jak to działa wyglądałoby tak: public class StateMachine { protected State sharedState; poprzednie państwo chronione; stan obecny stan chroniony; public void Update() { if(this.hasSharedState) this.sharedState.Update(); if (this.previousState != null && this.previousState.IsExiting) this.previousState.Update(); w przeciwnym razie this.currentState.Update(); } // wywoływane przez poszczególne stany public void ChangeState<StateType>() { // tworzy nowy stan an ustawia właściciela automatu stanów na tę maszynę this.previousState = this.currentState; this.previousState.Exit(); this.currentState = StateBuilder.Build<StateType>(to); } }


title: Programowanie w języku C w 2011 r.

text: Wiele księżyców temu zarabiałem na życie w C, głównie utrzymując serwer POP3, który wspierał szeroką gamę systemów operacyjnych (Linux, *BSD, HPUX, VMS...). Planuję wypolerować rdzę z moich umiejętności C i nauczyć się trochę o implementacji języka, kodując proste FORTH w C. Ale zastanawiam się, jak (lub czy?) zmieniły się rzeczy w świecie C od 2000 roku. Kiedy ja myślę C, myślę ... 1. comp.lang.c 2. ANSI C tam, gdzie to możliwe (ale C89 jako C99 nie jest tak szeroko obsługiwany) 3. `gcc -Wall -ansi -pedantic` zamiast narzędzi do analizy statycznej 4. Emacs 5. Ctags 6. Autoconf + make (i patrz punkt 2 o VMS, HP-UX itp. dobroć) Czy każdy, kto pisał w C przez ostatnie jedenaście lat, mógł mi powiedzieć, co (jeśli cokolwiek ;-) ) zmieniał się na przestrzeni lat? (W innych wiadomościach, cholera jasna, robię to od ponad dekady).


title: Wzorce projektowe Protobuf

text: Oceniam bufory protokołu Google dla usługi opartej na Javie (ale oczekuję wzorców agnostycznych języka). Mam dwa pytania: Pierwsze to ogólne pytanie ogólne: > Jakich wzorców widzimy, jakich używają ludzie? Wspomniane wzorce są związane z klasą > organizacją (np. wiadomości przypadające na plik .proto, pakowanie i dystrybucja) > oraz definicją wiadomości (np. powtarzane pola vs. strony pomocy Google Protobuf i publiczne blogi, podczas gdy jest mnóstwo informacji o ustalonych protokołach, takich jak XML. Mam również konkretne pytania dotyczące następujących dwóch różnych wzorców: 1. Reprezentuj wiadomości w plikach .proto, pakuj je jako osobny słoik i wysyłaj do docelowych odbiorców usługi — co jest w zasadzie domyślnym podejściem, jak sądzę. 2. Zrób to samo, ale dodaj również ręcznie spreparowane opakowania (nie podklasy!) wokół każdego komunikatu, który implementuje kontrakt obsługujący co najmniej te dwie metody (T jest klasą opakowującą, V jest klasą wiadomości (używając ogólnych, ale uproszczonej składni dla zwięzłość): public V toProtobufMessage() { V.Builder builder = V.newBuilder(); for (Item item: getItemList()) { builder.addItem(item); } return builder.setAmountPayable(getAmountPayable()).setShippingAddress( getShippingAddress()).build()); } public static T fromProtobufMessage(V message_) { return new T(message_.getShippingAddress(), message_.getItemList(), message_.getAmountPayable()); } Jedna zaleta, którą widzę z (2 ) jest to, że mogę ukryć zawiłości wprowadzone przez `V.newBuilder().addField().build()` i dodać kilka znaczących metod, takich jak `isOpenForTrade()` lub `i sAddressInFreeDeliveryZone()` itp. w moich opakowaniach. Drugą zaletą, którą widzę z (2) jest to, że moi klienci mają do czynienia z niezmiennymi obiektami (coś, co mogę wymusić w klasie opakowującej). Jedną wadą, którą widzę z (2), jest to, że duplikuję kod i muszę synchronizować moje klasy opakowujące z plikami .proto. Czy ktoś ma lepsze techniki lub dalszą krytykę któregokolwiek z tych dwóch podejść? * * * *Przez enkapsulację powtarzającego się pola rozumiem komunikaty takie jak: message ItemList { repeat item = 1; } wiadomość FakturaKlienta { wymagany adres wysyłkowy = 1; wymagana lista pozycji = 2; wymagana podwójna kwota Płatne = 3; } zamiast wiadomości takich jak ta: wiadomość FakturaKlienta { wymagany adres wysyłkowy = 1; powtórzona pozycja poz = 2; wymagana podwójna kwota Płatne = 3; } Lubię to drugie, ale cieszę się, że słyszę argumenty przeciwko niemu.


title: Aktualny stan WebSockets dotyczący bezpieczeństwa i obsługi przeglądarek

text: Podczas wyszukiwania znalazłem wiele rzeczy, ale nic, co wydawałoby się zarówno zaktualizowane, jak i kompletne. Pamiętam, że w ostatnim kwartale 2010 roku czytałem bardzo smutną dla mnie wiadomość, ponieważ WebSockets były wyłączone w większości (jeśli nie we wszystkich? nie pamiętam) nowoczesnych przeglądarkach, które domyślnie go wspierały ze względu na obawy dotyczące bezpieczeństwa protokołu proxy używanego przez WSP . Zastanawiam się, jaki jest obecny stan problemu i czy są jakieś znane plany z następnej wersji przeglądarek, aby domyślnie włączyć WS. Wiem, że w Chrome 13b mam ją włączoną i nie sądzę, żebym ją włączyła, ale to samo nie dzieje się w innych przeglądarkach, których używam. Jaka wersja robocza jest używana w obecnych wersjach? W przyszłym miesiącu wygłoszę prezentację na temat HTML5 dla grupy programistów i jest to temat, który wydaje mi się najmniej aktualny. Muszę wdrożyć aktualny protokół, aby przynajmniej mieć pewność, że wiem o czym mówię i nie mam problemu z odpowiadaniem na pytania :) Jak najwięcej szczegółów technicznych i szczegółowych będzie mile widzianych.


title: Małżeństwo Lispa i LaTeXa - czy to się udało?

text: Lubię `LaTeX`, ale jego system makr i logika są dla mnie złożone i słabe. języki takie jak Schem/Lisp/Clojure są bardzo dobre w makrach. Wyobrażam sobie cały dokument napisany w rodzinnym języku Lisp, który po uruchomieniu emituje kod LaTeX i tworzy dokument. Czy zostało to zrobione wcześniej? Jakieś linki?


title: Czy używanie „{}” w ciągach formatu jest uważane za Pythona?

text: Właśnie dowiedziałem się, że w Pythonie można napisać '{}{}'.format(string_a, string_b) zamiast '{0}{1}'.format(string_a, string_b), tj. możesz pominąć cyfry dla parametrów formatu ciągu kiedy chcesz, aby rzeczy układały się jeden po drugim w kolejności. Czy to jest uważane za Pythona? UWAGA: „Pythonic” jest powszechnie używanym terminem wśród programistów Pythona, oznaczającym idiomatyczny kod Pythona. W kulturze Pythona panuje wyraźny konsensus w kwestiach dotyczących stylu, zwłaszcza w przypadku bardzo specyficznych, takich jak ten, biorąc pod uwagę wyraźną filozofię projektowania języka: „Powinien być jeden – a najlepiej tylko jeden – oczywisty sposób na zrobienie tego”. Jest to cytowane z „Zen w Pythonie”, zestawu aforyzmów, które znacznie ułatwiają zdefiniowanie tego, co jest „Pythonic”, i który jest zawarty w każdej dystrybucji Pythona (w dowolnym wierszu poleceń interpretera Pythona wpisz `import this`, aby Zobacz to).


title: Uruchamianie nowego startupu/aplikacji webowej, jak wybrać dostawcę hostingu?

text: Tworząc nowy startup związany z aplikacją webową, jak wybrać dostawcę hostingu? Zakładając, że kod aplikacji internetowej jest zorientowany na DDDD (Distributed Domain Driven Development) do obsługi dużego scenariusza wdrożenia, chodzi o uniknięcie zbyt dużych kosztów hostingu. Zasadniczo, uruchomienie aplikacji internetowej, z jej samymi użytkownikami, będzie mogło zmieścić się na "jednym" pudełku (DB + APP), może dwóch dla redundancji. W końcu aplikacje będą stopniowo rosły do coraz większej liczby użytkowników (mam nadzieję:)). Jak mądrze wybrać hosting? Dzisiaj widzę trzy opcje: * hosting dla siebie: obecnie nie jest to opcja, ponieważ wymaga wielu umiejętności administracyjnych i związanych z tym zadań * hosting na serwerach wirtualnych/dedykowanych: może to dobra opcja, ponieważ wirtualny hosting dedykowany jest dość tani, ale obawiam się to szybko nas ograniczy pod względem skalowalności * hosting w chmurze (amazon lub azure): prawdopodobnie najlepsza opcja na dłuższą metę, ale z wyższym kosztem na start (konieczność dostosowania aplikacji, koszt instancji) Czy ktoś masz informację zwrotną/poradę na temat takich wymagań ? PS: FYI, aplikacje webowe będą prawdopodobnie pisane z ASP.NET MVC jako frameworkiem webowym i Ncqrs+NServiceBus, aby kierować wzorcem DDDD w stylu CQRS Edycja: jako backend, MongoDB jest dzisiaj naszym prawdopodobnym wyborem, ponieważ NoSQL łączy się dobrze z pozyskiwaniem zdarzeń + CQRS (nie ma potrzeby łączenia itp.). Jednak znalezienie VPS za pomocą asp.net ORAZ mongodb może być trudne. Być może będę musiał użyć tradycyjnych RDBMS, które można znaleźć u wszystkich dostawców (MS SQL SErver lub MySQL)


title: Jak stworzyć rozszerzalną aplikację internetową?

text: Jak zaimplementowałbyś rozszerzalną aplikację internetową? To, o czym myślę, to aplikacja internetowa podobna do Jenkins lub Hudson, która zapewnia obsługę wtyczek. Chociaż jest dla mnie oczywiste, jak można lokalizować i ładować wtyczki, nie wiem, jak można je zintegrować z ogólną architekturą. Jestem szczególnie niepewny co do poniższych punktów. **W jaki sposób wtyczka może zmienić widok, np. dodać elementy wejściowe do formularza?** Mój pierwszy pomysł jest taki, że wtyczka może rejestrować podszablony/fragmenty dla określonego formularza. Przykład: Wtyczka Newsletter rejestrująca typowy fragment checkboxa newslettera, który będzie się wyświetlał w widoku rejestracji użytkownika. **Jak wtyczka może reagować na przychodzące żądania?** Ponownie, bezpośrednim podejściem byłoby zapewnienie słuchaczy dla niektórych żądań lub działań, np. Żądanie POST do /user. **Jak wtyczka może utrwalać dane?** Zakładam, że jest to sytuacja, w której rozwiązania do przechowywania danych NoSQL byłyby lepsze od relacyjnych baz danych. Byłbym wdzięczny za wszelkie uwagi, pomysły i doświadczenia (może istnieje nawet wzorzec projektowy), które masz dotyczące rozszerzalnych aplikacji internetowych.


title: Używanie asemblera do zapisu do pliku

text: Pracuję z aplikacją handlową (odczytującą dane z giełdy), która generuje wiadro danych na sekundę. Mamy różne "poziomy logów", ale nawet minimalny poziom logów generuje tak dużo danych! Ten proces tworzenia dziennika jest dość intensywny we/wy. Ponieważ mogę napisać asembler używając __asm__ , zastanawiałem się czy operacja zapisu do plików jest zakodowana w asemblerze, czy będzie przyspieszenie ? Reszta kodu to C++. Ponadto, jakie są zastrzeżenia przed zrobieniem czegoś takiego?


title: W jaki sposób administracyjna aplikacja sieci Web powinna kontrolować jednostki usługi WCF?

text: Mamy usługę WCF (samohostowaną), która może odbierać kilka typów wywołań z zewnątrz, każde wywołanie zawiera procedurę logiki biznesowej. Musimy zbudować aplikację webową, która będzie pełniła funkcję aplikacji zarządzającej, dla wszystkich użytkowników serwisu. Dlatego musimy mieć dostęp do wszystkich wewnętrznych elementów usługi, a nie tylko do połączeń biznesowych. Jak należy to zrobić najskuteczniej? **EDYTUJ:** Nie byłem zbyt szczegółowy, ponieważ uważam to za ogólny problem. Naszymi Klientami są detaliści, którzy mają własnych klientów, więc kiedy mówię Klient, to jest nasz klient, a kiedy mówię Klient - to klient naszego klienta. **Przykład:** * Usługa X umożliwia zarejestrowanym klientom Klientów dokonywanie transakcji. * istnieje kilka rodzajów transakcji. * serwis odbiera transakcje z kilku różnych urządzeń. * Usługa jest usługą samoobsługową WCF. Klient musi zarejestrować urządzenia do użytku, zarejestrować różne konfiguracje dla różnych urządzeń i wiele innych rejestracji i administracji, które należy wykonać. Wszystko to odbywa się na stronie internetowej. **Użytkownicy strony to Klienci, Sprzedawcy detaliczni, a nie klienci końcowi** Tak więc widzę, że mam te opcje. są na tej samej maszynie, ale co, jeśli to się zmieni? czy to dobre podejście? 2. Wykonuj zgłoszenia serwisowe dla całej tej rejestracji i administrowania, których nie jestem nawet pewien, jak należy to zrobić. Potrzebuję więc twojej pomocy w zrozumieniu najlepszego sposobu na zrobienie tego...


title: Lokalizacja w php, najlepsza praktyka czy podejście?

text: Lokalizuję moją aplikację php. Mam dylemat wyboru najlepszej metody, aby osiągnąć to samo. Metoda 1: Obecnie przechowuję słowa do zlokalizowania w tablicy w pliku php <?php $values = array ( 'welcome' => 'bienvenida' ); ?> Używam funkcji do wyodrębniania i zwracania każdego słowa zgodnie z wymaganiami Metoda 2: Czy powinienem użyć pliku txt, który przechowuje ten sam ciąg? <?php $witamy = 'bienvenida'; ?> Moje pytanie brzmi, która metoda jest lepsza, jeśli chodzi o szybkość i wysiłek w celu opracowania tego samego i dlaczego? Edycja: Chciałbym wiedzieć, która metoda z dwóch jest szybsza w odpowiedzi i dlaczego miałoby to być? również wszelkie ulepszenia powyższego kodu byłyby mile widziane!


title: Czy pojedynczy prosty język, taki jak Clojure, może zastąpić Html + JavaScript + CSS + Flash + Aplety Java ...?

text: Nie odrzucaj tego pomysłu od razu. Wiem, że ciężko jest konkurować z podejściem mainstreamowym, które już działa (w większości), więc moje pytanie jest częściowo „akademickie”. Zdaję sobie również sprawę, że ClojureScript istnieje i jest bardzo fajny, ale jest to łatka na istniejącą brzydką rzecz, użyteczna abstrakcja. Zastrzeżenie: Jestem programistą, ale nie web developerem i dlatego proszę o opinie innych. Będąc programistą i korzystając z sieci na co dzień, czytając różne tematy i przeglądając od czasu do czasu źródło html strony, myślę, że mam pewne pojęcie o tworzeniu stron internetowych. W każdym razie, problemy, które ja widzę: * Sieć zaczęła się szybko i brudno, i przyjazna dla noobów, ale teraz potrzeba wielu umiejętności, aby stworzyć dobrą, nowoczesną, interaktywną stronę internetową, i po prostu musisz być w tym dobry aby być dziś konkurencyjnym. Często oznacza to, że szybkie i brudne „nauczenie sieci w 21 dni” po prostu nie wystarcza. * Html zaczął się szybko i brudno, jako protokół przyjazny dla noobów. Obecnie jest bałagan. * Język JavaScript nie jest pozbawiony wad, ale ok. * CSS wydaje się być przyzwoitą próbą uporządkowania rzeczy. Warto zachować przynajmniej samą ideę - że wygląd można stylizować w osobnym pliku. * Podsumowując - JavaScript + Html + CSS stają się raczej brudne. Pojawiły się dobre pomysły/narzędzia, które łagodzą ten problem, takie jak: Biblioteki AJAX oddzielają specyficzne smaki JavaScript. Potężne biblioteki, takie jak JQuery, Node.js itp., pozwalają robić fajne rzeczy w JavaScript tak niedoskonałym, jak jest. Google Web Kit bardzo dobrze tłumaczy projekt GUI na stronę internetową. Struktury internetowe MVC, takie jak ASP.Net, RoR, Django, abstrahują od rzeczy i wykonują za Ciebie dużo pracy, **JEDNAK**, to wszystko są abstrakcje na bazie gównianej podstawy. * Zapotrzebowanie na to, co dziś może zrobić sieć, stale rośnie; ChromeBook firmy Google jest tego przejawem. Uruchamiasz przeglądarkę na pełnym ekranie i wszystko, co możesz chcieć zrobić - interakcje klawiatury/myszy, dźwięk, wideo, gry, tekst, obrazy, prezentacje PowerPoint - wszystko dzieje się w jej wnętrzu. Dzięki za szybkie przeglądarki, szybkie komputery i „chmurę”, ale mogłoby być o wiele lepiej! Z punktu widzenia grafiki przeglądarka to tylko prostokątne płótno, na którym można malować cokolwiek. Obecnie plik wykonywalny przeglądarki waży wiele megabajtów, ponieważ musi wiedzieć, jak parsować Html, JavaScript, CSS i wyświetlać to wszystko. Jeśli zaczniesz od zera i zdasz sobie sprawę, że do pomalowania jest tylko płótno, myślę, że przeglądarka może być znacznie mniejsza i prostsza. Ceną do zapłacenia jest konieczność napisania poprawnego programu do wszystkiego w modnej składni, takiej jak Lisp lub Clojure, nawet do najprostszych rzeczy, takich jak wyświetlanie etykiety. To była fajna część html - jeśli chciałbyś tylko wpisać akapit, pisałbyś go dosłownie. To już rzadko się zdarza. Jeśli wszystko, czego chcesz, to po prostu wpisać akapit tekstu, nadal musisz pomyśleć o stylizacji i rozmieszczeniu w tekście lub CSS. Następujący fragment kodu HTML (znajdujący się na pierwszej stronie tej witryny) języki-programowania nauka nie jest o wiele łatwiejszy do stworzenia niż jakaś alternatywna składnia Lispy (i nie zastanawiałem się nad tym zbytnio): (create-link :target "/questions/tagged/programming-languages" :class "post-tag" : title "pokaż pytania oznaczone 'języki-programowania'" :rel "znacznik" :content (tekst "języki-programowania")) To może nie być poprawna składnia Clojure; Trochę to wymyśliłem. Nie musi próbować naśladować html - w rzeczywistości jest to punkt wyjścia od zera. Ogromną zaletą byłoby to, że `(text ...)` i `(create-link ...)` nie są częścią podstawowego języka, który przeglądarka musiałaby zrozumieć. Przeglądarka musiałaby tylko zrozumieć „bezpieczny” Clojure (taki, który nie może wyczyścić dysku twardego) i być w stanie rysować i odtwarzać muzykę oraz słuchać klawiatury i myszy i podobnych rzeczy, a także wszystkiego innego - rysowania tekstu, odtwarzania wideo , wyświetlanie pola kombi i interakcja z nim odbywałoby się w starannie zaprojektowanej bibliotece. Dlaczego wybrałem Clojure? Jest to mały język, który może wiele zdziałać, a filozofia budowania skomplikowanych programów z prostych bloków konstrukcyjnych jest bardzo atrakcyjna. Myślę, że możliwość obsługi jednego potężnego języka, takiego jak Clojure, wystarczyłaby, aby osiągnąć wszystko, co mogą osiągnąć Html i Html5, CSS, JavaScripts, Silverlight i Flash. Nieco styczna dyskusja – myślę, że to samo dotyczy LaTeX-a – można by ją przerobić z Clojure jako podstawowym językiem, a plik źródłowy byłby pełnowymiarowym programem, który wypluwa PDF lub ps podczas wykonywania. Rozumiem, że zaczynanie od zera jest BARDZO TRUDNE, ponieważ współczesna przeglądarka ma mnóstwo przydatnych funkcji. Jednak rozpoczęcie od czystej bazy może się opłacić. Co myślisz o tym szalonym pomyśle? Zdaję sobie sprawę, że odpowiedzi byłyby prawdopodobnie subiektywne ze względu na charakter tego pytania, ale nadal jestem ciekaw, co o tym myślisz.


title: Jaki jest najłatwiejszy i najtańszy sposób dystrybucji aplikacji firmowej Apple iOS?

text: Pracuję jako programista w firmie, z którą współpracuję musi wdrożyć aplikację, którą wykonałem u swojego klienta. Liczba klientów to 3, a każdy klient ma około 100 iPadów. Teraz moje pytanie brzmi: * Jakie różne sposoby możemy użyć, aby bezproblemowo wdrożyć i dystrybuować aplikację? * Jak dobry jest AppCentral do dystrybucji aplikacji?


title: Moja organizacja jest stosunkowo niewielka; jak mogę postępować zgodnie z ISO9000/1 w ramach najlepszych praktyk?

text: Pracuję dla firmy <60 osób. Rozumiem, że większe firmy zazwyczaj posiadają certyfikat ISO9000/9001 w celu zapewnienia jakości. Rozumiem również, że dla firmy mojej wielkości taka certyfikacja nie jest opłacalna. Jednak nadal można argumentować, że w ramach najlepszych praktyk zapewniania jakości, uważam, że próba przestrzegania norm ISO i tak ma sens, przynajmniej na tyle, na ile jest to rozsądnie praktyczne. Czy mam rację we wszystkich tych wierzeniach? Jeśli wszystkie powyższe informacje są prawidłowe, czy istnieją jakieś „wysokie punkty”, które byłyby szczególnie korzystne dla firmy mojej wielkości, lub któreś części standardów, które wydają się mniej istotne?


title: Czy ktoś może wyjaśnić, jak działa GUI i kiedy powinienem zacząć z niego korzystać?

text: Uczę się C++ od około miesiąca i zanim przejdę dalej, chciałbym wyjaśnić to żmudne pytanie, które ciągle mam. Wiem, co to jest GUI, ale tak naprawdę nie wiem, jak to działa, a może przykłady popularnych? Chociaż wiem, że programowanie wiersza poleceń to podstawa, myślę, że fajnie byłoby bawić się z GUI. Chociaż mam około 3 miliony innych pytań, uratuję je :D


title: Czy Interactive to termin oznaczający aplikację internetową, która szybko reaguje na użytkownika?

text: Tylko krótkie pytanie o atrybut Web Application, jeśli responsywny (co wynika głównie z projektowania stron internetowych) oznacza witrynę, która dostosowuje się do różnych rozmiarów ekranu, to najbliższy termin, jaki mogę znaleźć dla Web Application, która jest wysoce „responsywna” na dane wprowadzane przez użytkownika (kliknij , dotyk itp.) jest interaktywny? Można to nazwać „natywnym” doświadczeniem lub wspaniałym doświadczeniem użytkownika, ale uważam, że jest to nadal zbyt niejasne. Oto, co mam w tej chwili: **Responsive Web Application** odnosi się do aplikacji internetowych, które przyjmują responsywny design, tj. zmienia układ na różnych rozmiarach ekranu, aby zwiększyć doświadczenie użytkownika (podobno). **Interaktywna aplikacja internetowa** odnosi się do aplikacji internetowej, która ma w sobie dużą interaktywność, czyli elementy, które mogą otrzymywać dane wejściowe użytkownika i odpowiednio na nie reagować. **Natywna aplikacja internetowa** odnosi się do aplikacji internetowych, które oferują taką samą szybkość i wydajność jak aplikacje natywne (zarówno oprogramowanie komputerowe, jak i natywne aplikacje mobilne). Mogłem przegapić właściwy termin, czy chciałbym mieć w tym udział?


title: Odrzucanie ćwiczeń z programowania ograniczonego czasowo podczas rozmowy kwalifikacyjnej

text: Podczas ostatnich rozmów kwalifikacyjnych natknąłem się na kilka scenariuszy programowania. 1. Zaimplementuj kolejkę w C# tylko przy użyciu tablic. Zadzwoń, aby pobrać element, wyjmie pierwszy element z kolejki (napisz na papierze w 15 minut) Podejście: Zaimplementowane na czas.Weź elementy z indeksu 0 z pozostałymi elementami przesuniętymi do góry.Umieść elementy w lastindex. 2. Zaimplementuj program do tworzenia drzewa folderów z opcjami dodawania do niego węzłów i wyświetlania drzewa w console.console. Nie należy używać żadnych wbudowanych kolekcji/biblioteki (kod na komputerze w 45 minut). Podejście: Wdrożone na czas z drzewem zaimplementowanym za pomocą listy, a przechodzenie odbywa się za pomocą rekurencji. W obu scenariuszach moje rozwiązania nie były odpowiednie i zostałem odrzucony. Rozumiem wady rozwiązania, ponieważ zrobiłbym to inaczej, gdybym miał wystarczająco dużo czasu. Pierwsze rozwiązanie nie powinno tasować tablicy, a drugie nie powinno wykonywać rekurencji (subiektywnej). Ale nie jestem pewien, czy to było dla mnie sprawiedliwe. Były to zarówno sytuacje presji, ponieważ jest to związane z czasem, a problemy były dla mnie jak „nowe” (nie do końca, ale nie spotkałem się z takimi problemami w pracy przez ostatnie 10 lat, zawsze używamy wbudowanych kolekcji). W zwinnym rozwoju oceniamy naszą pracę z dużym naciskiem na jakość i w ogóle, nie jestem pewien, w jakim momencie testy związane są z czasem. Dałbym kandydatowi problem bez limitu czasowego. Chciałbyś poznać opinię społeczności. Jak sobie z tym poradzić w następnej instancji. Co powiesz na odmowę wykonania jakichkolwiek testów ograniczonych czasowo podczas rozmów kwalifikacyjnych oferujących wykonanie tego, jeśli nie jest to ograniczone czasowo?


title: Tworzę generator raportów, jak mam go uruchomić?

text: Rozpocząłem więc projekt generowania raportów dla naszego systemu. Są to raporty, które dostarczamy naszym klientom końcowym i są one tak wyspecjalizowane, że żaden istniejący system nie jest w stanie ich wygenerować. Nie jest to jednak problem, generator działa dobrze. Dla uproszczenia oparłem go na rozwiązaniu ASP.NET, które generuje HTML, który przeciskam przez phantomjs, aby wygenerować PDF z wynikiem. To również działa dobrze. Jest to jednak operacja jednorazowa. W tej chwili mam plik .BAT, który uruchamia phantomjs z określonym adresem URL, co generuje mój PDF. Muszę jednak stworzyć jakiś system kolejkowy, aby generowanie raportów odbywało się automatycznie, gdy są zamawiane. System zamawiania jest częścią starego systemu, który ma zostać odnowiony, ale „Nie teraz” (TM). W tej chwili zamówienia są umieszczane w tabeli SQL, z kolumną „status” mówiącą, czy jest wygenerowana, czy nie. To, czego szukam, to pomysły na system do uruchamiania tych raportów, a być może w przyszłości nawet łatwo przejść na "prawdziwy" system oparty na kolejce (RabbitMQ lub podobny). Nie jestem zablokowany do żadnego języka/frameworku, o ile jest stabilny w systemie Windows i może komunikować się z SQL Server. (Najlepiej znam C# i JS). Myślałem o zrobieniu tego za pomocą C#, ale nie jestem do końca pewien, co do solidności wyłuskiwania do phantomjs.. (Nie jestem pewien co do niezawodności wyłuskiwania do czegokolwiek jako krytycznej operacji biznesowej;) )


title: Jakie podejście do organizacji kodu źródłowego pomaga poprawić modułowość i separację API/Implementacji?

text: Niewiele języków jest tak restrykcyjnych jak Java ze standardami nazewnictwa plików i strukturą projektu. W tym języku nazwa pliku musi być zgodna z klasą publiczną zadeklarowaną w pliku, a plik musi znajdować się w strukturze katalogów zgodnej z pakietem klasy. Mam mieszane uczucia co do takiego podejścia. Chociaż nigdy nie muszę zgadywać, gdzie znajduje się plik, wciąż jest wiele pustych katalogów i sztucznych ograniczeń. Istnieje kilka języków, które definiują wszystko o klasie w jednym pliku, przynajmniej zgodnie z konwencją. C#, Python (chyba), Ruby, Erlang itp. Powszechnością w większości tych języków jest to, że są one zorientowane obiektowo, chociaż to stwierdzenie może być prawdopodobnie odrzucone (na liście jest już jeden język inny niż OO). Wreszcie, jest całkiem sporo języków, głównie z rodziny C, które mają osobny plik nagłówkowy i implementacyjny. W przypadku C myślę, że ma to sens, ponieważ jest to jeden z niewielu sposobów na oddzielenie interfejsu API od implementacji. Wydaje się, że w przypadku C ta funkcja jest wykorzystywana do promowania modułowości. Jednak w przypadku C++ sposób dzielenia plików nagłówkowych i implementacyjnych wydaje się raczej wymuszony. Nie otrzymujesz takiego samego czystego oddzielenia API, jak w C, i jesteś zmuszony dołączyć pewne prywatne dane w nagłówku, które wolałbyś zachować tylko w implementacji. Istnieje wiele języków, które mają koncepcję, która pokrywa się z interfejsami, takimi jak Java, C#, Go itp. Niektóre języki wykorzystują coś, co wydaje się hackiem, aby zapewnić tę samą koncepcję, jak C# przy użyciu czystych wirtualnych klas abstrakcyjnych. Jeszcze inni tak naprawdę nie mają koncepcji interfejsu i polegają na wpisywaniu "kaczki" - na przykład Ruby. Ruby ma moduły, ale bardziej przypominają one mieszanie zachowań w klasie niż definiowanie sposobu interakcji z klasą. W terminologii OO interfejsy są potężnym sposobem na zapewnienie separacji między klientem API a implementacją API. Więc spieszyć się i zadać pytanie, z punktu widzenia osobistego doświadczenia: * Czy oddzielenie nagłówka od implementacji pomaga w pisaniu bardziej modularnego kodu, czy też przeszkadza? (pomaga określić język, do którego się odnosisz) * Czy ścisła nazwa pliku do schematu nazw klas w Javie pomaga w utrzymaniu, czy jest to niepotrzebna struktura ze względu na strukturę? * Co byś zaproponował, aby promować dobrą separację API/wdrożeń i utrzymanie projektu, jak wolałbyś to robić?


title: Najlepsze praktyki dotyczące platformy .Net: najczęstsze błędy powodowane przez refaktoryzację, nieostrożność i nowicjuszy

text: Jakie są najczęstsze błędy wprowadzane przez refaktoryzację, nieostrożność i nowicjuszy? Chciałbym poprosić doświadczonych programistów, aby podzielili się swoim doświadczeniem i wymienili błędy, które wprowadzali, gdy byli niedoświadczeni. W swojej odpowiedzi napisz nagłówek wymieniający **rodzaj błędu pogrubioną czcionką** , następnie kilka łamania linii, a następnie wyjaśnienie, przyczynę błędu i na koniec naprawę.


title: Literackie programowanie, dobra/zła metodologia projektowania

text: Niedawno odkryłem koncepcję programowania piśmiennego. I uznałem to za dość intrygujące. Jednak nie spotkałem się z twierdzeniami, że jest to zły sposób na zbudowanie programu. Wydaje się, że nie obejmuje wielu miejsc. Nawet tutaj nie mogłem znaleźć żadnych pytań na ten temat. Moje pytanie **nie** dotyczy jego wad ani sposobów postępowania z dokumentacją. Uważam, że dokumentacja jest efektem ubocznym tego, co oznaczałoby dla przepływu piśmiennego programowania. Wiem, że projekt był pierwotnie przeznaczony do łatwej dokumentacji, a także koncepcji przepływu programowania _forward_. Koncepcja podzielenia problemu na małe problemy zdaniowe wydaje się być naprawdę genialnym pomysłem. Ułatwi to zatem zrozumienie przebiegu programu. Konsekwencją literackiej metody projektowania jest również to, że liczba wymaganych funkcji będzie ograniczona do wyobraźni programisty. Zamiast definiować funkcję do określonego zadania, można ją utworzyć jako „złom” w metodzie piśmiennej. Spowodowałoby to automatyczne wstawienie kodu zamiast oddzielnej kompilacji funkcji i późniejszego wymagania etapu optymalizacji kompilacji międzyproceduralnej w celu uzyskania równoważnej szybkości. W rzeczywistości pierwsza próba Donalda E. Knutha wykazała gorszy czas wykonania właśnie z tego powodu. Wiem, że kompilatory można do tego wiele zrobić, ale to nie moja sprawa. Więc chciałbym uzyskać informację zwrotną, dlaczego należy uważać to za złą/dobrą metodologię projektowania?


title: Czy posiadanie stałych publicznych jest „złe”?

text: Czy to: public MojaKlasa { public const string SomeString = "SomeValue"; } gorzej niż to: public MojaKlasa { public static string SomeString { get{ return "SomeValue";}} } Do obu można się odwoływać w ten sam sposób: if (someString == MojaKlasa.SomeString) ... Drugi ma jednak ochronę bycia własnością. Ale naprawdę, o ile to lepsze niż stała? Wciąż poznawałem niebezpieczeństwa związane z posiadaniem pól publicznych. Więc kiedy zobaczyłem kod używający tych stałych w polach publicznych, natychmiast zabrałem się do refaktoryzacji ich do właściwości. Ale w połowie zacząłem się zastanawiać, jakie korzyści daje posiadanie właściwości statycznych nad stałymi. Jakieś pomysły?


title: Czy funkcje biblioteki C generalnie naśladują styl języka asemblera Intela?

text: Patrzę na podstawową funkcję strcpy. Jest to char *strcpy( char *dest, const char *src ); Co przypomina mi asembler: `MOV DEST, SRC`


title: Jak uniknąć bycia ofiarą pedanta składni na StackOverflow?

text: Albo po prostu mam pecha, bardzo się mylę, albo na StackOverflow jest coraz więcej pedantów trolujących. Wiemy, że programiści są pedantyczni (to pytanie), zwłaszcza w stosunku do nie-programistów. Ale jako programista, gdy próbujesz pomóc innym, odpowiadając na pytania na StackOverflow, co robisz, aby uniknąć wywoływania w komentarzach, odrzucania głosów lub angażowania się w bezużyteczną kłótnię z powodu drobnego niedopatrzenia lub, co gorsza, czegoś, celowo nie zwracał się, aby nie pomylić pytającego zbyt dużą ilością informacji? **Przykład** : Niedawno ktoś kłócił się ze mną o mój wybór ucieczki w wyrażeniu regularnym: wybrałem `(?<=\=)` (spojrzenie w tył), podczas gdy najwyraźniej `(?<==)` to było wszystko, co było potrzebne. Czułem, że moja odpowiedź jest bezpieczniejsza (nie miałem dobrego odniesienia, aby natychmiast dowiedzieć się, czy ucieczka jest niepotrzebna, czy konieczna we wszystkich odmianach wyrażeń regularnych) i pomyślałem, że jest to mniej mylące dla kogoś nowego w wyrażeniu regularnym. Czy powinienem: * Być mniej dokładny, aby w mojej odpowiedzi było mniej możliwych punktów spornych? * Obciążyć pytającego większą ilością informacji, niż może potrzebować w danym momencie? * Po prostu to zignoruj? _**Uwaga** : Nie zadałem tego pytania na meta.SO, ponieważ nie mówię o działaniu SO, jestem zainteresowany tym, jak poprawić odpowiedzi na pytania programistyczne w ogóle, dla wszystkich zaangażowanych - pytający i inni eksperci, którzy mogą również odpowiadać lub czytać moją odpowiedź._


title: Dlaczego różne metody testowania są tak sprzeczne?

text: Jest wielu bardzo mądrych i doświadczonych ludzi, którzy twierdzą, że jeśli nie napiszesz testów jednostkowych, to Twój kod będzie pełen błędów i Bóg zabije wszystkie kociaki. Z drugiej strony inna grupa mądrych ludzi powie, że testowanie jednostkowe przynosi efekt przeciwny do zamierzonego. Więc jeśli napiszesz unittest to kocięta też będą przeklęte. Słyszałem też bardzo dobre argumenty po obu stronach za i przeciw testom integracyjnym, za i przeciw TDD. Ponadto istnieje wiele popularnych projektów open source. Niektóre z nich korzystają z automatycznych testów, a niektóre nie. Dlaczego więc różne metody testowania są tak sprzeczne? _Aktualizacja 1_ W komentarzach napisałem kilka przykładów nastrojów anty-jednostkowych. Jednak, żeby było jasne, istnieje DUŻO bardzo udanych projektów open source, które nie mają testów jednostkowych. Oznacza to, że nie wszyscy uważają, że testy jednostkowe są przydatne. _Aktualizacja 2_ Gdy tylko zaczniemy omawiać jakiś konkretny fragment testowania (na przykład mockowanie, które pojawiło się w komentarzach), natychmiast próbujemy odróżnić bycie wartością podstawową od wartości średniej. Jednak samo testowanie nie jest wartością podstawową. To tylko sposób na zmniejszenie kosztów wsparcia, a to z kolei po prostu sposób na zwiększenie rentowności. Tak więc, jak ja to widzę - testy jednostkowe to coś w rodzaju 4 połączeń z dala od zysku. _Aktualizacja 3_ Ciekawe, że liczba ludzi w "zrównoważonym" obozie jest dość mała. Większość ludzi ma na ten temat naprawdę zdecydowane zdanie.


title: Jak mogę zbudować projekt C# (instalator) dla wielu środowisk?

text: Chciałbym zaproponować rozwiązanie problemu naszych firm z budowaniem spójnych instalatorów dla różnych środowisk. Nasz obecny proces polega na zbudowaniu instalatora do testów, wykonaniu testów, zaktualizowaniu konfiguracji aplikacji, skompilowaniu instalatora do produkcji. Niestety doprowadziło to w przeszłości do problemów, w których instalator nie był prawidłowo aktualizowany itp. Co mogę zasugerować jako najlepszą praktykę, aby złagodzić ten problem?


title: Czy powinienem wskazać błędy ortograficzne/gramatyczne w czyimś kodzie?

text: Przeglądając kod współpracownika, natknąłem się na błędy ortograficzne w nazwach funkcji, a także błędy gramatyczne, takie jak „doesUserHasPermission()” zamiast „doesUserHavePermission()” w nazwach funkcji i zmiennych. Czy mam mu to wskazać? A może jestem zbyt pedantyczny, żeby to zauważyć?


title: Wysyłam moją pierwszą bibliotekę klasową. Jakieś problemy, o których muszę wiedzieć?

text: Jestem programistą stron internetowych, który zamierzam odblokować osiągnięcie „Opublikowana biblioteka pierwszej klasy” w mojej karierze i pocę się jak kule (dosłownie – nie spałem całą noc, denerwując się). Chętnie zapoznam się z doświadczeniami społeczności, aby sprawdzić, czy ktoś ma jakieś sugestie lub zalecenia, aby upewnić się, że wszystko pójdzie tak gładko, jak to możliwe. Czy są jakieś szczegóły lub wskazówki, o których muszę wiedzieć? Coś specjalnego w procesie budowania, co może wrócić i mnie ugryźć? Oto, w którym jestem: * Biblioteka jest testowana jednostkowo i ma około 97% pokrycia kodu * API jest dobrze udokumentowane i zostały utworzone dokumenty xml dla obsługi intellisense * Upewniłem się, że akcesory klas publicznych/prywatnych są dokładne i poprawne. To samo dotyczy wszystkich pobierających/ustawiających * Obsługa błędów nie jest tak zgrabna, jak bym chciała, ale nie mogę się doczekać terminu i zaakceptowałem, że na razie jest to „tak dobre, jak będzie” * Brak przyjaznego logowania. Debug.Writeline był intensywnie używany... Niedawno dowiedziałem się, że jest to odzwierciedlenie mojego braku doświadczenia :( Twoja rada jest bardzo wdzięczna! Biblioteka będzie używana do generowania raportów. Standardowy kapelusz - łączy się z bazą danych tylko do odczytu, wykonuje obliczenia , formatuje i wysyła dane do strumienia odpowiedzi. * * * Zostałem wybrany jako dodatkowy zasób do wypełnienia dla jednego z programistów, który zrezygnował, a to zadanie zostało mi przydzielone jako projekt „zaciąć zęby”. Biblioteka klas jest zostanie udostępniona innym programistom w firmie do wykorzystania podczas pisania kodu produkcyjnego.


title: Wybór języka podstawowego dla platformy internetowej na dużą skalę

text: Teraz trochę pracowałem z PHP i ASP.NET, a także bawiłem się kilkoma innymi językami do tworzenia stron internetowych. Jestem teraz w punkcie, w którym muszę zacząć budować platformę backendową, która będzie miała możliwość obsługi dużego zestawu aplikacji i próbuję dowiedzieć się, który język chcę wybrać jako mój podstawowy język. Kiedy mówię język podstawowy, mam na myśli język, w którym będzie większość kodu zaplecza. Nie oznacza to, że inne języki nie będą używane, ponieważ przypuszczam, że będą, ale chcę, aby większość kod (90%-98%) w 1 języku. Chociaż widzę, że korzystam z języka, który jest najlepszy do pracy, posiadanie 15% w php, 15% w ASP.NET, 5% w perlu, 10% w pytonie, 15% w ruby itp… wydaje się bardzo dla mnie zły pomysł (nie wspominając o bezproblemowej integracji wszystkiego, prawdopodobnie dodałoby to trochę narzutu). Jeśli zamierzasz budować platformę internetową na dużą skalę, która musi obsługiwać wiele aplikacji od podstaw, jaki język byś wybrał jako swój podstawowy język i dlaczego?


title: Czy prośba o próbkę kodu po ogłoszeniu oferty pracy jest powszechna?

text: Zaoferowano mi ustnie pracę, a kierownik nalegał, abym zaczął następnego dnia od rozmowy kwalifikacyjnej; więc dwa dni po rozmowie. Zostawiłem rozmowę niepewną oferty, do której kierownik zadzwonił do mnie później tego samego dnia i zgodziłem się objąć stanowisko. W tym momencie powiedziano mi, że następnego dnia dostanę list z ofertą i zacznę następnego dnia. Później tego wieczoru poproszono mnie o próbkę kodu. Jeszcze nie otrzymałem listu z ofertą. Zajmuję się głównie kontraktowaniem i zazwyczaj odpowiadam na pytania techniczne lub pokazuję próbki na początku procesu i uważam tę sytuację za nieco dziwną. Czy to powszechna praktyka?


title: Tabela historii bazy danych / Tabela śledzenia

text: Obecnie chcę ustrukturyzować tabelę śledzenia/historii w następujący sposób: * PrimaryKey - ID * OtherTableId - fk * fieldName - nazwa pola do śledzenia * OldValue * NewValue * UserName * CreateDateTime Więc zasadniczo chcę mieć tabelę, która będzie śledzić inną historii tabel, przechowuj nazwę kolumny zmienionego pola z nową i starą wartością. Moje pytanie brzmi, czy ktoś może w tym podziurawić? Ponadto, jaki jest najłatwiejszy sposób, aby w kolumnie fieldName wpisać tylko nazwę kolumny z tabel jej śledzenia? Obecnie moje opcje to mieć enum w budowanym przeze mnie serwisie lub utworzyć inną tabelę statusów i zmienić pole fieldName na fk. Jakieś lepsze pomysły? **Edytuj** Cel: Obecnie są tylko 2 pola, które chcemy śledzić. Jedno pole zostanie wyświetlone na stronie internetowej, aby wyświetlić historię, drugie pole będzie dostępne tylko dla jednego działu i będą mieli dostęp do widoku bazy danych, którą mogliby przeszukać. Będą pytać tylko o to jedno pole, aby uzyskać informacje o tym, kto zmienił pole i co. Z tego powodu chcieliśmy ustawić go tam, gdzie pole bazy danych definiuje kolumnę tabeli, zamiast mieć dokładną kopię historii rekordów tabeli. Chcemy tylko dwóch śledzonych pól z możliwością dodawania lub usuwania pól w przyszłości. Dziękuję!


title: w Objective-C wartością typu double/float może być tylko NAN, INFINITY i normalna liczba?

text: Wiedziałem, że wartość double lub float może być nie tylko wartością normalną (-1,3, 0, 1,0, 2,3), ale także NAN i INFINITY w Objective-C. Czy istnieją inne specjalne wartości oprócz NAN i INFINITY dla wartości podwójnej/zmiennej w celu C?


title: Bycie odpowiednim i możliwym do wynajęcia poza moją domeną.

text: Jestem świeżo upieczonym absolwentem college'u i zostałem zatrudniony do pracy dla giganta oprogramowania biznesowego. Sama praca jest świetna z niesamowitymi dodatkami i przyzwoitą płacą. Jest też radość z pracy nad rozwojem podstawowych produktów, budowaniem czegoś, z czego będą korzystać miliony ludzi. Jednak ogromnym problemem jest to, że większość naszego rozwoju wykonujemy w zastrzeżonym języku, który nie jest używany w żadnej innej firmie zajmującej się opracowywaniem produktów poza tym miejscem. Jedynymi innymi firmami posługującymi się tym językiem są nasi partnerzy i klienci, którzy chcieliby wdrożyć/dostosować oprogramowanie w swoich firmach/firmach klientów. Obawiam się, że praca tutaj przez dłuższy czas może sprawić, że nie będę mieć znaczenia jako programista poza firmą. Chociaż idealnie można by powiedzieć, że tworzenie oprogramowania to tworzenie oprogramowania, a język nie ma znaczenia, faktem jest, że większość firm zatrudnia na podstawie wcześniejszych doświadczeń i w tym kontekście moje doświadczenie wynosi 0. Moje obawy są poparte faktem, że wskaźnik rotacji w tej firmie jest znacznie niższy niż w innych, więc można znaleźć wiele osób, które nie zmieniły pracy w ciągu ostatnich 10-15 lat. To jest świetne z punktu widzenia firmy i są z tego bardzo dumni. Jestem jednak pewien, że większość ludzi nie odchodzi, bo są związani, ponieważ poza firmą ich umiejętności są nieistotne. Naprawdę kocham programowanie i chcę pozostać programistą w rozwoju produktu, a nie menedżerem. Co powinienem zrobić, aby zostać zatrudnionym w nowej firmie, jeśli i kiedy zdecyduję się odejść z obecnej pracy? Z góry dziękuję.


title: Dlaczego tak wiele przestrzeni nazw zaczyna się od com

text: Zauważyłem, że wiele firm używa przestrzeni nazw „odwróconej nazwy domeny” i jestem ciekaw, skąd ta praktyka się wzięła i dlaczego jest kontynuowana. Czy trwa to tylko z powodu rutynowej praktyki, czy może jest tu jakiś wybitny koncept architektoniczny, którego może tutaj brakować? Zwróć także uwagę na pytania takie jak: http://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java to rodzaj odpowiedzi na moje pytanie, ale nie 100 % (Jeśli to sprawi, że poczujesz się lepiej, jestem naprawdę ciekawy, czy powinienem go używać do moich wysiłków w zakresie przestrzeni nazw javascript, ale jestem bardziej ciekaw, kiedy i dlaczego, i to powinno pomóc mi w uzyskaniu odpowiedzi na javascript, nota bene: "window") Przykład tej praktyki rozszerzającej się na foldery i pliki: ![http://imgur.com/jtdXo](http://i.imgur.com/jtdXo.jpg)


title: Szukasz darmowej bazy danych klucz-wartość NoSql, aby odciążyć Java HashMap

text: Posiadam Java HashMap z kluczem String i wartością POJO w długo działającej aplikacji, a zajmuje ona spory kawałek pamięci (ponad 500mb, a ta liczba ma rosnąć - zgaduję, że przekroczy 2GB w dwa do trzech miesięcy); jest to używane do zapamiętywania wyników kosztownych obliczeń (zwykle 2-4 sekundy, ale do 20 sekund), więc chciałbym przenieść HashMap na dysk twardy zamiast zastępować go [Soft/Weak]HashMap z oczekiwaniem, że wyszukiwanie zewnętrzne będzie tańsze niż ponowne przeliczenie; Chciałbym również, aby mapa była trwała na wypadek awarii aplikacji. Moje jedyne doświadczenie z bazami danych NoSql dotyczyło DynamoDB, ale wolałbym darmową bazę danych, zamiast ograniczać się do darmowej warstwy DynamoDB. * Aplikacja jest napisana w Javie, więc potrzebuję Java API dla bazy danych * Aplikacja działa na jednej maszynie, bez oczekiwania migracji do architektury rozproszonej * Wolę, aby baza danych była mocno spójna, ale ostateczna spójność jest dopuszczalne * Maszyna posiada tradycyjny (nie-SSD) dysk twardy * Klucze mapy są ciągami (długość < 40), a ich wartościami są POJO; w razie potrzeby mogę serializować POJO do ciągów za pomocą Jacksona przed ich utrwaleniem, chociaż wolałbym, aby baza danych obsługiwała to * POJO należą do kilku różnych podklas ze wspólną abstrakcyjną klasą nadrzędną; wszystkie pola znajdują się w klasie nadrzędnej (podklasy tylko metody add/override, wszelkie dodawane pola są przejściowe) * Nie ma żadnych wymagań bezpieczeństwa - dane, które będę przechowywać nie muszą być chronione hasłem lub cokolwiek * Wartości w bazie danych nie wygasną (zajmę się nieaktualnymi wartościami w kodzie aplikacji - jeśli POJO.someProperty != someOtherProperty to przeliczę POJO)


title: Dlaczego Google blokuje użytkownikom dostęp do ich lokalnego systemu plików w Chromium?

text: Pytanie dotyczy tego problemu w Chromium. Jest oznaczony jako „Nie da się naprawić”. Czy widzisz jakiś powód, aby zablokować lokalny plik html przed dostępem do innego lokalnego pliku html znajdującego się w tym samym folderze?


title: Czy powinno być więcej naukowych badań skuteczności różnych rozreklamowanych pomysłów w tworzeniu oprogramowania?

text: Wydaje się, że wszyscy domyślnie zakładają, że wolny rynek pomysłów w końcu zbiegnie się w kierunku „właściwych” rozwiązań w tworzeniu oprogramowania. Nie zakładamy tego w medycynie – uznajemy, że tam potrzebne są eksperymenty naukowe – więc dlaczego mielibyśmy to zakładać w tworzeniu oprogramowania? Nie opowiadam się za regulacją programistów. Jest za wcześnie, żeby o tym mówić. Zanim opieka zdrowotna mogła zostać skutecznie uregulowana, konieczne były eksperymenty naukowe w celu ustalenia, które terapie działały, a które nie. Inżynieria oprogramowania nie ma nawet tej naukowej bazy dowodowej, aby wspierać reklamowane metodologie, takie jak Scrum lub Agile, lub paradygmaty programowania, takie jak programowanie funkcjonalne lub MDA. Ponieważ (a) duże projekty oprogramowania są odpowiedzialne za wiele niepowodzeń projektów rządowych (przy czym rząd Wielkiej Brytanii jest naprawdę dobrym przykładem) (b) Agile i Lean są wykorzystywane poza tworzeniem oprogramowania, w tym w sektorze publicznym [oczywiście Lean powstał poza tworzeniem oprogramowania] ma to coraz większe znaczenie polityczne. Na niepowodzenia projektów rządowych może mieć wpływ niestosowanie najlepszej praktyki, a nawet użycie czegoś, co niektórzy ludzie uważają za najlepszą praktykę, ale co w rzeczywistości pogarsza sytuację lub po prostu kosztuje, nie pomagając zbytnio. Pytanie brzmi, dlaczego ta baza dowodów naukowych (dla wszystkich intencji i celów) nie istnieje? Istnieje duża społeczność open source, z której można czerpać uczestników badań. Obawiam się, że twórcy oprogramowania o zamkniętym kodzie źródłowym i wewnętrzni będą traktować z podejrzliwością wszelkie badania oparte na tej społeczności, obawiając się (być może słusznie), że wyniki się nie przełożą. A firmy, które opracowują oprogramowanie zamknięte i własne, prawdopodobnie nie byłyby skłonne, aby ich programiści brali udział w jakichkolwiek badaniach naukowych. Po pierwsze, prawdopodobnie zajęłoby to trochę czasu od wykonania pracy; po drugie, wyniki mogą być kłopotliwe dla firmy lub wyższej kadry kierowniczej.


title: Jak stworzyć narzędzie do generowania kodu dla Visual Studio

text: Pracuję nad narzędziem, które wygeneruje trochę kodu C#, który mam nadzieję przyda się szerszemu gronu odbiorców. To narzędzie odczyta zestaw i plik tekstowy zawierający pewne dane, a następnie wygeneruje kilka klas C#. Najprostszym sposobem na to jest oczywiście po prostu utworzenie konsoli exe, która może być skojarzona z typem pliku, w tym samym duchu, co narzędzie do generowania kodu dla plików XSD. Ale obawiam się, że będzie to trochę trudne do zintegrowania. Wolałbym mieć coś, co wydaje się lepiej zintegrowane. Mimo to nadal będę tworzyć aplikację konsolową, ponieważ jest to praktycznie darmowy produkt uboczny i może być przydatna do ciągłej integracji. Zestaw, o którym mowa, będzie zwykle zestawem **bieżącym**, który zostanie wygenerowany podczas kompilacji kodu, który, jak podejrzewam, zwykle będzie również zestawem, w którym chcesz hostować wygenerowane pliki. Czy istnieje sposób na zrobienie tego rodzaju narzędzi? Czy zamierzam napisać rozszerzenie do studia wizualnego właśnie w tym celu? Jeśli prosta wersja exe jest drogą do zrobienia, czy jest jakiś sposób na ułatwienie użytkownikowi, oferując pomoc w instalacji po drodze, aby była jak najłatwiejsza.


title: Radzenie sobie z okropnymi szacunkami

text: Ostatni projekt, nad którym pracowałem, okazał się mocno niedoceniony przez architekta. Szacunki zostały odrzucone o co najmniej 500%. Niestety zostałem dołączony do projektu po podpisaniu kosztorysu z klientem. Jako starszy programista szybko zorientowałem się, że specyfikacja funkcjonalna i techniczna. zawierał ogromne luki i niejasności. W rezultacie poczułem się zmuszony zwołać pilne spotkanie z dyrektorami biznesowymi i technicznymi, aby zapoznać ich z rzeczywistością. Jako przede wszystkim programista uważam tę sytuację za bardzo stresującą i trudną. "Biznes" zarzucił IT, że jest niekompetentny i jako posłaniec otrzymałem kilka "kul". Klient zagroził, że zlikwiduje konto, jednak na dzień dzisiejszy projekt jest wciąż nieukończony i nie jestem już bezpośrednio w nim zaangażowany. Architekt był miłym facetem społecznie, ale na podstawie tego epizodu był albo po prostu niekompetentny, albo na jego ocenę wpłynęła duża presja sprzedażowa/biznesowa. A więc, jako programiści, jakie masz doświadczenia z tego rodzaju sytuacjami i jak radzisz sobie z nimi radzić?


title: Jak określić stawkę godzinową?

text: Przy wycenie usługi lub produktu powszechną praktyką jest nie tylko naliczanie opłat za włożony wysiłek i związane z tym koszty + marżę, ale od dostarczonej wartości w dół. Jako niezależny konsultant, jak ustalasz cenę swojej pracy? Jak wygląda proces ustalania stawki godzinowej niezależnego programisty? Jeśli go masz, jaka jest Twoja stawka godzinowa i jak doszedłeś do tej liczby? Jakie czynniki wziąłbyś pod uwagę. Czy proces ustalania stawki godzinowej opiera się wyłącznie na równoważeniu popytu z podażą, aby podaż (ty i twój czas) nie została przytłoczona? Kiedy jest dobry czas na podniesienie stawek? Czy są projekty, w których musiałeś płacić wyższe niż inne projekty? Jeśli tak, proszę podać przykłady. Czy zmieniasz stawkę godzinową w zależności od tego, jaki rodzaj rozwoju robisz? (na przykład programowanie .net więcej, a mniej dla programowania php) Czy ustalasz stawki godzinowe w zależności od rodzaju działalności klienta? Jeśli tak to jak? Jeśli znasz jakieś istotne artykuły lub materiały na temat opłat za usługi programistyczne, opublikuj je.


title: Trafność HTML5: nadszedł czas?

text: Wygląda na to, że większość zleceń, które otrzymuję, i większość Internetu, nadal używa standardowego HTML (powiedzmy HTML 4) + CSS + JS. Czy ktoś ma jakąś wizję tego, gdzie HTML5 jest standardem, **szczególnie jeśli chodzi o akceptację i rozpowszechnianie?** Łatwo jest znaleźć informacje o niespójnościach między implementacjami HTML5 i tak dalej. To, o czym chcę wiedzieć, to znaczenie HTML5.


title: Dlaczego przerwania muszą być wyłączone, gdy znajdują się w innym kodzie przerwania?

text: Proste pytanie, które pomoże mi zrozumieć moją klasę systemu operacyjnego... dzięki! Zasadniczo, dlaczego niebezpiecznie jest mieć przerwanie w przerwaniu? (lub wyjątek w wyjątku)


title: Dlaczego jest debata emacs vs. vim?

text: Jestem nowy na całej scenie, więc zastanawiałem się, dlaczego programiści są naprawdę pasjonatami tej debaty? Dziękuję. Czy są one również nazywane „edytorami tekstu”?


title: Czy jest na to licencja open source?

text: Pisałem kod w domu, w wolnym czasie i korzystając z własnej wiedzy i sprzętu, bez umowy lub NDA. Chcę, aby ten kod był otwarty, abym mógł go używać w oprogramowaniu, które piszę dla pracodawcy, bez odmawiania sobie prawa do używania go później w domu lub w innym miejscu. Nie jestem pewien, czy stwierdzenie, że jest to „domena publiczna”, pasuje do tego celu, czy też muszę znaleźć licencję open source. Chcę, aby każdy mógł używać kodu w zamkniętym oprogramowaniu własnościowym z zerowymi wymaganiami dotyczącymi dołączania licencji do kodu źródłowego lub binarnego. I chcę zminimalizować ryzyko, że ktokolwiek zostanie pozwany za używanie go. (Zdaję sobie sprawę, że nigdy nie można być w 100% bezpiecznym przed pozwaniem.) Czy istnieje licencja typu open source, która pasuje do tego celu? W jakim stopniu to, co chcę zrobić, jest w ogóle możliwe? Nie miałbym nic przeciwko umieszczaniu licencji w komentarzach w samych plikach kodu, ale to oczywiście nie pasuje do pliku binarnego.


title: Czy spędzanie czasu na Programrs.SE lub Stack Overflow może być substytutem dobrych książek o programowaniu dla osoby nie początkującej?

text: Czy spędzanie czasu (i aktywne uczestnictwo) na Programrs.SE i Stack Overflow może pomóc mi poprawić moje umiejętności programistyczne w stopniu zbliżonym do tego, co pomoże mi poświęcenie czasu na czytanie książki takiej jak Code Complete 2 (która w przeciwnym razie byłaby następna na mojej liście lektur). Ok, może odpowiedź na to pytanie dla kogoś, kto zaczyna programowanie, może być wprost nie, ale dodam, że to pytanie zadaję w kontekście, gdy osoba zna języki programowania, ale chce się poprawić jego umiejętności programowania. Czytałem to pytanie na SO, a także ta książka została polecona przez wielu innych (w tym Jeffa i Joela). Mówiąc konkretniej, dodałbym również, że chociaż programuję w C, Javie, Pythonie itp., ale nadal nie jestem zadowolony z moich umiejętności kodowania i czytając recenzję CC2 zdałem sobie sprawę, że wciąż muszę dużo poprawić . Więc zasadniczo chcę wiedzieć, jaki jest dla mnie najlepszy sposób na poprawę umiejętności programowania - spędzaj więcej czasu na tutaj/SO lub kontynuuj z CC2 i być może przyjedziesz tutaj, kiedy czas na to pozwoli.


title: proces projektowania systemów/oprogramowania,

text: Właśnie stworzyłem swoją pierwszą nietrywialną aplikację na Androida. To był kompletny koszmar. Wpadłem na pomysł, zbudowałem aplikację, zmieniłem swój pomysł i zaimplementowałem wiele informacji od innych na temat nowych funkcji. W sumie moja aplikacja zajęła 10 razy dłużej niż myślę, że powinna, jest prawie niemożliwe, aby zajrzeć do kodu źródłowego i powiedzieć, co się dzieje z klasami, i może mieć nieużywane metody, których nigdy nie będę w stanie do znalezienia... Chciałabym więc zasięgnąć opinii tych z Państwa, którzy mają doświadczenie, jak zaplanować moje projekty na przyszłość. Stworzyłem schemat blokowy (narysowany ołówkiem) planu: ![Schemat blokowy planu](http://i.stack.imgur.com/Nyi2U.jpg) Chciałbym konstruktywną krytykę.


title: Jak mogę pobrać dane z PeopleSoft na żądanie?

text: Pracuję w IT na uniwersytecie i współpracuję z około 5 różnymi wydziałami, aby opracować nowy proces dla studentów, aby mogli aplikować do określonej szkoły na uniwersytecie (nie na uniwersytecie jako całości). Korzystamy z internetowego dostawcy aplikacji dla uczelni i dodajemy pytania kandydatów dotyczące samej szkoły do głównej aplikacji uniwersyteckiej. Obecnie główna aplikacja zasila PeopleSoft. Pracownicy IT budują nową tabelę, w której będą przechowywane tylko dane kandydatów do naszej szkoły. Chcę mieć dostęp do tych danych z PeopleSoft do użytku w aplikacjach zewnętrznych, ale nasi pracownicy IT tak naprawdę nie rozumieją, o co proszę, ponieważ po prostu mówią mi, że mogę mieć dostęp do narzędzi zapytań PS. Problem polega na tym, że nie chcę uruchamiać tylko zapytań ad hoc, chcę mieć możliwość łączenia się z zewnątrz PeopleSoft i pokazywania aktualnych danych w zewnętrznej aplikacji. Nie mogę znaleźć dokumentacji ani uzyskać jednoznacznej odpowiedzi na moje pytanie. Czy PeopleSoft obsługuje dostęp za pośrednictwem interfejsu API usług internetowych lub czegoś podobnego i czy brzmi to dla mnie we właściwym kierunku?


title: Jak zaimplementowano blokowanie połączeń?

text: To może być bardzo proste pytanie. Jestem ciekaw, jak realizowane są blokowanie połączeń. W szczególności, jak się blokują? Czy to tylko thread.sleep?


title: Aplikacja Google. Silnik dla aplikacji RoR i Python

text: Rozumiem, że ta witryna pytań i odpowiedzi jest miejscem docelowym dla programistów i pytania dotyczące hostingu nie są tutaj dozwolone, ale każdy, kto słyszał o aplikacji Google. Engine doskonale zdaje sobie sprawę, że to pytanie dotyczy tylko tej witryny. Aplikacja Google. Silnik obsługuje interpreter Java lub Python. Chcę wiedzieć, jakie aplikacje mogą być hostowane na tym silniku? Jeśli moja aplikacja Python lub RoR wymaga bazy danych, czy ten silnik ją obsługuje? W przypadku aplikacji RoR, jaki interpreter wybrać? Jakie są zalety Google App.Engine w porównaniu z lokalnym środowiskiem IDE?


title: Zapotrzebowanie na inne ramy na rynku. Czy osoba poszukująca pracy powinna iść za nimi?

text: Czytałem o różnych frameworkach dla aplikacji internetowych, takich jak OpenRasta, Django, CodeIgniter itp. Pasją programistów jest zanurzanie rąk w każdej nowej technologii, ale z punktu widzenia osoby poszukującej pracy, jakie jest znaczenie tych nowych brzęczy. Czy dla poszukującego pracy lepiej jest trzymać się standardowych frameworków, takich jak ASP.NET, Rails itp., czy też poświęcać czas na inne frameworki open source?


title: Dlaczego nigdy nie jestem w pełni zadowolony z mojego programu?

text: Odkąd programowałem, nigdy nie byłem w pełni zadowolony z ukończonych projektów. Jasne, robią to, co zamierzałem zrobić, ale zawsze było _coś_ w kodzie, co z perspektywy czasu zrobiłbym inaczej, ale nie chciało mi się go refaktorować. Czy to tylko ja, czy jest to powszechna cecha programowania?


title: Gdzie ustawić model w tym projekcie (wzorzec usługodawcy)?

text: modelujemy aplikację przy użyciu wzorca "Service-Provider", gdzie usługa będzie oferować ogólną funkcjonalność zaimplementowaną przez różnych dostawców zarejestrowanych w serwisie. Obowiązkiem usługi będzie wybór odpowiedniego dostawcy na podstawie określonych warunków. Obecnie posiadamy następujące warstwy: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/QjZXP.png) Co mi się nie podoba w tym podejściu to to, że klient potrzebuje referencji dostawcom, aby uzyskać dostęp do definicji A. Myślę, że normalnie zależności powinny przechodzić tylko z jednej warstwy do jej warstwy poniżej, prawda? Jednym z rozwiązań może być zduplikowanie modelu w warstwie usług, ale oznaczałoby to duplikowanie ... i oczywiście powinniśmy tego unikać: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/h4qlF.png ) Innym rozwiązaniem może być utworzenie pakietu tylko dla modeli, ale może to być przesadą, a także przerywa łańcuch zależności od góry do dołu: ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/k8P3K.png ) Nie jestem zadowolony z żadnego z tych rozwiązań, ale aktualnie nie mam innych. Jak myślisz, czy lubisz jakieś, czy są inne, o których nie pomyślałem? Z góry dziękuję.


title: Czy powinniśmy najpierw wykonać modelowanie relacji encji czy modelowanie obiektowe?

text: Czy podczas tworzenia aplikacji od podstaw powinienem zacząć od modelu zorientowanego obiektowo (OO) czy od modelu relacji encji (ER)?


title: Najlepsze podejście do klienta czatu internetowego w języku Java

text: Próbuję dodać czat do mojej aplikacji internetowej napisanej w Javie. Jakie byłoby najlepsze rozwiązanie w tej sprawie? Czytałem coś o JMS, ale wzorzec pub/sub nie wydaje się być przeznaczony do tego rodzaju zastosowań, a dla wzorca p2p muszę zbudować kolejkę dla każdego użytkownika (to też nie brzmi dobrze) . Co byś zasugerował?


title: Interaktywna witryna szkoleniowa dotycząca języka JavaScript wraz z wyzwaniami związanymi z kodem

text: Kilka miesięcy temu odkryłem fajny kurs o nazwie Rails for Zombies. To świetna strona, która pozwala nam pisać kod i zobaczyć wyniki. To prowadzi nas przez kroki, aby przyspieszyć działanie Rails. Musisz przejść każdy poziom (w tym wyzwania kodowe), zanim przejdziesz na następny poziom, a to ugruntuje Cię w podstawach Railsów. Zastanawiam się, czy istnieje interaktywna witryna z samouczkami dla JavaScript? Taki, który przeprowadzi mnie przez etapy pisania lepszego JavaScriptu i rzuci mi wyzwanie.


title: Języki specyfikacji a testy automatyczne

text: Niedawno słuchałem odcinka Radia Inżynierii Oprogramowania, w którym przeprowadzano wywiad z Leslie Lamport. Jedną z rzeczy, o których mówił, był jego język specyfikacji, TLA+. Zasadniczo wydawał się przekonywać, że w przypadku programów, w których poprawność jest bardzo ważna, musimy dokładnie przemyśleć i sprecyzować przed napisaniem kodu, a TLA+ ma być narzędziem do tego. Powiedział, że zespół w Amazon ostatnio odniósł sukces, używając go. Osobiście piszę testy wykonywalne dla mojego kodu. Postrzegam testy jako specyfikację, która ma ogromną zaletę w postaci **udowadniania**, czy kod jest z nią zgodny. Zakładam, że pan Laport, będąc genialnym i utalentowanym informatykiem, od dawna o tym wiedział i nadal widzi potrzebę swojego języka. Ale dlaczego? Czy formalne języki specyfikacji i testy automatyczne są komplementarne, czy też sprzeczne? Czy nadają się do różnych rodzajów kodu?