title: Jak organizować punkty na kuli w koszach i poruszać się między koszami?

text: Mam problem z wymyśleniem odpowiedniego sposobu poruszania się po zbiorze współrzędnych gwiazd w układzie współrzędnych równikowych. Moim celem jest wyświetlenie tych, które znajdują się w zadanym zakresie współrzędnych poziomych. Wyświetlacz ma kształt kwadratu o „długości” około 10 stopni w każdym kierunku. Myślałem o pogrupowaniu gwiazd w gromady o wystarczająco dużych (ale wystarczająco małych) równych rektascensji i deklinacji, aby móc wyświetlać na wyświetlaczu jeden lub więcej koszy (jeden, jeśli wyświetlacz pokazuje środek kosza, cztery jeśli wyświetlacz pokazuje punkt łączący sąsiednie pojemniki). Binning jest prosty, ale jak mogę nawigować między pojemnikami, aby wybrać odpowiednie do wyświetlenia? Wydaje się to być problemem wokół biegunów, gdzie wiele pojemników styka się ze sobą. Aplikacja jest napisana w C++ i będzie musiała działać na mikrokontrolerze, więc zasoby (pamięć i czas procesora) są bardzo ograniczone. Współrzędne można odczytać z karty SD, a format może być niestandardowy, więc jeśli algorytm nakłada na to jakiekolwiek ograniczenia, to w porządku. * * * **Dodatkowe przemyślenia:** * Kafelki dzielące sferę niebieską na kosze mają również stały (niekoniecznie równy) rozmiar i są generowane razem ze strukturą wyszukiwania. * czas wstawienia nie jest ważny. Struktura użyta do znalezienia odpowiedniego pojemnika nie zmienia się w czasie pracy i można ją załadować z karty SD do pamięci RAM podczas uruchamiania. * Brakowało mi słowa „kafelki”. Gamedev SX ma tag [kafelki] i jest tam kilka pytań i odpowiedzi; Rzucę okiem na to. * * * **I jeszcze jedno:** Przekopywanie się przez tag Gamedev [kafelki] nie ujawniło wiele, co mógłbym wykorzystać na współrzędne sferyczne. Wygląda też na to, że nie jestem wystarczająco zaznajomiony z podstawową teorią, aby znaleźć odpowiednie rozwiązanie. Innym pomysłem, który wpadłem, było dodanie informacji o wszystkich sąsiednich pojemnikach do każdego pojemnika, tak aby po przesunięciu widoku wyświetlacza mogłem po prostu przeskanować wszystkich sąsiadów, aby znaleźć następnego, na którym wyświetlacz jest „wyśrodkowany”. Myślę, że jest to podobne do wykresu, ale zdecentralizowane.


title: Schemat mentalny dla zapytań SQL

text: Przygotowując materiał wprowadzający do SQL, skończyłem zadawać sobie pytanie o tok myślenia, jakim kieruje się programista podczas pisania zapytania. Uważam, że może to być zbyt cenne z punktu widzenia początkującego. Pozwolę sobie zilustrować temat przykładem. Ze względu na zwięzłość nie będę dołączać schematu bazy danych, mając nadzieję, że zapytanie będzie samo w sobie wystarczająco opisowe. Załóżmy, że chcemy napisać zapytanie do pobrania wszystkich _nowych_ klientów z ostatniego kwartału. Typowy. Ja, pierwszą rzeczą, o której myślę, jest zestaw zaangażowanych podmiotów, zaczynając od tych, które odpowiadają żądanym danym. Chcąc więc pozyskać klientów, najpierw piszę następujący szkielet zapytania: SELECT FROM Customers AS NewCustomer WHERE Od razu następują pozostałe **entity**. W tym fikcyjnym kontekście nowym klientem jest każdy klient, który złożył zamówienie po raz pierwszy: SELECT FROM Customers AS NewCustomer INNER JOIN Zamówienia jako ostatnie zamówienie LEFT JOIN Zamówienia AS OlderOrder WHERE AND OlderOrder.Id JEST NULL Ze wszystkimi zidentyfikowanymi podmiotami kontynuuję pisanie **relacji** między nimi: SELECT FROM Klienci AS NewCustomer INNER JOIN Zamówienia AS RecentOrder ON RecentOrder.CustomerId = NewCustomer.Id LEFT JOIN Zamówienia AS OlderOrder ON OlderOrder.CustomerId = RecentOrder.CustomerId AND OlderPlaceOrder.PlacementDate <DmentateWHER. AND OlderOrder.Id JEST NULL Gdy skończę z encjami, nadszedł czas, abym zdefiniował wszelkie **ograniczenia**, które mają być zastosowane do wynikowego zestawu danych: SELECT FROM Customers AS NewCustomer INNER JOIN Orders AS RecentOrder ON RecentOrder.CustomerId = NewCustomer.Id LEFT JOIN Orders AS OlderOrder ON OlderOrder.CustomerId = RecentOrder.CustomerId AND OlderOrder.PlacementDate < RecentOrder.PlacementDate WHERE RecentOrder.PlacementDate BETWEEN @fromDate AND @toDateOrPlaceD OlderOrder. IS NULL Na koniec zadaję sobie pytanie, które konkretne **pola** danych mają zwrócić zapytanie, dopełniając w ten sposób klauzulę `SELECT`: SELECT NowyKlient.Imię, NowyKlient.Nazwisko FROM Klienci AS NowyKlient INNER JOIN Orders AS RecentOrder ON RecentOrder. CustomerId = NewCustomer.Id LEFT JOIN Orders AS OlderOrder ON OlderOrder.CustomerId = RecentOrder.CustomerId AND OlderOrder.PlacementDate < RecentOrder.PlacementDate WHERE RecentOrder.PlacementDate BETWEEN @fromDate AND @toDate AND OlderOrder.PlacementD AND OlderOrder.Id JEST NULL Oczywiście jest to bardzo proste zapytanie, bez agregacji, zapytań zagnieżdżonych i innych zaawansowanych rzeczy. Ale to jest mój ogólny tok myślenia, bez względu na złożoność zapytania: 1. Jednostki 2. Relacje 3. Ograniczenia 4. Pola Moje pytanie brzmi, czy jest to odpowiedni schemat, którego należy bezpośrednio nauczyć początkującego? W każdym razie jak można to ulepszyć, aby wygładzić jej krzywą uczenia się?


title: Jak podejść do klienta, który zaczął używać mojego serwera do szkolenia personelu?

text: Jestem w trakcie kończenia i dostarczania projektu webowego. Umowa wyraźnie określała, że klient jest odpowiedzialny za dodanie całej zawartości i instalację. Określone elementy dostarczane to motyw WordPress. Skończyło się na tym, że wykorzystałem dużo treści z ich istniejącej witryny, ponieważ potrzebowałem ich, aby upewnić się, że wszystko działa zgodnie z obietnicą. Uwzględniłem również 30 minut szkolenia, aby pokazać im, jak korzystać z utworzonego przeze mnie niestandardowego pulpitu nawigacyjnego. Wczoraj odbyłem szkolenie i dałem klientowi login administratora, aby mógł sprawdzić moją pracę. Zaproponowałem przeprowadzenie sesji szkoleniowej dla personelu za dodatkową stawkę godzinową (oryginalna umowa została wyceniona na projekt), a także dołączenie bazy danych jako przykładu dodawania treści. Klient odmówił i powiedział, że zajmą się szkoleniem. Wspomnieli, że zamierzają dzisiaj odbyć szkolenie i nawet nie zapytali, czy mogą korzystać z mojego serwera i instalacji. Właśnie dostałem 3 e-maile, że dodano nowe konta administratorów i wygląda na to, że zaczęli migrować niektóre treści. Czy mam im powiedzieć, że będzie to dodatkowa opłata za bazę danych, czy naliczyć opłatę za korzystanie z serwera? To był jeden z moich największych projektów i pierwszy raz spotkałem się z taką sytuacją. Co należy zrobić profesjonalnie, nie pozwalając im wykorzystać mnie i utrzymać związek w nienaruszonym stanie?


title: Jakie są najpopularniejsze opcje przechowywania danych w aplikacjach komputerowych?

text: Kiedy pracowałem jako projektant/inżynier stron internetowych, korzystałem głównie z baz danych do przechowywania wielu moich dynamicznych danych. Stosowanie tej metody było bardzo łatwe i wygodne i wydawało mi się standardową praktyką z moich badań w tej sprawie. Obecnie pracuję nad odejściem od stron internetowych i przejściem na aplikacje komputerowe. **Jakie są najlepsze praktyki dotyczące przechowywania danych dla aplikacji komputerowych?** Pytam, ponieważ zauważyłem, że większość programów, których używam na poziomie osobistym, nie używa bazy danych do przechowywania danych, chyba że jest ona osadzona w programie. Nie myślę o aplikacji takiej jak edytor tekstu, w której ma sens przechowywanie danych w pojedynczych plikach zdefiniowanych przez użytkownika. Raczej myślę o czymś bardziej podobnym do aplikacji kalendarza, która musiałaby przechowywać daty i informacje o wydarzeniach, a dostęp do tych informacji byłby znacznie łatwiejszy, gdyby był przechowywany w bazie danych ... przynajmniej na tyle, na ile moje doświadczenie wskazać.


title: Rezygnujesz z małego start-upu, w którym jesteś głównym programistą?

text: Po prostu chciałem usłyszeć od innych osób, które mogły być w podobnej sytuacji. Pracuję dla małego start-upu (bardzo małego), w którym jestem głównym programistą dużej części tworzonej przez nich aplikacji, a drugi deweloper, którego mają, zajmuje się innym obszarem pracy niż ja, więc nie może przejąć mojej części. Jestem w firmie od około 5 miesięcy, ale zamierzam wkrótce przejść do bardziej stabilnej firmy, ponieważ po prostu będzie to zbyt duży stres, nadgodziny, presja itp. Za zbyt małe korzyści i tęsknię za pracą z innymi programiści, którzy mogą pomóc w projekcie. Facet jest zadowolony z mojej pracy i myślę, że pomogłem mu zajść dość daleko, ale zdałem sobie sprawę, że po prostu nie lubię być tak bardzo „na krawędzi”, ponieważ trudno powiedzieć, w jakim kierunku zmierza firma być, ponieważ jest tak nowy. Poza tym, mimo że jestem głównym deweloperem projektu, nadal uważam się za dewelopera średniego poziomu i jako takiego sprzedaję się w poszukiwaniu nowej pracy. Żeby dodać więcej szczegółów, nie jestem wspólnikiem ani niczym w firmie i nigdy nie było o tym dyskutowane, więc po prostu pracuję nad W2 (oczywiście bez żadnych korzyści). Pracuję w domu, więc wydaje mi się, że łatwiej jest mi wyjść, ale nie chcę tak po prostu wkręcić faceta, ale też nie chcę być zbyt długo związany. Oczywiście planowałbym dać co najmniej 2 tygodnie wypowiedzenia, ale czy powinienem dawać więcej? Jak powinienem poruszyć ten temat, ponieważ wiem, że będzie to drażliwa sprawa. Każda porada jest mile widziana AKTUALIZACJA: Dziękuję wszystkim za publikację na ten temat, właśnie zakończyłem proces przyjmowania oferty z większą firmą i rzuciłem startup. Dałem 2 tygodnie wypowiedzenia i zaoferowałem, że będę dostępny po tym, jeśli zajdzie taka potrzeba, w zasadzie jest to naprawdę mała firma w tym momencie, więc byłby to tylko 1 programista, z którym musiałbym sobie poradzić ... w każdym razie, wygląda na to może się udać, o ile utrzymuję dobre relacje z założycielem dla przyszłej wspólnej pracy, uznałem to za bardziej osobisty / styl życia problem niż o ich wady / braki, które zdecydowanie wydają się pomagać w dobrym wyjeździe


title: Jak przekazujemy dane między dwiema instancjami Amazon?

text: Próbuję stworzyć stronę internetową, na której użytkownik wpisuje kilka liczb, te liczby są wprowadzane do niektórych równań, a wyniki tych równań są wysyłane do użytkownika pocztą elektroniczną. Do wszystkiego używam Pythona 2.7. Używam taniej instancji Amazon (m1.small, Ubuntu 12.04) do hostowania frontendu, ale chcę uruchomić instancję backendu tylko wtedy, gdy jest to potrzebne (obliczenia są ciężkie i wymagają potężnej - i drogiej - instancji). Mogę użyć boto, aby programowo uruchomić instancję zaplecza, ale potem jak wprowadzić dane wejściowe użytkownika do zaplecza? Wszystko jest dość proste, gdy robię rzeczy ręcznie, za pomocą SFTP i SSH, ale jaki jest na to programowy sposób? Czy powinienem po prostu wykonać SFTP i SSH z mojego skryptu Pythona (używając, powiedzmy, „os.system”)? Jakoś to jest nie tak; jak ludzie to robią? Jeśli ma to znaczenie, nie dotyczy to komercyjnej strony internetowej. Jestem na studiach i chcę, aby członkowie mojego komitetu mogli powielać i modyfikować moje badania, które są ciężkie pod względem statystyk. Poza tym nie mam żadnych obaw o bezpieczeństwo - to tylko badania naukowe, nie przechowuję żadnych danych osobowych ani niczego.


title: Czy mam prawo być sceptycznie nastawiony do ASP.NET MVC "Html Helpers"?

text: ASP.NET WebForms wydawały się naprawdę świetne, dopóki nie uświadomiłeś sobie, że abstrakcją, którą powitałeś, było tworzenie HTML, który był światy odległe od tego, czego potrzebujesz. Zmaganie się z tym frameworkiem do generowania HTML, który pasował do projektantów lub używanych zewnętrznych bibliotek, stało się dla mnie wielkim koszmarem i wolałbym nie mieć więcej. Zbliżając się do prostego formularza Bootstrap w ASP.NET MVC, skopiowałem podstawowy kod HTML, a następnie rozpocząłem proces dodawania @Html.BeginForm(), @Html.EditorFor(), aż dotarło do mnie, że idę tą samą ścieżką. Jasne, dodajesz tutaj atrybut, definiujesz tam alternatywnego pomocnika, ale jak długo będziesz walczył z frameworkiem, aby wrócić do tego, co właśnie mogłeś wkleić z dowolnego przykładu Bootstrap w sieci? Czy ktokolwiek inny to czuje, czy też jest możliwe, że Pomocnicy wprowadzą tyle „cukru”, by korzystanie z nich było warte wysiłku?


