title: Czy personel nietechniczny może zbierać wymagania w imieniu zespołu programistów?

text: Pracując w dużej organizacji, często zdarza się, że członkowie zespołu programistycznego nie są w stanie uzyskać bezpośredniego dostępu do klienta w celu zebrania wymagań. Czy jest możliwe/wskazane, aby przekazać listę pytań menedżerowi konta, aby mógł zebrać wymagania w Twoim imieniu?


Widzę, że wielu menedżerów lub (nawet prezesów) prowadzących firmę IT nie radzi sobie tak dobrze, jak ci, którzy mają wykształcenie informatyczne. Jeśli mogę wziąć przykład (bez osądzania i wskazywania palcami), obecny CEO Microsoftu jest jednym z wielu. Widzę to również w niektórych mniejszych organizacjach. Czy menedżer (lub dyrektor generalny) w firmie informatycznej powinien mieć doświadczenie informatyczne w organizacji? Czy menedżer, który ma doświadczenie w IT, będzie działał lepiej niż ci, którzy go nie mają?


title: VCS dla pojedynczego użytkownika korzystającego z usługi synchronizacji plików

text: Próbuję skonfigurować kontrolę wersji dla mojego jednoosobowego projektu. Moje pliki projektów są zsynchronizowane dzięki live mesh (ale mógłbym używać Dropbox do tego celu) między moim laptopem, moim domowym komputerem i moim biurowym komputerem. Używam teraz Netbeans z lokalną historią plików. Czasami pomaga powrót do poprzedniego stanu jednego pliku. Ale wyobraź sobie sytuację, w której wiele plików ma problemy. Popraw mnie, jeśli się mylę, ale musiałbym przejść do każdego pliku i powrócić do poprzedniego „bezpiecznego” stanu. Nie podoba mi się to podejście, więc rozważam użycie kontroli wersji między SVN i GIT. Mam pewne doświadczenie z SVN (TortoiseSVN) i wiem, że mogę utworzyć repozytorium file://. Więc to, co chcę zrobić, to skonfigurować VCS w moim zsynchronizowanym folderze **tylko**, aby mieć **możliwość „przywrócenia”** poprzedniej wersji, jeśli coś pójdzie nie tak. Ponieważ wszystko zostało zsynchronizowane ze wszystkimi komputerami, nigdy nie musiałbym uruchamiać aktualizacji. Struktura drzewa plików wyglądałaby następująco: C:...\SyncedFolder\MyProject\ Wewnątrz folderu MyProject znajdują się wszystkie pliki projektu oraz katalog, który zawiera informacje SVN lub GIT dotyczące mojego projektu (repo/master). Jaki VCS jest najlepszy w tej sytuacji: SVN czy GIT? Czy SVN musi przechowywać wszystkie pliki z wersji HEAD, w ten sposób "duplikując" cały mój projekt w moim zsynchronizowanym folderze? Czy GIT eliminuje ten problem? Czy to najlepsze podejście?


title: jak sprawdzić, czy ConcurrentHashMap jest bezpieczny dla wątków?

text: Jak powiedział dokument jdk, ConcurrentHashMap jest bezpieczny dla wątków i nie blokuje odczytu wielu wątków. Nie trzeba w to wątpić, ponieważ był poddany wielu i ograniczonym testom. Ale jestem tylko ciekaw, jak powiedzieć i napisać kod, aby to zweryfikować. **Edytowane** : mówiąc dokładniej 1. jak zachować spójność odczytu bez bloku odczytu 2. czy zwraca ostatni widok danych


title: Jakie są opcje scentralizowanego zarządzania ustawieniami oprogramowania innych firm?

text: Jestem architektem w przedsiębiorstwie, które chce zbudować rozwiązanie SaaS. Nasze produkty są rozprowadzane w wielu różnych możliwych do wdrożenia kontenerach, usługach sieci Web, interfejsach użytkownika sieci Web itp. Szukam oprogramowania typu open source lub oprogramowania innej firmy do zarządzania ustawieniami naszej aplikacji. Byłyby one podobne do ustawień, które można znaleźć w programie Word, Eclipse lub Visual Studio. Ustawienia kontrolowałyby różne zachowania i funkcje produktu. (Prawdopodobnie nie ustawienia typu, z którą bazą danych się połączyć, ale raczej, czy domyślnie powinienem wyświetlać numery linii na stronie, czy nie..). Idealnie, bylibyśmy w stanie przechowywać wartości dla różnych wymiarów (według dzierżawcy, użytkownika, środowiska aplikacji... ) Ponieważ mamy tak wiele różnych wdrożeń, szukam scentralizowanego rozwiązania, które może zapewnić usługę sieciową, z której każdy elementy wdrożeniowe mogą uzyskać swoje indywidualne ustawienia. Czy ktoś wie o scentralizowanej usłudze oferującej tego rodzaju funkcje lub udziela mi pomocy w poszukiwaniu alternatywy dla własnej?


title: Algorytm określający odpowiednie atrybuty w uporządkowanej liście

text: Załóżmy, że mam listę przedmiotów posortowanych według osoby na podstawie jej subiektywnego gustu. Załóżmy, że ta osoba jest w pewnym stopniu konsekwentna w sortowaniu i że istnieją wymierne atrybuty tych obiektów, które mogę zidentyfikować. Na przykład osoba może sortować ser na podstawie tego, jak bardzo lubi smak, a osoby, które nie lubią soli, ocenią słony ser niżej niż sery o niskiej zawartości soli. Jedna osoba może nie dbać o kolor sera lub czy pochodzi on od krów, kóz czy owiec, podczas gdy inna może wyżej oceniać sery z mleka owczego niż sery z mleka koziego. Zakładam, że istnieje procedura identyfikująca, jakie atrybuty elementów danych na liście są i nie są istotne dla określenia kolejności. Jak nazywa się ten problem i jakie istnieją algorytmy do jego rozwiązania? (najlepiej w Pythonie)


title: Czy istnieje przykładowy projekt w języku C przeznaczony do porównywania wielkości danych wyjściowych kompilatora?

text: Zaraz zaczynam nowy projekt i muszę wybrać kompilator. Ponieważ pracujemy w domenie osadzonej, jednym z kryteriów, które oceniamy, jest rozmiar danych wyjściowych kompilatora. Istnieją wzorce, takie jak Dhrystone i Whetstone, służące do oceny kompilatorów pod kątem obsługi funkcji łańcuchów, liczb całkowitych i zmiennoprzecinkowych przez kompilatory. Czy jest coś podobnego do ogólnego porównania zdolności kompilatorów do tworzenia małych plików wyjściowych?


title: Preferowana forma wykrywania błędów i warunków zakończenia pętli?

text: W tej odpowiedzi na Stackoverflow niejasno przypominam sobie, że uczono mnie, że lepiej jest użyć możliwie „szerokiego” warunku, aby zakończyć pętlę, niż testować dokładny warunek zakończenia. tj. używam: while (x < 10) zamiast while (x != 10), jednak nie mogę sobie przypomnieć (ani znaleźć) żadnej formalnej podstawy ani uzasadnienia dla tego. Czy rzeczywiście jest to gdzieś zapisane jako najlepsza aktualna praktyka?


title: Czy można ocenić wydajność testowalnego algorytmu w porównaniu z alternatywnymi rozwiązaniami, które nie zostały jeszcze zbudowane?

text: Aplikacja e-commerce, nad którą pracowałem, wykorzystywała drzewo decyzyjne i silnik reguł dla każdego węzła w celu określenia, czy klient kwalifikuje się do określonych rabatów. Problem polegał na tym, że każde drzewo promocji musiało być oceniane, więc im więcej promocji miał klient, tym wolniejsza stawała się ocena. To był duży problem, który często rozwiązywano, rzucając na niego więcej sprzętu. Istniały alternatywy do rozważenia, ale silnik promocji był poważnym przedsięwzięciem. Zawsze zastanawiałem się, czy istnieje sposób na rozważenie alternatywy bez rozwijania jej (lub rozwijania jej w całości)?


title: Aplikacja na Androida lub iPhone'a pobierająca płatności

text: Zaczynam studiować projekt, który głównie umożliwi użytkownikom dokonywanie płatności z ich iPhone'ów lub Androidów. Ponieważ nie mam doświadczenia w e-commerce, a także nigdy nie posiadałem smartfona, proszę o przybliżenie mi tego, co jest ważne przy kierowaniu tego rodzaju projektem. **Co sprawia, że wątpię** * Czy można to zrobić bez odrzucania aplikacji przez Apple lub Google lub obciążania moich transakcji kwotami zbliżonymi do 30%? * Czy google kasa jest alternatywą dla paypal, czy się mylę? * W przypadku płatności kartą debetową, jakie są obecnie najpopularniejsze usługi płatnicze w USA? * Jak wysoka jest złożoność techniczna tej aplikacji? Czy to bardzo różni się od robienia tego dla iPhone'a i robienia tego dla Androida? **Co już wiem:** * Płatności nie mają nic wspólnego z samą aplikacją; to nie jest scenariusz w aplikacji. * Chcielibyśmy wprowadzić na żywo systemy Android i iOS, ale dopuszczalne byłoby rozpoczęcie tylko od jednego z nich. * Żadne informacje o karcie kredytowej nie będą przechowywane przez aplikację; bramka płatnicza, taka jak PayPal, powinna być odpowiedzialna za rzeczywisty przepływ pieniędzy. **Dlaczego o to pytam?** Ktoś prosi mnie o stworzenie aplikacji na iOS lub Androida, która umożliwi jego klientom dodawanie pieniędzy do kart klientów. **Szczegóły żądania aplikacji:** * Ta usługa byłaby dostępna tylko w USA. * Pobranie aplikacji będzie kosztować stałą kwotę. * Początkowo jest to wymagane dla iOS lub Androida, ale oczywiście, bb i dlaczego nie wp7 może wkrótce wymagać obsługi. Przeszukując stackoverflow, a potem sieć, doszedłem do przekonania, że Apple i Google ograniczają się do tego typu aplikacji, chciałbym też wiedzieć, czy to prawda. **Przykład** Uważam, że aplikacja mobilna Starbucks jest bardzo dobrym przykładem tego, czego potrzebuję, ponieważ link mówi: _Aby ponownie doładować kartę, klienci mogą połączyć ją z kartą debetową, kredytową lub kontem PayPal_ Zastanawiam się, czy jest to możliwe dla dowolnej aplikacji lub jeśli istnieje umowa handlowa między Starbucks i Apple. **Dzięki za pomoc!**


title: WinRT i serwer (ASP.NET, Azure itp.)

text: Czy firma Microsoft wskazała na obecne lub przyszłe relacje WinRT z rozwojem serwerów (takich jak ASP.NET)? Chociaż wyjaśniono, że WinRT jest zamierzoną przyszłością programowania interfejsu użytkownika systemu Windows, zawiera również pokaźną bibliotekę typowych funkcji, takich jak obsługa sieci i przetwarzanie danych (takich jak JSON). Jeśli te biblioteki są przyszłością rozwoju Windows, wydaje mi się, że to naturalne, że w końcu przeniosą się do świata programowania serwerów (WinRT jest już obsługiwany przez "Server 8"). (Zdaję sobie sprawę, że ASP.NET nigdzie się nie wybiera i że na przykład MVC może zostać całkowicie wypatroszony bez wpływu na model programowania. Jestem po prostu ciekawy)


title: Gdzie można używać programowania równoległego SPMD w kompilatorze?

text: Mam niewielką wiedzę na temat budowy kompilatorów i programowania równoległego, więc proszę o wyrozumiałość. Jest to kurs o budowie kompilatorów, a podczas kursu jesteśmy proszeni o nauczenie się CUDA, ponieważ profesor chciałby, abyśmy napisali kompilator dla uproszczonego języka. Ten kompilator ma wykonywać pracę równolegle na pewnych określonych etapach. Zrozumiałem, że skaner, parser, analizator semantyczny, generator kodu i optymalizator są z natury sekwencyjne. Napisałem wcześniej parsery do bardzo prostych zadań, więc moje rozumienie opiera się na odrobinie teorii i odrobinie doświadczenia. Zrozumiałbym, jak włączyć stan współdzielony w pewnym momencie w konstrukcji kompilatora, aby wykonać przetwarzanie wieloprocesowe, ale nie SPMD. **Jakie komponenty kompilatora mogą być zrównoleglone (np. używając CUDA jak w moim przypadku, ogólnie model SPMD)?** _SPMD_ : Pojedynczy Program Wiele Danych


title: Co to jest LPCTSTR?

text: co jest podobne do `LPCTSTR` i `LPCTSTR` (na przykład `HDC`) i co to oznacza?


title: W jaki sposób firmy SaaS świadczą usługi uwalniania danych?

