title: Czy wyświetlanie stopnia naukowego w biurze jest odpowiednie?

text: To trochę nietechniczne pytanie dla osób pracujących w dziedzinie tworzenia oprogramowania. Mój pracodawca wydał sporą sumę na remont 2 biur kierowniczych w 1 obszar rozwoju oprogramowania. Jest tu 3 programistów, a ja jestem jedynym, który posiada dyplom i jedynym ogólnym programistą - program moich współpracowników w języku skryptowym, który steruje naszym produktem sprzętowym. Czuję, że mój pracodawca próbuje pokazać klientom i innym odwiedzającym biuro, że podejmują aktywny krok w zakresie kontroli jakości i funkcjonalności, wprowadzając projekt we własnym zakresie (część z nich została wcześniej zlecona na zewnątrz). Czuję, że jesteśmy pod opieką; nowe meble, nowy sprzęt do pracy, itp. Zastanawiam się, czy warto pokazywać dyplom w biurze. Generalnie uważam, że byłoby dobrze, jestem z tego dumny i ciężko na to pracowałem. Moim jedynym wahaniem jest to, że są tutaj inżynierowie, którzy są znacznie bardziej ugruntowani w swojej karierze, którzy nie wykazują żadnego ze swoich certyfikatów (pamiętaj, że ich obszar roboczy jest zbudowany ze ścian działowych zamiast płyt kartonowo-gipsowych, ale nie sądzę, że jest czynnikiem decydującym, ale może być). Oczywiście skonsultowałbym się z pracodawcą przed powieszeniem czegokolwiek na ścianach, ale pomyślałem, że dobrze byłoby się wyczuć, zanim do nich podejdę. Jakie było twoje doświadczenie z tego rodzaju decyzją i czy są inne względy, których pomijam? Dziękuję


title: Rozpoznawanie języka migowego

text: Jestem studentem ostatniego roku studiów licencjackich na kierunku Informatyka. Mój zespół i ja podjęliśmy „Rozpoznawanie języka migowego” jako nasz projekt ostatniego roku. Dopiero zaczęliśmy i jesteśmy w fazie zbierania informacji (zbierania danych). Planujemy używać rękawic Instrumented Gloves jako urządzenia wejściowego. Ale nie mamy dużej wiedzy w tej dziedzinie. Zetknęliśmy się również z następującymi metodami trenowania systemu rzeczywistego rozpoznawania gestów, a co za tym idzie języka migowego. 1. Sieci neuronowe 2. Symboliczne algorytmy uczenia 3. Ukryte modele Markowa 4. Uczenie oparte na instancjach 5. Techniki oparte na gramatyce Proszę powiedzieć, których z nich powinienem użyć do rozpoznawania znaków. Opowiedz mi również o Instrumented Gloves i czy jest jakaś konkretna odmiana, którą powinniśmy wybrać do naszego projektu?


title: Jaka jest historia powstania platformy .NET?

text: Oglądałem ostatnio wykłady Douglasa Crockforda na temat JavaScript i w pewnym momencie powiedział, że Microsoft nie uważa JavaScript za ważny, ponieważ postrzega sieć jako przemijającą fazę korzystania z Internetu, która zostanie zastąpiona przez coś, co w tamtym czasie luźno znane jest jako „Internet X”. , a oni chcieli, aby .NET stał się „Internetem X” Oczywiście sieć jest nadal z nami i znamy .NET jako platformę do tworzenia aplikacji. Czy ktoś może mi opowiedzieć o wczesnej historii platformy .NET io tym, jak przejść od zamierzonego zamiennika sieci do platformy, którą znamy dzisiaj?


title: Jak obrócić tablicę bitów

text: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/YmIEw.png) Obecnie mam obiekt PIL Image, który przechowuję jako tablicę bitów (1 i 0). Jednak teraz chciałbym móc obrócić ten obraz o 45 stopni. Jednym ze sposobów, aby to zrobić, jest pobranie oryginalnego obrazu PIL, zastosowanie na nim macierzy transformacji, a następnie przekonwertowanie go na tablicę bitów. Problem z tym podejściem polega na tym, że jest to kosztowne obliczeniowo, zwłaszcza jeśli chcę zacząć robić więcej niż jeden obrót. Szybciej byłoby po prostu bezpośrednio zmodyfikować tablicę bitów. Próbowałem użyć numpy.roll: numpy.roll(bity, 45) # obrót o 45 stopni Niestety, to po prostu powoduje przesunięcie kołowe, a nie rzeczywisty obrót kątowy. Jakiego algorytmu mogę użyć na tablicy bitów, aby uzyskać pożądany wynik bez konieczności przechodzenia przez oryginalny obraz? Mimo że moja aplikacja jest w Pythonie, twoja odpowiedź może być w dowolnym języku, w którym czujesz się komfortowo, bardziej interesuje mnie sam algorytm niż składnia :)


title: Jaki jest typowy dzień pracy w życiu młodszego programisty?

text: Jestem studentką na kierunku CS i nie odbyłam jeszcze stażu. Zastanawiam się, jak wygląda normalny dzień pracy dla młodszego programisty. Jakie jest normalne codzienne obciążenie pracą? Czy istnieją jakieś cechy charakterystyczne lub biurowe związane z byciem programistą, które różnią się od innych pracowników niższego szczebla?


title: Hermetyzuj rzutowanie w dół po powrocie z metody

text: W rozdziale 24 Code Complete autor mówi, w odniesieniu do enkapsulacji downcastingu przy powrocie z metody: „Jeśli podprogram zwraca obiekt, powinien normalnie zwrócić najbardziej specyficzny typ obiektu, o którym wie. Odnosi się to w szczególności do podprogramów, które iteratory zwracane, kolekcje, elementy kolekcji itd." Teraz, będąc programistą C#, zazwyczaj zawsze zwracam ICollection zamiast, powiedzmy, IList lub nawet List. Korzystając z interfejsu znajdującego się wyżej w hierarchii, mogę zmienić typ kolekcji w metodzie bez naruszania interfejsu metody. Wydaje się to dobrą rzeczą. czego mi brakuje?


title: Kiedy nie używać Springa do tworzenia instancji fasoli?

text: Próbuję zrozumieć, jakie byłoby prawidłowe użycie Springa. Nie syntaktycznie, ale pod względem celu. Jeśli ktoś korzysta ze Springa, to czy kod Springa powinien zastąpić cały kod instancji ziaren? Kiedy używać Springa, a kiedy nie, aby stworzyć instancję fasoli? Być może poniższy przykładowy kod pomoże Ci zrozumieć mój dylemat: List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = new ClassA(); ca.setName(nazwa); caList.add(ca); } Jeśli skonfiguruję Springa wygląda to mniej więcej tak: List<ClassA> caList = new ArrayList<ClassA>(); for (String name : nameList) { ClassA ca = (ClassA)SomeContext.getBean(BeanLookupConstants.CLASS_A); ca.setName(nazwa); caList.add(ca); } Osobiście uważam, że używanie Springa jest tutaj niepotrzebnym obciążeniem, ponieważ 1. Kod jest prostszy do odczytania/zrozumienia. 2. To naprawdę nie jest dobre miejsce na Dependency Injection, ponieważ nie spodziewam się, że będzie wielokrotna/zróżnicowana implementacja `ClassA`, którą chciałbym swobodnie zastąpić za pomocą konfiguracji Spring w późniejszym czasie. Czy dobrze myślę? Jeśli nie, to gdzie się pomylę?


title: Dlaczego MongoDb jest popularny dzięki Node.js?

text: Przyglądałem się różnym stosom sieciowym, głównie szynom i node.js. Jedną rzeczą, która mnie uderza, jest to, że podczas gdy rails jest często używany z relacyjną bazą danych, Node.js wydaje się iść w parze z Mongodb, sądząc po blogosferze. Czy jest ku temu konkretny powód? Podoba mi się modularność węzła, ale jestem również sceptyczny wobec NOSQL. Mam wrażenie, że jeśli posiadanie rdbm jest ważne, powinienem użyć szyn, ponieważ wydają się być obywatelami drugiej kategorii w ekosystemie węzłów.


title: Czy jest wartość w uczeniu się Framework Entity 4.0?

text: Kupiłem używaną książkę Julii Lerman (2010) na EF4.0 i teraz zastanawiam się, czy EF zmienił się dramatycznie od tego czasu, chcę nauczyć się tej technologii i nie wiem, czy zaczynanie od poprzedniej wersji ma znaczenie, czy nie (przestarzałe funkcje, nowe praktyki, różne podejścia...). Jeśli zacznę od nauki EF 4.0, czy będę się uczyć martwej lub umierającej technologii, czy też większość tego, czego się uczę, przełoży się bezpośrednio na EF 5. Czy są rzeczy, o których powinienem wiedzieć, a które są skrajnie różne w zastosowaniu tych dwóch wersji?


title: Dlaczego nie zatwierdzić nierozwiązanych zmian?

text: W tradycyjnym systemie VCS rozumiem, dlaczego nie zatwierdzasz nierozwiązanych plików, ponieważ możesz zepsuć kompilację. Jednak nie rozumiem, dlaczego nie powinieneś zatwierdzać nierozwiązanych plików w DVCS (niektóre z nich faktycznie _zapobiegają_ zatwierdzeniu plików). Zamiast tego uważam, że twoje repozytorium powinno być zablokowane przed _pushing_ i _pulling_ , ale nie zatwierdzaniem. Możliwość zatwierdzenia podczas procesu scalania ma kilka zalet (tak jak ja to widzę): * Rzeczywiste zmiany scalania są w historii. * Jeśli scalenie było bardzo duże, można było dokonywać okresowych zmian. * Jeśli popełniłeś błąd, znacznie łatwiej byłoby cofnąć się (bez konieczności ponownego scalania). * Pliki mogą pozostać oznaczone jako nierozwiązane, dopóki nie zostaną oznaczone jako rozwiązane. Zapobiegnie to pchaniu/ciągnięciu. Możesz również potencjalnie mieć _zestaw_ zestawów zmian, który będzie działał jako scalanie, a nie tylko jeden. To pozwoliłoby ci nadal używać narzędzi takich jak `git rerere`. Dlaczego więc zatwierdzanie z nierozwiązanymi plikami jest niemile widziane/uniemożliwiane? Czy jest jakiś inny powód niż tradycja?


title: Potrzebujesz porady dotyczącej specjalistycznego systemu eCommerce

text: Przeprowadzam analizę wymagań/systemów w konkretnym projekcie i przydałoby mi się kilka porad. **PROBLEM:** Projekt przeznaczony jest dla organizacji, która ma wielu dostawców, z których każdy ma w swoim ekwipunku do kilku tysięcy pozycji. Lista inwentarzowa dostawcy będzie w większości dostępna za pośrednictwem pewnego rodzaju API. Zawiera nazwę produktu, opis, zdjęcia, unikalny identyfikator (np. kod kreskowy) oraz inne szczegóły, takie jak wymiary, waga, kolory itp. w zależności od pozycji magazynowej. Organizacja posiada wiele sklepów detalicznych. Te sklepy detaliczne mogą zdecydować się na sprzedaż pozycji magazynowych dostępnych od dostawców organizacji po dowolnej cenie ustawionej przez sklepy detaliczne. Sklepy detaliczne muszą również mieć możliwość: * oznaczania, czy pozycja z zapasów jest dostępna w sklepie i/lub online * dodawania do swoich zapasów towarów, które nie są częścią listy zapasów dostawców organizacji * dostarczania sklepów detalicznych zmiennych modeli cen klientów (np. ustalona cena dla stałego klienta, obniżona cena dla preferowanych klientów itp.) * pozwalają klientom kupować produkty w oparciu o linię kredytową W przypadku zakupów online bramka płatności/konto sprzedawcy powinno być: * brama płatności organizacji/konto sprzedawcy lub * własne konto bramy płatności/konto sprzedawcy w sklepie detalicznym Sklepy detaliczne również potrzebują podstawowych funkcji CMS dla swojej witryny, takich jak: * możliwość dodawania stron * możliwość definiowania niestandardowych danych (np. takich jak „kanały” koncepcja w ExpressionEngine) * zarządzanie członkami Organizacja musi również zarządzać witryną internetową poszczególnych sklepów detalicznych, a także pozwolić poszczególnym sklepom detalicznym na samodzielne zarządzanie/administrowanie strakcji. Potrzebna jest więc funkcja „menedżera wielu lokalizacji” + panele sterowania na poziomie lokalizacji. Organizacja udostępni również sklepom detalicznym kilka szablonów do wyboru. Potrzebny byłby więc solidny system szablonów wraz z możliwością wyboru szablonów. **CZĘŚCIOWE ROZWIĄZANIE KONCEPCYJNE:** Pomyślałem, że powinienem mieć scentralizowane repozytorium dla wszystkich pozycji magazynowych dostawcy, aby dostawcy mogli mieć do nich jednolity dostęp. Spowodowałoby to zduplikowanie danych, ale może być konieczne, ponieważ dane będą potrzebne do wyświetlania szczegółów produktu, kategoryzacji, wyszukiwania itp. Korzyści z posiadania scentralizowanego repozytorium to: * dowolne klucze API, którymi należy zarządzać w celu uzyskanie listy inwentarzowej dostawców byłoby tylko w jednym miejscu * każdy specjalny kod do uzyskania inwentaryzacji dostawców również musiałby znajdować się w jednym miejscu **PYTANIA** 1. Czy mój pomysł na posiadanie scentralizowanego repozytorium jest dobrym pomysłem ? 2. Czy jest to system, który należy zbudować od podstaw?


title: Korzystanie z publicznego API biblioteki z licencją BSD w projekcie z licencją MIT

text: Piszę kod, który chciałbym wydać na licencji MIT. Korzysta z publicznego API biblioteki licencjonowanej na podstawie 3-klauzulowej licencji BSD. Nie redystrybuuję biblioteki z kodem źródłowym i nie dostarczam binariów, użytkownicy muszą sami zainstalować bibliotekę i skompilować ze źródeł. Czy muszę uwzględnić licencję biblioteki w moim projekcie, skutecznie zastępując licencję MIT, nawet jeśli nie redystrybuuję kodu źródłowego?


