title: Rozprzęganie, gdy konstruktorzy mają parametry nieobjęte umową

text: Przez parametry niekontraktowe mam na myśli parametry, które nie są interfejsami ani zależnościami usług, coś w rodzaju `class Person(string name)`. Piszę aplikację do scrapingu stron internetowych i do tej pory pisałem ją w złej kolejności (stąd powstanie tego pytania). Stworzyłem klasę do parsowania dokumentów HTML (z formatu string) i podała mi wszystkie zawarte w niej adresy URL i obrazy. Ta klasa ma następujący opis: public class PageParser { private string only readonly _html; public PageParser(string html) { _html = html; } public IEnumerable<string> GetImages() { /* nieistotne */ } public IEnumerable<string> GetLinks() { /* nieistotne */ } } Ten kod działa świetnie, testowany jednostkowo, pokrywa 100% itd.. .Problem polega teraz na tym, jak pisać testy jednostkowe dla kodu używającego tej klasy bez martwienia się o konstruktor tej klasy. Potrzebuję tylko tej nowej klasy do pracy z zachowaniem `PageParser`. Pseudokod dla tej nowej funkcji jest następujący: public Report CreateReport(string url) { var html = _webClient.DownloadString(url); var parser = new PageParser(html); var obrazy = parser.GetImages(); var linki = parser.GetLinks(); var relatedLinks = links.Where(l => l.Contains('coś')); return _reportBuilder.Create(obrazy, odpowiednie linki); } Problem, który mam, polega na tym, że nie chcę mieć wielu testów jednostkowych, które mają dokumenty HTML o epickich rozmiarach dla wszystkich moich różnych przypadków testowych, jakie może mieć metoda `CreateReport`. Opcje, które wymyśliłem, to: **1) Zostaw wszystko tak, jak jest** Zostaw strukturę klasy taką, jaka jest, po prostu żyj z testami z dużymi zmiennymi konfiguracji **2) Odsłoń parser strony (+interfejs) z fabryki ** Utwórz interfejs dla `PageParser` i stwórz fabrykę z odpowiednim interfejsem. interfejs IPageParserFactory { IPageParser Create(string html); } class PageParserFactory : IPageParserFactory { IPageParser Create(string html) { return new PageParser(html); } } Wtedy wynikowy pseudokod wyglądałby następująco. // ... pobierz ciąg var pageParser = _pageParserFactory.Create(html); // ... utwórz raport **3) Przenieś parametr html do każdej metody i utwórz interfejs** (więc teraz klasa nie ma zależności konstrukcyjnych) interface IPageParser { IEnumerable<string> GetImages(string html); IEnumerable<string> GetLinks(string html); } **4) Coś zupełnie innego** Jeśli istnieje inny wzorzec, który rozwiązuje ten problem, chciałbym go poznać.


title: Czy powinienem uczynić pakiet prywatnym moim interfejsem DAO?

text: Mam kilka klas DAO, które implementują interfejs. Z drugiej strony mam klasy Service korzystające z tych implementacji DAO. Do tej pory wszystkie interfejsy DAO są publiczne i zastanawiałem się, czy nie byłoby lepiej, gdyby były one pakietami prywatnymi, a klasy usług w tym samym pakiecie, aby tylko one mogły z nich korzystać. Powodem jest to, że nie chciałbym, aby programiści mogli używać implementacji DAO w kontrolerze lub usłudze sieciowej bez korzystania z warstwy usług. Programista mógłby na przykład pomyśleć, że dodanie nowego zamówienia jest tak proste, jak wywołanie metody dao addOrder, ignorując fakt, że rzeczywiście istnieje metoda obsługi, która robi więcej. Co myślicie?


title: Algorytmiczne podejście do analizy tekstu składników i instrukcji

text: # Tło Szukam oddzielenia listy składników od instrukcji. Użytkownicy skanują przepisy kulinarne z kart 3x5, czasopism, książek kucharskich itp. Oprogramowanie OCR konwertuje zeskanowane obrazy na zwykły tekst — zazwyczaj pojedynczy akapit tekstu bez łamania wierszy (patrz przykład poniżej). # Problem Użytkownicy muszą ręcznie oddzielić listę składników od tekstu instrukcji. Chciałbym maksymalnie zautomatyzować ten krok (perfekcja nie jest wymagana; zmniejszenie wysiłku ręcznego o 80% to wygrana). # Aktywa Aktywa systemu obejmują: * 350 czasowników kulinarnych (np. gotować, gotować, zacieru) * 400 rzeczowników sprzętowych (np. miska, termos, wykałaczka) * 8300 znormalizowanych rzeczowników składowych (tj. bez liczby mnogiej, bez duplikatów) * Procesor języka naturalnego który dzieli składniki na ilość, miarę, rzeczownik i przymiotniki. # Pomysły * Użyj sieci neuronowej i nienadzorowanego treningu * Użyj statystyk Bayesa, aby oddzielić składniki od instrukcji * Używaj grupowania słów z technikami eksploracji tekstu? # Pytanie Jaki algorytm(y) zapewniłby największą dokładność w identyfikacji najbardziej prawdopodobnej granicy między składnikiem a tekstem instrukcji? # Przykład wejściowy tekst wejściowy wygenerowany przez OCR: Maple-Rasted Parsnips with Pecans and Cranberries Ziemisty pasternak pieczony do miękkości z żurawiną, orzechami pekan i przyprawami będzie miłym dodatkiem do pieczonej wieprzowiny, kury kornwalijskiej, indyka lub kurczaka, pieczonej szynki lub pieczone filety z łososia. Czas przygotowania: 15 minut, plus czas namaczania Czas gotowania: 40 minut Sposób przygotowania: Sześć porcji 1/3 szklanki suszonej żurawiny 1 1/2 funta pasternaku 1/4 szklanki syropu klonowego 1/4 szklanki wywaru z kurczaka lub warzyw 2 łyżki soku z cytryny 1 łyżka roztopione masło 1/4 łyżeczki mielonego cynamonu 1/8 łyżeczki mielonej gałki muszkatołowej I sól i świeżo zmielony czarny pieprz do smaku 1/2 szklanki połówek orzechów pekan 1 łyżka posiekanej świeżej pietruszki lub mięty LYLE STAFFORD, TlMES COLONIST miły dodatek do wieprzowiny, kury kornwalijskiej, pieczonej szynki lub filetów z łososia. Umieść żurawinę w misce. Przykryj szklanką ciepłej wody i odstaw na godzinę w temperaturze pokojowej. Odsączyć żurawinę i odstawić. Rozgrzej piekarnik do 375 F. Pasternak obieramy i kroimy wzdłuż na pół. Pokrój pasternak w poprzek na kawałki 1/2 cala. Umieść pasternak w naczyniu do pieczenia o wymiarach 9x13 cali. Dodaj syrop klonowy, bulion, sok z cytryny, masło, cynamon, gałkę muszkatołową, sól i pieprz, wymieszaj do połączenia. Piecz pasternak bez przykrycia 20 minut. Wymieszaj orzechy pekan i żurawinę i piecz jeszcze 10 minut. Wymieszaj pasternak, a następnie piecz kolejne 10 minut, aż będą ładnie szkliste i miękkie. Włóż łyżkę do naczynia do serwowania, posyp natką pietruszki lub miętą i podawaj. Curry Zupa Pasternak i Jabłko z Migdałami, Jogurtem i Miętą Łagodna, przyprawiona curry, indyjska zupa z pasternaku z akcentem ze słodkim jabłkiem, świeżą miętą, bogatymi migdałami NIEDZIELA, 3 LUTEGO 2013 B3 Gotowanie z pasternakiem i pikantnym jogurtem. Czas przygotowania: 20 minut Czas gotowania: 25 minut Sposób przygotowania: Sześć porcji 3 łyżki oleju roślinnego 50 g pasternaku, obranego, przekrojonego wzdłuż na pół i pokrojonego w plastry 1/2 średniej cebuli, posiekanej 1 łyżka grubo posiekanego świeżego imbiru 2 łyżki mąki uniwersalnej 1 łyżka łagodnego curry 4 1/2 szklanki bulionu drobiowego lub warzywnego 1 łyżka soku z limonki 1 duże lub 2 małe czerwone jabłka, obrane, wydrążone i pokrojone w kostkę I sól do smaku I jogurt naturalny do smaku 1/4 szklanki prażonych, pokrojonych migdałów (patrz uwaga) 2 Łyżka posiekanej świeżej mięty Umieść olej w średnim lub dużym garnku ustawionym na średnim ogniu. Dodaj pasternak, cebulę i imbir i smaż, aż zmiękną, około pięciu minut. Wymieszaj mąkę i curry, gotuj i mieszaj jeszcze przez dwie minuty. Mieszając powoli wlewaj wywar. Dodaj sok z limonki i jabłka. Doprowadź zupę do delikatnego gotowania na wolnym ogniu. Dusić zupę, aż pasternak i jabłka będą bardzo miękkie, około 15 do 20 minut. Zupę zmiksować w blenderze lub robocie kuchennym albo w garnku z blenderem zanurzeniowym. Wrzuć zupę do wrzenia; sezon z solą. Zupę przełóż do miseczek. Przykryj każdą miskę porcją jogurtu, posyp migdałami i miętą, a następnie podawaj. Uwaga: Aby podpiekać migdały, umieść je na nieprzywierającej patelni na średnim ogniu. Migdały smaż kilka minut, od czasu do czasu obracając patelnię, aż się lekko podpieczą. Q) 1] 3 ~§ lp do . CS ‘I V ® ?aii§‘;?’§‘7e-SF E E d pachnący, ‘CZY ‘TY ‘V C LIAC -°DI EASE’? \\ , , : V'' N ‘\ ''» / 5 i \ \


title: Definiowanie losowej „bezpiecznej” ścieżki dla postaci w grze

text: Piszę grę w Javie i można ją porównać do popularnej ostatnio gry „Flappy Bird” w tym sensie, że postać porusza się w górę iw dół, a użytkownicy dotykają i muszą omijać przeszkody. Przeszkodą będą asteroidy różnej wielkości. Chcę je odradzać w losowej ko-odiacie y io losowym rozmiarze, a następnie przesuwać je po ekranie. Postać musi wtedy ich unikać. Nie może to być jednak całkowicie losowe, ponieważ może to skutkować niemożliwą do przejścia ścieżką. Pomyślałem więc, że najlepiej będzie najpierw zdefiniować losową bezpieczną ścieżkę, a następnie wypełnić otoczenie tymi przeszkodami. Czy jest to najlepsze podejście do rozwiązania tego problemu, a jeśli tak, czy istnieje poprawny i skuteczny sposób na zrobienie tego?


title: O implementacji dynamicznego proxy w PHP

text: Próbuję zaimplementować dynamiczne proxy w PHP i mam problem z implementacją interfejsów. Moje obecne podejście do budowania dynamicznego proxy to posiadanie klasy, która używa metody __call magic. Problem polega na tym, że ta klasa nie implementuje interfejsu i/lub nie rozszerza żadnej innej klasy. Więc jeśli mam metodę, która akceptuje tylko obiekty określonego typu poprzez wskazówki typu PHP, nie mogę przekazać obiektu mojego typu dynamicznego proxy. Jednym z przypadków, z którymi mam obecnie do czynienia, jest klasa LazyLoader, która sprawdza wywoływaną metodę, aby zobaczyć, czy powinna wykonać procedurę ładowania. Moja metoda źródła danych do ładowania użytkownika, zamiast zwracać obiekt User, zwraca obiekt LazyLoader, który leniwie załaduje listę znajomych użytkownika. Wiele innych metod źródła danych robi podobne rzeczy. Problem polega na tym, że tam zwracam obiekt LazyLoader, a nie obiekt User. Tak więc za każdym razem, gdy używam obiektu źródła danych do ładowania obiektu User, otrzymam obiekt LazyLoader, którego nie mogę przekazać do metod/funkcji, które przyjmują parametr User ze wskazówką typu. Czy jest jakiś sposób na dynamiczne uczynienie obiektu LazyLoader „Użytkownikiem”? **Edytuj:** Mogę zrobić kilka rodzajów leniwych ładowarek, które rozszerzają odpowiednią klasę. Na przykład mógłbym mieć UserLazyLoader, FinanceSheetLazyLoader i tak dalej. Jest to możliwość, ale chciałbym najpierw sprawdzić, czy mógłbym rozwiązać ten problem w bardziej ogólny sposób.


title: Czy zatrudnienie junior developera jako trenera technicznego to dobry pomysł?

text: Więc szefowa mojej koleżanki sprowadziła czterech młodszych kandydatów z pewnym doświadczeniem zawodowym, ona jest jedną z nich. Jej menedżer chce, aby w ciągu dwóch miesięcy stali się ekspertami w dziedzinie tomcat, aby usprawiedliwić ich obciążaniem innych klientów jako trenera technicznego. Moim największym zmartwieniem jest to, że mają tylko rok do braku doświadczenia w rozwoju, ale nie mają doświadczenia w zakresie wsparcia produkcji. Czy za pomocą tekstu i forów można w krótkim czasie zmienić tych nowicjuszy w guru? Nie mają też odpowiedniej piaskownicy do zabawy, tj. żadnych serwerów. Pomagam w wolnym czasie, ale czuję, że nie ma wystarczająco dużo czasu, aby zostać MŚP. Co mogę zrobić, aby pomóc jej stać się ekspertem lub co mogę jej powiedzieć, że stanowisko może nie pasować?


title: Szukasz systemu informacyjnego do współpracy nad metadanymi plików

text: Poszukuję systemu informacyjnego, który posiada następujące funkcje: * przesyłanie plików i dodawanie własnych właściwości w zależności od typu pliku (np. autor, kompozytor, malarz, piosenkarz); * obsługa właściwości strukturalnych (np. `painter` to nie tylko napis, to obiekt o własnych właściwościach: firstName, lastName, dateOfBirth, placeOfBirth itp.); * opisz pliki stron trzecich (podając ich adresy URL); * kontrola wersji opisów; * wyszukiwanie plików i innych obiektów według ich właściwości; * edytuj opisy plików stworzonych przez innych (możliwość edycji zależy od reputacji, tak jak na StackExchange); * głosowanie nad plikami (wpływa na reputację), oznaczanie ich. Myślałem o zaimplementowaniu go sam za pomocą technologii Semantic Web, ale nadal nie mogę uwierzyć, że nie ma bardzo podobnego systemu. Jeśli nie ma takiego systemu, czy są jakieś komponenty, które mógłbym ponownie wykorzystać? Jeśli ma to znaczenie, wolę Pythona, ale większość oprogramowania w świecie Semantic Web jest napisana w Javie, więc zrezygnowałem z tego, że będę musiał napisać trochę kodu w Javie.


