title: Sprawdzanie typu i typy rekurencyjne (Pisanie kombinatora Y w Haskell/Ocaml)

text: Wyjaśniając kombinator Y w kontekście Haskella, zwykle zauważa się, że prosta implementacja nie będzie sprawdzać typu w Haskell ze względu na jego typ rekurencyjny. Na przykład z Rosettacode: Oczywista definicja kombinatora Y w Haskell nie może być użyta, ponieważ zawiera nieskończony typ rekurencyjny (a = a -> b). Zdefiniowanie typu danych (Mu) pozwala na przerwanie tej rekurencji. newtype Mu a = Rzuć { rozwiń :: Mu a -> a } napraw :: (a -> a) -> a napraw = \f -> (\x -> f (rozwiń x x)) $ Rzuć (\x - > f (rozwiń x x)) I rzeczywiście, „oczywista” definicja nie wpisuje check: λ> ustawmy f g = (\x -> \a -> f (x x) a) (\x -> \a -> f (x x) a) g <interaktywny>:10:33: Występuje sprawdzenie: nie można skonstruować typu nieskończonego: t2 = t2 -> t0 -> t1 Typ oczekiwany: t2 -> t0 -> t1 Typ rzeczywisty: (t2 -> t0 -> t1) -> t0 -> t1 W pierwszym argumencie `x', czyli `x' W pierwszym argumencie `f', czyli `(x x)' W wyrażeniu: f (x x) a <interaktywny >:10:57: Występuje sprawdzenie: nie można skonstruować typu nieskończonego: t2 = t2 -> t0 -> t1 W pierwszym argumencie `x', czyli `x' W pierwszym argumencie `f', czyli `(x x )' W wyrażeniu: f (x x) a (0,01 s, 1033328 bajtów) To samo ograniczenie istnieje w Ocaml: utop # niech fix f g = ( zabawa x a -> f (x x) a) (zabawa x a -> f (x x) a) g;; Błąd: To wyrażenie ma typ 'a -> 'b, ale oczekiwano wyrażenia typu 'a Zmienna typu 'a występuje wewnątrz 'a -> 'b Jednak w Ocaml można zezwolić na typy rekurencyjne, przekazując `- przełącznik rectypes: -rectypes Zezwalaj na dowolne typy rekurencyjne podczas sprawdzania typu. Domyślnie obsługiwane są tylko typy rekurencyjne, w których rekursja przechodzi przez typ obiektu. Używając `-rectypes`, wszystko działa: utop # let fix f g = (fun x a -> f (x x) a) (fun x a -> f (x x) a) g;; val fix : (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun> utop # let fact_improver częściowy n = if n = 0 then 1 else n*partial (n-1);; val fact_improver : (int -> int) -> int -> int = <fun> utop # (fix fact_improver) 5;; - : int = 120 Będąc ciekawym systemów typów i wnioskowania o typach, rodzi się kilka pytań, na które wciąż nie jestem w stanie odpowiedzieć. * Po pierwsze, w jaki sposób program sprawdzający typ wymyśla typ `t2 = t2 -> t0 -> t1`? Po wymyśleniu tego typu problem polega na tym, że typ (`t2`) odnosi się do siebie po prawej stronie? * Po drugie, i być może najbardziej interesujące, jaki jest powód, dla którego systemy typu Haskell/Ocaml nie pozwalają na to? Myślę, że _jest_ dobry powód, ponieważ Ocaml również domyślnie nie zezwala na to, nawet jeśli _może_ radzić sobie z typami rekurencyjnymi, jeśli ma ustawiony przełącznik `-rectypes`. Jeśli są to naprawdę duże tematy, doceniłbym wskazówki do odpowiedniej literatury.


title: Prezenter uzyskujący dostęp do wartości w polu tekstowym za pomocą obiektu nadawcy

text: Mam następującą metodę w moich prezenterach, która sprawdza poprawność danych wejściowych użytkownika w interfejsie użytkownika. Zasadniczo, aby przechwycić wartość właściwości text pola tekstowego, używa obiektu sender, który został przekazany przez zdarzenie fire w formularzu. - -**PRESENTER** _View.ValidateInPut += nowy EventHandler(_View_ValidateInPut); private void _View_ValidateInPut(object sender, EventArgs e) { var controller = (TextBox)sender; var tekst = kontroler.Tekst; If (tekst jest InValid) MessageBox.Show ("Wartość w polu Tekst jest nieprawidłowa"); } **VIEW** private void txtACNo_Validating(object sender, CancelEventArgs e) { ValidateInPut(sender, e); // Uruchomienie zdarzenia } Czy doprowadzi to do nieoczekiwanych błędów? Jeśli tak, daj mi znać, jak to zrobić lepiej?


title: Obsługa kolizji nazw tabel w Django

text: Django tworzy nazwę tabeli, łącząc etykietę aplikacji z nazwą modelu. Projekt może mieć wiele aplikacji. Jeśli dwa mają tę samą etykietę, w jaki sposób można ich używać w tej samej bazie danych? Obecnie używam bardzo długich nazw aplikacji, aby zminimalizować to ryzyko (takich jak `foo_bar_baz` zamiast zagnieżdżania modułów, takich jak `foo.bar.baz` \- etykieta aplikacji `baz`). To może być przesada w przypadku aplikacji wewnętrznej (tzn. nieprzeznaczonej do ponownego użycia), ale mam też kilka modułów, które są ogólne i mogą być używane w różnych projektach (które udostępniam bezpłatnie w Internecie, więc możliwość kolizji nazw jest wspanialszy). Jeśli ktoś pobierze moje moduły, stwierdzi kolizję nazw z aplikacją innej firmy, ale nie chce zmieniać żadnego kodu (byłoby to piekło utrzymania), co mógłby z tym zrobić? Pomyślałem o „łataniu małp” aplikacji, aby dodać niestandardową `db_table` do każdego modelu lub Django, aby zmienić sposób, w jaki wyprowadzana jest domyślna nazwa tabeli, lub może zapewnić, że każda aplikacja używa iniekcji zależności, aby odwoływać się do innych aplikacji (więc jedna może swobodnie zmieniać nazwę/symlink aplikacji bez psucia innych, które są od niej zależne), ale wszystkie opcje wydają się dużo pracy i/lub zbyt łatwe do zepsucia. Czy istnieje prostszy sposób? Czy powinienem całkowicie porzucić to wszystko i dalej używać w pełni kwalifikowanych nazw?


title: C++ na Windows vs Linux - typowe problemy?

text: Jak dotąd cały mój rozwój w C++ był kierowany na Windows, jednak zawsze miałem w głowie, że pewnego dnia będę celował w Linuksa. Zdaję sobie zatem sprawę z potrzeby wybrania bibliotek międzyplatformowych i utrzymania jak najbardziej przenośnego kodu (lub zapewnienia alternatywnych implementacji kodu, który nie jest przenośny). To pytanie nie dotyczy zatem kwestii kompilacji kodu. Chciałbym się dowiedzieć, jakie są typowe problemy, z którymi zmierzy się programista, który będzie atakował zarówno system Linux, jak i Windows? W szczególności, ale nie ograniczając się do: 1. Najlepsze praktyki dotyczące obsługi plików konfiguracyjnych. W systemie Windows wydaje się, że jest to dość arbitralne - widziałem, jak oprogramowanie przechowuje swoją konfigurację w folderze programu, w folderze użytkownika (pod appData) iw rejestrze. W Linuksie wydaje się, że jest znacznie bardziej obciążony dedykowanymi folderami konfiguracyjnymi (/etc). Jak mam poradzić sobie z tymi różnicami w moim kodzie? Czy koduję lokalizacje na stałe, czy jest jakaś funkcja zdefiniowana przez system, z którą mogę się zapoznać? 2. To samo co (1), ale do logowania. 3. Jak mam zachować synchronizację plików projektu? Np. jeśli aktualizuję coś w pliku projektu Visual Studio, czy generalnie muszę ręcznie aktualizować równoważną rzecz w dowolnym środowisku Linux, w którym pracuję, czy też istnieje powszechnie stosowana metoda unikania tego? 4. Jaki jest najlepszy sposób radzenia sobie z różnicami w implementacji platformy w moim kodzie? Czy powinienem używać #ifdefs, czy powinienem przechowywać kod specyficzny dla platformy w osobnych plikach, a projekt powinien określić, które pliki są uwzględnione? 5. Coś jeszcze, o czym nie pomyślałem, o czym powinienem zacząć rozważać/poszukać?


title: Bazy danych benchmarkingowych

text: Widzę wiele dyskusji na temat wydajności db „x” lub tego, że przejście z „x” na „y” poprawiło wydajność naszej witryny. Nie widziałem jeszcze odpowiedniego testu porównawczego, który działa w różnych typach baz danych. 1. **Czy można napisać sensowny test porównawczy, którego można by użyć w wielu typach baz danych, takich jak relacyjne, zorientowane na dokument itp.** 2. **Jak zaprojektowałbyś taki test porównawczy?**


title: Dlaczego i kiedy powinienem ustawić klasę jako 'statyczną'? Jaki jest cel słowa kluczowego „static” w klasach?

text: Słowo kluczowe `static` na elemencie w wielu językach oznacza, że nie należy tworzyć instancji tej klasy, aby mieć dostęp do tego członka. Jednak nie widzę żadnego uzasadnienia, aby cała klasa była „statyczna”. Dlaczego i kiedy powinienem ustawić klasę jako „statyczną”? Jakie korzyści odnoszę, tworząc „statyczną” klasę? Chodzi mi o to, że po zadeklarowaniu klasy statycznej należy nadal zadeklarować wszystkie składowe, do których chce mieć dostęp bez tworzenia instancji, również jako statyczne. Oznacza to, że na przykład klasa `Math` może być zadeklarowana jako normalna (nie statyczna), bez wpływu na kod programistów. Innymi słowy, uczynienie klasy statyczną lub normalną jest w pewnym sensie niewidoczne dla programistów.


title: użycie jquery-latest

text: Ostatnio jakiś kod, który napisałem rok temu, zawiódł, ponieważ ktoś połączył mój kod z > http://code.jquery.com/jquery-latest.js W najnowszej wersji jquery przestarzało/zastąpiło funkcję. Fajnie jest mieć dynamicznie aktualizowaną wersję, ale mój kod się nie zmieni, będzie się zepsuł. Czy jest jakiś powód, aby używać jquery-latest?


title: Jak wprowadzić nowy wzorzec do istniejącej bazy kodu?

text: W dążeniu do doskonalenia swoich umiejętności programistycznych uczę się nowych wzorców projektowych. W przykładowych projektach lub projektach osobistych bardzo łatwo jest zaadaptować nowe wzorce do mojego kodu. Jednak w pracy mam dużą bazę kodu, za którego architekturę i utrzymanie odpowiadam. To pytanie koncentruje się na pisaniu spójnego i łatwego w utrzymaniu kodu, który nadal będzie zapewniał wartość biznesową. Kiedy uczę się nowych wzorców, czuję się skonfliktowany, jak postępować naprzód na istniejącej bazie kodu. **Czy muszę aktualizować swój kod, aby używał mojego nowego wzorca?** * Ma to tę wadę, że nie zapewnia dużej wartości biznesowej i może nie być najlepszym sposobem na efektywne wykorzystanie mojego czasu. **Czy posuwam się naprzód i używam mojego nowego wzorca/techniki w jakimkolwiek nowym kodzie?** * Ma to tę wadę, że jest niespójny, przez co mój kod jest mniej łatwy w utrzymaniu i stanowi kiepski precedens dla nowych członków zespołu. Opcjonalnie mógłbym po prostu skatalogować nową technikę w mojej głowie, ale nie wdrożyć jej. Jednak naprawdę nie lubię tej opcji.


title: WCF i rejestr usług

text: Mam zamiar skompilować niektóre usługi WCF. W niektórych scenariuszach usługi te muszą również komunikować się ze sobą. Zrobiłem trochę "Google-ing" na temat rejestru usług, ale nie mogę dowiedzieć się, jak zaimplementować rejestr usług za pomocą WCF; czy jest jakaś inna alternatywa? Czy jest jakaś technologia firmy Microsoft dostępna dla rejestru usług? Jestem nowy w SOA i naprawdę docenię każdą pomoc lub wskazówki (co i gdzie dokładnie szukać usług rejestru).


title: Smalltalk Początkujący potrzebuje pomocy

text: Zastanawiałem się, czy ktoś może wskazać mi dobre zasoby dotyczące nauki Smalltalk. Totalne "newb" tutaj :) więc szukam jak samouczek fundacji. Widziałem kilka filmów na Youtube, ale większość wydaje się dotyczyć konkretów. Szukam bardziej ogólnego przeglądu języka, ponieważ próbuję poznać zasady/najlepsze praktyki stojące za OOP. Czytając tutaj, Smalltalk wydaje się być dobrym fundamentem. Z góry dziękuje za twoją pomoc!


title: Dobre zasoby dla programisty MVC.Net wracającego do WebForms?

text: Wygląda na to, że mogę być zmuszony do zbudowania nowego systemu w formularzach internetowych po przepracowaniu wyłącznie w MVC przez ostatnie 3 lata. Początkowo nie sądziłem, że będzie to problem, z wyjątkiem tego, że aplikacja wymaga bardzo dużej ilości ajax i bogatej interakcji po stronie klienta (pomyśl o Gmailu lub Facebooku). Kiedy zajmowałem się ciężkim tworzeniem formularzy WebForm, robiliśmy tylko małe ilości ajax. Pamiętam, że panele aktualizacji AJAX to absolutny koszmar. Pamiętam, że skończyłem używając głównie prostego html i używając JQuery do trafienia do obsługi ASHX. Zasadniczo znam dobre, czyste sposoby robienia prawie wszystkiego z MVC.Net, ale konieczność korzystania z WebControls i posiadanie oddzielnych stron internetowych wszędzie wydaje mi się koszmarem. **Czy ktoś zna jakieś dobre zasoby do przejścia z MVC.Net do WebForms?** Moim zdaniem wydaje się to całkowicie idiotyczne, ale planuję na najgorsze.


title: Jaki jest najbardziej elastyczny sposób dostarczania zmiennych zasobów, takich jak ikony aplikacji?