title: Steve Yegge post o platformie vs produkt

text: Czytam to i natknąłem się na: > Złotą Zasadę Platform, „Zjedz Swój Własny Dogfood”, można przeformułować jako > „Zacznij od Platformy, a następnie Używaj jej do Wszystkich”. Nie możesz po prostu pokręcić > tego później. Z pewnością nie jest to łatwe w każdym razie - zapytaj każdego, kto pracował nad platformowaniem MS Office. Albo ktokolwiek, kto pracował nad platformizacją Amazona. Jeśli > opóźnisz to, będzie to dziesięć razy więcej pracy niż zrobienie tego poprawnie > z przodu. Nie możesz oszukiwać. Nie możesz mieć tajnych tylnych drzwi dla aplikacji wewnętrznych >, aby uzyskać specjalny priorytetowy dostęp, nie z ŻADNEGO powodu. Musisz rozwiązać > trudne problemy z góry. Co to dokładnie oznacza? Czy ktoś może wyjaśnić?


title: DOMProgramowanie dokumentów: wiele małych dylematów, jak je rozwiązać?

text: Potrzebuję elegancji i wydajności: jak wybrać „najlepszą implementację” dla każdego algorytmu DOM, z którym mam do czynienia. Ten prosty "grupator DOMNodeList" ilustruje wiele małych dylematów: * użyj `iterator_to_array` lub "wypełnij tablicę", gdy nie wszystkie elementy muszą zostać skopiowane. * użyć operatora _clone_, metody _cloneNode_ czy metody _import_? * użyć metody `parentNode::method()` lub `documentElement::method`? (patrz tutaj) * pierwsze `removeChild` czy pierwsze `replaceChild`, nie pozwala uniknąć "efektów ubocznych"? * ... Moje stanowisko, dzisiaj, to tylko "zrób dowolny wybór i postępuj zgodnie z nim we wszystkich implementacjach" (jak zasada "Konwencja nad konfiguracją")... Ale ** są jeszcze inne względy? Jeśli chodzi o wydajność, jest jakiś artykuł pokazujący benchmarki?** * * * PS: to jest ogólne pytanie DOM, problem ma każdy język (PHP, Javascript, Python itp.).


title: czy jedna metoda przeciąża drugą, czy obie metody są „przeciążone”

text: Jeśli utworzę tę metodę public void foo() A potem utworzę przeciążoną wersję, taką jak ta public void foo(string bar) Czy powiemy, że druga funkcja przeciąża pierwszą, czy obie metody są równie „przeciążone”. Oznaczałoby to ( myślę ) , że istnieje funkcja typu podstawowego, która jest przeciążana przez inną funkcję. (trochę jak dziedziczenie, ale nie do końca) Założenie, że jedna metoda może "przeciążyć drugą", również implikuje terminy takie jak "overloader" i "overloadie", jeśli to w ogóle jest słowo. Ale to nie jest w porządku, zwłaszcza że możesz mieć kilka przeciążeń. Dotarłem do tego pytania, gdy chciałem spisać proces tworzenia przeciążonej metody i chciałem jak najbardziej poprawnie to zapisać. Przykłady: * Przeciążam `foo` * Przeciążam `foo` przez `foo(string bar)` * Tworzę przeciążoną metodę * Robię przeciążone foo Więc tak, ten rodzaj myślenia, nie jestem pewnie, co z tym zrobić. W sieci są setki, jeśli nie tysiące opisów przeciążania funkcji, ale na pierwszy rzut oka nie mogłem znaleźć żadnego rozwiązania tego problemu.


title: Czy doskonalenie moich zadań pomoże mi znaleźć pracę?

text: Obecnie jestem studentem z zamiarem kontynuowania kariery jako programista. Wszystkie moje zadania są funkcjonalne i kompletne co do joty, ale wydaje mi się, że nad tymi aplikacjami można wykonać o wiele więcej pracy poza zakresem oceny. Czy poświęcenie dodatkowych godzin na te zadania pomoże mi znaleźć pracę? Myślałem też o pokazaniu swoich umiejętności programistycznych poprzez wideo demonstrację mojej pracy. Czy uważasz, że potencjalni pracodawcy dobrze zareagowaliby na tego rodzaju wizualne CV?


title: XP, TDD czy DDD - Którego powinienem najpierw nauczyć się?

text: Chcę nauczyć się XP, TDD i DDD, aby się doskonalić. Mój problem polega na tym, że mam ogólne wyobrażenie o tym, czym one są, ale nie wiem, którego powinienem się najpierw nauczyć, czy muszę się czegoś nauczyć przed innymi? Proszę zasugerować mi, jakiego tematu powinienem się nauczyć jako pierwszy, drugi i trzeci.


title: Jak wdrożyć natychmiastową komunikację między iPadem a iPhonem przez sieć?

text: Jak najlepiej to zaimplementować: 1.Użytkownik iphone/webBrowser wybiera niektóre produkty (a,b,c) do zakupu 2.wybrane produkty najczęściej pojawiają się na iPadzie znajdującym się w Sklepie. być może przy użyciu UITableView. 3. Obsługa sklepu decyduje, czy produkty są dostępne do odbioru za 10, 20 lub 30 minut. 4.Gdy obsługa sklepu wybrała czas (10,20,30 minut) musi pojawić się/komunikować z powrotem do przeglądarki internetowej użytkownika lub iPhone'a. 5. Kupujący przychodzi do sklepu, aby odebrać zakupione produkty! Nie jestem dobry w tego rodzaju komunikacji! Potrzebuję pomocy! jaki jest najlepszy sposób na wdrożenie tego? czy mogę użyć zewnętrznego interfejsu API/wtyczki? Mam już serwer ftp. Potrafię wykonać całą grafikę i interakcje z użytkownikiem. jedynym problemem jest komunikacja między urządzeniami? Dzięki za pomoc.


title: Czym jest anarchia programistów?

text: Czytałem o anarchii programistów (lub programistów), która wydaje się być uważana za metodologię rozwoju post-Agile. Znalazłem na nim kilka zasobów (1, 2), ale wydaje się, że nie ma ich zbyt wiele. Zastanawiałem się, czy ktoś ma jakieś dobre zasoby, w których mógłbym dowiedzieć się więcej na ten temat _ jak to wdrożyć, plusy i minusy, porównanie z innymi metodologiami itp.


title: Jak mogę się upewnić, że przechodząc do C# z Javy jestem nie tylko biegły, ale i kompetentny?

text: Moją największą obawę przed powrotem do C# (mam podstawowe umiejętności .NET) jest to, że chociaż mogę znaleźć rozwiązanie problemu, nie będzie to rozwiązanie optymalne. Jaki jest najlepszy sposób, aby upewnić się, że nie tylko wykonam swoją pracę, ale że zostanę kompetentnym programistą C#?


title: Jak zarządzasz szacowaniem projektów i zarządzaniem czasem swoich zespołów?

text: Myślę o takich rzeczach jak: * wyznaczenie programisty, który ma powiedzmy 6 godzin z normalnego 7,5 godzinnego dnia przeznaczonego na projekt, resztę na inne czynności związane z pracą/firmą (spotkania, e-maile, rozmowy itp.), być może starszy programista jest mniej. * budowa w 20% czasie awaryjnym do szacunków. Jakie są najlepsze sposoby na uzyskanie dokładnych szacunków i jednocześnie ochronę deweloperów przed zarządem. Dodatek: Poproszono mnie o pomoc mojemu obecnemu klientowi w tego typu problemach. To naprawdę kiepski zespół programistów z biznesem wywołującym wszystkie ujęcia, pełzanie lunety, nakładające się środowiska, zmienianie priorytetów w razie kaprysu itp. Chcę pomóc im stać się lepszymi.


title: Widok zmaterializowany a widok POJO oparty na obiektach reprezentujących tabele Oracle

text: Mam około 12 tabel Oracle, które reprezentują dane, które są integrowane z systemu zewnętrznego do mojej aplikacji sieci Web. Dane te zostaną wykorzystane w sposób informacyjny i porównawczy dla klientów korzystających z mojej aplikacji internetowej. Na jednej konkretnej stronie mojej aplikacji internetowej muszę połączyć dane z 3-5 tabel Oracle, aby wyświetlić je jako tabelę HTML na stronie. Obecnie NIE używamy frameworka (na przykład Apache Struts) i nie jesteśmy w stanie przenieść tej aplikacji internetowej Java do niej w tej chwili (próbuję nas tam dostać...). Na pewno nie jestem architektem, ale widzę jeden z dwóch sposobów, dzięki którym mogę skutecznie zbudować tę stronę (wiem, że są inne sposoby, ale te wydają się dobre…): 1\. Utwórz zmaterializowany widok Oracle, który reprezentuje, jak powinna wyglądać tabela HTML, a następnie utwórz POJO na podstawie widoku, który mogę następnie zintegrować z moim JSP. 2\. Utwórz POJO, które reprezentują same tabele Oracle, a następnie utwórz inne POJO, które jest widokiem używanym dla tabeli HTML, a następnie zintegruj to POJO z moją stroną JSP. Wydaje mi się, że widok zmaterializowany prawdopodobnie zapewniłby szybsze wyniki, do czego zawsze dążymy w aplikacjach internetowych. Ale jeśli po prostu utworzę 12 POJO, które reprezentują tabele Oracle, a następnie zbuduję z nich widoki POJO, mam tę zaletę, że cały kod jest w tym celu w jednym miejscu i mam możliwość tworzenia dowolnej liczby różnych widoków i komponentów wielokrotnego użytku w moim Aplikacja internetowa. Masz jakieś przemyślenia, która z nich może być lepszą trasą? A może znasz jeszcze lepszy?


title: Do jakich typowych problemów programowanie funkcjonalne nie pasuje?

text: Programowanie funkcjonalne to paradygmat deklaratywny. Jedną z mocnych stron FP jest unikanie skutków ubocznych. Mówi się, że dla niektórych problemów FP nie pasuje. Do jakich typowych problemów nie pasuje programowanie funkcjonalne?


title: jaki jest dobry stos dla aplikacji typu oprogramowanie jako usługa (SAAS)?

text: Zaangażujemy duże korporacje do pomocy w prowadzeniu różnego rodzaju analiz, głównie analizy kodu aplikacji. Wymagania dotyczące przechowywania będą prawdopodobnie skromne, setki MB na klienta. Moje pytanie dotyczy przede wszystkim znalezienia stosu z istniejącymi frameworkami, najlepszymi praktykami i społecznością, która pozwoli na szybki proces rozwoju. Dobrze czuję się w środowisku .Net i skłaniam się ku Azure. jakieś pomysły?


title: Jaka jest „architektura”, która zapewnia funkcjonalność interfejsom URI na poziomie aplikacji, takim jak chrome:// i about:config w Firefoksie itp.?

text: Według Wikipedii > `about` jest wewnętrznym schematem URI (znanym również jako "schemat URL" lub, błędnie, "protokołem") w różnych przeglądarkach internetowych do wyświetlania pewnych wbudowanych funkcji. Nie jest to oficjalnie zarejestrowany schemat i nie ma standardowej składni >. moje pytanie brzmi... co "zasila" te "interfejsy"? wygląda na to, że nie ma żadnego działającego "serwera aplikacji", który konwencjonalnie obsługiwałby taki front-end - gdyby działał zdalnie... jestem pewien, że przyczyną niedostatku informacji jest to, że to wszystko łamie _psuedo-obietnicę_, że wszystko, co „robisz” w przeglądarce – nie „wpłynie” na twój system. te interfejsy _wyraźnie_ mają dostęp do zasobów i uprawnień na poziomie systemu itp.. Czy wszystkie są po prostu niestandardowymi, zakodowanymi w c podpięciem do wewnętrznego kodu aplikacji nadrzędnych - czy też są bardziej abstrakcyjne, _ui--warstwa_? Przyznaję, że mam niewielką wiedzę na temat tworzenia wtyczek, ale czy ten rodzaj funkcjonalności można osiągnąć za pomocą typowych interfejsów API wtyczek, czy są one zbyt ograniczone? Spędziłem trochę czasu w kodzie źródłowym webkitu, ale jest on tak ogromny i zawiły, że trudno jest wiele wywnioskować… wydaje się, że niezależnie od tego, jak ci dostawcy wdrażają te funkcje, mogą być atrakcyjną alternatywą, aby powiedzieć, że różne mosty specyficzne dla języka, które webkit implementuje na różnych platformach. Osobiście uważam mosty za frustrujące, co prawdopodobnie doprowadziło mnie do tego toku myślenia. . . wszelkie spostrzeżenia są doceniane.


title: Nieprzewidziany skok w sprincie... co robić?

text: Rozejrzałem się i nie mogłem znaleźć pytania, które dotyczyłoby mojej sprawy, więc pomyślałem, że opublikuję. Mam sytuację, w której jako nowy zespół natrafiliśmy na 2 nieprzewidziane skoki (czy jest lepszy termin?) podczas sprintu. „Myśleliśmy”, że wiemy, ale potem musieliśmy poszukać w połowie drogi, więc to wprowadziło skok. Moje pytania brzmią: * Jeśli mamy problem z przestojem/procesem (Jenkins wali, wymaga 8 godzin debugowania/konfiguracji przez programistę lub więcej), czy jest to skok czy coś innego? Czy tworzę skok, wrzucam go do Sprintu (w połowie sprintu), czy następnie odejmuję godziny od ogólnego sprintu (8h skok = minus 8 godzin zaplanowanych zadań?) czy po prostu kończę z niedostarczonymi elementami do następnego sprintu? * Gdybym miał szacunkowo 8 godzin na coś, to twórcy stwierdzają, że w rzeczywistości muszą zbadać więcej, czy ja też mam tam skok? usunąć czasy zadań? itp; Chcę się upewnić, że mam lepszą rękę w planowaniu tych „nieprzewidzianych” wydarzeń i mam dobry pomysł na rezultaty sprintu. Patrzę na to z perspektywy czysto Project Management, gdzie muszę raportować w górę łańcucha postępów / wypalania zadań / rezultatów.


title: Jaki rodzaj mapowania obiektowo-relacyjnego jest tutaj odpowiedni?

