title: Oprogramowanie GPLv3 a projekt OpenSource BSD (3-klauzula) .. nie rozumiem

text: **Preambuła:** * Jeśli mówię „BSD” mam na myśli 3-klauzulową licencję BSD * Jeśli mówię „GPL” mam na myśli licencję GPLv3 * NIE jestem autorem projektu GPL * jestem autorem Projekt BSD **Proste zadanie:** Nie chcę używać oprogramowania innej firmy (GPL) w (lub lepiej „z”) moim projekcie open source (BSD) **Sytuacja:** * Nie zmienię żadnego kodu projektu na GPL (używając go TAK, JAK JEST) * Chcę użyć jako swego rodzaju biblioteki (wiem o LGPL, ale nie jest dostępna) * Będę używał oprogramowania GPL jako całości, NIE tylko części kodu * I wskaże użycie projektu GPL wraz z licencją, stroną domową oraz gdzie i dlaczego jest on używany w moim projekcie BSD (w pliku readme) * Nie wezmę kredytów za funkcjonalność projektu GPL * Nie wezmę kredytów za moje i "Adapter" łączący mój projekt BSD z projektem GPL * Nie chcę ponownie licencjonować projektu GPL jako BSD (!) * Nie będę pobierał żadnych opłat ani czegoś w tym rodzaju, aby uzyskać wgląd, który możesz znaleźć projekt BSD na GitHub: MOC-Framework (zobacz /Extension/FlowPlayer i /Module/Office/Video) oraz projekt GPL tutaj: Flowplayer (darmowa wersja flash) **Proste pytanie:** Czy to możliwe? **Słowa zamykające** Znalazłem kilka dyskusji, w których stwierdzono: "to jest możliwe", inni mówią "nie". Większość „nie” dotyczyła projektów komercyjnych. Większość „tak” odnosi się do: „dołącz BSD do GPLv3”, ale nie o to mi chodzi. Chcę GPLv3 razem z BSD. Po prostu nie mogę tego rozgryźć.


title: Inicjalizacja dekodowania danych/obsługa błędów konstruktora

text: Mam zestaw ładowalnych dekoderów danych dla określonego typu danych oraz strumień do odczytu zawierający dane. Teraz chcę, aby program w niezawodny sposób dobierał właściwy dekoder, więc chcę użyć algorytmu prób i błędów. Rozsądne wydaje się utworzenie dekodera i podłączenie go do strumienia za pomocą konstruktora: // kod C++ // kodeki to tablica struktur zawierających wskaźniki do funkcji ładowane z dll FileIn src("foo.wav"); for(size_t i=0; i<N_CODECS; ++i) { try { WaveIn wavein(codecs[i],src); //Zwrot danych procesowych; } catch(...) //Błąd połknięcia. Prawdopodobnie działa inny kodek. Ale czy to był kolejny błąd?? { src.reset(); } } //nie znaleziono kodeka (zdecydowanie błąd) Tutaj prawdopodobnie nie ma prawdziwego błędu przed wypróbowaniem wszystkich kodeków z listy. Powodem try-catch tutaj jest to, że nie jest możliwe uzyskanie kodu powrotu z ctora. Czy w tym przypadku lepiej byłoby użyć obiektów zombie? EDYCJA: To, co robi konstruktor, to następujące WaveIn::WaveIn(Vtable& vt, FileIn& src):m_vt(vt) { m_handle=m_vt.create(src); if(m_handle==NULL) //Zasoby przydzielone w DLL zostały w tym przypadku zwolnione. {throw "Zły plik";} } Dtor: WaveIn::~WaveIn() { m_vt.destroy(m_handle); }


title: Tworzenie atrakcyjnej aplikacji desktopowej w .NET

text: Mam zamiar stworzyć aplikację komputerową typu open source. Jestem przede wszystkim programistą .NET, z doświadczeniem w ASP.NET i SharePoint. Wcześniej tworzyłem podstawowe aplikacje Windows Forms, ale nigdy wcześniej nie programowałem przy użyciu WPF lub Silverlight. Potrzebuję atrakcyjnego, wysoce interaktywnego interfejsu użytkownika dla mojej aplikacji komputerowej. Jakie są moje możliwości technologiczne, aby to zrobić, korzystając z platformy .NET? W szczególności, czy HTML5 jest czymś, o czym powinienem pomyśleć?


title: Automatyczne obserwowanie zmian w tabelach bazy danych

text: obecnie pracuję nad projektem z następującym ustawieniem: * Istnieje zastrzeżona aplikacja, która wykonuje transakcje na bazie danych Microsoft Access (która faktycznie jest przechowywana jako plik .mdb) * API aplikacji nie ma wystarczającej funkcjonalności dla stawianych nam wymagań * Nasza aplikacja ma bezpośredni dostęp do bazy danych Projektujemy aplikację C#, która ma reagować na zdarzenia, które nie są wyzwalane przez API, więc jedynym sposobem, jaki przychodzi mi do głowy, jest w jakiś sposób obserwowanie bazy danych bezpośrednio i odpowiednio reagować na niestandardowe zdarzenia. Jednym z podejść byłoby prawdopodobnie zapytanie o wyzwolony czas bazy danych i reagowanie, ale może to prowadzić do problemów z wydajnością, gdy baza danych jest duża. Wolałbym raczej podejście, w którym sama DB powiadamia naszą aplikację o wystąpieniu określonych zdarzeń. EDYCJA: Autorska aplikacja jest narzędziem do modelowania Enterprise Architect, więc oczekiwana liczba jednoczesnych użytkowników na pewno nie przekroczy 10 użytkowników, a rozmiar bazy danych nie będzie większy niż 50 MB. Czy prawdopodobnie akceptowalnym rozwiązaniem byłoby zlecanie na zewnątrz czynności odpytywania w osobnym wątku i powiadamianie reszty aplikacji przez zdarzenia? Jeśli chodzi o liczbę użytkowników i rozmiar bazy danych, jakie obciążenie może w przybliżeniu obsłużyć baza danych MS Access? Czy istnieje jakiś dobrze znany wzorzec/podejście do tego rodzaju problemu, a jeśli nie znasz żadnego, jak byś sobie z tym poradził?


title: Czy możemy powiedzieć, że przedmioty mają atrybuty, stany i zachowania?

text: Czytałem wprowadzenie Oracle do koncepcji OOP i natknąłem się na następujący opis: > Obiekty w świecie rzeczywistym mają dwie cechy: Wszystkie mają stan i zachowanie. Psy mają stan (imię, maść, rasę, głód) i zachowanie > (szczekanie, aportowanie, merdanie ogonem). Obiekty oprogramowania są konceptualnie podobne > do obiektów świata rzeczywistego: one również składają się ze stanu i związanego z nim zachowania. Mój problem z tym fragmentem polega na tym, że opisując _stan_ jego _atrybuty_ tam też. Na przykład imię i kolor psa są jego atrybutami, a głodny lub spragniony to jego stany. Moim zdaniem więc dokładniejsze jest rozbicie cech obiektów na trzy części: **atrybuty, stany i zachowania**. Jasne, tłumacząc to na język programowania, widzę, że podział potrójny staje się podziałem podwójnym, ponieważ zarówno atrybuty, jak i stany będą przechowywane w polach/zmiennych, a zachowania w metodach/funkcjach. Ale koncepcyjnie bardziej sensowne jest rozdzielenie tych trzech rzeczy. Oto kolejny przykład: rozważ lampę. Mówienie, że zarówno rozmiar lampy, jak i to, czy jest włączona, są stanami, jest moim zdaniem przesadą. Rozmiar lampy jest atrybutem, a nie stanem, podczas gdy włączanie lub wyłączanie jest stanem. A może coś przegapiłem?


title: Czy ważniejsze jest skupienie się na domenie biznesowej lub stosie programistycznym/technologii dla rozwoju kariery?

text: po prostu zdałem sobie sprawę, że jest prawie niemożliwe, aby naprawdę nauczyć się i opanować każdego języka/technologii programowania przed wydaniem nowej wersji. więc moją pierwszą myślą było skupienie się na platformie .net, ale co z domeną biznesową? czy bardziej sensowne jest zdobywanie większej wiedzy na temat platformy, w tym przyjmowanie MCPD itp., czy też na dłuższą metę bardziej sensowne jest skupienie się na domenie biznesowej, tj. handlu internetowym i tylko rzeczach, które są z nią powiązane? Dopiero zaczynam jako programista i chciałbym wiedzieć, jaki jest dobry sposób na skierowanie się na rozwój, aby móc opanować pewien obszar rozwoju kariery. wszelkie wskazówki lub artykuł byłyby miłe ;)


title: Jak lepiej zrozumieć użytkowników jako programista

text: Pracuję w firmie, która chce być zwinna, ale analitycy biznesowi często dostarczają nam „historyjki użytkowników”, które są bardziej rozwiązaniem niż określeniem problemu. Utrudnia to podejmowanie dobrych decyzji projektowych lub w bardziej ekstremalnych przypadkach pozostawia niewiele decyzji projektowych do podjęcia. Nie pomaga programistom zrozumieć potrzeb użytkownika ani podejmować lepszych decyzji projektowych w przyszłości. Nasz właściciel produktu dokłada wszelkich starań, aby dostarczyć nam instrukcje dotyczące problemów, ale nadal czasami otrzymujemy instrukcje dotyczące rozwiązań, co prowadzi do sytuacji „małpa kodowania”. Dodatkowym wyzwaniem jest to, że niektórzy (nie wszyscy) z moich kolegów z drużyny nie widzą w tym problemu, a niektórzy z nich szczerze chcą, aby im powiedziano, co mają robić. Tak więc, gdy otrzymamy oświadczenie o rozwiązaniu w naszym zaległościach, chętnie wskoczą do niego i popracują nad nim. Uważam, że częścią mojej pracy jako inżyniera oprogramowania jest zrozumienie potrzeb użytkownika, abym mógł zbudować coś odpowiedniego dla użytkownika. Jednak w ramach naszej struktury organizacyjnej nie mam kontaktu z użytkownikiem. Jakie rzeczy mogę zrobić, aby lepiej zrozumieć naszych użytkowników?


title: Testowanie konsumentów podklasowych struktur danych

