title: Procesor OpenGL kontra GPU

text: Więc zawsze miałem wrażenie, że praca na GPU jest zawsze szybsza niż na CPU. Z tego powodu w OpenGL zwykle staram się wykonywać intensywne zadania w shaderach, aby uzyskać przyspieszenie od GPU. Jednak teraz zaczynam zdawać sobie sprawę, że niektóre rzeczy po prostu działają lepiej na procesorze i faktycznie działają gorzej na GPU (szczególnie, gdy zaangażowany jest shader geometrii). Na przykład w niedawnym projekcie dotyczącym terenu generowanego proceduralnie próbowałem przekazać siatkę pojedynczych trójkątów do shadera geometrii i teselować każdy z tych trójkątów w czworokąty z 400 wierzchołkami, których wysokość została określona przez funkcję szumu. Działało to dobrze i wyglądało świetnie, ale łatwo zmaksymalizowało GPU z zaledwie 25 trójkątami bazowymi i spowodowało bardzo powolną liczbę klatek na sekundę. Odkryłem wtedy, że zamiast tego tesselacja na procesorze i ustawianie wysokości (za pomocą funkcji szumu) w Vertex Shader było w rzeczywistości szybsze! To skłoniło mnie do zakwestionowania korzyści płynących z używania GPU w jak największym stopniu... Zastanawiałem się więc, czy ktoś mógłby opisać ogólne zalety i wady używania GPU w porównaniu z CPU do intensywnych zadań graficznych. Wiem, że sprowadza się to głównie do tego, co próbujesz osiągnąć, więc jeśli to konieczne, użyj powyższego scenariusza, aby omówić, dlaczego „CPU + Vertex Shader” był w rzeczywistości szybszy niż robienie wszystkiego w Geometry Shader na GPU. Możliwe, że mój sprzęt (najnowszy macbook pro) nie jest dobrze zoptymalizowany pod kątem shadera geometrii (co powoduje powolną liczbę klatek na sekundę). Przeczytałem też, że Vertex Shader jest bardzo dobry z równoległością i chciałbym szybko wyjaśnić, w jaki sposób mogło to odegrać rolę w przyspieszeniu mojego terenu proceduralnego. Wszelkie informacje/rady dotyczące procesora/GPU/shaderów byłyby świetne!


Czy aparat widoku Spark dla ASP.NET nie działa? Rozważam użycie go do nowego projektu. Próbowałem zostać zatwierdzony do Grup dyskusyjnych Google, ale nikt mnie nie zatwierdził. Ostatnia wiadomość tam zamieszczona była w maju. Próbowałem wysłać e-mailem do programistów, ale nikt nie odpowiedział. W tej chwili nie mam radości z tego, że używam SPARK do mojego dużego projektu. Czy ten projekt jest martwy, zwłaszcza po wypuszczeniu Brzytwy?


title: Jak obsługiwać zabezpieczenia dostępu na poziomie pola podczas korzystania z Entity Framework

