title: Stworzyłem grę HTML5/Javascript. Czy muszę to licencjonować?

text: Stworzyłem więc internetową grę HTML5/Javascript. Udostępniam go na mojej stronie internetowej, aby każdy mógł grać za darmo. Nadal nad tym pracuję. Czy muszę licencjonować swoją grę? A jeśli tak, jaką licencję polecacie? Patrzyłem na niektóre licencje open source, takie jak GPLv3, ale nie jestem pewien, czy w ogóle potrzebuję licencji? **Jeśli potrzebuję licencji** , potrzebuję takiej, która pozwala: * moja gra jest całkowicie darmowa **do grania** * moja gra może być osadzona na innych stronach internetowych * nikt inny nie może redystrybuować mojej gry, chyba że jest pod moim imieniem, a nie ich. Ponadto, jeśli potrzebuję licencji, gdzie mam ją uwzględnić? Czy muszę gdzieś zaznaczyć, że gra jest na licencji „xxxxx license”? Czy muszę załączyć link do pliku licencji hostowanego na moim serwerze? A może nawet dołączyć plik licencji do mojej gry (tj. w pliku javascript gry lub w menu gry itp.)?


title: powinienem zgłosić wyjątek z konstruktora?

text: Wiem, że mogę zgłosić wyjątek z konstruktora w PHP, ale czy powinienem to zrobić? Na przykład, jeśli wartość parametru nie jest taka, jakiej się spodziewałem. Czy też powinienem odroczyć rzucanie wyjątku do momentu wywołania metody. Jakie są zalety i wady w obu przypadkach?


title: Standardy routingu internetowego

text: Tworzymy interfejs API, aby zapewnić naszym dostawcom uproszczony bezpośredni dostęp. Wcześniej budowałem API i zawsze kierowałem je w taki sposób: {kontroler}/{akcja}/{id} Mój szef nie uważa jednak, że jest to intuicyjne. Uważa, że powinniśmy kierować nasze API w ten sposób: {kontroler}/{id}/{akcja} Jego rozumowanie jest następujące: "Dla obiektu numer 7, pobierz" lub "Dla obiektu numer 15, zapisz". Uważa, że to ma więcej sensu i że nasi sprzedawcy zrozumieją to lepiej w ten sposób. Dla mnie chodzi o rozpoczęcie od najdrobniejszych szczegółów, a następnie drążenie w dół: „Mam do czynienia z obiektem, muszę go zapisać, zapisać z id 15” Próbuję zbudować argument za utrzymaniem go w standardzie, a Argument „Wszyscy inni robią to w ten sposób, a my po prostu zmylimy ludzi” nie wydaje się skuteczny. Jego odpowiedź brzmi: „Nigdy wcześniej nie mieliśmy interfejsu API, więc nasi klienci będą mogli z niego korzystać w ten sposób”. Chciałbym znaleźć mocniejsze argumenty, poparte białymi księgami, jeśli je znajdę, ale nic mi nie wychodzi. Jakich argumentów byś użył i czy są jakieś dokumenty, na które mógłbyś mnie wskazać?


title: Wada implementacji usługi DDD jako klasy statycznej?

text: Czy usługi w projekcie opartym na domenie można zaimplementować jako klasę statyczną C#? Jakie są wady tego wyboru? Czy można go zaimplementować jako niestatyczną klasę niesingletonową?


title: Najlepszy sposób na ustawienie sys.path do tworzenia "gorącej biblioteki" w Pythonie?

text: Mam kod źródłowy Pythona o następującej strukturze: +-branchname/ +-dst/ +-src/ | +-biblioteka/ | | +-cleese/ | | | +-test/ | | | | +-__init__.py | | | | +-test_cleese.py | | | +-__init__.py | | | +-cleese.py | | +-palin/ | | +-test/ | | | +-__init__.py | | | +-test_palin.py | | +-__init__.py | | +-palin.py | +-linia produktów/ | +-cyrk/ | | +-test/ | | | +-__init__.py | | | +-test_circus.py | | +-__init__.py | | +-cyrk.py | +-graal/ | +-test/ | | +-__init__.py | | +-test_grail.py | +-__init__.py | +-grail.py +-branch_root_marker Punkty wejścia znajdują się w cyrku/ i grail/, a także (ewentualnie) w każdym z katalogów test/, w zależności od tego, jak zaimplementowano testowanie. Mam wiele kopii tego drzewa źródłowego obecnych w pamięci lokalnej w dowolnym momencie (odpowiada to różnym gałęziom konserwacji i funkcji), więc nie mogę ustawić PYTHONPATH w mojej powłoce bez bólu. (Musiałbym pamiętać, aby to zmienić za każdym razem, gdy przechodzę do pracy w innej gałęzi i jestem bardzo zapominalski) Zamiast tego mam pewną logikę, która idzie w górę drzewa plików, zaczynając od „bieżącej” lokalizacji pliku, przechodząc z liść w kierunku korzenia, szukając branch_root_marker. Po znalezieniu katalogu głównego bieżącej kopii roboczej, dodaje library/ i productline/ do sys.path. Wywołuję tę funkcję z każdego punktu wejścia w systemie. """Dodaj kopię roboczą (gałąź) do sys.path""" import os import sys def _setpath(): """Dodaj kopię roboczą (gałąź) do sys.path""" markerfile = "branch_root_marker" path = "" if ("__file__" w locals() lub globals()) i __file__ != "__main__": path = __file__ elif sys.argv i sys.argv[0] a nie sys.argv[0] == "-c" : path = sys.argv[0] path = os.path.realpath(os.path.expandvars(path)) podczas gdy os.path.exists(path): jeśli os.path.exists(os.path.join(path) , plik znaczników)): break else: path = os.path.dirname(ścieżka) errormsg = " ".join(("Nie można znaleźć", plik znaczników)) attach os.path.exists(ścieżka) i ścieżka != os. path.dirname(path), errormsg path = os.path.join(path, "src") (_, subdir_list, _) = os.walk(path).next() dla podkatalogu w subdir_list: jeśli subdir.startswith( "."): Continue subdir_path = os.path.join(path, subdir) if subdir_path in sys.path: Continue sys.path.append(subdir_path) _setpath() Obecnie muszę zachować oddzielną, ale identyczną kopię tej funkcji w każdym punkcie wejścia . Mimo że jest to dość krótka funkcja, jestem bardzo zaniepokojony tym, jak pachnąco zasada DRY jest naruszana przez takie podejście i chciałbym znaleźć sposób na utrzymanie logiki modyfikacji sys.path w jednym miejscu. Jakieś pomysły? Uwaga: – Jedną rzeczą, która przychodzi do głowy, jest zainstalowanie logiki modyfikującej sys.path we wspólnej lokalizacji, która zawsze znajduje się w PYTHONPATH. Chociaż nie jest to straszny pomysł, oznacza to wprowadzenie etapu instalacji, który należy przeprowadzić za każdym razem, gdy przenoszę się do nowego środowiska; jeszcze jedna rzecz do zapamiętania (lub, co bardziej prawdopodobne, zapomnij), więc chciałbym tego uniknąć, jeśli to w ogóle możliwe.


title: Dlaczego pamięć podręczna procesora jest tak szybka?

text: Co sprawia, że pamięć podręczna procesora jest o wiele szybsza niż pamięć główna? Widzę pewne korzyści w wielopoziomowym systemie pamięci podręcznej. Ma sens, że mniejsza pamięć podręczna jest szybsza do przeszukania. Ale musi być w tym coś więcej.


title: Czym tak naprawdę jest „logika biznesowa”?

text: Zajmuję się tworzeniem stron internetowych od 2009 roku, kiedy zacząłem pracę z PHP. Kiedy przeniosłem się do ASP.NET, dużo słyszałem o DDD i OOAD, gdzie dużo uwagi poświęcono „logice biznesowej” i „regułom biznesowym”. Chodzi o to, że wszystkie aplikacje, które do tej pory stworzyłem, dotyczyły operacji CRUD i nigdy nie widziałem tych rzeczy w praktyce. Po prostu nie potrafię sobie wyobrazić, czym naprawdę mogą być te rzeczy w praktyce. Czym więc tak naprawdę jest ta logika biznesowa i jak to pasuje do aplikacji? Wiem, że są one implementowane jako metody w modelach domen, ale jakie mogą być te metody i gdzie w aplikacji mogą być używane?


title: Jak udokumentować eksperymentalne lub niekompletne interfejsy API, takie jak @deprecated?

text: Czy istnieje dobry termin, który jest podobny, ale różni się od „przestarzałego”, oznaczający, że metoda lub interfejs API znajduje się w bazie kodu, ale nie należy go używać, ponieważ jego implementacja nie jest kompletna lub prawdopodobnie ulegnie zmianie? (Tak, wiem, te metody nie powinny być publiczne, bla bla bla. Nie stworzyłem swojej sytuacji, po prostu staram się jak najlepiej ją wykorzystać.) Co ludzie sugerują? Eksperymentalne, niekompletne, coś jeszcze? Jeśli tworzę dokumentację javadoc dla tego interfejsu API, który nadal jest w ruchu, czy powinienem użyć tagu @deprecated, czy może jest lepsza konwencja? Dla mnie @deprecated oznacza, że to API jest stare i dostępny jest nowszy preferowany mechanizm. W mojej sytuacji nie ma alternatywy, ale niektóre metody w API nie są skończone i dlatego nie należy ich używać. W tym momencie nie mogę uczynić ich prywatnymi, ale chciałbym umieścić wyraźne ostrzeżenia w dokumentacji.


title: Czy w .NET jest coś, co pozwala mi zdefiniować gramatykę i wygenerować język programowania?

text: Mam kurs, na którym profesor poprosił nas o stworzenie DSL do naszego końcowego projektu. Przedstawił nam na pierwszych kursach xText z Eclipse. Ponieważ jest to nowy kurs, wciąż nie rozumiem, co oznaczają języki specyficzne dla domeny. To jest moje obecne rozumienie: język specyficzny dla domeny to język, który jest tworzony dla konkretnych problemów w tworzeniu oprogramowania. Przykładami DSL są PHP, SQL, JavaScript i odwrotnie to języki takie jak Java , C# , C++ , Ruby itp. Jeśli się mylę, proszę o poprawienie mnie. Co chciałbym wiedzieć: czy jest jakieś narzędzie dla .NET/Visual Studio, które jest podobne do Xtext, które pozwala mi zdefiniować gramatykę i generować język programowania na podstawie tego z diagramem aktywności?


title: Czym jest SAP i gdzie mogę się o nim dowiedzieć?

text: Właśnie odziedziczyłem bazę kodu, która w dużym stopniu wykorzystuje technologie SAP. Projekt jest napisany w C#, jeśli to robi różnicę. Mam problem ze znalezieniem zasobów, aby dowiedzieć się więcej o SAP. Czy ktoś może wskazać mi właściwy kierunek?


title: ORM: Utrzymywać byty spójne w pamięci podręcznej czy pobierać byty za każdym razem?

text: Mamy trudne pytanie w projekcie wykorzystującym Javę i Hibernate, z modelem zawierającym relacje dwukierunkowe. Ponieważ jest to mały projekt z kilkoma użytkownikami, kilkoma encjami i kilkoma wierszami zaangażowanymi w relacje (nie więcej niż 100 w relacjach 1-n), tak naprawdę nie potrzebujemy pamięci podręcznej drugiego poziomu. Operacje wykonywane na encjach są proste: wstawianie, usuwanie i wykonywanie niektórych obliczeń na encjach związanych z ładowaniem relacji. Powiedzmy, że mamy dwie encje Javy: `Pokój` i `Meble`. Mebel znajduje się w jednym pomieszczeniu, a pomieszczenie może mieć wiele mebli. Tak więc `Furniture` ma odniesienie do `Room`, a `Room` ma listę `Furniture`. W przypadku akcji „Usuń meble” najprostszą rzeczą do zrobienia jest pobranie odpowiedniego „Furniture” i polecenie EntityManagerowi usunięcia „Furniture”. Jednak, aby zapewnić spójność instancji Java, powinniśmy również usunąć instancję `Furniture` z listy `Furniture`s w powiązanym `Room`. Niestety, jeśli instancja `Room` nie zostanie załadowana, żądanie do bazy danych zostanie wykonane za darmo, jeśli nie mamy pamięci podręcznej. Więc jaki byłby lepszy wybór między: A) Uproszczeniem * Ogólnie rzecz biorąc, nie przejmuj się dwustronnymi relacjami w spójności instancji java, ponieważ nie mamy pamięci podręcznej drugiego poziomu * Dobrze udokumentuj fakt, że istnieje pamięć podręczna na akcja, więc jeśli określone obliczenia muszą być wykonane z żądaniem spójności relacji dwustronnych w ramach akcji, ta akcja musi dbać o spójność * Brak kodu wzorcowego dla zarządzania spójnością relacji dwustronnych * Brak narzutu związanego z ładowaniem niepotrzebnych encji * Jeśli pamięć podręczna drugiego poziomu należy dodać, wtedy trzeba wykonać duży wysiłek w refaktoryzacji B) Utrzymanie spójności * Zawsze utrzymuj spójność relacji dwustronnej * Włącz pamięć podręczną drugiego poziomu


title: C++ rejestruje każdą funkcję i wartości parametrów

text: Chcę rejestrować każde wywołanie funkcji i wartość parametru w mojej aplikacji C++. Czy istnieje ogólne podejście do tego zadania? (biblioteka trzeciej części, **VAR_ARGS** itd.)


title: JVM a systemy operacyjne

text: Ostatnio ponownie zapoznałem się z podstawowymi koncepcjami systemów operacyjnych. Ponieważ jestem programistą Java, z natury zacząłem patrzeć na wszystko z punktu widzenia Java. Czytam też 'Inside the JVM Fundamentals' z http://www.artima.com/insidejvm/ed2/jvm.html, więc kiedy widzę podstawy systemów operacyjnych i JVM, zacząłem myśleć, że jest ich wiele podobieństwa na abstrakcyjnym poziomie, tj. obaj zajmują się zarządzaniem pamięcią, planowaniem procesów itp. Chcę więc zapytać programistów SO, czy mam rację w uczeniu się lub założeniach?


title: jakiego rodzaju funkcji i/lub klas nie da się przetestować jednostkowo i dlaczego

text: Główną wymówką ze strony programisty dla braku dobrych testów jednostkowych jest „Kod nie jest zaprojektowany w sposób umożliwiający testowanie jednostkowe”. Próbuję zrozumieć, jaki typ projektu i kodu nie może być testowany jednostkowo.


