title: Rozwiązanie Java do wzajemnego uwierzytelniania za pomocą karty inteligentnej

text: Muszę opracować rozwiązanie Java do wzajemnego uwierzytelniania między Tomcat 6 (serwer) a SmartCard "IDGo 300" (klient). W tym celu pomyślałem o następującym schemacie: 1.Tomcat (serwer) wysyła do SmartCard (klient) żądanie swojego certyfikatu cyfrowego (podpisanego przez CA). 2.Klient wprowadza PIN i wybiera dostępny certyfikat na karcie inteligentnej, a następnie aplet wysyła swój certyfikat (podpisany przez CA) do Tomcata. Tomcat weryfikuje certyfikat cyfrowy i, jeśli jest poprawny, odsyła certyfikat. 3. Aplet weryfikuje certyfikat serwera i jeśli certyfikat jest poprawny wysyła potwierdzenie do serwera. Serwer daje pełny dostęp klientowi do korzystania z aplikacji webowej. Mam kilka pytań: 1. Czy ten schemat jest wykonalny? 2.Chciałbym zarządzać wszystkim przez mój aplet, a gdy klient odłączy kartę inteligentną, straci dostęp do serwera.


title: Standardowe praktyki dotyczące kontroli dostępu (wzorzec projektowy)

text: Patrzę na projekt mojego interfejsu i nie mogę zdecydować, który jest najbardziej „właściwym” sposobem implementacji kontroli dostępu opartej na rolach, biorąc pod uwagę „użytkownika” i „podmiot”, do którego „użytkownik” chciałby uzyskać dostęp. * * * Z tego co widzę, mam trzy podstawowe opcje (czwarta to znieważenie pierwszych trzech, a piąta to ulepszenie czwartej): 1. Zapytaj "temat" z listą uprawnień, które `użytkownik` has — `subject.allowAccess(user.getPermissionSet)` 2. Zapytanie użytkownika `z listą uprawnień wymaganych przez `temat` — `user.hasPermissionTo(subject.getRequiredPermissions())`` 3. Zapytanie a innej firmy, aby zlokalizować punkty przecięcia uprawnień - `accessController.doPermissionSetsIntersect(subject.permissionSet, user.getPermissionSet())` 4. _Zapytaj o `subject`/`user`, jednocześnie delegując „decyzję” na stronę trzecią class_ 5. Niech `user` spróbuje uzyskać dostęp do `tematu` i wygeneruje błąd, jeśli dostęp nie jest dozwolony * * * Skłaniam się ku opcji czwartej - Czy `subject` zawiera pole `accessController`, gdzie wywołuje ` subject.userMayAccess(User user)` deleguj operację a la: class Subject { public function display (użytkownik) { if(!accessController.doPermissionSetsIntersect(this.permissionSet, user.getPermissionSet())) { display403(); //Lub inny... np. zgłoś błąd.. } } } .. ale to rodzi dalsze pytania: * czy `accessController` powinien być polem czy klasą statyczną...? * Czy `podmiot` _wiedzieć_, jakie uprawnienia są wymagane, aby móc go wyświetlić? * gdzie w grę wchodzi zasada najmniejszej wiedzy w odniesieniu do wywołania `subject.display()``? Czy osoby wywołujące `subject.display()` powinny wiedzieć, że obowiązuje kontrola dostępu? (gdzie `subject.display()` jest ostateczną "metodą szablonu") * czy `subject.display()` zarządza kontrolą dostępu, zgłaszając wyjątek, gdy użytkownik nie ma wymaganych uprawnień? * * * Co w tej sytuacji można by uznać za „najlepszą praktykę”? Gdzie powinna faktycznie ponosić odpowiedzialność za przeprowadzanie kontroli? Ponieważ jest to poniekąd ćwiczenie akademickie, które następnie przejdzie do wdrożenia, mile widziane byłyby odniesienia do wzorców projektowych.


title: Kiedy należy przekazać wartość jako zmienną klasy, a kiedy jako argument metody?

text: Czy istnieje ogólna zasada, kiedy powinniśmy przekazać wartość jako zmienną klasy, a kiedy jako argument metody? A może to tylko wybór dewelopera? Na przykład -- czy są jakieś powody, dlaczego (kod PHP): class SomeClass { public function __construct() { $this->id = $_GET['id']; $this->showMessage(); } public function showMessage() { echo 'Identyfikator to '.$this->id; } } jest lepsze (lub gorsze?) niż to: class SomeClass { public function __construct() { $this->showMessage($_GET['id']); } public function showMessage($id) { echo 'Identyfikator to '.$id; } } Zauważ, że pytam tylko o różnice między przekazywaniem wartości jako zmiennej klasy a przekazywaniem jako argumentu metody. Proszę nie zwracać uwagi, że nigdy nie powinienem operować bezpośrednio na superglobalach w PHP. Wiem, że to jest złe. Użyłem go tutaj, aby uprościć przykład.


title: Gdzie lub kiedy zacząć pisać własny framework PHP?

text: Przede wszystkim wiem, że wymyślanie koła na nowo jest _zazwyczaj_ złym pomysłem, ale chcę napisać framework PHP **aby nauczyć się OOP w PHP i zrozumieć MVC** w wolnym czasie. Powiedziałem, że muszę zrobić dwie sieci z kilkoma prostymi interakcjami z bazą danych, podstawową funkcją sieci jest pokazywanie informacji. Chcę używać w tych sieciach własnego frameworka, ale nie wiem, gdzie i kiedy zacząć. Czy powinienem najpierw zacząć robić framework, a potem strony internetowe? czy powinienem zacząć robić jedną stronę, potem framework, a potem drugą?


title: Dlaczego ciemne schematy kolorów w edytorach są tak popularne?

text: W dzisiejszych czasach prawie wszyscy używają ciemnego schematu kolorów w swoim edytorze kodu - ciemne tło z jasnym tekstem. Nawet większość edytorów internetowych (np. na Github) oferuje ciemne schematy kolorów. Szczerze nie widzę korzyści. Ludzkie oko znacznie lepiej radzi sobie z odczytywaniem ciemnego tekstu na jasnym tle. Ponadto schematy kolorów czarno na białym działają znacznie lepiej, gdy jesteś w jasno oświetlonym otoczeniu. Obecnie siedzę w biurze, a przez okno świeci słońce. Potrafię czytać tekst w moim edytorze (gVim z ciemnym tekstem na białym tle) całkiem dobrze, ale na konsoli linuksowej jest to znacznie trudniejsze. Edycja tekstu w vimie konsoli jest dla mnie prawie niemożliwa. Cała sprawa wydaje mi się trochę dziwnym szumem, zapoczątkowanym przez domyślne ustawienia w niektórych IDE/edytorach. Ale może jestem po prostu dziwny... ;) W każdym razie, dlaczego wszyscy ich używają?


title: Książka Martina Fowlera o refaktoryzacji: instrukcja switch używa danych innego obiektu, dlaczego to jest złe? Poszukuje się głębszego wyjaśnienia.

text: W poniższym przykładzie kodu obiekt Rental używa pól Movie do wykonania instrukcji switch. Martin mówi: to zły pomysł, ale nie podaje głębszego wyjaśnienia, dlaczego? Oczywiście możesz powiedzieć, że oznacza to wiele sprzężeń między filmem a wypożyczeniem, albo że film jest źle ujęty, ale to tylko (prawie bezsensowne) słowa, znowu, nie wyjaśniają, dlaczego? Można powiedzieć, że nie docierają do sedna pytania. Nie dają zbyt wiele zrozumienia. Co chciałbym wiedzieć, jeśli istnieje głębsza, bardziej ogólna zasada projektowania, dlaczego włączenie wypożyczania jest złym pomysłem ? Innymi słowy, skąd Martin wie, że instrukcja switch znajduje się na niewłaściwym obiekcie? Skąd czerpie ten wgląd? Jaki jest jego proces myślowy? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/ZRfY8.png)


title: Zaloguj się przy użyciu adresu e-mail lub nazwy użytkownika?

text: Czy logowanie do rejestracji przy użyciu e-maila jest lepszym pomysłem niż nazwa użytkownika do identyfikacji użytkownika?


title: Jak narysować spiralę za pomocą segmentów różnych okręgów?

text: Mam stary ploter, który nie radzi sobie z drukowaniem prawdziwych spiral. Potrzebuję pomocy w opracowaniu algorytmu przybliżającego spiralę. Oto skrypt dolny LISP, który napisałem, który używa półokręgów o różnych promieniach do narysowania spirali: (setq inner_radius 1e3) ; Spirala rośnie od promienia wewnętrznego do promienia zewnętrznego (setq coil_thickness 35) ; To jest połowa skoku spirali, skok wynosi 70 (setq zewnętrzny_promień (+ 2.4e3 (* 2 grubość_cewki))) (podczas gdy (< inner_radius zewnętrzny_radius) (setq P1 (lista 0 inner_radius)) (setq P2 (lista inner_radius 0 )) (setq P3 (lista 0 (* -1 promień_wewnętrzny))) (setq P4 (lista (- (- promień_wewnętrzny) grubość_cewki) grubość_cewki)) (setq P5 (lista 0 (+ promień_wewnętrzny (* grubość_cewki 2)))) ( polecenie „ŁUK” P1 P2 P3) ; Rysuje 3-punktowy łuk przez P1, P2 i P3 (polecenie „ŁUK” P3 P4 P5) ; Rysuje 3-punktowy łuk przez P3, P4 i P5 (setq promień_wewnętrzny (+ promień_wewnętrzny (* grubość_zwoju) 2))) ) Do implementacji skryptu używam programu `AutoCAD`. Kod tutaj jest wykrętem - mogę zaimplementować prawdziwą spiralę w programie `AutoCAD`, ale ploter, który to wykreśli, jest przestarzały i nie jest w stanie obsłużyć prawdziwej spirali. Może obsługiwać tylko łuki okręgów i segmenty linii. Poszukuję metody, która pozwoli na lepsze przybliżenie spirali. Na przykład próbowałem myśleć o ćwiartkach (zamiast półokręgów, których użyłem w powyższym skrypcie dolnym), ale nie mogłem wymyślić realnego schematu.


title: Optymistyczna funkcja heurystyczna AlienTiles

text: Witam Próbuję użyć problemu alienTile opisanego na stronie www.alientiles.com przy użyciu algorytmu A*, ale do tej pory nie mogę znaleźć żadnej dobrej funkcji heurystycznej. Na płytkach obcych masz planszę z płytkami NxN, wszystkie pokolorowane na czerwono. Klikając na kafelek, wszystkie kafelki w tym samym rzędzie i kolumnie przesuwają się o kolor, kolejność kolorów to czerwony->zielony->niebieski->fioletowy, zmieniając się na czerwony po fioletowym. Celem jest zmiana wszystkich płytek na określone kolory. Najprostszym stanem docelowym są wszystkie kafelki przechodzące od czerwonego do zielonego, niebieskiego lub fioletowego. Plansza nie musi być 7x7, jak sugeruje strona. Czy jest dobry punkt, aby zacząć, ponieważ jestem całkowicie sfrustrowany tym, jak mam sobie poradzić z problemem?


title: Czy powinienem najpierw utworzyć przypadki użycia czy diagramy klas?

text: Projektuję więc system zarządzania edukacją (więcej informacji) i zastanawiam się, czy najpierw powinienem utworzyć przypadki użycia, czy diagramy klas?


title: Przewaga Java w platformie koszyka

text: Platforma/frameworki do koszyków na zakupy PHP o otwartym kodzie źródłowym zajmują najwięcej miejsca na liście. Są gorące i chcemy szybko zacząć. Podejmiemy więc decyzję między Magento a Opencart, programiści PHP byliby z tego zadowoleni. Podczas gdy moje szkoły programowania Java nie są tak szczęśliwe, sprzedawały Broadleaf commerce lub JadaSite. Ale więcej lektur online i dyskusji popycha nas w tę stronę. Koszyki PHP są coraz częściej używane, a więc testowane częściej i otrzymują wsparcie dla wielu sklepów i wielu dostawców. Jaka będzie przewaga Javy w tej dziedzinie open source? A może powinniśmy wierzyć, że Java może zapewnić przyzwoitą infrastrukturę na dłuższą metę?


title: Jak odświeżyć/zachować aktualne treści w przeglądarce bez przeciążania serwera?

