title: Czy powinienem zlecić testy jednostkowe pod kątem znanych defektów?

text: Jeśli mój kod zawiera znaną usterkę, która powinna zostać naprawiona, ale jeszcze nie jest i nie zostanie naprawiona w bieżącym wydaniu i może nie zostać naprawiona w przewidywalnej przyszłości, czy powinien być nieudany test jednostkowy dla tego błędu w zestaw testowy? Jeśli dodam test jednostkowy, (oczywiście) się nie powiedzie, a przyzwyczajenie się do nieudanych testów wydaje się złym pomysłem. Z drugiej strony, jeśli jest to znany defekt i istnieje znany przypadek niepowodzenia, wydaje się dziwne, aby trzymać go poza zestawem testów, ponieważ powinien w pewnym momencie zostać naprawiony, a test jest już dostępny.


title: Czy problem z wersją to koszmar w programowaniu?

text: Załóżmy, że tworzysz aplikację i korzystasz z najnowszej wersji biblioteki innej firmy (powiedz „ver2.jar”). Potem widziałeś przykład napisany 2 lata temu, ale ten przykład używa `ver1.jar` Teraz w `ver1.jar` jest `web.method1()`, ale w `ver2.jar` nie ma takiej metody . Zamiast tego w `ver2.jar` masz `web.getOtherMethod.method1();` Uruchomiłeś swoją aplikację za pomocą `ver2.jar` i znalazłeś wiele brakujących klas i wiele błędów. Więc co zamierzasz zrobić, aby rozwiązać problem niezgodności? Myślę, że problem z wersją jest naprawdę koszmarem, ponieważ jest nieustrukturyzowany i tak naprawdę nie rozumiesz, co się dzieje. Poza tym, dlaczego w ten sposób zmieniono położenie metody w `ver2.jar`?


title: Powiązanie .NET DataSource dla starszej bazy danych SQL Server z niezdefiniowanymi relacjami

text: Projektuję narzędzie, które załaduje dane do starszej bazy danych SQL Server. Próbowałem zaprojektować proste narzędzie WinForms z C# przy użyciu łączników DataSource (Próbowałem najpierw prostego podejścia ORM Entity Framework, ale miał problemy, ponieważ db jest zgodna z kilkoma konwencjami). Mam szczególne trudności w nawiązywaniu relacji rodzic/dziecko i wyświetlaniu ich za pomocą siatek danych (tj. Kliknij ten wiersz, a siatka podrzędna zostanie przefiltrowana). Kilka przykładów wyzwań bazy danych: * Brak kluczy obcych z ograniczeniami referencyjnymi. To, co normalnie byłoby kluczem obcym, jest wyświetlane jako część podstawowego klucza złożonego w tabeli „podrzędnej”. Czasami z różnymi typami danych (np. double zamiast long) * Czasami klucz złożony jest używany w tabeli nadrzędnej do zdefiniowania jednostki, ale tylko jedno z tych pól złożonych jest wyświetlane w tabeli „podrzędnej”. `{dbo.Parent Key = [Identyfikator Nadrzędny, IdentyfikatorGrupy Nadrzędnej, InnePole], dbo.Child Key = [Identyfikator Dziecka, Identyfikator Nadrzędny]}` * Konwencje nazewnictwa nie istnieją. Takie rzeczy utrudniają wiązanie zestawów danych z nadrzędnymi/podrzędnymi siatkami danych i korzystanie z niektórych innych gotowych funkcji oferowanych przez platformę .NET. Jak sprostać powyższym wyzwaniom? Próbowałem spojrzeć na niektóre starsze samouczki ADO.Net, ale czasami metody się zmieniły lub nie są już dostępne ...


title: Zależność cykliczna i tworzenie obiektów podczas próby DDD

text: Mam domenę, w której „Organizacja” ma „Osoby”. **Organizacja** public class Organizacja { private readonly Lista<Osoba> _people = new Lista<Osoba>(); public Person CreatePerson(string name) { var person = new Person(organizacja, nazwa); _osoby.Dodaj(osoba); osoba powrotna; } public IEnumerable<Osoba> Ludzie { get { return _people; } } } **Person Entity** public class Person { public Person(Organizacja organizacji, string name) { if (organization == null) { throw new ArgumentNullException("organizacja"); } Organizacja = organizacja; Imię = imię; } organizacja publiczna { get; zestaw prywatny; } public Nazwa { get; zestaw prywatny; } } Zasadą tej relacji jest to, że `Osoba` musi należeć do dokładnie jednej `Organizacji`. Niezmiennikami, które chcę zagwarantować, są: 1. Osoba musi mieć organizację * jest to wymuszane przez konstruktora osoby 2. Organizacja musi znać swoich ludzi * dlatego Organizacja ma metodę „CreatePerson” 3. Osoba musi należą tylko do jednej organizacji * dlatego lista osób organizacji nie jest publicznie modyfikowalna (ignorując rzutowanie na Listę, być może `ToEnumerable` może to wymusić, ale nie za bardzo się tym przejmuję). jest tworzony, aby organizacja wiedziała o jego powstaniu. Jednak obecnie problem z modelem polega na tym, że można utworzyć osobę bez dodawania jej do kolekcji organizacji. Oto nieudany test jednostkowy opisujący mój problem [Test] public void AnOrganizationMustKnowOfItsPeople() { var Organization = new Organization(); var person = new Person(organizacja, "Steve McQueen"); CollectionAssert.Contains(organizacja.Ludzie, osoba); } Jaki jest najbardziej idiomatyczny sposób wymuszenia niezmienników i relacji kołowej?


title: Ogólny formularz wyszukiwania VB6

text: Pracuję nad starą aplikacją vb6/access2003, która służy do obsługi zamówień, list materiałów i tego typu rzeczy. Zastanawiam się nad stworzeniem formularza, który dzwonię za każdym razem, gdy użytkownicy potrzebują czegoś szukać. Powinno to działać w następujący sposób: * Kliknij pole, aby wypełnić, powiedzmy nazwisko kupującego * Otwórz nowy formularz, wyszukaj klienta i kliknij na niego * Przywróć nazwę kupującego do poprzedniego formularza (prawdopodobnie nagłówek zamówienie) Tak więc musiałbym przekazać do nowego formularza coś, co identyfikuje typ wyszukiwania, który muszę wykonać (więc jaki dostęp do tabeli otworzyć) i zwrócić niektóre wartości. Czy mój pomysł jest poprawny, czy jest coś lepszego? Chciałbym używać tylko jednego formularza do wszystkich wyszukiwań, teraz aplikacja działa z dużą ilością msflexgrid dla każdego formularza.


title: Opracowanie konfigurowalnego programu cenowego

text: Organizacja, w której pracuję, ma kilka interesujących wymagań, jeśli chodzi o ceny w handlu internetowym. Obecnie programiści piszą różne „reguły cenowe”, które mogą być stosowane do naszych produktów w oparciu o atrybuty produktów. > Na przykład: > WEJŚCIA: [koszt, sug_retail, wycofane, ilość_magazynu, ilość_do_zamówienia, > marka, typ, dni_dostępne, stawka_wysyłki, waga, map_protected, > mapa_rabat] > DOPASOWANIE: marka=x, ilość_magazynu > 1, wycofane=True, map_protected =False > SET: retail_price = (sug_retail * 0,95), offer_price1 = (cost * 1,25 + > shipping_rate) Chcę umożliwić zespołowi merchandisingowemu większą kontrolę nad cenami i formułami - są one w końcu wystarczająco techniczne, aby pisać formuły Excela . Przyglądałem się pisaniu aplikacji komputerowej, która używa czegoś takiego jak numexpr http://code.google.com/p/numexpr/ lub http://sympy.org/en/index.html, aby umożliwić integrację osobom niebędącym programistami własną logikę w naszym zapleczu cenowym. Mamy wiele poziomów cenowych, które musimy ustalić, dla wielu rynków, więc potrzebne jest eleganckie rozwiązanie. Ciągłe dostosowywanie/zarządzanie wszystkimi regułami cenowymi staje się frustrujące dla zespołu programistów (sprzedajemy ponad 200 marek na 3 rynkach). `Moje pytanie brzmi`; czy to wydaje się przyzwoitym podejściem? Czy możesz wymyślić lepszy sposób na analizowanie gramatyki matematycznej ciągów? Czy możesz wymyślić inny sposób, w jaki użytkownicy mogą dostarczać formuły do integracji z automatycznym systemem wyceny? Czy ktoś zna jakieś przykłady istniejących aplikacji, które to robią? Excel i Access nie wchodzą w rachubę – ilość danych, którymi manipulujemy, już udowodniła potrzebę ich automatyzacji – teraz potrzebujemy tylko trochę wglądu w tę automatyzację.


title: Czy MongoDB jest odpowiedni dla systemów, które prawdopodobnie ulegną zmianie?

text: Używałem MongoDb (głównie z Meteorem) i dla mnie był to świetny sposób na szybkie makiety prototypów i sprawdzanie koncepcji. Zastanawiam się tylko, czy po zbudowaniu początkowego produktu, czy Twój produkt będzie się rozwijał i zmieniał, czy dobrym pomysłem jest pozostanie przy mongoDb? Ponieważ wydaje się, że w przypadku MongoDb musisz dużo wiedzieć o tym, jak zamierzasz wykorzystać dane z góry. Tylko z mojego doświadczenia wydawało mi się, że ciągle próbuję zdecydować, czy typ danych powinien być dokumentem samym w sobie, czy dokumentem podrzędnym. Uczynienie go dokumentem daje mu elastyczność, ale jeśli masz wszystkie typy danych jako dokumenty, to w zasadzie masz po prostu bazę danych SQL z kluczami obcymi, które nie mają żadnych ograniczeń kluczy obcych. Uczynienie z tego dokumentu podrzędnego sprawia, że wszystko działa lepiej, a jednocześnie jest wygodne — nie musisz łączyć tabel (co wydaje się, że musisz robić ręcznie) — ale wydaje się, że problem polega na tym, że musisz wykonać zapytanie o ten typ danych poza kontekstem rodzica , to jest bardzo trudne. Na przykład, jeśli tworzę stronę internetową z czatami, mogę mieć dwa typy danych - czaty i textEntries. Chatroom będzie osobnym dokumentem. Ale textEntries może być samodzielnym dokumentem lub dokumentem podrzędnym w Chatroomie. Jeśli uczynię TextEntries dokumentem, musiałbym ręcznie śledzić relację między pokojem czatu a textEntries, co w ogóle jest sprzeczne z celem używania mongoDB. Jeśli uczynię TextEntries dokumentem podrzędnym, będzie to łatwiejsze, ale co, jeśli później mam nowe wymaganie, w którym chcę przeszukać wszystkie TextEntries we wszystkich pokojach rozmów w poszukiwaniu określonego słowa? Dzięki prototypowi wiem dokładnie, co buduję, więc decyzje te opierają się na tym, aby produkt działał. Ale na dłuższą metę nie wiedziałbym, jak lub w jaki sposób będę chciał wykonać zapytanie o dane, więc w świetle tego, czy lepiej byłoby po prostu przenieść się do bazy danych SQL?


title: Jakiego stylu użyć dla nieużywanych parametrów zwracanych w wywołaniu funkcji Pythona?

text: Czy istnieje zalecany/ogólnie akceptowany styl kodowania do obsługi sytuacji, w których funkcja zwraca krotkę wartości, ale tylko jedna z tych wartości jest później używana (należy zauważyć,że dotyczy to głównie funkcji bibliotecznych, których nie mogęzmienić -- pisanie otoki wezwanie to chyba trochę przesada…)? Zamiast robić a, b, c = foo() i po prostu nie używać `a` i `b`, który z poniższych wariantów powinien być preferowany (czy jest inny?): ## Wariant 1 (podkreślenie) a , _, _ = foo() (co jest bardzo jasne i proste, ale może kolidować z `_ = gettext.gettext` używanym w wielu aplikacjach używających tłumaczenia) ## Wariant 2 (fikcyjna nazwa) a, unused, unused = foo( ) (myślę, że niezbyt atrakcyjne, to samo dotyczy innych nazw, takich jak `dummy`) ## Wariant 3 (indeks) a = foo()[0] (dla mnie `()[0]` wygląda niepytonowo… )


title: kontrolowanie obiektu przez inny obiekt?

text: Dzisiaj widziałem następujący wzorzec: masz obiekt A i obiekt B. Obiekt B przyjmuje wskaźnik do A w swoim konstruktorze. Po utworzeniu B istnieje metoda B.doCalc(), która wykonuje obliczenia (wewnętrznie wykorzystując informacje A). Wynik otrzymujemy metodą B.getResult(). Aby wykonać kolejne obliczenia, A jest modyfikowane i ponownie wywoływana jest B.doCalc(). Jakie jest Twoje zdanie na temat tego wyboru? Zaprojektowałbym to inaczej, ale chcę usłyszeć twój głos. **Edytuj** : zauważ, że moim głównym sprzeciwem jest zmodyfikowanie A tak, aby miał inny wynik niż B, bez dotykania B. Chociaż jest podobny, myślę, że właśnie ta dyscyplina wyraża znacznie lepsze poczucie tego, co się dzieje. Zamiast a = new A a.whatever = 5 b = new B(a) b.doCalc() res = b.getResult() a.whatever = 6 b.doCalc() res = b.getResult() obiekt wskaźnika z samego b. a = nowy A a.cokolwiek = 5 b = nowy B(a) b.doCalc() res = b.getResult() a = b.getAPointer() a.cokolwiek = 6 b.doCalc() res = b.getResult (), ponieważ wyjaśnia fakt, że a jest pobierane z b, a następnie modyfikowane. Jednak nadal mi się to nie podoba... **Edytuj 2** : jednym z powodów, dla których B akceptuje A w konstruktorze, jest to, że musi ustawić wewnętrzne dane do obliczeń. Dane te * zależą od charakteru A * muszą być odczytane z dysku, który może być powolny * B może być uruchamiany wiele razy na tym samym A, aczkolwiek nieznacznie zmodyfikowanym A. Charakter tych zmian nie unieważnia wewnętrznych danych B . Nie chcemy ponownie ładować informacji za każdym razem, gdy wywoływana jest funkcja doCalc(), ani podejmować ryzyka uruchomienia doCalc(a) z wewnętrznymi danymi B, które są niezgodne z przesłanym A.


title: Czy istnieją dowody na to, że interfejsy graficzne mają tendencję do bałaganu w repozytoriach SVN i Git?