text: Obecnie uaktualniamy niektóre składniki naszej aplikacji do nowych technologii, takich jak C# przy użyciu WPF i MVVM. Ponieważ staramy się unikać błędów z przeszłości, które zostały popełnione w naszych starszych aplikacjach, w naszym zespole pojawiło się pytanie, w jaki sposób powinniśmy wysyłać zewnętrzne zasoby, które mogą ulec zmianie, takie jak ikony lub obrazy. W naszych starszych aplikacjach były one w zasadzie osadzone w każdej aplikacji, co wymagało pełnej rekompilacji aplikacji tylko po to, aby zmienić jakąś ikonę. Nie chcemy też po prostu zrzucać nieprzetworzonych plików do folderu, ponieważ niektóre z nich mogą być licencjonowane i nie powinny być bezpośrednio dostępne dla klienta. Pomyśleliśmy, że podzieliliśmy wszystkie nasze zasoby na zewnętrzny plik (np. DLL), do którego mają dostęp wszystkie nasze aplikacje. Dlatego za każdym razem, gdy jakiś zasób zostanie zmieniony, wystarczy wysłać nową wersję naszej biblioteki zasobów. Są jednak przypadki, w których ogólne przechowywanie nie jest pożądane, na przykład, jeśli tylko jedna konkretna ikona w jednej aplikacji powinna się zmienić. Gdybyśmy po prostu zamienili ten zasób, prawdopodobnie zmieniłoby się to we wszystkich aplikacjach korzystających z tego zasobu. Jak radzą sobie z tym „duże” aplikacje lub czy istnieje najlepsza praktyka, jak to zrobić?


title: Czy w programowaniu funkcjonalnym posiadanie większości niezmiennych struktur danych wymaga większego wykorzystania pamięci?

text: W programowaniu funkcjonalnym, ponieważ prawie wszystkie struktury danych są niezmienne, gdy stan musi się zmienić, tworzona jest nowa struktura. Czy to oznacza dużo większe zużycie pamięci? Znam dobrze paradygmat programowania obiektowego, teraz próbuję poznać paradygmat programowania funkcyjnego. Koncepcja, że wszystko jest niezmienne, dezorientuje mnie. Wydawałoby się, że program używający niezmiennych struktur wymagałby znacznie więcej pamięci niż program ze zmiennymi strukturami. Czy w ogóle patrzę na to we właściwy sposób?


title: Jak zachęcasz swoją organizację do przejścia z Javy na Scala?

text: Czy czyjaś organizacja rozpoczęła migrację z Javy do Scali? Jeśli tak, jak to robisz? Co mogę zrobić, aby zachęcić moich kolegów do tego samego?


title: Czy to naprawdę dobry projekt OO?

text: ## Kontekst Mam klasę `Specification` z kilkoma właściwościami, w tym: StartDate, EndDate, DaysToComplete, DateToComplete. Specyfikacja zawiera listę wymaganych kursów (np. firma wymaga od pracowników odbycia szkolenia... być może zajęć technicznych, różnorodności lub etyki). Na podstawie specyfikacji kursy zostaną zlecone pracownikom. ## Validation Concerns StartDate i EndDate odnoszą się do okna czasu, w którym firma może zlecić klasę użytkownikowi. DaysToComplete to liczba dni, w których pracownik musi ukończyć szkolenie od momentu, kiedy zostało mu przydzielone, natomiast DateToComplete to ostatni dzień, w którym musi ukończyć kurs. * DataRozpoczęcia musi być zawsze podana * DaysToComplete i DateToComplete wzajemnie się wykluczają... jeden i tylko jeden musi być określony. * Jeśli EndDate nie jest określony, należy użyć DaysToComplete * Jeśli StartDate = EndDate, należy użyć DateToComplete I istnieją inne oczywiste zasady walidacji, takie jak fakt, że nie miałbyś EndDate większego niż DateToComplete, ponieważ nie t zlecić kurs, który już musiał zostać ukończony. ## Problem Wygląda na to, że istnieje przypadek posiadania klasy bazowej i 4 klas pochodnych z następującymi właściwościami (tzn. w ten sposób zostałem poinstruowany i zaprojektowałem obiekty): * SpecificationBase: StartDate * PerpetualSpecification: DaysToComplete * OneTimeSpecification*: DateToComplete * FixedSpecification: EndDate, CompletionDate * SlidingSpecification: EndDate, DaysToComplete *Gdy użytkownik wprowadzi EndDate równą StartDate, musi użyć DateToComplete. W tym przypadku EndDate nie jest jednak faktycznie zapisywany. Dlatego używamy dziedziczenia, aby zrobić tutaj dwie rzeczy: hermetyzować reguły walidacji i nie ujawniać właściwości, które nie istnieją dla określonych scenariuszy. Jeśli chodzi o walidację, z mojej perspektywy zasady są zawsze takie same dla wszystkich scenariuszy. Tak, niektóre właściwości nie mają zastosowania we wszystkich scenariuszach, ale w przypadku tych, w których logika walidacji naprawdę się nie zmienia. Argumentem jest jednak to, że łatwiej jest w ten sposób zrozumieć logikę walidacji, ponieważ umieszczenie jej w całości w klasie bazowej byłoby zbyt skomplikowane (napisanie metody fabrycznej, aby wybrać odpowiedni typ na podstawie danych wejściowych użytkownika i utworzyć go z refleksją , dla porównania, uważane za nic wielkiego). A jeśli chodzi o ukrywanie nieużywanych właściwości (lub, jak twierdzi mój kierownik zespołu: nieujawnianie właściwości, które nie istnieją), argument zaczął się jako zasada projektowania obiektowego, zgodnie z którą dane i zachowanie powinny być połączone… dopóki nie wskazałem, że to nadal byłby sprzężony w klasie bazowej bez klas pochodnych (nie wspominając o tym, że dane nie są również oddzielone w bazie danych). Bardzo szanuję kierownika mojego zespołu iz czysto filozoficznego/idealistycznego punktu widzenia ten projekt wydaje się świetny, ale w praktyce wydaje się stwarzać więcej problemów niż rozwiązuje: określają typ * narzędzia innych firm, które opierają się na odbiciu, nie mogądziałaćz listąróżnych typów o różnych właściwościach więc muszę utworzyćproxy (lub oszukać i po prostu umieścićdane w typie anonimowym i mam nadziejęże nigdy nie będę poproszony o podanie sposobu aktualizacji danych z kontrolki siatki) * Ponieważ zużywający kod używa tylko metody fabrycznej, nie wie, jaki ma konkretny typ ani jakie właściwości się w nim znajdują. Oznacza to instrukcje if/then do przetestowania dla jakiego typu pracuję przed próbą uzyskania dostępu do właściwości, która może nie istnieć. Przepraszam za ten niesamowicie długi esej, ale chciałem tylko przedstawić obszerny kontekst i tło, zanim zadam pytanie: Czy to „naprawdę” dobry projekt OO? Uważam, że dobry projekt OO powinien ułatwiać życie... a nie utrudniać. Czego mi tu brakuje? ## Edycja: Więcej informacji Zdaję sobie sprawę, że pominąłem ważny szczegół. Mój lider zespołu jest bardzo, bardzo duży, ponieważ wymaga, aby wszystkie dane potrzebne do zainicjowania odpowiedniego typu zostały przekazane do jego konstruktora (i nie zezwala na konstruktor domyślny) i umieszcza logikę walidacji w akcesorach zestawów właściwości. Uważa, że jest to najlepszy sposób, aby zapobiec przedostawaniu się złych danych do bazy danych. Nie przepadam za tym podejściem, jednak pracował w niektórych miejscach, gdzie brak dobrej walidacji powodował poważne, poważne problemy. Dlatego używam metody fabrycznej... ale jej wadą jest to, że rzutowanie typu jest wymagane, gdy trzeba pracować z rozszerzonymi właściwościami. Inną wadą jest to, że jeśli teraz uczynię właściwości wirtualnymi, ze względu na nasze podejście do walidacji, muszę wywołać właściwości wirtualne z konstruktora. Właściwie skończyło się na tym, że zrobiłem to z konieczności i praktyczności, ale nie wspomniałem o tym na początku, ponieważ było to „obejściem” do faktycznego projektu, o który chciałem zapytać.


title: Aplikacja konsoli Windows a usługa

text: ## Moja sytuacja Pracuję dla firmy, która buduje oprogramowanie dla wielu innych firm. Kiedy dowiedziałem się, że instalatory nie są wbudowane w VS2012, byłem ciekawy, jak je wdrożyć. Do tej pory po prostu wrzucałem pliki .exe na serwery naszych klientów za pomocą skryptów PowerShell. Teraz potrzebuję pełnej usługi Windows. Widziałem wiele przykładów uruchamiania usług za pomocą aplikacji konsolowej: http://stackoverflow.com/questions/7764088/net-console-application-as-windows-service Mogłem łatwo użyć `sc.exe` do stworzenia usługa oparta na takiej aplikacji konsolowej. Nie mam jednak pojęcia, jak system Windows poradziłby sobie z funkcją Start/Stop/Restart. ## Pytanie To zaciekawiło mnie, jaki jest związek między aplikacjami konsolowymi i usługami w świecie Windows. Czy usługi są tylko aplikacjami konsolowymi z zaczepami, aby umożliwić systemowi operacyjnemu wywoływanie uruchamiania i zatrzymywania? A może usługi są zupełnie inne? Dawno temu myślałem, że WinForm i aplikacje konsolowe są zupełnie inne. Po zamieszaniu w Win32 zdałem sobie sprawę, że to to samo. ## Moje nadzieje Mam nadzieję, że usługi to tylko aplikacje konsolowe, takie jak WinForms, i że będę mógł korzystać z funkcji Start/Stop bezpośrednio w .NET. Projekty wbudowanego instalatora były dość okropne, więc nie czuję się źle z kopiowaniem plików .exe na serwer.


title: Co oznacza Dependency Injection, mówiąc, że może wstrzykiwać w czasie wykonywania?

text: Rozumiem, że wstrzykiwanie zależności jest wykonywane przez kodowanie i wszystko odbywa się w czasie kompilacji. Kodowanie wstrzykiwania zależności jest teraz łatwe do wykonania za pomocą narzędzi pomocniczych, takich jak Ninject. Jednak w czasie kompilacji następuje wstrzyknięcie zależności. Co to znaczy, że wstrzykiwanie zależności występuje również w czasie wykonywania? To jest prosto z wiki o wstrzykiwaniu zależności > Wstrzykiwanie zależności to wzorzec projektowania oprogramowania, który umożliwia usuwanie > zakodowanych na sztywno zależności i umożliwia ich zmianę, > w czasie wykonywania lub w czasie kompilacji. Chodzi mi o to, że pomyślałem o tym i wpadłem na pomysł, że może odnosić się do wielu interfejsów do jednej klasy, gdy Delegate wywołuje metho z jednego z interfejsów, wstrzykiwanie zależności decyduje o czymś takim w czasie wykonywania, ale kiedy wszedłem głębiej w to, a nawet omówiłem to z moim szefem, brzmiało to tak, jakby to nie było takie proste. A potem, jak wstrzykiwanie zależności podejmuje tę decyzję i zakłada, że jest poprawna? Czy ktoś może mi pomóc wyjaśnić to pytanie?


title: Przejście do asynchronicznego modelu programowania

text: nasz zespół utrzymuje i rozwija serwis .NET napisany w C#. Przeprowadziliśmy testy obciążeniowe farmy usługi sieciowej i mamy dowody, że rzeczywista architektura nie skaluje się dobrze, ponieważ liczba żądań stale rośnie. Przeanalizowaliśmy wnioski Martina Fowlera w tym artykule, a nasz zespół uważa, że migracja do asynchronicznego modelu programowania, takiego jak ten opisany, może być właściwym kierunkiem również dla naszej usługi. Moje pytanie brzmi: czy uważasz, że ten "przełącznik" wymaga całkowitego przepisania aplikacji? Czy ktoś z was był w stanie zaadoptować APM bez przepisywania wszystkiego i ma jakieś spostrzeżenia do podzielenia się? Z góry dziękuję


title: Jakie są ważne wskazówki przy zakładaniu spółdzielni programistycznej?

text: Jesteśmy grupą ludzi, którzy zamierzają założyć spółdzielnię programistyczną, co oznacza, że wszyscy (i inni przyszli pracownicy) będziemy właścicielami „firmy” zamiast mieć szefów i pracowników. Robimy to z powodów ideologicznych, ale także dlatego, że wierzymy, że daje to wiele korzyści - siłę demokracji (patrz SE...), motywację, kreatywność, dobre stosunki i atmosferę w pracy i wiele innych. Stajemy przed kilkoma pytaniami o to, jak dokładnie podzielić własność naszych produktów, czy powinniśmy podawać inny procent dla różnych osób, które poświęcają inną ilość godzin pracy lub wnoszą wiedzę ekspercką. Chcemy, aby ludzie czuli, że dostają to, na co zasłużyli, a nie więcej, nie mniej, i nie jesteśmy pewni, czy podzielenie tego nawet da to uczucie. Jakie są dobre wskazówki dotyczące rozwiązywania tych pytań w spółdzielni?


title: Etykieta przy użyciu kodu znalezionego na GitHub i przy użyciu kodu poza dołączonymi bibliotekami

text: Próbowałem znaleźć to, co mam zrobić, gdy chcę użyć kodu znalezionego na GitHub. Myślę, że ten post zawierał dobre informacje, ale nadal jestem nieco zdezorientowany. Chcę użyć kodu znalezionego w tym repozytorium https://github.com/wcdolphin/python-bcrypt Więc zgodnie z odpowiedzią podaną w poście, mam wziąć zawartość z pliku LICENSE tego repozytorium i dodać ją do LICENCJA w moim projekcie? Rozumiem, że powinienem podziękować twórcy, jak to zrobić? Czy mam utworzyć plik .txt w katalogu, w którym znajduje się moduł, który jest ich kodem i powiedzieć coś w stylu „Utworzony przez wcdolphin, znaleziony na https://github.com/wcdolphin/python-bcrypt”? Ponadto nie używałem wcześniej używanych bibliotek poza tym, co jest zawarte w bibliotece Pythona. Widzę tam instrukcje instalacji, ale to zadziała tylko na moim komputerze, prawda? Czy mogę pobrać i dodać te pliki do katalogu mojego projektu i używać ich jako modułów? Znalazłem ten post, ale nie jestem pewien, czy mogę zainstalować niestandardowe elementy w Google App Engine. Zamierzam hostować tam swój projekt (nie będę próbował homebrew szyfrować super poufnych informacji, to raczej demonstracja) i myślę, że z moją ograniczoną wiedzą, przesłanie źródła z moim źródłem byłoby najlepszym sposobem. Dziękuję


title: Jak mogę uczynić refaktoryzację priorytetem dla mojego zespołu?