title: Dlaczego biblioteki JavaScript, takie jak knockout js, backbone js i angularjs, pojawiły się dopiero w 2010 roku?

text: Będąc stosunkowo nowym web-developerem, jestem zaskoczony, że te biblioteki wcześniej nie istniały. Czy istnieje jakiś szczególny techniczny lub historyczny powód, dla którego około września 2010 r. nastąpił nagły rozwój i zainteresowanie aplikacjami i bibliotekami RIA po stronie klienta? http://www.google.com/insights/search/#q=backbonejs%2Cangularjs%2Cknockoutjs%2Cjquery%20tmpl&cmpt=q


title: Jak zgłosić część projektu w sytuacji, gdy inne części nie zostały jeszcze w pełni zrealizowane?

text: Dostałem zadanie online, w którym mam napisać usługę opartą na innej klasie/usługi, która nie została jeszcze zaimplementowana, ale mam do tego przybliżone API, a wyniki zwracane przez moją klasę zostaną wykorzystane przez jakaś inna klasa/usługa Nie jestem pewien, jaki byłby najlepszy sposób, aby to zwrócić. Chodzi mi o to, czy będę miał jakąś fikcyjną/mockową implementację dla usługi, której oczekuję lub używam w mojej klasie, a także dla usługi, która wykorzystałaby wynik zwrócony przez moją klasę, czy jest to w porządku, aby po prostu rozwinąć swoją część i przyjąć rzeczy w oparciu o surowa specyfikacja API. Na przykład: jestem w zespole C i muszę wdrożyć usługę CService. Moja klasa wywoła usługę AService Zespołu A (nie jest to jeszcze zaimplementowane, ale mam przybliżoną specyfikację), a wyniki zwrócone przez moją klasę zostaną wykorzystane przez usługę Zespołu B.


title: Używanie wyrażenia lambda w obsłudze wyjątków

text: Poniżej znajduje się fragment kodu z aplikacji MVP Win Forms i to wyjaśnienie będzie pomocne przy odpowiadaniu na pytania. Mój DAL nie obsługuje wyjątków i będzie propagowany do metody wywołującej w klasach prezentera, w których wyjątek będzie obsługiwany. Używam pojedynczego modułu obsługi o nazwie `ExecutAction(Action action)`, więc wyłapuję wyjątki w jednym miejscu, zamiast powtarzać kod w każdej metodzie. W tej chwili nie loguję błędów. Po prostu zaalarmuj użytkownika o akcji i spróbuj utrzymać system przy życiu, jeśli to możliwe. Podczas wyświetlania wiadomości użytkownikom prezenterzy będą używać statycznej klasy o nazwie „MessagingService”. (`ShowErrorMessage()`). Abym mógł dostosować wszystkie pudełka do masażu w jednym miejscu. private void Search() { ExecutAction(() => { var info = _DataService.GetByACNo(_model.AccountNumber); if (info != null) { _Model = info ; this.SetViewPropertiesFromModel(_Model, _View); } else { MessageBox .Show ("Nie znaleziono konta bankowego"); } }); } private void WykonajAkcję(Akcja) { spróbuj { akcja(); } catch (NullReferenceException e) { MessagingService.ShowErrorMessage(e.Message); } catch (System.Data.SqlTypes.SqlTypeException e) { MessagingService.ShowErrorMessage(e.Message); } catch (System.Data.SqlClient.SqlException e) { MessagingService.ShowErrorMessage(e.Message); } } } Czy powinienem dołączyć do tego ogólną procedurę obsługi wyjątków, aby móc obsługiwać wszelkie nieprzewidziane wyjątki? Czy mógłbyś również pokazać mi lepszy sposób obsługi wyświetlania wiadomości niż używanie statycznego? Czy użycie wyrażenia lambda w każdym wywołaniu metody (`ExecutAction(() =>`) pogarsza czytelność kodu? Podczas wyświetlania komunikatów użytkownika, jak wyświetlić niestandardowy komunikat, taki jak „Sprawdź połączenie z serwerem” itp. najpierw, a następnie, jeśli użytkownik chce więcej informacje (takie jak StackTrace/szczegóły techniczne), /ona może nacisnąć przycisk, taki jak „Więcej informacji”, który znajduje się w oknie dialogowym MessageBox?


title: umieszczanie metod w klasie bazowej, które nie mają sensu/należą tam

text: Ostatnio zastanawiałem się nad zasadami i wzorcami projektowania i pojawiło się pytanie. Powiedzmy, że chcę zaprojektować grę wyścigową. Chcę zaprojektować klasy dla różnych samochodów. * każdy samochód może mieć inną cechę * najczęstsze cechy można umieścić w klasie bazowej - 'Car' Teraz dowiedziałem się, że zawsze należy dążyć do pracy z abstrakcjami. Cały kod, który próbuje manipulować samochodem, będzie próbował wywołać metody abstrakcyjne na „Car”, takie jak „Car.Accelerate()”, „Car.TurnLeft()”, itd. Ale co z konkretnymi funkcjami? Podobnie jak niektóre samochody mogą mieć silniki rakietowe lub spadochron i możesz chcieć ich użyć (wiem, że to brzmi absurdalnie, ale chodzi mi o to, że „mogą istnieć specjalne funkcje w klasach pochodnych, które mogą nie uzasadniać rzeczywistego typu (lub typu podstawowego) tej konkretnej klasy”)? A co z nimi? Czy wolałbyś podnieść kilka bardziej abstrakcyjnych metod w klasie bazowej, czyniąc ją mniej spójną, czy też umieściłbyś kilka bloków if i rzutowania typu (aby uzyskać rzeczywisty obiekt klasy i użyć tej metody), czyniąc ją bardziej sprzężoną?


title: Wyjaśnianie spraw technicznych osobom nietechnicznym

text: Często muszę wyjaśniać techniczne rzeczy i techniczne decyzje mojemu _niezwykle_ nietechnicznemu menedżerowi i jestem w tym okropny. Jakie są dobre sposoby na robienie podstawowych głupich rzeczy dla reszty świata, która nie ma pasji do programowania? Przykładowe pytania, które mi zadano: * Dlaczego używasz Django zamiast Javy (nie zaakceptowałem, że to było tańsze) * Prosząc mnie o przeformułowanie rzeczy w nietechniczne słowa, moje zdanie brzmiało: „Niektóre tagi HTML są niedozwolone” . Jak mogę to ogłupić? * Inne rzeczy, które mają dla mnie sens, ale są po prostu _tak_ podstawowe, nie wiem, jak to wytłumaczyć * Dlaczego to, dlaczego tamto, dlaczego wszystko! Ponadto, jak mam powiedzieć mojemu menedżerowi, aby sprawdził podstawowe informacje w Google, takie jak „Co to są Pylony?” Jestem gotowa wyrwać sobie włosy, te pytania doprowadzają mnie do szaleństwa!!


title: Zasoby do aktualnego programowania Delphi

text: Jestem programistą w małym dziale i używam Delphi od 10 lat. Podczas gdy starałem się być na bieżąco z ruchami, istnieje wiele zmian, które nastąpiły między Delphi 7 a (dla nas obecnym) 2010. Stack Exchange i tutaj były świetne, aby odpowiedzieć na pytania „jak się masz?” , ale chciałbym zasób, który pokazuje świetne przykłady programowania na większą skalę. Na przykład, czy jest gdzieś, gdzie znajdują się przykłady dobrze napisanych, wielopostaciowych aplikacji? Coś, na co można spojrzeć całościowo, aby zilustrować, dlaczego rzeczy powinny być zrobione w określony sposób?


title: Czy można wywoływać funkcje po wystąpieniu zdarzenia, czy po nim?

text: Więc nie byłem pewien, jak ustrukturyzować ten tytuł, możesz go edytować. Moje pytanie brzmi: Kiedy mam pętlę gry, mam 3 główne bloki. Obsługuj wydarzenia, aktualizuj stan gry i losuj. Powiedzmy na przykład, że sprawdzam zdarzenia klawiatury/myszy i chcę przesunąć swoją postać po naciśnięciu przycisków. Czy po wystąpieniu zdarzenia `KEYDOWN` należy natychmiast wywołać `Player.move`? A może powinienem przełączyć `move_left/move_right bools`, a następnie wywołać `Player.move`, gdy jestem w bloku aktualizacji stanu gry. Zastanawiałem się nad tym, ponieważ na przykład funkcja wykonuje długi algorytm i wywołuję ją, gdy wystąpi zdarzenie, wywołanie funkcji zajmie trochę czasu, a tymczasem mogę wcisnąć więcej przycisków/zdarzeń. Myślę, że stracę część z tych zdarzeń, ponieważ w tym czasie działała funkcja algorytmu. Lub mogę przełączyć bool, gdy wystąpi zdarzenie i po sprawdzeniu WSZYSTKICH zdarzeń, wykonuję funkcje oparte na boolach. PS: Zapraszam do edycji tego posta w bardziej konstruktywnym pytaniu.


title: Dlaczego nie ma automatycznych tłumaczy z jednego języka programowania na drugi?

text: Większość języków programowania to język Turinga kompletny, co oznacza, że każde zadanie, które można rozwiązać w jednym języku, można rozwiązać w innym, a nawet na maszynie Turinga. Dlaczego więc nie ma automatycznych tłumaczy, które potrafią konwertować programy z dowolnego języka na dowolny inny? Widziałem kilka prób dla dwóch języków, ale zawsze działają one tylko na ograniczonym podzbiorze języka i prawie nie można ich użyć do konwersji prawdziwych projektów. Czy jest możliwe, przynajmniej teoretycznie, napisanie w 100% poprawnego tłumacza między wszystkimi językami? Jakie są wyzwania w praktyce? Czy są jacyś obecni tłumacze, którzy działają?


title: Czym jest (był) kanał aktualizacji?

text: Sprawdzałem, jakiej wersji Firefoksa używam i powiedział mi, że jestem na „kanale aktualizacji wersji”. Wyszukuję więc w Google „Kanał aktualizacji” i znajduję ten pozornie przestarzały artykuł MSDN, który zawiera mylący fragment ASP.NET wstępnie przetworzony w artykule, aby dać ci poczucie, że oboje nie powinniście używać tej technologii i nigdy nie powinniście jej używać . > Technologia Microsoft Active Channel jest przestarzała w systemie Windows Internet > Explorer 7 i nie należy jej używać. Użytkownicy chcą w łatwy i wygodny sposób > pobierać i instalować nowe wersje oprogramowania. Kanały aktualizacji oprogramowania to > wyspecjalizowane kanały, których można używać do powiadamiania użytkowników o aktualizacjach oprogramowania > oraz dostarczania i instalowania aktualizacji na ich komputerach. Użytkownicy, którzy > pobrali Twoje oprogramowanie i zasubskrybowali Twój kanał aktualizacji oprogramowania, są > powiadamiani o udostępnieniu nowych wersji oprogramowania. Po powiadomieniu > o aktualizacji użytkownicy mogą kliknąć lśniącą ikonę reprezentującą Twój kanał >, która powoduje powrót do witryny pobierania, aby mogli pobrać nową wersję. > Użytkownicy mogą również wybrać opcję automatycznego dostarczania i instalowania aktualizacji oprogramowania na > swoich komputerach. >> Technologia Active Channel jest przestarzała od Internet Explorera 7 i nie powinna być > używana. W tym artykule przedstawiono terminologię, korzyści i > implementację kanałów aktualizacji oprogramowania. Po przeczytaniu tego artykułu > zrozumiesz, jak łatwo użytkownicy mogą odkryć tę > technologię i wchodzić z nią w interakcję, a także będziesz wiedział, jak tworzyć własne > kanały aktualizacji oprogramowania. Linki do odpowiednich przeglądów, odnośników i samouczków znajdują się > na końcu artykułu. Więc proszę cię. Czy to wciąż jakaś metafora łatwego dostarczania oprogramowania klientom? Jeśli przechowuję informacje o aktualizacjach moich programów w bazie danych, czy istnieje nieaktualna technologia firmy Microsofty, która może pobrać wygenerowany plik XML i poinformować osoby korzystające z mojego oprogramowania, że są dostępne aktualizacje i prawdopodobnie należy je pobrać?


title: Czy klucz podstawowy powinien być niezmienny?

text: Ostatnie pytanie dotyczące stackoverflow wywołało dyskusję na temat niezmienności kluczy podstawowych. Myślałem, że to rodzaj zasady, że klucze podstawowe powinny być niezmienne. Jeśli jest szansa, że pewnego dnia zostanie zaktualizowany klucz podstawowy, pomyślałem, że powinieneś użyć klucza zastępczego. Jednak nie jest to standard SQL, a niektóre funkcje „kaskadowej aktualizacji” RDBMS umożliwiają zmianę klucza podstawowego. Więc moje pytanie brzmi: czy nadal jest złą praktyką posiadanie klucza podstawowego, który może się zmienić? Jakie są wady, jeśli w ogóle, posiadania zmiennego klucza podstawowego?


title: Kiedy powinienem skopiować wskaźnik wewnątrz funkcji?

text: Próbuję nauczyć się programowania i naprawdę byłbym wdzięczny za pomoc w tej kwestii. Właśnie przeczytałem tutorial na temat wskaźników, ale mam problem z przykładem. Funkcja kopiuje jeden ciąg do drugiego. W pierwotnej funkcji wykonywana jest kopia z ptr. Co to znaczy? bo o ile widzę to niepotrzebne. Czy coś jest nie tak z moją poprawioną funkcją, czy czegoś mi brakuje? //Przykład samouczka char *my_strcpy(char *destination, const char *source){ char *ptr = destination; while(*źródło != '\0'){ *ptr++ = *źródło++; } *ptr = '\0'; miejsce powrotu; } Moja wersja void my_strcpy2(char *destination, const char *source){ while(*source != '\0'){ *destination++ = *source++; } *cel = '\0'; }      Dziękuję.


title: Czy istnieje lekka umowa NDA „boilerplate”, której mogę użyć, aby pokryć udostępnianie zastrzeżonego kodu osobom trzecim?