text: SplQueue PHP nie zawiera funkcji clear() ani reset() do usuwania danych ze struktury danych. Moja aplikacja wymaga tej funkcjonalności. Pozostawia to dwie opcje: A) Utwórz podklasę SplQueue. Przykład: class UserQueue extends SplQueue { public function clear() { //dequeue everything } } Problem z tym podejściem polega na tym, że nie widzę sposobu na przetestowanie _konsumentów_ tej podklasy bez polegania na funkcji clear() zdefiniowanej w podklasie . W gruncie rzeczy nie mogę wymyślić sposobu na zagłuszenie tej funkcjonalności w PHPUnit, poza poleganiem na własnych testach UserQueue. B) Zaimplementuj funkcję clear() w każdym kliencie SplQueue, który tego wymaga (większość konsumentów w mojej aplikacji), co wydaje się oczywiście okropne, ale wydaje się być jedyną testowalną metodą. Mam nadzieję, że ktoś może mi powiedzieć, że istnieje oczywisty sposób na przetestowanie opcji A, której przegapiłem. Rozważałem również zawijanie SplQueue, ale nie widzę, jak to poprawia znaczenie. Albo mógłbym załatać go małpką za pomocą runkita, ale wbito we mnie prawie alergiczną awersję do runkita.


title: dostarczanie statycznych lub dynamicznych treści internetowych na podstawie grupy użytkowników

text: Potrzebuję pomocy w zrozumieniu problemu, który mam i który z pewnością mieli również inni. Pracuję nad aplikacją internetową, która umożliwia użytkownikom łączenie się z bazą danych. Aplikacja ogólnie ma wiele stron z nawigacją na kartach, która wyświetla i umożliwia edycję _większości_ treści. Jak dotąd działa dobrze. Muszę ograniczyć dostęp do niektórych stron i wyłączyć dynamiczną (edytowalną) zawartość aplikacji na podstawie grupy (w bazie danych), do której należy Użytkownik, brzmi prosto, może tak jest. Problem polega jednak na tym, że edytowalne strony mają `wejście` typu przycisków i tekstu, które powinny zniknąć dla użytkownika z ograniczonej grupy. Ponadto niektóre opcje nawigacji na kartach nie powinny być wyświetlane dla użytkowników z grupy z ograniczeniami. W którym momencie mojej aplikacji należy obsłużyć tę logikę? Używanie javascript do tej logiki wydaje się niewłaściwym podejściem (używanie biblioteki takiej jak `underscore.js` z szablonami), ale muszę ukryć lub wyłączyć wiele opcji. Inną moją myślą było posiadanie dynamicznych i statycznych stron internetowych i serwowanie tych opartych na grupie użytkowników. Oczywiste jest, że jestem zagubiony w tym temacie i mógłbym wykorzystać pewien wgląd w to, jak należy podejść do tego problemu w sposób rozsądny, aby następny facet za mną nie powiedział ... wtf. Nie jestem pewien, czy to pytanie lepiej pasuje do stackoverflow, czy tutaj. Miejmy nadzieję, że to właściwe miejsce!


title: Jak aplikacje desktopowe komunikują się ze zdalnym serwerem bazy danych?

text: Często widywałem aplikacje desktopowe w sklepach i bankach. W jaki sposób te aplikacje desktopowe komunikują się ze zdalnym serwerem centralnym bazy danych? Pojawi się aplikacja komputerowa, która zostanie zainstalowana na wielu komputerach w wielu różnych lokalizacjach. W jaki sposób wszystkie te maszyny komunikują się z jednym centralnym zdalnym serwerem bazy danych?


title: Czy należy deklarować alternatywne typy odpowiedzi (np. JSON) w akcjach kontrolera Rails, nawet jeśli ich nie wykorzystujemy?

text: Zastanawiam się tylko, jaka jest przyjęta konwencja projektowania kontrolerów Rails. Obecnie każdy kontroler w mojej aplikacji, który napisałem, jest skonfigurowany do wysyłania odpowiedzi JSON, gdy jest to konieczne. Chodzi o to, że w mojej aplikacji używam tylko odpowiedzi HTML. Czy więc dobrym pomysłem jest ich zdefiniowanie? Na przykład: def show @pies = Pies.find(params[:id]) respond_to zrobić |format| format.html format.json { render json: @dog } # potrzebne? koniec koniec Sprawia, że kod kontrolera jest mniej czytelny (ponieważ więcej LOC), a także oznacza, że muszę głęboko przemyśleć, jaka powinna być dobra odpowiedź JSON, gdy nie jest używany HTML, co zmniejsza szybkość rozwoju mojego kontrolera. Jest to szczególnie ważne, gdy masz odpowiedzi warunkowe. Na przykład: def create @pies = Pies.nowy(parametry[:pies]) respond_to do |format| if @dog.save format.html { przekierowanie do @pies} format.json { render json: @dog, status: :created, location: @dog } else format.html { akcja renderowania: "nowy" } format.json { render json: @dog.errors, status: :unprocessable_entity } end end end Jedyny pozytyw, jaki widzę, to to, że „zabezpiecza on kontrolery na przyszłość” (tzn. jeśli potrzebuję później odpowiedzi JSON, są one już napisane). Ale jeśli piszę odpowiedzi JSON tylko _ponieważ_, to dzięki tej samej logice równie dobrze mógłbym pisać odpowiedzi XML (tj. `format.xml`) ...


title: Jak długo powinienem czekać, zanim ponownie skontaktuję się z kimś, z kim rozmawiałem w sprawie pracy związanej z tworzeniem stron internetowych/programistą?

text: Po rozmowie i wysłaniu listu z podziękowaniami, jak długo mam czekać na ponowne skontaktowanie się z nimi? Czy powinienem poczekać dwa tygodnie? Jeden tydzień?


title: Najlepsza praktyka, aby dobrze udokumentować zmiany w projekcie

text: Jakie są najlepsze praktyki i oprogramowanie używane do dokumentowania dokumentów związanych ze zmianami. także, jak wolisz dokumentować zmiany w projekcie. Powiedzmy, że masz wymóg wprowadzenia pewnych zmian w projekcie. Jak postępujesz? * Czy przed przetwarzaniem bierzesz pełną kopię zapasową. Czy ta kopia zapasowa zostanie udokumentowana. Jeśli tak, to w jaki sposób? * Jak zostanie udokumentowana zmiana? Jakiś szablon? Jak będzie to dzielone między rówieśnikami? * Jaka będzie treść procedury żądania zmiany? * Czy przechowujesz kod, zapytania itp., których dotyczy problem, w jakimś folderze/dokumencie?


title: Upuścić tabelę, jeśli już istnieje, a następnie ją odtworzyć?

text: Właśnie uczyłem się o sqlite w programowaniu na Androida z filmów New Boston Travis i natknąłem się na coś dziwnego: Mówi się, że jeśli baza danych jeszcze nie istnieje, wywoływana jest metoda onCreate(), aby ją utworzyć. na razie w porządku. Ale jeśli baza już istnieje, wywoływana jest metoda onUpgrade(), która po prostu usuwa bazę danych, a następnie ją tworzy. Jaki jest sens takiej aktualizacji? dlaczego nie zostawić samej bazy danych?


title: Co oznacza „TODO Automatycznie wygenerowany skrót metody”?

text: Używam eclipse do programowania na Androida i wszędzie widzę oświadczenie „TODO Auto-generated method stub”. Rozumiem, że te metody zostały wygenerowane automatycznie przez zaćmienie podczas tworzenia klas i innych działań wyzwalających, ale nie rozumiem potrzeby, aby wszędzie o tym wspominano. Jaka jest potrzeba powtarzania tego wszędzie?


title: Poszerzanie wiedzy na temat Pythona / Następna książka i/lub Temat do przeczytania/badania

text: Od jakiegoś czasu programuję pythona i aplikacje internetowe, ale nigdy nie zagłębiałem się zbytnio w OOP. Używam zajęć cały czas, ale jestem prawie pewien, że nie dostaję w pełni tego, co mogę uzyskać z OOP. Więc dzisiaj otworzyłem Learn Python (mark lutz), który przeczytałem jakiś czas temu, przejrzałem sekcję oop w około 5 minut i zdałem sobie sprawę, że nie zawiera ona nic nowego. Co byś zaproponował jako kolejny krok w kierunku lepszego zrozumienia OOP?


title: hginit - #ifdefs śmieszne

text: Czytałem wprowadzenie mercurial Joela Spolsky'ego, kiedy uderzyło mnie: > „A teraz robią to: każda nowa funkcja jest w dużym bloku #ifdef. Więc > mogą pracować w jednym pniu, podczas gdy klienci nigdy nie widzą nowego kodu > dopóki nie zostanie odpluskwiony, i szczerze mówiąc, to śmieszne." Dlaczego jest to tak absurdalne, czy nie jest to po prostu prostsze w obsłudze? To nic nadzwyczajnego, ale załatwia sprawę - przynajmniej jeśli jesteś już "poślubiony" z wywrotem. Jaki jest minus? Trochę nie rozumiem argumentu.


title: Blokowanie adresu IP dla usługi web-scraping

text: # Tło Rozważmy następujący scenariusz: 1. **Link.** Użytkownik podaje łącze do źle sformatowanej strony internetowej (np. _treść Creative Commons_ ). 2. **Scrape.** Serwer pobiera zawartość (web scrape), zawsze dławiony. 3. **Format.** Serwer formatuje treść (np. wykonuje przetwarzanie języka naturalnego). 4. **Return.** Serwer wysyła sformatowane wyniki z powrotem do użytkownika. # Problem Serwer hostujący źle sformatowaną witrynę ( **host** ) może zablokować serwer, który ściąga zawartość ( **scraper** ). Jeśli tak się stanie, użytkownik nie będzie już mógł korzystać z usługi w celu automatycznej zmiany formatu. Załóżmy, że warunki korzystania z usługi nie zabraniają skrobania, ani nie ma dostępnego interfejsu API do bezpośredniego pobierania danych. ## Komentarze dotyczące praw autorskich * Treść nie podlega prawu autorskiemu: jest to zawartość Creative Commons lub znajduje się już w domenie publicznej. * Treść pochodziłaby z domen umieszczonych na białej liście, które zostały zweryfikowane (np. prace rządu federalnego USA). * Co to jest warte, nie wiem nawet, czy witryny będą blokować żądania (zwłaszcza biorąc pod uwagę, jak rzadkie będą żądania i prawdopodobnie wykonam wstępne buforowanie). W tym momencie jest to głównie kwestia akademicka # Pytanie Jakie strategie byś zastosował (takie jak korzystanie z sieci wirtualnej lub usługi w chmurze), aby adres IP **zgarniacza** mógł się łatwo (potencjalnie dynamicznie) zmienić, aby uniknąć zablokowania przez **gospodarz**?


title: Wywołaj konstruktora za pomocą obiektu arguments w javascript?

text: Czy można wywołać konstruktora za pomocą obiektu arguments? var MojaKlasa = function(a, b){ this.a = a; to.b = b; }; var myClassInstance = function(){ //Ten wiersz nie zadziała, ale o to proszę. Czy istnieje sposób poza eval? zwróć nową MyClass.apply(?, argumenty); }('wartość A', 'wartość B');


title: Akceptowanie zakresu liczbowego w wywołaniu funkcji

text: Spotkałem się na dwa sposoby: void foo(int od, int do); /* 'od' włącznie, 'do' wyłączne */ void foo(int startIndex, int rangelength); Czy historycznie jeden styl był preferowany nad drugim? Jeśli tak, czy była to tylko kwestia konwencji, czy też z jakiegoś głębszego, ukrytego powodu? Obecnie programuję w Javie i zauważyłem, że klasa Arrays używa poprzedniego stylu. Wyłączność argumentu „do” wydała mi się nieco nieintuicyjna, co skłoniło mnie do zadania tego pytania.


title: Dlaczego git używa skrótów zamiast numerów wersji?

text: Zawsze zastanawiałem się, dlaczego git woli hasze niż numery wersji. Numery wersji są znacznie jaśniejsze i łatwiejsze do odniesienia (moim zdaniem): Jest różnica między powiedzeniem komuś, aby rzucił okiem na wersję 1200 lub zatwierdził 92ba93e! (Daję tylko jeden przykład). Czy jest więc jakiś powód tego projektu?


title: Jak graficznie przedstawić dni i czas dla projektu, który wykonałem

text: Jak reprezentować dni i godziny różnych zadań (projektowanie, rozwój, testowanie) projektu oprogramowania w sposób graficzny. Próbowałem użyć do tego wykresu Gantta, ale nie przedstawia on godzin, a tylko dni konkretnego zadania w projekcie. Czy jest jakiś sposób, aby to zrobić w zarządzaniu oprogramowaniem, potrzebuję tego, aby pokazać to klientowi dla projektu, który zrobiłem. Oto niektóre z wartości, których zamierzam użyć. ● Czas badań ○ Dni 10 - 8 godzin * 10 = 80 ● Czas projektowania ○ Dni 10 -8 godzin * 10 = 80 ● Czas opracowywania ○ Dni 15 - 8 godzin razy 15 = 120 ● Czas testowania ○ Dni 3 - 8 godzin razy 3 = 24


title: Jak poradzić sobie z blokadą programisty?

text: > **Możliwy duplikat:** > Radzenie sobie z frustracją, gdy coś nie działa Coś, że koduję coś trudnego i po godzinach walki mój umysł staje się pusty i nie wiem już, co robię. Nie jestem pewien, czy zdarza się to wielu programistom. Czy to ci się przytrafia Jak sobie z tym radzisz?


title: Różnica między Zend Framework a Zend Server?

text: Tytuł mówi wszystko o moim pytaniu, ale pozwala mi to wyjaśnić: bardzo dobrze wiem o ZEND Framework, ale co z serwerem Zend? Czy działa jak serwer Apache czy cokolwiek innego? Jaka jest główna różnica między tymi dwoma? Wiem również, że Zend Server jest produktem firmy Zend Company, ale gdzie jest używany?


title: Jak prawidłowo zagnieżdżać zasoby w modelu REST?

text: Projektuję REST API usługi i utknąłem na właściwej drodze do zagnieżdżania zasobów. Zasoby: partnerzy, bilety, ustawienia Powiązania między zasobami: * partner ma wiele zgłoszeń, * partner ma zestaw ustawień, Logika biznesowa: * możesz wylistować wszystkich partnerów jako użytkownik anonimowy, * możesz dodać nowy bilet do określonego partnera jako użytkownik anonimowy, * tylko partner może wystawiać swoje zgłoszenia, * tylko partner może modyfikować swoje zgłoszenia, * tylko partner może wystawiać ustawienia, * tylko partner może zmieniać ustawienia, Co zrobiłem do tej pory: **Zasoby partnera** GET /partnerzy - lista wszystkich partnerów GET /partners/:id - pokaż szczegóły partnera określonego parametrem :id GET /partners/:partner_id/tickets - lista biletów partnera GET /partners/:partner_id/tickets/:id - szczegóły biletu wskazanego partnera POST /partners /:partner_id/tickets - zapisuje nowy bilet PUT /partners/:partner_id/tickets/:id - aktualizuje bilet określony parametrem :id GET /partners/:partner_id/settings - lista ustawień partnera PUT /partners/:partner_id/settings - zaktualizuj ustawienia partnera **Probl em/Question** Czy byłby to właściwy sposób na dzielenie zagnieżdżonych zasobów (biletów, ustawień) na oddzielne zasoby czy powielanie ich jako oddzielnych zasobów? Np. GET /tickets/:id POST /tickets PUT /tickets/:id GET /settings PUT /settings


title: Czy nadal potrzebne są konkretne typy?

text: Pewnego dnia przyszło mi do głowy, że konkretne typy są nadal potrzebne lub spuścizna, która nas powstrzymuje. Mam na myśli to: czy naprawdę potrzebujemy short, int, long, bigint itp. Rozumiem rozumowanie, zmienne/obiekty są przechowywane w pamięci, pamięć musi być alokowana i dlatego musimy wiedzieć, jak duża może być zmienna. Ale tak naprawdę, czy nowoczesny język programowania nie powinien być w stanie obsłużyć „typów adaptacyjnych”, tj. jeśli coś jest przydzielone tylko w zakresie shortint, używa mniej bajtów, a jeśli coś nagle zostanie przydzielona bardzo duża liczba, zostanie przydzielona pamięć odpowiednio dla tego konkretnego przypadku. Pływające, rzeczywiste i podwójne są nieco trudniejsze, ponieważ typ zależy od wymaganej precyzji. Ciągi powinny jednak być w stanie zajmować mniej pamięci w wielu przypadkach (w .Net), gdzie używa się głównie ascii, ale ciągi ciągów zawsze zajmują dwukrotnie więcej pamięci z powodu kodowania Unicode. Jednym z argumentów przemawiających za konkretnymi typami może być to, że jest to część specyfikacji, tj. na przykład zmienna nie powinna być większa niż określona wartość, więc ustawiamy ją na shortint. Ale dlaczego nie mieć zamiast tego ograniczeń typu? O wiele bardziej elastyczna i wydajna byłaby możliwość ustawiania dopuszczalnych zakresów i wartości zmiennych (i właściwości). Zdaję sobie sprawę z ogromnego problemu z przebudową architektury typów, ponieważ jest ona tak ściśle zintegrowana z podstawowym sprzętem, a rzeczy takie jak serializacja mogą być naprawdę trudne. Ale z punktu widzenia programowania powinno być świetne nie?


title: Potrzebujesz pomocy w podjęciu decyzji, czy Joomla! doświadczenie jako dobry wskaźnik zatrudnienia konkretnego potencjalnego pracownika

text: Moja firma poszukuje programisty PHP. Niektóre wymagania dotyczące pracy obejmują: 1. zrozumienie wzorców projektowych, w szczególności MVC. 2. trochę wiedzy o nowych funkcjach PHP 5.3. 3. doświadczenie w pracy z frameworkiem PHP (nie ma znaczenia na którym). Przeprowadziłem dzisiaj wywiad z człowiekiem, którego głównym doświadczeniem zawodowym była praca z Joomla!. Jako pracownik będzie musiał pracować nad istniejącymi i nowymi aplikacjami internetowymi wykorzystującymi Zend Framework, CakePHP i/lub CodeIgniter. Moim zdaniem nie powinniśmy odrzucać zatrudniania programisty tylko dlatego, że nie korzystał z tych samych technologii, których będzie używał w pracy. Tak więc, chciałbym wiedzieć, jakiego rodzaju doświadczenie w kodowaniu pracuje z Joomla! może zapewnić. Nigdy nie zadawałem sobie trudu, aby spojrzeć na Joomla! pakiet, więc mam nadzieję oprzeć się na wiedzy moich rówieśników. * Czy rozważyłbyś Joomla! zawierać profesjonalną bazę kodów? * Czy pakiet jest dobrze zorganizowany i/lub ogólnie rzecz biorąc, czy też bardziej przypomina WordPressa, w którym logika i prezentacja są pomieszane? * Czy podczas pracy z Joomla! programista jest zachęcany do stosowania najlepszych praktyk? * Twoim zdaniem miałbym doświadczenie w pracy z Joomla! zdobędziesz umiejętności potrzebne do szybkiego nauczenia się Zend lub CakePHP, czy też czeka Cię stroma krzywa uczenia się przed deweloperem? Nie mówię, że Joomla! to zła technologia, a nawet to, że jest niżej na totemie w porównaniu do wspomnianych przeze mnie frameworków. Może to jest niesamowite, nie wiem. Po prostu nie mam pojęcia!


title: Czy istnieje pewna liczba wierszy kodu, których należy przestrzegać /maintain?

text: Tworzę system oprogramowania (Patient Administration System) i zauważyłem, że ma już 451 linijek kodu (w jednej przestrzeni nazw). Czy to źle? A może liczba linii kodu nie ma znaczenia, o ile metody i komentarze są przydatne i robią to, do czego są przeznaczone? Lub jest wiele wierszy kodu do utrzymania, tak jak przestrzeń nazw powinna mieć tylko 500 wierszy kodu, coś w tym rodzaju


title: Użyj aparatu do analizy jednorodności

text: Pracujemy z niektórymi ekranami, które w procesie produkcyjnym zmieniają swój stan ze stanu przezroczystego na stan kolorowy. Ten kolorowy stan jest osiągany w celu zablokowania przepuszczalności światła. W tym procesie, w którym ekran jest przyciemniany, odcień ten musi być nakładany jednorodnie. To bardzo ważny punkt procesu. Aby sprawdzić tę jednorodność, poproszono mnie o stworzenie aplikacji mobilnej (Android), w której za pomocą aparatu mogłem sprawdzić, czy odcień jest nakładany równomiernie. Jestem programistą androidowym więc wiedza o androidzie nie stanowi problemu. Ale nigdy nie pracowałem z obrazami w ten sposób, więc ignoruję, czy coś takiego można zrobić. Moim pierwszym pomysłem jest stworzenie aplikacji, która za pomocą aparatu robi zdjęcia, to najłatwiejsza część. Następnie powinienem przetworzyć obraz w taki sposób, aby móc zidentyfikować niejednorodne części, może przekonwertować obraz do skali szarości i sprawdzić, czy tony są wyraźniejsze lub ciemniejsze. Nie pytam, jak mam to zaprogramować, ponieważ jest to tylko pierwszy pomysł, jak mogę to osiągnąć, proszę o pomoc, aby wiedzieć, jak mogę zrobić tego rodzaju przetwarzanie obrazu, które może wykryć jednorodność.


title: czy nagłówki żądania F12 powinny pokazywać identyfikator sesji jako plik cookie?

text: Staram się edukować na temat potencjalnych ataków internetowych. Właśnie znalazłem witrynę (która zmieni nazwę na anonimowy), gdzie pokazuje mi, co wygląda jak identyfikator sesji php w sekcji plików cookie w nagłówku żądania. Moją natychmiastową reakcją było „wow, to źle”… ale wtedy nie mogłem wymyślić scenariusza, w jaki sposób ktoś mógłby użyć tego do zepsucia strony. Ale może to dlatego, że jestem nowicjuszem w tym temacie. Ale zakładając, że mam identyfikator sesji innej osoby... musiałbym zhakować witrynę z identyfikatorem sesji, zanim wygaśnie, prawda? Więc moje pytanie brzmi, jak realne jest to zagrożenie? I czy jest to powszechne, gdy twórcy stron internetowych przechowują identyfikatory sesji w plikach cookie, dzięki czemu są widoczne w F12? Przepraszamy za pytania naprawcze. Przeczytałem artykuł: Dlaczego popularne witryny internetowe przechowują w plikach cookie bardzo skomplikowane dane dotyczące sesji — i co to wszystko oznacza? Czasami rozumiem, że chcesz użyć plików cookie, aby przenieść dane z serwera do klienta... ale myślę, że potrzebuję więcej wyjaśnień, jak poważne jest to naruszenie bezpieczeństwa.


title: Jak debugować bez IDE?

text: Za każdym razem, gdy szukam IDE (obecnie majsterkuję przy Go), znajduję wątek pełen ludzi polecających Vi, Emacs, Notepad++ itp. Nigdy nie robiłem żadnego rozwoju poza IDE; Chyba zostałem zepsuty. Jak debugować bez IDE? Czy ograniczasz się tylko do logowania?


title: Jak napisać dobry opis sklepu z aplikacjami?

text: > **Możliwe zduplikowanie:** > Jak poprawić jakość opisów aplikacji Właśnie skończyłem pisać aplikację na iPhone'a i wypełniłem wszystkie elementy listy kontrolnej przesyłania aplikacji do sklepu z aplikacjami oprócz opisu. Czy ktoś ma radę, jak napisać naprawdę chwytliwy opis, który może zainteresować użytkowników? * Jakie rzeczy należy uwzględnić w opisie? * Czego _nie_ uwzględnić? Naprawdę nie mam z tym żadnego doświadczenia, ponieważ jest to pierwsza aplikacja, którą wydam w sklepie.


title: Dlaczego dostawcy oprogramowania nie wykorzystują istniejących narzędzi do planowania do automatycznych aktualizacji?

text: Często zdarza się, że dostawcy oprogramowania oferują automatyczne aktualizacje. Badanie i instalację tych aktualizacji można wykonać * podczas uruchamiania aplikacji * za pośrednictwem usługi lub procesu w tle (co często można zobaczyć w zasobniku ikon) * Czasami podczas otwierania sesji lub uruchamiania Problem, który napotykam dzisiaj, to że system aktualizacji Google, Sun Java, Adobe i inne… wydaje się marnować zasoby mojego komputera, aby stale obserwować aktualizacje. Jeden korzysta z usługi, drugi z uruchomionego procesu... Dlaczego ci dostawcy nie korzystają z narzędzi do planowania oferowanych przez system operacyjny, takich jak **Harmonogram zadań**?


title: Jak mam pobierać opłaty za programowanie rzeczy, których naprawienie zajmuje dwie minuty?

text: Naprawdę jestem z tym zdezorientowany. Wierzę, że im więcej zdobywam doświadczenia, tym bardziej staję się ekspertem w znajdowaniu błędów i ich szybkim naprawianiu. Teraz mój szef dostał stronę od programisty, który bardzo źle koduje. Teraz wysyła listę problemów do naprawienia. Załóżmy, że jest to problem z arkuszem stylów, a stary nie wie, jak go naprawić, ale dzięki mojemu doświadczeniu od razu wiem, na czym polega problem i mogę go naprawić w dwie minuty i wiele podobnych problemów. Ale po naprawieniu wszystkiego zdaję sobie sprawę, że naprawiłem wszystkie problemy w 15 minut, których inny facet nie był w stanie rozwiązać. Dostaję 25$ za godzinę, więc bardzo źle się czuję, pobierając 6$ za tę listę rzeczy, których nauczenie się wymagało wielu lat doświadczenia. Czy mogę pobierać 6 $, czy powinien istnieć jakiś sposób na doładowanie rzeczy?


title: Kiedy zadanie można wykonać za pomocą JavaScript lub CSS, czy lepiej użyć CSS?

text: Zawsze sprzeciwiam się JavaScriptowi, używając CSS tak często, jak to tylko możliwe. tj. tworzę zakładki i przyciski najazdu za pomocą CSS, a nie JavaScript. Widziałem kilka rozwiązań — w szczególności web-framework Wt — które wspierają JavaScript; ale wdzięcznie wróć do CSS, jeśli przeglądarka nie obsługuje/js-wyłączone. Wiem, że CSS i JavaScript mają różne cele, jednak nakładają się na siebie; co jest podstawą tego pytania. **Czy powinienem nadal używać CSS w jak największym stopniu zamiast JavaScript?**


title: Jak sprawić, by modele robiły coś więcej niż tylko ustawianie i pobieranie danych oraz walidacja

text: Zadaję to pytanie, ponieważ po opracowaniu kilku małych niestandardowych rozwiązań cms we frameworku, wpadłem na pomysł, że Modele można łatwo zastąpić ORM-ami, które ułatwiają zadanie walidacji, pobierania i ustawiania danych, ponieważ to wszystko, czego są potrzebne do . Niedawno otrzymałem zamówienie na kompleksowe, niestandardowe rozwiązanie do zarządzania klientami. Po zbadaniu trochę, jak to zrobić, znalazłem to: http://blog.astrumfutura.com/2008/12/the-m-in-mvc-why-models-are-misunderstood-and-unappreciated/ Now Pomysł nie jest nowy, ponieważ czytałem o podejściu MVC, modele obsługują logikę biznesową. Ale trudno mi zaplanować podejście, w którym Modele obsługują logikę biznesową i są klasami, które same w sobie są kompletne ze względu na rodzaj pracy, do której się przyzwyczaiłem. Pomóż mi tutaj, wyjaśniając pomysł i wskazując kilka przykładów, artykułów itp.


title: Początkowe zobowiązanie projektu do kontroli źródła

text: Prawdopodobnie przesadzam z tym i może to nie mieć znaczenia w zakresie rzeczy, ale zastanawiam się, jak ludzie budują początkowe wersje swoich projektów w kontroli źródła? Mówię o tym, kiedy zaczynasz od samego pomysłu, więc nie rozwidlasz istniejącego projektu ani nic. * Kiedy robisz swoje zmiany, zanim masz oficjalną lub nawet nieoficjalną wersję? * W którym momencie zaczynasz rozgałęziać się na funkcje, czy robisz to od razu? Jestem tak przyzwyczajony do pracy z istniejącymi bazami kodu, że nie jestem pewien, czy istnieje „najlepszy” sposób na zbudowanie historii projektu.


title: Potrzebuję porady przy projektowaniu podsystemu?

text: Robię to w C++, nie mogę w całości zamieścić, bo to gigantyczne, podsumuję to prostym przykładem. Mam: klasa B; class A { //Członkowie i metody... void DoSomething(B* owningSystem); }; class B { //Członkowie i metody A memberA; } Problem polega na tym, że A musi wiedzieć o B, aby użyć metody DoSomething, a A jest faktycznie członkiem B. Mam tablicę B, których liczba jest określana w czasie wykonywania. Może to brzmieć jak przesada, ale potrzebuję ekstremalna optymalizacja w tym konkretnym projekcie i zastanawiałem się - czy lepiej przekazać B*owningSystem, czy po prostu przechowywać wskaźnik każdego B wewnątrz jego elementu A? Nie sądzę, aby DoSomething kiedykolwiek było wbudowane, ponieważ ich liczba i położenie wskaźnika są określane w czasie wykonywania, ale mogę wybrać przechowywanie wskaźnika zamiast przekazywania go w funkcji. Muszę w tym momencie zminimalizować obciążenie w tym momencie, jest to krytyczne. Jestem otwarty na wszelkie sugestie, proszę


title: budowanie portfolio, praca dla zamkniętego źródła vs open-source?

text: Obecnie ukończyłem moje pierwsze studia na wyższym poziomie, dostałem swój pierwszy pełnoetatowy występ jako programista aplikacji internetowych i absolutnie to uwielbiam. Moje pytanie brzmi, że szukając pracy natknąłem się na wiele stanowisk, które wymagają pewnego poziomu doświadczenia i przykładów kodu. Wiele prac, które wykonuję, jest zarówno chronionych loginem, jak i zamkniętym kodem źródłowym. Jak ktoś, kto dopiero zaczyna i musi budować CV, przygotowuje się do następnej pracy. (bez względu na to, jak bardzo kocham swoją obecną pracę, czuję, że jest tylko odpowiedzialna za ciągłe przygotowania)


title: Budowanie DBAL od podstaw

text: Rozważam zbudowanie **DBAL** od podstaw z PHP do wykorzystania w moich projektach, a także do nauki w trakcie tego procesu. Zauważyłem na _SO_ i innych renomowanych forach, że ilekroć jest to wspomniane, większość użytkowników zaleca używanie ustalonej bazy danych, takiej jak Doctrine, i nie " _wynajdywanie koła na nowo_ ". Dlaczego przy tym konkretnym utworze ludzie ciągle polecają korzystanie z gotowego? Czy tworzenie i budowanie na bieżąco jest takie trudne/problematyczne? Jeśli tak, jakie są główne punkty problemu? Zakładam, że bezpieczeństwo to jedno. W odniesieniu do ustalonych DBAL, takich jak Doctrine, pobrałem i sprawdziłem zawartość i zauważyłem, że jest dość duża, dla tych, którzy mają z tym doświadczenie, czy to wszystko jest naprawdę konieczne? Czy korzystasz ze wszystkich dostępnych funkcji (i wiesz, co dzieje się w backendzie)? Z tego, co sprawdziłem, ciężko jest mi zobaczyć, jak wykorzystałbym ponad 40% biblioteki, a przy tym mam wrażenie, że nie jestem do końca pewien, co dzieje się w backendzie z tak dużą biblioteką. Może to powszechne uczucie i przezwyciężasz to?


title: Architektura oprogramowania pokerowego

text: Do tej pory mam kilka zajęć. * **Hand** przechowuje informacje takie jak SB, BB, ante, kolekcja Players * **HandState** dziedziczy po klasie Hand. ma członków takich jak faza {POSTING BLINDS, PREFLOP, FLOP, TURN, RIVER, SHOWDOWN }, pula. Każde działanie w rozdaniu pokerowym traktuję jako stan ręki. Gracze wpłacają ante (jeśli są), małą ciemną i dużą ciemną wpłacają ciemną, pierwszy gracz, który zadziałał (UTG) sprawdza ciemną, drugi gracz (UTG+1) podbija, itd... * Członkowie **Graczy**: nazwa, pozycja, lista dotychczasowych akcji, stos, itd... * Członkowie **Akcji**: wpisz {FOLD,CALL, RAISE, RERAISE}, kwota Program otrzymuje jako dane wejściowe blindy, graczy, którego gracza wykonać . Ponieważ dane wejściowe, które otrzymuję, to ciąg znaków (jest to program konsoli), muszę zbudować root handState. Po tym, jak mam root handState, mogę zbudować gameTree, w którym każdy węzeł jest handState. np.: stosy = "1000,2000,2300,1400,230"; akcje = "200"; graczToAkt = 2; BB = 400; SB = 200; function makeRoot() { stacks = makeArray(stacks) for(i=0; i < stacks.size; i++) { player = new Player; player.position = "UTG" if (i > 0) player.position += i; if (i == stacks.size-2) { player.position = "SB"; gracz.bet(SB); } if (i == stacks.size-1) { player.position = "BB"; gracz.bet(BB); } } } Mój problem polegający na tym, że Player i HandState nie mają połączenia. Co jeśli gracz nie ma wystarczającej ilości żetonów, aby zapłacić BigBlind (230<400)? SB ma wystarczająco dużo żetonów, ale jeśli postawi 200, pula HandState się o tym nie dowie? Czy powinienem śledzić w obu klasach? //HandState player.bet(200); to.pot += 200; //Zakład gracza(kwota) { this.stack -= ilość; this.actions.push(nowa akcja(kwota, "BET")); } Mam nadzieję, że znajdzie się jakiś doświadczony programista z pewną wiedzą o pokerze, który opowie jakąś opinię, skrytykuje moje podejście.


title: Dlaczego tworzenie podklas TraversableOnce nie jest zalecane?

text: Przeczytaj http://www.scala-lang.org/api/2.11.1/index.html#scala.collection.TraversableOnce: > Nie zaleca się bezpośredniego tworzenia podklas TraversableOnce - zamiast tego rozważ > zadeklarowanie iteratora za pomocą metody next i hasNext , tworząc Iterator > za pomocą jednej z metod obiektu Iterator lub deklarując podklasę > Traversable. Dlaczego nie zaleca się tworzenia podklas `TraversableOnce`?


title: Czy powinienem użyć czeku czy czeku?

text: Projektuję bibliotekę, która wiąże się z elementami html na stronie. W tym konkretnym przypadku input[type='checkbox'] zostanie sprawdzony, jeśli właściwość likeItem zwróci true i niezaznaczona, jeśli właściwość likeItem zwróci false. Jaka jest najlepsza praktyka dotycząca nazewnictwa właściwości? input { check: likeItem } lub input { check: likeItem } Dotyczy to również innych rzeczy, takich jak włączanie/włączanie, wyłączanie/wyłączanie itp.


title: Jak zapobiegasz piractwu swojego oprogramowania?

text: Czy nadal warto chronić nasze oprogramowanie przed piractwem? Czy istnieją dość skuteczne sposoby zapobiegania lub przynajmniej utrudniania piractwa?


title: Jak najlepiej zostać profesjonalistą w PHP i tworzeniu stron internetowych?

text: Chciałbym zostać profesjonalistą w php, nauczyłem się prawie wszystkiego o składni i pojęciach języka oraz mam dobrą znajomość C i C++, co ułatwiło mi zapoznanie się z PHP. (Oczywiście nauczyłem się też MySql.) Ale nie mam ochoty budować nawet trochę dobrej strony internetowej! Wygląda na to, że PHP polega na znajomości wielu funkcji i używaniu ich, podczas gdy w rzeczywistości nie sądzę, żeby tak było, prawda? Jak mogę zostać profesjonalistą w PHP i tworzeniu stron internetowych? Zrobiłbym wszystko i poświęciłbym na to tyle czasu, ile potrzeba. **EDYTUJ** Mam również bardzo dobrą znajomość HTML i normalną znajomość CSS i JavaScript. Przepraszam, że o tym nie wspomniałem, po prostu myślałem, że zostało to uwzględnione w sposób dorozumiany.


title: java.util.HashMap blokada rzeczywistego obiektu HashMap porównana z blokadą obiektu, który zawiera HashMap

text: Poniższy dokument Javadoc jest fragmentem dokumentacji HashMap. Dlaczego autorzy mieliby kłaść nacisk na nałożenie blokady na obiekt, który zawiera HashMap? Zablokowanie rzeczywistego obiektu HashMap ma sens. > **Zauważ, że ta implementacja nie jest zsynchronizowana.** Jeśli wiele wątków > uzyskuje dostęp do mapy skrótów jednocześnie i przynajmniej jeden z wątków modyfikuje mapę > strukturalnie, _musi_ być ona zsynchronizowana zewnętrznie. (Modyfikacja strukturalna > to dowolna operacja, która dodaje lub usuwa jedno lub więcej mapowań; > sama zmiana wartości powiązanej z kluczem, który już zawiera > nie jest modyfikacją strukturalną). naturalnie zawiera mapę. Jeśli nie istnieje > taki obiekt, mapę należy „zawinąć” przy użyciu metody > Collections.synchronizedMap...


title: Czy rozmiar danych w TCP/UDP ma wpływ na czas transmisji?

text: Omawiając rozwój komponentu sieciowego dla naszego silnika gry, członek naszego zespołu zasugerował, że przesyłanie 500 bajtów lub 1k danych za pomocą UDP nie ma żadnego znaczenia z punktu widzenia wydajności systemu (czasu potrzebnego do przesłania danych). Właściwie powiedział, że dopóki nie przekroczysz rozmiaru MTU, rozmiar przesyłanych danych tak naprawdę nie ma znaczenia, ponieważ wszystko jest takie samo. Czy to prawda w przypadku UDP? co z TCP? To brzmi dla mnie po prostu źle, ale nie jestem ekspertem od sieci. *Czytałem o architekturach sieciowych gier innych firm i wygląda na to, że wszystkie starają się ograniczyć przesyłane dane do minimum, przez co twierdzenia mojego kolegi wydają się jeszcze bardziej nieuzasadnione.


title: Czy to zapach pracy?

text: Poszedłem na rozmowę kwalifikacyjną i z tego, co udało mi się zebrać od ankietera: * Rozwój odbywa się zgodnie ze specyfikacją „szkieletową”, w której użytkownicy otrzymują ciągłe informacje zwrotne i mogą zmieniać zdanie do woli * Mogę oczekiwać, że „skonfiguruję nowe komputery” i „konfigurować serwery” * Od czasu do czasu będę musiał wykonywać niepłatne nadgodziny - szczególnie pod koniec projektu * Używają bezpiecznego źródła wizualnego * Firma ostatnio trochę się zmieniła (imię i nazwisko, kierownictwo) * Będę robił dodatkowe godziny pracy dziennie w porównaniu z moim obecnym stanowiskiem i braniem 1 dni urlopu mniej * Chcą, abym wypełnił test, który jest pewnym rozwinięciem ich systemu wewnętrznego (może chcą, aby wykonywana była bezpłatna praca?) Teraz rozumiem wszystkie te punkty przez sami mogą nie znaczyć wiele, a ja chętnie wykonam kilka z nich w ramach mojej pracy. Ale wszystko razem sprawia, że się zastanawiam. Jeszcze nie poznałem szczegółów wynagrodzenia, ale myślę, że musiałby być trochę wyższy, abym rozważył skakanie statku. Jak brzmi dla ciebie ta pozycja? W zależności od odpowiedzi kusi mnie tutaj link do firmy - więc daję im uczciwą szansę i mogą się bronić. Możliwe, że są jakieś nieporozumienia z powodu krót- kiego, godzinnego wywiadu.


title: Czy poprzedzasz nazwy zmiennych skrótami typów zmiennych? (notacja węgierska)

text: W mojej obecnej pracy nie ma wytycznych dotyczących kodowania. Każdy koduje tak, jak chce. Co jest w porządku, ponieważ firma jest mała. Jednak ostatnio pewien nowy facet zaproponował, aby zawsze używać notacji węgierskiej. Do tej pory niektórzy z nas używali jakiejś notacji węgierskiej, niektórzy nie. Wiesz, to firma inżynierska, więc style kodowania tak naprawdę nie mają znaczenia, o ile algorytmy są prawidłowe. Osobiście uważam, że te małe skróty typu są trochę zbędne. Dobrze przemyślana nazwa zwykle przekazuje ten sam przekaz. (Ponadto większość naszego kodu musi działać na niektórych dziwacznych DSP, gdzie pojęcia takie jak `bool` czy `float` i tak nie istnieją). Więc co myślisz o notacji węgierskiej? Czy używasz tego? Czemu?


title: Jak zapewnić wszystkim klientom najnowszą wersję aplikacji webowej wdrożoną w intranecie?

text: Jak zaktualizować aplikację webową wdrożoną w intranecie? Istnieje aplikacja Java Spring, która zostanie wdrożona w intranecie wielu klientów. W przypadku dużej aktualizacji, co powinien zrobić programista, aby zapewnić wszystkim klientom najnowszą wersję swojego oprogramowania? Istnieje możliwość, że w aplikacji zaimplementowany jest moduł aktualizacji, który automatycznie odpytuje centralne repozytorium WWW o aktualizacje. Ta opcja nie działa, jeśli serwer, na którym jest zainstalowana aplikacja, nie ma połączenia z Internetem. Inną możliwością, która przychodzi do głowy, jest ręczne wysłanie pliku .war do personelu IT wszystkich klientów, aby mogli zainstalować najnowszą wersję. Jak radzić sobie z aktualizacjami w tej sytuacji?


title: Generowanie zmiennej losowej Nakagami

text: Zakładając, że jedynym dostępnym narzędziem do generowania liczb losowych jest generowanie zmiennej o rozkładzie jednostajnym `u` na U(0,1). Chcę z niego wygenerować zmienną losową Nakagami. Wiem, że mógłbym po prostu podłączyć `u` do odwrotnego CDF dystrybucji Nakagami, ale niestety odwrotność CDF nie jest łatwa do obliczenia.


title: ArrayList w Javie

text: Wdrażałem program do usuwania duplikatów z dwuznakowej tablicy. Wdrożyłem te 2 rozwiązania, Rozwiązanie 1 działało dobrze, ale Rozwiązanie 2 dało mi UnSupportedoperationException. Zastanawiam się, dlaczego tak jest? Poniżej podano dwa rozwiązania; public void getDiffernce(Character[] inp1, Character[] inp2){ // Rozwiązanie 1: // ****************************** ************************************************** **** List<Znak> list1 = new ArrayList<Znak>(Arrays.asList(inp1)); List<znak> list2 = new ArrayList<znak>(Arrays.asList(inp2)); lista1.usuńWszystko(lista2); System.out.println(lista1); System.out.println("********************************************* ****************************************"); // Rozwiązanie 2: Znak a[] = {'f', 'x', 'l', 'b', 'y'}; Znak b[] = {'x', 'b', 'd'}; List<znak> al1 = new ArrayList<znak>(); List<znak> al2 = new ArrayList<znak>(); al1 = (Arrays.asList(a)); System.out.println(al1); al2 = (Arrays.asList(b)); System.out.println(al2); al1.removeAll(al2); // zachowajWszystko(al2); System.out.println(al1); }


title: Czego używały programy sieciowe do komunikacji przed wynalezieniem gniazd (około 1983?)

text: Gniazda zostały wynalezione w Berkeley około 1983 roku, ale jak wcześniej działały sieciowe programy komputerowe? W dzisiejszych czasach prawie wszystko korzysta z gniazd, więc trudno mi sobie wyobrazić, jak inaczej programy mogłyby się komunikować, a Google niczego nie znalazł.


title: Czy warunkowy typ zwrotu jest kiedykolwiek dobrym pomysłem?

text: Mam więc metodę, która wygląda mniej więcej tak: -(BOOL)isSingleValueRecord I inna metoda taka: -(Type)typeOfSingleValueRecord I przyszło mi do głowy, że mógłbym je połączyć w coś takiego: -(id)isSingleValueRecord I mieć implementację być mniej więcej tak: -(id)isSingleValueRecord { //Jeśli jest to pojedyncza wartość if(self.recordValue = 0) { //Zrób kilka rzeczy, aby określić typ, a następnie zwróć return typeOfSingleValueRecord; } //Jeśli nie jest to pojedyncza wartość else { //Zwróć "NIE" return [NSNumber numberWithBool:NO]; } } Tak więc połączenie tych dwóch metod czyni je bardziej wydajnymi, ale zmniejsza czytelność. W głębi duszy czuję, że powinienem wybrać wersję z dwiema metodami, ale czy to naprawdę słuszne? Czy jest jakiś przypadek, że powinienem wybrać wersję kombinowaną?


title: Czy TDD naprawdę sprawdza się w przypadku złożonych projektów?

text: Zadaję to pytanie w związku z problemami, których doświadczyłem podczas projektów TDD. Podczas tworzenia testów jednostkowych zauważyłem następujące wyzwania. * **Generowanie i utrzymywanie próbnych danych** Utrzymywanie dużych próbnych danych jest trudne i nierealne. Jest to jeszcze trudniejsze, gdy zmienia się struktura bazy danych. * **Testowanie GUI** Nawet z MVVM i możliwością testowania GUI, odtworzenie scenariusza GUI zajmuje dużo kodu. * **Testowanie biznesu** Mam doświadczenie, że TDD działa dobrze, jeśli ograniczysz się do prostej logiki biznesowej. Jednak skomplikowana logika biznesowa jest trudna do przetestowania, ponieważ liczba kombinacji testów (przestrzeni testowej) jest bardzo duża. * **Sprzeczność w wymaganiach** W rzeczywistości trudno jest uchwycić wszystkie wymagania podczas analizy i projektowania. Wielokrotnie wymagania dotyczące jednej notatki prowadzą do sprzeczności, ponieważ projekt jest złożony. Sprzeczność znajduje się na późnym etapie realizacji. TDD wymaga, aby wymagania były w 100% poprawne. W takich przypadkach można by oczekiwać, że podczas tworzenia testów zostaną wychwycone sprzeczne wymagania. Problem polega jednak na tym, że tak nie jest w przypadku złożonych scenariuszy. Przeczytałem to pytanie: Dlaczego TDD działa? **Czy TDD naprawdę działa w przypadku złożonych projektów korporacyjnych, czy praktycznie ogranicza się do typu projektu?**


title: Menedżerowie X Motywacja

text: Jako programista, jak myślisz, co robi twój menedżer, co najczęściej zmniejsza twoją motywację? Mój menedżer nalega na blokowanie treści internetowych (w tym tygodniu były treści msdn i witryny w domenie Microsoft) To jest tak głupie, że myślę, że nie jestem godnym zaufania profesjonalistą lub że kradnę jego internet. I nie, to nie jest mała firma. To ogromne przedsięwzięcie, w którym takie dinozaury nie powinny już istnieć.


title: Co powinienem wziąć pod uwagę przed utworzeniem witryny Silverlight?

text: Zdecydowałem się użyć silverlight na stronie internetowej. Działa to we wszystkich głównych przeglądarkach. Aplikacja może być bardzo intensywna graficznie. Co przegapiłem? Edycja: działa na Androidzie i innych platformach mobilnych? Od tamtego czasu pisałem o tym tutaj: http://carnotaurus.tumblr.com/post/4921541502/old-school-game-to-be-write-in-silverlight


title: Windows 7 Phone — jakiej wersji programu Visual Studio użyć?

text: Jestem programistą iOS, który dopiero zaczyna pracę z Windows Phone. W tej chwili posiadam darmowy produkt Visual Studio 2010 Express dla Windows Phone. Widzę, że Microsoft ma kilka IDE wyższej klasy, a niektóre z nich mają bardzo wymyślne metki. Moje pytanie brzmi – czy uaktualnienie przyniesie mi znaczące korzyści? Jedną z rzeczy, które uważam za bardzo irytujące, jest to, że w przeciwieństwie do Xcode, Visual Studio Express nie pozwala mi edytować kodu źródłowego, gdy moja aplikacja jest uruchomiona. (Nie potrzebuję naprawiania i kontynuowania; ale na pewno byłoby miło móc wprowadzać zmiany podczas działania i zastosować te zmiany przy następnym uruchomieniu mojej aplikacji).


title: Dlaczego katalogi muszą być puste przed usunięciem?

text: O ile mi wiadomo, usunięcie niepustego katalogu może działać w taki sam sposób, jak usunięcie pustego katalogu: usuwając wskaźnik do metadanych katalogu, nie byłoby żadnych wskaźników do zawartych w nim elementów, skutecznie usuwając wszystkie jego dzieci rekurencyjnie. Jeśli to prawda, to dlaczego katalogi muszą być puste przed usunięciem? Czy jest to tylko zabezpieczenie zapobiegające skasowaniu wielu plików naraz, czy też techniczne ograniczenie jakiegoś (prawdopodobnie starego) systemu plików?


title: Czy naprawdę WinRT można używać tylko na granicach?

text: Microsoft (głównie Herb Sutter) zaleca, aby podczas używania WinRT z C++/CX trzymać WinRT na granicach aplikacji i zachować rdzeń aplikacji napisany w standardzie ISO C++. Piszę aplikację, którą chciałbym pozostawić przenośną, więc moja podstawowa funkcjonalność została napisana w standardowym C++, a teraz próbuję napisać dla niej interfejs w stylu Metro przy użyciu C++/CX. Miałem jednak pewien problem z takim podejściem. Na przykład, jeśli chcę wypchnąć wektor typów C++ zdefiniowanych przez użytkownika do kontrolki XAML ListView, muszę owinąć mój typ zdefiniowany przez użytkownika w typie ref/value WinRT, aby był przechowywany w `Wektorze^`. Dzięki takiemu podejściu nieuchronnie zostaje mi zawijanie dużej części moich klas C++ z klasami WinRT. Po raz pierwszy próbowałem napisać przenośną aplikację natywną w C++. Czy naprawdę praktyczne jest utrzymywanie WinRT w takich granicach? Jak inaczej można obsłużyć ten rodzaj przenośnego rdzenia z ograniczeniami specyficznymi dla platformy?


title: Czy projekty VB.NET i C#.NET tworzone w programie Microsoft Visual Studio „Open Source” są bezpieczne?

text: Tworzę oprogramowanie w VB.NET i C#.NET i planuję wydać ich kody źródłowe jako w pełni open source. Czy te projekty „open source” są bezpieczne? **Mam wątpliwości:** 1. VB.NET i C#.NET używają frameworka .NET, który nie jest open source. 2. Kody źródłowe zależą od kompilatora i IDE, chociaż są dostępne w 100% otwarte i kompatybilne alternatywy, potwierdzono, że są one wadliwe i niezgodne z moim projektem. 3. Moje projekty korzystały z Jet 4.0 OLE DB, który również nie jest open source. 4. Pliki takie jak .Designer.vb, Microsoft ResX Schema, plik Solution lub .vbproj itp., które są generowane przez Visual Studio Może nie miałem wystarczającej wiedzy na temat open-source w dziedzinie, w której mogą być wydane kody zmieszane z nie open-source, lub kody mogą zostać wydane jako open source, nawet jeśli zostały opracowane i wygenerowane na IDE innym niż open source. Czy nadal kwalifikuję się do posiadania tytułu „projekt open-source”? Czy kody mogą zostać wydane jako open-source? Jeśli tak, jaki rodzaj licencji open source jest zgodny w oparciu o powyższe kryteria?


title: Czy muteksy są przypisane do określonych obszarów pamięci?

text: Obecnie czytam _C++ Concurrency in Action_ Anthony'ego Williamsa i napotykam przeszkodę w myśleniu. Najpierw opisuje zakleszczenia, gdy dwa wątki blokują się jednocześnie (przynajmniej tak to rozumiałem), co ma sens. Jednak dalej wyjaśnia, w jaki sposób można zablokować dwa muteksy jednocześnie. Oczywiście ma to jakąś funkcję, ale z powyższym (przypuszczalnie błędnym) zrozumieniem, które natychmiast zakleszczyłoby oba wątki. Z tej przeszkody powstaje nowa; oczywiście nie ulegnie zakleszczeniu, co oznacza, że muteksy muszą mieć bardziej zaawansowane zastosowanie niż tylko umożliwienie pracy pojedynczego wątku w procesie. W książce muteksy są nadawane poszczególnym obiektom. To prowadzi mnie do moich ogólnych pytań: _Czy muteksy są przypisane do określonych regionów pamięci_ , takich jak obiekty? Jeśli tak to jak? Książka świetnie sprawdza się w wyjaśnianiu, w jaki sposób można używać muteksów, ale nigdy tak naprawdę nie opisuje, jakie muteksy są na niskim poziomie. Zdaję sobie sprawę, że są one specyficzne dla implementacji, ale nigdy tak naprawdę nie rozumiałem, co dokładnie robią ani jak ich używają funkcje blokujące.


title: Czy istnieje lepsze określenie niż „gładkość” lub „ziarnistość”, aby opisać tę cechę języka?

text: Jedną z najlepszych rzeczy w programowaniu jest mnogość różnych języków. Istnieją języki ogólnego przeznaczenia, takie jak C++ i Java, a także małe języki, takie jak XSLT i AWK. Porównując języki, ludzie często używają takich cech jak szybkość, siła, ekspresja i przenośność jako ważne cechy wyróżniające. Jest jedna cecha języków, którą uważam za ważną, a do tej pory nie słyszałem [lub nie byłem w stanie wymyślić] dobrego określenia: **jak dobrze język skaluje się od pisania małych programów do pisania dużych programów **. Niektóre języki umożliwiają łatwe i bezbolesne pisanie programów, które wymagają tylko kilku linijek kodu, np. automatyzacja zadań. Ale te języki często nie mają wystarczającej mocy, aby rozwiązać duże problemy, np. Programowanie GUI. Z drugiej strony, języki, które są wystarczająco potężne, aby rozwiązać duże problemy, często wymagają zbyt dużego nakładu pracy w przypadku małych problemów. Ta cecha jest ważna, ponieważ problemy, które na pierwszy rzut oka wydają się małe, często powiększają się w nieoczekiwany sposób. Jeśli programista wybierze język odpowiedni tylko do małych zadań, zmiany zakresu mogą wymagać przepisania kodu od podstaw w nowym języku. A jeśli programista wybierze język z dużą ilością narzutów i tarcia, aby rozwiązać problem, który pozostaje mały, innym ludziom będzie go trudniej używać i rozumieć, niż jest to konieczne. Przepisywanie kodu, który działa dobrze, jest najbardziej marnotrawną rzeczą, jaką programista może zrobić ze swoim czasem, ale używanie bazooki do zabicia komara zamiast packi na muchy też nie jest dobre. Oto kilka sposobów, w jakie ta cecha się prezentuje. * **Może być używany interaktywnie** \- istnieje środowisko, w którym programiści mogą wprowadzać polecenia jeden po drugim * **Wymaga nie więcej niż jednego pliku** \- ani pliki projektu, ani pliki makefile nie są wymagane do uruchomienia w trybie wsadowym * * *Można łatwo podzielić kod na wiele plików** \- pliki mogą się odwoływać do siebie nawzajem lub są pewne wsparcie dla modułów * **Ma dobre wsparcie dla struktur danych** \- obsługuje struktury takie jak tablice, listy, a zwłaszcza klasy * * *Obsługuje szeroką gamę funkcji** \- funkcje, takie jak praca w sieci, serializacja, XML i łączność z bazą danych są obsługiwane przez standardowe biblioteki. Najlepsze wyniki w Pythonie. Funkcja C# Skrypty powłoki w języku Python --------------- --------- --------- ------------ --- Interaktywna słaba silna mocna Jeden plik słaba mocna mocna Wiele plików mocna mocna przeciętna Struktury danych mocna mocna słaba Funkcje mocna mocna mocna Czy istnieje termin, który oddaje tę ideę? Jeśli nie, jakiego terminu powinienem użyć? Oto kilku kandydatów. * **Skalowalność** \- używana już do opisu wydajności języka, więc nie jest dobrym pomysłem przeciążanie jej w kontekście składni języka * **Granularność** \- wyraża ideę bycia dobrym tylko do dużych zadań zamiast bycia dobre do dużych i małych zadań, ale nie wyraża nic o strukturach danych * **Gładkość** \- wyraża ideę niskiego tarcia, ale nie wyraża nic o sile struktur danych lub cechach Uwaga: Niektóre z tych właściwości są bardziej poprawnie opisane jako należące do kompilatora lub IDE niż sam język. Proszę traktować te narzędzia łącznie jako środowisko językowe. Moje pytanie dotyczy tego, jak łatwe lub trudne są języki, co zależy zarówno od środowiska, jak i języka.


title: Czy nadal wpadasz w panikę, gdy widzisz zrzut stosu? Czemu?

text: Pytanie dla doświadczonych programistów. Czy nadal masz wrażenie tonięcia, gdy widzisz zrzut stosu? Jakieś uczucia wzburzenia, niepokoju, zimne stopy, dezorientacja, konsternacja, konsternacja, przerażenie, strach, niepokój? Czemu? Dla mnie zwykle oznacza to, że nie jestem w 100% pewien swojego projektu lub nie przetestowałem wystarczająco swojego kodu.


title: ASP.NET AJAX i mój topór!

text: Tak więc poważnie rozważam usunięcie ASP.NET AJAX z moich przyszłych projektów, ponieważ szczerze uważam, że jest to zbyt rozdęte, a czasami zawiłe. Zaczynam też czuć, że jest to umierająca biblioteka w ramach .NET, ponieważ prawie nie widzę żadnych wysokiej jakości komponentów ze społeczności open-source. Wszystkie zajebiste komponenty są zwykle równie rozdętymi komercyjnymi komponentami… Na początku było fajnie, ale teraz denerwuje mnie to bardziej niż cokolwiek innego. Planuję przejście na bibliotekę jQuery, ponieważ prawie wszystko w ASP.NET AJAX jest często łatwo osiągalne za pomocą jQuery i, częściej niż nie, bardziej wdzięczne rozwiązanie niż ASP.NET AJAX i ma znacznie silniejsze społeczność open source. Być może to tylko ja, ale czy tak samo myślisz o ASP.NET AJAX? Jakie było/jest Twoje doświadczenie w pracy z ASP.NET AJAX?


title: Jaki jest obecnie stan TWAIN na Macintoshu?

text: Obecnie pracuję nad projektem, w którym chcemy współpracować ze skanerami TWAIN zarówno na PC (Windows) jak i Macintosh. W systemie Windows mamy w zasadzie wszystko do kwadratu, a kod działa z powodzeniem z większością skanerów. W systemie Mac OS X również w zasadzie wszystko działa, a główny skaner, którego używaliśmy do tworzenia aplikacji, działa idealnie, ale nie mamy szczęścia z innymi skanerami. Jako produkt uboczny rozwoju tego projektu, mamy pod ręką sporą liczbę skanerów różnych producentów do przetestowania. Wyniki są bardzo różne: * Skaner, który tworzyliśmy, działa doskonale w systemie Mac OS X, podobnie jak w systemie Windows. Jak na ironię ten skaner jest najtańszym i najbardziej gównianym skanerem (pod względem szybkości), z jakim kiedykolwiek się spotkaliśmy, ale praca z nim była marzeniem. * Inny skaner działa świetnie - do drugiego lub trzeciego skanowania, w którym to momencie aplikacja zawiesza się bez wyraźnego wskazania, co się stało (otrzymujemy EXEC_BAD_ACCESS z debuggera) * Inny skaner najwyraźniej nie obsługuje TWAIN w systemie Mac OS X (brak danych źródła w folderze „Image Capture/TWAIN Data Sources”), chociaż obsługuje standard TWAIN w systemie Windows. * Inny skaner ma ogólne źródło danych, które moim zdaniem powinno obejmować wszystkie możliwe skanery tego producenta, ale gdy próbujemy zainicjować natywne skanowanie (które jest wymagane dla wszystkich źródeł danych TWAIN), nie otrzymujemy żadnych wyników. Również próba zainstalowania drugiego skanera tego producenta zaciera wszystko i wymaga ręcznego odinstalowania wszystkiego od tej firmy. * Inny skaner ma źródło danych TWAIN, które wydaje się być specyficzne dla producenta, ale również nie inicjuje natywnego skanowania (ale skanowanie przy użyciu natywnego GUI - które jest niezgodne z naszym projektem - działa) Więc nie jestem pewien gdzie iść z tym. Nadal zagłębiam się w kod, aby dowiedzieć się, co, jeśli w ogóle, robimy źle, ale sprawdzając zgodność ze standardem TWAIN, naprawdę wygląda na to, że robimy wszystko dobrze, ale dostajemy bardzo trafione lub... przegapić wyniki na większości skanerów, z którymi testujemy. Ponadto, jako część nowego modelu Cocoa/Carbon Events, jest to dodatkowe uwzględnienie funkcji „wywołania zwrotnego”, którą mają zaimplementować źródła danych Mac OS X TWAIN i nie widzę, aby była wywoływana z większości tych źródeł/sterowników danych. Wszystko to prowadzi mnie do zastanowienia się - czy po prostu robimy coś nie tak, czy po prostu TWAIN nie jest właściwie obsługiwany na komputerach Macintosh? Naprawdę nie widzę w Internecie wielu informacji na temat TWAIN na Macintoshu - sporadyczne, sporadyczne zapytania na twainforum.org pozostają bez odpowiedzi. Windows ma również coś, co nazywa się WIA - Windows Image Acquisition - i po stronie Windows dołączamy to również jako opcję. Czy jest coś innego na Macu, co powinniśmy zbadać zamiast lub oprócz TWAIN? **UWAGA:** Zamieściłem to samo pytanie na StackOverflow, ale nie otrzymałem odpowiedzi i po konsultacji z meta postanowiłem ponownie je opublikować tutaj (ponieważ jest to bardziej dyskusja niż konkretna). Jeśli jest to duże nie, nie krępuj się usunąć tę rzecz.


title: Jakie są moje opcje korzystania z biblioteki C++11 w aplikacji C# WPF?

text: Piszę wieloplatformową (OS X i Windows) aplikację desktopową w C++11. Zamierzam używać tego samego rdzenia C++11 na obu platformach, wykorzystując natywne frameworki dla interfejsu użytkownika (Cocoa i Objective-C na OS X i WPF oraz C# na Windows), ponieważ uważam, że najlepsze doświadczenie UX jest natywne. Obecnie aplikacja działa jako aplikacja konsolowa na obu platformach. Aplikacja wykonuje część prac mocno obciążających procesor i zapewnia wywołania zwrotne do raportowania postępu, a po zakończeniu tworzy instancję kolekcji elementów (`std::vector<std::unique_ptr<Item>>`) reprezentujących wyniki przetwarzania. Moim celem jest, aby biblioteka C++11 działała jako model dla interfejsu użytkownika w sposób zgodny z wzorcami MVC i MVVM. Interfejs użytkownika musi: * Zezwalać użytkownikowi na wybór pliku do przetworzenia (otworzyć okno dialogowe pliku i wysłać ścieżkę pliku do biblioteki C++) * Wyświetlać postęp (obsługiwać wywołania zwrotne z biblioteki C++ w celu aktualizacji paska postępu) * Wyświetlać wyniki w formularz WPF (dostęp do klasy Item i wyświetlanie informacji, które dostarcza) Przyjrzałem się WinRT i wygląda na to, że nie ma zbyt wielu informacji do wykorzystania w aplikacjach komputerowych. Nie przepadam też za pomysłem tworzenia samego interfejsu użytkownika w C++. Moim celem jest pobieranie danych do i z aplikacji C++ i używanie C# do obsługi interfejsu użytkownika, ponieważ uważam, że jest to bardziej wydajny sposób pracy z WPF. Jestem świadomy P/Invoke, ale rozumiem, że działa tylko z interfejsem C. Tworzenie takiego interfejsu wokół C++11 wydaje się kłopotliwe. Znam również C++/CLI, ale nie jestem pewien, czy to zaspokoi moje potrzeby lub czy jest kompatybilne z C++11. Rzuciłem okiem na CppSharp, ale wydaje się, że jest to praca w toku i wątpię, czy wiedziałbym, jak obejść wszelkie problemy, które mogą się pojawić. Mam duże doświadczenie z C++ i trochę z C#, ale nie jestem pewien, czy brakuje mi lepszych opcji lub która z powyższych jest rozsądnym podejściem.


title: Jak umieścić wyciągnięte wnioski, dobre praktyki itp. w „przepływie pracy”

text: Jak mówi tytuł, chciałbym uzyskać kilka sugestii dotyczących wykorzystania wiedzy w działaniu. Mamy wiele dodatkowych wymagań, które dotyczą: praktyk kodowania rozwoju funkcji (wszystkie lub tylko podzbiór), procesu itp. Problem w tym, że mamy problemy z wprowadzeniem tych praktyk do nowych projektów i chcę pomóc programistom i recenzentom pamiętać o tym, ale nie chcę, aby mieli wszystko tylko w głowie, ale raczej w jakiejś bazie danych, z której mogą łatwo korzystać. Lista praktyk jest już zdefiniowana w programie Excel. Chciałbym, aby wszyscy członkowie zespołu stosowali te praktyki w swojej pracy, ale nie wiem, jak ułatwić znalezienie tych informacji. Kiedy programista rozpoczyna pracę nad funkcją, powinien być w stanie łatwo znaleźć wszystkie praktyki, których powinien użyć w tej funkcji. Aby było jasne, o co mi chodzi, pokazuję kilka przykładów informacji, które musimy zastosować: * (nowy wniosek projektowy) każda funkcja musi wyprowadzać logi (i nie może zawierać żadnych wrażliwych danych); * (nowy wniosek projektowy) każda funkcja musi mieć flagę w konfiguracji, która pozwala na jej wyłączenie; * (dobra praktyka) zawsze aktualizuj dokumenty, gdy funkcja jest gotowa; * (retrospektywna informacja zwrotna) Kontrola jakości musi być testowana tylko na pakiecie wydania (nie w trybie debugowania); * (retrospektywna informacja zwrotna) przeprowadzaj testy warunków skrajnych dla każdej nowej wdrożonej funkcji; * (zadanie lidera) pisanie notatek o wydaniu po każdym sprincie, które zawierają ukończone zadania i otwarte błędy; * (zastosowanie projektowe) każde zdarzenie z „ABCStoreManager” musi zostać odłączone po wywołaniu; * (wykorzystanie projektu) spróbuj złapać każde wywołanie zdarzenia.Invoke(); Myślałem przez chwilę o wiki, ale to nie jest dobre, ponieważ nie obsługuje tagowania/kategorii ani zapytań i obawiam się, że wszyscy by to zignorowali (ludzie muszą dokładnie wiedzieć, gdzie szukać). Moje pytanie można podsumować, ponieważ w jaki sposób mogę w łatwy sposób poprawić komunikację z naszymi programistami na temat wymaganych metodologii i praktyk programistycznych wymienionych powyżej? Uwagi: * to pytanie nie dotyczy problemów z bezpieczeństwem ani zapachów kodu per se; * Nie szukam żadnego ciężkiego procesu (takiego jak RUP) ani żadnego procesu, który zmusza Cię do chodzenia krok po kroku. Najchętniej szukam zwinnego podejścia * Daniel Figueroa zasugerował dodanie dodatkowych wymagań do „definicji zrobienia”. I wydaje się, że to dobry sposób. Problem polega jednak na tym, że niektóre funkcje mają na przykład 20 dodatkowych wymagań („wszystkie funkcje GUI”), jakieś 10 („wszystkie żądania serwera”) itp. Chciałbym mieć te rzeczy zagregowane w jednym miejscu i po prostu używać linki ("zobacz: 'Funkcja GUI'");


title: Jak skonfigurować coś takiego jak serwer integracyjny, który mierzy jakość kodu i odrzuca kod, jeśli wynik jest poniżej określonej liczby?

text: Nawet jeśli nie lubię zmuszać ludzi do robienia rzeczy (i wierzę, że może to obniżyć produktywność i wywołać złość), naprawdę chcę wymusić dobry styl kodowania. Czy istnieje sposób na skonfigurowanie czegoś takiego jak serwer integracyjny, który mierzy jakość kodu (na przykład uruchamia `resharper` lub inny statyczny kontroler) i odrzuca kod, jeśli wynik jest poniżej określonej liczby? Czy uważasz, że to dobre podejście?


title: Wybór nazwy dla projektu open-source – jak wyświetlić istniejące znaki towarowe/nazwy używane w innych programach?

text: Staram się wybrać dobrą nazwę dla nowego projektu open source. Problem polega na tym, że na świecie jest już tak dużo oprogramowania, że wyszukiwarka Google ujawnia jeden lub więcej istniejących programów o każdej dobrej nazwie, o której mogę pomyśleć (a było już kilka). Oczywiście nazwy takie jak „Linux” lub „Windows”, „Java” lub „Excel” są niedostępne. Ale co z nazwami, które mogły być używane przez jakiś mało znany program? Czy to ma znaczenie, jeśli nazwa jest znakiem towarowym w co najmniej jednym kraju? W jednym przypadku odkryłem, że istnieje komercyjny pakiet oprogramowania sprzedawany przez kanadyjską firmę pod nazwą, której chciałem użyć. Ta sama nazwa jest zastrzeżona w USA, ale przez inną firmę. Nie mogłem znaleźć żadnych dowodów na to, że właściciel znaku towarowego faktycznie sprzedaje oprogramowanie pod tą nazwą. W Kanadzie nazwa nie jest znakiem towarowym. W innych przypadkach znalazłem kilka programów o tej samej nazwie, niektóre komercyjne, niektóre projekty badawcze dla studentów uniwersyteckich. Więc może to normalne w branży oprogramowania? Co się stanie, jeśli użyję nazwy, która nie jest znakiem towarowym, a ktoś inny wykorzysta ją później? Czy mogę napotkać presję prawną, aby przestać z niej korzystać? Czy dodanie prefiksu do nazwy pomoże uniknąć problemów prawnych? Załóżmy na przykład, że chcę nazwać swój projekt „Broomflip”, ale inne oprogramowanie jest już sprzedawane pod tą nazwą. Jeśli zakładając, że jestem związany z organizacją o nazwie „Hoplock”, nazywam ją „Hoplock Broomflip”, czy byłoby to lepsze? Mam nadzieję, że ktoś, kto dobrze rozumie prawo własności intelektualnej, może rzucić trochę światła na niektóre lub wszystkie powyższe pytania. Oczywiście mile widziane są również osobiste opinie osób nieposiadających specjalnej wiedzy prawniczej, ale proszę spróbować poprzeć je dowodami lub odpowiednimi referencjami. Dowody anegdotyczne są mile widziane.


title: Czy nauka DSP jest konieczna dla programisty c++?

text: Jestem programistą C++. Chciałbym użyć algorytmów DSP w C++. Czy zrozumienie nauki stojącej za cyfrowym przetwarzaniem sygnału jest warunkiem wstępnym implementacji algorytmów DSP?


title: Tworzenie hegemonii zespołu deweloperskiego niezależnego od platformy

text: Pracuję w firmie, w której zespół programistów posiada wiele różnych umiejętności. Wykonujemy wszystkie z poniższych czynności (ogólnie ukierunkowanych na sieć): * .NET (MVC, Umbraco, ASP.NET, Surface) * Java (Spring, Hibernate, Android) * PHP (Zend, Code Igniter) * Actionscript 3 * AIR * Cel-C * Html/Javascript (oczywiście) Staramy się usprawnić nasz proces rozwoju. Obecnie mamy serwer TeamCity, który buduje i wdraża projekty .NET za pomocą msbuild/msdeploy/nant. To, czego chcę, to coś w rodzaju maven, które da nam standardową strukturę szablonów projektu, która działa w przypadku większości projektów, aby umożliwić ludziom z różnych zespołów łatwe przemieszczanie się między projektami. Obecnie działa to na jednej platformie, ponieważ zwykle robimy rzeczy w standardowy sposób dla tej platformy (o ile zaangażowane są pewne osoby), jednak chcę użyć czegoś takiego jak maven, aby ujednolicić układ i budowanie projektu. Czy ktoś wcześniej próbował czegoś takiego? Doświadczenie? Książki?


title: Jak w praktyce wykorzystuje się wzór dekoratora?

text: Doskonale rozumiem, jak zaimplementować wzorzec Decorator, a także rozumiem, jaki jest jego cel. Dekorator jest używany w jednym z dwóch przypadków: **Jako alternatywa dla podklas** \- gdy istnieje wiele cech, które obiekt może mieć, można użyć dziedziczenia w celu stworzenia podklas dla wszystkich możliwych kombinacji. Na przykład trzy cechy A, B i C dadzą w wyniku wiele klas: A, B, C, ABC, AB, AC, BC. Prowadzi to do „wybuchu klasowego”. Z Dekoratorem mamy trzy dekoratory A, B i C oraz klasę D do „dekoracji” – i to wszystko. **Jako sposób na rozszerzenie funkcjonalności obiektu w czasie wykonywania** \- możemy zdecydować, którymi dekoratorami 'opakować' obiekt w czasie wykonywania, tym samym dynamicznie 'dostosowując' obiekt. To było tylko po to, by pokazać, że rozumiem czym jest Decorator (ja też całkowicie rozumiem, jak jest zaimplementowany). **Teraz moje pytanie:** Znam teoretyczne przykłady tego, kiedy i jak używać Dekoratora. I jak widzisz, wiem, co to jest zamierzone. Ale nadal nie jestem pewien, kiedy użyć tego w praktyce, w rzeczywistej aplikacji. Powiedzenie mi „jest używany jako alternatywa dla podklas” lub „jest używany do dynamicznego dodawania funkcjonalności do obiektu” nie będzie pomocne, ponieważ znam jego intencję. Również powiedzenie mi „pomyśl o oknie interfejsu użytkownika na przykład. Może mieć obramowanie lub nie, i może być skalowalny lub nie” nie jest pomocne, znam już te teoretyczne przykłady. **Więc proszę o konkretny przykład Dekoratora ze świata rzeczywistego, w praktycznym scenariuszu ze świata rzeczywistego** z krótkim wyjaśnieniem korzyści płynących z użycia wzorca Dekoratora w porównaniu z innymi technikami. * * * Żeby było jasne, nie szukam listy aplikacji, w których był używany Decorator. Szukam przykładu gdzie i w jaki sposób Dekorator został użyty w projekcie, dlaczego był to dobry wybór projektowy **i konkretny problem, który rozwiązał.** Kiedy zobaczę **konkretny problem** rozwiązany za pomocą Dekorator mam nadzieję, że lepiej to zrozumiem.


title: Jak zainicjować wszystkie swoje referencje?

text: Niedawno podjąłem projekt z innym deweloperem i ma on pewien sposób inicjowania swoich referencji. class Player { private: Konsola &console; Pancerz &armor1, &armor2; Debuger &debugger; sf::RenderWindow &window; sf::Zdarzenie &event; public: Player(Konsola &konsola, Zbroja &zbroja1, ...) : konsola(konsola), zbroja1(zbroja1), ... {}; } I to jest w porządku ze mną, ale co jeśli dodamy nowe rzeczy? Nasz konstruktor jest ogromny, a więc niechlujny, chciałbym wiedzieć, czy istnieją lepsze sposoby inicjowania referencji, jeśli masz duży projekt, ponieważ jeśli będziemy za tym nadążać, w końcu nasz konstruktor będzie miał więcej linii kodu niż to, co jest faktycznie robi.


title: Jak nazwać tę architekturę?

text: Opracowałem rozproszony system automatyzacji testów, który składa się z dwóch różnych podmiotów. Jeden podmiot jest odpowiedzialny za uruchamianie testów i monitorowanie/wyświetlanie ich postępów. Drugi jest odpowiedzialny za przeprowadzanie testów na tym hoście. Obie te jednostki pobierają dane z centralnej bazy danych. Teraz moja pierwsza myśl jest taka, że jest to wyraźnie architektura serwer-klient. W końcu masz dokładnie jedną jednostkę organizacyjną i wiele jednostek, które komunikują się z tą jednostką. Jednak podczas gdy rzekomi klienci komunikują się z serwerem za pośrednictwem RPC, w rzeczywistości nie żądają usług ani informacji, a raczej po prostu zgłaszają postęp testu wstecznego, w rzeczywistości po uruchomieniu testu mogą ukończyć swoje zadania bez połączenia z serwer. Żądanie usługi jest faktycznie wysyłane przez rzekomy serwer, który powoduje, że klienci przeprowadzają testy. Czy nadal byłoby to uważane za architekturę serwer-klient, czy jest to coś innego?


title: Jaka jest różnica między programowaniem po stronie serwera a programowaniem po stronie klienta?

text: > Widziałem pytania (głównie na Stack Overflow), w których brakuje tej podstawowej > wiedzy. Celem tego pytania jest dostarczenie dobrych informacji > tym, którzy ich szukają i tym, którzy się do nich odwołują. W kontekście programowania WWW, jakie są różnice między programowaniem po stronie serwera a programowaniem po stronie klienta? Które języki należą do jakich i kiedy używasz każdego z nich?


title: Co dokładnie oznacza programowanie serwera?

text: Dużo szukałem, ale nie mogłem go znaleźć. Wiem, co to jest programowanie po stronie serwera i zrobiłem to sam - pobieranie danych użytkownika, przechowywanie ich w bazie danych itp. przy użyciu języka programowania po stronie serwera. Moje pytanie brzmi: czy to właśnie nazywamy „programowaniem serwera”? A może to inne, bardziej skomplikowane zadanie? Dziękuję. :) EDIT: To NIE jest duplikat drugiego pytania. To pytanie szuka innej odpowiedzi niż ta, która jest podana w pytaniu, które ma zawierać odpowiedź. OK, krystalicznie jasne pytanie: (teraz robi się trochę zabawnie :D ) Czy istnieje różnica między "programowaniem po stronie serwera" (z mojego zrozumienia: obsługa danych wejściowych użytkownika otrzymanych przez POST, GET, bazy danych i wszystko inne) a "programowaniem serwera "?


title: Prosta definicja klienta-serwera

text: Szukam prostej definicji pojęcia „klient-serwer” Chciałbym coś podobnego do tej definicji **_state_**. > ... Ta „rzecz/informacja”, o której musisz pamiętać, nazywa się „stanem”. Edytuj — to nie jest pytanie domowe (ani nie jestem uczniem). Moim celem jest wymyślenie zwięzłego sposobu wyjaśnienia REST przeciętnym programistom. Nie chciałem jednak szkodzić odpowiedzi.


title: Czy konwertery VB.NET na C# są rzeczywiście kompilatorami?

text: Za każdym razem, gdy widzę programy lub skrypty, które konwertują między językami programowania wysokiego poziomu, są one zawsze oznaczane jako konwertery. "Konwerter VB.NET na C#" w Google przynosi oczekiwane, użyteczne trafienia. Jednak "kompilator VB.NET to C#" w Google powoduje takie rzeczy, jak porównania między kompilatorami C# i VB.NET i inne hity, które nie są dokładnie tym, czego byś szukał. Webopedia definiuje kompilator jako > Program, który tłumaczy kod źródłowy na kod obiektowy Eric Lipper w odpowiedzi na pytanie: „Jak stworzyć własny język programowania i kompilator do niego” sugeruje: > Jeden z najlepszych sposobów na rozpoczęcie pisania kompilatora polega na napisaniu kompilatora wysokiego > poziomu-języka-do-wysokiego-języka. Czy VB.NET do C# _converter_ naprawdę jest tylko _compiler_? Jeśli nie, co odróżnia konwerter od bycia kompilatorem?


title: Dlaczego ktoś miałby chcieć wyłączyć ostrzeżenia kompilatora?

text: Ta odpowiedź i dodane do niej komentarze pokazują sposób na wyłączenie kilku ostrzeżeń kompilatora za pomocą dyrektyw `#pragma`. Dlaczego ktoś miałby chcieć to zrobić? Zwykle ostrzeżenia są tam z jakiegoś powodu i zawsze czułem, że są to dobre powody. Czy istnieje „prawidłowy przypadek”, w którym ostrzeżenia powinny być wyłączone? W tej chwili nic nie przychodzi mi do głowy, ale może to tylko ja.


title: Lepsza alternatywa dla niekompatybilnych implementacji dla tego samego interfejsu?

text: Pracuję nad fragmentem kodu, który wykonuje określone zadanie w kilku równoległych środowiskach, w których zachowanie różnych komponentów w zadaniu jest podobne, ale zupełnie inne. Oznacza to, że moje implementacje są zupełnie inne, ale wszystkie opierają się na relacjach między tymi samymi interfejsami, coś takiego: IDataReader -> ContinuousDataReader -> ChunkedDataReader IDataProcessor -> ContinuousDataProcessor -> ChunkedDataProcessor IDataWriter -> ContinuousDataWriter -> ChunkedDataWriter środowisko mamy IDataReader, IDataProcessor i IDataWriter, a następnie możemy użyć Dependency Injection, aby upewnić się, że mamy poprawny dla bieżącego środowiska, więc jeśli pracujemy z danymi w chunkach, używamy `ChunkedDataReader`, `ChunkedDataProcessor` i `ChunkedDataWriter`, a jeśli mamy dane ciągłe, mamy wersje ciągłe. Jednak zachowanie tych klas jest wewnętrznie zupełnie inne i na pewno nie można przejść z `ContinuousDataReader` do `ChunkedDataReader`, mimo że oba są `IDataProcessors`. Wydaje mi się, że jest to niepoprawne (prawdopodobnie naruszenie LSP?) iz pewnością nie jest to teoretycznie poprawny sposób pracy. To prawie tak, jakby „prawdziwy” interfejs był tutaj kombinacją wszystkich trzech klas. Niestety w projekcie, nad którym pracuję, z terminami, do których pracujemy, utknęliśmy w tym projekcie, ale gdybyśmy mieli trochę więcej swobody, jakie byłoby lepsze podejście projektowe w tego rodzaju scenariuszu?


title: Znaczenie struktur danych w nowoczesnym rozwoju oprogramowania

text: W latach 90., kiedy nie było dostępnych zaawansowanych frameworków/paradygmatów do tworzenia oprogramowania, wiedza o strukturach danych była krytyczna… co mogę zrozumieć. Ale obecnie, w przypadku większości problemów (przynajmniej związanych z rozwojem Java/Android) możemy polegać na istniejącej klasie, aby zapewnić rozwiązanie. W związku z tym uważam, że dogłębna wiedza na temat struktur danych nie jest potrzebna dla kogoś, kto teraz wkracza w programowanie. Czy moja wiara jest słuszna?


title: Jak przeprowadzić refaktoryzację, gdy cały Twój rozwój odbywa się na oddziałach?

text: W mojej firmie cały nasz rozwój (poprawki błędów i nowe funkcje) odbywa się w osobnych oddziałach. Kiedy jest gotowy, wysyłamy go do działu kontroli jakości, który testuje go na tej gałęzi, a kiedy dają nam zielone światło, łączymy go z naszym głównym oddziałem. Może to zająć od dnia do roku. Jeśli spróbujemy wcisnąć jakąkolwiek refaktoryzację w gałęzi, nie wiemy, jak długo będzie ona „niedostępna”, więc może spowodować wiele konfliktów, gdy zostanie z powrotem scalona. Na przykład, powiedzmy, że chcę zmienić nazwę funkcji ponieważ funkcja, nad którą pracuję, intensywnie korzysta z tej funkcji, i odkryłem, że jej nazwa tak naprawdę nie pasuje do jej celu (ponownie, to tylko przykład). Więc chodzę dookoła i znajduję każde użycie tej funkcji i zmieniam ich nazwy na nową, i wszystko działa idealnie, więc wysyłam to do QA. W międzyczasie dzieje się nowy rozwój, a moja funkcja o zmienionej nazwie nie istnieje w żadnej z gałęzi, które są odłączane od main. Kiedy mój problem zostanie ponownie połączony, wszystkie się zepsują. Czy jest jakiś sposób radzenia sobie z tym? To nie jest tak, że kierownictwo kiedykolwiek zatwierdzi problem dotyczący tylko refaktoryzacji, więc musi on zostać wciśnięty w inne prace. Nie można go rozwijać bezpośrednio w main, ponieważ wszystkie zmiany muszą przejść przez QA i nikt nie chce być palantem, który złamał main, aby mógł zrobić trochę nieistotnego refaktoryzacji.


title: Czy realistyczne jest używanie projektantów do złożonego interfejsu użytkownika?

text: Kiedy kilka lat temu stworzyłem swoją pierwszą aplikację internetową, pamiętam, jak próbowałem użyć projektanta w VS 2008. Zanim jeszcze pamiętam, porzuciłem go na rzecz rzeczywistego debugowania, aby zrozumieć, jak będzie wyglądał mój interfejs użytkownika. Od tego czasu wykonałem jeszcze kilka zdjęć, ale nigdy nie byłem przekonany, że można z niego zbudować nawet złożony interfejs użytkownika. Jakie postępy poczynili projektanci w ciągu ostatnich kilku lat? Czy są jacyś projektanci, którzy mogą umożliwić podgląd w czasie rzeczywistym bardzo złożonego interfejsu użytkownika? czy jest to zależne od języka programowania / frameworka? Dziękuję.


title: Nie wiem jak zrozumieć typ Wildcard w Javie

text: Czytam Core Java (9th edition) Cay S. Horstmann i Gary Cornell. Po podjęciu wysiłku nadal nie mogę zrozumieć **? super menedżera**. Oto kilka materiałów związanych z tym pytaniem. public class Pair<T> { private T pierwszy; prywatna T sekunda; public Pair(T pierwszy, T drugi) { this.first = pierwszy; this.second = sekunda; } public void setFirst(T first) { this.first = first; } public void setSecond(T sekunda) { this.second = second; } public T getFrist() { return this.first; } public T getSecond() { return this.second; } } **Menedżer** dziedziczy po **Pracowniku** , a **Kierownik** dziedziczy po **Menedżerze**. _Para_ ma następujące metody: void setFirst(? super Manager) ? super Manager getFirst() Od _? super Manager_ oznacza dowolny nadtyp **Manager** , dlaczego nie mogę wywołać metody _setFirst_ z **Employee** (oczywiste jest, że Employee jest nadtypem Managera), ale tylko z typem **Manager** lub podtypem takim jako **kierownik** (ale dyrektor jest podtypem menedżera, a nie nadtypem menedżera)?


title: Dlaczego ludzie używają edytorów markdown wysiwyg w aplikacjach webowych?

text: Rozumiem zalety używania przecen w lokalnych plikach tekstowych, a następnie pobierania tych plików i generowania kodu HTML. Jest to świetne dla dokumentacji, readme w repozytoriach git i postów dla generatorów stron statycznych. Tworzenie składni markdown jest bardzo proste w dowolnym edytorze tekstu, jest czytelne dla człowieka i stosunkowo łatwo można tworzyć HTML z markdown. Czego nie rozumiem, to zalety używania edytora wysiwyg do przecen w aplikacjach internetowych, szczególnie tych, które korzystają z serwera bazy danych. (nie plik płaski). Myślałem, że cały sens używania przecen polega na usunięciu potrzeby edytora wysiwyg. Jaka jest przewaga używania edytora przecen wysiwyg nad edytorem, który po prostu wyświetla kod HTML (unikając narzutu związanego z konwersją przecen do HTML w tym procesie)? **wyjaśnienie:** w zasadzie szukam technicznych zalet posiadania znaczników wyjściowych edytora WYSIWYG zamiast HTML. Dla użytkownika końcowego formularz tekstowy będzie wyglądał tak samo, więc dotyczy tylko markdown/html w zapleczu aplikacji. Anchor CMS sorta robi to i zastanawiam się, czy istnieje przewaga nad zwykłym wyjściem HTML.


title: Jakie są najlepsze praktyki i pułapki związane z tworzeniem aplikacji JS opartej wyłącznie na RESTful API?

text: Zaczynamy budować nową aplikację i chciałbym zgłębić pomysł stworzenia grubego klienta JS (backbone / angular) z tylko RESTful API widocznym przez naszą warstwę aplikacji. Jakie są najlepsze praktyki i potencjalne pułapki związane z tworzeniem tego rodzaju aplikacji internetowej?


title: Musisz zapewnić interfejs (dla wtyczek) do pobierania danych wejściowych typu A i zwracania danych wyjściowych typu B

text: interfejs publiczny IMyInputProviderPlugin { IMyOutput Provide (dane IMyInput); } Jest to interfejs, który muszę zapewnić, aby móc dynamicznie ładować biblioteki dll i nie wiązać ich z moją implementacją. Jednak po przeczytaniu tego wydaje się, że jest to antywzór? http://blog.ploeh.dk/2011/04/27/Providerisnotapattern/ Jestem zdezorientowany, jak to zrobić, jeśli nie w ten sposób?


title: Jak stworzyć system punktacji z czasem i poprawnymi odpowiedziami do gry?

text: o stworzyć system punktacji z czasem i poprawnymi odpowiedziami do gry? up vote 0 down vote faworytem Mam mały quiz na telefon komórkowy, który składa się z 30 pytań i licznika czasu, który zaczyna się od 0 sekund i trwa aż do 1 godziny. Poniżej widać, że mój timer zaczyna się od 0 i jest wyświetlany w formacie MM:SS. var timestamp = new Date(0, 0, 0, 0, 0, 0); funkcja pad(n) { return ("0" + n).slice(-2); } Number.prototype.pad = function (len) { return (new Array(len+1).join("0") + this).slice(-len); } Tak więc to, czego naprawdę potrzebuję, to jakiś wzór lub system, aby otrzymać końcowy wynik. Im więcej poprawnych odpowiedzi otrzyma użytkownik i im szybciej zakończy quiz, tym więcej punktów zdobędzie. Wiem, że to trochę niezwiązane pytanie na tym forum, ale trochę utknąłem. Chciałbym poznać Wasze opinie na temat systemu punktacji. Tak więc najmniejszy wynik powinien wynosić 0, a najwyższy, no cóż, bez limitu.


title: Dlaczego Groovy (Java)?

text: Szukam nowego języka do nauczenia się i dowiedziałem się o Groovy. Według strony internetowej język ten jest językiem „agile dynamic”. 1. Jak to jest zwinne? 2. Jak krótsza jest składnia w porównaniu do Javy? 3. Czy mogę używać istniejących bibliotek Java? 4. Na koniec, czy ktoś może podzielić się swoim doświadczeniem w tym żargonie? Co kochasz i nienawidzisz


title: Powstrzymywanie pająków lub nieautoryzowanych użytkowników przed przeglądaniem plików

text: Jestem zakłopotany tym problemem. Użytkownicy uwierzytelniają się w witrynie mojego klienta. Następnie użytkownicy widzą swoją stronę profilową w witrynie mojego klienta. Mój klient chce teraz, abym udostępnił adres URL na jego stronie profilu, aby jego użytkownicy mogli pobierać informacje z zewnętrznej witryny internetowej. (Ta zewnętrzna strona internetowa nie jest kontrolowana przez mojego klienta). Oznacza to, że po kliknięciu tego adresu URL prowadzi on do zewnętrznej witryny internetowej i otrzymuje spersonalizowany plik. Ponieważ informacje są uważane za wrażliwe (nie krytyczne), zewnętrzna strona internetowa nie powinna pozwalać nikomu na pobranie spersonalizowanego pliku. Jestem zbity z tropu, zastanawiając się, jak zezwolić tylko na jedno uwierzytelnianie (w witrynie mojego klienta) zamiast dwukrotnego uwierzytelnienia użytkowników końcowych (raz w witrynie mojego klienta i osobno w witrynie zewnętrznej) Jakieś pomysły?


title: Jak stworzyć lekką aplikację WPF, w tym .NET Framework 4.5?

text: Chcę utworzyć aplikację, która jest zależna od .NET Framework 4.5. Jeśli wiążę framework z konfiguracją aplikacji, rozmiar aplikacji wzrasta znacznie, ale muszę powiązać .NET Framework 4.5 z moją konfiguracją. Czy jest jakaś inna opcja powiązania frameworka z konfiguracją aplikacji poza pobraniem go ze strony internetowej podczas instalacji?


title: Czy nauka Brainfuck ma praktyczne zastosowanie?

text: Brainfuck to ezoteryczny język programowania stworzony w 1993 roku przez Urbana Müllera. Został zaprojektowany, aby rzucać wyzwanie i bawić programistów, i nie został stworzony, aby nadawał się do praktycznego użytku. Ale nadal istnieje i napisano z nim kilka naprawdę fajnych rzeczy. Moje pytanie brzmi – czy nauka/ćwiczenie Brainfuck pogłębi moją wiedzę na temat programowania? Na przykład: czy jako programista wysokiego poziomu (używający języków wysokiego poziomu) poprawi zrozumienie metod i operacji niskiego poziomu? A może to tylko żart, który spędzaliśmy trochę czasu i bawiliśmy się, pokazując kod, który naprawdę wygląda jak „kod” w sensie, który jest trudny do odczytania/zrozumienia.


title: Zwykłe projekty na Github pomijają sprawdzanie błędów, logowanie itp. ze względu na przejrzystość?

text: Właśnie zacząłem używać GitHub do uspołeczniania niektórych projektów dla prostych aplikacji do czatu i peer-to-peer. W odniesieniu do kodowania, czy zwyczajowo pomija się obsługę wyjątków, sprawdzanie błędów, rejestrowanie itp., aby promować łatwy do zrozumienia i „czysty” kod, jeśli te dodatki nie są całkowicie konieczne do rzeczywistego uruchomienia kodu? Na przykład, oto dwa skrajne przykłady: if( msg != null){ zdarzenie NodeEvent = NodeEvent.valueOf(msg.getAction()); switch (event) { case NODE_CONNECTING: if( nodeName.isInvalid()) Utils.log("Nieprawidłowa nazwa węzła, ignorowanie..."); else{ String existingNodeAddress = _nodeNameAddressMap.get(nazwawęzła); if( existingNodeAddress != null) Utils.log("Adres węzła dla '" + nodeName + "' zaktualizowany"); else Utils.log("Nowy węzeł '" + nodeName + "' podłączony"); _nazwaWęzłaAdresMap.put(NazwaWęzła, AdresWęzła); } } Oto ten sam fragment kodu bez fluff, chociaż ta wersja może łatwo ulec awarii, jeśli zostanie pobrana złych danych, ale w przeciwnym razie skompiluje się i będzie działać poprawnie: NodeEvent event = NodeEvent.valueOf(msg.getAction()); switch (zdarzenie) { case NODE_CONNECTING: _nazwaWęzłaAdresMap.put(NazwaWęzła, AdresWęzła); Czysta wersja jest oczywiście łatwiejsza do odczytania, ale jest krucha. Wersja gadatliwa jest bezpieczniejsza, po prostu wygląda na zagraconą. Jestem po prostu ciekawa, czy bardziej efektywne jest dla projektów społecznych, aby uzyskać czystsze spojrzenie kosztem kruchości, pozwalając tym, którzy rozwidlają projekt, wypełnić puste miejsca. Szybki przegląd projektów github i jasne, że większość wybiera czysty wygląd.


title: Symulacja mikroekonomiczna: koordynacja/planowanie pomiędzy zainteresowanymi agentami handlowymi

text: W typowej grze strategicznej opartej na doskonałej informacji, takiej jak Chess, agent może obliczyć swój najlepszy ruch, przeszukując drzewo stanów w celu znalezienia najlepszego możliwego ruchu, zakładając, że przeciwnik również wykona najlepszy możliwy ruch (tj. Mini-max). Chciałbym zastosować to podejście w „grze” modelującej działalność gospodarczą, gdzie możliwymi „ruchami” byłoby kupno lub sprzedaż za daną cenę, a cel, a nie konkretna klasa stanów (np. mat) być maksymalizacja jakiejś funkcji F stanu agenta (np. F(pieniądze, widżet) = 10*pieniądze + widżet). Jak radzić sobie z akcjami kupna/sprzedaży, które wymagają koordynacji między obiema stronami, przynajmniej uzgodnienia ceny? Tanim wyjściem byłoby wcześniejsze ustalenie ceny, być może w oparciu o bieżącą podaż – ale ideą tej symulacji jest zbadanie, w jaki sposób ceny powstają, gdy są swobodnie określane przez „doskonale racjonalne” podmioty. Świetnym przykładem tego, czego _nie_ chcę, jest algorytm handlowy w SugarScape – parafrazując z _Rozwijanie sztucznych społeczeństw_ s.101-102: > kiedy para agentów wchodzi w interakcję w celu handlu, każdy z nich oblicza swoje wewnętrzne > wyceny towarów, a następnie negocjacje prowadzony jest proces i ustalana jest > cena. Jeśli ta cena poprawia sytuację obu agentów, > kończą transakcję Sam protokół jest piękny, ale to, czego nie może uchwycić (o ile wiem) to zdolność agenta do zapłacenia więcej niż w innym przypadku za dobro, ponieważ wie, że może go sprzedać za jeszcze więcej w późniejszym terminie – co wydaje się być nazywane „myśleniem strategicznym” w tym artykule w Google Books Multi-Agent-Based Simulation III: 4th International Workshop, MABS 2003... do uzyskać takie realistyczne zachowanie, wydaje się, że należałoby albo (1) zbudować niezwykle skomplikowany wewnętrzny system wyceny, który w najlepszym przypadku mógłby obejmować tylko sytuacje, które zostały zaplanowane w czasie kompilacji, albo w przeciwnym razie (2) dysponować pewnym mechanizmem wyszukiwania drzewo stanów... które wymagałoby pewnego sposobu planowania przyszłych transakcji. Uwaga: Analogia szachowa działa tylko w zakresie przeszukiwania przestrzeni stanów; symulacja nie ma być „suma zerową”, więc dosłowne wyszukiwanie mini-maks nie byłoby odpowiednie – a najlepiej, powinno działać z więcej niż dwoma agentami.


title: Jak zmienić bibliotekę open source na własny użytek?

text: Programuję w Objective-C. Chcę dołączyć do mojego projektu bibliotekę aparatu DLCImagePicker. Jest zmienna, którą muszę zmienić, ale jest prywatna i nie mam do niej dostępu. Wymyśliłem kilka sposobów na obejście tego, ale nie jestem pewien, jak to zrobić najlepiej. 1. Mogę po prostu skopiować kod do własnej klasy i zmienić zmienną. 2. Mogę to zmienić bezpośrednio w oryginalnych zajęciach. Jednak dołączyłem ten kod jako podmoduł git i myślę, że dotykanie kodu źródłowego jest w tym przypadku złym pomysłem i ogólnie. 3. Podklasy. Nie wyobrażam sobie, jak to działa, ponieważ zmienna jest prywatna. 4. Mogę wykonać jakąś akcję za pomocą git, która stworzyłaby mój własny widelec/gałąź projektu i tam go zmienić. Nigdy tego nie robiłem i jestem bardzo prymitywny z gitem.


title: Coś takiego jak LinqPad dla C/C++?

text: Uwielbiam LinqPad nie tylko za Linq, ale także za różne typy prostych opcji kompilacji, które zapewnia, takie jak pojedyncze wyrażenia, instrukcje i programy dla C# i VB. Czy ktoś wie coś podobnego do C/C++?


title: wywołanie metody abstrakcyjnej w klasie abstrakcyjnej

text: Załóżmy, że mam abstrakcyjną klasę bazową Parent, która definiuje abstrakcyjną Metodę A(jakiś parametr) przyjmującą parametr, a także definiuje instancję Metody B, która wywołuje metodę A(parametr) wewnątrz swojego ciała i przekazuje jakiś parametr. klasa B, która rozszerza klasę bazową i zapewnia własną implementację metody A przy użyciu przekazywania parametrów. Widziałem wiele implementacji tej praktyki we frameworkach. Chcę wiedzieć, jak to działa i czy przynosi jakieś korzyści. Oto kod napisany w publicznej klasie abstrakcyjnej Androida ParentActivity extends Activity { public abstract void onResume(LoginToken token); @Zastąp chronione void onCreate(Bundle protectedInstanceState) { super.onCreate(savedInstanceState); Jakiś kod implementacji } @Override public void onResume() { super.onResume(); Jakiś kod implementacyjny onResume(token); } } public class ChildActivity extends ParentActivity{ LoginToken token; @Zastąp chronione void onCreate(Bundle protectedInstanceState) { super.onCreate(savedInstanceState); Jakiś kod implementacji } @Override public void onResume() { Jakiś kod implementacji super.onResume(); } @Override public void onResume(LoginToken token) { this.token=token; } }


title: Kiedy importować nazwy do globalnej przestrzeni nazw? (za pomocą x::y, z x importuj y itp.)

text: Od około 10 lat zajmuję się programowaniem w różnych językach. I nadal nie wiem, kiedy warto zaimportować coś do globalnej przestrzeni nazw (`używając x::y` w C++, `from x import y` w Pythonie itp.), więc prawie nigdy tego nie robię . Prawie zawsze wydaje mi się to złym pomysłem, choćby dlatego, że ogranicza zestaw nazw zmiennych, których mogę użyć. Na przykład: Tam, gdzie używam `używając przestrzeni nazw std;` lub `używając std::string;`w C++, nie mogę już używać `string` jako nazwy zmiennej, co czasami robię (np. dla funkcji narzędziowych ciągów) . Ale zastanawiam się: czy są sytuacje, w których importowanie nazwy do globalnej przestrzeni nazw naprawdę ma sens? Jakieś ogólne zasady?


title: Czy źle jest umieszczać "dyrektywę dołączania" w ramach funkcji głównej?

text: Zawsze mówi się, że dyrektywa „include” powinna być umieszczona na początku skryptu. Głównym powodem jest udostępnienie funkcji w całym skrypcie. Niezależnie od tego, czy źle jest umieszczać „dyrektywę include” w funkcji głównej tam, gdzie jest ona potrzebna? Na przykład #include <stdio.h> int main() { #include <mysql.h> } Zamiast #include <mysql.h> #include <stdio.h> int main() { } Nie mogłem znaleźć różni się wydajnością lub rozmiarem skompilowanego pliku, ale trudno ocenić ten fakt na podstawie prostych skryptów. Zastanawiam się, czy ma to jakiś skutek lub wadę, lub jakikolwiek powód, aby unikać tego niestandardowego podejścia.


title: Co to jest zachowanie zmiennych globalnych zmiennych w bibliotekach dołączanych dynamicznie?

text: Gdy dynamicznie połączona biblioteka zawiera globalną zmienną zmienną, taką jak kontener stanu zainicjowany podczas ładowania biblioteki, jak zachowują się odwołania do tej zmiennej podczas uruchamiania aplikacji, która łączy się z nią? Oczywiście aplikacja nie może zmienić pamięci przydzielonej do dynamicznie dołączanej biblioteki przez system operacyjny, ponieważ miałoby to wpływ na inne aplikacje korzystające z niej, więc należy założyć, że odniesienia do globalnych zmiennych zmiennych są przepisywane tak, aby odnosiły się do jakiegoś obszaru pamięci R/W własnością aplikacji. Ale dokładnie w jaki sposób kompilator i linker współpracują, aby to osiągnąć?