title: Gdzie implementacje usług wpisują się w wytyczne Microsoft Application Architecture?

text: Wytyczne omawiają warstwę usług z jej interfejsami usług i umowami dotyczącymi danych/komunikatów/błędów. Omawiają również warstwę biznesową z jej komponentami i podmiotami logiki/przepływu pracy, a także „opcjonalną” fasadę aplikacji. Po przeczytaniu tego przewodnika nadal nie jest dla mnie jasne, gdzie znajdują się implementacje interfejsów usług. Czy fasada aplikacji w warstwie biznesowej implementuje te interfejsy, czy też istnieje oddzielna „fasada usługi” do wykonywania wywołań do warstwy biznesowej i jej komponentów fasadowych/surowych? (W pierwszym przypadku byłoby mniej pozornie trywialnych wywołań do kolejnej warstwy, chociaż w przypadku tej drugiej mogłem zobaczyć, jak warstwa usług może usunąć obawy związane z tłumaczeniem podmiotów biznesowych na kontrakty danych z warstwy biznesowej.)


title: Jak znaleźć pracę jako programista w organizacji charytatywnej

text: Czy ktoś może zasugerować najlepszy sposób znalezienia pracy programistycznej w organizacjach charytatywnych? Pochodzi od doświadczonego programisty, który marzy o pracy w firmie, w którą faktycznie wierzy :) Najbardziej oczywistą odpowiedzią byłoby oczywiście sprawdzenie ofert pracy dla niektórych większych organizacji charytatywnych. Ale co z dużą liczbą mniejszych organizacji charytatywnych? Gdzie mieliby się reklamować?


title: Czy istnieją języki programowania obiektowego, które nie są oparte na klasach?

text: Czy istnieją języki programowania obiektowego, które nie są oparte na paradygmacie klasowym?


title: Czy jest coś, co może zrobić „Promise”, czego nie może zrobić „async”?

text: Ostatnio spędziłem dużo czasu próbując zagłębić się i zrozumieć obietnice Javascript, zwłaszcza te, które przestrzegają specyfikacji Promises/A+. Próbuję zrozumieć, czy „Promises” faktycznie daje programistom dodatkowe narzędzia, szczególnie w porównaniu z „async” opartym na CPS, czy też jest to głównie cukier składniowy i narzędzie do zmniejszenia gadatliwości lub usprawnienia niektórych zachowań. Jednym z argumentów, które słyszałem za obietnicami, jest obsługa błędów. W takim przypadku, korzystając z biblioteki `async`, bardzo łatwo jest wykonać `async.waterfall` funkcji, z których każda czeka na zakończenie przed, każda owinięta w try/catch do obsługi błędów synchronicznych (ponieważ żadne `Promises` , ani `async` obsługują błędy asynchroniczne), przekazując przechwycone błędy do programu obsługi błędów. W takiej sytuacji `Promises` i `async` zachowują się identycznie pod względem semantyki błędu (istota pokazująca to zachowanie). Innym argumentem, jaki słyszałem za obietnicami, są metody przyszłościowe, które są teraz zsynchronizowane, ale później asynchroniczne. Teoria mówi, że jeśli funkcja zwróci obietnicę, nie ma znaczenia, jeśli zostanie później zmodyfikowana. Ponieważ zarówno nadawca, jak i odbiorca muszą zostać zmodyfikowani, aby przestrzegać umowy przyrzeczonej, czy nie można podać tego samego argumentu za modyfikacją zarówno nadawcy, jak i odbiorcy w celu korzystania z umowy CPS, nawet jeśli jest ona synchroniczna, w celu potwierdzenia tego w przyszłości? Mając to na uwadze, czy jest jakiś przypadek użycia, o którym można pomyśleć, a który można optymalnie rozwiązać tylko za pomocą „obietnic”, czy też ich użycie jest bardziej przypadkiem preferencji i chęcią zmniejszenia szczegółowości i zmniejszenia ryzyka błędu?


title: Czy dobrze jest tworzyć metodę statyczną w refaktoryzacji programu Visual Studio?

