title: Czy programiści są złymi testerami?

text: Wiem, że brzmi to podobnie do innych pytań, które już zadano, ale w rzeczywistości jest nieco inny. Wydaje się, że ogólnie uważa się, że programiści nie są dobrzy w wykonywaniu roli testowania aplikacji. Na przykład: Joel on Software – pięć najważniejszych (błędnych) powodów, dla których nie masz testerów (podkreślenie moje) > Nawet nie myśl o próbie poinformowania absolwentów CS, że mogą przyjść > pracować dla ciebie, ale „wszyscy muszą zrób krótki okres w QA przed > przejściem do kodu". Dużo tego widziałem. **Programiści nie są dobrymi > testerami** , a stracisz dobrego programistę, którego o wiele trudniej jest > zastąpić. I w tym pytaniu jedna z najpopularniejszych odpowiedzi brzmi (znowu moje podkreślenie): > Deweloperzy mogą być testerami, ale nie powinni być testerami. **Programiści mają tendencję > do niezamierzonego/podświadomie unikania używania aplikacji w sposób > mogący ją zepsuć.** Dzieje się tak dlatego, że napisali ją i przeważnie testują ją w sposób >, w jaki powinna być używana. Więc pytanie brzmi _czy programiści są źli w testowaniu?_ Jakie dowody lub argumenty są na poparcie tego wniosku? Czy programiści są źli tylko w testowaniu własnego kodu? Czy istnieją dowody sugerujące, że programiści są rzeczywiście _dobrzy_ w testowaniu? Co rozumiem przez „testowanie”? _Nie_ mam na myśli testów jednostkowych lub czegokolwiek, co jest uważane za część metodologii stosowanej przez zespół programistyczny do pisania oprogramowania. Mam na myśli pewien rodzaj metody zapewniania jakości, która jest używana po zbudowaniu kodu i wdrożeniu go do tego, co zespół programistyczny nazwałby „środowiskiem testowym”.


title: Zasoby szkoleniowe lub pomysły dla bardzo małego zespołu bez dedykowanej osoby lub zespołu ds. kontroli jakości

text: Mam bardzo mały zespół programistów składający się z 3 programistów, który ma zerowych pracowników ds. kontroli jakości. Chcielibyśmy zatrudnić osobę do kontroli jakości, ale obecnie nie możemy tego zrobić. Dopóki nie zatrudnimy osoby z odpowiednim przeszkoleniem w zakresie kontroli jakości, będziemy musieli testować nawzajem swoją pracę. Chciałbym usłyszeć od każdego, kto to robił, jak odbywa się taki trening. Jestem doświadczonym programistą i szanuję QA jako osobny zawód. Myślę, że nie myślę jak osoba QA, ale muszę zacząć myśleć bardziej jak osoba z QA. W przypadku braku innych osób wykonujących tę pracę, część z tego spadnie na mnie. Czy jest jakaś książka lub samouczki na temat Jak wykonać dobrą robotę w testowaniu i kontroli jakości oprogramowania, która odnosi się do idei nauczania programisty w zakresie kontroli jakości? Podobne pytanie sugeruje im, że prowadzą swój zespół za pomocą Scrum, nad którym obecnie pracujemy, ale będziemy musieli obejść się bez osoby z QA przynajmniej do czasu, gdy nasz zespół będzie mógł się zwiększyć.


title: Czy programista powinien tworzyć przypadki testowe, a następnie uruchamiać przypadki testowe?

text: Pracuję dla firmy, w której kierownik ds. rozwoju oczekuje, że programista stworzy przypadki testowe przed napisaniem jakiegokolwiek kodu. Te przypadki testowe muszą być następnie utrzymywane przez programistów. Co jakiś czas oczekuje się, że programista przejdzie przez przypadki testowe. Z tego powinieneś być w stanie wywnioskować, że dana firma jest raczej mała i nie ma **nie ma testerów**. Pochodzenie ze stanowiska architekta oprogramowania i konieczność pisania / wykonywania przypadków testowych w mojej czapce ' _tester_ ' jest pewnym szokiem dla systemu. I tak to robię, ale wydaje mi się, że jest to dość drogie ćwiczenie :) **EDYTUJ:** Wydaje mi się, że muszę tutaj rozwinąć: _nie_ mówię o testach jednostkowych, TDD itp. :) Mówię o tym trochę testowania, które robi **tester**. Po opracowaniu systemu (z moimi testami jednostkowymi / tdd / itp.) oprogramowanie przechodzi _fazę testowania_. Czy programista powinien być _tym_ testerem i deweloperem tych _przypadków testowych_? Myślę, że nieporozumienie może wynikać z faktu, że programiści zazwyczaj nie są zaangażowani w tego typu testy i dlatego zakładam, że mam na myśli _to_ testy, które wykonujemy: testy jednostkowe. Ale niestety nie. Mam nadzieję, że to wyjaśnia.


title: Czy programiści powinni być odpowiedzialni za testowanie kodu innego programisty i wykonawcy/dostawcy?

text: Pracuję (~5 lat i pierwsza praca w IT) jako programista aplikacji w dużej instytucji finansowej o ścisłej hierarchii korporacyjnej, wielu LOB-ach i mocno obciążonych procesami działach IT. Teraz jednym z aspektów tej kultury jest korzystanie z wielu zewnętrznych wykonawców i dostawców do przenoszenia starszego kodu do obecnych technologii. Jednak wewnętrzni programiści są zmuszani do testowania (czarnej skrzynki) swojego kodu. W większości przypadków ci zewnętrzni programiści nie upewniają się, że ich aplikacje działają prawidłowo, przed wydaniem kodu i czekają, aż my (wewnętrzni programiści) zbadamy problemy/zbierzemy dzienniki/zrzuty ekranu awarii/dzienników bazy danych itp. Zastanawiam się, czy ktoś inny spotkał się z taką sytuacją w swojej roli programistów w sklepach/organizacjach IT. Czy naprawdę poprawiasz się technicznie lub intelektualnie, zwłaszcza w przypadku dużych złożonych projektów, w których testowanie może trwać dłużej niż 6 miesięcy? Na przykład przeszedłem całe 7 miesięcy kontroli jakości i działałem jako niekodujący lider zespołu, myśląc, że nie powinienem zawieść zespołu. Jednak teraz widzę, że szkodzi to moim umiejętnościom kodowania.


title: Testy funkcjonalne muszą być wykonywane przez podmiot zewnętrzny, aby uniknąć stronniczości?

text: Nasi programiści wymagają, aby ktoś spoza zespołu programistów ukończył testy funkcjonalne. Ich argumentem jest to, że są stronniczy i nie mogą przetestować własnego kodu, ponieważ są zbyt blisko niego. Nasza ostatnia runda testów odbywa się z klientem w formie UAT. Dla jasności przez „testowanie funkcjonalne” mam na myśli testowanie kodu pod kątem specyfikacji, np. kiedy klikniesz „prześlij”, strona indeksu powinna się załadować. Przez UAT rozumiem, że klient wchodzi i przechodzi przez przypadki użycia w kandydacie do wydania. Rozumiem ten argument o stronniczości, ale czy rozsądne jest, aby programiści wymagali od kogoś ukończenia ich testów funkcjonalnych, czy jest to tylko sposób na uniknięcie wykonywania swojej pracy?


title: Aplikacje mobilne w Delphi

text: Wielu z nas wie, że pliki wykonywalne Delphi są trochę gigantyczne, ale znowu jest to akceptowalne, ponieważ obecnie 1,5 MB nie jest dużym problemem na PC. Ale co z urządzeniami mobilnymi? Obecnie Firemonkey obsługuje iOS, a w niedalekiej przyszłości trafi na Androida i tak dalej. Czy 4 MB pliku wykonywalnego dla urządzeń mobilnych to za dużo dla prostej aplikacji? Czy zespół Delphi spróbuje w przyszłości zmniejszyć rozmiar pliku wykonywalnego LUB czy można obejść się bez utraty większości funkcji Firemonkey?


title: Czy nauczę się więcej pracować jako freelancer lub pracować dla firmy?

text: Skończyłem szkołę około rok temu i od tego czasu pracuję jako wolny strzelec. Czasami wydaje się, że dobrym pomysłem byłoby popracować kilka lat w firmie, uczyć się od ludzi z większym doświadczeniem niż ja. Ale z drugiej strony praca na własny rachunek pozwoliła mi realizować projekty/technologie, o których chciałbym się dowiedzieć i nie mam ochoty z tego rezygnować. Jakakolwiek rada?


title: Jak rozpoznać i udokumentować naruszenie GPL?

text: Jak rozpoznać, że ktoś skopiował kod open source na licencji GPL do swojej komercyjnej aplikacji o zamkniętym kodzie źródłowym, gdy nie masz dostępu do jego zamkniętego kodu źródłowego? Edycja: świetne odpowiedzi! Część 2. Co jeśli jest to aplikacja internetowa, w której nie masz nawet dostępu do plików wykonywalnych? Scenariusz: kopiują źródła, wprowadzają drobne zmiany w interfejsie użytkownika, dzięki czemu interfejs jest prawie identyczny; dodać nową funkcję do całkowicie identycznego zaplecza; i nie zwolnij go z powrotem do open source.


title: Skuteczny sposób na znalezienie najwyższej wartości z predykatów

text: Mam predykat, który wylicza poprzez wsteczną listę wartości. Chcę znaleźć najwyższą wartość z tej listy. Na przykład: ranked_move(X,Y,R) :- between(0,10,Y), between(0,10,X), rank_move(X,Y,R). top_move(X,Y) :- % X, Y dla najwyższego R W tej chwili rozwiązałem to za pomocą `findall` i niestandardowego predykatu, który przechodzi przez listę i zapamiętuje najwyższą napotkaną wartość. Ale chciałbym wiedzieć, czy można to zrobić bez uprzedniego przekształcenia ruchów w listę. Np. wykonaj predykat wybierania bezpośrednio na `ranked_move`. Wiem o http://stackoverflow.com/questions/1701693/max-out-of-values-defined-by-prolog-clauses . Nie próbowałem tego, ale zakładam, że Prolog nie przejdzie efektywnie przez predykaty.


title: jak wnieść ten sam kod źródłowy do dwóch oddzielnych projektów open source?

text: Załóżmy, że istnieją dwa podobne projekty open source A i B, oba objęte licencją Apache Software License 2.0. Chciałbym przyczynić się do poprawy obu projektów (ponieważ nie wiem, który z nich jest lepiej zarządzany, a chciałbym, aby moja poprawa pojawiła się w obu). Czy mogę w prosty sposób wnieść to ulepszenie do obu projektów? (Jednym z oczywistych podejść jest uruchomienie projektu open source C na licencji Apache 2.0, ale jest to ból głowy z różnych powodów; nie chcę sam utrzymywać projektu)


title: Jaka jest właściwa reakcja na kiepski komunikat o błędzie?

text: Właśnie natknąłem się (po raz 47 milionowy) na kod, który wygląda tak: z wyjątkiem IOError, e: print "Problemy z odczytem pliku: %s." % filename sys.exit( 1 ) Moja pierwsza reakcja jest bardzo instynktowna: osoba, która to zakodowała, jest kompletnym idiotą. Jak trudno jest wydrukować komunikaty o błędach na stderr i dołączyć komunikat o błędzie systemu do ciągu znaków? Z pewnością bywało tak, że w przypadku prostych programów (filtry wiersza poleceń) najlepszą praktyką było drukowanie komunikatów o błędach na stderr i (w stosownych przypadkach) uwzględnienie błędu systemowego w komunikacie. Bardzo duży odsetek programistów nie przestrzega już tych zasad. Wiele pytań w formie „jakie są najlepsze praktyki dotyczące komunikatów o błędach” zawiera odpowiedzi na temat masowych struktur rejestrowania i mechanizmów obsługi wyjątków, które nie mają zastosowania do prostego filtru. Czy zmieniły się najlepsze praktyki? czy też niepowodzenie dołączania komunikatów o błędach systemu i drukowania komunikatów o błędach do niewłaściwego strumienia jest oznaką nowicjusza?


title: Jest rok 2011 – dlaczego nadal muszę używać tabel do poczty e-mail?

text: To może wydawać się tyradą, ale jestem ciekawa. CSS już dawno zastąpił tabele dla układu. Ale nadal musimy używać tabel do układu podczas tworzenia bogatych wiadomości e-mail. Dlaczego to? Są jakieś inne opcje? Czy naprawdę istnieją ograniczenia techniczne, które uniemożliwiają działanie CSS w wiadomości e-mail? Czym oni są? Widzę, jaki problem mogą stanowić połączone lub osadzone arkusze stylów, ale nawet wbudowane style nie działają. Czy to się kiedykolwiek zmieni?


title: Jak byś TDD funkcjonalność uzyskania odpowiedniego procesu działającej usługi Windows?

text: ## Cel W ciągu ostatniego roku lub więcej uczyłem się testowania jednostkowego poprzez książki, które ostatnio czytałem, takie jak _Sztuka testowania jednostkowego_ , _Efektywna praca z Legacy Code_ i inne. Od czasu do czasu w pracy korzystam również z testów jednostkowych, frameworków mockingowych i tym podobnych i zdecydowanie widzę wartość. Jednak wciąż mam trudności z ogarnięciem mojego umysłu wokół TDD (w przeciwieństwie do TAD), gdy sytuacja wymaga kodu, który będzie głównie używał zewnętrznych wywołań API. ## Problem do rozwiązania Pobierz proces związany z usługą Windows przy użyciu nazwy usługi. przykład: `Function GetProcess(ByVal serviceName As String) As Process` ## Reguły * Pokaż każdą główną iterację w kodzie produkcyjnym i testowym za pomocą TDD * Nie ma potrzeby wyświetlania żadnego innego kodu lub konfiguracji wymaganej do uruchomienia rzeczy. Po prostu ciekawy interfejsów, konkretnych klas i metod testowych. * C# lub VB.NET * Musi używać frameworka .Net w odniesieniu do usług/procesów (np. `System.Diagnostics.Process`) * Ramy testowe: * Nunit lub MSTest * Ramy izolacyjne: * Moq, Rhino Mock lub Microsoft Moles * Musi napisz prawdziwe testy jednostkowe (bez testów integracyjnych) ## Dodatkowe uwagi O ile wiem, istnieją dwa podejścia do projektowania. 1. Użyj podejścia Inversion of Control wraz z użyciem wzorców Adaptera i/lub Fasady, aby otoczyć leżące poniżej obiekty .net framework związane z procesami i usługami. 2. Zachowaj kod .net framework w klasie zawierającej metodę Get Process i użyj objazdu kodu (przechwycenia) przez Microsoft Moles, aby odizolować twarde zależności od testowanej metody.


