title: Struktura MVC wydaje się sugerować tworzenie prawdopodobnie setek stron .aspx lub .cshtml. Jak tego uniknąć?

text: Więc bawiłem się z MVC3. Popraw mnie, jeśli się mylę, ale na podstawie wszystkich przykładów, które widziałem, sugeruję, abyś miał w zasadzie stronę dla każdego modelu i akcji z kontrolera. Na przykład stwórz całkiem prosty portal zarządzania bazą danych aspnetdb. **Modele** UserModel RoleModel **Akcje** CreateUserAction DeleteUserAction ChangeUserAction CreateRoleAction DeleteRoleAction UpdateRoleAction AssignUserToRoleAction AssignUsersToRoleAction AssignUserToRoleAction AssignUsersToRolesAction DeleteUsersFromRoleAction etc. CreateRole.aspx lub .cshtml DeleteRole.aspx lub .cshtml UpdateRole.aspx lub .cshtml AssignUserToRole.aspx lub .cshtml AssignUsersToRole.aspx lub .cshtml AssignUserToRole.aspx lub .cshtml AssignUserToRole.


title: Poradniki kariery dla programistów

text: Obecnie czytam niedawno wydaną książkę Being Geek Michaela „Randsa” Loppa i nie mogę się jej nacieszyć. ![alt text](http://i.stack.imgur.com/rb36p.jpg) Czy są jakieś inne poradniki zawodowe skierowane bezpośrednio lub pośrednio do programistów, które warto przeczytać?


title: Social Analytics w Twoich aktualnych danych

text: Do tej pory wszyscy zdają sobie sprawę z ogromnego boomu w sieciach społecznościowych (Twitter, Facebook, LinkedIn) i oczywiście duża część jego modelu biznesowego obraca się wokół możliwości wydobywania tych danych w celu tworzenia informacji, które można wykorzystać do zarabiania pieniędzy. Firma Gartner uznała „Analitykę społeczną” za jedną z 10 najważniejszych technologii strategicznych w 2011 roku. * **Czy ktoś przyjrzał się istniejącym strukturom danych, aby ustalić, czy może wyodrębnić wykres społecznościowy, a następnie przeprowadzić dalszą eksplorację danych?** * **Jak wpisuje się to w Twoje inne strategiczne strategie rozwoju?** * **Jakie informacje próbujesz wydobyć z danych?** Weźmy na przykład bank. Niewykluczone, że mogliby określić wykres społeczny poprzez relacje kont i transakcje. Oczywiście na wykresie byłyby otwarte krawędzie, w których fundusze wchodzą/wychodzą z instytutu, ale nie powinno to umniejszać użyteczności danych. **Szukam rzeczywistych przykładów z odpowiedziami, a także dlaczego/jak to zrobili. Odniesienia do innych witryn będą mile widziane.** _Uwaga: w ogóle nie mam na myśli wydobywania danych z rzeczywistych sieci społecznościowych._


title: Jaki jest twój powód, aby nauczyć się Clojure?

text: Mam do was osobiste pytanie: jaki jest powód, dla którego uczycie się Clojure? (Dla mnie to to samo, co w przypadku Java na C, obiecuje lepsze wrażenia programistyczne)


title: Jak uzyskać analizę widma dźwięku?

text: Muszę znaleźć lub stworzyć narzędzie, które analizuje widmo audio pliku dźwiękowego (takie jak .wav lub .mp3). Muszę wyprowadzić „objętość” lub moc x liczby pasm częstotliwości i wyprowadzić dane jako tekst. Będzie to użyte do stworzenia wizualizacji, korektora graficznego, takiego jak na stereo. Obecnie patrzę na Pythona, aby to zrobić. Moje pytanie brzmi, czy istnieją jakieś narzędzia, które by to zrobiły (przetwarzanie sygnału), takie jak prace matematyczne lub inne? Nie mam z nimi żadnego doświadczenia, więc każda porada byłaby mile widziana.


title: Model-View-Controller (MVC) Który składnik obsługuje operacje zapisywania/ładowania?

text: W tradycyjnej aplikacji MVC, który komponent (model, widok czy kontroler) odpowiada za odczyt/zapis modelu na/z dysku?


title: Jak mogę się upewnić, że ludzie zmienią swoje IP, czy nie?

text: Chcę sprawdzić, czy osoby, które zarejestrują się w mojej witrynie i zaznaczą w polu kraju, na przykład Argentyna, naprawdę mieszkają w Argentynie. Jak mogę się upewnić, że ludzie naprawdę mieszkają w tym kraju i nie mają dostępu do mojej witryny przez proxy lub VPN?


title: Jakie prawa autorskie powinienem znać podczas tworzenia oprogramowania?

text: Próbuję zbudować winform, aby móc grać w grę internetową i mieć kilka innych małych narzędzi na boku. Nie planuję sprzedawać tego ani nawet rozdawać więcej niż garstce ludzi. Moje pytanie brzmi: czy naruszyłbym jakiekolwiek prawa autorskie, jeśli użyję obrazów z gry w moim kliencie? Po prostu chcę być bezpieczny, jeśli firma to zobaczy, nie chcę być pozwany. Edycja: Zrobiłem zrzut ekranu z gry i wykadrowałem ikony dla każdej umiejętności, której użyję jako łącza do przewodników umiejętności, kalkulatorów itp. Powinienem również zauważyć, że mieszkam w Ameryce, a firma ma siedzibę w Wielkiej Brytanii . Nie wiem, czy to na coś wpływa, czy nie.


title: Czy wtyczki RIA to już przeszłość?

text: W nie tak odległej przeszłości nasz dział reklamował Silverlight jako de facto standard dla korporacyjnych aplikacji intranetowych. Solidny framework, który pozwolił nam na wdrożenie SOA, wykorzystując nasze doświadczenie w frameworku .NET w połączeniu z bogatym interfejsem użytkownika, wszystko było świetne, aż pewnego dnia… Dziś HTML5 i zaawansowane biblioteki JavaScript dominują w rozmowach architektów i programistów aplikacji internetowych , głównie dzięki rozwiązaniu obejmującemu wiele urządzeń, które technologie te zapewniają w sferze tworzenia aplikacji mobilnych. Żyjemy w wyjątkowym czasie w historii, w którym możliwości standardowych technologii tworzenia stron internetowych (HTML5, CSS3, SVG itp.) praktycznie dorównały możliwościom zastrzeżonych wtyczek, takich jak Silverlight i Flash. Jednak wiedząc, ile lat zajęło W3C i WHATWG zatwierdzenie najnowszej wersji HTML, czy naprawdę możemy oczekiwać, że standardowe technologie tworzenia stron internetowych będą wystarczająco solidne i wydajne, aby obsługiwać niewiarygodnie zaawansowane i bogate aplikacje oraz wrażenia użytkowników, które są dostępne dla przyszłych użytkowników. przyjdzie się spodziewać? Co więcej, w miarę jak moc obliczeniowa stale rośnie, a urządzenia stają się coraz bardziej wydajne, czy HTML i JavaScript wystarczą, aby dostarczyć towary i w pełni wykorzystać moc superurządzeń i technologii następnych dziesięcioleci (pomyśl o projekcjach holograficznych, wszechobecności społeczno-komercyjno-przemysłowej itp.). Nie zrozum mnie źle, UWIELBIAM HTML5, a nasz zespół robi naprawdę niesamowite rzeczy z jquery, nokautem, podkreśleniem i jaśminem. Jestem bardzo podekscytowany najnowszymi postępami w standardowych technologiach tworzenia stron internetowych iw pełni je akceptuję. Są bardzo wydajne, kompatybilne z różnymi urządzeniami i zabawne! Czy śmierć wtyczek RIA jest nieunikniona?


title: Czy jQuery jest przykładem antywzorca „obiekt boga”?

text: Chcę zapytać – powoli uczę się jQuery. To, co widzę, to **_dokładny przykład_** anty-wzorca God Object. Zasadniczo wszystko idzie do funkcji `$`, cokolwiek to jest. Mam rację i czy jQuery naprawdę jest przykładem tego antywzorca?


title: Jak QT Framework obsługuje zdarzenia pochodzące z systemu operacyjnego?

text: Kiedy wywołujemy QApplication::exec() na końcu naszej funkcji main(), aplikacja wchodzi w pętlę zdarzeń Qt. Koncepcyjnie pętla zdarzeń wygląda tak: while (!exit_was_ wywołane) { while (!posted_event_queue_is_empty) { process_next_posted_event(); } while (!spontaneous_event_queue_is_empty) { process_next_spontaneous_event(); } while (!posted_event_queue_is_empty) { process_next_posted_event(); } } Po pierwsze, pętla zdarzeń przetwarza wszystkie ogłoszone zdarzenia, dopóki kolejka nie będzie pusta. Następnie przetwarza spontaniczne zdarzenia, aż ich nie ma. Na koniec przetwarza wszelkie opublikowane zdarzenia, które zostały wygenerowane podczas przetwarzania zdarzeń spontanicznych. Tak więc pojedynczy wątek (główny wątek w aplikacji jednowątkowej GUI) nie obsługuje programu tak dobrze, jak pętla zdarzeń (z funkcjonalnością kolejki zdarzeń). Czy istnieją wątki inne niż główne utworzone do obsługi zdarzeń w QT?


title: Którą pracę mam wybrać

text: Mam obecnie dwie oferty pracy, jedną od nadchodzącego finansowanego start-upu (I), a drugą od jednego z dużych gigantów oprogramowania o ustalonej pozycji (A) Płacę mi mniej niż A, ale mam potencjał, aby zapłacić mi lepiej, ponieważ są naprawdę dobrze finansowane . Co powinienem zrobić


title: Utrzymywanie umiejętności C/C++/Java jako web developer

text: Na studiach nauczyłem się programować w C, C++ i Javie. Obecnie jestem web developerem wykorzystując technologie frontend i backend (HTML/CSS/JS, PHP, MYSQL). Chociaż algorytmy sortowania i koncepcje OOP, których nauczyłem się na studiach, można zastosować w tworzeniu stron internetowych, szukam sposobów, aby utrzymać moją znajomość wszystkich języków. Lubię programować w językach C-Style (C/C++/Java) i technologiach front-end/back-end. Niestety, nie ma wielu opcji używania języków w stylu C do tworzenia stron internetowych. Chciałbym jednak utrzymać swoją wiedzę i umiejętności w zakresie języków, których nauczyłem się na studiach, ponieważ wiem, że będą one nadal pomagać mi w rozwoju. Jakie zasoby są dostępne, aby nadal stawiać sobie wyzwania w językach w stylu C, które są istotne dla tworzenia stron internetowych? Czy praca kontraktowa dla języków w stylu C byłaby korzystna? Czy istnieją witryny, które oferują wyzwania algorytmu? Każda pomoc jest mile widziana. Interesuje mnie również, jak inni, którzy zadają sobie to pytanie, rozwiązali ten problem.


title: Rozgałęzianie i kompilacje CI z Agile

text: Śledzimy wiele procesów zwinnych, w tym testy automatyczne, ciągłą integrację, przeglądy sprintów itp. Obecnie prowadzimy debatę na temat tego, jak często powinniśmy kompilować wersje branchowe. Wykonujemy dwutygodniowe sprinty i staramy się wdrażać do produkcji pod koniec każdego sprintu. Niektórzy z nas uważają, że powinniśmy rozgałęziać każdy sprint. Niektórzy z nas uważają, że to przesada. Jeśli projekt obejmuje trzy rozwiązania Visual Studio i rozgałęziamy każdy sprint, to są to trzy gałęzie i trzy kompilacje CI do tworzenia co dwa tygodnie. Jeśli będziemy to robić przez sześć miesięcy, otrzymamy 36 oddziałów i 36 kompilacji CI. Wiąże się to z narzutem. Dla tych z nas, którzy uważają, że rozgałęzianie każdego sprintu to przesada, nie mamy zbyt dobrej alternatywy. W moim ostatnim projekcie wdrożyliśmy kilka rozwiązań z głównego pnia. Tak, to nie jest dobre, ale zaoszczędziło to trochę kosztów ogólnych. Jaki jest właściwy sposób zarządzania kompilacjami rozgałęzień/wydania i CI przy użyciu zwinnych, gdy mamy tak krótkie (dwutygodniowe) cykle sprintu?


title: Zadania kompilatora — ile potrzebne jest wykształcenia

text: Zmotywowało mnie pytanie o Konstruowanie kompilatora jako temat i pomyślałem, że zadam to. Słyszałem od kilku osób, że mają dobry „zespół kompilatorów” (nie pytaj, skąd to słyszałem, nie pamiętam), więc zacząłem się zastanawiać, jak dostać pracę w takim zespole ? Wiem, że są zajęcia na studiach licencjackich i tym podobne, ale czy jest to coś, co byłoby minimum (takie jak co najmniej magisterskie)? Za dwa miesiące zaczynam studia magisterskie z informatyki, a szkoła, do której mam zamiar ma dwie klasy kompilatora, czy to wystarczyłoby, aby dostać pracę przy rozwijaniu kompilatora, czy też trzeba by w to zainwestować więcej czasu?


title: W jaki sposób finansowany jest rozwój języków takich jak Python i Perl?

text: Tytuł w dużej mierze oddaje sedno pytania, ale pozwólcie, że nieco rozwinę. Oprócz zaangażowania Google w Pythona i Activestate w rozwój Perla (Strawberry AFAIK nie zarabia na własnym produkcie) interesuje mnie, jakie są główne źródła ich finansowania. Czy są jakieś teksty, które to obejmują? Próbowałem szukać, ale nic nie znalazłem poza „historią” i „to opensource, wszyscy się poddają”…


title: Dlaczego C# nie obsługuje wielokrotnego dziedziczenia?

text: Nawet gdyby to były złe praktyki, powiedziałbym, że jest czas, aby spełnił swój cel.


title: Jak nazywasz różne role użytkowników w projektowaniu oprogramowania?

text: Jestem po prostu ciekawy, buduję aplikację internetową z modelem użytkownika, który ma uprawnienia oparte na rolach. Mam następujące role: * Odwiedzający (użytkownik anonimowy) * ?? (zalogowany użytkownik) * Moderator * Admin Trudno mi się zorientować, jak nazwać zalogowanego użytkownika. Chcę po prostu nazywać ich „użytkownikami”, ale uważam, że rola o tej samej nazwie co klasa tworzy czasami mylący kod. Na przykład: `jeśli użytkownik.użytkownik? to...` Jeśli zbudowałeś oprogramowanie z rolami dla użytkowników, jak nazywasz podstawową, zarejestrowaną, bez specjalnych uprawnień, rolę użytkownika? _EDYTUJ:_ Jako dodatek, ta aplikacja ma subskrybentów i nie subskrybentów. To, czy użytkownik jest subskrybentem, czy nie, nie jest tym samym, co jego rola, ale wpływa na sposób, w jaki o tym myślę. Na przykład nazywanie zwykłego użytkownika „członkiem” brzmi bardzo podobnie do tego, co nazwałbym subskrybentem, więc nie przepadałem za tym. Nie wykluczyłem tego jednak.


title: Wyjaśnienie definicji dziedziczenia interfejsu zgodnie z opisem w książce GoF

text: Czytam pierwszy rozdział książki Gofa. Sekcja 1.6 omawia dziedziczenie klas a interfejsów: **Dziedziczenie klas a interfejsów** > Ważne jest zrozumienie różnicy między klasą obiektu a jego typem. Klasa obiektu definiuje sposób implementacji obiektu. Klasa > określa stan wewnętrzny obiektu i implementację jego operacji. W przeciwieństwie do tego, typ obiektu odnosi się tylko do jego interfejsu — zestawu żądań, na które może on odpowiadać. Obiekt może mieć wiele typów, a obiekty > różnych klas mogą mieć ten sam typ. >> Oczywiście istnieje ścisły związek między klasą a typem. Ponieważ klasa > definiuje operacje, które obiekt może wykonać, definiuje również typ obiektu > . Kiedy mówimy, że obiekt jest instancją klasy, > sugerujemy, że obiekt obsługuje interfejs zdefiniowany przez klasę. >> Języki takie jak c++ i Eiffel używają klas do określenia zarówno typu obiektu, jak i jego implementacji. Programy Smalltalk nie deklarują typów zmiennych >; w konsekwencji kompilator nie sprawdza, czy typy obiektów > przypisane do zmiennej są podtypami typu zmiennej. Wysłanie wiadomości > wymaga sprawdzenia, czy klasa odbiorcy implementuje > wiadomość, ale nie wymaga sprawdzenia, czy odbiorca jest instancją > określonej klasy. > > Ważne jest również zrozumienie różnicy między dziedziczeniem klas > a dziedziczeniem interfejsu (lub podtypami). Dziedziczenie klas definiuje implementację obiektu > w kategoriach implementacji innego obiektu. W skrócie, jest to mechanizm współdzielenia kodu i reprezentacji. W przeciwieństwie do tego, dziedziczenie interfejsu (lub podtypowanie) opisuje, kiedy obiekt może być > użyty zamiast innego. Jestem zaznajomiony z językiem programowania Java i JavaScript i nie jestem za bardzo zaznajomiony z C++, Smalltalk lub Eiffel, jak wspomniano tutaj. Dlatego staram się odwzorować omawiane tu koncepcje na sposób wykonywania klas, dziedziczenia i interfejsów w Javie. Oto jak myślę o tych koncepcjach w Javie: W Javie klasa jest zawsze planem dla obiektów, które tworzy i jaki interfejs (jak w "zestawie wszystkich możliwych żądań, na które obiekt może odpowiedzieć") jest obiektem tej klasy Posiadać jest definiowane na etapie kompilacji tylko dlatego, że klasa obiektu zaimplementowałaby te interfejsy. Żądania, na które obiekt tej klasy może odpowiadać, to zestaw wszystkich metod znajdujących się w klasie (łącznie z tymi zaimplementowanymi dla interfejsów, które implementuje ta klasa). Moje konkretne pytania to: 1. Czy mam rację mówiąc, że sposób Javy jest bardziej podobny do C++, jak opisano w trzecim akapicie. 2. Nie rozumiem, co oznacza _dziedziczenie interfejsów_ w ostatnim akapicie. W interfejsie Java dziedziczenie to jeden interfejs wychodzący z innego interfejsu. Ale myślę, że słowo _interfejs_ ma tutaj inne przeładowane znaczenie. Czy ktoś może podać przykład w Javie, co oznacza tutaj dziedziczenie interfejsu, abym lepiej to zrozumiał?


title: Zamieszanie w Wikipedii dotyczące ExtJS

text: Patrzę na wiki na ExtJS, wiki na liście bogatych ram aplikacji internetowych i wiki na porównanie ram aplikacji internetowych. Jestem zmieszany. Pierwsza linia strony wiki ExtJS mówi: > Ext JS to czysty framework aplikacji JavaScript do tworzenia interaktywnych > aplikacji internetowych[1] przy użyciu technik takich jak skrypty Ajax, DHTML i DOM. Zakładam więc, że jest to framework aplikacji internetowej. Ale w polu podsumowania po prawej stronie jest napisane: > Wpisz: Biblioteka JavaScript Czy ExtJS jest frameworkiem aplikacji internetowej, biblioteką JavaScript, czy obydwoma? (Czy to może być jedno i drugie?) Brakuje również ExtJS na listach frameworka aplikacji internetowych... Dzięki za przeczytanie


title: Problem projektowania systemu zarządzania zapasami „Pakiety towarów”

text: Opracowuję system do zarządzania sprzedażą detaliczną z modułem zarządzania zapasami, mam problem z projektowaniem logiki i nie bardzo wiem, jak w prosty sposób rozwiązać ten problem, więc napisałem przykład ilustrujący ten problem: Powiedzmy, że mam przedmiot (np. puszka po coli), ten przedmiot ma kod kreskowy (11...1), do tej pory jest tak dobrze i możemy płynnie sprzedać przedmiot za pomocą kodu kreskowego po coli (11...1). Jednak, gdy hurtownia kupuje colę, może kupić dla uproszczenia większe opakowanie 6 opakowań puszek, które mają inny kod kreskowy (11...2), po czym 6 opakowań jest rozbijanych na 1-1 puszek i sprzedawanych za sztukę z kodem kreskowym ( 11...1). Problem polega na tym, że kupujesz z paczką i sprzedajesz za sztukę, co spowoduje, że raporty dotyczące inwentarza będą nieprawidłowe, a stan inwentarza nigdy nie będzie pasował. Jak zapanować nad problemem z paczkami, czy system powinien zajmować się tylko najmniejszą paczką (np. gdy kupuję opakowanie 6 puszek, magazyn powinien wpisać 6 sztuk kodu kreskowego pojedynczej puszki)?


title: Dlaczego tak wielu programistów uważa, że wydajność, czytelność i łatwość konserwacji nie mogą współistnieć?

text: Odpowiadając na to pytanie, zacząłem się zastanawiać, dlaczego tak wielu programistów uważa, że dobry projekt nie powinien uwzględniać wydajności, ponieważ wpłynęłoby to na czytelność i/lub łatwość utrzymania. Uważam, że dobry projekt uwzględnia również wydajność w momencie jego pisania, a dobry programista z dobrym projektem może napisać wydajny program bez negatywnego wpływu na czytelność lub łatwość utrzymania. Chociaż zdaję sobie sprawę, że istnieją skrajne przypadki, **Dlaczego wielu programistów upiera się, że wydajny program/projekt spowoduje słabą czytelność i/lub słabą konserwację, a w konsekwencji wydajność nie powinna być brana pod uwagę przy projektowaniu?**


title: Oddzielenie logiki biznesowej i układu w wysoce powiązanym projekcie

text: Moja firma rozwija oprogramowanie, które ma duże zadłużenie techniczne, które istnieje od ponad 20 lat. Jest to mieszanka C++ i C i składa się z około 2M LOC. Chciałabym podsunąć kilka sugestii, jak możemy przyspieszyć nasz projekt i pozbyć się długu technicznego przy zastosowaniu nowoczesnych zasad projektowania. Ta aplikacja jest mocno zmodularyzowana i składa się z ponad 250 modułów, które mogą być przeglądane przez użytkownika. Moduły te są zaprojektowane z naszym własnym frameworkiem, plikiem xml z całym układem, pewną logiką biznesową, która jest interpretowana przez aplikację oraz klasą c++ z inną logiką. Na przykład, aby utworzyć maskę z pojedynczą siatką wyświetlającą niektóre dane, musimy utworzyć ogólne pliki klas, które rejestrują nasz nowy moduł do aplikacji, otworzyć naszą aplikację w _designer-Mode_ , umieścić siatkę w naszym module i dołączyć sql -oświadczenie, które pobiera dla niego dane. Jeśli chcielibyśmy dodać trochę logiki, która nie jest możliwa w naszym _designer_ , musimy dodać kilka wywołań zwrotnych do naszej klasy i dodać je do naszej siatki w projektancie. Teraz plik xml jest wypełniony wszystkimi informacjami potrzebnymi naszej aplikacji do wygenerowania tego modułu (tj. gdzie dokładnie znajduje się siatka, identyfikator, dołączone wywołania zwrotne i sql do jego wypełnienia). Jak widać, nie ma absolutnie żadnego przecięcia między projektowaniem, logiką biznesową i zależnościami. Są oczywiście dwie główne zalety: * wiele rzeczy można zrobić bez ponownej kompilacji aplikacji * małe błędy mogą zostać naprawione przez nie-programistów (takie jak błędne instrukcje SQL, nazwy etykiet, rozmieszczenie elementów Ale mam nadzieję, że się ze mną zgadzasz, że ten system mógłby wiele zyskać, ale nie mam doświadczenia w proponowaniu własnych rozwiązań. **Jakie kroki mogę podjąć, aby rozwiązać ten problem w realistyczny sposób, który jest akceptowalny zarówno dla nas, jak i dla kierownictwa?**


title: Jak uzyskać informację zwrotną na temat projektu?

text: Oprogramowanie jest łatwe do zbudowania, ale jeszcze łatwiejsze do zbudowania w sposób, w jaki programiści uważają, że powinno działać. A co z użytkownikiem końcowym? Jak najlepiej uzyskać od nich informację zwrotną dotyczącą nowego produktu? Na przykład: niedawno wydaliśmy nową aplikację internetową do obsługi IT i to jest to, czego użytkownik musi użyć, aby otrzymać wsparcie IT. Nie mają wyboru. Jak możemy uzyskać od nich informację zwrotną? Pomysły nieszablonowe są najbardziej cenione, ponieważ uważam, że zwykły formularz opinii otrzymuje niewiele zgłoszeń, więc szukam kreatywnych sposobów na nawiązanie kontaktu z naszą bazą użytkowników i dalsze rozwijanie tej aplikacji (lub dowolnej w przyszłości) z myślą o ich pragnieniach .


title: Jak utworzyć obiekt po wstawieniu PHP do bazy danych?

text: Właśnie pracuję nad nowym projektem i robię to samo, co od lat. Jednak po raz pierwszy stale myślę o „skalowalności i wydajności” zarówno „kodu aplikacji”, jak i „bazy danych”. Tak więc w przeszłości byłem bardziej niż szczęśliwy, mogąc „wstawić” nowy wiersz, a następnie pobrać „last_insert_id”, a następnie przetłumaczyć to na „obiekt”, wywołując metodę „getObjectById(id)” z dowolnego frameworka trwałości w użyciu. Uważam, że jest to dobra praktyka, ponieważ zapewnia, że zwracasz dokładnie to, co jest przechowywane w bazie danych, a wszelkie błędy zostaną wychwycone tam i wtedy, a nie następnym razem, gdy poprosisz o obiekt. Innym sposobem, ponieważ masz wszystkie dane wymagane do zbudowania obiektu tuż przed sobą, jest po prostu utworzenie nowego obiektu z dostarczonych danych i po prostu ustawienie `objectId`, gdy oświadczenie zostanie zweryfikowane jako kompletne. Zawsze czułem, że nadal mogą wystąpić pewne niewiadome, a jeśli w bazie danych są jakieś „wyzwalacze”, które w jakikolwiek sposób przekształcają dane, wtedy wystąpi niezgodność stanu, która jest zła. Jednak myśląc wyłącznie o wydajności, oczywiście uderzam w uruchamianie wielu `zapytań` w celu utworzenia obiektu (`insert` plus `select`), który dodaje `overhead` i chciałbym, aby aplikacja była zarówno `szybka` i „bezpieczne” jak to możliwe. Moje pytanie brzmi, jakie byłoby najbardziej odpowiednie podejście do „wydajności”, „skalowalności”, „bezpieczeństwa”, a następnie do kompromisu między 3?


title: Czy istnieje lepszy sposób pisania testów jednostkowych niż seria „AssertEquals”?

text:
Oto podstawowy przykład tego, jak powinien wyglądać mój test jednostkowy, używając qunit: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4 /loose.dtd">   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Tu wstaw tytuł</title> < link rel="stylesheet" href="qunit/qunit-1.13.0.css">

   Teraz myślałem, że to trochę powtarzalne. Mógłby umieścić wszystkie wejścia/wyjścia w tablicy i przejść przez nią w pętli. test("Fuzz Query Basics", function() { var equals = [ ["imię:(Jan Kowalski)", "imię:(Jan~ Kowalski~)"], ["imię:Jan~0.1", "imię: Jon~0.1"], ["Jon", "Jon~"] ]; for (var i = 0; i<equals.length; i++) { equal(fuzzQuery(equals[i][0]), equals[i [1]); } } ); I to działa dobrze. Jedyną korzyścią, o której mogę pomyśleć w przypadku tej drugiej metody, jest to, że jeśli okaże się, że faktycznie nie chcesz używać `równości`, łatwiej jest dokonać tej zmiany w jednym miejscu. Pod względem czytelności nie sądzę, że jest to rozstrzygające tak czy inaczej, chociaż prawdopodobnie wolę to drugie. Abstrahując to dalej, możesz umieścić przypadki wejścia/wyjścia w osobnym pliku CSV, co może ułatwić modyfikację. Pytanie brzmi – jakie są ogólne konwencje dotyczące pisania tego rodzaju testów jednostkowych? Czy istnieje powód, dla którego nie powinieneś umieszczać ich w tablicach?


title: Korzystasz z CMS, którego nie znam tylko ze względu na pracę?

text: Projektuję i rozwijam w Wordpressie od około dwóch lat (i uwielbiam to). Niedawno szanowany projektant powiedział mi, że mogę dla niego pracować. Współpracuje z Joomla! Moim zadaniem było stworzenie Joomla! szablon. Nie czułem się komfortowo, używając go. Nie podoba mi się interfejs użytkownika zaplecza, sposób dodawania elementów i treści (nie podoba mi się nawet logo Joomla!). Jestem przyzwyczajony do prostych interfejsów i Joomla! wydaje mi się zbyt zagracony. Dlatego zacząłem się zastanawiać, czy nie lepiej po prostu znaleźć klientów i korzystać z CMS, który kocham, czy podjąć wysiłek, aby nauczyć się CMS, którego nie lubię używać?


title: Programowa synchronizacja ze zdalnymi serwerami

text: Moja aplikacja generuje pliki tekstowe, które należy zsynchronizować ze zdalnymi serwerami, którymi mogą być Windows lub Linux. Synchronizacja musi się odbyć bez interwencji użytkownika. Próbowałem z rsync, ale Windows nie jest domyślnie wyposażony w rsync. Nie jest również możliwe podanie hasła w wierszu poleceń dla rsync. Obecnie korzystam z ftp. Ale wydaje się to nieefektywnym sposobem. Czy istnieje sposób na rsync bez interwencji użytkownika? Jakie są sposoby programowej synchronizacji ze zdalnym serwerem? Aplikacja jest na nodejs.


title: Szybkość dostępu do indeksu typu MySQL w porównaniu z wyszukiwaniem skoku binarnego w ogromnym pliku?

text: Jestem gotowy do przejścia do bazy danych MySQL dla niektórych ogromnych zestawów danych, z którymi pracuję, ale w tej chwili nie mam czasu. W międzyczasie jestem ciekaw kwestii technicznej wydajności dotyczącej szybkości między dwiema metodami. Oczywiście skoki binarne na ogromnym posortowanym pliku są paskudnym spadkiem wydajności. Szanse na znalezienie potrzebnych danych w pamięci podręcznej chipa lub nawet w pamięci są dość małe, jeśli założysz statystycznie normalny rozkład żądań rekordów w ogromnym pliku. O ile cały plik nie znajduje się w pamięci, a niektóre z tych, z którymi pracuję, mają 20 GB, więc jest to niemożliwe w systemie Win32, którego używam, jest prawie pewne, że duża liczba żądań rekordów obniży się do operacji zabijania wydajności rzeczywisty odczyt dysku twardego. Ponieważ nigdy nie zajmowałem się programowaniem indeksów baz danych poza naprawdę prostym indeksowaniem B-drzewa, zastanawiam się, jak dobrze indeksy tworzone przez nowoczesne bazy danych, takie jak MySQL, są w stanie uniknąć trafień na dysk twardy. Oczywiście jedną wielką zaletą, jaką mają, jest to, że jeśli klucze indeksu są dużo mniejsze niż rekordy danych, które reprezentują, można zablokować w pamięci znacznie więcej stron indeksu, jeśli nie wszystkie, co pozwala uniknąć wielu trafień na dysku. Ale zastanawiałem się, czy kod stojący za tymi indeksami może z powodzeniem zoptymalizować się w inny sposób, zwłaszcza jeśli chodzi o przewidywanie dostępu do strony indeksu, aby przyspieszyć działanie jeszcze bardziej, upewniając się, że większość dostępów do stron indeksu nie powoduje dostępu do dysku? Jeśli ktoś miał jakieś głębokie doświadczenie z rodzajem kodu, na którym opiera się indeksowanie MySQL lub podobnymi jednostkami, lub przeprowadził głębokie testy wydajności, chciałbym o tym usłyszeć. \-- roschler


title: Czy ktoś tutaj ma certyfikat Zend? Czy to polecają?

text: Biorąc pod uwagę ilość rozmów kwalifikacyjnych z programistami internetowymi, na których byłem, jestem nieco zaskoczony, że nikt nie wspomniał o certyfikacji Zend. Czy ktoś kiedykolwiek otrzymał certyfikat, czy jest to strata czasu/pieniędzy?


title: Licencjonowanie kodu / licencjonowanie oprogramowania

text: Pracowałem nad czymś poza moją codzienną pracą i zapytali mnie, czy mogą z tego skorzystać. Jest to projekt o zamkniętym kodzie źródłowym, ale nie mam nic przeciwko podawaniu im kodu źródłowego; ale zdecydowanie chcę zachować własność intelektualną i wszelkie ulepszenia, które wprowadzają. Czy istnieje wstępnie napisana licencja, której mogę do tego użyć? Czy ktoś ma jakieś doświadczenia z tą sytuacją? Aktualizacja Postanowiłem zrezygnować z „wszelkich ulepszeń, które wprowadzają”. Więc szukam licencji, która ma następujące elementy: • własność intelektualną, która zostanie ze mną • nie mogą sprzedawać kodu źródłowego • ale za darmo można z niej korzystać we wszystkich produktach i dokonywać modyfikacji. Myślę, że jeśli zmodyfikuję licencję BSD, która będzie osiągnąć to.... Copyright (c) 2011, (My Name) Wszelkie prawa zastrzeżone. Używanie źródła, redystrybucja i używanie w postaci binarnej, z modyfikacją lub bez, jest dozwolone pod warunkiem, że spełnione są następujące warunki: • Kod źródłowy musi zawierać powyższą informację o prawach autorskich, tę listę warunków i następujące zastrzeżenie. • Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, tę listę warunków oraz następujące zastrzeżenie w dokumentacji i/lub innych materiałach dostarczonych z dystrybucją. • Nazwa nie może być używana do promowania lub promowania produktów wywodzących się z tego oprogramowania bez uprzedniej pisemnej zgody. NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁCZYNNIKÓW „TAK JAK JEST” I WYŁĄCZA SIĘ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WŁAŚCICIELE NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZAMIENNYCH; UTRATĘ KORZYSTANIA, DANYCH LUB USŁUG LUB PRZERWANIA W DZIAŁALNOŚCI) JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB INNEGO) WYNIKAJĄCEJ Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, NAWET JEŚLI JEST WSKAZANE. Co myślisz?


title: Koszt utrzymania w zależności od paradygmatów

text: Czy istnieją dane, na podstawie których paradygmaty pozwalają na łatwiejszy/tańszy w utrzymaniu kod? Oczywiście, niezależnie od wybranego paradygmatu, dobry projekt jest tańszy w utrzymaniu niż zły, ale prawdopodobnie powinny istnieć duże różnice wynikające tylko z wyboru paradygmatu. Na przykład programowanie niestrukturalne generuje bardzo niechlujny kod (kod spaghetti), który jest kosztowny w utrzymaniu. W programowaniu obiektowym szczegóły implementacji są ukryte i dlatego ich zmiana powinna być dość tania. W programowaniu funkcjonalnym nie ma skutków ubocznych, dzięki czemu istnieje mniejsze ryzyko wprowadzenia błędów podczas konserwacji, co powinno być tańsze. Czy są jakieś dane na temat tego, które paradygmaty są najbardziej opłacalne, jeśli chodzi o konserwację? Jeśli takie dane nie istnieją, jak oceniasz to pytanie?


title: Tworzenie aplikacji webowych po stronie serwera vs po stronie klienta vs hybryda?

text: Obecnie istnieje wiele podejść do tworzenia aplikacji internetowych: ## 1\. Tylko po stronie serwera Jest to klasyczne podejście, w którym renderujesz strony na serwerze przez framework webowy, taki jak Ruby on Rails, Django, Express, Play! Framework itp. **Typowy przepływ pracy** : Zbuduj całą swoją logikę biznesową, modele i szablony wyświetlania na serwerze w wybranych przez siebie ramach. ## 2\. Client-side + REST API Stosunkowo nie tak dawno społeczność internetowa jako całość zaczęła budować aplikacje klienckie w Angular, Backbone, Ember i kilkudziesięciu innych frameworkach JavaScript MV*. A teraz do imprezy dołącza także React.js. **AKTUALIZACJA** : Nie ma nieporozumień. To, co miałem na myśli tylko po stronie klienta, to całkowite oddzielenie obaw. Masz serwer REST API i aplikację po stronie klienta, która komunikuje się z tym serwerem. W zależności od przypadku użycia prawdopodobnie nigdy nie będziesz mieć prawdziwej aplikacji tylko po stronie klienta, która nie łączy się z zapleczem ani w celu uwierzytelniania, ani trwałości danych. **Typowy przepływ pracy** : Spędź godziny na decydowaniu o Angular vs Backbone vs Ember vs X. Następnie budujesz swoje trasy, modele, widoki, kontrolery na kliencie. Po zakończeniu zbuduj modele, kontrolery, trasy na serwerze. W pewnym sensie wykonujesz podwójną ilość pracy. # 3\. Hybrid Nie znam się na tym podejściu, ale gdybym miał zgadywać, renderujesz swoje widoki (widok frameworka MVC) na serwerze. W rezultacie otrzymujesz wsparcie SEO oraz szybsze ładowanie strony. Na froncie **Hybrid** znajduje się **rendr** airbnb, który podobno łączy w sobie szkielet i ekspresję. Eric Florenzo opublikował dzisiaj na swoim blogu: React: Wreszcie, świetny stos serwera/klienta. Ilość sposobów tworzenia aplikacji internetowych jest po prostu przytłaczająca. A dla kogoś, kto uczy się tworzenia stron internetowych, może to stać się problemem. W jaki sposób można zdecydować, z którego podejścia skorzystać, aby zbudować kolejną aplikację?


title: Czy byłby to odpowiedni system inżynierii oprogramowania, aby przejść z implementacji opartej na AngularJS na opartej na jQuery lub hybrydowej implementacji aplikacji internetowej?

text: Obecnie pracuję nad aplikacją internetową do czatu opartą na AngularJS, która odpytuje serwer o aktualizacje, a następnie renderuje je w sposób, który jest prawie prostym ujęciem w AngularJS. Wynik wygląda na odpowiedni dla dojrzałości projektu, ale całkowicie wyłącza kopiowanie schowka z okna dialogowego, ponieważ przerysowuje tekst dla każdego interwału odpytywania i nadpisuje odpowiedni obszar ekranu najbardziej nowo odpytywanymi danymi. Widzę, jak zmniejszyć ten problem przez więcej chirurgicznych manipulacji DOM w jQuery, gdzie jest jeden DIV dla każdego ukończonego fragmentu danych, tylko DIV, których zawartość faktycznie się zmieniła, są nadpisywane, a nowe DIV są dołączane do kontenera, a nie ogólnie. I być może ktoś może wskazać, jak zrobić bardziej chirurgiczną implementację AngularJS, aby aktualizować niewielką część danych, zamiast niszczyć ten obszar DOM, gdy dane zostały odpytane (`<div ng-repeat="contribution in contributions " ...>"). Chciałem jednak zapytać o słuszność mojego podejścia. AngularJS eliminuje większość potrzeby określania niskopoziomowych manipulacji DOM; gdyby coś chirurgicznego było pożądane, czy dobry programista AngularJS przeszedłby na coś takiego jak jQuery, które jest bardziej przeznaczone do umożliwienia manipulacji DOM niskiego poziomu, czy też AngularJS oferuje udogodnienia dla bardziej chirurgicznych aktualizacji, aby DIV, którego zawartość jest statyczna, nie były przerysowywane? Zastanawiałem się nad pytaniem o to na StackOverflow i może być właściwe, aby zapytać tam, jak zrobić bardziej chirurgiczną aktualizację, aby jeśli użytkownik zaczął wybierać obszar, rzeczy, które nie zostaną ponownie zmienione, nie zostaną zmiażdżone. Jednak chciałem tutaj zapytać. Znam jQuery lepiej niż AngularJS i wydawało mi się, że warto zadać tutaj pytanie "Zrób krok wstecz" na temat właściwego używania AngularJS. Czy programista AngularJS, który znał jQuery, zrobiłby to z jQuery, zrobiłby to z bardziej chirurgiczną wersją użycia AngularJS, czy zrobiłby coś innego? Jak programiści myślący w AngularJS radzą sobie z sytuacją, w której potrzebują bardziej precyzyjnej kontroli, niż pozwala na to wersja domyślna? Dziękuję,


title: Reprezentowanie hierarchii grup liczb za pomocą dziedziczenia typów

text: Wpadłem na interesującą zagadkę podczas kodowania własnych implementacji dla podstawowych zbiorów liczb matematycznych (Naturalne, Integer, Wymierne, Irracjonalne, Rzeczywiste, Złożone). Robię to głównie dla zabawy, ale także dlatego, że chcę poprawnie reprezentować liczby w kodzie. Zaczęło się od RationalNumber. Do mojej klasy dodałem dwa pola: Licznik i Mianownik. Przeciążyłem wszystkie podstawowe operatory, które potrafię (używam C#), abym mógł zdefiniować, co oznacza dodawanie, odejmowanie itp. dla tych obiektów. Od tego momentu pomyślałem, że rozszerzę moje definicje w górę i stworzę klasę `RealNumber` taką, że ten typ może się z niej rozciągać, aby mógł wypełnić dowolny RealNumber w innym miejscu w kodzie... Z wyjątkiem intuicji, system liczbowy działa sprzeczne z tą definicją. Ilustrując to, co mam na myśli, rozważ rozpoczęcie od podstawowych liczb naturalnych. Możemy „rozszerzyć” liczby naturalne tak, aby zawierały również liczby ujemne (i zero, jeśli jeszcze tego nie uwzględniłeś), a następnie nazywamy tę nową grupę liczbami całkowitymi. W kodzie oznaczałoby to, że „Integer” dziedziczy po „NaturalNumber”. Gdybym chciał napisać metodę, która akceptuje parametr całkowity, logicznie rzecz biorąc, można by założyć, że można również użyć liczby naturalnej; ale ze sposobem, w jaki działa dziedziczenie, to nie działa. Jak mogę prawidłowo modelować relację między zestawami liczb poprzez dziedziczenie, aby móc wstawić liczbę naturalną?


title: Dlaczego maszyny wirtualne nie wykonują zestawu bezpośrednio?

text: Wiele maszyn wirtualnych wykonuje język w postaci binarnej, znany jako „kod bajtowy”, który jest składany z czytelnego dla człowieka języka „asemblera”. Na przykład instrukcje asemblacji `push 1 push 2 add` są tłumaczone (chyba) na ciąg jedynek i zer, które są następnie wykonywane przez VM. Czemu? Dlaczego maszyny wirtualne, a na przykład JVM, nie wykonują instrukcji montażu bezpośrednio? Nie mają ograniczeń fizycznych komputerów, które obsługują tylko jedynki i zera. JVM może bardzo dobrze przyjąć instrukcje tekstowe, takie jak `push 1 push 2` i wykonać je tak, jak są. Dlaczego dodatkowy etap kompilacji?


title: Jak ustrukturyzować mój model danych do łączenia kont

text: Moja nowa strona pozwoli na „normalną” rejestrację lub korzystanie z openauth na Facebooku. Mam wiele tabel, które łączą dane z identyfikatorem użytkownika. Wyobraź sobie, że jeden z moich użytkowników z informacjami na mojej stronie zapomina, że użył Facebooka do utworzenia konta. Tworzą drugie „normalne” konto i przez jakiś czas korzystają z serwisu. Tak więc użytkownik ma dane powiązane z dwoma identyfikatorami user_id. Chcę dać im możliwość „zaimportowania” danych związanych z pierwszym kontem do najnowszego konta. To jest bałagan i wolałbym projektować rzeczy od razu, ale nie mogę sobie wyobrazić eleganckiego sposobu, aby to zrobić. Oto opcje, o których myślałem: 1. Zezwól profilowi użytkownika na nadrzędny (rodzic?)_id i napisz wszystkie moje zapytania do bazy danych, aby wybrać wiele identyfikatorów użytkownika. Po połączeniu jednego konta z drugim, przegrywające konto otrzymuje user_id zwycięskiego konta jako parent_id. 2. Powyższe, ale czystsze: skonsoliduj wiele logowań w tabeli przeglądowej 3. Jednorazowa aktualizacja dla całego systemu: znajdź wszystkie dane z identyfikatorem user_id 1 i zmień je na identyfikator_użytkownika 2. Staje się to coraz trudniejsze, gdy przechowujemy więcej danych. 4. Połącz z utratą danych - tak samo jak #3, ale tylko kluczowe dane. Użytkownik traci zapisy historyczne itp. A może przemilczam łatwiejszy sposób obsługi scenariusza, który próbuję zaplanować?


title: Przygotowanie do rozmowy kwalifikacyjnej do kodowania

text: Mam rozmowę kwalifikacyjną na stanowisko i powiedziano mi, że będę musiał zrobić jakiś test kodowania, mając laptopa w konkretnym, sam, w określonym czasie 45-60 minut. To dla mnie pierwszy raz na coś takiego i zastanawiałem się, jak najlepiej się przygotować? Czy masz podobne doświadczenie? Na czym polegają tego rodzaju testy? Jakiś przykład?


title: Czym jest sesja o prostocie, którą zaproponował Marcin Odersky podczas prelekcji „Scala ze stylem”?

text: Film przedstawiający Scali ze stylem jest tutaj: http://parleys.com/play/51c1994ae4b0d38b54f4621b/chapter21/about Jest około 41:10, kiedy zasugerował kolejną rozmowę. Nie słyszę wyraźnie nazwiska prelegenta ani nazwy sesji. Czy ktoś mógłby mi pomóc to rozgryźć?


title: Próbuję zasymulować toczenie kulki po kole ruletki, podczas gdy wynikowa liczba jest już znana

text: Chcę zrobić planszę do ruletki, w której kulka kręci się i ląduje na określonym polu. Połów polega na tym, że pole, na którym wyląduje piłka, jest znane z góry. Chcę, aby animacja wyglądała nieco realistycznie, nawet jeśli wynik jest ustalany wcześniej. Myślę więc, że muszę obliczyć ścieżkę, którą będzie podążać piłka, zaczynając od swojej końcowej pozycji. Jednak w tym przypadku zawsze musi znaleźć się w tej samej pozycji wyjściowej. Jak to zrobić?


title: Jak skutecznie definiować wymagania w złożonym projekcie, wymagającym współpracy wielu osób, które mają nienajlepsze relacje osobiste?

text: Pracuję nad projektem, który jest w zasadzie przepisaniem starego systemu wsadowego, który teraz powinien działać online. Stary system jest złożony i słabo udokumentowany, a najlepszym źródłem informacji są ludzie, którzy go zbudowali i utrzymywali. Jednak nawet oni często nie zgadzają się co do niektórych funkcji. Co gorsza, nie dogadują się zbyt dobrze między sobą ani z zespołem, ponieważ role nie są zbyt jasne, są uważani za właścicieli produktów, ale czują, że powinni kierować projektem. Zastanawiam się, jaki byłby najlepszy sposób na wydobycie posiadanych przez nich informacji. W tym momencie myślę (i nigdy nie sądziłem, że to powiem), że spotkania twarzą w twarz nie są zbyt produktywne. Być może odpowiednie byłoby narzędzie, które zaimplementowało przepływ, w którym wszyscy musieliby odpowiedzieć na pytanie, które ma zespół. A może wiki? Co byś zaproponował?


title: Nie używam transakcji SQL

text: Patrzę na bazę kodu, w której programista nigdy nie używa transakcji SQL, tj. Każda aktualizacja / wstawienie do bazy danych SQL jest operacją atomową. Uważam, że baza kodów skorzystałaby na transakcjach. Szukałem dzisiaj online i w jednym z pytań Stackoverflow osoba odpowiadająca mówi: „W niektórych sytuacjach lepiej jest mieć częściową aktualizację niż wcale”. Czy jest w tym jakaś prawda? Przypuszczam, że w pewnym stopniu zależy to od problematycznej domeny.


title: Czy jakikolwiek język programowania używa zmiennych tak jak w matematyce?

text: W matematyce zmienna oznacza, że możesz umieścić tam dowolną liczbę, a równanie nadal będzie prawdziwe: root(square(x)) = abs(x) W językach programowania tak nie jest: zmienna może się zmienić. W Pythonie: y = (x**2)**.5 x *= 2 asercja y == abs(x) zgłosi wyjątek, ponieważ x w ostatniej linii to nie to samo. Czy istnieją języki programowania, które używają niezmiennych zmiennych?


title: doradztwo zawodowe dla doktorantów chcących programować?

text: Jestem w dużej mierze programistą samoukiem. Właściwie zacząłem programować w połowie studiów z biofizyki i chociaż wydaje mi się, że wykonałem całkiem niezłą pracę, nigdy nie pracowałem jako część „poważnego” zespołu programistów, który miał więcej niż jeden lub dwa innych programistów (i nie zawaham się nazwać ich równie niedoświadczonymi w tworzeniu oprogramowania jak zawodzie). Po skończeniu doktoratu skoncentrowałem się na programowaniu, oficjalnie jako postdoc, ale nieoficjalnie jako programista ds. badań kadrowych. W tym czasie miałem też dwa wywiady w Google, ale nie była to aktualna oferta. W tej chwili zapuściłem korzenie i prawdopodobnie i tak nie byłbym w stanie podjąć tej pracy. Dom + żona z bardzo dobrze płatną pracą itp. Minęły około trzech lat i moja szczera ocena jest taka, że nauczyłem się dużo więcej, ale naprawdę potrzebuję więcej grupy rówieśniczej, aby utrzymać lub przyspieszyć mój rozwój. Problem polega na tym, że za każdym razem, gdy patrzę, większość ofert pracy ma wymagania, które wydają się niemożliwie wygórowane i waham się, czy złożyć podanie. To lub praca/projekt wydaje się niesamowicie nudna. Podejrzewam, że albo większość ludzi jest o wiele mniej realistyczna niż ja, jeśli chodzi o ocenę, ile czasu zajmie im nabranie tempa, albo ich to nie obchodzi; obawiam się, że po prostu nie mam kwalifikacji do jakiejkolwiek interesującej, dobrze płatnej pracy programisty. IE: Jestem pewien, że mógłbym w pełni przełączyć się z powrotem do trybu C++ w ciągu kilku tygodni pracy (najczęściej używam C,Python,C# codziennie), ale nie wymieniam siebie jako „biegłego” w C++ w moim CV lub aplikowaniu do prac, które „wymagają” takiej wiedzy. Kilka wniosków, w przypadku których czułem, że dobrze pasowałem, nie wywołało odpowiedzi. Podejrzewam, że następujące rzeczy są potencjalnymi problemami z moją aplikacją/CV i chciałbym otrzymać informację zwrotną: Nie mam dyplomu CS. Miałem licencjat z biochemii i biologii molekularnej, doktorat z biofizyki. Wziąłem udział w kursach z algorytmów na poziomie licencjackim i magisterskim i całkowicie je zabiłem, ale nie wiem, jak skutecznie przełożyć to na moje CV (różnica między uzyskaniem A+ a paleniem wszystkich innych osób w klasie). Mam doktorat, ale nie ma go w CS... Zastanawiałem się, czy powinienem go usunąć z mojego CV, i bez względu na to, czy byłoby to mylące, wymienianie przynajmniej niektórych z tych lat jako pewnego rodzaju „programowania praca (pod wieloma względami była). Myślę, że z programistami „samoukami” wiążą się czasem silne piętno. Z pewnością jestem jednym z nich. Zdaję sobie nawet sprawę, że niektóre z tych piętn kryją w sobie odrobinę prawdy, ale naprawdę chcę być atutem zespołu. Jak mam zakomunikować, że pomimo tego, że od około 8 lat jestem w dużej mierze samokierownikiem, nadal mogę przyjmować rozkazy marszu, gdy jest to potrzebne? Czy po prostu mówię to wprost? Czy powinienem po prostu stać się o wiele mniej skrupulatny w całym procesie? anegdota: Mam znajomego, który aplikował na stanowiska, na których kompletnie sfałszował swoje kwalifikacje, aby ominąć pierwszy ubój. Podczas kontaktu był znacznie bardziej szczery i otwarty w kwestii swoich aktualnych kwalifikacji, a mimo to udało mu się zaprosić go na kilka rozmów kwalifikacyjnych, a nawet dostał kilka ofert. Jego jaja są jednak większe niż moje.


title: Sposoby organizacji interfejsu i implementacji w C++

text: Widziałem, że w C++ istnieje kilka różnych paradygmatów dotyczących tego, co trafia do pliku nagłówkowego, a co do pliku cpp. AFAIK, większość ludzi, zwłaszcza tych z C, robi: ### foo.h class foo { private: int mem; int bar(); publiczny: foo(); foo(const foo&); foo& operator=(foo); ~foo(); } ### foo.cpp #include foo.h foo::bar() { return mem; } foo::foo() { mem = 42; } foo::foo(const foo& f) { mem = f.mem; } foo::operator=(foo f) { mem = f.mem; } foo::~foo() {} int main(int argc, char *argv[]) { foo f; } * * * Jednak moi wykładowcy zazwyczaj uczą początkujących C++ w następujący sposób: ### foo.h class foo { private: int mem; int bar() { return mem; } public: foo() { mem = 42; } foo(const foo& f) { mem = f.mem; } foo& operator=(foo f) { mem = f.mem; } ~foo() {} } ### foo.cpp #include foo.h int main(int argc, char* argv[]) { foo f; } // inne globalne funkcje pomocnicze, eksporty DLL itp. Pierwotnie wywodzące się z Javy, zawsze trzymałem się tego drugiego sposobu z kilku powodów, takich jak to, że muszę coś zmienić tylko w jednym miejscu, jeśli zmienią się nazwy interfejsu lub metody , że podobają mi się różne wcięcia elementów w klasach, gdy patrzę na ich implementację, i że uważam, że nazwy są bardziej czytelne jako `foo` w porównaniu do `foo::foo`. Chcę zbierać plusy i minusy w obu przypadkach. Może są jeszcze inne sposoby? Wadą mojej drogi jest oczywiście konieczność okazjonalnych deklaracji do przodu.


title: Zmiana kariery z wysokiego poziomu na programowanie jądra

text: Obecnie jestem zatrudniony jako programista wysokiego poziomu robiąc kilka rzeczy algorytmicznych i bazodanowych w C++. W mojej firmie są programiści, którzy piszą sterowniki jądra Windows (głównie sterowniki programowe, a nie sprzętowe). Ostatnio przeczytałem materiały dotyczące programowania jądra systemu Windows i zdałem sobie sprawę, że to programowanie, które mnie naprawdę interesuje (więcej niż programowanie na wysokim poziomie). Chciałbym przełączyć się na programowanie jądra, ale potrzebuję planu, aby to zrobić. Myślałam o tym, żeby poprosić szefa o przeniesienie mnie do wspomnianego projektu, ale w mojej firmie nie ma możliwości swobodnego przemieszczania się między projektami (duża presja, aby zostać specjalistą w jednej dziedzinie). Myślałem o zmianie pracy, ale jest jeden problem. Czy moje doświadczenie na wysokim poziomie dyskwalifikuje mnie do zostania programistą jądra? Może nie powinienem umieszczać w CV moich prac na wysokim poziomie? Czy mógłbyś doradzić w zmianie pracy?


title: Czy powinienem utworzyć mapowanie Enum do mojej tabeli bazy danych?

text: Mam tabelę bazy danych zawierającą listę systemów istotnych dla narzędzia, które tworzę, głównie aplikacje wewnętrzne lub systemy innych firm, z których otrzymujemy dane. Ta tabela jest dodawana rzadko, co około 2 miesiące. Jednym z tych systemów jest sam Windows, w którym przechowujemy sieci LAN naszych użytkowników, a teraz muszę wyraźnie odwołać się do identyfikatora związanego z systemem Windows, aby zapytać o nazwę użytkownika, zespół itp. Wiem, że osadzanie identyfikatora byłoby złą praktyką do kodu, więc moje pytanie brzmi: jaki byłby najlepszy sposób, aby tego uniknąć? Zakładam, że moje opcje to: * utworzyć globalną stałą reprezentującą ten identyfikator * utworzyć globalne wyliczenie zawierające teraz wszystkie systemy * utworzyć globalne wyliczenie i dodać do niego systemy, gdy są one wymagane w kodzie * pobrać identyfikator z baza danych oparta na nazwie systemu Doceniam to może wydawać się trywialnym pytaniem, ale w trakcie tej kompilacji będę mieć wiele takich sytuacji i chociaż mamy pełną kontrolę nad bazą danych, chciałbym zastosować się do najlepszych praktyk, ponieważ tak daleko, jak to możliwe. Wielkie dzięki!


title: Znajdowanie możliwych pozycji prostokąta w tablicy 2-wymiarowej

text: Cóż, tytuł nie jest zbyt odpowiedni, proszę czytaj dalej (nie mogłem znaleźć lepszego). Uwaga: Używam Pythona 2.7, ale algorytm też pomoże. Tworzę grę typu side scroller, w której na bieżąco generuję przeszkody. Kłopot, jaki mam, polega na wymyśleniu, jak generować przeszkody. o_O Mam jakąś logikę, ale potem mam problem z rozpracowaniem całej logiki. Oto mój problem z perspektywy implementacji: mam `Surface`, w którym umieściłem kilka `Element`s, które są wszystkie prostokątami. Pomyśl o tym tak: 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 Tak jak w powyższej strukturze, jak mogę określić, czy prostokąt `axb` może być dodany bez nakładania się na inny prostokąt (z jedynek) i gdzie wszystko. Również, że przy zachowaniu odległości x elementów (nawet po przekątnej) od wszystkich innych obiektów, oznacza to, że cały prostokąt to (x+3, x+4). Coś jak `x=1, a=3, b=4`, jest tylko jeden możliwy układ: (2s reprezentują nowy obiekt) 2 2 2 0 0 0 0 2 2 2 0 1 1 0 2 2 2 0 1 1 0 2 2 2 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 Zasadniczo muszę znaleźć wszystkie punkty, z których prostokąt o bokach `a` i ` b` może mieć to, powiedzmy, lewy górny róg. Jak to osiągnąć? Uwaga: Otwórz się na lepsze pomysły na generowanie przeszkód w locie! PS: Czy jestem niejasny?


title: czy ten wzór ma nazwę?

text: Kilka lat temu napisałem tę odpowiedź na pytanie, z którego zrodził się następujący pomysł. Nazywam je "deskryptorami typów", ponieważ nigdy nie byłem w stanie znaleźć tego wzorca udokumentowanego lub formalnie opisanego nigdzie - nie mylić z deskryptorami typów w C#, ale jest to najdokładniejsza nazwa, jaką udało mi się wymyślić, więc wytrzymaj ze mną. Oto moja pierwsza próba „formalnego” opisu: > Deskryptor typu to typ, który dostarcza metainformacji o innym > typie. > > Ten wzorzec może być postrzegany jako alternatywa dla refleksji w czasie wykonywania i > adnotacji, i jako taki ma również zastosowanie do języków, które > wspierają lub nie wspierają refleksji lub adnotacji. > > Deskryptory typów są szczególnie przydatne jako środek opisywania aspektów typów modeli występujących na przykład w modelach domen i widoków, a także w wyspecjalizowanych typach modeli, takich jak modele formularzy w biznesie lub w sieci > aplikacja. Często takie aplikacje mają wiele wspólnych aspektów, takich jak > konieczność oznaczania danych wejściowych i przeprowadzania wspólnych walidacji np. wymagane dane wejściowe, typy i formaty danych itp. - informacje wymagane przez obiekty pomocnicze (lub usługi) do obsługi tych aspektów wygodnie mieszczą się w deskryptorach. > > Deskryptor odzwierciedla kształt typu, który opisuje - na przykład, jeśli > typ modelu User ma właściwości takie jak id, name i email, jego deskryptor typu > musi mieć właściwości id, name i email, ale gdzie właściwości na > typ modelu mają różne typy wartości (w tym przypadku na przykład integer i > string) właściwościami deskryptora są obiekty, które dostarczają > informacji o tych właściwościach. > > Utrzymanie identycznego typu modelu i kształtów deskryptora może wydawać się > powielaniem, jeśli nazwy właściwości są identyczne w typie modelu > i deskryptorze typu - jednak nie narusza to zasady DRY jako > takie, ponieważ typ modelu i deskryptor, ściśle mówiąc, to dwa różne typy, które tylko mają ten sam kształt, ale nie mają żadnych nakładających się na siebie obaw lub powielania żadnego kodu; tylko nazwy właściwości są > duplikatami. Na co dzień programuję głównie w PHP iz powodzeniem używam tego wzorca do tworzenia aplikacji. Poniższy przykład jest w PHP, chociaż można to zaimplementować w dowolnym języku zdolnym do rozpoznawania właściwości według nazwy w czasie wykonywania. Aby to zaimplementować, wymagana jest niewielka część frameworka, więc zaczynamy... Typ modelu implementujący następujący interfejs może dostarczyć „deskryptor typu” — typ opisujący sam typ modelu: interface TypeInfo { function getType() ; } Poszczególne właściwości modelu są opisane przez „deskryptory właściwości” w „deskryptorze typu”, dla którego używam klasy bazowej w następujący sposób: abstract class PropertyInfo { /** @var string */ public $name; /** @var string */ public $label; public function __construct($name) { $this->name = $name; } } Z tej klasy wyprowadzam "deskryptory właściwości" dla określonych typów właściwości - na przykład ten typ opisuje właściwość ciągu: class StringInfo extends PropertyInfo { /** * @var int|null */ public $max_length; } Oto przykładowy model `User` i jest to „deskryptor typu” `UserType`: class Użytkownik implementuje TypeInfo { /** @var string */ public $name; /** @var string */ public $email; /** @return UserType */ public function getType() { return UserType::instance(); } } class UserType { /** @var StringInfo */ public $name; /** @var StringInfo */ public $email; public function __construct() { $this->name = new StringInfo('name'); $this->name->label = 'Imię i nazwisko'; $this->name->max_length = 50; $this->e-mail = new StringInfo('email'); $this->email->label = 'Adres e-mail'; $this->email->max_length = 128; } /** @return self */ public static function instance() { static $instance; return $instance ?: $instance = new static(); } } Jak widać, możliwe jest teraz pobranie deskryptora typu z instancji `User` przez np. `$user->getType()` \- zauważ, że nazwy właściwości „deskryptorów właściwości” w „deskryptorze typu” pasują do nazw właściwości w rzeczywistym modelu; używając tego wzoru, moim obowiązkiem jest upewnienie się, że model i jego deskryptor mają ten sam kształt. Teraz mogę pisać usługi i helpery itp., które mogą wykorzystywać informacje z "deskryptora typu" podczas pracy z obiektami modelu - na przykład tutaj jest bardzo prosty helper formularza: class FormHelper { /** @var TypeInfo */ public $model; /** @var string */ public $prefix; /** * @param TypeInfo $model * @param string $prefix */ public function __construct(TypeInfo $model, $prefix) { $this->model = $model; $this->prefix = $prefix; } /** * @param StringInfo $prop * * @return string */ public function text(StringInfo $prop) { $name = $prop->name; return '' . htmlspecialchars($prop->label) . '' . '<input type="text" name="' . $this->prefiks . '[' . $name . ']"' . ($prop->max_length ? 'maxlength="' . $prop->max_length . '"' : '') . ' value="' . $this->model->$name . '" id="' . $name . '" />'; } } Pomocnika formularzy można użyć w następujący sposób: $user = new User; $user->name = 'Rasmus'; $użytkownik->e-mail = 'rschultz@gorges.us'; $form = nowy FormHelper($użytkownik, 'użytkownik'); $t = $user->getType(); echo $form->text($t->name) . "\n"; echo $form->text($t->e-mail) . "\n"; Co dałoby coś takiego: Pełne imię<input type="text" name="user[name]" maxlength="50" value="Rasmus" id="name " /> <etykieta for="email">Adres e-mail<input type="tekst" name="użytkownik[e-mail]" maxlength="128" value="rschultz@gorges.us" id= "e-mail" /> Dwa główne powody, dla których lubię pracować w ten sposób, to (1) wzorce, takie jak renderowanie formularzy, mapowanie danych do obiektów modelu, mapowanie obiektów modelu na rekordy bazy danych, przeprowadzanie walidacji danych wejściowych itd. formalne pomocniki i obiekty usługowe, z których wszystkie wykorzystują to samo źródło informacji, oraz (2) wszystko jest „wpisane statycznie”, co oznacza, że wewnątrz "deskryptor typu" oraz wskazówki i wnioskowanie o typach w nowoczesnym IDE (PhpStorm) mogą zapewnić zautomatyzowaną inspekcję kodu w czasie rozwoju, mogę bezpiecznie korzystać z automatycznych refaktoryzacji i tak dalej. No dobrze, dość długi dyskurs, bo sprowadza się do jednego pytania: czy ten wzór ma nazwę? :-) Pytanie poboczne: czy to jest metaprogramowanie (refleksyjne)? (Użycie tego wzorca jest bardzo podobne do np. używania odbicia w celu uzyskania adnotacji z modelu, chociaż uważam, że jest to znacznie bezpieczniejsze, mniej skomplikowane, bardziej elastyczne i przejrzyste.)


title: Dlaczego mod (%) jest podstawowym operatorem matematycznym w wielu językach programowania?

text: Czy istnieje powód, historyczny lub inny, dlaczego operator modułu jest częścią małego zestawu standardowych operatorów w wielu językach? (`+, -, *, /` i `%`, dla Javy i C, z `**` w Ruby i Pythonie). Wydaje się dziwne, że dołączam mod jako "podstawowy" (nie żeby go pukać, często go używam, ale używam też potęgowania, wartości bezwzględnej, podłogi/sufitu lub innych - wydają się równie przydatne i konieczne). Czy była to stara decyzja podjęta w jakiejś specyfikacji, której przestrzegają Java, C, Ruby i Python, czy też w języku, z którego wszystkie się wywodzą? O ile wiem, większość dialektów Lispa zawiera tylko `+, -, /` i `*`. Na początku zastanawiałem się, czy mod jest szczególnie łatwy do zaimplementowania na poziomie binarnym (czy to miałoby jakiekolwiek znaczenie, jeśli chodzi o decyzje o tym, co powinno być operatorem „podstawowym”, a co nie?), ale wydaje się, że tak nie jest. Czy jest po prostu znacznie częściej używany w programowaniu niż mi się wydaje?


title: Myślę, że CSRF chroni wszystkie publiczne żądania AJAX, które zwracają JSON, ale mam pewne obawy

text: Myślę, że CSRF chroni wszystkie publiczne żądania AJAX, które zwracają JSON, ponieważ co ma uniemożliwić innej witrynie fałszowanie nagłówka AJAX i używanie JSON tak, jakby to był publiczny interfejs API? Myślę, że ochrona CSRF jest najlepszym rozwiązaniem, **jednak jestem zaniepokojony sposobem, w jaki Laravel to obsługuje** : 1. Używając filtra CSRF laravela, zauważyłem w _app/filters.php_, że sprawdza on za pomocą `Session:token `, czy będzie to wymagało od każdego odwiedzającego publicznego posiadania sesji i nałożenia dodatkowego wymagania na pamięć RAM serwera (w przeciwieństwie do przeglądania bez sesji). 2. W filtrze CSRF Laravel sprawdza `Input::get('token')`, ale mogę również wykonać wywołania POST ajax. Czy żądania POST nie będą działać? 3. Co zrobić, jeśli odwiedzający ma otwarte okno. Odchodzą na chwilę... potem wracają, by wykonać prośbę ajax. Byłby to problem i musielibyśmy odświeżyć stronę, co wydawałoby się niewygodne dla gościa publicznego (w przeciwieństwie do zalogowanych użytkowników, gdzie moglibyśmy po prostu przekierować do strony logowania). 4. Co się stanie, jeśli odwiedzający (lub nawet zalogowany użytkownik) ma otwarte 2 okna? Odchodzą i kończą sesję. Następnie wróć i odśwież jedno okno (lub zaloguj się ponownie w jednym oknie), a następnie przejdź do drugiego okna, aby wykonać operację (tylko po to, aby znaleźć to nie działa lub są zmuszeni do ponownego logowania). **Czy ktoś może rozwiązać te problemy we wdrażaniu ochrony CSRF przez Laravel?**


title: Jako programista jak mam zamiar uczyć się nowych rzeczy w wolnym czasie?

text: Jestem programistą Asp.Net/C#, w wolnym czasie rozwijam kilka projektów. Staram się jak najlepiej wykorzystać swój czas. Pracuję od 7 miesięcy. Nagle w dzisiejszych czasach trochę się martwię o poznanie nowych rzeczy, które są dostępne dla mnie jako programisty. W wolnym czasie rozwijam się, więc nie mam czasu na czytanie książek czy blogów. Więc moje pytanie do niektórych z was brzmi, jak mam planować uczyć się nowych rzeczy, czy powinienem poświęcić przynajmniej dwa-trzy wieczory na nowe rzeczy, może e-booki podczas podróży też są dobrą opcją. Jak wy, ludzie, planujecie się uczyć, czy ja też powinienem zacząć się rozwijać z tym, czego się nauczyłem? Jeśli chodzi o naukę, czy powinienem po prostu podnieść podstawy, a następnie je wdrożyć, czy powinienem szukać głębszego zrozumienia tematu?


title: Które wzorce projektowe GOF dobrze współpracują z TDD, a które nie?

text: Książka GOF Design Patterns rzadko wspomina o możliwości testowania każdego wzorca. Zdaję sobie sprawę, że istnieją wzorce takie jak Singleton, które prowadziłyby do kodu, dla którego trudno pisać testy jednostkowe, oraz takie, jak Strategy, które pomagają w TDD. Jakie wzorce promują TDD, a które utrudniają TDD?


title: Wymyśl i Strażnik

text: Używam Devise od jakiegoś czasu i zdałem sobie sprawę, że jest zbudowany na czymś innym, zwanym Warden, który obsługuje uwierzytelnianie. Co Devise oferuje mi poza Wardenem, ponieważ rozważałem usunięcie Devise i po prostu użycie Wardena.


title: Doświadczenie a wszechstronność

text: Powiedzmy, że programista .NET pracuje w firmie, która dostarcza oprogramowanie na żądanie, a nie jako produkt. Programista pracuje w WPF przez pewien czas i inwestuje w to dużo czasu. Jest bardzo dobry w WPF i Windows Forms oraz ogólnie w tworzeniu pulpitu. Ale firma musi teraz dostarczyć aplikację internetową, więc programista musi nauczyć się MVC lub formularzy internetowych. Nie ma doświadczenia w tworzeniu stron internetowych, więc zaczyna inwestować czas w tę nową technologię i z czasem stają się w niej dobrzy. Ale tym razem firma musi dostarczyć rozwiązanie Sharepoint i tak dalej. Co jest ważniejsze: * Bycie bardzo, bardzo dobrym w określonej technologii, * A może bycie tak wszechstronnym, jak to możliwe, wiedząc mniej w każdej technologii, ale obejmującym większą dziedzinę wiedzy? Czy programista powinien uczyć się i pracować w WPF, dopóki nie osiągnie poziomu guru, czy to dobrze, że musiał uczyć się także innych technologii? Zgadzam się z tymi z Was, którzy powiedzą, że ucząc się różnych technologii, nauczycie się również rzeczy przydatnych bez względu na to, w jakiej technologii programujecie. Ale w końcu, gdy programista będzie chciał zmienić pracę, będzie miało większe znaczenie, że on / zna _jakiś_ WPF, MVC czy Sharepoint niż to, że jest obłędnie dobry w jednym z nich? Myślę, że to drugie jest ważniejsze, ponieważ większość firm szuka programisty dla określonej technologii. Nie wydaje mi się, żeby było wiele firm, które szukają technicznie wszystkowiedzących ludzi. Co myślisz?


title: Lisp/Clojure: usuwanie niepotrzebnych nawiasów poprzez konwencje

text: Fascynuje mnie Lisp, ponieważ jest „prosty, ale potężny”. Jestem dopiero początkującym i wiem, że było wiele dyskusji na temat usuwania nawiasów z Lispu i jego dialektów. Jednak proszę ninja Lisp, aby poświęcili kilka minut na udzielenie odpowiedzi. Czy będą jakieś skutki uboczne w Lisp/Clojure, jeśli przestrzegali 2 poniższych konwencji: ;; deklaracja funkcji defn nazwa-funkcji param-1 .... param-n ... ciało-funkcji ;; nie (ciało funkcji) ... ;; wywołanie funkcji nazwa-funkcji param-1 ... param-n ;; not (nazwa-funkcji param-1 ... param-n) Podczas gdy nadal używa się `()` lub `[]` dla wyrażeń wbudowanych i zagnieżdżonych. (println "cześć, ") (println "świat !!!") ;; w linii = a (- 2 3) ;; zagnieżdżone


title: Jaki jest najprostszy/najłatwiejszy sposób wyświetlania tylko linii tekstu podczas drukowania strony internetowej przy użyciu PHP?

text: Mam wiersz tekstu, który chciałbym wyświetlić tylko podczas drukowania strony internetowej. Czy możliwe jest wyświetlenie tej linii tylko podczas drukowania strony lub wykonywania podglądu wydruku przy użyciu PHP w jakiś sposób? Zasadniczo chcę wydrukować stronę bez nagłówków drukowania, ale chciałbym dołączyć adres URL strony do zawartości strony podczas drukowania.


title: Implementacja/reprezentacja symetrii na szachownicy

text: Na szachownicy 8X8 zastanawiałem się, jak zaimplementować symetrię szachownicy. Wiele pozycji to tylko **lustrzane** lub **obroty** siebie nawzajem (bez możliwości roszady i pionków, kierunki są nie do odróżnienia). Używając kombinacji **pionowych, poziomych** i **ukośnych odbić lustrzanych** planszy, zawsze można ustalić pozycję pionka w trójkącie `a1-d1-d4`. Jak zaimplementować te symetrie na szachownicy? W jaki sposób implementacja zależy od wyboru wybranej reprezentacji tablicy (tablice bitów, tablica 0x88, 8x8 itd.)? **Edycja 1:** Głównym celem jest wdrożenie generatora silnika gry końcowej i skompresowanie jego wyników


title: Czy UML powinien być używany przed lub po podstawowym projekcie programu?

text: Diagramy UML wymagają czasu i mimo że dostarczają wiedzy na temat projektowania programów, zmiany projektu, a także wymagania, stają się uciążliwe, aby utrzymać diagramy UML w synchronizacji z kodem. Zastanawiam się, jak optymalnie używać UML.


title: Zamieszanie dotyczące instancji w interfejsie

text: Próbuję nauczyć się frameworka OGSi (dystrybucja Equinox). Zarejestrowałem swoją usługę, ale nie rozumiem fragmentu kodu, który skopiowałem: IAgendaService service = new AgendaService(); Co oznacza ta linia kodu? Myślę, że w obiekcie usługi są metody `IAgendaService`, które zaimplementowałem w `AgendaService`, ale nie jestem tego pewien. Czy to może być coś w rodzaju upcatingu? (wiem, że tak być nie może, bo nie ma dziedziczenia, ale staram się znaleźć coś podobnego do porównania)


title: Jakiej licencji powinienem używać dla oprogramowania pochodnego (przeniesionego) oryginalnie licencjonowanego w ramach Publicznej Licencji Mozilla v2?

text: Obecnie próbuję przenieść jedno narzędzie z Javy na .NET, a oryginalne narzędzie Javy jest na licencji Mozilla Public License v2. Czy mój port ma taką samą licencję, czy mogę zastosować inną licencję open source? Większość kodu narzędzia została automatycznie przekonwertowana za pomocą konwertera kodu Java na .NET.


title: Jak „ułatwić” programowanie wywodzące się z doświadczenia projektanta?

text: Czy istnieje sposób na „ułatwienie” programowania. Lubisz uczyć się używania/modyfikowania skryptów CGI, aby dodać kilka funkcji do podstawowej witryny html? Nawet jeśli to jedyna rzecz, której się uczę, nadal jest przydatna, prawda?. W przeciwieństwie do rozpoczynania od pierwszej strony książki O'reilly Python, może minąć rok, zanim będę przydatny, albo dowiem się, że to nie dla mnie. Z zawodu jestem projektantem (nie programistą), ale coraz częściej buduję strony w aplikacjach opartych na php, takich jak wordpress i joomla. Lub czasami mam podstawową witrynę html i chcę dodać formularz lub małą aplikację. Równocześnie coraz bardziej interesuję się funkcjami interaktywnymi i 'narzędziami' przetwarzania, więc rozważam używanie niektórych języków skryptowych (php, javascript, cgi) lub nawet języków wysokiego poziomu, takich jak perl, python czy ruby. Ale jakaś część mnie mówi „co ty do diabła tu robisz? Istnieje świat programistów we wszechświecie składni. Zgubisz się, zanim będziesz przydatny, więc po prostu zatrudnij programistę i idź uczyć się gry na fortepianie, zrób wolontariat lub coś innego przydatnego." Ale jest też inna strona mnie, która mówi: „hej, czy nie byłoby wspaniale, gdybym mógł po prostu podłączyć tutaj prosty proces i wykonać tę małą pracę”. Czy ktoś może polecić wnikliwe podejście, czy też powinien zawrócić i po prostu udawać, że programowanie nigdy nie istniało? Czy Python jest odpowiednim punktem wyjścia?


title: Czy mogę sprzedawać własne oprogramowanie, które wykorzystuje części PSEXEC?

text: Mam tylko szybkie pytanie dotyczące licencji PSEXEC od sysinternals. Jak niektórzy z was mogą wiedzieć, jeśli kiedykolwiek używaliście PSEXEC, uczenie się na początku jest mylące. Stworzyłem program, który ułatwia korzystanie z niego i zastanawiałem się, czy mogę go sprzedawać (nawet jeśli jest do niego dołączony PSEXEC?). Zajrzałem do umowy licencyjnej sysinternals, ale tak naprawdę nie mogłem znaleźć odpowiedzi na moje pytanie. Umowa znajduje się tutaj: http://technet.microsoft.com/en-us/sysinternals/bb469936 Główna strona pobierania i informacji o PSEXEC jest tutaj: http://technet.microsoft.com/en-us/sysinternals/bb469936 Proszę o informację, czy będę mógł sprzedać swój program. (Zakładam, że jestem na właściwej stronie stackexchange, ale daj mi znać, czy powinienem przenieść moje pytanie) Dzięki!


title: Następny język? Coś praktycznego, ale na uboczu?

text: Już od jakiegoś czasu swędziało mnie, żeby nauczyć się nowego języka. Zjadłem zęby na PHP, chociaż już go nie używam. Obecnie programuję głównie w D i Pythonie. Czuję, że te języki dobrze się uzupełniają, ponieważ D jest bliskie metalowi, statycznie typowane i krwawiące, podczas gdy Python jest bardziej dynamiczny, interpretowany, bardziej dojrzały i ma lepszą obsługę bibliotek. Znam również C całkiem dobrze (głównie nauczyłem się używając podzbioru D podobnego do C), mam pewną wiedzę o C++ i napisałem kilka bardzo małych jednorazowych programów w Perlu i Javie. Kluczowe rzeczy, których chcę w języku, to: * Język, który znacznie poszerza moje horyzonty. Nie chcę uczyć się czegoś, co nie nauczy mnie niczego koncepcyjnie interesującego w stosunku do D i Pythona. * Praktycznie zorientowany język. Absolutnie 110% nie chce poświęcać żadnego wysiłku na naukę języka, który wydaje się akademicki i kładzie nacisk na czystość ponad praktyczność. * Coś, co jest dojrzałe, nowoczesne i wystarczająco dobrze obsługiwane, aby można je było wykorzystać do prawdziwej pracy. Niekoniecznie oznacza to duże projekty produkcyjne, ale przynajmniej poważne prototypy i kod badawczy. * Dobre generyki, szablony, pisanie kaczką, wnioskowanie o typie lub coś podobnego, aby uniknąć sztywności zwykłego, starego, statycznego pisania jest koniecznością. * Liczy się zwięzłość i czytelność, choć są one wprawdzie subiektywne.


title: Jakie są przypadki użycia i zalety wskaźników?

text: Często zmagam się z zaletami wskaźników (z wyjątkiem programowania niskopoziomowego). Dlaczego warto używać char* zamiast String lub char[] lub jakie korzyści przynosi arytmetyka wskaźników. Więc jakie są zalety i przypadki użycia wskaźników?


title: pomoc w implementacji zbierania danych w postaci kreatora (next, next, finish)

text: Zaczynam budować interfejs dla naszych techników terenowych do zamykania zleceń pracy i mamy wiele różnych wymaganych formularzy papierowych dla różnych klientów. Miałem nadzieję, że zbuduję system, w którym będę mógł skonfigurować stronę dla każdego formularza (wszystko w .Net 4.0/wpf i ewentualnie przy użyciu caliburn.micro, jeśli nie jest to zły wybór) i na podstawie reguł automatycznie wyświetlać niektóre strony. Zacząłem od skonfigurowania podstawowego frameworka składającego się z formularza wpf z 3 przyciskami (wstecz, następny/zakończ, anuluj) i ramki. W końcu mam nadzieję, że posiadam obiekt, który przekażę identyfikator, który pozwoli uzyskać wszystkie potrzebne informacje, zdecydować, które strony wyświetlić, wyświetlić je w kolejności i zaktualizować naszą bazę danych, gdy użytkownik kliknie Zakończ. Czy jest coś konkretnego, co powinienem badać/uczyć się, aby moja praca była łatwiejsza lub aby mój gotowy produkt był bardziej wytrzymały/niezawodny? Jakie byłoby dobre podejście do decydowania, które strony wyświetlać? Przeważnie byłoby to oparte na czymś w rodzaju "Pokaż ten formularz, jeśli Klient to X", ale chciałbym być bardziej złożony (rozszerzalny?) niż to, jeśli potrzebuję. Ostatecznie każda strona/formularz prawdopodobnie wygeneruje również plik PDF z wypełnionym formularzem klienta. Brzmi to jak rutynowa rzecz, ale nigdy osobiście nie zaimplementowałem ani nie używałem niczego, co to zrobiło, więc ja idę na ślepo. czy okno hostingu zapyta stronę, czy trzeba je pokazać? czy strony powinny mówić same? czy okno hostingu powinno przekazać cały obiekt danych do funkcji logicznej `ShouldIShowYou()` i pozwolić stronie uporządkować to? musi już istnieć jakiś mechanizm, aby „zarejestrować” stronę jako służącą do pewnego „czegoś”, ale nie jestem pewien, co to jest. Chciałbym, aby była dość łatwo aktualizowana, ale aplikacja jest wdrażana za pomocą jednego kliknięcia, a całkowita liczba użytkowników będzie poniżej 100 w przewidywalnej przyszłości. samo dodanie nowego obiektu strony + logiki do kolekcji i ponowne wdrożenie nie powinno sprawiać problemów. kilka innych pytań, które miałem: * czy mógłbym (powinien) zaimplementować to jako transakcję w .net, gdzie mógłbym rozpocząć transakcję po utworzeniu okna/obiektu, aby każda pojedyncza strona w ramce wykonywała swoją własną pracę z danymi (poprzez współdzielonym proxy wcf), a następnie zatwierdzić transakcję, gdy wszystko się ułoży? * czy każda strona powinna po prostu budować obiekt, a główne okno przekazywać obiekt z powrotem, a oryginalna aplikacja ma działać z danymi? np. sprawić, by cały segment aplikacji był nieświadomy danych. nie jestem pewien, czy zadziałałoby to bardzo dobrze, brzmi jak koszmar konserwacji. * czy to niewłaściwe miejsce na zadawanie tego rodzaju pytań? nie szukam kodu, więc nie czułem się dobrze w przepełnieniu. jest to bardziej pytanie typu „jakie są słowa opisujące to, co próbuję zrobić”. Dziękuję! przeczytam to ponownie 10 lub 12 razy w ciągu dnia i spróbuję wyjaśnić, czy mogę. Moja mowa mózgowa nie zawsze tworzy śmiałe słowa.


title: Zrozumienie różnicy między klasami zmiennymi i niezmiennymi

text: Spotkałem się z tym pytaniem w jednym wywiadzie. Wyjaśniłem, że `String` jest niezmienny, a `StringBuffer` jest klasą mutowalną. Niewiele wiem o zmienności i niezmienności, a także nie znam dokładnej odpowiedzi. Jakie są kluczowe pojęcia, aby móc odróżnić te dwie idee? Czy wybór jednego z nich ma wpływ na wydajność?


title: czy to źle, że nie mam html lub javascript w moich plikach php?

text: Piszę swoją stronę, front-end: html, JS, jquery i css, back-end: php mysql. Jednak moje pliki php zawierają tylko kod php i mysql. Czy to naprawdę zła rzecz? W jakiej sytuacji pliki PHP powinny zawierać html/javascript? Obecnie moje pliki php są tylko po to, aby otrzymywać żądania i odpowiedzi z szeregiem informacji. Po prostu nie rozumiem, dlaczego ludzie mieliby umieszczać elementy front-endowe w back-endzie, czy to dla bezpieczeństwa?


title: Lepsze wykorzystanie nazwy zmiennych

text: Mam metodę, która wygląda tak: Public Function NormalizeStreetAddress(country As Namespace.Country, streetAddress As Namespace.StreetAddress) _ As Namespace.StreetAddress Dim _streetAddress As New Namespace.StreetAddress = streetAddress If My.Settings.Streetable = True Then Dim _AddressCustom As New Namespace.AddressCustom _streetAddress = _AddressCustom.NormalizeStreetAddress(country, streetAddress) End If Return _streetAddress End Function Otrzymuję obiekt streetAddress, ale wewnątrz metody muszę użyć innego obiektu streetAddress, który nazwałem _streetAddress — czy jest to zgodne ze standardem? Mój przyjaciel powiedział mi, że nazwy obiektów, takie jak _yourNameObject są dla zmiennych globalnych, ale nie mogę znaleźć informacji na ten temat i chcę, aby ta metoda była bardziej czytelna.


title: Nazywanie pola logicznego, które jest czasownikiem

text: W Javie umownie pobierającym i ustawiającym pola logiczne będzie `isField()` i `setField()`. Działa to doskonale z nazwami pól, które są przymiotnikami, takimi jak „aktywny”, „widoczny”, „zamknięty” itp. Ale jak nazwać pole, które ma znaczenie czasownika, na przykład „haveChildren”? Może dodać _ing do czasownika (havingchildren)? Edycja: aby wyjaśnić, nie mam kontroli nad nazwami metod (getter i setter), są one automatycznie generowane przez IDE. Więc to, czego potrzebuję, to odpowiednia nazwa pola, aby kiedy IDE generuje dla niego getter, ma to sens. Na przykład hasChildren to idealna nazwa pola, ale gdy IDE generuje getter dla pola, będzie to isHasChildren. Jak to rozwiązać?


title: Zwalczanie efektu Einstellung

text: Efekt Einstellung odnosi się do „predyspozycji osoby do rozwiązania danego problemu w określony sposób, nawet jeśli istnieją „lepsze” lub bardziej odpowiednie metody rozwiązania problemu. Jako programista z przyzwoitym doświadczeniem, jak można zwalczyć tę tendencję do ciągłego podejścia do rozwiązywania problemów z „wypróbowanych i prawdziwych” ścieżek z przeszłych doświadczeń? Aby podać dwa bardzo konkretne przykłady, buduję aplikacje internetowe od dłuższego czasu, wystarczająco długo, aby wyprzedzić szerokie zastosowanie frameworków JavaScript (np. jQuery) i lepszych frameworków aplikacji internetowych (np. ASP.NET MVC). Jeśli mam pracę z klientem, w której mam problemy z czasem lub naglące problemy z dziedziny problemowej lub reguł biznesowych, zwykle używam tego, co wiem, aby spróbować znaleźć rozwiązanie. Wiąże się to z bardzo brzydkimi rzeczami, takimi jak document.getElementById lub używanie ASP.NET z kontrolkami powiązanymi z szablonem (DataList/Repeater), zamiast zastanawiać się, jak ponownie utworzyć elementy za pomocą podejścia ASP.NET MVC. Jedną z technik, których używałem w przeszłości, jest posiadanie osobistych projektów, które istnieją po prostu dla odkrywania tych nowych technologii, ale jest to trudne do utrzymania. Jakie inne podejścia można by polecić?


title: Różnice między bezpośrednim, składem, agregacją i tymczasowym powiązaniem

text: Niedługo mam zamiar zdobyć certyfikat Java i mam pytanie dotyczące różnych typów stowarzyszeń opisanych w oficjalnym przewodniku Oracle. Książka opisuje 4 w następujący sposób: * Direct = "ma-a" * Composition = "złożony z" * Agregacja = "część" * Temporary = parametry metody lub zmienne lokalne wewnątrz metody itp. Rozumiem przykłady, które dostarczają, ale kiedy pokazano kawałek kodu, nigdy nie mogę zrozumieć, dlaczego jest to jeden typ nad drugim. Aby zwiększyć moją frustrację, te terminy nie wydają się być powszechnymi terminami w diagramach uml, a kompozycja lub agregacja jest zwykle określana jako relacja „ma-a” w zależności od tego, gdzie czytasz. Oto link do książki. http://www.amazon.com/Programmer-Study-Guide-1z0-803-Oracle/dp/0071789421 Strony 386-388 opisują różne powiązania. Bardzo pomocne byłyby przykłady kodu.


title: Starszy wybór środowiska projektowego

text: Wraz z 2 przyjaciółmi przygotowujemy nasz starszy pomysł na projekt na przyszły rok. Potrzebuję kilku różnych pomysłów podczas decydowania o podstawowym środowisku projektu, zwłaszcza od programistów/inżynierów, którzy pracowali przy dużych projektach oprogramowania. * Mamy ograniczone zasoby ludzkie ( _tylko my, 3 studentów_ ), ograniczony czas i bardzo ograniczone fundusze. * Projekt jest przeznaczony do środowisk biurowych, takich jak Outlook, Thunderbird. * Będzie działał na pulpicie, a nie w sieci * GUI będzie naprawdę bogaty w niestandardowe widżety/okna dialogowe, takie jak Outlook * Chcemy zacząć sprzedawać i otwierać być może małą firmę. Więc nie jest to dla nas tylko starszy projekt i traktujemy go poważnie. * Nawet jeśli nie możemy otworzyć firmy, chcemy, aby ten projekt był dobrą referencją w naszym CV, szczególnie przy poszukiwaniu pracy w USA. * Szybkość oprogramowania jest oczywiście ważna, ale realność _(awarie w oprogramowaniu komercyjnym są nie do zaakceptowania przez klientów, prawda?)_ i doprowadzenie projektu do stanu używalności tak szybko, jak to możliwe, są ważniejsze. * Będzie jak MS Outlook, z wieloma funkcjami w jednym kliencie. _(Właściwie to bardziej niż Outlook, jeśli się liczy.)_ * Chcemy też, aby ten projekt przenosił nasze praktyczne umiejętności w lepsze miejsce * Używamy C++ i Javy naprawdę dobrze, ale nigdy nie pracowaliśmy w ramach dużego projektu, więc możemy” t zobaczyć, jak środowisko wpływa na nasze potrzeby w dłuższej perspektywie Mamy do wyboru dwa środowiska (Java Swing i C++ Qt) i jesteśmy w nich biegli, ale ze względu na czynniki, które opisałem powyżej, powinniśmy zdecydować, które z nich jest lepsze. **Co byś radził dla projektu z tymi kryteriami?** * * * **Nasze obawy związane z Javą:** * Spowalnianie oprogramowania, ponieważ to naprawdę duży projekt. * Szczególnie boimy się szybkości GUI. **Nasze obawy związane z C++:** * Tworzenie czasochłonne * Zdecydowanie więcej błędów wystąpi * Więcej czasu lub pieniędzy na rozwój i utrzymanie _(trudniej jest znaleźć dobrych programistów C++ niż programistów Java?)_ * Tworzenie tak bardzo spersonalizowanego GUI za pomocą Qt może być naprawdę trudne * Biblioteki nie nadają się do ponownego wykorzystania w interfejsie WWW dla urządzeń przenośnych _(przynajmniej łatwo)_ _PS: To nie jest klient poczty e-mail. Będzie używany w środowiskach biurowych, takich jak Outlook, ale nie jako klient poczty e-mail. Outlook to dobry obrazek, który go reprezentuje._


title: Napisz własny system przesyłania wiadomości zamiast korzystać z istniejących

text: Staramy się mieć własny start-up z aplikacją middleware do łączenia małych aplikacji ze starszymi systemami korporacyjnymi. aby takie oprogramowanie pośrednie działało poprawnie, będziemy potrzebować jakiegoś systemu przesyłania wiadomości, aby różne komponenty komunikowały się ze sobą w niezawodny sposób. alternatywy to: * użyj istniejącego systemu przesyłania wiadomości, takiego jak 0MQ, jBOSS, WebSphere MQ itp. * zbuduj własny system przesyłania wiadomości w sposób, w jaki postrzegamy problem. Jestem bardziej skłaniany do późniejszej opcji z następujących powodów: * mieć większa kontrola nad naszym produktem końcowym * aby uniknąć późniejszych problemów licencyjnych * aby dowiedzieć się o komunikatach podczas pisania kodu * wymyślić coś nowego, co może kosztować nas dużo, jeśli ponownie użyjesz istniejącego systemu Co byś zrobił, gdyby w moim buty?


title: Dynamiczne dziedziczenie klas dla PHP

text: Mam sytuację, w której myślę, że mogę potrzebować dynamicznego dziedziczenia klas w PHP 5.3, ale pomysł nie pasuje i szukam innego wzorca projektowego, aby rozwiązać mój problem, jeśli jest to możliwe. ## Przypadek użycia Mam zestaw klas warstwy abstrakcji DB, które dynamicznie kompilują zapytania SQL, z jedną klasą DAL dla każdego typu DB (MySQL, MsSQL, Oracle itp.). Każda tabela w bazie danych ma swoją własną klasę, która rozszerza odpowiednią klasę DAL. Chodzi o to, że wchodzisz w interakcję z klasami tabeli, ale nigdy nie używasz bezpośrednio klasy DAL. Jeśli chcesz obsługiwać inny typ bazy danych dla swojej aplikacji, nie musisz przepisywać żadnych zapytań ani nawet kodu, po prostu zmieniasz ustawienie, które zamienia jedną klasę DAL na inną... i to wszystko. Aby lepiej zrozumieć, jak to jest używane, możesz zapoznać się z klasą DAL, klasami tabel i sposobem ich użycia na tej stronie Przegląd kodu StackExchange. Aby naprawdę zrozumieć, co próbuję zrobić, najpierw spójrz na moją implementację, zanim zasugeruję rozwiązanie. ## Problemy Strategia, której wcześniej używałem, polegała na tym, aby wszystkie klasy DAL miały tę samą nazwę klasy. To wyeliminowało automatyczne ładowanie, więc musiałem ręcznie załadować odpowiednią klasę DAL w instrukcji switch. Jednak takie podejście stwarza pewne problemy w celach testowych i dokumentacyjnych, dlatego chciałbym znaleźć inny sposób rozwiązania problemu z bardziej eleganckim ładowaniem poprawnej klasy DAL. **Aktualizacja wyjaśniająca problem** Problem w zasadzie sprowadza się do niespójności w nazwie klasy (pre-PHP 5.3) lub przestrzeni nazw klas (PHP 5.3) i jej lokalizacji w strukturze katalogów. W tym momencie wszystkie moje klasy DAL mają tę samą nazwę, DBObject, ale znajdują się w różnych folderach, MySQL, Oracle itp. Wszystkie moje klasy tabel rozszerzają DBObject, ale to, które DBObject rozszerzają, zależy od tego, który z nich został załadowany. Zasadniczo staram się mieć ciastko i też je zjeść. Klasy tabel działają jako stabilne API i rozszerzają dynamiczny backend, klasy DAL (DBObject). Działa świetnie, ale przechytrzyłem samego siebie i z powodu niespójności w nazwach klas i ich lokalizacjach nie mogę automatycznie załadować DBObject, co uniemożliwia uruchamianie testów jednostkowych i generowanie dokumentacji API dla klas DBObject, ponieważ testy i dokumenty opierają się na automatyczne ładowanie. Samo załadowanie odpowiedniego DBObject do pamięci przy użyciu metody fabrycznej nie zadziała, ponieważ będą chwile, kiedy będę musiał załadować wiele DBObjects do testowania. Ponieważ klasy mają obecnie wspólną nazwę, powoduje to, że klasa ma już zdefiniowany błąd. Oczywiście mogę zrobić wyjątki dla DBObjects w moim kodzie testowym, ale szukam czegoś mniej hackowego, ponieważ mogą istnieć przyszłe przypadki, w których trzeba będzie zrobić coś podobnego. ## Rozwiązania? W najgorszym przypadku mogę kontynuować moją obecną strategię, ale nie bardzo mi się to podoba, zwłaszcza że niedługo będę konwertować mój kod do PHP 5.3. Podejrzewam, że mogę użyć pewnego rodzaju dynamicznego dziedziczenia za pośrednictwem przestrzeni nazw (preferowane) lub dynamicznego rozszerzenia klasy, ale nie udało mi się znaleźć dobrych przykładów tego zaimplementowanych w środowisku naturalnym. W swoich odpowiedziach zasugeruj albo alternatywny wzorzec, który sprawdziłby się w tym przypadku użycia, albo przykład prawidłowego dziedziczenia dynamicznego. Proszę przyjąć PHP 5.3 z kodem z przestrzenią nazw. Wszelkie przykłady kodu są bardzo zachęcane i zdecydowanie jestem otwarty na różne podejścia. Preferowane ograniczenia rozwiązania to: * Klasa DAL może być ładowana automatycznie. * Klasy DAL nie mają dokładnie tej samej przestrzeni nazw, ale mają tę samą nazwę klasy. Jako przykład wolałbym używać klas o nazwie DbObject, które używają przestrzeni nazw, takich jak `Vm\Db\MySql` i `Vm\Db\Oracle`. * Klasy tabel nie muszą być przepisywane ze zmianą typu DB. * Właściwy typ DB jest określany tylko przez jedno ustawienie. To ustawienie jest jedyną rzeczą, którą należy zmienić w celu wymiany typów baz danych. W idealnym przypadku sprawdzanie ustawień powinno odbywać się tylko raz na wczytanie strony, ale jestem pod tym względem elastyczny. ## Końcowa aktualizacja Dzięki sugestii NikiC stworzyłem abstrakcyjną klasę fabryczną, która ładuje właściwy DBObject, a następnie opakowuje swoje metody publiczne w stosunku 1:1. Klasy tabeli rozszerzają teraz fabrykę zamiast klasy DBObject. Ta konfiguracja pozwoli mi teraz testować i używać każdej klasy DBObject bez martwienia się o konflikty i pozwala mi korzystać z wielu DBMS na raz. Pozwala mi również zachować podpowiedzi do kodu w IDE dla każdej klasy tabeli, ponieważ każda z nich rozszerza opakowanie fabryczne. Używanie metod zawijania może nie jest idealnym rozwiązaniem, ale nie opiera się na dynamicznym dziedziczeniu klas, rozwiązuje mój problem projektowy, spełnia moje wymagania i działa.


title: Jak mogę umieścić wyniki wyszukiwania mojej witryny w wynikach wyszukiwania Google?

text: Jedyne, co mogę znaleźć w sieci, to rzeczy o rankingach wyników wyszukiwania, którymi w tej chwili się nie przejmuję. Będziemy mieć internetową bazę danych opartą na chmurze i chcemy, aby wyniki wyszukiwania Google dotyczące czegoś związanego z naszą witryną wyświetlały wyniki wyszukiwania naszej witryny dla tego samego zapytania. Na przykład, jeśli ktoś wpisze „lunchbox” do Google, może pojawić się wynik, który mówi „Wyniki wyszukiwania Amazon dla „lunchbox””, a następnie to klikniesz i zabierze Cię do amazon, i już przeszukano „lunchbox” dla Ciebie . Co możemy zrobić, aby włączyć tę funkcję w naszej witrynie?


title: Jak w dużym projekcie oprogramowania o statycznym typie z niedynamicznymi ręcznymi instrukcjami sql można zweryfikować całą składnię sql?

text: Jedną z rzeczy, z którymi często się borykam, jest potrzeba wdrożenia aplikacji do testowania interakcji z bazą danych. Częściej niż chciałbym, mam błąd składni lub literówkę w mojej instrukcji sql, która wyzwala błąd w czasie wykonywania, gdy instrukcja jest wywoływana. W niektórych z tych projektów występuje bardzo duża liczba zapytań sql (>100), co sprawia, że sprawdzanie każdego z nich jest bardzo czasochłonne. Ponadto etapy wdrażania i uruchamiania mogą być tak czasochłonne, że spowalniają mnie podczas sprawdzania zmodyfikowanego przeze mnie sql. W większości przypadków po sprawdzeniu nieznanej bazy kodu lub takiej, której nie dotykałem od jakiegoś czasu, przyjmuje się, że cały sql działa poprawnie. Jakie są standardowe praktyki dotyczące weryfikowania interakcji z bazą danych w aplikacjach w sposób nieręczny/bardziej automatyczny?


title: API - Jak obsługiwać funkcjonalność opartą na zakresie?

text: > TLDR; > > Gdzie i ewentualnie jak powinienem zaimplementować logikę opartą na zakresie > w przykładzie kodu? Mam ASP.NET Web Api. Interfejs API używa OData (oprócz REST) dla punktów końcowych danych i uwierzytelniania OAuth 2,0. Teraz chcę dodać funkcjonalność do obsługi tokena dostępu w kilku różnych zakresach. Niektóre z zakresów to: * Użytkownik * Organizacja * Klient Zestaw wyników zwracany przez interfejs API powinien opierać się na tym zakresie. To samo dotyczy sytuacji, gdy ktoś chce dodać, zaktualizować lub usunąć podmiot. **Teraz weźmy na przykład następujący punkt końcowy:** `http://myapi/Employees` Ktoś z tokenem w zakresie _Organizacja_ wykonuje GET i powinien otrzymać tylko pracowników należących do organizacji zdefiniowanej w tokenie. Użytkownik w zakresie _Klient_ powinien uzyskać pracowników dla wszystkich organizacji w ramach klienta zdefiniowanego w Token. Ta funkcja nie jest jednak dostępna dla kogoś z Tokenem w zakresie użytkownika. To samo dotyczy POST. Ktoś z zakresu organizacji powinien mieć możliwość dodawania nowego pracownika tylko do swojej własnej organizacji. Funkcjonalność dla różnych zakresów zwykle będzie się tylko nieznacznie różnić. W przypadku pozyskania pracowników różnica jest tylko gdzie na organizację lub inaczej na klienta. W przypadku poczty należy sprawdzić, czy np. organizacja jest częścią klienta, która jest powiązana z tokenem klienta. **Obecna implementacja:** Obecnie mamy podstawowy kontroler ApiController, który jest typowany generycznie. Kontroler podstawowy wywołuje Query lub CommandHandler z typem jednostki, a wszystkie szczegóły implementacji znajdują się w tych procedurach obsługi. _ApiController_ public abstract class ApiController<TEntity> : EntitySetController<TEntity, Guid> gdzie TEntity : class, IApiEntity { protected readonly IQueryProcessor QueryProcessor; chroniony tylko do odczytu ICommandProcessor CommandProcessor; protected ApiController(IQueryProcessor queryProcessor, ICommandProcessor commandProcessor) { this.QueryProcessor = queryProcessor; this.CommandProcessor = commandProcessor; } [HttpGet] przesłonięcie publiczne IQueryable<TEntity> Get() { polecenie var = new GetEntityCommand<TEntity>(); zwróć this.QueryProcessor.Process(polecenie); } } _EmployeeController_ public class EmployeeController : ApiController<Employee> { } _GetEmployeeHandler_ public class GetEmployeeCommandHandler : IQueryHandler<GetEntityCommand<Employee>, IQueryEntable<Men//EmployeeHandler_polecenie: jak zdobyć kolekcję pracowników. // Ta kolekcja zawiera wszystkich pracowników } } _PostEmployeeHandler_ public class PostEmployeeCommandHandler : ICommandHandler<PostEntityCommand<Employee>, Employee> { public Employee Handle(PostEntityCommand<Employee> komenda do bazy danych) { // } } **Pytanie** Gdzie i ewentualnie jak zaimplementować logikę opartą na zakresie? Wiem, że musi być sprytny sposób na zrobienie tego i dobre miejsce do zaimplementowania tej logiki opartej na zakresie, po prostu tego nie widzę (jeszcze).


title: Czy powinienem zawsze zaczynać od UML jako dobrej praktyki podczas projektowania klas?

text: Jestem w trakcie tworzenia aplikacji Bundle for PHP opartej na Symfony 2. Chcę, aby pakiet był przejrzysty i dobrze zaprojektowany, więc ciągle przenoszę i refaktoryzuję kod, zmieniam nazwy metod, zmieniam kolejność klas, przenoszę je do innych folderów, dodaję trochę fabryki i adaptery, serwery proxy i postępuj zgodnie z innymi koncepcjami projektowymi oop. Zastanawiam się, czy najpierw powinienem zaprojektować diagram UML, a potem zacząć pracę z IDE. Jaka jest najlepsza praktyka projektowania dobrej architektury? Kiedy zaczynam rysować wcześniej diagramy klas UML, to po kodowaniu, nawet z pustymi metodami i testami najpierw, przestaję podążać za diagramem, który narysowałem wcześniej, ponieważ stwierdziłem, że nie pasuje do tego, czego potrzebuję. Czy możesz podzielić się dobrymi praktykami projektowania architektury dla bibliotek? Nie mówię o modelu (jeśli tak to mógłbym śledzić DDD).


title: Jak osiągnąć biegłość w języku i jego idiomach?

text: Jestem świeżo upieczonym absolwentem i jest kilka (w zasadzie trzy) języków, między którymi się przełączam w zależności od wymagań. Odkryłem, że zawsze muszę sprawdzać składnię za każdym razem, gdy koduję. Wiem, że nie jestem sam, ponieważ Ryan Dahl, autor node.js, nie był pewien składni JavaScriptu podczas demonstracji. To trochę przeżycie. Z drugiej strony firmy rekrutujące (przynajmniej na FB, bo tak mi powiedzieli na nadchodzącą rozmowę kwalifikacyjną) oczekują, że najpierw _szybko znajdziesz najbardziej efektywny_ algorytm w swojej głowie, a potem zakodujesz go bez błędów. Nie wiem, ile twórczego myślenia można zrobić pod presją, ale na to pytanie zajmuję się drugą częścią. Tak więc moje pytanie: > W jaki sposób można, zanim biegle nauczy się "od środka działania", idiomów i ogólnie, uzyskać biegłość w języku? Jeśli rada dotyczy konkretnego języka, najbardziej kocham Pythona, więc jak zostać _Pythonistą_? Chcę móc kodować bez konieczności sprawdzania składni, znać i używać idiomów wszędzie tam, gdzie są trafne, stosować się do standardowych praktyk itp. ## Update Ci, którzy sugerują praktykę, praktyka tylko utrwala. Praktyka wzmacnia to, co już wiesz. Może to działać w przypadku składni, ale masz inne problemy, takie jak działanie wewnętrzne, idiomy, przypadki niezgodne z oczekiwaniami itp.


title: Czy powinniśmy dokumentować spotkania stand-up?

text: Inny zespół w mojej firmie zaczyna dokumentować swoje spotkania stand-upowe, ale uważam, że to strata czasu. O ile wiem, spotkania stand-up służą do komunikacji, a nie raportowania statusu (proszę, popraw mnie, jeśli się mylę) Więc, czy powinniśmy dokumentować spotkania stand-up?


title: Uwierzytelnianie użytkownika. Wyszukiwanie bazy danych a wywołanie RPC

text: Jeśli mamy więcej niż jedną usługę korzystającą z tej samej bazy danych - czy można przenieść uwierzytelnianie użytkowników na oddzielny serwer i używać wywołań RPC zamiast tradycyjnego wyszukiwania bazy danych?


title: Co oznacza „4” w LCOM4?

text: Wiem, że metody w klasie powinny mieć wysoką spójność, co z grubsza przekłada się na to, że wszystkie metody używają wszystkich zmiennych instancji bezpośrednio lub pośrednio. Wiem, że metryka _LCOM4_ (Brak spójności) jest przydatna do ilościowego określenia, jak bardzo spójne są metody w klasie. Klasa z wartością LCOM4 równą 1 będzie uważana za całkiem dobrą, podczas gdy klasa z wartością LCOM4 równą, powiedzmy, 10 jest uważana za słabo zaprojektowaną, co prawdopodobnie oznacza, że lepiej jest rozłożyć oryginalną klasę na 10 oddzielnych klas. Wszystko w porządku, ale co oznacza _4_ w danych _LCOM4_?


title: Sugestia projektu języka w zapytaniu do bazy danych

text: Projektuję nowy język programowania. Projektuję składnię do realizacji zapytań. Obecnie tak to działa. **Baza danych jest dostępna za pośrednictwem obiektu encji.** w tym przykładzie mam tabelę "entity.manufacturers" i "entity.products" Aby uzyskać producenta z identyfikatorem 1: var @manufacturer = entity.manufacturers gdzie id = 1; Aby zapytać o wszystkie produkty dla @manufacturer: // Pobierz wszystkie produkty producentów var @products = entity.products under @manufacturer; // Nie trzeba określać, które linki są oba, ponieważ system już wie, jak encja jest powiązana Obecnie używam "under" jako słowa kluczowego, aby uzyskać wszystkie rekordy dla @manufacturer. Chcę, żeby to miało sens, po prostu czytając kod. Jeśli możesz podać sugestie dotyczące lepszej składni lub słów kluczowych, jak to zaimplementować, będzie to niesamowite.


title: Strategia Redis dla danych dziennika aktywności

text: Nasza aplikacja wymaga dziennika aktywności działań, które wykonał użytkownik. Na przykład: 19.03.2013 \------------- 9:37 AM Chuck Norris złomował 3 roboty. 9:15 Chuck Norris walczył z 3 robotami. Obecnie odbywa się to za pomocą gigantycznego zapytania, które zestawia całą aktywność użytkownika w danym dniu. Zapytanie jest tak powolne, że aplikacja dosłownie zabrania ci przeglądania więcej niż jednego dnia aktywności na raz. Te wyniki mogą być agresywnie buforowane w Redis. Moje pytanie brzmi: jaka jest dobra kluczowa strategia Redis do przechowywania tych działań? Muszę mieć możliwość wyszukiwania głównie na podstawie identyfikatora użytkownika i zakresu dat. Bawiłem się następującymi możliwościami, ale nic tak naprawdę nie wyskoczyło mi jako optymalne rozwiązanie. -- oczywiście pseudo-kod -- HMSET użytkownik:5345:activity data "19.03.2013" godzina "9:37 AM" akcja "Jakaś akcja" LPUSH użytkownik:5345:activity (json) LPUSH użytkownik:5345:activity :2013:03:19 (json) Wszystkie trzy mają istotne kompromisy. Załóżmy, że użytkownik nie logował się od czterech miesięcy — może rzeczywiście chcieć zobaczyć swoją aktywność sprzed czterech miesięcy na górze listy. Druga opcja daje mi to, ale są też kompromisy w tym kierunku (jak brak możliwości zapytania według daty). Masz jakieś przemyślenia na temat lepszego podejścia do tego?