text: Baza kodu, z którą pracuję na co dzień, nie ma automatycznych testów, niespójnych nazewnictwa i mnóstwa komentarzy, takich jak „Dlaczego to tutaj?”, „Nie jestem pewien, czy to jest potrzebne” lub „Ta metoda nie ma prawidłowej nazwy”, a kod jest zaśmiecony "Changelogs" pomimo tego, że używamy kontroli źródeł. Wystarczy powiedzieć, że nasza baza kodu mogłaby korzystać z refaktoryzacji. Zawsze mamy zadania naprawiania błędów lub dodawania nowych funkcji, więc nie ma czasu na refaktoryzację kodu, aby był lepszy i bardziej modułowy, i nie wydaje się to być priorytetem. Jak mogę zademonstrować wartość refaktoryzacji tak, aby została dodana do naszych list zadań? Czy warto po prostu refaktorować, prosząc o przebaczenie, a nie o pozwolenie?


title: Jak najlepiej zaimplementować Dashboard z danych w HDFS/Hadoop

text: Mamy mnóstwo danych (kilka TB) w Hadoop HDFS i rośnie. Chcemy stworzyć pulpit nawigacyjny, który będzie raportował zawartość, np. liczbę różnych typów obiektów, trendy w czasie itp. Naszą pierwszą myślą było użycie czegoś takiego jak Oracle Tableau lub d3.js i użycie zapytań Hive. Ale Hive jest po prostu zbyt powolny dla tych „wstępnie przygotowanych” zapytań. Teraz myślimy o użyciu Hive do regularnego wyodrębniania danych z HDFS i przechowywania danych wyjściowych w bazie danych „bardziej w czasie rzeczywistym”, np. HBase lub RDBMS (np. MySQL). To zadziała, ale obawiam się, że brakuje nam prostszego / łatwiejszego rozwiązania (jeśli istnieje), które wymaga mniej ETL / ekstraktów i zduplikowanych mechanizmów przechowywania danych (HDFS + coś innego)


title: Jakie są najgorsze fałszywe ekonomie w tworzeniu oprogramowania?

text: Jakie są najgorsze fałszywe gospodarki (to znaczy sposoby oszczędzania pieniędzy, które ostatecznie kosztują więcej niż oszczędzają) dominujące w branży oprogramowania i jak je zwalczać?


title: Tłumaczenie terminologii komputerowej z angielskiego na francuski

text: Pracuję we Francji jako programista Java, głównie w języku francuskim, ale jestem native speakerem języka angielskiego. Mój poziom francuskiego jest całkiem dobry (francuska żona!), ale jedną rzeczą, z którą mam problemy, jest ustalenie, czy używać angielskiej terminologii, czy francuskiego odpowiednika. Przykłady: * lock (jak w blokadzie synchronizacji) - czy używam czasownika "locker" czy używam verrouillera? * odłamek (bazy danych) - "un shard" lub "un tesson" (co oznacza odłamek szkła) ...i tak dalej... Więc co polecają ludzie? Czy ktoś może wskazać jakieś dobre strony internetowe do tłumaczenia tego rodzaju terminologii? Zwykłe narzędzia do tłumaczenia online są nieco zbyt codzienne w języku angielskim/francuskim, a nie w nieco bardziej wyspecjalizowanej wersji, której potrzebuję.


title: Czy wysokie standardy koniecznie prowadzą do frustracji i jak sobie z nią radzić?

text: Uważam się za entuzjastę języka programowania. Kiedy znajdę zły kod, zwłaszcza mój własny, trudno go zrozumieć, zmienić i przetestować. Moi współpracownicy nie wiedzą lepiej lub ich to nie obchodzi. Jestem sfrustrowany, że nie mogę sam podnieść jakości kodu. Czy to normalne, że czuję się sfrustrowany, gdy jakość kodu i łatwość konserwacji nie odpowiadają moim standardom? Jeśli tak, jak sobie z tym radzisz?


title: Czy licencja SDK może wpływać na licencję aplikacji?

text: Powiedzmy, że SDK jest objęty konkretną licencją, która nie jest zgodna z niektórymi innymi licencjami (np. Flex SDK z GPLv2). Czy mogę stworzyć aplikację za pomocą np. Flex SDK i licencjonować jej dystrybucję na licencji GPLv2? Czy moja aplikacja może zostać uznana za pracę pochodną? Jaki jest związek między licencją SDK a licencją aplikacji, która została zbudowana przy użyciu tego SDK?


title: Czy istnieje odpowiedni styl kodowania do implementacji algorytmu podczas rozmowy kwalifikacyjnej?

text: Nie udało mi się odpowiedzieć na pytanie z wywiadu w C lata temu na temat konwersji szesnastkowej na dziesiętną, nie wykorzystując tabeli ASCII `if (inputDigitByte > 9) hex = inputDigitByte - 'a'`. Rozwój Unicode sprawił, że pytanie to stało się dość głupie, ale chodziło o to, że ankieter cenił surową szybkość wykonania ponad czytelność i obsługę błędów. Mówią ci, aby przejrzeć podręczniki algorytmów, aby przygotować się do tych wywiadów, ale te same podręczniki zwykle faworyzują implementację z najmniejszą liczbą linijek kodu, nawet jeśli musi polegać na magicznych liczbach (takich jak „nieskończoność”) i wolniejszej, większej ilości pamięci -intensywna implementacja (jak połączona lista zamiast tablicy), aby to zrobić. Nie wiem, co jest słuszne. Kodowanie algorytmu w przestrzeni wywiadu ma co najmniej 3 ograniczenia: czas na kodowanie, elegancję/czytelność i efektywność wykonania. Jakie kompromisy są odpowiednie dla kodu rozmowy kwalifikacyjnej? * Jak bardzo przestrzegasz podręcznikowej definicji algorytmu? Czy lepiej jest wyeliminować rekurencję, rozwijać pętle i używać tablic w celu zwiększenia wydajności? A może lepiej jest użyć rekurencji i wartości specjalnych, takich jak „nieskończoność” lub Integer.MAX_VALUE, aby zmniejszyć liczbę wierszy kodu potrzebnych do napisania algorytmu? * Interfejs: Stwórz bardzo samodzielny, kuloodporny interfejs lub niechlujny i szybki? Z jednej strony tablica do sortowania może być publiczną zmienną statyczną. Z drugiej strony może być konieczne przekazanie go do każdej metody, umożliwiając indywidualne wywoływanie metod z różnych wątków do różnych celów. * Czy właściwe jest użycie struktury danych z połączonej listy w przypadku elementów, które są przemieszczane w jednym kierunku, w porównaniu z używaniem tablic i podwajaniem rozmiaru, gdy tablica jest pełna? Implementacja listy połączonej pojedynczo podczas rozmowy kwalifikacyjnej jest często znacznie szybsza w kodowaniu i łatwiejsza do zapamiętania w przypadku algorytmów rekurencyjnych, takich jak MergeSort. * Bezpieczeństwo wątków — po prostu udokumentuj, że jest to niebezpieczne, czy powiedz to ustnie? Na ile ankietowany powinien szukać możliwości przetwarzania równoległego? * Czy przesuwanie bitów jest odpowiednie? `x / 2` lub `x >> 1` * Polimorfizm, bezpieczeństwo typów i rodzaje? * Uwagi? * Nazwy zmiennych i metod: `qs(a, p, q, r)` vs: `quickSort(theArray, minIdx, partIdx, maxIdx)` * Ile należy używać istniejących API? Oczywiście nie możesz użyć java.util.HashMap do zaimplementowania tablicy mieszającej, ale co z użyciem java.util.List do gromadzenia posortowanych wyników? Czy są jacyś dyrektorzy prowadzący, którzy odpowiedzą na te i inne pytania, czy też dyrektor prowadzący powinien zapytać ankietera? A może to powinno być podstawą dyskusji podczas pisania kodu? Jeśli ankieter nie potrafi lub nie chce odpowiedzieć na jedno z tych pytań, czy istnieją jakieś wskazówki, jak wydobyć z niego informacje?


title: Czy skorzystasz z internetowego testu umiejętności technicznych, aby zatrudnić starszego programistę?

text: Istnieją serwisy internetowe, takie jak IKM, które oferują testy umiejętności z wielu dziedzin, w tym programowania. > Czy skorzystałbyś z tego rodzaju testów przy zatrudnianiu na stanowisko starszego > programisty? A co tylko po to, by obiektywnie porównać kandydatów przed wezwaniem ich na rozmowę kwalifikacyjną? Czy użyłbyś go jako kroku po krótkiej liście kandydatów po rozmowach kwalifikacyjnych? Czy to podejście jest bardziej odpowiednie w niektórych sytuacjach niż w innych? Czy osobiście korzystałeś z tego rodzaju usług lub znasz kogoś, kto to zrobił?


Jakiego oprogramowania używasz do śledzenia czasu spędzonego na projekcie?


title: Czy sieci społecznościowe zwiększają produktywność rozwoju?

text: Jestem programistą dość dużej firmy programistycznej (100+). Ponieważ w każdym dziale jest kilka działów i kilka zespołów; komunikacja jest kwestią dotyczącą: dzielenia się pomysłami, dostępności zasobów/narzędzi, stosowania dobrych/złych praktyk kodowania, świadomości istniejących narzędzi itp. Jakie sieci społecznościowe (Facebook/StackExchange) są dostępne, a które są używane „wewnętrznie” do komunikacji związanej z pracą? Jakie przykłady biznesowe można wykorzystać, aby pomóc kierownictwu wyższego szczebla w dostrzeżeniu wartości takiego zasobu dla zwiększenia produktywności?


title: Czy można utworzyć i uruchomić system operacyjny zbudowany od podstaw dla urządzeń iTouch?

text: Czego więc potrzebuję, aby napisać „Hello world” na iPodzie Touch podczas rozruchu? Czy to cały system operacyjny? Który kompilator miałbym użyć, jak byłaby zrobiona grafika...? Czy można to zrobić bez zbytniego wysiłku? Wiem, że napisanie programu ładującego Assembly nie jest takie trudne...


title: Problem zarządzania zależnościami

text: Rozważmy następną sytuację: 1. Mamy moduł A, który ma klasę Crt570 przeznaczoną do interakcji z urządzeniem. 2. Mamy moduł B, który używa Crt570 w klasie o nazwie M100Communicator. 3. Mamy dwie aplikacje C i D i obie chcą używać modułu B. 4. Aplikacja D chce używać B, ale nie chce używać Crt570 i modułu referencyjnego A, dlatego. „Moduł” oznacza tutaj dll. Postanowiliśmy więc wyodrębnić interfejs z Crt570 i nazwać go ICrt570. Ale co teraz z tym zrobić? To po prostu bardzo dziwne, aby przenieść ICrt570 do modułu domeny (nazwijmy go modułem E) lub gdzie indziej, ponieważ po tym Crt570 musi odwoływać się do modułu, który będzie zawierał ICrt570! Jak rozwiązać zagadkę? **AKTUALIZACJA** Aby w przyszłości ułatwić czytelnikom pytanie, dodam trochę więcej szczegółów. Moduł A to biblioteka dll, która zawiera tylko klasę Crt570 (z jej infrastrukturą). Więc ta biblioteka dll jest dedykowana absolutnie do zarządzania urządzeniem, nic więcej. Moduł B to biblioteka dll, która zawiera modele specyficzne dla kilku aplikacji w naszej domenie. Co najmniej 3 aplikacje chcą korzystać z tego modułu i oczywiście nie chcą pobierać bibliotek dll, których nie potrzebują. Jednym z modeli, z których chcą korzystać aplikacje C i D, jest model M100Communicator. A w szczególności ta klasa (M100Communicator) zależy od modułu A (klasa Crt570). Moduł E, o którym wspomniałem, to moduł domeny. Zawiera wiele klas i interfejsów, więc moduł A najwyraźniej nie chce z niego korzystać.


title: Czy istnieją jakieś standardowe wytyczne dotyczące projektowania oprogramowania?

text: Mój zespół około 70 programistów opracowuje kod C i C++ dla wbudowanych, wieloprocesorowych projektów przetwarzania obrazu. Posiadamy standard kodowania, prowadzimy przeglądy projektów i kodów. Problem polega na tym, że nie mamy solidnej listy kontrolnej przeglądu projektu. Obecnie mamy rozproszone listy kontrolne projektu, ale większość z nich jest niejasna. Na przykład, możesz znaleźć takie stwierdzenia: * Projekt komponentu powinien być rozszerzalny. * Sprzężenie powinno być zredukowane między modułami. Problem z tymi stwierdzeniami polega na tym, że są one całkowicie subiektywne i niemierzalne. Rozsuwany projekt dla mnie może oznaczać coś innego dla innego. Czy istnieje jakaś powszechnie akceptowana lub sprawdzona lista kontrolna lub zasady projektowania, które mogą służyć jako podstawa do naszych przeglądów projektów, zwłaszcza dla naszej zorientowanej obiektowo bazy kodu C++?


title: Czy dopuszczalne jest używanie funkcji lambda\metod w oprogramowaniu biznesowym?

text: Zauważyłem posty tutaj demonstrujące użycie funkcji delegatów\lambda do rozwiązania dziury w środku idei bez zbytniego powtarzania: http://www.markhneedham.com/blog/2009/04/04/functional-c -the-hole-in-the-middle-pattern/ Problemem wydaje się być to, że młodzi programiści i inni niekoniecznie rozumieją, czym jest koncepcja funkcji wskaźnik\deleguj\lambda, która wydaje się skłaniać do czytania (i prawdopodobnie debugowania) kod trudniejszy. Czy powinniśmy unikać lub poważnie ograniczać korzystanie z tego narzędzia przy pisaniu oprogramowania biznesowego, zwłaszcza w małych zespołach lub jednoosobowych sklepach deweloperskich? Czy też dopuszczalne jest używanie go z odpowiednimi komentarzami i oczekiwanie, że kiedy nie będzie mnie już w pobliżu, następny programista zrozumie lub nauczy się o funkcjach lambda?


title: Jak poprawnie dodać odwołanie z mojego projektu Github do kogoś innego w VS2013 w systemie Windows 8?

text: Muszę odwołać się do najnowszej wersji Bouncy Castle w projekcie, który zamierzam opublikować na Github. Podczas mojej pierwszej publikacji kodu na Github ktoś narzekał, że pobrałem całą bibliotekę Bouncy Castle, dodałem ją jako projekt i przesłałem. Jaki jest prawidłowy sposób łączenia się z najnowszą wersją tej biblioteki DLL Bouncy Castle, aby moje odniesienia były właściwie zarządzane?


title: Ile dodatkowego czasu potrzeba, aby dodać test jednostkowy do zadania programistycznego?

