title: Zalecana zawartość dla warstw

text: Jako rozwinięcie mojego poprzedniego pytania o używanie oddzielnych projektów dla oddzielnych warstw - Dobra praktyka w rozwiązaniach Visual Studio Chcę teraz wiedzieć, czy umieszczam odpowiednią funkcjonalność w odpowiednich warstwach. **Tło** Buduję od podstaw aplikację WPF, która zawiera logikę biznesową i obiekty biznesowe. Sama baza danych znajduje się na innym serwerze w sieci z dostępem do niej, ograniczonym do wywołań internetowego interfejsu API przy użyciu uwierzytelniania OAuth. Myślę, że następująca zawartość powinna znajdować się w tych warstwach. Chodzi o to, że przechodzisz od warstwy 1 do warstwy 4, jesteś zależny tylko od warstw pod tobą. Aby zapobiec zależnościom kołowym. **1\. Prezentacja** WPF View (co zobaczy użytkownik) WPF ViewModel (jak program reaguje na interakcję użytkownika) _Brak modelu WPF, ponieważ będzie to tylko obiekt biznesowy_ **2\. Application/Services** Repository (klasa używana przez ViewModel do ładowania/zapisywania obiektów biznesowych) Klasy narzędzi wspomagające zapisywanie obiektów poprzez wybór poprawnych wywołań API. **3\. Warstwa biznesowa** Obiekty biznesowe/Jednostki/DTO (dowolna nazwa jest preferowana) Fabryki (używane przez repozytoria przy tworzeniu obiektów biznesowych) Inne różne klasy biznesowe (np. przechowywanie aktualnie zalogowanego użytkownika) **4\. Infrastruktura/Dostęp do danych** Klient OAuth (wykonuje uwierzytelnione wywołania względem serwera WWW, używane przez klasy repozytoriów)


title: Wzorzec, który zapobiega wyzwalaniu się zdarzeń

text: Pracuję po stronie klienta aplikacji internetowej, która jest odpowiedzialna za uzyskiwanie odpowiedzi od użytkowników na określone pytania oraz przechowywanie i przywracanie ich z bazy danych (lub plików cookie) i napotykam problem, który **aktualizacja odpowiedzi z bazy danych również spowoduje ich ponowne zapisanie** (ponieważ ta sama metoda jest wywoływana `answerQuestion`). Oto uproszczenie mojego przypadku użycia (coffeescript): class Konstruktor kwestionariusza: -> @prefillAnswers() @listenToInput() @listenToQuestionChanges() prefillAnswers: -> dla q w @questionNames @answerQuestion getAnswer(q) listenToInput: -> $ ('.input').on 'change', (e) => $input = $(e.currentTarget) @answerQuestion $input.data('questionName'), $input.val() listenToQuestionChanges: -> @subscribeToEvent 'answeredQuestion', (msg, data) => saveAnswer(data.question, data.answer) getAnswer: (qName) -> # pobiera odpowiedź z bazy danych (np. ciasteczka, ale nie ma znaczenia) saveAnswer: (qName, answer) -> # zapisuje odpowiedź answerQuestion: (qName, answer) -> @publishEvent 'answeredQuestion', {pytanie: qName, odpowiedz: odpowiedź} # Ta część powoduje niepotrzebne zapisywanie, ale gdzie jest najlepsze miejsce na to s? # Zmień stan UI i "modelu" danych # ... **Moje pytanie brzmi, czy istnieje wzorzec OOP, który omawia ten problem i możliwe rozwiązania?** Nie wiem, jak zacząć się tym zajmować i czytać cały książka nie jest obecnie opcją (jednak mam ją na mojej liście rzeczy do zrobienia). Być może można by to przepisać za pomocą wzorca MVC, a ja zmierzam do tego, zaczynając czytać książkę JavaScript Web Applications, ale nie widzę teraz, nawet z MVC, jak najlepiej uniknąć mojego problemu...


title: Co zrobić z programistą, który nie radzi sobie z priorytetami?

text: Jeden kolega w naszym zespole ma wiele zadań do wykonania, ale nie skupia się na tej, która jest obecnie najważniejsza. W naszym zespole zawsze omawiamy kolejne kroki, ale on nadal nie skupia się na jednej rzeczy. Zawsze ma powód, dla którego NIE postępuje właściwie. Jest z nami od 9 miesięcy, więc pomyśleliśmy, że to typowe dla chłopaków świeżo po studiach. Ale problem narasta z każdym tygodniem. Ale chcemy dać mu szansę. Jak możemy go zmotywować? Co byście z nim zrobili?


title: jak zachować wydajność, gdy kompilacja prawie zawsze jest zepsuta?

text: Pracuję w średniej wielkości zespole, który korzysta z tego samego kodu źródłowego i ma ciągłą integrację, ale ponieważ wszyscy musimy pracować w tej samej gałęzi, kompilacja jest prawie zawsze zepsuta. Jak również mamy zasadę, która została wprowadzona niedawno w celu złagodzenia zepsutych buildów, która mówi, że nikomu nie wolno się zameldować, podczas gdy build jest czerwony. To powiedziawszy, w ciągu dnia każdy ma garść okienek 10-15 minut, w których możemy się zameldować. A wraz z rozwojem zespołu okna możliwości odprawy jeszcze bardziej się kurczą. To zmusza programistów do akumulowania zmian lokalnie, co skutkuje większymi zestawami zmian, które jeszcze trudniej zapewnić, że zmiany niczego nie psują. Widać błędne koło. Co możesz mi polecić, abym mógł efektywnie pracować w takim środowisku. Pamiętaj też, że jestem programistą, a nie menedżerem i nie mogę zbytnio zmienić procesu ani zachowania innych osób.


title: Pytanie o naturę generowanego asemblera w C++ i kodzie Algebra

text: Napisałem ten kod: #include <iostream> int main() { int a; std::cin >> a; if(a*a== 3){ std::cout << a; } zwróć 0; } Na MSVC włączyłem wszystkie flagi optymalizacji. Spodziewałem się, że skoro a*a nigdy nie może być 3, to kompilator nie powinien generować kodu dla sekcji: if(a*a== 3){ std::cout << a; } Jednak wygenerował kod dla sekcji. Nie sprawdzałem GCC ani LLVM/CLang. Jakie są granice oczekiwań od kompilatora C++ w tych scenariuszach?


title: Odejmowany algorytm mieszania kolorów

text: Oto mój problem: mam zestaw 'n' kolorów, w tym kolory podstawowe i ich kody szesnastkowe. Mając teraz inny kolor „x”, zastanawiam się, czy rzeczywiście można wymyślić mieszankę dwóch lub więcej kolorów zestawu, która da „x”. Mieszanka powinna być subtraktywna. Oto przykład wyniku działania algorytmu: Mój zestaw kolorów to: c1, c2, c3, c4, c5, c6. Próbuję znaleźć miksturę, aby wyprodukować kolor x. Wynikiem może być: 50% z c1, 25% z c4 i 25% z c5. Jeśli ktoś mógłby wskazać mi właściwy kierunek (lub przynajmniej powiedzieć, czy jest to niewykonalne), każda pomoc byłaby mile widziana!


title: Czy korzystanie z MySQLi jest bezpieczne?

text: Opracowałem aplikację PHP typu open source i obecnie używa ona zarówno rozszerzenia MySQLi, jak i MySQL w celu zapewnienia kompatybilności wstecznej. Zastanawiam się nad przestawieniem go, aby był kompatybilny tylko z MySQLi, ponieważ PHP nie obsługuje już MySQL. Innym powodem, dla którego chciałbym zrezygnować z obsługi zarówno MySQL, jak i MySQLi, jest to, że zasadniczo używam MySQLi w taki sam sposób, jak w przypadku starego rozszerzenia MySQL. Czy ktoś może mi wyjaśnić, czy to dobry czy zły pomysł?


title: Konfiguracja konferencji deweloperów

text: W naszym lokalnym mieście w Wielkiej Brytanii nie ma, o ile mi wiadomo, żadnych konferencji deweloperskich. Jestem przekonany, że w naszym regionie jest wielu profesjonalnych programistów, a także wielu absolwentów, którzy naprawdę czerpią korzyści z konferencji. Chciałbym zadać następujące pytania: * Jakie kroki lub rady należałoby podjąć, gdyby powierzono zadanie zorganizowania lokalnej konferencji deweloperów? * Jak wyglądałby kosztorys? (z wyłączeniem budowy/hostowania stron internetowych) * Jak można wzbudzić zainteresowanie i promować to? * Jak podszedłbym do lokalnych firm i uniwersytetów do współpracy z nimi? Nie kieruję tego pytania tylko do użytkowników, którzy mogą mieć doświadczenie w organizowaniu takich konferencji (ale są bardzo mile widziani). Raczej jak byś to zaatakował, gdybyś miał do tego zadanie?


title: Dlaczego pamięć masowa NoSQL (kluczowa wartość) staje się obecnie popularna?

text: Wydaje się, że koncepcja NoSQL nie jest czymś bardzo nowym i innowacyjnym, ale w dzisiejszych czasach staje się bardzo popularna. Dlaczego stał się popularny ostatnio, a nie w czasach, gdy SQL jest bardzo popularny?


title: Jak Microsoft Operations Framework definiuje rolę architektów i architektury w SDLC?

text: W pracy starałem się o przekazanie dokumentacji architektury. Rozmawiałem z moim CIO i powiedział mi, że jeśli udowodnię mu, że jeśli pozostaniemy w MF, to możemy to wdrożyć. Nie jestem architektem, jestem programistą starającym się zostać architektem. Pobrałem dokumentację MOF i wyszukałem hasło „architekt” lub „architektura” i tak naprawdę znalazłem tylko 3 bardzo drobne odniesienia. Dlatego staram się dowiedzieć więcej o roli „Architektury” w MOF.


title: Krótki termin i sam QAing

text: Kiedy masz krótki termin realizacji i zbliżasz się do końca prac rozwojowych, wolałbyś spieszyć się z kodowaniem, aby poświęcić więcej czasu na kontrolę jakości, czy utrzymać tempo i mieć BARDZO mało czasu na kontrolę jakości? Jestem jedynym programistą w tym projekcie i jedynym QAerem. Muszę to zrobić bardzo krótko, wypowiedzenie. Jest to aplikacja oparta na danych, a dane są zwykle trochę… wprowadzane przez użytkownika. Mógłbym spędzić kilka dni na przeszukiwaniu procesów pośrednich, ale zabierze to trochę cennego czasu, który mi pozostał. Co polecasz? Zmaksymalizować czas kontroli jakości, spiesząc do końca? Albo trzymaj się stabilnie i trzymaj kciuki po zwolnieniu? Nie podoba mi się poczucie wydania wersji i po prostu oglądanie nowej partii danych, tylko czekanie, aż się zatrzaśnie i zawiedzie. Myśli? Opinie?


title: Zamieszanie diagramu klas UML