text: W mojej firmie spotykam się z twierdzeniem, że interfejsy graficzne dla systemów VCS, takie jak SVN czy (zwłaszcza) Git, mają tendencję do bałaganu w repozytoriach - szczególnie w przypadku gałęzi. Będąc zapalonym użytkownikiem systemu Windows i GUI, trudno mi uwierzyć, że to prawda. Zwłaszcza w przypadku Gita zgadzam się, że niektóre ruchy są zbyt skomplikowane, aby można je było przeprowadzić przez GUI. Ale jakie jest prawdziwe tło tego oskarżenia?


Niedawno zrobiłem małe "omówienie narzędzi": Jeśli miałbym programować stronę internetową w Scali i Coffeescript, jakie frameworki bym wybrał? Natknąłem się na tę świetną prezentację: http://www.slideshare.net/mraible/html5-with-play-scala-coffeescript-and-jade-devoxx-2011 Jedynym problemem jest to, że nie mogłem znaleźć pełnej wersji z komentarz. Zastanawiam się więc: po co ktoś miałby łączyć Scalate i Jade ? Prezentacja jest bardzo inspirująca i odnosi się do wielu ciekawych zasobów. Niemniej jednak niewiele jest informacji, jak się dogadują. Zawsze myślałem, że zarówno Jade, jak i Scalate są zasadniczo sposobem na dynamiczne generowanie HTML5 i faktycznie dzielą to samo „terytorium”. moje pytanie: Jakie są korzyści z używania zarówno Scalate, jak i Jade?


title: Czy brak spacji jest oznaką kultowego programisty cargo?

text: Eric Lippert pisał o programowaniu związanym z kultem cargo, a Steve McConnell zajął się tym tematem z punktu widzenia inżynierii oprogramowania. Eric podaje dość zwięzły opis: > Rozumieli **formę**, ale nie **treść**. Jest wielu programistów z kultem cargo -- **programistów, którzy rozumieją, co robi kod, > ale nie rozumieją, jak to robi**. Dlatego nie mogą dokonywać znaczących zmian w > programie. Mają tendencję do wprowadzania losowych zmian, testowania i > ponownego zmieniania, dopóki nie uda im się wymyślić czegoś, co działa. Nie oznacza to, że programiści kultu cargo są _źli_ per se, tylko że podchodzą do kodowania inaczej niż inni. Ich celem jest załatwianie spraw; nie rozumiem, dlaczego kod coś robi. To pytanie programistów omawia formatowanie i „niestarannych programistów”, ale różni się tym, że nie skupia się na białych znakach i jasne jest, że programiści są uważani za złych. Wiele napisano na temat programistów na temat używania komentarzy, a także używania białych znaków. Powszechną akceptacją jest używanie komentarzy w celu wyjaśnienia " _dlaczego_ nie _co_" oraz używanie spacji do oddzielenia konstrukcji logicznych w kodzie. Aby pożyczyć od tradycyjnego pisania, białe znaki zapewniają akapity tekstu do przeczytania zamiast licowania ze ścianą tekstu. Oddziela kluczowe pojęcia. * * * Jestem w trakcie refaktoryzacji kodu pierwotnie napisanego przez programistę zajmującego się kultem cargo, a jednym z wyzwań, z jakimi się spotkałem, jest konsekwentny brak białych znaków wskazujących kontekst lub koncepcje w programie. Patrząc na kod, jasne jest dla mnie, że programista nie rozumiał, dlaczego ani kontekstu zadania, które mu przydzielono. Ignorując niepoprawne problemy z kopiowaniem i wklejaniem, kod po prostu nie jest dobrze odczytywany z powodu niespójnego przepływu między instrukcjami. Zdaję sobie sprawę, że użycie białych znaków jest stronnicze ze względu na oryginalny język, którego ktoś pierwszy się uczy, ale nie mogę przestać się zastanawiać, czy „nielogiczne” użycie lub brak użycia białych znaków jest wskaźnikiem programisty kultu cargo. **Moje pytanie:** \-- Czy istnieje korelacja między niewłaściwym używaniem spacji a szansą na to, że osoba jest programistą kultu cargo? * * * _Uzupełnienie_ : Zdaję sobie sprawę, że moje pytanie jest subiektywne, ale myślę, że należy do dobrej kategorii subiektywnej, ponieważ najlepiej odpowiedzieć na to pytanie typu „dlaczego” zakorzenionej w doświadczeniu i/lub potencjalnie pewnej ilości badań. Podobnie uważam, że istnieje odpowiedź na to pytanie, i skupiłem się na ustaleniu, czy istnieje korelacja, jednocześnie unikając potencjalnego narzekania. W moim pytaniu używam szerszej definicji programowania kultu cargo, zdefiniowanej przez Erica. Cargo Cult Programiści mieszają i dopasowują formularze, ponieważ fragment, który wzięli, wydaje się rozwiązywać problem. Jednak nie rozumieją, dlaczego skopiowane przez nich sekcje rozwiązują problem. W tym kontekście nie postrzegam Cargo Cult Programming jako próby naśladowania stylu innej osoby, ale raczej jako próbę „naprawienia” jakiegokolwiek problemu za pomocą dowolnego kodu, jaki mogą znaleźć.


title: Schematy kolorów synchronizacji programu Visual Studio Notepad++

text: Czy istnieje prosty sposób na synchronizację schematu kolorów/motywu między visual studio 2008/2010 a notepad++? Chciałbym go mieć, aby móc wskazać studio visual studio i notepad++ w tym samym dokumencie i zachować style właśnie przez to.


title: Jak wiersze kodu są wykonywane przez procesor?

text: Próbuję naprawdę zrozumieć, jak dokładnie język wysokiego poziomu jest konwertowany na kod maszynowy, a następnie wykonywany przez procesor. Rozumiem, że kod jest kompilowany do kodu maszynowego, który jest kodem niskiego poziomu, z którego może korzystać procesor. Jeśli mam instrukcję przypisania, powiedz: x = x + 5; y = x - 3; Czy procesor wykonuje każdą linię pojedynczo? Więc najpierw wykona x = x + 5; instrukcja, a następnie następną instrukcją, którą wykona CPU jest y = x-3; Naprawdę próbuję zrozumieć proces wykonywania i sposób, w jaki pisany przeze mnie kod jest faktycznie wykonywany przez procesor.


title: Badania nad wzrostem/stratą produktywności dokumentacji kodu

text: Po długich poszukiwaniach nie udało mi się odpowiedzieć na podstawowe pytanie dotyczące domniemanego znanego w świecie oprogramowania: CO ZNANE: Egzekwowanie ścisłej polityki w zakresie odpowiedniej dokumentacji kodu (czy to tagi Doxygen, Javadoc, czy po prostu mnóstwo komentarzy) dodaje narzut do czasu potrzebnego na opracowanie kodu. ALE: Posiadanie dokładnej dokumentacji (lub nawet interfejsu API) niesie ze sobą wzrost wydajności (zakłada się) u nowych i doświadczonych programistów, gdy dodają funkcje lub naprawiają błędy w przyszłości. PYTANIE: **Czy dodatkowy czas potrzebny na przygotowanie takiej dokumentacji jest równoważony wzrostem produktywności (w sensie stricte ekonomicznym)?** Poszukuję case studies lub odpowiedzi, które mogą się z nimi wiązać obiektywne dowody na poparcie wyciągniętych wniosków. Z góry dziękuję!


title: Jakiej kontroli źródła chcę dla dużego projektu w przeciętnej firmie?

text: Wiem, że git świetnie nadaje się do projektów open source. Ale zastanawiałem się. Która kontrola źródła jest pożądana dla firmy z 20 programistami w rocznym projekcie? Z tego, co słyszałem, GIT używa ciągnięcia, czy nie byłoby mniej pożądane, aby przejść przez kogoś innego, aby wprowadzić zmiany w głównym bagażniku? zwłaszcza gdy wszyscy pracują jednocześnie? Zastanawiam się, że to tylko przykład. Wiem, jak korzystać z svn, ale nawet w mojej ostatniej pracy nie używaliśmy go w naszych projektach, ponieważ wszystko było robione w php i zazwyczaj samodzielnych projektach tygodniowych. Właśnie miałem svn dla mojego lokalnego kodu i nie musiałem go używać z innymi. Czym więc są dobre kontrole źródeł, a konkretnie dlaczego jest do tego dobra?


title: Dlaczego wielu programistów PHP nienawidzi używania isset() i/lub innych podobnie obronnych funkcji PHP, takich jak empty()?

