title: Wzorzec projektowy do obsługi odpowiedzi

text: W większości przypadków, gdy piszę kod, który obsługuje odpowiedź na określone wywołanie funkcji, otrzymuję następującą strukturę kodu: przykład: Jest to funkcja, która obsłuży uwierzytelnianie dla systemu logowania class Authentication{ function login(){ //Ta funkcja jest wywoływana z mojego kontrolera $result=$this->authenticate($username,$password); if($result=='wrong password'){ //zwiększ licznik prób logowania //wyślij pocztę do administratora //store visitor ip }else if($result=='wrong username'){ //zwiększ liczbę prób logowania counter //zrób inne rzeczy }else if($result=='przekroczono próby logowania') //zrób coś }else if($result=='zbanowany adres IP'){ //zrób coś }else if... function authentication($username,$password){ //uwierzytelnij użytkownika lokalnie lub zdalnie i zwróć kod błędu w przypadku niepowodzenia logowania. } } **Problem** 1. Jak widać kod jest zbudowany na strukturze `if/else`, co oznacza, że nowy status niepowodzenia będzie oznaczał, że muszę dodać instrukcję `else if`, co jest naruszeniem _Zasada otwartej zamkniętej_. 2. Mam wrażenie, że funkcja ma różne warstwy abstrakcji, ponieważ mogę po prostu zwiększyć licznik prób logowania w jednym programie obsługi, ale zrobić poważniejsze rzeczy w innym. 3. Niektóre funkcje są powtarzane, na przykład „zwiększenie liczby prób logowania”. Myślałem o przekonwertowaniu wielu `if/else` do wzorca fabryki, ale używałem fabryki tylko do tworzenia obiektów bez zmiany zachowań. Czy ktoś ma na to lepsze rozwiązanie? **Uwaga:** **To tylko przykład użycia systemu logowania.** Proszę o ogólne rozwiązanie tego zachowania przy użyciu dobrze zbudowanego wzorca OO. Ten rodzaj obsługi `if/else` pojawia się w zbyt wielu miejscach w moim kodzie i właśnie użyłem systemu logowania jako prostego, łatwego do wyjaśnienia przykładu. Moje _prawdziwe_ przypadki użycia są zbyt skomplikowane, aby je tutaj opublikować. :D Prosimy nie ograniczać się do kodu PHP i używać preferowanego języka. * * * **UPDATE** Kolejny bardziej skomplikowany przykład kodu tylko po to, by wyjaśnić moje pytanie: public function refundAcceptedDisputes() { $this->getRequestedEbayOrdersFromDB(); //pobierz wszystkie spory żądane w serwisie eBay foreach ($this->orders as $order) { /* $order jest jednostką doktrynalną */ try { if ($this->isDisputeAccepted($order)) { //zwraca true if spór został zaakceptowany $order->setStatus('accepted'); $zamówienie->zwrot(); //zwraca zamówienie w serwisie eBay i wewnętrznie w moim systemie $this->insertRecordInOrderHistoryTable($order,'refunded'); } else if ($this->isDisputeCancelled($order)) { //zwraca true jeeli spór został anulowany $order->setStatus('cancelled'); $this->insertRecordInOrderHistory($order,'cancelled'); $order->rollBackRefund(); //anuluje zwrot w serwisie eBay i wewnętrznie w moim systemie } else if ($this->isDisputeOlderThan7Days($order)) { //zwraca true, jeśli od otwarcia sporu upłynęło 7 dni $order->closeDispute(); //zamyka spór w serwisie eBay $this->insertRecordInOrderHistoryTable($order,'refunded'); $zamówienie->zwrot(); //zwrot zamówienia w serwisie eBay i wewnętrznie w moim systemie } } catch (Exception $e) { $order->setStatus('failed'); $order->setErrorMessage($e->getMessage()); $this->addLog();//loguj błąd } $order->setUpdatedAt(time()); $zamówienie->zapisz(); } } **funkcja cel:** * Sprzedaję gry w serwisie eBay. * Jeśli klient chce anulować swoje zamówienie i otrzymać zwrot pieniędzy (tj. Zwrot pieniędzy), najpierw muszę otworzyć „Spór” w serwisie eBay. * Po otwarciu sporu muszę poczekać, aż klient potwierdzi, że zgadza się na zwrot pieniędzy (głupie, ponieważ to on kazał mi dokonać zwrotu, ale tak to działa w serwisie eBay). * Ta funkcja pobiera wszystkie spory otwarte przeze mnie i okresowo sprawdza ich statusy, aby sprawdzić, czy klient odpowiedział na spór, czy nie. * Klient może wyrazić zgodę (wtedy zwracam pieniądze) lub odmówić (wtedy wycofuję) lub może nie odpowiadać przez 7 dni (sam zamykam spór, a następnie zwracam pieniądze).


title: Java: Najlepszy sposób na naukę, gdy MOOC i książki to za mało?

text: Ten temat został zaczerpnięty ze Stack Overflow, ale został wstrzymany z powodu pytania opartego na opinii. Więc przeniosłem go tutaj. Miałem duże problemy z zadaniami domowymi i poświęciłem zbyt dużo czasu na wykonywanie prostych programów, takich jak tablice i metody. Na przykład zajęło mi ponad 20 godzin stworzenie programu, który prosi użytkownika o podanie rozmiaru wierszy i kolumn, a następnie drukuje macierz. Przeczytałem ponad 20 książek o javie i wypróbowałem 4 MOOC, a nawet filmy Buckysa, ale wydaje mi się, że nie zrozumiem dogłębnie podstaw Javy. Oto lista problemów, z którymi borykam się na co dzień podczas kodowania javy: 1. Rozwiązywanie problemów 2. Tworzenie metod i ich używanie 3. Tablice 4. "Nie mam pojęcia jak to zrobić" 5. Co to jest konstruktor i jak aby z niego skorzystać 6. "Gdzie znajdę pomoc?" Zadawałem to pytanie wcześniej, ale odpowiedzi brzmiały: „Czytaj książki” lub „Po prostu zacznij kodować”, ale żadne z nich mi nie pomogło, ponieważ próbowałem kodować, ale nie miałem żadnych rozsądnych celów a czytanie książek jest jak wieczna pętla, która po prostu prowadzi donikąd. Wiem, że Internet jest pełen pytań „Jak najlepiej nauczyć się Javy”, ale myślę, że muszę spróbować zadać to pytanie, ponieważ to pytanie na tematy nie pojawia się w wyszukiwarce Google + myślę, że są ludzie, którzy mają problemy z tym samym problemem. Wszelkie porady byłyby mile widziane. Chętnie uczę się Javy, po prostu muszę znaleźć na to swój własny sposób!


title: Komunikacja między programistami a inżynierami systemowymi. Narzędzie do planowania budowy i prac konserwacyjnych

text: Posiadamy dział rozwoju oraz dział inżynierów systemowych, który pracuje nad dużym projektem (rozwój aplikacji J2EE). W naszej pracy używamy _Systemu zarządzania kompilacją_, _Systemu śledzenia błędów_ i _silnika Wiki_. Czasami mamy sytuację, gdy jakiś programista zainicjuje restart serwera lub kompilację aplikacji, która przerywa proces debugowania dla innych programistów (w niektórych przypadkach programiści korzystający z tego samego zdalnego serwera _Developer_). W chwili obecnej używamy aplikacji _chat_ do zatwierdzania procesu restartu\rebuild serwera (aplikacji). Czy ktoś może podzielić się doświadczeniem rozwiązywania kolizji, jak opisałem powyżej? * * * Moją wizją jest użycie aplikacji, która potrafiła wykonać następujące czynności: * utworzyć żądanie ponownego uruchomienia serwera (lub przebudowania/ponowne wdrożenie aplikacji); * subskrypcja powiadomień o zdarzeniu „utworzono nowe żądanie”; * ręczne zatwierdzenie wniosku (przez kilku członków) i automatyczne zatwierdzenie wniosku (w przypadku, gdy nikt nie odrzucił wniosku przez pewien czas); * subskrypcja powiadomienia o zdarzeniu „wniosek został zaakceptowany”; * rozwiązanie wniosku; * subskrypcja powiadomienia o zdarzeniu „zgłoszenie rozwiązane (wykonane)”. Wygląda na to, że żądanie ma swój własny cykl życia lub przepływ pracy. Myślę, że jakiś _System śledzenia błędów_ (na przykład _by Atlassian Jira_ ) może pomóc w stworzeniu żądania i może rozpocząć na nim przepływ pracy. Ale to rozwiązanie nie wygląda dla mnie idealnie (nawet dobrze) - jest zbyt "ciężkie i nieporęczne".


title: Jak za pomocą historyjek użytkowników mogę udzielić wskazówek dotyczących wyboru technologii?

text: Jestem kierownikiem projektu dla zespołu inżynierów oprogramowania układowego, który przechodzi na wdrożenie Scrum i przechodzę do wspierania zespołu w roli Product Ownera. Właśnie przeszliśmy szkolenie Scrum i zaczynamy miesiąc coachingu, który będzie bezcenny. Wychodząc z zaplecza technicznego, już widzę wyzwanie polegające na zmianie mojego punktu widzenia z domeny rozwiązań na skupienie się na wartości biznesowej. Dla mnie bardzo kuszące jest myślenie „jak” rozwiązać problem. Ale podoba mi się koncepcja historyjek użytkownika i definiowanie pionowych wycinków funkcjonalności, które dają wartość klientowi i pozwalają zespołowi określić „jak”. Wybaczcie, jeśli to naiwne pytanie, ale jako PO, jak mogę udzielić wskazówek dotyczących konkretnego kierunku technicznego poprzez historyjki użytkownika? Obawiam się, że w niektórych przypadkach bez wskazówek zespół może podążać niewłaściwą ścieżką przy kluczowych decyzjach technicznych. Jako uproszczony przykład mogę podać historyjkę użytkownika: > Jako klinicysta chcę, aby urządzenie rejestrowało informacje o > leczeniu pacjenta, abym mógł określić, czy terapia pacjenta była > skuteczna. Teraz powiedzmy, że czas na wprowadzenie na rynek ma kluczowe znaczenie i chcę sięgnąć po ogólnodostępny stos systemu plików, aby zaoszczędzić czas, co przekazuje to zespołowi? Mogą odejść i zacząć pisać swój własny stos od zera. Czy tego rodzaju wskazówki są zapewniane poprzez: 1. Rozmowy podczas planowania sprintu i opracowywania zaległości? Ale jeśli tak, to czy ja jako PO mam w ogóle sugerować, jak rozwiązać problem. 2. Kryteria akceptacji? Nie podoba mi się to, mam złe przeczucia, że kryteria akceptacji są tak nakazowe, że określają sposób rozwiązania problemu. 3. Ograniczenia? Z góry dziękuję. Mógłbym (i zrobię) zapytać naszego trenera Scrum, ale nie będę mógł tego zrobić przed poniedziałkiem, a to pytanie naprawdę mnie niepokoi :)


title: Właściwa architektura dla DBContext i migracji z wieloma projektami

text: Mam wiele projektów, które będą wykorzystywały te same obiekty biznesowe (klient, zlecenie), ale projekty działają w różnych bazach danych w ramach organizacji i chciałbym zrozumieć odpowiednią architekturę, którą powinienem stworzyć, aby obsłużyć takie potrzeby. Oto lista różnych typów projektów w grze: * Interfejs ASP.NET MVC do obsługi wszystkich ogólnych działań użytkownika. Ten fronton jest wdrażany w dedykowanej instancji na klienta. * Scentralizowana usługa Windows do przetwarzania plików FTP i przesyłania danych do każdej instancji klienta. * Frontend ASP.NET MVC do zarządzania wszystkimi klientami i ich wystąpieniami. Wszystkie obiekty biznesowe (klient, zamówienie itp.) znajdują się w bibliotece klas Core. Każdy z projektów będzie musiał korzystać z obiektów biznesowych w tym czy innym punkcie, ale połączyć się z inną bazą danych. Czy DBContext powinien znajdować się w bibliotece Core czy w projekcie? Czy migracja Entity Framework powinna znajdować się w tej samej lokalizacji co DBContext?


title: Skrypty gniazd w Pythonie. Co ja robię źle?

text: Mój program w gnieździe zawiesza się na clientocket, adres) = serverocket.accept() i nie wypluwa nam błędu ani niczego. Postępowałem zgodnie ze wskazówkami na https://docs.python.org/3/howto/sockets.html Próbowałem to rozgryźć już od godziny, ale bezskutecznie. Używam python3 btw. Co ja robię źle? EDYCJA: Moje zamiary są zepsute, ponieważ wkleiłem je źle, ale poza tym mój kod jest taki, jaki mam w moim pliku. #import socket module import socket #tworzy gniazdo strumieniowe inet. serverocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print('socket utworzony') #wiąże gniazdo z publicznym hostem i dobrze znanym portem serverocket.bind(('127.0.0.1', 1024)) #print (socket.gethostname())# na pulpicie drukuje 'myname-PC') #zostań gniazdem serwera serverocket.listen(5) # nasłuchuje do 5 żądań, podczas gdy True: #akceptuj połączenia z zewnątrz #print('In while true loop') To działa, ale nigdy nie przechodzimy do następnej instrukcji print. Dlaczego, do diabła, łapie na linii 20? (clientsocket, adres) = serverocket.accept() #clientsocket = serverocket.accept() print('Gotowy do obsługi') #teraz robimy coś z gniazdem klienta... try: wiadomość = clientocket.recv(1024) filename = message.split()[1] f = open(nazwapliku[1:]) outputdata = f.read() #wyślij wiersz nagłówka http customersocket.send('HTTP/1.1 200 OK\nContent-Type: text/html\ n\n') for i in range(0, len(outputdata)): customersocket.send(outputdata[i]) customersocket.close() z wyjątkiem IOERROR: customersocket.send('Nie znaleziono pliku HTTP/1.1 404!') gniazdo klienta.zamknij()


title: Czy niejawne metody statyczne mogą powodować problemy?

