title: Jaki jest najlepszy sposób na ustawienie odległości i wysokości systemu z trzema monitorami?

text: Mam szczęście, że mój pracodawca zapewnia konfigurację z trzema monitorami. Zastanawiam się jednak, czy większy stopień odwrócenia głowy i bliskość monitorów nie powoduje bólu postawy. Czy istnieją jakieś porady lub wytyczne dotyczące _potrójnych_ monitorów, które mogą być przydatne?


title: Aktualne najlepsze praktyki/metody kodowania DAL VB.NET w SQL Server

text: Jakie są aktualne najlepsze praktyki/metody kodowania DAL VB.NET w programie SQL Server? Próbuję szukać, ale nie mogę znaleźć odpowiednich słów.


title: Jak C++ obsługuje wielokrotne dziedziczenie ze wspólnym przodkiem?

text: Nie jestem facetem od C++, ale jestem zmuszony o tym pomyśleć. Dlaczego dziedziczenie wielokrotne jest możliwe w C++, ale nie w C#? (Znam problem z diamentami, ale nie o to tutaj pytam). Jak C++ rozwiązuje niejednoznaczność identycznych sygnatur metod dziedziczonych z wielu klas bazowych? I dlaczego ten sam projekt nie został włączony do C#?


title: Czy każda strona to nowy widok?

text: Właśnie zacząłem budować aplikację na iOS i chciałem uzyskać informację zwrotną na temat widoków. Mam specyfikacje dotyczące strony aktywności Rejestrowanie aktywności Tworzenie aktywności Zapisz Każda ze specyfikacji pokazuje inną funkcję, ale czy każda z nich byłaby zupełnie nowym widokiem w mojej aplikacji na iOS?


title: Wstrzykiwanie zależności — wzorzec łańcucha zależności

text: W moim ostatnim dużym projekcie bardzo mocno używałem wstrzykiwania zależności. Zacząłem od wstrzykiwania konstruktora, ale nawet dwie lub trzy zależności zaowocowały naprawdę brzydkim kodem. public MyClass(IDependency1 dependency1, IDependency2 dependency2 IDependency3 dependency3) Nie jestem fanem wstrzykiwania właściwości. Niektórzy twierdzą, że oznacza to „opcjonalną” zależność. Myślę, że mają na myśli to, że będzie domyślna zależność (klasa produkcyjna), ale podczas testu można ją zastąpić modelem obiektu. Wiele razy moje zależności też mają zależności, więc nie mogę podać wartości domyślnej, chyba że użyłem singletona lub czegoś takiego. Mój problem z wstrzykiwaniem właściwości polega na tym, że wolę w pełni zainicjowane obiekty i nie chcę przypadkowo zapomnieć o wyśmiewaniu zależności podczas testu. Więc znalazłem kompromis. Stworzyłem "obiekt parametrów", który miał właściwości dla wszystkich moich zależności. Przekazałem je moim konstruktorom. Miało to tę zaletę, że mój kod był nieco czystszy _i_ mogłem zignorować niektóre zależności podczas testu, jeśli nie zostały dotknięte. Na podstawie opinii odniosłem wrażenie, że to zły pomysł. Był to wstrzykiwanie konstruktora lub wstrzykiwanie parametrów - bez kompromisów. Później zdałem sobie sprawę, że te obiekty parametrów czasami stawały się własnymi klasami (lub zbiorem klas). Wtedy odkryłem ciekawy wzór. Wiele obiektów biznesowych jest zależnych od innych obiektów biznesowych, które mają własne zależności. Skończyło się na ciekawej strukturze danych, podobnej do połączonej listy. ![Prosty łańcuch zależności](http://i.stack.imgur.com/zvN6P.png) Ta struktura danych może stać się dość złożona w zależności od liczby oddziałujących klas. W większości przypadków struktura była bliższa drzewu n-arnemu. Każdy obiekt parametru może być połączony z dowolną liczbą innych obiektów (w tym innymi obiektami biznesowymi). Obiekty biznesowe były węzłami drzewa, a obiekty parametrów przypominały łączące je krawędzie. ![Drzewo złożonych zależności](http://i.stack.imgur.com/BvnPD.png) Myślę, że połączenie wszystkich tych obiektów razem bez użycia deklaratywnego frameworka wstrzykiwania zależności byłoby paraliżujące. Framework do wstrzykiwania zależności, którego używałem, w najgorszym przypadku przechodził 8 poziomów w głąb mojego kodu, budując zależności od dołu do góry. Obiekty parametrów zwykle po prostu ujawniają zależności. W rzadkich przypadkach ukrywałem je za przyjaznymi wywołaniami funkcji i robiłem z nich własne obiekty biznesowe (zwykle skutkowało to kolejnym obiektem parametru). Musiałem sobie przypomnieć, że obiekty parametrów istnieją tylko dlatego, że nie chciałem konstruować zależności w konstruktorze (ani przekazywać ich do konstruktora). Tworzenie nowych obiektów biznesowych miało sens dopiero wtedy, gdy zacząłem się powtarzać. Nawet wtedy skończyło się na eksplozji obiektów parametrów. Przeczytałem wiele książek wyjaśniających, że taka sytuacja nigdy nie powinna mieć miejsca. Klasy powinny mieć bardzo mało zależności. To był znak, że moje zajęcia zrobiły „za dużo”. Jednak w większości takich przypadków obiekt biznesowy korzystał z danych z wielu tabel baz danych (repozytoriów), ustawień konfiguracyjnych, usług itp. w celu obliczenia. Miało to miejsce najczęściej przy realizacji szeregu kroków składających się na jednostkę pracy. Kiedy N rzeczy jest potrzebnych do wykonania zadania, najlepszym, co możesz zrobić, to wypchnąć te N rzeczy do innych klas lub na stos wywołań. Czy jedna klasa z 6 zależnościami jest lepsza czy gorsza niż 3 klasy z dwiema zależnościami każda? Mam nadzieję, że uzyskam informację zwrotną na temat tego podejścia do wstrzykiwania zależności - w odniesieniu do architektury warstwy biznesowej.


title: Czy przydatne byłoby przeniesienie JPype do Pythona 3?

text: Mam projekt open source, który moja firma chciałaby, żebym zrobił z małym zespołem, tworząc adapter dla bazy danych Oracle NoSQL do użycia w Pythonie, ale aby to zrobić, musielibyśmy mieć możliwość wykonywania połączeń do działającego serwera Java na którym działa Oracle NoSQL. Rozglądając się po naszych opcjach, natrafiliśmy na JPype, który wydaje się być najlepszą opcją. Niestety JPype nie był aktywnie rozwijany od kilku lat, co samo w sobie jest wadą, ale co ważniejsze, obstawiam, że nie działa z Pythonem 3.x. Więc teraz myślimy, że najlepiej byłoby dla nas rozwidlić JPype i stworzyć wersję open source, która jest zgodna z Pythonem 3.x, lub zrobić to z istniejącym projektem, jeśli możemy skontaktować się z gościem, który kiedyś utrzymać go. Jedyną alternatywą, jaką widzimy, byłaby sama współpraca z JNI, co wydaje się trudniejsze. Zastanawiam się od "prawdziwych" programistów Pythona (jestem przede wszystkim programistą Java), czy port JPype do Pythona 3.x byłby użyteczny sam w sobie, czy też byłoby to bardziej po prostu czymś, co byłoby przydatne tylko w tym konkretnym przypadku użycia.


title: Pisanie i rozumienie kodu

text: Potrafię pisać kod. Potrafię czytać kod, ale nie potrafię zaimplementować dobrego kodu. Jak rozwinąć głębokie zrozumienie wszelkich frameworków lub rzeczy, nad którymi pracujemy? Czy zajmuje się dokumentacją i pracuje nad nią? Widziałem w tej formie ludzi, którzy świetnie rozumieją rzeczy, nad którymi pracują. Jak to jest możliwe? Jak nie drapać tylko po powierzchni? Jak zarządzać czasem vs nauką vs produktywnością?


title: Czy każda liczba w kodzie jest uważana za „magiczną liczbę”?

text: Czyli każda liczba w kodzie, którą wysyłamy do metody jako argument, jest uważana za liczbę magiczną? Dla mnie nie powinno. Myślę, że jeśli jest jakaś liczba, powiedzmy, że jest to minimalna długość nazwy użytkownika i zaczynamy używać "6" w kodzie...to tak, mamy problem z obsługą, a tutaj "6" to magiczna liczba....ale jeśli wywołujemy metodę, której jeden z jej argumentów przyjmuje liczbę całkowitą, na przykład jako i-ty element kolekcji, a następnie przekazujemy "0" do tego wywołania metody, w tym przypadku nie widzę tego "0" jako magicznego numer. Co myślisz?


title: Czy wzorzec stanu narusza zasadę substytucji Liskov?

text: Ten obraz pochodzi z Applying Domain-Driven Design and Patterns: With Przykłady w C# i .NET ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/UCMr1.png) To jest diagram klas dla **Wzorzec stanu**, w którym „Zamówienie sprzedaży” może mieć różne stany w okresie istnienia. Dozwolone są tylko niektóre przejścia między różnymi stanami. Teraz klasa `OrderState` jest klasą `abstrakcyjną` i wszystkie jej metody są dziedziczone do jej podklas. Jeśli weźmiemy pod uwagę podklasę `Cancelled`, która jest stanem końcowym, który nie pozwala na żadne przejścia do innych stanów, będziemy musieli `zastąpić` wszystkie jej metody w tej klasie, aby zgłosić wyjątki. Czy to nie narusza zasady substytucji Liskova, skoro podwładny nie powinien zmieniać zachowania rodzica? Czy zmiana klasy abstrakcyjnej na interfejs rozwiązuje ten problem? Jak to może zostać naprawione?


title: Dlaczego w tym artykule stwierdza się, że edukacja podyplomowa uwalnia od obaw, takich jak wydajność liczb całkowitych opartych na sprzęcie?

text: Cytując The Evolution of Haskell Programmer, > wykształcenie wyższe ma tendencję do uwalniania od drobnych obaw związanych np. z > wydajnością sprzętowych liczb całkowitych Co dokładnie to sugeruje? Czy po ukończeniu studiów ktoś tak bardzo interesuje się abstrakcyjnymi ideami, że nie myśli o sprzęcie? Albo że sprzęt jest również abstrakcyjny i ktoś bardziej interesuje się algorytmami? Próbuję zrozumieć, na jakich podstawach opiera się to zdanie.


title: Jakiego krytycznego programowania iPhone'a (metody/umiejętności/języki/itp.) nauczyłbyś nowych nastoletnich programistów?

text: Licea na Alasce chcą uczyć swoich uczniów umiejętności programowania iPhone'a. Od czego byś zaczął? Dokładniej: * Jakich języków uczysz, pierwszego, drugiego, trzeciego? Czy w ogóle uczyłbyś języków? * Z jakimi programami chciałbyś uczyć? * Jak zacząłbyś od kogoś ćwiczyć umiejętności programowania? * Czy uczysz takich rzeczy jak agile, scrum lub jakikolwiek system zarządzania pracą? Od jakich umiejętności krytycznych byś zaczął? Czy byłeś szkolony przez nauczycieli, których naprawdę lubiłeś? Czy poleciłbyś jakichś nauczycieli lub trenerów?


title: Używanie Microsoft Word/Outlook do publikowania treści w Wordpress

text: Mam za zadanie zbudować narzędzie, które pozwoli użytkownikom publikować w Wordpress z ich komputera przy użyciu MS Word i Outlook. Wiem, całkowicie pokonam cel posiadania Wordpressa, ale podstawowe wymagania to: 1) Należy zachować format, w tym obrazy 2) Zapewnienie interfejsu do kategoryzowania i tagowania dokumentu Po przeprowadzeniu pewnych badań myślę, że można to osiągnąć poprzez stworzenie makro VBA, które zapisuje Word do formatu html i wysyła je przez http do Wordpress XMLRPC Jednak nie do końca wiem, jak dołączyć obrazy i jak zachować synchronizację kategorii z Wordpress i makra. Chciałbym usłyszeć od każdego, kto ma w tym doświadczenie i sugestie, jak to wdrożyć.


title: Co robisz z blokiem kodera?

text: Ostatnio było trochę ciężko. Zasadniczo znam wszystkie rzeczy, których potrzebuję i wszystkie drogi, aby dostać się tam do pracy. Nie było prawdziwego problemu ze zbyt dużą złożonością, a wydajność jest dobra. Mimo to, po trzech dużych projektach w tym roku, mój umysł zachowuje się trochę dziwnie. **To tak, jakbym był przyzwyczajony do pracy w O(1+log(N-neatTricks)) ale z jakiegoś powodu przetwarza się w O(N^2)!** Doświadczyłem pewnego rodzaju wypalenia po długich terminach i żmudne projekty wcześniej, ale kiedy przeradza się w dłuższe doświadczenie, nie znalazłem zwykłych podejrzanych, którzy byliby pomocni. * Chodź więcej spacerów * Pracuj nad innym kodem * Przeprojektuj wszystko, aż poczuję się intensywnie zmotywowany, aby to po prostu zrobić (trochę działa) Jak programista może odzyskać od tej konkretnej dziury w twojej głowie programowanie pozostawione po tym, jak został mentalnie splądrowany przez te cholerne korporacje i ich fantazje pieniądze? Mam nadzieję, że niektórzy z was mają lepsze pomysły, ponieważ naprawdę przydałaby mi się kolejna runda grabieży i grabieży. Często zastanawiałem się, czy istnieją specjalne łamigłówki lub jakaś aktywność, która odstresowałaby splątaną równowagę lewej i prawej półkuli mózgu programiści często mają do czynienia. Czy jakieś specjalne techniki, działania, cokolwiek wydaje się szczególnie pomagać w namyśle dewelopera? **EDYTUJ:** > Chociaż niekoniecznie mój ulubiony pomysł przedstawiony, myślę, że najpierw Francesco > poprawka jest _prawdziwą_ odpowiedzią na często napotykany problem. Widzę, jak > to pytanie może być postrzegane jako raczej subiektywne lub powszechne, ale muszę > zobaczyć opis tego bardzo szczególnego zdarzenia. Być może powinniśmy znaleźć > odchylenie standardowe różnych typów nastrojów zgłaszanych tylko przez programistów > mające i nazwać to syndromem czegoś lub innego.