title: Jak używać pustych wierszy w kodzie?

text: Pojawiło się kilka uwag o białych znakach już w dyskusji na temat rozmieszczenia nawiasów klamrowych. Sam mam tendencję do posypywania mojego kodu pustymi liniami, próbując oddzielić rzeczy, które łączą się w „logiczne” grupy i mam nadzieję, że ułatwi to kolejnej osobie przeczytanie kodu, który właśnie stworzyłem. W rzeczywistości powiedziałbym, że strukturyzuję swój kod tak, jak piszę: tworzę akapity, nie dłuższe niż kilka linii (zdecydowanie krótsze niż 10) i staram się, aby każdy akapit był samowystarczalny. Na przykład: * w klasie pogrupuję metody, które do siebie pasują, oddzielając je pustą linią od następnej grupy. * jeśli muszę napisać komentarz, zwykle stawiam pustą linię przed komentarzem * w metodzie robię jeden akapit na krok procesu W sumie rzadko mam więcej niż 4/5 linii zgrupowanych razem, co oznacza bardzo rzadki kod. Nie uważam całej tej białej przestrzeni za marnotrawstwo, ponieważ faktycznie używam jej do strukturyzowania kodu (w rzeczywistości używam wcięcia), dlatego uważam, że jest to warte całej wielkości ekranu, jaką zajmuje. Na przykład: for (int i = 0; i < 10; ++i) { if (i % 3 == 0) kontynuuj; tablica[i] += 2; } Uważam, że te dwa stwierdzenia mają wyraźnie odrębne cele i dlatego zasługują na rozdzielenie, aby było to oczywiste. Jak więc używać (lub nie) pustych linii w kodzie?


title: Jak aktualny jest test Joela?

text: Chcę przekonać moich partnerów, że powinniśmy mieć specyfikację i że błędy powinny zostać naprawione przed napisaniem nowego kodu. Czy powinienem odwołać się do testu Joela? Czy uważasz, że test Joela jest aktualny? Myślę, że brak specyfikacji to złe zarządzanie projektem. Czy zgadzasz się z testem Joela? Czy mógłbyś coś dodać? Nie wspomina na przykład o Open Source.


title: Czy złą praktyką jest aktualizowanie obiektu metodą statyczną?

text: Nadal uczę się .net i OOP i mam nadzieję, że mam podstawowe pytanie. To jest aplikacja asp.net mvc. Patrząc na poniższy kod, najbardziej interesuje mnie wiersz w CheckShippingVendor, który mówi ValidateDelivery(shipmentItem). Czy można przekazać obiekt jako parametr i zlecić aktualizację tego elementu przez prywatną metodę statyczną. Kiedy przeprowadziłem refaktoryzację metody wyodrębniania resharpera, właśnie to zrobił dla mnie. Klasa jest inicjowana i wywołuje metodę CheckShippingVendor: var packageStatus = _inventoryService.CheckShippingVendor(shipmentId, shippingFile); Oto reszta kodu: public PackageStatus CheckShippingVendor(string shippingId, mvFile shippingFile) { var packageStatus = new PackageStatus(); using (var shippingItem = shippingFile.Read(shipmentId)) { ValidateDelivery(shipmentItem); shippingFile.Write(shipmentId, przesyłkaItem); } zwróć status pakietu; } private static void ValidateDelivery(mvItem shippingItem) { int wysłany; var installedResult = Int32.TryParse(shipmentItem[1].ToString(), wysłane); if (!shippedResult) return; dostarczone; var dostarczonyResult = Int32.TryParse(shipmentItem[57].ToString(), dostarczony); if (!deliveredResult) return; shippingItem.Message = "W TYM CZASIE BRAK INFORMACJI"; }


Zrobiłem wiele prac programistycznych w Javie przy użyciu Eclipse, a teraz zacząłem używać Visual Studio do programowania .NET. Jak dotąd uważam, że IDE mogą robić te same rzeczy, ale po prostu inne. Jakie funkcje w środowisku Eclipse nie są dostępne w programie Visual Studio?


title: Czy algorytm jest ważniejszy niż język programowania?

text: Podczas obecnego (2013) konkursu Google Code Jam pojawił się problem, który zabrał ludziom C++ i Javy 200+ linijek kodu w porównaniu do ludzi z Pythona, którzy rozwiązali ten sam problem używając tylko 40 linijek kodu. Python nie jest bezpośrednio porównywalny z C++ i Javą, ale wydawało mi się, że różnica w szczegółowości może mieć wpływ na wydajność algorytmu. Jak ważna jest znajomość właściwego algorytmu w porównaniu z wyborem języka? Czy znakomicie zaimplementowany program w Pythonie mógłby zostać zaimplementowany w C++ lub Javie w lepszy sposób (przy użyciu tego samego algorytmu) i czy ma to jakiś związek z naturalną gadatliwością niektórych języków programowania?


title: Jak w programowaniu funkcjonalnym osiągnąć modułowość poprzez prawa matematyczne?

text: W tym pytaniu przeczytałem, że programiści funkcjonalni mają tendencję do używania dowodów matematycznych, aby upewnić się, że ich program działa poprawnie. Brzmi to o wiele łatwiej i szybciej niż testowanie jednostkowe, ale wywodząc się z tła OOP / testowania jednostkowego, nigdy tego nie widziałem. Czy możesz mi to wyjaśnić i podać przykład?


title: Aplikacje debugujące

text: W moim obecnym rozwoju postanowiłem pozostawić otwarty wiersz poleceń, aby móc wyświetlać komunikaty debugowania. Na przykład, jeśli coś nie działo się wtedy, gdy powinno, umieściłbym instrukcję cout przy każdej funkcji, aby określić, gdzie znajduje się uszkodzony link. Czasami mogę otrzymać setki tych samych wiadomości (takich jak WM_MOUSEMOVE) i muszę ustalić, czy wiadomości nadal nadchodzą, więc używałbym zmiennej statycznej i zwiększał ją, więc mógłbym mieć: ... 3> Przetworzono WM_MOUSEMOVE. 4> Przetworzono WM_MOUSEMOVE. 54> WM_CLICK przetworzone. 5> Przetworzono WM_MOUSEMOVE. ... w moim cmd. (Nie pytaj mnie, dlaczego byłoby 54 WM_CLICK i 4 WM_MOUSEMOVE) Chciałbym poznać Twoją opinię. Czy to dobre podejście do debugowania? Jakiej składni użyjesz do zachowania spójności? Czy składnia ma znaczenie? I czy mógłbyś coś zasugerować, jak tę metodę można ulepszyć.


title: Jak dostać się do badań i rozwoju?

text: Zaczynam myśleć, że najlepiej pasowałabym do pracy w R&D. Powodem jest to, że lubię prace, które pozwalają mi być kreatywnym i ogólnie bardziej interesuje mnie rozwiązywanie zagadek niż budowanie rzeczy. Naprawdę nie lubię prac, które sprowadzają się do tłumaczenia wymagań na kod. Oto kicker: nie mam licencjata, a tym bardziej magistra lub doktora. Czy mogę dostać taką pracę?


title: W jaki sposób popierasz/wspierasz projekt kodu, który uważasz za pomocny?

text: W jaki sposób popierasz/wspierasz projekt kodu, który uważasz za pomocny, niezależnie od tego, czy jest to już założony, wschodzący, czy dopiero raczkujący? Myślę, że jest kilka oczywistych odpowiedzi, ale miejmy nadzieję, że pojawią się też nowe sugestie.


title: Czy legalne jest rozpowszechnianie pliku binarnego na licencji GPLv3 za pośrednictwem sklepu z aplikacjami Apple?