title: Przykłady zastosowania MVVM poza społecznością Microsoft?

text: CZY MVVM zyskuje jakąkolwiek przyczepność poza społecznością Microsoft? W Silverlight nie jest to problemem, ale w przypadku innych technologii, takich jak JavaScript, z pewnością tak jest: na przykład Knockout.js to świetny framework, ale „reszta świata” wydaje się być na ścieżce Backbone. Obawiam się, że frameworki MVVM (takie jak Knockout) będą cierpieć na brak efektu sieciowego, ponieważ są ograniczone do ekosystemu Microsoft, a tym samym pozostaną w tyle w porównaniu z resztą.


title: Czy istnieją środowiska takie jak Visual Studio dla systemów wbudowanych?

text: Pomyślałem, że byłoby bardzo przydatne, gdyby istniało wbudowane narzędzie do tworzenia aplikacji, takie jak Visual Studio do tworzenia stron internetowych. Mam na myśli to, że kiedy tworzymy aplikacje internetowe, mamy zestaw narzędzi, przeciągamy i upuszczamy komponenty i ogólnie używamy zdarzeń. W systemach wbudowanych zdarzeniami są przerwania. Dlaczego więc nie mamy skrzynki narzędziowej, która zawiera elementy obwodów elektronicznych i przeciągamy je i upuszczamy, również klikając na nie, pisząc za nimi kod. Czy istnieje takie rozszerzenie dla Visual Studio? czy jest jakieś inne takie środowisko?


title: Czy nadal posiadam akredytację pracy, mimo że nie posiadam praw autorskich?

text: Ukończyłem pracę na Uniwersytecie w zakresie projektu strony internetowej. Rozumiem, że jeśli nie zwrócę się do Uczelni o własność intelektualną, mają pełne prawa do projektu. Klauzula jest następująca: > 18.1 Wszelkie prawa własności intelektualnej do wszelkich prac stworzonych przez > studenta w trakcie studiów będą należeć do i będą absolutną własnością Uczelni, a student zrobi to wszystko działa i podpisuje wszystkie niezbędne akty i dokumenty w celu przyznania tytułu prawnego > własności intelektualnej na Uniwersytecie. Pytania jakie mam to: 1. Czy posiadam jakiekolwiek prawa do projektu? 2. Czy w tym momencie zrzekłem się wszelkich praw do utworu? 3. Czy akredytacja i IP są oddzielne? Tj. czy nadal mam prawo do akredytacji na stronie, mimo że jej nie posiadam? Każda rada lub pomoc są mile widziane.


title: Czy są jakieś znane efekty na kognitywne ładowanie wielu plików z jednym plikiem na obiekt?

text: W społeczności Ruby/Rails pojawiła się tendencja do tworzenia wielu obiektów, które mają bardzo małą funkcjonalność (czy ktoś SRP?) i żyją we własnym pliku. Są one często wyodrębniane z dużych, rozdętych plików modeli. To mogłoby być dobre, ale myślę, że często zmienia to jeden problem (rozdęte modele z setkami linii kodu) na inny, gorszy problem (setki małych plików obiektowych w podkatalogach po kilka warstw). Czy są jakieś znane efekty na różnicę obciążenia poznawczego między wieloma małymi plikami a mniejszą liczbą dużych?


title: Dlaczego tak wiele warstw z domainobject jak obiekty w aplikacji?

text: Weźmy na przykład typową aplikację Silverlight dla linii biznesowej. Po pierwsze, w bazie danych mamy tabelę produktów, która zawiera pola identyfikatora, nazwy, ceny itp.; Następnie po stronie serwera powinniśmy mieć w warstwie dostępu do danych klasę Product Entity, która ma właściwości ID,Name,Price,itd; Następnie powinniśmy mieć klasę Product DTO z właściwościami ID, Name, Price itp.; Następnie po stronie klienta (Silverlight) mamy klasę Product DTO z właściwościami ID,Name,Price itp. jako Data Contract do komunikacji z serwerem; Następnie powinniśmy mieć klasę Product ViewModel, która również posiada właściwości ID,Name,Price,itd. do powiązania z View. **Czy te liczne warstwy podobnych obiektów nie naruszają zasady Don't Repeat Yourself?** A jeśli sam model domeny biznesowej staje w obliczu częstych zmian? Na przykład klient chce usunąć/dodać nowe właściwości do produktu, co spowoduje, że wszystkie warstwy zmienią jego kod. Wprowadzamy dodatkową warstwę DAL przy założeniu, że podstawowa baza danych ulegnie zmianie, ale w rzeczywistości sam model biznesowy zmienia się znacznie częściej niż logika dostępu do danych lub prezentacji.


title: Ocena bibliotek zewnętrznych

text: W naszej firmie często korzystamy z zewnętrznych bibliotek i frameworków w naszych produktach. Często stajemy przed zadaniem oceny jednej lub więcej bibliotek, które w pełni spełniają podobne wymagania (w konkretnym przypadku musieliśmy wybrać między kilkoma bibliotekami szyfrującymi). Często robimy prosty prototyp, aby spróbować dowiedzieć się, czy biblioteka w jakiś sposób dla nas działa. Jednak często prototypy stają się naprawdę skomplikowane i kiedy dochodzimy do punktu, w którym dochodzimy do wniosku, że biblioteka nie nadaje się do naszych celów, poświęcaliśmy dużo czasu, który moglibyśmy wykorzystać na napisanie pożądanej funkcjonalności. Moje pytanie brzmi: czy masz lub praktykujesz jakieś wytyczne, jeśli chodzi o ocenę bibliotek innych firm? Mówiąc dokładniej, czy masz coś w rodzaju maksymalnego czasu, jaki spędzisz na prototypach i czy masz ogólne wymagania dotyczące używanych bibliotek (problemy z licencją, wsparcie, dokumentacja, ...)?


title: Brzydkie błędy - nieistniejące?

text: Bardzo krótkie wprowadzenie (jest to dość mocno kontekstowe pytanie): Jestem 17-letnim dzieciakiem/programistą skryptowym, robię kilka projektów, zwykle tworząc około 20 plików po 200 linijek każdy. Zwykle nie programuję bardzo niskopoziomowych, bardziej wysokopoziomowych z wbudowanymi API takie jak Python + pygame i Lua + WoW API. Niemniej jednak napisałem sporo kodu na niższych poziomach komputera (głównie C/C++). Teraz czytam **dużo** dyskusji programistów, a często powracającym argumentem jest _zapobieganie brzydkim błędom_ , na przykład w "ponownym używaniu nazw zmiennych". Zawsze kiwałem głową i myślałem, że to słuszny argument, ale właśnie teraz zastanawiałem się, na ile on jest słuszny? Szczerze mówiąc, po chwili namysłu doszedłem do wniosku, że nie mam pojęcia, co mają na myśli z _nieznośnymi błędami_. Wszyscy słyszeliśmy historie o fenomenalnych błędach niemożliwych do debugowania, wszyscy spędzaliśmy bezużyteczne wieczory nad tym jednym irytującym błędem, ale poza kilkoma przypadkami nigdy nie byłem zajęty błędem związanym z programowaniem dłużej niż kilka godzin. Chociaż z drugiej strony projekty, nad którymi pracuję (red) nie są ogromnymi 10-milionowymi projektami, takimi jak jądro linux, i są dość prostymi... skryptami. Dobrze je rozumiem (a przynajmniej mój udział we współpracy) i nie jestem zbyt podatny na błędy. Zastanawiam się więc, czy te nieznośne błędy pojawiają się wykładniczo wraz ze wzrostem ilości kodu, czy…?


title: Czy CMS powinien być połączony z prezentacją?

text: Wydaje się, że rośnie trend w systemach CMS do zarządzania nie tylko przechwytywaniem danych i przepływem pracy, ale także do bycia produktem typu end-to-end, który zarządza prezentacją i treściami użytkownika końcowego (takimi jak komentarze/fora). Myślałem, że to dość śmieszne, ale wygląda na to, że takie podejście zyskuje coraz większą popularność. Wydaje mi się, że te dwie koncepcje powinny być całkowicie ortogonalne. CMS musi albo opublikować zawartość w bazie danych lub repozytorium XML, albo udostępnić interfejs API (RESTful lub inny) i pozostać niezależnym od prezentacji. Jestem pewien, że sprzęganie przynosi pewne korzyści, ale kosztem przywiązania i braku elastyczności. Myślę, że moje pytanie brzmi, czy powinienem płynąć z prądem, czy jest to coś, z czym powinienem walczyć?


title: od programisty do kariery nauczyciela oprogramowania

text: Jestem inżynierem oprogramowania w dużej firmie i kocham to, co robię. Jednak czuję, że na dłuższą metę chciałbym zostać nauczycielem tych przedmiotów, nie do końca klasycznym nauczycielem uniwersyteckim, ale bardziej jak prowadzenie warsztatów/seminariów dla profesjonalnych programistów. Wszelkie rady dotyczące rzeczy, które mógłbym zacząć robić teraz (za powiedzmy 5 lat), byłyby niezwykle przydatne. Mieszkam w Londynie w Wielkiej Brytanii, jeśli to pomoże ...


title: Wdrażanie baz danych Microsoft-Access za pomocą naszej aplikacji

text: Do tej pory w naszej aplikacji używamy baz danych DAO 3.51 (MS-Access 97). Rozważamy użycie nowszej wersji. * Jakie wersje są dostępne? * A co z wdrożeniem? * A co z tantiemami/opłatami licencyjnymi? * Jakieś zalecenia dotyczące alternatyw? To pytanie powinno być łatwe do zbadania, ale mi się nie udało.


title: Testowanie bota IRC

text: Używam jesiennego klejnotu do stworzenia bota Ruby IRC do gry. Jednak wprawia mnie to raczej w zakłopotanie, ponieważ nie wiem, jak testować tego rodzaju program... Myślę, że powinienem kpić z procesu IO, aby mieć nad nim kontrolę, ale nie widzę, jak w tym przypadku, używając klejnot. Czy ktoś ma pomysł ?


title: Co powinieneś zawrzeć w dokumencie dotyczącym podejścia rozwojowego?

text: Jestem w trakcie współtworzenia dokumentu „podejście rozwojowe” dla zasobów off-shore, które wkraczają do naszego projektu. Najnowszy (podobny) dokument, z którego korzysta nasza firma, ma ponad 80 stron i nie zawiera dokumentów dotyczących norm/konwencji w zakresie kodowania. Obawiam się, że ten dokument nie będzie zdatny do użytku i dlatego ulegnie awarii. Co _powinno_ znajdować się w dokumencie dotyczącym podejścia programistycznego? Czy są jakieś przyzwoite wytyczne na ten temat? EDYCJA: Dokument dotyczący podejścia programistycznego powinien szczegółowo określać praktyki i techniki, które będą stosowane przez programistów podczas projektowania, tworzenia i testowania oprogramowania.


title: Pytania dotyczące wydawania aplikacji zbudowanej na IDE na licencji edukacyjnej

text: Jeśli aplikacja jest tworzona w trakcie edukacji przy użyciu IDE, które posiada Licencję Edukacyjną (dostarczoną przez instytut), a później programiści decydują się na wypuszczenie jej na rynek jako produkt: 1. Czy jest to legalne i ważne? 2. Czy budowanie tej aplikacji za pomocą bezpłatnej lub komercyjnej wersji tego samego IDE jest ważne, czy też projekt musi zostać przekodowany lub opracowany od samego początku, w całości na komercyjnej wersji IDE. 3. Jakie uprawnienia i licencje należy uzyskać, jeśli istnieje taki plan? 4. Czego jeszcze oczekujemy pod tym względem? 5. Jeśli jest taki plan, to jak się do niego przygotować na początku projektu, na przykład z kim i jak o tym rozmawiać, jaką papierkową robotę itp. należy zrobić, żeby w końcu nie było nic nielegalnego.


title: Jak mogę poprawić moją zdolność rozwiązywania problemów?

text: Wszyscy mówią to samo: „prawdziwy programista wie, jak radzić sobie z prawdziwymi problemami”. Ale zapominają, jak i gdzie nauczyli się tej umiejętności: nie uczy się jej w szkołach. Co mogę zrobić, aby poprawić swoją zdolność do rozwiązywania złożonych problemów programistycznych? Jakie strategie sprawdziły się dla Ciebie? Czy są konkretne obszary, na których powinienem się skupić, takie jak algorytmy lub wzorce projektowe?


title: Jak mogę zorganizować przepływ danych, aby przetworzyć dobre rozwiązanie programowe?

text: Moim głównym problemem podczas tworzenia programu jest to, że chociaż mam do dyspozycji narzędzia, jestem zbyt zdezorganizowany, aby właściwie używać ich do rozwiązywania moich problemów. Często mój proces jest po prostu próbą i błędami, dopóki program nie zadziała. Chcę zobaczyć, czego inni używają do organizowania procesu pisania programów.


title: Jak poprawić swoje umiejętności rozwiązywania problemów?

text: > **Możliwy duplikat:** > Jak można poprawić zdolność rozwiązywania problemów? Koncentruję się na staniu się lepszym programistą, a jednym z obszarów, na którym chciałbym się skupić, jest doskonalenie umiejętności rozwiązywania problemów. Naprawdę dobrzy programiści, których znam, bardzo dobrze rozumieją problem i wiedzą, jak podejść JAK, aby dowiedzieć się, czego nie wiedzą. Często słyszałem, że programista musi dobrze znać problematyczną domenę, w przeciwnym razie jego kod nie może być zbudowany na słabym zrozumieniu biznesu. Prawie nigdy nie byłem w środowisku, w którym dano mi czas na wystarczające poznanie biznesu. Czy inni mogą podzielić się swoimi przemyśleniami na temat najlepszych praktyk, jak podejść do rozwiązania problemu, a co ważniejsze... jak najlepiej podejść do znalezienia informacji, które musisz znać, aby uzyskać rozsądną odpowiedź lub hipotezę? Czy są na to jakieś dobre książki lub źródła?


title: Co robią ludzie z małych firm, jeśli chodzi o „legalność” przy sprzedaży oprogramowania?