text: # Przegląd Rozważałem wysłanie tego do DBA, ale myślę, że pytanie wykracza poza bazę danych. Ze wszystkich witryn Stack Exchange związanych z oprogramowaniem, FAQ programistów wydawało się najbardziej zgodne z tym, o co tutaj pytam. Moja firma oferuje ofertę SaaS. Nasi klienci gromadzą dużo danych za pomocą naszej usługi i chcemy, aby dane te były łatwiej dostępne dla naszych użytkowników niż obecnie zapewnia nasza aplikacja internetowa. Nasze największe bazy danych klientów mogą obejmować dziesiątki GB, w tym indeksy. Pozbywając się indeksów, pojedyncza baza danych może nadal mieć kilka GB i będzie rosła z każdym kolejnym rokiem pracy. Główne przypadki użycia, które wymieniają nasi potencjalni i klienci, to: * Jako potencjalny klient/potencjalny klient chcę mieć zagwarantowany dostęp do moich danych na wypadek awarii Twojej firmy. * Jako potencjalny klient/potencjalny klient chcę mieć dostęp do zapytań o moje dane, aby móc tworzyć własne raporty, pulpity nawigacyjne, aplikacje korzystające z tych danych. Podoba mi się wyrażenie „uwolnienie danych”, aby sklasyfikować tego rodzaju przypadki użycia. Google wydaje się być w awangardzie ruchu na rzecz wyzwolenia danych. Wykonali godną podziwu pracę, aby umożliwić swoim klientom dostęp do ich danych i podnieść świadomość stanu dostępności danych SaaS. Jako dostawca SaaS chciałbym zapewnić naszym klientom lepszy dostęp do ich danych. # Ewolucja W przeszłości opracowaliśmy wiele niestandardowych stron internetowych przypominających raporty, aby zapewnić klientom pewien stopień dostępu. Doprowadziło to do powstania wielu złożonych, niestandardowych stron, które musimy utrzymywać. Później dodaliśmy oddzielne rozwiązanie do raportowania i zaczęliśmy pobierać opłaty za raporty niestandardowe. Chociaż daje nam to większą elastyczność i możemy dostarczać szybciej, jest to również kosztowne w utrzymaniu i nie skalowalne. Klienci nie lubią też obciążać ich kosztami za każdy raport niestandardowy, ponieważ widzą to tak, jak pobieramy od nich opłaty za dostęp do posiadanych przez nich danych. Podczas gdy my zaspokajamy potrzeby niektórych klientów, inni chcą więcej. Niektórzy chcą połączyć swoje dane SaaS z danymi wewnętrznymi i nie mogą tego zrobić bez możliwości przeszukiwania ich danych SaaS. Istnieje wiele podejść do rozwiązania tych problemów. Opowiem o dwóch przypadkach użycia i podejściach, które rozważałem, a następnie poproszę o wkład. Celowo unikam pytania „Jak przydatne są dane bez aplikacji?” Uwaga dodatkowa: Naszą bazą danych jest Microsoft SQL Server, ale to w dużej mierze nieistotne. # Przypadek użycia 1 _Jako potencjalny klient/potencjalny klient chcę mieć zagwarantowany dostęp do moich danych na wypadek awarii Twojej firmy._ ## Hostowanie naszej własnej usługi pobierania Stosunkowo łatwym rozwiązaniem byłoby utworzenie własnej usługi pobierania na osobnym serwerze hostowane w tym samym centrum danych. Umieszczaliśmy tutaj conocne kopie zapasowe bazy danych, aby każdy klient mógł go pobrać w wolnym czasie. Plusy: * Używamy darmowej przepustowości wewnętrznej do przenoszenia plików. * Klient ponosi koszty przepustowości tylko wtedy, gdy chce pobrać. Minusy: * Niektórzy klienci mogą pobierać nocne „tylko dlatego, że możemy”. * Należy wprowadzić przepisy, aby usługa pobierania działała w przypadku awarii firmy, w przeciwnym razie niczego nie naprawimy. Klient nadal musi nam zaufać, aby utrzymać tę usługę, co jest głównym problemem. Skrajną odmianą tego modelu jest utworzenie oddzielnej firmy, która będzie właścicielem usługi pobierania i prefinansowaniem hostingu przez okres wystarczający, aby umożliwić klientom pobranie ostatniej kopii zapasowej. ## Wysyłanie kopii zapasowych bazy danych do klienta Tutaj kopiujemy pełne nocne kopie zapasowe na konto lub usługę pamięci masowej (FTP przez SSL, SFTP/SSH, Dropbox, Box.net, SkyDrive, Amazon S3/Glacier itp.) wybranych przez klientów . Plusy: * Klient zawsze ma dostęp do swoich danych. Minusy: * Ta metoda wymaga dużej przepustowości i marnotrawstwa. Przesyłamy w większości te same dane, noc po nocy. Klient potrzebuje danych tylko w przypadku katastrofy. * Ta metoda wiąże się z ryzykiem utraty do 24 godzin danych klientów, jeśli kopiujemy tylko nocne kopie zapasowe. Kopiowanie okresowych kopii zapasowych diff pomogłoby zmniejszyć cel punktu odzyskiwania kosztem większej przepustowości. * Zarządzanie wszystkimi możliwymi typami miejsc docelowych, danymi uwierzytelniającymi i integracją nowych celów jest złożone. Mniej złożoną odmianą jest wymaganie od naszych klientów podania danych uwierzytelniających do usługi przechowywania jednego typu, takiej jak Amazon Glacier. Wszyscy korzystają z Lodowca lub nie korzystasz z usługi. ## Powiązanie kopii zapasowych innych firm Istnieją usługi, takie jak Backupify, które łączą się z Google Apps i regularnie tworzą kopie zapasowe danych. Szukam więcej takich usług, które mogłyby zapewnić niezależne, gotowe rozwiązanie, za które nasi klienci mogliby się zarejestrować i za które mogliby zapłacić i które moglibyśmy w pełni zautomatyzować. O ile usługa innej firmy nie jest powiązana z SQL Server w inteligentny sposób, aby pobierać różnice w danych tylko z nocy na noc, nadal będzie to wymagało dużej przepustowości. ## Natywna replikacja bazy danych Istnieje kilka interesujących wbudowanych funkcji SQL Server, takich jak przesyłanie dzienników, dublowanie, replikacja i „zawsze włączone grupy dostępności”. To wszystko wymaga serwera SQL po stronie zdalnej, a także dołączenia serwera zdalnego do jednej domeny i/lub bycia częścią kontrolowanego przez nas klastra Windows Server Failover. Dlatego te metody nie wydają się opłacalne w tym przypadku użycia. # Przypadek użycia 2 _Jako potencjalny klient/potencjalny klient chcę mieć dostęp do pobierania i/lub przeszukiwania moich danych, aby móc tworzyć własne raporty, pulpity nawigacyjne, aplikacje wykorzystujące te dane._ ## Web API Zapewnienie kompleksowego REST lub SOAP/XML (lub oba) API pomogłoby niektórym, ale nie większości naszych klientów. Wielu klientów naprawdę chce mieć dostęp do SQL poprzez ODBC/JDBC/ADO.NET lub tym podobne. ## Open Data Protocol (OData) Moglibyśmy ujawnić zdenormalizowane zestawy danych i zaprezentować je za pomocą OData (zobacz także pytania SO dotyczące OData). Jednak będąc nowicjuszem (1) nie jestem pewien, czy OData stanie się wystarczająco popularny, aby zagwarantować długoterminową inwestycję i (2) może to być trudne dla naszych klientów, aby zarówno zrozumieć, jak i uzyskać dostęp. Nie jestem żonaty z tą opinią. Wiem, że wtyczka PowerPivot do Excela 2010 może łączyć się ze źródłami OData, a Tableau (narzędzie co najmniej jednego użytkownika klienta) również może. To obiecujące. ## Replikacja danych Eksperymentowaliśmy z wykorzystaniem transakcyjnej (pub/sub) replikacji Microsoft SQL Server zdenormalizowanych podzbiorów danych z kilkoma klientami. Wymaga to sieci VPN i administratorów baz danych, co utrudnia konfigurację i konserwację. Zależność od SQL Server nie jest idealna. ## Złącza stron trzecich Zbadałem i znalazłem kilka firm, które oferują oferty związane z otwieraniem danych SaaS klientom końcowym. * Chmura połączeń * Progress DataDirect Obie firmy mają produkty, które wydają się umożliwiać dokładnie to, czego szukam. To jedyni dwaj dostawcy, których do tej pory znalazłem. Rozmawiam z przedstawicielami obu firm, aby ocenić ich ofertę. # Pytanie W jaki sposób rozwiązałeś problemy "uwolnienia danych" swoich klientów?


title: Dlaczego komitet Haskella wybrał monady do reprezentowania I/O?

text: Język Clean wykorzystuje typy unikatowości do obsługi operacji we/wy w czysto funkcjonalnym otoczeniu. Dlaczego komitet Haskella wybrał monady? Czy istniały inne propozycje dotyczące postępowania ze stanem, które komisja badała, ale odrzuciła decyzję? **Uwaga** : Nie szukam świętej wojny między monadami a innymi formami informatyki. Pozostańmy w temacie tylko do wyborów komitetu dotyczących I/O.


title: Tworzenie serwisów internetowych za pomocą spring-mvc. Jeden projekt lub wiele projektów