text: Napisałem małą multiplatformową aplikację i rozważam opublikowanie wersji osx w sklepie Apple. Licencjonowałem aplikację na licencji GPLv3. Trochę podoba mi się licencja GPLv3, ale lubię też łatwość Apple Store. Martwię się wymogiem GPL "wolności rozpowszechniania kopii" - który wydaje się być niezgodny z polityką sklepu Apple (myślę, że istnieje linia, która mówi, że pliki do pobrania są przeznaczone wyłącznie do użytku osobistego). Czy to uzasadniona obawa? Czy mogę spełnić wymagania GPL, rozpowszechniając plik binarny osx w tym samym miejscu co źródło, skoro nie mogę tego zrobić w sklepie Apple? A może jest to zabronione przez politykę sklepu Apple (wydaje się, że oprogramowanie Apple Store powinno być pobierane tylko z Apple Store)? **edytuj** Przez Apple Store mam na myśli Mac App Store (gpl nie jest kompatybilny z App Store iPhone'a). **edycja 2** Do zaakceptowanej odpowiedzi dodaję dobre wyjaśnienie z komentarzy Abhi Beckert: > Jeśli więc sam napisałeś cały kod, to robisz co chcesz > wliczając w to publikowanie go na Mac/iPhone App Store. Jeśli nie napisałeś wszystkich > kodu, potrzebujesz pozwolenia od każdego, kto kiedykolwiek napisał choć jedną linijkę. > Wszystkie ściągnięte aplikacje na licencji GPL zostały ściągnięte, ponieważ jeden (lub > więcej) programistów zażądał ich usunięcia. Kiedy to się stanie, > Apple musi go wycofać, w przeciwnym razie zostanie im postawiony zarzut karny. W praktyce: usuń wszystkie zestawy zmian rtęci, które nie należą do Ciebie, i spraw, aby program działał później (lub poproś o zgodę osobę, która napisała zestaw zmian).


title: Czy powinienem przyjąć pracę, jeśli wymagane jest programowanie w parach?

text: Zaproponowano mi ciekawą pracę, ale jest dla mnie duże zastrzeżenie: używają programowania w parach. Nienawidzę pomysłu programowania w parach i chyba mi się do tego nie nadaje: lubię robić częste przerwy, nie znoszę widzieć, jak ktoś programuje (stale odkładałbym parę, żeby sam kodować), muszę być w pełni sterowanie maszyną, na której pracuję, lubię pracować przy słuchaniu muzyki iw zasadzie nie lubię być przywiązany do kogoś innego. Nie jestem nawet osobą towarzyską. Jednak nigdy nie pracowałem z prawdziwym programowaniem w parach (oprócz kilku razy przez krótki czas, aby pomóc komuś innemu lub wspólnie rozwiązać złożone zadanie) ... więc czy programowanie w parach jest naprawdę takie złe? A biorąc pod uwagę moje nastawienie, czy powinienem odmówić pracy, czy powinienem zostawić obecną i spróbować? * * * Dla osób, które o to pytały: szukam pracy, w której używa się formalnego projektowania i rozwoju, ponieważ nienawidzę mojej obecnej pracy, w której "kodujemy na wolności". Firma jest bardzo zainteresowana moim profilem technicznym, więc nalegali, nawet gdy określiłem, że nigdy nie pracowałem z programowaniem w parach i że prawdopodobnie by mi się to nie podobało (poza tym, że jestem nietowarzyskim programistą samotnikiem, nie lubię i wierzę w samą koncepcję programowanie par).


title: Właściwy sposób strukturyzowania JSON pod kątem wykorzystania front-end

text: Pracując nad kilkoma różnymi bazami kodu aplikacji internetowych, zauważyłem pewne rozbieżności w sposobie, w jaki back-endy obsługujące JSON do front-endów strukturyzują te dane. W szczególności, gdy backend chce zwrócić kilka obiektów o tej samej strukturze. Czy po prostu pakujesz wszystkie obiekty w tablicę? A co z „kluczem” pierwszej tablicy? Co to powinno być? Załóżmy na przykład, że mój backend chce zwrócić pewną liczbę elementów „obrazu”. Każdy element obrazu ma następującą strukturę: { "id" : 123, "filename" : "jakiśPlik.jpg", "caption" : "jakiś obraz lub inny", "galeria" : 123 } elementy prawidłowo do konsumpcji przez front-end javascript?


title: Wyjaśnienie dotyczące polimorfizmu / dziedziczenia

text: Staram się lepiej rozumieć polimorfizm. Powiedzmy, że mam klasę bazową o nazwie `baseClass` z jedną metodą o nazwie `foo()` i mam trzy klasy pochodne o nazwach `derived1` , `derived2` i `derived3` które nadpisują i implementują własne wersje `foo ()` metoda. Jeśli mam tablicę obiektów `baseClass` może ona zawierać obiekty, które pochodzą z tej klasy bazowej, jak na przykład: baseClassArray: [ basedObj1, originObj2, originObj3]; Również jeśli wyciągnę obiekt z tej tablicy i wywołam metodę `foo()`, czy wywoła to metodę zdefiniowaną w baseClass czy metodę zdefiniowaną w odpowiedniej klasie pochodnej? Czy to zależy od języka programowania, w którym jest zaimplementowany?


title: Na co należy zwrócić uwagę wybierając międzyplatformową bibliotekę GUI C++?

text: Jako uczący się programista C++ staram się wybrać framework lub bibliotekę GUI do własnych projektów. Mam pewne doświadczenie z Qt: jest bardzo proste, ma bardzo dobrą dokumentację i dostarcza wiele narzędzi, ale wydaje się, że duplikuje wiele standardowej biblioteki. Czy wszystkie biblioteki GUI C++ są takie? Czego powinienem szukać w bibliotece GUI? Jak określić, który z nich byłby najlepszy dla danego problemu? Czy powinienem skupić się na jednej konkretnej bibliotece, czy warto znać kilka z nich, ponieważ mogą służyć różnym celom?


title: Czy big-O naprawdę ma znaczenie w pracy w przemyśle?

text: W każdym wywiadzie, w którym brałem udział, byłem pytany o matematyczną analizę złożoności, w tym notację big-O. Moje pytanie brzmi, jak istotny jest ten test dla rozwoju w przemyśle? Jak często go używasz i jak potrzebne jest wyostrzone nastawienie na ten problem?


title: Rozważania dotyczące projektowania schematu JSON dla skalarów ze spójną właściwością załącznika

text: Próbuję utworzyć schemat JSON dla wyników wykonywania analizy statystycznej na podstawie różnych fragmentów danych. Obecny schemat, który mam, wygląda mniej więcej tak: { // Podstawowe informacje o kluczu. video : „http://www.youtube.com/watch?v=7uwfjpfK0jo”, start : „00:00:00”, end : null, // Aby wypełnić wyniki analizy: // *** Tutaj robi się interesująca *** analiza : { gra : { wartość: "Super Street Fighter 4: Arcade Edition Ver. 2012", pewność: 0,9725 } drużyny : [ { gracz : { wartość : "Biurko", pewność: 0,95 , } znaki : [ { wartość : "Hakan", pewność: 0,80 } ] } ] } } Problemem są krotki używane do przechowywania wartości i ufność związana z tą wartością (np. `{ wartość : "jakaś wartość" , ufność : 0,85 }`), wypełniane po wynikach analizy. Prowadzi to do pełzania tej krotki dla każdej wartości. Weź w pełni rozwiniętą wartość z tablicy `characters`: { nazwa : { wartość : "Hakan", zaufanie: 0,80 } ultra : { wartość: 1, pewność: 0,90 } } W miarę jak struktury reprezentujące wartości stają się coraz bardziej i bardziej szczegółowe (i przeprowadza się na nich więcej analiz, aby spróbować określić wiarygodność tej analizy), zagnieżdżenie krotek dodaje dużo szumu do ogólnej struktury, biorąc pod uwagę, że ostateczny wynik (po zweryfikowaniu) będzie następujący: { name : "Hakan", ultra : 1 } (I pamiętaj, że to tylko zagnieżdżona wartość) W .NET (w którym będę używał do pracy z tymi danymi) miałbym małego pomocnika w postaci: public class UnknownValue<T> { T Value { get; ustawić; } podwójny? Zaufanie { zdobądź; ustawić; } } Którego następnie użyłbym w ten sposób: public class Character { public UnknownValue<Character> Name { get; ustawić; } } Chociaż taka sama jak reprezentacja JSON _w kodzie_ , nie ma tego samego pełzania, ponieważ nie muszę przedefiniowywać krotki za każdym razem, a akcesory właściwości ukrywają wygląd pełzania. Oczywiście jest to porównanie jabłek do pomarańczy, powyższe to _kod_, podczas gdy JSON to _dane_. Czy istnieje bardziej sformalizowany/czystszy/najlepszy sposób na przechowywanie pełzania tych krotek w JSON, czy też podejście powyżej akceptowanego podejścia do typu danych, które próbuję przechowywać (i po prostu postrzegam to źle droga)? Zauważ, że jest to reprezentowane w JSON, ponieważ ostatecznie trafi do bazy danych dokumentów (coś jak RavenDB lub elasticsearch). _Nie_ niepokoi mnie możliwość serializacji do powyższego obiektu, ponieważ zawsze mogę używać obiektów przesyłania danych, aby ułatwić pobieranie danych do/z mojego bazowego magazynu danych.


title: Konfiguracja klienta serwera API

text: Załóżmy, że masz konfigurację, w której znajduje się serwer API, a cała interakcja obraca się wokół interfejsu API. Istnieją komponenty administracyjne, publiczne i zewnętrzne, które współdziałają z serwerem API. Załóżmy, że mamy model e-commerce, komponenty mają następujące możliwości: Admin – możliwość zarządzania produktami, zamówieniami i informacjami o klientach Public – możliwość zarządzania informacjami o klientach i zamówieniach należących do użytkownika Third Party – możliwość pobierania listy produktów , przeglądaj zamówienia - twórz zamówienia w imieniu użytkownika (co oznacza, że musisz mieć autoryzację od użytkownika) - przeglądaj informacje o kliencie (potrzebna autoryzacja od użytkownika) Moje obawy dotyczą autoryzacji. Znam sposób obsługi strony trzeciej za pośrednictwem przepływu pracy OAuth. Ale myliłem się z komponentami Admin i Public. Wspomniane dwa komponenty wydają się nie pasować do przepływu pracy OAuth, gdzie zazwyczaj występują 3 podmioty: serwer, konsument i użytkownik. Na przykład w przypadku komponentu publicznego jest to aplikacja skierowana do przodu, w której użytkownicy mogą zarządzać swoimi profilami, zamawiać i przeglądać produkty. Czy będziemy traktować ten komponent jako szczególny z punktu widzenia autoryzacji API. To samo dotyczy komponentu administracyjnego, który oferuje możliwość zarządzania prawie wszystkimi aspektami aplikacji, nawet ustawianiem kluczy API. Podobnie jak Facebook, Twitter itp. Oferują API. Ale czy wewnętrznie komunikują się również za pomocą jakiegoś API? Czy te podstawowe komponenty (UI dla administratora i publicznego) NIE powinny być w pierwszej kolejności oddzielone od serwera API?


title: Jak działa system licytacji reklam na Facebooku

text: Kiedy tworzysz reklamę na Facebooku, otrzymujesz zakres „ _sugerowanej stawki_ ” (np. 0,90 USD – 2,15 USD). Zgodnie z treścią tej strony: > Sugerowany zakres stawek ma pomóc w wyborze maksymalnej stawki, aby reklama > odniosła sukces. Opiera się na tym, ilu innych reklamodawców konkuruje > o wyświetlanie swoich reklam tym samym odbiorcom co Ty. Interesuje mnie zrozumienie, co tak naprawdę dzieje się (technicznie) pod maską. Powiedzmy, że użytkownik loguje się na Facebooku. Po stronie serwera obsługiwane jest żądanie HTTP wysłane przez przeglądarkę użytkownika (w ramach logowania), a serwer musi ustalić, którą reklamę wyświetlić użytkownikowi. _przypuszczam_, że w tym momencie w grę wchodzi system „licytacji”? Załóżmy, że w oparciu o dane demograficzne tego użytkownika i w oparciu o grupy docelowe, z którymi kilku konkurujących reklamodawców zaprojektowało swoją kampanię, załóżmy, że Facebook widzi pulę 20 różnych reklam, które może zwrócić. W jaki sposób ten system licytacji pomaga Facebookowi określić, które z 20 reklam zwraca po stronie klienta? Domyślam się, że reklamodawcy, którzy „licytują więcej”, mają pierwszeństwo przed tymi, którzy „oferują mniej”. Ale kiedy odbywa się ta licytacja? Jak często reklamodawca musi ponownie licytować? Jak długo obowiązuje oferta? Kiedy zrozumiem te koncepcje związane z użytkowaniem reklam, będzie prawdopodobnie oczywiste, które z poniższych „strategii wyboru” używa backend: * Round robin * Priorytetowy round robin * Randomizowany (wątpliwy) * Oparty na historii * Oparty na MVP Dziękuję każdemu, kto może mi pomóc wskazać właściwy kierunek i wyjaśnić, czym są te sugerowane systemy ofertowania i jak działają.


title: Czy przedwczesna optymalizacja naprawdę jest źródłem wszelkiego zła?

text: Mój kolega dzisiaj popełnił klasę o nazwie ThreadLocalFormat, która zasadniczo przeniosła instancje klas Java Format do lokalnego wątku, ponieważ nie są one bezpieczne dla wątków i „stosunkowo drogie” w tworzeniu. Napisałem szybki test i obliczyłem, że mogę stworzyć 200 000 instancji na sekundę, zapytałem go, czy stworzył tyle, na co odpowiedział „nigdzie w pobliżu tylu”. Jest świetnym programistą i wszyscy w zespole są wysoko wykwalifikowani, więc nie mamy problemu ze zrozumieniem powstałego kodu, ale najwyraźniej był to przypadek optymalizacji tam, gdzie nie ma rzeczywistej potrzeby. Wycofał kod na moją prośbę. Co myślisz? Czy to przypadek „przedwczesnej optymalizacji” i jak bardzo jest zła?


title: Jakie jest najlepsze oprogramowanie do tworzenia społeczności sieci społecznościowych za pomocą oprogramowania CMS?

text: Proszę spojrzeć na kilka opcji wymienionych w następującym łączu: http://www.allwebdesignresources.com/webdesignblogs/graphics/best-software-to-create-a-social-networking-community-with-cms-software/ Interesuje mnie idea "platform open source" (takich jak Drupal i Elgg), ale nie jestem pewien, która z nich jest najlepsza i dlaczego. Nie podoba mi się pomysł „Licencjonowanego” oprogramowania w pakietach (COTS), które niezależnie od rzekomego twierdzenia o pełnej elastyczności oferowanej przez Software House (takiego jak Social Engine), w rzeczywistości ograniczyłoby moją elastyczność w roczny koszt. Czy ktoś miał wcześniej doświadczenie z którymkolwiek z wymienionych programów? Jeśli tak, wszelkie opinie na temat ich zalet i wad będą mile widziane. Wiele tks!


title: Podstawowy przegląd projektowania zorientowanego obiektowo w PHP

text: Próbuję nauczyć się programowania obiektowego projektując prostą aplikację internetową związaną z katolickim kalendarzem liturgicznym. Mam bardzo mało sformalizowanego szkolenia z programowania, ale byłem w stanie mniej więcej skutecznie nauczyć się podstawowych pojęć programistycznych i celów/składni kilku języków. Miałem nadzieję, że otrzymam informację zwrotną na temat projektu, który opracowałem i zaimplementowałem w testach. Podstawowym przypadkiem użycia jest możliwość znalezienia szczegółów kalendarza o dowolnej dacie i godzinie zarówno za pomocą logiki aplikacji, jak i niektórych zapytań do bazy danych. Rozwinąłem takie klasy: klasa Year utwórz kilka obiektów DateTime dla ważnych ruchomych uczt na rok klasa Season extends Year utwórz kilka właściwości dla każdego sezonu liturgicznego na podstawie obiektów DateTime z Year i dodatkowej logiki aplikacji klasa Day extends Season zawiera tablicę of Hours obiektów, ponieważ dzień liturgiczny niekoniecznie jest taki sam, jak 24-godzinna klasa czasowego dnia. Godzina wydłuża się Dzień określa szczegóły godziny liturgicznej, w tym obchodzone święto i obiekty DateTime reprezentujące czas rozpoczęcia i zakończenia godziny od i „godzina” < > czasowa godzina 60 minut W tym projekcie mogę utworzyć godzinę, przekazując pojedynczy parametr ($data). The Hour musi wiedzieć, który jest sezon liturgiczny dla niektórych logiki aplikacji, więc tworzy obiekt Season na podstawie $date. Jednak obiekt Pory roku nie może zostać utworzony, dopóki nie będzie wiedział, kiedy w danym roku występują pewne ważne dni świąteczne (np. Wielkanoc określa daty rozpoczęcia i zakończenia kilku pór liturgicznych), więc tworzy obiekt Rok. Czy jest to „pożądany” wzorzec, w którym w celu utworzenia jednego pożądanego obiektu (Godzina) tworzone są dwa inne obiekty (Pora roku i Rok)? Czy „właściwe” jest rozszerzanie klas, aby odzwierciedlić hierarchiczną relację, taką jak ja (tj. największy okres czasowy jest „na górze”, po którym następuje największy jego podpodział, itd., aż do najmniejszego okresu czasowego godziny) ? Głównym celem tej aplikacji internetowej będzie wyświetlanie faktów religijnych i literatury w oparciu o aktualną godzinę liturgiczną. Tak więc Godzina jest najważniejszym elementem dla użytkownika końcowego - ale nie można tego skutecznie określić bez „większych” okresów Sezonu i Roku. Obiekt Dzień będzie używany wyłącznie do celów nawigacyjnych/informacyjnych (np. jakie są ważne wydarzenia religijne we wszystkich dzisiejszych godzinach liturgicznych?) i prawdopodobnie nie będzie zawierał w nim żadnych wydarzeń, które można podjąć. W testach stworzyłem obiekty Date na rok, co daje 2920 obiektów Godzina, Pora roku i Rok (365 * 8 dla każdego typu obiektu = 8760 wszystkich obiektów). Logika aplikacji jest poprawna i daje pożądane wyniki danych. Wydaje się jednak, że jest to niewiarygodnie duża liczba instancji obiektów dla tak prostego systemu, więc chciałbym wiedzieć, czy niewłaściwie używam obiektów, czy też całkowicie błędnie rozumiem ich przeznaczenie. Myślę, że bardziej pożądana może być możliwość stworzenia pojedynczego obiektu Year, który dawałby 13 obiektów Pory roku, do których można by następnie odwoływać się w każdej Godzinie, którą muszę utworzyć… tworząc w ten sposób tylko 2934 obiekty (2920 Godzina, 13 Pory roku i 1 rok). Wszelkie myśli będą mile widziane!


title: Projektowanie zagnieżdżonej właściwości List<Class> w klasie

text: Obecnie jestem w fazie modelowania zajęć w moim projekcie. Scenariusz z życia: Załóżmy, że mam projekt, który składa się z głównych komponentów, a każdy główny komponent składa się z podkomponentów, a każdy z podkomponentów używa wielu materiałów. Stworzyłem klasę na podstawie encji: public class Project { public List<MainComponent> MainComponents {get; set;} // inne właściwości.. } public class MainComponent { public List<SubComponent> SubComponents {get;set;} //inne właściwości.. } public class SubComponents { public List<Material> Materials {get;set;} / /inne właściwości.. } public class Material { //properties.. } Jednak będę miał trudności z uzyskaniem dostępu do materiału, ponieważ będę musiał przejść przez zagnieżdżoną pętlę „foreach” Powiedzmy, że projectAlpha jest istniejącą instancją projektu class foreach(MainComponent mainComponent in projectAlpha.MainComponents) { foreach(SubComponent subComponent in mainComponent) { foreach(Materiał w subComponent.Materials) { //zrób tu coś z materiałem.. } } } Jakie są efektywne sposoby projektowania klasy, która są oparte na jednostkach zaprojektowanych w ten sposób? (Unikanie zagnieżdżonych pętli).


title: Co to jest dekonkatenacja?

text: Słyszałem o tym wspomniałem i chciałem dowiedzieć się więcej. Istnieje w wyszukiwarkach Google, ale nie znalazłem „wprowadzenia”. Nie znalazłem również żadnych informacji w podręczniku php lub w moich zwykłych zasobach (takich jak tutaj). Szukam zwięzłej odpowiedzi i/lub linku.


title: Skąd wzięła się nazwa „psycopg”?

text: Przepraszam, jeśli nie ma tu miejsca, w którym można zapytać, ale jak na razie google, dokumentacja i strona z często zadawanymi pytaniami nie dają mi odpowiedzi.


title: Śledź wiedzę o technikach/poprawkach/obejściach

text: Staram się wprowadzić więcej struktury do mojego życia zawodowego, starając się utrzymać moją „wiedzę” o nowych technikach/poprawkach/obejściach. Znajduję je w google (czasami po jakimś czasie szukania) i naprawiam swój błąd/uczę się nowych rzeczy... Tak naprawdę nie poszerzam mojej "biblioteki" o tę wiedzę. Więc po pewnym czasie, gdy napotkam ten sam błąd, muszę go ponownie przeszukać, a to może być czasochłonne. Jak śledzicie tę wiedzę? Mam na myśli, że większość z nas pracuje w ruchliwym miejscu pracy, nie mając czasu na zapamiętanie każdej poprawki błędów/części wiedzy o produkcie/języku. Chcę móc odwoływać się do tych informacji w mojej własnej bibliotece. Próbując utrzymać uporządkowanie i utrzymanie linków, tekstów i fragmentów kodu, a nie plik tekstowy / Evernote dla każdego tematu, prawie niemożliwe jest znalezienie i uporządkowanie tych informacji ...


title: Terminologia opcji powiększania

text: Wymyśliłem 4 różne sposoby dopasowania obrazu do obszaru wyświetlania, ale mam problem z wymyśleniem ich nazw. Może ktoś może coś zasugerować? 1. Dopasuj obraz do obszaru wyświetlania, nie powiększaj, jeśli obraz jest mniejszy 2. Dopasuj obraz tak, aby ściśle mieścił się w obszarze oglądania (w razie potrzeby powiększ) -- obraz jest tak duży, jak to możliwe, a jednocześnie mieści się w obszarze wyświetlania 3. Rozmiar obrazu tak, aby wypełniał cały oglądany obszar -- obraz będzie tego samego rozmiaru lub _większy_ niż oglądany obszar 4. Stosunek 1:1; 1 piksel na obrazie odpowiada 1 pikselowi na ekranie Wszystkie opcje powiększania zachowują proporcje. Rozciąganie jest po prostu brzydkie, więc nie wchodzi w grę :)


title: Projektowanie oprogramowania dla paradygmatu niezorientowanego obiektowo

text: Obecnie pracuję nad projektem, w którym piszę firmware dla systemu elektronicznego w C i zostałem poproszony o stworzenie dokumentacji dotyczącej rozwoju/ewolucji oprogramowania dla urządzeń wbudowanych. Opracowując oprogramowanie w paradygmacie zorientowanym obiektowo, wiem, jak używać UML do dokumentowania oprogramowania, takiego jak diagramy klas z obiektami, jednak nie działa to w przypadku dokumentowania rozwoju mojego systemu wbudowanego. Co więc powinienem wyprodukować, aby udokumentować rozwój mojego oprogramowania?


title: kolejka retransmisji tcp

text: Próbuję zrozumieć, jak działa kolejka retransmisji tcp, aby móc ją zaimplementować w mojej aplikacji, która używa protokołu TCAP przez SCTP. Z kolejki TCP zrozumiałem, że każda wiadomość jest zapisywana w kolejce retransmisji z czasem, w którym licznik czasu osiągnie 0 wiadomość zostanie wysłana ponownie. Moje pytanie brzmi, jak sprawdzić czas na tej wiadomości, czy jest to wątek, który stale sprawdza kolejkę retransmisji, czy jest to coś innego?


title: Najlepsze praktyki projektowania Web API — wiele (podobnych) operacji

text: Mam usługę sieciową (oś2), a serwer wykonuje 4 podstawowe operacje: createX, removeX, getX i updateX Gdzie X jest reprezentowane przez kombinację 4 wartości: id1, id2, id3 i id4 Aby uprościć życie programisty, stworzyliśmy 3 dodatkowe funkcje pomocnicze: removeXForId, getXForId i updateXForId, gdzie zestaw 4 wartości reprezentujemy jako 1 identyfikator, dzięki czemu programiści, którzy do nas dzwonią, nie muszą przekazywać wszystkich tych 4 wartości raz za razem i po prostu przechowywać unikalny identyfikator na ich końcu . Ale nie możemy również całkowicie usunąć operacji removeX, getX i updateX, a jedynie polegać na unikalnym identyfikatorze, ponieważ niektóre przypadki użycia wymagają przekazania wszystkich 4 zestawów wartości. **Więc mamy teraz około 7 operacji, z których połowa (3) to operacje zduplikowane z różnymi wartościami wejściowymi.** Operacje: /createX /getX {input: id1, id2, id3, id4} /getXForId {input: id1234 } /removeX /removeXForId /updateX /updateXForId Czy to dobra praktyka? **UPDATE:** _getX jest dokładnie taki sam jak getXForId pod względem zachowania, z wyjątkiem argumentów wejściowych._ getX przyjmuje 4 dane wejściowe: wart1, wart2, wart3 i wart4. Ale getXForId przyjmuje tylko 1 ID, które reprezentuje (val1, val2, val3 i val4) val1, val2, val3 i val4 są ze sobą powiązane, w połączeniu reprezentują unikalny link do produktu w naszym systemie. Więc staraliśmy się je połączyć.


title: Co może zaawansowany technicznie starszy programista studiować, aby dalej się doskonalić?

text: Załóżmy, że programujesz od ponad 10 lat. Znasz wiele języków, z kilkoma z nich na bardzo szczegółowym poziomie. Projektowałeś architekturę rozwiązań, pracowałeś i dostarczałeś większe projekty. Uczyłeś się wzorców, najlepszych praktyk, wskazówek dotyczących efektywnego kodowania, testów jednostkowych, wielowątkowości itp. A potem powoli rozwijasz poczucie, że większość czytanych książek zawiera coraz mniej wartościowych informacji na 100 stron tekstu. Więc zaczynają dawać malejące zyski. Nadal się uczysz, ale nie poprawiasz się już skokowo. Dlaczego uczenie się staje się mniej produktywne w porównaniu do tego, jak było wcześniej? Kiedyś zmieniał sposób myślenia, uczył nowych rzeczy i poszerzał horyzonty, co później poprawiało albo twój obecny zawód, albo pozwalało wymyślić/zarządzać/zbudować coś nowego. Dlaczego już tak nie jest?


title: System wycofywania gier z sieci

text: Czy można wyjaśnić specyfikę i szczegóły frameworku netplay dla gry, która optymalizuje połączenie za pomocą mechaniki „przewidywania/wycofywania”, jak widać w grach, w których szybkość jest priorytetem (strzelanki pierwszoosobowe, nowoczesne gry walki od Street Fighter IV itp.) )? Wcześniej studiowałem ten artykuł jako przykład: Source Multiplayer Networking, który opisuje techniki Valve stosowane w ich strzelankach na wysokim, abstrakcyjnym poziomie. Jednak jest po prostu zbyt wysoki i teoretyczny, aby mógł mi się przydać. Inne podobne artykuły są zgodne z tym samym wzorcem; żadna nie oferuje próbek kodu ani przykładów roboczych. Wcześniej stworzyłem systemy netplay, które używają niezoptymalizowanego protokołu TCP/IP, który jest oczywiście horrendalnie wolny i nieprzydatny do niczego poza grą w sieci LAN. Chociaż ukończyłem kurs programowania sieciowego w college'u, jestem wystarczająco pewny siebie i doświadczony, aby stworzyć ten system poprzez przybliżone kopiowanie innego wcześniej istniejącego kodu.


title: Postępujesz w poprzednich aplikacjach CRUD w PHP?

text: Programuję w PHP od około roku i jestem na następującym etapie: * Dobrze wyczuwam język * Potrafię kompetentnie tworzyć aplikacje CRUD * Potrafię wykorzystać strukturę MVC, aby umożliwić przyszłą rozbudowę kodu * Używając w punktach wymienionych powyżej, stworzyłem szereg własnych aplikacji do ćwiczeń - w tym między innymi; forum, sieci społecznościowej itp. Moje pytanie może być trochę niejasne, ale mam nadzieję, że powinno na nie odpowiedzieć. Czuję, że nie muszę wiedzieć nic więcej o PHP, aby móc tworzyć strony internetowe, chociaż jestem pewien, że się mylę. **Jakie zaawansowane/złożone tematy PHP mógłbym przyjrzeć się, które mają zastosowanie w świecie rzeczywistym i pozwolą mi rozwinąć zarówno moje umiejętności programistyczne, jak i ogólnie aplikacje?** Ostatnio dużo bardziej przyjrzałem się javascript/jQuery co pozwoliło mi nadać moim aplikacjom bogatszy interfejs użytkownika, co było wspaniałym doświadczeniem w nauce i okazało się bardzo przydatne.


title: Mam 15 lat. Co poleciłbyś dla zasobów?

text: Jestem 15-letnim dzieckiem, które wydaje się wyróżniać na wszystkich swoich zajęciach, lubi rozmawiać w trzeciej osobie i chce dowiedzieć się więcej o programowaniu i trochę o html/php. Znam już trochę Pythona i mam nadzieję, że w końcu nauczę się Java / JavaScript i C. Rozglądałem się i znalazłem kilka takich wykładów online i kilka innych samouczków, które są tak nudne i trudne do zrozumienia . Zastanawiałem się, czy ktoś z was znał jakieś dobre książki lub inne zasoby, które faktycznie nauczyłyby mnie wszystkiego, co powinienem wiedzieć stopniowo?


title: Jaki jest sens podwójnego blokowania?

text: Czytałem artykuł na Wikipedii na temat podwójnego sprawdzania blokowania i jedna rzecz, która nie jest z niego jasna (przynajmniej dla mnie), to to, co osiąga wzór. Jaki jest powód dokonywania dwóch poniższych kontroli? Dlaczego by nie mieć potrójnie sprawdzonego blokowania? Czy nie byłoby to jeszcze lepsze? if (mySingleton == null) { // 1-sze sprawdzanie blokady (mySingleton) { if (mySingleton == null) { // 2-gie (podwójne) sprawdzanie mySingleton = new MySingleton(); } } }


title: Wstawianie walidacji w testach opartych na danych

text: Pracuję nad narzędziem testowym, które zapewnia porównania obrazów. Do wstawiania danych testowych używam plików excel i csv, które dostarczają do testów tekst, który jest używany przez narzędzie do symulowania rzeczywistych interakcji użytkownika - przy wypełnianiu formularzy/ekranów w testach. Po wstawieniu konieczna jest weryfikacja, aby upewnić się, czy test zadziałał prawidłowo, czy nie. Jaki mechanizm powinienem zastosować, aby zapewnić odpowiednią walidację testów? Ponieważ ekrany będą się znacznie różnić, nie mogę użyć zakodowanego na stałe ciągu/obrazu błędu/sukcesu. Jednym z podejść, które rozważam, jest generowanie obrazów na podstawie danych wejściowych (OCR) dla różnych testów, które zostaną użyte do walidacji instancji testu, w której zostało wykonane określone wejście. Czy ktoś może skomentować/udostępnić jakąkolwiek inną technikę robienia tego?


title: Emacs/Vim/Vi - czy mają miejsce w nowoczesnym ekosystemie programistycznym?

text: Oglądając te wszystkie screencasty (i słuchając tych wszystkich podcastów) z mniej lub bardziej znanymi hakerami/programistami, słyszałem, że wielu z nich używa emacs/vi(m) do codziennej pracy. Teraz sam próbowałem używać zarówno emacsa, jak i vima, i szczerze mówiąc nie mogę zrozumieć, dlaczego ktokolwiek miałby ich używać do jakiegokolwiek poważnego rozwoju. Najbardziej reklamowaną funkcją jest coś w stylu „będziesz mógł pracować z tekstem (co oznacza wycinanie, wklejanie, powielanie, przenoszenie itp.) do dziesięciu razy szybciej niż w przypadku konwencjonalnych środowisk IDE”, ale tego nie kupuję . Kiedy sukces projektu oprogramowania został określony przez to, jak szybko programista może żonglować wierszami w edytorze tekstu lub przez zapisanie kilku naciśnięć klawiszy tu i tam? Wtyczki i rozszerzenia? Założę się, że nic nie zbliża się do R# lub IDEA pod względem obsługi refaktoryzacji (refaktoryzacja "Zmień nazwę" zaimplementowana za pomocą "Wyszukaj i zamień" nie jest refaktoryzacją IMO); inne są trywialne. Wszechobecny i dostępny wszędzie? Więc co? Jak często edytujesz pliki o łączu 300 bodów w ezoterycznej instalacji *nix bez VCS? Oto pytanie: czy wspomniani redaktorzy mają uzasadnione miejsce w nowoczesnym ekosystemie tworzenia oprogramowania?


title: Metodologie zarządzania użytkownikami i dostępem?

text: To jest coś, co sprawia mi trudność. Myślę, że mogę to bardziej skomplikować, niż jest. To, co próbuję zrobić, to opracować metodę przechowywania użytkowników w bazie danych z różnymi poziomami dostępu, w różnych aplikacjach. Wiem, że robiono to już wcześniej, ale nie wiem, gdzie znaleźć sposób, w jaki to zrobili. Oto przykład tego, co muszę osiągnąć: Użytkownik A — Dostęp do aplikacji App1, App3, App4 i możliwość dodawania nowych użytkowników do aplikacji App3, ale nie 4 lub 1. Użytkownik B — dostęp do aplikacji App2 tylko z dostępem tylko do odczytu. UserC — dostęp do aplikacji 1 i 4 oraz dostęp do ustawień administracyjnych obu aplikacji. W przeszłości korzystałem tylko z grup użytkowników. Jednak dochodzę do fazy, w której potrzebuję nieco większej kontroli nad dostępem każdego użytkownika do niektórych części różnych aplikacji. Chciałbym, żeby to było tak proste i suche, jak możliwość nadania użytkownikowi roli i niech każda rola dziedziczy po poprzedniej. To jest to, co muszę osiągnąć. Ale nie znam żadnych metod na zrobienie tego. Mógłbym z łatwością zaprojektować coś, co działa, ale wiem, że to zostało zrobione i wiem, że zostało to przestudiowane i wiem, że ten problem został rozwiązany przez znacznie lepsze umysły niż mój własny. To jest dla aplikacji internetowej i używającej serwera sql 2008. Nie muszę przechowywać haseł (LDAP), a informacje, które muszę przechowywać, są w rzeczywistości bardzo ograniczone. Zasadniczo tylko nazwa użytkownika i dostęp.


title: Jakie są narzędzia/frameworki używane do budowania aplikacji C# ASP.net?

text: Jestem w zasadzie programistą java, który chce przenieść się do .net. Nie pracowałem w firmach .NET, więc nie mam pojęcia o narzędziach, których używają. W firmie Java ludzie używają Maven, Hibernate i frameworków takich jak JSF czy Tapestry. Moje pytania to: Z jakich narzędzi/frameworków korzystają firmy .NET/C#? Czy używają ASP.NET MVC? Czy używają jakiegoś narzędzia ORM? Czy używają jakiegoś frameworka? Byłbym szczęśliwy, gdyby ktoś mógł mi o tym opowiedzieć.


title: Czy istnieje obsługiwany sposób uruchamiania aplikacji .NET 4.0 natywnie na komputerze Mac?

text: Jakie są obsługiwane przez firmę Microsoft opcje uruchamiania kodu C#/.NET 4.0 natywnie na komputerze Mac? Tak, wiem o Mono, ale między innymi w tyle za Microsoftem. A Silverlight działa tylko w przeglądarce internetowej. Rozwiązanie typu VMWare też się nie sprawdzi. Czy istnieje jakaś pół-autorytatywna odpowiedź na pytanie, dlaczego firma Microsoft po prostu nie obsługuje platformy .NET na komputerze Mac? Wydawałoby się, że mogliby kupić Silverlight i/lub kupić Mono i szybko tam być. Nie ma potrzeby używania natywnego programu Visual Studio; kompilacja krzyżowa i zdalne debugowanie są w porządku. Powodem jest to, że tam, gdzie pracuję, rośnie niepewność co do przyszłości, co powoduje, że dużo więcej prac programistycznych należy wykonać w C++ zamiast w C#; zupełnie nowe projekty decydują się na użycie C++. Nikt nie chce mówić kierownictwu za 18-24 miesiące „przepraszam”, jeśli komputer Mac (lub iPad) stanie się wymogiem. C++ jest postrzegany jako bezpieczniejsza opcja, nawet jeśli (prawdopodobnie) oznacza dzisiaj utratę produktywności.


title: Sytuacje wymagające ochrony plików przed manipulacją podczas przechowywania na komputerze użytkownika

text: Tworzę 'Pokémon Storage System' z modelem klient/serwer iw ramach tego myślałem o przechowywaniu pliku inwentarza na komputerze użytkownika, którego nie chcę edytować inaczej niż przez mój program. Alternatywą do tego byłoby zamiast tego przechowywanie pliku inwentarza na serwerze i kontrolowanie jego edycji poprzez wysyłanie poleceń na serwer, ale zastanawiałem się, czy są jakieś sytuacje, które wymagają przechowywania plików na komputerze użytkownika, gdzie edycja byłaby niepożądana a jeśli tak, jak chronisz pliki? Myślałem o AES z jakąś sumą kontrolną?


title: Pytanie dotyczące czytelności kodu

text: Chciałbym wiedzieć, czy uważa się, że powszechną praktyką jest używanie konstrukcji takich jak `|=`, `&&`, `||`, `!=` w jednym wierszu kodu? Np. `hasErrors |= vi2!=null && vi2.hasErrors() || vi.hasErrors();` Co można zrobić, aby kod był bardziej czytelny? Językiem programowania jest Java, jeśli ma to znaczenie.


title: Integracja z dostawcą płatności; Właściwe i solidne podejście OOP

text: ### Historia Obecnie używamy tak zwanego modelu przekierowania dla naszych płatności online (kiedy wysyłasz płatnika do bramki płatniczej, gdzie wprowadza on swoje dane dotyczące płatności - bramka następnie przekieruje go do strony zwrotnej sukcesu/porażki). To proste i proste, ale niestety dość niewygodne i czasami mylące dla naszych klientów (opuszczenie strony, zmiana danych karty kredytowej za pomocą dodatkowego logowania na innej stronie itp.). ### Zamiar i opis problemu Zamierzamy teraz przejść na podejście zintegrowane, wykorzystujące wymianę żądań i odpowiedzi XML. Mój problem polega na tym, jak poradzić sobie ze wszystkimi (a raczej większością) rzeczy, które mogą się zdarzyć podczas przetwarzania - pamiętając, że zwykle prostota jest solidna, podczas gdy złożoność jest krucha. ### Przykłady * Przerwanie przez użytkownika: użytkownik wprowadza dane karty kredytowej i przesyła trafienia. Wiadomość XML do bramy dostawcy jest wysyłana i oczekuje na odpowiedź. Użytkownik klika „stop” w swojej przeglądarce lub zamyka okno. * ignore_user_abort() w PHP może być opcją - ale czy jest to niezawodne? * czy nie byłoby lepiej przekierować użytkownika na stronę „proszę czekać”, która z kolei otwiera żądanie AJAX lub inne żądanie do rzeczywistego procesora, który nie polega na połączeniu? * Baza danych znika * brzmi zbyt skomplikowanie, ale z m.in. serwer sieciowy w Stanach i DB w Wielkiej Brytanii, stało się to i powtórzy się: użytkownik klika razem swoje zamówienie, żądanie płatności zostało wysłane do dostawcy, ale odpowiedź nie może zostać zapisana w bazie danych. Jakiego podejścia mógłbym użyć, używając PHP do uruchomienia kodu SQL, takiego jak „Transakcja”, który dopiero na samym końcu zostanie zatwierdzony lub wycofany, w zależności od poszczególnych kroków? Jeśli wtedy nie miałoby miejsca ani zatwierdzenie, ani wycofanie, mógłbym „zablokować” użytkownika, aby uniemożliwić mu powtórną płatność lub niewłaściwe rozliczenie płatności – ale jak? * A co jeszcze muszę wziąć pod uwagę technicznie? Żaden z przykładów integracji m.in. Worldpay, Realex lub SagePay oferują jakikolwiek wgląd, a moja wyszukiwarka lub wyszukiwane przeze mnie hasła nie były wystarczająco dobre, aby znaleźć czyjeś przemyślenia na ten temat. Bardzo dziękuję za wgląd w to, jak podejdziesz do tego!


title: Jak najlepiej przechowywać obrazy w systemie plików

text: Tworzenie aplikacji, w której użytkownicy muszą przesyłać obrazy. Tak naprawdę nie mam dużego doświadczenia z przesyłaniem plików w aplikacji, więc zastanawiam się, jaki jest najlepszy sposób przechowywania obrazów, które są przesyłane przez użytkowników do systemu plików.


title: Jak wykonać plik Ruby w Javie, zdolny do wywoływania funkcji z programu Javy i odbierania wyników typu prymitywnego?

text: Nie do końca rozumiem, o co proszę (lol!), no cóż, w tym sensie, czy jest to w ogóle możliwe. Jeśli nie, przepraszam. Załóżmy, że mam program Java. Ma klasy `Main` i `JavaCalculator`. `JavaCalculator` ma kilka podstawowych funkcji, takich jak public int sum(int a,int b) { return a + b } Załóżmy teraz, że mam plik ruby. Nazywany `MójProgram.rb`. `MójProgram.rb` może zawierać wszystko, czego można oczekiwać od programu ruby. Załóżmy, że zawiera ona: class RubyMain def initialize print "Suma 5 z 3 to #{sum(5,3)}" end def sum(a,b) # <--------- - Coś się tu wydarzy koniec koniec rubyMain = RubyMain.new Dobrze. Teraz możesz już podejrzewać, co chcę zrobić: * Chcę uruchomić mój program Java * Chcę, aby **wykonał** plik Ruby `MyProgram.rb` * Kiedy program Ruby zostanie uruchomiony, utworzy instancji `JavaCalculator`, wykonaj funkcję `sum`, którą posiada, pobierz wartość, a następnie ją wypisz. * Plik ruby został pomyślnie uruchomiony. * Program Java zostanie zamknięty. **Uwaga** : _"utwórz instancję`JavaCalculator`"_ nie jest całkowicie konieczne. Zadowoliłbym się po prostu uruchomieniem funkcji `sum` z, powiedzmy, klasy `Main`. Moje pytanie: czy to możliwe? Czy mogę uruchomić program Java, który wewnętrznie wykonuje plik Ruby, który jest w stanie nakazać programowi Java wykonanie pewnych czynności i uzyskanie wyników? W powyższym przykładzie plik Ruby prosi program Java o wykonanie sumy i podanie wyniku. * * * To może zabrzmieć śmiesznie. Jestem nowy w tego rodzaju rzeczach (o ile to możliwe). **DLACZEGO O TO PROSZĘ?** Mam program Java, który jest rodzajem silnika gry. Jednak moją docelową grupą odbiorców jest grupa koderów Ruby. Nie chcę, żeby w ogóle uczyli się Javy. Pomyślałem więc, że być może program Java mógłby po prostu oferować **funkcjonalność** (możliwość tworzenia okien, wyświetlania sprite'ów, odtwarzania dźwięków...), a następnie moja publiczność może po prostu kodować za pomocą Rubiego logikę, która w zasadzie po prostu ** prosi** mój silnik Javy o robienie takich rzeczy jak wyświetlanie sprite'ów lub odtwarzanie dźwięków. Wtedy pomyślałem, żeby o to zapytać.


title: Jak mogę przetestować własny algorytm szyfrowania?

text: Właśnie opracowałem algorytm szyfru blokowego z kluczem symetrycznym i używam go w niektórych swoich produktach. Chcę to przetestować. Jak postąpić z wpisaniem ich algorytmu szyfrowania do międzynarodowego konkursu szyfrowania?


title: Który język jest bardziej odpowiedni do ciężkich zadań związanych z plikami?

text: Muszę napisać skrypt (w oparciu o podstawowe funkcje) do przetwarzania plików /image/audio/video. Proces obejmuje głównie zadania systemu plików i konwersje. Baza plików jest przechowywana przez mysql. Skrypt jest prosty, ale powoduje ciężkie zadania w systemie; na przykład zmiana nazwy/konwertowanie/kopiowanie tysięcy plików w jednym przebiegu. Skrypt nie wczytuje zawartości plików do pamięci, tylko zarządza poleceniami dla podprocesów. Główny nacisk kładziony jest na komunikację z systemem plików. Skrypt będzie regularnie używany do nowych plików. Martwię się o wydajność. Myślę o 1. skrypcie powłoki 2. języku zgodnym, takim jak C Proszę doradzić, który język programowania jest bardziej odpowiedni do tego celu i dlaczego? **AKTUALIZACJA:** Przykładem jest skanowanie folderu w poszukiwaniu obrazów, konwertowanie ich za pomocą programu `ImageMagick`, przenoszenie plików do folderu docelowego, uzyskiwanie informacji o plikach, a następnie aktualizowanie bazy danych. Jak widać, w procesie nie ma miejsca na optymalizację, a większość języków ma podobne API dla popularnych programów, takich jak `ImageMagick`, `MySQL` itp. Dzięki temu można go napisać w dowolnym języku. Chcę tylko zmniejszyć zużycie zasobów, przyspieszając długą pętlę. _UWAGA:_ Wiem, że pytania o porównywanie języków nie są korzystne, ale naprawdę miałam problem z wyborem, bo problemy mogą pojawić się w działaniu.


title: Jak radzisz sobie z kierownikiem projektu?

text: Obecnie pracuję dla firmy, która ostatnio zmniejszyła się. Wykonuję całą pracę wewnętrzną, instalacje klienta, kompilacje, kontrolę jakości i, cóż, w zasadzie całą pracę wewnętrzną. Mój bezpośredni szef jest BARDZO nietechniczny i ostatnio BARDZO trudno jest mi poradzić sobie z jego brakiem wiedzy. Największe problemy, jakie miałem, to: * Dotrzymuję wielu terminów na raz. Zatrzymuję się, aby przygotować pół szybką wycenę, ponieważ nie mogę się spóźnić w terminie, w międzyczasie przychodzą trzy telefony do pomocy technicznej, podaję cytat, za dużo czasu na wycenę, więc zlecają to na zewnątrz. Następnie muszę naprawić wszystko, co zepsuł sprzedawca, co mnie w tyle. Najgorsze jest to, że jeśli zjem „Jego bufor” w projekcie, w którym nawet nie brałem udziału, oczekuje się, że skończę wszystko już zaplanowane, podczas gdy wszystkie inne rzeczy się pojawią. * Kiedy pojawia się problem, dostaję pytanie, dlaczego tak się dzieje i szczegółowo wyjaśniam, ale ten szczegół nie ma dla niego żadnego znaczenia. * Dba o terminy, ale to on wszystko planuje. * „Jestem programistą, a nie grafikiem, nic dla niego nie znaczy” * Zostałem zatrudniony jako programista .NET, ale pozwolili dostawcy wybrać wordpress dla wielu stron (tak, musiałem się wszystkiego szybko dowiedzieć) można iść i dalej, ale czy ktoś miał do czynienia z tego typu kierownikiem projektu? Jaka jest rada poza znalezieniem innej pracy? W tej chwili nie mogę opuścić pracy, ponieważ nie mogę teraz stracić ubezpieczenia, ponieważ moja żona jest bardzo chora na SM. Szukam najlepszego sposobu radzenia sobie z moim menedżerem. Z góry dziękuję, zrobiłem z tego wiki, więc proszę nie zamykaj. Oto kolejna sytuacja, która miała miejsce dzisiaj. Mamy przyjaciela, który pomaga mi w projektach. Poprosił nas „OBU” o zacytowanie oferty pracy i przybliżone oszacowanie. Wróciłem do niego i powiedziałem „7 tygodni 6 godzin dziennie, używając mojego przyjaciela jako zasobu”. Dał go klientowi i dodał 10% bufor (24 godziny). Następnie mówi mi, że to wszystko, za co mam mojego przyjaciela w projekcie. Nie pytano mnie, ile czasu był dostępny w ciągu tych 7 tygodni. Najgorsze jest to, że już przekazali wycenę klientowi i nawet nie dali mi recenzji. Jego pogląd jest dobry, albo zrobisz to w czasie, o którym mu powiedziałem, albo znajdziesz inną pracę.


title: Czy O(1) losowy dostęp do ciągów kodujących o zmiennej długości jest przydatny?

text: Pamiętam, że czytałem, że nie ma istniejących struktur danych, które umożliwiają losowy dostęp do kodowania o zmiennej długości, takiego jak UTF-8, bez konieczności stosowania dodatkowych tabel wyszukiwania. Główne pytanie, jakie mam, to czy jest to w ogóle użyteczna nieruchomość? Mam na myśli, aby wyszukać i zastąpić losowe pojedyncze _punkty kodowe_ w czasie O(1).


title: Sugestie dotyczące informacji o tagach html wymaganych dla wtyczki jQuery

text: Napisałem trochę jQuery, które po prostu wybiera wszystkie elementy formularza `Select` na stronie i ustawia wybraną właściwość na poprawną wartość. Wcześniej musiałem napisać kod, aby wygenerować `Select` w php i określić atrybut `Selected` dla wybranej opcji lub wykonać mnóstwo instrukcji `if` na mojej stronie php lub szablonie smarty. Oczywiście informacja o tym, jaka opcja jest wybrana, nadal musi być określona gdzieś na stronie, aby kod jQuery mógł ją wybrać. Postanowiłem utworzyć nowy atrybut w elemencie Wybierz <Select name="MySelect" SelectedOption="2"> <-- Custom Attr SelectedOption <option value="1">Moja opcja 1 </option> <option value=" 2">Moja opcja 2 </option> <-- ta opcja zostanie wybrana, gdy kod jquery uruchomi <option value="3">Moja opcja 3 </option> <option value="4">Moja opcja 4 </ opcja> </Select> Czy ktoś widzi problem z użyciem niestandardowego atrybutu w tym celu, czy istnieje bardziej akceptowany sposób, czy lepszy sposób jquery?


title: Platforma debugowania dla języka specyficznego dla domeny

text: Chcę wiedzieć, czy istnieją jakieś narzędzia/zestawy narzędzi, które pomagają w tworzeniu debugerów na poziomie źródła dla języków specyficznych dla domeny? (Pracuję na zastrzeżonym DSL, który nie ma żadnych narzędzi i czasami debugowanie stanie się trudne, więc jeśli są takie zestawy narzędzi, chciałem spróbować)


title: Wsparcie dostawcy dla OpenStack (to nie zdzierstwo)

text: Zaczynam dostrzegać, że gra się w grę, w której obsługa chmury to albo „host wewnątrz naszej chmury po niskich kosztach (więc cię zamykamy)” lub „będziemy wspierać twoją prywatną chmurę pod warunkiem, że jest ogromna jak 5000 węzłów i płacisz za nasze wsparcie premium ~ 5000 USD miesięcznie "więc gdzie są opcje wsparcia dla OpenStack, które nie próbują grać w tę grę?


title: Algorytmy wizji komputerowej (jak to możliwe?)

text: Niedawno natknąłem się na firmę, która stworzyła coś, co wydaje się być technologią widzenia komputerowego, która jest w stanie automatycznie wykrywać kradzieże sklepowe i ostrzegać użytkowników. LINK Oglądanie niektórych filmów i przykładów dostarczonych przez firmę całkowicie mnie zaskoczyło i zdziwiło, jak u licha udało im się osiągnąć tę funkcjonalność. Rozumiem, że nikt tutaj nie będzie w stanie powiedzieć mi dokładnie, w jaki sposób mogło to zostać osiągnięte, ale czy ktoś jest świadomy - i może mi wskazać - badania w tej dziedzinie lub ewentualnie podać szczegóły, jak coś takiego można wdrożyć lub wskazówki, od czego można zacząć? Zrozumiałem, że algorytmy wizji komputerowej były jeszcze wiele lat od tak wyrafinowanych. Czy taka aplikacja jest naprawdę możliwa? Czy ktoś chciałby zgadnąć, jak to osiągnęli?


title: Czy możliwe jest stworzenie gry 2D zarówno dla systemu Linux, jak i Windows bez prawie żadnych zmian?

text: Zaczynam projekt ze znajomymi, który najchętniej docierałby zarówno do odbiorców windowsowych jak i linuxowych. Jedynym problemem jest to, że nikt z nas nie ma żadnego doświadczenia z portowaniem lub kodowaniem linuksa w jakikolwiek sposób. Dlatego proszę tutaj o informację, czy byłoby możliwe użycie tego samego kodu na obu platformach. Jeśli jest to jakiś wybór, którego musieliśmy dokonać podczas kodowania, tak aby był na obie platformy. Naszym preferowanym językiem kodowania jest C++, ale jeśli uzyskamy wystarczające wsparcie dla innego, możliwa jest zmiana. Z tego powodu nie wybraliśmy jeszcze grafiki ani silnika gry. Przy minimalnym wysiłku chcielibyśmy, aby była ona jak najbardziej zbliżona do gry „jednoplatformowej”. :)


title: Tworzenie metody rozszerzenia Predicate Builder

text: Mam siatkę interfejsu użytkownika Kendo, którą obecnie zezwalam na filtrowanie w wielu kolumnach. Zastanawiam się, czy istnieje alternatywne podejście usuwające zewnętrzną instrukcję przełącznika? Zasadniczo chcę mieć możliwość utworzenia metody rozszerzającej, aby móc filtrować według `IQueryable<T>` i chcę usunąć instrukcję dotyczącą małych liter, aby nie musiała przełączać nazw kolumn. private static IQueryable<Kontakt> FilterContactList(FilterDescriptor filter, IQueryable<Kontakt> contactList) { switch (filter.Member) { case "Nazwa": switch (filter.Operator) { case FilterOperator.StartsWith: contactList = contactList.Where(w = > w.Imię.StartsWith(filter.Value.ToString()) || w.Nazwisko.StartsWith(filter.Value.ToString()) || (w.Imię + " " + w.Nazwisko).StartsWith(filter. Wartość.ToString())); przerwanie; case FilterOperator.Contains: contactList = contactList.Where(w => w.Firstname.Contains(filter.Value.ToString()) || w.Lastname.Contains(filter.Value.ToString()) || (w.Imię + " " + w.Lastname).Contains( filter.Value.ToString())); przerwanie; case FilterOperator.IsEqualTo: contactList = contactList.Where(w => w.Firstname == filter.Value.ToString() || w.Lastname == filter.Value.ToString() || (w.Firstname + " " + w.Nazwisko) == filter.Value.ToString()); przerwanie; }                     przerwanie; case "Firma": switch (filter.Operator) { case FilterOperator.StartsWith: contactList = contactList.Where(w => w.Company.StartsWith(filter.Value.ToString())); przerwanie; case FilterOperator.Contains: contactList = contactList.Where(w => w.Company.Contains(filter.Value.ToString())); przerwanie; case FilterOperator.IsEqualTo: contactList = contactList.Where(w => w.Company == filter.Value.ToString()); przerwanie; }                          przerwanie; } zwróć listę kontaktów; } Niektóre dodatkowe informacje, używam NHibernate Linq. Innym problemem jest to, że kolumna "Nazwa" w mojej siatce to w rzeczywistości "Imię" + " " + "Nazwisko" w mojej encji kontaktu. Możemy również założyć, że wszystkie filtrowalne kolumny będą ciągami. **EDYTUJ** Pamiętaj, że to musi działać z **NHibernate** Linq i AST.


title: Nazwy funkcji - "standaryzowane" przedrostki

text: Wyobraź sobie, że masz takie procedury /*po prostu wykonaj X. Porażka, jeśli jakikolwiek warunek wstępny nie jest spełniony*/ doX() /*zajmij się warunkami wstępnymi, a następnie wykonaj X*/ takeCareOfPreconditionsCheckIfNeededAtAllAndThenDoX() Trochę bardziej konkretny przykład: /*utwórz katalog. Najprawdopodobniej nie powiedzie się z błędem, jeśli którykolwiek warunek wstępny nie jest spełniony (folder już istnieje, nadrzędny nie istnieje)*/ createDirectory(nazwa_ścieżki) /*zajmij się warunkami wstępnymi (w razie potrzeby tworzy pełną ścieżkę do folderu, sprawdza, czy jeszcze nie istnieje), a następnie tworzy katalog*/ CheckIfNotExistsYet_CreateDirectory_andFullPathIfNeeded(path_name) Jak nazywasz takie procedury, aby było jasne, co robi co? Doszedłem do kilku moich własnych "konwencji", takich jak: naiwne CreateDirectory, ForceDirectoryExists, ... Ale wyobrażam sobie, że jest to bardzo standardowa sytuacja. Może istnieją już jakieś normy/konwencje na to?


title: Czy mogę zostać juniorem w wieku 27 lat?

text: Mam w tej chwili pracę niezwiązaną z komputerem, ale chcę zostać programistą, mam trochę wiedzy obiektywnej i iOS, ciężko się uczę w wolnym czasie itp. Szukam stanowiska młodszego programisty iOS. Zapłacę prawdopodobnie połowę tego, co zarabiam w mojej obecnej pracy i nie jestem pewien, czy mi się to spodoba. Ale jestem naprawdę zmęczona moją pracą i chcę zdobyć doświadczenie w tej dziedzinie. Również praca jako programista iOS to świetna pozycja, ponieważ są bardzo poszukiwani. Moim krajem jest Rosja. Co myślisz? A może powinienem zrobić to w wolnym czasie, pobrać jakieś programy w Appstore i poszukać lepszej pozycji? Co byś zrobił?


title: Czy Perforce jest tak dobry w łączeniu jak DVCS?

text: Słyszałem, że Perforce jest bardzo dobry w łączeniu, domyślam się, że ma to związek z tym, że śledzi zmiany w postaci list zmian, na których można dodawać różnice w kilku plikach za jednym zamachem. Myślę, że oznacza to, że Perforce gromadzi więcej metadanych, a zatem ma więcej informacji do inteligentniejszego łączenia (przynajmniej inteligentniejszego niż Subversion, ponieważ Perforce jest scentralizowany). Ponieważ jest to podobne do sposobu, w jaki Mercurial i Git radzą sobie ze zmianami (wiem, że DVCS śledzą zawartość, a nie pliki), zastanawiałem się, czy ktoś wiedział, jakie są subtelne różnice, które sprawiają, że Perforce jest lepszy lub gorszy niż DVCS, taki jak Mercurial lub Git.


title: Propozycja rozwiązania do przetwarzania w chmurze / hostingu internetowego

text: Jestem na początkowym etapie analizy platformy dla mojego startupu i eksploruję zarówno chmurę obliczeniową, jak i hosting przed rozpoczęciem rozwoju. Jestem dość biegły zarówno w .NET, jak i na platformie Java, dlatego mam nadzieję, że uzyskam Twoją opinię, aby pomóc mi w niektórych pomysłach/wskazówkach. Oto zestaw funkcji, którego szukam * Solidna platforma (musi mieć) * Trwałość a.l.a {Styl Big Table/Cassandra lub RDBMS} (musi mieć) * Frameworki kolejkowania wiadomości, takie jak ActiveMQ (Must have) * Wyszukiwanie pełnotekstowe i zaawansowane funkcje - Lucene i Solr (Must have) * Memcached (Must have) * Usługi w tle/offline (Must have) * Hostowany SSL (Must have) * Możliwość obsługi usług internetowych RESTful (Must have) * Wsparcie dla szybkiego prototypowania i wdrażania (Must have) mieć) * Przechowywanie w systemie plików (Miło mieć) * Łatwa administracja, wsparcie dla skalowania, monitorowania i profilowania (Must have) * Przejrzyste rozliczenia i księgowość (Must have) Przyjrzałem się silnikowi Google App i chociaż wygląda całkiem atrakcyjnie, Nie sądzę, że obsługuje wyszukiwanie pełnotekstowe (co za ironia) lub wiadomości, które byłyby dla mnie łamaniem umowy. Przyjrzałem się również rozwiązaniom hostingowym (np. www.justhost.com) i one również nie oferują wiadomości i wsparcia dla indeksowania/wyszukiwania pełnotekstowego itp. Zastanawiam się więc, jakie mam opcje. Czy muszę kupować własną farmę serwerów i rozmawiać z moim ISP? Jeśli tak, czy są jacyś dostawcy usług internetowych, których możesz polecić? Proszę o poradę, jak mogę wybrać odpowiednią platformę Dzięki -Venu