text: Chcę zaangażować freelancera do pracy nad oprogramowaniem, które zostało opracowane wewnętrznie. Zgodziliśmy się, że będzie im trudno cytować/oceniać pracę bez dostępu do istniejącego kodu źródłowego i cieszę się, że daję im dostęp do tego kodu, ale zanim to zrobię, chciałbym coś na papierze. W kodzie nie ma niczego, co byłoby niezwykle poufne lub wrażliwe, ale byłoby zaniedbaniem z mojej strony, gdybym udostępnił nasz kod bez potwierdzenia na piśmie warunków, na jakich go udostępniamy. Czy ktoś ma lub wie o jednostronnej, „lekkiej” umowie NDA, z której korzystał wcześniej, aby omówić udostępnianie kodu na etapie prezentacji/szacowania pracy? Jestem w Wielkiej Brytanii, więc najlepiej jest z brytyjskiego prawa, ale jestem szczęśliwy, że coś dostosowuję. Tak, mamy prawników. Nakłonienie ich do napisania czegoś jest bardzo kosztowne. Nakłonienie ich do przeczytania czegoś jest znacznie tańsze.


title: Jak najlepiej zaprojektować model danych i php dla systemu wielokontowego?

text: Robię szkic na wysokim poziomie systemu, który będzie wymagał od użytkowników rejestracji, kiedy już otrzymają konto i będą mogli zapraszać innych do tego konta. Aby było jasne, konto byłoby podobne do prywatnego obszaru roboczego, a użytkownicy będą należeć do tego konta i nie mogą istnieć poza tym kontem. Użytkownicy będą identyfikowani za pomocą unikalnej nazwy użytkownika (prawdopodobnie ich adresu e-mail), co da im dostęp do konta na zasadzie jeden (konto) do wielu (adresy e-mail / użytkownicy). Każdy rekord wygenerowany na tym koncie jest widoczny tylko dla tych użytkowników, którzy należą do tego konta. Czy istnieje dobry wzorzec do modelowania tego typu systemu? Będąc niezwykle nowym w programowaniu, wyobrażam sobie pole w każdej tabeli, które odwołuje się do konta #, ale to sprawia, że praktycznie każda jednostka jest jednym do wielu. Czy jest lepszy sposób?


title: Jak mam poradzić sobie z publikowaniem aplikacji na iPhone'a pod czyimś imieniem i nazwiskiem?

text: Zgodziłem się zbudować aplikację na iPhone'a dla poleconego do mnie klienta. Na co dzień jestem inżynierem oprogramowania na pełen etat, ale to jest tylko moja druga aplikacja na iPhone'a i zgodziłem się zrobić to bez finansowania z góry, ponieważ dałoby mi to projekt do dalszej nauki interfejsu API, a także do powiększenia mojego portfolio aplikacji na iPhone'a . Klient zaproponował jako zapłatę podział zysków 50/50. Normalnie nie uważałbym tego za sprawiedliwe, ale w takiej sytuacji nie przeszkadzało mi to, ponieważ życie mojej rodziny nie zależy od tego. Ponieważ zbliżamy się do końca rozwoju aplikacji, zapytałem klienta, czy wolałby, aby jego imię i nazwisko zostało umieszczone w projekcie, czy też nie ma nic przeciwko, aby było to moje imię (ponieważ mam licencję deweloperską). Oczywiście poprosili o ich nazwisko. Nie powiedziałem im wszystkiego, co się z tym wiąże, ponieważ oddałbym im zarządzanie aplikacją i podziałami zysków. Moje pytanie do tej społeczności i przepraszam, jeśli to nie jest właściwe miejsce, czy **czy robię to we właściwy sposób?** **Czy powinienem poprosić o nawiązanie partnerstwa?** **Czy mam nalegać na moją nazwę programisty idzie dalej? Co byś zrobił?** Poza tym znoszę jego słowo, że jest to produkt niszowy o dużym popycie (w medycynie), więc będziemy mogli za niego zapłacić nieco więcej.


title: Gdzie jest używana biblioteka sympy?

text: Podziwiałbym funkcje biblioteki sympy, to co robi jest naprawdę niesamowite. Funkcje integracyjne to naprawdę nieliczna praca intelektualna facetów. Ale gdzie dokładnie ich używamy praktycznie na komputerach? Jeśli nie sympy, to czy naprawdę potrzebujemy takich bibliotek? Gdybyśmy ich potrzebowali, jakie języki zaspokoiłyby nasze potrzeby?


title: Dlaczego w .net wartości wewnętrznych typów danych (takich jak DateTime) nie mogą mieć wartości NULL?

text: Najpierw historia: dowiedziałem się, że typy danych DateTime nie mogą być null (Tak, mogą być nullable przy użyciu deklaracji nullable ?). Powiedziano mi, że to dlatego, że są to typy wartości i umieszczone na stosie (nie na stercie). Rozumiem, dlaczego stos jest szybszy i dlaczego typy wartości muszą (głównie) być umieszczane na stosie, czego nie wiem. 1. Czy to prawda, że prawdziwym ograniczeniem, dlaczego typ wartości nie może być null, jest to, że stos nie może obsłużyć wartości null? 2. Jeśli tak – dlaczego? Jeśli nie, jakie jest prawdziwe ograniczenie. Rozumiem, że w .net często nie dbamy o dokładną alokację pamięci, ale w aplikacjach wydajnościowych ważne jest, aby wziąć pod uwagę stos i stertę, więc staram się to ogarnąć. Z góry dziękujemy za Twoje doświadczenie w trudnym pytaniu. EDYCJA: Kolejną rzeczą do dodania są typy dopuszczające wartość null, które są umieszczane na stercie lub stosie?


title: Zaimplementuj system plików dla urządzeń ios

text: Czytałem, że aplikacje na iOS mogą komunikować się za pomocą unikalnych adresów URL. Samouczek online na tutsplus mówi > Komunikacja między aplikacjami daje Twojej aplikacji możliwość > skorzystania z funkcji innych aplikacji, wysyłania i odbierania danych > między aplikacjami i zapewnienia bogatego doświadczenia użytkownika, które „po prostu działa”. Muszę przyznać, że skoro nie mam doświadczenia z obiektywnym c i kakao, to tylko zeskanowałem artykuł. Ale o ile zrozumiałem komunikację opartą na adresach URL, Twoja aplikacja może zarejestrować unikalny adres URL, który służy jako gniazdo do komunikacji. Czy nie jest to idealna podstawa dla prymitywnego systemu plików? Wiem, że wszystkie aplikacje na iOS działają w piaskownicy i mają dostęp tylko do własnych danych. Rozpoznaję zalety tej decyzji projektowej, ale nadal wydaje mi się, że jest to jednocześnie lekarstwo i przekleństwo. To nie ma być dyskusja o ekosystemie Apple i koncepcji aplikacji na ios. **Moje pytanie jest proste:** Czy komunikacja url może być wykorzystana do stworzenia magazynu plików, który działa jak proste „biurko”? Chciałbym aplikację, która mogłaby przechowywać i hostować moje pliki, aby umożliwić prostszy przepływ pracy między różnymi aplikacjami. Czy jest to technicznie możliwe, czy też źle zrozumiałem system url? Czy Apple zezwoli na taką aplikację w sklepie z aplikacjami?


title: Nauczanie pojęć związanych z oprogramowaniem: formalna definicja jest złem koniecznym?

text: Ostatnio musiałem nauczać tego, co mój PM określił jako „Kurs najlepszych praktyk” w zakresie programowania. Postanowiłem, że będą czytać co tydzień rozdział książki Wujka Boba „Czysty koder”, podczas gdy w tym tygodniu podążałem za nieco pokrewnym programem nauczania, np. jeśli rozdział książki dotyczy orientacji obiektowej, to uczę S.O.L.I.D. zasady; jeśli rozdział obejmuje testowanie, to uczę BDD. W każdym razie, gdy prosiłem o informację zwrotną, spotkałem się z dużą krytyką, ponieważ zawsze podawałem „formalną” definicję pojęcia, np. > Niech q(x) będzie właściwością możliwą do udowodnienia dla obiektów x typu T. Wtedy q(y) powinno > być dowodliwe dla obiektów y typu S, gdzie S jest podtypem T. Następnie próbowałem wyjaśnić nieco, ale trochę mniej formalnie: > Jeśli mamy typ B będący podtypem A, powinniśmy być w stanie zrobić > z B wszystko, co możemy zrobić z A. W teście uzyskałem kilka odpowiedzi, takich jak: > jeśli podasz mi formalna definicja pojęcia, otrzymujesz 0,7 punktu; > jeśli dasz mi nieformalną definicję pojęcia, możesz otrzymać 0,7 punktu > na podstawie kompletności. Reszta sprawy to podanie przykładu > koncepcji. Tak więc wszyscy uważali, że jest to trochę niesprawiedliwe, ponieważ trochę naciskałem na zapamiętanie definicji. Oczywiście nie było to moim zamiarem, ale uważam, że kompletność była wymagana, ponieważ w poprzednich testach odpowiadali w formie błądzących przykładów, np.: > Posiadanie dużej ilości kodu w funkcji oznacza, że robi ona wiele > rzeczy, a także ma wiele obaw; utrudnienie > zastosowania zmian w kodzie, aby mieć lepszą funkcję, bardzo trudne. I można to nieco lepiej zrozumieć, powołując się na oddzielenie obaw i zasady pojedynczej odpowiedzialności wraz z refaktoryzacją. Dlatego skłaniam się ku przekonaniu, że formalna znajomość pojęć i wyraźny związek między pojęciem a znaczeniem świadczy o dobrych umiejętnościach komunikacyjnych i profesjonalizmie. Co jest poniekąd celem kursu: lepiej komunikują idee przy użyciu ustalonych koncepcji. Czy więc formalne koncepcje są złem koniecznym, czy po prostu spieprzyłem i powinienem był inaczej zarządzać partyturą?


title: Do jakiego etapu rozwoju należą diagramy sieci aktywności?

text: Diagramy sieci aktywności służą do określenia ścieżek do przodu i do tyłu dla projektu, a co za tym idzie do określenia ścieżki krytycznej lub maksymalnego czasu rozwoju. Jestem już zaznajomiony ze stosowaniem struktur podziału pracy, które rozkładają wymagania funkcjonalne na niezbędne i wystarczające rezultaty, ale nie jestem pewien, w który etap planowania działań projektowych pasują diagramy sieci. dla jasności moja interpretacja cyklu planowania.: https://docs.google.com/file/d/0B6m1-u6HxISZeGNCQ2JudXNyZ1U/edit?usp=sharing Czy ktoś mógłby mi pomóc wyjaśnić tę sprawę?


title: W jakim języku powinienem nazwać moje zajęcia biznesowe?

text: Proszę o najlepsze praktyki z tym pytaniem. Jest to problem tylko wtedy, gdy firma klienta jest ściśle narodowa i ma język ojczysty inny niż angielski, jak sądzę. Jeśli klient ma wiele wyrażeń, głównie specyficznych dla domeny (powiedzmy, niemieckich), zmieszanych z kilkoma mniej specyficznymi nazwami domen. Językiem komentarzy do kodu, klas/metod/zmiennych jest język angielski. Czy przetłumaczyłbyś wszystkie nazwy domen?


title: Najlepsze praktyki w zakresie obsługi asynchronicznej komunikacji wewnętrznej?

text: Niedawno zakończył projekt dotyczący obsługi przetwarzania kart kredytowych. Jedną z trudności, z którymi się spotkałem, była obsługa opóźnień / możliwych awarii powiadomień. Najbardziej złożonym przykładem było: * zewnętrzny system wysyłający żądanie zapłaty * mój system przekształcający to żądanie w żądanie do bramki płatności * wysłanie użytkownika do bramki * oczekiwanie na wykonanie płatności przez użytkownika * powrót użytkownika do mojego system, ale utrzymywany do czasu otrzymania przez system powiadomienia o powodzeniu/porażce * Odesłanie użytkownika do systemu zewnętrznego w zależności od awarii Jeszcze trudniejsze było to, że w przypadku niepowodzenia wysłania powiadomienia bramka próbuje wysłać powiadomienie co 15 minut przez Liczba godzin. Rozwiązałem go za pomocą rekordu bazy danych o oczekujących transakcjach, a następnie wykrycia sukcesu i niepowodzenia ze zwrotu oraz odbiornika opóźnień czasowych dla powiadomienia i obsługi transakcji... Racjonalnie trudne! Ale to musiało być wcześniej rozwiązywane miliardy razy, więc jaka jest najlepsza praktyka? Widzę, że moją przyszłością będzie pisanie obsługi między wszystkimi tymi systemami i zarządzanie opóźnieniami czasowymi i możliwymi awariami sieci, więc chcę postępować zgodnie z najlepszymi praktykami. Rekomendacje książek / artykułów byłyby świetne. Z góry dziękuję!


title: Jak najlepiej uniknąć konieczności ponownego odwiedzania zmiany po odprawie?

text: Zwykle dzieje się tak, że pracuję nad czymś przez chwilę, a potem, kiedy skończę, sprawdzam to (oczywiście po procesie testu / recenzji). Czasami muszę wrócić i naprawić coś, co zrobiłem źle za pierwszym razem, ponieważ nie rozumiem problemu wystarczająco, brak testów itp. Jaka jest akceptowalna stawka za to? Idealnie byłoby mieć nadzieję, że nigdy nie będziesz musiał wracać, ale czasami to robisz. Jaką stawkę ma przeciętny programista i jaka jest stawka programistów ekspertów? Czy ludzie to śledzą? Wreszcie, jakie rodzaje kontroli najlepiej temu zapobiegają? PS: Nie liczę przypadków, w których wymagania się zmieniły i trzeba wrócić. Wiem, że nie ma na to realnej odpowiedzi, więc pozwól mi zmienić faktyczne pytanie na: „Jakie ogólne kontrole można wdrożyć przed kodem zostanie wysłany do sprawdzenia lub zaewidencjonowany, co pomogłoby uniknąć konieczności późniejszego ponownego odwiedzania zmiany?”


title: Czy bycie ogólnym programistą w naturalny sposób prowadzi do porażki?