text: Scenariusz: duży istniejący system (~300 tabel, 500 przechowywanych procesów, 200 widoków i baza kodu składająca się z kilku 100 tys. wierszy) z większością elementów poziomu bezpieczeństwa w procedurach przechowywanych musi zostać zrefaktoryzowany (ze względu na łatwość konserwacji i dostępność umiejętności, które będą bardziej prawdopodobne przenieść się do warstwy C#, a także mamy nadzieję na wydajność, ponieważ będziemy w stanie lepiej kontrolować, co zostanie wyciągnięte, gdy będzie lepiej). Entity Framework to coś, co poważnie rozważamy, aby ułatwić rozszerzanie rzeczy (dziedziczenie schematu zaplecza z klasy bazowej na przykład bez konieczności śledzenia za każdym razem masowego sprzężenia). Pytanie: jak obchodzisz się z zabezpieczeniami za pomocą Entity Framework? Przykłady, które widziałem, pokazują, jak uzyskać model/model danych do obsługi bezpieczeństwa w całym serwisie (tokeny do tego, czy ten facet może się logować? rodzaje rzeczy). Jak możesz powiedzieć, że zwykły użytkownik widzi te 3 pola w klasie, a administrator może zobaczyć te 10? Pola te mogą być logicznie tabelami innych klas (np. zamówienia konkretnego klienta). Co powiesz na takie rzeczy jak „ten post jest przeczytany”? Czy po prostu dodajesz do klasy listę osób, które „przeczytały”, czy jest to sprytniejszy sposób, aby EF zwracał różne wersje tego samego obiektu w zależności od tego, kim jesteś? Czy istnieje sposób, aby EF zrobił to za ciebie bez potrzeby dużej ilości logiki w przechowywanych procesach? Jeśli nie w jaki sposób zarządzasz wydajnością (powiedzmy, że osoba może zobaczyćpojedynczy obiekt i klikasz model dla listy obiektów to przeprowadź filtrowanie wyżej w C# co oznacza, że możesz otrzymać 1000 elementów, ale przekazujesz tylko 1 do klienta ). Czy możesz leniwie ładować poszczególne pola, aby jeśli tylko słabi użytkownicy wysyłali żądania, wszystkie pola administratora nie zostały ściągnięte z bazy danych?


title: Jakie konkretne projekty mogę wykonać, aby opanować operacje bitowe w C++? Czy istnieje też księga kanoniczna?

text: W mojej obecnej pracy nie używam C++ ani operacji bitowych, ale myślę o aplikowaniu do firm, w których wymagana jest biegłość w ich obsłudze (i tak na ich testach). **Więc moje pytanie brzmi:** Czy ktoś może zaproponować projekt, którego ukończenie będzie wymagało biegłości w operacjach bitowych? Na marginesie, czy istnieje kanoniczna książka na temat technik optymalizacji wykorzystujących operacje bitowe, ponieważ wydaje się to być ważnym ich zastosowaniem?


title: Jakie są korzyści i koszty adnotacji komentarzy w PHP?

text: Właśnie zacząłem pracować z symfony2 i natknąłem się na adnotacje w komentarzach. Chociaż adnotacje w komentarzach nie są nieodłączną częścią PHP, symfony2 dodaje wsparcie dla tej funkcji. W moim rozumieniu komentowanie powinno sprawić, że kod będzie bardziej zrozumiały dla człowieka. Komputer nie powinien dbać o to, co jest w komentarzach. Jakie korzyści płyną z robienia tego typu adnotacji w porównaniu do zwykłego umieszczania polecenia w normalnym kodzie PHP? ie- /** * @Route("/{id}") * @Method("GET") * @ParamConverter("post", class="SensioBlogBundle:Post") * @Template("SensioBlogBundle:Annot:post" .html.twig", vars={"post"}) * @Cache(smaxage="15") */ funkcja public showAction(Post $post) { }


title: Dobry pomysł, aby umieścić numery błędów w komentarzu na początku pliku źródłowego?

text: Czy dobrą praktyką jest umieszczanie numerów błędów w samym pliku w komentarzu nagłówka? Komentarze wyglądałyby mniej więcej tak: ZMODYFIKOWANY (MM/DD/RR) abc 01/21/14 - Błąd 17452317 - npe w drążeniu w trybie edycji deski rozdzielczej cde 01/17/14 - Błąd 2314558 - inny opis błędu Wygląda na to pomocne, ale czy jest to uważane za złą praktykę?


title: Badania nad tym, jak dobrze programista może zrozumieć kod w nieznanych językach?

text: Czy są jakieś poważne badania na temat tego, jak dobrze doświadczony programista znający język X może zrozumieć kod napisany przez kompetentnego programistę przy użyciu języka Y dla szerokiego zakresu powszechnie używanych języków, takich jak X i Y? Oczywiście świat rzeczywisty nie jest taki prosty, ponieważ programista zna tylko jeden język. Chcielibyśmy wiedzieć: jeśli wykonamy nasz projekt, powiedzmy, w C#, a pewnego dnia przyjrzą się mu starzy fizycy, którzy znają tylko Fortrana i Algola, to w jakim stopniu miałoby to dla nich sens? Matematyczne fragmenty mogą być dla nich dobre, jeśli zignorują to, co dla nich są losowymi znakami interpunkcyjnymi. A może ekspert od Pythona byłby w stanie znaleźć błędy w moim sprytnym skrypcie Ruby? Mogą pojawić się problemy od poziomu składni powierzchownej do poziomu wielkich pojęć, takich jak obiekty, metaprogramowanie szablonów, funkcjonalność i tak dalej. Nie oczekuję, że jeden programista w pełni zrozumie każdy szczegół składni kodu w „języku obcym” lub będzie podążał za religią jakiejś wielkiej koncepcji, ale zastanawiam się, w jakim stopniu uzyska główny przepływ kontroli, znajdź miejsce gdzie coś jest narysowane na ekranie i co decyduje o jego kolorze lub rozmiarze, sprawdź, czy robot zaprogramowany do prowadzenia samochodu wyłączy silnik, gdy to zrobi, tego typu rzeczy. Dobrej jakości badanie obejmowałoby opublikowane badania naukowe, oficjalny raport jakiejś grupy branżowej lub dużej firmy programistycznej, chociaż będę brał systematyczne, bezstronne obserwacje przez doświadczonych liderów warsztatów i zajęć lub inne źródła. Nie interesują mnie krótkie blogi, przykłady pojedynczych przypadków ani anegdoty. (Cóż, może kilka anegdot, jeśli stanowią dobrą lekturę.)


title: Serwisy internetowe i silniki reguł biznesowych

text: Mamy serwis internetowy, który przyjmuje różne rodzaje wiadomości. Funkcją serwisu internetowego jest jedynie zapisywanie w bazie danych treści wiadomości. Istnieje około jednej tabeli (z kluczami obcymi do innych) dla każdego rodzaju wiadomości. Zostaliśmy poproszeni o przekształcenie usługi sieciowej w konfigurowalny produkt przy użyciu silnika reguł biznesowych. Aby mieć pełną konfigurowalność, kolega zasugerował, że najlepszym sposobem może być przekształcenie usługi internetowej z takiej, która akceptuje wiele rodzajów wiadomości na taką, która akceptuje jeden rodzaj wiadomości, ale w treści wiadomości znajduje się pole, które wskazuje rodzaj wiadomości Zawartość. W ten sposób istniałaby tylko jedna tabela dla komunikatów (plus inne tabele dla informacji statycznych) i byłaby bardziej konfigurowalna przy użyciu silników reguł biznesowych. Jaki jest najlepszy sposób na poradzenie sobie z taką sytuacją? **Aktualizacja:** w przypadku silników reguł biznesowych najprawdopodobniej użyjemy implementacji algorytmu Rete, takiego jak Drools


title: Branże i rodzaje projektów unikające OO

text: Wygląda na to, że OO jest wszędzie. Co jeśli ktoś po prostu nie wyjdzie poza prosty poziom, bez względu na to, ile książek, warsztatów, życzliwych mentorów itp. miał? Tak jak niektórzy ludzie są głusi i nie mogą nosić melodii w wiadrze, wydaje się, że są tacy, którzy po prostu nie będą kontynuować projektu opartego na głębokich i wyrafinowanych projektach obiektów. Jednak są to mądrzy ludzie, którzy z pewnością przynieśliby wiele korzyści w jakiejś roli w jakiejś organizacji. Jakie typy projektów w jakich branżach są w dużej mierze wolne od OO i można oczekiwać, że tak pozostanie przez kilka następnych lat?


title: Jedna globalna HashMap a wiele lokalnych HashMaps?

text: Co jest bardziej wydajne; który jest szybszy? Kompromisy? Celem jest szybkie wyszukiwanie w aplikacji internetowej. UUID są kluczami, więc globalne będą działać. Około 50 milionów wartości. Globalna pamięć podręczna jest zdecydowanie łatwiejsza w zarządzaniu niż wiele mniejszych, nawet przy użyciu JMX. Ale miałem przeczucie, że być może całkowite obciążenie wewnętrzne tablicy mieszającej byłoby jakoś mniejsze w przypadku globalnej tablicy mieszającej w porównaniu z wieloma rozłożonymi na różne klasy. Nie mogę jednak znaleźć na to żadnych dowodów. Edycja: Proszę, musisz wykonać kopię zapasową swojego roszczenia, jeśli koszty ogólne są minimalne lub nawet jeśli są znaczące. Może należy to przenieść na forum Informatyki?


title: Język z cukrem składniowym, który tłumaczy się na C++, który wygląda na „odręczny”

text: Jestem studentem i mam pracę domową w C++. Mój profesor chce osobnych plików hpp i cpp dla każdej klasy C++. I po prostu nie czułem się dobrze, ile musiałem pisać i ile musiałem klikać, aby utworzyć dwa nowe pliki dla każdej klasy. Na chybił trafił ułożyłem prosty skrypt w Pythonie, który odczytałby jeden plik i wygenerowałby wszystkie potrzebne klasy (proste rzeczy, takie jak nazwa klasy, lista członków i lista rzeczy do #zawarcia, które posypałem cukrem składniowym, ale trudne rzeczy do parsuj takie jak nazwy typów i ciała funkcji, które w większości skopiowałem i wkleiłem, z wyjątkiem tego, że mój skrypt przeszukuje w bardzo prymitywny sposób, aby zakwalifikować sygnatury metod z nazwą klasy podczas generowania pliku implementacji). I czułem się z tym całkiem dobrze. Ale zdałem sobie sprawę, że gdyby wielu innych ludzi pracowało nad podobnym problemem w przeszłości, prawdopodobnie mogliby zrobić to lepiej. Wiem, że schemat Chicken przekłada się na C, podobnie jak vala i genie, ale z tego, co rozumiem, z tego rodzaju translatorami nie masz tak naprawdę pełnej kontroli nad wyjściem C. Czy znasz jakieś translatory, które wyprowadzają C++, które w dużej mierze zachowują nienaruszoną semantykę C++, dzięki czemu wyjściowe pliki C++ wyglądają na napisane odręcznie, ale język źródłowy jest po prostu załadowany wspaniałą składnią, która ułatwia życie? Może nawet zamieszanie językowe z ciałem funkcji, tak że jeśli wpiszę coś takiego jak `vector<int> v = [1,2,3,4,5]` stanie się `vector<int> v; v.push_back(1); v.push_back(2); ..` w wygenerowanym źródle? Może masz automatycznie wstawiane nawiasy klamrowe na podstawie wcięcia? Czy znaki nowej linii służą jako średniki?


title: historia i obszary zastosowań paradygmatu programowania 'pull'/'push'

text: Ostatnio czytając wiele materiałów na temat programowania reaktywnego, jedną z często wymienianych rzeczy jest styl aplikacji „PUSH” kontra „PULL”. Sterowane zdarzeniami (programowanie reaktywne) Niektórzy autorzy twierdzą, że oba te style mają swój obszar zastosowań, ale czy większość domen aplikacji, które próbujemy modelować, nie zmienia się gwałtownie w świecie rzeczywistym, a zatem sterowanie zdarzeniami jest bardziej odpowiednie? I dlaczego zaczęliśmy od podejścia „PULL”, a teraz przechodzimy w podejście „Push”, czy są jakieś konkretne powody powodujące zmianę?


title: Dlaczego istnieje zespół testowy?

text: > **Possible Duplicate:** > Dlaczego pozwolić / nie pozwolić programistom na testowanie własnej pracy Programiści rozwijają kod i oprogramowanie. Tak, to znaczy, że bardzo dobrze wiedzą o tym, co zrobili. Ale dlaczego w firmach IT zawsze jest osobny dział zwany działem testowania? (Głównie do testowania wyników dla programistów) Dlaczego programista nie wykonuje **Testowania** własnego kodu? Czy to dział testowania bardzo dobrze zna się na kodzie programistów, jeśli tak to skąd? Z góry dziękuję.


title: Czy można wstawić skrót pliku wykonywalnego do samego pliku wykonywalnego bez zmiany wynikowego skrótu? Jaka jest najlepsza alternatywa?

text: Ostatnio myślałem o tym problemie i naprawdę nie wydaje mi się to możliwe, ale pomyślałem, że zapytam na wszelki wypadek. Załóżmy prosty program, w pseudokodzie: uruchom skrót na pliku wykonywalnym, który naszym zdaniem naśladuje prawdziwy plik wykonywalny sprawdź wartość z haszem, który jest na stałe zakodowany w tym pliku wykonywalnym, jeśli pasuje, wykonaj x, jeśli nie, zrób y Teoretycznie powinno być całkiem bezpieczne , ponieważ tylko prawdziwy plik wykonywalny byłby w stanie wytworzyć ten sam skrót, który jest zakodowany w pliku wykonywalnym, ale minuta, w której skrót zostanie skompilowany do tego pliku wykonywalnego, zmieni się. Czy uważasz, że możliwe jest w ogóle zakodowanie powstałego skrótu w jakikolwiek realistyczny sposób? Na pytanie, które ma bardziej prawdopodobną odpowiedź; Jaki byłby najbezpieczniejszy sposób upewnienia się, że plik wykonywalny jest w rzeczywistości tym samym plikiem wykonywalnym, który był dystrybuowany z programem, a nie jakimś plikiem wykonywalnym oszusta próbującym przejąć kontrolę nad systemem?


Moinsen, jakoś utknąłem w problemie projektowym. Język to ANSI-C. Załóżmy, że mamy tkerbox modułów-programów: * jeden moduł dla logiki **Logic** * (co najmniej) jeden moduł logujący **Logger** * dwa moduły, oba dające „ramkę” do uruchom program, powiedzmy * jeden z graficznym interfejsem użytkownika * jeden dla wiersza poleceń * ... Dlatego ta sama logika może zostać użyta w comandline- i graficznej wersji oprogramowania. **Logika** musi rejestrować pewne błędy, ale nie powinna nic wiedzieć o konkretnym rejestratorze, ponieważ może to być zależne od „ramki”. Oczywistym jest, aby **Logika** miała wskaźnik do funkcji, który musi zostać wypełniony przez ramkę, aby powiązać używany **Logger** z **Logiką**. W **Logging** -Module (cały kod Pseudo-ANSI-C): void Logger_Log(char *sLogText) { //zrób coś } W **Logic** -Module: void Logic_PseudoLog(char *sLogText) { printf (sLogText); } void(* Logic_Log)(char *sLogText) = &Logic_PseudoLog; void Logic_SetLogger(void(* LogFct)(char *sLogText)) { Logic_Log = LogFct; } W GUI/Cmd-Line: #include "Logger.h" #include "Logic.h" Logic_SetLogger(&Logger_Log); Teraz chcę wprowadzić różne poziomy ważności dla rejestrowania i zaimplementować je jako enum w **Logger** : //Logger.h: typedef enum { DEBUG, INFO, ERROR } teLogLevel; void Logger-Log(char *sLogText, teLogLevel eLevel); I tu pojawia się problem: wskaźnik funkcji w Logic musi mieć poprawną sygnaturę. Aby to zrobić, musi wiedzieć o `teLogLevel`. Dlatego **Logic** musi wiedzieć o **Loggerze** , dokładnie w przypadku, którego chciałem uniknąć z pośredniością w pierwszej kolejności. #include "Logger.h" void(* Logic_Log)(char *sLogText, teLogLevel eLevel); Przedstawiona sytuacja jest tylko przykładem. Proszę nie rozwiązywać tego, mówiąc coś w stylu "użyj `int` zamiast `enum`" lub "zbuduj trzy funkcje dla poziomów". Najważniejszym pytaniem jest: **Jak obsłużyć wyliczenia w sposób pośredni ze wskaźnikami funkcyjnymi w ANSI-C?** **Jak „wstrzyknąć” wyliczenia do modułu, który nie powinien teraz dotyczyć pochodzenia wyliczeń?**


title: Łatwo dodawaj metryki, aby mierzyć użyteczność kodu java

text: Próbuję stworzyć proces, aby lepiej zrozumieć, co dzieje się w moim kodzie. Chcę tworzyć metryki, aby automatycznie udzielać odpowiedzi na proste lub złożone pytania, takie jak: 1. Ile razy kliknięto adres URL? (ile żądań dotarło do określonej metody apletu) 2. Ile razy dany użytkownik zażądał tej samej strony? 3. Ile średnio żądań oczekuje w kolejce? i tak dalej... Czy istnieje prosty sposób na zrobienie tego automatycznie i elegancko (na przykład - atrybut taki jak @CountHits byłby świetny)? Znalazłem ten open source: http://metrics.codahale.com/getting-start/#reporting-via-jmx Ale jest zbyt powiązany z kodem. Niezbyt elegancki :/


title: Najlepszy sposób na skonfigurowanie środowiska deweloperskiego dla Node.js przy użyciu AWS s3?

text: Przygotowujemy się do przeniesienia części naszej aplikacji do node.js i szukamy sposobu na obsługę przesyłania i testowania s3 w naszym środowisku programistycznym. W tej chwili myślimy o skonfigurowaniu zasobników testowych (tj. „myProductionBucket-test”), ustawieniu tego w konfiguracji naszego środowiska deweloperskiego, a następnie stworzeniu reguły cyklu życia, aby usunąć zawartość po 24 godzinach. Wydaje się to jednak niezgrabne, zastanawiając się, czy istnieją lokalne alternatywy, które moglibyśmy uruchomić na naszych dev boxach, które mogłyby działać lepiej. Ponadto skłaniamy się ku node-config vs node-convict lub po prostu ładowaniu json. Wszelkie myśli tam również są bardzo cenione. **Edycja:** Zajrzeliśmy na https://github.com/jubos/fake-s3 i pomyśleliśmy też o wyśmiewaniu się do testów, ale przydałoby się umieścić i pobrać te same pliki, ponieważ jest to podstawowa funkcja aplikacji. Płacenie amazon za tworzenie/testowanie i produkcję wydaje się szalone.


title: Jak bardzo nasi pracodawcy powinni być zaangażowani w naszą edukację?

text: Uważam się za Software Craftsmana. Lubię uczestniczyć w lokalnych grupach użytkowników i wydarzeniach, aby dowiedzieć się o nowych technologiach, a także nawiązać kontakty z innymi rzemieślnikami oprogramowania. Uwielbiamy rozmawiać o tym, co robimy, czego się uczymy i ogólnie o tym, jak być lepszym w tym, co lubimy. Niektóre z tych spotkań i wydarzeń są bezpłatne, inne nie i czasami odbywają się w godzinach pracy (9:00-17:00). Moja praca generalnie nie pozwalała mi uczestniczyć w wydarzeniach w godzinach pracy, chyba że miało to bezpośredni związek z tym, co aktualnie wdrażamy/używamy. Nie zapewniali też żadnego wsparcia dla zasobów/wtyczek oprogramowania, które mogłyby pomóc w zwiększeniu produktywności. W większości zajmowałem się edukacją i zakupem własnych narzędzi programowych (przykład: Resharper). Moje pytanie brzmi: **W jakim stopniu nasi pracodawcy powinni być zaangażowani w dostarczanie programistom narzędzi, zasobów i ogólnej edukacji na temat nadchodzących technologii?** Czy powinni oferować swoim programistom subskrypcje MSDN w celu zainstalowania oprogramowania w domu? Czy powinni płacić za opłaty konferencyjne, aby poznać nowe technologie?


title: Jakie są doświadczenia zasobów offshore, jak praca dla firm zagranicznych?

text: Czy jesteś zagranicznym źródłem kodowania dla zagranicznej firmy? Jakie są wyzwania współpracy z firmami zagranicznymi? Co sprawia, że projekt jest bardziej udany?


title: Jak pamiętasz typy enkapsulacji do efektywnego wykorzystania?

text: Przez ostatni miesiąc próbowałem nauczyć się C#.NET, a szereg pomysłów, które zawsze mnie potykają, to enkapsulacja. Ponieważ jest to jeden z trzech filarów OOP, czuję, że tracę brak zrozumienia ich użycia i implementacji. Jednak podczas nauki często przydatne jest rozwijanie lub przyswajanie mnemotechniki, aby pomóc w utrzymaniu całej tej wiedzy. Posiadanie pod ręką dobrej instrukcji obsługi to jedno, ale utrzymanie funkcjonującej podstawy zrozumienia to zupełnie inna sprawa. Kiedy śledzę, czy typ/metoda jest „publiczny”, „prywatny”, „chroniony”, „statyczny” czy „zapieczętowany”, zastanawiam się, co i dlaczego w tym samym czasie. Moje pytanie brzmi zatem **jak zapamiętujesz enkapsulacyjne słowa kluczowe i kiedy ich używać**? Próba i błąd to to, co działa dla mnie teraz jako studenta, ale mam nadzieję, że wyjdę poza to, zanim profesjonalnie wykorzystam tę umiejętność.


title: Ninject/DI: Jak poprawnie przekazać dane inicjujące do wstrzykniętego typu w czasie wykonywania?

text: Mam następujące dwie klasy: public class StoreService : IStoreService { private IEmailService _emailService; public StoreService(IEmailService emailService) { _emailService = emailService; } } public class EmailService : IEmailService { } Korzystając z Ninject mogę bez problemu ustawić powiązania, aby wstrzyknąć konkretną implementację IEmailService do konstruktora StoreService. StoreService jest faktycznie wstrzykiwany do kodu za formularzem sieci Web ASP.NET w następujący sposób: [Ninject.Inject] public IStoreService StoreService { get; ustawić; } Ale teraz muszę zmienić EmailService, aby akceptował obiekt, który zawiera ustawienia związane z SMTP (które są pobierane z ApplicationSettings w Web.config). Zmieniłem więc EmailService, aby wyglądał teraz tak: public class EmailService : IEmailService { private SMTPSettings _smtpSettings; public void SetSMTPSettings(SMTPSettings smtpSettings) { _smtpSettings = smtpSettings; } } Ustawienie SMTPSettings w ten sposób wymaga również przekazania go do StoreService (za pomocą innej publicznej metody). Trzeba to zrobić w metodzie Page_Load w kodzie WebForms z tyłu (mam dostęp tylko do klasy Settings w warstwie UI). Dzięki ręcznemu/słabemu mans DI mogłem przekazać SMTPSettings bezpośrednio do konstruktora EmailService, a następnie wstrzyknąć EmailService do konstruktora StoreService. Dzięki Ninject nie mam dostępu do instancji wstrzykiwanych typów poza obiektami, do których są wstrzykiwane, więc muszę ustawić ich dane PO TYM, jak Ninject już je wstrzyknął za pomocą oddzielnej publicznej metody ustawiającej. Wydaje mi się to niewłaściwe. Jak naprawdę powinienem rozwiązać ten scenariusz?


title: Jak sprawdzić, czy mój pomysł na open source już istnieje?

text: Mam świetny pomysł na projekt open source. Co powinienem zrobić przed rozpoczęciem, aby upewnić się, że nie powielam niczyich wysiłków? Oczywiście googlowałem, ale nie jest oczywiste, które słowa kluczowe użyć. Czy istnieje strona do omawiania takich pomysłów? Aby odpowiedzieć na powszechną odpowiedź: Moim celem nie jest bycie autorem udanego projektu. Ma to na celu upewnienie się, że ten produkt istnieje i można go ulepszyć. (Istnieje już podobne komercyjne przedsięwzięcie, które jest niskiej jakości i nie jest rozwijane.) Nie pomoże mi więc posiadanie jedynego projektu, jaki można znaleźć w tej niszy. Jeśli jest jakiś początek, chciałbym go znaleźć i pomóc.


title: Metoda Static Create – zalety i wady w porównaniu z konstruktorami

text: Jakie są plusy i minusy posiadania statycznych metod tworzenia obiektów nad konstruktorami? class Foo { private Foo(arg obiektu) { } public static Foo Create(arg obiektu) { if (! ValidateParam(arg)) { return null; } return new Foo(arg); } } Niewiele, o których mogę pomyśleć: Zalety: * Zwróć null zamiast zgłaszać wyjątek (nazwij go `TryCreate`). Może to sprawić, że kod będzie bardziej zwięzły i przejrzysty po stronie klienta. Klienci rzadko oczekują od konstruktora porażki. * Twórz różne rodzaje obiektów z przejrzystą semantyką, np. `CreatFromName(String name)` i `CreateFromCsvLine(String csvLine)` * W razie potrzeby może zwrócić obiekt z pamięci podręcznej lub implementację pochodną. Minusy: * Mniej wykrywalny, trudniejszy do wyszukania kod. * Niektóre wzorce, takie jak serializacja lub odbicie, są trudniejsze (np. `Activator<Foo>.CreateInstance()`)


title: Którą licencję Open Source wybrać dla zestawu startowego ASP.NET MVC 3 OpenId?

text: Zbudowałem witrynę ASP.NET MVC 3 (obecnie RC), która korzysta z systemu logowania OpenID. Podczas implementacji tego wciąż uczyłem się o OpenID, więc mocno komentowałem kod. Rezultatem jest strona, która pozwala użytkownikom logować się/rejestrować za pomocą OpenID, dodawać inne OpenID do swojego konta, a także je usuwać. Ten mały projekt może być następnie wykorzystany jako punkt wyjścia dla każdego nowego projektu, który korzystałby z systemu logowania OpenID. Może być również używany jako zasób dla ludzi do nauki OpenID. Zdecydowałem się wydać ten projekt jako open source. To będzie mój pierwszy projekt open source i muszę zdecydować, jakiej licencji użyć. Chcę, aby ludzie mogli używać tego w dowolnym celu, w jakim chcą. Mogą się z niego uczyć, wykorzystywać w komercyjnych lub niekomercyjnych projektach i tworzyć własne widelce kodu. Byłoby również miło, gdyby inni mogli wnieść swój wkład do projektu za pomocą takich rzeczy, jak poprawki błędów w witrynach takich jak GitHub. Ale chciałbym być właścicielem praw autorskich do kodu, który jest pod moją kontrolą. Na przykład kod, który znajduje się w moim repozytorium GitHub (nazwę to główna baza kodu). Słyszałem, że w tym celu muszę poprosić każdego kontrybutora, który doda kod do tej bazy kodu, o przekazanie mi praw autorskich do swojego wkładu. Jak dokładnie to działa? W swoich projektach wykorzystuję również inne licencjonowane (głównie open source) zasoby. Oto ich lista i ich licencje: * DotNetOpenAuth (Ms-PL) * T4MVC (część MvcContrib, która jest licencjonowana przy użyciu Apache License 2.0) * ASP.NET MVC (Ms-PL) * ADO.NET Entity Framework CTP4 (nie mogłem znajdź licencję) Oczywiście chcę używać głównej bazy kodu dla każdego typu projektów, które chcę. Komercyjne, niekomercyjne, open source... Mam więc tutaj kilka bardzo ważnych pytań: 1. Którą licencję powinienem użyć? Myślę, że GPL lub LGPL nie są tutaj odpowiednie. Patrzyłem na Apache 2, New BSD, MIT i Ms-PL. Ms-PL wydaje się być dobrym wyborem, ale nie jestem pewien. 2. Jakie ograniczenia i/lub obowiązki mam w stosunku do zasobów, z których korzystam w tym projekcie? Chyba gdzieś przeczytałem, że muszę dodać -LICENSE.txt dla zasobów Ms-PL. Czy to prawda? Jak to działa w przypadku Apache 2 i innych licencji? Co muszę zrobić, jeśli zmodyfikuję kod któregokolwiek z tych zasobów, a następnie użyję go w swoim projekcie? 3. Bardzo chciałbym również klauzulę "tak jak jest" w licencji, aby ludzie nie mogli mnie pozywać, jeśli coś pójdzie nie tak podczas używania mojego kodu. 4. Czy muszę coś dodać do moich plików, aby wyjaśnić, czym jest licencja? Jeśli tak, jak mam to sformatować? I ostatnia rzecz. Jeśli zdecyduję się utworzyć szablon programu Visual Studio z tych przykładów, jak mogę to licencjonować?


title: Jak działa przerzucanie/uzupełnianie bitów?

text: Obecnie uczę się operacji bitowej, więc wynoś się ze mną. Rozumiem AND, OR i przesunięcie. To, czego nie rozumiem, to trochę przewracanie. Tak więc „5” to „0101”. Gdy ktoś mówi do mnie „odwróć to”, otrzymamy „1010”, czyli „10”. Dlaczego więc `~5` daje `-6`? Myślę, że bardzo się pomyliłem. Czy ktoś może mnie oświecić? (Umieszczam to tutaj, ponieważ myślę, że jest to ogólne pytanie programistyczne, a nie konkretne, które należałoby do przepełnienia stosu). **Edytuj 1** Dzięki komentarzowi mcfinnigana dowiedziałem się, że istnieje „najważniejszy bit”, który określa, czy liczba jest dodatnia, czy ujemna (popraw mnie, jeśli się mylę). To wyjaśniałoby, dlaczego pozytywne wyniki kończą się negatywnymi i vice versa. Jednak IMO powyższy przykład dałby wtedy `-10`. **Edytuj 2** Dzięki Donowi 01001100 i S.Lott w końcu to dostałem.


title: Jak przechowywane są ujemne wartości ze znakiem?

text: Oglądałem ten film na maksymalnych i minimalnych wartościach liczb całkowitych ze znakiem. Weźmy na przykład dodatnią wartość ze znakiem - 0000 0001 Pierwszy bit oznacza, że liczba jest dodatnia, a ostatnie 7 bitów to sama liczba. Więc łatwo to zinterpretować jako +1. Teraz weźmy przykład ujemnej wartości ze znakiem - 1000 0000, która wychodzi na -8. Dobra, komputer może zrozumieć, że jest to wartość ujemna z powodu pierwszego bitu, ale jak do diabła rozumie, że 000 0000 oznacza -8? Ogólnie rzecz biorąc, w jaki sposób ujemne wartości ze znakiem są przechowywane/interpretowane na komputerze?


title: Czy sprawdzanie liczby elementów przed wykonaniem pętli foreach zapewnia jakąś poprawę wydajności?

text: Widziałem to w kodzie i zastanawiałem się, czy sprawdzanie liczby elementów przed zapętleniem przynosi jakiekolwiek korzyści związane z wydajnością: if (SqlParams.Count > 0) foreach (var prm w SqlParams) cmd.Parameters.Add(prm); Zawsze wolę zamiast tego sprawdzić `null` i pozwolić pętli `foreach` po prostu wyskoczyć, jeśli są pozycje `0`. if (SqlParams != null) foreach (var prm w SqlParams) cmd.Parameters.Add(prm); Czy to nie jest lepszy sposób?


title: CQRS z wzorcem repozytorium i odwróceniem kontroli (z DI)

text: Przypisałem projekt POC komuś, w którym poprosiłem o zaimplementowanie zarówno wzorca Command Query Responsibility Segregation, Inversion of Control (z Dependency Injection) jak i Repository. „Ktoś” dał mi projekt rozwiązania POC, ale nie jestem pewien, czy tak to się robi. W tym miejscu opowiem o projekcie POC * Projekt jest prostą aplikacją trójwarstwową – warstwa prezentacji (PL), warstwa logiki biznesowej (BLL) i warstwa dostępu do danych (DAL); każda warstwa jest osobnym projektem * Warstwa prezentacji jest aplikacją internetową, BLL i DAL są projektami bibliotek klas * W warstwie biznesowej zdefiniowane są interfejsy repozytorium. Odwołanie do biblioteki BLL jest dodawane do projektu DAL, a wewnątrz projektu DAL znajdują się konkretne klasy, które implementują interfejsy repozytorium. W ten sposób stosuje się odwrócenie kontroli * Ponieważ wykonywane jest **Command-Query-Responsibility-Segregation**, interfejsy repozytorium w warstwie biznesowej deklarują tylko metody Add/Update i Delete. W przypadku odczytu istnieją interfejsy „Odczyt” bezpośrednio w DAL, a w DAL istnieją konkretne klasy, które implementują te interfejsy. * Warstwa prezentacji zawiera odniesienie zarówno do biblioteki BLL, jak i biblioteki DAL. Wywołania dodawania/aktualizacji/usuwania są kierowane przez LOGIKI biznesowej do DAL, podczas gdy każdy odczyt jest wykonywany bezpośrednio z DAL. Uważam, że jest to zgodne z koncepcją Command-Query-Responsibility-Segregation polegającą na omijaniu LOGIKI biznesowej do wykonywania odczytów. Oto ilustracja tego, jak to wszystko jest ustawione. Istnieją trzy projekty * NW.Web * NW.Business * NW.DataAccess Poniżej znajduje się zrzut kodu w różnych warstwach. **\-- NW.Web --** // Klasa w warstwie prezentacji public class CustomerPage { // Interfejs warstwy biznesowej z przestrzeni nazw NW.Business private ICustomerBusiness ICustB; //DAL Odczyt interfejsu z NW.DataAccess.Read namepsace private ICustomerRead<Guid> ICustR; //Konstruktor strony klienta, która używa wstrzykiwania konstruktora public CustomerPage(ICusterBusiness ICustB, ICustomerRead<Guid> ICustR) { this.ICustB = ICustB; this.ICustR = ICustR; } } **\-- NW.Business --** //Deklaracja interfejsu biznesowego w interfejsie warstwy biznesowej ICustomerBusiness { void Persist(); } // Klasa w warstwie biznesowej, która implementuje publiczną klasę interfejsu biznesowego Klient: ICustomerBusiness { //Obiekt interfejsu repozytorium, który zostanie wstrzyknięty przez wstrzyknięcie konstruktora. prywatne ICustomerRepository ICustRep; public Customer (ICustRepository ICustRep) { this.ICustRep = ICustRep; } public void Persist() { ICustRep.AddOrUpdate(); } } //Deklaracja interfejsu repozytorium w publicznym interfejsie warstwy biznesowej ICustomerRepository { void AddOrUpdate(); nieważne Usuń(); } **\-- NW.DataAccess--** public class CustomerRepository : ICustomerRepository { public void AddOrUpdate() { //wdrożenie Dodaj lub Aktualizuj } public void Usuń() { //wdrożenie Usuń } } //A Odczyt interface w warstwie dostępu do danych interface ICustomerRead<T> { // Odczyt jest zwracany jako DTO, ponieważ w bazie danych może to być odwzorowane na więcej niż 1 tabelę CustomerDTO GetCustomerDetails(T id); } // Implementacja interfejsu odczytu w przestrzeni nazw warstwy dostępu do danych NW.DataAccess.Read { public class CustomerRead<T> : ICustomerRead<T> { public CustomerDTO GetCustomerDetails(T id) { //implementacja tutaj } } } uczucie jest takie, że coś tu jest nie tak. Wygląda na to, że CQRS lub przynajmniej powyższa implementacja nie spełnia niektórych wymagań * Obiekt biznesowy klienta (klasa klienta) może wymagać odczytania z bazy danych do celów wewnętrznych (takich jak inicjowanie zmiennych itp.). W przypadku odczytu bezpośrednio zdefiniowanego w warstwie DAL jedynym sposobem na zrobienie tego byłoby odwołanie się do biblioteki DAL dll w LOGIKA BLOKOWANA. Ale to spowodowałoby utworzenie odwołania cyklicznego i byłoby sprzeczne z IOC, który jest wykonywany. * Co się dzieje, gdy istnieje jakiś wspólny wymóg odczytu we wszystkich obiektach biznesowych?


title: Dlaczego nie ma metodologii MVC dla aplikacji desktopowych?

text: Obecnie uczę się tworzenia aplikacji internetowych w C#, ASP, .NET i MVC. Bardzo podoba mi się paradygmat MVC, ale potem pomyślałem o użyciu tego do tworzenia oprogramowania komputerowego. Szukałem, ale nic nie znalazłem przy użyciu wzorca MVC do tworzenia aplikacji komputerowych, które łączą się z bazami danych. Więc jakiego wzorca oprogramowania lubią używać programiści .net, jeśli nie używają MVC? Dziękuję.


title: Jakie są wady używania XML do tworzenia GUI?

text: Mam nadzieję, że to pytanie mieści się w zakresie programistów SE i nie jest zbyt otwarte. Zawsze nienawidziłem projektowania GUI. Nie chcę nikogo urazić, ale nienawidziłem CSS/HTML, nienawidziłem Java Swing, nie znoszę żadnego edytora GUI i generalnie nie mam umiejętności robienia czegokolwiek ładnie . Ale potem pojawiła się platforma Android i od tamtej pory jestem w niej zakochany. Projektowanie GUI nie jest już problemem, ponieważ abstrakcja projektu w plikach XML (które łączą zarówno strukturę, jak i styl) poza kod (pliki Java). Był czysty, łatwy w użyciu i bardzo rozszerzalny. Tworzenie motywów było niezwykle łatwe i miało taką samą strukturę, jak koncepcja nadpisywania w informatyce. To prowadzi mnie do mojego pytania. Platforma Android została wydana w 2007 roku. Od opublikowania tego pytania minęło 5 lat. A jednak nie widziałem tego pomysłu XML dla projektowania GUI nigdzie indziej niż dla Androida. (Aby dowiedzieć się, jak działa projektowanie Androida, oto oficjalny samouczek hello world) Czy są jakieś wady, które sprawiłyby, że użycie XML do projektowania GUI byłoby złym wyborem dla rozwoju sieci lub pulpitu? Czy są jakieś inne powody, dla których ten typ modelu byłby trudny do wykonania lub użytkowania, lub po prostu jakikolwiek powód, który uniemożliwiałby jego rozpowszechnienie? Jeśli chodzi o mały kontekst, to pytanie pojawiło się w mojej głowie, ponieważ ostatnio zmagałem się z GridBagLayout w Javie.


title: W jaki sposób ? uczynić kwantyfikator leniwym w wyrażeniu regularnym

text: Ostatnio przyglądałem się wyrażeniom regularnym i stwierdziłem, że operator `?` sprawia, że `*`,`+` lub `?` są leniwe. Moje pytanie brzmi, jak to się robi? Czy na przykład `*?` jest operatorem specjalnym, czy też `?` ma wpływ na `*`? Innymi słowy, czy wyrażenie regularne rozpoznaje „*?” jako jeden operator, czy też wyrażenie „*?” rozpoznaje jako dwa oddzielne operatory „*” i „?”? Jeśli jest tak, że `*?` jest rozpoznawane jako dwa oddzielne operatory, w jaki sposób `?` wpływa na `*`, aby uczynić go leniwym. Jeśli `?` oznacza, że `*` jest opcjonalny, czy nie powinno to oznaczać, że `*` wcale nie musi istnieć. Jeśli tak, to czy w wyrażeniu `.*?` wyrażenie regularne nie pasuje do oddzielnych liter i całego ciągu zamiast do krótszego ciągu? Proszę wyjaśnij, desperacko pragnę zrozumieć.


title: Czy ploter funkcji jest uzasadnionym użyciem eval() w JavaScript?

text: Z rozwoju PHP wiem, że eval jest zły i niedawno przeczytałem Co stanowi „Właściwe użycie” funkcji javascript Eval? i nie bądź równy. Jedyne właściwe użycie eval, jakie przeczytałem, to Ajax. Obecnie pracuję nad narzędziem do wizualizacji, które pozwala użytkownikom zobaczyć, jak wielomiany mogą interpolować funkcje: * Przykład * Kod na GitHub ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/RSRab.png) Używam eval do oceny dowolnych funkcji. Czy jest to uzasadnione użycie eval? Jak mogę pozbyć się eval? Chcę, aby użytkownik mógł wykonać dowolną funkcję o następujących formach: 1. a x^i z a,i w R 2. sin, cos, tan 3. b^x z b w R 4. dowolna kombinacja, którą możesz uzyskaj przez * dodawanie (np. x^2 + x^3 + sin(x)), * mnożenie (np. sin(x)*x^2) lub * wstawianie (np. sin(x^2))


title: Porady dotyczące bezpiecznego zarządzania danymi serwera [klienta] w całym zespole?

text: Czy ktoś ma jakieś rady na ten temat? Obecnie pracuję jako rodzaj wiodącego programisty/lidera zespołu i mamy kilku zdalnych członków zespołu, a czasem wykonawcę lub dwóch. Czasami cały zespół może pracować nad dużym projektem, a szczegóły dotyczące serwera są zwykle zarządzane przez cały zespół. Jaki jest najlepszy sposób radzenia sobie z tym? Czy jest coś, czego mi brakuje? I tak nie widzę, żeby ktoś miał dostęp do serwera bez szczegółów. Rozważam również ochronę bezpieczeństwa, jaką mają na swoich komputerach, czy powinienem zapewnić, że pewne rzeczy staną się z danymi, takie jak szyfrowanie, niszczenie. Czy do połączeń należy używać „firmowego” serwera proxy? Proszę doradź!


title: Rozpoczynając mój pierwszy projekt RoR, jaka biblioteka JS jest dobra do tego?

text: Zaczynam swój pierwszy projekt Ruby on Rails, ponieważ od dłuższego czasu jestem podekscytowany tym językiem i mam dość pisania PHP. Dowiedziałem się, że rails jest w zasadzie frameworkiem do automatyzacji, który powinien naprawdę przyspieszyć programowanie dla mnie. Chociaż nie ma to wpływu na frontend, nadal muszę pisać tabele, style i div, aby złożyć mój układ. Wiem, że istnieją biblioteki takie jak ExtJS, które automatyzują dużą część tego procesu, ale zastanawiałem się, czy istnieją jakieś frameworki, które faktycznie integrują się z Ruby on Rails, na przykład oferują wbudowany sposób obsługi zapytań ajax. **TLDR** : Naprawdę byłbym wdzięczny za kilka wskazówek na temat dobrego frameworka JS do współpracy z Ruby on Rails.


title: Jak komunikują się procesy?

text: Jakie transporty/potoki/interops są dostępne w większości lub we wszystkich językach w różnych systemach operacyjnych? Niekoniecznie sieć, ale międzyprocesowa. A może jest specyficzny system operacyjny komunikacji międzyprocesowej? Mam na myśli, na przykład, interop COM jest w systemie Windows. Czy na przykład w Linuksie istnieje odpowiednik, który działałby tak samo, a język programowania mógłby być używany zamiennie? Wiem, że większość języków obsługuje IO sieci. Czy musimy to wykorzystać do komunikacji międzyprocesowej, czy są inne opcje?


title: jak zaktualizować oprogramowanie

text: Jestem początkującym programistą w C/C++. Posiadam wcześniejsze doświadczenie w programowaniu dla stron internetowych. Jest pewne zamieszanie, które mam z procesem tworzenia oprogramowania w aplikacjach desktopowych. Aplikacje internetowe są łatwe do uaktualnienia, ponieważ w zasadzie jest to zbiór plików źródłowych, ale mam pytanie dotyczące aplikacji komputerowych. Najważniejszą rzeczą, jaką zauważam w aplikacjach desktopowych, jest to, że są one wydawane w różnych wersjach. Wymaga to od użytkownika przejścia przez proces odinstalowywania/ponownej instalacji w celu uzyskania nowszej wersji oprogramowania. W oprogramowaniu C/C++ dla różnych platform, w jaki sposób programista zaimplementowałby opcję „uaktualnienia”, która pozwoliłaby użytkownikowi zaktualizować już zainstalowaną aplikację bez konieczności powrotu do strony internetowej. Jak trudno jest zaktualizować plik wykonywalny na platformach takich jak Windows i Linux. Rozumiem, że proces może być różny dla różnych platform. Załóżmy na przykład, że mam aplikację komputerową (wersja 1), którą użytkownik już pobrał i zainstalował na swoim komputerze. Po pewnym czasie wprowadzam pewne zmiany w oprogramowaniu i wprowadzam ulepszenia, które użytkownik chciałby zastosować w swoim oprogramowaniu. Użytkownik dokonał zmian w oprogramowaniu, ale chciałby dokonać aktualizacji do wersji 2 bez konieczności ponownego dostosowywania aplikacji. Początkowo myślałem, że funkcja „uaktualnienia” zastąpi niektóre części pliku wykonywalnego, ale czy to naprawdę jest to, co musisz zrobić? Moje główne pytanie brzmi: jak konkretnie ktoś mógłby przejść do przeprowadzenia tego procesu „uaktualnienia”? Czy to możliwe?


title: Czy jakiś język stał się bardzo popularny z czegoś innego niż jego przeznaczenie?

text: Weźmy następujący scenariusz: * Programista tworzy język, aby rozwiązać jakiś problem. * Następnie udostępnia ten język, aby pomóc innym rozwiązywać podobne problemy. * Inny programista odkrywa, że jest znacznie lepszy w przypadku innej kategorii problemów. * Dzięki tej nowej aplikacji język staje się popularny przede wszystkim dla tej aplikacji. **Czy są jakieś przypadki, w których rzeczywiście tak się dzieje?** Innymi słowy, czy zamierzony cel języka ma jakiś wpływ na to, jak jest on faktycznie używany lub czy staje się popularny? Czy to w ogóle ważne, żeby język _mał_ reklamowany cel?


title: Zalecenia dotyczące scopingu podczas opracowywania w C

text: Jakie są twoje zalecenia dotyczące określania zakresu zmiennych i funkcji podczas tworzenia biblioteki w języku C? W C++ OOP i przestrzenie nazw znacznie ułatwiły sprawę. Ale jak to zrobić ze zwykłym C? W szczególności jak używać słów kluczowych `static` i `extern` w nagłówkach i plikach kodu do zarządzania zasięgiem?


title: Jak zamodelowałbyś obiekty reprezentujące różne fazy cyklu życia jednostki?

text: Uważam, że ten scenariusz jest powszechny w przepływach biznesowych - na przykład: zarządzanie pożyczką proces zaczyna się od złożenia wniosku o pożyczkę, potem jest oferta pożyczki, pożyczka „na żywo”, a może i gotowe pożyczki. * wszystkie te obiekty są powiązane i mają wiele pól * wszystkie te obiekty mają również wiele pól, które są unikalne dla każdej jednostki * różnorodność obiektów może być duża, a przekształcenie między nimi może nie być liniowe (na przykład: pojedynczy wniosek o pożyczkę może skończyć się jako kilka pożyczek różnego rodzaju) Jak byś to modelował? niektóre opcje: * encja dla każdego typu, każda zawierająca odpowiednie pola (ewentualnie grupowanie powiązanych pól jako podobiektów) - prowadzi do duplikacji danych. * encja dla każdego obiektu, ale zamiast duplikowania danych, każdy obiekt ma odniesienie do swojego poprzednika (pożyczka nie zawiera danych pożyczkobiorcy, ale odniesienie do wniosku pożyczkowego) - powoduje to sprzężenie między strukturą obiektu, a sposób, w jaki została stworzona. jeśli zmienimy wniosek o pożyczkę, nie powinno to wpływać na strukturę podmiotu pożyczkowego. * jeden duży byt, z polami na cały cykl życia – może to stworzyć „megaobiekty” z wieloma polami. nie działa również dobrze, gdy między fazami istnieje relacja jeden do wielu lub wiele do wielu.


title: Jak mogę szybko wyeliminować kodery typu „kopiuj i wklej”?

text: Potrzebuję sposobu na odfiltrowanie życiorysów osób, które po prostu kopiują i wklejają kod, a następnie mają nadzieję, że działa, i sprawdzają je, jeśli tak. Wszystko to dzieje się bez zrozumienia (lub troski), aby zrozumieć resztę kodu w systemie. Jasne, wiem, że kopiowanie i wklejanie kodu jest częścią uczenia się nowego obiektu, kontroli itp., ale jak stwierdzić, czy stanowi to 70% (lub więcej) ich kariery programistycznej? Natknąłem się na kilku starszych ludzi, których umiejętności są być może tak przestarzałe lub nieistotne dla projektu, że jedyne, co robią, to google, kopiują, a następnie wklejają kod bez myślenia o rozwiązaniu jako całości. W rezultacie mamy mismash JSON, AJAX, wywołań zwrotnych, ASMX, WCF i postbacków w tym samym projekcie. Oczywiste jest, że nie ma spójności ani logiki w tym, gdzie każda technologia jest używana. W najgorszym przypadku tego typu programista tworzy problemy z bezpieczeństwem i wektory ataku. **Pytanie** Jak poleciłbyś odfiltrować osoby, które mają słabe przygotowanie programistyczne? Czy mogę to zrobić na poziomie CV? Jeśli nie, jak mam to zrobić podczas rozmowy kwalifikacyjnej.


title: Czy to dobre miejsce, aby zadać pytanie dotyczące programowania?

text: Dwukrotnie zadałem to samo pytanie o program na pythonie i ciągle się zawiesza. Pomyślałem, że to dobre miejsce do zadawania pytań programistycznych i chciałem się tylko upewnić.


title: Czy powszechną praktyką jest zatrudnianie osób trzecich do przeprowadzania przeglądów kodu dla wykonawców?

text: Ostatnio zaobserwowałem kilka ofert kontraktowych, które zawierały klauzulę „przeglądu kodu przez stronę trzecią” - umowa nie zostałaby w pełni opłacona, dopóki przegląd kodu nie zostanie ukończony i otrzyma zatwierdzenie. Byłem zaskoczony, zwłaszcza biorąc pod uwagę, że były to dość proste i małoskalowe kontrakty (produkujące masowo aplikacje kosmetyczne na iPhone'a). Czy tego rodzaju przegląd kodu przez stronę trzecią jest powszechną rzeczą, na którą można się natknąć podczas zatrudniania jako programista?


title: Czy powinienem wpaść do lokalnych firm i oferować swoje usługi jako stażysta, aby zdobyć doświadczenie?

text: Próbuję znaleźć pracę dla początkujących programistów, ale nie mam odpowiedniego doświadczenia. Jestem w stanie kodować C#, SQL, HTML i CSS oraz rozumiem zasady OOP i ukończyłem kilka aplikacji zarówno w WinForms, jak i WebForms. Próbowałem aplikować na stanowiska absolwentów, ale blokują mnie rekruterzy, którym dotychczas nie podobało się moje doświadczenie. Myślałem o napisaniu szczegółowego raportu (jak CV) z tego, co zrobiłem do tej pory, odwiedzeniu sklepów z oprogramowaniem, przedstawieniu się i poproszeniu o staż. Czy to skuteczny sposób na wejście w drzwi w tworzeniu oprogramowania? Czy powinienem najpierw spróbować zadzwonić na zimno, aby uzyskać formalną rozmowę kwalifikacyjną?


title: Jak mam sobie radzić z kodem złej jakości dostarczonym przez osobę trzecią?

text: Niedawno awansowałem na kierownictwo jednego z naszych najważniejszych projektów. Większość kodu w tym projekcie została napisana przez naszego partnera, a nie przez nas samych. Kod, o którym mowa, jest _bardzo_ wątpliwej jakości. Powielanie kodu, zmienne globalne, 6-stronicowe funkcje, notacja węgierska, co tylko chcesz. I to w C. Chcę coś zrobić z tym problemem, ale mam bardzo mały wpływ na naszego partnera, zwłaszcza że kod, ze wszystkimi jego problemami, „po prostu działa, prawda?”. Co gorsza, zbliżamy się do końca tego projektu i wkrótce musimy go wysłać. Nasz partner przeznaczył na ten projekt określoną liczbę osobogodzin i nie poświęci więcej godzin. Byłbym bardzo wdzięczny za wszelkie rady lub wskazówki, których mógłbyś mi udzielić, jak poradzić sobie z tą sytuacją.


title: Dlaczego symbol wskaźnika i znak mnożenia są takie same w C/C++?

text: Piszę parser kodu _limited_ C/C++. Teraz mnożenie i znaki wskazujące sprawiają mi naprawdę trudność, ponieważ oba są takie same. Na przykład int main () { int foo(X * p); // deklaracja przekazania bar(x * y); // wywołanie funkcji } Muszę zastosować specjalne reguły, aby sprawdzić, czy `*` jest rzeczywiście wskaźnikiem. W powyższym kodzie muszę się dowiedzieć, czy `foo()` jest deklaracją do przodu, a `bar()` jest wywołaniem funkcji. Kod w świecie rzeczywistym może być dużo bardziej złożony. Gdyby istniał inny symbol, taki jak `@` dla wskaźników, byłoby to proste. Wskaźniki zostały wprowadzone w `C`, więc dlaczego nie wybrano innego symbolu dla tego samego ? Czy klawiatura była tak ograniczona? [Będzie to dodatek, jeśli ktoś może rzucić światło na to, jak współczesny parser radzi sobie z tym? Pamiętaj, że w jednym zakresie `X` może być jednocześnie nazwą typu, a w innym może być nazwą zmiennej.]


title: Jaki jest praktyczny sposób debugowania Railsów?

text: Odnoszę wrażenie, że w praktyce debuggery są rzadko używane w aplikacjach Railsowych. (Podobnie dla innych aplikacji Ruby, jak i Pythona.) Możemy to porównać do zwykłej praktyki programistów Java lub VisualStudio -- używają interaktywnego debuggera w graficznym IDE. Jak ludzie debugują aplikacje Railsowe _w praktyce_? Jestem świadomy różnorodności debuggerów, więc nie muszę o nich wspominać, ale czy poważni programiści Rails działają bez nich? Jeśli tak, dlaczego zdecydowałeś się zrobić to w ten sposób? Wydaje mi się, że drukowanie z konsoli ma swoje ograniczenia podczas debugowania złożonej logiki.


title: Czy ktoś miał pozytywne doświadczenia z korzystaniem z Google Analytics w swojej natywnej aplikacji na iOS?

text: Mam trudności ze znalezieniem opinii na temat Google Analytics dla natywnych aplikacji na iOS i miałem nadzieję, że znajdę tu kilku programistów, którzy mają z tym jakieś doświadczenie. Jeśli tak, jak dobrze to zadziałało? Dziękuję bardzo za twoje przemyślenia!


title: Jakiej struktury danych mogę użyć do modelowania sieci węzłów i krawędzi?

text: Moja aplikacja musi modelować i wykonywać operacje w sieci z 40-50 węzłami i zazwyczaj mniej niż 6 krawędziami na węzeł. Zarówno węzły, jak i krawędzie są obiektami z około 1 tys. danych każdy. Podczas wykonywania mapowanie sieci jest często zmieniane - dodawane i usuwane węzły, dodawane i usuwane krawędzie, a także dostosowywane są właściwości poszczególnych węzłów i krawędzi. Obiekty węzłów i krawędzi są alokowane przy użyciu 'new', a wynikowe wskaźniki są przechowywane w `std::list` dla każdego typu obiektu. Eksperymentowałem z dwoma różnymi podejściami do mapowania: 1. Umieść kontener w każdym węźle, aby przechowywać identyfikatory krawędzi i 2 zmienne w każdej krawędzi, aby przechowywać identyfikatory węzłów końcowych. 2. Dodaj nowy kontener najwyższego poziomu, oddzielony od kontenera krawędzi i kontenera węzłów, aby przechowywać informacje o mapowaniu. Funkcje w klasach węzłów i składowych będą łatwiejsze do zaimplementowania, jeśli informacje o mapowaniu są przechowywane w tych klasach. Wprowadzanie zmian w mapowaniu sieci byłoby znacznie łatwiejsze, gdyby wszystkie dane mapowania były przechowywane oddzielnie. Ale jeśli mapowanie nie jest przechowywane w węzłach i krawędziach, wówczas funkcje składowe w węzłach i krawędziach wymagają sposobu na uzyskanie informacji o mapowaniu z obiektu nadrzędnego. Czy istnieje struktura danych lub technika koncepcyjna, która daje najlepsze z obu podejść, bez duplikowania danych lub łamania enkapsulacji? Wydajność nie jest głównym problemem, ponieważ nie ma w tym żadnych niezwykle kosztownych obliczeń. Ważniejsza jest troska o bezpieczny, zrozumiały i konserwowalny kod.


title: Algorytm klasyfikacji produktów - klasyfikacja tekstu - C# - sugestie algorytmów

text: W porządku ludzie. Wreszcie, z pomocą społeczności stackoverflow, zebrałem 20 komercyjnych witryn sprzedających produkty strony produktów z następującymi funkcjami URL produktu Cena produktu Nazwa produktu Kategoria produktu Tytuł strony produktu Opis strony produktu Słowa kluczowe strony produktu Teraz korzystając z tych funkcji produktów muszę sklasyfikować ich. Co oznacza klasyfikacja? Pozwól mi to wyjaśnić. Teraz, jak możesz sobie wyobrazić, każda strona internetowa zawiera listę produktów na swój własny sposób. Nie ma formatu. Powiedzmy, że iPhone 4 jest sprzedawany na 20 różnych stronach internetowych z 20 różnymi drogami. Więc to, co muszę osiągnąć, to pogrupowanie tych 20 stron iPhone'a na 20 różnych stronach internetowych. Więc kiedy osoba zapyta moją witrynę za pomocą iPhone'a 4, pokażę 20 wyników. Zasadniczo z ponad 500 000 adresów URL produktów muszę pogrupować każdy produkt. Powiedzmy, że jest 15 kart Gefore GTX 570 z tych 500k adresów URL, więc muszę je pogrupować jako ten sam produkt. Możesz to sobie wyobrazić jako produkty Google. Ale robię to w moim własnym kraju, czyli w Turcji, a Google nie ma wyszukiwania produktów dla Turcji. Krótko mówiąc, korzystając z powyższych funkcji, jaki algorytm sugerowałbyś. Nie chcę używać żadnych technik treningowych, jeśli to możliwe. Wszystko zautomatyzowane. Używam C# 4.0 WPF, a dane są przechowywane w bazie danych MSSQL 2008 R2


title: Jak nauczyć się programować (i myśleć) w sposób Rubinowy?

text: **Dlaczego zadaję to pytanie:** Dopiero zaczynam się uczyć Rubiego (i przez rozszerzenie IronRuby, ponieważ pracuję w świecie Microsoft). Wybrałem IronRuby Unleased, aby nauczyć mnie podstawowej składni Ruby i wszelkich szczegółów IronRuby. Jednak nauka składni nie jest moim głównym celem (gdyby tak było, po prostu zdobyłbym język programowania Ruby, który i tak mógłbym w końcu zdobyć). Mówię to, ponieważ mogłem nauczyć się składni, ale nadal pisać programy w sposób inny niż Ruby. Takie jak: 1. Wymuszanie trudnego DI za pomocą frameworków DI***** 2. Używanie Rubiego do pisania głównie kodu typu C, Java lub Perl Dla mnie robienie tych rzeczy brzmi skutecznym odpowiednikiem pisania kodu proceduralnego w Javie, lub uczenie się składni F#, ale pisanie programów tak, jakby język był C#. **Dlatego** moim głównym celem jest nauka programowania, myślenia w sposób, który ucieleśnia Ruby: 1. Idiomy językowe 2. Styl dynamiczny 3. Sprawdzone zasady i wzorce społeczności * * * * Odpowiedź #28 na powyższy link (Wymuszanie ciężkiego DI poprzez frameworki DI) zadaje pytanie podobne do tego, które tutaj zamieszczam. Autor bloga zasugerował przeczytanie kodu Jima Weiricha i być może Railsów. Szukam dodatkowych sugestii.


title: Jak można mnożyć <patrz cref="Notation">?

text: Jaki jest najbardziej odpowiedni sposób napisania tego komentarza: /// <summary> /// Zamówienie — określa położenie porządkowe tej kategorii /// względem innych wymienionych kategorii. /// </summary> jeśli chcę umieścić "kategorię" w znacznikach `<see>`? Rozważyłem: /// <summary> /// Zamówienie — Identyfikuje porządkową lokalizację tej <see cref="Category"/> /// względem innych wymienionych <see cref="Category"/>. /// </summary> Czy widzisz mój dylemat? **Edytuj:** Należy dodać, że używam komentarzy XML programu Visual Studio. Więc jestem nieco ograniczony co do schematu. Uważam, że `cref` musi wskazywać na prawidłowe odniesienie do typu.


title: Jak udostępnić kontrolę nad linkami/domenami w projekcie open source wielu współpracownikom?

text: Próbuję pomóc projektowi Rebol przeprojektować jego obecność w sieci teraz, gdy jest to open source jako Apache 2 - po prawie dwóch dekadach licencji własnościowej! Twórca języka ma obecnie kontrolę rejestratora nad witrynami rebol.com/.org/.net. Chce zachować kontrolę nad domeną `rebol.com` jako holding dla swojej firmy Rebol Technologies (i pozostałych nieotwartych baz kodu). Wykazał jednak chęć, by społeczność przejęła `rebol.org` i `rebol.net` — które są obecnie witrynami, które pokazują ich wiek. Potrzebują dużych zmian w zakresie organizacji / treści / motywów wizualnych; Obecna propozycja jest taka, że .org stanie się neutralną dokumentacją podobną do Wikipedii i wyselekcjonowaną biblioteką modułów (z kilkoma linkami wychodzącymi), podczas gdy .net będzie bardziej towarzyską "siecią programistów" z różnymi zasobami społecznościowymi. Chociaż twórca jest uważany za życzliwego, tak naprawdę nie może być życzliwym dyktatorem projektu, ponieważ w dużej mierze uwolnił się od zainteresowania Rebolem z powodu nowej kariery. Co więcej, zwrot w reagowaniu na obawy społeczności historycznie trwał bardzo długo… i dlatego pojawiło się wiele alternatywnych witryn, aby wypełnić luki. Pytanie, jak przejąć kontrolę nad problemem i sprawić, by społeczność zainwestowała w treści hostowane pod ładnymi nazwami domen – zamiast iść w innym kierunku – jest drażliwe. Dla porównania, sprawdziłem nazwy domen WHOIS i trochę poszukałem głównych stron internetowych dla Ruby i Pythona. **ruby-lang.org** * Imię administratora: Matsumoto.Yukihiro Matsumoto.Yukihiro * Organizacja administratora: Ruby Users Group Wygląda na to, że źródło ruby-lang.org jest utrzymywane na GitHubie. Jeśli dobrze to przeczytałem, istnieje 35 członków organizacji ruby GitHub, chociaż nie wiem o tym wystarczająco dużo, aby wiedzieć, które z tych osób mają dostęp do commitów lub jakie są kontrole i salda. Nie widzę żadnego oficjalnego linku określającego „Grupę użytkowników Ruby”. Istnieje organizacja non-profit o nazwie Ruby Central, która wydaje się organizować, ale jedynymi zasobami, jakie udało mi się znaleźć, były kontrowersje, gdy facet od Railsów próbował uniemożliwić ludziom używanie logo rails. ruby-lang.org wydaje się nie mieć prawie żadnych uwag na temat struktury prawnej. **python.org** * Nazwa administratora: Administrator domeny * Organizacja administratora: Python Software Foundation Wydaje się to znacznie bardziej formalne, ponieważ mają oni regulamin i możesz albo wykupić sobie drogę do struktury głosowania za pomocą sponsoringu... albo zostać nominowanym / wybierany przez członka dotychczasowego członkostwa. * * * Podoba mi się, jak lekki i ufny jest model Ruby. Ale gdyby Matz został potrącony przez autobus – wtedy inny niż ludzie byli smutni – co by się stało? W czyje ręce wpadnie ruby-lang.org? Co by było, gdyby sytuacja była nieco inna, tak że Matz był bardzo zaufany w kwestiach technicznych, ale nie kontynuował rozwiązywania problemów z witryną w odpowiednim czasie? Python wydaje się mieć to bardziej zaplanowane, ale jest raczej ciężki. Według Wikipedii Python Software Foundation została założona w 2001 roku, liczy 124 członków z Guido Van Rossum jako prezesem, a jej budżet w 2011 roku wyniósł 750 000 dolarów! Jak więc projekt z mniejszą ilością zasobów może zarządzać czymś tak prostym jak kilka nazw domen i jak będą rozwiązywane spory dotyczące treści? Istnieje chęć zrestartowania tożsamości... ale bez jakiejś formy możliwej do wyegzekwowania umowy prawdopodobnie nie zadowoli zaangażowanych stron.


title: Ogólne pytania dotyczące licencjonowania open source

text: Zamierzam wydać projekt oprogramowania na iOS o otwartym kodzie źródłowym, ale jestem bardzo nowy w kwestii licencjonowania. Chociaż zdaję sobie sprawę, że większość odpowiedzi tutaj nie będzie prawników, byłbym wdzięczny, gdyby ktoś mógł poprowadzić mnie we właściwym kierunku. Z wyjątkiem poniższych wymagań, cieszę się, że programiści w dużej mierze robią co chcą z kodem źródłowym projektu. Nie interesują mnie żadne systemy licencjonowania typu copyleft i chociaż chciałbym zachęcić do przypisywania autorstwa w pracach pochodnych, nie jest to wymagane. W związku z tym moje wymagania są następujące: * Oryginalne źródło może być rozpowszechniane i rozpowszechniane (dosłownie) zarówno komercyjnie, jak i niekomercyjnie, o ile zachowane są oryginalne informacje o prawach autorskich, link do strony internetowej i licencja. * Chcę zachować prawa do wszelkich multimediów rozpowszechnianych w ramach projektu (efekty dźwiękowe, grafika, znaki logo itp.). Takie zasoby zostaną uwzględnione, aby umożliwić innym programistom łatwe wykonanie projektu, ale nie mogą być w żaden sposób rozpowszechniane. * Chcę zachować prawa do nazwy i marki aplikacji. Po wybraniu odpowiedniej licencji mam następujące pytania: * Projekt korzysta z wielu bibliotek firm trzecich (wszystkie licencjonowane w ramach wariantów licencji MIT). Uwzględniłem poszczególne licencje w źródle (i aplikacji) i wierzę, że spełniłem wszystkie wymagania zawarte w tych licencjach, ale czy jest coś jeszcze, co należy zrobić przed dystrybucją ich w ramach mojego projektu open source? * Do mojego projektu dołączona jest również jedna zastrzeżona biblioteka o bliskim źródle, która służy do zasilania niewielkiej części aplikacji. Oczywiście nie jestem w stanie włączyć tego do wydania źródłowego, ale jaki jest najlepszy sposób na poradzenie sobie z tym? Czy powinienem po prostu osłabić projekt i całkowicie wykluczyć go z projektu Git?


title: Statyczna analiza kodu dla skryptów bash

text: Programuję narzędzia CLI w bash, aby zautomatyzować większość mojej pracy jako DBA. Chciałbym poprawić swój kod i uczynić go bardziej solidnym, może za pomocą jakiegoś statycznego narzędzia do analizy kodu, takiego jak to, którego używałem w Javie. Czy ktoś z was używa statycznego narzędzia do analizy kodu dla skryptów bash? Czy tak, którego używasz? Czy istnieje?


title: Co zrobić, gdy projekty są powolne, a inni Cię wstrzymują?

text: Tam, gdzie pracuję, projekty zabierają dużo czasu, ponieważ zespoły są duże, jest dużo „projektowania i analiz”, dużo dokumentacji, a praca zawsze jest odpychana. Pracuję na średnim poziomie i zawsze muszę czekać, aż usługi i klienci wykonają swoją pracę. Często zdarzają się tygodnie, kiedy nie mogę wykonać żadnej pracy. Czuję się znudzona i dziwna, po prostu siedzę tutaj i staram się przynajmniej wyglądać, jakbym była zajęta. Kierownictwo wydaje się robić niewiele, gdy prosi się o więcej pracy. Co robisz w takich przypadkach?


title: Algorytmy tworzenia stron internetowych

text: Szukając pracy online zauważyłem, że większość ofert pracy dla programistów PHP wymaga znajomości algorytmów i struktur danych. Chociaż nie znam jeszcze PHP, zacząłem się go uczyć, aby uzyskać pracę w tej dziedzinie. Chociaż widziałem podobne pytania na forum, nie wydaje mi się, aby odpowiedzi zaspokoiły moje potrzeby. Mam już pewną wiedzę na temat algorytmu quicksort i używania stosu z czasów, gdy pracowałem w Javie i JavaScript, ale myślę, że to za mało. .


title: Najlepszy sposób na migrację serii kodu (v1, v2 itd.) do nowego systemu VCS?

text: Jestem zupełnie nowy w korzystaniu z VCS i nie zdecydowałem się na Git lub Hg, ale wiem, że wkrótce będę go używał. Mój stary folder projektu zawiera wersje plików oznaczone jako v1, v2 itd. Jak łatwo mogę złożyć to do nowego [lokalnego] repozytorium? Jest tylko kilka zestawów plików z licznikami wersji (więc zatwierdź, potem skopiuj wklej, potem zatwierdź jest opcją). Powinienem również zauważyć, że nie jestem klasycznie wykształconym programistą, ale samoukiem, byłym chemikiem analitycznym.


title: Czy konwencjonalne jest zgłaszanie NotImplementedError dla metod, których implementacja jest w toku, ale nie jest planowana jako abstrakcyjna?

text: Lubię zgłaszać `NotImplementedError` dla każdej metody, którą chcę zaimplementować, ale tam, gdzie jeszcze tego nie zrobiłem. Mogę już mieć częściową implementację, ale poprzedź ją opcją `raise NotImplementedError()`, ponieważ jeszcze jej się nie podoba. Z drugiej strony lubię też trzymać się konwencji, ponieważ ułatwi to innym utrzymanie mojego kodu, a konwencje mogą istnieć nie bez powodu. Jednak dokumentacja Pythona dotycząca NotImplementedError stwierdza: > Ten wyjątek pochodzi od RuntimeError. W klasach bazowych zdefiniowanych przez użytkownika metody abstrakcyjne powinny zgłaszać ten wyjątek, gdy wymagają > klas pochodnych, aby przesłonić metodę. To znacznie bardziej konkretny, formalny przypadek użycia niż ten, który opisuję. Czy dobrym, konwencjonalnym stylem jest zgłaszanie błędu „NotImplementedError” tylko w celu wskazania, że ta część interfejsu API jest w toku? Jeśli nie, czy istnieje inny ustandaryzowany sposób wskazywania tego?


title: Czy testowanie wydajności ma zastosowanie do kontroli jakości lub testowania użytkowników biznesowych?

text: Testowanie wydajności to coś, co ja, jako programista, robię podczas optymalizacji. Jeśli jednak zmiana jest czysto optymalizacyjna, czy użytkownik QA lub użytkownik biznesowy powinien przeprowadzać własne testy wydajności? Uważam, że powinni, poza testowaniem, że funkcjonalność pozostaje taka sama. Jeśli tak jest, czy jest dopuszczalne, aby testowali ręcznie mierząc czas odpowiedzi z ekranu?


title: Przechowywanie tokenów podczas etapu leksyki

text: Obecnie wdrażam lekser, który rozbija pliki XML na tokeny, rozważam sposoby przekazania tokenów do parsera, aby stworzyć bardziej użyteczną strukturę danych z tych tokenów - mój obecny plan to przechowywanie ich w arraylist i przekazywanie to do parsera, czy lista linków, w której każdy token wskazuje na następny, byłaby lepiej dopasowana? A może łatwiej jest uzyskać dostęp do tokenów za pomocą indeksu? A może to wszystko straszna strategia? Również jeśli ktoś używał antlr , wiem, że używa strumienia tokenów do przekazywania tokenizowanych danych wejściowych do parsera, w jaki sposób parser może podejmować decyzje, czy dane wejściowe są prawidłowe / utworzyć strukturę danych, jeśli nie ma wszystkich tokenów z danych wejściowych już?


title: Assembly.GetTypes() a Assembly.DefinedTypes.Select(t => t.AsType());

text: public static IEnumerable<Type> GetAccessibleTypes(ten zestaw zestawu) { spróbuj { #if NET40 return Assembly.GetTypes(); #else zwrócić Assembly.DefinedTypes.Select(t => t.AsType()); #endif } catch (ReflectionTypeLoadException ex) { // Wyjątek jest zgłaszany, jeśli niektórych typów nie można załadować w częściowym zaufaniu. // Dla naszych celów chcemy po prostu pobrać typy, które są ładowane, // podane we właściwości Types wyjątku. return ex.Types.Where(t => t != null); } } Jakie są różnice między Assembly.GetTypes() i Assembly.DefinedTypes.Select(t => t.AsType()); Oryginalny kod: https://entityframework.codeplex.com/SourceControl/latest#src/Common/AssemblyExtensions.cs


title: Wzór do załadunku i obsługi zasobów

text: Wielokrotnie istnieje potrzeba załadowania do programu zewnętrznych zasobów, mogą to być grafiki, próbki audio czy ciągi tekstowe. Czy istnieje wzór do obsługi załadunku i obsługi takich zasobów? Na przykład: czy powinienem mieć klasę, która ładuje wszystkie dane, a następnie wywoływać ją za każdym razem, gdy potrzebuję danych? Jak w: GraphicsHandler.instance().loadAllData() ...//a później: draw(x,y, GraphicsHandler.instance().getData(WATER_IMAGE)) //lub może draw(x,y, GraphicsHandler. instance().WATER_IMAGE) Czy powinienem przypisać każdy zasób do klasy, do której należy? Jak w (na przykład w grze): Grafika g = GraphicsLoader.load(CHAR01); Znak c = nowy Znak(..., g); ... c.rysuj(); Ogólnie rzecz biorąc, które z tych dwóch rozwiązań jest bardziej niezawodne? GraphicsHandler.instance().getData(WATER_IMAGE) //lub GraphicsHandler.instance().WATER_IMAGE //stała referencja


title: Kiedy preferować uogólnione rozwiązanie od rozwiązywania konkretnych przypadków?

text: W programowaniu często stajemy przed wyborem: omówić każdy możliwy przypadek użycia indywidualnie lub rozwiązać ogólny problem: ![XKCD - The General Problem](http://imgs.xkcd.com/comics/the_general_problem.png) Jego oczywiste, że rozwiązanie najpilniejszego problemu jest szybsze, jednak stworzenie uogólnionego rozwiązania pozwoli zaoszczędzić czas w przyszłości. Skąd mam wiedzieć, kiedy najlepiej spróbować opisać skończoną listę przypadków lub stworzyć ogólny system, aby uwzględnić wszystkie możliwości?


title: Pomysł na CAPTCHA

text:
CAPTCHA mają wiele wad, dostępność i przyjazność dla użytkownika to dwie rzeczy, które często poświęca się. Przyszło mi do głowy pomysł, który może zadziałać naprawdę dobrze, czy kiedykolwiek próbowano tego wcześniej? ## Wymagania wstępne Warunkiem wstępnym jest to, że weryfikacja adresu e-mail _musi być wymogiem_ w Twojej witrynie, co jest obecnie bardzo powszechne. ## Proces wstępny * Użytkownik/robot rejestruje się * Użytkownik/robot powiadomiony, że wymagana jest weryfikacja adresu e-mail * E-mail wysłany w formacie HTML ## Link weryfikacyjny w wiadomości e-mail Link w wiadomości e-mail będzie zawierał link weryfikacyjny. Dla przykładu podałem linkowi 3 parametry ciągu zapytania: * **UID** \- Identyfikator rejestrującego użytkownika * **Kod** \- Unikalny kod aktywacji * **F** \- Flaga niepowodzenia Będzie renderuj w następujący sposób: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/INGm0.png) Ale kod HTML w e-mailu wygląda następująco: Dziękujemy za rejestrację!

 Aby aktywować konto, kliknij poniższy link:

 h ttp://www.example.com/Weryfikuj

 Pozdrawiam
 Tom ## Wynik Założenie tutaj jest takie, że robot albo kliknie link niepowodzenia jako pierwszy w wiadomości e-mail, albo kliknie oba linki. * Jeśli oba linki zostaną kliknięte, możemy je oznaczyć jako potencjalnego bota. * Jeśli kliknięto tylko pierwszy link, możemy oznaczyć go jako potencjalnego bota * Jeśli kliknięto drugi link, możemy założyć, że jest to legalny użytkownik ## Recenzja **Wady:** * E-maile HTML dla klienta musi być włączony lub będzie bardzo mylący dla klienta końcowego * Niewielki procent kliknięć w obszarze linków z miodem (jednak prawdopodobnie możesz ukryć ten link H za pomocą większej ilości kodu HTML, ale może to zmylić użytkowników końcowych w zależności od tego, w jaki sposób podchodzisz do tego, więc ja bym nie próbował) **Korzyści** * To nie jest binarny pass/fail. Jeśli link błędu zostanie kliknięty, możesz ręcznie przejrzeć konto lub ponownie wysłać link aktywacyjny. * Jest dostępny (o ile klient włącza pocztę e-mail w formacie HTML) * Nie przeszkadza w obsłudze, przepływ dla użytkownika jest naturalny i nie będzie wiedział, że właśnie przeszedł test CAPTCHA Jeśli ta metoda ma niższy współczynnik fałszywych trafień niż tradycyjne metody, warto je mieć. Nie tylko to, ale jest to niewidoczny proces weryfikacji z punktu widzenia prawdziwych użytkowników. Myśli? Krytyka? Czy zostało to zrobione wcześniej?


title: Projekt bazy danych

text: Jestem w trakcie tworzenia aplikacji, która wymaga pewnego rodzaju dynamicznej bazy danych, więc tego właśnie chcę ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/0fxbc.png) To jest Aby odczytać szczegóły klasy, liczba zmiennych i metod będzie znana tylko w czasie wykonywania, a ja muszę utworzyć kilka klas takich jak ta. Jak w powyższym scenariuszu zaprojektować bazę danych (MySql) do przechowywania wszystkich tych danych i późniejszego ich odzyskania?


title: Wymaganie wielowątkowości/współbieżności do implementacji języka skryptowego

text: Oto oferta: dla zabawy zaprojektuję własny język skryptowy/interpretowany. W tej chwili jestem dopiero na etapie planowania; Zanim zacznę kodować, chcę się upewnić, że mam bardzo silne pojęcie o tym, jak wszystko zaimplementuję. To, z czym obecnie zmagam się, to współbieżność. Wydaje mi się, że łatwym sposobem na uniknięcie nieprzewidywalnej wydajności, która towarzyszy odśmiecaniu, byłoby umieszczenie go we własnym wątku i uruchomienie go równolegle z samym interpreterem. (Aby było jasne, nie planuję pozwolić, aby skrypty były wielowątkowe; po prostu umieściłbym garbage collector, aby pracował w innym wątku niż interpreter.) To nie wydaje się być powszechną strategią dla wielu popularnych języki skryptowe, prawdopodobnie ze względu na przenośność; Prawdopodobnie początkowo napisałbym interpreter w ramach wątków UNIX/POSIX, a następnie przeniósłby go na inne platformy (Windows itp.), Jeśli zajdzie taka potrzeba. Czy ktoś ma jakieś przemyślenia w tej sprawie? Czy wszelkie korzyści, jakie uzyskam dzięki wykorzystaniu współbieżności, zostaną zniweczone przez problemy z przenośnością, które nieuchronnie się pojawią? (W tej notatce, czy naprawdę słusznie założyłem, że uzyskałbym duży wzrost wydajności przy jednoczesnym zbieraniu elementów bezużytecznych?) Czy powinienem iść naprzód z tą strategią, czy od niej odejść?


title: Dlaczego nie ma następnej operacji na wyliczeniach?

text: W większości popularnych języków programowania, takich jak Java i C#, istnieje sposób na zdefiniowanie „wyliczeń”, które są zasadniczo typami danych ze stałym zestawem wartości, np. „Dzień Tygodnia”. Problem polega na tym, że podana wartość to np. `DayOfWeek.Monday`, jak uzyskać następną wartość `enum`, w tym konkretnym przypadku `DayOfWeek.Tuesday`? Zdaję sobie sprawę, że nie wszystkie „wyliczenia” są uporządkowane i mogą być dla nich różne rodzaje porządków (cykliczne, częściowe itp.), ale w większości przypadków wystarczy prosta „następna” operacja. W rzeczywistości, ponieważ zbiór wartości w „wyliczeniu” jest ustalony i ograniczony, można to zrobić całkowicie deklaratywnie, zakładając, że w języku jest na to sposób. Jednak w większości języków programowania jest to po prostu niemożliwe, przynajmniej nie tak łatwe, jak mogłoby to być w teorii. Więc moje pytanie brzmi: dlaczego tak jest? Jakie są powody niepodania prostej składni do deklarowania wartości `następnej` dla `enum`? Sugeruję, że w C# lub Javie można to zrobić nawet za pomocą specjalnego _atrybutu_ lub _adnotacji_ , odpowiednio. Ale o ile wiem, nie ma. Ja wyraźnie _nie proszę_ o obejścia; Wiem, że istnieją alternatywne rozwiązania. Chcę tylko wiedzieć, dlaczego w pierwszej kolejności muszę zastosować obejście.


title: Dlaczego niektóre języki programowania funkcjonalnego wykorzystują przestrzeń do aplikacji funkcji?

text: Przyglądając się niektórym językom programowania funkcjonalnego, zawsze zastanawiałem się, dlaczego niektóre języki fp używają jednego lub więcej znaków odstępu do aplikacji funkcji (i definicji), podczas gdy większość (wszystkie?) języków imperatywnych/obiektowych używa nawiasów, co wydaje się być bardziej matematycznym sposobem. Myślę też, że ten ostatni styl jest o wiele bardziej czytelny i czytelny niż bez rodziców. Więc jeśli mamy funkcję _f(x) = x²_ istnieją dwie alternatywy dla jej wywołania: * FP: `f x` Przykłady: * ML, Ocaml, F# * Haskell * LISP, Scheme (jakoś) * Non-FP: ` f(x)` Przykłady: * Prawie wszystkie języki imperatywne (znam, zobacz komentarze/odpowiedzi) * Erlang * Scala (dopuszcza również "notację operatorową" dla pojedynczych argumentów) Jakie są powody "pomijania" nawiasów?


title: Czy rozsądniej jest rejestrować wyjątki w klasie wyjątków typu catch-all lub w podstawowej klasie wyjątków?

text: Jestem w trakcie refaktoryzacji dość dużej aplikacji internetowej. Jednym z głównych problemów jest niespójna obsługa błędów i staram się wymyślić rozsądną strategię. Stworzyłem niestandardowy program obsługi błędów, poprzez set_error_handler, który zasadniczo zamienia błędy PHP w ErrorExceptions i niestandardową klasę wyjątków bazowych, która bezpośrednio dziedziczy po Exception. W produkcji używam ogólnego wyjątku catch-all, za pośrednictwem set_exception_handler i mam zamiar dodać rejestrowanie wyjątków* do miksu. Moim dylematem jest, gdzie zrobić faktyczne rejestrowanie, w podstawowej klasie wyjątków lub w catch-all. Wymyśliłem kilka powodów, aby rejestrować to w catch-all: * Istnieje kilka wyjątków w kodzie, które należy przekonwertować na odpowiednie dziecko podstawowej klasy wyjątków. Do tego czasu nie wszystkie wyjątki zostaną zarejestrowane. * W jakiś sposób bardziej naturalne wydaje się robienie tego w catch-all, podstawowa klasa wyjątków nie powinna robić więcej niż tylko to. (Może to być kwestia pojedynczej zasady odpowiedzialności, ale może to być po prostu błędne uczucie) i jeden powód, aby zalogować się do podstawowej klasy wyjątków: * Obecnie catch-all jest używany tylko w środowisku produkcyjnym. Byłoby łatwo wprowadzić go w innych naszych środowiskach (programowanie, testowanie), ale wymagałoby to kilku poprawek, ponieważ błędy są obsługiwane inaczej w zależności od środowiska, ponieważ w środowisku produkcyjnym są tłumaczone na strony błędów 404/503. Czy jest jakaś akceptowalna praktyka, gdzie rejestrować wyjątki? * Rejestrowanie będzie początkowo wymagało zapisywania do pliku tekstowego i może ewoluować w kierunku wysyłania wiadomości e-mail z pewnymi typami wyjątków. * * * Kilka wyjaśnień, podsycanych odpowiedzią @unholysampler: Mam do czynienia z kodem sloc 2*10^6, z wieloma rzeczami innych firm, nad którymi nie mam kontroli, a część kodu, nad którym mam kontrolę przed wyjątki dat w PHP. Jest też trochę gównianego ostatniego kodu, który wychodzimy z długiego okresu intensywnej presji, w którym praktycznie musieliśmy przestać myśleć i po prostu zhakować. Aktywnie przeprowadzamy refaktoryzację, aby usunąć wszystkie niespójności i wprowadzić rozsądne podejście do obsługi błędów, ale to zajmie trochę czasu. Bardziej interesuje mnie, co robić, dopóki nie dojdę do punktu, w którym błędy są odpowiednio obsługiwane. Zapewne w pewnym momencie zadam inne pytanie o sensowną strategię wyjątków. Główną motywacją do logowania jest otrzymywanie e-maila na mój telefon, gdy coś złego dzieje się na produkcji. Nie obchodzi mnie, czy zrzuty danych staną się ogromne, jeśli tak, będę miał zadanie usuwania starych od czasu do czasu przez crona.


title: Skróty kodowania do konwersji typów lub podobnych

text: boli? przykład = null; jest faktycznie Nullable<System.Boolean> przykład = null; Przejdźmy teraz do konwersji `bool` na `System.Boolean` lub właściwie do zamiany w czasie kompilacji: zwykle mało nas to obchodzi, ponieważ jest to bardzo oczywiste. Myślę nawet, że _nigdy_ nie używałem `System.Int32` lub czegokolwiek. Jednak: Konwersja do `Nullable<T>` poprzez dołączenie `?`, to nie jest tak powszechne. Nie jest to zwyczajowe w VS (#devel też to robi) i przypuszczam, że jest to jakaś tajemna magia w kompilatorze. Moje pytanie brzmi: Czy w `.NET/C#` jest dostępnych więcej takich skrótów „ _Konwersje_ ” / wpisywania? NIE mam na myśli skrótów klawiaturowych. Termin do google lub coś podobnego może być najlepszy.


title: UnmarshalException podczas korzystania z usługi internetowej

text: Posiadam serwis internetowy oparty na kilku klasach encji. jeden z nich jest pokazany poniżej @Entity @Table(name = "users") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"), @NamedQuery(name = "Users.findByUserName", query = "SELECT u FROM Users u WHERE u.userName = :userName"), @NamedQuery(name = "Users.findByUserPassword", query = "SELECT u FROM Users u WHERE u.userPassword = :userPassword ")}) public class Użytkownicy implementuje Serializable { private static final long serialVersionUID = 1L; @Id @Basic(opcjonalne = false) @Column(name = "nazwa_użytkownika") private String nazwa_użytkownika; @Basic(opcjonalne = false) @Column(name = "user_password") private String userPassword; @JoinColumn(name = "user_category_id", referencedColumnName = "category_id") @ManyToOne(opcjonalne = false) private UserCategory userCategoryId; @OneToMany(cascade = CascadeType.ALL, mappedBy = "userName") private List<UserRecord> userRecordList; public Users() { } public Users(String nazwa_użytkownika) { this.userName = nazwa_użytkownika; } public Użytkownicy(String nazwa_użytkownika, ciąg_hasło_użytkownika) { this.userName = nazwa_użytkownika; this.userPassword = userPassword; } public String getUserName() { return nazwa_użytkownika; } public void setUserName(String nazwa_użytkownika) { this.userName = nazwa_użytkownika; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } public UserCategory getUserCategoryId() { return userCategoryId; } public void setUserCategoryId(UserCategory userCategoryId) { this.userCategoryId = userCategoryId; } @XmlTransient public List<UserRecord> getUserRecordList() { return userRecordList; } public void setUserRecordList(List<UserRecord> userRecordList) { this.userRecordList = userRecordList; } @Override public int hashCode() { int hash = 0; hash += (nazwa_użytkownika != null ? nazwa_użytkownika.hashCode() : 0); skrót zwrotny; } @Override public boolean equals(Object object) { // TODO: Uwaga - ta metoda nie zadziała w przypadku, gdy pola id nie są ustawione if (!(object instanceof Users)) { return false; } Użytkownicy inni = (Użytkownicy) obiekt; if ((this.userName == null && other.userName != null) || (this.userName != null && !this.userName.equals(other.userName))) { return false; } zwróć prawdę; } @Override public String toString() { return nazwa_użytkownika; } } Udało mi się pomyślnie wdrożyć usługę sieciową, a następnie dodałem nowego klienta sieci Web Restful za pomocą netbeans, który utworzył następującą klasę public class Client { private WebTarget webTarget; prywatny klient javax.ws.rs.client.Client; prywatne statyczne końcowe String BASE_URI = "http://localhost:31691/ProductionEntitiesService/api"; public Client() { klient = javax.ws.rs.client.ClientBuilder.newClient(); webTarget = client.target(BASE_URI).path("entities.users"); } ... public <T> T find_XML(Klasa<T>responsType, String id) throws ClientErrorException { WebTarget resource = webTarget; resource = resource.path(java.text.MessageFormat.format("{0}", nowy obiekt[]{id})); return resource.request(javax.ws.rs.core.MediaType.APPLICATION_XML).get(responseType); } public <T> T findAll_XML(Class<T> responseType) throws ClientErrorException { WebTarget resource = webTarget; return resource.request(javax.ws.rs.core.MediaType.APPLICATION_XML).get(responseType); } public void zamknij () { klient.zamknij(); } } Ten wiersz kodu zwrócił następnie wynik xml wyniku zapytania = c.findAll_XML(String.class); który miał ten format <?xml version="1.0" kodowanie="UTF-8" standalone="yes"?> <userss> <users> <userCategoryId> <categoryId>2</categoryId> <userCategory>administrator</userCategory > </userCategoryId> <userName>admin</userName> <userPassword>d033e22ae348aeb5660fc2140aec35850c4da997</userPassword> </users> </userss> Jednak ten wiersz kodu List<Users> l = (List<Users>)c.findAll (Użytkownicy.klasa); generuje wyjątek, który wydaje się być spowodowany przez znacznik „userss”, który otacza wynik xml, nie jestem pewien, jak to się stało. Czy ktoś może mi pomóc rozwiązać ten problem? Wyjątek w wątku „AWT-EventQueue-0” javax.ws.rs.BadRequestException: nieprawidłowe żądanie HTTP 400 pod adresem org.glassfish.jersey.message.internal.AbstractRootElementJaxbProvider.readFrom(AbstractRootElementJaxbProvider.java:124) pod adresem jersey.glassfish. message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:188) w org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:134.Messey.sjage) w org. readFrom(MessageBodyFactory.java:988) pod adresem org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:833) pod adresem org.glassfish.jersey.message.internal.ContextInboundMessageContext.readEntity(InboundMessage:InboundMessage) w org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:96) w org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:740) w o rg.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:88) pod adresem org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:650) pod adresem org.glassfish.jersey.internal.Errors. process(Errors.java:315) w org.glassfish.jersey.internal.Errors.process(Errors.java:297) w org.glassfish.jersey.internal.Errors.process(Errors.java:228) w org.glassfish .jersey.process.internal.RequestScope.runInScope(RequestScope.java:421) w org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:646) w org.glassfish.jersey.client.JerseyInvocation$Builder.method (JerseyInvocation.java:375) w org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:275) w service.Client.findAll_XML(Client.java:83) w example.Find.<init>( Znajdź.java:44) w example.Find$1.run(Find.java:166) w java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) w java.awt.EventQueue.dispatchEventImpl(EventQueue. java:744) o java.awt.EventQueue.access$400(EventQueue.java:97) o java.awt.EventQueue$3.run(EventQueue.java:697) o java.awt.EventQueue$3.run(EventQueue.java: 691) pod adresem java.security.AccessController.doPrivileged(metoda natywna) pod adresem java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) pod adresem java.awt.EventQueue.dispatchEvent(EventQueue.java:714) pod adresem java.awt. EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) o java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) o java.awt.EventDispatchThread.pumpEventsForHierarch.Events. .java:101) pod adresem java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) pod adresem java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Przyczyna: javax.xml.bind.UnmarshalException: nieoczekiwany element (uri :"", lokalny:"użytkownicy"). Oczekiwane elementy to <{}userCategory>,<{}users> w com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:681) w com.sun.xml.internal. bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247) pod adresem com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242) pod adresem com.sun. xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:109) pod adresem com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContextj. ) pod adresem com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:510) pod adresem com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext. .java:492) pod adresem com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:163) pod adresem com.sun.org.apache.xerces.internal. parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) pod adresem com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:378) pod adresem com.apach.sun.org. imppl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:604) pod adresem com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver. xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880) pod adresem com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScanner.s606) at java apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) pod adresem com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLScanner. apache.xerces.internal.pars ers.XML11Configuration.parse(XML11Configuration.java:848) pod adresem com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) pod adresem com.sun.org.apache.xerces.internal. parsers.XMLParser.parse(XMLParser.java:141) w com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) w com.sun.org.apache.xerces.internal. jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649) w com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.ml.insternal.xun) w bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214) na javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Abstract UnmarshallerImpl.java:140) na stronie javax. AbstractUnmarshallerImpl.java:123) w org.glassfish.jersey.message.internal.XmlRootElementJaxbProvider.readFrom(XmlRootElementJaxbProvider.java:140) w org.glassfish.jersey.message.internal.AbstractRootElementJaxbProvider.readFrom(AbstractRootElementJaxbProvider.java:122)... 33 więcej


title: Niezależnie od tego, czy przechowywać wszystkie liczby, czy tylko ich zakresy w bazie danych dla tej aplikacji

text: Zajmuję się tworzeniem aplikacji internetowej (`PHP MySQL`), która będzie sprzedawać dynamicznie generowane numery telefonów komórkowych w czasie rzeczywistym dla firm komórkowych. Firma poprosi na przykład o tysiąc numerów, a ta aplikacja sprawdzi dostępne numery i je poda. Numer będzie liczbą 8 cyfr. Pierwsze „dwie cyfry” numeru będą w większości ustalone jako konkretne „kody” dla konkretnej firmy, pozostałe cyfry będą generowane dynamicznie. Moje pytanie brzmi, czy a) powinienem przechowywać wszystkie sprzedane numery w bazie danych, jeśli tak, to: i) Oddziel numer w osobnym wierszu, czy ii) Wszystkie liczby w jednym wierszu b) Czy powinien przechowywać zakres numerów, tj. 32500001-32510000 Utrzymanie wydajności mając na uwadze łatwość obsługi algorytmu, uprzejmie zaproponuj mi swoje rozwiązanie.


title: Dodawanie funkcji aktualizacji do aplikacji internetowej

text: Interesuje mnie najlepsze podejście do dodawania funkcji automatycznej aktualizacji do aplikacji internetowej. Obecnie * Łatki są pobierane ze strony wsparcia oprogramowania * Przesyłane na serwer(y) hosta * Rozpakowywane * Proces łatania jest uruchomiony Proces łatania musi znać kilka rzeczy, w szczególności webbroot aplikacji i host bazy danych, nazwę i użytkownika w celu uruchamiania migracji między wydaniami punktów. Co chciałbym zobaczyć, jeśli zaimplementujemy w aplikacji moduł, który przy użyciu technologii podobnej do cURL pobierze najnowszy pakiet, rozpakuje go i uruchomi niezbędne polecenie do nałożenia poprawki. Jednak nie sądzę, aby użytkownik końcowy znał specyfikę serwera. np. lokalizacja aplikacji, host bazy danych, użytkownik i hasło. Myślę, że najlepszym sposobem zabezpieczenia tych informacji byłaby oddzielna tabela bazy danych, do której dostęp ma moduł aktualizacji przy użyciu istniejących poświadczeń logowania użytkowników (pod warunkiem, że mieli niezbędne uprawnienia do aktualizacji instalacji). Jakie inne kwestie muszę wziąć pod uwagę? Czy są jakieś czynniki, które przeoczyłem?


title: Jaki jest związek między warstwą logiki biznesowej a warstwą dostępu do danych?

text: Pracuję nad aplikacją MVC-ish _(Nie mam dużego doświadczenia z MVC, stąd "-ish")_. Mój model i warstwa dostępu do danych są trudne do przetestowania, ponieważ są bardzo ściśle powiązane, więc próbuję je rozłączyć. Jaka jest natura relacji między nimi? Czy tylko model powinien wiedzieć o DAL? Czy tylko DAL powinien wiedzieć o modelu? A może zarówno model, jak i DAL powinny być słuchaczami drugiego? * * * W moim konkretnym przypadku jest to: * aplikacja internetowa * model jest po stronie klienta (javascript) * dane są dostępne z zaplecza za pomocą Ajax * persistence/back-end to obecnie PHP/MySQL, ale może musisz przełączyć się na Python/GoogleDataStore na GAE


title: Co zrobić z długim niedokończonym projektem?

text: Jestem programistą-hobbystą (samouczącym się), a od czasu do czasu lubię tworzyć gry i interaktywne skrypty (obecnie głównie w JavaScript ze względu na łatwość). Czasami zaczynam długie projekty, które kończą się zapomnieniem z powodu innych rzeczy, które muszę zrobić. Czasami projekt staje się naprawdę duży (powiedzmy, 3000 linii to dla mnie ogromna sprawa). Mój kod jest w większości odkomentowany, niezorganizowany i niezoptymalizowany, a niektóre z moich projektów nigdy nie są skończone. **Pytanie:** * Co programiści (lub zespoły) robią z takimi projektami? * Czy istnieje zalecana praktyka dotycząca tego problemu w „prawdziwym świecie”?


title: Praca z cyklami procesora w Gameboy Advance

text: Pracuję na emulatorze GBA i utknąłem przy wdrażaniu cykli procesora. Znam tylko podstawową wiedzę na ten temat, każdą instrukcję trybu ARM i THUMB jako każdy inny zestaw cykli dla każdej instrukcji. Obecnie mówię po prostu, że każda instrukcja ARM kosztuje 4 cykle, a instrukcje THUMB kosztują 2 cykle. Ale jak to zaimplementować, jak mówi dokumentacja procesora? Czy cykle instrukcji różnią się w zależności od sekcji pamięci, do której aktualnie uzyskuje dostęp? http://nocash.emubase.de/gbatek.htm#cpuinstructioncycletimes Zgodnie z powyższą specyfikacją, różne obszary pamięci mają różne stany oczekiwania, ale nie wiem, co to dokładnie oznacza. Ponadto, do czego służą cykl niesekwencyjny, cykl sekwencyjny, cykl wewnętrzny, cykl koprocesora? Widziałem w pewnym kodzie źródłowym GBA, że używają komputera PC, aby dowiedzieć się, ile cykli zajmuje każda instrukcja, ale jak to robią?


title: Jak mogę utworzyć test Assert.AreEqual(myobject,somevariable) w TDD przed napisaniem kodu produkcyjnego?

text: Badam TDD, nie jestem do końca pewien, jak napisać test, zanim napiszę kod produkcyjny. Problem polega na tym, że TDD stwierdza, że tworzysz asercje, a następnie piszesz swój kod, aby te asercje przeszły. Ale nie utworzyłeś jeszcze żadnych klas (jako części kodu produkcyjnego), więc jak masz pisać testy, jeśli nie masz żadnych klas, z którymi można by wykonać asercję. Mam nadzieję, że ktoś może wyjaśnić ....


title: Programowanie funkcjonalne oprogramowania wbudowanego

text: Wczoraj rozmawiałem o języku F# i programowaniu funkcjonalnym z przyjacielem i zadał mi interesujące pytanie. Jak byś zrobił wbudowane oprogramowanie funkcjonalne? Mam na myśli to, że wydaje się to być całkiem naturalne, jeśli chodzi o kod bezstanowy, ale wbudowane wiąże się również z bardzo oszczędną pamięcią i nie jestem pewien, jak funkcjonować pod tym względem. Jakieś sugestie dotyczące języków lub pakietów do osadzania z funkcjonalnością?


title: Jak uniknąć powielania modeli w aplikacjach internetowych JavaEE z interfejsem JSON?

text: Niedawno opracowaliśmy aplikację internetową, która używa następującego stosu technologicznego: * hibernacja jako orm * wiosna * extjs (interfejs javascript MVC) Dla 1 obiektu biznesowego, niech to będzie Personel, mamy: 1) klasę Personel (hibernacja) 2 ) PersonnelDTO (wyjaśni, dlaczego tego potrzebowaliśmy) 3) Model javascript Personnel dla Extjs (nie wiem, mogą być inne frameworki javascript UI nie wymaga zdefiniowanego modelu) Potrzeba nr 2 pojawiła się, gdy nie mogliśmy poradzić sobie z wysyłaniem hibernuj obiekty tam iz powrotem, zajmując się sesjami i odwołaniami cyklicznymi itp. Ponadto, w niektórych przypadkach potrzebujesz w pełni wypełnionego obiektu Personnel (pełne pola połączone), czasami tylko kilka pól i relacji. Czasami potrzebujesz wszystkich informacji, aby przetworzyć Personel, ale nie możesz wysłać ich w całości do klienta (ze względów bezpieczeństwa, prywatności). Więc użyliśmy DTO, aby oddzielić obiekty modelu od obiektów, które zostaną wysłane przez przewód. Dodawanie-usuwanie pola w takim projekcie projektu staje się bardzo żmudne i podatne na błędy. Dodanie pola wymaga: * dodaj do tabel DB * dodaj do obiektu modelu * dodaj do DTO * dodaj do modelu -> konwerter DTO (gdy jest to pole, które nie może być automatycznie zmapowane) w odniesieniu do różnych scenariuszy, które wymagają różnej ilości informacji o model * dodaj do modelu Extjs * dodaj do formularzy CRUD na stronie * dodaj do walidatorów klienta i serwera... Czy nie ma lepszego podejścia do budowania podobnych aplikacji? Myślimy o rozpoczęciu nowego projektu i nie chcemy popełniać tych samych błędów.