text: Używając spring mvc do stworzenia spokojnego interfejsu API, Maven jest narzędziem do budowania, a tomcat z spring jars jest wdrożeniem . **Plan A** : każda usługa sieciowa będzie osobnym plikiem/projektem wojennym ? w razie potrzeby dostarczyłbym zależności jako jar(y) (takie jak klasy warstwy dao/dto/usługi używane w różnych usługach internetowych? Udostępniałbym jary wiosenne między projektami z katalogu tomcat lib. **Plan B**: Mieć jeden duży projekt z różnymi kontrolerami (i kolejne mapowania żądań dla restful api) dodawane w razie potrzeby.Dostarcz zależności sprężynowe z projektem w maven.Co jest lepsze?Zdaję sobie sprawę, że spring nie jest zgodny z jax-rs - co to oznacza w praktyce, jaka jest różnica, jeśli nie jest zgodny?


title: Jak ważna jest samokształcenie w dziedzinie programowania?

text: Mam 16 lat. Zacząłem programować około rok temu, kiedy miałem zacząć liceum. Idę na karierę programisty i robię co w mojej mocy, aby nauczyć się jak najwięcej. Kiedy zaczynałem, nauczyłem się podstaw C++ z książki i od tego czasu zacząłem uczyć się wszystkiego sam. Obecnie mam dużo większe doświadczenie niż rok temu. Wiedziałem, że muszę uczyć się sam, ponieważ liceum (prawdopodobnie) nie nauczy mnie niczego wartościowego o programowaniu, a chcę być przygotowany. Pytanie brzmi: jak ważne jest samodzielne studiowanie programowania?


title: Szacunkowy koszt projektu zależy od [SLOC|COCOMO]?

text: Czy logiczne jest oszacowanie kosztu projektu w zależności od linii źródłowych kodu? Jak te obliczone raporty z narzędzi takich jak * sloccount * szacowanie ohloh * * Jak przekonać [kogoś|pracodawcę|klienta] do zapłaty zależy od tych raportów? Dziwne rzeczy przychodzą na scenę, gdy widzę coś w wysokości 83 862 USD w oparciu o mój projekt. Czasami sam programista pisałby więcej linii kodu z powodu tego oszacowania. Więc jeśli liczba wierszy źródłowych nie jest warta, Dlaczego powinna być [czasami | jakoś] interesująca część rozwoju, Specjalnie dla pracodawcy, Zadziwia ich, ale dlaczego nie ma żadnego wpływu na ceny? Hej _Pracodawca_ Opracowałem ten projekt, który jest wart 1 milion dolarów. Ten program do liczenia kodów źródłowych to udowodni. Może nie znam prawdziwej wartości mojej pracy, czy powinienem ją upublicznić ludziom i zebrać kilka komentarzy na jej temat, czy pokazać ją niektórym [ekspertom|konsultantom], aby się dowiedzieć, lub po prostu oszacować się na podstawie mojej wiedzy, te rozwiązania nie są właściwe lub przynajmniej logiczne. A co dzieje się z tymi kodami, których sam nie napisałem, mam na myśli, że czasami po prostu kopiujemy kawałek kodu i [wklejamy|zmodyfikowaliśmy] do projektu. A jeśli szacowanie w ten sposób jest błędne, jaki jest cel tych narzędzi do generowania takiego raportu o liniach źródłowych kodu, średniej pracy godzinowej i innych faktach. Ohloh : > **Szacowany koszt** > > Szacunkowy koszt projektu obliczamy za pomocą modelu Basic COCOMO. > Dla osób zaznajomionych ze szczegółami używamy współczynników a=2,4 i >b=105. > > Szacunki wciąż wydają się odległe? > > Szacowanie kosztów oprogramowania to trudna sprawa, nawet gdy wszystkie zmienne są > znane (czego na pewno nie mamy). Jedną rzeczą do zapamiętania jest to, że COCOMO > zostało stworzone do modelowania dużych projektów instytucjonalnych, które często nie dają się > dobrze porównać z rozproszonymi projektami open-source. Oprócz samego czasu rozwoju, > COCOMO ma obejmować projektowanie, opracowywanie specyfikacji, przeglądy i > ogólne koszty zarządzania, które towarzyszą produkcji wysokiej jakości oprogramowania. >> Ten model wydaje się najdokładniejszy w przypadku dojrzałych, dużych projektów. Młode > projekty o małej aktywności są zazwyczaj przeceniane. _Wiem, że cytat z ohloh to nie tylko SLOC_


title: Czy aplikację należy projektować bez uprzedniego tworzenia prototypów?

text: Właśnie zacząłem używać popularnego, dobrze udokumentowanego silnika graficznego i dostałem miesiąc na stworzenie kilku małych programów i zapoznanie się z nim. Biblioteka jest ogromna i są sekcje, których nie zbadałem. Ze względu na brak czasu mój kierownik techniczny poprosił mnie, abym zaczął projektować oprogramowanie ( _diagramy sekwencji i klas_ ) nawet dla części, których nie zbadałem, po prostu przeglądając dokumentację i zastanawiając się nad możliwościami tych klas. Rozumiem, że projektowanie oprogramowania wymaga dobrej znajomości tego, jak coś działa. Czy ma sens tworzenie projektu z niejasnym zrozumieniem działania klasy, po prostu patrząc na dokumentację klasy? Czy nie powinienem prototypować go za pomocą małego programu, podkręcając go tu i tam i rozumiejąc, jak się zachowuje, a NASTĘPNIE zaprojektować go?


title: Gdzie powinny być przechowywane skonkretyzowane klasy?

text: Mam tu mały dylemat projektowy. Piszę bibliotekę, która składa się z kilku klas szablonów, które mają służyć jako baza do tworzenia treści. Na przykład: public class Szablon { public string Name {get; set;} ciąg publiczny Opis {get; set;} ciąg publiczny Atrybut1 {get; set;} ciąg publiczny Atrybut2 {get; set;} public Template() { //constructor } public void DoCos() { //coś robi } ... } Problem polega nie tylko na tym, że biblioteka dostarcza szablony, ale także dostarczy sporo predefiniowanych szablonów, które są instancjami tych klas szablonów. Pytanie brzmi, gdzie umieścić te wystąpienia szablonów? Trzy rozwiązania, które do tej pory wymyśliłem, to: ## 1) Dostarcz zserializowane wystąpienia szablonów jako pliki. Z jednej strony to rozwiązanie oddzieliłoby instancje od samej biblioteki, co jest miłe, ale potencjalnie zwiększyłoby złożoność dla użytkownika. Nawet gdybyśmy dostarczyli metody ładowania/deserializacji plików, nadal będą musieli radzić sobie z mnóstwem plików i jakimś plikiem konfiguracyjnym, aby aplikacja wiedziała, gdzie szukać tych plików. Dodatkowo, tworzenie plików szablonów prawdopodobnie wymagałoby osobnej aplikacji, więc jeśli użytkownik chciałby trzymać się metody przechowywania szablonów z plikami, musielibyśmy dostarczyć jakąś aplikację do tworzenia plików szablonów. Wymaga to również zewnętrznych zależności do testowania szablonów w kodzie użytkownika. ## 2) Dodaj instancje tylko do odczytu do klasy szablonu Przykład: public class Template { public string Name {get; set;} ciąg publiczny Opis {get; set;} ciąg publiczny Atrybut1 {get; set;} ciąg publiczny Atrybut2 {get; set;} public Szablon PredefiniowanySzablon { get { Szablon templateInstance = new Template(); templateInstance.Name = "Jakaś nazwa"; templateInstance.Description = "Opis"; ... zwróć templateInstance; } } public Template() { //constructor } public void DoSomething() { //coś robi } ... } Ta metoda byłaby wygodna dla użytkowników, ponieważ mogliby uzyskać bezpośredni dostęp do predefiniowanych szablonów w kodzie i być w stanie przetestować kod jednostkowy, który ich używał. Wadą jest to, że predefiniowane szablony zanieczyszczają przestrzeń nazw typu szablonu mnóstwem dodatkowych rzeczy. Przypuszczam, że mógłbym umieścić predefiniowane szablony w innej przestrzeni nazw, aby obejść tę wadę. Jedynym innym problemem związanym z tym podejściem jest to, że musiałbym w zasadzie powielić wszystkie przestrzenie nazw w bibliotece w predefiniowanej przestrzeni nazw (np. Templates.SubTemplates i Predefined.Templates.SubTemplates), co byłoby uciążliwe, a także sprawiłoby, że refaktoryzacja byłaby większa trudny. ## 3) Uczyń szablony klas abstrakcyjnymi i spraw, aby predefiniowane szablony dziedziczyły po tych klasach. Na przykład: public abstract class Szablon { public string Name {get; set;} ciąg publiczny Opis {get; set;} ciąg publiczny Atrybut1 {get; set;} ciąg publiczny Atrybut2 {get; set;} public Template() { //konstruktor } public void CosCos() { //coś robi } ... } i public class PredefinedTemplate : Template { public PredefinedTemplate() { this.Name = "Jakaś nazwa"; this.Description = "Opis"; this.Attribute1 = "Pewna wartość"; ... } } To rozwiązanie jest dość podobne do punktu 2, ale kończy się utworzeniem wielu klas, które tak naprawdę nic nie robią (żaden z naszych predefiniowanych szablonów aktualnie nadpisuje zachowanie) i nie ma żadnych metod, więc nie jestem pewien, jak dobra jest to praktyka. Czy ktoś jeszcze miał jakieś doświadczenie z czymś takim? Czy istnieje jakaś najlepsza praktyka lub inne/lepsze podejście, o którym nie pomyślałem? Uderzam głową w ścianę, próbując znaleźć najlepszą drogę. Dziękuję!


title: Jak powinienem hermetyzować dostęp do bazy danych?

text: Jakie są przykłady dobrych struktur klas używanych do zarządzania dostępem do bazy danych? Jestem fanem enkapsulacji klas i wolałbym, aby kontenery (np. samochód) nie wykonywały zadań bazodanowych. Chciałbym również w przyszłości mieć możliwość łatwego wrzucania rzeczy takich jak pamięć podręczna bazy danych. Często biorę wzór klas kontenerów, wraz z getterami i setterami do walidacji i dostępu do bazy danych wykonywanych przez pojedynczą klasę. Biorąc to pod uwagę, często miesza się to między tymi dwoma i staje się dość mylące. Przepraszam, jeśli moje pytanie jest trudne do zrozumienia; Nie jestem do końca pewien co do zasad dotyczących baz danych. W razie potrzeby możesz poprosić o wyjaśnienie.


title: Czy tworzenie oprogramowania jest dyscypliną inżynierską?

text: Czy rozwój oprogramowania można uznać za inżynierię? Jeśli nie, jakich rzeczy brakuje, aby zostać zakwalifikowaną jako dyscyplina inżynierska? Z tym związane jest to pytanie na Stack Overflow dotyczące różnicy między programistą a inżynierem oprogramowania. Istnieje Instytut Inżynierii Oprogramowania na Uniwersytecie Carnigie Mellon, który określa i utrzymuje standardy CMMI. Czy to jest coś, co zmieni rozwój w inżynierię?


title: Jaka jest różnica między profilem danych UML a modelem ER?

text: Zadawano mi to pytanie i nawet po wielu badaniach nie mogę znaleźć odpowiedzi. Kiedy projektuję bazę danych za pomocą relacji Entity (ER), a następnie przerysowuję ją jako model klasy UML (rozszerzony o profil modelowania danych dla UML), jakie są różnice i jak oba modele mogą być (na swój sposób) przydatne dla programisty db ? W odniesieniu do wielokrotności, kluczy obcych...


title: Dlaczego kompilatory nie obsługują słów kluczowych w języku innym niż angielski?

text: Kiedy czytasz C, C#, Java, Python, PHP i wiele innych języków programowania, cała składnia jest napisana w języku angielskim. Prosty kod, taki jak ten if (X+1 > 4) { } while (A == true) { } Jest napisany w języku angielskim, nawet jeśli językiem ojczystym programisty jest coś innego. Czy nie byłoby bardziej efektywne umożliwienie programiście używania własnego języka ojczystego w kodzie źródłowym, w ten sposób (mój zły hiszpański, więc wybacz mi, jeśli jest zły) si (X+1 > 4) { } mientras (A == verdadero ) { } Nie ma żadnego technicznego powodu, dla którego kompilator lub parser miałby _utknąć_ z zakodowaną składnią. Każdy programista, który dokonał internalizacji, wie, że istnieje wiele łatwych sposobów obsługi innych języków mówionych. Większość platform IDE można uruchomić w różnych językach. Jednak język programowania, którego używa programista, utknął w języku angielskim. Dlaczego żaden z głównych języków nie dodał obsługi pakietów językowych?


title: Jakie są nazwy różnych form nazewnictwa w stylu wielbłąda?

text: Na potrzeby komunikowania stylów kodowania moim współpracownikom, jak formalnie nazwałbym następujące warianty przypadku wielbłąda? > camelCase i > CamelCase Zauważ, że pierwsza wersja zaczyna się od małej litery, a druga od wielkiej litery. Zakładam, że mają one jakąś „oficjalną nazwę”. Również jeśli są jakieś inne formy, których tutaj nie wymieniłem, punkty bonusowe do tych, które je wymieniają, a także ich nazwy.


title: Język skryptowy do wypełniania formularza internetowego

text: Mam pracę jako stażysta w firmie technologicznej, dostałem niefortunną pracę polegającą na wprowadzaniu danych do naszego internetowego systemu zarządzania. Informacje wprowadzone do formularza internetowego są przechowywane w bazie danych MySQL. Po otrzymaniu danych zdałem sobie sprawę, że będę musiał przesłać ten formularz online około 1000 różnych razy, każdy składający się z około 10 różnych pól tekstowych / pól wyboru na formularz. (Innymi słowy, byłoby to całkowicie otępiające i byłoby śmieszną stratą czasu i zasobów, a przynajmniej tak myślałem...) Używając baz danych sporo wcześniej, moją natychmiastową reakcją było napisanie krótkiego skryptu MySQL zbiorczo zaimportować wszystkie dane, zwłaszcza, że zostały mi już przedstawione w arkuszu kalkulacyjnym Excela gotowym do pracy. Pomyślałem, że może to być jakiś test, ponieważ wydawało się to zbyt oczywiste. Napisałem skrypt, który składał się z około 10 linijek kodu, ale zostałem poinformowany, że nie mogę zaufać uprawnień administratora MySQL do uruchomienia tego skryptu. Więc moją następną myślą byłoby napisanie skryptu, który po prostu wprowadza informacje przez formularz internetowy (co zajmie dziesięć razy dłużej, ale to jest to, czego muszę) Nieznajomość skryptów tego rodzaju (wydaje się, że potrzebuję czegoś podobnego bot, ale dobry rodzaj) Nie byłem pewien, jak postępować, aby to zrobić. Czy istnieje preferowany język do wprowadzania danych, które posiadam w formularzu internetowym, do którego mam dostęp? Nie oczekuję, że zrobi się to za mnie w jakikolwiek sposób, tylko miły punkt we właściwym kierunku, jeśli chodzi o to, jakiego języka skryptowego użyć i jak powiązać to z danymi, które mam, które należy wprowadzić. Dzięki za pomoc/cenny wkład! **EDYTUJ:** Czy istnieje sposób na wykonanie tego za pomocą perla bez dostępu do umieszczania jakichkolwiek plików na serwerze? Czy byłbym w stanie uruchomić kilka pętli JavaScript, aby wyciągnąć dane z formatu .csv lub po prostu z formatu .txt z ogranicznikami linii i wstawić je do formularza internetowego?


title: Czy można używać zlokalizowanego kodowania znaków w kodzie?

text: Czy można używać zlokalizowanego kodowania (np. ISO-8859-15) zamiast ANSI/UTF-8/jakiś standard kodu? Co zrobić, gdy masz nazwy, które nie przekładają się zbyt dobrze na angielski kod? Albo kiedy Twoja firma i Twoi klienci są (i zawsze będą) lokalni, a nie międzynarodowi, jak rządy? A co z używaniem znaków specjalnych, jakie mają ludzie w prawie wszystkich krajach? Jak myślisz, jakich kodowań używasz?


title: Systemy licencjonowania oprogramowania

text: Piszę aplikację, która zostanie udostępniona do sprzedaży. Chciałbym mieć system zapewniający, że klienci zapłacili za korzystanie z oprogramowania. Zmienne, które należy wziąć pod uwagę, to: 1) Liczba użytkowników w organizacji 2) Udogodnienia dostępne w aplikacji dla użytkowników 3) Okres licencjonowania – tj. jeden miesiąc lub rok Czy istnieją bezpłatne lub komercyjne oferty, które mogą pomóc w tym ? Jakie są najlepsze praktyki w tego typu sprawach? Co jeszcze powinienem rozważyć? Moim początkowym pomysłem jest posiadanie bloku zakodowanego tekstu, który można wysłać pocztą elektroniczną lub pobrać. Zawartość bloku tekstu zawierałaby unikalny numer komputera, datę zakończenia, obiekty itp. Myślę, że potrzebowałbym gdzieś serwera, aby kontrolować liczbę licencji dla organizacji.


title: Tworzenie aplikacji BlackBerry z zawartością stron trzecich

text: Pracuję nad aplikacją BlackBerry, jednak ładuję dane z różnych witryn internetowych innych firm w Internecie. (Np. posty ze stackoverflow lub kursy walut z Yahoo.com) Chciałbym wiedzieć, czy mogłoby to spowodować jakieś problemy, czy byłoby to dozwolone? Dziękuję Ci!


title: Czy ktoś, kto studiował Internet, może łatwo przejść na oprogramowanie?

text: Zgłaszam się na studia _bardzo_ niedługo i skupiam się na programowaniu. Ograniczyłem opcje programu do **Usługi i aplikacje internetowe** , **Aplikacje komputerowe** i **Gry komputerowe**. Skłaniam się ku sieciowi, ponieważ od studiów rozwijam się w sieci. **Pytanie** Tak więc moje pytanie brzmi, czy zmiana ścieżki kariery z sieci na oprogramowanie nie byłaby bardzo trudna, jeśli na przykład za kilka lat wolałbym inną ścieżkę kariery? **Uwaga** Wszystkie trzy programy są częścią Bachelor of Computer Science i wydają się dzielić te same podstawowe kursy.


title: Czy szkoły programowania powinny być bardziej konkurencyjne?

text: Na P.SE pojawiło się kilka postów o niższej jakości edukacji programistycznej, a ten post Joela na JavaSchools pokazuje jego frustrację z powodu sposobu, w jaki często naucza się informatyki. W wielu szkołach artystycznych i muzycznych tylko najlepsi uczniowie mogą kontynuować naukę. Przyjmują tylko ograniczoną (nazwijmy to x) liczbę uczniów, a jeśli nie jesteś wśród najlepszych x uczniów, nie kontynuuj. Porównajmy to ze szkołami komputerowymi, gdzie jeśli dostaniesz C lub B w mojej szkole, idziesz dalej. Czy szkoły informatyczne powinny mieć podobny program? Jakie są twoje odczucia odnośnie takiego programu? EDIT: W odpowiedzi na posty, które mówią, że ukończenie najlepszej szkoły nie gwarantuje dobrej kariery: nie sądzę, że powinno. Moje pytanie dotyczy tego, w jaki sposób można mieć pewność, że ludzie, którzy kończą jakąkolwiek szkołę - Ivy League lub nie - osiągnęli poziom biegłości, jaki powinien wykazywać stopień naukowy.


title: Muszę opracować parser. Czy mogę w tym celu wykorzystać Lex i Yacc?

text: Muszę wyodrębnić bardzo konkretne dane z plików dziennika (różnych typów i formatów). Ponieważ jestem niedawnym zemstą w college'u; mój umysł pobiegł do używania Lexa i Yacc w tym celu. Teraz mam **następujące pytania** **1.** Czy będzie to zgodne z prawem? (Ten produkt, dla którego pracuję, należy do jednej z największych firm technologicznych na świecie.) **2.** Również ; Chciałbym wiedzieć, czy za bardzo boję się napisać własny parser? **3.** Jak mogę używać Lex i Yacc, jeśli mój produkt jest oparty na systemie Windows? Proszę powiedz mi, jeśli potrzebujesz wyjaśnień lub dodatkowych informacji.


title: Dlaczego Radix Sort nie jest używany częściej?

text: Jest stabilny i ma złożoność czasową O(n). Powinien być szybszy niż algorytmy takie jak Quicksort i Mergesort, ale prawie nigdy nie widzę go używanego.


title: Naprawianie błędów może prowadzić do opóźnionych informacji zwrotnych