text: Uczę się rysować diagram klas UML i po przeczytaniu kilku samouczków nadal nie rozumiem właściwego użycia **typu skojarzenia** (czysty diament i czarny diament). Rozumiem ich zastosowania, ale nie mam bardzo konkretnego zrozumienia, kiedy ich używać, a kiedy nie. Na przykład na przykładowym diagramie klas poniżej pomyślałbym, że jeśli **Klient** nie istnieje, **Zamówienie** też zniknie, ale nie będzie używany romb asocjacji. Mam nadzieję, że ktoś dostarczy mi więcej wyjaśnień/przykładów użycia typów skojarzeń. Dziękuję. ![Przykładowy diagram klas porządkowania](http://i.stack.imgur.com/HQxT9.png)


title: Pozostanie ważnym jako programista

text: Interesuje mnie, jak różne osoby pozostają w branży inżynierii oprogramowania tak długo w swojej karierze. Sam jestem na rozdrożu, ponieważ pracowałem przy projektach związanych z inżynierią sieciową, komunikacją, VoIP, parkingami, kontraktami rządowymi i wojskowymi. **Pytanie: W jaki sposób udaje się pozostać ważnym jako programista, przeskakując między różnymi obszarami inżynierii (testowanie, integracja, itp.) i pozostając zmotywowanym w zawodzie?** Stare pytania: 1. Czy odbijasz się między czystym testerem oprogramowania, integracją i z powrotem do prostego kodowania? 2. Jak zapobiec byciu cudem jednego trafienia w tej ekonomii? 3. Jak odnajdujesz swoją pasję?


title: Czy aplikacja oparta na danych potrzebuje bazy danych?

text: To może być strasznie głupie pytanie, ale nie mogę znaleźć niczego nawet związanego w Google (może nie szukam poprawnie). Jestem programistą od około roku. W mojej codziennej pracy robię aplikacje komputerowe i internetowe przy użyciu Visual Studio i używam konfiguracji WAMP do freelancingu. Do przechowywania danych korzystałem z bazy danych lub nie. Chodzi mi o to, że jeśli program przechowuje dane dłużej niż działa aplikacja, używam bazy danych; to wszystko co wiem. Oto rzecz, zawsze pracowałem z **istniejącymi** bazami danych dla aplikacji komputerowych. Nigdy nie tworzyłem aplikacji na komputery stacjonarne od zera (część programistyczna tak, ale baza danych po prostu zawsze tam była i na lokalnym serwerze gdzieś, z której można pobrać aplikację). Chcę opracować aplikację komputerową, która wymagałaby bazy danych. Moje pytanie brzmi, jak działa ten proces? Dostarczając aplikację, czy dostarczam bazę danych, powiedzmy SQLserver, czy jest inny sposób, w jaki to działa? Aby było jasne: aplikacja musiałaby przechowywać typowe informacje o kliencie, pliki, być może obrazy, informacje o płatnościach - które, jak wiem, dostarczyłaby baza danych, ale nie wiem, jak to działa po sprzedaniu i zainstalowaniu aplikacji. Wiem, że inne aplikacje robią tego rodzaju rzeczy - szybkie książki, klienty poczty e-mail itp. Jak to zrobić, po prostu instalując?


title: Jak zamknąć błąd, który nie jest już istotny

text: Obecnie pracuję w średniej wielkości zespole programistów internetowych. Używamy jira do śledzenia błędów. Pracujemy nad produktem z częstymi zmianami układu. Wiele razy zgłaszane są błędy dotyczące błędu w układzie w niektórych przeglądarkach. Czasami, zanim zajmiemy się błędem o niskim priorytecie, układ już się zmienił i nie ma już znaczenia. * Jak powinniśmy to zamknąć? Chodzi mi o to, jak powinniśmy _traktować_ te problemy? Chociaż Jira jest oprogramowaniem do śledzenia błędów, którego używamy, bardziej interesuje mnie, jak ogólnie radzić sobie z tego rodzaju problemami. * Czy to w ogóle ma znaczenie? (Możemy wrócić do układu później, ale jest to bardzo mało prawdopodobne)


title: Czy klasa User powinna zawierać tylko atrybuty i żadnych metod poza pobierającymi/ustawiającymi?

text: Próbuję ulepszyć mój kod OOP i myślę, że moja klasa User staje się zbyt gruba. W moim programie użytkownik ma prawa do "list". Czytaj, pisz, aktualizuj, usuwaj. Utworzyłem więc klasę klasy User { protected $_id; chroniony $_email; chroniona $_nazwa użytkownika; chronione $_hashedPassword; //...Różne ustawiające/gettery public function canRead(List $list){ //Kwerenda bazy danych weryfikuje, czy użytkownik ma prawa do ODCZYTU } public function canUpdate(List $list){ //Kwerenda bazy danych sprawdza, czy użytkownik ma uprawnienia UPDATE } / /etc... } * Czy metody canRead, canUpdate, canWrite, canDelete powinny zostać przeniesione do innej klasy (UserAccessCheck czy coś...)? * Jeśli nie, czy rzeczywisty kod SQL powinien zostać przeniesiony do obiektu List (listCanBeReadByUser()) ?


title: Czy istnieją jakieś internetowe programy dyplomowe/dyplomowe skoncentrowane na wyszukiwaniu informacji lub przetwarzaniu języka?

text: Jestem inżynierem oprogramowania, który chce wypróbować coś innego w swojej karierze i zająć się indeksami wyszukiwania, aplikacjami i systemami wyszukiwania informacji lub przetwarzania języka naturalnego. Gdzie mogę dowiedzieć się więcej na ten temat w ramach programu studiów lub certyfikatu?


title: Pytanie o wydanie iPhone App Store

text: Opracowuję aplikację, której celem jest przeglądanie przesłanych plików na serwerze hosta i ma ona poświadczenia, które zostaną wprowadzone na stronie logowania w celu uwierzytelnienia użytkownika. Kiedy publikuję moją aplikację w App Store, jak załóżmy, że Apple zamierza przetestować lub przynajmniej wyświetlić moją aplikację, gdy Apple musi wprowadzić prawidłowe dane uwierzytelniające, których nie powinienem znać? To prywatne dla mojego klienta.


title: Optymalizacja stylu życia i treningu

text: Jestem studentem pierwszego roku studiów, który niedawno odkrył pasję do informatyki. Po moim pierwszym zaliczeniu formalnego treningu Pythona w zeszłym semestrze, odrzuciłem mój wcześniej hedonistyczny styl życia i utorowałem sobie drogę do zostania najbardziej wszechstronnym i biegłym programistą, jakim mogę być. Wiem, że idę w dobrym kierunku (przestałem palić, codziennie ćwiczę, nauczyłem się C++ i OpenGL, zacząłem trenować kung-fu i medytację), jednak wciąż mam trudności z osiągnięciem satysfakcjonujących rezultatów. Chciałbym móc codziennie spędzać dobre 3-4 godziny na przeglądaniu podręczników. Mam wyczyszczony czas i przydzielone środki. Problem tkwi w logistyce – nigdy wcześniej niczego nie traktowałem poważnie. Ostatnio zdałem sobie sprawę, że nie mam pojęcia, jeśli chodzi o dbanie o siebie i przejmowanie kontroli nad moim umysłem, a to drastycznie ogranicza moją produktywność. Moje pytanie brzmi: Jak mogę nauczyć się zarządzać swoim czasem i dbać o siebie tak, abym mógł spędzić maksymalną ilość czasu każdego dnia na nauce ze stałą koncentracją? Kluczowe byłyby tutaj osobiste sztuczki: techniki, których używasz, aby zasnąć, dieta, która zapewnia koncentrację, a nawet rutynowe ćwiczenia polegające na przerwaniu komputera lub techniki aktywnego czytania. Wszystko, o czym mógłbyś pomyśleć, byłoby świetne. Byłem biedny w liceum i mam motywację, aby zmienić swoje życie, jestem trochę w tyle, jeśli chodzi o dobre nawyki :)


title: Proste wyjaśnienie ciągłej integracji

text: Jak zdefiniowałbyś ciągłą integrację i jakie konkretne komponenty zawiera serwer CI? Chcę wyjaśnić komuś z działu marketingu, czym jest Continuous Integration. Rozumieją kontrolę źródła - tj. używają Subversion. Ale chciałbym im właściwie wyjaśnić, czym jest CI. Artykuł w Wikipedii nigdy właściwie tego nie definiuje, artykuł Martina Fowlera podaje tylko to, co następuje, co w zasadzie jest tautologią, po której następuje niejasne wyjaśnienie „integracji”: Ciągła integracja to praktyka tworzenia oprogramowania, w której członkowie zespołu często integrują swoją pracę , zwykle każda osoba integruje się co najmniej raz dziennie, co prowadzi do wielu integracji dziennie. Każda integracja jest > weryfikowana przez zautomatyzowaną kompilację (w tym test) w celu wykrycia błędów integracji > tak szybko, jak to możliwe. **Aktualizacja** : Wysłałem im ten obraz, nie mogłem znaleźć prostszego. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/Cy2Ny.jpg) **Aktualizacja 2** : Informacja zwrotna od działu marketingu (na czas, gdy były 3 pytania): > I właściwie jak wszystkie 3 odpowiedzi – z różnych powodów. Mam ochotę się zalogować > tylko po to, żeby im wszystkim podziękować! Oczywiście nie może - więc dziękuję w jego imieniu :) **Aktualizacja 3** : Patrząc na artykuł w Wikipedii, zdałem sobie sprawę, że zawiera on zasady, które biorąc pod uwagę tylko nagłówki, są całkiem dobrą listą: 1. Utrzymuj repozytorium kodu 2. Automatyzuj kompilację 3. Wykonaj samotestowanie kompilacji 4. Każdy zobowiązuje się do linii bazowej każdego dnia 5. Każde zatwierdzenie (do linii bazowej) powinno być budowane 6. Utrzymuj kompilację szybko 7. Testuj w klon środowiska produkcyjnego 8. Ułatw uzyskiwanie najnowszych wyników 9. Każdy może zobaczyć wyniki najnowszej wersji 10. Zautomatyzuj wdrażanie


title: Równoważenie wstrzykiwania zależności za pomocą publicznego projektowania API

