title: Różnice między komunikatami a metodami?

text: W Objective C masz koncepcję wysyłania komunikatów do innych obiektów i, cóż, jest to bardzo podobne do wywoływania metod w językach takich jak C# i Java. Ale jakie **dokładnie** są subtelne różnice? Jak mam myśleć o wysyłaniu wiadomości, gdy myślę o moim kodzie? Uwaga: tylko trochę tła, jestem programistą C#/Java, próbującym zrozumieć niektóre koncepcje dotyczące Objective C.


title: Jak przetestować kod online?

text: Przygotowuję się do rozmowy technicznej i chciałbym odświeżyć swoje umiejętności kodowania. Napisałem program w C++ i chciałbym go przetestować online. Nie mam dostępu do żadnego kompilatora linux na moim komputerze. Gdzie mogę to zrobić? Mam wrażenie, że mogę to zrobić w code.google.com -> Google Code Playground, ale nie widzę, gdzie mogę wybrać kompilator. Napisałem prosty program C hello world w panelu "edytuj kod" i kliknąłem "Uruchom kod", ale minęło trochę czasu i nic nie pojawia się w dolnym oknie wyjściowym. Proszę pomóż. Dziękuję,


title: Mój klient chce, żebym dodał muzykę w tle do strony. Jak mam im powiedzieć, że to okropny pomysł?

text: Mam dość owsiane doświadczenie z witryną konkretnego klienta. Najnowszą „funkcją”, o którą prosili, jest automatyczne odtwarzanie muzyki w tle po załadowaniu strony. Co powinienem powiedzieć, aby delikatnie przekonać ich, że to zły pomysł?


title: Czy Universal iOS Apps ma więcej „problemów”, gdy pojawią się nowe wersje iOS?

text: Rozmawiałem z klientem o tworzeniu aplikacji na iOS i wspomniałem, że najlepiej byłoby mieć aplikację uniwersalną, która działałaby jako aplikacja na iPhone'a na iPhonie i jako aplikacja na iPada na iPadzie. Klientowi podoba się pomysł wersji aplikacji dla iPada, ale woli pomysł oddzielnej aplikacji w całości dla wersji na iPada. I nie z jakiegoś powodu typu „Angry Birds/Angry Birds HD” (omawiana aplikacja będzie darmowa, więc nie ma nic do zyskania finansowo), ale raczej dlatego, że „inne [organizacje z jego branży] powiedziały mu”, że „Universal Aplikacje mają więcej problemów ze zgodnością ze starszymi urządzeniami, gdy zostaną wydane nowe wersje systemu operacyjnego [iOS]”, a posiadanie osobnych aplikacji do tego celu łagodzi ten problem. Myślę, że mógł odnosić się do koncepcji aplikacji wymagającej wersji iOS, która jest nowsza niż ostatnia dostępna na telefonie. A może pomysł wypuszczenia aplikacji lub aktualizacji, która wymaga wersji iOS innej niż ostatnia dostępna na urządzeniu (oryginalny iPhone utknął na zawsze w wersji 3.1.3, iPhone 3G utknął na 4.2.1 na zawsze). Ale przypuszczam, że nadal możesz stworzyć uniwersalną aplikację dla 3.1.3, ponieważ oryginalny iPad dostarczany z iOS 3.2 i Universal Apps istniał przed 4.0. I chociaż mam trudności z ustaleniem, jaka jest minimalna wersja iOS dla aplikacji przesłanych do App Store, zakładam, że oryginalny iPhone nadal może pobierać i kupować aplikacje, albo jeden facet w biurze, który nadal ma swoje OG iPhone prawdopodobnie narzekałby teraz więcej. Ale naprawdę nie wiem. Czy aplikacje uniwersalne mają więcej problemów z kompatybilnością na urządzeniach (a dokładniej na starszych urządzeniach) niż indywidualnie opracowane oddzielne (ale poza tym całkiem równoważne) aplikacje? Czy ktoś kiedykolwiek na to wpadł?


title: Czy komentarze wbudowane „edytowane przez” są normą w sklepach stosujących kontrolę wersji?

text: Starszy programista w naszym sklepie nalega, aby za każdym razem, gdy kod jest modyfikowany, odpowiedzialny programista powinien dodać komentarz w wierszu mówiący o tym, co zrobił. Te komentarze zwykle wyglądają tak: `// RRRR-MM-DD <ID użytkownika> Dodano ten blok IF na błąd 1234.` Używamy TFS do kontroli wersji i wydaje mi się, że komentarze tego rodzaju są znacznie bardziej odpowiednie jako check- w nutach, a nie w tekście. TFS pozwala nawet powiązać odprawę z jednym lub kilkoma błędami. Niektóre z naszych starszych, często modyfikowanych plików klas wyglądają, jakby miały stosunek komentarza do LOC bliski 1:1. Moim zdaniem te komentarze sprawiają, że kod jest trudniejszy do odczytania i nie dodaje wartości. Czy jest to standardowa (a przynajmniej powszechna) praktyka w innych sklepach?


title: Jakie są różne znaczenia terminu „umocowanie”?

text: Mam pewne trudności ze zrozumieniem pojęcia „urządzenia”. Wiem, co to jest zestaw testów, przypadek testowy, przebieg testowy, ale czym dokładnie jest „urządzenie”? Sparametryzowany przypadek testowy? Wydaje mi się, że znaczenie lub semantyka terminu „umocowanie” może się nieznacznie różnić w zależności od języka programowania lub frameworka testowego? Myślę, że _phpunit osprzęt_ > " _kod do ustawienia świata w znanym stanie, a następnie przywrócenie go do > oryginalnego stanu po zakończeniu testu. Ten znany stan nazywa się > osprzętem testu._ " jest nieco inny z "urządzenia fitness", gdzie > " _Urządzenia są pomostem między stronami Wiki a testowanym systemem > (SUT), który jest rzeczywistym systemem do testowania_ ". Czy jest tutaj ekspert w dziedzinie testowania oprogramowania, który może odpowiedzieć na to pytanie? Mile widziane są odniesienia do innych języków programowania. **Aktualizacje:** dodam tutaj więcej definicji _umocowania_, jak wtedy, gdy napotkam nowe. Będzie fajnie. Alternatywne definicje * (wszystko, co implementuje interfejs ITestFixture) Źródło: sqa


title: Metryki funkcjonalne w metodykach Agile

text: Przygotowuję prezentację o metodyce Agile dla menedżerów (nie programistów) i patrzę, że z boku Agile mówi o **perspektywie funkcjonalnej*^ (w Scrumie mamy _grę planistyczną_ ), ale z drugiej strony, brakuje w nim żadnej (standardowej) definicji **środka funkcjonalnego**. Moim zdaniem to dziwne: jak mogę podać wielkość wysiłku według potrzeb funkcjonalnych użytkownika, jeśli metodologia Agile nie używa formalnej/jednoznacznej definicji **potrzeb funkcjonalnych** i nie przyjmuje żadnego formalnego pomiaru funkcjonalnego (Function Point , KOSMICZNY). Jeśli grałeś w _planowanie gry_ lub _Historia użytkownika_ , jaka była Twoja jednostka miary? Czy używałeś FP lub COSMIC?


title: Niezbędne role dla zespołu aplikacji internetowych

text: Kilku moich znajomych wpadło na pomysł na aplikację internetową, która według nas (na razie) może być świetna. Zrobiłem analizę i wszystkie wczesne etapy procesu rozwoju i zabieram się za kodowanie. Mówię o czymś, co jest ledwie projektem na średnim poziomie, więc uważam, że jeden programista (ja) powinien wystarczyć. Chodzi o to, że staramy się przydzielać role każdemu z nas, abyśmy mogli skoncentrować się na swoich obowiązkach i mieć jasne obowiązki w zespole. Jesteśmy czteroosobową załogą, trzech z nas (moi przyjaciele) to ludzie biznesu, którzy zajmą się marketingiem, relacjami z klientami, zarządzaniem i księgowością, a ja jestem w zasadzie programistą. Mam na myśli zaangażowanie ich w proces rozwoju poprzez przekazanie im dokumentacji do pisania i używania ich jako testerów, a wszystko to poza obowiązkami związanymi z zarządzaniem, jakie mają. Być może ktoś był w takiej samej sytuacji, więc byłbym wdzięczny, jeśli podzielimy się doświadczeniem, abyśmy mogli skutecznie przyznać sobie pozycje w projekcie na podstawie tego, co wyjaśniłem powyżej. Jakie są kluczowe role lub optymalny układ zespołu, aby pomysł mógł zostać pomyślnie rozwinięty? Pytanie nie dotyczy ściśle programowania, ale jest związane z budowaniem przedsiębiorczości programistycznej poza kodem, na co z pewnością wielu z nas poszukuje. Każda pomoc jest na prawdę doceniana! Pozdrowienia.


title: Wskazówki dotyczące korzystania z repozytorium kodu

text: Chciałbym mieć kilka sugestii dotyczących korzystania z repozytorium kodu. Nie muszę wiedzieć, jak się wymeldować, jak się zarejestrować ani jak utworzyć oddział. To, co muszę wiedzieć, to jak utrzymywać drzewo repozytorium lub jak je ustrukturyzować w celu optymalnego wykorzystania. Np. dla danego projektu, kiedy utworzyć oddział? Gdzie utworzyć oddział ze względu na lokalizację projektu? Co należy zrobić, gdy jeden lub więcej programistów pracuje nad tym samym projektem, ale różnymi funkcjami? Kiedy scalić? Gdzie idzie naprawa błędu? Jak zespół ds. kontroli jakości powinien dokonać zakupu określonej wersji? Itp.


title: Pracuję nad PaaS podobnym do Heroku lub Google App Engine i byłem ciekawy, jaką strukturę cenową preferują użytkownicy. Pomysły?

text: Mój obecny projekt to platforma do wdrażania w chmurze podobna do GAE czy Heroku. Staram się dowiedzieć, jaka metoda wyceny jest najlepsza dla nas i dla użytkowników. Zakładając, że nie mogę _obecnie_ zapewnić darmowego planu, oto opcje: 1) W pełni nieograniczone skalowanie (podobne do GAE) i opłata za użytkowanie (5 USD za projekt + x centów za godzinę pracy procesora w naszym systemie, również naliczaj pewna kwota za przepustowość wejścia/wyjścia, przechowywanie bazy danych + I/O, magazyn danych r/w, memcached itp.) To jest tańsze (około 20 USD za średnio obciążoną witrynę) i bardziej „sprawiedliwe” dla użytkownika ( płać **tylko** za to, z czego korzystasz), ale o wiele bardziej skomplikowane z wieloma różnymi czynnikami, które wpływają na ostateczną cenę. Ten typ architektury jest bardziej odporny na to, co na nią rzucasz, więc jeśli zauważysz wzrost ruchu, będzie działać idealnie, po prostu zapłacisz więcej. 2) Zapłać za „gotowość aplikacji”/określoną skalowalność (udostępnij określoną liczbę procesów na użytkownika do przyjmowania żądań, może 20 USD miesięcznie (3 centy za godzinę) na proces) i za określoną warstwę bazy danych. Brak opłat za przepustowość/IO (oczywiście w ramach dozwolonego użytku). Dodatki, takie jak e-mail i memcached, są dodatkowe. (podobne do Heroku) Ta opcja jest o wiele prostsza i łatwiejsza do prognozowania kosztów. Krzywa cenowa jest jednak dość stroma. Prawdopodobnie płacisz więcej (prawdopodobnie 40-60 USD miesięcznie za średnio obciążoną witrynę), ale wszystkie te różne koszty są całkowicie abstrakcyjne. Za co bardziej byś zapłacił? Czy jest jeszcze inna opcja, którą mogę przeoczyć?


title: Charakter wywołań zwrotnych w Node.js

text: W zwykłym świecie JavaScript nauczyłem się, że funkcje zagnieżdżone mogą być problematyczne, ponieważ funkcja wewnętrzna jest "odtwarzana" za każdym razem, gdy funkcja zewnętrzna jest wywoływana: function outer(a) { function inner(arg1,arg2){ return arg1 + arg2; } return wewnętrzna(a, 6); } mojaZm = zewnętrzna(4); Najwyraźniej funkcja wewnętrzna polega na zbieraniu śmieci, a ciągłe ich odtwarzanie ma wpływ na wydajność. Można to zmienić w następujący sposób: function inner(arg1, arg2) { return arg1 + arg2; } funkcja zewnętrzna(a) { return wewnętrzna(a, 6); } mojaZm = zewnętrzna(4); Jeśli mam rację, wydaje się, że kompromis leży w zmieniającym się zakresie wewnętrznego; fakt, że funkcja inner nie ma już dostępu do własnych zmiennych outside. Jeśli do tej pory mam rację, przejdźmy do Node.JS. Node jest obciążony wywołaniami zwrotnymi, a moje pytanie brzmi, czy asynchroniczne funkcje wywołań zwrotnych typowe w Node są również „odtwarzane” za każdym razem, gdy są uruchamiane? Weź następującą typową konstrukcję węzła: http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n') ;}).listen(1337, '127.0.0.1'); W rzeczywistości funkcja może być całkiem duża; może zawierać wiele funkcji. Czy powyższe wywołanie zwrotne jest „odtwarzane ponownie” za każdym razem, gdy klient otrzymuje lub POST serwer? Jeśli tak, to czy lepiej zawsze rozdzielić wywołania zwrotne, jak w zwykłym przykładzie JavaScript: function handleGET(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Witaj świecie\n'); } http.createServer(handleGET).listen(1337, '127.0.0.1'); jako powiązane pytanie dodatkowe, czy funkcje wydarzeń również są odtworzone? Czy skorzystałyby na uprzedniej deklaracji? myObj.on('jakieśZdarzenie', funkcja jakaśFunkcja() {...}); vs. function someFunction() {...} myObj.on('someEvent', someFunction);


title: Liczba lat doświadczenia potrzebnych do bycia deweloperem kontraktowym