text: W biznesie mówią, że aby odnieść sukces > „Wybierz jedną lub dwie rzeczy i zrób je bardzo dobrze”. To jest antyteza współczesnego programisty. Jesteśmy narażeni na ciągły strumień zmian w biznesie, technologii, narzędziach i wszystkim innym. Jest garstka facetów, którzy mają tyle szczęścia, że mogą skoncentrować się na jednej podstawowej technologii, powiedzmy C#… a potem napisz o tym blog i bądź w tym ekspertem. Ale w sumie dobrze znając C# (ale żadnej innej technologii) + 50 centów kupisz colę. Czy więc wszyscy jesteśmy skazani na nieszczęśliwych klientów i ogólnie nieszczęśliwe kariery? A może jest jakiś sposób na odniesienie sukcesu pomimo „prawa biznesu”?


title: Czy obiekty niejawne sesji są przykładami modeli w MVC?

text: Czytałem, że Model odpowiada za utrzymywanie stanu pomiędzy żądaniami HTTP, na przykład w tym artykule: > Model odpowiada za utrzymywanie stanu pomiędzy żądaniami HTTP. > > Zasadniczo wszelkie dane, czy to w bazie danych, w pliku, przechowywane w sesji lub w pamięci podręcznej wewnątrz APC, muszą być zachowane pomiędzy żądaniami, a zatem stanowią część stanu aplikacji w momencie zakończenia ostatniego żądania. > Dlatego zawsze pamiętaj, że Model to nie tylko baza danych. Nawet dane > które otrzymujesz z serwisów internetowych mogą być wyrażone jako Model! Tak, nawet kanały Atom! > Struktury, które grzechotają wstępy do Modelu, prawie nigdy nie wyjaśniają > tego z góry, co tylko pogłębia nieporozumienia. Kiedy używamy niektórych niejawnych obiektów Session (powiedzmy w PHP, JSP itp.), czy oznacza to, że ta sesja jest obiektem Model?


title: W jaki sposób potwierdzenia i inne kontrole unikania błędów pasują do TDD?

text: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd > Nie możesz pisać żadnego kodu produkcyjnego, chyba że ma to na celu wykonanie > nieudanego testu jednostkowego. Więc gdzie pasują do tego twierdzenia? Jeśli postępowałeś zgodnie z tą zasadą, nigdy nie napisałbyś potwierdzenia bez testu jednostkowego. Ale jak przetestowałbyś istnienie asercji? Sama natura „asert” wydaje się uniemożliwiać ten pomysł, ponieważ test eksplodował. A co z kodem przeznaczonym do radzenia sobie z absurdalnymi warunkami, które są trudne lub niemożliwe do odtworzenia? Na przykład jakiś FUBAR z wywołania systemowego... Musisz obsłużyć błąd, ale stan, który powoduje błąd, jest dość rzadki i pochodzi z systemu operacyjnego. Jak napisać test jednostkowy, aby to się nie powiodło? A może załóżmy, że piszesz bibliotekę szablonów i chcesz sprawdzić kilka koncepcji, zanim zagłębisz się w szablon wymiocin? Nie znam żadnego frameworka, który obsługuje awarię czasu kompilacji jako test PASS. Próbowałem żyć zgodnie z niektórymi z tych edyktów TDD, ale w pewnym momencie zawsze wpadałem na ściany, których nie mogę obejść. Oto niektóre. Myślę, że powinienem powiedzieć, że mówię o asercie w sensie C/C++, w którym program zbudowany bez NDEBUG będzie błędnie, jeśli asercja się nie powiedzie. Nie jakiś mechanizm rzucający wyjątki, który jest _nazywany_ asercją. Nawet nie zdawałem sobie sprawy, że ktoś użyje tej nazwy do zgłaszania wyjątków.


title: Czy sieć neuronowa może wykryć wzorce rng?

text: Czy sieć neuronowa może znaleźć połączenia między liczbami wygenerowanymi przez generator liczb losowych, nie wiedząc o jego zalążku i przewidzieć kolejne liczby tego zestawu z większym powodzeniem niż losowe zgadywanie? Naprawdę nie mogłem znaleźć żadnych danych na ten temat. Dziękuję


title: Czy powinna istnieć formalna rola (wewnętrzna lub zewnętrzna) przypisana do środowisk deweloperskich, aby kontrolować nieekonomiczną złożoność?

text: Kilka lat temu pracowałem dla małej firmy, która posunęła się tak daleko w tworzeniu własnych frameworków, że przeznaczyła swojego starszego programistę i swojego architekta do opracowania od podstaw niestandardowego frameworka MVC i ORM. Te dwie rzeczy były prostopadłe do ich podstawowego produktu. Niestety, wsparcie dla tego podejścia opartego na frameworkach pochodziło z góry i opóźniło dostarczanie oprogramowania generującego przychody – a stworzone frameworki były znacznie gorsze od gotowych alternatyw, co potęgowało opóźnienia. Firma szybko wypaliła gotówkę i ostatecznie wszyscy zostali zwolnieni. Podobny błąd popełnił późniejszy pracodawca – zdobyli wysoko wykwalifikowanego technicznie programistę – perfekcjonistę, mocno zakorzenionego we wzorcach projektowania korporacyjnego, aby rażąco przeprojektować rozwiązanie konsultingowe dla jednego ze swoich klientów, świadomie ponosząc stratę, w nadziei, że rozwiązanie może być dostosowywane i rozszerzane dla innych klientów. Projekt znacznie się przekroczył. Ale nie ma innych potencjalnych klientów. Pozłacany błąd strategiczny, który kosztował małą fortunę. W obu przypadkach wystąpił znaczny stopień przeinżynierii. W obu przypadkach kierownictwo firmy i projektu to ludzie z doświadczeniem w dziedzinie lub analizy, a nie programisty. W obu przypadkach architekci oprogramowania zbudowali nadmiernie złożone rozwiązania, aby drapać ich swędzenie i ulepszać swoje CV, przy pewnym współudziale zarządzania nietechnicznego. W obu przypadkach architekci nie mieli żadnego interesu w utrzymywaniu kosztów na niskim poziomie (poza ryzykiem utraty pracy w przypadku bankructwa firm – co nie stanowiło dużego ryzyka, biorąc pod uwagę ich wysokie szanse na zatrudnienie). Moje doświadczenie sugeruje, że nie jest to rzadka pułapka, w którą wpadają sklepy deweloperskie. Czy w projektach oprogramowania jest miejsce na formalną, wewnętrzną lub zewnętrzną, techniczną rolę przeciwnika - "Geometra ilościowego" - aby użyć analogii z budynkiem - która może wywołać lub zapobiec marnotrawstwu nadmiernej inżynierii? Kto najlepiej nadaje się do pełnienia tej roli?


title: Czy istnieje jakiś konkretny powód, dla którego czcionki dingbat są obsługiwane lub w ogóle tworzone?

text: Wiedziałem o dziwnych czcionkach dingbat, odkąd po raz pierwszy próbowałem zmienić czcionkę na MS Word i natknąłem się na nie. Od tego czasu nigdy ich nie kwestionowałem, po prostu pomyślałem, że fajnie. Teraz mam kilka pytań. Jaki jest cel tworzenia czcionek dingbat? Czy jest ktoś/podmiot, który faktycznie używa/potrzebuje tego typu czcionek?


title: Statyczne czy niestatyczne? (z funkcjami innymi niż OOP)

