title: Paralelizm implikuje współbieżność, ale nie odwrotnie, prawda?

text: Często czytam, że równoległość i współbieżność to różne rzeczy. Bardzo często osoby odpowiadające/komentatorzy posuwają się tak daleko, że piszą, że są to dwie zupełnie różne rzeczy. Jednak moim zdaniem są one powiązane, ale chciałbym wyjaśnić to. Na przykład, jeśli korzystam z wielordzeniowego procesora i uda mi się podzielić obliczenia na _x_ mniejsze obliczenia (powiedzmy za pomocą rozwidlenia/połączenia), z których każde działa we własnym wątku, będę miał program, który wykonuje obliczenia równoległe (ponieważ podobno w dowolnym momencie kilka wątków będzie działać na kilku rdzeniach) **i** są równoczesne, prawda? Podczas gdy jeśli po prostu używam, powiedzmy, Javy i zajmuję się zdarzeniami interfejsu użytkownika i odświeżaniem w wątku Event Dispatch oraz uruchamiam jedyny wątek, który sam stworzyłem, będę miał program, który jest współbieżny (wątek EDT + GC + mój wątek główny itp.), ale nie równolegle. Chciałbym wiedzieć, czy mam rację i czy równoległość (w systemie „pojedynczym, ale wielordzeniowym”) zawsze oznacza współbieżność, czy nie? Czy programy wielowątkowe działające na wielordzeniowym procesorze, ale gdzie różne wątki wykonują zupełnie inne obliczenia, są uważane za wykorzystujące „równoległość”?


title: Szkolenie „zamiennika”, jak egzekwować normy?

text: Nie jestem pewien, czy jest to odpowiednia strona wymiany stosów, o którą można zapytać, ale oto… **Zakres** * * * Pracuję dla małej firmy, która zatrudnia kilkaset osób. Zespół programistów dla firmy jest mały i pracuje z visual foxpro. Określony dział w firmie zatrudnił mnie jako „samotnego bandytę”, aby naprawić i ulepszyć istniejący system fakturowania. Pomyślnie wziąłem aplikację Access, która cierpiała na wiele zagrożeń i ograniczeń, i przekonwertowałem ją na aplikację C# opartą na zapleczu serwera SQL. Niedawno ukończyłem studia licencjackie i w żadnym wypadku nie jestem ekspertem. Aby to zrekompensować, poczułem, że zdobywanie certyfikatów Microsoft zmusi mnie do lepszego zrozumienia .net i jego funkcjonowania. Tak więc, po złożeniu wypowiedzenia z 9-miesięcznym wyprzedzeniem, 3 miesiące temu w końcu pojawił się zamiennik. Ich rolą jest poznanie tego, co projektowałem, aby spróbować **obsługiwać** aplikacje zaprojektowane w **C#**. * * * **Zastępstwo** Świeżo po studiach, bez doświadczenia zawodowego w świecie rzeczywistym, pierwszym odruchem, by cokolwiek związanego z danymi, były i nadal są pola list... za każdym razem, gdy wymieniane są dane, pole listy jest kontrolką z wyboru dla wymiana. To dotarło do sedna, nieważne ile razy omawiam inne kontrolki, gdzie widziałem 5 listew na jednym formularzu. Doświadczenie w klasie było prawie w całości tworzeniem konsoli w C++. Przykładem, w którym mam obawy, jest aplikacja winforms: użytkownicy muszą wprowadzić powody do tabeli, aby wybrać z nich później. Biorąc pod uwagę, że wiem, że istnieje silnie typizowany zestaw danych, mogę po prostu przeciągnąć źródło danych z przybornika i utworzy to wszystko dla mnie. Zdaję sobie sprawę, że to prosty przykład, ale kluczem jest użycie wiązania danych. Od kilku miesięcy rozmawiamy o silnie typizowanym zestawie danych, o tym, jak go używać i gdzie współdziała z innymi kontrolkami. Zestawy danych, sposób ich działania w odniesieniu do źródeł powiązań, adapterów i widoków siatki danych. Po przekazaniu tego projektu spodziewałem się pytań o to, jak je wdrożyć, ponieważ dla mnie jest to sposób na zrobienie tego. To, co stało się później, po prostu mnie powaliło: instancja adaptera z silnie wpisanego zestawu danych została utworzona w zdarzeniu aktywacyjnym formularza, została utworzona tabela i wypełniona danymi. Następnie utworzono pętlę, aby ręcznie dodać wiersze do **listbox** z tej tabeli. Na koniec zachowano zmienną, która umożliwiała wyszukiwanie w celu określenia identyfikatora rekordu w celu aktualizacji, jeśli jest to wymagane. Jak modyfikują rekordy, o które pytasz? To też było moje pierwsze pytanie. Nie uwierzysz, jakie to proste, wystarczy, że klikniesz dwukrotnie, a oni wpiszą w **wyskakującym okienku** nową wartość, na którą chcesz ją zmienić. Jako operator wprowadzania danych wszystkie modalne wyskakujące okienka doprowadzałyby mnie do szaleństwa. Ostateczne rozwiązanie przekracza 100 wierszy kodu, które należy zachować. Więc martwię się, że nic z tego nie dociera... departament ma tylko 20 godzin tygodniowo swojego czasu. Aż do zeszłego tygodnia dostawaliśmy tylko 4-5 godzin tygodniowo, jeśli mam szczęście. W zeszłym tygodniu miałem szczęście, że dostałem 10. * * * **Pytanie** **CO MAM ZROBIĆ?!** Zostały mi 4 tygodnie do wyjazdu, a oni w pełni "obsługują" tę aplikację. Uwielbiam tę pracę i możliwość, jaką mi dała, ale nadszedł czas, abym rozwinęła skrzydła i znalazła coś nowego. Nie jestem w żaden sposób, kształtem ani formą przekonany, że są gotowi do przejęcia. Czuję, że zamiennik ma techniczną możliwość „rozwiązania tego”, ale zamiast się uczyć, po prostu piszą kod, który robi to wszystko ręcznie. Jeśli zamiennik w końcu chce inaczej kodować, tak długo, jak działa, nie mam nic przeciwko, ponieważ wygląda to przerażająco. Jednak aby wesprzeć to, co zaprojektowałem, **MUSZĄ** zrozumieć, jak to działa i jak użyłem kontrolek i struktury, aby „magia” się wydarzyła. Ten projekt ma około 40 formularzy, bazę danych z ponad 30 nieparzystymi tabelami, wyzwalaczami i procedurami składowanymi. Wiąże pracę, faktury, umowy, prognozy... to nie jest takie proste, jak to było trzy lata temu, kiedy zaczynałem ten projekt, a dział jest teraz w stanie bez niego przetrwać. Jak, u licha, mogę osiągnąć jedno z poniższych?: * Egzekwować standardy lub zrozumienie w projektowaniu zgodności, gdy kierownik działu ciągle mówi im, że mogą to zrobić tak, jak chcą * Znajdź sposób na zaangażowanie zastępcy w aktywne uczenie się frameworka i projekt systemu, który musi być wspierany dla * Z wdziękiem poinformuj sr. zarządzania, że 5-9 godzin tygodniowo to po prostu za mało czasu, aby dowiedzieć się o dziale, istniejących procesach, aplikacjach, które wymagają wsparcia ORAZ określić, gdzie idą potencjalne ulepszenia systemu... Tak, wiem, że to jest ściana sms, dziękuję za przeczytanie mnie, ale po prostu nie wiem, co powinienem robić. Dla mnie ta praca jest potworem odniesienia i sprawy wyglądałyby bardzo źle, gdybym odszedł i wszystko się rozpadło. Jak sobie z tym poradzić?


title: Muszę iść na kompromis: DRY czy Command-Query-Separation?

text: Niedawno przeprowadzałem refaktoryzację metody, która była zarówno poleceniem, jak i metodą zapytania. Po rozdzieleniu go na metodę jednego polecenia i jedną metodę zapytania odkryłem, że w kodzie jest teraz wiele miejsc, w których wywołuję polecenie, a następnie pobieram wartość z zapytania, co wydaje się naruszeniem zasady DRY. Ale gdybym miał owinąć ten wspólny kod w metodę, ta metoda byłaby zarówno poleceniem, jak i zapytaniem. Czy to jest dopuszczalne?


title: Nowe węzły dołączające do rozproszonego algorytmu genetycznego

text: Jestem trochę rozdarty, co zrobić, aby zaimplementować mój problem z rozproszonym algorytmem genetycznym. Chciałbym mieć możliwość łączenia się i rozdzielania węzłów do woli, a nie wyłączania całego systemu. Ale to wprowadza problem niedopasowania pokoleń. Często symulacja algorytmu genetycznego jest ograniczona do określonej liczby pokoleń i jeśli mam węzeł, który ma 75 na 100 pokoleń, a do klastra dołącza zupełnie nowy węzeł, nie jestem pewien, czy powinienem go sfałszować i zacząć od 75 i skopiuj jeden z pozostałych węzłów jako punkt początkowy lub rozpocznij od 0 i potencjalnie opóźnij wyniki do końca wykonywania nowego węzła. Miałem nadzieję, że ktoś ma jakiś wkład w to, co może postrzegać jako problemy, oprócz długiego czasu oczekiwania z tym nowym węzłem, jeśli zacznę od 0, staram się pomyśleć o tym, co może pójść nie tak w obu podejściach poza tym.


title: Czy muszę publikować kod źródłowy, ponieważ używam JavaFX?

text: Używam JavaFX dla gui mojej aplikacji. Jego licencją jest GPL+Linking Exception. GPL wymaga ode mnie wydania mojego kodu źródłowego. Ale jaki jest wyjątek łączenia? (Po prostu używam go jako biblioteki. Nie modyfikuję ani nie używam jego kodu źródłowego.)


title: Informacje o prawach autorskich: co się stanie, jeśli zmienię nazwisko? A jeśli ktoś inny ma dokładnie to samo imię?

text: Dodaję informacje o prawach autorskich do wszystkich moich plików z kodem źródłowym: Copyright (C) 2013 Moje-Imię Moje-Nazwisko 1. Ale co, jeśli ktoś inny ma również imię _Moje-Imię Moje-Nazwisko_? Co o tym myślą sądy? Skąd mieli wiedzieć, kto jest prawdziwym autorem? Czy jest coś, co mogę/powinienem zrobić w tej sytuacji? (Żeby wiedzieli na pewno) 2. Co jeśli zmienię nazwisko. Skąd więc inni wiedzą, że nadal jestem właścicielem praw autorskich? Czy jest coś, co mogę/powinienem zrobić, aby uniknąć problemów z prawami autorskimi po zmianie nazwiska? **Przykład** tego, kiedy powyższe może być interesujące: ktoś bierze ślub, zmienia nazwisko i przeprowadza się pod nowy adres. Następnie, nawet jeśli przesłał swój kod źródłowy do Urzędu ds. Praw Autorskich w USA, zostało to zrobione przy użyciu jego starego nazwiska i adresu. Teraz jednak ma nowe nazwisko i adres. Ale być może są inni ludzie, którzy mają stare nazwisko (ale nie także stary adres). (W moim kraju na każde imię + drugie + nazwisko zwykle jest wiele osób o takim pełnym imieniu.) Podobno ludzie uważają to za dziwne pytanie, ale czytałem o dość wielu bardzo decyzjach podejmowanych w sądach, np. ktoś pozywający o gorącą kawę i wygrywający miliony dolarów.


title: Określanie formatu, w jakim chcę otrzymać odpowiedź przez POST

text: Dobrą praktyką jest umożliwienie klientowi określenia formatu w Web REST API: GET /api/items/123.csv Jednak nie tylko `GET` może zwrócić jakąś odpowiedź, ale `POST` również może to zrobić Status: 201 Created { mgs : "Twój przedmiot został utworzony pomyślnie", href: "/example.com/items/123" } Jak powinien wyglądać `URI` dla żądania `POST` (`PUT` lub cokolwiek, ale nie `GET`), które zwraca odpowiedź, aby klient mógł określić format, w jakim ma być odpowiedź? Tak?: POST /api/items/.csv Albo załóżmy, że wystąpił błąd, gdy klient wysyła żądanie POST, a serwer musi o tym poinformować klienta: Status: 400 Bad Request { mgs: "to jest złe żądanie" , devMessage: "jest źle, ponieważ...." friendlyMessage: "zdarzyło się coś złego..." } W jakim formacie ma odpowiadać, dlaczego i jak określić go jako klienta? PS - Wiem o REST - Kompromisy między negocjacją treści za pomocą nagłówka Accept a rozszerzeniami


title: Dlaczego java.util.Calendar używa statycznych metod fabrycznych?

text: Uważa się, że lepiej mieć osobną klasę fabryki niż metody statyczne w tej samej klasie. Zobacz to pytanie. Ale standardowe API wykorzystuje oba podejścia. Oddzielna fabryka: DatatypeFactory.newInstance().newXMLGregorianCalendar(...) Metody statyczne w tej samej klasie: Calendar.getInstance(...) Dlaczego? W jakim przypadku posiadanie metod statycznych byłoby lepsze niż posiadanie oddzielnej fabryki?


title: Programowanie kontraktu - procent depozytu i metody płatności? Wszelkie porady są mile widziane

text: Jestem całkiem nowy w pracy kontraktowej i wreszcie wylądowałem przyzwoicie płatny projekt. Facet faktycznie zaproponował, że wpłaci depozyt i zastanawiam się, o jaki procent powinienem poprosić. Myślałem o około 25%, ponieważ nie jest to strasznie duży projekt (tylko około 20 godzin). Nie mogę też korzystać z PayPala (miałem z nimi straszne doświadczenia z zamrażaniem funduszy bez powodu), więc zastanawiam się, czy ktoś może zaproponować klientowi inne metody wysłania depozytu/płatności. Chcę im to ułatwić.. dzięki za wszelkie rady


title: Jak testować jednostkowo bez mocków i nie być przywiązanym do konkretnych implementacji interfejsu