text: W mojej bazie danych mam tabelę, która wygląda jak ta Master(ID, Name, Attr1...). Każdy identyfikator będzie miał co najmniej 1 wpis w dodatkowych tabelach, które mają dodatkowe atrybuty. Te stoły specjalizują się w stole mistrzowskim. Spec1(MasterID, Attr2,...) Spec2(MasterID, Attr3,...) ... Więc nie jestem pewien, jak odwzorować to na projekt zorientowany obiektowo. Gdyby każdy ID mógł mieć tylko jedną specjalizację to byłoby to łatwe, master byłby klasą abstrakcyjną, a specjalizacje byłyby konkretnymi klasami dziedziczonymi, ale w tym scenariuszu pojedynczy ID może mieć wszystkie specjalizacje i mogą być dodawane lub usuwane w trakcie jego życia w bazie danych . Każda specjalizacja ma unikalne zasady biznesowe.


title: Jak należy zatwierdzać zmiany niefunkcjonalne?

text: Pracuję na małej lub średniej starszej bazie kodu i podczas pracy nad zgłoszeniem natknę się na kod, który powinien zostać wyczyszczony lub który _potrzebuję_ wyczyścić tylko po to, aby móc zrozumieć śledzenie aplikacji. Prawdziwym przykładem jest: if( !a && b ){ doCoś1(); zrobićCoś2(); zrobićCoś3(); zrobićCoś4(); zrobićCoś5(); } w przeciwnym razie ( a ){ zróbCoś1(); zrobićCoś2(); zrobićCoś3(); zrobićCoś4(); zrobićCoś5(); }inaczej jeśli( !b && ( a || c ) ){ doCoś1(); zrobićCoś2(); zrobićCoś3(); zrobićCoś4(); zrobićCoś5(); } Innym jest poprawianie literówek i języka angielskiego w komentarzach i dokumentacji w kilkunastu plikach źródłowych. Jednak często to czyszczenie nie jest związane z głównym problemem i zastanawiam się, jak najlepiej go zatwierdzić. Moim zdaniem są trzy opcje: 1. Przed poprawką: działa to chronologicznie, ponieważ jest to kolejność ich występowania, ale jeśli coś zepsują, komplikują poprawkę i utrudniają porównanie poprawki z tym, co było w produkcji. Wprowadza również dodatkowe zatwierdzenie, którym jest hałas. 2. Z poprawką: ale to przesłania faktyczne zastąpienie wadliwego kodu plikami, w których `findGeoragphy` było poprawne na `findGeography`. 3. Po naprawie: wymaga to usunięcia i wyczyszczenia, które pomogły zrozumieć kod, a następnie ponownego przetestowania poprawki, zatwierdzenia poprawki, a następnie cofnięcia się i ponownego wykonania czyszczenia. Pozwala to na najczystsze porównanie z wadliwym kodem, ale duplikuje wysiłek i może również prowadzić do fałszywych zatwierdzeń. **tl;dr:** Jaka jest najlepsza metoda wykonania kodu czyszczącego? **Kontekst:** Nie mamy testów jednostkowych ani postępów w rozwoju, ponieważ wprowadzamy zmiany, analizujemy je i przerzucamy przez ścianę do kontroli jakości, aby zweryfikować je za pomocą ręcznych poprawek regresji. Ponadto, jeśli nie wykonamy pewnych porządków formularzy, kod staje się niezrozumiały. Wiem, że to dalekie od ideału, ale to prawdziwy przedsiębiorca, który stawia jedzenie na moim stole, a nie mój wybór.


title: Czy powinienem widelec (na Github)?

text: Na Github natknąłem się na żądanie ściągnięcia, które implementuje funkcję, która mi się podoba, ale wydaje mi się, że nie jest całkiem intuicyjna i mogłaby być lepsza. Opiekunowie oryginalnego repozytorium jak dotąd odmówili zaakceptowania go (lub wyjaśnienia dlaczego). Proszono o to 3 miesiące temu, więc podejrzewam, że nie przyjmą go bez zmian. Chciałbym poprawić kod tego autora, ale nie znam etykiety: czy powinienem rozwidleć ten widelec? A może mam rozwidleć główne repozytorium i dodać drugie rozwidlenie jako kolejne źródło nadrzędne? Jeśli to drugie, w jaki sposób zapewnić przyznanie kredytu w terminie? Jakie konsekwencje ma ta opcja dla żądań ściągnięcia? EDYCJA: Chociaż doceniam opinie i pytałem o etykietę, bardziej interesuje mnie, czy istnieje jakiś techniczny lub pragmatyczny powód, aby odłączyć główny projekt i dodać twórcę „fajnej funkcji” PR jako upstream w porównaniu po prostu rozwidlając gałąź „fajnej funkcji” PR. Bazując na odpowiedzi jan-hudeca, skłaniam się ku fork main + dodaj nowy upstream. Podejrzewam, że łatwiej byłoby aktualizować mój widelec i nie polegać na tym innym współpracowniku, aby wprowadzać zmiany.


title: Inicjalizacja tablicy znaków za pomocą łańcucha

text: Nie pamiętam, jak dotarłem do wątku, ale czytałem jego odpowiedzi i jedna z nich stwierdza, że nigdy nie należy inicjować `char[]` literałem ciągu. Moje pytanie: Czy inicjowanie tablicy znaków za pomocą literału ciągów znaków to zła praktyka, czy to tylko opinia autora? * * * Oto oryginalne pytanie: > **strlen vs sizeof** > > Kod: #include <stdio.h> #include<string.h> main() { char string[] = "październik"; strcpy(ciąg, "wrzesień"); printf("rozmiar %s to %d długość to %d\n\n", string, sizeof(string), strlen(string)); zwróć 0; } > w prawo. rozmiar powinien być długością plus 1 tak? > > to jest wynik > > `rozmiar września to 8, a długość to 9` > > rozmiar z pewnością powinien wynosić 10. to tak, jakby obliczał sizeof string przed > jest zmieniany przez strcpy, ale długość po. >> Czy coś jest nie tak z moją składnią, czy co?


title: Jak zachować kolejność przychodzących żądań na serwerze wielowątkowym

text: Chcę napisać wielowątkową aplikację serwerową, która będzie w stanie przetwarzać żądania w sposób wielowątkowy, zachowując kolejność wykonywania przychodzących żądań tego samego klienta. Na przykład, jeśli klient A wyśle wiadomość M1, a następnie wiadomość M2, serwer wielowątkowy musi przetworzyć te żądania w dokładnie tej samej kolejności, najpierw M1, a następnie M2. Nie ma jednak gwarancji, że wątki przetwarzające te przychodzące żądania przetwarzają te komunikaty w tej samej kolejności. Na przykład wątek T1 zużywa wiadomość M1, wątek T2 zużywa wiadomość M2 i kończy przetwarzanie wiadomości i jest w stanie zaakceptować dalsze wiadomości zanim T1 zakończy swoje zadanie. Po przetworzeniu wiadomości wynik zostanie przekazany do innego procesu do dalszego przetwarzania (z którego w całym obliczeniu istnieje tylko jeden), proces ten zaplanuje wysłanie odpowiedzi do klienta. Te wielowątkowe wątki istnieją tylko w celu wstępnego przetwarzania danych dla innego procesu. Ten konkretny problem brzmi jak problem z charakterystyką potoku, najpierw M1, potem M2, potem M3 itd. Chciałem jednak jak najwięcej zrównoleglić, aby osiągnąć większą liczbę cykli komunikacji między serwerem a klientami. Jaka architektura/wzór/technika dobrze nadaje się do takiego zadania?


title: Zanurz się po raz pierwszy w programowanie C++ GUI

text: Zaraz zaczynam naukę C++. Obecnie jestem programistą PHP, wiem również jak pisać kod w Javie oraz tworzyć aplikacje Java GUI. Przejrzałem http://www.cplusplus.com/doc/tutorial/ i dla mnie wygląda to dość podobnie do tego, co już znam, tylko kilka różnic w składni językowej tu i tam. Chcę stworzyć aplikację C++ GUI i z tego, co zbadałem, wydaje się, że używanie `Qt` i `Qt Creator` jest dobrym miejscem do rozpoczęcia. Czy używanie `Qt` i `Qt Creator` to dobry/przyzwoity sposób na rozpoczęcie nauki programowania GUI w C++, czy też powinienem to zrobić w inny sposób?


title: Czy dług techniczny powinien być zaplanowany jako funkcja czy zadanie (lub błąd)?

text: Do mojej tablicy Pivotal Tracker dodałem kilka historyjek użytkowników, które dotyczą pewnego technicznego długu. Czy powinienem traktować je jako funkcje (utrzymujące mój poziom prędkości) czy jako obowiązki/błędy (obniżające prędkość)? Rozumiem, że na dłuższą metę nie będzie miało żadnej różnicy, czy konsekwentnie robię jedno, czy drugie, ale za każdym razem, gdy dodam historię zadłużenia technicznego, muszę podjąć decyzję. Kilka myśli: * W rzeczywistości nie są to błędy, niczego nie psują * Użytkownicy o nic nie prosili, ponieważ jest to implementacja niskopoziomowa, która ich nie dotyczy, ale ułatwi długoterminowy rozwój * Jeśli zdefiniować cechy jako historie, które dodają wartości dla użytkowników, cóż a) nie, ponieważ użytkownicy nie zobaczą żadnych bezpośrednich korzyści, ale b) robią to, ponieważ umożliwiają dalszy rozwój/utrzymanie, co _daje_ wartość dodaną, po prostu nie w tej chwili nie decyduję, czy faktycznie wykonać pracę, ani kiedy ją zaplanować, po prostu wiem, co powinienem nazwać długiem technicznym w moim narzędziu do zarządzania projektami i dlaczego.


title: Gdzie mogę znaleźć ćwiczenia projektowe do pracy?

text: Uważam, że ćwiczenie umiejętności rozwiązywania problemów jest ważne. Pisanie własnych mini-projektów to jeden sposób, ale inny to próba rozwiązywania problemów publikowanych w Internecie. Łatwo znaleźć interesujące quizy programistyczne online, które wymagają zastosowania sprytnych algorytmów do rozwiązania — jednym z dobrze znanych przykładów jest Project Euler. Jednak w wielu rzeczywistych projektach _projekt_ oprogramowania - zwłaszcza w początkowych fazach - ma duży wpływ i na późniejszych etapach nie można go tak łatwo modyfikować, jak zwykłe algorytmy. W celu doskonalenia tych umiejętności szukam dowolnego zbioru problemów projektowych. Kiedy mówię "projekt", mam na myśli abstrakcyjny projekt rozwiązania programowego - na przykład jakie będą moduły i jakie są między nimi zależności, w jaki sposób dane będą przepływać w programie, jakie dane należy zapisać w programie. bazy danych itp. Problemy projektowe to te problemy, które są krytyczne do rozwiązania na wczesnych etapach każdego projektu, ale ich rozwiązaniem jest diagram tablicy bez ani jednej linii kodu. Oczywiście tego rodzaju problemy nie mają jednego poprawnego rozwiązania, ale szczególnie ucieszy mnie każde miejsce, które pokazuje również plusy i minusy typowych rozwiązań, które można zastosować do rozwiązania problemu.


title: Alternatywy dla tradycyjnego uwierzytelniania hasłem

text: Logowanie przez stronę trzecią to doskonała funkcja, która pojawiła się w ostatnich latach, odciążając umysł programistów, dzięki czemu muszę pamiętać mniej bezużyteczne hasła. Nie używam tego samego hasła do wielu stron, używam algorytmu: na przykład jeśli robię hasło do StackOverflow to jego nazwa zaczyna się na S więc wstawiam S, a następnie moje tajne zdanie, więc hasło do SO będzie coś w stylu `i81b4uS`, np. moje tajne wyrażenie plus trochę tokena, który sprawia, że hasło nie jest takie samo dla każdego, ponieważ nie chcę katastrofy, jeśli jakaś strona zapisze moje hasło w postaci zwykłego tekstu i zostanie zhakowana (wtedy ktoś miałby dostęp do wszystkich moich materiałów online, gdybym użył takie samo hasło). Metryki biologiczne są dobre, ale tej technologii nie ma. W przyszłości prawdopodobnie będziemy musieli odblokować cały nasz materiał online tylko w jednym momencie, zamiast zapewniać systemowi tak wiele blokad. Weryfikacja dwuetapowa Google jest elastyczna i dobra, ale nie jest idealna. Czy istnieją inne, być może nowsze lub mniej znane metody uwierzytelniania, na przykład, które upraszczają typowe przypadki odnawiania hasła (gdzie często nużące jest sprawdzanie poczty w miejscach, w których często jest to przerywane, i podawanie starego hasła w celu jego zmiany do nowego itp.) i zresetuj hasło, co przypomina odnawianie hasła? Nie pytam o szczegóły, który algorytm, ale raczej, czy są nowsze i bardziej efektywne przepływy, takie jak logowanie strony trzeciej, które sprawiło, że założyłem konto w SO, gdzie wylądowałem ze mną na koncie Google, to mniej obciąża umysł i pamięć ręczna użytkownika i które są również bezpieczne? Na mojej stronie oferuję uwierzytelnianie podobnie jak SO i SE, gdzie możesz zalogować się na mojej stronie tak samo jak SO z kontami Google, FB, Linkedin, Yahoo lub niestandardowymi. Użyłem modelu użytkownika webapp2 w celu ułatwienia logowania i biblioteki simpleauth dla GAE (python). Szczególnie dobre byłoby całkowite pozbycie się poczty e-mail i nie zawracanie użytkownikom głowy ich adresem e-mail. Niektórzy użytkownicy niechętnie zostawiają swój adres e-mail, a e-mail jest często zbyt bezpośrednim kontaktem. Tak wielu użytkowników ma smartfony i androidy, że może istnieć jedna aplikacja dla wielu witryn, która przeprowadza uwierzytelnianie za pomocą smartfona lub aplikacji komputerowej lub dużej firmy zewnętrznej, takiej jak Google, FB lub Yahoo, gdzie mogę zaoferować Google, FB , Yahoo, LinkedIn, aby użytkownik mógł nie tworzyć nowego hasła, ponieważ może to być bolesne, jeśli zapamiętałeś już 40 haseł do różnych witryn i usług.


title: Jak dodać ścieżkę katalogu dokumentów w pliku javascript w iOS -MetaIO SDK