text: Chociaż to pytanie pojawiło się już wcześniej, moje _jest_ inne, ponieważ nie ma obejmować niczego OOP, a tylko **zwykły (ANSI) C**. Zwłaszcza w oprogramowaniu o otwartym kodzie źródłowym zwykle spotykam się z mnóstwem funkcji (proszę nie nazywać ich metodami, ponieważ _nie_ jesteśmy w OOP) ze słowem kluczowym `static` poprzedzającym typ danych. Ale jaki efekt ma to właściwie ze zwykłym C? W moich własnych projektach nigdy nie miałem okazji, by słowo kluczowe `static` było rzeczywiście potrzebne. (Chociaż tak zwany ekspert programista prawdopodobnie udzieliłby mi rady: „Ta funkcja powinna być zadeklarowana jako statyczna”, a ja prawdopodobnie odpowiedziałbym na swój sarkastyczny sposób: „Aha. No cóż, działa tak, jak jest, po wszystko". :)). Po przeczytaniu kodu OSS założyłem, że może generować mniej narzutu podczas kompilowania projektu. Jednak wydajność procesora wzrosła tak bardzo, że wiele razy zastanawiałem się, dlaczego istnieje tak duże zainteresowanie deklarowaniem funkcji jako statycznych, mimo że może być potrzebne narzędzie porównawcze do pomiaru różnic w szybkości wykonywania.


title: Mapy zagnieżdżone a klawisze łączone

text: w projekcie, nad którym obecnie pracuję, mieliśmy trzy różne rodzaje cen w zależności od wieku użytkownika (dorosły, dziecko itp.). Więc mieliśmy w DB tabelę wyglądającą tak: > > CENY > wpisz Amount > A 20 > B 15 > C .. > D .. > Na początku mieliśmy tylko 4 różne rodzaje cen, więc w kodzie mamy miał coś takiego: Map<String, BigDecimal> price = new HashMap<String, BigDecimal>(); Gdzie klucze były typu ceny. Ostatnio dodali nową regułę biznesową, która dodaje 3 podtypy do każdego typu ceny, więc teraz mamy coś takiego: > > CENY > typ podtyp Kwota > A 1 20 > A 2 15 > A 3 .. > B 1 .. > B 2 .. > ... .. .. > **Która z poniższych opcji jest Twoim zdaniem lepsza i dlaczego?** # Mapy zagnieżdżone Mapa<String, Mapa<String, BigDecimal>> ceny; gdzie klucze to typ i podtyp ceny: price.get(type).get(subtype); # Klucze łączone Ta sama mapa co pierwotnie: Map<String, BigDecimal> price; I połącz klucze, aby zindeksować różne ceny: price.get(type+"_"+subtype);


title: Wzór producent-konsument z ograniczeniami konsumenckimi

text: Mam problem z przetwarzaniem, który myślę, że jest klasycznym problemem producent-konsument z dwoma dodanymi zmarszczkami, które mogą być różne . Generalnie będę miał 50-100 producentów i tylu konsumentów, ile rdzeni procesora na serwerze. Chcę zmaksymalizować przepustowość konsumentów, jednocześnie zapewniając, że nigdy nie jest w toku więcej niż jeden element pracy od jednego producenta. Jest to bardziej skomplikowane niż klasyczny problem producent-konsument, który moim zdaniem zakłada jednego producenta i brak ograniczeń co do tego, które elementy pracy mogą być w toku w dowolnym momencie. Myślę, że problem wielu producentów można stosunkowo łatwo rozwiązać, umieszczając wszystkie elementy pracy w jednej kolejce roboczej chronionej sekcją krytyczną. Myślę, że ograniczenie jednoczesnego przetwarzania elementów pracy od jednego producenta jest trudniejsze, ponieważ nie mogę wymyślić żadnego rozwiązania, które nie wymagałoby od każdego konsumenta powiadomienia jakiegoś dyspozytora pracy, że dany element pracy został ukończony, aby znieść ograniczenie dotyczące elementy pracy od tego producenta. Innymi słowy, jeśli Konsument2 właśnie zakończył WorkItem42 od Producenta53, musi istnieć jakiś rodzaj wywołania zwrotnego lub powiadomienia od Konsumenta2 do dyspozytora pracy, aby umożliwić dyspozytorowi pracy wydanie następnego elementu pracy od Producenta53 do następnego dostępnego konsumenta (czy to Konsument2 lub w przeciwnym wypadku). Czy przeoczam tutaj coś prostego? Czy istnieje znany wzorzec tego problemu? Byłbym wdzięczny za wszelkie wskazówki.


title: Projektowanie interfejsów modułów

text: Studiuję inżynierię oprogramowania i jedną rzeczą, którą naprawdę staram się poprawić, są moje umiejętności w zakresie architektury oprogramowania. Moje pytanie jest dość szerokie, więc postaram się je wyjaśnić na przykładzie. Załóżmy, że masz warstwę modelu i warstwę usług. Model zarządza różnymi podmiotami (takimi jak użytkownicy, produkty, zamówienia, kampanie itp.). Usługi zapewniają funkcje, takie jak _ocena skuteczności kampanii_ i wykorzystują kilka modułów warstwy modelowej w celu uzyskania dostępu do wymaganych danych. _Jak_ i _kiedy_ określasz te zależności? Widzę następujące możliwości: * Zezwól na ogólny dostęp do wszystkich modeli. Jest to podejście stosowane w wielu frameworkach MVC, w których kontrolery mają dostęp do dowolnych klas modeli. **Pro:** Nie musisz określać zależności, programista piszący kontroler jest bardzo elastyczny. **Przeciw:** Jeśli chcesz przetestować usługę, tak naprawdę nie wiesz, z którego modelu musisz zakpić, ponieważ usługa mogłaby wykorzystać wszystko. Te niejawne zależności mogą również sprawić, że utrzymanie będzie uciążliwe. * Usługi wyraźnie określają wymagane modele. Systemy zarządzania zależnościami, takie jak requirejs lub CommonJS, wymagają pracy w ten sposób. **Za:** Brak niejawnych zależności upraszcza konserwację **Przeciw:** Mockowanie jest niemożliwe. Projektując moduł, musisz dokładnie wiedzieć, czego moduł będzie potrzebował. Jeśli później zauważysz, że potrzebujesz innego interfejsu, musisz zmienić architekturę. * Określ jawne interfejsy, które zostaną dostarczone do usługi. Każdy, kto tworzy instancję usługi, będzie musiał dostarczyć implementacje interfejsów. Myślę, że wstrzykiwanie zależności działa w ten sposób, chociaż wstrzykiwanie jest tam zautomatyzowane. **Za:** Brak niejawnych zależności upraszcza utrzymanie, Testowanie jest uproszczone, ponieważ wiesz dokładnie, co kpić. **Przeciw:** Projektując moduł, musisz dokładnie wiedzieć, czego moduł będzie potrzebować. Jeśli później zauważysz, że potrzebujesz innego interfejsu, musisz zmienić architekturę. Teoretycznie wstrzykiwanie zależności wydaje się najlepszym sposobem. Ale czy praktyczne jest określenie każdego wymagania? Jak drobnoziarnisty powinien być? Na podmiot? Pogrupować je? A może jedna zależność na „rzecz, którą możesz zrobić z jednostką”? Możliwości jest po prostu zbyt wiele i chciałbym zasięgnąć porady z prawdziwego świata.


title: Ponowne wykorzystanie Mocków/Stubów jako specyfikacji testu

text: Używamy makiety, aby upewnić się, że test jednostkowy działa tylko w odniesieniu do kodu, który powinien być testowany. Zapobiega to sytuacji, w której błąd w module A powoduje niepowodzenie testów modułu zależnego B. Jednak teraz musimy również wyraźnie przetestować interakcję. Nie wystarczy, że A i B same w sobie są zielone, A musi działać zgodnie z oczekiwaniami B, a B musi mieć odpowiednie oczekiwania. Teraz oczekiwania B są już formalnie zdefiniowane: w próbach i stubach. Jeśli mam skrót, w którym A zwraca określone dane wyjściowe dla pewnych danych wejściowych, oznacza to, że oczekuję, że musi być możliwe posiadanie A w stanie, w którym pokazuje to zachowanie. Więc zamiast pisać długie testy integracyjne, po prostu muszę ustawić A i przetestować je z istniejącymi odcinkami i mockami. Lub, aby to odwrócić, mogę użyć rzeczywistego wystąpienia A, aby przetestować poprawność moich prób. Czy to działa w praktyce? Czy istnieją najlepsze praktyki (np. dokąd należą te testy pseudointegracyjne, czy zestaw testów A powinien już zawierać kilka prób, które prawdopodobnie zostaną użyte)? Czy jest to w ogóle możliwe dzięki popularnym frameworkom do mockingu?


title: Kiedy należy korzystać z zajęć prywatnych/wewnętrznych?

text: Aby wyjaśnić, pytam o public class A{ private/*lub public*/B b; } vs. public class A{ private/*lub public*/ class B{ .... } } Zdecydowanie mogę wymyślić kilka powodów, aby użyć jednego lub drugiego, ale to, co naprawdę chciałbym zobaczyć, to przekonujące przykłady, które pokazują że plusy i minusy nie są tylko akademickie.


title: Dlaczego Internet Explorer jest jedyną przeglądarką, do której należy odnosić się do wersji, gdy mówimy o zgodności?

text: Ilekroć coś czytam lub słyszę, jak ktoś mówi o obsłudze HTML5, CSS i JavaScript, zawsze odnosi się do Internet Explorera z numerem wersji, takim jak Internet Explorer 6 i Internet Explorer 9. Ale odnoszą się tylko do Google Chrome, Firefox, Safari i innych bez numerów wersji. Czy nie powinny również określać numeru wersji, w którym niektóre technologie internetowe są niezgodne z innymi przeglądarkami, a nie tylko z Internet Explorerem?


title: Jaka jest różnica między „Zatrudnij” a szczerym „prawie” w przypadku końcowych rozmów kwalifikacyjnych na miejscu?

text: Tak więc niedawno odbyłem wywiady na miejscu z Google i Amazonem i otrzymałem uprzejme listy z odrzuceniem, informujące mnie, że jestem blisko, ale niezupełnie odpowiedni dla umiejętności, których szukali. Doszedłem do rundy finałowej dla wszystkich wywiadów, które przeprowadziłem (z wyjątkiem niektórych ofert z małych, nieciekawych stanowisk, z którymi przeprowadzałem wywiady w celach treningowych), ale jak dotąd posiadanie 5-8 wywiadów dziennie daje mi wystarczająco dużo czasu na moje błędy sumują się na tyle, aby wykluczyć mnie z gry. Wiem, że dobrze sobie tam poradziłem przynajmniej z pytaniami o kodowanie i innymi ogólnymi pytaniami technicznymi, najwyraźniej jestem kiepski w projektowaniu rzeczy OOP, takich jak gry karciane lub garaże (zamiast tego zagłębiłem się w jeden obiekt i zużyłem cały swój czas bycia szerszym) i moje odpowiedzi dotyczące kodowania, chociaż działają ogólnie, nie miały kilku błędów/przypadków krawędzi, które przegapiłem (jak przypadek, w którym węzeł wejściowy może faktycznie być odpowiedzią, a nie musi być odrębny). I nie mam problemu z powiedzeniem "nie wiem", ale może trochę gadam i muszę to powiedzieć na pytania, na które myślę, że mogę odpowiedzieć, ale nie mogę dać ostrej odpowiedzi na ... Więc co są rzeczy, które popychają cię do góry, od bycia dobrym, ale nie całkiem do „zatrudnienia”? Jakieś porady dotyczące tego, czego szukasz lub coś, co wiesz, co dało ci dodatkowy impuls?


title: Jak zaimplementować funkcję „zaproszenia e-mail” przy użyciu Asp.Net Identity Framework 2.0 i OAuth?

text: Moi inżynierowie wdrażają uwierzytelnianie i autoryzację przy użyciu Asp.Net Identity Framework 2.0. Wymagania określają, że musimy obsługiwać następujący scenariusz: 1. Logowanie użytkownika z uprawnieniami administratora globalnego. 2. Użytkownik z uprawnieniami administratora globalnego wyświetla organizację. 3. Administrator globalny zaprasza użytkownika organizacji lub administratora do systemu. 4. Do zaproszonego użytkownika wysyłany jest e-mail zawierający specjalny link. 5. Zaproszony użytkownik klika łącze, loguje się na swoje „Konto Microsoft” (@hotmail.com), a następnie jest logowany w naszej witrynie internetowej i powiązany z organizacją oraz z prawidłowym przypisaniem roli. Moim zdaniem powinniśmy być w stanie to wszystko zrobić, korzystając z gotowych funkcji Asp.Net Identity Framework. Na przykład: W kroku 3 możemy wywołać metodę CreateUser() i powinna ona udostępnić konto użytkownika, które nie zostało jeszcze potwierdzone. Możemy użyć generowanego przez niego ConfirmationToken, aby wysłać wiadomość e-mail do użytkownika. Czy to nie jest właściwy sposób postępowania? Moi inżynierowie uważają, że muszą zaimplementować niestandardowe tabele użytkowników, ról i organizacji oraz zaimplementować w tym celu wszystkie niestandardowe autoryzacje i role, ponieważ uważają, że konto użytkownika w ramach tożsamości można utworzyć tylko wtedy, gdy użytkownik wróci z zalogowania (za pośrednictwem OAuth ) pierwszy raz.


title: Dlaczego klasa String w Javie nie implementuje wydajniejszej metody indexOf()?

text: Po poniższym pytaniu na Stack Overflow http://stackoverflow.com/questions/5564610/fast-alernative-for-stringindexofstring-str zacząłem się zastanawiać, dlaczego java (przynajmniej 6) nie używa wydajniejszej implementacji? Oto kod: java.lang.String#indexOf(String str) 1762 static int indexOf(char[] source, int sourceOffset, int sourceCount, 1763 char[] target, int targetOffset, int targetCount, 1764 int fromIndex) { 1765 if (fromIndex >= sourceCount) { 1766 return (targetCount == 0 ? sourceCount : -1); 1767 } 1768 if (fromIndex < 0) { 1769 fromIndex = 0; 1770 } 1771 if (targetCount == 0) { 1772 return fromIndex; 1773 } 1774 1775 char first = target[targetOffset]; 1776 int max = sourceOffset + (sourceCount - targetCount); 1777 1778 for (int i = sourceOffset + fromIndex; i <= max; i++) { 1779 /* Poszukaj pierwszego znaku. */ 1780 if (źródło[i] != pierwszy) { 1781 while (++i <= max && źródło[i] != pierwszy); 1782 } 1783 1784 /* Znaleziono pierwszy znak, teraz spójrz na resztę v2 */ 1785 if (i <= max) { 1786 int j = i + 1; 1787 int koniec = j + targetCount - 1; 1788 for (int k = targetOffset + 1; j < end && source[j] == 1789 target[k]; j++, k++); 1790 1791 if (j == end) { 1792 /* Znaleziono cały ciąg. */ 1793 return i - sourceOffset; 1794 1795 1796 1797 powrót -1; 1798 }


title: Niektórzy członkowie zespołu nie uczestniczą aktywnie w planowaniu Sprintu

text: Niektórzy członkowie zespołu po prostu czekają, aż historie, nad którymi najprawdopodobniej będą pracować, zostaną omówione i dopiero wtedy biorą udział. W przeciwnym razie po prostu bawią się telefonem i nie słuchają. W pewien sposób rozumiem to stanowisko. Po co słuchać dyskusji na temat funkcji, której prawdopodobnie nie pomożesz w rozwijaniu w Sprincie lub kiedykolwiek? Jak myślisz, co powinniśmy zrobić?


title: Projektowanie i programowanie asynchroniczne

text: Ja i znajomy szukamy współpracy przy niezależnym projektowaniu stron internetowych. Oboje jesteśmy bardzo silnymi programistami PHP i projektantami stron internetowych, ale ja jestem lepszy w projektowaniu, a on jest lepszy w PHP. Więc ja będę kontrolował to, co widzi użytkownik, on będzie kontrolował to, co robi użytkownik. Aby przyspieszyć rozwój, zastanawiam się, czy ktoś ma doświadczenie lub rekomendacje dotyczące asynchronicznego projektowania i kodowania stron internetowych. Jak dotąd moim najlepszym pomysłem jest stworzenie doktryny określającej, w jakich tagach i klasach każdy element powinien być opakowany (jeśli w ogóle), a następnie zlecić nam programowanie przez FTP. Stworzył kod, który wypluwa fragmenty kodu HTML, a ja po prostu nadałbym im styl i zawinął go na stronie. Czy ktoś zna lepszy sposób? Jakieś pomysły?


title: svndumpfilter Wiele wersji

text: Mam kilka pytań dotyczących projektu open source Subversion. Wiem, że istnieje wiele wersji svndumpfilter (2,3). Jakie są kompromisy i zalety każdej wersji? Innymi słowy, jakie problemy ma rozwiązać każda wersja? Istnieją znane błędy w oryginalnym svndumpfilter, które nie zostały naprawione od lat. Z ciekawości, dlaczego tak się dzieje? Czy to dlatego, że svndumpfilter ma niższy priorytet niż inne działające komponenty svn?


title: Czy jest coś, co może napisać dla mnie funkcję na podstawie wzorca?

text: Na przykład mam następujące. Wejścia znajdują się po lewej stronie. Wyjścia są po prawej stronie. Drugi wyraz na wejściu, który jest liczbą 3, to liczba liczb wyjściowych, które chcę. Byłoby naprawdę przydatne, gdyby istniał program, który podałby ten wzorzec, mógłby po prostu dać mi kod napisany do jego produkcji. Czy istnieje coś takiego? 0 3 -> 0 1 2 1 3 -> 3 1 2 2 3 -> 3 4 2 3 3 -> 3 4 5 4 3 -> 6 4 5 5 3 -> 6 7 5 ...


title: Biblioteki innych firm w projekcie C# typu open source

text: Zamierzam rozpocząć projekt open source od podstaw, używając git (poprzez github) do zarządzania źródłem. Projekt zostanie napisany w C# i będzie zależał od co najmniej dwóch zewnętrznych bibliotek (prawdopodobnie będzie ich więcej). Zastanawiam się, jak powinienem odwoływać się do bibliotek i przyszły mi do głowy następujące pomysły: * Folder w projekcie, który zawiera wszystkie zewnętrzne biblioteki jako dll Oznaczałoby to, że mam pliki dll w moim repozytorium, co moim zdaniem jest złe, ponieważ to nie jest źródło. Ponadto nie wiem, jak Visual Studio (lub inne IDE) przechowują ścieżkę do bibliotek, jeśli używają ścieżek bezwzględnych, byłoby to niemożliwe. * Pobierz biblioteki zewnętrzne za pośrednictwem nuget Jest to czysty i przyjemny sposób na uporządkowanie bibliotek, ale co, jeśli potrzebna biblioteka nie ma pakietu nuget? Nie mogę tak po prostu stworzyć, prawda? * Przechowywanie źródła zewnętrznej biblioteki w ramach mojego repozytorium Brzmi jak głupi pomysł, aktualizacja bibliotek byłaby uciążliwa. * Odwołaj się w jakiś sposób do repozytoriów innych projektów za pomocą git. Brzmi nieźle, mógłbym zrobić własny widelec, aby zachować stan lub po prostu wskazać zatwierdzenie. Ale czy to w ogóle możliwe? Czy to dobry sposób? **tl;dr:** Jak mam obsługiwać zewnętrzne biblioteki w projekcie C# o otwartym kodzie źródłowym?


title: Czy nie mam racji sądząc, że potrzeba czegoś takiego jak AutoMapper jest oznaką złego projektu?

text: Automapper jest „maperem obiekt-obiekt” dla .Net, co oznacza kopiowanie obiektów z klasy do innej klasy, która reprezentuje to samo. Dlaczego to jest zawsze przydatne? Czy powielanie klas jest kiedykolwiek przydatne/dobry design?


title: Jaki jest/czy istnieje właściwy sposób na poinformowanie kierownictwa, że nasz kod jest do niczego?

text: Nasz kod jest zły. Może nie zawsze był uważany za zły, ale jest zły i tylko schodzi w dół. Zacząłem świeżo po studiach niecały rok temu, a wiele rzeczy w naszym kodzie jest dla mnie nie do uwierzenia. Na początku pomyślałem, że jako nowy powinienem trzymać gębę na kłódkę, dopóki nie dowiem się trochę więcej o naszym kodzie, ale widziałem wiele, by wiedzieć, że jest źle. Niektóre z najważniejszych cech: * Nadal używamy ramek (spróbuj uzyskać coś z ciągu kwerendy, prawie niemożliwe) * VBScript * Bezpieczne dla źródeł * Używamy .NET - mam na myśli to, że mamy wrappery .net, które wywołują biblioteki COM DLL, dzięki czemu jest to możliwe prawie niemożliwe do łatwego debugowania * Wszystko jest w zasadzie jedną wielką funkcją * Kod nie jest utrzymywany. Każda strona zawiera wiele plików, które są tworzone za każdym razem, gdy tworzona jest nowa strona. Strona główna w zasadzie wykonuje Response.Write() kilka razy, aby wyrenderować HTML (runat="server"? nie ma mowy). Potem może być dużo logiki po stronie klienta (VBScript), a na końcu strona zgłasza się do siebie (często przechowując wiele rzeczy w ukrytych polach), gdzie następnie wysyła posty do strony przetwarzania, która może robić takie rzeczy, jak zapisywanie dane do bazy danych. * Specyfikacje, które otrzymujemy, są śmieszne. Często wzywają do takich rzeczy jak „automatyczne wypełnienie pola X polem Y lub polem Z” bez wskazania, kiedy wybrać pole Y lub pole Z. Jestem pewien, że niektóre z nich wynikają z tego, że nie jesteś zatrudniony w firma programistyczna, ale czuję, że ludzie piszący oprogramowanie powinni przynajmniej dbać o jakość swojego kodu. Nie wyobrażam sobie nawet, że gdybym miał coś poruszyć, to wszystko byłoby szybko zrobione, ponieważ zbliża się duży termin, ale nadal piszemy zły kod i stosujemy złe praktyki. Co mogę zrobić? Jak w ogóle mam poruszyć te kwestie? 75% mojego zespołu zgadza się ze mną i poruszało te kwestie w przeszłości, ale nic się nie zmienia.


title: Jakie są przydatne zasoby do nauki rachunku krotek?

text: Próbowałem raz po raz przejrzeć mój rachunek krotek. Co gorsza, mój profesor i korepetytorzy nie są zbyt pomocni w swoich godzinach. Czy ktoś zna dobre miejsce do nauki o rachunku krotek? Trudno mi zrozumieć, jak „mówić” językiem w kategoriach tego, co chcę uzyskać z bazy danych.


title: Algorytm do wykorzystania przy aranżacji hali produkcyjnej?

text: Wczoraj natknąłem się na problem w klasie (zajęcia biznesowe, a nie informatyki) i uznałem to za interesujące z perspektywy algorytmicznej. Problem wygląda mniej więcej tak: _Załóżmy, że istnieje hala produkcyjna z N różnymi pokojami i masz N różnych działów, które muszą się do nich dostać. Działy i pokoje są tej samej wielkości, więc każdy dział może znaleźć się w dowolnym pomieszczeniu. Istnieje znana odległość dojazdu z każdego pokoju do drugiego pokoju. Istnieje również znana ilość koniecznych podróży z jednego działu do drugiego (podróże są liczone tak samo niezależnie od pokoju, z którego pochodzą, więc podróż z A do B jest równoznaczna z podróżą z B do A). Biorąc pod uwagę te dane, określ rozmieszczenie działów w pomieszczeniach, które minimalizują czas podróży._ Jaki jest najlepszy sposób algorytmicznego podejścia do tego problemu? Czy istnieje już jakiś konkretny algorytm lub klasa algorytmów zaprojektowanych do rozwiązania tego typu problemu? Czy ten rodzaj problemu ma swoją nazwę w informatyce? Nie szukam, abyś _zaprojektował_ algorytm, aby rozwiązać ten problem, chociaż możesz to zrobić, jeśli chcesz. Zastanawiam się, czy jest to przestrzeń problemowa, która została już dobrze zdefiniowana i przestudiowana algorytmicznie, a jeśli tak, poszukaj linków do dalszych badań. Widzę wiele różnych struktur danych i algorytmów, które mogą mieć do tego zastosowanie i jestem ciekaw, które podejście byłoby „najlepsze”. I nie martw się, nie odrabiasz za mnie pracy domowej. Nie jest to samo w sobie problem z pracą domową, ponieważ jest to kurs biznesowy i po prostu omawialiśmy koncepcje, a nie staraliśmy się rozwiązać problem algorytmicznie.


title: Płynna implementacja interfejsu i refleksja. Studium przypadku

text: Mam nadzieję, że wybrałem odpowiednią grupę na to pytanie... Mam ten mały framework, który chcę zaimplementować i chciałbym mieć na jego temat opinię. W szczególności bardziej interesuje mnie zwięzłość i styl rozwiązania. Mój szkic klasy wygląda tak: public interface Builder<T> { T build(); } publiczny interfejs RootObject { public static abstrakcyjna klasa MutableBuilder<T> implementuje Builder<T> { protected MutableBuilder() { } protected abstract void setA(A a); chroniony abstrakcyjny zbiór pusty B(B b); chroniony abstrakcyjny zbiór pusty C(C c); chroniony abstrakcyjny zestaw pustych przestrzeni D (D d); } } Celem jest posiadanie Konstruktora, który zwraca instancję (miejmy nadzieję) niezmiennych obiektów. Cała implementacja jest pozostawiona kodowi klienta, ale nadal chcę dać odcisk płynnego interfejsu Efektywnej Javy. Gdyby to było tylko po to, nie byłbym tak zaskoczony. Problem pojawia się, gdy dodam wymagania: * framework musi przeszukać ogólną implementację `RootObject` w celu sprawdzenia, czy została zaimplementowana statyczna klasa wewnętrzna `MutableBuilder`. * jeśli zostanie znaleziony, framework tworzy jedno lub więcej `MutableBuilder` dynamicznie (to jest powód, dla którego mam abstrakcyjną klasę z konstruktorem i zwracam ją lub je do kodu klienta. Samo mówienie o odbiciu sprawia, że zastanawiam się, czy robię właściwa rzecz. Wygląda na rozsądne rozwiązanie (oczywiście).


title: Czy mogę dalej sprzedawać narzędzie/bibliotekę, które napisałem w przeszłości, teraz, gdy mam pracę na pełen etat lub firma nie będzie to lubiła?

text: Sprzedawałem bibliotekę/framework/narzędzie firmom. Licencjonowanie plików binarnych. Teraz mam pracę na pełen etat. Jeszcze się nie zacząłem, ale wkrótce się rozpocznie. I właśnie dostałem prośbę o wycenę od firmy z tej samej branży, co mój nowy pracodawca. Nie bezpośredni konkurenci, ale ta sama branża. Czy mogę udzielić im licencji na swoje oprogramowanie? A może to sprawi, że będę miał kłopoty z moim przyszłym pracodawcą? Nie sądzę, żeby w tej chwili zwracanie się do firmy było nawet właściwe. Dają mi pracę, żebym dla nich pracował, a nie pytał, czy mogę sprzedawać moje oprogramowanie na boku. Nie mam pojęcia, co robić. Jakieś zalecenia?


title: Problemy z hierarchią DLL

text: Chcę to poprzedzić, mówiąc „Kocham moją pracę i chcę tu zostać”, ale mam poważny problem, 1. Cyrkularne biblioteki DLL (DLL połączone z powrotem do EXE) 2. Specjalne kompilacje z definicjami warunkowymi, aby uzyskać pozbądź się łączy, gdy plik EXE nie istnieje, aby używać bibliotek DLL w specjalnych narzędziach. 3. Niemożność odwoływania się do naszych własnych bibliotek DLL jako funkcji zewnętrznych, ponieważ generują one błędy podczas łączenia (musisz zamiast tego użyć funkcji LoadLibrary systemu Windows) Więc... Moje pytanie brzmi, odwoływanie się do pliku wykonywalnego wydaje się złym pomysłem, ale koniecznym złem, aby uzyskać sesję informacje (jest to aplikacja klient/serwer z wieloma użytkownikami). Czy najlepszym sposobem na obejście odwoływania się do pliku wykonywalnego w nazwie DLL jest zainicjowanie bibliotek DLL wywoływanych przez plik wykonywalny ze wszystkimi informacjami, które mogą być potrzebne do wykonania swojej pracy?


title: Jak znaleźć pierwszy wspólny element w dwóch tablicach?

text: Sposób, w jaki to zrobiłem, polegał na przejściu każdej pętli w tym samym czasie i dodaniu bieżącej wartości do osobnego zestawu dla każdej z list. Sprawdź również, czy bieżący element znajduje się już w zestawie drugiej listy. Nie mam pojęcia, czy to działa, a jeśli tak, to dlaczego? Wiem, że znajduje wspólny element, ale czy znajduje pierwszy wspólny element? Nie potrafię wymyślić kontrprzykładów, ale mam problem z przekonaniem samego siebie, że to zdecydowanie prawda. Ponadto, nawet jeśli jest poprawny, czy istnieje lepszy sposób na znalezienie pierwszego wspólnego elementu?


title: Jest Entity Framework tylko dla Asp .NET/Asp. NET MVC?

text: Nigdy nie kodowałem na VS i jestem młodszym programistą w C# i chciałbym wiedzieć, czy framework encji jest dostępny tylko dla aplikacji ASP .NET?


title: serwowanie przyszłościowych krewnych - rozszerzalne interfejsy kontraktowe

text: Ok, **mam tu tego człowieka, ale co on może zrobić**, jak odkryłbyś jego specjalne zdolności? A kiedy dowiesz się, jakiego masz eksperta, to w jaki sposób wykorzystasz jego wyjątkowe obowiązki? Przykład dla tego pytania o wzorzec architektoniczny: ### Podstawowy interfejs z cechami wspólnymi dla wszystkich interfejsów IHuman { DateTime GetDoB(); } ### Interfejs rozszerzony 1 interfejs ICivilian : IHuman { string GetEmail(); nieważne Wyślij e-mail(); } ### Interfejs Extended Interface 2 IAccountant : IHuman { double CalculateProfits(); } ### Interfejs rozszerzony n+ interface IAnotherSpecializedHuman : IHuman { void DoSomethingExpert(); } ### Wyspecjalizowane wykrywanie i użycie API Jak zaprojektowałbyś * wysoce podłączany i luźno powiązany system * za pomocą którego możesz wykonywać wszystkie typowe ludzkie operacje (np. uzyskać wiek), * ale także wykonywać wszelkie wyspecjalizowane operacje, które są dostępne, * w zależności od wbudowanych modułów * np. możesz wysłać e-mail, ponieważ moduł ICivilian jest dostarczany * ale nie możesz obliczyć zysków, ponieważ wtyczka IAccountant nie jest dostarczona * a pytanie brzmi **nie tyle o dostarczanie różnych implementacji, co o dostarczanie różnych wyspecjalizowanych API** (i API, które mieć wspólnego rodzica ze wspólną funkcjonalnością)


title: Dla aplikacji opartej na gnieździe: jak mam obsługiwać dynamiczny adres IP?

text: Planuję napisać aplikację sieciową, której kroki użytkowania są następujące: 1. Połącz się z serwerem i wybierz nazwę (i wpisz swój adres e-mail „id”) 2. Lista innych „wolnych” (nie grających w grę) graczy jest pokazano tobie : więc musisz wybrać jeden. 3. Serwer używa adresów ip dwóch graczy, aby się z nimi połączyć. Myślę jednak, że będę miał poważny problem: * jak ostrożnie obchodzić się z dynamicznym adresem ip: czy dynamiczny adres ip może się zmienić, gdy nawiązane połączenie nie jest jeszcze zakończone? * jeśli tak, jak mam sobie z tym poradzić, na przykład z Javą 7? Pozdrowienia


title: Ukrywanie ciągów zapytań logicznie?

text: Czuję się niekomfortowo, gdy używam parametrów ciągu zapytania, takich jak: `http://xyz.com/default.aspx?carId=1129&country=uk&uniqueId=98745DVF4563VVf1259` Wolałbym użyć czegoś, co nie powinno mieć sensu dla każdego, kto próbuje mieć jakiś sens z adresu URL: `?a=1129&b=uk&c=98745DVF4563VVf1259` (po tym wszystkim informacje o żądach zapytania są tylko do mojego użytku) Po pierwsze, czy jest to dobra rzecz? (Chcę ukryć logikę ciągu zapytania) Jeśli tak, to jest sposób, aby wewnętrznie programiści mogli używać `carId`, `country` i `uniqueId` w kodzie, ale zewnętrznie adres URL używa `a`, ` b` i `c` odpowiednio? Więc jeśli ktoś idzie do `?a=1129&b=uk&c=98745DVF4563VVf1259` kiedy robię `Request.QueryString["carId"]` powinienem dostać 1129. Czy można to zrobić?


title: „Kill switch” w środowiskach hostowanych przez klientów, aby chronić płatności?

text: Mam trudnego klienta. Każdy rachunek jest kwestionowany i omawiany, a każdy e-mail jest analizowany okiem prawnika (ponieważ jest prawnikiem), szukając sposobu na uniknięcie płacenia za coś. Żadna hojność z mojej strony nie jest nigdy odwzajemniona. Klient ma obecnie 60% niezapłaconych rachunków (są to faktury, na których się podpisał), a jest to pokaźna kwota. To, jak doszło do tego etapu, jest co prawda produktem mojej własnej naiwności. Ponieważ klient hostuje swój własny kod, nie mogę wyłączyć hostingu i żądać zapłaty. **Czy jest legalne instalowanie zdalnego „Kill Switch” w celu wyłączenia kodu klienta, dopóki nie zostaną opłacone rachunki?**


title: Jaki jest najlepszy obiektywny sposób mierzenia trendów popularności języków? (Co jest lepsze niż TIOBE?)

text: Najlepszym sposobem uzyskania danych o popularności języka komputerowego, jaki znam, jest indeks TIOBE. Ale wszyscy wiedzą, że TIOBE jest beznadziejnie wadliwy. (Jeśli ktoś poda link do wsparcia, dodam go tutaj.) Czy są więc jakieś dane dotyczące popularności języka programowania, które ogólnie uważa się za znaczące? Jedyną inną opcją, jaką znam, jest przyjrzenie się trendom na witrynie Indeed.com, która jest z natury wadliwa, ponieważ opiera się na ofertach pracy. To nie jest tak, że podejmowałbym w przyszłości decyzję językową wyłącznie na podstawie indeksu, ale może to zapewnić użyteczną równowagę dla wypaczonej perspektywy, którą uzyskuje się rozmawiając z przyjaciółmi i kolegami. Aby zilustrować tę stronniczość, wskażę, że bazując na doświadczeniach tych, których osobiście znam, jedynymi językami używanymi dzisiaj zawodowo (w kolejności popularności) są Java, C#, Groovy, JavaScript, Ruby, Objective C i Perl. (Chociaż jest oczywiste, że C, C++ i PHP były używane w przeszłości.) Więc moje pytanie brzmi: wszyscy walą w TIOBE, ale czy jest coś jeszcze? Jeśli tak, czy ktoś może wyjaśnić, skąd wiemy, że alternatywa ma lepszą metodologię? Dziękuję.


title: Zawijanie prostej instrukcji w funkcję w javie?

text: Pracowałem nad bazą grafów neo4j w javie. Aby uzyskać węzeł referencyjny tej bazy danych: GraphDatabaseService graphDb=new EmbeddedGraphDatabase(DB_PATH); Node Root=graphDb.getReferenceNode() Zawsze zapominam przedrostek graphDb podczas wywoływania getReferenceNode(). Więc co zrobiłem: public Node getRootNode(){ return graphDb.getReferenceNode(); } Teraz po wykonaniu tej czynności pomyślałem, że to przesada, ponieważ zastępuję prostą instrukcję wywołaniem funkcji, która z pewnością ma narzut, ale użycie getRootNode wydaje mi się bardziej intuicyjne. Więc moje pytanie brzmi, czy mam rację sądząc, że robienie powyższej rzeczy jest nieefektywne? A może nie wpływa to tak bardzo na wydajność?


title: Czy interfejs API HTTP powinien zawsze zwracać treść?

text: Czy istnieje jakiś standard dotyczący odpowiedzi http api? Po przeczytaniu tego wątku dyskursu zacząłem się zastanawiać. Rozwijamy nasze publiczne http json api w mojej pracy i nie zwracamy niczego, gdy nie jest to ściśle potrzebne (na przykład PUT do /resource/{id} zwraca tylko 200, gdy jest OK lub odpowiedni kod 4XX lub 5XX, ale nie json body) Czy powinniśmy zwrócić ogólne `{"success":true}` jak omawiają w powyższym linku, czy też można zwrócić "unieważnione" ciało i obsłużyć wszystko za pomocą kodów odpowiedzi http?


title: W jakim języku należy uczyć projektowania obiektowego i rozwoju na uniwersytecie?

text: Rozumiem, że C++ jest zwykle oferowany jako pierwszy język OOP i jako drugi język programowania (po C) w moim kraju (Bangladesz). Uczyłem tego kilka razy, a problem, z którym się spotkałem, polega na tym, że studenci często myślą o C++ jako o rozszerzeniu C, tj. C z `cin` i `cout`! To skłoniło mnie do myślenia o nauczaniu Javy jako pierwszego języka OOP w nadchodzącym semestrze. Jaka jest Twoja opinia? Chciałbym kilka sugestii od profesjonalnych programistów i naukowców.


title: Wykorzystanie delegatów C# w świecie rzeczywistym

text: Myślę, że koncepcyjnie rozumiem delegatów C#, jednak staram się znaleźć przykład ze świata rzeczywistego, w którym byłyby przydatne. Czy możesz podać kilka odpowiedzi, szczegółowo opisujących, w jaki sposób delegaci C# byli używani w rzeczywistych aplikacjach i jakie problemy umożliwiły obejście?


title: Podchwytliwe łamigłówki logiczne – czy naprawdę są przydatne w ocenie umiejętności programowania?

text: W ostatnim wywiadzie, w którym brałem udział, zostałem poproszony o rozwiązanie zagadki, w której oczekiwano ode mnie dokładnego odmierzenia bla bla litry wody, biorąc pod uwagę dwa wiadra o pojemnościach - odpowiednio bla i bla litry. Nie udało mi się rozwiązać zagadki w określonym czasie (~5 minut). Prowadzący wywiad był nieco rozczarowany i powiedział, że programista musi mieć „te” umiejętności. Nie zrozumiałem, o jakich umiejętnościach mówił. Zawsze czułem się dziwnie w związku z tego rodzaju zagadkami, które zwykle zadaje się podczas programowania rozmów kwalifikacyjnych. Nie rozumiem, jaki, jeśli w ogóle, jest związek między takimi zagadkami a programowaniem. Jakie dokładnie umiejętności ankieterzy zamierzają ocenić za pomocą takich łamigłówek?


title: Kodowanie na dobre lub charytatywne

text: Poszukuję projektów open source, code-a-thons lub organizacji, które tworzą oprogramowanie wykorzystywane do celów charytatywnych lub do pomocy organizacjom charytatywnym. Musi być zapotrzebowanie, ale trudno je zlokalizować ze względu na dużą różnorodność terminów używanych do opisu tego, co robią. Preferuję witryny z pewnym stopniem pozytywnej reputacji lub pewnymi dowodami skuteczności, takimi jak liczba organizacji charytatywnych, którym udzielono pomocy. Rozumiem, że wiele z nich może być zlokalizowanych, ale mam nadzieję, że zbuduję listę możliwych organizacji, na które warto poświęcić trochę czasu. Myślę, że jest to aktualne z powodu „obaw związanych z freelancerami lub biznesem” i jest to tylko umiarkowanie subiektywne pytanie. GiveCamp jest dobrym przykładem (dzięki, ElJusubow!), ale We Are Microsoft nie jest tak dobry, ponieważ jest przestarzały od 2010 roku.


title: Jaka jest najmniej inwazyjna metoda tworzenia kopii zapasowej bazy danych couchdb?

text: Zamierzamy tworzyć regularne kopie zapasowe bazy danych couchdb, aby wysyłać je poza siedzibą firmy. Jaki jest najmniej inwazyjny sposób ich uzyskania — najlepiej bez przerywania lub znacznego zmniejszania wydajności istniejącego serwera bazy danych?


title: Jaka jest różnica między licencjami BSD i BCL?

text: Jakie są różnice, jeśli w ogóle, między licencjami BSD i BCL?


title: jaki język jest najlepszy do kojarzenia z graficznym interfejsem użytkownika opartym na Adobe Flex do chrupania matematyki?

text: Nie jestem ekspertem od oprogramowania, ale muszę zlecić na zewnątrz internetową aplikację naukową z graficznym interfejsem użytkownika i rozważam Adobe Flex. Moje procedury matematyczne są obecnie w JavaScript i C/C+. Nie mając doświadczenia z Flexem, miałem nadzieję, że ktoś pomoże mi zrozumieć, jakie opcje są dostępne do wykonywania (najlepiej szybkich i wydajnych) obliczeń po stronie KLIENTA. To znaczy, czy Flex może łatwo współdziałać z JavaScript i/lub C? Jeśli nie, czy preferowany jest ActionScript lub inny język? Wady/kompromisy? Potrzebujesz funkcji takich jak LOG10, LN, SQRT i byłoby miło mieć również funkcję błędu (ERF) i funkcję błędu uzupełniającego (ERFC), chociaż w razie potrzeby mogę być w stanie wyprowadzić te dwie ostatnie z bardziej podstawowych funkcji. Dziękuję!


title: Akta Boga kontra Kodeks Ravioli

text: Ostatnio zadałem pytanie, czy powinienem refaktoryzować swój kod. odpowiedzi, które otrzymałem, były zdecydowanie w obozie przechodzenia przez refaktoryzację ze względu na obecność Akta Boga. Jednak teraz naciskam w kierunku tego, czego obawiam się, jest kod Ravioli. Będę miał około 6-7 modułów ".c" (które uważam za doskonale zarządzalne), ale staram się mieć około 10~ ".h" nagłówków. Wciąż mam też około 8000 linii kodu, które muszę przeanalizować i zrefaktoryzować na ich własne części i nie jestem nawet pewien, ile jeszcze nagłówków będę potrzebować. Prawdopodobnie będę zagęszczał i łączył kilka nagłówków, ale moje pytanie brzmi: co jest gorsze z punktu widzenia utrzymania oprogramowania, potencjalnie zbyt wiele modułów (utrudnia znalezienie i zmianę definicji) lub uniknięcie poprzedniego problemu przez potencjalnie mniejszą liczbę pliki, ale czy są one nadęte nadmiernymi funkcjami? Czy mój problem jest nieunikniony z powodu ponad 12 000 linii kodu? A może po prostu przesadzam z rozmiarem systemu?


title: PHP: nawiasy czy bez nawiasów z if/for/while/...?

text: Obie te składnie są poprawne i równoważne: W nawiasach: foreach ($listOfThings as $thing) { echo $thing; } Bez nawiasów: foreach ($listOfThings as $thing): echo $thing; na każdym kroku; Przychodzą mi do głowy dwa pytania: * Czy jest między nimi jakaś prawdziwa różnica, czy są one całkowicie identyczne (na przykład wydajność)? * Czy lepiej zawsze używać tego samego, czy obu, w zależności od kontekstu (na przykład: aby łatwo rozpoznać kod dotyczący frameworka). Podejrzewam, że to kwestia gustu i standardów firmy, ale nie jestem tego pewien.


title: Tworzenie aplikacji internetowej do łączenia ciągów znaków w celu ujednolicenia konwencji nazewnictwa

text: Otrzymałem zadanie stworzenia małej aplikacji internetowej, w której użytkownicy mają szereg formularzy (obecnie nie mogę wymyślić lepszego sposobu na zrobienie tego), które będą zawierać a) pola wprowadzania tekstu lub b) listy rozwijane . Formularz będzie wyglądał następująco: `form1` `rozwijane pole wprowadzania, rozwijane pole wprowadzania,` `form2` `rozwijane pole wprowadzania, rozwijane pole wprowadzania,` `form3` `rozwijane pole wprowadzania, rozwijane pole wprowadzania danych` Teraz dla każdego formularz, musiałbym połączyć wynikowy ciąg przechowywany w każdym polu (rozwijanym lub wejściowym). Wydaje się dość proste i mam już działający prototyp. Problem polega na tym, że dla każdego formularza może być wiele wierszy. Jaki byłby najłatwiejszy sposób na podejście do tego? Moje umiejętności ograniczają się do HTML, CSS, JavaScript i niektórych (lekkich) JQuery. Pracujący prototyp, który aktualnie mam, użytkownik wypełnia wszystkie pola, a następnie naciska przycisk „generuj”, który generuje wszystkie połączone ciągi. Czy to podejście, które byś przyjął?