title: Dlaczego witryna ASP.Net może ładować się wolno?

text: Anegdotycznie odwiedziłem wiele witryn .aspx, które wymagają znacznego czasu ładowania dla każdej strony. Czy moje doświadczenie jest wyjątkowe? Jeśli nie, dlaczego witryna ASP.Net może ładować się powoli?


title: Tak więc w HTML5 to, co dokładnie… „powinno” zostać wycofane?

text: Więc wiem, że HTML5 jest "zamiennikiem" dla Flasha... chociaż oczywiście nie jest jeszcze mainstreamowy... ale co jeszcze ma zastąpić. Pytam o to, ponieważ web-dev zawsze był moją sekretną pasją poboczną (mimo że jestem programistą oprogramowania układowego głównie robiącym rzeczy w C/Java). W każdym razie chcę zająć się czymś pobocznym przy projektowaniu stron internetowych (znam podstawowy XHTML/CSS + trochę CSS3) Ale co dokładnie jest, jak sądzę... "bez sensu" studiować? Zakładam, że JavaScript zawsze będzie ogromną częścią projektowania stron internetowych? (HTML5 nie zastępuje tego?) A co z Ajaxem i samym CSS?) A potem jest Flash....nie jesteś pewien, czy naprawdę warto w to włożyć wysiłek? Jest też Adobe Flex/Air ...... Jestem trochę zdezorientowany, jeśli nie możesz powiedzieć.


