title: Czy jest duża różnica między językiem asemblera X86 w systemie Windows i Linux?

text: Jestem kompletnym początkującym w Assembly, a moim celem jest nauczenie się jak najwięcej z Assembly, aby pewnego dnia osiągnąć poziom ekspercki (wiem, że jestem teraz daleko, ale nigdy nie wiadomo). Moim jedynym problemem jest to, że mam dwie książki, które obie uczą asemblacji, jedną na Linuksie, a drugą na Windowsie. Są to Asembler Step by Step Jeffa Duntemanna (Linux) oraz Wprowadzenie do Asemblera 80x86 i Architektury Komputerowej (wersja dla Windows). Jeśli chcę jak najlepiej wykorzystać montaż, czy powinienem to zrobić na Linuksie i Windowsie? Czy składnia jest taka sama w systemie Windows i Linux, czy też będę się uczyć ponownie podczas nauki w innym systemie operacyjnym (co jest moim głównym zmartwieniem, chcę mieć możliwość korzystania z asemblera w systemie Windows i Linux).


title: Czy firmy w niektórych lokalizacjach (duże miasta vs małe miasta itp.) są bardziej skłonne do oferowania pracy w ramach umowy o pracę w ramach telepracy?

text: Jestem zainteresowany podjęciem większej liczby kontraktowych projektów programistycznych i chociaż fajnie byłoby znaleźć klientów tylko w mojej okolicy, chcę nieco rozszerzyć moje poszukiwania o inne obszary, w których firma może pozwolić mi na telepracę. Zastanawiam się, czy ktoś, kto ma z tym doświadczenie, zauważył, że czy firma byłaby bardziej otwarta na to w oparciu o to, czy znajduje się w większym mieście niż w mniejszym. Pomyślałbym, że firmy z mniejszych obszarów mogą mieć problem ze znalezieniem programistów do niektórych rzeczy i dlatego chętniej je zlecają, ale może się mylę. Każda informacja jest doceniana, staram się po prostu zorientować się, jak skoncentrować swoje wysiłki na nawiązywaniu kontaktów z ludźmi z różnych obszarów itp.


title: W branży nie ma miejsca dla zapalonych programistów?

text: Byłem na stażu w miejscu, w którym mój menedżer uważa, że jeśli jesteś w * _firmie produktowej_ , to zazwyczaj spędzasz czas na ulepszaniu produktu i czasami dodawaniu niektórych funkcji lub * _firmie usługowej_ , to robisz powtarzalne rzeczy, co sprawia, że Uważam, że przemysł nie jest miejscem dla kogoś, kto lubi tworzyć newsy i rozwiązywać trudne problemy. Czy zatem branża nie jest miejscem dla zapalonego programisty? Czy to się zmienia w zależności od kraju? * * * **Zaktualizuj, aby usunąć niektóre rzeczy, które mogą być rozumiane inaczej niż miały na myśli.** Poprawienie tutaj polega na upewnieniu się, że Twój produkt ma tabele z liczbą wierszy i kolumn, których chce klient itp. Dostosuj to do klienta . Nowa „funkcja” nie jest tu nową funkcjonalnością. Tylko zmiany na poziomie estetycznym. I to czasami. Nie jestem jednak pewien, co miał na myśli przez powtarzanie. Mówił, że za każdym razem trzeba tworzyć interfejs użytkownika. (Nie widzę tam jednak powtórzeń. Jeśli potrzebny jest inny interfejs użytkownika, należy zaprojektować _inny_ interfejs użytkownika. Jeśli możesz użyć starego, i tak nie musisz wiele robić.)


title: Czy to zły pomysł, aby używać mutable do wstępnie przydzielonych tymczasowych elementów tymczasowych?

text: Załóżmy, że mam następującą klasę C++: class MyFastMessageEncoder { public: MyFastMessageEncoder() : m_fieldEncoder(ENCODING_STYLE_DEFAULT) { } void set_encoding_style(const EncodingStyle EncoderStyle) { m_fieldEncoder.set_encoding_style(encoding) } Styl kodowania get_encoding_style() const { return m_fieldEncoder.get_encoding_style(); } void encode(const UnencodedFieldList &unencodedFieldList, Message &message { for (UnencodedFieldList::const_iterator it = unencodedFieldList.begin(), end = unencodedFieldList.end(); it != end; ++it) { m_set_raw_data(*) ; message.add_field(m_fieldEncoder.encode()); } } private: FieldEncoder m_fieldEncoder; }; Klasa `MyFastMessageEncoder` musi być niezwykle wydajna (kodowanie będzie wykonywane na dziesiątkach tysięcy wiadomości na sekundę), wymagany czas utworzenie instancji obiektu `FieldEncoder` jest kosztem nie do pominięcia, więc aby rozwiązać ten problem, zdefiniowałem obiekt `FieldEncoder` jako element klasy i zainicjowałem go w konstruktorze tylko raz. Moim problemem jest to, że `FieldEncoder:: SetRawData()` jest metodą niestałą, co oznacza, że metoda `MyFastMessageEncoder::encode` również musi być niestała._Jednak_ , gdybym miał obiekt FieldEncoder tymczasowy wewnątrz metody, `MyFastMessageEncoder::encode` może być oznaczony jako const. Oznacza to, że każdy obiekt, który wywołuje `MyFastMessageEncoder::encode` również nie jest stały, co (dla mnie) po prostu zaczyna rujnować poprawność stałej programu. Teraz rozumiem, jak działa słowo kluczowe `mutable` i jak mogę go użyć do rozwiązania tego problemu, ale moje pytanie brzmi: **Czy byłoby to uznane za złą formę, ponieważ wewnętrzne elementy obiektu są technicznie modyfikowane?* * Inne uwagi: * Bezpieczeństwo wątków nie jest problemem, jest gwarantowane tylko w jednym wątku (chociaż `MyFastMessageEncoder` może być tworzony w wielu wątkach) * Metoda `set_raw_data` nie wpływa na klasę `FieldEncoder` poza metodą `MyFastMessageEncoder::encode`. Wszelkie ustawione dane są usuwane lub nadpisywane przy następnym wywołaniu metody `set_raw_data`.


title: Ile mogę zapłacić za tę małą pracę?

text: Zacząłem pracować jako freelancer. Dostałem pierwszą pracę polegającą na stworzeniu zestawu raportów. Zespół biznesowy dostarczył mi przykładowe raporty, a także kilka przykładowych kodów. Moje zadanie polega na przeszukiwaniu bazy danych i generowaniu danych wyjściowych w formacie pdf za pomocą iText. Istnieje około 25 takich raportów o różnej złożoności. Nie jestem pewien, ile je naładować. Czy ktoś może mi w tym pomóc?


title: Jak mogę przejść do pracy przy użyciu stosu Microsoft?

text: Ukończyłem uniwersytet z tytułem informatyki (BSc), mając po drodze trochę C, C++, Java, Python i Oracle. Pracowałam jako freelancer, kiedy byłam na uniwersytecie, a po ukończeniu studiów przeniosłam to do pracy na pełen etat, a już od roku pracuję na pełny etat. PHP nie jest tym, co chcę robić i myślę, że ogranicza moje możliwości, im dłużej pozostaję na tej ścieżce. Nie jest to język, którego lubię używać na co dzień, a chciałbym pracować w większej organizacji, gdzie wydaje się, że PHP nie ma większego zastosowania. Chcę pozostać w tworzeniu sieci Web i wydaje się, że dla stosu Microsoft jest mnóstwo zadań: C#, SQL Server i ASP.NET MVC. Ale poza pół semestrem pisania w języku C++ w Visual Studio, nie mam doświadczenia z technologią Microsoftu. Od czego zacząć przejście do uzyskania pracy w sklepie Microsoft? Czy są jakieś konkretne certyfikaty, na których powinienem się skupić, lub kursy uniwersyteckie, na których powinienem brać udział? Czego szukają pracodawcy lub rekruterzy? Co mogę zrobić poza tworzeniem projektu zwierzaka w wolnym czasie?


title: W jaki sposób obiekty pasują do nowoczesnego stylu C++ (stl, policy-classes,functional)?

text: Jestem trochę zdezorientowany, więc pytanie jest trochę mylące. TL;dr: jak mieszać STL i OOP? Od komentarza do Najlepszego przeglądu do nowoczesnych paradygmatów C++? i http://www.boost.org/community/generic_programming.html nie ma wiele o programowaniu obiektowym. (wytyczne dotyczące doładowania wspominają o generatorach obiektów). Planując program, wydaje się, że STL i obiekty powinny dobrze do siebie pasować. Myślisz o algorytmie i o tym, jak robić rzeczy, a następnie myślisz o tym, z czym chcesz pracować i jakie mają właściwości/cechy. Wyrażasz te rzeczy w postaci krotek i kontenerów i stosujesz do nich algorytmy. Z mojego rozumienia, to jest styl myślenia STL. Tutaj wkraczają obiekty. Są to rzeczy, z którymi się robisz, które zawierają dane, algorytmy zmieniające te dane i interfejsy. Ale to pokrywa się z ideą stl, w której oddziela się dane i algorytmy. W OO łączysz dane i algorytmy, a w STL je rozdzielasz. Chociaż matematycznie i ogólnie STL ma więcej sensu (kiedy możesz zastosować algorytm do czegokolwiek), łatwiej jest myśleć pojęciowo w stylu OO, gdy masz wiele różnych obiektów i algorytmów – uzyskujesz lepszą organizację. Na przykład zwolennicy stylu qt opowiadają się za używaniem minimalnych i ortogonalnych interfejsów specyficznych dla klasy w przeciwieństwie do ogólnych algorytmów. Powiedziałem konkretne, ponieważ ich obiekty są różne i proszą o minimalne interfejsy, co oznacza, że obiekty nie będą współdzielić tych samych interfejsów. Więc pytanie brzmi: "czy możesz uciec z STL we współczesnym C++, czy też powinieneś używać obiektów? a jeśli musisz używać obiektów, to jak?" Inne istotne pytania w Stack Overflow: * Co jest takiego wspaniałego w STL? * C++: alternatywa dla STL i Boost?


title: Wywoływanie funkcji blokujących i wykonywanie kodu, gdy wynik jest gotowy, ale bez wywołań zwrotnych

text: Projektuję aplikację, która ma pewne możliwości tworzenia skryptów: aplikacja hosta może wywoływać skrypty w celu wykonania pewnych operacji, gdy wystąpią pewne zdarzenia. Aby było łatwe i przyjazne dla początkujących, do wszystkiego jest jeden wątek: oznacza to, że jeśli skrypt wywoła coś blokującego, cała aplikacja się zawiesza. Tak więc albo używam wywołań zwrotnych, albo odpytywania, aby czekać na wynik wywołania blokującego, który będzie gotowy. Co jest brzydkie w tym podejściu, to fakt, że funkcja, która wywołuje funkcję blokującą, musi zostać podzielona na części. Do odpytywania chciałbym mieć funkcję zrób coś część 1 blabla uruchom coś długiego harmonogram zrób coś część 2 zakończ funkcję zrób coś część 2 jeśli wynik nie jest gotowy to zaplanuj zrób coś część 2 użyj wyniku blabla koniec Oddzwonienia są tylko nieznacznie lepsze: funkcja zrób coś blabla uruchom coś długiego, kiedy skończysz callback call end funkcja callback użyj wyniku blabla end Jeśli masz kilka wywołań blokujących, a każde z nich zależy od wyniku poprzedniego, kod staje się brzydszy i gorszy. To, czego szukam, to jakiś język programowania, który ma wbudowaną obsługę tego wzorca. Coś w stylu function zrobić coś blabla uruchamia coś długiego po zakończeniu: //fikcyjne słowo kluczowe użyj wyniku blabla .... //coraz więcej wywołań blokujących się kończy Oczywiście, jeśli są lepsze rozwiązania, z przyjemnością wysłucham.


title: Jak mogę powiedzieć, że język programowania kompiluje się do innych języków?

text: Jak mogę powiedzieć po angielsku, że język programowania można skompilować do innych języków programowania? Przykładem może być Haxe. Na stronie język opisany jest jako „Multiplatform”: > Multiplatform: Haxe można skompilować na wszystkie popularne platformy programistyczne > z jego szybkim kompilatorem – JavaScript, Flash, NekoVM, PHP, C++, C# i Java > (wkrótce) ale multiplatforma może być źle rozumiane jako platformy sprzętowe lub programowe (win, mac, linux). Więc jakie jest najbardziej odpowiednie słowo opisujące tę umiejętność?


title: Stylizacja kodu XAML

text: > **Possible Duplicate:** > Jaka jest zalecana konwencja nazewnictwa kontrolek dla znaczników XAML? Ponieważ stare odpowiedzi już nie obowiązują, ponieważ Grupy dyskusyjne Google już nie istnieją, szukam innych zasobów na ten temat. Zwykle robię to w ten sposób * Lokalizacja (gdzie umieszczam kontrolkę) * Spójrz (jak wygląda obok swojej pozycji) * Zachowanie (inne wiązania, takie jak wydawanie poleceń itp.) I to działało dla mnie dobrze, ale nadal zastanawiałem się, czy istnieje aktualny standard, a nawet zalecane wytyczne, których mógłbym przestrzegać.


title: Podsumowanie konwencji nazewnictwa języka C# (oficjalnych konwencji firmy Microsoft)

text: Walczę z konwencjami nazewnictwa w C# nie wiem kiedy użyć PascalCase czy camelCase. Przeczytałem konwencję nazewnictwa Microsoftu, ale zgubiłem się tam http://msdn.microsoft.com/en-us/library/ms229045(v=vs.110).aspx O ile wiem, to jest poprawne: public int Number ; prywatny numer int; public void Metoda(); prywatna metoda void(); int number;//dla dowolnej zmiennej lokalnej Ale w kontekście powyższego, jak nazwać składniki w XAML: `x:Name="Button"` lub `x:Name="button"`. Wydaje się, że to pole prywatne, więc powinienem używać camelCase, ale z drugiej strony wszędzie na przykładach widzę PascalCase dla `x:Name` nie pytam o czyjeś przyzwyczajenia, ale o ortodoksyjny/oficjalny/C# styl guru.


title: Projekt programu z wieloma zestawami danych, algorytmami i wynikami

text: Mam pytanie dotyczące projektu mojego oprogramowania. Istnieją cztery różne zestawy danych i trzy kolejne algorytmy działające na zestawach danych i wynikach z poprzednich przebiegów algorytmu. Niech D1 - D4 będzie zbiorem zbiorów danych, A1 - A3 zbiorem algorytmów, a R1 - R3 zbiorem wyników odpowiednich algorytmów. A1 używa zestawów danych D1, D2 i D3 i musi działać na n różnych parametrach. A2 używa zestawów danych D1 i D3 oraz R1_1 - R1_n. A3 używa zestawów danych D1, D2 i D4 oraz R2. D1 D1 D1 D2 D3 D2 D3 D4 | | | v v v n*A1 A2 A3 _ _ | /| | /| | v / v / v R1_1 R2 R3 ... R1_n Każdy z wyników R1_1 - R1_n, R2 i R3 powinien mieć pewną funkcjonalność wyjściową. Więc moje pytanie brzmi jak zorganizować program i jego zajęcia. Myślę, że chciałbym utworzyć osobne klasy dla każdego z D1 - D4, A1 - A3 i R1 - R3 i nadać atrybuty obiektom danych i wynikowym obiektom algorytmu? Czy istnieją powody za lub przeciw tworzeniu n obiektów W1_1 - W1_n zamiast jednego obiektu W1 zawierającego tablicę n wyników? Czy klasy danych powinny zawierać własne odpowiednie funkcje „readFromFile”, czy też lepiej byłoby mieć globalną klasę narzędziową, która odczytuje wszystkie dane z pliku i generuje obiekty danych? To samo dotyczy funkcji wyjściowych, czy powinny one być umieszczone w każdej z klas wynikowych, czy też powinny być zorganizowane globalnie? Z poważaniem!


title: Systemy zarządzania zależnościami .NET

text: Mam kilka projektów .NET, które zaczynają się na tyle duże, że zasługują na przyjrzenie się rozwiązaniom do zarządzania zależnościami, więc nie musimy kopiować plików binarnych z jednego projektu do drugiego. Oto co znalazłem do tej pory: * NPanday bazuje na porcie Maven. Nie mogę powiedzieć, jak ostatnio pracowano nad tym, ale ostatnie wydanie miało miejsce w maju 2011 r. * Wygląda na to, że NuGet jest aktywnie rozwijany i wydaje się, że ma wsparcie bezpośrednio od Microsoftu. Niektórzy skarżyli się, że „rozwiązuje tylko zależności”, ale nie wiem, czym jeszcze powinien się zająć, ani czy od tego momentu dodał więcej funkcji. Wydaje się, że ostatnio dodano możliwość importowania plików binarnych w ramach procesu budowania, więc nie musimy zatwierdzać ich w naszych repozytoriach. * Wygląda na to, że Refix nadal jest w wersji beta, po tym, jak nie zwracano na niego uwagi od września 2011 r. Czy ktoś, kto ostatnio miał doświadczenie w korzystaniu z któregokolwiek z tych narzędzi do zarządzania zależnościami (lub innych, które działają dobrze) podzieliłby się twoim doświadczeniem? Czy NuGet jest wystarczająco dojrzały, aby używać go do zarządzania zależnościami? Jeśli nie, to czego mu brakuje?


title: Dlaczego w MVC model nie może utworzyć widoku?

text: Mam aplikację internetową napisaną w Perlu z kontrolerem, kilkoma "widokami" i kilkoma "Modelami". Każdy „Model” odpowiada jednemu „Widokowi”. Kontroler (jeden plik) tworzy obiekt Model odpowiadający każdemu widokowi (widok jest argumentem CGI), a następnie pobiera widok z właśnie utworzonego modułu. Rzeczywiście, powinno to być złe, ale czy możesz się o to trochę więcej spierać. Mój pierwszy pomysł był taki, że skoro obiekt „Model” zależy od „widoku”, to „model” jest w rzeczywistości widokiem. Ale również fakt, że WSZYSTKIE parametry cgi są przekazywane do Modelu, powoduje, że „Model” nie staje się prawdziwym widokiem, ale traci wszelkie zainteresowanie, ponieważ jest związany tylko z bieżącą implementacją aplikacji internetowych. Innymi słowy, że „Model” zachowuje model, ale traci jego „kompleksowość” („Model” nie jest łatwo zrozumiały). Jestem całkiem nowy w analizie projektów, więc proszę nie bądź zbyt surowy. Dlaczego jest tak źle? Zrobiłem prototyp z głównymi strukturami, które zrozumiałem dla tej aplikacji internetowej, możliwie najkrótszymi. #Model.pm pakiet Model; import { # wymaga to atrybutu o nazwie "view" # a to wymaga argumentu, który jest parametrami cgi } ... #View1.pm pakiet View1; ... #Model1.pm pakiet ModelView1 ; Model podstawowy; użyj Widok1; sub nowy { moja $klasa = przesunięcie; mój $arg = przesunięcie; Model::DoCoś($arg); $self->view = nowy Widok1($arg); ... } #controller.cgi mój $model = 0; ... $model = nowy Model1( cgi_param => params() ); #jest tu kilka modeli ... print $model->get_view()->get_html();


title: Przechowywanie i publikowanie oparte na Git, porady dotyczące infrastruktury

text: Chciałem uzyskać poradę na temat przeniesienia systemu do „chmury”… w szczególności chcę przenieść się do niektórych usług zarządzanych Windows Azure, ponieważ w tej chwili zarządzam maszyną wirtualną. Zasadniczo system działa na niektórych danych przechowywanych w repozytorium git na github. Opiszę obecną architekturę: Aktualny system (wszystkie hostowane na jednym serwerze): * GitHub - skonfigurowany z webhookiem wskazującym na... * Aplikacja ASP.NET MVC - do przyjęcia webhooka z git. Wysyła wiadomość do... * Azure Service Bus Queue — która jest opróżniana przez... * Usługa Windows — pobiera wiadomość z kolejki i... * Pobiera najnowsze dane z repozytorium git (przy użyciu GitLib2Sharp) do dysk lokalny i wreszcie ... * Działa na danych w git, tworząc statyczną witrynę HTML hostowaną/obsługiwaną przez IIS. System działa naprawdę dobrze, właściwie… ale chciałbym wyjść z biznesu zarządzania maszyną wirtualną i przejść do korzystania z kombinacji ról webowych i roboczych platformy Azure. Ale ponieważ system tak bardzo opiera się na repozytorium git na lokalnym systemie plików, trudno mi wymyślić, jak zaprojektować architekturę w chmurze. Wiem, że możesz uzyskać dostęp do systemu plików, więc teoretycznie mógłbym po prostu pobrać repozytorium, jeśli nic nie ma na dysku ... ale wydajność/reakcja systemu zależy w pewnym stopniu od dostępności repozytorium i konieczności pobrania różnic, co jest stosunkowo szybki. W przeciwieństwie do okresowego pobierania całego (nieco dużego) repozytorium git, jeśli rola sieci lub pracownika została przetworzona lub coś takiego. Chciałabym więc porady, jak zaprojektować taki system :) Ostatecznie jedynym prawdziwym wymogiem jest możliwość obsługi treści HTML, które zostały utworzone z zawartości repozytorium git (w stosunkowo responsywny sposób, z publikacji perspektywy) ... jeśli coś pominąłem, możesz zadawać pytania wyjaśniające. Dziękuję!