text: Pracowałem w grupie w firmie Microsoft, która opracowała uaktualnienie do programu antywirusowego Microsoft Security Essentials. Przez rok pracowaliśmy nad kolejną wersją produktu. Mieliśmy 6 kamieni milowych (kamień milowy co dwa miesiące). Większość funkcji została opracowana w kilku pierwszych kamieniach milowych, a w drugiej połowie roku funkcje te zostały dopracowane, a błędy zostały naprawione. Z każdym kamieniem milowym większa część użytkowników (subskrybujących różne programy alfa/beta) otrzymywała produkt i udzielała informacji zwrotnych. Menedżerowie programu w projekcie powiedzieli mi, że zaletą tego podejścia jest to, że potencjalni użytkownicy mają więcej czasu na wyrażenie opinii na temat funkcji, więc lepiej jest wysłać wszystkie funkcje tak szybko, jak to możliwe. Jednak Scrum nie popiera takiego podejścia. W Scrumie zaleca się dostarczanie całkowicie przetestowanego i funkcjonalnego oprogramowania, a nie na wpół upieczonych i kruchych funkcji. Takie podejście ma różne zalety, ale ma też pewne wady. Jednym z nich jest to, że informacje zwrotne są opóźnione. Więc jakie podejście preferujesz i dlaczego?


title: Czy powinienem zapisać prosty plik cookie z listą w JavaScript czy PHP?

text: Obecnie tworzę proste narzędzie do tworzenia list. Możesz kliknąć pole wyboru, aby oznaczyć to jako wykonane, a jeśli opuścisz stronę/zamkniesz przeglądarkę i ponownie ją załadujesz, nadal zostanie ona zapisana. Więc to właściwie tylko różnica wizualna. W tym celu zastanawiam się, czy powinienem użyć PHP lub JavaScript, aby ustawić plik cookie, aby zapisać dane o tym, czy element został sprawdzony, czy nie? Jeśli nie, czy powinienem użyć `$_SESSION`? Nie udało mi się znaleźć prostego rozwiązania związanego z moim problemem, z moich wyszukiwań prawie wszystkie są związane z zapisywaniem nazw użytkowników / haseł, które oczywiście mają również dodatkowy aspekt bezpieczeństwa. Dziękuję.


title: Czy rzeczywiście używa się diagramów Nassi-Shneidermana?

text: Dowiedziałem się o nich na kursie programowania strukturalnego, ale nigdy nie widziałem ich później, ani w fazie analizy, ani w celach dokumentacyjnych. Nawet w przypadku wysoce ustrukturyzowanych języków, takich jak Pascal (Delphi). Czy ktoś z was faktycznie używa diagramów Nassi-Shneidermana? Jeśli tak, jakich narzędzi używasz do ich tworzenia/utrzymywania? **edytuj:** A może nigdy o nich nie słyszałeś?


title: Czy korzystanie z YouTube to dobre, niedrogie rozwiązanie do tworzenia witryny, która wymaga od użytkowników publikowania filmów?

text: Zagłębiam się w tworzenie stron internetowych po dziesięciu latach tworzenia pulpitu i mam pomysł na stronę Rails, która będzie polegać na użytkownikach zamieszczających krótkie filmy (5 -15 minut), które nagrali. Witryna będzie obsługiwana przez reklamy i prawdopodobnie nie będzie generować wystarczających przychodów, aby obsługiwać hosting wideo w oparciu o to, jak drogie jest, jak rozumiem, więc wpadłem na pomysł, aby umożliwić użytkownikom określenie linku do nagranego i opublikowanego wideo na Youtube. W ten sposób YouTube finansuje wszystkie zasoby (przechowywanie, przepustowość itp.) potrzebne do filmów, a ja po prostu osadzam je na swojej stronie internetowej. Moje pytania są następujące: 1. Czy warto oddzielić dostawcę usług treści użytkownika (w tym przypadku YouTube) od mojej witryny w celu zaoszczędzenia pieniędzy, które kosztowałoby mnie samodzielne hostowanie filmów wideo? 2. Czy jest tani sposób na samodzielne udostępnianie filmów, jeśli odpowiedź na moje pierwsze pytanie brzmi „Nie!”? 3. Jeśli nie jest to zły pomysł, czy widzisz inne potencjalne problemy związane z tym podejściem? Przepraszam, jeśli to pytanie jest w jakikolwiek sposób absurdalne, wciąż zapoznaję się z funkcjonowaniem firm internetowych. Z góry dziękuję za twoją mądrość, zamierzam teraz kontynuować badanie moich pytań.


title: Czy zespół programistów potrzebuje menedżera?

text: **Tło:** Obecnie należę do czteroosobowego zespołu: 1 menedżera, 1 starszego programisty i 2 programistów. Wykonujemy szereg szytych na miarę systemów/projektów wewnętrznych (np. 6-8 tygodni) dla organizacji liczącej około 3500 pracowników, a także wszelkie utrzymanie i wsparcie wymagane od systemów, które zostały stworzone wcześniej. Nie ma nas wystarczająco dużo, aby wykonać całą pracę, która potencjalnie nadchodzi po naszej myśli - brakuje nam personelu. Kierownictwo zdaje sobie z tego sprawę, ale ograniczenia budżetowe ograniczają naszą zdolność do rekrutowania dodatkowych członków do zespołu (nawet jeśli odzyskamy pensję w postaci oszczędności). **Zmiana** To pozostawia nas tam, gdzie jesteśmy teraz. Nasz menedżer ma opuścić swoją rolę na nowe pastwiska, pozostawiając wakat w zespole. Kierownictwo korzysta z tej okazji, aby zrestrukturyzować nasz zespół, dzięki czemu rolę menedżera zespołu zastąpi inny programista i inny starszy programista. Ich logika polega na tym, że potrzebujemy więcej programistów, więc oto sposób na jej finansowanie (jedna z ról jest częściowo finansowana z innego wolnego stanowiska). Zespół nie miałby bezpośredniego przełożonego, a role i obowiązki byłyby rozdzielone między seniorów i (stosunkowo nowego na stanowisku) kierownika ds. usług (rola nietechniczna z niewielką lub zerową wiedzą/doświadczeniem w zakresie rozwoju, której celem jest wspólne wśród wielu innych zespołów i osób) - kto byłby naszym następnym faktycznym menedżerem w łańcuchu pokarmowym. Myślę, że ostatnie pytanie brzmi: **Czy jest możliwe prowadzenie zespołu deweloperskiego bez menedżera?** Czy miałeś tego typu doświadczenie? A jakie rzeczy mogą pójść nie tak / mogą być dla nas korzystne? Idealnie chciałbym „zobaczyć światło” i korzyści płynące z robienia rzeczy w ten sposób lub wymyślić kilka argumentów przeciwko temu.


title: OOP (php) dla początkujących – pewne niejasności

text: Zacząłem czytać tutoriale o OOP, ponieważ chcę poznać podstawy. Mam pytanie na ten temat. Rozumiem, jak można mieć obiekt "Samochód" i nadać mu taki kolor $oCar->setColor("white"); Ale są dla mnie rzeczy niejasne. Powiedzmy, że mam bazę danych z różnymi samochodami. Jaki jest najlepszy sposób na stworzenie obiektu „samochód”? Zapytanie SQL zamiast klasy? Drugie pytanie brzmi: jak mogę wyświetlić listę wszystkich samochodów? Czy muszę utworzyć obiekt o nazwie „Garaż”, w którym jest tylko jedna metoda, która wybiera wszystkie samochody z bazy danych? Czy ten rodzaj metody należy do obiektu „Samochód”?


title: Jak napisać czytelny kod Clojure?

text: Jestem nowy w Clojure. Rozumiem kod, który piszę, ale później staje się to zbyt trudne do zrozumienia. Trudno jest dopasować nawiasy. Jakie ogólne konwencje należy przestrzegać w odniesieniu do konwencji nazewnictwa i wcięć w różnych sytuacjach? Na przykład napisałem przykładowy przykład destrukturyzacji, aby zrozumieć, ale za drugim razem wygląda on całkowicie nieczytelnie. (defn f [{x :x y :y z :z [a b c] :coll}] (print x " " y " " z " " a " " b " " c)) Czy w przypadku destrukturyzacji lepiej zrobić to bezpośrednio na poziomie parametrów czy uruchomić formularz let i tam kontynuować?


title: Gdzie mogę znaleźć obiektywne oceny programów certyfikacji zawodowej?

text: Do niedawna dobrze sobie radziłem z ukończeniem studiów informatycznych na szanowanym uniwersytecie, ale teraz mój pracodawca ustanowił zasadę, że pracownicy na moim stanowisku muszą posiadać certyfikat z krótkiej listy możliwości. Nigdy wcześniej nie musiałem się tym przejmować, a samo wyszukiwanie w wyszukiwarce prowadzi głównie do fałszywie wyglądających witryn, które próbują sprzedać ci „oprogramowanie do nauki”, przykładowe egzaminy lub po prostu bezpośrednie odpowiedzi testowe (podobno). Tak więc muszę wybrać certyfikat i nie mam możliwości sprawdzenia, czy któryś z nich jest wart więcej (dla prawdziwego programisty) niż papier, na którym są wydrukowane. Mógłbym tutaj zamieścić dużą listę i poprosić ludzi, aby ją wybrali, ale myślę, że "naucz człowieka łowić ryby" może być bardziej przydatne. Jeśli masz pozytywne/negatywne doświadczenia z danym certyfikatem, koniecznie daj mi znać, ale naprawdę wolałbym być lepiej przygotowany do samodzielnej oceny.


title: Duża liczba projektów dla jednej aplikacji

text: Pracuję na 300K linii aplikacji C/C++ Windows, która jest rozłożona na 23 różne projekty Eclipse (około jedna trzecia dla interfejsu Qt, jedna trzecia dla bibliotek DLL i jedna trzecia dla bibliotek statycznych). Poskarżyłem się kierownikowi projektu, że praca z tak wieloma różnymi projektami jest uciążliwa dla jednego oprogramowania. Na przykład, jeśli zmienię jedną rzecz w bibliotece statycznej, prawdopodobnie będę musiał ponownie skompilować co najmniej 5 innych projektów. Czy mam rację, żeby narzekać, czy też tak zarządza się większością podobnych projektów? Czy jest jakieś odniesienie do tego, jak należy to zrobić?


title: Dlaczego więcej języków nie obsługuje ===

text: Mam na myśli to, jak jest używane w JavaScript. Po prostu ciekaw, dlaczego nie jest to obsługiwane w większej liczbie języków? Jak na przykład Java go nie ma? Wydaje się być bardzo przydatnym operatorem.


title: Jakie umiejętności są potrzebne do pracy z uczeniem maszynowym?

text: Zamieściłem to pytanie na Quora, ale nie otrzymałem wystarczającej liczby odpowiedzi. przesyłam go tutaj. Jestem uczniem siedzącym w domu i uczącym się algebry liniowej, bardzo zainteresowanym pracą w uczeniu maszynowym, ale nie jestem pewien > a) jakie umiejętności techniczne są potrzebne do rozmowy kwalifikacyjnej / pracy > b) wymagane jest odpowiednie doświadczenie zawodowe inicjatywa, aby przynajmniej zacząć, a raczej pomyśleć o zrobieniu tego, aby każda sugestia/wskazówka była bardzo pomocna i doceniona


title: Dobry w backendzie, ale kiepski we frontendzie

text: Chcę rozpocząć tworzenie stron internetowych, uczę się php. Mam doświadczenie w Javie, Pythonie i C++ To doświadczenie uczyniło mnie dobrym w back-endowej stronie tworzenia stron internetowych. Ale jestem kiepski w projektowaniu i grafice. Chcę uruchomić stronę internetową. Co proponujecie mi zrobić? Jeśli Twoja sugestia jest lepsza w grafice, jaki byłby dobry sposób? Chcę też wiedzieć, czego używacie do projektowania i grafiki, a co byłoby dobrym miejscem do nauki?


title: Jak trudna byłaby interakcja z grą pokerową na Facebooku?

text: Istnieje internetowa gra flash poker na Facebooku. Ta gra stale wysyła i odbiera informacje do przeglądarki gracza o wszystkich rzeczach, które się w niej dzieje. Jak trudno byłoby dobremu programiście stworzyć program, który mógłby łączyć się z serwerem gry, aby użytkownik nie musiał korzystać z przeglądarki internetowej, aby grać w grę?


title: Czy usunięcie niepotrzebnego pliku z repozytorium można uznać za część refaktoryzacji?

text: Używamy Git jako naszego DVCS i zaraz zaczniemy oczyszczać (nigdy wcześniej w tym zespole) pliki, które nie są potrzebne (nie są częścią źródeł) naszych produktów. Odbywa się to na dwa sposoby: * usunięcie plików `product` z repozytorium i dodanie ich do listy ignorowanych. * usuwanie martwego kodu Według Wikipedii: > Refaktoryzacja kodu to proces restrukturyzacji istniejącego kodu komputerowego > bez zmiany jego zewnętrznego zachowania. Refaktoryzacja poprawia niefunkcjonalne > atrybuty oprogramowania. Zalety obejmują lepszą czytelność kodu i > mniejszą złożoność w celu poprawy łatwości konserwacji kodu źródłowego oraz > stworzenie bardziej wyrazistej architektury wewnętrznej lub modelu obiektowego w celu poprawy rozszerzalności. oraz z wpisu Martina Fowlera: > Refaktoryzacja to bardzo specyficzna technika, oparta na użyciu małych zachowań- > przekształcenia zachowujące (same nazywane refaktoryzacjami). Nigdzie nie czytałem, że usuwanie martwego kodu lub usuwanie plików z repozytorium jest uważane za techniki refaktoryzacji, ale widzę je jako techniki, które _"poprawiają łatwość utrzymania kodu źródłowego"_ poprzez usunięcie nieistotnego kodu, który może nas później rozpraszać. Czy uważasz, że rozsądnie jest nazywać te dwie czynności „Refaktoryzacja”?


title: Jak mogę skrócić czas potrzebny na pełne przetestowanie regresji aplikacji gotowej do wydania?