title: Jak nauczyć się zapewniania jakości?

text: Rozpoczynając naukę programowania, zwykle wskazujesz kogoś na Akademię Kodowania, Nauczanie Pythona w Trudny sposób lub nawet Język programowania C i każesz im zacząć pisać kod, dopóki nie zadziała. Ale jak postąpić, jeśli chce się uczyć kontroli jakości? Dokładniej, programista, który chce poznać proces QA i jak zarządzać dobrą metodologią QA. Przydzielono mi rolę szybkiego uruchomienia procesu kontroli jakości w naszej firmie i trochę się gubię, jakie są rodzaje testów (system, integracja, biała skrzynka, czarna skrzynka) i które są najważniejsze do wdrożenia w pierwszej kolejności? Jak je wdrożyć?


title: Tworzenie aplikacji internetowej, która uwierzytelnia użytkowników z dwóch różnych baz danych

text: Jestem w trochę niezręcznej sytuacji programistycznej i bardzo mi to pomoże, aby uzyskać twój wkład w tej sytuacji. Buduję aplikację internetową, która oczekuje uwierzytelniania użytkowników z innej, oddzielnej aplikacji (poprzez wywołania API), a także uwierzytelniania użytkowników z własnej bazy danych. Zasadniczo istnieją dwie oddzielne bazy użytkowników. Załóżmy, że tworzona przeze mnie aplikacja to App1, a inna aplikacja, do której wywołuję interfejs API, to App2. Ta komunikacja jest tylko jednokierunkowa; App1 wykonuje wywołania API do App2, ale App2 nie wykonuje wywołań do App1. Użytkownicy mogą zarejestrować się w aplikacji 1 i utworzyć konto w bazie danych aplikacji 1 - ale podczas tego procesu aplikacja 1 wykonuje wywołanie API do aplikacji 2, aby upewnić się, że adres e-mail/nazwa użytkownika wprowadzana do aplikacji 1 nie jest już obecna w aplikacji 2. Teraz druga strona tego. Jeśli użytkownik jest już zarejestrowany w App2, nie musi ponownie rejestrować się w App1. Mogą po prostu przejść do App1 i zalogować się. W ten sposób App1 wysyła wywołanie API do App2 w celu uwierzytelnienia użytkownika i tworzy kopię konta użytkownika App2 we własnej bazie danych (App1). Problemy pojawiają się, gdy dwóch różnych użytkowników, jeden w App1, a drugi w App2, ma tę samą nazwę użytkownika. Teraz, gdy użytkownik App2 spróbuje zalogować się do App1, będą istnieć dwaj użytkownicy w App1 o tej samej nazwie użytkownika! Jak uniknąć takiego scenariusza? Czy to w ogóle miejsce, w którym chcę być (pracując z bazą użytkowników App2)?