text: Pracuję nad projektem przy użyciu **MetaIO SDK (AREL)**. Działa dobrze ze wszystkimi plikami w pakiecie (ipa), ale próbuję automatycznie pobrać animację za pomocą usługi sieciowej. Zostanie on zapisany w katalogu dokumentów. > Ponieważ AREL używa pliku javascript, muszę nadać plikowi javascript adres > katalogu dokumentów, ale nie mam dostępu do iOS > (ponieważ Metaio nie daje mi bezpośredniego dostępu do widoku internetowego, jak jest nie > żadne inne żądanie http, więc nie można użyć delegata). Wszystko czego potrzebuję to> window.MyImagePath = "/Users/mac/Library/Application Support/iPhone> Simulator/6.0/Applications/E02C5AE0-DFF0-4803-8C7F-134023077BD0/Documents/placeholder.png" W moim pliku JS, który jest nie w katalogu dokumentów. Próbowałem wysłać te informacje przez schowek (safari umożliwia dostęp do schowka tylko wtedy, gdy wystąpi zdarzenie wklejania) i przez usługę internetową, która również nie jest pomocna. Czy ktoś może zaproponować lepsze rozwiązanie, proszę?


title: Podzakresy w Pascalu

text: Czytam trochę kodu Pascala i wszystko jest całkiem proste z wyjątkiem podzakresów. W programie, który czytam jest zmienna `d` z deklaracją typu:`array[0..22] of 0..15`; mamy wtedy następującą procedurę: var a:integer; rozpocznij a:=0; podczas gdy k>0 zaczyna się k:=k-1; a:=(a+dig[k]*dwa) dział 10; koniec; round_decimals:=(a+1) dział 2; koniec; Gdzie `k` jest zmienną typu `0..63`. Więc skoro `k` może znajdować się powyżej zakresu indeksu `dig`, jak działa ten kod? — To rutyna wykonywania arytmetyki stałoprzecinkowej, więc zakładałbym, że indeksy tablicy przepełniają się w jakiś kontrolowany sposób, ale gdyby ktoś mógł wyjaśnić dokładne zachowanie, byłbym naprawdę szczęśliwy. Ponadto, czy tablice Pascala przypisują w jakiś znany sposób? Było wiele wersji Pascala i myślę, że ten program jest napisany dość „niezależny od wersji Pascala”, ale nie mogę znaleźć zbyt wiele wyjaśnień na temat subtelnej semantyki wyrażeń podzakresów.


title: Kim jest konstruktor? A czym są metody set/get w Javie?

text: Mam trudności ze zrozumieniem konstruktorów i metod set/get. Do czego są używane? Jeśli ktoś może wyjaśnić trochę więcej, mam nadzieję, że dostanę moment AHA.


title: Jak zmierzyć właściwy czas na sprowadzenie nowego klienta?

text: Moja rozwijająca się firma ma zespół programistów pracujących nad kilkoma oddzielnymi projektami. Nasi programiści polegają na nas, aby mogli działać, a my polegamy na nich, aby uszczęśliwiać naszych klientów. Jak możesz sobie wyobrazić, nasze projekty mają różne daty rozpoczęcia i zakończenia. Obowiązkiem firmy wobec deweloperów jest upewnienie się, że klienci czekają na skrzydłach, aby po zakończeniu jednego projektu mógł rozpocząć się kolejny. Na razie znalezienie klientów nie jest problemem i nie jest tematem tego pytania. To, co staram się teraz przemyśleć, to jak najlepiej zmierzyć/przejrzeć/ocenić daty zakończenia projektów, aby wiedzieć, kiedy muszę zacząć zabiegać o następnego klienta. Czy istnieje narzędzie, które to robi? Jeśli to tylko arkusz kalkulacyjny, jak mógłby wyglądać?


title: Domyślna vs IMPL podczas implementacji interfejsów w Javie

text: Po przeczytaniu Czy nazwy pakietów powinny być w liczbie pojedynczej czy mnogiej? Przyszło mi do głowy, że nigdy nie widziałem porządnej debaty na temat jednego z moich ulubieńców: nazewnictwa implementacji interfejsów. Załóżmy, że masz interfejs „Zamówienie”, który ma być zaimplementowany na różne sposoby, ale istnieje tylko początkowa implementacja, gdy projekt jest tworzony po raz pierwszy. Czy wybierasz „DefaultOrder” lub „OrderImpl” lub jakiś inny wariant, aby uniknąć fałszywej dychotomii? A co robisz, gdy pojawia się więcej wdrożeń? **I najważniejsze... dlaczego?**


title: Czy zamówiony jest backlog scrum sprint?

text: Obecnie artykuł Wikipedii Scrum definiuje „Backlog Sprintu” jako: > Lista priorytetowych zadań do wykonania podczas sprintu. Rozumiem, że „Backlog Produktu” jest listą priorytetową, ale „Backlog Sprintu” nie ma zamówienia. Szukam ostatecznego odniesienia do odpowiedzi.


title: Gdzie powinny znajdować się „funkcje wyświetlania” w aplikacji internetowej MVC?

text: Używam Yii Framework, który jest strukturą MVC php, która jest bardzo podobna do standardowej struktury MVC opartej na sieci Web. Chcę wyświetlić powiązane dane z tabeli wiele do wielu jako listę ciągów w moim widoku. Zakładając schemat tabeli, taki jak: tag { id, nazwa } post { id, tytuł, treść, data } tag_postu { post_id, tag_id } Post będzie wyglądał jak: Data: 27.09.2012 Tytuł: Jakiś Tytuł Treść: bla bla bla ... Tagi: Inteligentne Zabawne Fajne Informacyjne Mogę to osiągnąć robiąc coś takiego w moim widoku posta: <?php echo join(' ', array_map(function($tag) { return $tag->name; }, $ model->tagi)); ?> (gdzie `$model->tags` jest tablicą obiektów `Tag` powiązanych z moim modelem) Moje pytania to: 1. Czy taka ilość kodu/logiki jest w porządku w widoku? (Osobiście uważam, że wolałbym po prostu odwołać się do właściwości lub wywołać pojedynczą funkcję.) 2. Jeśli nie, gdzie powinien znajdować się ten kod? W modelu? kontroler? pomocnik? Potencjalnie mogę chcieć użyć również w innych widokach. Ostatecznie uważam, że jest to wyłącznie problem z wyświetlaniem, który kazałby mi myśleć, że powinien być w widoku, ale potem muszę powtórzyć kod w dowolnym widoku, w którym chcę go użyć.


title: Najbardziej wydajna implementacja drzewa w C++

text: Muszę napisać drzewo, w którym każdy element może mieć dowolną liczbę elementów potomnych iz tego powodu każda gałąź drzewa może mieć dowolną długość. Drzewo na początku będzie tylko otrzymywało elementy, a następnie będzie używane wyłącznie do iteracji, chociaż jego gałęzie nie mają określonej kolejności. Drzewo będzie miało kilka milionów elementów i musi być szybkie, ale także wydajne pamięciowo. Mój plan tworzy klasę węzła do przechowywania elementów i wskaźników do jej dzieci. Gdy drzewo jest w pełni skonstruowane, zostanie przekształcone w tablicę lub coś szybszego i jeśli to możliwe, zostanie załadowane do pamięci podręcznej procesora. Budowa i poszukiwanie na drzewie to dwa różne problemy. Czy mogę skupić się na tym, jak indywidualnie rozwiązać każdy problem w najlepszy sposób? Budowa musi być jak najszybsza, ale może wykorzystywać pamięć do woli. Następnie przekształcenie w format, który daje nam szybkość podczas iteracji gałęzi drzewa. Powinna to być tablica, aby uniknąć przechodzenia tam iz powrotem z pamięci RAM do pamięci podręcznej w każdym elemencie drzewa. Tak więc prawdziwe pytanie brzmi, jaka jest struktura do zaimplementowania drzewa, aby zmaksymalizować szybkość wstawiania, jak mogę przekształcić ją w strukturę, która zapewni mi najlepszą szybkość i pamięć?


title: Projektowanie modułowej aplikacji usługowej

text: Zastanawiam się nad zaprojektowaniem nowego rozwiązania, które jest z natury bardzo modułowe i chciałbym stworzyć strukturę, która wspiera ten projekt, aby umożliwić łatwą rozbudowę w przyszłości, jasne rozdzielenie problemów, licencjonowanie według modułu itp. Większość tego, co mam znalezione w sieci o modułowych lub złożonych aplikacjach są zorientowane na interfejs użytkownika, koncentrują się na Silverlight, WPF itp. W moim przypadku opracowuję aplikację usługi WCF, która będzie używana przez innych programistów pracujących nad różnymi projektami interfejsu użytkownika. **Tło** Celem mojego projektu jest stworzenie scentralizowanego źródła logiki biznesowej/domeny do obsługi kilku naszych aplikacji biznesowych, które obecnie powielają procesy, reguły itp. I chociaż nie wszystkie korzyści z modułowości zostaną osiągnięte, ja' Chciałbyś skorzystać z okazji, aby ustanowić ramy, które będą wykorzystywać te części, z których możemy skorzystać. Projekt rozpocząłem od spojrzenia na API udostępniane przez aplikację usługi. Oczywiste jest, że usługi można podzielić według linii modułowych, o których myślałem. Na przykład będę miał usługi FinanceService, InventoryService, PersonnelService itp., które grupują moje operacje usługowe, aby zapewnić wysoką spójność w interfejsie API przy jednoczesnym utrzymaniu niskiego sprzężenia, aby klienci musieli korzystać tylko z usług, które są istotne dla ich aplikacji. Ma dla mnie sens, że mogę wtedy mieć osobne moduły dla każdej z tych usług, takich jak MyApp.Finance, MyApp.Inventory, My.Personnel i tak dalej. Problemy związane z przekrojami i typy udostępnione byłyby w zestawie udostępnionym MyApp. Odtąd trochę się kręcę. (Och, powinienem wspomnieć, że będę używał kontenera IoC do Dependency Injection, aby aplikacja była luźno połączona. Nie wspomnę o której, ponieważ nie chcę otwierać puszki Pandory!) W MyApp.ServiceHost, Stworzę plik hosta usługi (.svc) odpowiadający każdemu modułowi, na przykład FinanceService.svc. Host usługi potrzebuje nazwy usługi, która odpowiada informacjom w pliku konfiguracyjnym zawierającym interfejs definiujący kontrakt usługi. Konfiguracja IoC jest następnie używana do mapowania konkretnej implementacji używanego interfejsu. **1\. Czy warstwa usług powinna implementować API i delegować do modułów, czy też moduły powinny być samodzielne (w tym, że zawierają wszystko, co jest związane z tym modułem, w tym implementację usługi)?** Jednym ze sposobów podejścia do problemu jest posiadanie MyApp .Usługi „moduł” zawierający realizację umów serwisowych. Każda klasa usług po prostu deleguje do innej klasy int eh odpowiedni moduł, który zawiera logikę domeny dla operacji. Na przykład klasa FinanceService WCF w MyApp.Services deleguje do innego interfejsu, który jest zaimplementowany w module Finance w celu wykonania operacji. Umożliwiłoby mi to utrzymanie cienkiej fasady usługi i „podłączenie” implementacji do implementacji usługi oraz wyeliminowanie potrzeby martwienia się modułów na przykład o WCF. Z drugiej strony może lepiej jest, aby każdy moduł był samowystarczalny, ponieważ ma interfejs i implementację. Host usługi odnosi się do interfejsu kontraktu usługi znajdującego się w module, a IoC jest również skonfigurowany do korzystania z odpowiedniej implementacji z modułu. Oznacza to, że dodanie nowego modułu można wykonać bez zmian w warstwie usług innych niż dodanie nowego pliku .svc i informacji o konfiguracji IoC. Zastanawiam się nad wpływem, jeśli przełączę się ze standardowego WCF na interfejs usługi RESTful lub może przejdę do usług RIA lub coś takiego. Jeśli każdy moduł zawiera realizację umowy serwisowej, to muszę dokonać zmian w każdym module, jeśli zmienię technologię obsługi lub podejście. Ale jeśli fasada jest osobnym modułem, wystarczy wymienić tę część, aby dokonać zmiany. Moduły musiałyby wtedy zaimplementować inny zestaw kontraktów (interfejsów), ewentualnie zdefiniowany we wspólnym zestawie??? **2\. Jaki jest najlepszy sposób obsługi współdzielenia zasobów między modułami i/lub zależności między modułami?** Weźmy na przykład operację odbierania. Na pierwszy rzut oka wydaje się, że ma to sens w module Inventory, ponieważ przyjmowanie towarów jest funkcją inwentaryzacji. Istnieje jednak również aspekt finansowy polegający na tym, że musimy wygenerować paragon i autoryzować płatność. Z jednej strony spodziewałbym się, że do komunikacji operacji użyję pewnego rodzaju zdarzeń domeny / wiadomości. Moduł Inventory generuje zdarzenie GoodsReceivedEvent, które jest obsługiwane przez moduł Finanse w celu wygenerowania paragonu i zainicjowania procesu płatności. Oznacza to jednak, że moduł Finanse musi wiedzieć o pozycjach magazynowych, które zostały odebrane. Mogę po prostu odwołać się do nich za pomocą identyfikatora, ale co zrobić, jeśli potrzebuję dodatkowych informacji do paragonu, takich jak nazwa i/lub opis, koszt jednostkowy itp.? Czy ma sens, aby każdy moduł miał własną wersję elementu ekwipunku, która została zaprojektowana tak, aby odpowiadała potrzebom tego modułu? W takim przypadku moduł finansowy musiałby przeprowadzić własne wyszukiwanie pozycji magazynowych podczas obsługi zdarzenia GoodsReceivedEvent. A może muszę teraz umieścić obiekty mojej domeny we wspólnej lokalizacji (w którym to momencie stracę trochę spójności)? ... Celowo użyłem tego przykładu, ponieważ dużo pracowałem z różnymi systemami ERP i wiem, że są one zaprojektowane z tego typu modułowością - po prostu nie wiem jak. Nie wspominam o tym wyraźnie powyżej, ale wolę kierować się zasadami Domain Driven Design przy projektowaniu rozwiązania i wierzę, że ten rodzaj modułowości pasuje do tego obszaru. Jakakolwiek pomoc w zrozumieniu tego jest bardzo mile widziana.


title: Ile wysiłku powinieneś włożyć w młodszego programistę?