text: Dla tych, którzy z powodzeniem sprzedali oprogramowanie przez Internet, po wysiłku związanym z napisaniem oprogramowania, stworzeniem strony internetowej, zdobyciem nazwy domeny, hostingiem strony internetowej, założeniem placówki handlowej, stworzeniem wersji próbnej itp. - co robisz zająć się prawnym aspektem zezwalania na używanie wersji pobranej z Internetu tylko w zamierzonym zakresie. To jest z perspektywy powiedzmy: - * każda stacja robocza, serwer, procesor itp. liczy się jako licencja CAL * Rozwój vs Ocena vs Produkcja * Wsparcie i aktualizacje * Nie pozwalając użytkownikowi na sprzedaż * Nie zezwalaj na modyfikowanie/rozszerzanie Czy istnieje standardowa procedura / umowa na to - tj. czy są dokumenty w domenie publicznej na to, czy mogę wziąć jeden od innego dostawcy oprogramowania, dostosować go itp. Czy też muszę to zrobić ręcznie - tj. uzyskać księgowego / prawnika- osoba, która to napisze


title: Definicja błędu oprogramowania. Blizzard Entertainment upiera się, że mój „błąd” wcale nie jest błędem. Czy mają rację?

text: Według Wikipepdii > _Usterka oprogramowania jest powszechnym terminem używanym do opisania błędu, usterki, pomyłki, awarii lub usterki w programie komputerowym lub systemie, który powoduje niepoprawny lub nieoczekiwany wynik albo powoduje niezamierzone zachowanie ._ Ostatnio znalazłem "błąd" w StarCraft 2, który daje nieoczekiwany rezultat: http://eu.battle.net/sc2/en/forum/topic/2868627470 Problem polega na tym, że jeśli utrzymam StarCraft 2 w zminimalizowanym przez długi czas gra nie rozłącza się ani nie generuje żadnego limitu czasu. Rozłącza się jednak _po_ pierwszej bitwie i czasami traci dane gry (statystyki meczu). Niestety, według Blizzarda: > _Gra nie została zaprojektowana tak, aby była minimalizowana przez tak długi czas >. (Blizzard) nie może uznać takiego zachowania za tak błędne, jak StarCraft II > nie powinno być minimalizowane przez wiele godzin._ Czy mój „błąd” to naprawdę błąd?


title: Bezpieczeństwo usług Ria

text: Mam app silverlight, który łączy się z platformą encji za pośrednictwem usługi ria WCF. Te połączenia muszą być bezpieczne. Co mogę zrobić, aby tylko prawowici użytkownicy mogli dzwonić do usługi ria i aby połączenie było bezpieczne? Użytkownik musi się zalogować, aby dostać się do aplikacji silverlight, więc może ten login w jakiś sposób można zapisać w celu uwierzytelnienia połączeń ria?


title: Uwagi dotyczące rozpoczęcia pracy nad ujednoliconym wyszukiwaniem

text: Zainteresowałem się stworzeniem ujednoliconego wyszukiwania bazy danych zarządzania majątkiem korporacyjnym. Moim celem jest umożliwienie użytkownikom przesyłania zapytań takich jak: * `rzeczy w budynku 3210` * `rzeczy w budynku 3210 należącym do Jima` * `rzeczy w budynku 3210 należącym do organizacji 2` * `osoby w organizacji 2, które posiadają rzeczy` * `rzeczy należące do osób w org 2` * `ludzi w budynku 3210` * `ludzi w budynku 3210, którzy są właścicielami` Chociaż aplikacja jest napisana w C#, nie mam problemu z budowaniem warstwy wyszukiwania w innym języku, jeśli jest bardziej odpowiedni do zadania. Pracując z .NET widziałem wykorzystanie F#, Lucene lub ANTLR do osiągnięcia moich celów, ale liczyłem na porady mędrca przed rozpoczęciem jakiejkolwiek jednej ścieżki. Jakie kwestie należy wziąć pod uwagę podczas pracy z rozpoznawaniem języka? Jakie pytania nie zadaję, a które powinienem?


title: Organizacja komputerów i inżynieria oprogramowania

text: Prowadzimy kurs o nazwie Organizacja komputera. Zastanawiam się, czy jest to przydatne z punktu widzenia inżynierii oprogramowania. Oto niektóre tematy z kursu: Architektura zestawu instrukcji (ISA), względy projektowe ISA, RISC vs. CISC, asembler i język maszynowy, programowanie maszyny RISC. Arytmetyka komputerowa, jednostka arytmetyczno-logiczna, liczby zmiennoprzecinkowe i ich implementacje arytmetyczne. Konstrukcja procesora, ścieżka danych i implementacja sterowania, sterowanie mikroprogramowane, wykrywanie wyjątków. Potokowanie, zagrożenia, projektowanie procesorów potokowych, wykrywanie i przekazywanie zagrożeń, przewidywanie rozgałęzień i obsługa wyjątków. Hierarchia pamięci, zasady, struktura i wydajność pamięci podręcznych, pamięć wirtualna, segmentacja i stronicowanie. Urządzenia we/wy, wydajność we/wy, interfejsy we/wy. Czy powinienem nauczyć się wszystkich tych tematów, czy są jakieś tematy, które mógłbym pominąć? To jest strona kursu online http://courses.bilkent.edu.tr/videolib/course_videos.php?courseid=16


title: Najlepsze praktyki dotyczące klas anonimowych w aplikacjach UI