text: Nie jestem bardzo wykształcony na ten temat programowania, więc szukam porady/wiedzy. Koduję aplikację internetową w PHP, a to konkretne zadanie wymaga aktualizacji wyświetlacza po udostępnieniu na serwerze nowych informacji. Tak więc jednym pozornie złym rozwiązaniem jest posiadanie powtarzającego się żądania AJAX, które co jakiś czas spamuje serwer i aktualizuje, gdy otrzymuje nowe dane. Powoduje to duży stres na serwerze, więc wydaje mi się nieopłacalne. Próbowaliśmy użyć Ratchet (http://socketo.me/), ale nie mogliśmy tego rozgryźć. Czy to nadmiernie komplikuje, czy też istnieje inny sposób, w jaki możemy rozwiązać ten problem, jednocześnie utrzymując obciążenie serwera tak „praktycznie” jak najmniejsze. Istnieją strony internetowe, takie jak Facebook/większość mediów społecznościowych, które dynamicznie pokazują nowe dane, gdy są one dostępne – zakładam, że używają również czegoś, co minimalizuje żądania do serwera? Czy to założenie jest błędne?


title: Pomoc przy seminarium na temat testowania oprogramowania

text: Wszystko, muszę przeprowadzić małe seminarium (trwające około 20 minut) na zajęciach z testowania oprogramowania. Biorąc pod uwagę ograniczenia czasowe, chciałem zasięgnąć opinii wszystkich na temat głównych tematów, które powinienem poruszyć na tym seminarium. Ponadto, jeśli pomocne byłyby jakiekolwiek odniesienia do dokumentów/filmów dotyczących testowania oprogramowania.


title: Czy monady są realną (być może lepszą) alternatywą dla hierarchii dziedziczenia?

text: Zamierzam użyć niezależnego od języka _opisu_ monad takich jak ten, najpierw opisując monoidy: > **Monoid** to (w przybliżeniu) zestaw funkcji, które przyjmują jakiś typ jako parametr > i zwracają ten sam typ. > > **monada** to (w przybliżeniu) zestaw funkcji, które przyjmują typ _wrapper_ jako > parametr i zwracają ten sam typ opakowania. _Zauważ, że to są opisy, a nie definicje. Nie krępuj się atakować tego opisu!_ Tak więc w języku OO, monada pozwala na składanie operacji takich jak: > `Flier<Duck> m = new Flier<Duck>(duck).takeOff().flyAround().land()` Zauważ, że monada definiuje i kontroluje semantykę tych operacji, a nie zawartą klasę. Tradycyjnie w języku OO używalibyśmy hierarchii i dziedziczenia klas, aby zapewnić tę semantykę. Więc mielibyśmy klasę `Bird` z metodami `takeOff()`, `flyAround()` i `land()`, a Duck by je odziedziczył. Ale potem wpadamy w kłopoty z nielotami, ponieważ `pingwin.takeOff()` kończy się niepowodzeniem. Musimy uciekać się do rzucania i obsługi wyjątków. Ponadto, gdy powiemy, że Pingwin jest „Ptakiem”, napotykamy problemy z wielokrotnym dziedziczeniem, na przykład jeśli mamy również hierarchię „Pływak”. Zasadniczo staramy się podzielić klasy na kategorie (z przeprosinami dla ludzi zajmujących się teorią kategorii) i zdefiniować semantykę według kategorii, a nie w poszczególnych klasach. Ale monady wydają się o wiele wyraźniejszym mechanizmem do robienia tego niż hierarchie. Więc w tym przypadku mielibyśmy monadę `Flier<T>` jak w powyższym przykładzie: > `Flier<Duck> m = new Flier<Duck>(duck).takeOff().flyAround().land() ` ...i nigdy nie stworzylibyśmy instancji `Flier<Penguin>`. Moglibyśmy nawet użyć statycznego pisania, aby temu zapobiec, na przykład za pomocą interfejsu znacznika. Lub sprawdzanie możliwości środowiska wykonawczego w celu ratowania. Ale tak naprawdę programista nigdy nie powinien umieszczać Pingwina w Flier, w tym samym sensie, w którym nigdy nie powinien dzielić przez zero. Ma też bardziej ogólne zastosowanie. Lotnik nie musi być Ptakiem. Na przykład `Flier<Pterodactyl>` lub `Flier<Squirrel>`, bez zmiany semantyki poszczególnych typów. Kiedy już dokonamy klasyfikacji semantyki za pomocą funkcji komponowanych w kontenerze — zamiast hierarchii typów — rozwiąże to stare problemy z klasami, które „tak jakby nie pasowały” do określonej hierarchii. Pozwala również łatwo i wyraźnie na wiele semantyk dla klasy, takich jak `Flier<Duck>` oraz `Swimmer<Duck>`. Wygląda na to, że zmagaliśmy się z niedopasowaniem impedancji, klasyfikując zachowanie za pomocą hierarchii klas. Monady radzą sobie z tym elegancko. Więc moje pytanie brzmi, w ten sam sposób, w jaki przedkładamy kompozycję nad dziedziczenie, czy ma również sens faworyzowanie monad nad dziedziczeniem? (Przy okazji nie byłem pewien, czy to powinno być tutaj, czy w Comp Sci, ale wydaje się to bardziej praktycznym problemem modelowania. Ale może lepiej tam.)


title: Jak zgłosić „doświadczenie startowe” w swoim CV?

text: Załóżmy, że spędziłeś znaczną ilość czasu (5 lat) seryjnie zakładając firmy, z wystarczającym sukcesem, aby działać przez 5 lat, ale nie na tyle, aby przejść na emeryturę bogatą. A teraz, z kredytem hipotecznym i poważnym związkiem, wypalonym, próbujesz odkurzyć swoje CV i znaleźć stałą pracę od 9 do 17. Jak zarejestrowałbyś/raportowałbyś swoje doświadczenie w pracy w startupach? Tworzenie listy technologii brzmi głupio (wyjdzie spod kontroli ze względu na rozmiar) i bardzo niekompletne (w przypadku bardzo małych start-upów na wczesnym etapie jest _o wiele_ więcej pracy do wykonania niż tylko zhakowanie kodu). Regularna praca programistyczna również wydaje się marnotrawstwem (przy całej tej mieszance doświadczenia, która pochodzi z pracy w startupie, rezygnacja z dodatkowych umiejętności nabytych po drodze nie wydaje się być w porządku), więc raportowanie o doświadczeniu tak, jak można by na zwykłym CV programisty może nie być właściwą rzeczą.


title: Tytuły: Programista poziomu I, II i III

text: > **Możliwy duplikat:** > Jakich osobistych kamieni milowych możesz użyć, aby zmierzyć wzrost > swoich umiejętności programistycznych? Szukam kryteriów, które sprawiają, że programista jest na poziomie I, II i III? Jakich tematów spodziewałbyś się poznać/zrozumieć/opanować na każdym poziomie?


title: Jaka jest hierarchia stanowisk wśród inżynierów oprogramowania?

text: > **Możliwy duplikat:** > Co oznacza sufiks po tytule stanowiska inżyniera oprogramowania/programisty? > (tj. Software Developer III) > tytuły awansu zawodowego Mam problem ze zrozumieniem hierarchii stanowisk w inżynierii oprogramowania. System jest jeszcze bardziej skomplikowany z powodu braku spójnych konwencji nazewnictwa podczas przypisywania ról: na przykład niektóre firmy mają po prostu stanowisko „starszego programisty”, podczas gdy inne mają inżyniera oprogramowania I, inżyniera oprogramowania II, inżyniera oprogramowania III i tak dalej. Nawet na najwyższych stanowiskach mamy takie rzeczy jak „główny inżynier oprogramowania” kontra „inżynier oprogramowania dla personelu”. Jaka jest standardowa hierarchia dla inżynierów oprogramowania? Czy istnieje ogólnie przyjęta kolejność dziobania?


title: tytuły awansu zawodowego

text: Po jakimś czasie googlowania nie udało mi się ustalić hierarchii różnych tytułów w rozwoju kariery. Szczególnie niejasny jest dla mnie związek między starszym inżynierem a specjalistą ds. oprogramowania. Który jest wyższy? Przede wszystkim chciałbym zobaczyć linki wskazujące na pewne ścieżki rozwoju kariery od stażysty do najwyższego szefa i jakie są różne ścieżki, w tym ścieżki techniczne i menedżerskie.


title: Jak uzyskać dostęp do zaszyfrowanego pliku INI z C na wbudowanym systemie z małą ilością pamięci RAM?

text: Chcę zaszyfrować plik INI za pomocą programu Delphi na komputerze z systemem Windows. Następnie muszę odszyfrować i uzyskać dostęp w C na wbudowanym systemie z małą ilością pamięci RAM. Zrobię to raz i wezmę wszystkie informacje; Nie będę stale uzyskiwał dostępu do pliku INI za każdym razem, gdy mój program będzie potrzebował danych z pliku. Jakieś porady, jakiego szyfrowania użyć? Nic zbyt ciężkiego, po prostu wystarczająco dobre dla "Bezpieczeństwa przez zapomnienie" i FOSS dla Delphi i C. A jak mogę odszyfrować, uzyskać wszystkie informacje z pliku INI - używając jak najmniej pamięci RAM, a następnie zwolnić przydzieloną pamięć RAM? **[Aktualizacja]** Obecnie używam Atmel UC3, chociaż nie jestem pewien, czy to będzie ostateczny przypadek. Posiada 512kB falsyfikatu i 128kB RAM. W przypadku pliku INI mówię o maks. 8 sekcjach, w sumie maks. 256 wpisów, każdy maks. 8 znaków. Wybrałem INI (ale nie jestem z nim żonaty), ponieważ w przeszłości miałem poważne problemy ze zmianą formatu pliku danych, bez względu na to, czy jest to binarny, czy tekstowy. W przypadku tex wolę darmowy format INI (na PC), ale przypuśćmy, że mógłbym przełączyć się na `line_1=data_1, line_2=data_2` i zaakceptować, że jeśli dodam nowe pola w przyszłych wersjach oprogramowania, muszą one pojawić się na końcu, nawet jeśli nie jest ładna, gdy czyta się ją bezpośrednio przez człowieka. Przypuszczam, że jeśli wybiorę plik tekstowy o stałym formacie, to nigdy nie będę potrzebować więcej niż jednej linii do pamięci RAM na raz ... **[Werdykt]** Pójdę z TEA lub AES (do ustalenia). Podzielę tę funkcjonalność na dwie części: 1) odszyfruj do zwykłego pliku tekstowego, 2) przeanalizuj go jako plik INI i jeśli napotkam problemy z pamięcią, zmień na format `line_1=data_1, line_2=data_2`. Dzięki za pomoc.


title: opatentowany algorytm

text: Co to znaczy, że algorytm jest opatentowany? Czy mogę z niego korzystać, o ile nie zarabiam na nim pieniędzy? Pytam, ponieważ pracuję nad projektem i zdarzyło mi się odkryć algorytm wykrywania cech, który chcę zaimplementować, ale potem jest przez kogoś opatentowany. Czy mogę skorzystać z algorytmu? To jest na projekt szkolny


title: Gdybym chciał zbudować wyszukiwarkę, jak bym zaczął?

text: Czy ktoś może wskazać mi właściwy kierunek? Naprawdę nie mam doświadczenia w pisaniu kodu, ale szybko się uczę. Nie mówię, że to będzie łatwe, ale mam nadzieję, że ktoś mi pomoże...


title: Jakie są zalety i wady podejścia do HTML5, natywnych i hybrydowych aplikacji mobilnych?

