title: Problem z nagłówkiem HTTP Java

text: Chcę pobierać filmy z YouTube. Mój kod działa. Mogę zapisać filmy bez problemu, ale w przypadku niektórych filmów zwracany jest kod odpowiedzi HTTP 403. Na przykład wszystkie filmy Vevo zwracają błędy 403. Jestem prawie pewien, że ma to związek z nagłówkami. Dodałem nagłówki do żądania zgodnie z nagłówkami Chrome Live HTTP Headers. To jest mój kod. Czy ktoś może zasugerować coś, czego mi brakuje. Użyty podstawowy adres URL = „https://www.youtube.com/watch?v=dvgZkm1xWPE”; Ciąg url = "http://r5---sn-8vq54voxpx-q0ce.googlevideo.com/videoplayback?mv=m&ratebypass=yes&sver=3&id=o-AG0Zbfjq6nIMbyri8B5-6_-C8Vc4WHeRLHXbmh6CLKrc2A,&source=insparcsparc,&source=in ipbits,itag,ratebypass,źródło,upn,expire&mm=31&expire=1408069579&key=yt5&mws=yes&fexp=901466,902408,927622,931983,934024,934030,946023,949402&ms=au&ipbits=0&n.g087909wn =xEwXucfWzTk&type=video/mp4;+kodeki=%22avc1.64001F,+mp4a.40.2%22&quality=hd720&itag=22&fallback_host=tc.v8.cache7.googlevideo.com&signature=8287AA736059404B5179505C6500078D2CE61DB3B5179505C6500078D2CE61DB1 CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(url); httpget.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/36.0.1985.125 Safari/537.36"); //httpget.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); httpget.addHeader("Zaakceptuj", "/"); httpget.addHeader("Kodowanie akceptacji", "gzip,deflate,sdch"); httpget.addHeader("Accept-Language", "en-US,en;q=0.8"); httpget.addHeader("DNT", "1"); httpget.addHeader("Pochodzenie", "https://www.youtube.com"); httpget.addHeader("Referer", "https://www.youtube.com/watch?v=" + videoID); httpget.addHeader("Połączenie", "utrzymuj przy życiu"); Odpowiedź CloseableHttpResponse = httpclient2.execute(httpget2); HttpEntity encja = response2.getEntity(); System.out.println("\nKod odpowiedzi: " + response.getStatusLine().getStatusCode()); System.out.println(entity.getContentType());


title: Wzorzec delegata: kto jest odpowiedzialny za tworzenie obiektu zwracanego?

text: Mam pytanie dotyczące wzorca delegata: jeśli chcę delegować na przykład analizowanie pliku xml, który chcę przekonwertować na słownik klucz-wartość. Weźmy ten klasyczny przykład... Jaka jest najlepsza praktyka w tworzeniu tego obiektu słownika? * Czy jest to obiekt "główny", który go tworzy i przekazuje referencję do delegata, prosząc go o jego wypełnienie, czy wykonał swoją pracę, poprzez wartość zwracaną przez metodę call-back (lub w jakikolwiek inny sposób) Czy jeden z tych dwóch sposobów jest naprawdę lepszy od drugiego? I dlaczego ?


title: Czy to wzór? Tak być powinno?