text: Aplikacja, nad którą pracuję, jest rozwijana ze zmodyfikowaną wersją scrum. Jeśli nie znasz scrum, jest to po prostu alternatywne podejście do bardziej tradycyjnego modelu wodospadu, w którym szereg funkcji jest opracowywanych przez określony czas, zwany sprintem. Aplikacja jest napisana w języku C# i korzysta z WPF. Używamy edycji Visual C# 2010 Express jako IDE. Jeśli pracujemy nad sprintem i dodamy kilka nowych funkcji, ale nie planujemy wydania, dopóki kolejny sprint nie zostanie zakończony, testowanie regresji nie stanowi problemu jako takiego. Po prostu testujemy nowe funkcje i ponownie dajemy aplikacji dobre wyniki. Jeśli jednak planowane jest wydanie, które nasi klienci mogą pobrać - uwzględniony jest pełny test regresji. W przeszłości nie było to nic wielkiego, trwało to 3 lub 4 dni, a twórcy po prostu naprawiali wszelkie błędy znalezione w regresji faza, ale teraz, gdy aplikacja staje się coraz większa i zawiera coraz więcej funkcji, regresja trwa tygodniami. Interesują mnie wszelkie znane lub używane przez ludzi metody, które mogą skrócić ten czas. W tej chwili jedyne pomysły, jakie mam, to albo zacząć pisać testy jednostkowe, których nigdy w pełni nie wypróbowałem w środowisku komercyjnym, albo zbadać możliwość dowolnego interfejsu API Automation UI lub narzędzi, które pozwoliłyby mi napisać program do wykonania serię testów wsadowych. Dosłownie nic nie wiem o możliwościach automatyzacji interfejsu użytkownika, więc każda informacja byłaby cenna. Nie wiem zbyt wiele o testach jednostkowych, jak skomplikowane mogą być testy? Czy można uzyskać testy jednostkowe do korzystania z interfejsu użytkownika? Czy są jakieś inne metody, które powinienem rozważyć? Dzięki za przeczytanie i za wszelkie rady z góry. Edycja: Dzięki za informacje. Czy ktoś zna jakieś alternatywy do tego, o czym do tej pory wspomniano (NUnit, RhinoMocks i CodedUI)?


title: Dlaczego nie opisywać parametrów funkcji?

text: Aby odpowiedzieć na to pytanie, załóżmy, że koszt niejednoznaczności w umyśle programisty jest znacznie droższy niż kilka dodatkowych naciśnięć klawiszy. Biorąc to pod uwagę, dlaczego miałbym pozwolić moim kolegom z drużyny na _nie_ dodawanie adnotacji do ich parametrów funkcji? Weźmy następujący kod jako przykład tego, co może być znacznie bardziej złożonym fragmentem kodu: niech foo x y = x + y Teraz szybkie zbadanie podpowiedzi pokaże, że F# określił, że x i y mają być intami . Jeśli o to ci chodziło, to wszystko jest w porządku. Ale ja nie wiem, czy o to ci chodziło. Co by było, gdybyś utworzył ten kod, aby połączyć ze sobą dwa ciągi? A jeśli myślę, że prawdopodobnie chciałeś dodać dublet? A co, jeśli po prostu nie chcę najeżdżać kursorem myszy na każdy parametr funkcji, aby określić jego typ? Teraz weźmy to jako przykład: niech foo x y = "result: " + x + y F# teraz zakłada, że prawdopodobnie zamierzałeś połączyć łańcuchy, więc x i y są zdefiniowane jako łańcuchy. Jednak jako biedny gnojek, który zajmuje się twoim kodem, mogę spojrzeć na to i zastanowić się, czy być może zamierzałeś dodać x i y (ints) razem, a następnie dołączyć wynik do ciągu znaków dla celów interfejsu użytkownika. Z pewnością w przypadku tak prostych przykładów można by odpuścić, ale dlaczego nie wymusić polityki adnotacji typu explicit? let foo (x:string) (y:string) = "wynik: " + x + y Co szkodzi jednoznaczności? Jasne, programista mógł wybrać niewłaściwe typy do tego, co próbuje zrobić, ale przynajmniej wiem, że zamierzali to zrobić, że nie było to tylko przeoczenie. To poważne pytanie... Nadal jestem nowy w F# i przecieram szlaki dla mojej firmy. Standardy, które przyjmę, będą prawdopodobnie podstawą całego przyszłego kodowania w języku F#, osadzonym w niekończącym się kopiowaniu-wklejaniu, które z pewnością przeniknie kulturę na wiele lat. A więc... czy jest coś szczególnego w wnioskowaniu o typie w języku F#, co sprawia, że jest to cenna funkcja, której należy się trzymać, dodając adnotacje tylko wtedy, gdy jest to konieczne? A może eksperci F# mają zwyczaj opisywania swoich parametrów w nietrywialnych zastosowaniach?


title: klasa obserwatora jako instancja

text: Czasami czytam w opisach wzorców obserwatora, aby konstruktor klasy bazowej obserwatora był chroniony, aby klasa była abstrakcyjna. ale dzięki upublicznieniu konstruktora (jeśli choć jeden jest konieczny), mógłbym użyć obserwatora jako instancji, a nie tylko jako klasy bazowej. Czy jest jakaś wada takiego postępowania, o którym jeszcze nie wspomniano?


title: Co oznacza „Nightly Builds”?

text: Od jakiegoś czasu korzystam z projektów open source i rozwijam się na aplikacjach open source i co jakiś czas natrafiam na słowa „Nightly Build” i zawsze byłem ciekaw, co to właściwie oznacza. Czy to dosłownie oznacza, że projekty są wykonywane wyłącznie jako projekty poboczne (zwykle w nocy, kiedy wszyscy skończą swoją pracę) i nie ma prawdziwego współpracownika/dedykowanego zespołu programistycznego, czy jest to bardziej złożone?


title: Webkit jako GUI w .Net/Mono

text: Chcę stworzyć aplikację wieloplatformową, która będzie miała również stronę internetową, na której aplikacje desktopowe (Windows, iOS, Linux) będą komunikować się z serwerem i synchronizować dane użytkowników. Jak dotąd opcje, które widzę, to: * Napisz natywny GUI dla każdego z 3 systemów operacyjnych, abym miał 3 bazy kodów GUI (i jeden system zaplecza) * Użyj czegoś takiego jak GTK, abym mógł używać jednego systemu z obsługą we wszystkich wspomnieć o platformach. Ale trzecim, na temat którego nie udało mi się znaleźć wielu informacji (może nie szukam właściwych terminów, ponieważ wciąż jestem nowy w C# i .Net), jest posiadanie okna z wbudowaną instancją WebKit , co pozwoliłoby mi na korzystanie z tego samego systemu GUI, którego używałbym na stronie internetowej. Dzięki temu aplikacja kliencka i strona internetowa wyglądają jak najbliżej siebie, dzięki czemu użytkownicy są zaznajomieni z interfejsem. Czy ta ostatnia opcja z WebKit jest prawdopodobna? Znam już dobrze JavaScript/HTML i gdybym mógł wykorzystać tę wiedzę do stworzenia interfejsu, byłoby świetnie. Byłby to również świetny sposób na umożliwienie użytkownikom dostosowywania interfejsu za pomocą wtyczek i mogliby synchronizować dowolne preferencje interfejsu użytkownika z lokalnego do internetowego.


title: Czy dobrym pomysłem jest umieszczenie całego zestawu: WebResource w tym samym pliku cs?

text: Mam bibliotekę .NET, z niektórymi WebControls. Te elementy sterujące webControl mają osadzone zasoby. I deklarujemy je w ten sposób we wszystkich webcontrol dla każdego pliku cs: Coś takiego: [asembler: WebResource("IO.Css.MyCSS.css", "text/css")] namespace MyNamespace.MyClass { [ParseChildren(true) )] [PersistChildren(false)] [Designer(typeof(MyNamespace.MyClassDesigner))] public class Szybka wskazówka : Control, INamingContainer { //Mój kod... } } Czy dobrym pomysłem byłoby utworzenie pliku cs i uwzględnienie wszystkich Deklaracje WebResource tam? Przykład pliku cs z po prostu: [asembler: WebResource("IO.Css.MyCSS.css", "text/css")] [assembly: WebResource("IO.Image.MyImage.png", "image/png") ] //I wiele innych zasobów WebResources wszystkich elementów WebControl Zgromadzenia


title: Pomijanie dziedziczenia w językach programowania

text: Rozwijam własny język programowania. Jest to język ogólnego przeznaczenia (pomyśl o statycznie typowanym Pythonie dla komputerów stacjonarnych, tj. `int x = 1;` ) nieprzeznaczonym do chmury. Czy uważasz, że to w porządku, aby nie zezwalać na dziedziczenie lub domieszki? (biorąc pod uwagę, że użytkownik miałby przynajmniej interfejsy) Na przykład: Google Go, język systemowy, który zaszokował społeczność programistów, nie pozwalając na dziedziczenie.


title: Jak tworzyć modele widoków - Konstruktor, Metoda Fabryki, ...?

text: Próbuję pociągnąć opłatę za refaktoryzację naszych dość nadętych kontrolerów. Obecnie posiadamy BaseModel, z którego dziedziczą wszystkie nasze inne modele. BaseModel zawiera elementy wspólne dla wszystkich stron, takie jak tytuł strony, potrzebne pliki css, bieżący użytkownik. Każdy konstruktor ma prywatną metodę konstruowania określonego ViewModel (zasadniczo metoda fabryki) BaseModel.cs Class BaseModel { public string title {get; set;} public List<String> cssFiles {get;set;} // Więcej właściwości } HomeModel.cs Class HomeModel : BaseModel { public List<News> LatestNews {get;set;} } ExtendedHomeModel.cs Class ExtendedHomeModel : HomeModel { public List<RSSItem> Twitter {get;set;} } HomeController.cs public ActionResult Index (int userid) { return View(MakeExtendedHomeModel(userid)); } private ExtendedHomeModel MakeExtendedHomeModel(int userid) { var model = new ExtendedHomeModel(); InitialiseBaseModel(model, identyfikator użytkownika); InitialiseExtendedBaseModel(model); model.Twitter = DomainModel.Twitter.GetLatestItems(); } private HomeModel MakeHomeModel() { var model = new HomeModel(); InitialiseBaseModel(model); InitialiseHomeModel(model); } private void InitialiseHomeModel(HomeModel model) { model.LatestItems = DomainModel.GetLatestItems; } private void InitialiseBaseModel(BaseModel model, int userid) { model.PageTitle = "Home" model.UserId = userid } Tak więc moje pytanie brzmi: jaki jest najlepszy sposób inicjowania tego rodzaju modeli podstawowych? O ile wiem, co właściwie robi konstruktor, to metoda fabryczna, a przynajmniej powinna zostać usunięta z konstruktora. Jestem jednak przekonany, że można to zrobić w bardziej elegancki sposób. Główny problem, który widzę, polega na tym, że kod jest całkowicie zależny od wywoływania metod inicjalizacji we właściwej kolejności. Jednym z pomysłów, jaki miałem, jest użycie konstruktorów, przekazując niezbędne parametry w dół łańcucha, jeśli jest to konieczne. Czy są jakieś pułapki w tym podejściu, których nie widziałem? (Mając na uwadze, że zacząłem bolenie mvc dopiero sześć miesięcy temu). Czy są lepsze sposoby? Dziękuje za przeczytanie


title: Jak zorganizować gałęzie repozytoriów?

text: Staram się w sensowny sposób uporządkować gałęzie w moim repozytorium. Chciałbym, aby główna gałąź zawierała tylko „czyste” commity: funkcje, które są (w większości) kompletne, brak zbędnego kodu, który nie ma żadnej roli w aktualnej wersji aplikacji itp. Pomyślałem, że dla każdej funkcji powinienem mieć osobną gałąź deweloperska, a gdy ta funkcja zostanie ukończona, powinna zostać scalona z gałęzią główną. Czy to prawidłowy sposób na zorganizowanie repozytorium? Czy możesz polecić dobry schemat nazewnictwa gałęzi deweloperskich? Jakie inne sposoby na zorganizowanie repozytorium możesz polecić?


title: Kiedy stosować widoczność statyczną?

text: Nie mogę osiągnąć podstawowego zastosowania Widoczności statycznej. Moje pytanie brzmi, dlaczego użyli statycznej metody i właściwości w tym kodzie? class PassHash { // blowfish private static $algo = '$2a'; // parametr kosztu private static $cost = '$10'; // głównie do użytku wewnętrznego public static function unique_salt() { return substr(sha1(mt_rand()), 0, 22); } // to zostanie użyte do wygenerowania hash public static function hash($password) { return crypt($password, self::$algo . self::$cost . '$' .self::unique_salt()); } // będzie to użyte do porównania hasła z publiczną, statyczną funkcją hash check_password($hash, $password) { $full_salt = substr($hash, 0, 29); $new_hash = crypt($password, $full_salt); return ($hash == $nowy_hash); } }


title: OO statyczne słowo kluczowe PHP, czy powinienem go używać?

text: Piszę skrypt na fb i mam 3 obiekty, których będę używał we wszystkich klasach. Zastanawiam się, czy jest jakaś korzyść z używania słowa kluczowego `static`, z wyjątkiem tego, że nie muszę tworzyć instancji za każdym razem, gdy potrzebuję użyć metody/obiektu? Którą drogą powinienem iść, ze statycznym czy bez niego? Wiem, że to podstawa, ale jestem nowy w OOP i chcę nauczyć się używać go we właściwy sposób.


title: Jakie są największe problemy programistów podczas debugowania?

text: Zastanawiam się tylko, jaki jest największy problem, jaki programiści napotykają podczas debugowania? Przychodzą mi do głowy trzy odpowiedzi, ale nie jestem pewien, czy są poprawne: 1. **Kłopoty ze zlokalizowaniem błędu?** Jednak w większości przypadków ślady stosu awarii mogą dostarczyć wystarczającej ilości informacji na temat lokalizacji błędu. 2. **Kłopoty z ustaleniem przyczyny i naprawą błędu?** Ale jeśli potrafisz zlokalizować błąd, to prawdopodobnie masz ogólny pomysł, jak go naprawić. 3. **Kłopoty z zastosowaniem poprawki?** Prawdopodobnie niektóre podstępne błędy zmuszają programistów do wprowadzania zmian w wielu miejscach, łamiąc w ten sposób strukturę/projekt oryginalnego programu. Ale nie jestem pewien, czy to problem. To pytanie może być zbyt ogólne, ale będę szczęśliwy, jeśli otrzymam od Was jakieś uwagi. Ponadto, jeśli masz inne problemy z debugowaniem, zwróć uwagę. Dziękuję bardzo!


title: Zarządzanie zachowaniem aplikacji spoza domeny w CQRS

text: Oto scenariusz. Tworzę _QueueUnderflow_ , edytowaną przez społeczność witrynę pytań i odpowiedzi dla osób, które nie zaznajomiły się jeszcze z podstawami struktur danych. Moi użytkownicy nie lubią, gdy ludzie edytują swoje posty, więc ponieważ chcę wywołać jak najwięcej konfliktów, chcę wysyłać powiadomienia e-mail, gdy post jest edytowany przez użytkownika, aby mógł się zalogować i obrazić redaktora. Eksperymentuję z CQRS. Nie używam źródła zdarzeń i mam jeden magazyn danych, ale _am_ używam programów obsługi zdarzeń do radzenia sobie z trwałością wszelkich zmian stanu. W normalnej aplikacji N-Tier/CRUD może to być wywołane przez fasadę aplikacji lub warstwę usług. W mojej architekturze CQRS widzę kilka opcji: 1. **Obsługa zdarzeń:** Podoba mi się ten pomysł, ponieważ wydaje się, że wysłanie wiadomości e-mail z powiadomieniem jest problemem, który może leżeć w niezależnej części systemu, która tego chce nasłuchiwanie przez odpowiedni czas, aby wysłać wiadomość e-mail, a następnie ją wysłać, niewidoczną dla reszty systemu. Nie podoba mi się ten pomysł, ponieważ Greg Young (rozsądnie) wskazuje w swoich filmach, że gdybym _miał_ wprowadzić sourcing zdarzeń, spowodowałoby to wysyłanie tych samych e-maili z powiadomieniem potencjalnie wiele razy. 2. **Obsługa poleceń:** Jest to bardziej wyraźne podejście, które wciąż ma dla mnie sens; jednak wydaje się, że ogólny konsensus jest taki, że programy obsługi poleceń powinny służyć tylko do koordynowania obiektów domeny, a nie bezpośrednio wykonywać zachowanie. 3. **Domena:** Wygląda na to, że jest to po prostu błędne. Wysyłanie e-maili z powiadomieniami to troska aplikacji, a nie domeny, która zajmuje się przede wszystkim logiką biznesową. 4. **Warstwa prezentacji** (lub potencjalnie jakaś pośrednia fasada aplikacji, która po prostu przekazuje polecenie swojemu handlerowi i wykonuje inne działania specyficzne dla aplikacji, takie jak wysyłanie powiadomień). Pytanie brzmi – jaka część mojej architektury odpowiada za wysyłanie e-maili?


title: Problemy z obliczaniem złożoności Big-O

text: Jestem kompletnym początkującym Javą, dopiero w drugiej ćwiartce zajęć. Mam problem ze zrozumieniem naszego obecnego rozdziału o obliczaniu big-O dla metod. Pomyślałem więc, że miałem rację, mówiąc, że duże-O dla tych dwóch metod to po prostu O(N), ponieważ istnieje tylko jedna pętla, która przechodzi przez całą listę, ale najwyraźniej są to O(NlogN) lub O( logN). Naprawdę nie rozumiem dlaczego. Czy ktoś może mi pomóc zrozumieć? 1) public static int[] mystery1(int[] list) { int[] wynik = new int[2 * list.length]; for (int i = 0; i < lista.length; i++) { wynik[2 * i] = lista[i] / 2 + lista[i] % 2; wynik[2 * i + 1] = lista[i] / 2; } zwraca wynik; } 2) public static void mystery2(int[] list) { for (int i = 0; i < list.length / 2; i++) { int j = list.length – 1 – i; int temp = lista[i]; lista[i] = lista[j]; lista[j] = temp; } } To nie są zadania domowe, były na teście, który właśnie zrobiłem i żałośnie oblał, ponieważ były tylko 4 pytania, a te dwa były błędne. Chcę tylko zrozumieć, dlaczego te dwa nie są złożonością O(N) (profesor nie poda odpowiedzi, ponieważ ktoś jeszcze nie zrobił testu). Te pytania zostały wzięte wprost z książki do testu... dlatego byłam pewna, że mam rację, skoro już je zrobiłam. Był to test wielokrotnego wyboru, a jedynymi opcjami były „a)O(1) b)O(N) c)O(logN) d)O(NlogN)”.