title: Fasada publicznego interfejsu API z mikrousługami

text: Rozważ infrastrukturę mikrousług, w której każda usługa jest odpowiedzialna za jeden zestaw działań i udostępnia interfejs RESTful swojej funkcjonalności. Załóżmy na przykład aplikację do czatu. Możemy mieć jedną usługę odpowiedzialną za tworzenie użytkowników i drugą usługę odpowiedzialną za tworzenie wiadomości. Teraz chcemy stworzyć publiczny interfejs REST do aplikacji. Czy są jakieś najlepsze praktyki tworzenia tej publicznej fasady mikrousług? Interesuje mnie kilka rzeczy, głównie: 1. Która warstwa powinna obsługiwać uwierzytelnianie/autoryzację (jeśli usługi bazowe - czy udostępniają te dane, czy każda implementuje własne uwierzytelnianie) 2. Wyraźnie w tej aplikacji wysyłane są wiadomości od użytkowników dla użytkowników. Jednak usługa wiadomości może być łatwo napisana w taki sposób, aby była użyteczna do czegokolwiek. Czy publiczny serwer proxy powinien być tym, który określa informacje o użytkowniku, a następnie deleguje do usługi wiadomości?


title: Który moduł JSON powinienem pobrać?

text: Widzę, że istnieje wiele modułów dostępnych do użycia z Pythonem do korzystania z JSON. Teraz jestem trochę zdezorientowany! Widzę, że ludzie mówią o SimpleJSON, są też odniesienia do DemJSON, a także dobre słowa do Metamagic JSON. Teraz moje pytanie brzmi, który z nich jest najlepszy dla Pythona? Specjalnie dla wersji Pythona 3.4???


title: Skąd procesor wie, że otrzymał dane i instrukcje z pamięci RAM?

text: Cóż, tytuł jest dość oczywisty, ale wyjaśnię go nieco i podam źródło mojego pytania. Zastanawiałem się więc, skąd procesor wie, kiedy otrzymał pamięć RAM. Jestem prawie pewien, że nie LUB RAM wyprowadza razem, ponieważ 0x00 jest nadal liczbą, ale ORing to razem mówi, że RAM niczego nie wysłał. Czy pamięć RAM ma jakąś linię „potwierdzone żądanie”? Cóż, mój przyjaciel robił procesor MC i używał przerwań do odczytu pamięci RAM, więc stąd wpadłem na ten pomysł. W każdym razie źródłem mojego problemu jest prawdopodobnie wtedy, gdy myślałem o pamięci wirtualnej. W pamięci wirtualnej musisz pobrać z dysku i do pamięci RAM. Jak zrekompensować różnicę między prędkościami? Czy na to też można odpowiedzieć?