text: Uważam się za „prześmiewcę” w debacie „naśladowca” i „klasyk”, ale staram się zrozumieć inny punkt widzenia. Wyobraź sobie, że mam tę klasę, w której konkretna instancja `IDependency` jest wstrzykiwana przez kontener IoC. `IDependency` nie ma dostępu do zdalnego zasobu, takiego jak baza danych lub usługa sieciowa (w takim przypadku na pewno bym to przedrzeźniał), jest to po prostu kolejna klasa zawierająca pewną logikę biznesową. public class UnitUnderTest { public UnitUnderTest ( zależność IDependency ) { } } Korzystając z tego wzorca, mogę zmienić konkretną implementację `IDependency` poprzez zmianę klasy wstrzykiwanej przez kontener IoC. Nie jestem _związany_ z żadną konkretną implementacją. Gdybym miał przetestować tę klasę bez naśladowania `IDependency`, czy nie musiałbym tworzyć instancji mojej _prawdziwej_ `IDependency`, aby przekazać ją do konstruktora? public class My_Unit_Test() { IDependency ConcreteDependency = new ConcreteDependency(); var unitUnderTest = new UnitUnderTest(concreteDependency); } W tym przykładzie, jeśli napiszę zamiennik do `ConcreteDependency`, musiałbym zmienić nie tylko moją konfigurację kontenera IoC, ale wszystkie moje testy jednostkowe używające `ConcreteDependency`. Lub… czy używam tego samego kontenera IoC w moich testach jednostkowych (co wydaje się, że jest to sprzeczne z ideą testowania rzeczy w izolacji)?


title: Utrzymywanie aktualności dokumentacji/instrukcji w szybko zmieniającym się projekcie

text: ### Tło Pracuję nad stosunkowo dużym projektem (~570 KLOC) w stosunkowo małym zespole (wcześniej 5 programistów, teraz 2). Duże ilości kodu mogą pojawiać się, a następnie znikać w ciągu kilku miesięcy; na przykład kilka lat temu bank inwestycyjny uruchomił nową giełdę, a następnie zamknął ją 7 miesięcy później — tysiące LOC zostało napisanych w celu obsługi interfejsu tej giełdy, a następnie usuniętych. Aby pomóc zespołom operacyjnym i wspierającym, a także nowym programistom, mamy wewnętrzną wiki (zmodyfikowaną DokuWiki, jeśli ma to znaczenie) z takimi rzeczami, jak specyfikacje retrospektywne (niestety piszemy specyfikacje na bieżąco) oraz różne ustawienia, flagi, a kody statusu oznaczają i robią. ### Problem Ze względu na szybkie tempo rozwoju, duża część naszej zawartości wiki staje się przestarzała w ciągu miesięcy, jeśli nie tygodni. I nie jest to tak proste, jak aktualizacja pojedynczej sekcji wiki dotyczącej zmienianego komponentu; z licznymi powiązanymi komponentami, zmiana jednej rzeczy, na przykład ustawienie w komponencie handlu algorytmicznego, może wymagać przejrzenia setek odniesień do tego ustawienia i/lub komponentu na wiki, z których wiele może wymagać aktualizacji. Myślę, że główny problem ma charakter motywacyjny. Deweloperzy wiedzą, że wszystko, co napiszą, ma duże szanse, że wkrótce stanie się przestarzałe, więc rzadko warto (ani nie jest to praktyczne) przeszukiwać wiki w celu aktualizacji wszystkich istotnych elementów, zwłaszcza gdy 2 lub 3 dni później może pojawić się prośba aby zmienić, powiedzmy, format ustawienia, a nawet jego funkcjonalność. Prowadzi to do braku zaufania do wiki — nawet wśród nas nigdy nie jesteśmy pewni, czy to, co czytamy, rzeczywiście opisuje najnowszą funkcjonalność. I to, jak sądzę, ostatecznie prowadzi do błędnego koła podobnego do teorii rozbitych okien: postrzeganie nieporządku demotywuje wszelkie działania mające na celu przywrócenie porządku. ### Pomysł Mój pomysł polegał na migracji wiki do czegoś bardziej podobnego do Stack Exchange — na przykład dostosowywania Question2Answer. Z dwóch powodów: 1. Mam nadzieję, że umieszczenie wszystkich informacji w formularzu pytań i odpowiedzi zachęci do pisania dokumentacji z myślą: „Na jakie pytanie staram się odpowiedzieć? Komu staram się pomóc?” Nie ma to jednak związku z tym postem. 2. Co ważniejsze, moim pomysłem jest użycie tagów — znacznika dla każdego komponentu, każdego ustawienia, każdego terminu biznesowego itd. — aby _łatwiej_ znaleźć _posty_, które wymagają aktualizacji, niż przeglądać każde wystąpienie słowa kluczowego — oraz wyszukiwanie słów kluczowych jest już samo w sobie bez kontekstu. ### Pytanie Zanim jednak zrealizowałem ten pomysł, pomyślałem, że przyda mi się rada, jeśli ktoś inny pracował w takim kontekście. Jestem otwarta na wszelkie pomysły i alternatywy! _Jak zapewnić aktualność wysoce powiązanej dokumentacji w szybko zmieniającym się projekcie?_


title: Sprawa LLVM: czy sukces zawdzięczamy algorytmom?

text: Nie jestem pewien, czy to subiektywne pytanie, mam nadzieję, że nie, ale nie jestem biegły w LLVM, więc tylko się zastanawiam: jak to się stało, że stał się tak popularny i tak szeroko stosowany w branży? Czy algorytmy optymalizacji używane w gcc/icc/msvc były po prostu gorsze niż te z LLVM? Czy to możliwe, że projekt uniwersytecki zdołał prześcignąć tak znanych i długoletnich kompilatorów? Wiem, że LLVM jest modułowy, ale czy projekt może być przyczyną tak dużego sukcesu? Nie rozumiem prawdziwych przyczyn tego, jest to prawdopodobnie związane z subiektywnym pytaniem typu „czy sukces oprogramowania jest zawsze związany z nowym lub pół-nowym algorytmem, który coś przyspiesza?” ale jeśli to możliwe, chciałbym uzyskać obiektywne powody mojego pierwszego pytania


title: Skrypt danych wdrażania TFS SQL

text: Używamy TFS i SQL Server 2005 (chcemy uaktualnić do SQL Server 2012, jeśli to coś zmieni). Przechowujemy nasz schemat bazy danych w projekcie Visual Studio Database (VS 2010). Po udostępnieniu kodu do działania obecnie używamy projektu bazy danych programu Visual Studio do tworzenia skryptu dla wszystkich zmian w schemacie. Problem, który otrzymujemy, polega na tym, że musimy zmienić lub dodać do tego skryptu, aby dodać/naprawić dane do wdrożenia. Na przykład, jeśli dodamy nową kolumnę nie dopuszczającą wartości null do istniejącej tabeli, musimy wypełnić tę kolumnę danymi podczas wstawiania. Innym razem możemy chcieć utworzyć nowe rekordy w tabelach transakcyjnych (np. przypisać określonych użytkowników do nowego dostępu bezpieczeństwa). Czy projekty baz danych programu Visual Studio mają sposób na przechowywanie tych skryptów, które trzeba uruchomić tylko raz i w jakiś sposób uwzględnić je w kompilacji? Czy wie, które skrypty należy uruchomić (na przykład, jeśli wstawiamy domyślne dane, nie chcemy tego robić po raz drugi)? LUB Czy istnieje lepszy sposób zarządzania tymi skryptami?


title: Wzorce do refaktoryzacji wspólnego kodu w oprogramowaniu wieloplatformowym

text: Mam aplikację Django i aplikację PyQt, które współdzielą dużo kodu. Duża część aplikacji PyQt jest dosłownie kopiowana z widoków aplikacji Django. Jako, że jest to gra mam już moduł engine.py, który udostępniam między dwiema aplikacjami, ale zastanawiałem się jak przebudować warstwę środkową (co w Django odpowiada największej części widoków minus zwrot HttpResponse część) we własny składnik. W aplikacji webowej są to komponenty klasycznej aplikacji Django (z jedynym wyjątkiem, że nie korzystam z modeli): * silnik gry * dyspozytor url * szablon * widoki Moja aplikacja PyQt jest podzielona na : * silnik gry * definicja UI, w której deklaruję komponenty UI i reaguję na zdarzenia (w zasadzie zajmuje to miejsce szablonu i dyspozytora url w aplikacji Django) * kontroler, w którym tworzę instancję obiektu window i odtwarzam metody mapujące widoki w aplikacji Django


title: Potrzebuję pomocy przy tworzeniu drzewa niebinarnego (lub innej struktury danych, która lepiej rozwiąże mój problem)

text: Mam około dziesięciu list liczb i kilka ciągów. Każda lista ma około <= 30K linii. Każdy wiersz na liście ma odrębny numer. Muszę stworzyć skuteczny sposób znajdowania wszystkich linii na każdej liście, które mają ten sam numer 'kontroli' (lub klucz dla facetów z dB) i porównywania tego, co jest w ich częściach łańcuchowych. Piszę to w Javie. Podam rzeczywisty przykład tego, co próbuję zrobić… Mam dziesięć list, z których każda zawiera około 30 000 rekordów. Każdy rekord wygląda tak: 901234(klucz)-1,0987(zmiennoprzecinkowy)-kadfnfj(ciąg opisu)-01/01/01(data) i wszystkie listy mają podobne rekordy niektóre klucze mogą być dostępne na niektórych listach, ale nie są gwarantowane!..Chcę znaleźć sposób na przeszukanie wszystkich list dla jednego konkretnego klucza i porównanie towarzyszącej wartości zmiennoprzecinkowej. Ze względu na rozmiar list martwię się o wykorzystanie pamięci, a ze względu na ilość rekordów martwię się o wydajność zastosowanej struktury danych. Myślałem o użyciu drzew, ale moje komórki mózgowe są teraz prawie spalone. Potrzebuję pomocy.


title: Czy istnieją dobrze znane konwencje kodowania PowerShell?