title: zasady postępowania z zestawem checkboxów, radio buttonów lub pól formularza

text: Zastanawiałem się nad aplikacjami, które mają zestaw pól wyboru lub przycisków radiowych, a nawet kolekcje pól formularzy w swoim interfejsie użytkownika. W tej chwili zajmuję się wszystkimi wyborami osobno, ale oczywiście bardzo szybko staje się to kompletny bałagan. Musi być ustalony sposób radzenia sobie z tym, o którym nie wiem. _Jeżeli pole a nie jest zaznaczone, to pola od d do e są włączone_ itd. itd. Jak mam się do tego podejść? Oczywiście nie w interfejsie użytkownika, to na pewno. Chciałbym usłyszeć kilka spostrzeżeń i najlepszych praktyk, a także potencjalne pułapki. (BTW: Oznaczyłem ten „silnik reguł”, ponieważ nie mam pojęcia, co to oznaczyć. Możesz edytować pytanie, zmienić tag i usunąć tę linię.)


title: Możliwość ciągłej dostawy z mieszanką platform programistycznych

text: Jakie są główne przeszkody (i potencjalne rozwiązania, jeśli są znane) we wdrażaniu rozwoju oprogramowania „ciągłego dostarczania”, gdy aplikacja opiera się na różnych językach programowania lub modułach… zwłaszcza gdy nie istnieją te same pakiety do kontroli wersji i/lub zautomatyzowanego testowania dla tych różnych platform? Na przykład **aplikacja internetowa Java** wdrożona i działająca na hoście **Linux**, komunikująca się z zapleczem bazy danych **DB2** za pośrednictwem **JDBC** , z okazjonalnymi wywołaniami procedury, które zawijają programy **RPG**, **COBOL** lub **C** na tym samym zapleczu? Co jeśli kod tego wszystkiego nie może być zawarty w **tym samym systemie kontroli wersji/kontroli źródeł**? **Czy w tej sytuacji można dojść do iluzorycznego „wyzwalania wciskanego przycisku”? A może musisz mieć WSZYSTKO w TYM SAMYM VCS?** Dodatkowo, jak zarządzać tworzeniem/modyfikacją schematu bazy danych i tzw. wartościami kontrolnymi soft-code w bazie danych? **Czy istnieje mniej lub bardziej „kanoniczna” opublikowana praca na temat tego typu rzeczy?**


title: Wymagania systemowe — użycie spójników

text: Natknąłem się na wiele blogów i książek, w których stwierdza się, że wymóg systemowy nie powinien zawierać spójników typu „i”. Jednak w rzeczywistości często spotykam się ze scenariuszem, w którym wymóg jest spełniony, gdy zostanie spełniony określony zestaw warunków. Na przykład sklepikarz powinien sprzedawać alkohol tylko wtedy, gdy kupujący ma więcej niż 18 lat, posiada niezbędne dowody i nie ma żadnych problemów związanych z alkoholem. Wymaganie nie byłoby kompletne, gdybym podzielił je na kilka wymagań systemowych i nie mógłbym go wypełnić bez użycia „i”.


title: Co dzieje się podczas „ładowania” ekranów?

text: Pochodzę z AS3, JavaScript i podobnych „języków internetowych”, gdzie _loading_ oznacza, że kod jest pobierany z serwera i nie może działać niezawodnie, dopóki wystarczająca ilość nie zostanie pobrana na komputer użytkownika. Jednak co się dzieje podczas ekranu _ładowania_ w oprogramowaniu i grach, w których wszystkie informacje znajdują się już na komputerze użytkownika? (zwłaszcza teraz, gdy informacje mogą być przechowywane na dysku twardym „szybkim do odczytu i zapisu”, a nie na powolnych dyskietkach lub płytach CD) Czy różni się to od przerw w _ładowaniu_, które czasami mogą wystąpić w trakcie gry?


title: Czy rozważysz stanowisko Software Team Lead u poprzedniego pracodawcy?

text: Załóżmy, że opuściłeś poprzedniego pracodawcę około 3,5 roku temu, aby skorzystać z możliwości rozwoju, co jest moją główną motywacją do przeprowadzki. Jeśli obecnie w tej samej firmie zostanie otwarte stanowisko dla kierownika zespołu ds. oprogramowania, czy: 1. Aplikuj na to stanowisko, jeśli nadal masz wiele dobrych relacji 2. Jeśli chcesz złożyć podanie i porozmawiać z dyrektorem technicznym, kto zrobił wszystko, co mógł, aby cię zatrzymać, czy zadzwoniłbyś do niego, aby porozmawiać o ich potrzebach i zainteresowaniach? Jeśli nie, jak byś się do tego zabrał? Czy jako dyrektor techniczny rozważyłbyś tego kandydata na kierownika zespołu ds. oprogramowania, który opuścił cię 3 lata temu, pomimo wszystkiego, co próbowałeś zrobić, aby go zatrzymać, wiedząc, że ten facet ma tendencję do szukania możliwości rozwoju co 3-5 lat? Tak, ta osoba spełnia wszystkie wymagania i ma potencjał, by być dobrym liderem.


title: Jak podejść do projektowania programu w odniesieniu do struktur danych i algorytmów - czy istnieje odpowiednik procesu projektowania OO dla d.s.'s + algs?

text: Moje przeprosiny za prawdopodobnie najgorszy tekst napisany w moim życiu i wielkie podziękowania dla tych, którzy chcą to wszystko przebrnąć. Nie byłam (i nadal jestem) w stanie jasno wyrazić to, o co prosiłam, ponieważ z natury mojego pytania nie wiem, o co mi konkretnie chodzi. Zasadniczo mocno podejrzewam, że czegoś brakuje w mojej wiedzy o tworzeniu oprogramowania, ale ponieważ „nie wiem, czego nie wiem”, nie mogę określić, czego dokładnie szukam (i rzeczywiście nie jestem pewien, czy takie rzecz istnieje) - stąd przypuszczam, że proszę o jakiś kierunek w tej sprawie. Trochę pomyślałem, że jeśli profesjonalni programiści nie wiedzieli/nie używali czegoś takiego w procesie projektowania kodu - wtedy nie ma co wiedzieć w tym zakresie (i mogę przestać się martwić). Zasadniczo obawiam się czegoś podobnego do nauczenia się programowania, ale pozostawania nieświadomym tematu prawidłowego projektowania oprogramowania OO. Przestudiowałem standardowe struktury danych i algorytmy (do zakresu, jaki można znaleźć w typowych podręcznikach do studiów licencjackich), ale nie mogę oprzeć się wrażeniu, że powinno być coś więcej. Dlatego nie mogę oprzeć się wrażeniu, że nauczyłem się podstaw, ale nie uświadamiam sobie struktur danych i alg. odpowiednik projektu OO. Zasadniczo wyobrażam sobie, że w projektowaniu rozwiązania istnieje pewien „proces” (w kontekście programowania w d.s.s i alg. – tak jak w przypadku projektowania programowego oprogramowania do kodowania – uważam, że są one częścią ta sama całość w programowaniu), która informuje o tym, jak wykonać zadanie napisania „dobrego” kodu (w aspekcie d.s. i algs napisanego kodu programu). Obawiam się, że w przypadku braku znajomości takiego procesu/tematu byłbym niekompetentny jako absolwent-programista (raczej tak, jakbym rozważał nowego pracownika, gdyby jego kod okazał się niedoinformowany przez proces/zasady projektowania OO). Kod stworzony przez kogoś nie znającego zasad/procesów projektowania obiektowego uznałbym za „zły kod” – a tym samym za niekompetentny. W tej chwili obawiam się mojej wiedzy na temat d.s. + algi. strona kodowania stawia mnie w podobnej sytuacji. Czy zatem ktoś może mi powiedzieć, czego jeszcze powinienem być świadomy w tym zakresie? (Innym sposobem postawienia mojego pytania mogłoby być stwierdzenie: „Zasady i wzorce projektowania zorientowanego obiektowo są dla programowania, czym „...” są struktury danych i algorytmy”. Czy ktoś mógłby mi powiedzieć, co można skompletować to zdanie z, czy nie ma tu nic do rozważenia)


title: Gdzie jest zdefiniowany interfejs między kliknięciem przycisku a podnoszeniem zdarzenia?

text: Kiedy klikam przycisk, może być w aplikacjach Windows, aplikacjach internetowych itp. Ma pewną animację, aby rzeczywiście zobaczyć, jak został kliknięty, a zdarzenie jest wywoływane w tle. Mam wiedzę na temat zdarzeń i ich powiązania ze zdarzeniami kliknięcia przycisku, ale chciałem wiedzieć, jak działa ten mechanizm. Zawsze zakładałem, że jest wbudowany w systemy operacyjne.


title: Jak mogę licencjonować oprogramowanie na wolnej licencji?

text: Napisałem kilka modułów NodeJS (niektóre z nich są, moim skromnym zdaniem, naprawdę dobre). W zasadzie zapomniałem ustawić dla nich licencję. Chciałbym wybrać AGPL (Affero GPL). Jak mogę to zrobić? Czy mogę po prostu uciec z plikiem LICENSE w projekcie? A może potrzebuję wyłączenia odpowiedzialności licencyjnej w każdym pliku w projekcie? A co z CSS?


title: Jak mogę zacząć pisać kod?

text: Obecnie uczę się języka Java na studiach. Zauważyłem problem, który mam, kiedy zaczynam kodować, aby rozwiązać problem. Problem w tym, że nie wiem dokładnie od czego zacząć. Na przykład, jeśli staram się zastanowić nad pytaniem i sposobem zakodowania rozwiązania, zawsze mówię sobie „co z tym przypadkiem… i tym przypadkiem…” i nie wiem od czego zacząć. Więc moje pytanie do osób z doświadczeniem w programowaniu brzmi: od czego zacząć? * Czy najpierw myślisz o rozwiązaniu wszystkich przypadków, a potem zaczynasz pisać kod? * A może najpierw spróbujesz napisać kroki w swoim własnym języku, a potem pójdziesz i napiszesz kod? * A może idziesz do przodu od początku, zaczynasz pisać jakiś kod i jednocześnie myślisz o wszystkich opcjach i poprawianiu i zmienianiu tego, co napisałeś?