text: W którym momencie należy się poddać? Próbowałem im pomóc, każąc mi cień. Zgadzamy się na chwilę przerwy, a potem znikają na chwilę w akcji... potem po prostu wracają do swojego biurka. Nawet kiedy wiem, że to zrobili, część mnie czuje, że nie powinnam ich szukać, ale powinni wykazywać zainteresowanie nauką. Szczerze mówiąc, to trochę czasu, kiedy nie muszę wyjaśniać rzeczy na bieżąco, kiedy mogę to zrobić. Czy oczekuję zbyt wiele, aby oczekiwać, że jeśli chcą się uczyć, upewnią się, że wiem, że są gotowi i chętni? Chodzą na spotkania, na które nie kazano im uczestniczyć… dobrze, ale potem siadają w kącie i śpią… źle. Nawet nie wiem, co z tym zrobić. Czasami daję im coś małego do zrobienia, a oni robią to świetnie, więc daję im coś mocniejszego i całkowicie zawodzą, mocno. Sprawdzają rzeczy bez ich testowania. Część mnie uważa, że może powinnam spędzać z nimi więcej czasu, ale jednocześnie nie widzę dużego zainteresowania i naprawdę, szczerze, nie mam czasu na uczenie w kółko tych samych rzeczy. Czasami dostaję pytania, na które naprawdę, bardzo łatwo odpowiedzieć, jeśli po prostu wykonasz trochę własnej pracy, próbując się tego dowiedzieć. Innym razem o nic mnie nie pytają. Jestem pewien, że mógłbym sobie radzić lepiej, ale szczerze… Naprawdę nie chcę już.


title: Niezwykle trywialne pytanie do rozmowy telefonicznej C++

text: Moja firma prowadzi obecnie rozmowę kwalifikacyjną na stanowisko programisty, a niepokojąco duża liczba kandydatów z dobrymi życiorysami kończy się całkowitymi oszustwami. Mamy pisemny test techniczny, który sprawdza się w tym celu (początkowo był przeznaczony dla stażystów, ale okazało się, że nawet kandydaci przeprowadzający rozmowy kwalifikacyjne na wyższe stanowiska fatalnie go zawiedli), ale chciałbym zadać kilka pytań, które pozwolą nam filtrować wyklucz te osoby z < 10 min. inwestycja czasu. Próbuję wymyślić bardzo trywialne pytanie dotyczące C++ (lub nawet tylko programowania), na które można łatwo odpowiedzieć przez telefon. Celem nie jest bycie trudnym, ani nawet średnio skomplikowanym, tylko po to, by wyeliminować ludzi, którym nie udałoby się zaliczyć „wstępu do programowania” w połowie semestru. Jak dotąd najlepsze, co wymyśliłem, to „Załóżmy, że jestem stażystą, którego mentorujesz: czy możesz wyjaśnić mi w prostych słowach różnicę między wektorem a listą i kiedy powinienem użyć lub inny". Jakieś inne pomysły?


title: Czy ma sens pisanie skryptów budujących w C++?

text: Używam CMake do generowania moich projektów IDE/makefiles, ale nadal muszę wywoływać niestandardowe „skrypty”, aby manipulować moimi skompilowanymi plikami, a nawet generować kod. W poprzednich projektach używałem Pythona i było OK, ale teraz mam poważne problemy z zarządzaniem wieloma zależnościami w dwóch bardzo dużych projektach, nad którymi pracuję, więc chcę wszędzie zminimalizować zależności. Ktoś zasugerował mi użycie C++ do pisania skryptów budujących zamiast dodawania zależności językowej tylko w tym celu. Same projekty używają już C++, więc widzę kilka zalet: * do zbudowania całego projektu potrzebny byłby tylko kompilator C++ i CMake, nic więcej (wszystkie pozostałe zależności to C lub C++); * Bezpieczeństwo typu C++ (przy używaniu nowoczesnego C++) sprawia, że wszystko jest łatwiejsze do "poprawnego"; * jest to również język, który znam lepiej, więc jestem z nim swobodniej, nawet jeśli jestem w stanie napisać dobry kod w Pythonie; * potencjalny wzrost szybkości wykonania (ale nie sądzę, że będzie to naprawdę odczuwalne); Myślę jednak, że mogą być pewne wady i nie jestem pewien rzeczywistego wpływu, ponieważ jeszcze nie próbowałem: * może być dłużej napisanie kodu (to powiedział, że nie jestem pewien, ponieważ jestem wystarczająco wydajny w C++, aby napisać coś, co działa szybko, więc może dla tego systemu nie byłoby tak długo napisać) (czas kompilacji nie powinien być problemem w tym przypadku); * Muszę założyć, że wszystkie pliki tekstowe, które odczytam jako dane wejściowe, są w UTF-8, nie jestem pewien, czy można to łatwo sprawdzić w czasie wykonywania w C++, a język nie sprawdzi tego za Ciebie; * biblioteki w C++ są trudniejsze w zarządzaniu niż w językach skryptowych; Brakuje mi doświadczenia i dalekowzroczności, więc może brakuje mi zalet i wad. Więc pytanie brzmi: czy jest sens używać do tego C++? czy masz doświadczenia do zgłaszania i czy dostrzegasz zalety i wady, które mogą być ważne?


title: Czy istnieje kolejność do przeczytania w witrynie dla programistów Androida dla nowego użytkownika Androida?

text: Podsumowując: mogę kupić książkę, ludzie mówią „Po prostu przeczytaj stronę dewelopera”, lubię być karmiony łyżką wczesną nauką o technologii, jaka ścieżka przez stronę dewelopera da mi to, czego potrzebuję (to znaczy , przykłady bezpośrednio związane z omawianą sekcją, jasną ścieżkę itp.). Ciągle widzę, że nie muszę kupować książki o programowaniu Androida, że powinienem po prostu przeczytać stronę programisty Androida, ponieważ zawiera wszystko, co muszę wiedzieć. Widzę to bardziej jako picie z węża strażackiego. Ale jestem jedną z tych osób, które lubią, gdy poznaje się podstawy. Lubię poszerzać swoją wiedzę, zamiast być wrzucanym do dokumentacji referencyjnej. Lubię też mieć pewność, że przeczytałem wszystkie/większość omawianych tematów. Nie chciałbym rozwijać niewłaściwej rzeczy, ponieważ nie wiem o fragmentach, dostawcach treści lub czymkolwiek. Tak więc, skoro jest to świetne źródło informacji, lepsze niż jakakolwiek książka (nie potrzebujemy żadnych śmierdzących książek), w jaki sposób mam przemierzać witrynę, aby uzyskać informacje w taki sam sposób, w jaki przedstawiałaby je książka?


title: Odwrócenie kodu na lewą stronę (styl funkcjonalny) w porównaniu do paradygmatu OO

text: Znalazłem ten artykuł Turning Your Code Inside Out i chcę wiedzieć, jak to podejście opisane w artykule jest dla programistów/języków OO. Czy ten styl projektowania jest używany w programistach/językach OO? Jakie są wady i zalety tego podejścia w języku OO? **Aktualizacja:** obiekty OO mają stan i zachowanie, projekt opisany w artykule jest bezstanowy. To nie tylko zasada pojedynczej odpowiedzialności. (Jeśli mówię gówno, proszę mi wyjaśnić, a nie tylko głosy wady/zamknięcia)


title: Podejście Service Design - jedna ogólna operacja i jej konsekwencje

text: Gorącym tematem w naszej organizacji jest podejście do projektowania usług. Pierwsze podejście - zespół chce zaprojektować usługi, które zasadniczo mają jedną operację, mogą pobierać dowolny XML i zwracać komunikat XML odpowiedzi. Operacja i parametry znajdują się w komunikacie XML żądania. Po odebraniu wiadomości usługa określa żądane działanie/metodę. Przytaczane powody to łatwość wdrożenia i elastyczność wprowadzania przyszłych operacji. Drugie podejście — druga grupa jest nieugięta w kwestii dobrze zdefiniowanych umów serwisowych i konkretnych komunikatów. Przytaczane powody to lepsza wydajność, walidacja wiadomości i wersjonowanie. To jest również moje preferowane podejście. Jakie są plusy i minusy? Czy mogą być wyzwania związane z wprowadzeniem ESB później w architekturze, jeśli wybraliśmy pierwsze podejście?


title: Dlaczego granica funkcji liniowej jest taka sama jak granica równania kwadratowego

text: Uczę się algorytmów i natrafiłem na coś bardzo interesującego. Asymptotyczne ograniczenie równania liniowego `(a * n)+b` to `O(n^2)`, dla wszystkich `a` > 0. Jest to takie samo jak `a * n^2 + b * n + c`, co jest zaskakujące.


title: Jakie są podejścia do tworzenia rozwijanych menu kontynentu/kraju/miasta?

text: Jak łatwe (lub trudne) jest posiadanie rozwijanego menu Kontynent/Kraj/Miasto? Gdzie wybrać z menu rozwijanych (na przykład): 1 - Europa 2 - Wielka Brytania 3 - Londyn, a następnie wpisać prowincję/obszar (na przykład: Essex). Realistycznie rzecz biorąc, ile czasu powinno zająć doświadczonemu programiście internetowym napisanie powyższego kodu, a także powiązanie tego wyboru z funkcją przeglądania i przechowywaniem bazy danych? Nie mam jeszcze bazy geograficznej i zastanawiam się, jaki jest najszybszy i najtańszy sposób dodania jej do rozwijanego menu. Czy jest jakiś sposób na zdobycie tej geograficznej bazy danych za darmo? Widzę tego typu rozwijane menu geograficzne w tysiącach stron internetowych, ale mam problem z wdrożeniem go JAK NAJSZYBCIEJ. * * * Kontynuacja: Tks Wszystkie x Twoje dotychczasowe odpowiedzi i komentarze. Słyszę, co mówisz. Rozumiem, że zdarzają się rzadkie przypadki Krajów o wielu (takich samych) nazwach miast i że może być dyskusyjne, czy kraj należy do określonego kontynentu/regionu, czy nie (patrz Rosja x przykład, Europa czy Azja?). W każdym razie spójrz na przykład na ten ekran rejestracji na stronie http://www.couchsurfing.org/register.html Moje pytanie brzmi: Skąd mogę uzyskać tę listę (Kraje/Miasta) i jak mogę utworzyć ta tablica? Ręczne kopiowanie go gdzieś indziej (co zajęłoby mi wieki) czy są gotowe listy, które można pobrać skądś za darmo? * * * Kontynuacja n2: Nie ma mowy, żebym przepisał całą planisferę! Do pewnego stopnia zgadzam się, że liczba krajów na tej planecie nie jest ustalona i ta sama kwestia jest dyskusyjna (wygooglowałam: „Ile krajów jest na świecie?” i zdałam sobie sprawę, że są różne odpowiedzi , jednak nie mam czasu, aby być na bieżąco z ciągle zmieniającym się krajobrazem politycznym i angażować się w taką debatę). Niezależnie od poniższej kłótni pomiędzy Komentatorami, wystarczy proste i praktyczne rozwiązanie: gotowa lista (baza danych) Krajów/Miast (do wykorzystania jako _Array) w moim DropDownMenus, dokładnie taka jak ta na http:// www.couchsurfing.org/register.html Czy ktoś ma jakąś wskazówkę, skąd wziąć tę listę?


title: Jakie jest największe wsparcie, jakie szef może udzielić swoim programistom?

text: Kupowanie najlepszego sprzętu, płacenie najcenniejszej premii lub nagrody, uprzejme traktowanie, zapewnianie możliwości ulepszenia itp.? Chcemy poprawić produktywność naszego zespołu programistów. Chcemy zobaczyć, co można uznać za największe wsparcie (lub ogólnie dobre wsparcie), więc od tego możemy zacząć.


title: Czy powinienem używać try catch w moich metodach testowych?

text: Robię testy jednostkowe. Próbuję przetestować jedną funkcję. Nazywam to z mojego komponentu testowego. Ale jeśli zdalna funkcja nie może obsłużyć wyjątku, mój tester również otrzyma wyjątek, jak sądzę. Czy więc powinienem się martwić o wyjątek w moim komponencie testera? Dziękuję. **EDYTUJ:** PS: Zgłaszanie błędu jest dobre, ale tylko w przypadku innych funkcji, nie dla użytkowników końcowych, dopóki nie jest to ostatnia opcja! OMG napisałem cytat z programowania!!


title: Gdzie mogę znaleźć okna za pomocą szkolenia wideo c/c++?

text: Istnieje wiele kursów wideo online dotyczących programowania Windows, ale większość z nich dotyczy programowania w .net. Ale wiele zadań nie może być wykonanych przez .net, takich jak API Hook. Myślę, że aby być programistą Windows, prędzej czy później trzeba nauczyć się Windows API przez c/c++. Mam książkę _windows via c++_. Czy jest jakiś kurs wideo na temat zaawansowanego programowania natywnego systemu Windows online?


title: Odpowiednie narzędzie dla małego projektu systemu zarządzania treścią

text: Zaczynam nowy projekt w mojej głowie. Będzie to kalendarz wydarzeń. Będzie uzyskiwać informacje ze źródeł openData udostępnianych przez władze lokalne i umożliwi zarejestrowanym użytkownikom dodawanie dodatkowych wydarzeń do kalendarza. Projekt ma charakter osobisty i będzie służył mi również jako narzędzie do nauki. Od strony WWW po prostu znam HTML+CSS+PHP, ale nigdy nie korzystałem z frameworków PHP, takich jak Zend czy Symfony, ani żadnych systemów CMS, takich jak Alfresco czy LifeRay. Jaka będzie rozsądna technologia dla tego? Wiem, że po prostu umiem kodować zwykły php, ale lubię uczyć się nowych technologii, nawet jeśli rozmiar projektu wydaje się nie uzasadniać używania skomplikowanych narzędzi, bardziej odpowiednich dla większych projektów. Ciężko zorientować się, od czego zacząć po prostu czytać i nie zagłębiać się w temat, ale z przyjemnością wysłucham twoich opinii.


title: Czy moje negatywne doświadczenia stażowe są reprezentatywne dla świata rzeczywistego?

text: Jestem ciekaw, czy moje dotychczasowe doświadczenia jako stażysty są reprezentatywne dla aktualnej branży. W tle mam za sobą większą część dwóch kierunków komputerowych i matematyki na jednym z głównych uniwersytetów; Udało mi się zwyciężyć na wszystkich zajęciach i uwielbiam je wszystkie, więc myślę, że nie jestem straszny w programowaniu. Odbyłem staż w jednej z największych firm programistycznych iw połowie tego czasu byłem zszokowany wyjątkowo niską jakością kodu. Komentarze nie istnieją, wszystko to spaghetti kod, a wszystko, co może być nie tak, jest jeszcze gorsze. Zrobiłem mnóstwo korepetycji/TAingu, więc jestem bardzo przyzwyczajony do czytania złego kodu, ale główne produkty branżowe, które widziałem, przebijają to wszystko. Pracuję 10-12 godzin dziennie i nigdy nie czuję, że coś mi się udaje, ponieważ to niekończące się godziny prób wymyślenia nieudokumentowanego API lub określenia zachowania jakiejś innej części (całkowicie nieudokumentowanego) produktu. Do tej pory codziennie opuszczałem pracę, nienawidząc tej pracy i rozpaczliwie chcę wiedzieć, czy to jest to, co czeka mnie do końca życia. Czy staż wyciągnąłem krótką słomkę na staż (absurdalnie wysokie pensje sugerują, że nie jest to pozycja niskiej jakości), czy też tak wygląda prawdziwy świat?