text: Istnieją różne opcje refaktoryzacji w programie Visual Studio do użycia podczas kodowania. Kiedy wyodrębniamy i tworzymy nową metodę. Następnie program Visual Studio zdecyduj, czy nowa metoda będzie statyczna, czy instancja w zależności od użycia w nowej metodzie. Jeśli ta metoda używa jakiegoś elementu klasy, to tworzy jako metodę wystąpienia, jeśli nie używa żadnego elementu klasy, to tworzy metodę jako statyczną. Rozumiem, że jeśli nie ma użycia elementu członkowskiego instancji, lepiej jest zadeklarować tę metodę jako statyczną, aby zapobiec inicjalizacji dla każdego obiektu. Metoda statyczna jest inicjowana tylko raz w momencie ładowania klasy. ![Metoda wyodrębniania w Visual Studio](http://i.stack.imgur.com/fEmyB.png) Ale pytanie brzmi: jeśli w różnych klasach aplikacji jest wiele metod statycznych, to wydajność będzie gorsza? Ponieważ wiele obiektów tej klasy będzie korzystać z tej samej metody statycznej tej klasy? Czy powinniśmy zarządzać bezpieczeństwem wątków w tej statycznej metodzie? Czy w takiej konfiguracji lepiej jest po prostu stworzyć metodę instancji, jeśli nie ma użycia elementu instancji klasy?


title: Co to jest globalny model dostawy?

text: Wiele firm programistycznych głosi w swoich banerach internetowych: „Globalny model dostarczania”. Czy ma to coś wspólnego z wdrożeniem?


title: Próbując uchwycić ideę DI/Unity i ewentualnie zastosować ją w naszej prostej aplikacji

text: Nasza aplikacja to w zasadzie kilka formularzy, które są wypełniane przez ludzi. Następnie te formularze są weryfikowane i przeglądane, a raporty są tworzone. Myślałem więc o DI i bawiłem się prostym przykładem Unity + MVC http://netmvc. blogspot.com/2012/04/dependency-injection-in-aspnet-mvc-4.html Więc może to być przydatne do czegoś lub przesadzić? Wydaje mi się, że idea DI polega na dynamicznym pobieraniu obiektów innego typu. Więc w moim przypadku może to być zestaw reguł do walidacji formularza... Coś takiego jak SyntaxRules1.dll, BusinessRules1.dll, CalculationRules1 .dll... Więc w miarę upływu czasu może powstaną dodatkowe zestawy reguł, abym mógł wrzucić inną bibliotekę DLL, taką jak BusinessRules2.dll do folderu, a DI odebrałaby ją w narzędziu rozruchowym.. Ale potem znowu, jeśli się zmieni bardzo niewiele wtedy używanie DI może być bezcelowe i być po prostu warstwą abstrakcji, która nie jest potrzebna.. Czy mam dobry pomysł? Czy są jakieś inne pomysły na to, jak DI może być przydatne dla tego typu aplikacji? Czy mogę utworzyć cały widok/kontroler/model lub każdy formularz z własną biblioteką DLL? To ma sens ? Po prostu czytam dużo teorii i staram się znaleźć konkretne przykłady tego, co może zrobić DI.


title: Narzędzie do wizualizacji i konserwacji danych oparte na GIS

text: ## Tło Chęć wykorzystania istniejącego systemu GIS do eksploracji danych organizacyjnych. ## Architektura Poniższy rysunek przedstawia ogólny przegląd pożądanych funkcji systemu: ![](http://i.imgur.com/SskPD.png) Najbardziej podstawowe użycie wyglądałoby następująco: 1. Użytkownik odwiedza Strona internetowa. 2. System prezentuje mapę (z regionami, miastami i budynkami). 3. Użytkownik drąży na mapie do konkretnego budynku. 4. System zapewnia podstawowy interfejs CRUD. 5. Użytkownik może przeglądać i modyfikować informacje o personelu (np. przydzielonych mu zespołach), sprzęcie (np. urządzenia sieciowe), aplikacjach i samym budynku (np. numery kontaktowe i telefony). W idealnym przypadku wszystkie komponenty powinny być typu open source (lub w inny sposób bezpłatne). ## Problem Musi to być mały projekt, który potrzebuje szybkiego (ale funkcjonalnego) prototypu, głównie po to, aby potwierdzić, czy taki system będzie przydatny w dłuższej perspektywie. ## Pytania * Jakich komponentów oprogramowania użyłbyś do szybkiego opracowania działającego prototypu? * Jakie rozwiązania open-source już istnieją, jeśli w ogóle? ## Pomysły Oto, o czym myślę: * PostGIS - Zdefiniuj regiony, miasta i witryny * Mapy Google - Wyświetl interaktywną, klikalną mapę * geoJSON - Protokół między PostGIS a Mapami Google * Szew - interfejs CRUD ## Tworzenie niestandardowe dla Na przykład oznaczałoby to: 1. Instalacja i konfiguracja 1. Skonfiguruj SSH do zdalnego logowania 2. Subversion (lub git) 3. PostgreSQL 4. PostGIS 5. Java 6. Tomcat 7. Seam 8. JasperReports 2. Wprowadź informacje GIS do PostGIS 3. Agreguj źródła danych do bazy danych PostgreSQL 4. Opracuj stronę startową interfejsu mapy 5. Opracuj klikalny interfejs Google Maps 6. Opracuj raporty podsumowujące 7. Opracuj interfejs CRUD przy użyciu Seam do obsługi danych Z pewnością coś takiego już istnieje? Dziękuję Ci!


title: Jak zarządzać obiektami kontekstowymi bez kontenera IoC (sesja lub przekazywanie obiektów)?

text: Używam asp.net (c#). Mam fabrykę, która używa słownika kluczy mapowanych na typy obiektów. Pierwotnie używałem zmiennej statycznej do śledzenia słownika, ale zdałem sobie sprawę, że będzie ona współużytkowana przez wszystkie sesje. Potem zostaje mi pomysł, żeby wszędzie rozprowadzać mapę obiektów, co wydaje się bałaganiarskie. Czy mapy obiektów lub inne elementy kontekstowe powinny być przekazywane, przechowywane w sesji, czy też powinienem po prostu tworzyć nową instancję za każdym razem, gdy jej potrzebuję (w przypadku elementów niekontekstowych)? Nie używam kontenera IoC. Przykładem elementu niekontekstowego w moim przypadku byłoby mapowanie poleceń tekstowych przychodzących od klienta do obiektów. Ogólnie rzecz biorąc, wydaje się, że nie ma dobrego sposobu radzenia sobie z danymi kontekstowymi bez przynajmniej statycznego obiektu, który pobiera wartości z sesji. W przeciwnym razie utknąłem z przekazywaniem ton obiektów kontekstowych wszędzie tam, gdzie są potrzebne. Z pewnością istnieje dobry wzorzec do obsługi kontekstów, map obiektów itp. bez używania sesji do przechowywania wszystkiego?


title: Jaka jest alternatywa dla strategii portalu korporacyjnego w przestrzeni Java?

text: Tak więc dostałem uderzenie w nadgarstek, zadając to pytanie na StackOverflow. Myślę, że poprzednia iteracja pytania nie została rozwiązana za pomocą wystarczająco zwięzłej odpowiedzi - mam nadzieję, że niektóre z wprowadzonych tutaj zmian pomogą. W każdym razie, jeden z komentatorów, Percepcja, zasugerował, że przestawiłem pytanie tutaj, gdzie niektórzy przystojni i inteligentni czytelnicy mogliby udzielić odpowiedzi. Oto pytanie, które zostało opublikowane w SO, ale nieco zredagowane, aby było bardziej szczegółowe. * * * Próbuję zebrać informacje z tak wielu źródeł, jak tylko mogę, i chciałem usłyszeć od wielkich mózgów w Stackoverflow (no cóż, myślę, że teraz chodzi o wielkie mózgi w stackexchange). **Rozczarowanie przestrzenią portalu** Widzę niepokojącą liczbę dużych klientów korporacyjnych, którzy rozczarowali się do korzystania z portalu korporacyjnego, zwłaszcza w przestrzeni WebSphere Portal Server (WPS). Zainwestowano miliony, ale obietnica spersonalizowanej treści z agregacją i zintegrowanymi narzędziami do współpracy nigdy nie została zrealizowana. Przejście na WPS 7.x to duży krok naprzód i zamiana, a klienci zastanawiają się, czy powinni przenieść się gdzieś indziej. **Oprogramowanie portalowe: okropna opcja, ale jaka jest alternatywa** Istnieje mnóstwo osób, które nienawidzą portali, a czasami rozwiązanie portalowe jest rzeczywiście przesadą, ale kiedy mówimy o dużych, międzynarodowych korporacjach, jak by to polecają zaprojektować globalne rozwiązanie bez serwera portalu? Praca z portalami nie zawsze jest tak przyjemna jak praca z Tomcat lub JBoss AS, ale jeśli chodzi o integrowanie wielu aplikacji, zarządzanie treścią, aktualizowanie poszczególnych aplikacji wdrażanych jako pojedyncze pliki wojenne, zarządzanie bezpieczeństwem aż do poziomu portletów, udowadniając pewien ilość personalizacji dla użytkowników i pomoc w przytłaczającym zadaniu zarządzania tysiącami stron, które duże przedsiębiorstwa mają jako część swoich wewnętrznych i zewnętrznych witryn internetowych, czy istnieje lepsza technologia? **Zbieranie informacji i opinii społeczności** Staram się zebrać jak najwięcej informacji. Napisałem mały artykuł na TSS na ten temat: Jakie inne alternatywy dla portalu istnieją na rynku? Wskrzeszam również wątek na CodeRanch, aby zobaczyć, czy mogę uzyskać wgląd od tej przystojnej ekipy. Zaktualizowany wątek z pytaniem o alternatywę dla strategii oprogramowania portalu. Około 2012 roku szukam też spostrzeżeń z twitterati (@potemcam). To nie tyle cross-posting, ile raczej próba zebrania wnikliwego wglądu od społeczności. Jeśli mogę uzyskać solidne odpowiedzi i doświadczenia, chciałbym zebrać je w artykuł z poradami na TSS. **Jaka jest właściwa alternatywa dla portalu korporacyjnego w przestrzeni Java** Czekamy na Twoją radę. Nawiasem mówiąc, będę linkować do tego wątku z innych atrakcji, aby ludzie z tymi samymi pytaniami mogli odbijać się w tę i z powrotem i zobaczyć, co społeczność mówi na ten temat. * * * Mam nadzieję, że ta iteracja pytania zostanie dobrze przyjęta przez społeczność programistów na stackexchange.


title: Czy to zapach kodu, jeśli często tworzysz obiekt tylko po to, aby wywołać na nim metodę?

text: Odziedziczyłem bazę kodu, w której jest dużo kodu, który wygląda mniej więcej tak: SomeDataAdapter sda = new SomeDataAdapter(); sda.UpdateData(DataTable updateData); A potem sda nigdy więcej nie jest używany. Czy to zapach kodu, który wskazuje, że te metody powinny być zamiast tego statycznymi metodami klasowymi?


title: Złą praktyką jest twarde łączenie interfejsu/implementacji logowania z klasami modelu biznesowego?

text: Czy powinniśmy unikać logowania w klasach modeli biznesowych i próbować przenieść logowanie do klas usług/kontrolerów? Na przykład w kontekście java, logowanie w klasach modeli mocno sprzęga kod z zależnościami od `slf4j` lub `commons-logging` itp.


title: Alternatywa dla szeregu funkcji?

text: Programuję aplikację (php), która wymaga bardzo długiej listy **podobnych, ale różnych funkcji, które są wywoływane przez zestaw klawiszy** : $functions = [ "zrób to" => function() { / / robi to }, "do that" => function() { // robi to } ] itd. Wybrałem umieszczenie podobnych funkcji w tablicy, ponieważ nie są one podobne **wystarczająco** - uzyskując ten sam wynik z jedną dużą funkcją, która jest pełna instrukcji warunkowych, nie zadziała. I **Muszę móc wywoływać je tylko klawiszem** , na przykład: $program = ["zrób to", "zrób tamto", "zrób to"]; foreach ($program jako $k => $v) { $functions[$v](); } Rzecz w tym, że ta struktura funkcji-tablicy powoduje wiele problemów, na przykład mam trudności **wywołanie jednej funkcji tablicowej z innej funkcji tablicowej** , np. to nie działa: "zrób to" => function() { $functions["zrób to"](); } ani to: "do that" => function() { global $functions; $functions["zrób to"](); } lub to: "zrób to" => function($funkcje) { $funkcje["zrób to"](); } $functions["zrób to"]($functions); Myślę, że mógłbym mieć jedną gigantyczną funkcję z długą **przełącznikiem** : function similar_functions($key) { switch ($key) { case "do this": // robi to psuje; case "do that": // robi to; } } Ale to nie wydaje się dobrą praktyką. A może jest? **Jakie są moje alternatywy?** Czy powinienem używać struktury przełączników? A może jest inne, lepsze rozwiązanie?


title: Czy powinienem usunąć z mojego CV projekt „wstydliwy, nie związany z programowaniem”?

text: W dużej firmie informatycznej projekt, nad którym pracowałem, został anulowany. Cały zespół został _na ławce_. Ponieważ zespół był duży (>300), nie każdy był od razu możliwy do zatrudnienia. Aby pokryć straty, firma podjęła się projektu polegającego na czyszczeniu treści. Polegało to na przeczytaniu tysięcy stron dokumentów i naprawieniu rozbieżności między nimi, czyli naprawieniu angielskiego! Musieliśmy upewnić się, że interpunkcja była poprawna, pisownia słów była spójna, struktura zdań itp. Otrzymaliśmy 3-5 stron listy kontrolnej najczęściej popełnianych błędów. To wcale NIE była praca programistyczna. Po prostu dano go ludziom, którzy byli „na ławce” i musieli przez pewien czas rozliczać się z nimi. Jednak ten projekt trwał około 6 miesięcy! Nie było żadnych projektów lub pula talentów miała więcej zasobów IMO. Oczywiście odszedłem z firmy, ale cały czas mojej pracy w organizacji nadal pokazuję w CV. Jednak ten „angielski” (nieprogramistyczny) projekt jest trochę krępujący (chociaż staram się dobrze ułożyć angielski, żeby tak nie było :) Czy powinienem po prostu pozbyć się takiego projektu w ogóle? To było dość dawno temu, ale martwię się tylko o autentyczność czasu trwania - pracowałem od daty A-B. Czy powinienem po prostu wskazać główny projekt na cały czas trwania i porzucić angielski?


title: Czym jest drzewo Aguri?

text: Przeglądając niektóre stare artykuły Hacker News, natknąłem się na post od użytkownika, który powiedział > Drzewa Aguri, które łączą trier o ograniczonym rozmiarze (jakbyś używał w > tablicy routingu oprogramowania) z listą LRU i automatycznie syntetyzować > agregaty (np. 10.0.0.0/16 z 1000 obserwacji we wszystkich adresach IP) z > wzorca wstawiania. Są one najbardziej znane w analizie ruchu, ale używaliśmy ich także w analizie pamięci w czasie wykonywania. ~ tptacek Postanowiłem więc to sprawdzić, * Szybkie wyszukiwanie w Google prowadzi mnie do sterownika F1. * Wyszukiwanie w Wikipedii prowadzi do kasty rolniczej w Indiach i niektórych przedmiotów z Japonii * Stack Overflow wyświetla 0 wyników http://stackoverflow.com/search?q=aguri `site:stackoverflow.com/questions aguri` W końcu mam połączył go z powrotem do użytkownika zobacz, że ma link na swoim blogu > http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never- > słyszane/ Ale to nie żyje. _Więc czym jest ta struktura danych Aguri i jeśli jest to prawdziwa struktura danych, dlaczego nie jest udokumentowana nigdzie indziej?_


title: Kiedy używać słabych referencji w .Net?

text: Osobiście nie spotkałem się z sytuacją, w której musiałbym użyć typu WeakReference w .Net, ale w powszechnym mniemaniu wydaje się, że powinien on być używany w cache. Dr Jon Harrop w swojej odpowiedzi na to pytanie przedstawił bardzo dobrą argumentację przeciwko używaniu słabych referencji w skrzynkach. Często słyszę też, jak programiści AS3 mówią o używaniu słabych referencji, aby zaoszczędzić na zużyciu pamięci, ale na podstawie rozmów, które przeprowadziłem, wydaje się, że zwiększa to złożoność, niekoniecznie osiągając zamierzony cel, a zachowanie środowiska wykonawczego jest raczej nieprzewidywalne. Tak bardzo, że wiele osób po prostu z tego rezygnuje i zamiast tego ostrożniej zarządza wykorzystaniem pamięci/optymalizuje swój kod, aby zużywał mniej pamięci (lub rezygnował z większej liczby cykli procesora i mniejszego zużycia pamięci). Dr Jon Harrop wskazał również w swojej odpowiedzi, że słabe referencje .Net nie są miękkie i istnieje agresywny zbiór słabych referencji w gen0. Według MSDN długie słabe odwołania dają możliwość odtworzenia obiektu, ale „stan obiektu pozostaje nieprzewidywalny”. Biorąc pod uwagę te cechy, nie przychodzi mi do głowy sytuacja, w której słabe referencje byłyby przydatne, może ktoś mógłby mnie oświecić?


title: Jak zacząłbym korzystać z Prologu?

text: Gdybym chciał rozpocząć naukę Prologa w systemie Windows, czy jest jakiś pakiet, który integrowałby Prolog z Visual Studio 2010? Czyli kompilator i szablony i tak dalej do pracy z Prologiem w systemie Windows? Zakładając, że nie ma smaku Prologa ukierunkowanego na platformę .Net, czy istnieje kompilator GCC Prolog dla Windows?


title: Wzorzec projektowy do konwersji obiektów (java)

text: Nie używam zbyt często wzorców projektowych, poza okazjonalną fabryką i MVC, i chcę zacząć ich używać częściej. Mam pod ręką konkretny przypadek, że chciałbym poznać Twoją opinię na temat wykorzystania wzorców projektowych w tym przypadku. W mojej aplikacji dosyć często muszę konwertować obiekty w różnych sytuacjach. Być może będę musiał przekonwertować Hibernate POJO na DTO, ponieważ używam GWT i Hibernate POJO, które nie są serializowane i nie mogą być wysyłane przez linię. W innej sytuacji będę musiał przekonwertować obiekty Java do SolrInputDocument w celu indeksowania przez Solr. Chciałbym wiedzieć, czy powinienem użyć do tego wzorca projektowego. Wygląda na to, że „konwersja obiektów” jest ogólnym zadaniem, które może być obsłużone w elastyczny/abstrakcyjny sposób przez wzorzec, ale tak naprawdę nie rozumiem, jak. Bez wzorców po prostu stworzyłbym osobną klasę dla każdego typu konwersji, na przykład CourseToSolrInputDocument (Course to encja Hibernate w mojej aplikacji). Lub KursNaKursDTO. Każda z tych klas konwersji może mieć pojedynczą metodę statyczną o nazwie `convert()`, która pobiera obiekt źródłowy jako dane wejściowe i zwraca obiekt wyjściowy. Ale to nie jest wzór, prawda? Zacząłem więc od czegoś z rodzajami i stworzyłem tę klasę, która implementuje interfejs Converter. Ale jakoś głupio jest stworzyć ogólny interfejs i nie widzę żadnej innej korzyści niż możliwość pogratulowania sobie użycia generyków. public class CourseToSolrInputDocument implementuje Konwerter<Kurs, SolrInputDocument> { @Override public void convert(Źródło kursu, miejsce docelowe SolrInputDocument) { //Aby zmienić treść zaimplementowanych metod użyj Plik | Ustawienia | Szablony plików. } } Tak więc prawdziwe pytanie brzmi: czy istnieje wzorzec, który stosuje się do ogólnej konwersji obiektów i jakie byłoby twoje podejście i jakie są zalety w porównaniu z podejściem typu klasa na konwersję?


title: MVC - Widok izolujący i logika modelu

text: Rozumiem, że model powinien generalnie składać się z manipulacji danymi i widoku do wyświetlania danych z modelu, ale jak zachować oddzielenie warstw modelu i widoku? Mój prosty widok ma kilka tabel, które wyświetlają dane. Skojarzony z nim model manipuluje danymi na podstawie typu widoku „TableModel”. Większość jego metod wymaga użycia typu `TableModel`. Czy widok powinien generalnie „podzielić” dane na bardziej ogólny typ liczb całkowitych i ciągów dla modelu? Dlatego wszystkie uchwyty modelu są prostymi ogólnymi listami danych bez konieczności używania `TableModel` w przypadku zmiany widoku na inny interfejs. Model powinien być „nieświadomy” punktu widzenia dobrych praktyk programistycznych, prawda? Jeśli zmienię widok na interfejs wiersza poleceń, skojarzony model nadal powinien być w stanie wykonywać swoje funkcje, biorąc pod uwagę poprawną skojarzoną listę liczb całkowitych/łańcuchów znaków/cokolwiek.


title: Czy narusza to licencję na korzystanie z trybu Windows XP z Virtual Box?

text: Pracuję w zespole tworzącym aplikację kliencką. Pracujemy w środowisku Linux, ale serwer, z którym pracujemy, może być uruchamiany tylko ze środowiska Windows. W związku z tym każdy programista jest konfigurowany z maszyną wirtualną działającą na Oracle VM Virtual Box. Czy używanie przez programistów wirtualnego dysku twardego z trybu Windows XP z Oracle VM Virtual Box byłoby naruszeniem warunków użytkowania lub licencji?


title: Jak można zarządzać tysiącami reguł JEŻELI...WTEDY...INNIE?

text: Zastanawiam się nad zbudowaniem aplikacji, która w swej istocie składałaby się z tysięcy instrukcji if…then…else. Celem aplikacji jest przewidywanie, jak krowy poruszają się w dowolnym krajobrazie. Wpływają na nie takie rzeczy jak słońce, wiatr, źródło pożywienia, nagłe zdarzenia itp. Jak zarządzać taką aplikacją? Wyobrażam sobie, że po kilkuset instrukcjach IF byłoby równie dobre, jak nieprzewidywalne, jak zareaguje program, a debugowanie tego, co prowadzi do określonej reakcji, oznaczałoby, że za każdym razem trzeba by przejść przez całe drzewo instrukcji IF. Czytałem trochę o silnikach reguł, ale nie wiem, jak obejść tę złożoność.


title: Heurystyka dla absolutnie pozycjonowanego projektu GUI — czy wielokrotność 5 to dobry pomysł?

text: Zastrzeżenie: Nie specjalizuję się w projektowaniu GUI [desktop], ale muszę to robić od czasu do czasu. Widziałem dialogi współpracowników gorzej niż te, które stworzyłem, a moim głównym problemem jest to, że mogą być niepotrzebnie duże, a sprawy się nie układają. Mówiąc bardziej konkretnie, robię to głównie w .Net WinForm, ale czasami także z MFC(C++). Moja prosta heurystyka do tej pory brzmi: staram się, aby rozmiary i pozycje były podzielne przez 10 ... lub 5, jeśli muszę. Wyjątkiem byłoby coś takiego jak Label, ponieważ zna swój własny rozmiar. Uważam, że po zakończeniu wszystko wygląda dobrze (oczywiście są inne względy, takie jak inteligentne grupowanie rzeczy itp.) I jestem zadowolony, ponieważ wiem, że każda kontrolka ma nielosową pozycję, a moje OCD może teraz przejść wracać do spania. Gdzieś w pracy znalazłem poradnik MSFT o idealnych odstępach między rzeczami. Przepraszamy, nie mam dostępnego źródła. Ma wiele reguł, takich jak (na przykład) 2 piksele między przyciskiem a obramowaniem, 3 piksele między dwoma przyciskami w poziomie, 4 piksele w pionie, chyba że… jest to dość skomplikowane i niepraktyczne do zapamiętania. Dodatkowo, po prostu nie wierzę, że MSFT dużo wiedział o projektowaniu GUI, dopóki nie zatrudnił byłej osoby z Apple, aby pomógł im zaprojektować wstążki dla Office 2007 itp. Jakimi regułami/heurystykami się kierujesz? Mile widziane są odniesienia do krótkich artykułów i inne linki.


title: Jak zmienić karierę

text: Od 4 lat zajmuję się tworzeniem stron internetowych w c#. Naprawdę mi się to podobało, dużo się nauczyłem i ciężko pracowałem, aby dostać się na stanowisko, w którym zarabiam dobre pieniądze i cieszę się pracą. Jednak ostatnio - chciałem zmiany. Co z "natywnym renesansem" chciałbym zmienić swoją karierę z tworzenia aplikacji wysokiego poziomu i tworzenia stron internetowych na bardziej natywny program metalowy. Nie zrobiłem żadnego c ani c++ od czasu Uni ponad 4 lata temu, więc zacząłem czytać podręczniki i strony internetowe, aby odświeżyć. Jednak - jednym z głównych problemów, jaki mam, jest to, że nie mam praktycznego doświadczenia z C++ i chociaż staram się go doskonalić, będzie wiele rzeczy, których nie wiem. Większość prac, które widziałem w natywnym kodzie wokół mnie, wymaga natywnego doświadczenia. Jedyne stanowiska, które mogę znaleźć, które nie proszą wprost o rodzime doświadczenie, to stanowiska juniorów. W mojej obecnej roli jestem programistą średniego poziomu i chociaż na stanowisku c++ byłoby wiele do nauczenia, nie zaliczyłbym siebie do juniora. Myślę, że moje pytanie brzmi, jak ludzie rozwiązują ten problem przy zmianie języków programowania dla swojego zawodu i/lub jak podchodzisz do tej przeszkody? Tak jak powiedziałem, naprawdę chciałbym wypróbować natywny rozwój zawodowo, ale nie chciałbym wracać do roli juniora. Czy pracodawcy uznaliby lata zarządzanego rozwoju i rodzimych projektów hobbystycznych za wystarczające doświadczenie?


title: Bezpieczne połączenia WCF Silverlight

text: Mam aplikację Silverlight, która używa Entity Framework. Aplikacja jest chroniona loginem wykonanym w ASP, więc tylko poprawni użytkownicy otrzymują plik xap. Czy mam zabezpieczyć wywołania WCF do Entity Framework? Muszę wykonywać połączenia przez https, ale czy mogę się upewnić, że tylko poprawni użytkownicy mogą uzyskać dane z usługi WCF? Dzięki Jakob


title: Przekazywanie certyfikatów https na Github... czy jest ku temu dobry powód?

text: Jeśli certyfikat serwera jest publikowany na Github, a la: -----BEGIN CERTIFICATE----- czy to koniecznie jest zła rzecz? Czy jest kiedykolwiek uzasadniony powód, aby to zrobić? Pytam z powodu niedawnej fali zainteresowania Githubem, odkąd umożliwił użytkownikom wyszukiwanie pewnych rzeczy, takich jak `.ssh/id.rsa` i tym podobnych w publicznych repozytoriach. Ponadto w protokole `https` są zaangażowane certyfikaty serwera, ale szczerze mówiąc, mam problem z ustaleniem, czy są one ogólnie uważane za poufne informacje.


title: Czy Haskell jest odpowiedni do przetwarzania sygnałów, systemów komunikacji i teorii informacji?

text: Od prawie roku pracuję nad projektami Software Defined Radio. Jest to obszar, który wymaga dużo przetwarzania sygnałów (filtry cyfrowe i FFT), teorii komunikacji (modulacja, wyrównanie i synchronizacja) oraz teorii informacji (w szczególności teorii kodowania, jak kody Huffmana, Linear i Convolutional). Programuję głównie w Matlab (do symulacji) oraz C++ i Python (do praktycznych zastosowań z wykorzystaniem GNURadio i USRP). Jak widać, te obszary wymagają wielu pojęć matematycznych. Kiedy studiowałem Haskella, widzę, że jest to dobry język programowania dla aplikacji wymagających ciężkiej matematyki. Wydawało się, że dobrym pomysłem jest programowanie w Haskell w przypadku problemów w obszarze, nad którym pracuję. Z drugiej strony wydaje się, że niewiele osób to robi. Wydaje się, że istnieje biblioteka Haskell DSP, ale niewiele projektów z niej korzysta w sieci. Znalazłem też tezę, w której Haskell został wykorzystany do zaimplementowania kodera/dekodera Viterbi i wydaje się to całkiem eleganckie rozwiązanie. Ale wydaje mi się, że ludzie z branży komunikacyjnej i badań wciąż nie używają dużo Haskella w swoich kodach. Może to dlatego, że wielu z nich wciąż nie słyszało o Haskellu. Jakie byłyby zalety i wady zastosowania Haskella do tego rodzaju problemów? Jakie będą kluczowe korzyści z SDR w Haskell? A co z Haskellem sprawiłoby, że byłby to zły wybór dla SDR? Czy powinienem spodziewać się silnych punktów bólu po użyciu Haskella do SDR (czym one są?).


title: Jakiej wersji C powinienem się nauczyć?

text: Wygląda na to, że _K & R "C Programming Language (2nd Edition)"_ obejmuje ANSI C, ale inna książka, którą zaczynam ( _Stephen G. Kochan "Programming in C"_) mówi, że używa C99. Pochodzę ze środowiska C#/JavaScript/Python/PHP/Java i chcę uzupełnić moje umiejętności. Obecnie używam GCC, ale ciekawi mnie Clang. Która wersja jest częściej używana w nowym i istniejącym kodzie? Czy to w ogóle ma znaczenie, czy powinienem nauczyć się obu?


title: Jak uniknąć przeciągania argumentów z funkcji do funkcji?

text: Kiedy tworzę mój układ kodu, lubię zacząć od dość wysokiego poziomu widoku, a następnie zacząć delegować rzeczywiste obliczenia do klasy lub funkcji, które mają nieco więcej szczegółów. Następnie w tych klasach funkcji robię to samo, warstwa po warstwie, aż dojdę do dna, gdzie muszę wykonać „prawdziwą” akcję. Przykład: def build_table(): nogi = get_legs() plate = get_plate() return put_together(nogi, plate) def get_legs(): nogi = [] for i in [0,1,2,3]: nogi.append( get_leg_from_warehouse()) return nogi def get_plate(): plate = get_plate_from_warehouse() return finish_plate(płyta) def put_together(nogi, płyta): table = Table() for i in [0,1,2,3]: table.mount (nogi[i]) table.mount(plate) return table class Table: self.component = [] def mount(self, item): self.component.append(item) układ i ukryć złożoność. Mam przeważnie krótkie fragmenty kodu, które są łatwe do zrozumienia. Minusem tego jest to, że kiedy odkrywam, że potrzebuję informacji dostępnej na szczycie stosu dalej niżej, przekazuję argumenty z funkcji do funkcji. W powyższym przykładzie mógłbym zebrać „śruby” u góry, a następnie przekazywać je do funkcji, w której są faktycznie wwiercane w drewno. Sprawia to wrażenie, że nie jest łatwo modyfikować kod i zastanawiałem się, co mógłbym z tym zrobić. W tym przykładzie zmodyfikowany kod wyglądałby tak: def build_table(): legs = get_legs() plate = get_plate() screw = get_screws() return put_together(nogi, płyta, wkręty) def get_legs(): nogi = [] for i in [0,1,2,3]: legs.append(get_leg_from_warehouse()) return nogi def get_plate(): plate = get_plate_from_warehouse() return finish_plate(plate) def get_screws(): drive_to_hardwarestore() screw = buy_screws() drive_home() return śruby def put_together(nogi, płyta, śruby): table = Table() for i in [0,1,2,3]: table.mount(nogi[i], śruby) table.mount(płyta, śruby) return table class Table: self.component = [] def mount(self, item, screw): self.component.append((item, screw.pop())) Więc oprócz dodania kodu do uzyskania śrub, miałem t o zmodyfikuj 4 linie. Zwiększyłoby się to liniowo wraz z ilością warstw. Jak mogę dokonać refaktoryzacji? Z drugiej strony, jak mogę tego uniknąć? Czy mój proces projektowania jest „niewłaściwy”?


title: Jakie języki programowania oprogramowania były używane przez program kosmiczny Związku Radzieckiego?

text: Zainteresowałem się sowieckim programem kosmicznym i odkryciem, że oprogramowanie na statku kosmicznym Buran około 1988 roku zostało napisane w Prologu. Czy ktoś wie, jakie języki mogły być używane we wcześniejszych misjach, zwłaszcza w misjach łazików Mars ProP-M z wczesnych lat 70., które były w pewnym stopniu autonomiczne i mogły poruszać się po przeszkodach? **Edytuj** Moim źródłem dla Buran Prolog jest ten odtajniony dokument ze strony CIA z maja 1990 roku. Nie mogłem znaleźć wersji OCR, więc oto odpowiedni cytat ze s. 0449: > Według literatury open source, Sowieci użyli > francuskiego języka programowania znanego jako Prolog do opracowania oprogramowania systemu pokładowego > dla pojazdu Buran...


title: Przepływ pracy kontroli źródła do zarządzania platformą oprogramowania

text: Jestem odpowiedzialny za platformę programistyczną napisaną w C, która służy do dostarczania klientom różnorodnych projektów. Staram się poprawić przepływ pracy dla osób korzystających z tej platformy i sprawdzam, czy kontrola kodu źródłowego (Mercurial jest najbardziej prawdopodobnym kandydatem) może pomóc. Platforma jest używana tylko wewnętrznie dla ~10 projektów rocznie. Ma szeroki zakres funkcjonalności i wiele elementów, które nie są używane w większości projektów. W rezultacie ukrytych jest wiele błędów. Zastanawiam się, czy ktoś ma podobne doświadczenie, zarządzając lub korzystając w ten sposób ze stale aktualizowanej platformy. **Sytuacja obecna** Rozwój platformy odbywa się za pomocą repozytorium mercurial, ale wydania platformy nie są realizowane za pośrednictwem mercurial. W przypadku wydania pliki platformy są umieszczane w archiwum tar na centralnym serwerze. W przypadku dowolnego systemu podłączonego do jądra, rozpoczęcie procesu budowania kopiuje zaktualizowany plik tar i rozpakowuje go do kodu źródłowego aplikacji. Programiści aplikacji nie mogą edytować plików podstawowych (różne polecenia są aliasowane przez skrypty powłoki i próbują otrzymać błąd). **Czego szukam** Wygląda na to, że można w jakiś sposób wykorzystać Mercurial do zarządzania tym. Moglibyśmy z łatwością utrzymywać gałąź wydania platformy i kazać projektom klonować gałąź wydania jako punkty startowe. Ale nie jestem pewien, gdzie by to poszło. W projekcie funkcjonalność zależy wyłącznie od klienta. Jeśli podstawowe pliki zostaną odblokowane, ludzie natychmiast zaczną je edytować, nawet jeśli istnieje lepszy sposób (to stało się przed zablokowaniem). Oznacza to, że łączenie nowych podstawowych zmian stanie się trudne i podejrzewam, że wiele zespołów nie będzie się tym przejmować. Drakońskie rozwiązanie polegające na blokowaniu podstawowych plików i wymuszaniu automatycznych aktualizacji wszystkich projektów było naprawdę całkiem udane: otrzymujemy więcej skarg i problemów z projektów, które są odłączone, niż tych, które otrzymują wymuszone aktualizacje. Jednak gdy tylko projekty przejdą do testów, muszą zostać odłączone. Po tym, z wyjątkiem ręcznego łączenia, nie otrzymują więcej aktualizacji platformy.


title: Czy wszystkie zagrożenia bezpieczeństwa są wywoływane przez błędy oprogramowania?

text: Większość zagrożeń bezpieczeństwa, o których słyszałem, wynika z błędu w oprogramowaniu (np. wszystkie dane wejściowe nie są poprawnie sprawdzane, przepełnienia stosu itp.). Więc jeśli wykluczymy wszelkie włamania społecznościowe, czy wszystkie zagrożenia bezpieczeństwa są spowodowane błędami? Innymi słowy, gdyby nie było błędów, czy nie byłoby zagrożeń bezpieczeństwa (znowu z wyłączeniem błędów ludzi, takich jak ujawnianie haseł itp.)? A może systemy mogą być wykorzystywane w sposób, który nie jest spowodowany błędami?


title: Jak najlepiej przygotować się do tworzenia aplikacji na Windows Phone 8?

text: Interesuje mnie nauka programowania na Windows Phone w przyszłości, a najbardziej interesuje mnie tworzenie aplikacji Metro Apps dla Windows Phone. Wygląda na to, że jest teraz kilka podstawowych informacji na temat rozwoju Metro, ale nie ma wskazówek, co będzie istotne po wydaniu Windows Phone 8. Wydaje się, że istnieją dwie potencjalne strategie: 1) Zacznij kodować dla Mango/WP7.5, a następnie spróbuj przekonwertować doświadczenie do użycia z WP8. Myślę, że wymagałoby to nauki Silverlight dla aplikacji (w przeciwieństwie do XNA dla gier)? 2) Napisz teraz aplikacje Metro dla systemu Windows 8 z podglądem deweloperskim. Wydaje się, że to doświadczenie jest mniej przestarzałe, ale wydaje się też trudniejsze do przetestowania w prawdziwym świecie. Zwykle skłaniałbym się ku opcji 1, ale ta trasa imo ma kilka wad. Po pierwsze, przeczytałem gdzie indziej, że Silverlight 5 było ostatnim wydaniem Silverlight. Nie jestem do końca jasny, na ile doświadczenie Silverlight będzie przydatne w przyszłych iteracjach na ich systemie operacyjnym telefonu. Jedną z rzeczy, które uważam za interesujące, jest ulepszona konfiguracja async/await i rozumiem, że WP7 nadal w dużym stopniu opiera się na wywołaniach zwrotnych dla operacji asynchronicznych. Nie jestem zaznajomiony z Silverlight/WP7/etc., więc proszę o delikatność, jeśli są jakieś rażące nieporozumienia z mojej strony. Dziękuję!


title: Mądra migracja z Pythona do Scali, gdy dużo pracy jest już wykonanej w Pythonie?

text: Ja i mój przyjaciel tworzymy aplikację internetową w Pythonie + Flask + PostgreSQL. Pracowaliśmy nad tym przez ostatnie kilka miesięcy i opracowaliśmy wiele schematów/przypadków użycia specyficznych dla Pythona + Flask + PostgreSQL. Teraz nagle planujemy przenieść się do innej bazy danych NoSQL (Neo4j), ponieważ jakoś lepiej pasuje do tego, czym będzie rdzeń naszej aplikacji internetowej. Python obsługuje Neo4j poprzez wiązania embedded/rest api, ale używa technologii **JPype, która jest co najmniej nieutrzymywana**. Tak więc pytanie o użycie Scali pojawiło się dzisiaj. **Nasza aplikacja będzie następna w czasie rzeczywistym, więc nie możemy sobie pozwolić na opóźnienia/narzuty** związane z pośrednimi etapami żądań Pythona->Java (samodzielny serwer Neo4j jest oparty na wbudowanym Neo4j). Tak więc, podczas gdy ja jestem za spędzeniem miesiąca lub dwóch i nauczeniem się Scali/Lift, on jest za kontynuowaniem nauki w Pythonie i przenoszeniem do Scali, gdy tylko zajdzie taka potrzeba, nawet jeśli wiemy, że Python+bindings będzie nieco wolniejszy w porównaniu do natywnego wsparcia Neo4j dla Javy. W ciągu ostatnich kilku miesięcy wykonaliśmy już dużo pracy w Python + Flask + PostgreSQL. Jeśli przeniesiemy do Scali, będziemy musieli przenieść to wszystko do Scali. Czy mądrze byłoby przenieść teraz? Czy macie jakieś osobiste doświadczenia lub rady od was wszystkich? A może to tylko przedwczesna optymalizacja? _PS: Jestem świadomy krzywej uczenia się Scala/Lift._


title: Programowanie zwinne : Jak zaprojektować kod do iteracji / sprintu?

text: W rozwoju Agile pracujesz na małych historyjkach użytkownika i tworzysz działającą iterację. Ale co się stanie, gdy pojawi się kolejna historyjka użytkownika i wpłynie na projekt już wykonanej iteracji? Czasami wydaje się, że trzeba powtórzyć ostatnią iterację lub inną historyjkę użytkownika, aby włączyć nową historyjkę użytkownika do ostatniej iteracji! Jak do tego podejść?


title: Czy ludzie używają jakichkolwiek narzędzi do tworzenia Rich UI w aplikacji internetowej?

text: Zgodnie z tytułem weźmy na przykład ASP.NET/Perl/PHP. Ponieważ nie mam szansy pracować z UI Designer/ani kogoś takiego nie znam, więc naprawdę zastanawiam się, czy używają oni jakichkolwiek narzędzi do projektowania UI? Nie mam na myśli narzędzi takich jak PhotoShop lub Flash do tworzenia grafiki, ale mam na myśli pisanie CSS, układ/kolor tabeli, Div, animację JQuery itp. Wiem, że dla ASP.NET Visual Studio ma pewne wsparcie w zakresie projektowania interfejsu użytkownika, ale jest bardzo minimum w porównaniu do ExpressionBlend dla WPF/Silverlight. Podczas projektowania interfejsu użytkownika dla ASP.NET nadal pisałem wszystko. Zastanawiam się więc, czy ludzie używają jakichkolwiek narzędzi, aby pomóc w projektowaniu interfejsu użytkownika? A może każdy przyjmuje to jak mężczyzna, aby wpisać wszystko inne, tak jak wtedy, gdy robiliśmy to w Notatniku?


title: Łatanie oprogramowania open source, gdy aktualizacja nie wchodzi w grę?

text: Niedawno natknąłem się na dość irytujący (potwierdzony) błąd w pakiecie oprogramowania typu open source, który zintegrowałem z moją aplikacją. Według publicznego narzędzia do śledzenia problemów ten błąd został rozwiązany w najnowszej wersji oprogramowania. Czasami POTRZEBUJESZ tej poprawki błędu, aby uniknąć kosztownej refaktoryzacji konkretnego modułu, jednak z powodów technicznych i/lub politycznych nie będziesz mógł dokonać aktualizacji do najnowszej wersji. Po sprawdzeniu wprowadzonych zmian w kodzie poprawka wydaje się na tyle prosta, że uważam, że realną opcją byłoby samodzielne załatanie kodu i ponowna kompilacja mojej aktualnie zatwierdzonej wersji oprogramowania, jednak krytycy chcą argumentować, że prawie zawsze jest to zły pomysł w tym, że jest ryzykowne i wprowadza kłopotliwą złożoność. W ich oczach, ponieważ ta zmiana kodu została wykonana przez nas wyłącznie do naszego użytku, musi być częścią naszej bazy kodu, co oznacza, że zamiast wprowadzać oprogramowanie open source jako zależność strony trzeciej, musimy wprowadzić je jako nowy projekt i włączyć jego zautomatyzowana kompilacja w naszym procesie kompilacji. Uważam, że jest to błędny kierunek, ponieważ przeciągnęlibyśmy ich kod z ich repozytorium kontroli źródeł do naszego i tracimy historię wszelkich zmian w kodzie, które nastąpiły wcześniej. Wydaje się również, że jest to zbyt skomplikowane dla tak małej zmiany kodu, którą trzeba wprowadzić. Czy w takim przypadku zrobienie powyższego byłoby złym pomysłem? Jeśli tak, to jaka jest idealna sytuacja, gdy open source musi się zmienić, ale tylko dla Twojej wyłącznej korzyści w domu?


title: Jak liczyć pokrycie stanu?

text: Zastanawiam się, jakie byłyby prawidłowe przypadki testowania pokrycia warunku dla następującego warunku: if(A && E && (B || C || D)) Biorąc pod uwagę zwarcie, jakich przypadków potrzebuję? EDIT: Przepraszam, że umieściłem tylko połowę wyrażenia


title: Czy istnieje skuteczny sposób testowania przekształceń XSL/map BizTalk?

text: Tworzenie powtarzalnych testów dla map BizTalk jest frustrujące. Nie mogę znaleźć sposobu na ich testowanie tak, jak robię testy jednostkowe, ponieważ nie mogę znaleźć sposobów na rozbicie ich na logiczne kawałki. Zwykle są jedną wielką jednostką monolityczną, a każda zmiana może potencjalnie przebić się przez mapę i złamać wiele testów jednostkowych. Nawet gdybym mógł to przerwać, tworzenie danych wejściowych testowych XML jest bolesne i podatne na błędy. Czy istnieje skuteczny sposób ich testowania? Zadowoliłbym się ogólnymi zaleceniami dotyczącymi testowania transformacji XSL, ale konkretnie wspominam o mapach BizTalk głównie z tego powodu, że podczas korzystania z mappera tak naprawdę nie ma sposobu na rozbicie XSLT na szablony (co, jak sądzę, można użyj, aby podzielić logikę na testowalne kawałki, ale szczerze mówiąc, nigdy nie zaszedłem tak daleko z XSLT).


title: Czy każdy commit git powinien pozostawić projekt w stanie roboczym?

text: Jestem ciekaw, jakie są najlepsze praktyki dotyczące pobierania zatwierdzeń. Czy należy je wymuszać tak, aby projekt był w stanie roboczym (kompiluje się poprawnie, wszystkie testy zakończą się pomyślnie itp.), czy też zatwierdzenie uszkodzonego kodu jest w porządku? Jeśli zrezygnujesz z tego wymogu, możesz być bardziej elastyczny w przypadku zatwierdzeń (użyj ich jako logicznych fragmentów, nawet jeśli aplikacja nie jest w stanie roboczym itp.). Ale jeśli go wymusisz, zyskasz elastyczność, dzięki której będziesz w stanie później wybrać dowolne zatwierdzenie...


title: Jak sprawdzić niezawodność w usłudze, która zawiera wiele punktów awarii w przepływie pracy, w tym FTP?

text: W ramach mojego przepływu pracy muszę wykonać wszystkie te kroki w jednej transakcji - muszę przesłać pliki na 2 różne serwery FTP. - Istnieje również arkusz kalkulacyjny, który jest generowany, który należy przesłać na FTP. Czy można to przesyłać strumieniowo, zamiast pobierać, a następnie przesyłać na serwer FTP. Do wysyłania plików używam bibliotek Ruby Net::SFTP i Net::FTP. Chciałbym, żeby był solidny. Nie jestem pewien, czy muszę zrobić coś jeszcze, czy to wystarczy. Żeby było jasne, to już działa w produkcji, nie utknąłem, tylko chcę wymienić się pomysłami na projekt/architekturę, jak to ulepszyć.


title: Jak szybko powinien się zwiększać numer wersji?

text: Niektóre numery wersji rosną bardzo szybko (np. Firefox i Google Chrome), a inne nie (np. cloudapp i jądro ubuntu). Myślę, że programista wybiera, jak szybko zwiększa się liczba; byłoby głupio dodać pełne +1 do liczby, jeśli naprawiłeś tylko drobne rzeczy....


title: Jak działa praca w zespole (w projekcie OO)?

text: Sam programuję w Javie, w bardzo stylu OO. Nigdy nie miałem okazji pracować z innymi programistami (przynajmniej jeszcze nie jestem profesjonalistą). Z ciekawości chciałem zapytać: Jak działa praca z zespołem nad projektem, zwłaszcza przy pracy nad projektem OO? Jak działa dzielenie zadań? **Jak stworzyć coś, co będzie z powodzeniem współpracować z czymś, co stworzył inny programista?** Jak i kiedy programiści się komunikują? Dziękuję


title: Czy zawsze wymaga dużo praktyki programistycznej, zanim naprawdę opanujesz algorytm?

text: Programuję od kilku lat. I stwierdziłem, że zawsze trudno jest opanować algorytm ("master" oznacza tutaj zrozumienie, jak algorytm działa i może być implementowany niezależnie w jakimś języku programowania). Mógłbym zaimplementować kilka prostych algorytmów (takich jak sortowanie bąbelkowe, wyszukiwanie binarne, podstawowe algorytmy przechodzenia przez grafy, takie jak DFS, BFS, podstawowe problemy programowania dynamicznego, takie jak ). Ale bardzo trudno jest mi opanować niektóre zaawansowane algorytmy, takie jak KMP, max-flow. Mogłem zrozumieć podstawową ideę algorytmów. Ale zwykle utknąłem w implementacji i za chwilę zapominam o algorytmie. Więc moje pytania brzmią: 1. Jaka jest rozsądna procedura uczenia się/opanowania nowego algorytmu? 2. Czy muszę ćwiczyć to raz za razem na platformie takiej jak USACO, topcoder, aby to opanować? Czy jest jakiś lepszy sposób?


title: Ile wartości produktu może zaszkodzić, jeśli demo produktu nie działa poprawnie?

text: Właśnie sprawdzam ramy skryptów java. Uniwersalny framework JavaScript. Aby sprawdzić, jak to naprawdę działa, po prostu sprawdzam demo tej strony z przykładami produktów, która jest po prostu zwykłą listą rzeczy do zrobienia. Po prostu zacząłem bawić się listą rzeczy do zrobienia i zauważyłem, że po kliknięciu przycisku „dodaj”, jeśli kliknę „anuluj” w tym oknie dialogowym, nadal dodaje pusty „element do zrobienia”. Jestem pewien, że to błąd. Moim celem nie jest rozwiązanie tego błędu ani znalezienie tego błędu. Chodzi mi o to, że jeśli mam takie produkty i demo ma błędy, które można łatwo zauważyć, to **Czy te błędy zaszkodzą mojej reputacji produktu? i jak dużo ?**


title: Popraw złe testy

text: Mamy duży zespół programistów i testerów. Proporcja to jeden tester na każdego programistę. Posiadamy pełne systemy śledzenia i raportowania błędów. Mamy plany testów. Przy każdej zmianie produktu zespół testowy jest zaangażowany w projektowanie funkcji i jest w jak największym stopniu włączany w proces rozwoju. Budujemy w małych iteracyjnych blokach, stosując metodologię scrum i każdy scrum, w którym są zawarte, w tym sesje groomingowe itp. Ale każde wydanie produktu omija nawet najprostsze i oczywiste wady. Jak możemy to poprawić?


title: Synchronizacja wyliczenia i tabeli

text: Tworzę program, który będzie publikował dane w bazie danych, i natknąłem się na wzorzec, który na pewno jest mi znajomy: Krótka tabela z najbardziej prawdopodobnymi (bardzo prawdopodobnymi) ustalonymi wartościami, które służą jako wyliczenie. Załóżmy więc, że poniższa tabela o nazwie `Status`: Identyfikator statusu Opis -------------- 0 Nieprzetworzone 1 Oczekujące 2 Przetworzone 3 Błąd W moim programie muszę określić identyfikator statusu dla innej tabeli lub ewentualnie zaktualizować rekord o nowy identyfikator statusu. Mógłbym na stałe zakodować status Id w wyliczeniu i mieć nadzieję, że nikt nigdy nie zmieni bazy danych. Lub mógłbym wstępnie pobrać wartości na podstawie opisu (w ten sposób zamiast tego na stałe zakodować _that_). Jakie byłoby właściwe podejście do zsynchronizowania tych dwóch elementów, wyliczenia i tabeli?


title: Jak programowo utworzyć zapytanie tekstowe

text: Oto język zapytań, a dokładniej JQL, możesz go używać w Jira, do wyszukiwania problemów, jest to coś w rodzaju SQL, ale całkiem prostsze. Mój przypadek jest taki, że muszę programowo konstruować takie zapytania w mojej aplikacji. Coś w stylu: JQLMachine jqlMachine = new JQLMachine() jqlMachine.setStatuses("Otwórz", "W toku") jqlMachine.setReporter("foouser", "baruser") jqlMachine.setDateRange(...) jqlMachine.getQuery() -- > Zwracany jest ciąg znaków z odpowiednim zapytaniem JQL. Mam nadzieję, że rozumiesz. Mogę sobie wyobrazić kod do tego, ale nie jest to miłe, korzystając z mojej obecnej wiedzy, jak to zrobić. Dlatego pytam. Co radziłbyś użyć do stworzenia czegoś takiego. Wierzę, że istnieją już pewne wzorce tworzenia czegoś takiego i są już dobre praktyki, jak to zrobić w dobry sposób.


title: Co to jest „licencja uzupełniająca” na oprogramowanie?

text: Naprawdę nie rozumiem tego terminu. Otrzymałem ankietę na temat otrzymania karty podarunkowej lub bezpłatnej licencji na zestaw kontrolny SDK. Ale naprawdę zastanawiam się, co oznacza licencja bezpłatna? Próbowałem przeszukać ich oficjalną stronę, ale nic o tym nie powiedziałem... Czy to trwa do końca życia i mogę używać elementów sterujących w moim osobistym oprogramowaniu i publikować je?


title: Jakie są historyczne podstawy używania JavaScript w programowaniu stron internetowych?

text: Pochodzę z biologii naukowej, gdzie również często używamy Pythona. Teraz, gdy zacząłem tworzyć strony internetowe, stale zastanawiałem się, dlaczego JavaScript jest głównym językiem po stronie klienta w sieci. Czy dominacja JavaScript jest historycznym przypadkiem czy czymś innym? Ponadto jestem ciekawy, czy istnieją jakieś przeszkody w integracji Pythona ze skryptami po stronie klienta?


title: Przycisk Wstecz po napisaniu postów na tej samej stronie

text: Mam 3 strony na mojej stronie. Pierwsza strona pozwala wybrać kilka opcji. Te opcje są wysyłane na drugą stronę, aby wyświetlić niektóre dane o tych opcjach. Stąd mogę kliknąć link, aby przejść do strony 3 na 1 z opcji. Na stronie 3 mogę utworzyć nowe/edytować/usunąć wszystko na tej samej stronie, na której przeładowania wracają na stronę 3. Chcę, aby przycisk „wstecz” na stronie 3 powodował powrót do strony 2, ale zachował opcje, które miał z oryginalna strona 1 wniosek. Strona 1 zawiera kilka pól wyboru, które są przekazywane do strony 2 jako tablice do kontrolera. Myślę, że muszę przekazać te tablice (przekonwertowałem je na listy) na stronę 3 (nawet myślę, że strona 3 bezpośrednio ich nie potrzebuje), aby strona 3 mogła ich użyć w tylnym linku do niej, aby odtworzyć stronę wartości 1 oryginalnie wysłany na stronę 2. Używam asp.net MVC i kiedy przekazuję przekonwertowaną tablicę, wydaje się, że konwertuje ją na typ zamiast faktycznie pokazywać wartości: "types=System.Collections.Generic.List" (gdzie typy to lista. ** Czy to jest potrzebne, czy też istnieją inne opcje, aby w tym przypadku uzyskać przycisk „wstecz”, aby wrócić do strony 2.** Przekazywanie informacji na stronę 3, które nie są tak naprawdę istotne dla strony 3, jest trochę kłopotliwe, z wyjątkiem przycisk wstecz.


title: Proszę wyjaśnić korzyści wynikające z używania składni opartej na XML (np. XAML) zamiast normalnego kodu źródłowego (np. WinForms)?

text: Po pierwsze, pamiętaj, że to pytanie nie dotyczy WPF a WinForms. Jakie są najważniejsze korzyści, które skłoniły firmę Microsoft do wynalezienia XAML na rzecz „starego” podejścia polegającego na generowaniu kompilowalnego kodu C#? Mam wrażenie, że inni programiści wydają się znajdować w tym wiele wad, ale Microsoft poszedł z tym i tak, co musi oznaczać, że jest korzyść, której ja nie widzę. Chciałbym, żebyś mi wytłumaczył, czego mi brakuje.


title: Zautomatyzowane wychodzące przelewy ACH

text: Nasz zespół pracuje nad aplikacją internetową typu marketplace, w której aplikacja będzie pobierać płatności od poszczególnych użytkowników, a następnie pobierać niewielką opłatę procentową przed wypłaceniem salda wybranym usługodawcom. Napotkaliśmy problemy ze znalezieniem usługodawcy, który zezwoli na wychodzące ACH. Poprosiliśmy o rozwiązanie zarówno kilka kont handlowców, jak i banki. Chociaż niektóre banki umożliwiają udostępnianie ACH, jak dotąd nie jesteśmy w stanie znaleźć banku, który udostępnia interfejs API do automatyzacji procesu. Mamy nadzieję, że społeczność znalazła realne rozwiązanie dla redystrybucji środków zgodnie z opisem. Z pewnością nie jesteśmy skazani na żadną konkretną technologię lub metodę, taką jak ACH. Twoje przemyślenia, pomysł lub rozwiązania są bardzo cenione.


title: nauka na zegarze

text: Niektórzy mogą argumentować, że to pytanie jest zbyt ogólne, ale ponieważ nadążanie za tym wydaje się szczególnie istotne w przypadku programowania, czy czyjeś doświadczenie: * czy pracodawcy oczekują, że będziesz na bieżąco? jaki jest „branżowy standard” oczekiwanego czasu, który programista powinien poświęcić na bycie na bieżąco? * czy jest ogólnie akceptowalne, że programista może poświęcić trochę czasu w godzinach pracy na spełnianie oczekiwań w zakresie utrzymywania aktualnych umiejętności? Jeśli nie, to jak większość programistów znajduje na to czas? -


title: Wybór odpowiedniej strategii rozgałęziania dla wydań

text: Zaczynając od nowego zespołu programistów nad nowym projektem i musimy zdefiniować naszą strategię rozgałęziania dla naszego repozytorium źródłowego ( _np. Microsoft Team Foundation Server 2010_ ). Wpadliśmy w gorącą dyskusję na temat tego, czy... **A**. Mieć jedną gałąź **Release**, z której tworzymy kompilacje produkcyjne, a następnie **Etykietę**, gdy coś zostanie wydane LUB **B**. Miej nową gałąź **Release** dla każdego nowego wydania do produkcji ( _np. wersja 1, 2, 3, itd..._ ) Opcja **A** wydaje się całkiem prosta, ale nie jesteśmy pewni, czy to doprowadzi do problemów na dłuższą metę. Wygląda na to, że opcja **B** po prostu tworzy wiele jednorazowych, długowiecznych gałęzi, które z czasem się piętrzą. Czy ktoś ma jakieś doświadczenie, które mogłoby nam pomóc w podjęciu decyzji? W szczególności chcę usłyszeć, gdzie są punkty bólu dla każdego wyboru. Zachęcamy do przedstawienia konkretnych doświadczeń związanych z konsekwencjami TFS i/lub zarządzania wydaniami.


title: Co robi Software Engineer in Test?

text: Zwykle testy jednostkowe były pisane przez dewelopera, który pisze kod, czyli Test Driven Development. Co więc robi Software Engineer in Test?


title: Czy programista powinien stosować się do diagramów klas powstałych podczas projektowania systemu?

text: Diagram klas jest wzorowany na wymaganiach systemowych i ważne jest tworzenie rozwiązań w oparciu o te wymagania. Jeśli powiedziałem diagram klas, czy powinienem się do niego ściśle stosować? A co z refaktoryzacją? Co by było, gdyby diagram nie zawierał jakiejś zasady projektowania, która moim zdaniem została pominięta?


title: Jak ma się zachowywać zgłaszający?

text: W _projektach open source_ jest zazwyczaj zestaw deweloperów, którzy mają uprawnienia do zatwierdzania kodu - autorzy - i inni, którzy "wyciągają żądania" lub wysyłają łatki, "ogólni ludzie". Denerwuje mnie, gdy 1. committer podpisuje zatwierdzenie własnym imieniem i pisze w wiadomości o zatwierdzeniu „Dzięki…”. 2. osoba dokonująca zmian zmienia łatkę przed zatwierdzeniem bez pytania, czy autor się zgadza. Biorąc pod uwagę te dwie irytacje, jestem zmuszony do myślenia, że powinienem postawić się po drugiej stronie i zapytać, jak powinien się zachowywać główny twórca. Czy spodziewane są te dwie konkretne sytuacje? Chodzi mi o to, czy jest to właściwe zachowanie dla budowania i utrzymywania aktywnej społeczności „ogólnej opinii publicznej”? EDIT: Nie pytam, czy mają do tego prawo lub są do tego prawnie zobowiązani. Zgłaszający IMO nie powinien zadowalać się przestrzeganiem prawa, ale powinien być zainteresowany budowaniem/utrzymywaniem społeczności w ramach ograniczeń celów projektu. O to właśnie proszę: jak powinien się zachowywać, aby to osiągnąć.


title: Podejścia do internacjonalizacji stron internetowych

text: Obecnie pracuję nad projektem, który klient chce dostarczyć do różnych krajów. Aplikacja jest stroną internetową. Zaczęliśmy używać plików zasobów do zmiany tekstu, który widzi użytkownik podczas odwiedzania stron na podstawie ich lokalizacji. Ale to nie wystarczy. W angielskiej wersji witryny mamy stronę z napisem „strona x z y”. W chińskiej wersji witryny nie wystarczy wykonać „x y” Składnia języka nie odpowiada symbolom zastępczym utworzonym dla języka angielskiego. Jedyną inną opcją, jaką przychodzi mi do głowy, jest posiadanie całkowicie oddzielnej witryny, obsługującej różne treści. Czy istnieją inne możliwości rozwiązania tego problemu?


title: Radzenie sobie z nieznajomością nazw parametrów funkcji podczas jej wywoływania

text: Oto problem z programowaniem/językiem, o którym chciałbym poznać twoje przemyślenia. Opracowaliśmy konwencje, których większość programistów (powinna) przestrzegać, które nie są częścią składni języków, ale służą do uczynienia kodu bardziej czytelnym. Są to oczywiście zawsze kwestia debaty, ale są przynajmniej pewne podstawowe koncepcje, które większość programistów uważa za zadowalające. Odpowiednie nazewnictwo zmiennych, ogólne nazewnictwo, aby twoje wiersze nie były skandalicznie długie, unikanie długich funkcji, enkapsulacji i tym podobnych rzeczy. Jest jednak problem, który nie znalazłem jeszcze nikogo, kto by skomentował i który może być największym z całej tej grupy. Jest to problem anonimowości argumentów podczas wywoływania funkcji. Funkcje wywodzą się z matematyki, gdzie f(x) ma jasne znaczenie, ponieważ funkcja ma znacznie bardziej rygorystyczną definicję niż zwykle w programowaniu. Czyste funkcje w matematyce potrafią dużo mniej niż w programowaniu i są znacznie bardziej eleganckim narzędziem, zwykle przyjmują tylko jeden argument (którym zwykle jest liczba) i zawsze zwracają jedną wartość (również zwykle liczbę). Jeśli funkcja przyjmuje wiele argumentów, prawie zawsze są one tylko dodatkowymi wymiarami domeny funkcji. Innymi słowy, jeden argument nie jest ważniejszy od pozostałych. Jasne, są one wyraźnie uporządkowane, ale poza tym nie mają żadnego uporządkowania semantycznego. Jednak w programowaniu mamy większą swobodę definiowania funkcji, aw tym przypadku twierdzę, że to nie jest dobra rzecz. Częsta sytuacja, masz funkcję zdefiniowaną tak jak ta func DrawRectangleClipped (rectToDraw, fillColor, clippingRect) {} Patrząc na definicję, jeśli funkcja jest napisana poprawnie, doskonale widać, co jest czym. Podczas wywoływania funkcji możesz nawet mieć w swoim IDE/edytorze magię intellisense/kodu, która powie Ci, jaki powinien być następny argument. Ale poczekaj. Jeśli tego potrzebuję, kiedy piszę rozmowę, czy nie ma tu czegoś, czego nam brakuje? Osoba czytająca kod nie ma korzyści z IDE i jeśli nie przeskoczy do definicji, nie ma pojęcia, który z dwóch prostokątów przekazanych jako argumenty jest używany do czego. Problem idzie jeszcze dalej. Jeśli nasze argumenty pochodzą z jakiejś zmiennej lokalnej, mogą wystąpić sytuacje, w których nie wiemy nawet, jaki jest drugi argument, ponieważ widzimy tylko nazwę zmiennej. Weźmy na przykład ten wiersz kodu DrawRectangleCipped(deserializedArray[0], deserializedArray[1], deserializedArray[2]) Jest to łagodzone w różnym stopniu w różnych językach, ale nawet w ściśle wpisanych językach, a nawet jeśli rozsądnie nazywasz zmienne, nie nawet nie wspominaj o typie zmiennej, kiedy przekazujesz ją do funkcji. Jak to zwykle bywa z programowaniem, istnieje wiele potencjalnych rozwiązań tego problemu. Wiele z nich jest już zaimplementowanych w popularnych językach. Na przykład nazwane parametry w C#. Jednak wszystko, co wiem, ma istotne wady. Nazywanie każdego parametru w każdym wywołaniu funkcji nie może prowadzić do czytelnego kodu. Wydaje się, że może wyrastamy z możliwości, jakie daje nam programowanie zwykłego tekstu. Przeszliśmy od TYLKO tekstu w prawie każdym obszarze, ale nadal kodujemy to samo. Potrzeba więcej informacji do wyświetlenia w kodzie? Dodaj więcej tekstu. W każdym razie robi się to trochę stycznie, więc na tym zakończę. Jedna odpowiedź, którą otrzymałem do drugiego fragmentu kodu, jest taka, że prawdopodobnie najpierw rozpakujesz tablicę do niektórych nazwanych zmiennych, a następnie ich użyjesz, ale nazwa zmiennej może oznaczać wiele rzeczy, a sposób jej wywoływania niekoniecznie mówi tak, jak ma być interpretowane w kontekście wywoływanej funkcji. W zakresie lokalnym możesz mieć dwa prostokąty o nazwach leftRectangle i rightRectangle, ponieważ to właśnie one reprezentują semantycznie, ale nie muszą one rozciągać się na to, co reprezentują, gdy są podane do funkcji. W rzeczywistości, jeśli twoje zmienne są nazwane w kontekście wywoływanej funkcji, wprowadzasz mniej informacji, niż potencjalnie możesz za pomocą tego wywołania funkcji i na pewnym poziomie, jeśli prowadzi to do gorszego kodu. Jeśli masz procedurę, której wynikiem jest prostokąt, który przechowujesz w rectForClipping, a następnie inną procedurę, która zapewnia rectForDrawing, to rzeczywiste wywołanie DrawRectangleClipping jest tylko ceremonią. Linia, która nie oznacza nic nowego i jest tam tylko po to, aby komputer dokładnie wiedział, czego chcesz, nawet jeśli wyjaśniłeś to już swoim nazewnictwem. To nie jest dobra rzecz. Naprawdę chciałbym usłyszeć świeże spojrzenie na to. Jestem pewien, że nie jestem pierwszym, który uważa ten problem za problem, więc jak go rozwiązać?


title: Czy kontrakty kodu .NET 4.0 mają do odegrania jakąś rolę w projektach solo-programistów?

text: Często zastanawiam się, jakie najlepsze praktyki programistyczne odnoszą się do programowania solo, ponieważ przez większość czasu jestem jedynym programistą w projekcie. Właśnie zacząłem eksperymentować z kontraktami kodu C# 4.0 i pomyślałem, że zapytam społeczność, jakie mogą mieć użyteczność dla programisty solo. Oto skąd pochodzę z tym. W większości przypadków, gdy napotykam wyjątek, oznacza to, że w moim kodzie jest błąd. Istnieją określone wyjątki (gra słów, które nie są przeznaczone), na przykład gdy mam do czynienia z czymś zewnętrznym, takim jak plik tekstowy, baza danych lub usługa, ale w większości przypadków wyjątki oznaczają _Zrobiłem_ coś złego. Weź tę prostą metodę: public void MapEntity(PersonModel model, PersonEntity entity) { entity.Name = model.Name; podmiot.Wiek = model.Wiek; entity.Updated = DateTime.Now; } Jeśli „model” lub „entity” mają wartość null, ta metoda wygeneruje wyjątek „NullReferenceException”. Jako jedyny konsument mojego kodu wiem, że nie powinienem przekazywać referencji null, ale jeśli jakoś to zrobię, _chcę_ rzucić wyjątek i _chcę_, aby debugger przeskoczył od razu do źródła błędu, aby Widzę, co się stało. To powiedziawszy, mógłbym napisać: public void MapEntity(PersonModel model, PersonEntity entity) { Contract.Requires(model != null); Contract.Requires(jednostka != null); podmiot.Nazwa = model.Nazwa; podmiot.Wiek = model.Wiek; entity.Updated = DateTime.Now; } Ma to tę zaletę, że wyraźnie wskazuje (dla mnie), że dwa argumenty nie mogą być puste. Jednak jest bardzo mało prawdopodobne, żebym popełnił ten błąd (bo wiem, co robi ta metoda). Ponadto, jeśli dobrze rozumiem, co robi funkcja `Requires()`, zachowanie w czasie wykonywania w przypadku napotkania argumentu o wartości null będzie prawie takie samo. Więc nie mogę przestać się zastanawiać, co zyskałem poza dwoma linijkami kodu? Jako kontrapunkt, oto przypadek, w którym widzę określoną wartość jako jawną: public User FindUser(string emailAddress) { if (string.IsNullOrWhiteSpace(emailAddress)) return null; var users = DbContext.Users.Where(u => u.EmailAddress == adres e-mail); Contract.Assert(users.Count() <= 1, "Baza danych wygląda na uszkodzoną: dla podanego adresu e-mail znaleziono więcej niż jednego użytkownika. Adresy e-mail powinny być unikatowe."); zwróć użytkowników.SingleOrDefault(); } Ale w tym przypadku powodem, dla którego widzę wartość w korzystaniu z kontraktu kodującego, jest wskazanie, że coś poszło nie tak, co nie jest błędem per se (chociaż mogło to wynikać z błędu w innym miejscu systemu). Chciałbym wiedzieć, czy jestem na dobrej drodze z moim myśleniem, czy też kontrakty na kod mają większą wartość, niż sobie uświadamiam. Czy opłaca się używać kontraktów, gdy możesz samodzielnie zbadać i debugować kod, czy tylko wtedy, gdy kod będzie używany przez stronę trzecią?


title: Jestem programistą iOS i chcę nauczyć się programowania gier

text: Programowałem na iPhone'a (i trochę na Maca) przez ostatnie 1 lub 2 lata, a teraz chcę się nauczyć Java. Znam OOP i jestem również farmiliarem z odrobiną składni c! Czy są jakieś książki, takie jak java dla programistów objective-c lub coś takiego? Jeśli uważasz, że c++ byłby lepszym pomysłem niż Java (do programowania gier), proszę również o wskazówki. Naprawdę chciałbym zostać w OOP.


title: Korelacja między dwiema krzywymi

text: Próbuję rozwiązać problem matematyczny na dwa różne sposoby, a wynik jest krzywą w obu przypadkach. Chcę porównać te krzywe wyjściowe pod kątem podobieństwa w Pythonie. Czy istnieje jakaś funkcja lub struktura, która zapewnia tę funkcjonalność? Dziękuję.


title: Rozwiąż spór: ciąg a tablica?

text: Prawda czy fałsz: ciąg znaków to to samo, co tablica. Niedawno miałem wywiad i zadano powyższe pytanie. Powiedziałem nieprawdę, ale ankieter powiedział, że to prawda. Wyjaśniłem jej, że string to typ danych, a tablica to obiekt, który przechowuje wiele wystąpień zmiennej i że nie są to nawet podobne pojęcia. Ale była osobą z działu HR, która po prostu czytała pytania techniczne, które jej przekazano, więc nie mogła rozwinąć ani odnieść się do mojego punktu. Współpracownik później wyjaśnił odpowiedź True, stwierdzając, że łańcuch jest w rzeczywistości tablicą znaków… zatem łańcuch jest tablicą. Teraz, jeśli ciąg jest tablicą znaków, nie oznacza to, że tablice dokumentów lub tablice liczb całkowitych kwalifikują się jako ciągi. Zatem łańcuch nie jest tym samym, co tablica. Ale mimo to (biorąc pod uwagę C#) ciąg nie jest nawet tablicą znaków. Aby wykonać manipulację znakami na łańcuchu (bez używania metod konkatenacji), musisz przekonwertować łańcuch na tablicę znaków. Teraz, jeśli ciąg był synonimem tablicy znaków, dlaczego miałbyś go konwertować? Czy nie bylibyście w stanie po prostu wywołać każdego znaku w łańcuchu niejawnie, tak jak w przypadku tablicy znaków? Nie! Czemu? Ponieważ ciąg nie jest tablicą znaków! Porównuję to do pytania: „Czy klucz podstawowy jest tym samym, co unikalny identyfikator?” Odpowiedź jest fałszywa. Powód jest taki: klucz podstawowy jest unikalnym identyfikatorem, ale możesz mieć unikalne identyfikatory w tabeli bez ustawiania ich jako kluczy. Co wszyscy myślicie? Czy ciąg (typ danych) to to samo co tablica (typ obiektu)? Jeśli tak, dlaczego?


title: Architektura wtyczek: jak obsługiwać bazy danych i rejestrowanie?

text: Jestem w trakcie projektowania architektury aplikacji opartej na wtyczkach i mam kilka pytań dotyczących obsługi dostępu do bazy danych i logowania. Celem mojej aplikacji jest umożliwienie urządzeniu produkowanemu przez moją firmę wysyłania wiadomości przez dowolną liczbę protokołów firm trzecich i do dowolnej liczby urządzeń firm trzecich. Ze względu na charakter mojej aplikacji muszę szczegółowo rejestrować każdą wiadomość wysłaną przez mój system. Oto, co myślę po stronie bazy danych: będzie globalna tabela komunikatów, która przechowuje wszystkie dane niezależne od implementacji, które posiadamy, a następnie będzie tabela (lub zestaw tabel) dla każdej wtyczki wiadomości _zdefiniowanej przez wtyczkę writer_ który odwołuje się do tablicy Global Message poprzez klucz obcy. To właśnie obsługa tych innych tabel sprawia, że trudno mi wymyślić, jak bezpiecznie projektować. Z jednej strony nie chcę dawać wtyczkom pełnego dostępu do bazy danych (chcę, aby miały jak najmniej uprawnień), z drugiej strony chcę, aby twórcy wtyczek mieli pełną kontrolę nad logowaniem wszelkich danych, które potrzebują tabel, które definiują podobnie do sposobu działania wtyczek w Wordpress. Dodatkowo nie chcę, aby logowanie do bazy danych było w ogóle opcjonalne: Dobre logowanie jest kluczowe dla mojej aplikacji. Rzeczy, które brałem pod uwagę: * Zaprojektowanie infrastruktury rejestrowania, która pozwala wtyczce na zdefiniowanie (być może w pliku XML) tabel, których potrzebuje w bazie danych i mapowanie między tymi tabelami i obiektami, które będą zwracać, oraz użycie tych mapowań i definicji tabel aby zapisać do DB wyniki wywołań metod. * Tworzenie konwencji nazewnictwa dla procedur składowanych w bazie danych, którą każda wtyczka musi zdefiniować podczas definiowania swoich tabel i automatycznego wywoływania tych procedur składowanych po wysłaniu wiadomości. * Umożliwienie każdej wtyczce zaimplementowania metody rejestrowania, która zwraca ciąg znaków zawierający odpowiednie zapytanie SQL. Każde z powyższych rozwiązań sprawia, że czuję się trochę niekomfortowo, ale nie jestem pewien, jakie inne podejścia mogą istnieć. Jakieś sugestie? Szczegóły implementacji: Piszę swoją aplikację w Javie i korzystam z ręcznie rozwijanej wtyczki, więc mam całkiem przyzwoitą elastyczność. Ponieważ żaden rzeczywisty kod nie został napisany (poza pewnym kodem weryfikacyjnym, który jest tak naprawdę tylko w celach informacyjnych), mogę wprowadzić dość duże zmiany w moim planie bez dużych kosztów.


title: Algorytm do zamówienia tablicy

text: Weźmy na przykład tę tablicę wejściową: [2,7,1,4,9] Dla tego wejścia, muszę utworzyć tablicę 23 elementów, która zawiera dwa elementy po 2, siedem elementów po 7, jeden element po 1, cztery elementy 4 i 9 elementów 9. Przykład tablicy wyjściowej: [2,2,7,7,7,7,7,7,7,1,4,4,4,4,9,...] Jednak , ta tablica **musi być uporządkowana w taki sposób, aby zminimalizować liczbę tych samych elementów pojawiających się obok siebie**. Przykład takiej tablicy mógłby wyglądać tak: [7,2,9,4,9,1,7,...] Podstawowym celem jest zminimalizowanie liczby tych samych sąsiadujących elementów. Drugim celem jest dystrybucja elementów bez uprzedzeń w wynikowej tablicy, jeśli to możliwe. Pomocny byłby dowolny pseudokod lub C#, java, ....


title: Zagnieżdżanie zapytania Linq-to-Objects w zapytaniu Linq-to-Entities – co dzieje się pod osłonami?

text: var numbers = new int[] { 1, 2, 3, 4, 5 }; var contact = z cw kontekście.Kontakty gdzie c.ContactID == liczby.Max() | c.ContactID == liczby.FirstOrDefault() wybierz c; foreach (pozycja var w kontaktach) Console.WriteLine(item.ContactID); Zapytanie Linq-to-Entities jest najpierw tłumaczone na Linq _expression tree_ , które jest następnie konwertowane przez Object Services na _command tree_. A jeśli zapytanie Linq-to-Entities zagnieżdża zapytanie Linq-to-Objects, to zagnieżdżone zapytanie również zostanie przetłumaczone na _drzewo wyrażeń_. a) Zakładam, że żaden z operatorów zagnieżdżonego zapytania Linq-to-Objects nie jest faktycznie wykonywany, ale zamiast tego _dostawca danych_ dla określonej bazy danych (lub być może Object Services) wie, jak przekształcić logikę operatorów Linq-to-Objects w odpowiedni SQL sprawozdania? b) _Dostawca danych_ wie, jak tworzyć równoważne instrukcje SQL tylko dla niektórych operatorów Linq-to-Objects? c) Podobnie, _dostawca danych_ wie, jak tworzyć równoważne instrukcje SQL tylko dla niektórych metod innych niż Linq w bibliotece klas Net Framework? **EDYTUJ:** Znam tylko niektóre Sql, więc nie mogę być całkowicie pewien, ale czytając zapytanie Sql wygenerowane dla powyższego kodu, wydaje się, że dostawca danych w rzeczywistości nie wykonał metody `numbers.Max`, ale zamiast tego jakoś się domyślił Należy zauważyć, że `numbers.Max` powinien zwrócić maksymalną wartość, a następnie przejść do włączenia w wygenerowanym zapytaniu Sql wywołania **wbudowanej w TSQL funkcji MAX**. Umieszcza również wszystkie wartości przechowywane przez tablicę `numbers` w zapytaniu Sql. SELECT CASE WHEN (([Project1].[C1] = 1) AND ([Project1].[C1] NOT NULL)) THEN '0X0X' ELSE '0X1X' END AS [C1], [Extent1].[ContactID] AS [ID kontaktu], [Zakres1].[Imię] AS [Imię], [Zakres1].[Nazwisko] AS [Nazwisko], [Zakres1].[Tytuł] AS [Tytuł], [Zakres1].[Data dodania] AS [ AddDate], [Extent1].[ModifiedDate] AS [ModifiedDate], [Extent1].[RowVersion] AS [RowVersion], CASE WHEN (([Project1].[C1] = 1) AND ([Project1].[C1] NIE JEST NULL)) THEN [Projekt1].[CustomerTypeID] END AS [C2], CASE WHEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1 ].[DataPoczątkowa] KONIEC JAKO [C3], PRZYPADEK GDY (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Podstawowe miejsce docelowe] END AS [C4], CASE WEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1 ] NIE JEST NULL)) THEN [Projekt1].[SecondaryDestination] END AS [C5], CASE WEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [ Projekt1].[Działanie podstawowe] END AS [C6], PRZYPADEK WHEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Działanie drugorzędne] END AS [C7], CASE WHEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Uwagi] END AS [C8], CASE WHEN (( [Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1 ].[RowVersion] END AS [C9], CASE WEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Data urodzenia] END AS [ C10], CASE WHEN (([Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[WysokośćCale] END AS [C11], CASE WHEN (([ Projekt1].[C1] = 1) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Wagi] END AS [C12], CASE WHEN (([Projekt1].[C1] = 1 ) AND ([Projekt1].[C1] NIE JEST NULL)) THEN [Projekt1].[Ograniczenia dietetyczne] END AS [C13] FROM [dbo].[Kontakt] AS [Zakres1] LEWE ZŁĄCZENIE ZEWNĘTRZNE (WYBIERZ [Zakres2].[ ContactID] JAKO [ContactID], [Zakres2].[Data urodzenia] AS [DataUrodzenia], [Zakres2].[WysokośćCale] AS [WysokośćCale], [Zakres2].[WagaFunty] AS [Funty wagi], [Zakres2].[Ograniczenia żywieniowe] AS [Ograniczenia żywieniowe], [Zakres3].[Identyfikator typu klienta] AS [ Identyfikator typu klienta], [Zakres3].[Data początkowa] AS [Data początkowa], [Zakres3].[Podstawowe miejsce docelowe] AS [Podstawowe miejsce docelowe], [Zakres3].[Drugorzędne miejsce docelowe] AS [Drugorzędne miejsce docelowe], [Zakres3].[Podstawowe działanie] AS [Podstawowe działanie] , [Zakres3].[Działanie drugorzędne] AS [Działanie drugorzędne], [Zakres3].[Uwagi] AS [Uwagi], [Zakres3].[Wersja wiersza] AS [Wersja wiersza], cast(1 jako bit) AS [C1] Z [dbo].[ContactPersonalInfo] AS [Zakres2] ZŁĄCZENIE WEWNĘTRZNE [dbo].[Klienci] AS [Zakres3] ON [Zakres2].[Identyfikator kontaktu] = [Zakres3].[Identyfikator kontaktu ]) AS [Projekt1] ON [Zakres1].[IDKontaktu] = [Projekt1].[IDKontaktu] LEFT OUTER JOIN (SELECT TOP (1) [c].[C1] AS [C1] FROM (SELECT [UnionAll3]).[ C1] AS [C1] FROM (SELECT [UnionAll2].[C1] AS [C1] FROM (SELECT [UnionAll1].[C1] AS [C1] FROM (SELECT 1 AS [C1] FROM) (SELECT 1 AS X)) [SingleRowTable1] UNION ALL SELECT 2 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable2]) AS [UnionAll1] UNION ALL SELECT 3 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable3]) AS [UnionAll2] UNION ALL SELECT 4 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable4]) AS [UnionAll3] UNION ALL SELECT 5 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable5]) AS [c]) AS [Limit1] ON 1 = 1 LEWE ZŁĄCZENIE ZEWNĘTRZNE (SELECT TOP (1) [c].[C1] AS [C1] FROM (SELECT [UnionAll7].[C1] AS [C1] FROM (SELECT [UnionAll6].[C1] AS [C1] FROM (SELECT [UnionAll5]).[C1] AS [C1] FROM (SELECT 1 AS [C1] FROM (SELECT 1 AS X)) AS [SingleRowTable6] UNION ALL SELECT 2 AS [C1] FROM (SELECT 1 AS X) AS [PojedynczyTabela7]) AS [PojedynczyWszystko5] UNION ALL SELECT 3 AS [C1] FROM (SELECT 1 AS X) AS [PojedynczyRówTable8]) AS [PojedynczyWszystko6] UNION ALL SELECT 4 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable9]) AS [UnionAll7] UNION ALL SELECT 5 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable10]) AS [c]) AS [Limit2] ON 1 = 1 KRZYŻ JOIN (SELECT MAX([UnionAll12].[C1]) AS [A1] FROM (SELECT [UnionAll11].[C1] AS [C1] FROM (SELECT [UnionAll10].[C1] AS [C1] FROM) (SELECT [UnionAll9 ].[C1] AS [C1] FROM (SELECT 1 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable11] UNION ALL SELECT 2 AS [C1] FROM (SELECT 1 AS X) AS [SingleRo wTable12]) AS [UnionAll9] UNION ALL SELECT 3 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable13]) AS [UnionAll10] UNION ALL SELECT 4 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable14] ) AS [UnionAll11] UNION ALL SELECT 5 AS [C1] FROM (SELECT 1 AS X) AS [SingleRowTable15]) AS [UnionAll12]) AS [GroupBy1] WHERE [Zakres1].[ContactID] IN ([GroupBy1].[A1 ], (PRZYPADEK GDY ([Limit1].[C1] JEST NULL) THEN 0 ELSE [Limit2].[C1] END)) Na podstawie tego, i czy jest możliwe, że dostawca Linq2Entities rzeczywiście nie wykonuje metod innych niż Linq i Linq-to-Object, ale zamiast tego tworzy równoważne instrukcje SQL dla niektórych z nich (a dla innych zgłasza wyjątek)? Z góry dziękuję