title: Dlaczego magiczne metody zostały zaimplementowane w C#?

text: W C# zacząłem widzieć wszystkie te magiczne metody wyskakujące, bez tworzenia kopii zapasowej przez interfejs. Dlaczego Anders Hejlsbjerg (lub ktokolwiek obecnie odpowiedzialny za rozwój C#) wybrał to? Pozwól mi wyjaśnić. Poprzednio w C#, jeśli obiekt implementował interfejs `IEnumerable`, byłby automatycznie iterowalny przez pętlę `foreach`. Ma to dla mnie sens, ponieważ jest on wspierany przez interfejs, a jeśli miałbym mieć własną funkcję `Iterator` wewnątrz iterowanej klasy, mógłbym to zrobić bez martwienia się, że będzie to magicznie oznaczać coś innego. Teraz najwyraźniej (nie wiem kiedy) te interfejsy nie są już potrzebne. Po prostu musi mieć odpowiednie konwersje nazw. Innym przykładem jest uczynienie dowolnego obiektu oczekiwanym przez zastosowanie metody o nazwie _dokładnie_ `GetAwaiter`, która ma kilka określonych właściwości. Dlaczego nie utworzyć interfejsu, takiego jak w przypadku `IEnumerable` lub `INotifyPropertyChanged`, aby statycznie utworzyć kopię zapasową tej „magii”? Więcej szczegółów na ten temat tutaj: http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/ Jakie są plusy i minusy magicznych metod i czy jest gdziekolwiek online, gdzie mogę znaleźć coś, dlaczego te decyzje zostały podjęte?


title: Klient nie zapłaci po zakończeniu projektu oprogramowania

text: Niedawno rzuciłem uniwersytet i był to jeden z moich pierwszych projektów freelancerów - pierwszy, który stał się koszmarem. Projekt polegał na zbudowaniu wysoce niestandardowego systemu e-commerce dla restauracji. Jednak jako niedoświadczeni, naiwni i głupi, mieliśmy umowę ustną, a nie pisemną. Klient obecnie potrąca wynagrodzenie z uwagi na to, że nie ukończyłem projektu. Problem w tym, że to, na co zgodziliśmy się w dniu rozpoczęcia projektu, jest teraz tylko **cieniem** tego, czym projekt się właściwie stał. Łaskawie dodałem do systemu wiele modułów i funkcji za darmo, a on nie przestanie dodawać funkcji, mówiąc, że projekt nie jest kompletny (nawet jeśli wszystkie funkcje z początku projektu są obecne, a potem trochę). Myślę, że jego głównym uzasadnieniem jest to, że jego oryginalny pomysł nie pasował do jego biznesu, więc chce go ciągle zmieniać i że moim obowiązkiem jest, aby to zadziałało. Co gorsza, klient odmówił mi podania budżetu na początku projektu, nawet po tym, jak kilka razy poprosiłam go w twarz. Więc głupio zdecydowałem się dać mu **ogromny** rabat mając nadzieję, że zgodzi się na to po zakończeniu projektu, bo na początku nie będzie mówił o cenie. Jednak po otrzymaniu faktury stwierdził, że jest „za droga”, co mnie zszokowało i nie mogłem spać przez kilka dni. Btw to tylko kilkaset dolarów za złożony, niestandardowy system e-commerce. Tak, wiem, że byłem głupi, ale czy w ogóle mam jakąś podstawę prawną? Czy jest coś, co mogę zrobić w sądzie? A może w moim najlepszym interesie jest uwolnienie klienta, nie robienie dla niego nic więcej i liczenie moich błogosławieństw?


title: Promowanie ekologii i/lub zrównoważonego rozwoju jako programista

text: Pozornie dziwne pytanie, ale oto ono. Powiedzmy, że potencjalny klient prosi o poszanowanie pewnego poziomu ekologii i zrównoważonego rozwoju, zanim rozważy Twoją firmę przy projekcie strony internetowej. Jak byś podszedł do spełnienia tego wymogu?


title: Kariera w robotyce

text: Potrzebuję porady, jak dostać pracę w robotyce. Dostałem odmowę, gdy złożyłem podanie w IRobot lub jakiejś firmie związanej z robotyką. Jestem studentem zagranicznym. Jestem magistrem sztucznej inteligencji i licencjatem inżynierii elektrycznej i elektronicznej. Praca magisterska opiera się na wykorzystaniu wizji maszynowej w rozwiązywaniu problemu morskiego. Zrobiłem kilka robotów. Dwóch z nich to: Hexapod Walker i robot ratowniczy. Czuję się komfortowo z C, Prologiem i MATLABem. Czy ktoś może mi zasugerować, gdzie robię źle? Chcę rozwijać karierę w robotyce.


title: Implementacja szablonów XML w aplikacjach asp.net mvc i asp.net?

text: Open Google Blogger używa szablonów XML dla blogów. Chcę zaimplementować funkcje tego samego rodzaju w moich aplikacjach asp.net mvc i asp.net. Możemy używać stron wzorcowych i motywów w aplikacjach asp.net, ale muszę używać szablonów XML takich samych jak Google Blogger. To pytanie jest kontynuacją mojej poprzedniej dyskusji: tekst linku


title: Kiedy powinieneś nazywać siebie starszym programistą?

text: > **Możliwy duplikat:** > Jaka jest różnica między programistami Entry Level/Jr/Sr? Jestem ciekaw, co oznacza senior developer, ponieważ najwyraźniej definicja nie oznacza tego, co myślałem, że będzie. Ciągle widuję tych nastolatków w wieku 22-23 lat, którzy nazywają siebie starszymi programistami X lub starszymi programistami Y. Dla mnie senior musi mieć jakieś 10 lat doświadczenia w programowaniu, żeby nazywać siebie „seniorem”. Widziałem tu wiele takich nastolatków (stąd pytanie). Czy się mylę? Czemu?


title: Co może zrobić starszy programista, czego nie może zrobić młodszy?

text: > **Możliwy duplikat:** > Kiedy powinieneś nazywać siebie starszym programistą? Często widzę oferty dla starszych programistów, a zasada wydaje się być taka, że aby zostać jednym, trzeba przepracować trzy lata. Czas trwania niewiele znaczy, więc czego dokładnie oczekuje się od starszego programisty? Do czego powinien być zdolny? Jako dodatkowe pytanie, kiedy programista przestaje być uważany za juniora?


title: Jaka jest różnica między programistami Entry Level/Jr/Sr?

text: Poza tytułem i wynagrodzeniem, jaka jest różnica? Jakie mają różne obowiązki, na ile mają wiedzę/doświadczenie? Zasadniczo, czego byś użył, aby określić, kim ty (lub ktoś inny) powinieneś być?


title: Jaka jest różnica między programistami młodszymi, średnimi i starszymi?

text: > **Możliwy duplikat:** > Jaka jest różnica między programistami Entry Level/Jr/Sr? Wydaje się, że istnieją trzy popularne poziomy kwalifikacji programisty java: * Junior * Middle * Senior Co sprawia, że programista jest „młodszy”, „średni” lub „senior”? Czy to oznacza, że programista ma określoną ilość certyfikatów lub wiedzy zawodowej? Jak firmy IT decydują, jaki tytuł nadać programiście?


title: Jak długo egzamin certyfikacyjny SM pozostanie w mojej transkrypcji?

text: Wydaje mi się, że pamiętam, jak czytałem/słyszałem, że egzamin zostanie usunięty z twojego zapisu po roku, jeśli nie przystąpiłeś do dalszych egzaminów w celu uzyskania określonego certyfikatu. Jeśli to ma znaczenie, test, o którym mowa, to **70-536** : Microsoft .NET Framework - Application Development Foundation **Edytuj** : Jeśli nie jest jasne, egzamin, który miałem w przeszłości był starszym egzaminem - dla .Net 1.0 lub 1.1. Mam teraz egzamin 70-536 na moim transkrypcie - chciałem się tylko upewnić, że mam dużo czasu na znalezienie motywacji do ukończenia certyfikatu.


title: Propozycje architektury

text: Piszę małą aplikację, która zresetuje całe „środowisko” składające się z różnych maszyn i aplikacji. Nazwy maszyn są dodawane poprzez plik konfiguracyjny - ten jest odczytywany, odpowiednie usługi są zatrzymywane, a pliki logów usuwane. Moim problemem nie jest to, jak to zrobić (już działa) nieco bardziej elegancko, ale z powodu braku doświadczenia jestem ciekawa odpowiedniej architektury. W tej chwili czuję, że to bałagan, duże bloki kodu, w 5 różnych klasach (usuwanie, zarządzanie procesami itp.) i chciałbym udostępnić to innym, aby mogli je ulepszyć. Na przykład myślałem o podzieleniu klasy DeleteLog na oddzielne klasy przez maszynę, dodaniu i interfejsie oraz zaprogramowaniu każdej z nich do interfejsu (Wzorzec Strategii?). Rozważałem również użycie delegatów (do których nie mam pojęcia, ale zawsze jest to dobry czas na naukę).


title: Najlepszy sposób na modelowanie singletona w relacyjnej bazie danych

text: Projektując schemat relacyjnej bazy danych dla aplikacji internetowych, często spotykam się z przypadkiem, w którym kończę tworzenie tabeli tylko po to, aby zawierała jeden wiersz i tylko jeden wiersz. Wydaje mi się, że to zły sposób na zaprojektowanie tego, ale nie mogę wymyślić niczego znacznie lepszego, lub jest to oczywiście „właściwy sposób, aby to zrobić”. Najnowszym przykładem jest witryna, która pozwala użytkownikom ręcznie kontrolować zawartość strony głównej. Cóż, jest tylko jedna strona główna. Stworzyłem tabelę, która zawierała wszystkie niezbędne pola do zbudowania strony głównej, takie jak pole tekstowe dla obszaru zawierającego tekst opisowy. Pole do przechowywania nazwy dużego pliku obrazu. Niektóre klucze obce, które wskazują artykuły, które będą prezentowane na stronie głównej itp. Działa, ale źle jest mieć tabelę z tylko jednym wierszem. W przeszłości próbowałem wielu innych projektów, takich jak dopuszczanie wielu wierszy w tabeli na stronie głównej i wybieranie jednego losowo. Próbowałem dodać pole logiczne o nazwie „aktywne” i losowo wybrać jedną z aktywnych stron głównych. Próbowałem wymusić, aby w logice aplikacji był aktywny tylko jeden wiersz w danym momencie. Próbowałem nawet nie tworzyć tabeli na stronie głównej i mieć wszystkie inne elementy, takie jak artykuły, aby mieć pola logiczne o nazwach takich jak Feature_on_homepage. W większości przypadków mogłem zbudować stronę główną z garścią stałych w pliku ustawień. Główny problem z plikiem ustawień polega na tym, że znajduje się on pod kontrolą programisty. Ponieważ coś takiego jak zawartość strony głównej może być edytowane przez użytkownika, musi trafić do bazy danych. W wielu witrynach nie mam tego problemu, ponieważ mogę tworzyć takie rzeczy, jak strona główna, za pomocą zapytania, takiego jak wybór pięciu najnowszych artykułów. Ale kiedy mam strony, które są ręcznie wybierane według ścisłych wymagań, trudno jest je zamodelować w bazie danych. Ale wyobraź sobie, że masz tabelę zdjęć i tabelę artykułów. Wymagane jest, aby strona główna wyświetlała dokładnie pięć zdjęć, dokładnie trzy artykuły i dwa bloki dowolnego tekstu sterowanego ręcznie przez użytkownika. Jak właściwie zamodelować to w bazie danych? Poza tym mam ten problem z modelowaniem w wielu innych przypadkach, nie tylko na stronach głównych. To po prostu najprostszy i najogólniej stosowany przykład, jaki mogłem wymyślić.


title: Powód używania nagłówków i bibliotek mingw win32 z LLVM/Clang

text: Czy jest jakiś dobry powód (z wyjątkiem "GCC jest lepsze"), aby używać MinGW win32api/headers/libs z LLVM/Clang. Załóżmy, że w ciągu dwóch do trzech lat Clang dojrzał na tyle (w C++0x i wydajności), że jest konkurentem/zamiennikiem i ma przewagę nad MSVC, tak jak GCC na niektórych kontach. Dlaczego u licha miałby chcieć uniknąć korzystania z biblioteki MS i implementacji nagłówków API win32, które są dostępne bezpłatnie w postaci Windows SDK?


title: Oddzielanie kodu php i html

text: Jaka jest praktyka przemysłowa, jak oddzielić kod html i php w projekcie internetowym? Używanie echa do generowania html jest uważane za złe, ale jaki jest standardowy sposób osiągnięcia poszukiwanej separacji? Używasz silników szablonów, takich jak twig?


title: Kontrola wersji w systemie Windows Home Server

text: Jestem samotnym programistą i myślę teraz o kontroli wersji. Nie chcę specjalnie płacić za usługę online, jeśli nie muszę, więc myślałem o użyciu Windows Home Server jako lokalizacji do zarządzania wersjami. Czy ktoś to zrobił wcześniej? Czy są do tego wtyczki WHS (mogę znaleźć dowolne w oparciu o wyszukiwanie dużych G i duże B)? Jeśli nie, jakie są zalecenia dotyczące super prostego produktu po stronie serwera, który działa na x64 WinServer 2008? Wszystko, czego potrzebuję, to zatwierdzenie zmian mniej więcej raz dziennie i być może cofnięcie się do wcześniejszej wersji raz w miesiącu. W końcu mogę sprowadzić innego programistę, który jest zdalny, ale miałby dostęp do WHS z poświadczeniami. Narzędzia to VS 2010 i WHS Vail.