text: Mój zespół rozważa przejście do programowania opartego na testach. Obecnie prawie nie mamy testów jednostkowych, polegaliśmy tylko na teście akceptacji użytkownika i ręcznym teście programisty. Nie wszyscy zgodzili się z tą propozycją. W zespole nikt tak naprawdę nie ma doświadczenia w testowaniu jednostkowym, więc trudno jest przekonać wszystkich o korzyściach płynących z tego. Jednym z zarzutów jest potrzebny czas. Moje pytanie brzmi: ile dodatkowego czasu potrzeba zwykle na dodanie testu jednostkowego w stosunku do samego zadania? Powiedzmy, że jeśli kodowanie zadania (z wyłączeniem testu akceptacyjnego) zajmuje pół dnia, ile czasu zajmie średnio test jednostkowy? To oszacowanie jest dla nas ważne, aby wyjaśnić względną korzyść z wykonania testu jednostkowego i dostosować nasze planowanie. Jeśli ma to znaczenie, pracujemy głównie z aplikacją komputerową .NET (z graficznym interfejsem użytkownika i bazą danych) i nie jest to krytyczne dla bezpieczeństwa (to znaczy, nie jest to dla elektrowni jądrowej lub podobnych rzeczy). Pamiętaj też, że nikt z nas nie ma doświadczenia, więc będzie krzywa uczenia się


title: Wybór odpowiedniego sformułowania do odsyłania błędów kompilatora

text: Zastanów się, czy ktoś pisze wiadomość (lub pytanie na StackOverflow). Kontekst jest następujący: > W moim kodzie mam następującą linię: > `int foo = Bar();` > > Jednak kompilator **zwraca** błąd: > _wiersz 42: Bar() jest nieznaną funkcją_ Zastanawia mnie, czy wybrać odpowiedni czasownik zamiast **"powraca"**. Widziałem ludzi używających do tego różnych czasowników, ale utknąłem za każdym razem, gdy to czytałem: * "returns" można pomylić z wartością zwracaną przez funkcję; * „rzuty” dotyczą wyjątków; * "prints" ma trochę sensu, ponieważ dane wyjściowe kompilatora nie zawsze są drukowane; * „wyjścia”, „wyjścia” lub „daje” nie brzmią profesjonalnie; * "narzeka kompilator" brzmi trochę jak personifikacja kompilatora; Jaki jest właściwy czasownik w tej sytuacji?


title: Powszechna praktyka obsługi wiadomości o odrzuceniu

text: Obecnie głównie tworzę konto pocztowe osobno (z inną nazwą domeny np.noreply@example.com) i dodaję ten mail jako jedną ścieżkę zwrotną. Tak więc wiadomość o odrzuceniu trafi tylko do tej skrzynki pocztowej i przeanalizuję wiadomość e-mail jeden po drugim, aby sprawdzić pokwitowanie niepowodzenia i kod błędu, a następnie przekonwertuję kod błędu na rzeczywisty komunikat o błędzie. Na koniec komunikat o błędzie i wiadomość e-mail z potwierdzeniem niepowodzenia są wysyłane do mojego systemu i pozwalają użytkownikowi systemu sprawdzić informacje o odrzuceniu. Czy to powszechna praktyka? Ponieważ martwię się o pocztę wysłaną na moją skrzynkę pocztową inną z odrzuconej wiadomości, byłoby to katastrofą, gdybym je przeanalizował bez ich filtrowania, ale jak mogę odfiltrować odesłaną wiadomość od normalnej poczty? Dziękuję za jakąkolwiek pomoc.


title: Jakie korzyści zapewnia osadzanie zasobów w źródle/pliku binarnym?

text: Mam 300-500 obrazów i innych plików, z których korzysta mój program. Zdaję sobie sprawę, że mam dwie opcje: 1. Zapisz je w formacie binarnym, takim jak BMP, który jest ładowany dynamicznie. 2. Zapisz je w pliku źródłowym C, takim jak XPM, który umożliwia kompilację do programu, ale można go również ładować dynamicznie. Zakładając, że obie metody są równie łatwe do wdrożenia i nie wymagam dynamicznego ładowania, jakie są zalety każdej metody? Jak porównałaby się prędkość ładowania/uruchamiania?


title: Co powinniśmy zapewnić zespołowi deweloperów wynajętemu do ukończenia nowego projektu?

text: Chcemy, aby programiści zbudowali własną aplikację do obsługi płac i ewidencji czasu pracy przy użyciu symfony2/doctrine2. W tym momencie jesteśmy po prostu na etapie koncepcyjnym i będzie to nasz pierwszy raz, w którym programiści zbudują aplikację dla naszej firmy. Dlatego jest dla nas bardzo ważne, abyśmy dostarczali najbardziej aktualne i ważne informacje, jaki będzie nasz nowy zespół programistów. Jakie dokumenty lub narzędzia powinniśmy dostarczyć nowemu zespołowi, aby zmaksymalizować szanse powodzenia projektu i pomóc programistom być produktywnym od dnia dot?


title: Używanie „publicznych” zmiennych lub atrybutów w wywołaniach klas, podejście funkcjonalne

text: Zawsze zastanawiałem się nad dwiema rzeczami, które zwykle robię w moich małych projektach. Czasem będę miał taki projekt: class FooClass ... self.foo = "to jest pasek" self._do_some_stuff(self) def _do_some_stuff(self): print(self.foo) A czasami ten: class FooClass2 ... self .do_some_stuff(foo="to jest bar") def do_some_stuff(self, foo): print(foo) Chociaż z grubsza rozumiem różnice między podejściem funkcjonalnym a klasowym, zmagam się z projektem. Na przykład w `FooClass` `self.foo` jest zawsze dostępny jako atrybut. Jeśli jest wiele wywołań, czy jest to szybsze niż zrobienie `foo` zmiennej lokalnej, która jest przekazywana z metody do metody (jak w `FooClass2`)? Co dzieje się w pamięci w obu przypadkach? Jeśli preferowane jest `FooClass2` (tzn. nie potrzebuję dostępu do `foo`), a inne atrybuty wewnątrz nie zmieniają swoich stanów (klasa jest wykonywana tylko raz i zwraca wynik), wówczas kod powinien być zapisany jako szereg funkcji w module?


title: Jaka jest różnica między procesem zarządzania projektami oprogramowania a procesem tworzenia oprogramowania?

text: Jaka jest różnica między procesem zarządzania projektami oprogramowania a procesem tworzenia oprogramowania lub cyklem życia oprogramowania?


title: Jakie typowe problemy programistyczne najlepiej rozwiązywać za pomocą prototypów i zamknięć?

text: O ile rozumiem obie koncepcje, nie widzę, jak mogę skorzystać z zamknięć i prototypów JavaScript _poza_ używaniem ich do tworzenia instancji i/lub enkapsulowanych bloków klasopodobnych (co wydaje mi się bardziej obejściem niż atutem ) O wiele łatwiej zakochać się w innych cechach JS, takich jak funkcje jako wartości lub logiczne szacowanie wartości nielogicznych... **Jakie typowe problemy programistyczne najlepiej rozwiązać za pomocą dziedziczenia i domknięć propotypowych?**


title: Jak określane są minimalne wymagania systemowe?

text: Wszyscy widzieliśmy niezliczone przykłady oprogramowania, które jest dostarczane z „minimalnymi wymaganiami systemowymi”, takimi jak: * Windows XP/Vista/7 * 1 GB pamięci RAM * 200 MB pamięci W jaki sposób są one ogólnie określane? Oczywiście czasami istnieją specyficzne ograniczenia (jeśli program zajmuje 200 MB na dysku, to jest to trudne wymaganie). Poza tymi sytuacjami, wiele razy w przypadku rzeczy takich jak pamięć RAM lub procesor okazuje się, że więcej/szybciej znaczy lepiej bez twardych ograniczeń. Jak są one określane? Czy programiści wymyślają tylko liczby, które wydają się rozsądne? Czy kontrola jakości przechodzi przez rygorystyczne testy różnych wymagań, dopóki nie znajdą najniższych ustawień z akceptowalną wydajnością? Instynkt podpowiada mi, że powinno być to drugie, ale w praktyce często jest to pierwsze.


title: Czy bazy danych NoSQL zorientowane na agregację mają zalety we wdrażaniu BI w czasie rzeczywistym?

text: Czytam książkę Martina Fowlera zatytułowaną „NoSQL destylowany”, który pisze: > Agregaty mogą być również wykorzystywane do uzyskiwania danych analitycznych; np. aktualizacja zbiorcza > może uzupełnić informacje o tym, które Zamówienia mają w sobie dany Produkt. > Ta denormalizacja danych pozwala na szybki dostęp do danych, którymi > jesteśmy zainteresowani i jest podstawą dla Real Time BI lub Real Time Analytics, gdzie > przedsiębiorstwa nie muszą polegać na wypełniaj dane > tabele hurtowni i generuj analizy; teraz mogą wypełnić tego typu > dane, dla wielu rodzajów wymagań, w momencie składania > zamówienia przez klienta. Ale nie wyjaśnia, dlaczego nie mogę zrobić tego samego z relacyjnymi bazami danych i jak denormalizacja pomaga rozwiązać to zadanie. Czy agregacja i/lub denormalizacja pomagają we wdrażaniu BI w czasie rzeczywistym i dlaczego? Co tutaj ma na myśli Fowler? (Przez agregaty rozumie się dokumenty w bazach danych, takich jak MongoDB lub inne rekordy danych w innych bazach danych, które mają strukturę zagnieżdżoną zamiast wartości atomowych i kluczy obcych)


title: Gdzie można znaleźć projekty wolnego oprogramowania, które potrzebują programistów/menedżerów projektów?

text: Chociaż mam mnóstwo „booksmarts” w zarządzaniu projektami i garść doświadczenia w PM, wydaje mi się, że nie mam wystarczającego doświadczenia, aby dostać taką pracę, jakiej chcę. Ponieważ „przeczytałem dzisiaj kolejną książkę/bloga PM” tak naprawdę się nie liczy, pomyślałem, że mógłbym znaleźć projekty wolnego oprogramowania/open source (FOSS), które szukają/zatrudniają kierowników projektów lub programistów i zobaczę, czy jest coś, co może się zgłosić na ochotnika. Czy ktoś zna jakieś miejsca pracy FOSS, w których mógłbym znaleźć takie projekty? Coś podobnego do careers.stackoverflow.com. Wiem, że mógłbym po prostu przejść do sourceforge/freshmeat i rozejrzeć się dookoła, ale miałem nadzieję, że znajdę jakąś stronę, która spełni tę potrzebę (a jeśli takie strony istnieją, moje google-fu najwyraźniej BARDZO słabo je znajduje).


Co zrobić, gdy sprint zakończy się wcześniej? W tej chwili nasz zespół Scrum pracuje nad historiami z zaległości, jeśli sprint zostanie wcześniej zakończony. Co dzieje się z historiami wziętymi z zaległości? Czy historie zostaną dodane do obecnego sprintu? Jeśli tak, co jeśli te historie nie zostaną ukończone na czas. Czy Sprint się nie powiódł?


title: Wartości relacji łącza i atrybut REL - edytowane

text: 1. Czy w REST **zawsze** używamy _wartości relacji linków_ do przekazania semantyki/roli _linkowanego zasobu_? 2. Zakładam, że _wartość relacji linku_ jest zawsze określana za pomocą atrybutu `rel`? 3. Czy atrybut `rel` powinien być określony tylko w **kontrolce hipermediów**? 4. Zakładam, że aby _element_ był uważany za **kontrolę hipermediów**, musi zapewniać funkcjonalność łączenia i musi również zawierać atrybut `rel`?


title: Czy maven powinien generować kod jaxb java, czy po prostu używać kodu java z kontroli źródła?

text: Staramy się zaplanować, jak połączyć serwer kompilacji dla naszego nowego, błyszczącego zaplecza java. Używamy dużo generowania kodu jaxb XSD i wdałem się w gorącą kłótnię z każdym, kto dbał o to, aby serwer kompilacji 1. usunąć utworzone przez jaxb struktury, które zostały zaewidencjonowane 2. wygenerować kod z XSD 3. użyć kodu wygenerowanego z tych XSD Wszyscy inni myśleli, że bardziej sensowne jest użycie kodu, który zaewidencjonowali (sprawdzamy kod wygenerowany z XSD, ponieważ Eclipse w zasadzie zmusza cię do zrobienia tego, o ile mogę to stwierdzić). Moim jedynym przestarzałym argumentem jest to, że czytam test Joela, że tworzenie kompilacji w jednym kroku oznacza generowanie z kodu źródłowego, a kod źródłowy nie jest źródłem java, ale XSD, ponieważ jeśli bawisz się wygenerowanym kodem w końcu zostaniesz uszczypnięty. Tak więc, biorąc pod uwagę, że wszyscy się zgadzamy (możesz się nie zgadzać), prawdopodobnie powinniśmy sprawdzać nasze generowane pliki java, czy powinniśmy ich użyć do wygenerowania naszego kodu, czy powinniśmy wygenerować go za pomocą XSD?


title: Witryna kodująca z wiązką testową dla podstawowych struktur danych, takich jak połączona lista, wykres, ciągi itp.

text: Właśnie wziąłem test online Amazon i źle go zepsułem. Wyszedłem z praktyki i nie mam pewności co do pisania kodu. Czy są jakieś witryny kodujące z testowymi uprzężami dla podstawowych struktur danych i z podstawowymi problemami, takimi jak tablice, łańcuchy, listy połączone, listy sąsiedztwa grafów itp., Abym mógł odświeżyć podstawowy kod, taki jak odwracanie połączonej listy, sprawdzanie, czy lista połączona jest palindromem, sortowanie połączonej listy, znajdowanie podciągu w ciągu itp. To sprawi, że podstawowe szczotkowanie DS będzie zabawne. Wiem, że istnieją strony takie jak codechef i topcoder, ale z tego, co widziałem, nie mają one tak podstawowej listy, wykresów koncepcyjnych pytań DS i narzędzi testowych.


title: Projekt bazowy kodu PHP: Pojedynczy plik "queries.php" lub rozproszenie zapytań w różnych plikach/klasach php?

text: Kiedy tworzę projekty PHP, czy lepiej umieścić wszystkie zapytania do bazy danych (np. MySql) w jednym pliku (np. "queries.php")? A może lepiej umieścić odpowiednie zapytania w dowolnych klasach „modelowych” (np. User.php), które mogę tworzyć? Czy złą praktyką jest umieszczanie zapytań do bazy danych w dowolnym pliku PHP? W query.php umieściłbym funkcje do wywoływania zapytań.