text: Podczas pracy z programami Java opartymi na interfejsie użytkownika, jednym ze sposobów dołączania zachowania do pewnych działań _(np. do kliknięcia przycisku)_ jest użycie klas anonimowych. W poniższym przykładzie framework GUI to SWT, jednak mam te same problemy z komponentami Swing lub Android UI. Mianowicie strukturyzacja moich programów. MenuItem sampleMenuItem = new MenuItem(popupMenu, SWT.NONE); sampleMenuItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { doCoś(); // obsłuż wszystkie wpisy tabeli dla (int i=0; i<10; i++) { doCoś2(); } doCos3(); zróbCoś4(); } }); Oczywiście niektórzy mogą argumentować, że ilość kodu w powyższym przykładzie gwarantuje już stworzenie dedykowanej klasy zawierającej logikę. Sugeruje to również reguła Sonara **„Anonimowe klasy nie powinny mieć zbyt wielu linii”**. Co ciekawe, reguła ta określa również, że: > squid : S1188 - Podczas oczekiwania na obsługę domknięcia w Javie, anonimowe > klasy są najwygodniejszym sposobem na wstrzyknięcie zachowania bez konieczności > tworzenia dedykowanej klasy. Ale te anonimowe klasy wewnętrzne powinny być > używane tylko wtedy, gdy zachowanie można wykonać w kilku linijkach. W przypadku bardziej złożonego kodu > wymagana jest nazwana klasa. Ponieważ jednak domknięcia nie pojawiły się jeszcze w Javie, **moje pytanie brzmi, czy istnieją bardziej eleganckie rozwiązania niż** : * napisanie garści kodu w ramach anonimowych klas, który ma różne wady _(ograniczone ponowne użycie, wolniejsze nawigowanie kod, ...)_ * tworzenie ogromnej ilości klas dedykowanych, które same w sobie mogą mieć bardzo ograniczoną funkcjonalność _(np.: over-engineering, ...)_ _Aby rozszerzyć moje pytanie:_ Chciałbym też wiedzieć co jakie są najlepsze praktyki w odniesieniu do tego aspektu aplikacji UI opartych na Javie? Czy są jakieś dobrze ugruntowane wzorce?


title: Metoda Factory — gdy obiekty potrzebują informacji do zainicjowania

text: Spójrzmy na prosty przykład: załóżmy, że mam trzy klasy implementujące `IPersonRepository`: `SQLPersonRepository`, `WebPersonRepository`, `InMemoryPersonRepository`. Posiadam również klasę `PersonRepositoryFactory`, która jest prostą implementacją wzorca metody Factory - zawiera metody `GetPersonRepository`, które mają jako parametr enum/string. Jak mogę utworzyć wzorzec Factory (lub innymi słowy scentralizować tworzenie moich obiektów), gdy `SQLPersonRepository` wymaga zależności dla: `SQLConnection` lub ciągu do ścieżki bazy danych, `WebPersonRepository` potrzebuje jakiegoś obiektu ustawień http, a `InMemoryPersonRepository` nie ma zależności? Mógłbym go przekazać w konstruktorze Factory lub jako parametr metody, ale byłby brzydki, nieczysty i nienadający się do konserwacji, zwłaszcza gdybym miał więcej implementacji `IPersonRepository`.


title: Jak ćwiczyć programowanie obiektowe?

text: Zawsze programowałem w językach proceduralnych, a obecnie zmierzam w kierunku orientacji obiektowej. Głównym problemem, z którym się zetknąłem, jest to, że nie widzę sposobu na efektywne ćwiczenie orientacji obiektowej. Wyjaśnię mój punkt widzenia. Kiedy nauczyłem się PHP i C, ćwiczenie było dość łatwe: wystarczyło wybrać coś i pomyśleć o algorytmie dla tej rzeczy. Na przykład w PHP liczyło się usiąść i pomyśleć: „no cóż, żeby poćwiczyć, zbuduję jedną aplikację z obszarem administracyjnym, w którym ludzie mogą dodawać produkty”. To było całkiem proste, chodziło o wymyślenie algorytmu do zarejestrowania jakiegoś użytkownika, zalogowania użytkownika i dodania produktów. Łącząc je z funkcjami PHP, był to dobry sposób na praktykę. Teraz w orientacji obiektowej mamy wiele dodatkowych rzeczy. Nie chodzi tylko o myślenie o algorytmie, ale o głębszą analizę wymagań, pisanie przypadków użycia, wymyślanie diagramów klas, właściwości i metod, konfigurowanie wstrzykiwania zależności i wiele innych rzeczy. Najważniejsze jest to, że w sposobie, w jaki uczyłem się orientacji obiektowej, wydaje się, że dobry projekt jest kluczowy, podczas gdy w językach proceduralnych wystarczył jeden niejasny pomysł. **Nie** mówię, że w językach proceduralnych możemy pisać _dobre_ oprogramowanie bez projektu, tylko że dla ćwiczenia jest to wykonalne, podczas gdy w orientacji obiektowej wydaje się niewykonalne obejście bez dobrego projektu, nawet do ćwiczeń. Wydaje się to być problemem, ponieważ za każdym razem, gdy mam zamiar ćwiczyć, muszę rozgryźć mnóstwo wymagań, przypadków użycia itd., wydaje się, że nie jest to dobry sposób na poprawę orientacji obiektowej, ponieważ wymaga to żebym miał jeden cały pomysł na aplikację za każdym razem, gdy mam zamiar ćwiczyć. Z tego powodu, jaki jest dobry sposób na ćwiczenie orientacji obiektowej?


title: Jak poradzić sobie z błędnie nazwaną funkcją w kodzie produkcyjnym?

text: Niedawno natknąłem się na bibliotekę Pythona na GitHub. Biblioteka jest świetna, ale zawiera jedną rażącą literówkę w nazwie funkcji. Nazwijmy to `dummy_fuction()`, podczas gdy powinno być `dummy_function()`. Ta funkcja jest zdecydowanie „na wolności” i najprawdopodobniej używana w systemach wbudowanych. Pierwszą rzeczą, jaka przychodzi mi do głowy, jest dodanie drugiej wersji funkcji z poprawną nazwą i dodanie ostrzeżenia o wycofaniu do pierwszej wersji w następnym wydaniu. Trzy pytania: 1. Czy powyższe podejście może mieć niezamierzone konsekwencje? 2. Czy istnieje standardowe podejście do tego rodzaju problemu? 3. Jak długo należy pozostawić ostrzeżenie o wycofaniu?


title: Jak zidentyfikować ramy rozwoju oprogramowania?

text: Na podstawie jakich informacji możemy zidentyfikować coś jako framework do tworzenia oprogramowania? Na przykład artykuł w Wikipedii o „frameworkach oprogramowania” twierdzi, że powinien on zawierać programy pomocnicze, kompilatory, biblioteki kodu itp. Ale są pewne firmy, które znam, które nazywają bibliotekę kodu „frameworkiem”! Co powinno zawierać określone środowisko programistyczne, aby można je było uznać za „ramy”?


**Kiedy możesz oferować innowacje bez odrywania się od zadania?** Nie rozumiem, jak kreatywna innowacja pasuje do Agile i innych metodologii. **Ludzie chcą tylko tego, o co prosili, prawda?** Załóżmy, że stosujesz skuteczną metodologię, taką jak Agile/SCRUM. Kiedy możesz oferować innowacje bez odrywania się od zadania? Załóżmy, że tworzysz aplikację i robisz kilka kreatywnych rzeczy z UX. Klient dał ci dorozumiane instrukcje, a ty trzymasz się drogi. Wyobraź sobie, że odkrywasz innowację, która nie jest wersją beta. Jeśli wprowadzisz innowacje w niewłaściwy sposób, możesz wyglądać na nieprzydatnego.


title: Dlaczego PHP ma interfejsy?

text: Zauważyłem, że od PHP5 dodano interfejsy do języka. Jednakże, ponieważ PHP jest tak luźno typowane, wydaje się, że większość korzyści płynących z używania interfejsów jest tracona. Dlaczego jest to zawarte w języku?


title: Umieszczenie funkcjonalności audytu w bazie danych

text: Nasza baza danych nie posiada funkcji audytu. * Nie rejestruje, kto wstawia rekord lub kto go zmienia * Nie przechowuje historii dokonanych zmian * Nic nie może zostać przywrócone, jeśli coś pójdzie nie tak * Istnieje wiele innych niedociągnięć, na przykład baza danych nie zawiera żadnych danych uczciwość, cokolwiek można wrzucić, bez sprawdzania na różnych polach, duplikatów itp. Moje pytanie brzmi, kto to jest, aby wprowadzić tę funkcjonalność? Programista ASP, który zna podstawy SQL i regularnie wchodzi w interakcję z bazą danych. A może administrator SQL, którego jedynym zadaniem jest praca z bazami danych, ich optymalizacja i utrzymanie? W tym momencie nie mamy administratora SQL, ale możemy go zatrudnić. Jak dużym przedsięwzięciem powinno być dla dewelopera rozwiązanie powyższych problemów?


title: Czy możesz kodować prawa autorskie w ramach 2 oddzielnych podmiotów?

text: Zastanawiam się, czy możliwe jest objęcie prawem autorskim kawałka oprogramowania w ramach 2 oddzielnych podmiotów, pozwalając obu podmiotom na pełne prawo robić z oprogramowaniem, co chcą, a jednocześnie nie pozwalając jednemu z podmiotów na odbieranie uprawnień drugiemu? Zasadniczo pracuję w zespole i nie otrzymuję wynagrodzenia, więc nie jest to sytuacja, w której płacę za wynajem i prawdopodobnie będę budować system platformy internetowej od podstaw w C#. Chcę mieć pewność, że w przypadku rozpadu zespołu lub wyrzucenia przeze mnie zespołu, nadal będę mógł kontynuować pracę nad systemem platformy internetowej bez żadnych problemów prawnych. Nie chodzi o to, że nie ufam zespołowi tak jak ja, ale życie nauczyło mnie zawsze zakrywać własny tyłek. Czy lepszym sposobem na poradzenie sobie z tym byłoby objęcie prawem autorskim kodu pod moim nazwiskiem, a następnie danie zespołowi licencji na używanie kodu w sposób, który uzna za stosowny? Wiem również, że wszelkie porady, które tutaj otrzymuję, najprawdopodobniej nie pochodzą od prawnika, a nawet jeśli tak jest, każda udzielona porada może nie być w 100% dokładna zgodnie z prawem.


title: Kody QR jako potwierdzenie rezerwacji na konferencję?

text: Mój klient organizuje konferencję, a my mamy za zadanie stworzyć dla niego system rezerwacji. Poprosili jednak, abyśmy używali kodów QR, aby na drzwiach osoba mogła po prostu przedstawić swój kod QR, zostać zeskanowana i bum! są zalogowani. To nie jest taki problem, ponieważ pomyślałem, że mógłbym użyć długiego adresu URL, aby połączyć się z naszą bazą danych i zalogować osobę, oznaczyć ją jako zarezerwowaną/potwierdzoną i skończyć z tym. To bardzo proste, problem polega na tym, że co, jeśli osoba skanująca sama jest kodem QR? Jak zapewnić, że tylko osoby znajdujące się w drzwiach konferencji mają możliwość skanowania kodów kreskowych i wpisywania się? Tak naprawdę ograniczam się do php/jquery, gdybym znał XCODE, napisałbym aplikację, ale tego nie robię. Myśli, które miałem: 1. Uzyskaj adres IP lokalnej sieci WIFI i akceptuj tylko żądania z niej (jednak to nie powstrzymuje publiczności przed logowaniem) 2. Użyj jakiejś zmiennej w $_SERVER[], którą mógłbym zmapować jako pochodzący z tylko telefon pewnej osoby.


title: Jak zorganizować pliki MVVM w rozwiązaniu

text: Jestem całkiem nowy w koncepcji MVVM, ale podoba mi się duża elastyczność, jaką daje mi do tej pory. Jednak staram się znaleźć dobry sposób na zarządzanie moim kodem. Mam kilka klas, które po prostu siedzą w folderze w moim rozwiązaniu, takie jak `xxxView.cs`, `xxxViewModel.cs`, `yyyView.cs`, `yyyViewModel.cs`, `zzzView.cs`, `zzzViewModel.cs ` masz pomysł. Moje rozwiązanie zaczęło się tłoczyć, co utrudnia znalezienie szukanych plików. Czy istnieje jakiś standardowy sposób organizowania tych plików? Czy mam utworzyć folder **View** i **ViewModel**, aby oddzielić i wyczyścić rozwiązanie, czy może ludzie znaleźli lepszy sposób?


title: Jakie są wyzwania związane z pisaniem w kompilatorze dla dynamicznie typowanego języka?

text: W tej prelekcji Guido van Rossum mówi (27:30) o próbach napisania kompilatora dla kodu Pythona, komentując to mówiąc: > okazuje się, że nie jest tak łatwo napisać kompilator, który zachowa wszystkie ładne > właściwości dynamicznego typowania i utrzymuje również poprawność semantyczną > programu, dzięki czemu faktycznie robi to samo, niezależnie od tego, jakie > dziwactwa robisz gdzieś pod przykrywką i faktycznie działa szybciej **Jakie są (ewentualne) wyzwania związane z pisaniem kompilator dla dynamicznie wpisywanego języka, takiego jak Python?**


title: Stabilność projektowania oprogramowania, YAGNI i Agile

text: Kryterium dobrego zaprojektowania systemu spełniłem, ponieważ jego stabilność względem zmieniających się wymagań. Małe zapotrzebowanie zmiany powinny wywołać drobne zmiany w projekcie. Jednak mam przeczucie, że prawie dla każdego nieco złożonego systemu oprogramowania możliwe jest określenie zestawu małych zmian w wymaganiach, które powodują nieakceptowalną ilość zmian w oprogramowaniu. To uczucie jest oparte na osobistych doświadczeniach, choć niezbyt wspaniałych, oraz na fakcie, że harmonogramy są często przerywane. Społeczność może polemizować z tym stwierdzeniem w przypadku silnej różnicy zdań. Ale pytanie ma sens tylko wtedy, gdy się zgadzasz. Zasada YAGNI działa dobrze przeciwko overengineeringowi, a metodologia Agile wnosi ją do całego procesu tworzenia oprogramowania: system ewoluuje przyrostowo, co doskonale wpisuje się w koncepcję stabilności, od której zacząłem ten post. Ale... Jeśli jednak zgodzimy się, że istnieją pewne punkty niestabilności, czy nie powinniśmy zlokalizować tych przypadków, aby zrozumieć implikacje od samego początku? A jak to możliwe, jeśli projektujemy system w sposób zwinny i przyrostowy?! PS Interesująca część dialogu z moim kolegą: * Nie ma nic złego w stopniowym rozwoju oprogramowania. * Czy wyobrażasz sobie koszty zmiany architektury oprogramowania Curiosity po wylądowaniu na Marsie? * Hej, ale może i zmieniono oprogramowanie! * Tak, ale wcześniej starannie zaprojektowali tę funkcję. A jeśli nie... to byłby punkt bez powrotu.


title: Rozpocznij i zakończ czy Przed i Opublikuj w parze połączeń asynchronicznych?

text: W parze wywołań asynchronicznych wolisz mieć parę BeginDoSomething & FinishDoSomething lub PreDoingSomething & PostDoingSomething? Twoje zdrowie


title: Aktualna wersja iOS/statystyki urządzenia?

text: Odpowiedź na to pytanie SO stała się nieaktualna: statystyki wersji/urządzeń iOS - gdzie mogę znaleźć? ponieważ waluta czasu nie była częścią tego pytania, a aktualizacje wersji iOS zostały wydane od czasu zadania tego pytania. Czy istnieje witryna internetowa lub inne publicznie dostępne źródło, które prowadzi aktualną lub często aktualizowaną listę odsetka urządzeń z systemem iOS i używanych wersji systemu operacyjnego, być może poprzez ciągłe monitorowanie analiz aplikacji lub dzienników witryn internetowych lub w inny sposób? A jakie informacje o urządzeniu lub systemie operacyjnym mogą obecnie raportować analityka aplikacji na iOS, jeśli w ogóle? (...przy założeniu odpowiedniej polityki prywatności i oczywiście jej przestrzeganiu.)


title: Statystyki wersji/urządzeń iOS - gdzie mogę znaleźć?

text: Ponieważ pracuję nad aplikacjami na iOS, staram się znaleźć statystyki dotyczące liczby dostępnych urządzeń iOS. Najlepiej w podziale na wersje: Iphone 3G, Iphone 3Gs, Iphone 4 itd. Chciałbym również poznać statystyki dotyczące różnych wersji iOS. Po godzinie googlowania dowiedziałem się, że nie jest to najłatwiejsza rzecz do znalezienia. Czy ktoś ma jakieś fajne linki do zakładek do udostępnienia?


title: Jakie są wady typów niezmiennych?

text: Widzę, że używam coraz więcej niezmiennych typów _gdy nie oczekuje się zmiany instancji klasy_. Wymaga więcej pracy (patrz przykład poniżej), ale ułatwia korzystanie z typów w środowisku wielowątkowym. Jednocześnie rzadko spotykam typy niezmienne w innych aplikacjach, nawet jeśli mutacje nikomu nie przyniosłyby korzyści. **Pytanie:** Dlaczego typy niezmienne są tak rzadko używane w innych aplikacjach? * Czy to dlatego, że pisanie kodu dla typu niezmiennego trwa dłużej, * Czy coś mi brakuje i istnieją pewne ważne wady podczas używania typów niezmiennych? ## Przykład z życia Powiedzmy, że otrzymujesz `Pogodę` z API zgodnego z REST w następujący sposób: public Weather FindWeather(string city) { // DO ZROBIENIA: Załaduj odpowiedź JSON z interfejsu API RESTful i przetłumacz ją na instancję // Klasa pogody. } Ogólnie zobaczylibyśmy (usunęliśmy nowe linie i komentarze w celu skrócenia kodu): public sealed class Weather { public City CorrespondingCity { get; ustawić; } publiczne SkyState Sky { get; ustawić; } // Przykład: SkyState.Clouds, SkyState.HeavySnow itp. public int PrecipitationRisk { get; ustawić; } public int Temperatura { get; ustawić; } } Z drugiej strony, napisałbym to w ten sposób, biorąc pod uwagę, że pobieranie `Pogody` z API, a następnie jej modyfikowanie byłoby dziwne: zmiana `Temperatura` lub `Sky` nie zmieniłaby pogody w świecie rzeczywistym, a zmiana `CorrespondingCity` również nie ma sensu. publiczne zapieczętowane klasa Pogoda { prywatne tylko do odczytu Miasto odpowiadające Miasto; prywatne niebo SkyState tylko do odczytu; prywatny tylko do odczytu int opadówRyzyko; prywatna tylko do odczytu int temperatura; public Weather(Miasto odpowiadające miastu, niebo stanu Sky, int.ryzyko opadów, int temperatura) { this.correspondingCity = odpowiadająceCity; this.sky = niebo; this.precipitationRisk = wytrącanieRisk; ta.temperatura = temperatura; } public City CorrespondingCity { get { return this.correspondingCity; } } public SkyState Sky { get { return this.sky; } } public int PrecipitationRisk { get { return this.precipitationRisk; } } public int Temperatura { get { return this.temperature; } } }


title: Kod źródłowy jar.exe - czy jest dostępny?

text: To może wydawać się dziwne pytanie, ale chcę stworzyć plik wykonywalny działający pod Windows napisany w C++. Program musi mieć możliwość aktualizacji pliku jar, nawet jeśli Java nie jest zainstalowana na komputerze docelowym. Widziałem src.zip w folderze Java JDK i folderze jar, ale to jest kod Java. Zakładam, że jar.exe jest napisany w C lub C++? Czy można zobaczyć kod źródłowy jar.exe? Jeśli tak, gdzie bym to znalazła?


title: Jak zdalnie pracować jako Kontrakt/Konsultant?

text: Obecnie pracuję na pełen etat, ale moja firma myśli o przekształceniu mnie w Kontrakt/Konsultant, ponieważ jestem teraz w innym mieście i muszę pracować zdalnie. Wiem, że zazwyczaj stanowiska kontraktowe są wynajmowane przez agencje, w tym przypadku, ponieważ będę kontaktować się bezpośrednio z moją firmą, powiedziałem im, że będę pobierał tylko taką samą kwotę, jak gdybym otrzymał pracę kontraktową od agencji , w ten sposób nadal otrzymuję konkurencyjną stawkę, a moja firma może płacić niższą stawkę (brak agencji, która mogłaby odebrać obniżkę). Kilka podstawowych faktów: 1. Mam typowy zespół - niektórzy są bardziej zagorzali, inni nie, lider techniczny/menadżer stara się dokładać wszelkich starań, aby dotrzymać terminów, co oznacza, że obciążenie pracą nie zawsze jest rozłożone równomiernie, ale prawdopodobnie jest to prawdziwe dla każdego zespołu. 2. Jak dotąd lubię swoją pracę jako programista, mam dużo obowiązków i przez większość czasu dostaję wartościową pracę. 3. Członkowie mojego zespołu są w większości młodzi, tak jak ja, najlepiej byłoby, gdyby w zespole byli doświadczeni starsi programiści/architekci, z którymi mogliby przekazywać pomysły, ale jak dotąd tak się nie stało. 4. Nasz zespół produkuje aplikacje desktopowe napisane w c#, co oznacza, że nie są w to zaangażowane aplikacje webowe, czasami zastanawiam się, czy to oznacza, że jestem „zamknięty”. Wracając do możliwości Kontraktu, mam następujące obawy: 1. Czy to rzeczywiście byłby dobry ruch w karierze? (to jest moje największe zmartwienie) Jak zwrócił mi uwagę nasz HR, takie stanowisko kontraktowe może zostać rozwiązane, gdy uzna, że nie jestem już potrzebny, lub jeśli firma musi obciąć budżet, po czym będę musiał szukać w przypadku nowej pracy, czy „Umowa/Konsultant” w CV zaszkodzi mojemu poszukiwaniu pracy? (Będę wykonywał więcej prac architektonicznych/projektowych, kiedy będę w nowej roli kontraktowej) 2. Przez większość czasu będę pracował zdalnie. Zastanawiam się, czy zaszkodziłoby to lub pomogłoby mi w rozwoju kariery architekta. 3. Czy powinienem być jednoosobową działalnością gospodarczą, czy powinienem zostać zarejestrowany? Jaka byłaby korzyść z obu? 4. Nie będzie żadnych świadczeń medycznych/dentystycznych/innych (podstawy pokrywa OHIP Canada), czy powinienem rozważyć wykupienie prywatnego ubezpieczenia? Jeśli tak, to ile by to było? 5. Moja firma zamierza wprowadzić ograniczenia, takie jak: nie będę mógł pracować w godzinach nadliczbowych (nie mogę naliczać więcej niż normalna liczba godzin dziennie), będę musiał pokryć wszystkie wydatki (inne niż sprzęt), takie jak podróże i kursy <\- Nie mam nic przeciwko drugiemu, czy pierwszemu jest normalne, że stanowiska kontraktowe są poproszone o wykonanie zadań, ale bez nadgodzin? Czy powyższe brzmi znajomo? Jakieś sugestie/rady, które możesz mi dać na temat tego, o czym powinienem myśleć/na co uważać?


title: Jakie są przydatne rzeczy, które możesz zrobić z Mvc Modelbinder?

text: Przychodzi mi do głowy, że mechanizm ModelBinder w publicznym interfejsie ASP MVC IModelBinder { obiekt BindModel(System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext); } Jest niesamowicie potężny. Jakie są fajne zastosowania tego mechanizmu, które zrobiłeś/widziałeś? Myślę, że skoro koncepcja jest podobna w innych frameworkach, nie ma powodu, aby ograniczać ją do Asp Mvc


title: Czy kiedykolwiek pracowałeś nad brandingiem swojego oprogramowania?

text: Oczywiście, jeśli chcę, aby moje oprogramowanie przyciągało wystarczająco dużo gałek ocznych, powinienem je oznaczyć. O ile oczywiście nie ma konkurencji. Chciałbym zrozumieć Twoje przemyślenia na temat brandingu oprogramowania.


title: Dlaczego Google nie używa GWT w większości swoich aplikacji?

text: Google stworzył Google Web Toolkit (GWT) i nie używa go podczas tworzenia własnych aplikacji internetowych. Czy to oznacza, że GWT nie nadaje się do tworzenia dynamicznych aplikacji? A może masz problemy z pamięcią podręczną? A może masz problemy z RPC? A może istnieją inne obawy, które uniemożliwiają Google korzystanie z tej technologii? `EDIT`: Nie mówię tutaj, że Google nigdy nie używał GWT w żadnej aplikacji, ale co chcę powiedzieć, dlaczego nie używają go w szerokim zakresie?


title: Jak ważna jest praca z zespołem?

text: Niedługo skończę studia z tytułem magistra informatyki. Mam kilka ofert, które rozważam i dla mnie największa różnica między tymi dwoma stanowiskami sprowadza się do jednego - jak ważne jest, aby świeżo upieczony absolwent był częścią zespołu inżynierów oprogramowania? Czy pomoże mi to bardziej rozwijać się pod względem kariery w inżynierii oprogramowania? Czy pomoże mi to stać się lepszym inżynierem oprogramowania, ponieważ mogę uzyskać wskazówki od doświadczonych inżynierów? Pierwsza oferta dotyczy małej firmy telekomunikacyjnej. Od jakiegoś czasu jestem tu na stażu i kocham ludzi, z którymi pracuję. Również tutaj obecnie mieszkam, więc nie jest wymagana relokacja. Problem polega na tym, że jestem tutaj praktycznie jedynym inżynierem oprogramowania. Wszyscy inni to inżynierowie sieci lub integratorzy systemów. Moim celem jest zrobienie kariery w tworzeniu oprogramowania i obawiam się o możliwość rozwoju. Głównie zajmuję się tworzeniem narzędzi wewnętrznych oraz pisaniem skryptów do zarządzania sieciami. Mój dyrektor mówi, że planuje w końcu poszerzyć nasz zespół programistyczny. Ponadto brak zespołu programistycznego engg oznacza, że przepełnienie stosu jest moim mentorem, a nie, że jest to coś złego. Druga oferta dotyczy firmy z najwyższej półki technologicznej. Plusem tej oferty jest to, że będę częścią zespołu inżynierów oprogramowania i mam nadzieję, że będę miał okazję wiele się od nich nauczyć. Nie jestem do końca pewien, czy tak się stanie, ponieważ nigdy nie pracowałem w zespole programistycznym Engg poza uczelnią. Minusy tej pracy to: * trzeba przenieść się ponad 1600 mil dalej * na północny zachód, więc pogoda nie jest przyjemna przez cały rok. Pochodzę z Teksasu * Podobał mi się kierownik i inni ankieterzy, ale nie ma gwarancji, że polubię zespół * wynagrodzenie z uwzględnieniem świadczeń jest nieco niższe niż w małej firmie. Co o tym sądzisz? Proszę pomóż mi. Dziękuję.


title: Jakie cechy przyczyniły się do ewolucji Pascala?

text: Kompiluję szczegółową historię języka Pascal i brakuje mi kilku szczegółów. Obecnie jest tak wiele funkcji, które uważamy za oczywiste. Jakie cechy znacząco przyczyniły się do ewolucji Pascala i dlaczego były istotne? Szukam funkcji językowych, a nie funkcji platformy lub struktury. Tak jak przeciążenie operatora lub parametry domyślne, ale nie obsługa Linuksa lub nowy widget Rich Text. Wiem, że istnieje kilka różnych smaków Pascala (Delphi, Free Pascal, Oxygene, Quick Pascal, Apple Pascal itp.) i wprowadzono te same funkcje w różnym czasie i równolegle. To dobrze. Patrzę na język Pascal jako całość i **_kiedy_** wystąpiły znaczące kamienie milowe (daty, wersje itp.)


title: Szukam rzeczywistego przykładu ilustrującego, że kompozycja może być lepsza od dziedziczenia

text: Obejrzałem kilka wykładów na temat Clojure i programowania funkcjonalnego Richa Hickeya, a także niektóre wykłady SICP, i jestem sprzedany na wiele koncepcji programowania funkcjonalnego. Niektóre z nich włączyłem do mojego kodu C# w poprzedniej pracy i na szczęście łatwo było napisać kod w C# w bardziej funkcjonalnym stylu. W mojej nowej pracy używamy Pythona, a **wielokrotne** dziedziczenie jest modne. Moi współpracownicy są bardzo inteligentni, ale muszą szybko tworzyć kod, biorąc pod uwagę charakter firmy. Uczę się zarówno narzędzi, jak i bazy kodu, ale spowalnia mnie też sama architektura. Nie napisałem istniejącej hierarchii klas (ani nie byłbym w stanie wszystkiego o niej pamiętać), więc kiedy zacząłem dodawać dość małą funkcję, zdałem sobie sprawę, że muszę w tym procesie przeczytać dużo kodu. Na pierwszy rzut oka kod jest zgrabnie zorganizowany i podzielony na małe funkcje/metody, a nie powtarzające się kopiowanie-wklejanie, ale drugą stroną tego, że nie jest powtarzalny jest to, że gdzieś w łańcuchu hierarchii ukryta jest jakaś magiczna funkcja, która w magiczny sposób skleja rzeczy razem i działa w moim imieniu, ale bardzo trudno go znaleźć i śledzić. Musiałem odpalić profiler i uruchomić go przez kilka przykładów i narysować wykres wykonania, a także kilka razy przejść przez debugger, przeszukać kod w poszukiwaniu jakiegoś podciągu i po prostu czytać strony w tym czasie. Jestem prawie pewien, że kiedy skończę, otrzymany przeze mnie kod będzie krótki i zgrabnie zorganizowany, a jednocześnie niezbyt czytelny. To, co piszę, wydaje się deklaratywne, tak jakbym pisał plik XML, który napędza jakiś inny magiczny silnik, z wyjątkiem tego, że nie ma jasnej dokumentacji na temat tego, jak powinien wyglądać XML i co robi silnik, z wyjątkiem istniejących przykładów, które mogę przeczytać jako jak również kod źródłowy „silnika”. Musi być lepszy sposób. IMO używające kompozycji zamiast dziedziczenia może całkiem pomóc. W ten sposób obliczenia będą raczej liniowe niż przeskakiwać po całym drzewie hierarchii. Ilekroć funkcja nie pasuje do modelu dziedziczenia, będzie musiała zostać zniekształcona, aby się zmieścić, lub cała hierarchia dziedziczenia będzie musiała zostać zrefaktoryzowana/zrównoważona, coś w rodzaju niezrównoważonego drzewa binarnego wymaga od czasu do czasu przetasowania w celu poprawić średni czas wyszukiwania. Jak wspomniałem wcześniej, moi współpracownicy są bardzo mądrzy; po prostu robią rzeczy w określony sposób i prawdopodobnie mają zdolność jednoczesnego trzymania w głowie wielu niepowiązanych bzdur. Chcę ich przekonać, aby spróbowali kompozycji i funkcjonalności w przeciwieństwie do podejścia OOP. Aby to zrobić, muszę znaleźć bardzo dobry materiał. Nie sądzę, żeby wystarczył wykład SCIP lub wykład Richa Hickeya - obawiam się, że zostanie on uznany za zbyt akademicki. Wtedy proste przykłady klas Dog and Frog i AddressBook nie są zbyt wygodne - pokazują, jak dziedziczenie można przekształcić w kompozycję, ale nie dlaczego jest naprawdę i obiektywnie lepsze. To, czego szukam, to przykład kodu z prawdziwego świata, który został napisany z dużą ilością dziedziczenia, a następnie uderzył w ścianę i został przepisany w innym stylu, który wykorzystuje kompozycję. Być może jest blog lub rozdział. Szukam czegoś, co może podsumować i zilustrować rodzaj bólu, przez który przechodzę. Już rzucałem frazą „kompozycja ponad dziedziczenie”, ale nie została ona przyjęta tak entuzjastycznie, jak się spodziewałem. Nie chcę być postrzegany jako nowy facet, który lubi narzekać i walić istniejący kod, szukając idealnego podejścia, jednocześnie nie wnosząc wystarczająco szybko. Jednocześnie mam przeczucie, że dziedziczenie jest często narzędziem zła i chcę pokazać lepszą drogę w niedalekiej przyszłości. Czy natknąłeś się na jakieś wspaniałe zasoby, które mogą mi pomóc?


title: Zapewnianie jakości i szybkości naprawiania błędów w projekcie Open Source Python Project

text: Po raz pierwszy w życiu utrzymuję framework open source (w Pythonie na platformach *nix, jeśli to ma znaczenie). To prawie pre-alfa, niewiele więcej niż naukowy dowód koncepcji, jeszcze. Ale jest już również używany w produkcji przez inny dział, ponieważ jest to jedyna platforma na świecie, która podchodzi do ich potrzeb. Teraz mamy dwa antybiegunowe cele: jakość i szybkość rozwoju. Oczywiście chcę jakości w postaci dokumentacji, testów jednostkowych, przeglądów kodu i pewnego rodzaju użycia "beta", zanim będę pewny, że zmiana zostanie zastosowana w produkcji. Ale zespół programistów ma martwe linie i kiedy znajdzie błąd, co zdarza się dość często w tym prototypie, potrzebuje naprawy błędu, aby bardzo szybko pojawił się w produkcji. Obecnie nie mam działających rozwiązań, a nasze pomysły są rozbieżne. Myślę, że ten projekt nie może być jedynym, który ma taki problem. Jak rozwiązują to inne projekty? Zamierzam opublikować swój pomysł i pomysł zespołów deweloperskich jako odpowiedzi do dalszych dyskusji, jednak oba sposoby nie są rozwiązaniem, ponieważ mój pomysł zasadniczo skupia się tylko na jakości, a ich rozwiązanie skupia się tylko na szybkości.


title: Jak wyświetlić kod Scala bez całego cukru składniowego?

text: Uczyłem się Scali, ale ciągle napotykam na optymalizację składni. Na pewno będzie świetnie, gdy będę ekspertem, ale do tego czasu... Nie za bardzo. Czy istnieje polecenie lub program, który dodałby z powrotem cały/większość zoptymalizowanego kodu? Wtedy mógłbym na przykład przeczytać przykłady.


title: Co to jest „widoczność semantyczna”?

text: Czytam 97 rzeczy, które każdy programista powinien wiedzieć, teraz jestem umieszczony w "Zastosuj zasady programowania funkcjonalnego" i jest tam akapit, który mówi: ... Wiodącą przyczynę defektów w kodzie imperatywnym można przypisać zmiennym > zmiennym . Każdy, kto to czyta, zbada, dlaczego niektóre wartości nie są > zgodne z oczekiwaniami w określonej sytuacji. Semantyka widoczności może pomóc > złagodzić te podstępne defekty lub przynajmniej drastycznie zawęzić > ich lokalizację, ale ich prawdziwym winowajcą może być w rzeczywistości > opatrzność projektów, które wykorzystują nadmierną zmienność... Jaki jest cel Semantyki Widoczność w w tym kontekście? Jak zastosować to podejście do rozwiązania podstępnych defektów zmiennych zmiennych?


title: Czy warto opracować niestandardowy koszyk zakupowy?

text: W moim miejscu pracy mamy ładną bibliotekę modułów cakephp i rozwijamy niestandardowe strony internetowe w dobrym tempie, dopóki nie pojawi się koszyk na zakupy, aby spowolnić proces. Użyłem różnych ( _Magento, Opencart, Zencart_ ) koszyków w różnych projektach, gdzie musimy je połączyć z naszą podstawową aplikacją cakephp. Zwykle bardzo niestandardowe wymagania sprawiają, że koszyk zakupów **nie podlega aktualizacji** i zajmuje **dużo czasu**. Zastanawiam się nad stworzeniem własnego koszyka na zakupy (_obecnie dość prostego i czy będziemy go rozbudowywać w miarę postępu_ _ ) od podstaw, aby mógł łatwo dostosować się do niestandardowych wymagań. Czy warto to robić? # UPDATE 24-Aug-11 Kontynuowałem rozwój własnego koszyka na zakupy. Oto moje doświadczenia, którymi chcę się z wami podzielić. Korzyści 1. Nowy koszyk jest łatwy do wymiany i rozbudowy. 2. Oszczędza czas, gdy mamy niejasne lub niestandardowe wymagania i pozwala nam bezpośrednio importować moduły z naszej istniejącej biblioteki kodu. 3. Nie ma potrzeby wdrażania podwójnego szablonu dla koszyka i niestandardowej strony internetowej. 4. Pojedynczy panel administracyjny dla naszego koszyka i niestandardowej strony internetowej. Ograniczenia 1. Nadal nie są wystarczająco dojrzałe w stosunku do innych wózków na rynku. 2. Obawy dotyczące bezpieczeństwa. W większości polegamy na bezpieczeństwie cakephp. 3. Braki funkcjonalne Napotkane problemy 1. Rozwijanie bramek wysyłkowych/płatniczych było prawdziwym bólem. Jak zauważył @davidhaskins **Zaoszczędziło nam to dużo czasu, który moglibyśmy spędzić na hakowaniu standardowych koszyków na zakupy, aby spełnić nasze potrzeby**


title: Panele projektowe

text: Próbuję stworzyć pulpit nawigacyjny, aby osoby nie związane z projektem mogły uzyskać informację o stanie projektu. Walczę z ustaleniem, co umieścić na wspomnianej desce rozdzielczej. Myślę, że musi być krótki, aby był użyteczny, ale kompletny. Projekt, nad którym pracuję, zależy od zewnętrznych wykonawców, sprzętu zewnętrznego i oczywiście wysiłku mojego zespołu. Czy są jakieś sugestie lub wskazówki, jak to wszystko ująć w stosunkowo łatwy sposób? Mods, wierzę, że to pytanie mieści się pomiędzy _metodologiami rozwoju_ a _problemami biznesowymi_, jak opisano w FAQ. Dziękuję Ci!


title: Bezpieczeństwo w uwierzytelnianiu w aplikacjach jednostronicowych

text: Jaka jest najbezpieczniejsza metoda uwierzytelniania w aplikacjach jednostronicowych? Nie mówię o żadnych konkretnych frameworkach po stronie klienta lub po stronie serwera, ale tylko ogólne wytyczne lub najlepsze praktyki. Cała komunikacja jest przekazywana głównie przez sockJS. Poza tym OAuth nie wchodzi w rachubę.


title: Wizualizacja losowości algorytmu haszującego

text: Jestem ciekaw, czy ktoś tutaj ma pojęcie, w jaki sposób obrazy zostały wygenerowane, jak pokazano w tej odpowiedzi: Który algorytm mieszający jest najlepszy pod względem wyjątkowości i szybkości? Ian opublikował bardzo dobrze przyjętą odpowiedź, ale wydaje mi się, że nie rozumiem, jak robił zdjęcia. Nienawidzę robić nowego pytania poświęconego temu, ale nie mogę znaleźć sposobu, aby zadać mu bardziej bezpośrednio. Z drugiej strony może ktoś ma alternatywną perspektywę. Najlepsze, co mogę osobiście wymyślić, to mieć to prawie jak wykres słupkowy, który ilustruje, jak równomiernie generowane są wiadra tabeli mieszającej. Mam działający program Cocoa, który to robi, ale nie może wygenerować niczego podobnego do tego, co tam pokazał. Więc pytanie jest dwojakie, jak sądzę: **A)** Jak naprawdę interpretować dane, które pokazuje? Czy to coś więcej niż „mniej białych znaków = lepiej”? **B)** W jaki sposób można wygenerować taki obraz w oparciu o jakiś zestaw danych wejściowych, hash i indeks? Być może całkowicie się nie rozumiem, ale naprawdę chciałbym dowiedzieć się więcej o tej konkretnej technice wizualizacji. A może niewłaściwie stosuję to do tablic mieszających, a nie tylko do haszowania w ogóle, ale w takim przypadku nie wiem, jak byłoby to „ograniczone” dla obrazu.