title: Jakie są selektory JavaScript?

text: Byłem ostatnio na rozmowie kwalifikacyjnej i chociaż wiedzieli, że jestem początkującym javascriptem, zapytali mnie, jakich selektorów używałem wcześniej? Nie wiedziałem, co powiedzieć. Wróciłem do domu i szukałem go, ale nie mogę znaleźć jasnej definicji. Czy selektor nie jest czymś w rodzaju .class lub #id?


title: Czy używanie blokowania/odblokowywania w kontroli wersji jest antywzorcem?

text: Ostatnio zacząłem używać Gita w pracy. Wcześniej używałem tylko VSS (który ma pewne problemy) i jak dotąd Git jest o rząd wielkości lepszy. Kluczowe różnice polegają na tym, że Git jest dystrybuowany, podczas gdy VSS ma scentralizowaną wersję „serwerową”, a VSS używa przepływu pracy „zamówienie-zablokuj-zaewidencjonowanie”, podczas gdy Git nie. Największe problemy, jakie mieliśmy podczas pracy z kodem w naszym zespole, dotyczą tego, że kod jest sprawdzany i niedostępny dla innych osób. To znacznie spowalnia pracę, ale wiem też, że nie jest to wyjątkowe dla VSS. Inne systemy kontroli źródła, takie jak CVS, najwyraźniej również blokują pliki w ramach ich przepływu pracy. Czy jest jakiś dobry powód, aby blokowanie było częścią systemu kontroli wersji? A może nawet przepływ pracy deweloperskiej? A może praktyki blokowania powinny być uważane za złą praktykę i odradzane?