text: Załóżmy, że jesteś programistą w wieku około 20 lat, który miał kilka lat doświadczenia w branży, pracując zarówno dla dużych firm technologicznych, jak i kilku internetowych startupów, ale teraz chciałbyś spróbować kontraktów w nadziei, że będziesz mógł wybrać bardziej interesujące i zróżnicowane pracować i mieć kilka miesięcy wolnego między miejscami pracy, aby skupić się na takich rzeczach, jak open source, podróże i rozwijanie własnych pomysłów na startupy. Teraz jest to prawdopodobnie jedno z tych marzeń, że „trawa jest bardziej zielona”. Nawet jeśli w miejscu pracy uda ci się mieć entuzjazm i umiejętności, aby pracować na równi z dużo bardziej doświadczonymi współpracownikami, jak realistyczne byłoby twoim zdaniem dla kogoś z zbyt mało lat doświadczenia, by wydawać się „specjalistą” lub „doświadczonym”, by konkurować o kontrakty i pozwolić sobie na taki styl życia?


title: C/C++: Które ostrzeżenia o konwersjach mają sens w praktyce?

text: Niejawne konwersje C/C++ mogą powodować błędy. Oto jeden przykład: int foo, bar; scanf("%d", &foo); scanf("%d", &bar); pływak foobar = foo / bar; Jeśli wprowadzę `7` i `2`, to nie jest `3.5` zgodnie z oczekiwaniami - to `3` -> błąd (zignorujmy przepełnienie bufora). `-Wconversion` gcc ostrzega przed tego typu rzeczami, więc włączyłem go. Ale wydaje mi się, że to przesadza z ostrzeżeniami. Na przykład to: int foo; pływak; scanf("%d", &foo); scanf("%f", &bar); pływak foobar = foo / bar; Powoduje ostrzeżenie: ostrzeżenie: konwersja do 'float' z 'int' może zmienić jej wartość [-Wconversion] Nawet jeśli działa zgodnie z przeznaczeniem, zwraca `3.5` gdy wpisuję `7` i `2`. Wiem, że float nie może dokładnie reprezentować wszystkich możliwych wartości int, ale zastanawiam się, czy dodanie tutaj rzutowania w jakikolwiek sposób pomoże - poza dodaniem większej ilości kodu. W powyższym przykładzie rzutowanie jednej z wartości int w wyrażeniu na float faktycznie zmieniło wynik, zastępując niejawne rzutowanie jawnym w tym przykładzie nie. To tyle, jeśli chodzi o ostrzeżenia o konwersji typu float na int, ale to nie wszystko. Są też ostrzeżenia o konwersji znaku. Tradycyjny przykład: std::vector<znak> chars = get_chars(); for (int i = 0; i < chars.size(); i++) std::cout << chars[i] << std::endl; Powoduje to ostrzeżenie: ostrzeżenie: porównanie wyrażeń liczb całkowitych ze znakiem i bez znaku [-Wsign-compare] Mógłbym zamiast tego użyć bardziej nieporęcznego `unsigned int` dla zmiennej indeksu - co będzie wymagało dalszego rzutowania, gdy będę wykonywać z nią obliczenia. Wszystko z powodu niezwykłej sytuacji, w której mam w wektorze elementy między `2^31 + 1` a `2^32` i nie wykonuję żadnych obliczeń ze zmienną indeksu, która rzutuje go na int. Tak więc moje pytanie brzmi: które ostrzeżenia o konwersjach mają sens w praktyce? Czy dodanie wyraźnych rzutowań, aby je naprawić, naprawdę coś poprawia?


title: Jak dowiedzieć się, jak napisać program?

text: Mam program, który muszę zrobić. Wiem, co program powinien zrobić, ale nie wiem, jak podejść do jego tworzenia. Jaki jest najlepszy sposób na uporządkowanie moich pomysłów i myśli, rozplanowanie tego, co program powinien zrobić, podejdź do robienia tego poprawnie i przekształcenia moich myśli i pomysłów w kod?


title: Przejście na karierę w Machine Learning

text: Moja codzienna praca to tworzenie starego oprogramowania. Robię również studia magisterskie z CS (w niepełnym wymiarze godzin, na kursie). Wziąłem kurs na sztuczną inteligencję i uznałem, że uczenie maszynowe jest dość fascynujące, ale jak większość kursów zawierało tylko podstawowe wprowadzenie. Zamierzam dowiedzieć się więcej o uczeniu maszynowym i jeśli to możliwe, znaleźć pracę w tej dziedzinie. Kiedy patrzę na oferty pracy w tej dziedzinie, jasne jest, że w przypadku większości z nich wymagany jest doktorat z uczenia maszynowego (lub wcześniejsze doświadczenie w tej dziedzinie ze znaczną wiedzą specjalistyczną). Szukam porad na temat samodzielnego uczenia się, aby zdobyć doświadczenie przydatne w przemyśle. Przynajmniej wystarczająco dużo doświadczenia, aby wejść. Zajmę się rzeczami oczywistymi, takimi jak czytanie podręczników, artykułów itp. Może jakieś działania open source, w których mogę uczestniczyć lub coś, co mógłbym zrobić sam? Przepraszam, jeśli jestem tutaj niejasny, ale mam nadzieję, że jest przynajmniej kilku z was, którzy dokonali podobnej zmiany i mogą doradzić. Dziękuję !


title: Najlepszy projekt dla klasy „Command Executer”

text: Przepraszam za niejasny tytuł, nie mogłem wymyślić sposobu na skondensowanie pytania. Tworzę aplikację, która będzie działać jako usługa w tle i sporadycznie zbierać dane o systemie, na którym działa. Druga aplikacja kontrolera Androida wysyła do systemu zapytanie przez tcp/ip o statystyki dotyczące systemu. Obecnie usługa działająca w tle ma klasę nasłuchiwania tcp, która odczytuje/zapisuje bajty z gniazda. Gdy dane są odbierane, wywołuje zdarzenie, aby powiadomić usługę. Usługa pobiera bajty, przekazuje je do parsera poleceń, aby dowiedzieć się, o co chodzi, a następnie przekazuje przeanalizowane polecenie do klasy wykonującej polecenia. Gdy usługa otrzyma polecenie „query statistics”, powinna zwrócić statystyki przez połączenie tcp/ip. Obecnie wszystkie te klasy są w pełni oddzielone od siebie. Ale aby program wykonujący polecenia zwrócił statystyki, oczywiście będzie potrzebował w jakiś sposób dostępu do gniazda. Z powodów, których nie potrafię w pełni wyartykułować, niewłaściwie jest, aby program wykonujący polecenia miał bezpośrednie odniesienie do gniazda. Szukam strategii i/lub wzorców projektowych, których mogę użyć do zwrócenia danych przez gniazdo, zachowując jednocześnie klasy oddzielone, jeśli jest to możliwe. Mamy nadzieję, że to ma sens. Daj mi znać, czy mogę podać jakieś informacje, które ułatwiłyby zrozumienie pytania.


title: Jaka jest najlepsza strategia licencjonowania aplikacji komputerowej za pomocą usługi sieciowej, skoro wszystko, co muszę wiedzieć, to kiedy ludzie korzystają z produktu?

text: Główną aplikacją naszej firmy jest program desktopowy używany w magazynach i napisany w C# i Windows Presentation Forms. Następną rzeczą, którą chcemy móc zrobić, jest śledzenie, kiedy klienci otwierają aplikację i kiedy jest używana. Powodem tego jest to, że możemy pobierać je co miesiąc, w zależności od tego, czy nie korzystają z aplikacji. Mój szef każe mi zbadać różne sposoby „licencjonowania” produktu zgodnie z tymi wymaganiami. Nie mając w tym żadnego doświadczenia, przychodzi mi na myśl kilka rzeczy. Mógłbym stworzyć aplikację webową działającą na serwerze i za każdym razem, gdy aplikacja desktopowa jest otwierana i użytkownik się loguje, aplikacja łączy się z serwerem i oznacza bazę danych datą i godziną. A może istnieje oprogramowanie licencyjne, którego mogę użyć, aby to osiągnąć? Po prostu szukam wskazówek/rad od osób, które mają doświadczenie z tego typu rzeczami.


title: Jak odróżnić dwa węzły o identycznych częstotliwościach w drzewie Huffmana?

text: Nadal szukam kompresji/dekompresji plików z implementacją Java kodowania Huffmana (http://en.wikipedia.org/wiki/Huffman_coding) do zadania szkolnego. Ze strony Wikipedii cytuję: > * Utwórz węzeł-liść dla każdego symbolu i dodaj go do kolejki priorytetów. > * Gdy w kolejce jest więcej niż jeden węzeł: > * Usuń dwa węzły o najwyższym priorytecie (najniższe prawdopodobieństwo) z kolejki > * Utwórz nowy węzeł wewnętrzny z tymi dwoma węzłami jako dziećmi i z prawdopodobieństwem > równym suma prawdopodobieństw dwóch węzłów. > * Dodaj nowy węzeł do kolejki. > * Pozostały węzeł to węzeł główny, a drzewo jest kompletne. > Teraz podkreśl: > * **Usuń dwa węzły o najwyższym priorytecie (najniższe prawdopodobieństwo) z > kolejki** > * **Utwórz nowy węzeł wewnętrzny z tymi dwoma węzłami jako dziećmi i z prawdopodobieństwem > równym sumie prawdopodobieństwa dwóch węzłów.** > Więc muszę wziąć dwa węzły o najniższej częstotliwości. Co zrobić, jeśli istnieje **wiele węzłów o _takiej samej_ niskiej częstotliwości**? Jak rozróżnić, którego użyć? Powodem, dla którego o to pytam, jest to, że Wikipedia ma ten obraz: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/2yhN2.png) I chciałem sprawdzić, czy moje drzewo Huffmana jest takie samo. Utworzyłem plik o następującej zawartości: aaaaeeee nnttmmiihhssfffouxprl A oto wynik: ![tutaj podaj opis obrazka](http://i.stack.imgur.com/DNOwz.png) Nie wygląda tak źle. Ale wyraźnie widać pewne różnice, gdy wiele węzłów ma tę samą częstotliwość. Moje pytania są następujące: * Co robi obraz Wikipedii, aby rozróżniać węzły z tą samą częstotliwością? * Czy moje drzewo jest złe? (Czy metoda obrazowa Wikipedii jest jedyną odpowiedzią?) Wydaje mi się, że jest jeden konkretny i ścisły sposób, aby to zrobić, ponieważ w przypadku naszego szkolnego zadania pliki, które zostały skompresowane przez mój program **powinny być możliwe do zdekompresowania przez innych kolegów z klasy programy** \- więc musi istnieć "standardowy" lub "unikalny" sposób na zrobienie tego. Ale jestem z tym trochę zagubiony. Mój kod jest dość prosty. Dosłownie podąża za wymienionymi krokami Wikipedii. Sposób, w jaki mój kod wyodrębnia dwa węzły o najniższej częstotliwości z kolejki, polega na iteracji wszystkich węzłów i jeśli bieżący węzeł ma niższą częstotliwość niż którykolwiek z dwóch „najmniejszych” znanych dotychczas węzłów, zastępuje najwyższy. Właśnie tak.


title: Jaka jest najbardziej wydajna właściwość CSS do przenoszenia elementu?

text: Zastanawiam się, czy istnieje różnica wydajności między używaniem różnych właściwości CSS do tłumaczenia elementu. Niektóre właściwości w różny sposób pasują do różnych sytuacji. Możesz przetłumaczyć element o następujących właściwościach: `transform`, `top/left/right/bottom` i `margin-top/left/right/bottom` W przypadku, gdy nie używasz właściwości CSS `transition` dla tłumaczenie, ale użyj jakiejś formy timera (`setTimeout`, `requestAnimationFrame` lub `setImmediate`) lub nieprzetworzonych zdarzeń, które są najbardziej wydajne — co zapewni wyższe stawki FPS?


title: Język programowania i wszechobecny (DDD) w domenie innej niż angielski

text: Wiem, że jest tu już kilka pytań, które są ściśle związane z tym tematem, ale żadne z nich nie traktuje języka wszechobecnego jako punktu wyjścia, więc myślę, że to uzasadnia to pytanie. Dla tych, którzy nie wiedzą: Język wszechobecny to koncepcja definiowania języka (zarówno mówionego, jak i pisanego), który jest w równym stopniu używany przez programistów i ekspertów dziedzinowych, aby uniknąć niespójności i nieporozumień spowodowanych problemami z tłumaczeniem i nieporozumieniami. Zobaczysz tę samą terminologię w kodzie, rozmowy między dowolnym członkiem zespołu, specyfikacje funkcjonalne i tak dalej. Zastanawiałem się więc, jak radzić sobie z językiem wszechobecnym w domenach innych niż angielski. Osobiście zdecydowanie preferuję pisanie kodu programistycznego w całości po angielsku, włączając komentarze, ale oczywiście z wyłączeniem stałych i zasobów. Jednak w domenie nieanglojęzycznej zmuszony jestem podjąć decyzję, czy: 1. Napisać kod odzwierciedlający Język Wszechobecny w naturalnym języku domeny. 2. Przetłumacz język wszechobecny na angielski i przestań komunikować się w naturalnym języku domeny. 3. Zdefiniuj tabelę, która określa, w jaki sposób język wszechobecny tłumaczy się na angielski. Oto kilka moich przemyśleń opartych na tych opcjach: 1) Mam silną awersję do kodu w różnych językach, czyli kodowania przy użyciu nazw typów/członków/zmiennych itp., które nie są angielskie. Większość języków programowania w dużym stopniu „oddycha” językiem angielskim, a większość literatury technicznej, nazw wzorców projektowych itp. jest również w języku angielskim. Dlatego w większości przypadków po prostu nie ma możliwości napisania kodu w całości w języku innym niż angielski, więc i tak otrzymujesz mieszane języki. 2) Zmusi to ekspertów dziedzinowych do myślenia i mówienia w angielskim odpowiedniku PU, co prawdopodobnie nie przyjdzie im naturalnie i dlatego znacząco utrudnia komunikację. 3) W tym przypadku programiści komunikują się z ekspertami domeny w ich ojczystym języku, podczas gdy programiści komunikują się ze sobą po angielsku, a co najważniejsze, piszą kod, korzystając z angielskiego tłumaczenia UL. Jestem pewien, że nie chcę iść na pierwszą opcję i myślę, że opcja 3 jest znacznie lepsza niż opcja 2. Co myślisz? Czy brakuje mi innych opcji? **AKTUALIZACJA** Dzisiaj, około rok później, mając do czynienia z tym problemem na co dzień, muszę powiedzieć, że opcja 3 całkiem mi się sprawdziła. Nie było to tak żmudne, jak początkowo się obawiałem, a tłumaczenie w czasie rzeczywistym podczas rozmowy z klientem również nie stanowiło problemu. Opierając się na moim doświadczeniu, stwierdziłem również, że następujące zalety są prawdziwe. * Tłumaczenie UL sprawia, że zwracasz większą uwagę na definiowanie UL, a nawet samej domeny, zwłaszcza gdy nie wiesz, jak przetłumaczyć termin i musisz zacząć przeglądać słowniki itp. To nawet spowodowało, że ponownie rozważyłem modelowanie domeny decyzje kilka razy. * Pomaga pogłębić znajomość języka angielskiego. * Oczywiście, Twój kod jest o wiele przyjemniejszy do oglądania, zamiast być oszałamiającą nieprzyzwoitością.