title: Licencjonowanie aplikacji OwnCloud

text: Jestem trochę zdezorientowany modelem licencjonowania OwnCloud. OwnCloud to produkt na licencji AGPL (przynajmniej wersja open source). Czy to oznacza, że jedyną licencją, jakiej mogę użyć dla aplikacji OwnCloud, którą piszę za pomocą API, będzie również AGPL? Z tego, co rozumiem, licencja AGPL jest tak restrykcyjna, że nie można napisać żadnej aplikacji bez konieczności jej wydania na licencji AGPL, co obejmuje niestandardowe aplikacje dla klientów, którzy nie chcą wydawać małej fortuny na edycję OwnCloud Enterprise . Jakoś wydaje się to nie tak, więc być może wszystko pomyliłem i byłbym szczęśliwy, gdyby ktoś dobrze rozumiejący ten temat mógł rzucić na to trochę światła.


title: Dzielenie się przychodami z klientem, który nie jest w stanie uiścić opłaty programistycznej

text: Mam potencjalnego klienta, który ma pomysł na aplikację na iPada, ale nie może znaleźć na to wystarczających środków. Jeden z pomysłów, który się pojawił, polega na tym, że wykonuję pracę za darmo lub za niewielką opłatą, a następnie otrzymuję procent dochodu z Appstore. Jak zdecydować, jaki procent jest realistyczny? Jak wpływa na to cena w appstore i jak mam się uchronić przed scenariuszem, w którym klient nagle zdecyduje się zaoferować aplikację za darmo?


