title: Projekt API z odniesieniami do obiektu głównego

text: [Zwykle publikuję na StackOverflow, ale ponieważ jest to bardziej pytanie dotyczące projektu / teorii, a nie pytanie o kod, dam mu tutaj strzał] Większość moich aplikacji korzysta obecnie z podstawowego modelu obiektów, który napisałem 6 lat temu i który ma po prostu uprawiane w miarę potrzeb - jak większość moich rzeczy, zostało zakodowane tak, jak jest, bez wcześniejszego wymyślania projektu. Część jest zbyt nieelastyczna, część jest źle zaprojektowana, a jeszcze więcej jest niezgrabne. Postanowiłem więc zacząć od nowa, zamiast próbować modernizować nowe API na istniejącym. Zdecydowałem też, że najpierw zmapuję całe API, a następnie napiszę dla niego kod. Do tej pory to podejście chyba się opłaca i mam fajny mały model warzenia. W nowym projekcie mam jednak jeden dylemat. Jeśli weźmiesz pod uwagę modele automatyzacji oferowane przez takie rzeczy, jak Microsoft Word, większość obiektów podstawowych ma właściwość o nazwie „Aplikacja”, która wskazuje na obiekt podstawowy. Mój istniejący model obiektowy działa na tej samej zasadzie i używam jej również w nowym. Obecny interfejs API ma jednak różne podejścia. Niektóre obiekty przechowują odniesienie do tego obiektu głównego. Inni tego nie robią, a właściwość po prostu patrzy na pojedynczy obiekt "usługa", który w swoim sercu ma `ServiceContainer` do wyszukiwania zarejestrowanych obiektów. Tak, lokalizator usług. Niektórzy przekazują je przez konstruktor, inni wyszukują je _następnie_ przechowują referencje. Normalnie lubię spójność, ale to jest bałagan. Mój nowy projekt nie zmienia tego podejścia - obiekty nadal będą miały właściwość z powrotem do obiektu głównego, z ideą, że wszystkie obiekty zachowują się tak samo i nie muszę (ręcznie) polować na aplikację podczas pisania kodu dla daną realizację. Po usunięciu tych podstawowych informacji, oto moje pytanie. Czy każdy obiekt powinien zawierać referencję do obiektu głównego, czy też nie powinien przechowywać referencji bezpośredniej, ale jakoś to poszukać, np. z singletona lub lokalizatora usług. W pierwszym podejściu zamierzam użyć więcej pamięci - dodatkowe 4 bajty na obiekt na obiekt, ponieważ obecnie skompilowałem wszystko jako 32-bitowe. Chociaż nie brzmi to zbyt wiele i jestem pewien, że nie będę tworzył wielu tysięcy obiektów, chcę, aby podstawowe API było tak wydajne, jak to możliwe, ponieważ bez wątpienia wygrały aplikacje, które na nim nakleję nie być! Takie podejście oznacza również, że będę musiał przekazywać to odwołanie do obiektu w każdym pojedynczym konstruktorze, co nie stanowi większego problemu w przypadku prawdziwego kodu, ale sprawia, że pisanie testów jest nieco bardziej skomplikowane. To drugie podejście oznacza, że oszczędzam pamięć, ale potem nadal korzystam ze złej praktyki lokalizatora usług i przypuszczam, że istnieje przynajmniej wskazówka problemu z wydajnością, ponieważ konieczność wyszukiwania odniesienia nie będzie tak szybka jako zwrot bezpośredni. A może istnieje inne podejście, którego używają modele dużych obiektów, którego nie rozważałem powyżej? Jak wspomniano, zwykle po prostu nurkuję, robię coś, co działa, a następnie zostawiam to w spokoju, dopóki się nie zepsuje lub potrzebuję tego do zrobienia czegoś innego. Zgaduję, że odpowiedzią będzie „po prostu zapisz referencję i przestań narzekać”, ale lepiej poznać opinie innych ludzi!


title: Rejestracja poleceń konsoli programistycznej