title: Czy node.js dobrze nadaje się do przetwarzania w tle?

text: Powoli uczę się `node.js` i mam mały projekt, który chcę rozpocząć. Projekt będzie miał wiele procesów w tle (pobieranie danych z zewnętrznych stron, parsowanie plików CSV itp.). Dużym „wygraną” dla mnie i węzła jest fakt, że używa JavaScript zarówno dla klienta, jak i serwera. Na co dzień koduję w Javie i JavaScript, ale jestem też całkiem niezły w Ruby. Ale, jak powiedziałem, atrakcyjne wydaje się używanie wszędzie jednego języka i JS wydaje się pasować do tego. Jednak nie mam dużego doświadczenia w używaniu JS do uruchamiania zadań w tle. Ruby wydaje się być w tym świetny. I nie sprzeciwiam się jej używaniu. Więc jakie są twoje przemyślenia na temat przejścia na 100% JS w tym celu? Realizuję bardzo duże projekty wymagające niestandardowych rozwiązań. Zastanawiam się tylko, czy jest to warte wysiłku. A może powinienem po prostu trzymać się Ruby przy tego rodzaju obowiązkach? Opinie docenione. Dziękuję


title: Testowanie czarnej skrzynki czy białej skrzynki - co robisz najpierw?

text: W bardzo małym zespole, w którym testowanie czarnej i białej skrzynki jest wykonywane przez tę samą osobę, co tester powinien zrobić najpierw?


title: Jak decydować o cenie za projekt jako freelancer