title: Czy były spory, gdy oprogramowanie identyfikuje płeć za pomocą wartości logicznej?

text: Pamiętam, że w naszej pierwszej klasie programowania w Javie, podczas wyjaśniania typów danych, wydarzyło się (coś w rodzaju): > **Profesor** : Więc jaki typ danych byś wybrał, jeśli Twój program musi > przechowywać płeć użytkownika? > > **Someone** : Co powiesz na wartość logiczną? Wiesz, prawda dla mężczyzn i fałsz dla > kobiet. > > **Profesor** : Jasne, to może się udać, ale niektórzy mogą się co do tego wahać. W przeszłości toczyły się spory o nazywanie mężczyzn "prawdziwymi", a kobiet "fałszywymi"... > > * _śmiech_ * W końcu zalecił nam rozważenie znaków (takich jak `'m'` i `'f'`), chociaż wartości logiczne powinny być w porządku. Próbowałem trochę poszukać, czy nie było żadnego historycznego wpisu dotyczącego poważnego sporu opartego na tej praktyce programistycznej, bez powodzenia. Nie pytam, jakiego typu danych użyć dla płci, ani czy jest w porządku, czy nie używać wartości logicznych. Pytam, czy **historycznie** był spór dotyczący używania wartości logicznych do określania płci w programowaniu z powodu pozornie "złego" (nie mówię, że _jest_ źle - nie obchodzi mnie to o tym) zachowanie polegające na nazywaniu kobiety „fałszywą”, jak zdawał się sugerować profesor. Przeszukując powiązane pytania, okazuje się, że wyniki dotyczą tylko wydajności oprogramowania.


title: codeigniter pagination - jak mieć wiele zestawów linków do paginacji w jednym widoku

text: **Problem** Nie wiem, jak utworzyć dwa zestawy linków paginacji w jednym widoku. **Informacje w tle** Mam sytuację, w której mam tabele nadrzędne/podrzędne, które muszę wyświetlić w tym samym widoku - być może w dwóch różnych sekcjach. Każda sekcja potrzebuje własnego zestawu linków do stronicowania. Zawartość (a tym samym linki stronicowania) w sekcji 2 zmieni się w zależności od tego, co zostanie wybrane w sekcji nadrzędnej / sekcji 1. Rodzic to to, co nazywam „podkategoriami”, a tabela podrzędna to „produkty”. WIĘC, gdy użytkownik wchodzi na pierwszą stronę, wyświetlane są wszystkie kategorie. Ale kiedy już wybiorą konkretną kategorię, chcę przenieść ich do tego widoku, który omawiam, który pokaże wszelkie podkategorie... i dowolne produkty. **Możliwe rozwiązanie** Myślę, że potrzebuję następujących metod w moim kontrolerze: public function getsubcategories($categoryID) { 1. znajdź dane, które chcesz wyświetlić 2. ustaw obiekt paginacji 3. użyj metody add_js, aby dodać ajax wywołanie metody "get_products_in_category" metody Ajax, która zostanie wywołana na document.ready i zwróci dane produktu. 4. Załaduj widok. } public function get_products_in_cateogry($categoryID) { 1. wyszukaj produkty w kategorii 2. zbuduj html do wyświetlania produktów. 3. Zwróć ciąg z całym html, aby wyświetlić informacje o produkcie ??? czy mogę tu stworzyć inny obiekt stronicowania??? } Jeśli masz jakieś sugestie, co jest nie tak z moim pomysłem / jak mogę to osiągnąć, naprawdę to docenię. Dziękuję. **Edytuj 1** Czekając na odpowiedź, spróbowałem małego testu... i wygląda na to, że nie działa. Nadal mam problem, w którym linki do stronicowania wyświetlane w sekcji 2 faktycznie manipulują danymi w sekcji 1. Zamierzam przenieść to pytanie w stackoverflow. Dziękuję Ci.


title: Testowanie wszystkich kombinacji

text: Muszę wykonać kilka pomiarów wydajności w mojej aplikacji. Chcę zmierzyć, zmienić niektóre parametry, zmierzyć jeszcze raz. Istnieją różne algorytmy, które chcę przetestować i są różne parametry, które współdziałają ze sobą, ponieważ całkowita wydajność zależy od wszystkich parametrów (ale same parametry nie wpływają na siebie nawzajem, np. jeśli ustawię x na 5, zawsze pozostanie 5, a zmiana jakiegoś innego parametru nie zmieni x). Myślę, że łączna liczba kombinacji jest dość duża, przynajmniej na tyle, że nie chcę ręcznie zmieniać wszystkiego i testować ręcznie każdej możliwości. Szukam kawałka lekkiej architektury oprogramowania (śmiem się powiedzieć, że jest to wzorzec projektowy), który zasadniczo umożliwia mi zdefiniowanie zestawu typów parametrów odpowiednich dla algorytmu, możliwych wartości tych typów, a ten fragment kodu powinien wtedy przeprowadź wszystkie kombinacje tych typów i ich wartości, dla każdego wykonującego wymagane rzeczy (wywołując niektóre funkcje w celu zmiany wartości itp.), a następnie wykonując algorytm. Przykład: Algorytm zależy od wartości x, y i z. x może wynosić 0 lub 1, y może być „cześć” lub „do widzenia”, a z może być w zakresie [0,100]. Rozwiązanie, którego szukam, zaczyna się od [0,"hello",0], wywołuje kilka funkcji, aby ustawić wartości tych zmiennych, pozwala uruchomić profilowanie przez jakiś czas, a następnie zmienia się na [0,"hello",1] , powtórz, [0,"cześć",2]... itd. Jest to prawdopodobnie coś, co ludzie musieli wcześniej rozwiązać. Jak to elegancko rozwiązać?


title: Dwa staże w tym samym czasie – dobre czy złe?

text: Kilka miesięcy temu nie miałem stażu, więc w zasadzie poszedłem na szaleństwo „wysyłania życiorysów” i wysłałem e-maile do _wielu_ firm, w których chciałem pracować i które miały mój zakres pracy. Nie okazało się to daremne, dopóki firma nie przyjęła mnie na swój program stażowy, ale powiedziała, że będę pracować zdalnie. Nie miałem z tym problemu, projekt był dobry i byłem zainteresowany. Teraz mam kolejny staż w firmie, która jest blisko mojego domu i wcale nie chcę tego przegapić! Mogę zarządzać obydwoma praktykami równolegle. W dzień zrobię staż bliżej mojego domu, a w nocy (i innym razem) mogę zarządzać stażem zdalnym. Moje pytanie brzmi – czy powinienem obydwa? Szczególnie interesuje mnie, jak oceniane są dwa staże jednocześnie. Wyglądałoby to dobrze czy źle? PS: Ani mi nic nie płaci, więc pieniądze nie są czynnikiem.


title: Uwzględnij dane na licencji GPLv2 w projekcie na licencji MIT

text: Chciałbym dołączyć niektóre dane z projektu na licencji GPLv2 do mojego projektu na licencji MIT. Mówiąc dokładniej, chcę użyć danych z innego projektu jako danych szkoleniowych dla mojego algorytmu uczenia maszynowego, a także chciałbym dołączyć przeszkolony model do mojego projektu. Nie chcę dołączać całego kodu źródłowego projektu, tylko te pliki danych. Nie będę ich modyfikował. Chcę również mieć przeszkolony model w moim projekcie, który moim zdaniem jest pracą pochodną? Czy mogę utworzyć folder dla tych plików danych, dodać kopię licencji GPLv2, wyjaśnić, że mój projekt jest objęty licencją MIT poza folderem, który zawiera pliki z licencją GPLv2? Czy wytrenowany model również musi zostać wydany na GPLv2? Jeśli tak, czy mogę go również przechowywać w tym folderze?


title: Wkładka danych połączenia z gniazdem

text: Pracowałem w aplikacji o wysokiej wydajności, w której zidentyfikowałem wąskie gardło. Wąskim gardłem jest w rzeczywistości sytuacja, w której aplikacja musi wstawiać komunikaty z gniazda, zapisuje je w bazie danych. Kłopot polega na tym, że komunikaty przechodzą tak szybko, że aplikacja nie może nadrobić zaległości z powodu złego planowania architektonicznego. Oczywiście wstawianie wymaga poprawy. Oto pytanie: Jaki jest najbardziej optymalny format do wykonywania insertów poszczególnych płyt? Przyjrzałem się temu linkowi na temat wysokowydajnych wstawek w wersji 4 i stwierdziłem, że zrobienie czegoś tego rodzaju wymagałoby rozległej restrukturyzacji w aplikacji w porównaniu z obecną próbą połączenia ciągu znaków, na przykład: INSERT INTO table (col1,col2 ,col3) VALUES (val1,val2,val3),(val4,val5,val6),(val7,val8,val9) Czy ktoś ma wgląd w to, co jest lepsze, **wstawianie datatable** czy **konkatenacja ciągów **?


title: Pisanie aplikacji internetowych „bezserwerowych”