title: sukces:/porażka: bloki vs zakończenie: blok

text: Widzę dwa typowe wzorce bloków w Objective-C. Jedna to para sukces:/porażka: bloki, druga to pojedyncze uzupełnienie: blok. Na przykład, powiedzmy, że mam zadanie, które zwróci obiekt asynchronicznie i to zadanie może się nie powieść. Pierwszym wzorcem jest `-taskWithSuccess:(void (^)(id obiektu))powodzenie niepowodzenie:(void (^)(NSError *błąd))niepowodzenie`. Drugi wzorzec to `-taskWithCompletion:(void (^)(id obiekt, NSError *error))uzupełnianie`. ### success:/failure: [docelowe zadanieZSukcesem:^(id obiektu) { // W00t! Mam błąd obiektu }:^(NSError *error) { // O nie! zgłosić awarię. }]; ### complete: [docelowe zadanieWithCompletion:^(id obiektu, NSError *error) { if (object) { // W00t! Mam swój obiekt } else { // O nie! zgłosić awarię. } }]; Jaki jest preferowany wzór? Jakie są mocne i słabe strony? Kiedy użyjesz jednego z drugim?


title: Co oznacza „rekursywny” dla programu przetwarzającego pliki i katalogi?

text: Wiem, czym jest rekurencja w programowaniu. Rozumiem podstawy systemów kontroli wersji (używałem svn). Ale często zastanawiałem się, co oznacza „rekurencja” lub „rekurencja” w odniesieniu do systemów kontroli wersji. Co ma wspólnego wywołująca się funkcja z pracą z plikami i katalogami w systemie kontroli wersji?