title: Jak sprawić, by licencja dotyczyła całej biblioteki?

text: Tworzę standardową bibliotekę dla języka programowania i chciałbym licencjonować każdą pojedynczą klasę lub funkcję na licencji MIT, więc są całkowicie FOSS. Wszystkie pliki znajdują się w jednym katalogu. Czy wystarczy umieścić plik LICENSE.txt w tym samym katalogu, zawierający licencję MIT? Czy muszę mówić, że poniższa licencja dotyczy wszystkich funkcji biblioteki, czy też sama biblioteka jest uważana za program?


title: Jak fundamentalne znaczenie dla dobrego rozwoju ma BDD?

text: Uczę się być web developerem i korzystam z railsów. Przeczytałem wiele porad i książek na ten temat i próbuję zbudować własną aplikację, więc uczę się przez działanie. Moje pytanie dotyczy tej podróży edukacyjnej i drogi, którą należy obrać. Byłem przekonany, że BDD to bardzo rozsądny i pomocny sposób na rozwój, dlatego studiuję tę technikę. Używam Cucumber i RSpec i pracuję nad książką RSpec i książką Cucumber. Osiągnąłem teraz punkt całkowitej frustracji, gdy próbuję pisać funkcje i kroki, ponieważ nie wiem, jak używać szyn ani pisać kodu. Jestem w tym nowy, ale chciałem się upewnić, że w trakcie uczenia się buduję dobre nawyki. Jeśli będę robił BDD tak, jak koduję od początku, będzie to dla mnie druga natura, gdy będę doświadczonym programistą, ale z powodu tego, jak powoli się rozwijam i jak bardzo jestem zagubiony, myślę, że powinienem na razie złomować BDD i po prostu się uczyć ramy. Ale mam w zwyczaju nie pisać testów i lenić się. Jakie są twoje doświadczone uczucia w tej sprawie? Czy powinienem dalej odrywać się od testów BDD, aby budować dobre nawyki? A może przywiązuję do tego zbyt dużą wagę? Dziękuję za radę,


title: Pseudokod echa przy użyciu rekurencji

text: Używając pseudokodu, jaki byłby kod dla echa przy użyciu rekurencji? AKTUALIZACJA: Wygląda na to, że powinienem był być bardziej przejrzysty. Przez echo rozumiem, że dźwięk wzorca pojawia się, gdy odbija się echem, a nie echem, jak w przypadku wielokrotnego dodawania jednego do siebie, gdy self jest równe zeru. Czy zastanawialiście się, jak wyglądałby kod dla „prawdziwego” echa? Na przykład myślałem o „echo(reduce-volume();exit-if-silent;echo())”, ale byłem pewien, czy logika ma sens. AKTUALIZACJA-2: Pracując nad moją własną logiką powyżej zauważyłem, że nie ma sposobu na uwzględnienie „pozytywnych opinii”, które, jak sądzę, są wymagane. http://en.wikipedia.org/wiki/Positive_feedback


title: SQL RDBMS: jedno zapytanie lub wiele wywołań

text: Po rozejrzeniu się po Internecie postanowiłem stworzyć obiekty DAO, które zwracają obiekty (POJO) do wywołującej funkcji/metody logiki biznesowej. Na przykład: obiekt Customer z referencją Adres byłby podzielony w RDBMS na dwie tabele; Klient i ADRES. CustomerDAO będzie odpowiedzialny za połączenie danych z dwóch tabel i utworzenie zarówno adresu POJO, jak i klienta POJO, dodając adres do obiektu klienta. Na koniec zwróć pełne POJO Klienta. Proste, jednak teraz jestem w punkcie, w którym muszę połączyć trzy lub cztery tabele, z których każda reprezentuje atrybut lub listę atrybutów dla wynikowego POJO. Sql będzie zawierał grupę według, ale nadal otrzymam wiele wierszy dla tego samego pojo, ponieważ niektóre tabele łączą się w relacji jeden do wielu. Mój kod aplikacji będzie teraz musiał przejść przez wszystkie wiersze, próbując dowiedzieć się, czy wiersze są takie same z różnymi atrybutami, czy też rekord powinien być nowym POJO. Czy powinienem nadal tworzyć moje daos przy użyciu tej techniki, czy podzielić moje tworzenie Pojo na wiele wywołań bazy danych, aby kod był łatwiejszy do zrozumienia i utrzymania?


title: Czy istnieje hit wydajnościowy wykorzystujący mule jako kontener w porównaniu ze standardowym kontenerem JEE, takim jak Weblogic?

text: Nasz zespół rozważa wykorzystanie Mule w dużej skali, średniej wielkości, wewnętrznej aplikacji bankowości transakcyjnej. Na początku Mule miał być używany tylko jako serwer aplikacji, chociaż możliwe jest, że niektóre z jego funkcji esb/orchestration będą używane w przyszłości. Nie mam doświadczenia z mułem, będąc nowym w zespole. Ale moje przeczucie mówi, że Mule nie byłby tak wydajny jak Weblogic lub Glassfish jako kontener wdrożeniowy. Czy ktoś ma jakieś historie porównawcze, które mogłyby rzucić światło?


title: Czy zawsze można projektować z myślą o skalowaniu?

text: Projektując aplikację, w której skalowalność ma być ważna, przydatne byłoby, gdyby aplikacja mogła być zaprojektowana tak, aby „skalować się” na tanich serwerach standardowych. Istnieje jednak wiele aplikacji do skalowania (patrz moje poprzednie pytanie). Czy zawsze _możliwe_ jest zaprojektowanie aplikacji w celu skalowania w poziomie, czy też niektóre wymagania uniemożliwiają skalowanie w poziomie, nawet jeśli całe oprogramowanie można zaprojektować od zera i nie ma w nim żadnego starszego oprogramowania? Szukam przypadków, w których skalowanie w poziomie jest gorszym rozwiązaniem do skalowania w górę i gdzie dobry projekt aplikacji nie może tego złagodzić. Innymi słowy, aplikacji _nie można_ zaprojektować tak, aby skutecznie skalować, bez względu na to, jak bardzo się starasz. _Nie_ szukam przypadków, w których starsze oprogramowanie lub struktury danych - lub nawet całe architektury (jak w odpowiedzi na poprzednie pytanie) - nie zostały zaprojektowane do skalowania i nie można ich zmienić. Ewentualnie, jeśli istnieją powody, by sądzić, że można _zawsze_ skalować, jeśli aplikacja jest dobrze zaprojektowana, również chciałbym o tym wiedzieć. Edycja: szukam wyraźnego przykładu takiego systemu, jeśli taki istnieje.


title: Rozróżnianie poleceń interfejsu użytkownika i poleceń domeny

text: Buduję aplikację kliencką WPF przy użyciu wzorca MVVM, który zapewnia interfejs na szczycie istniejącego zestawu logiki biznesowej znajdującej się w bibliotece, która jest współużytkowana z innymi aplikacjami. Biblioteka biznesowa była zgodna z architekturą opartą na domenie przy użyciu CQRS do oddzielenia modeli odczytu i zapisu (bez źródła zdarzeń). Połączenie technologii i wzorców wywołało interesującą zagadkę: * Wzorzec MVVM wykorzystuje wzorzec poleceń do obsługi interakcji użytkownika z modelami widoku. .NET udostępnia interfejs ICommand, który jest implementowany przez większość struktur MVVM, takich jak RelayCommand MVVM Light i DelegateCommand firmy Prism. Na przykład model widoku uwidoczniłby wiele obiektów poleceń jako właściwości, które są powiązane z interfejsem użytkownika i reagują, gdy użytkownik wykonuje czynności, takie jak klikanie przycisków. * Wiele implementacji CQRS używa wzorca poleceń do izolowania i hermetyzacji poszczególnych zachowań. W mojej bibliotece biznesowej zaimplementowaliśmy model zapisu jako pary komenda/polecenie-obsługa. W związku z tym, gdy chcemy wykonać jakąś pracę, taką jak utworzenie nowego zamówienia, „wydajemy” polecenie (CreateOrderCommand), które jest kierowane do programu obsługi poleceń odpowiedzialnego za wykonanie polecenia. To jest świetne, jasno wyjaśnione w wielu źródłach i jestem z tym dobry. Jednak weźmy ten scenariusz: > Mam ToolbarViewModel, który uwidacznia właściwość CreateNewOrderCommand. > Ten obiekt ICommand jest powiązany z przyciskiem w interfejsie użytkownika. Po kliknięciu polecenie UI > tworzy i wydaje nowy obiekt CreateOrderCommand do domeny >, który jest obsługiwany przez CreateOrderCommandHandler. Jest to trudne do wytłumaczenia innym programistom i zaczynam się męczyć, ponieważ wszystko jest poleceniem. Jestem pewien, że nie jestem pierwszym programistą, który nakłada się na wzorce w taki sposób, w którym nakładają się również nazewnictwo/terminologia. **Jak podszedłeś do rozróżniania poleceń używanych w interfejsie użytkownika od poleceń używanych w domenie?** (Edycja: Powinienem wspomnieć, że biblioteka biznesowa jest niezależna od interfejsu użytkownika, tj. nie istnieje ani nie będzie istniał kod specyficzny dla technologii interfejsu użytkownika, w tej bibliotece.)


title: Czym jest minimalistyczna konfiguracja Agile Development dla małego zespołu?

text: Mam 10 programistów i 3 zespół Testes i chcę skonfigurować CruiseControle jako CI do automatycznych kompilacji, testów i wdrażania na serwer produkcyjny oraz repozytorium dla SCM (zarządzanie kodem źródłowym). Potrzebuję czegoś, co umożliwiłoby zespołowi prowadzącemu tworzenie biletów (zadań) dla każdego sprintu w SCRUM oraz śledzenie problemów/błędów i czasu zadań. Chcę użyć najprostszego możliwego rozwiązania, które po prostu wykonuje pracę z minimalnymi wymaganiami określonymi w tym pytaniu SO. Nie chcę używać ciężkiego lub bogatego w funkcje oprogramowania (bezpłatnego lub kosztownego), tylko najprostszej możliwej konfiguracji. Każdy programista używa środowiska Eclipse STS IDE. Więc musi to być coś, co jest zintegrowane z STS (jak dostępne jako wtyczka STS, ponownie, aby wszystko było tak proste, jak to możliwe). Służy do tworzenia aplikacji internetowych Java.


title: Co jest takiego specjalnego w x64 i programowaniu x86?

text: Wiem, że to trochę zabawne pytanie, ale nie miałem okazji uświadomić sobie, co robi jakąkolwiek różnicę podczas programowania x64 lub x86 w językach wysokiego poziomu (na przykład .NET). Wszelkie wyjaśnienia byłyby mile widziane.


title: Czy istnieje quasi-standardowy zestaw atrybutów opisujących bezpieczeństwo wątków, niezmienność itp.?

text: Poza postem na blogu tu i tam, opisującym atrybuty niestandardowe, które ktoś stworzył, ale to nie wydaje się mieć żadnej uwagi - jak jeden opisujący, jak wymusić niezmienność, inny o bezpieczeństwie wątków w dokumentacji, modelowanie atrybutów po adnotacjach JCIP \- jest pojawia się jakiś standard? Coś stwardnienie rozsiane może planować na przyszłość? To jest coś, co powinno być standardem, jeśli ma być jakakolwiek szansa na interoperacyjność między bibliotekami pod względem współbieżności. Zarówno w celach dokumentacyjnych, jak i do zasilania statycznych/dynamicznych narzędzi testowych. Jeśli MS nie robi nic w tym kierunku, można to zrobić na CodePlex - ale tam też niczego nie mogłem znaleźć. <opinion>Bezpieczeństwo współbieżności i wątków jest naprawdę trudne w językach imperatywnych i obiektowych, takich jak C# i Java, powinniśmy spróbować je okiełznać, dopóki nie przełączymy się na bardziej odpowiednie języki.</opinion>


title: Błędne wyobrażenia na temat języków czysto funkcjonalnych?

text: Często spotykam się z następującymi stwierdzeniami/argumentami: 1. Czysto funkcjonalne języki programowania nie dopuszczają skutków ubocznych (i dlatego są mało przydatne w praktyce, ponieważ każdy użyteczny program ma skutki uboczne, np. gdy wchodzi w interakcję ze światem zewnętrznym). 2. Czysto funkcjonalne języki programowania nie pozwalają na napisanie programu, który utrzymuje stan (co czyni programowanie bardzo niewygodnym, ponieważ w wielu aplikacjach potrzebny jest stan). Nie jestem ekspertem od języków funkcjonalnych, ale oto, co do tej pory rozumiałem w tych tematach. Jeśli chodzi o punkt 1, możesz wchodzić w interakcje z otoczeniem w językach czysto funkcjonalnych, ale musisz wyraźnie zaznaczyć kod (funkcje), który wprowadza efekty uboczne (np. w Haskell za pomocą typów monadycznych). Ponadto, o ile wiem, obliczanie przez efekty uboczne (niszcząca aktualizacja danych) powinno być również możliwe (używając typów monadycznych?), mimo że nie jest to preferowany sposób pracy. Jeśli chodzi o punkt 2, o ile wiem, możesz reprezentować stan przez wątkowanie wartości w kilku krokach obliczeniowych (w Haskell ponownie, używając typów monadycznych), ale nie mam praktycznego doświadczenia w robieniu tego i moje zrozumienie jest raczej niejasne. Czy zatem dwa powyższe stwierdzenia są w jakimś sensie poprawne, czy są to tylko błędne wyobrażenia na temat języków czysto funkcjonalnych? Jeśli są błędnymi wyobrażeniami, jak do nich doszło? Czy mógłbyś napisać (prawdopodobnie mały) fragment kodu ilustrujący idiomatyczny sposób Haskella, aby (1) zaimplementować efekty uboczne i (2) zaimplementować obliczenia ze stanem?