title: Oceń swoją wiedzę na temat języka programowania według koncepcji językowych

text: Szukam dobrego sposobu na **ocenę wiedzy** w konkretnym **języku programowania**. Pomysł zrodził się, gdy znalazłem następujący artykuł: Fałszywie wszystkie kredyty? Nie znasz JavaScriptu. Zawiera on wyczerpującą listę **cechy i koncepcje językowe** JavaScript. Chciałbym, żeby istniała lista dla każdego języka programowania. W szczególności interesuje mnie: * Java * C * Python * C# / .NET * C++ * JavaScript Każdy inny język lub technologia również byłby interesujący. W podobnym pytaniu Jaki jest dobry sposób na ocenę własnych umiejętności kodowania, zasugerowano Matrycę Kompetencji Programisty. Myślę, że to dobre podejście, ale myślę, że jest zbyt ogólne. Czy znasz jakieś inne streszczenia pojęć językowych, które mogłyby pomóc w ocenie znajomości języka programowania?


title: Czy celowy C++ jest wycofywany?

text: Czy Apple wycofuje wsparcie dla Object-c++? Zwróć uwagę na następujące: * W podręczniku języka Objective-C znajdowała się kiedyś sekcja poświęcona mieszaniu Objective-c i c++. Brakuje tej sekcji. * Linki do artykułów na temat Object-c++ na stronie programisty Apple wydają się być uszkodzone i są teraz przekierowywane, np. ten, który znalazłem w tym pytaniu o stackoverflow. * Wyszukiwanie c++ w witrynie Apple Dev przynosi bardzo niewiele aktualnych informacji. Czy powinienem się martwić używaniem c++ do programowania na iOS?


title: Najczęściej używane bezpłatne dystrybucje linux i SQL

text: Zamierzam obniżyć początkowe koszty założenia firmy. Chociaż bardzo lubię Windows Server 2008 i SQL Server 2008, uważam, że ich model sprzedaży na procesor jest bardzo drogi. Ponadto, jeśli firma miałaby się rozwijać, nowe serwery internetowe i serwery bazodanowe będą od nich zależeć, zwiększając wydatki. Jakie są najpopularniejsze (tj. najczęściej używane) bezpłatne dystrybucje linuksowe dla firm komercyjnych? Jakie są najpopularniejsze (czyli najczęściej używane) bezpłatne bazy danych SQL dla firm komercyjnych?


title: Czy parser JSON pomija puste tablice?

text: Mam taki JSON: { "CODE" : [{ "FOO" : "BAR", "SET" : [] }, { "FOO" : "ABC", "SET" : [] } ] } Teraz, kiedy próbuję uzyskać dostęp do CODE[0].SET, w mojej przeglądarce pojawia się błąd, że "SET" nie istnieje. Używam biblioteki json_parse autorstwa Douglasa Crockforda, aby przeanalizować powyższy JSON: https://github.com/douglascrockford/JSON- js/blob/master/json_parse.js Z góry przepraszam, jeśli opublikowałem to pytanie na niewłaściwym forum .


title: Dziedziczenie a kompozycja w aplikacji biznesowej

text: Posiadam system zarządzania i śledzenia szkoleń, o strukturze wysokiego poziomu w następujący sposób: Mamy _Role_1, np. Menedżer, szef zmiany, górnik itp. oraz _Kandydat_ szkolący się do tej roli. Rola zawiera listę kursów i ich przedmiotów, które kandydat musi ukończyć, aby zakwalifikować się do roli. _Candidate_ ma atrybut `TrainingHistory` zawierający kursy i przedmioty, które ukończyli, ich wyniki oraz datę ukończenia. Teraz widzę go jako _TrainingHistoryCourse_ **jest** _Course_ , rozszerzony o dodanie `DateCompleted` itp., ale coś mnie dręczy, abym raczej używał czegoś takiego jak _TrainingHistoryRecord_, który **ma** _kurs_. Jak mogę to dalej przeanalizować, aby określić, którego wzoru użyć? Następnie _Role_ zawiera listę definicji _RoleTask_, które Kandydat musi być obserwowany podczas wykonywania, a Kandydat ma historię obiektów _RoleTaskObservation_ rejestrujących ich wydajność w tych zadaniach. Jest to bardzo podobne do wymagań dotyczących kursu/przedmiotu i wzorca historii dla kandydata, z wyjątkiem jednego mniej hierarchicznego poziomu, ale _RoleTaskObservation_ wyraźnie nie ma relacji **jest-a** z _RoleTask_ , chyba że zatkam nos i raczej użyj _ObservedRoleTask_. Wolałbym używać tego samego wzorca zarówno dla struktury przedmiotu/kursu, jak i zadania/obserwacji, ale myślę, że zmusiłoby mnie to do przyjęcia wzorca kompozycji dla _TrainingHistoryCourse_. Jaka jest tu mądrość? Zawsze dziedziczyć tam, gdzie to możliwe i potwierdzane przez solidną asocjację, czy zawsze preferować kompozycję, gdy tylko jest to możliwe? 1 Klient określił to jako JobTitle, ale nie pisze aplikacji, a JobTitle jest tylko jednym atrybutem roli. Role autoryzacji są obsługiwane przez framework DevExpress i jego zaczepy dostosowywania, więc nie byłoby bardzo mało zamieszania między rolą biznesową w moich obiektach domeny a rolą autoryzacji w kodzie struktury niższego poziomu.


title: Jak śledzisz wszystkie swoje hasła?

text: Zadam to pytanie, ryzykując, że ktoś ujawni mi swój osobisty algorytm, jeśli tak robisz, nie publikuj tego! Chciałbym dowiedzieć się, jakiego oprogramowania używasz do zarządzania hasłami w różnych witrynach. Jeśli używasz oprogramowania, co to jest? Jakie funkcje lubisz/nienawidzisz/chcesz? Pewnego dnia odkryłem dostawcę, który oferuje platformę „Hosted Cloud” do zarządzania hasłami. Czy rozważyłbyś coś takiego? Jakie byłyby Twoje wymagania?


title: Biorąc pod uwagę wzorzec modelu prezentacji, czy widok, model prezentacji lub model jest odpowiedzialny za dodawanie widoków podrzędnych do istniejącego widoku w czasie wykonywania?

text: Buduję aplikację opartą na Flex 4 przy użyciu wzorca projektowego modelu prezentacji. Ta aplikacja będzie miała kilka różnych komponentów, jak pokazano na poniższym obrazku. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/jpFp8.png) Widok główny i widok pulpitu nawigacyjnego będą zawsze widoczne i każdy z nich ma odpowiadające im modele i modele prezentacji w razie potrzeby. Widoki te można łatwo tworzyć, deklarując ich MXML w katalogu głównym aplikacji. <s:HGroup width="100%" height="100%"> <MainView width="75% height="100%"/> <DashboardView width="25%" height="100%"/> </ s:HGroup> Będzie również wiele widoków WidgetViewN, które użytkownik może dodać do DashboardView w czasie wykonywania za pomocą prostej listy rozwijanej. Należy to wykonać za pomocą ActionScript. Lista rozwijana powinna zawsze pokazywać to, co już posiadał WidgetViewN został dodany do DashboardView.Dlatego niektóre stany o tym, które WidgetViewN zostały utworzone, muszą być przechowywane.Ponieważ lista dostępnych WidgetViewN i które z nich są dodawane do DashboardView, również muszą być dostępne z innych komponentów w systemie, myślę, że to musi być przechowywany w obiekcie modelu. Moje rozumienie wzorca projektowania modelu prezentacji jest takie, że widok jest bardzo uproszczony. Zawiera logikę zbliżoną do zera, na ile jest to praktyczne. Widok komunikuje się / wiąże się z modelem prezentacji, który zawiera całą niezbędną logikę widoku Model prezentacji jest skuteczny to abstrakcyjna reprezentacja widoku, która wspiera niskie sprzężenie i ułatwia testowalność. Model prezentacji może mieć wstrzyknięty jeden lub więcej modeli w celu wyświetlenia niezbędnych informacji. Same modele nie zawierają żadnej logiki widoku. Mam więc kilka pytań dotyczących tego projektu. 1. Kto powinien być odpowiedzialny za tworzenie komponentów WidgetViewN i dodawanie ich do DashboardView? Czy jest to odpowiedzialność DashboardView, DashboardPresentationModel, DashboardModel czy czegoś zupełnie innego? Wygląda na to, że DashboardPresentationModel byłby odpowiedzialny za tworzenie/dodawanie/usuwanie wszelkich widoków podrzędnych z jego wyświetlacza, ale jak to zrobić bez przekazywania DashboardView do DashboardPresentationModel? 2. Lista dostępnych i widocznych komponentów WidgetViewN musi być również dostępna dla kilku innych komponentów. Czy jest w porządku, aby odwołanie do WidgetViewN było przechowywane/odwoływane w modelu? 3. Czy są jakieś dobre przykłady wzorca modelu prezentacji online w Flex, które obejmują również tworzenie widoków podrzędnych w czasie wykonywania?


title: Stanowisko, w którym łączy się z innymi programistami wraz z pisaniem kodu

text: Czy jest stanowisko w firmach (i jakich?), gdzie rolą jest pisanie kodu wraz z pójściem na seminaria, aby połączyć się z innymi programistami, którzy mogą być klientami produktu Twojej/firmy? Chciałbym wyjść z pisania kodu w boksie. Jestem już członkiem niektórych spotkań i regularnie tam chodzę, ale chciałbym dostać pracę, w której wymagana jest łączność i dzielenie się. Nie jestem pewien, jakie firmy mają taką pozycję i jak się to nazywa. Jestem programistą z wystarczającym doświadczeniem w tworzeniu stron internetowych. Dziękuję.


title: Jak ważne jest naprawianie wycieków pamięci?

text: Odkryłem przez Valgring, że niektóre programy GTK+ powodują wycieki pamięci. Jak ważne jest naprawienie tych przecieków? Chodzi mi o to, że często te programy działają bardzo dobrze, ale z drugiej strony nigdy nie można być pewnym, czy chce się skopiować część kodu, który przecieka do innego programu. I nie jestem pewien, czy idea programów GTK+ ma działać szybko i dlatego są przecieki. Więc jeśli czasami znajdę wyciek pamięci w programie open source, czy powinienem go naprawić, czy są na przykład problemy z wydajnością i dlatego pierwotnym pomysłem programistów było napisanie małego, przeciekającego kodu?


title: W jaki sposób osoby wykonujące TDD radzą sobie z utratą pracy podczas poważnej refaktoryzacji?

text: Od jakiegoś czasu staram się nauczyć pisać testy jednostkowe dla mojego kodu. Początkowo zacząłem od prawdziwego TDD, gdzie nie pisałbym żadnego kodu, dopóki najpierw nie napisałem nieudanego testu. Jednak ostatnio miałem drażliwy problem do rozwiązania, który wymagał dużej ilości kodu. Po spędzeniu dobrych kilku tygodni na pisaniu testów, a następnie kodowaniu, doszedłem do niefortunnego wniosku, że całe moje podejście nie zadziała i będę musiał odrzucić dwa tygodnie pracy i zacząć od nowa. Jest to wystarczająco zła decyzja, aby podjąć po napisaniu kodu, ale kiedy napisałeś również kilkaset testów jednostkowych, jeszcze trudniej jest po prostu to wszystko wyrzucić. Nie mogę przestać myśleć, że zmarnowałem 3 lub 4 dni wysiłku na pisanie tych testów, podczas gdy mogłem po prostu złożyć kod do weryfikacji koncepcji, a następnie napisać testy, gdy byłem zadowolony z mojego podejścia. Jak ludzie ćwiczący TDD właściwie radzą sobie w takich sytuacjach? Czy jest powód do naginania zasad w niektórych przypadkach, czy zawsze najpierw niewolniczo piszesz testy, nawet jeśli ten kod może okazać się bezużyteczny?


title: Czy zawsze powinniśmy tworzyć konfigurację do wdrożenia lub aplikacji?

text: Ostatnio stworzyłem aplikację w C#, która ma działać w środowisku firmy, w której pracuję. Mogę technicznie wygenerować Instalatora lub użyć ClickOnce do obsługi wdrożenia aplikacji, ale rozważam w zasadzie skopiowanie pliku EXE do katalogu publicznego i wykonanie go z tego miejsca. Program odzyskuje dane z bazy danych, wykonuje obliczenia i wyświetla wyniki. Zastanawiałem się, jakie były upadki tego pomysłu. Do tej pory wymyśliłem, co następuje: * muszę się upewnić, że na każdej maszynie są zainstalowane wymagania wstępne (np. .Net Framework 4.0) * nie będę mógł "automatycznie" utworzyć skrótu i wpisów w "Menu Start" (nie ma problemu, użytkownik może to zrobić ręcznie). W szczególności zastanawiałem się, czy fakt, że kilku użytkowników faktycznie uruchamia tę samą aplikację w tym samym czasie, może powodować problem (współbieżność, wydajność)?


title: Testowanie jednostkowe wielu warunków w instrukcji IF

text: Mam fragment kodu, który wygląda mniej więcej tak: function bool PassesBusinessRules() { bool meetBusinessRules = false; if (PassBusinessRule1 && PassesBusinessRule2 && PassesBusinessRule3) { meetBusinessRules= true; } powrót spełnia Zasady Biznesowe; } Uważam, że dla tej konkretnej funkcji powinny być cztery testy jednostkowe. Trzy, aby przetestować każdy z warunków w instrukcji if i upewnić się, że zwraca ona wartość false. I kolejny test, który upewnia się, że funkcja zwraca prawdę. **Pytanie:** Czy zamiast tego powinno być dziesięć testów jednostkowych? Dziewięć sprawdza każdą z możliwych ścieżek awarii. IE: * Fałsz Fałsz Fałsz * Fałsz Fałsz Prawda * Fałsz Prawda Fałsz I tak dalej dla każdej możliwej kombinacji. Myślę, że to przesada, ale niektórzy inni członkowie mojego zespołu nie. Patrzę na to tak, że jeśli reguła BusinessRule1 zawiedzie, to zawsze powinna zwrócić wartość false, nie ma znaczenia, czy była sprawdzana jako pierwsza czy ostatnia.


title: Czy aplikacja, która nie robi nic poza łączem do witryny internetowej, jest wystarczająco funkcjonalna, aby spełnić wytyczne Apple dotyczące iOS?

