title: Jakie są cechy charakterystyczne lub cechy kodu o jakości produkcyjnej?

text: Po raz pierwszy będę dostarczał kod do projektu freelancera (aplikacji internetowej), a ponieważ nie mam dużego doświadczenia w dostarczaniu kodu, trudno mi zdecydować, czy mój program jest gotowy do wdrożenia, czy nie. Rozumiem, że kod na poziomie produkcyjnym musi mieć następujące cechy: * **Tolerancja błędów** : zdolność do przetrwania nieprzechwyconych wyjątków * **Nadmiarowość danych**: nigdy nie trać danych użytkownika * **Skalowalność** : Obsługa dodatkowego obciążenia nie powinno wymagać przepisywania aplikacji * **Pokrycie testów** : „przyzwoita” ilość przetestowanego kodu Niektóre z tych cech są specyficzne dla samego programu, podczas gdy inne są bardziej związane ze środowiskiem (czy to przy użyciu wielu klastrów). Jednak nawet cechy zależne od środowiska wpływają na sposób projektowania programu. Moje pytanie brzmi zatem: Jakie są inne cechy, które sprawiają, że kod produkcyjny jest tak inny niż kod nieprzeznaczony do produkcji? Aby ograniczyć zakres pytania, skup się tylko na **aplikacjach webowych**. **Edytuj** : Postaram się zawęzić zakres, pytając o cechy charakterystyczne dla mojej sytuacji. Jako freelancer byłem odpowiedzialny za wszystko, od zakupu VPS, przez konfigurację, pisanie kodu, aż po wdrożenie. Chociaż projekt i jego konfiguracja są dobrze udokumentowane, klient nie będzie w stanie go utrzymać. Aplikacja nie jest skomplikowana, ale zależy od wielu zewnętrznych komponentów, co sprawia, że jest bardzo podatna na awarie, jeśli te komponenty się zmienią/znikną. Celem jest stworzenie usługi, która byłaby w stanie przetrwać jak najdłużej bez konserwacji klienta.


title: Jeśli konkurencja używa „lingua obscura” do rozwoju (dlaczego) mam się martwić?