text: ### TL;DR Jakie są perspektywy pisania aplikacji, które są całkowicie oparte na serwerze bazy danych **REST** (CouchDB) i aplikacjach internetowych, które mają bezpośredni dostęp do bazy danych zamiast mieć serwer WWW pomiędzy nimi? * * * Niedawno zacząłem szukać baz danych NoSQL. MongoDB wydaje się być popularnym wyborem. Projekt również mi się podobał. Ale osobiście podobał mi się interfejs REST **CouchDB**. Chciałem więc wiedzieć, czy istnieje możliwość aplikacji (może buforowanych aplikacji w przeglądarce internetowej, rozszerzenia chrome itp.), które mogłyby po prostu bezpośrednio przeszukiwać bazę danych bez konieczności pośrednictwa serwera WWW. Cała logika obliczeniowa znajdowałaby się w aplikacji klienckiej, a baza danych robiłaby to, co robi, **CRUD**. Ponieważ w większości (nie wiem, który nie) frameworki klienckie wspierają kwarty REST, może to być dobry sposób na pisanie aplikacji dobrze zoptymalizowanych pod dany framework. Te aplikacje nie będą jednak wykonywać skomplikowanych obliczeń, ale nadal zapewniają wystarczającą funkcjonalność, która mogłaby zastąpić wiele konwencjonalnych aplikacji. _Czy istniejące zasoby i projekty, które pomogłyby mi przejść do pisania takich aplikacji, a także zakres i dążenie do rozwoju w ten sposób?_ _Czy mają z tym jakieś problemy techniczne/bezpieczeństwa?_ * * * Ten post pomoże mi zdecydować się zastanowić się projekt jak CouchDB (i może zagłębić się w Erlang później) lub pozostać przy konwencjonalnych frameworkach (jak django) i bazach danych SQL. ### Aktualizacja Konkretnym punktem takich aplikacji, o którym myślałem, jest tworzenie _aplikacji offline_ poprzez replikację danych z couchdb na kliencie.


title: Wzorzec projektowy oprogramowania do modelowania zachowania zależnego od czasu wykonywania

text: W wywiadzie poproszono mnie: _Załóżmy, że stworzymy oprogramowanie, które będzie działać zarówno na komputerach stacjonarnych, jak i smartfonach. Nazwij wzorzec projektowy oprogramowania, który może być wykorzystany do umożliwienia aplikacji tworzenia różnych klas do wyświetlania w czasie wykonywania w zależności od platformy._ Wiem, że istnieją proste rozwiązania umożliwiające zaimplementowanie tej funkcji w rzeczywistym kodzie. Na przykład w Javie mogę sprawdzić rozmiar ekranu i stworzyć odpowiednią klasę (klasa `MobileDisplay` lub `DesktopDisplay`) dla tego wyświetlacza. Ale nie wiem, jak to się ma do projektowania oprogramowania. IMO stworzenie odpowiedniej klasy w oparciu o platformę runtime to kwestia implementacyjna, a nie kwestia projektowania oprogramowania.


title: REST i RPC w wielowarstwowym API

text: Mój zespół opracowuje wielowarstwowe API z myślą o skalowalności i modułowości. Publiczny punkt dostępu API jest w pełni REST. Jednak dzielimy warstwę dostępu do danych jako kolejną warstwę w naszej architekturze i ta warstwa będzie znajdować się na innym serwerze fizycznym. Zdecydowaliśmy, że RPC będzie dobrym protokołem komunikacyjnym między publicznym API a warstwą prywatnego dostępu do danych. Zdecydowaliśmy się użyć RPC przez REST do prywatnej komunikacji między naszymi warstwami, ponieważ: * Unikaj duplikacji tras REST między poszczególnymi warstwami * Przejrzystość w wykonywaniu kodu/funkcji na różnych serwerach * Komunikacja jest prywatna. Przy dobrej dokumentacji zespół nie powinien mieć problemów ze zrozumieniem protokołu komunikacyjnego. Moje pytanie brzmi: * Czy przegapiliśmy zalety lub wady w wyborze protokołu komunikacyjnego do prywatnej komunikacji między warstwami? * Co jest zwykle używane do komunikacji między warstwami w architekturze wielowarstwowej, zwłaszcza w przypadku internetowych interfejsów API?


title: Czy OrientDB jest bazą danych dokumentów? czy wykres-baza danych?

text: Niektóre dokumenty mówią, że OrientDB jest bazą danych dokumentów, inne mówią, że jest to graficzna baza danych. Co jest właściwe?


title: Solidne zasady vs YAGNI

text: Kiedy zasady SOLID stają się YAGNI? Jako programiści cały czas dokonujemy kompromisów między złożonością, konserwowalnością, czasem na budowę i tak dalej. Między innymi, dwie z najmądrzejszych wskazówek przy dokonywaniu wyborów to według mnie zasady SOLID i YAGNI. Jeśli tego nie potrzebujesz; nie buduj go i utrzymuj go w czystości. Teraz na przykład, kiedy oglądam serię dimecastów na SOLID, widzę, że zaczyna się jako dość prosty program, a kończy jako dość złożony (koniec tak, złożoność jest również w oku patrzącego), ale nadal sprawia, że Zastanawiam się: kiedy zasady SOLID zamieniają się w coś, czego nie potrzebujesz? Wszystkie solidne zasady to sposoby pracy, które umożliwiają wprowadzanie zmian na późniejszym etapie. Ale co, jeśli problem do rozwiązania jest dość prosty i jest to aplikacja jednorazowa, to co? A może zasady SOLID są czymś, co zawsze obowiązuje? Jak zapytano w komentarzach: * Solidne zasady * YAGNI


title: Jak zachować stabilność bagażnika, gdy testy trwają długo?

text: Mamy trzy zestawy zestawów testowych: * „mały” pakiet, którego uruchomienie zajmuje tylko kilka godzin * „średni” pakiet, który zajmuje wiele godzin, zwykle uruchamiany co noc (co noc) * „duży” pakiet, który zajmuje tydzień+ do uruchomienia Mamy też kilka krótszych zestawów testów, ale nie skupiam się na nich tutaj. Obecna metodologia polega na uruchomieniu małego pakietu przed każdym zatwierdzeniem do łącza trunkingowego. Następnie średni pakiet jest uruchamiany każdej nocy, a jeśli rano okaże się, że nie powiodło się, próbujemy określić, który z wczorajszych zatwierdzeń był winny, wycofujemy to zatwierdzenie i ponawiamy testy. Podobny proces, tylko z częstotliwością tygodniową, a nie nocną, odbywa się w przypadku dużego apartamentu. Niestety, pakiet średni często zawodzi. Oznacza to, że bagażnik często jest niestabilny, co jest niezwykle irytujące, gdy chcesz dokonać modyfikacji i je przetestować. To denerwujące, bo kiedy wyjmuję z bagażnika, nie wiem na pewno, że jest stabilny, a jeśli test się nie powiedzie, nie wiem na pewno, czy to moja wina, czy nie. **Moje pytanie brzmi, czy istnieje jakaś znana metodologia radzenia sobie z tego typu sytuacjami w sposób, który pozostawi bagażnik zawsze w doskonałej formie?** Np. „zatwierdź w specjalnej gałęzi precommit, która będzie okresowo aktualizować pień za każdym razem, gdy mija noc”. I czy ma to znaczenie, czy jest to scentralizowany system kontroli źródła, taki jak SVN, czy rozproszony, taki jak git? Nawiasem mówiąc, jestem młodszym programistą z ograniczoną możliwością zmiany rzeczy, po prostu próbuję zrozumieć, czy istnieje sposób na poradzenie sobie z tym bólem, którego doświadczam.


title: JavaScript: Dołącz wymagane, ale powszechne wypełnienie w mojej bibliotece?

text: Po pierwsze, oto **kilka powiązanych, ale nie do końca takich samych** pytań: * Czy w moim rozwiązaniu należy uwzględnić zależności, dla których mam źródło, jako projekty? * W zależności od innej biblioteki open source: skopiuj/wklej kod lub dołącz Teraz do **moje szczególne pytanie:** Buduję małą bibliotekę JavaScript. Jeśli działa w niektórych starszych przeglądarkach, część jego funkcjonalności będzie zależeć od określonego wypełnienia. Na potrzeby przykładu załóżmy, że to wypełnienie jest wypełnieniem `requestAnimationFrame`. Ten wypełniacz jest: * Dobrze znany: Większość programistów JavaScript jest przynajmniej niejasno tego świadoma. * Dostępne: fragmenty kodu, które można kopiować i wklejać, są wszędzie. * Tiny: Tak naprawdę to tylko kilka linijek kodu. * Endemiczny: Biblioteki w tym samym obszarze problemowym, co moja, mogą już mieć to w pakiecie. Oczywiście, jeśli moja biblioteka byłaby jedyną biblioteką używaną w czyimś projekcie i jeśli część tego kodu mogłaby zawieść bez wypełnienia w okolicznościach prawdopodobnych dla odbiorców programisty, sensowne byłoby dołączenie tego wypełnienia do biblioteki. Ale w świecie JavaScript, szczególnie w domenie tej biblioteki, możliwe jest, że programista ma już wypełnienie i że łącząc go w pakiet, będę mógł ponownie wypełniać `requestAnimationFrame` po raz drugi, trzeci, czwarty. (To samo w sobie nie stanowi problemu, ponieważ większość wypełnień z samej swojej natury obejmuje wstępne sprawdzenie przestrzeni nazw. Ale przyznaję, że myśl o _tym samym wypełnieniu_ pojawiającym się wielokrotnie w czyimś kodzie niepokoi mnie, jakby obraz wisiał lekko krzywy.) Więc co jest rozsądnym rozwiązaniem? Uwzględnić to? Lub po prostu zostaw notatkę w dokumentacji, która mówi: „Przy okazji, upewnij się, że masz Polyfill X, jeśli chcesz obsługiwać przeglądarkę Y”?


title: Czy legalne jest rozpowszechnianie X Window Manager z zamkniętym kodem źródłowym?

text: Przeprowadzam eksperyment myślowy o stworzeniu produktu na bazie Linuksa. Zastanawiam się: jeśli tworzysz niestandardowego menedżera okien (na przykład podobnego do KDE) na górze X i wydajesz go, czy musisz wydać go na GPL (Linux) lub MIT (X.org)? Czy możesz zachować to zamknięte źródło?


title: Dlaczego nie ma wartości logicznej dla wartości x zmiennej?

text: > **Możliwy duplikat:** > Czy widziałbyś jakieś zastosowanie Trileana (Prawda, Fałsz, ??) Przede wszystkim nie jestem programistą, jestem inżynierem budownictwa, który trochę programuje i całkiem mi się to podoba . Po drugie i drugie najbardziej, chciałbym rościć sobie prawa do tego niesamowitego wynalazku i nazwać go TROLLEAN lub DASSOUKIEAN. Żarty na bok, wielokrotnie natrafiam na zmienne, które mogą przechowywać tylko trzy wartości (nazwijmy je Prawdą, Fałszem i Innymi. Weźmy na przykład skrzyżowanie. Może być sygnalizowane, niesygnalizowane lub niekontrolowane (inaczej znaki i brak sygnalizacji świetlnej). Byłoby to dnice, aby zdefiniować `TROLLEAN traffic_light = Other` Other w tym przypadku reprezentuje niekontrolowane skrzyżowania. Zamiast tego piszę sekwencję kodu, aby to zdefiniować.


title: Próba „połączenia” podobnych obiektów bez robienia bilionów porównań

text: W tej bazie mam "dostępy" - każdy dostęp może mieć dowolną liczbę (zwykle mniej niż 4, czasem nawet 15) atrybutów. Mam również "bilety", w których N użytkowników żąda dostępu M, więc mam podrzędną tabelę biletów z "żądaniami dostępu użytkownika NxM". Następnie dla biletu podrzędnego istnieje inna tabela z atrybutami A dla tego dostępu (gdzie „A” różni się w zależności od żądania). ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/s7QQL.png) Na przykład, jeśli mam dwóch użytkowników żądających trzech dostępów, a te dostępy mają odpowiednio 2, 3 i 4 atrybuty, Mam 1 rekord biletu, 6 rekordów biletów podrzędnych i 18 rekordów atrybutów biletu podrzędnego. Problem polega na tym, że chcę szybko pogrupować bilety podrzędne, aby po ich wyświetleniu znaleźć wszystkie dla jednego typu dostępu, potem wszystkie dla innego typu dostępu, a następnie trzeciego typu dostępu . Wiem, każdemu rodzajowi dostępu należało jakoś nadać unikalny identyfikator, ale tak nie było, a teraz to mój ciężar. Mogę tylko „sugerować” zmiany w bazie danych, a nie nalegać na nie. Jakieś sugestie?


title: Różnica między kruchością a kruchością

text: Kiedy omawiasz system lub bazę kodu, kiedy używasz przymiotników „kruchy” lub „kruchy”, aby to opisać, jaka jest różnica między tymi dwoma terminami?


title: Jaki jest protokół dla wtyczki JQuery z automatycznym wykonywaniem?

text: Mam wtyczkę jQuery, której sam używam, która modyfikuje wybraną wartość wybranych elementów na stronie. W moim własnym kodzie wtyczka jest wykonywana automatycznie, gdy tylko zostanie uwzględniona na stronie ten kod w pliku wtyczki. jQuery('Dokument').ready(function(){ jQuery('select').SelectOptions(); }); to automatycznie uruchamia moją wtyczkę na wszystkich elementach `select` na stronie. Oczywiście dla osób innych niż ja, które mogą natknąć się na to na github, chciałbym to nieco zmienić. Nadal uważam, że pomysł automatycznego wykonania jest dobry, ale moje pytanie brzmi. 1. W ogóle nie ustawiaj automatycznego wykonywania, pozwól programiście wywołać kod. 2. Wywołaj autoexecute na elementach All Select i pozwól programiście zmodyfikować kod, jeśli tego nie chce. 3. Automatycznie wykonaj, ale zmodyfikuj mój selektor wywołany w pliku js wtyczki, aby modyfikować tylko wybrane tagi z określoną klasą - tak jak poniżej. jQuery('Dokument').ready(function(){ jQuery('select .selectoptions').SelectOptions(); }); Czy jest na to jakiś ustalony protokół?


title: Ile jest zbyt wielu wywołań funkcji zagnieżdżonych?

