title: W jaki sposób mixiny lub cechy są lepsze niż zwykłe dziedziczenie wielokrotne?

text: C++ ma proste dziedziczenie wielokrotne, wiele projektów językowych zabrania go jako niebezpiecznego. Ale niektóre języki, takie jak Ruby i PHP, używają dziwnej składni do robienia tego samego i nazywają to domieszkami lub cechami. Wiele razy słyszałem, że mixiny/cechy są trudniejsze do nadużycia niż zwykłe dziedziczenie wielokrotne. Co konkretnie sprawia, że są mniej niebezpieczne? Czy jest coś, co nie jest możliwe w przypadku domieszek/cech, ale jest możliwe dzięki wielokrotnemu dziedziczeniu w stylu C++? Czy można z nimi natknąć się na problem z diamentami? Wygląda na to, że używamy wielokrotnego dziedziczenia, ale tylko usprawiedliwiamy się, że są to mieszanki/cechy, abyśmy mogli z nich korzystać.


title: Jak drastycznie poprawić pokrycie kodu?

text: Mam za zadanie uzyskać starszą aplikację w ramach testu jednostkowego. Najpierw trochę informacji o aplikacji: jest to baza kodów LOC Java RCP o wielkości 600 000 z tymi głównymi problemami * ogromne duplikowanie kodu * brak enkapsulacji, większość prywatnych danych jest dostępna z zewnątrz, niektóre dane biznesowe również tworzą pojedyncze, więc nie można ich zmieniać tylko z zewnątrz ale także zewsząd. * brak abstrakcji (np. brak modelu biznesowego, dane biznesowe są przechowywane w Object[] i double[][]), a więc bez OO. Istnieje dobry zestaw testów regresji, a sprawny zespół QA testuje i znajduje błędy. Techniki, jak to zrobić, znam z klasycznych książek, m.in. Michael Feathers, ale to za wolno. Ponieważ istnieje działający system testów regresji, nie boję się agresywnej refaktoryzacji systemu, aby umożliwić pisanie testów jednostkowych. **Jak powinienem zacząć atakować problem, aby szybko uzyskać zasięg**, aby móc pokazać postępy kierownictwu (a właściwie zacząć zarabiać na sieci bezpieczeństwa testów JUnit)? Nie chcę wykorzystywać narzędzi do generowania zestawów testów regresji, np. AgitarOne, bo te testy nie sprawdzają, czy coś jest w porządku.


title: Jakie są kluczowe punkty efektywnej pracy z dotychczasowym kodem?

text: Kilka razy widziałem polecaną książkę Working Effectively with Legacy Code. Jakie są kluczowe punkty tej książki? Czy jest coś więcej w radzeniu sobie ze starszym kodem niż dodawanie testów jednostkowych/integracyjnych, a następnie refaktoryzacja?


title: Kontener tylko zasoby w Rails

text: Mam wiele podzielonych na segmenty aplikacji Railsowych, które są ze sobą połączone: * App A * App B * App C Chociaż staram się, aby projekt, taki jak nagłówek i stopka, wyglądały podobnie, ale każda aplikacja ma swój własny arkusz stylów, javascript i obrazy w folderze zasobów. Niektóre z tych zasobów są zduplikowane, np. CSS w stopce. Utrudnia to konserwację. Zastanawiam się, czy mógłbym zrobić coś takiego jak posiadanie aplikacji D, gdzie aplikacje A, B i C po prostu pobierają zasoby z aplikacji D. Więc jeśli muszę coś zmienić, mogę po prostu zmienić zasoby w aplikacji D. Jak czy mogę to osiągnąć?


title: Używaj i zarządzaj zasobami front-end dla sieci Web

text: Jestem początkującym i obecnie rozwijam swego rodzaju cms w PHP. Liczba bibliotek, które potencjalnie możemy wykorzystać w interfejsie użytkownika, jest duża. Mam pytanie dotyczące prawidłowego wyboru, zarządzania i korzystania z bibliotek zasobów front-end. Nie sądzę, że najlepszym rozwiązaniem jest samo uwzględnienie kilku bibliotek front-endowych: <script src="library1" /></script> <script src="library2" /></script> <script src= "library3" /></script> // i niedługo.. A jeśli użyjemy, powiedzmy 20 ? Czy to dobra praktyka, deklarowanie tagów skryptu 20 razy? Obecnie używam `Assetic`, biblioteki php do zarządzania zasobami. Tworzę plik zrzutu (i buforuję go) dla każdego żądania do mojej aplikacji przed załadowaniem szablonu. Mój kontroler (ja używam MVC) mógłby wyglądać mniej więcej tak: function indexAction() { // jakaś logika $assetManager = $this->get('assetic'); // pobierz usługę assetic $css = $assetManager->createAsset(array( '@bootstrap', '@jquery_ui' // i wiele innych bibliotek )); $assetContent = $css->dump(); // utwórz adres URL zasobów, nie przejmuj się tym $data['stylesheet'] = $this->createAssetUrl($assetContent); return $this->render('szablon-indeksu', $data); } A w szablonie (indeks-szablon) mógłbym umieścić coś w rodzaju: <link href="<?php echo $stylesheet ?>" rel="stylesheet" type="text/css"> Robię to w prawie każdym kontroler, aby dołączyć kilka zasobów do wyświetlenia. Ale nie jestem pewien, czy to najlepsza metoda. Czy jest jakaś lepsza praktyczna metoda, której nie znam?


title: Gdzie i kiedy powinienem używać RESTful

text: Kiedy powinienem używać REST? W jakich aplikacjach internetowych? Pod względem java w jakiej sytuacji RESTful byłby lepszy niż zwykłe serwlety/JSP? Wyobraź sobie, że mam stronę internetową, na której użytkownicy mogą przesyłać dwa rodzaje plików i tworzyć obiekty, które są później zapisywane w DB (bieżące zadania itp.). Jedyne, co użytkownicy mogą pobrać, to te dwa rodzaje plików. Czy RESTful będzie dobrym podejściem w tego rodzaju usługach?


title: Jak wyglądał kod maszynowy dla architektury 4-bitowej?

text: Nie wiem, jak 4-bitowa instrukcja może wystarczyć do zrobienia czegoś, więc przeczytałem o Intel 4004 i mówi, że używał 8-bitowych instrukcji i wtedy mogę zrozumieć, jak kod i liczby mają wystarczającą ilość cyfr. Czy to prawda, że nigdy nie było żadnych instrukcji 4-bitowych, a systemy 4-bitowe używają instrukcji 8-bitowych? A że opcode i dwie liczby w instrukcji można wykonać w 8 bitach, a nie w 4 bitach?


title: Ręczne wstrzykiwanie zależności lub fabryka abstrakcyjna

text: Zaczynamy używać wstrzykiwania zależności w dość dużym, interaktywnym programie. Jest jeszcze wcześnie, ale mam wrażenie, że większość wstrzykiwanych obiektów będzie chcieć, aby dane środowiska wykonawczego były przekazywane do ich konstruktorów. Wcześniej używałem DI tylko w aplikacjach internetowych, gdzie budowanie wszystkiego w katalogu głównym kompozycji nie stanowiło problemu. Podczas pracy z danymi środowiska uruchomieniowego wydaje się, że opcjami jest użycie ręcznego wstrzykiwania lub fabryk abstrakcyjnych. Czy jest coś ważnego do rozważenia przy podejmowaniu decyzji między tymi dwoma, czy też sprowadza się to głównie do osobistych preferencji? Używam Ninject z rozszerzeniem factory, więc przejście do trasy fabrycznej nie jest zbyt uciążliwe. Jeśli jednak skończymy z fabrykami w każdej klasie, czy to znak, że robimy coś złego? Czy powinniśmy preferować ręczne wstrzykiwanie, gdy moc kontenera IoC nie jest potrzebna? Czy może to po prostu oznaczać, że nadużywamy wstrzykiwania zależności?


title: Czy powinienem używać OOCSS w motywie CSS?

text: Słyszałem o OOCSS jakiś czas temu, ale nigdy się do tego nie przyjrzałem. Dzisiaj to zrobiłem i pomyślałem o konsekwencjach zastosowania OOCSS do prostego motywu CSS. Jednym z problemów, o którym pomyślałem, jest to, że ze swojej natury OOCSS zachęca do DRYness, a co za tym idzie do używania wielu zwięzłych klas, które powinny być zastosowane do elementów przez programistę HTML. Jako motyw CSS zakładałbym, że nie jest to coś wystarczająco znaczącego, aby programista robił wszystko, aby dodać określone klasy do swoich elementów podczas pisania HTML: <button class="blue rounded no-border $etc" >Przycisk</button> w przeciwieństwie do: <button>Przycisk</button> Być może programiści HTML mogliby napisać dodatkowy kod, chociaż wydaje się, że po stronie HTML jest tyle samo powtarzającego się kodu, ile byłoby bez OOCSS. Czy więc OOCSS nie jest uniwersalną metodologią pisania kodu CSS, jak w tym przykładzie? Czy nie rozumiem rzeczy właściwie?


title: Jak obsłużyć drobnoziarniste uprawnienia ACL oparte na polach w usłudze RESTful?

text: Próbowałem zaprojektować RESTful API i otrzymałem odpowiedzi na większość moich pytań, ale jest jeden aspekt uprawnień, z którym się zmagam. Różne role mogą mieć różne uprawnienia i różne reprezentacje zasobu. Na przykład administrator lub sam użytkownik może zobaczyć więcej pól we własnej reprezentacji użytkownika w porównaniu z innym mniej uprzywilejowanym użytkownikiem. Osiąga się to po prostu poprzez zmianę reprezentacji na zapleczu, tj.: podjęcie decyzji, czy uwzględnić te pola. Dodatkowo niektóre akcje mogą być wykonywane na zasobie przez niektórych użytkowników, a nie przez innych. Osiąga się to poprzez podjęcie decyzji, czy uwzględnić te elementy działań jako łącza, np.: edytuj i usuń łącza. Użytkownik, który nie ma uprawnień do edycji, nie będzie miał linku do edycji. Obejmuje to prawie wszystkie przypadki użycia uprawnień, ale jest jeden, którego nie do końca rozgryzłem. Istnieją pewne scenariusze, w których dla danej reprezentacji obiektu wszystkie pola są widoczne dla dwóch lub więcej ról, ale tylko podzbiór tych ról edytuję określone pola. Przykład: { "person": { "id": 1, "name": "Bob", "wiek": 25, "zawód": "programista", "telefon": "555-555-5555", "description": "Przydałoby się trochę światła słonecznego.." } } Biorąc pod uwagę 3 użytkowników: administratora, zwykłego użytkownika i samego Boba (także zwykłego użytkownika), muszę być w stanie przekazać interfejsowi, że: Administratorzy mogą edytować wszystkie pola, sam Bob może edytować wszystkie pola, ale zwykły użytkownik, chociaż może wyświetlać wszystkie pola, może edytować tylko pole opisu. Z pewnością nie chcę, aby klient musiał podejmować determinację (a nawet, jeśli o to chodzi, mieć jakiekolwiek pojęcie o zaangażowanych rolach), ale potrzebuję sposobu, aby backend przekazał klientowi, które pola można edytować. Nie mogę po prostu użyć kombinacji reprezentacji (pola zwracane do przeglądania) i linków (niezależnie od tego, czy link do edycji jest dostępny) w tym scenariuszu, ponieważ jest to bardziej drobnoziarniste. Czy ktoś rozwiązał to elegancko bez dodawania logiki bezpośrednio do klienta?


title: Jak wyjaśnić wskaźniki do programisty Java/VB