text: To pytanie czysto hipotetyczne. Powiedzmy, że tworzę metodę klasy, która nie zawiera odniesień do zmiennych instancji ani innych zasobów. Na przykład (C#): protected string FormatColumn(string value, int width) { return value.Trim().PadLeft(width); } O ile widzę, nie ma absolutnie żadnego powodu, dla którego ta metoda nie mogłaby być zadeklarowana jako statyczna: * Używa tylko zmiennych o zakresie metody. * Nie "przesłania" metody klasy bazowej. * Nie jest „wirtualny” ani „abstrakcyjny”. Moje pytania brzmią: Czy jest jakaś korzyść z wywoływania metody statycznej w stosunku do metody wystąpienia? Jeśli tak, dlaczego kompilator nie przekonwertuje tego niejawnie na metodę statyczną? Jestem pewien, że pominąłem tutaj jakiś kluczowy punkt. Jakieś pomysły?


title: Jaki wpływ na pamięć ma używanie wielu widoków childViewControllers wewnątrz ContainerViewController?

text: Mam trzy widoki childViewController wewnątrz mojego ContainerViewController i te trzy widoki znajdują się wewnątrz widoku przewijania poziomego. Moim zamiarem jest zbudowanie aplikacji, która ma niestandardową kamerę w jednym widoku ChildViewController, tableView, która będzie wyświetlać dane JSON w innym widoku, oraz stronę, która pokaże listę znajomych użytkowników. Powodem, dla którego buduję to w ten sposób, jest osiągnięcie efektu przeciągania/przesuwania między trzema różnymi widokami potomnymi. Chociaż otrzymuję pożądany wynik z perspektywy UI/UX, nie jestem pewien, jak wpłynie to na pamięć i wydajność. Jeśli się nie mylę, mój containerViewController będzie obsługiwał dużo aktywności. Czy istniałby alternatywny sposób na zaprojektowanie tego typu aplikacji? Rozumiem, że mógłbym mieć trzy oddzielne kontrolery widoku za pomocą kontrolera nawigacji, ale nie osiągnąłbym pożądanego interfejsu użytkownika/UX. Naprawdę zależy mi na przeciąganiu/przesuwaniu między różnymi stronami, podobnym, jeśli nie takim samym, jak Snapchat/Tinder


title: Jakie środki wspomagające podejmowanie decyzji istnieją w przypadku przejścia na oprogramowanie typu open source?

text: Jestem zaangażowany w rozwój oprogramowania, które chciałbym widzieć jako open source. Przypuszczam, że moi szefowie rozważą tę prośbę życzliwie, ale nadal chcą zobaczyć dowody na to, że to dobry pomysł, a przynajmniej nie jest to zły pomysł. Sami mają niewielkie doświadczenie z open source. Pracujemy w środowisku akademickich usług publicznych, więc interesy finansowe są niewielkie lub nieistniejące. Myślę, że ich głównym problemem jest zła reputacja po opublikowaniu projektu i nikt nie jest zainteresowany, a może potencjalna utrata kontroli nad procesem rozwoju. Zastanawiam się, czy istnieje (prawdopodobnie recenzowany) materiał, który opowiada się za przejściem na open source. Ale interesują mnie również dokumenty opisujące krytyczną perspektywę takiego kroku. Ponadto myślę, że studia przypadków byłyby pomocne. Dokumenty mogą znajdować się za zapłatą dziennika.


title: Anonimowy dostęp do API REST, ochrona

text: Mam publiczną witrynę internetową, która nie wymaga uwierzytelniania. Jest to kalkulator oświetlenia do uprawy w pomieszczeniach. Każdy może wejść i zakończyć proces, a ostatecznie zapisać ustawienia do wykorzystania w przyszłości, udostępniając je na Facebooku lub Twitterze. Konfiguracja jest zapisywana jako dokument w bazie danych za pomocą interfejsu API REST. W tej chwili nic nie stoi na przeszkodzie, aby ktoś zrobił bota i zapełnił mój dysk twardy w kilka godzin. Jakie kroki mogę podjąć, aby zapewnić ochronę mojej usługi?


title: Jaki jest największy rozmiar HashSet lub TreeSet?

text: Dlatego pracuję nad projektem solowym, który wymaga **mnóstwa** strun. W jednym z moich mniejszych przypadków testowych będzie _co najmniej_ 70 milionów elementów. Moje pytanie brzmi więc, jaki jest największy możliwy rozmiar, jaki może osiągnąć TreeSet lub HashSet, dopóki nie będzie mógł już rosnąć **LUB**, dopóki nie osiągnie rozmiaru, którego użycie nie będzie już możliwe pod względem wydajności.


title: Korzystanie z biblioteki zLib, takiej jak licencjonowana biblioteka, która ma zależności od bibliotek LGPL lub GPL; na jakiej licencji mogę wydać swój projekt?

text: Jeśli używam biblioteki Open Source, która jest wydana na licencji podobnej do zLib, ale ma ona zależności od bibliotek korzystających z LGPL lub GPL; na jakiej licencji mogę wydać swój projekt? Jeśli czytam rzeczy, które znajdę w sieci, brzmi to tak, jakbym mógł sprzedać swój projekt, ale nie mogę powstrzymać ludzi przed swobodną dystrybucją go zgodnie z GPL?


title: Jak sprawdzić złożoność kosmiczną tego programu?

text: Napisałem swoją wersję funkcji strstr w c. Używam tymczasowej tablicy o rozmiarze 26. Czy złożoność przestrzeni jest O(1) czy O(n)? To jest mój kod: void strcheck(char t[], int n, char p[], int m) { int i, j, k; temp. wewn[26]; dla (i = 0; i < 25; ++i) temp[i] = 0; dla (i = 0; i < n; ++i) { k = t[i] - 'a'; temp[k]++; } dla (j = 0; j < m; j++) { k = p[j] - 'a'; jeśli (temp[k] > 0) temp[k]--; inaczej złamać; } if (j == m) printf("wystąpił ciąg\n"); else printf("nie wystąpiło\n"); } Program działa poprawnie, chcę tylko wiedzieć o złożoności przestrzeni. Dziękuję


title: Architektura serwera wideokonferencji

text: Opracowuję aplikację do wideokonferencji z następującymi wymaganiami: * Dźwięk działa jak telekonferencja, w której wszyscy uczestnicy mogą rozmawiać w tym samym czasie. * Jednak wideo działa jak nadawanie, w którym tylko jeden wyznaczony klient nadaje jeden film pozostałym. Klientami będą urządzenia z systemem Android. Jednym ze sposobów na to jest użycie stosu SIP (np. Asterisk) i wykorzystanie jego możliwości połączeń konferencyjnych; jednak część Asteriska do wideokonferencji wygląda na dość nierozwiniętą. Ponadto mogą wystąpić pewne problemy z korzystaniem z SIP, ponieważ aplikacja będzie używana przez 3G i/lub restrykcyjne zapory sieciowe. Innym sposobem jest użycie serwera multimediów strumieniowych, takiego jak Wowza, który chociaż robi wrażenie w przypadku przesyłania strumieniowego wideo na żywo, wydaje się, że nie ma możliwości prowadzenia konferencji. Czy istnieje lepszy sposób na podejście do tego? Wygląda na to, że ten przypadek użycia jest dość powszechny i istnieje wiele podobnych rozwiązań dla aplikacji desktopowych.


title: Co powinien wiedzieć absolwent CS?

text: Myśląc o stworzeniu dobrego przewodnika wprowadzającego dla nowych studentów informatyki... **Jaka jest dobra lista oczekiwanej wiedzy i umiejętności dla absolwenta informatyki?** A jeśli ukończyłeś studia jakiś czas temu, jak to wygląda w porównaniu do ówczesnych standardów dla absolwentów? I czy są jakieś rzeczy, które chciałbyś, aby absolwenci wiedzieli, a większość z nich nie wie? Wielkie dzięki!


title: Ranking wydajności zorientowanego obiektowo języka programowania

text: Po przeczytaniu tego postu o idealnej sekwencji uczenia się języka programowania, zastanawiam się, jakie byłyby odpowiedzi, gdyby pytanie dotyczyło wydajności, a nie uczenia się? Ponieważ istnieje wiele języków programowania, postanowiłem zadać pytanie, aby OOL był jak najmniej subiektywny. Ale każda myśl lub porównanie na temat no-OOL są mile widziane :D Jeśli pominiemy wysiłek programistyczny, czas i koszty. Jaki jest twój ranking najpotężniejszych języków obiektowych?


title: Opinie na temat dystrybucji oprogramowania za pośrednictwem urządzenia wirtualnego

text: Stworzyłem dystrybucję mojego frameworka aplikacji open source w działającym urządzeniu wirtualnym. Zawiera wszystko, aby rozpocząć pracę z samouczkiem. Dystrybucją jest Fedora 14 z Tomcat 5.5 i Oracle 10g Express Edition, plus mój framework. Jest całkowicie wstępnie skonfigurowany i uruchamia się w działającej kopii roboczej. Czy to byłoby coś, czego możesz spróbować? Jakich zapewnień możesz potrzebować, aby spróbować? **Edytuj:** pobranie maszyny wirtualnej zajmuje nieco ponad 2 Gb. Alternatywnie jest również dostępny przez 23 MB pobierania źródła i pliku PDF ze szczegółowym opisem konfiguracji zależności Tomcat i Oracle.


title: Kilka razy zawiodłem w PHP. Czy Ruby jest lekarstwem?

text: _Niezwykle, niezwykle_ subiektywne pytanie tutaj, ale jest to coś, z czym zmagam się od dłuższego czasu. Przez ostatnie kilka lat poważnie próbowałem zostać rozsądnym koderem PHP. Ale za każdym razem naprawdę zawiodłem. Nienawidzę opisywać siebie jako początkującego, bo od lat projektuję strony internetowe (używając WordPressa, Drupala itp.), ale nadal po prostu nie mogę być lepszy w programowaniu. Czy to możliwe, że mam jakąś alergię na PHP? Przeszedłem przez niesamowite przejście Chrisa Pine'a do Ruby około tydzień temu (około piąty raz) i chociaż wszystko wydawało mi się o wiele jaśniejsze niż PHP, zastanawiałem się, czy po prostu zmieniam języki, aby znaleźć łatwe wyjście? Wszystko, z czym zmagam się w PHP, wydaje się być elementarne — kiedy używać funkcji, jak zwracać zapytania do bazy danych w instrukcjach foreach/while, kiedy przekształcić te zapytania w funkcje wielokrotnego użytku, dodawać argumenty do funkcji itp. rzeczy, które ostatnio oglądam, to pliki nad moją głową. Wydaje mi się, że moje pytania brzmią: Czy zamierzam nauczyć się programować w niewłaściwy sposób? Czy mam jakąś awersję do PHP, która powstrzymuje mnie przed uchwyceniem? Jeśli będę naciskał na Ruby/Rails, czy w końcu „kliknie”. A może ten, którego się boję, czy po prostu jest mało prawdopodobne, abym kiedykolwiek został programistą?


title: Jak zrównoważyć umiejętność kodowania Front End i Back End?

text: To jest pytanie przeznaczone specjalnie dla twórców aplikacji internetowych. W ostatnich latach większość czasu spędziłem na produktach SaaS, co prowadzi do zagłębienia się w więcej rzeczy back-endowych, takich jak wykorzystanie mniejszej ilości zasobów pamięci, tworzenie sesji pracy z load balancerem, pisanie wydajnych zapytań SQL, dostrajanie wydajności, technika rozwiązywania trudność. Nie ma z nami projektanta stron internetowych, generalnie otrzymujemy migawkę tego, jak powinien wyglądać system, ale nikogo tutaj nie obchodzi, jak go produkujesz. Od teraz plan firmy się zmienił i będą się zmieniać, a produkt SaaS wkrótce dobiegnie końca, a ja po prostu czuję, że brakuje mi tej wiedzy HTML/CSS, to znaczy nigdy nie miałem okazji sprawdzić tych rzeczy w całości rzeczy, ale ucz się tylko z tego, co muszę wypracować. Wygląda na to, że wszystkie powyższe informacje sprawiły, że wyszedłem z mody na temat umiejętności front-endowych, wydaje mi się, że mam tendencję do ignorowania różnych rzeczy na ten temat. Do tej pory zdałem sobie sprawę, że może to być błąd, który popełniłem, na przykład nadal używam układu tabel w HTML i właśnie zdałem sobie sprawę, jak zła praktyka jest ostatnio. Zaczynam się zastanawiać, czy znajdę nową pracę, jak dobry powinienem być w kodowaniu front-endowym w porównaniu z umiejętnościami back-endowymi? Czy na razie jest to w porządku, ponieważ zatrudnia się coraz więcej projektantów stron internetowych lub projektantów interfejsów użytkownika, więc nie musimy się zbytnio martwić o Html/Css? A może powinienem wstrzymać rozwój umiejętności back-endowych i wskoczyć na jakiś czas z powrotem do front-endu, a potem zrobić to pół na pół? Przepraszam, angielski nie jest moim językiem ojczystym, więc może być coś nie tak jasnego. Dzięki za przeczytanie tego długiego posta!


title: Pytanie OOP dotyczące katalogu produktów

text: Mam pytanie, które dręczy mnie od kilku dni. Zrobiłem sklep internetowy dla mojego dobrego przyjaciela. Problem polega na tym, że mam pytanie klasy OOP. Ludzie mogą kupić ubrania w sklepie. Powstaje problem, jak pokazać różne informacje dla różnych produktów? Mam teraz następujące informacje: * streszczenie Klasa produktu * Materiał rozszerza się Produkt * Spodnie rozszerzają się Produkt Problem polega na tym, że spodnie mogą zawierać dodatkowe informacje, takie jak: * rodzaj włókna * struktura Jak mogę wyświetlić te informacje w sklepie? Pytam o wszystkie produkty i otrzymuję klasę Product tylko z ceną sprzedaży i nazwą? Jaki jest prawidłowy sposób, aby dowiedzieć się, czy spodnie pokazują takie informacje, jak struktura włókien na stronie ze szczegółami?


title: Czy składniki Web Part ASP.NET są przydatne i wystarczająco powszechną praktyką w świecie rzeczywistym, poza projektami programu SharePoint?

text: Nauka do egzaminu .NET 70-515. Jest rozdział dotyczący składników Web Part. Wypiję to i dowiem się, czego muszę się tutaj nauczyć, ale... Zastanawiam się, czy programiści ASP.NET w realnym świecie często sięgają po Web Part _poza_ programowaniem SharePoint? **Nigdy** nie planuję zajmować się SharePoint — wolę pracować na publicznych witrynach i aplikacjach na dużą skalę — a składniki Web Part (również SharePoint) nie wydają mi się przydatne w tym kontekście. Ale co ja wiem? Pomóż mi zrozumieć znaczenie lub nieistotność tej technologii, proszę. Czy powinienem zachować składniki Web Part ASP.NET na mojej _ignore-list_ , jeśli SharePoint już na nim jest? Dziękuję!


title: Przechowywane procedury to zła praktyka w jednej z największych na świecie firm konsultingowych zajmujących się oprogramowaniem IT?

text: Pracuję nad projektem w jednej z trzech największych firm konsultingowych IT na świecie. DBA powiedział mi, że procedury przechowywania najlepszych praktyk firmy nie są „najlepszą praktyką”. To jest tak sprzeczne ze wszystkim, czego się nauczyłem. Procedury składowane zapewniają ponowne użycie kodu i enkapsulację (dwa filary tworzenia oprogramowania), bezpieczeństwo (można przyznawać/odwoływać uprawnienia do poszczególnych procesów składowanych), chronią przed atakami typu SQL injection, a także pomagają w zwiększeniu szybkości (chociaż DBA powiedział, że począwszy od SQL Server 2008, że nawet zwykłe zapytania SQL są kompilowane, jeśli są uruchamiane wystarczająco dużo razy). Tworzymy złożoną aplikację z wykorzystaniem metodyki Agile. Czy ktoś może wymyślić dobre powody, dla których nie chciałby używać zapisanych procesów? Domyślałem się, że administratorzy baz danych nie chcieli utrzymywać tych zapisanych procesów, ale wydaje się, że jest zbyt wiele negatywów, aby uzasadnić taką decyzję projektową.


title: Podstawowe pytania dotyczące celu C

text: Jestem nowy w celu C, śledzę "Cel C 5th Edition Stephen Kochan i nie mam komu zadawać wątpliwości. Jestem zdezorientowany tym pytaniem: P. Czy konieczne jest użycie "-" lub „+” przed każdą deklaracją właściwości lub metody w interfejsie?Co się stanie, jeśli nie użyję „-” lub „+” przed każdą deklaracją właściwości lub metody w interfejsie?


title: Czy powinienem zwracać iteratory czy bardziej wyrafinowane obiekty?

text: Powiedzmy, że mam funkcję, która tworzy listę obiektów. Jeśli chcę zwrócić iterator, muszę `zwrócić iter(a_list)`. Czy powinienem to zrobić, czy po prostu zwrócić listę bez zmian? Moją motywacją do zwrócenia iteratora jest to, że dzięki temu interfejs będzie mniejszy -- jaki rodzaj kontenera stworzę do zbierania obiektów jest zasadniczo szczegółem implementacji Z drugiej strony byłoby marnotrawstwem, gdyby użytkownik mojej funkcji musiał tworzyć ponownie ten sam kontener z iteratora, co byłoby złe dla wydajności.


title: Czy deweloperzy i ich klienci mogą stworzyć „siatkę bezpieczeństwa” dla ostatecznej transakcji oprogramowania za pieniądze?

text: Po pierwsze, zakładamy, że przedmiotowe projekty nie są wystarczająco duże lub ważne, aby zaangażowane strony mogły zawrzeć formalną umowę i że strony nie są w stanie spotkać się osobiście. Skąd zatem programista(y) może mieć pewność, że zostanie mu(y) opłacony(w całości), a jak klient może mieć pewność, że jego wymagania są spełnione, m.in. testujesz go bez uzyskania pełnego kodu źródłowego?


title: Porównanie aplikacji TCP/IP z aplikacjami HTTP

text: Jestem zainteresowany tworzeniem witryny internetowej na dużą skalę, skierowanej do użytkowników, która jest napisana w Javie. Jeśli chodzi o projektowanie, myślę o stworzeniu niezależnych, modułowych usług, które mogą działać jako dostawcy danych dla mojej głównej aplikacji internetowej. Jeśli chodzi o pisanie tych usług modułowych (dostawców danych), mogę wykorzystać istniejącą platformę, taką jak Spring i rozwijać te usługi zgodnie ze wzorcem projektowym RESTful i udostępniać zasoby przez HTTP z formatem wiadomości, takim jak JSON... lub mogę wykorzystać istniejącą sieć framework, taki jak Netty (http://netty.io/) i format serializacji, taki jak Protobufs (https://developers.google.com/protocol-buffers/docs/overview) i opracować serwer TCP, który przesyła tam i z powrotem serializowany protobuf ładowność. Kiedy powinieneś wybrać jeden z drugim? Czy byłaby jakaś korzyść z używania formatu serializacji, takiego jak Protobufs i wysyłania strumienia bajtów przez przewód? Czy samo używanie JSON wiąże się z dodatkowymi kosztami? Ile kosztów wiąże się z korzystaniem z protokołu TCP/IP i protokołu HTTP? Kiedy powinieneś używać Springa nad Netty i na odwrót, aby zbudować taką usługę?


title: Używanie serwera domowego do rozwoju, przenoszenie wszystkiego poza komputer lokalny

text: Przepraszam, jeśli to pytanie jest zbyt obszerne, ale mam nadzieję, że nie :) Zastanawiam się nad skonfigurowaniem małego i taniego domowego serwera opartego na Linuksie (jednego z tych mikrokomputerów za 200-300 USD), aby przenieść całe moje środowisko programistyczne z mojego laptopa (bazy danych, tłumacze itp.). Głównym powodem jest to, że podczas gdy zarabiam na PHP kodowania posiłków, chciałbym wypróbować nowe rzeczy, które wymagają zainstalowania nowych rzeczy i chcę, aby mój laptop działał płynnie. Innym powodem jest to, że konfiguracja i utrzymywanie środowiska deweloperskiego na OS X jest nieco niepokojące (po prostu nie możesz uaktualnić PHP, musisz zrobić kilka sztuczek, aby to zrobić). Konfiguracja, o której myślałem, to: 1\. Zamontuj dysk serwera przez `Samba` 2\. Użyj `NetBeans` zapisywania bezpośrednio na serwerze, pracuj, uruchamiaj aplikacje na serwerze Mając to na uwadze, moje główne (i dość specyficzne) pytanie IMHO brzmi - czy to zadziała? Mam na myśli - czy ta konfiguracja nie spowolni mojego rozwoju, zamiast uczynić go bardziej przejrzystym i oddzielonym od maszyny deweloperskiej? Przez spowolnienie rozumiem: problemy z sambą, problemy z konfiguracją, problemy i tak dalej. Technologie, które zamierzam wykorzystać: `mysql`, `postgres`, `php`, `pyton`, (być może) `java`, (być może) `RoR`, (być może) `Solr`.


title: Jak mogę zaktualizować dużą starszą bazę kodu, aby spełniała określone standardy jakości?

text: Istnieje wiele informacji o narzędziach i technikach ulepszania starszych baz kodu, ale nie natknąłem się na żadne udane studia przypadków ze świata rzeczywistego. Większość porad jest na poziomie mikro i chociaż jest pomocna, nie przekonuje wielu ludzi z powodu braku dowodów, może pomóc na poziomie makro. Szukam konkretnie stopniowych ulepszeń, które okazały się sukcesem w prawdziwym świecie podczas aktualizowania dużej starszej bazy kodu, aby spełnić dzisiejsze standardy jakości, a nie całkowitego przepisywania. Przed: * Duże: powyżej 1MLOC * Wcześniejsze: brak testów automatycznych * Niska jakość: duża złożoność, wysokie sprzężenie, duża liczba defektów, które zostały usunięte Po * Testy automatyczne * Łatwiejsze aktualizacje/konserwacja * Wysoka jakość: niższa złożoność, kod oddzielony, niewiele defektów, które zostały usunięte Co w realnym świecie udowodniono pewien rodzaj stopniowych kroków w celu zaktualizowania dużej starszej bazy kodu w celu spełnienia ponadstandardowych standardów jakości, bez przechodzenia przez totalne przepisywanie? Jeśli to możliwe, uwzględnij w swojej odpowiedzi przykładową firmę lub studium przypadku dużego projektu, który przeszedł „udany” proces poprawy jakości, aby go poprzeć.


title: Ładowanie dynamicznego CSS na podstawie użytkownika

text: Chcę zapewnić inny motyw interfejsu użytkownika w zależności od użytkownika, który się zalogował. W tym celu wymyśliłem następujące 2 opcje: * utwórz osobne pliki dla wszystkich motywów, powielając wszystkie wspólne css. W ten sposób mogę łatwo zalogować się w skryptach i uzyskać wymagany plik css. Ale w końcu mam ten sam kod klas CSS w wielu różnych plikach tematycznych. To prawdziwy ból, gdy musisz zmienić coś wspólnego dla wszystkich plików. * utwórz wspólny plik i oddzielne pliki motywów zawierające tylko css specyficzne dla motywu. W ten sposób za każdym razem, gdy potrzebuję załadować 2 pliki css, jeden - domyślnie wspólny plik, a następnie załadować plik specyficzny dla motywu, aby nadpisać domyślne klasy css. Pomóż mi wybrać lepszą opcję. Jeśli istnieje inny prosty i łatwy sposób, daj mi znać.


title: Jak rozpoznać prawdziwy błąd?

text: Piszę program do usuwania niektórych danych z sieci. Strony są sekwencyjne (1,2,3...), ale nie mam pojęcia, kiedy się skończy. Łączę prefiks i liczbę całkowitą, aby utworzyć link do urllib Pythona do przeanalizowania na nim. Na przykład: „http://jakaś.domena.com/strona” + „1” + „.htm”. Więc żądanie zakończy się niepowodzeniem, jeśli łącze jest nieprawidłowe, jednak może wystąpić inny błąd, taki jak błąd sieci, przekroczenie limitu czasu połączenia, który sam się rozwiąże. Mógłbym spróbować kilka razy w przypadku tych błędów. Oprócz błędu „Nie znaleziono strony” może występować inny błąd, taki jak „Wewnętrzny błąd serwera”, który został zgłoszony, gdy serwer nie działa. Błąd sam się nie naprawi. Powinienem prawdopodobnie przejść dalej lub zatrzymać program. Powrót do mojego programu. Ponieważ nie wiem kiedy skończy się indeks strony, więc ustawiłem końcową liczbę całkowitą na 9999. Linki mogą wyczerpywać się po kilkuset. Powinienem to zidentyfikować i wysłać do niego „przerwę”. Co zrobisz? Zbierz wszystkie możliwe błędy i umieść je w linii wyjątków i traktuj je inaczej? Teraz po prostu przestaję po 10 niepowodzeniach.


title: Dekoratory w Pythonie

text: Dopiero uczę się Pythona, a obecnie gram z frameworkiem Tornado. Widzę tę klasę: class AuthHandler(BaseHandler, tornado.auth.GoogleMixin): @tornado.web.asynchronous def get(self): if self.get_argument("openid.mode", None): self.get_authenticated_user(self.async_callback (self._on_auth)) return self.authenticate_redirect() Mam problem ze zrozumieniem, co robi tam dekorator (@tornado.web.asynchronous). Czy nadpisuje tę funkcję? Możesz zobaczyć pełne źródło na https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py


title: scons i testy jednostkowe Pythona najlepsze praktyki

text: Używam scons do budowania dużego projektu zawierającego mieszankę C++ i Pythona. Chciałbym, aby scons uruchamiali testy jednostkowe Pythona za pomocą nosa lub nie. Obecnie mamy długą listę plików testowych i na każdym z nich uruchamiamy konstruktor testów. Powoduje to, że każdy plik testowy jest uruchamiany jako oddzielny skrypt, który wydaje się nieelegancki i nieefektywny. Czy istnieje lepszy sposób na zrobienie tego?


title: które są najlepszymi blogami dla programistów front-end

text: Poszukiwanie rekomendacji na blogach branżowych od front-end web developerów (z naciskiem na aplikacje RIA; np. HTML5, Javascript, AJAX, JQuery, Ext JS). Próbuję oddzielić to, co najlepsze od reszty. Które blogi są szanowane i warte obserwowania?


title: Czy istnieje nazwa wzorca konstruktora, w którym konstruktor jest implementowany za pośrednictwem interfejsów, więc wymagane są określone parametry?

text: Zaimplementowaliśmy więc wzorzec konstruktora dla większości naszej domeny, aby pomóc w zrozumieniu tego, co faktycznie jest przekazywane do konstruktora, oraz w celu uzyskania normalnych korzyści, jakie daje konstruktor. Jedyny błąd polegał na tym, że ujawniliśmy konstruktora przez interfejsy, abyśmy mogli łączyć wymagane funkcje i funkcje niepożądane, aby upewnić się, że przekazano prawidłowe parametry. Byłem ciekawy, czy istnieje taki wzór. Przykład poniżej: public class Foo { private int someThing; prywatne int coś2; prywatne DateTime SomeThing3; private Foo(Builder builder) { this.someThing = builder.someThing; to.jakasRzecz2 = budowniczy.jakas Rzecz2; to.jasnaRzecz3 = budowniczy.jakasRzecz3; } public static WymaganeCoś getBuilder() { return new Builder(); } interfejs public RequiredCoś { public RequiredDateTime with Something (wartość int); } interfejs publiczny RequiredDateTime { public OptionalParamters withDateTime (wartość DateTime); } interfejs publiczny OptionalParamters { public OptionalParamters withSeomthing2 (wartość int); public Foo Build ();} public static class Builder implementuje RequiredSomething, RequiredDateTime, OptionalParamters { private int someThing; prywatne int coś2; prywatne DateTime SomeThing3; public RequiredDateTime withSomething (wartość int) {someThing = value; return this;} public OptionalParamters withDateTime (wartość int) {coś = wartość; return this;} public OptionalParamters withSeomthing2 (int value) {someThing = value; return this;} public Foo build(){return new Foo(this);} } } Przykład jak to się nazywa: Foo foo = Foo.getBuilder().withSomething(1).withDateTime(DateTime.now()).build (); Foo foo2 = Foo.getBuilder().withSomething(1).withDateTime(DateTime.now()).withSomething2(3).build();


title: Programowanie genetyczne

text: Niedawno przeglądałem Reddit i natknąłem się na post z linkiem do przykładu „genetycznego algorytmu JavaScript”. Byłem naprawdę zafascynowany koncepcjami algorytmów genetycznych i programowania, jednak nawet po pewnym Googlingu nadal jestem lekko zdezorientowany. Czy ktoś może mi wyjaśnić, jak to działa? Przypuszczam, że terminy słownictwa dezorientują mnie bardziej niż cokolwiek innego. Nigdy nie uczęszczałem na zajęcia z informatyki, ale programuję w wolnym czasie i lubię to. Mam 16 lat, więc byłbym wdzięczny za krótkie przykłady i być może wyjaśnienia. Tylko pojęcie programowania genetycznego i jak mogę je wdrożyć do swoich projektów i dlaczego. Dziękuję.


title: Przypisywanie zadaniom efektywnych ocen złożoności

text: Chcę dokonać doskonałych szacunków dotyczących tego, ile wysiłku wymaga wykonanie określonego zadania. Ograniczeniem jest to, że już rozwiązałem problem i spisałem kroki potrzebne do jego rozwiązania. Mam również opis rodzaju problemów, które rozwiązuje, skompilowany przykładowy program, jego kod źródłowy z komentarzami, testami i danymi testowymi, anomalie językowe związane z konkretnym rozwiązaniem itp. Zrobiłem to dla zestawu języków X. Mój sub pytania to: * czy zadałem właściwe pytania podrzędne? * czy to problem Fermiego (czy paradoks)? * na czym powinienem oprzeć swoją decyzję? * jakie elementy powinna zawierać, aby była skuteczna? * co powinienem wiedzieć przed podaniem przybliżonej oceny? * jakiego rodzaju skal argumentacji powinien używać: liniowej, logarytmicznej, ...? * jak zmienia się oszacowanie, jeśli zmieni się definicja wymaganej cechy? * jak to ocenić, czy jest jakaś tabela taka jak ta IBM (fałszywa)? * czym różni się estymacja, jeśli mam ją rozwiązać w języku {x, y}? Gdzie x ⊇ X i y ∉ X. Moje pytanie brzmi: **Jaki jest najskuteczniejszy sposób oceny trudności odtwarzania zadań?** ## O pytaniu Mimo, że zawodu inżyniera oprogramowania uczę się od dłuższego czasu, dopiero teraz zaczynam pracować jako jeden. Na uniwersytecie odkryłem, że naprawdę dobrze sprawdzają się 2 techniki zarządzania czasem: * robienie projektów ASP - kilka tygodni wcześniej oznacza też praktycznie brak konkurencji, do oceniania * timeliceing - decydowanie ile ciągłego czasu spędzę na zadaniu przed zmianą na nowy. Jeśli to ważne, po prostu zaplanuję nowy odcinek czasu wcześniej, niż zrobię to. Wydaje się, że nie nadają się do tego zadania, a raczej ich dostosowanie wydaje się złożonym problemem. ## Przykład: Nieregularne punkty aktywne związane ze zdarzeniem kliknięcia Stopień trudności : ★ ★ ☆ | Szacowany czas : 1 dzień roboczy ![tu wpisz opis obrazka](http://i.stack.imgur.com/EhTHi.jpg) Przykład wymaganego procesu tworzenia danych ![tu wpisz opis obrazka](http://i. stack.imgur.com/okHb2.jpg)


title: Jak łatwo/trudno jest zacząć używać czegoś takiego jak Python/Django w istniejącym projekcie Java?

text: Mam projekt Java, który używa Java, aby uzyskać dostęp do niektórych bibliotek 3rd party. Do innych rzeczy chciałbym użyć czegoś nowszego, na przykład Pythona. Czy łatwo jest włączyć do istniejącego projektu? Jak ludzie zwykle to robią? Dzięki, Alex


title: Gdzie mieści się „programista techniczny” i co oznacza tytuł?

text: Było: "Co to jest 'programista techniczny'"? Zauważyłem na tablicach ogłoszeń o pracę kilka ogłoszeń, wszystkie z europejskich firm z branży gier, dla "Programisty Technicznego". Opis stanowiska był podobny, dotyczył rozwoju narzędzi, programowania grafiki 3d itp. Wydaje się, że jest to coś pomiędzy artystą technicznym, który jest bardziej techniczny niż artysta lub który potrafi kodować, a dyrektorem technicznym, ale być może bez stażu pracy/doświadczenia. Informacje w innych miejscach na stanowisku są skąpe. Tytuł wydaje się zbędny i nie widziałem dokładnie żadnej amerykańskiej firmy zamieszczającej oferty pracy pod taką nazwą. Jednym z przykładów jest ta oferta pracy na gamedev.net, która nie jest do końca dokładna. W przypadku, gdy link umrze: > **Temat**: Technical Programmer > > Frictional Games, twórcy serii Amnesia: The Dark Descent i Penumbra >, szukają utalentowanego programisty, który dołączyłby do firmy! > > Będziesz pracować dla małego zespołu z dużym naciskiem na znajdowanie nowych i > innowacyjnych rozwiązań. Chcemy tych, którzy nie boją się odkrywać nieznanego > terytorium i ciągle uczyć się nowych rzeczy. Samodyscyplina i niezależność > to także ważne cechy, ponieważ cała praca będzie wykonywana w domu. > > Niektóre rzeczy, z którymi będziesz pracować, to: > > * Matematyka 3D, renderowanie, shadery i wszystko inne. > * Rozwój konsoli (najprawdopodobniej Xbox 360). > * Implementacje sprzętowe (obsługa sterowania ruchem itp.). > > > Całe kodowanie jest w C++, więc duże umiejętności w tym zakresie są niezbędne. _Poprawione pytanie podsumowujące_ : A więc, gdzie programista tego rodzaju pasuje do zespołu programistów? Gdybym miał je w swoim zespole, jakich zadań oczekuję od nich wykonania? Czy mogę poprosić kogoś o zbudowanie nowego edytora poziomów lub zoptymalizowanie silnika renderującego? Nie wydaje się być „programistą narzędzi”, który koncentruje się na tworzeniu narzędzi artystycznych, często w językach wysokiego poziomu, takich jak C#, Python lub Java. Nie wydaje się też, by działał bezpośrednio na silniku, ani też nie był programistą graficznym jako takim. Jednak silne wymaganie C++, które znalazło odzwierciedlenie w innych postach poza tym, który zacytowałem. **Edytowane, aby dodać** Jeśli chodzi o programistę niskiego poziomu, rozważałem to, ale brakowało tego w publikowaniu, co było wymogiem asemblera. Zamiast tego zwykle wymagają znajomości sprzętowych interfejsów API wyższego poziomu, takich jak DirectX lub DirectInput. W moim oryginalnym poście nie było w pełni jasne. Myślę jednak, że Mathew Foscarini ma rację w swojej odpowiedzi, więc za wyjątkiem kogoś, kto na pewno pracuje z lub jako „programista techniczny”, wkroczy, aby zapewnić jaśniejsze wyjaśnienie, pójdę z tym. Generalista, który również pasuje do opisu bardziej technicznego niż artystycznego TA.


title: Jakich narzędzi używasz do zarządzania listą rzeczy do zrobienia?

text: Chciałbym zoptymalizować sposób, w jaki zarządzam moją listą rzeczy do zrobienia. Moje zadania są w dużej mierze związane z kodowaniem w `C++`, ale obejmują również odczyty, prezentacje, badania... Ostatnio odkryłem polecenie `@todo` w doxygen, które jest całkiem fajne w części dotyczącej kodowania. Chciałabym jednak mieć jasny obraz wszystkich moich zadań w jednym dużym narzędziu. Jakieś pomysły ?


title: Zacząłeś od rozwoju iOS, pominąłem CS i mocno uderzyłeś w wywiady?

text: Zacznę od krótkiego tła: mój dyplom jest w sztuce nagrywania, a więc głównie inżynierii dźwięku i rzeczach związanych z przemysłem muzycznym, z pewną syntezą i rzeczami, które były moim łącznikiem z kodowaniem (poprzez środowisko o nazwie PureData). Przez ostatnie trzy lata pracowałem dla programisty iOS zajmującego się sprawami audio (głównie muzycznymi) i mając minimalną ilość pracy do wykonania (takie jak lokalizacja itp.). Sam napisałem kilka podstawowych projektów iOS, które są coraz większe w złożoność powoli i czuję się całkiem dobrze z podstawowymi koncepcjami rozwoju iOS (MVC, delegowanie, KVC itp.) Uczestniczyłem w rozmowach kwalifikacyjnych tylko po to, aby przetestować wodę, aby zobaczyć, gdzie pasuję do niektórych zadań dla młodszych programistów iOS to może naprawdę rzucić mi wyzwanie i pomóc mi rozwijać się jako programista, a bardzo mocno uderzają mnie ankieterzy, którzy oczekują ode mnie dyplomu CS i naprawdę dogłębnej znajomości podstawowych koncepcji CS. Może to być stwierdzenie zrodzone z frustracji, ale wydaje się, że nie chcą dotykać żadnego potencjalnego pracownika, który nie ma dyplomu z informatyki lub ma gruntowną wiedzę na ten temat. Na przykład jeden, który mocno mnie uderzył we wczorajszym wywiadzie, to coś teoretycznego na temat zachowań należących do klas i bycia dostępnym dla niedziedziczonej klasy. Naprawdę nie miałam pojęcia. Mogę wejść i kodować zajęcia z dziedziczeniem, ale omawianie ich na abstrakcyjnym poziomie z kartką czystego papieru przed sobą jest bardzo zniechęcające. Innym przykładem było omówienie "struktur danych" - o ile wiem, są to tylko typy zmiennych, tablice/słowniki itp., ale facet zachowywał się tak, jakbym znał 5% historii i wydawał się zaskoczony. Od tego czasu sprawdziłem te rzeczy i dowiedziałem się trochę więcej, ale myślę, że to jest pomoc w rozwiązaniu problemu. To dość demoralizujące, czuć się, jakbym robił postępy jako programista, ale także czuję, że wciąż nie zmierzam do właściwej kariery programisty i zdaję sobie sprawę, że ten post może zostać zamknięty (chociaż naprawdę uważam, że jest to najlepsze miejsce na to i mam nadzieję, że inni mogą służyć radą), ale staram się dokładnie ustalić, w jaki sposób mogę nauczyć się tych podstawowych koncepcji CS bez konieczności powtarzania podstawowych konstrukcji kodowania, które już dobrze znam. Próbowałem oglądać razem z różnymi kursami iTunes U, niektórymi materiałami z MIT online itp., i wszystkie przeskakują prosto do Javy na lekcji 1, 2 lub 3 i zaczynają mówić o instrukcjach if, zmiennych itp., a następnie wzrosnąć w złożoności, pozostając prawie wyłącznie z samym kodem. Być może robię zbyt duże rozróżnienie między programowaniem a CS, ale jestem na łodzi, w której łatwo nudzę się słysząc, co robi stwierdzenie „if” lub pętla „for” w kółko i chcę zrozumieć podstawowe koncepcje, z którymi rozmawiałem, wszystkie oczekują, że będę je znał jak własną kieszeń. Mam nadzieję, że jacyś tutejsi ludzie udzielą rad, jak załatać te luki w mojej wiedzy w kształcie CS, abym mógł właściwie rozpocząć karierę programisty, zamiast po prostu stawać się coraz lepszym z rozwojem iOS i zostawiać ziejącą dziurę gdzie powinna być moja rzeczywista edukacja. **EDYTUJ:** Chcę spróbować przekształcić to w bardziej szczegółowe pytanie, na które można odpowiedzieć, a nie dyskutować, zgodnie z zasadami, więc: **Czy można przezwyciężyć brakującą edukację CS, po prostu pchając do przodu koncepcje programowania i uczenia się, gdy się na nie natkniesz?**


title: Systemy PGAS na wolności

text: Czy ktoś miał jakieś doświadczenia z opracowywaniem produktu lub systemu partycjonowanej globalnej przestrzeni adresowej, aplikacji korzystającej z PGAS lub czegoś podobnego do PGAS? Szukam spostrzeżeń, historii wojennych i praktycznych podejść w odniesieniu do używanych języków, nabytej mądrości i pomysłów/aplikacji, o których marzyłem lub które zostały wydzielone z faktycznego rozwoju.


title: Jak rozproszone systemy kontroli wersji radzą sobie z fragmentacją?

text: Oto scenariusz: X jest autorem oprogramowania. X wydaje v1.0 na licencji open source na Github i idzie dalej. Osoby zainteresowane rozwidleniem oprogramowania i ulepszaniem oprogramowania. Obecnie istnieje 15 różnych wersji oprogramowania. Niewielu próbuje również wysłać żądanie ściągnięcia z powrotem, jednak ponieważ X nie działa już w oprogramowaniu, żądanie ściągnięcia jest po prostu bezczynne na stronie jego projektu. Jako nowy użytkownik, który chce korzystać z najbardziej aktywnej i stabilnej wersji oprogramowania, w jaki sposób dowie się, które z 15 powinien sklonować i używać? Z pewnością chciałby skorzystać z bardziej aktywnej gałęzi, ponieważ może zawierać więcej poprawek błędów i ulepszeń funkcji. Widzę, że model sprawdza się przy większych projektach open-source, ponieważ autor oprogramowania jest zwykle dobrze znany w społeczności. W rezultacie baza użytkowników nieumyślnie wie, z której gałęzi sklonować. Jak jednak rozwiązać problem dotyczący oprogramowania, w którym autor, opiekun i kilku współpracowników jest praktycznie nieznanych w społeczności open-source?


title: Proces rozmowy kwalifikacyjnej (przy użyciu czystego papieru itp.)

text: > **Możliwy duplikat:** > Jakie są plusy i minusy dla pracodawcy pytań kodowych podczas > rozmowy kwalifikacyjnej? Jestem ciekaw, dlaczego firmy wręczają ci czystą kartkę i proszą o napisanie kodu? To mnie myli, ponieważ w dzisiejszych czasach intellisense, google, stackoverflow itp. są powszechnymi źródłami wyszukiwania składni i / lub IDE daje kolorowy wskaźnik, jeśli twoja składnia jest nieprawidłowa. W takich sytuacjach zwykle się stresuję. Jestem ciekaw opinii innych programistów. Publikuję to na tym forum, mając nadzieję na uzyskanie pomocnych opinii od innych doświadczonych programistów.


title: Czy ma sens opracowywanie biblioteki Pythona typu open source do inspekcji baz danych?

text: Jakiś czas temu wpadłem na pomysł stworzenia biblioteki do inspekcji baz danych. Zacząłem go rozwijać i otrzymałem bardzo podstawową funkcjonalność, żeby sprawdzić, czy to możliwe. Ostatnio jednak zastanawiam się, czy taki projekt rzeczywiście byłby przydatny. Planuję stworzyć następujący pakiet oprogramowania: * biblioteka dla `pythona`, która zapewni łatwy interfejs do kontroli struktury bazy danych, * aplikacja desktopowa w `PyQt`, która będzie używała interfejsu do graficznej inspekcji bazy danych, * aplikacja webowa w ` Django` który używałby interfejsu do kontroli bazy danych przez przeglądarkę. Czy uważasz, że taki pakiet byłby przydatny dla innych programistów/administratorów/analityków baz danych? Wiem, że istnieje pgadmin dla `PostgreSQL` i jakieś narzędzie dla `sqlite3` oraz że istnieje narzędzie `Java` o nazwie `DBInspect`. Zwykle byłbym przeciwny tworzeniu nowego narzędzia i raczej dołączaniu do istniejącego projektu, ale nie jestem programistą `Java` (i wolę trzymać się `pythona` lub `C`, które lubię) i żaden z tych projektów nie zapewnia biblioteki dla inspekcja bazy danych. W każdym razie chciałbym usłyszeć opinie od kolegów deweloperów, czy taki projekt ma sens, czy też powinienem poświęcić swój wolny czas na rozwijanie czegoś innego.


title: Ile informacji użytkownik może racjonalnie przetworzyć z interfejsu użytkownika?

text: Jako przykład załóżmy, że istnieje interfejs, który zawiera tabelę/siatkę informacji, które są okresowo aktualizowane. Tabela ma przedstawiać zdarzenie, które miało miejsce, na przykład datę i godzinę zmiany kursu akcji . Rzeczywista częstotliwość tych zdarzeń może wynosić dziesiątki zdarzeń na sekundę. Jest to oczywiście zbyt dużo informacji, aby użytkownik mógł je przetworzyć/zrozumieć, więc próbuję dowiedzieć się, ile informacji użytkownik MOŻE przetworzyć w określonym czasie, abyśmy mogli dławić dane i wymyślić alternatywny wyświetlacz. Wiem, że przeprowadzono kilka badań na ten temat, ale nie mogę znaleźć wiarygodnego źródła.


title: Reklama online i marketing Twoich usług?

text: Pracuję na stronach freelancerów od dobrych 4 lub 5 lat, pochylając się nad budowaniem przyzwoitego portfolio i generowanie świetnych ocen. Jestem bardzo dumny ze swojej pracy (aplikacje webowe). Jestem kompletnie zagubiony, bo kiedy pomyślę, co by się stało, gdybym nagle stracił konto freelancera, to nie jest ładny obraz. Dosłownie nie mam pojęcia, gdzie jeszcze mógłbym reklamować swoje usługi poza płatnymi reklamami w Google. Jakieś sugestie? Oczywiście chętnie zapłaciłbym za marketing i tym podobne. Od wieków przeszukuję google i nie mogę znaleźć zbyt wielu porad, gdzie się reklamować, aby pozyskać dobrych klientów do pracy nad tworzeniem stron internetowych. Mówię o dobrych klientach, ponieważ mam na myśli rzeczywistych właścicieli firm, a nie kogoś innego, kto zleca mi outsourcing (gdzie znajdują klientów?). Byłbym wdzięczny za każdą pomoc.


title: W jakim formacie wizualnym powinienem przedstawić wycenę projektu oprogramowania?

text: Chodzi mi o to, czy ludzie drukują jakiś formularz elementu zamówienia? Jakie dane zawiera? Jakie są zwykle elementy zamówienia? W przeciwnym razie, czy po prostu przedstawiasz pisemny dokument opisujący akapitem? Czy podajesz liczbę godzin, czy tylko ryczałt? Być może pokazujesz tylko dolary za godzinę i szacunkową liczbę godzin. Czy podajesz wiele szacunków, wysoką i niską? Czy jest jakaś najlepsza praktyka, aby upewnić się, że nie pieprzysz siebie lub swojego klienta? Po prostu próbuję zorientować się w kilku próbkach tego, co klient może chcieć trzymać w rękach lub zobaczyć na ekranie LCD, aby móc autoryzować prezentowaną pracę i uzgodnić koszt.


title: Architektura dla mockable DAL w dużych projektach

text: Niedawno czytałem artykuł o tworzeniu bloga przy użyciu ASP.NET i MVC, a w artykule użytkownik dzieli warstwę dostępu do danych na oddzielną bibliotekę klas i tworzy w tym celu interfejs, aby umożliwić wyśmiewanie DAL do testowania . Działa to świetnie w przypadku małych projektów, ale nie wiem, jak to się skaluje. Na przykład w artykule otrzymujesz następujący interfejs: public interface IBlogRepository { IList<Objects.Post> Posts(int pageNo, int pageSize); int TotalPosts(bool checkIsPublished = true); IList<Objects.Post> PostsForCategory(string kategoriaSlug, int pageNo, int pageSize); int TotalPostsForCategory(string categorySlug); Obiekty.Kategoria Kategoria(ciąg kategoriaŚlug); IList<Objects.Post> PostsForTag(string tagSlug, int pageNo, int pageSize); int TotalPostsForTag(string tagSlug); Objects.Tag Tag(string tagSlug); IList<Objects.Post> PostsForSearch(ciąg wyszukiwania, int pageNo, int pageSize); int TotalPostsForSearch(wyszukiwanie ciągów); Objects.Post Post(rok int, miesiąc int, string titleSlug); IList<Objects.Category> Categories(); IList<Objects.Tag> Tags(); IList<Objects.Post> Posts(int pageNo, int pageSize, string sortColumn, bool sortByAscending); void AddPost(Obiekty.Post post); } Jest wtedy skojarzony plik .cs z implementacją tego interfejsu. Jak zaimplementowałbyś podobną architekturę do znacznie większego projektu? Na przykład projekt, który mam w pracy, składa się z 25 kontrolerów, z których każdy ma co najmniej listę, dodawanie, edycję, przeglądanie, usuwanie i liczenie. To prowadziłoby do interfejsu z ponad 150 funkcjami. Czy tego rodzaju architektura jest nadal odpowiednia dla większych projektów, a jeśli tak, w jaki sposób byś to ustrukturyzował, aby uniknąć posiadania jednego pliku implementującego ponad 150 funkcji?


title: Czy jest jakaś nadzieja na napisanie dobrego kodu na okropnie zaprojektowanej bazie danych?

text: Oto moja sytuacja. Jeden z kilku programów, które ostatnio odziedziczyłem, jest zbudowany z okropną bazą danych na zapleczu. Szanowni jego twórcy najwyraźniej nie doceniali pojęć relacyjnych. Tabela dla każdego klienta, nazwana unikalnym identyfikatorem klienta. Osiemdziesiąt trzy tajemniczo nazwane pola. Cały kod jest proceduralny z dziesiątkami połączonych instrukcji SQL. Ponieważ nie otrzymaliśmy ważnej aplikacji pomocniczej, która działa na tej samej bazie danych, wyznaczono mi zadanie odtworzenia jej od podstaw. Jestem samodzielnym programistą, co nie jest nawet moim głównym obowiązkiem, ponieważ co najmniej połowę mojego czasu zajmują sprawy operacyjne. Za 30 dni od teraz wyznaczono nieunikniony termin. Pomimo mojego braku doświadczenia, jestem pewien, że mogłem zaprojektować tę bazę danych i istniejącą aplikację znacznie lepiej niż były, ale nie sądzę, aby realistyczna była dla mnie zmiana bazy danych, dostosowanie istniejącej aplikacji i upewnienie się, że to zrobiłem” Nie zepsuć niczego, gdy trzeba tak szybko utworzyć dodatkową aplikację. Załóżmy więc, że utknąłem w okropnej bazie danych. Potrzebując pracy z tak złą strukturą, czy coś, co napiszę, co jest z nią zgodne, po prostu doda do sterty długu technicznego, który należy odłożyć na półkę, dopóki coś się nie zepsuje lub potrzebna jest nowa funkcjonalność? Jak mógłbym podejść do tej sytuacji i uzyskać z niej coś dobrego oprócz, miejmy nadzieję, funkcjonalnej aplikacji? edit: Na wypadek gdyby ktoś był zainteresowany, skończyliśmy ze złomowaniem tej okropnej bazy danych i aplikacji, która na niej działała. Zleciliśmy stworzenie aplikacji pomocniczej (nie brałem udziału w jej konfigurowaniu) ostatecznie dwóm różnym wykonawcom, z których obaj wpadli na nas, nie osiągając niczego. Skończyło się na tym, że w ciągu trzech dni musiałem pospieszyć się z przerażającą, częściowo działającą poprawką, która jest nadal w użyciu.


title: Rozpoczęcie pracy w sektorze finansowym, potrzebne porady

text: Rozpoczęcie pracy w sektorze finansowym w ciągu najbliższych kilku tygodni. Nigdy nie zajmowałem się programowaniem finansowym (pożyczki EG, kredyty hipoteczne itp.). Aby zapoznać się i oswoić z tego rodzaju rzeczami, czy są jakieś biblioteki aplikacji typu open source w C#, które mógłbym przyjrzeć się i poczuć? Jakieś sugestie?


title: Czy istnieje bomba zegarowa w sekwencyjnej alokacji identyfikatora procesu, gdy zawija `unsigned`?

text: Projektuję i wdrażam wieloprocesorowy interpreter postscriptowy ("lekkie" procesy symulowane przez pojedynczy wątek systemu operacyjnego) i muszę generować unikalny identyfikator dla każdego procesu w systemie, a także utrzymywać identyfikatory dla wszystkich martwych procesów, które nadal mieć referencje na żywo. (Źródło: Adobe PLRM, 2ed, Ch. 7 Display PostScript, http://partners.adobe.com/public/developer/en/ps/psrefman.pdf) Zacząłem od prostego przyrostu, który arytmetycznie odwzorowuje indeks tabeli dla danych na proces. http://code.google.com/p/xpost/source/browse/itp.c#115 unsigned nextid = 0; // globalny (plik-statyczny) counter unsigned initctxid(void) { // wygeneruj nowy cid while ( ctxcid(++nextid)->state != 0 ) // .state == 0 oznacza wolny ; zwróć następnyid; } context *ctxcid(unsigned cid) { // pobierz dane kontekstowe z cid return &itpdata.ctab[ (cid-1) % MAXCONTEXT ]; } Ale będzie duży problem, jeśli (kiedy) niepodpisany zostanie zawinięty. Może nie straszne dla gry lub aplikacji, ale to ma być serwer. Ostatecznie. Chciałbym uniknąć pisania (na serio) zastrzeżenia „ostrzeżenie: zaczną mieć dziwne problemy po długim bieganiu”. Powinno więc być dość łatwe do wykrycia, kiedy się zawija, ale co wtedy? Zapłacić kaucję? Tak więc sytuacja/scenariusz do tej pory jest następujący: jesteś wielozadaniowym serwerem postscriptowym z kilkoma procesami z cidami przydzielonymi podczas jednej _epoki_ generatora, a epoka właśnie się zmieniła. Moją myślą (nie niemożliwą, po prostu wydaje się bardzo trudną) jest _skompaktowanie_ istniejących identyfikatorów do zakresu _0..N_ (przepisanie wszystkich odwołań, w razie potrzeby przeskanowanie całej pamięci) i zresetowanie `nextid` do N. Ale to będzie kłopotliwe -w-typie. Czy istnieje inny sposób generowania tych identyfikatorów, żebym nie musiał robić na nich wielkiego wyrzucania śmieci i żeby to działało, wiecie, _nieustannie_? Edycja: Fakt, o którym zapomniałem wspomnieć, to fakt, że odniesienie Display PostScript mówi, że identyfikatory nie są ponownie używane podczas działającej instancji systemu. Ale ponieważ te identyfikatory nie są ujawniane, nie można ich zapisać w żadnej innej formie niż obiekt kontekstu. Tak więc ponowne użycie powinno być w porządku, o ile żaden działający proces nie może o tym wiedzieć (zawiera stary obiekt kontekstu w dostępnej pamięci).


title: Sugestia projektowa wymagana do utworzenia wtyczki Export

text: Próbuję stworzyć moduł eksportu dla naszej aplikacji, wydaje mi się to nieco skomplikowane, więc zamieszczam go tutaj, aby uzyskać kilka wskazówek. W naszej bazie posiadamy listę Produktów, którą można wyeksportować w formacie XML, RTF lub PDF Użytkownik może wybrać z listy jeden lub wiele produktów do eksportu. Po wybraniu produktu(ów) jest prezentowana lista typu eksportu (XML, RTF, PDF) oraz lista połączeń (dokąd wysłać te pliki eksportu), takich jak FTP, HTTP, e-mail itp., których szczegóły są już skonfigurowane. A ten eksport jest używany dla wielu różnych użytkowników, którzy mają różne potrzeby. Na przykład Użytkownik1 potrzebuje tylko Opisu, Użytkownik2 potrzebuje Opisu+Miniatury itp. Czy powinienem utworzyć dla typu eksportu (XML, RTF, PDF) klasę Manager? a For Connections również klasę Manager? A dla różnych użytkowników, czy powinienem utworzyć interfejs?


title: Dlaczego w C++ nie ma konstrukcji „w końcu”?

text: Obsługa wyjątków w C++ ogranicza się do try/throw/catch. W przeciwieństwie do Object Pascal, Java, C# i Pythona, nawet w C++ 11, konstrukcja `finally` nie została zaimplementowana. Widziałem strasznie dużo literatury C++ omawiającej "bezpieczny kod wyjątków". Lippman pisze, że bezpieczny kod wyjątków jest ważnym, ale zaawansowanym i trudnym tematem, wykraczającym poza zakres jego Elementarza - co wydaje się sugerować, że bezpieczny kod nie jest podstawą C++! Herb Sutter poświęca temu tematowi 10 rozdziałów w swoim Exceptional C++ ! Wydaje mi się jednak, że wiele problemów napotykanych podczas próby napisania „kodu bezpiecznego dla wyjątków” można by całkiem nieźle rozwiązać, gdyby zaimplementowano konstrukcję `finally`, pozwalającą programiście na zapewnienie, że nawet w przypadku wystąpienia wyjątku można przywrócić do bezpiecznego, stabilnego, wolnego od wycieków stanu, blisko miejsca alokacji zasobów i potencjalnie problematycznego kodu. Jako bardzo doświadczony programista Delphi i C# używam try.. ostatecznie blokuje dość obszernie w moim kodzie, podobnie jak większość programistów w tych językach. Biorąc pod uwagę wszystkie „dzwonki i gwizdki” zaimplementowane w C++ 11, byłem zdumiony, że „wreszcie” nadal tam nie było. Dlaczego więc konstrukcja `finally` nigdy nie została zaimplementowana w C++? To naprawdę nie jest bardzo trudna ani zaawansowana koncepcja do zrozumienia i pomaga programiście napisać „bezpieczny kod wyjątków”.


title: Czy poleganie na niejawnej konwersji argumentów jest uważane za niebezpieczne?

text: C++ ma funkcję (nie potrafię wymyślić właściwej jej nazwy), która automatycznie wywołuje pasujące konstruktory typów parametrów, jeśli typy argumentów nie są oczekiwane. Bardzo prostym przykładem tego jest wywołanie funkcji, która oczekuje `std::string` z argumentem `const char*`. Kompilator automatycznie wygeneruje kod wywołujący odpowiedni konstruktor `std::string`. Zastanawiam się, czy jest tak źle dla czytelności, jak mi się wydaje? Oto przykład: class Texture { public: Texture(const std::string& imageFile); }; class Renderer { public: void Draw(const Texture& texture); }; Renderer renderujący; std::string path = "foo.png"; renderer.Rysuj(ścieżka); Czy to w porządku? Czy to posuwa się za daleko? Jeśli nie powinienem tego robić, czy mogę jakoś ostrzec Clang lub GCC?


Mam nadzieję, że to pytanie dostarczy ciekawych odpowiedzi, ponieważ od jakiegoś czasu mnie denerwuje. **Czy istnieje jakaś rzeczywista wartość w testowaniu jednostkowym kontrolera w ASP.NET MVC?** Mam na myśli to, że przez większość czasu (i nie jestem geniuszem) moje metody kontrolera są, nawet w ich najwyższym złóż coś takiego: public ActionResult Create(MyModel model) { // start listy błędów var errors = new List<string>(); // sprawdź stan modelu na podstawie adnotacji danych if(ModelState.IsValid) { // wywołaj metodę usługi if(this._myService.CreateNew(model, Request.UserHostAddress, błędy ref)) { // wszystko jest w porządku, dane są zapisywane , // więc powiedz użytkownikowi, że jest genialny return View("_Success"); } } // dodaj błędy do błędów stanu modelu.ForEach(e => ModelState.AddModelError("", e)); // powrót widok return View(model); } Większość zadań jest wykonywana przez potok MVC lub moją bibliotekę usług. Więc może pytania, które można zadać, mogą brzmieć: * jaka byłaby wartość testowania jednostkowego tej metody? * czy nie zostanie przerwane na `Request.UserHostAddress` i `ModelState` z NullReferenceException? Czy powinienem próbować z nich kpić? * jeśli przekształcę tę metodę w „pomocnika” wielokrotnego użytku (co prawdopodobnie powinienem, biorąc pod uwagę, ile razy to robię!), czy testowanie byłoby nawet warte zachodu, gdy tak naprawdę testuję głównie „rurociąg”, który , przypuszczalnie, został przetestowany przez Microsoft z dokładnością do centymetra? Myślę, że moim zdaniem **naprawdę** jest to, że wykonanie następujących czynności wydaje się całkowicie bezcelowe i złe [TestMethod] public void Test_Home_Index() { var controller = new HomeController(); var oczekiwana = "Indeks"; var rzeczywista = ((ViewResult)kontroler.Index()).ViewName; Assert.AreEqual(oczekiwane, rzeczywiste); } Oczywiście jestem tępy z tym przesadnie bezsensownym przykładem, ale czy ktoś ma tu jakąś mądrość do dodania? Nie mogę się doczekać... Dzięki.


title: Czy mogę ustawić IMEI wirtualnego urządzenia blustacks?

text: Korzystając z aplikacji „Get My IMEI”, udało mi się odzyskać nieprawidłowy numer IMEI dla mojego emulatora bluestack, ale nie widzę, jak mogę go zmienić. Ludzie z forum deweloperów XDA rozmawiają o tym, ale to stary post, więc chciałem wiedzieć, czy jest to możliwe teraz? Tworzę aplikację, która używa walidacji IMEI, a bluestack jest urządzeniem, którego używam do programowania w Eclipse. Jest o wiele szybszy niż normalna metoda i nie muszę śledzić zainstalowanej wersji apk ani jej czyścić, tak jak zrobiłbym to, gdybym używał mojego fizycznego urządzenia. Jeżeli IMEI urządzenia jest już zapisany w bazie to nie mam problemu. Problem polega na tym, że gdy muszę zarejestrować urządzenie w serwisie (front-end) potrzebuję prawidłowego IMEI. Wiem, że IMEI można sfałszować, tak jak adres mac lub IP, ale to tylko dodatkowa funkcja bezpieczeństwa, która jest dodawana. * * * _To samo pytanie zadałem na Stack Overflow, ale chłopaki nie sądzili, że ma to coś wspólnego z programowaniem. Więc dodałem kontekst tego, co próbuję zrobić, więc w tym momencie nie wiem nawet, czy pytanie zostało odrzucone, ponieważ wspomniałem o XDA._


title: Co oznacza wujek Bob, mówiąc „nazwy fraz rzeczownikowych”?

text: Czytam _Clean Code_ autorstwa wujka Boba. Ponieważ nie jestem native speakerem, nie mogłem zrozumieć następującego stwierdzenia: > Klasy i obiekty powinny mieć nazwy fraz rzeczownikowych lub rzeczownikowych, takich jak `Klient`, > `WikiPage`, `Account` i `AddressParser`. Unikaj słów takich jak „Menedżer”, > „Procesor”, „Dane” lub „Informacje” w nazwie klasy. Nazwa klasy nie powinna > być czasownikiem. Jak wiem, żaden z `Menedżer`, `Procesor`, `Data` i `Info` nie jest czasownikiem, prawda? Jaki jest rzeczywisty punkt, który chce podkreślić?


title: Różnica między wykonywaniem „równoległym” a „równoległym”?

text: Jaka jest różnica między terminami wykonywanie _współbieżne_ i _równoległe_? Nigdy nie byłem w stanie pojąć rozróżnienia. Tag definiuje współbieżność jako sposób uruchamiania dwóch procesów jednocześnie, ale myślałem, że równoległość to dokładnie to samo, tj.: oddzielne wątki lub procesy, które potencjalnie mogą być uruchamiane na osobnych procesorach. Ponadto, jeśli rozważymy coś takiego jak asynchroniczne we/wy, czy mamy do czynienia ze współbieżnością czy równoległością?


title: Czy Java ma wbudowaną metodę określania, czy identyfikator jest legalny?

text: Na przykład nazwanie zmiennej lub klasy musi być zgodne z pewnymi regułami (takimi jak nie zezwalanie na słowa kluczowe lub słowa zastrzeżone jako identyfikatory). Naprawdę nie chcę kodować własnej metody, aby zrobić coś takiego. Czy Java ma już coś wbudowanego? Moim celem jest budowanie konstruktora wyrażeń / generatora kodu. Rozpoznaje zmienne określone przez użytkownika i muszą one respektować reguły identyfikatorów java, w przeciwnym razie użytkownik otrzyma ostrzeżenie, aby zmienić nazwę swojej zmiennej.


title: Tworzenie aplikacji mobilnych – sugestie dotyczące wyboru platformy

text: Planuję zbudować aplikację mobilną (aplikację opartą na edytorze tekstu) do użytku głównie z moim urządzeniem z systemem Symbian. Mam w planach, aby to było również komercyjne, kiedy już zostanie ukończone. Teraz strona producenta (NOKIA) wymienia kilka opcji rozwoju aplikacji mobilnych - java, natywna platforma dla symbiana (przy użyciu c) i QT. Mam świadomość aspektów skalowania i rozbudowy aplikacji na inne platformy. Android zwiększa swój udział w rynku jak cokolwiek innego, symbian też traci. Również jeśli potrzebuję uzyskać specyficzne funkcje platformy (powiedzmy czytanie listy kontaktów lub wysyłanie sms), powinienem narażać przenośność. Nie udało mi się znaleźć żadnych porównań między tymi aspektami przenośności a cechami charakterystycznymi dla platformy. Jeśli wybrałbym javę, myślę, że mógłbym łatwo przenieść moją aplikację na Androida / iPhone'a i uczynić ją komercyjną. Nie mam pojęcia, jak przenośna może być platforma QT. Nie chcę kierować się sugestiami Nokii, ponieważ wątpię, czy są one stronnicze w stosunku do swoich produktów (nawet jeśli zapewniają doskonałe wsparcie dla programistów) Muszę zacząć uczyć się od początku, niezależnie od wybranej platformy (oprócz języków) Proszę o poradę, jeśli założyłem, że coś jest nie tak, a twoja opinia na temat przenośności w porównaniu z funkcjami platformy. Dzięki, Abhi


title: Funkcje pierwszej klasy

text: Zacząłem poważnie przyglądać się Lispowi w ten weekend (przez co mam na myśli tylko naukę Lispa i nie wracam do projektów w C#) i muszę powiedzieć, że to uwielbiam. Bawiłem się innymi językami funkcjonalnymi (F#, Haskell, Erlang), ale nie poczułem przyciągania, jakie dał mi Lisp. Teraz, gdy nadal uczę się Lispa, zacząłem się zastanawiać, dlaczego języki niefunkcjonalne nie obsługują funkcji pierwszej klasy. Wiem, że języki takie jak C# mogą robić podobne rzeczy z delegatami i do pewnego stopnia można używać wskaźników do funkcji w C/C++, ale czy istnieje powód, dla którego nigdy nie stanie się to funkcją w tych językach? Czy jest jakaś wada tworzenia funkcji pierwszej klasy? Dla mnie jest to niezwykle przydatne, więc gubię się w tym, dlaczego więcej języków (poza paradygmatem funkcjonalnym) go nie implementuje. [Edytuj] Doceniam dotychczasowe odpowiedzi. Ponieważ pokazano mi, że wiele języków obsługuje teraz funkcje pierwszej klasy, przeformułuję pytanie, dlaczego implementacja ich w językach zajmuje tak dużo czasu? [/Edytować]


title: Co jest lepsze dla użytkownika: czekanie raz przy starcie przez długi czas czy częste czekanie przez krótki czas?

text: Obecnie projektuję aplikację, która wymaga wielu obliczeń. Teraz mam generalnie dwie możliwości, które obie przetestowałem: 1) Podczas uruchamiania aplikacji obliczyłem tylko najważniejsze wartości i te wartości, które zajmują dużo czasu. Tak więc użytkownik musi odczekać około 15 sekund podczas uruchamiania. Ale z drugiej strony wiele interakcji z użytkownikiem wymaga przeliczenia tak, że często po kliknięciu gdzieś trzeba czekać 2-3 sekundy, aż aplikacja obliczy i załaduje wszystkie wartości 2) Ładuję wszystko podczas startu. Trwa to od 90 do 120 sekund... To dość długo, ale dużą zaletą jest to, że wszystkie interakcje użytkownika są wykonywane natychmiast. Więc co ogólnie uważasz za lepsze podejście? Ładowanie wszystkich czasochłonnych operacji podczas uruchamiania lub w razie potrzeby?


title: Jaka jest różnica między „dobrymi” projektantami a „wielkimi” projektantami?

text: Czytając ten artykuł w Wikipedii, Brookes powiedział, że istnieje różnica między „dobrymi” i „wielkimi” projektantami. Jaka jest różnica między nimi? Jak mogę zdecydować, czy projektant jest dobry czy świetny?


title: Technologia dostępu do danych .net

text: Jestem nowy w technologii .Net i potrzebuję pomocy w wyborze właściwej ścieżki tworzenia aplikacji. Chcę stworzyć aplikację, która pobiera swoje dane z usługi sieciowej i małą część z lokalnej bazy danych SQLCE. Głównie mam problemy z dostępem do bazy danych oraz z czystym dostępem do bazy danych w kodzie. Jaką technologię .Net powinienem wybrać, aby osiągnąć to w dobry sposób z czystym i łatwym w utrzymaniu kodem.


title: Jaki język i tematy powinny być omawiane podczas uczenia studentów nie posiadających CS, jak programować?

text: Wielu moich przyjaciół, którzy nie zajmują się informatyką, prosiło mnie o nauczenie ich programowania. Zgodziłem się poprowadzić dla nich seminarium, które potrwa około 1 do 2 godzin. Myślę, że użyję Pythona jako języka, aby nauczyć ich podstawowych umiejętności programowania. Doszedłem do wniosku, że Python jest stosunkowo łatwiejszy do nauczenia z tego, co zbadałem. Jest to również język, którego chcę się nauczyć, co sprawi, że prowadzenie tego seminarium będzie jeszcze przyjemniejsze. Zamierzam poruszyć następujące tematy: 1. Zmienne / Tablice 2. Logika - instrukcje If else, switch case, instrukcje zagnieżdżone 3. Pętle - for, while, do-while i zagnieżdżone pętle 4. Funkcje - przekazuj według wartości, przekazać przez odniesienie (czy to poprawne terminy dla Pythona? Jestem głównie osobą C/C++) 5. Programowanie obiektowe Oczywiście planuję mieć przykłady kodu dla wszystkich tematów i postaram się, aby każdy przykład przechodził do siebie aby na koniec seminarium każdy miał pełny program pracy. Przypuszczam, że moje pytanie brzmi: jeśli miałbyś od 1 do 2 godzin na nauczenie grupy studentów, jak programować, jaki język byś wybrał i jakie tematy byś omówił? Aktualizacja: Dziękujemy za wspaniałą opinię. Powinienem był wspomnieć we wcześniejszym poście powyżej, że większość studentów uczestniczących w seminarium ma jakąś formę doświadczenia programistycznego, czy to w Javie, czy w Matlabie. Większość z tych studentów to studenci trzeciego i czwartego roku inżynierii, którzy chcą odświeżyć wiedzę z programowania przed ukończeniem studiów.


title: Czy podejście zwinne wspiera odebranie zadania od zespołu?

text: Czy klient może wziąć jedno z zadań podczas spotkania planistycznego, które było już przypisane temu zespołowi, i przekazać je innemu zespołowi? Na przykład dlatego, że klient uważa, że drugi zespół szybciej go wdroży? Czy to normalne w przypadku niektórych zwinnych metodologii? Jeśli tak, czy mógłbyś podać mi źródło tej informacji (książka lub link na stronie), ponieważ nie wiem, jak sobie z tym poradzić, zwłaszcza ze względu na ducha zespołu: takie rzeczy mogą zdemotywować ludzi w zespole, a także pomiędzy tymi dwoma zespołami mogą powstać pewne czasy... Jest to część metodyki zwinnej i jakie są ograniczenia, aby to zrobić?


title: Wycofaj się z mojej „Edukacji”

text: Jakiś czas temu postanowiłem zacząć programować. Naprawdę, po prostu wskoczyłem do języka (Perl) i stamtąd wyszedłem. Żałuję, że po prostu wskoczyłem: nie nauczyłem się podstaw (jeśli można je nazwać podstawami). Nie uczyłem się informatyki. Uważam, że ta kwestia powstrzymuje mnie przed moim prawdziwym potencjałem. Gdzie powinienem „zrestartować”? Czy są jakieś książki, artykuły itp., które powinienem przeczytać? Czy są jakieś tematy, które powinien znać doświadczony programista? Jaka jest twoja rada?


title: Jak przygotować się do testu „umiejętność programowania”?

text: Mam jutro rozmowę kwalifikacyjną na stanowisko junior web developera. Jestem tym bardzo podekscytowany, ponieważ naprawdę chcę postawić stopę w drzwiach w tej branży. Powiedziano mi, jak przebiegnie rozmowa kwalifikacyjna. Będzie się składać z 45-minutowego wywiadu z dwoma ich programistami oraz testu „umiejętności programowania”. Bardzo martwi mnie test „umiejętność programowania”. Pytania, z którymi mam nadzieję, że społeczność stosu może mi pomóc, to: 1. Co to właściwie jest? (o ile rozumiem, jest to test pisemny z użyciem fikcyjnego języka programowania). 2. Jeśli robiłeś to już wcześniej, jako ankieter lub rozmówca, czy możesz dać mi jakieś rady, wskazówki lub pomoc? 3. Czy są jakieś źródła internetowe, które mogą w tym pomóc, tj. blogi, strony internetowe, miejsca, w których mogę poćwiczyć kilka online?


title: Pusta nadklasa dla kolekcji klas pochodnych

text: Zasadniczo to, co chciałbym uzyskać, to sposób na iterację przez JEDNĄ listę i wywoływanie metod specyficznych dla interfejsu, który implementują obiekty w kolekcji. W moim projekcie Java dałoby to coś takiego: //GameComponent byłoby moją pustą klasą abstrakcyjną HashSet<GameComponent> components = new HashSet<GameComponent>(); components.add(/* instancja klasy, która rozszerza GameComponent i implementuje Drawable || Updateable */); for (drawable d : komponenty) d.draw(); for (Aktualizowane u : komponenty) u.update(); Moi znajomi zasugerowali mi, abym po prostu stworzył dwie oddzielne listy, ale to oznacza, że niektóre obiekty znajdą się na obu listach. Myślę też, że sensowne jest (z punktu widzenia abstrakcji) posiadanie jednej listy GameComponents i iterowanie przez tę jedną listę. Ale też nie lubię mieć pustej klasy do dziedziczenia, tylko do kategoryzacji. Więc pytanie brzmi: czy moje podejście ma sens? Jeśli tak, to czy jest eleganckie? Jeśli nie, to jakim wzorem mógłbym się kierować?


title: W jaki sposób można bezpiecznie i prywatnie rozwiązać problemy związane z bezpieczeństwem w kodzie?

text: Niedawno skończyłem praktykę, do której rozpaczliwie potrzebuję rekomendacji. Jednak kiedy pracowałem nad kodem dla publicznego portalu internetowego, zauważyłem wiele możliwości wstrzykiwania sql i innych rzeczy. Martwi mnie całkowita ignorancja osoby zarządzającej kodem. Napisał większość kodu i jest całkowicie nieświadomy tego, do czego ma służyć SQL. W ten sposób nie wie też, jak właściwie zabezpieczyć się przed wstrzyknięciem SQL i tym podobnymi. Pracując dla danej osoby, starałem się skierować ją we właściwym kierunku, by patrzeć i widzieć, jak zepsuty jest system. Ale naprawdę potrzebuję dobrej rekomendacji do pracy i nie chciałem go denerwować. Biuro jest również bardzo zwartym biurem i nie było nikogo, kto mógłby zrozumieć poważną potrzebę przeglądu kodu. Uważam, że ten problem należy rozwiązać, ponieważ system był przeznaczony dla okręgu szkolnego do zarządzania rekordami uczniów bardzo osobistymi rekordami uczniów. My (twórcy, w tym inny uczeń) mieliśmy dostęp do klonu bazy danych na żywo do celów testowych i tam mój młodszy brat ma zapisać się do tego okręgu szkolnego w przyszłym roku. Główny programista jest dość dobry w programowaniu, ale z powodu braku zrozumienia SQL i relacyjnych baz danych, system zostanie wykorzystany i najprawdopodobniej w ciągu następnego roku, ponieważ będzie wdrażany w całym regionie. Naprawdę czuję, że powinienem był komuś coś powiedzieć. :( Poza zadzwonieniem do przełożonego i poproszeniem go o zrobienie czegoś, co mogę legalnie zrobić. Czy mogę zadzwonić do RCMP (jestem Kanadyjczykiem) i poprosić ich o zbadanie sprawy (wiem, że to głupie, ale to graniczy z zaniedbaniem kryminalnym).


title: Czy powinienem uzyskać certyfikat architektury zorientowanej na usługi?

text: W moim miejscu pracy mamy wiele aplikacji, które wydają się współdziałać w sposób raczej doraźny, przypadkowy i czuję, że muszę lepiej zrozumieć integrację systemu. Obecnie zastanawiam się, czy zrobić certyfikat SOA School Profesional Certification. Certyfikaty są dobrze rozpoznawane, ale z tego, co o nich przeczytałem, obawiam się, że nawet po zdaniu egzaminów nie będę w stanie wdrożyć tego, czego się nauczyłem, lub że informacje te nie będą bardzo przydatne w mojej codziennej pracy programisty. To wszystko wydaje się zbyt teoretyczne. Czy przyda mi się to w praktyce? Słyszałem też, że 150-stronicowa broszura, która kosztuje 300 dolarów, nie wystarczy, aby przygotować Cię do egzaminu. Czy to jest poprawne? **Edytuj** Tak naprawdę sprowadza się to do tego, czy SOA naprawdę będzie odpowiedzią na moje problemy z integracją. W tej chwili wydaje się, że jest to de facto odpowiedź.


title: Czy możliwe jest, aby dwie biblioteki DLL były w konflikcie, uniemożliwiając budowanie rozwiązania?

text: Chociaż mam konkretny przypadek, ale zastanawiałem się nad ogólną sytuacją. Czy dwie biblioteki DLL po dodaniu jako odwołanie do projektu Visual C# mogą kolidować ze sobą, aby zapobiec kompilacji rozwiązania? Jeśli tak jest, jakie są możliwe sposoby na złagodzenie tego.


title: Jakie są wysokiej jakości konferencje lub szkolenia z zakresu architektury korporacyjnej?

text: Poszukuję konferencji lub szkolenia, które dadzą mi szeroką ekspozycję na architekturę oprogramowania na poziomie korporacyjnym. Pracuję w tej samej firmie od 10 lat i rozrosliśmy się do rozmiarów, w których naprawdę musimy stworzyć ramy dla aplikacji wspierających działalność naszej firmy. Rozwój organiczny w ciągu ostatnich 10 lat pozostawił nam ściśle powiązany i dość niechlujny zestaw zastosowań. Musimy wykonać lepszą pracę przy komponowaniu naszych podmiotów gospodarczych i mieć bardziej rygorystyczną kontrolę nad interfejsami między tymi podmiotami a naszymi procesami biznesowymi. Chcę uzyskać szeroką, ale praktyczną ekspozycję na wzorce projektowe wspierające tę architekturę (SOA, przesyłanie wiadomości, ESB itp.). Mam nadzieję, że uzyskam wgląd od osób, które mają bezpośrednie doświadczenie we wdrażaniu lub pracy z architekturą klasy korporacyjnej.


title: Jak dostać się do strefy? Jak dużo czasu to zajmuje? Jakie kroki podejmujesz wcześniej?

text: Wejście do strefy to przyjemny i owocny proces. Tworzymy dobry kod źródłowy i czerpiemy satysfakcję z naszej pracy w strefie. Ale jak dostać się do „strefy”? Czy przestrzegasz określonego procesu? Czy oprócz zmiany systemu poczty elektronicznej, telefonów komórkowych i innych przyziemnych, nieproduktywnych aplikacji można zrobić coś jeszcze?


title: Jak podzielić pracę między członków zespołu programistycznego w projekcie strony internetowej za pomocą wzorca MVC?

text: Pracuję nad projektem webapp przy użyciu flask framework i sqlalchemy orm w Pythonie. Po raz pierwszy pracuję nad takim projektem i mam problem z prawidłowym podziałem pracy pomiędzy moich kolegów z zespołu. Jest nas 5 facetów, jeden zajmuje się projektowaniem, dwóch frontendowych i dwóch backendowych. Jestem na zapleczu. Kolba podąża za wzorcem typu MVC. Jak zespoły dzielą pracę we wzorcu MVC? Co więcej, jestem bardziej zdezorientowany w dzieleniu pracy z kolegą z zespołu w backendzie. Czy jeden powinien obsłużyć wszystkie zapytania do bazy danych, a drugi przetworzyć te zwrócone wyniki? Potrzebujesz porady na temat podziału pracy w projektach internetowych.


title: Dlaczego nie ma tutaj składni dokumentu w .Net?

text: * Czy uważa się to za złą formę? Może promuje nieoddzielny model/widok? * Czy to nieefektywne? * Czy to po prostu zostało pominięte? Wydaje mi się, że każdy język ma cechy, o które chcieliby niektórzy programiści, a nie każdy język może mieć wszystko. Po prostu zawsze uważałem, że ta funkcja jest bardzo przydatna. Dlaczego .Net nie ma składni dokumentu tutaj?


title: Jak można zminimalizować lub zapobiec procesom sądowym Użytkowników?

text: Pracuję w wielu narzędziach, które robią rzeczy z komputerami klientów. Niektóre z tych narzędzi umożliwiają tworzenie skryptów, co pozwala komuś na uruchomienie skryptu w celu zniszczenia plików, kluczy rejestru lub tym podobnych. Oczywiście, jeśli skrypt jest zły lub jeśli w narzędziu jest poważny błąd, może to spowodować uszkodzenie systemu danej osoby. Obawiam się, że użytkownik może się... złościć... na mnie, jeśli coś pójdzie nie tak. Jak zminimalizować prawdopodobieństwo pozwania w wyniku opublikowania takiego narzędzia?


title: Dodawanie do systemu dynamicznej logiki biznesowej/kontroli procesów biznesowych

text: Zastanawiam się, czy istnieje dobry istniejący wzorzec (językiem tutaj jest Python/Django, ale również zainteresowany na bardziej abstrakcyjnym poziomie) do tworzenia warstwy logiki biznesowej, którą można stworzyć bez kodowania. Załóżmy na przykład, że wynajem domu powinien być dostępny tylko w określonym czasie. Programista może utworzyć następującą klasę: z reguł importu bizlogic, LogicRule z orders.models import Klasa zamówienia BeachHouseAvailable(LogicRule): def check(self, reservation): house = reservation.house_reserved jeśli nie (house.earliest_available < reservation.starts < house.latest_available ) raise RuleViolationWhen("Dom na plaży jest dostępny tylko między %s a %s" % (house.earliest_available, house.latest_available)) return True rules.add(Order, BeachHouseAvailable, name="BeachHouse Available") To jest dobrze, ale nie chcę pisać czegoś takiego za każdym razem, gdy potrzebna jest nowa reguła. Chciałbym stworzyć coś dynamicznego, najlepiej coś, co można przechowywać w bazie danych. Chodzi o to, że musiałaby być na tyle elastyczna, aby obejmowała szeroką gamę reguł: * unikanie duplikatów/nakładek (kontynuując przykład „Masz już rezerwację na ten czas/lokalizację”) * reguły logiczne („Możesz” t wynająć dom dla siebie”, „Ten dom znajduje się w innym miejscu niż wybrane przez Ciebie miejsce docelowe”) * testy zdrowia psychicznego („Ustawiłeś cenę wynajmu 10 razy wyższą od normalnej. Czy jesteś pewien, że to właściwa cena?” Takie rzeczy Zanim odtworzę koło, zastanawiam się, czy istnieją już metody na zrobienie czegoś takiego.


title: Stopień licencjata informatyki online?

text: Czy ktoś zna dobry internetowy program studiów licencjackich z informatyki? Moja dziewczyna prawie skończyła studia magisterskie z pielęgniarstwa online w Vanderbilt. Wszystkie jej kursy odbywają się online, prowadzi kliniki w lokalnych szpitalach i prywatnych gabinetach, a co kilka miesięcy leci do Nashville na długi weekend. Szukałem czegoś podobnego dla informatyki, ale wydaje mi się, że mogę znaleźć programy tylko w szkołach oszustw. Jeśli możliwe jest uzyskanie poświadczeń, które dadzą ci możliwość zszywania i przepisywania narkotyków online, czy informatyka nie powinna być traktowana w podobny sposób? Tak, zdaję sobie sprawę z konsekwencji społecznych (np. uczelnia to świetne miejsce do poznawania ludzi, rozwoju osobistego itp.). Uczęszczałem do tradycyjnego college'u i miałem około 85 punktów. Trudność polega na tym, że moja firma zaczęła zarabiać pieniądze, więc jestem zbyt zajęty, aby uczęszczać na zaplanowane kursy. Uniwersytet w ogóle by ze mną nie współpracował, więc przestałem chodzić. Widzę wartość w posiadaniu dyplomu i chciałbym skończyć, ale musi to być w moim czasie.


title: Jak zdefiniować węzeł i krawędź, gdy mówimy o złożoności McCabesa?

text: Próbuję zrozumieć wzór, ale mam trochę wątpliwości, jak dokładnie definiujesz krawędzie i węzły. Krawędzie wydają się być każdym możliwym wyjściem z instrukcji, a węzły wydają się być instrukcjami, czy ta definicja jest błędna?


title: Jakie są niebezpieczne zakątki Qt?

text: Pod słońcem nie ma nic idealnego. Qt nie jest wyjątkiem i ma ograniczenia: nie możemy używać piksmapów w wątku innym niż GUI, nie możemy używać QImage z formatem obrazu 16-bit-per-channel, itp. Jakie sytuacje zmusiły Cię do zepsuć projekt z powodu ograniczeń Qt? Jakie są najbardziej znienawidzone dziwactwa? **Jakich decyzji projektowych należy unikać, korzystając z Qt w swoich projektach?**


title: Framework siatki dla CSS

text: Widzę, że istnieje duża liczba frameworków gridowych w CSS, takich jak 960, heroku grid itp., używanych przez ogromne strony internetowe. Chcę wiedzieć, czy użycie struktury siatki jest naprawdę przydatne? Jeśli tak, to w jaki sposób? Jednym z największych problemów, jakie widziałem z siatką, jest **równe wysokości elementów**. Jeśli używamy trzech siatek, takich jak `grid_2`, `grid_7`, `grid_3` dla 3 pionowych paneli, bardzo trudno jest ustawić te trzy panele w taki sposób, aby miały równą wysokość i wszystkie zmieniały wysokość, gdy jakikolwiek treści rozwija się lub zwija. Dzieje się tak, ponieważ elementy unoszą się w układzie siatki i nie zmieniają wysokości wraz z sąsiednim elementem.


title: Zrozumienie abstrakcyjnych typów danych (ADT)

text: Po prostu przeglądając Code Complete zeszłej nocy, natknąłem się na wyjaśnienie abstrakcyjnych typów danych. Musiałem to przeczytać 5 razy, a artykuł na Wikipedii też nie pomaga. Więc to, czego szukam, to proste wyjaśnienie dokładnie **co to jest abstrakcyjny typ danych**? Jakieś solidne przykłady? W C# czy VB? Rozumiem, że String ma być jednym, dlaczego tak jest? A dlaczego Int32 nie jest jednym? Albo to jest? Wszelkie wskazówki są mile widziane.


title: Jaki jest dobry sposób śledzenia ciągów do wyszukiwania słowników?

text: Pracuję nad samouczkiem aplikacji Windows 8. Mają trochę kodu na temat zapisywania danych aplikacji, takich jak: private void NameInput_TextChanged(object sender, TextChangedEventArgs e) { Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; roamingSettings.Values["nazwa_użytkownika"] = nameInput.Text; } Pracowałem z C# w przeszłości i odkryłem, że takie rzeczy jak używanie stałych wartości ciągów (takich jak "userName" w tym przypadku) dla kluczy mogą się bałaganić, ponieważ autouzupełnianie nie działało i łatwo było zapomnieć, jeśli zrobiłem wpis dla ustawienia przed i jak to się nazywało. Więc jeśli nie dotknę kodu przez jakiś czas, przypadkowo stworzę wiele wpisów dla tej samej wartości, które są nazwane nieco inaczej. Z pewnością istnieje lepszy sposób na śledzenie ciągów, które są kluczem do tych wartości. Jakie jest dobre rozwiązanie tego problemu?


title: jakie są dobre pytania do rozmowy kwalifikacyjnej na stanowisko, które polega na przeglądaniu kodu pod kątem luk w zabezpieczeniach?

text: Pozycja jest pozycją podstawową, która polega na odczytywaniu kodu C++ i identyfikowaniu linii kodu, które są podatne na przepełnienia bufora, odczyty poza granicami, niekontrolowane łańcuchy formatujące i kilka innych CWE. Nie oczekujemy, że przeciętny kandydat będzie posiadał wiedzę w dziedzinie bezpieczeństwa oprogramowania, ani nie oczekujemy, że będzie on ekspertem w zakresie programowania komputerowego; oczekujemy tylko, że będą w stanie odczytać kod i poprawnie zidentyfikować luki w zabezpieczeniach. Myślę, że mógłbym zadać im typowe pytania podczas rozmowy kwalifikacyjnej: odwrócić ciąg znaków, wydrukować listę liczb pierwszych itp., ale nie jestem pewien, czy ich umiejętność pisania kodu pod presją (lub jej brak) mówi mi cokolwiek o ich zdolności do przeczytaj kod. Czy zamiast tego powinienem skupić się na testowaniu ich wiedzy o C++? Zapytaj ich, czy rozumieją, czym jest wskaźnik i jak działają operatory bitowe? Moją jedyną obawą przed zadawaniem tego rodzaju pytań jest to, że mogę niesprawiedliwie wyeliminować ludzi, którzy przypadkiem nie mają wiedzy, ale mają zdolność jej przyswajania. W końcu to nie jest tak, że będą pisać jedną linijkę kodu i nie szukamy tylko osób, które już znają C++, ponieważ jesteśmy gotowi wyszkolić odpowiedniego kandydata. (To prawda, że mógłbym zadać te pytania tylko tym kandydatom, którzy twierdzą, że znają C++, ale chciałbym dać ten sam „test” wszystkim). inteligencja? Innymi słowy, czy powinienem skłonić ich do mówienia i zwracania uwagi na sposób, w jaki wyrażają swoje myśli i tak dalej?


title: Jak ważne jest, aby programista wiedział, jak zaimplementować algorytm QuickSort/MergeSort z pamięci?

text: Przeglądałem swoje notatki i natknąłem się na implementację różnych algorytmów sortowania. Kiedy próbowałem zrozumieć implementację QuickSort i MergeSort, przyszło mi do głowy, że chociaż programuję na co dzień i uważam się za porządnego w tym, co robię, nie mam ani pamięci fotograficznej, ani czystej mocy umysłowej, aby wdrożyć te algorytmy bez opierając się na moich notatkach. Zapamiętałem tylko to, że niektóre z tych algorytmów są stabilne, a inne nie. Niektóre wymagają czasu O(nlog(n)) lub O(n^2). Niektórzy używają więcej pamięci niż inni... Czułbym się, jakbym nie zasługiwał na taką pracę, gdyby tak nie było, ponieważ moja pozycja nie wymaga używania jakiegokolwiek algorytmu sortowania innego niż te, które można znaleźć w standardowych interfejsach API. Chodzi mi o to, jak wielu z was zajmuje stanowisko programistyczne, na którym tak naprawdę ważne jest, abyście sami pamiętali lub wymyślali tego rodzaju rzeczy?


title: Tworzenie wystąpień interfejsów w C#?

text: W tej chwili czytam/uczę się o interfejsach w C# i do tej pory udało mi się zrozumieć, czym różni się od klasy abstrakcyjnej. W książce, którą czytam, autor wyjaśnia, że interfejsy są ostateczną klasą abstrakcyjną i że po prostu wyznacza standard pewnych metod, jakie będą miały klasy dziedziczące, ale następnie podaje następujący przykład. static void Main(string[] args) { ... Circle c = new Circle("Lisa"); IPointy itPt = null; spróbuj { itPt = (IPointy) c; Konsola.WriteLine.(itPt.Points); } catch (InvalidCastException e) { Console.WriteLine(e.Message); } ... } Wiersz, który absolutnie mnie zniechęca, to `IPointy itfPt=null;` czy właśnie zadeklarował interfejs? Myślałem, że interfejsy są abstrakcyjne i można je tylko dziedziczyć? Jaki rodzaj czarów się tu dzieje?


title: Jak strona internetowa może wyglądać inaczej w safari Windows i Safari na Macu?

text: Mam stronę internetową. Testowałem crossbrowser na moim komputerze z systemem Windows i wygląda dobrze we wszystkich przeglądarkach, ale na Macu w Safari wygląda na to, że CSS nie jest poprawnie interpretowany lub wystąpił krytyczny błąd javascript. Kiedy patrzę na konsolę w różnych przeglądarkach, dziennik błędów pokazuje dokładnie to samo. Chrome na Macu interpretuje witrynę zgodnie z przeznaczeniem, więc dlaczego mam problem z safari? Tak samo jest na różnych komputerach, a safari na iPhonie również pokazuje nieprawidłową witrynę. Jak to możliwe i jak mogę debugować?


title: Czy do generowania kanałów powinniśmy używać RSS czy Atom?

text: Z różnych powodów jesteśmy zobowiązani do dodawania kanałów do naszego produktu. Głównym powodem jest możliwość powiedzenia potencjalnym nabywcom, że „tak, mamy kanały”. W rzeczywistości nie spodziewamy się, że ta funkcja będzie używana tak często. Idealnie chcielibyśmy udostępnić zarówno kanały RSS, jak i Atom. Jednak w tej chwili jesteśmy bardzo pod presją czasu i jesteśmy zmuszeni wybrać tylko jeden z nich. Czy powinniśmy używać Atom czy RSS? Pod względem funkcji nie ma problemu, więc szukam tylko informacji na temat popularności i obsługi różnych formatów. Czy istnieje wiele czytników kanałów bez wsparcia Atom? EDYCJA: Powód, dla którego chcemy zaimplementować tylko jeden format, nie jest związany z generowaniem rzeczywistych kanałów. To samo w sobie nie będzie bardzo czasochłonne. To bardziej problem z interfejsem użytkownika. Jeśli zaimplementujemy zarówno Atom, jak i RSS, musimy przedstawić użytkownikowi interfejs użytkownika, w którym może wybierać między różnymi formatami. Do celów użyteczności będziemy również potrzebować tekstów pomocy, podpowiedzi itp., aby upewnić się, że użytkownik rozumie różne opcje. A ponieważ nasz produkt jest zlokalizowany na wiele języków, wszystkie powyższe elementy musiałyby zostać przetłumaczone, a ktoś musi za to zapłacić. Wszystko się sumuje i staje się o wiele więcej pracy. Jeśli zdecydujemy się na jeden format, potrzebujemy tylko jednego przycisku z etykietką wskazującą na plik .aspx z kanałem. Poza tym to i tak nie jest moja decyzja. :) Ktoś nade mną już zdecydował, że ta funkcjonalność zostanie zaimplementowana w tym wydaniu.


title: Skoro Garbage Collection jest niedeterministyczny, dlaczego nie jest używany do bezpiecznego generowania liczb losowych?

text: Rozumiem, że /dev/random jest dobrym źródłem entropii i jest tym, co jest zwykle używane -- tak jak czytam w GC, przynajmniej w Javie, wydaje się, że demon garbage collection wykonuje się niedeterministycznie . Jeśli to prawda, dlaczego nie użyjemy czasu wyrzucania śmieci jako źródła entropii zamiast zmiennej /dev/random?


title: Czy ktoś używał "Design Pattern Framework (TM)"?

text: Czy ktoś kupił Design Pattern FrameworkTM? Czy te próbki są warte inwestycji? Czy są praktyczne? Jakie są zalety i wady wytycznych? Czy ktoś używał tego w rozwoju w świecie rzeczywistym?


title: Co robisz, gdy w ostatniej chwili pojawia się prośba o wykluczenie funkcji z wydania?

text: Istnieje funkcja, która przeszła już testy akceptacyjne, zarówno wewnętrznie, jak i przez klienta. Jest to w pełni działająca funkcja. Jednak teraz pojawia się prośba o wykluczenie tej funkcji z nadchodzącej wersji. Według klienta ta funkcja powinna zostać usunięta, ponieważ użytkownicy nie zostali przeszkoleni, jak z niej korzystać. Jaki jest najlepszy sposób postępowania w tej sytuacji? Czy powinniśmy projektować oprogramowanie, przewidując, że funkcja może zostać wykluczona w ostatniej chwili przy użyciu ustawień konfiguracyjnych? Czy istnieją rozwiązania zależne od kontekstu, które mogą być bardziej poprawne w niektórych sytuacjach niż w innych?


title: Czym zajmują się programiści w firmach zajmujących się bezpieczeństwem?

text: Słyszałem o firmach zajmujących się bezpieczeństwem, które konsultują się z bezpieczeństwem systemów klientów. Wszyscy ludzie, których znam w tej dziedzinie są inżynierami sieci, ale wiem, że programiści również zajmują się bezpieczeństwem. Co właściwie robią programiści bezpieczeństwa, którzy wykonują audyty/konsultacje? Czy dosłownie przechodzą przez bazę kodu, szukając każdej luki w starszych systemach ludzi? Zawsze zakładałem, że tak właśnie zrobili, ale wydaje się, że byłoby to wysoce niewiarygodne i nie dałoby nic więcej niż fałszywe poczucie bezpieczeństwa. Uwaga: nie mówię o programistach, którzy piszą algorytmy szyfrowania lub coś w tym rodzaju, tylko o tych, którzy zajmują się audytami/konsultacjami w zakresie bezpieczeństwa oprogramowania.