title: Do czego służy warstwa logiki biznesowej (BLL)?

text: Czytając dobre praktyki dla aplikacji bazodanowych często spotykam się z zwolennikami tak zwanych „warstw logiki biznesowej” i staram się zdecydować, czy najlepiej dla mojego projektu jest ich użycie (jest to mały projekt osobisty). Mój problem polega na tym, że nie mogę wymyślić niczego, co DAL może zrobić, czego DAL nie może już obsłużyć (wykonywanie zapytań i mapowanie wyników na obiekty), więc moja LOGIKA BLOKOWA po prostu wywołuje DAL, nie robiąc niczego samodzielnie. Może się mylę co do tego, co DAL też powinien robić. Ale niezależnie od tego, jakiego rodzaju funkcjonalności należy oczekiwać od LOGIKI biznesowej w aplikacji do zarządzania bazą danych?


title: Czy są korzyści z wyprowadzania wersji z gałęzi SCM?

text: Obecnie mamy schemat wersjonowania zgodny ze wzorcem major.minor.patch. Rozwój odbywa się w oddziale (tj. - branche/b4_2); wydanie jest tagiem (tags/r4_2_0). Aby określić wersję wewnątrz kodu, mamy klasę, która potrafi parsować URL SCM (FooVersion.java). Jeśli adres URL reprezentuje gałąź, dodawana jest wersja SVN (dla kompilacji QA). Ponownie oceniamy wersjonowanie, a dokładniej, jakie mamy środowiska. Dużą zmianą jest dodanie koncepcji środowiska beta dla naszych „superużytkowników”. Razem z tym zastanawiam się nad tym potencjalnie przepracowanym systemem wyprowadzania wersji. Jak określić w kodzie, jaka jest wersja oprogramowania? Tworzenie wydania jest już procesem ręcznym (tworzenie tagu, sprawdzanie JAR-ów dla powiązanych bibliotek, które opracowujemy itp.), który prawdopodobnie mógłby być oskryptowany, więc czy sposób, w jaki to robimy, jest lepszy niż posiadanie aktualizowanego pliku tekstowego kiedy wersja jest wycinana?