text: Widziałem podobne pytanie na tej stronie SE, ale żadne nie zbliża się do pewnej odpowiedzi, a wiele z nich jest raczej subiektywnych. Dlatego biorę stronę internetową jako przykład, aby była bardziej obiektywna, abyś mógł zdecydować o cenie jej opracowania, którą powinienem podać za całą pracę. Chciałbym mieć konkretne liczby. W przeszłości opracowałem wiele projektów dla moich kolegów z klasy (informatyka i kilka .net), kiedy byłem na studiach i tam po prostu arbitralnie podałem cenę, którą wezmę w zależności od mojego nastroju i zdolności klienta do zapłaty.. zwykle waha się od Rs. 500 (około 10 USD) do Rs. 1500 (około 30 USD). Stworzyłem również kilka stron internetowych, ale było to open-source i bezpłatne. Ale tym razem pod wrażeniem mojej pracy mam klienta, który chce stworzyć stronę internetową podobną do tej: [ http://www.jeetle.in/ ]. Biorąc tę stronę jako przykład, powiedz mi, ile powinienem pobierać za kompletną pracę od projektu do wdrożenia bramki płatniczej (z wyłączeniem opłaty, którą poniesie dostawca bramki płatniczej). * * * Niewiele informacji, które warto rozważyć. Jestem jedynym programistą w tym projekcie, jeśli to ma jakiekolwiek znaczenie. I będę używać ASP.Net i MSSQL Express do przetwarzania po stronie serwera i jQuery na kliencie. Oferowany czas na rozwój to około 4 do 6 tygodni. * * * To tak, jakbym znał swoją pracę, ale nie ile jestem warta


title: Reguły nazewnictwa: standardy, zastrzeżone i od czego one zależą?

text: Chcę poznać zasady nazewnictwa (AlwaysCapitalize, _underscore, firstSmallLetter, etc...) dla każdej z przestrzeni nazw, klas, interfejsów, wyjątków, składowych danych, metod, zmiennych, etc... również chciałbym wiedzieć: * Czy to normy? * Czy różnią się w zależności od modyfikatorów dostępu? (publiczne, prywatne.....) * A co z formatami zarezerwowanymi dla kompilatora i biblioteki? * Czy są również względne w stosunku do języka, IDE lub frameworka? Wiem tylko, że te zasady istnieją, ale tak naprawdę nie znam żadnych. Każda pomoc byłaby mile widziana. * * * **EDYTUJ:** OK, jeśli pytanie jest naprawdę szerokie, to muszę zawęzić moje pytanie: Jakie są zasady nazewnictwa klas, interfejsów, składowych danych i metod w C# (i Javie, jeśli to możliwe). Ponadto, zainspirowany komentarzem Renesis, stworzyłem wiki, aby pisać Konwencje kodowania, oto link: http://codingconventions.referata.com/


title: Jak definiujesz, organizujesz i dokumentujesz swoje dane?

text: Nie krępuj się zasugerować lepszą nazwę lub sposób wyjaśnienia tego pytania - nie byłem do końca pewien, jak to nazwać. Sytuacja jest taka, która może po prostu znaleźć się pod nagłówkiem „być zorganizowanym”, ale często zdarza mi się przekazywać albo duże bąble danych, albo wiele mniejszych blobów podrzędnych (blob w nietechnicznym znaczeniu słowa =o), aby być używane w różnych częściach moich aplikacji internetowych. Na przykład budowanie małego menedżera zadań, który pozwala komuś na utworzenie zadania, które będzie reprezentowane w następujący sposób: * Z tytułem, datą początkową, użytkownikiem, klientem itp. (proste atrybuty). * Zero lub więcej wyrażeń czasowych, które reprezentują „harmonogramy” określające, kiedy zadanie ma być wykonane — okresowo, według dnia tygodnia, według dnia miesiąca itd. * Drzewko-lista podzadań, które można zagnieżdżać na dowolnym poziomie. To wszystko jest dość łatwe do przedstawienia w bazie danych za pomocą kilku tabel. Łatwo jest również spakować w serię tablic i przekazać dalej (na przykład przekazanie tablicy szablonu zadania, podzadań i danych harmonogramu za pośrednictwem JSON do obiektu jQuery, który zbuduje listę zadań po stronie klienta. Pomiędzy tworzeniem, aktualizowanie, wyświetlanie itp. zadań, list zadań itp., jest wiele miejsc, w których mogę znaleźć się w przekazywaniu dużego zbioru danych z jednego miejsca do drugiego (szczególnie pracując z AJAX z dużym przetwarzaniem po stronie klienta), i często wygląda prawie tak samo – po prostu duża tablica, która mówi „tutaj są dane dotyczące twojego zadania i powiązanych„ rzeczy ”.Jak możesz (lub byś) to zorganizować? Na przykład poniżej jest tablica, która została wyciągnięta z obiektu „Task Template” i zostanie przekazana przez JSON do obiektu JS, który będzie dynamicznie budował i wyświetlał listę zadań po stronie klienta.Chyba pytanie brzmi, czy i jak definiujesz strukturę taki „obiekt” poza bazą danych, kodem itp. oraz w jaki sposób go dokumentujesz przykład, podczas gdy zagnieżdżone podzadania są dość objaśniające (i zduplikowane dane, dostępne tylko dla wygody), nie jest łatwo oczywiste, że tablica „Podzadania” MUSI mieć każde podzadanie pojawiające się w tablicy PO (wyższy indeks niż) jej podzadaniu nadrzędnym i PRZED (tj. z niższym indeksem niż) dowolne podzadania podrzędne, tak aby można je było przetwarzać w kolejności z zapewnieniem, że każde podzadanie może zostać dołączone do już istniejącego podzadania nadrzędnego. Istnieje wiele takich zasad, a jeśli "stosunkowo" podobna tablica jest używana w 9 różnych miejscach, dokumentowanie w komentarzach/dokumentacji klas itp. kończy się kiepsko. [43] => Tablica ( [Meta] => Tablica ( [SubTaskCount] => 6 [TemporalExpressionCount] => 3 [NumInstances] => 0 [OutOfSync] => 0 ) [Fields] => Tablica ( [UserID] = > 1 [ClientID] => 1 [StatusID] => 1 [Title] => Testuj dalej [Body] => Jak się masz? Bo jestem ziemniakiem. [UserName] => Wheatley [ClientName] => Laboratoria Wheatley [ BodyHTML] => Itd. ) [Sched] => Tablica ( [TemporalExpressions] => Tablica ( [0] => Tablica // W każdy poniedziałek każdego miesiąca ( [typ] => dw [ExpressionID] => 1 [ord] => 0 [dzień] => 1 [miesiąc] => 0 ) [1] => Tablica // W każdy wtorek każdego miesiąca ( [typ] => dw [ExpressionID] => 2 [ord] => 0 [dzień] => 3 [miesiąc] => 0 ) [2] => Tablica // Ostatni dzień każdego miesiąca ( [typ] => dm [Identyfikator Wyrażenia] => 3 [dzień] => -1 [miesiąc] => 0 ) ) [ZadanieInsta nces] => Tablica ( // To miałoby dane o statusie "zakończenia" zadań według daty... ) [DataPoczątkowa] => 2011-12-02 [DueTime] => 14:55:00 [SchedDates] => Tablica ( [1322812800] => 2011-12-02 [1323072000] => 2011-12-05 [1323244800] => 2011-12-07 [1323417600] => 2011-12-09 [1323676800] => 2011-12 -12 // ... Lista dat pomiędzy zewnętrznie zdefiniowanymi parametrami zakresu dat... ) ) [SubTasks] => Tablica ( [1355] => Tablica ( [SubTaskID] => 1355 [ParentST] => [RootT] = > 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1356] => Tablica ( [SubTaskID] => 1356 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1357] => Tablica ( [SubTaskID] = > 1357 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Tytuł] => Nowy napis zapytaj o tytuł [Body] => [DueDiff] => 0 [UserName] => Eli ) [1358] => Tablica ( [SubTaskID] => 1358 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Title] => Tytuł nowego podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1359] => Tablica ( [SubTaskID] => 1359 [ParentST] => [RootT] => 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1360] => Tablica ( [SubTaskID] => 1360 [ParentST] => [RootT] => 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] = > [DueDiff] => 0 [UserName] => Eli ) ) [SubTasksNested] => Tablica ( [1360] => Tablica ( [SubTaskID] => 1360 [ParentST] => [RootT] => 43 [UserID] = > 1 [Tytuł] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1359] => Tablica ( [SubTaskID] => 1359 [ParentST] => [RootT] => 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1355] => Tablica ( [SubTaskID] => 1355 [ParentST] => [RootT] => 43 [UserID] => 1 [Title] => Nowe podzadanie Tytuł [Body] => [DueDiff] => 0 [UserName] => Eli [SubTasks] => Tablica ( [1358] => Tablica ( [SubTaskID] => 1358 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Tytuł] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1357] => Tablica ( [SubTaskID] => 1357 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Title] => Tytuł nowego podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) [1356] => Tablica ( [SubTaskID] => 1356 [ParentST] => 1355 [RootT] => 43 [UserID] => 1 [Title] => Nowy tytuł podzadania [Body] => [DueDiff] => 0 [UserName] => Eli ) ) ) ) [Identyfikator Szablonu] => 43 )


title: Funkcjonalny język niskiego poziomu, który może korzystać z widoku webkit

text: # TL;DR: Muszę stworzyć aplikację, która powinna wyglądać tak samo na pulpicie i jako wcielenie strony internetowej. Ponieważ jestem web developerem i nigdy nie tworzyłem dla komputerów stacjonarnych, chcę użyć języka, który może osadzić widok webkit, aby móc używać tego samego interfejsu HTML/JS do obu zastosowań i przynajmniej zminimalizować krzywą uczenia się dla GUI . C++ i Java mogą używać webkita, jednak szukam alternatyw, w których funkcje są obywatelami pierwszej klasy, ponieważ zdecydowanie wolę języki oparte na prototypach. # Długa wersja Jestem głównie web developerem; Jestem swobodnie z js/as3/php/python. Ostatnio jednak pojawiły się pomysły, które wymagają innych języków do zrealizowania. Mianowicie mam pomysł na oprogramowanie, które jest po części customową bazą danych, a po części GUI. Zacząłem więc zajmować się językami zorientowanymi na pulpit, takimi jak Java i C++. Odkryłem, że Java jest w zasadzie bardzo łatwa, a C++ trochę w porządku (chociaż robi się skomplikowana, gdy próbuję użyć GTK, a dokumenty są rzadkie i rozproszone). mogę to wykorzystać; jedna rzecz mnie jednak dręczy: tak jak lubię PHP jako projekt i jako społeczność, nabrałem niechęci do języków imperatywnych i czuję się znacznie lepiej w domu z językami w stylu ECMA. Ostatnio byłem zadowolony z rozwoju web devu z powodu powstania node.js i tego, jak mogłem zacząć rozwijać funkcjonalność po stronie serwera za pomocą javascript. # Moje pytanie Potrzebuję języka, który ma następujące cechy: * Funkcjonalny. Przez „funkcjonalny” mam na myśli dużą definicję. Obejmuje to każdy język, w którym funkcje są obywatelami pierwszej klasy (gdzie „działania” są ważniejsze niż „aktory”). * Przenośny: wybrałem C++/GTK lub Javę ze względu na łatwą przenośność i brak ograniczeń licencyjnych. Tak więc przenośność oznacza tutaj _niezależność od systemu operacyjnego_ (z realistycznymi ograniczeniami) oraz _licencję otwartą_. * Może używać widoku webkit: (jak w GTK lub w Javie) lub podobnego; Zamierzam wykorzystać moją wiedzę o aplikacjach internetowych do zbudowania pięknego, użytecznego interfejsu użytkownika w html5. Ten sam interfejs będzie używany w internetowej wersji aplikacji. Dlatego potrzebuję języka, aby mieć sposób na osadzenie i interakcję z HTML5 * Potrafi używać JS: najlepiej przez V8, chociaż nosorożec lub podobne narzędzie jest w porządku. Jeśli obiekt _window_ js mógłby zostać wystawiony na działanie kodu js (więc mogę używać standardowych bibliotek, takich jak jQuery), byłoby idealnie. * Niski poziom: potrzebuję szybkiej części dotyczącej bazy danych. Mógłbym zakodować moje db w C i GUI w jakimkolwiek-języku-to-będzie, ale najlepiej, chciałbym użyć jednego zestawu narzędzi dla obu * Mniej ważne, ale: jeśli język mógłby być pochodną skryptu ECMA, więc mogę wykorzystać moje umiejętności js, byłoby fajnie. **Moje bieżące opcje** * Titanium, który posiada wszystkie powyższe cechy i używa js jako podstawowego kodu; Jednak nie lubię być przywiązany do konkretnego SDK i wolę używać niezależnych bibliotek open-source, które mogę przeczytać. * Twoja sugestia?


title: Planujesz relacyjną bazę danych - jedna czy dwie tabele?

text: Obecnie planuję strukturę bazy danych witryny z ogłoszeniami używanymi samochodów. Każde ogłoszenie zawiera informacje o pojeździe, a pojazd może być reklamowany wielokrotnie przez cały okres jego eksploatacji (przyznane, dość mało prawdopodobne). Nie jestem pewien, które podejście przyjąć - pojedyncza tabela, czy dwie osobne tabele relacyjne, każda ma swoje wady i zalety. Schemat 1 Tabela reklam: ------------------- id int make varchar(255), model varchar(255), rok int, transmisja varchar(255), fuel_type varchar( 255), body_type varchar (255), engine_size int, kolor varchar (255), door int, lokalizacja varchar (255), cena int, właściciele int, przebieg int, opis długi tekst Schemat 2 Tabela reklam -------- ----------- id int lokalizacja varchar(255), cena int, właściciel int, przebieg int, opis długi tekst id_pojazdu int Tabela pojazdów ---------------- --- id int make varchar(255), model varchar(255), rok int, transmisja varchar(255), fuel_type varchar(255), body_type varchar(255), engine_size int, kolor varchar(255), door int Osobiście myślę, że drugie podejście przyniesie korzyści w przyszłości, ale praca z nim okazuje się trudna. Używam Laravel, framework PHP. Ponieważ większość opcji „wyszukiwania” dotyczy pojazdu (nadrzędnego), a nie reklamy (podrzędnej), wymagany jest znacznie więcej kodu, co zaczyna wydawać się sprzeczne z intuicją. Schemat 1 jest znacznie prostszy w obsłudze. Czy brakuje mi jakichkolwiek znaczących korzyści płynących ze schematu 2? Krótko mówiąc, pierwsze podejście wymaga znacznie mniej kodu, ale nie jest relacyjne. Drugie podejście jest relacyjne, ale wymaga znacznie więcej kodu (i czasu), zmniejszając w szczególności zwięzłość mojego kontrolera reklam, który w rzeczywistości bardziej odpytuje atrybuty pojazdu niż reklamy. Sprawia to również, że "sortowanie" jest dość trudne, ponieważ użytkownik może sortować według "marka", "model", "lokalizacja", "cena" itp. - atrybuty, które przeskakują między modelami.


title: Powielanie dokumentacji dotyczącej implementacji/nadpisań interfejsów dobre czy złe?

text: Mamy więc taki interfejs /// <summary> /// Interfejs dla klas zdolnych do tworzenia foos /// </summary> interfejs publiczny ICreatesFoo { /// <summary> /// Tworzy foos /// </ podsumowanie> void Utwórz(Foo foo); /// <summary> /// Czy pasek wypełnia /// </summary> void Bar(); } Ostatnio odegraliśmy historię z dokumentacją, która polegała na generowaniu i upewnianiu się, że istnieje mnóstwo dokumentacji XML, jak powyżej. Spowodowało to jednak wiele powielania dokumentacji. Przykładowa implementacja: /// <summary> /// Szybki kreator Foo /// </summary> public class FastFooCreator : ICreatesFoo { /// <summary> /// Tworzy foos /// </summary> public void Create(Foo foo) { //wstaw kod tutaj } /// <summary> /// Czy pasek wypełnia /// </summary> public void Bar() { //kod tutaj } } Jak widać metoda dokumentacja jest prostym ripem z interfejsu. Najważniejsze pytanie brzmi, czy to zła rzecz? Przeczucie mówi mi tak z powodu duplikacji, ale może nie? Mamy również inne podobne powielanie dokumentacji z funkcjami `override` i `virtual`. Czy to źle i należy tego unikać, czy nie? Czy to w ogóle warte zachodu?


title: „Enterprise” wersja kodu na GPL?

text: Wiem, że na tej stronie jest wiele dyskusji na temat GPL, ale właśnie natknąłem się na interesujący przypadek pozornego nadużycia, o którym (co zaskakujące) nie widziałem nigdzie dyskutowanego. Program do zarządzania konfiguracją CFEngine jest najwyraźniej rozpowszechniany na licencji GPL (wydaje się nawet, że jest to projekt FSF), ale oryginalny autor rozpowszechnia również „edycję Enterprise”, która jest rażąco niewolna. Wydaje się to być oczywistym naruszeniem GPL. Oficjalna odpowiedź na to pytanie (z FAQ CFEngine) brzmi: > Jako właściciele praw autorskich możemy licencjonować CFEngine na dowolnych > warunkach. Pliki należące zarówno do wersji Community, jak i Enterprise Edition są w konsekwencji licencjonowane na podstawie obu zestawów warunków. Licencjobiorca > edycji Enterprise ma zatem swobodę wyboru warunków, które są > uważane za najbardziej pożądane. Co, jak rozumiem, nie jest prawdą. Jako właściciele praw autorskich mogą oczywiście **zmieniać** licencję (na przyszłe wydania), ale dystrybucja kodu z **obu** licencjami jest w najlepszym razie sprzeczna, a w najgorszym nielegalna. Czy czegoś mi tu brakuje, czy też wydaje się to szaleńczo obłudne?


title: Gdzie mogę przeczytać oryginalny dokument wprowadzający do języka C# firmy Microsoft?

text: Kiedy Microsoft zaprezentował .NET Framework i język C# w 2002 roku, jaki był pierwszy artykuł wprowadzający C#? Szukam artykułu opublikowanego w witrynie MSDN lub Microsoft, który wyjaśniałby potrzebę innego języka, mówiłby o tle i może miałby próbki kodu. Ponadto jestem zainteresowany oryginalnym wprowadzeniem C#, a nie ogólnym dokumentem .NET Framework. Pamiętam, że wczesne dokumenty .NET były dość mgliste i chociaż ponowne ich czytanie jest dobrą zabawą, dążę do dokumentu zorientowanego na język.


title: Czy w programowaniu zwinnym powinienem spróbować trwałości w pliku płaskim przed bazą danych?

text: Ktoś mi wytłumaczył, że skoro w zwinnym rozwoju, polityka i logika aplikacji powinny być ważniejsze niż szczegóły, takie jak metoda trwałości, decyzja o trwałości powinna być podjęta na końcu. Warto więc zacząć od prostszej persystencji jak np. pliki płaskie, aż dojdziemy do punktu, w którym słabość tej metody stanie się widoczna i dopiero wtedy zmienimy persystencję np. za pomocą relacyjnej bazy danych. Czy to prawda, czy źle zrozumiałem tę koncepcję? Czy w taki sposób zwykle zwinny zespół buduje aplikację? Jakie są tego powody i kiedy nie powinienem stosować takiego podejścia?


title: Usuwanie klucza sprzętowego w systemie testowym

text: Jedna z aplikacji mojej firmy nadal wymaga klucza sprzętowego do działania, ale obecnie jesteśmy w trakcie usuwania tego wymogu i zastępowania go czekiem online. Problem, z którym mamy do czynienia, polega na tym, że pozwalamy naszym klientom konfigurować systemy testowe z kopiami ich aktywnych baz danych. W przypadku kluczy sprzętowych nie stanowi to problemu, ponieważ otrzymują specjalny klucz, który informuje oprogramowanie, że jest to test, ale próbujemy znaleźć sposób, aby to zrobić za pomocą kontroli tylko oprogramowania. Jak dotąd naszym jedynym pomysłem jest sprawdzenie sprzętu z zarejestrowaną listą w bazie danych, ale zanim to wdrożymy, chcę zapytać, jak inni rozwiązali podobne problemy?


title: Gdzie kończą się obowiązki narzędzi do budowania, a zaczynają się narzędzia CI?

text: Gdzie kończą się obowiązki narzędzi do kompilacji, takich jak Maven, a zaczynają się obowiązki CI? Jako przybliżony _przykład_ pojawiającego się problemu; czy narzędzia do budowania powinny mieć jakąkolwiek odpowiedzialność za konfigurację i wykonanie testów akceptacyjnych, gdy są one dalej w potoku niż faktyczne budowanie artefaktu? Chciałbym odpowiedzi, która odnosi się w sensie faz cyklu życia wdrożenia, a nie w szczegółach, jak mój przykład. Chociaż przykłady pomogłyby wzmocnić odpowiedź.


title: Kiedy szukasz pracy, co przykuwa twoją uwagę w ogłoszeniu o pracę

text: Mała firma, w której pracuję, poszukuje obecnie kilku dobrych programistów. Zamieściliśmy oferty pracy w kilku miejscach i trafiliśmy na lokalne tablice grup użytkowników, ale tak naprawdę nie otrzymaliśmy nic z tego. Jako programista, jakie elementy oferty pracy skłoniłyby Cię do odpowiedzi: * Nazwa firmy (np. Microsoft, Oracle lub w naszej branży BAE, Boeing, Lockheed Martin). * Rodzaj pracy (wydaje się to dość oczywiste, ale byłoby jak ROR lub Java itp.) * Środowisko pracy * Używane komputery (MacBook PRO dla każdego) * Zakres wynagrodzenia * Inne Trudno w to uwierzyć, biorąc pod uwagę ogólną pracę rynku, na którym nie dostajemy nawet życiorysów. Jesteśmy na gorącym rynku (obszar DC), ale nadal wydaje się to trochę trudne.


title: Organizowanie rekolekcji z kodem

text: Chętnie zorganizuję rekolekcje kodowe w moim mieście. Właściwie to w moim domu z około 4-5 osobami. Przeczytałem tutaj kilka dobrych danych wejściowych, ale mam kilka pytań. * Czy powinienem pomyśleć o próbkach programowania/zagadkach, czy też powinien to być mały proto/poc pomysłu? Np.: Tworzenie klienta Twittera, praca z oData, itp. * Czy wszyscy obecni tam ludzie powinni być świadomi wybranego języka programowania? A może oczekuje się, że tam przyjdą, będą przeglądać internet, uczyć się i kodować? * Czy efektem końcowym powinno być coś, co można zaprezentować/demonstrować, czy może to być fragment kodu, o którym możemy zapomnieć? * Czas na wycofanie się z kodu: Czy jeden dzień wystarczy, czy powinienem go zatrzymać przez dwa dni? Czy dwa dni staną się przesadą?


title: Jak lepiej radzić sobie z obciążeniem pracą

text: Jestem nowicjuszem pracującym w firmie programistycznej. Sama pracuję nad projektem. Chociaż studiowałem CS, wydaje mi się, że nie rozumiem rzeczy (koncepcji, kodu itp.) łatwo. Większość tego, co czytam, jest zapomniana!!!!:(:( Chcę poprawić, ale wygląda na to, że jest zbyt wiele rzeczy do nauczenia się i jest mniej czasu... Jeszcze jeden czynnik to to, że sam radzę sobie z projektem co zwiększa moje napięcie, gdy coś nie działa, a mój umysł nie jest w stanie rozwiązywać problemów lub szukać alternatyw... Ponadto nie mogę udać się do innych z wątpliwościami, ponieważ są zajęci swoją pracą i nie wiedzą o mojej aplikacji... Bardzo mnie to stresuje... Wszystko muszę robić sama. Źle się czuję pod koniec dnia, ponieważ nie spełniam oczekiwań moich rówieśników i siebie... Jak mogę się doskonalić i sprawnie radzić sobie z różnymi sprawami?Zaproponuj mi książki nie tylko o kodowaniu, ale także o projektowaniu.Ponadto jak mogę efektywnie zarządzać swoją pracą, a także ćwiczyć więcej, aby pojęcia były bardziej zrozumiałe?


title: Jaki jest właściwy sposób na REST?

text: W dzisiejszych czasach wszyscy używają SOA, nawet jeśli niektórzy nie rozumieją, o co w tym wszystkim chodzi. Więc robią to źle. Używając tego jako analogii, wiem, czym jest REST (a przynajmniej tak mi się wydaje) i chcę to zrobić. **Ale chcę to zrobić dobrze.** Więc moje pytanie brzmi: jaki jest właściwy sposób na ODPOCZYNEK? Jestem otwarty na każdy zasób, ścieżkę do naśladowania, książkę biblijną REST lub coś takiego.


title: Praca z Linuksem pod kątem wymagań zawodowych

text: Widać to w wielu Wymaganiach Kwalifikacji Zawodowych dotyczących znajomości Linuksa (*nix, jak to zostało opublikowane). Przy tak wielu wariantach Linuksa, na których należy się skupić. Z tego, co wiem, duże organizacje używają własnej zhakowanej wersji Linuksa, więc nie można było poznać dokładnego systemu używanego w przemyśle przez różne organizacje. Jeśli ktoś po prostu wybierze jeden z Wariantów i będzie z nim pracował, starając się zdobyć głęboką wiedzę na jego temat i powinien być w stanie dostosować się do różnych wariantów przy niewielkim wysiłku.


title: Informacja o prawach autorskich licencji MIT dla utworów pochodnych

text: Myślimy o użyciu oprogramowania open-source na licencji MIT w jednym z naszych projektów internetowych (wtyczka jQuery datetime). Pierwsza linia licencji MIT to: > Prawa autorskie (c) [rok] [właściciele praw autorskich] Jeśli dołączymy wtyczkę w takiej postaci, w jakiej jest (bez wprowadzania żadnych zmian), rozumiem, że musimy dołączyć licencję tylko z oryginalnym autorem ( chociaż faktyczna informacja o prawach autorskich na górze pliku js nie określa roku: > Copyright (c) 2013 Keith Wood Jeśli wprowadzimy zmiany we wtyczce, czym stanie się informacja o prawach autorskich? > Copyright (c) 2013 Keith Wood, 2013 [Moje imię i nazwisko/Nazwa firmy] Czy musisz podać wszystkich poprzednich autorów, czy istnieje inny sposób postępowania z takim powiadomieniem?


title: Czy jako starszy kierownik projektu powinienem nadal uczyć się nowych umiejętności programowania?

text: Jeśli jestem starszym kierownikiem projektu, czy powinienem nadal uczyć się nowych technologii? Na przykład co miesiąc, każdego roku, większość aktualizacji językowych sama się aktualizuje, a wiele nowych koncepcji programistycznych staje się popularnych. Powstaje wiele nowych frameworków i wzorców, które ułatwiają pracę. Ale trzeba poświęcić dużo czasu, aby nadążyć. Jeśli istnieje język, który okaże się bardziej wydajny, a Ty go nie znasz, czy planujesz się go nauczyć i pozwolić członkom zespołu wykorzystać ten język do rozwijania projektu? Jeśli pojawi się nowy framework, większość ludzi twierdzi, że jest pomocny w naszym projekcie, ale nic o nim nie wiesz, czy nauczyłbyś się go i zdecydował? Ale jako PM powinieneś być na wyższym poziomie, a może bardziej zajęty niż wcześniej. Czy chcesz nauczyć się czegoś „nie tak starszego”?


title: Właściwości logiczne w klasie A kontrolują dostępność elementów członkowskich w klasie B: wzorzec projektowy?

text: Biorąc pod uwagę następujący kod: class AnimalDescriptor { Gatunek String; logiczne maNogi; logiczne hasZęby; logiczne hasHair; public AnimalDescriptor(String gatunek, boolean maNogi, boolean maZęby, boolean hasHair) { this.species = gatunek; this.hasLegs = maNogi; this.hasTeeth = maZęby; this.hasHair = hasHair; } class Animal { AnimalDescriptor control; Nazwa ciągu; int numberOfLegs; int liczbaZębów; Kolor sznurkaWłosów; } class doStuff { public void go() { AnimalDescriptor pies = new AnimalDescriptor("pies", prawda, prawda, prawda); AnimalDescriptor pirahna = new AnimalDescriptor("pirahna", false, true, false); Fido zwierząt = nowe Zwierzę(); fido.control = pies; fido.name = "Fido"; fido.liczbaNog = 4; fido.liczbaZębów = 42; fido.colorOfHair = "czarny"; //Wszystko w porządku Animal bob = new Animal(); bob.control = pirahna; bob.name = "Bob"; bob.liczbaZębów = 42; //Do tej pory tak dobrze bob.numberOfLegs = 2; //To powinno przekazać kompilację, ale //walidacja nie powiedzie się w czasie wykonywania, ponieważ jest //bezsensowna } Czy istnieje nazwa wzorca dla tego, co tu robię? Próbowałem wyszukać różne odmiany mojego tytułu pytania, ale nigdzie nie dotarłem. Oczywiście jest to bardzo prosty i skrócony przykład, AnimalDescriptor powinien mieć również metodę `bool .validate(Animal a)`, a Animal powinien mieć między innymi metodę `.isPropertyAvailable(String propertyName)`. Nie chciałem ugrzęznąć w 500-wierszowym przykładzie z minimalną wielkością liter. Nie ma mowy, żebym był pierwszą lub jedyną osobą, która to zrobiła, i głównie szukam czegoś, do czego mogę się przyczepić w celu dalszych badań nad najlepszymi praktykami, pułapkami wdrożeniowymi itp. EDYCJA: Aby zapewnić nieco większą jasność, w moim systemie w klasie "control" (AnimalDescriptor) znajduje się ~20 wartości logicznych. Śledzę ~106 pozycji (Animals) w ~103 kategoriach (AnimalDescriptors), które mają wspólną pulę wspólnych właściwości, ale każdy element ma tylko właściwości, które są wyznaczone przez jego konfigurację "kontroli". Ponadto system powinien być w stanie rozszerzyć się do, powiedzmy, 104 kategorii (Deskryptory Zwierząt) w ciągu najbliższych 5 lat. Mamy funkcjonalną (jeśli brzydką) implementację, więc nie potrzebuję walidacji ani instrukcji dotyczących wyjątków -- bardziej interesuje mnie podejście do tego problemu w innych domenach/aplikacjach, korzyści z implementacji w funkcjonalnym (jak w przeciwieństwie do kontekstu obiektowego, najlepszych praktyk itp. Wydaje się, że powinna być na to nazwa, ale nie wiem, co to jest.


title: Pomysł na stworzenie serwera buforującego między IIS a SQL Server

text: Pracuję nad kilkoma witrynami o dużym natężeniu ruchu, które korzystają z tej samej bazy danych i które są mocno oparte na bazie danych. Nasz serwer SQL jest na maksa i chociaż wprowadziliśmy już wiele zmian, które pomogły, serwer nadal pracuje zbyt ciężko. W naszej witrynie stosujemy buforowanie, ale rodzaj zapytań, których używamy, neguje przy użyciu buforowania zależności SQL. Wypróbowaliśmy replikację SQL, aby spróbować zrównoważyć obciążenie, ale nie okazało się to zbyt skuteczne, ponieważ proces replikacji jest również dość wymagający na serwerach i musiał być wykonywany często, ponieważ ważne jest, aby dane były aktualne. Używamy serwera buforowania stron internetowych Varnish (opartego na Linuksie), aby odciążyć zarówno serwer sieciowy, jak i serwer bazy danych, ale ponieważ wiele witryn jest dostosowywanych w oparciu o użytkownika, możemy zrobić tylko tyle. W każdym razie powód tego pytania... Varnish podsunął mi pomysł na możliwą aplikację, która mogłaby pomóc w tej sytuacji. Tak jak Varnish siedzi między przeglądarką internetową a serwerem WWW i buforuje odpowiedź z serwera WWW, zastanawiałem się nad możliwością stworzenia czegoś, co znajduje się między serwerem WWW a serwerem bazy danych. Wyobraź sobie, że wszystkie zapytania SQL przechodzą przez ten serwer buforujący SQL. Jeśli jest to pierwsze zapytanie, zostanie ono zarejestrowane, a wynik żądany z serwera SQL i zapisany lokalnie na serwerze pamięci podręcznej. Jeśli jest to powtórzone żądanie w określonym czasie, wynik jest pobierany z kopii lokalnej bez wysyłania zapytania do serwera SQL. Serwer buforowania może również korzystać z powiadomień o buforowaniu zależności SQL. Teoretycznie wydaje się to dobrym pomysłem. Nadal jest ta sama ilość danych poruszających się tam iz powrotem z serwera WWW, ale serwer SQL jest zwolniony z pracy związanej z przetwarzaniem powtarzających się zapytań. Zastanawiam się, jak trudno byłoby zbudować usługę, która w pewnym sensie emuluje żądania i odpowiedzi z serwera SQL, czy własne buforowanie serwera SQL robi już tego wystarczająco dużo, aby nie było to korzyści, a nawet jeśli ktoś to zrobił wcześniej i nie znalazłem tego? Chętnie przyjmę wszelkie opinie lub odniesienia do odpowiednich projektów.


title: Jaka jest najważniejsza cecha programisty pożądana przez programistów rówieśniczych?

text: Pytania tutaj mówią o najważniejszych umiejętnościach programistycznych, które ktoś powinien posiadać, i pojawia się wiele świetnych odpowiedzi. Odpowiedzi i osoby pytające wydają się być zainteresowane głównie cechami związanymi z uzyskaniem lepszej pracy, zdobyciem jakiejś rozmowy kwalifikacyjnej, rzeczami pożądanymi przez szefa lub kierownictwo lub poprawą umiejętności programowania. Jedną z rzeczy, która często zostaje zlekceważona, jest autentyczne rozważenie tego, jakich cech chcą rówieśnicy. Nie cenią sobie zbytnio rzeczy takich jak: jesteś jednym z tych, którzy „załatwiają sprawy” dla firmy, nigdy nie przegapisz terminu, przeglądanie i debugowanie kodu jest najmniej bolesne, lub jesteś graczem zespołowym z fantastycznym wiodące umiejętności. Prawdopodobnie bardziej im zależy, jeśli jesteś pomocny, możesz porozmawiać z kimś odświeżającym, fajnie jest z tobą programować, każdy chce, abyś przejrzał ich kod lub coś w tym rodzaju. Ja na przykład dbam o to, żebym wyszedł do moich rówieśników jako przyjemny programista do pracy, tak samo jak zależy mi na moim wrażeniu na moim szefie lub kierownictwie. Czy to naprawdę ważne, a jeśli tak, **_jakie są najbardziej pożądane cechy, jakich oczekują od siebie rówieśnicy_**.


title: Dlaczego Clang/LLVM ostrzega mnie przed użyciem default w instrukcji switch, w której uwzględnione są wszystkie wyliczone przypadki?

text: Rozważ następującą instrukcję enum i switch: typedef enum { MaskValueUno, MaskValueDos } testingMask; void mojaFunkcja(testingMask theMask) { switch theMask { case MaskValueUno: {}// radzi sobie z tym case MaskValueDos: {}// radzi sobie z tym default: {} // radzi sobie z nieoczekiwaną lub niezainicjowaną wartością } }; Jestem programistą Objective-C, ale napisałem to w czystym C dla szerszej publiczności. Clang/LLVM 4.1 z opcją -Weverything ostrzega mnie w domyślnej linii: > Domyślna etykieta w przełączniku, która obejmuje wszystkie wartości wyliczenia Teraz mogę trochę zrozumieć, dlaczego tak jest: w idealnym świecie jedyne wartości wprowadzane w argumencie `theMask ` byłoby w wyliczeniu, więc domyślna nie jest potrzebna. Ale co, jeśli pojawi się jakiś hack i wrzuci niezainicjowaną int do mojej pięknej funkcji? Moja funkcja zostanie udostępniona jako biblioteka drop in i nie mam kontroli nad tym, co może się tam znaleźć. Używanie `default` jest bardzo fajnym sposobem radzenia sobie z tym. Dlaczego bogowie LLVM uważają to zachowanie za niegodne ich piekielnego urządzenia? Czy powinienem to poprzedzić instrukcją if, aby sprawdzić argument?


title: Czy ta lista zachowań związanych z zarządzaniem rzeczywiście przemawia do twórców oprogramowania?

text: Natknąłem się na tę listę zachowań kierowniczych (http://suven.posterous.com/dos-and-donts-leading-software-development-te). Myślę, że ma kilka perełek, ale nie jestem w 100% na niektórych z nich. Zaznaczyłem je kursywą i moim imieniem. Czy jako programista uważasz, że są one atrakcyjne? Które trzy byłyby twoimi TOP pozycjami „musisz je mieć” od twojego managementu? **Nie** * Nie skaluj zespołów w pionie, dodając więcej osób * Nie twórz zespołu z więcej niż 10 osobami * Nie nazywaj ludzi zasobami, to nie jest fajne i jest naprawdę obraźliwe * Nie zakładaj że ludzie w zespołach są wymienni * Nie porównuj ze sobą zespołów podczas podkreślania słabości * Nie namawiaj zespołów przeciwko sobie * Nie twórz fałszywych terminów * Nie wymuszaj standaryzacji narzędzi i procesów w zespołach _(myślę, że to może być argumentowane w niektórych sytuacjach - Todd) _ * Nie zatrudniaj menedżerów produktów, którzy nie mają pojęcia o tworzeniu oprogramowania * Nie używaj wyłącznie KPI do kierowania swoimi zespołami _(Nie tylko jest to nieefektywne, ale także programistów znajdzie sposób na kierowanie wskaźnikami KPI - "Chcesz linijek kodu? Mam twoje linijki kodu!" - Todd)_ * Nie zmuszaj swoich zespołów do pracy w godzinach nadliczbowych, nawet proszenie może wywołać napięcie * Don nie zakładaj, że podwojenie liczby osób to połowa czasu **Rób** * Skaluj poziomo, tworząc więcej zespołów składających się z około 5-8 osób * Masz wizję produktu i zespołu * Doceniasz, że każdy zespół jest inny, więc odpowiednio przydzielaj projekty * Motywuj swoje zespoły _(Wow - to jest jeden śliski, trudny do zdefiniowania. Zgadzam się z tym sentymentem, ale to tak, jakby powiedzieć „Bądź skuteczny” bez żadnych wytycznych. -Todd)_ * Czy pozwalaj ludziom przemieszczać się między zespołami * Czy przeprowadzaj sesje w celu omówienia wizji produktu, strategii, technologii i procesu * Czy angażuj zespół podczas określania nazwy zespołu/produktu * Czy pozwalaj swoim zespołom szczególnie na podejmowanie własnych decyzji jeśli to oni mają wiedzę specjalistyczną * Zaangażuj swój zespół w każdą decyzję, która ma wpływ na to, jak lub nad czym pracuje * Zachęcaj do stosowania metodologii rozwoju, która pasuje do zespołu i projektu * Zwracaj uwagę na indywidualny plan rozwoju każdej osoby


title: Cuda vs OpenCL - opinie

text: Interesują mnie opinie ludzi na temat Cuda vs openCL po wydaniu Cuda4 firmy NVidia. Początkowo korzystałem z openCL od czasu międzyplatformowego, otwarte standardy są dobrą rzeczą (tm). Założyłem, że NVidia będzie pasować, tak jak zrobili to z openGL. Ale rozmawiając z niektórymi ludźmi z NVidii, oni (oczywiście) twierdzą, że skoncentrują się na CUDA i openCL, jest utrudniony przez posiadanie komitetów i konieczność zadowolenia wszystkich - jak openGL. A z nowymi narzędziami i bibliotekami w CUDA trudno się z tym spierać. - Działam na dość technicznym rynku, więc mogę wymagać od użytkowników posiadania określonego sprzętu.


title: Skuteczność pytań do wywiadu „jaka jest twoja największa mocna/słaba strona”

text: Jako ktoś, kto znajduje się teraz na drugim końcu stołu do rozmów kwalifikacyjnych, zastanawiam się, jak przydatne są te pytania z perspektywy pracodawcy. Niektórzy z moich współpracowników uważają, że są dobrzy, ponieważ możesz zobaczyć, „jak reagują”, ale nie jestem przekonany, że mówi to coś przydatnego z kilku powodów: * To nie jest zbyt wygodne pytanie i może skłonić ludzi do przekręcania odpowiedzi , nawet jeśli nie celowo * Ludzie mogą nie znać w pełni swoich największych mocnych i słabych stron (np. oceniać ich przez rówieśników) * Wyjaśnianie, czym jest mocna strona, nie jest tak dobre, jak jej pokazywanie * Nadal nie wiem nic więcej na temat kandydat później Moi współpracownicy mogą pomóc wyeliminować ludzi, którzy dają śmieszne odpowiedzi, na przykład faceta, który powiedział, że jego największą siłą jest „jego intelekt” lub ludzi, którzy próbują zamienić pytanie o słabość w siłę typu „Ja też pracuję” ciężko." Ale myślę, że są skuteczniejsze sposoby określania takich rzeczy. Jeśli chcesz sprawdzić, czy ktoś jest mądry, zadaj mu pytania techniczne. Jeśli chcesz sprawdzić, czy ktoś jest produktywny, spójrz na jego historię pracy. Jeśli chcesz zobaczyć, jak ktoś reaguje na stres lub zmianę, zapytaj go, jak sobie z tym poradził i poproś o konkretne przykłady. Jakie są opinie ludzi na te pytania z perspektywy ankietera? Co tak naprawdę mówią ci o kandydacie i jakie są lepsze alternatywy? Jak przekonać do tego moich kolegów?


title: Linkowanie przeciwko LGPL - Jak udostępnić kod?

text: Pracuję nad projektem oprogramowania Open Source (LGPL), który wykorzystuje inne oprogramowanie na licencji LGPL. Aby ułatwić użytkownikom i programistom dostarczam i łączę z skompilowaną stroną trzecią. O ile wiem, muszę uwzględnić źródła i oświadczenia licencyjne oprogramowania LGPL, jeśli dostarczam je i używam w formie binarnej. Oznaczałoby to jednak, że muszę umieścić skompilowaną wersję oraz kod tej strony trzeciej w moim repozytorium. Nie tylko sprawiłoby to, że kasa trwałaby wieki, ale byłaby również nieco zbędna. Czy istnieją jakieś techniki lub najlepsze praktyki, jak rozwiązać ten problem? Mój projekt jest dostępny na Github, jeśli ma to znaczenie. Aktualizacja: * Link do projektu * Link do strony trzeciej


title: Złożoność czasowa zagnieżdżonej pętli for

text: Mam takie pętle: for(int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { sum += 1; } } To O(n * ), ale nie jestem pewien, co to jest pętla j < i. Mam kilka testów, które przeprowadziłem, n = 10, przebiegi = 45 n = 20, przebiegi = 190 n = 40, przebiegi = 780 n = 80, przebiegi = 3160 n = 10, przebiegi = 12720 Wydaje się, że zbliża się do . 5*n^2, ale nie jestem pewien.


title: Zakres programatora VB6 na dzisiejszym rynku

text: Sam Rameez. Dziś z sukcesem kończę swoje 5-letnie doświadczenie na platformie VB6 jako programista. Chcę wiedzieć od eksperta, czy jakieś zapotrzebowanie na programistę VB6 pozostaje na rynku iw przyszłości? A także chcę wiedzieć, jaką technologię muszę zmienić i jak to zmienić z powodzeniem? Więcej o moim zestawie umiejętności technicznych jest to, że nauczyłem się ASP.net, c#, core java w moim roku akademickim. Posiadam również wiedzę jak pisać kod w tych technologiach. Ale nie mam żadnego doświadczenia w projektach przemysłowych w tym języku. Wcześniej spotkałem się z wywiadem dla programisty .net, ale nie mogę iść dalej. Z powodu braku doświadczenia w .net. Więc proszę, pokaż mi właściwą drogę. Twoja opinia jest dla mnie bardzo cenna. To naprawdę pomoże mi w mojej przyszłości. Z góry dziękuję.


title: Czy „projektowanie najpierw z typami” jest ostatecznie tym samym, co „najpierw projektowanie z interfejsami”?

text: W programowaniu obiektowym nauczono nas myśleć w kategoriach polimorfizmu (idea, że implementacja jest oddzielona od interfejsu – i że ma sens najpierw myśleć o interfejsie). Wyraża to Eric Gamma (autor Gang of Four Design Patterns Book) > Program do interfejsu, a nie implementacja Później dowiedzieliśmy się, że jest to sposób na rozwiązanie Problemu Wyrażenia. Inne języki, takie jak Clojure, rozwiązują problem „The Expression Problem” przy użyciu protokołów. Teraz wychodząc ze Scali (i być może pod wpływem Haskella) widzimy ruch projektowy, który mówi _"Najpierw zaprojektuj swoje typy"_. Kiedy to usłyszałem – myślałem, że już to słyszałem. Moje pytanie brzmi: ** Czy „najpierw projektowanie z typami” ostatecznie jest tym samym, co „najpierw projektowanie z interfejsami”?**


title: Czego potrzebuję do programowania Java Socket?

text: Próbuję nauczyć się programowania Socket w Javie, aby stworzyć grę, którą stworzyłem, odtwarzaną przez sieć. Nigdy nie zajmowałem się programowaniem w sieci, więc temat jest nieco zagmatwany. W php używam apache do testowania swoich aplikacji na lokalnym serwerze. Co muszę zainstalować, aby móc uruchamiać aplikacje sieciowe w języku Java?


title: Projekt: Oddzwanianie do klasy nadrzędnej

text: Podczas modelowania obiektu z dziećmi często dołącza się dzieci za pośrednictwem kompozycji jako członka klasy nadrzędnej. Czasami jednak dzieci muszą coś powiedzieć rodzicowi, muszą wywołać funkcję rodzica. Jak można to osiągnąć za pomocą C++? Niektóre opcje to: 1. Uczyń klasę nadrzędną globalną, dzięki czemu obiekty podrzędne będą mogły wywoływać funkcje składowe obiektu nadrzędnego. 2. Wstaw obiekt rodzica jako wskaźnik lub referencję do każdego obiektu podrzędnego. Następnie, gdy dziecko musi coś powiedzieć obiektowi nadrzędnemu, zawsze może to zrobić, ponieważ ma zmienną składową, której może użyć. Jakie są inne metody na zrobienie tego? Czy istnieje ogólny wzorzec projektowy lub nazwa dla tego rodzaju rzeczy? Zauważ, że interesują mnie pomysły i rozwiązania w C++, ponieważ szczegóły będą inne w innych językach obiektowych. Na przykład punkt 2 powyżej wspomina o „wskaźnikach lub referencjach” i oba są możliwe tylko w C++. C++ ma cechy językowe, które nie są obecne w innych językach, dlatego implementacje rozwiązania problemu potencjalnie będą zawierać te cechy językowe, czyniąc rozwiązanie innym niż to, które ktoś mógłby wymyślić w innym języku.


title: Czy są jakieś wady stosowania metodyki Agile?

text: Wygląda na to, że większość firm stosuje obecnie metodologie Agile do tworzenia oprogramowania. Jestem ciekaw, czy są jakieś wady korzystania z Agile, czy ma wady, czy zawsze jest to właściwa metodologia do użycia? Czy któryś z was ma doświadczenie w korzystaniu z Agile i to nie zadziałało, może było to spowodowane rodzajem projektu lub zespołem?


title: Interop między usługami WCF i Java wydaje się zaskakująco problematyczny. Jakieś dobre zasoby?

text: W ostatnim projekcie nasz zespół programistów oparty na .Net otrzymał zadanie integracji z całą gamą usług internetowych opartych na javie na całym świecie i naprawdę mieliśmy zaskakująco (cóż, na pewno nie jesteśmy już zaskoczeni) dużą liczbę problemów ponieważ kod XML wygenerowany przez WCF nie jest akceptowany przez usługi Java. Wydaje się również, że nie ma zbyt wielu dobrych informacji na ten temat, otrzymaliśmy kilka dobrych wskazówek od doskonałego bloga WCF Yaron Nave, http://webservices20.blogspot.com, a także na forum MSDN WCF http: //social.msdn.microsoft.com/Forums/en-US/wcf/threads. Czy jest tu ktoś, kto naprawdę czuje, że to zrozumiał i zna ostateczne źródło na ten temat? Byłby zainteresowany poradami dotyczącymi książek, blogów lub dowolnych stron internetowych. Edycja: Jestem rozdarty ustawiając odpowiedź zaakceptowaną w tym wątku, ponieważ każda z dwóch najlepszych odpowiedzi ma jakąś wartość: 1\. Prawdopodobnie skończymy na wykonaniu większej liczby implementacji HTTP Webrequest zamiast walki z WCF. 2\. Ale powiązania WCF Express Interop 1.0 były również bardzo rozsądną wskazówką.


title: Zsynchronizować Azure SQL (w chmurze) z emulatorem Azure SQL (lokalnie)?

text: Mamy usługę platformy Azure (rola sieci Web), która w dużym stopniu zależy od bazy danych. W przypadku programowania/testowania w trybie offline chcielibyśmy, aby aplikacja app+db działała w trybie offline w emulatorach. Uruchamianie samego webrola w emulatorze jest proste, ale w przypadku Azure SQL tak nie jest. Jaki jest najprostszy sposób na zapewnienie synchronizacji bazy danych Azure SQL w chmurze i emulatora/lokalnej bazy danych Azure SQL? Możemy sobie pozwolić na pewien poziom nieaktualności w celu uproszczenia operacji synchronizacji (co oznacza, że kopia lokalna może być przestarzała przez kilka godzin w porównaniu do dublowania każdego zapisu, gdy tylko się to stanie) Dzięki


title: Użyć projektanta GUI lub napisać go samodzielnie na pulpit?

text: Pisanie GUI dla programu zawsze było zniechęcającym, przygnębiającym i frustrującym zadaniem. Nie ma znaczenia w jakim języku, niezwykle trudno jest uzyskać to, czego chcę. Zwłaszcza w językach skompilowanych, takich jak Java, gdzie zmiana zajmuje minutę lub dwie. W rezultacie coraz częściej używam projektantów GUI do niektórych moich projektów. Jasne, że jest jakiś kod spagetti, ale tak długo, jak zostawiam konfigurację i notatkę „To zostało zaprojektowane z X”, nie mam żadnych skrupułów, aby to zrobić. Czy to dobry sposób na zaprojektowanie GUI? Co ważniejsze, czy to właśnie robi większość ludzi? A może powszechnym sposobem jest po prostu usiąść i napisać to?


title: Jakie są zalety korzystania z Adobe Flex?

text: Użyłem Adobe Flex do stworzenia aplikacji internetowej i po prostu nie mam o niej opinii, wygląda dobrze dla użytkownika, a kod jest niewidoczny dla większości użytkowników, ale czy o to chodzi? Jakie inne zalety ma Flex?


title: Jakie procedury lub audyty należy stosować do oceny bezpieczeństwa systemu oprogramowania?

text: Czy istnieją jakieś ustandaryzowane procedury bezpieczeństwa lub techniki audytu, które można wykorzystać do oceny bezpieczeństwa oprogramowania? Szczególnie interesuje mnie audyt oprogramowania napisanego w Javie, ale przydatne byłyby inne wskazówki dotyczące innych języków oraz ogólne praktyki. Pomocna byłaby również lista często identyfikowanych luk w zabezpieczeniach. Szukam rzeczy, które są specyficzne dla praktyk inżynierii oprogramowania, a nie na przykład administratorów systemu.


title: Jak stworzyć stronę internetową typu open source i zyskać?

text: Nie pytam dokładnie z biznesowego punktu widzenia, ale na przykład zarówno reddit, jak i Twitter są całkowicie otwarte. Rozumiem, że przynajmniej znaczna większość ich zysków pochodzi z reklam na ich stronie internetowej. Więc co dokładnie ma uniemożliwić komuś skopiowanie swojego kodu i zrobienie własnej strony internetowej z małymi, ale skutecznymi zmianami? Pytam o to, ponieważ mam stronę internetową i chcę na niej zarabiać dzięki reklamie. Chcę też, żeby kod był open source, żeby był ładny, ale nie chcę, żeby mi się to przydarzyło. Moja strona nie jest (i prawdopodobnie nigdy nie będzie blisko) instytucji takiej jak Twitter czy reddit. Nie jestem pewien, czy są tak duże, że nie martwią się, że ktoś skopiuje ich witrynę, czy też faktycznie mają jakąś ochronę, mimo że są open source. reddit używa CPAL, a Twitter używa licencji Apache - czy to zapewnia ochronę, której potrzebują, czy jest coś, czego nie otrzymuję?


title: Czego oczekuje się ode mnie jako świeżo upieczonego absolwenta?

text: Niedawno ukończyłem studia i obecnie pracuję jako programista dla początkujących. Jestem tam od 2 tygodni. Czy to normalne, że czuję się najgłupszą osobą w pokoju? Czuję, że stażyści wiedzą, co robią lepiej!


title: Bezpieczeństwo przez ukrywanie - jaki jest odpowiednik usuwania danych?

text: Nie jestem pewien, czy pytam o to we właściwym miejscu, ale oto: **Bezpieczeństwo przez niejasność** to proces tworzenia danych tak _niejasnych_, że stają się _bezpieczne_, ponieważ nikt nie może ich odczytać/zrozumieć. Moje pytanie brzmi: jaki jest „termin” na usuwanie danych, aby upewnić się, że są one bezpieczne (np. usuwanie starych e-maili)? Rozumiem, że usuwanie może być traktowane jako zaciemnianie danych, ale czy jest to prawidłowe określenie?


title: Najlepsze praktyki dotyczące zachowywania danych z wielkich liter w porównaniu z poprawnymi danymi

text: Mamy kilka lat danych klientów, które były gromadzone w czasie. Przypuszczam, że 95% danych (nazwiska, nazwy firm i adresy) jest w formacie WIELKIMI LITERAMI. Narzędzie do wprowadzania danych używane w naszej organizacji oferuje funkcję „Eksportuj jako właściwy przypadek”. Nie mamy możliwości modyfikacji tej funkcji importu danych. To przełącznik wszystko albo nic. Włączyliśmy ten przełącznik w styczniu 2013 r. i od tego czasu odkryliśmy liczne anomalie w danych: Import oryginalnych danych właściwych ------------- --------------- --- McDonald Mcdonald MacDonald Macdonald O'Neil O'neil My First LLC My First Llc my.email@test.com My.Email@Test.Com John Smith III John Smith Iii Nasze dane są przechowywane w zamkniętym środowisku na serwerze iSeries . Posiadamy interfejs sieciowy, który pozwala na pojedyncze zmiany rekordów danych. Niestety nie mam możliwości uruchomienia zapytania aktualizującego bazę danych, aby zaktualizować nasze dane i dokonać masowych zmian. Jakie są **Najlepsze praktyki**, które zastosowałeś w swojej organizacji w odniesieniu do utrzymywania właściwych danych w przypadku danych w przypadku WIELKICH LITER? Mam dwie lub trzy osoby w organizacji, które naciskają na dane dotyczące właściwego przypadku w systemie. Większość innych osób chce danych w systemie WIELKIMI LITERAMI. Próbuję złożyć prezentację, która stwierdza, jak nierealne jest przejście do środowiska danych w całości Właściwy przypadek. Jakie są dobre argumenty lub argumenty, które wspierają wszystkie dane WIELKIMI LITERAMI?


title: Jak pokazać relację „lub zawiera” — diagram przypadków użycia UML

text: Nie spotkałem się wcześniej z tym problemem i nie mogę go znaleźć w mojej książce Schaum's Outline UML i zastanawiałem się, czy ktoś tutaj mógłby pomóc. Tworzę diagram przypadków użycia dla e-commerce, w którym chcę opisać, że aby dodać książkę do koszyka, musisz albo wyszukać produkty (za pomocą wyszukiwarki stron internetowych) albo przeglądać produkty (za pomocą nawigacja). Ale chodzi o to, że może to być jedno, a nie oba. Czy istnieje sposób na pokazanie, że dodanie produktu do koszyka musi zawierać to lub tamto? Ponieważ inaczej wyglądałoby to, że musi zawierać oba. A może powinienem połączyć dwa przypadki użycia (wyszukiwanie produktów i przeglądanie produktów) w jeden?


title: Czy ktoś wie o AppDynamics? Czy Microsoft ma już coś podobnego? Podgląd zdarzeń? Jestem zmieszany

text: Mamy dużą kolekcję aplikacji Java (80%) i .Net (20%). A ludzie, którzy zarządzają, chcą w jakiś sposób monitorować aplikacje. Więc powiedzieli mi, że są zainteresowani AppDynamics? Trochę się temu przyglądałem, ale nadal tego nie rozumiem. Czy ktoś może mi powiedzieć, o co chodzi? Z mojego zrozumienia wynika, że ktoś chciałby wstrzyknąć API AppDynamics do swojego kodu, aby poinformować o różnych zdarzeniach, które występują? Więc brzmi jak Podgląd zdarzeń? Jestem po stronie .NET i wydaje mi się, że możemy po prostu zapisywać dane do dziennika i raportować z tych danych. Nie rozumiem, co robi dodatkowa złożoność używania „AppDynamics”. Może to przesada??


title: Pomiar zależności przedsiębiorstwa od oprogramowania

text: W licytacji złożonego projektu dla klienta chciałem znaleźć sposób na określenie jego zależności od oprogramowania. Mają wielu ludzi, którzy wprowadzają ręcznie, a arkusze kalkulacyjne Excela zasilają wiele elementów, a także starszy kod i niektóre gotowe rozwiązania, które w żaden sposób nie wchodzą w interakcje. Jedną rzeczą jest powiedzenie „Potrzebujesz oprogramowania do prowadzenia firmy”, ale jak stworzyć miarę tego, aby móc powiedzieć coś w stylu „Obecnie w 68% jesteś uzależniony od oprogramowania” to czas, aby potraktować to poważnie przed rosnącą złożonością więcej kosztuje utrzymanie niż przepisanie?


title: Typ Casting Variable w PHP: Czy jest jakiś praktyczny przykład?

text: PHP, jak większość z nas wie, ma słabe typowanie. Dla tych, którzy tego nie robią, PHP.net mówi: > PHP nie wymaga (ani nie obsługuje) jawnej definicji typu w zmiennej > deklaracji; typ zmiennej jest określony przez kontekst, w którym zmienna > jest używana. Uwielbiam to lub nienawidzę, PHP przerzuca zmienne w locie. Tak więc następujący kod jest poprawny: $var = "10"; $wartość = 10 + $zmienna; var_dump($wartość); // int(20) PHP pozwala również jawnie rzutować zmienną, na przykład: $var = "10"; $wartość = 10 + $zmienna; $wartość = (ciąg)$wartość; var_dump($wartość); // string(2) "20" Wszystko fajnie... ale na moje życie nie wyobrażam sobie praktycznego powodu, aby to zrobić. Nie mam problemu z silnym pisaniem w językach, które to obsługują, np. Java. W porządku i całkowicie to rozumiem. Ponadto jestem świadomy — iw pełni rozumiem przydatność — podpowiedzi typu w parametrach funkcji. Problem, jaki mam z rzutowaniem typu, wyjaśnia powyższy cytat. Jeśli PHP może zamieniać typy _do woli_ , może to zrobić nawet po _wymuszeniu_ rzutowania_ typu; i może to zrobić _w locie_, gdy potrzebujesz określonego typu w operacji. To sprawia, że następujące wartości są poprawne: $var = "10"; $wartość = (int)$zmienna; $wartość = $wartość . „TaDa!”; var_dump($wartość); // string(8) "10 TaDa!" Więc jaki jest sens? Czy ktoś może mi pokazać praktyczną aplikację lub przykład rzutowania typu -- ** taki, który nie powiedzie się, jeśli rzutowanie typów nie będzie włączone? ** Pytam o to tutaj zamiast SO, ponieważ uważam, że **praktyczność** jest zbyt subiektywna. ### Edytuj w odpowiedzi na komentarz Chrisa Weźmy ten teoretyczny przykład świata, w którym rzutowanie typów zdefiniowanych przez użytkownika _ma sens w PHP_ : 1. Wymuszasz rzutowanie zmiennej `$foo` jako `int` \--> `(int) $foo. 2. Próbujesz przechowywać wartość ciągu w zmiennej `$foo`. 3. PHP zgłasza wyjątek!! <\--- To miałoby sens. Nagle istnieje przyczyna rzutowania typu zdefiniowanego przez użytkownika! Fakt, że PHP będzie zmieniać rzeczy w miarę potrzeb, sprawia, że kwestia rzutowania typu zdefiniowanego przez użytkownika jest niejasna. Na przykład następujące dwa przykłady kodu są równoważne: // example 1 $foo = 0; $foo = (ciąg)$foo; $foo = 'Liczba powodów, dla których programista wpisał rzut $foo jako ciąg znaków: ' . $foo; // przykład 2 $foo = 0; $foo = (int)$foo; $foo = 'Liczba powodów, dla których programista wpisał rzut $foo jako ciąg znaków: ' . $foo; ### AKTUALIZACJA Zgadnij, kto używał typów w praktycznym środowisku? Z poważaniem. Wymogiem było wyświetlanie wartości pieniężnych na stronie internetowej dla menu restauracji. Projekt witryny wymagał przycięcia końcowych zer, tak aby wyświetlacz wyglądał mniej więcej tak: Pozycja menu 1 .............. 4 USD Pozycja menu 2 ...... ........ 7.5 $ Pozycja menu 3 ............ $ 3 Najlepszym sposobem, jaki znalazłem, aby to zrobić, było rzutowanie zmiennej jako zmiennoprzecinkowej: $price = ' 7,50'; // ciąg z warstwy bazy danych. echo 'Pozycja menu 2 .............. $' . (zmienna)$cena; PHP przycina końcowe zera liczby zmiennoprzecinkowej, a następnie przekształca element zmiennoprzecinkowy na łańcuch w celu konkatenacji.


title: Dlaczego niektórzy programiści przechowują wartości w zmiennych globalnych lub zmiennych składowych, ale nie są ponownie używane?

text: Mówię o normalnych aplikacjach PC, pamięć powinna wystarczyć. Deklarują zmienne globalne lub składowe. W każdej funkcji/metodzie używają tych samych zmiennych globalnych/członkowych. Na początku każdej metody zmienne są ponownie inicjowane, więc stara wartość nigdy nie jest używana. Dlaczego zachowują zmienne, ale nie ma szans na ponowne wykorzystanie starej wartości? klasa A { Lista<Samochód> carList; public List<Car> M() { // zawsze ponownie inicjuj zmienną this.carList = new List<Car>(); // ... // pobierz z bazy danych return this.carList; } public List<Car> N(string id) { // zawsze ponownie inicjuj zmienną this.carList = new List<Car>(); // ... // pobierz z bazy danych return this.carList; } }


title: Przechowywanie haseł w postaci zwykłego tekstu w celu wykrywania oszustw

text: Dobrze znam najlepsze praktyki przechowywania haseł użytkowników: * Nigdy nie przechowuj haseł w postaci zwykłego tekstu * Nigdy nie przechowuj zaszyfrowanych haseł; zawsze przechowuj skróty haseł * Zawsze solij swój skrót hasła, aby powstrzymać ataki typu brute force * Zawsze używaj unikalnych soli, aby powstrzymać ataki przy użyciu tęczowych tablic. Jednak ostatnio natknąłem się na potencjalnie uzasadniony przypadek użycia do przechowywania haseł użytkownika w postaci zwykłego tekstu (lub zaszyfrowanych w postaci zwykłego tekstu): wykrywanie oszustw. Na przykład, jeśli mamy system, który musi ograniczać zakupy do 1 (lub niewielkiej liczby) na osobę, zauważyliśmy, że oszuści często używają tego samego hasła w kółko, więc jeśli wykryliśmy nieuczciwe zakupy na jednym koncie, może wykorzystać fakt dopasowania hasła jako użyteczny sygnał w systemie wykrywania oszustw. Jednak wdrożenie takiego systemu wymaga złamania wszystkich najlepszych praktyk dotyczących przechowywania haseł. Pytanie: **Jeśli okaże się, że możliwość wykrywania oszustw polegająca na odzyskiwaniu haseł jest konieczna, jakie są najlepsze praktyki bezpiecznego przechowywania haseł, ale w sposób dostępny w postaci zwykłego tekstu?**


title: Czy to dobry pomysł, aby podjąć pracę programisty, wiedząc, że wkrótce odejdziesz?

text: Obecnie jestem na bardzo stabilnej, wygodnej pozycji programisty, gdzie większość mojego rozwoju jako programisty to solo. Mój obecny zespół nie zajmuje się tak naprawdę tworzeniem oprogramowania i nie wszyscy są nim zainteresowani na tyle, aby rozwijać się jako grupa. Niemniej jednak kocham ludzi, z którymi pracuję i mamy okazję (przez większość czasu) pracować nad fajnymi projektami. Za pośrednictwem rekrutera zaoferowano mi bardzo ekscytującą pracę z grupą super inteligentnych programistów, którzy uwielbiają dyskutować, ulepszać, rozwijać. Jednak (a pracodawca o tym nie wie), planuję opuścić teren za **nieco ponad rok**. Te plany są dość określone, więc mentalność „Hej, wszystko może się zdarzyć w ciągu roku”, choć jest prawdziwa, nie wydaje się odpowiednia. Należy wziąć pod uwagę inne czynniki (**dużo** dłuższy dojazd, dłuższe godziny pracy itp.), ale tym, który naprawdę mnie niepokoi, jest to, że nie wiem, co czuję, rozpoczynając coś tak zmieniającego życie, tylko po to, by zacznij planować wyjazd za ~9 miesięcy. Osobiście chcę czuć, że zaczynam pracować, a nie skakać. To prawda, że również nie mogę się powstrzymać od rozważenia potrzeb pracodawcy; Nie chcę być facetem, który został tylko przez rok, zmuszając ich do ponownego rozpoczęcia procesu rekrutacji. Zwłaszcza w dziedzinie tworzenia oprogramowania czuję, że zainwestowano w zatrudnianego pracownika. _(Szkolenie w dziedzinie biznesu, szkolenie w zakresie konkretnych praktyk organizacji, szkolenie w zakresie narzędzi itp.)_ Jestem takim typem programisty, który chce się odwdzięczyć za tę inwestycję – w przeciwnym razie czuję, że nie mam nic do roboty pokaż dla siebie. Czy myślisz, że **rok to wystarczająco dużo czasu, aby zwrócić tę inwestycję**? **Edytuj:** Doceniam wszystkie odpowiedzi, które otrzymałem, ale chciałem wyjaśnić, że nie wyjeżdżam za 9 miesięcy, wyjeżdżam za 12-13 miesięcy. 9 miesięcy to tylko przybliżenie tego, jak długo będę musiała zacząć _myśleć_ o wyjeździe.


title: Projektowanie usługi sieciowej zatwierdzania 3-fazowego

text: Mamy już w pełni działającą usługę internetową, która obsługuje żądania z wielu urządzeń paltform. Każde urządzenie wysyła tylko jedno żądanie na raz i natychmiast po odpowiedzi na żądanie urządzenie wysyła aplikacyjne ACK, ten komunikat ACK jest jak zwykły komunikat żądania, a wszystko odbywa się przez http. Podczas testu wydajności/obciążenia odkryliśmy, że często zdarza się następująca sytuacja: zwykłe żądania są przetwarzane poprawnie, ale gdy wiadomość ack jest wysyłana, jest ona rzucana, ponieważ serwer nie może obsłużyć zbyt wielu żądań. Akceptujemy przypadek, w którym serwer zgłasza żądania z powodu przeciążenia, ale nie akceptujemy zgłaszania komunikatów ack. Zasadniczo chcemy, aby serwer przetwarzał 2 żądania na raz dla każdego urządzenia, czy jest to mimo wszystko w obecnej sytuacji? jeśli nie, jakie zmiany musimy wprowadzić?


title: Jak inżynierowie oprogramowania wdrażają aplikacje?

text: Zainteresowany tym, jak ludzie wdrażają oprogramowanie dla swoich klientów, mam następujące wymagania: 1. Klienci na różnych systemach operacyjnych. linux i Windows 2. Nie mogę wydać kodu źródłowego 3. Idealnie chcę mieć możliwość tworzenia GUI, a nie tylko polecenia cmd line 4. Nie mogę zakładać, że coś jest preinstalowane na komputerach klientów 5. Chciałby użyć ładnego, wysokiej produktywności Używałem Pythona do różnych rzeczy, ale nie jestem pewien, jak można go wdrożyć bez zwalniania kodu źródłowego i bez wiedzy, że Twoi klienci mają zainstalowanego Pythona. za każdym razem Czy istnieje inny podobny język wysokiego poziomu, który można poprawnie skompilować i dystrybuować jako plik binarny, prawdopodobnie z kilkoma obsługującymi współdzielone biblioteki lub coś takiego?


title: Czy musisz być dobry z matematyki, żeby być dobrym programistą?

text: Wydaje się, że konwencjonalna mądrość sugeruje, że dobrzy programiści są również dobrzy z matematyki. Albo że te dwie rzeczy są w jakiś sposób nierozerwalnie powiązane. Wiele książek o programowaniu, które przeczytałem, zawiera wiele przykładów, które są rozwiązaniami problemów matematycznych lub są w jakiś sposób związane z matematyką, tak jakby te przykłady miały sens dla większości ludzi. Więc pytanie, które chciałbym zadać, brzmi: czy musisz być dobry z matematyki, aby być **dobrym** programistą?


title: Jak nauczyć się matematyki, aby zwiększyć umiejętności programowania?

text: > **Możliwy duplikat:** > Jaki stopień wiedzy matematycznej powinien posiadać programista? > Gdzie powinienem zacząć naukę matematyki, jeśli chodzi o programowanie? Potrzebuję porady. Jestem web developerem i obecnie pracuję w firmie IT. PHP to mój ulubiony język. Ale nie chcę zostać tylko programistą PHP, chcę uczyć się nowych rzeczy, chcę się uczyć także programowania gier i innych języków programowania, które wykorzystują umiejętności matematyczne. Nie jestem dobry z matematyki i szczerze zapomniałem ważnych pojęć matematycznych, ale jestem gotów nauczyć się tego od zera. Może to zajmuje miesiąc lub lata, ale chcę być (dobry, lepszy, najlepszy) w tym. Mój problem polega na tym, że nie wiem, od czego powinienem zacząć. Chcę wiedzieć, jaki rodzaj matematyki muszę znać, aby osiągnąć ten cel. Chcę zacząć od samego początku, jeśli to konieczne, abym wiedział wszystko, co będzie potrzebne w programowaniu z użyciem matematyki. Proszę o pomoc i dzięki...


title: Co matematyka ma wspólnego z programowaniem?

text: Właśnie rozpocząłem dyplom z tworzenia oprogramowania. W tej chwili zaczynamy od podstawowej Javy i tym podobnych (więc od samego dołu można powiedzieć) - co jest w porządku, nie mam żadnego doświadczenia w programowaniu poza wiedzą, jak zrobić "Hello World" w Javie. Ciągle słyszę, że matematyka jest powiązana z kodowaniem, ale jak to jest? Jakie ogólne przykłady pokazują, jak matematyka i programowanie idą w parze lub są od siebie zależne? Przepraszam, że moje pytanie jest niejasne, ledwo zaczynam mieć ogólne pojęcie o tym, w jaki świat wchodzę jako uczeń kodu małpy...


title: Jakiej matematyki potrzebuję, aby zostać doskonałym programistą

text: Chcę zostać twórcą aplikacji/gry wideo lub twórcą stron internetowych. Jaką matematykę muszę znać i czy muszę ją dobrze znać. Czy muszę znać rachunek różniczkowy, statystyki i modelowanie, jakiego rodzaju?


title: Czy możesz odnieść sukces jako programista, nie będąc dobrym z matematyki?

text: Nigdy nie byłem dobry z matematyki w liceum. Ale zacząłem tworzyć aplikację do nauki. I jestem ciekawa, czy musisz być świetny w matematyce, jeśli chcesz zostać profesjonalnym programistą.


title: Programista stron internetowych i matematyka

text: Właśnie nauczyłem się HTML/CSS i ćwiczę wszystko, co czytam, aby było dla mnie bardziej zrozumiałe i naprawdę to lubię. Moim celem jest bycie Modern Web Developerem, zarówno front-end, jak i back-endem, więc nie przestanę się uczyć. Planuję teraz przeskoczyć na JavaScript, ale chciałbym wiedzieć, jak ważna jest matematyka w byciu programistą stron internetowych. 1. Czy muszę znać matematykę? 2. Jeśli tak, jaki rodzaj matematyki powinienem znać i rozumieć?


title: Jak ważna jest matematyka w zależności od tego, co kodujesz?

text: > **Możliwe duplikowanie:** > Co matematyka ma wspólnego z programowaniem? > Jak często musisz rozwiązywać problemy czysto matematyczne lub algorytmiczne? Słyszałem, że matematyka może być bardzo ważna w programowaniu. Jestem pewnym siebie programistą Pythona i zacząłem C++. Do tej pory nie spotkałem się z niczym, w którym musiałbym użyć prawdziwej matematyki. Musiałem użyć logiki i trochę rozwiązywania problemów, ale to wszystko. Chciałem również wiedzieć: czy konkretna część kodowania (inżynieria oprogramowania lub tworzenie gier) bardziej wykorzystuje matematykę?


Czy musimy uczyć się matematyki, aby być dobrym programistą?


title: Od czego powinienem zacząć uczyć się matematyki w odniesieniu do programowania?

text: Stworzyłem już kilka systemów, webowy system menu, system płacowy i obecnie rozwijam system zarządzania pacjentami, znam java,C,C++ C#, javascript PHP i inne języki. ale chodzi o to, że czuję, że brakuje mi wiedzy o dobrej matematyce. Nadal studiuję na studiach, ale wydaje mi się, że muszę wiedzieć więcej o matematyce związanej z programowaniem, jaką lub jaką część matematyki powinienem studiować, aby poprawić swoje umiejętności programowania? Projekty algorytmów? Algorytmy? Jaka gałąź matematyki?


title: Używanie Clojure zamiast Pythona ze względu na skalowalność (wielordzeniowe), dobry pomysł?

text: Po przeczytaniu http://clojure.org/rationale i innych porównaniach wydajności między Clojure i wieloma językami, zacząłem myśleć, że oprócz łatwości użycia, nie powinienem już kodować w Pythonie, ale w Clojure. Właściwie zacząłem czuć się nieodpowiedzialny za nieuczenie się clojure, widząc, jakie to zalety. Czy ma sens? Czy nie mogę naprawdę efektywnie wykorzystać wszystkich rdzeni, używając bardziej imperatywnego języka, takiego jak Python, niż dialekt seplenienia lub inny język funkcjonalny? Wygląda na to, że wszystkie korzyści płyną z używania niezmiennych danych, czy nie mogę tego zrobić w Pythonie i mieć wszystkie korzyści? Kiedyś zacząłem uczyć się Common Lisp, czytać i wykonywać prawie wszystkie ćwiczenia z książki, którą pożyczyłem z mojej biblioteki uniwersyteckiej (uznałem, że jest całkiem niezła, pomimo małej popularności na Amazon). Ale po pewnym czasie za bardzo się zmagałem, żeby zrobić kilka prostych rzeczy. Myślę, że jest coś, co jest bardziej imperatywne w swojej naturze, co sprawia, że trudno je modelować w funkcjonalny sposób. Chodzi o to, czy Python jest tak potężny jak Clojure do tworzenia aplikacji, które wykorzystują zalety tej nowej wielordzeniowej przyszłości? Zauważ, że nie sądzę, aby używanie semaforów, mechanizmów blokowania lub innych podobnych mechanizmów współbieżności było dobrą alternatywą dla „automatycznej” paralelizacji Clojure.


title: Czy w diagramie UML należy uwzględniać klasy frameworkowe (np. .NET, Java)?

text: Powiedz na diagramie sekwencji UML, pokazuję wywołanie bazy danych przy użyciu ADO.NET. Czy muszę uwzględnić na diagramie obiekt SqlConnection, SqlCommand, SqlDataReader? Czy to tylko preferencja zdeterminowana poziomem głębi/szczegółowości?


Czy powinienem zawracać sobie głowę programowaniem dla wyłączonego JavaScript? Czuję, że dla większości lepiej spędzam swój czas na rozwijaniu.


title: Zastanawiasz się nad obsługą klientów innych niż JavaScript?

text: Biorąc pod uwagę, że jest kwiecień 2013; czy nadal muszę się martwić o klientów nieobsługujących/nieobsługujących JavaScript? Uwaga: To pytanie wyklucza używanie tekstu pomocniczego z następującymi elementami: _JavaScript jest wymagany do wyświetlenia tej strony, uaktualnienia do nowoczesnej przeglądarki lub zmiany ustawień_ BTW: Dla jasności, w celu obsługi klientów nieobsługujących/nieobsługujących JavaScript; Będę musiał: wstępnie wyrenderować (buforować) wersję mojej oddzielonej strony (JavaScript po stronie klienta zużywa mój RESTful API). Z powodu ograniczeń frameworka spowoduje to znacznie mniejszą funkcjonalność dla użytkownika nieobsługującego JavaScript.


title: Jak ważna jest wdzięczna degradacja JavaScript?

text: Czy twórcy stron internetowych powinni nadal wkładać wysiłek w stopniowe ulepszanie naszych aplikacji internetowych za pomocą JavaScript, zapewniając, że funkcje ulegają swobodnej degradacji, a tym samym zapewniając dostępność? A może powinniśmy poświęcić ten czas na nowe funkcje lub inne obszary rozwoju? Podtekst tego pytania brzmiałby: Ilu naszych klientów/klientów/użytkowników korzysta z naszych stron internetowych lub aplikacji z wyłączoną obsługą JavaScript? Czy masz jakieś projekty z wymaganiami, które konkretnie wymagają funkcjonalności JavaScript (prawie wszystkie moje) i czy te wymagania również wymagają wdzięcznej degradacji? Aby zadać to pytanie, wyciągnąłem programers.stackexchange.com bez włączonej obsługi JavaScript i powitał mnie komunikat: "Programiści - wymiana stosu działa najlepiej z włączoną obsługą JavaScript". Trudno było się zalogować, chociaż strona wydawała się ogólnie działać poprawnie. (Nie mogłem zagłosować na żadne pytania.) Myślę, że to satysfakcjonujące podejście do rozwoju. Wyobraź sobie wysiłek włożony w sprawienie, by wszystkie funkcje witryny działały ze zwykłym, starym kodem HTML i logiką po stronie serwera. Z drugiej strony zastanawiam się, ilu użytkowników zraziło to podejście. Wszyscy zostaliśmy przeszkoleni (przynajmniej ci dobrzy programiści wśród nas), aby korzystać z progresywnego ulepszania i zapewniać, że dynamiczne funkcje naszych aplikacji internetowych będą się zgrabnie pogarszać. Czy to progresywne ulepszenie po prostu się wkurza, czy niektórzy z naszych klientów faktycznie korzystają z niektórych usług internetowych bez włączonej obsługi JavaScript?


title: czy GAE to infrastruktura zdolna do hostowania aplikacji używanej przez miliony aktywnych użytkowników?

text: Chciałbym wiedzieć, z ograniczeniami GAE wymienionymi poniżej, czy jest w ogóle możliwe zbudowanie świetnej aplikacji społecznościowej (takiej jak Facebook) przez hostowanie tej aplikacji na GAE? Innymi słowy, czy GAE jest infrastrukturą zdolną do hostowania aplikacji używanej przez 600 milionów aktywnych użytkowników? Ograniczenia, które wykopałem z kilku forów / blogów (proszę dodać do listy, jeśli czegoś brakuje): 1. Żądanie/odpowiedź HTTP * Maksymalny rozmiar żądania: 32 MB * Maksymalny rozmiar odpowiedzi: 32 MB * Wszystkie żądania muszą odpowiedzieć w ciągu 30 sekund, w przeciwnym razie GAE wyrzuci DeadlineExceededException * Każde zadanie crona musi zostać wykonane w ciągu 10 minut * Zadania crona nie mogą wykorzystywać map reduction * Każdy GET lub POST do innej witryny jest przerywany po 5 sekundach. Możesz skonfigurować go tak, aby czekał maksymalnie 10 sekund. (serwery pośrednie byłyby niezbędne do wielokrotnej pracy z Twitterem i Facebookiem) * Klient nie może połączyć się z GAE przez FTP (tylko HTTP i HTTPS). * Brak https dla domen niestandardowych. Tylko dla domen id-aplikacji.appspot.com. * W przypadku napływu użytkowników pojawia się błąd „przekroczenia limitu”. 2. Baza danych * Zachowanie bazy danych nie jest takie samo w przypadku rozwoju lokalnego, jak w przypadku rzeczywistych serwerów. * GQL. Nic więcej. * Żadne zapytanie nie może pobrać więcej niż 1000 rekordów (poważnie jest do bani, jeśli chcesz, aby klient miał przycisk „przejdź do trybu offline-teraz” jednym kliknięciem) * Jeśli potrzebujesz liniowego dostępu do ogromnej liczby rekordów, aby wykonać operację, nie masz szczęścia (systemy Google są masowo klastrowane) * Maksymalny rozmiar wartości Memcache to 1 MB. * Nie można wykonać prostego wyszukiwania tekstowego * Nie można dołączyć do 2 stołów. * Powolne (Musisz przeczytać o tym, jak rozdzielać tabele za pomocą dziedziczenia, aby móc przeszukiwać tabelę, pobierać klucz, a następnie uzyskiwać jego element nadrzędny, aby uniknąć wydajności deserializacji) * Wyjątek środowiska uruchomieniowego „Za dużo indeksów” * Jednostka może mają najwyżej 5000 wartości właściwości w indeksie * Nazwy kluczy w postaci ***** (początek i koniec z dwoma podkreślnikami) są zarezerwowane i nie powinny być używane przez aplikację. * Nazwy kluczy są ograniczone do 500 bajtów (zakodowane w UTF-8, jak sądzę) 3. Język * python lub java lub Go (lub języki korzystające z JVM, takie jak Groovy, Scala i inne) 4. Problemy z serwerem * Brak statycznego adresu IP (może mają problemy z ograniczaniem przepustowości i przydziałem podczas wywoływania zewnętrznych interfejsów API) * Każda aplikacja jest ograniczona do 3000 plików * Brak kontroli nad systemem operacyjnym lub sprzętem, na którym działa aplikacja internetowa


title: Jak rozpoznać błędy

text: Czasami natrafiam na coś, co nie do końca działa poprawnie lub po prostu nie ma dla mnie sensu i często powstrzymuję się od myślenia, że to błąd w bibliotece lub kodzie, którego używam. Na przykład dzisiaj odkryłem, że TrayIcon Javy nieznacznie zmienia niektóre wartości RGB wyświetlanego obrazu. Nie wystarczy zmienić obraz, ale tylko R, które jest wyższe lub G, które jest niższe. Jestem samoukiem w wieku 18 lat (około 5 lat) i zawsze myślę, że brakuje mi jakiejś informacji o tym, jak działa jakaś część komputera i dlatego dana sytuacja nie ma sensu. Skoro więc niekoniecznie wiesz wszystko o danym obszarze komputera i sposobie jego działania, jak można zidentyfikować błąd i wiedzieć, że jest to błąd z absolutną pewnością?


title: Jak uniknąć problemów związanych ze złożonością frameworków, jednocześnie utrzymując swój zespół na rynku?

text: Decydując się na zaprojektowanie projektu oprogramowania z moimi kolegami, większość sugestii dotyczy korzystania z określonych frameworków, „ponieważ jest popularny na rynku pracy” lub „to jest framework, dzięki któremu rekruterzy dzwonią do telefonu”, a nigdy tym, kim jestem poszukiwanie, "ponieważ dobrze pasuje do projektu, ponieważ sprawia, że system jest bardziej adaptacyjny do przyszłych zmian i ułatwia życie programistom". Nie zacząłem patrzeć na projekty w ten sposób, dopóki nie zacząłem czytać o projektowaniu opartym na domenie. Odkryłem, że rzeczywista domena jest ukryta głęboko pod używanymi frameworkami i trudno jest poznać procesy biznesowe, które zostały zaimplementowane przez oprogramowanie. Czy istnieje sposób na połączenie dwóch konkurujących ze sobą celów: wyeksponowanie się jako zespół programistów, a jednocześnie unikanie złożoności? Czy frameworki są kompromisem, czy istnieją inne rozwiązania?


title: Co zrobić, aby ważne szczegóły nie zostały usunięte z dokumentów technicznych?

text: Jak wielu tutaj, jestem pewien, że moja firma ma osobę, która działa jako łącznik między rozwojem a większością innych obszarów firmy, a także naszymi klientami. Większość komunikacji dotyczącej nowych wydań, poprawek, znanych problemów itp. przechodzi przez tę osobę. Ponieważ jednak osoba ta nie jest deweloperem i nie jest głęboko zaangażowana w projekty deweloperskie, czasami to, co deweloperzy zgłaszają do rozpowszechniania, jest edytowane pod kątem zwięzłości lub prostoty, a w tym procesie kluczowe szczegóły lub subtelności są tracone. Naciskałem na proces recenzji, który obejmuje autora oryginalnego dokumentu, czymkolwiek on był, zanim materiał zostanie opublikowany. Między innymi, jak sądzę, pozwoliłoby to osobie z największą wiedzą techniczną na temat tego, o czym się mówi (tej, która faktycznie napisała kod nowego programu, funkcji lub poprawki) zastanowienie się nad wszystkim, co mogło być nadmiernie uproszczone lub otrzymał błąd merytoryczny w procesie edycji. Osoba zajmująca się komunikacją ze swojej strony uważa, że problemem jest edukacja; osoba ta jest stosunkowo nowa w firmie i nie ma dużego doświadczenia ze wszystkimi aplikacjami i innymi produktami wytwarzanymi i wspieranymi przez dział rozwoju. Osoba czuje, że gdy zdobędzie to doświadczenie poprzez szkolenie i czytanie materiału, który przechodzi przez jej ręce, problem sam się rozwiąże. Czują też, że tam i z powrotem marnują czas. Myślę, że zasługi są w obie strony. Co myślicie?


title: Czy to szaleństwo tworzyć dzisiaj TUI?

text: Zaczynam opracowywać nowy program. Jest to w zasadzie interfejs do bazy danych, uruchamia kilka zapytań, pokazuje dane w ładny sposób i umożliwia łatwe wprowadzanie nowych danych (takich jak ta strona). Myśląc o tym, jakich programów używam na co dzień, zdaję sobie sprawę, że tylko moja przeglądarka internetowa jest programem GUI, reszta to TUI (w tym przypadku TUI to Text User Interface, jak w ncurses). Planuję więc napisać to w ncurses z interfejsem podobnym do vima/mutta. Ten program będzie używany tylko przez doświadczonych użytkowników, a szybkość jest bardzo pożądana. Znalazłem jedno badanie na ten temat: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2655855/ Wszystkie inne badania, które znalazłem, dotyczyły tylko początkujących użytkowników i dla nich GUI jest lepszy. Co jest najlepsze dla doświadczonego użytkownika, który na co dzień będzie pracował z programem? To jest trochę podobne, ale różnica polega na tym, że to pytanie dotyczyło programu nieinteraktywnego: czy tworzenie aplikacji CLI jest uważane za „wsteczne”?


title: Czy możemy wycenić oprogramowanie na podstawie liczby linii, języka, technologii i tego typu rzeczy?

text: Niedawno mój znajomy kupił aplikację inwentaryzacyjną od dostawcy, który użył stwierdzenia typu „ **zbudowany na podstawie 10000 linii kodu**” jako hasła marketingowego, aby zwiększyć swój udział w rynku. Widziałem również inne oprogramowanie, które twierdziło, że jest budowane w specjalnym języku (C#, PHP, Java itp.) lub oparte na specjalnej technologii. Moje pytanie brzmi: **czy możemy moralnie i logicznie wycenić oprogramowanie w oparciu o te czynniki?** Chodzi mi o to, czy dla użytkownika końcowego ma znaczenie, ile linii kodu napisaliśmy? Lub jakiego języka programowania używaliśmy? Czynnik taki jak platforma wydaje się w tym przypadku logiczny, ponieważ niektórzy użytkownicy chcą, aby aplikacja była uruchamiana na przykład w systemie Windows lub Mac. Ale co z innymi czynnikami, takimi jak zastosowane technologie, architektura, linie kodu, język programowania, a nawet baza danych?


title: Jak radzisz sobie z historiami zależnymi w scrumie?

text: W firmie, w której obecnie pracuję, zauważyliśmy, że czasami niektóre historie są ze sobą powiązane (jak w zbyt sprzęgniętych). Może to oznaczać, że należą one do tej samej ogólnej funkcji lub są różnymi funkcjami, ale niektóre z nich muszą zostać ukończone jako pierwsze, aby przejść do następnych itp. Jak radzisz sobie z tymi przypadkami, bez zatrzymanie przepływu pracy iteracji? Czy robimy coś złego?


title: Jakie ryzyko wiąże się z uruchomieniem aplikacji na smartfony początkowo na telefon z systemem innym niż iOS? Jakie są zalety?

text: Pracuję nad pomysłem jako projekt hobby, prawie skończyłem go na Androidzie i niedługo skończę na platformie Java ME, planujemy również na innych smartfonach, w tym na telefonach BlackBerry, iOS i Symbian. Ale kodowanie na tych platformach jeszcze się nie rozpoczęło. Oto moje pytania dotyczące tego **Czy to mądry krok, aby najpierw wydać tę aplikację na urządzenie inne niż iOS i poczekać na dobre recenzje, zanim zacznę na iPhone'a i inną platformę?** Wybieram to, ponieważ co android [czytaj nie Wersja iOS] wymaga dobrego opakowania i trochę prac wykończeniowych. Ale obawiam się, że nie będzie to tak bardzo popularna, a nawet może być mniej pobrań niż oczekiwano tylko dlatego, że ta aplikacja nie będzie zwracać uwagi między zbyt wieloma aplikacjami. Lub **Lepiej najpierw opracować wersję iOS, a nie wersję inną niż iOS?** Być może przykuwam większą uwagę ze względu na popularność Apple wśród programistów i użytkowników, ale nie czuję się dobrze sprzedawać oryginalnego androida [nie iOS] jako portowanie iPhone'a, podczas gdy rzeczywistość jest odwrócona. **Jakie są korzyści z wydania najpierw wersji innej niż iOS, a następnie przeniesienia jej na iOS?**