title: Sprawdzone metody łączenia nowej wersji źródła zewnętrznego ze starą wersją, w której wprowadzono zmiany

text: Projekt, nad którym pracuję, wykorzystuje kod źródłowy zakupiony od strony trzeciej. Kod źródłowy jest dostarczany do nas w pliku zip. Przechowujemy ten kod źródłowy w kontroli wersji (TFS 2010) i rutynowo wprowadzamy w nim modyfikacje. Gdy strona trzecia wyda nową wersję zakupionego przez nas produktu, muszę połączyć ich nowy kod z naszym. Ponieważ kod, który otrzymuję, nie podlega żadnej kontroli nad wersją, bardzo trudno jest wykonać to połączenie poprawnie. Ostatnim razem, kiedy to robiłem, nie wprowadziliśmy wielu zmian. W rezultacie mogłem sprawdzić wszystkie pliki, skopiować nowe pliki na ich miejsce i naprawić wszystko ręcznie bez pomocy jakichkolwiek narzędzi scalających. Teraz, gdy mamy znacznie większy zestaw zmian, ręczne naprawianie rzeczy jest zbyt delikatne, aby było realną opcją. Czy są jakieś lepsze pomysły, czy jest to skazane na to, że za każdym razem będzie to bolesne i kruche?


title: Czy inżynierowie robotycy to także programiści?

text: W przyszłym roku będę w ostatniej klasie i zrobiłem wiele w programowaniu i elektronice. Myślę o studiowaniu robotyki, kiedy idę na studia, ale nie jestem pewien, ile będzie programowania. Czy inżynierowie robotycy są programistami? Jak dużo programowania mogę się spodziewać, jeśli zdecyduję się pójść tą ścieżką kariery?


title: Czy warto się uczyć JSF i JPA?

text: Uczestniczę w sponsorowanym przez firmę wydarzeniu szkoleniowym dla JSF i JPA, które łączy 10 dni szkolenia w 5 dni. Planuję wyciągnąć z zajęć wszystko, co mogę, ale nie ma „egzaminu końcowego”.


title: Czy podczas wdrażania aktualizacji wdrażane są wszystkie lub wybrane/zmienione zestawy?

text: Jestem programistą i mam kilka doświadczeń we wdrażaniu aplikacji internetowych, które są następujące: 1. Wdróż wszystkie pliki, a następnie zastosuj wartości konfiguracyjne odpowiednie dla środowiska. Używaliśmy tego stylu wdrażania w przypadku większych programów o długich cyklach rozwoju, a szybkie wydania nie są potrzebne ani dozwolone, chyba że w sytuacjach awaryjnych. 2. Wdrażaj tylko to, co się zmieniło; ręcznie zaktualizuj pliki konfiguracyjne za pomocą nowej lub zaktualizowanej konfiguracji w zależności od środowiska. Użyliśmy tego stylu w przypadku aplikacji internetowych, które są bardziej elastyczne, tj. poprawki i funkcje wydawane są prawie codziennie. Miałem z tym problemy wcześniej, gdzie nie wszystkie zespoły zależne od zespołu, który uległ zmianie, zostały zidentyfikowane (wartość stała była zmianą w zespole A i ta sama stała została użyta w zespole B i tylko zespół A został zidentyfikowany jako zmieniony). Która z tych 2 jest lepszą (lub najlepszą) praktyką? Rozpoczynam nowy średniej wielkości projekt, w którym wdrożenia będą odbywały się co miesiąc i chciałbym rozpocząć ten proces na wczesnym etapie.


title: Jak zapewnić, że dwie bezpieczne usługi w chmurze mogą ze sobą komunikować się tylko?

text: **Pytanie** Biorąc pod uwagę dwie usługi w chmurze, Nadawca A i Odbiorca B, komunikujące się przez HTTPS, jakie mam opcje, aby zapewnić, że Odbiorca B odpowiada tylko nadawcy A? Na potrzeby **Tło** Odbiornik generuje klucze aktywacyjne dla niektórych urządzeń z numeru seryjnego. Nasz zespół pomocy technicznej korzysta z Salesforce i tworzymy odwołania z Salesforce do usługi platformy Azure w celu wygenerowania klucza. Ponieważ żadne z nich nie znajduje się za zaporą sieciową, chcemy mieć pewność, że tylko żądanie z naszej instancji Salesforce może wygenerować klucz aktywacyjny. Pomyślałem tylko, aby stworzyć ładny długi klucz przechowywany po obu stronach, który mógłby zostać użyty do weryfikacji żądania, ale nie jestem ekspertem od bezpieczeństwa i nie wiem, czy jest coś jeszcze, co powinienem rozważyć.


title: Lepsze słowo na określenie wymagań opcjonalnych?

text: Jakie jest lepsze słowo na określenie opcjonalnego wymagania w inżynierii oprogramowania? Wyrażenie jest sprzeczne. W poprzednich projektach używałem "Wymagań innych niż podstawowe".


title: Zaprojektowanie skalowalnego i niezawodnego mechanizmu ponawiania prób

text: **Backstory** Mam aplikację Messaging Server, która jest odpowiedzialna za pośredniczenie/obsługę połączeń z poziomu aplikacji do wielu usług zewnętrznych. Celem tej aplikacji jest wyodrębnienie szczegółów technicznych związanych z wywoływaniem tych usług poza główną warstwą aplikacji. Działa to dobrze, ponieważ serwer aplikacji nie musi martwić się protokołami http/ldap itp., wcf, ftp, mydłem, ebxml itp. Po prostu wysyła "ładunek" z kilkoma identyfikatorami, a Messaging Server zajmuje się resztą. Oznacza to również, że zmiana definicji usługi nie wymaga zmiany serwera aplikacji. Dodatkowo Messaging Server jest z powrotem zakończony przez bazę danych SQL 2008, która przechowuje audyt wszystkich wysłanych wiadomości i powiązanych odpowiedzi itp. Ogólna architektura przepływu danych jest następująca: Serwer(y) aplikacji => Load Balancer => Serwer wiadomości( s) => [X] => Usługi zewnętrzne **Pytanie** Muszę zaimplementować mechanizm ponownej próby w warstwie aplikacji do przesyłania wiadomości. Intencją jest bezproblemowe odzyskanie z sytuacji, w których Messaging Server nie jest w stanie przekazać do usługi docelowej (tj. usługa nie działa, problemy z siecią, przekroczenie limitu czasu itp.), tj. problemy z punktem [X] w powyższej architekturze. **Wymaganie projektowe wysokiego poziomu:** Serwer aplikacji wysyła żądanie do serwera Messaging Server. Następnie próbuje przekazać do usług zewnętrznych. Jeśli pierwsza próba się nie powiedzie, serwer Messaging odpowiada synchronicznie serwerowi aplikacji, informując, że wiadomość jest „w trakcie ponawiania”. Następnie serwer Messaging podejmuje ponowną próbę przekazania zgodnie z umową (tzn. X ponownych prób z Y sekundami między każdą z nich). Następnie wydarzy się jedna z dwóch rzeczy: wszystkie zakontraktowane ponowienia zostaną wykonane bez powodzenia lub jedna z ponownych prób się powiedzie. W obu przypadkach wiadomość jest wysyłana z powrotem do warstwy aplikacji w celu powiadomienia o stanie żądania przesyłania wiadomości. **Kilka goty** Wiadomość do ponowienia nie może być przetrzymywana w „pamięci”, tak jakby serwer Messaging uległ awarii, wiadomość została utracona. Dodatkowo kontrakt na ponowną próbę może być 5 razy na 12 godzin, a przechowywanie danych w pamięci przez ten czas nie jest możliwe. To znaczy, że niektóre kontrakty na ponowne próby mogą być 5 razy na 5 sekund. Jeśli sieć przekazująca ulegnie awarii, a następnie zostanie przywrócona, obciążenie ponownych prób powinno zostać rozłożone na całą warstwę przesyłania wiadomości, a nie na pojedynczy serwer. **Pytanie** Komunikacja między warstwami aplikacji i wiadomości nie stanowi problemu, ponieważ ta struktura już istnieje. Jednak architektura struktury ponawiania prób w warstwie wiadomości jest nadal w powietrzu. Jak byś to zaimplementował? **Opcje, które rozważamy/rozważamy** W przypadku niepowodzenia zapisz dane ponownej próby w bazie danych, a następnie skorzystaj z usługi odpytywania, która co sekundę sprawdza bazę danych. Jeśli zostanie znaleziony komunikat, którego ponowna próba jest zaplanowana, jest on wypychany z powrotem do warstwy wiadomości za pośrednictwem modułu równoważenia obciążenia. W przypadku niepowodzenia przechowaj dane ponownych prób w bazie danych, użyj zadania CLR, aby sondować bazę danych i wypychać wiadomości zaplanowane do ponowienia z powrotem na Load Balancer **Inne informacje** Może lub może nie mieć znaczenia: * Cały kod to C# * Bazy danych to SQL 2008 * Komunikacja z warstwy aplikacji do wiadomości jest wykonywana za pośrednictwem WCF z BasicHttpBinding. * Mamy pełną kontrolę nad wszystkimi aspektami warstwy Messaging Server i nie kontrolujemy warstwy aplikacji. * Warstwa wiadomości obsługuje obecnie około 500 000 transakcji na godzinę, więc możesz sobie wyobrazić, jak szybko będą tworzone kopie zapasowe w przypadku awarii jednej z usług zewnętrznych


title: Jak dodać osobiste projekty na Androida do mojego CV, aby dostać się na rynek pracy na Androida?

text: Jestem doświadczonym programistą Java. Rok temu zacząłem programować na Androida i opublikowałem 3 aplikacje na rynku. Ale to wszystko są moje osobiste projekty. Teraz chcę wejść na rynek pracy androidów. Ponieważ moje doświadczenie z Androidem nie jest doświadczeniem korporacyjnym, czy firmy to rozważają? Jak dodać te projekty na Androida do mojego CV, aby dostać się na rynek pracy na Androida? Dziękuję


title: Jak mogę używać ikon na licencji CC-ND?

text: Tworzę aplikację desktopową Java typu open source i chciałbym użyć niektórych ikon w GUI, aby wskazać różne ustawienia, linki zewnętrzne itp. Znalazłem zestaw darmowych ikon, które są opublikowane na licencji Creative Commons Attribution-NoDerivs 3.0 Unported licencja, z której chciałbym skorzystać. Moje pytania to: * Czy umieszczenie takiej ikony w mojej aplikacji stanowiłoby adaptację lub dzieło pochodne i jako takie stanowiłoby naruszenie licencji? * Ikony są trochę za duże dla mojego przypadku użycia. Czy mogę dołączyć do aplikacji wersje pomniejszone? I czy byłaby różnica między skalowaniem ich w Photoshopie i dołączaniem tych zmodyfikowanych obrazów a dołączaniem oryginalnych obrazów i ich programowym zmniejszaniem? * Chciałbym wydać swój program na licencji Apache License 2.0. Czy ma to wpływ na to, czy mogę dołączyć ikony, czy nie? Czy muszę podjąć dodatkowe kroki, inne niż dołączenie oryginalnych informacji o prawach autorskich i licencji dla ikon w moim pliku NOTICE? Edycja: artykuł ArsTechnica zatytułowany „Obrazy Creative Commons i Ty: szybki przewodnik dla użytkowników obrazów” stwierdza, że> Bardziej subtelne zmiany, takie jak przycinanie obrazu w celu dopasowania go do strony> Szerokość, może wydawać się szarym obszarem, ale jako dopóki nie dokonasz > wystarczających zmian, aby Twoja wersja jako całość kwalifikowała się jako > oryginalne dzieło objęte prawami autorskimi, powinieneś być bezpieczny. Tak więc drugie pytanie zasadniczo brzmi: * Czy pomniejszona wersja ikony sama w sobie kwalifikuje się do praw autorskich? A jeśli odpowiedź brzmi „nie”, to nie jest to uważane za adaptację, a zatem nie jest zabronione zgodnie z warunkami licencji.


Wysokowydajna książka mysql sugeruje, że do shardowania aplikacji blogowej można umieścić dane komentarzy w 2 shardach: po pierwsze, na shard osoby publikującej komentarz i na fragmencie, w którym jest przechowywany post. Pojawia się więc pytanie, jak niezawodnie powielić te dane. Która z poniższych opcji powielania danych między fragmentami jest zalecana? _Opcja 1:_ Zrób 2 oddzielne wstawki ze skryptu PHP. _Zalety:_ a) Logika jest w warstwie aplikacji. _Wady:_ a) Użytkownik jest przetrzymywany przez 2 wkładki. b) Ta logika będzie musiała zostać zduplikowana w każdym kliencie próbującym wstawić podobne dane. Wniosek: wydaje się rozsądny. _Opcja 2:_ Utwórz tabele stowarzyszone i użyj wyzwalacza do obsługi wstawiania duplikatu. _Zalety:_ a) Warstwa aplikacji nie musi się martwić o wiele wstawek _Wady:_ a) Każdy fragment musi mieć sfederowane połączenie z każdym innym fragmentem; b) Federacja będzie działać na komputerach w sieci LAN, ale co z 2 różnymi lokacjami. c) co jeśli połączenie z serwerem sfederowanym nie powiedzie się. Wniosek: nie wydaje się dobrym pomysłem. _Opcja 3:_ Wiadomości takie jak RabbitMQ _Zalety:_ a) Różni klienci mogą wstawiać dane w jednym miejscu, a wszyscy subskrybenci mogą korzystać z wkładki. _Wady:_ a) Złożona; b) może nakładać narzuty w celu hostowania serwera wiadomości i klientów; c) nie masz pewności, jak będzie działać z usługą wyszukiwania w celu zlokalizowania odpowiednich fragmentów _Wniosek:_ Nie jestem pewien _Opcja 4:_ Twoja sugestia? Będę bardzo wdzięczny za twoją pomoc.