title: System VPN do analizy ruchu użytkowników (onavo-like)

text: Chciałbym stworzyć system, który potrafi analizować ruch sieciowy osób z niego korzystających. Interesują mnie adresy URL, o które proszą użytkownicy. Załóżmy, że docelowi użytkownicy korzystają z systemu iOS lub Android (komputer PC byłby zbyt łatwy, jak się spodziewałeś!). Najpierw wyobraziłem sobie, że mogę użyć historii sieci, aby znaleźć istotne informacje, których szukam. Wygląda na to, że nie jest to możliwe ze względu na piaskownicę aplikacji. (Rootowanie/Jailbreaking telefonów nie jest tam opcją). Ponieważ jest to niemożliwe, szukam innej drogi do osiągnięcia mojego celu. Widzę, że Onavo Extend – aplikacja, która pozwala użytkownikom zmniejszać ich dane – jest w stanie przesyłać ruch użytkowników na ich serwery. Z tego, co rozumiem, konfigurują połączenie VPN ze swoimi serwerami, które działają jak proxy. Pomyślałem, że mógłbym użyć podobnego systemu, aby móc analizować ruch moich użytkowników, ale jestem całkowicie zagubiony we wszystkich rodzajach i protokołach VPN. Nie byłem w stanie dowiedzieć się, jakiej dokładnej technologii używa Onavo. Myślę, że musiałbym wdrożyć serwer VPN, za pomocą którego mógłbym wyodrębnić informacje, których szukam. Niestety nie udało mi się znaleźć odpowiednich informacji, które mi w tym pomogą. Oto moje pytania: 1. Czy istnieje prostszy sposób na osiągnięcie mojego celu niż skonfigurowanie całej struktury VPN? 2. Jeśli nie, czy mógłbyś mi doradzić, jakiego typu/technologii VPN mógłbym użyć i/lub wskazać mi linki, które pomogłyby mi zbudować aplikację po stronie serwera obsługującą proxy VPN lub po prostu znaleźć odpowiednie informacje, które mogłyby mi pomóc w jakikolwiek sposób? PS: Po prostu próbuję zbudować makieta, aby to zrobić, a nie najwyższej klasy usługę, która jest w stanie obsłużyć tysiące użytkowników. PPS: Jestem bardziej skoncentrowany na stronie serwera, ponieważ udało mi się znaleźć informacje o tym, jak wdrożyć profile i skonfigurować ustawienia VPN dla użytkowników końcowych. Skoncentruję się na stronie klienta, gdy serwer będzie gotowy. * * * Edycja: Nie chcę monitorować w czasie rzeczywistym, ale raczej móc analizować żądane adresy URL i przechowywać je (np. w bazie danych lub plikach, to tylko makieta) w celu późniejszej ich analizy . Ponieważ nie mam dostępu do historii sieci użytkownika, pomysł polega na tym, aby móc samodzielnie analizować ruch w celu zbudowania historii.