title: Kiedy absolwent powinien ubiegać się o pracę programisty w firmach technologicznych?

text: Jak wcześnie firmy technologiczne oczekują od kandydatów do pracy i jaki jest najkrótszy czas od złożenia wniosku do firmy do rozpoczęcia w niej pracy? Na przykład, jeśli kończę studia w maju i chcę rozpocząć pracę w lipcu lub sierpniu, kiedy powinienem ubiegać się o pracę w firmach technologicznych? Zakładam, że małe firmy patrzą na kandydatów tylko na kilka tygodni, zanim są gotowi do pracy, ale co z dużymi firmami, takimi jak Google czy Facebook?


title: Grupowanie instancji klasy w grafie odwołań do obiektów dla serializacji z wieloma wpisami

text: Moje pytanie dotyczy najlepszego sposobu grupowania grafu instancji klas wokół specjalnie oznaczonych obiektów ( _obiekty_ to węzły grafu, a odwołania do siebie to skierowane krawędzie grafu). Aby lepiej wyjaśnić moje pytanie, pozwól mi wyjaśnić moją motywację: obecnie używam umiarkowanie złożonego systemu do serializacji danych wykorzystywanych w moich projektach: * „zaznaczone” obiekty mają określone atrybuty, które przechowują „wpis zapisu”: ścieżkę do powiązanego plik na dysku (ale można to zrobić dla dowolnego typu pamięci pod warunkiem odpowiedniego interfejsu) * Te obiekty mogą być następnie serializowane automatycznie (np.: `obj.save()`) * Serializacja zaznaczonego obiektu `'a'` zawiera domyślnie wszystkie obiekty „b” dla których „a” ma odniesienie bezpośrednio s.t: „a.b = b” lub pośrednio s.t.: „a.c.b = b” dla jakiegoś obiektu „c” wpisy magazynowe do określonych obiektów. Następnie mam obiekty typu „kontener”, które: 1. mogą być serializowane w podobny sposób (w rzeczywistości są lub mogą być „oznaczone”) 2. nie serializują w swoich wpisach do przechowywania „zaznaczonych” obiektów (z bezpośrednim odniesieniem) : jeśli „a” i „a.b” są zaznaczone, „a.save()” wywołuje „b.save()” i przechowuje „a.b = storage_entry(b)” Tak więc, jeśli serializuję „a””, to zserializuje automatycznie wszystkie obiekty, do których można uzyskać dostęp z „a” poprzez wykres odniesień do obiektów, prawdopodobnie w wielu wpisach. To jest to, czego chcę i zwykle zapewnia mi funkcje, których potrzebuję. Istnieją jednak pewne ograniczenia strukturalne tego podejścia: 1. zapisywanie wielu wpisów może działać tylko poprzez bezpośrednie połączenia w obiektach „kontenerowych” oraz 2. istnieją sytuacje o niezdefiniowanym zachowaniu, na przykład w przypadku dwóch „zaznaczonych” obiektów '`i ''b'' oba mają odniesienie do nieoznaczonego obiektu ''c''. W tym przypadku mój system będzie przechowywał „c” zarówno w „a”, jak i „b”, tworząc niejawną kopię, która nie tylko podwaja rozmiar pamięci, ale także zmienia wykres odniesień do obiektów po ponownym załadowaniu. Zastanawiam się nad uogólnieniem procesu. Oprócz praktycznych pytań dotyczących implementacji (koduję w Pythonie i używam Pickle do serializacji moich obiektów), istnieje ogólne pytanie dotyczące sposobu dołączania (klastrowania) nieoznaczonych obiektów do oznaczonych. Tak więc moje pytania to: * Jakie są ważne kwestie, które należy wziąć pod uwagę? Zasadniczo, dlaczego nie użyć dowolnego algorytmu analizowania grafów z zachowaniem „dołącz do ostatniego zaznaczonego węzła”. * Czy jest jakaś praca nad tym problemem, praktyczna lub teoretyczna, o której powinienem wiedzieć? **Przykład prostego wykresu obiektów do serializacji:** ![](http://i.stack.imgur.com/nVpih.jpg) Koła to obiekty i odwołania do strzałek. Pomarańczowe kółka to zaznaczone obiekty. Podczas serializacji „A” obiekt „B” do „E” powinien być serializowany, ale nie obiekty niebieskie, ponieważ nie są dostępne z „A”. Teraz `B` jest serializowany we własnym wpisie (tj. pliku), a pytanie brzmi, jak wybrać miejsce serializacji obiektów od `C` do `E`, do `A` lub `B`? Trochę refleksji nad tym przykładem: * obiekt `C` jest osiągalny tylko z `A`, więc powinien być do niego dołączony * aby osiągnąć `E`, konieczne jest przekazanie przez `B`, więc `E` powinno być dołączone do `B` * a co z `D`? Ponieważ po serializacji, jeśli załadowane jest `B` (a nie `A`), `D` również powinno być załadowane, ale nie `A`. Zatem `D` powinno być serializowane we wpisie `B`. **Uwaga:** dodałem tag `baza danych`, ponieważ myślę, że odpowiedź może pochodzić z tych pól, nawet jeśli pytanie nie jest tak naprawdę.


title: wywołaj podfunkcję na podstawie wartości zmiennej

text: Mam funkcję zawierającą inne funkcje. Funkcje te są wywoływane na podstawie wartości zmiennej `action`. Te podfunkcje są logicznie pogrupowane - tzn. wszystkie zajmują się manipulacją plikami. Każda funkcja ma od 2 do 5 linii. Chciałbym poprawić styl. Czy istnieje bardziej zwięzły sposób osiągnięcia tego celu niż ten, który mam poniżej? Podaję, że istnieje dziennik definiowania funkcji, które nie zawierają wielu LOC. def moja_funkcja(akcja): return { '1': func_a, '2': func_b, '3': func_c, '4': func_d}.get(akcja, błąd)() def func_a(): ... . .. return ... def func_b(): ... ... ... return ... def func_c(): ... ... return ... def func_d(): ... ... return ... def err(): return *discaimer: rzeczywiste funkcje mają nazwy logiczne. Mój problem dotyczy mnożenia się funkcji do zdefiniowania


title: Jakie testy jednostkowe na urządzenia mobilne/iOS należy napisać?

text: Przeczytałem książkę TDD autorstwa Kenta Becka, a także inne tutoriale dotyczące testów jednostkowych. Większość samouczków wyjaśnia, jak korzystać z narzędzia lub podaje proste/niemądre przykłady. Tutaj na stackoverflow jest kilka pytań dotyczących _JAK_ przetestować na iOS, ale chcę wiedzieć, _CO_ powinno być testowane na iOS/aplikacjach mobilnych w ogóle. W szczególności: 1. Jakiego rodzaju testy należy napisać dla wywołań sieciowych/API? (Czy rzeczywiście trafiasz do punktu końcowego, czy po prostu makietasz JSON? Testujesz obsługę błędów?) 2. Jakiego typu testy należy napisać, aby utrwalić dane (zwłaszcza Core Data) 3. Łatwo jest pisać testy dla warstwy modelu ( i wszelkie funkcje modelu), ale co należy przetestować na warstwie kontrolera? 4. Jakie inne testy na telefony komórkowe możesz napisać? Dla większej jasności, jaki test jednostkowy możesz napisać, jeśli tworzysz aplikację Netflix, która zawiera takie funkcje, jak przesyłanie strumieniowe wideo, buforowanie obrazów, trwałość lokalna, połączenia sieciowe itp.?


title: Jak zaplanować architekturę sieciową aplikacji klient/serwer, aby poradzić sobie z wieloma niepowiązanymi wymianami danych?

text: Koduję parę aplikacji serwer/klient w Javie, gdy się o tym dowiaduję. Mam podstawową funkcjonalność wysyłania wiadomości na serwer i parsowania jej, ale myśląc o pełnym obrazie ich komunikacji, nie mogę się doczekać, gdzie się udać. Zarówno klient, jak i serwer muszą być w stanie zainicjować wymianę danych, więc muszę mieć jeden wątek odczytu z każdej strony, przez cały czas. Co więcej, gdy ktoś inicjuje wymianę, musi nasłuchiwać odpowiedzi. Gdybym jednak to zrobił, miałbym dwa wątki odczytujące dane, które, jak sądzę, nie zakończyłyby się dobrze, ponieważ z mojego zrozumienia nie byłbym w stanie upewnić się, że dane zostaną odczytane w wątku, którego chcę. Widzę kilka opcji, ale nie jestem pewien, czy posuwam się za daleko z każdym rozwiązaniem, ponieważ moja wiedza nie pozwala mi myśleć zbyt daleko. 1. Użyj tylko pierwszego wątku, który pierwotnie oczekiwał na dane przed wymianą, aby odczytać również odpowiedź na zapytanie wysłane właśnie przez inny wątek i przekazać dane tam, gdzie one należą. Brzmi to trudne. Jeśli przeczytam dane w tym samym wątku, który o to poprosił, byłoby to bardzo proste w porównaniu z tym. 2. Rozpocznij odczytywanie InputStream w tym samym wątku, który zażądał danych i spraw, aby wątek, który pierwotnie nasłuchiwał, poczekał. Mój problem z tym polega na tym, że jeśli przez tego samego klienta przychodzą inne dane, które nie są związane z zapytaniem, które właśnie zostało wykonane, zostaną one pobrane przez ten wątek zamiast przez inny, co w pewnym sensie niweczy cel odczytywania danych tutaj . 3. Nawiąż kolejne połączenie od klienta do innego portu, po ustanowieniu pierwszego. Wtedy mógłbym wykorzystać jedno gniazdo do wymian inicjowanych przez drugą stronę, a drugie do nasłuchiwania odpowiedzi na zapytania zgłoszone w międzyczasie. W ten sposób wiedziałbym dokładnie, dokąd zmierza, ale czy nie miałbym tego samego problemu w dalszej części drogi, gdybym miał dwa zapytania oczekujące na dane w tym samym czasie? Brzmi to jak prosta funkcjonalność, trywialna do znalezienia w wielu aplikacjach, więc zgaduję, że istnieje jakaś wypróbowana i prawdziwa metoda i nie ma powodu, abym próbował wymyślać koło na nowo. Podsumowując, jaki jest zalecany sposób konfigurowania aplikacji klient/serwer, które radzą sobie z prawdopodobnie nakładającymi się oknami dialogowymi, inicjowanymi przez którekolwiek z nich w nieprzewidywalnych momentach? Zacząłem modyfikować niektóre części pytania, aby było nieco jaśniejsze, ale skończyło się na tym, że prawie całkowicie je przepisałem. Jeśli nadal jest trochę zagmatwany, to dlatego, że jestem zdezorientowany. Myślę, że brakuje mi jakiegoś prostego punktu, ale nie udało mi się znaleźć przykładów, które to pokazują.


title: Python w Big Data?

text: Czy Pythona można efektywnie zaimplementować w obszarze big data? Konkretnie buduję aplikację webową, która analizuje naprawdę duże dane w dziedzinie medycznej opieki zdrowotnej, składające się z historii medycznej i ogromnych danych osobowych. Potrzebuję porady, jak efektywnie i wydajnie obsługiwać bardzo duże dane w Pythonie. Czy dostępne są również niektóre pakiety open source w Pythonie, które mają wysoką wydajność i efektywność w obsłudze dużych zbiorów danych? O użytkownikach i danych: Każdy użytkownik ma około 3 GB danych. Użytkownicy są pogrupowani na podstawie kręgów ich rodziny i znajomych, a następnie dane są analizowane, aby przewidzieć ważne informacje i współzależności. Obecnie mówię o 10 000 użytkowników i będzie szybko wzrastać liczba użytkowników.


title: Jak działa jedna sieć na konferencjach programistycznych?