title: Architektura oprogramowania ASP.NET MVC 3 (C#)

text: Zaczynam od stosunkowo dużego i ambitnego projektu ASP.NET MVC 3 i właśnie zastanawiam się nad najlepszym sposobem na zorganizowanie mojego kodu. Projekt będzie w zasadzie ogólnym systemem zarządzania, który będzie w stanie wspierać każdy rodzaj systemu zarządzania, niezależnie od tego, czy będzie to system blogów, cms, system rezerwacji, wiki, fora, system zarządzania projektami itp., Każdy z nich jest tylko oddzielny „moduł”. Więcej na ten temat można przeczytać na moim blogu zamieszczonym tutaj: http://www.ryanzec.com/index.php/blog/details/8 (wybaczcie, styl strony jest do bani). Dla tych, którzy nie chcą czytać długiego wpisu na blogu, podstawową ideą jest to, że sam system podstawowy to nic innego jak system użytkowników z interfejsem administratora do zarządzania systemem użytkowników. Następnie po prostu dodajesz moduły, których potrzebujesz, a moduł, który będę tworzył, jest prostym wpisem na blogu, aby go przetestować, zanim przejdę do dużego modułu, jakim jest system zarządzania projektami. Teraz po prostu próbuję wymyślić najlepszy sposób na zorganizowanie tego, aby użytkownicy mogli łatwo dodawać własne moduły, ale ja łatwo aktualizowałem system podstawowy, nie martwiąc się, że użytkownik zmodyfikuje kod podstawowy. Myślę, że idealnym sposobem byłoby posiadanie kilku podstawowych projektów, których użytkownikowi nie wolno modyfikować, w przeciwnym razie system może stać się niestabilny, a przyszłe aktualizacje nie będą działać. Gdy użytkownik chce dodać własne moduły, doda po prostu nowy projekt (lub wiele projektów). Chodzi o to, że nie jestem pewien, czy można nawet używać wielu projektów z własnymi kontrolerami, szablonem widoku brzytwy, css, javascriptem itp. w jednej aplikacji internetowej. Idealnie, każdy moduł miałby własne szablony widoków brzytwy, css, javascript, pliki obrazów, a także potrzebowałby dostępu do niektórych podstawowych szablonów widoków brzytwy, css, javascript, plików graficznych, które byłyby w osobnym projekcie. Czy można mieć 1 aplikację internetową uruchamianą z kontrolerów, szablonów widoku brzytwy, css, javascript, plików graficznych, które są przechowywane w wielu projektach? Czy lepszym rozwiązaniem byłaby taka struktura, aby umożliwić użytkownikowi łatwe dodawanie modułu z koniecznością modyfikacji podstawowego kodu?


title: Czy jako zmienne rejestrowe mogą być przechowywane tylko liczby całkowite?

text: Jestem zdezorientowany: jaki typ danych możemy przechowywać w zmiennych rejestrowych? Myślę, że logicznie możemy przechowywać dowolny rodzaj danych jako zmienne rejestrowe, ponieważ są to zmienne, ale naprawdę jestem zdezorientowany. Próbowałem szukać w Internecie iw mojej książce. Nie mogłem znaleźć odpowiedzi. Przez książkę mam na myśli książkę o programowaniu ANSI C.


title: Jak mogę zarządzać zmianami między lokalnym plikiem konfiguracyjnym a zdalnym plikiem konfiguracyjnym w aplikacji mobilnej?

text: Mam aplikację z plikiem konfiguracyjnym, który jest przechowywany w pakiecie aplikacji. Ten plik konfiguracyjny przechowuje nazwy obrazów na zdalnym serwerze. Za każdym razem, gdy aplikacja jest uruchamiana, pobieram plik konfiguracyjny z serwera i sprawdzam, czy są jakieś zmiany lub aktualizacje. Jeśli są zmiany, iteruję po tablicy ustawień konfiguracyjnych i pobieram zmienione obrazy na iPhone'a użytkownika. Myślę, że najpierw wymienię wszystkie zmiany nazw w tablicy, a następnie zacznę wczytywać zmienione obrazy. Zastanawiam się jednak, czy istnieje lepsze podejście do rozwiązania tego problemu.


title: Podstawowy projekt warstwy dostępu do danych z wykorzystaniem wzorca DataMapper

text: Próbuję zrozumieć wzorzec DataMapper, implementując go samodzielnie dla jednego z moich obiektów domeny. Do tej pory mam: class MyDomainObject <atrybuty> <metody logiki biznesowej> class MyDomainObjectMapper zapisz aktualizacja usuń pobierz Teraz muszę uzyskać wiele `MyDomainObject`s. Mogą one być przechowywane w pamięci podręcznej (zapisując wiele połączeń do bazy danych). Mogą również istnieć warunki filtrowania. Gdzie według schematu idzie ta funkcjonalność? Nie jestem pewien, czy powinienem dodać metody do `MyDomainObjectMapper` czy utworzyć nową klasę.


title: Jak obsłużyć liczby całkowite statusu z bazy danych w kodzie obiektowym?

text: Rozważ tabelę bazy danych elementów, które mają flagę stanu reprezentowaną przez liczbę całkowitą. Niektóre stany mogą być następujące: 0 — Przeszłe przechowywanie; 1 - Bieżąca inwentaryzacja; 5 - Złom; 6 - Przeróbka; 15 - Przetwarzanie; Teraz chciałbym uniknąć przekazywania i odpytywania o „magiczne liczby” w moim kodzie, aw przeszłości używałem do tego słownika, ale to podejście wydaje się mniej eleganckie niż to, co mam nadzieję osiągnąć. W jaki sposób te typy flag stanu są pobierane z bazy danych w kodzie zorientowanym obiektowo? Czy z wyliczeniami, a jeśli tak, to w jaki sposób? A może lepiej utworzyć osobną tabelę z flagą stanu jako kluczem podstawowym?


title: Odwoływanie się do zewnętrznego javascriptu a hostowanie własnej kopii

text: Powiedz, że mam aplikację sieci web, która używa jQuery. Czy lepszą praktyką jest hostowanie niezbędnych plików javascript na moich własnych serwerach wraz z plikami mojej witryny internetowej, czy też odwoływanie się do nich w CDN jQuery (przykład: http://code.jquery.com/jquery-1.7.1.min.js) ? Widzę zalety dla obu stron: * Jeśli jest na moich serwerach, to jest jedna zewnętrzna zależność mniej; jeśli jQuery uległ awarii lub zmienił strukturę hostingu lub coś w tym rodzaju, moja aplikacja się zepsuje. Ale czuję, że to się nie zdarza często; musi być wiele małych witryn, które to robią, a zespół jQuery będzie chciał uniknąć ich zepsucia. * Jeśli jest na moich serwerach, jest to jedno zewnętrzne odniesienie mniej, które ktoś mógłby nazwać problemem bezpieczeństwa. * Jeśli jest odwoływane zewnętrznie, nie muszę się martwić o przepustowość do obsługi plików (chociaż wiem, że to niewiele). * Jeśli odwołuje się do niego zewnętrznie i wdrażam tę witrynę internetową na wielu serwerach, które muszą mieć własne kopie wszystkich plików, to muszę pamiętać o jednym pliku mniej, aby skopiować/zaktualizować.


title: Czy aplikacja internetowa jest usługą sieciową?

text: Według W3C: > Usługa sieciowa to system oprogramowania zaprojektowany do wspierania interoperacyjnej interakcji maszyna->maszyna w sieci. Posiada interfejs opisany w > formacie przetwarzalnym maszynowo. Aplikacja sieci Web jest zgodna z tą definicją. Jego interfejsem jest HTTP. Czy zatem aplikację internetową można nazwać usługą sieciową?


title: Visual Studio 2012 — Express vs Professional

text: Mam problem ze znalezieniem porównania funkcji między programem Visual Studio 2012 Express Edition a wersją profesjonalną. W tej chwili korzystam z wersji próbnej Professional, ale wkrótce się skończy, więc muszę podjąć decyzję, czy kupić pełną wersję. Oczywiście mogę po prostu najpierw wypróbować oba i sprawdzić, czy wersja Express jest odpowiednia, ale problem polega na tym, że w Visual Studio jest tak wiele funkcji, że może być naprawdę przydatna funkcja, której brakowało w edycji standardowej, której nie miałem nawet wiem, że istnieje! Albo zauważyłem, że zniknął dopiero później. Naprawdę mógłbym zrobić z listą porównawczą funkcji, taką jak ta dla wszystkich wydań innych niż Express tutaj. Szkoda, że strona nie zawiera edycji Express.


title: Która droga jest praktyczna dla doskonalenia swoich umiejętności z projektem pet?

text: O Twoim własnym projekcie, w jaki sposób daje Ci to większą poprawę? 1. Przeczytaj wysokiej jakości kod w tej samej domenie, zaimplementuj własny. 2. Napisz jeden projekt od podstaw swoją wyobraźnią. Chodzi mi o to, że nie jest praktyczne pisanie czegoś takiego jak biblioteka sieciowa lub silnik graficzny bez wiedzy o tym, co robili inni ludzie w tej samej domenie.


title: pytania do rozmowy kwalifikacyjnej) dla ankietera(ów) php i Oracle 9i

text: Zbliża się rozmowa o pracę w małym miejscu typu „rodzinna atmosfera”, działającym na php i Oracle 9i. Przygotowałem się najlepiej, jak potrafiłem, ale mam problemy z wymyślaniem pytań dla „nich”. Do tej pory mam > Jak zintegrować nowego programistę ze swoim przepływem pracy? Poza tym mam kilka pytań w puszkach dzięki uprzejmości Google. Z góry dziękuję i przepraszam, jeśli jest to zduplikowane pytanie.


title: Połącz trzy różne licencje na oprogramowanie typu open source

text: Obecnie pracuję nad aplikacją do śledzenia pieniędzy / tworzenia faktur, którą zamierzam udostępnić bezpłatnie. Aplikację można podzielić na trzy części: * Framework, ogólna, uniwersalna kolekcja klas (php/mySQL) * Sama aplikacja (php/javascript) * Projekt (obrazy) Próbuję znaleźć licencje, które pasują do trzech różnych celów: * Chcę wydać framework na licencji, która określa, że * Framework jest open-source, darmowy i nie można go sprzedawać * Jednak framework **może** być używany w produktach komercyjnych, o ile ponieważ żadne nazwiska autorów nie są usuwane z kodu, a źródło frameworka jest dostępne (link do mojego sourceforge na stronie about zrobi... Nawet małe, ukryte w podstronie lub w FAQ, o ile ludzie naprawdę szukają może to znaleźć). * Kod, który używa mojego frameworka _nie_ musi być open-source. Nie chcę powstrzymywać ludzi przed wydawaniem komercyjnych produktów, które nie są open-source. Zbyt wiele razy byłem przez to blokowany podczas pracy dla klienta, nie chcę narażać społeczności na te same problemy. Ponadto z pewnością sam będę wykorzystywał swój framework do projektów o zamkniętym kodzie źródłowym dla klientów. * Chcę wydać część aplikacji na wolnej licencji open-source, która nie zezwala na jakiekolwiek próby jej sprzedaży (ale zezwala na forki, o ile pozostają otwarte i bezpłatne) * Chcę wydać projekt (ikony, tła ) na wolnej licencji wyłącznie dla projektów niekomercyjnych. Dodatkowo, jeśli jest to możliwe (o ile taka licencja istnieje), chciałbym usunąć wszelkie ograniczenia, nawet dla produktów komercyjnych, o ile projekt jest prowadzony przez jednoosobowy (lub jednoosobowy) zespół. Innymi słowy, chciałbym, aby freelancerzy mogli w pełni cieszyć się pełną swobodą, ale mają pewne ograniczenia dla firm. Warto wspomnieć, że chociaż framework jest całkowicie niestandardowym kodem, aplikacja będzie zawierać część zewnętrzną, a mianowicie jquery i być może kilka innych komponentów javascript. Zdaję sobie sprawę, że to bardzo konkretne pytanie, które niekoniecznie pomaga społeczności koderów, tylko mnie, ale nie wiem, dokąd się zwrócić.


title: Zarządzanie projektami opartymi na kliencie Open Source?

text: Od dłuższego czasu szukałem internetowego, open-source'owego programu do zarządzania projektami, który mógłbym uruchomić na wynajętej przestrzeni w Dreamhost, aby śledzić projekty klientów. dotProject wydaje się fajny, ale nigdy nie wymyśliłem, jak tworzyć projekty, do których dostęp mają tylko określone osoby. Zwykle pracuję nad dwoma lub trzema projektami na raz dla różnych klientów i chciałbym mieć możliwość dostępu do ich projektów każdemu klientowi, ale nie innym. Przede wszystkim, czy ktoś może mi wskazać, jak to zrobić w dotProject, a obnażając to, czy ktoś może polecić rozwiązanie tego problemu typu open source?


title: Metody zwinne i bazy danych na początku projektu

text: Nowy w agile i nie jestem pewien, jak zacząć. Ideą jest tworzenie małych części projektu w sprintach. Jednak projekt, nad którym pracuję, wymaga bazy danych, a baza danych musi być prawie funkcjonalna, aby cokolwiek zrobić z projektem. Jak więc radzą sobie z tym projekty Agile, czy zaczynasz od stworzenia bazy danych? Jak byś to zrobił, na przykład używając Scrum, jak byś zrobił historyjki użytkownika i przetestował bazę danych. Czy wolałbyś zrobić części bazy danych w wątku, który również wymaga kodu. Załóżmy, że masz historię, która brzmi: „Jako użytkownik musisz być w stanie się zarejestrować...”, utworzysz tabelę użytkowników w bazie danych jako część tej historii? Jak agile może pomóc w projektowaniu bazy danych?


title: Nazewnictwo metod usług danych

text: Podczas pracy z ORM, które implementują wzorzec UnitOfWork (sesja NHibernate, ObjectContext Entity Framework itp.), istnieją dwa typy metod usług danych: te, które zapisują/zatwierdzają zmiany i te, które po prostu modyfikują właściwości modelu. Za jakiś czas trudno jest utrzymać ten bałagan: kiedy wywołujesz metodę, nie masz pewności, czy zapisze zmiany, czy nie (jeśli nie, musisz to robić w niektórych zewnętrznych metodach). Jak mogę rozwiązać ten problem? Jedyny pomysł, jaki mam, to specjalne nazewnictwo. Na przykład AddCustomer dla metody zapisu i FillForAddCustomer dla metody bez zapisu. Jakieś inne pomysły?