title: Po SICP? Zainteresowany programowaniem internetowym i desktopowym

text: Jako zupełny nowicjusz jestem ciekaw, co powinienem podjąć po ukończeniu _Struktury i interpretacji programów komputerowych_ (wraz z kursem MIT). Interesuję się przede wszystkim budowaniem aplikacji desktopowych, a w drugiej kolejności tworzeniem stron internetowych. Jak uchwycić istotę programowania desktopowego? A sieć? Czy są jakieś konkretne książki lub kursy, które badają różne obszary programowania i narzędzia potrzebne do zbudowania czegoś solidnego?


title: Wybór języka programowania

text: biorę udział w kilku rozmowach i wygląda na to, że wybór języka programowania jest wydarzeniem typu, czy lubisz coca-colę czy pepsi, nie możesz lubić obu. Czasami jest jeszcze gorzej, niektórzy ludzie nie uważają, że istnieją inne języki programowania, które oczekują tych, które preferują. Cóż, moje pytanie brzmi: czy TO ważne decyzje dotyczące języka programowania? A może jest to program marketingowy, w którym firmy kupują to, a następnie cierpią na to programy? Co więcej, nie powinno być odwrotnie, firmy proszą o ogólne umiejętności rozwojowe, a następnie szkolą swoje zasoby ludzkie, aby osiągnąć cel (jeśli problem jest zbieżny, użyj swoich umiejętności, aby rozwijać się w tym konkretnym języku)?