text: Nie spędzam czasu na programistach na tyle, aby wiedzieć, czy to pytanie jest "ok", więc przepraszam, jeśli nie. Starałem się, aby tytuł był oczywisty, żeby przynajmniej można go było szybko zamknąć :-) Pytanie jest proste. Mój pracodawca chce mieć „obecność na ekranie głównym” (a przynajmniej taką możliwość) na urządzeniach z systemem iOS (również Android, ale w tej chwili najbardziej interesuje mnie Apple). Nasza rzeczywista aplikacja będzie czysto dostarczana przez Internet i przyjazna dla urządzeń mobilnych, więc to, czego chcemy na ekranie głównym, jest w zasadzie czymś, co działa jak łącze do wywołania Safari (lub teraz, jak sądzę, Chrome; nieważne). Zakładam, że jest to mniej więcej możliwe; jeśli nie, to też byłoby interesujące. Wiem, że wytyczne Apple są takie, że aplikacje o niskiej funkcjonalności są generalnie odrzucane z ręki. Istnieje wiele istniejących aplikacji, które wydają się (dla mnie) mniej funkcjonalne niż link do czegoś przydatnego, ale nie jestem oczywiście Apple. Ponieważ wydaje się to niezbyt dziwną sytuacją, mam nadzieję, że ktoś wie, że jest albo zdecydowanie OK (może dlatego, że jest wiele takich aplikacji) lub zdecydowanie nie OK. Zauważ, że wiem o takich rzeczach jak PhoneGap i nie chcę tego, przynajmniej nie w tej chwili.


title: Jak mogę ponownie użyć automatu stanu w nieco inny sposób?

text: ## Problem Mam dużą maszynę stanową. Wymagania projektowe projektu zmieniły się tak, że muszę ponownie wykorzystać tę maszynę stanową w innym miejscu. Wszystkie stany pozostają takie same w tym nowym miejscu, ale kilka stanów prowadzi nieco inne sprawy. Jaki wzorzec projektowy pozwala mi na ponowne użycie tego automatu stanów? ## Motywacja Buduję odtwarzacz wideo. Jest modelowany przez maszynę stanów z następującymi stanami: zatrzymanie, ładowanie, odtwarzanie, wstrzymanie, awaria i kilka innych... Ten odtwarzacz wideo musi być używany na dwóch stronach internetowych. Gdy odtwarzacz ulegnie awarii na pierwszej stronie, poniżej powinien pojawić się komunikat o błędzie. Jeśli odtwarzacz ulegnie awarii na drugiej stronie, komunikat o błędzie powinien pojawić się na środku filmu i kilka razy zapulsować.


title: Jak wyróżniłbyś kod?

text: Podczas gdy podstawowe scenariusze są białe na czarnym i czarne na białym, większość programistów uważa za przydatne bardziej zróżnicowane podświetlanie składni. Jakie korzyści znajdziesz w ogólnej konfiguracji? (np. „ciemne tło pozwala...”) Jakie konkretne poprawki są dla Ciebie najbardziej przydatne? (Np. " _nieco_ białawy działa na..." lub "podświetlanie cudzysłowów i znaków specjalnych, jak \n, inaczej pokazuje...") Jedna odpowiedź na osobę; w razie potrzeby wymień kilka punktów w ramach jednej odpowiedzi.


title: Nauka w locie

text: Chciałbym wiedzieć, co robią inni programiści, gdy zaistnieje sytuacja, aby zaimplementować kilka funkcji w nieznanym wam języku. Znasz Javascript i nie znasz jquery, jak sobie radzisz z implementacją niektórych funkcji w jquery, zakładając, że masz mało czasu.


title: Jaki jest lepszy sposób pobierania opłat za platformę w chmurze, prosty, ale droższy lub skomplikowany, ale tańszy dla większości?

text: Pracuję na platformie w chmurze i byłem ciekaw, co ludzie wolą, jeśli chodzi o płacenie za usługi internetowe. Dostępna jest opcja bardzo prostej wyceny (poziomy itp.), dzięki której można łatwo zaprojektować koszty, łatwo ją porównać, ale (być może znacznie) droższą dla przeciętnego użytkownika, ponieważ zawsze zapłacisz za mało lub za dużo. Drugą opcją jest skomplikowana struktura cenowa z wieloma różnymi czynnikami, znacznie trudniejsza do zaplanowania kosztów, ale dosłownie płacisz tylko za to, z czego korzystasz, więc cena jest niższa dla przeciętnego użytkownika. Który wolisz?


title: Jaka jest różnica między wymaganiami a specyfikacjami?

text: Otrzymałem zadanie opracowania wymagań i specyfikacji dla projektu, który rozpoczyna nasza grupa. Zdałem sobie sprawę, że nie znam różnicy; wyszukiwanie w Google po prostu bardziej mnie zdezorientowało – wydaje się, że niektórzy twierdzą, że specyfikacje _są_ wymaganiami, ale na niższym poziomie.


title: Co to jest ciągła integracja (CI) i jak jest przydatna?

text: Czy ktoś może mi w łatwy do zrozumienia sposób wyjaśnić koncepcję Ciągłej Integracji, jak to działa? I dlaczego firma powinna przyjąć CI w swoim przepływie pracy dostarczania kodu? Jestem programistą i moja firma (głównie zespół budujący) korzysta z Team City. Jako programista zawsze sprawdzam, aktualizuję i zatwierdzam kod do SVN, ale nigdy tak naprawdę nie musiałem przejmować się TeamCity lub ogólnie CI. Więc chciałbym zrozumieć, jaka jest przydatność CI? Czy CI jest częścią metodyk Agile?


title: Czy mój diagram przypadków użycia jest poprawny?