text: Nadal jestem w Microsoft TechEd, a odpowiedź na moje pytanie o to, jak efektywnie wykorzystać czas na konferencjach programistycznych, była zdecydowanie „sieciowanie jest najbardziej użyteczną częścią konferencji programistycznych”. Problem: Nie mam pojęcia, jak podejść do tego zadania. Zawsze byłem introwertykiem. W szkole i w pracy generalnie nie miałem problemów, ponieważ jest wystarczająco dużo ekstrawertyków, którzy podchodzą do mnie, że przez lata zyskałem niesamowitych przyjaciół. Jednak na konferencjach wydaje się, że większość jest introwertyczna, podobnie jak ja, a ci, którzy nie wydają się być sprzedawcami. Kilka razy czułem się dobrze, podchodząc do ludzi, było to po sesji, podczas której przez cały pokój toczyła się zdrowa dyskusja, a kiedy tylko mam odwagę podejść i porozmawiać z niektórymi ludźmi, wychodzą i przechodzą do innych rzeczy . Czy są jakieś konkretne książki, które powinienem przeczytać? Porady mogę wziąć? Coś, jeśli chodzi o zbliżanie się do ludzi, których nie znasz? Bo za każdym razem, gdy próbuję, czuję się jak niezręczny bałagan. :( (O dziwo, nie mam problemów z rozmową z grupą ludzi - to sprawy jeden na jednego, które mnie wkurzają :P) (A tak przy okazji, jeśli ktoś stąd też jest i chciałbym się spotkać, żeby porozmawiać o rzeczach, jestem grą :P) **Więc, jak introwertyczny programista taki jak ja może skutecznie komunikować się na konferencjach programistycznych?**


title: Sugestie dotyczące zarządzania częściowo ustrukturyzowanymi odsyłaniami e-maili?

text: Firma, w której pracuję, wysyła bardzo dużo maili, a w zamian otrzymujemy dużo zwrotów. Obecnie nie mamy dobrego sposobu na ich sortowanie i pomagamy nam archiwizować te rutynowe, jednocześnie stawiając te ważne przed ludzkimi oczami. Z punktu widzenia tego rodzaju odbicia e-maili nie są dobrze ustrukturyzowane, ale istnieją pewne wzorce. Istnieje wstępny system, nad którym trwają prace, ale staje się on niemożliwym do zarządzania zbiorem skomplikowanych wyrażeń regularnych. Przekonałem moją firmę, aby pozwoliła mi zabrać do domu część odbitek i mam nadzieję, że znajdę lepszy sposób na poradzenie sobie z nimi w wolnym czasie. To zarówno okazja do nauczenia się czegoś ciekawego, jak i zrobienia czegoś wartościowego. Jak podszedłbyś do tego problemu? Czy istnieje klasa metod lub algorytmów, które dobrze pasują do tej sytuacji? Dziękuję Ci.


title: Naśladowanie „RBAC AuthZ” programu Exchange Server we własnej aplikacji... (czy jest coś podobnego?)

text: Exchange 2010 ma model delegowania, w którym grupy poleceń cmdlet winrm są zasadniczo pogrupowane w role i role przypisane do użytkownika. ![Exchange Roles Image](http://i.stack.imgur.com/CYzCU.jpg) (Źródło obrazu) To świetny i elastyczny model, biorąc pod uwagę, jak mogę wykorzystać wszystkie zalety PowerShell, używając odpowiedniego technologie na poziomie (WCF, SOAP itp.) i nie wymagają dodatkowego oprogramowania po stronie klienta. ![obraz przedstawiający działanie zdalnego administratora Exchange 2010](http://i.stack.imgur.com/G44ru.jpg) (Źródło obrazu) **Pytania** 1. Czy mogę wykorzystać Model delegowania programu Exchange w mojej aplikacji .NET? 2. Czy ktoś próbował naśladować ten model? 3. Jeśli muszę zacząć od zera, jak mam naśladować to podejście?


title: Czy złożone wyrażenie EL należy zastąpić pojedynczym getterem javabean?

text: W JSF, jeśli mam komponent, który warunkowo renderuje w oparciu o wiele zmiennych, jaki jest optymalny sposób obsługi instrukcji render... czy logika powinna znajdować się w deklaracji komponentu, czy w jakiejś formie klasy pomocniczej? Tekst hau jest wyświetlany tylko wtedy, gdy zwierzę jest słoniem lub psem i zwierzę nie jest nieme. Opcja 1: Implementacja w widoku: <h:outputText id="text" value="woof" rendered="#{animal.type == 'elephant' or animal.type == 'dog' and not(animal.mute )}"/> lub Opcja 2: Enkapsulacja: <h:outputText id="text" value="woof" rendered="#{animal.barkingAnimal}"/> z implementacją: public class Animal { public boolean isBarkingAnimal() { return ("pies".equals(getType()) || "słoń".equals(getType())) && !isMute(); } ... Więc oba działają... ale jaki jest właściwy sposób na rozwiązanie tego scenariusza?


title: W jaki sposób Prawo Demeter odnosi się do systemów obiektowych w odniesieniu do sprzężenia i spójności?

text: W jaki sposób **Prawo Demeter** stosuje się do systemów obiektowych ze sprzężeniem i spójnością? Czytałem książkę „Tworzenie oprogramowania i praktyka zawodowa” i natknąłem się na rozdział o LoD i byłem ciekaw, jak ta zasada jest stosowana w systemach zorientowanych obiektowo.


title: Sędzia programowania z systemem versus

text: Poszukuję systemu sędziów programistycznych, który wspierałby stawianie programów zawodników przeciwko sobie w "meczach". Formatem może być na przykład styl turniejowy lub ranking szachowy, ale to nie jest takie ważne. Dobrym przykładem może być Google AI challenge (http://aichallenge.org/) Jedyne systemy, jakie do tej pory znalazłem, to „zwykli” sędziowie programowania, czyli ci, którzy mogą sprawdzić, czy dany program przechodzi, czy nie, np. DOM Sędzia. Czy znasz jakieś takie systemy?


title: Czy „VS Lightswitch” to „Oracle APEX” firmy Microsoft?

text: Co myślisz? Czy **„Visual Studio Lightswitch”** stanie się w przyszłości **„Oracle APEX”** dla **SQL Server**? Czy te dwie technologie są porównywalne?


title: Zaangażowanie się w Java Community Process (JCP)

text: Taki właśnie ma być proces społeczności Java. Proces, w którym społeczność Java może wypowiedzieć się na temat przyszłości języka. Jaki jest najlepszy sposób na zaangażowanie się w JCP? JSR (Java Specification Request) przechodzi przez różne etapy swojego cyklu życia. Oczywiście, jeśli jesteś ekspertem dziedzinowym z głęboką wiedzą na dany temat, chciałbyś zaangażować się w odpowiedni JSR na bardzo wczesnym etapie. Jednak na jakim etapie najlepiej się zaangażować, jeśli jesteś prawdopodobnym użytkownikiem końcowym (jako programista) JSR, ale nie jesteś wspomnianym wyżej ekspertem domenowym?


title: Zarządzaj kontrolą wersji za pomocą centralnego serwera programistycznego (LAMP)

text: Pracuję w małym zespole składającym się z maksymalnie 5 (web)deweloperów. Ponieważ nasz zespół często się powiększa i mieliśmy problemy z wieloma osobami pracującymi nad tym samym kodem, postanowiliśmy założyć VCS. **Sytuacja bieżąca** Obecnie pracujemy z centralnym serwerem programistycznym (LAMP). Więc każdy programista pracuje na tej samej bazie kodu i jeśli kod jest przetestowany i gotowy na nasz live serwer, po prostu kopiujemy go przez ftp. Wiem, że to jakiś przepływ pracy anno 1600, ale tak - tak właśnie jest, a także powód tego pytania. Na serwerze deweloperskim nasza struktura katalogów wygląda tak: /var/www /Project1 /Project2 /Project3 ... Dodatkowo są tam małe aplikacje nie-webowe - aplikacje na Androida/iPhone'a/Windows 8 itd. oraz kilka narzędzi C#, które również powinny być zawarte w VCS. **Cel i problemy** Naszym celem jest uzyskanie czystej konfiguracji VCS, która współpracuje z oprogramowaniem do śledzenia problemów, umożliwia nam wspólną pracę nad tym samym projektem w tym samym czasie bez nadpisywania naszych kodów i po prostu daje nam zaleta kontroli wersji. Myślę, że pierwsze pytanie dla nas brzmi, jakiej technologii powinniśmy użyć. Niektórzy z nas już doświadczyli działalności wywrotowej. Ale ponieważ git staje się w pewnym sensie „standardem” i istnieje wiele argumentów „pro git” wśród użytkowników sieci, zwykle używamy git. Tu zaczyna się nasza niepewność. Aby używać git - zdecentralizowanego VCS - wygląda na to, że musimy zacząć używać oddzielnych serwerów programistycznych na każdym komputerze dewelopera. Problemy z tym są następujące: * Czasami pracujemy na różnych komputerach, więc kiedy zapomnimy wcisnąć nasz kod, mamy problem. * Musielibyśmy pracować z maszynami wirtualnymi, ponieważ serwery deweloperskie powinny być takie same jak nasz serwer na żywo (nie byłoby to po prostu możliwe do wyegzekwowania w naszym środowisku, uwierz mi, że to niemożliwe). * Serwer programistyczny zwykle służył również jako serwer „próbny” lub „prezentacyjny”, na którym nie-programiści mogli zobaczyć, co się dzieje. **Czy istnieje inna możliwa konfiguracja z git, abyśmy mogli korzystać z systemu, jednocześnie korzystając z jednego(!) serwera programistycznego?** Może z różnymi katalogami dla każdego programisty. Czy możemy nadal pracować na tej samej bazie kodu, być może blokując pliki, nad którymi pracujemy, a następnie zatwierdzając je w repozytorium. Być może ważne jest, aby powiedzieć, że chociaż stało się to dla nas czynnikiem, nadal rzadko zdarza się, aby wielu programistów pracowało nad tą samą częścią aplikacji w tym samym czasie.


title: Jak zarządzać konserwacją

text: Istnieje wiele świetnych książek i zasobów na temat zarządzania rozwojem nowego oprogramowania, ale bardzo niewiele widziałem o zarządzaniu ciągłym utrzymaniem systemów oprogramowania. Nie mówię o dużych ulepszeniach, mówię o małych jedno- lub dwudniowych poprawkach i aktualizacjach, które szybko gromadzą się po uruchomieniu systemu. Jakieś polecane książki lub inne zasoby na ten temat?


title: co robią programiści baz danych?

text: Za każdym razem, gdy czytam o programistach Oracle itp., jestem zdezorientowany. Nie wiem, co dokładnie robią. Z mojego rozumienia, programiści aplikacji muszą rozwijać podstawową funkcjonalność. Biblioteki, z których korzystają, mogą pomóc w tworzeniu GUI lub łączności z bazą danych, ale funkcjonalność, która sprawia, że ta aplikacja jest aplikacją, musi być zaprogramowana i która sprawia, że każda aplikacja jest inna (no cóż, niektóre mogą być podrasowanymi wersjami innych). Czy w tej relacji programowanie baz danych nie tworzy w zasadzie tabeli i czy te tabele nie są przetwarzane w odpowiedzi na polecenia SQL, które są wydawane przez aplikację, która zwykle jest interfejsem? Czy tworzenie stołów to tak wielka sprawa?


title: Użyj klienta, aby uzyskać dostęp do bazy danych lub serwera, aby uzyskać dostęp do bazy danych

text: Tworzę aplikację klient-serwer, w której muszę zaktualizować konkretną bazę danych. Używam Pythona z MySQL. Są dwie opcje: ja używam client.py i server.py, client.py może wysyłać dane spakowane w JSON na serwer, server.py obsłuży bazę danych i odeśle dane zapytania w formie JSON. Drugą opcją jest to, że nie ma pliku server.py, zamiast tego klient uzyskuje dostęp do baz danych i zapytań bezpośrednio z serwerem MySQL. Czy są jakieś korzyści z używania jednej metody do drugiej? **EDYTUJ:** Może być maksymalnie około 100 klientów, którzy będą przesyłać dane w ciągu dnia z około 20-sekundowym opóźnieniem.


title: Do czego służył Ruby przed Railsami?

text: Jaki rodzaj programowania lub projektu obejmowałby tylko język Ruby? Zamiast używać RoR. To, do czego był używany Ruby, zanim istniał framework Rails, jest tym, o co w zasadzie pytam.


title: Stwórz stronę internetową używając mustache.js i PHP

text:
Zastanawiam się nad zbudowaniem strony internetowej za pomocą mustache.js do renderowania strony i posiadania PHP jako backendu. PHP będzie wtedy zawierał głównie zapytania do bazy danych i niektóre sprawdzenia SESSION. Wcześniej używałem zwykłego PHP do renderowania frontendu, ale robi się zbyt niechlujny. Przykład o czym myślę: **Plik HTML**   <skrypt> $.ajax{ url: "ścieżka/do/pliku.php", ... success: function(response){ var szablon = $('#szablon').html(); var rendered = Wąsy.render(szablon, odpowiedź) $('#szablon').html(renderowane); } } </script>
Twoja ulubiona witryna to {{website}}
   **Plik PHP** <? funkcja php getWebsite($userid){ $mysqli = (...); $stmt = $mysqli -> przygotowanie("SELECT name FROM Websites WHERE userId = ?"); $stmt -> bind_param("i", $userId); $stmt -> execute(); ... ... echo json_encode($wyniki); } ?> Czy to dobra struktura, czy nadal będzie bałagan? Czy będzie wolniej?


title: Czy posiadanie ogólnego typu danych dla kolumny tabeli bazy danych jest „dobrą” praktyką?

text: Pracuję nad projektem PHP, w którym niektóre obiekty (członkowskie klasy) mogą zawierać inny typ danych. Na przykład: class Property { private $_id; // (PK) prywatny $_ref_id; // identyfikator odniesienia do obiektu (FK) private $_name; // nazwa własności private $_type; // 'string', 'int', 'float(n,m)', 'datetime' itp. private $_data; // ... // ..snip.. public pobierające/ustawiające } Teraz muszę trochę utrwalić te obiekty. Niektóre właściwości mogą być typem danych tekstowych, ale nic większego niż to, co może przechowywać „varchar”. Poza tym później muszę mieć możliwość wyszukiwania i sortowania. Czy dobrą praktyką jest używanie do tego jednej tabeli bazy danych (tj. czy nie ma to nieistotnego wpływu na wydajność)? Jeśli jest to „dopuszczalne”, jaki może być typ danych dla kolumny `data`?


title: Inspekcja, przegląd kodu - czy to naprawdę testowanie?

text: ISTQB, Wikipedia lub inne źródła klasyfikują działania weryfikacyjne (recenzje itp.) jako testy statyczne, ale inne nie. Jeśli możemy powiedzieć, że peer review i inspekcje są w rzeczywistości rodzajem testowania, to wiele norm nie ma sensu (pomyśl np. ISO, które mówią, że walidacja odbywa się przez testowanie, a weryfikacja poprzez sprawdzanie produktów pracy) – powinno przynajmniej powiedzmy testowanie dynamiczne do walidacji, czyż nie? Kończę pracę magisterską zajmującą się QA i muszę przyznać, że nigdy nie widziałem literatury gorszej i bardziej niejednoznacznej i sprzecznej niż w tej dziedzinie :/ Czy uważasz (a jeśli tak, to dlaczego), że testowanie statyczne jest dobrym i uzasadnionym terminem lub czy powinniśmy trzymać się testów i statycznych kontroli/analiz? Wikipedia: **_Testowanie statyczne** to forma testowania oprogramowania, w której oprogramowanie nie jest w rzeczywistości używane. To kontrastuje z testowaniem dynamicznym. Na ogół nie jest to szczegółowe testowanie, ale sprawdzanie głównie poprawności kodu, algorytmu lub dokumentu. Jest to przede wszystkim sprawdzanie składni kodu i/lub ręczne **przeglądanie kodu lub dokumentu** w celu znalezienia błędów. Ten typ testowania może być używany przez programistę, który napisał kod, w izolacji. Wykorzystywane są również przeglądy kodu, inspekcje i instruktaże._ EDYCJA: Jedno z wielu źródeł, które wspominają o testach statycznych w celu wykorzystania recenzji itp. (poszukaj „testów statycznych” w książkach Google): ![tu wpisz opis obrazu](http:/ /i.stack.imgur.com/y768h.jpg)


title: Przypisywanie kredytu używanym językom programowania

text: Pracuję nad stroną internetową i uderzyła mnie myśl „czy muszę podawać kredyty za języki, których używam do tworzenia mojej witryny?” Nie udało mi się znaleźć żadnych licencji na HTML, CSS lub JavaScript i jestem trochę zdezorientowany co do treści licencji PHP. Moje pytanie brzmi: Czy muszę określić gdzieś w mojej witrynie (zewnętrznie lub wewnętrznie), że używam HTML, CSS, JavaScript, PHP i MySQL (oraz atrybut kredyt, link do ich licencji, jeśli taki mają itp.)?


title: Sprzeczne style Java w zespole

text: Jestem częścią zespołu programistów Java z terminem 6 tygodni. Wymaga to bardzo szybkiego napisania dużej ilości kodu. Jednak nasz zespół programistów ma różne style kodowania. Wszystko, od konwencji nazw po metody abstrakcji, różni się w naszym zespole. Czy ktoś zna jakieś dokumenty, które dyktują "standardy" dla javy? Aby wyjaśnić, zastanawiałem się, czy istnieje organizacja, która dyktowałaby odpowiednią konwencję nazewnictwa na przykład zmiennych i funkcji. Jest to najważniejsze, ponieważ przy tak krótkim terminie nie możemy sobie pozwolić na marnowanie czasu na wzajemne zrozumienie kodu.


title: W jaki sposób upewniasz się, że Twój produkt spełnia podstawowe wytyczne dotyczące użyteczności?

text: Istnieje kilka naprawdę typowych błędów użyteczności w codziennym używanym przez nas oprogramowaniu; błędy, które wynikają ze sposobu, w jaki dany programista się nauczył, bez poznania wszystkich innych sposobów. Na przykład, mówiąc w szczególności o oprogramowaniu Windows, przychodzą na myśl następujące typowe wady: * Brak obsługi wielu ekranów. Na przykład okna wyśrodkowane na wirtualnym pulpicie (zamiast określonego ekranu), a zatem wyświetlane na granicy monitora w konfiguracji z dwoma monitorami. * Brak wsparcia poważnych użytkowników klawiatury. Na przykład kompletnie pomieszana kolejność kart; zduplikowane lub całkowicie brakujące klawisze akceleratora. * Pomieszanie zamówień Alt+Tab. Na przykład okno, które po zminimalizowaniu nie przechodzi na koniec kolejności tabulacji. * Subtelne złamanie typowych kontroli, które zostały ponownie zaimplementowane z tego czy innego powodu. Np. nie udało się zaimplementować Ctrl+Lewo/Prawo na polu tekstowym; niepowodzenie dodawania menu okna Alt + Spacja do okna z możliwością zmiany skórki, niepowodzenie kopiowania Ctrl + Wstaw do schowka itp. To jest ogromna kategoria sama w sobie. Takich rzeczy jest mnóstwo. Jak możemy się upewnić, że nie zniszczymy dużej ich części? W końcu nie wszystkie są nigdzie spisane... a może są?


title: Projekt bazy danych wykazu materiałów w EF codefirst?

text: Mam problem z wygenerowaniem odpowiedniego projektu bazy danych dla zestawienia materiałów w EF Code-najpierw potrzebuję tylko ogólnej struktury, a potem źle dodaję dodatkowe pola Więc muszę mieć Produkt, który jest złożony z innych Produktów, które są złożeniami innych Produktów. Przykład: Produkt 1: * Skrzynka aluminiowa 1x * Blacha aluminiowa 4x * Folia 1x * Śruby 6x Produkt 2: * Wózek na kółkach 1x * Skrzynka aluminiowa 1x * Koła 4x * Śruby 4x * Folia 2x Zwróć uwagę, że produkt 2 (wózek na kółkach) składa się z Produkt 1 (skrzynka aluminiowa) i kilka dodatkowych komponentów, ale te same śruby produktu i folia są używane w obu. Więc myślę, że jest hierarchiczny od wielu do wielu. A może ktoś zna lepsze rozwiązanie. Nie musi być w EF Code-first, mogę ponownie wygenerować kod z T-SQL. Dziękuję Ci. _**EDIT:_** Bawiłem się i nic nie działa, obecnie mam to: **Komponenty** ComponentID Nazwa Cena ProductID N | | | 1 **Produkty** ProductID ParentID Ilość ComponentLookupId Najpierw tworzę składnik, następnie produkt, który może być hierarchiczny i powiązać z nim składnik, a teraz pobieram nazwę i cenę składnika za pomocą funkcji Lookup, co jest w pewnym sensie OK , ale mam problemy z podsumowaniami. Jeśli skopiuję Nazwa, Cena, to po zmianie Komponentu Produkt nie. A może powinienem spróbować wiele do wielu z dodatkowymi polami w tabeli sprzężenia.


title: Dlaczego Ruby nie ma niejawnej konwersji Fixnum na String?

text: Ruby zwykle ułatwia życie. Jednak nie pozwala na niejawną konwersję liczby na łańcuch: 2.0.0p247 :010 > "a"+1 TypeError: brak niejawnej konwersji Fixnum na String Dlaczego tak jest, gdy pozwala na to prawie każdy inny język, w tym Perl, PHP , Java i VBA?


title: Czy warto trenować z Big Nerd Ranch lub AboutObjects na iOS?

text: Mam tytuł licencjata CS i od kilku lat programuję w mojej obecnej firmie, bawiąc się Objective-C, tworząc kilka aplikacji konsolowych i kilka prostych aplikacji, które uruchomiłem w symulatorze: wszystkie podstawowe rzeczy. Moja firma poprosiła mnie o zajęcie się naszym wewnętrznym rozwojem systemu iOS i zaoferowała, że wyśle mnie „z dala” na szkolenie. Czy ktoś był na szkoleniu Big Nerd Ranch lub AboutObjects iOS? Czy było to wartościowe doświadczenie? Czy nauczyłeś się czegoś, czego nie mógłbyś się nauczyć z książek lub innych zasobów?


title: Jaki jest następny logiczny ruch TDD w tym przykładzie edukacyjnym?

text: Wspinam się po szczeblach drabiny TDD i dotarłem do punktu, w którym chciałbym zasięgnąć porady na temat „następnego ruchu”. Zdaję sobie sprawę, że może nie być tutaj jednej odpowiedzi, więc każda logiczna sugestia byłaby świetna. Myślę, że utknąłem na tym, że wiem, czy powinienem wymusić duplikację lub kontynuować podstawową funkcjonalność zaimplementowaną przez minimalny (i tymczasowy, ponieważ nie jest ogólny) kod. Próbuję przejść w ścisłym cyklu zielony/czerwony/re-factor. Ponadto ten przykład jest tak prosty, że nie wymaga żadnych wyśmiewanych obiektów, ale myślę, że nadal jest to prawidłowy przykład (proszę mnie poprawić, jeśli się mylę lub wszedłem w jakiś trywialny przypadek, z którym nie warto pracować) . **AKTUALIZACJA** : Kontynuowałem to prawie do końca, więc przypuszczam, że zostawię to i zobaczę, czy ktoś ma jakieś komentarze, a jeśli nie, to usunę. **Testy:** przy użyciu NSpec; przestrzeń nazw TicTacToe { public class new_game : nspec { chroniona gra TicTacToeGame; private void before_each() { game = new TicTacToeGame(); } private void when_game_starts() { it["plansza powinna być czysta"] = () => game.BoardState.should_be("---,---,---"); it["kolej x"] = () => game.PlayerUp.should_be('x'); it["jeszcze nie ma zwycięzcy"] = () => game.Winner.should_be('-'); } } public class define_game : new_game { private void first_move() { context["jest x w środku"] = () => { act = () => game.Move('x', 2, 2); it["plansza powinna mieć x w środku"] = () => game.BoardState.should_be("---,-x-,---"); it["kolej y"] = () => game.PlayerUp.should_be('y'); context["wtedy y w środku"] = () => { it["powinien rzucić OtherPlayerOccupiesSpaceException"] = oczekiwać<OtherPlayerOccupiesSpaceException>(() => game.Move('y', 2, 2)); it["jeszcze nie ma zwycięzcy"] = () => game.Winner.should_be('-'); }; context["wtedy y w lewym górnym rogu"] = () => { act = () => game.Move('y', 1, 1); const string expectBoardState = "y--,-x-,---"; it["poprawny stan planszy to " + oczekiwanyBoardState] = () => game.BoardState.should_be(expectedBoardState); it["kolej x"] = () => game.PlayerUp.should_be('x'); it["jeszcze nie ma zwycięzcy"] = () => game.Winner.should_be('-'); context["wtedy x na środku góry"] = () => { akt = () => gra.Przenieś('x', 1, 2); const string expectBoardState2 = "yx-,-x-,---"; it["poprawny stan planszy to " + oczekiwanyBoardState2] = () => game.BoardState.should_be(oczekiwanyBoardState2); it["jeszcze nie ma zwycięzcy"] = () => game.Winner.should_be('-'); context["wtedy y w prawym górnym rogu"] = () => { act = () => game.Move('y', 1, 3); const string expectBoardState3 = "yxy,-x-,---"; it["poprawny stan planszy to " + oczekiwanyBoardState3] = () => game.BoardState.should_be(oczekiwanyBoardState3); it["jeszcze nie ma zwycięzcy"] = () => game.Winner.should_be('-'); context["wtedy x na środkowym dole"] = () => { akt = () => gra.Przenieś('x', 3, 2); const string expectBoardState4 = "yxy,-x-,-x-"; it["poprawny stan planszy to " + oczekiwanyBoardState4] = () => game.BoardState.should_be(expectedBoardState4); it["x wygrywa"] = () => game.Winner.should_be('x'); }; }; }; }; }; context["jest w środku"] = () => { it["powinien rzucić NotYourTurnException"] = oczekiwać<NotYourTurnException>(() => game.Move('y', 2, 2)); }; } } } **Implementacja:** using System.Linq; za pomocą System.Text; przy użyciu System.Text.RegularExpressions; przestrzeń nazw TicTacToe { public class TicTacToeGame { private readonly char[,] grid = new char[3,3]; private bool xsTurn = prawda; public TicTacToeGame() { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { grid[i, j] = '-'; } } } public string BoardState { get { var sb = new StringBuilder(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { sb.Append(grid[i, j]); } if (i < 2) sb.Append(','); } return sb.ToString(); } } public char PlayerUp { get { return xsTurn ? 'x' : 'y'; } } public void Przenieś(char player, int down, int over) { over -= 1; w dół -= 1; if (player != PlayerUp) wyrzuć nowy NotYourTurnException(); if (grid[down, over] != '-') wyrzuć nowe OtherPlayerOccupiesSpaceException(); this.grid[w dół, nad] = gracz; xsTurn = !xsTurn; } public char Zwycięzca { get { string boardState = BoardState; var xWins = new[] { "xxx,...,...", "...,xxx,...", "...,...,xxx", "x...,x. .,x..", ".x.,.x.,.x.", "x..,x..,x..", "..x,..x,..x", " x..,.x.,..x", "..x,.x.,x..", }; var yWins = new[] { "rrrr,...,...", "...,rrrr,...", "...,...,rrrr", "y...,y. .,y..", ".y.,.y.,.y.", "y..,y..,y..", "..y,..y,..y", " r..,.y.,..y", "..y,.y., r.", }; if (xWins.Any(win => Regex.IsMatch(boardState, win))) return 'x'; if (yWins.Any(win => Regex.IsMatch(boardState, win))) return 'y'; zwrócić '-'; } } } } **Wyjście:** PM> NSpecRunner.exe .\TicTacToe\bin\Debug\TicTacToe.dll nowa gra po rozpoczęciu gry plansza powinna być czysta to kolej x brak zwycięzcy jeszcze określić grę pierwszy ruch to x na środku plansza powinna mieć x pośrodku, kolej na y, a potem y na środku, powinien wyrzucić OtherPlayerOccupiesSpaceException jeszcze nie zwycięzcy, a potem y w lewym górnym rogu, poprawny stan planszy to y--,-x-,--- kolejka x jeszcze nie ma zwycięzcy, to x na środku na górze poprawny stan planszy to yx-,-x-,--- jeszcze nie ma zwycięzcy to y na prawym górnym poprawny stan planszy to yxy,-x-,--- jeszcze nie ma zwycięzcy to x na środku na dole poprawny stan planszy to yxy,-x-,-x- x wygranych to y na środku powinno rzucić NotYourTurnException 17 Przykłady, 0 Nieudane, 0 Oczekujące


title: W którym momencie serwer ciągłej integracji jest interesujący?

text: Czytałem trochę o serwerach CI, takich jak Jenkins i zastanawiam się: w którym momencie jest to przydatne? Bo z pewnością dla małego projektu, w którym miałbyś tylko 5 klas i 10 testów jednostkowych, nie ma takiej potrzeby. Tutaj mamy około 1500 testów jednostkowych, które zdają (na starych stacjach roboczych Core 2 Duo) w około 90 sekund (ponieważ tak naprawdę testują "jednostki" i stąd są bardzo szybkie). Zasadą, którą mamy, jest to, że nie możemy zatwierdzić kodu, gdy test się nie powiedzie. Dlatego każdy programista uruchamia wszystkie swoje testy, aby zapobiec regresji. Oczywiście, ponieważ wszyscy programiści zawsze uruchamiają wszystkie testy, wyłapujemy błędy z powodu sprzecznych zmian, gdy tylko jeden programista pobierze zmianę innego (jeśli w ogóle). Nadal nie jest dla mnie jasne: czy powinienem skonfigurować serwer CI, taki jak Jenkins? Co by to przyniosło? Czy to tylko przydatne do zwiększenia prędkości? (nie jest to problem w naszym przypadku) Czy jest to przydatne, ponieważ można odtworzyć stare kompilacje? (ale możemy to zrobić z Mercurialem, sprawdzając stare obroty) Zasadniczo rozumiem, że może to być przydatne, ale nie rozumiem dokładnie, dlaczego. Jakiekolwiek wyjaśnienie uwzględniające powyższe kwestie byłyby mile widziane.


title: Przejście z działu IT do odpowiedniej firmy technologicznej

text: Pracowałem z aplikacjami Java/web w dziale IT firmy handlowej. Jeśli chodzi o pracę, nie ma nic do powiedzenia. Naprawienie kilku pętli if/else, napisanie prostej logiki biznesowej itp. to wszystko, co robiłem. Powiedziawszy to, czuję, że mam dobrą wiedzę techniczną i jestem gotów przenieść się do firm takich jak Microsoft/Google/Amazon itp. [Chcę pracować w tych miejscach, ponieważ czuję, że jestem facetem technicznym, a ja pracuję w miejscu, w którym większość ludzi wariuje, gdy słyszy się słowa takie jak „algorytm”] Mogę oczywiście przygotować algorytmy/podstawy informatyki itp. (mam 4 lata studiów na kierunku informatyka), ale poza tym będę moje doświadczenie jest przeciwko mnie? Wątpię, czy w ogóle dostanę telefon od nich, widząc moje doświadczenie zawodowe. Jakich pytań (poza rodzajami algorytmów) mogę się spodziewać?


title: Kto wymyślił klasy typu Haskella?

text: Klasy typów Haskella są bardzo potężnym narzędziem i dają Haskellowi wielką zdolność ekspresji w porównaniu z językami funkcjonalnymi, które ich nie mają. Kiedy zostały wynalezione i kto je wymyślił?


title: Opracowywanie przepływu pracy dla istniejącej aplikacji Silverlight i WCF

text: Mam już istniejącą aplikację w Silverlight 4.0 z usługami WCF. Teraz chcę zintegrować przepływ pracy z powyższą aplikacją. Przepływ pracy będzie prostym przepływem zatwierdzania, tj. przepływem sekwencyjnym. Czy ktoś może zaproponować jakieś linki lub rozwiązanie?


title: Co jest lepsze: przechowywanie/pobieranie obrazów na/z serwera SQL lub w katalogu na serwerze

text: Pracuję nad projektem w Asp.net MVC i muszę pracować z obrazami. Istnieje baza danych SQL z tabelą Product. Każdy produkt w tabeli będzie miał swój własny wizerunek. Mam na to dwa sposoby: 1) Zapisz obraz w katalogu internetowym i przechowuj adres URL w bazie danych. 2) Przechowuj obraz w samym SQL w formacie binarnym, a następnie go pobierz. Jakie jest lepsze podejście? Pamiętaj, nie mam pojęcia, jak działa druga metoda :-P . Nauczę się tego tylko wtedy, gdy druga metoda ma zalety


title: Porady dotyczące technologii przechowywania dla repozytorium obrazów

text: W tym momencie nie jestem zbytnio programistą, solidnym html/css, zaznajomionym z JS, ale w żadnym razie nie programistą. Chcę odebrać wszystko, co jest niezbędne do nadchodzącego projektu. Muszę zbudować repozytorium obrazów online, które pomieści około 15 tys. zdjęć. Te zdjęcia będą musiały mieć powiązane z nimi dane wprowadzone przez użytkownika. Będą musiały być przeszukiwane według tagów i pobierane wsadowo. Czy zrobilibyście system plików lub przechowywanie db? Zasadniczo, jakiego rodzaju rozwiązania pamięci masowej byś użył?


title: MySQL z wieloma wątkami i procesami

text: Tworzę platformę komunikacji telekomunikacyjnej w C i będę potrzebować wielu procesów do pracy z MySQL DB. Jak mogę sprawić, by dwa procesy odczytywały/zapisywały do/z bazy danych Mysql, a jeśli/kiedy jeden z nich ulegnie awarii, sprawić, by drugi bezproblemowo przejął pracę, dopóki martwy proces nie wróci do pracy? Myślałem/wyszukiwałem w Google kilka opcji i utknąłem w miejscu, w którym nie wiem, którą wybrać. Jak dotąd myślę, że blokada stołu nie jest najlepszą opcją, ponieważ zatrzyma inny proces, dopóki stół nie zostanie odblokowany. Inną opcją jest użycie blokad na poziomie wiersza lub blokad ręcznych, ale nie mogę znaleźć najlepszego sposobu, aby to zrobić.


title: Jak założyć teraz osobiste konto programisty Apple, aby później przenieść własność aplikacji na firmę?

text: Mam dwie aplikacje na Maca, które napisałem na własny użytek, ale rozważam dopracowanie ich i wypróbowanie ich w Mac App Store. Wydawało się bardzo przedwczesne, aby zastanawiać się, co by się stało, gdyby któraś z aplikacji odniosła sukces na tyle, aby można było założyć wokół niej biznes lub sprzedać ją innemu programiście. To znaczy, dopóki nie przeczytam, że Apple nie ułatwia przenoszenia własności aplikacji. Nie jestem pewien, jak najlepiej teraz zarejestrować się w programie Apple Developer, aby później uniknąć ewentualnych kłopotów w tym zakresie. Z tego, co rozumiem, tak naprawdę można przenieść tylko własność konta programisty. Nie jestem pewien związku między Apple ID a kontem programisty Apple. Czy to oznacza, że powinienem przynajmniej nie używać identyfikatora Apple ID, którego już używam w iTunes, ale utworzyć drugi, który będzie używany do rejestracji jako programista Apple? Czy jest jakaś wada używania oddzielnych identyfikatorów Apple ID na tym samym Macu (jeden identyfikator do tworzenia Xcode, drugi do iTunes/iCloud/App Store/...)? Czy należy posunąć się do posiadania oddzielnego konta programisty Apple ID i Apple dla każdej rozwijanej aplikacji? A może jest jakieś inne rozwiązanie uwzględniające możliwość przeniesienia własności aplikacji?


title: Czy źle jest mieć klasy jako właściwości wszystkich innych klas?

text: Tworzyłem programy MVC do pracy (jestem stażystą) i czuję, że robię całkiem niezłą robotę w abstrakcji, pojedynczej odpowiedzialności itp. Ale mam takie wrażenie, że nadal tworzę właściwości obiektów innych przedmioty i nie jestem pewien, czy to coś złego. Przykład: Użytkownik { Ciąg Nazwa użytkownika; identyfikator użytkownika Int32; . . . Zmienna klasy BusinessLogic; } BusinessLogicClass { Zmienna Innej Klasy; I kolejna zmienna2; } Inna klasa { IMyślę, że zdobywasz punkt; } Wszystkie moje klasy są właściwościami innych w jednej ogromnej hierarchii. Jest to rodzaj tego, czego wymaga logika biznesowa, ale nie mogę przestać się zastanawiać, czy powinienem próbować temu zapobiec. Tak więc kończę efektywnie z jedną zmienną, którą kontroluję potomkami, ale klasy są oddzielne. Czy to coś powszechnego? To jest złe? Jeśli jest zły, co mam z tym zrobić?


title: Skuteczność FizzBuzz i Beyond

text: W ramach procesu rozmowy kwalifikacyjnej początkowo prosimy kandydatów o wykonanie „FizzBuzz”, obecnie odsetek kandydatów, którzy potrafią poprawnie odpowiedzieć na FizzBuzz, dramatycznie wzrósł – może to być spowodowane jego popularnością w sieci. Około rok temu jako drugie pytanie zaczęliśmy zadawać pytanie bardzo podobne do oryginalnego FizzBuzz. Pytanie miało być tak proste, jak oryginalny FizzBuzz, a także oceniać konkretną zdolność kandydata, w szczególności umiejętność porządkowania i ustalania priorytetów w sensowny i logiczny sposób zestaw „zasad biznesowych”, które zostały określone w niektórych arbitralna kolejność. Sformułowanie pytania początkowo wydaje się nieco niejednoznaczne, co może utrudniać osobom, dla których angielski nie jest rodzimym językiem, ale jeśli jest dobrze przemyślane, można je poprawnie rozwiązać - daje również kandydatowi możliwość zadawania pytań w celu wyjaśnienia, co zawsze jest dobre . Uważamy, że jest to bardzo ważna umiejętność dla programisty, ponieważ tworzenie oprogramowania jest zwykle oparte na wymaganiach funkcjonalnych, które są wyprowadzane w dowolnej kolejności w czasie, co może nakładać ograniczenia i warunki na inne obszary oprogramowania bez wyraźnego wskazania i jest to zadaniem bystrego programisty jest przynajmniej zbadanie potencjalnych problemów i konfliktów związanych z wdrożeniem. Odkryliśmy, że nieco ponad 65% kandydatów (wielkość próbki 38), którzy pomyślnie przeszli FizzBuzz, całkowicie nie przeszło FizzBuzz v2.0 Normalnie kandydaci zostaliby wykryci na późniejszym etapie procesu, ale wydaje się to dobrym sposobem na wykrycie je wcześnie. Moje pytanie nie dotyczy tego, czy FizzBuzz jest przestarzały, ale raczej jakie czynniki mogą przyczynić się do tak dużej liczby kandydatów, którzy nie zaliczą pytania FizzBuzz v2. * Czy pytanie jest zbyt niejednoznaczne? * Czy stres związany z przeprowadzaniem wywiadów zmniejsza zdolność krytycznego myślenia do tego stopnia, że nie jesteśmy w stanie wykonać tak trywialnego zadania? **Pytanie:** Napisz procedurę w swoim ulubionym języku programowania, która przyjmie listę ciągów jako dane wejściowe, a dla każdego ciągu na liście wykona jedną z następujących czynności: 1. Wydrukuj tylko Fizz, jeśli ciąg zawiera literę A 2. Wydrukuj tylko Buzz, jeśli ciąg zawiera literę B 3. Wydrukuj tylko BuzzBuzz, jeśli ciąg zawiera zarówno A, jak i B 4. Wydrukuj tylko FizzFizz, jeśli ciąg nie zawiera zarówno A, jak i B 5. Wydrukuj tylko FizzBuzz, jeśli ciąg zawiera tylko jedno A i tylko jedno B * * * Typowe pytania zadawane przez kandydatów to: * Czy wielkość liter powinna być rozróżniana? * Czy "zawiera A i B" oznacza, że A powinno być przed B * Co należy wydrukować, jeśli żaden z punktów nie jest spełniony? * Co powinno się stać, jeśli można spełnić więcej niż jeden warunek? Odkryliśmy, że przytłaczająca większość kandydatów, którzy pomyślnie ukończyli pytanie, w ogóle o nic nie pytali, po prostu robili to tak, jak robili to FizzBuzz.


title: Jak mogę zrozumieć agregację i powstrzymywanie?

text: Jestem zdezorientowany między agregacją a powstrzymywaniem. Zastanawiam się, czy poniższe elementy reprezentują agregację lub powstrzymywanie? class Auto { prywatny model ciągu; prywatna prędkość wewnętrzna; klasa AutoKlient { ciąg publiczny Nazwisko; publiczny ciąg Adres; public DateTime DateOfPurchase; } }


title: Pytania dotyczące umów na tworzenie oprogramowania

text: Próbuję zrozumieć kilka aspektów ubiegania się o pracę, takich jak: Programista Android – Wymagane doświadczenie w obsłudze interfejsu – Umowa na 3 miesiące – Londyn – 300 GBP dziennie – Natychmiastowy start Mam kilka pytań i szczególnie interesuje mnie Wielka Brytania . 1. Jaki jest powód wysokiej stawki dziennej? Czy dzieje się tak dlatego, że jest krótkoterminowa i dlatego jest mniej atrakcyjna dla wielu osób, czy dlatego, że wymaga wyższego poziomu umiejętności/większego obciążenia pracą niż przeciętna stała praca? 2. Jak często do tych umów zazwyczaj płacą? Ktoś mi powiedział, że będą płacić co dwa tygodnie. 3. Jak ważne są umiejętności wymienione w ofercie pracy? Na przykład mam doświadczenie z Androidem i Java SE, ale nie mam doświadczenia z Java EE - czy to wykluczyłoby mnie z ubiegania się o kontrakt Java EE?


title: Czy python i php mogą ze sobą współpracować?

text: Mam aplikację mobilną stworzoną na ios. Deweloperzy zbudowali aplikację w php. Aplikacja wymaga algorytmu, więc znalazłem innego programistę do jej opracowania. Programista algorytmów zbudował algorytm w Pythonie. Programiści odmawiają ukończenia aplikacji, ponieważ twierdzą, że nie będzie działać z pythonem, podczas gdy programista upiera się, że tak będzie. Programista mówi, że umieść algorytm w swoim serwerze i połącz się przez http. Czy to zadziała i ja bym więc jak ryzykowne jest to dla przyszłych problemów?


title: Jak Java radzi sobie z przepełnieniami i niedomiarami liczb całkowitych?

text: Czy Java obsługuje **przepełnienia** i **niedopełnienia** liczb całkowitych? Jeśli tak, jak sobie z nimi radzi?


Czy specjaliści ICT powinni być profesjonalistami z odpowiednimi uprawnieniami? Czy ktoś ma jakieś zasoby/czasopisma, które mogą mi pomóc, skoro ich nie znalazłem.


title: Jak zachować wiedzę o nowych technologiach, z których nie korzystam na co dzień?

text: W pracy zajmujemy się głównie tworzeniem WinForms i nie jest tajemnicą, że są one już bardzo przestarzałe. Mam pasję do poznawania nowych rzeczy takich jak WPF, MVVM i chcę w pełni wykorzystać zalety C# 4.0. Nie ma mowy, żebym zmusił moich szefów do zmiany „dobrze polecanych” i „sprawdzonych” technologii, takich jak WinForms, na coś innego. Mam do dwóch godzin dziennie, które mogę poświęcić na samokształcenie, ale po prostu nie znam najefektywniejszego sposobu nauki. Próbowałem przeczytać kilka książek i napisałem nawet prostą aplikację WPF, ale myślę, że to nie wystarczy. Jak mogę zarządzać czasem, ucząc się nowych rzeczy w taki sposób, aby się trzymać, nawet jeśli nie używam go na co dzień?


title: Jak kompletny i dojrzały jest PyWin32?

text: Rozważam wykorzystanie Pythona do tworzenia aplikacji. Celem tej aplikacji jest wyłącznie interakcja z interfejsem API systemu Windows. Dlatego moje pytanie brzmi: czy PyWin32 jest wystarczająco dojrzały i kompletny, aby można było na nim polegać, czy też lepiej byłoby zrobić to w C++? Powody, dla których chciałem użyć Pythona to: 1. Łatwiejszy dostęp do programistów 2. Łatwiejszy w tworzeniu i utrzymaniu kodu w Pythonie niż w C++ Widziałem, że obecnie pracujemy na Build 242 (lub coś w tym rodzaju) PyWin32, co nie daje mi pojęcia o dojrzałości. Widzę jednak, że pojawiły się wydania od 2004 roku, ale to też nie mówi zbyt wiele.


title: Najgorsze praktyki w tworzeniu aplikacji bazodanowych

text: W przeciwieństwie do http://programmers.stackexchange.com/questions/123591/database-design-good- Practices chciałem zapytać: Jakie są najgorsze praktyki, które napotkałeś podczas pracy z kodem aplikacji bazodanowych i bazami danych innych osób? Moje do tej pory to: * Nie umieszczanie żadnych ograniczeń kluczy obcych w bazie danych (dla ułatwienia tworzenia formularzy internetowych...) * Zapytania SQL przez łączenie ciągów (bez ucieczki od ', bez parametrów) * Używanie kodu niebezpiecznego dla wątków (z zmienne statyczne), aby odszyfrować hasło bazy danych...


title: Jak sprawić, by klienci nie lubili mnie za bardzo?

text: W 2004 roku poszedłem do firmy konsultingowej, ponieważ lubię różnorodność, wyzwania, pracę z nowymi technologiami itp. Jednak jestem programistą od 25 lat - i spędziłem większość swojej kariery jako direct-hire (12 lat), a następnie przez kolejne 3 lata jako niezależny konsultant (ach bańka DotCom!) dla jednej firmy. Więc moje instynkty są bardziej jak dobry wewnętrzny programista niż konsultant. Moim problemem jest to, co nazywam „paragrafem 22” doradztwa. Zajmujesz się konsultingiem, ponieważ chcesz pracować na wielu różnych zleceniach, ale jeśli wykonujesz naprawdę dobrą robotę, Twoi klienci nigdy nie chcą Cię puścić. I oczywiście sprzedawcy są szczęśliwi, że płacą ci (i nie chcą zrazić dobrego klienta). Więc moje pytanie brzmi – jak sobie z tym poradzić? Miałem kilku kolegów, którzy mieli odpowiedni rodzaj „arogancji” (z braku lepszego określenia), który sprawiał, że początkowo byli atrakcyjni dla niektórych klientów, ale z czasem mogliby się z nich zetknąć – ale to po prostu nie jest w moim stylu. Chcę wykonywać dobrą pracę i odnosić sukcesy dla moich klientów, ale móc „z wdziękiem” ruszyć dalej po rozsądnym czasie.


title: Jakiej licencji powinienem użyć dla mojego kodu bibliotecznego?

text: Podpisałem umowę o zakazie konkurencji, ale chciałbym móc ponownie wykorzystać część kodu we wszystkich projektach, nad którymi pracuję dla tej firmy. Tak więc, która licencja może być użyta dla mojego kodu bibliotecznego, który zasadniczo mówi: * Ja (autor) mogę użyć mojego kodu bibliotecznego w dowolnym projekcie klienta. * Nie możesz używać mojego kodu w części ani w całości w żadnym ze swoich projektów. * Nie możesz redystrybuować ani udostępniać mojego kodu w jakikolwiek sposób w części lub w całości.


title: Czy nauka informatyki jest martwa?

text: **Pytanie :** Czy nauka i sztuka CS są martwe? Mam na myśli to, że rzeczywiste wymagania dotyczące myślenia, planowania i skutecznego rozwiązywania problemów wydają się obecnie odchodzić od CS. Wydaje się, że ta dziedzina obniża barierę wejścia, aby więcej osób mogło „programować” bez konieczności uczenia się, jak naprawdę programować. **Tło :** Jestem świeżo upieczonym absolwentem informatyki. Pracuję na stanowisku startowym w przyzwoitej firmie w dziale IT. W mojej pracy zajmuję się głównie .NET i innymi technologiami Microsoft, ale wcześniej zajmowałem się Javą poprzez staże i tym podobne. Osobiście jestem programistą C++ do własnych projektów dla zabawy. **In Depth :** Dzięki pracy, którą wykonałem, wydaje mi się, że intensywne dyscypliny prawdziwej nauki już nie istnieją w CS. W przeszłości programiści musieli skutecznie rozwiązywać problemy, aby systemy były niezawodne i szybkie. Ale teraz, przy dominujących technologiach, takich jak .NET, Java i języki skryptowe, wydaje się, że wydajność i solidność zostały zamienione na łatwość programowania. Większość kolegów, z którymi pracuję, nie ma nawet dyplomu z informatyki. Większość ukończyła inżynierię elektryczną, niektórzy inżynierię oprogramowania, a nawet niektórzy poszli ze szkół technicznych bez 4-letniego programu. A jednak radzą sobie dobrze bez zaplecza technicznego CS, bez studiowania teorii i algorytmów, bez zwracania uwagi na tworzenie eleganckiego rozwiązania (po prostu wybierają najłatwiejsze, najtańsze rozwiązanie). Firma naciska na nas, aby korzystać z technologii Microsoft, które usuwają wszystkie prawdziwe myśli z materii i zastępują je bibliotekami i narzędziami, które mogą automatycznie zbudować Twój projekt za Ciebie przez połowę czasu. Nie staram się nienawidzić języków, rozumiem, że służą celowi i robią to dobrze, ale gdy Twoi pracownicy nie wiedzą, jak działa tablica mieszająca i używają niewłaściwych metod sortowania lub uruchamiają polecenia SQL, które są strasznie nieefektywne (ale wykonują pracę w akceptowalnym czasie), wydaje się, że więcej wysiłku wkłada się w rozwój technologii, które rozpieszczają nowych „programistów”, zamiast faktycznie uczyć ludzi, jak robić rzeczy dobrze. Interesuje mnie tworzenie wydajnych i moim zdaniem pięknych programów. Jeśli istnieje lepszy sposób na zrobienie tego, wolałbym wrócić i dokonać refaktoryzacji, niż pozwolić mu się poślizgnąć. Ale w świecie korporacji zmuszają mnie do szybkiego wykonywania zadań, a nie eleganckiego. I to mnie naprawdę wkurza. Czy to jest to, na co będę czekał przez resztę mojego życia? Czy nadal istnieją stanowiska dla ludzi, którzy kochają naukę i sztukę CS, a nie tylko wypłatę? I podobnie, oto dobra lektura, jeśli nie widziałeś tego wcześniej. Niebezpieczeństwa szkół Java


title: Czy możliwe jest przycięcie śladu stosu zwróconego dla niestandardowego wyjątku w PHP?

text: Pracuję nad projektem w PHP, który wykonuje wiele walidacji danych wejściowych i może rzucać różne niestandardowe klasy wyjątków w różnych warstwach aplikacji. Aby kod projektu był łatwiejszy do odczytania, przestawiłem cały kod walidacyjny na statyczne metody klasy walidacyjnej, która dokonuje sprawdzenia i w razie potrzeby wyrzuca odpowiedni wyjątek. Mój problem polega na tym, że ślad stosu wyjątków wyświetla cały stos wywołań w klasie walidacji, ale wydaje mi się, że dodatkowe informacje nie są pomocne i będą służyć tylko do zmylenia kogoś, kto próbuje debugować lokalizację prawdziwego problemu. Czy powinienem po prostu polegać na informacyjnych komunikatach o wyjątkach, czy można w jakiś sposób przyciąć dziennik śledzenia.


title: Czy dobrym pomysłem jest zmiana kompletnej aplikacji na poziomie przedsiębiorstwa w aplikację internetową ajax?

text: Pracuję nad aplikacją, która jest całkowicie napisana przy użyciu metody po stronie serwera w formularzach sieci web asp.net z c#. Teraz lider mojego zespołu chce przekonwertować całą aplikację na ajax, w tym podejściu musimy wykonać następujące zadania jedno po drugim. 1- Zmień wszystkie metody strony na metody internetowe, aby wszystkie były metodami statycznymi. 2- Użyj jquery ajax do wywołania wszystkich metod internetowych . 3- powiąż html za pomocą odpowiedzi json. Teraz szukam jakiegoś frameworka, który może sprawić, że moje wiązanie json html będzie nieco łatwe, ale większość struktur takich jak (knockout) jest znacznie zgodna z frameworkiem MVC. Mam dwie główne obawy: 1. Czy dobrym pomysłem jest przekonwertowanie wszystkich metod na metody internetowe i użycie ajax ? 2. Jeśli muszę pracować z tym podejściem, jaki jest najlepszy framework, którego mogę użyć?


title: Czy używanie dziedziczenia do kojarzenia metod z podstawowym kontenerem jest złą praktyką?

text: Zasadniczo mam kod, który wygląda tak. Jest to `typedef` i zestaw metod, które obracają się wokół tego `typedef`. class foo { // Foo stuff... // Rejestracja prywatne: typedef std::map<std::string, std::string> MTRegistrationParams; void DispatchRegistrationMessage (MTRegistrationParams const &, std::string destination_id); statyczny std::string BuildRegistrationMessage (MTRegistrationParams const &, std::string message_id); // Wywoływane tylko przez DispatchRegistrationMessage // more Foo stuff... }; Myślę, że byłoby jaśniej zrobić małą mini-klasę, aby pomóc logicznie oddzielić te metody od struktury Foo. class foo { // Foo stuff... // Rejestracja prywatne: struct MTRegistrationParams : public std::map<std::string, std::string> { void DispatchRegistrationmessage (foo &, std::string const & destination_id) ; private: std::string BuildRegistrationMessage (std::string const & message_id); }; // więcej rzeczy Foo... }; Chodzi o to, że… zwykle nie tworzę klas pochodnych, chyba że ze względu na metody wirtualne, a wyprowadzanie ze standardowego kontenera wydaje się NAPRAWDĘ dziwne. Czy jestem zbyt zaniepokojony, czy czerpię ze standardowych pojemników tylko po to, by udekorować je metodami, to naprawdę zła praktyka?


title: Czy powinienem zawrzeć warunki umowy i politykę prywatności w mojej aplikacji na iOS?

text: Zajmuję się tworzeniem mobilnej sieci społecznościowej z backendem i buforowaniem niektórych danych z facebooka. Zakładam, że powinienem zawrzeć w aplikacji rodzaj Warunków użytkowania i polityki prywatności? czy to naprawdę konieczne? gdzie mogę znaleźć odpowiednie szablony do tego?


title: Jak duża powinna być aplikacja, aby zagwarantować własny projekt TFS?

text: Lub bardziej do rzeczy, kiedy aplikacje powinny być skonsolidowane w jeden projekt zespołowy? Rozważam fakt, że każdy projekt TFS będzie zawierał kod źródłowy, elementy pracy, raportowanie, portal projektu w SharePoint i Team Web Access. Jakie są efektywne koszty zasobów związane z tworzeniem projektu TFS?


title: Jak zaprojektować kalkulator od podstaw

text: Podstawowy kalkulator może wykonywać różnorodne operacje. W jaki sposób klakulant „pojmuje” koncepcję dodawania dwóch liczb w taki sam sposób, jak robi to człowiek? Nie sądzę, aby ludzie, którzy tworzą klasyfikatory, przechowują na chipie każdy możliwy wynik i każdy możliwy dodatek przed wysłaniem go. Soemhow chip musi „nauczyć się”, jak dodawać. Mam na myśli, gdybym miał zacząć od pustej tablicy (chip) i "nauczyć" chip do wykonywania obliczeń (dodatki), jak mam się do tego zabrać? Czy muszę najpierw nauczyć się sztucznych sieci neuronowych?


title: Czy bazy danych optymalizują zapytania za pomocą sumy/średniej lub innych agregatów?

text: Wyobraź sobie bazę danych zawierającą miliardy wierszy z, powiedzmy, płatnościami. Musisz obliczyć średnią kwotę płatności. Będzie to SELECT avg(kwota) FROM płatności; Teraz, jeśli musisz codziennie ponownie obliczać tę liczbę, uruchamianie tej formuły na całym zestawie danych jest przesadą. Rowery mają prędkościomierze, które obliczają co sekundę średnią prędkość i średnią kadencję (obroty na pedałach), mimo że nie utrzymują prędkości przez każdą sekundę, i możesz jeździć godzinami, dniami i miesiącami bez resetowania licznika średniej. Odbywa się to w prosty sposób: prędkościomierz zachowuje średnią wartość i liczbę sekund. Więc kiedy dodajesz nowy element do sumy, robi to po prostu tak: nowa_średnia = (bieżąca_prędkość + stara_średnia * liczba) / (liczba + 1) Jeśli znasz matematykę, jasne jest, że każdą sumę lub produkt można obliczyć przyrostowo. Nawet aktualizacje można wykonać w ten sam sposób: odejmij starą wartość od agregatu, dodaj nową wartość. Chcę wiedzieć, czy jakakolwiek baza danych może to zrobić dla programisty? Rozumiem, że zapytanie w DB może być inne i mieć kryteria: SELECT avg(amount) FROM payments WHERE condition_1 AND condition_2; Jednak możliwe jest buforowanie średnich z większą ilością informacji (jakie wiersze znajdowały się w sekwencji i jaki był warunek filtrowania). Czy to się gdzieś robi?


title: Bezpośrednie wsparcie kodu?

text: Kilka razy w przeszłości uderzyłem w dużą ścianę i po prostu nie mogłem przejść do pewnego aspektu aplikacji, ponieważ jestem początkującym i wciąż uczę się lin (konkretnie Cel-C). Byłem ciekaw, czy ktoś zna jakieś usługi, które wspierają programistów w czasie rzeczywistym, płatne lub bezpłatne i czy na czacie wideo, audio lub tekstowym usiądą i rozwiążą problem, dopóki nie zostanie naprawiony i przejrzą Twój kod? Rozumiem, że Stackoverflow wykonuje w tym super robotę! Jednak potrzebuję czegoś bardziej skrojonego na miarę, gdzie ktoś może spędzić trochę czasu, aby usiąść i popatrzeć, z czym mam do czynienia i zagłębić się w mój kod, jeśli zajdzie taka potrzeba. Dziękuję.


title: Co jest wymagane dla zakresu w ramach wstrzykiwania?

text: Pracując z bibliotekami, takimi jak Seam, Guice i Spring, przyzwyczaiłem się do zajmowania się zmiennymi w zakresie. Te biblioteki zapewniają garść zakresów i pozwalają zdefiniować własne. Jest to bardzo przydatny wzorzec do radzenia sobie ze zmiennymi cyklami życia i wstrzykiwaniem zależności. Próbowałem określić, gdzie scoping jest właściwym rozwiązaniem lub gdzie inne rozwiązanie jest bardziej odpowiednie (zmienna kontekstowa, singleton itp.). Odkryłem, że jeśli cykl życia zakresu nie jest dobrze zdefiniowany, zarządzanie wstrzyknięciami w ten sposób jest bardzo trudne i często podatne na niepowodzenie. Szukałem tego tematu, ale znalazłem mało dyskusji na temat wzoru. Czy istnieją dobre artykuły omawiające, gdzie używać zakresu i jakie są wymagane/sugerowane warunki wstępne określania zakresu? Interesowała mnie zarówno dyskusja referencyjna, jak i Państwa pogląd na to, co jest wymagane lub sugerowane do prawidłowej realizacji zakresu. Należy pamiętać, że odnoszę się do określania zakresu jako ogólnego pomysłu, obejmuje to takie rzeczy, jak singletony o zasięgu globalnym, zmienna sieciowa o zasięgu żądania lub sesji, zakresy konwersacji i inne. **Edycja:** Trochę prostego tła na temat niestandardowych zakresów: Niestandardowy zakres Google Guice Niektóre definicje związane z powyższym: _„zakresowanie”_ \- Zbiór wymagań definiujących, które obiekty są wstrzykiwane w jakim czasie. Prostym przykładem jest zakres ThreadLocal oparty na ThreadLocal. Ten zakres wstrzyknąłby zmienną na podstawie tego, który wątek utworzył instancję klasy. Oto przykład tego: _„zmienna kontekstowa”_ \- Repozytorium przekazywane z jednego obiektu do drugiego zawierające odpowiednie zmienne. Podobnie jak określanie zakresu, jest to bardziej brutalny sposób uzyskiwania dostępu do zmiennych w oparciu o kod wywołujący. Przykład: methodOne(Kontekst kontekstu){ methodTwo(context); } methodTwo(Context context){ ... //ten sam kontekst co metoda pierwsza, jeśli zostanie wywołany z metody pierwszej } _„singleton o zasięgu globalnym”_ \- Zgodnie ze wzorcem singletona na instancję aplikacji przypada jeden obiekt. Dotyczy to zakresów, ponieważ istnieje podstawowy cykl życia tego obiektu: istnieje tylko jeden z tych obiektów. Oto przykład obiektu objętego zakresem JSR330 Singleton: @Singleton public void SingletonExample{ ... } użycie: public class One { @Inject SingeltonExample przykład1; } public class Two { @Inject SingeltonExample example2; } Po utworzeniu instancji: jeden.przyklad1 == dwa.przyklad2 //prawda;


title: Za co zgodnie z prawem obciążać klientów

text: Nie mówię o pracach o stałej cenie, są one _dość_ proste. Ale mam projekt dotyczący stawek godzinowych, moje pytanie dotyczy konkretnie tego, za co pobierać opłaty. Jeśli mam problem z IE/CSS, który zajmuje mi godzinę na przeszukanie CSS, czy jest to płatne? Jeśli zdecyduję się na użycie naprawdę fajnej animacji jQuery na ich stronie, ale muszę się z nią uporać, czy pobieram opłatę za eksperymenty, które przeprowadzam z animacją. Czy obciążasz klientów za coś, o co proszą, o czym nie wiesz i dlatego musisz poświęcić czas na naukę? Jeśli o mnie chodzi, jest to szara strefa i nie jest wyraźnie zaznaczona w cudzysłowie (prawdopodobnie dlatego, że niewielu klientów chętnie zapłaciłoby za twoją wprawę/naukę) Jaki jest konsensus w tej sprawie?


title: OS odpowiednik plików cookie

text: Gram w MMORPG, w którym muszę uruchomić plik wykonywalny klienta gry i zalogować się za pośrednictwem tego klienta gry. W jakiś sposób temu klientowi gry udaje się zapisać moją nazwę użytkownika po zalogowaniu się za jego pomocą. Na początku myślałem, że tego rodzaju informacje zostały zapisane w jednym z plików gry, ale po ponownym zainstalowaniu gry moja nazwa użytkownika nadal tam była po uruchomieniu klienta gry, co oznacza, że informacje o nazwie użytkownika są przechowywane gdzie indziej. I to prowadzi do mojego pytania. Gdzie plik wykonywalny, w tym przypadku klient gry, przechowuje informacje o użytkowniku? Jest to analogiczne do sposobu, w jaki przeglądarka używa plików cookie do przechowywania informacji o użytkowniku.


title: Jakie są dobre powody, aby używać jawnej implementacji interfejsu wyłącznie w celu ukrywania członków?

text: Podczas jednego z moich studiów nad zawiłościami C# natrafiłem na ciekawy fragment dotyczący implementacji interfejsu jawnego. `Chociaż ta składnia jest bardzo pomocna, gdy trzeba rozwiązać konflikty nazw, można użyć jawnej implementacji interfejsu, aby ukryć bardziej „zaawansowane” elementy na poziomie obiektu.` Różnica między zezwoleniem na użycie metody `object.method()` lub wymaganie rzucania `((interfejs)obiekt).method()` wydaje się moim niedoświadczonym oczom jak złośliwe zaciemnianie. W tekście napisano, że spowoduje to ukrycie metody przed Intellisense na poziomie obiektu, ale dlaczego _chcesz_ to zrobić, jeśli nie było konieczne uniknięcie konfliktów nazw?


title: Które klasy powinny być automatycznie okablowane przez Spring (kiedy używać wstrzykiwania zależności)?

text: Od jakiegoś czasu używam Dependency Injection w Spring i rozumiem, jak to działa i jakie są plusy i minusy jego używania. Jednak kiedy tworzę nową klasę, często się zastanawiam - czy ta klasa powinna być zarządzana przez Spring IOC Container? I nie chcę mówić o różnicach między adnotacją @Autowired, konfiguracją XML, wstrzykiwaniem settera, wstrzykiwaniem konstruktora itp. Moje pytanie jest ogólne. Załóżmy, że mamy usługę z konwerterem: @Service public class Service { @Autowired private Repository repozytorium; @Autowired prywatny konwerter konwertera; public Lista<SamochódDo> getAllCars() { Lista<Samochód> samochody = repozytorium.findAll(); return converter.mapToDto(samochody); } } @Component public class Converter { public CarDto mapToDto(List<Car> cars) { return new ArrayList<CarDto>(); // wykonaj mapowanie tutaj } } Oczywiście konwerter nie ma żadnych zależności, więc nie jest konieczne, aby był on automatycznie podłączony. Ale dla mnie wydaje się, że lepiej jest w trybie autowired. Kod jest czystszy i łatwy do przetestowania. Jeśli napiszę ten kod bez DI, usługa będzie wyglądać tak: @Service public class Service { @Autowired private Repository repozytorium; public Lista<SamochódDo> getAllCars() { Lista<Samochód> samochody = repozytorium.findAll(); Konwerter konwertera = nowy Konwerter(); return converter.mapToDto(samochody); } } Teraz znacznie trudniej jest to przetestować. Co więcej, dla każdej operacji konwersji zostanie utworzony nowy konwerter, nawet jeśli jest on zawsze w tym samym stanie, co wydaje się być obciążeniem. W Spring MVC istnieje kilka dobrze znanych wzorców: kontrolery korzystające z usług i usługi korzystające z repozytoriów. Następnie, jeśli Repozytorium jest okablowane automatycznie (co zwykle jest), wówczas usługa musi być również okablowana automatycznie. I to jest całkiem jasne. Ale kiedy używamy adnotacji @Component? Jeśli masz jakieś statyczne klasy użytkowe (takie jak konwertery, mapery) - czy łączysz je automatycznie? Czy starasz się, aby wszystkie klasy były automatycznie podłączane? Wtedy wszystkie zależności klasowe są łatwe do wstrzyknięcia (znowu łatwe do zrozumienia i łatwe do przetestowania). A może próbujesz autowire tylko wtedy, gdy jest to absolutnie konieczne? Spędziłem trochę czasu szukając ogólnych zasad, kiedy używać autowiringu, ale nie mogłem znaleźć żadnych konkretnych wskazówek. Zwykle ludzie mówią „czy używasz DI? (tak/nie)” lub „jaki rodzaj wstrzykiwania zależności wolisz”, co nie odpowiada na moje pytanie. Byłbym wdzięczny za wszelkie wskazówki dotyczące tego tematu!


title: Czy funkcjonalne języki programowania mają większe możliwości optymalizacji czasu kompilacji?

text: Czytałam książkę "Programowanie funkcjonalne w świecie rzeczywistym". Zaczęło się od porównania imperatywnych i funkcjonalnych języków programowania. Stwierdzono, że „wartości” i „wyrażenia” w programowaniu funkcjonalnym różnią się od „zmiennych” i „funkcji” programowania imperatywnego. Z dyskusji w pewnym sensie rozwinąłem pomysł, że - > Funkcjonalne języki programowania mają więcej możliwości optymalizacji czasu kompilacji niż ich imperatywne odpowiedniki. Czy to prawda?


Czy do nauki programowania na Androida konieczne jest posiadanie urządzenia z Androidem? Obecnie moim podstawowym językiem programowania jest Java.


title: Zasada pojedynczej odpowiedzialności: odpowiedzialność nieznana

text: Sesje przechowuję w `SessionManager`. Menedżer sesji jest zależny od `ISessionPersister`. **SessionManager** prywatny tylko do odczytu ISessionPersister sessionPersister; public SessionManager(ISessionPersister sessionPersister) { this.sessionPersister = sessionPersister; } **ISessionPersister** interfejs publiczny ISessionPersister : IDisposable { void PersistSessions(Dictionary<string, ISession> session); } **P: Jeśli moja aplikacja zostanie zamknięta, jak/gdzie mogę wywołać `PersistSessions`? Kto jest odpowiedzialny?** Pierwsze podejście: Użyj Dispose w SessionManager chronionej wirtualnej void Dispose(bool disposing) { if (disposing) { if (this.sessionPersister != null && this.sessionMap != null && this.sessionMap.Count > 0 ) { this.sessionPersister.PersistSessions(this.sessionMap); } } } Czy to jest właściwa droga, czy są jakieś lepsze rozwiązania?


title: Jak mam obsłużyć rejestrowanie, gdy tworzę biblioteki dla innych?

text: Wszystko. Tworzę kilka bibliotek dla innych zespołów w mojej firmie. Wszystkie mają różne mechanizmy rejestrowania. Chcę dostarczać informacje o tym, co robią moje biblioteki. Co powinienem, aby to osiągnąć? Dziękuję


title: Jaka jest idiomatyczna nazwa zmiennej jednorazowej?

text: Dyrektywa set języka Velocity Template Language wymaga zmiennej po lewej stronie. To nie działa. #set ( $entries.add("d") ) Mimo że nie potrzebuję wartości zwracanej przez `add("d")`, muszę przypisać ją do zmiennej. #set ( $x = $entries.add("d") ) Chcę zakomunikować, że zmienna jest konieczna, ale nie mam zamiaru jej później używać. Czy istnieje konwencja nazywania zmiennych, które istnieją tylko w celu uspokojenia kompilatora?


title: używanie płaskiego pliku vs sqlite db do częstego pobierania danych w zadaniu cron

text: Mam pewne zautomatyzowane zadanie do wykonania przy użyciu określonych typów logów generowanych na serwerze pod koniec każdego dnia. Pliki dziennika zawierają specyficzny identyfikator maszyny „MAC”, który ma zostać ponownie zapisany w innym pliku tekstowym przekonwertowanym na nazwę maszyny. **SAMEPE LOG DATA PLIKÓW, KAŻDY ZAWIERA ~2 MILIONY LINII W FORMACIE BINARNYM** * * * -----------|--------|--------- --------|----|----------|--------- DATA |CZAS |ADRES_MAC |PORT|ADRES_IP|BLA BLAA ---- -------|--------|-----------------|----|---------- |---------- 19-01-2014 |18:16:42|A3:43:31:11:02:1A|22 | 19-01-2014 |18:16:43|A3:43:31:11:12:1A|22 | 19-01-2014 |18:16:43|A3:43:31:11:12:1A|21 | 19-01-2014 |18:16:44|A3:43:31:11:12:22|80 | 19-01-2014 |18:16:44|A3:43:31:11:12:00|443 | 19-01-2014 |18:16:45|A3:43:31:AA:12:AA|5800| 19-01-2014 |18:16:46|A3:43:31:AA:30:1A|21 | Powyższe wpisy wymagają przekonwertowania na format tekstowy, adres MAC zastąpiony nazwą komputera z mojej bazy danych nazw komputerów. Mój obecny program, odczytaj każdą linię z powyższego pliku i znajdź nazwę maszyny z nazwy maszyny db pasującą do MAC_ADDRESS odczytanych danych i zapisz każdą z nich do pliku tekstowego. * * * To jest moje pytanie. Mój program jest napisany w języku `C`. Mam dwie opcje zarządzania nazwami maszyn DB, pierwszą jest posiadanie bazy danych sqlite lub drugą opcją jest posiadanie płaskiego pliku binarnego. Rozważam wydajność. Obawiam się, że użycie db do tego byłoby mniejszą wydajnością w porównaniu do pliku, ponieważ wymaga czasu na połączenie / rozłączenie podczas przetwarzania każdego wiersza dziennika. mimo to nadal nie rozumiem swojego punktu. Proszę wziąć pod uwagę liczbę rekordów i zasugerować mi, czy nie lepiej używać pliku płaskiego dla bazy danych sqlite do przechowywania rekordów nazw komputerów.


title: DDD: usługa lub repozytorium

text: Tworzę aplikację w sposób DDD. I mam z tym mały problem. Mam obiekty Fare (taryfy lotnicze) i FareRepository. W pewnym momencie powinienem załadować dodatkowe informacje o taryfie (z serwera, wywołać serwer api) i skonfigurować te informacje do istniejącej taryfy. Domyślam się, że muszę stworzyć usługę Application Service (FareAdditionalInformationService), która zajmie się pozyskiwaniem danych z serwera, a następnie aktualizacją istniejącego Fare lub umieszczeniem logiki biznesowej w obiekcie Fare. Jednak niektórzy powiedzieli mi, że do tego problemu konieczne jest użycie FareRepository. Nie wiem, które miejsce jest lepsze dla mojego problemu z Serwisem lub Repozytorium. **AKTUALIZACJA:** Po przeprowadzeniu badań doszedłem do wniosku, że lepszym miejscem do pobrania dodatkowych informacji o taryfie jest usługa taka jak (AdditionalFareService). Kod wyglądałby mniej więcej tak: //utwórz usługę do pobierania informacji o taryfie AdditionalFareService service = new AdditionalFareService(); //pobierz taryfę według identyfikatora Fare fare = fareRepository.GetById(myFareId); //Uzyskaj informacje z usługi var fareInformation=service.getAdditionalInformation(fare) //Dodaj je do taryfy. taryfa.AddInformation(taryfaInformacja); //zapisz go w repozytorium. fareRepository.Save(taryfa);


title: Czy uważa się za „rozsądne” zaimplementowanie większej części programu w dużej mierze przez tworzenie podklas klasy bibliotecznej?

text: Planuję zaimplementować edytor tekstu przy użyciu Javy i Swing dla GUI. Zastanawiałem się, jak mogę zaimplementować obszar tekstowy, w którym użytkownik wpisuje tekst. Mój pomysł polegał na podklasie `JTextArea`. Ma już wiele funkcji do ustawiania tekstu, zmiany rozmiaru czcionki itp. Dodam wtedy wszystkie dodatkowe funkcje, takie jak możliwość wpływu naciśnięć przycisków w interfejsie użytkownika itp. Wydaje mi się to rozsądne, jednak ja masz pytanie na ten temat: ** Czy w „poważnym” programie uważa się za rozsądne zaimplementowanie większej części programu przez podklasowanie istniejącej klasy wspólnej biblioteki?** Czy jest to rzecz „poważna” i „profesjonalna” do zrobienia? Oczywiście profesjonalni programiści cały czas używają i podklasują istniejący kod, nie ma sensu wymyślać koła na nowo. Ale tutaj mówię o **wdrożeniu dużej części aplikacji** , prawdopodobnie największej części, **w dużej mierze poprzez podklasyfikowanie istniejącej klasy bibliotecznej.** Nie jestem profesjonalistą i wiem, że nie mam pracować „jak profesjonaliści”. Ale interesuje mnie, jak postrzegają to profesjonaliści. **1-** Czy coś takiego jest uważane za rozsądne w „profesjonalnej” aplikacji? **2-** Czy kiedykolwiek widziałeś to w praktyce w „profesjonalnej” aplikacji?


title: Czy przy sprawdzaniu warunków początkowych obowiązuje zasada „jedno stwierdzenie na test”?

text: Zastanawiałem się nad najlepszymi praktykami testowania jednostkowego i natknąłem się na regułę **jedno potwierdzenie na test jednostkowy**. Widzę, gdzie ten pomysł pomógłby wyizolować fragmenty skomplikowanych operacji lub weryfikacji, gdy masz taki kod: private Place place; @Test public void test_whiteHouse(){ place = nowe miejsce(KnownPlaces.WHITEHOUSE); attachEquals("1600 Pennsylvania Avenue", place.getAddress()); attachEquals("Waszyngton", place.getCity()); attachEquals("DC", place.getState()); } Widzę, gdzie generalnie chciałbyś podzielić to na mniejsze testy, takie jak: miejsce prywatne; @Before public void setUp(){ place = new place(KnownPlaces.WHITEHOUSE); } @Test public void test_whiteHouse_street(){ attachEquals("1600 Pennsylvania Avenue", place.getAddress()); } @Test public void test_whiteHouse_city(){ attachEquals("Waszyngton", place.getCity()); } @Test public void test_whiteHouse_state(){ attachEquals("DC", place.getState()); } Jednak jeśli testuję settera, kod może wyglądać tak: @Test public void test_place_setCity(){ String newCity = "timbuktu"; Miejsce miejsce = nowe Miejsce(); place.setCity(noweMiasto); attachEquals(noweMiasto, miejsce.getCity()); } Test będzie działał poprawnie, ale jeśli istnieje współdzielona konfiguracja, zakładam stan początkowy. Jakie byłyby minusy uruchamiania sprawdzania stanu początkowego: @Test public void test_place_setCity(){ String newCity = "timbuktu"; Miejsce miejsce = nowe Miejsce(); attachFalse(place.getCity().equals(noweMiasto)); place.setCity(noweMiasto); attachEquals(noweMiasto, miejsce.getCity()); } To sprawdzenie sprawdziłoby, czy metoda ustawiająca faktycznie coś **_zmieniła_** coś, sprawdzając, czy stan początkowy był inny niż stan końcowy. W przeciwnym razie zmiana lub awaria konstruktora lub metody konfiguracji może spowodować, że test stanie się nieskuteczny. Czy są jakieś wady naruszania w ten sposób zasady jednego asercji na ograniczenie?


title: Pisanie ogólnofirmowego podręcznika programisty

text: Pracuję dla małej firmy. Dział rozwoju oprogramowania firmy, zanim zostałem zatrudniony, składał się z jednego przepracowanego samouka. Teraz, gdy od kilku lat piszę oprogramowanie dla firmy, otrzymałem zadanie ustanowienia formalnych praktyk rozwoju oprogramowania w całej firmie. Obecnie nie mamy żadnych wytycznych poza > Napisz kod, przetestuj go, umieść w pliku .zip i wyślij do klienta. Bonus > punkty za TDD i kontrolę wersji. Mój szef chce, żebym napisał podręcznik dla programistów, który definiuje ogólne procesy, protokoły, narzędzia i wytyczne, których używamy do załatwiania spraw. Innymi słowy, chce mieć książkę „To jest to, co tutaj robimy”, aby ułatwić nowemu pracownikowi zapoznanie się ze sposobem, w jaki robimy różne rzeczy, a także aby pomóc mojemu szefowi zrozumieć, co robią jego podwładni i jak to robią. to. Tak jak to widzę, kładę fundament i trzeba to zrobić dobrze. **Jak byś wybrał tematy do takiego podręcznika?** Czy możesz podać kilka przykładowych tematów? Uwaga dodatkowa: Jeśli to ma znaczenie, jesteśmy przede wszystkim sklepem Microsoft .NET. I patrzymy na zwinne praktyki, takie jak XP i Scrum, ale być może będziemy musieli je mocno zmodyfikować, aby działały w naszej firmie.


title: Oprogramowanie do symulacji gospodarki

text: Poszukuję oprogramowania, które może symulować proste zachowania ekonomiczne. Na przykład chciałbym stworzyć 100 gospodarstw domowych, z różnymi funkcjami użyteczności, a następnie przeprowadzić symulację i zobaczyć, jak rozwijają się w czasie zapotrzebowanie, zapasy i ceny. Może to być ciekawy sposób na zobaczenie formuł w działaniu.


title: Potrzebuję porady i opinii na temat projektu mojego kodu

text: Oczekuję opinii na temat projektu mojego programu. Mam wywołanie skryptu powłoki function.sh, który definiuje wiele funkcji pomocniczych. Moim zamiarem jest użycie funkcji basha zdefiniowanych w functions.sh w programie C. Robię to, aby nie musieć ponownie przepisywać funkcjonalności bash (w functions.sh) w C. Chcę użyć jednej wspólnej biblioteki dla potrzebnych funkcji (czyli functions.sh). Oto mój kod C i kod C functions.sh: #include <stdlib.h> #include <sys/wait.h> #include <stdio.h> void shellCall(char * command) { int status, commandexitcode=0; if(polecenie == NULL) { printf("Wysłano ciąg polecenia NULL\n"); wyjście (1); } status = system(polecenie); if(status == -1) { printf("Błąd podczas połączenia, wartość %d\n", status); wyjście (1); } if (WIFEXITED(status)) {polecenieexitcode = WEXITSTATUS(status); if (commandexitcode != 0) { printf("niezerowy kod zakończenia: %d\n", commandexitcode); wyjście (1); } } else if (WIFSIGNALED(status)) ... } int main(int argc,char **argv) { char polecenie[100]; //polecenie int i = 0; for (i = 1 ; i <= 10 ; i++) { sprintf( polecenie, "źródło $PWD/functions.sh ; i=%d ; mojafunkcja %d", i,i ); shellCall(polecenie); } } functions.sh: #!/bin/sh # functions.sh myfunc() { echo "Otrzymałem $1" } Proszę zauważyć, że przedstawiłem tylko bardzo prosty przykład sposobu, w jaki używam funkcji w functions.sh. W rzeczywistości functions.sh ma wiele funkcji, z których niektóre implementują przyzwoitą logikę. * * * Moje pytania - Potrzebuję informacji zwrotnej na temat poniższych aspektów. 1. Czy jest to zła praktyka programistyczna (coś, co sprawi, że doświadczeni i starsi programiści będą wściekli, gdy to zobaczą), aby używać wywołań system() do wywoływania funkcji w functions.sh, tak jak to zrobiłem? 2. Jeśli jest to zła praktyka, jakie są powody (techniczne i inne), dla których jest uważana za złą praktykę programistyczną? 3. Jakie zmiany powinienem wprowadzić w kodzie C, aby doświadczeni i starsi programiści uznali go za akceptowalny?


title: Czy metody w języku OOP można uznać za rodzaj domknięcia?

text: Rozważmy metodę _m_ klasy A w języku obiektowym, takim jak Java lub C++. W treści metody _m_ można odwołać się do zmiennych składowych obiektu, na którym wywoływana jest metoda. Zmienne te nie są zdefiniowane w samej metodzie, ale są związane w momencie wywołania metody. Czy jest to ten sam mechanizm używany do zamknięć (wiązanie nazw nielokalnych przy użyciu kontekstu), a jeśli nie, jakie są różnice? Innymi słowy, czy byłoby możliwe przeglądanie obiektu z jego metodami jako zbioru zamknięć (metod), które są zamknięte na niektórych wspólnych danych (zmiennych składowych obiektu)?


title: Jak w praktyce realizowane są przerwania?

text: Rozważ urządzenie USB, które odbiera dane przez sieć bezprzewodową, a aplikacja działająca na komputerze odczytuje te dane. Teraz w wielu językach (rozważ C# DataReceived) mamy mechanizmy obsługi zdarzeń do wykrywania, czy dane dotarły, czy nie. Moje pytanie brzmi, jak zaimplementowany jest ten mechanizm wykrywania zdarzeń? Czy to jest działający zegar, który okresowo sprawdza, aby sprawdzić nadejście danych, czy jest to coś, co sprzęt musi obsługiwać? Ogólnie rzecz biorąc, jak są realizowane te zmiany w zdarzeniach dotyczących stanu sprzętu?


title: Czy istnieje sposób na skonfigurowanie wygodniejszej, przypominającej sklep z aplikacjami strony instalacyjnej dla wyników kompilacji z ciągłej integracji Xcode?

text: Pomyślnie skonfigurowałem serwer xcoder do tworzenia kompilacji ci. Na każdej stronie bota znajduje się przycisk instalacyjny-link, który działa dobrze dla programistów. Jednak dla naszego działu Qa chciałbym udostępnić stronę internetową bardziej przypominającą sklep z aplikacjami, pokazującą wszystkie wyniki kompilacji bota z nazwą aplikacji i ikoną, z której można zainstalować ** bardzo takie same ** archiwa, jak podano w „normalnym bot strona. Czy jest na to prosty, a nawet udokumentowany jabłkiem sposób? Czy ktoś ma jakieś pomysły jak to zrobić ręcznie? Znalazłem już miejsce przechowywania kompilacji na dysku, odkryłem również, że link do instalacji produktu wygląda tak: `http://<SERVER_NAME>/xcs/install/<PRODUCT_GUID>` . ProductGUID jest generowany dynamicznie podczas działania bota. Strona internetowa serwera Xcode pobiera identyfikator productGUID za pośrednictwem żądań do aplikacji internetowej Xcode, która odpowiada strukturami json zawierającymi wiele informacji o uruchomieniu bota. Miałem nadzieję, że w ten sposób też będę miał dostęp do productGUID, ale okazało się, że te żądania wymagają (również dynamicznie generowanego) bot-run-ID...