title: Środowisko pracy

text: Zdaję sobie sprawę, że to może nie być właściwe miejsce do zadawania pytań dotyczących zatrudnienia, a pytanie, które zadaję, debatuje itp. Firma, w której ostatnio pracuję, zdecydowała, że zamiast jednego web developera pracującego na stronach z branży, lepiej zrobić ta osoba przychodzi do centrali i pracuje w środku ruchliwego call center. Oczekują również, że programista odbierze telefon, jeśli zadzwoni i odbierze wiadomości. Czy ktoś uważa to za dziwne? Czy to naprawdę właściwe miejsce do pracy dla programisty? Dzięki za radę


title: O doskonaleniu praktyk dotyczących zobowiązań

text: Myślałem o sposobach ulepszenia moich praktyk dotyczących zobowiązań. Czy istnieje jakakolwiek korelacja między nie. linii kodu źródłowego i nie. zobowiązań? W ostatnim projekcie, w który byłem zaangażowany, miałem 30 rewizji na 1000 linii. Jeden typowy plik z projektu ma następujący język statystyk: JavaScript całkowita liczba zatwierdzeń zawierających ten plik: 32 wiersze ogółem: 1408 wiersze źródłowe: 1140 wiersze komentarza: 98 nie. deklaracji funkcji: 28 innych deklaracji: 8 Inny plik ma te... Język: Python całkowita liczba zatwierdzeń zawierających ten plik: 17 całkowita liczba wierszy: 933 wierszy źródłowych: 730 wierszy komentarzy: 80 klas: 1 metody: 10 Myślę też, że nie . zatwierdzeń jest bardziej związane z nie. funkcji lub nie. zmian w kodzie i mniej do nie. linii. Ogólnym mottem społeczności git jest robienie krótkich zatwierdzeń i częste zatwierdzenie. Czy naprawdę myślisz o swojej strategii commitów przed rozpoczęciem projektu. Jeśli o to chodzi, czy istnieje coś takiego jak strategia zatwierdzania? Jeśli tak, jaki jest twój?


title: Maksymalne zagnieżdżanie pętli i warunków warunkowych?

text: Napisałem trochę kodu, który ma dość głębokie zagnieżdżenia (kiedyś napisałem coś, co było sprawdzeniem warunkowym wewnątrz forloop wewnątrz sprawdzania warunkowego wewnątrz forloop wewnątrz forloop). Czy istnieją ogólne wytyczne dotyczące limitów liczby zagnieżdżonych pętli/warunków, które posiadasz?


title: Co się stanie, jeśli podczas indeksowania nie zastosuję pliku robots.txt?

text: Jestem nowy w indeksowaniu sieci i testuję swoje roboty. Robię testy na różnych stronach w celach testowych. Podczas testów zapomniałem o pliku robots.txt. Chcę tylko wiedzieć, co się stanie, jeśli nie zastosuję się do pliku robots.txt i jaki jest bezpieczny sposób indeksowania?


title: Jak napisać kod, aby uzyskać wszystkie właściwości klasy?

text: Mam program, w którym chcę utworzyć nową instancję obiektu w zależności od wartości, biorę wartość, a następnie przeszukuję listę i używając tej listy tworzę nową instancję. Cóż, idzie idealnie. Ale jest taki problem, że muszę je wszystkie napisać ręcznie i zajmuje to dużo czasu. Chciałem wiedzieć, czy jest lepszy sposób na zrobienie tego, czy nie, oto kod C#, który mam publiczne Konto (int userId) { // tutaj poszukaj konta // wewnątrz List<Account>, które zwraca konto // następnie aktualizuję wartości dla tej instancji this.AccountLockedSince = account.AccountLockedSince; this.AuthenticationToken = konto.AuthenticationToken; this.CreateDate = konto.CreateDate; this.IsLocked = konto.IsLocked; this.IsVerified = konto.IsVerified; this.PasswordResetDate = konto.PasswordResetDate; this.PasswordResetToken = konto.PasswordResetToken; this.RequireEmailVerification = account.RequireEmailVerification; this.TokenExpires = konto.TokenExpires; this.UserId = konto.UserId; } .. jak widać, są to wszystkie właściwości klasy Account i zaktualizowałem je, ale nie jest to skuteczny sposób na zrobienie tego. Jakakolwiek wbudowana funkcja w frameworku C# .NET, która to obsłuży?


title: Jakie kursy CS powinienem wziąć jako data miner

text: chłopaki, jestem data minerem, przez większość czasu używam R, SAS do modelowania i eksploracji danych. Ale czasami pakiety w R nie są tym, czego chcę. Będzie idealnie, gdybym mógł rozwijać własne pakiety. Ale moje wykształcenie nie jest związane z informatyką i zawsze chcę nauczyć się kilku technik kodowania lub zagłębić się w informatykę, co może pomóc mi lepiej zrozumieć, jak kodować i eksplorować dane. Czy ktoś mógłby mi podać obszerną listę książek/kursów do nauczenia się, które będą pomocne w eksploracji danych? Dziękuję


title: Dlaczego Google nie używa aktualizacji Courgette do Androida?

text: Google ma zaawansowane narzędzie do porównywania zaprojektowane specjalnie dla skompilowanych plików binarnych o nazwie Courgette. Czy jest jakiś powód, dla którego nie używaliby tego w Androidzie i Sklepie Google Play do pobierania aktualizacji? W moim podstawowym zrozumieniu Javy wydaje się, że nie powinno być trudniej (a może nawet łatwiej?) Tworzenie takich „różnic” ze względu na „kod bajtowy” Javy. Czy się mylę? Czy są jakieś względy bezpieczeństwa? **Uwaga:** wiem, że jeśli ktoś z Google nie odpowie, nie będziemy wiedzieć na pewno. Ale pytam z oczywistych powodów – jestem programistą Androida i czasami dostaję notatki od ludzi narzekających na częste aktualizacje, więc jest to dla mnie poniekąd istotne. :)


title: ¡Porada Potrzebna! - Node.js, PHP lub Python, aby stworzyć wydajną witrynę nieruchomości podobną do Zillow czy Trulia?

text: Przede wszystkim przepraszam za mój zły angielski i przepraszam za moje pytanie dla początkujących/początkujących, robię co w mojej mocy z pomocą tłumacza google. Aby stworzyć witrynę nieruchomości podobną do Zillow lub Trulia, jaki język z tych trzech z odpowiednim ekosystemem narzędzi i frameworków jest bardziej odpowiedni (najlepsze narzędzie do pracy) dla tego typu stron internetowych i dlaczego, Node, PHP lub Python. Główne obawy: 1. Produktywność rozwoju. Jaki stos rozwojowy pozwala na szybszy rozwój witryny takiej jak wspomniana powyżej. 2. Szybkość renderowania HTML, szybkość ładowania strony i ogólna wydajność na urządzeniach odwiedzających (smartfony, komputery stacjonarne itp.), gdy wielu jednoczesnych użytkowników odwiedza witrynę. 3. Dla określonego poziomu wydajności, który z dwóch stosów programistycznych wymaga mniej zasobów serwera, liczby serwerów i procesora, pamięci na serwer. Doceniam każdą radę


title: Jakie technologie są zwykle używane do wdrażania usług dla przedsiębiorstw w .NET?

text: Próbuję zorientować się, jak to, co obecnie robię (wdrażanie usług korporacyjnych w Javie) byłoby zrobione w środowisku .NET. W .NET, czy zwykle odbywałoby się to przy użyciu: * IIS jako serwera? * C# jako język i WCF jako platforma? * BizTalk jako magistrala usług dla przedsiębiorstw, z usługą MSMQ jako bramą? Czy ktoś zaimplementował usługi zarówno w Javie, jak i .NET, a jeśli tak, czy istnieją jakieś poważne różnice paradygmatyczne, czy jest to dość podobne?


title: Dlaczego Apple usunęło obsługę Pythona w Mavericks, czyli Mac OS X 10.9?

text: W dość bezceremonialny sposób – Apple _usunął_ obsługę Pythona (przynajmniej z SDK) w 10.9. Python JEST nadal zainstalowany w systemie w ... /System/Library/Frameworks/Python.framework, ale próba _linkowania do niego_ w 10.9 SDK kończy się niepowodzeniem. Nawet po zainstalowaniu "Narzędzi CLI" nie ma Pythona w... /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks I Nie jestem _Pythonistą_ ... ale uważam, że to interesujące, że Apple usunął część łańcucha narzędzi programistycznych, który istnieje od tak dawna i był kiedyś tak obiecujący (na platformie Mac). Apple często próbuje skierować uwagę na pewne „metodologie”; ale historycznie, kiedy wtyczka została wyciągnięta – to koniec – przynajmniej w oku Apple. Czy to jest _oświadczenie_ firmy Apple, w stylu „ _Ludzie już nie używają Pythona.. wycofujemy wsparcie_ ”? Lub po prostu " _Przyjęcie PyObjC jest anemiczne, może możemy zmniejszyć rozmiar SDK o 3,1 MB_ "? Bez względu na motywację, prawdopodobnie jest to zmiana, która zostanie. Czy istnieją sugestie dotyczące obejścia w celu zachowania zgodności kompilacji i środowiska uruchomieniowego lub wgląd w przyczynę podjęcia decyzji?


title: Jaka jest dobra strategia testów integracyjnych?