title: Jakie są różne gałęzie języka C++?

text: Ostatnim razem, gdy próbowałem używać C++ kilka lat temu, pamiętam, że musiałem dołączać różne biblioteki między różnymi IDE, mimo że używałem tego samego systemu operacyjnego, co pozostawiło mnie nieco zdezorientowanego co do języka C++. Czy istnieją różne standaryzacje języka C++? A jeśli tak, to jakie istnieją tam gałęzie języka? Czy składnia i/lub nazwy bibliotek dla każdej standaryzacji różnią się w różnych systemach operacyjnych? Ponadto, czym jest obecnie stosowana normalizacja podstawowa?


title: Czy do tego wymagany jest XML?

text: Piszę aplikację komputerową w Javie, która zawiera wszystkie częstotliwości radiowe Airband dla Wielkiej Brytanii. Chciałbym udostępnić tę bazę danych częstotliwości, aby ludzie mogli ją wydrukować. Czy najlepiej byłoby utworzyć bazę danych w formacie XML lub użyć PDF do pobrania w celu wydrukowania? A może istnieje inna, lepsza opcja?


title: Prowadzenie prezentacji o tym, co zrobiłeś

text: W przyszłym tygodniu muszę przedstawić prezentację mojemu opiekunowi i nauczycielowi na temat czynności, które wykonałem podczas mojego stażu. Nigdy nie byłem dobry w prezentacjach i bardzo szybko się denerwowałem. Kiedy się denerwuję, zaczynam mówić bardzo szybko i pomijam cenne informacje, które powinienem był powiedzieć. Czuję, że muszę opanować prowadzenie prezentacji, jeśli chcę zostać później poważnym inżynierem oprogramowania. Czy inżynierowie oprogramowania regularnie prowadzą prezentacje? Jak mogę się przygotować do prezentacji? Czy byłbym mniej zdenerwowany, gdybym dawał więcej prezentacji? Wszelkie wskazówki i porady są mile widziane.


