title: Wielokrotne uruchamianie procesu w tym samym czasie

text: Mam program w języku c++ z biblioteką opencv, który pobiera obraz jako dane wejściowe i wykonuje szacowanie pozy, wykrywanie kolorów, phog. Kiedy uruchamiam ten program z wiersza poleceń, ukończenie zajmuje około 4-5 sekund. Zajmuje około 60% procesora. Kiedy próbuję uruchomić ten sam program z dwóch różnych okien wiersza poleceń w tym samym czasie, proces trwa około 10-15 sekund i oba procesy kończą się prawie w tym samym czasie. Wykorzystanie procesora sięga do 100%. Mam stronę internetową, która wywołuje ten c++ exe za pomocą polecenia exec(). Tak więc, gdy dwóch użytkowników próbuje przesłać obraz i uruchomić, zajmuje to więcej czasu, jak wyjaśniłem powyżej w wierszu poleceń. Czy to dlatego, że program w c++ wymaga dużej mocy obliczeniowej, a procesor osiąga 100% spowalnia? Ale przeczytałem, że CPU osiągający 100% nie jest złą rzeczą, ponieważ komputer wykorzystuje pełną moc do uruchomienia programu. Czy to z powodu mojego programu C++, czy ma to coś wspólnego z ustawieniami mojego serwera (komputera)? To chyba nie jest problem z serwerem Apache, ponieważ gdy próbuję go uruchomić z wiersza poleceń, również spowalnia. Używam czterordzeniowego procesora i wszystkie 4 procesory osiągają 100%, gdy próbuję uruchomić ten sam proces w tym samym czasie, więc myślę, że jest on rozłożony na wszystkie procesory. Mam więc jeszcze kilka pytań: 1) Czy można to rozwiązać za pomocą wielowątkowości w moim kodzie c++? Na razie go nie używam, ale czy wielowątkowość sprawi, że kod w c++ będzie droższy obliczeniowo i zwiększy użycie procesora (jeśli to jest problem ). 2) Co może być przyczyną spowolnienia? Czy proces znajduje się w kolejce, a każdy proces jest uruchamiany tylko przez określony czas i przełącza się między tymi dwoma procesami? 3) Jeśli dzieje się tak, ponieważ wiąże się to z wysokimi obliczeniami, czy pomoże, jeśli zmienię niektóre funkcje na funkcje opencv GPU? 4) Czy jest sposób na rozwiązanie tego problemu jakieś pomysły lub wskazówki? Wstawiłem wynik top, gdy uruchamiam jeden proces i uruchamiam ten sam proces dwa razy w tym samym czasie: Wersja 5 jest procesem, uruchamiam go raz ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/ V9KVi.png) Dwie wersje 5 uruchomione w tym samym czasie ![tu wpisz opis obrazu](http://i.stack.imgur.com/h6aP4.png) Z góry dziękuję.


title: Adnotacje Java sql Relacje ManyToMany

text: Zastanawiałem się, jak najlepiej zaimplementować relację SQL ManyToMany w Javie za pomocą adnotacji - w tym przypadku eBeans \- gdzie są dodatkowe dane związane z łączeniem. Stworzyłem diagram db, aby pomóc wyjaśnić: ![ERD](http://i.stack.imgur.com/brOxP.png) Użycie @ManyToMany na klasach organizacji i użytkowników stworzyłoby tabelę złączeń, ale bez dodatkowych Stanowisko. Czy najlepszym sposobem na zaimplementowanie tego jest utworzenie klasy Org_has_users i użycie adnotacji @OneToMany i @ManyToOne? Czy kaskada przy zapisywaniu zapewni mi dostęp do pełnych relacji łączenia zarówno z klas Użytkownicy, jak i Organizacje? Mam nadzieję, że to wystarczy, aby zacząć. Bardziej interesuje mnie sposób, w jaki byś to zaimplementował. Dziękuję! Antoniusz


title: TDD z SQL i funkcjami manipulacji danymi

text: Chociaż jestem zawodowym programistą, nigdy nie byłem formalnie przeszkolony w inżynierii oprogramowania. Ponieważ często odwiedzam tutaj i SO, zauważyłem tendencję do pisania testów jednostkowych, gdy tylko jest to możliwe, a ponieważ moje oprogramowanie staje się bardziej złożone i wyrafinowane, widzę automatyczne testowanie jako dobry pomysł na wspomaganie debugowania. Jednak większość mojej pracy polega na pisaniu złożonego SQL, a następnie przetwarzaniu danych wyjściowych w jakiś sposób. Jak na przykład napisałbyś test, aby upewnić się, że Twój SQL zwraca poprawne dane? Następnie powiedzmy, że jeśli dane nie były pod twoją kontrolą (np. systemu innej firmy), w jaki sposób możesz skutecznie przetestować procedury przetwarzania bez konieczności ręcznego zapisywania ryz fikcyjnych danych? Najlepszym rozwiązaniem, jakie przychodzi mi do głowy, jest tworzenie widoków danych, które łącznie obejmują większość przypadków. Następnie mogę połączyć te widoki z moim SQL, aby sprawdzić, czy zwraca on prawidłowe rekordy i ręcznie przetworzyć widoki, aby sprawdzić, czy moje funkcje itp. robią to, co powinny. Mimo to wydaje się przesadny i łuszczący się; w szczególności znajdowanie danych do testowania z...


title: Deweloperzy systemów operacyjnych Linux: czy testują swój kod?

text: Deweloperzy Linux OS: czy testują swój kod? Jeśli tak: * skoro ten system operacyjny jest zakodowany w C, jak udaje im się efektywnie pisać testy jednostkowe w tym języku? * jakie są „strefy” w systemie operacyjnym, w których łatwiej jest napisać testowanie jednostkowe? gdzie jest trudniej? gdzie to jest cenne?


title: Dlaczego kategoryzacja na „Właściwość” i „Metody”

text: Patrzę na klasę String w Actionscript 3.0. Ma właściwość String.length . Wewnętrznie jest to funkcja pobierająca (lub metoda?) zwracająca długość łańcucha. Dlaczego nie może to być String.getLength() ? Metody mogą przyjmować 1, 2 lub więcej wartości, aby można było zrozumieć ich znaczenie. Ale jakie znaczenie ma „własność”. Jak to przecież, tylko funkcja. Dlaczego więc kategoryzacja według właściwości? Po prostu dodając narzuty, aby pamiętać, że coś zostało sklasyfikowane jako własność? Innymi słowy, jako programiście, jak mi pomogło, gdy powiedziano mi, że String.length jest właściwością klasy String. I nie możesz znaleźć żadnej metody na to samo. Kiedy piszę program, skąd mam wiedzieć, co to jest właściwość, a co to metoda? Doceń trochę światła na ten temat. V.


title: jaka licencja odpowiada moim potrzebom?

text: Która licencja najlepiej spełniałaby poniższe wymagania? * Każdy może dokonywać aktualizacji i korzystać z kodu źródłowego * Ale nikt nie powinien go sprzedawać ani sprzedawać aplikacji, która go używa, chyba że zawrze umowę z właścicielami


title: Czy można dołączyć jQuery do wtyczki jQuery?

text: Plik wtyczki z pytaniem jQuery zawierający bibliotekę jQuery pojawił się dzisiaj na stackoverflow i zdecydowanie odradzałem dołączanie jQuery do wtyczki. Tak naprawdę nie otrzymałem w tej sprawie żadnego wsparcia od innych; w rzeczywistości było więcej obsługi do włączenia jQuery niż nie. Czy to jest w porządku, czy są dobre powody, aby tego nie robić? Myślę, że to naprawdę zły pomysł, ponieważ uważam, że programista korzystający z wtyczki powinien zależeć od używanej wersji jQuery.


title: Rekomendacja procesora do nauki programowania wieloprocesorowego

text: To może być dziwne pytanie, a miejsce, w którym można je zadać, może nie być odpowiednie. Bardzo interesuje mnie praca z programowaniem wieloprocesorowym i algorytmami równoległymi, głównie do celów badawczych. Chcę zbudować komputer specjalnie do tego celu, który powinien mieć co najmniej 8 rdzeni (wiele algorytmów ma problemy z rywalizacją dopiero od 8 rdzeni). Patrząc na ofertę Intela i AMD uważam, że 8-rdzeniowe procesory Intel są zdecydowanie za drogie, więc musiałbym wybierać pomiędzy: \- 6-rdzeniowy Intel i7 980X (3,33 Ghz) \- 8-rdzeniowy AMD FX 8150 (3,6 Ghz) \- 2x8-rdzeniowy AMD Opteron 4248 (3,0 Ghz, serwerowa wersja FX 8150) \- 1x lub 2x-12-rdzeniowy AMD Opteron 6172 (2,1 Ghz, drogi, ale czasami przystępny cenowo na Ebay) 2xOpteron, ale nie jestem pewien, jak ma się architektura Bulldozer do architektury Intela; z tego, co rozumiem, 8 rdzeni faktycznie dzieli niektóre części i nie są całkowicie niezależne, jak te Intela (pomijając współdzieloną pamięć podręczną L3). Nie jestem pewien, czy wyniki, które otrzymam, odzwierciedlają te, które można uzyskać na „klasycznym” procesorze. Z drugiej strony i7 jest znacznie potężniejszy i może wystarczyć do testowania algorytmów równoległych. Opteron 2x12-rdzeniowy byłby prawdopodobnie najlepszy do testów, ale są też zdecydowanie najwolniejsze i chciałbym używać tego komputera również jako stacji roboczej. Jakie byłoby najlepsze rozwiązanie? Czy architektura Bulldozer jest odpowiednia do badań (głównie do masowego zrównoleglania kompilatora, który napisałem)?


title: Jak pisać od razu do sedna dokumentacji, nie wyglądając na niechlujną i nieformalną?

text: Obecnie pracuję na stanowisku kontraktowym i zamierzam uzupełnić dokumentację projektów, nad którymi pracowałem, aby pomóc kolejnemu pracownikowi przejmującemu moje projekty. Otrzymana przeze mnie dokumentacja była zbyt techniczna (tj. kod referencyjny od razu, referencje zastępujące pewne wartości w niektórych wierszach, w ogóle brak opisu wysokiego poziomu) Jak pisać dokumentację w prostym, prostym języku angielskim, który faktycznie przynosi korzyści, nie wyglądając na niechlujny? Uważam, że jest to trudne w takich obszarach, jak zarysowanie wad systemu bez oceniania, ale nadal podkreślam powagę szkodliwości niektórych wad.


title: Czy dysk SSD sprawi, że rozróżnienie między bazą danych zorientowaną na kolumny a bazą danych zorientowaną na wiersze będzie przestarzałe?

text: Rozmawiałem z przyjacielem na temat RDBMS zorientowanych na wiersz vs kolumnę. Z mojego rozumienia, te rzeczy są ściśle związane z faktem, że istnieje konkretna głowica odczytująca i zapisująca dane. Ta głowa się porusza, a odczyt/zapis danych jest szybszy, jeśli ruchy głowy są ograniczone. Nadal z mojego zrozumienia, dyski SSD usuwają te mechaniczne artefakty, a dostęp do danych zajmuje teraz tyle samo czasu, niezależnie od tego, gdzie są fizycznie przechowywane na chipie / urządzeniu (nie znam właściwego terminu). Biorąc pod uwagę te dwa punkty, czy dyski SSD (kiedy osiągną swój pełny potencjał) sprawią, że rozróżnienie między zorientowanymi na wiersz i zorientowane na kolumny będzie przestarzałe lub bezcelowe?


title: Rozszerzenie kompilatora Mono C# o dodatkowe funkcje niestandardowe (mniej lub bardziej cukier składniowy)

text: Zdaję sobie sprawę, że to dość obszerne pytanie, ale tutaj i tak idzie... Jaki jest Twoim zdaniem najbardziej praktyczny sposób tworzenia własnej implementacji C# z drobnymi dodatkami do istniejącego zestawu funkcji 4.0? Dla kontekstu: Zastanawiam się nad dodaniem kilku (głównie składniowych) niuansów do dynamicznego zestawu funkcji, które poprawiłyby całe doświadczenie pisania kaczką. Na przykład obejmowałyby one ideę dynamicznego interfejsu, jak zaproponowano w tej debacie (szczególnie w ostatnim komentarzu MiddleTommy). Zdaję sobie sprawę, że nic nie stoi na przeszkodzie, aby po prostu zagłębić się w źródła Mono. Jednak najpierw muszę zapytać o potencjalnie podobne projekty, które mogą już istnieć na wolności. Czy trwają takie prace nad rozszerzeniem?


title: Jak debugować/zmieniać kod Java podczas działania programu?

text: Właśnie zobaczyłem film pokazujący, jak Notch (znany z Minecrafta) debuguje i zmienia Minecraft podczas jego działania. Wstrzymuje grę, zmienia coś w kodzie, a następnie wznawia grę, gdzie zmiana ma natychmiastowy skutek bez konieczności ponownego uruchamiania programu. Jak to działa? Jaką technikę stosuje się, aby to osiągnąć?


title: Projekt obiektów, w którym do tworzenia instancji obiektów są używane wartości zakodowane na stałe?

text: Tworzę projekt programu do scalania zakładek w przeglądarkach i natknąłem się na problem projektowy, który widziałem wcześniej, ale nigdy nie wymyśliłem dla niego dobrego rozwiązania. Powiedzmy, że mam klasę Browser: Browser: String bookmarkFilePath String type Bool bookmarkFileExists() Gdy mój program zostanie uruchomiony, będę chciał mieć zapisane na stałe wartości popularnych przeglądarek i lokalizacje ich pliku zakładek: Obiekt z zakodowanymi na stałe wartościami: "~/Library/Application Support/Google/Default/Bookmarks", "Chrome" "~/Library/Safari/Bookmarks.plist", "Safari" **Czy istnieje wzorzec projektowy lub typ obiektu, który mógłby skutecznie przyjąć obiekt wartościami zakodowanymi na stałe (nazwa przeglądarki / ścieżka do pliku zakładek) i używa ich do tworzenia instancji (i ewentualnie zarządzania) innymi obiektami (przeglądarki)?** Ważna jest również elastyczność, ponieważ istnieją przypadki skrajne, takie jak zawsze inny i trzeba przeprowadzić pewne poszukiwania. **EDIT: Będę wdrażać to w Pythonie. _Przepraszam, że nie wspomniałam o tym wcześniej_.**


title: Wersja próbna/bezpłatna i pełna wersja VS. Bezpłatna aplikacja + rozliczenia w aplikacji?

text: Zastanawiam się tylko, jaka byłaby najlepsza strategia opublikowania aplikacji w Android Market. Jeśli masz darmową i płatną wersję, masz dwa kody do aktualizacji (wiem, że w 99% będą takie same, ale nadal), a poza tym wszystkie popularne płatne aplikacje są dość łatwe do znalezienia za „darmowe” na „alternatywnych” rynkach. Również jeśli masz jakieś zapisane dane w wersji próbnej/darmowej, tracisz je przy zakupie pełnej wersji.. Z drugiej strony, jeśli umieścisz darmową aplikację, ale w środku pozwolisz użytkownikowi odblokować opcje (usuń reklamy/więcej ustawień/ itd...) musisz się martwić tylko o jeden kod. Nie znam wad tej strategii i nie wiem, jak łatwo/trudno ją zhakować, aby uzyskać wszystkie opcje „za darmo”.


title: Czy OCaml nadaje się do analizy numerycznej?

text: Obecnie używam C i trochę FORTRAN do rozwiązywania numerycznych układów równań różniczkowych. Trochę mam dość obu tych języków, ale potrzebuję trochę (raczej) wydajnego kodu... Zastanawiam się nad przejściem na OCaml. Czy warto?


title: Projekt aplikacji dla aplikacji web/iPad/iPhone/Android

text: Mam aplikację internetową, która jest dość standardową aplikacją opartą na bazie danych SAAS. Kilku klientów pyta o wersję aplikacji na iOS lub Androida. Czy lepiej jest zbudować interfejs API w aplikacji internetowej, który jest następnie używany do obsługi natywnego interfejsu użytkownika aplikacji mobilnych? Byłoby to najprostsze, ale oznaczałoby, że aplikacje mobilne nie są „samodzielne”. Alternatywnie mógłbym spróbować wdrożyć pełne rozwiązanie mobilne, które następnie jakoś synchronizuje się z aplikacją internetową. Byłoby to znacznie więcej pracy, ponieważ cała logika biznesowa musi być wbudowana w aplikacje mobilne, a nie za interfejsem API. Jaka jest standardowa praktyka dla tego rodzaju rzeczy?


title: Organizowanie komunikacji podmiotów MVC

text: Mam następującą sytuację. Wyobraź sobie, że masz obiekt MainWindow, który układa dwa różne widżety, ListWidget i DisplayWidget. ListWidget jest wypełniany danymi z dysku. DisplayWidget pokazuje szczegóły wyboru dokonywanego przez użytkownika w ListWidget. Planuję wykonać następujące czynności: w MainWindow mam następujące obiekty: * ListWidget * ListView * ListModel * ListController ListView jest inicjowany poprzez przekazanie ListWidget. ListViewController jest inicjowany, przekazując View i Model. To samo dzieje się z DisplayWidget: * DisplayWidget * DisplayView * DisplayModel * DisplayController Inicjuję DisplayView za pomocą widżetu i inicjuję Model za pomocą ListController. Robię to, ponieważ DisplayModel otacza ListController, aby uzyskać informacje o bieżącym zaznaczeniu i danych, które mają być wyświetlane w DisplayView. Jestem bardzo zardzewiały w MVC, od jakiegoś czasu nie mam programowania w interfejsie użytkownika. Czy jest to oczekiwany układ interakcji dla różnych trójek MVC? Innymi słowy, MVC skupia się na interakcji trzech obiektów. Jak umieścić tę interakcję jako całość w szerszym kontekście komunikacji z innymi podobnymi podmiotami, MVC czy nie?


title: Czy klient może być SCRUM Product Ownerem w projekcie?

text: Właśnie rozmawiałem z kolegą na temat roli Product Ownera: W projekcie, w którym organizacja klienta wprowadziła organizację rozwijającą oprogramowanie (dostawcę), czy rola Product Ownera może być z powodzeniem pełniona przez organizację klienta, czy też powinna zawsze być w posiadaniu dostawcy? Zawsze wyobrażałem sobie, że PO jest facetem od organizacji dostawców. Facet, który zapewnił, że klient jest zadowolony i stale zasilany nowymi funkcjonalnościami o wysokiej wartości biznesowej, ale nadal jest integralną częścią organizacji deweloperskiej. Być może jednak postrzegałem rolę PO za bardzo jak kierownika projektu kaskadowego. Mój kolega skłonił mnie do myślenia: Jeśli organizacja klienta jest wystarczająco dojrzała i profesjonalna, dlaczego nie pozwolić osobie z ich obozu nadać priorytetu zaległościom? To znacznie przybliżyłoby rolę PO do biznesu, co pozwoliłoby (teoretycznie) lepiej ocenić wartość biznesową pozycji zaległości. Dla mnie to intrygująca myśl. Ale jakie są konsekwencje takiej konfiguracji??? Czekam na Twój wkład.


title: Czy myślenie koncepcyjne zorientowane obiektowo jest czymś, co budujesz dzięki doświadczeniu?

text: Wiem, że odpowiedź jest dość jasna, ponieważ z czasem i doświadczeniem stajesz się coraz lepszy we wszystkim. Ale powiem, skąd pochodzę: kilka miesięcy temu postanowiłem nauczyć się programowania na iOS, więc studiowałem C (przeczytaj elementarz C plus książkę, całkiem dobra książka). Niedawno skończyłem "Programowanie w celu C" i ostatnio zacząłem uczęszczać na kurs Stanford na zimę 2013 (bardzo mi się podoba. Jestem dopiero na początku kursu, na wykładzie nr 3 i musiałem zrobić tylko 2 zadania domowe). Rozumiem całą składnię i koncepcje do tej pory i myślę, że Cel C to niesamowity język. Ale coś mnie niepokoi, myślałem, że może to być spowodowane tym, że jestem nowy w OOP. Na przykład, kiedy instruktor definiuje modele (na przykład dopasowywanie gry karcianej), zdecydowanie rozumiem składnię i logikę, ale czasami próbuję myśleć, czy to jako zadanie (na przykład gra karciana) i rozbicie go na właściwą logikę . Czy z czasem przywyknę do tego? Ponieważ na tym etapie, kiedy próbuję przewidzieć, co mam zrobić, dość często idę zobaczyć trochę jego logiki i wracam do kodu. Właściwie nie musieliśmy iść od zera, zawsze mówi nam, abyśmy na tym etapie śledzili prezentację z kodem, ale naprawdę chcę się poprawić w podjęciu zadania i wiedząc, jak rozbić go na odpowiednie modele, kontrolery itp. .


title: Co to jest „projektowanie zestawu narzędzi”?

text: Co oznacza „projektowanie zestawu narzędzi” i jakie są podstawowe kroki w celu zaprojektowania zestawu narzędzi do określonego zadania/projektu? Pojawia się w opisie zadania, który mówi: „To zadanie dotyczy zaprojektowania szczegółowej specyfikacji różnych narzędzi, które są wykorzystywane w celu wdrożenia [tu wstaw jakieś zadanie programistyczne]”. Rozumiem więc, że: wymagane jest zaprojektowanie i podać specyfikacje zestawu narzędzi, który będzie używany do wykonywania określonych zadań. Ale jak wygląda projektowanie zestawu narzędzi? Wyszukiwanie w Google prawie nie daje żadnego sensownego wyniku. Chodzi głównie o „zestawy narzędzi projektowych”, a to nie jest to, czego szukam. Na przykład ten facet zaprojektował zestaw narzędzi programowych w niektórych swoich poprzednich projektach http://logonpro.com/resume.doc


title: Zarządzanie projektami - Asana / activeCollab / basecamp / alternatywa / brak

text: Nie wiem, czy powinno to dotyczyć programistów – przeglądałem powyższe trzy aplikacje przez ostatnie kilka tygodni tylko dla siebie i jestem w dwóch zdaniach. Wszystkie trzy wyglądają dobrze, są łatwe w użyciu i doszedłem do tego wniosku; * Asana jest najłatwiejsza w użyciu * ActiveCollab to bogaty w funkcje i najłatwiejszy przepływ * BaseCamp to najlepszy UX / projekt Ale tak naprawdę nie uważam, że mój przepływ pracy jest szybszy / wydajniejszy, w rzeczywistości był nieco wolniejszy i zorganizowany. Czy jest dla nich realistyczne miejsce w przepływie pracy – czy programiści powinni ich używać dla siebie, czy tylko wtedy, gdy kierownik projektu może przejąć nad nimi kontrolę?


title: Jaka jest dobra strategia projektowania dotycząca zachowywania historii działań użytkownika i plików, takich jak projekty programu Visual Studio?

text: OK, więc nie jestem pewien, czy „projekt” jest właściwym terminem, ale dla moich celów definiuję „projekt” jako podobny do tego, którego używa Visual Studio, lub Microsoft word – pliki, które użytkownik może otworzyć i pracować, a następnie zapisz, a gdy użytkownik ponownie uruchomi aplikację, program otrzyma informacje o plikach, nad którymi pracował ostatnio, gdy aplikacja była otwierana. Pytam więc, jaka jest dobra strategia projektowania dla zachowywania historii działań użytkowników i plików, takich jak projekty Visual Studio?


title: Różnice między zunifikowanym procesem a planem projektu Agile?

text: Odbyło się wiele dyskusji na temat SO dotyczących różnic między (Rational) Unified Process a metodologią Agile. Czy ktoś może podać mi przykład, jak różniłby się plan projektu, gdyby były 2 zespoły wykonujące ten sam projekt, ale stosujące te 2 różne metody?


title: Jakie są najlepsze praktyki XP?

text: W „Extreme Programming Explained” Beck wymienia 13 „pierwotnych praktyk”. Są to: * Usiądź razem * Cały zespół * Informacyjna przestrzeń robocza * Praca naładowana * Programowanie w parach * Historie * Cykl tygodniowy * Cykl kwartalny * Slack * Tworzenie 10 minut * Ciągła integracja * Programowanie najpierw test * Projektowanie przyrostowe Które z nich faktycznie zaimplementowałeś w Twoim miejscu pracy? Który był najbardziej przydatny?


title: Jakiego procesu tworzenia oprogramowania powinienem się najpierw nauczyć w przypadku projektu solowego?

text: Chcę samodzielnie opracować projekt (jeśli się powiedzie, więcej osób może też zacząć nad nim pracować). Chcę również zastosować odpowiednią inżynierię oprogramowania od pierwszego do ostatniego dnia. Z jednej strony tylko po to, żeby to wypróbować i porównać wyniki z poprzednimi projektami, w których chodziło tylko o pisanie kodu szybko i brudno, az drugiej po to, żeby się nauczyć! Wiem, że prawidłowa odpowiedź na to pytanie brzmi: "To bardzo zależy od projektu...", "Nie ma jednej poprawnej odpowiedzi...". Ale po prostu potrzebuję miejsca, od którego mógłbym zacząć, gdzie każdy krok jest zapisany i mówi mi, co mam robić. Jeśli następnym razem nie będę zadowolony, spróbuję czegoś innego. Więc jak/gdzie powinienem zacząć? Chętnie posłucham kilku sugestii dotyczących książek, bo lubię książki :-D. EDIT: Odpowiadając na kilka pytań, które się pojawiły: **Klient**: Istnieje rodzaj klienta/znajomego. Brak prawdziwej presji. **Kontrola wersji** : Używałem subversion w przeszłości i chcę spróbować Mercurial. **Śledzenie błędów** : Miałem wrażenie, że dla jednego programisty wystarczyła lista kontrolna (czy się mylę?) **Testowanie** : Chcę wypróbować Lime (ponieważ używam Symfony) i Selenium. Ogólnie wypróbuję wiele rzeczy, których wcześniej nie używałem, ale jak powiedziałem, jednym z głównych punktów jest nauka. Technika Pomodoro wyskakuje gdziekolwiek spojrzę, więc może powinienem na to spojrzeć...


title: Jak programiści mogą poprawić swoje umiejętności UX?

text: Jako programiści możemy rozwiązywać bardzo złożone problemy, ale kiedy musimy zaprojektować interfejs użytkownika, zwykle nie udaje nam się uczynić go łatwym w użyciu. W małych firmach nie stać ich na posiadanie projektantów i ekspertów UX, programiści muszą robić w oprogramowaniu prawie wszystko. Ale te interfejsy rzadko są intuicyjne (klasyczny przykład). Jaki jest problem? Jak programiści mogą poprawić swoje umiejętności projektowania dobrych doświadczeń użytkowników?


title: Oryginalne prawa autorskie w licencjonowanym projekcie oprogramowania

text: Pracuję nad projektem oprogramowania, w którym do tej pory jestem jedynym programistą. W tej chwili kod nie jest licencjonowany, ale prawa autorskie do tego, co napisałem należą do mnie (jest to prawdą przynajmniej w Ameryce Północnej AFAIK). Zanim udostępnię oprogramowanie publicznie, zamierzam licencjonować jego dystrybucję, prawdopodobnie na zasadach MPL lub GPL. Pytanie 1: Czy jako pierwotny właściciel praw autorskich ma to na mnie wpływ? Czy nadal mam nieograniczone prawa do dystrybucji? Pytanie 2: Po pewnym czasie do projektu dołącza więcej programistów. Teraz większość praw autorskich do kodu źródłowego należy do mnie + współtwórcy. Jak teraz działają prawa do dystrybucji dla autorów? Pozdrawiam, kfl


title: Jaki jest / twój najskuteczniejszy proces kontroli jakości?

text: Szukam pomysłów na ulepszenie naszego obecnego procesu zapewniania jakości. W tej chwili nie ma oficjalnej metody kontroli jakości, ale po prostu otrzymujemy pewne wymagania za pomocą systemu biletowego i poruszamy się tam iz powrotem, aż wszystkie wymagania zostaną spełnione. Obecnie problemem są pewne zmiany wymagań i możemy spędzić dzień lub 5 dni na wielu wymaganiach, ale w końcu wszystkie zostaną odrzucone, ponieważ użytkownik końcowy zdecydował, że nie jest to właściwe lub chciał czegoś innego. Tracimy więc czas i pieniądze, ale jak mogliśmy przewidzieć takie sytuacje? Muszę wierzyć, że istnieje skuteczny sposób komunikowania się z użytkownikami końcowymi na temat ich zestawu wymagań, abyśmy mogli WYCIĄGNĄĆ i wycisnąć wszelkie wątpliwości, aby zapowiedzieć zmianę w zakresie wymagań. A potem musimy być bardzo pewni, że wymagania nie zostaną odrzucone lub zmienione tak drastycznie, że nasza praca byłaby marnotrawstwem. W pewnym sensie chodzi o naprawdę dobre zrozumienie tego, czego ostatecznie chce użytkownik. Ale czym jest ten skuteczny proces kontroli jakości? Wszelkie pomysły są bardzo cenione. Chętnie wyjaśnię wszelkie wątpliwości. Dziękuję Ci!


title: Szacowana liczba prób

text: **Problem:** Komitet Oskara chce zdecydować, która osoba powinna otrzymać nagrodę dla najlepszego aktora spośród podanych N aktorów. W tym celu zdecydowali się użyć funkcji losowej random_bit(), która zwraca 0 lub 1 z równym prawdopodobieństwem. Aby wyniki były sprawiedliwe, komisja została poproszona o wygenerowanie losowej liczby od 1 do N (włącznie), tak aby wszyscy aktorzy mieli równe prawdopodobieństwo wyboru (które w tym przypadku zawsze powinno być równe 1/N). cały Komitet chce wiedzieć, ile razy będzie musiał wywoływać funkcję random_bit(), aby wygenerować liczbę losową od 1 do N. Ponadto, wywołując funkcję, powinien postępować zgodnie ze strategią optymalną (tj. taką, która minimalizuje oczekiwane liczba wywołań funkcji) * * * Jest to problem z poprzednich konkursów na codechef.com i tutaj link do niego.Na tej stronie można zobaczyć rozwiązanie innych użytkowników i do tej pory tylko jedno rozwiązanie zostało zaakceptowane.Rozwiązanie jest w kodzie C++: #dołącz <iostream> używając przestrzeni nazw std int main() { int T; cin >> T; for(int ii = 0; ii<T; ++ii) { int N; cin >> N; double p = 1, ans = 0;int x = 1% N; for(int i = 0; <100000; ++i) { odb += x * p; x = (x * 2) % N; p /= 2; } cout << ans; } zwróć 0; } Wiem, jak działa kod i co robi, ale nie mogę znaleźć logiki za tym. Jakaś pomoc / wskazówka? Byłoby też miło, gdyby ktoś mógł opublikować inny algorytm.


title: Co dzieje się z równymi elementami podczas wstawiania do drzewa wyszukiwania binarnego?

text: Większość przykładów BST pokazuje próbkę BST z unikalnymi wartościami; głównie po to, aby pokazać porządek wartości. np. wartości w lewym poddrzewie są mniejsze niż korzeń, a wartości w prawym poddrzewie są większe. Czy to dlatego, że BST są zwykle używane tylko do reprezentowania zestawów? Jeśli wstawię element powiedzmy 4, który już istnieje w BST, co powinno się stać? np. W moim przypadku 4 wiąże się z ładunkiem. Czy to oznacza, że nadpisuję ładunek istniejącego węzła.


title: Jak koordynujesz pracę z projektantami interakcji podczas wdrożenia?

text: Programiści są w dużej mierze odpowiedzialni za pomoc w przejściu produktu od projektu do wdrożenia. Proces ten jest zawsze pełen problemów: * szczegóły implementacji podnoszą brzydką głowę i sprawiają, że części projektu stają się niewykonalne * opinie użytkowników na temat wczesnych prototypów prowadzą do zmian w projekcie * nowe technologie zmieniają pole tego, co jest możliwe, przywracając wcześniej przemyślane projekty niemożliwe * zmiana priorytetów, zmiana harmonogramów i wędrówka wymagań Jak utrzymujesz kontakt projektowy z wdrożeniem podczas wdrożenia? Z jakich procesów korzystasz? Narzędzia? Artefakty? Wytyczne? Strategie komunikacji?


title: Pochodzenie „Readme”

text: Kiedy ludzie zaczęli pisać pliki Readme? Wygląda na to, że prawie wszystkie programy mają ten plik, niezależnie od formatu. Czy istnieje udokumentowane pierwsze użycie tego dokumentu?


title: Dynamiczne a statyczne języki dla stron internetowych

text: To stwierdzenie sugeruje, że języki wpisywane statycznie nie są idealne dla witryn internetowych: > Porównam to z budowaniem strony internetowej. Podczas renderowania stron internetowych często > na stronie internetowej oddziałuje bardzo wiele komponentów. Masz przyciski > tutaj i małe widżety tam i są ich dziesiątki na stronie >, a także prawdopodobnie dziesiątki lub setki stron internetowych w Twojej witrynie >, które są dynamiczne. W systemie o naprawdę dużej powierzchni, jak ten, używanie statycznie pisanego języka jest w rzeczywistości dość nieelastyczne. Programowanie w Scali i renderowanie strony WWW za jej pomocą prawdopodobnie byłoby dla mnie bolesne, gdy chcę interaktywnie naciskać przyciski, a co nie. Jeśli > cały system musi być spójny, tak jak cały system musi wpisać check > tylko po to, aby móc poruszać przyciskiem, myślę, że może to być naprawdę > nieelastyczne. Źródło: http://www.infoq.com/interviews/kallen-scala-twitter Czy to prawda? Dlaczego lub dlaczego nie?


title: Bezpieczne w środowisku produkcyjnym debugowanie procedur składowanych SQL

text: Mamy ogromną liczbę zagnieżdżonych procedur składowanych SQL i wiele różnych sposobów ich debugowania (od programisty do programisty). Jak dotąd nasze metody zawierają: 1. Opcjonalny parametr `@debug`, który powoduje, że procedura `drukuje`wiadomości podczas działania (przekazywanie zmiennej do wywołanych procedur). 2. Porównywanie `@@nazwa_serwera` z tabelą nazw serwerów testowych i `drukowanie` jak powyżej. czy może jest lepsza metoda, którą przeoczyliśmy?


title: Tworzenie nowych obiektów opakowujących i klas rozszerzeń oraz utrzymywanie ich w porządku

text: Oto moja sytuacja: programuję wbudowane urządzenie z bardzo prostym, ale konfigurowalnym wyświetlaczem LED. To 10 diod LED RGB ustawionych liniowo. Diody LED będą używane do wyświetlania wielu różnych rzeczy w zależności od trybu urządzenia. Teraz zacząłem dalej, ale po spędzeniu dużej ilości czasu na kodowaniu i znalezieniu wielu zduplikowanych kodów czuję, że powinno to zostać uproszczone za pomocą niektórych metod i klas abstrakcji i opakowujących. Na samym minimum iw punkcie wyjścia mam klasę, sterownik LED, który reprezentuje sprzęt sterujący diodami LED. Ma jedną metodę, która jest głównie używana `TLC5940.Display(ushort[] greyscaleData)` gdzie greyscaleData jest tablicą o rozmiarze równym ilości pinów wyjściowych, wielokrotnością 16 (16 na chip, żetony mogą być ze sobą połączone ). Ta tablica kontroluje każdy pin indywidualnie, umożliwiając bezpośrednie sterowanie diodami LED. Doprowadziło mnie to do stworzenia różnych metod "rozszerzających" w statycznej klasie, która miała różne procedury wypełniania tej tablicy, a następnie przekazywania jej do metody `Display`. Działa to dobrze w przypadku testowania różnych metod, ale znalazłem wiele zduplikowanych kodów w sposobie wypełniania tablicy, ponieważ każda dioda LED RGB zużywa 3 fizyczne piny (i 3 kolejne wartości tablicy) do sterowania określoną diodą LED RGB. Więc muszę napisać kolejny kawałek trzech wartości, aby sterować diodą LED. Wymyśliłem tę metodę prywatną w klasie rozszerzeń statycznych: private static void FillLEDArray(ref ushort[] brightArray, ushort LEDNumber, ushort rVal, ushort gVal, ushort bVal, short ledStartPin = 2, ushort numLEDs = 10) { //logic jak zmienić tablicę dla fizycznego układu pinów if (ledStartPin == 2) { ledStartPin = 0; } else if (ledStartPin == 1) { ledStartPin = -1; } else { throw new Exception("Może być tylko 1 lub 2"); } ushort pinStart = (ushort)(LEDNumber*3 + ledStartPin); jasnośćArray[pinStart] = bVal; jasnośćArray[pinStart-1] = gVal; jasnośćArray[pinStart - 2] = rVal; } Jest to proste, a to ułatwia moje metody wyświetlania rozszerzeń, dzięki czemu mogę zapętlić od 1 do 10 i wywołać tę metodę, aby zapisać konkretną diodę LED do tablicy w jednym wywołaniu. Na głębszym poziomie pomyślałem o stworzeniu obiektu LED, który zawierałby tablicę 3 wartości, a także oferowałby niektóre funkcje, takie jak LED.Colors.Red, LED.Colors.Blue itp., i zwracał tablicę reprezentującą ten kolor aby kodowanie było łatwiejsze i przyjemniejsze. Ponadto utwórz klasę obiektu kontenera LED, aby zawierała obiekt LED. np: `LEDS.LED(1).Color.Red` może to również generować tablicę na żądanie. Jeszcze jeden poziom złożoności, Moje urządzenie można dostosować przez użytkownika, więc stworzyłem klasę User Settings, która zawiera wszystkie ustawienia użytkownika urządzenia, z których wiele dotyczy diod LED, takich jak niektóre kolory RGB, ogólna jasność, schematy kolorów, itp. Te ustawienia, takie jak jasność, musiałyby zostać zastosowane w całej tablicy przed wysłaniem jej również na wyświetlacz. Jeśli doczytałeś tak daleko, dzięki. **Pytanie:** W tym momencie masz już wszystkie narzędzia i sposoby sterowania diodami LED, ale zamierzam to wszystko przepisać i zastanawiam się, jaki jest najlepszy sposób, aby zawrzeć wszystkie te funkcje? Czy istnieje jakiś wzór lub styl kodowania, który miałby do tego zastosowanie? * * * Moje własne przemyślenia: Pisząc to i wyrzucając to z głowy, może nowa klasa `DeviceDisplay`, która zawierałaby instancję klasy sprzętu i ustawień LED? Czy ta klasa powinna być statyczna czy singletonowa? Martwię się również o pamięć/RAM/prędkość, ponieważ jest to urządzenie wbudowane. Byłbym wdzięczny za kilka opinii na ten temat, ponieważ wydaje się, że istnieje wiele różnych zależności i trochę gubię się w moim mózgu.


title: Łączenie dziecka z rodzicem – zły pomysł?

text: Mam sytuację, w której mój rodzic wie o swoim dziecku (duh), ale chcę, aby dziecko mogło odnieść się do rodzica. Powodem tego jest to, że chcę, aby dziecko miało zdolność określania siebie jako najważniejszego lub najmniej ważnego, kiedy ma na to ochotę. Kiedy dziecko to robi, przenosi je na górę lub dół dzieci rodzica. W przeszłości używałem właściwości WeakReference na dziecku, aby odwołać się do rodzica, ale wydaje mi się, że dodaje to irytujących kosztów, ale może to po prostu najlepszy sposób na zrobienie tego. Czy to tylko zły pomysł? Jak inaczej zaimplementowałbyś tę umiejętność? Aktualizacja 1: Dodanie większego kontekstu. Jest to system renderowania, więc kontener nadrzędny jest listą zgrupowanych okien. Element podrzędny (okno), który mówi „Jestem najważniejszy!” chce być renderowany w górnej części pozostałych okien. Rodzic jest tylko logicznym kontenerem do grupowania tych dzieci. Widzę, gdzie dobrym pomysłem jest dodanie zdarzenia, aby zasygnalizować prośbę o bycie na szczycie. Ale pomijając implementację (co dziecko chce zrobić z rodzicem), dlaczego nie miałbyś chcieć mieć linkowania dziecko->rodzic? Robią to podwójnie połączone listy, dzięki czemu ludzie mogą przechodzić do czegoś i od czegoś.


title: Zbyt skomplikowane/zbyt wiele obiektów?

text: Wiem, że będzie to trudne pytanie bez kontekstu, ale mam nadzieję, że istnieje przynajmniej kilka dobrych wskazówek, którymi można się na ten temat podzielić. Pytania znajdują się na dole, jeśli chcesz pominąć szczegóły. Większość dotyczy ogólnie OOP. Rozpocznij kontekst. Jestem deweloperem jr w aplikacji PHP i ogólnie deweloperzy, z którymi pracuję, uważają, że używają znacznie więcej koncepcji OO niż większość deweloperów PHP. Mimo to, w moich badaniach nad czystym kodem, przeczytałem o tak wielu sposobach wykorzystania funkcji OO, aby uczynić kod elastycznym, potężnym, ekspresyjnym, testowalnym itp., który jest po prostu nieużywany tutaj. Obecny, mocno OO API, który zaproponowałem, jest nazywany zbyt złożonym, mimo że jego implementacja jest banalna. Problem, który rozwiązuję, polega na tym, że nasze sprawdzanie uprawnień odbywa się za pośrednictwem obiektu komunikatu (moje API, chcieli użyć tablic stałych), a obiekt komunikatu nie pociąga do odpowiedzialności obiektu walidacji za sprawdzenie wszystkich dostarczonych danych. Metaforycznie, jeśli twoja perm zawierająca „dozwolone” i „rzadkie, ale niedozwolone” zostanie wysłana do walidatora, walidator może nie wiedzieć, jak szukać „rzadkich, ale niedozwolonych”, ale zatwierdzić „dopuszczalne”, co faktycznie zatwierdzi całą kontrolę zgody. Mamy około 11 walidatorów, zbyt wiele, aby łatwo śledzić tak drobiazgowe szczegóły. Zaproponowałem więc klasę `AtomicPermission`. Aby naprawić poprzedni przykład, zezwolenie zawierałoby zamiast tego dwa atomowe uprawnienia, jedno opakowanie „dopuszczalne”, a drugie „rzadkie, ale niedozwolone”. Tam, gdzie wcześniej walidator powiedziałby „sprawdzenie jest OK, ponieważ zawiera dozwolone”, teraz zamiast tego powiedziałby „dopuszczalne” jest w porządku”, w którym to momencie sprawdzanie się kończy… i sprawdzanie kończy się niepowodzeniem, ponieważ „rzadkie, ale niedozwolone” nie było specjalnie w porządku-ed. Implementacja to tylko 4 trywialne obiekty i przepisanie funkcji 10-liniowej na funkcję 15-liniową. klasa abstrakcyjna PermissionAtom { funkcja publiczna allow(); // może deny() i funkcja publiczna wasAllowed(); } class PermissionField extends PermissionAtom { funkcja publiczna getName(); funkcja publiczna getValue(); } class PermissionIdentifier extends PermissionAtom { funkcja publiczna getIdentifier(); } class PermissionAction extends PermissionAtom { funkcja public getType(); } Mówią, że to „nie da nam niczego ważnego” i jest „zbyt skomplikowane” i „będzie trudne do zrozumienia dla nowych programistów”. Z całym szacunkiem się nie zgadzam i na tym kończę mój kontekst, aby rozpocząć szersze pytania. Więc pytanie dotyczy mojego OOP, czy są jakieś wytyczne, które powinienem znać: 1. _czy_ to jest zbyt skomplikowane/za dużo OOP? Nie żebym spodziewał się więcej niż „to zależy, musiałbym zobaczyć, czy...” 2. kiedy abstrakcji OO jest za dużo? 3. kiedy abstrakcji OO jest za mało? 4. jak mogę określić, kiedy zastanawiam się nad problemem, a kiedy go naprawiam? 5. jak mogę określić, kiedy dodaję zły kod do złego projektu? 6. jak mogę zaprezentować te interfejsy API? Czuję, że inni twórcy woleliby powiedzieć „to zbyt skomplikowane” niż zapytać „czy możesz to wyjaśnić?” ilekroć proponuję nową klasę.


title: Czy można pozwolić, aby nieprawidłowe argumenty przeszły do innej metody?

text: Na przykład weźmy tę metodę: public List<string[]> ReadAll(int listCapacity) { List<string[]> list = new List<string[]>(listCapacity); while (Read()) { list.Add(GetCurrentRow()); } lista zwrotów; } Jeśli `listCapacity` jest mniejsze od zera, konstruktor `List<T>` wyrzuci `ArgumentException`. Czy ma sens sprawdzanie tego dwukrotnie? Przekazywanie argumentu do `List<T>` od razu wydaje się nieostrożne, ale sprawdzenie go wydaje się głupie, ponieważ `List<T>` na pewno go sprawdzi. Ważna uwaga: fragment kodu to nie tylko metoda kopiuj-wklej, to część pełnego narzędzia.


title: Jakieś dobre hackathony/konkursy, aby odświeżyć moje umiejętności programistyczne?

text: Spędziłem to lato jako PM, więc moje umiejętności programistyczne mogły się trochę zardzewiać. Chcę odświeżyć te umiejętności i szukam rzeczy takich jak hackathony online lub konkursy. Najlepiej takie, które odbywają się co tydzień lub dzień, abym mógł często ćwiczyć. Gdzie mam szukać?


title: Czy diagramy klas UML są odpowiednie do projektowania systemów javascript?

text: Biorąc pod uwagę, że UML jest zorientowany na bardziej klasyczne podejście do orientacji obiektowej, czy nadal można go używać w niezawodny sposób do projektowania systemów javascript? Jednym konkretnym problemem, który widzę, jest to, że diagramy klas są w rzeczywistości strukturalnym widokiem systemu, a javascript jest bardziej oparty na zachowaniu, jak sobie z tym poradzić? Proszę pamiętać, że nie mówię tutaj o domenie świata rzeczywistego, jest to model rozwiązania, które staram się osiągnąć.


title: KSIĄŻKI dla początkujących na temat analizy danych i algorytmów w informatyce

text: Jestem programistą i współzałożycielem start-upu, jestem absolwentem informatyki, ale nie jestem dobry w algorytmach, chcę się uczyć i wyostrzać tę stronę. Proszę zasugerować mi kilka fajnych książek na początek i poziom zaawansowany.


title: Powiązanie między testami a historyjkami użytkownika

text: Nie widzę tych linków wyraźnie określonych w literaturze Agile, którą czytałem. Zastanawiałem się więc, czy to podejście jest poprawne: Niech historia zostanie zdefiniowana jako _"Aby [WYNIK], [ROLA] musi [DZIAŁANIE]"_, a następnie 1. _WYNIK_ generuje testy systemu. 2. _ROLE_ generuje testy akceptacyjne. 3. _ACTION_ generuje testy składowe i jednostkowe. Tam, gdzie definicje są tymi używanymi we wzorcach xUnit, które są uczciwe, są dość standardowe. Czy to poprawna interpretacja, czy coś źle zrozumiałem?


title: Czy powinniśmy używać zmiennych JavaScript i CGI, aby usunąć boty z naszych raportów odwiedzających?

text: Używam ColdFusion 8 i jQuery 1.7. ** To jest pytanie programistyczne, ponieważ rozwiązanie, które kwestionuję, wymaga programowania. Może nie jest to właściwe rozwiązanie problemu, ale jeśli tak, to muszę wymyślić, jak najlepiej zaprogramować koncepcję. ** Gdy użytkownik wchodzi na naszą stronę, śledzimy jego sesję, zapisując różne zmienne CGI do bazy danych za pomocą CFC i przechowywanych zamówień. Najpierw odfiltrowujemy ruch niepochodzący od ludzi według słów kluczowych w kliencie użytkownika, takich jak „bot”. Niestety wiele botów i spamerów maskuje swoje programy użytkownika. Później staramy się wykluczyć z raportów naszych gości złe boty i kilka innych znanych podmiotów, które zgarniają strony i tym podobne. Ale to proces ręczny. Rozważamy użycie dodatkowej/alternatywnej metody śledzenia użycia. Po załadowaniu strony użytkownika użyjemy JavaScript, aby wysłać zmienne CGI od klienta z powrotem na nasz serwer i zapisać je. Konkretnie, zapiszemy zmienne serwera do JavaScript na każdej stronie, a następnie JavaScript odeśle je bezpośrednio do nas. Jeśli bot lub użytkownik nie przegląda w pełni strony lub nie ma włączonej obsługi JavaScript, użycie nie zostanie policzone przez prawdziwego użytkownika. Popraw mnie, jeśli się mylę, ale jest to ta sama metoda, której używa Google Analytics do śledzenia zachowania użytkowników. Naszym celem jest wyeliminowanie dobrych i złych botów, które są liczone jako odwiedzający w naszych raportach. Czy używanie JavaScriptu na takiej stronie minimalizuje liczbę botów? Czy w tym planie jest ziejąca dziura?


title: Prawa i użytkowanie opracowanego oprogramowania

text: Pracuję nad oprogramowaniem dla firmy, którą chcą odsprzedać. Zawarto umowę opartą na poczcie, co do stałej stawki godzinowej za moją pracę i chętnie zdecydowałem się zaakceptować raczej niską opłatę. Ze względu na stres i tempo zadania, bezpośrednia umowa nigdy nie została zawarta ani podpisana. Oprogramowanie zostało opracowane lokalnie na moim komputerze i byłem z nim prawie sam, z wyjątkiem doskonałej pomocy ze StackOverflow, kiedy utknąłem. Teraz, gdy oprogramowanie jest na ukończeniu, nagle słyszę, że zatrudnili nowego programistę do stworzenia tego samego oprogramowania co ja i że oczekiwano, że zrezygnuję w niedługim czasie. Zdezorientowany rozpytuję dookoła i zdaję sobie sprawę, że dyrektor generalny poinformował resztę firmy, że jestem śmiertelnie chory i mam raka i oczekuje się, że wkrótce opuszczę firmę. Ponieważ jestem całkowicie zdrowy, to jeszcze bardziej mnie zdezorientowało, dopóki nie zorientowałem się, co się dzieje. Kiedy skonfrontowałem się z tym szefem, nie byłem już postrzegany jako członek firmy i wyszedłem tego samego dnia, aby nigdy nie wrócić. Później podniosłem pytanie o moje brakujące wynagrodzenie, ponieważ pracowałem już sporo i nie otrzymałem żadnej zapłaty za oprogramowanie. Zobaczyłem, że sprzedali już uczciwą kopię mojego oprogramowania, a ponieważ nie jest to do końca tanie, firma powinna mieć dużo złota, aby mi zapłacić. Firma odmówiła i powiedziała, że jest właścicielem oprogramowania i wszystkiego, co zawiera. To było dużo dramatu, ale moje pytanie brzmi: **Kto ma prawa do oprogramowania?** Kod źródłowy miał moje osobiste znaki wodne i prawa autorskie, ale od tego czasu po prostu go usunęli. Firma twierdzi, że ma wszystkie prawa, bo ma o produkcie zrobioną stronę internetową, na której na dole pisze, że ma „Wszelkie prawa zastrzeżone”. Mój instynkt podpowiada mi, że jeśli firma kupuje taką usługę, a następnie odmawia zapłaty swojemu programiście, nie powinno się jej pozwalać na zatrzymanie produktu, a tym bardziej na odsprzedaż. Nie podpisałem żadnych umów dotyczących oddania firmie do użytku tego produktu, zrobiłem to w swoim czasie i bez pomocy reszty firmy. To wszystko dzieje się w Danii, Europie, ale domyślam się, że zasady dotyczące tego są nieco uniwersalne. Nie jestem najsilniejszą osobą do legalnej rozmowy, więc mogę się mylić.


title: najlepszy i najczęściej używany algorytm znajdowania pierwszości danej liczby dodatniej

text: Kiedy byłem na studiach i jako uczący się języka programowania pisałem program do wyszukiwania liczb pierwszych, ale nie mam nic przeciwko wydajności programu pod względem szybkości. Teraz po długim czasie zacząłem rozwiązywać problemy z projecteuler.net. Teraz zastanawiam się, czy istnieje najlepszy i najczęściej używany algorytm do znajdowania pierwszości danej liczby dodatniej, który szybko daje wynik? Dziękuję


title: Jakie specyfikacje w tworzeniu oprogramowania są istotne dla klientów?

text: Załóżmy, że Twoja firma tworzy oprogramowanie, a klient chce, abyś zajął się ich rozwojem. Tak się składa, że mają swój własny zespół IT, ale jest on w pełni związany, więc zlecają to Tobie. Projekt jest w fazie wyceny, a szef działu IT Twojego klienta prosi teraz o specyfikację wymagań (SRS), specyfikację architektoniczną i tak dalej. Szef IT chce poznać funkcje, moduły i inne decyzje, które będą w budowie. Poza SRS do analizy, czy Twoja firma jest zobowiązana do dostarczenia tych specyfikacji, nawet przed potwierdzeniem projektu?


title: Wysyłanie wiadomości e-mail z aplikacji internetowej bez filtrowania

text: W przypadku aplikacji webowej, nad którą obecnie pracuję, bardzo ważne jest, aby automatyczne wiadomości e-mail docierały do odbiorcy. Skonfigurowałem serwer pocztowy na VPS, na którym będzie działać aplikacja. Podjąłem wszystkie regularne środki ostrożności, aby mieć pewność, że wysyłane przez niego e-maile nie zostaną odfiltrowane: SPF, DKIM, e-maile mają zarówno część tekstową, jak i html, część html jest prawidłowym html itp. itd. Nadal niektóre usługi – w szczególności adresy Microsoft Outlook.net – blokują wiadomość lub automatycznie oznaczają ją jako niechcianą pocztę. Czytałem trochę o tym, jak Microsoft określa, czy wiadomość jest śmieciem, aw naszym przypadku jest to najprawdopodobniej reputacja serwera pocztowego. Ponieważ jest to nowy serwer, nie ma jeszcze żadnej reputacji. Jak inni programiści radzą sobie z tego typu problemem? Czy korzystasz z zewnętrznych usług SMTP, takich jak Google Apps, do wysyłania poczty ze swojej aplikacji? Jakieś pomysły lub wskazówki?


title: Czy istnieje coś takiego jak przykładowy generator parserów lub rozwój ad-hoc DSL?

text: Chciałbym wiedzieć, czy istnieje narzędzie, które pozwala wprowadzać przykłady poprawnych dokumentów, a następnie uogólniać je na parser wielokrotnego użytku. Mogę to sobie wyobrazić, ale za każdym razem, gdy zaczynam uczyć się parserów, docieram do ziarnistości czegoś takiego jak lex i yacc i wydaje się to bardziej skomplikowane niż podpowiada mi instynkt. Zastanawiam się więc, czy * a) jest to po prostu tak skomplikowane i muszę to zobaczyć, czy * b) istnieje sposób na zbudowanie DSL ad-hoc dla stosunkowo prostych zadań, których mógłbym się nauczyć o aktualizacji: prosty przykład "ad hoc" dsl może chciałbym zrobić szybko. Zamiast XML <foo> <item>bar</item> <item>bat</item> </foo> mógłbym chcieć czegoś takiego: foo bar bat * linie zawierają elementy danych * wcięcie tworzy relacje rodzic-dziecko Moje wyobrażenie narzędzie pozwala mi przekazać powyższe informacje. Następnie, w moim wyimaginowanym narzędziu, mogę podświetlić "foo" powyżej i kliknąć prawym przyciskiem myszy, w którym to momencie pojawi się monit o ograniczenie wartości do listy wyboru .... Następnie mogę rozszerzyć pierwszy do: foo bar(5 ) bat * w linii, '(' i ')' otaczają element podrzędny Powyższe może być zakwalifikowane wartością logiczną, która określa rekurencję lub nie, jeśli jest ustawiona na true, wtedy bar(lala(4)) może działać... Jest to rodzaj toku myślenia, który na ogół skłonił mnie do zadania pytania. Możliwe, że teraz to zakwalifikowałem, odpowiedź się zmienia - jeśli tak to z góry przepraszam.


title: Czy istnieje dobra architektura kognitywna do wdrażania inteligentnych agentów oprogramowania?

text: Tak więc lubię zajmować się projektowaniem inteligentnych agentów (głównie „boty” w grach wideo, ale także ogólną automatyzację zadań), ale jako początkujący psycholog byłbym naprawdę zainteresowany platformą do tworzenia takich agentów w kognitywnie wiarygodnym otoczeniu. Taka platforma prawdopodobnie przybrałaby formę architektury kognitywnej, ale ponieważ mają to być przede wszystkim implementacje teorii psychologicznych, obawiam się, że żadna z nich nie jest gotowa do rzeczywistego działania jako inteligentny agent w złożonym środowisku oprogramowania jak gra wideo. Czy ktoś próbował wykorzystać taką architekturę do stworzenia agenta takiego, jaki opisałem? Jeśli to się nie uda, czy jakakolwiek architektura kognitywna wydaje się szczególnie odpowiednia do tego rodzaju pracy? Moje obecne przeczucie jest takie, że architektura hybrydowa, taka jak CLARION, może działać, ale nie mając z nią żadnego doświadczenia, wciąż się waham. Wiem, że SOAR był powszechnie używany do symulacji pilota myśliwca, ale wymagało to lat ręcznego kodowania zasad produkcji, a zatem wydaje się niepraktyczną platformą z mojego punktu widzenia.


title: Wdrożenie pojedynczej zasady odpowiedzialności

text: W wolnym czasie zajmuję się projektowaniem CMS, aby dowiedzieć się więcej o rzeczywistym projektowaniu i architekturze oprogramowania itp. Przechodząc przez zasady SOLID, już zauważyłem, że pomysły takie jak „MVC”, „DRY” i „KISS” , prawie pasują do siebie. To powiedziawszy, nadal mam problem z podjęciem decyzji, czy jedna z dwóch implementacji jest najlepszym wyborem, jeśli chodzi o zasadę pojedynczej odpowiedzialności. Implementacja #1: class User getName getPassword getEmail // etc... class UserManager twórz odczyt aktualizuj usuń klasę Początek sesji stop class Logowanie main class Wyloguj main class Zarejestruj main Ideą tej implementacji jest to, że wszystkie akcje wykonywane przez użytkownika są oddzielone różne klasy (tworząc możliwy przypadek trafnie nazwanego Kodu Ravioli), ale podążając za SRP do „koszulki”, prawie dosłownie. Ale potem pomyślałem, że to trochę za dużo i wymyśliłem następną klasę implementacji UserView extends View getLogin //Zwraca html dla ekranu logowania getShortLogin //Zwraca html dla wbudowanego paska logowania getLogout //Zwraca html dla przycisk wylogowania getRegister //Zwraca kod html dla strony rejestru // itd... w razie potrzeby klasa UserModel extends DataModel implementuje IDataModel // Nie implementuje jeszcze żadnych nowych metod poza metodami interfejsu // Nie wymyśliłem niczego specjalnego przejdź tutaj w tej chwili // Wszystkie operacje CRUD są obsługiwane przez DataModel // metodami zaimplementowanymi przez klasę interfejsu UserControl extends Control implementuje IControl logowanie rejestracja startSession stopSession class User extends DataObject getName getPassword getEmail // itd... To jest oczywiste chytry wciąż bardzo zorganizowany i wciąż bardzo "pojedyncza odpowiedzialność". Klasa `User` to obiekt danych, na którym mogę manipulować danymi, a następnie przekazać je do `UserModel`, aby zapisać je w bazie danych. Całe renderowanie danych użytkownika (to, co użytkownik zobaczy) jest obsługiwane przez `UserView` i jego metody, a wszystkie działania użytkownika znajdują się w jednym miejscu w `UserControl` (plus kilka zautomatyzowanych rzeczy wymaganych przez CMS do utrzymania zalogowanego użytkownika lub aby upewnić się, że pozostaną na zewnątrz.) Osobiście nie mogę wymyślić nic złego w tej implementacji. W moich osobistych odczuciach czuję, że oba są faktycznie poprawne, ale nie mogę zdecydować, który z nich byłby łatwiejszy do utrzymania i przedłużenia w miarę upływu życia (pomimo skłaniania się ku Wdrożeniu #1). A co z wami? Jakie są twoje opinie na ten temat? Który jest lepszy? Jakie podstawy (lub inaczej, niuanse) tej zasady przegapiłem w obu projektach?


title: GPL- Ile źródeł musi zostać wydanych?

text: Załóżmy, że mam bibliotekę na licencji GPL v2, która jest interesująca dla projektu o zamkniętym kodzie źródłowym (np. Wolfram Alpha). Gdyby część mojego kodu została użyta w Wolfram Alpha lub w produkcie, który współpracuje z Wolfram Alpha, czy musieliby wydać cały swój kod dla Wolfram Alpha na licencji GPL v2?


title: Jak zatrzymać przełączanie między klawiaturą a myszą?

text: Piszę bezwzrokowo od kilku lat, ale bardzo często muszę przełączać się między różnymi aplikacjami. Do edycji tekstu nie potrzebuję myszy, ale jak tylko potrzebuję przeglądarki internetowej, przełączam się na mysz. Myślę, że tracę na tym dużo czasu i energii. Ponieważ zajmuję się tworzeniem stron internetowych, często przełączam się między klawiaturą a myszą. Czy masz działające rozwiązanie? Proszę nie mów mi o wtyczkach do przeglądarek, których sam nigdy nie używałeś. Dziękuję Ci.


title: DataMapper dla wtyczki do gry MMO do wysyłania pakietów

text: Pracuję nad wtyczką do jakiegoś serwera gier. Informacje o wtyczce nie są tak naprawdę potrzebne. _Kilka punktów, które możesz uznać za pomocne, aby odpowiedzieć na to pytanie:_ **Serwer** Serwer jest bardzo źle zaprogramowany. Cała struktura projektu i sposób, w jaki obsługuje, dlatego nie mogę zaimplementować niczego, co będzie wymagało zmiany sposobu, w jaki serwer obsługuje pakiety. Serwer posiada listę wszystkich "wysyłanych" pakietów i **wysyła je do klienta co 600ms** Więc w zasadzie klient jest aktualizowany co 600ms, jeśli z serwera przychodzą pakiety. **Moja wtyczka** Moja wtyczka wymaga aktualizacji kilku interfejsów użytkownika klienta, takich jak nowe nazwy graczy, zmiana aktualnie otwartego okna interfejsu i tak dalej. Mogę użyć klasy `DataMapper`, która zawiera obiekt, który ma możliwość i dostęp do dodawania nowych pakietów do listy (tak naprawdę nie jest to lista; to tylko lista bajtów i ramek). Teraz spójrz na ten fragment _dummy_ (Uwaga - to nie jest moja wtyczka, ale prosty przykład tego, o czym mówię): public class MyPluginPlayer { private DataMapper mapper; prywatne państwo int; public void setState(int stan) { this.state = stan; } public void getState() { return this.state; } public void selectWindowForState() { if (this.state == 5) { mapper.createLongWindow(); } else if (this.state == 4) { mapper.createWideWindow(); } // .... etc .... } } W moim _dummy_ przykładzie `MyPluginPlayer` jest dziewczyną odpowiedzialną za obsługę logiki biznesowej odtwarzacza będącego częścią mojej wtyczki, powiedzmy, że moja wtyczka to mały mini -gra, jak gra w karty. Więc wyobraź sobie, że istnieje klasa menedżera, która zawiera listę obiektów `MyPluginPlayer`, która przechodzi przez nie wszystkie i analizuje je, ustawiając bieżący stan, a następnie wywołuje `selectWindowForState()`. Metoda `selectWindowForState()` zasadniczo odczytuje wszystkie możliwe stany, a następnie odczytuje, który stan jest stanem bieżącym, a następnie wywołuje odpowiednią metodę w `DataMapper`, aby wysłać właściwy pakiet. Klasa `DataMapper` zasadniczo wykonuje całą brudną robotę, taką jak tworzenie nowej ramki pakietu, zapisywanie bajtów, `int`s i wszystkiego, co jest potrzebne dla konkretnego pakietu. **Problem** Ja nazywam używanie `DataMapper` powyżej złym, ponieważ uważam, że klasa domeny nie powinna mieć bezpośredniego dostępu do `DataMapper`. Pomyślałem o stworzeniu listy `Queue` i zamiast wywoływania `mapper.createWideWindow()` lub cokolwiek innego, doda akcję do listy kolejek, a następnie `DataMapper` uzyska dostęp do tej listy i przetworzy wszystkie te pakiety do globalna lista pakietów wychodzących serwera. `DataMapper` zrobi to na końcu każdego cyklu pętli, który jest wykonywany w klasie menedżera. for (Player p : player) { MyPluginPlayer domain = p.getDomain(); // ......zarządzanie ..... // p.getMapper().update(); //przechodzi przez listę kolejek i dodaje wszystkie pakiety do pakietów wychodzących z serwera } Ale nie jestem do końca pewien, jak zdefiniować te aktualizacje pakietów. Jedyną metodą, o której mogę pomyśleć, jest to, że każdy pakiet będzie miał własną klasę, która implementuje interfejs. Ale będę musiał stworzyć klasę dla każdego pakietu i nie podoba mi się projektowanie wielu klas dla drobiazgów. Co myślisz o obu tych metodach? Czy mógłbyś zaproponować coś lepszego?


title: Jakie korzyści może dać mi przejście na ruby jako programiście Pythona?

text: To jest moje pierwsze pytanie dotyczące stackoverflow, więc proszę o wyrozumiałość. Staram się trzymać z daleka od jakiejkolwiek formy trollingu lub nęcenia płomieniami, ponieważ mam ogromny szacunek do obu języków. Jestem programistą Pythona (choć nie ekspertem) i uwielbiam to. Moim pierwszym językiem był C++. Moja praca (tworzenie stron internetowych) popycha mnie w kierunku innych języków, takich jak php i javascript. Ostatnio byłem bardzo podekscytowany rosnącą popularnością Ruby. Jednak miałem wrażenie, że Python i Ruby są tak blisko siebie, że nie ma sensu uczyć się i opanowywać ich obu. Ale mam wrażenie, że się myliłem, stąd moje pytanie: Chciałbym usłyszeć od programistów Pythona, którzy albo całkowicie przeszli na ruby, albo dodali ruby do swojego zestawu narzędzi. Jakie konkretne korzyści uzyskałeś z przejścia (w całości lub częściowo) na Ruby z Pythona? Idealnie chciałbym usłyszeć z doświadczeń z prawdziwego świata.


title: Java for loop: dlaczego nie mogę zadeklarować dwóch zmiennych w nagłówku pętli for?

text: Zawsze się zastanawiałem, dlaczego to się nie kompiluje? for(int i=0, int q=0; i<a.length; i++){ ... } Dlaczego Java nie pozwala mi zadeklarować więcej niż jednej zmiennej w nagłówku pętli for? Czy jest za tym logiczny powód?


title: Na odwieczne pytanie o rozpoczęcie programowania nie znalazłem dla mnie odpowiedzi

text: Od lat chciałem nauczyć się programować, ale do tej pory każda książka i film bardzo szybko przerosły głowę. W końcu chcę nauczyć się C# zarówno dla tworzenia oprogramowania Windows, jak i tworzenia gier (a konkretnie Unity3D - jest to silnik gier, który używa C#). Nie wiem absolutnie nic o programowaniu/skryptowaniu, poza tym, co można osiągnąć. Od lat jestem programistą stron internetowych i bardzo dobrze znam HTML, średnio dobrze CSS i JavaScript wcale. Jestem profesjonalistą w łamaniu skryptów. :) Odszedłem od tworzenia stron internetowych i chcę skupić się na nauce programowania. To dla mnie jak błędne koło – mniej więcej co 6 miesięcy wchodzę w fazę „Ok, jestem gotowy do nauki”, znajduję samouczek lub książkę, czuję się przytłoczony, a potem poddaję się. Piszę to zaraz po tym, jak zobaczyłem serię filmów o podstawach C#, ale po 3 filmach byłem całkowicie zagubiony. To tak, jakby wszyscy wspominali o pojęciu, takim jak łańcuchy warunkowe, przejrzyj je, a następnie załóż, że je rozumiesz. Chociaż C# jest celem końcowym, czy warto na początku uczyć się łatwiejszego języka, takiego jak VB, jako kompletny i zupełny nowicjusz? Wiem, że nie ma mnóstwa różnic, a nauka nowych języków staje się coraz łatwiejsza, ponieważ dotyczy głównie składni, ale czuję, że nie mogę ogarnąć głowy nawet najbardziej podstawowymi koncepcjami jako podstawą. Na przykład dokładnie wiem, co program ma robić, a kiedy wyjaśniam to programiście, zwykle koduje go bardzo szybko. Gdybym mógł napisać to prostym angielskim, mógłbym to zrobić sam. :) Czy powinienem nadal próbować uczyć się C#, czy powinienem zagłębić się w inny język, aby uzyskać więcej podstawowej wiedzy na temat samego kodowania, a następnie przejść do niego? Każdy dom potrzebuje fundamentu, ale czuję, że nie mogę nawet pojąć, jak powstaje beton podczas jego budowy.


title: Aby znaleźć najstarszy/najnowszy element w stercie

text: Chcę znaleźć najstarszy/najnowszy element dodany do sterty o rozmiarze k. W dowolnym momencie, jeśli mam znaleźć, powiedzmy, że najstarszy element w stercie jest w jakimkolwiek podejściu z przestrzenią O(1) i czasem O(1). Myślałem o podejściu polegającym na posiadaniu kolejki o takim samym rozmiarze jak sterta i dodawaniu wszystkich elementów do kolejki, gdy są dodawane do sterty. Daje to stałe rozwiązanie czasowe, ale wymaga to dodatkowej przestrzeni O(k). Chciałbym wiedzieć, czy ten problem można rozwiązać za pomocą stałej przestrzeni.


title: Czy powinienem udzielić odpowiedzi na nieudaną rozmowę kwalifikacyjną z kodowaniem?

text: Mieliśmy kandydata na rozmowę kwalifikacyjną na wyższym poziomie, który nie zdołał odpowiedzieć na pytanie FizzBuzz*. To znaczy, naprawdę, całkowicie, całkowicie, nie zadałem pytania - nawet blisko. Nauczyłem go nawet, by zaczął myśleć o użyciu pętli i że „3” i „5” były **naprawdę** warte rozważenia jako szczególne przypadki. Zawalił to. Tylko dla celów kontroli jakości zadałem dokładnie to samo pytanie trzem kolegom z drużyny; dał im 5 minut; a potem wrócili, by zebrać swój pseudokod. **Wszyscy** przyjęli to i nie widzieli wcześniej pytania. Dwóch zapytało, na czym polega sztuczka... W innym ćwiczeniu logicznym kandydat wykazał pewne zrozumienie niektórych funkcji dostępnych w języku, którego wybrał (C#). Więc nie jest tak, że _nigdy_ nie napisał ani jednej linijki kodu. Ale jego logika wciąż cuchnęła. Moje pytanie brzmi, czy powinienem był dać mu odpowiedź na logiczne pytania. Wiedział, że je wysadził i przyznał się do tego później w wywiadzie. Z drugiej strony nigdy nie pytał o odpowiedź ani o to, czego spodziewałem się zobaczyć. Wiem, że ćwiczenia z kodowania mogą być użyte do nastawienia kandydatów na porażkę (ponownie, patrz drugi link powyżej). I naprawdę starałem się pomóc mu w znalezieniu odpowiedzi na sedno pytania. Ale to był kandydat na wysokim poziomie, a Fizz-Buzz jest, szczerze mówiąc, śmiesznie łatwy, nawet biorąc pod uwagę tremę podczas rozmowy kwalifikacyjnej. Czułem, że powinienem był pokazać mu sposób rozwiązania problemu, aby mógł przynajmniej wyciągnąć naukę z doświadczenia. Ale znowu nie zapytał. Jaki jest właściwy sposób radzenia sobie z tą sytuacją? * * * * _Ok, to nie jest link do właściwego pytania FizzBuzz, ale jest to dobra dyskusja P.SE na temat FizzBuzz i zawiera linki do różnych jego aspektów._ _Przypis 2_ : Aby pomóc wyjaśnić, jest to niuans Fizz - Zapytałem Buzz i to z pierwszego problemu Project Euler. Druk zastępczy Fizz | Buzz za sumowanie liczb i masz to samo podstawowe pytanie. `Jeśli wymienimy wszystkie liczby naturalne poniżej 10, które są wielokrotnościami 3 lub 5, otrzymamy 3, 5, 6 i 9. Suma tych wielokrotności wynosi 23. Napisz funkcję, która znajduje sumę wszystkich wielokrotności 3 lub 5 poniżej 1000.` _Przypis 3_: To pytanie przyciągnęło więcej uwagi niż się spodziewałem i doceniam wszystkie odpowiedzi. Niektóre z późniejszych odpowiedzi naprawdę dotarły do sedna mojego pytania, więc pozwolę społeczności przejrzeć i zagłosować przed przypisaniem „tej” odpowiedzi. _Przypis 4_ : Wybrałem odpowiedź na podstawie głosów społeczności w tym momencie. I myślę, że odpowiedź Yannisa jest odpowiednia do wywiadów z nowszymi twórcami. Myślę, że zbiorowa reakcja skupiająca się na braku pytania o odpowiedź również jest strzałem w dziesiątkę.


title: Co oznacza termin „Sans” w nazwie klasy?

text: Czytałem kod projektu java, w którym znalazłem nazwę klasy, taką jak "UserSansXml". Ta klasa zajmuje się obiektami użytkownika. Chciałem poznać znaczenie słowa „sans”.


title: Rozszerzenie Java Cryptography

text: Powiedziano mi, że do obsługi szyfrowania AES256 w mojej aplikacji Java potrzebuję JCE z plikami zasad jurysdykcji o nieograniczonej sile. Pobrałem to z Oracle, rozpakowałem i widzę tylko 2 pliki JAR: * `local_policy.jar`; i * `US_export_polic.jar` Chcę tylko potwierdzić, że niczego tu nie brakuje! Rozumiem (po przeczytaniu pliku `README.txt`) po prostu wrzucam te dwa do katalogu `<JAVA_HOME>/lib/security/` i powinny zostać zainstalowane. Po nazwach tych plików JAR muszę założyć, że nie jest to Java Crypto API, które nie obsługuje AES256, ale w rzeczywistości jest to prawdopodobnie **prawny** problem? I że te dwa pliki JAR w zasadzie mówią JRE " _tak, jest prawnie dopuszczalne uruchamianie tego poziomu krypto (AES256)._ " Czy mam rację, czy nie?


title: C proste tablice i wskaźniki pytanie

text: Oto zamieszanie, powiedzmy, że deklaruję tablicę znaków char name[3] = "Sam"; a potem deklaruję kolejną tablicę, ale tym razem używając wskaźników char * name = "Sam"; Jaka jest różnica między tymi dwoma? Mam na myśli to, że działają w ten sam sposób w programie. Również jak ten ostatni przechowuje rozmiar rzeczy, które ktoś w nim umieszcza, w tym przypadku 3 znaki? Czym się różni od char * name = new char[3]; Jeśli te trzy są różne, gdzie należy ich użyć, mam na myśli w jakich okolicznościach?


title: Ile czasu powinno czekać jquery?

text: Zajmuję się programowaniem funkcji jQuery do wyszukiwania artykułów, podczas gdy użytkownik wpisuje w polu wyszukiwania. Zaimplementowałem wiązanie w jQuery, które przy każdym `keyup` ustawia `clearTimeout` i `setTimeout` na rzeczywistą funkcję wykonującą `post` do serwera. Dzieje się tak dlatego, że użytkownicy mogą coś pisać, a ja chcę uniknąć wielu 'postów'. "Utknąłem" z: z punktu widzenia interfejsu użytkownika, o której godzinie należy ustawić `setTimeout`? Próbowałem różnych czasów (1s, 1,5s, 0,5s), ale muszę przyznać, że wybór wydaje mi się trochę przypadkowy. To zrodziło szersze pytanie: czy istnieje jakieś odniesienie lub badanie, które odpowiada na pytanie, jakie są „optymalne” czasy dla dynamicznych interfejsów internetowych? Dopiero teraz zauważyłem, że wcześniej korzystałem z większej liczby timerów (np. slajdów), które również były wybierane „losowo”. Innymi słowy, czy ktoś wie, jak _uzasadnić_, dlaczego dane zdarzenie w interfejsie WWW ma (lub powinno mieć) określony czas delta lub zakres czasów delta? (przepraszam, jeśli to pytanie nie jest tu adekwatne, wydawało mi się bliższe niż SO.)


title: Dlaczego warto korzystać z FMOD?

text: Tworzę odtwarzacz muzyki w C++ i QT, wszyscy mówią, że użyj FMOD. Ale QT ma wszystkie komponenty, mogę odtwarzać dźwięk, tworzyć playlisty i wszystko, czego potrzebuję, więc co oferuje mi FMOD, czego nie można zrobić z QT? Zrobiłem trochę badań, tu i tu i tu, i wiele innych wyników; w rzeczywistości, jeśli po prostu wygooglujesz _"utwórz odtwarzacz muzyki"_, otrzymasz _"użyj fmod i qt jako GUI"_.


title: Najlepsze praktyki dotyczące pracy zespołowej z RoR/Github dla projektanta + kodera?

text: Mój przyjaciel i ja zaczęliśmy próbować współpracować przy kilku projektach. W tle wywodzę się z programowania w PHP/Wordpress/Drupal, ale ostatnio mam większe doświadczenie z frameworkiem RoR, podczas gdy on jest bardziej doświadczony jako projektant HTML/CSS, pracując z PHP i WordPress. Myślę, że oboje jesteśmy stosunkowo nowi w RoR, więc próbujemy ustalić nasz wspólny przepływ pracy, ale nie mamy pojęcia, od czego zacząć. Na przykład próbowaliśmy dowiedzieć się, jak mógłby dokonać drobnych zmian w pliku CSS bez konieczności pełnego wdrożenia RoR na swoim komputerze. Nadal nie wymyśliliśmy rozwiązania, więc myślę, że najlepiej będzie, jeśli zaczniemy ustawiać jakiś przepływ pracy oparty na najlepszych praktykach. Zastanawiałem się, czy macie jakieś wglądy lub linki do artykułów/studiów przypadków dotyczących tego tematu?


title: Wzorce regex Java - kompilować stałe czasowe lub elementy instancji?

text: Obecnie mam kilka obiektów **_singleton_**, w których dopasowuję wyrażenia regularne, a moje `Wzór` są zdefiniowane w następujący sposób: class Foobar { private final Pattern firstPattern = Pattern.compile("niektóre regex" ); private final Pattern secondPattern = Pattern.compile("inne wyrażenie regularne"); // więcej Wzorców, itd. private Foobar() {} public static Foobar create() { /* singleton stuff */ } } Ale pewnego dnia ktoś mi powiedział, że to zły styl, a `Wzór powinien * *zawsze** być zdefiniowane na poziomie klasy i wyglądać mniej więcej tak: class Foobar { private static final Pattern FIRST_PATTERN = Pattern.compile("niektóre wyrażenie regularne"); prywatny statyczny końcowy Pattern SECOND_PATTERN = Pattern.compile("inne wyrażenie regularne"); // więcej Wzorców itp. private Foobar() {} public static Foobar create() { /* singleton stuff */ } } Żywotność tego konkretnego obiektu nie jest tak długa, a moim głównym powodem zastosowania pierwszego podejścia jest ponieważ nie ma dla mnie sensu trzymanie się `wzoru`, gdy obiekt zostanie poddany GC. Jakieś sugestie / przemyślenia?


title: Znajdowanie kolejności elementów zestawu

text: Trochę przeformułowany, w formie gry, rzeczywisty problem: Załóżmy, że istnieje zbiór elementów {1, 2, ..., n}. Gracz A wybrał jedną permutację tego zestawu. Gracz B chce poznać kolejność elementów, zadając pytania typu „Czy X jest wcześniej w permutacji niż Y?”, gdzie X i Y są elementami zbioru. Zakładając, że B chce zminimalizować liczbę pytań, ile razy musiałby zadawać i jaki byłby algorytm?


title: Jak wdrożyć równoległy przepływ pracy

text: Próbuję zaimplementować zadanie podziału równoległego przy użyciu systemu przepływu pracy. Używam platformy .NET, ale mój proces jest bardzo prosty i nie chcę używać WF ani niczego takiego. Próbowałem używać Stateless. Jak dotąd konfiguracja i uruchomienie było łatwe, ale mogę używać niewłaściwego narzędzia do tego zadania, ponieważ nie jestem pewien, w jaki sposób należy modelować przepływy pracy z podziałem równoległym, w których wymagane jest wiele podzadań, zanim będzie można przejść do następnego stanu, ale czynności nie wymagają wykonywania w określonej kolejności. Mogę łatwo użyć opcji konfiguracji dynamicznej, aby ręcznie sprawdzić mój model danych, aby sprawdzić, czy model jest w prawidłowym stanie (wszystkie podzadania zakończone) i czy mogę przejść do następnego stanu, ale wydaje się to całkowicie łamać paradygmat przepływu pracy. Jaki jest właściwy, ortodoksyjny sposób wdrożenia procesu podziału równoległego? Dziękuję


title: Wzorzec strukturalny do niekonwencjonalnego wykorzystania bazy danych

text: Piszę klienta gry jako osobisty projekt i używam go jako narzędzia do nauki o dostępie do bazy danych Java, w szczególności Neo4j i prawdopodobnie Spring Data Neo4j, jeśli uznam, że jest to właściwe. Doskonale zdaję sobie sprawę, że moja aplikacja jest nieco niekonwencjonalna, a to rodzi pytania, które są wąsko trudne. Mam nadzieję, że to pytanie jest odpowiednie dla tej strony. Być może najlepszym sposobem, aby o to zapytać, jest najpierw wyjaśnienie, o czym myślę i dlaczego. Moim głównym powodem włączenia bazy danych jest trwałość, a nie możliwość zapytań. Ponieważ czasy reakcji są krytyczne, planuję, aby podstawowym modelem stanu gry był graf POJO w pamięci. Chcę zaktualizować trwałą bazę danych w sposób asynchroniczny, ostatecznie spójny. Jeśli dobrze rozumiem, jest to odwrotność większości aplikacji bazodanowych, w których baza danych jest autorytatywna, a dane w pamięci są tylko kopią migawki. Czy istnieje nazwa tego wzoru? Jeśli napisałeś coś takiego, jakie pułapki mogę napotkać? Czy to naiwne, żeby tego spróbować?


title: Reguła biznesowa do wyświetlania danych wielkimi literami - jak sobie z tym poradzić?

text: Część systemu, nad którym pracuję, zarządza niektórymi informacjami o papierach wartościowych (akcje, obligacje itp.), a zasady biznesowe określają, że niektóre pola mają być wyświetlane tylko we wszystkich CAPS (na przykład symbole giełdowe i CUSIP). Użytkownicy będą musieli przeglądać dane wyświetlane na ekranie, a także wykonywać operacje tworzenia/edycji wprowadzania danych. Gdzie najlepiej sobie z tym poradzić? _1\. Tylko warstwa prezentacji_ użytkownik wprowadza „ibm” jako symbol giełdowy, przechowywany w bazie danych jako „ibm”, konwertowany na wielkie litery podczas wyświetlania w aplikacji („IBM”) _2\. Konwertuj na CAPS przed zapisaniem w DB_ użytkownik wprowadza "ibm", klasa modelu konwertuje na wielkie litery i wysyła do bazy danych, przechowywanej jako "IBM" Coś w rodzaju niestandardowego ustawiacza: private string _StockSymbol; ciąg publiczny StockSymbol { get { return _StockSymbol; } set { if (wartość != null) wartość = wartość.ToUpper(); _SymbolAkcji = wartość; } } _3\. Konwertuj na CAPS w DB_ użytkownik wpisuje „ibm”, zapytanie wstawiające bazę danych konwertuje na „IBM” (na przykład używając funkcji `UPPER` w SQL) Wynik końcowy jest taki sam dla użytkowników - widzą swoje dane we wszystkich CAPS i system nie dba o to, czy wprowadzone dane są poprawne, czy nie. Najbardziej „zgodna z MVC” odpowiedź wydaje się być nr 1, ale jeśli te dane nigdy nie będą używane w żadnym innym formacie niż wszystkie CAPS, uważam, że należy je zweryfikować jako takie przed zapisaniem w bazie danych. To wtedy staje się bardziej problemem kontrolera lub modelu widoku, prawda? Słyszałem, że ludzie mówią o stworzeniu tego po stronie klienta za pomocą Javy (a nawet CSS), ale wydaje się to bardzo kiepskim rozwiązaniem. Myślę, że pytanie jest niezależne od języka/systemu, ale jeśli ma to znaczenie, używam MS SQL z Entity Framework/ASP.Net MVC. Zastanawiam się nad tym, czy taka prezentacyjna reguła biznesowa powinna wpływać na sposób przechowywania danych w bazie danych (CAPS vs bez CAPS). Aplikacja nie dba o to, czy symbol giełdowy IBM jest wprowadzany jako "iBm" czy "ibM", ale wydaje się, że przechowywanie takich danych w ten sposób jest niewłaściwe (będzie on zawsze używany/wyświetlany tylko w CAPS). Czy uważasz, że jest to kwestia walidacji danych, którą należy obsłużyć na poziomie kontrolera/modelu, czy szczegół prezentacji, który należy obsłużyć tylko w widoku?


title: Ustaw typ zwrotu jako interfejs — problem z inicjalizacją

text: Chciałbym, aby typ zwracany mojej metody był interfejsem, a nie klasą z podobnych powodów wymienionych w c# List lub IList, jednak mam problem z ustaleniem, jak zainicjować interfejs, aby go zwrócić. Nie mogę użyć `new IA()` i `(IA) new A()` nie działa, ponieważ nie mogę rzutować wyniku na `B`. interfejs IA{} class A: IA{} class B: IA{} class UseIA { public IA DesiredMethod() { return ???;// new IA() } public A UndesiredMethod() { return new A(); } }


title: przechowywanie szablonu mapy w bazie danych

text: Pracuję nad aplikacją wyświetlającą kartogramy. Są to różne typy map, niektóre wyświetlają stan według hrabstwa, kraj według stanu/prowincji lub świat według kraju. Jak mam obsłużyć przechowywanie informacji o mapach w bazie danych? **Moje myśli:** nie będę musiał wykonywać zapytań, aby znaleźć POI w regionie, więc nie sądzę, aby było konieczne używanie przestrzennych typów danych. Rozważam przechowywanie mapy jako obiektu geoJSON (używam biblioteki mapowania JS, która akceptuje geoJSON). Jedynym problemem jest to, co zrobić, jeśli chcę mapę północno-wschodniej części Stanów Zjednoczonych. Wtedy miałbym geoJSON dla Stanów Zjednoczonych i osobny dla północno-wschodnich Stanów Zjednoczonych, co byłoby zbędne. Czy miałoby sens posiadanie bazy danych kształtów, w której miałem każdy stan, a kiedy potrzebowałem mapy USA, mogłem zapytać o każdy stan, a kiedy potrzebowałem mapy północno-wschodniej części USA, mogłem ponownie zapytać o to, czego potrzebuję? **Uwaga** : nie interesuje mnie przechowywanie danych dla każdego regionu, tylko sam region. Będę wyszukiwał dane w locie dla określonego regionu.


title: Dane konfiguracyjne: tabela jednowierszowa a tabela par nazwa-wartość

text: Załóżmy, że piszesz aplikację, którą może skonfigurować użytkownik. Do przechowywania tych „danych konfiguracyjnych” w bazie danych powszechnie stosuje się dwa wzorce. 1. _tabela jednowierszowa_ NazwaFirmy | StartPełny ekran | OdświeżSekundy | ... ------------+------------------------+------------ -------+-------- ACME Inc. | prawda | 20 | ... 2. Tabela _nazwa-para-wartość_ ConfigOption | Wartość -------------------+------------- NazwaFirmy | ACME Inc. StartPełny ekran | prawda (lub 1, lub Y, ...) RefreshSeconds | 20 ... | ... Widziałem obie opcje na wolności i obie mają oczywiste zalety i wady, na przykład: * Jednowierszowe tabele ograniczają liczbę opcji konfiguracyjnych, które możesz mieć (ponieważ liczba kolumn w wierszu jest zwykle ograniczony). Każda dodatkowa opcja konfiguracji wymaga zmiany schematu bazy danych. * W tabeli par nazwa-wartość wszystko jest „wpisane łańcuchowo” (musisz zakodować/zdekodować parametry logiczne/daty/itd.). * (o wiele więcej) Czy w społeczności programistów istnieje zgoda co do tego, która opcja jest preferowana?


title: Co oznacza tanie kopiowanie/rozgałęzianie dla systemu wersjonowania takiego jak SVN?

text: Jedną z zalet SVN nad CVS jest **tanie kopiowanie i rozgałęzianie**. Co oznacza " _tanie kopiowanie i rozgałęzianie_ " w żargonie SVN? Czym różni się od kopiowania i rozgałęziania CVS?


title: licencjonowanie „poprawki błędów programu Sharepoint”, aby ją zarezerwować

text: Mój przyjaciel niedawno zakończył swoją osobistą pracę nad projektem, który naprawia znany błąd w `sharepoint 2010`. Facet poświęcił sporo czasu\wysiłku, aby dojść do tego punktu. Skonsultował się ze mną w sprawie licencjonowania tej `poprawki` i zapytał, czy jest to możliwe i czy jest to akceptowane dla tego typu rozwiązań! Właściwie nie mam żadnych doświadczeń w tej dziedzinie, zwłaszcza, że chce zacząć sprzedawać „fix” i nie chce zgubić się na rynku PS: jego obecna lokalizacja to ZEA.


title: DI i hipotetyczne ustawiacze tylko do odczytu w C#

text: Czasami chciałbym zadeklarować taką właściwość: public string Name { get; zestaw tylko do odczytu; } Zastanawiam się, czy ktoś widzi powód, dla którego taka składnia nie powinna istnieć. Uważam, że ponieważ jest to podzbiór „get; private set;”, może tylko uczynić kod bardziej niezawodnym. Mam wrażenie, że takie setery byłyby wyjątkowo przyjazne dla DI, ale oczywiście bardziej interesuje mnie słuchanie twoich opinii niż własnych, więc co myślisz? _Jestem świadomy pól „publicznych tylko do odczytu”, ale nie są one przyjazne dla interfejsu, więc nawet ich nie rozważam. To powiedziawszy, nie mam nic przeciwko, jeśli włączysz je do dyskusji_ **Edytuj** Zdaję sobie sprawę, że czytając komentarze, być może mój pomysł jest trochę mylący. Ostatecznym celem tej nowej składni byłoby stworzenie automatycznej składni właściwości, która określa, że zapasowe pole prywatne powinno być tylko do odczytu. Zasadniczo deklarowanie właściwości przy użyciu mojej hipotetycznej składni public string Nazwa { get; zestaw tylko do odczytu; } będzie interpretowane przez C# jako: private string name tylko do odczytu; public string Nazwa { get { return this.name; } } Powodem, dla którego mówię, że byłoby to przyjazne dla DI, jest to, że kiedy w dużym stopniu polegamy na wstrzykiwaniu konstruktora, uważam, że dobrą praktyką jest deklarowanie pól wstrzykiwanych przez konstruktor jako tylko do odczytu.


title: Jak przejść z wysoce ręcznego procesu tworzenia i wdrażania do ciągłej integracji?

text: Mamy proces rozwoju, który jest całkowicie ręczny. Brak testów jednostkowych, testy interfejsu są ręczne, a także scalanie i integracja. Jak możemy przejść od tego stanu do wdrożenia ciągłej integracji z pełną (lub przynajmniej prawie pełną) automatyzacją budowania i testowania? Mamy dość intensywny cykl rozwoju i obecnie nie używamy agile, więc przejście na agile z CI w jednym ruchu byłoby bardzo skomplikowaną i kosztowną inwestycją. Jak możemy to robić powoli i wciąż zmierzać w kierunku środowiska CI?


title: Smartfony i tablety do testów

text: W swojej pracy rozpocząłem tworzenie strony/aplikacji internetowej, która będzie oglądana przede wszystkim na smartfonach i tabletach. Dostałem teraz zadanie zakupu niezbędnego sprzętu do testowania aplikacji internetowej. Ponieważ nie jestem frajerem mobilnym, nie jestem na bieżąco z najnowszymi i najlepszymi na rynku mobilnym. Potrzebuję więc porady, jakie jednostki kupić. Kilka wstępnych przemyśleń 1. Chciałbym omówić przeglądarki w najpopularniejszych systemach; iOS, Android i Symbian? (czy jest jeszcze coś, o czym powinienem wiedzieć?). 2. Chciałbym, aby każda przeglądarka miała rozmiar telefonu i rozmiar tabletu. iPhone i iPad wydają się być dobrym wyborem, ale po tym moja wiedza jest ograniczona. Mam nadzieję, że jest to w sferze tej witryny, możesz przenieść to pytanie do innej witryny SE, jeśli to pytanie pasuje lepiej gdzie indziej. Z góry dziękuję! **Edytuj:** W tym scenariuszu nie ma tak naprawdę żadnego klienta, który mógłby zapłacić, jest to aplikacja, z której powinni korzystać nasi klienci, ale jest rozwijana z naszej własnej inicjatywy. Po drugie, odnoszę wrażenie, że np. symulator iPhone'a do renderowania treści wykorzystuje przeglądarkę safari na komputery stacjonarne (czy się mylę?), jeśli tak, to jak sobie radzi z drobnymi rozbieżnościami w wersji desktopowej i telefonicznej (na przykład filmy, które nie mogą się automatycznie uruchomić na telefonie i tym podobne). Mogę się tutaj całkowicie mylić, podnosząc tylko to pytanie.


Czy jest jakiś powód, aby używać C++ w aplikacji tylko dla komputerów Mac? Nie mówię o integracji zewnętrznych bibliotek, którymi są C++, mam na myśli używanie C++ ze względu na jakiekolwiek zalety w konkretnej aplikacji. Chociaż kod interfejsu użytkownika musi być napisany w Obj-C, co z kodem logicznym? Ze względu na dynamiczną naturę Objective-C, wywołania metod C++ wydają się być nieco szybsze, ale czy ma to jakiś wpływ na każdy możliwy do wyobrażenia scenariusz z prawdziwego życia? Na przykład, czy byłoby sensowne używanie C++ zamiast Objective-C do symulacji dużych systemów cząstek, w których niektóre metody musiałyby być wywoływane w kółko w krótkim czasie? Widzę też kilka przypadków, w których C++ ma bardziej odpowiednie „odczucie”. Na przykład podczas tworzenia grafiki dobrze jest mieć typy wektorowe i macierzowe z odpowiednimi przeciążeniami operatorów i metodami. Wydaje mi się, że implementacja w Objective-C byłaby trochę niezgrabna. Ponadto obiekty celu-C nigdy nie mogą być traktowane jako zwykłe stare struktury danych w taki sam sposób, jak typy C++, ponieważ obiekty celu-C zawsze mają wskaźnik isa. Czy nie byłoby sensu używać C++ zamiast tego w czymś takim? Czy ktoś ma prawdziwy przykład sytuacji, w której dla niektórych części aplikacji wybrano C++? Czy Apple używa jakiegokolwiek C++ z wyjątkiem jądra? (Nie chcę tu rozpoczynać wojny ogniowej, oba języki mają swoje zalety i używam obu w równym stopniu, chociaż w różnych zastosowaniach.)


title: W jakich okolicznościach komunikaty o błędach powinny być prezentowane użytkownikowi?

text: Czy komunikaty o błędach powinny być kiedykolwiek przedstawiane użytkownikowi końcowemu, a jeśli tak, jakie zasady lub porady powinieneś mieć na temat tego, co powinno się w nich znaleźć?


title: Jak utrzymać dobrze wyszkolony zespół?

text: Obecnie prowadzę mentoring dla małego zespołu 4 młodszych programistów w małej firmie programistycznej. Są bardzo mądre i często wykonują swoje zadania na wysokim poziomie, ale jestem pewien, że wciąż mogą robić lepiej - właściwie mam dokładnie takie samo uczucie do siebie :) -. Poza tym niektóre z nich są bardziej „młodsze” niż inne. Chciałbym więc znaleźć zabawny sposób na poprawę ich umiejętności CS (projektowanie, kodowanie, testowanie, algorytmika...) oprócz doświadczenia, które zdobywają w codziennej pracy. Na przykład myślałem o zorganizowaniu cotygodniowych sesji, nie dłuższych niż 2 godziny, podczas których moglibyśmy wspólnie pracować nad trudnymi ćwiczeniami CS. Trochę jak programujące dojo. Jestem pewien, że zespołowi się to spodoba, ale czy to naprawdę dobry pomysł? Czy byłoby to skuteczne w kontekście zawodowym? Spędzają już cały tydzień na kodowaniu, więc jak mam to zorganizować, aby uzyskać jakieś korzyści? Wszelkie opinie mile widziane!


title: Zintegrować wersje git jako numery kompilacji, czy nie?

text: Kolega i ja na zmianę dyskutowaliśmy / dyskutowaliśmy o problemach / zaletach integracji wersji pochodzącej z bieżącego repozytorium git z naszym kodem za każdym razem, gdy jest on kompilowany. Uważamy, że zalety to: * Nie trzeba się martwić o błąd ludzki podczas aktualizacji numeru wersji * Możliwość śledzenia między tym, co znajdziemy w urządzeniu, a kodem źródłowym, z którego pochodzi. Problemy, które (dla nas) się pojawiły, obejmują: systemy budowania (np. MPLABX) mogą utrudnić wymyślenie, gdzie umieścić tego rodzaju podpięcia (i może się to skończyć dość tandetnie) * Więcej pracy, aby faktycznie zintegrować to ze skryptami budowania/plikami makefile szczególne podejście do kompilacji (np. co jeśli jedna osoba buduje przy użyciu XCode, a druga MPLABX) może tworzyć kolejne niespodzianki. Jesteśmy więc ciekawi, gdzie inni wylądowali w tej debacie. Bardzo łatwo jest, aby dyskusja przerodziła się w anegdotę. Jest wielu ludzi, którzy nalegają na kompleksową automatyzację, zawieszają ilość pracy z przodu i łączą się z nią. Po drugiej stronie debaty jest wielu innych, którzy po prostu robią najłatwiejszą rzecz, która działa i żyją z ryzykiem. Czy istnieje uzasadniona odpowiedź na pytanie, po której stronie najlepiej wylądować?


title: Skąd nagły wzrost popularności Lua?

text: Czy ktoś wie, dlaczego język programowania Lua odnotował ostatnio taki wzrost popularności? Idę według ocen TIOBE. http://www.tiobe.com/index.php/paperinfo/tpci/Lua.html Używałem Lua w przeszłości, kiedy pracowałem w sklepie z grami, ale nie sądziłem, że jest używany poza tą areną. Teraz jest to jedenasty najpopularniejszy język według TIOBE http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Czy ostatnio pojawiła się jakaś aktywność lub wiadomość, która mogła spowodować ten nagły wzrost? Dziękuję! EDYCJA: Szczególnie interesuje mnie ekstremalny wzrost w ciągu ostatniego roku, jak pokazano na tym wykresie: ![Historia Lua](http://i.stack.imgur.com/krjpB.png)


title: Zabranianie lub kontrolowanie „Ukrytego IT...” Kto powinien pisać i utrzymywać aplikacje ad-hoc?

text: Większe firmy zwykle mają problem z tym, że nie jest możliwe napisanie wszystkich programów, których potrzebują pracownicy (aby zaoszczędzić czas i zoptymalizować procesy) ze względu na brak personelu i pieniędzy. Następnie ukryte programy będą tworzone przez osoby mające (przynajmniej trochę) doświadczenie w kodowaniu (lub przez tanich studentów/stażystów...). W pewnych okolicznościach aplikacje te wzrosną na znaczeniu i rozprzestrzenią się od jednego użytkownika do całego działu. Następnie pojawia się punkt krytyczny: kto będzie dbał o aplikację, dodawał nowe funkcje, ...? A ta aplikacja ma kluczowe znaczenie. To jest potrzebne. Ale stażysta opuścił firmę. Nikt nie wie, jak to działa. Masz tylko kilka źródeł i jakąś dokumentację. Czy jest sens próbować kontrolować lub zabraniać tworzenia aplikacji ad hoc poza działem IT (z wyjątkiem drobnych rzeczy, takich jak makra Excela)?


title: Jak są powiązane serwery Apache HTTP Server i Apache Tomcat? (Jeśli w ogóle)

text: Obecnie mam serwer httpd Apache uruchomiony na produkcyjnym serwerze Ubuntu VPS. Piszę skrypty php. Jestem zainteresowany nauką Javy i zastanawiałem się, jak napisać Javę po stronie serwera do pracy na mojej obecnej konfiguracji. W jaki sposób _Apache Tomcat_ i _Apache HTTP Server_ są ze sobą powiązane? Czy Tomcat może być modułem httpd? A może są to po prostu dwa bardzo różne projekty, którymi zarządza ta sama organizacja (Apache Software Foundation)?


title: Punkt wejścia do komputerów mobilnych

text: Jestem początkującym programistą, który właśnie nauczył się kilku języków i chce eksperymentować i doskonalić swoje umiejętności. Nauczyłem się kilku języków, takich jak C, C++, Python, VC++, Java. Chcę nauczyć się programować na urządzeniach przenośnych (podręcznych). Jaki byłby najlepszy sposób na rozpoczęcie? Czy ktoś mógłby mi zasugerować, od czego zacząć? Słyszałem, że będę musiał popracować na Emulatorach, ale googlowanie nie pomogło. Wiem, że jest sporo doświadczonych programistów, którzy mogliby mi pomóc i wskazać odpowiednią ścieżkę. Jak można się domyślić, czytając moje pytanie, nie mam idealnego obrazu tego, czego chcę, więc może moje pytanie nie brzmi Bang On!! ... Proszę pomóż


title: Czy należy próbować kontrolować kolejność finalizacji?

text: Piszę klasę, która jest z grubsza analogiczna do CancellationToken, z wyjątkiem tego, że ma trzeci stan dla "nigdy nie zostanie anulowany". W tej chwili próbuję zdecydować, co zrobić, jeśli „źródłem” tokena są śmieci zbierane bez ustawiania. Wydaje się, że intuicyjnie źródło powinno przestawić skojarzony token w stan „nigdy nie anulowany”, gdy ma zostać zebrany. Może to jednak wywołać wywołania zwrotne, które były utrzymywane przy życiu tylko dzięki połączeniu z tokenem. Oznacza to, do czego te wywołania zwrotne mogą się teraz odwoływać w trakcie finalizacji. Dzwonienie do nich byłoby złe. Aby to "naprawić", napisałem tę klasę: public sealed class GCRoot { private static readonly GCRoot MainRoot = new GCRoot(); prywatny GCRoot _next; prywatny GCRoot _prev; obiekt prywatny _wartość; private GCRoot() { this._next = this._prev = this; } private GCRoot(GCRoot prev, wartość obiektu) { this._value = wartość; this._prev = poprzedni; to._następny = poprzedni._następny; _poprzedni._następny = to; _next._prev = to; } public static GCRoot Root(wartość obiektu) { return new GCRoot(MainRoot, wartość); } public void Unroot() { blokada (MainRoot) { _next._prev = _prev; _poprzedni._następny = _następny; this._next = this._prev = to; } } } zamierzam go używać w następujący sposób: Source() { ... _root = GCRoot.Root(callbacks); } void TransitionToNeverCancelled() { _root.Unlink(); ... } ~Źródło() { Przejście do Nigdy NieAnulowane(); } ale teraz jestem zakłopotany. Wydaje się, że otwiera to możliwość wycieków pamięci, bez faktycznego naprawiania wszystkich przypadków źródeł w stanie zawieszenia. Na przykład, jeśli źródło jest zamknięte w jednym z własnych wywołań zwrotnych, jest ono zakorzenione w głównym wywołaniu zwrotnym, a więc nigdy nie może zostać zebrane. Przypuszczalnie powinienem po prostu pozwolić, aby moje źródła zostały zebrane bez podglądania. Albo może nie? Czy w ogóle należy próbować kontrolować kolejność finalizacji, czy jest to gigantyczny znak ostrzegawczy?


title: Używasz Node.js z Heroku do stworzenia serwera czatu?

text: Obecnie mam na celu stworzenie czegoś w rodzaju strony z czatem. Właśnie skończyłem próbować z PHP i długim odpytywaniem, które osiągnęło limit zasobów na serwerze mojego hosta. Powiedziano mi, że powinienem używać Node.js i że może być hostowany za pomocą Heroku. Szczerze mówiąc, bardzo mało rozumiem, czym są Node.js czy Heroku. Z tego, co mi powiedziano i przeczytałem po sprawdzeniu tego, wynika, że możesz zainstalować Node.js i uruchamiać z nim aplikacje online. Tutorial tutaj: http://www.jamesward.com/2011/06/21/getting-started-with-node-js-on-the-cloud/ opisuje instalowanie i uruchamianie skryptu na heroku z Node.js. NIE mam doświadczenia z wierszem poleceń i nie byłbym w stanie zrobić nic poza kopiowaniem dokładnych poleceń w tym samouczku. Nie rozumiem też, kiedy uzyskuje dostęp do skryptu za pomocą localhost, jeśli aplikacja ma być na Heroku. Czy ktoś może wyjaśnić, czym jest Heroku i dostarczyć trochę zasobów, jak z niego korzystać? Jak mogę wspiąć się na górę, aby wiedzieć, jak z niego korzystać?


title: Czym są szkoły TDD w Londynie i Chicago?

text: Słyszałem o stylu londyńskim kontra chicagowskim (czasami nazywanym stylem Detroit) w Test Driven Development (TDD). Warsztaty Utah Extreme Programming User's Group: > _Styl interakcji_ TDD jest również nazywany _stylem pozornym_ lub _stylem londyńskim_ > od londyńskiego klubu Extreme Tuesday, gdzie stał się popularny. Zwykle jest > w kontraście do _stylu Detroit_ lub _klasycznego_ TDD, który jest bardziej oparty na stanach. Warsztat Jasona Gormana: > Warsztaty obejmują zarówno _szkołę Chicagowską_ TDD (zachowania oparte na stanie > testowanie i triangulację), jak i _szkołę londyńską_ , która skupia się bardziej na > testowaniu interakcji, prześmiewaniu i kompleksowym TDD, ze szczególnym naciskiem on > _Projektowanie oparte na odpowiedzialności_ i podejście _Powiedz, nie pytaj_ do _OO_ > ostatnio ponownie spopularyzowane przez znakomitą książkę Steve'a Freemana i Nata Pryce'a > _Growing Object Oriented Software Guided By Tests_. Post **Classic TDD czy „London School”?** Jasona Gormana był pomocny, ale jego przykłady zdezorientowały mnie, ponieważ używa dwóch różnych przykładów zamiast jednego w przypadku obu podejść. Jakie są różnice? Kiedy używasz każdego stylu?


title: Praktyczne ograniczenia rozmiaru tablicy mieszającej i słownika w c#

text: Jakie są praktyczne ograniczenia liczby elementów, które może zawierać słownik C# 4 lub tablica mieszająca, oraz całkowita liczba bajtów, które te struktury mogą zawierać. Będę pracował z dużą liczbą obiektów i chcę wiedzieć, kiedy te struktury zaczynają doświadczać problemów. Dla kontekstu będę używał systemu 64-bitowego z tonami pamięci. Ponadto będę musiał znaleźć obiekty za pomocą jakiejś formy lub „klucza”. Biorąc pod uwagę wymagania dotyczące wydajności, obiekty te będą musiały znajdować się w pamięci, a wiele z nich będzie długowiecznych. Zapraszam do sugerowania innych podejść/wzorów, chociaż muszę unikać korzystania z bibliotek innych firm lub bibliotek typu open source. Ze względu na specyfikację muszę mieć możliwość skompilowania tego przy użyciu natywnego języka C# ( _lub C++\CLI_ ).


title: Podłączanie warstwy biznesowej i repozytorium za pomocą wzorca jednostki pracy

text: Mam trochę kłopotu z dokładnym wyjaśnieniem pytania, które tutaj mam, więc miej się na baczności. jest podobny do pytania bez odpowiedzi, które można znaleźć tutaj: http://stackoverflow.com/questions/5580651/what-is-the-correct-to-use- unit-of-work-repositories-with-the-business- Laye Przepraszamy, jeśli jest to zbyt chaotyczne. Scenariusz: \+ .Net solution \+ IRepository używany do pobierania obiektów z DB \+ IUnitOfWork używany do zezwalania na transakcje w wielu repozytoriach To ma dla mnie sens i zaimplementowałem coś podobnego do tego, co działa dobrze. Teraz chcę wprowadzić warstwę logiki biznesowej i mam problem z uporządkowaniem w głowie trzech elementów (BLL, UnitOfWork i Repository). Moje zrozumienie: \- Repozytorium - pobieranie danych, manipulacja \- UnitOfWork - trwałość \- BLL - logika związana z biznesem ('rzeczywisty świat') (nie lubię tego terminu!) Rozważmy, że mamy fronton ASP.Net MVC. Myślę, że pytanie brzmi: jak wygląda BLL i jak wygląda kontroler MVC, który z niej korzysta? Dla odniesienia: zastanawiam się, czy być może moja implementacja IUnitOfWork/IRepository może być przyczyną mojego zamieszania. public class IRepository<T> { private IObjectSet<T> objSet; publiczny IRepository<T>(IUnitOfWork uow) { objSet = uow.CreateObjectSet<T>(); } public IQueryable<T> Add(T encja) { objSet.Add(entity); } //itd. itp. do usuwania, dołączania, getall } Więc czuję, że jeśli mam BLL, powinienem przekazać go IUnitOfWork, aby mógł użyć tego do utworzenia instancji IRepository, których potrzebuje. Ale w jaki sposób BLL (oddzielna biblioteka DLL od frontendu) „wie”, jaką implementację IRepository zbudować?


title: Jak przejść przez mój garb .NET?

text: Sama uczyłam się pisać kod z pomocą bardzo utalentowanego przyjaciela, który niestety jest na tyle utalentowany, że nigdy nie ma wolnego czasu. Przeczytałem i opracowałem kilka książek, ale czuję się bardziej, jakbym przechodził przez ruchy, a nie elegancko rozwiązywał problemy świata rzeczywistego. Co zrobiliście, żeby wyjść ze stadium larwalnego? Czy istnieje kurs lub produkt edukacyjny, który nie jest całkiem wszechstronną wykładem za 1500 dolarów, ale czymś więcej niż tylko suchą książką typu „wyrzuć ten przykład”?


title: Odejście od umowy z rekruterem na stałe stanowisko

text: Więc po miesiącach poszukiwań w końcu dostaję ofertę. To stanowisko kontraktowe za pośrednictwem mojego rekrutera. Potem nagle otrzymuję kolejną ofertę od jednej z GŁÓWNYCH firm inżynierów oprogramowania. Zaakceptowałem już swoje stanowisko na pierwszym miejscu, ale ta druga oferta daje mi o wiele więcej pieniędzy i przynosi korzyści. Czy mogę zostawić umowę od mojego rekrutera, aby przejść do tej innej firmy?