text: Cytat z MSDN na temat StackOverflowException: > Wyjątek, który jest generowany, gdy stos wykonania przepełnia się, ponieważ > zawiera zbyt wiele wywołań metod zagnieżdżonych. „Zbyt wielu” jest tutaj dość niejasne. Skąd mam wiedzieć, kiedy za dużo to naprawdę za dużo? Tysiące wywołań funkcji? Miliony? Zakładam, że musi to być w jakiś sposób powiązane z ilością pamięci w komputerze, ale czy można podać mniej więcej dokładny rząd wielkości? Martwię się tym, ponieważ rozwijam projekt, który obejmuje intensywne użycie struktur rekurencyjnych i rekurencyjnych wywołań funkcji. Nie chcę, aby aplikacja zawiodła, gdy zacznę używać jej do czegoś więcej niż tylko małych testów.


title: Dlaczego metody akcesorów ze specyfikacji JavaBean stały się standardem programowania w języku Java?

text: Specyfikacja JavaBeans opisuje JavaBean jako > Java Bean to komponent oprogramowania wielokrotnego użytku, którym można manipulować > wizualnie w narzędziu do budowania Ponieważ większość pisanych linii kodu wydaje się nie mieć nic wspólnego z wizualną manipulacją w kreatorze narzędzie, dlaczego specyfikacja JavaBean jest „sposobem” na pisanie kodu obiektowego? Chciałbym zrezygnować z tradycyjnego pobierania/ustawiania na rzecz Fluent Interfaces w całym kodzie, nie tylko w konstruktorach, ale obawiam się tego, ponieważ tradycyjnie nie jest to sposób, w jaki kod zorientowany obiektowo jest pisany w Javie.


title: Jak zacząłeś pracę z .NET?

text: Interesuje mnie, jak programiści zaczęli uczyć się programowania .NET. Jakie książki i blogi czytałeś, podcasty lub filmy, które oglądałeś/słuchałeś i jakie inne zasoby wykorzystałeś do samodzielnego uczenia się programowania .NET. Muszę wspomnieć, że chociaż jestem nowy w .NET, nie jestem nowy w programowaniu w ogóle. Używam PHP, Pythona od jakiegoś czasu i Javy od około 1-2 miesięcy.


title: Jakie są często mylone kodowania, które mogą skutkować identycznymi danymi testowymi?

text: Naprawiam kod, który używa ASCIIEncoding w niektórych miejscach i kodowania UTF-8 w innych funkcjach. Ponieważ nie używamy funkcji UTF-8, wszystkie nasze testy jednostkowe przeszły pomyślnie, ale chcę zwiększyć świadomość kodowań, które dają podobne wyniki i mogą nie być w pełni przetestowane. Nie chcę ograniczać tego tylko do UTF-8 vs ASCII, ponieważ myślę, że problem z kodem, który obsługuje pola ASN.1 i inny kod współpracujący z Base64. Więc jakie są powszechnie mylone kodowania, które mogą skutkować identycznymi danymi testowymi?


title: php + serwis internetowy

text: Czy ktoś może potwierdzić dobrą wydajność za pomocą usługi internetowej PHP + Java (do ciężkich zadań) działającej na NGINX (lub Apache), ponieważ PHP wolno wykonuje niektóre ciężkie zadania i chcę utworzyć usługę sieciową w javie, aby komunikować się z PHP przez SOAP lub REAT lub JSON. Fakt, że zadaję to pytanie jest taki, że znam już PHP na bardzo dobrym poziomie (i Javy i nie chcę zaczynać nauki ASP czy Ruby) oraz HTML5, CSS3 i chcę stworzyć duży portal, który będzie miał zwiększona ilość żądań (1000/2000 request/s) **a nie chcę kodować całej aplikacji w Javie** (bo PHP ma więcej sensu), potrzebuję tylko ciężkiej pracy do wykonania przez webservice. **W moim projekcie PHP wolno wykonuje obliczenia matematyczne i dostęp do plików I/O w każdej sekundzie. Zużywa dużo pamięci i dużo procesora. Przy prędkości 1000 żądań/s prawie miażdży.** Czy to dobra praktyka? Czy jest inne rozwiązanie?


title: Dlaczego C ma wpływ na kilka popularnych języków programowania?

text: Top 10 języków programowania, według indeksu TIOBE, wydaje się być pod silnym wpływem C: **1\. Java** > Język czerpie wiele ze swojej składni z C i C++, ale ma prostszy > model obiektowy i mniej udogodnień niskopoziomowych. - _wikipedia.org_ **2\. C** > C jest jednym z najczęściej używanych języków programowania wszechczasów i jest > bardzo niewiele architektur komputerowych, dla których nie istnieje kompilator C. -> _wikipedia.org_ **3\. C#** > Podczas opracowywania .NET Framework biblioteki klas zostały > pierwotnie napisane przy użyciu systemu kompilatora kodu zarządzanego o nazwie Simple > Managed C (SMC). W styczniu 1999 roku Anders Hejlsberg utworzył zespół mający na celu zbudowanie > nowego języka o nazwie Cool, co oznaczało "C-like Object > Oriented Language". - _wikipedia.org_ **4\. C++** > Został opracowany przez Bjarne Stroustrup w 1979 roku w Bell Labs jako rozszerzenie > języka C. - _wikipedia.org_ **5\. Objective-C** > Objective-C jest refleksyjnym, obiektowym językiem programowania, który dodaje komunikaty w stylu Smalltalk do języka programowania C. - _wikipedia.org_ **6\. PHP** > Przepisał te skrypty jako pliki binarne Common Gateway Interface > (CGI) w języku programowania C, rozszerzając je o możliwość pracy z formularzami internetowymi i > komunikacji z bazami danych i nazwał tę implementację „Personal Home > Page/Forms Interpreter ” lub PHP/FI. - _wikipedia.org_ **8\. Python** > Python powstał pod koniec lat 80. XX wieku, a jego implementacja została rozpoczęta > Grudzień 1989 przez Guido van Rossuma w CWI w Holandii jako następca > języka programowania ABC (zainspirowanego przez SETL) zdolnego do > obsługi wyjątków i połączenie z systemem operacyjnym Amoeba. -> _wikipedia.org_ >> ABC (język programowania) Jego projektanci twierdzą, że programy ABC są > zwykle około jednej czwartej wielkości odpowiedników w języku Pascal lub C, > i są bardziej czytelne. - _wikipedia.org_ **9\. Perl** > Perl zapożycza funkcje z innych języków programowania, w tym C, shell > scripting (sh), AWK i sed. - _wikipedia.org_ **10\. JavaScript** > JavaScript używa składni, na którą ma wpływ C. - _wikipedia.org_ Wygląda na to, że większość z nich zapożycza swoją składnię z C i/lub jest pod silnym wpływem na kilka innych sposobów, przynajmniej na początku. Czemu?


title: Kiedy wołamy o losową liczbę całkowitą od 1 do 6, jak mogę sprawić, by stopniowo zmniejszało się prawdopodobieństwo wybrania liczby, im jest ona większa?

text: Na przykład, gdy 1 jest najczęstszą liczbą, a 6 jest najmniej popularną liczbą. A wszystko inne po prostu się wyrównuje.


title: Porady dotyczące architektury GUI i nazewnictwa klas

text: Problem: Pracuję nad kodowaniem kilku lekkich gier na tablety dotykowe i często mam problemy z nazwaniem moich klas interakcji/interfejsu użytkownika i ich wzajemnych relacji (architektura?). Rzadko jestem zadowolony z któregokolwiek z moich rozwiązań, dlatego wątpię i zmieniam je kilkakrotnie na bieżąco. Na przykład mam grę planszową z następującymi komponentami (m.in.): * „HUD” – HUD kadruje widok świata gry umożliwiając w ten sposób interakcję użytkownika * „boardOverlay” – jest niewidoczny i leży na wierzchu oglądanej gry świat. Odbiera i interpretuje dotknięcia, w konsekwencji wywołując metody w "rzeczu". * "plansza" - utrzymuje wszystkie elementy na planszy. * "thinger" - klasa, która wykonuje zadania, zmienia stan gry. Nazywam to rzeczownikiem, ponieważ nie wiem, jak powinno się to nazywać. Lepiej mieć nazwę bez opisu niż taką, która zostanie błędnie zinterpretowana. Poszukiwanie oświecenia: Teraz chciałbym mieć ogólne/abstrakcyjne nazwy/architekturę dla tych komponentów, które prawdopodobnie będą używane w wielu innych grach/aplikacjach. Ale mam trudności z wymyśleniem satysfakcjonujących. Wiele razy przeszukiwałem sieć w poszukiwaniu wskazówek/porad, ale stwierdziłem, że wszystkie źródła są specyficzne dla języka/technologii/API i rzadko odpowiadają ich podejściu. Nie znam nazwy tej dyscypliny/praktyki w poszukiwaniu oświecenia. Próbowałem "struktury opartej na zdarzeniach", "konwencji nazewnictwa opartego na zdarzeniach", "architektury GUI", "+oop + GUI + taksonomia"... i bez powodzenia. Pytanie 1: Czy ktoś może zapewnić mi źródło oświecenia? Zasób niezależny od technologii, który zajmuje się filozofią tego typu nazewnictwa i architektury. Dodatkowe pytanie kredytowe: Byłoby również świetnie z rzetelnym/zwięzłym zasobem omawiającym praktyki/dyscypliny w tym kontekście? Istnieje zbyt wiele różnych i nakładających się zastosowań/interpretacji. Przykład: framework GUI, architektura GUI, struktura GUI, projektowanie GUI – jak właściwie używać tych terminów?


title: Zastępowanie — dostęp do członków z ponownym przypisaniem referencji

text: Ostatnio przejrzałem kilka książek, aby nauczyć się Javy i na szczęście, głównie dzięki szczęściu, napotkałem bardzo niewiele trudności. To się właśnie zmieniło. Przeczytałem sekcję na temat dziedziczenia i całej konfiguracji podklasy nadklasy * Kiedy tworzony jest nowy obiekt nadklasy, podobnie jak wszystkie obiekty, przypisuje się do niego referencję (w tym przykładzie superReference) * Jeśli nowy obiekt podklasy (z określeniem tworzona jest podklasa rozszerzająca nadklasę), a następnie odwołanie superReference jest ustawione tak, aby odwoływać się do tego zamiast do oryginalnego obiektu, rozumiem, że ponieważ odwołanie dotyczy nadklasy, tylko elementy zdefiniowane przez nadklasę mogą być dostępne z podklasa. Po pierwsze – czy to prawda? Po drugie: Jeśli nadpisuję metodę i w związku z tym mam jedną w super i jedną w sub, tworzę obiekt nadklasy, a następnie przypisuję jego odwołanie, tak jak powyżej, do obiektu podklasy, zgodnie z zasadą nazywaną czymś podobnym do _Dynamic Method Dispatch_ , wywoływana przesłonięta metoda powinna domyślnie uzyskiwać dostęp do metody podklasy, prawda? Cóż, moje pytanie brzmi: jeśli odwołanie do obiektu nadklasy zostanie przerobione na obiekt podklasy i odmówi bezpośredniego dostępu `object.member` do elementów zdefiniowanych przez podklasę, wspierając tylko elementy zdefiniowane przez nadklasę, jak to możliwe, jeśli nadklasa odwołanie jest przebudowane dla obiektu podklasy, nadpisana metoda ma zastosowanie do obiektu podklasy, jeśli dostęp jest ograniczony przez odwołanie pochodzące z nadklasy


title: Jeśli używam blokad, czy mój algorytm może nadal być wolny od blokad?

text: Powszechną definicją braku blokady jest to, że co najmniej jeden proces czyni postęp. 1 Jeśli mam prostą strukturę danych, taką jak kolejka, chroniona blokadą, to jeden proces zawsze może zrobić postęp, ponieważ jeden proces może nabyć blokadę, zrobić to, co chce, i zwolnić. Czy spełnia więc definicję braku blokady? * * * 1 Zob. np. M. Herlihy, V. Luchangco i M. Moir. Synchronizacja bez przeszkód: przykład z kolejkami z podwójnymi końcami. W Distributed Computing, 2003. „Jest wolny od blokad, jeśli zapewnia tylko, że jakiś wątek zawsze robi postęp”.


title: Co to jest hack?

text: Często słyszę, jak współpracownicy mówią do siebie: „To okropny, okropny hack”. To, co mogę z tego wyciągnąć, to to, że nie jest dobre. Kiedy zapytałem ich, czy to działa, odpowiadają „tak, ale to nie jest dobre”. Czy to oznacza, że to nie jest dobre rozwiązanie? Jak rozwiązanie jest złe, jeśli działa? Czy to dzięki dobrej praktyce? Lub nie do utrzymania? Czy wykorzystuje efekt uboczny kodu jako część swojego rozwiązania? Interesuje mnie, kiedy coś jest klasyfikowane jako hack. Jak możesz to zidentyfikować?


title: wzór mvc na proceduralnym php

text: Po pierwsze, nie mam nic przeciwko programowaniu OO (byłbym zły, gdybym tak wierzył). Ale myślałem o jakimś proceduralnym wzorcu MVC z PHP; pozwól, że wyjaśnię lepiej. Jak wszyscy wiemy, zakresy zmiennych, chyba że są wzięte z $_SESSION (bazy danych, redis itp.) nigdy nie są globalne i odnoszą się tylko do pojedynczego wykonania skryptu. Na przykład: class Car { this->name = "foo"; function setName($nazwa) { ... } function getName() { return $this->name; } } Tam, gdzie oczywiście w bardziej powszechnej sytuacji dane te będą pobierane z bazy danych, w przeciwnym razie każdy samochód obiektu, na wykonanie, miałby taką samą nazwę. Czy nie można zastosować wzorca MVC do kodu proceduralnego w celu uproszczenia? Wyobraź sobie naprawdę prostą sieć społecznościową, taką jak aplikacja; Mógłbym mieć strukturę taką jak ta *views -profileview.php -messageview.php -loginview.php -notloggedin.php *models -user.php -message.php - profile.php -message.php - login.php gdzie profil, wiadomości i login.php działają jako kontrolery i kierują do właściwego widoku; a user i message.php działają jako klasy, które zawierają wszystkie funkcje, które są ostatecznie potrzebne kontrolerom, takie jak getUserById($id), postMessage($id, $meesage) itp. Dużo to uprościłem, ale Myślę, że możesz zrozumieć mój punkt widzenia. Co myślisz o takim wdrożeniu na dłuższą metę i dlaczego?