text: Piszę grę, a mój przyjaciel zaoferował mi pomoc, ponieważ jest to RPG i zajmie dużo czasu, aby "skryptować" część gry. Problem polega na tym, że IMO nie jest aż tak dobrym programistą :( (tutaj dodaj wojnę płomieni). Programował tylko w Javie i VB i ciągle mówi mi naprawdę głupie rzeczy, takie jak „Dlaczego nie przeciągniesz i upuść zdarzenia onClick” do zaprojektuj mój interfejs użytkownika, gdy używam DirectX.Próbowałem wyjaśnić wskaźniki do niego, ale jego odpowiedź brzmiała, jeśli jest to tylko zmienna, która przechowuje adres pamięci, dlaczego po prostu nie użyjesz int?Tworzę instancję klasy ataku i daj stworowi wskaźnik do tego, więc jeśli kilka stworzeń używa tego samego ataku, jest tylko jedna instancja.Ciągle powtarza, dlaczego nie umieścić instrukcji if w klasie stworzeń dla każdej klasy ataku i ustawić prawdę dla tych, które są tam. Programował głównie w VB i trochę w Javie, aby nauczyć się OOP.Jak mam mu wyjaśnić zaawansowane koncepcje C++, takie jak wskaźniki i zarządzanie pamięcią?Po prostu nie rozumie, że nie ma super funkcji, takich jak form.show w C++.


title: Android: Nie możesz eksperymentować na własną rękę?

text: Zacząłem uczyć się programowania aplikacji na Androida kilka dni temu, z wcześniejszą znajomością C/C++, HTML i CSS. Oto sytuacja, z którą mam do czynienia Wielokrotnie: uczę się z serii samouczków wideo, po każdym filmie lub po kilku filmach mówię sam: wykorzystajmy to, czego się właśnie nauczyłem w prostej (i „bezsensownej”) aplikacji, która Do tej pory zrobiłem oglądając tutoriale. Zaczynam go wdrażać, ale potem po kilku minutach zdaję sobie sprawę, że nie mogę tego zrobić, ponieważ nie znam kilku innych składni związanych z konkretną rzeczą, (lub) nie wiem, czy te rzeczy można połączyć z tymi innymi rzeczy za pomocą . (kropka). Niezależnie od tego, co spróbuję, po uruchomieniu aplikacji pojawia się błąd w zaćmieniu lub komunikat „Przepraszam... aplikacja com.example.simple niespodziewanie się zatrzymała...”. Potem przeszukuję StackOverflow, Google i dowiaduję się, że to, co chcę zaimplementować, wymaga poznania jeszcze kilku klas, składni i stworzenia kilku dodatkowych klas java. Nie jestem w stanie sama eksperymentować. Jest to normalne? Czy to TRUDNY SPOSÓB, w którym należy się uczyć? Czy powinienem najpierw nauczyć się Javy, a potem wrócić do Androida - czy to byłoby pomocne?


title: Przepływ pracy Rubiego w systemie Windows

text: Przeszukałem trochę i nie znalazłem odpowiedzi, której szukam. Nie sądzę, że jest to duplikat tego pytania. Uważam, że Windows może być odpowiednim środowiskiem programistycznym w oparciu o mieszankę odpowiedzi na to pytanie. Od około roku rozwijam się w Ruby (głównie w Railsach, ale nie do końca) dla osobistych projektów na Macbooku Pro, jednak ten komputer stanął w obliczu przedwczesnej śmierci i został zastąpiony fajnym komputerem z systemem Windows 7. Rozwój Rubiego wydawał się prawie naturalny na Macu po przeprowadzeniu pewnych badań i skonfigurowaniu typowego stosu. Moje środowisko zawierało wtedy standardowe (podobne do Linuksa) elementy wbudowane w OSX, Text Wrangler, Git, RVM i in. Niezbyt duże odstępstwo od tego, co zakładają „wielbiciele”. Teraz konfiguruję mój nowy system Windows, aby kontynuować ten rozwój. Jak wyglądałoby moje środowisko programistyczne? Czy powinienem po prostu zagłębić się i uruchomić Linuksa na maszynie wirtualnej? Idealnie bym programował w natywnym systemie Windows. Znam instalator Windows Ruby. Wydaje się przyzwoity, ale nie jest tak ładny jak RVM w świecie osx/linux. Mercurial/Git są dostępne, więc zakładam, że grają na stosie. Czy programuje się całkowicie w systemie Windows? Czy można uruchomić serwer WWW na maszynie wirtualnej z systemem Linux i używać go jako platformy testowej podczas programowania w systemie Windows? Czy to wszystko w maszynie wirtualnej? Jak wygląda standardowe środowisko programistyczne Windows Ruby i jak wygląda przepływ pracy? Jaki byłby typowy etap dodawania nowej funkcji do trwającego projektu i jak wyglądałby stos technologii?


Dlaczego często mówi się, że przypadki testowe należy wykonać przed rozpoczęciem kodowania? Jakie są jego plusy i jakie minusy, jeśli nie słuchamy tej rady? Co więcej, czy ta rada odnosi się do testów czarnoskrzynkowych, białych skrzynek, czy obu?


Dlaczego wiele narzędzi do przeglądu kodu nie wydaje się być świadomych składni lub zapewnia bardziej dogłębną analizę zmian? Czy to po prostu zbyt trudne? Uważam, że jest to główna dziura w zestawach narzędziowych większości programistów. Z tego, co widziałem, co wprawdzie jest niewiele, narzędzia do przeglądu kodu po prostu porównują kod wiersz po wierszu, a wiele z nich nie jest nawet w stanie wykonać podświetlania składni. Czy istnieje rozwiązanie, które jest wystarczająco inteligentne, aby oferować przegląd/porównywanie kodu na poziomie pliku i metody? Jednym z prostych problemów, jakie mam, jest to, że metody są ponownie uporządkowane w kodzie, a moje oprogramowanie do przeglądania kodu całkowicie się psuje, ale powinny być w stanie zrobić o wiele więcej. Interesują mnie opinie/wiedza innych na temat narzędzi do przeglądania/porównywania kodu.


title: Jakie są zalety i wady posiadania typu CaseIn sensitiveString w Javie?

text: Kusi mnie, aby stworzyć `końcową klasę CaseIn sensitiveString implementującą CharSequence`. To pozwoliłoby nam zdefiniować zmienne i pola tego typu, zamiast używać zwykłego „ciągu”. Możemy również mieć m.in. `Map<CaseIn sensitiveString, ?>`, `Set<CaseIn sensitiveString>` itd. Jakie są zalety i wady tego podejścia?


title: Kto powinien płacić za poprawki/błędy?

text: Więc właśnie zacząłem pracować jako freelancer zarówno w tworzeniu desktopów i stron internetowych, jak i ten klient, który już zaakceptował moją pracę i zapłacił mi, wraca do mnie za każdym razem, gdy znajdzie błąd itp. I znalazłem się na tym, że spędzam więcej czasu, niż myślałem, naprawiając je darmowy. Czy to w porządku, czy powinienem zacząć pobierać opłatę za wsparcie? Jaki jest najlepszy sposób radzenia sobie z poprawkami w rzekomo zaakceptowanej i ukończonej pracy?


title: Aktualizowanie bazy danych SQL Server w środowisku Team

text: Pracujemy w środowisku Visual Studio przy użyciu TFS. Gdy programiści otrzymają najnowszy kod źródłowy, zawiera on kopię skryptów „aktualizacji” sql do bazy danych aplikacji. Wyzwaniem jest aktualizowanie lokalnych kopii DB. Gdy zmiany w bazie danych są wprowadzane przez innego programistę, szukamy sposobu, aby: 1. wskazać innym programistom, że ich wersja bazy danych jest nieaktualna 2. wskazać innym programistom kolejność, w jakiej powinni uruchamiać aktualizację skrypty Poszukujemy propozycji. W punkcie numer 2 użyłem liczb takich jak 01_DropCreate_TableX, 02_Create_StoreProcedure_X. itp. DH


title: Wybór dwóch mocy dla rozmiarów/limitów

text: Nawyk, który zaobserwowałem wśród programistów, a czasem sam podświadomie przejawiam, polega na wybieraniu potęg dwójki (lub potęg dwójki minus jeden) podczas definiowania schematu bazy danych, bufora danych itp. Czy dokonałeś tej samej obserwacji ? Jeśli nie jestem rażąco subiektywny, pytania uzupełniające brzmią: Czy nadal istnieją uzasadnione powody, aby używać mocy dwójki [minus jeden] w nowoczesnych technologiach? Zakładając, że te nawyki są w większości pozostałościami dawnych ograniczeń technologicznych, zastanawiam się tylko, jakie były kiedyś rodzaje ograniczeń. Niektóre potencjalne powody, o których mogę pomyśleć, to optymalizacja struktury danych i adresowanie bitów. Zastanawiam się, co jeszcze tam było/jest...


title: Wielomodułowy projekt internetowy ze Springiem i Maven

text: Załóżmy, że mamy kilka projektów, _każdy_ zawierający pewne zasoby sieciowe (np. strony html). parent.pom +- web (war) +- web-plugin-1 (jar) +- web-plugin-2 (jar) ... Powiedzmy, że `web` to wdrażalny projekt `war`, który zależy od znanego, ale do wyboru, zestaw wtyczek. Jaki jest dobry sposób na skonfigurowanie tego za pomocą `Spring` i `maven`? 1. Niech wtyczki będą projektami typu „war” i używaj **słabej** obsługi mavens do importowania innych projektów typu „war” 2. Umieść wszystkie zasoby sieciowe dla wszystkich wtyczek w projekcie „web” 3. Dodaj wszystkie zasoby sieciowe do ścieżka klas wszystkich zależności `jar` `web-plugin-*` i niech spring czyta pliki z odpowiedniej ścieżki klasy? 4. Inne? Wcześniej zacząłem używać `#1`, ale semantyka `kopiuj-wklej` zależności `war` w maven jest okropna.


title: Jak znaleźć prace nad oprogramowaniem, które angażują bezpośrednio końcowego użytkownika końcowego?

text: Pracuję w tworzeniu oprogramowania od 15 lat i chociaż mam spore osobiste osiągnięcia i duże doświadczenie, zawsze czułem się oderwany od mężczyzny/kobiety na ulicy, codziennej osoby, jak to wpływa na ich życie na wiele sposobów: * technologie: wbudowane oprogramowanie, ukryte, rzeczy niewidoczne dla zwykłych ludzi. Lub technologia procesowa wspierająca wytwarzane produkty * wielkość systemów, czyli wiele miejsc pracy, podzielonych, praca jest abstrakcyjna, żadna osoba nie widzi całego obrazu * organizacje: duże, z działami zajmującymi się różnymi obszarami, oprogramowaniem, sprzętem , marketing, sprzedaż, obsługa klienta * lokalizacje i godziny: pozamiejskie parki biznesowe z dala od reszty społeczeństwa, stałe lokalizacje, nieelastyczne: codziennie 9-5 To wydaje mi się typowe dla firm, w których pracowałem i zobacz gdzie indziej. To prawda, że są pozytywy, takie jak sama technologia i zwykle bycie wśród współpracowników wysokiego kalibru, ale powyższe punkty frustrują mnie w branży, ponieważ odrywają pracę od jej znaczenia. Jak można: * zmienić te rzeczy w dotychczasowej pracy lub je zrekompensować? * znaleźć inną pracę, która ich unika i łączy się z końcowym użytkownikiem? Projekty stanowisk skupiają się raczej na treści stanowiska i wymaganiach technicznych niż na tym, jak praca ma na celu zaspokojenie potrzeb użytkownika końcowego, ma to znaczenie.


title: Czy byłoby to równoznaczne z tworzeniem gałęzi podczas pracy z odłączoną głową w Git?

text: Powiedzmy, że wypróbowałem wersję inną niż HEAD. Powiedzmy, że zrobiłem kilka commitów i tak powstała anonimowa gałąź. Później mogłem sprawdzić inną gałąź, więc teraz jedynym sposobem na dostanie się do moich zatwierdzeń jest `reflog`. Jeśli zrób to: >> git reflog | grep -i mycommit sha1hash >> ponowne dołączanie gałęzi git >> git cherry-pick hash_of_commits >> git checkout master >> ponowne dołączanie git merge Czy jest to odpowiednik: >> git reflog | grep -i mycommit sha1hash >> ponowne dołączanie gałęzi git sha1hash >> git checkout master >> ponowne dołączanie git merge Co się dzieje z odłączonymi zatwierdzeniami głowy, ponieważ myślę, że dzięki wyselekcjonowaniu będą one istnieć w 2 miejscach. Czy na zawsze pozostaną w moim repozytorium?


title: Przemyślenia na temat rozwoju przy użyciu maszyn wirtualnych

text: Będę pracował jako kierownik ds. rozwoju dla startupu i zasugerowałem, abyśmy używali maszyn wirtualnych do rozwoju. Nie mówię o tym, że każdy programista ma pulpit z maszynami wirtualnymi do testowania/rozwoju, mam na myśli stojak serwerowy, na którym wszystkie maszyny wirtualne są zarządzane i mają programiści pracują z microPC (czy ktoś z ChromeOS?) lokalnie, a nawet zdalnie z domu komputer. Dla mnie korzyścią jest to, że jest niezwykle skalowalny, tańszy na dłuższą metę, łatwiejszy w zarządzaniu i że wykorzystujemy maksymalny potencjał sprzętu. Jeśli chodzi o wady, nie mogę wymyślić żadnego konkretnego showstoppera poza tym, że będziemy potrzebować kogoś do konfiguracji/utrzymania tej konfiguracji. Miałem nadzieję, że niektórzy z was mogą mieć podobną konfigurację w swoim miejscu pracy i być w stanie uwzględnić swoje opinie. Dziękuję.


title: Boss chce przekonwertować wszystkich programistów na zwirtualizowane komputery stacjonarne

text: > **Możliwy duplikat:** > Przemyślenia na temat rozwoju przy użyciu maszyn wirtualnych Mój szef wychwalał wykorzystanie zwirtualizowanych pulpitów dla wszystkich naszych programistów w firmie – około 100 osób. Uważam, że to okropny pomysł i nie wyobrażam sobie, żeby żadna inna firma nie postępowała w podobny sposób. Wierzy, że może znacznie szybciej uruchamiać Worda i Outlooka na maszynie wirtualnej hostowanej na serwerze i jakoś uwierzył, że będzie to działać równie dobrze w przypadku tworzenia oprogramowania. Mam co do tego poważne wątpliwości. **Czy ktoś inny może podać mi jakieś obiektywne dane techniczne i/lub biznesowe na temat tego scenariusza, które można wykorzystać, aby go zniechęcić?** Widzę wirtualizację pulpitu jako realną opcję dla pracowników zadaniowych, którzy siedzą przed MS Office lub aplikacja LOB przez cały dzień, ale w przypadku tworzenia oprogramowania widzę to jako ogromny potencjalny błąd. Ja na przykład nie interesuje mnie powrót do głupich terminali i ślepa wiara w operacje mające na celu dostrojenie serwerów i sieci do naszych potrzeb. Jeśli taki system zostanie wprowadzony, mogę bardzo dobrze opuścić firmę... ponieważ widzę, że polityka zdradza wyraźny brak zrozumienia i umniejszenie postrzegania wartości w tym, co robią twórcy...


title: Prowadząc zespół, czy jestem apodyktyczny?

text: Jestem w bardzo dziwnej sytuacji. Jestem "liderem zespołu" w roli dla konkretnego projektu, Senior Software Engineerem w zawodzie. W moim zespole mam 4 programistów, z których jeden pełni podobną rolę w innym projekcie, ale teraz mój otrzymał priorytet, więc pracuje nad moim. Mam też 2 testerów, z których jeden jest Managerem. Kolejnym członkiem zespołu jest „Reprezentant Klienta”, który jest częścią zupełnie niepowiązanego działu. Mam też Menedżera, który jest bezpośrednio nade mną i myślę, że również nad Menedżerem Testów, który jest częścią mojego zespołu... choć nie jestem tego taki pewien. Próbowałem uzyskać wyjaśnienie, dlaczego moja rola jest dokładnie kilka razy. Ciężko mi było zorientować się, gdzie zaczyna się i kończy mój autorytet, jeśli w ogóle go mam. Odpowiedzią, z którą obecnie pracuję, jest to, że jestem „kierownikiem technicznym” zespołu. Wydaje się to oznaczać, że mam władzę nad decyzjami technicznymi dotyczącymi architektury, projektowania i standardów procesu/kodowania, ponieważ odnoszą się one do samego kodu produktu. Dzisiaj coś wyszło i wyniki kodu, które przekazałem jednemu z członków mojego zespołu, zostały pokazane reszcie firmy podczas naszego spotkania Scrum. Osoba reprezentująca klienta robi popis. Pokazano dziś coś, z czym naprawdę się nie zgadzam i nikt nigdy nawet nie zapytał mnie, czy chcę mieć coś do powiedzenia w tym, co się wydarzyło. Krótko mówiąc, aby umożliwić użytkownikowi wyświetlanie wartości w raporcie w następujący sposób (jednostki „doc”, jednostki projektowe, zaokrąglone, niezaokrąglone) udostępniono pola dostępu dla każdej permutacji. W ten sposób mamy wartość w zaokrąglonych jednostkach dokumentacji, zaokrąglonych jednostkach projektu, niezaokrąglonych jednostkach dokumentacji, niezaokrąglonych jednostkach projektu. Każdy rekord, z którym użytkownik będzie chciał pracować, ma wiele takich wartości i każda z nich jest w ten sposób permutowana. Naprawdę tego nienawidzę. Osoby, którym to pokazaliśmy, chcą się upewnić, że interfejs API, którego używamy do tworzenia raportów, jest taki sam, jak sposób, w jaki robimy takie rzeczy, jak eksportowanie danych do programu Excel. Niestety, teraz nabieramy tempa w kierunku, który moim zdaniem jest naprawdę, bardzo zły. Na następnym spotkaniu trochę się zdenerwowałem i zapytałem dwie osoby, które to zrobiły: „Dlaczego nie byłem zaangażowany w tę decyzję?” To kwestia, która ciągle się pojawia i mam trudności z tym, żeby ludzie w zespole, którym mam kierować, pytali mnie, czy chcę się zaangażować. Czasami tego nie robię i myślę, że cokolwiek wymyślą, będzie w porządku. Innym razem to robię. Chyba że ludzie mnie o to zapytają, chociaż trudno nawet wiedzieć, że dzieje się coś, co wymaga mojego wkładu, a oni nie dają mi takiej możliwości. Niestety, mój autorytet nie rozciąga się na mówienie ludziom: „Następnym razem, gdy wyjdziesz i zrobisz coś takiego na własną rękę, nawet ze mną nie rozmawiasz, zostaniesz zdyscyplinowany”. To kwestia „PR”, która jest jednym z obszarów, który wyraźnie nie leży w zakresie moich uprawnień. Właściwie to mi pasuje, ponieważ nie chcę mieć do czynienia z tego rodzaju gównem, jeśli ktoś inny jest chętny. Jednak dzisiaj mój menedżer, w obecności wszystkich (co, jak sądzę, jest częściowo moją winą za poruszanie tego w ten sposób) powiedział mi, że nie mogę brać udziału w każdej decyzji i muszę delegować. Oczywiście myślę, że mam rację… zawsze to robię. Nie mówię rzeczy, które uważam za BS. Myślę, że należało do mnie zwrócić się w tej sprawie i zapytać, czy mam lepszy pomysł. Moim kierunkiem w tym zakresie byłoby po prostu podjęcie decyzji o JEDNEJ wartości do udostępnienia na teraz, ponieważ były to w rzeczywistości bardzo początkowe etapy nowej funkcji i omówienie opcji zapewnienia dalszego dostępu w przyszłości, jeśli będzie to pożądane. Nigdy nie zaaprobowałbym ani nie zarekomendował obecnej implementacji i naprawdę nie sądzę, by ujrzała ona światło dzienne. Pytanie brzmi, czy to ja jestem nierozsądny? * * * Cóż, rozmawialiśmy o tym we dwoje i zgodziliśmy się, że oboje „puściliśmy piłkę” i wydaje się, że jesteśmy na tej samej stronie. Poniedziałkowe poranki... Postaramy się upewnić, że moja rola w zespole jest jasna i że tak, to ja będę decydować, kiedy nastąpi zmiana projektu lub zadania, która musi się wydarzyć; Dostaję propozycję i albo zgadzam się, albo decyduję, że muszę zajrzeć głębiej. Jest też kilka innych rzeczy, nad którymi mogę popracować, aby upewnić się, że wiedzą, że mogą do mnie przyjść.


title: Rozwiązanie klucza licencyjnego w aplikacji internetowej, jakie jest najlepsze podejście?

text: Jestem zakłopotany prośbą mojego przełożonego. Pracuję dla małego startupu i wykonaliśmy aplikację webową za stałą stawkę z umową serwisową dla DUŻO większej firmy. Znając przerażające historie o tym, jak duże firmy będą płacić rachunki tylko do ostatniej sekundy, zdecydowaliśmy, że chcielibyśmy się zabezpieczyć poprzez możliwość licencjonowania tej aplikacji internetowej w taki sposób, że jeśli nie otrzymamy zapłaty, oprogramowanie przestanie działać. Widziałem to wcześniej w przypadku aplikacji komputerowych, jednak będzie to aplikacja internetowa, którą będą hostować wewnętrznie i nie będzie dostępna z Internetu. Jakie jest najlepsze podejście do tego, chcielibyśmy, aby zajmował mało miejsca i chcielibyśmy mieć możliwość odnowienia klucza licencyjnego, który dystrybuowali. Czy ktoś zrobił coś podobnego? Czy jesteśmy całkowicie szaleni? Czy ktoś ma lepsze sugestie?


title: Konkretne powody, dla których początek lewego górnego rogu jest lepszy/gorszy niż lewy dolny początek grafiki komputerowej

text: Badałem, dlaczego źródła większości aplikacji graficznych znajdują się w lewym górnym rogu ekranu. Ze wszystkiego, co przeczytałem, są tam zlokalizowane, bo tam właśnie działo elektronowe na lampie katodowej zaczęłoby skanować, od góry do dołu. _Poza tym historycznym powodem, czy jest jakaś użyteczność umieszczania pochodzenia w lewym górnym rogu w porównaniu (co jest dla mnie bardziej naturalne) w lewym dolnym rogu?_ Z mojej wiedzy nie mogę wymyślić żadnego powodu, dla którego jedno pochodzenie może być bardziej przydatne niż drugie. Jeśli chodzi o matematykę, nie sądzę, że powinno to mieć jakiekolwiek znaczenie, o ile relacja między pikselami / punktem na obrazie pozostaje taka sama, powinieneś być w stanie zastosować dowolną transformację matematyczną w ten sam sposób, używając dowolnego pochodzenia. W szczególności szukam przykładów, które pokazują, dlaczego lepiej byłoby używać jednego pochodzenia nad drugim, a nie tylko z tego powodu, że „tak było wcześniej” lub „tak jest łatwiej, ponieważ urządzenie x go używa” ponieważ wszystkie te powody odnoszą się do przyczyny historycznej.


title: Alternatywy dla używania właściwości Id/Name z elementami niebędącymi danymi wejściowymi w HTML

text:
Migruję serwis używający Javacsript/HTML/PHP przy użyciu kodu wielokrotnego użytku javascript, w pewnym momencie dostrzegłem możliwość uproszczenia kodu w funkcjach używających prawie tego samego kodu. **Powiedzmy** : _Chcę wyświetlić wartości z bazy danych w różnych elementach `<span>` lub `<div>` przy użyciu AJAX. wszystkie wymienione elementy używają tego samego układu do wyświetlania danych, różnica tkwi jedynie w id elementu lub minimalnej procedurze walidacji danych._ **To wszystko.** Szybko jednak doszedłem do wniosku, że nie mieć sposób na odwołanie się do określonego elementu w HTML bez użycia właściwości `id`, a jedyną alternatywą, która moim zdaniem była użycie właściwości `name`. Wiem, że ta właściwość dotyczy tylko `<input>` w `<form>`, a ponieważ te elementy nie są `<input>` ta reguła nie _stosuje_ ( _wiem, że w HTML reguły nie są wymuszane_ ) . Podstawową ideą jest zaprzestanie używania identyfikatorów, aby mój kod był bardziej użyteczny. Aby przejść z tego:
 +---
 | +--- +---
 +---
 +---
 | +--- +---
 +--- do tego:
 +-- -
 | +--- +---
 +---
 +---
 | +--- +---
 +--- Robiąc mój kod w ten sposób, myślę, że złamie zgodność z HTML5 zasady. Wiem, że to nie jest problem _per se_ , ponieważ rozwiązałem to w nieortodoksyjny sposób, ale chcę usłyszeć, jaki jest najlepszy sposób radzenia sobie z takimi sytuacjami. Wiem, że istnieje HTML związany z pytaniem — alternatywa dla identyfikatora, gdy identyfikator jest unikalny tylko w określonym zakresie? ale w tym przypadku nie chcę zajmować się klasami i regułami CSS, ponieważ bieżąca strona używa dużo CSS i jest dużo funkcji JavaScript na stronie, która manipuluje klasą CSS, używając Class jako rodzaju identyfikatora, ja myślę, że doprowadziłoby to do pewnych błędów (ale nie tak pewny).


title: Dlaczego ktoś miałby używać adnotacji @Native?

text: link : http://download.java.net/jdk8/docs/api/java/lang/annotation/Native.html W Javie 8 będą adnotacje @Native. > Wskazuje, że do pola definiującego wartość stałą można się odwoływać > z kodu natywnego. Adnotacja może być użyta jako wskazówka przez narzędzia generujące > natywne pliki nagłówkowe do określenia, czy plik nagłówkowy jest wymagany, a jeśli > to jakie deklaracje powinien zawierać. Problem to: **Po co?** Czy masz pomysł, które problemy zostałyby skutecznie rozwiązane przez tę funkcję?


title: Zalecany wzorzec projektowy do obsługi wielu algorytmów kompresji dla hierarchii klas

text: Dla wszystkich ekspertów OOD. Jaki byłby zalecany sposób modelowania następującego scenariusza? Mam pewną hierarchię klas podobną do następującej: class Base { ... } class Derived1 : Base { ... } class Derived2 : Base { ... } ... Następnie chciałbym zaimplementować inną kompresję/ silniki dekompresyjne dla tej hierarchii. (Mam już kod dla kilku strategii, które najlepiej obsługują różne przypadki, takie jak kompresja plików, kompresja strumienia sieciowego, kompresja starszego systemu itp.) Chciałbym, aby strategia kompresji była podłączana i wybierana w czasie wykonywania, jednak nie jestem pewien, jak do obsługi hierarchii klas. Obecnie mam ściśle powiązany projekt, który wygląda tak: interface ICompressor { byte[] Compress(Base instance); } class Strategy1Compressor : ICompressor { byte[] Compress(Bazowa instancja) { // Wspólne elementy kompresji dla klasy bazowej ... // if(instancja jest pochodna1 ) { // kompresja dla klasy Pochodna1 } if(instancja jest pochodną2 ) { // Kompresja dla klasy Derived2 } // Dodatkowa logika kompresji do obsługi innych wyprowadzeń klas ... } } Tak jak jest, za każdym razem, gdy dodaję nową klasę pochodną dziedziczącą po Base, musiałbym zmodyfikować wszystkie strategie kompresji, aby uwzględnić ta nowa klasa. **Czy istnieje wzorzec projektowy, który pozwala mi to rozdzielić i umożliwić łatwe wprowadzenie większej liczby klas do hierarchii bazy i/lub dodatkowych strategii kompresji?**


title: Najlepsze praktyki dotyczące przechowywania kodu HTML pochodzącego z pól tekstowych do bazy danych?

text: Mam aplikację, która pozwala użytkownikom edytować określone fragmenty tekstu, a następnie wysłać je pocztą e-mail. Moje pytanie brzmi, jaki jest najlepszy sposób przechowywania tego w bazie danych Microsoft SQL Server. W tej chwili mam dwie tabele, jedną przechowującą dane HTML, a drugą przechowującą dane w postaci zwykłego tekstu. Kiedy użytkownik zapisuje informacje, zastępuje znaki nowej linii znakami br i umieszcza je w tabeli zawierającej HTML, a następnie umieszcza zwykły tekst w drugiej tabeli. W ten sposób pole tekstowe zawiera znaki nowej linii, gdy przechodzą do edycji, ale tabela zawierająca dane HTML ma BR. To wydaje się głupim sposobem robienia rzeczy. Jaka byłaby najlepsza praktyka? Dziękuję.


title: Udostępniasz logikę biznesową aplikacji webowej po stronie serwera i po stronie klienta?

text: Szybkie pytanie dotyczące współdzielonego kodu/logiki na zapleczu i interfejsie aplikacji internetowej. Mam aplikację internetową (Rails + ciężki JS), która analizuje metadane ze stron HTML pobranych za pośrednictwem adresu URL podanego przez użytkownika (pomyśl Pinterest lub Instapaper). Obecnie przetwarzanie to odbywa się wyłącznie po stronie klienta. Kod, który pobiera adres URL i analizuje DOM, znajduje się w dość dużym zestawie skryptów JS w naszej aplikacji Rails. Czasami chcesz wykonać to przetwarzanie po stronie serwera aplikacji. Na przykład, co jeśli użytkownik podał adres URL, ale ma wyłączoną obsługę JS lub niestandardową przeglądarkę zgodną ze standardami itp. Idealnie chciałbym móc przetwarzać te adresy URL w Ruby na zapleczu (w asynchronicznych zadaniach w tle być może) używając tej samej logiki, której używają nasze parsery JS BEZ przenoszenia JS do Rubiego. Przyjrzałem się systemom, które umożliwiają wykonywanie skryptów JS w backendzie, takich jak execjs, a także kompilatorom Ruby-to-Javascript, takim jak OpalRB, które, miejmy nadzieję, pozwolą na "jednokrotny zapis, wykonanie wielu", ale nie jestem pewien, czy to właściwa decyzja. Jaki jest najlepszy sposób na uniknięcie powielania logiki biznesowej w przypadku aplikacji, które muszą przetwarzać podobne dane zarówno po stronie klienta, jak i po stronie serwera?


title: Dlaczego biblioteka C używa makr i funkcji o tej samej nazwie?

text: Czytam 'The Standard C Library' PJ Plaugera, co jest naprawdę interesujące. Książka wyjaśnia nie tylko, jak KORZYSTAĆ z biblioteki, ale także jak jest wdrażana. Skończyłem czytać sekcję `ctype.h` iw nagłówku funkcje są zadeklarowane jako oba makra ORAZ funkcje. Na przykład int isdigit(int); ale także #define isdigit(c) (_Ctype[(int)(c)] i _DI) Nie rozumiem, dlaczego są używane OBU? Ponadto, jeśli próbuję odtworzyć własny niestandardowy nagłówek i implementację `ctype`, mogę skompilować się pomyślnie tylko wtedy, gdy usunę makro (zakomentuj definicję). Ten aspekt nie został tak naprawdę wyjaśniony w książce. Czy ktoś może wyjaśnić?


title: Wzór fabryczny DIor ? Obie ? czy inne podejście?

text: Powiedzmy, że mamy klasę abstrakcyjną o nazwie `BaseSwitch`, dziedziczoną przez konkretne implementacje `Switch A` i `Switch B`. Każdy przełącznik reprezentuje rzeczywisty przełącznik (narzędzie telefoniczne, którego jednym z zadań jest zapis CDR; wszystkie rekordy danych połączenia uderzające w przełącznik). Każdy przełącznik w prawdziwym życiu zapisuje CDR w innym formacie i do różnych źródeł, powiedzmy, że jeden przełącznik zapisuje do pliku tekstowego, inny zapisuje do bazy danych MySQL. Przełączniki jako encje i szczegóły CDR są definiowane przez końcowego użytkownika systemu Moim celem jest napisanie klas `Importer` odpowiedzialnych za importowanie CDR na podstawie źródła danych określonych przez encję przełącznika do mojego systemu, ale ukrywanie `Importera` przed przełącz klasy. Warstwa odpowiedzialna za importowanie CDR zapętli się po przełącznikach i utworzy obiekt „Importer” na podstawie formatu CDR zdefiniowanego w każdym przełączniku. Czy ktoś może zaproponować podejście do wykorzystania? EDYCJA: Więcej wyjaśnień Poniżej: public class SwitchBase { public abstract string CDRFormat { get; } } public class SwitchA:SwitchBase { public override string abc { get { return "Text"; } } } public class SwitchB : SwitchBase { public override string CDRFormat { get { return "MySQLDatabase"; } } } public class CDR { } public class MySQLImporter { ICollection<CDR> GetCDR() { //DoCoś } } public class TextImporter { ICollection<CDR> GetCDR() { //DoCoś } }


title: Korzyści z używania Data URI do osadzania obrazów w dokumencie HTML i jego kompatybilności z różnymi przeglądarkami

text: Chcę osadzić obraz za pomocą Data URI w dokumencie HTML, dzięki czemu nie potrzebujemy obrazu jako osobnego załącznika, otrzymujemy tylko jeden plik HTML, który zawiera rzeczywisty obraz. Jakie są jego zalety i wady? Czy IE10 to obsługuje? Czy warto mieć taką implementację? Pracuję nad aplikacją, w której mamy dokumenty html z linkami do obrazów przechowywanych w jakimś miejscu. Jeśli używam małego edytora online, ponieważ obrazy są zapisywane gdzieś na serwerze, podczas edycji dokumentu mogę podać link do tego obrazu, ale nie mogę wyświetlić podglądu końcowego dokumentu za pomocą obrazów z małego edytora. Jeśli zdecyduję się pobrać plik lokalnie, będę musiał pobrać obrazy po stronie serwera. Wygląda to trochę przesadnie, więc pomyślałem, czy w takiej sytuacji można użyć Data URI.


title: Przestrzeń euklidesowa w pełni połączony wykres bezkierunkowy: najkrótsza ścieżka do wszystkich węzłów

text: Może to być pytanie, które zrodziło się z mojej niezdolności do prawidłowego wyrażenia swoich intencji Google. W całkowicie połączonym grafie bezkierunkowym takim, że dowolne trzy punkty mogą być poprawnie przedstawione w trójkącie w geometrii euklidesowej, wydawałoby się, że pierwszy zachłanny algorytm, który wybiera najkrótszą krawędź, znalazłby najkrótszą ścieżkę od punktu początkowego do odwiedzenia wszystkich innych punktów . Nie mogę znaleźć warunku, w którym to byłoby fałszywe, ale jeden z moich sąsiadów (inny programista) upiera się, że się mylę, chociaż nadal nie mogę wymyślić warunku, w którym się mylę. Edycja: Nie jestem pewien, czy to pytanie jest przykładem ogólnego TSP, o którym wiem, że jest trudne NP, lub jeśli tak, myślałem, że wszystkie ograniczenia na dozwolonych wykresach wpłyną na trudność. Z wiki: TSP to „najkrótsza możliwa trasa, która odwiedza każde miasto dokładnie raz i wraca do miasta początkowego”. W tym problemie nie ma wymogu powrotu do miasta pochodzenia. Co więcej, nie dbamy o wybór optymalnego miasta pochodzenia, ponieważ miasto pochodzenia jest określone w naszym konkretnym przykładzie, o którym dyskutowaliśmy. Dodatkowo, wykres w tym zadaniu musi być zgodny z ograniczeniami odległości euklidesowych w 2 lub 3 wymiarach, więc wykres trzech węzłów, taki jak poniżej (klucz to węzeł, val to odległości między innymi węzłami) nie mógł istnieć, ponieważ krawędź z A do B spowodowałoby, że krawędzie od C do A i B byłyby niewykonalne. ` A:{B:80, C:10}, B:{A:80, C:5}, C:{A:10, B:5} ` Również przez w pełni połączone miałem na myśli, że wszystkie węzły mają krawędzie między nimi i co drugi węzeł. Przepraszam, jeśli opis okazał się mylący, ale zastanawiam się, czy biorąc pod uwagę wszystkie te ograniczenia, czy można go rozwiązać w bardziej uproszczony sposób.


title: Przenoszenie projektu open source z licencji ISC i domeny publicznej

text: Przeniosłem libsodium i NaCl na .NET. NaCl to oryginalny projekt, który jest w domenie publicznej, podczas gdy libsodium jest dziełem pochodnym z NACL i korzysta z licencji ISC. Przyjrzałem się obu projektom, aby przenieść kod na .NET. Do mojego projektu wolę używać MPL v2, ale nie jestem pewien, czy mogę zmienić oryginalną licencję. Wiem, że ISC jest dozwolone, ale nie jest jasne, czy mogę używać innej licencji do mojej pracy. Każda pomoc byłaby mile widziana.


title: Tworzenie wirtualnej maszyny / piaskownicy

text: Interesuje mnie, jak faktycznie działa maszyna wirtualna/piaskownica. Opracowałem emulator 8051, a także napisałem disassembler dla x86, więc ta część maszyny wirtualnej nie jest tak naprawdę problemem. To, co mnie interesuje, to funkcjonalność piaskownicy. Aby zilustrować, co mam na myśli, rozważmy ten przykład. Załóżmy, że mam funkcję, która po prostu otwiera plik. Więc nic nadzwyczajnego. int fd = open(ścieżka); Teraz, gdy ten kod jest wykonywany natywnie, przejdzie do systemu operacyjnego i otworzy plik (zakładając, że istnieje). Teraz, kiedy uruchamiam to w środowisku maszyny wirtualnej, określona ścieżka nie jest tą, którą widzi system operacyjny, ale raczej czymś, co zastąpi maszyna wirtualna, przekierowując w ten sposób otwarte wywołanie. Interesuje mnie więc, jak VM może to zrobić, gdy wykonywany kod jest uruchamiany natywnie (jak x86 na x86), ponieważ dla interpretowanej maszyny wirtualnej jest to raczej oczywiste. Kiedy szukam w Google maszyn wirtualnych, znajduję tylko linki mówiące o interpreterach, takich jak Java, LLVM lub podobne, ale nic, co wchodzi w szczegóły. Pobrałem kod źródłowy z Oracle Virtual Box, ale ponieważ jest to dość obszerna baza kodu, dość trudno jest zrozumieć koncepcję tylko z kopania w tym kodzie.


title: Co ankieter zauważa najbardziej w moim CV?

text: Kiedy ubiegasz się o stanowisko, takie jak programista w firmie, co ankieter zauważa **najbardziej** w moim CV dotyczącym wykonanej przeze mnie pracy? Czy jest zaniepokojony ilością pracy, którą wykonuję z innymi (projekty open source), konkretnymi osiągnięciami, które osiągnąłem w swojej dziedzinie (programy, aplikacje) lub ilością czasu, którą poświęcam na pomaganie innym (fora, mentoring)? Dla tych z Was, którzy złożyli podanie i pracują/pracowali na stanowisku podobnym do programisty, z własnego doświadczenia, co Twoim zdaniem pomogło Ci najbardziej w znalezieniu pracy? PS. jeśli „programista” jest zbyt szerokim pojęciem, szczególnie chciałbym pracować z zespołami przy tworzeniu dużych aplikacji, takich jak dropbox / google / skype itp.


title: Jaki rodzaj wzoru zostałby użyty w tym przypadku

text: Chcę wiedzieć, jak poradzić sobie z tego typu scenariuszem. Budujemy tło osoby od podstaw i chcę wiedzieć, koncepcyjnie, jak postępować z bezpiecznym wzorcem obiektowym zarówno w projektowaniu, jak i wykonaniu... Czytałem na temat wzorców Factory, typów Model-View-Controller, Wstrzykiwanie zależności, podejście Singleton... i wydaje mi się, że nie potrafię pojąć ani "dopasować" tego typu decyzji projektowych do tego, co próbuję zrobić.. Przede wszystkim zacząłem od posiadania dużego jack-of-all -trades class, potem przeczytałem trochę więcej i kilka wskazówek, aby upewnić się, że twoje klasy mają tylko jeden cel.. co ma sens i zacząłem rozkładać pewne rzeczy na inne klasy. Ok spoko. Teraz patrzę na wstrzykiwanie zależności i tak naprawdę nie wiem, co się dzieje. Przykład/wgląd jaki rodzaj hierarchii muszę osiągnąć... * class Osoba musi mieć dostęp i budować z wielu różnych klas. * klasa Kultura potrzebuje dostępu do podklasy, aby uzyskać korzyści związane z kulturą * klasa Potrzebuje dostępu do klasy Kultura i innych podklas * klasa Urodzenie musi mieć dostęp do podklas społecznych, kulturowych i innych podklas * klasa Potrzeba dzieciństwa/dorastania/dorosłości aby uzyskać dostęp do wszystkiego. Ponadto, w zależności od różnych rzutów, ta hierarchia klas musi również tworzyć wiele osób, takich jak Rodzina i ich pochodzenie, używając niektórych, jeśli nie wszystkich, tych samych klas. Pomyśl o tym jako o generatorze ludzi, całkowicie losowym, z tłami i rzeczami, które im się przytrafiają. Starzenie się, śmierć bliskich, kariery wojskowe itp. Większość generacji jest wykonywana losowo, wywołując funkcję mt_rand w celu wybrania z większości wyborów w klasach, gwarantując, że dane będą całkowicie losowe. Mam większość danych zbiorczych i szukałem informacji od kolegów programistów, co myślisz? **EDYTUJ** Dodano schemat blokowy. Zdecydowałem się pominąć kilka rzeczy, ale rozumiesz.. Tak naprawdę nie wiedziałem, jakich typów wizualizacji użyć, więc priorytetowo potraktowałem wagę pudełek według rozmiaru i większości połączeń. Niepola są tekstem opisowym, bez zdarzeń zmieniających życie. ![http://i.stack.imgur.com/ZdYkq.jpg](http://i.stack.imgur.com/ZdYkq.jpg)


title: Wymagania licencyjne dotyczące włączenia oprogramowania open source

text: W projekcie open source dołączono wiele innych bibliotek open source w celu zaimplementowania potrzebnej funkcjonalności, niektóre jako biblioteki (LGPL), a niektóre jako kod źródłowy (nie-LGPL). Do projektu wybrano nową licencję BSD. Dołączone biblioteki open source są licencjonowane na podstawie nowych licencji BSD, MIT, Apache i LGPL, ale bez kodu na licencji GPL. W jaki sposób należy wymienić te inne biblioteki open source? Czy wszystkie licencje na biblioteki muszą być zawarte w głównym pliku licencji projektu? Czy wystarczy podać łącza do stron internetowych projektu w oknie dialogowym Pomoc->O programie i dokumentacji? Czy jakiś kredyt _naprawdę_ jest potrzebny?


title: CRM: In-House vs. OTS

text: Wiele, wiele lat temu, kiedy byłem młody i naiwny i pisałem wszystko od zera, chyba że chodziło o język, pracowałem dla firmy z dwoma sprzedawcami w dwóch lokalizacjach, którzy próbowali dzielić się leadami i kontaktami. Właśnie odkryłem nowy, lśniący młot, PHP, więc oczywiście zbudowałem je, co dziś określiłbym jako prymitywny system CRM oparty na MySQL. Bardzo im się to podobało — w tym momencie większość ich konkurentów korzystała z lokalnych baz danych Access. Od tego czasu nauczyłem się, o ile łatwiejsze jest życie, gdy nie próbujesz wymyślać koła na nowo. Znów mam do czynienia z rozwijającą się firmą, która potrzebuje systemu CRM online. Oczywiście z grubsza zdaję sobie sprawę z tego, co robią systemy CRM, ale nie bardzo wiem, jakie dokładnie produkty, takie jak MS Dynamics czy SAP, oferują. Ciężko mi przebrnąć przez marketingowy marketing, próbując dowiedzieć się, na co dokładnie te firmy wydają dziesiątki milionów dolarów i euro na rozwój. Większość z nich wydaje się być dość prostymi aplikacjami korporacyjnymi z kilkoma dzwonkami i gwizdkami, którymi tak naprawdę nie jestem zainteresowany, takimi jak integracja z Outlookiem i Sharepointem lub możliwość tworzenia przepływów pracy za pomocą interfejsu typu „kliknij i przeciągnij”. Więc moje pytanie brzmi, czy jesteś szalony, próbując stworzyć niestandardowy system CRM od podstaw?


title: Co oznacza IE, mówiąc, że „konsola jest niezdefiniowana”?

text: Podoba mi się zawziętość IE (narzędzia do debugowania, które prowadzą bezpośrednio do kodu, są jeszcze bardziej przyjazne dla użytkownika niż te, które znalazłem w narzędziach programistycznych przeglądarki Chrome F12), ale dlaczego mówi się, że „konsola jest niezdefiniowana” re: this linia jQjuery: console.log("wprowadzony przycisk prześlij kliknięcie"); Jak _konsola_ może być niezdefiniowana? Ani Chrome, ani Firefox nie narzekają na to ... I jak na ironię, IE pokazuje mi ten komunikat o błędzie gdzie? W zakładce „Konsola”! Shirley nie może rozróżniać wielkości liter i oczekuje "Console.log"? Przy okazji, jestem pod wrażeniem narzędzi F12 w IE; Zastanawiam się, czy to "Efekt Avisa" działa - byli na piątym miejscu (wśród przeglądarek) i zaczęli walczyć jak wściekły rosomak, aby drapać i drapać się w górę?


title: Czy połączenie javac automatycznie uruchamia java

text: Chcę móc wywołać `javac <nazwa pliku klasy>`, a następnie automatycznie uruchomić java na skompilowanym pliku `.class`. Początkowo myślałem, że użyję deasemblera x86, aby go zhakować (javac.exe), ale wpadłem na ten pomysł; Następnie znalazłem kod open source dla JDK i doszedłem do wniosku, że być może plik wsadowy byłby łatwiejszy. W jaki sposób mogę to zrobić?


title: czy haskell ma typy zależne?

text: Pytania cały tytuł. Dla wyjaśnienia, Haskell ma już możliwość parametyzacji typu przez inny typ (jest to tak samo jak programowanie szablonów w c++), ale czy może sparametryzować typ nad wartościami - jest to typ zależny. Na przykład możesz mieć typ sparametryzowany na liczby całkowite, na przykład wektory o rozmiarze n, macierze o rozmiarze n x m, itd. Jeśli nie, to dlaczego nie. I czy jest jakaś możliwość, że będzie wspierana w przyszłości?


title: Decyzja projektowa kompilatora dla wywołania metody dynamicznej

text: Zapytałem o interpretację kompilatora zastępowania vs przeciążania na StackOverflow i otrzymałem dobre odpowiedzi, ale to doprowadziło mnie do innego pytania, które nie jestem pewien, czy jest odpowiednie dla SO, ale myślę, że jest tutaj. Należy przeczytać oryginalne pytanie i zaakceptowaną odpowiedź, ale być może jest to zrozumiałe po prostu patrząc na poniższy kod: public static void whatIs(Circle s) { System.out.println("Circle"); } public static void whatIs(Square s) { System.out.println("Kwadrat"); } i próbujemy wywołać whatIs(shapes[0]); //tablica obiektów Shape (interfejs zaimplementowany przez Circle,Square) whatIs(shapes[1]); otrzymamy dwa błędy (jeden dla `Kwadrata` i jeden dla `Krąga`) wskazujące, że: > * metoda Driver.whatIs(Kwadrat) nie ma zastosowania > * rzeczywisty argument Kształt nie może zostać przekonwertowany na Kwadrat za pomocą metody > konwersja wywołania > As jest sugerowane w moim pytaniu, użycie `instanceof` może dać pożądane rezultaty, a jak sugerowała odpowiedź: > Kompilator może automatycznie wygenerować kod, taki jak > > > if (shapes[0] instanceof Circle) > { > whatIs((Circle) kształty[0]); //wypisuje "Okrąg" > } > **ale tak nie jest**. Żeby było jasne, wiem, że można użyć klasy abstrakcyjnej zamiast interfejsu, aby osiągnąć podobną funkcjonalność, ale czy ktoś wie, dlaczego kompilator Java nie zrobi tego automatycznie za Ciebie? Nie jestem kompilatorem, ale mam wrażenie, że nie jest to pytanie oparte na opinii. Zakładam, że istnieje dobry powód tej decyzji.


title: Dlaczego koncepcja leniwej oceny jest przydatna?

text: Wydaje się, że leniwa ocena wyrażeń może spowodować, że programista straci kontrolę nad kolejnością wykonywania kodu. Mam problem ze zrozumieniem, dlaczego jest to akceptowalne lub pożądane przez programistę. Jak można wykorzystać ten paradygmat do zbudowania przewidywalnego oprogramowania, które działa zgodnie z zamierzeniami, skoro nie mamy gwarancji, kiedy i gdzie wyrażenie zostanie ocenione?


title: Oczekiwania absolwentów a rzeczywistość

text: Wybierając to, co chcemy studiować i robić z naszą karierą i życiem, wszyscy mamy pewne oczekiwania co do tego, jak to będzie wyglądać. Teraz, gdy jestem w branży od prawie dekady, zastanawiałem się trochę nad tym, co myślałem (kiedy studiowałem informatykę) będzie wyglądać życie zawodowe związane z programowaniem i jak to się faktycznie okaże. być. Moje dwa największe szoki (a raczej niespełnione oczekiwania) to ilość prac konserwacyjnych związanych z oprogramowaniem oraz ogólny brak profesjonalizmu: 1. **Utrzymanie**: Na uniwersytecie wszyscy mówiono nam, że większość prac związanych z oprogramowaniem to utrzymanie istniejących systemów. Więc wiedziałem, że mogę się tego spodziewać w abstrakcie. Ale nigdy nie wyobrażałem sobie, jak przytłaczające może się to okazać. Być może jest to coś, nad czym myślałem i miałem nadzieję, że będę budował nowe fajne rzeczy od zera o wiele więcej. Ale tak naprawdę większość zadań jest w przeważającej mierze zorientowana na konserwację, naprawianie błędów i wsparcie. 2. **Brak profesjonalizmu** : Na uniwersytecie zawsze miałem wrażenie, że praca z oprogramowaniem komercyjnym jest bardzo zorientowana na proces i rygorystycznie zaprojektowana. Miałem obrazy procesów ISO, ryzy dokumentacji technicznej, dokładnie udokumentowane wszystkie funkcje i błędy oraz ogólnie profesjonalne środowisko. Ogromnym szokiem było uświadomienie sobie, że większość firm zajmujących się oprogramowaniem działa nie inaczej niż zespół studentów pracujących nad dużym, trwającym semestr projektem. Pracowałem zarówno w małym sklepie z hakerami, jak i średniej wielkości przedsiębiorstwie korporacyjnym. Chociaż nie powiedziałbym, że zawsze było to wprost „nieprofesjonalne”, zdecydowanie wydaje się, że branża oprogramowania (jako całości) jest daleka od silnej dyscypliny inżynieryjnej, której się spodziewałem. Czy ktoś jeszcze miał podobne doświadczenia? W jaki sposób Twoje oczekiwania co do naszego zawodu różniły się od rzeczywistości?


title: Różnica między testowaniem jednostkowym a rozwojem opartym na testach

text: Z lektury opisów rozumiem, że w TDD testy wykonuje się przed napisaniem funkcji, a w Testach Jednostkowych później. Czy to jest główna różnica, czy te dwa terminy nie mogą być nawet jako takie porównywane. Być może testowanie jednostkowe jest integralną częścią TDD.


title: TDD - czy chodzi tylko o testy jednostkowe?

text: Czy dobrze rozumiem, że klasyczne TDD to tylko testy jednostkowe? Nie zrozum mnie źle: znam różnicę między TDD a testowaniem jednostkowym. Pytam, czy prawidłowe jest stosowanie testu integracji w przepływie pracy TDD. Obecnie pracuję nad projektem, w którym TDD na pewno dotyczy tylko testów jednostkowych i jest z tym co najmniej jeden poważny problem. Większość naszych testów jednostkowych to testy behawioralne, które często stają się fałszywie ujemne (fałszywe czerwone) podczas refaktoryzacji (tylko dlatego, że zmieniła się pewna sekwencja wywołań zależności). Projekt powstał w stylu TDD, aby refaktoring był prosty i nagle refaktoryzacja stała się piekłem. Epicka porażka! Najbardziej oczywistą decyzją jest teraz, aby nasz test nie był jednostkowy, ale integracyjny (ale nadal z TDD). Więc jeśli poprzednio zdublowaliśmy/wykpiliśmy zależności klas, teraz tego nie zrobimy (przynajmniej nie wszystkie). W rezultacie większość naszych testów stanie się stanem (zamiast behawioralnych). A testy stanu znacznie rzadziej stają się fałszywie ujemne (ponieważ testują wynik, ale nie przepływ pracy). Chciałbym więc wiedzieć, jak rozpowszechnione jest podejście polegające na wykorzystaniu TDD z testami integracyjnymi. Czy to w porządku? Byłbym wdzięczny za wszelkie zasoby na ten temat. Przeczytałem ten artykuł, ale jest to trochę... dziwne **Aktualizacja.** Tutaj wyjaśnię, co mam na myśli pod testami jednostkowymi i testami integracyjnymi. Test jednostkowy to test, który odcina/mockuje wszystkie zależności klas. Test integracji ma realne implementacje zależności (chociaż w razie potrzeby może odcinać/mockować niektóre zależności).


title: Jak skutecznie zatrudnić kilku programistów, aby było to opłacalne?

text: Wielu z nas dobrze zna tę sytuację: jesteśmy jednoosobowym (kobiecym) zespołem programistycznym, potrzebujemy dodatkowej pomocy, aby nadążyć za wszystkimi zadaniami, budżet jest niewielki i decydujemy się na pomoc. Ale zatrudnienie kogoś jest trudne. Albo dana osoba jest niedoświadczona, a ja zostanę jej pełnoetatowym nauczycielem w nadziei, że wykona pracę tak, jak chcę, albo ta osoba jest wykwalifikowana, ale z jakiegoś powodu nie przekazuje kodu w ramach budżetu, który mogę po prostu podłączyć i używaj bez przerabiania go samodzielnie. Jakieś przemyślenia/pomysły?


title: Czy architektura oparta na modelu w programowaniu zorientowanym na język (MPS) jest obecnie możliwa?

text: Jako projekt poboczny opracowuję jakiś rodzaj DSL, w którym opisuję model danych i generuję z niego pożądane pliki kodu. Uważam, że nazywa się to Model Driven Architecture. Moja częściowa istniejąca implementacja używa C#, CodeDOM, XML i XSLT, aby zrobić to ręcznie. Odkryłem, że istnieją już lepsze środowiska, w których można to robić. To, które zafascynowało mnie najbardziej, nazywa się MPS, zgodnie z paradygmatem programowania zorientowanego na język. Ten artykuł, napisany przez współzałożyciela JetBrains, otworzył mi oczy. Naprawdę wierzę, że LOP ma bardzo duże szanse stać się kolejnym wielkim paradygmatem programistycznym, gdy będzie miał szersze poparcie. Z mojego krótkiego doświadczenia z MPS zauważyłem, że nadal jest on głównie zorientowany na Javę. Moje pytanie brzmi, jak możliwe jest generowanie plików kodu dla innych (wielu) języków zamiast tylko Javy. Nie potrzebuję pełnego wsparcia językowego od samego początku, więc najlepiej, jeśli muszę być w stanie zaimplementować język w sposób zwinny. Np. najpierw obsługuje tylko jeden typ, dodaje modyfikatory dostępu, ... Być może jakieś inne (darmowe) środowisko już to zapewnia po wyjęciu z pudełka. PS: Uważam, że ważne jest, aby mieć dużą kontrolę nad konwencjami nazewnictwa i nad generowanym kodem. To jeden z powodów, dla których rozpocząłem własną implementację. AKTUALIZACJA: Sądząc po odpowiedziach, wydaje się, że ludzie myślą, że interesują mnie tylko rozwiązania .NET. Tak nie jest, wszelkie inne sugestie są mile widziane!


title: Jak powinienem uczyć się języków programowania?

text: Jestem studentem inżynierii komputerowej. Nigdy wcześniej nie zajmowałem się programowaniem i jak możesz zrozumieć, nie wiem, jak się tego uczyć ani jak tworzyć własne programy. Mój angielski jest słaby [zredagowany dla jasności – przyp.], więc jeśli nie podobają Ci się wymienione przeze mnie opcje, proszę o udostępnienie innym. Jak powinienem się uczyć? Jak mam się uczyć języków programowania? 1. Ucz się całkowicie z książki. 2. Nie ucz się z książki, po prostu spróbuj napisać kod. 3. Mieszanka tych dwóch; ucz się z książki, a następnie spróbuj napisać kod. 4. Przestudiuj połowę książki, a następnie napisz kod ręcznie na papierze. 5. Wymienione nauczycielowi, a następnie spróbować rozwiązać ogólne problemy (nie z żadnego konkretnego rozdziału).


title: Jak ważne są zaawansowane koncepcje Haskella, takie jak monady i funktory aplikacyjne, dla większości rutynowych zadań programistycznych?

text: Przeczytałem książkę Learn You a Haskell do momentu, w którym wprowadzają Monady i takie rzeczy jak Po prostu. Są one dla mnie tak sprzeczne z intuicją, że po prostu mam ochotę zrezygnować z prób uczenia się tego. Ale naprawdę chcę spróbować. Zastanawiam się, czy uda mi się chociaż na chwilę uniknąć zaawansowanych koncepcji i zacząć używać innych części języka do wykonywania wielu praktycznych zadań z bardziej podstawowymi częściami Haskella, tj. funkcjami, standardowymi IO, obsługą plików, interfejs bazy danych i tym podobne. Czy to rozsądne podejście do nauki obsługi Haskella?


title: Czy nowa generacja programistów korzysta z Emacsa?

text: Wiem, że Emacs był bardzo popularny kilkadziesiąt lat temu, ale teraz - kiedy jest dużo IDE i edytorów tekstu, czy nadal jest popularny wśród nas?


title: Jako uczeń szkoły średniej, co powinienem zrobić, aby stać się lepszym/bardziej zdolnym do zatrudnienia?

text: W tej chwili jestem rok nieobecny na uniwersytecie/uczelni, obecnie mam 17 lat i ćwiczę programowanie jako hobby. Chciałbym kiedyś dostać pracę na rynku, uwielbiam programować. I zastanawiałem się, jaki byłby mój najlepszy sposób działania w tej chwili, aby przygotować się do potencjalnej kariery programistycznej? Rozmawiałem z kilkoma studentami studiów komputerowych i nie wygląda na to, że to, co robią, nie jest strasznie trudne (chociaż jestem pewien, że różni się to w zależności od szkoły). Czuję się, jakbym był w dziwnej otchłani, w której zrobiło się trochę nieświeże, ponieważ nie czuję, że robię „postęp”. Jeśli chodzi o programowanie, to jest to mój obecny zestaw umiejętności: Języki: Lua, znam ten bardzo dobrze, postawiłbym się trochę za 'umiarkowaną' z Lua, wiem jak korzystać z jego funkcji i co robić i nie robić. C, znam C w sposób, który nazwałbym nieco poniżej umiarkowanego, umiem napisać C, ale nie znam najlepszych praktyk i często konsultuję się z dokumentacją na temat C. Projekty: Zrobiłem parę zabawek tłumaczy, dostarczyłem modyfikację RPG do Garrys Mod (choć nie brzmi to zbyt dużo, ja i mój przyjaciel stworzyliśmy co najmniej 20 000 wierszy, w tym komentarze itp.) i stworzyłem kilka małych gier. Doświadczenie: Jestem dość zaznajomiony z narzędziami GNU i Linuksem, umiem napisać podstawowy plik makefile itp. Wiem, jak korzystać z narzędzi wiersza poleceń i używam Linuksa jako mojego codziennego systemu operacyjnego, ale mam też wieloletnie doświadczenie z Windows . Wiem, jak korzystać z Git i SVN (jestem mistrzem w innych, ale potrafię ich używać wystarczająco dobrze, aby utrzymać projekt). Więc czy jest coś, co moglibyście zasugerować? Czy powinienem teraz aktywnie coś robić, czy po prostu czekać na studia? Czuję się zagubiony. Edycja: wstawiam "jest" zamiast "nie jest" strasznie trudne. Chciałem powiedzieć, że wszystkie główne Comp Sci, z którymi rozmawiałem, powiedziały, że materiał nie jest strasznie trudny, jeśli masz trochę doświadczenia w programowaniu.


title: Jak przygotować się do pracy programistycznej?

text: Zasadniczo skończyłem zajęcia z informatyki na studiach, ale nie wydaje mi się, żebym był „gotowy” do pracy z informatyki, ani nie jestem w tej chwili w stanie odbyć stażu. Zastanawiam się, czy jest jakiś sposób na przygotowanie się i zdobycie doświadczenia, którego potrzebowałbym do pracy bez dyplomu. Jakieś pewne książki, które mogę przeczytać lub umiejętności, których powinienem się nauczyć, a które pomogłyby? Dziękuję Ci.


title: Struktura CSS do tworzenia responsywnych stron internetowych

text: Jestem inżynierem back-endu, który pracuje w małym zespole, więc od czasu do czasu muszę zrobić trochę front-endu. Lubię opracować dobry przepływ pracy i strukturę projektu, zanim cokolwiek zacznę, więc zastanawiam się nad stworzeniem responsywnego front-endu dla aplikacji internetowej. Jaki jest najlepszy sposób na zbudowanie struktury CSS do tworzenia responsywnych stron internetowych, które muszą być „skalowane” w przypadku mniejszych ekranów? A konkretnie: czy najpierw tworzysz wersję mobilną, a potem rozszerzasz kod o min-width media w CSS? A może robisz coś przeciwnego, najpierw tworząc wersję na komputery stacjonarne? Po drugie, czy definiujesz wiele selektorów i definicji elementów w tym samym zapytaniu o media? A może definiujesz zapytanie o media dla każdego elementu i selektora? Wydawałoby się, że druga metoda zapewniłaby być może bardziej czytelny kod – chociaż z pewnością bardziej frustrujące jest „podkręcanie” działającej witryny w celu utworzenia nowej wersji za pomocą zapytań o media, niż proste odgrodzenie starych ustawień w jednym zapytaniu o media i przeprojektuj od podstaw niezbędne części z nowej wersji.


title: Źródło jądra NT

text: Cóż, pierwsze pytanie brzmi: czy legalne jest przejęcie źródła jądra NT? Jeśli tak, przejdź do drugiego akapitu; jeśli nie, przejdź do trzeciego. Pierwszą rzeczą, o którą prawdopodobnie zapytasz, jest "Dlaczego źródło jądra NT?" Odpowiedź jest prosta: chcę stworzyć własny system operacyjny kompatybilny z Windows. To oczywiście całe hobby i nie planuję żadnego dużego projektu. Zignoruj to, jeśli możliwe jest uzyskanie źródła jądra NT: „ReactOS” Jestem prawie pewien, że używa on samego kodu źródłowego Windowsa, z kilkoma drobnymi wyjątkami, więc chciałbym wiedzieć, w jaki sposób otrzymali kod.


title: Implementacja systemu pamięci podręcznej w aplikacji internetowej Java

text: Pracowałem z JPA (implementacja Eclipselink) oraz Hibernate. Jak rozumiem, te dwa mają świetne systemy buforowania. Interesuje mnie buforowanie w aplikacji internetowej i aby lepiej zrozumieć proces staram się coś zaimplementować samodzielnie. Niestety nie mogę znaleźć żadnej dogłębnej dokumentacji na ten temat. Interesują mnie takie rzeczy jak wysoka skalowalność, współdzielenie pamięci na różnych maszynach i inne ważne kwestie teoretyczne. Czy jest jakiś samouczek lub otwarty projekt, który mógłbym sprawdzić? Dziękuję Ci! *LE: * Chcę buforować informacje DB w POJO, tak jak JPA lub Eclipselink


title: Czy Visual Source Safe (najnowsza wersja) jest naprawdę taki zły? Czemu? Jaka jest najlepsza alternatywa? Czemu?

text: Przez lata ciągle słyszałem horrory, ludzie mówili „Prawdziwi programiści nie używają VSS” i tak dalej. ALE potem w miejscu pracy pracowałem w dwóch firmach, jednej, bardzo znanej publicznie dostępnej witrynie o dużym natężeniu ruchu, a drugiej wysokiej klasy usług finansowych, hostowanych przez „Web-Based” dla kilku bardzo dużych, bardzo znanych firm, w którym obecnie mieszkam i wszystko działa dobrze (KNOCK KNOCK!!). Ciągle komunikuję się z NIEZWYKLE starą technologią z niektórymi z tych instytucji finansowych.. STARA JAK NIE UWIERZYŁABYŚ.. co prowadzi mnie do wniosku, że jeśli to działa to "ZOSTAW TO", i że może jest jakaś wartość w starej technologii ? przynajmniej wystarczającą wartość, aby unieważnić przepisanie!? prawo?? Czy jest coś fundamentalnie wadliwego w podstawowej technologii używanej przez VSS? Mam wrażenie, że gdybym powiedział „ktoś powiedział, że VSS jest do bani”, to błagaliby o różnicę, najprawdopodobniej daliby mi taki wygląd, jakbym nie wiedział, i nigdy nie odzyskam ich szacunku i mojej wiarygodności (no cóż, to' Ciężko będzie zepsuć.. lol), ALE daj mi argument, który mogę przedstawić komuś, kto koduje od 30 lat, który buduje Platformy wykorzystujące obecną technologię (.NET 3.5 / SQL 2008 R2 ), napisz swój własny ORM z rusztowaniem i jest w stanie zapewnić wysokiej jakości platformę, która obsługuje tysiące jednoczesnych użytkowników w rozwiązaniu hostowanym przez wielu dzierżawców i nie zgadza się z żadnymi korzyściami płynącymi z posiadania zintegrowanej kontroli źródła, a mimo to korzysta z niesławnego Visual Source Safe. Mam duże doświadczenie z TFS do 2010 roku i szczerze uważam, że to wspaniale, gdy zespół (poza programistami) może to ogarnąć. Pracowałem ramię w ramię z kimś, kto jest zagorzałym SVN'rem iz purystycznego punktu widzenia widzę w tym piękno (potrzebuję trochę więcej, z mojego SS, ale na pewno wystarczy). Dlaczego więc tacy sprytni nie uciekają przed Visual Source Safe? z pewnością, gdyby było tak źle, do tej pory zostałby zrealizowany i nie siedziałbym tutaj z tym prostym, starym systemem Check In, Check Out, Version Resistant, Label Intensive. Ale oto jestem... Chciałbym porzucić kłótnię, która byłaby końcem wszystkich kłótni, ale jeśli jest to kwestia opinii i osobistego doświadczenia, wydaje się, że jest zbyt dużo swobody, aby utrzymać VSS. AKTUALIZACJA: Myślę, że najlepszym rozwiązaniem jest to, aby zwolennicy VSS sprawdzili doświadczenia innych ludzi i wyciągnęli z nich wnioski, dopóki (proszę nie) sami doświadczymy czynnika przełomowego. Do tego czasu nie będę angażował się w dyskusję na temat migracji z VSS. AKTUALIZACJA 11-2012: Udało mi się więc przekonać wszystkich w moim miejscu pracy, że skoro SM zapada w słońce Visual Source Safe, być może nadszedł czas, aby przejść na TFS. Udało mi się ich przekonać i niedawno zaktualizowałem nasz zespół do Visual Studio 2012 i TFS 2012. Migracja była dość bezbolesna, musiałem uruchomić analysis.exe, który znalazł kilka błędów (nie jestem pewien, czy kiedykolwiek wpłyną na projekt) i następnie ręcznie uruchom VSSConverter.exe. Znowu bezbolesne, z wyjątkiem tego, że migracja wszystkiego, co warte jest 5 lat zajęła 16 godzin.. a teraz jesteśmy na TFS.. znacznie bardziej zintegrowany.. o wiele fajniejszy.. więc w sumie VSS służył temu celowi przez lata bez problemów -w górę. Nie było żadnych horrorów, a Visual Source Save, ponieważ kontrola źródła działała dobrze. więc dla wszystkich nie, którzy mówią (włącznie ze mną). nie ma nic złego w korzystaniu z VSS. nie rozpoczynałbym z nim nowego projektu i zdecydowanie rozważyłbym migrację do TFS. (to naprawdę nie jest bardzo trudne, a nowy konwerter typu "kreator" ma się pojawić lada dzień, więc migracja powinna być bezbolesna). Ale z mojego doświadczenia wynika, że zadziałało dobrze i wykonało swoją pracę.


title: Dlaczego (otwarte) standardy języka programowania kosztują?

text: Czy prośba o 384 franki szwajcarskie dla C11 lub 352 franki szwajcarskie dla C++11 nie przynosi efektu przeciwnego do zamierzonego, jeśli celem jest powszechne przyjęcie standardów? Zwróć uwagę, że w ogóle nie rantuję i nie jestem przeciwny płaceniu; Chciałbym zrozumieć powody ustalania cen jako takich, zwłaszcza wiedząc, że ISO jest siecią krajowych instytutów normalizacyjnych (tj. finansowanych przez rządy). Wątpię też, by te ceny generowały dochód wystarczający do sfinansowania takiej organizacji, więc musi być inny powód.


title: Staram się nie używać notacji węgierskiej

text: Widziałem argumenty za i przeciw Systems Węgier. Od kilku lat pracuję nad starszym projektem, który korzysta z tego systemu, nazywając każdą zmienną, funkcję prefiksem typu zmiennej np. (strName, intAge, btnSubmit itp.) (Znam oryginalne węgierskie prefiksy Apps według rodzaju zmiennej, a nie typu). Chciałbym, aby mój następny projekt całkowicie go porzucił, ale trudniej jest mi jednoznacznie nazwać podobne rzeczy bez uciekania się do tego. Powiedzmy, że mam formularz internetowy do zbierania adresów e-mail i przechowywania ich w tabeli bazy danych oraz przycisk wywołujący funkcję zapisu adresu w bazie danych. Jeśli używam notacji w stylu węgierskim, mogę nazwać pole `txtEmail` przyciskiem `btnEmail` i wartością zawartą w polu tekstowym `strEmail`. Mógłbym wtedy użyć funkcji `storeEmail(strEmail)` do przechowywania wiadomości e-mail. Mam tutaj jasną konwencję, jest oczywiste, czym jest każda zmienna. Jaka byłaby najlepsza praktyka nazywania tych zmiennych * bez uciekania się do systemów węgierskich, * bez ich zbyt długiego lub mylącego * oraz z jasną konwencją do stosowania w całym moim projekcie?


title: Ile do każdej części?

text: Byłem zaangażowany w projekt, który teraz dobiega końca. Dobrą wiadomością jest to, że firma zacznie komercjalizować oprogramowanie, które jest specyficznym oprogramowaniem dla dostawców usług internetowych. Jako programista/deweloper projektu zamierzam nadal wspierać projekt, dbać o nowe dostosowania klientów, w zasadzie oprogramowanie będzie nadal żyło i będzie sprzedawane na rynku. Ile powinienem pobierać, aby pozostać W projekcie? Czy powinienem pobierać opłaty za godzinę? na miesiąc? czy nawet procentowo w stosunku do każdego klienta? Jaka jest domyślna sytuacja w takiej sytuacji? lub Jak radzi sobie z tym większość programistów/programistów? Z góry dziękuję, to dla mnie bardzo ważne pytanie.


title: Jak ważne jest wdrożenie systemu buforowania w ramach stylu MVC?

text: Piszę własny framework PHP (...czeka, aż jęki ucichną) w celu nauki (najlepsze praktyki, zasady projektowania itp.), ponieważ jestem całkowicie samoukiem i w związku z tym są luki w mojej wiedzy. Rozumiem, że większość mainstreamowych frameworków zawiera jakąś formę systemu buforowania, który, jak sądzę, służy do utrzymywania regularnie używanych klas i/lub innych plików w pobliżu w celu szybkiego ładowania (prawda?). Idealnie wyobrażam sobie system, który jest w pewnym stopniu samomonitorujący i samozarządzający, ponieważ śledzi wykorzystanie klas/plików, limity pamięci i wydajność przetwarzania żądań, automatycznie usuwając elementy z pamięci podręcznej, gdy nie są już potrzebne lub zwiększając rozmiar pamięci podręcznej, gdy wydajność spada zbyt nisko itp. (nawet jakaś forma podstawowej zbiórki śmieci jest lepsza niż nic, prawda?). Moje pytania to: * Po pierwsze: Czy do tej pory wszystko dobrze zrozumiałem? * Jak ważne jest wdrożenie tego rodzaju systemu w porównaniu ze zwykłymi metodami dołączania/wymagania? * Jak mogę określić użycie pamięci i inne wskaźniki wydajności systemu? * Czy do buforowania klas muszę używać magicznych metod '__sleep()' i '__wakeup()'? * Rozumiem również, że aby klasa mogła być przechowywana, musi być zserializowana. Czy jako pamięci podręcznej powinienem używać zmiennej $_SESSION, tymczasowej tabeli bazy danych lub jakiegoś rodzaju płaskiej bazy danych / bazy danych SQLite? Dzięki za wszelką pomoc / sugestie.


title: Dopasuj dwa ciągi, ale pozwól na pewien stopień błędu

text: Jak mogę dopasować dwa ciągi, ale jednocześnie pozwolić, aby liczba X znaków była nieprawidłowa w dopasowaniu. Liczba błędów powinna być zmienną kontrolowalną. Chociaż liczba X znaków nie może się zgadzać w ciągu, powinien istnieć limit liczby znaków w sekwencji. Biorąc pod uwagę dwa ciągi, mogę pozwolić, aby 5 znaków było różnych, ale nie więcej niż 2 z rzędu. Szukam zalecanego algorytmu do porównania tych dwóch ciągów, a może jest już znane rozwiązanie.


title: Najlepsze praktyki dotyczące pisania usługi

text: Obecnie mamy serwer gniazd C++ używany przez klienta java. Cały kod gniazda zarówno w C++, jak i javie jest zbudowany na niskim poziomie, z komunikatami przekazywanymi za pośrednictwem ciągów JSON. Czy istnieją pakiety łóżeczek lub lepsze techniki powszechnie stosowane w tej sytuacji, aby zmniejszyć koszty przyszłego rozwoju i utrzymania?


title: Egzamin Java: gotowe metody?

text: > **Możliwy duplikat:** > Czy używanie wbudowanego sortowania jest uważane za oszustwo w testach praktycznych? Uczę się do egzaminu Java na uniwersytecie. Czy Twoim zdaniem mógłbym podczas egzaminu użyć Arrays.sort(intArray); zamiast tworzyć własny algorytm? Jak byś to ocenił, gdybyś był profesorem?


title: Jak zapisywać i usuwać pliki/PDFy otrzymane z serwisu internetowego w aplikacjach na iOS?

text: Mój serwis internetowy wyśle mi plik PDF i muszę go zapisać lokalnie w aplikacji na iPhone'a, a później udostępnić go przez WhatsApp. Jak więc zapisać ten plik otrzymany w mojej aplikacji do późniejszego udostępnienia? Jak mogę ponownie wyczyścić to z lokalnego db, aby ta aplikacja nie była ciężka. Dziękuję


title: Czy istnieje bardziej inteligentny sposób na zrobienie tego poza długim łańcuchem stwierdzeń „jeśli” lub „przełączenia”?

text: Wdrażam bota IRC, który odbiera wiadomość i sprawdzam tę wiadomość, aby określić, które funkcje wywołać. Czy jest na to sprytniejszy sposób? Wygląda na to, że szybko wymknie się spod kontroli po tym, jak wykonam 20 poleceń. Być może istnieje lepszy sposób na wyabstrahowanie tego? public void onMessage(String channel, String sender, String login, String hostname, String message){ if (message.equalsIgnoreCase(".np")){ // DO ZROBIENIA: Użyj Last.fm API, aby znaleźć teraz odtwarzany } else if (message.toLowerCase().startsWith(.register))) { cmd.registerLastNick(kanał, nadawca, wiadomość); } else if (message.toLowerCase().startsWith("daj nam odliczanie")) { cmd.countdown(kanał, wiadomość); } else if (message.toLowerCase().startsWith("zapamiętaj procedurę")) { cmd.updateAmRoutine(kanał, wiadomość, nadawca); } }


title: Jak mogę permutować pary w zestawie?

text: Piszę aplikację do rozliczania zakładów w C# i WinForms. Mam 6 selekcji, 4 z nich wygrały. Wiem, że używając następującej formuły z Excela: =FAKT(selekcje)/(FAKT(selekcje-podwajania))/FAKT(podwaja) Jest to zakodowane w mojej aplikacji i działa dobrze: mogę obliczyć ile możliwych podwojeń (np. AB, AC, AD, AE, BC, BD, BE itd.) muszą zostać rozwiązane. Ale nie potrafię rozgryźć, jak przeprowadzić właściwe obliczenia. Jak mogę go efektywnie zakodować, aby każda kombinacja A, B, C i D została obliczona? Wszystkie moje dotychczasowe wysiłki na papierze okazały się brzydkie i gadatliwe: czy istnieje eleganckie rozwiązanie tego problemu?


title: Jakie korzyści oferują narzędzia do ciągłej integracji w pojedynczym projekcie?

text: Jeśli robisz projekt solo - czy użyjesz narzędzi CI do budowania z repozytorium? Używałem Hudsona i Cruise Control w środowisku zespołowym, w którym konieczne jest budowanie, gdy tylko ktokolwiek coś zaewidencjonuje. Myślę, że wartość kontroli wersji jest nadal oczywista, ale czy muszę budować po każdym zatwierdzeniu, biorąc pod uwagę, że po prostu zbudowałbym na moim lokalnym komputerze i nikt inny się nie angażuje?


title: Prawidłowy sposób obsługi przykładowych loginów lub kont testowych

text: W mojej aplikacji sieci web JSP chcę przekierować przykładowych użytkowników na inną stronę niż rzeczywiści. Obecnie robimy coś takiego jak if((user.getName().equalsIgnoreCase("Sample")) ... Jest to (a) zakodowane na sztywno i (b) również wykonywane dla każdego normalnego użytkownika. Nie znoszę przekierowywać tych użytkowników za pomocą walidacji JavaScript - co jest jedną z sugestii podanych wewnętrznie


title: Równoważenie obciążenia i przełączanie awaryjne w kodzie

text: Mam usługi internetowe oparte na HTTPS (nie REST, raczej stary kod). Generuję odcinki klienta Java za pomocą osi i używam tego do wywoływania usług internetowych. W serwisie internetowym znajduje się około 20 różnych interfejsów API. Mam 2 serwery hostujące usługi sieciowe (identyczne - 2 serwery są używane do nadmiarowości), a dane są synchronizowane między 2 serwerami - więc ten sam interfejs API, zwany każdym serwerem, daje ten sam wynik). Nie mam sprzętowych ani programowych systemów równoważenia obciążenia ani klastrów. Planuję więc zaimplementować w kodzie funkcję przełączania awaryjnego i równoważenia obciążenia (przełączenie awaryjne jest ważne, jest w porządku, nawet jeśli nie równoważę obciążenia). Planowałem to zrobić w kodzie, tj. Jeśli dostanę wyjątek połączenia, schwytam wyjątek i wykonam to samo wywołanie usługi Webservice na innym serwerze. Zastanawiałem się, czy istnieją jakieś znane wzorce projektowe na to lub jakieś pułapki, o których powinienem wiedzieć.


title: Po co mieć aplikację z graficznym interfejsem użytkownika na linuksie, gdy dostępna jest linia poleceń?

text: Jeśli pytanie wydaje się być niezwiązane z tematem, przenieś się do innej odpowiedniej domeny na platformie Stackexchange. **P.dlaczego mieć GUI wraz z CLI, skoro masz już interfejs wiersza poleceń?** Obecnie pracuję nad aplikacją. Od teraz aplikacja posiada interfejs wiersza poleceń. Docelowymi maszynami dla aplikacji będą **80% serwerów i 20% stacji roboczych**. Rozważam również dostarczenie GUI dla aplikacji. **Przypadek użycia GUI:** Rejestracja produktu jest głównym przypadkiem użycia, tzn. mój produkt wymaga klucza licencyjnego do uruchomienia. A potem tylko niektóre informacje tekstowe będą wyświetlane za każdym razem, gdy zostanie uruchomione. Tylko 2-3 przyciski do wykonywania rozszerzonych funkcji. **CLI Use Case:** Rejestracja produktu będzie oczekiwała pewnych argumentów jako argumentów wiersza poleceń. Później 2-3 rozszerzone funkcje dostępne w GUI można również uruchomić z wiersza poleceń.


title: Strategie architektury dla złożonego systemu punktacji zawodów

text: Opis zawodów: * W ciągu 6 tygodni rywalizuje ze sobą około 10 drużyn. * Całkowity wynik każdego zespołu (z 1000 dostępnych punktów) jest oparty na sumie jego wyników w około 25 000 różnych elementów punktacji. * Większość elementów punktacji jest warta mały ułamek punktu i będzie około 10 X 25 000 = 250 000 wszystkich surowych danych wejściowych. * Punkty za niektóre elementy punktacji są przyznawane w regularnych odstępach czasu podczas zawodów. Punkty za inne elementy punktacji są przyznawane w nieregularnych odstępach czasu lub tylko w jednym momencie. * Istnieje około 20 różnych rodzajów elementów punktacji. * Każdy z 20 rodzajów elementów punktacji ma inny zestaw danych wejściowych, inny algorytm obliczania uzyskanego wyniku z surowych danych wejściowych oraz inną liczbę łącznych dostępnych punktów. Najprostsze algorytmy wymagają jednego wejścia i jednego prostego obliczenia. Najbardziej złożone algorytmy składają się z setek lub tysięcy nieprzetworzonych danych wejściowych i bardziej skomplikowanych obliczeń. * Niektóre typy danych wejściowych są generowane automatycznie. Inne typy nieprzetworzonych danych wejściowych są wprowadzane ręcznie. Wszystkie surowe dane wejściowe podlegają ewentualnym ręcznym korektom z mocą wsteczną dokonywanym przez sędziów zawodów. Podstawowe wymagania: * Interfejs systemu punktacji dla zawodników i innych obserwatorów zawodów pokaże aktualne i historyczne łączne wyniki drużyn, klasyfikacje drużyn, wyniki drużyn według elementu punktacji, surowe dane wejściowe (na kilku poziomach agregacji, np. codziennie, co tydzień itp.) i inne metryki. * Pojawią się wykresy, tabele i inne widżety do wyświetlania danych wejściowych i wyników surowych danych historycznych. * Będzie pulpit nawigacyjny w czasie quasi-rzeczywistym, który pokaże aktualne wyniki i surowe dane wejściowe. * Wyniki zbiorcze powinny być aktualizowane/odświeżane za każdym razem, gdy pojawiają się nowe surowe dane wejściowe lub gdy istniejące surowe dane wejściowe są dostosowywane. * Pojawi się „interfejs użytkownika punktacji” do ręcznego wprowadzania nowych danych wejściowych, ręcznego dostosowywania istniejących danych wejściowych i ręcznego dostosowywania obliczonych wyników. Decyzje: * Czy obliczenia scoringowe powinny być wykonywane w warstwie bazy danych (w moim przypadku T-SQL/SQL Server) czy w warstwie aplikacji (w moim przypadku C#/ASP.NET MVC)? * Jakie są zalecane podejścia do obliczania zaktualizowanych całkowitych wyników zespołu za każdym razem, gdy pojawiają się nowe dane wejściowe? Obliczanie łącznych wyników każdej z drużyn od zera za każdym razem, gdy nadejdzie nowe wejście, prawdopodobnie spowolni system do indeksowania. Rozważałem pewnego rodzaju podejście „różnicowe”, ale takie podejście może powodować problemy w przypadku zapytań ad-hoc i niektórych agregatów. Próbuję narysować pewne analogie sportowe, ale jest to trudne, ponieważ większość gier składa się z nie więcej niż 20 lub 30 punktów punktowanych na mecz (myślę o meczu baseballowym o wysokich wynikach; piłka nożna i piłka nożna mają mniej punktów punktowanych na mecz) . Być może analogia z bilansem finansowym ma więcej sensu, ponieważ obliczenia finansowe „dolnej linii” można obliczyć na podstawie 250 000 lub więcej transakcji. * Czy powinienem intensywnie korzystać z pamięci podręcznej dla tej aplikacji? * Czy istnieją jakieś oczywiste podejścia lub podobne studia przypadków, które mogę przeoczyć?


title: Utrzymanie kodu: utrzymywanie złego wzorca podczas rozszerzania nowego kodu pod kątem spójności, czy nie?

text: Muszę rozbudować istniejący moduł projektu. Nie podoba mi się sposób, w jaki to zostało zrobione (dużo antywzorców, takich jak kopiowanie/wklejanie kodu). Z wielu powodów nie chcę wykonywać pełnej refaktoryzacji. Czy powinienem: * tworzyć nowe metody używając istniejącej konwencji, nawet jeśli źle to czuję, aby uniknąć zamieszania dla następnego opiekuna i zachowania spójności z bazą kodu? lub * spróbuj użyć tego, co czuję się lepiej, nawet jeśli wprowadza inny wzorzec w kodzie? * * * Precyzja edytowana po pierwszych odpowiedziach: Istniejący kod nie jest bałaganem. Jest łatwy do naśladowania i zrozumienia. ALE wprowadza wiele standardowych kodów, których można uniknąć dzięki dobremu projektowi (wówczas wynikowy kod może być trudniejszy do naśladowania). W moim obecnym przypadku jest to stary dobry moduł DAO JDBC (spring template inboard), ale już spotkałem się z tym dylematem i szukam innych opinii deweloperów. Nie chcę dokonywać refaktoryzacji, ponieważ nie mam czasu. I nawet z czasem trudno będzie uzasadnić, że cały doskonale działający moduł wymaga refaktoryzacji. Koszt refaktoryzacji będzie większy niż korzyści. Pamiętaj: kod nie jest bałaganiarski ani zbyt skomplikowany. Nie mogę tam wyodrębnić kilku metod i wprowadzić tutaj klasy abstrakcyjnej. Jest to raczej wada w projekcie (myślę, że jest to wynik ekstremalnego 'Keep It Stupid Simple') Więc pytanie można zadać w ten sposób: Ty, jako programista, wolisz utrzymywać łatwy, głupi, nudny kod, czy mieć pomocników który zrobi głupi nudny kod u ciebie? Minusem ostatniej możliwości jest to, że będziesz musiał się czegoś nauczyć i być może będziesz musiał również utrzymywać łatwy głupi, nudny kod, dopóki nie zostanie wykonana pełna refaktoryzacja)


title: Jak radzić sobie z programistami, którzy nie używają języka angielskiego w kodzie?

text: > **Possible Duplicate:** > Utrzymanie kodu: utrzymywanie złego wzorca podczas rozszerzania nowego kodu ze względu na > spójność, czy nie? Pracuję nad projektem dla greckiej organizacji publicznej, w ramach projektu semestralnego kursu. Muszę stworzyć aplikację 3-warstwową do zarządzania danymi finansowymi. Mój profesor pełni funkcję doradcy i pomaga mi w projekcie. Piszę własny kod, ale są też fragmenty kodu napisane przez innych programistów, z których również mogę korzystać, a niektóre są również napisane przez mojego profesora. Greccy programiści nie używają żadnych wzorców ani konwencji, zazwyczaj nie znają wyrażeń takich jak „najlepsze praktyki” i „metodologia programowania”. Po prostu piszą kod czystej jakości. Większość z nich ma przynajmniej 10 lat więcej doświadczenia ode mnie, ale jestem w drodze. Mój profesor jest „pragmatycznym programistą” i tworzy „czysty kod, który działa” wysokiej jakości. Greccy programiści również mówią po angielsku. Problem polega na tym, że niektóre z nich używają greckiego dla różnych nazw zmiennych, klas i metod – oczywiście greckie znaki nie mogą być używane do takich celów. Na przykład greckie tłumaczenie słowa „użytkownik” to „χρήστης”, które w języku greckim można zapisać w następujący sposób: * xristis, * xrhsths, * hristis, * christis, * ... W rezultacie można mieć to samo znaczenie wyrażony różnymi postaciami. Niektórzy programiści używają języka angielskiego w swoim kodzie i nie ma w ogóle żadnych konwencji nazewnictwa. Pracuję nad tym projektem tylko ze względu na wiedzę i dalszą praktykę. Chciałbym zastosować praktyki, które przeczytałem w książkach, w oprogramowaniu, które może być również używane i modyfikowane przez innych. Czy powinienem nadal używać greeklish tylko po to, aby zachować harmonię z już istniejącym kodem? W takim razie, kto wie, Za kilka miesięcy mogę otrzymać cenną informację zwrotną za swój wysiłek, który ostatecznie uczyni mnie lepszym programistą. A może powinienem po prostu postępować właściwie, biorąc przykład od mojego profesora? W takim przypadku mój kod może być jednorazowym wyrzutem, ponieważ żaden z greckich programistów nie chciałby przestrzegać nowego zestawu konwencji.


title: Tworząc na starej bazie kodu, czy powinienem korzystać z najlepszych praktyk, czy dążyć do spójności?

text: > **Possible Duplicate:** > Utrzymanie kodu: utrzymywanie złego wzorca podczas rozszerzania nowego kodu jako > spójny, czy nie ? Ponieważ moje doświadczenie w programowaniu rośnie z każdym projektem, patrzę wstecz na wcześniejsze projekty i wzdrygam się na niektóre sposoby struktury kodu lub na to, jak dobrze zaimplementowałem wzorzec projektowy. Projekty te są nadal wykorzystywane w środowiskach produkcyjnych (bez problemu) i mają nowe funkcje wdrażane w cyklu rocznym. Aktualizacja całej struktury nie jest możliwa. Czy podczas wdrażania nowych funkcji powinienem uporządkować aktualizacje z uwzględnieniem najlepszych praktyk, czy też powinienem zachować istniejącą (gorszą) strukturę, aby zachować spójność z resztą projektu?


title: Wyjaśnienie kroków, które system operacyjny wykonuje podczas błędu strony, związanego z TLB

text: Czytam książki o systemach operacyjnych Galvina i jest coś, czego nie rozumiem. Załóżmy, że istnieje zarządzany sprzętowo bufor Translation Lookaside Buffer (TLB). Teraz, gdy program żąda strony, która znajduje się we własnej przestrzeni adresowej, ale nie znajduje się w TLB (brak), to co się dzieje? (zakładając, że nie ma jej również w tabeli strony) **OPCJA 1** 1. System operacyjny sprawdza tabelę stron, nie ma jej tam, ponieważ bit valid/invalid jest ustawiony na nieprawidłowy. 2. System operacyjny wybiera ofiarę, zamienia stronę z dysku 3. System operacyjny aktualizuje flagi tablicy stron 4. Zastąp wpis w TLB nowym wpisem w tablicy stron 5. Uruchom ponownie instrukcję, która teraz działa tak, jakby nic się nie stało **OPCJA 2** 1. Gdy występuje brak TLB, wpis tablicy strony dla strony jest wprowadzany jako pierwszy do TLB 2. Rozkaz jest ponownie uruchamiany 3. Występuje trafienie TLB, ale ważny/nieważny bit jest nieprawidłowy => strona nie jest w pamięć 4. Następnie system operacyjny wybiera ofiarę, zamienia stronę....reszta kroków jest taka sama Myślę, że pytanie sprowadza się do **czy tylko TLB może być sprawdzany pod kątem prawidłowego/nieprawidłowego bitu (ze względów sprzętowych) lub samą tabelę stron można sprawdzić.** Ponieważ OPCJA 2 jest wyraźnie wolniejsza. (ale przyjaciel upiera się, że tak musi się stać) Z góry dziękuję!


title: Interfejs API mapowania konturów

text: Zrobiłem trochę wyszukiwania w Google, ale jak dotąd nie wymyśliłem zbyt wiele. Chcę pobrać zestaw danych punktowych, których wcześniej używałem do tworzenia ważonych punktów dla mapy cieplnej za pośrednictwem Google API, i przekształcić je w mapę konturową do nałożenia na Google Maps API. Nie widziałem w kodzie Google niczego, co pozwoliłoby mi to zrobić. Czy ktoś zna dobry API do stworzenia takiej nakładki? A może jest coś, co przeoczyłem, co oferuje Google?


title: Organizowanie kodu do tworzenia aplikacji na iOS

text: Tworzyłem aplikację na platformę iOS i w miarę postępów zauważyłem, że wykonałem straszną robotę, aby uporządkować moje pliki (.h, .m, .mm). Czy istnieją standardy branżowe lub najlepsze praktyki, jeśli chodzi o organizowanie plików do projektu iOS? Moje pliki zawierają niestandardowe klasy (oprócz kontrolerów widoku), dostosowane kontrolery widoku, zawartość stron trzecich, kod, który działa tylko w systemie iOS 5.0+ oraz kod, który działa w poprzednich wersjach. To, czego szukam, to rozwiązanie, które pozwoli uporządkować wszystko w taki sposób, aby inni (lub ja w nadchodzących latach) mogli na to spojrzeć i zrozumieć podstawową strukturę aplikacji i nie zgubić się w wielu znalezionych w niej plikach.


title: Wybór implementacji JAX-RS dla nowego projektu

text: Zaczynam nowy projekt Java, który będzie wymagał RESTful API. Będzie to aplikacja biznesowa SaaS obsługująca klientów mobilnych. Stworzyłem jeden projekt w Javie EE 6, ale nie znam się zbyt dobrze z ekosystemem, ponieważ większość mojego doświadczenia dotyczy platformy Microsoft. Jaki byłby rozsądny wybór dla implementacji JAX-RS dla nowego projektu, takiego jak opisany? Sądząc po liście Wikipedii, głównymi rywalami wydają się być Jersey, Apache CXF, RESTeasy i Restlet. Ale porównanie implementacji JAX-RS cytowane na Wikipedii pochodzi z 2008 roku. Moje pierwsze wrażenie z ich stron głównych jest takie, że: * **CXF** ma być bardzo wszechstronnym rozwiązaniem (przypomina mi WCF w przestrzeni Microsoft), co sprawia, że myślę, że zrozumienie, konfiguracja i debugowanie może być bardziej skomplikowane niż to, czego potrzebuję; * **Jersey** jest implementacją referencyjną i może być dobrym wyborem, ale jest spuścizną po Sun i nie jestem pewien, jak traktuje ją Oracle (strona z ogłoszeniami nie działa, a ostatnie powiadomienie o zatwierdzeniu pochodzi sprzed 4 miesięcy) ; * **RESTeasy** pochodzi od JBossa i prawdopodobnie jest solidną opcją, chociaż nie jestem pewien co do krzywej uczenia się; * **Restlet** wydaje się być popularny, ale ma długą historię, nie jestem pewien, na ile jest aktualny w świecie Java EE 6 lub czy ma ciężki sposób myślenia J2EE (jak wiele konfiguracji XML ). Jakie byłyby zalety każdej z tych alternatyw? A co z krzywą uczenia się? Obsługa funkcji? Narzędzia (np. kreatory NetBeans lub Eclipse)? A co z łatwością debugowania, a także wdrażania? Czy któryś z tych projektów jest bardziej aktualny od pozostałych? Jak stabilne są?


title: Jaka jest historia luk w Javie?

text: Zawsze doceniałem język Java. Jest znana jako bardzo bezpieczna platforma i wiele banków używa jej w swoich aplikacjach internetowych. Chciałem zbudować projekt dla mojej szkoły i omówiłem opcje z niektórymi programistami. Jednak jeden z nich powiedział, że powinniśmy zignorować Javę ze względu na ostatnio pojawiające się w niej luki. Z tego powodu chcę się upewnić, jaka jest za tym historia i czy to oznacza, że Java nie uważała dziś za tak bezpieczną, jak wcześniej?


title: Stosujesz model aktorski a model producent-konsument?

text: Prowadzę badania na wczesnym etapie tworzenia nowej aplikacji oprogramowania. Współbieżność i wielowątkowość prawdopodobnie odegrają znaczącą rolę, więc czytałem różne tematy. Model producent-konsument, przynajmniej tak, jak jest wyrażany w Javie, ma pewne podobieństwa powierzchniowe, ale wydaje się być bardzo niepodobny do modelu aktora używanego w językach takich jak Erlang i Scala. Mam problem ze znalezieniem dobrych danych porównawczych lub konkretnych powodów, aby użyć lub uniknąć jednego lub drugiego. Czy model aktora jest w ogóle możliwy w Javie lub C#, czy też używasz jednego z języków stworzonych do tego celu? Czy istnieje trzecia droga?


title: Jak się zmotywować technicznie do realizacji moich pomysłów lub po prostu dostać pracę w MNC, jak google lub microsoft

text: Mam na myśli, > Jak się zmotywować, aby dostać pracę w google lub stworzyć inne google w > przyszłości. ,ponieważ nie ma mentora, który mógłby mnie poprowadzić w tym temacie, więc zapytałem go tutaj: Jestem Absolwentem BE IT,ale z mniejszą liczbą ocen,z zainteresowaniem nauką nowych języków programowania, ale jeszcze nie zrobiłem nic wielkiego jak opracowanie niektórych system lub cokolwiek. I zostały mi jeszcze 2 lata, żeby udowodnić komuś swoją wartość. Więc jest to ich krótki przewodnik, jak zacząć uczyć się języka, a następnie kontynuować wdrażanie swoich pomysłów i zostanie to docenione lub dostanę dobrą pracę i Big MNC. Nawiasem mówiąc, po prostu buduję jedną stronę internetową dla mojego jednego klienta i prowadzę bloga wordpress. W przeszłości próbowałem swoich sił w podstawach C++, Java, JS, JSP, PHP, Ubuntu, projektowania stron internetowych.


title: Co Windows 8 oznacza dla przyszłości .NET?

text: Microsoft zaprezentował demo systemu Windows 8, w tym nową platformę, która umożliwia programistom korzystanie z HTML5 i JavaScript. Czy ta nowa platforma jest głównym sposobem tworzenia dla Windows 8? Czy Microsoft wycofuje platformę .NET na rzecz stosu HTML 5? Co oznacza Windows 8 dla programistów .NET?


title: Najlepsze praktyki dotyczące włączania kodu open source z innych projektów publicznych?

text: Jeśli używam istniejącego projektu open source, który jest hostowany na przykład na github w jednym z moich projektów, czy powinienem zaewidencjonować kod z innego projektu do mojego publicznego repozytorium, czy nie? Mam mieszane uczucia w związku z tym, #1 Chcę przyznać odpowiedni kredyt i przypisanie oryginalnemu programiście, a jeśli będzie to stosowne, wniosę z powrotem wszelkie zmiany, które muszę wprowadzić. Jednak biorąc pod uwagę, że opracowałem / przetestowałem z konkretną wersją kodu innych projektów, jest to wersja, którą chcę dystrybuować wśród użytkowników mojego projektu. Oto konkretny przypadek użycia ilustrujący mój punkt widzenia. Szukam bardziej uogólnionej odpowiedzi niż ten konkretny przypadek. Opracowuję prosty framework przy użyciu rabbitmq i python dla wiadomości wychodzących, który pozwoli na wysyłanie smsów, twittera, e-maili i jest rozszerzalny o obsługę dodatkowych magistral wiadomości. Na githubie znajduje się projekt, który umożliwi tworzenie i wysyłanie wiadomości SMS opracowany przez inną osobę. Kiedy tworzę własne repozytorium, jak rozliczyć kod, który dołączam z innego projektu?


title: Co jest uważane za kod strony trzeciej?

text: Zainspirowało Cię to pytanie Korzystanie z bibliotek innych firm — zawsze używaj wrappera? Chciałem wiedzieć, co ludzie faktycznie uważają za biblioteki firm trzecich. **Przykład z PHP:** Jeśli tworzę aplikację używając frameworka Zend, czy powinienem traktować biblioteki frameworka Zend jako kod stron trzecich? **Przykład z C#:** Jeśli tworzę aplikację desktopową, czy wszystkie klasy .Net należy traktować jako kod strony trzeciej? **Przykład z Javy:** Czy wszystkie biblioteki w JDK należy traktować jako biblioteki firm trzecich? Niektórzy mówią, że jeśli biblioteka jest stabilna i nie będzie się często zmieniać, to nie trzeba jej pakować. Jednak nie widzę, jak można przetestować klasę, która zależy od kodu innej firmy, bez jej zawijania.


title: Schemat vs Haskell dla wprowadzenia do programowania funkcjonalnego?

text: Potrafię programować w C i C#, a w przyszłości zgłębię C++. Być może zainteresuje mnie eksploracja programowania funkcjonalnego jako innego paradygmatu programowania. Robię to dla zabawy, moja praca nie jest związana z programowaniem komputerowym, a inspirację czerpię z programowania funkcjonalnego, którego uczy się dość wcześnie na kursach informatyki na studiach. Rachunek lambda z pewnością wykracza poza moje zdolności matematyczne, ale myślę, że poradzę sobie z programowaniem funkcjonalnym. Który z Haskella lub Scheme byłby dobrym wstępem do programowania funkcjonalnego? Używam emacsa jako edytora tekstu i chciałbym móc go łatwiej konfigurować w przyszłości, co wiązałoby się z nauką Emacs Lisp. Rozumiem jednak, że Emacs Lisp różni się znacznie od Scheme i jest również bardziej proceduralny niż funkcjonalny. Prawdopodobnie korzystałbym z książki „Mała intryga”, którą już kupiłem, jeśli podążam za Schematem (wydaje mi się trochę dziwne z powodu mojego ograniczonego przeglądania). Albo użyję „Naucz się Haskella dla wielkiego dobra”, jeśli będę ścigał Haskella. Chciałbym również obejrzeć filmy wprowadzające do Haskella autorstwa dr Erika Meijera na kanale 9. Wszelkie sugestie, opinie lub uwagi są mile widziane. Dziękuję. PS BTW mam również dostęp do F#, ponieważ mam Visual Studio 2010, którego używam do programowania w C#, ale nie sądzę, że powinno to być moim głównym kryterium wyboru języka.