title: Jakie funkcje są kluczowe dla dobrego oprogramowania do śledzenia błędów?

text: Jakie funkcje są niezbędne dla dobrego oprogramowania do śledzenia błędów i dlaczego są ważne? Co w szczególności jest konieczne, aby uznać te funkcje za wykonane prawidłowo?


title: Jak długo programiści pozostają w branży?

text: Jedną rzeczą, o której słyszałem wiele przez lata, jest to, że osoby pracujące w świecie IT na ogół nie robią z tego kariery na całe życie, ale mają tendencję do „wypalania się” i rozpoczynania nowej kariery, robiąc coś innego niezwiązanego (np. przejście od tworzenia oprogramowania do bycia księgowym). Czy stwierdziłeś, że jest to generalnie prawdziwe w twoim doświadczeniu, a jeśli tak, jakie jest ogólne wrażenie na temat tego, jak długo ludzie pracują jako programiści przed rozpoczęciem nowej kariery?


title: Scrum vs Agile vs CMMI

text: Wypycham mój projekt do Visual Studio Online, aby mieć kontrolę nad źródłem. Sam opracowuję ten projekt. Nigdy wcześniej nie korzystałem ze Scrum, Agile ani CMMI, a szczegółowy opis, który przeczytałem pod adresem http://msdn.microsoft.com/library/vstudio/ms400752.aspx, wymaga dużej wiedzy. (Nie ma to sensu dla kogoś, kto jeszcze nie wie, o czym mówi.) Najlepszym sposobem, aby naprawdę nauczyć się Scrim, Agile lub CMMI, jest ich używanie. Ale od czego zacząć? Powyższy link mi tam nie pomaga. Jako samotny programista, który po prostu szuka kontroli nad źródłami, czy powinienem zacząć od Scrum, Agile czy CMMI? Aby wyeliminować opiniotwórczość z tego pytania, zadam oficjalne pytanie: **Jaka jest różnica między Scrumem, Agile i CMMI w kategoriach Laymana?** (Ale tak naprawdę, próbuję tylko dowiedzieć się, gdzie początek!)


title: Zaprojektować witrynę MVC tak, aby programista interfejsu użytkownika mógł pracować bez dostępu do warstwy danych?