text: Powyżej na stackoverflow, cały czas pojawia się ten problem: * E_NOTICE ?== E_DEBUG, unikanie isset() i @ z bardziej wyrafinowanym error_handlerem * Jak ustawić PHP tak, aby nie sprawdzał indeksu undefind dla $_GET, gdy E_NOTICE jest włączone? * Jak powstrzymać PHP przed rejestrowaniem błędów komunikatów PHP * Jak wyłączyć takie komunikaty PHP 5.3 ? Nawet Pekka (który oferuje wiele solidnych porad dotyczących PHP) wpadł na przerażającego potwora `E_NOTICE` i miał nadzieję na lepsze rozwiązanie niż użycie `isset()`: isset() i empty() sprawiają, że kod jest brzydki Osobiście używam ` isset()` i `empty()` w wielu miejscach do zarządzania przepływem moich aplikacji. Na przykład: public function do_something($optional_parameter = NULL) { if (!empty($optional_parameter)) { // rób opcjonalne rzeczy z zawartością $ Optional_parameter } // rób obowiązkowe } Nawet prosty fragment jak ten: if ( !isset($_REQUEST['form_var'])) { // czegoś brakuje, zrób coś z tym. } wydaje mi się bardzo logiczne. Nie wygląda na rozdęcie, wygląda na stabilny kod. Jednak wielu programistów uruchamia swoje aplikacje z włączoną opcją `E_NOTICE`, odkrywa wiele frustrujących powiadomień o „niezainicjowanym indeksie tablicy”, a potem krzywi się na myśl o sprawdzeniu zdefiniowanych zmiennych i „zaśmiecaniu” kodu za pomocą `isset( )”. Zakładam, że inne języki radzą sobie inaczej. Mówiąc z doświadczenia, JavaScript nie jest tak uprzejmy jak PHP. Niezdefiniowana zmienna zazwyczaj zatrzymuje wykonywanie skryptu. Ponadto (mówiąc od _niedoświadczenie_ ) jestem pewien, że języki takie jak C/C++ po prostu odmówiłyby kompilacji. Czy twórcy PHP są po prostu leniwi? (nie mówiąc o tobie, Pekka, wiem, że refaktoryzowałeś starą aplikację.) A może inne języki radzą sobie z niezdefiniowanymi zmiennymi z większą wdziękiem niż wymaganie od programisty, aby najpierw sprawdził, czy są zdefiniowane? (Wiem, że istnieją inne komunikaty `E_NOTICE` poza niezdefiniowanymi zmiennymi, ale to one wydają się być tymi, które powodują największe rozczarowanie) **Uzupełnienie** Z dotychczasowych odpowiedzi nie jestem jedyną osobą, która myśli `isset( )` nie jest rozrostem kodu. Zastanawiam się teraz, czy są problemy z programistami w innych językach, które powtarzają ten? A może jest to wyłącznie kwestia kultury PHP?


title: Chcesz nauczyć się jednej z tych baz danych NoSQL, szukając porady, którą z nich sprawdzić

text: Jako ktoś, kto pierwszy raz zetknął się z relacyjnymi bazami danych i SQL na studiach uniwersyteckich na początku lat 90. i który spędził sporą część piętnastoletniej kariery pracując z MS SQL Server, jestem prawdopodobnie podręcznikowym przykładem osób, które według entuzjastów NoSQL , "miej SQL jak mój młotek i patrz na wszystko jak na gwóźdź." Tak więc, aby poszerzyć moje horyzonty, chciałbym zrobić coś w rodzaju projektu bałaganu, używając jednej z tych baz danych NoSQL, jako doświadczenia edukacyjnego. Pytanie jednak, z którym z nich powinienem zadzierać? * MongoDB wydaje się być jednym z najbardziej znanych i szanowanych * Raven DB? Robi się trochę szumu, a Hibernujące Nosorożce stworzyły rzeczy, które szanuję. * CouchDB, skoro jest częścią projektu Apache? * coś innego? Nie mam problemu do rozwiązania, projektu do zrealizowania ani klienta do zaspokojenia, więc nie pytam, który z nich najlepiej nadaje się do konkretnego celu. Tylko rekomendacje oparte na jakości, potencjale, a co najważniejsze, dostępności dobrych dokumentów, poradników, tutoriali, screencastów itp. Och, C# / .NET to moja dziedzina, więc szukam czegoś, co dobrze pasuje, np. . ma w swojej dokumentacji przykłady C#. Jakieś wskazówki?


title: Styl zapytań PHP ORM

text: Ok, więc zrobiłem bibliotekę ORM dla PHP. Używa składni takiej jak: *(załóżmy, że $business_locations to tablica)* Business::type(Business:TYPE_AUTOMOTIVE)-> size(Business::SIZE_SMALL)-> left_join(BusinessOwner::table(), BusinessOwner::business_id (), SQL::OP_EQUALS, Business::id())-> left_join(Owner::table(), SQL::OP_EQUALS, Owner::id(), BusinessOwner::owner_id())-> gdzie(Business ::location_id(), SQL::in($business_locations))-> group_by(Business::id())-> select(SQL::count(BusinessOwner::id()); Które można również przedstawić jako: $query = new Business(); $query->set_type(Business:TYPE_AUTOMOTIVE); $query->set_size(Business::SIZE_SMALL); $query->left_join(BusinessOwner::table(), BusinessOwner::business_id() , SQL::OP_EQUALS, $query->id()); $query->left_join(Owner::table(), SQL::OP_EQUALS, Owner::id(), BusinessOwner::owner_id()); $query ->where(Business::location_id(), SQL::in($business_locations)); $query->group_by(Biznes::id()); $query->select(SQL::count(BusinessOwner::id()); Spowoduje to wygenerowanie zapytania takiego jak: SELECT COUNT(`business_owners`.`id`) FROM `businesses` LEFT JOIN `business_owners` ON `business_owners` .`business_id` = `firmy`.`id` LEFT JOIN `owners` ON `owners`.`id` = `business_owners`.`owner_id` GDZIE `firmy`.`type` = 'motoryzacja' ORAZ 'firmy'. `size` = 'small' AND `businesss`.`location_id` IN (1, 2, 3, 4 ) GROUP BY `business`.`id` _Proszę pamiętać, że składnia może nie być idealnie poprawna (tylko napisałem to z mojej głowy).


title: Jak skontaktować się z osobami o podobnych zainteresowaniach programistycznych, które znalazłeś w internecie?

text: Ostatnio naprawdę zanurkowałem w Ruby/Rails i zakochuję się. Mam przeczucie, że to może być coś, co może trwać przez chwilę. Brakowało mi interakcji z ludźmi, którzy pasjonują się Ruby, Railsami i rzeczami blisko z nimi związanymi. Mieszkam w stosunkowo małym mieście, ale udało mi się znaleźć pięć lokalnych osób za pośrednictwem strony internetowej RoR. Cotygodniowe spotkania z komputerami Mac, piwem i ukochaną brodą przebiegały przez mój umysłowy teatrzyk. Poważnie jednak, nie mam pojęcia, jak mógłbym podejść do tych ludzi. Mam ich adresy e-mail. Jakakolwiek rada?


title: gra nieopublikowana z powodu naruszenia praw autorskich

text: Stworzyłem prostą grę logiczną z batmanem, używając kilku plakatów z batmanem z Internetu. Teraz są aplikacje w sklepie Google Play i sklepie z telefonami z systemem Windows, które również zawierają tego rodzaju zdjęcia Batmana i nie zostały one ściągnięte, ale moja aplikacja ze sklepu Play została ściągnięta z powodu tego prawa autorskiego. Jak opublikować swoją aplikację w sklepie Play i Windows Phone bez żadnych problemów z prawami autorskimi?


title: Wyrażenia regularne i generatory języka

text: Mam ze sobą kilka podręczników do CS, które omawiają języki, właściwie 2 plus stare notatki z kursu dostarczone kilka lat temu. Ja też przeszukiwałem sieć i wydaje mi się, że pojawiają się niejasne odpowiedzi, tak jak w podręcznikach, które mam. Moje pytanie dotyczy generatorów wersetów rozpoznających język. Rozumiem nadrzędną zasadę rozpoznawania. Że analizuje język i jest w stanie określić „nie” lub „tak”, jeśli String należy do języka. Przynajmniej to wyczytałem z książek i notatek. Jednak jest to o wiele bardziej złożone, prawda? Tokenizator i analizator składni (które, jak sądzę, są rozpoznawcami) nie tylko mówią tak lub nie, ale także mówią, gdzie nie...? Jednak generatory języka. Nikt nie wydaje się być bardzo jasny co do tego, czym one są. Typowy opis, jaki otrzymuję, to Na przykład koncepcja języków programowania Sebasty mówi: „Generator języka to urządzenie, które może być używane do generowania zdań języka. Możemy myśleć o generatorze jako o przycisku, który po każdym naciśnięciu generuje zdanie w języku”. Na serio? Otóż to?? Twoje żarty, racja .... Czytałem, że Regex jest przykładem Generatora, to dlaczego, kiedy ludzie mówią o generatorach, nie mówią o wejściach. Na przykład Regex ma docelowy ciąg znaków, a Regex z definiuje zarówno akceptowany alfabet, jak i zasady gramatyczne. Czy ktoś może zapewnić mi jaśniejsze rozróżnienie tego, czym jest osoba rozpoznająca?


title: Czy open source nie jest złe dla samych programistów?

text: Dlaczego programistom podoba się nawet idea open source? Nie mówię o twórcach tych projektów, oczywiście zyskują sławę, ale mówię ogólnie o branży, dlaczego tak bardzo lubimy koncepcję open source, skoro ma ona tak wiele złych skutków dla branży? Po pierwsze, projekty takie jak wordpress i inne CMS, zabierają wiele wolnych miejsc pracy, w których klienci chcą mieć bloga lub prostą stronę internetową. Po drugie, projekty takie jak Rails i inne biblioteki i API pozbawiają pracy wielu programistów i zmniejszają zapotrzebowanie na programistów, ponieważ teraz z tymi API o otwartym kodzie źródłowym, jeden programista może robić rzeczy, które kiedyś robiło 10 programistów. I wreszcie, dzięki oprogramowaniu typu open source, takim jak Notepad ++, teraz ludzie po prostu czują się śmiesznie, gdy prosisz ich o zakup oprogramowania. Tak więc pytanie brzmi, dlaczego nadal lubimy open source, jeśli w pewnym sensie czyni nas biednymi? Prawdopodobnie moje życie jako programisty byłoby trudniejsze, ale przynajmniej mogę z tego wyżyć. Ale teraz bardziej przypomina to maszynę zastępującą człowieka, zabawną rzeczą jest to, że tworzymy te „maszyny”, które zastępują nas samych. Powiedzmy, że jeśli wymyśliłeś narzędzie, nie musisz się nim dzielić, nadal pomoże Tobie i Twojej firmie. Nawet bez tych narzędzi open source inni programiści będą żyć, ponieważ nadal mają pracę, która zarabia pieniądze.


title: Podstawowe pytanie OOP dotyczące raportu

text: Opracowuję przykładowy projekt na Androida na telefon znajomego, który śledzi jego sprzedaż. Początkowo jednym z wymagań było tworzenie rocznych raportów tych danych sprzedażowych. To byłyby takie rzeczy, jak najbardziej dochodowy tydzień, suma na kwartał, suma na miesiąc, a nawet suma roczna, a także porównania z poprzednich lat (łącznie około 10 rzeczy). Stworzyłem klasę o nazwie YearlyReport, która ma wszystkie te właściwości i są one wypełniane z klasy bazy danych, która wykonuje odpowiednie wywołania SQL. Te dane są wyświetlane na stronie statystyk, ale po obejrzeniu tego mój znajomy poprosił mnie o umożliwienie widzowi wyboru różnych tygodni i wyświetlania danych tygodniowych (3 bity informacji: suma za tydzień, najlepszy dzień w tygodniu , najgorszy dzień w tygodniu). Tak więc, gdy zmieniają tygodnie w roku, chce, aby dane tygodniowe pojawiały się nad danymi rocznymi. Więc teraz muszę wykonać konkretne zapytania o dane tygodniowe, ale wyświetlić też dane roczne. Z jakiegoś powodu czuję się naprawdę zdezorganizowany! Najpierw zrobiłem obiekt WeeklyReport, a baza powie "ok na dany tydzień W, wypełnię twój obiekt WeeklyReport i zwrócę". Potem zacząłem się zastanawiać, czy powinienem zrobić coś mądrzejszego. Może coś połączyć? Czy powinno być dziedziczenie? Brakuje mi czegoś. Czy mogę mieć obiekt WeeklyReport i YearlyReport? Czy powinienem je łączyć? Jeśli tak, to nadal jest to dziwne, ponieważ roczny raport niewiele się zmienia, chyba że przenosisz się do nowego roku (nieczęsto), ale co tydzień tak (w zależności od daty).


title: Co się stanie, jeśli komputer zawiesi się po wydaniu polecenia commit?

text: Jeśli aktualizujemy pole w SQL i ALTER również wiersz. Po wydaniu polecenia COMMIT system ulega awarii. Co się stanie z podanymi poleceniami, czy UPDATE i ZMIENI tabelę, czy nie?


title: Słownik a lista

text: Więc natknąłem się dzisiaj w pracy na `Słownik<int, int>`. Wydawało mi się to po prostu dziwne, ponieważ prawdopodobnie zamiast tego użyłbym po prostu `List<int>`. Czy istnieje różnica i czy byłby przypadek użycia, w którym jedna struktura byłaby preferowana nad drugą?


title: Miejsca, w których mogę dobrowolnie wykonywać prace programistyczne/programistyczne?

text: Zadałem to pytanie ze względu na brak doświadczenia, co jest dla mnie dużym problemem przy ubieganiu się o pracę, ponieważ wszystkie firmy wymagają od 2 do 3 lat doświadczenia w programowaniu. Dlatego wybieram tę ścieżkę wolontariatu, aby zdobyć doświadczenie i mieć w swoim CV pewną liczbę lub technologie, aby spełnić wymagania HR. Jakieś sugestie proszę?


title: Konwersja lib z innego języka na Pythona i problem z prawami

text: Jeśli wezmę program i zasadniczo przetłumaczę jego źródło z jakiegoś języka na python, z małymi zmianami, czy mogę zrobić całkowicie nową bibliotekę, czy muszę zrobić „wersję” starej? czy byłaby to kopia pierwszej czy nowa biblioteka oparta na pomysłach pierwszej? **OBS: Uważaj, że oryginalna biblioteka korzysta z licencji Apache w wersji 2** Nie jestem pewien, czy dobrze wyjaśniono, ale na razie nie widzę, jak to wyjaśnić.


title: Dlaczego CSS3 robi animacje?

text: Jak mówi tytuł, dlaczego w CSS3 są animacje? Opierając się na „zasadzie” oddzielenia obaw, HTML to treść, CSS to **_style_** , a JavaScript to interaktywny komponent. A dzięki interaktywności można wywnioskować, że wszystko, co się porusza w wyniku jakiejkolwiek interakcji, wywołanej przez użytkownika lub nie, powinno być objęte JavaScript, a nie CSS. Dlaczego więc zrobili CSS3 zdolne do robienia animacji? Czy to nie narusza zasady rozdzielania obaw? Czy jest coś, co przegapiłem, co sprawia, że animacje kwalifikują się do klasyfikacji jako style, a nie interakcja?


title: Czy inżynier oprogramowania wbudowanego i inżynier oprogramowania sprzętowego to to samo zadanie?

text: Zamierzam skierować moją karierę informatyka trochę bardziej na robotykę. Analizowałem i junior wbudowane pozycje mogą być dobrą okazją do rozpoczęcia. Jednak przeszukując widziałem inne podobne tytuły. Moje pytania brzmią: 1. Czy inżynier oprogramowania wbudowanego i inżynier oprogramowania sprzętowego to w zasadzie ta sama rola? Proszę podać krótkie przykłady każdego z nich, jeśli nie. 2. Jakie inne tytuły/stanowiska umożliwiłyby mi rozpoczęcie pracy z robotyką jako programista? Mógłbym być bardziej konkretny, gdybym miał wiedzę, ale na razie chcę zbliżyć się do tej dziedziny, więc wszystko jako programista bardzo by pomogło.


title: Czego powinienem użyć jako losowego ziarna w Brainfuck?

text: Jak rozumiem, większość algorytmów pseudolosowych działa, biorąc jedną lub więcej naprawdę losowych `długich', takich jak data, godzina, adres MAC, numer seryjny itp., przepuszczając je przez złożoną serię obliczeń, i zwrócenie wyniku. Nie jest to jednak możliwe w Brainf*ck. Język ma tylko 8 poprawnych znaków składni, ale nie będę zawracał Ci głowy pełnym opisem, który znajdziesz tutaj. Istotą jest to, że nie ma żadnych funkcji dostępu do czasu systemowego ani żadnego innego numeru, który mógłbym uznać za ziarno. Nie mogę wymyślić, skąd wziąć dobre nasiona do wykorzystania w funkcjach. Czy ktoś ma jakieś sugestie? Z góry dziękuję. _Uwaga: możesz edytować te pytania, aby dotyczyły większej liczby języków; Po prostu nie mogę położyć palca na właściwym słowie._


title: Co to jest „szablon” w Perlu?

text: Mogę znaleźć różnego rodzaju dziwne informacje o szablonach w Perlu, ale nic o tym, czym one są. Czy są to typy generyczne, jak w C++? Czy jest to struktura klasowa? A może coś innego?


title: Czy są jakieś czcionki programistyczne z figurami w starym stylu?

text: Uważam, że dane w starym stylu (lub tekst) są znacznie łatwiejsze do odczytania w dowolnym kontekście poza prostym zadaniem. Czy istnieją czcionki o małej niejednoznaczności, o stałej szerokości lub proporcjonalne, które mają cyfry tekstu i inne funkcje ułatwiające programowanie, takie jak zaznaczone zera; wyrównane nawiasy klamrowe, operacje i inne symbole; i pogrubienie i kursywa o identycznej szerokości jak zwykła? Notatka. Postacie w starym stylu to cyfry, które są rysowane ze zmiennym wzrostem i spadkiem. Zazwyczaj na przykład „0” będzie nieco większe niż małe „o”; „6” i „9” będą miały kółka o wielkości i umiejscowieniu podobne do „0”, z flagami rozciągającymi się w górę iw dół. Ogólnie rzecz biorąc, jeśli ktoś próbuje zbadać liczby jako liczby (np. parsować „8675309” jako „osiem sześć siedem pięć trzy o ni-y-ine”), formy „podszewkowe” z ujednoliconym wzrostem i spadkiem są łatwiejsze do odczytania. Z drugiej strony liczby wielocyfrowe pisane cyframi w starym stylu mają różne kształty. Jeśli porównuje się kolumny liczb, liczba taka jak „1265” będzie wyglądać zupełnie inaczej niż „1285”, ponieważ pierwsza będzie miała flagę na „6”, która wystaje znacznie ponad jakąkolwiek cechę drugiej. Liczby tabelaryczne to liczby rozmieszczone w równych odstępach; mogą być podszewką lub w starym stylu. Tak więc wszystkie czcionki o stałej szerokości mają liczby tabelaryczne, ale większość czcionek proporcjonalnych nie.


title: Jak korzystać z wzorców jednostek pracy i repozytorium w środowisku zorientowanym na usługi?

text: Stworzyłem framework aplikacji wykorzystujący jednostki pracy i wzorce repozytorium dla warstwy danych. Warstwy odbiorców danych, takie jak prezentacja, zależą od projektu warstwy danych. Na przykład formularz abstrakcyjny CRUD ma zależność od repozytorium (IRepository). Ta architektura działa jak urok w środowiskach klient/serwer (np. aplikacja WPF i SQL Server). Ale szukam dobrego wzorca, aby zmienić lub ponownie wykorzystać tę architekturę w środowisku zorientowanym na usługi. Oczywiście mam kilka pomysłów: * * * **Pomysł 1: Wzorzec projektowy „Adapter”** Zachowaj obecną architekturę i stwórz nową jednostkę pracy i implementację repozytorium, która może współpracować z usługą zamiast z ORM. Konsumenci warstwy danych są luźno powiązani z warstwą danych, więc jest to możliwe, ale problem dotyczy jednostki pracy; Muszę utworzyć kontekst, który śledzi stan obiektów po stronie klienta i wysyła zmiany po stronie serwera po wywołaniu „Commit” (coś, co moim zdaniem zrobiła RIA dla Silverlight). Oto diagram: ----------- KLIENT----------- | ------------------ SERWER ----------------------- [ UI ] -> [ JM/Repozytorium ] ---> [ Web Services ] -> [ JM/Repozytorium ] -> [DB] * * * **Pomysł 2: Dodaj kolejną warstwę** Dodaj kolejną warstwę (powiedzmy „usługi lokalne” lub „dostawca danych”) , a następnie umieść go między warstwą danych (jednostka pracy i repozytorium) a warstwami konsumenta danych (np. interfejs użytkownika). Następnie muszę przepisać klasy konsumenckie (CRUD i inne klasy zależne od IRepository), aby były zależne od innego interfejsu. Oraz schemat: ----------------- KLIENT ------------------ | ------------------- SERWER --------------------- [UI] -> [Usługi lokalne/ Dostawca danych ] ---> [Web Services] -> [UoW/Repository] -> [DB] * * * Proszę zauważyć, że mam warstwę usług lokalnych na obecnej architekturze, ale nie ujawnia ona funkcjonalności warstwy danych. Innymi słowy, warstwa interfejsu użytkownika może komunikować się zarówno z warstwą danych, jak i warstwą usług lokalnych, podczas gdy warstwa usług lokalnych również korzysta z warstwy danych. | | | | | | | | ---> | Usługi lokalne | ---> | | | interfejs użytkownika | | | | Dane | | | | | | | ----------------------------> | |


title: Czy natrętny JavaScript jest kiedykolwiek w porządku?

text: Myślałem, że jeśli wszyscy użytkownicy witryny muszą mieć włączoną obsługę JavaScript, czy można używać natrętnego JavaScript? Jestem za stopniowym ulepszaniem, ale jaki jest sens, gdy zaawansowana aplikacja internetowa odbija użytkowników w drzwiach, jeśli mają starą przeglądarkę lub wyłączoną obsługę JavaScript? Mamy bardzo wąską grupę docelową i możemy powiedzieć naszej grupie docelowej, jaką przeglądarkę i wtyczki/funkcje muszą mieć. Więc moje pytanie brzmi, czy w takim przypadku mieszanie JS i HTML jest w porządku? Jak używanie atrybutów onclick.


title: Różne sposoby na zobaczenie monady

text: Podczas nauki Haskella spotkałem się z wieloma samouczkami wyjaśniającymi, czym są monady i dlaczego monady są ważne w Haskell. Każdy z nich używał analogii, żeby łatwiej było uchwycić znaczenie. Pod koniec dnia mam 3 różne poglądy na to, czym jest monada: **Widok 1: Monada jako etykieta** Czasami myślę, że monada jako etykieta określonego typu. Na przykład funkcja typu: mojafunkcja :: IO Int mojafunkcja to funkcja, która zawsze, gdy zostanie wykonana, zwróci wartość Int. Typ wyniku to nie Int, ale IO Int. Tak więc IO jest etykietą wartości Int ostrzegającą użytkownika, aby wiedział, że wartość Int jest wynikiem procesu, w którym została wykonana akcja IO. W związku z tym ta wartość Int została oznaczona jako wartość pochodząca z procesu z IO, dlatego ta wartość jest „brudna”. Twój proces nie jest już czysty. **Widok 2: Monada jako prywatna przestrzeń, w której mogą się zdarzyć nieprzyjemne rzeczy.** W systemie, w którym cały proces jest czysty i surowy, czasami trzeba mieć efekty uboczne. Tak więc monada to tylko mała przestrzeń, która pozwala na robienie nieprzyjemnych efektów ubocznych. W tej przestrzeni możesz uciec od czystego świata, przejść do nieczystego, dokonać procesu, a potem wrócić z wartością. **Widok 3: Monada jak w teorii kategorii** Jest to pogląd, którego nie do końca rozumiem. Monada jest po prostu funktorem tej samej kategorii lub podkategorii. Na przykład masz wartości Int i jako podkategorię IO Int, które są wartościami Int wygenerowanymi po procesie IO. **Czy te poglądy są prawidłowe? Który jest dokładniejszy?**


title: Naucz się programowania systemu Linux, wykonując projekty

text: Mam tylko bardzo podstawowe pojęcie o programowaniu w systemie Linux. Nie robiłem żadnych realnych projektów wykorzystujących programowanie w systemie Linux. W mojej obecnej firmie zajmuję się pracą typu administrator systemu. ale bardziej interesuje mnie programowanie systemu Linux. Niektóre projekty chcę realizować samodzielnie, aby móc je umieścić w swoim CV, gdy będę ubiegał się o dołączenie do innych firm. Uprzejmie powiedz mi, czy są jakieś projekty, w których mógłbym nauczyć się więcej programowania w systemie Linux, robiąc kilka prawdziwych rzeczy programistycznych. Proszę zauważyć, że mam doświadczenie tylko w programowaniu w C, a nie w programowaniu systemu Linux. Ale znam bardzo podstawowe rzeczy w programowaniu systemu Linux. Dziękuję


title: Czy kaczka wpisuje podzbiór polimorfizmu?

text: Od Polimorfizmu na Wikipedii > W informatyce polimorfizm to funkcja języka programowania, która > umożliwia obsługę wartości różnych typów danych przy użyciu jednolitego > interfejsu. Od pisania kaczką na Wikipedii > W programowaniu komputerowym z użyciem języków programowania obiektowego, kaczka > typowanie jest stylem dynamicznego pisania, w którym bieżący zestaw metod i właściwości obiektu określa prawidłową semantykę, a nie jego dziedziczenie z określonej klasy lub implementacja konkretnego > interfejsu. Moja interpretacja jest taka, że w oparciu o typowanie kaczki metody/właściwości obiektów określają poprawną semantykę. Oznacza to, że obecny kształt obiektu determinuje interfejs, który utrzymuje. Z polimorfizmu można powiedzieć, że funkcja jest polimorficzna, jeśli akceptuje wiele różnych typów danych, o ile obsługują one interfejs. Więc jeśli funkcja może wycofać typ, może akceptować wiele różnych typów danych i operować na nich, o ile te typy danych mają prawidłowe metody/właściwości, a tym samym podtrzymują interfejs. (Użycie terminu interfejs nie jest rozumiane jako konstrukcja kodu, ale bardziej jako opisowa konstrukcja dokumentująca) * Jaka jest prawidłowa relacja między kaczuszkiem a polimorfizmem? * Jeśli język może pomijać typ, czy to znaczy, że może robić polimorfizm?


title: Czy SQL Server Service Broker jest odpowiedni do przenoszenia dużych ilości rekordów z jednej bazy danych do drugiej?

text: Posiadam bazę danych, która gromadzi i przetwarza duże ilości rekordów Jednak ze względu na dotychczasowy charakter systemu, z którym pracuję (i uprawnienia, które są) muszę przenieść (przetworzone) rekordy do innej instancji bazy danych (z niewielkimi modyfikacjami pola po drodze) Zidentyfikowane przeze mnie opcje są następujące * Mógłbym ustawić zadanie harmonogramu z przechowywanym procesem, aby przesłać rekordy z dowolną potrzebną logiką * Firma, dla której pracuję, nalega, abym zrzucił rekordy do pliku i ftp je i użyć istniejącej logiki do odpytywania i wstawiania * brokera usług SQL, który wydaje się mieć wbudowaną odporność na błędy i ma udogodnienia do wykonania tego rzeczywistego zadania. Zastanawiam się tylko, jakie mogą być potencjalne pułapki brokera usług SQL i czy jest to właściwa technologia dla praca Każdy ma jakieś sugestie


title: Wskaźnik obiektu z uprzywilejowanym dostępem?

text: Powiedzmy, że masz * class Car z Car->tune() i Car->drive() * class CarDriver * class CarMechanic Każdy obiekt CarDriver i CarMechanic ma odniesienie/wskaźnik do obiektu Car. Obiekt CarDriver wywoła $this->car->drive(), obiekt CarMechanic wywoła $this->car->tune(). Pytanie brzmi, jak mogę uniemożliwić CarDriverowi wywołanie $car->tune() ? Są prawdopodobnie dwa podejścia: 1. Poziom języka: Używanie modyfikatorów dostępu, takich jak public/private/protected, a następnie albo nadużywanie dziedziczenia, albo używanie bardziej egzotycznych funkcji języka, takich jak „klasa przyjaciela” C++. 2. Kompozycja: Podziel samochód na CarFrontend i CarBackend lub utwórz DriverCarWrapper, który udostępnia tylko metodę drive(). Wydaje się to dobrym pomysłem, ale prawdopodobnie wprowadzi bałagan i powielanie kodu, co może przewyższyć korzyści płynące z kontroli dostępu. Zwłaszcza jeśli istnieje wiele metod, które powinny być dostępne dla kierowcy samochodu. Czy są jakieś inne rozwiązania, które przegapiłem? Tło: Mój rzeczywisty przypadek użycia to PHP, ale zadaję to pytanie w wielu językach.


title: Hermetyzować standardowe funkcje języka C?

text: Studiując język programowania C i ucząc się bezpiecznych praktyk, jestem skłonny napisać warstwę funkcjonalności w kilku częściach standardowej biblioteki. Służyłoby to dwóm celom: mógłbym używać standardowych części języka w sposób, który wydaje mi się bardziej znajomy lub racjonalny, i mógłbym łatwo zastąpić tę funkcjonalność własną, jeśli zajdzie taka potrzeba. Mógłbym z tego skorzystać, ale czy powinienem to zrobić? Jako przykład możemy rozważyć zarządzanie pamięcią. Jeśli napisałem malloc() do konstruktorów każdego z moich obiektów, a następnie zdecyduję, że muszę samodzielnie obsłużyć alokację pamięci, muszę edytować konstruktor powiązany z każdym obiektem. Odwołując się do własnej funkcji, mogę zmienić zawartość tej funkcji bez pisania nowych konstruktorów. Wydaje się oczywiste, że powinienem to zrobić, ale jestem przyzwyczajony do Pythona. Czuję się bardzo komfortowo w tym środowisku i nie mam problemu z łączeniem się z jakąkolwiek częścią standardowej biblioteki z jakiejkolwiek części mojego programu, ponieważ wiem, że prawie na pewno pozostawię ten związek nietknięty przez całe życie projektu. Sytuacja, w której wpadam z C, sprawia wrażenie, jakbym próbował ukryć przed sobą język. Czy napisanie warstwy funkcjonalności nad standardową biblioteką C pomoże mi w nauce języka i tworzeniu bazy kodu, czy też ograniczy moje zrozumienie w przyszłości?


title: Czy bycie programistą to coś więcej niż to, na co jestem narażony?

text: Od prawie 3 lat pracuję jako programista. Nie trzeba dodawać, że jest to pierwsza praca, jaką dostałem jako programista po ukończeniu studiów. W każdym razie poszedłem na rozmowę kwalifikacyjną do innej firmy, czując, że muszę iść dalej (2-3 lata to norma dla programisty, prawda?) i podczas rozmowy zacząłem się zastanawiać... Zapytali mnie, czy mam jakieś doświadczenie w usługach internetowych nie. Zapytali mnie o całą masę innych doświadczeń związanych z serwerem i szczerze mówiąc nie wiedziałem, o czym mówią, ani nie pamiętam, o czym mówili. To, co robię w mojej obecnej firmie, to: mamy kilka baz danych, następnie piszę kod dla programu front-end (Vaadin) i kod, aby następnie połączyć się z bazami danych i wykonać wszystkie niezbędne CRUD (Create Read Update Delete) funkcjonalność. I to prawie wszystko... Zastanawiam się więc, czy to jest to, co robi przeciętny programista? Czy jest w tym coś więcej niż to, co robię? Nie mogę się o tym dowiedzieć, ponieważ jest to moja pierwsza praca programisty.


title: Problem z rotacją grafiki 2D Java?

text: Ostatnio próbowałem zaprogramować grę, w której narysowałem prostokąt na ekranie za pomocą ImageIcon. Później zdałem sobie sprawę, że wszystko narysowane później na ekranie obraca się wraz z obrazem narysowanym wcześniej razem z nim w tej samej osi. Czy ktoś może mi powiedzieć dlaczego. A czego mi brakuje? Dziękuję Ci.


title: Strategia testowania gier

text: Odziedziczyłem internetową grę edukacyjną. Przez ostatni rok pracowałem nad ustabilizowaniem kodu i dodaniem nowych funkcji. Większość logiki znajduje się w interfejsie, więc testy jednostkowe zaplecza, choć pomocne, obejmują niewielki procent kodu. Gra dotarła do punktu, w którym zaczyna się komplikować. Istnieją dwa różne tryby dla każdej gry, a gra zachowuje się inaczej w zależności od trybu. Istnieją również różne flagi, które wpływają na rozgrywkę. Jestem programistą aplikacji od ponad 10 lat i to mnie wprawia w zakłopotanie. W świecie przedsiębiorstw algorytm działa zawsze w ten sam sposób. Napiszę test jednostkowy dla algorytmu, oczekuję wartości 42 i wystąpi błąd, jeśli nie otrzymam tej wartości. Jeśli chodzi o gry, jestem zagubiony. Jak je przetestować? Mam do dyspozycji testerów. Potrafię poświęcić czas na pisanie testów jednostkowych. Testerzy są… zawodni. Nie są najlepsi w usuwaniu problemów, a ja nie wyznaczyłem im najlepszego kierunku. Nie spędzając mnóstwo czasu w każdym cyklu wydawniczym testując każdą permutację i kombinację gry, jak powinienem wykorzystać je jako zasób? Testy jednostkowe wydają się ograniczone. Ponieważ większość logiki to javascript (i odziedziczyłem kod spaghetti), mogę użyć pakietu front-end, takiego jak Cucumber lub selen, aby upewnić się, że niektóre funkcje działają. Czy to najlepsza strategia? Jak firmy produkujące gry testują gry? Przeczytałem pytanie "Test Driven Development for Complex Games" (między innymi na stronie), ale nie odnosi się ono do tego, czego szukam. Proszę o strategie, a nie konkretne przykłady jak testować.


title: Jak uniknąć rezygnacji, gdy definiujesz schemat, podczas gdy inni próbują przeciwko niemu programować?

text: Jestem odpowiedzialny za definiowanie schematu XML dla niektórych danych; plan polega na tym, aby różne systemy (wszystkie pod naszą kontrolą) przesyłały pliki XML, które pasują do tego schematu, do centralnego serwera w celu przetworzenia. Nie mam dużej wiedzy na temat projektowania tych innych systemów, więc współpracuję z tymi ekspertami systemowymi, aby ten schemat XML był rozsądny zarówno do konsumpcji (po naszej stronie), jak i produkcji (po ich stronie). Schemat nie jest do końca jednoznaczny i definiuję dane, które chcemy zebrać w tym samym czasie, co definiuję schemat. Istnieje milion sposobów, aby to zrobić, więc istnieje określony proces „zrób coś, pomyśl o tym, porozmawiaj z tym a tak, refaktoruj, powtórz”. Wszystko to powiedziawszy, mamy niefortunną sytuację, w której ja i kilku innych definiujemy rzeczy, a kilku innych programistów to implementuje. Chciałbym napisać trochę kodu, ale nie znalazłem czasu. Prowadzi to do frustrującego cyklu, w którym projekt zmienia się w wieży z kości słoniowej, a następnie ludzie piszący kod muszą go ciągle zmieniać. Unikając szczegółów z różnych powodów, programiści piszący implementację nie są w stanie skutecznie zdefiniować wymagań schematu i danych, które musimy zebrać. Czy powinienem być tym, który piszę i bawię się tymi rzeczami, kiedy wymyślam, jak to powinno być zrobione? Byłoby to dla mnie idealne, ale jesteśmy pod presją, aby coś zrobić i szybciej jest mieć kilka osób, które nad tym pracują, niż tylko ja. Czy mamy w kuchni zbyt wielu kucharzy, a dostawcy plików XML mają wpływ na schemat? Łatwość tworzenia pliku XML powinna być uwzględniona w schemacie, prawda? Czy istnieje lepszy sposób na rozwiązanie tego problemu, czy może rezygnacja jest złem koniecznym, gdy próbujesz latać samolotem podczas jego budowy? **Jaki jest prawidłowy proces tworzenia aplikacji, który zminimalizuje zmarnowany czas?**


title: Niejednoznaczny blok zagnieżdżony If-else w C bez nawiasów klamrowych

text: Rozważmy następujący kod w C: if(34) if(0) printf("Stat1"); else printf("Stat2"); Tutaj pierwszy warunek **if** jest prawdziwy, podczas gdy drugi warunek **if** jest fałszywy. Założyłem więc, że kontrola **NIE** powinna przechodzić do bloku _else_, ponieważ nie zawiera nawiasów obie instrukcje **if** i _else_ razem. Ale kiedy skompilowałem go w kompilatorze GCC, wynik był następujący: **_Stat2_** Oznacza to, że kod skompilowany w podobny sposób jak poniższy kod: if(34) { if(0) printf("Stat1"); else printf("Stat2"); } Nie jestem w stanie zrozumieć, dlaczego kompilator traktuje oba powyższe fragmenty kodu w ten sam sposób.Proszę wyjaśnić.Dzięki. PS-Proszę zignorować wcięcie, napisałem to w ten sposób, aby pokazać mój sposób myślenia o tym, jak powinien działać kod.


title: Witryna, która sugeruje najnowszą aktualizację przeglądarki od tego samego dostawcy

text: Chcę, aby użytkownik uaktualnił przeglądarkę do najnowszej wersji, jednak uważam, że nie należy działać jako ewangelista (uwielbiam też Firefoksa). Wiem o Browsehappy.com, ale szukam witryny, która sugeruje uaktualnienie do najnowszej przeglądarki tego samego dostawcy. Biedna opera jest przedostatnia na tej liście. Czy istnieje strona internetowa, która sugeruje użytkownikom opery tylko najnowszą wersję opery? PS: Ja też nie jestem fanem monopolu web-kitów. Myślę, że podprogowa przeglądarka, która pojawia się wcześniej na liście, będzie prawdopodobnie lepiej postrzegana. Ale proszę, nie ma tu żadnych wojen płomieni!


title: Najlepszy projekt dla narzędzia rezydującego w pamięci

text: Przepraszam, jeśli to skłania się bardziej w kierunku projektowania niż programowania, ale oto idzie. Jaki projekt poleciłbyś dla bazy danych, która jest 1. Rezydująca w pamięci 2. Musi działać w systemie Windows, Linux i (w pewnym sensie) Mac 3. Akceptuj wiele zapytań jednocześnie 4. Miej minimalny narzut, ponieważ oczekuje się, że wyszukiwanie zajmie < 0,25s Ten program implementuje wyszukiwanie specyficzne dla domeny. Pomyśl o tym jako o bazie danych, ale takiej, która wykorzystuje informacje specyficzne dla domeny, aby przewyższyć konwencjonalne wyszukiwanie w bazie danych (na przykład z niestandardowym indeksowaniem Oracle). Posiadamy niestandardową strukturę danych dla naszych danych. Nasz prototyp to prosty exe, który przy każdym uruchomieniu buduje bazę danych w pamięci. Pomyśleliśmy, że może ten program wystarczy, ale został wzbogacony o gniazda, aby mógł nasłuchiwać zapytań. Ta baza danych będzie statyczna. Jego zawartość będzie się rzadko zmieniać. Oczekujemy, że zapytania i rozwiązanie będą dostarczane za pośrednictwem serwisu internetowego.


title: Jaki jest obecnie udział w rynku programów napisanych w .NET?

text: Obecnie przeprowadzamy migrację naszego programu Visual Basic 6.0 do platformy .NET. Grupą docelową są zwykli użytkownicy komputerów stacjonarnych w domu. Omawiając to, zdaliśmy sobie sprawę, że nie możemy wymyślić programów głównego nurtu, które wydają się być napisane w .NET. Czy się mylimy? Czy jest ku temu dobry powód?


title: Jak ulepszyć mój algorytm do analizy wiadomości od użytkowników na Twitterze?

text: Witam Myślę, że mam fajny pomysł do wdrożenia dla dobra ludzkości. Nazywam to FixTheUnFixed. Pomysł wygląda tak, wyobraź sobie, że jedziesz samochodem lub podróżujesz po całym świecie, a kiedy widzisz jakąś przeszkodę lub uszkodzenie - zepsute światło, śmieci zakrywające ulicę lub jakikolwiek inny problem, który chciałbyś, aby odpowiedzialny organ to naprawił. Wszystko, co musisz zrobić, to twitterować, może dodać zdjęcie i oczywiście podać lokalizację, korzystając z usługi dziedziczenia lokalizacji na Twitterze lub Facebooku. @FixTheUnFixed tutaj jest zepsuty hydrant przeciwpożarowy @FixTheUnFixed moja firma komórkowa obciążyła mnie 18 572 $ za korzystanie z mojego iPhone'a na pokładzie. Dużo myślałem o tym, jak przetwarzać wiadomości. Najczęstszymi problemami, które się pojawią, są obawy gminy i chciałbym, aby otrzymali tę lokalizację albo przez retwita, albo e-maila. Moje dwa pomysły na uzyskanie tego adresu to wygooglowanie go (za pomocą Google API) lub po prostu wykonanie zwykłego zapytania wymienionego w tym pseudoalgorytmie: 1. Uzyskaj lokalizację ze statusu na Twitterze lub Facebooku, z którego została wysłana. 2. szukaj słów kluczowych, takich jak śmieci, koty, zwierzęta itp. 3. znajdź odpowiedni organowy adres e-mail, twitter lub konto na Facebooku. 4. wyślij wiadomość na konto autorytetu i prześlij ją do świata publicznego, aby mogli śledzić, jeśli jest jakaś zmiana. Czy w trzecim kroku jest jakiś sprytny sposób na jego wdrożenie? Nie znalazłem na to dobrego sposobu! Nie chcę spamować władz ani publikować spamu podstępnych ludzi. * Jak mogę ulepszyć algorytm? * Jak mogę szukać zasobów komunikacyjnych odpowiednich organów? Dziękuję pierwotnie zapytany tutaj: http://stackoverflow.com/questions/8393424/how-to- Improve-my-algorithm-for-analyzing-twitters-messages-from-users


title: Jak mogę oszacować wartość projektu open source?

text: Staram się wygenerować miernik dla celu oszczędności kosztów firmy. Aby to zrobić, chcę oszacować oszczędności, które osiągnęliśmy, korzystając z aplikacji webowej typu open source, a nie budując ją od podstaw lub kupując rozwiązanie COTS. Jednym z etapów tego procesu jest oszacowanie, ile kosztowałoby nas samodzielne opracowanie aplikacji. Niestety, brakuje mi naprawdę prostego sposobu na zrobienie tego bez przechodzenia przez pełny proces szacowania. Ponieważ mam kod źródłowy, myślę, że powinna istnieć jakaś heurystyka, która mogłaby dać mi bardzo przybliżone oszacowanie czasu pracy programisty potrzebnego do napisania go. Niestety, moje wyszukiwania w sieci na ten temat najczęściej pojawiają się artykuły i opinie o tym, że linie kodu nie są dobrym wskaźnikiem wydajności lub jakości. Jak dotąd moim najlepszym rozwiązaniem jest wybranie liczby wierszy, które programista może napisać w ciągu dnia, a następnie obliczenie liczby godzin pracy programisty. Jeśli pójdę z tą metodą, chciałbym mieć pewne (najlepiej oparte na badaniach) dowody na poparcie mojego twierdzenia o produktywności programistów. Jedyne, co mam dla mnie, to to, że aby wygenerować ostateczną metrykę, wszystko, czego naprawdę potrzebuję, to dolna granica godzin pracy programistów lub kosztów projektu. Im wyższe oszacowanie, tym lepsza będzie moja metryka, ale wolałbym, aby technika szacowania była niepodważalna niż wysoka liczba. Czy istnieje lepszy sposób na oszacowanie wartości projektu open source?


title: kreatywne i złożone vs proste i czytelne

text: Która opcja jest lepsza? Nie zawsze jest tak, że kiedy masz coś kreatywnego, twój kod będzie wyglądał brzydko. Ale czasami robi się trochę brzydko. np. if ( (obiekt1(0)==obiekt2(0) && (obiekt1(1)==obiekt2(1) && (obiekt1(2)==obiekt2(2) && (obiekt1(3)==obiekt2(3) ) retval = true; else retval = false; jest prosty i czytelny bool retValue = (obiekt1(0)==obiekt2(0)) && (obiekt1(1)==obiekt2(1)) && (obiekt1(2)==obiekt2 (2)) && (object1(3)==object2(3));ale posiadanie czegoś takiego sprawi, że niektórzy nowicjusze będą drapać się po głowach.Więc do czego zmierzam?w tym prosty kod wszędzie może czasami utrudnić moją wydajność.Co mam zrobić? mógłbyś pomyśleć o komentowaniu wszędzie tam, gdzie jest to konieczne, ale czasami stajesz się zbyt ciekawy, aby wiedzieć, co się właściwie dzieje.


title: Hojny budżet: jaka jest Twoja idealna konfiguracja?

text: Jeśli miałeś hojny, ale nie śmieszny budżet (tzn. żadnych jachtów!), opisz swoją idealną konfigurację do programowania. Jaki miałbyś sprzęt? Komputer stacjonarny i laptop czy tylko jedno czy drugie? Ile ekranów - dwa, trzy, cztery, więcej? Prywatne biuro, praca z domu, boks? Jakich systemów operacyjnych będziesz używać? Jakie masz narzędzia - IDE, inne narzędzia, bazy danych, VCS, dokumentacja? Jakich lokalnych serwerów programistycznych i testowych oraz innych usług potrzebujesz — serwera VCS? Zbudować serwer? Serwer bazy danych?


title: Czy Lambda jest nadal obsługiwana w Pythonie?

text: Zaledwie rok czy dwa lata temu, pamiętam, jak czytałem konstrukcje Pythona, które zostałyby usunięte z Pythona – jednym z nich było Reduce – i inne konstrukcje, które byłyby podkreślane, takie jak wyrażenia i generatory. Widziałem tutaj bardzo fajny opis tego, jak można uczynić Pythona bardziej funkcjonalnym i zastanawiałem się, na której liście pojawiła się lambda, wspierana lub wkrótce nie będzie obsługiwana.


title: Czym jest to prawo logiczne?

text: Mój przyjaciel pokazał jakiś czas temu nazwę poniższej techniki/prawa logicznego, ale niestety zapomniałem o tej nazwie. Czy ktoś wie, jak to się nazywa? przykład w języku C: !(a || b) W skrócie: !a && !b


title: Pochodzenie litery „X” oznaczającej ikonę zamknięcia

text: Kto dokładnie przedstawił pomysł, że litera „X” powinna być używana do zamykania/wychodzenia z okna lub aplikacji? Według Medium.com, > Pierwszym pojawieniem się [x] w projekcie GUI był prawdopodobnie **Atari TOS** , > prawdopodobnie pod wpływem japońskich konwencji **batsu** i **maru**. > Dzięki wprowadzonym w ostatniej chwili zmianom projektowym w **Windows 95** i masowemu > zastosowaniu systemu Windows na całym świecie, [x] stał się standardowym symbolem > „zamknij”, symbolem, który dziś dominuje w projektowaniu stron internetowych, aplikacji i oprogramowania . Mówi, że litera "x" oznaczająca zamknięcie/wyjście z aplikacji powstała około 1995 roku, ale według mojego starszego, litera "x" oznaczająca wyjście została użyta po raz pierwszy w latach 80-tych w **wordstar 4** na CP/M OS. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/aDnDY.png)


title: Czego muszę się nauczyć, aby decydować o zmianie nazwy/rekompilacji nazw pakietów źródłowych z powodu rebrandingu firmy?

text: Moja firma jest obecnie w trakcie rebrandingu i nazwy marek zostały użyte w nazwach pakietów źródłowych, ale te nazwy są widoczne tylko dla programistów, którzy utrzymują ten kod, więc nikt z kierownictwa projektów nie jest naprawdę zainteresowany ich zmianą, biorąc pod uwagę również, że oznaczałoby to rekompilacja kilku starych komponentów. Jakie czynniki muszę wziąć pod uwagę podejmując decyzję o takiej zmianie? Nie wiem, czy powinienem martwić się kwestiami prawnymi, czy nie, a jeśli tak, to jak rozwiązać ten problem w zarządzaniu projektami. * * * Więcej szczegółów w tle. Mam wszystkie źródła i zależności, ale od czasu rebrandingu firmy inne obszary programistyczne zaadoptowały część kodu, który wymaga zmiany nazwy pakietu, więc nie mogę podjąć decyzji tylko sam, więc nie sprawiam, że kod innych osób zawiesza się z moim kluczowych komponentów i nie mogę zmienić kodu innych obszarów bez zgody użytkowników tych obszarów, więc tak, moja troska jest bardziej polityczna niż techniczna. Postaram się skoordynować zaangażowane obszary, aby mimo wszystko dokonać zmiany, ponieważ wydaje się to najlepszym podejściem. Niestety w mojej firmie nie ma serwera do ciągłej integracji, więc budujemy nasz kod ręcznie na żądanie i aby coś dostać do produkcji muszę uzasadnić zmianę (nawet samą zmianę nazwy pakietu) na QA wymaganiem użytkownika i inną biurokratyczną dokumentacją, więc dlatego w pierwszej kolejności wahałem się ze zmianą.


title: Jak nie przerodzić się w programistę, który zszywa API?

text: Ten usłyszałem, kiedy niedawno rozmawiałem z osobą i zapytałem go, dlaczego szuka zmiany w ciągu roku od dołączenia do swojej poprzedniej firmy. W szczególności firma, o której wiadomo, że zajmuje się przetwarzaniem dużych transakcji, setkami lub tysiącami zamówień przepływających przez system co minutę itp. itd. (wiesz, co się sprzedaje, więc skróćmy to) To, co powiedział mi kandydat, to interesujące - dołączył początkowo, mając nadzieję, że będzie w stanie dostać się do niższych warstw systemu, zrozumieć tajny sos, który łączy niezawodny system o dużej objętości itp. To, co w końcu zrobił, to użycie wielu narzędzi - open source i komercyjnych , i chciał po prostu skleić to wszystko razem, co nigdy nie dało mu żadnego zrozumienia prawdziwej transakcji. Były też napięte terminy pracy, więc nie mógł też naprawdę załapać się przynajmniej na rzeczy open source. Tutaj musiałem się zgodzić. Ale powiedz mi, jak mógłbyś zapobiec przekształceniu się w programistę do łączenia API w tej konkretnej sytuacji? Czy podczas rozmowy kwalifikacyjnej są jakieś oznaki, które sygnalizują ci tę degenerację?


title: Jak mogę określić poziom talentu potencjalnego programisty?

text: Mam koleżankę, która zapytała mnie, czy mogę zostać jej mentorem jako programista. W przeszłości musiałem udzielać korepetycji kilku młodszym programistom, więc mam doświadczenie w pracy z ludźmi na różnych poziomach umiejętności. Jest to jednak pierwszy raz, kiedy nie było **filtrowania wstępnego**, a przyszły programista jest **absolutnym początkującym**. Czy istnieje metoda, która ma szansę zadziałać, aby określić czyjś wrodzony talent?


title: Klasy abstrakcyjne w strukturze pakietu

text: Mam klasę abstrakcyjną, która będzie miała wiele implementatorów. Jest oczywiście wiele miejsc, w których można umieścić klasy abstrakcyjne w strukturze pakietów Javy. Czy klasa abstrakcyjna powinna znajdować się w tym samym pakiecie co implementatory, czy też powinna być w pakiecie „abstrakcyjnym”, czy gdzieś indziej? Proszę wyjaśnić, dlaczego miałbyś to tam umieścić - szukam dyskusji na temat projektowania, a nie tylko tego, co powinienem zrobić w tym konkretnym przypadku.


title: Poprawa umiejętności w nadchodzącym nowym roku

text: Oto kilka podstawowych informacji. 1. Od 10 lat pracuję na Javie. 2. Produkt, nad którym pracuję, zaczął działać około 3 lata temu. Teraz produkt staje się stabilny. 3. Po całej dramaturgii post-produktowej zdobyłem dużą wiedzę na temat Oracle i SQL. Ludzie (głównie kierownictwo) byli na tyle zdesperowani, że powierzyli mi głębokie zadanie związane z wyrocznią nad DBA. Przyznaję, że rozważałem zostanie DBA, ale ostatecznie zdecydowałem się zostać programistą. 4. DBA i kierownictwo wymagają, aby wszystkie zadania związane z DB i zapytaniami wróciły do DBA, co mnie trochę zasmuca. **W skrócie, spodziewam się dużo czasu w przyszłym roku**. Co byś zrobił, aby poprawić swoje umiejętności? Zastanawiam się nad uaktualnieniem mojej wersji Java (choć nie z doświadczenia, używamy JDK1.5) do 1.6 uzyskując certyfikat. Jakiś dobry pomysł od kolegów programistów? \-----------Edytuj --------------------- A co z modelowaniem danych dla aplikacji? Czy myślicie, że to rola programisty?


title: Jakie masz/podajesz powody używania odtwarzacza MP3/iPoda podczas programowania?

text: W mojej ostatniej pracy, jako Project Manager, przekonywałem (bezskutecznie), aby programiści mogli korzystać z odtwarzaczy MP3 podczas pracy. Niestety kultura w tej firmie była taka, że wielu tak zwanych ludzi biznesu nie radziło sobie z koncepcją, że jedni będą mogli korzystać ze swoich odtwarzaczy muzycznych, a inni (np. pracownicy Call Center) nie. Firma, w której pracowałem wcześniej (jako menedżer ds. rozwoju oprogramowania) była otwarta na programistów używających swoich iPodów i dzięki temu uznałem, że są bardziej produktywni - aczkolwiek nie mogli podłączać swoich iPodów do swoich komputerów ze względu na bezpieczeństwo i prawa autorskie powodów. Aby pomóc mi w następnej pracy, jeśli ponownie napotkam tę sytuację, w jaki sposób z powodzeniem uzasadniłbyś zezwolenie na odtwarzacze MP3?


title: Czy dodanie czasu trwania do daty i godziny jest zdefiniowane w ISO 8601?

text: Piszę bibliotekę daty i godziny i trzeba zaimplementować dodawanie czasu trwania do daty i godziny. Jeśli do 31 marca 2012: `2012-03-31` dodam 1 miesiąc trwania: `P1M`: `2012-03-31`, czy norma określa, jaki jest wynik? Ponieważ wynikowa data (31 kwietnia) nie istnieje, istnieją co najmniej dwie możliwości: * Powrót do ostatniego dnia wynikowego miesiąca. Jest to podejście stosowane obecnie przez interfejs API ThreeTen, (alfa) referencyjną implementację JSR-310: ZonedDateTime date = ZonedDateTime.parse("2012-03-31T00:00:00Z"); Czas trwania okresu = Period.parse("P1M"); System.out.println(data.plus(czas trwania).toString()); // 2012-04-30T00:00Z * Przenieś dodatkowy dzień do następnego miesiąca. Jest to podejście przyjęte przez klasę DateTime w PHP: $date = new DateTime('2012-03-31T00:00:00Z'); $duration = new DateInterval('P1M'); echo $date->add($duration)->format('c'); // 2012-05-01T00:00:00+00:00 Dziwię się, że dwie biblioteki data-czas są w tym punkcie sprzeczne, więc zastanawiam się, czy norma definiuje wynik tej operacji?


title: Czy mogę uznać programowanie zorientowane interfejsowo za dobre programowanie zorientowane obiektowo?

text: Programuję od dziesięcioleci, ale nie byłem przyzwyczajony do programowania obiektowego. Ale przez ostatnie lata miałem okazję poznać OOP, jego zasady i wiele świetnych wzorców. Odkąd nauczyłem się OOP, próbowałem zastosować je w kilku projektach i uznałem te projekty za udane. Niestety nie podążałem za ekstremalnym programowaniem, które sugeruje napisanie najpierw testu, głównie dlatego, że ich ramy czasowe były napięte. To, co zrobiłem dla tych projektów, to 1. Zidentyfikować wszystkie potrzebne klasy i utworzyć je z odpowiednimi właściwościami i metodami 2. Zawsze, gdy istnieje zależność między klasami, napisz interfejs między nimi 3. Sprawdź, czy istnieją wzorce dla pewnych relacji między klasami do zastąpienia Przez udane, chodziło mi o to, że był to szybki wysiłek programistyczny, klasy można lepiej wykorzystać ponownie i na tyle elastyczne, że inny programista nie musi zmieniać czegoś innego, aby naprawić inną część. Ale zastanawiam się, czy to dobra praktyka. Oczywiście wiem, że pisanie testów jednostkowych muszę postawić na pierwszym miejscu w moim procesie pracy. Ale poza tym, czy jest jakiś problem z tym podejściem - tworzeniem wielu interfejsów - w dłuższej perspektywie?


title: Jakie są najlepsze praktyki dotyczące wypełniania testowej bazy danych i korzystania z niej?

text: Dlatego opracowuję kilka opartych na bazie danych usług internetowych RESTful Java, używając Hibernate i MySQL. Do celów testowych używam bazy danych w pamięci H2. H2 jest fajny i szybki, więc udało się to naprawdę dobrze. Jedynym problemem jest to, że zapełnianie tabel DB przed moimi testami jest dość żmudne. Zasadniczo tworzę i utrwalam kilka obiektów ręcznie. Zastanawiam się, czy może idę złą drogą. Proszę powiedz mi, jakie są najlepsze praktyki dotyczące robienia tego, co próbuję zrobić? Jakieś narzędzia, które mogłyby mi pomóc? Jakieś ogólne strategie lub wskazówki?


title: Czy NaCl oznacza śmierć Internet Explorera?

text: Z Wikipedii -> Google Native Client (NaCl) to technologia piaskownicy do uruchamiania podzbioru > kodu natywnego Intel x86 lub ARM przy użyciu programowej izolacji błędów. Proponuje się > bezpieczne uruchamianie kodu natywnego z przeglądarki internetowej, **pozwalając aplikacjom > internetowym działać z prędkością bliską natywnej**. (Podkreślenie) (Źródło) Skompilowany kod C++ działający w przeglądarce? Czy inne firmy pracują nad podobną ofertą? Co by to oznaczało dla krajobrazu przeglądarki?


title: Co nowego w systemie Windows 8 dla aplikacji komputerowych?

text: Widzę wszelkiego rodzaju demonstracje dotyczące kompilacji nowych funkcji w systemie Windows 8 dla aplikacji Metro, ale niewiele w przypadku aplikacji komputerowych. Czy jest coś nowego dla aplikacji w stylu komputerów stacjonarnych; czy nic się nie zmieniło?


title: Jakie są dobre zadania do przydzielenia studentom/stażystom w trybie współpracy?

text: Moja firma prowadzi śledztwo dotyczące możliwości zatrudnienia studenta Uniwersytetu Informatycznego (rok licencjacki 3) na 4- lub 8-miesięczny okres pracy. (Nie jestem pewien, jak rozpoznawalny jest termin kooperacja na arenie międzynarodowej – to w zasadzie płatny staż, po którym student wraca na studia.) Mój zespół tworzy aplikację webową w ASP.NET i podręcznych grubych klientów na iOS, BlackBerry i Android. Dla każdego z was, który wprowadził stażystów do doświadczonego zespołu programistycznego, jakie zadania znalazł dla nich do wykonania? Zdaję sobie sprawę, że to trudne pytanie, ponieważ każda odpowiedź może być dość specyficzna dla indywidualnej firmy. Spodziewałbym się następujących: zadań, które wymagają mentoringu, ale nie opieki nad dziećmi, zadań, których ukończenie zajmie kilka tygodni (aby mentor mógł pozostać produktywny) zadań, które poszerzą wiedzę uczniów na temat tworzenia oprogramowania. pokrycie kodu w naszych testach jednostkowych lub opracowywanie zaprojektowanej funkcji lub ulepszanie/pisanie brakującej dokumentacji wymagań z funkcji, które zostały dodane bez żadnej dokumentacji pomocniczej. Nigdy nie byłam na stażu, więc nie wiem, jakie zadania są wartościowe zarówno dla studenta, jak i dla firmy. Jakieś zalecenia? Edycja: To są doskonałe i przemyślane odpowiedzi, które bardzo mi pomogły. Bardzo wam wszystkim dziękuję. Mogę wybrać tylko jedną odpowiedź, więc pójdę za tłumem i przyjmę najpopularniejszą.


title: Dlaczego PHP jest tak często używane na serwerach WWW?

text: Mój serwer WWW używa PHP, podobnie jak 76,9% serwerów WWW według W3Techs: http://w3techs.com/technologies/overview/programming_language/all Powodem, dla którego używam PHP jest bezwładność wynikająca z tego, że wszyscy inni używają go na serwerach WWW . Co takiego jest w PHP, że jest tak wszechobecne na serwerach WWW? (Zauważ, że to pytanie jest podobne do następującego, ale kieruje je w innym kierunku: Dlaczego Java nie jest używana do tworzenia nowoczesnych aplikacji internetowych?)


title: Jak programiści na Wschodzie widzą programistów na Zachodzie?

text: Druga połowa tego pytania: Jak programiści na zachodzie widzą programistów na wschodzie? Myślę, że równie interesujące i ważne jest zobaczenie, jak programiści na wschodzie widzą programistów na zachodzie. * * * Wschodnia część świata (Indie/Chiny/Filipiny) jest często postrzegana jako dostarczająca głównie usługi outsourcingowe do świata zachodniego (USA i Europa). Czy masz doświadczenie w pracy w zespole offshore? Jeśli tak, to jak było? Czy masz jakieś uogólnione pomysły lub opinie na temat programistów z Zachodu (np. Czy współpracują, czy dostarczają na czas, czy wykonują dobrą pracę?)


title: Zalecane wymagania podczas outsourcingu budowy witryny xhtml/css?

text: Rozważam outsourcing części naszego projektu tworzenia aplikacji webowych dla freelancerów, a mianowicie części dotyczącej budowania strony. Przez budowanie witryny mam na myśli proces tworzenia plików szablonów xhtml/css, z fikcyjną zawartością, z pliku psd (lub dowolnego innego pliku układu graficznego). Powstałe pliki xhtml/css będą używane przez naszych programistów jako szablony do renderowania stron w oparciu o cms. CMS w tym przypadku to Drupal, ale to może nie mieć większego znaczenia. Szukam dobrego zestawu wymagań, który 1. zaowocuje dobrej jakości kodem xhtml/css, zgodnym z dzisiejszymi standardami 2. niewiele pozostawia wyobraźni freelancera w zakresie tego, czego potrzebuję Zastanawiam się nad takimi wymaganiami jak : * Prawidłowy typ dokumentu XHTML 1.0 Transitional, walidowany przez validator.w3.org * Identyczne renderowanie we wszystkich nowoczesnych przeglądarkach (FF, Chrome, Safari, Opera, IE7-8) oraz w IE6 * Wszystkie otwierające i zamykające elementy blokowe powinny być odpowiednio skomentowane, odwołując się do funkcjonalnej części interfejsu użytkownika, do której należą (menu, pasek narzędzi, zawartość itp.) * Brak wbudowanych definicji CSS I tak dalej. Jak uporządkowałbyś taką listę? Jakie wymagania byś dodał? Edycja: rozpoczęte zlecenie. Chciałbym mieć jasny zestaw wymagań, który oszczędzi mi trochę kłopotów.


title: Czy należy używać sesji lub pamięci podręcznej, aby zachować czas ostatniego odpytywania podczas odpytywania serwera w odstępach?

text: Tworzę aplikację czatu internetowego przy użyciu sesji, aby zachować czas ostatniego odpytywania aplikacji, aby serwer mógł określić, czy wiadomości istnieją między bieżącym czasem odpytywania a ostatnim czasem odpytywania. Działa to dobrze, jednak istnieje kilka przypadków, w których wiadomości wysłane od klienta A nie są odbierane przez klienta B lub ta sama wiadomość jest tworzona dwukrotnie na kliencie B. Oczywiście wiadomości nie są tracone, zawsze są przechowywane w bazie danych po ich wysłano. Zastanawiam się, czy jest to związane z moim użyciem pamięci sesji, w której ostatni i bieżący czas odpytywania obu klientów są **zawsze różne** (ze względu na brak dostępu do danych sesji dla innego użytkownika/klienta)? A może powinienem zmienić na pamięć podręczną, aby ostatni i bieżący czas odpytywania obu klientów na serwerze był **zawsze taki sam**? p.s. Używam serwera Apache i MySQL, chociaż z funkcją AJAX setTimeout() do odpytywania serwera w regularnych odstępach czasu.


title: Jaki jest najlepszy sposób korzystania z dziedziczenia z ORM-ami?

text: Jeśli mam tabelę Osoby, a te osoby mogą znajdować się pod różnymi adresami, a każdy adres może mieć więcej niż jedną osobę, jest to relacja wiele do wielu. Tak więc, używając ORM-ów, takich jak Entity Framework i Django, opanowałem to. Ale mój problem polega na tym, że istnieją różne typy ludzi, takie jak pracownicy, klienci i inni klienci, którzy również mają te dziedziny. To zostawiłoby mi klasę najwyższego poziomu o nazwie Person, która ma relację wiele-do-wielu z adresem, a następnie te inne klasy (Klienci itp.), które dziedziczą po osobie. Przeczytałem, że istnieją różne rodzaje dziedziczenia, więc jakie byłoby najlepsze podejście?


title: Jaka jest maksymalna wartość indeksu tablicy ArrayList?

text: Myślałem o tym. Możesz mieć dostęp do nieskończonej pamięci (jeden komputer z dużą ilością pamięci RAM), dzięki czemu możesz dodawać coraz więcej elementów do swojej ArrayList. Ale myślę, że dostęp do elementów BY INDEX można uzyskać tylko do określonej wartości indeksu. Maksymalny rozmiar tego indeksu może wynosić = maksymalna liczba, jaką może reprezentować Twój komputer, czyli długa 9 223 372 036 854 775 807 w Javie. Wiem, że dostęp do elementu NEXT można uzyskać za pomocą iteratora. Ale jak uzyskać dostęp do elementów po indeksie (9 223 372 036 854 775 807)TH przy użyciu numeru indeksu?


title: Narzędzia do modelowania danych i przepływów pracy przy użyciu ustrukturyzowanych plików tekstowych

text: Rozważ przypadek, w którym chcę wypróbować jakiś pomysł na aplikację. Ale chcę uniknąć inwestowania dużo wysiłku w kodowanie schematu interfejsu użytkownika/przepływów pracy/bazy danych itp., zanim zobaczę, że będzie to dla mnie przydatne (jako przykład potencjalnego użytkownika). Moim pomysłem jest zachowanie lekkości i umieszczenie wszystkich danych w plikach tekstowych. Tak więc komponenty mogą wyglądać następująco: 1. Obiekty domeny są reprezentowane przez pliki tekstowe lub ich fragmenty 2. Obiekty domeny są grupowane według ich typu za pomocą katalogów 3. Strukturyzacja plików przy użyciu formatu przyjaznego zarówno dla człowieka, jak i maszyny, np. YAML 4. Użyj jakiegoś inteligentnego edytora tekstu (np. vim, emacs, rubymine) do edycji i nawigacji w tych plikach 5. Użyj schematów kolorów i makr / niestandardowych poleceń edytora tekstu, aby skutecznie manipulować tymi plikami 6. Użyj skryptów (lub lekkiej sieci takie jak Sinatra), aby wypróbować kilka pomysłów na logikę biznesową na szczycie modelu danych Pytanie brzmi: **Czy istnieją narzędzia lub zestawy narzędzi, które wspierają lub mogą być zaadaptowane do tego podejścia?** Również wszelkie **pomysły, linki do artykułów/innych źródła wiedzy** są mile widziane. I bardziej szczegółowe pytanie: _Jaki jest najprostszy sposób indeksowania i aktualizowania indeksu plików z plikami YAML_?


Jak ważny byłby kurs statystyki dla programisty? Dokładniej biorąc pod uwagę opis: > 2510 Statystyka dla studentów nauk fizycznych (K) i (W) analizuje elementy prawdopodobieństwa, prawdopodobieństwo warunkowe, twierdzenie Bayesa, dyskretne zmienne losowe, dystrybuantę skumulowaną, wprowadzenie do zmiennych ciągłych losowych, matematyczne oczekiwanie, estymacja średniej, proporcji > i wariancji, testowanie hipotez dla jednego przypadku Próbuję dowiedzieć się, czy mam miejsce na dodanie kolejnych kursów CS. Ten kurs (STAT 2510) nie jest wymagany, ale jest „zalecany”.


title: Potrzebna najlepsza strategia przemierzania / pomoc logiczna

text: **Tło:** Oto scenariusz, wyobraź sobie, że mam małego robota. Daję temu robotowi Mapę i chcę, aby przemierzał mapę, po wykonaniu tej czynności chcę, aby Robot podał mi najkrótszą możliwą ścieżkę na mapie. Oto przykład mapy: ![Mapa robota](http://i.stack.imgur.com/Rs5kd.jpg) **Trudności:** Robot otrzymuje mapę w postaci HashMap. Dla powyższej mapy będzie to mniej więcej tak: A > B, E B > A, C, E C > B, E D > E E > A, B, C, D, F F > E Czyli węzeł [ A ] ma sąsiadów [ B ] i [ E ] i tak dalej. Robot może znać tylko sąsiadów węzła, w którym aktualnie się znajduje. Tak więc tylko wtedy, gdy w węźle [ A ] Robot będzie wiedział, że sąsiadami [ A ] są [ B ] i [ E ]. Robot nie ma możliwości dowiedzenia się, jakie są sąsiedzi [ B ], chyba że znajduje się w [ B ], gdy już tam są, Robot może wywołać metodę **getNeighbouringNodes()**, aby znaleźć sąsiadów (Returned to Robot as a List) . **Obecne myślenie:** W tej chwili moja logika na uzyskanie najkrótszej ścieżki od początku do końca jest następująca: Zasadniczo jest to pierwszy krok wszerz. Raz na węźle początkowym [ A ] otrzymuję listę sąsiednich węzłów, a następnie odwiedzam pierwszego sąsiada z listy [ B ]. Raz w [ B ] wywołuję metodę **isThisAnExitNode()**, aby sprawdzić, czy [ B ] jest węzłem wyjściowym, jeśli tak, napisz moją krótką ścieżkę i zastanów się nad mapą. Jeśli nie, wracam do węzła [ A ] i chwytam następnego sąsiada [ A ], którym jest [ E ]. Zrób to samo z [ E ], teraz jeśli nie znaleziono węzła wyjściowego, przechodzę do [ B ], aby zbadać jego sąsiadów. Myślę, że masz pomysł. Moje pytanie brzmi, czy robię to dobrze? Czy istnieje lepszy, bardziej efektywny sposób niż moja metoda przemierzania? Każda pomoc byłaby bardzo mile widziana. Dziękuję.


title: Jak pokazać w relacji kompozycyjnej, że przedmiot wie o pojemniku?

text: Rysuję diagram klas i zauważyłem, że czasami mam relację (skład lub agregację), w której element używa kontenera, a czasami nie. **Jaka jest wizualna różnica w kompozycji, w której klasa elementu używa klasy kontenera, a gdy klasa elementu nie wie o klasie kontenera?**


title: jak mnożyć terminy „specjalne”, np. nazwy klas

text: Dość często odnoszę się w tekście do obiektów, które mają ścisłe konwencje nazewnictwa, np. Obiekty, procesy, usługi Java. Staję przed dylematem, jak zamienić te nazwy w liczbę mnogą. Wydaje się błędem zanieczyszczanie znaczącej nazwy przez dodanie „s” - lub, co gorsza, liczby mnogiej, która modyfikuje resztę nazwy, np. SomethingUtility -> SomethingUtilities. Co się stanie, jeśli ktoś wyszuka imię i nazwisko? Lub wycina i wkleja z mojego komentarza, aby przeszukać plik dziennika? Czasami uciekam się do niegramatycznego apostrofu, ale może to pomylić liczbę mnogą z własnością. Czy jest lepsze rozwiązanie?


title: Czy tworząc wtyczkę lub samodzielną aplikację oprogramowania, mogę zawrzeć w jej nazwie nazwę aplikacji hosta?

text: Tworzę komercyjne oprogramowanie i chcę je wkrótce opublikować. Czy w tytule mojego produktu mogę umieścić słowa takie jak Photoshop, Visual Studio, Delphi itp.? Na przykład pełna nazwa może brzmieć mniej więcej tak: „Mój produkt dla Photoshopa wer. 123” lub „Mój produkt dla Delphi 123”.


title: Jak poprowadzić interesariuszy, aby nie oddalili się od wizji scrum?

text: Rozważmy następujący scenariusz: Interesariusz(y): Zbudujmy aplikację internetową do zarządzania danymi finansowymi użytkownika. Zespół Scrum: Ok, zróbmy to. . . . **Po 3 sprintach** Interesariusz(e): Zaimplementujmy również system mailingowy, aby użytkownik, gdy stan finansowy użytkownika nie był dobry, został ostrzeżony. Zespół Scrum: Ok, to nie takie trudne. Zrobimy to. . . . **Po 5 sprintach** Udziałowcy: Zostańmy dostawcą poczty. W jaki sposób zespół scrumowy powinien prowadzić interesariuszy, aby pozostali w zakresie wizji scrum? Może bardziej fundamentalne pytanie brzmi: czy w ogóle? **Aktualizacja:** Oczywiście istnieje właściciel produktu. Ale przez zespół scrumowy miałem na myśli PO, SM i Team.


title: Przechowywanie punktu końcowego WCF w rejestrze — obawy o bezpieczeństwo

text: Przechowuję mój punkt końcowy wcf w rejestrze i używam go za każdym razem, gdy moja aplikacja uruchamia się w celu utworzenia wystąpienia obiektu pochodnego wcf. Użytkownik może zmienić lokalizację punktu końcowego na inny serwer, a rejestr zostanie zaktualizowany. Martwię się o bezpieczeństwo... powiedzmy, że złośliwy użytkownik aktualizuje mój ustawiony klucz rejestru, a to spowoduje, że aplikacja kliencka nawiąże połączenie z nie wiadomo gdzie... Jakie są najlepsze praktyki tutaj, do czego ja Robię?


title: Ruchy tłumu z Pythonem

text: Zrobiłem program do obliczenia czasu potrzebnego na ewakuację pomieszczenia. Program przyjmuje w argumentach liczbę osób (N), wymiary pomieszczenia (L,l) oraz położenie drzwi wyjściowych. Osoby są reprezentowane przez 1, a wolne miejsca przez 0. Na każdym kroku ludzie mogą poruszać się o jedno pole. Istnieje licznik, który zlicza ilość kroków. Czasami jednak otrzymuję liczbę kroków, która jest mniejsza niż liczba osób. I normalnie, krok po kroku może wyjść maksymalnie jedna osoba. Gdzie jest błąd? Dziękuję Ci. def ewakuacja(N,L,l,iporte,jporte): a=np.zeros((L,l),dtype=int) Z=np.sum(a) dla hw zakresie(N): ir=rd. randint(0,L) jr=rd.randint(0,l) while (a[ir,jr]==1): ir=rd.randint(0,L) jr=rd.randint(0,l) a [ir,jr]=1 A=0 for i in range(L): for j in range(l): jeśli a[i,j]==1: A=A+1 count=0 run=True podczas pracy : #print (a) count=count+1 a[iporte,jporte]=0 for i in range(L): for j in range(l): if a[i,j]==1: d=np. jedynki(4)*10000 jeśli i >=0 oraz i +1 <= L i j >=0 oraz j+1 <= l: jeśli i >0 oraz a[i-1,j]==0: d[ 0]=np.sqrt((i-1-port)**2+(j-jport )**2) jeśli i <L-1 i a[i+1,j]==0: d [1]= np. sqrt((i+1-iporte )**2+(j-jporte )**2) jeśli j >0 i a[i,j-1]==0: d [2]= np.sqrt((i-iporte)**2+(j-1-jporte)**2) jeśli j <l-1 i a[i,j+1]==0: d [3]= np.sqrt((i-iporte)**2+(j+1-jporte)**2) dmin=min(d) kmin= [] for k in range(4): if d[k]==dmin: kmin.append(k) if len(kmin)==2: b=rd.randint(0,2) if b==0: kmin=kmin[0] jeśli b==1: kmin=kmin[1] else : kmin=kmin[0] jeśli kmin==0 i i>0 oraz a[i-1,j]!=2: a[i-1,j]=3 a[i,j]=0 jeśli kmin= =1 i i<L-1 oraz a[i+1,j]!=2: a[i+1,j]=3 a[i,j]=0 jeśli kmin==2 i j>0 oraz a [i,j-1]!=2: a[i,j-1]=3 a[i,j]=0 jeśli kmin==3 i j<l-1 oraz a[i,j+1]! =2: a[i,j+1]=3 a[i,j]=0 jeśli a[i,j]==2: a[i,j]=2 jeśli a[i,j]==0 : a[i,j]=0 dla i z zakresu(L): dla j z zakresu(l): jeśli a[i,j]==3: a[i,j]=1 m=0 dla i w zakresie(L): dla j w zakresie(l): m=m+a[i,j] jeśli m==Z: run=False liczba zwrotów


title: Dlaczego te pozornie niepotrzebne scalenia występują w git?

text: Rozważ ten zrzut ekranu z naszego repozytorium programistycznego: ![Branching](http://i.stack.imgur.com/SXGpq.png) Jesteśmy stosunkowo nowi w git, więc sprawy wciąż są nieco zagmatwane. Pytanie pod ręką: Jeśli spojrzysz na moje zatwierdzenia na samej górze; są dla nas mylące. Dlaczego muszę coś scalić, jeśli nawet niczego nie rozgałęziłem? Zatwierdziłem zatwierdzenie `adjust buildpath`, a potem git natychmiast zmusił mnie do scalenia. ale z czym? Gałąź „zaproszenia” nie jest dla mnie interesująca i nigdy jej w żaden sposób nie dotykałem. Skąd wzięła się ta „anonimowa” niebieska gałąź i dlaczego? Mój kolega (niebieski awatar) pracuje obecnie tylko w gałęzi `zaproszenia`. Czy ktoś może mi wyjaśnić, dlaczego tak się dzieje w kategoriach git-layman (jak powiedziałem, jesteśmy w tym nowi)?


title: Najlepsze praktyki dotyczące skryptów tymczasowych (Python)

text: Używam dwóch oddzielnych programów, które są na tyle podobne, że dzielą dużo kodu. Często uruchamiam te programy i po ocenie wyników. Jest to bardzo płynny proces i za każdym razem jest inny niż poprzednio. Obecnie piszę skrypt o nazwie coś w rodzaju: "temp_evaluate_program_A", a następnie skopiuję go do "temp_evaluate_program_B" i zmienię kilka linijek, pisząc dużo kodu w locie. Często kod nie jest zbyt czytelny i tylko jego fragmenty zostaną użyte ponownie. Wydaje się to nieoptymalne, ponieważ otrzymuję dużo duplikacji. Co robią inni ludzie w tych płynnych sytuacjach, w których istnieje możliwość współdzielenia kodu między powiązanymi programami i ponownego wykorzystania kodu w czasie, ale zakres jest ograniczony.


title: Najlepszy sposób na obsługę dynamicznej infografiki za pomocą javascript?

text: Obecnie przydzielono mi projekt do stworzenia następujących elementów za pomocą javascript, produkt końcowy można obejrzeć tutaj: http://i1245.photobucket.com/albums/gg583/leetpete1994/Infografic-TrafficSources_zpsf50dfa6d.png W zasadzie to moja praca dostarczony plik PDF i stworzyć sposób na dynamiczne wyświetlanie danych, które przekazuje obraz. Same dane będą obliczane gdzie indziej, więc jedyne o co muszę się martwić, to zaakceptować wartości dla każdej zlewki i odpowiednio je wypełnić. Mój pomysł w tej chwili: W tej chwili mój pomysł wykorzystuje płótno. Stworzyłem klasę zlewek, a następnie stworzyłem 5 zlewek jako instancję klasy. To działa całkiem nieźle, a ja siedzę z płótnem, które ma 5 pustych zlewek we właściwych miejscach. Podzieliłem każdą zlewkę przez 100, a następnie mogę poprawnie wypełnić każdą z nich potrzebną ilością pikseli, aby była jakąkolwiek procentem, ale tutaj natrafiam na problemy. Każda zlewka ma inny kształt, a gdy każda zostanie napełniona, kształt się zmienia. Dlatego mam trudności z wciąganiem płynu do zlewek. Po drugie, jeśli uda mi się prawidłowo nabrać płyn, to zakryje szczegóły zlewki. Gdybym najpierw zrobił płyn, a potem zlewki, byłby to odwrotny problem. Czy istnieje lepszy sposób na zrobienie tego lub łatwe narysowanie dziwnych kształtów na płótnie? Zaczynam myśleć, że użycie płótna nie będzie najlepszym sposobem. Wiem, że mógłbym po prostu zrobić kilka obrazów dla każdego przy różnych poziomach cieczy, ale chcę uniknąć używania tak wielu obrazów w produkcie końcowym.


title: Jak programiści powinni podejść do zarządzania złożonymi słowami w liczbie mnogiej za pomocą ActiveRecord?

text: Bawię się `pluralize` w wierszu poleceń i zaczyna mnie to przerażać. Wielokrotność _liścia to _liść_ (nie _liść_ ) Wielokrotność _kaktusa_ to _kaktus_ \- nie _kaktusy_ ani nawet _kaktusy_. Promień staje się promieniem zamiast promienia, ale poprawnie otrzymuje kobiety, ośmiornice, noże i errata (najlepsze rzeczy w życiu). Jak rozumiem, ActiveRecord używa tej samej metody liczby mnogiej, której ja używam. Z moich testów wynika, że jeśli bez zastanowienia zrobisz wystarczającą liczbę tabel, w końcu napotkasz problem, w którym nie będziesz mógł znaleźć właściwej tabeli, ponieważ spodziewałeś się, że liczba mnoga będzie inna. Czy konwencjonalnym zaleceniem jest po prostu przetestowanie wszystkich liczb mnogich w wierszu poleceń i zanotowanie, jak będzie się nazywać tabela? A może większość programistów po prostu określa coś jako „niepoliczalne”, gdy robi się niewyraźne? Uwaga boczna – brak tagu „ActiveRecord”?


title: Czy rekurencja jest przykładem bycia „zbyt sprytnym” podczas programowania?

text: Przeczytałem kilka książek i nauczyłem się z doświadczenia, że optymalizacja kodu do punktu, w którym jest on nieodgadniony lub wymyślanie niezwykle szybkiego, ale niezwykle złożonego rozwiązania problemu, nie jest pożądane podczas pracy w zespołach, a nawet podczas pracy samemu i jakiś czas później musisz zrozumieć swoje sprytne rozwiązanie. Moje pytanie brzmi, czy rekurencję należy traktować w ten sam sposób? Czy przeciętny programista łatwo rozumie rekurencję i dlatego należy jej używać bezkarnie, czy też przeciętny programista nie bardzo dobrze rozumie rekurencję i należy trzymać się od niej z daleka ze względu na ogólną produktywność zespołu? Wiem, że są proste odpowiedzi: „Każdy programista, który nie rozumie rekurencji, nie jest wart ziarnka soli, więc nie martw się o nich”, ale zastanawiałem się, czy wszyscy mielibyście jakieś doświadczenie w prawdziwym świecie, które chcielibyście udostępnienia, które wyjaśniłoby sprawę bardziej niż opinia, o której właśnie wspomniałem.


title: Współpraca między klientem, web designerem i web developerem

text: Zajmuję się przede wszystkim tworzeniem stron internetowych (programowanie back-end) - ale zamierzam oferować moim klientom pełną obsługę, od koncepcji po projektowanie marki, makiety Photoshopa i wszystko inne. Zdaję sobie sprawę, że dobrym pomysłem jest powierzenie tego aspektu projektowego komuś, komu ufam. Moje pytanie dotyczy bardziej procesu: wyobrażam sobie, że aby projektant mógł naprawdę uchwycić to, co klient chce stworzyć, potrzebowałby jakiejś interakcji. Dlatego czy ktoś wie, czy wspólne jest doprowadzanie obu stron do trójstronnej dyskusji? A może częściej pobiera się wszystkie informacje od klienta, a następnie przekazuje je projektantowi i działa jako pośrednik w obie strony? W końcu jestem klientem projektanta. Jakikolwiek wgląd w to byłby świetny


title: Co to jest użycie uniwersalnych nazw znaków w identyfikatorach w C++

text: Standard C++ (zauważyłem to w nowym, ale istniał już w C++03) określa uniwersalne nazwy znaków, pisane jako `\uNNNN` i `\UNNNNNNNN` i reprezentujące znaki za pomocą punktów kodowych Unicode `NNNN`/ „NNNNNNNN”. Jest to przydatne w przypadku literałów łańcuchowych, zwłaszcza że jawnie zdefiniowane są również literały łańcuchowe UTF-8, UTF-16 i UCS-4. Jednak uniwersalne literały znakowe są również dozwolone w identyfikatorach. Jaka jest za tym motywacja? Składnia jest oczywiście całkowicie nieczytelna, identyfikatory mogą być zniekształcone dla linkera, a i tak nie było żadnej standardowej funkcji do pobierania symboli po nazwie. Dlaczego więc ktokolwiek miałby używać identyfikatora z uniwersalnymi literałami znakowymi? Edycja: Ponieważ faktycznie istniał już w C++03, dodatkowe pytanie brzmi: czy rzeczywiście widziałeś kod, który go używał?


title: Jak mogę dodać wersję pliku do nazwy pliku za pomocą Tortoise-SVN?

text: Chciałbym zacząć nadawać unikatowe nazwy plikom "cacheable" - tj. *.css i *.js - aby zapobiec buforowaniu, bez konieczności zmiany ustawień serwera WWW (jak obecnie robi się w IIS). Na przykład, zróbmy plik JavaScript o nazwie `global.js`. Idąc dalej, chciałbym, aby miał on nazwę `global.123.js` po zaewidencjonowaniu wersji 123. Wymagałoby to również: * Poprzednia wersja pliku - być może była to `global.115.js` \ - jest usuwany po wdrożeniu pliku. * Wszystkie odniesienia do pliku są aktualizowane o nową nazwę pliku Jak mam to zrobić? Jakie obawy muszę wziąć pod uwagę?


title: Jaki wzorzec projektowy oddziela konwertery transformacji

text: Do konwersji **modelu obiektów Java** do **XML** używam następującego projektu: Dla **różnych typów** obiektów (np. typy pierwotne, kolekcje, null, itp.) definiuję każdy własny * *konwerter** , który działa odpowiednio do danego typu. W ten sposób można go łatwo rozszerzyć bez dodawania kodu do ogromnej konstrukcji if-else-then. Konwertery są wybierane metodą, która sprawdza, czy obiekt jest w ogóle **konwertowalny** i przy użyciu kolejności priorytetów. Kolejność priorytetów jest ważna, więc powiedzmy, że `Lista` nie jest konwertowana przez konwerter POJO, mimo że jest konwertowalna jako taka, bardziej odpowiednie byłoby użycie konwertera kolekcji. **Co to za wzorzec projektowy?** Przychodzi mi tylko do głowy podobieństwo do wzorca poleceń.


title: Zmiana licencji w forku z GPL na kompatybilną z GPL?

text: Rozwinąłem projekt, który został wydany na licencji GPL i dokonałem istotnych modyfikacji, jednak nadal istnieją pewne części i ogólne pomysły, które są takie same jak poprzednie. Ze względu na zainteresowanie użytkowników zastanawiam się jak, jeśli w ogóle, mogę przelicencjonować projekt. Inny programista i ja wielokrotnie próbowaliśmy skontaktować się z autorem, ale nigdy nie odpowiedział. Ponieważ od kilku lat nie było żadnych aktualizacji, rozważam porzucenie projektu upstream i patrzę na inne opcje. GNU wymienia Apache i Modified BSD jako kompatybilne z GPL, które są dwiema licencjami, które pojawiają się często i są mniej „wirusowe” niż GPL. Skoro są kompatybilne, czy mogę po prostu ponownie licencjonować swój projekt z jedną z tych licencji? Jeśli nie mogę tego zrobić, czy muszę zmienić licencję? Jest to ważne, ponieważ jest kilku użytkowników, którzy mają oprogramowanie niezgodne z GPL, co uniemożliwia im zaadoptowanie projektu. Staram się unikać po prostu przepisywania wszystkiego, co jest trudne, ponieważ istnieje tylko kilka dobrych (lub poprawnych) sposobów realizacji celów projektu i skończyłbym dzieleniem się włosami na temat tego, co stanowi kod „pochodny”.


title: Czy jest to dobra miara wykorzystania skryptów PHP w systemie?

text: Próbowałem znaleźć sposób, aby uzyskać miarę, ile skrypt PHP kosztuje pamięć serwera. Cóż, znalazłem tam kilka rozwiązań, które wymagają oprogramowania do przeprowadzenia testów, a nawet zainstalowania czegoś na serwerze. Te rozwiązania nie są tym, czego szukam, chcę tylko prostego pomiaru zużycia. Próbowałem wykonać następujące czynności: <?php $initialMem = memory_get_usage(); /* Pojawia się skrypt */ $finalMem = memory_get_usage(); echo ($finalMem - $initialMem)/1024 . „Kbajty”; ?> Gdzie podzieliłem przez 1024, aby przekonwertować z bajtów na kilobajty. Pomysł polegał na tym, że funkcja memory_get_usage() pobiera ilość pamięci przydzielonej do wykonania skryptu, więc pomyślałem, że uwzględnienie różnicy będzie dobrą miarą wykorzystania. Czy to jest poprawne? Czy różnica między tymi wartościami jest dobrą miarą wykorzystania pamięci przez skrypt? Jeśli nie, jak mogę uzyskać dobry pomiar tego wykorzystania bez konieczności instalowania czegokolwiek na serwerze?


title: Pytanie filozoficzne dotyczące wzorca MVP — sprawdzanie bezpieczeństwa w interfejsie użytkownika

text: Mam pytanie filozoficzne dotyczące wzorca MVP: mam komponent, który sprawdza, czy użytkownik ma dostęp do określonego przywileju. To uprawnienie włącza lub wyłącza niektóre funkcje interfejsu użytkownika. Załóżmy na przykład, że masz siatkę interfejsu użytkownika i dla każdego wiersza, który zostanie powiązany, sprawdzam bezpieczeństwo, aby sprawdzić, czy niektóre funkcje w siatce powinny być włączone lub wyłączone. Można to zrobić na dwa sposoby: wywołać przez interfejs użytkownika/widok metodę składnika, określić, czy ma on dostęp, oraz włączyć/wyłączyć lub pokazać/ukryć. Drugim jest polecenie wywołania zdarzenia przez prezentera, poproszenie prezentera o sprawdzenie i przywrócenie dostępu z powrotem do widoku przez model lub przez argument zdarzenia. Zgodnie ze wzorcem MVP, do którego komponentu powinna pasować kontrola bezpieczeństwa, prezentera czy widoku? Ponieważ widok używa go do określenia swojej dostępności, wydaje się bardziej pasować do widoku, ale sprawdza bazy danych i wszystko w tym komponencie biznesowym, a tam jest logika biznesowa, więc widzę też odwrotny argument. Myśli?


title: Co powinna testować metoda badawcza?

text: Załóżmy, że testujemy klasę za pomocą frameworka podobnego do xUnit - więc klasa testowa jest tworzona dla testowanej klasy. Teraz, ile należy przetestować poszczególnymi metodami testowymi? Czy powinno istnieć mapowanie jeden do jednego między testowanymi metodami a metodami testowymi: class TestMath { testSqrt() { attachEquals(Math.sqrt(4), 2); attachException(Math.sqrt(-2)); } } A może lepiej mieć jedną metodę testową na „scenariusz”: class TestMath { testSqrtOfPositiveNum() { attachEquals(Math.sqrt(4), 2); } testSqrtOfNegativeNum() { attachException(Math.sqrt(-2)); } } Co jest lepsze i jakie są plusy i minusy obu metod?


title: Co oznacza „jeśli w w [1..5, 8, 11]” w pseudokodzie?

text: W jakimś pseudokodzie widziałem co następuje: if w w [1..5,8,11] Czy to znaczy, że jeśli w wynosi od 1 do 5 lub 8 lub 11? A może to coś innego?