title: Jaka jest różnica między generowaniem proceduralnym a generowaniem losowym?

text: Dzisiaj wdałem się w spór o termin „pokolenie proceduralne”. Chodziło mi o to, że różni się od „klasycznego” generowania losowego tym, że _generowanie proceduralne_ opiera się na bardziej matematycznym, opartym na fraktalach algorytmie prowadzącym do bardziej „realistycznego” rozkładu, a zwykła losowość większości języków opiera się na pseudolosowym -generator liczb, prowadzący do "nierealistycznej", na swój sposób brzydkiej dystrybucji. Ta dyskusja została przeprowadzona z myślą o mapie wysokości. Dyskusja pozostawiła mnie jednak jakoś nieprzekonaną co do moich własnych argumentów, więc czy jest w tym coś więcej? A może to ja po prostu się mylę?


title: Klasa/obiekt z różnymi zestawami konfiguracji, singletonami itp. (PHP)

text: Chcę stworzyć możliwy do utrzymania kod do konfigurowania jednej lub wielu klas w różny sposób, w zależności od tego, czy w środowisku produkcyjnym, czy programistycznym. Na przykład utworzenie klasy/obiektu `Paypal`, który obsługuje wywołania API do Paypal, używając różnych ustawień w zależności od jakiegoś globalnego przełącznika ustawionego na Dev lub Live. Pierwszy łączyłby się z kontem piaskownicy, drugi z kontem na żywo. Chcę, aby było to tak proste, jak to tylko możliwe - nie ładowałbym zmiennych konfiguracyjnych z pliku lub bazy danych, ale zamiast tego określiłbym je w konstruktorze podklasy, jednej podklasie dla dev i jednej dla live, lub podobnie: class Paypal { private $ adres URL punktu końcowego; public static funkcja makeSandbox(){ return new Paypal('http://....'); } public static function makeLive(){ return new Paypal('http://....'); } // .... funkcja publiczna Paypal($url){ $this->endpointUrl = $url; } } Jednak to pozostawia mi tak wiele pytań, jak w przypadku innych klas, które konfiguracje różnią się między live/server, czy mam przechowywać różne inicjalizacje w jej klasie, czy też powinienem mieć klasę dedykowaną wszystkim szczegółom konfiguracji, czy powinna to być singleton i tak dalej. Aplikacja będzie dość prosta i będę zarządzana tylko przeze mnie, więc idea plików konfiguracyjnych XML itp. wydaje się przesadzona, plik konfiguracyjny PHP z instrukcją switch i zmiennymi globalnymi wydaje się być złą formą. Użycie czegoś w rodzaju globalnej klasy `Config` przynosi całą masę pytań. Czuję się tutaj przytłoczony. Czytałem i wydaje się, że jest tak wiele opinii. Jedyną zasadą, która utkwiła mi w pamięci, jest używanie wzorców OOP do rozwiązania problemu, a nie tylko ze względu na to. Będąc bardzo małą witryną, w której tylko ja ją rozwijam, bardzo waham się przed wprowadzeniem wielu dodatkowych klas lub obiektów tylko po to, aby poradzić sobie z dwoma zestawami globalnych konfiguracji. Proszę pomóż


title: Optymalizacja żądań serwera - wielkość kontra częstotliwość

text: moja aplikacja podobna do mapy ładuje dane z Google Map API, ale ładuje również dodatkowe dane - w postaci XML - z mojego serwera. Gdy aplikacja się ładuje, naprawdę potrzebuje tylko niewielkiej ilości danych, aby pokryć aktualnie widoczny obszar, ale istnieje szansa na 2% (czyli współczynnik konwersji), że użytkownik wejdzie w interakcję z mapą i będzie potrzebnych więcej danych. Mój problem polega na tym, że tak naprawdę nie potrafię oszacować prawdopodobieństwa, że użytkownik będzie potrzebował określonej części danych mapy, dlatego nie mogę oszacować optymalnej wielkości pakietu danych. Czy powinienem wysłać tylko minimalną porcję danych, której teraz potrzebuje użytkownik, czy powinienem wysłać mu dane dla wszystkich pobliskich ekranów, a nawet więcej? **Teoretycznie, jaki jest handel między wysyłaniem jednego dużego kawałka danych – dużo bajtów (duża przepustowość), ale niewielu żądań serwera – lub wysyłaniem małych porcji danych w razie potrzeby – małych, ale częstych żądań serwera?** Fragmenty XML będą buforowane, ale im większe kawałki wygeneruję, tym większa szansa, że będę musiał je aktualizować za każdym razem, gdy coś się zmieni w danych (co zdarza się dość często). Nie potrafię jeszcze określić ilościowo rozmiarów i prawdopodobieństw, więc proszę potraktować to pytanie jako wysoce teoretyczne. Chciałbym poznać Wasze opinie.


title: iOS Networking/Backend: czy ktoś znalazł najlepsze źródło wiedzy?

text: Mam trudności ze znalezieniem nowoczesnego (zaktualizowanego), kompletnego źródła wiedzy (książki lub samouczka), które poradziłoby sobie od podstaw z serwerową stroną tworzenia aplikacji na iOS. Moim celem jest stworzenie aplikacji, w której użytkownicy będą mogli ze sobą rozmawiać, oglądać swoje profile, udostępniać zdjęcia... Jestem całkiem nowy w implementacji backendu, znam tylko podstawy PHP (ale jestem dobry w innych iOS tematy rozwoju). Szukałem wielu książek/poradników, ale jestem sfrustrowany z następujących powodów: \-- kod jest za stary i wymaga aktualizacji \-- należy użyć biblioteki innej firmy Czy ktoś kiedykolwiek coś znalazł to zabrałoby nowicjusza od zera, wyjaśniając i podając przykłady implementacji backendowej w nowoczesny sposób? Wiem, że to szerokie pytanie, ale jeśli ktoś już natknął się na świetny zasób, chętnie go przeczytam! Dzięki, BM


title: GUI Java z JFrames

text: Dzisiaj zacząłem uczyć się GUI Java i próbowałem stworzyć proste okno na moim Ubuntu. Na razie używam jre7. Napisałem kod dokładnie z samouczka, ponieważ z doświadczenia wiem, że są rzeczy, które nie działają, nawet jeśli są poprawnie wpisane na moim ekranie. Więc teraz użyłem pierwszego samouczka thenewboston z GUI Java. Wpisana cała składnia poprawnie, klasy wydają się w porządku, bez błędów. Dostał okno, którego się spodziewano - moje dostało tylko puste okno bez tytułu i bez tekstu. Zrzut ekranu z tym http://screencloud.net/v/ywtW kodem w pliku JFrames.java: import java.awt.FlowLayout; // importē plūstošo skatu / domyślny układ import javax.swing.JFrame; // dod iespēju piekļūt pamata logu struktūrai import javax.swing.JLabel; // rakstīt tekstu logos public class JFrames rozszerza JFrame { prywatny JLabel item1; public JFrames() { super("Tytuł programu"); // pasek tytułu parada ar tekstu setLayout(nowy FlowLayout()); item1 = new JLabel("To jest zdanie z czymś"); item1.setToolTipText("To jest podpowiedź po najechaniu myszą"); dodaj(pozycja1); // pievieno logam šo lietiņu } } Proszę zignorować łotewskie komentarze, to tylko dla mnie. Więc chcę wiedzieć - dlaczego moje okno jest puste?


title: Jakie błędy popełniają Twoi użytkownicy i jak możesz zaktualizować aplikację, aby je obsłużyć?

text: W rzeczywistości to pytanie dotyczy środków ostrożności, które należy podjąć, aby poprawić jakość obsługi użytkownika i zmniejszyć liczbę wezwań pomocy technicznej, których można uniknąć.


title: Wzorzec repozytorium: wystawianie kontekstu danych na warstwy bazowe

text: Mój zespół jest w trakcie aktualizacji starszego projektu. Zdecydowaliśmy się włączyć wzorzec repozytorium wraz z `Entity Framework` do naszej warstwy dostępu do danych. Poniżej znajduje się ogólny widok tej organizacji: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/ATCVY.png) `IRepository<TEntity>` to ogólny interfejs używany do wykonywania typowych operacji na zestawie encji: interfejs publiczny IRepository<TEntity> gdzie TEntity : class { ObjectSet<TEntity> EntitySet { get; ustawić; } TEntity Get(klucz obiektu); void Insert(TEntity encja); void Update (jednostka TEntity); nieważne Zapisz(); } Na przykład, jeśli mam encję `Employee`, mogę utworzyć obiekt `EmployeeRepository:IRepository<Employee>`. Klasa `DataFactory` jest następnie używana jako obiekt opakowania do obsługi generowania, usuwania i obsługi wyjątków `ObjectContext`: klasa publiczna DataFactory<TContext, TEntity> : IDisposable gdzie TContext : ObjectContext, new() gdzie TEntity : class { private bool _disposed = false; prywatny TContext _context; prywatne IRepository<TEntity> _repository; public DataFactory() { _context = new TContext(); repozytorium IRepository<TENtity>; bool isRepositoryFound = TryGetRepository(poza repozytorium); if (!isRepositoryFound) { wrzucić nowy InvalidOperationException( string.Format("Nie można znaleźć repozytorium typu {0}.", typeof(TEntity).FullName)); } _repozytorium = repozytorium; } public DataFactory(kontekst TContext, repozytorium IRepository<TEntity>) { _context = context; _repozytorium = repozytorium; } public void Wykonaj(Akcja<TContext, IRepository<TEntity>> akcja) { spróbuj { action(_context, _repository); } catch (wyjątek ex) { ProcessException(ex); } } public TResult DoAndReturn<TResult>(Func<TContext, IRepository<TEntity>, TResult> akcja) { try { return action(_context, _repository); } catch (wyjątek ex) { ProcessException(ex); zwróć wartość domyślną(TRWynik); } } private bool TryGetRepository(out IRepository<TEntity> repozytorium) { Type repositoryType = Assembly.GetExecutingAssembly().GetTypes().SingleOrDefault(t => typeof(IRepository<TEntity>).IsAssignableFrom(t)); if (repositoryType == null) { repozytorium = null; zwróć fałsz; } repozytorium = (IRepository<TEntity>)Activator.CreateInstance(repositoryType, _context ); zwróć prawdę; } } I wreszcie, aby użyć tej klasy w warstwie biznesowej, mielibyśmy coś takiego: using (var factory = new DataFactory<MyDataContext, Employee>()) { factory.Do((context, repozytorium) => { // Interact z repozytorium }); } Mój współpracownik i ja odbyliśmy długą rozmowę na temat tego, czy obiekt kontekstu danych powinien być eksponowany na warstwy bazowe w metodach `Do()` i `DoAndReturn()`. Chociaż widzę przypadki, w których posiadanie bezpośredniego dostępu do kontekstu może być przydatne (na przykład w przypadku, gdy możemy chcieć włączyć/wyłączyć leniwe ładowanie dla określonego zestawu encji), myślę, że takie postępowanie niweczy cały cel abstrahowania Warstwa dostępu do danych (którą osiąga się poprzez udostępnienie wspólnej umowy „IRepository”), ponieważ teraz można uzyskać bezpośredni dostęp do obiektów/manipulować nimi za pośrednictwem „ObjectContext”. Zasugerował, aby mieć dwie różne wersje tych metod: jedną, która ujawnia tylko repozytorium, i drugą, która udostępnia zarówno kontekst, jak i repozytorium. Czy to akceptowalne podejście? Wszelkie sugestie są mile widziane.


title: Czy możesz używać do niektórych zadań języka, który nie jest obsługiwany przez Twoją firmę?

text: Pracuję dla firmy obsługującej kilka języków: COBOL, VB6, C# i Java. Używam tych języków do mojej głównej pracy, ale często łapię się na kodowaniu pomniejszych programów (np. skryptów) w Pythonie, ponieważ uważam, że jest to najlepsze narzędzie do tego typu zadań. Na przykład: Analityk daje mi złożony plik CSV do wypełnienia niektórych tabel DB, więc użyłbym Pythona do przetworzenia go i utworzenia skryptu DB. Jaki jest problem? Głównym problemem, który widzę, jest to, że kilka części tych szybkich i brudnych skryptów powoli zyskuje na znaczeniu i: 1. Moja firma nie obsługuje Pythona 2. Nie są one kontrolowane przez wersję (tworzę ich kopię zapasową w inny sposób) 3. Moja współpracownicy nie znają Pythona Analitycy zaczęli nawet odwoływać się do nich w wiadomościach e-mail („uruchom skrypt, który eksportuje…”), więc są one potrzebne częściej, niż początkowo sądziłem. Powinienem dodać, że te skrypty to tylko narzędzia, które nie są częścią głównego projektu; po prostu pomagają wykonać trywialne zadania w krótszym czasie. W przypadku moich małych zadań bardzo pomagają. Krótko mówiąc, gdybym był zwycięzcą loterii ~~by mieć wypadek~~, moi współpracownicy musieliby utrzymać projekt przy życiu bez tych skryptów; na przykład poświęciliby więcej czasu na ręczne naprawianie błędów CSV. Czy to częsty scenariusz? czy robię coś źle? Co powinienem zrobić?


title: Jak sprawić, by środowisko pracy programisty było mniej błyszczące?

text: W zeszłym roku miałem wypadek sportowy i od tego czasu moje lewe oko jest trochę wrażliwe. Zwłaszcza jeśli patrzę w jasne i błyszczące kolory, bardzo szybko się męczę i nie mogę się na niczym skupić. Biel to najgorszy kolor w historii! Niestety większość aplikacji, z których korzystam w moim środowisku pracy (Firefox, Eclipse, Visual Studio, Tetris) ma bardzo jasne białe tło. To naprawdę boli mnie w oko. Czy jest więc prosty sposób na ogólne używanie schematów kolorów na laptopie, aby wszystko nie było tak jasne? Oczywiście mógłbym wszędzie zmienić domyślny schemat kolorów, ale czy nie ma na to prostszego rozwiązania? Lub jakieś zalecenia, jakie są dobre schematy kolorów, aby były mniej jasne, ale nadal wyraźnie czytelne?


title: Jakie są dobre przykłady użycia asercji do wykrywania błędów?

text: Większość przykładów użycia asercji, które znalazłem, wydaje się dotyczyć radzenia sobie z _błędami w czasie wykonywania_ , takimi jak brak pamięci. Nie o to mi chodzi. Dobrym przykładem użycia asercji do wykrywania błędów jest następujący fragment artykułu Wikipedii o asercjach: int total = countNumberOfUsers(); if (total % 2 == 0) { // suma jest parzysta } else { // suma jest nieparzysta i nieujemna attach(total % 2 == 1); } W tym przypadku programista błędnie założył, że `i % 2` może mieć tylko dwie różne wartości, a potwierdzenie wykryje ten błąd. Jakie są inne dobre przykłady użycia asercji do wykrywania błędów?


title: Czytanie zestawu przydatne do wglądu podczas pisania C/C++?

text: Chociaż w większości przypadków nie jest to konieczne, ostatnio zacząłem czytać wygenerowany zestaw mojego kodu C co jakiś czas, gdy jestem ciekawy, jakie optymalizacje robi mój kompilator. _Szczególnie dla kodu niskopoziomowego lub funkcji, które są wywoływane wiele razy._ Przykłady obejmują: * Sprawdzenie, czy zmiana w kodzie C ma jakikolwiek wpływ na wygenerowany kod. * Sprawdzenie, czy to samo wyrażenie użyte dwukrotnie jest zoptymalizowane w jedno lub czy przypisanie zmiennej ma znaczenie. * Sprawdź zmiany, które mogą powodować nadmierną wielkość kodu. Nie jest to w żaden sposób doskonała metoda, możliwe, że jakaś różnica w generowanych wynikach jest problemem, z powodu wszelkiego rodzaju wewnętrznej logiki i progów w kompilatorze, ale czasami jest to interesujące. W tym momencie, patrząc na zespół, mogę wyszukać każde polecenie, ale tak naprawdę nie czytać zestawu _(amd64, jak to się dzieje)_. Więc moje pytanie brzmi, czy ktoś uznał za przydatne nauczenie się pewnej ilości asemblera, aby napisać lepszy kod C? (lub przynajmniej uzyskaj więcej wglądu w ich kod). * Jeśli tak, to ile warto wiedzieć? * Jakie problemy pomogło Ci to rozwiązać? * * * _Uwaga, niebezpieczeństwo polega na tym, że pisze się kod w C ukierunkowany na assembler, który jest bardzo specyficzny dla własnego systemu deweloperów - wszelkie zalety mogą zostać utracone na innym kompilatorze lub architekturze, biorąc to pod uwagę, nadal interesują mnie inni deweloperzy doświadczenie_


title: Jak zapobiec błędnemu kole testowania przez klienta?

text: Niedawno zadałem to pytanie i ten komentarz i skłoniłem mnie do zastanowienia się nad całym procesem udostępniania aktualizacji klientom. Planowana jest kolejna aktualizacja naszego oprogramowania, a poprzednim razem poszła strasznie źle z powodu regresji, kiepskich testów itp. Tym razem chcemy zapobiec scenariuszowi, który testujemy za pośrednictwem naszego klienta i wprowadziliśmy kilka testów jednostkowych i inne drobne ulepszenia . Jednak nie ma wystarczająco dużo czasu, aby wykonać testy jednostkowe dla wszystkich funkcji, którym brakuje testów jednostkowych lub funkcji, które muszą być jeszcze skompilowane. Tak więc odpowiedź na to pytanie „Zrób więcej testów jednostkowych” nie jest odpowiednia z powodu braku czasu, infrastruktury itp. Każdy błąd i funkcja będą testowane/sprawdzane przez innego programistę, ale nie zostanie to zrobione perfekcyjnie. oczywiście (nadal jesteśmy ludźmi :)). Moje pytanie brzmi: po wydaniu aktualizacji, w jaki sposób uchronimy się przed błędnym kołem testowania przez klientów, nie będąc w stanie dodać kolejnych testów jednostkowych? * * * Poprzednim razem staraliśmy się jak najlepiej przetestować oprogramowanie przed i po wydaniu. Po terminie wciąż szukaliśmy i naprawialiśmy błędy, ale klient również znalazł niektóre z nich. Dlatego publikujemy aktualizację, gdy tylko byliśmy pewni, że łatka poprawia jakość. Byliśmy tak zajęci znajdowaniem błędów i ich naprawianiem, że nie traciliśmy czasu na tworzenie testów jednostkowych. Tym razem nie mamy jeszcze solidnego planu, stąd pytanie. Jak wspomniano wcześniej, dodaliśmy kilka testów jednostkowych, ale z pewnością nie wystarczyło. Poszukujemy również nowych kolegów, ale nie jest łatwo ich znaleźć, a kierownictwo ma dość wysokie standardy. Mamy sporo kandydatów i wygląda na to, że wkrótce zdobędziemy co najmniej jednego nowego współpracownika, ale wciąż zajmuje trochę czasu, aby go uruchomić. Pierwszą rzeczą, na którą nałożymy nowego kolegi, będzie stworzenie testów jednostkowych. Tak więc zależnościami są doświadczenie, umiejętności i czas, w którym może dołączyć do czasu. Innym problemem związanym z brakiem programistów jest to, że jesteśmy tak skoncentrowani na naprawieniu błędów i funkcji, że nie mamy zbyt wiele czasu na myślenie o tym, „jak możemy ulepszyć proces aktualizacji”. (Zadaję te pytania w wolnym czasie). * * * Podsumowanie kroków, które postaram się podjąć: * Postaraj się pozyskać testera przed ukończeniem wydania * Dodaj testy jednostkowe podczas tworzenia funkcji, jeśli nie ma wystarczająco dużo czasu, zaplanuj je po wydaniu. * Po zwolnieniu, jeśli wystąpi jakakolwiek regresja, utwórz testy jednostkowe podczas naprawiania błędów. * Po wydaniu publikuj częściej w mniejszych porcjach, co ułatwia wydawanie funkcji i naprawianie błędów o mniejszym priorytecie.


title: Jaki jest model matematyczny klasy Pythona?

text: Rozumiem, że klasyczny model z artykułów lambda nie jest odpowiedni dla Pythona. A domknięcia nie są matematycznym modelem implementacji systemu Python. Więc jaki to model?


title: Czy maszyna deweloperska powinna znajdować się w maszynie wirtualnej?

text: Ten post autorstwa Roba Conery (zwróć uwagę na slug) mówi, że środowisko programistyczne powinno być uruchamiane wewnątrz maszyny wirtualnej. Widzę, co mówi i zazwyczaj się z tym zgadzam, ale wciąż czuję się trochę nieswojo. Teraz, gdy wirtualizacja jest tak dojrzała, że nawet systemy produkcyjne działają z prędkością maszyn wirtualnych, nie stanowi problemu, ale jak mówię, coś mnie tutaj niepokoi. Jakie jest Twoje zdanie na temat wirtualizacji maszyny deweloperskiej? Czy już to zrobiłeś? Jeśli tak, jakieś pułapki lub pułapki na drodze?


title: Co należy zrobić, aby skalować witrynę o dużym natężeniu ruchu?

text: Jakie najlepsze praktyki należy zastosować w przypadku witryny internetowej, która musi być „skalowana” w celu obsługi pojemności? Jest to szczególnie istotne teraz, gdy ludzie rozważają chmurę, ale mogą nie znać podstaw. Chciałbym usłyszeć o wszystkim, co uważasz za najlepsze praktyki, od zadań na poziomie rozwoju, przez infrastrukturę, po zarządzanie.


title: Tanie programowalne, przenośne urządzenie

text: Od dłuższego czasu uwielbiam programować coś, co mogę zabrać ze sobą - bardzo mały komputer, taki jak programowalny kalkulator, gameboy, komputer kieszonkowy czy telefon komórkowy. Jednak nie znalazłem jeszcze nic pasującego! Rzecz, na którą patrzę, to cena, ponieważ nie stać mnie na wydawanie na nią zbyt dużych pieniędzy. * Jakie są tanie przenośne urządzenia programowalne? Wszystko czego potrzebuję to wsparcie dla wgrywania kodu asemblera z mojego komputera. Nie obchodzi mnie wyświetlacz, wystarczy zwykły wyświetlacz LCD. To samo dotyczy przycisków, które przeglądałem w programowalnych kalkulatorach, przenośnych konsolach do gier, takich jak PSP i innych, jednak nie znalazłem niczego, co by pasowało :(


title: Co oznacza „warsztat” (w kontekście pracy programistycznej/środowiska)

text: Ciągle spotykam się z terminem „warsztat” w kontekście pracy programistycznej/środowiska, ale mimo googlowania nie mogę się dowiedzieć, do czego to właściwie odnosi się? Czy ktoś może mnie oświecić?


title: Technika rozwiązywania twardej logiki programowania

text: Słyszałem o wielu technikach, które są używane przez programistę/menedżera oprogramowania do rozwiązywania twardej logiki programistycznej lub tworzenia przepływu aplikacji i ten przepływ będzie wdrażany przez programistów w celu stworzenia rzeczywistej aplikacji. Niektóre z technik, które znam, to: 1. Schemat blokowy 2. Układ ekranu 3. Diagram przepływu danych 4. Diagram E-R 5. Algorytm każdego programu, który chciałbym poznać o dwóch faktach: (1) Czy są jakieś techniki Inne niż to ? (2) Który z nich jest najodpowiedniejszy do rozwiązania trudnej logiki programowania i procesu tworzenia aplikacji?


title: Entity Framework i separacja warstw

text: Próbuję trochę popracować z Entity Framework i dostałem pytanie dotyczące separacji warstw. Zwykle używam podejścia UI -> BLL -> DAL i zastanawiam się, jak tutaj użyć EF. Mój DAL byłby zwykle podobny do GetPerson(id) { // some sql return new Person(...) } BLL: GetPerson(id) { Return personDL.GetPerson(id) } UI: Person p = personBL.GetPerson(id ) Moje pytanie teraz brzmi: skoro EF tworzy mój model i DAL, czy to dobry pomysł, aby zawinąć EF w mój własny DAL, czy to tylko strata czasu? Jeśli nie muszę zawijać EF, czy nadal umieściłbym mój Model.esmx w jego własnej bibliotece klas, czy byłoby dobrze, gdybym po prostu umieścić go w mojej BLL i trochę tam popracować? Naprawdę nie widzę powodu, aby owijać EF w moim własnym DAL, ale chcę wiedzieć, co robią inni ludzie. Więc zamiast mieć powyższe, pominąłbym DAL i po prostu zrobiłbym: BLL: GetPerson(id) { using (TestEntities context = new TestEntities()) { var result = from p in context.Persons.Where(p => p.Id = id) wybierz p; }     }      Co robić?


title: Porady dotyczące biblioteki JavaScript do wizualizacji Yahoo Pipe Output

text: Obecnie piszę bibliotekę JavaScript. Jest to projekt dla szkoły, w którym potrzebuję ułatwić wizualizację danych z Yahoo Pipes. Format danych to ciąg JSON, który może zawierać wszystko, ale najczęściej zawiera listę elementów z różnymi atrybutami dla każdego elementu. To podejście jest dość ogólne i teraz zastanawiałem się, jaką funkcjonalność mógłbym wstawić do tej biblioteki. Również w jaki sposób mogę poradzić sobie z tym ogólnym przepływem danych, aby stworzyć użyteczną bibliotekę dla wszystkich rodzajów danych. Dane z Yahoo Pipes mogą być wiadomościami (tytuł, opis, postdata, obrazy, linki itp.) Yahoo Pipes również ma funkcjonalność parsowania plików CSV, dzięki czemu możliwe są również "tabele danych". Zastanawiałem się też nad strukturą biblioteki, jak najlepiej ją zaimplementować. Ogólnie rzecz biorąc, biblioteka musi załadować dane z potoku (ciąg JSON) i przekazać je do biblioteki wizualizacji, takiej jak Google Chart lub D3.js (dawniej Protovis) Uważam, że mój poziom umiejętności Javascript to „Rookie” :) Dzięki za odpowiedzi, wszelkie porady są mile widziane!


title: Czy partia operacji narusza zasady REST?

text: Czy narusza to zasady REST, aby REST API obsługiwał partię operacji (być może z gwarancjami transakcyjnymi), które można dodać do kolejki za pomocą POST? Ten projekt wydaje się być poza zakresem architektury REST, ale niekoniecznie go narusza, ale szukam tutaj autorytatywnych źródeł i/lub wyjaśnień pomocniczych, kiedy/dlaczego unikać lub preferować to podejście. Na przykład, Parse API obsługuje POST do tworzenia partii żądań, z których każde reprezentuje coś, co może być osobnym żądaniem REST, takie jak następujące (w cudzysłowie): curl -X POST \ -H "X-Parse-Application-Id: ${APPLICATION_ID}" \ -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "requests": [ { "metoda" : "PUT", "path": "/1/classes/GameScore/Ed1nuqPvcm", "body": { "score": 999999 } }, { "method": "DELETE", "path": "/1/ class/GameScore/Cpl9lrueY5" } ] }' \ https://api.parse.com/1/batch


title: Przedstawienie (nowej) metody testowania zespołowi

text: Kilka miesięcy temu zostałem zatrudniony w nowej pracy. ( **Jestem świeżo po studiach magisterskich z inżynierii oprogramowania** ) Firma składa się głównie z konsultantów ERP, ale zostałem zatrudniony w ich dość małym dziale web (6 programistów), naszym głównym zadaniem jest integracja ERP/ecom ( * *Sklepy internetowe zintegrowane z systemem ERP** ). Dział się rozrasta i **ostatnio mój menedżer poprosił mnie, żebym zaczął myśleć o wprowadzeniu testów do zespołu** , uwielbiam wyzwania, ale szczerze mówiąc trochę się boję (jestem najmniej doświadczonym członkiem zespołu) . Obecnie metodą testowania jest kręcenie się po sklepie internetowym i pytanie klienta, czy są tam produkty, czy wyglądają dobrze i czy zamówienia są prawidłowo przesłane do ERP. Otrzymujemy wiele przypadków pomocy technicznej dotyczących poprzednich projektów, w których klient lub klient klienta napotkał błędy, co - jak sądzę - jest powodem, dla którego mój menedżer chce bardziej ustrukturyzowanych testów. Od początku myślałem o pewnych (oczywistych?) ulepszeniach, takich jak patrzenie na specyfikację wymagań, posiadanie narzędzia do śledzenia problemów, umożliwiającego członkom zespołu rejestrowanie swojego czasu w wierszu „testy” w budżecie i rozpowszechnianie zadania wśród członków zespołu. Ale jak widzę, mamy trzy główne wyzwania: 1. **ogólne testowanie stron internetowych**. (testy integracji javascript, C#, ASP.NET i CMS) 2. (na żywo) **Testowanie integracji ERP** (klienci rzadko chcą płacić za środowiska testowe). 3. **przyjęcie metody w zespole** Lubię odpowiedzialność, ale obawiam się, że jestem trochę nad głową. Spodziewam się, że mój menedżer oczekuje ode mnie **zorganizowania jakiegoś warsztatu dla zespołu**, na którym zaprezentuję kilka technik i pomysłów oraz gdzie my (zespół) możemy wspólnie znaleźć rozwiązania. To, czego nauczyłem się w szkole, to głównie testowanie jednostkowe i weryfikacja programu, a nie testowanie w wielu systemach i aplikacjach. **Czego szukam tutaj, to referencje/porady/wskazówki/anegdoty; wszystko, co może pomóc mi stać się mądrzejszym i ulepszyć obecną metodę mojego zespołu.** (TL; DR: przeczytaj pogrubione części)


title: Rektyfikacja i dysproporcja obrazów stereofonicznych: jakie algorytmy?

text: Próbuję dowiedzieć się, jakie są obecnie dwa najskuteczniejsze algorytmy, które pozwalają, zaczynając od pary obrazów stereo L/R utworzonych za pomocą tradycyjnej kamery (tak dotkniętej nierównym wyrównaniem linii epipolarnych), wytworzyć parę dostosowanych obrazów plus ich szczegółowe informacje, patrząc na ich rozbieżność. Właściwie znalazłem wiele artykułów na temat tych dwóch metod, takich jak: * „Computing Rectifying Homographies for Stereo Vision” (Zhang – wydaje się być jednym z najlepszych tylko do prostowania obrazu) * „Trzystopniowa korekta obrazu” (Monasse) * „Rektyfikacja and Disparity” (pokaz slajdów autorstwa Navab) * „Szybki algorytm dopasowywania stereo w oparciu o obszar” (Di Stefano – wydaje się nieco niedokładny) * „Obliczanie korespondencji wizualnej z okluzjami poprzez cięcia wykresu” (Kolmogorov – ten daje bardzo dobrą mapę rozbieżności , z informacjami o okluzji, ale czy jest to skuteczne?) * "Oszacowanie mapy gęstych rozbieżności uwzględniające nieciągłości obrazu" (Alvarez - za dużo czasu na pierwszą recenzję) Czy ktoś mógłby mi dać kilka rad, jak zorientować się w tym szerokim temacie? Jaki algorytm/metodę powinienem traktować jako pierwszy, biorąc pod uwagę, że będę pracował na bardzo prostym wejściu: para lewego i prawego obrazu i nic więcej, żadnych więcej informacji (niektóre prace opierają się na dodatkowej, wstępnie wykonanej kalibracji informacje)? Mówiąc o działających implementacjach, jedyne ciekawe wyniki jakie do tej pory widziałem należą do tego oprogramowania, ale tylko do automatycznego poprawiania, a nie rozbieżności: http://stereo.jpn.org/eng/stphmkr/index.html funkcja „automatycznej regulacji” i wydaje się naprawdę skuteczna. Szkoda, że nie ma kodu źródłowego...


title: A* dowód kompletności algorytmu

text: Algorytm A* jest optymalny (pod warunkiem, że funkcja heurystyczna jest niedoszacowana), kompletny i dopuszczalny (pod pewnymi warunkami). Znam dowody dopuszczalności i optymalności. Ale jak udowodnić, że algorytm A* jest kompletny?


title: Jakie są realne pomysły na zbudowanie portfolio rozwoju inteligentnych urządzeń/konsoli?

text: Chciałbym zacząć zdobywać więcej kontraktów w obszarze rozwoju urządzeń mobilnych, smart-device i konsol, a mając niewielkie doświadczenie w tej dziedzinie, muszę zbudować portfolio przykładowych projektów. Większość mojego doświadczenia zawodowego opiera się na stosie .NET, więc jest to pomocne przy opracowywaniu systemów Windows Phone, Windows Metro i XBOX (nie związanych z grami), takich jak tworzenie interfejsu użytkownika Kinect, aplikacji multimedialnych itp. Ale muszę również zademonstrować że mogę zająć się rozwojem Androida, rozwojem Linuksa (tj. Aplikacje Smart TV), prawdopodobnie rozwojem Arduino i tak dalej. Mam narzędzia i wiedzę, aby przynajmniej wybić kilka przykładów Androida i Arduino, chociaż iOS i Linux nieco wykraczają poza moją strefę komfortu. W każdym razie, w jaki sposób mogę wykazać, że rozumiem i potrafię kodować dla tych platform? Aplikacje do wyszukiwania i filtrowania multimediów? Nawigacja Kinect? Aplikacja na Androida, która podaje lokalizację najbliższego Starbucksa na podstawie współrzędnych GPS? Wszelkie pomysły byłyby bardzo mile widziane.


title: Jak mogę wykorzystać JIRA do zarządzania projektami z Green Hopper?

text: Zastanawiam się nad wykorzystaniem JIRA + GreenHopper do zarządzania moim projektem. Widziałem, że Green Hopper służy do tworzenia User stories, sprintów. Nie jestem w stanie dowiedzieć się, jak mam dodawać zadania ani jak dzielić historyjki użytkownika na podhistorie. Czy najpierw muszę stworzyć projekt w JIRA, a następnie użyć Green Hoppera, czy mogę używać samodzielnego Green Hoppera do zarządzania projektami? Myślę o JIRA jako o trackerze problemów, a nie o zarządzaniu projektami.


title: Dylemat wzorca projektowego. Strategia wydaje się niewłaściwa?

text: Chciałbym uzyskać pomoc/poradę na temat wzorca projektowego lub podobnego, którego mógłbym użyć do rozwiązania mojego problemu. Mam w kodzie kilka wspólnych funkcjonalności i obecnie używam wzorca Strategy. Mam klasę bazową o nazwie "ProjectSectionBase" i stąd mam 2 klasy pochodne, "ProjectSectionStandard" i "ProjectSectionSuperior". Teraz problem polega na tym, że „ProjectSectionSuperior” ma wiele dodatkowych funkcji niż „ProjectSectionStandard” i stwierdzam, że w całym kodzie wywołuję takie metody: DirectCast(_projectSection, ProjectSectionSuperior). ponieważ IF typeof(_projectSectio) jest wtedy lepszy. Po prostu wydaje się, że projekt jest złej klasy. Zarówno standard, jak i superior mają wiele wspólnych funkcji, ale Superior ma o wiele więcej funkcji. Każda rada byłaby bardzo mile widziana.


title: Dlaczego firmy miałyby zezwalać na takie praktyki?

text: Oto sytuacja, która zwykle ma miejsce w niektórych firmach: Ogłoś interesujący produkt X. Obiecaj datę premiery. Wydanie w obiecanej dacie premiery, gotowe czy nie. Użytkownicy odkrywają i zgłaszają defekty. Wysyłaj łatkę za łatką za łatką za łatką za łatką. Moje pytanie brzmi: Ummm, jakie mogą być czynniki, które skłoniłyby ich do tolerowania tych niepożądanych praktyk? A więc, w imię jakości, co można praktycznie i realnie poprawić w tych praktykach? Przychodzą mi do głowy ograniczenia czasowe, opinie użytkowników, naciski sponsorów na firmę, brak pieniędzy.


title: Jak uczysz się wyrażeń regularnych?

text: Nie pytam **gdzie** się uczyć. Znalazłem wiele dobrych zasobów online, książek itp. Ale jak u licha sobie z nimi poradzę. Gdzie jest początek, koniec? Kiedy procesor wyrażeń regularnych przesuwa się po tekście, kiedy zatrzymuje się i próbuje innego dopasowania? itd. Mam ochotę rozgryźć hieroglify na egipskich piramidach.


title: Częste błędy w arytmetyce javascript

text: Natknąłem się na kilka dziwactw używających arytmetyki zmiennoprzecinkowej javascript, ale nigdy nie pamiętam ich z czubka głowy! **Jakie są najczęstsze błędy podczas używania JavaScript do matematyki?**


title: Preferowany sposób postępowania z danymi zdefiniowanymi przez klienta w aplikacji korporacyjnej

text: Załóżmy, że mamy małą korporacyjną aplikację internetową (intranetową) do zarządzania danymi dla dealerów samochodowych. Posiada ekrany do zarządzania klientami, stanami magazynowymi, zamówieniami, gwarancjami i warsztatami. Ta aplikacja jest instalowana w 10 witrynach klientów dla różnych dealerów samochodowych. Pierwsza wersja tej aplikacji została stworzona bez podawania danych specyficznych dla klienta. Na przykład, jeśli dealer A chciał mieć możliwość dołączenia zdjęcia do klienta, dealer B chciał dodać kontakt e-mail do każdego warsztatu, a dealer C chciał dołączyć wiele raportów PDF do gwarancji, każda taka funkcja został dodany do aplikacji, więc wszyscy klienci otrzymali wszystko na nowej aktualizacji. Jednak nieuchronnie doprowadzi to do konfliktów, ponieważ liczba klientów wzrośnie, ponieważ ich wzorce użytkowania są unikalne, a na przykład, jeśli konkretny dealer zażądał możliwości dołączenia (z jakiegoś powodu) koloru pozycji magazynowej (i bycia w stanie wyszukiwać według tego koloru) jako wymagany przedmiot, inni naprawdę nie potrzebowaliby tej funkcji i zdecydowanie nie będą chcieli, aby był to wymagany przedmiot. Albo jeden dealer chciałby zarządzać kontaktami e-mail dla swoich pracowników na osobnym ekranie aplikacji. Wyobrażam sobie, że rozwiązaniem jest użycie pewnego rodzaju systemu wtyczek, w którym mielibyśmy rdzeń aplikacji, który zapewnia standardowe funkcje, takie jak klienci, zapasy itp., oraz wszystkie zainstalowane wtyczki klienta. Pojawiłyby się różne rodzaje wtyczek - samodzielne ekrany, takie jak kontakty e-mail dla pracowników, z własną logiką, oraz wtyczki klienta, które rozszerzałyby lub ozdabiały elementy ekwipunku (takie jak zdjęcie lub kolor). Wtyczki inwentaryzacyjne (klient, zamówienia,...) wymagają procedury instalacji, zaczepów do podłączenia do edytora elementów, wyświetlania elementów, filtrowania elementów do wyszukiwania, zaczepu zapasowego i tym podobnych. Czy to właściwy sposób na rozwiązanie tego problemu?


title: Czy RSpec i Cucumber naprawdę są tego warte?

text: Jestem całkiem nowym programistą Rails (około roku) zawsze próbującym odkrywać nowe perełki, nowe sposoby myślenia, po prostu uwielbiam ten framework. Jedyne, co mnie niepokoi, to testowanie. Wiem, że większość programistów RoR to testerzy uzależnieni i rozumiem zalety dużego pakietu testowego, ale kiedy zaczynam testować, nigdy nie dostaję tak dużego pakietu i zawsze zastanawiam się „Czy testuję we właściwy sposób? wydajny ?". Często mam do czynienia z testami integracyjnymi testującymi tylko sposób, w jaki zachowuje się aplikacja... Mam więc kilka pytań, aby poprawić się jako programista Rails. Po pierwsze, czy naprawdę warto testować? Chodzi mi o to, czy czas poświęcony na pisanie testów naprawdę jest tego wart? Potem używam RSpeca, niedawno odkryłem Cucumber, używałem go przez jakiś czas, ale nie wiem, czy pisanie wszystkich tych kroków jest naprawdę warte zachodu ? Wiem, że mogę ponownie użyć kroków, ale nigdy nie wiem, czy te kroki są zbyt kompletne, czy nie: Na przykład używałem „Gdy jestem zalogowany jako (.+)”, ale nie wiem, czy muszę powiedzieć w swojej definicji `Biorąc pod uwagę użytkownika o nazwie $1`, ponieważ może zduplikować użytkownika, jeśli kiedykolwiek zostanie utworzony, ale nie jest to warte zachodu zawsze o krok przed `Ponieważ jestem zalogowany jako (.+)`. To dość dużo kodu, który może rzadko się przyda. Chyba nie ma nowych błędów w testowanych codziennie częściach... Czy więc Cucumber jest naprawdę wart zachodu w porównaniu do RSpeca? Naprawdę chcę Ci podziękować za przeczytanie mnie, ponieważ jest to pierwsza wiadomość, którą zamieszczam, która jest naprawdę długa i z góry dziękuję za wszystkie odpowiedzi, mając nadzieję, że pomoże to innym nowicjuszom Rails takim jak ja w przyszłości.


title: Czy istnieje jakieś ograniczenie licencji, aby uniknąć binarnego tłumaczenia CIL na niestandardowy kod bajtowy?

text: Przed właściwym pytaniem pozwól, że podsumuję, co próbuję zrobić. Planuję zaimplementować małe, oparte na rejestrach środowisko uruchomieniowe VM z obsługą JIT. Zamiast tworzyć odpowiedni kompilator (który jest twardym IMO) dla super wymyślnego języka domowego, zdecydowałem się zaimplementować translator binarny z odpowiedniego kodu bajtowego (podobnie jak podejście Dalvik VM). Biorąc pod uwagę kod bajtowy CIL vs. Java, CIL jest najlepszy dla moich potrzeb. Jako notatkę chciałem wymienić kilka ważnych rzeczy, aby uniknąć możliwych pomyłek: 1. Podstawowa biblioteka podstawowa (BCL) lub żadne specyficzne zestawy Microsoftu nie będą dekompilowane i tłumaczone. Zamiast tego, odniesienia BCL będą podlegały zastąpieniu przez moje specyficzne kody VM w fazie translacji (podobnie jak podejście COSMOS Plugs). 2. Wszystkie kody operacyjne CIL nie będą tłumaczone. Tak więc bezpośrednie użycie CIL nie jest opcją. 3. „Dowolny” plik wykonywalny .NET nie jest przeznaczony do tłumaczenia. .NET będzie narzędziem, a nie celem. 4. Dalvik VM jest dobrym przykładem tego, co próbuję zrobić. W przypadku Dalvik programy są napisane w Javie, ale kody bajtowe Javy są tłumaczone na kody operacyjne Dalvik. W moim przypadku programy będą pisane w .NET, ale CIL zostaną przetłumaczone na „wymyślne” kody operacyjne VM. 5. Sama niestandardowa maszyna wirtualna będzie zamknięta i początkowo będzie dostępna w wolnym oprogramowaniu. Ale z czasem może być używany w projektach open source i/lub komercyjnych. Czy są jakieś ograniczenia licencji, aby tego uniknąć? Jeśli tak, jak mogę uniknąć ograniczeń? Tworzysz tylko aplikacje non-profit czy tworzysz je jako open source? **EDYTUJ:** Nie będę używać **CLI** , **CLR** ani żadnej innej rzeczy, która jest dystrybuowana przez Microsoft. Nie będę też redystrybuować ani integrować **SSCLI** z moimi aplikacjami. **Pytanie dotyczy tłumaczenia kodu _CIL_ na niestandardowe kody bajtowe, które zostaną zrobione przy użyciu moich własnych narzędzi**. Tak więc jest to dekompilacja moich własnych niestandardowych plików wykonywalnych .NET na różne kody bajtowe, aby zaspokoić moje potrzeby w fazie produkcyjnej. Tak więc zasadniczo będę używał kompilatorów .NET jako interfejsu do mojego dekompilatora, ale nie będę też redystrybuować kompilatorów .NET. **EDIT2: CLI I CIL TO RÓŻNE RZECZY!**


title: Jak przedstawić wykres z wieloma krawędziami dozwolonymi między węzłami i krawędziami, które mogą selektywnie znikać?

text: Próbuję dowiedzieć się, jakiego rodzaju struktury danych użyć do modelowania hipotetycznego, wyidealizowanego użycia sieci. W moim scenariuszu wielu użytkowników, którzy są wrogo nastawieni do siebie, próbuje tworzyć sieci komputerów, w których znane są wszystkie potencjalne połączenia. Komputery, z którymi jeden użytkownik musi się połączyć, mogą jednak nie być takie same, jak te, z którymi musi się połączyć inny użytkownik; użytkownik 1 może potrzebować podłączyć komputery A, B i D, podczas gdy użytkownik 2 może potrzebować podłączyć komputery B, C i E. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/MeLa2.png) _Obraz wygenerowany za pomocą NCTM Graph Creator_ Myślę, że sednem tego będzie nieskierowany cykliczny wykres, z węzłami reprezentującymi komputery i krawędziami reprezentującymi kable Ethernet. Jednak ze względu na naturę scenariusza istnieje kilka nietypowych cech, które wykluczają listy sąsiedztwa i macierze sąsiedztwa (przynajmniej bez nietrywialnych modyfikacji): 1. krawędzie mogą stać się ograniczone; oznacza to, że jeśli jeden użytkownik uzyska dane połączenie sieciowe, żaden inny użytkownik nie może korzystać z tego połączenia * w tym przykładzie zielony użytkownik nie może połączyć się z komputerem A, ale czerwony użytkownik połączył B z E, mimo że nie ma bezpośredniego połączenia między ich 2. w niektórych przypadkach dana para węzłów będzie połączona więcej niż jedną krawędzią * w przykładzie są dwa niezależne kable biegnące od D do E, więc użytkownicy zielony i niebieski mogli połączyć te maszyny bezpośrednio ; jednak czerwony nie może już nawiązać takiego połączenia 3. jeśli dwa komputery są połączone więcej niż jednym kablem, każdy użytkownik może posiadać nie więcej niż jeden z tych kabli będę musiał wykonać kilka operacji na tym wykresie, takich jak: * określenie, czy jakaś konkretna para komputerów jest podłączona dla danego użytkownika * określenie optymalnej ścieżki dla danego użytkownika do połączenia z komputerami docelowymi * określenie połączenia z komputerem o największym opóźnieniu dla danego użytkownika (tj. najdłuższej ścieżki bez rozgałęzień) Moją pierwszą myślą było po prostu stwórz kolekcję wszystkich krawędzi, ale to okropne dla wyszukiwania. Najlepszą rzeczą, jaką mogę teraz zrobić, jest zmodyfikowanie listy sąsiedztwa tak, aby każda pozycja na liście zawierała nie tylko długość krawędzi, ale także jej koszt i obecnego właściciela. Czy to rozsądne podejście? Zakładając, że przestrzeń nie jest problemem, czy rozsądne byłoby tworzenie wielu kopii wykresu (po jednej dla każdego użytkownika) zamiast pojedynczego wykresu?


title: Jak układać instrukcje if, gdy porządek logiki jest nieistotny?

text: Zasadniczo mam na swojej stronie szereg logiki, która może prowadzić do 5 łącznych wyników. Zasadniczo dwa różne testy if, a następnie instrukcja catch all else. Na przykład: if cond1: if mod1: #rób rzeczy elif mod2: #rób rzeczy elif cond2: if mod1: #rób rzeczy elif mod2 #rób rzeczy inne: #rób rzeczy, o których myślałem o przepisaniu w ten sposób: if cond1 i mod1 : #rób rzeczy elif cond1 i mod2: #rób rzeczy elif cond2 i mod1: #rób rzeczy elif cond2 i mod2: #rób rzeczy inne: #rób rzeczy Czy jest jakaś prawdziwa różnica w tych dwóch opcjach kodowania/lepszy wybór dla tego rodzaju testów logicznych?


title: Jeśli w moim oprogramowaniu używam komponentów na licencji MIT, czy moi klienci mogą je odsprzedać?

text: Moja amatorska lektura licencji MIT sugeruje, że każde oprogramowanie, które jest rozprowadzane wśród moich klientów, zawierające dowolne komponenty licencjonowane przez MIT, może być w całości rozpowszechniane za darmo. > Niniejszym zezwala się [...] na korzystanie z Oprogramowania bez ograniczeń, w tym [...] na [...] rozpowszechnianie kopii Oprogramowania. > > Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu będą dołączone do > wszystkich kopii lub istotnych części Oprogramowania. Nie jest jasne, czy „Oprogramowanie” odnosi się do całej aplikacji, czy tylko do pojedynczego komponentu licencjonowanego przez MIT. Więc co to jest?


title: Po co zwracać XML/JSON dla żądań API, czy nie możemy po prostu bezpośrednio przetworzyć żądania i zwrócić zmodyfikowaną stronę internetową (HTML/CSS/JS)?

text: Załóżmy, że użytkownik prosi o jakiś fragment danych. Zazwyczaj dane są przetwarzane przez serwer, a następnie zwracane w formacie XML/JSON. Zgaduję, że inny element przetwarzania przekonwertuje go na HTML/CSS, aby można go było wyświetlić w przeglądarce. Dlaczego zawracamy sobie głowę zwracaniem XML/JSON dla żądań API? Dlaczego nie możemy po prostu bezpośrednio przetworzyć tego, czego chce użytkownik i po prostu zwrócić zmodyfikowaną stronę internetową (HTML/CSS/JS)?


title: Jaki interfejs API jest wymagany do uzupełniania kodu/podświetlania składni/podobnych funkcji IDE?

text: W swoim czasie rozwijałem trochę języka i mam dość prosty prototyp, który implementuje niektóre z najbardziej podstawowych funkcji. Teraz patrzę na skalowanie i nie chcę popełnić paskudnego błędu architektonicznego, w którym muszę masowo przerobić wszystko, aby wesprzeć te funkcje. Więc chciałbym wiedzieć o kluczowych wymaganych funkcjach API. W tej chwili mam Lekser może działać na dowolnym buforze wejściowym za pomocą iteratorów, tokeny są dostępne do wglądu przed przekazaniem do parsera, a także udostępniam hak na komentarze. Parser może operować na dowolnym strumieniu tokenów (w ogóle nie zakodowanym na stałe w moim lekserze), a konstrukcja AST może być podmieniona. Dodałem też adnotacje do AST z informacjami o lokalizacji. Ponadto AST jest łatwo dostępny do wglądu przed analizą. Wreszcie, wiele funkcji analizy jest ocenianych leniwie, więc łatwo jest uzyskać ich semantyczną reprezentację z AST. Ale nie jestem pewien, jakie cechy te semantyczne reprezentacje muszą być łatwo dostępne dla takich wysiłków. Jakieś sugestie co jest konieczne w tym zakresie?


title: Diagram aktywności, czy węzeł scalający może mieć więcej niż 1 wyjście?

text: Istnieje prosty system, który pozwala użytkownikom na 4 rzeczy: DODAJ, EDYTUJ, USUŃ, WYDRUKUJ dane. Mam zamiar go modelować (jestem całkowicie nowy w diagramach aktywności UML) i z notacji nie rozumiem, czy węzeł decyzyjny może mieć więcej niż 3 wejścia? Powinno być, inaczej jak bym to zrobił. W każdym razie użytkownik może wykonać akcję i zrobić to ponownie, więc potrzebna jest pętla. Ale mówi się, że węzeł scalający ma tylko jedno wyjście, co nie miałoby miejsca. Obraz powinien być jasny, o co mi chodzi. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/7FqtI.png)


title: Programista PHP, jak rozwiązać problemy związane z javascriptem w programie z milionami linii

text: Jestem ekspertem w zakresie PHP. W moim zadaniu nadanym przez mojego przełożonego jest kilka błędów związanych z JavaScriptem. Próbowałem je naprawić za pomocą Firebuga. Jest to czasochłonne. Czy są inne sposoby? 1. Czy są jakieś dobre IDE do rozwiązania tego problemu? 2. Czy oprócz Firebuga są jakieś inne narzędzia programistyczne?


title: Błędy logowania spowodowane przez wyjątki głęboko w aplikacji

text: Jakie są najlepsze praktyki dotyczące rejestrowania głęboko w źródle aplikacji? Czy posiadanie wielu wpisów w dzienniku zdarzeń dla pojedynczego błędu to zła praktyka? Załóżmy na przykład, że mam system ETL, którego etap transformacji obejmuje: transformator, potok, algorytm przetwarzania i silnik przetwarzania. Krótko mówiąc, transformator pobiera plik wejściowy, analizuje rekordy i wysyła je przez potok. Potok agreguje wyniki algorytmu przetwarzania (który może wykonywać przetwarzanie szeregowe lub równoległe). Algorytm przetwarzania przesyła każdy rekord przez co najmniej jeden aparat przetwarzania. Mam więc co najmniej cztery poziomy: Transformator -> Pipeline -> Algorytm -> Silnik. Mój kod może wtedy wyglądać mniej więcej tak: class Transformer { void Process(InputSource input) { try { var inRecords = _parser.Parse(input.Stream); var outRecords = _pipeline.Transform(inRecords); } catch (wyjątek ex) { var internal = new ProcessException(input, ex); _logger.Error("Nie można przeanalizować źródła " + input.Name, internal); wrzucić do środka; } } } class Pipeline { IEnumerable<Result> Transform(IEnumerable<Record> records) { // UWAGA: brak try/catch, ponieważ nie mam żadnych przydatnych informacji do dostarczenia // w tym momencie procesu var results = _algorithm.Process( dokumentacja); // badaj i rób przydatne rzeczy z wynikami zwracaj wyniki; } } class Algorytm { IEnumerable<Result> Process(IEnumerable<Record> records) { var results = new List<Result>(); foreach (silnik var w Silnikach) { foreach (zapis var w rekordach) { spróbuj { silnik.Process(rekord); } catch (wyjątek ex) { var inner = new EngineProcessingException(silnik, rekord, ex); _logger.Error("Silnik {0} nie może przeanalizować rekordu {1}", silnik, rekord); wrzucić do środka; } } } } } class Engine { Przetwarzanie wyników (rekord) { for (int i=0; i<record.SubRecords.Count; ++i) { try { Validate(record.subRecords[i]); } catch (wyjątek ex) { var inner = new RecordValidationException(record, i, ex); _logger.Error( "Weryfikacja podrekordu {0} nie powiodła się dla rekordu {1}", i, rekord ); } } } } Jest kilka ważnych rzeczy, na które należy zwrócić uwagę: * Pojedynczy błąd na najgłębszym poziomie powoduje trzy wpisy w dzienniku (brzydkie? DOS?) * Zgłoszone wyjątki zawierają wszystkie ważne i przydatne informacje utrata przydatnych informacji na niższym poziomie. Przemyślenia i obawy: * Nie lubię mieć tak wielu wpisów w dzienniku dla każdego błędu * Nie chcę stracić ważnych, przydatnych danych; wyjątki zawierają wszystkie ważne informacje, ale ślad stosu jest zwykle jedyną rzeczą wyświetlaną poza wiadomością. * Mogę logować się na różnych poziomach (np. ostrzegawczy, informacyjny) * Klasy wyższego poziomu powinny być całkowicie nieświadome struktury wyjątków niższego poziomu (które mogą się zmieniać w miarę zastępowania różnych implementacji). * Informacje dostępne na wyższych poziomach nie powinny być przekazywane na niższe poziomy. Tak więc, aby powtórzyć główne pytania: Jakie są najlepsze praktyki dotyczące rejestrowania głęboko w źródle aplikacji? Czy posiadanie wielu wpisów w dzienniku zdarzeń dla pojedynczego błędu to zła praktyka?


title: Kontrolki XAML w WinForms

text: Rozważamy przekonwertowanie naszej aplikacji WinForms na aplikację WPF. Jednym z powodów jest to, że WPF/XAML wydaje się być przyszłością. Korzystamy również z kontroli stron trzecich, które chcielibyśmy mieć możliwość wycofania. Dokonanie tej konwersji wydaje się jednak dość dużym i czasochłonnym przedsięwzięciem. Czy byłoby sensowne opracowanie kontrolek XAML, które mogłyby być używane w naszej aplikacji WinForms jako pierwszy krok w procesie? Myślę, że te same kontrolki byłyby następnie używane w aplikacji WPF, a cały wygląd, działanie i funkcjonalność byłyby wbudowane w kontrolki w obu środowiskach.


title: Formularze przesyłania plików: bezpieczeństwo

text: WIĘC buduję aplikację do przesyłania plików. Płacimy naukowcom za dostarczanie informacji o szkodnikach, chorobach i robakach (dla roślin). Potrzebujemy możliwości przeciągania i upuszczania pliku, aby go przesłać. Pojawia się pytanie, czy ponieważ użytkownicy będą uwierzytelniani i konfigurowani przez nas, konieczne będzie włączenie skanera antywirusowego, aby zapobiec przesyłaniu i wstawianiu złośliwych plików. Jak ważne jest to?


title: Najczystszy język programowania funkcjonalnego?

text: Interesuje mnie lepsza nauka programowania funkcjonalnego. Aby to zrobić, wydaje się oczywiste, że powinienem zmusić się do używania możliwie najczystszego funkcjonalnego języka programowania. Dlatego proszę tutaj mniej więcej o uporządkowanie funkcjonalnych języków programowania według ich czystości. Wydaje mi się, że bardziej praktyczne byłoby nauczenie się Lisp lub Clojure (lub Scheme, lub Scali itp.), ale z tego, co ostatnio słyszałem, bardzo trudno byłoby pobić Haskella w nauczaniu kogoś zasad programowania funkcjonalnego. Jeszcze nie jestem tego pewien, więc **Pytam Cię:** jaki jest najczystszy funkcjonalny język programowania? Zamówienie byłoby świetne, gdyby kilku rywalizowało o wspaniały tytuł najczystszego funkcjonalnego języka programowania.


title: Przygotowujesz się do przeglądu kodu jako programista?

text: Poszukuję tutaj kilku pomysłów. Przeczytałem artykuł Jak należy przeprowadzać przeglądy kodu i Przeglądy kodu, jakie są zalety? które były bardzo pouczające, ale nadal potrzebuję większej jasności w odpowiedzi na poniższe pytanie. Moje pytanie brzmi: 1. Będąc deweloperem docelowym, czy możesz zasugerować kilka najlepszych praktyk, które deweloper może zastosować, zanim jego kod zostanie poddany przeglądowi. * Obecnie ćwiczę następujące metody * PPT dla logicznego przepływu * Szczegółowe komentarze. **Problem: mimo że wdrożyłem powyższe praktyki, nie pomagają one w przeglądzie. Problem, z którym się zetknąłem, polega na tym, że gdy nawiązuje się pewna logika, ciągle szukam implementacji i przepływu, a zbyt wiele czasu marnuje się w procesie i działam na nerwy.** Myślę, że wielu programistów przechodziłoby przez co Ja też przechodzę.


title: Czyją odpowiedzialnością (finansową) są błędy regresji?

text: Zróbmy taki scenariusz: istnieje projekt średniej wielkości i jesteś do niego przydzielony, aby dodać nowe funkcje. Projekt nie posiada testów jednostkowych ani dedykowanej osoby QA. Jesteś tym, który musi dodawać nowe funkcje i dbać o naprawę błędów regresji (link). Kiedy pojawia się błąd regresji, czy jesteś osobą odpowiedzialną (pod względem finansowym) czy klientem? Lub zapytać w inny sposób, gdy otrzymujesz wynagrodzenie za dodanie nowych funkcji w pracy w niepełnym wymiarze godzin i wystąpi błąd regresji, czy powinieneś to naprawić za darmo, czy powinieneś otrzymać wynagrodzenie, ponieważ projekt nie ma testów jednostkowych ani dedykowanego pracownika QA?


title: Konwertowanie dużych plików w Pythonie

text: Mam kilka plików o rozmiarze ~64 GB, które myślę, że chciałbym przekonwertować do formatu hdf5. Zastanawiałem się, jakie byłoby najlepsze podejście do tego? Czytanie linia po linii wydaje się trwać dłużej niż 4 godziny, więc myślałem o użyciu wieloprocesowego przetwarzania w sekwencji, ale liczyłem na jakiś kierunek, który byłby najbardziej wydajnym sposobem bez uciekania się do hadoop. Każda pomoc byłaby bardzo mile widziana. (i dziękuję z góry) EDIT: W tej chwili robię tylko podejście `for line w fd:`. Po tym teraz po prostu sprawdzam, czy wybieram właściwy rodzaj danych, które są bardzo krótkie; Nigdzie nie piszę, a ukończenie tego zajmuje około 4 godzin. Nie mogę odczytać bloków danych, ponieważ bloki w tym dziwnym formacie pliku, który czytam, nie są standardowe, przełączają się między trzema różnymi rozmiarami ... i możesz tylko powiedzieć, który z nich można rozpoznać, czytając kilka pierwszych znaków bloku.


title: Jaki jest najlepszy sposób obsługi odwołań w aplikacji .NET?

text: Ostatnio w pracy napotkaliśmy problem polegający na tym, że oznaczyliśmy/rozgałęziliśmy projekt i mieliśmy pewne problemy z kompilacją z powodu odniesień dll/projektów, które wskazywały na starą strukturę folderów. Stworzyliśmy folder „zewnętrzny bin” dla każdego z projektów i skopiowaliśmy do tych folderów pliki dll, do których się odwołujemy. Czy to najlepszy sposób, czy też istnieje specyficzny standard branżowy, aby sobie z tym poradzić?


title: Wspólne obowiązki QA w zespole Agile

text: Przez wiele lat nasza grupa programistów IT stosowała się do metodyki tworzenia oprogramowania wodospadowego z wydzielonymi grupami programistów specjalizujących się w tworzeniu baz danych, warstwie logicznej i tworzeniu warstwy prezentacji. Oczywiście mieliśmy też małą grupę ds. zapewnienia jakości, która zajmowała się wszystkimi obowiązkami związanymi z testowaniem. Wymagania, zadania i błędy były przekazywane tam i z powrotem drogą elektroniczną, rozmawiano bardzo mało, a cały proces był bolesny. W 2010 roku dokonaliśmy monumentalnego przejścia na Agile ze Scrumem i po kilku poważnych bólach dorastania naprawdę zaczęliśmy się wyróżniać jako cały zespół. Komunikacja jest stała, ludzie rozwijają się i uczą się od siebie każdego dnia, a nasze wydania są bardziej stabilne i znacznie bardziej zgodne z prawdziwymi priorytetami biznesowymi. Jednym z obszarów, w którym wciąż staramy się rozwijać, jest dzielenie obowiązków związanych z kontrolą jakości oprogramowania między wszystkich członków zespołu programistów, aby uciec od nastawienia do rzucania się przez płot, które nadal wydaje się utrzymywać, gdy przychodzi czas na testowanie funkcji. **Czy ktoś ma jakieś rady, jak rozwinąć zespół programistów w kierunku wspólnej własności aplikacji?** Obecnie praktykujemy XP, więc zaczęliśmy więcej programowania w parach między programistami i testerami podczas tworzenia testów jednostkowych i testów integracyjnych. Jednak wciąż wyzwaniem jest nakłonienie całego zespołu do aktywnego myślenia o strategiach testowania dla każdego sprintu. Nieuchronnie jedno lub dwa zadania typu „ _Write Test Cases_ ” są wrzucane do backlogu sprintu bez zastanowienia, co będzie testowane i jak najlepiej to osiągnąć oraz zorganizowane tak, aby cały zespół był świadomy, jakie testy zostały zakończone, co jest aktualnie w toku. przetestowane, a co pozostało do przetestowania. Przepraszam za długie pytanie, ale każda rada byłaby bardzo mile widziana.


title: Jak sprawić, by metoda była zsynchronizowana we wszystkich instancjach obiektu?

text: Dzisiaj zadano mi to pytanie z wywiadu i nie mogłem odpowiedzieć. : Jeśli masz dwa wystąpienia obiektu Person, a każde z nich ma zsynchronizowaną metodę setAddres. Teraz, jeśli był to tylko jeden obiekt i wiele wątków uzyskiwało do niego dostęp, nsynchronized upewni się, że tylko jedna metoda może uzyskać do niego dostęp na raz. Ale jeśli istnieją różne obiekty, jeden wątek nie będzie czekał na drugi przed wejściem do metody. Teraz pytanie brzmi... jeśli chcę, aby metoda była synchronizowana we wszystkich wystąpieniach Person Objects, jak to zrobić?


title: Czy piszesz wspólne warunki wstępne dla dużej liczby przypadków testów jednostkowych?

text: Słyszałem/przeczytałem pisanie wspólnych warunków wstępnych dla dużej liczby przypadków testowych jest złą rzeczą, ponieważ ta zależność może spowodować niepowodzenie dużej liczby przypadków testowych, jeśli coś się zmieni. Jakie są twoje przemyślenia na temat tego ? Jeśli tak jest, to jaki dokładnie jest cel metody setUp() w Junit, która jest uruchamiana przed każdym przypadkiem testowym? Jeśli ten sam kod wewnątrz setUp() jest uruchamiany przed każdym przypadkiem testowym, dlaczego nie można go uruchomić tylko raz przed uruchomieniem wszystkich przypadków testowych razem?


title: Czasy przetwarzania plików

text: Mam bardzo prosty program w Rubim, który otwiera plik słownika `sorted-words.txt` i drukuje wszystkie słowa po łacinie świńskiej. Przetestowałem jego szybkość i przy pierwszym uruchomieniu program zakończył się w około **1,6 sekundy**. Drugie uruchomienie programu zajęło mi około **2,1 sekundy**. Między tymi dwoma uruchomieniami było może około 10 sekund oczekiwania, ja patrzyłem na wyniki i ponownie uruchamiałem program. Odczekałem minutę, uruchomiłem go ponownie i uruchomiłem w **1,8 sekundy**. Chociaż różnica jest niewielka, nadal istnieje. Dlaczego istnieje ta odmiana?


title: Jeśli biegły programista lekceważy dobre praktyki, czy jego biegłość nie działa na jego niekorzyść?

text: Pracuję nad dość dużą i błędną aplikacją - a ze względu na sposób, w jaki jest napisana (oszczędzę ci szczegółów, ale łamie zasady w większości obszarów, o których możesz pomyśleć), jest prawie niemożliwym jej opracowanie bez poważnej refaktoryzacji. Znaczna część aplikacji została stworzona przez stażystów, n00bs itp.; ale był też programista w randze Master Developera i z całą pokorą pozostawiony przez niego kod też jest wątpliwy, może w inny sposób, ale jednak. To prawda, że jego kod ma tendencję do wykonywania zadania – przez większość czasu – ale zazwyczaj jest tajemniczy, wymyślając koło na nowo (np. duża niestandardowa metoda umożliwiająca raczej zwykłą kopię zapasową bazy danych SQL) itp. Zasadniczo niepotrzebne zamieszanie i dużo przepracowania I skłoniło mnie to do myślenia, że bycie wysoko wykwalifikowanym programistą (celowo nie używam słowa "programista", zakładając, że wskazuje ono na szerszy zestaw umiejętności), jeśli nie towarzyszy mu inne cechy, może być w rzeczywistości trochę trujące. Zakładając, że to prawda, niektóre z powodów, o których mógłbym pomyśleć, to: * jeśli kodujesz z łatwością, wydaje mi się (lub w skrócie jest to) po prostu szybsze wyłapywanie własnych rozwiązań na miejscu, bez zwracania się do biblioteki, wcześniej istniejąca funkcjonalność itp. * jeśli ktoś jest wystarczająco doświadczony, aby łatwo utrzymać w pamięci obraz złożonego programu, mniej jest skłonny do dzielenia go na moduły, warstwy itp. Chodzi mi o to, że jeśli biegły programista okaże się kiepski programista, ich płynność nie tylko nie rekompensuje tego ostatniego, ale w rzeczywistości wyrządza jeszcze więcej szkód. Co o tym myślisz? Czy to prawda (w jakim stopniu, jeśli tak)?


title: Miej dzień oceny dla firmy i nie masz pojęcia, czego się spodziewać, i proszę o poradę!

text: Potrzebuję porady dotyczącej dnia oceny, który mam za 38 dni. Jestem absolwentem informatyki, który ukończyłem w zeszłym roku i od tego czasu mam trudności ze znalezieniem pracy. Miałem trochę szczęścia, że zostałem zaakceptowany (poprzez zdanie wywiadu telefonicznego) i teraz zostałem zaproszony na „dzień oceny”. Zaangażowana firma to firma zajmująca się rozwiązaniami IT i doradztwem. Stanowisko to nosi tytuł „dyplomowany konsultant IT”). Zastanawiałem się, czy ktoś mógłby mi udzielić porady, czego się spodziewać podczas tych „dni oceny”. Czy będzie to dzień testów, czy będzie to dzień, w którym otrzymujemy zadania (może w grupach), a następnie obserwujemy, jak sobie z nimi radzimy, aby znaleźć rozwiązanie? Naprawdę nie mam najmniejszego pojęcia, więc zastanawiam się przez ludzi, którzy przeszli podobne doświadczenia (nawet z innymi firmami), co znaleźli. Zależy mi na poradach dotyczących tego, co studiować na to stanowisko. Na uniwersytecie miałem kontakt z programowaniem JAVA i związanymi z tym pracami projektowymi. W tej pracy, jako „absolwentowy konsultant IT”, szukam porady, w jakim obszarze się skoncentrować. Czy koncentracja na analizie systemu i projektowaniu systemu byłaby najbardziej odpowiednia, czy też powinienem nadal skupiać się na moich umiejętnościach programistycznych i może przyjrzeć się wzorcom projektowym itp.?


title: Czy algorytm Morton Code jest opatentowany?

text: Synonimy: Morton Code, Morton Curve, Z-Order Curve, wynaleziony w 1966 roku przez GM Mortona według wiki. Nie mylić z Hilbert Curves, które są blisko spokrewnione i mają podobną nazwę. Zastanawiałem się, czy wspomniany algorytm jest opatentowany. Mówiąc ogólnie, czy jest miejsce, w którym można przeglądać opatentowane algorytmy? Jestem całkiem nowy w tych wszystkich sprawach prawnych i chciałbym dowiedzieć się więcej. Prawdziwe pytanie, jakie mam, jak sądzę, brzmi: czy mogę zarabiać na bibliotece, która zapewnia Morton Coding, legalnie?