title: Zaprojektuj przemyślenia na temat obiektu żądania opartego na schemacie dla punktu końcowego CXF

text: Próba wyszukania sugestii projektowych w obiekcie żądania opartym na schemacie dla punktu końcowego CXF. Utworzyłem punkt końcowy CXF SOAP, który przyjmuje następujący obiekt jako dane wejściowe. Obiekt żądania będzie zawierał pola wymagane, pola nieobowiązkowe oraz pola zdefiniowane przez użytkownika. Pola wymagane są wymuszane przez schemat. Obiekt Tag jest zdefiniowany jako symbol zastępczy dla właściwości zdefiniowanych przez użytkownika. Ostatecznym celem punktu końcowego jest przekształcenie wartości w obiekt Tag i przesłanie ich do przetworzenia. public class TestServiceRequest{ @XmlElement(required = true) chroniony String url; @XmlElement(required = true) chroniony tytuł ciągu; chronione źródło ciągu; chronione tagi listy; public void setUrl(String value) { this.url = value; } public void setTitle(String title) { this.title = title; } public void setSource(String value) { this.text = value; } public List getTags() { if (tags == null) { tagi = new ArrayList(); } zwróć this.tags; } Obiekt tagu : public class Tag{ public String name; publiczna wartość ciągu; public Waga ciągu; } Fragment schematu: <xsd:complexType name="tag"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1" /> <xsd: element name = "value" type = "xsd: string" minOccurs = "1" maxOccurs = "1" /> <xsd: element name = "waga" type = "xsd: string" minOccurs = "0" maxOccurs = "1 " /> <xsd:element name="atrybut" type="tns:attribute" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name=" testServiceRequest"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="br:BaseRequest"> <xsd:sequence> <xsd:element name="url" type="xsd:string" minOccurs="1 " maxOccurs="1"/> <xsd:element name="title" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="text" ty pe="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="source" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd: element name="tags" type="tns:tag" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> < /xsd:element> Jak widać, obiekt Tag posiada dodatkowe pole o nazwie waga, które jest sednem sprawy. Waga jest polem opcjonalnym dla każdej właściwości zdefiniowanej jako wymagane (adres URL, tytuł) oraz pól opcjonalnych (źródło). Wagi są wartościami statycznymi zdefiniowanymi dla tych właściwości. Powodem, dla którego skłaniam się ku temu modelowi, jest po pierwsze, że nazwy pól właściwości (url, tytuł itp.) są zgodne ze standardem i nie mogą odbiegać. Zdefiniowanie ich w schemacie i wygenerowanie na jego podstawie żądania pozwala mi to narzucić. Użytkownik końcowy nie może używać dokładnej nazwy pola i po prostu używa zamiast tego ustawiacza, co zmniejsza zakres błędu. Co więcej, walidację schematu można łatwo zintegrować z punktem końcowym cxf, dzięki czemu konserwacja jest łatwa. Wszelkie zmiany są ograniczone do schematu. Problem z tym modelem polega na tym, że punkt końcowy usługi jawnie musi dodać wagę pól podczas konwertowania ich na obiekty Tag. Jeśli klient kiedykolwiek zdecyduje się przesłać własne wartości wagowe specyficzne dla właściwości, to ten model się zepsuje. Inną opcją jest użycie uproszczonego obiektu żądania zamiast wygenerowanego schematem. public class Tag{ public String nazwa; publiczna wartość ciągu; public Waga ciągu; } Zaletą jest to, że ten model jest prosty i elastyczny oraz umożliwia użytkownikowi definiowanie wag i innych metadanych, jeśli jest to wymagane. Problem z tym, potrzebuję wyraźnego kodu weryfikacyjnego, aby upewnić się, że wymagane pola są podane, a nazwy pól są poprawne. Oznacza to, że za każdym razem, gdy dodawane jest nowe pole, muszę dotknąć kodu, aby dodać go w ramach walidacji. Mam dylemat, aby zdecydować, jak najlepiej to zaprojektować. Może jest lepszy sposób na zrobienie tego. Każda wskazówka będzie bardzo ceniona. Dziękuję


title: Jak złożona jest dokumentacja, którą piszesz?

text: W książce, którą czytam, znajduje się rozdział dotyczący dokumentacji twojego kodu. Książka jest o PHP i opisuje kilka prostych metod, ale także opisuje kilka skomplikowanych i czasochłonnych metod (xml, xsl), takich jak DocBook. W mojej obecnej małej firmie (5 osób) nawet rzadko piszemy komentarze, ale zastanawiam się, czy w dużej firmie jak szczegółową dokumentację piszą? Czy używają takich narzędzi jak DocBook? Czy to skomplikowane czy proste?


title: Czy modele baz danych (koncepcyjne czy fizyczne) powinny być przeglądane przez administratorów baz danych?

text: Tam, gdzie pracuję, nowe aplikacje, które są opracowywane, które będą korzystać z ich własnych relacyjnych baz danych, muszą mieć swoje modele baz danych (koncepcyjne, a następnie fizyczne) sprawdzone i zatwierdzone przez administratorów baz danych. Zadbane rzeczy to normalizacja, antywzorce, standardy nazewnictwa tabel i kolumn itp. Czy to naprawdę odpowiedzialność DBA? czy w większym stopniu powinna to być odpowiedzialność projektantów i architektów aplikacji?


title: Dołączanie plików źródłowych modułu do pliku War za pomocą Maven

text: Moim celem jest włączenie plików źródłowych modułów do pliku War. Przeczytałem to wyjaśnienie na oficjalnej stronie mavena: http://maven.apache.org/plugins/maven-assembly-plugin/examples/multimodule/module-source-inclusion-simple.html Zastanawiam się, czy to jedyny sposób na włączenie wszystkie pliki źródłowe zawarte we wszystkich modułach. Czy prosta wojna maven-pluginów nie może zrobić tego samego?


title: Jak wykonać mnożenie przez skalar i odwrotność macierzy, gdy zmienne mają rozmiar 1000 bitów?

text: Wykonuję operacje arytmetyczne na naprawdę ogromnych liczbach. Na przykład dostaję sześć zmiennych, a_{11}, a_{12}, a_{21}, a_{22}, x_1 i x_2. Chociaż powyższe są terminami matematycznymi, te sześć zmiennych jest każda 1000-bitowymi liczbami całkowitymi. To, co chcę zrobić, to obliczyć (1) dwie liczby z_1 i z_2 oraz (2) macierz odwrotną. (1) z_1 = a_{11}*x_1 + a_{12}*x2 i z_2 = a_{21}*x_1 + a_{22}*x2 (2) jeśli A jest macierzą zdefiniowaną jako A=[a_{11 } a_{12}; a_{21} a_{22}], chcę obliczyć A^{-1} Wiem, jak to zrobić, gdy te sześć zmiennych jest zwykłymi liczbami zmiennoprzecinkowymi. Ale moje pytanie brzmi, jak je obliczyć w C lub Pythonie, gdy wszystkie sześć zmiennych ma rozmiar 1000-bitowy?


title: Programowanie zorientowane na aspekty: kiedy zacząć korzystać z frameworka?

text: Właśnie oglądałem tę przemowę Grega Younga ostrzegającą ludzi przed KISS: Keep It Simple Stupid. Jedną z rzeczy, które zasugerował, jest to, że do programowania zorientowanego aspektowo _nie **nie** potrzebujemy frameworka_. Zaczyna od stworzenia silnego ograniczenia: wszystkie metody przyjmują jeden i tylko jeden parametr (chociaż nieco później łagodzi to, używając częściowej aplikacji). Przykładem, który podaje, jest zdefiniowanie interfejsu: public interface IConsumes<T> { void Consume(T message); } Jeśli chcemy wydać polecenie: public class Polecenie { public string SomeInformation; publiczny identyfikator int; public override string ToString() { return ID + " : " + SomeInformation + Environment.NewLine; } } Polecenie jest zaimplementowane jako: public class CommandService : IConsumes<Command> { private IConsumes<Command> _next; public CommandService(IConsumes<polecenie> cmd = null) { _next = cmd; } public void Consume(Komunikat polecenia) { Console.WriteLine("Polecenie zakończone!"); if (_next != null) _next.Consume(komunikat); } } Aby zalogować się do konsoli, wystarczy zaimplementować: public class Logger<T> : IConsumes<T> { private readonly IConsumes<T> _next; public Logger(IConsumes<T> next) { _next = next; } public void Zużyj (wiadomość T) { Dziennik (wiadomość); if (_next != null) _next.Consume(komunikat); } private void Log(T message) { Console.WriteLine(message); } } Zatem rejestrowanie przed poleceniem, obsługa poleceń i rejestrowanie po poleceniu to tylko: var log1 = new Logger<Command>(null); var svr = new CommandService(log); var startOfChain = new Logger<Polecenie>(svr); a polecenie jest wykonywane przez: var cmd = new Command(); początekŁańcucha.Zużyj(cmd); Aby to zrobić, na przykład w PostSharp, należy opisać `CommandService` w ten sposób: public class CommandService : IConsumes<Command> { [Śledzenie] public void Consume(Command message) { Console.WriteLine("Command complete!") ; } } A potem trzeba zaimplementować logowanie w klasie atrybutów coś takiego: [Serializable] public class TraceAttribute : OnMethodBoundaryAspect { public override void OnEntry( MethodExecutionArgs args ) { Console.WriteLine(args.Method.Name + " : Entered!" ) ; } public override void OnSuccess( MethodExecutionArgs args ) { Console.WriteLine(args.Method.Name + " : Exited!" ); } public override void OnException( MethodExecutionArgs args ) { Console.WriteLine(args.Method.Name + " : EX : " + args.Exception.Message ); } } Argumentem, którego używa Greg jest to, że połączenie atrybutu z implementacją atrybutu jest "zbyt dużo magii", aby móc wyjaśnić, co się dzieje młodszym programistom. Początkowy przykład to „tylko kod” i łatwy do wyjaśnienia. Tak więc, po tej dość długiej rozbudowie, pytanie brzmi: kiedy przechodzisz z nieframeworkowego podejścia Grega na użycie czegoś takiego jak PostSharp dla AOP?


title: Czy powinienem mieć oddzielną metodę dla Update(), Insert() itp., czy też ogólną Query(), która byłaby w stanie obsłużyć to wszystko?

text: Obecnie próbuję napisać bibliotekę klas dla połączenia z bazą danych. Patrząc na to, istnieje kilka różnych typów zapytań: Select From, Update, Insert itd. Moje pytanie brzmi: jaka jest najlepsza praktyka pisania tych zapytań w aplikacji C#? Czy powinienem mieć osobną metodę dla każdego z nich (tj. Update(), Insert()) lub mieć ogólną Query(), która byłaby w stanie obsłużyć je wszystkie? Dzięki za wszelką pomoc!


title: Przejście z GPL v3 na GPL v2

text: Mam problem z licencjonowaniem. Pobrałem klasę innej firmy z GitHub i jest ona na licencji GPL v3. Jednak użyłem tej klasy w innym projekcie open-source, który jest na licencji GPL v2, a przesłanie tam mojego skryptu wymaga, aby wszystko było na licencji GPL v2 również z mojej strony. Czy mogę zmienić licencję dla tej klasy, mimo że nie jestem autorem?


title: Czy istnieje konkretna nazwa paradoksu „Kwadrat dziedziczy po Prostokąt”?

text: Pewna awaria OOP jest pokazana w klasie Square dziedziczącej po Rectangle, gdzie logicznie Square jest specjalizacją Rectangle i dlatego powinna po niej dziedziczyć, ale wszystko się rozpada, gdy próbujesz zmienić długość lub szerokość Square. Czy istnieje konkretny termin opisujący, co dzieje się nie tak w tej sprawie?


title: Jak mogę sprawić, by tworzenie kodu JavaScript w zespole było mniej bolesne?

text: Mamy zespół pracujący nad aplikacją internetową ExtJS. W tej chwili interfejs i jego funkcjonalność są upchnięte w jednym 1500-liniowym pliku JS, co jest oczywiście _straszne_. Ogólnie rzecz biorąc, jest to zła forma, ale naprawdę sprawia, że łączenie zmian staje się niedźwiedziem. Ponieważ JavaScript nie ma #include ani @require, ani żadnego innego mechanizmu określania zależności, nie wiem, jak wdzięcznie podzielić funkcjonalność na mniejsze jednostki logiczne, bez konieczności posiadania dużej listy włączania do prania HTML. Myślę, że to dość powszechny problem, że ktoś wymyślił eleganckie rozwiązanie. Pomoc?


title: Czy należy unikać klas bazowych użyteczności?

text: Wiedząc, że C# nie obsługuje wielokrotnego dziedziczenia, czy pisanie klasy bazowej narzędzi jest uważane za złą formę? Kilka wstępnych przemyśleń: * Mógłbym stworzyć interfejs i konkretyzację, ale wtedy implementacja nie jest przenośna * Jeśli programista musiałby rozszerzyć klasę, powiedzmy o wzorzec dekoratora, mógłby zaimplementować tę nową klasę i odziedziczyć klasę bazową w ich nowa klasa **EDIT** : NB. Nie mówię tutaj o dziedziczeniu waniliowym np. pudel<\--dog<\--mammal<\--animal Więcej tego typu rzeczy (z tego miejsca): using log4net; za pomocą log4net.Config; public class LogTest2 { private static readonly ILog logger = LogManager.GetLogger(typeof(LogTest2)); statyczny LogTest2() { DOMConfigurator.Configure(); } static void Main(string[] args) { logger.Debug("Oto dziennik debugowania."); logger.Info("... i dziennik informacji."); logger.Warn("... i ostrzeżenie."); logger.Error("... i błąd."); logger.Fatal("... i błąd krytyczny."); } } Gdybym miał wrzucić to, powiedzmy, do usługi WCF, byłoby wskazane, aby prywatna zmienna składowa, konstruktor i być może niektóre metody opakowujące siedziały w klasie bazowej, aby zaoszczędzić bałaganu w kodzie usługi (i uczynić go wielokrotnego użytku) . Do tej pory tak nudne. Jednak: Co jeśli chciałbym dodać inny rodzaj logowania, który nie jest obsługiwany przez log4net? Np. Acme Corp zapewnia pewną klasę zespołowi pomocy technicznej iMessage, jeśli wystąpi problem. **Klasa bazowa** Gdybym zaimplementował rzeczy log4net w klasie bazowej, musiałbym stworzyć nową główną klasę bazową, która obsługuje obie klasy i dziedziczy to. **Interfejs** Mógłbym zaimplementować interfejs, ale konkrecja nadal byłaby w kodzie usługi, której staramy się uniknąć. Oczywiście klasa Acme Corp może teraz wpaść od razu, ale wdrażamy dwa zestawy kodu, które robią bardzo podobne rzeczy na różne sposoby.


title: Zasoby do nauki przechwytywania wideo/ruchu

text: Mam nadzieję, że za kilka miesięcy zacznę programować dla Kinecta na mój ostatni rok projektu uniwersyteckiego. Chociaż jestem dość kompetentnym programistą C#, nie mam doświadczenia z przechwytywaniem ruchu, głębią widzenia, w zasadzie wszystkimi rzeczami mierzonymi i uchwyconymi przez Kinect. Czy ktoś mógłby polecić lekturę na ten temat, najlepiej na razie na poziomie początkującym? Zasoby internetowe również byłyby dobre.


title: Strategia wyszukiwania pełnego tekstu w mojej witrynie

text: Mam stronę internetową, która umożliwia użytkownikom wyszukiwanie przedmiotów w różnych kategoriach. Każda kategoria to osobny obszar (strona) mojej witryny. Na przykład, niektórymi kategoriami mogą być samochody, rowery, książki itp. W tej chwili użytkownik musi wyszukać przedmiot, przechodząc do strony (na przykład samochody) i wyszukując samochód, który chce. Chciałbym umożliwić użytkownikowi wyszukiwanie czegokolwiek w mojej witrynie z mojej głównej strony głównej. W tej chwili każda strona (kategoria) ma swój własny zestaw tabel i tak naprawdę nie chcę włączać wyszukiwania pełnotekstowego dla każdej tabeli (ponad 20) i przeszukiwać każdą tabelę indywidualnie po zakończeniu wyszukiwania. To będzie powolne i żmudne. To, o czym myślę, to utworzenie pojedynczej tabeli, która będzie zawierała wszystkie możliwe do przeszukiwania informacje dla każdej kategorii elementu (gdy element zostanie zapisany w odpowiedniej tabeli, skopiuję wszystkie możliwe do wyszukiwania informacje do mojej tabeli „Wyszukaj”). Następnie włączyłbym wyszukiwanie pełnotekstowe dla tej tabeli i przeszukałbym tę tabelę. Czy to brzmi rozsądnie? Czy jest lepszy sposób? Nigdy wcześniej nie korzystałem z wyszukiwania pełnotekstowego, więc jest to dla mnie nowość.


title: Dostosowanie konfiguracji dla PHP czy Laravel 4 IoC będzie przydatny?

text: Ten temat został omówiony w tym poście: Dostosowywanie konfiguracji za pomocą Dependency Injection Jednak - nie mogłem znaleźć takiej dla składni PHP, a ponieważ jedną z odpowiedzi było użycie konkretnego kontenera ASP.net - nie mogłem skorelować. Obecnie mam statyczną klasę App\Config — która wstrzykuje się z długą tablicą konfiguracji. tablica to nic innego jak array('max_select' => '10'); i inne awarie dla różnych obiektów, które mają zostać zainicjowane. Czy IoC Laravela przydałoby się to posiekać? Jeśli tak – jak mam to zrobić? Kod Laravela to: `$app->make('MyClassA');` Jednak nie wiem jak skorelować.


title: Jak poprawić kod po znajomości wielu języków?

text: Przez ostatnie lata poznałem 14 języków programowania (asembler phyton delphi qbasic c++ c# ruby perl - etc etc etc). Jednak to wszystko leżało w moim własnym interesie, nie chodziłem po to do szkoły. Teraz bez prawdziwej edukacji jestem w zespole z innymi programistami. W naszej pracy zajmujemy się robotyką. W przeciwieństwie do mnie znają 2 języki i wiele frameworków, o których nigdy wcześniej nie słyszałem. Naprawdę nie czuję się za nimi, ale potrafią mnie zaskoczyć, a innym razem potrafię zaskoczyć ich rozwiązaniami. Największą różnicą jest to, że od lat pracują w IT, podczas gdy dla mnie część programistyczna jest nowa i lubię ją. Ale po wielu językach trudno mi się poprawić. Czasami widzę kod (lub narzędzia), które są dla mnie nowe. Nigdy nie używałem narzędzi jak anksvn, nie robiłem wersjonowania, nigdy nie widziałem sterowników USB zrobionych w kodzie, przyzwyczaiłem się do nich, uczyłem się od nich na projektach i moich kolegów. Zacząłem zarabiać z kodem (bez prawdziwego dyplomu) przez ostatnie 2 lata. Biorąc pod uwagę, że nie znalazłem żadnego dobrego kanału YouTube ani książki, które mogłyby poprawić moje umiejętności, jak mogę się dalej doskonalić? Moje zainteresowania to C++ i C#. O to, że tracę zainteresowanie, jeśli książki zaczynają się od podstaw „jeśli to podczas gdy dla typów obiektów” po 14 językach masz to.


title: Czy pisanie oprogramowania jest łatwiejsze niż czytanie i rozumienie go od podstaw?

text: Ja i mój przyjaciel rozmawialiśmy wczoraj o różnicach między pisaniem dużego oprogramowania C++ a rozumieniem go jako nowego rekruta. Czy to możliwe, że skoro oprogramowanie jest robione jedną linijkę na raz, a proces ten przypomina to, jak my (ludzie) uczymy się rzeczy i budujemy coś na drugim, pisanie dużego oprogramowania jest w rzeczywistości łatwiejsze niż czytanie go i rozumienie, co robi (przechodzenie przez kod pomaga, ale musisz pamiętać wiele klas/plików źródłowych razem, nawet nie wiesz, do czego zostały napisane, kod wielowątkowy dodaje punkty malus)? Na początku brzmi to dziwnie, ale po tym, jak trochę pomyśleliśmy, wydawało się to rozsądne?


title: Źródło dla "Programiści łączą jak rezystory równolegle"

text: Jakie jest pochodzenie (odniesienie, czas, autor) poniższego cytatu? Na przykład, czy to z książki? > Programiści łączą równolegle jak rezystory. Może to być Gerry Jay Sussman i nie mogę wykluczyć, że cytat występuje w kilku odmianach. Opcjonalnie pytanie **_secondary_**: co oznacza ten cytat?


title: Ile czasu należy poświęcić na przypadki użycia?

text: Zaczynam pracować w zwinnym, iteracyjnym podejściu do tworzenia oprogramowania i to pytanie wydaje się całkiem naturalne. Po zebraniu wymagań powinienem napisać kilka przypadków użycia, aby opisać, w jaki sposób użytkownik wchodzi w interakcję z systemem podczas spełniania wymagań. Ile czasu powinniśmy z tym spędzić? Czy powinienem poświęcić tydzień na zastanawianie się nad przypadkami użycia, skończyć wtedy, a dopiero potem przejść do pracy z każdym z nich, aby znaleźć główne obiekty? A może powinienem po prostu napisać kilka z nich i zdobyć małą liczbę do pracy? Jeśli dobrze rozumiałem agile, myślę, że powinienem zdobyć tylko niektóre z nich i zapewnić, że funkcjonalność, która jest tam przeznaczona, jest rzeczywiście skonstruowana i jest już użyteczna. Dopiero wtedy powinienem przejść do innych przypadków użycia i przejrzeć, co zostało zrobione w przypadku zakończonym. Czy mam rację z tym pomysłem? Z góry bardzo dziękuję!


title: Czy nazwy modeli/tabeli powinny być jak najbardziej ogólne?

text: Czy nazwa modelu powinna być jak najbardziej ogólna — nawet jeśli nie będzie to nazwa wyświetlana użytkownikom? Na przykład wyobraźmy sobie model Django do polubienia postów innego użytkownika. Czy ma sens nazywanie modelu „Lubię to”, nawet jeśli planuję wyświetlać go jako Kudos, Adnotacje, Ups itp.? Czy ma sens, aby nazwa była jak najbardziej ogólna, nawet jeśli nie będzie taka, jaka będzie wyświetlana użytkownikowi?


title: Dlaczego DDD nie bierze pod uwagę dokumentów?

text: ... czyli wejścia i wyjścia funkcji serwisowych ? Czy jednostki lub agregaty mogą opuszczać granice usług?


title: czy to prawda, że automat stanów może mieć więcej niż jeden możliwy stan dla pewnego przejścia?

text: Mam wymagania dotyczące przepływu pracy, który próbuję modelować jako maszynę stanów, widzę, że istnieje więcej niż jeden wynik danego przejścia (lub działania). Czy automat stanów może mieć więcej niż jeden możliwy stan, ale tylko jeden stan będzie prawdziwy w danym momencie? **Uwaga:** To moja pierwsza próba modelowania maszyny stanów. Np. może być: **s1->t1->s2** **s1->t1->s3** **s1->t1->s4** gdzie s1, s2, s3, s4 to stany, a t1 to przejście /działalność. Przykładem fikcyjnego świata rzeczywistego może być: Dla człowieka mogą występować dwa stany: głodny, nie głodny Koszyk może mieć tylko jeden przedmiot z: jabłka, pomarańczy. Czyli do modelowania będziemy mieli: **głodny->wybierz z koszyka->znaleziono jabłko** **głodny->wybierz z koszyka->znaleziono pomarańczę** **znaleziono jabłko->jedz->nie głodny** **pomarańcza znaleziona->wyciągnij z niej sok i wypij->nie głodny**


title: Przenośność w języku C

text: Jak dokładnie określa się przenośność języka takiego jak C? Dowiedziałem się, że kompilatory są specyficzne dla ISA. Jeśli to prawda, jak jest przenośne C? A może tylko kod źródłowy napisany w C jest przenośny, ale nie pliki wykonywalne? Czy pliki wykonywalne ISA nie są specyficzne dla przykładowych aplikacji dla x86 są oddzielone od aplikacji dla Apple (zakładając, że Apple używa mikroprocesora Motorola/PowerPC)?


title: Kod sztucznej inteligencji?

text: Wziąłem zajęcia w college'u (A.I.) i uznałem je za całkiem interesujące, ale nie posunąłem się daleko dalej (ukończyłem ten semestr, więc nie mogłem brać więcej zajęć). Więc jest to coś, co powraca jako „poboczne” zainteresowanie, które chciałem studiować samodzielnie, mam mnóstwo e-booków i dokumentów, ale problem polega na tym, że są BARDZO zaawansowane i niezwykle ciężkie w matematyce/algorytmie (co rozumiem)....jednak żaden z nich tak naprawdę nie wyjaśnia, w jaki sposób byś się do tego zabrał "mądry kod". (Sieci Bayesian/Uczenie maszynowe/Sieci neuronowe) i takie, które nie są tak ciężkie matematycznie. Rozumiem, dlaczego matematyka tam jest, ale kiedy tak naprawdę nie wyjaśnia, w jaki sposób można „zaprogramować” taki system… cóż, robi się trochę mylące, aby przejść dalej.


title: Łańcuch narzędzi do kontroli źródła i kompilacji

text: Jestem samotnym programistą pracującym na dużym systemie. Niedawno zostałem poinformowany, że może być możliwość zrekrutowania innego programisty, a może dwóch. W moim podejściu włączyłem kontrolę źródła za pomocą Subverison i Tortoise SVN. Rozmawiałem z innym deweloperem, z którym ostatnio pracowałem, i przypomniał mi o koncepcji łańcucha narzędzi do kompilacji, a konkretnie na nocnych kompilacjach do testów jednostkowych. Mam dwa pytania: 1. Czy stosowanie testów jednostkowych i nocnych kompilacji jest dobrą praktyką dla wszystkich zespołów programistycznych? Czy istnieją jakieś kryteria, które identyfikują zespoły, które są bardziej odpowiednie niż inne do nocnych kompilacji. 2. W jaki sposób programiści identyfikują obszary odpowiednie do testów jednostkowych? Zakładam, że patrzysz na przypadki użycia. Zakładam, że te przypadki użycia mogą obejmować różne metody przetwarzania, np. użytkownicy korzystający z aplikacji internetowej lub zadania przetwarzania wsadowego, które jest uruchamiane co noc za pomocą zaplanowanego zadania.


title: Czy rozwój zwinny wymaga najpierw stworzenia ram?

text: Planujemy nowy projekt i chcemy iść z architekturą zorientowaną na usługi. Wszyscy zgadzają się, że jest to droga do zrobienia, ale jak to się ma do rozpoczęcia rozwoju przy użyciu zwinnych metodologii? Nie mam żadnego doświadczenia z SOA, chociaż mam pewne doświadczenie z TDD (programowanie sterowane testami). Zespół, z którym pracuję, uważa, że potrzebujemy frameworka, zanim będziemy mogli zacząć przyglądać się programistom pracującym z TDD. W innych spędzamy tygodnie, przygotowując framework (framework SOA), a następnie programiści mogą budować na tym frameworku, aby wykonywać swoją pracę. Z punktu widzenia TDD spodziewałbym się, że każdy programista po prostu rozwinie funkcjonalność za pomocą MOCKów itp., Podczas gdy framework jest rozwijany (chociaż nie mam pojęcia, co to framework w SOA). Następnie moglibyśmy podłączyć rzeczywiste wywołania frameworka, gdy zajdzie taka potrzeba. Nie jestem pewien, czy to prawda, ale wydaje się, że jest to właściwy sposób.


title: W jaki sposób właściciel (właściciele) powinien zarządzać wkładem do projektu open source?

text: Zarządzając projektem open source (korzystając z usługi takiej jak GitHub), jak można odpowiedzieć na następujące pytania: Ktoś uprzejmie przesłał łatkę, aby dodać nową funkcję lub rozwiązać problem. Może wystąpić jedna z następujących sytuacji: * Kod źródłowy nie spełnia jednej lub więcej konwencji nazewnictwa itp. * Czuję, że kod źródłowy można by poprawić w pewien sposób. Być może ten sam efekt można osiągnąć za pomocą znacznie prostszego źródła, a może potrzebna byłaby inna przydatna funkcja. Q1. Czy mogę zmienić przesłane źródło? (czy jest to możliwe na GitHubie?) Q2. Czy wszystkie takie zgłoszenia powinny zostać odrzucone zgodnie z wytycznymi dotyczącymi składania? Q3. Jeśli tak do Q2, co z naprawdę zgrabnym pomysłem, który został źle wdrożony? Czy mogę po prostu iść dalej i tworzyć własne? Chcę zachęcić do wkładu, ale jednocześnie ważne jest utrzymanie pewnego standardu.