text: Czytałem esej Paula Grahama „Pokonać średnie” (2003) i oto, co miał do powiedzenia: > Im bardziej informatyczny charakter miały opisy stanowisk, > tym mniej niebezpieczna była firma. Najbezpieczniejsze były te, które chciały mieć doświadczenie z Oracle. > Nigdy nie musiałeś się o to martwić. Byłeś również bezpieczny, jeśli powiedzieli, że > chcą programistów C++ lub Java. Gdyby chcieli programistów Perla lub Pythona, > to byłoby trochę przerażające — zaczyna to brzmieć jak firma >, w której przynajmniej stronę techniczną prowadzą prawdziwi hakerzy. To jest przestarzały esej. Jednak nie widzę, jak używanie nietypowego języka (C/C++/Java, C#) byłoby _'mniej niebezpieczne'_. Jeśli programiści organizacji są bardzo biegli w języku programowania, powinni być równie biegli w tworzeniu kodu w przyzwoitym tempie. W rzeczywistości, jeśli używasz nietypowego języka, czy problemy z konserwacją/ulepszaniem nie uderzą cię w twarz, ponieważ na dłuższą metę nie będzie dostępnych zbyt wielu programistów? Do tworzenia szybkich i brudnych systemów zgadzam się, że niektóre języki pozwalają wystartować stosunkowo szybciej niż inne. Ale czy esej/komentarz Paula Grahama ma sens w 2012 roku i później? Jeśli startup miałby używać _typowych języków IT_ do rozwoju, dlaczego jego konkurencja miałaby się mniej martwić? Nie widzę, jak sam język robi różnicę. IMHO to doświadczenie programistów z językiem, który ma znaczenie i dostępność frameworków, dzięki czemu możesz SUCHYĆ (nie powtarzaj się), a nie tylko kodować w określonym języku. Czego mi brakuje? Czy oznacza to, że startupy lepiej wybierają języki inne niż IT (nawet jeśli programiści mogą być w nich bardzo biegli)? Jakie (programujące) siły ekonomiczne/rynkowe stoją za tym twierdzeniem? PS: 'lingua obscura' nie ma ranić niczyich uczuć :)


title: Tworzenie stron internetowych Razor — Visual Studio i/lub WebMatrix?

text: Kiedy zacząłem uczyć się o stronach internetowych, skorzystałem z kilku samouczków Microsoft, z których wszystkie wykorzystywały WebMatrix. Robiłem to, dopóki nie zdałem sobie sprawy, że WebMatrix nie oferuje debugowania. Czekać? Co?? Nie ma mowy. I szybko przeniosłem tworzenie stron WWW do Visual Studio. Chociaż było kilka rzeczy, które moim zdaniem zostały dobrze zrobione w WebMatrix, nie znalazłem niczego, czego nie mogę zrobić w Visual Studio. Poza tym, o ile ktoś, kto wie lepiej ode mnie, nie oświeci mnie, jestem zaciekle przeciwny rozwijaniu tego samego projektu z dwoma różnymi IDE; Po prostu wydaje mi się, że to niepotrzebne ryzyko. Niemniej jednak chciałbym zapytać o Twoje przemyślenia/spostrzeżenia na ten temat. Jestem bardzo ciekawa, czy ktokolwiek z was używa ich w tandemie, a jeśli tak, to z jakich aspektów każdego z nich korzystacie najbardziej? I oczywiście czy sprawia to problemy?


title: Platformy cloud computing mają tylko jeden procesor. Czy to oznacza, że nie powinienem używać programowania równoległego?

text: Prawie każda instancja w chmurze, jaką mogę znaleźć, oferuje tylko jeden procesor. Dlaczego teraz jest to tylko jeden procesor i czy powinienem się spodziewać, że liczba ta wzrośnie w przyszłości? Czy ten projekt ma wpływ na projekt mojego kodu, tak aby wykluczyć technologie, takie jak biblioteka zadań równoległych? Jest to temat dla Programmers.SE, ponieważ wpływa na długoterminową skalowalność kodu wielowątkowego na platformach w chmurze.


title: Pytania dotyczące architektury z Ruby i Java

text: Jestem w fazie badawczej projektu, który musi korzystać z bibliotek innych firm, które są w Javie, więc utknąłem w Javie przynajmniej w niewielkim stopniu. Rozważam wdrożenie Ruby jako warstwy frontonu. To dałoby mi możliwość wywołania klas Javy jako usługi sieciowej przez trafienie na określony adres URL, czy to prawda? Czy to generalnie solidne podejście do rzeczy? Ponadto, jak wpłynie to na moje środowisko kompilacji, gdy utworzę plik .war za pomocą narzędzia Ant? czy powinienem mieć kod src/java i src/ruby, czy też pliki ruby idą gdzie indziej? Jakieś wskazówki i pułapki na ten temat? Jestem trochę nowy w Ruby, więc porady byłyby mile widziane. Rozważałem również JRuby, ale wydawało się, że jest to mniej dojrzałe narzędzie, które ma po prostu JVM do płynniejszego wywoływania klas Java, prawda? Martwi mnie dojrzałość tego narzędzia i nie jest to ani Java, ani Ruby.


title: MVC4 : Jak stworzyć model w czasie wykonywania?

text: W moim projekcie dynamicznie tworzę tabelę nadając jej nazwę (np. student) i dodając pola do tej tabeli, a następnie zapisuję tabelę. Teraz moja tabela jest tworzona w bazie danych SQL Server. Załóżmy, że tabela zawiera dane i chcę pokazać dane tabeli (były student) na WebGrid. Ale problem polega na tym, że nie mam modelu dla tego stołu (np. Student). Jak więc stworzyć model dla nowo utworzonej tabeli lub jak wyświetlić dane w WebGrid?


title: Jak edukować swoich kolegów z drużyny, nie wyglądając na protekcjonalny lub lepszy?

text: Pracuję z trzema innymi facetami; Nazwę ich Adam, Brian i Chris. Adam i Brian to bystrzy faceci. Daj im problem; wymyślą sposób na rozwiązanie tego problemu. Jednak jeśli chodzi o OOP, wiedzą o tym bardzo mało i nie są szczególnie zainteresowani nauką. Czysty kod proceduralny to ich MO. Z drugiej strony Chris jest facetem OOP - i to zarozumiały, protekcjonalny. Stale krytykuje pracę Adama i Briana i rozmawia ze mną tak, jakbym musiał podzielić się jego pogardą dla nich dwojga. Kiedy mówię, że Adam i Brian nie są zainteresowani nauką o OOP, podejrzewam, że Chris jest głównym powodem. W większości nie przeszkadzało mi to zbytnio, ale zdarzało się, że patrząc na jakiś kod, który napisał Adam lub Brian, bolało mnie myślenie o tym, jak można rozwiązać problem tak po prostu za pomocą dziedziczenia lub innego Koncepcja OOP zamiast niemożliwego do utrzymania bałaganu 1000 linii kodu, który został napisany zamiast tego. A teraz, gdy firma rozpoczyna dość ambitny nowy projekt, z Adamem przydzielonym do wykonania podstawowej funkcjonalności, obawiam się wyniku. Naprawdę, chcę tylko pomóc tym facetom. Ale wiem, że jeśli stanę się po prostu kolejnym świętszym deweloperem, takim jak Chris, będzie to miało ogromne skutki przeciwne do zamierzonego. Rozważyłem: 1. Przeglądy kodu zespołu – każdy recenzuje kod _wszystkich_. W ten sposób nikt nie jest w stanie patrzeć z góry na nikogo innego; poza tym wiem, że mógłbym się wiele nauczyć od innych członków zespołu. Byłoby to jednak czasochłonne, a przy tak małym zespole mam problem z wyobrażeniem sobie, że zyskuje na popularności jako praktyka zespołowa. 2. Okresowe e-maile do zespołu – oznaczałoby to, że co jakiś czas wysyłałbym e-maila z dyskusją o jakiejś koncepcji, o której, na podstawie moich obserwacji, przynajmniej jeden członek zespołu skorzystałby na poznaniu. Minusem tego podejścia jest to, że myślę, że może łatwo sprawić, że będę się nazywał samozwańczym ekspertem. 3. Prowadzenie bloga – właściwie już to robię; ale jak dotąd mój blog dotyczył bardziej ezoterycznych ciekawostek programistycznych niż prostych praktycznych porad. W każdym razie podejrzewam, że szybko by się zestarzało, gdybym ciągle powtarzał moim współpracownikom: „Hej chłopaki, pamiętajcie, żeby sprawdzić mój nowy post na blogu!”. To pytanie nie musi dotyczyć konkretnie OOP ani żadnego konkretnego paradygmatu programowania lub technologii. Chcę tylko wiedzieć: **jak udało Ci się nauczyć współpracowników nowych koncepcji, nie wyglądając na protekcjonalnego wszystkowiedzącego?** Jest dla mnie całkiem jasne, że nie będzie jednoznacznej odpowiedzi , ale wszelkie pomocne porady (w tym metody, które okazały się skuteczne, a także te, które okazały się nieskuteczne lub nawet nieskuteczne) byłyby bardzo mile widziane. * * * **AKTUALIZACJA** : **Nie** jestem kierownikiem zespołu w tym zespole. Chris jest. * * * **AKTUALIZACJA 2** : Wykonano wiki społeczności zgodne z ogólnymi odczuciami społeczności (wyobraź sobie).


title: Czy przydzielanie obiektów z puli pamięci jest antywzorcem zabezpieczeń?

text: W związku z błędnym błędem OpenSSL został słusznie skrytykowany za używanie własnej freelisty. W przypadku zwykłego "malloc" błąd zostałby prawie na pewno znaleziony dawno temu. Jednak jakiś rodzaj owijania malloc jest w rzeczywistości bardzo powszechny. Na przykład, gdy mam duży obiekt, który posiada wiele małych obiektów o stałych rozmiarach, często przypisuję je z tablicy. /* BigObj jest przydzielany za pomocą `malloc`, a LittleObj za pomocą `alloc_little`. */ typedef struct { /* tu rzeczy bigObj */ int nlittle; LittleObj littles[MAX_LITTLE]; } BigObj; LittleObj *alloc_little(BigObj *big) { if(big->nlittle == MAX_LITTLE) return NULL; return = duży->małe + duży->nmało++; } `alloc_little` jest szybszy niż `malloc()`, ale głównym powodem jest prostota. Nie ma opcji „free_little” do wywołania, ponieważ „LittleObjs” pozostają ważne do momentu zniszczenia „BigObj”. Czy to jest antywzór? Jeśli tak, czy mogę złagodzić ryzyko, czy powinienem po prostu zrezygnować? Podobne pytania dotyczą każdego rodzaju puli pamięci, takiej jak GNU Obstacks i `tallok` używany w Sambie.


title: Czy mogę korzystać z licencjonowanych bibliotek EPL i nie udostępniać kodu źródłowego mojej aplikacji?

text: Jeśli w aplikacji używam oprogramowania na licencji EPL (a mianowicie słoików Eclipse), czy muszę dawać użytkownikom kod źródłowy i prawo do redystrybucji? Jeśli tak nie jest, jakich zasad powinienem przestrzegać, jeśli korzystam z licencjonowanych bibliotek oprogramowania EPL w aplikacji, którą chcę rozpowszechniać?


title: Dlaczego ViewModel powinien kierować akcje do kontrolera przy użyciu wzorca MVCVM?

text: Czytając przykłady w Internecie (w tym referencje MSDN) odkryłem, że wszystkie przykłady kodu wykonują następujące czynności: public class FooViewModel : BaseViewModel { public FooViewModel(FooController controller) { Controller = controller; } chroniony kontroler FooController { get; zestaw prywatny; } public void PerformSuperAction() { // To po prostu kieruje akcję do kontrolera... Controller.SuperAction(); } ... } a następnie dla widoku: public class FooView : BaseView { ... private void OnSuperButtonClicked() { ViewModel.PerformSuperAction(); } } Dlaczego po prostu nie robimy następujących rzeczy? public class FooView : BaseView { ... private void OnSuperButtonClicked() { ViewModel.Controller.SuperAction(); // lub nawet użyj właściwości skrótu: Controller.SuperAction(); } }


title: Czy Agile i ISO 9001 mogą dobrze współdziałać?

text: Istnieje kilka artykułów naukowych poruszających związek między rozwojem oprogramowania szczupłego a praktykami objętymi normą ISO 9001. Większość artykułów mówi, że _rozbieżność między tymi podejściami jest duża_ , ale niektóre również wskazują, że _te koncepcje mogą się uzupełniać, a korzyści są znacznie większe, gdy używa się obu podejścia_. Naukowo jest bardzo pięknie, ale czy w praktyce tak jest? Oto więc pytanie: czy pracujesz lub pracowałeś w firmach stosujących zarówno Agile jak ISO 9001? Jaka jest twoja percepcja? Co jest naprawdę dobre, a co nieodpowiednie?


title: Inicjator obiektów w C# problem z czytelnością

text: Zastanawiam się, czy inicjowanie obiektu ma pewien wzrost wydajności w witrynie ASP.NET. Mam kolegę z biura, który powiedział mi, że inicjalizacja obiektów jest dużo czytelna i szybsza niż konstruktor. Ale jeden z moich kolegów z biura nie zgadza się z tym i powiedział, że to zawsze zależy. Na przykład robię to: using (var dataAccess = new DatabaseAccess { ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString, Query = query, IsStoredProc = true }) { //jakiś kod tutaj } Czy lepiej, jeśli to zrobię zrobić w ten sposób? using (var dataAccess = new DatabaseAccess()) { dataAccess.ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString; dataAccess.Query = zapytanie; dataAccess.IsStoredProc = prawda; } Z góry dziękuję! \--- **EDYTUJ** \---- czy to jest jakoś znacznie lepsze: using ( var dataAccess = new DatabaseAccess { ConnectionString = ConfigurationManager.ConnectionStrings["test"].ConnectionString, Query = query, IsStoredProc = true } ) { //tutaj jakiś kod }


title: Podobne odniesienia do siebie w dwóch klasach

text: Jak mogę stworzyć 1 klasę (podstawową, generyczną lub coś innego) z tych dwóch klas? klasa A { Link { get; ustawić; } } klasa B { B Link { get; ustawić; } } **UPD:** Oto co mam teraz: class BSTree { public BSTNode Root { get; ustawić; } } class AVLTree { public AVLNode Root { get; ustawić; } } class BSTNode { public BSTNode Parent { get; ustawić; } publiczny BSTNode Lewy { get; ustawić; } publiczny BSTNode Right{ get; ustawić; } public int Klucz{ get; ustawić; } } class AVLNode { public AVLNode Parent { get; ustawić; } publiczny AVLNode Lewy { get; ustawić; } publiczny AVLNode Right{ get; ustawić; } public int Klucz{ get; ustawić; } public int Wzrost { get; set;} } I na koniec chcę uzyskać coś takiego jak BaseNode i BaseTree.


title: Jaki jest dobry zapis do pokazywania interakcji MVC?

text: Tworzę różne strony internetowe i funkcje, aby zaspokoić różne przypadki użycia w Django. Czy istnieje dobra notacja pokazująca zachowanie na każdym etapie, np. tory? Do wszystkiego używam notacji BPMN 2, ale czuję, że nadużywam tego i prawdopodobnie nadużywam notacji :P Przykład: ![Schemat BPMN 2.0](http://i.stack.imgur.com/PMCzW.png) Proszę polecić odpowiednia **notacja pokazująca interakcje między modelem, widokiem i kontrolerem, a także część wewnętrznej logiki biznesowej na każdym etapie**.


title: Jak radzić sobie z potencjalnym przedsiębiorcą developerem w startupie IT

text: W startupie oprogramowania, jak możemy poradzić sobie z głównymi programistami/programistami firmy, którzy są dobrzy w projektowaniu i komunikacji, a także mają umiejętności przedsiębiorcze? Jak sprawić, by pracowali dla nas i uniknąć jakiejkolwiek konkurencji z ich strony do naszej firmy? Jak przekonać głównego programistę, że nasz startup jest dla niego miejscem?


title: Elastyczność Mahout w generowaniu rekomendacji

text: Obecnie pracuję nad systemem, który będzie generował rekomendacje produktów, takie jak te na Amazon: _"Ludzie, którzy to kupili, kupili też to.."_ **Tak zamierzam to zrobić** : * Przetwarzaj dane za pomocą Apache Mahout i generuj rekomendacje (dane są przechowywane w MySQL), aktualnie tylko na podstawie pozycji. * Zastosuj algorytm grupowania, aby utworzyć klaster użytkowników, a następnie zastosuj zasady powiązania subiektywne dla każdego klastra. **Moje pytania to:** * Czy Mahout zapewni mi wystarczającą elastyczność, aby dostosować istniejące algorytmy do moich potrzeb. Jeśli tak, to jak? * Czy istnieje lepsza alternatywa, taka jak R?


title: Dlaczego lepiej jest używać zewnętrznych JavaScript lub bibliotek; i czy preferowane jest używanie jquery, co oznacza większe bezpieczeństwo?

text: Przeczytałem ten artykuł Unobtrusive JavaScript with jQuery i zauważyłem te punkty na stronie slajdu **11** * niektóre firmy usuwają JavaScript na zaporze * niektóre uruchamiają rozszerzenie NoScript Firefox, aby chronić się przed typowymi atakami XSS i CSRF * wiele urządzeń mobilnych całkowicie ignoruj JavaScript * czytniki ekranu **wykonują** JavaScript, ale problemy z dostępnością oznaczają, że możesz ich nie chcieć Nie zrozumiałem czwartego punktu. Co to znaczy? Potrzebuję twojego komentarza i odpowiedzi w tych punktach. Czy nie warto używać JavaScript i przełączać się na biblioteki takie jak jQuery? **AKTUALIZACJA 1 :** co oznacza **dyskretny JavaScript z jQuery** ? i tak, nie mówi, że powinniśmy używać bibliotek, ale powinniśmy je mieć w zewnętrznych plikach z tego powodu zadałem moje pytanie.


title: Jak łatwo jest profesjonalnie zmienić języki/frameworki?

text: Wybaczcie, że zadałem pytanie związane z karierą – wiem, że można na nie patrzeć z dezaprobatą, ale myślę, że to jest na tyle ogólne, że może przydać się wielu osobom. Moje pytanie brzmi: Jak łatwo/trudno jest dostać pracę w języku/ramie B, gdy Twoja obecna praca wykorzystuje język/ramę A? np. Jeśli używasz C#/ASP.NET w swojej obecnej pracy, jak trudno byłoby uzyskać zadanie przy użyciu python/django lub PHP/Zend lub czegokolwiek (konkrety przykładu nie mają znaczenia). Podobnie, jeśli pracujesz nad skryptami po stronie klienta, ale być może pracujesz nad projektami po stronie serwera w swoim własnym czasie, jak trudne byłoby profesjonalne przejście na stronę serwera? Reasumując, czy wybór języków/frameworków, którymi posługujesz się w pracy, sprawia, że jesteś profesjonalistą?


Czy Project Titan (aplikacja e-mail na Facebooku) zmieni zasady gry z perspektywy programistów? Chociaż niektórych szczegółów wciąż brakuje, internet powoli dowiaduje się o tym nowym oprogramowaniu. Z perspektywy programisty, jak myślisz, jeśli jakakolwiek funkcjonalność przyniesie to sektorowi komunikacji masowej w korzystaniu z Internetu? Czy w jakikolwiek sposób będzie to „zmieniacz gier” z istniejącej warstwy bardzo udanych internetowych klientów poczty e-mail (takich jak hotmail, gmail, yahoo mail itp.) Jestem zainteresowany, jeśli ktoś uważa, że poczta e-mail zasadniczo musi się zmienić, a nie dodać więcej „powiązanie” z innymi źródłami danych, takimi jak profile w mediach społecznościowych.


title: Dlaczego nie zielone wątki?

text: Chociaż wiem, że pytania na ten temat zostały już omówione (np. http://stackoverflow.com/questions/5713142/green-threads-vs-non-green- threads), nie mam ochoty na satysfakcjonującą odpowiedź . Pytanie brzmi: _dlaczego JVM nie obsługuje już zielonych wątków?_ Jest to napisane w często zadawanych pytaniach dotyczących języka Java: > Zielony wątek odnosi się do trybu działania wirtualnej maszyny Javy > (JVM), w którym cały kod jest wykonywane w jednym wątku systemu operacyjnego. I to na java.sun.com: > Wadą jest to, że używanie zielonych wątków oznacza, że wątki systemowe w Linuksie nie są > wykorzystywane, a więc wirtualna maszyna Java nie jest skalowalna po > dodaniu dodatkowych procesorów. Wydaje mi się, że JVM mogłaby mieć pulę procesów systemowych równą liczbie rdzeni, a do tego uruchamiać zielone wątki. Może to oferować duże korzyści, gdy masz bardzo dużą liczbę wątków, które często blokują (głównie dlatego, że obecna JVM ogranicza liczbę wątków). Myśli?


title: Dlaczego gra wideo miałaby potrzebować main(String[] args) w swojej własnej klasie?

text: Mój nauczyciel właśnie powiedział mi, że za każdym razem, gdy tworzę klasę, aby uruchomić coś dla firmy zajmującej się grami wideo, która używa Eclipse, powinienem utworzyć klasę uruchamiania z głównym i dowolnymi wynikami. Mówi, że każda arytmetyka powinna zostać umieszczona w swojej własnej klasie. Oto przykład, który nam dał. //trójkąt import java.util.Scanner; import java.lang.Math.*; import java.lang.String; public class Lab03a //ta klasa służy do testowania Triangle { public static void main( String[] args ) { Scanner keyboard = new Scanner(System.in); //poproś użytkownika o wprowadzenie System.out.print("Wpisz stronę A :: "); int a = klawiatura.nextInt(); System.out.print("Wejdź na stronę B :: "); int b = klawiatura.nextInt(); System.out.print("Wejdź na stronę C :: "); int c = klawiatura.nextInt(); Test trójkąta = nowy Trójkąt(a, b, c); test.calcPerimeter(); test.obszar_kalkulacyjny(); test.toString(); System.out.println("Obszar "+test.toString()); //poproś użytkownika o wprowadzenie System.out.print("Wpisz stronę A :: "); a = klawiatura.nextInt(); System.out.print("Wejdź na stronę B :: "); b = klawiatura.nextInt(); System.out.print("Wejdź na stronę C :: "); c = klawiatura.nextInt(); test.setSides(a,b,c); test.calcPerimeter(); test.obszar_kalkulacyjny(); test.toString(); System.out.printf("%.3f\n",(test.toString())); //dodaj jeszcze jedną sekcję wejściową } } Druga klasa: import java.util.Scanner; import java.lang.Math.*; public class Triangle { private int sideA, sideB, sideC; prywatny podwójny obwód; prywatny pokój dwuosobowyPowierzchnia; prywatne podwójne s; public Triangle() { setSides (0,0,0); obwód=0; powierzchnia=0; s=0; } public Triangle(int a, int b, int c) { sideA=a; bokB=b; bok C=c; } public void setSides(int a, int b, int c) { sideA=a; bokB=b; bok C=c; } public void calcPerimeter( ) { obwód=stronaA+stronaB+stronaC; } public void calcArea() { s=obwód/2; theArea=(Math.sqrt(s*(s-sideA)*(s-sideB)*(s-sideC))); } public String toString() { String output = ""+Obszar+"\n\n"; wyjście zwrotne; } } Czy jest to powszechne w przypadku firm zajmujących się grami? Dla niektórych prawda? A może większość by to zaakceptowała?


title: Co, jeśli w ogóle, zrobić z wypaleniami w kształcie łuku?

text: Zacząłem zauważać powtarzający się wzór na wykresach wypalania naszego zespołu, który nazywam wzorem „cięciwy”. Idealną linią jest „struna”, a rzeczywista linia zaczyna się stosunkowo płasko, a następnie skręca w dół, aby osiągnąć cel jak łuk. Moja teoria na temat tego, dlaczego tak wygląda, jest taka, że na początku historii wykonujemy wiele prac związanych z debugowaniem lub eksploracją, dla których trudno jest oszacować pozostałą pracę. Czasami nawet trochę się zwiększa, gdy odkrywamy, że zadanie jest trudniejsze, gdy już się do niego przystąpimy. Następnie przechodzimy do implementacji i testowania, które są bardziej przewidywalne, stąd wykres zakrzywiony w dół. Uwaga: nie mówię o dużej skali, takiej jak BDUF, tylko o naturalnym krótkoterminowym ograniczeniu polegającym na tym, że musisz znaleźć błąd, zanim będziesz mógł go naprawić, w połączeniu z faktem, że historie najprawdopodobniej zaczynają się na początku dwóch -tygodniowa iteracja. Czy to częste zjawisko wśród zespołów scrumowych? Czy ludzie postrzegają to jako problem? Jeśli tak, jaka jest główna przyczyna i jakie są techniki radzenia sobie z tym problemem?


title: Jak lojalny powinienem być wobec mojego obecnego pracodawcy?

text: Pochodzę z „kraju trzeciego świata”, przeprowadziłem się rok temu do „kraju pierwszego świata”, dostałem pracę w dziale obsługi klienta (firma sieciowa/zarządzająca) i tworzeniem stron internetowych dla mojego obecnego pracodawcy. Zacząłem zastępować głównego inżyniera wsparcia, który wyjeżdżał na wakacje; potem mój szef chciał mieć aplikację na iPhone + iPad + serwer do zarządzania pracownikami (aplikacja na poligonie testowym); i dał mi projekt. Gdy zaczynałem w nowym kraju, zaoferowano mi bardzo niską pensję i powiedziano mi, że zostanie ona zrecenzowana za kilka miesięcy, potem stało się to „kiedy aplikacja jest gotowa”, a teraz, gdy aplikacja jest gotowa, jest na koniec tego roku (zacząłem sierpień zeszłego roku). Niskie wynagrodzenie było dla mnie w porządku, ponieważ głównie uczyłem się (Objective-C) Pochodzę z mikrokontrolera C i Linuksa. Teraz mój szef jest w Europie na wakacjach i zostawił wszystko (i wszystkich) na kilka tygodni... Mam teraz potrzebę zarabiania przeciętnej pensji dla programisty (średni poziom) i szukam pracy teraz, gdy mój szef jest z dala. Jeśli dostanę pracę, zanim wróci, czuję się trochę winna, że dał mi szansę na naukę i płacę mu odchodząc (i zostawiam go z niektórymi portalami internetowymi i aplikacjami na iOS)... Ale naprawdę muszę zarabiać więcej pieniędzy dla mojej rodziny, więc mam jasność, że muszę poprawić swoje warunki, ale nadal czuję się wdzięczny temu facetowi. Ale ważniejsza jest moja rodzina! Jak więc postępować?


title: Redmine - Struktura bazy danych / normalizacja

text: Używam redmine do zarządzania projektami i śledzenia problemów. Patrzyłem na tabele bazy danych i podstawową strukturę i zastanawiałem się, czy ktoś, kto ma doświadczenie w architekturze bazy danych, może komentować strukturę. Obawiam się, że przy wielu użytkownikach i setkach (lub tysiącach) projektów (każdy projekt zawiera wiele spraw, każdy problem zawiera wiele wiadomości itp.), struktura bazy danych może okazać się słabym punktem. Jak ten projekt wpływa na wydajność? Chciałbym usłyszeć o zaletach i wadach tego, jak ułożone są tabele i jak dane są rozdzielane lub normalizowane, i czy warto zmienić strukturę. Jakie byłyby korzyści z rozdzielenia danych do większej liczby tabel (przy mniejszej liczbie kolumn na tabelę)


title: Rodzaje testów jednostkowych w oparciu o użyteczność

text: Z wartościowego punktu widzenia w swojej praktyce widzę dwie grupy testów jednostkowych: 1. Testy testujące jakąś nietrywialną logikę. Pisanie ich (przed wdrożeniem lub po) ujawnia pewne problemy/potencjalne błędy i pomaga mieć pewność, że logika zostanie zmieniona w przyszłości. 2. Testy sprawdzające bardzo banalną logikę. Testy te bardziej przypominają kod dokumentu (zazwyczaj z mockami) niż go testują. Przebieg utrzymania tych testów to nie "jakaś logika się zmieniła, test stał się czerwony - dzięki Bogu napisałem ten test", ale "zmienił się jakiś trywialny kod, test stał się fałszywie negatywny - muszę utrzymać (przepisać) test bez zysku" . W większości przypadków testy te nie są warte (poza względami religijnymi). A z mojego doświadczenia w wielu systemach wynika, że testy te stanowią około 80% wszystkich testów. Próbuję dowiedzieć się, co inni sądzą na temat separacji testów jednostkowych według wartości i jak to ma się do mojej separacji. Ale to, co najczęściej widzę, to albo propaganda TDD na pełny etat, albo propaganda „testy są bezużyteczne”, wystarczy napisać kod. Interesuje mnie coś w środku. Twoje własne przemyślenia lub odniesienia do artykułów/artykułów/książek są mile widziane.


title: Proste wyszukiwanie z listy obrazów, aby wyświetlić określone logo

text: Obecny sposób, w jaki mam mój formularz, polega na tym, że użytkownik wybiera rozwijane menu określonego folderu i wyświetla bieżące logo w tym folderze w wierszu poniżej. Te obrazy są pobierane podczas ładowania strony jednocześnie. Problem polega na tym, że w tej chwili mam około 700 logo o łącznej wielkości około 10 MB i za każdym razem, gdy użytkownik dociera do formularza, musi załadować wszystkie 700 obrazów przed załadowaniem strony, chyba że obrazy znajdują się już w pamięci podręcznej przeglądarki. Mój problem nie jest tak duży teraz, ale później, jeśli skończę, mając 1500 logo lub więcej. Myślałem o 2 różnych sposobach odizolowania tego problemu. 1. Aby wybrać folder z listy rozwijanej, załaduj obrazy PO wybraniu. Zapytałem, jak to osiągnąć w przepełnieniu stosu bez powodzenia. 2. Moim drugim pomysłem jest teraz stworzenie prostego paska wyszukiwarki, który będzie po prostu wyświetlał logo, którego szukają w locie, zamiast wczytywać obrazy. Wiem, że jest to możliwe, widziałem to w wielu witrynach wyszukiwania grafiki. moje pytanie brzmi, czy ten typ skryptu wyszukiwarki już istnieje? jeśli tak... czy mógłbyś wskazać mi właściwy kierunek.


title: Jak jest określane MTU i czy można je zmienić?

text: Zajmuję się tworzeniem wieloczęściowego rozwiązania, które składa się z aplikacji iOS oraz aplikacji OS X komunikującej się przez Bluetooth Low Energy. Wszystko działa dobrze i mogę przesyłać umiarkowane ilości tekstu między iPhonem a moim MacBookiem. Chciałbym móc przesyłać większe ilości danych, np. obraz, z iPhone'a na MacBooka. Jestem w stanie to zrobić, ale przesłanie 1 obrazu zajmuje około 50 minut, skompresowanego jako JPEG z jakością 0,2 (w skali 0-1). Częścią problemu jest to, że w aplikacji iOS, gdy centrala się łączy, zgłasza maksymalną długość pakietu 20 bajtów (plus 3 bajty na nagłówek). W iOS 7 zmieniono MTU, więc nie jest to zakodowane na sztywno 23 bajty. Nie mogę znaleźć nigdzie, które pozwoliłoby mi określić wyższe MTU na moim MacBooku lub we frameworku IOBluetooth. Znalazłem stałą wartość w jednym z plików nagłówkowych bluetooth we frameworku, która określa MTU jako 23 (20 + 3 dla nagłówka), co prowadzi mnie do przekonania, że jest to po prostu coś na stałe zakodowanego we frameworku, co powinno być możliwe do zmiany jakoś. Alternatywą byłoby użycie BLE do negocjowania innej formy transferu między systemami. Ostatecznie transfer nie powinien być wymagany przez Internet (tak jak robi to Bump), ale jeśli można użyć bezpośredniego połączenia WIFI lub Bluetooth bez konieczności konfiguracji użytkownika, to zadziała.


title: Inicjowanie zmiennej jako niezdefiniowanej

text: Dokonując refaktoryzacji zauważyłem nietypowy wzór, którego nie znam. Właściwości i zmienne, które nie mają jeszcze wartości, są inicjowane jawnie zadeklarowaną wartością „undefined”, mimo że zmienne bez wartości i właściwości obiektów i tak miałyby wartość „undefined”: var foo = undefined; this.prop = niezdefiniowane; **Czy jest powód, aby to zrobić?**


title: Jakie problemy może napotkać początkujący Android przy korzystaniu ze Scali?

text: Jestem programistą hobbystą, który tworzy i utrzymuje jeden system produkcyjny, w dużej mierze zakodowany w Pythonie, który teraz musi zostać przeniesiony na Androida. W ogóle nie znam Javy. Jednak SL4A w Androidzie sprawia, że Python jest trochę drugorzędnym interfejsem API dla obywateli, takim jak Google Cloud Messaging itp. Jednak dla mnie Java wydaje się onieśmielająca dzięki swojej szczegółowej składni i ścisłemu typowaniu. Składnia Scali jest bardziej atrakcyjna i wydaje się możliwym kompromisem. Z tego pytania i tego na Stack Overflow wydaje się, że rozwój Scali na Androida jest wykonalny. Jednak jako „początkujący” chciałbym wiedzieć, jakie problemy mogę napotkać, używając Scali zamiast Javy. Dostępne informacje, które mogę znaleźć w sieci (w tym pytanie z tej strony cytowanej powyżej) pochodzą najpóźniej z początku 2012 roku i od tego czasu sytuacja się zmieniła.


title: Czy powinienem używać własnego publicznego API na mojej stronie (przez JS)?

text: Po pierwsze, to pytanie jest znacznie bardziej różne od innych „pytań dotyczących publicznego interfejsu API”, takich jak: Czy witryna powinna używać własnego publicznego interfejsu API?, po drugie, przepraszam za mój angielski. **Pytanie podsumowane na dole tego pytania.** To, co chcę osiągnąć, to duża witryna z publicznym interfejsem API, więc kto lubi programować (tak jak ja) i lubi moją witrynę, może replikować dane mojej witryny za pomocą znacznie lepsze podejście (oczywiście z pewnymi ograniczeniami). Prawie wszystko może być wykorzystane przez publiczne API. Z tego powodu myślałem o stworzeniu całej witryny opartej na technologii AJAX. Pojawiłyby się części API, które byłyby ograniczone tylko do mojej strony internetowej (domeny), takie jak logowanie, rejestracja. Po stronie klienta byłby tylko INTERFEJS, który używałby publicznego i prywatnego API, aby ten interfejs działał. Witryna byłaby TYLKO PO STRONIE KLIENTA, cóż, to znaczy, witryna używałaby tylko AJAX do korzystania z api. * * * Jak to sobie wyobrażam? Strona byłaby jak aplikacja mobilna, aplikacja wysyła tylko żądanie do serwera WWW, który zwraca json, aplikacja parsuje go i wykorzystuje do przejścia w aplikacji. (np.: login) Moje przemyślenia: **Zalety** : * Cała strona zbudowana jest w javascript, co oznacza, że nie muszę przesyłać html do klienta, oszczędzając przepustowość. (Mam nadzieję) * Każdy może wykorzystać dane mojej witryny do tworzenia własnych fajnych rzeczy. (Czy to con czy pro? O_O) * Publiczny interfejs API jest zawsze używany, więc mogę sprawdzić, czy są jakieś błędy. **Wady** : * Bez Javascript strona jest bezużyteczna. * Złoczyńcy mogą łatwo załadować serwer żądając zbyt dużej ilości danych (np. Request Per Second > 10000), ale można temu przeciwdziałać poprzez ograniczenie tego za pomocą kodu PHP i logowania. * Prawdopodobnie dużo więcej pracy Tak więc pytanie w kilku słowach brzmi: Czy powinienem budować swoją stronę internetową wokół własnego api? Czy dobrze jest pracować tylko po stronie klienta? Czy to jest dobre dla dużej witryny internetowej? (np.: facebook, tak, facebook to inna historia, ale czy mógłby działać z taką „architekturą”?)


title: Najlepsza praktyka zbierania informacji z obiektów podrzędnych

text: Regularnie spotykam się z następującym wzorcem: public abstract class BaseItem { BaseItem[] children; // ... public void DoCosCosWithStuff() { kolekcja StuffCollection = new StuffCollection(); foreach(dziecko c : dzieci) c.AddRequiredStuff(kolekcja); // zrób coś z kolekcją ... } public abstract void AddRequiredStuff(StuffCollection collection); } public class ConcreteItem : BaseItem { // ... public override void AddRequiredStuff(StuffCollection collection) { Stuff stuff; // ... kolekcja.Dodaj(rzeczy); } } Gdzie wolałbym coś takiego, dla lepszego ukrywania informacji: public abstract class BaseItem { BaseItem[] children; // ... public void DoCosCosWithStuff() { kolekcja StuffCollection = new StuffCollection(); foreach(dziecko c : dzieci) collection.AddRange(c.RequiredStuff()); // zrób coś z kolekcją ... } public abstract StuffCollection RequiredStuff(); } public class ConcreteItem : BaseItem { // ... public override StuffCollection RequiredStuff() { StuffCollection stuffCollection; Rzeczy; // ... stuffCollection.Add(rzeczy); zwrócić stuffCollection; } } Jakie są plusy i minusy każdego rozwiązania? Dla mnie dawanie implementacji dostępu do informacji rodziców jest trochę niepokojące. Z drugiej strony, inicjowanie nowej listy, tylko po to, by zebrać przedmioty, jest bezużytecznym obciążeniem… Jaki jest lepszy projekt? Jak by się to zmieniło, gdyby `DoSomethingWithStuff` nie było częścią `BaseItem`, ale trzecią klasą? PS: może brakować średników lub literówek; Przepraszam za to! Powyższy kod nie jest przeznaczony do wykonania, ale tylko dla ilustracji.


title: Czuję się nieprzygotowany do rozpoczęcia mojej pierwszej pracy po college'u... jak mogę się poprawić?

text: Właśnie ukończyłem studia na wydziale informatyki/inżynierii i miałem szczęście znaleźć pracę w przemyśle farmaceutycznym jako programista. Mój tytuł to System Developer I, który będzie wymagał następujących umiejętności: 0-3 lata doświadczenia w programowaniu w C# .NET i SQL Server Doświadczenie pisania T-SQL i procedur składowanych XML Javascript Poznałem firmę na targach pracy i nie byłem tego świadomy że będę potrzebować tych umiejętności do pracy, dopóki nie będą chcieli umówić się ze mną na rozmowę kwalifikacyjną. Wywiad składał się z rozmowy o moim pochodzeniu, prawie zbyt prostego testu logicznego i kilku pytań SQL, na które każdy, kto ma jakiekolwiek doświadczenie, powinien być w stanie odpowiedzieć. Byłem z nimi szczery i wskazałem, że nie mam absolutnie żadnego doświadczenia z SQL Serverem, .NET, XML czy Javascriptem, ale i tak zaoferowali mi stanowisko. Oczywiście zaakceptowałem to, ale teraz bardzo się martwię, że moje umiejętności nie będą wystarczające. W pełni zdaję sobie sprawę, czytając wiele książek Coding Horror, Stack Overflow i The Daily WTF, że stopień naukowy w Comp Sci w żaden sposób nie przygotowuje mnie do bycia programistą; Zdaję sobie sprawę, że będę monumentalnym noobem w obecności ludzi, którzy robią to od lat. Czuję, że jedyną rzeczą, która rekompensuje mój brak doświadczenia w programowaniu i wiedzy programistycznej, są moje umiejętności społeczne, wrodzona umiejętność pisania i pokora (przynajmniej w porównaniu z niektórymi moimi absolwentami, którzy wyobrażali sobie, że są następnym Steve'em Jobsem). .. _barf_ ) Nigdy nie znajdziesz mnie jako primadonny ciągle narzekającej na system, język itp. Po prostu chcę wykonywać swoją pracę tak, jak mi kazano, pracować od 9 do 5 i wracać do domu z wypłatą czuję się kompetentna. Jeśli to wymaga nauki w domu, jestem bardziej niż chętny, ponieważ uwielbiam programowanie i informatykę. Do tej pory zapoznałem się trochę z używaniem SQL Server Management Studio, dałem sobie odświeżenie w zakresie podstawowego SQL i zacząłem uczyć się więcej o C# i .NET, używając Wprowadzenie Visual C# 2010 autorstwa Adama Freemana z Apress. Czy ktoś może polecić cokolwiek innego, co mogę zrobić w międzyczasie, aby: A. Wyluzować _*_ * i cieszyć się moją nową pracą, nie martwiąc się tak bardzo o to, że zostanę puszkowany za niekompetencję B. Poprawić moje zrozumienie wzorców projektowych i OOP C. Uzyskaj skrócić czas pisania T-SQL w najbardziej efektywny sposób Dziękujemy wszystkim.


title: Być może zaczynam rozwijać Arduino i potrzebuję porady

text: Tak więc dzisiaj spojrzałem na Arduino; wydaje się bardzo interesujące. Nadal nie chcę jeszcze wydawać pieniędzy, bo mam kilka pytań, a mianowicie: 1. Czy powinienem się czegoś nauczyć o elektronice? Co iz jakimi zasobami? 2. Jakie rzeczy powinienem kupić? Mam ograniczony, ale nie _tak_ mały budżet (chyba do 200€, ale najlepiej _mniej_). Interesuje mnie ekran (nie może być skomplikowany, ale wolałbym taki), jakiś głośnik, jakiś sposób na jego poruszanie i sposób na zdalne sterowanie. Chciałbym też baterię. Nie chcę też w przyszłości używać mojej tablicy do wielu rzeczy, więc myślę, że nie powinna być zbyt prosta. Myślę, że pójdę z MEGA, czy to mądre? 3. Jakie zasoby polecasz? Żadne książki? Dobre samouczki oprócz tego, co znajdziesz na ich stronie? 4. Jakie są naprawdę fajne rozszerzenia (np. ekrany), które radziłbym kupić/wypróbować? Pomoc bardzo ceniona. Poza tym _nigdy_ nie opracowałem dla żadnego urządzenia wbudowanego, ale do pewnego stopnia znam C i architekturę komputerową; Jestem trochę zaznajomiony z rzeczami niskiego poziomu.


title: Przeszacowanie i przeplanowanie Scrum

text: Jesteśmy w trakcie pierwszego sprintu i coś nas świta: przeceniliśmy! Na tę dwutygodniową iterację zaplanowaliśmy 114 idealnych godzin i pod koniec pierwszego tygodnia zakończyliśmy cały Sprint. Co teraz zrobimy? „Księga” mówi, że powinniśmy i otrzymamy kolejne pozycje o wysokim priorytecie z zaległości. Jak jednak dodać je do wykresu spalania? Czy piszemy to od nowa, aby uwzględnić te historie, tak jakby były tam od początku? Albo po prostu dodać ich szacunki do osi y w dniu, w którym zaczynamy nad nimi pracować (pokazując skok o 90o)? Wszelkie opinie są mile widziane!


title: Jak nazywasz sprinty w swoich projektach?

text: Niektóre narzędzia do zarządzania oprogramowaniem Scrum dają tę opcję, aby jawnie nazwać swoje sprinty. Czy masz preferowany sposób nazywania swoich sprintów, czy po prostu używasz prostego schematu, takiego jak 1, 2, 3, ...?


title: Uprawnienia i MVC

text: Jestem w trakcie tworzenia aplikacji internetowej. Ta aplikacja internetowa jest w większości interfejsem CRUD, chociaż niektórzy użytkownicy mogą wykonywać tylko niektóre czynności i widzieć tylko niektóre części widoków. Jaki byłby rozsądny sposób obsługi uprawnień użytkowników, biorąc pod uwagę, że niektóre części widoków nie są dostępne dla użytkowników? Myślałem o posiadaniu funkcji `hasPermission(permission)`, która zwraca `true`, jeśli bieżący użytkownik ma dane uprawnienie, chociaż wymagałoby to warunków warunkowych wokół wszystkich części widoków, które są widoczne tylko dla niektórych użytkowników. Na przykład: {% if has_permission('view_location') %} {{ product.location }} {% endif %} Obawiam się, że stanie się to brzydkim i nieczytelnym bałaganem, zwłaszcza że te uprawnienia mogą być trochę skomplikowane. Jak ten problem jest powszechnie rozwiązywany w aplikacjach internetowych? Rozważam użycie Haskella z Happstack lub Pythona z Django.


title: Równowaga między funkcjonalnością klienta i serwera

text: Chcę przywołać dyskusję, która rozpoczęła się w naszych zespołach i poznać Twoją opinię na jej temat. Załóżmy, że mamy konto użytkownika, które może mieć różne dane uwierzytelniające do uwierzytelniania i powiązany adres e-mail do odzyskania. Użytkownik ma możliwość dokonania rejestracji za pomocą e-maila lub skorzystania ze swojego profilu społecznościowego w celu zakończenia procesu rejestracji. Interfejs API Rest od backendu do klienta wygląda następująco: 1. Utwórz konto 2. Autoryzuj 3. Zaktualizuj dane użytkownika 4. Połącz konto społecznościowe 5. Zarejestruj e-mail 6. Zweryfikuj e-mail Ponadto nasze BE jest rozproszone i podzielone między kilka usług/serwerów / klastry. Tak więc różne połączenia są powiązane z różnymi punktami końcowymi. Mamy też innego klienta - aplikacje mobilne natywne, aplikacje webowe. Zwykły proces rejestracji wygląda dla klienta w następujący sposób: 1. Zapytaj użytkownika o e-mail 2. Utwórz konto (Rest) 3. Autoryzuj (Rest) 4. Zapytaj użytkownika o jego nazwę wyświetlaną 5. Zaktualizuj dane (Rest) 6. Zarejestruj e-mail ( Pozostałe ) 5. Zarejestruj i zweryfikuj adres e-mail użytkownika FB (odpoczynek) 6. Zaktualizuj nazwę użytkownika na podstawie danych FB (odpoczynek) Ale wszystkie te kroki są możliwe do wykonania na zapleczu. Zaproponowaliśmy więc inny punkt końcowy, który ukryje/połączy różne wywołania na BE i zwróci klientom wyniki całego procesu: 1. Poproś użytkownika o login FB 2. Nowy użytkownik z FB (proponowana reszta) 3. BE dokonuje rejestracji/ link zweryfikowany adres e-mail/aktualizacja danych użytkownika/autoryzacja Zalety tego podejścia: 1. Koniec z powielaniem funkcjonalności między klientami 2. Przyspieszenie pracy w sieci i doświadczenia użytkownika Wady takiego podejścia: 1. Dodatkowa praca dla backendu 2. Prawdopodobnie najbardziej złożona scenariusze w przyszłych aktualizacjach Chciałbym poznać Twoją opinię lub doświadczenie w tej sytuacji. Zwłaszcza jeśli doświadczyłeś już punktu "Prawdopodobnie najbardziej złożone scenariusze w przyszłych aktualizacjach" z powodu.


title: Jak ustrukturyzować mój projekt niezależny od GUI?

text: Mam projekt, który ładuje z bazy danych plik XML, który definiuje formularz dla niektórych użytkowników. XML jest przekształcany w kolekcję obiektów, których klasy pochodzą od jednego rodzica. Coś takiego jak Control -> EditControl -> TextBox Control -> ContainterControl -> Panel Te klasy są odpowiedzialne za tworzenie kontrolek GUI dla trzech różnych środowisk: WinForms, DevExpress XtraReports i WebForms. Wszystkie trzy struktury mają w większości to samo drzewo kontrolne i mają wspólnego jednego rodzica (Windows.Forms.Control, XrControl i WebControl). Więc jak to zrobić? Rozwiązanie a) Klasa Control posiada metody abstrakcyjne Control CreateWinControl(); XrControl UtwórzXtraControl(); Kontrola sieciowa UtwórzKontrolkę sieciową(); To może działać, ale projekt musi odwoływać się do wszystkich trzech frameworków, a klasy będą obszerne metodami, które wspierałyby wszystkie trzy implementacje. Rozwiązanie b) Każda implementacja frameworka jest wykonywana w osobnych projektach i ma dokładnie takie drzewo klas jak projekt Core. Wszystkie trzy implementacje są połączone za pomocą interfejsu z klasą Core. Wydaje się, że jest czysty, ale trudno mi się wokół niego owinąć. Czy ktoś ma prostsze rozwiązanie lub sugestię jak mam podejść do tego zadania?


title: Odziedzicz jedną zmienną instancji z zakresu globalnego

text: Używam Curses do tworzenia GUI wiersza poleceń z Ruby. Wszystko idzie dobrze, ale trafiłem na mały szkopuł. Nie sądzę, aby wiedza o klątwach (ezoteryczna, aby być sprawiedliwa) była wymagana, aby odpowiedzieć na to pytanie, tylko pojęcia Ruby, takie jak obiekty i dziedziczenie. **Teraz wyjaśnię mój problem, ale jeśli będę walił dalej, spójrz na poniższy przykład.** Zasadniczo każda instancja Window musi mieć wywołane .close, aby ją zamknąć. Z niektórymi instancjami systemu Windows powiązany jest inny system Windows. Zamykając instancję Window, chcę mieć możliwość zamknięcia wszystkich innych instancji Windows powiązanych z nią w tym samym czasie. Ponieważ skojarzone Windows są generowane w logiczny sposób (do nazwy dołączam liczbę: `instance_variable_set(self + integer, Window.new(10,10,10,10))` ), łatwo jest celować w generowane okna, ponieważ metody mogą przewidzieć, jak wywołane zostaną powiązane okna, `(Mogę odtworzyć nazwę zmiennej instancji od podstaw i prawie ją zapytać: instance_variable_get(self + integer)`. Mam metodę usuwania, która to obsługuje. Jeśli metoda usuwania jest po prostu normalna, globalna metoda (nazywana tak: `delete_window(@win543)` wtedy wszystko działa idealnie. Jednak jeśli metoda delete jest metodą instancji, którą musi być, aby użyć słowa kluczowego `self`, nie działa z bardzo jasnego powodu; może doskonale "zapytać" o poprawną zmienną instancji (`instance_variable_get(self + integer)`), jednak **ponieważ jest to metoda instancji, globalne instancje nie są objęte zakresem it!** Jednym ze sposobów na obejście tego byłoby oczywiście utworzenie globalnej metody takiej jak ta: `delet e_okno(@win543)`. Ale mam atrybuty powiązane z moimi instancjami okien i wszystko działa bardzo elegancko. Jest to bardzo uproszczone, ale dosłownie tłumaczy problem: class Dog def speak woof end end def woof if @dog_generic == nil puts "@dog_generic nie jest objęty zakresem, gdy .woof jest wywoływane z metody klasy!\n" else puts "@dog_generic jest objęty zasięgiem, gdy .woof jest wywoływane z zasięgu globalnego. Zobacz:\n" + @dog_generic end end @dog_generic = "Huu!" lassie = Pies.new lassie.speak #=> @dog_generic nie jest objęty zasięgiem, gdy .woof jest wywoływane z metody instancji!\n woof #=> @dog_generic jest objęty zasięgiem, gdy .woof jest wywoływane z zasięgu globalnego. Zobacz:\nHau! **TL/DR:** Potrzebuję `lassie.speak`, aby zwrócić ten ciąg: `"@dog_generic jest objęty zakresem, gdy .woof jest wywoływany z zakresu globalnego. Zobacz:\nHuu!"` @dog_generic musi pozostać instancją zmienny. Używanie globalnych lub stałych jest niedopuszczalne. Czy woof może odziedziczyć po zasięgu globalnym? Może jakieś słowo kluczowe: def hau < global # Ten 'kod' służy tylko do konceptualizacji tego, co chcę zrobić, nie obrażaj się! koniec Czy jest jakiś sposób, aby metoda .woof mogła „wyciągnąć” @dog_generic z zakresu globalnego? Czy @dog_generic będzie musiał być przekazany jako parametr?


title: Jak pozostać w strefie po zakończeniu zadania?

text: Zauważyłem, że podczas programowania dzielę swoją pracę na zadania i dopóki zadanie nie zostanie ukończone, nie mogę przestać, nawet jeśli trwa to godzinami. Jednak po zakończeniu tego zadania bardzo trudno mi przejść do następnego zadania. Czuję potrzebę spędzenia czasu na przerwie, surfowania po Internecie itp., a zanim się zorientujesz, minęła reszta dnia pracy. Czasami, jeśli wykonanie zadania zajęło tylko 1-2 godziny, nadal tak się dzieje. Czy ktoś jeszcze tego doświadczył? Jak sobie z tym radzisz, aby pozostać w strefie, dopóki wszystkie zadania na dany dzień nie zostaną wykonane?


title: Git: Naprawianie błędu dotyczącego dwóch gałęzi

text: Opieram moje repozytorium Git na udanym modelu rozgałęziania Git i zastanawiałem się, co się stanie, jeśli wystąpi taka sytuacja: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/lLGpu.png) Powiedz, że Programuję na dwóch gałęziach funkcji A i B, a B wymaga kodu od A. Węzeł X wprowadza błąd w funkcji A, który wpływa na gałąź B, ale nie jest to wykrywane w węźle Y, gdzie cechy A i B zostały połączone, a testowanie zostało przeprowadzone przed ponownym rozgałęzieniem i pracą nad kolejną iteracją. W rezultacie błąd został znaleziony w węźle Z przez osoby pracujące nad cechą B. Na tym etapie zdecydowano, że potrzebna jest poprawka. Ta poprawka powinna zostać zastosowana do obu funkcji, ponieważ ludzie pracujący nad funkcją A również potrzebują naprawy błędu, ponieważ jest to część ich funkcji. Czy gałąź z poprawkami błędów powinna zostać utworzona z najnowszego węzła elementu A (odgałęzienia od węzła Y), a następnie scalona z elementem A? Po czym obie funkcje są ponownie łączone w programowanie i testowane przed rozgałęzieniem? Problem polega na tym, że wymaga połączenia obu gałęzi, aby rozwiązać problem. Ponieważ funkcja B nie dotyka kodu w funkcji A, czy istnieje sposób na zmianę historii w węźle Y poprzez zaimplementowanie poprawki i pozostawienie gałęzi funkcji B, która pozostanie niescalona, a jednocześnie ma ustalony kod z funkcji A? Umiarkowanie powiązane: Konwencja rozgałęziania błędów w Git


title: Czy istnieje powód, dla którego ktoś wybrałby GPLv2 zamiast GPLv3?

text: Czy jest jakiś powód, dla którego ktokolwiek używałby GPL v2 zamiast GPL v3 podczas rozpoczynania nowego projektu, czy też GPL v2 jest nadal dostępna tylko dlatego, że starsze projekty nie mogą lub nie zaktualizowały jeszcze swojej licencji?


title: Prawidłowy sposób implementacji atrybutu Android XML onClick w Aktywności

text: Szeroko używałem atrybutu android:onClick w moich układach XML dla mojej aplikacji na Androida. **Przykład:** <Button android:id="@+id/exampleButton" android:onClick="onButtonClick" /> Czy należy utworzyć interfejs w celu wymuszenia implementacji tych metod onClick w działaniach, które używają tego pliku układu ? interfejs publiczny MyButtonInterface { public onButtonClick(View v); }


title: Czy mam buforować dane, czy trafić do bazy danych?

text: Nie pracowałem z żadnymi mechanizmami buforowania i zastanawiałem się, jakie są moje opcje w świecie .net dla następującego scenariusza. Zasadniczo mamy usługę REST, w której użytkownik przekazuje identyfikator kategorii (folder myślowy), a ta kategoria może mieć wiele podkategorii, a każda z podkategorii może mieć 1000 kontenerów multimedialnych (pomyśl o obiektach referencyjnych plików), które zawierają informacje o plik, który może znajdować się na serwerze NAS lub SAN (w tym przypadku pliki to filmy). Relacja między tymi kategoriami jest przechowywana w bazie danych wraz z pewnymi regułami uprawnień i metadanymi dotyczącymi podkategorii. Tak więc z perspektywy interfejsu użytkownika mamy leniwie załadowaną kontrolę drzewa, która jest sterowana przez użytkownika, klikając każdy podfolder (pomyśl o Eksploratorze Windows). Gdy dotrą do adresu URL pliku wideo, będą mogli obejrzeć wideo. Liczba użytkowników może wzrosnąć do 1000, a podkategorie i filmy mogą znajdować się w 10000 w miarę rozwoju systemu. Pytanie brzmi, czy powinniśmy kontynuować to, co obecnie działa, gdzie każde żądanie trafia do bazy danych, czy powinniśmy pomyśleć o buforowaniu danych? Używamy IIS 6/7 i Asp.net.


title: Czy programowanie oparte na testach (TDD) rzeczywiście przyniosło korzyści projektowi w świecie rzeczywistym?

text: Nie jestem nowy w kodowaniu. Koduję (poważnie) od ponad 15 lat. Zawsze testowałem mój kod. Jednak w ciągu ostatnich kilku miesięcy uczyłem się projektowania/rozwoju opartego na testach (TDD) przy użyciu Ruby on Rails. Jak dotąd nie widzę korzyści. Widzę pewne korzyści z pisania testów na niektóre rzeczy, ale bardzo niewiele. I chociaż podoba mi się pomysł napisania najpierw testu, odkryłem, że spędzam znacznie więcej czasu na debugowaniu moich testów, aby przekonać ich, co naprawdę mam na myśli, niż na debugowaniu rzeczywistego kodu. Dzieje się tak prawdopodobnie dlatego, że kod testowy jest często znacznie bardziej skomplikowany niż kod, który testuje. Mam nadzieję, że to tylko brak doświadczenia z dostępnymi narzędziami (w tym przypadku RSpec). Muszę jednak powiedzieć, że w tym momencie poziom frustracji połączony z rozczarowującym brakiem wydajności jest nie do zaakceptowania. Jak dotąd jedyną wartością, jaką widzę w TDD, jest rosnąca biblioteka plików RSpec, które służą jako szablony dla innych projektów/plików. Co nie jest o wiele bardziej przydatne, a może mniej przydatne, niż rzeczywiste pliki kodu projektu. Czytając dostępną literaturę, zauważam, że TDD wydaje się być ogromnym zatopieniem czasu, ale w końcu się opłaca. Zastanawiam się tylko, czy są jakieś przykłady z prawdziwego świata? Czy ta ogromna frustracja kiedykolwiek się opłaca w prawdziwym świecie? Naprawdę mam nadzieję, że nie przegapiłem tego pytania gdzie indziej. Szukałem, ale wszystkie pytania/odpowiedzi mają w tym momencie kilka lat. To była rzadka okazja, kiedy znalazłem programistę, który powiedziałby coś złego o TDD, dlatego spędziłem nad tym tyle czasu, ile mam. Zauważyłem jednak, że nikt nie wydaje się wskazywać konkretnych przykładów ze świata rzeczywistego. Przeczytałem jedną odpowiedź, która mówiła, że facet debugujący kod w 2011 roku podziękuje ci za posiadanie kompletnego zestawu do testów jednostkowych (myślę, że komentarz powstał w 2008 roku). Więc zastanawiam się, czy po tylu latach mamy w końcu jakieś przykłady pokazujące, że wypłata jest prawdziwa? Czy ktoś faktycznie odziedziczył lub wrócił do kodu, który został zaprojektowany/opracowany za pomocą TDD i ma pełny zestaw testów jednostkowych i rzeczywiście odczuł korzyści? A może zauważyłeś, że spędzasz tak dużo czasu, próbując dowiedzieć się, co testuje test (i dlaczego było to ważne), że po prostu wyrzuciłeś cały bałagan i dokopałeś się do kodu?


title: Korzystanie z oprogramowania GPL ze sprzętem o zamkniętym kodzie źródłowym

text: Czy naruszyłoby to GPL v3, gdybym używał oprogramowania układowego na licencji GPL z moim sprzętem o zamkniętym kodzie źródłowym, który sprzedaję? A może oba muszą być open-source, czy po prostu muszę udostępnić oprogramowanie układowe za darmo? Dziękuję!


title: Czy powinienem otworzyć się na .net, c# i Visual Basic?

text: Jestem wielkim fanem Linuksa i ignoruję .net, C# i visual basic ze względu na ich związek z Microsoftem. Czy skazuję ich tylko ze względu na ich związek? Czy jest jakaś korzyść z nauki ich, gdy jesteś głównie użytkownikiem Linuksa?


title: Rozwijanie projektu w języku statycznie typowanym w całości w VIM

text: Niedawno zacząłem brać Scala do serca (słodki Python, nadal cię kocham, ale twoje kolekcje po prostu nie mogą się równać ze Scali), a robiąc to, teraz prawie całkowicie używam IntelliJ IDEA do programowania. Jednak wtyczka Scala firmy IDEA jest daleka od ideału i wiele razy chciałbym wrócić do mojej jedynej miłości do edytora - VIM. Niestety, jest kilka funkcji podobnych do Intellisense, których wciąż nie wiem, jak odzyskać. Mianowicie 1. automatyczne importy 2. rozpoznawanie niespójności typów 3. wyszukiwanie definicji metody 4. lista prawidłowych metod lub zmiennych dla instancji Czy ktoś może polecić jakieś narzędzia, aby to zrobić? Chociaż Scala jest najbardziej preferowanym językiem, obawy te dotyczą w równym stopniu C++ i Javy. Naprawdę chciałbym zostawić IDE za sobą!


title: Jak zrobić dobre portfolio dla studenta informatyki (który uwielbia programować) takiego jak ja?

text: Obecnie jestem studentem i zamierzam aplikować na studia prawdopodobnie w przyszłym miesiącu. W przeciwieństwie do studentów sztuki, którzy z łatwością umieszczają swoje prace, takie jak modele, projekty i tak dalej, w swoim portfolio; Trafiam w ślepy zaułek, próbując znaleźć „kreatywny” sposób na zaprezentowanie mojej pracy jako programisty. Byłoby normalne, gdyby programista pokazał swój dobry projekt z kodem źródłowym i wszystkim innym. Cóż, nie powinno być problemu z rzeczywistymi „dobrymi” projektami, ale wszystkie moje projekty są kiepskie (nic na to nie poradzę, bo wciąż jestem studentem i nie mam dużego doświadczenia zawodowego) i nawet nie wiem, że to warto pokazać. Niemniej jednak, odkąd zacząłem programować, wiele się nauczyłem w ciągu zaledwie 1 roku. Jestem teraz zaznajomiony z Javą, PHP, Actionscript3, C#, Objective-C i jestem na drodze do nauki Rubiego. Planuję zbudować portfolio Flash używając Actionscript z Ruby jako backendem, aby pokazać czego się nauczyłem. Problemem jest pomysł. Jak pokazać ludziom, że nauczyłem się wielu przydatnych rzeczy? W przeciwnym razie trafię w ślepy zaułek i LOL po prostu pokażę, co mam na Github (ale na pewno nigdy tego nie chcę ...)


title: Jaki jest argument za rzeczownikami w liczbie pojedynczej w nazewnictwie zasobów RESTful API?

text: Rozumiem, że podczas nazywania RESTful URI powszechnie przyjmuje się, że do reprezentowania zbiorów zasobów używa się liczby mnogiej. Ciekawi mnie argument za używaniem rzeczowników w liczbie pojedynczej.


title: Lista kontrolna do uruchamiania dużego projektu ASP.NET MVC 3

text: Obecnie jestem na samym początku etapu planowania projektu, do którego zostałem zatrudniony. Jest dość duży, ale wystarczająco mały, aby mógł go obsłużyć 1 lub 2 programistów i garstka innych (do projektowania, marketingu itp. .). Przeważnie projektanci i marketerzy pracują teraz nad swoimi planami, ale muszę zacząć myśleć o tym, jak mam do tego podejść. Myślę, że do jego skompilowania będę używać C# i ASP.NET MVC 3. Jestem zaznajomiony z C# i wzorcem MVC, ale nie robiłem wcześniej dużego projektu z tą konkretną technologią. Chciałbym zbudować "listę kontrolną" rzeczy, na które muszę spojrzeć, kupić, zapoznać się itp. przed rozpoczęciem projektu: * **Baza danych** : Zakładam, że serwer MS SQL jest standardem używać z .net, ale: czy w przypadku większych projektów muszę uaktualnić coś, co jest bezpłatne/dostarczane z VS2010 express? Jakie kroki muszę wykonać podczas projektowania bazy danych do użytku z MVC? Lub LINQ? * **Testowanie** : która platforma testowa jest najlepsza dla tego typu aplikacji? Jakie metodologie testowania należy wziąć pod uwagę w przypadku aplikacji internetowej? Jak mam podejść do testowania modeli i widoków? Czy jest różnica między testowaniem kontrolerów a testowaniem klasy w jakiejkolwiek innej aplikacji? * **Rozwój** : Czy istnieje jakiś konkretny wzór/wzorce, które dobrze pasują do rozwoju MVC? Czy najpierw piszę modele, a potem kontrolery? Najpierw widoki, potem modele? Najpierw kontrolery? Jak napisać aplikację, aby umożliwić łatwe wdrażanie aktualizacji? * **Wdrażanie** : Co wiąże się z wdrażaniem aplikacji internetowej .net? Czy muszę kupić IIS? Czym powinienem się zająć przed wdrożeniem, wrt konfiguracją serwera produkcyjnego? Jak wdrożyć aktualizacje przy minimalnym przestoju? * **Id.:** Czy jest jeszcze coś, o czym powinienem wiedzieć? Koszty? Zastrzeżenia? Książki/strony internetowe, które powinienem przeczytać przed uruchomieniem VS?


title: Jak zdecydować, jak wstecznie zgodna powinna być moja nowa aplikacja Mac OS X?

text: Obecnie rozważam napisanie wersji na OS X mojego oprogramowania Windows. Moja aplikacja Windows nadal obsługuje Windows XP i wiem, że jeśli teraz zrezygnuję z jej wsparcia, nasi klienci będą płakać krwawym morderstwem. Jestem nowy w rozwoju OS X i kiedy poznaję technologię, interfejsy API itp., zdałem sobie sprawę, że jeśli zamierzam zapewnić porównywalny poziom kompatybilności wstecznej (np. do OS X 10.5), nie byłbym w stanie używać wielu rzeczy, które w moim przypadku wyglądają bardzo przydatne i istotne (komunikacja ARC, XPC, wiele innych). Moim zdaniem jest to zupełnie inne niż Windows, w którym niewiele się zmieniło między Windows XP a Windows 7 z punktu widzenia programisty aplikacji desktopowych. Tak więc z jednej strony trzymanie się API na poziomie 2007 lub 2009 w 2012 roku wydaje się kompletnym marnotrawstwem. Z drugiej strony, zgodnie z raportem NetMarketShare i raportem Stat Owl, udział w rynku Mac OS X 10.5 i 10.6 nadal wynosi 11%, a 35%-40% odpowiednio. Jednak nie jestem pewien, czy ci starsi użytkownicy systemu operacyjnego są moimi docelowymi odbiorcami (nabywcami oprogramowania), jeśli nie zawracali sobie głowy aktualizacją swojego systemu operacyjnego... **Moje pytanie** : Czy są jakieś inne powody, dla których powinienem wziąć brać pod uwagę przy podejmowaniu decyzji, czy dla nowej aplikacji wybieram 10,5, 10,6 czy 10,7?


title: Czy przesłanie żądania ściągnięcia może w ogóle oznaczać zaakceptowanie umowy licencyjnej współautora?

text: Niektóre projekty oprogramowania mają umowę licencyjną współautora. Umowa może na przykład przenieść prawa autorskie do wkładów osób trzecich na pierwotnego twórcę projektu. Czy wysłanie pull requesta na github kiedykolwiek oznaczało zaakceptowanie takiej umowy?


title: Dlaczego społeczność Lisp woli gromadzić wszystkie nawiasy na końcu funkcji?

text: Dlaczego społeczność Lispów woli gromadzić wszystkie nawiasy na końcu funkcji: (defn defer-expensive [tanie drogie] (if-let [dostatecznie dobre (wymusza tanio)] wystarczająco dobre (wymusza drogie))) Dlaczego nie stosować konwencji, takiej jak C lub Java? No dobrze, Lisp jest znacznie starszy niż te języki, ale mówię o współczesnych Lispersach. (defn defer-expensive [tanie drogie] (jeśli-niech [wystarczająco-dobre (wymusza tanio)]-wystarczająco dobre (wymusza tanio) ) ) Uwaga: Fragment kodu pochodzi z książki „The Joy of Clojure”.


title: Czy dobrą praktyką jest przechwytywanie zaznaczonego wyjątku i zgłaszanie wyjątku RuntimeException?

text: Przeczytałem jakiś kod kolegi i stwierdziłem, że często łapie różne wyjątki, a następnie zawsze wyrzuca zamiast tego 'RuntimeException'. Zawsze myślałem, że to bardzo zła praktyka. Czy się mylę?


title: Po co przekształcać zaznaczony wyjątek w niesprawdzony wyjątek?

text: Mój kumpel powiedział mi dzisiaj, że niektórzy programiści przekształcają sprawdzony wyjątek (np. EJBException, SQLException...) na niesprawdzony (RuntimeException?) Mój kumpel wyjaśnił stos wywołań, w którym jeśli zmienisz dół stosu, będziesz musiał zmienić każdą metodę to wywołuje to, jeśli zmienisz dolną (najbardziej wewnętrzną) metodę. Czy możesz bardziej szczegółowo rozwinąć i/lub zilustrować kodem, czy coś źle zrozumiałem? Nie sądzę, żebym miał ten problem, ponieważ nigdy nie pisałem `rzutów`.


title: Jakie korzyści odnoszą języki programowania oparte na języku angielskim?

text: Myślę, że obecnie świat programuje w językach programowania opartych na języku angielskim nie tylko ze względu na okoliczności historyczne/ekonomiczne, ale także dlatego, że morfologia języka angielskiego ma pewne właściwości, które najlepiej pasują do myślenia algorytmicznego. Ale w każdym razie byłoby interesujące usłyszeć twoje opinie na ten temat, zwłaszcza jeśli sam jesteś wielojęzyczny. Widziałem kilka wzmianek o językach opartych na języku niemieckim (patrz na przykład Plankalkul, w rzeczywistości pierwszy w historii język programowania, o którym wiemy bardzo mało, dzięki WW2), także oparty na rosyjskim posmaku Algol, który istniał w latach 80-tych w przynajmniej na papierze, nie jestem pewien, czy kiedykolwiek istniał w postaci binarnej, czy nie. Oba wyglądały trochę ociężale, ponieważ było więcej skróconych słów i dziwnych skrótów niż pełnych słów, jak w językach opartych na EN. Więc jeśli znasz jakieś inne PL oparte na językach narodowych, nawet całkowicie archaiczne i nieistotne dzisiaj, czysto teoretyczne lub cokolwiek innego, byłoby interesujące przyjrzeć się im. Wracając do głównego pytania: co, jeśli w ogóle, sprawia, że język Szekspira jest tak dobry do programowania? (W Wikipedii znajduje się lista języków programowania innych niż angielski (oczywiście, gdzie jeszcze?), ale byłoby interesujące usłyszeć opinie rodzimych użytkowników tych języków na temat tego, jak naprawdę czuje się dany „narodowy” język programowania tak jak.)


title: Praktyki ekstremalnego programowania sprawiają, że aplikacja jest bardziej podatna na błędy?

text: Prowadzę badania naukowe na temat Extreme Programming i czy jego praktyki prowadzą do tworzenia przestrzeni dla większej liczby błędów i bugów w aplikacjach. Z doświadczeń, które zebrałem od wielu, mam uwagi, które padają po obu stronach. Wielu popiera to i uważa, że jest to codzienna konieczność, z dynamiką, która może ułatwić zmianę wymagań projektowych. Wielu innych twierdzi, że prowadzi to do wielu problemów, takich jak: * Nadmierne zaangażowanie klienta w proces prowadzi do wyrażania życzeń klienta, a nie jego potrzeb * Wiele produktów ma wielu klientów, co prowadzi do sprzecznych potrzeb i opinii, tworząc niepotrzebne blokady * Wiele produktów nie ma klientów zewnętrznych, gdzie produkt jest przeznaczony do użytku wewnętrznego lub do sprzedaży w przyszłości. W takich przypadkach sam zespół gra zarówno użytkownika, jak i programistę, zabijając w ten sposób skuteczność procesu. * Niewiele rzeczy istnieje w formalnej dokumentacji, ta nieformalność prowadzi do niejasnej wizji i może powodować problemy, w których klient może powiedzieć, że nie o to pytaliśmy itp. itd. Pytanie brzmi, dlaczego istnieją takie sprzeczne opinie dotyczące XP. Czy to kwestia różnych scenariuszy? Czy jest coś jeszcze? W jakim stopniu twierdzenie (jak napisano w tytule) jest prawdziwe? Chciałbym, aby ludzie, którzy pracują lub pracowali z XP tutaj, wnieśli swój wkład w naukę i doświadczenia z prawdziwego świata. Byłoby idealnie, gdybyś miał jakieś fakty lub odniesienia do udzielenia odpowiedzi.


title: Czy dozwolone jest odbijanie kodu .NET i używanie go w aplikacji komercyjnej?

text: Pracuję nad komercyjną aplikacją, która wymaga .NET 4.0 **Client Profile** , ale muszę wykonać wywołanie `HttpUtility.ParseQueryString`, który nie jest uwzględniony w profilu klienta, ale jest w normalnym. Po prostu zorientowałem się, że mogę użyć Reflectora, aby uzyskać całą metodę i wszystkie inne wymagane metody, aby działała i dodać ją do mojej aplikacji. W ten sposób nie będę musiał zmieniać wymagania z Profilu Klienta na normalny, który jest o wiele cięższy, aby wywołać pojedynczą metodę. Czy byłoby to nielegalne? Czy **muszę** zmienić platformę docelową aplikacji tylko dla jednej metody?


title: Rozpoczynając programowanie dla prawdziwych klientów, jakie prawa autorskie powinienem umieścić w kodzie?

text: Do tej pory pisałem projekty dla moich znajomych i znajomych moich znajomych, co nie wymagało żadnych legalnych spraw. Teraz przeniosłem się do programowania freelancerów na stronach takich jak vworker.com i zastanawiam się, co powinienem umieścić w komentarzach nad kodem. Nie robię dużych, poważnych projektów, tylko frontendy i skrobaki/boty do użytku osobistego. Czy moje zwykłe `// Wpisany przez Igora Marwińskiego, 2011` wystarczy?


title: Czy powinienem dołączyć znacznik HTML do odpowiedzi JSON?

text: W witrynie e-commerce, podczas dodawania produktu do koszyka, chcę wyświetlić wyskakujące okienko z opcjami, które można wybrać. Wyobraź sobie, że zamawiasz iPoda Shuffle, a teraz musisz wybrać kolor i tekst do grawerowania. Chciałbym, aby okno było modalne, więc używam lightbox wypełnionego wywołaniem Ajax. Teraz mam dwie opcje: ### Opcja 1: Wyślij tylko dane i wygeneruj znacznik HTML za pomocą JavaScriptu Co jest w tym miłe to to, że przycina żądanie Ajax do niedźwiedzia minimum i nie miesza danych ze znacznikami . To, co nie jest w tym tak wspaniałe, to to, że teraz muszę używać JavaScript do renderowania, zamiast robić to za pomocą silnika szablonów po stronie serwera. Być może będę w stanie nieco uporządkować podejście, używając rozwiązania do tworzenia szablonów po stronie klienta. ### Opcja 2: Wyślij znacznik HTML Co jest w tym dobre, to to, że mogę mieć ten sam silnik szablonów po stronie serwera, którego używam do pozostałych zadań renderowania (Django), renderować lightbox. JavaScript jest używany tylko do wstawiania fragmentu HTML na stronę. Więc wyraźnie pozostawia renderowanie silnikowi renderującemu. Dla mnie to ma sens. Ale z jakiegoś powodu nie czuję się komfortowo mieszając dane i znaczniki w wywołaniu Ajax. Nie wiem, co sprawia, że czuję się z tym nieswojo. To znaczy, w ten sam sposób jest wyświetlana każda strona internetowa – dane plus znaczniki – prawda?


title: Oprogramowanie do tworzenia witryn internetowych dla VirtualBox Ubuntu 11.04

text: Zajmuję się tworzeniem strony internetowej na gościu VirtualBox z systemem Ubuntu 11.04 (host działa na systemie Windows, ale chcę tworzyć strony internetowe w środowisku Linux). Moje języki programowania to przede wszystkim PHP i Javascript (używam Apache i node.js). Pytanie brzmi: czy istnieje dobre IDE do pracy w tych warunkach, które poradzi sobie z wirtualizacją? Próbowałem Eclipse i nie byłem szczególnie zachwycony występem; Zastanawiam się, czy istnieje inny sposób na zrobienie tego niż edytowanie całego tekstu w emacsie.


title: Które narzędzie do raportowania preferujesz w aplikacji internetowej?

text: W przypadku PHP i ASP.NET, które narzędzie raportowania wolisz tworzyć, przeglądać i drukować raporty? Nie tylko bezpośrednie drukowanie strony internetowej, profesjonalne narzędzie innej firmy lub narzędzie typu open source.


title: C# - zainicjuj zmienną wewnątrz metody i użyj w całej klasie

text: jest to pytanie koncepcyjne, ale jeśli zainicjuję zmienną w c# jako publiczną, czy będzie ona mogła być używana w klasie, ponieważ chcę mieć zmienną „`player1`” i zmienną „`player2`”, gdzie każda z nich może być jedną z dwie (lub więcej) 1. Gracz 2. Komputer Oto, co chciałbym wiedzieć, jak bym zrobił: public class Game { //odpowiednik inicjalizacji tutaj public bool islogging; public string[] log; publiczne losowania wewnętrzne, okrągłe; Gra publiczna(gracz p1, komputer p2) { gracz publiczny gracz1 = p1; publiczny gracz komputerowy2 = p2; } //inne przeciążenia tutaj... ... } próba tego nie działa, ponieważ słowo kluczowe public jest odrzucane public Game(player p1, player p2 ) { public player player1, player2; gracz gracz3 = p1; gracz gracz4 = p2; }


title: Czy są jakieś wady zamiany pól potwierdzenia js na „oznacz rekord jako usunięty”?

text: Wierzę, że użytkownik zawsze ma wyskakujące okienko z potwierdzeniem usunięcia. Jednak (chociaż jesteśmy do tego bardzo przyzwyczajeni), oddzielne małe wyskakujące okienko nie jest idealne i dla użytkowników korzystających z różnych urządzeń do przeglądania, korzystających z różnych urządzeń wejściowych, może to być koszmar. Myślałem więc o zmianie wszystkich moich „potwierdzenia usunięcia?” wyskakujące okienka, które NIE mają wyskakującego okienka, natychmiast usuwając rekord, ALE następnie oferując link do przywrócenia rekordu na dowolnej stronie, na której użytkownik jest umieszczony po „usunięciu”. To absolutnie wymaga zaktualizowania aplikacji, aby zamiast usuwać rekord, został on oznaczony jako usunięty lub przeniesiony do „deleted_original-table-name”, a zatem w każdym przypadku można go usunąć. Może być wtedy dostępny proces „administracyjny”, aby okresowo je trwale usuwać. Szukam przemyśleń, dlaczego to może być zły pomysł i jakie pułapki, na które warto zwrócić uwagę. Chciałbym wiedzieć, czy są jakieś zalety / wady przeniesienia go do osobnej tabeli w porównaniu do oznaczania, że został usunięty.


title: Automatyczne generatory kodów

text: Jeden z moich kolegów lubi używać automatycznych generatorów kodu, które tworzą duże ilości kodu, który jest słabo udokumentowany i bardzo trudny w utrzymaniu. Czy koszt korzystania z generatora kodu jest wart kłopotów z konserwacją, aby skrócić czas tworzenia?


title: Zarządzanie Programistami Międzynarodowymi

text: Mój szef niedawno wrócił do naszego międzynarodowego biura w swoim kraju, aby przeprowadzić wywiady z kilkoma potencjalnymi nowymi pracownikami, a my zdecydowaliśmy się zatrudnić kilku jako programistów. Są świeżo po studiach i mają bardzo ograniczone doświadczenie (podobnie jak ja, kiedy zacząłem tu pracować). Powiedziano mi, że potrafią czytać po angielsku, jednak spojrzałem na kod, który napisali w ramach procesu aplikacji i wszystkie ich nazwy zmiennych, nazwy metod, komentarze itp. są w języku hiszpańskim. Mam wątpliwości, czy potrafią _pisać_ po angielsku. Słyszałem jednak, że są uczniami, więc może z czasem zdołają się nauczyć, ponieważ dajemy im małe projekty szkoleniowe. Będę z nimi ściśle współpracował, pomagając im nauczyć się dobrych zasad projektowania i innych rzeczy, aż w końcu dojdę do punktu, w którym będę tworzył z nimi kod. Czy ktoś poradził sobie z taką sytuacją i dobrze się skończyła? Na jakie pułapki powinienem zwracać uwagę? Jakie znasz narzędzia, które mogą pomóc w międzynarodowej współpracy i szkoleniach?


title: Czy można uzyskać prawdopodobieństwa z maszyny wektorów nośnych?

text: Z tego, co rozumiem, SVM przyjmują dyskretną liczbę wartości x i y, z których można się uczyć, a następnie po otrzymaniu nowych wartości x mapują je na jedną wartość y (kategorię). Czy można użyć SVM lub czegoś podobnego do mapowania wartości x na prawdopodobieństwa wartości y? Podam przykład, powiedzmy, że twoje wartości x są tablicami dwóch liczb całkowitych: x = [[1,1],[1,0],[0,1],[0,0]] i masz dwie kategorie , a i b takie, że y = [a,a,b,b]. tj. [1,1] i [1,0] mapują na a, [0,1] i [0,0] mapują na b. Biorąc pod uwagę wartość x [1,0,9], SVM prawdopodobnie przewidziałby, że wartość y będzie kategorią a, przy innej wartości x [1,0,89] SVM prawdopodobnie nadal przewidziałby, że wartość y będzie częścią kategorię. Oto, czego szukam: biorąc pod uwagę wartości x i y określone powyżej, funkcja „przewidywania”, której szukam, zwróci tablicę krotek dla każdej kategorii w y postaci: (kategoria, prawdopodobieństwo x było w kategorii) . Na przykład w powyższym przypadku wynik będzie wyglądał mniej więcej tak: [(a,.93),(b,.07)] Moje zastosowanie tego byłoby trochę jak system logiki rozmytej, używający pseudokodu: jeśli x jest prawie na pewno w kategorii a: zrób coś, jeśli x prawdopodobnie znajduje się w kategorii a: zrób coś innego Czy system taki jak ten ma już nazwę? Jeśli nie, jak bym sobie poradziła z wdrożeniem czegoś takiego? Obecnie używam scikit-learn w Pythonie, więc jeśli jest coś takiego, co mógłbym zrobić z tą biblioteką, byłoby to najlepsze.


title: Czy istnieje lepsza alternatywa niż nadużywanie wzorca IDisposable?

text: Rozważmy następujący (zatwierdzony przez firmę Microsoft) kod: <% using (Html.Form<HomeController>(action=>action.Index())) { %> <input type="text" id="search" /> <input type="button" value="Submit" /> <% } %> Instrukcja `using` ma tutaj tylko jeden cel: _dodać znacznik`</form>` na końcu wygenerowanego kodu HTML._ dla mnie, mam nadzieję, z oczywistych powodów: 1. To nie jest „używanie” racji bytu. 2. Celowo powoduje skutki uboczne. 3. Nie jest intuicyjne, że `Html.Form` implementuje `IDisposable`. 4. Instrukcja `using` nie jest właściwie wymagana, ale `Html.Form` zepsuje się bez niej (chyba że sam wyemitujesz `</form>`, co trochę mija się z celem). To nie jedyne nadużycie, jakie ludzie narzucili na schemat „używania”. Pytanie brzmi, czy istnieje realna alternatywa, która zapewnia te same korzyści stylistyczne/czytelne, co „używanie”, nie sprawiając, że będziesz chciał później wziąć prysznic?


title: Nigdy nie miałem pracy - czy będzie to miało znaczenie dla stażu?

text: Przez 20 lat na tej planecie nigdy nie miałem pracy. Jestem studentem CS, który właśnie ukończył swój pierwszy rok na uniwersytecie z wynikiem 3,8 GPA. Będę ubiegać się o staż jesienią przyszłego roku i będę miał ładne portfolio „rzeczy”, które będę mógł zaprezentować (mieszanka aplikacji internetowych, mobilnych i stacjonarnych) w moim CV. Ale... nie mam żadnego doświadczenia zawodowego. Żadnego składania koszulek w centrum handlowym; żadnych przewracanych hamburgerów w Wendy's; nada. Czy trudno będzie mi wyjechać na staż, biorąc pod uwagę, że nie mam wcześniejszego doświadczenia zawodowego? Czy powinienem spróbować znaleźć jakąkolwiek pracę w przerwie między teraz a następną jesienią, żeby przynajmniej coś odłożyć? Na marginesie, jak by to wyglądało, gdybym oznaczył się jako „samozatrudniony” jako freelancer sprzedający niestandardowe witryny i aplikacje internetowe (co planuję zrobić ze znajomym)? Czy to zrekompensuje mój brak doświadczenia w prawdziwym świecie? Czy pracodawcy zjedzą takie rzeczy? Każdy wgląd jest doceniany!


title: Czy Entity Framework firmy Microsoft jest zastrzeżonym wariantem NHibernate?

text: Nie mam wiedzy na temat Entity Framework i NHibernate, ale zdecydowanie chcę się uczyć. Chcę wiedzieć, jak zacząć. Czy najpierw przeczytać dokumentację NHibernate, czy domyślną platformę Visual Studio Entity Framework? Czy Entity Framework firmy Microsoft jest wariantem NHibernate?


title: Dlaczego niektórzy programiści wolą spacje nad tabulatorami?

text: > **Możliwe zduplikowanie:** > Dlaczego niektóre języki zalecają używanie spacji zamiast tabulatorów? Czytając przewodniki po stylach PHP 1. PSR-0 2. PSR-1 3. PSR-2 zauważyłem, że reguła > Kod MUSI używać 4 spacji na wcięcia, a nie tabulatorów. Jestem osobą z kartami, wolę szybszą edycję związaną z używaniem kart. Ale biorąc pod uwagę, że język lub znaczniki nie wymagają spacji zamiast tabulatorów (ala YAML), po co wymuszać spacje, których edycja jest bardziej czasochłonna?


title: Jak komputer może renderować CLI/konsolę wraz z GUI?

text: Jestem zdezorientowany patrząc na grafikę - szczególnie z systemami operacyjnymi. Chodzi mi o to, jak komputer może renderować CLI/konsolę wraz z GUI? GUI są zupełnie inne niż tekst. I jak możemy mieć okna GUI, które wyświetlają interfejsy tekstowe, tj. jak możemy mieć CLI w nowoczesnym graficznym systemie operacyjnym - to jest to, czego głównie staram się uchwycić. W jaki sposób grafika jest renderowana do wyświetlania? Czy istnieje jakiś adres pamięci, do którego dostęp GPU przechowuje wszystkie dane pikseli, a w systemach operacyjnych znajduje się system, który zbiera pozycję pikseli okien i widżetów wraz z indeksem Z i rasteryzuje je do tego adresu pamięci, który następnie ładuje GPU do ekranu? A co z CLI zintegrowanym z grafiką? W jaki sposób system operacyjny informuje GPU, że pewna część ekranu chce wyświetlać tekst, podczas gdy reszta chce wyświetlać dane pikseli?


title: Dlaczego zatwierdzenia git nie zawierają nazwy gałęzi, na której zostały utworzone?

text: Pracując z git w zespole korzystającym z gałęzi funkcji, często mam trudności ze zrozumieniem struktury gałęzi w historii. **Przykład:** załóżmy, że istniała gałąź funkcji **feature/make-coffee** , a naprawianie błędów kontynuowano w **master** równolegle do gałęzi funkcji. Historia może wyglądać tak: * połącz funkcję/zrobienie kawy |\ | * mała poprawka | | * | napraw błąd #1234 | | | * dodaj mleko i cukier | | * | poprawić komentarze | | * | napraw błąd #9434 | | | * zrobić kawę (bez mleka i cukru) | | * | ulepszyć komentarze |/ * **Problem** Na pierwszy rzut oka trudno mi powiedzieć, po której stronie znajduje się gałąź funkcji. Zwykle muszę przejrzeć kilka komentarzy po obu stronach, aby zorientować się, który jest który. Staje się to bardziej skomplikowane, jeśli istnieje wiele równoległych gałęzi funkcji (szczególnie, jeśli są one przeznaczone dla blisko powiązanych obiektów) lub jeśli nastąpiło połączenie w obu kierunkach między gałęzią funkcji i wzorcem. Dla kontrastu, w Subversion jest to znacznie łatwiejsze, ponieważ nazwa gałęzi jest częścią historii - więc mogę od razu powiedzieć, że zatwierdzenie zostało pierwotnie wykonane na "feature/make-coffee". Git _może_ to ułatwić, umieszczając nazwę bieżącej gałęzi w metadanych zatwierdzenia podczas tworzenia zatwierdzenia (wraz z autorem, datą itp.). Jednak git tego nie robi. _Czy istnieje jakiś podstawowy powód, dla którego tego nie robi się? A może po prostu nikt nie chciał tej funkcji? Jeśli to drugie, czy istnieją inne sposoby zrozumienia celu historycznych oddziałów bez widząc nazwy?_


title: Czy narzędzie Sieć znajomych Google nie działa?

text: Patrząc na strony Sieci znajomych, dokumentację, na przykład, zauważyłem, że: * nie było żadnych aktualizacji od dłuższego czasu * wiele witryn używanych jako przykładowe witryny jest martwych lub porzuconych * społeczność (fora, fora dyskusyjne, itp.) jest stosunkowo cichy Czy zestaw narzędzi Google Friend Connect nie działa/jest porzucony, czy nadal jest aktywnie używany, rozwijany i sprzedawany?


title: Masz pomysł na aplikację, ale część jest opatentowana, jakieś sugestie?

text: więc pracowałem nad opracowaniem pomysłu na aplikację, która moim zdaniem ma potencjał, aby odnieść sukces, jednak po kilku wstępnych badaniach odkryłem, że przynajmniej część moich pomysłów jest objęta patentem, patentem w konkretnie jest w posiadaniu naprawdę dużej firmy (nie chcę zdradzać konkretów w obawie, że na pewno zwrócę ich uwagę). Rozważam kilka opcji: 1) Opracuj patenty wokół moich pomysłów, które nie są sprzeczne i może zwróć się do danej firmy o wymianę licencji 2) Po prostu zwróć się do nich o licencję 3) Po prostu rozwijaj się wokół tego i miej nadzieję na najlepsze :-p Co zrobili inni ludzie w takich sytuacjach? Czy firmy generalnie są skłonne udzielać licencji patentowych? Czy są gotowi przyznać je w rozsądnych cenach? Myśli?


title: Dlaczego moduły .NET oddzielają nazwy plików modułów od przestrzeni nazw?

text: W implementacjach języka programowania Scheme (standard R6RS) mogę zaimportować moduł w następujący sposób: (import (abc def xyz)) System będzie próbował poszukać pliku `$DIR/abc/def/xyz.sls` gdzie ` $DIR` to katalog, w którym trzymasz swoje moduły Scheme. `xyz.sls` to kod źródłowy modułu, który w razie potrzeby jest kompilowany w locie. Systemy modułów Ruby, Python i Perl są pod tym względem podobne. Z drugiej strony C# jest trochę bardziej zaangażowany. Po pierwsze, masz pliki dll, do których musisz odwoływać się na podstawie projektu. Musisz odwoływać się do każdego z nich wyraźnie. Jest to bardziej skomplikowane niż powiedzenie, upuszczanie plików dll w katalogu i pobieranie ich po nazwie w C#. Po drugie, między nazwą pliku dll a przestrzeniami nazw oferowanymi przez bibliotekę dll nie istnieje korespondencja jeden-do-jednego nazewnictwa. Mogę docenić tę elastyczność, ale może też wymknąć się spod kontroli (i ma). Aby to uczynić konkretnym, byłoby miło, gdybym, mówiąc to `używając abc.def.xyz;`, C# spróbował znaleźć plik `abc/def/xyz.dll`, w jakimś katalogu, który C# wie, że powinien wyglądać w (konfigurowalne na podstawie projektu). Uważam, że sposób obsługi modułów Ruby, Python, Perl, Scheme jest bardziej elegancki. Wydaje się, że wschodzące języki mają tendencję do prostszego projektowania. Dlaczego świat .NET/C# robi rzeczy w ten sposób, z dodatkowym poziomem niebezpośredniości?


title: Szukasz dobrego podejścia i struktury danych, aby rozwiązać ten problem

text: C# WinForms: Combobox z niektórymi elementami. Arkusz kalkulacyjny z niektórymi elementami. Każdy wiersz ma również pole wyboru, dzięki czemu użytkownicy mogą je zaznaczyć. Użytkownik wybiera elementy z listy rozwijanej i klika przycisk Zapisz. Oznacza to powiązanie tego elementu Combobox z tymi wybranymi elementami w arkuszu kalkulacyjnym. **P1:** Jakiej struktury mogę użyć do śledzenia, który element listy rozwijanej jest powiązany z którym elementem arkusza kalkulacyjnego? UWAGA: Użytkownik może również przesuwać elementy w arkuszu kalkulacyjnym w górę lub w dół. To jest trochę trudne, mogli powiązać niektóre elementy, a następnie zmienić kolejność lub te elementy, ale nadal musimy wiedzieć, jakie elementy są wybrane dla każdego elementu listy rozwijanej **P2:** Jakie jest dobre podejście do śledzenia tego?


title: Czy powinienem zmienić nazwę w WTFPL?

text: Używam WTFPL w moich osobistych projektach publikowanych na GitHub. Obecnie używam go dosłownie, ale podejrzewam, że nie powinienem tam zostawiać Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> i zamiast tego powinienem używać mojego imienia i nazwiska. Ale licencja jest bardzo myląca. Połowa WTFPL dotyczy samego WTFPL, więc pomyślałem, że prawo autorskie może odnosić się do prawa autorskiego do samego tekstu licencji, a nie do projektu, którym jest licencjonowanie. Ponadto mówi > Każdy może kopiować i rozpowszechniać dosłowne lub zmodyfikowane kopie > tego dokumentu licencyjnego, a jego zmiana jest dozwolona, o ile nazwa jest > zmieniona. Czy więc musiałbym zmienić nazwę z WTFPL na powiedzmy „WTFPL-Domenic”?


title: Jak bezpiecznie przechowywać dane uwierzytelniające użytkownika z zewnętrznej strony internetowej

text: Zajmuję się tworzeniem aplikacji, w której chciałbym używać poświadczeń z zewnętrznych stron internetowych. Będzie on używany do logowania się za pomocą interfejsu API witryny i uzyskiwania informacji dla użytkownika. Przykład: Chcę użyć konta użytkownika Reddit, aby ostrzec go, jeśli więcej niż X osób odpowie na jeden z jego komentarzy. Jak mógłbym bezpiecznie przechowywać dane uwierzytelniające użytkownika Reddit po mojej stronie, więc pytam tylko raz i mogę zautomatyzować ten proces. A może to w ogóle możliwe?


title: Po co tworzyć klasy JavaScript?

text: JavaScript jest językiem prototypowym. Przekształcenie go w język oparty na klasach ma niewielką wartość? Nie mówię tutaj o najlepszych praktykach. Pamiętam artykuł z dawnych czasów, w którym twierdził, że światopogląd klasowy jest dostrzegalnie bardziej wadliwy niż ten z prototypów. Moje podsumowanie można znaleźć tutaj: http://carnotaurus.tumblr.com/post/3248631891/class-based-javascript-or-not. Opieram się na używaniu dodatku jQuery opartego na klasach i innych próbach ułatwienia JavaScript opartego na klasach. Presja rówieśników jest silna, ale czy istnieje silniejszy teoretyczny lub praktyczny powód, dla którego powinienem przestać się opierać?


title: Próba zrozumienia zasady pojedynczej odpowiedzialności

text: Mam trudności ze zrozumieniem „Zasady pojedynczej odpowiedzialności”. Czego powinienem szukać, aby ocenić różne źródła informacji w tej sprawie? Czego powinienem szukać w przykładach wyjaśniających zasadę?


title: Czy metody klasy są przechowywane w pamięci tylko raz?

text: Kiedy tworzę instancję klasy, system alokuje pamięć dla wszystkich zmiennych instancji klasy. Niektóre języki mogą nazywać je polami lub właściwościami. Ale co z kodem metod klasowych? Czy te też są zduplikowane, czy mam kod tylko raz w pamięci? Wiem, że wszystkie instancje mają swoje własne wartości - nawet w metodach - ale chciałbym wiedzieć o kodzie. Czy mam zmienne instancji i oddzielne „metody instancji”?


title: Czy programiści komputerów stacjonarnych powinni znać się na tworzeniu stron internetowych i/lub na odwrót?

text: Czy uważasz, że programiści aplikacji desktopowych powinni wiedzieć, jak tworzyć strony internetowe i/lub vice versa? Czy w branży programiści komputerów stacjonarnych często zajmują się tworzeniem stron internetowych (do pewnego stopnia) i/lub odwrotnie (ponownie)? W jakim stopniu jedna z dwóch stron (jeśli w ogóle) powinna znać pracę drugiej strony? Czy w ogóle nie powinieneś się specjalizować?


title: BackgroundWorker rozpoczynający się ponownie w wydarzeniu Completed

text: Chcę, aby pracownik działający w tle kontynuował działanie i od czasu do czasu aktualizował interfejs użytkownika. Moim pierwszym pomysłem było użycie BackgroundWorkera i po jego zakończeniu po prostu odpal go ponownie. **Czy używanie BackgroundWorker w ten sposób jest dopuszczalne?** A może istnieją potencjalne problemy z wykorzystaniem ukończonego zdarzenia do uruchomienia pracownika? * * * Poniżej znajduje się kilka pseudokodów tego, jakie są moje intencje class Program { private static BackgroundWorker worker; prywatny statyczny Int32 działa = 0; static void Main(string[] args) { worker = new BackgroundWorker(); pracownik.DoWork += pracownik_DoWork; worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.RunWorkerAsync(uruchamia); Konsola.CzytajLinię(); } static void worker_DoWork(object sender, DoWorkEventArgs e) { //Wykonaj czasochłonną pracę Thread.Sleep(3000); } static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //Aktualizacja interfejsu użytkownika i ponowne rozpoczęcie czasochłonnej pracy running++; Console.WriteLine("Zakończono uruchomienie #" + uruchamia); pracownik.RunWorkerAsync(); } }


title: Encje (DDD) podczas korzystania z CQRS na Akka

text: Czy przy użyciu Akka, stylu CQRS, nadal jest miejsce dla Entities? Czy też wszystko idzie teraz do Aggregates, zaimplementowanych jako Aktorzy + Obiekty Wartości. Zauważyłem, że większość obiektów jest zapisywana jako obiekty mutowalne z efektami ubocznymi - to nie wydaje się pasować do stylu opartego na aktorze.


title: Jakakolwiek kwestia patentowa, jeśli chcę nazwać moje zajęcia "sygnałem/slotem", tak jak w Qt?

text: Muszę zakodować mechanizm podobny do sygnału i myślałem o użyciu tych samych terminów „slot” i „sygnał” do wskazania sygnału i funkcji, którą należy wywołać. Ponieważ jest to aplikacja komercyjna, chciałbym wiedzieć, czy może być jakiś problem z używaniem tych nazw, np. jeśli Qt ma na nie jakiś patent (szukałem, ale nie mogłem go znaleźć). Uważam, że to głupie pytanie, ponieważ opatentowanie nazwy klasy byłoby co najmniej idiotyczne… ale tak czy inaczej… Aby dodać trochę szczegółów: mój kod jest CAŁKOWICIE inny i nie ma NIC WSPÓLNEGO z Qt poza powyższym. Nie używam moc ani żadnej klasy Qt.


title: Pokaż projekt "hobby" podczas rozmowy kwalifikacyjnej?

text: W wolnym czasie tworzę tę grę na Androida (technologia 3D z OpenGLES2 i shaderami, trochę fajnej sztucznej inteligencji z http://www.steeringbehaviors.de/ ). Celem jest uruchomienie w „Android Market” i zgłoszenie się do firmy zajmującej się tworzeniem gier mobilnych. A podczas wywiadu pokazanie mojego „projektu gry”. Zastanawiałem się, czy firma nie jest firmą zajmującą się grami, ale deweloperem mobilnym, czy nadal można to pokazać, nawet jeśli o to nie pytali?


title: GPLv2 — Wiele silników szachowych AI w celu ominięcia GPL

text: Przeszedłem przez szereg pytań związanych z GPL, z których ostatnie to to: http://stackoverflow.com/questions/3248823/legal-question-about-the-gpl-license-net-dlls/3249001#3249001 Próbuję zobaczyć, jak to zadziała, więc wytrzymaj ze mną. Mam prosty interfejs GUI do gry w szachy. Zasadniczo może wysyłać/odbierać polecenia do/z zewnętrznego silnika szachowego (np. Tong, Fruit, itp.). Aplikacja/GUI ma podobny charakter do XBoard (http://www.gnu.org/software/xboard/), ale została zaprojektowana niezależnie. Po przejściu przez kilka wątków na ten temat wydaje się, że FSF rozważa dynamiczne łączenie z biblioteką GPLv2 jako pracę pochodną, a czyniąc to, GPLv2 rozszerza się na mój zastrzeżony kod i muszę udostępnić źródło mojemu cały projekt. Inne precedensy prawne wskazują na coś przeciwnego, a dynamiczne łączenie nie powoduje rozprzestrzeniania się „wirusowego” efektu licencji GPL na mój zastrzeżony kod. Ponieważ nie ma oficjalnego konsensusu, który mógłby dać „twardą i szybką” odpowiedź na pytanie o dynamiczne łączenie, czy byłaby to akceptowalna alternatywa: polecenia tekstowe z zewnętrznej biblioteki interfejsu, którą piszę 2. Sama biblioteka interfejsów, którą napisałem, jest następnie wydana na licencji GPL 3. Biblioteka interfejsu jest używana tylko do komunikacji za pośrednictwem ogólnego potoku tekstowego z zewnętrznymi silnikami szachowymi wiersza poleceń 4. Szachy sam silnik byłby zbudowany jako narzędzie wiersza poleceń, a nie jako biblioteka dowolnego rodzaju, i po prostu wysyła ciągi w formacie Universal Chess Interface of Chess Engine Communication Protocol ( http://en.wikipedia.org/wiki/Chess_Engine_Communication_Protocol ) . 5. Jedyną „łatwą” jest to, że biblioteka interfejsu nie powinna być specyficzna dla jednego silnika szachowego na GPL, w przeciwnym razie całe GUI byłoby „całkowicie zależne” od niego. Więc po prostu tworzę moją bibliotekę interfejsów, aby była w stanie połączyć się z dowolnym silnikiem szachowym wiersza poleceń, który używa określonego formatu, a nie tylko jednego unikalnego silnika. Mógłbym wtedy dołączyć wstępnie zbudowane wersje aplikacji wiersza poleceń dowolnego z używanych przeze mnie silników szachowych. Czy takie podejście pozwoli mi wykonać następujące czynności: 1. NIE wypuszczaj źródła dla mojego interfejsu użytkownika 2. Zwolnij źródło biblioteki interfejsu, którą zbudowałem (jeśli to konieczne) 3. Użyj jednego lub więcej silników szachowych i dołącz je jako polecenie zewnętrzne Narzędzia -line dostarczane z binarną wersją mojego interfejsu użytkownika Dziękuję. * * * Edycja: Co jest warte, to jest to, że mogę zachować swój własny kod jako prywatny, ponieważ mogę chcieć ponownie wykorzystać część mojego kodu renderującego w innych niezależnych projektach. To nie jest komercyjna próba napisania taniego interfejsu użytkownika, aby skutecznie „opakować” czyjś silnik i czerpać zyski z jego ciężkiej pracy. W końcu napisałem swój własny prosty silnik szachowy (tak naprawdę niewiele więcej niż legalny walidator ruchów), zamiast używać komponentu na licencji GPL.


title: Jakich IDE lub edytorów używają firmy takie jak Google, Apple, IBM itp.?

text: Mimo że mam spore doświadczenie w korzystaniu z różnych narzędzi, nadal nie mogę się zdecydować, czy wolę używać IDE, czy prostego edytora do edycji kodu. Większość środowisk IDE, których doświadczyłem, jest napisana w Javie (np. Eclipse), co czyni je wolnymi i nieporęcznymi. Ich zaletą jest to, że dostarczają wielu narzędzi. Z drugiej strony redaktorzy są zwykle BARDZO szybcy. Można je również rozszerzyć, aby stały się bardziej podobne do IDE, ale zwykle tego nie robię. Istnieje jednak _Sublime Text 2_, który ma wbudowane podstawowe uzupełnianie kodu. Moje pytanie brzmi: czy większość firm Enterprise, takich jak Google, Apple, IBM itp. (z wyjątkiem Microsoft, ponieważ mają NIESAMOWITE IDE, które, jak zakładam, jest używane przez programistów MS) zmusza swoich pracowników do korzystania z IDE i czy używanie zwykłego edytora z zewnętrznymi narzędziami jest uważane za nieprofesjonalne? PS Nie mówiąc już o przypadkach takich jak rozwój Androida, gdzie praca bez IDE jest prawie niemożliwa.


title: Czy uzasadnione jest NIE dostarczanie klientowi dokumentacji technicznej i testów jednostkowych?

text: Jako niezależny sprzedawca, który ma umowę na napisanie produktu dla firmy, rozsądne jest wysyłanie tylko kodu źródłowego i dokumentacji użytkownika, pomijając dokumenty projektowe, diagramy architektury, testy jednostkowe itp. (w zasadzie wszystko, co nie jest ściśle potrzebne do uruchomienia produktu lub przedłużyć)? Celem jest, aby produkt końcowy był rozszerzalny dla klienta, aby mógł dalej rozwijać go wewnętrznie, ale nie za darmo. Zagłębiliby się głęboko w źródło, aby nadać sens niektórym decyzjom projektowym itp., i będą odpowiedzialni za napisanie własnych kompleksowych testów, aby ochronić się przed wprowadzeniem regresji. Nie chodzi o to, aby kod był niezrozumiały. Chciałbym tylko stworzyć w przyszłości możliwość kontraktowania na pisanie rozszerzeń dzięki „wiedzy wewnętrznej” i ekspertyzie, jaką posiadam z bycia oryginalnym autorem. Czy byłoby to uznane za nieetyczne? Edycja: Kontrakt jest obecnie negocjowany, więc kwestia tego, co stanowi ostateczne produkty nie została ostatecznie przesądzona. Dodatkowo powinienem wspomnieć, że zachowam własność produktu. Udzielę klientowi tylko licencji użytkowania. Czy ten szczegół ma wpływ na to, czy jest to uważane za złą formę?


title: Algorytm "niesortowania" / jednorodności danych

text: Próbując nie wymyślać koła na nowo, pytam, czy ktoś ma pomysły na algorytm jednorodności danych. Krótki przykład: Moje dane mogą mieć kilka elementów, takich jak 1. Numer 2. Kolor 3. Owoce 4. Litera W tablicy jest około 100 takich elementów. Algorytm musi _sortować_ elementy tak, aby dowolne 2 wpisy o tej samej liczbie były jak najbardziej oddalone od siebie, a to samo z kolorem, owocami itp. Byłoby też miło, gdybym mógł priorytetyzować elementy. Wydaje się, że nigdy nie osiągniesz 100%, więc dajesz mu kilka podań do wykonania, sprawdzasz wynik, a następnie próbujesz więcej podań. Nie zdziwiłbym się, gdyby znalazło się tutaj coś, co po prostu działa, a czego nie mam wystarczająco dużo google-fu.


title: Jakie informacje powinien zawierać dobry komentarz (metoda/klasa)?

text: To jest coś, co od jakiegoś czasu mnie niepokoi. Wydaje mi się, że jest kilka oczywistych ważnych rzeczy, które powinny znaleźć się w komentarzu, takie jak: * ~~Autor (autorzy)~~ * Opis parametrów (i ich typów, jeśli jesteśmy w dynamicznym języku) * Krótki opis działania metody, m.in. „Przycina początkowe i końcowe białe spacje, aby uzyskać ciągi o nieograniczonej długości”. * Jeśli zgłasza wyjątki. * Semantyka wartości zwracanej. Ale można by sobie wyobrazić wszelkiego rodzaju informacje, które _mogłyby_ być dodane do takiego komentarza, na przykład: * Przykłady użycia * Wyjaśnienie, w jaki sposób metoda jest używana w zakresie projektu * TODO / Miło mieć dla tej metody, które nie są jeszcze zaimplementowane * I prawdopodobnie o wiele więcej Teraz moje pytanie brzmi, jak napisać naprawdę dobry komentarz do metody lub klasy (czyli jakie informacje w nim umieszczasz i jak upewnić się, że są one aktualizowane), wystarczy odpowiednia ilość informacji, aby każdy programista, który musi pracować z Twoim kodem, stanął na wysokości zadania, ale biorąc pod uwagę fakt, że w miarę dodawania do komentarza coraz większej ilości informacji, wzrasta prawdopodobieństwo, że stanie się on nieaktualny (np. jeśli ja dodaj wskaźniki do miejsca, w którym metoda jest / będzie używana w projekcie, może zostać zastąpiona w tej lokalizacji lub może nigdy nie zostać użyta, nawet jeśli była zamierzona).


title: Bezblokujący IPC w systemie Linux dla procesorów wielordzeniowych

text: Próbuję znaleźć sposób na napisanie aplikacji z wolnym od blokad IPC na Linuksie, w C, z procesorami wielordzeniowymi. Załóżmy, że mam proces 1 i proces 2, które zapisują do FIFO lub pamięci współdzielonej. Następnie proces 3 i proces 4 będą czytać z tej pamięci współdzielonej lub FIFO. Czy jest to możliwe dzięki algorytmowi bez blokad? Twoje wskazówki są bardzo cenione.