title: Wypełnianie sceny kostkami

text: Próbuję zaprojektować rozwiązanie do symulacji płynów gazowych w przestrzeniach zamkniętych, używam równań naiver-stokes dla dynamiki płynów, ale ponieważ obejmuje tylko płyny nieściśliwe, takie jak ciecz, musiałem znaleźć sposób na symulację kompresji Ostatnio wymyśliłem rozwiązanie, które polega na stworzeniu pola przechowującego dane o ciśnieniu dla każdej partycji wolumetrycznej i pomyślałem, że dobrym pomysłem byłoby skonstruowanie tego pola jako kompozycji sześcianów, gdzie każdy sześcian ma w sobie jednorodną wartość ciśnienia. Próbowałem nadmuchać sześcian z punktu i rekursywnie tworzyć inne sześciany z jego powierzchni, pamiętając o kolizji z powierzchniami wewnątrz tej sceny, ale ten algorytm zawodzi, ponieważ istnieje wiele szczegółowych przypadków obejmujących złożone dziury i nacięcia na obiekcie. Czy istnieje lepszy sposób na skonstruowanie tego pola?


title: Czy są jakieś aplikacje internetowe subversion typu "dashboard", które mogą pokazać mi listę ostatnich zatwierdzeń ze wszystkich moich repozytoriów?