text: Pracuję na witrynie ASP.NET MVC (używając Team Foundation Service do kontroli źródła), którą podzieliłem na kilka oddzielnych projektów w ramach jednego rozwiązania: Project.WebAPI (Główny punkt wejścia, zawiera foldery "Widoki", "Skrypty" Project.Data (abstrakcyjny interfejs dostępu do danych zaplecza) Project.Data.SqlServer (konkretne implementacje dostępu do danych) Aby mój projektant UI działał, nie powinien potrzebować dostępu do zbyt wielu. Foldery „Views” i „Scripts” głównego projektu.Ale „Project.WebAPI” przyjmuje parametry, które znajdują się w Project.Data, więc jest tam zależność.Aplikacja jest w stylu SPA, więc mogłem łatwo przechowywać fałszywy ładunek JSON co całkowicie usunęłoby potrzebę logowania i pobierania prawdziwych danych.Moim ostatecznym celem byłoby udostępnienie podzbioru źródła z projektantem interfejsu użytkownika, co pozwoliłoby mu na sprawdzanie zmian bezpośrednio w całym projekcie, a nie tylko na tworzenie osobnej instancji za jego pracę, którą chciałbym ld trzeba ręcznie połączyć się. Czy ktoś ma jakieś doświadczenie z tego typu rzeczami? Edycja: dla jasności: Celem jest ochrona własności intelektualnej rozwiązania, aby programiści front-end nie mieli dostępu do całego rozwiązania. Mam nadzieję że to pomogło...


title: Jak zgrabnie przełamać te długie linie C++?

text: Jestem na moim pierwszym większym projekcie C++ i odkryłem, że mam naprawdę długie linijki. Moim celem jest rozbicie ich na 79 kolumn, ale tak naprawdę nie wiem, jak to zrobić w zgrabny sposób. Czy istnieją pewne wytyczne dotyczące łamania linii w następujący sposób: VectorHistogram::VectorHistogram(size_t bins, size_t cache) : bins(std::vector<double>(bins)), cache(std::min(cache, MAX_CACHE_ENTRIES)) { lub VectorHistogram position_histogram {settings.position_hist_bins, settings.time_sites * settings.iterations}; lub MetropolisDriver::MetropolisDriver(Ustawienia ustawień): ustawienia(ustawienia), system(HarmonicOscillator {settings.time_step, settings.mass, settings.mu_squared}), trajektoria(ListQuantity {settings.time_sites}), ma(MetropolisAlgorithm {trajektoria, system , settings.position_seed, settings.accept_seed}) {


title: Czy warto rejestrować oprogramowanie w Urzędzie Praw Autorskich USA?

text: nolo.com mówi: „Jeśli chcesz powstrzymać kogoś przed używaniem lub naruszaniem Twojej pracy w inny sposób, musisz pozwać sprawcę w sądzie federalnym. Aby to zrobić, musisz najpierw zarejestrować prawa autorskie w Urzędzie Praw Autorskich USA ”. Czy to prawda, że jedynym sposobem na podjęcie kroków prawnych przeciwko osobom naruszającym prawa autorskie do oprogramowania w USA jest zarejestrowanie się w Urzędzie Praw Autorskich USA? I czy to prawda, że tylko w ten sposób można odzyskać ustawowe odszkodowanie? Czy istnieją inne korzyści z rejestracji oprogramowania w Urzędzie ds. Praw Autorskich USA? Jakie są koszty, oprócz opłaty i kłopotów z ponowną rejestracją nowych wersji oprogramowania?


title: Jaki jest faktyczny powód, dla którego JavaScript nie wystarcza do rysowania?

text: Szukam czystej biblioteki JS, która pozwoliłaby narysować ślad myszy, ale nie mogę znaleźć niczego czystego poza płótnem. Czy jest powód, dla którego nie udało się tego osiągnąć? Mam złe myśli?


title: Jak zamienić witrynę internetową w użyteczny, skierowany wykres offline do wyszukiwania najkrótszych dróg między stronami?

text: Jestem studentem na poziomie zaawansowanym-średniozaawansowanym skoncentrowanym na .NET i C#. Znam wszystkie podstawy, klasy, metody, obiekty, dziedziczenie, zasady OOP i tak dalej. Problem polega na tym, że nie omówiliśmy jeszcze struktur danych, takich jak drzewa i wykresy. Zasadniczo potrzebuję, aby mój program był w stanie zrobić to: Część 1 Aplikacja konsolowa: 1. Przejdź online do określonej witryny i podążając za siatką linków na niej, zaczynając od strony głównej, utwórz ukierunkowany wykres z nieważkimi krawędziami i przechowuj go lokalnie, aby można było z niego korzystać bez połączenia z Internetem. 2. Być w stanie odtworzyć wykres z lokalnie zapisanych danych, a następnie przez podanie 2 linków jako parametrów, aby znaleźć i wydrukować najkrótszą ścieżkę między nimi. Część 2 Jakiś rodzaj UI: 1. Po podanym adresie strony i głębokości - wizualnie reprezentuj w przeglądarce strukturę drzewa z daną stroną jako korzeniem i poziomem głębokości możliwych stron, do których można uzyskać dostęp poprzez linki z niej. Byłbym naprawdę wdzięczny, gdybyś mógł kierować mną w wyborach, których muszę dokonać, aby wykonać to zadanie. Głównie intrygują mnie te: 1. Jak przedstawić wykres w C#. 2. Jak zapisać lokalnie (program musi się zakończyć w ciągu 5 sekund, więc nie mogę przejść do trybu online i zrobić wszystkiego od zera). 3. Czego powinienem użyć do części UI z wizualizacją drzewa. Nie szukam pełnych odpowiedzi, a nie dobrych dyrektyw. Muszę się tego szybko nauczyć i nie marnować cennego czasu na wędrówki.


title: Czy ADO.net Entity Framework jest odpowiednia, gdy wszystko, co robisz, to zbiorcze wstawianie rekordów?

text: Mój dział tworzy oprogramowanie do migracji baz danych dla naszych klientów ze starego oprogramowania CRM do naszego. W tym procesie możemy wstawiać miliony wierszy, przetwarzanych pojedynczo, ponieważ musimy wykonać mapowanie i formatowanie, aby przejść ze starego systemu (którym może być wszystko, od relacyjnej bazy danych do zestawu płaskich plików binarnych) do naszą bazę danych MS-SQL. Obecnie używamy modelu producenta i konsumenta, który wczytuje ze swojego starego systemu do naszego programu mapującego, a następnie używamy innego modelu producenta/konsumentu, aby przejść od tego do wątków lokalnych DataTables, które są grupowane co 15 000 wierszy w operacji SQLBulkCopy, aby zachować liczbę obiekty przechowywane w pamięci RAM (większe tabele mogą łatwo wyczerpać limit 2 GB dla aplikacji 32-bitowej, jeśli spróbujemy trzymać całą tabelę w pamięci przed jej wstawieniem). Problem polega na tym, że jest to rodzaj konfiguracji kludge, aby móc wygenerować nowe wiersze i wstawiaj je do bazy danych. Ostatnio mieliśmy okazję przepisać bazę danych tak, aby pasowała do naszych potrzeb i pracowałem z moim menedżerem nad pomysłem wykorzystania jakiejś formy ORM. Zacząłem rozglądać się za różnymi rozwiązaniami ORM i wiem, że chcemy pozostać przy czystym stosie Microsoftu (wystarczająco trudno było skłonić mojego menedżera do rozważenia użycia ORM, a nie mam szans na przekonanie korzystał z biblioteki innej firmy, ponieważ główna aplikacja CRM korzysta z biblioteki przetwarzania obrazów innej firmy, która nie jest zbyt dobra i od tego czasu nienawidzi bibliotek innych firm). Porównując Linq-to-Sql i ADO.net Entity Framework Myślę, że EF lepiej pasuje do naszych potrzeb. Martwi mnie jednak wydajność. Większość aplikacji CRUD to Odczyt->Aktualizacja w wolnym tempie (wyświetlanie tylko jednego rekordu lub zestawu rekordów ze wspólną zmienną w tym samym czasie). **Będziemy jednak tylko tworzyć, tworzyć, tworzyć. Czy taki ORM jak EF jest do tego przeznaczony?** Mój menedżer ma obsesję na punkcie wyników. Kiedy ten proces został wykonany w VB6 (a tak było to robiono jeszcze dwa lata temu), uruchomienie konwersji mogło zająć nawet kilka godzin. Przy naszym obecnym klocku, najdłuższe przetwarzanie kilku gigabajtów nagrań zajmuje najwyżej pół godziny (najwolniejsza część dotyczy tej zewnętrznej biblioteki obrazów, o której wspomniałem wcześniej, a te, które są czystym tekstem, trwają co najwyżej 10 minut). **Czy mogę potencjalnie zauważyć spowolnienie w EF w porównaniu z używaniem SqlBulkCopy i co mogę zrobić, aby zmniejszyć koszty eksploatacji, jeśli tak się stanie?** * * * Również naprawdę trudno mi było zdecydować, czy to powinno przejść tutaj lub tak myślisz, że powinno być WIĘC proszę daj mi znać. * * * **AKTUALIZACJA:** W odpowiedzi na odpowiedź Wyatta Barnetta: jeśli używanie ORM jest całkowicie złą drogą, czy istnieje jakieś inne rozwiązanie, które będzie dobrze działać, poza generowaniem ogólnych DataTables w locie na podstawie schematu docelowej bazy danych? To, co najbardziej podobało mi się w EF, to fakt, że miałem mocno typowane typy danych i mogłem aktualizować zarówno naszą bazę danych, jak i nasze obiekty mapujące bazę danych za pomocą narzędzi wbudowanych w Visual Studio w jednej lokalizacji.


title: Czy istnieją języki, które ułatwiają zrozumienie zasad bezpiecznego kodowania?

text: Jestem zainteresowany poszerzeniem mojej wiedzy na temat bezpieczeństwa: rzeczy takich jak przepełnienia bufora, luki w ciągach formatu itp. Chciałbym móc przejrzeć język i zrozumieć jego implikacje bezpieczeństwa i pułapki, aby lepiej zrozumieć bezpieczne kodowanie praktyki w ogóle. Czy istnieją języki, które bardziej sprzyjają takiemu eksperymentowi uczenia się? Czy ze względu na abstrakcje lub złożoność są jakieś języki, których powinienem unikać? Od czego powinienem zacząć?


title: Dynamiczne zdarzenie pokompilacyjne w Visual Studio

text: Buduję aplikację serwera wideo, która ma wiele projektów w programie Visual Studio. Jeden projekt, projekt serwera wideo, wymaga wywołania skryptu powłoki, aby wygenerować dokumentację. Działa to dobrze, gdy budujesz projekt serwera wideo, ponieważ skrypt to po prostu cd "$(SolutionDir)" start documentgenerator Istnieje również projekt SDK, który po zbudowaniu również buduje projekt serwera wideo. Jednak gdy to robi, nie wie, gdzie znajduje się skrypt powłoki, ponieważ próbuje użyć _Katalogu rozwiązań projektu SDK_. * Projekt SDK * Projekt serwera wideo * skrypt powłoki Pytanie brzmi: jak sprawić, by projekt SDK znalazł projekt serwera wideo? Sprawdziłem właściwości MSBuild i nie ma właściwości, które wydają się radzić sobie z projektami „zagnieżdżonymi”.


title: Obróć tekst w Kairze: Matryca transformacji

text: http://www.cairographics.org/manual/cairo-Transformations.html Korzystam z Biblioteki Grafiki Wektorowej w Kairze do pewnych prac i nie mogę do końca zrozumieć niektórych części: Jaka jest domyślna wartość macierzy transformacji? Kiedy i tak potrzebuję macierzy transformacji? Załóżmy, że nie chcę obracać tekstu, czy nadal będę musiał go ustawić, czy nadal będzie ustawiony?


title: Zabezpieczanie Back End API dla aplikacji mobilnych

text: Mam aplikację, którą piszę zarówno na iOS, jak i Androida; ta aplikacja będzie obsługiwana przez interfejs API ReSTFUL działający na klastrze serwerów w „internecie”. Jestem ciekaw, w jaki sposób reszta świata zamierza zabezpieczyć swoje API, aby tylko określone aplikacje działające na iOS lub Android mogły korzystać z tych API. Mogę pójść tą samą drogą, co inni dostawcy OAuth, podając kombinację klucz/tajemnica (2-etapowa autoryzacja OAuth), jednak co mam zrobić, jeśli kiedykolwiek będę musiał zmienić te klucze??? Czy mogę utworzyć nowy klucz/sekret dla każdej osoby, która pobiera aplikację??? Aplikacja jest grą społecznościową, która pozwoli użytkownikowi na interakcję z innymi „uczestnikami” w grze na podstawie lokalizacji, osiągnięć itp. API zapewni następujące funkcje: -Pytania, zadania itp. -Zarządzanie profilami -Użytkownik Interakcja - Możliwa interakcja społecznościowa Gdy aplikacja zacznie działać, planuję otworzyć API ala Facebook, Twitter itp. Co jest dość łatwe, planuję zaimplementować serwer OAuth i tak dalej. Jednak chcę się upewnić, że na tym etapie tylko osoby korzystające z aplikacji mogą uzyskać dostęp do API i korzystać z niego.


title: Co powinienem wiedzieć lub nauczyć się, aby szybko zostać inżynierem oprogramowania QA?

text: Jestem inżynierem oprogramowania w .NET przez ostatnie 3,5 roku i robiłem własne testy integracyjne i jednostkowe, ale nic zbyt obszernego. Teraz przeprowadzam rozmowę kwalifikacyjną na stanowisko w zakresie kontroli jakości na poziomie podstawowym i chciałem wiedzieć, z jakimi koncepcjami powinienem się zapoznać.


title: Czy pisząc testy dla wtyczki Wordpress powinienem uruchamiać je w wordpressie czy w normalnej przeglądarce?

text: Zacząłem używać BDD do wtyczki Wordpress, nad którą pracuję i przepisuję bazę kodu js do testów. Natknąłem się na kilka problemów, ale teraz idę stabilnie, zastanawiałem się, czy mam właściwe podejście, ponieważ piszę test, który powinien przejść w normalnym środowisku przeglądarki, a nie w wordpressie. Zdecydowałem się to zrobić, ponieważ chcę, aby moja wtyczka była całkowicie niezależna od środowiska wordpress, używam requirejs w taki sposób, aby nie ujawniać żadnych globalnych i ładuję moją wersję jQuery, która nie zastępuje taki, który jest dostarczany z Wordpressem. W ten sposób moja wtyczka będzie działać tak samo na każdej wersji wordpress, a mój kod nie zepsuje się, jeśli zmieni wersję jQuery lub ktoś użyje mojej wtyczki na starej wersji wordpress. Zastanawiam się, czy jest to właściwe podejście, czy też powinienem zawsze testować w środowisku, w którym pracuję. Ponieważ wordpress implikuje pewne globalne, musiałem napisać jakąś funkcję wyłącznie do celów testowych, na przykład "get_ajax_url": function() { if( typeof window.ajaxurl === "niezdefiniowany" ) { return "http://localhost/wordpress/wp-admin/admin-ajax.php"; } else { powrót window.ajaxurl; } }, ale poza tym wszystko działa poprawnie. Co myślisz?