text: UWAGA: Uczę się samodzielnie UML, więc nie mam nikogo, kto mógłby weryfikować moje diagramy i dlatego publikuję tutaj, więc proszę o wyrozumiałość. Jest to problem, który otrzymałem z jakiegoś pliku PDF dostępnego w Google, który zawierał po prostu następujący opis problemu: **Opis problemu** : biblioteka zawiera książki i czasopisma. Zadanie polega na opracowaniu komputerowego systemu wypożyczania książek. Aby wypożyczyć książkę, wypożyczający musi być członkiem biblioteki. Istnieje ograniczenie liczby książek, które może wypożyczyć każdy członek biblioteki. Biblioteka może posiadać kilka egzemplarzy danej książki. Istnieje możliwość rezerwacji książki. Niektóre książki są przeznaczone wyłącznie na pożyczki krótkoterminowe. Pozostałe książki można wypożyczyć na 3 tygodnie. Użytkownicy mogą przedłużyć pożyczki. 1\. Narysuj diagram przypadków użycia dla biblioteki. 2\. Podaj opis przypadku użycia dla dwóch przypadków użycia: • Wypożycz kopię książki • Przedłuż pożyczkę **Schemat:** ![tu wpisz opis obrazu](http://i.stack.imgur.com/c4lXh.png) ** Opis przypadku użycia:** **1\. Pożycz kopię książki:** Jeśli dana osoba chce wypożyczyć książkę z Biblioteki Publicznej w Derpville, musi być członkiem biblioteki, w którym to przypadku będzie mogła wydać określoną liczbę książek. Jeśli dana osoba nie jest członkiem, książka nie zostanie im wydana do zabrania, raczej będzie musiała siedzieć i czytać w bibliotece. **2\. Przedłużenie wypożyczenia:** Niektóre książki będą wypożyczane na 3 tygodnie, a inne na dłużej niż 3 tygodnie. W takim przypadku osoba wypożyczająca musi przyjść do biblioteki i uzyskać przedłużenie terminu. Istnieje limit, o ile użytkownik może przedłużyć datę danej książki.


title: Czy warto stosować konwencje nazewnictwa przedrostków typu i zakresu?

text: Niedawno rozpoczynając swoją pierwszą pracę jako programista, zostałem trochę rzucony, gdy usłyszałem, że nie muszę przestrzegać żadnych konwencji nazewnictwa w moim kodzie. Kod pisany przez grupy pracujące nad innymi, większymi projektami był zgodny z konwencjami nazewnictwa, ale odkąd zostałem sprowadzony do napisania nowej, samodzielnej aplikacji, wydawało mi się, że nie ma to szczególnego znaczenia. To był ostatni z moich zmartwień, więc po prostu wziąłem ten istniejący konwent i pobiegłem z nim. int nTickCount   bool bConnected   object[] m_aItems   fSum += fWeight * fValue   class cManager   enum etSystemStates   etSystemStates eState   cManager.cs Ale czy rzeczywiście warto? Trudno mi ocenić, jaki efekt końcowy tego rodzaju konwencji nazewnictwa wpływa na zrozumienie i wykrywanie błędów, ale _wizualnie_ wygląda to po prostu brzydko. Ponadto posiadanie każdej klasy i pliku w projekcie o nazwie cSomething wydaje się dość głupie. Nie mam złudzeń, że w porównaniu z rzeczami, które mają oczywistą różnicę, takimi jak algorytmy i architektury, które stosujesz, jest to choć trochę wielka sprawa. Ale każda konwencja, która ma wpływ na każdą linijkę kodu, którą piszę, wydaje się godna uwagi. Jaka jest według Ciebie najbardziej elegancka i skuteczna konwencja nazewnictwa, jeśli w ogóle trzeba ją zastosować? Czy oznacza typ i/lub zakres?


title: Czy wyjątki podklasy powinny rozszerzać wyjątki nadklasy czy moją własną przestrzeń nazw?

text: Nasza biblioteka rozszerza inną (zewnętrzną) bibliotekę. Kiedy tworzymy klasę potomną w naszej bibliotece i chcemy zgłosić wyjątki, czy te wyjątki powinny rozszerzać wyjątki z klasy nadrzędnej czy z naszej własnej przestrzeni nazw? Na przykład: class Ich_Wyjątek extends Exception {} class Ich_Klasa {} class Ich_Klasa_wyjątek extends Ich_Wyjątek {} class Nasz_Wyjątek extends Exception {} class Nasza_Klasa extends Ich_Klasa {} class Nasza_Klasa_Wyjątek extends Nasza_Klasa {} // czy Ich_Klasa_Wyjątek? Czy lepiej zachować nasz kod jak powyżej i rozszerzyć naszą własną przestrzeń nazw? Z mojego punktu widzenia mamy następujące alternatywy: 1. Rozszerz naszą własną przestrzeń nazw, przechwytując wszystkie możliwe przypadki `Their_Class_Exception` i wrzucając `Our_Class_Exceptions` w ich miejsce (pełna enkapsulacja, ale ogólnie może to wymagać sporo przeróbek) 2. Rozszerz naszą własną przestrzeń nazw, ale tylko nie łap `Their_Class_Exception` w `Our_Class` (prawdopodobnie oznacza wiele bloków catch) 3. Rozszerz `Their_Class_Exception` (wydaje się sprzeczne z intuicją, może wprowadzać błędy poprzez wychwycenie niewłaściwych wyjątków) Który z nich jest najlepsze podejście w ogóle, aby nasz kod był spójny?


title: jaka jest najlepsza platforma do wyjaśnienia pseudokodu programiście, który nic o nim nie wie?

text: Jestem osobą naukową, która musi udokumentować złożony kod Matlaba, aby przekazać go programiście, aby mógł zrozumieć i zaprogramować w innym języku. W przeszłości używałem MS Word (wyjaśniając każdy krok programu jako nowy wiersz w tabeli), a następnie Excela, ale nie znalazłem żadnego szczególnie dobrze nadającego się do wyświetlania mojego kodu Matlab i wprowadzania komentarzy w jasny i zwięzły sposób, aby to udokumentować. Zastanawiam się, czy istnieje lepsza technika przekazywania pseudokodu programiście. Jakieś istniejące oprogramowanie (bezpłatne?) lub inna platforma (np. TextWrangler) szczególnie nadająca się do dostarczania kodu i jakiejś metody jego wyjaśnienia? Mając nadzieję, że wyciągniesz wnioski z doświadczeń innych, robiąc to samo. Z góry dziękuję. Po przeczytaniu kilku komentarzy spróbuję wyjaśnić więcej... Zakładam, że wszyscy programiści znają pseudo-kod, ale nie zakładam, że wielu zna kod Matlaba. Tak więc, jeśli piszę w pseudokodzie, mogę zignorować kod Matlaba (lub podać go w celach informacyjnych itp.). Ale moje pytanie jest naprawdę prostsze... czy jest jakieś oprogramowanie lub platforma, z której ludzie korzystali w przeszłości do jasnego przekazywania kodu programiście? Coś, co umożliwi osobie tworzącej dokument łatwe opisanie kodu? Na przykład możesz osadzić kod, który kody kolorów oprogramowania (jeden kolor dla komentarzy, inny dla słów zastrzeżonych (jeśli, to, inaczej, dla, itp.) itp.), a po jednej stronie jest miejsce na wprowadzenie wyjaśnień i referencje itp. Próbowałem to zrobić, używając produktów MS, ale pomyślałem, że ponieważ istnieje branża ludzi, którzy muszą zrobić to samo, może ktoś opracował system, który to ułatwi.


title: Wbudowany Linux a Windows Embedded Standard 7

text: Ok szukam naprawdę subiektywnych odpowiedzi. Moja firma tradycyjnie była sklepem z Linuksem, produkujemy i sprzedajemy specjalnie zbudowane skrzynki do wideoochrony. Niedawno zdecydowaliśmy się zbudować pudełko Embedded Windows Standard 7, ponieważ skróciło to nasz rozwój i czas wprowadzania na rynek, a także ponieważ wszystkie narzędzia są dostępne z półki dla systemu Windows. Czego szukam, to solidne odpowiedzi dotyczące bezpieczeństwa WES7 kontra Linux? Jak stabilny jest WES7, jak podatny na próby włamań, ataki wirusów itp. Jakie można lub należy powiedzieć z marketingowego punktu widzenia korzyści z używania WES7 nad Linuksem? Czy są jakieś? Jakie są porównania między bezpieczeństwem komputerów stacjonarnych Windows 7 i Embedded Windows Standard 7? Wszelkie odpowiedzi byłyby bardzo mile widziane. Dziękuję


title: Używasz jednego lub wielu plików do właściwości graficznych?

text: Tworzę grę 2D w zwykłym ANSI-C przy użyciu SDL2. Zamierzam umożliwić użytkownikom tworzenie własnych grafik. Aby to osiągnąć, użyję pliku informacyjnego, który będzie zawierał pewne dane, takie jak szerokość, wysokość, pozycja X i Y każdej klatki. Ale mam na to dwa poglądy. Jednym z nich jest użycie jednego pliku, który będzie zawierał informacje o wszystkich grafikach. Drugim jest użycie jednego pliku dla każdej grafiki. Który jest szybszy i czystszy? Czy to po prostu to samo?


title: Najlepsze podejście do śledzenia stanu zależnego

text: Załóżmy, że pracuję nad aplikacją do śledzenia projektów. Aplikacja jest aplikacją internetową opartą na bazie danych, hostowaną na serwerze. W tej aplikacji znajdują się **Projekty**, które mają wiele **Działań**, które mają wiele **Zadań**. **Zadanie** ma dwa pola daty: _originalDueDate_ i _projectedDueDate_. Ponadto w **Działania** i **Projekcie** znajdują się pola dynamiczne, które wskazują, czy **Działanie** czy **Projekt** jest opóźniony w oparciu o przewidywane terminy zadań podrzędnych i różne inne zmienne, takie jak pozostały czas bufora itp. Istnieje wiele rzeczy, które mogą spowodować zmianę _projectedDueDate_. Na przykład pracownik pracujący nad projektem może (poprzez żądanie serwera) wprowadzić opóźnienie wysyłki. Alternatywnie, witryna może (poprzez żądanie serwera) wejść w nieoczekiwane zamknięcie. Gdy wystąpi którakolwiek z tych rzeczy, muszę nie tylko zaktualizować _projectedDueDate_ **Zadania**, ale także wyzwolić odpowiedni **Projekt** i **Aktywność** do aktualizacji. **_Jak najlepiej to zrobić?_** Myślałem o wzorcu **_observer_**, ale nie przechowuję w pamięci pojedynczej kopii wszystkich tych obiektów. Gdy nadejdzie żądanie, wysyłam zapytanie do **Zadania** z bazy danych, w tym momencie nie ma skojarzonej **Aktywności** w pamięci, która byłaby słuchaczem. Mogę usunąć możliwość wysyłania zapytań dla **Zadań** i wymusić na aplikacji zapytanie najpierw przez **Project** , następnie przez **Activity** (w kontekście **Project** ), a następnie przez zadanie (w kontekst **Aktywność** ) dodawanie relacji obserwatorów na każdym kroku, ale nie jestem pewien, czy to najlepszy sposób. Mógłbym skonfigurować system **_database event listening_**, więc po wywołaniu zmodyfikowanego zdarzenia **Task** mam program obsługi, który w tym momencie pyta o **Aktywność**. Mogę po prostu skonfigurować **_dwustronną relację_** między **Zadaniem** a **Aktywnością**, aby **Zadanie** wiedziało o **Aktywności** rodzica i kiedy **Zadanie** aktualizuje swój stan, **Zadanie** pobiera jego rodzica i aktualizuje stan. W tej chwili utknąłem, rozważając wszystkie opcje i zastanawiam się, czy jakiekolwiek pojedyncze podejście (nie musi być podejściem wymienionym na liście) nie wyskakuje na inne jako najlepsze podejście.


title: Czy ktoś czytał serię Apress C# (konkretnie wpf)?

text: Obecnie czytam ilustrowany C# autorstwa Apress (przy moim pierwszym przeczytaniu) i myślałem o przejściu do ilustrowanego WPF lub Pro WPF. Zastanawiałem się, czy ktoś to czytał i może mi powiedzieć, czy pro WPF obejmuje wszystko w ilustrowanym WPF, czy powinienem dostać ilustrowany wpf, a następnie przejść do pro? Ponadto, jeśli ktoś myślał o ilustrowaniu C#, to nie jest zła książka, może być trochę myląca dla kogoś, kto w ogóle nie programował, ale uważam, że jeśli zmieszasz strukturę książki z niektórymi filmami online idzie całkiem nieźle.


title: Algorytmy wspierające równoległość?

text: Przychodzi 10-klasista tutaj. Niedawno napisałem o pomyśle na projekt Science Fair i ktoś zasugerował, że zrobię "Wpływ równoległości na wybrane zadania obliczeniowe". Mam trudności z ustaleniem, co powinienem zrobić dla tych „wybranych zadań obliczeniowych”. Mam około półtora roku doświadczenia w c#. Zapytałem o ##programowanie freenode i ktoś zasugerował, że zrobię Ray Tracing (http://65.39.148.34/KB/graphics/Simple_Ray_Tracing_in_C_.aspx). Jakieś pomysły na inne zadania o łatwym i średnim stopniu trudności, które mógłbym wykorzystać w swoim eksperymencie? Dziękuję.


title: Zwinność, wodospad i zmiany wymagań

text: Czy ktoś miał problem z projektem zdefiniowanym jako „Zwinny” przepełniony zmianami wymagań? Pracuję nad projektem rozwojowym, który trwa 4 tygodnie Sprintu, ale zawsze są zmiany pomiędzy tymi Sprintami. Czy w takim razie jest to nadal określane jako Agile? Czuję, że jest to coś w rodzaju procesu pod Agile – wymagania procesu Agile należy zdefiniować na początku sprintu i zweryfikować pod jego koniec. Czy mam w tym rację? Proszę daj mi znać o swoich doświadczeniach w tym zakresie .


title: W jakim stopniu Java może być używana przez C++ w systemach o bardzo wysokiej częstotliwości?

text: Czy Java kiedykolwiek dorówna C++ pod względem programowania systemów o ultrawysokiej częstotliwości? Czy JVM poprawiła się na tyle, aby to umożliwić? Czy jest to możliwe z teoretycznego czy praktycznego punktu? Czy C++ jest używany w większości systemów UHF tylko z przyzwyczajenia? Jeśli zgadzasz się/nie zgadzasz, jakie części Java/C++ są podstawą twojego punktu widzenia?


title: Jak zostać ekspertem w Pythonie, PHP i Javascript?

text: Więc programuję od około 9 miesięcy i nauczyłem się trochę Pythona, trochę PHP i trochę Javascriptu. Chcę być lepszy w tych językach – mogę coś zhakować, ale wiele rzeczy, takich jak OOP, używanie list w najbardziej efektywny sposób itp., jest dla mnie stracone. Jakie są najlepsze sposoby na zostanie „ekspertem” programistą? Czy zależy to od niuansów języka, czy jest bardziej ogólne? Czy jest jakaś matematyka, którą powinienem studiować obok tego? Oczywiście wiele zależy od tego, co chcesz z nim zrobić - do tej pory zajmowałem się głównie małymi aplikacjami wewnętrznymi, a także programowaniem internetowym. Jak mogę się dowiedzieć o dobrym projektowaniu programu?


title: Jak rozwiązać duże zależności między plikami?

text: Więc w zasadzie robię kilka programów. Oczywiście jeden program często używał kodu z innego. Więc mam swoją osobistą "bibliotekę" Cóż, piszę kody palantów. Następnie, kiedy otworzę projekt, projekt będzie wymagał innego pliku. Dodaję ten plik i ten plik wymaga innego pliku, następnie dodaję ten plik i ten plik wymaga innego pliku. Potem skończyło się na tylu plikach, których program nie potrzebuje. Skończyło się na tym, że musiałem poprawić naprawdę stare kody, które nie są już używane w plikach, których nie potrzebuję. Czemu? Ponieważ nie zawracam sobie głowy zależnością od struktury. Cóż, temat na inne pytanie. Co robisz, aby uniknąć tego problemu.


title: Porównanie formatów tras

text: Tworzę nową aplikację i próbuję wymyślić konwencję definiowania tras. Idealnie chciałbym, żeby był prosty, elastyczny i odwracalny. Oto niektóre z popularnych frameworków: ### Trasa szkieletowa dopasowuje ------------------------------------- ---------------- pomoc search/:query search/kiwis search/:query/p:page search/kiwis/p7 file/*path file/nested/folder/file. txt docs/:section(/:subsection) docs/faq, docs/faq/installing ### Django Używa wyrażeń regularnych, ale zawiera złożoną trasę odwracania wyrażeń regularnych, która pasuje do --------------- -------------------------------------------------- -------------------- ^articles/2003/$ /articles/2003/ ^articles/(\d{4})/(\d{2})/ $ /articles/2005/03/ ^articles/(?P<rok>\d{4})/(?P<miesiąc>\d{2})/(?P<dzień>\d{2})/ $ /articles/2003/03/03/ ### Ruby on Rails :controller/:action/ :id/z_użytkownikiem/:identyfikator_użytkownika książki/*sekcja/:tytuł ### ASP.NET / MVC 5 {kontroler}/{akcja}/{id} /Produkty/show/napoje {zasób}.axd/{*pathInfo} /WebResource.axd?d=... {productId:int}/{productTitle} /5/asp-net-mvc books/{isbn?} /books, /books/1430210079 Django jest prawdopodobnie najbardziej elastyczny i już jest znajomy osobom, które znają wyrażenia regularne, ale jest też najtrudniejszy do odczytania i odwrócenia. Backbone, RoR i ASP.NET pozwalają na opcjonalne i wieloznaczne/splat części, z różnymi składniami. MVC 5 ma kilka opcji ograniczania parametrów inline ala `:int`. Gdzie te schematy mogą się nie sprawdzić i jak można je naprawić?


title: Czy Resharper nadal jest znaczącym ulepszeniem dla Visual Studio 2012?

text: Obecnie używam Resharpera z VS 2008 Pro. Uważam, że bycie tak produktywnym, jak tylko mogę, jest niemal koniecznością ze względu na brak niektórych podstawowych refaktorów/skrótów w VS. Zastanawiałem się jednak, czy od czasu VS 2008 dokonano ulepszeń, które czynią go prawie tak dobrym jak Resharper?


title: Trudne pytania dotyczące Javy dla początkujących

text: Prowadzę wprowadzenie do sesji laboratorium informatycznego w tym semestrze. Używamy Javy. Szukam trudnych pytań bonusowych do rozwiązania przez studentów. Powinni być w stanie rozwiązać je przy stosunkowo minimalnej ilości kodu (powiedzmy 50-300 linii). Jak dotąd wiedzą: * wprowadzanie danych za pomocą skanera * podstawy matematyczne (w tym %) * logika logiczna * ciągi znaków * instrukcje if * pętle while/for W dalszej części semestru będą wiedzieć, jak tworzyć metody i klasy, chociaż zbliża się to do końca klasa. Chcę zadać kilka krótkich, ale wymagających pytań dodatkowych. Czy ktoś ma jakieś dobre sugestie?


title: Czy istnieje nazwa dla tej konstrukcji/wzorca programowania funkcjonalnego?

text: Napisałem funkcję i chciałbym się dowiedzieć, czy jest to implementacja jakiegoś funkcyjnego wzorca programowania lub konstrukcji. Chciałbym poznać nazwę tego wzorca lub konstrukcji (jeśli istnieje)? Mam funkcję, która pobiera listę funkcji i robi to dla nich: wrap(fn1, fn2, fn3, fn4) # zwraca częściowe(fn4, częściowe(fn3, częściowe(fn2, fn1))) Istnieją silne podobieństwa do komponowania , Reduce i inne konstrukcje metaprogramowania fp, ponieważ funkcje są ułożone razem i zwracane jako jedna funkcja. Ma również silne podobieństwa do dekoratorów i menedżerów kontekstu Pythona, ponieważ zapewnia sposób enkapsulacji zachowań przed i po wykonaniu w jednej funkcji. Co było impulsem do napisania tej funkcji. Chciałem mieć możliwość, którą zapewniają menedżery kontekstu, ale chciałem mieć możliwość zdefiniowania jej w jednej funkcji i nałożenia na siebie funkcji po funkcji. AKTUALIZACJA: Dla jasności dodałem implementację: _wrap = parts(reduce, lambda inner, outer: part(outer, inner)) def wrap(fns): fns = tuple(fns) if len(fns)==1: return fns[0] return lambda *a, **kw: _wrap(iter(fns))(*a, **kw) i przykład: def fn_one(fn, *a, **kw): print "wpisano jeden " response = fn(*a, **kw) print "exited one" return response def fn_two(fn, *a, **kw): print "wprowadzono dwa" response = fn(*a, **kw) print " wyjście dwa" return response def zero(): print "zero" wrap(zero, fn_one, fn_dwa)) wrap_zero() # zwraca wprowadzone dwa, wprowadzone jeden, zero, wyjście jeden, wyjście dwa


title: Czy powinniśmy zawsze tworzyć skalowalne aplikacje internetowe?

text: Fakt, że dziś wszyscy przenoszą się do chmury ze względu na łatwość skalowalności, konfiguracji i konserwacji. Ale moje pytanie brzmi, czy powinniśmy opracować wszystkie zdarzenia skalowalne w aplikacjach internetowych, jeśli nie jest to wymagane? Jeśli aplikacja jest niskobudżetowa i nie ma takich specjalnych wymagań, to dlaczego powinniśmy dokładać starań, aby wspierała skalowalność? Istnieje wiele czynników, które należy wziąć pod uwagę podczas tworzenia skalowalności aplikacji. Jeśli klient nie ma konkretnych wymagań, mała aplikacja zawiera 3-4 moduły, budżet klienta jest niski i korzysta z serwerów lokalnych. Aby aplikacja była skalowalna, musimy zadbać o sesję, pliki IO, buforowanie itp...


title: Zależeć od kodu źródłowego czy binarnego?

text: Mamy dwa wewnętrzne projekty, A i B, opracowane przez różne zespoły z B zależnym od A. Ponieważ kod źródłowy obu projektów jest przechowywany w git, dołączyłem projekt A jako podmoduł do projektu B i skonfigurowałem system kompilacji budować oba w odpowiedniej kolejności. Alternatywnym rozwiązaniem byłoby wykorzystanie A za pośrednictwem menedżera repozytorium binarnego, takiego jak Artifactory lub Nexus. Zastanawiam się nad zaletami i wadami zależności od kodu źródłowego vs zależności od artefaktów binarnych. Kiedy jedno jest lepsze od drugiego? Do tej pory udało mi się wymyślić następujące czynniki, ale bardzo chętnie słucham innych opinii. Zależność od kodu źródłowego jest lepsza * jeśli nie masz menedżera repozytorium binarnego * jeśli musisz polegać na przedpremierowej wersji innego projektu * jeśli musisz załatać inny projekt * ponieważ łatwiej jest przeglądać kod źródłowy zależności w IDE Lepsza jest zależność od plików binarnych * w celu zminimalizowania czasu kompilacji * w celu uniknięcia kłopotów z konfiguracją środowiska kompilacji innego projektu


title: Zastanawiasz się, czy moje książki komputerowe z lat 2002/2003 są nadal przydatne?

text: Znalazłem dziś w mojej piwnicy dwie książki o JavaScript i PHP/MySQL. Czy nadal są przydatne? Mam nadzieję, że nadal się przyda, ponieważ nie chcę kupować nowego... 1.JavaScript - kompleksowy, druga edycja 2.PHP i MySQL dla dynamicznych witryn sieci Web: Visual QuickPro Guide


title: Jakiego wzorca projektowego (w pythonie) użyć do prawidłowego oddzielenia informacji o środowisku wykonawczym z podstawowym kodem?

text: Nie jestem pewien, czy to jasne pytanie. Pracuję nad projektem pythona opartym na terminalu (konsoli), dla którego planuję zaimplementować GUI. Nie jestem specjalistą w CS, więc naprawdę nie mam pojęcia, jak skutecznie zaprojektować system komunikatów, który: 1. w konsoli zapewnia ładnie wyglądające informacje podczas uruchamiania. 2. w GUI jest skierowany do określonego widżetu, powiedzmy, etykiety tekstowej, dolnego paska lub ramki, którą można ukryć. Masz jakieś sugestie? Obecnie korzystam z funkcji `print`, aby dostarczyć istotnych informacji o `stdout` podczas pracy. Tak więc wiele `print ....` jest rozprowadzanych tu i ówdzie w kodzie. Myślę o użyciu zmiennych podobnych do makr, takich jak „FILE_NOT_EXTIS_MESSAGE” do drukowania i zdefiniowanie zmiennych w jednym pliku. Czy to standardowy sposób, który ludzie zawsze robią? A może wprowadzę system logowania? Podsumowując, proszę o wzorzec, którego ludzie często używają do obsługi informacji wyjściowych na ekranie z wysoką efektywnością i adaptacyjnością.


title: Jakie są zalety i wady wielokrotnego dziedziczenia?

text: Jakie są konsekwencje zezwolenia na wielokrotne dziedziczenie w języku programowania? Dlaczego wielokrotne dziedziczenie ma tendencję do naruszania samej istoty OOP? Czy to odróżnia czysty język OOP, taki jak Java, od języka OOP, takiego jak C++? Wyjaśnij i zilustruj.


title: Kod samodokumentujący a Javadocs?

text: Ostatnio pracuję nad refaktoryzacją części bazy kodu, z którą mam obecnie do czynienia - nie tylko po to, aby lepiej ją zrozumieć, ale także aby ułatwić innym, którzy pracują nad kodem. Skłaniam się do myślenia, że samodokumentowanie kodu jest fajne. Po prostu myślę, że jest czystszy i jeśli kod mówi sam za siebie, cóż... Świetnie. Z drugiej strony mamy dokumentację taką jak javadocs. To też mi się podoba, ale istnieje pewne ryzyko, że komentarze w tym miejscu staną się nieaktualne (podobnie jak komentarze w ogóle oczywiście). Jeśli jednak są aktualne, mogą być niezwykle przydatne, np. w zrozumieniu złożonego algorytmu. **Jakie są najlepsze praktyki? Gdzie wyznaczasz granicę między samodokumentującym się kodem a javadocami?**


title: Jak narysować diagram E-R?

text: Uczę się DBMS na mojej uczelni. Niedawno otrzymałem zadanie narysowania modelu E-R systemu rezerwacji autobusów, który obsługuje rezerwacje, sprzedaż biletów i odwołania. Rozumiem teorię dotyczącą modelu E-R, kiedy studiuję z książki, ale robi się zagmatwana, gdy próbuję narysować ją od podstaw. Jak należy postępować? Wydaje się, że istnieje wiele sposobów modelowania diagramu E-R dla konkretnego wymagania. To naprawdę mylące. Czy ktoś może wytłumaczyć branie **Systemu rezerwacji autobusów** jako przykładu? Oto model, który wykonałem (ale nie jestem do niego pewien, bo na każdym kroku mogłem wymyślić o wiele więcej alternatyw!) -> Entity_Set **Passenger** (passengerID,name,wiek,płeć)>>Entity_Set** Ticket** (ticketID,status) > > //Stan to _WaitingList_ , _Confirmed_ lub _Cancelled_ > > Entity_Set **Bus** (busID,MaxSeats,Type) > > //Typ to AC lub Non-AC > > Entity_Set * *Trasa** (routeID, ArrivalTime,DepartureTime,Source,Destination) Oraz relacja trójstronna między **Passenger** , **Ticket** i **Bus** z atrybutami pasażera, ticketID, busID . Relacja binarna między **Bus** i **Route** z atrybutami jako busID, routeID . Mam niewiele wątpliwości co do - 1 . Czy powinniśmy wziąć Czas jako atrybut złożony z atrybutami Przylot i Odlot (Jaka jest różnica, jeśli weźmiemy w ten sposób?) 2 . To samo ze źródłem i celem. Czy należy je przekształcić w złożony atrybut „Miejsce” czy coś w rodzaju „Lokalizacja”? 3\. Czy są tu jakieś słabe zestawy bytów? W ogóle nie mam pojęcia, co wziąć jako zestaw słabych bytów?


title: C# zwracają zmienne

text: W debacie na temat zmiennych zwracanych niektórzy członkowie zespołu wolą metodę zwracania wyniku bezpośrednio do wywołującego, podczas gdy inni wolą deklarować zmienną zwracaną, która jest następnie zwracana do wywołującego (patrz przykłady kodu poniżej) Argument dla tego drugiego jest to, że umożliwia deweloperowi, który debuguje kod, znalezienie wartości zwracanej przez metodę, zanim powróci ona do wywołującego, dzięki czemu kod jest łatwiejszy do zrozumienia: Jest to szczególnie ważne, gdy wywołania metod są połączone łańcuchowo. Czy istnieją jakieś wytyczne, który z nich jest najskuteczniejszy i/lub czy są jakieś inne powody, dla których powinniśmy stosować jeden styl zamiast innego? Dzięki prywatne bool Is2(int a) { return a == 2; } private bool Is3(int a) { var wynik = a == 3; zwróć wynik; }


title: Dlaczego programowanie piśmienne nie jest głównym nurtem?

text: Programowanie piśmienne ma dobre ideały. Dlaczego uważasz, że to nie jest mainstream? To dlatego, że się nie udało?


title: Miara mocy inna niż kompletność Turinga

text: Początkowo próbowałem zadać to pytanie na StackOverflow, ale było to zbyt subiektywne :-(. Interesuję się metodami definiowania mocy języków programowania. Kompletność Turinga jest jedna, ale jest prawie powszechnie spełniony. Miło byłoby zdefiniować miara mocy, która rozróżnia języki programowania, które są faktycznie używane. Czy ktoś na przykład może zaproponować niesubiektywną metodę, która rozróżniałaby asembler od Javy? Kompletność Turinga oznacza, że język jest maksymalnie potężny w tym, co może wyprowadzić (co oznacza to, że może zrobić wszystko, co nie jest oparte na czasie w rzeczywistym świecie).Jeśli więc chcemy zdefiniować silniejszą miarę mocy, musimy przyjąć inne podejście.Krótość została zasugerowana w pierwotnym pytaniu, ale nie jest to łatwe do zdefiniowania w ogóle.Czy ktoś ma jakieś inne sugestie?


title: Architektura aplikacji webowych po stronie klienta - najlepsze praktyki i wzorce

text: Dziedziczę trochę kodu, który ma raczej inne podejście do architektury niż sam bym wybrał. Składa się ze strony HTML, niektórych importowanych bibliotek javascript i pojedynczego znacznika DIV. Ten DIV jest w całości wypełniony ręcznie wykonanym skryptem JavaScript opartym na JQuery. Moje normalne podejście polegałoby na zbudowaniu szkieletowej części aplikacji za pomocą HTML i obsłużeniu interakcji za pomocą javascript (lub skorzystaniu z szablonów), a nie budowaniu całego DOM od podstaw. Nie sądzę, by było coś złego w sposobie, w jaki do tej pory podchodziliśmy do tego problemu, poza tym, że rozdzielenie logiki i struktury jest trochę uciążliwe. Aby uzyskać informacje, aplikacja wysyła zapytanie do punktu końcowego SOLR w celu uzyskania dziwnie wyglądających danych statystycznych, wyświetla je w tabelach z zakładkami, pozwala użytkownikowi na ukierunkowanie wyszukiwania, eksplorację różnych kategorii statystyk i kopanie itp. Moje pytanie dotyczy najlepszych praktyk tutaj. Czy jest jakaś najlepsza praktyka wokół tego typu rzeczy? Czy istnieją wzorce projektowe, a jeśli tak, to jakie? Zdaję sobie sprawę, że można to uznać za oparte na opiniach, więc szukam formalnych podejść i przykładów na wolności, a nie opinii. EDYTUJ w odpowiedzi na możliwy duplikat: nie chodzi o ogromny straszny bałagan, tylko o różne podejścia do architektury po stronie klienta. Nie chodzi o refaktoryzację (zrobiłem wystarczająco dużo pracy ze starszymi aplikacjami internetowymi Java, aby wiedzieć, jak okropne to może być), ale o to, jak aplikacja Java po stronie klienta powinna wyglądać po refaktoryzacji.


title: problem algorytmiczny - Łączenie nakładających się zakresów

text: Szukam pomysłu na sprawne rozwiązanie następującego problemu: mam zestaw par zakresów (zakres = para liczb), każdy zakres jest unikalny (ale ma taką samą wielkość) np. [ [(0,6),(34,40)], [(1,7),(35,41)], [(3,9),(12,18)], [(2,8), (36,42)], [(13,19),(22,28)], [(23,29),(14,20)] ] Teraz chciałbym połączyć pary zakresów, jeśli zakresy się nakładają np. [(0,6),(34,40)] nakłada się na [(1,7),(35,41)] -wynik-> [(0,7),(34,41)] Więc w wyniku powyższy zestaw chciałbym otrzymać (teraz każda para może mieć zakresy o różnej wielkości) [ [(0,8),(34,42)], [(3,9),(12,18)], [( 13,20),(22,29)] ] Zbiór może być dość duży, jeśli to możliwe, chciałbym uniknąć kwadratowej złożoności. **EDYTUJ:** Mój najlepszy pomysł (w Pythonie) jest poniżej. Chciałbym wiedzieć, czy znasz lepszy (szybszy) sposób. Nie jestem też pewien, czy mój pomysł na usunięcie już połączonych par jest słuszny: def ranges_overlap(range1, range2): return range1[0] < range2[1] and range2[0] < range1[1] def connect_pairs(para1, para2): return [(min(r1[0], r2[0]), max(r1[1], r2[1])) dla r1, r2 in zip(para1, para2)] def merge_overlapping_pairs(pairs): Combined = [] while pairs: pair1 = pairs.pop() już_combined = [] for pair2 in pairs: for pair2_perm in itertools.permutations(pair2): does_overlap = True for range1, range2 in zip(pair1, pair2_perm): jeśli nie ranges_overlap(zakres1, zakres2): does_overlap = Fałszywe przerwanie if does_overlap: pair1 = połącz_pary(para1, para2_perm) już_połączone.append(para2) break Combined.append(pair1) # Nie jestem pewien, czy mogę to zrobić dla pary w już_łączonej: pairs.remove(pair) return Combined


title: Jakie są najczęstsze błędy w „skrojonych na miarę podejściach do Scrum”?

text: Widziałem to już wcześniej. Kierownictwo chce być zwinne i skażone, ale nie chce wychodzić ze status quo. Moja ostatnia obserwacja nie jest inna; tutaj Scrum jest „dopasowany” do organizacji; konkretnie w dziwny proces wielu osób. ![Tutaj](http://img684.imageshack.us/img684/6175/modifiedscrum.jpg) **Schemat przedstawiający różnych uczestników.** Przygotowuję dokument wymieniający, dlaczego to nie zadziała. Oto te oczywiste: 1\. Istnieją _agenci właściciela produktu_ (oczywisty WTF), którzy raportują _właścicielowi produktu_ : powodując osłabienie zdolności podejmowania decyzji 2\. Jest rola, która wygląda podobnie do menedżera w tradycyjnym podejściu - _menedżer rozwoju_: oczywista próba modelu dowodzenia i kontroli 3\. Rola _ScrumMastera_ obejmuje zbieranie _grafików_, które są używane do śledzenia postępów zamiast _wykresów spalania_: szkodliwe dla wysiłków Agile w budowaniu zespołów z zmotywowanymi jednostkami. co jeszcze widzisz jako niepowodzenia w tym/podobnym „skrojonym na miarę podejściu Scrum”? **EDYTUJ** : Diagram może zawierać kilka dodatkowych szczegółów 1\. obowiązki, z wyjątkiem: oceny wydajności programistów, rekrutacji itp., 2. Istnieją więcej niż dwa zespoły (ze ScrumMaster + menedżer rozwoju + zespół deweloperów) z tym samym właścicielem produktu dla wszystkich zespołów!


title: „Dedykacja komputera Harvard Mark I, 7 sierpnia 1944 r.”- Do jakiego tekstu odnosi się Brooks i gdzie mogę go znaleźć?

text: Czytam epilog Rocznicowej edycji Miesiąca Mitycznego Człowieka. Autor, Frederic Brooks, mówi: > Wciąż żywy w mojej pamięci jest zachwyt i zachwyt, z jakimi - mając wtedy 13 > lat - czytałem relację z 7 sierpnia 1944 r., poświęconą > komputerowi Harvard Mark I... Który tekst, do którego się odnosi? Ja też chcę być pełen zachwytu i zachwytu. Gdzie mogę zdobyć ten tekst, żebym też mógł go przeczytać?


title: Jak uwierzytelnić użytkownika w php i Node.js

text: Obecnie pracuję nad małą stroną czatu. Strona główna i zarządzanie użytkownikami są napisane w php, a także wszystkie rzeczy związane z uwierzytelnianiem z sesjami. Teraz planuję uruchomić wiadomości na oddzielnym serwerze Node.js, żebym nie musiał używać odpytywania po stronie klienta. Jak mogę teraz użyć sesji do uwierzytelnienia użytkownika również w Node.js, aby zapobiec s.o. przekazywanie wiadomości w imieniu kogoś innego do serwera wiadomości? Moim pomysłem było wygenerowanie klucza po stronie php, przekazanie go do Node.js, a także do klienta. Jeśli użytkownik wyśle wiadomość, przekażę klucz do Node.js i porównam go z kluczem, który wysłałem z serwera WWW. Czy to dobre podejście? Jakie mam alternatywy?


title: Terminalogy "Kontroler" w MVC i "ViewController" w IOS

text: Studiując IOS, generalnie natrafiam na viewcontroller. Daje mi to zamieszanie, jeśli ten "ViewController" ma coś zrobić z kontrolerem (w MVC)? Ale dlaczego w tej terminologii łączy się zarówno „widok”, jak i „kontroler”. Co to właściwie znaczy?