text: Zastanawiałem się, jak zrównoważyć testowalny projekt za pomocą iniekcji zależności z zapewnieniem prostego, stałego publicznego API. Moim dylematem jest: ludzie chcieliby zrobić coś takiego jak `var server = new Server(){ ... }` i nie muszą się martwić tworzeniem wielu zależności i wykresów zależności, które `Server(,,,,,, )” może mieć. Podczas programowania nie przejmuję się zbytnio, ponieważ używam frameworka IoC/DI do obsługi tego wszystkiego (nie używam aspektów zarządzania cyklem życia żadnego kontenera, co jeszcze bardziej komplikuje sprawę). Obecnie jest mało prawdopodobne, aby zależności zostały ponownie zaimplementowane. Komponentyzacja w tym przypadku służy prawie wyłącznie testowalności (i przyzwoitemu projektowi!), a nie tworzeniu szwów dla rozszerzenia itp. Ludzie przez 99,999% czasu będą chcieli użyć domyślnej konfiguracji. Więc. Mogłem na sztywno zakodować zależności. Nie chcę tego robić, przegrywamy nasze testy! Mógłbym dostarczyć domyślny konstruktor z zakodowanymi na sztywno zależnościami i taki, który pobiera zależności. To… niechlujne i prawdopodobnie mylące, ale wykonalne. Mógłbym sprawić, by konstruktor odbierający zależność był wewnętrzny i sprawić, by moje testy jednostkowe były zespołem znajomych (zakładając, że C#), który porządkuje publiczne API, ale pozostawia paskudną ukrytą pułapkę czającą się do konserwacji. Posiadanie dwóch konstruktorów, które są połączone niejawnie, a nie jawnie, byłoby ogólnie złym projektem w mojej książce. W tej chwili to najmniejsze zło, jakie przychodzi mi do głowy. Opinie? Mądrość?


title: Ocena JSON na podstawie popularnych automatycznych sugestii

text: Oceniałem różne sposoby, w jakie wielcy ludzie wdrażają autosugestię. To są moje obserwacje. (Użyto ciągu wyszukiwania to "ab") Pytania na koniec. Yahoo próbuje czegoś takiego, gdzie odpowiedzią był JSONP. Odpowiedź jest czytelna i służy celowi. ## Odpowiedź Yahoo yasearch({"q":"ab ","gprid":"Y435dN7TRFqnYqQhnBueJA","f":["k","m"],"r":[["ab de villiers",0 ],["ćwiczenia ab",0],["ab king pro",0], ["bankowość internetowa ab infi-net",0],["ab mujhe raat din",0],["treningi ab" ,0],["ab mp3",0],["ab meri bari",0],["ab ke baras",0],["ab meri baari",0]]}) Bing miał podobne podejście . Zwraca blok "if", sa_inst.apiCB() wydaje się być funkcją, która przetwarza JSON. Znowu odpowiedź jest czytelna i uzasadniona. ## Odpowiedź Binga if(typeof sa_inst.apiCB == 'funkcja') sa_inst.apiCB({"AS":{"Query":"ab","FullResults":1,"Results":[{"Type": "AS","Suggests": [{"Txt":"abp wiadomości","Type":"AS","Sk":""}, {"Txt":"abbottapp.abbott.in","Type":"AS","Sk":"AS1 "},{"Txt":"abt podróże","Type":"AS","Sk":"AS2"},{"Txt": "abp ananda","Type":"AS","Sk":"AS3"}, {"Txt":"abhibus","Type":"AS","Sk":"AS4"},{"Txt":"abp maza","Type": "AS","Sk":"AS5"}, {"Txt":"abb","Type":"AS","Sk":"AS6"}, {"Txt ":"aboutgoogle","Type":"AS","Sk":"AS7"}]}]}} /* pageview_candidate */); Teraz przychodzi Google. Odpowiedź jest wysyłana jako 2 obiekty JSON (oddzielone /""/). Większość z nich jest nieczytelna. ## Odpowiedź Google {e:"XteVUYKqDoKHrAfdz4D4Aw",c:0,u:"https://www.google.com/s?hl\x3den\x26gs_rn\x3d14\x26gs_ri\x3dpsy-ab\x26tok\x3dvsobDh\ICRycpnG x3d2\x26gs_id\x3dd\x26xhr\x3dt\x26q\x3dab\x26es_nrs\x3dtrue\x26pf\x3dp\x26output\x3dsearch\x26sclient\x3dpsy-ab\x26oq\x3d\x3x1. lub.r_cp.r_qf.\x26bvm\x3dbv.46751780,d.bmk\x26fp\x3d2647af89de6b6c61\x26biw\x3d1366\x26bih\x3d453\x26tch\x3d1\x26ech\g26fp\x3d2647af89de6b6c61\x26biw\x3d1366\x26bih\x3d453\x26tch\x3d1\x26ech\d26ech\ps3d4. "[\x22ab\x22, [[\x22ab\\u003Cb\\u003Ec\\u003C\\/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\\u003Ec news\\u003C\ \/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\\u003Eercrombie\\u003C\\/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\ \u003Ecya\\u003C\\/b\\u003E\x22,0,[]]], {\x22j\x22:\x22d\x22,\x22q\x22:\x22t8z6h8KhWvbkEX6xablxgYxDUq4\x22,\x22t\x22: { x22bpc\x22:false,\x22tlw\x22:false}}]"} /*""*/ {e:"XteVUYKqDoKHrAfdz4D4Aw",c:-1,u:"https://www.google.com/searchdata? hl\x3den\x26gs_rn\x3d1 4\x26gs_ri\x3dpsy-ab\x26tok\x3dvsobDhICRmdcnY7ayKTGng\x26cp\x3d2\x26gs_id\x3dd\x26xhr\x3dt\x26q\x3dab\x26es_nrs\\d\s3dx26xouts\x3dx26xoutdx x26gs_l\x3d\x26pbx\x3d1\x26bav\x3don.2,lub.r_cp.r_qf.\x26bvm\x3dbv.46751780,d.bmk\x26fp\x3d2647af89de6b6c61\x26biw\dx345h\ch366x\x26biw\dx2463ex1x\ \x26psi\x3dVteVUcYuzOGsB6LpgdgB.1368774484351.1", p:true,d:"{\x22snp\x22:1}"} /*""*/ 1. Czy to są kody szesnastkowe, czy jak je nazywasz? 2. Dlaczego istnieje potrzeba zwrotu 2 przedmiotów? 3. Jaka jest potrzeba kodowania JSON? 4. Jaki jest idealny format dla JSON spośród tych trzech? Wszelkie przemyślenia na ten temat są mile widziane.


title: Jak mogę synchronizować katalogi?

text: Kontekst: Tworzę oprogramowanie, które odtwarza funkcjonalność Windows Home Server Drive Extender, w którym użytkownicy używają wielu dysków twardych, aby zapobiec utracie danych. Oprogramowanie istnieje od grudnia 2009 r., ale ma problemy ze zmianami nazw (szczegóły poniżej). Mam katalog dirA, w którym użytkownicy mogą pracować: mogą tworzyć, modyfikować, zmieniać nazwy i usuwać pliki i podkatalogi w dirA. Chcę zachować inny katalog, dirB, zsynchronizowany z dirA. Celem jest utworzenie kopii zapasowej wszystkich plików w dirA na wypadek, gdyby dysk, na którym się znajduje, ulegnie awarii (dirB byłby na innym dysku). To, co chciałbym, to dyskusja na temat znalezienia działającego algorytmu, który osiągnąłby powyższe, z ograniczeniami wymienionymi poniżej. Wymagania: 1\. Coś asynchronicznego - nie chcę zatrzymywać operacji na plikach w dirA podczas pracy w dirB. 2\. Nie mogę zakładać, że mogę po prostu ślepo rsynchronizować dirA do dirB w regularnych odstępach czasu - dirA może zawierać miliony plików i katalogów oraz terabajty danych. Całkowite chodzenie po drzewie dirA może zająć godziny. Te dwa wymagania sprawiają, że jest to naprawdę trudne. To, że jest asynchroniczne, oznacza, że kiedy zaczynam pracę nad konkretnym plikiem z dirA, mógł się on dużo przesunąć od czasu jego pojawienia się. A drugie ograniczenie oznacza, że naprawdę muszę oglądać dirA i pracować nad atomowymi operacjami na plikach, które zauważam. Obecna (przerwana) realizacja: 1\. Rejestruj wszystkie operacje na plikach i katalogach w dirA. 2\. Używając oddzielnego procesu, przeczytaj ten dziennik i "powtórz" wszystkie zarejestrowane operacje w dirB. Dlaczego jest uszkodzony: echo 1 > dirA/plik1 # Zezwól procesowi 'czytnika dziennika' na utworzenie dirB/plik1: log = "write dirA/file1"; akcja = cp katalogA/plik1 katalogB/plik1; wynik = OK echo 1 > dirA/plik2 mv dirA/plik1 dirA/plik3 mv dirA/plik2 dirA/plik1 rm dirA/plik3 # Wynik końcowy: plik1 zawiera '1' # proces 'czytnika dziennika' rozpoczyna pracę na 4 powyższych operacjach na plikach : log = "zapisz plik2"; akcja = cp katalogA/plik2 katalogB/plik2; wynik = nie powiodło się: nie ma dziennika dirA/plik2 = "zmień nazwę plik1 plik3"; akcja = mv katalogB/plik1 katalogB/plik3; wynik = OK log = "zmień nazwę plik2 plik1"; akcja = mv katalogB/plik2 katalogB/plik1; wynik = nie powiodło się: nie ma dziennika dirB/plik2 = "usuń plik3"; akcja = rm katalogB/plik3; wynik = OK # Koniec wyniku w dirB: nie ma więcej plików! Kolejny uszkodzony przykład: echo 1 > dirA/dir1/plik1 mv dirA/dir1 dirA/dir2 # Proces 'czytnika dziennika' zaczyna działać na 2 powyższych operacjach na plikach: log = "write file1"; akcja = cp katalogA/kat1/plik1 katalogB/kat1/plik1; wynik = nie powiodło się: nie ma katalogu katalogA/katalog1/plik1 log = "zmień nazwę katalog1 katalog2"; akcja = śr dirB/kat1 dirB/kat2; wynik = nie powiodło się: nie ma dirA/dir1 # Zakończ wynik, jeśli dirB: nic!


title: Jak przenieść klienta z makiet UI do zestawu rzeczywistych wymagań?

text: Załóżmy, że otrzymujesz makietę 25 ekranów wizualnych stanów Twojej aplikacji. Oczekuje się, że to wystarczy, aby mieć pewność, że możemy ją opracować i przekazać pierwotnemu interesariuszowi lub klientowi jako gotową aplikację, a oni będą zadowoleni. Oczywiście skończy się to ponownym zadawaniem interesariuszom wielu pytań, które zostały użyte do wymyślenia interfejsu użytkownika, co jest marnotrawstwem. Jednak wiele razy stwierdziłem, że to bardzo za mało, w trakcie tworzenia aplikacji wymagania zacierają się przez fakt, że replikujemy interfejs i w końcu klient nie jest tak zadowolony, jak mu się początkowo wydawało kiedy poprosiliśmy ich o wszystkie informacje potrzebne do stworzenia interfejsu użytkownika. Po prostu nie jestem pewien, o co jeszcze prosić, starałem się być konkretny i prosić o wymagania i zrozumienie ogólnego celu, ale nie wiem, o co powinienem prosić. Jeśli zacznę teraz, wiele czasu zostanie zmarnowane na ponowne haszowanie wszystkich informacji, które prowadzą do interfejsu użytkownika, a podczas tej fazy wiele ważnych powodów, które pierwotnie miał klient, zostanie utraconych. Jak sprawić, by ludzie zrozumieli, że nie możemy zablokować wymagań na podstawie makiet interfejsu użytkownika, prosząc o coś, co mogą dla mnie stworzyć? Od czego najlepiej zacząć, aby poprawnie wykonać zadanie tworzenia aplikacji dla użytkowników końcowych?


title: Jak ustawić swój JavaScript jako prywatny?

text: Chciałem wiedzieć, czy istnieje sposób na uczynienie JavaScript prywatnym po stronie klienta?


title: Gdzie znaleźć zasoby do napisania programu takiego jak sandboxie?

text: Sandboxie to program, który pozwoli Ci czytać z dysku twardego, ale przy próbie odpisania przekieruje plik do osobnego kontenera. Chciałbym nauczyć się robić coś podobnego. Nie wiem jakich terminów czy bibliotek szukać. Czy w systemie Windows jest interfejs API przekierowania plików? Czy istnieje biblioteka o otwartym kodzie źródłowym, która może mi pomóc z upadkiem i brudnymi kawałkami? Wiem, że prawdopodobnie nie ma interfejsu API w systemie Windows, aby zrobić to po wyjęciu z pudełka i prawdopodobnie będę musiał napisać własny sterownik. Nie mam nic przeciwko pisaniu sterownika, ten projekt ma być dla mnie nauką i chcę się nauczyć, jak to zrobić. Każda pomoc byłaby bardzo mile widziana. * * * **Wyjaśnienie:** Próbuję odtworzyć zachowanie sandboxie, IE: uruchomienie niezmodyfikowanego exe innego programu i przekierowanie sposobu, w jaki obsługuje on plik IO. To, co chcę zrobić, to w zasadzie mieć program uruchamiający, który zamieni mój dysk SSD w pamięć podręczną dla mojego wirującego dysku. Uruchamiam moją aplikację, a ona z kolei uruchamia inną aplikację. Wszelkie zasoby żądane przez inne aplikacje zostaną przekazane na obracający się dysk, ale także zostaną skopiowane na dysk SSD. Wszelkie dalsze odczyty i wszystkie zapisy zostaną wykonane na kopii pliku na dysku SSD. Po zamknięciu drugiego programu moja aplikacja opróżni zapisy z dysku SSD z powrotem na obracający się dysk. Technicznie mógłbym to zrobić za pomocą sandboxie i kilku sztuczek skryptowych, ale chcę poznać wewnętrzne elementy IO pliku i jak wykonać przekierowanie. * * * **Wyjaśnienie 2:** Nie mam już problemu z używaniem gotowej biblioteki, o ile jest ona bezpłatna (jak piwo). Nie musi być open source ani darmowy (jak w mowie).


title: Podejścia do aktualizacji i dodawania funkcji do stron PHP

text: Chciałbym wiedzieć, jak ludzie podchodzą do tworzenia swoich stron internetowych, które są w produkcji. Na przykład: 1. Jak zarządzasz wersjami itp. 2. Czy tworzysz podkatalog na serwerze produkcyjnym i tam pracujesz, czy używasz innego środowiska i umieszczasz tam aktualizacje 3. Czy masz jakieś specjalne zarządzanie oprogramowanie, w którym trzymasz notatki, wskazówki, terminy itp. Pytam o to, ponieważ mam stronę, do której chciałbym dodać nowe funkcje. Ale ta strona jest w produkcji. Jakie są Twoje sugestie dotyczące aktualizacji witryn internetowych i dodawania nowych funkcji? Używam PHP z Apache na CentOS


title: W którym momencie powinieneś zacząć myśleć o wydajności?

text: Kiedy buduję aplikacje, ciągle pytam, czy jest to najlepszy sposób na wykonanie lub zaimplementowanie określonej funkcjonalności. Często piszę pytania na stackoverflow lub innym forum z prośbą o opinie tylko po to, aby otrzymać komentarze o tym, jak nie „stawiać wozu przed koniem” w zakresie wydajności. Czy większość programistów naprawdę nie myśli o wydajności, dopóki aplikacja nie zostanie ukończona, czy wydajność jest absolutnie nie do przyjęcia? To znaczy, rozumiem, że środowiska programistyczne różnią się od środowisk produkcyjnych i nie powinieneś całkowicie polegać na wynikach z laptopa deweloperskiego ... ale istnieją praktyki i techniki, które zapewniają lepszą wydajność niż inne. Czy branie pod uwagę wydajności w całym procesie tworzenia to zła praktyka? Czy powinienem odsunąć te rozważania, dopóki wydajność rzeczywiście nie spadnie? **Aktualizacja** Żeby było jasne, mówię o sytuacji, w której rozważasz lub zamierzasz popracować nad jakąś funkcjonalnością. Wiesz, że istnieje kilka sposobów na jego implementację, ale nie masz pewności, jak dobrze każda implementacja będzie się skalować. Może być też kilka technik, których nawet nie znasz. Na małą skalę którekolwiek z podejść byłoby prawdopodobnie odpowiednie, ale na większą skalę niektóre będą nadążać, a inne nie. Często, gdy pytam o opinie lub wskazówki, odpowiedź brzmi: martw się o to później...


title: Prawdziwi programiści używają debuggerów?

text: Czy doświadczeni programiści faktycznie kiedykolwiek używają debuggerów, a jeśli tak, to w jakich okolicznościach. Chociaż w odpowiedzi na to pytanie powiedziałem "miesiące" prawdopodobnie miałem na myśli "lata" - naprawdę nie używam debuggera. Więc moje konkretne pytanie, na które można odpowiedzieć, to w jakich okolicznościach, jako doświadczony programista, użyłbyś debuggera?


title: Program COBOL czy JCL?

text: Mam do wykonania 3 zadania: wstawianie, usuwanie i pisanie Nie jestem pewien, jak najlepiej to zrobić. Moje umiejętności projektowania programów mainframe nie są zbyt ograniczone, więc szukałem porady. Czy mogę uniknąć robienia w tym celu programu w języku COBOL? Z mojego punktu widzenia potrzebuję tylko JCL, który wykonuje instrukcje SQL. Jeśli poprawnie zaprojektuję moje instrukcje, powinni być w stanie wykonać w ten sposób zadania 1 i 2. Ale myślę, że może potrzebować programu w języku COBOL do zapisu do pliku? Jeśli to zrobię, czy po prostu przejdę przez bazę danych z kursorem, a następnie przetworzę każdy wiersz i podejmę odpowiednią akcję w oparciu o wiersz? Każde zadanie wydaje się podobne, ale zapytania są różne i dają różne wyniki, więc instrukcje SQL są bardzo różne. Ale wszyscy pracują z tym samym stołem. Zadanie 1: * wykonaj zapytanie SQL * Dla każdego wiersza, który wyszuka zapytanie * Wstaw nowy wiersz na podstawie tego wiersza Zadanie 2: * wykonaj zapytanie SQL * Dla każdego wiersza, który wyszuka zapytanie * usuń rekord Zadanie 3: * wykonaj Zapytanie SQL * Dla każdego wiersza, który wyszuka zapytanie * Zapisz ten rekord do pliku


title: Na czym skupić się podczas rozdzielania monolitycznej bazy kodu na oddzielne pakiety (NuGet)?

text: Pracuję na dość dużej aplikacji webowej. Główne rozwiązanie zawierające projekt aplikacji internetowej ma ponad 100 projektów. Średni czas budowy tego rozwiązania to 2 minuty na czterordzeniowej maszynie o pojemności 12 GB z dyskiem SSD. Zastanawiamy się, jak możemy usprawnić nasz proces wdrażania. Zamierzam pracować nad weryfikacją koncepcji, aby przenieść kod z głównego repozytorium źródłowego do oddzielnych repozytoriów, które zostaną zbudowane i spakowane jako pakiety NuGet. Będą one hostowane w wewnętrznym kanale i stamtąd instalowane w głównym rozwiązaniu. W celu weryfikacji koncepcji chcę skupić się na najważniejszych/wyzwaniających aspektach. Mam pewne doświadczenie w budowaniu samodzielnych bibliotek i oczywiście doświadczenie w pracy nad tym monolitycznym kodem. Chciałbym Cię zapytać: na czym powinienem się skupić w przypadku weryfikacji koncepcji? * * * Niektóre obszary, z którymi myślę, że powinienem poeksperymentować: * Wersjonowanie * Wiązanie zespołu * Testowanie jednostek * ILMerge do łączenia zależności * Debugowanie * Wydajność PS. Nie odpowiadam za automatyzację budowania i publikowania pakietów w repozytorium NuGet.


title: Mam problem z nadążaniem

text: Mam prawie 39 lat i rozwijam się od 17 lat. Nowi 20-latkowie wydają się znać nowsze sposoby robienia rzeczy i zajmuje mi DUŻO więcej czasu, aby nabrać prędkości. Kiedyś robiłem .NET, ale wziąłem nową pracę, w której robią głównie Javę i wow, jest o wiele trudniej! Co powinienem zrobić?


title: Jak reprezentujesz klasy kontenerów w UML?

text: Podczas rysowania szybkich diagramów klas często nie rozumiem, jak reprezentować klasy, które służą tylko do przekazywania danych między różnymi częściami programu. Umieszczam je w szczerym polu, aby inni mogli zobaczyć, jaka jest klasa w parametrach/zwrotach. Czy to jest właściwy sposób na zrobienie tego? _(Wyglądają strasznie samotnie tam sami.)_


title: Programy szkoleniowe z zarządzania czasem dla programistów

text: Moja firma poprosiła mnie o ustalenie osobistego celu poprawy zarządzania czasem. Oznacza to nadążanie za raportowaniem czasu, korygowanie szacunków i reagowanie na zapytania e-mailowe. Oczywiście czytałem książki na ten temat i wypróbowałem wiele systemów. Po prostu pochłania mnie kodowanie z wyłączeniem zadań administracyjnych. Myślę, że większość z nich to postawa lub kwestia psychologiczna niezwiązana z rzeczywistym zarządzaniem czasem. Firma jest gotowa zapłacić za to jako profesjonalne szkolenie, dlatego szukam uznanego i skutecznego programu szkoleniowego. Chciałbym coś, co nie tylko „rozwiąże” problem, ale potencjalnie sprawi, że będę bardziej „promowany”. Jestem ceniony za moje umiejętności techniczne, ale kierownictwo jest sfrustrowane moim słabym dopasowaniem do ogólnego planowania i rozumiem, że jest to moja główna przeszkoda w podejmowaniu większej odpowiedzialności. Jakie są programy, które są dostosowane do efektywnego i terminowego tworzenia oprogramowania? Zastanawiam się, czy jakieś szkolenie z zakresu zarządzania projektami miałoby zastosowanie, ale coś bardziej specyficznego dla programisty lub perspektywy kierownika technicznego byłoby świetne. Dziękuję Ci.


title: Projektowanie podklas dla abstrakcyjnej klasy bazowej w C++

text: Robię małe zadanie w C++, gdzie muszę używać pojęć takich jak funkcje wirtualne i dziedziczenie w wybranej przeze mnie domenie. Wdrażam prototyp menedżera pakietów w Linuksie. Mam klasę bazową Package, która ma atrybuty takie jak id_pakietu, nazwa, wersja, zależności itp. Istnieją dwa rodzaje pakietów MetaPackages i ConcretePackages, które różnią się sposobem, w jaki muszą być instalowane i usuwane. Zastanawiam się nad zadeklarowaniem metod instalacji i usuwania w pakiecie jako wirtualnych. Podczas przechowywania tych pakietów w pliku danych mogę jakoś wiedzieć, czy przechowywany pakiet to Meta czy Concrete. Nie jestem pewien, jak najlepiej to zaprojektować. Czy ktoś może wskazać mi źródło, abym mógł lepiej się tego nauczyć. Mamy Grady Booch w naszym programie nauczania i szczerze mówiąc ciężko jest czytać o wiele mniej rozumiejąc.


title: Jakie są sposoby promowania aplikacji na Androida?

text: To nie jest pytanie techniczne, ale czy ktoś może mi powiedzieć, jakie są dobre sposoby promowania aplikacji inne niż Market.


title: Aranżacja biura – komfort czy praca zespołowa?

text: Nasz zespół pracuje w biurze typu open space. Na szczęście kabiny są dość duże (stoły w kształcie litery L dla wszystkich!), jest dość dużo miejsca, więc nie jesteśmy kanapkami. Nie wchodząc w szczegóły, są miejsca wygodne (okno), miejsca normalne i miejsca głupie (w pobliżu korytarza). * * * Do niedawna **zespół programistów składający się z dwunastu inżynierów siedział** tak, że wszystkie rodzaje miejsc były zajęte i wszyscy byliśmy **blisko siebie**. W starym układzie **komunikacja werbalna była bardzo łatwa** \- połowa zespołu znajdowała się w zasięgu rozmowy. Druga połowa była oddalona o jakieś dziesięć kroków. Często mogłem zapytać, podyskutować, rozwiązać problemy bez wychodzenia z kostki. Większość komunikacji jest związana z pracą, bez bzdur lub mentalnej masturbacji, która niepotrzebnie rozpraszałaby innych. * * * Teraz przenieśliśmy się do innej części budynku i mamy większą przestrzeń do zajęcia. W tym momencie każdy mógł wybrać swoje miejsce. Oczywiście wszystkie głupie miejsca są puste (dla biednych nowoprzybyłych do zajęcia bwehaha). W nowej aranżacji **zespół programistów jest rozciągnięty** na podłodze, a niektórzy kluczowi inżynierowie siedzą „daleko” od siebie – na pewno nie w zasięgu rozmowy. Jeszcze nie doświadczyłem, jak to działa, ale obawiam się, że praca zespołowa i komunikacja mogły zostać zamienione na osobisty komfort. * * * Na koniec pytania... Jak myślisz, co jest lepszą aranżacją biura? Takie, które pozwalają na swobodną komunikację werbalną, ale handlują dla wygody niektórych programistów, czy takie, które potencjalnie utrudniają komunikację werbalną, ale sprawiają, że programiści czują się bardziej komfortowo na swoim miejscu? A może to w ogóle nie ma znaczenia i będziemy ewoluować, by być sprawnymi w każdej aranżacji? Jakie jest twoje osobiste doświadczenie? _Uwaga - tak, czytam książki i posty o tym, jak ważne jest miejsce pracy w naszej pracy. Jednak w tym przypadku - wszyscy wciąż jesteśmy na otwartej przestrzeni, a różnica między różnymi miejscami nie jest tak naprawdę przełomowa. Myślę więc, że mały komfort, jaki zyskuje niewielu programistów, nie jest wart utraty łatwej komunikacji._


title: Rysujesz elipsę z obwiedni?

text: Czy ktoś zna dobry algorytm rysowania elipsy z obwiedni? draw_elipse(int s1, int s2, int s3, int s4, kolor c); Nie potrzebuję czegoś zoptymalizowanego pod kątem niezrozumiałej, nieczytelnej wydajności. Po prostu coś wystarczająco dobrego, aby użyć prostego interfejsu do rysowania. Możesz podać algorytm w swojej odpowiedzi we wszystkich językach programowania, a nawet w pseudokodzie, ale wolałbym, gdybyś używał C++ lub składni podobnej do C++.


title: 2 najbliższe punkty między 2 prostokątami

text: Na płaszczyźnie 2D mam 2 prostokąty. Chcę znaleźć najbliższą parę punktów (po jednym na każdym prostokącie), które są najbliżej siebie. Przez punkty rozumiem rogi prostokątów. I nie, nie nakładają się. Czy jest na to inny sposób niż sprawdzenie wszystkich odległości między wszystkimi kombinacjami punktów i znalezienie najmniejszego?


title: Pytanie dotyczące licencji ExtJS 4 GPL/komercyjnej

text: Obecnie jestem w trakcie wybierania struktury widżetów do wykorzystania w nowym projekcie. Bieżące wybory to Dojo/ExtJS4. Opieramy się na ExtJS4, ale możemy mieć pewne problemy z licencjonowaniem. Ze strony licencji Sencha: > Nasza licencja open source jest odpowiednią opcją, jeśli tworzysz aplikację > open source na licencji zgodnej z licencją GNU GPL > v3. Jednak na GPL FAQ: http://www.gnu.org/licenses/gpl-faq.html#UnreleasedMods > **Firma uruchamia na swojej stronie internetowej zmodyfikowaną wersję programu na GPL. > Czy GPL mówi, że muszą wydać swoje zmodyfikowane źródła?** > > GPL pozwala każdemu stworzyć zmodyfikowaną wersję i używać jej bez > rozpowszechniania jej wśród innych. To, co robi ta firma, jest szczególnym przypadkiem > tego. Dlatego firma nie musi udostępniać zmodyfikowanych źródeł. > > Bardzo ważne jest, aby ludzie mieli swobodę dokonywania zmian i > korzystania z nich prywatnie, bez konieczności publikowania tych modyfikacji. Jednakże, umieszczenie programu na serwerze, aby ludzie mogli z nim porozmawiać, nie jest > „prywatnym” użytkowaniem, więc w tym szczególnym przypadku uzasadnione byłoby wymaganie wydania kodu źródłowego. Deweloperzy, którzy chcą rozwiązać ten problem, mogą chcieć > użyć GNU Affero GPL dla programów przeznaczonych do użytku na serwerach sieciowych. Wygląda na **sprzeczne** z tym, co mają na stronie z licencjami **Sencha**. Ponadto aplikacja webowa zostanie wdrożona w chmurze i będzie oferować model subskrypcji. Czytałem, że jest to tak zwana **luka ASP** i że **Affero GPL** została stworzona, aby temu zaradzić. Projekt będzie miał wiele modułów, ale z pewnością będą moduły backend/integration i frontend. **frontend** będzie tylko **zużywał ujawnione usługi REST** i będzie całkowicie **inną aplikacją**. Pytanie brzmi, czy byłyby jakieś problemy z licencją, jeśli użyjemy wersji **GPL** i zechcemy zaoferować kod źródłowy ( **tylko moduł frontend** ), który używa ExtJS dla naszych przyszłych klientów?


title: Pobieranie maksymalnej wartości z zakresu w nieposortowanej tablicy

text: Mam _unsorted array_. Mam zapytania, w których podaję zakres, a następnie maksymalna wartość z tego zakresu musi zostać zwrócona. Na przykład: tablica[]={23,17,9,45,78,2,4,6,90,1}; zapytanie(oba włącznie): 2 6 odpowiedź: 78 Jaki algorytm lub strukturę danych konstruuję, aby szybko uzyskać maksymalną wartość z dowolnego zakresu. (Jest wiele zapytań) **EDYTUJ:** To rzeczywiście jest prosta wersja rzeczywistego problemu. Mogę mieć rozmiar tablicy do 100000, a liczbę zapytań do 100000. Zdecydowanie więc potrzebuję wstępnego przetwarzania, które ułatwi szybką odpowiedź na zapytanie.


title: Dlaczego powinienem adresować trasy do użytkownika w aplikacji jednostronicowej?

text: Dlaczego aplikacja jednostronicowa zastępuje klienta pulpitu, dlaczego powinienem wyświetlać określone adresy URL na pasku adresu przeglądarki. Dlaczego mysite.com to za mało. Moje pytanie do was brzmi teraz: Jakie są powody i korzyści, dla których użytkownik może wyświetlać taki adres URL, jak mysite.com/customers/3 Czy są jakieś powody, dla których użytkownik chce mieć możliwość dodania witryny do zakładek, a to wymagałoby URI ?


title: Czy istnieje sytuacja, w której nie ma alternatywy dla instanceof?

text: Wydaje mi się, że `instanceof` pochodzi z krainy programowania funkcjonalnego i jest rozwodnioną wersją _dopasowywania wzorców_ i że alternatywą dla OO powinno być dynamiczne wysyłanie. Czy w językach OO (pomyśl Ruby) jest jakaś sytuacja, w której „instanceof” jest jedynym rozwiązaniem? Nie przychodzi mi do głowy żadna, szczególnie w Rubim, gdzie możesz załatać dowolną klasę dowolnymi metodami.


title: potrzebuję wyjaśnienia amortyzacji w algorytmie

text: Uczę się analizy algorytmów i natknąłem się na narzędzie analityczne do zrozumienia czasu działania algorytmu o bardzo różnej wydajności, które nazywa się amortyzacją. Autor cytuje „Tablica z górnym ograniczeniem n elementów, ze stałym ograniczeniem N, na jej rozmiarze. Operacja kasowania zajmuje O(n) czasu, ponieważ powinniśmy wyłuskać wszystkie elementy w tablicy, aby naprawdę ją opróżnić. " Powyższe stwierdzenie jest jasne i zasadne. Rozważmy teraz następną treść: „Teraz rozważmy serię n operacji na początkowo pustej tablicy. Jeśli przyjmiemy najgorszy przypadek, czas wykonania wynosi O(n^2), ponieważ najgorszy przypadek pojedynczej operacji czyszczenia w seria to O(n) i może być aż O(n) jasnych operacji w serii." Z powyższego stwierdzenia, jaka jest złożoność czasowa O(n^2)? Nie rozumiałem logiki, która za tym stoi. jeśli wykonywane są operacje 'n', jak to jest O(n ^2)? Proszę wyjaśnić, co autor stara się przekazać..


title: Czy analizowanie przesłanego obiektu JSON jest bezpieczne?

text: Mam API RESTful, wbudowane w NODE.js, które robi to, czego można by się spodziewać: zużywa dane, a następnie udostępnia je. Obecnie dane przesyłane na mój serwer to zagnieżdżone dane z formularza data: data[0][nazwa użytkownika]=... data[0][email]=... data[0][telefon]=... ... dane [12][username]=... data[12][email]=... data[12][phone]=... lub jako ciąg zapytania data[0][username]=...&data[ 0][email]=...&data[0][phone]=... Więc kiedy parsuję to na serwerze, otrzymuję tablicę JS obiektów z tymi konkretnymi polami. Zastanawiam się, czy mogę bezpiecznie zaakceptować ciąg znaków, który mogę JSON.parse i przetworzyć? data=(jakiś skonkretyzowany obiekt json) Nie jestem pewien, czy w obiekcie JSON może znajdować się złośliwy kod lub cokolwiek, co mogłoby wysadzić mój serwer po uruchomieniu przez parser. Dzięki.


title: Stan Clojure i trwałość

text: Uczę się Clojure, aby sprawdzić, czy jest to coś, co mogę wykorzystać w mojej obecnej pracy, a co ważniejsze, w jaki sposób mogę przekonać moich szefów, że Clojure ma „zabójczą funkcję” w porównaniu z Javą, która sprawia, że jest warta inwestycji1. Funkcja, którą, jak sądzę, większość ewangelistów clojure zachwalałaby, to **zarządzanie państwem i współbieżność**. Przykładem, który często widzę na blogach i książkach, jest saldo konta, które jest aktualizowane przez wiele wątków. Zarządzanie stanem Clojure może zawsze zapewnić, że równowaga będzie dokładna, niezależnie od liczby wątków czytających i zapisujących tę wartość. W praktyce jednak aplikacja nigdy nie pozwoliłaby, aby saldo konta istniało tylko w pamięci, musiałoby być utrwalane poza JVM (prawdopodobnie w bazie danych) z dwóch, miejmy nadzieję, oczywistych powodów: 1. Jeśli aplikacja przestanie działać w bazie danych będzie musiała dokładnie odzwierciedlać najnowszy stan odzyskiwania. Z tego powodu bazy danych nie można aktualizować asynchronicznie, a wszystkie odczyty musiałyby zostać zablokowane do czasu zakończenia aktualizacji bazy danych. 2. Jeśli inne aplikacje odczytują lub manipulują saldem konta (może dlatego, że przeskalowaliśmy naszą aplikację na kilka serwerów), saldo musi być zsynchronizowane między wszystkimi instancjami. **Czy zarządzanie stanem Clojure może elegancko poradzić sobie z takimi sytuacjami?** Na przykład, biorąc pod uwagę scenariusz 2 powyżej, _wszystkie_ odczyty salda konta musiałyby najpierw sprawdzić bazę danych, aby uzyskać wartość, a jeśli baza danych jest zablokowana, musiałoby to blokować, dopóki nie będzie dostępna prawidłowa wartość, nie? To wspaniale, że Clojure bardzo elegancko radzi sobie z moją współbieżnością w pamięci, ale jeśli tej elegancji nie można rozszerzyć na stan zewnętrzny, to czy naprawdę coś zyskam? 1 (zauważ, że takie rzeczy jak wyrazistość, elegancja itp. są rzadko uważane przez kierownictwo za zabójcze cechy)


title: Jakie praktyki tworzenia oprogramowania poleciłbyś wdrożyć osobom niebędącym programistami w swoich dziedzinach pracy?

text: Załóżmy, że musiałeś wygłosić przemówienie dla nie-programistów, którzy chcieli nauczyć się czegoś z tworzenia oprogramowania, co mogliby zastosować do swoich własnych funkcji. **Pytanie** : Jakie praktyki byś głosił? Załóżmy, że zadania obejmują branie podstawowych elementów technicznych i łączenie ich w kreatywny sposób, aby rozwiązać specyficzne problemy użytkownika. **Przykład** : jestem korporacyjnym analitykiem finansowym. Byłbym zachwycony, gdyby osoba zajmująca się tworzeniem oprogramowania nauczyła mnie następujących pomysłów, gdy byłam młodsza: 1. **Ortogonalność** pomogła mi pomyśleć o niezależnych narzędziach analitycznych, które można łatwiej ponownie wykorzystać (w porównaniu z ogromną zintegrowaną analizą, która złamać drugi kawałek narzędzia jest zmieniany). 2. **Kod do interfejsu, a nie implementacja** pomógł mi pomyśleć o zdefiniowaniu interfejsów do moich arkuszy kalkulacyjnych, które nie są tak zależne od takich rzeczy jak niezależne lokalizacje komórek itp. 3. **Projektowanie oparte na testach** ma pomógł mi przetestować moje analizy na przypadkach testowych przed ich wdrożeniem.


title: Czy tworzenie łańcuchów wydarzeń jest uważane za dobrą praktykę?

text: Od czasu do czasu spotykam się ze scenariuszami, w których kilka złożonych warunków musi być spełnionych przed wyzwoleniem zdarzenia. Co więcej, większość słuchaczy przeprowadza również dodatkowe testy, aby określić kierunek działania. To sprawiło, że zacząłem się zastanawiać, czy lepszym rozwiązaniem byłoby myślenie w kategoriach mniejszych wydarzeń i pozwolenie, aby się w nich wyzwalały. Zdarzenia łańcuchowe pozwoliłyby mi później wpleść dodatkowych słuchaczy przy stosunkowo niewielkim wysiłku (możliwe naruszenie YAGNI?). Mój kod składałby się z prostych, łatwo zrozumiałych elementów, które nie powinny być trudne do zrozumienia dla innych. Możliwymi wadami tego rozwiązania byłby jednak fakt, że gdyby coś się nie udało w łańcuchu (np. wywołanie fałszywego zdarzenia z powodu błędu człowieka), byłoby dość trudno złapać błąd. Czy tworzenie łańcucha zdarzeń to dobry pomysłTM? Jeśli nie, jakie są alternatywne metody, aby kod związany ze zdarzeniami był zaśmiecony?


title: Dlaczego wiosna jest tak dobra dla tworzenia oprogramowania pośredniczącego w Javie?

text: W wolnym czasie zamierzam zająć się tworzeniem stron internetowych w języku Java, aby nauczyć się nowego zestawu umiejętności programistycznych, i chcę tylko poznać opinię na temat tego, dlaczego Spring jest tak dobry do tworzenia oprogramowania pośredniczącego? Jakie są kluczowe cechy i zalety używania tego, powiedzmy rozpórek lub pisania stron serwera?


title: Jakie są dobre zadania na kurs wprowadzający do programowania współbieżnego?

text: Prowadzę kurs, który polega na zapoznaniu studentów z pojęciem wątków i programowania współbieżnego. Poszukuję zadań programistycznych, które mogą delikatnie skłonić ich do zaakceptowania techniki jako części niezbędnego zestawu narzędzi programisty. Dobrym zadaniem byłoby zaimplementowanie programu, którego * nie da się zaimplementować sekwencyjnie lub wykazuje duży wzrost wydajności po wprowadzeniu przetwarzania równoległego. * nie opiera się nadmiernie na wprowadzaniu skomplikowanych niepowiązanych pojęć. To wyklucza większość przykładowej listy Wikipedii Żenująco równoległych problemów \- nawet zbiór Mandelbrota wymaga od uczniów znajomości liczb urojonych, czego nie mogę zakładać. * nie wydaje się wymyślona. Optymalnie zadanie nie wydawałoby się naciągiem przydatnym tylko do wprowadzenia koncepcji. Jaki byłby przykład takiego programu/algorytmu? Jeśli ma to znaczenie, zadanie będzie w Javie. Studenci mają około 18 lat, mają za sobą co najmniej rok rozwiązywania prostych zadań programistycznych (znają przepływ sterowania, pętle, najpopularniejsze typy danych, OOP, proste GUI), ale jak dotąd mają niewielkie doświadczenie z dużymi projektami programistycznymi lub zwykłe przedmioty informatyczne (takie jak analiza rekurencji i algorytmów).


title: Kod śledzenia pascal

text: Do tej pory nie pracowałem z Pascalem, a moim problemem jest zrozumienie rekurencyjnych aspektów operatorów przypisania prm i sposobu wyprowadzania końcowej (poprawnej) wartości. Czy ktoś mógłby mi wyjaśnić tę linijkę. Test programu (wyjście); FUNKCJA prm(az:liczba całkowita) : liczba rzeczywista; zacznij, jeśli az = 1, a następnie prm := sqrt(12) else prm := sqrt(12*prm(az-1)); koniec; rozpocznij pisanieln(prm(30):0:2); koniec.


title: Jeden harmonogram a wiele harmonogramów

text: Do obsługi wszystkich zaplanowanych zadań używałem jednego harmonogramu (Quartz.Net). Zaczynam ponownie zastanawiać się, jak to działa, ponieważ jeśli muszę zaktualizować 1 zadanie, muszę zatrzymać cały proces, zwolnić aktualizację i uruchomić kopię zapasową. Moje pytanie: Czy lepiej jest mieć wiele usług Windows uruchamiających pojedyncze zadania (lub grupy podobnych zadań) czy 1 usługę uruchamiającą wszystkie zadania (moja bieżąca konfiguracja)?


title: Jak przygotować się do rozmowy telefonicznej z kodowaniem?

text: Za kilka tygodni napiszę kod podczas rozmowy telefonicznej. Ankieter i ja użyjemy współpracującego edytora tekstu, aby obaj wyświetlić kod. Mam kilka pytań, ponieważ po raz pierwszy piszę kod podczas rozmowy telefonicznej: 1. Jakie są częste **pytania** zadawane podczas tego typu rozmowy kwalifikacyjnej? 2. Jakie są powszechne **gotcha** w tej sytuacji? (zarówno dla ankietera, jak i kandydata) 3. Czy **przeprowadzający wywiad** często **pisze kod**? (być może funkcja z pustym ciałem) Wszelkie inne wskazówki i porady są bardzo mile widziane!


title: Czy komputery są tylko środkiem do celu, czy mogą przyczynić się do produktywności i kreatywności programistów?

text: To nie jest pytanie z jedną odpowiedzią, ale fascynuje mnie różnorodność ustawień komputerowych w biurze. Niektórzy ludzie pracują na starożytnych maszynach, które są absolutnymi osłami z monitorem CRT, podczas gdy inni mają naprawdę złożone i skomplikowane konfiguracje, które wzbudziłyby zazdrość traderów na rynku Forex. Aby dodać do intrygi, w ostatniej rozmowie o pracę, którą odbyłem, pracodawca kilkakrotnie podkreślał, że programistom zapewniono „nowoczesne stacje robocze o wysokiej specyfikacji”, w tym dostęp do najnowszych gadżetów w świecie telefonów komórkowych i tabletów. Chociaż wydaje się to oczywiste, większość dużych firm, z którymi się spotkałem, nie pompuje pieniędzy w wewnętrzne dostarczanie technologii ani nie reklamuje rodzaju sprzętu, który dostarczają pracownikom. Jakie są twoje doświadczenia i opinie na ten temat? Czy komputery, które nie są w stanie sprostać zadaniu naprawdę mogą poważnie szkodzić produktywności programistów? Ostatecznie dla firm zależy to od stosunku kosztów do korzyści; Czy jest sens wyposażać personel IT w najnowsze i najlepsze? Technologia staje się coraz bardziej wszechobecna w życiu codziennym. Jeśli firma nie nadąża, jak to się odbija? To temat, który mnie osobiście interesuje, ale uważam też, że należy go dokładniej zbadać. Oprócz wyrażonych tutaj opinii, jeśli chcesz pomóc sformalizować niektóre badania w tej dziedzinie, możesz poświęcić 5 minut swojego czasu i wypełnić ankietę pod poniższym linkiem. Z góry dziękuję! :) http://edu.surveygizmo.com/s3/508308/Stacje-i-wydajnosc


title: Testy integracji w ramach 3-warstwowego rozwiązania .NET

text: Mam 3-warstwowe rozwiązanie .NET. 1. Baza danych (SQL SERVER 2008) 2. Serwis WWW (SOAP Service - *.asmx) 3. Klient WPF Wygodnie piszę testy jednostkowe w ramach (3) Klienta. Obecnie pracuję nad pisaniem testów pomiędzy (1)Bazą danych i (2)Serwisem. Moje pytanie brzmi, jakie są przydatne sposoby uruchamiania testów integracyjnych na wszystkich 3 warstwach. Chciałbym, aby było to uruchamiane lokalnie w moim Test Runnerze, a także jako część testu integracyjnego. Przede wszystkim utknąłem na tym, jak mieć przejściową (możliwą do skonfigurowania) (2) usługę sieciową i (1) bazę danych, którą można przetestować za pomocą (3) kodu klienta w ramach pełnego testu integracji.


title: Wskazówki dotyczące organizacji „Hack Day” w pracy

text: **Myślałem o zorganizowaniu „Hack Day” w pracy** , pomyśl, że Google ma 20% czasu, ale tylko na 1 cały dzień (może tylko raz w roku lub na kwartał). Podobnie jak w przypadku Atlassian Fedex Days, chciałbym, aby wszyscy programiści z naszej grupy mieli dzień wolny na pracę nad dowolnym rodzajem projektu/technologii, który im się podoba, a następnie pokazanie tego. Idealnie byłoby, gdyby programiści dobrze się bawili programując, nie martwiąc się o swoje codzienne projekty lub ograniczenia technologiczne, a jednocześnie możemy wygenerować fajne pomysły, które mogą przerodzić się w przyszłe projekty lub patenty itp. **Czy masz dla mnie jakieś wskazówki/sugestie? ** \- Czy ktoś wcześniej zorganizował coś podobnego? \- Jakieś pułapki, na które trzeba uważać lub wskazówki, jak odnieść sukces? \- Jakieś zasoby, o które powinienem poprosić, aby dzień upłynął lepiej? dzień bardziej produktywny/przyjemny? \- Czy powinienem zachęcać / egzekwować grupy? A może lepiej, żeby ludzie pracowali nad rzeczami indywidualnie? \- Czego mogę użyć, aby przekonać kierownictwo do poparcia tego?


title: Zakres i widoczność vs czas życia vs dostępność vs itp.

text: Próbowałem zrozumieć, co to znaczy powiedzieć „zakres nazwanego podmiotu”. Czytając o zakresie, używa się terminów takich jak widoczność, czas życia, dostępność i inne. Mylące jest to, że terminy te są czasami używane w sposób wyraźny, a czasami zamiennie. Cytując z tego artykułu IBM: > scope to... największy region, w którym nazwa potencjalnie jest prawidłowa. Słusznie. Ale co to oznacza - > Widoczność identyfikatora to region tekstu programu, z którego można uzyskać legalny dostęp do obiektu > powiązanego z identyfikatorem. Czy widoczność jest związana z dostępnością? Dalej mówi się, że > Scope przekracza widoczność, gdy zduplikowany identyfikator jest używany w wewnętrznym > deklaratywnym regionie, ukrywając w ten sposób obiekt zadeklarowany w zewnętrznym > deklaratywnym regionie. Pierwotnego identyfikatora nie można użyć do uzyskania dostępu do > pierwszego obiektu, dopóki nie zakończy się zakres zduplikowanego identyfikatora (okres istnienia > drugiego obiektu). Czy to oznacza, że zakres i czas życia to te same rzeczy? Czy te terminy, takie jak zakres, zasadniczo oznaczają to samo w C++, co na przykład w PHP, Pythonie, a nawet Javie. Mogą też koncepcyjnie oznaczać różne rzeczy w zależności od języka, w którym pracujesz. Cytowany przeze mnie artykuł jest związany z C/C++, ale chcę zrozumieć terminy w sensie ogólnym.


title: Co powinien wiedzieć każdy programista?

text: Bez względu na język(i) programowania lub używane systemy operacyjne lub środowisko, dla którego tworzą, co powinien wiedzieć każdy programista? Trochę tła: Chcę zostać najlepszym programistą, jakiego potrafię. W ramach tego procesu staram się zrozumieć to, czego nie wiem i bardzo by mi się to przydało, gdybym to zrobił. Chociaż istnieje wiele list w stylu „n rzeczy, które każdy programista [wstaw język programowania] powinien wiedzieć”, nie znalazłem jeszcze czegoś podobnego, co nie ogranicza się do określonego języka. Oczekuję również, że te informacje będą interesujące i korzystne dla innych.


title: Widoki gruboziarniste na serwerze vs widoki szczegółowe zebrane na kliencie vs widoki szczegółowe z grupowaniem

text: Mam obecnie przeglądarkę komunikującą się przez "API" z serwerem. Cytowane API jest przerażające, ponieważ API naprawdę nie wspierałoby zbyt dobrze innego interfejsu użytkownika, ponieważ składa się z każdego wywołania, którego nasz interfejs akurat potrzebuje, w formie, w jakiej go potrzebuje, i niczego więcej. Co może być w porządku. Jednak zaczynamy mieć wywołania w stylu „GetUserSummaryData”, „GetUserHisFriendsAndHisPurchases”, „GetUserAndHisPurchases” itp. Zauważ, że na serwerze jest napisane bardziej rozsądne, szczegółowe API (a obecne wywołania API powodują serwer, aby połączyć je ze sobą), po prostu to, co jest widoczne w interfejsie użytkownika, _dokładnie_ odpowiada temu, czego potrzebuje w danym momencie. Uzasadnieniem dla obecnego podejścia jest to, że przejście od „Potrzebuję tych 6 rzeczy w tej chwili” do „Muszę wykonać 6 połączeń i zebrać dane razem” musi nastąpić _gdzieś_ , a jeśli robisz to na serwerze, to w przeglądarce może wykonać jedno szczegółowe wywołanie, w przeciwieństwie do alternatywy albo wykonania 6 wywołań i uzyskania (znaczącego) spadku wydajności, albo wymyślenia jakiegoś systemu grupowania 6 wywołań (w tym radzenia sobie z problemem zależności, być może poprzez posiadanie Wywołaj mechanizm wsadowy wystarczająco inteligentny, aby powiedzieć „trzeci parametr wywołania 2 powinien być tą częścią obiektu odpowiedzi JSON z wywołania 1” i aby serwer to zrozumiał). Robienie rzeczy na serwerze w taki sposób, w jaki jesteśmy, praktycznie uniemożliwia napisanie innego interfejsu użytkownika bez tworzenia bardziej dostosowanych widoków na serwerze, aby go obsługiwać. Ale nie mamy obecnie uzasadnionych oczekiwań, że ktoś bez dostępu do serwera będzie chciał napisać inny interfejs użytkownika. Czy dalsze tworzenie naprawdę spersonalizowanych widoków na serwerze jako jedynego „API” jest właściwym podejściem, a jeśli nie, co byłoby lepsze?


title: Czy silniki do testów certyfikacyjnych są naprawdę tym, co twierdzą?

text: Uczę się do certyfikacji MCPD od Microsoft. Istnieje wiele zasobów dla tych certyfikatów. Jednak ostatnio ktoś polecił mi CertMagic. Po odrobinie badań szybko odkryłem, że takich witryn jest sporo. Mam więc dwa pytania: 1) Czy te strony naprawdę pomogą? Nie chcę zapamiętywać odpowiedzi egzaminacyjnych. Chcę, aby mój certyfikat był prawdziwym odzwierciedleniem moich umiejętności w tym zakresie. 2) Jeśli te witryny są naprawdę pomocne, które z nich są najbardziej przydatne ?


title: jaki jest poprawny/najlepszy sposób wypełnienia drugorzędnej właściwości modelu MVC i jak mogę ją przetestować?

text: I 'm budowania aplikacji sieci web jest ASP.NET MVC 3 (.NET 4) i próbuję jak najwięcej testów jednostkowych. Mam akcję kontrolera `Details(int customerId)`, która powinna wyświetlać widok, który model jest klasą publiczną `Customer` Customer { public int? Identyfikator { get; ustawić; } [Wymagane] [Wyświetlanie(Nazwa = "Nazwa klienta")] ciąg publiczny Nazwa { get; ustawić; } ... public IList<CustomerComment> Komentarze { get; ustawić; } } Akcja kontrolera wygląda tak: public ActionResult Details(int customerId) { var model = service.Get(customerId); if (model != null) return View(model); return RedirectToAction("Indeks"); } Jak widać, to bezpośrednio wywołuje `service.Get` public Customer Get(int id) { return repository.Get(id); } Usługa ma wstrzyknięty `ICustomerRepository` i bezpośrednio wywołuje metodę `Get` tego repozytorium. Moje pytanie dotyczy zapełnienia kolekcji `Komentarze`. **Jak/gdzie należy wypełnić `Komentarze` i jak je przetestować?** Widok `Szczegóły` jest jedynym miejscem, które wyświetla listę komentarzy, więc potrzebuje tych danych. Widzę dwa sposoby na wypełnienie tego. 1. Zrób to wszystko w implementacji `ICustomerRepository.Get`. Może to doprowadzić do sytuacji, w której używam Get, ale nie wyświetlam komentarzy. Oznaczałoby to, że robię _kosztowny_ (być może) `JOIN`, ale nie używam wyników. 2. Wstrzyknąć `ICustomerCommentsRepository/Service` do mojej usługi lub kontrolera, który jest używany do wypełniania `Comments`, gdy jest to wymagane. Czy istnieje preferencja? Po drugie, jak byś to przetestował? W drugim przypadku mógłbym stwierdzić, że `ICustomerCommentsRepository.Populate(Customer customer)` jest wywoływany na mojej makiecie przez kontroler/usługę. W pierwszej sytuacji cała odpowiedzialność spoczywa na moim repozytorium, więc w sensie testu jednostkowego jest nie do przetestowania, ponieważ konkretna implementacja używana w rzeczywistej aplikacji musi komunikować się z bazą danych, podobnie jak test integracji. Czy czegoś mi brakuje? Czy `ICustomerCommentsRepository` byłby złym pomysłem?


title: Trenować do pracy lub trenować do umiejętności?

text: Zajmuję się wynajmem małego sklepu z Javą. Mamy bardzo ograniczony budżet na zatrudnienie, więc zwykle kupujemy tanio świeżo upieczonych absolwentów i spędzamy czas na ich szkoleniu. Zauważyłem, że uczelnie i uniwersytety wykonują obecnie dość nieadekwatną pracę i zwykle wymagane jest wiele szkoleń. Trenuję w 2 krokach: a) Zaznajom ich z konwencjami Java. b) Naucz ich koncepcji programowania (ponownie). Szkolenie trwa od 1 tygodnia do 1 miesiąca w zależności od ilości zatrudnianych przez nas osób. Mój problem polega na tym, że szkoląc ich na Javie, czuję, że okradam ich z umiejętności _rozumienia_ tego, co robią. Uczelnie szkolą ich w języku C#, aby nigdy tak naprawdę nie rozumieli, na co kod _przekłada się_ na maszynę JVM ani w jaki sposób komputer to interpretuje. Oczywiście wciąż zdaję sobie z tego sprawę, gdy widzę, że powstaje rażąco nieefektywny kod. Moje pytanie brzmi, czy jeśli pracownik będzie trzymał się firmy przez 3 lata, czy lepiej jest go przeszkolić do pracy, aby mógł zacząć kodować w Javie, czy lepiej, aby poczuł się komfortowo z Javą i językami typu pick-up, takimi jak Python , C/C++, Prolog, LISP, aby nauczyć ich, co naprawdę robią? (Pamiętaj, że jeśli zmienię język, znów nastąpi krzywa uczenia się). Więc w ciągu 3 lat, co Twoim zdaniem będzie bardziej opłacalne? Garnitury wyraźnie mówią, że trenuj do pracy, ponieważ liczba iteracji jest wysoka. **AKTUALIZACJA** Konkluzja jest taka, że będą pracować nad produktem, który jest faktycznie środowiskiem programistycznym w Javie. Zasadniczo produkt oparty na BPMN, który pozwala graficznie określić przepływ aplikacji i użyć funkcji magazynowych w celu dodania funkcjonalności i niestandardowego kodu Java zgodnie z potrzebami.


title: Metoda przechowywania niektórych danych dotyczących treści witryny, umożliwiająca ponowne wykorzystanie

text: (Nie wierz, że jest to pytanie o „najlepszą praktykę”, ponieważ wierzę, że będzie _jeden lepszy_ wybór). Muszę wybrać opcję przechowywania danych, aby przechowywać określone dane witryny, aby umożliwić łatwe zarządzanie i ponowne użycie: _array; klasa; DB; Inne;_ ale nie jestem pewien, który byłby odpowiedni. Dane, o których mowa, to moje _Usługi_ , czyli lista tytułów i opisów. Przykładowy tekst: > **SEO on-site** > Zapewniamy pozycjonowanie na stronie i poza nią, poprzez staranne przypisanie słów kluczowych oraz > rozmieszczenie, bla itp., itp., bla, itp., itp., bla, itp., itp., bla, itp., > itp. > > **Projektowanie logo** > Możemy dostarczyć przejrzyste i eleganckie logo dopasowane do Twojej obecnej firmy > branding... blah itp. blah itp. blah itp. blah itp. blah itp. > itp. bla itd, itd. bla itd. itd. bla itd. itd. bla itd. itd. bla itd. > itd. Każdy tytuł ma nie więcej niż 5 słów, a opisy mają około 70 słów/350 znaków, a mam około 20 tytułów i opisów. Ponieważ usługi można zmieniać, wycofywać i dodawać nowe, chcę mieć kontrolę nad danymi - coś więcej niż tylko edytowanie pliku widoku/szablonu, w którym wykonywany jest surowy plik wyjściowy/HTML, ponieważ: 1. Wymagam, aby dane można było ponownie wykorzystać na różnych szablony 2. Chcę użyć tylko części danych, np. tylko tytuł(y) czyli określony indeks tablicy lub metoda klasy, wiersz tabeli DB itp. Niechętnie używam tablicy, biorąc pod uwagę rozmiar Tekst _opisu_ i liczba usług (20). I może skończyć się kłopotliwym dostępem do określonej wartości tablicy, koniecznością znajomości dokładnego klucza (tytułu), a klucz jest długi. Mógłbym użyć tablicy wielowymiarowej, z kluczem najwyższego poziomu będącym prostym odniesieniem, ale wydaje się, że jest to przesadne dla wymagań. Wydaje się to marnotrawstwem klasy, ponieważ same dane są statyczne i czuję, że trochę nadużywam punktu OOP. Mógłbym użyć bazy danych, ale obecnie witryna nie wymaga bazy danych do niczego innego, chociaż z przyjemnością zaimplementuję ją, jeśli jest to warte zachodu. Witryna jest oparta na frameworku, luźno na MVC/P, więc może łatwo zaimplementować wszystko. Tak więc z opcji: tablica; klasa; Baza danych; (inne?), który byłby najbardziej odpowiedni dla tego scenariusza? Ogólna różnica nie stanowi problemu, ponieważ będzie ona na tyle marginalna, jak na moje wymagania (mała strona, dobry hosting itp.). Dostęp do tych danych będzie miał tylko kilka stron, więc posiadanie ich w pamięci nie jest dużym wymogiem (AFAIK).


title: Niezależność platformy a neutralność architektury

text: Czy to prawda, że dziś niezależność od platformy jest bardziej mitem? Ponieważ programiści szukają wydajności i władzy nad przenośnością, które muszą być w pewnym stopniu zagrożone, gdy osiągają niezależność od platformy. Z drugiej strony neutralność architektury jest mile widziana, ponieważ zapewnia bardzo potężny sposób tworzenia oprogramowania, które może zdominować określoną rodzinę systemów operacyjnych. Moje pytanie brzmi: Rozważmy hipotetyczną sytuację, w której musimy wybrać jedną z nich. Co należy skompromitować? Przenośność czy moc? Wiem, że to pytanie jest trochę subiektywne, ale ogólnie szukam twoich poglądów. Dziękuję Ci. **EDYTUJ:** Czy słuszne jest zaakceptowanie konkretnej odpowiedzi tylko ze względu na nią, zwłaszcza w przypadku pytania, na które odpowiedź miałaby odpowiadać indywidualnym perspektywom?


title: Czy ktoś używał git jako magazynu danych środowiska uruchomieniowego w swojej aplikacji?

text: Kiedyś pracowałem nad systemem obiegu dokumentów i w zasadzie zaimplementowałem niedopracowany system kontroli wersji dokumentów; używanie bazy danych do informacji o wersji i magazynu plików dla plików. To było dużo kodu i trudne do utrzymania. Były różne rodzaje błędów związanych z blokowaniem i podobnymi rzeczami, co tylko chcesz. Gdybym musiał przepisać go od zera, poważnie rozważyłbym użycie git jako mojego magazynu danych. Przyszło mi do głowy, że nie czytałem zbyt wiele o git (i większości systemów kontroli wersji) używanym w implementacjach aplikacji jako wersjonowanych magazynów danych. Jakie aplikacje używają git lub innego systemu VCS za kulisami do przechowywania i wersjonowania danych?


title: Tanio zużywanie strumienia JSON w bazie danych AWS

text: Pracuję nad projektem, który musi zużywać strumień JSON (około 1 MB/minutę) oraz analizować i wstawiać obiekty do bazy danych. DynamoDB lub SimpleDB firmy Amazon wydają się atrakcyjną opcją. Czy istnieje usługa sieciowa, która może uruchomić bardzo prosty skrypt do zjedzenia danych i umieszczenia ich w bazie danych? Mógłbym użyć workera na Heroku lub Elastic Beanstalk, a nawet czystego EC2, ale chciałbym znaleźć usługę, która jest znacznie tańsza, ze względu na bardzo niską wymaganą przepustowość i procesor. (Przepraszam za gówniane tagi. Nie jestem nawet pewien, gdzie kategoryzować to pytanie.)


title: Praktyczne porady dotyczące schematu mysql dla sklepu eCommerce - Produkty i atrybuty

text: Obecnie planuję swoją pierwszą aplikację eCommerce (mySQL & Laravel Framework). Mam różne produkty, z których każdy ma inne atrybuty. Opisując produkty bardzo prosto, niektórzy będą mieli producenta, inni nie, niektórzy będą mieli średnicę, inni szerokość, wysokość, głębokość, a jeszcze inni objętość. Opcja 1: Utwórz główną tabelę produktów i oddziel tabele dla określonych typów produktów (relacje polimorficzne). W ten sposób nie będę miał żadnych zbędnych pustych pól w tabeli produktów. Opcja 2: Utwórz tabelę produktów ze wszystkimi możliwymi polami, mimo że będzie dużo pustych wierszy Opcja 3: Normalizuj tak, aby każdy typ atrybutu miał swoją własną tabelę. Opcja 4: utwórz tabelę „attributes” oraz tabelę „attribute_values” z wartością varchar niezależnie od rzeczywistego typu danych. Tabela produktów miałaby związek wiele:wiele z tabelą atrybutów. Opcja 5: wspólne atrybuty wszystkich lub większości produktów umieszczonych w tabeli produktów oraz określone atrybuty określonej kategorii produktów dołączonych do tabeli kategorii. Myślę, że chciałbym umożliwić łatwe filtrowanie produktów według tych atrybutów i sortowanie. Chciałbym również, aby frontend był szybki, mniej troszczył się o wydajność wstawiania i aktualizowania rekordów produktów. Jestem trochę przytłoczony szerokimi możliwościami implementacji i nie mogę znaleźć odpowiedniej odpowiedzi pod względem najlepszej metody podejścia. Czy ktoś mógłby wskazać mi właściwy kierunek? W idealnym świecie chciałbym zaoferować następujący rodzaj funkcjonalności - http://www.glassesdirect.co.uk/products/ do mojego sklepu eCommerce. Jak widać, na pasku bocznym możesz wybrać atrybut okularów, aby je filtrować. np. męski / żeński lub plastikowy / metalowy / tytanowy itp... Alternatywnie, czy powinienem po prostu zrzucić pomysł na relacyjną bazę danych mySql i nauczyć się mongodb?


title: Czy istnieje skuteczny sposób na dostosowanie danych ze struktury do innej w c++?

text: Piszę interfejs między dwoma modelami konfiguracji, które używają różnych struktur. Chociaż wiem, że nie ma „magicznego” sposobu na wykonanie tłumaczenia z jednego typu struktury na inny, zastanawiałem się, czy istnieją jakieś najlepsze praktyki lub wydajny/skuteczny sposób na skonfigurowanie takiego systemu. Myślę, że jest to podobne do tego, jak programy mogą zarządzać różnymi strukturami konfiguracji w różnych wersjach. Oto prosty przykład: powiedzmy, że mamy strukturę typu A, która zawiera 3 parametry: struct A { int alpha; bola beta; bool Charlie; }; Druga struktura konfiguracji ma te same parametry, ale w innej kolejności, zobaczmy strukturę B: struct B { union { struct { char beta : 1; charlie : 1; } fragment; pole znakowe; } int alfa; }; Prosty program do konwersji A na B to: void convert(A const *aelem, B *belem) { belem->alpha = aelem->alpha; belem->bit.beta = aelem->beta; belem->bit.charlie = aelem->charlie; } Tak więc, chociaż może się to wydawać dość proste w przypadku takich podstawowych struktur, mam do czynienia z dziesiątkami struktur, z których każda zawiera około 50 parametrów. Więc czy ktoś zna dobry wzór do naśladowania w przypadku takiego problemu?


title: Jak mogę uzyskać logowanie skryptu powłoki do zdalnego serwera i tam wykonać polecenie imqcmd?

text: Chcę napisać skrypt powłoki, aby połączyć się ze zdalnym serwerem i wykonać polecenie (dowolne polecenie linux). Używam linuxa i chcę przygotować skrypt powłoki, który będzie mógł zalogować się do wirtualnego serwera katalogów i wykonać dane polecenie. Tj. jeśli chcę wykonać polecenie `imqcmd`, jak mogę to zrobić?


title: Najlepszy sposób na wdrożenie autoryzacji dla REST API

text: Tworzymy aplikacje społecznościowe na urządzenia mobilne. Każda aplikacja korzysta z usług internetowych RESTful API. Kiedy wdrażam login, zwykle przechowuję nazwę użytkownika i hasło gdzieś na urządzeniu. Następnie je wysyłam iw odpowiedzi otrzymuję dostęp do swojego profilu. Ale wiem też, że jest na to inny sposób. W jakiś sposób generuje się token z określonym algorytmem, a następnie wysyła go zamiast nazwy użytkownika i hasła, aby uzyskać dostęp. Jak mam to zaimplementować? Czy powinienem wysyłać ten token wraz z każdym innym żądaniem niż logowanie?


title: Scenariusz ilustrujący, w jaki sposób testowanie jednostkowe prowadzi do lepszego projektu

text: W przypadku wewnętrznej sesji szkoleniowej staram się wymyślić prosty scenariusz, który ilustruje, w jaki sposób testowanie jednostkowe prowadzi do lepszego projektu, zmuszając cię do myślenia o takich rzeczach, jak sprzężenie, zanim zaczniesz kodować. Pomysł polega na tym, że najpierw skłaniam uczestników do napisania kodu, nie biorąc pod uwagę testów jednostkowych, a potem robimy to ponownie, ale biorąc pod uwagę testy jednostkowe. Mamy nadzieję, że kod wyprodukowany po raz drugi powinien być bardziej oddzielony i łatwiejszy w utrzymaniu. Mam problem z wymyśleniem scenariusza, który można szybko zakodować, ale nadal mogę pokazać, w jaki sposób testowanie jednostkowe może prowadzić do lepszego ogólnego projektu.


title: Zrozumienie wycofywania się w C++

text: Mam dobrą podstawową wiedzę na temat podstaw C++, mam też wiedzę o tym, jak działa rekurencja. Natknąłem się na pewne problemy, takie jak klasyczny problem z ośmioma damami i rozwiązywanie sudoku za pomocą cofania. Zdaję sobie sprawę, że jestem dość zagubiony, jeśli chodzi o to, że nie jestem w stanie ogarnąć koncepcji powrotu do stosu rekurencji i rozpoczęcia od nowa w celu rozwiązania problemu. Wydaje się to łatwe z długopisem i papierem, ale jeśli chodzi o pisanie kodu do tego, jestem zdezorientowany, jak zacząć atakować te problemy. Byłoby pomocne, gdyby istniał samouczek skierowany do początkujących do cofania się lub gdyby istniała dobra książka, w której to zostało omówione. Jeśli ktoś mógłby rzucić światło na ten temat lub podać kilka linków do przyzwoitych referencji, byłbym bardzo wdzięczny. I tak, wiem, że byłoby to łatwiejsze w językach funkcjonalnych, ale chciałbym również zrozumieć implementację w językach imperatywnych.


title: Jak głęboko powinniśmy zagłębić się w testowanie różnych warstw

text: Używamy Drupala 7 jako naszego podstawowego narzędzia CMS. Dla jednego konkretnego produktu, takiego jak ERP, stworzyliśmy coś w rodzaju warstwy niedupalowej, aby utrzymać w sobie nasz konkretny kod biznesowy. Byłoby to coś takiego: ------------- | Biznes | -> To byłaby warstwa kodu specyficzna dla naszej firmy ------------- | Klej | -> Tutaj łączymy się z podstawowym API Drupala w razie potrzeby ------------- | Drupal | -> To jest Drupal API ------------- Mamy pojęcie `Repository`, które jest podstawową klasą, która pobiera coś z bazy danych w postaci `Entity` lub ` ArrayObject` z `Entities`. Ta warstwa jest połączona z Drupalem, ponieważ potrzebuje dostępu do metody `db_query()` z API Drupal 7. Cała nasza warstwa `Business` jest testowana przy użyciu `PHPUnit`, ze 100% pokryciem. Teraz próbujemy przetestować również warstwę `Klej`, jednostkę `Repozytoriów`, ich zwracane wartości i parametry. W tym celu doszliśmy do wniosku, że musimy zakpić API dostępu do bazy danych `Drupal`. Ale aby to zrobić, jakie byłoby właściwe lub najlepsze podejście? * Zawinąć funkcję `db_query` z `Drupala` w klasę, która może być wyśmiewana w testach? * W ogóle nie testujesz „Repozytoriów”?


title: Jak mogę napisać byte[] do strumienia wyjściowego gniazda i określić koniec pliku?

text: Wygooglowałem 2 dni prosto i nie mogę znaleźć, jak to zrobić. Mam otwarty strumień między klientem a serwerem, a klient wysyła ciąg JSON (zaszyfrowany do bajtów) do serwera co 3 do 5 sekund. Jak mogę pisać do `Socket` `OutputStream`, abym mógł odczytać każdy ciąg JSON na serwerze. Zgaduję, że muszę określić jakiś koniec pliku lub coś, ale nie mogę znaleźć żadnych informacji, jak to osiągnąć.


title: Dlaczego cykl życia oprogramowania jest tak nieefektywny?

text: Obecnie cykl rozwoju oprogramowania realizowany w firmie IT, w której pracuję, to: * „Biznes” współpracuje z menedżerem rozwiązań w celu zbudowania dokumentu wymagań biznesowych * Menedżer rozwiązania współpracuje z menedżerem programu w celu zbudowania specyfikacji funkcjonalnej * Kierownik projektu współpracuje z inżynieria doprowadziła do opracowania planu wydania, a zespół inżynierów do opracowania specyfikacji technicznych * Jeśli są wymagane jakiekolwiek wyjaśnienia, programiści kontaktują się z kierownikiem projektu, który kontaktuje się z menedżerem rozwiązania, który kontaktuje się z firmą i przez całą drogę powrotną, wprowadzając opóźnienie wynoszące prawie 24 godziny i ogromne łańcuchy e-maili dla wszelkich wyjaśnień * Do czasu opracowania specyfikacji technicznej minął prawie miesiąc w tę i z powrotem * Teraz 2 tygodnie mijają na rozwój, podczas gdy test zapisuje przypadki testowe * Kod jest formalnie porzucany do testowania, rozpoczyna się test zgłaszanie błędów. Nawet jeśli istnieje jedna główna przyczyna 10 różnych problemów i jest to łatwa do naprawienia, programiści nie mogą dawać nowego kodu do testowania przez następny tydzień. Po 2-3 takich zrzutach w celu przetestowania kod jest przekazywany zespołowi ops jako „złota kropla” (minęły 2 miesiące od początku) * Zespół Ops wdroży teraz kod w środowisku pomostowym. Jeśli będzie działać stabilnie przez tydzień, zostanie awansowany do UAT, a po 2 tygodniach do prod. Jeśli są tu jakieś błędy, cóż, ubieganie się o wizę wymaga mniej papierkowej roboty. Cały proces jest przestrzegany, nawet jeśli ma zostać wydany pojedynczy raport SSRS. Jak inne firmy przetwarzają takie wymagania? Zastanawiam się, dlaczego biznes nie może tak po prostu zrzucić wymagań na deweloperów, programiści sami budują i wdrażają do UAT, ujawniają to biznesowi, który zgłasza błędy funkcjonalne i po naprawieniu tych promowanych do prod. (nawet dla bardziej skomplikowanych rzeczy)


title: Jakich części języka Java muszę się nauczyć w przypadku konkretnych projektów oprogramowania?

text: W przyszłym miesiącu zaczynam 12-tygodniowy kurs Java w moim lokalnym college'u. Zaczynam od kwadratu 1. Mam podstawową wiedzę na temat OO, a Java będzie moim pierwszym językiem OO. Mój Google-Fu zwraca zdecydowanie za dużo i nie mogę powiedzieć, który jest dobry, zły itp. Jeśli chodzi o naukę języka, najlepiej jest używać zwykłego edytora, obecnie używam JEdita lub IDE, takiego jak Eclipse lub Netbeans ? Nie mam doświadczenia z żadnym IDE. Czy są inne IDE, które powinienem wziąć pod uwagę? Moje cele projektu to: * Programy GUI do sterowania różnymi radiami i sprzętem testowym, co oznacza I/O przez USB, kartę dźwiękową i sieć w *NIX, Windows i Mac OS. * Programowanie na urządzenia z systemem Android, zarówno telefony, jak i tablety. Aplikacje oparte na bazie danych do rejestrowania danych. Całkiem możliwe, że dostęp do radia/sprzętu testowego przez WiFi. * Środowisko JBoss. Jak skonfigurować środowisko testowe dla różnych platform?


title: Budowanie pliku wykonywalnego

text: Jestem inżynierem elektronikiem, więc wybacz mojemu nowicjuszowi. OK Chcę zbudować plik `exe` dla wielu kroków do wykonania w systemie Windows, gdy ktoś naciśnie ten plik. kroki to: * Zainstaluj centrum multimedialne, * Zmień niektóre dane w plikach centrum multimedialnego, * Zainstaluj niektóre wtyczki do centrum multimedialnego, * Zmień niektóre ustawienia w tym centrum multimedialnym, * Spraw, aby to centrum multimedialne działało jako powłoka na uruchamianie systemu Windows. Plik powinien zawierać: * Pliki instalacyjne Media Center, * Dane, które zostaną zmienione, * Wtyczki. Wolę dodawać unikalne hasło do każdego centrum multimedialnego, aby działało tylko na tym konkretnym i służyło tylko do instalacji. czy to możliwe?


title: Jeśli posiadam projekt open source, dlaczego nie miałbym go hostować na Github?

text: Zauważyłem, że jeden dość dobrze znany projekt open source (którego nie wymienię, żeby nikt nie skupiał się zbytnio na tym konkretnym projekcie) oferuje źródła do pobrania jako .zip przez FTP zamiast umieszczania ich na GitHub. Wygląda na to, że GitHub byłby wygodniejszy. 1. Jest darmowy dla projektów open source 2. Ma historię zmian i wiele innych korzyści systemu kontroli wersji 3. Jeśli chcę coś zmienić, mogę po prostu zmienić fork, a następnie wykonać pull request zamiast pisać długi e-mail wyjaśniający co zmienić w jakim pliku Właśnie o tym pomyślałem w ciągu jednej minuty. Teraz jakie problemy są z Githubem, które skłoniłyby mnie do wysyłania źródeł jako archiwum przez FTP?


title: Prawo autorskie w odniesieniu do ścieżek MIDI w grach

text: Staram się zrozumieć, co prawo mówi o wykorzystaniu MIDI lub w inny sposób zsyntetyzowanych reprezentacji utworów chronionych prawem autorskim w grach komputerowych, zarówno online, jak i zainstalowanych. Czytałem opinie, które mają dla mnie sens, mówiące, że odtworzony plik MIDI jest uważany za nieautoryzowane wykonanie, aczkolwiek przez kartę dźwiękową, a tym samym podlega standardowemu prawu autorskiemu. Czy tak jest? Czy ma to jakiekolwiek znaczenie, czy całość, czy część przedstawienia wykonuje człowiek i czy np. wokale zastąpiono linią syntezatora? Czy to ma znaczenie, jeśli wykorzystany zostanie tylko główny motyw utworu, a nie cały utwór? I czy ma to jakiekolwiek znaczenie, jak realistyczny jest dźwięk – na przykład, czy brzydka wersja 8-bitowa jest w mniejszym stopniu naruszeniem praw autorskich niż plik MIDI renderowany do pliku wave przy użyciu najwyższej klasy orkiestrowych VST? Doskonale zdaję sobie sprawę, że świat cyfrowy jest pełen rażących naruszeń praw autorskich i często sprowadza się to do tego, czy warto podejmować wysiłki właściciela praw autorskich w celu egzekwowania prawa. Ale jestem zainteresowany, aby dowiedzieć się dokładnie, czym jest prawo, ponieważ wydaje się, że jest to niejasny obszar.


title: Wątki i przerywanie asynchroniczne w tym samym procesie i wątku, wraz z powiązanymi

text: Więc staram się zrozumieć wątki. Zdaję sobie sprawę, że są to połączenie decyzji dotyczących sprzętu i systemu operacyjnego. Wiem również, że wątek lub proces ma zestaw zmiennych i funkcji rejestru/stosu. W każdym wątku są duplikowane po rozwidleniu, „pakowane”, gdy nie działają, i „rozpakowywane” z powrotem do rejestrów, gdy zaczynają ponownie. Mogę z nich korzystać całkiem przyzwoicie, ale jest kilka rzeczy, o których nie wiem: Co się dzieje, gdy przerywasz ten sam wątek? Np. jestem w głównym wątku, wywoływany jest błąd SIGCHLD lub jakiekolwiek przerwanie, które przerywa główny wątek w celu uruchomienia tej jednej funkcji, a następnie wraca. W jaki sposób zmienne stosu „pakują się”, jeśli w ogóle się pakują? (w zasadzie ten sam wątek jest przerywany, co dzieje się ze zmiennymi stosu i stosem funkcji) Pętla gry lub pętla zdarzeń jest ciągła. Zacząłem akceptować pomysł, że w połowie dowolnej funkcji może po prostu zatrzymać się i przejść do innego "kontekstu" wątku. Wiem również, że po każdej pętli może, ale nie musi, powiedzieć „Czekam na timer/zdarzenie, śpię przez kilka ms na mnie”, więc czy spróbuje uruchomić swoje przerwania tam, czy po prostu w dowolnym losowym czasie? Jak mam powiedzieć moim własnym pętlom, aby się zatrzymały i czekały, jeśli chcę utrzymać określone tempo? - Zdaję sobie sprawę, że to może być w książce o systemach operacyjnych, tylko nie wiem w jakiej części. (Zasadniczo, jak śpią wątki? Czy naprawdę są przerywane w połowie zadania?) (Powyższe jest dla mnie zaskakujące, ponieważ zawsze myślałem o programie jako o ciągłym zestawie rzeczy, to tak, jakbym musiał całkowicie zmienić nastawienie, aby zrozumieć jak to naprawdę działa) O ile mi wiadomo, synchronizacja zapewnia, że zmienna jest taka sama we wszystkich rejestrach. Więc z moim pierwszym pytaniem, czy rejestr i stos są takie same, gdy główny wątek jest przerwany? Czy muszę coś zsynchronizować? Jeśli są to różne wątki, czy budzi to inne tylko po to, aby zsynchronizować zmienne, czy też wątki pozostają „śpiące”? Założę się, że wszystkie wskazują na te same zmienne sterty, ale gdzie mogą powstać różnice poza wskaźnikami wskazującymi na stare adresy? Zdaję sobie sprawę, że gdybym wiedział, gdzie czytać, może mógłbym wywnioskować więcej niż połowę tego. Przepraszam, jeśli brzmią prosto, czytałem, ale dużo tego, po prostu nie rozumiem, ale chciałbym. Często używam GCD, który ukrywa szczegóły, więc wiem, jak synchronizować, bramkować, ale absolutnie nie mam pojęcia, dokąd zmierzają moje zmienne w wątkach i kiedy/jak. Dowiedziałem się o tym z programowania gniazd i książki o systemie operacyjnym, którą czytałem, ale oczywiście brakuje mi kilku krytycznych szczegółów. Dziękuję Ci. Stephen


title: SPA: outsourcing rozwoju po stronie klienta

text: Biorąc pod uwagę witrynę internetową opartą na SPA (z klientem opracowanym przy użyciu dowolnego frameworka JS MVC i serwerem zapewniającym API REST), czy ktoś ma jakiekolwiek doświadczenie w outsourcingu rozwoju po stronie klienta i równoległym rozwoju po stronie serwera? Jakie problemy napotkałeś? Czy to naprawdę było korzystne?


title: Jak wcześnie jest za wcześnie, aby zaangażować się w tworzenie nowych funkcji?

text: Opracowuję wewnętrzną aplikację biznesową, której nasi inżynierowie używają do testowania i debugowania produktów firmy. Menedżer ds. inżynierii naciskał, aby zaangażować programistów, gdy inżynierowie są w fazie projektowania. Mówi, że chce dać nam wyobrażenie o tym, co nadchodzi, i dać nam możliwość wyrażenia opinii na temat ich projektów (rzadko mamy opinie). Kierownik ds. inżynierii chce, aby programiści i inżynierowie jednocześnie wdrażali nowe funkcje, aby do czasu, gdy inżynierowie wdrożyli swój koniec, mogli użyć oprogramowania do ich przetestowania. Projekty funkcji są zwykle niestabilne, dopóki nie zostaną w pełni wdrożone przez inżynierów, co utrudnia opracowanie wymagań. Uważa, że inżynierowie i programiści mogą wykonywać wszystkie nasze debugowanie obok siebie, w czasie integracji. To wszystko wydaje mi się nieefektywne i zacofane.


title: Kto powinien postawić cel retrospektywy?

text: Jestem SM zespołu i chciałbym wiedzieć, kto powinien wyznaczać cel retrospektyw


title: Jak wyleczyć syndrom „nie mogę dostarczyć”/„nie mogę dostarczyć na czas”

text: Jestem ponadprzeciętnym programistą (interesuję się rozwojem języków, frameworków i technologii w ogóle i dobrze orientuję się w systemach), ale ciągle uważam, że nie jestem w stanie dostarczyć rzeczy (na czas). Nie ma to wpływu na moją codzienną pracę, ponieważ ma dobry proces kontroli (zadania o niewielkich rozmiarach z rozwojem napędzanym wstydem), ale zdecydowanie rani mnie w moich osobistych projektach. Niektóre z powodów, które moim zdaniem są w grze. - Sprawę komplikuję bardziej, niż to konieczne. Często o wiele więcej niż sam przed sobą przyznaję. - Czasami nie jestem dobry w zmniejszaniu zadań. - Wędruję w niejasne kąty, kiedy się z nimi spotykam, zamiast utrzymywać skupienie lasera. W rezultacie często nie dostarczam. Teraz mogę z tyłu głowy wiedzieć, co muszę zrobić, ale byłbym wdzięczny za twoją strategię, jak być facetem, który „dostarcza”.


title: Skalowalność usługi WWW dla pojedynczej strony

text: Próbuję zbudować aplikację sieci web pojedynczej strony, która będzie wywoływać wiele usług sieci web (zarówno SOAP, jak i RESTful) i agregować dane w interfejsie użytkownika. Początkowo myślałem, że mogę zrobić to wszystko po stronie klienta, z żądaniami ajax, ale zdaję sobie sprawę, że * Jeśli jest wiele żądań i są one uruchamiane na użytkownika, ładowanie danych może zająć dużo czasu. * Jeśli jest wielu użytkowników, mogę łatwo osiągnąć swój limit wywołań API. Więc teraz myślę, że będę musiał mieć jakiś proces po stronie serwera, który działa co godzinę (lub cokolwiek), pobiera elementy i wstawia/aktualizuje je w bazie danych. Czy to właściwe podejście? Czy są jakieś inne pułapki, których muszę unikać?


title: Jakieś dobre wskazówki dla programisty PHP do uruchamiania aplikacji na iPhone'a i iPada? (tylko komputer)

text: Próbuję nauczyć się tworzenia aplikacji na iPhone'a i iPada, aplikacji takich jak strony zorientowane na bazy danych, w których użytkownik może zapisywać swoje dane. Jestem normalnym programistą php i używam tylko komputera z systemem Windows. Wszelkie dobre wskazówki, które możecie mi zasugerować na początek, byłyby bardzo mile widziane. Dziękuję!


title: Czy dane statyczne powinny być przechowywane w bazie danych czy w innym miejscu?

text: W tej chwili pracuję nad jakimś oprogramowaniem i nie jestem pewien, którą drogą wybrać. Mam jakieś dane do przechowywania gdzieś na urządzeniu mobilnym. Dane nigdy się nie zmienią, mają relację hierarchiczną i zostaną użyte do wypełnienia ekranu. Istnieje rozsądna ilość tych danych. Mam następujące opcje: 1. Zestaw wyliczeń/obiektów 2. Plik XML 3. Wbudowana baza danych SQLite W tym konkretnym przypadku wydaje mi się, że opcja wyliczenia jest najmniej pracy, ale czuję zapach z osadzonych danych w takim kodzie. Myślę, że plik XML ma największy sens, ale analizowanie go będzie trafieniem w zasoby, które wydaje się marnotrawstwem, ponieważ „nigdy” się nie zmieni. Baza danych powinna zapewniać mniejszy spadek wydajności, ale wydaje się przesadą dla danych statycznych. Jaka jest tutaj prawidłowa ścieżka projektowania? **Uwaga:** „Nigdy” nie zmieniaj, co oznacza, że rzadko się to zmienia. Dane, o których mowa, są modelem zestawu standardów rządowych, więc mogą się one zmienić w pewnym momencie w przyszłości, ale nie będzie to regularnie i nie będzie automatycznie aktualizować naszego oprogramowania, ponieważ zmiana standardów może wywołać zmianę naszych wymagań.


title: system zarządzania treścią internetową

text: Wielu moich znajomych chce mieć własną stronę internetową, aby pokazać swoje talenty. Nie chcą jednak zajmować się takimi sprawami technicznymi jak pisanie html i zarządzanie serwerem WWW. Ja też nie. Byłoby miło, gdybyśmy weszli na nasz adres URL i przeglądali nasze strony, a także edytowali i aktualizowali nasze informacje podczas logowania. Więc w zasadzie wyświetlane treści będą tym, co dostarczamy, a jednocześnie możemy wybierać spośród niektórych dostarczonych szablony układu i stylu strony. Wydaje mi się, że jest to typowy system zarządzania treścią. Jeśli tak, to sam chciałbym zbudować prosty, ponieważ chciałbym mieć doświadczenie w budowaniu prostego CMS. Ponieważ nie mam w tym żadnego doświadczenia, potrzebuję pomocy w ustaleniu, czego potrzebuję. A jakie są najodpowiedniejsze narzędzia i technologie? Do tej pory mam w głowie **html** , **css** , **JSP** , **Tomcat** , **SQLite**. Czy to wystarczy? Czy to najlepsza kombinacja? Nie mam też pojęcia, jak podejść do aspektów autoryzacji i bezpieczeństwa budowy systemu. (PS: Nie wiem, jakie tagi są odpowiednie dla mojego pytania. Możesz je edytować za mnie)


title: Kiedy stosować RCP?

text: Lubię pisać małe aplikacje GUI używając Javy i Swinga, coś w rodzaju klienta dla serwisu społecznościowego Tumblr Czy powinienem używać Eclipse RCP czy platformy Netbeans? A jakie korzyści odniosę z używania jednego z nich nad zwykłym huśtawką / SWT? Czy aplikacje RCP wymagają więcej zależności niż te opracowane przy użyciu Swing lub SWT?


title: Podziel się doświadczeniem, jak ułatwić innym naśladowanie kodu źródłowego?

text: Potrafię napisać kod źródłowy w pewnym okresie czasu, ale po chwili nie dotykania projektu, zabiera mi czas na ponowne zapoznanie się z kodem źródłowym. Ponadto, inni ludzie potrzebują trochę czasu na zapoznanie się z programem... Jak sprawić, by kod źródłowy był łatwiejszy do naśladowania dla innych?


title: Czy istnieje typowy sposób posiadania poglądu, który jest zależny od innego?

text: Pracuję nad programem z dwoma widokami, html i ajax (którym będzie html przesyłany przez json). Widok HTML jest standardem i domyślnie ajax powinien wyglądać tak samo. Jednak widok ajax ma również mieć konfigurowalne opcje po stronie klienta, dla których składniki strony powinny być wyświetlane. Mam problem z owinięciem głowy w elegancki sposób radzenia sobie z tym wymogiem. Czy istnieje standardowy sposób obsługi podobnych widoków w ten sposób?


title: Modelowanie struktury projektu dla Kierownictwa

text: Projekt, w który zostałem umieszczony, działa fatalnie. :-) Głównym problemem jest brak architektury i brak wskazówek, jak organizować projekty. W tym przypadku wykonałem przykładową architekturę projektu z diagramami klas i komponentów UML oraz diagramami warstw. Główny problem polega na tym, że muszę tę architekturę przedstawić kierownictwu. Ale kierownictwo nie jest zaznajomione z UML lub diagramami warstw i dla większości z nich nie jest możliwe zrozumienie logiki, która za tym stoi. W takim przypadku chcę przedstawić kierownictwu zwizualizowaną strukturę projektu z łatwą do zrozumienia. Szukałem zasobów i przykładów z łatwymi do zrozumienia wizualizacjami, ale nie mogłem ich znaleźć. Więc moje pytanie brzmi, jak wizualizujesz swoją architekturę oprogramowania dla kierownictwa, jakich technik używasz? Mała uwaga: jest to bardzo duży projekt programu sharepoint z ponad 50 podprojektami.


title: Czym jest pokolenie w tworzeniu oprogramowania?

text: Słyszałem o oprogramowaniu i aplikacjach przechodzących do generacji 1.2 lub 2.6, czy kryje się za tym rzeczywista metodologia? czy jest to bardziej sprawa marketingowa? Obecnie używamy Scrum jako naszej metodologii w zwinnym tworzeniu oprogramowania i opiera się ona na sprintach, ale nie byłem w stanie znaleźć żadnych informacji szczegółowo opisujących, co tak naprawdę jest pokoleniem w tworzeniu oprogramowania (ani na metodykach opartych na zwinnej, ani nie zwinnych). http://en.wikipedia.org/wiki/Sprint_%28scrum%29#Sprint


title: Kiedy rejestracja w Bluetooth Special Interest Group (SIG) staje się obowiązkowa?

text: Moja firma chce dodać funkcję Bluetooth do naszego sprzętu, abyśmy mogli zintegrować łączność z naszymi produktami z różnymi tabletami. Aby to zrobić, chcemy kupić chip typu „wszystko w jednym”, który możemy zintegrować z naszymi płytami. Wszyscy w zespole programistów są nowicjuszami w integracji Bluetooth, a kiedy przeprowadzam swoje badania, znajduję wiele odniesień i materiałów, które odsyłają mnie do Bluetooth.org i wspominają o zostaniu członkiem Special Interest Group (SIG). Rodzi to różne pytania dotyczące konieczności przystąpienia do SIG jako firmy. Wolelibyśmy nie przechodzić przez ten proces, ponieważ wiązałoby się to z płaceniem różnych opłat i wciąganiem w proces prawników korporacyjnych. Musieliśmy już przeskoczyć przez kilka prawnych pętli ( _ahem_ , ktoś z MFi?) i wolelibyśmy nie musieć przez to przechodzić ponownie ze względu na czas rozwoju. Jeśli chcemy zintegrować prostą łączność Bluetooth z naszymi urządzeniami, czy musimy przejść przez proces dołączania do Bluetooth SIG, czy też jesteśmy objęci ochroną i możemy promować nasze urządzenia jako obsługujące Bluetooth, ponieważ zintegrowane chipy będzie pochodzić od dużego producenta, który został już członkiem SIG i ma tam chipset certyfikowany przez SIG?


title: Przekazywanie funkcji Scala do metody Javy 8

text: Poniższy kod Scala działa i można go przekazać do metody Java oczekującej funkcji. Czy jest na to czystszy sposób? Oto mój pierwszy przebieg: val plusOne = new java.util.function.Function[Int,Int] { override def apply(t:Int):Int = t + 1 override def andThen[V](after:function.Function[_ >: Int, _ <: V]): funkcja.Funkcja[Int, V] = ??? override def compose[V](before:function.Function[_ >: V, _ <: Int]): function.Function[V, Int] = ??? } Oto moje drugie przejście — używa ogólnego opakowania interfejsu funkcji Java-8, aby uprościć składnię Scali: // Uwaga: Funkcja 1 to interfejs funkcjonalny Scali, // Funkcja (bez 1) to Java 8. case class Funkcja Java1[U,V](f:Funkcja1[U,V]) extends Funkcja[U,V] { override def apply(t: U): V = f(t) override def compose[T](before: Funkcja[_ >: T, _ <: U]): Funkcja[T, V] = ??? override def andThen[W](after:Funkcja[_ >: V, _ <: W]): Funkcja[U, W] = ??? } val plusOne = JavaFunction1((x:Int) => x + 1) val minusOne = JavaFunction1((x:Int) => x - 1) Czy możemy zrobić lepiej? W ramach kontynuacji, czy jest jakaś szansa, że Scala kiedyś użyje dynamicznego kodu operacji invoke, tak jak Java 8 dla swojej pierwszorzędnej aplikacji funkcyjnej? Czy to sprawi, że wszystko zadziała magicznie, czy nadal będzie potrzebna konwersja składniowa?


title: Konwencja nazewnictwa: pole zaczynające się od „m” lub „s”

text: Widziałem dużo kodu (na przykład kod źródłowy Androida), w którym nazwa pól zaczyna się od "m", podczas gdy pola statyczne zaczynają się od "s" Przykład (zaczerpnięty ze źródła klasy Android View): private SparseArray<Object> mKeyedTags; prywatny statyczny int sNextAccessibilityViewId; Zastanawiałem się, co oznaczają „m” i „s”… może „m” jest zmienne, a „s” statyczne? Ponieważ wydaje się, że jest to w dużej mierze przyjęty wzorzec, czy wiesz, czy istnieje literatura na temat tego rodzaju konwencji nazewnictwa?