text: Szukam czegoś w rodzaju pulpitu nawigacyjnego subversion, który przynajmniej może pokazać mi zatwierdzenia z całej grupy repozytoriów. Czy jest coś takiego dostępnego? Ponieważ równie dobrze mogłoby to być śmiertelnie proste i nie mogę niczego znaleźć od razu, myślę, że po prostu drapię się tutaj, ale mam nadzieję, że ktoś chciał tego wcześniej? Czy są jakieś „dashboardy” subversion, które pokazują mi nawet prostą listę zatwierdzeń, podobną do twittera, z moich repozytoriów?


title: Programowanie gry w pokera online

text: Próbuję napisać ogromnego klienta online dla wielu graczy dla strony pokerowej, w której jeden użytkownik może być na kliencie Flash, a drugi na, powiedzmy, kliencie iOS (iPhone / iPad) i chciałbym wiedzieć, jak może przebiegać interakcja między dwoma użytkownikami widoczne na obu klientach. Co byłoby lepsze w użyciu? * Czy powinienem używać usługi MSMQ? * AJAX? * Coś innego? Potrzebuję warstwy przesyłania wiadomości (komunikatów interakcji z klientem) do skalowania do ponad 100 000 użytkowników online na początek. Innymi słowy; Jakiej skalowalnej technologii mogę użyć, aby interakcje w grze między użytkownikami online były widoczne dla wszystkich uczestników gry?


title: Lokalne/wewnętrzne wdrożenie czegoś takiego jak Campfire dla programistów

text: Patrzyłem na Campfire autorstwa 37Signals i wygląda na świetne narzędzie do współpracy między programistami, ale potrzebujemy czegoś, co można wdrożyć wewnętrznie. Jakieś dobre opcje tam?


title: PHP, kiedy używać iteratorów, jak buforować wyniki?

text: 1. Kiedy najlepiej używać iteratorów w PHP i jak można je zaimplementować, aby uniknąć jednoczesnego ładowania wszystkich obiektów do pamięci? 2. Czy istnieją jakieś konstrukcje w PHP, dzięki którym możemy kolejkować wyniki operacji do użycia z iteratorem, jednocześnie unikając jednoczesnego ładowania wszystkich obiektów do pamięci? 1. Przykładem może być żądanie curl HTTP skierowane do serwera REST 3. W przypadku żądania HTTP, które zwraca wszystkie wyniki na raz (a la curl), lepiej byłoby skorzystać z wyników przesyłania strumieniowego, a jeśli tak, czy są jakieś ograniczenia lub pułapki, o których należy pamiętać? 1. Jeśli używasz przesyłania strumieniowego, czy lepiej zastąpić curl natywnym strumieniem/gniazdem PHP? Moim zamiarem jest wdrożenie Iteratorów dla klienta REST i osobno ORM dokumentu, który utrzymuję, ale tylko wtedy, gdy mogę to zrobić, jednocześnie czerpiąc korzyści ze zmniejszonego zużycia pamięci, zwiększonej wydajności itp. Z góry dziękuję za wszelkie odpowiedzi :- )


title: Jak przechwycić informacje z witryny, która nie udostępnia interfejsu API?

text: Czy znasz jakieś dobre tutoriale, frameworki, cokolwiek, co może mi pomóc w pisaniu kodu, który przechwytuje informacje ze strony internetowej, która nie ma publicznego API lub nie została napisana w sposób RESTful? Słyszałem, że istnieje klejnot Ruby, który symuluje przeglądarkę, ale zapomniałem jego nazwy i nie mogłem już znaleźć żadnych informacji na jego temat.


title: Jak śledzisz duże projekty?

text: Kiedy mam do czynienia z projektem, który ma wiele różnych plików, zawsze wydaje mi się, że nie pamiętam, jak poszczególne części wchodzą ze sobą w interakcje. Nigdy tak naprawdę nie miałem większego problemu ze zrozumieniem mniejszych komponentów w izolacji, ale wraz ze wzrostem złożoności projektu nie jestem w stanie mentalnie zrozumieć, co się dzieje. Zauważam to zwłaszcza w projektach OOP, ponieważ rośnie liczba metod i plików źródłowych. Moje wykształcenie: Jestem programistą internetowym samoukiem. Zajmowałem się głównie pythonem dla szybkich i brudnych skryptów, ale wykonałem też kilka podstawowych projektów django. Lubię frameworki webowe, takie jak flask, ponieważ w prostocie jednoplikowego layoutu mogę z łatwością śledzić (głównie) to, co się dzieje. Teraz znalazłem się w sytuacji, w której muszę wejść w interakcję z dużym projektem PHP Zend Framework, który opracował ktoś inny, i jestem przytłoczony próbami zrozumienia kodu rozłożonego na wiele plików. **Jakie techniki i procesy okazały się przydatne do zrozumienia obszernej bazy kodu opracowanej przez kogoś innego? Czy znajduje się jakiś konkretny diagram, który pomoże Ci uchwycić większy obraz?**


title: Jaka jest różnica między wskaźnikiem wskazującym na lokalizację 0x0 a wskaźnikiem ustawionym na NULL?

text: Czy wskaźnik wskazujący na 0x0000 jest taki sam jak wskaźnik ustawiony na NULL? Jeśli wartość NULL jest zdefiniowana w języku C, to na jaką lokalizację jest fizycznie tłumaczona? Czy to to samo co 0x0000. Gdzie mogę znaleźć więcej szczegółów na temat tych koncepcji?