text: Mam klasę DevelopmentConsole. Tworzę funkcjonalność rejestracji poleceń konsoli dla podsystemów. Nie chcę, aby konsola o nich wiedziała, ale także nie chcę, aby zawierały kod debugowania (np. "Console.RegisterCommand..."). Myślę, że powinienem zrobić dodatkową hierarchię klas. Na przykład mam klasę Player. IConsoleBuilder { RegisterCommand(ciąg polecenie, Func<ciąg[], ciąg> akcja); } PlayerConsoleBuilderClient : ConsoleBuilderClient { readonly Player _player = ?inject? public override void Visit(IConsoleBuilder builder) { // builder.RegisterCommand("GetName", args => _player.Name) ; } } Tutaj muszę użyć Reflection, aby znaleźć wszystkie podklasy ConsoleBuilderClient. To nie jest dobry pomysł, prawda? Czy możesz zasugerować, jak zrobić to lepiej?


title: związane z oznaczeniem programisty

text: Co oznacza oznaczenie „Associate software developer Grade 10”? Firma wspomina o tym w swoim liście ofertowym. Tutaj dwa słowa mylą pierwsze „skojarzenie” a drugie „GRADE 10”.


title: Zastępowanie parametrów przez struct

text: W moim projekcie spotykam się z wieloma metodami, które mają w sobie osadzonych kilka parametrów, co utrudnia wywoływanie metod, ponieważ muszę zacząć deklarować zmienne przed wywołaniem metod. W związku z tym chciałbym dokonać refaktoryzacji kodu, aby zamiast tego zwrócić strukturę i zastanawiałem się, czy to dobry pomysł. Jeden z przykładów z interfejsu: void CalculateFinancialReturnTotals(FinancialReturn fr, out dziesiętne wydatki, out dziesiętny przychód, out dziesiętna opłata A, out dziesiętna opłata B, out dziesiętny zysk, out dziesiętny obrót, out dziesiętny komunikat) i gdybym miał to zmienić, umieściłbym wszystkie parametry wyjściowe w strukturze tak, aby podpis metody był znacznie prostszy, jak poniżej. [structName] CalculateFinancialReturnTotals (FinancialReturn fr); Proszę doradź.


title: Czy mogę używać wtyczek licencji Apache Software License, Version 2.0 i GNU LGPL 3 w mojej komercyjnej aplikacji internetowej?

text: Mam dwie wtyczki. Jeden ma licencję GNU LGPL 3, a drugi — Apache Software License w wersji 2.0. Czy mogę ich używać w mojej komercyjnej aplikacji? A jeśli tak, jakie środki ostrożności powinienem podjąć?


title: Jaki jest „normalny” zakres szybkości pisania dla programistów?

text: Najwyraźniej pisanie dwoma palcami jest prawdopodobnie znakiem, że programista potrzebuje pracy, aby przyspieszyć pisanie (lub kłamie na temat swojego doświadczenia jako programisty), a 60+ WPM jest więcej niż wystarczające. Czy ktoś to jednak studiował? Jak szybko programiści piszą średnio i jaki jest „normalny” zakres szybkości pisania?


title: Jak zmniejszyć zużycie magicznych sznurków?

text: W bazie danych aplikacji znajduje się tabela konfiguracyjna z następującym schematem: Tabela: ReleaseProperty 1. ReleasePropertyID 2. ReleaseID 3. Name 4. Value Aktualnie aby pobrać konkretną właściwość przekazuję do klasy Repository argumenty ReleaseID (które pochodzą z aktualnej sieci adres strony) i Nazwę, która jest zasadniczo zakodowana na stałe Np. var właściwość = ReleasePropertyRepository.Select(ReleaseID, "MyProperty"); Nie lubię używać zakodowanych na stałe ciągów wokół mojego kodu, a jedynym pomysłem na poprawę jakości tego kodu jest użycie klasy kontenera dla stałych. var właściwość = ReleasePropertyRepository.Select(ReleaseID, Constants.MyProperty); Czy istnieje inny sposób na opracowanie lepszego kodu?


title: Jaki może być dobry temat pracy magisterskiej dla oprogramowania i biznesu?

text: Na studiach biznesowych muszę zbadać finansową stronę projektów inżynierii oprogramowania, ale sam jestem raczej osobą techniczną. Jakie byłoby dobre miejsce na rozpoczęcie? Jakie są ważne wskaźniki finansowe (wartość bieżąca netto, czy ma to sens w przypadku oprogramowania?) lub wskaźniki wydajności „dobrych” projektów oprogramowania? Z jakim typem osoby w organizacji mam się skontaktować? Dzięki za wszelką pomoc.


title: Wyjaśnienie bezpieczeństwa usług internetowych REST

text: Jestem nowicjuszem w programowaniu usług internetowych i mam problem ze zrozumieniem, jak działa uwierzytelnianie/zabezpieczenie dla wzorca REST WS. Czytałem o OAuth, ale nie rozumiem szczegółowo, jak to działa, jednak myślę, że go nie potrzebuję, ponieważ tylko moja aplikacja korzysta z interfejsu API. Potrzebuję uwierzytelnić użytkowników, którzy muszą korzystać z „prywatnych” interfejsów API. Czy możesz wyjaśnić mi prawidłowy sposób implementacji uwierzytelniania REST WS lub podać dobry przewodnik lub schemat blokowy?


title: W BDD, przechodzenie od funkcji do historii użytkownika, jak to działa?

text: Moje tło to książka BDD w akcji. Jak przejść od funkcji do historii? Bardziej konkretnie, chciałbym zrozumieć, co następuje: 1- Kiedy dokonuje się rozkładu na historie? Czy robisz to, dostrzegając przykłady ilustrujące Twoją funkcję? 2 - Jeśli tak, jak postępujecie w rozwoju, to: Czy zaczynacie pracę nad historiami, kiedy pozostawiacie swoją funkcję w toku? Czy najpierw poprawiasz scenariusz funkcji, a następnie przechodzisz do historii, które z niego wynikają, pozostawiając test funkcji w toku? Kluczem jest tutaj proces, jeśli dokonam rozkładu funkcji na historie, przed napisaniem mojego rzeczywistego scenariusza, który wykryje te historie, mogę pisać historie, które nie są istotne dla tej funkcji, prawda? To jednak sprawia, że myślę, że historie muszą być rozwijane w taki sam sposób, jak test jednostkowy/test integracyjny są rozwijane z historyjek użytkowników? Jednakże, jeśli robi się to dobrze, trudno jest zaplanować funkcję do iteracji scrum. Rozumiem, że jest to tylko narzędzie do planowania, ale byłoby interesujące zrozumieć, w jaki sposób to planowanie jest faktycznie używane w kontekście radzenia sobie z funkcją. Uważam, że nie należy planować zbyt wiele z góry, nie angażować się w rzeczy bez pewności, ale w międzyczasie wydaje mi się, że rozkład na różne procesy (historie) angażuje się w proces tworzenia funkcji, wymaga pewnego planowania z góry. Byłbym wdzięczny za wyjaśnienie w tej kwestii.


title: Czym są wykresy w kategoriach laików

text: Czym są wykresy w informatyce i do czego służą? W kategoriach laików najlepiej. Przeczytałem definicję na Wikipedii: > W informatyce graf jest abstrakcyjnym typem danych, który ma na celu > implementację koncepcji grafu i hipergrafu z matematyki. > > Graficzna struktura danych składa się ze skończonego (i prawdopodobnie zmiennego) zbioru > uporządkowanych par, zwanych krawędziami lub łukami, pewnych elementów zwanych węzłami lub > wierzchołkami. Podobnie jak w matematyce, krawędź (x,y) wskazuje lub przechodzi od x do > y. Węzły mogą być częścią struktury grafu lub mogą być podmiotami zewnętrznymi > reprezentowanymi przez indeksy całkowite lub referencje. ale szukam mniej formalnej, łatwiejszej do zrozumienia definicji.


title: Najlepsze praktyki dotyczące rejestrowania działań użytkownika w środowisku produkcyjnym

text: Planowałem logować wiele różnych rzeczy w moim środowisku produkcyjnym, na przykład kiedy użytkownik: * loguje się, wylogowuje się * zmienia profil * edytuj ustawienia konta * zmienia hasło ... itd. Czy jest to dobra praktyka na środowisko produkcyjne? Również jaki jest dobry sposób na rejestrowanie tego wszystkiego. Obecnie używam następującego bloku kodu do logowania do: public void LogMessageToFile(string msg) { System.IO.StreamWriter sw = System.IO.File.AppendText(GetTempPath() + @"MyLogFile.txt"); try { string logLine = System.String.Format( "{0:G}: {1}.", System.DateTime.Now, msg); sw.WriteLine(logLine); } wreszcie { sw.Zamknij(); } } Czy to będzie w porządku dla produkcji? Moja aplikacja jest bardzo nowa, więc nie oczekuję milionów użytkowników od razu ani niczego, szukając najlepszych praktyk dotyczących śledzenia działań na stronie internetowej lub nawet najlepszych praktyk.


title: Jak przejść z dużego przedsiębiorstwa do małego start-upu?

text: Niedługo przeniosę się z dużego, międzynarodowego, korporacyjnego software house'u do start-upu, w którym będę jedynym pełnoetatowym programistą. Pracowałem w start-upach i firmach, w których wcześniej było tylko trzech lub czterech programistów, więc jestem całkiem zadowolony z wielu różnic w ogólnym odczuciu firmy. Ale nigdy nie pracowałem tam jako jedyny programista, do kilku rzeczy, do których przywykłem w dużej firmie, myślę, że będzie wymagał większego dostosowania. I zastanawiałeś się, czy są jakieś rady, jak nimi zarządzać?


title: Książki na temat poprawy wydajności i responsywności aplikacji internetowych JEE

text: Czy ktoś zna jakieś dobre książki na ten temat? Szukałem na amazon, ale te, które znalazłem, to dość stare publikacje.


title: Najlepsza branża do pracy jako programista

text: Moja umowa właśnie się skończyła i zastanawiam się, jakimi możliwymi pracami chciałbym się teraz przyjrzeć. Przez całą swoją karierę pracowałem w branży bankowej i ubezpieczeniowej (w tym jedna firma z listy Fortune 500) i z mojego doświadczenia wynika, że bankowość jest najwolniejszą (i najnudniejszą) branżą do pracy ze względu na ich surowe praktyki biznesowe (co jest wystarczająco uczciwe). Plusem jest to, że dobrze płacą. ### Moje pytania to: * W jakich branżach deweloperzy mogą pracować najlepiej, a w jakich najgorszych? Oznacza to, że w branżach, w których pracowałeś, co było dobre, a co złe z perspektywy programisty (pieniądze, praca, kultura, korzyści, współpracownicy itp.)? * Jak praca konsultanta wpływa na twoją opinię o branży? * Widząc, że wspomniałem o nudzie, która branża wspiera szybki wzrost?


title: Porady/sztuczki, jak zarządzać nowym zespołem z nowym kodem

text: Jak radzisz sobie w nowym zespole, w którym jesteś najstarszym deweloperem, a większość innych członków zespołu jest od ciebie młodsza o kilka lat. Zadanie stojące przed zespołem to coś, czego nikt inny, łącznie z Tobą, nie osiągnął w swojej karierze. Kierownictwo kładzie nacisk na wyższą produktywność całego zespołu, a jako starszy programista jesteś odpowiedzialny. Jakieś wskazówki, jak wyjść z atutu w takiej sytuacji? Oczywiście cały zespół potrzebuje czasu na naukę i nie zapominajmy o nowościach zespołu. Jednak terminy również się zbliżają...


title: Najlepsze wykorzystanie wielu komputerów dla programisty

text: Mam dwa Macbook Pros - oba są porównywalne sprzętowo. Jeden to 17", a drugi 15". 17" ma nieco szybsze taktowanie procesora, ale poza tym różnice są całkowicie znikome. Jakiś czas temu próbowałem konfiguracji, w której 17" podłączyłem do zewnętrznego monitora na środku biurka z 15-calowym laptopem bezpośrednio na prawo od niego i używałem teleportu do kontrolowania 15" z mojej 17". Cały rozwój, użytkowanie terminala itp. odbywało się na 17", a 15" był używany głównie do e-maili / komunikatorów / IRC... lub cokolwiek drugorzędnego w stosunku do tego, nad czym pracowałem.Mam konto MobileMe, więc preferencje były zsynchronizowane, ale poza tym tak naprawdę nie używałem niczego innego, aby zsynchronizować komputery (używam dropbox/git, ale prawdopodobnie nie optymalnie ). Z powodów, których nie mogę się doczekać, ta konfiguracja nigdy nie wydawała się całkiem odpowiednia. Kilka rzeczy, które mnie irytowało, to * 15-calowe było znacznie niewykorzystane, a 17-calowe było nadmiernie wykorzystywane * posiadanie 2 laptopów i 21-calowego wszystkie monitory na jednym biurku zajmowały dużo miejsca na biurku i wydawało mi się, że mam zbyt wiele do oglądania. Wróciłem do zwykłego korzystania z 17-calowego i zewnętrznego monitora i trzymania 15-calowego w domu (i używania go _bardzo_ oszczędnie). Dla tych z Was, którzy korzystają z wielu laptopów (lub po prostu z wielu maszyn), chciałbym zobaczyć konfiguracje, które działają dla Ciebie, gdy masz 2 lub więcej maszyn, które zapewniają optymalną produktywność i dlaczego. Chciałbym zrobić jeszcze jedno ujęcie, ale z innym podejściem niż moje poprzednie - które używało 15" jako maszyny do drugorzędnych rzeczy (komunikacja, czytanie dokumentacji itp. itp.).


title: Kolejka wysyłek Apple a wątki

text: Dużo słyszałem o słynnych kolejkach wysyłkowych Apple i **GCD**, ale dzisiaj po raz pierwszy postanowiłem dokładnie zrozumieć, co się dzieje, więc zacząłem czytać Przewodnik po programowaniu współbieżności i ten akapit przykuł moją uwagę. > Jeśli masz dwa zadania, które uzyskują dostęp do tego samego współdzielonego zasobu, ale działają > w różnych wątkach, każdy wątek może najpierw zmodyfikować zasób i > będziesz musiał użyć blokady, aby upewnić się, że oba zadania nie zmodyfikują > tego zasobu w tym samym czasie . Dzięki kolejkom wysyłania możesz dodać oba zadania do > kolejki wysyłania szeregowego, aby upewnić się, że tylko jedno zadanie zmodyfikowało zasób > w danym momencie. Ten rodzaj synchronizacji opartej na kolejce jest > bardziej wydajny niż blokady, ponieważ blokady zawsze wymagają kosztownej pułapki jądra > zarówno w przypadkach kwestionowanych, jak i niekwestionowanych, podczas gdy kolejka wysyłająca działa > głównie w przestrzeni procesów aplikacji i wywołuje tylko > jądra kiedy jest to absolutnie konieczne. Rozumiem, że sugerują wykonywanie dwóch zadań szeregowo, aby uniknąć używania blokad, co można zrobić w ten sam sposób w wątkach. Na przykład w Javie możesz umieścić dwie funkcje w pliku uruchamianym wątku, a wątek będzie je wykonywał szeregowo i nie będziesz potrzebować w tym przypadku dwóch blokad. Teraz moje pytanie brzmi, czy czegoś mi brakuje?


title: Nowy w programowaniu. Jak poznać ludzi, aby poszerzyć swoją wiedzę programistyczną i dyskurs?

text: Majsterkowałem przy technologii i programowaniu, ale książki i zasoby internetowe idą tylko do tej pory. Chcę, aby społeczność zaangażowała się w dyskusje na temat programowania, aby wynieść mnie poza to, co mogą dać książki (często po prostu po to, aby wyjaśnić, co książki próbują przekazać). Nikt w moim codziennym życiu nie jest w najmniejszym stopniu skoncentrowany na technologii, więc gdzie mam się udać? Czy społeczności online są wystarczające dla programistów? Jeśli nie, to dokąd idziesz lub polecasz? (w szczególności interesuje mnie C++, Linux, Python i Objective-C, ale to może nie dotyczyć pytania)


title: Python powoli zastępuje C na uniwersytetach. Czy ten ruch pogorszy jakość uczniów CS?

text: Uważam, że nauka C jest jednym z najważniejszych aspektów dla każdego programisty. To piękne połączenie języka wysokiego i niskiego poziomu. Niektóre uniwersytety przestają nauczać języka C na początkowych etapach i zamiast tego używają Pythona. Czy przejście z C na Pythona obniży jakość uczniów CS? Jeśli brakuje ci niektórych aspektów języka niskiego poziomu, czy brakuje ci czegoś ważnego ze swojego stopnia CS?


title: Kiedy używać porównania tożsamości zamiast równości?

text: Zastanawiam się, po co ktoś miałby chcieć używać porównywania tożsamości dla pól w „równościach”, jak tutaj (składnia Java): class C { private A a; public boolean equals(Object other) { // standardowe nudne preludium if (other==this) return true; if (other==null) zwraca false; if (other.getClass() != this.getClass()) zwraca false; Cc = (C) inne; // odpowiednia część if (c.a != this.a) return false; // więcej testów... a potem zwróć true; } // getter, setters, hashCode, ... } Używanie `==` jest nieco szybsze niż `equals` i trochę krótsze (ze względu na brak konieczności przeprowadzania testów zerowych), ale w jakich przypadkach (jeśli w ogóle) powiedziałbyś, że naprawdę lepiej **użyć `==` dla pól wewnątrz `równa się`**?


title: Jak często sekwencja jest używana w kodzie produkcyjnym Haskella?

text: Mam pewne doświadczenie w pisaniu małych narzędzi w Haskell i uważam, że jest to bardzo intuicyjne w użyciu, szczególnie do pisania filtrów (za pomocą `interact`), które przetwarzają standardowe wejście i przesyłają je do standardowego wyjścia. Ostatnio próbowałem użyć jednego takiego filtra na pliku, który był około 10 razy większy niż zwykle i dostałem błąd `Przepełnienie przestrzeni stosu`. Po przeczytaniu (np. tutaj i tutaj) zidentyfikowałem dwie wskazówki dotyczące oszczędzania miejsca na stosie (doświadczeni Haskellerowie, popraw mnie, jeśli napiszę coś, co nie jest poprawne): 1. Unikaj rekurencyjnych wywołań funkcji, które nie są rekurencyjne (to obowiązuje we wszystkich językach funkcjonalnych, które obsługują optymalizację funkcji tailcall). 2. Wprowadź `seq`, aby wymusić wczesną ocenę podwyrażeń, aby wyrażenia nie urosły zbyt duże przed ich zredukowaniem (jest to specyficzne dla Haskella, a przynajmniej dla języków używających leniwej oceny). Po wprowadzeniu pięciu lub sześciu wywołań `seq` w moim kodzie moje narzędzie znów działa płynnie (również na większych danych). Uważam jednak, że oryginalny kod był nieco bardziej czytelny. Ponieważ nie jestem doświadczonym programistą Haskella, chciałem zapytać, czy wprowadzanie `seq` w ten sposób jest powszechną praktyką i jak często można normalnie zobaczyć `seq` w kodzie produkcyjnym Haskella. A może są jakieś techniki, które pozwalają uniknąć zbyt częstego używania `seq` i nadal zajmują mało miejsca na stosie?


title: Jaki jest najskuteczniejszy sposób studiowania wielu języków, struktur i interfejsów API jako programista?

text: Wiem, że są tacy, którzy przeczytali mnóstwo książek na temat konkretnej technologii i kodują tylko w tym jednym języku, ale to pytanie jest skierowane do tych, którzy potrzebują przeskakiwać między używaniem wielu technologii, a mimo to potrafią być produktywni. Jaki jest najskuteczniejszy sposób na studiowanie wielu języków, frameworków i interfejsów API jako programista, nie stając się tanim szwajcarskim nożem wojskowym? A ile czasu należy poświęcić jednemu tematowi przed przejściem do innego?


title: Czy źle jest używać Agile, gdy wymagania klientów w ogóle się nie zmieniają?

text: Widziałem ostatnio wiele postów mówiących, że jednym z głównych powodów, dla których stosuje się Agile, jest to, że klienci często zmieniają wymagania. Załóżmy jednak, że klienci **nie zmieniają często wymagań**. W rzeczywistości klienci mają sztywne wymagania, choć mogą być nieco niejasne (ale nic nieuzasadnionego niejasnego), ale i tak używam Agile. Powodem, dla którego zatrudniam Agile jest to, że oprogramowanie jest na tyle złożone, że istnieją szczegóły, problemy, których nie rozpoznałbym, dopóki nie zmierzę się z nimi. Mógłbym zastosować podejście do ciężkiego planowania na pełną skalę, takie jak wodospad, ale wtedy zajęłoby kilka miesięcy, aby sfinalizować wszystkie projekty wysokiego poziomu i sygnatury kodowania niskiego poziomu. Istnieje jednak bardzo specyficzny, ustalony projekt architektoniczny systemu. Moje pytanie brzmi: czy byłoby to uważane za złe, kowbojskie kodowanie, anty-wzorce itp.? Czy musimy zastosować kaskadę i zaplanować jak najwięcej szczegółów, zanim zaczniemy kodować **kiedy wymagania są stabilne** zamiast mentalności „zróbmy to” w Agile? EDYCJA: Najważniejsze jest to, że: NIE MOŻEMY obwiniać klientów za zmieniające się wymagania. Załóżmy, że klienci wskazali nam bardzo konkretny problem, podaj nam listę życzeń z bardzo rozsądnymi szczegółami i zostaw nas w spokoju (tj. klienci mają swoje własne produktywne rzeczy do zrobienia, nie rób im więcej błędów. Tylko demo dla nich w pobliżu koniec, gdy masz minimalny działający prototyp). Czy użycie Agile w tym scenariuszu byłoby złe?


title: Używanie proxy jako ACL

text: Buduję aplikację MVC w PHP, używając Zend Framework. Mój model zawiera warstwy Domain Model i Mapper. Staram się zachować model domeny w nieskazitelnym stanie i udało mi się go uwolnić od kodu związanego z trwałością. Teraz próbuję znaleźć rozwiązanie dla ACL. Mam „ogólne” reguły ACL, które można łatwo wymusić w warstwie usług, ale mam też kilka bardzo drobnych reguł. Drobnoziarniste reguły mają zastosowanie na poziomie właściwości i wpływają na to, czy bieżący użytkownik może zmienić pole, a jeśli tak, jaki jest zakres dopuszczalnych wartości. Obecnie zastanawiam się nad wykorzystaniem wzorca proxy i aby proxy powinno rozszerzać rzeczywisty obiekt (aby oszczędzić mi przekierowywania 100% wywołań). Czy to brzmi rozsądnie? Czy jest lepsza opcja?


title: Uzyskiwanie pomocy w programowaniu trzymając mocno wodze

text: Rozpoczynam biznes internetowy. Zasadniczo wciąż brakuje najważniejszej części, tej części, która sprawia, że zarabiam pieniądze. Kilka razy próbowałem sobie z tym poradzić, ale zawsze rozpraszają mnie inne rzeczy. To typowy przykład niepodejmowania wyzwania. Myślałem o zatrudnieniu programisty do dalszego kodowania, ale pojawiły się dwa problemy: 1. Ujawniając mój obecny kod, programista mógł po prostu samodzielnie prowadzić biznes. Jak wybrać kogoś, kto tego nie zrobi? 2. Jaki sposób płatności jest odpowiedni dla programisty w tej sytuacji? Na godzinę? Jak obliczyć właściwą kwotę? Kod do napisania będzie w PHP + MySQL.


title: Czy WCF jest wyłącznie asynchroniczną platformą komunikacji?

text: Odkąd ostatnio musiałem programować komunikację/sieć, pole eksplodowało akronimami. W rzeczywistości wydaje się, że networking jest teraz opisywany przez zupełnie nowy język. Sama nazwa „Windows Communication Foundation” sugeruje, że powinna to być wszystko dla wszystkich… ale muszę się upewnić, że mogę zaprogramować synchroniczną komunikację w czasie rzeczywistym* w dedykowanej sieci Gigabit Ethernet. Czy ktoś może potwierdzić, że WCF nie jest starterem do tego zadania... a jeśli tak, to z którym z wielu mylących akronimów powinienem się zapoznać? * Mówiąc w czasie rzeczywistym, mam na myśli, że muszę zredukować opóźnienia do akceptowalnie niskiego poziomu. W przypadku naszej aplikacji, która polega na ciągłym przesyłaniu wyników analiz wideo i audio co kilka milisekund, muszę zapewnić, że 99% lub więcej z tych analiz jest prezentowanych w interfejsie użytkownika w ciągu (najlepiej) 0,5 sekundy, aby użytkownik miał czas na odpowiedź przed inicjujący węzeł sieci usuwa dane ze swojego bufora, aby zrobić miejsce dla kolejnych analiz.


title: Połącz dane z dwóch tabel — potrzebna pomoc

text: Opracowałem witrynę internetową z backendem mysql, ale nie jestem zadowolony z tego, jak otrzymuję jeden zestaw danych i nie wiem, jak uzyskać inny zestaw danych. Strona, o której mowa, znajduje się pod adresem: http://whistclub.org/test/ajax.php?vihill/results/1 Wyniki są wyświetlane do października, więc jest trochę danych do wykorzystania. Pobieram wyniki z dwóch tabel mysql (patrz poniżej), ale kod, którego użyłem, jest zbyt brzydki, abym go tolerował. Tak, działa, ale mam pewne standardy! Pomyśl o połączeniach do bazy danych dla każdego zespołu. Myślę, że należy używać sprzężeń, ale nie mogę zmusić tego do działania. Idealnie (myślę), że tablica wyników konwertuje identyfikatory zespołu na nazwy zespołów i używa nazw dla kolumn zwycięzców i przegranych VP. Tabela klasyfikacji na stronie w ogóle nie działa — to, co widzisz, jest ręcznie kodowane tylko po to, aby pokazać, co jest potrzebne. Tabele to: teams: id — autoincremented teamID — przypisywane do każdej drużyny w ramach gry teamName games: id — autoincremented gameID — podejrzewam, że nie jest to potrzebne, ponieważ duplikuje id. drużynaA drużynaB data zwycięzca IMPmargines zwycięzcyVPs przegraniVPS Gra to brydż, a IMP i VP to punkty. PZ pochodzą z IMP, a przegrany często otrzymuje kilka PZ. Szczegółowe informacje można znaleźć na stronie internetowej, ale nie sądzę, aby dotyczyło to mojego problemu. Oto niektóre dane z tabeli gier: id gryID drużynaA drużynaB data zwycięzca IMPmarża zwycięzcy wiceprzegrani wiceprezesy 1 1 11 18 25.09.2013 18 12 20 10 2 2 12 17 25.09.2013 12 22 22 8 3 3 13 16 2013- 09-25 13 20 21 9 4 4 14 15 2013-09-25 14 0 15 15 5 5 19 99 2013-09-25 NULL NULL NULL NULL Team 99 to atrapa na tydzień pożegnania dla zespołu. Jeśli stoły są zbyt źle zaprojektowane, daj mi znać, jak sprawić, by działały lepiej. Mam nadzieję, że to wystarczy, aby ktoś wskazał mi właściwy kierunek.


title: Czy projektowanie zorientowane obiektowo jest konieczne przy tworzeniu aplikacji webowych Symfony?

text: Jestem przede wszystkim programistą i jako taki dużo czytam na temat projektowania zorientowanego obiektowo; 5 zasad SOLID, wzorców projektowych, kompozycji ponad dziedziczeniem itp. Obecnie pracuję jako programista PHP budujący aplikacje internetowe w Symfony 2. Wraz z nauką stosowania podejścia Agile/BDD/TDD do budowania aplikacji internetowych, staram się włączyć trochę OOD przeszukując abstrakcje i zapisując niektóre interfejsy, z którymi klasy mają się komunikować (odwrócenie zależności). Niedawno otrzymałem zadanie zbudowania małego, wewnętrznego systemu CMS dla małej, statycznej strony internetowej. Wydawało się to świetną okazją do stworzenia np. abstrakcyjnej klasy „treści” i wyprowadzania z niej różnego rodzaju treści, czy też interfejsu do utrwalania treści w bazie danych. Jak się okazało, nie potrzebowałem żadnej wiedzy OOD, którą gromadziłem godzinami. Właśnie utworzyłem Entities dla każdego typu treści (choć pochodzą z podstawowej Entity) i użyłem Symfony Form API do renderowania formularzy dla danych wejściowych użytkownika. Funkcjonalność Symfony, w połączeniu z Doctrine, obsługiwała wszystkie utrwalanie danych w bazie danych. Pozostało tylko pobrać z bazy danych, przetworzyć ją i przekazać do szablonu Twig. Biorąc to pod uwagę, wyobrażam sobie, że nawet gdyby aplikacja była znacznie większa, wydaje się, że natura większości aplikacji internetowych polega na przyjmowaniu danych wejściowych użytkownika, przetwarzaniu ich, być może utrwalaniu ich i renderowaniu widoku. Wydaje się, że żadna z tych rzeczy nie wymaga żadnej wiedzy OOD lub znajomości wzorców projektowych. Moje pytanie brzmi, czy mój czas jest marnowany na naukę OOD, czy też nie powinienem przywiązywać do tego takiej wagi, ponieważ być może współczesne tworzenie aplikacji internetowych nie pasuje do tej dziedziny tworzenia "oprogramowania". NB: Zdaję sobie sprawę, że gdybym miał zbudować framework taki jak Symfony 2, to zasady OOD miałyby zastosowanie, ponieważ jest to tak naprawdę budowanie oprogramowania od podstaw. Moje pytanie jest bardziej związane z tym, kiedy używamy frameworka Symfony (lub dowolnego innego). **Edycja** Lepszy sposób na przeformułowanie mojego pytania: czy większość programistów aplikacji internetowych, będąc bogatymi w wiedzę na temat OOD, uważa, że nie muszą stosować ogromnej większości tej wiedzy podczas tworzenia aplikacji internetowych, ponieważ dzisiejsze ramy chronią Cię przed tak niskim poziomem projektowania. Czy ktoś ma jakieś przykłady modułów, które zbudował, które wymagały metodologii Object Oriented?


title: Jak przygotowywałeś się do rozmowy kwalifikacyjnej .NET?

text: Udzieliłem wielu wywiadów w ciągu ostatnich kilku lat i za każdym razem stwierdzałem, że ankieterzy nie są zadowoleni z tego, co wiem. Moja pierwsza firma opracowała tylko aplikacje dla komputerów stacjonarnych dla systemu Windows przy użyciu platformy .NET. Nie miały one nic wspólnego z funkcjami takimi jak: _Remoting_ itp. W ograniczonym stopniu korzystaliśmy także z _Generics_ , _Reflection_ i _Multi-threading_. Kiedy pojawiłem się na wywiady, zadano mi pytania dotyczące powyższych funkcji, nawet gdy powiedziałem im, że nie mam doświadczenia z prawdziwego życia. Teraz wywiady .NET są jeszcze bardziej złożone. Widząc moje doświadczenie, ankieterzy skupiają się na najnowszych frameworkach. Nie mam kontaktu z nowymi funkcjami i technologiami, takimi jak WPF, WCF itp. Proszę o sugestie, jak skutecznie przygotować się do rozmowy kwalifikacyjnej .NET. Mam 3 lata doświadczenia w .NET, ale tworzyłem tylko aplikacje dla Windows. Obecnie pracuję na platformie .NET Framework 3.5. Nigdy nie pracowałem na ASP.NET, ponieważ w mojej obecnej firmie pracuję nad PHP dla aplikacji internetowych.


title: Pytanie dotyczące architektury aplikacji wysokiego poziomu

text: Tak więc naprawdę chcę ulepszyć sposób projektowania oprogramowania, które koduję. Chcę skupić się na łatwości utrzymania i czystym kodzie. Jak można się domyślić, czytałem wiele zasobów na ten temat i jedyne, co robi, to utrudnia mi zaakceptowanie architektury, ponieważ nigdy nie mogę powiedzieć, czy mój projekt jest tym, który zrobiłby _bardziej doświadczony programista_ wybrałam. Mam więc następujące wymagania: * Powinienem połączyć się z jednym dostawcą i pobrać formularze z ich API. Nazwiemy je „FirmaA”. * Następnie należy zmapować te zgłoszenia do schematu nadającego się do przesłania do innego dostawcy w celu integracji z dostawcą usług poczty e-mail. Nazwiemy je „FirmaB”. * Następnie powinienem przesłać te odpowiedzi do ESP („FirmaB”), a następnie poinstruować ESP, aby wysłał temu przesyłającemu wiadomość e-mail. Zasadniczo kopiuję dane z jednej usługi sieciowej do drugiej, a następnie wykonuję akcję w drugiej usłudze sieciowej. Zidentyfikowałem kilka usług wysokiego poziomu: * Usługa, która pobiera dane z `FirmyA`. Nazwałem to „FirmaAIntegrator”. * Usługa, która przesyła dane do firmy `FirmaB`. Nazwałem to `FirmaBIntegrator`. Więc moje pytania są następujące: 1. Czy to dobry projekt? Próbowałem oddzielić obawy i planuję użyć wzoru fasady, aby w przyszłości integratory były wymienne, jeśli dostawcy zmienią się w przyszłości. 2. Czy moje konwencje nazewnictwa są dokładne i znaczące dla Ciebie (kto nie wie nic konkretnego o projekcie)? 3. Teraz, gdy mam te usługi, gdzie powinienem wykonać pracę polegającą na pobieraniu danych wyjściowych z `FirmaAIntegrator` i uzyskiwaniu ich w formacie wejściowym do `FirmaBIntegrator`? Czy można to zrobić w `main()`? 4. Czy masz jakieś ogólne wskazówki, jak zakodować coś takiego? Wyobrażam sobie, że ten scenariusz jest wspólny dla nas inżynierów — zwłaszcza tych pracujących w agencjach. Dzięki za wszelką pomoc, której możesz udzielić. Nauka dobrego architekta jest naprawdę bałaganem.


title: C++ lub C#: Jakiego języka Microsoft będzie używać przy opracowywaniu przyszłych wersji systemu Windows?

text: Słyszałem, że prawie wszystkie części systemu Windows są napisane w C i C++ z pewnym asemblerem. Dlaczego Microsoft pominął C#? Czy jest jakiś zakres dla C# w rozwoju przyszłych wersji Windows?


title: używanie skryptu przechwytującego przed zatwierdzeniem / po scaleniu w celu zastąpienia wartości konfiguracyjnych

text: Mam problem z tworzeniem aplikacji internetowej z różnymi programistami, każdy z nich ma określoną konfigurację do pracy. i chciałbym zastosować podejście polegające na mniejszym zużyciu zasobów, aby uniknąć sytuacji, w której jakakolwiek osobista konfiguracja trafia do repozytorium. **Podstawową ideą jest:** posiadanie pliku konfiguracyjnego ze wszystkimi parami klucz/wartość do przechowywania konfiguracji i zastąpienie określonych stałych wstawionych do kodu odpowiednią wartością w kodzie. Udaję, że zastępuję wartości w kodzie tekstem klucza, używając tej składni `{@KEY_TEXT}` przed zatwierdzeniem i wykonuję odwrotną operację w zaczepie po scaleniu. Robię to, prawda? czy jest na to bardziej efektywny sposób? **EDYTUJ:** Dlaczego nie mam całej konfiguracji debugowania w jednym pliku, ponieważ wszystkie te wartości są umieszczane w różnych plikach / i dotyczą wielu różnych języków programowania i różnych kontekstów. Używam języka plików ** PHP/javascript/Shell/Batch** (Windows). w środowisku wieloplatformowym


title: Ile kosztuje wsparcie projektu po roku?

text: Zrobiliśmy projekt, a koszt obejmuje roczne poprawki błędów i wsparcie. Ile powinniśmy pobierać za utrzymanie serwisu przez kolejny rok? czy istnieje wzór lub standardowy sposób na obliczenie tego?


title: Jaki jest powód, dla którego standard C uwzględnia rekurencyjnie stałość?

text: Standard C99 mówi w 6.5.16:2: > Operator przypisania powinien mieć modyfikowalną lwartość jako lewy operand. oraz w 6.3.2.1:1: > Modyfikowalna lwartość jest lwartością, która nie ma typu tablicy, nie ma > typu niekompletnego, nie ma typu kwalifikowanego jako const, a jeśli jest > strukturą lub unią, nie nie mają żadnego elementu członkowskiego (w tym rekursywnie dowolnego > elementu członkowskiego lub elementu wszystkich zawartych agregatów lub unii) z typem kwalifikowanym const->. Rozważmy teraz strukturę inną niż „stała” z polem „const”. typedef struct S_s { const int _a; } S_t; Standardowo poniższy kod jest niezdefiniowanym zachowaniem (UB): S_t s1; S_t s2 = { ._a = 2 }; s1 = s2; Problem semantyczny polega na tym, że otaczająca encja (`struct`) powinna być uważana za zapisywalną (nie tylko do odczytu), sądząc po zadeklarowanym typie encji (`S_t s1`), ale nie powinna być uważana za zapisywalną przez Sformułowanie standardu (2 klauzule na górze) ze względu na pole `const` `_a`. Standard czyni niejasnym dla programisty czytającego kod, że przypisanie jest w rzeczywistości UB, ponieważ nie można powiedzieć, że bez definicji typu `struct S_s ... S_t`. Co więcej, dostęp tylko do odczytu do pola i tak jest wymuszany tylko składniowo. Nie ma mowy, aby niektóre pola `const` nie będącej `const` `struct` były naprawdę umieszczane w pamięci tylko do odczytu. Ale takie sformułowanie standardu wyklucza kod, który celowo odrzuca kwalifikator `const` pól w procedurach akcesorów tych pól, tak jak to (Czy dobrym pomysłem jest const- kwalifikacja pól struktury w C?): **( *)** #include <stdlib.h> #include <stdio.h> typedef struct S_s { const int _a; } S_t; S_t * create_S(void) { return calloc(sizeof(S_t), 1); } void zniszcz_S(S_t *s) { wolne(s); } const int get_S_a(const S_t *s) { return s->_a; } void set_S_a(S_t *s, const int a) { int *a_p = (int *)&s->_a; *a_p = a; } int main(void) { S_t s1; // s1._a = 5; // Błąd set_S_a(&s1, 5); // OK S_t *s2 = utwórz_S(); // s2->_a = 8; // Błąd set_S_a(s2, 8); // OK printf("s1.a == %d\n", get_S_a(&s1)); printf("s2->a == %d\n", get_S_a(s2)); zniszcz_S(s2); } Tak więc, z jakiegoś powodu, aby cała `struct` była tylko do odczytu, wystarczy zadeklarować ją `const` const S_t s3; Ale aby cała `struktura` była nie tylko do odczytu, nie wystarczy zadeklarować jej bez `const`. To, co myślę, byłoby lepsze, to: 1. Ograniczenie tworzenia struktur nie będących `stałymi` polami `stałymi` i wydanie diagnostyki w takim przypadku. To by wyjaśniało, że `struktura` zawierająca pola tylko do odczytu sama jest tylko do odczytu. 2. Zdefiniować zachowanie w przypadku zapisu do pola `const` należącego do struktury innej niż `const`, aby kod powyżej **(*)** był zgodny ze Standardem. W przeciwnym razie zachowanie nie jest spójne i trudne do zrozumienia. Jaki jest więc powód, dla którego C Standard rozważa rekurencyjnie „stałość”, jak to określa?


title: Jak znaleźć dobry pośredni sposób, aby ta biblioteka była bezpieczna dla współbieżnych operacji?

text: Zrobiłem małą bibliotekę o nazwie SignalR.EventAggregatorProxy Zanim wypchnę ją do stanu 1.0, muszę to naprawić, aby działała bezpiecznie z współbieżnymi operacjami. Najłatwiej jest zablokować wszystkie operacje, ale ma to ogromny wpływ na wydajność. Biblioteka kolejkuje subskrypcje zdarzeń, a gdy pojawia się zdarzenie, sprawdza subskrypcje i aktualizuje klientów za pomocą SignalR Jest to klasa, która przechowuje subskrypcje Istnieją 3 metody, które zapisują/odczytują do kolekcji subskrypcji (agreguję subskrypcję zarówno na poziomie klienta i na poziomie zdarzenia, czyli dwie kolekcje) * Subskrybuj * Anuluj Subskrypcję * Anuluj Subskrypcję I jeden, który brzmi Znalazłem dobry pośredni sposób, który nie używa zamków? Myślę, że metoda Handle jest najważniejszą metodą i powinna być traktowana priorytetowo pod względem wydajności w stosunku do pozostałych 3. Zrobiłem ten mały test Unittest, aby przetestować pod kątem współbieżności, nie powiedzie się **aktualizacja:** Wybrałem zablokowane zapisy i odblokowane odczyty. Zapisy nie zmieniły istniejącego stanu, ale całkowicie nadpisały kolekcję.


title: Najlepszy sposób na wykorzystanie kontroli źródła w projekcie (1-3 osoby)

text: Więc mój partner i ja pracujemy nad systemem zarządzania praktyką i na początku nie korzystaliśmy z żadnej kontroli wersji, potem namówiłem go do korzystania z git. W tej chwili nasz system jest taki, że mamy trzy gałęzie: development, master i release. Nasze repozytorium git znajduje się na zewnętrznym serwerze, który ma Apache, MySQL itp. Codziennie kodujemy w gałęzi deweloperskiej (commits), a następnie przeprowadziliśmy testy, aby upewnić się, że jest (częściowo) wolne od błędów, łączymy je do gałęzi master. Jeśli chcemy zrobić coś radykalnego, po prostu robimy branch master, robimy bałagan i jeśli działa, to dobrze, łączymy go z powrotem, jeśli nie, usuwamy branch. W końcu, kiedy idziemy na nasze cotygodniowe wydanie, łączymy się z gałęzią wydania, aby upewnić się, że mamy kopię projektu w takiej postaci, w jakiej była wydana. Niestety nie śledzimy wszystkich plików w git, ponieważ za bardzo spowalnia git (np. obrazy, zwłaszcza, że jest to stary serwer z jednordzeniowym procesorem AMD Sempron 1,4 GHz), ponieważ `stan git` zwykle zmienia się z około 3s do około 1 minuty; lub ponieważ nie możemy (bazy danych mysql). Dla nas spowolnienie jest niewykonalne, więc po prostu je pomijamy, a to nigdy nie wydawało się problemem, ponieważ nie usunęliśmy żadnych obrazów, ale możemy zacząć wkrótce, gdy zaczniemy optymalizować. Więc kiedy pobieramy poprzednie zatwierdzenia, czasami nie ma plików, a więc jest uszkodzony (dużym problemem jest to, że nie możemy użyć kontroli wersji w bazie danych (ponieważ nie wiemy jak), więc ponieważ schemat to zmienił jest również zepsuty, jeśli wrócimy). I to jest w zasadzie nasz przepływ pracy. Więc biorąc pod uwagę moje tło, moje pytanie brzmi: **Czy uważasz, że są jakieś ulepszenia, które moglibyśmy wprowadzić do powyższego?** A na marginesie: Czy ktokolwiek zna niezawodny i łatwy-średni poziom trudności (tzn. nie _zbyt_ trudny) sposób na śledzenie baz mysql w git?


title: Jak radzić sobie z twardymi konfiguracjami na poziomie komponentów?

text: Podczas programowania wyróżniam trzy poziomy organizacji: poziom biblioteki, poziom komponentów i poziom aplikacji. Biblioteka definiuje funkcje do rozwiązywania szeregu powiązanych problemów lub wykonywania powiązanych operacji w sposób _narzędzia i bez zasad_. Aplikacja umożliwia interakcję kilku bibliotek i definiuje polityki dotyczące diagnostyki, obsługi błędów, internacjonalizacji… Komponent znajduje się pomiędzy biblioteką a aplikacją, obsługuje błędy niskiego poziomu i generuje diagnostykę, może być starym stanem globalnym i jest świadomy innych komponentów. Teraz mam bibliotekę zaimplementowaną jako funktor sparametryzowany przez moduł przechowujący stałą _n_, a wartości powiązane z różnymi wartościami _n_ mają niezgodne typy — co jest celem implementacji biblioteki jako funktora. Nazywam taką konfigurację konfiguracją _twardą_, ponieważ musi być jakoś zakodowana na sztywno w programie. Teraz mam do czynienia z następującym problemem: W tym ustawieniu chcę umożliwić użytkownikowi programu wybór wartości _n_ na czas trwania programu. Ponieważ biblioteka jest funktorem, czujemy się zmuszeni napisać komponent łączący bibliotekę z programem jako funktor. Ale chcę, aby wybrana wartość _n_ była właściwością komponentu, a nie aplikacji, i chcę, aby komponent był zwykłymi modułami (nie jest dozwolony funktor). Jak mogę opakować bibliotekę parametryczną (zaimplementowaną jako funktor) w nieparametryczny komponent, aby parametry mogły być wybierane podczas uruchamiania aplikacji? Nalegam, aby móc wyrazić logikę aplikacji na najwyższym poziomie w postaci modułów nieparametrycznych i chcę uniknąć na tym poziomie sparametryzowanych modułów w stylu rosyjskich lalek.


title: Wdrożenie silnika gry końcowej szachów bez baz tabel końcowych

text: Interesuje mnie stworzenie silnika do rozwiązywania szachowych końcówek gry. Końcówki w szachach są zwykle rozwiązywane przy użyciu podstaw tabel końcówek generowanych przez „algorytm wstecz”. Odkryłem, że do programowania szachów zastosowano sztuczną inteligencję i algorytmy genetyczne. Jednak przed rozpoczęciem realizacji chciałem się dowiedzieć, czy w szachy można grać bez podstawek stołów końcowych? Jeśli tak, to jakie są zalety i wady tych alternatyw dla stołów końcowych? Czy są jakieś inne algorytmy znane z tego problemu?


title: Pytanie dotyczące dziedziczenia własności witryny

text: Zapłaciłem za stronę internetową dla mojej działalności motelowej, a następnie dzięki działaniom mojego właściciela zostałem postawiony w sytuacji, w której mogłem złożyć wniosek o upadłość. Poprosiłem mojego menedżera IT i programistę o zamknięcie strony internetowej dla firmy. Od tego czasu sprzedał moją stronę nowym właścicielom. Wszystkie zdjęcia zrobiłem sam i jestem w co najmniej 4 zdjęciach na stronie. Nie ma żadnych zmian na stronie, jak ją opuściłem, a teraz jest na niej napisane, że jest ona objęta prawami autorskimi nowych właścicieli? Nie jestem pewien, co powinienem zrobić, ponieważ stało się to 10 miesięcy temu i właśnie się tego dowiedziałem. Dziękuję za pomoc, jestem w Australii.


title: Utrzymywanie synchronizacji backendu aplikacji i interfejsu użytkownika

text: Mam aplikację, która współpracuje z listą obiektów, więc ma jedną centralną listę z kluczami. W głównym oknie znajduje się drzewo zawierające te obiekty z pewnymi informacjami, które po załadowaniu można łatwo wypełnić jako jednorazowe zdarzenie. Teraz skomplikowana część, każda część aplikacji może dodawać, usuwać i, co ważniejsze, zmieniać szczegóły tych obiektów w dowolnym momencie (wszystko w tym samym procesie) i chciałbym, aby drzewo było odpowiednio aktualizowane. Mam kilka opcji, w tym przekazywanie zdarzeń z powrotem z obiektu na listę do formularza, co wydaje się być najbardziej elastycznym sposobem. Mogę też zrobić to leniwie i za każdym razem lub okresowo zaludniać drzewo (bardzo hackish). Czy ktoś ma lepsze przemyślenia na temat tego, jak to skonstruować? Odbywa się to w C# 2.0, ale koncepcje mają zastosowanie do dowolnego środowiska. Dziękuję


title: Wycena spersonalizowanego oprogramowania?

text: Obecnie pracuję nad Projektem Aplikacji Systemu Zamówień Zakupowych dla małej firmy. Oprogramowanie, nad którym pracuję, jest spersonalizowane na podstawie ich wymagań biznesowych. **Firma kazała mi stworzyć ofertę, podając cenę, ile kosztuje aplikacja, aby mogli zrealizować czek za mnie.** Osoba, która zleciła mi ten projekt, jest kierownikiem firmy, a także byłym kierownikiem łańcucha dostaw u mojego pracodawcy przed którymi pracuję wtedy również w niektórych ich aplikacjach. Więc chcę być uczciwy. To jest mój pierwszy raz, kiedy tworzę aplikację jako dodatkową, więc naprawdę nigdy nie doświadczyłem wyceny oprogramowania, mimo że pracuję jako pełnoetatowy programista w dużej firmie. Jakieś wskazówki i pomoc ?


title: Czy uwierzytelnianie przez HTTPS spowolni moją aplikację?

text: Zajmuję się tworzeniem aplikacji internetowej oraz serwisu internetowego RESTful. Czytałem różne artykuły o najlepszym sposobie uwierzytelniania żądań do usługi sieciowej. Wydaje mi się, że najlepszą opcją jest użycie podstawowego uwierzytelniania HTTP. Prawie każdy artykuł, który przeczytałem, mówi, że uwierzytelnianie powinno być szyfrowane przez SSL lub równoważne. Nie jestem do końca pewien, z czym to się wiąże. Czy to oznacza, że cała moja usługa internetowa będzie musiała znajdować się na bezpiecznym serwerze? Czy to spowolni sprawę?


title: Jaki jest najlepszy sposób pracy z dużymi bazami danych w Javie w zależności od kontekstu?

text: Próbujemy znaleźć najlepsze praktyki pracy z bardzo dużymi bazami danych w Javie. To, co robimy, to rodzaj BI (Business Intelligence), czyli analizowanie bardzo dużych DB i używanie ich do tworzenia pośrednich DB, które reprezentują inteligentną wiedzę o DB. Obecnie używamy JDBC i po prostu wykonujemy zapytania przy użyciu zestawu wyników. Ponieważ tworzonych jest coraz więcej danych, zastanawiamy się, czy istnieją bardziej odpowiednie sposoby analizowania i manipulowania tymi dużymi bazami danych: performance) 2. Nie musimy być w ciągłym kontakcie, ponieważ tylko wyciągamy wyniki i tworzymy własne tabele. 3. Chcemy zrozumieć alternatywy JDBC z uwzględnieniem zalet i wad. 4. Niezależnie od tego, czy uważasz, że JDBC jest dobrym rozwiązaniem, czy nie, jakie są najlepsze praktyki w zależności od kontekstu (np. w przypadku dużych baz danych pytanych w porcjach)?


title: Czy można zmodyfikować kodek wideo + go dystrybuować?

text: to jest moje pierwsze pytanie dotyczące tego konkretnego węzła stackexchange, nie jestem pewien, czy jest to najbardziej odpowiednie miejsce na to pytanie (jeśli nie, wskazówki dotyczące odpowiedniego węzła będą mile widziane). **streszczenie:** Jestem zainteresowany modyfikacją istniejących kodeków wideo i dystrybucją moich zmodyfikowanych kodeków w taki sposób, aby można je było łatwo dodać do biblioteki kodeków użytkownika... na przykład do ich streamclip mpeg, ffmpeg itp. **trochę szczegółów:** Miałem pewne doświadczenie w modyfikowaniu kodeków przez hakowanie plików źródłowych ffmpeg i kompilowanie mojego zhakowanego kodu (tak, że na przykład moja wersja ffmpeg ma zupełnie inny h.263 niż twoja). Interesuje mnie teraz wzięcie tych zmodyfikowanych kodeków i ułatwienie ich dystrybucji, aby inni mogli „dodać je” do swoich „bibliotek”. Ponadto zdaję sobie sprawę, że są tu pewne zawiłe kwestie związane z prawami/patentami, to po części moja motywacja. Interesują mnie grzęzawiska patentowe i chętnie przyjmę wszelkie przemyślenia na ten temat. **link ctx:** jeśli to pomaga (aby ocenić skąd pochodzę), oto link do mojego poprzedniego projektu hakowania kodeków http://nickbriz.com/glitchcodectutorial/


title: Jaki jest krajobraz fitness dla minimalnych + wykonalnych rozwiązań?

text: Powiedzmy, że szukam liczby od 1 do 100. Wszystkie liczby w tym zakresie są „prawidłowe”, w tym sensie, że mogą być interpretowane jako potencjalne rozwiązania. Powiedzmy, że idealna liczba to 50. A wszystkie liczby >= 50 są „wykonalne”, ponieważ faktycznie rozwiązują problem. A wszystkie liczby < 50 są „niewykonalne” (ale nadal ważne). Jak zakodowałbyś taki scenariusz z funkcją sprawności (zakładając, że krajobraz jest podobny, ale bardziej złożony niż ten wymyślny przykład)? Czy dajecie "bonusy" słusznym rozwiązaniom? Czy mierzysz, jak daleko pozostało niewykonalne rozwiązanie, zanim stało się optymalne? A czy karzesz nadmierne rozwiązania? if (rozwiązanie < 50) { maximalFitness = rozwiązanie } else if (solution >= 50) { maximalFitness = 1_000 - rozwiązanie } Krzywa nie byłaby ciągła, gdyby wszystkie rozwiązania wykonalne były lepsze niż wszystkie rozwiązania niewykonalne, pomimo podobnej odległości od optymalnego.


title: Dlaczego końcowe białe znaki to wielka sprawa?

text: Ciągłe białe znaki są wystarczającym problemem dla programistów, że edytory takie jak Emacs mają specjalne funkcje, które podświetlają je lub usuwają automatycznie, a wiele standardów kodowania wymaga wyeliminowania wszystkich ich wystąpień. Nie jestem jednak do końca pewien, dlaczego. Przychodzi mi do głowy jeden praktyczny powód unikania zbędnych białych znaków, a jest nim to, że jeśli ludzie nie są ostrożni w ich unikaniu, mogą to zmienić między zatwierdzeniami, a wtedy otrzymujemy diffy zanieczyszczone pozornie niezmienionymi wierszami, tylko dlatego, że ktoś usunął lub dodał spację. To już brzmi jak całkiem dobry powód, aby tego unikać, ale chcę zobaczyć, czy jest w tym coś więcej. Dlaczego więc końcowe białe znaki są takie ważne?


title: Czy jako początkujący programista powinienem preferować budowanie własnych bibliotek zamiast korzystania z bibliotek innych firm?

text: Czy jako początkujący programista Python dobrym pomysłem jest zbudowanie i zrozumienie własnych bibliotek przed przejściem do zaawansowanych bibliotek innych firm, które zawierają potrzebne mi funkcje? Niektóre projekty (np. frameworki internetowe, takie jak Django) są prawdopodobnie zbyt duże dla tego podejścia. Ale inne projekty (np. roboty indeksujące, biblioteki grafów, parser HTML) wydają się możliwe do zrealizowania. Martwię się, że wczesne poleganie na bibliotekach innych firm zahamowałoby mój rozwój. Uwaga: to pytanie i to pytanie wydają się skupiać bardziej doświadczonych programistów, którzy prawdopodobnie bardziej koncentrują się na wydajności ponownego wykorzystania niż na korzyściach płynących z nauki. Myślę, że moje pytanie dotyczy początkujących.


title: Ewolucja standardów kodowania, jak sobie z nimi radzisz?

text: Jak radzisz sobie z ewolucją standardów kodowania / style guide w projekcie dla istniejącej bazy kodu? Powiedzmy, że ktoś z Twojego zespołu odkrył lepszy sposób tworzenia instancji obiektów w języku programowania. Nie chodzi o to, że stary sposób jest zły lub zapluskwiony, po prostu nowy sposób jest mniej gadatliwy i wydaje się znacznie bardziej elegancki. I wszystkim członkom zespołu naprawdę się to podoba. Czy zmieniłbyś cały istniejący kod? Załóżmy, że twoja baza kodu to około 500 000+ linii kodu. Czy nadal chcesz zmienić cały istniejący kod? A może pozwolisz, aby nowy kod był zgodny z nowym standardem? Zasadniczo tracisz spójność? Jak radzisz sobie z ewolucją standardów kodowania w swoim projekcie?


title: Jakieś wskazówki dotyczące projektowania systemu fakturowania/płatności SaaS?

text: SaaS jest przeznaczony dla firm zajmujących się nieruchomościami i mogą one uiścić miesięczną opłatę, która zaoferuje im 1000 publikacji, ale mogą również korzystać z dodatkowych publikacji lub innych usług, które pojawią się na ich rachunku jako dodatki. Podczas rejestracji użytkownik może wybrać jeden z 5 dostępnych planów, a jedyną różnicą będzie ilość publikacji, na które pozwala mu dany plan. Ale mogą przekroczyć ten limit, jeśli chcą, a dodatkowa opłata będzie wymagana na następnym rachunku. Publikacja oznacza: Opublikowanie nieruchomości w ciągu jednego dnia, na cały miesiąc to: 30 publikacji. A 5 nieruchomości w ciągu jednego dnia to 5 publikacji. ## Więc w zasadzie użytkownik może: * Dokonać publikacji (już opłacona w ramach miesięcznej opłaty, dopłata tylko jeśli przekroczy limit) * Podświetlić publikację (dopłata) * Publikować na innych stronach internetowych lub w drukowanych katalogach (dodatkowo płatne) ## Wątpliwości: * Jak radzić sobie ze zmianami w planach cenowych? Powiedzmy, że ilość się zmienia lub chcesz zaoferować darmowe rzeczy. * Jak obsługiwać nieopłacone faktury? Mam na myśli zamrożenie usługi do czasu dokonania płatności, a następnie wznowienie jej. * Kiedy wystawiać faktury? Chodzi o to, aby wystawić jedną fakturę za opłatę miesięczną i drugą za wykorzystane dodatkowe usługi. * Jakich metod płatności użyć? Wybrany teraz jest przez konto bankowe i walidację telefonu komórkowego za pomocą SMS-a. Jeśli użytkownik nie zapłaci, dzwonimy pod ten telefon i prosimy o płatność. Wszelkie przykłady usług rozliczeniowych online będą mile widziane! Dziękuję!


title: Jakie są bariery w przyjmowaniu najlepszych praktyk? Jak można je pokonać?

text: Wszyscy widzieliśmy (i większość z nas napisała) mnóstwo źle napisanego kodu. Czemu? Co sprawia, że przyjmujemy złe praktyki, a nie dobre? Najbardziej oczywistą odpowiedzią (dla mnie) jest „ignorancja”, ale jestem pewien, że nie jest to jedyny powód. Jacy są inni? Co możemy zrobić, aby przezwyciężyć pokusę pisania złego kodu?


title: Aplikacja internetowa wykraczająca poza obecny framework

text: Mam spore doświadczenie w używaniu Django na stronach internetowych, więc kiedy zacząłem nowy projekt, naturalnie wybrałem do tego celu Django. Przez jakiś czas wszystko szło dobrze, ale teraz aplikacja naprawdę zaczyna ocierać się o to, z czym Django może sobie wygodnie poradzić, a ja cały czas walczę o to, aby wszystko działało zgodnie z przeznaczeniem. Zastanawiałem się nad przeniesieniem strony do Java EE 7 teraz, gdy została wydana. Z pewnością wydaje się, że zapewnia funkcje, których potrzebuję, a także jest mniej przekonujący w sposobie, w jaki projekt jest rozplanowany i utrzymywany. Wydaje mi się, że teraz, gdy mam już dobry pomysł na strukturę aplikacji, rozwój powinien przebiegać znacznie szybciej. Czy czułeś potrzebę zmiany używanego frameworka internetowego tylko dlatego, że nie pasuje on do typu projektu, który próbujesz stworzyć?


title: Co przetestować budując strony internetowe z wykorzystaniem CMS?

text: Zajmuję się głównie budowaniem stron internetowych z wykorzystaniem CMS-ów takich jak Drupal, eZPublish czy Magento. Większość pracy to tworzenie szablonów, CRUD i przestrzeganie specyfikacji. Czasami jest jakaś logika specyficzna dla biznesu, ale zwykle jest to około 20 linii. Większość logiki to kilka „jeśli” w szablonach. W tym kontekście trudno mi dyskutować o testach jednostkowych. Co powinienem przetestować? Tylko testy integracyjne? Zwykle można je wykonać tylko na bardzo wysokim poziomie, na przykład przy użyciu Selenium IDE. A Selenium jest trudny do obsługi w produktach w trybie projektowym, ponieważ wymagania często zmieniają się w ciągu 6 miesięcy, a potem projekt się kończy. Istnieją również inne trudności, takie jak dynamiczne adresy URL. (CMS nie zawsze respektuje architekturę RESTful, szczególnie jeśli chodzi o zawartość.) Jestem zwolennikiem testów jednostkowych. W przypadku bibliotek lub projektów opartych na frameworku, łatwo je piszę i konfiguruję dla nich serwer Jenkins. Ale w przypadku projektów opartych na CMS po prostu nie wiem jak i od czego zacząć.


title: Rozmowa o frameworkach Front End Web Development z perspektywy projektanta

text: Jestem Web Developerem pracującym w firmie, w której wybrany przez nas fronted framework to Angular JS. Jestem teraz w sytuacji, w której jestem „stałym ekspertem”, cokolwiek to może oznaczać. Otrzymałem zadanie nauczenia/wytłumaczenia wszystkiego, co nasi Projektanci powinni wiedzieć o Angular JS. Niestety moja wiedza/rozumienie projektowania zaczyna się i kończy na kole kolorów. W związku z tym mam następujące pytanie: co, jeśli cokolwiek projektant musiałby wiedzieć o front-endowym frameworku javascript w ogóle/w szczególności Angular JS, aby usprawnić swoją produktywność? Jakie rzeczy są nieistotne? Jakie rzeczy są ważne?


title: Zamieszanie w definicjach metody i metodologii w książce „OOAD with Applications” (Booch i in.)

text: Czytam książkę Object-Oriented Analysis and Design napisaną przez Grady'ego Boocha i innych. W Sekcji : I Koncepcje w podrozdziale Bringing Order to Chaos autorzy proponują oddzielenie _Metody_ od _Metodologii_ : Według książki: **Metoda** jest zdyscyplinowaną procedurą generowania zestawu modeli opisujących różne aspekty system oprogramowania w trakcie opracowywania, przy użyciu dobrze zdefiniowanej notacji. **Metodologia** to zbiór metod stosowanych w całym cyklu życia oprogramowania i ujednoliconych przez procesy, praktyki i ogólne podejście filozoficzne. Zrozumiałem, że _Metoda_ służy do budowania modeli systemu, a _Metodologia_ to zestaw takich metod, które są stosowane w całym cyklu życia oprogramowania. Według mojej wiedzy cykl życia oprogramowania obejmuje między innymi fazy analizy, projektowania, wdrażania i testowania. Jak to możliwe, że _Metoda_ wykorzystywana do budowania modeli systemu jest również stosowana w fazie implementacji lub testowania?


title: Czy zbyt duża abstrakcja może być zła?

text: Jako programiści czuję, że naszym celem jest dostarczenie dobrych abstrakcji dotyczących danego modelu domeny i logiki biznesowej. Ale gdzie powinna się skończyć ta abstrakcja? Jak dokonać **kompromisu pomiędzy abstrakcją** a wszystkimi jej korzyściami (elastyczność, łatwość zmiany itp.) **i łatwością zrozumienia kodu** i wszystkimi tego korzyściami. Uważam, że mam tendencję do pisania kodu nadmiernie abstrakcyjnego i nie wiem, jak dobry jest; Często piszę to tak, jakby to był jakiś rodzaj mikro-frameworku, który składa się z dwóch części: 1. Mikromoduły, które są połączone z mikro-frameworkiem: te moduły są łatwe do zrozumienia, rozwijania i utrzymywania jako pojedyncze jednostki. Ten kod zasadniczo reprezentuje kod, który faktycznie wykonuje czynności funkcjonalne opisane w wymaganiach. 2. Kod połączenia; teraz tutaj, jak sądzę, stoi problem. Ten kod bywa skomplikowany, ponieważ czasami jest bardzo abstrakcyjny i na początku trudno go zrozumieć; wynika to z faktu, że jest to tylko czysta abstrakcja, podstawa w rzeczywistości i logika biznesowa realizowana w przedstawionym kodzie 1; z tego powodu nie oczekuje się, że ten kod zostanie zmieniony po przetestowaniu. Czy to dobre podejście do programowania? Że to, mając zmieniający się kod bardzo pofragmentowany w wielu modułach i bardzo łatwy do zrozumienia, a niezmieniający się kod bardzo złożony z abstrakcji POV? Czy cały kod powinien być jednolicie złożony (czyli kod 1 bardziej złożony i powiązany, a kod 2 prostszy), aby każdy, kto go przeglądał, mógł go zrozumieć w rozsądnym czasie, ale zmiana jest kosztowna lub rozwiązanie przedstawione powyżej jest dobre, gdzie „Zmienianie kodu” jest bardzo łatwe do zrozumienia, debugowanie, zmienianie, a „łączenie kodu” jest dość trudne. Uwaga: nie chodzi o czytelność kodu! Zarówno kod 1, jak i 2 jest czytelny, ale kod 2 zawiera bardziej złożone abstrakcje, podczas gdy kod 1 zawiera proste abstrakcje.


title: Czy istnieje różnica między rzutowaniem a konwertowaniem typów w imperatywnych językach programowania?

text: Pytanie pojawiło się w dyskusji na StackOverflow. Czy istnieje wyraźne rozróżnienie między dwoma pojęciami **oddanych** i **konwertuj** (dotyczących typu obiektu), czy te dwa słowa opisują dokładnie to samo? Co powiesz na języki inne niż C++, Python i Java? **EDYTUJ** : co zrobić, jeśli dane typy są typami pierwotnymi, np. „int” do „float”?


title: Mimo woli zostać programistą: jak to zrobić dobrze?

text: Moje wykształcenie to elektrotechnika, a dokładniej DSP. Firma, w której obecnie pracuję, wykonuje wiele różnorodnych projektów, głównie budując sprzęt analogowy. Będąc nieco bliżej komputerów niż wszyscy tutaj, często jestem tym, który piszę kod dla obu urządzeń wbudowanych (z czym jestem całkowicie w porządku) i systemu operacyjnego Windows lub Linux. To ostatnie jest dla mnie obcym terytorium. Potrafię kodować i znam kilka języków (C/C++, Java, niektóre VB.NET), ale używałem ich tylko do symulacji algorytmów w przetwarzaniu sygnałów i obrazów, sieciach neuronowych i innych podobnych aplikacjach. Dla mnie programowanie było narzędziem obliczeniowym bardziej niż cokolwiek innego. Dostaję jednak coraz więcej projektów, w których muszę napisać porządne, pełnowartościowe oprogramowanie i nie do końca wiem jak to zrobić, bo nigdy nie musiałem tego robić i nigdy nie byłem wystarczająco zainteresowany. Sam widziałem wielu inżynierów, którzy w pewnym stopniu przekształcili się w programistów z powodu wymagań związanych z pracą, a większość z nich nie była tak dobra w tym, co robili. Jestem pewien, że wiele osób spotkało się z tym samym. Gdybym miał nauczyć się pisać odpowiednie oprogramowanie z dobrym interfejsem użytkownika, dobrą architekturą wewnętrzną itd., jak to zrobić? Nie mamy w pracy nikogo, kto mógłby mi powiedzieć, co jest dobrą praktyką, a co nie. Biorąc pod uwagę, że potrafię pisać _kod_ w najsurowszym tego słowa znaczeniu, co jeszcze można wiedzieć o pisaniu dobrego oprogramowania i jak mogę to zrobić samodzielnie?


title: Czy legalne jest umieszczanie `FSharp.Core.dll` z pakietu redystrybucyjnego FSharp?

text: Czy legalne jest umieszczanie pliku `FSharp.Core.dll` z pakietu FSharp Redist w moim pakiecie aplikacji i rozpowszechnianie go z moją aplikacją? Nie mogłem znaleźć żadnych informacji na ten temat.


title: Sprawienie, by to działało V/S Sprawienie, by działało dobrze

text: Jakoś jestem trochę dobry w kodowaniu algorytmów dla małych projektów, ale jeśli chodzi o podejmowanie prób dla kilku dużych, tworzę totalną mieszankę i pianki ze struktury mojego projektu. Przestudiowałem wiele książek na temat inżynierii oprogramowania i SDLC, w których mówią, że zostać programistą jest tym, co może zrobić każdy zakamarek, ale faktycznym programistą jest ten, który stosuje systematyczne podejście do problemu i rozwiązuje go tak, jak to miało na celu być. Mój kod działa dobrze dla takich pomieszanych projektów, ale staje się zbyt trudny do utrzymania i dalszych aktualizacji. Więc **proszę o sugestie, jakie powinno być właściwe podejście do planowania dużych ruchów**


title: Problem: Certyfikat dla wielu klientów WCF

text: * Jeśli moja usługa WCF ma dużą liczbę klientów za pośrednictwem Internetu, to czy wszyscy z nich powinni korzystać z tego samego certyfikatu klienta (X509)? * A jeśli ich certyfikaty powinny być unikatowe , co powinienem zrobić w WCF, aby zidentyfikować wszystkie certyfikaty? * Ostatnie pytanie: Czy muszę zaimportować certyfikat po stronie serwera do lokalizacji TrustedPeople na każdym kliencie? (Co wydaje się kłopotliwe i wygodne? )


title: Tworzenie aplikacji na Windows Phone 7 – czy warto?

text: Napisałem aplikację dla systemu Windows Phone 7 do wyświetlania map Ordnance Survey, które są tak uwielbiane w Wielkiej Brytanii (jestem zdumiony, że nikt inny jeszcze tego nie zrobił). Miałem jednak wyłożyć 65 funtów, aby zapłacić za centrum aplikacji i przenieść moją aplikację na rynek, kiedy zacząłem badać, w jaki sposób faktycznie zarabiasz za aplikacje, które kupują ludzie. Najwyraźniej jeśli nie jesteś programistą ze Stanów Zjednoczonych, musisz zacząć przesyłać formularze, np. Formularz W8BEN? a nawet po tym IRS zajmuje kolejne 30% (po tym, jak MS przejęło ich 30% udziału). Wspomina też o VAT, więc może po tym też odejmie się więcej pieniędzy??? Czy ktoś spoza Stanów Zjednoczonych załatwił wszystkie formalności, żeby mu zapłacić? Czy odliczono Ci również podatek? Jaki procent sprzedaży faktycznie kończysz? Czy to wszystko jest tego warte? Nie spodziewam się, że zarobię dużo na aplikacji, ale chciałbym myśleć, że mógłbym odzyskać moje 65 funtów i mieć wystarczająco dużo, aby kupić też kilka piw.


title: Co tak naprawdę unika znaku ucieczki odwrotnego ukośnika „\"?

text: Od czego tak naprawdę ucieka odwrotny ukośnik? Jest używany jako uciekająca postać. Ale zawsze zastanawiam się, co ucieka? Wiem, że "\n" to znak nowej linii. Ale co w tym ucieka? Dlaczego to się tak nazywa?


title: Czy CodeIgniter PHP Framework jest odpowiedni dla dużych aplikacji ERP lub biznesowych?

text: Czy CodeIgniter jest zalecany dla dużych aplikacji internetowych ERP lub aplikacji biznesowych? Chcę używać CodeIgnitera w moim przyszłym projekcie i jestem bardzo zdezorientowany, czy go używać, czy nie. Jestem tak zaniepokojony długotrwałym procesem lub czasem życia aplikacji, że może się zawiesić lub spowodować błąd lub błąd. Martwiłem się również o wydajność frameworka, gdy dane stają się większe i zawierają miliony rekordów. Szukałem w internecie odpowiedzi, ale nie ma dokładnie takiej odpowiedzi, która by mnie usatysfakcjonowała. Myślę, że to pytanie jest ważne dla programistów takich jak ja, którzy chcieli używać PHP Framework w swojej dużej aplikacji biznesowej. Potrzebuję rady od was, aby zdecydować, czy go użyć, czy nie. Dziękuję bardzo!


title: Ile kosztuje gotowe oprogramowanie?

text: Niedawno skontaktował się ze mną ktoś zainteresowany kupnem oprogramowania, które napisałem, aby zautomatyzować proces. „Klient” niewiele wie o programie, poza tym, co generuje i jak łatwy jest w użyciu. Są teraz zainteresowani zakupem, a ja muszę podać rozsądną cenę. Nigdy wcześniej czegoś takiego nie robiłem, więc jak można się domyślić, nie wiem od czego zacząć od ceny. Nad samym programem spędziłem dobre 12 godzin+. Klient prawdopodobnie również będzie chciał pewnych zmian. **Moje pytanie: Jak mogę ustalić, ile mam zapłacić za oprogramowanie, które zbudowałem w swoim czasie?**


title: Przyjęcie metod Lean

text: Czy są jakieś badania na temat przyjęcia zwinnych metod opartych na zasadach Lean? Niektóre statystyki, których szukam: 1. Jak szeroko stosuje się Lean? 2. Jeśli chodzi o metodyki Agile, w jaki sposób przyjęcie Lean wypada w porównaniu z innymi metodologiami Agile, takimi jak Scrum, XP, itp.?


title: Czy firmy powinny wymagać od programistów podania kodu, którego nie napisali?

text: W środowisku akademickim uważa się za oszustwo, jeśli uczeń kopiuje kod/pracę od kogoś/z innego miejsca bez przyznawania punktów i próbuje przekazać je jako własne. Czy firmy powinny wymagać od programistów, aby prawidłowo przypisywali wszystkie _nietrywialne_ kody i prace, których sami nie wyprodukowali? Czy jest to przydatne, czy to po prostu przesada? Rozumiem, że istnieją różne darmowe licencje, ale jeśli znajdę coś, co mi się podoba i faktycznie używam, naprawdę czuję się zmuszony do udzielenia kredytu poprzez komentarz w kodzie, nawet jeśli nie jest to wymagane przez licencję (lub jej brak).


title: Dobre źródło wiedzy na temat tworzenia formularzy Windows

text: Jestem programistą .NET, który dobrze zna język C# i tworzenie aplikacji internetowych. Muszę poszerzyć swoją wiedzę na temat WinForm. Czym jest dobra książka lub zasób online, który w szczególności opisuje cykl życia WinForm? Jakich wydarzeń użyć do czego? Jak OnLoad wypada w porównaniu z Form_load itp.


title: Jak rozpoznać złego klienta zanim zaczniesz dla niego pracować?

text: Jestem pewien, że wielu z was spotkało złego klienta. Jestem też pewien, że podjąłeś pewne kroki, aby zapobiec takim spotkaniom w przyszłości. Jaka jest najbardziej wpływowa cecha klienta, która ostrzega cię przed odejściem?


title: Jak czytasz ten wiersz kodu?

text: Wybacz mi mój słaby angielski, ja i mój kolega odrabialiśmy lekcje w szkole, nagle poprosił mnie o przeczytanie tej linii kodu `ptr = &array[1][1][1]` (ptr jest wskaźnikiem do liczby całkowitej). Powiedział, że > ptr wskazuje na adres drugiego elementu drugiej kolumny > drugiego wiersza tablicy. Myślę, że miałby rację, gdyby była to tablica znaków. O ile jest to tablica 3D z liczbami całkowitymi, nie mam pojęcia, jak odczytać ten wiersz kodu w prostym języku angielskim. Jak byś to przeczytał?


title: Jak wyglądałby dobry przepływ pracy dla mentora programowania?

text: Przeczytałem temat dla juniorów w zakresie mentoringu, który odpowiedział na większość moich wątpliwości. Jednak ten temat daje ogólne (choć bardzo dobre) porady dotyczące mentoringu, podczas gdy mnie głównie interesuje, jak wygląda tydzień mentora. Tak jest w moim przypadku. Mam juniora (1 rok doświadczenia), który dostał nowy projekt i jestem jego mentorem. Chociaż jestem pewien, że będzie używał google i nie będzie mi zadawać głupich pytań, chcę mieć pewność, że jest na właściwej ścieżce i nie tworzyć struktur, które są trudne do utrzymania lub powolne w realizacji. Czy powinienem teraz: 1. Codziennie sprawdzać kod i sprawdzać go? * Za: wykrywaj błędy w jego korzeniu * Wada: czasochłonne, może coś przeoczyć, ponieważ za mną również dzień pracy. 2. Kiedy potrzebuje zaimplementować powiedzmy singletona, mam mu powiedzieć, żeby znalazł go w google i wrócił do mnie z rozwiązaniem? Czy też pozwalam mu go wdrożyć, a później go przejrzeć? * Pro: nie czeka, aż mu odpowiem. * Wada: może to źle wdrożyć i stracić cenny czas. 3. Czy są sytuacje, w których mogę po prostu sprawdzić wynik? Tak jak ja jestem QA. Czy zawsze muszę trzymać się przeglądu kodu? 4. W którym momencie powinienem przestać być mentorem? Po ilu projektach lub po jakim czasie? 5. Czy coś jeszcze przegapiłem?


title: MCPD: Webdeveloper 4 Visual Studio 2010 Materiały szkoleniowe

text: Myślę o zdaniu 4 egzaminów wymaganych, aby zostać MCPD Webdeveloper 4 Visual Studio 2010. Egzaminy można znaleźć tutaj: http://www.microsoft.com/learning/en/us/certification/mcpd.aspx#tab2 tylko jedna książka w amazon, mająca raczej złą ocenę. Czy ktoś może polecić jakieś materiały szkoleniowe do tych egzaminów?


title: Jak wprowadzić nowego programistę do złożonego projektu?

text: Mamy dość złożony projekt z około 100 klasami, wieloma niestandardowymi elementami itp. Mamy nowego starszego programistę, który będzie pracował nad tym projektem. Jak podejść do zadania wprowadzenia starszego programisty do projektu? Jak możemy upewnić się, że programista nie zepsuje jakiejś innej funkcji podczas naprawiania obecnej? Widziałem zbyt wiele podobnych sytuacji. Czasami nowe błędy nie są zauważane od razu - ale pojawiają się kilka miesięcy później. Czy mam kierować programistą, najpierw przydzielając mu mniejsze zadania i czekając, aż je zakończy? Czy jest lepsze rozwiązanie? Pytam o to, ponieważ nie chcę zostać mikromenedżerem, ale też nie chcę, aby z powodu mojego złego podejścia do nowego programisty powstawały nieprzyjemne błędy.


title: Programista jako kierownik projektu czy nie-programista?

text: Jesteśmy zespołem programistów i zatrudniamy nową osobę, która będzie tylko kierownikiem projektu. Nasze projekty to tylko projekty programistyczne i nie jesteśmy pewni, jak zdecydować, kto będzie najlepszy dla kierownika projektu. Czy znajdziemy starszego programistę z naszej dziedziny programowania? A może musimy znaleźć zwykłego faceta (studenta ekonomii lub zarządzania), który nigdy w życiu nie kodował? **EDYTUJ** Kierownik projektu będzie_ * Twórz zadania dla programistów * Monitoruj, czy przestrzegany jest nasz przepływ zgłoszeń * Ostrzegaj programistów przed przekroczeniem szacowanego czasu pracy * Zarządzaj tygodniowymi arkuszami czasu pracy * Pomóż klientowi i odpowiadaj na jego pytania * Ustalaj spotkania między klientem a programiści (spotkania internetowe) I podobne rzeczy. Teraz, kiedy to pisałem, widzę, że nie ma tu zadań IT. Ale co z prostymi pytaniami, które zadają klienci i na które wykształcona osoba IT będzie w stanie odpowiedzieć? oczywiście nie możemy przez cały czas przeszkadzać programistom. to jest główny powód, dla którego mamy wątpliwości.


title: Książki C# dla doświadczonego programisty

text: > **Possible Duplicate:** > Czy istnieje kanoniczne źródło do nauki wewnętrznych elementów C# i .NET? Więc od 3 lat programuję w C# (wcześniej też programowałem w różnych językach) i większość rzeczy, których się nauczyłem, poskładałem w internecie. Chodzi o to, że chcę zrozumieć C# bardziej formalnie i dogłębnie, więc chciałbym uzyskać kilka książek na te tematy. Jakieś książki, które poleciłbyś? Ponadto słyszałem dobre rzeczy o "C# 4.0 w pigułce", "Pro C# 2010 i platforma .NET 4" i "CLR przez C#". Co o nich myślisz? (Ludzie ze stackoverflow kazali mi to zabrać tutaj. Proszę, proszę powiedz mi, że tym razem jestem we właściwym miejscu)


title: Co to znaczy, że dane są skalarne?

text: Nie wiem, co dokładnie oznacza skalar, ale staram się sprawdzić, czy dobrze o tym myślę. Czy skalar odnosi się do arbitralności, w której typ danych może być dowolnego typu lub system nie jest w stanie z góry wiedzieć, jakie są dane.


title: Gdzie powinienem umieścić powiązania dla wstrzykiwania zależności?

text: Jestem nowy w wstrzykiwaniu zależności i chociaż do tej pory bardzo mi się to podobało, nie jestem pewien, gdzie powinny iść wiązania. Używam Guice w Javie, więc niektóre z tego, co powiem, mogą dotyczyć tylko Guice. Jak widzę, są dwie opcje: **Towarzyszenie klas, do których jest potrzebna.** Następnie po prostu napisz `install(OtherClassModule.class)` w dowolnym innym module, który chce mieć możliwość korzystania z tej klasy. Jak widzę, zaletą tego jest to, że klasy, które chcą z niego korzystać (lub zarządzają klasami, które chcą z niego korzystać) nie muszą znać żadnych szczegółów implementacji. Problem, który widzę, polega na tym, że co, jeśli dwie klasy chcą używać dwóch różnych wersji tej samej klasy? Istnieje wiele możliwości dostosowania ze względu na DI, a to wydaje się bardzo go ograniczać. **Zaimplementowany w module zajęć jest potrzebny.** To odwrócenie tego, co powiedziałem powyżej. Teraz masz dostosowanie, ale nie enkapsulację. Czy istnieje trzecia opcja? Czy źle rozumiem coś oczywistego? Jaka jest najlepsza praktyka?


title: Dlaczego std::allocators nie są tak popularne?

text: Biorąc pod uwagę najnowsze trendy w aplikacjach C i C++, a ostatnio mam na myśli ostatnie lata, spodziewałem się, że `std::allocator`s będą używane znacznie częściej niż w rzeczywistości. Nowoczesne aplikacje są zwykle wielowątkowe lub posiadają w sobie formę współbieżności i zarządzają znaczną ilością pamięci, zwłaszcza w niektórych dziedzinach, takich jak gry i aplikacje multimedialne; więc zwykle wysoki koszt alokacji/dealokacji rośnie i wpływa na wydajność nawet bardziej niż w przypadku starych aplikacji. Ale z tego, co widzę, ten rodzaj zarządzania pamięcią przez `std::allocator`s nie jest popularny, nie mogę nawet zliczyć 1 biblioteki, którą znam, która używa jakiegokolwiek uzasadnienia dotyczącego standardowego sposobu zarządzania pamięcią. Czy istnieje prawdziwy powód, dla którego `std::allocator` nie jest popularny? Przyczyny techniczne ?


title: Co mogę zrobić, aby poinformować użytkowników o potencjalnych błędach w moim oprogramowaniu, aby zminimalizować odpowiedzialność?

text: Jestem niezależnym programistą, który przez ostatnie kilka miesięcy tworzył oprogramowanie do przeglądania i wyszukiwania danych map. Oprogramowanie posiada również pewne funkcje nawigacyjne (mapy, kierunki itp.). Ostatecznym celem jest sprzedaż go na rynkach aplikacji mobilnych. Jako źródła danych używam OpenStreetMap. Obawiam się odpowiedzialności za błędne dane map/instrukcje trasowania itp., które mogą wystąpić, gdy ktoś korzysta z aplikacji. W Internecie jest wiele historii, w których ktoś ulegnie wypadkowi, utknie lub zgubi się z powodu urządzenia GPS/Map Google/aplikacji do mapowania... Ja sam natknąłem się na nieprawidłowe dane mapy, a także w urządzeniu GPS mieć w moim samochodzie. Chociaż staram się tworzyć własne oprogramowanie tak wolne od błędów, jak to tylko możliwe, żadne oprogramowanie nie jest tak naprawdę wolne od błędów. Poza tym, co mogę kontrolować, dane OpenStreetMap (i ogólnie dane map ulic) są również podatne na błędy. Jakie kroki mogę podjąć, aby wyraźnie poinformować użytkownika, że wyniki działania oprogramowania nie zawsze są doskonałe i zminimalizować moją odpowiedzialność?


title: Większy lub identyczny z?

text: Przeglądając mój kod w słabo pisanym języku zauważyłem, że nauczyłem się używać tożsamości (`===`), gdzie jest logiczne. Potem natknąłem się na większe (lub mniejsze) niż lub równe (`>=`) i to mnie zastanowiło… dlaczego nie ma „większego lub identycznego”? Przypuszczam, że byłoby to `>==`. Na przykład... 5 == 5 // prawda 5 === 5 // prawda 5,5 >= 5 // prawda 5,5 >== 5 // fałsz 6 >= 5 // prawda 6 >== 5 // prawda Zasadniczo wyrzuciłbym fałsz, gdyby był innego typu. Na przykład, jeśli chcę sprawdzić, czy $x jest większe niż $y, ale chcę, aby obie były liczbami całkowitymi (lub liczbami zmiennoprzecinkowymi, ale bez mieszania), czy nie ma sensu mieć jednego wywołania, które może zrobić wszystko że zamiast sprawdzać osobno, czy są tego samego typu? Szybkie google wskazało, że może to nie istnieć w żadnym języku; Dlaczego nie? Czy to po prostu nie jest tak przydatne, jak mogłoby się wydawać? :)


title: Czy modele danych powinny wiedzieć, gdzie/jak są przechowywane?

text: Mam kilka klas, które reprezentują w większości dane, które są deserializowane z XML. Mają też w sobie pewne zachowanie, ponieważ nie chcę cierpieć na anemiczny model domeny. Te obiekty domeny nie zawierają żadnego kodu specyficznego dla XML, ale mają właściwości, które dokładnie odpowiadają tagom i atrybutom w XML. Wiele z zachowań tych klas opiera się na zasobach załadowanych z dysku, takich jak obrazy. W tym celu niektóre właściwości / atrybuty xml są względnymi ścieżkami plików do tych zasobów. Teraz zaczynają się moje problemy. Ścieżka bezwzględna, która ma zostać zbudowana dla tych zasobów, opiera się na osobnej zależności – korzeń „projektu”. Oto, z czym mam problemy: 1. Czy moje obiekty domeny powinny przechowywać pełną ścieżkę bezwzględną do swoich zasobów? Czy tylko ścieżki względne? Jeśli posiadały ścieżkę bezwzględną, to klasy, które je ładują — moi czytelnicy XML — będą musiały uzależnić się od głównego katalogu projektu, aby zbudować dla nich pełną ścieżkę. Jeśli nie, będę musiał stworzyć jeszcze jedną warstwę klas, aby sobie z tym poradzić. Mam już 3 warstwy, nie wiem czy dam radę więcej! 2. Czy moje obiekty domeny powinny przechowywać _własne ścieżki_ do miejsca, w którym znajdują się na dysku? To ma sens, aby wiedzieć, gdzie są ich zależności w stosunku do nich, ale znajomość ich własnej lokalizacji jest dla mnie intuicyjnie niewłaściwa. Jest to trochę niezwiązane z drugą częścią pytania, ale myślę, że jeśli pójdę w złą stronę, może mnie to później ugryźć.


title: Przykłady przeciążania operatorów, które mają sens

text: Podczas nauki C# odkryłem, że C# obsługuje przeciążanie operatorów. Mam problem z dobrym przykładem, który: 1. Ma sens (np. dodanie klasy o nazwie owca i krowa) 2. Nie jest przykładem konkatenacji dwóch ciągów. Mile widziane są przykłady z biblioteki klas bazowych.


title: Opcjonalne zależności w npm?

text: Mam podobne pytanie do tego, ale nie do końca takie samo. Chciałbym, aby użytkownik mojej aplikacji zainstalował ją z dowolnymi zależnościami, które są potrzebne do sposobu, w jaki chciałby z niej korzystać. Na przykład, jeśli chcą utrwalić się w MongoDB, zostaną zainstalowane tylko biblioteki związane z Mongo, ale jeśli chcą utrwalić się w Redis, zostaną zainstalowane tylko biblioteki związane z Redis. Nie chcę zmuszać ich do pobierania i instalowania bibliotek, z których nie będą korzystać. Wiem, że mogę to zrobić dla celów programistycznych za pomocą `devDependencies`, ale to idzie dalej. Jak mówi odpowiedź w powyższym pytaniu, jest to ściślej związane z profilami `setuptools` `extras_require` i Clojure `leiningen` w Pythonie. Coś takiego w npm? Naprawdę uważam, że `devDependencies` powinien być profilem `dev` bardziej wszechstronnym sposobem określania zależności.


title: Walidacja i autoryzacja w architekturze warstwowej

text: Wiem, że myślisz (a może krzyczysz), „nie kolejne pytanie dotyczące walidacji w architekturze warstwowej?!?” No tak, ale miejmy nadzieję, że będzie to trochę inne podejście do tematu. Mocno wierzę, że walidacja przybiera wiele form, jest oparta na kontekście i różni się na każdym poziomie architektury. To jest podstawa dla postu - pomagając określić, jaki rodzaj walidacji należy wykonać w każdej warstwie. Ponadto często pojawia się pytanie, gdzie należy sprawdzać autoryzację. Przykładowy scenariusz pochodzi z aplikacji dla firmy gastronomicznej. Od czasu do czasu w ciągu dnia kierowca może oddać do biura nadmiar gotówki, który zgromadził podczas przewożenia ciężarówki z miejsca na miejsce. Aplikacja umożliwia rejestrację „zrzutu gotówki” poprzez pobranie dowodu osobistego kierowcy oraz kwoty. Oto szkielet kodu ilustrujący zaangażowane warstwy: public class CashDropApi // To jest w warstwie fasadowej usługi { [WebInvoke(Method = "POST")] public void AddCashDrop(NewCashDropContract contract) { // 1 Service.AddCashDrop(contract. Kwota, umowa.DriverId); } } public class CashDropService // To jest usługa aplikacji w warstwie domeny { public void AddCashDrop(wartość dziesiętna, Int32 driverId) { // 2 CommandBus.Send(new AddCashDropCommand(amount, driverId)); } } klasa wewnętrzna AddCashDropCommand // To jest obiekt polecenia w warstwie domeny { public AddCashDropCommand(Kwota dziesiętna, Id_sterownika Int32) { // 3 Kwota = kwota; identyfikator kierowcy = identyfikator kierowcy; } public Kwota dziesiętna { get; zestaw prywatny; } public Int32 DriverId { get; zestaw prywatny; } } internal class AddCashDropCommandHandler : IHandle<AddCashDropCommand> { internal ICashDropFactory Factory { get; ustawić; } // Ustaw przez kontener IoC wewnętrzny ICashDropRepository CashDrops { get; ustawić; } // Ustaw przez kontener IoC wewnętrzny IEmployeeRepository Employees { get; ustawić; } // Ustaw przez kontener IoC public void Handle(AddCashDropCommand command) { // 4 var driver = Employees.GetById(command.DriverId); // 5 varauthorBy = CurrentUser as Employee; // 6 var cashDrop = Factory.CreateCashDrop(polecenie.Kwota, sterownik, autoryzowany przez); // 7 CashDrops.Add(cashDrop); } } public class CashDropFactory { public CashDrop CreateCashDrop(Kwota dziesiętna, Pracownik, kierowca, Pracownik autoryzowany przez) { // 8 return new CashDrop(kwota, kierowca, autoryzowany przez, DateTime.Now); } } public class CashDrop // Obiekt domeny (entity) { public CashDrop(Kwota dziesiętna, Pracownik, kierowca, Pracownik autoryzowanyBy, DateTime at) { // 9 ... } } public class CashDropRepository // Implementacja znajduje się w Data Access Warstwa { public void Add(CashDrop item) { // 10 ... } } Wskazałem 10 lokalizacji, w których widziałem czeki walidacyjne umieszczone w kodzie. Moje pytanie brzmi, jakie czeki, jeśli w ogóle, przeprowadzałbyś przy każdej z następujących reguł biznesowych (wraz ze standardowymi czekami dotyczącymi długości, zakresu, formatu, typu itp.): 1. Kwota spadku gotówki musi być większa od zera . 2. Zrzut gotówki musi mieć ważnego kierowcę. 3. Aktualny użytkownik musi mieć uprawnienia do dodawania zrzutów gotówkowych (bieżący użytkownik nie jest kierowcą). Podziel się swoimi przemyśleniami, jak podchodzisz lub podchodzisz do tego scenariusza i powodami swoich wyborów.


title: Czym różni się wzorzec publikowania-subskrypcji od gotos?

text: Rozumiem, że oświadczenia Goto są generalnie niezadowolone. Ale wzorzec publikuj-subskrybuj wydaje się być koncepcyjnie podobny, ponieważ gdy fragment kodu publikuje komunikat, wykonuje jednokierunkowe przekazanie kontroli. Programista może nie mieć pojęcia, które części programu subskrybują tę wiadomość. Widziałem coś podobnego w wielu programach JavaScript, w których zdarzenia są używane do wygodnego „przeskakiwania” między modułami. Czy brakuje mi czegoś na temat wzorców publikowania-subskrypcji lub opartych na zdarzeniach?


title: Mam poczekać do wydania Mango?

text: Zastanawiałem się, czy uruchomić aplikację na Windows Phone, ale wydaje mi się, że lepiej poczekać, aż Mango zostanie wydane. Czy Mango to nowa platforma, czy też aktualizacja do Windows Phone 7 (czyli Windows Phone 8)? Czy oczekuje się, że nadejdzie w najbliższej przyszłości? To znaczy, czy projekt rozpoczynający się dzisiaj powinien się tym martwić?


title: Najlepszą praktyką jest nie sondowanie... ale czy sondowanie i tak nie odbywa się wewnętrznie, gdy wątek wywołuje wait()?

text: Powiedzmy, że mamy wątek, który chce sprawdzić, kiedy inny wątek zakończy swoje zadanie. Przeczytałem, że powinniśmy wywołać funkcję typu wait() , która sprawi, że ten wątek czeka, aż otrzyma powiadomienie, że inny wątek został zakończony. I to jest dobre, ponieważ oznacza, że nie przeprowadzamy kosztownych sondaży. Ale czy ankietowanie i tak nie odbywa się wewnętrznie na niższym poziomie? Tj. jeśli zrobimy wątek wait(), to czy kernal i tak nie wykonuje odpytywania, aby sprawdzić, kiedy drugi wątek zostanie zakończony, aby mógł następnie powiadomić pierwszy wątek? Zakładam, że coś mi tu brakuje, czy ktoś może mnie oświecić?


title: Projekt: Metoda obiektu a metoda oddzielnej klasy, która przyjmuje obiekt jako parametr?

text: Na przykład, czy lepiej zrobić: Pdf pdf = new Pdf(); pdf.Drukuj(); lub: Pdf pdf = nowy Pdf(); PdfPrinter drukarka = nowa PdfPrinter(); drukarka.Drukuj (pdf); Inny przykład: Country m = new Country("Meksyk"); podwójny stosunek = m.GetDebtToGDPRatio(); lub: Kraj m = nowy kraj("Meksyk"); Kraj us = nowy Kraj("USA"); DebtStatistics ds = new DebtStatistics(); double usRatio = ds.GetDebtToGDPRatio(us); podwójne mRatio = ds.GetDebtToGDPRatio(m); W ostatnim przykładzie obawiam się, że istnieją potencjalnie nieskończone statystyki (ale powiedzmy, że nawet 10), które możesz chcieć poznać na temat danego kraju; czy wszystkie należą do obiektu wiejskiego? np. Kraj m = nowy kraj("Meksyk"); podwójny stosunek = m.GetGDPToMedianIncomeRatio(); Są to proste wskaźniki, ale załóżmy, że statystyki są na tyle skomplikowane, że uzasadniają zastosowanie metody. Gdzie jest ta granica między operacjami, które są nieodłączne dla obiektu a operacjami, które można wykonać na obiekcie, ale nie są jego częścią?


title: Różnica między informatyką a komputerowym systemem informacyjnym?

text: Zadaję Ci to pytanie, ponieważ jesteś ekspertem w programowaniu i może mógłbyś mi pomóc. Niestety w moim kraju nie możesz dostać pracy, jeśli nie masz dyplomu uniwersyteckiego, nawet jeśli jesteś świetnym programistą, więc w tym roku poszedłem na studia i zrobiłem specjalizację z informatyki, ale jestem tak zdezorientowany CS i CIS , i w jakim kierunku powinienem wydać na to swoje pieniądze , , Jest ponad 25 przedmiotów wzajemnych między nami , ale są też przedmioty specjalne dla informatyki , także inne przedmioty dla komputerowego systemu informacyjnego , ** informatyka specjalizacja** : 1. Matematyka dyskretna 2. Algebra liniowa i analizy numeryczne 3. Teoria obliczeń 4. Projektowanie kompilatorów 5. Bezpieczeństwo sieci bezprzewodowych 6. Sztuczna inteligencja 7. Organizacja i architektura komputerów 8. Systemy eksperckie ======== =================================== **Specjalizacja komputerowych systemów informatycznych :** 1.Systemy wyszukiwania informacji 1 Zarządzanie siecią 2. Sieć bezprzewodowa 3. Systemy zarządzania bazami danych 4. Bezpieczeństwo informacji 5. Hurtownia danych za pomocą 6. Eksploracja danych 7. Inteligentne systemy


title: Czy kompilator C++ usuwa/optymalizuje niepotrzebne nawiasy?

text: Czy kod int a = ((1 + 2) + 3); // Łatwy do odczytania działa wolniej niż int a = 1 + 2 + 3; // (Prawie) Niezbyt łatwe do odczytania lub nowoczesne kompilatory są wystarczająco sprytne, aby usunąć/zoptymalizować "bezużyteczne" nawiasy. Może się wydawać, że jest to bardzo mały problem dotyczący optymalizacji, ale wybór C++ zamiast C#/Java/... dotyczy optymalizacji (IMHO).


title: Najlepsze praktyki dotyczące zarządzania i utrzymywania dużej aplikacji Railsowej?

text: Jakie są najlepsze praktyki zarządzania i utrzymywania dużej aplikacji Railsowej?


title: Zgodność trybu ścisłego JavaScript

text: Czytając o trybie ścisłym w MDN, byłem naprawdę zaskoczony, gdy przeczytałem następujący tekst pod koniec strony, cytuję: > Przeglądarki nie implementują jeszcze niezawodnie trybu ścisłego, więc nie polegaj na nim ślepo. Tryb ścisły zmienia semantykę. Poleganie na tych zmianach spowoduje > błędy i błędy w przeglądarkach, które nie implementują trybu ścisłego. Ćwicz > ostrożność w używaniu trybu ścisłego i wykonaj kopie zapasowe w trybie ścisłym za pomocą > testów funkcji, które sprawdzają, czy zaimplementowano odpowiednie części trybu >. Na koniec upewnij się, że testujesz swój kod w przeglądarkach, które i > nie obsługują trybu ścisłego. Jeśli testujesz tylko w przeglądarkach, które nie obsługują > trybu ścisłego, bardzo prawdopodobne jest, że będziesz mieć problemy w przeglądarkach, które to robią i > na odwrót. O ile rozumiem, tryb ścisły jest ponownie używanym zestawem trybów „nieścisłych”, dlatego nie wyobrażam sobie sytuacji, w której ścisły kod nie może działać poprawnie w przeglądarce nieścisłej. Więc pytanie, czy to stwierdzenie naprawdę ma sens? Czy istnieje sytuacja, w której przełącznik ścisłego na „nieścisły” spowoduje, że kod będzie nieważny?


title: Problem z projektem C#

text: Buduję małą aplikację i staram się zrozumieć najlepszy sposób podejścia do projektu. Potrzebuję wskazówek/rad, jak najlepiej podejść do poniższego problemu. To, co mam, to to, że otrzymuję zestaw danych w czasie rzeczywistym. Następnie analizuję dane pod kątem wzorców. Wzorce to klasy, które wywodzą się z klasy abstrakcyjnej, która implementuje interfejs. Liczba wzorów będzie się zmieniać w czasie w miarę dodawania/usuwania wzorów. Dodatkowo, w zależności od poziomu dostępu użytkownika, dane są analizowane z różnymi opcjami wzorców. Na przykład, jeśli mam pięć wzorców, A, B, C, D i E, dostęp na poziomie 100 może analizować dane tylko za pomocą wzorca A, podczas gdy poziom dostępu 300 będzie analizować za pomocą wzorców B, D i E, a poziom dostępu 500 będzie analizować ze wszystkimi wzorami. Poziomy dostępu są powiązane z użytkownikiem, a użytkownik może mieć różne poziomy dostępu do różnych strumieni danych. Moją myślą jest stworzenie tablicy mieszającej lub słownika dla wzorców oraz bazy danych dla użytkowników i ich różnych poziomów dostępu. Czy to najlepsza droga, czy może jest lepsze podejście, które będzie działać w czasie rzeczywistym?


title: Jak uwzględnić zmienione lub zapomniane zadania w oszacowaniu?

text: Aby obsłużyć szacowanie na poziomie zadania i raportowanie czasu, używałem (z grubsza) techniki opisanej przez Steve'a McConnella w rozdziale 10 książki _Oszacowanie oprogramowania_. W szczególności, gdy przychodzi czas na tworzenie oszacowań na poziomie zadania (tuż przed rozpoczęciem kodowania w projekcie), określam zadania na dość szczegółowym poziomie, aby w miarę możliwości nie mieć zadań z jednym punktem, 50 Szacunkowa wartość ufności % większa niż cztery godziny. W ten sposób proces szacowania zadań pomaga w konstruowaniu oprogramowania, jednocześnie pomagając mi nie zapominać o zadaniach podczas szacowania. Wymyślam również zakres godzin możliwych dla każdego zadania, a korzystając z obliczeń statystycznych, które opisuje McConnell wraz z moimi historycznymi danymi dokładności, mogę w razie potrzeby generować szacunki na innych poziomach ufności. Czuję, że ta metoda działa dla mnie całkiem dobrze. Jesteśmy zobowiązani do umieszczania zadań i ich szacunków w TFS w celu śledzenia, więc używam szacunków z procentem ufności, który mam użyć. Nie jestem jednak pewien, co zrobić, gdy zapomnę o zadaniu lub muszę wykonać pracę, która nie mieści się w jednym z oszacowanych przeze mnie zadań. Oczywiście najlepiej jest unikać takiej sytuacji, ale jak mam rozliczyć zapomniane/zmienione zadania? Chcę mieć najlepsze dane historyczne, jakie mogę, aby pomóc mi w przyszłych szacunkach, ale teraz w zasadzie tylko obliczam, czy dokonałem oszacowania 50% pewności i czy wykonałem go w ramach oszacowania przedziałowego. W razie potrzeby chętnie wyjaśnię, o co proszę – daj mi znać, co jest niejasne.


title: Czy dopuszczalne jest wdrażanie aplikacji internetowej do produkcji bezpośrednio z SVN?

text: **Pytanie** Czy istnieje uzasadniony powód **NIE**, aby używać SVN do wdrożeń produkcyjnych, czy jest to tylko przypadek osobistych preferencji i nie ma prawdziwego powodu przeciwko SVN? **Tło** Moje miejsce pracy ma kulturę tagowania wydań w SVN, a następnie wdrażania tych wydań bezpośrednio na różnych serwerach internetowych za pomocą `svn co` lub `svn switch`, w tym bezpośrednio do produkcji. Osobiście mam z tym problem, ponieważ uważam, że bez użycia skryptu kompilacji i wdrożenia lub jakiejś formy lub automatycznego wdrożenia tracisz ustawienia środowiska integracji, ponieważ są one nieudokumentowane. Co więcej, mam przeczucie, że może kryć się ukryte niebezpieczeństwo w robieniu tego, co zostało przeoczone, czegoś, co jeszcze nie podniosło swojej brzydkiej głowy. Zgłosiłem swoje obawy personelowi operacyjnemu, który jest odpowiedzialny za wdrażanie kodu w naszych różnych środowiskach (staging, pre-prod, produkcja) itp. Ich argumenty były takie, że jak dotąd działa całkiem dobrze, nie ma powodu do zmian. **Edytuj:** _Co mam na myśli o kompilacji i wdrożeniu:_ Na przykład, jeśli programista wymaga dodania ustawienia web.config dla określonego środowiska. Web.config zazwyczaj nie jest przechowywany w svn, więc te pliki są aktualizowane ręcznie bez jakiejkolwiek formy zautomatyzowanego skryptu kompilacji. Więc jeśli zgubią się lub OPS zapomni dodać pole do web.config dla wydania, masz problemy. Skrypt kompilacji, który mówi, że używa XMLPoke do automatycznego generowania pliku web.config odpowiedniego dla konkretnego środowiska, jest idealny, ponieważ masz wersjonowalny skrypt, który dokumentuje wszystkie zmiany niezbędne dla każdego z twoich środowisk. _Bieżąca metoda kompilacji i wdrażania_ W przypadku danego projektu deweloper kompiluje wersję ręcznie, inne projekty mają zautomatyzowany krok kompilacji za pomocą NANT lub MSBuild, który jest OK. Migracje baz danych dla większości projektów odbywają się za pomocą skryptów DB lub skryptów migracji (Migrator.NET) lub pakietów CMS. CI jest zwykle wykonywane przez Team City na podstawie zameldowania, mamy proces przeglądu kodu, w którym wszystkie zgłoszenia są wykonywane w oddziałach, a następnie są sprawdzane pod kątem walidacji i poprawności/jakości przed zameldowaniem w bagażniku (działa dobrze). Jednak faktyczne wdrażanie kodu odbywa się prawie zawsze za pośrednictwem SVN, albo poprzez zakup wersji oznaczonej, albo ogólniej za pomocą przełącznika SVN. To jest dla mnie dziwne, że używamy naszego repozytorium w ramach procesu wdrażania. Konfiguracja generalnie nie zmienia się zbyt często, jedyne, co znajdzie się w plikach konfiguracyjnych, to informacje specyficzne dla środowiska. Wszystko inne jest w db. Nie zrozum mnie źle, to działa, działa dobrze. Jednak chcę spróbować zautomatyzować kompilację i wdrożenie. Używałem tego z Rails i Capistrano, a do osobistych projektów przy użyciu Cygwin, Nant i SSH. Co ważniejsze, potrzebowałbym bardzo konkretnych ważnych argumentów, aby moi współpracownicy przeszli na korzystanie z automatycznego kompilowania i wdrażania. Czy nie ma żadnych prawdziwych argumentów przeciwko używaniu SVN specjalnie do wdrażania w środowisku produkcyjnym?


title: Skąd spadek ruchu w wyszukiwarkach popularnych języków programowania?

text: Czy istnieją solidne dowody na przyczyny spadku liczby wyszukiwań popularnych języków programowania? Czy może to wynikać z poprawy znajdowania potrzebnych informacji (nie trzeba szukać 10 razy, aby coś znaleźć) i jakości informacji? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/Wfc7T.jpg)


title: Jaki rodzaj usługi internetowej można wywołać za pomocą adresu URL przeglądarki?

text: Czy serwis internetowy może być napisany w taki sposób, aby można go było wywołać za pomocą adresu URL przeglądarki? Dla np. jeśli usługa internetowa nazywa się GetStockQuote, powinna być wywoływana przez następujący adres URL w przeglądarce http://myserver.com/WebServices/GetStockQuote?sym=MSFT Podobnie, jeśli istnieje więcej parametrów, można je przekazać za pośrednictwem adresu URL. W przeciwieństwie do tego - http://www.webservicex.net/stockquote.asmx \- gdzie nie wygląda na to, że parametr może być przekazany przez adres URL. Wydaje się, że wpisanie param i kliknięcie wywołania wymaga albo programu, albo człowieka. Czy zawsze wymaga programu klienckiego? Czy istnieje sposób od wsdl, aby dowiedzieć się, czy można go wywołać z przeglądarki, czy nie. Jak zaprogramować serwis internetowy spełniający powyższe kryteria?


title: Czy można zdefiniować metodę [] w NilClass Rubiego?

text: Ruby domyślnie nie zawiera metody `[]` dla `NilClass` Na przykład, aby sprawdzić, czy `foo["bar"]` istnieje, gdy `foo` może być zerem, muszę zrobić: foo = coś_co_może_lub_nie_zwróci_nil if foo && foo["bar"] # zrób coś z foo["bar"] here end Jeśli zdefiniuję tę metodę: class NilClass def [](arg) nil end end Coś takiego umożliwiłoby to, nawet jeśli `foo` jest nil : if foo["bar"] # zrób coś z foo["bar"] end Lub nawet: if foo["bar"]["baz"] # zrób coś z foo["bar"]["baz"] tutaj end **Pytanie:** Czy to dobry pomysł, czy jest jakiś powód, dla którego ruby domyślnie nie zawiera tej funkcji?


title: Plusy i minusy hostowanych skryptów

text: Widziałem, jak niektórzy programiści używają hostowanych skryptów do łączenia swoich bibliotek. `cdn.jquerytools.org` jest jednym z przykładów. Widziałem również, jak ludzie skarżą się, że hostowany link skryptu został porwany. Jak bezpieczne jest używanie hostowanych skryptów w rzeczywistości? Czy skrypty są automatycznie aktualizowane? Na przykład, jeśli jQuery 5 przejdzie do 6, czy automatycznie otrzymam wersję 6, czy też muszę zaktualizować mój link? Widzę również, że Google ma duży zestaw tych skryptów do hostingu. Jakie są plusy i minusy?


title: Unikanie duplikatów raportów o błędach

text: W moim domu używam Linuksa i innego oprogramowania open source. Ponieważ nie jestem profesjonalnym koderem, zwykle zgłaszam błędy programistom, ponieważ moje umiejętności nie wystarczą do samodzielnego rozwiązywania problemów. Jakie rzeczy chcesz, żebym sprawdził, zanim wyślę raport o błędzie? To znaczy, kiedyś myślałem, że znalazłem błąd w Gedit i nie mogłem znaleźć podobnego błędu w Bugzilli. Ale po wysłaniu raportu, jakiś programista powiedział, że błąd jest już w Bugzilli, ponieważ był w GTK+, a nie w Gedit. Czasami amatorowi może być trudno odgadnąć, czy jakiś wcześniej znany błąd rozwiąże znaleziony przeze mnie problem.