text: Poniższe jest bardziej stwierdzeniem niż pytaniem - opisuje coś, co może być wzorcem. Pytanie brzmi: czy to znany wzorzec? A jeśli nie, to czy powinno być? Miałem sytuację, w której musiałem iterować po dwóch odmiennych wielowarstwowych strukturach danych i kopiować informacje z jednej do drugiej. W zależności od konkretnego przypadku użycia, miałem około ośmiu różnych rodzajów warstw, połączonych w około ośmiu różnych kombinacjach: A-B-C B-C A-C D-E A-D-E itd. Po kilku nieudanych próbach wyeliminowania powtórzeń kodu iteracji na warstwę, zdałem sobie sprawę, że kluczową trudnością w tej refaktoryzacji był fakt, że najniższy poziom wymagał dostępu do danych zgromadzonych na wyższych poziomach. Aby wyraźnie dostosować się do tego wymagania, wprowadziłem klasę `IterationContext` z kilkoma metodami `get()` i `set()` do gromadzenia niezbędnych informacji. Ostatecznie miałem następującą strukturę klas: class Iterator { virtual void iterateOver(const Structure &dataStructure1, IterationContext &ctx) const = 0; }; class RecursingIterator : public Iterator { RecursingIterator(const Iterator &below); }; class IterateOverA : public RecursingIterator { virtual void iterateOver(const Structure &dataStructure1, IterationContext &ctx) const { // Iteracja po elementach w dataStructure1 // znajdź odpowiedni element w dataStructure2 (przekazywany przez kontekst) // i ustaw go w kontekście // wywołaj pod-iterator }; class IterateOverB : public RecursingIterator { virtual void iterateOver(const Structure &dataStructure1, IterationContext &ctx) const { // iteracja po elementach dataStructure2 (kontekst formularza) // ustawienie elementu dataStructure2 w kontekście // zlokalizowanie odpowiadającego elementu w dataStructure2 / (przekazanie przez kontekst) / wywołaj pod-iterator }; void main() { class FinalCopy : public Iterator { virtual void iterateOver(const Structure &dataStructure1, IterationContext &ctx) const { // skopiuj dane ze struktury 1 do struktury 2 w kontekście // używając w razie potrzeby niektórych danych z wyższych poziomów } } IterationContext ctx(dataStruktura2); IterateOverA(IterateOverB(FinalCopy())).iterate(dataStructure1, ctx); } Zdarza się, że dataStructure1 jest jednolitą strukturą danych, podobną pod tym względem do XML DOM, podczas gdy dataStructure2 to starsza struktura danych składająca się z różnych `struktur i tablic. Dzięki temu mogę dla wygody przekazać dataStructure1 poza kontekstem. Ogólnie rzecz biorąc, każda strona iteracji lub obie strony mogą być przekazywane za pośrednictwem kontekstu, co jest dogodne. Kluczowymi punktami sytuacji są: * skomplikowany kod, który musi być wywoływany w „warstwach”, z możliwymi wieloma kombinacjami typów warstw * w dolnej warstwie informacje z górnych warstw muszą być widoczne. Kluczowe punkty implementacji to: * użycie klasy context w celu uzyskania dostępu do danych ze wszystkich poziomów iteracji * skomplikowany kod iteracyjny zawarty w implementacji czystej funkcji wirtualnej * dwa interfejsy - jeden świadomy bazowego iteratora, drugi nie. * użycie `const &` w celu uproszczenia składni użycia.


title: Dobre zasoby do projektowania języka

text: Istnieje wiele książek o dobrym projektowaniu stron internetowych, projektowaniu interfejsu użytkownika itp. Wraz z pojawieniem się Xtext, bardzo łatwo jest pisać we własnym języku. Jakie są dobre książki i zasoby dotyczące projektowania języka? Nie szukam książki o budowaniu kompilatora (jak księga smoka), ale czegoś, co odpowiada: * Jak stworzyć gramatykę, która wybacza (jak dodanie opcjonalnych końcowych przecinków)? * Jakie wzorce gramatyczne powodują problemy dla użytkowników języka? * Jak stworzyć zwartą gramatykę bez wprowadzania niejasności. Pomyśl o „czystym języku”, a nie „ostrzeżeniach parsera”. Może „jak uniknąć zmylenia programisty przy użyciu mojego języka?”


title: Powszechne i często używane algorytmy struktur danych?

text: Programuję już od jakiegoś czasu, a przewagą, której brakuje mi nad innymi programami, są algorytmy. Wiem, co to jest lista połączona i drzewo binarne, ale nie znam ich znacznie więcej. Nie udało mi się na 2 wywiadach z powodu ćwiczeń, które wymagały ode mnie znajomości algorytmów struktur danych. Zaczynam też budować projekt javascript, który ma trochę ciężkiego przetwarzania i muszę znać kilka dobrych, często używanych algorytmów?


title: Kroki, aby nauczyć się języka programowania / frameworka

text: Jestem nowy w programowaniu. Chętnie poznaję nowe języki programowania / frameworki. Czy ktoś może zaproponować najlepszy sposób na opanowanie języków programowania / frameworków?


title: Czy ten kod JS jest dobrym sposobem na zdefiniowanie klasy za pomocą metod prywatnych?

text: Ostatnio przeglądałem projekt `open source` `JavaScript`. Projekt jest prostym portem z innego projektu w `języku C`. Wykorzystuje głównie metody statyczne, spakowane razem w klasy. Większość klas jest implementowana przy użyciu tego wzorca : Foo = (function() { var privateField = "bar"; var publicField = "bar";     function publicMethod() { console.log('to jest publiczne');     } function privateMethod() { console.log('to jest prywatne'); } return {   publicMethod : publicMethod, publicField : publicField }; })(); To był pierwszy raz, kiedy zobaczyłem prywatne metody zaimplementowane w ten sposób. Doskonale rozumiem, jak to działa, metodą anonimową. Oto moje pytanie: **czy ten wzorzec jest dobrą praktyką ?** Jakie są faktyczne ograniczenia lub zastrzeżenia? Zwykle deklaruję moje klasy JavaScript w ten sposób: Foo = new function () { var privateField = "test"; this.publicField = "test"; this.publicMethod = function()     { console.log('ta metoda jest publiczna'); metoda prywatna(); } function privateMethod() { console.log('ta metoda jest prywatna'); } }; Poza składnią, czy jest jakaś różnica z powyższym wzorcem?


title: Gdzie i kiedy umieszczać zasoby w językach, których nie obchodzi, gdzie są deklarowane?

text: Pochodzę z c++, gdzie deklaruje się wszystkie aktywa, które mają być uwzględnione na górze pliku. To samo robiłem również z php. Ostatnio pokusiłem się o odejście od tej zasady: mam plik skryptu, w którym umieszczam funkcje, których używam w swoich projektach, coś w rodzaju skryptu bibliotecznego. Istnieją pewne funkcje, które wymagają zasobów, których nie używa żadna inna funkcja, a ponieważ można umieszczać instrukcje require_once w całym swoim skrypcie, kusiło mnie, aby dołączyć zasoby na początku tych funkcji, aby oszczędzać zasoby, gdy skrypt jest uruchomiony. Czy tego rodzaju rzeczy są mile widziane w OOP, czy to jest w porządku? Myślę, że skoro już to robię, czy powinienem w ogóle tego nie robić, ponieważ istnieje czystsze podejście OOP do rodzaju skryptów bibliotecznych, które tworzę?


title: Metody biblioteki matematycznej w Google Go Programming Language

text: Programowałem w Google Golang i podobało mi się to ze względu na jego zwięzłość, ale wydaje mi się zaskakujące, że prawie wszystkie metody biblioteki standardowej Math są przeznaczone dla typu zmiennoprzecinkowego. Czy jest jakiś szczególny powód, dla którego te metody nie istnieją dla int?


title: Czy powinienem wykonać szyfrowanie w interfejsie czy w bazie danych?

text: Chcę przechowywać zaszyfrowany ciąg (w szczególności adresy e-mail) w bazie danych. Obecnie używam Pythona i MySQL. Początkowo zamierzałem użyć AES_ENCRYPT/DECRYPT MySQL, aby sobie z tym poradzić, ale potem zacząłem się zastanawiać, czy jeden jest lepszy od drugiego. Wygląda na to, że jeśli powiążę to z funkcją bazy danych, może to potencjalnie zablokować mnie w bazie danych i w tym momencie wybór może ulec zmianie. W przeciwnym razie szukałbym obsługi tego w kodzie Pythona, ale część mnie uważa, że obsłużenie tego wszystkiego na zapleczu uwolniłoby cię od używania dowolnej logiki i kodu frontendowego, jakie tylko zechcesz. Jakieś myśli lub pomysły?


title: Operator trójargumentowy (warunek ? foo : bar) i operator XOR (^)

text: W niedawnym przeglądzie kodu przeczytałem, że zarówno „operator potrójny (warunek ? foo : bar)”, jak i „operator XOR ^” są rzadko używane w Javie. Czy to prawda? Jeśli tak, czy to dlatego, że są mniej czytelne? lub z innego powodu.


title: Jak oprogramowanie do edycji obrazu zmienia kontrast obrazu?

text: Jak Photoshop lub inne oprogramowanie do edycji obrazu zmienia kontrast obrazu? Co oznacza kontrast, gdy przetwarzamy obraz piksel po pikselu? Albo co oznacza kontrast obrazu? Tutaj stworzyłem bardzo prosty obraz, aby zrozumieć kontrast obrazu. Jest to obraz o wymiarach 10 × 10 pikseli, który w programie Photoshop uzyskuje 100% korektę kontrastu, która nie jest starsza. Jedyną zmianą, jaką zauważyłem, były szare kolory, które były jaśniejsze po zastosowaniu kontrastu. Kontrast przed i po: ![Obrazy przed i po kontrastach są podobne, z wyjątkiem szarego koloru, który jest nieco jaśniejszy](http://i.stack.imgur.com/CqZhf.png)


title: Jak mogę ukryć zależności od moich Usług?

text: Oto abstrakcja usługi, nad którą pracuję: public abstract class Service { public ILogger Logger{get;set;} public IQueryManager QueryManager{get;set;} public ICommandManager CommandManager{get;set;} } Następnie muszę je wywołać w moja klasa jak zwykle : Logger.Log("Coś"); QueryManager.Query(nowy QueryObject()).Result; itp. Ale chciałbym mieć kilka chronionych metod pomocniczych, aby te zdania były mniej gadatliwe : Log("Coś");\\calls Logger.Log("Coś") Query(new QueryObject()); \\ zwraca QueryManager(new QueryObject()).Result Czy istnieje sposób, aby zaimplementować moje zależności tak, aby były ukryte przed dziećmi usługi? Czy istnieje kontener IoC, który pozwala mi używać właściwości prywatnych do wstrzykiwania moich zależności?


title: Jak poprawić relacje między konsultantami a programistami sztabowymi

text: Od dłuższego czasu jestem konsultantem małej firmy konsultingowej zajmującej się oprogramowaniem. Nasz normalny model biznesowy nie polega na zwiększaniu liczby personelu, ale taki, że znajdujemy klientów, którzy potrzebują pomocy w budowaniu jakiegoś rozwiązania, a następnie wysyłamy zespół, który może to rozwiązanie zbudować, pracować z istniejącym personelem IT, szkolić wszystkich zaangażowanych w jego wspieranie rozwiązania, a następnie przejdź do następnego zadania. Oczywiście nadal jesteśmy gotowi na wszelkie potrzebne wsparcie. Cieszymy się dużą renomą w naszej branży i odnosimy duże sukcesy we wdrażaniu dostarczanych przez nas rozwiązań. Zauważyłem jednak wspólny motyw dla większości naszych projektów. Kiedy docieramy na miejsce, zazwyczaj istnieje „napięta” relacja między naszym zespołem a wieloma pracownikami IT obecnymi u klienta. Całkowicie rozumiem, że mogą pojawić się pewne obawy związane z naszym przybyciem i że w pobliżu mogą pojawić się mechanizmy obronne. Wielu z nich jest wyrozumiałych i łatwych we współpracy, ale zazwyczaj są tacy, którzy w ogóle nie będą z nami współpracować i którzy mogą szybko stać się ryzykiem projektowym na wiele sposobów. Staramy się wejść z otwartym umysłem i dobrym nastawieniem, starając się NIE być aroganckim lub protekcjonalnym. Zwykle zostajemy wdrożeni, gdy jest bałagan do posprzątania – ale rozumiemy, że były powody, dla których podjęto decyzje, które wciągnęły ich w pułapkę… więc po prostu próbujemy określić kolejny krok naprzód i iść dalej. Moje pytanie jest takie – chciałbym usłyszeć od personelu IT i programistów, którzy mieli konsultantów – jakie są rzeczy, które robią konsultanci, które wywołują negatywne uczucia i postawy? Co możemy zrobić lepiej, aby związek był lepszy, nie tylko na początku, ale także w miarę postępów projektu?


title: Znaczenie wzorców projektowych w JavaScript, NodeJs i inni

text: Ponieważ JavaScript wydaje się być wszechobecnym językiem programowania w sieci w ciągu najbliższych kilku lat, nowe frameworki pojawiają się co pięć minut, a programowanie sterowane zdarzeniami zajmuje pozycję lidera zarówno po stronie serwera, jak i klienta: Czy jako programista JavaScript uważasz tradycyjne wzorce projektowe za ważne czy mniej ważne niż w innych językach/środowiskach?. Wymień trzy najlepsze wzorce projektowe, których używasz regularnie jako programista Javascript, i podaj przykład, w jaki sposób pomogły one w rozwoju Javascript.


title: Jak rozpowszechniać bezpłatne kopie płatnej aplikacji na iOS?

text: Czy ktoś może mi powiedzieć, jak mogę bezpłatnie pobrać płatną aplikację jednemu z moich znajomych z iTunes Connect. Chodzi mi o to, że dam mojemu przyjacielowi kod, dzięki któremu może pobrać moją aplikację bez płacenia. Czy ktoś może mi powiedzieć, czy jest jakaś opcja w iTunes Connect, aby to zrobić?


title: Planujesz pokera, pojedynczo lub całą grupą w szacunkach?

text: Czy w planowaniu pokera/scruma pokera, gdy dokonuje się oszacowania, czy oszacowanie powinno opierać się na założeniu, że tylko jeden programista jest przydzielony do tego zadania, czy grupa programistów? Jeśli to drugie, jak duża jest ta grupa? Powodem, dla którego jest to istotne, jest to, że szacunkowe czasy byłyby prawdopodobnie inne, gdyby jedna osoba pracowała nad problemem, niż gdyby miała kilka osób. Czytałem kilka opisów tego, jak powinno działać planowanie pokera, ale ta podstawowa informacja wydaje się być pominięta, jakby należało ją w jakiś sposób wywnioskować z procedury. Innymi słowy: jeśli podam szacunek, czy powinienem oszacować, ile czasu według mnie jeden programista w grupie musi poświęcić na rozwiązanie problemu, czy też jak długo cała grupa poświęciłaby na rozwiązanie problemu?


title: Czy sprawdzanie, czy klasa, do której odwołuje się jej interfejs, jest instancją innej klasy, jest złą praktyką programistyczną?

text: Mam klasę (`Timer`) z listą tablicy obiektów `Timable`. `Planowanie` to interfejs. Istnieje pewna specyficzna funkcjonalność, której potrzebuję dla klasy `Trigger` (implementuje `Timable`), która ma odniesienie o nazwie `target`. Wiele metod wymaga przeszukiwania tablicy `Timer` w poszukiwaniu obiektów `Trigger` z określonym `celem`. To, co zrobiłem, to taka funkcja: public Timable[] findObjectsWithTarget(Cue target) { ArrayList<Timable> result = new ArrayList<Timable>(); for (Timable timed : fireable) { //fireable to tablica (właściwie HashSet) obiektów Timed if (timed instanceof Trigger && ((Trigger) timed).getTarget() == target) result.add(timed); } return (Timable[]) result.toArray(); } Wydaje się, że to zła praktyka. Klasa Timer jest teraz zależna od klasy Trigger (w pewnym sensie) i nie jest już uogólniona. Tak więc moje dwa pytania: **1) Czy to rzeczywiście zła praktyka? Dlaczego lub dlaczego nie?** **2) Jaki jest lepszy sposób, jeśli jest to zła praktyka?**


title: Biblioteka JavaScript dla odniesienia do kodu źródłowego Java

text: Czy mógłbyś zasugerować jakąkolwiek bibliotekę JS, która „rozpozna” wszystkie klasy Javy w podanym tekście i utworzy odnośnik do strony z tą klasą? (podobne do Eclipse Ctrl+klik) Istnieje wiele dobrych bibliotek JS do podświetlania kodu, ale żadna z nich nie ma tej funkcji.


title: GCC vs clang/LLVM -- wady i zalety każdego z nich

text: Jakie są zalety i wady GCC vs clang/LLVM?


title: Jak mogę być na bieżąco ze stylem kodowania Pythona?

text: Używam Pythona od wersji 2.2. Wybieram nowe konstrukcje językowe, takie jak na przykład instrukcja `with` lub wyrażenia słownikowe/zestawowe. Jednak zdałem sobie sprawę, że chociaż jestem zgodny z PEP-8, dla istniejących konstrukcji używam starego stylu zamiast nowego (na przykład `z wyjątkiem Wyjątku, e` zamiast `z wyjątkiem Wyjątku jako e` ). Czy istnieje zasób, który zawierałby albo najbardziej aktualny przewodnik po stylach, albo jeszcze lepszą listę zmian w stylu kodowania Pythona?


title: Kaizen w metodyce DevOps?

text: Zastanawiałem się, czy ktoś tutaj pracuje w zespole programistycznym zgodnie z metodologią DevOps i stosuje Kaizen zamiast Lean do ciągłego doskonalenia? Czytałem, że DevOps opiera się na metodyce Agile i Lean, ale nie wiem, czy można zastosować Kaizen zamiast Lean. Dziękuję.


title: Jaki jest proces lub termin przeglądania HTML/CSS przy użyciu localhost?

text: Ostatnio korzystałem z oprogramowania, które jest zwykłym plikiem instalacyjnym, w którym instalujesz swoje oprogramowanie, a następnie po uruchomieniu otwiera przeglądarkę, używa lokalnego hosta z określonym numerem portu, aby połączyć się z oprogramowaniem i uruchamia go z tam. Uważam to za przydatne i interesujące. Ale nawet nie wiem, czy tego rodzaju oprogramowanie i metodologia programowania ma nazwę, czy nie. Dlatego chciałbym dowiedzieć się, jakie języki programowania, API i frameworki są specjalnie zaprojektowane do tego celu? Jednym z przykładów jest Metasploit. Możesz pobrać jego plik instalacyjny i zainstalować go od niechcenia, jak każde inne oprogramowanie, a następnie, gdy wszystko się skończy i będziesz chciał korzystać z oprogramowania. Otworzy przeglądarkę i połączy się z http://localhost:3790/, gdzie Metasploit zostanie załadowany i uruchomiony.


title: Przy jakim rozmiarze danych przejście z SQL na NoSQL staje się korzystne?

text: Jako programista relacyjnych baz danych (przez większość czasu) czytam artykuły o tym, jak relacyjne bazy danych nie skalują się, a rozwiązania NoSQL, takie jak MongoDB, robią. Ponieważ większość baz danych, które do tej pory opracowałem, była małej lub średniej skali, nigdy nie miałem problemu, który nie zostałby rozwiązany przez indeksowanie, optymalizację zapytań lub przeprojektowanie schematu. Jakiego rozmiaru spodziewałbym się, gdyby MySQL miał problemy. Ile rzędów? (Wiem, że będzie to zależeć od aplikacji i rodzaju przechowywanych danych. Ta, która mnie załatwiła, była w zasadzie bazą danych genetycznych, więc miałaby jedną główną tabelę z 3 lub 4 tabelami wyszukiwania. Główna tabela będzie zawierać między inne rzeczy, odniesienie do chromosomu i współrzędne pozycji.Prawdopodobnie zostanie zapytany o liczbę wpisów między dwiema miksturami na chromosomie, aby zobaczyć, co jest tam przechowywane).


title: Jakie są wymagania dotyczące uznania autorstwa w licencji MIT?

text: selectalicense.com twierdzi, że licencja MIT to „dozwolona licencja, która jest krótka i na temat. Pozwala ludziom robić wszystko z Twoim kodem **z odpowiednią atrybucją** i bez gwarancji” (podkreślenie moje). Czytając licencję, nie widzę jednak niczego, co by twierdziło, że przypisanie autorowi oryginału musi być gdziekolwiek, więc skąd oni to biorą?


title: PHP - PSR 0 - Stałe konfiguracyjne

text: To pytanie dotyczy automatycznie ładowanych bibliotek PSR-0 oraz sposobu deklarowania i używania głównych stałych konfiguracyjnych. Z Twojego punktu widzenia (programista lib/framework), gdzie/jak powinny być zadeklarowane stałe PHP konfiguracji Twojej biblioteki (takie jak `ESCAPE_SOMETHING`, `USE_DOM`, `API_URL`, ...) w taki sposób, aby * Twój kod łatwo je zaadresować * kod klienta może je łatwo modyfikować w zależności od potrzeb Czy jest jakaś konwencja, zalecenie, a nawet coś, czego przegapiłem w PSR-0, o czym powinienem wiedzieć?


title: Testowanie: czy powinienem zapakować powiadomienia systemowe i wysłać własne?

text: W obecnej aplikacji Cocoa, nad którą pracuję, mam obiekt `RecordScheduler`, który odpowiada na dwa typy powiadomień: „dzień minął” i „interwał szybkiego zapisywania minął”. W obu przypadkach „RecordScheduler” nakazuje „Recorder” między innymi wykonanie zadania nagrywania. Teraz chcę, aby „RecordScheduler” wydał nagranie, gdy komputer Mac przejdzie w stan uśpienia. Subskrybujesz powiadomienia o uśpienia/budzeniu za pośrednictwem `NSWorkspace`: [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(computerWillSleep:) name:NSWorkspaceWillSleepNotification object:nil]; To dość łatwe. Dodaj go do `-init` w `RecordScheduler`, a powiadomienia będą dobrze przetwarzane. Chodzi o to, że w pozostałych dwóch przypadkach napisałem metody pomocnicze, takie jak `fireDayDidPass()` do użycia w testach jednostkowych. Uruchomiłem moje niestandardowe powiadomienia i dodałem asercje dla odpowiedzi `RecordScheduler`. Działa dobrze. Nie czuję się komfortowo, uruchamiając `NSWorkspaceWillSleepNotification`, ponieważ (a) nie jest to moje własne i (b) nie wiem o żadnych efektach ubocznych. Zamiast tego uciekłem się do wywołania `[scheduler computerWillSleep:nil]`, który otrzymywał powiadomienia. Teraz nie mam testu integracji, aby sprawdzić, czy `RecordScheduler` subskrybuje `NSWorkspaceWillSleepNotification`. Po tym, jak dowiedziałem się, że nie ma żadnych dodatkowych informacji do wysłania, porzuciłem pomysł stworzenia `HibernationObserver`, który subskrybuje powiadomienia `NSWorkspace` i ponownie wysyła moje własne powiadomienia „Uśpij” i „Czy obudziłeś się” . Wydawało się, że nie ma żadnych dodatkowych korzyści. A teraz sedno sprawy: * Czy jest to nadal test jednostkowy, gdy uruchamiam powiadomienie i stwierdzam zarówno skutki uboczne obsługi powiadomień, jak i subskrypcję odbiorcy podczas inicjalizacji? * Jak inaczej mogę zweryfikować, czy obiekt rejestruje się jako odbiorca powiadomień? * Czy powinienem wyrobić sobie nawyk zawijania powiadomień systemowych we własnym zakresie?


title: Czy dopuszczanie pól zdefiniowanych przez użytkownika jest złą praktyką?

text: Ogólnie rzecz biorąc, czy dopuszczanie pól utworzonych przez użytkownika w bazie danych dla aplikacji internetowej jest uważane za złą praktykę? Na przykład tworzę aplikację internetową do inwentaryzacji domu dla mojej żony, która będzie chciała zdefiniować własne pola dla różnych przedmiotów. Planowałem pozwolić jej tworzyć kategorie przedmiotów i dodawać do nich „funkcje”. Funkcje byłyby po prostu kluczem/wartością przechowywanym jako ciągi. W ten sposób, jeśli miała na przykład kategorię o nazwie „Audio CD”, mogła dodawać funkcje do rzeczy takich jak „artysta”, „utwory” itp. Ale w innej kategorii, takiej jak „meble”, mogła dodawać funkcje do rzeczy takich jak „materiały”. " (drewno, plastik itp.). Wtedy dowolny przedmiot może należeć do jednej (lub wielu) kategorii, dodając te cechy do przedmiotu. Widzę problemy, w których wyszukiwanie według tych funkcji wymaga porównań ciągów, nie ma walidacji danych itp. Stosując metodykę zwinną, może lepiej byłoby po prostu dać jej nowe kategorie i atrybuty, a ja musiałbym po prostu utworzyć nowe tabele Jak idziemy. W moim przykładzie jest to mała baza użytkowników (2 z nas), a ilość utworzonych rekordów byłaby niewielka, więc nie jest tak źle. Ogólnie rzecz biorąc, jak ludzie radzą sobie z czymś takim w „prawdziwym życiu”?


title: Refaktoryzacja oświadczeń Switch i czy w ogóle można zastosować instrukcje Switch?

text: Czytałem ten artykuł i zastanawiałem się, czy pozbędziemy się wszystkich instrukcji switch, zastępując je Dictionary lub Factory, tak aby w moich projektach nie było żadnych instrukcji switch. Coś się nie zgadzało. Pytanie brzmi: czy instrukcje switch mają jakiekolwiek rzeczywiste zastosowanie, czy też zastępujemy je słownikiem lub metodą fabrykującą (oczywiście przy użyciu metody fabrycznej użycie instrukcji switch do tworzenia obiektów będzie minimalne za pomocą fabryki ... ale to wszystko).


title: Czy w takim przypadku można uniknąć niezwykle dużego przełącznika?

text: Piszę prosty kod związany z szachami z zamiarem napisania go wyraźnie (wydajność w ogóle nie ma znaczenia). A ta metoda, którą mam, wcale nie wygląda na czystą: public static Piece GetClosestPiece(Square squareFrom, Direction direction) { //TODO: przerób ten bałagan przełącznik (kierunek) { case Direction.Top: return _pieces.Where(p => p.kwadrat.w pionie z(kwadratOd)) .OrderBy(p => p.kwadrat.Y) .First(p => p.kwadrat.Y > kwadratOd.Y); case Direction.Bottom: return _pieces.Where(p => p.Square.OnVerticalWith(squareFrom)) .OrderByDescending(p =>p.Square.Y) .First(p =>p.Square.Y < squareFrom.Y) ; case Direction.Right: <...> case Direction.TopLeft: return _pieces.Where(p => p.Square.OnBackslashWith(squareFrom)) .OrderByDescending(p => p.Square.X) .First(p => p.Kwadrat.X < kwadratOd.X); domyślnie: wyrzuć nowy InvalidEnumArgumentException(); } } Przechowuję kawałki jako listę, więc tutaj używam LINQ, aby znaleźć kawałek najbliżej danego kwadratu w danym kierunku. 1. Czy oświadczenia switch/if tej wielkości (łącznie 8 przypadków tutaj) zawsze niosą ze sobą zapach kodu? 2. Czy jest jakiś sposób na refaktoryzację tylko tej części, czy powinienem rozważyć przejrzenie projektu całego rozwiązania?


title: Czy warto uruchamiać narzędzia do analizy statycznej (np. Findbugs) na klasach testowych?

text: Jakie jest prawdopodobieństwo, że błąd _który może zostać wykryty przez narzędzie do analizy statycznej_ (mianowicie Findbugs) w _klasach testowych_ maskuje prawdziwy błąd w rzeczywistym kodzie? Czy to realistyczny scenariusz? Czy naprawdę warto uruchamiać na nich narzędzia do analizy statycznej, aby znaleźć błędy w rzeczywistym kodzie?


title: DDD z domeną „Szkoła”

text: Zostałem poproszony o narysowanie ograniczonych kontekstów (BC) oraz możliwego agregatu i korzeni domeny Szkoły. Domena składa się ze studentów, którzy studiują moduły na kursie. Zgłaszają swoje zadanie do modułu, który jest następnie oceniany przez zewnętrznego korepetytora. „Oznakowanie” najpierw wystaje jako BC, ale nie jestem pewien co do reszty... Również „moduł” pojawiałby się w wielu ograniczonych kontekstach, więc jak mam sobie z tym poradzić?


title: Jak sprawić, by serwery strumieniowe audio i wideo działały?

text: Jestem programistą PHP MySQL i interesuje mnie sposób, w jaki telewizja i radio są transmitowane na żywo w Internecie. Chcę wiedzieć, jak to działa i jakie są jego wymagania (jaki pakiet jaki język programowania oferuje najlepiej). I proszę o wyjaśnienie: Strony internetowe są przechowywane na serwerach. Z mojego komputera, jeśli chcę transmitować wideo, muszę połączyć się z serwerem internetowym (aby przesłać wideo). Czy istnieje aplikacja, która to umożliwia (czy muszę to zakodować lub osadzić w mojej aplikacji internetowej i który język programowania byłby odpowiedni (czy Python to obsługuje))? Potrzebuję również skryptu do obsługi przesyłanego wideo lub audio (czy mogę to zrobić za pomocą PHP)?


title: PHP OOP: Czy każdy obiekt powinien zawierać wszystkie dane?

text: Próbuję "prawidłowo" nauczyć się PHP OOP i zastanawiałem się, czy konstruktor powinien pobrać wszystkie informacje z bazy danych i przechowywać je w obiekcie? Aby użyć przykładu, który próbuję stworzyć za pomocą PHP OOP, internetowa strona komiksowa (podobnie jak XKCD) miałaby dwie klasy: * Katalog (lista i kolejność wszystkich odcinków) * Odcinek (dane dotyczące tego konkretnego odcinka) Czy więc w tej sytuacji obiekt `Katalog` powinien otrzymać tablicę wszystkich identyfikatorów epizodów (przypuszczalnie zostanie to pobrane przez konstruktor)? A jeśli tak, czy to oznacza, że muszę zaktualizować zarówno tablicę obiektu, jak i tablicę bazy danych? A jeśli tak, jaki jest najczęstszy sposób realizacji tego (przypuszczalnie bardzo powszechnego) działania?


title: Dlaczego implementacje javascript przetwarzają liczby w ten sposób?

text: Zgodnie ze specyfikacją ECMAScript część całkowita liczby dziesiętnej powinna wynosić zero lub zaczynać się od niezerowej cyfry. Wartość szesnastkowa powinna zaczynać się od 0x. JavaScript w głównych przeglądarkach rozszerza EMCAScript o liczby ósemkowe. Są one określane przez ciąg cyfr (od 0 do 7 włącznie) rozpoczynający się od zera. Biorąc pod uwagę te fakty, moja naiwna implementacja interpretera javascript prawdopodobnie parsowałaby liczby całkowite trochę tak: jeśli pierwszy_znak w [1-9] to parse_input_as_decimal() inaczej jeśli pierwszy_znak wynosi 0 to jeśli drugi_znak to 'x' to parse_input_as_hexadecimal() inaczej jeśli second_char in [1-7] then parse_input_as_octal() else parse_input_as_zero() Jednak przeglądarki internetowe wydają się zachowywać nieco dziwnie, ponieważ jeśli liczba zaczynająca się od zera zawiera cyfry 8 lub 9, to odczytuje ją jako prawidłowy dziesiętny. Może to prowadzić do osobliwości, zwłaszcza gdy używa się przecinka lub wykładnika dziesiętnego. Kilka przykładów: 011 // jest ósemkowy 0011 // jest ósemkowy 019 // jest dziesiętny 0091 // jest dziesiętny 011.0 // zgłasza błąd 019.0 // jest dziesiętny 011e5 // zgłasza błąd 019e5 // jest dziesiętny Moje pytanie brzmi: dlaczego zachowują się tak? Czy to tylko dziwactwo historii? A może jest dobry powód? Czy jest gdzieś napisane w jakiejś specyfikacji? Czy to się kiedykolwiek zmieni? Wiem, że jest to trochę tajemnicze i niewiele osób używa w dzisiejszych czasach ósemek w javascript, ale jestem ciekawy.


title: Testowanie funkcjonalne przed sprawdzeniem kodu

text: Pracuję nad projektem ze starszym kodem, w którym nie ma dużego pokrycia kodu. Jednym z pomysłów na ulepszenie tego jest wymuszenie zasady, że każdy kod check-in musi mieć test, nie tylko test, ale także test funkcjonalny, abyśmy mogli zweryfikować, czy istniejący kod nie zepsuł się. Chciałbym uzyskać kilka pomysłów, zarówno za i przeciw, jak to podejście. Czasami wydaje się, że jest to ogromne przedsięwzięcie, ponieważ będzie wymagało naprawdę dobrej infrastruktury, aby programiści mogli w pełni przetestować swój kod przed jego wdrożeniem. Jak postąpić z uruchamianiem automatycznych testów jednostkowych, a także testów funkcjonalnych, gdy kod jest zaewidencjonowany? Czy to w ogóle możliwy pomysł?


title: Przemyślenia nad niestandardową strukturą danych dla implementacji węzła/łańcucha

text: Projektuję prosty GUI, który pozwoli użytkownikowi stworzyć trasę GPX poprzez wielokrotne klikanie na panelu mapy. Staję przed dylematem projektowym, jak reprezentować węzły i trasę. Konstrukcję tę można streścić w następujący sposób: * użytkownik klika **n** razy na ekranie w sekwencji, aby utworzyć łańcuch **n** węzłów * po zakończeniu łańcucha użytkownik może dodać do niego więcej węzłów , albo wybierając węzły pośrodku (wstawiając między istniejącymi węzłami) albo po prostu automatycznie dołączając na końcu jego następne kliknięcie. Na początku byłem zdecydowany użyć klasy Java Collections do reprezentowania łańcucha, ale pojawiły się z tym nieoczekiwane trudności. Na pierwszy rzut oka wydaje się, że jest to doskonały przykład „LinkedList”, ale rozważmy następujące. Jeśli użytkownik chce wstawić węzeł w środku łańcucha, najpierw wybiera na ekranie węzeł, do którego chce wcześniej wstawić nowy węzeł. Jeśli węzeł należy do listy połączonej, będzie musiał utrzymywać odniesienie do swojej listy obejmującej (co wydaje mi się nieco nietypową praktyką), a nawet wtedy nadal będziemy musieli zlokalizować węzeł na liście, zanim będziemy mogli wstawić . Więc musimy: * znaleźć węzeł (czas liniowy) * wstawić nowy węzeł (stały czas) Lub jeśli spróbuję tego samego z `ArrayList`, działa on również w najlepszym przypadku w czasie liniowym. * znajdź węzeł (czas liniowy) * wstaw nowy węzeł (czas liniowy) Ale żaden przypadek nie wydaje się pożądany. Krótko flirtowałem z pomysłem użycia `LinkedHashSet`, ale nie pozwala on na wstawianie w środek listy połączonej, ani nie wydaje się fundamentalnie poprawne, aby użyć implementacji zestawu do czegoś takiego. Oto co wymyśliłem: class Node { Node previous; Następny węzeł; Łańcuch łańcuchowy; } Węzeł utrzymuje jedynie odniesienie do swoich poprzednich i następnych węzłów, a także do łańcucha, do którego należy (ponownie, ta ostatnia część wydaje mi się niekonwencjonalna i prawdopodobnie nawet marnotrawna, ale jestem przekonany, że może być tutaj konieczna). class Łańcuch { Węzeł pierwszy; Węzeł ostatni; } Łańcuch wie tylko, jaki jest jego pierwszy i ostatni węzeł. Teraz, jeśli użytkownik chce wstawić węzeł w środku łańcucha? Wybiera węzeł, który po prostu aktualizuje pierwsze/ostatnie referencje siebie i sąsiadów. Czy chce dodać węzły na końcu łańcucha? Po prostu wybiera dowolny węzeł na ekranie (który jest świadomy, do jakiego łańcucha należy, a zatem jaki jest ostatni węzeł w tym łańcuchu), a łańcuch natychmiast zaczyna aktualizować referencje łącza dla ostatniego węzła i każdego dodanego po nim węzła, ponieważ a także aktualizowanie własnego „ostatniego” odniesienia. Naprawdę chciałem użyć klasy Collections, ale takie podejście wydaje mi się lepsze. Ale chciałbym tutaj przemyślenia/krytyki od bardziej doświadczonych programistów. Dziękuję.


title: Jakie są główne wyzwania przy tworzeniu platformy takiej jak StackOverflow?

text: Załóżmy, że tworzysz platformę taką jak StackOverflow. Aby odnieść sukces, musi być funkcjonalny, szybki i skalowalny, podobnie jak SO. Jakie są główne wyzwania, z którymi musiałbyś się zmierzyć w takim zadaniu? Szukam wyzwań technicznych, a nie problemów, takich jak reklamowanie i tym podobne. (Nie szukam sposobów tworzenia nowej witryny, aby rzucić wyzwanie SO; interesuje mnie tylko, jak trudno byłoby ją stworzyć, gdyby jeszcze nie istniała.)


title: Gdzie mogę poznać i zrozumieć pełne działanie nagłówków HTTP, aby móc zaimplementować własne?

text: Chcę dowiedzieć się, jak prawidłowo używać i implementować nagłówki HTTP. Jakie jest najlepsze źródło lub zestaw wytycznych, z których mogę skorzystać? (zwłaszcza zakresy do wykrywania menedżerów pobierania itp.) ?


title: Czy publikowanie kodu produkcyjnego jest legalne/etyczne?

text: Może to zabrzmieć głupio lub oczywiste, ale tak jest w moim przypadku; Pracuję w firmie, która niedawno wdrożyła SAP i byłam odpowiedzialna za wygenerowanie/migrację danych podstawowych firmy, które pozwoliły mi wiele się nauczyć z tego systemu. SAP ma swój własny język znany jako ABAP i odkąd system został uruchomiony, uczę się i programuję w nim. Przed ABAP pracowałem jako freelancer w innych projektach z VB6, VB.Net, C# i ASP.Net budując dużo rzeczy, tutaj stworzyłem kilka narzędzi, których używam na co dzień, więc mam duże doświadczenie w programowaniu. Na początku ABAP był trudny, ale w końcu po długiej analizie, googlowaniu i próbach i błędach stałem się facetem, który zajmuje się zasadniczo całym rozwojem w SAP, od raportów, po wyjścia użytkowników, ulepszenia, BADI, tabele, dynpro itp. Codziennie uczę się więcej i więcej ze względu na wszystkie prośby, które otrzymuję, co sprawia, że codziennie dużo badam i koduję. Stało się jednocześnie wyzwaniem i zabawą. Możesz być bardzo produktywny w ABAP, kiedy już się do niego dostaniesz. Ok, pytanie brzmi - czy mogę opublikować, jak rozwiązałem określoną rzecz w SAP? Oznacza to, że opublikuję kod produkcyjny. Mam co do tego wątpliwości.


title: Mediator kontra Obserwator?

text: Czy ktoś może mi udzielić kanonicznej odpowiedzi na temat różnic między „Obserwatorem” a „Mediatorem” oraz podsumowanie, kiedy należy użyć jednego wzorca zamiast drugiego? Nie jestem pewien, jaki rodzaj sytuacji wymagałby „Obserwatora”, a jakiego „Mediatora”


title: Jak mam obsługiwać wielozadaniowość w aplikacji WPF?

text: W większości wielozadaniowych aplikacji CRM, które widziałem, MdiWindow służy do umożliwienia użytkownikom otwierania wielu okien jednocześnie. Ale MdiWindow nie wydaje się być powszechnie używany w WPF. Przeglądając Codeplex, znalazłem tylko jeden porzucony projekt MdiWindow. W niektórych aplikacjach CRM opartych na WPF, które widziałem, tworzą pulpit nawigacyjny i pozwalają użytkownikom pracować tylko nad jedną rzeczą na raz. Jaki jest najlepszy sposób obsługi wielozadaniowości w aplikacji WPF? Czy istnieje lepsza alternatywa dla MdiWindow w WPF?


title: Jeśli zależność nie znajduje się w repozytorium maven, czy należy dodać ją do kontroli źródła?

text: Jeden z plików jar, których używam w moim kodzie, nie znajduje się w repozytorium maven (i tak, starałem się go unikać). Zainstalowałem go lokalnie, więc kiedy buduję projekt, zostaje on odebrany przez mavena. Umieszczam również instrukcje w moim `README`, aby każdy, kto chce zbudować mój kod, mógł zobaczyć, jak dodać jar do swojego lokalnego repozytorium. Pytanie brzmi, czy powinienem sprawdzić ten słoik w mojej kontroli źródła git? Wiem, że normalnie nie sprawdzasz słoików w źródle używając maven i git, ale w tym przypadku wydaje się, że może to być lepszy pomysł niż mówienie, znajdź ten słoik w Internecie. Jestem jedynym programistą w mojej grupie, więc skonfigurowanie repozytorium hostowanego przez firmę dla tylko tego jednego słoika jest przesadą.


title: Binding w webowych frameworkach - do danych frontendowych czy backendowych?

text: AngularJS i inne frameworki internetowe zapewniają możliwości wiązania danych (jak w WPF). Czy interfejs użytkownika jest powiązany ze zmiennymi JavaScript w interfejsie użytkownika (przeglądarce internetowej) czy jest powiązany z danymi na serwerze (poprzez AJAX itp.)? Założyłem, że we wszystkich frameworkach MVC dla sieci modelem są dane na serwerze, widok to strona internetowa na kliencie, a kontroler jest albo na serwerze, albo na kliencie (przeglądarce). Czy źle to zrozumiałem? Przepraszam, jeśli to głupie pytanie. Jestem programistą C#/C++, ale z niewielkim doświadczeniem w tworzeniu stron internetowych.


title: Strukturyzacja asynchronicznego kodu javascript

text: Pracuję nad aplikacją, która w dużym stopniu zależy od asynchronicznych operacji na danych. Mam do czynienia z nimi poprzez obietnice. Jednak podczas gdy mój kod działa, mam wrażenie, że robi się chaotyczny i trudny do utrzymania w przyszłości. Załóżmy tak: validate().then( // success function(promise){ $http.post('stuff.php',data).then( function(p){ }, function(){ } ) }, // fail function(powód){ // Załóż inną operację zależną od obietnicy }, // funkcja powiadamiania(update){ } ); Jak widać, wywołania obietnic są mocno zagnieżdżone. Ponadto na każdym kroku mam do czynienia z metodami rozwiązywania/odrzucania. Czego mi brakuje; jak mogę poprawić swoją technikę?


title: Przejście od programowania utrzymania ruchu do projektowania

text: Co zrobić, aby ludzie opracowali projekt oprogramowania dla danego zestawu wymagań? Podoba mi się, że wiele osób dołączyło do Semiconductor MNC i utknęła w konserwacji na kilka lat. Moja praca polegała zwykle na zmianie linii kodu dla sterowników Windows dostarczonych przez moją firmę lub kilku małych skryptów (w stylu) programów C do walidacji h/w. W rezultacie wyrobiłem sobie zły nawyk 'programowania przez przypadek'. Nie rozwinąłem umiejętności projektowania narzędzi/programów od podstaw. Byłem jedynym s/w członkiem lokalnego zespołu, dlatego też musiałem wykonać kilka podstawowych prac z innej, dobrze ugruntowanej siedziby firmy. Teraz przeniosłem się do innej firmy, przez co tworzenie od podstaw jest bardzo trudne. Jak mogę oduczyć się mojego złego nawyku i rozwinąć umiejętność projektowania s/w, a następnie kodowania?


title: Co szkodzi konserwacji?

text: Dla kogoś, kto nie ma jeszcze dużego doświadczenia w świecie rzeczywistym, pojęcie kodu, który można utrzymać, jest nieco niejasne, mimo że wynika z typowych zasad dobrych praktyk. Intuicyjnie mogę stwierdzić, że kod może być dobrze napisany, ale nie można go pielęgnować, jeśli na przykład przekazuje informacje, które podlegają ciągłym zmianom, ale nadal mam trudności z patrzeniem na kod i podjęciem decyzji, czy można go konserwować, czy nie. Więc pytanie brzmi: co szkodzi konserwacji? Czego powinienem szukać?


title: Urządzenia mobilne: natywne kontra internetowe – dane wejściowe do dyskusji na najwyższym poziomie zarządzania

text: Otrzymałem zadanie stworzenia zestawienia zalet, wad i kluczowych punktów na temat mobilnych aplikacji natywnych w porównaniu z mobilnymi aplikacjami webowymi. Będzie to wkład do dyskusji na najwyższym szczeblu kierowniczym. Jakie są tutaj ważne, a może pominięte tematy?


title: Design Anti-Wzorce — C# — Czy nazywasz to obiektem Boga?

text: Piszę moduł Portfolio na moją stronę internetową i składa się on z 3 komponentów. Kategoria galerii, galeria i obrazy z galerii. Zajmuję się całą obsługą zapytań (tworzenie, odczyt, aktualizacja, inne) dla powyższych 3 komponentów w 1 klasie Portfolio. Obsługa zadań DB dla modułu Portfolio odbywa się w innym pliku. Moje pytanie brzmi, nawet tylko w celu obsługi żądań, czy możesz wykonać wszystkie operacje w 1 klasie? -Reddy


title: Czy błędem jest określanie mobilnych aplikacji internetowych jako wieloplatformowych?

text: Tak, możesz uzyskać dostęp do mobilnej strony internetowej z wielu różnych urządzeń mobilnych, ale platforma, jak sądzę, to nadal serwer sieciowy i przeglądarka klienta (najlepiej ta ostatnia jest „ta sama” na dowolnym urządzeniu). Mówiąc o urządzeniach mobilnych i międzyplatformowych, myślę o frameworkach, takich jak PhoneGap i Appcelerator Titanium, ale wciąż niechętnie nazywam to cross-platformami, ponieważ wdrożone produkty nie są takie same. Wydaje mi się, że utkwił mi w głowie pomysł, że nazwanie czegokolwiek międzyplatformowego musi być bezpośrednim odpowiednikiem wirtualnej maszyny Javy, ale może to ja jestem tym, który się myli. Jaka jest ogólna opinia?


title: Porady dotyczące zmiany kariery na programistę Java

text: > **Możliwy duplikat:** > Najlepszy sposób dla starszego programisty na zmianę języka/środowiska w następnej > pracy? Mam około 15 lat doświadczenia w branży IT w zakresie bezpieczeństwa IT i sieci. Szukam zmiany w karierze i naprawdę chciałbym zająć się programowaniem w Javie. Mam dyplom CS, ale minęło około 5 lat od moich ostatnich zajęć. Mam średniozaawansowane doświadczenie w Perlu (który jest wciąż aktualny) i próbuję też nauczyć się Pythona (chociaż zastąpił Javę). Kupiłem Sama Teach Yourself Java w 24 godziny jako odświeżenie moich lekcji Java, które odbyłem w szkole. Jestem w połowie i na szczęście wszystko do mnie wraca. Mam też doświadczenie w HTML i SQL. Powodem, dla którego wybrałem Javę, a nie Perla, jest to, że a.) Lubiłem programować w Javie w szkole ib.) Java wydaje się być obecnie bardzo poszukiwana. Nie miałbym nic przeciwko byciu programistą Perla, ale wygląda na to, że wszystkie prace mają Perl jako "miło mieć" doświadczenie, a nie wymóg. Myślę, że moje pytanie brzmi, o jakie prace powinienem się ubiegać? Myślę, że mam wystarczającą wiedzę tylko do pracy typu początkującego/stażysty, ale będzie prawie niemożliwe dla mnie (osobiście) podjęcie pracy, która stanowi tylko 1/3 tego, co zarabiam teraz (90 000 $). Czy będę się śmiać, jeśli spróbuję ubiegać się o „prawdziwe” prace programistyczne, czy jest teraz takie zapotrzebowanie na programistów Java, że ktoś zechce dać mi szansę? Dziękuję za wszelkie rady. Bardzo chciałbym wprowadzić tę zmianę w ciągu najbliższych 6 miesięcy.


title: Dlaczego odradza się tworzenie zmiennych na bieżąco? PHP wyświetla komunikat o błędzie

text: Czy znacie te nieznośne błędy w PHP? Wiesz, te, które pojawią się, gdy zrobisz coś takiego: if($jaka_zmienna == 45) Ale jeśli $jaka_zmienna nie została jeszcze utworzona, PHP będzie wyglądać jak "Hej! Idioto! Ta zmienna nie została jeszcze zdefiniowana! " i wyświetla komunikat o błędzie na ekranie. Możesz jednak po prostu wyłączyć błędy powiadomień PHP za pomocą error_reporting(0), a aplikacja działa idealnie. Jaki jest sens? Kogo obchodzi, że zmienna nie została jeszcze utworzona? Dlaczego nie możesz po prostu utworzyć go w locie w instrukcji if? Wydaje mi się, że jest to prosty, bezmyślny sposób na zrobienie tego, ale najwyraźniej PHP odradza tę praktykę. Czemu? Wiele razy muszę robić coś takiego: if(isset($jaka_zmienna) && $jaka_zmienna == 45) Jeśli $jaka_zmienna nie jest ustawiona, instrukcja if automatycznie kończy się niepowodzeniem, więc drugi warunek if instrukcja nigdy nie jest sprawdzana, więc błąd powiadomienia nigdy się nie pojawia. Działa to świetnie, ale wydaje mi się, że nie powinno to być konieczne. Niektóre aplikacje, nad którymi pracuję, są ogromne i obawiam się, że dodatkowe dodatkowe warunki spowolnią mój biedny stary serwer, jeśli istnieją dziesiątki jego instancji w połączeniu z tysiącami użytkowników. Wiem, że jest to tylko jedna dodatkowa instrukcja, która brzmi O(1), co nie jest zbyt dużą ilością zasobów, ale nadal jest to coś, o co się martwię. Czy nie powinienem martwić się O(1), nawet jeśli hipotetycznie miałbym mieć tysiące użytkowników? Czy za bardzo zależy mi na wydajności? Wiem, że błędy PHP Notice można łatwo wyłączyć za pomocą error_reporting(0). Nie jestem pewien, czy niektóre typy błędów można włączać/wyłączać zgodnie z potrzebami, ponieważ nie badałem intensywnie error_reporting(). Moje pytanie brzmi, o co chodzi? Dlaczego odradza się tworzenie zmiennych na bieżąco? Wydaje mi się, że tworzenie zmiennych w locie może być nieco bardziej leniwe, ale jest 10000000x łatwiejsze do zaprogramowania i powinno być nieskomplikowanym sposobem na zrobienie tego. To ma być zarówno filozoficzne, jak i techniczne pytanie.


title: Czy zalecane jest przechowywanie śladów stosu w bazie danych?

text: Obecny system, nad którym pracuję, przechodzi przez zestaw dokumentów i wykonuje pewną logikę przy użyciu metadanych dokumentu. Jeśli metadane dokumentu są podejrzane... zgłasza wyjątek. System rejestruje wyjątek, kończy pracę niepowodzeniem i pozwala programiście naprawić problem, przeglądając logi przed przejściem dalej. Chcę zaimprowizować ten system, czyniąc system odpornym na błędy, ponieważ widziałem, że generalnie zadanie kończy się niepowodzeniem z powodu kilku dokumentów. System kontynuuje działanie, nawet jeśli zostanie zgłoszony wyjątek. Informacje o wyjątku będą przechowywane w tabeli bazy danych wraz z informacjami o dokumencie. Informacje te zostaną wysłane do programisty, który będzie mógł pracować nad ich naprawą bez oczekiwania klienta. Klient może później przetworzyć te nieudane dokumenty oddzielnie. Moje pytanie brzmi, jak przechowywać informacje o wyjątku w tabeli. Wyjątek byłby już zarejestrowany w pliku dziennika. Jednym z pomysłów, o którym myślałem, było przechowywanie sygnatury czasowej wyjątku, aby programista mógł później znaleźć sygnaturę czasową w pliku dziennika i zrozumieć wyjątek. Ale wiąże się to z możliwością usunięcia plików dziennika. Czy ma sens przechowywanie całego śladu stosu w bazie danych?


title: Czy to rozsądne, aby programiści sprintowali przez cały rok?

text: Wydaje się, że pracującym programistom nie wystarczy „spacerować” od 5 do 8 godzin dziennie, a „szybki spacer” to za mało, ale muszą „sprintować” codziennie, rok po roku. Dla firmy ma to sens, ponieważ aby jak najlepiej wykorzystać pracowników, bieganie przez cały dzień, dzień po dniu jest lepsze niż ludzie, którzy po prostu chodzą przez cały dzień. Tutaj porównuję nasze „sprinty” do normalnego dnia codziennego chodzenia i sprintu. Podczas gdy my możemy sprintować 100 metrów kilka razy, a nawet dwa tuziny razy dziennie, łącznie 15 sekund x 25, czy można sprintować cały dzień przez 5 godzin i dzień po dniu? Chodzi mi o to, czy nie jest bardziej sensowne sprintowanie przez 3 miesiące, a potem powrót do normalności, kiedy ludzie mogą po prostu „chodzić” lub „szybki spacer”, będąc produktywnym, przez resztę 9 miesięcy w rok? Lub sprintuj przez 3 miesiące, wracaj do normy na 3 miesiące, a potem sprintuj przez kolejne 3 miesiące i wracaj do normy na kolejne 3 miesiące? Na pewno ma to sens dla firmy, ponieważ jeśli ludzie mogą sprintować cały rok, to firma może zrobić wiele rzeczy, wypalić ludzi, a dopiero później zastąpić wypalonych innymi, świeższymi ludźmi (ewentualnie do zastąpienia). wykonawców) -- i to bardzo miłe określenie -- mamy ludzi sprintujących przez cały rok -- uzyskujemy „maksymalną” wydajność -- więc teraz dyrektorzy mogą mieć powody, by awansować na wiceprezesów . Naprawdę się zastanawiam, czy sprinty naprawdę powinny być całoroczne? Myślę, że w dawnych czasach, kiedy firmy takie jak Microsoft zmuszały ludzi do pracy 60 godzin tygodniowo, niektórzy opisywali je jako sklep z aksamitną potu. Ale jeśli zaczniemy mówić, że po prostu mamy sprinty (nie wspominając o tym, że są to sprinty przez 3 tygodnie, a zaraz za nimi kolejny i powtarza się w kółko przez cały rok), to brzmi to jak bardzo uzasadniona rzecz do zrobienia.


title: Jak zintegrować drugiego programistę ze startupem?

text: Jestem założycielem technicznym startupu i aktualnie szukam drugiego programisty do naszego produktu. Ponieważ jestem jedynym programistą, nie ma formalnej organizacji projektu i chciałem wiedzieć, jaka byłaby minimalna organizacja wymagana do włączenia drugiego programisty. W tej chwili kod jest tylko pod kontrolą źródła (rodzaj chaotycznego repozytorium git), ale brakuje mu testów jednostkowych i innych rzeczy, które są wymagane do poważnego rozwoju. Chciałem zrezygnować z nich przez chwilę ze względu na szybkość, ale teraz, gdy firma się rozwija, uważamy, że opóźnianie ich może być problematyczne. Jak włączyć tę drugą osobę do pracy z kodem?


title: Wysiewanie autouzupełniania (z formatem xml?)

text: **Problemem jest rozwój oparty na autouzupełnianiu**. Jak przekazać wskazówki autouzupełniania do IDE, gdy używam języków skryptowych, które zapewniają magiczne metody? Zwykle nie używam IDE. Ale oczywiste jest, że wielu programistów polega na nich, a pewien procent z nich polega na podpowiedziach autouzupełniania z IDE. Teraz Eclipse i Netbeans obsługują PHP i Python. Ale oczywiście nie są w stanie zobaczyć metod i atrybutów klas, które są dostarczane przez `__get/__` czy coś takiego. Podczas gdy magiczne metody czasami zapewniają ładniejszy i bardziej elastyczny interfejs API (i/lub oszczędzają kodowanie). W każdym razie jest to oczywiście problem, jeśli chcesz, aby API było widoczne dla programistów autouzupełniania. Jak więc to zrobić? Czy jest do tego format XML? Wiem, że Eclipse jest całkiem zadowolony z xml, ale nie mogłem znaleźć niczego użytecznego na ten temat. A co z Netbeans lub innymi IDE, czy istnieje jakiś ustandaryzowany schemat sygnalizowania informacji autouzupełniania edytorom kodu? (Byłoby miło, gdybyś mógł kuśtykać w metodach klas i atrybutach, ale także w podpowiedziach typu sygnału dla często używanych nazw zmiennych/obiektów.)


title: Przełączasz się między mobilną wersją aplikacji internetowej za pomocą Ionic Framework a wersją aplikacji internetowej na komputery stacjonarne?

text: Posiadam aplikację internetową, która korzysta z Twitter Bootstrap 3. Ułatwia to projektowanie wersji mobilnej, ponieważ oferuje kilka responsywnych funkcji. Jednak chciałbym mieć naprawdę natywny aspekt mobilny dla wersji mobilnej, ale nie natywny dla wersji desktopowej. Szukałem... i znalazłem **ten naprawdę obiecujący framework**: Ionic Wygląda na to, że ten framework jest naprawdę **skoncentrowany tylko na aplikacji mobilnej** i nie pasuje do żadnego innego frameworka, takiego jak Bootstrap (niewymieniony w dokumentacja). Dlatego moje pytania brzmią: Jaka powinna być strategia, aby zachować wersję komputerową (nie używając Ionic, ale bootstrap 3) i wersję mobilną używającą Ionic? Tworzysz dwie różne aplikacje UI? Jeden, który używałby Bootstrapa i drugiego Ionic? A co z duplikacjami?


title: Czy preprocesor definiuje spowolnienie czasu kompilacji?

text: Mam bardzo duży projekt c++ i próbuję skrócić czasy kompilacji. Byłem religijny, jeśli chodzi o przekazywanie deklaracji i włączanie tylko plików, które są używane. Jednak mam wiele definicji preprocesorów, które są konfigurowane w plikach projektu (tj. nie w plikach cpp lub nagłówkowych), dzięki czemu mogę przechowywać je wszystkie w centralnej lokalizacji dla moich różnych konfiguracji kompilacji. Czy to możliwe, że może to wydłużyć czas budowy? Czy przeniesienie definicji preprocesora do pliku nagłówkowego, aby były one uwzględniane tylko tam, gdzie jest to konieczne, przyspieszyłoby czas kompilacji? Wygląda na to, że czas kompilacji byłby szybszy, gdyby preprocesor nie musiał skanować i zastępować definicji plików, które nie używają żadnego z nich, ale nie jestem pewien, czy jest to warte wysiłku.


title: Obsługa złożoności w dużych projektach oprogramowania

text: Jestem głównym programistą w większych projektach programistycznych. Od czasu do czasu trudno jest poradzić sobie ze złożonością tego projektu. Np. * Miej cały czas na uwadze cały ogólny obraz * Śledzenie wyników pracy członków zespołu * Przeprowadzanie przeglądów kodu * Zarządzanie dostawami informacji itp. Czy istnieją najlepsze praktyki/techniki zarządzania czasem, aby poradzić sobie z tymi zadaniami? Czy są jakieś narzędzia, które pomogą Ci w uzyskaniu przeglądu?


title: Refaktoryzacja zajęć z ref do siebie

text: Jak mogę dokonać refaktoryzacji tego kodu? class Node { public Node Parent { get; ustawić; } } class AVLNode { public AVLNode Parent { get; ustawić; } } Próbowałem użyć dziedziczenia, ale potem muszę użyć rzutowania typu: class AVLNode : Node { } class Program { void Main() { AVLNode a = new AVLNode(); AVLNode b = a.Rodzic **jako AVLNode**; } }


title: Zwiększ rozmiar pliku mapowanego w pamięci

text: Utrzymuję plik mapowany w pamięci do przechowywania mojego drzewa, takiego jak struktura danych. Kiedy aktualizuję strukturę danych, mam ten problem. Plik jest ograniczony rozmiarem i nie może być za długi ani za mały. Mam metody takie jak void mapfile_insert_record(RECORD* /* rekord*/); void mapfile_modify_record(RECORD* /* rekord*/); Obie operacje mogą doprowadzić do przekroczenia wolnego miejsca w pliku pamięci. Jak to przezwyciężyć? Jakiej strategii powinienem użyć. 1. obliczyć, czy wymaga przekroczenia pliku jako warunku wstępnego w obu metodach. 2. Dynamicznie go przekraczaj, na przykład zarządzaj timerem i stale odpytuj plik o jego wolny dostępny rozmiar, a następnie automatycznie go rozszerzaj. Jakieś pomysły lub wzorce przezwyciężenia tego problemu?


title: OO Design, jak modelować Tonal Harmony?

text: Zacząłem pisać program w C++ 11, który analizowałby akordy, skale i harmonię. Największym problemem, jaki mam w fazie projektowania, jest to, że nuta „C” jest nutą, rodzajem akordu (Cmaj, Cmin, C7 itd.) i rodzajem klucza (klucz Cmajor, Cminor). Ten sam problem pojawia się z interwałami (moll tercja, dur tercja). Używam klasy bazowej Token, czyli klasy bazowej dla wszystkich "symboli" w programie. więc na przykład: class Token { public: typedef shared_ptr<Token> pointer_type; Token() {} wirtualny ~Token() {} }; class Polecenie : public Token { public: Command() {} pointer_type execute(); } klasa Uwaga : token publiczny; klasa Triada : token publiczny; klasa MajorTriad : publiczna triada; // CMajorTriad, etc class Klucz : public Token; klasa MinorKey : klucz publiczny; // Natural Minor, Harmonic minor itp. Skala klasy : token publiczny; Jak widać, utworzenie wszystkich klas pochodnych (CMajorTriad, C, CMajorScale, CMajorKey itp.) szybko stałoby się absurdalnie złożone, w tym wszystkie inne nuty, a także enharmoniki. dziedziczenie wielokrotne nie działałoby, tj.: klasa C : public Note, Triada, Key, Scale, klasa C, nie mogą być wszystkimi tymi rzeczami jednocześnie. Jest to kontekstowe, również polimorfowanie z tym nie zadziała (jak określić, które super metody wykonać? wywoływanie wszystkich konstruktorów super klas nie powinno się tutaj odbywać) Czy są jakieś pomysły projektowe lub sugestie, które ludzie mają do zaoferowania? Nie udało mi się znaleźć niczego w google w odniesieniu do modelowania harmonii tonalnej z perspektywy OO. Po prostu jest zbyt wiele zależności między wszystkimi koncepcjami tutaj.


title: Jak blisko dotarliśmy do automatyzacji pisania kodu?

text: I nie mam na myśli autouzupełniania lub automatycznych fragmentów kodu wstawianych przez współczesnych redaktorów, ani kodu polimorficznego. Ale jaki jest stan techniki w programach, które mogą przejść przez dane wejściowe i typy oraz informacje o pożądanych wyjściach i wyprowadzić poprawny fragment kodu w wybranym języku. Jestem świadomy programowania genetycznego, programowania ekspresji genów, ale nie znam żadnych innych wysiłków. Nieczęsto pojawia się też googlowanie. Czy ktoś zdaje sobie sprawę z postępów na tym froncie? Edycja: Kiedy mówię „wyprowadź prawidłowy fragment kodu”, mam na myśli sztuczną inteligencję lub coś podobnego, która wypracowuje logikę i przepływ kontroli i implementuje ją w języku imperatywnym. Tylko język imperatywny, bo to najtrudniejsza część. Niemniej jednak, jeśli znasz jakieś nowe języki, które są opracowywane w celu wspierania tego rodzaju idei, proszę wspomnij, ponieważ być może nasz obecny zestaw języków nie jest odpowiedni dla rodzaju wczesnej sztucznej inteligencji, na którą możemy się po raz pierwszy trafić.


title: Chcę sprzedawać swoją aplikację w sklepie Google Play, ale chcę, aby kod był open-source. Jakiej licencji powinienem użyć?

text: Chciałbym sprzedać skompilowany plik binarny mojej aplikacji na Androida w sklepie Google Play, gdy trafi on do produkcji. Jakiej licencji mogę użyć, aby uniemożliwić innym pobieranie mojego kodu źródłowego ze strony o otwartym kodzie źródłowym i sprzedawanie dokładnej kopii mojej pracy w Sklepie Play? Chcę, aby kod był darmowy i otwarty dla maniaków/hakerów do pobrania i zabawy, ale nie chcę, aby ludzie, którzy sprawdzają mój kod źródłowy, mogli używać go do celów komercyjnych.


title: Inspirujący ludzie

text: Więc pracuję z kilkoma osobami, które czuję, że są inteligentne, ale wydaje mi się, że nie radzą sobie dobrze. Po dłuższej pracy z nimi widziałem przebłyski blasku, ale przede wszystkim widzę poleganie na innych. Mam na myśli to, że w większości przypadków wydaje się, że w pierwszej chwili kłopotów proszą o pomoc. Teraz osobiście jestem za pomaganiem i spędzam znaczną część czasu pomagając innym we wszystkim, czego potrzebują, ale po pomaganiu innym tak długo, zauważyłem niepokojący trend. Ci ludzie wydają się przerażeni, że mogą popełnić błąd i dlatego nie próbują. Więc moje pytanie brzmi: jak mogę zmotywować kogoś, kto boi się popełnić błąd? W swojej karierze zawsze najwięcej uczyłem się popełniając błędy i ucząc się na nich. Osobiście czuję, że gdybym się tak wiele nie nauczyła, nigdy nie doszłabym tak daleko, jak doszłam. Więc jak mogę sprawić, by odkryli, że mają zdolność do samodzielnego zrozumienia tego i że jeśli popełnią błąd i nauczą się na nim, będzie im lepiej. Czuję, że jeśli uda mi się odkryć jakiś sposób, aby odpowiednio ich zmotywować, to nam wszystkim będzie lepiej.


title: Dlaczego C# ASP.NET nie jest ogólnie uważany za platformę szybkiego tworzenia stron internetowych?

text: Terminy „szybki rozwój sieci” są kojarzone z Pythonem/Django i ROR. Dlaczego tak nie jest w przypadku C# ASP.NET?


title: Czy słuszne jest ocenianie członków Scrum na podstawie liczby udanych ukończonych historyjek użytkownika?

text: Kiedy mój menedżer powiedział zespołowi, że „** _teraz udane historie użytkowników będą brane pod uwagę do oceny! _** „ Siedzieliśmy tam przez chwilę zszokowani i był to jeden z kilku momentów, w których opadła nam szczęka :-) Czuliśmy, że był głupim pomysłem, ponieważ zrujnuje to całą koncepcję i cel zwinnej metodyki rozwoju. Daj mi znać, co myślisz? i jak możemy go przekonać?


title: Typowy przykład producenta/konsumenta Qt: Jaki jest sens wielowątkowości?

text: Próbując dowiedzieć się, jak zaimplementować kolejkę producenta/konsumenta w Qt, natknąłem się na kilka odpowiedzi SO, blogi i witryny z linkami do tej witryny: Robisz to źle... Rozumiem, o co chodzi w tej witrynie, ale ludzie zazwyczaj odwołują się do przykładu kodu, który znajduje się w przywołanym blogu: Wątki bez bólu głowy Do bloga dołączony jest mały przykład kodu, którego rdzeń jest publikowany przez KornP w tej odpowiedzi SO: Qt moveToThread() vs wywoływanie nowego wątku, gdy używamy każdego Więc jeśli przyjrzymy się bliżej, mamy następujące zachowanie: 1. Producent P wytwarza przedmiot, podczas gdy Konsument C czeka na pojawienie się zdarzeń w swojej pętli zdarzeń. 2. P przekazuje wytworzone dane przez sygnał i powraca do biegu jałowego pętli zdarzeń. 3. C odbiera sygnał w swojej pętli zdarzeń i zużywa dane. 4. C emituje sygnał do wątku producenta i powraca do biegu jałowego pętli zdarzeń. 5. Zacznij od 1. Innymi słowy: podczas gdy P produkuje, C nic nie robi, a gdy C produkuje, P nic nie robi. Jaki jest sens posiadania **takiego** producenta i konsumenta w dwóch różnych wątkach? Czy pojedynczy wątek nie osiągnąłby dokładnie tego samego?


title: Wczesna próba usunięcia Pythona GIL skutkowała słabą wydajnością: Dlaczego?

text: **Ten post** od twórcy Pythona, Guido Van Rossuma, wspomina o wczesnej próbie usunięcia GIL z Pythona: > Próbowano tego już wcześniej, z rozczarowującymi wynikami, dlatego nie chcę wkładać w to wiele wysiłku ja. W 1999 Greg Stein (z Mark > Hammond?) wyprodukował widelec Pythona (zdaniem 1.5), który usunął GIL > zastępując go drobnoziarnistymi blokadami we wszystkich mutowalnych strukturach danych. Przesłał także łatki, które usunęły wiele zależności od globalnych struktur danych mutowalnych, co > zaakceptowałem. Jednak po testach porównawczych wykazano, że > nawet na platformie z najszybszym prymitywem blokującym (w tamtym czasie > Windows) spowolniło to wykonywanie jednowątkowe prawie dwukrotnie, co oznacza, że > na dwóch procesorach można uzyskać tylko niewiele więcej pracy wykonanej bez GIL niż > na pojedynczym procesorze z GIL. To nie wystarczyło i łatka Grega > odeszła w niepamięć. (Zobacz opis Grega na temat występu.) Nie mogę się spierać z faktycznymi wynikami, ale naprawdę zastanawiam się, dlaczego tak się stało. Przypuszczalnie głównym powodem, dla którego usunięcie GIL z CPythona jest tak trudne, jest system zarządzania pamięcią zliczania odwołań. Typowy program w Pythonie będzie wywoływał **`Py_INCREF`** i **`Py_DECREF`** tysiące lub miliony razy, co czyni go kluczowym punktem spornym, gdybyśmy mieli otoczyć go blokadami. Ale nie rozumiem, dlaczego dodanie atomowych prymitywów spowolniłoby program z jednym wątkiem. Załóżmy, że właśnie zmodyfikowaliśmy CPythona, tak aby zmienna refcount w każdym obiekcie Pythona była atomowym prymitywem. A potem po prostu wykonujemy atomową inkrementację (instrukcja „pobierz i dodaj”), gdy musimy zwiększyć liczbę odwołań. Dzięki temu zliczanie odwołań w Pythonie byłoby bezpieczne dla wątków i nie powinno mieć żadnego spadku wydajności w przypadku aplikacji jednowątkowej, ponieważ nie byłoby rywalizacji o blokadę. Niestety, wielu ludzi mądrzejszych ode mnie próbowało i poniosło porażkę, więc najwyraźniej czegoś tu brakuje. Co jest nie tak ze sposobem, w jaki patrzę na ten problem?


title: Gruboziarnisty zdalny interfejs a hermetyzacja logiki biznesowej

text: Piszę usługę sieciową, która będzie wykorzystywana przez klienta mobilnego. Klient mobilny musi wykonać kilka powiązanych ze sobą kontroli wymagań, aby określić, czy użytkownik może zainicjować żądanie, a jeśli tak, jakiego typu. Jeśli którakolwiek z kontroli zakończy się niepowodzeniem, użytkownik zostanie przekierowany do interfejsu użytkownika z wyjaśnieniem, dlaczego. Nie mogę zdecydować, czy należy uwidocznić operację dla każdego sprawdzenia w mojej usłudze sieci Web, czy uwidocznić pojedynczy interfejs, który po prostu zwraca wszystkie wyniki sprawdzania w jednym DTO. Czy gruboziarnisty interfejs jest przedwczesną optymalizacją? Zawsze mogę zapewnić zarówno interfejs drobnoziarnisty, jak i gruboziarnisty, ponieważ interfejs gruboziarnisty będzie używał lokalnych metod drobnoziarnistych do zbudowania swojego DTO.


title: Jakie masz doświadczenie w pracy dla firmy outsourcingowej IT w usługach profesjonalnych i/lub usługach zarządzanych?

text: Jestem z Wielkiej Brytanii. Mam około 4 lata doświadczenia w pracy dla dużej europejskiej firmy outsourcingowej IT. Ta firma została podzielona na dwie części; profesjonalna obsługa i zarządzana usługa. Pracowałem tylko w usługach zarządzanych i było dużo problemów z zasobami dotyczącymi spełnienia oczekiwań klienta i było wiele konfliktowych priorytetów. Nie podobało mi się to, że było wiele kłótni ze wszystkimi stronami wewnętrznymi i konfliktu interesów z klientami zewnętrznymi, kwestiami prawnymi itp. Myślę teraz, że być może jako pracownik nie chcę pracować w outsourcingu IT firmy i po prostu pracować dla firmy, która zajmuje się własnymi usługami IT. Zastanawiam się, jakie było twoje doświadczenie? Czy pracujesz lub pracowałeś w usługach profesjonalnych lub usługach zarządzanych? jakie było twoje doświadczenie? Czy pracowałeś w obu usługach i jakie są twoje preferencje? Czekamy na Twoje odpowiedzi.


title: Uruchamianie SQL Server Express na Micro/Extra Small VM

text: Badam opcje uruchamiania małej chmury Windows Server (albo AWS EC2 Micro lub Azure Extra Small). Serwer nie zostanie mocno uderzony, ale muszę uruchomić prostą relacyjną bazę danych, która spodziewam się, że będzie średniej wielkości - prawdopodobnie kilka tabel z kilkoma setkami tysięcy rekordów i uruchamianie kilku tysięcy zapytań dziennie, aby agregować dane. Najbardziej znam SQL Server, więc zamierzam używać SQL Express. Jednak specyfikacje systemu są znacznie poniżej zalecanych wartości dla SQL 2012 Express. Rok 2008 jest trochę lepszy, ale wciąż nie najlepszy. Czy ktoś ma doświadczenie (dobre lub złe) z uruchamianiem programu SQL Server Express na jednym z tych serwerów? Zdecydowanie przeprowadzę kilka testów przed podjęciem decyzji, ale z powodu niespójności, która towarzyszy tym wspólnym rozwiązaniom komputerowym, nie mogę być pewny po jednej lub dwóch sesjach testowych, więc niepotwierdzone dowody byłyby świetne. Jeśli SQL Server nie działa dobrze, zajmę się innymi rozwiązaniami – wygląda na to, że Postgres działa dobrze na słabym serwerze, może MySQL lub jednym z jego forków, lub być może hosting bazy danych w chmurze, taki jak Azure SQL Databases.


title: jak zarządzać nowymi zmiennymi prywatnymi wprowadzanymi do klasy?

text: Ilekroć chcę dodać nową funkcjonalność, wprowadzam do klasy nową zmienną prywatną. Zadeklaruj to tuż nad pierwszą definicją metody. zostaw mały komentarz. Ustaw to w określony sposób. A następnie użyj tej ustawionej wartości w innej metodzie. Teraz możliwe problemy, które się pojawiają, to nie omawiam wszystkich możliwych przypadków, w których należy modyfikować wartość tej zmiennej i zauważam w niej błąd tylko podczas próbowania różnych możliwych przepływów użytkownika w oprogramowaniu. Czy istnieje sposób na powiązanie tej wartości z niektórymi rodzajami wyzwalaczy, aby poznać wszystkie możliwe sytuacje, w których należy zmodyfikować jej wartość? Używam Javascript. Dla m.in. Tworzę komunikat o stanie do edycji istniejącego rekordu bazy danych. Jeśli aktualizacja nie powiodła się przez REST HTTP, ustawiam status. Teraz zapomniałem zresetować status, gdy nie naciskam przycisku aktualizacji i zamiast tego wybieram inny rekord do aktualizacji. Jaki jest najlepszy sposób zarządzania takimi nowymi zmiennymi prywatnymi? Jak zarządzać ich stanem? jaki jest najlepszy sposób inżynierii oprogramowania, aby zapobiec takim błędom?


title: Implementacja warstwy transportowej dla SIP UAC

text: Mam dość proste, ale konkretne pytanie dotyczące implementacji warstwy transportowej dla SIP UAC. Czy oczekuję odpowiedzi na żądanie w tym samym gnieździe, do którego wysłałem żądanie, czy też pozwalam odbiornikowi UDP lub TCP odebrać odpowiedź, a następnie skierować ją do właściwej transakcji z tego miejsca? RFC wydaje się nie mówić nic w tej sprawie. Wydaje się, że zwłaszcza przy użyciu UDP, który jest bezpołączeniowy, powinienem pozwolić słuchaczom odebrać odpowiedź, ale wydaje się to trochę sprzeczne z intuicją. W szczególności widziałem wiele implementacji UAC, które nie zależą od posiadania odbiornika w warstwie transportowej. Ponadto większość implementacji, na które się przyjrzałem, w ogóle nie ma pętli odbiorczej UAS na gnieździe. Sugerowałoby to, że klient nie powinien oczekiwać odpowiedzi w gnieździe, do którego wysłał żądanie. Dla wyjaśnienia: Załóżmy, że moja warstwa transportowa składa się z następujących elementów: TCPClient (Wysyła żądania UAC przez TCP) UDPCient (Wysyła żądania UAC vid UDP) TCPSever (Odbieranie w pętli Żądania i wysyłanie do warstwy transakcyjnej przez TCP) UDPServer (Odbieranie w pętli Żądania i wysyłka do warstwy transakcyjnej przez UDP) Oczywiście *Klient wysyła moje Żądania. Pytanie brzmi, co otrzymuje odpowiedź? *Klient oczekujący na wywołanie recv lub recvfrom w gnieździe użytym do wysłania żądania lub *Server? I odwrotnie, *Server odbiera moje żądania, Co wysyła odpowiedź? Klient? czy to nie łamie trochę ról każdego członka? **Aktualizacja** Zrobiłem przechwytywanie pakietów w transakcji SIP Invite pomiędzy Ekiga a serwerem PolyCom. Ekiga była klientem, a Polycom serwerem. W zaproszeniu Ekiga użyła portu 5060 w nagłówku via. 5060 to port, na którym nasłuchuje UAS, więc wydaje się to wskazywać, że UDPServer odbiera odpowiedzi na wszystkie żądania, a nie UDPClient, który wysłał żądanie. Czy to słuszne rozumowanie?


title: Jak przyspieszyć tworzenie aplikacji internetowej Java?

text: Jestem nowym programistą w dość dużej firmie i pracuję nad aplikacją Java Web ze starszym programistą. Aplikacja internetowa jest zbudowana na stosie IBM (RAD, DB2, WebSphere) i zasadniczo wykorzystuje JSP i serwlety. Web App to wewnętrzne narzędzie wykorzystywane przez pracowników do zarządzania danymi pochodzącymi z plików Excel. Tak więc istnieje wiele interakcji z bazą danych, takich jak polecenia SQL. Moje pytanie brzmi: Nie wiem zbyt wiele o JavaEE jako całości, a jedynie trochę o JSP i Servletach, i chciałbym przyspieszyć, abym mógł zrozumieć i przyczynić się do rozwoju aplikacji internetowej tak szybko, jak to tylko możliwe. Na jakie zasoby (samouczki, linki itp.) powinienem zwrócić uwagę? Mam dostać książkę o JavaEE lub coś, co skupia się tylko na JSP i Servletach? EDYCJA: To, co dobrze wiem, co moim zdaniem jest istotne: * Java SE * Koncepcje zorientowane obiektowo * Niektóre JSP i serwlety, które właśnie ukończyłem, więc nie mam jeszcze szerokiej wiedzy na temat frameworków i tym podobnych, ale spędzam dużo czasu czas na czytanie blogów i pracę nad małymi programami (niekoniecznie w Javie, bardziej w Pythonie).


title: Jak powinny być obsługiwane polecenia Add/Create* w architekturze CQRS + Event Sourcing

text: Chcę zaimplementować moją pierwszą aplikację przy użyciu wzorca CQRS wraz z Event Sourcing. Zastanawiam się, jak właściwie postępować z tworzeniem korzeni agregatowych. Powiedzmy, że ktoś wysyła polecenie CreateItem. Jak się z tym obchodzić? Gdzie powinno być przechowywane wydarzenie ItemCreated? Jako pierwsze wydarzenie nowego przedmiotu? A może powinienem mieć jakąś encję ItemList, która agreguje wszystkie elementy, a jej lista zdarzeń składa się tylko ze zdarzeń ItemCreated? Udi Dahan sugeruje, aby nie tworzyć zbiorczych korzeni i zawsze używać zamiast tego jakiejś metody pobierania. Ale jak mogę pobrać coś, co jest nowe i na pewno nie ma przypisanego identyfikatora. Rozumiem kryjącą się za tym ideę i całkiem rozsądne jest sądzić, że nowy obiekt to obiekt, którego stan składa się z zerowych zdarzeń, na które odpowiedziało na niego. Ale jak go używać? Czy powinienem mieć odrębną metodę w moim repozytorium, taką jak `getNewItem()`, czy zamiast tego sprawić, by moja metoda `get(id)` akceptowała `Optional<ItemId>`? Edit: Po pewnym czasie kopania znalazłem naprawdę ciekawą implementację wspomnianych wzorców z wykorzystaniem aktorów. Autor zamiast tworzyć agregat, pobiera go z jakiegoś repozytorium z nowo utworzonym UUID. Wadą tego podejścia jest to, że dopuszcza on stan przejściowej niespójności. Zastanawiam się też, jak przy takim podejściu mogę zaimplementować metodę `delete`. Wystarczy dodać usunięte zdarzenie do listy zdarzeń agregatu?


title: Skąd mam wiedzieć, czy naruszam MVVM z WPF?

text: Niedawno pobierałem automatycznie wygenerowany TreeViewItem z zagnieżdżonego węzła TreeView w WPF i używałem ItemContainerGenerator, aby uzyskać go w kodzie. Potem pomyślałem, że na pewno teraz naruszam MVVM. Jakie są inne oznaki, że ktoś narusza MVVM?


title: .NET - kod refaktoryzacji

text: Odziedziczyłem i dalej rozwijam dużą aplikację składającą się z aplikacji ASP.NET, aplikacji VB6 i VB.NET. Oprogramowanie było kiepsko napisane. Próbuję zrefaktoryzować kod w miarę postępów. Wprowadzane przeze mnie zmiany nie są aktywne (są zawarte w folderze na moim komputerze deweloperskim). Okazuje się, że jest to czasochłonne i robię to obok innych prac, które są priorytetem. Moje pytanie brzmi: czy jest to praktyczne podejście, czy istnieje lepsza metodologia refaktoryzacji kodu? Nie mam żadnego doświadczenia z oprogramowaniem do kontroli wersji ani oprogramowaniem do kontroli źródła i zastanawiam się, czy tego mi brakuje. Jestem jedynym programistą.


title: Zależnie pisany język najlepiej dopasowany do programowania „w świecie rzeczywistym”?

text: Które _w zależności od typu_ języki programowania mogą być używane do _rozwoju aplikacji_ w świecie rzeczywistym? Na początku będę głównie pisał aplikacje-zabawki, potem może programowanie stron internetowych lub prosty DBMS. Oto kilka punktów, które moim zdaniem są ważne: * dokumentacja * przykładowe programy * dobra/duża standardowa biblioteka * łatwy w użyciu interfejs funkcji obcych * społeczność ludzi używających języka do zadań w świecie rzeczywistym * wsparcie narzędzi Wiem, że obecnie nie ma języka, który spełniałby wszystkie te wymagania. Chciałbym wiedzieć, który jest najbliższy.


title: Budowanie warstwy prezentacji bezpośrednio na warstwie danych

text: W mojej aplikacji panuje obecnie spory bałagan i staram się to wszystko rozplątać. Mój obecny pomysł jest taki, że powinienem mieć 3 oddzielne warstwy: * warstwę danych, która wie, jak przechowywać dane w bazie danych (i radzić sobie ze zmianami schematu danych, więc nie jest to tak banalne) * warstwa domeny (czy to poprawna nazwa?), która robi wszystko magia zmiany obiektów i przetwarzania zdarzeń wywołanych żądaniami użytkownika * warstwa prezentacji, która wie, jak pokazać użytkownikowi tylko to, co ten użytkownik może wiedzieć (niektóre dane są ukryte przed użytkownikiem tylko dlatego) Moim początkowym pomysłem było to, że posiadanie obiektu danych może zbudować z niego obiekt domeny, a następnie zbudować obiekt widoku z tego, a następnie udostępnić go użytkownikowi. Jednak teraz myślę o budowaniu obiektu widoku bezpośrednio z obiektu danych. * Jeśli użytkownik po prostu pyta o jakieś informacje, pobieram dane z bazy danych, otrzymuję ich ładną prezentację, a następnie udostępniam je użytkownikowi. W ogóle nie dotykając warstwy domeny. * Jeśli użytkownik wykonuje akcję, pobieram dane, buduję z nich modele, wykonuję interakcję z magicznym obiektem, zapisuję wszystko z powrotem w warstwie danych, a następnie zawijam w prezentację i wyświetlam. Jak zły jest taki projekt? Niestety nie jestem dobrze zorientowany w terminologii architektury oprogramowania/projektowania, więc mogę nie znaleźć odpowiedzi tylko dlatego, że nie wiem, jak nazwać rzeczy. Edycja: nie mam na myśli całkowitego odrzucenia części Model. Chodzi mi tylko o to, że będę miał Model siedzący na Danych i Widok na Danych.


title: Gdybyś musiał odbudować Pandorę od zera, jaki stos technologiczny byś wybrał?

text: Wymagania: * wiele różnych doświadczeń użytkownika: strona internetowa, telefon komórkowy, itp. * zarządzanie użytkownikami, rejestracja, role * duża ilość metadanych muzycznych * wyszukiwanie genomu w celu znalezienia najbliższej muzyki * publiczne i prywatne API RESTful dla wszystkich funkcji * ogromna skala usług po stronie serwera


title: Jak znajdujesz czas na pracę nad projektami Open Source?

text: Trochę tła: mam mały projekt open source, od którego zacząłem, podstawowy framework, który zapewnia obiektowe sposoby generowania kodu HTML (ponieważ tak naprawdę nie lubię HTML, a lubię PHP) . Ma wydane źródło i kilka pobrań, ale przede wszystkim projekt jest dla mnie, a część Open Source jest po prostu korzyścią uboczną. Oryginalny projekt, który sprawił, że mogłem się rozwijać w tym projekcie, w większości przeszedł na razie w stan hibernacji, co oznacza, że cały rozwój, który mogę w nim zatopić w tym momencie, to tylko czas osobisty. Niestety, obecnie pracuję na studiach licencjackich, uczę się do certyfikatów, aw domu mam trzymiesięczne dziecko. Krótko mówiąc, kiedy docieram do „swojego czasu”, rzadko mam ochotę na pracę, ale zwykle mam ochotę po prostu odpocząć. Tak więc, jeśli jest ktoś inny, kto czuje, że jest w podobnej sytuacji, jakich strategii użyłeś, aby utrzymać motywację do pracy nad projektem? Naprawdę chciałbym przynajmniej móc nad tym pracować, dopóki nie będę miał 100% pokrycia specyfikacji, ale nie zadeklarowałem źródła od miesięcy. Ktoś, kto może pomóc?


title: Co jest w imieniu? Wersja a znacznik czasu

text: Najwyraźniej nazywanie rzeczy jest jedną z najtrudniejszych rzeczy w programowaniu..! Mam implementację synchronizacji, która używa sygnatur czasowych (liczba sekund od epoki uniksowej) do synchronizacji. Obecnie sygnatury czasowe po prostu zastąpiły starsze pole wersji. Moje pytanie brzmi, czy jest sens nazywać to „Wersją” czy też „Znacznik czasu” jest lepszy? Wersja ma dla mnie sens, ponieważ to jest używane do wersji encji — aby wiedzieć, co jest tworzone, aktualizowane, usuwane. Ale gdybym musiał w przyszłości zwiększyć szczegółowość pola wersji (tj. aby stać się ułamkiem dziesiętnym, aby uwzględnić ułamki sekundy), nie byłbym pewien, czy wersja dziesiętna miałaby sens. Z drugiej strony, być może chcę w przyszłości odejść od znaczników czasu (tj. do numerów sekwencyjnych), w którym to przypadku zmiana miałaby sens.


title: Kiedy używać DAG (Directed Acyclic Graph) w programowaniu?

text: Niedawno znalazłem framework o nazwie ecto. W tym kontekście podstawowy składnik nazwany „plazmą”, który jest ekto-kierowanym grafem acyklicznym. Zastanawiam się, jaka jest zaleta tego mechanizmu, aw jakich innych sytuacjach możemy wykorzystać koncepcję DAG?


title: Czy funkcje powinny być przygotowane na nakładające się bufory?

text: Mam więc funkcję w C w ten sposób: void crunch(const char *in, char *out, size_t inLen, size_t outLen) { //... } Jeśli dwa bufory nakładają się, funkcja może zepsuć bufor wejściowy jako dobrze, generując dane wyjściowe. * Jaka jest ogólna praktyka? * Czy powinienem zawsze brać pod uwagę nakładanie się buforów podczas implementowania takich funkcji? * Czy mam założyć, że użytkownik nie będzie przechodził przez nakładające się bufory? * Czy powinienem zawsze dokumentować, czy funkcja działa dobrze, czy nie z nakładającymi się buforami?


title: Czy istnieją wytyczne dotyczące zdarzeń SOA i transferów plików w kontekście SOA?

text: Jesteśmy częścią wdrożenia SOA. W przypadku niektórych zmian w naszym systemie publikujemy zdarzenia za pośrednictwem magistrali korporacyjnej. Architekci poinformowali jednak, że niektóre masowe zmiany danych powinny przechodzić przez płaski plik (generowany przez nasz system) i obsługiwane (przenoszone między serwerami) przez oprogramowanie pośredniczące, ponieważ chcą uniknąć przeciążenia magistrali danymi. (Byłoby dla nas możliwe opublikowanie jednego wydarzenia zawierającego wszystkie zmiany, w przeciwieństwie do wielu pojedynczych wydarzeń, które działałyby znacznie lepiej, ale z jakiegoś powodu tego nie chcą). Ostatnio pojawił się spór o produkowany przez nas cennik. Pierwotnym wymaganiem od nas było codzienne tworzenie płaskiego pliku (co byłoby znacznie prostsze niż przekazywanie zmian cen w czasie rzeczywistym). W tym scenariuszu zwalczyliśmy wymagania systemu konsumenckiego, aby dostosować dane w określony sposób. Naszym argumentem jest to, że w kontekście SOA nasze dane wyjściowe powinny być niezależne od konsumentów, więc dopóki zawierają niezbędne dane, mogą zostać przekształcone przez oprogramowanie pośredniczące w wymagany format docelowy. Teraz jednak ponownie interweniowała architektura, mówiąc, że opublikowanie cennika to wydarzenie, które mogłoby/powinno się odbyć autobusem. Nie jesteśmy pewni, czy się z tym zgadzamy i dlaczego w przypadku zmian masowych, o których mowa powyżej, akceptowalny jest transfer plików, który skutecznie omija magistralę. Myślę, że moje pytanie jest wielorakie: * Czy istnieją wytyczne dotyczące tego, jakie dane powinny być zawarte w zdarzeniu w kontekście SOA? * Czy jest miejsce na transfery plików w architekturze sterowanej zdarzeniami? Jeśli tak, to czy moje założenie jest poprawne, że możemy eksportować plik zawierający informacje o cenach w naszym własnym formacie i pozostawić to do przekształcenia przez oprogramowanie pośredniczące?


title: Zrozumienie algorytmów rozwiązywania ograniczeń numerycznych

text: Jako ćwiczenie edukacyjne zamierzam zaimplementować narzędzie do rozwiązywania ograniczeń od podstaw. Ponieważ jednak ta dziedzina jest dla mnie zupełnie nowa, nie mam pojęcia, od czego zacząć badania w tle. Problemy, które staram się rozwiązać, to głównie zbiory nierówności, takie jak `a < b && b < c`, gdzie `a`, `b`, `c` są liczbami całkowitymi. (Chociaż prawdopodobnie nie ma to związku z pytaniem na tym etapie, zamierzam później rozwiązać problemy z innymi typami liczbowymi). Algorytmy, którym do tej pory się przyjrzałem, należą głównie do kategorii _odgałęzienie i powiązanie_ oraz _odgałęzienie i cięcie_. Jeśli jednak szukam ogólnego, wydajnego algorytmu, czy to jest to, na co chcę patrzeć? Bardzo pomocne byłoby otrzymanie tutaj kilku wskazówek.


title: Scrum: Bazowa historia szacowania punktowego

text: Aby oszacować PBI, musisz wybrać przeciętną historię i przypisać jej liczbę punktów (na przykład 5). Następnie porównujesz wszystkie inne historie z tą historią i odpowiednio przydzielasz punkty. Moje pytanie brzmi, czy naprawdę powinieneś porównywać każdą historię z tą oryginalną historią z początku projektu? Jeśli nie, to w jaki sposób upewniasz się, że skala pozostaje mniej więcej spójna w całym projekcie? Dziękuję.


title: Jako programista C#, ile „zaawansowanej” Javy potrzebuję do programowania na Androida?

text: Jestem profesjonalnym deweloperem platformy .NET -C#-, zainteresowanym tworzeniem oprogramowania dla systemu Android. Chciałbym wiedzieć, czy naprawdę muszę najpierw przeczytać książkę lub dwie o Javie (np. Java For Programrs 2nd), czy też powinienem móc po prostu wziąć książkę o Androidzie (np. Pro Android 3) i być w stanie - w większości - obejść go bez większego zamieszania. **Uwaga 1** : Java nie jest dla mnie w 100% nowa. Do celów testowych wcześniej zrobiłem kilka bardzo podstawowych aplikacji konsolowych i aplikacji webowych. **Uwaga 2** : Nie próbuję w najbliższym czasie przejść z platformy .NET na Java/Android. Chcę tylko tworzyć aplikacje dla siebie i tej wspaniałej społeczności. :)


title: Algorytm wykrywania nakładania się wektorów

text: Obecnie pracuję nad programem matematyczno-fizycznym i muszę obliczyć, czy dwa wektory nakładają się na siebie, jeden jest pionowy, a drugi poziomy. Czy jest jakiś szybki algorytm, aby to zrobić, ponieważ to, co do tej pory wymyśliłem, ma wiele powtórzeń. Np. powiedzmy, że mamy wektor V1((0,1),(2,1)) i V2((1,0),(1,2)) gdzie pierwszy nawias to współrzędne początkowe, a drugie współrzędne, które wektor osiąga. Chcę w rezultacie przyjąć, że nakładają się na (1,1) Jak dotąd jedynym pomysłem, jaki wpadłem, jest „rozwinięcie” każdego wektora do listy punktów, a następnie porównanie list, np. dla V1 jego lista byłaby (0,1) (1,1) (2,1)


title: Dlaczego prawo Moore'a jest postrzegane jako prawda absolutna?

text: Często czytam takie rzeczy jak: „Intel stwierdził, że albo następne pokolenie, albo następne pokolenie prawdopodobnie nie spełni prawa Moore'a”. Dlaczego po prostu nie powiedzą, że prawo Moore'a upadnie? Nie wiem, dlaczego jest utrzymywany jako jakiś standard, który musi być przestrzegany? Dlaczego nie dążyć do jak największego postępu, zamiast ograniczać się arbitralnymi oczekiwaniami?


title: Czy pytania programistyczne dotyczące rozwiązywania problemów są przydatne do poprawy ogólnych umiejętności programowania?

text: Na przykład: * * * Inauguracyjna Międzynarodowa Olimpiada we Frogleaping odbywa się w Australii w 2013 roku i jesteś zdeterminowany, aby wygrać. Chociaż nie chcesz mieć nic wspólnego z takimi oślizgłymi, nerwowymi stworzeniami, planujesz wejść do robota podobnego do żaby, o którym wiesz, że będzie szybszy niż wszystkie inne organiczne. IOF odbywa się w dużym stawie, w którym znajduje się sekwencja płatków lilii ułożonych w długą linię. Zasady wyścigu są proste: twoja żaba zostanie umieszczona na pierwszej lilii, potem musi przeskoczyć do drugiej lilii, potem do trzeciej i tak dalej, aż dotrze do ostatniej lilii na trasie. Zwróć uwagę, że nie możesz "pominąć" poduszek do lilii — na każdą poduszkę do lilii należy wskoczyć dokładnie raz. Pierwsza żaba, która dotrze do ostatniego liliowca, wygra wyścig. Ponieważ twoja robotyczna żaba ma superszybkość, jesteś pewny swojego zwycięstwa. Jednak twoja żaba ma jedną drobną niepoprawną wadę - jest w stanie skoczyć tylko o jedną stałą odległość. Konkretnie, może skoczyć tylko o dokładnie K metrów do przodu od aktualnej lokalizacji, nawet jeśli wyląduje w wodzie (gdzie natychmiast się zwarcie). Ponieważ początkowe pozycje lilii mogą uniemożliwić twojej żabie dotarcie do ostatniej lilii, planujesz odwrócić uwagę i przesunąć liliowce tak, aby były oddalone od siebie o dokładnie K metrów, umożliwiając żabie przeskoczenie od pierwszego do ostatni bez wpadania do wody. Przesunięcie lilii o jeden metr zajmie ci jedną sekundę, a im dłużej spędzisz ukradkiem przesuwanie lilii, tym bardziej prawdopodobne jest, że sędziowie IOF zauważą i zdyskwalifikowają cię z zawodów. Biorąc pod uwagę początkowe odległości między liliami w trakcie kursu, musisz napisać program, który obliczy minimalny czas, jaki będziesz musiał poświęcić na przesuwanie lilii w taki sposób, aby wszystkie pary kolejnych lilii znajdowały się w odległości dokładnie K metrów. Można założyć, że oczko wodne jest na tyle długie, że pierwszą lilię można przesunąć o dowolną odległość do tyłu, a ostatnią liliowiec można przesunąć o dowolną odległość do przodu. # Wejście Twój program powinien czytać z pliku frogin.txt. Pierwszy wiersz tego pliku będzie składał się z dwóch liczb całkowitych oddzielonych spacjami N i K. Kolejne wiersze N-1 będą zawierały początkowe odległości między kolejnymi parami lilii. W szczególności, i-ty wiersz będzie zawierał jedną liczbę całkowitą reprezentującą odległość między i-tym a (i+1)-tym padem lilii. # Wyjście Twój program powinien zapisywać do pliku frogout.txt. Twój plik wyjściowy powinien składać się z jednego wiersza zawierającego jedną liczbę całkowitą: minimalny całkowity czas spędzony na przesuwaniu lilii, aby zapewnić Ci zwycięstwo. * * * To jest przykładowy problem z Australijskiej Olimpiady Informatycznej, na który zdarzyło mi się natknąć przeszukując internet. Ale nie wierzę, że jakiekolwiek problemy związane z programowaniem, które nie mają bezpośredniego związku z rzeczywistymi sytuacjami, będą miały jakikolwiek pomocny wpływ na zdolność programowania w świecie rzeczywistym. Czy będą?


title: Czym są i jak działają typy (dane-)?

text: 1. Co to jest „zmienna”/typ danych? 2. Jak kompilator / interpreter obsługuje typy? Moja konkretna troska dotyczy różnych typów języków niższego i wyższego poziomu. Na przykład w Pythonie, ponieważ `list` jest naprawdę elastyczny. Możesz to po prostu zdefiniować i umieścić w czasie wykonywania, co tylko chcesz. * `int`s * `float`s * `str`ings * `set`s * nawet inne `list`s Zasadniczo obiekty dowolnego typu (jeśli się nie mylę). Więc wyobrażam sobie `list` jako klasę napisaną w C z naprawdę dużą ilością rzeczy, dynamiczną alokacją pamięci i tak dalej i tak dalej, aby obsłużyć to wszystko. * Czy to prawda? * ..i czy to oznacza wszystkie te n.p. g. Typy Pythona są klasami C? * Więc jakie są typy w C? * Czy są to „klasy”? * ..lub w jakiś sposób związane z kodem asemblera? PS: Nie szukam dokładnych, ilustracyjnych wskazówek i odpowiedzi, a nie szerokiego, wyczerpującego wyjaśnienia. Oraz: To pytanie nie jest związane z „W Pythonie nie ma zmiennych, ale identyfikatory”.


title: Szaleństwo hasła! Zalecane podejścia do zarządzania hasłami w wielu systemach klienckich?

text: Firma programistyczna, z którą współpracuję, ma produkt internetowy, który z powodzeniem sprzedaje klientom. Wszyscy ci klienci mają z nami umowę wsparcia, która zazwyczaj wymaga od nas dostępu do ich serwerów, baz danych i danych aplikacji. Wraz ze wzrostem liczby klientów (i liczby różnych osób obsługujących tych klientów) widzimy potrzebę lepszego zarządzania w szczególności **hasłami** , ale ogólniej wszystkie informacje potrzebne do pełnej obsługi systemów klienckich tj. Adresy URL, dane logowania do aplikacji, adresy IP, wszelkie dziwne rzeczy specyficzne dla klienta itp. Te dane zmieniają się coraz szybciej, ponieważ systemy są przenoszone na różne komputery, adresy IP. Najgorszym problemem są hasła superużytkownika do aplikacji. Te nieustannie się zmieniają i czasami znajdujemy się w sytuacji, w której wydaje się, że nikt nie wie, kto dokonał ostatniej zmiany. Jest to wyraźnie niezadowalająca sytuacja. Istnieją **procedury**, które mówią, że zmiany hasła itp. muszą być udokumentowane w centralnym, bezpiecznym miejscu. Ale oczywiście ludzie, którzy są ludźmi, czasami zapominają o udokumentowaniu tych rzeczy. Niebezpieczeństwo polega na tym, że kiedy ludzie będą mieli dość chaosu związanego z hasłami, może dojść do sytuacji, w której hasło każdego z nas to „ _password123_ ”, ponieważ nie można im już więcej zawracać głowy. Oprócz egzekwowania procedur, jakie inne podejścia moglibyśmy zastosować? Jedną z sugestii, jaką słyszałem, było posiadanie „ukrytego” superużytkownika aplikacji, którego hasło można łatwo zapamiętać/wyprowadzić, o czym wiedziałby tylko personel pomocniczy. Osobiście uważam, że to rozwiązanie jest przerażającą luką w zabezpieczeniach, zwłaszcza gdy masz wielu klientów korzystających z twojego oprogramowania. Jak więc poradziłbyś sobie z tą sytuacją, gdybyś wspierał wielu klientów? Bardziej rygorystyczne egzekwowanie procedur czy techniczne podejście ułatwiające wszystkim życie?


title: Czego powinienem się nauczyć, aby zostać programistą backendowym?

text: Chcę być web developerem i ponieważ nie chcę zajmować się projektowaniem (i tego typu rzeczy), więc pomyślałem, że powinienem zostać backend developerem (również bardziej odpowiednim ze względu na mój kurs, np. b.tech w informatyce). Więc szukałem w Internecie wielu rzeczy. Ale jestem zdezorientowany, co mam wybrać? 1. Python (uczestniczył w warsztatach dotyczących django wyglądał na łatwy, ale myślę, że jest to umierający język, ponieważ adopcja Pythona 3 jest bardzo powolna) 2. Ruby 3. node.js 4. Java (framework Play) 5. .Net Obecnie jestem w mój drugi rok, co oznacza, że mam całe 3 lata na naukę języka do momentu złożenia podania o pracę. Chcę się nauczyć czegoś, co pomoże mi samemu budować (zaspokojenie apetytu twórczego umysłu) i czegoś, co zapewni mi dobrą pracę. Więc proszę kierować. Jestem gotowy do ciężkiej pracy, więc nie ma znaczenia, jeśli język nie jest łatwy :)


title: Czy definiowanie złożoności obliczeniowej w ten sposób jest poprawne/użyteczne?

text: Przeanalizowałem mój algorytm i wywnioskowałem, że w najlepszym przypadku wymaga on n^3 iteracji, aw najgorszym n^4 iteracji. Następnie stwierdziłem, że mój algorytm znajduje się w \Omega(n^3) iw \BigO(n^4). Czy to stwierdzenie jest poprawne i przydatne? (przepraszam za format, ale nie mogę dodać tekstu LaTeX, więc jeśli możesz, powiedz mi, jak to sformatować, wkrótce edytuję, dziękuję)


title: Czy bycie Senior Developerem używającym jednego języka kwalifikuje Cię do bycia Senior Developerem używającym innego języka?

text: Jeśli pracuję jako programista w jednym języku (np. Java) i awansuję na starszego programistę, czy to kwalifikowałoby mnie na stanowisko starszego programisty na stanowisko posługujące się innym językiem (np. Ruby)?


title: Jak mogę porównać i zestawić licencje open source?

text: Moja firma udzieliła mi pozwolenia na udostępnienie niektórych wewnętrznych narzędzi, które zbudowałem. Pierwszym krokiem jest wybór licencji open source. Jak mam to zrobic? Wiem o GPL, licencji Apache i innych. Czy istnieją jakieś zasoby, które porównują i kontrastują różne licencje? Wolałbym nie czytać każdego kandydata, dopóki nie zawężę pola.


title: W jaki sposób menedżer spoza działu IT powinien zapewnić długoterminowe utrzymanie i rozwój podstawowego starszego oprogramowania?

text: Jesteśmy małą, bardzo wyspecjalizowaną firmą administrującą świadczeniami z niezwykle użytecznym, solidnym zbiorem oprogramowania, niektóre napisane w COBOL, ale większość w BASIC. Dwóch pełnoetatowych konsultantów umiejętnie utrzymywało i ulepszało ten system przez ponad 30 lat. Nie trzeba dodawać, że wkrótce przejdą na emeryturę. (Jedna z nich od kilku lat desperacko stara się przejść na emeryturę, ale jest lojalna do przesady, więc trzyma się, mimo nalegań męża, że golf powinien mieć pierwszeństwo). Rozpoczęliśmy drogę przejścia na system opracowany przez jedną z zaledwie trzech firm. w kraju oferującym rodzaj oprogramowania, z którego korzystamy. Obecnie uważamy, że chociaż ta firma jest teoretycznie zdolna do ukończenia procesu konwersji, nie ma zasobów, aby to zrobić w odpowiednim czasie i doszliśmy do przekonania, że nie będzie w stanie zaoferować usługi, której potrzebujemy. nasza sprawa. (Nie ma nic lepszego niż możliwość ustalenia własnych priorytetów i posiadanie uprawnień do przydzielania zasobów według własnego uznania.) Sprzęt nie stanowi problemu — jesteśmy w stanie bardzo skutecznie emulować na nowoczesnych serwerach. Gdyby COBOL i BASIC były językami współczesnymi, bylibyśmy gotowi podjąć ryzyko znalezienia zastępstwa dla naszych obecnych konsultantów w przyszłości. Wydaje się, że powinien istnieć model biznesowy dla firmy wsparcia IT, która koncentruje się na starszych platformach, takich jak ta i zapewnia talenty programistyczne i programistyczne do obsługi systemu takiego jak nasz, usuwając z naszych pleców ryzyko znalezienia odpowiedniego talentu programistycznego i zadanie przekonania młodszych programistów, że mogą mieć produktywną, satysfakcjonującą karierę, po części w starym, nieseksownym języku, takim jak BASIC. **W skrócie, jako menedżerowie spoza działu IT, jak możemy najlepiej zarządzać tą zmianą?**


title: Dlaczego silne nazwy są opcjonalne?

text: Dlaczego c# pozwala, aby projekt nie był mocno podpisany podczas kompilacji? Mogą być podpisane jakimś automatycznym plikiem nazw, jeśli programista nie wybierze własnego pliku podpisu. Jakie są zalety niepodpisanego pliku .dll? Jakie są mocne nazwy? Pracuję nad projektem, który używa plików .dll C# w Microsoft Dynamics AX. Jeśli plik .dll ma silną nazwę, jest łatwy w użyciu. Jeśli nie zaczyna się zabawa. Jeśli plik .dll nie ma silnej nazwy 1. Nie można go łatwo zainstalować na gacutil 2. Nie można go używać jako odniesienia podczas budowania projektu o silnej nazwie. 3. Może prowadzić do DLL Hell Widzę tylko wady projektów bez silnych nazw, więc chcę wiedzieć, czy czegoś nie widzę, czy są jakieś trudne historyczne konsekwencje, dlaczego są one nadal dozwolone. Chcę wiedzieć, czy jest jakaś korzyść z ich używania. Powinno być możliwe dodanie silnej nazwy do pliku .dll bez kompilacji, ale nie mogłem tego użyć, ponieważ kończę po próbie użycia ILASM.exe z "Program nie może się uruchomić, ponieważ brakuje fusion.dll na twoim komputerze , Spróbuj ponownie zainstalować program, aby rozwiązać ten problem." nawet jeśli plik fusion.dll jest w systemie (zdecydowaliśmy się na inne podejście, więc nie mam czasu na więcej prób tego rozwiązania.)


title: Czy są jakieś korzyści z wpisywania zakomentowanego kodu do kontroli wersji?

text: Odkryłem, co osobiście uważam za zły nawyk, który wielu programistów przyjęło. Kod w różnych miejscach w aplikacjach, które widziałem, jest komentowany (wiele z nich) i sprawdzany w głównej linii. Teraz nie mam problemu z tym, że ludzie robią to z własnymi gałęziami, ale czy dobrym pomysłem jest zakomentowanie około 60 linii kodu i zapisanie go do trunka? Kolega z kopalni odkrył wiele z tego i spędził pół dnia na usuwaniu zakomentowanego kodu tylko po to, by wszystko uporządkować. Czy jest jakaś korzyść w sprawdzaniu zakomentowanego kodu i pozostawieniu go innemu programiście, który musi po tobie posprzątać? W końcu kontrola wersji ma historię, więc możesz łatwo wycofać dowolny kod, który został usunięty.


title: Czy zakomentowany kod może być wartościową dokumentacją?

text: Napisałem następujący kod: if (boutique == null) { boutique = new Boutique(); boutique.setSite(witryna); boutique.setUrlLogo(CmsProperties.URL_FLUX_BOUTIQUE+fluxBoutique.getLogo()); boutique.setUrlBoutique(CmsProperties.URL_FLUX_BOUTIQUE+fluxBoutique.getUrl()); boutique.setNom(fluxBoutique.getNom()); boutique.setSelected (fałsz); boutique.setIdWebSC(fluxBoutique.getId()); boutique.setDateModification(nowa data()); butikDao.persist(butik); } else { boutique.setSite(witryna); boutique.setUrlLogo(CmsProperties.URL_FLUX_BOUTIQUE+fluxBoutique.getLogo()); boutique.setUrlBoutique(CmsProperties.URL_FLUX_BOUTIQUE+fluxBoutique.getUrl()); boutique.setNom(fluxBoutique.getNom()); //butik.setSelected(false); boutique.setIdWebSC(fluxBoutique.getId()); boutique.setDateModification(nowa data()); butikDao.merge(butik); } Tutaj jest wykomentowany wiersz. Myślę jednak, że dzięki temu kod staje się jaśniejszy, ponieważ jest oczywiste, jaka jest różnica między „jeśli” a „else”. Różnica jest jeszcze bardziej widoczna przy podkreśleniu kolorów. Czy takie komentowanie kodu może być kiedykolwiek dobrym pomysłem?