text: Czy istnieją jakieś dobrze zdefiniowane konwencje podczas programowania w PowerShell? Na przykład, czy w skryptach, które mają być utrzymywane długoterminowo, musimy: * Używać prawdziwej nazwy lub aliasu polecenia cmdlet? * Określ nazwę parametru polecenia cmdlet w całości lub tylko częściowo (`dir -Recurse` kontra `dir -r`) * Podczas określania argumentów ciągów dla cmdletów należy je ująć w cudzysłów (`New-Object 'System.Int32'` a ` New-Object System.Int32` * Czy podczas pisania funkcji i filtrów określasz typy parametrów? * Czy piszesz polecenia cmdlet w (oficjalnej) poprawnej wielkości liter? * Dla słów kluczowych takich jak `BEGIN...PROCESS...END` wykonaj piszesz je tylko wielkimi literami?Wydaje się, że MSDN nie ma dokumentu konwencji kodowania dla PowerShell, podczas gdy taki dokument istnieje na przykład dla C#.


title: Dlaczego F# zawiera zarówno moduły, jak i przestrzenie nazw?

text: Założono, że F# zawiera słowo kluczowe module oprócz słowa kluczowego namespace ze względu na wsteczną kompatybilność z OCaml. Czy to jedyny powód włączenia słowa kluczowego module, czy też istnieją inne powody, dla których moduł został dodany?


title: Jakie są komponenty architektury serwera WWW PHP i cel każdego z nich?

text: Poniżej znajduje się obraz podstawowej architektury serwera WWW PHP: ![Architektura serwera WWW PHP](http://i.stack.imgur.com/2H0eh.gif) Czy ktoś mógłby wyjaśnić kilka dostępnych komponentów i sposób ich interakcji? Bardziej interesuje mnie sposób, w jaki **PHP Core** działa i odnosi się do innych komponentów, więc nie wahaj się szczegółowo omówić tego punktu. Ten diagram został zaczerpnięty stąd.


title: Kiedy używać REST do obsługi żądań, a kiedy używać AJAX do obsługi żądań

text: Na mojej stronie internetowej, jeśli chcę wyświetlać dynamiczne listy rozwijane (np. nazwy miast na podstawie wybranego kraju), mogę to zrobić za pomocą AJAX. Ale mogę to również zrobić za pomocą wywołania REST. Więc czego powinienem użyć? Mój problem polega na tym, że naprawdę nie rozumiem różnicy między REST a jakimkolwiek innym żądaniem przeglądarki HTTP. Przyjrzałem się formalnym definicjom REST i wydaje się, że jest to identyczne z żądaniem HTTP. Czym więc REST z natury różni się od AJAX?


title: Standardy organizacyjne dla dużych programów

text: Jestem jedynym programistą w firmie, w której pracuję. Zatrudniono mnie zaraz po studiach i pracuję tu od kilku lat. Kiedy zaczynałem, każdy zarządzał własnymi danymi tak, jak uważał za stosowne (dużo szafek na dokumenty). Do niedawna zajmowałem się tylko małymi samodzielnymi projektami, aby pomóc w prostych przepływach pracy. Na początku roku poproszono mnie o wymianę oprogramowania HR. Użyłem SQL Server, Entity Framework, WPF wraz z wzorcami MVVM i Repository/Unit of work. To był wielki hit. Byłem bardzo zadowolony z tego, jak poszło i był to bardzo solidny program. W związku z tym mój pracodawca poprosił mnie o rozszerzenie tego programu do korporacyjnego pulpitu nawigacyjnego, który śledzi wszystkie ich różne korporacyjne domeny danych (osoby, wynagrodzenie, pojazdy / majątek, statystyki itp.). Używam zintegrowanego uwierzytelniania, a ze względu na początkową wersję HR , mogę mapować użytkowników do osób na stanowiskach, dzięki czemu wiem, kto jest kim, kiedy otwierają program, i mogę pokazać każdej osobie dostosowany pulpit nawigacyjny z uwzględnieniem ich funkcji roboczych. Obawiam się, że nigdy nie pracowałem nad tak dużym projektem. Sam planuję, spotykam się z użytkownikami końcowymi, rozwijam, dokumentuję, testuję i wdrażam. Jestem w trakcie drugiego dodatku i widzę, że mój kod jest zdezorganizowany. Nadal jest dobrze zaprogramowany, borykam się tylko z organizacją przestrzeni nazw, klas i modelu bazy danych. Czy są jakieś dobre wskazówki, których należy przestrzegać, które pomogą mi wszystko uporządkować? Tak jak mam to teraz, mam foldery na dane, repozytoria/jednostki pracy, widoki, modele widoków, zasoby XAML i różne narzędzia. Czy powinienem utworzyć foldery nadrzędne dla każdej domeny danych? Czy powinienem tworzyć oddzielne modele EF na domenę zamiast tego, który mam dla całej bazy danych? Czy istnieją jakieś standardy organizowania dużych programów, które obejmują wiele domen danych? Byłbym wdzięczny za wszelkie sugestie.


title: Jakich narzędzi można użyć, aby ułatwić przeglądy kodu po zatwierdzeniu?

text: Oceniałem wiele narzędzi do przeglądu kodu (głównie darmowych), ale wszystkie wydają się być nastawione na przeglądanie łat przed ich zatwierdzeniem. To nie pasowałoby do naszego przepływu pracy z Subversion, więc szukałem alternatyw, które lepiej wspierają przeglądanie zatwierdzonych wersji zamiast tylko różnic. Jakieś zalecenia? Wolałbym darmowe lub niedrogie narzędzia.


title: Dlaczego C jest tak wysoko w indeksie popularności TIOBE, podczas gdy C++ też tu jest, ale nie tak popularne?

text: Nie mogę się nad tym pogodzić. Skoro C jest tak często używane, ale C to nie C++, czy ktoś może mi wyjaśnić najważniejsze powody, dla których C jest częściej używany niż C++? Gdzie jest napisany cały ten kod C? Czy chodzi o sektor przemysłowy, który w dużym stopniu opiera się na programowaniu imperatywnym, ale nie może pokryć kosztów implementacji lub dostrojenia kompilatorów C++? Czy jest tak wielu hakerów jądra? Czy tiobe ma znaczenie? Nigdy nie natknąłem się na żaden artykuł ani post komentujący lub wyjaśniający, jak wygląda ranking singular tiobe i co właściwie mówi o tym, co branża lubi, i co może powiedzieć o tym, z czego faktycznie korzysta branża, aby określić rzeczywiste potrzeby branży. Trudno to wytłumaczyć. Po prostu uważam, że to dziwne, że wiele firm chce pracy w C#, php, java, a nie w C lub C++ (po prostu odnoszę tutaj moje bezrobocie i moje rozmowy kwalifikacyjne), nawet jeśli te prace w C/C++ są gówniane. Zamiast tego wziąłbym te. A może to oznacza, że szum językowy odgrywa tutaj dużą rolę?


title: Co to jest manifest i kiedy należy go używać?

text: Słyszę użycie manifestów na różne sposoby, ale nigdy nie miałem potrzeby – o ile mi wiadomo – użyć któregoś z nich. Czym są i jak są używane? EDIT: Ciekawi mnie ogólnie manifesty w dowolnym języku.


title: Dlaczego powinienem używać migracji funkcji w codeigniter?

text: Co jest złego w używaniu tabel bazy danych z phpmyadmin lub mysql? Jakie są korzyści, jeśli użyję „migracji”?


title: Czy możemy stworzyć program, który napisze swój kod źródłowy?

text: Czy możemy stworzyć program, który wypisuje swój kod źródłowy, co jeśli my (lub sam program) skompilujemy, to nowy program będzie miał **tę samą dokładną funkcjonalność** co oryginalny program? Więc jakoś reprodukowałby się w doskonałych klonach, które też potrafią się rozmnażać. Program **nie powinien używać żadnych zewnętrznych plików**, w przeciwnym razie byłby naprawdę łatwy do zaimplementowania: wystarczy stworzyć program, który czyta plik, a nie zapisuje go, a następnie skopiować i wkleić kod źródłowy do pliku zewnętrznego. Moją pierwszą próbą było napisanie programu, który ma funkcję drukowania, a nie kopiuje i wkleja kod źródłowy do tej funkcji drukowania, ale ten program może odtworzyć się tylko raz i nie ma takiej samej funkcjonalności, ponieważ drugi program nie może wydrukować kod źródłowy.


title: Dlaczego miałbyś uniemożliwić wyszukiwarce indeksowanie twojego serwera deweloperskiego?

text: Słyszałem, że nie należy pozwalać wyszukiwarkom na indeksowanie serwera deweloperskiego. Podane powody to: * Kary za powielanie treści * Klienci dokonujący zakupów z niezabezpieczonej domeny (w przypadku eCommerce) Te problemy mogą wydawać się stosunkowo niewielkie i nie jestem pewien, czy wystarczyłoby przekonać kogoś do podjęcia wysiłku, aby zablokować serwer . Czy nie ma szerszych obaw o bezpieczeństwo? Co należy zabezpieczyć i dlaczego?


title: C: Jakie jest dobre źródło do nauczania standardowych/podstawowych konwencji kodu osoby, która dopiero uczy się języka?

text: Udzielam korepetycji komuś, kogo można określić jako nowicjusza w języku C. Zrozumiałe, że nie wie ona zbyt wiele o ogólnie stosowanych konwencjach kodowania, dlatego wszystkie jej programy mają tendencję do używania zmiennych jednoliterowych, niedopasowanych odstępów/wcięć itp. bardzo trudno jest czytać/debugować jej starania. Moje pytanie brzmi, czy istnieje link/zestaw wytycznych i przykładów, których może użyć do przyjęcia podstawowych konwencji kodu? Nie powinno być zbyt tajemnicze, by ją odstraszyć, ale na tyle inkluzywne, aby omówić podstawy (aby nikt nie skrzywił się, patrząc na kod). Jakieś sugestie ?


title: Być surowym czy pragmatycznym?

text: Zaczynam zdawać sobie sprawę, że tworzenie oprogramowania to (między innymi) proces ciągłego zadawania sobie pytań. Pytania dotyczące jakości kodu, oddzielenia obaw, minimalizacji zależności, ... Ale główne pytanie brzmi: jak daleko można się posunąć, nie wylądując w szpitalu psychiatrycznym? Ubiegam się o nową pracę. Wczoraj byłem u potencjalnego przyszłego pracodawcy, który chciał przetestować moje umiejętności programistyczne. Jednym z ćwiczeń było: wyjaśnij, co robi ten kod. Przejrzałem kod aplikacji (winforms w vb.net), który oni tworzą (jest to aplikacja administracyjna dla szpitala). To dało mi możliwość zobaczenia, jak podchodzą do rzeczy i było to raczej rozczarowujące. Kilka przykładów: * Widziałem gdzieś: Zadzwoń [tu wstaw nazwę podprogramu] -> Uderzyło mnie: czy to nie jest coś z VB6? * Mają osobną warstwę danych, używającą ado.net, ale jedna metoda, którą musiałem zbadać, zwraca zbiór danych do warstwy wywołującej. Tak więc oddzielna warstwa danych lub nie, aplikacja jest powiązana z ado.net (co również nigdy nie może stanowić problemu, jeśli nigdy nie zmienią podejścia do dostępu do danych). * Ten zestaw danych jest odczytywany tak, jak jest, więc nadal jest to podejście zorientowane na dane (oczywiście można się spierać, ile logiki/zachowania można umieścić w klasach takich jak „Pacjent” lub „LabAnalysisRequest”. * Uważam również, że mam widziałem konstrukcję zapytania sql przez łączenie łańcuchów * Używają procedur składowanych (co dla mnie oznacza: rozproszenie logiki) * brak wzmianki o widokach/kontrolerach: wszystko jest sterowane formularzami * Najbardziej brzydką rzeczą, jaką widziałem, było: Jeśli TestEnvironment.IsTesting then someVar = [jakaś wartość zakodowana na sztywno] else someVar = [jakaś wartość pobierana dynamicznie] end if [reszta funkcji tutaj] Wszystko różni się od tego, czego nauczyłem się w szkole: (niezależna od trwałości) warstwa domeny, warstwa trwałości , warstwa prezentacji, testowanie jednostkowe, ... Przeformułuję więc pytanie: jak fundamentalne lub dogmatyczne powinno być, w jakim stopniu programista powinien trzymać się swoich zasad, czy po prostu pisać kod, który spełnia swoje zadanie?


title: Co zrobić, gdy Twój kolega z pracy nie rozumie projektu, który stara się utrzymać?

text: Projekt oprogramowania, nad którym pracuję, angażuje mnie i innego programistę. Projekt obejmował backend silnika z frontendem MVC. Początkowo wykonałem dużo pracy nad projektem, więc ustaliłem kilka prostych metodologii projektowania, głównie związanych z abstrakcją i strategią szablonów. Od dłuższego czasu nie korzystam z backendu silnika i pracuję nad stroną internetową. Jednak nadal interesowałem się silnikiem, ponieważ zostałem poinformowany, że w pewnym momencie mogę do niego wrócić. Projekt jest pod bardzo napiętym terminem, więc wszyscy spieszymy się jak stworzeni, aby go ukończyć zarówno z przodu, jak i z tyłu. Nie uważam się za wielkiego programistę, więc nigdy nie próbuję narzucać ludziom żadnego konkretnego projektu lub zestawu metodologii, ponieważ nie zawsze jestem pewien, czy mam rację i lubię, gdy inni ludzie oferują swoje opinie, aby spróbować i znaleźć lepsze rozwiązania. Zauważyłem jednak zmiany wprowadzane w tym kodzie silnika, które naprawdę zaczynają mnie irytować. Kiedy skonfrontowałem się z deweloperem, aby zasugerować, aby wykonał pracę w inny sposób, powiedział, że nie widzi sensu, ponieważ wydaje się, że biorąc pod uwagę napięte terminy, wydaje się, że nie przyniesie to większych korzyści. Musiałem spróbować wyjaśnić, że wprowadzony przez niego haack może oznaczać dalszy rozwój po wydaniu i nie sądziłem, że to w porządku, aby inni podjęli tę lukę, kiedy moglibyśmy to teraz naprawić. Spędziłem około 30 minut przechodząc przez to, co zrobiłem, a na koniec poprosił mnie o napisanie kodu, aby mógł go po prostu skopiować. Podstawą konfiguracji początkowej było: * Klasa abstrakcyjna x * Abstrakcyjna klasa fabryczna do tworzenia konkretnych instancji x To, co się wydarzyło, polegało na tym, że umieścił kilka instrukcji if, które można łatwo umieścić jako metody wirtualne/abstrakcyjne w klasie abstrakcyjnej, a następnie odpowiednio zaimplementowane, ponieważ nowa zmiana przebiegała zgodnie z tą samą zasadą, co inne metody w klasie abstrakcyjnej. Wydaje mi się to trywialne, jednak nie mógł tego nawet pojąć, nawet gdy pokazałem mu zajęcia. Teraz moje pytanie brzmi: 1. Czy to niesprawiedliwe założenie, że powinien był pojąć tę koncepcję. Zdaję sobie sprawę, że mamy napięte terminy, ale pomyślałem, że to trywialne. Programista ma być co najmniej na poziomie średniozaawansowanym. 2. Zdarzyło się to w wielu miejscach i ciągle próbowałem go zmienić, ale wydaje się, że nie. Czy powinienem to po prostu zignorować? 3. Czy powinienem poruszyć ten problem gdzie indziej, czy po prostu go ssać, a kiedy wracam do projektu, po prostu zmieniaj te wszystkie rzeczy. Jego część projektu nie zostanie ukończona, dlatego będę musiał wrócić i mu pomóc. Ja też tego nie chcę, ponieważ wziął projekt o niezbyt świetnej, ale dobrej architekturze i naprawdę włożył dużo niechlujnego kodu, który często nie podążał za tym, co chciał osiągnąć. Jeśli pytanie jest zbyt niejasne lub niechętne, daj mi znać, a postaram się odpowiednio zmienić. ZMIENIONO: Oczekuje się, że projekt będzie kontynuowany po początkowym terminie, ponieważ zaplanowano już prace uzupełniające i prace, do których nie pasowaliśmy i które uzgodniono, że zostaną wdrożone później.


title: Jak wizualnie dokumentować interaktywne interfejsy użytkownika w celu szybkiej konsumpcji?

text: Piszę dokumentację dla jakiegoś interaktywnego interfejsu użytkownika Ajax, ale zamiast pisać wszystko słowami, wolałbym dostarczać diagramy, które są szybciej zużywane niż całe akapity tekstu. Dostarczyłem schemat przepływu nawigacji po stronie, ale jest to bardzo wysoki poziom, zanim przejdziesz do poszczególnych stron i ich wewnętrznych funkcji. ## Przykład Załóżmy, że muszę udokumentować typowy panel wyszukiwania: * jest domyślnie zwinięty i można go rozwinąć po kliknięciu * ma podstawowe pola wyszukiwania, które zapewniają podstawowe kryteria wyszukiwania w mojej encji modelu * ma również zaawansowane pola, które pokazują się po kliknięciu konkretny link, który rozszerza wyszukiwanie o dodatkowe pola * ma dwie akcje Wyszukaj i Resetuj, które są w zasadzie oczywiste, ale wiążą się z nimi określone zachowania. Wiem, że powiesz, że to już jest dokumentacja, ale zwykle nie jest to takie proste i trywialne. Panel wyszukiwania to tylko przykład. Widzę, że większość moich interfejsów (lub komponentów interfejsów) wymaga dwóch rodzajów dokumentacji: 1. **właściwości** związane z zawartymi kontrolkami (tj. rozwijane pole z tymi i tymi wartościami, których ta konkretna jest wybrana domyślnie) 2. **działania i zachowania** opisujące, co się dzieje, gdy użytkownik wchodzi w interakcję z kontrolkami powiązanymi z tymi właściwościami ### Jaki byłby najlepszy format diagramu lub dokumentacji do opisania tego rodzaju interaktywnych interfejsów, aby można je było łatwo i szybko wykorzystać realizatorzy?


title: czy narzędzia asp.net mvc pozwalają tworzyć witryny szybciej niż frameworki php?

text: Generalnie używam cakephp, ale po obejrzeniu niektórych filmów MS z MVC3 wydawało się, że poszło dość szybko. Rozumiem intellisens w klasach prac VS2010 i dla baz danych. Wygląda na to, że gdy poznasz podstawy edytora i frameworka, będzie to bardzo przydatne. Moje pytanie brzmi, czy rzeczy takie jak intellisense faktycznie przyspieszają rzeczy zauważalnie?


title: Za dużo do nauczenia, radzenie sobie z przytłaczającą różnorodnością technologii

text: Niedługo kończę studia i już pracuję jako web developer w naszym bibliotecznym dziale IT. Kiedy patrzę na oferty pracy, jestem całkowicie przytłoczony różnorodnością dostępnych technologii. Niektóre firmy dbają o matematykę + algorytmy + struktury danych. Niektórych zależy na doświadczeniach w stosie technologicznym XYZ. SQL, css, html, frameworki, javascript, wzorce projektowe itp.. itd.. itd. W pewnym momencie zdałem sobie sprawę, że po prostu muszę zacząć od opanowania podstaw, aby stać się użytecznym w lepszym miejscu i stamtąd. Ale umiejętności, które pozwolą mi wkroczyć do drzwi, są różne i po prostu nie mam czasu, aby nauczyć się wszystkiego. Jak radzisz sobie z tym problemem? Jaki jest niezbędny stos, aby stać się zatrudnialnym? Powiedz w php lub ror arena. Być może mądrzejszym posunięciem byłoby przejście na stos technologii o mniejszej różnorodności, taki jak .net?


title: Czy mam płacić moim programistom za poprawki błędów w projekcie lub pracy, która wciąż jest w toku?

text: Współpracujemy z grupą programistów nad projektem. Projekt jest wciąż w toku (nieukończony) i ci programiści pobierają od nas czas poświęcony na naprawę błędów w kodach, które nie zostały napisane w pierwszej kolejności. Rozumiem, że powinniśmy płacić za ewentualne zmiany/nowe prośby, ale nie za poprawki błędów w pracy w toku. Rozumiemy również, że po wdrożeniu zadania w działającej witrynie możemy ponosić odpowiedzialność za poprawki błędów, które mogą pojawić się po wyczerpaniu okresu wsparcia. Teraz pytanie brzmi, czy właściwe jest, aby takie opłaty były nakładane na nas, gdy projekt jest jeszcze w toku?


title: Jak mogę poprawić html dla brakujących tagów zamykających w c#?

text: Mam html zapisany w bazie danych otrzymanej z edytorów tekstu i z powodu błędów w kodzie html jest niepoprawny, brakuje w nim kilku tagów zamykających. i z tego powodu nie jestem w stanie przetworzyć tego html do innych operacji, takich jak generowanie pdfów. Więc muszę napisać kod w c#, który może sprawdzić, czy brakuje tagów zamykających i wstawić tag zamykający w odpowiednim miejscu.


title: Czy ta konfiguracja połączenia RabbitMQ / sockjs pub/sub jest rozwiązaniem kometowym?

text: Moja firma próbuje skonfigurować połączenie pub/sub za pomocą RabbitMQ i sockjs na serwerach Windows. Mam dwa pytania: 1. Mój przełożony nazywa tę konfigurację rozwiązaniem kometowym, zastanawiałem się, czy to właściwa terminologia? 2. Czy istnieje lepszy stos rozwiązań, aby serwer danych asynchronicznie wysyłał dane do klienta bez żądania danych przez klienta (poza wstępną subskrypcją)?


title: Czy cały kod może być reprezentowany jako seria operacji Map / Filter / Reduce?

text: Ostatnio refaktoryzowałem duże fragmenty kodu i zastępowałem je zapytaniami Linq. Usuwanie uprzedzeń językowych — Linq to zasadniczo zestaw operacji Map/Filter i Reduce, które działają na sekwencji danych. To dało mi do myślenia, jak daleko teoretycznie byłbym w stanie to posunąć. Czy byłbym w stanie przepisać całą bazę kodu do serii (lub nawet jednej) operacji Map / Filter i Reduce. Niestety otrzymuję wynagrodzenie za robienie przydatnych rzeczy, więc nie mogłem dalej eksperymentować, ale nie mogę wymyślić żadnej struktury kodu, która nie mogłaby zostać zmieniona jako taka. Kod z efektami ubocznymi może być obsługiwany przez monady. Nawet dane wyjściowe zasadniczo mapują adresy pamięci na adresy ekranowe. Czy jest coś, czego nie można (teoretycznie) przepisać jako zapytanie Linq?


title: Windows Azure vs Amazon EC2 vs Google App Engine

text: Z punktu widzenia programisty, którą platformę rozważyłbyś dla dużej aplikacji społecznościowej? Gdybyś mógł podać kilka szczegółów na temat tego, co uważasz za mocne strony której alternatywy, byłoby świetnie.


title: Wskazówki dotyczące struktury projektu aplikacji warstwowych MVVM, DDD i WPF

text: Próbuję skonfigurować strukturę mojej aplikacji w programie VS i chcę „wypróbować” i sprawdzić ją w przyszłości na rozsądnym poziomie. Ta aplikacja będzie przepisanym przez WPF starą aplikacją Wininform, która nie była zgodna z konwencjami. Bez warstw, poziomów, akronimów itp. Jest to dość duża aplikacja korporacyjna. Planowałem użyć Linq To SQL, ponieważ moje bazy danych są i najprawdopodobniej zawsze będą MS SQL. Mam też do tego zestaw umiejętności. Chcę śledzić MVVM i DDD najlepiej, jak potrafię, ale podczas łączenia tych elementów nie rozumiem struktury mojej aplikacji. Spróbuję zilustrować kilkoma przykładami. Kiedy podążam za MVVM, moja struktura folderów może wyglądać tak: Widoki Modele ViewModels Helpers, ale jak to pasuje do uproszczonego podejścia warstwowego DDD, w którym moja struktura projektu może przypominać następującą: MyApp.UI MyApp.Domain MyApp.Data Czy umieszczam `Models ` w warstwie Domena czy mam 3 wersje powiedzmy „Osoba”? Prowadzi to do kolejnego pytania, gdzie umieścić moje repozytorium i mapowania obiektu DB na obiekt domeny? Zakładałbym, że dane... Otrzymane widoki trafiłyby do interfejsu użytkownika, ale czy ViewModels również? Wreszcie, gdzie miałbym osadzić moją logikę biznesową? Znalazłem następujące informacje na CodePlex, przykład DDD i było to trochę pomocne, ale wydaje się, że jest to aplikacja internetowa, chociaż może to nie mieć znaczenia i jest to moja ignorancja. Nie zrozum mnie źle, wiem, że mogę mieć tyle folderów i nazywać je, jak chcę. Próbuję wymyślić, gdzie umieścić rzeczy, aby było to możliwe do skalowania, a nie jak te miejsca koniecznie się nazywają. Sedno mojego pytania może być pokazane w ten sposób. Mam obiekt `tblPerson` wygenerowany przez `*.dbml`. Jest to oczywiste i należałoby do mojej warstwy „Dane”. Teraz miałbym Model, DTO, Model Domeny, czy jakkolwiek to się nazywa, w oddzielnej warstwie (projekt?) o nazwie `Osoba`. Potrzebowałbym „Mappera” dla „Person” do „tblPerson”, którego nie wiem, gdzie umieścić. Następnie będę miał ViewModel dla, powiedzmy, `EditPerson`, który będzie miał swoje własne właściwości, które pobiera z `Person`, ale być może również więcej. W końcu miałbym widok, który był powiązany z tym modelem widoku.... Aby było jasne, że akapit jest WYPEŁNIONY moimi założeniami i domysłami i mam nadzieję, że ktoś pomoże mi oczyścić powietrze lub zaoferuje wgląd w to, że 6 miesięcy na za rok nie będę się kopał bardziej, niż potrzebuję.


title: Najbezpieczniejszy sposób (tj. HTTPS, POST, PGP) na wysyłanie kluczy odszyfrowywania przez sieć?

text: Jestem w końcowej fazie rozwoju mojej wtyczki Revit. Ta wtyczka jest programowana w C# i dystrybuowana za pośrednictwem biblioteki DLL. Jedną z bibliotek DLL jest zaszyfrowana baza danych SQLite (z zastrzeżonymi danymi), która ma postać biblioteki DLL. Obecnie, w fazie rozwoju, klucz deszyfrujący dla bazy danych SQLite jest zakodowany na sztywno w mojej głównej bibliotece DLL (pliku DLL programu). W przypadku dystrybucji, ponieważ biblioteki DLL są łatwo dekompilowalne, potrzebuję nowej metody odszyfrowania biblioteki DLL. Moje rozwiązanie polega na bezpiecznym przesłaniu kluczy deszyfrujących z naszych serwerów do komputera hosta. Szukałem w POST, myśląc, że jest bezpieczniejszy niż GET, ale po badaniach wydaje się, że jest podobnie niepewny, tylko bardziej „niejasny” niż GET. Zajrzałem również do HTTPS, ale Hostgator wymaga dodatkowych pieniędzy za korzystanie z HTTPS. Potrzebuję porady - czy są jakieś niestandardowe rozwiązania, które mogę zastosować, aby to wdrożyć?


title: Jak mogę być najbardziej produktywnym w programie Visual Studio, gdy jest ograniczony do małego miejsca na ekranie?

text: Jestem studentem i dużo kodu robię na małym (12,5", 1366x768) ekranie laptopa, który noszę od klasy do klasy. Większość środowisk programistycznych jest zaprojektowana z myślą, że ktoś ma do dyspozycji duży ekran, ponieważ większość programiści faktycznie mają dostęp do dużych ekranów, ale ciężko je nosić na zajęcia przez cały dzień, a mój poprzedni laptop (15", 1920x1200) często zostawiał w akademiku tylko dlatego, że był tak cholernie ciężki. W tym momencie jestem prawie zamknięty w programie Visual Studio; żaden program, którego kiedykolwiek używałem, nie jest tak produktywny dla rodzaju kodu, z którym pracuję (po zainstalowaniu Visual Assist Whole Tomato i VsVim Jareda Para, oczywiście :) ) (Widziałem inne pytania dotyczące małych ekranów, ale wszystkie są prawie idź z "opuść Visual Studio" - co jest trudne, biorąc pod uwagę niektóre rodzaje rozwoju, które robiłem....


title: Rozważania dotyczące akceptacji przesłanego kodu do projektu Open Source

text: W wolnym czasie pracuję nad projektem „dla zabawy”. Może w końcu zrobię to Open Source i to sprawia, że zastanawiam się, o czym muszę myśleć, jeśli komuś zależy na tym, żeby się do tego przyczynić. * Czy muszę mieć jakieś prawne bzdury o tym, że „jeśli dasz mi swój kod, akceptuje on tę samą licencję co projekt, bla bla bla” (jaka jest tutaj norma?) * Czy jest sposób na sprawdzenie wniesionych wkładów kod, aby upewnić się, że nie jest plagiatowany, czy też odpowiedzialność spadłaby na współtwórcę? * Czy są jakieś inne pułapki, standardowe/powszechne praktyki, których powinienem przestrzegać, zalecenia, rzeczy, o których muszę pomyśleć?


title: Zarządzanie uwalnianiem rtęci. Odrzucanie zmian, które nie przeszły testów

text: Badanie zarządzania rozproszoną kontrolą źródła (w szczególności mercurial). Moje pytanie brzmi mniej więcej **jaka jest najlepsza praktyka odrzucania całych zestawów kodu, które nie przeszły testów?** **Przykład:** Zespół pracuje nad programem Hello World. Mają testerów i zaplanowane wydanie z planowanymi konkretnymi funkcjami. Nadchodzące wydanie: Dodaj funkcję A Dodaj funkcję B Dodaj funkcję C Tak więc programiści tworzą swoje klony dla swoich funkcji, wykonują pracę i łączą je w repozytorium kontroli jakości, które testerzy mogą przeanalizować. Powiedzmy, że testerzy zgłosili, że „Funkcja B jest niekompletna i w rzeczywistości niebezpieczna” i chcieliby ponownie przetestować A i C. ![Repo Doodle](http://i.stack.imgur.com/DteiT.png) **Zakończ przykład.** Jaki jest najlepszy sposób na zrobienie tego wszystkiego, aby łatwo usunąć funkcję B i otrzymać nowe repozytorium, które zawiera tylko połączone składniki A i C? Odtworzyć repozytorium testowe? Wycofać się B? Inna magia?


title: Ergonomia klawiatury Apple na długie godziny programowania

text: Programuję za pomocą klawiatury Apple (tej całkowicie aluminiowej z płaskimi klawiszami). od dłuższego czasu zauważyłem, że czasami błędnie wpisuję i czuję ból w dłoniach. Czy to wina klawiatury, czy po prostu się starzeję? Czy ktoś z Was ma doświadczenie z wielogodzinnym programowaniem na klawiaturze Apple?


title: Jak działają systemy operacyjne na wielu procesorach?

text: Założenie: "Systemy operacyjne (przynajmniej w jakiejś części) powinny być napisane w asemblerze. Programy asemblerowe są specyficzne dla procesora." Jeśli tak, to jak jeden system operacyjny może działać na różnych procesorach? Na przykład: w jaki sposób mogę załadować Ubuntu na różne systemy z różnymi procesorami (np. intel i3,i5,i7, amd a8,a6 itp.) z tego samego dysku startowego? 1. Czy dysk zawiera oddzielne programy assemblerowe dla każdego procesora? 2. Czy te procesory są wystarczająco 'podobne' do uruchomienia tego samego programu asemblera? 3. Czy moje założenie jest błędne? 4. Coś jeszcze.... Dzięki za odpowiedź. 1. Próbowałem dowiedzieć się, w jaki sposób procesory, o których wspomniałem, są „podobne”. Natknąłem się na koncepcje architektury zestawu instrukcji i mikroarchitektury procesorów. Procesor zrozumie program, jeśli można go zwalczyć z jego ISA. Nawet jeśli procesory są inaczej "podpięte" (inna mikroarchitektura), tak długo, jak ISA zaimplementowana na górze jest taka sama, program będzie działał. ARM i x86 mają różne ISA (dlatego są 2 wersje Windows 8, prawda?). A jeśli program aplikacji jest napisany w HLL z kompilatorami dla obu platform, zaoszczędzimy marnowania czasu na pisanie 2 programów. Czy zrozumiałem coś złego? 2. Czy istnieją programy, które mogą pobierać skompilowany program jako dane wejściowe i wytwarzać program wykonywalny na innym procesorze jako dane wyjściowe? Czy to możliwe? (Wirtualizacja?) 3. 32-bitowe programy Windows instalują się na 64-bitowych oknach, prawda? Czy procesory 64-bitowe nie różnią się od procesorów 32-bitowych? Dostają oddzielne wersje systemu operacyjnego, prawda? 4. Czy ta wsteczna walka jest osiągana za pomocą programów wymienionych w (3)?


title: Czy wielowierszowe komentarze są krytycznym ułatwieniem we współczesnym języku?

text: Staram się przekonać projektantów języka, że wielowierszowe komentarze z dowolnym początkiem i końcem są ważne i powinny być uwzględnione. Obecnie istnieje tylko prymityw „komentarz do końca wiersza”. Ich argumentacja przypomina mi, co niektórzy mówią o tym, dlaczego należy używać spacji zamiast tabulatorów. Zasadniczo funkcje edytora mogą nabrać luzu i usunąć wymaganie dla innej konstrukcji. _(Więc jeśli chcesz zakomentować więcej niż jedną linię, możesz wybrać to, co chcesz i uruchomić pewnego rodzaju makro... aby dodać lub usunąć komentarz do końca linii do każdej linii. Ja po prostu przeczytaj, że ta funkcja istnieje w Visual Studio, mimo że C/C++ oferuje wielowierszowy komentarz.)_ Inne sugestie dotyczące usuwania bloków kodu z wykonania są takie, jak „wytnij kod, wypróbuj go i użyj kolejki ponawiania”. Myślę, że nie jest to bardzo łatwy sposób na śledzenie „niewidzialnych” informacji, które możesz chcieć odzyskać, a kolejki ponawiania szybko tracą informacje w momencie, gdy przypadkowo naciśniesz nawet zabłąkany klawisz. Więc to mnie nie kręci. Mogę żyć ze spacją vs. tabulatorem i umieszczać to w edytorze, a teraz jest to wszechobecne. Ale dla mnie jest inaczej i jestem niezadowolony z tych odpowiedzi. Dla mnie możliwość komentowania kodu za pomocą znacznika początku i końca, takiego jak `/*` i `*/` jest niezwykle przydatna. Przekazywanie pieniędzy na magię redaktora nie pozwala ci na dowolne pozycjonowanie początku i końca _(jak byś zakomentował środek linii, gdyby wszystko co miałeś to `//`?)_ I też nie lubię tego pochylać dużo na temat funkcji edytora. Przepraszam, że zadaję pytanie z podtekstem sondażu lub o coś subiektywnego. Ale to, czego szukam, to bardziej obiektywne argumenty, o których nie myślę, które mogłyby dostarczyć więcej amunicji wspierającej tę funkcję, która moim zdaniem jest ważna. _(Albo myślę, że mógłbym zaakceptować mocny argument przemawiający za NIE posiadaniem wieloliniowego formatu komentarza, który przesłania moje silne pragnienie, aby go mieć… Nie stawiam na to jednak dużych szans.)_


title: Przemyślenia dotyczące refaktoryzacji ogólnego DAO

text: Zaprojektowałem generyczne DAO w Javie i nie mam pewności, czy przerobić je na inny projekt, czy nie. **PS** Nie mów, aby używać już istniejącego frameworka 3rd person. Wiem, że jest ich trochę, ale uczę się Java i wzorców projektowych, więc potrzebuję całej praktyki, jaką mogę zdobyć. Jeśli jest jakieś zamieszanie to proszę pytaj, a ja wyjaśnię. **Obecna architektura** * * * **DAOFactory.java** * Zawiera metody `abstract` do tworzenia `DAODelete`, `DAOUpdate` i 2 innych interfejsów do implementacji przez konkretne klasy implementacyjne * `public` Class metoda tworzenia konkretnych fabryk do produkcji konkretnej implementacji wspomnianych wcześniej interfejsów. **DAORead.java** public abstract <T> T getPojoForPrimarKey(Connection con, TableName TableName, String primaryKey) zgłasza SQLException; Podobnie w innych moich interfejsach mam metody generyczne. * Tutaj `Połączenie` jest przekazywane przez warstwę usług i tam zamykane w celu zarządzania transakcjami. * `TableName` to wyliczenie, którego używam, aby mieć wielkość liter w niższej warstwie DAO do wywoływania funkcji specyficznych dla tabeli. Również używanie enum pomaga mi w sprawdzaniu typów. **OracleRead.java** @Override public <T> T getPojoForPrimarKey(Connection con, TableName tableName, String primaryKey) wyrzuca SQLException { T currentPojo = null; Przygotowane oświadczenie ps = null; Zestaw wyników rs = null; try { String queryString = OracleSpecifics.queryString(tableName, primaryKey, QueryType.READ); ps = con.prepareStatement(Ciąg Zapytania); rs = ps.executeQuery(); if (rs.next()) { currentPojo = OracleSpecifics.getPojoFromResultSet(TableName, rs); } } wreszcie { DAOFactory.closeAll(ps, rs); } return currentPojo; } W ten sposób zaimplementowałem funkcję `deleteFrom` z interfejsu w klasie konkretnej. Tutaj `OracleSpecifics` to dolna warstwa DAO, o której mówiłem. Zasadniczo zawiera przypadki `switch`, aby sprawdzić konkretną tabelę. - -**OracleSpecifics.java** // Te funkcje wywołują funkcje specyficzne dla tabeli @SuppressWarnings("niezaznaczone") static <T> T getPojoFromResultSet(TableName tableName, ResultSet rs) throws SQLException { switch (tableName) { case ASEEM_MASTER: case ASEEM_MASTER_TEMP: return (T) SpecAseemMaster.getPojo(rs); case AUTHENTICATE_TABLE: return (T) SpecAseemRole.getPojo(rs); domyślnie: return null; } } W tym przypadku `SpecAseemMaster` i `SpecAseemRole` są warstwą specyficzną dla tabeli (specyficzną dla schematu) tworzącą wymagane pola **SpecAseemRole.java** public static AuthenticationDetails getPojo(ResultSet rs) throws SQLException { AuthenticationDetails cur = new AuthenticationDetails(); cur.setUserName(rs.getString(1)); cur.setPassWord(rs.getString(2)); cur.setRole(rs.getString(3)); powrót cur; } * * * **W warstwie usług** Typ, za pomocą którego wywoływana jest metoda DAO, to Pojo reprezentujące pola danych schematu. np. myFactory.getDAORead().<AuthenticationDetails> getPojoForPrimarKey(con, CUR_TABLE, primaryKey); Tutaj `AuthenticationDetails` to moje Pojo aka DTO do komunikacji między moim kontrolerem a warstwą usług (w modelu). * * * **Proszę zauważyć**, że przedstawiam tylko ogólny zarys w najprostszy sposób. W abstrakcyjnych DAO znajdują się 4 interfejsy zawierające łącznie 8 „abstrakcyjnych” metod zaimplementowanych przez 4 konkretne klasy. Wszystkie te klasy generyczne zależą od niższej warstwy w DAO w celu uzyskania określonych zapytań, `PreparedStatement`s itp., które dalej wywołują funkcje w funkcjach pomocniczych klas narzędziowych w zależności od `tableName` przekazanej w tej hierarchii. Dolna warstwa jest zależna od schematu. **Moje zamieszanie dotyczące refaktoryzacji** * Jestem zadowolony z wyższych warstw DAO, ale myślę, że na niższym poziomie konkretnie w `OracleSpecific` rzeczy, które powinny mieć silne sprzężenie, mają słabe sprzężenie. np. istnieją różne metody uzyskiwania „PreparedStatement” do wstawiania i aktualizacji. Każdy z nich z kolei ma przypadek `switch` do wywoływania funkcji w niższej klasie narzędziowej. * **Chociaż** metody `specyficzne dla schematu` są powiązane ze sobą w różnych klasach narzędziowych, które metody nazywają się w `OracleSpecifics.java`, nie mają żadnego sprzężenia. * Zastanawiam się, czy powinienem zmienić wyliczenie `TableName`, aby zawierało _określony stan_. Stan, o którym myślę dla klas użyteczności najniższego poziomu specyficznych dla schematu. * Te `specyficzne stany` zawarte w wyliczeniach mogą być użyte do zmiany stanu DAO, a DAO może następnie wywołać określone funkcje w oparciu o interfejs zaimplementowany przez wszystkie takie stany. Tak więc w zależności od stanu zachowanie może zmieniać się automatycznie. * Czy ta decyzja projektowa jest prawidłowa, czy też nie ma sensu? * Jakaś inna rzecz, którą mogłem przeoczyć? * Masz jakieś przemyślenia na temat samego projektu? * Czy z powodu tej zmiany stracę bezpieczeństwo typu wprowadzone przez generyki?


title: Co to jest internetowy interfejs API? (Interfejs aplikacji do programowania)

text: Co to jest interfejs programowania aplikacji internetowych? Wiele popularnych witryn udostępnia interfejsy API. Dlaczego są potrzebne i jaką funkcję pełnią? Jak uzyskać dostęp do internetowego interfejsu API?


title: Najlepszy sposób na re-platformę aplikacji dostępowej MS do aplikacji java

text: Mam wymaganie, aby aplikacja MS Access musiała zostać ponownie sformatowana do aplikacji Java. Aplikacja MS Access ma około 45 000 rekordów i 53 kolumny z łącznością SQL. Te dane rekordów należy edytować, dane używane do wysyłania wiadomości e-mail z załącznikiem raportu pdf .Report jest zaprojektowany przy użyciu usług raportowania SQL. Muszę stworzyć interfejs użytkownika, aby wywoływać usługę raportowania i generować raporty. Klient chce, aby wszystkie 45000 rekordów zostało załadowanych w jednym odcinku w tabeli danych. Czy ktoś może zasugerować, który jest najlepszym sposobem na naśladowanie tego w java. Czy muszę iść z aplikacją swing lub aplikacją internetową.


title: Jak przetestować TDD, że obiekty są dodawane do kolekcji, jeśli kolekcja jest prywatna?

text: Załóżmy, że planowałem napisać klasę, która działała mniej więcej tak: public class GameCharacter { private Collection<CharacterEffect> _collection; public void Dodaj(EfektZnaku) { ... } public void Usuń(EfektZnaku) { ... } public void Zawiera(EfektZnaku) { ... } } Po dodaniu efekt działa na znak i jest następnie dodawany do kolekcji _. Po usunięciu efekt przywraca zmianę postaci i jest usuwany z kolekcji _collection. **Łatwo jest sprawdzić, czy efekt został zastosowany na postaci, ale jak sprawdzić, czy efekt został dodany do _collection?** Jaki test mogę napisać, aby rozpocząć konstruowanie tej klasy. Mógłbym napisać test, w którym _Contains_ zwróciłby true dla określonego efektu znajdującego się w _collection, ale nie mogę zorganizować przypadku, w którym ta funkcja zwróci true, ponieważ nie zaimplementowałem metody _Add_, która jest potrzebna do umieszczania rzeczy w _collection. Ok, więc skoro _Contains_ zależy od działania _Add_, to dlaczego nie spróbuję najpierw utworzyć _Add_. Cóż, na mój pierwszy test muszę spróbować dowiedzieć się, czy efekt został dodany do kolekcji _collection. Jak mam to zrobić? Jedynym sposobem sprawdzenia, czy efekt znajduje się w _collection, jest funkcja _Contains_. Jedynym sposobem, w jaki mógłbym to przetestować, byłoby użycie _FakeCollection_, który kpi z dodawania, usuwania i zawiera rzeczywistej kolekcji, ale nie chcę, aby _kolekcja miała wpływ na zewnętrzne źródła. Nie chcę dodawać funkcji _setEffects(Collection effects)_, ponieważ nie chcę, aby klasa miała taką funkcjonalność. Myślę, że może zadziałać jedna rzecz: public class GameCharacter<C extends Collection> { private Collection<CharacterEffect> _collection; public GameCharacter() { _collection = new C<CharacterEffect>(); } } Ale to jest po prostu głupie zmuszanie mnie do deklarowania, jaki typ prywatnej struktury danych jest przy każdej deklaracji znaku. **Czy mogę to przetestować bez łamania zasad TDD, a jednocześnie zachować prywatność mojej kolekcji?**


title: Wysyłanie plików przez HTTP do serwisu internetowego

text: Jestem trochę sfrustrowany brakiem informacji na ten temat w Internecie. Oto problem: jestem odpowiedzialny za stworzenie aplikacji na iOS, która przesyła dane dźwiękowe między serwerem a aplikacją. Dźwięk jest w małych plikach i dlatego nie trzeba go przesyłać strumieniowo, ale można go przesłać. Obecnie do obsługi takich aplikacji używam serwera TCP, który napisałem. Jednak chcę, aby system był tak prosty, jak to tylko możliwe, a pisanie własnych gniazd serwera i klienta może być nieco skomplikowane i pozostawia miejsce na awarie. Ogólnie spowalnia rozwój, ponieważ muszę uwzględnić strukturę pakietów i inne rzeczy. Moje pytanie brzmi, czy mogę napisać usługę internetową ASPX lub PHP, która pozwala mi przesyłać pliki tam iz powrotem przez GET lub POST?


title: Praktyczne liczby pierwsze w P

text: A raczej praktycznie _stosowanie_ PRIMES w P. Dużo słyszałem o "PRIMES w P", czyli o "algorytmie AKS". Jest to, upraszczając nieco, bardzo szybki sposób znajdowania liczb pierwszych. Jednakże, chociaż próbowałem przeczytać oryginalną pracę (wydaje się, że poprawiona „V3” zniknęła z Internetu), jest to nieco ponad moje zrozumienie. Próbowałem również użyć Google do znalezienia praktycznych implementacji algorytmu, ale one też są niezrozumiałe (czyli wszystkie są napisane w C++ bez komentarzy). Czy ktoś może opracować wyjaśnienie na poziomie hobbysty/pierwszego roku, jak zaimplementować algorytm AKS? Czy może błędnie interpretuję dokładnie, co to robi i do czego służy?


title: Entity Framework — jawne ładowanie powiązanych jednostek

text: Korzystam z Entity Framework od kilku lat. Podczas pracy nad kodem przeskakiwałem między wywoływaniem repozytoriów w mojej logice biznesowej a używaniem leniwego ładowania do pobierania danych. Problem z pierwszym podejściem polega na tym, że pojedynczy obiekt biznesowy może polegać na wielu repozytoriach (w przypadku repozytorium przypadającego na tabelę). Wynikowa logika jest mocno pomieszana z wywołaniami warstwy danych, co utrudnia testowanie (wiele prób). Problem z drugim podejściem polega na tym, że leniwe ładowanie czasami prowadzi do niespodzianek. Nowicjusze odwołują się do bazy danych w pętlach, nie zdając sobie z tego sprawy. Nawet użycie „Uwzględnij” wymaga dużej ostrożności. Zbyt wiele `Include`s i wygenerowane zapytanie może być bardzo wolne. Więc byłem trochę sfrustrowany. Kilka tygodni temu odkryłem nowsze klasy `DbEntityEntry<TEntity>` w Entity Framework. To pozwoliło mi jawnie załadować powiązane encje i sprawdzić, czy zostały już załadowane. Doprowadziło to do podejścia hybrydowego, w którym przekazuję pojedynczy obiekt główny i klasę „ładowacza”. Przed uzyskaniem dostępu do właściwości nawigacji poprosiłbym program ładujący o jej załadowanie. Gdyby obiekt był już załadowany, po prostu nic by nie zrobił. Ponieważ nic to nie kosztowało, po prostu wywoływałem go za każdym razem, gdy odwoływałem się do właściwości nawigacji. Dodałem tę klasę do istniejącego projektu open source dla każdego, kto chce ją zobaczyć: https://github.com/jehugaleahsa/TestMvcApplication/blob/master/DataModeling/EntityLoader.cs. Współpracownik zauważył, że ta klasa tak naprawdę rozwiązała tylko niektóre problemy. Podobnie jak leniwe ładowanie, oznaczało to albo użycie `Include`s, albo radzenie sobie z wieloma trafieniami bazy danych w pętli. Pewnego dnia wpadłem na inny pomysł: mógłbym pobrać powiązane encje do zbioru encji. Na przykład pobranie wszystkich ról dla listy użytkowników. W ten sposób mogę pobrać wszystkie powiązane encje w jednym trafieniu bazy danych poza pętlą. Skończyło się na tej klasie: https://github.com/jehugaleahsa/TestMvcApplication/blob/master/DataModeling/EntityCollectionLoader.cs. Ta klasa dynamicznie buduje zapytanie na podstawie jednostek. Pod maską buduje sprzężenie, które filtruje powiązane jednostki według kluczy podstawowych głównych jednostek. Obie klasy loadera dostarczają metody, które zwracają `IQueryable<TRrelated>`, aby umożliwić dalsze filtrowanie, sortowanie itp. Problem z tymi metodami polega na tym, że nie można stwierdzić, czy powiązane encje zostały już załadowane, więc zawsze skutkują trafienie w bazie danych. Jest to nadal przydatne przy wykonywaniu wielu `Include` w jednym zapytaniu. Moje obiekty biznesowe po prostu przyjmują fabrykę ładowarek w swoich konstruktorach. Wywoływana metoda obiektu biznesowego pobiera tylko obiekty najwyższego poziomu. Tak naprawdę mam tylko jedną zależność od mojej warstwy danych. Ta zależność jest ukryta za interfejsem. Zastanawiam się, jakie są wady tego podejścia. Nadal miesza wywołania obiektu warstwy danych, z wyjątkiem tego, że teraz mogę nawigować do wyników z właściwości nawigacji obiektu najwyższego poziomu. Dodatkowo jest to pojedyncza zależność, którą można łatwo wykpić (wszystko staje się nie-op). Może być używany razem z leniwym ładowaniem, więc nie będzie katastrofą, jeśli zapomnisz najpierw wywołać `Load`. Początkowo obawiałem się, że będę budować zapytania w mojej warstwie biznesowej, ale zdałem sobie sprawę, że mówię tylko `Load(u => u.Role)`, a następnie natychmiast uzyskuję dostęp do `user.Role`. Klasa modułu ładującego i Entity Framework zajmują się wypełnianiem właściwości nawigacji. Czy czegoś mi brakuje? To wydaje się być naprawdę niesamowitym kompromisem między czystym leniwym ładowaniem a gorliwym ładowaniem.


title: Przechodzenie między witrynami za pomocą SAML

text: Mam za zadanie opracować system SSO i zostałem poprowadzony do korzystania ze specyfikacji SAML. Po kilku badaniach myślę, że rozumiem interakcję między dostawcą usług a dostawcą identyfikatorów i jak potwierdzana jest tożsamość użytkownika. Ale co się stanie, gdy przekieruję użytkownika do **innego** dostawcy usług? Jak mogę tam ustalić tożsamość użytkownika? Czy wraz z żądaniem przekierowania wysyłam jego tokeny asercji SAML? A może drugi usługodawca musi ponownie skontaktować się z dostawcą identyfikatora?


title: Jaki język jest lepszy do pracy z bazami danych?

text: Mam zamiar stworzyć oprogramowanie współpracujące z różnymi bazami danych i rozważam użycie języków .NET czy C++. Wiem, że .NET zawiera LINQ i ADO.NET, ale czy są takie funkcje w natywnym C++? Który działa lepiej, szybciej z bazami danych?


title: Dlaczego struktury/tablice bazują na zera?

text: Jak zdecydowano, że jeśli masz tablicę/strukturę lub coś podobnego w języku programowania, powinno to być od zera? Czy nie byłoby łatwiej, gdyby był oparty na 1? W końcu, kiedy uczymy się liczyć, zaczynamy od jednego.


title: Jak wyglądałby nowy język, gdyby został zaprojektowany od podstaw, aby był łatwy do TDD?

text: W przypadku niektórych najpopularniejszych języków (Java, C#, Java itp.) czasami wydaje się, że pracujesz w sprzeczności z językiem, gdy chcesz w pełni TDD swój kod. Na przykład w Javie i C# będziesz chciał zakpić wszelkie zależności swoich klas, a większość frameworków do zakłamania zaleci, abyś zakpił interfejsy, a nie klasy. Często oznacza to, że masz wiele interfejsów z pojedynczą implementacją (ten efekt jest jeszcze bardziej zauważalny, ponieważ TDD zmusi Cię do napisania większej liczby mniejszych klas). Rozwiązania, które pozwalają poprawnie wyszywać konkretne klasy, robią takie rzeczy jak zmiana kompilatora lub przesłonięcie ładowaczy klas itp., co jest dość nieprzyjemne. Jak więc wyglądałby język, gdyby został zaprojektowany od podstaw, aby był świetny w TDD? Być może w jakiś sposób sposób opisywania zależności na poziomie języka (zamiast przekazywania interfejsów do konstruktora) i możliwość oddzielenia interfejsu klasy bez robienia tego wprost?


title: Zautomatyzowane testowanie przy użyciu maszyn wirtualnych

text: Pracuję nad stworzeniem systemu do automatycznego testowania zadań studenckich. Największą przeszkodą, z którą się teraz zmagam, jest wymyślenie, jak przeprowadzić testowanie kodu w piaskownicy, a jednocześnie uzyskać i przetworzyć wyniki testu. Muszę go uruchomić na maszynie wirtualnej, ponieważ nie ma gwarancji, że kod nie będzie złośliwy. Chciałbym mieć proces podobny do następującego: 1. Student przesyła zadanie 2. VM jest utworzona i otrzymuje kod źródłowy przesłany przez studenta 3. VM uruchamia testy na kodzie źródłowym 4. VM zwraca wyniki testu powrót do systemu operacyjnego hosta 5. Wyniki są przetwarzane Kroki 2 i 4 to te, dla których szukam dobrego rozwiązania. Nie jestem pewien, jaki byłby dobry sposób na zautomatyzowanie przekazywania plików do maszyny wirtualnej i przekazywanie wyników z powrotem z maszyny wirtualnej. Wygląda na to, że jest to problem, który może mieć już rozwiązanie i wolałbym nie wymyślać koła na nowo.


title: Jak mogę zapewnić, że część kodu mojego projektu pozostanie we wszystkich pracach pochodnych?

text: Miałem pomysł na stronę internetową. Po wielu kodowaniach i przemyśleniu pomysłu doszedłem do przyzwoitego etapu. Gdybym był kimś innym, potencjalnie bardziej komercyjnie nastawionym, mógłbym chcieć go sprzedać lub posmarować reklamami. Jednak trochę zakochałem się w open-source i chciałbym hostować projekt na GitHub i dać mu fajną licencję open source. Jednak projekt wydaje się być coraz lepszy i tak naprawdę myślę, że szybko stanie się dość popularny. Więc chcę zamieścić na nim reklamy na cele charytatywne. Jak mogę się upewnić, że jedna mała reklama tekstowa na rzecz organizacji charytatywnej pozostanie we wszystkich pracach pochodnych? Czy są jakieś licencje, które pozwolą mi to zrobić? p.s. Moim innym wymaganiem dla licencji jest to, że daje mi uznanie autorstwa (w tej samej formie, w jakiej licencja MIT byłaby w porządku) [EDYTUJ] Zdecydowałem się po prostu pozwolić, aby była to licencja Apache. Mam nadzieję, że ludzie po prostu zostawią reklamy charytatywne.


title: Dlaczego istnieją procesy proxy między klientami a procesami logicznymi w aplikacji C/S?

text: W rzeczywistym oprogramowaniu sieciowym opartym na modelu c/s zawsze istnieją procesy serwera proxy między klientami a procesami serwera zajmującymi się logiką biznesową, dlaczego potrzebujemy proxy do odizolowania części logicznej i klientów? Jakie są zalety tej architektury?


title: Jak renderować kanał RSS w stacjonarnym czytniku RSS?

text: Rozważ jeden kanał taki jak ten: http://feeds.feedburner.com/codinghorror Zawiera całą treść wewnątrz tagu opisu kanału, więc nie musisz wchodzić na stronę internetową, aby przeczytać post. Teraz mam problem z utworzeniem interfejsu dla takiego kanału na kliencie stacjonarnym. Jak najlepiej renderować tekst w sposób przyjemny dla użytkownika? Moją pierwszą myślą było parsowanie całego kodu HTML tak, jakbym był przeglądarką internetową, ale wygląda to na naprawdę trudne do zrobienia w satysfakcjonujący sposób. Czy są jakieś lepsze (szybsze) alternatywy? Reformując: jak komputerowy klient rss, taki jak feeddamon, analizuje dane wejściowe, aby ładnie je wyświetlić? Czy ma w sobie przeglądarkę internetową?


title: UML: Przejście od diagramu przypadku użycia do diagramu klas

text: Jak w prostych krokach przejść z diagramu Przypadków Użycia do diagramu Klasy?


title: Co dzieje się między sprintami?

text: Pracuję nad projektem luźno zgodnym z modelem scrum. Robimy dwutygodniowe sprinty. Coś, czego nie rozumiem (i nie mam książki do konsultacji) jest dokładnie tym, co ma się dziać między sprintami: powinien być jakiś proces „zawijania”, w którym produkt jest budowany i dostarczany, ale: * jak długo czy to zwykle trwa? * czy cały zespół powinien być zaangażowany? * czy musi się to koniecznie skończyć, zanim programiści zaczną pracować nad kolejnymi elementami sprintu? * czy to jest, kiedy odbywa się przegląd i testowanie kodu? Jest trzech programistów, co daje około 1 FTE. Sprinty są więc rzeczywiście bardzo krótkie.


title: Program do sprawdzania poprawności wszystkich słów w krzyżówce

text: Mam własne rozwiązanie i chciałem je porównać z czymś online, ale nie mogłem znaleźć żadnych przykładów. Jak byś to rozwiązał. (W razie potrzeby mogę wysłać mój kod). Chcę tylko zobaczyć, czy ktoś ma lepsze podejście, o którym nie pomyślałem, lub czy mój kod pomija jakieś przypadki brzegowe. To jest dla praktyki do rozmowy kwalifikacyjnej. Napisałem to w Javie, więc wolałbym zobaczyć inny kod w Javie, ale każdy język byłby w porządku - lub nawet po prostu angielskie wyjaśnienie tego, co byś zrobił, jeśli nie chcesz go kodować (ale ja Wolisz kod, ponieważ możesz nie zdawać sobie sprawy z pewnych rzeczy, z których zdajesz sobie sprawę, gdy zaczniesz kodować). Siatka jest reprezentowana przez szyk 2d.


title: Praca na cudzym kodzie

text: Mam ledwie roczne doświadczenie w kodowaniu. Po rozpoczęciu pracy przez większość czasu pracowałem nad czyimś kodem, dodając nowe funkcje do istniejących lub modyfikując istniejące. Facet, który napisał właściwy kod, nie pracuje już w mojej firmie. Trudno mi zrozumieć jego kod i wykonywać swoje zadania. Za każdym razem, gdy próbowałem modyfikować kod, w jakiś sposób mieszałem się z działającymi funkcjami. O czym powinienem pamiętać podczas pracy nad czyimś kodem?


title: Najdłuższy podciąg bez ciągu znaków

text: Czy istnieje algorytm programowania dynamicznego do znajdowania najdłuższego podciągu w ciągu X, który nie zawiera Y jako podciągu? Tylko, że ten problem wydaje się tak podobny do innych algorytmów łańcuchowych DP, takich jak najdłuższy wspólny podciąg i łańcuch. Musi być w stanie obsłużyć wystąpienia Y, które nakładają się. Wygląda na to, że może to być problem DP z dwoma stanami, przy czym stan [s_pos, t_pos] jest najdłuższym podciągiem łańcucha S zaczynającym się od s_pos, który nie ma łańcuszka T[t_pos..M] jako podłańcucha. N to długość łańcucha S, a M to długość łańcucha T. Jednak moje przejścia nie są poprawne: nie występuje przypadek, w którym S=`aaabc` i T=`aabc`. Problem tkwi w instrukcji _else_ - nie wiem, jak przejść, jeśli znaki są równe. **Właściwie uważam, że gałąź if jest zła... ktoś wie, co może być nie tak?** Zawodzi nawet przypadek S=`aaab` i T=`aab`. Mogę wyjaśnić, dlaczego to się nie udaje: zakładając, że wywołuję solve(0, 0). solve(0, 0) wywołuje solve(1, 1). solve(1, 1) wywołuje solve(2, 2). Ponieważ s[2] != t[2], ponownie rozpoczyna wyszukiwanie od solve(3, 0). Jednak aab jest podłańcuchem i nigdy tego nie sprawdza ani nie bierze pod uwagę tego przypadku... int solve(int s_pos, int t_pos) { if (s_pos >= N || t_pos >= M) return 0; if (t_pos == M - 1 && s[s_pos] == t[t_pos]) return 0; int ret = 0; if (s[s_pos] != t[t_pos]) { int tmp = solve(s_pos + 1, 0); ret = max(ret, tmp + 1); } else { for (int i = s_pos + 1; i < N; i++) { int tmp = solve(i, t_pos + 1); if (tmp != 0) { ret = max(ret, 1 + tmp); } } } return ret; }


title: Jak wstrzyknąć obiekty testowe, gdy obiekty rzeczywiste są tworzone dynamicznie?

text: Chcę, aby klasa była testowalna przy użyciu iniekcji zależności. Ale klasa tworzy wiele obiektów w czasie wykonywania i przekazuje różne wartości do ich konstruktora. Oto uproszczony przykład: public abstract class Validator { private ErrorList błędy; public abstract void validate(); public void addError(String text) { error.add(new ValidationError(text)); } public int getNumErrors() { return error.count() } } public class AgeValidator extends Validator { public void validate() { addError("Imię nieprawidłowe"); addError("nazwisko niepoprawne"); } } (Istnieje wiele innych podklas Validatora.) Jaki jest najlepszy sposób, aby to zmienić, abym mógł wstrzyknąć fałszywy obiekt zamiast ValidationError? Można utworzyć AbstractValidationErrorFactory i zamiast tego wstrzyknąć fabrykę. To by zadziałało, ale wygląda na to, że stworzę mnóstwo małych fabryk i interfejsów fabrycznych dla każdej takiej zależności. Czy jest lepszy sposób?


title: Wyszukaj podciąg za pomocą tablicy sufiksów (i LCP)

text: Szukam najlepszego sposobu na poprawę czasu wykonywania tablicy sufiksów przy użyciu LCP. Mój tekst (około 2 500 000 znaków) wygląda następująco: 0ricco0eric0america0polo0.... Moje przemyślenia: SA=suffixArray char=firstChar(input) s = indeks tablicy sufiksów pierwszej wartości char currentWord to obszar (ciąg) w tekście od 0 do następnego 0, gdzie znajduje się podciąg, stąd: dla założonego podciągu icco byłoby bieżącym słowem ricco powtórz jeśli wzorzec w tekście[SA[s]:SA[s]+len(input)] break s+=1 wyniki.append(bieżące słowo) powtórz jeśli lcp[s]>=len(input) results.append(currentWord) s+=1 else: break Czy to poprawny sposób? A może mógłbyś mi doradzić, jak powinno być?


title: Jak uczyć się z open source

text: Często widzę ten problem. Podoba mi się pewna propozycja wartości projektu open source. Wypróbuję podstawowe tutoriale. Świetny. To działa! Ale jeśli przejdę do bardziej złożonych problemów, spędzam godziny na badaniach, debugowaniu, frustracji itp. Jakie są twoje strategie, aby utrzymać motywację w open source? Jaka jest nagroda za open-source po sukcesie podstawowych samouczków? Jakiego „sukcesu” open-source doświadczyłeś?


title: Jak chronić własność intelektualną podczas outsourcingu tworzenia oprogramowania?

text: Jestem małą firmą, która potrzebuje outsourcingu tworzenia oprogramowania. Napisałem zarówno specyfikacje funkcjonalne, jak i techniczne dla programistów GUI i programistów back-endowych (C lub PHP), aby zaimplementować moje oprogramowanie. Trochę się denerwuję, przekazując kopie tych dokumentów, aby poprosić wiele firm o oferty. Poszukuję rekomendacji do ochrony mojej pracy podczas outsourcingu. Jaka jest konwencjonalna mądrość? Czy istnieje ogólna umowa NDA, do której ktoś mógłby wysłać mi link. Jak inni radzą sobie z tą sytuacją. Czego oczekiwałyby ode mnie firmy outsourcingowe, a czego nie?


title: Dlaczego + jest tak złe dla konkatenacji?

text: Wszyscy powtarzają, że jednym z problemów JavaScript jest używanie `+` [przykład] do łączenia łańcuchów. Niektórzy twierdzą, że problem nie polega na używaniu `+`, ale na przymusie typu [zobacz komentarze z poprzedniego przykładu]. Ale języki silnie typizowane używają + dla typów konkatenacji i wymuszania bez żadnego problemu. Na przykład w C#: int liczba = 1; MójObiekt obj = nowy MójObiekt(); var wynik = "Witaj" + numer + obj; // jest odpowiednikiem string result = "hello" + number.ToString() + obj.ToString(); Dlaczego więc konkatenacja ciągów w JavaScript jest tak dużym problemem?


title: Nowa platforma do testowania sekwencyjnego z takim samym rygorem jak xUnit?

text: Poszukiwanie książek (opublikowanych lub nadchodzących) i frameworków (najlepiej darmowych/open-source) do testów sekwencyjnych. Moje rozumienie testów sekwencyjnych jest takie, że jest bardzo podobny do systemu przepływu pracy, z następującymi elementami: * Zbiór zestawów procedur (pakietów) konfiguracji/ćwiczeń/weryfikacji - taki sam jak w xUnit * Opcjonalnie zestaw procedur może również zawierają: * Teardown - oznacza koniec testu sekwencyjnego, po którym cały stan oprogramowania zostanie rozwinięty do początku. * Cofnij - cofa tylko jedną operację, do stanu sprzed "Ustawienia" bieżącego zestawu procedur. * Jeśli programista zapewnia cofnięcie, programista ręczy za poprawność tego unfo. (Można użyć asercji, ale najlepiej nie używać nierzetelnego cofania). Jeśli programista nie jest pewien, nie podawaj cofnięcia. * Każdy zestaw procedur musi _albo_ dostarczać StartUp, albo jeden lub więcej "poprzednich kroków" - nowa część do testów sekwencyjnych. * StartUp zasadniczo ponownie inicjuje cały stan oprogramowania w gwarantowany sposób. * „Kroki poprzedzające” są odniesieniami do innych zestawów procedur. * **W przeciwieństwie do testów jednostkowych, testy sekwencyjne mogą przekazywać obiekty do następnego kroku, w dokładnie kontrolowany sposób.** **Przykład:** * Procedura A * Utwórz pusty plik „readme.txt”. (zatrzymaj test, jeśli już istnieje; warunki wstępne nie zostały spełnione.) * Sprawdź, czy plik „readme.txt” istnieje. * Funkcja Cofnij: Usuń plik „readme.txt”, jeśli istnieje. * Procedura B, * `podąża` za procedurą A * Otwórz plik "readme.txt" do zapisu (usuń poprzednią zawartość) * Powiązane: Czy testy scenariuszowe są grupami sekwencyjnych testów jednostkowych? * * * Drodzy wszyscy, przepraszam, że pytanie zaginęło w środku nieoczekiwanej awarii maszyny; więc zostało to odzyskane z poprzedniej wersji roboczej automatycznego zapisywania. Od czasu tej awarii nieco rozszerzyłem ten pomysł i potrzebuję kilku dni, aby go uporządkować i zaktualizować to pytanie. * * * Słowa kluczowe to: * `Initial` [new] (inicjuje cały świat) * `Setup` (sprawdza czy spełnione są warunki wstępne dla początku jednego kroku i tworzy tymczasowe obiekty, które pomagają w tym jednym kroku - te tymczasowe obiekty przestaną działać po zakończeniu tego kroku.Możesz wywołać te obiekty "lokalne" * `Ćwiczenie` * `Weryfikuj` (zaświadczenia, że krok się powiódł) * `Cofnij` [nowy] Ta opcjonalna metoda, jeśli została podana , oznacza, że istnieje sposób na pełne przywrócenie stanu świata sprzed tego kroku. Jeśli takowe jest zapewnione, programista gwarantuje poprawność tego cofnięcia. Jeśli nie masz pewności, nie podawaj. * `Final` [nowy] Zawija cały świat do utylizacji. Następnie można ponownie wywołać Initial, aby ponownie zainicjować drugi nowy świat. * `Follows` [nowe] określa, w jaki sposób można łączyć kroki. * Każdy krok testowy, który nie jest krokiem „Początkowym”, musi zawierać co najmniej jedną instrukcję „Następuje”. Każda instrukcja może zawierać jeden lub więcej kroków równorzędnych — te kroki muszą być wykonane jako pierwsze, zanim będzie można wywołać ten krok. **Teraz sedno. Po określeniu wszystkich tych reguł mechanizm sekwencyjnego wykonywania testów wylicza WSZYSTKIE możliwe sekwencjonowanie tych zestawów kroków.** Wylicza wszystkie ścieżki od „Początkowej” do „Końcowej”, używając dowolnych kroków pośrednich, które umożliwiają utworzenie ścieżki. Ostrzeże Cię również o pętlach i innych potencjalnych problemach oraz pozwoli Ci wybrać, jak sobie z nimi radzić.


title: Korzystanie z Gita w środowisku Enterprise

text: Git to doskonały system kontroli wersji. Jeśli wykluczymy fakt, że nie ma doskonałej obsługi GUI, jest naprawdę dobry i szybki. Ale kontrolki źródłowe, takie jak Clearcase, mają duże wsparcie dla klientów korporacyjnych. Firmy inwestują ogromne kwoty w serwery kontroli źródła i licencje. Ostatnio większość dużych firm, takich jak Google, przejmuje Git zamiast innego systemu kontroli wersji. Ale ta firma ma silną grupę open source, która konsekwentnie zapewnia rozwój i wsparcie dla narzędzia (mogą nawet mieć własną niestandardową wersję Git). Jednocześnie duże firmy nie przejmują się przyjmowaniem projektów open source i dostosowywaniem ich do nich. * Czy Git jest naprawdę niezawodnym narzędziem dla środowiska korporacyjnego, zwłaszcza na platformie Windows? * Wsparcie jest kwestionowane dla Git, ponieważ jest to produkt typu open source. * Czy jest jakaś firma, która dostarcza rozwiązania i wsparcie? Jakie są koszty serwera w porównaniu z innymi kontrolami wersji, takimi jak Clear-case?


title: Czy reklamy w przeciętnych aplikacjach na Androida są opłacalne?

text: Zakładam, że to pytanie jest tutaj do zaakceptowania, ponieważ jest to część tworzenia oprogramowania, ale nie jest specyficzna dla programowania. Jeśli lepiej pasuje do innego obszaru, czy ktoś mógłby mi pomóc? Wiem, że reklamy mogą być opłacalne w przypadku niektórych niezwykle popularnych aplikacji, ale jak radzą sobie przeciętne aplikacje? Za chwilę wydam aplikację i myślę, że będzie ona dość popularna, ale nie jest to kolejny Angry Birds. Myślę, że będzie kilka tysięcy użytkowników. Czy kilka tysięcy użytkowników korzystających z aplikacji około 15-20 minut raz lub dwa razy dziennie zarobi jakieś rzeczywiste zyski? Jakie masz doświadczenia z reklamami? Jakich liczb potrzebujemy, aby zdobyć coś wartościowego? Dzięki~


title: Czy badano „Nie każdy może być programistą”?

text: Stare powiedzenie, którego trzyma się wielu programistów, brzmi: „Nauczenie się programowania wymaga pewnego rodzaju umysłu, a nie każdy może to zrobić”. Teraz jestem pewien, że wszyscy mamy swój własny skarbnicę anegdotycznych dowodów, ale czy zostało to zbadane naukowo?


title: Jak mogę zamknąć mój projekt Open Source i co jest ode mnie wymagane, aby uczynić go zamkniętym?

text: Powiedzmy, że chciałem zamknąć mój licencjonowany projekt „GPL v 2.0 (lub podobny)”, do którego jestem jedynym współpracownikiem, i uczynić go zamkniętym źródłem. * Czy po zamknięciu projektu nadal muszę udostępniać istniejący kod licencjonowany „GPL v 2.0 (lub podobna)” lub czy mogę odmówić wydania kodu źródłowego dla starych wersji, które wcześniej były objęte licencją „GPL v 2.0 (lub podobna)” ? * Czy teoretycznie mogę zachować licencję „GPL v 2.0 (lub podobną)” nawet po usunięciu publicznego kodu źródłowego, czy też muszę rozpowszechniać kod źródłowy, jeśli używam licencji „GPL v 2.0 (lub podobnej)” ?


title: Sugestie dotyczące znalezienia kodu do przeglądu, czyli dla CodeReview.SE

text: Szukasz sugestii dotyczących znalezienia kodu do przejrzenia lub, aby być bardziej przejrzystym, kodu w witrynach SE z wyłączonym kodem roboczym - zasugeruj, aby zasugerować opublikowanie go na CodeReview.SE w celu optymalizacji. Źródłem tego pytania było inne pytanie, które zamieściłem na CodeReview.SE.meta Growing Code Review, One Idea... :-) Na które otrzymałem odpowiedź: * * * > Jasne, możesz, o ile ludzie są jasni do czego służy przegląd kodu -- > zasadniczo, działający, działający kod, który należy poprawić w jakiś > subiektywny, a może nawet estetyczny sposób. > > Jeśli kod jest w jakikolwiek sposób uszkodzony lub nie działa, nie jest to celem Code Review. > > Jeff Atwood * * * Jeśli ktoś ma sugestie, jak ulepszyć to pytanie, po prostu je skomentuj.


title: Jak sprawić, by e-maile były krótkie, ale kompletne?

text: Jestem dziwnym typem programisty, który lubi pisać i wyjaśniać - e-maile, specyfikacje, co tylko chcesz. Lubię pomagać ludziom dogłębnie zrozumieć rzeczy. Nienawidzę komunikacji ping-pongowej, w której grupy przechodzą przez 30 lub 40 e-maili, telefonów i spotkań, ponieważ 25% grupy źle zrozumiała poprzednią, przerywaną wiadomość, w której autor tylko w połowie wyjaśnił swoje stanowisko lub spieszył się i źle napisał krytyczne słowo lub pominięte przeczenie lub dwa. Ta cecha jest świetna do dokumentacji, ale moje e-maile są długie, więc ludzie po prostu ich nie czytają. Kilka strategii, których użyłem, to formatowanie długich wiadomości e-mail jako załączonych dokumentów Word, aby zachęcić ludzi do przeglądania ich jako dokumentacji (czasami działa zaskakująco dobrze) lub próba używania większej liczby wypunktowań zamiast wolnych akapitów. Strategie te zwiększają czytelnictwo, ale treść jest wciąż długa. Oczywiście chcę krzyczeć i krzyczeć, że złożone tematy techniczne wymagają dużo ekspozycji i wyjaśnień, ale to nikomu nie pomaga. Oczywiście są kompromisy, które można zrobić, ale trudno mi usprawiedliwić składanie oświadczeń, które nie są jasne lub które spowodują milion pytań, nieporozumień lub dodanych później „warunków”. Jak sprawić, by komunikacja była krótka, ale kompletna?


title: JavaScript dla nie-programisty

text: 2 lata temu zacząłem uczyć się AS3, aby zostać zatrudnionym w firmie zajmującej się projektowaniem stron internetowych. Kilka miesięcy później porzuciłem to, ponieważ odkryłem, że jestem lepszy w projektowaniu; więc teraz jestem projektantem stron internetowych. Niedawno zdecydowałem, że znajomość JavaScript będzie miła i pomocna, więc zacząłem od Essential JavaScript Training od Lynda.com. Do dziś miałem wrażenie, że moja wiedza programistyczna jest trochę podstawowa. Co się dzisiaj wydarzyło...? Nauczyłem się (metodą prób i błędów), że zmienne obowiązują tylko w funkcjach, w których są zdefiniowane. To wywróciło mój świat do góry nogami. Pomyślałem: „teraz ma to sens…” myśląc o tych wszystkich bólach głowy, jakie przysporzył mi brak tej konkretnej wiedzy. Jak mogłem przegapić tak fundamentalną rzecz podczas nauki AS3 (a teraz JS)? Nie. Pamiętam, że przeczytałem co najmniej trzy książki o AS3, ale żadna z nich nie nauczyła mnie programowania. Chciałbym Cię zapytać, czy mógłbyś polecić mi dobrą książkę o JavaScript, z której oprócz składni mogę nauczyć się również programowania. Dziękuję! I przepraszam za mój zły angielski :)


title: Unix w przeciwieństwie do Windows (Java i C++)

text: Najpierw powinienem wyjaśnić tło. Jestem zainteresowany rolami programistycznymi handlu wysokiej częstotliwości. Po przyjrzeniu się wielu specyfikacjom pracy wyraźnie widać, że istnieje duże zapotrzebowanie na programistów, którzy programowali Javę i C++ na Unixie, a nie na Windowsie. Moje pytanie brzmi, jakie są różnice, które napotka programista High Freq? Nie może to być coś w samym języku, ponieważ składniowo nie różnią się od systemu operacyjnego? Dlatego pomyślałem, że musi to być coś, z czym język programowania ma się komunikować, zasoby itp.? Czy ktoś mógłby mi pomóc, gdy próbuję ulepszyć mój C++/Java w systemie Unix, aby dążyć do tego typu kariery? ps Zgaduję, że część tej odpowiedzi dotyczy infrastruktury gniazd w systemie Unix?


title: Generowanie kodu Java z diagramu klas

text: Jestem w trakcie tworzenia aplikacji Java, w której użytkownik może dostarczyć diagram klas i uzyskać odpowiedni kod Java. Nie wiem, jak mogę pozwolić użytkownikowi interaktywnie _narysować_ diagram klas w Javie. Obecnie pobieram wymagane parametry, takie jak atrybuty, funkcje bezpośrednio od użytkownika, a następnie renderuję dla niego diagram klas. Pokazuję diagram klas na jdialogu. Ale jeśli chodzi o wiele diagramów klas, to mnie to wkręca. Czy jest na to lepszy sposób? To jest przykład diagramu klas, muszę go wygenerować z programu w Javie, biorąc pod uwagę wartości i relacje. ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/MgwsJ.jpg)


title: Jaki wzorzec kryje się za respond_to / respond_with w Railsach?

text: Czy jest na to konkretna nazwa? U mnie wygląda jak router widokowy lub router prezenterowy (tak bym to nazwał), ale może jest lepsza nazwa i wyjaśnienie.


title: Czy w moim pliku konfiguracyjnym zaleca się używanie czegoś innego niż XML?

text: Mam małe narzędzie, które projektuję, które wymagałoby jakiegoś pliku konfiguracyjnego. Plik konfiguracyjny w moim przypadku jest bardziej bazą danych, ale musi być lekki, a w razie potrzeby użytkownik końcowy powinien łatwo go edytować. Jednak będzie w nim również wiele rzeczy. (w zależności od pewnych czynników może wynosić 1 MB lub więcej) Zdecydowałem, że wolę używać zwykłego tekstu, zamiast próbować używać SQLite lub czegoś podobnego. Jednak używając tekstu mam też do czynienia z różnorodnością formatów. Do tej pory moje opcje to * XML * JSON * Format niestandardowy Dane w moim pliku są dość proste i składają się w większości z rzeczy typu klucz-wartość. Tak więc niestandardowy format nie byłby taki trudny... ale wolałbym nie martwić się o pisanie wsparcia dla niego. Nigdy nie widziałem JSON używanego do plików konfiguracyjnych. Myślę, że XML znacznie zwiększyłby rozmiar pliku. (Po prostu mam ogólnie niechęć do XML). Co powinienem zrobić w takim przypadku? Czynniki do rozważenia: * Ten plik konfiguracyjny można przesłać do serwisu internetowego (więc rozmiar ma znaczenie) * Użytkownicy muszą mieć możliwość ręcznej edycji, jeśli to konieczne (łatwość edycji i czytania) * Musi być w stanie generować i przetwarzać automatycznie ( szybkość nie ma większego znaczenia, ale nie jest nadmiernie wolna) * "Klucze" i "wartości" są zwykłymi łańcuchami, ale muszą być zmienione, ponieważ mogą zawierać wszystko. (unicode i escaping muszą działać łatwo) * **Wiele** plików konfiguracyjnych. Zasadniczo każdy plik konfiguracyjny jest powiązany z jednym „projektem”


title: Pomóc zidentyfikować terminologię zastępowania wzorców?

text: To źle zatytułowane pytanie... może moderator może to ulepszyć. Prawie dwie dekady temu studiowałem grafikę komputerową. Musieliśmy zrobić wszystko, co chcieliśmy w ostatecznym projekcie, o ile pokazał to, czego dowiedzieliśmy się o CG. Przeczytałem więc książkę (w ogóle nie potrafię wymyślić nazwy), w której opisano metodologię generowania obrazów fraktalnych zaczynając od prostego kształtu i mutując go za pomocą podstawienia. Opisywał abstrakcyjne fraktale i fraktale drzewo/kwiat. Przypominam sobie implementację Trójkąta Sierpińskiego w jednym z moich przykładowych danych wejściowych oraz w drzewie 3D. Dane wejściowe do programu były w zasadzie serią dowolnych symboli zdefiniowanych przez program. `-----=` może reprezentować różę. Następnie stosujesz substytucje dla danego wzoru. `--= > -+=---=` może reprezentować dłuższą różę z kolcami. Tak więc, stosując ten wzorzec do początkowego łańcucha, otrzymujesz `----+=---=`. Na koniec zapętlisz ten ciąg `N` kilka razy, aby uzyskać pożądany efekt. Sama książka oferowała mnóstwo danych wejściowych z przykładowymi zdjęciami, ale bez rzeczywistego kodu źródłowego. Wdrożenie zostało całkowicie pozostawione deweloperowi. Chciałbym wiedzieć, czy ktoś może mi pomóc z terminologią tej techniki i punktami bonusowymi za tytuł książki (lub książki), która opisywała ten proces?


title: Kiedy nagłówki żądań są odczytywane przez kod ASP.NET?

text: Mam problem z moją witryną MVC 4, w której Safari iOS automatycznie wysyła nagłówek DNT z pierwszym żądaniem do witryny. Oto moje pytanie na StackOverflow. Mimo że iPhone ma wyłączone ustawienie DNT, nadal wysyła ten nagłówek. Tak więc, mój sposób na naprawienie tego polega na utworzeniu ActionFilter, który usunie ten nagłówek, jeśli istnieje. Moja pierwsza próba polegała na dodaniu mojego niestandardowego ActionFilter do metody FilterConfig.RegisterGlobalFilters. To nie zadziałało (chociaż nie miałem wtedy przed sobą Skrzypka, żeby zobaczyć, co się naprawdę dzieje). Dopóki moja przeglądarka (iOS Safari) pozostanie otwarta, zawsze będzie mnie pamiętać, ale chcę, aby pamiętała mnie między sesjami przeglądarki. Więc moja następna myśl to spróbować dodać usunięcie tego nagłówka wewnątrz metod Application_BeginRequest lub Session_Start w pliku Global.asax. Oto przydatna strona, która pokazała, jakie metody są dostępne w pliku Global.asax i w jakiej kolejności są przetwarzane. Prowadzi to do mojego pytania, w którym momencie procesu przetwarzania żądania należy uzyskać nagłówki (w szczególności nagłówek DNT) analizowane, które są używane przez uwierzytelnianie formularzy [sesja/plik cookie]? Wydawałoby się, że zanim żądanie trafi do mojej metody ActionResult, nagłówek DNT został już odczytany i „przetworzony”. Chcę móc go rozebrać w jak najwcześniejszym momencie. Btw, nie jestem teraz przy moim domowym komputerze, gdzie jest mój kod. Nie będę w stanie zacząć nad tym pracować, dopóki żona nie pójdzie spać (23:00), więc chcę się upewnić, że mam wszystkie jajka w jednym rzędzie, zanim zacznę pracować, abym mógł osiągnąć tyle, co tak szybko jak to możliwe. Potrzebuję dziś wieczorem dużego wydania produkcyjnego i chciałbym, aby to również zostało naprawione... Dziękuję za wszelką pomoc/wkład, jeśli jesteś w stanie... Edytuj: Wszelkie inne sugestie dotyczące tego pytania lub taki, do którego odwoływałem się/podłączyłem powyżej na StackOverflow?


title: Jak ważny jest już Test Acid3 i co powinien go zastąpić?

text: Przez długi czas domyślnym przewodnikiem po najnowszych standardach obsługi przeglądarek był test Acid 3. Właśnie uruchomiłem to na Windows 7 (x64) dla Chrome 15.0, Firefox 7.0, Safari 5.1 i IE 9.0 i wszystkie uzyskały 100 punktów. Niektóre animacje mogą być płynniejsze, ale ogólnie nie ma ich zbyt wiele do odróżnienia. Następnie przyjrzałem się wynikom dla html5test.com, które pokazują znacznie większe zróżnicowanie: * 343/450 : Chrome 15,0 * 298/450 : Firefox 7.0 * 293/450 : Safari 5.1 * 141/450 : IE 9.0 Czy są inne testy które są przydatne do obsługi funkcji przeglądarki? Jaki minimalny wynik w teście HTML5 to „dobry” wynik? Jak ważny jest wynik testu HTML5 i czy naprawdę pozwala poprawnie przetestować wszystkie nowe funkcje? Czy to dobry zamiennik testu Acid 3? Czy współczesne przeglądarki są teraz wystarczająco zgodne, aby użytkownik końcowy mógł pozostać nieświadomy poziomu obsługiwanych standardów?


title: Czy istnieje sposób na uruchomienie javascript na obecnej stronie internetowej?

text: Nie mam wykształcenia programistycznego. Niedawno zacząłem uczyć się javascriptu. Zastanawiam się, czy istnieje sposób na uruchomienie javascript na stronie internetowej? na przykład chciałbym napisać javascript na tej stronie, który sprawdza wszystkie pytania zadane w ciągu ostatniej godziny i coś robi. Czy to w ogóle możliwe?


title: Jaki aparat wybrać do użytku z JMF (Java Media Framework)

text: Przez ostatnie 2-3 tygodnie szukałem różnych sposobów implementacji niestandardowego przesyłania strumieniowego wideo oraz bardziej ogólnego przechwytywania i manipulowania wideo, przechodząc przez karty DVR, karty przechwytywania wideo i tym podobne. W jakiś sposób JMF był w stanie pozostać poza moim zasięgiem przez cały ten czas, ale odkąd się o tym dowiedziałem, jestem coraz bardziej pewien, że jest to dla mnie wygodny poziom do rozpoczęcia zabawy z wideo i innymi rzeczami. Jednym z głównych tematów, który przychodzi mi do głowy podczas szukania więcej informacji, była obecność wielu postów, w których ludzie narzekali na to, że jakaś konkretna kamera (przez większość czasu myślę, że chodzi o kamery internetowe) nie działa z JMF. Mimo, że istnieje wiele różnych kamer (niekoniecznie kamery internetowej), które nie są tak drogie, chcę grać bezpiecznie i kupić taki, który działa dobrze z JMF. Również ze względu na brak doświadczenia może to nie ma znaczenia, ale ponieważ kupię aparat głównie do nauki i eksperymentowania, chcę mieć maksymalną możliwą swobodę manipulowania różnymi funkcjami, opcjami i tak dalej.


title: Dlaczego przyjaciel w C++ powinien znajdować się w pliku nagłówkowym?

text: Przyjazna funkcja/klasa, FriendOfX dla jakiejś dowolnej klasy X jest szczegółem implementacji klasy X. Dlaczego w C++ musimy je zadeklarować w pliku nagłówkowym? Czy istnieją przekonujące powody, dla których ta umowa (między X a FriendOfX) jest wyraźna? Rozumiem, że mogą istnieć uzasadnione powody, dla których ta umowa jest jawna, ale w niektórych przypadkach nie chciałbym, aby mój klient korzystający z interfejsu klasy X wiedział o FriendOfX, ponieważ FriendOfX obsługuje pewne aspekty współpracy w interfejsie klasy X, które są specyficzne dla implementacji


title: Rozbieżności w narzędziach zapewniania jakości

text: Trochę ironiczne, wczoraj odpowiedziałem na pytanie związane z tym tematem, który został oznaczony jako dobry, a dziś to ja pytam. Oto moje przemyślenia i pytanie: Uzgodnijmy też warunki: QA to zbiór czynności, które określają i wdrażają procesy podczas rozwoju SW. Powszechnym narzędziem jest audyt procesu. Jednak mój kolega w pracy zgadza się z opinią, że przeglądy i inspekcje są również narzędziami zapewniania jakości, chociaż większość źródeł klasyfikuje je jako kontrolę jakości. Powiedziałbym, że obie strony mają częściowo rację: podczas inspekcji oceniamy fizyczny produkt (wyraźnie QC), ale widzimy go jako białe pole, dzięki czemu możemy sprawdzić jego zgodność z ustalonymi procesami (QA). Czy uważasz, że to jest przyczyną dychotomii wśród autorów? Wiem, że to bardziej akademickie pytanie, ale zasługuje na odpowiedź :)


title: Jak powiedzieć View, aby utworzył plik cookie?

text: Mam klasę `LoginService` z metodą `loginUser($email, $password, $remember = false)` w warstwie aplikacji mojej warstwy modelowej. Teraz, jeśli `$remember` jest `true`, musi utworzyć trwały plik cookie logowania użytkownika w przeglądarce klienta, ale ponieważ jest to odpowiedzialność View, jaki jest dobry sposób na dotarcie do widoku przez kontroler, aby pozwolić mu wiesz, że powinien utworzyć dla niego plik cookie?


title: Frameworki PHP – czy powinienem ich używać?

text: Przede wszystkim wyjaśnię, kim jestem: jestem programistą PHP pracującym dla firmy rozwijającej swój CMS, który obsługuje sklepy internetowe, kanały danych i inne treści, takie jak blogi. Programuję od 6 lat, z czego 4 w PHP. (Kiedyś byłem programistą C#). Moje pytanie dotyczy frameworków PHP. Widzę tak wiele ofert pracy z prośbą o zend, cakephp i inne rodzaje frameworków MVC. Jednak nawet jako doświadczony programista nigdy nie korzystałem z frameworka PHP. Czy powinienem zacząć się uczyć? Jeśli tak, to od czego mam zacząć, skoro jest ich tak wiele. Mam zamiar przepisać tak wiele CMS mojej pracy i zastanawiam się, czy mógłbym sobie wiele pomóc, używając frameworka. Co myślą ludzie? Biorąc pod uwagę, że będę pisać od nowa wiele rzeczy ze sklepu internetowego... Mam doświadczenie w OO i korzystałem w przeszłości z frameworka .NET. Z góry dziękuję za odpowiedzi.