text: Chcę stworzyć aplikację mobilną .. Przeczytałem ostatnio artykuł na Telerik Forum : porównuje między trzema typami aplikacji mobilnych i nie wiem, który z nich powinienem wybrać na początek .. [OD Telerik] ![wprowadź obrazek opis tutaj](http://i.stack.imgur.com/YA81J.jpg) Aby dokonać wyboru, muszę lepiej zrozumieć zalety i wady każdego wyboru architektury wymienionego na powyższym schemacie. Jakie są plusy i minusy każdego podejścia architektonicznego?


title: Jakie algorytmy i struktury danych powinien absolutnie znać programista?

text: Chcę być odnoszącym sukcesy programistą Java dla przedsiębiorstw. Jakie algorytmy i struktury danych powinienem dobrze znać? Jakie książki poleciłbyś mi? Czy aby odnieść sukces jako programista Java, muszę znać wszystkie zaawansowane algorytmy, takie jak te podane w CLRS? Czy możesz zaproponować listę tematów, których powinienem się nauczyć w porządku malejącym według ich priorytetów? Czy muszę wiedzieć: * Wyszukiwanie? * Sortowanie? * Wykresy/drzewa? itp?


title: Jak zarządzać parą-programowaniem sprawdzania kodu w identyfikacji użytkownika?

text: Jak identyfikować użytkowników, gdy para programistów sprawdza kod? Słyszałem narzekanie, że często młodszy programista będzie przy klawiaturze, używając swojego konta, ale nie będzie to najlepsza osoba do zadawania pytań na temat wpisywanego kodu (im starszy programista prawdopodobnie będzie miał najlepsza odpowiedź). Czy to naprawdę problem? Wygląda na to, że zespół programistów mógłby wymyślić jakiś sposób na identyfikację par i uzyskanie niezbędnych informacji w swoim oprogramowaniu do kontroli wersji. Myślę też, że nie odnoszą korzyści z tego procesu, jeśli obaj programiści nie wiedzą, co robi ich kod.


title: Pojedyncze cudzysłowy a podwójne cudzysłowy

text: Właśnie rozpocząłem pracę, w której piszę Pythona po przejściu z Javy i zauważam, że inni programiści mają tendencję do cytowania ciągów znaków za pomocą pojedynczych cudzysłowów (`''`) zamiast podwójnych (`""`). Na przykład: line1 = 'Tak zwykle wyglądają łańcuchy.' line2 = "Nie w ten sposób." Czy jest jakiś szczególny powód, inny niż osobiste preferencje? Czy to właściwy sposób cytowania ciągów znaków? W szczególności chcę wiedzieć, czy istnieje jakiś rodzaj standardu lub zaakceptowanej najlepszej praktyki, która napędza ten styl kodowania.


title: Najlepsze praktyki / Wzorce projektowe do generowania kodu

text: Pracuję nad projektem generatora kodu, ale czuję, że mogę odkrywać koło na nowo. Czy ktoś wie, gdzie mogę znaleźć wskazówki dotyczące najlepszych praktyk lub wzorce projektowe do generowania kodu?


title: Narzędzie do wizualizacji wartości zmiennych podczas wykonywania programu w C

text: Muszę tylko zobaczyć, co jest przechowywane w czasie rzeczywistym w niektórych określonych zmiennych i strukturze używanej przez aplikację napisaną w C. Potrzebuję czegoś w rodzaju śledzenia stosu, który jest dostarczany z wtyczkami ADT dla Eclipse jako część pakietu SDK dla Androida.


title: Typ elementu roboczego do refaktoryzacji zduplikowanych metod (tj. zamiany ich na 1)

text: Biorąc pod uwagę, że masz dwie identyczne metody (podpisy, treść, wejście/wyjście), które chciałeś zrefaktoryzować do tylko jednej, jaki typ elementu roboczego z szablonu MS Agile byłby najbardziej odpowiedni? Zadanie, błąd, jakość usług, ryzyko? Czemu?


title: Znaczenie wiedzy teoretycznej obok umiejętności praktycznych

text: Mam obsesję na punkcie dobrych praktyk kodu, czystego kodu i przede wszystkim bezpieczeństwa. Często szukam najlepszego sposobu na zrobienie czegoś, ciągle prosząc o przegląd kodu i szukając sposobów na ulepszenie mojego kodu. W praktyce radzę sobie (robię PHP od kilku miesięcy), ale część teoretyczna jest moją słabą stroną. Wiem, co znaczą większość pojęć, rozumiem je, ale jeśli ktoś poprosiłby mnie o wyjaśnienie, często jest to trudne. Oznacza to, że gdybym szukał pracy, a ankieter zadawałby mi pytania, od razu pomyśleliby, że niewiele wiem na ten temat. Czy to będzie dla mnie duża wada? Czy na poważnie powinienem zacząć więcej uczyć się części teoretycznej?


title: Czy mogę dostarczyć aplikację GPL z innym licencjonowanym logo?

text: Chcę udostępnić swoją aplikację na licencji GNU GPL v3, ale byłbym zadowolony, gdyby ludzie nie mogli zmienić jej nazwy ani logo. Czy mogę udostępnić swoją aplikację na licencji GNU GPL v3, podczas gdy nazwa i logo aplikacji są objęte licencją innego typu, np. CC BY-NC-ND 3.0? (Logo i nazwa są używane w źródle i projekcie aplikacji).


title: Weź dynamiczną tablicę PHP, spakuj jako osobne pliki w jednym pliku zip

text: Mam te dynamiczne dane w PHP, ale dla każdego rekordu tablicy chcę udostępnić opcję do pobrania, aby zapisać archiwum zip wszystkich rekordów (każdy jako osobny plik). W rzeczywistości są to rekordy stref DNS przechowywane w bazie danych. Nie miałoby to większego sensu, gdyby znajdowały się w jednym pliku tekstowym, więc chcę w jakiś sposób wyeksportować dane jako osobne pliki wewnątrz zip. Mógłbym zapisać je na dysku, ale wiem, że w PHP jest sposób na użycie nagłówków do wymuszenia pobierania danych jako określonego typu pliku. Nie wiem, jak zapakować te dane w locie. Może nie mogę i będę musiał zapisać każdy w folderze tymczasowym, a następnie skompresować zawartość tego folderu, a następnie usunąć zawartość po pobraniu. Pomyślałem, że może społeczność ma pomysł, od czego zacząć. Dziękuję!


title: kiedy jest to konieczne lub kiedy kontroler powinien być asynchroniczny?

text: Kiedy jest absolutnie konieczne, aby kontroler był asynchroniczny? Czy wszystkie kontrolery powinny być asynchroniczne, czy też złą praktyką jest robienie ich wszystkich asynchronicznych, chyba że jest to konieczne. Szukam tylko ogólnych wskazówek.


title: W jakim języku zintegrowano „wstawianie listy” jako część *składni* kodu?

text: Wiele języków programowania pozwala na naturalną manipulację ciągami, a niektóre języki pozwalają również na manipulowanie listami. Częściej niż nie (zawsze?), te operacje są wykonywane jako wywołania _procedury_ lub jako funkcje _członkowskie_. Wiele języków programowania implementuje w składni dość typowy zestaw _{prepend, replace, append}_ na **lists** (i/lub _strings_ ). Chciałbym wiedzieć, czy istnieje/był język programowania, który ma składnię, która minimalizuje/racjonalizuje/ortogonalizuje składnię **wstawiania** elementów do **listy** według projektu składni? Python - jako prosty przykład - ma tylko: http://stackoverflow.com/questions/18033339/python-insert-operation-on-list mylist.insert(10,'5') Uwaga: W python _list_ **insertion* * jest zaimplementowana jako funkcja _member_. **Ale:** Python **ma** ma trochę cukru składniowego na _usuwanie_ elementów z **_listy_** : np. del mylist[4:7] Lubię znać jakieś języki, które faktycznie próbują **integrować** (lub mieć **strategię** ) dla listy **insertion** jako części **składni**? **Przykład wstawiania przez konstrukcję:** Oto kod z dość typowego języka „Marka X”, pokazujący typowe operacje poprzedzania/zamieniania/dołączania {lub operatory, vis-à-vis cukru składniowego}, zauważ, że nie ma oczywista składnia {w miejscu} wstawiania (lub usuwania) ze środka listy. {Należy to zrobić "przez konstrukcję" lub przez wywołanie procedury} # Demonstracja operacji prefiksu, zamiany i dołączenia do łańcucha {lub listy} # string s := "23XX78"; "1" +=: s; # Poprzedź znak "1" przed łańcuchem "w miejscu" # s[4:5] := "46"; # W miejscu zamień znak w pozycji 2 w ciągu # s +:= "9!"; # Dołącz ciąg "9!" char do ciągu # # Chociaż wstawianie do listy jest intuicyjne, * jest z założenia (stąd podatne na literówki/przewracanie indeksu) * nie jest "na miejscu" np. ... # s:=s[:4]+"5"+s[5:]; print(s) Wyjście: "123456789!" Inny przykład dla ciągów: s[:4]+="5"


title: Krótkie nazwy funkcji dla często używanej funkcji lub ogólnej koncepcji

text: Mam trochę dylemat: załóżmy, że ze względu na wygodę mam bardzo ogólną funkcję i specjalizację w niej. Załóżmy również, że funkcja wyspecjalizowana jest używana w 90% przypadków, a więc jest „zwykłym przypadkiem”. Czy powinienem używać krótszej nazwy funkcji dla przypadku ogólnego (np. `do`) i dłuższej dla przypadku specjalnego (`do_something_special`) czy odwrotnie (np. `do_something_general` i `do`)? Stosując słowa Larry'ego Walla (uczynić proste rzeczy łatwymi i trudnymi możliwymi), użyłbym krótszej formy dla częściej używanego przypadku. EDYCJA: Żeby było nieco jaśniej: w tym przykładzie `do` jest tylko symbolem zastępczym dla krótkiej, opisowej nazwy. Oczywiście mógłby być dłuższy, np. `run_task` lub `process_file`. Chcę wiedzieć, że jeśli mam funkcję o nazwie `run_task_in_specific_way`, która jest używana przez większość czasu, powinna w rzeczywistości nazywać się `run_task` (chociaż jest bardziej szczegółowa) lub ogólną abstrakcją. EDYCJA 2: Aby jeszcze raz wyjaśnić: Funkcje, o których mówię, nie zapewniają więcej niż jednej funkcjonalności ani nie powinny być zastępowane przez projekt oparty na klasach. Powodem jest to, że _są_ abstrakcyjne w tym samym sensie co qsort, np. pobieranie callable od użytkowników w celu wykonania określonej akcji. Zawijanie ich w jakąś klasę pomocniczą nie ma większego sensu.


title: Problem ze śpiącym fryzjerem (z wieloma fryzjerami)

text: Problem śpiącego fryzjera to klasyczny problem z synchronizacją, który wielu z was może znać lub przynajmniej o nim słyszeć. Opiera się na założeniu, że fryzjer (nić) śpi, gdy w poczekalni (która jest semaforem) nie ma klientów (każdy klient to nić). Jeśli ktoś jest, obcina sobie włosy (symbolizując jakąś obróbkę) i klient odchodzi. Jeśli więc w poczekalni nikogo nie ma, fryzjer idzie spać. Kiedy pojawia się inny klient, musi obudzić fryzjera. Stworzyłem implementację tego, używając następującego podstawowego pomysłu (pseudokod, tylko używając `sem_wait` i `sem_post`1 do płynnego czytania) Semaphore Customers = 0; Fryzjer Semaforowy = 0; Dostęp MutexMiejsca = 1; int Liczba wolnych miejsc = N; Fryzjer { while(1) { sem_wait(Customers) // czeka na klienta (śpi) sem_wait(accessSeats) // mutex w celu ochrony liczby dostępnych miejsc NumberOfFreeSeats++ // krzesło dostaje darmowe sem_post(Fryzjer) // haircut sem_post(accessSeats) // zwolnij muteks na krześle // fryzjer obcina włosy } } Klient { while(1) { sem_wait(accessSeats) // chroni siedzenia, więc tylko 1 wątek próbuje usiąść na krześle, jeśli tak jest if(NumberOfFreeSeats > 0) { NumberOfFreeSeats-- // siadanie sem_post(Customers) // powiadom fryzjera sem_post(accessSeats) // zwolnienie blokady sem_wait(Barber) // czekanie w poczekalni, jeśli fryzjer jest zajęty // klient obcina włosy } else { sem_post(accessSeats) // zwolnij blokadę // custome r pozostawia } } } Jednak teraz, gdy zaimplementuję ten problem z wieloma fryzjerami, moja głowa utknęła. Wszedłem na Wikipedię, aby sprawdzić, czy mogę coś znaleźć na ten temat, ale jedyną rzeczą, którą znalazłem, było to > _Problem z wieloma śpiącymi fryzjerami ma dodatkową złożoność > koordynowanie kilku fryzjerów wśród oczekujących klientów._ i nie mogłem rozgryź to sam. W takim razie miałbym taką złożoność? Przez kilku fryzjerów idących do poczekalni, czy ktoś tam jest, a następnie zabierający (więcej niż jednego fryzjera) jednego klienta? Czy potrzebowałbym tutaj dodatkowego semafora? 1sem_wait() blokuje semafor. sem_post() odblokowuje go


title: Jaki jest najskuteczniejszy sposób udostępniania kodu między aplikacjami .NET?

text: W naszej pracy mamy kilka różnych aplikacji .net, które dzielą wiele podstawowych funkcjonalności. Zbudowaliśmy te aplikacje przy użyciu czystej n-warstwowej architektury, ale dotarliśmy do momentu, w którym zdajemy sobie sprawę, że kilka razy ponownie zaimplementowaliśmy te same funkcje. Oczywiście narusza to DRY i chcielibyśmy to poprawić. Używamy już Nuget z pewnym sukcesem do wspólnego kodu kleju (podłączanie IoC, rejestrowanie, ustawienia), ale chcielibyśmy również udostępniać nasze dane i warstwy biznesowe między wszystkimi naszymi aplikacjami. Chodzi o to, aby interfejs użytkownika zajmował się tylko tymi częściami warstwy biznesowej, których faktycznie potrzebuje. Na początku wydaje się to prostym problemem, ale ciągły rozwój może dostarczyć pewnych pułapek i nie jesteśmy pewni, jak postępować. Załóżmy, że tworzymy naszą jedną warstwę biznesową, aby rządzić nimi wszystkimi. Dla zwięzłości nazwę go „Fundacją”. Przenosimy nasze aplikacje, aby korzystały z Fundacji i wszystko działa świetnie. Fundacja jest dystrybuowana do lekkich warstw interfejsu użytkownika za pośrednictwem nuget i wyglądamy dobrze. Ale potem zaczynamy dodawać funkcje do naszych aplikacji i wpadamy w kłopoty. Załóżmy, że pracujemy nad projektem A i dodajemy nową funkcję, która wymaga zmian w Foundation. Wprowadzamy zmiany w fundacji (Fundacja-A) i wypychamy je do źródła danych nuget jako niestabilny pakiet. Projekt A pobiera najnowszy pakiet nuget i wszystko jest w porządku. W międzyczasie inny programista pracuje nad Projektem B. Pobiera najnowszą wersję Foundation z kontroli źródła, ale pobiera ją ze stabilnej gałęzi, aby nie zawierała w niej zmian z Projektu A. Dokonuje zmian i stworzył Fundację-B. I wszystko jest w porządku. Ale potem odkrywamy, że funkcje implementacji Foundation-A i Foundation-B mogą faktycznie współdzielić kod, więc łączymy je. Tymczasem Foundation-C unosi się tam z własnymi zmianami. Ostatecznie Foundation-B jest gotowy do produkcji, więc go wypychamy. Ale potem musimy zaktualizować produkcję A, B i C przy użyciu nowej podstawy, więc aktualizujemy pakiety nuget i wdrażamy (o ile nic się nie zepsuje). Wygląda na to, że mogłoby to zadziałać, ale martwimy się pracą z różnymi schematami baz danych i utrzymywaniem synchronizacji między różnymi gałęziami repozytorium Foundation oraz repozytoriami projektów A, B i C. Wygląda na to, że prawdopodobnie zajmie to dużo ręcznej pracy, co otwiera możliwość błędów. Chciałbym, żeby to było jak najbardziej zautomatyzowane. Oto stos, którego używamy: C#, TFS z ciągłą integracją, Nuget. Nasze aplikacje to wszelkiego rodzaju aplikacje ASP.NET. Chętnie przyjrzymy się różnym SCM, jeśli to ułatwi sprawę. Szukam sposobów, aby utrzymać Nuget przy zdrowych zmysłach dzięki naszym różnym gałęziom kodu źródłowego. Nie chcemy przypadkowo wypychać kodu programistycznego do środowiska produkcyjnego, ponieważ odwołujemy się do niewłaściwego pakietu Nuget.


title: Czy są jakieś języki na bardzo wysokim poziomie?

text: Historycznie HLL to coś w rodzaju C, Fortran lub Pascal, a VHLL to coś w rodzaju Ruby lub Python. Znam terminy 4GL, 5GL, DSL i LOP, a ci, którzy nie są, powinni zapoznać się z definicjami w Wikipedii. Szukam UHLL-ów. Moje pytanie brzmi: czy istnieją języki komputerowe, które są o rząd wielkości bardziej produktywne i czy ktoś nad nimi pracuje? Większa produktywność oznacza mniej autorskiego kodu i mniej czasu programisty na osiągnięcie wyniku, mniej błędów i mniej debugowania, bliższe powiązanie koncepcyjne między kodem a wymaganiami, mniej wysiłku związanego z modyfikacją i utrzymaniem. Główną domeną, która mnie interesuje, są aplikacje biznesowe i konsumenckie ogólnego przeznaczenia, z interfejsem graficznym lub przeglądarką, trwałością danych i połączeniami z innymi systemami, takimi jak drukowanie i poczta e-mail. Inni ludzie mogą skupić się gdzie indziej. Zdaję sobie sprawę, że niektóre z tych języków mogą być specyficzne dla domeny i mogą być niewiele więcej niż możliwościami konfiguracyjnymi dużej i wydajnej aplikacji. Arkusze kalkulacyjne Excel należą do tej kategorii. Zdaję sobie sprawę, że niektóre z tych języków mogą wydawać się ogólne, ale nadal mogą mieć wąski zakres i nie odpowiadać wielu problemom. Na przykład Matlab może nie być dobrym wyborem dla programu, który zajmuje się głównie interakcją użytkownika i danymi tekstowymi. Znam niektóre funkcje, które mogą być w UHLL, przez analogię z VHLL. Spodziewam się, że znajdę jedno lub więcej z poniższych (i nie wahaj się dodać do listy): * Rysunek formularza GUI JEST programem dla formularza GUI * Tabela zawierająca wiersze, kolumny i nagłówki JEST programem dla tabeli w bazie danych * Logika deklaratywna mówi, co i kiedy należy zrobić, bez instrukcji IF * Operacje na zbiorach danych, bez pętli FOR * Wykonywanie niesekwencyjne, np. sterowane danymi, dopasowywanie wzorców, chodzenie po drzewie że coraz bardziej mam dość ciężkiej pracy polegającej na tłumaczeniu stosunkowo prostych wymagań biznesowych na duże ilości kodu, aby zaspokoić potrzeby lub potrzeby komputera. Pytanie tak naprawdę dotyczy znalezienia innych, którzy podzielają mój ból i pracują nad podniesieniem poziomu języków i sprawieniem, aby komputer wykonywał więcej ciężkiej pracy. Był to główny temat w latach 70. i 80., ale czy nadal się to dzieje? Oto kilka sugerowanych odpowiedzi na moje pytanie, które zostały podane tutaj w celu podsumowania lub wyliczenia języków, które znam, a które moim zdaniem są niewystarczające. Istnieje wiele języków, które są HLL lub VHLL i zawierają indywidualne cechy należące do wyższego poziomu. Z większości z nich korzystałem (często źle). Obejmują one * Lisp, z jego makrami i zdolnością do samodzielnej modyfikacji * Haskell, z zależnością danych i dopasowywaniem wzorców * SQL, który zajmuje się wierszami i tabelami * Rebol, który wydaje się sprytny, ale tak naprawdę go nie rozumiem * APL (i J), z wielowymiarowymi tablicami i ultrakompaktowymi operatorami * C# z LINQ * AWK/Perl/Python/Ruby ze wspaniałymi kolekcjami i wbudowanymi wyrażeniami regularnymi. Te języki mają zbyt wiele funkcji niskiego poziomu, aby mogły być UHLL. Programista wciąż musi napisać wiele niskopoziomowych konstrukcji dla dowolnego użytecznego programu. Istnieją pakiety RAD/4GL. Użyłem kilku: * dBase/Foxpro * Dataflex/Powerflex (mój produkt) * Access * PowerBuilder I wiele innych, z których nie korzystałem. W większości językiem jest HLL, ale pakiet zawiera strukturę i uprzywilejowane połączenia między językiem a pakietem, dzięki czemu aplikacje mogą być budowane szybko. Nie jestem pewien, dlaczego to podejście zabrakło pary, ale w każdym razie UHLL tak nie jest. Istnieją surowe frameworki/biblioteki. Użyłem kilku: * Railsów * Java awt i swing * .NET Windows Forms, WPF i ASP.NET. Są to obecnie stan techniki. Pozostawiają programistę mocno uwięzionego w bagnie języka implementacji, radząc sobie ze złożonością na każdym kroku. To nie jest UHLL, ale można sobie wyobrazić, że UHLL może być zbudowany na jednym z nich. Istnieją narzędzia do projektowania, takie jak UML i zestaw narzędzi Rational, których nie znam dobrze. O ile widzę, pomagają one w sformułowaniu wymagań biznesowych, ale nigdy nie mogą zastąpić etapu programowania. Nie chcę eliminować programistów, po prostu zrób więcej na jednostkę czasu i wysiłku. Więc po wyeliminowaniu wszystkich kandydatów myślę, że mam nadzieję, że ktoś inny zapewni lepszego kandydata. Późna edycja: Myślę, że mam odpowiedź: język Wolfram. http://www.wolfram.com/wolfram-język/


title: Dlaczego dobrym pomysłem jest, aby „niższe” warstwy aplikacji nie były świadome „wyższych”?

text: W typowej (dobrze zaprojektowanej) aplikacji sieci Web MVC baza danych nie zna kodu modelu, kod modelu nie jest świadomy kodu kontrolera, a kod kontrolera nie jest świadomy kodu widoku. (Wyobrażam sobie, że możesz nawet zacząć od sprzętu, a może nawet dalej, a wzór może być taki sam.) Idąc w innym kierunku, możesz zejść tylko o jedną warstwę w dół. Widok może być świadomy kontrolera, ale nie modelu; kontroler może być świadomy modelu, ale nie bazy danych; model może być świadomy bazy danych, ale nie systemu operacyjnego. (Wszystko głębsze jest prawdopodobnie nieistotne.) Potrafię intuicyjnie zrozumieć, dlaczego to dobry pomysł, ale nie potrafię tego wyrazić. **Dlaczego ten jednokierunkowy styl warstw to dobry pomysł?**


title: Jakie warstwy odwołują się do siebie w projekcie wielowarstwowym?

text: Tworzę projekt i mam trudności i sprzeczne opinie, jak robić rzeczy, jeśli chodzi o oddzielanie warstw. Nie jestem do końca pewien, które warstwy powinny się do siebie odwoływać. Czytałem w niektórych blogach/postach, że przepływ powinien być * widok odwołuje się do warstwy biznesowej * warstwa biznesowa odwołuje się do warstwy danych * warstwa danych wie tylko o sobie Z drugiej strony widziałem również następujące * widok odwołuje się do warstwy biznesowej * warstwa biznesowa wie tylko o sobie * warstwa danych odwołuje się do warstwy biznesowej Używając drugiej metody używałem warstwy biznesowej przy użyciu IOC, ale jestem niechętny postępom bez większej wiedzy. Przeczytałem wiele postów, ale odpowiedzi wydają się liczne i zróżnicowane. Jakiekolwiek wyjaśnienie byłoby świetne. Dziękuję


title: Czy złą praktyką jest wywoływanie akcji kontrolera z widoku, który został wyrenderowany przez inny kontroler?

text: Załóżmy, że mam „OrderController”, który obsługuje zamówienia. Użytkownik dodaje do niego produkty za pomocą widoku, a następnie ostateczna cena jest obliczana za pomocą wywołania AJAX do akcji kontrolera. Logika kalkulacji ceny jest zaimplementowana w oddzielnej klasie i używana w akcji kontrolera. Dzieje się tak, że mam wiele widoków z różnych kontrolerów, które muszą użyć tej konkretnej akcji. Chciałbym mieć jakiś rodzaj kontrolera cen, na którym mógłbym wywołać akcję. Ale wtedy widok musiałby wiedzieć o tym kontrolerze PriceController i wywołać na nim akcję. Czy wywoływanie akcji na innym kontrolerze, z którego została ona wyrenderowana, jest złą praktyką?


title: Jak zintegrować i dostosować program Avatar w HTML(5)?

text: Tworzę grę w HTML5. W jednej części chcę, aby użytkownicy mogli domyślnie dostosować awatar, który otrzymują. Na przykład pozwól, że podzielę się zrzutem ekranu z Zombie Lane na Facebooku (teraz ta gra może nie być w HTML5, ale nie o to chodzi): ![tutaj podaj opis obrazka](http://i.stack.imgur.com/RXseK .png) Moje pytanie dotyczy tego, jak umieścić obrazy na stronie HTML5 iw jakim formacie? W przypadku wybrania innej koszuli, zmiana zostanie zastosowana natychmiast. Czy to zupełnie nowe zdjęcie, które widzimy, czy może zdjęcie zostało jakoś zmienione przez programowanie? Jak to jest zrobione?


title: Co oznacza „automatyzacja przypadku użycia” i jakie są do tego narzędzia?

text: Co oznacza „automatyzacja przypadku użycia” i jak pomagają w tym narzędzia, które automatyzują? co sprawia, że automatyzacja jest dobra i czy ma jakiekolwiek znaczenie dla tworzenia stron internetowych.


title: Synchronizowanie operacji CRUD klienta i serwera za pomocą json i php

text: Pracuję nad kodem do synchronizacji stanu modeli między klientem (będącym aplikacją javascript) a serwerem. Często kończę pisaniem nadmiarowego kodu do śledzenia obiektów klienta i serwera, dzięki czemu mogę mapować dane dostarczone przez klienta do modeli serwera. Poniżej znajduje się kod, który zamierzam zaimplementować, aby pomóc. To, co mi się nie podoba w poniższym kodzie, to to, że ta metoda nie radzi sobie zbyt dobrze z zagnieżdżonymi relacjami, musiałbym stworzyć wiele trackerów obiektów. Jedno obejście dotyczy każdego modelu serwera po utworzeniu lub załadowaniu, po prostu wykonaj `$model->clientId = $clientId;` IMO jest to paskudny hack i chcę go uniknąć. Dodanie metody setClientId do wszystkich moich obiektów modelu byłoby kolejnym sposobem na uczynienie tego mniej hackowym, ale wydaje mi się to przesadą. W rzeczywistości identyfikatory klientów są dobre tylko do wstawiania/aktualizowania danych w niektórych scenariuszach. Mógłbym użyć wzorca dekoratora, ale automatyczne generowanie klasy proxy wydaje się nieco skomplikowane. Mógłbym użyć ogólnej klasy proxy, która używa funkcji __call, aby umożliwić dostęp do oryginalnych danych obiektu, ale to również wydaje się niewłaściwe. Jakieś przemyślenia lub komentarze? $clientData = '[{nazwa: "Bob", akcja: "aktualizacja", id: 1, identyfikator klienta: 200}, {imię:"Susan", akcja:"utwórz", identyfikator klienta: 131} ]'; $jsonObjs = json_decode($clientData); $objectTracker = nowy ObjectTracker(); $objectTracker->trackClientObjs($jsonObjs); $query = $this->em->createQuery("SELECT x FROM Application_Model_User x WHERE x.id IN (:ids)"); $query->setParameters("ids",$objectTracker->getClientSpecifiedServerIds()); $modele = $zapytanie->getResults(); //Zastosuj dane klienta do modelu serwera foreach ($models as $model) { $clientModel = $objectTracker->getClientJsonObj($model->getId()); ... } //Tworzenie nowych modeli i utrzymywanie foreach($objectTracker->getNewClientObjs() as $newClientObj) { $model = new Application_Model_User(); .... $em->persist($model); $objectTracker->trackNewServerObj($newClientObj['clientId'],$model); } $em->flush(); $resourceResponse = $objectTracker->createResourceResponse(); //Odwzorowanie identyfikatora będzie tablicą asocjacyjną reprezentującą zasoby identyfikatora serwera z identyfikatorem // po stronie klienta. //Ta metoda nie wydaje się elastyczna, jeśli chcemy zwrócić dodatkowe dane z każdym zasobem... //Musiałby zmodyfikować zwróconą strukturę danych, wydaje się, że jest to ścisłe sprzężenie... //Ex zwracana wartość: //[ {clientId: 200, id:1} , {clientId: 131, id: 33}];


title: jaka byłaby najlepsza struktura danych dla mojej sytuacji?

text: Mam listę **unikalnych ciągów**. Nie chcę niszczyć tego ciągu, potrzebuję go. Muszę tylko dowiedzieć się, czy dany ciąg S istnieje na tej unikalnej liście. Jaka byłaby najlepsza struktura danych do tego celu.


title: Relacja DAO, Servlet, JSP i POJO

text: Chcę zaimplementować `JSP`, `POJO`, `DAO` i `Servlet` w moim programie `J2EE`. Jednak nie do końca rozumiem, jak powinna wyglądać relacja między tymi elementami. Czy poniższa konfiguracja (MVC) jest właściwą metodą? * Główna klasa tworzy serwlet(kontroler) * Servlet ma zdefiniowane `DAO` w swojej klasie * `DAO` ma zdefiniowane `POJO` w swojej klasie * `Servlet` komunikuje się z widokiem (strona JSP) Prosimy o wyrażenie opinii.


title: Jak możesz uzyskać konstruktywną krytykę swojego kodu?

text: Mój zespół rzadko robi przegląd kodu, głównie dlatego, że nie mamy wystarczająco dużo czasu, a ludziom brakuje energii i chęci, aby to zrobić. Ale naprawdę chciałbym wiedzieć, co ludzie myślą o moim kodzie, kiedy go czytają. W ten sposób lepiej rozumiem, jak myślą inni ludzie i odpowiednio dostosowuję mój kod, aby był łatwiejszy do odczytania. Więc moje pytanie brzmi, jak mogę uzyskać konstruktywną krytykę mojego kodu? Moim zamiarem jest zrozumienie tego, jak ludzie myślą, abym mógł pisać bardziej czytelny kod.


title: Przechwytuj fragmenty liczby za pomocą operacji matematycznych

text: Czy istnieje matematyczny sposób na uzyskanie następujących informacji: Dla liczby 777,888,999, czyli 777 milionów itd. itd. getMillions(777888999) powinno zwrócić tylko 777 getThousands(777888999) powinno zwrócić 888 only getHundreds(777888999) powinno zwrócić tylko 999 Należy to zrobić * *bez użycia wyrażeń regularnych i bez przetwarzania tekstu**, ale należy to osiągnąć za pomocą **tylko operacji matematycznych**. Próbuję rozwiązać problem, który może być znany niektórym, a mianowicie zamianę liczby wyrażonej cyframi na słowa, czyli 1 -> jeden, 10 -> dziesięć, 100 -> sto itd. Myślę, że jeśli mogę przekonwertować liczby do 999 to problem jest prawie rozwiązany, ponieważ reszta doda tylko słowa miliony i/lub tysiące, więc 777888999 skryje się do słów: 777 milionów i 888 tysięcy i 999 setek oczywiście powyższe liczby będą wyrażone słowami. Zostało mi to pierwotnie przekazane w ramach rozmowy kwalifikacyjnej około rok temu. Absolutnie nie używam tutaj rozwiązania do podania o pracę. Ale powyższe pytanie dotyczy manipulacji liczbami, która mnie bardzo interesuje.


title: Jak nazwać drzewo, które rośnie w obu kierunkach?

text: ![reprezentacja drzewa](http://i.stack.imgur.com/mHAbK.jpg)Jaki byłby termin techniczny określający drzewo, które rośnie w obu kierunkach, zaczynając od korzenia pośrodku? Główną ideą jest to, że nowe elementy mogą być dodawane do drzewa (teraz nie jestem pewien, czy można to nazwać jednym) w obu kierunkach. Ale gdy jest używany do celów przechodzenia, musisz podążać za skierowanymi linkami.


title: Negatywne przypadki testowe zamieszanie

text: W książce Software Testing Book firmy Koirala, Sheihk, mówią: > Pozytywny test ma miejsce wtedy, gdy wprowadzasz prawidłowe dane wejściowe i oczekujesz, że jakieś działanie zostanie > wykonane zgodnie ze specyfikacją. > Negatywny test ma miejsce, gdy wprowadzisz nieprawidłowe dane wejściowe i otrzymasz błędy. Część mojego pytania: Powiedzmy, że istnieje wymóg: jeśli nazwa klienta =="James Bond", zrób coś. Czy test `name<>„James Bond”` jest negatywny, czy nadal pozytywny, weryfikujący wymagania? Lub funkcja logowania: czy prawidłowy przypadek testowy logowania jest pozytywny, a niepoprawny negatywny? Lub Logowanie nie powiodło się jest tylko potwierdzeniem wymagania, że hasło musi być poprawne -> potwierdzenie niepoprawnego hasła nie zadziała. > Na przykład, jeśli program ma dać błąd, gdy osoba > wpisze "101" w polu, które powinno zawierać się w przedziale od 1 do 100, to jest to > dodatnie, jeśli pojawi się błąd. Jeśli jednak aplikacja nie wyświetla > błędu podczas wpisywania przez użytkownika 101, oznacza to, że test jest negatywny.


title: Dlaczego należy unikać dziedziczenia postaci?

text: Pamiętam, że uczyłem się VB4 i przeciągałem przycisk na formularz, klikałem go dwukrotnie i wpisywałem kod do tego programu obsługi zdarzeń, którym właśnie zostałem magicznie pobłogosławiony. Pochodząc z QBASIC byłem zachwycony "V" w "VB", projektant wizualny był dosłownie najlepszą rzeczą od czasu krojonego chleba. Oczywiście można było to wszystko zrobić programowo, ale magia „V” była tak atrakcyjna, że nie można było powstrzymać się od przeciągania tego przycisku. Zachęcano nas do pójścia tą drogą. Ale kilka lat temu zacząłem uczyć się o C# i frameworku .net i zafascynował mnie sposób, w jaki wszystko, o czym myślałem, że wiem, właśnie wyszło przez okno. W VB6 dzieje się wiele _magii_, które są całkowicie ujawnione w .net: weźmy na przykład konstruktory i metodę `InitializeComponents`. W tym ostatnim znajdziesz wszystkie instancje kontrolne, które przeciągnąłeś z przybornika, wszystkie zarejestrowane zdarzenia i właściwości ustawione w projektancie. I to jest w porządku... chyba. Po prostu czuję, że nie jestem „właścicielem” tego, co się dzieje, ten kod, który mogę modyfikować tylko za pomocą projektanta, denerwuje mnie. Za każdym razem, gdy kopiujesz przycisk z napisem „OK” z jednego formularza do drugiego (czasem razem z jego bratem „Anuluj”), w rzeczywistości duplikujesz kod, a to jest _grzech_, prawda? DRY, nie powtarzaj się, mówi Papież. Pomijając religie i szkoły myślenia, z całą obiektywnością, czy nie powinniśmy zamiast tego wywodzić form z form podstawowych, a przycisk „OK” (i wszyscy jego przyjaciele) nie powinien żyć w formie podstawowej? Coś w rodzaju `FormBase`, z którego wywodzi się `DialogFormBase`; wszystkie klasy tworzone w mgnieniu oka... przez wpisanie kodu. Przyciski są tworzone w zależności od sposobu tworzenia klasy (tj. argument enum konstruktora określa, które przyciski mają zostać utworzone), kontrolki są rozmieszczone w układzie podzielonych paneli i paneli układu przepływu, wstrzykiwanych do formularza jako „Zawartość”, pasuje do głównego panelu treści. Czy to nie jest to, co ASP.net robi ze stronami wzorcowymi i symbolami zastępczymi zawartości? Utworzyłbym formularz, gdy potrzebuję nowej „strony wzorcowej”, ale ta nowa „strona wzorcowa” nadal pochodzi z klasy formularza podstawowego, więc wizualizacje są spójne w całej aplikacji. Dla mnie to _o wiele_ więcej ponownego wykorzystania kodu niż cokolwiek innego, co kiedykolwiek zrobiłem z projektantem w WinForms, i nie było to nawet trudne, a kod nie jest zaśmiecony 200-liniową metodą, nad którą nie mam kontroli, mogę umieszczaj komentarze tam, gdzie mi się podoba, nie zostaną nadpisane przez projektanta. Myślę, że to tylko kwestia wzorców i architektury, co doprowadziło mnie do tego linku: Najlepszy projekt dla formularzy Windows, które będą miały wspólną funkcjonalność, gdzie zdałem sobie sprawę, że jestem na miejscu, z wyjątkiem **odpowiedź tam, sugeruje dokładnie to, co ja robię, ale odradza _przeciw__ dziedziczeniu formularzy _ze względu na względy projektanta. To jest część, której nie rozumiem**. Radziłbym raczej _nie_ używać projektanta _ze względu na względy struktury kodu, szczególnie w odniesieniu do dziedziczenia form i kontrolek, którego nie widzę powodu, aby unikać innych niż _cóż, psuje projektanta_. Nie możemy wszyscy być po prostu leniwi, więc jakiej części mi brakuje?


title: „Nigdy nie rób w kodzie tego, co może sprawić, że serwer SQL będzie dla Ciebie dobry” — Czy to przepis na zły projekt?

text: To pomysł, który słyszałem w kilku miejscach. Niektórzy mniej lub bardziej przyznają, że raz próba rozwiązania problemu wyłącznie w SQL przekracza pewien poziom złożoności, rzeczywiście powinieneś obsługiwać go w kodzie. Logika tego pomysłu polega na tym, że w większości przypadków silnik bazy danych wykona lepszą pracę w znalezieniu najbardziej wydajnego sposobu wykonania zadania niż w kodzie. Zwłaszcza jeśli chodzi o takie rzeczy, jak uzależnianie wyników od operacji wykonywanych na danych. Prawdopodobnie przy nowoczesnych silnikach efektywnie JIT'ing + buforowanie skompilowanej wersji zapytania miałoby sens na powierzchni. Pytanie brzmi, czy wykorzystywanie silnika bazy danych w ten sposób jest z natury złą praktyką projektową (i dlaczego). Linie stają się bardziej rozmyte, gdy cała logika istnieje w bazie danych i po prostu trafiasz do niej za pośrednictwem ORM.


title: Jak zbadać firmę do pracy?

text: Otrzymałem ofertę w firmie. Jak mogę to sprawdzić, aby znaleźć miejsce, w którym chciałbym pracować, poza zadawaniem im pytań? Wyszukiwarka Google daje mało wyników.


title: Kiedy ludzie pracują w różnych krajach i muszą współpracować, jak utrzymać kod we właściwym języku

text: Jestem członkiem małego nowego zespołu i przy jednej z naszych najnowszych wersji zauważyłem, że pliki kodu VS2010 nie zawierają formatowania języka. Na przykład kiedy zapisuję w kodzie symbol Euro lub używam "." lub "," w liczbach lub użyj symboli funta, euro lub dolara, te wyglądają dobrze w moim kodzie, ale dla kodera w Rosji tak nie jest. Zastanawiam się, jak inni ludzie radzą sobie z tego rodzaju problemami?


title: Jak hermetyzować zmienne „globalne” w C#? /najlepsze praktyki

text: Jaka jest najlepsza praktyka w C# enkapsulacji zmiennych, których muszę używać w wielu metodach? Czy mogę po prostu zadeklarować je na górze mojej klasy nad dwiema metodami? Również jeśli używam ustawień aplikacji z mojego pliku konfiguracyjnego, czy powinienem użyć gettera? tak... private string mySetting{ get { return WebConfigurationManager.AppSettings["mySetting"]; } } Jaka jest najlepsza praktyka?


title: Dokumentacja: co jest „odpowiednie” przy wyrażaniu prawidłowego zakresu parametru?

text: Jaka jest właściwa metoda opisania prawidłowego zakresu parametru w dokumentacji kodu? Oczywiście długa dokumentacja (białe księgi, dokumenty API itp.) może być bardziej szczegółowa niż rzeczywisty kod, ale tak naprawdę ma to na celu rozwiązanie problemów w rzeczywistym kodzie niż w dokumentacji rozproszonej (którą każdy użytkownik powinien przeczytać na początek!) Przykłady : * <nazwa argumentu> gdzie { <nazwa argumentu> | 0 <= <nazwa argumentu> <= 255 } * <nazwa argumentu> zakres: [0,255] * <nazwa argumentu> jest poprawna w zakresie od zera do 255 włącznie.


title: Jak wygląda dobra „definicja zrobienia” dla dojrzałego zespołu?

text: Patrząc na przykłady definicji done w różnych źródłach, zwykle zawierają one punkty takie jak * ukończony kod * uruchomione testy jednostkowe * kod recenzowany lub sparowany * kod sprawdzony * zaktualizowana dokumentacja * … W naszym zespole mamy podobną listę, ale nikt nigdy na to nie patrzy, ponieważ te punkty wydają się tak rażąco oczywiste, że nikomu nie przyszłoby do głowy pominąć którykolwiek z tych kroków. Zastanawialiśmy się więc, czy jest to głównie narzędzie dla zespołów przechodzących na zwinny proces i czy nie powinniśmy się go po prostu pozbyć. Z drugiej strony wiele literatury twierdzi, że wszystkie zespoły o wysokiej wydajności mają silną definicję ukończenia. Tego rodzaju podpowiedzi, że możemy przegapić okazję do poprawy tutaj. Jakie są więc przykłady mocnych definicji pracy dojrzałego zespołu? Jakie punkty zazwyczaj zawierają?


title: Jakie są zwykle trudności w programowaniu współbieżnym i dostrajaniu programów współbieżnych (model pamięci współdzielonej)?

text: Mogę wymienić część problemów, które pojawią się podczas pisania współbieżnej aplikacji średniej wielkości z pamięcią współdzieloną: * Granulacja blokowania * Wybór prymitywu synchronizacji * Liczba wątków * Metoda rozkładu na wątki (równoległość danych; równoległość zadań; jak wątki są zorganizowane itp.) Jakie są inne podobne problemy?


title: Używanie parsera do lokalizowania wadliwego kodu

text:
Ostatnio dużo pracowałem w PHP i napotkałem nienormalnie dużą liczbę błędów parsowania. Zdaję sobie sprawę, że to moja własna wina i wynik niechlujnego początkowego kodowania z mojej strony, ale dochodzi do tego, że spędzam więcej czasu na rozwiązywaniu tagów niż na opracowywaniu. Czy są jakieś triki pozwalające zlokalizować problem w kodzie, aby nie uderzać w moją produktywność? To, czego naprawdę szukam, to wiersz do umieszczenia w kodzie, który wyprowadzi cały wadliwy tag w błędzie parsowania lub coś podobnego. Wyłącznie w celach informacyjnych, moim obecnym błędem jest błąd analizy: błąd składni, nieoczekiwany '}' w /home/content/80/9480880/html/cache/tpl_prosilver_viewtopic_body.html.php w wierszu 50 (co się do tego odnosi):

<?php if ($_poll_option_val['POLL_OPTION_RESULT'] == 0) { echo ((isset($this->_rootref['L_NO_VOTES'])) ? $this->_rootref['L_NO_VOTES'] : ((isset($user->język['BRAK GŁOSÓW'])) ? $użytkownik->język['NIE_GŁOSÓW'] : '{ NIE_GŁOSÓW }')); } else { echo $_poll_option_val['POLL_OPTION_PERCENT']; } ?>

 <?php }} if ($this->_rootref['S_DISPLAY_RESULTS']) { ?>

 <?php echo ((isset($this->_rootref['L_TOTAL_VOTES'])) ? $this->_rootref['L_TOTAL_VOTES'] : ((isset($user->lang['TOTAL_VOTES'])) ? $ użytkownik->język['TOTAL_VOTES'] : '{ TOTAL_VOTES }')); ?> : <?php echo (isset($this->_rootref['TOTAL_VOTES'])) ? $this->_rootref['TOTAL_VOTES'] : ''; ?>

 <?php } if ($this->_rootref['S_CAN_VOTE']) { ?>

<input type="submit" name="update" value="<?php echo ((isset($this->_rootref['L_SUBMIT_VOTE'])) ? $this->_rootref[ 'L_SUBMIT_VOTE'] : ((isset($user->lang['SUBMIT_VOTE'])) ? $user->lang['SUBMIT_VOTE'] : '{ SUBMIT_VOTE }')); ?>" class="button1" / >

 <?php } if (! $this->_rootref['S_DISPLAY_RESULTS']) { ?>

<a href="<?php echo (isset($this->_rootref['U_VIEW_RESULTS'])) ? $this->_rootref['U_VIEW_RESULTS'] : ''; ?>" ><?php echo ((isset($this->_rootref['L_VIEW_RESULTS'])) ? $this->_rootref['L_VIEW_RESULTS'] : ((isset($user->lang['VIEW_RESULTS'])) ? $user->lang['VIEW_RESULTS'] : '{ VIEW_RESULTS }')); ?>

 <?php } ?> </fieldset>


title: W kolejkach, co definiuje testowanie jednostkowe w przeciwieństwie do innych rodzajów testowania?

text: Początkowo myślałem, że to proste: testowanie jednostek dla modeli z innymi testami, takimi jak integracja dla kontrolera i testowanie przeglądarek dla widoków. Ale ostatnio widziałem wiele odniesień do testów jednostkowych, które nie wydają się być zgodne z tym formatem. Czy można przeprowadzić test jednostkowy kontrolera? Czy to oznacza, że wywoływana jest tylko jedna metoda? Jaka jest różnica? Co oznacza testowanie jednostkowe _naprawdę_ w moim świecie rails?


title: Czy powinienem używać jednej bazy danych na aplikację, czy udostępniać jedną bazę danych wielu aplikacjom?

text: Mam wiele aplikacji, z których niektóre wykorzystują dane z tych samych źródeł. Czy najlepszą praktyką (lub jakie są plusy/minusy) jest: * pozostawienie danych w bazach danych współużytkowanych przez wiele aplikacji 1. oszczędność miejsca, ponieważ potrzebna jest tylko jedna baza danych 2. komplikowanie indeksowania, ponieważ różne aplikacje mają różne potrzeby zapytań * codzienne importowanie danych do baz danych dla poszczególnych aplikacji 1. wykorzystuje więcej miejsca, ponieważ zduplikowane dane istnieją w bazach danych dla poszczególnych aplikacji 2. łatwiejsze indeksowanie, ponieważ każda aplikacja może skoncentrować się na swoich indywidualnych potrzebach Mogłem pominąć inne zalety/wady, proszę je wymienić, jeśli takie istnieją, a także w jaki sposób to zrobić w swoim miejscu pracy?


title: Jakie jest znaczenie napędzany? (na podstawie testów, danych, zdarzeń itp.)

text: Czytałem papier, który dokonuje porównania między formularzami sieci Web ASP.NET i ASP.NET MVC. Podczas czytania, takie jak data-driven, event-driven, test-driven, to terminy, które często widuję. Więc do czego służą? kiedy możemy je nazwać językiem programowania lub frameworkiem? Co muszą mieć?


title: Dlaczego wykonywane są funkcje bez efektów?

text: Wszystkie języki, które znam, wykonałyby coś takiego: i = 0, podczas gdy i < 100000000 i += 1 .. i widać, że wykonanie tego zajmuje zauważalną ilość czasu. Dlaczego jednak języki to robią? Jedyny efekt, jaki ten kod przyniesie, to zabranie czasu. edit: Mam na myśli wewnątrz funkcji, która nazywa się function main(){ useless() } function useless(){ i = 0 while i < 100000000 i += 1 }


title: Czy złą praktyką jest, aby moduł zawierał więcej informacji niż potrzebuje?

text: Chciałem tylko zapytać o zdanie na temat sytuacji, która czasami się zdarza i nie wiem, jaki byłby najbardziej elegancki sposób jej rozwiązania. Oto on: Mamy moduł A, który odczytuje wpis z bazy danych i wysyła żądanie do modułu B zawierające TYLKO informacje z modułu wejściowego B, którego potrzebuje do wykonania swojej pracy (aby zachować modułowość, podaję mu tylko potrzebne informacje - > moduł B nie ma nic wspólnego z resztą informacji z odczytanego wpisu DB). Teraz po zakończeniu swojej pracy moduł B musi odpowiedzieć modułowi C, jeśli się powiedzie lub nie. Aby to zrobić, moduł B odpowiada informacjami otrzymanymi z modułu A oraz pewną zmienną oznaczającą sukces lub porażkę. Teraz pojawia się problem: moduł C musi ponownie znaleźć ten wpis, ALE informacje, które otrzymał z modułu B, nie wystarczają, aby ponownie znaleźć dokładnie ten sam wpis. Nie sądzę, że moduł A podający więcej informacji do modułu B, których nie potrzebuje do wykonywania swojej pracy, ale które mógłby następnie zwrócić do modułu C, byłby dobrą praktyką, ponieważ oznaczałoby to podanie pewnych informacji o module, które nie naprawdę potrzebuję. Co myślisz?


title: Rozwiązanie do aktualizacji oprogramowania dla platform Linux/Windows

text: Czy wiecie o jakimkolwiek komercyjnym (niekomercyjnym?) automatycznym aktualizatorze online, który można zintegrować z oprogramowaniem? Po szybkich poszukiwaniach znalazłem ich miliony, ale tylko dla Windows i znowu tylko nieliczni mają C/C++ API. Czy tego rodzaju rozwiązania mają jakieś funkcje zarządzania aktualizacjami/statystyki?


title: Czy obchodzi Cię, czy osoba, z którą przeprowadzasz wywiad, jest właścicielem lub wkładem do projektów Open Source?

text: Czy obchodzi Cię, czy osoba, z którą przeprowadzasz wywiad, stworzyła lub przyczyniła się do projektów Open Source? Z puli ludzi, z którymi rozmawialiśmy przez lata w moim miejscu pracy, nie znalazłem ani jednej osoby, która wnosiłaby wkład w projekt open source. Właściwie jestem jedyną osobą w biurze, która jest naprawdę zainteresowana sceną (.NET) OSS, ale nie wierzę, że to czyni mnie bardziej kompetentną i prawdopodobnie odbija się to bardziej na moim życiu towarzyskim niż cokolwiek innego. Czy uczestnictwo w OSS sprawia, że natykasz się uszami, jeśli widzisz to w CV/CV? A może jesteś wobec tego apatyczny? _(To właśnie skłoniło mnie do zastanowienia się nad pytaniem)_


title: Jak nauczyć się współbieżności w Ruby?

text: Wczoraj przeczytałem ten świetny artykuł o współbieżności w JRuby od EngineYard i zdaję sobie sprawę, że muszę wykorzystać swoje umiejętności w zakresie współbieżności w Ruby, wspominając tutaj Rubiego mam na myśli, że mogą to być **wszystkie** implementacje Rubiego: JRuby, Ruby MRI, Rubinius , Ruby on Parrot / Cardinal z wyjątkiem IronRuby, nie koduję w środowisku Windows. To, czego nauczyłem się ze świata Haskella, a zwłaszcza od Simona Peyton-Jonesa, powiedział w swoim filmie, że OOP dotyczy państwa. Uwaga: jestem bardzo niedoświadczony, kiedy wspominam o Haskell, obejrzałem tylko kilka dobrych filmów o Haskell, rozwiązałem bardzo niewiele (mniej niż 10) projektów euler w Haskell, przeczytałem kilka dobrych książek i samouczków Haskella, nigdy nie kodowałem w Haskell zawodowo po prostu przeczytałem kilka kodów źródłowych w Haskell, ex. mopsy, Darcs i kilka innych kodów Haskella, których źródła nie pamiętam. Mógłbym użyć Jaskella do oszukania współbieżności tak długo, jak używam jruby, ale to jest mój długoterminowy plan nauki, chcę najpierw zmaksymalizować moją umiejętność współbieżności w ruby, ** czy masz jakieś sugestie, jak nauczyć się współbieżności w ruby ?** Szkoda, że nie ma dla mnie książki do nauki współbieżności w Ruby. Rzeczy takie jak strategie / jak rozwiązać problem współbieżności w ruby, inspirowane artykułem EngineYard i Haskell. Może kilka dobrych filmów do pobrania, które wyjaśniają krok po kroku, aby wzmocnić moją podstawową wiedzę na temat współbieżności, a następnie przejść do współbieżności w szczególności w ruby. Rada? Dziękuję Ci.


title: Jaka jest różnica między odpornością a odpornością na awarie?

text: Systemy / programy / algorytmy rozproszone / ... są często opisywane predykatem **robust** lub **fault-tolerant**. Jaka jest różnica? * * * Szczegóły: Kiedy wyszukuję w Google +solidny +"odporny na błędy", otrzymuję tylko dwa trafienia, oba nieprzydatne. Kiedy szukam terminów w Googlescholar, znajduję wiele artykułów, które zawierają oba terminy w tytule. Niestety, nie definiują dokładnie terminów :( Ale ponieważ używają obu terminów, wydaje się, że żaden z nich nie implikuje drugiego.


title: mam problem z nauką

text: Mam tylko 13 lat, ale naprawdę interesuje mnie CS i bardzo bym chciał, gdybym mógł to osiągnąć. Czytałem książki o C++ i C#, ale WSZYSTKIE są takie same!! Wszyscy mówią: „Ok, więc ponieważ nie masz żadnej wcześniejszej wiedzy na ten temat, napisz fragment, który to zrobi, a następnie stwórz GUI, a następnie wrzuć go do hfad Priafdhsu, a następnie dodaj program, a następnie zaprogramuj swój własny kompilator, aby to zrobić jakieś rzeczy". To naprawdę staje się denerwujące. Zapłaciłem prawie 40 dolarów (przez Paypal) za e-booki, które rzekomo uczyły ludzi programowania bez wcześniejszej wiedzy. WSZYSCY OCZEKUJĄ, ŻE ZNAM JUŻ JĘZYK. Czy jest coś, czego mi brakuje, czy przypuszczam, że urodziłem się z własnością CS? Byłbym bardzo wdzięczny, gdyby ktoś mógł mi to wyjaśnić lub ewentualnie skierować mnie do samouczka z teorii programowania, który zaczyna się od punktu zerowego, ponieważ w ogóle znam wiedzę w CS.


title: Delphi 7 używający pamięci RAM dla bazy danych

text: Mam istniejącą aplikację bazy danych napisaną w D7 z bazami danych apollo. Klient dał mi szybki pulpit z pamięcią RAM 24 GB. Czy mogę w jakiś sposób załadować pliki bazy danych do pamięci RAM, aby przyspieszyć przetwarzanie? Przy milionach rekordów niektóre procedury trwają pół godziny lub dłużej, głównie z powodu odczytu/zapisu na dysku


title: System zarządzania rekordami Java web framework

text: Obecnie ponownie rozważamy technologie i frameworki, aby uzyskać większą elastyczność dzięki „prostym” projektom opartym na RMS CRUD. Krótko mówiąc, takie krótkotrwałe rzeczy W tej chwili mamy niestandardowe rozszerzenie na szczycie SmartGWT, ale po pewnym czasie okazało się, że nie jest wystarczająco elastyczne. Osobiście nie lubię procesu kompilacji java-js i całej bazy kodu GWT. Nie tylko projekt jest brzydki, ale także sprawia, że niektóre rzeczy niskiego poziomu js są bardzo skomplikowane, jeśli nie całkowicie niemożliwe. Więc to, czego szukam, to: * najbliżej **sieci**, jak to możliwe, jak JSF lub ewentualnie Tapestry, bardzo ważne jest, aby w razie potrzeby móc uzyskać „niski” i weave framework. Zdarza się częściej niż myśleliśmy. * Obsługa datagrid - Ext.js i PrimeFaces wyglądają całkiem nieźle, Vaadin też. * generatory db-schema (opcjonalne, obojętnie w jaki sposób) Gdyby to było tylko na mnie, prawdopodobnie zostałbym przy Ext.js + niestandardowe rozwiązanie java oparte na resztach, ewentualnie wygenerowane ze schematu bazy danych (jeszcze nie jestem pewien co do konkretnego oprzyrządowania ). Mam doświadczenie tylko z waniliowym Ext.js, waniliowym GWT i JSF 2.0 / Seam, więc trudno mi oceniać, a nawet proponować inne frameworki. **Jakie są Twoje wrażenia?** **Jakie masz wady?**


title: Jak przeprowadzić test jednostkowy klienta WWW?

text: Mam dużo problemów ze zrozumieniem, jak testować jednostkowo mojego klienta internetowego. Właśnie skończyłem projekt używający TDD po raz pierwszy - ten projekt hd nie ma zewnętrznych zależności takich jak wywołania API czy bazy danych, był to czysty kod C#. Zdecydowanie dostrzegłem korzyści płynące z używania TDD i chciałbym dalej to ćwiczyć. Mój kolejny projekt to napisanie klienta SOAP. Mam problemy z przejściem pierwszego testu, który używa prostego IClient, który pomyślnie loguje się do API. Oto interfejs IClient: public interface IClient { bool IsLoggedIn { get; } bool Login(out string error); } Nie mam pojęcia, jak bym to przetestował. Myślę, że metoda testu jednostkowego byłaby czymś w rodzaju `Login_WithValidCredentials_ReturnsTrue`, ale nie jestem pewien, jak mógłbym to zrobić bez faktycznej symulacji każdej możliwej odpowiedzi z API. Czy ten kod rzeczywiście można testować jednostkowo, czy też należy to pozostawić testowi integracji. Jeśli ktoś mógłby mi podać przykład prostego testu jednostkowego, byłbym bardzo wdzięczny (używam Moq).


title: Czy istnieją przykłady podejść innych niż CRUD?

text: Jestem programistą, ale pracowałem też jako archiwista. Jako archiwista dużo chodzi o przechowywanie danych. Często kłócę się z kolegami o operacje na danych. Nie lubię za bardzo U i D w CRUD. Zamiast aktualizować rekord Wolę dodać nowy i mieć odniesienie do starego rekordu. W ten sposób budujesz historię zmian. Nie lubię też kasować rekordów, raczej oznaczać je jako nieaktywne. Czy jest na to określenie? W zasadzie tylko tworzenie i odczytywanie danych? Czy istnieją przykłady takiego podejścia?


title: Nowy w hurtowniach danych/ERP

text: Organizacja, w której pracuję, jest bardzo bogata w aplikacje, tj. istnieje wiele baz danych SQL i Oracle. Myślimy o hurtowni danych. Uważam, że istnieje różnica między systemem planowania zasobów przedsiębiorstwa a hurtownią danych. ERP wiązałby się z integracją wszystkich systemów razem i posiadaniem jednego schematu bazy danych dla wszystkiego. Hurtownia danych wiązałaby się z utworzeniem kopii bazy danych (lub kopii baz danych) w celach analitycznych. Hurtownia Danych może wydobywać informacje z oryginalnych repozytoriów lub systemu ERP. Czy dobrze to zrozumiałem? Czy istnieją produkty hurtowni danych, które są dostępne, ale lub trzeba korzystać z narzędzi firmy Microsoft/narzędzi Oracle, np.? SSIS, SSAS itp. do napisania własnego?


title: Strona internetowa jako klient API a korzystanie z API tylko wtedy, gdy jest to potrzebne?

text: Zajmuję się tworzeniem strony internetowej (przy użyciu **Django** ), która będzie zależeć od API dla swojej głównej funkcjonalności, czyli tworzenia/aktualizacji/usuwania obiektów. Ale API zapewnia również: * Rejestracja i logowanie użytkownika * Relacje użytkowników z ich obiektami * Grupy użytkowników i uprawnienia To jest świetne, ale jestem zaniepokojony, aby w pełni polegać na API dla wszystkiego, nawet rejestracji i logowania użytkownika, więc mam 2 wybory: **Używanie API do wszystkiego** : Zalety: * Uwierzytelnianie użytkowników, obiekty, relacje, uprawnienia są już zarządzane * Moim zadaniem jest tylko odpytywać API i wyświetlać wyniki Wady: * Dużo żądań HTTP do API * Strona zepsuje się, jeśli API przestanie działać * Czas renderowania strony będzie wolniejszy (będzie używał ajax) **Korzystanie z API w razie potrzeby** : Zalety: * Mniej żądań HTTP * Strona będzie trochę szybsza * Jeśli API zejdzie, nie wszystkie funkcje strony zatrzymają się Wady: * Będę musiał zarządzać uwierzytelnianiem użytkownika, uprawnieniami i relacjami do jego obiektów w API * Zduplikować dane użytkownika w mojej bazie danych i API (będę miał kopię obiektów użytkownika) * Martwi mnie t synchronizacja danych (zaktualizuję bazę danych tylko podczas tworzenia/aktualizacji/usuwania żądań do API) Który z nich jest lepszym wyborem i dlaczego? jaki projekt jest zwykle używany w takich przypadkach?


title: Jakich narzędzi nieprogramistycznych używają programiści?

text: Czytam _Code Complete_ z zamiarem nauczenia się, jak lepiej ustrukturyzować swój kod, ale uczę się też dużo o tym, jak wiele aspektów programowania jest czymś, co nie jest tylko pisaniem kodu. Książka dużo mówi o definiowaniu problemu, określaniu wymagań, definiowaniu struktury, projektowaniu kodu itp. Jakich narzędzi używa się do tych niepisanych kroków programowania? Czy istnieje oprogramowanie, które pomoże mi zaprojektować i zaplanować to, co mam napisać, zanim to zrobię?


title: Czy mogę korzystać z części innego programu bez konieczności rezygnowania z praw do własnego kodu?

text: Obecnie tworzę grę i chcę użyć niektórych plików tekstowych (listy nazw), które są objęte licencją GNU General Public License (lub Attribution-ShareAlike 3.0 Unported License). Czy muszę wydać całą moją grę na jednej z tych licencji, jeśli użyłem tylko tych (stosunkowo małych) plików w mojej grze, czy tylko te pliki muszę mieć na takiej licencji? Jeśli nie jest to dozwolone, czy i tak mogę to zrobić, jeśli zdecyduję się nie publikować swojego kodu i tylko "hostować" tę grę, ponieważ jest to gra internetowa.


title: Podział zbioru na podzbiory ze względu na równość sumy między podzbiorami

text: Powiedzmy, że mam `{3, 1, 1, 2, 2, 1, 5, 2, 7}` zbiór liczb, muszę podzielić liczby tak, aby suma podzbioru1 była równa sumie podzbioru2 `{3 ,2,7} {1,1,2,1,5,2}". Najpierw powinniśmy określić, czy możemy podzielić liczbę (jeden sposób może być podzielny przez 2 bez żadnej reszty) i jeśli możemy, powinniśmy napisać nasz algorytm jako dwa, aby stworzyć s1 i s2 z s. Jak postępować z tym podejściem? Czytałem problem z partycjami na wiki, a nawet w niektórych artykułach, ale nic nie mogę uzyskać. Czy ktoś może mi pomóc znaleźć odpowiedni algorytm i jego wyjaśnienie w prostym języku angielskim?


title: Przyszły zakres dla programisty mobilnego

text: Karierę zaczynałem jako tester oprogramowania, ale po 3 latach zdałem sobie sprawę, że nie daje mi to tzw. satysfakcji z pracy i podjąłem odważną decyzję, aby wskoczyć na arenę programistyczną. W końcu zostałem programistą Android Mobile i ukończyłem 1 rok doświadczenia. Kocham swoją pracę i kocham ją w każdym calu, ale w przyszłości zastanawiam się, jaki jest zakres dla programistów mobilnych? Programiści pracujący z C# lub Javą mają większy zakres i mogą w przyszłości zostać architektem itp. Ale jako programista mobilny, co mogę osiągnąć... Architekt rozwoju mobilnego nie jest czymś praktycznym, ponieważ projekty mobilne są małe i nie wymagają dużych umiejętności technicznych, takich jak projekty j2ee. Czy powinienem zmienić ścieżkę kariery na Javę lub j2ee, czy coś z telefonu komórkowego? Wszelkie porady są mile widziane.


title: Jak należy nazywać szablony?

text: W D mogę tworzyć szablony w ten sposób: template Foo(A) { A add(A a, A b) { ... } A multiply(A a, A b) { ... } A concatenate(A a, A b ) { ... } } Jak najlepiej nazwać szablon? Jakie konwencje istnieją? Szukam czegoś podobnego, takiego jak „nazwy funkcji muszą zawsze zaczynać się od czasownika”.


title: Co jest najlepsze do nauki robienia pewnych rzeczy: pisania własnych czy patrzenia na cudze?

text: Często, gdy piszę kod, aby wykonać określoną rzecz, mam do czynienia z pisaniem własnego kodu lub użyciem kodu innej osoby. Załóżmy tutaj, że ta „rzecz” jest czymś, czego nigdy wcześniej nie robiłem i chcę się dowiedzieć, jak to się robi. **Który z nich jest lepszy z perspektywy uczenia się: spróbuj napisać własne rozwiązanie; czy patrzenie na kod przez kogoś innego?** Zawsze pisałem własny kod, jeśli mam pomysł, jak to zrobić, ale uciekałem się do patrzenia na czyjś kod, gdy nie mam pojęcia. Uważam, że najlepsze jest prawdopodobnie połączenie obu: podejmij własną próbę, a potem przyjrzyj się, jak zrobił to ktoś inny.


title: Przykłady Java API, które wymagają sekwencji działań

text: W ramach badań, nad którymi pracuję, szukam publicznych interfejsów API, które działają poprawnie tylko wtedy, gdy zastosujesz na nich określoną sekwencję działań. Na przykład klasa `java.nio.channels.SocketChannel` ze standardowej biblioteki Java działa poprawnie tylko z sekwencjami takimi jak `open() -> connect() -> read() -> read() -> close ()". Pełniejszą demonstrację tego, jak można go użyć, można przedstawić na poniższym wykresie: ![prawidłowe użycie SocketChannel](http://i.stack.imgur.com/zVOq9.png) Dodatkowe przykłady interfejsów API standardowej biblioteki Java, które niektóre sekwencje to `java.io.PrintStream` (bardzo podobne do powyższej) i `java.util.Iterator` (które wymagają wywołania `next()` między każdymi dwoma wywołaniami `remove()`, co wymusza określoną sekwencję). Czy Twoje ulubione API do robienia X również zachowuje się w ten sposób? **Bardzo chciałbym wiedzieć o dodatkowych API, które wymagają określonej sekwencji metod do prawidłowego użycia** ; zwłaszcza klasy, które nie są częścią standardowej biblioteki Java. Im bardziej złożona sekwencja jest wymagana, tym lepiej. * * * Niektóre interfejsy API wymagają sekwencji obejmującej wiele klas, na przykład: X x = new X(); x.setup(); Y y = x.utwórzNowyY(); Zz = nowy Z(y); z.doCoś(); Te przykłady są również interesujące, ale głównie szukam sekwencji, które występują w tej samej klasie. * * * **EDYTUJ** dodano nagrodę dla lepszej widoczności. Jestem pewien, że wielu z was spotkało się z wieloma interfejsami API, które pasują do tego opisu - naprawdę doceniłbym kilka dobrych przykładów.


title: Rodzaje cytatów dla języka szablonów HTML

text: Rozwijam język szablonów, a teraz próbuję zdecydować, co powinienem zrobić z cytatami. Zastanawiam się nad posiadaniem 3 różnych typów cudzysłowów, z których wszystkie są obsługiwane inaczej: backtick `podwójny cudzysłów 'pojedynczy cudzysłów' rozwiń zmienne?tak nie sekwencje ucieczki nie tak?escape html nie tak tak ## Backticks Backticks są przeznaczone do użycia wyprowadzanie kodu JavaScript lub kodu HTML bez ucieczki. Często przydaje się możliwość przekazywania zmiennych do JS, ale może to również powodować problemy z traktowaniem rzeczy jako zmiennych, które nie powinny. Moje zmienne są w stylu PHP (`$var`), więc ja" myślę, że może to zamieszać w jQuery, całkiem źle ... ale jeśli wyłączę rozwijanie zmiennych z backticksami, to nie jestem pewien, jak wstawić zmienną do bloku kodu JS? # Pojedyncze cudzysłowy Nie jestem pewien, czy sekwencje specjalne, takie jak `\ n` powinno być traktowane jako literały lub przekonwertowane. Uważam, że bardzo rzadko chcę wyłączyć sekwencje specjalne, ale jeśli to zrobisz, y możesz użyć backticków. Więc skłaniam się ku "tak" w tym przypadku, ale byłoby to sprzeczne z tym, jak robi to PHP. # Podwójne cytaty Całkiem pewien, że chcę, aby wszystko było włączone dla tego. ## Modyfikatory Zastanawiam się również nad dodaniem modyfikatorów, takich jak `@` lub `r` przed napisem, które zmieniłyby niektóre z tych opcji, aby umożliwić kilka dodatkowych kombinacji. Potrzebowałbym 9 różnych cudzysłowów lub 3 cudzysłowów i 2 modyfikatorów, aby uzyskać każdą kombinację, prawda? Mój język obsługuje również "filtry", które można zastosować do dowolnego "terminu" (liczba, zmienna, łańcuch), więc zawsze możesz napisać coś w stylu "blah blah $var blah"|expandvars Lub "mój ciąg"|escapehtml Myśli? Co wolisz? Co byłoby najmniej mylące/najbardziej intuicyjne?


title: Po co używać getterów, a nie oznaczać rzeczy jako ostateczne?

text: Pracuję w roli Java po kilku latach pracy w programowaniu funkcjonalnym. Nasza firma została kupiona przez google i po przejęciu przejąłem rolę javy. Wracając do javy jako programista poliglotów, generuję gettery dla niezmiennych obiektów i widzę, że to totalna bzdura. Czy są jakieś powody, dla których konwencja „getField” powinna być używana tak często? Wydaje mi się w tym momencie niemal przerażające, że tak wiele bibliotek oczekuje, że publiczne metody pobierające będą działać z ich funkcjonalnością, podczas gdy zwykłe upublicznienie i ostateczne upublicznienie pola dałoby taki sam efekt, jak utworzenie tylko gettera na publicznym polu mutowalnym. Dlaczego nie jest bardziej powszechną praktyką porzucanie rozgrywających i po prostu naświetlanie ostatniego pola? EDYCJA: Nie sądzę, że jest to właściwe forum, ponieważ uważam, że jest to raczej punkt do dyskusji niż odpowiedź po ocenie perspektyw.


title: Posiadanie funkcji dziedziczonej zwraca typ pochodny zamiast typu bazowego

text: Piszę dwie klasy w C#: * Klasę `Matrix`, która reprezentuje ogólną Matrix o wymiarach n-na-m * Klasę `SquareMatrix`, która dziedziczy po `Matrix` i ma ograniczenie bycia n-na-n Powodem, dla którego zaprojektowałem to w ten sposób, jest to, że macierze kwadratowe obsługują dodatkowe specyficzne operacje, takie jak obliczanie wyznacznika lub odwrotności, więc możliwość zagwarantowania, że te funkcje są dostępne dla określonego typu, którego używasz, jest fajną rzeczą. Dodatkowo wspierałby wszystkie zwykłe operacje Matrix i może być używany jako Matrix. Mam funkcję w `Matrix` o nazwie `getTranspose()`. Oblicza transpozycję macierzy i zwraca ją jako nową „Macierz”. Odziedziczyłem ją w „SquareMatrix”, ale ponieważ transpozycja macierzy kwadratowej jest gwarantowana jako macierz kwadratowa, chcę również zwrócić „SquareMatrix” I nie jestem pewien, jak najlepiej to zrobić. * Mogę ponownie zaimplementować funkcję w `SquareMatrix`, ale byłoby to powielanie kodu, ponieważ jest to zasadniczo to samo obliczenie * Mogę użyć niejawnych operatorów rzutowania typów, ale jeśli dobrze rozumiem, spowoduje to niepotrzebne alokacje (przesyłanie `SquareMatrix` do ` Matrix`, stwórz nową `Matrix` jako transpozycję, stwórz nową `SquareMatrix` podczas rzutowania typów i wyrzuć transponowaną `Matrix`) * Mogę użyć jawnych operatorów rzutowania typów, ale byłoby głupotą jawnie `SquareMatrix`, a także ma ten sam problem z niejawnym operatorem z niepotrzebnymi alokacjami. Czy jest inna opcja? Czy powinienem zmienić projekt dziedziczenia `SquareMatrix` z `Matrix`? Ten problem dotyczy również operatorów. Wygląda na to, że muszę albo zaimplementować operatory rzutowania typów, które mogą kosztować wydajność, albo muszę ponownie zaimplementować ten sam kod.


title: Czy powinienem podjąć pracę z językiem ezoterycznym?

text: Jak opłaca się podjąć pracę, która będzie polegać głównie na pracy z językiem ezoterycznym lub niszowym? Czy ograniczy to moją perspektywę powrotu do języków, z którymi wolę pracować w dalszej karierze, czy też wystarczy ogólne doświadczenie w pracy na stanowisku inżyniera oprogramowania? Przypuszczam, że pytanie to można by przeformułować w następujący sposób: jak bardzo pracodawcom zależy na konkretnym doświadczeniu językowym, w przeciwieństwie do ogólnego doświadczenia i uzdolnień programistycznych?


title: Wzorce projektowe (java) - Strategia z polami. Czy kiedykolwiek do przyjęcia?

text: Zarówno w przypadku przepełnienia stosu, jak i Java Effective, sugeruje się, że wzorce projektowania strategii powinny być bezstanowe. W rzeczywistości w książce sugeruje się również, aby każdy obiekt strategii był singletonem. Problem, jaki mam, polega na tym, że niektóre strategie, które wymyślam dla mojego programu, wymagają stanów/pól. Albo dlatego, że ich zachowanie jest zależne od ścieżki, albo dlatego, że chcę, aby były heterogeniczne (statystyczny rozkład podobnych strategii, jeśli wolisz). To zmusza mnie do złamania obu sugestii dotyczących efektywności Java: tworzę nową strategię dla każdej klasy użytkownika ORAZ każda z tych strategii zawiera własne pola. Czy to bardzo źle? Czy powinno to być zrobione inaczej? Zasugerowano mi, aby zachować pola, które czynią strategię heterogeniczną w klasie, która jej używa, a następnie przekazać ją jako argument. Uważam, że to bardzo anty-oo. Te pola nie należą do klasy użytkownika. W rzeczywistości, jeśli ta klasa używa innej strategii, może w ogóle nie potrzebować tych pól. Wydaje się, że jest to sprzeczne z powodem, dla którego używam wzorca strategii. Przeważnie jestem po prostu bardzo zdezorientowany * * * Podam tutaj prosty przykład. Wyobraź sobie, że masz klasowego hazardzistę, który reprezentuje kogoś, kto obstawia konie. Teraz ta klasa będzie wymagała strategii przewidywaniaStrategy, która będzie działać mniej więcej tak: interface predictStrategy{ public Horse predictWinningHorse(HorseRace r); } Teraz mogę mieć wiele implementacji, w których strategią jest wybór losowy, wybór białego konia lub cokolwiek innego. To łatwe. Wyobraź sobie jednak, że wdrażam strategię, która opiera się na przewidywaniach z przeszłości i nieco „uczy się” na swoich błędach z przeszłości. Oczywiście każda strategia będzie musiała mieć własną pamięć, na której można się uczyć. Być może będę musiał dodać jeszcze jedną metodę do interfejsu (lub zrobić rozszerzenie) interface predictStrategy{ public Horse predictWinningHorse(HorseRace r); public void addObservation(HorseRace r, Horse oldPrediction, Horse currentWinner); } Aby klasa Gambler wywoływała "strategy.addObservation(...)" na końcu każdego wyścigu, aby poprawić swoją moc predykcyjną. Czy można to **naprawdę** zrobić za pomocą obiektu strategii _stateless_? Wydaje mi się to niemożliwe.


title: Obsługa powtarzającego się żądania cURL POST

text: Zasadniczo przyszedłem tutaj po poradę w oparciu o moje kryteria. Aplikacja, którą próbuję zbudować, jest całkowicie zbudowana z API. To jest jak aplikacja do „licytowania rynkowego”, staram się osiągnąć funkcję „Automatyczne licytowanie”, ale aby tak się stało, będzie musiała wysyłać żądanie cURL POST co 3 sekundy na podstawie podanych kryteriów, a następnie zwracać JSON wynik dla mnie do obsługi strony serwera, w zasadzie chciałbym wskazać, jaki byłby najlepszy sposób na poradzenie sobie z tego rodzaju pomysłem. Powiedziano mi, że coś, co nazywa się "odpytywaniem", zadziała, ale nigdy o tym nie słyszałem. Początkowo pomysł jest taki, jak przedstawiono poniżej 1. Załaduj stronę zestawu „bid.php” 2. Wprowadź określone kryteria 3. Kliknij przycisk Prześlij, w którym pojawi się żądanie „Ajax” 4. Powtarzające się żądanie cURL zostanie aktywowane przez Ajaks. 5. Wyświetlaj dane z żądania cURL co 3 sekundy za pomocą Javascript. Na początku nie proszę o zadanie dla mnie pracy, po prostu pytam profesjonalistów, w jaki sposób mogą najlepiej wykonać to zadanie.


title: Co powinniśmy powiedzieć naszym nieobsługiwanym użytkownikom IE6?

text: W nadchodzącej wersji naszej aplikacji internetowej zepsuliśmy IE6 i nie zamierzamy tego naprawiać. Od kilku miesięcy otrzymywaliśmy wyraźne ostrzeżenie dla użytkowników IE6; zdecydowaliśmy, że nadszedł czas, aby tego nie wspierać. Moje pytanie brzmi: jak powinniśmy przekazać to naszym użytkownikom? Niektórzy uważają, że powinniśmy blokować użytkowników IE6, którzy próbowaliby uzyskać dostęp do aplikacji internetowej, ponieważ to im nie zadziała. Inni uważają, że powinniśmy po prostu zostawić ostrzeżenie, mówiąc „To nie działa w IE6”, ale nie blokować ich; zamiast tego, jeśli klikną, aby odrzucić ostrzeżenie, po prostu wpuść ich do uszkodzonej witryny, aby przekonać się, że to nie działa. Kto ma rację? Czy jest lepszy sposób?


title: Najprostsze możliwe wyjaśnienie algorytmu Paxos (rozproszony konsensus)

text: Szukam prostego wyjaśnienia **algorytmu Paxos**, który można wykorzystać do osiągnięcia konsensusu w środowisku rozproszonym (ewentualnie w sieci peer to peer). Każde wyjaśnienie, jakie do tej pory spotkałem, było ciężką lekturą wielu stron. Szukam uproszczonego wyjaśnienia, które nadal zachowuje podstawowe zasady.


title: Jak udowodnić lub zaprzeczyć, że przedmioty „boga” są złe?

text: **Podsumowanie problemu:** Krótko mówiąc, odziedziczyłem bazę kodu i zespół programistów, których nie wolno mi zastępować, a użycie God Objects jest dużym problemem. Idąc dalej, chcę, abyśmy dokonali refaktoryzacji, ale otrzymuję odpowiedź od zespołów, które chcą robić wszystko z God Objects „ponieważ jest to łatwiejsze”, a to oznacza, że nie pozwolono by mi na refaktoryzację. Odsunąłem, powołując się na moje wieloletnie doświadczenie w programowaniu, że jestem nowym szefem, który został zatrudniony do poznawania tych rzeczy itp., podobnie jak przedstawiciel ds. Sprzedaży kont firm zewnętrznych, i to jest teraz na poziomie wykonawczym i na moim spotkaniu jest jutro i chcę wejść z dużą ilością technicznej amunicji, aby promować najlepsze praktyki, ponieważ czuję, że na dłuższą metę będzie to tańsze (I osobiście uważam, że to jest to, o co martwi się strona trzecia) dla firmy. Mój problem jest z poziomu technicznego, wiem, że jest dobry na dłuższą metę, ale mam problem z ultrakrótkoterminowym i 6-miesięcznym okresem, i chociaż jest to coś, co „znam”, nie mogę tego udowodnić za pomocą referencji i cytowanych zasobów poza jednym osoba (Robert C. Martin, aka wujek Bob), ponieważ o to mnie proszono, ponieważ powiedziano mi, że posiadanie danych od jednej osoby i tylko jednej osoby (Robert C Martin) nie jest wystarczająco dobrym argumentem. **Pytanie:** Jakie zasoby mogę zacytować bezpośrednio (tytuł, rok publikacji, numer strony, cytat) od znanych ekspertów w tej dziedzinie, którzy wyraźnie twierdzą, że takie użycie „Boskich” obiektów/klas/systemów jest złe (lub dobrze, ponieważ szukamy rozwiązania najbardziej ważnego technicznie)? **Badania, które już przeprowadziłem:** 1. Mam tu kilka książek i przeszukałem ich indeksy pod kątem użycia słów „obiekt boga” i „klasa boga”. Zauważyłem, że co dziwne, prawie nigdy nie był używany, a kopia książki GoF, którą mam na przykład, nigdy jej nie używa (przynajmniej według indeksu przede mną), ale znalazłem ją w 2 książkach na poniżej, ale chcę więcej mogę użyć. 2. Sprawdziłem stronę Wikipedii pod kątem „Obiektu Boga” i jest to obecnie skrót z niewielkimi linkami referencyjnymi, więc chociaż osobiście zgadzam się z tym, że jest napisane, nie ma wiele, z których mogę korzystać w środowisku, w którym osobiste doświadczenie nie jest uważane za ważne . Cytowana książka jest również uważana za zbyt starą, aby była ważna przez ludzi, z którymi debatuję nad tymi technicznymi kwestiami, ponieważ argumentują, że „kiedyś uważano ją za złą, ale nikt nie mógł tego udowodnić, a teraz nowoczesne oprogramowanie mówi „bóg "obiekty są dobre w użyciu". Osobiście uważam, że to stwierdzenie jest błędne, ale chcę udowodnić prawdę, cokolwiek to jest. 3. W książce Roberta C Martina „Agile Principles, Patterns and Practices in C#” (ISBN: 0-13-185725-8, twarda okładka), gdzie na stronie 266 stwierdza się: „Wszyscy wiedzą, że bogowie to zły pomysł. t chcą skoncentrować całą inteligencję systemu w pojedynczym obiekcie lub pojedynczej funkcji. Jednym z celów OOD jest podział i podział zachowań na wiele klas i wiele funkcji." -- A potem mówi, że czasami lepiej jest używać klas bogów (powołując się na przykład na mikrokontrolery). 4. W „Clean Code: A Handbook of Agile Software Craftsmanship” Roberta C Martina na stronie 136 (i tylko na tej stronie) mówi się o „boskiej klasie” i przywołuje ją jako doskonały przykład naruszenia zasad „klasy powinny być małe”. „Zasada, której używa, aby promować zasadę pojedynczej odpowiedzialności” zaczynająca się na stronie 138. Problem, jaki mam, polega na tym, że wszystkie moje odniesienia i cytaty pochodzą od tej samej osoby (Robert C. Martin) i pochodzą od tej samej osoby/źródła. powiedziano mi, że ponieważ jest tylko jednym facetem, moje pragnienie, aby nie używać „God Classes" jest nieważne i nie jest akceptowane jako standardowa najlepsza praktyka w branży oprogramowania. Czy to prawda? Czy robię coś źle z technicznego punktu widzenia, próbując trzymać się nauki Wujka Boba? **Boskie Przedmioty oraz Programowanie i Projektowanie Obiektowe:** Im więcej o tym myślę, tym bardziej uważam, że jest to coś, czego się uczysz podczas nauki programowania i nigdy nie jest to wyraźnie wywoływane; sugerowane w dobrym projekcie jest moje myślenie (proszę mnie poprawić) , jak chcę się dowiedzieć), problem polega na tym, że „wiem” o tym, ale nie wszyscy to wiedzą, więc w tym przypadku nie jest to uważany za ważny argument, ponieważ skutecznie nazywam to uniwersalną prawdą, podczas gdy w rzeczywistości większość ludzi jest statystycznie ignorantem, ponieważ statystycznie większość ludzi nie jest programistami. **Wniosek:** nie wiem, czego szukać, aby uzyskać najlepsze dodatkowe wyniki do cytowania, ponieważ zgłaszają twierdzenia techniczne, a ja chcę poznać prawdę i móc to udowodnić za pomocą cytatów jak w rzeczywistości inżynier/naukowiec, nawet jeśli jestem stronniczy w stosunku do boskich obiektów z powodu mojego osobistego doświadczenia z kodem, który ich używał. Wszelka pomoc lub cytaty byłyby bardzo mile widziane.


title: Czy byłoby złym projektem wyabstrahować bibliotekę graficzną i opakować ją w jedną klasę?

text: Zaczynam projekt gry w C++ przy użyciu SFML. Udostępnia różne klasy do obsługi grafiki, danych wejściowych itp., ale chciałbym to wszystko zamknąć w jednej klasie `Media`. Wierzę, że dzięki temu mógłbym uprościć swój wysiłek i sprawić, by klasa zajęła się szczegółami, ograniczając ilość kodu, który muszę napisać, a tym samym ograniczając szanse na to, że błąd przemknie mi przez oczy. Jednak kilka razy czytałem, że monolityczne zajęcia typu „zrób to wszystko”, takie jak ta, mogą nie być dobrym pomysłem. Dlaczego?


title: Czy mogę wydać skrypt, który jest uruchamiany zarówno na bibliotekach własnościowych, jak i na licencji GPL?

text: Piszę swój projekt dyplomowy w GNU Octave. Mój projekt zasadniczo składa się z kilku plików ".m" napisanych w Octave. Korzystam również z zastrzeżonej (i niewydanej) biblioteki współdzielonej opracowanej przez mojego przełożonego. Aby mieć dostęp do biblioteki, napisałem wrapper plików OCT (dynamiczne rozszerzenie dla Octave). Moje pytanie brzmi: czy mogę rozpowszechniać moje pliki ".m", które zależą zarówno od elementów wewnętrznych Octave, jak i zastrzeżonej biblioteki? Nie zamierzam rozpowszechniać żadnych zależności ani plików opakowujących, tylko pliki ".m". Czy ich rozpowszechnianie jest nielegalne (nie mam nic przeciwko zmuszaniu ich do wydawania na określonej licencji), jeśli ich w pełni funkcjonalne oprogramowanie jest zależne od prawnie zastrzeżonego oprogramowania? Nawet jeśli to tylko dokumentacja moich eksperymentów? Pytałem już na forach Octave, ale byli zbyt namiętni i agresywni i nie podali żadnych użytecznych argumentów. Chciałbym usłyszeć fakty, a nie ideologię. PS: Wiem, że mógłbym użyć MEX, który jest jedynym wyraźnie dozwolonym środkiem komunikacji z zastrzeżonymi bibliotekami w Octave. Jednak ze względów technicznych nie jest możliwe użycie MEX w moim przypadku.


title: Jaka jest najlepsza praktyka dla SELECT * FROM SQL w PHP?

text: Muszę utworzyć Sql "SELECT * FROM" z PHP, który teraz zwraca około 10.000 rekordów, które wstawiam do tablicy i ponownie używam na stronie, aby wyświetlić wyniki w tabeli. Muszę mieć wszystkie te elementy również w ukrytych polach wejściowych, aby połączyć się przez API z usługą SMS, aby wysłać SMS <input type="hidden" id="destinatariSMS" name="destinatariSMS" value="<?php echo htmlentities (serialize($destinatariSMS)); ?>" /> Oczywiście przy 10k elementów ładowanie strony trwa około 10-15 sekund (w VPS z 2GB pamięci RAM). Martwię się bo za około dwa miesiące element będzie miał 12-13k, około 1k elementów w miesiącu. Nie mogę stronicować elementów, ponieważ potrzebuję wszystkich razem w tych danych wejściowych... Twoim zdaniem, jaka jest najlepsza praktyka, aby nie niszczyć VPS ani przeglądarki? Dziękuję Ci bardzo


title: Czy kiedykolwiek dobrym pomysłem jest używanie nazwy wzorca projektowego w klasach implementujących?

text: Ostatnio natknąłem się na umiarkowanie dużą bazę kodu Pythona z dużą ilością klas `MyClassAbstractFactory`, `MyClassManager`, `MyClassProxy`, `MyClassAdapter` etc. Chociaż z jednej strony te nazwy skłaniały mnie do zbadania i nauczenia się odpowiednich wzorców, nie były zbyt opisowe co do tego, co **zajmuje się** klasa. Wydaje się również, że należą do zakazanej listy słów w programowaniu: `zmienna`, `proces_dostępna_informacja`, `dane`, `ilość`, `obliczanie`: zbyt szerokie nazwy, które nie mówią nam nic o funkcji * *gdy są używane samodzielnie**. _Więc czy powinien istnieć `CommunicationManager` czy raczej `PortListener`? A może w ogóle nie rozumiem problemu...?_


title: Czy powinienem przeprowadzić migrację do MVC3?

text: Mam projekt MVC2, moje pytanie brzmi: czy powinienem przeprowadzić migrację do MVC3? Czemu? Chciałbym uzyskać opinię niektórych, którzy już migrowali, a przynajmniej używali MVC3 i MVC2. Już przeczytałem http://weblogs.asp.net/scottgu/archive/2011/01/13/announcing-release-of-asp-net-mvc-3-iis-express-sql-ce-4-web-farm- framework-orchard-webmatrix.aspx i już wiem o opisywanym narzędziu do migracji: http://blogs.msdn.com/b/marcinon/archive/2011/01/13/mvc-3-project-upgrade-tool. aspx To, co naprawdę docenię, to twój cenny wgląd. Z poważaniem.


title: Rozpocznij nowy projekt. Gdzie jest inspiracja?

text: _Pytanie na pierwszy rzut oka może wydawać się dziwne_... A **Mogę być sam** w tej sytuacji. Ale obecnie chcę doskonalić swoje umiejętności poprzez naukę nowych frameworków. jednak prosta aplikacja „HelloWorld” mnie nie satysfakcjonuje. Myślę, że **praktyczny projekt** jest wymagany, aby zrozumieć podstawy frameworka. Wiem, że istnieje wiele projektów o charakterze naukowym, takich jak projektowanie menedżera biblioteki lub CMS. Ale ostatnio planowałem nauczyć się ~3 różnych frameworków i nie mogę znaleźć żadnej motywacji poprzez projekt "_nieciekawy_". W końcu nie uruchomiłem żadnego frameworka... Mam świadomość _Nie rozwijam projektu roku_... Po prostu szukam czegoś **trochę ekscytującego**. **Nie oczekuję tematu projektu**, zresztą stymulacja przez projekt jest czymś subiektywnym. Ale chcę poznać twoją inspirację! (lub metoda nauki frameworka ^^) Mówię o frameworku web-dev ale jestem otwarty na wszelkie informacje !