text: Rozpoczynam pracę nad projektem, w którym chcę mieć dość dokładne pokrycie testów i mam luksus kierowania strategią testów. Ustaliłem wykonalny plan testów jednostkowych, a także zdecydowałem się użyć Gherkina do opisania funkcji i portu Cucumber do uruchamiania scenariuszy jako kompleksowych testów akceptacyjnych. Problem polega na tym, że wyczuwam lukę między tymi dwiema warstwami. Mogę przetestować wszystkie moje jednostki w izolacji i mogę przetestować, czy moje funkcje działają, ale mogę wymyślić inne rzeczy, które będę chciał przetestować. Pochodzę również z innego projektu z (słabo zaimplementowanymi) automatycznymi testami, które są bardzo kruche i są koszmarem konserwacji, a celem tych testów jest w większości zastąpienie ręcznego testowania regresji. Pisanie bardziej konserwowalnych testów jest koniecznością, ale na wyższym poziomie nie jestem pewien, czy nasze testy są właściwe. Jako przykład, biorąc pod uwagę aplikację internetową, powiedzmy, że istnieje formularz do dodania wydarzenia z datami rozpoczęcia i zakończenia. W ramach testu end-to-end możemy sprawdzić, czy faktycznie możesz dodać wydarzenie. Ale jeśli data rozpoczęcia jest późniejsza niż data zakończenia, otrzymasz komunikat o błędzie i nie sądzę, że sposób obsługi trywialnego błędu wejściowego użytkownika należy do pliku funkcji. Z drugiej strony wydaje się, że istnieje dość silne przekonanie, że testowanie jednostkowe interfejsu użytkownika nie jest tego warte; zamiast tego należy przeprowadzać automatyczne testy integracyjne. Więc co mam zrobić dla tego kodu? Czy generalnie testuję jednostkowo komponenty związane z komunikatami o błędach, a także to, czy ten formularz je pokaże, i pomijam automatyzację, że faktycznie się pojawiają? Czy zrobię powyższe, a następnie zautomatyzuję, że tylko jeden komunikat o błędzie wyświetla się zgodnie z przeznaczeniem i zakładam, że reszta będzie działać? Czy staram się zautomatyzować każdy inny potencjalny przypadek niepowodzenia dla każdego formularza? To uderza w środek testów integracyjnych, co do którego jestem nieufny. Z mojego doświadczenia wynika, że utrzymywanie dużej liczby testów integracyjnych nie wydaje się warte swojej ceny. Z drugiej strony istnieje funkcjonalność powyżej poziomu jednostki i poniżej poziomu funkcji, które idealnie chciałbym przetestować, zarówno w interfejsie użytkownika, jak i poza nim. I jestem zaniepokojony tym, jaki rodzaj pewności może przynieść automatyczna regresja, jeśli nie uderza we wszystko. Jestem w pełni chętny do pisania testów integracyjnych, ale w kontekście kiedy pisać testy, jakie testy pisać i ile pisać, jakie jest dobre podejście do rozwiązania tego problemu?


title: Problem przydziału gaszenia pożarów

text: Staram się opracować model do pracy nad problemem przydziału w obszarze strażaków. Biorąc pod uwagę n strażaków, m ciężarówek i z trwających pożarów, każdy o poziomie zagrożenia, spróbuj jak najlepiej rozdysponować zasoby. Czy jest jakaś praca na ten temat, którą mogę przeczytać, aby spróbować zrozumieć, jak powinienem sformułować mój problem (koszty itd.)? **EDYCJA:** Mam więcej szczegółów na temat modelu. Dla każdego poziomu zagrożenia istnieje minimalna liczba strażaków, która powinna być zagwarantowana, dając pierwszeństwo wyższym poziomom. Ciężarówki mają pojemność, a strażaków można przydzielić tylko wtedy, gdy jest ciężarówka, która zabierze ich do pożaru. Istnieje również ograniczenie mówiące, że pożar może zostać porzucony, jeśli jeden z 2 lub więcej poziomów powyżej nie ma minimalnej liczby. Czy to wygląda jak plecak? **EDYTUJ 2:** Dodaję to, ponieważ może to być pomocne dla kogoś, kto ma podobny problem. Zdecydowałem się rozwiązać to za pomocą drzewa. Jeśli chcesz uzyskać szczegółowe informacje, skontaktuj się z nami, a ja szczegółowo wyjaśnię algorytm. Zastrzeżenie: znam algorytmy przypisywania, takie jak na przykład węgierski, i to, czego tutaj szukam, nie jest pomocą w algorytmie per se, ale w sformułowaniu.


title: Dlaczego niektóre witryny internetowe zawierają „nazwę strony” w adresie URL?

text: W ogóle nie jestem programistą internetowym, więc naprawdę nie mam pojęcia: zauważysz, że strony takie jak Stack Exchange mają takie linki: http://programmers.stackexchange.com/questions/188078/policy-and-practice- konserwacja kodu Jak widać, łącze zawiera „nazwę strony” ( _Zasady i praktyki dotyczące konserwacji kodu_ ). Wiemy, że jest to niepotrzebne, ponieważ mógłbym zamiast tego użyć http://programmers.stackexchange.com/questions/188078. Co ciekawe, po użyciu tego linku witryna zastąpi go tym z nazwą strony. Moje pytanie brzmi: dlaczego niektóre strony internetowe umieszczają nazwę strony w swoich linkach? Jakie korzyści lub wady z tego wynikają? Jedyną zaletą, która przychodzi mi do głowy, jest to, że link staje się bardziej przyjazny dla użytkownika, ponieważ łatwiej jest zidentyfikować, o co chodzi w adresie URL. Ale zastanawiam się, czy za tym zachowaniem kryją się bardziej techniczne aspekty.


title: co oznacza „niezależna od zestawu narzędzi platforma internetowa”?

text: Cóż .. Jestem nowy w tworzeniu stron internetowych i chcę wiedzieć, co oznacza niezależny framework toolkit?


title: Mierzenie zależności przedsiębiorstwa od oprogramowania

text: W licytacji złożonego projektu dla klienta chciałem znaleźć sposób na określenie jego zależności od oprogramowania. Mają wielu ludzi, którzy wprowadzają ręcznie, a arkusze kalkulacyjne Excela zasilają wiele elementów, a także starszy kod i niektóre gotowe rozwiązania, które w żaden sposób nie wchodzą w interakcje. Jedną rzeczą jest powiedzenie „Potrzebujesz oprogramowania do prowadzenia firmy”, ale jak stworzyć miarę tego, aby móc powiedzieć coś w stylu „Obecnie w 68% jesteś uzależniony od oprogramowania” to czas, aby potraktować to poważnie przed rosnącą złożonością więcej kosztuje utrzymanie niż przepisanie?


title: Czy API w C++ jest lepszą alternatywą dla obliczeń bezpośrednio w SQL?

text: Muszę wykonać duże ilości obliczeń na datastorerd na zajętym serwerze Microsoft SQL. Czy byłoby szybciej, gdybym pobierał dane z serwera, wykonywał obliczenia lokalnie w C++ i być może później aktualizował tabele na serwerze, wszystko przez API? Wielkie dzięki.


title: Jak zarządzać/organizować, gdy trzeba wykonywać wiele zadań w wielu projektach jednoosobowych?

text: Jesteśmy zespołem programistów pracujących nad wieloma małymi projektami - programista może mieć 3 lub więcej 1-osobowych projektów do pracy i być w ciągłym ruchu. Może się wydawać, że Twój czas jest dość fragmentaryczny i przerywany w przechodzeniu między projektami. Czasami frustrujące, stresujące i przytłaczające. W idealnym świecie nie byłoby tak, ale wydaje się, że jest to bardzo powszechne. Kiedy jesteś w konfiguracji, w której nie można tego uniknąć, jak najlepiej to wykorzystać? Szukam pomysłów/wskazówek/metod, które pomogą zwiększyć produktywność i zmniejszyć stres, szczególnie w środowiskach wielozadaniowych. Co robić, a czego nie itp. Jakie granice, granice powinny być na miejscu? Jakie metodologie rozwoju będą, a które nie będą działać? Co wiesz, że działa? Czy istnieje dobry sposób na zorganizowanie takiego środowiska, aby było maksymalnie produktywne?


title: Gdzie mieści się Cel-C w kontinuum wydajności językowej?

text: Wydaje się, że jest dużo dyskusji na temat różnych zalet szybkości C lub C++ w porównaniu, powiedzmy, Java lub Python, ale rzadko widuję wspomnienie Objective-C. Z grubsza, na czym to polega, jeśli chodzi o wydajność językową?


title: Jakie są wskazówki dotyczące pisania dużej liczby testów jednostkowych?

text: Niedawno otrzymałem zadanie przetestowania niektórych obiektów COM aplikacji komputerowej, nad którą pracuję. W praktyce oznacza to pisanie dużej liczby (>100) testów jednostkowych w celu przetestowania różnych, ale powiązanych metod i obiektów. Podczas gdy same testy jednostkowe są dość proste (zazwyczaj jedna lub dwie kontrole typu Assert() na test), staram się znaleźć najlepszy sposób na napisanie tych testów w spójny, zorganizowany sposób. Odkryłem, że należy unikać kodowania kopiowania i wklejania. Stwarza więcej problemów, niż jest to warte, a nawet gorzej niż kod kopiuj i wklej w kodzie produkcyjnym, ponieważ kod testowy musi być częściej aktualizowany i modyfikowany. Skłaniam się ku wypróbowaniu podejścia OO, ale znowu sama liczba sprawia, że nawet to podejście jest zniechęcające z organizacyjnego punktu widzenia ze względu na troskę o konserwację. Nie pomaga również to, że testy są obecnie napisane w C++, co zwiększa złożoność problemów z zarządzaniem pamięcią. Jakieś przemyślenia lub sugestie?


title: Staż vs Open Source pod względem doświadczenia

text: Obecnie jestem studentem drugiego roku studiów licencjackich na kierunku Informatyka. Mam trudności z podjęciem decyzji o ubieganiu się o staż lub spędzeniu lata w domu, pracując w niektórych dziedzinach, w których czuję, że nie mam jeszcze dobrej znajomości (OOP, algorytmy) + praca nad jednym lub dwoma open source projekty, które uważam za naprawdę atrakcyjne. Nie zależy mi na zarobkach z praktyk, szukam tylko doświadczenia. Nadal będę robił staż w przyszłym roku, ponieważ jest to obowiązkowe (zasady Uczelni) i prawdopodobnie rok później. Co waży więcej dla pracodawcy i co przyniosłoby mi największe korzyści w dłuższej perspektywie?


title: Czy zdefiniowanie zmiennej, aby nazwać argument metody, jest dobrą praktyką?

text: Ze względu na czytelność często podczas wywoływania funkcji definiuję zmienne tymczasowe, takie jak poniższy kod var PreventUndo = true; zrób coś(zapobiegaj cofnięciu); Krótszą wersją tego byłoby doSomething(true); Ale kiedy wracam do kodu, często zastanawiam się, do czego odnosi się „prawda”. Czy istnieje konwencja na tego rodzaju zagadkę?


title: Czy ASF będzie nadal wspierać wszystkie swoje projekty Java w przyszłości?

text: Jak wszyscy wiecie, ASF opuścił JCP, a sprawy między nimi a Oracle nie idą tak gładko. Co więcej, Oracle przygotowuje JVM na poziomie korporacyjnym. Wydaje mi się, że to wszystko dowodzi, że Java przechodzi do środowiska o bardziej zamkniętym kodzie źródłowym. Jestem ciekaw, czy wpłynie to na wszystkie te projekty Apache zbudowane wokół Javy, m.in. Tomcat, Ant, Maven, Derby, Jackrabbit, żeby wymienić tylko kilka. Czy te projekty będą zagrożone zniknięciem z powodu konfliktów wokół Javy? Czemu?


title: Jak znaleźć poddrzewa w drzewie niebinarnym?

text: Mam drzewo niebinarne. Chcę znaleźć wszystkie „poddrzewa”, które są połączone z rootem. Poddrzewo to grupa łączy węzłów drzewa. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/aH7pw.png) każda grupa jest pokolorowana własnym kolorem. Jakie byłoby najlepsze podejście? Uruchom rekurencję w dół i w górę dla każdego węzła? Struktura danych każdego węzła drzewa to lista dzieci, lista rodziców. (rodzaj dzieci i rodziców to węzły drzewa) **Wyjaśnienie:** Grupa zdefiniowana, jeśli istnieje rodzaj „zamknięcia” między węzłami, w którym sam korzeń nie jest częścią zamknięcia. Jak widać na wykresie nie możesz podróżować z różu do innych węzłów (NIE MOŻESZ używać roota). Z brązowego węzła możesz podróżować do jego dziecka, aby utworzyć inną grupę. Wreszcie możesz podróżować z dowolnego węzła niebieskozielonego do innych węzłów niebieskozielonych, aby utworzyć inną grupę


title: Jak utrzymać duży i złożony produkt programowy w utrzymaniu przez lata?

text: Od wielu lat pracuję jako programista. Z mojego doświadczenia wynika, że projekty stają się coraz bardziej złożone i niemożliwe do utrzymania, ponieważ coraz więcej programistów angażuje się w rozwój produktu. Wydaje się, że oprogramowanie na pewnym etapie rozwoju ma tendencję do stawania się „hakerskie” i „hakerskie”, zwłaszcza gdy żaden z członków zespołu, który definiował architekturę, nie pracuje już w firmie. To frustrujące, że deweloper, który musi coś zmienić, ma trudności z uzyskaniem pełnego obrazu architektury. Dlatego istnieje tendencja do naprawiania problemów lub wprowadzania zmian w sposób, który działa wbrew oryginalnej architekturze. Rezultatem jest kod, który staje się coraz bardziej złożony i jeszcze trudniejszy do zrozumienia. Czy jest jakaś pomocna rada, jak utrzymać kod źródłowy naprawdę możliwy do utrzymania przez lata?


title: Czego oczekuje się od programisty jako stażysty?

text: Zostałem zatrudniony jako stażysta w firmie zajmującej się głównie inżynierią lądową i środowiskową. Jestem ich jedynym programistą, a projekt, który mi przydzielili, wydaje się niemożliwy dla kogoś z moim doświadczeniem. Jestem studentem trzeciego roku inżynierii komputerowej, pracuję nad moim licencjatem Mój program to narzędzie, które organizuje dziesiątki tysięcy pozycji i wykonuje liczne obliczenia na podstawie określonych przez użytkownika ograniczeń...wszystko wyświetlając wykresy i wykresy wyników różnych scenariuszy w przyjaznym dla użytkownika interfejsie. Mam 2-3 miesiące na zrobienie tego wszystkiego samemu. Udało mi się zrobić dobry postęp, ale jednocześnie jestem przerażony, że nie mogę dostarczyć na czas naszym klientom i że mogę używać okropnych technik kodowania, które spowodują błędy i błędy, gdy narzędzie stanie się bardziej złożone. Wkrótce dowiem się, że ten program musi połączyć się z bazą danych i będzie ponownie używany przez innych klientów. Czy jest to prawdopodobna praca nawet dla początkujących programistów? Czuję się, jakbym dostał pracę na wyższym szczeblu, ale nie mam się do kogo zwrócić i zapytać, czy robię to dobrze, z wyjątkiem internetu i wariuję od ciągłej presji, aby zrobić to wszystko poprawnie i na czas . Jakakolwiek rada?


title: czy są jakieś narzędzia do konwersji ogólnego przeznaczenia XML na HTML?

text: Nie wiem, jak to powiedzieć... XIB używa xml do przechowywania informacji UIElement, podobnie do .Net GUI. Czy są jakieś rzeczy typu open source, które również konwertują plik xml na układ html?