title: Czy wielokrotne mieszanie hasła jest bezpieczniejsze?

text: Czytałem kilka razy, że podczas przechowywania haseł dobrą praktyką jest 'podwójne haszowanie' ciągów (np. z md5, a potem sha1, obydwa oczywiście z solami). Myślę, że pierwsze pytanie brzmi: „czy to rzeczywiście prawda?” Jeśli nie, to proszę, odrzuć resztę tego pytania :) Powodem, dla którego pytam, jest to, że na pierwszy rzut oka powiedziałbym, że to ma sens. Jednakże, kiedy o tym myślę, za każdym razem, gdy hasz jest odświeżony (być może z czymś do niego dodanym), wszystko, co widzę, to zmniejszenie górnej granicy ostatecznej „wyjątkowości”… ta granica jest związana z początkowe wejście. Ujmę to w inny sposób: mamy x liczbę ciągów, które po zahaszowaniu są redukowane do y możliwych ciągów. To znaczy, że w pierwszym zestawie są kolizje. Przechodząc teraz z drugiego zestawu do trzeciego, czy nie jest możliwe, aby zaszło to samo (tj. kolizje w zbiorze wszystkich możliwych łańcuchów 'y', które skutkują tym samym haszem w trzecim zbiorze)? W mojej głowie wszystko, co widzę, to „lejek” dla każdego wywołania funkcji mieszającej, „wprowadzanie” nieskończonego zbioru możliwości do skończonego zbioru i tak dalej, ale oczywiście każde wywołanie działa na skończonym zbiorze przed nim, co daje nam zestaw nie większy niż wejście. Może przykład wyjaśni moje wędrówki? Weź 'hash_function_a', który da 'a' i 'b' skrót '1', a 'c' i 'd' da skrót '2'. Używając tej funkcji do przechowywania haseł, nawet jeśli hasło to „a”, mógłbym użyć hasła „b”. Weź 'hash_function_b', który da '1' i '2' hash '3'. Gdybym miał użyć _it_ jako 'dodatkowy hash' po 'hash_function_a', to nawet jeśli hasło to 'a' mógłbym użyć 'b', 'c' lub 'd'. Co więcej, rozumiem, że należy używać soli, ale tak naprawdę nie zmienia to faktu, że za każdym razem mapujemy wejścia „x” na wyjścia „mniej niż x”. Nie sądzę. Czy ktoś może mi wyjaśnić, czego mi tutaj brakuje? Dziękuję! EDIT: za co warto, sam tego nie robię, używam bcrypt. I tak naprawdę nie przejmuję się tym, czy jest to przydatne do „zużycia cykli” dla „hakera”. Naprawdę zastanawiam się, czy proces ten zmniejsza „bezpieczeństwo” z punktu widzenia kolizji skrótów.


title: Co jest wyjątkowego w JDBC, co czyni go niepodobnym do JavaScript?

text: Cytując z Architektury Selenium > Naturalną implementacją byłoby zapewnienie połączenia z bazą danych do > bazowego magazynu danych, przy użyciu czegoś takiego jak JDBC. Ostatecznie zdecydowaliśmy się na API, które ściśle modeluje podstawową implementację JavaScript, ponieważ coś, co modeluje typowe API dostępu do bazy danych, nie jest > sympatyzujące z implementacją JavaScript. Użyłem zarówno Java + JDBC, jak i JavaScript. I wiem, że JDBC używa modelu (połączenia, zapytania, rozłączenia), ale nie mogłem zrozumieć, co jest wyjątkowego w JDBC, co czyni go niepodobnym do JavaScript?


title: Wzorce implementacji JavaScript dla witryn MVC po stronie serwera

text: Szukam informacji na temat typowych wzorców inicjowania i wykonywania strony JavaScript po stronie w "tradycyjnej" architekturze witryny MVC po stronie serwera. Kilka miesięcy temu mój zespół programistów rozpoczął, ale zrezygnował, gruntowną przebudowę głównej aplikacji internetowej naszej firmy, w tym całkowite przeprojektowanie front-endu. W trakcie toczyła się debata na temat architektury Javascript w obecnej wersji strony i tego, czy pasuje ona do jasnego, nowoczesnego wzorca projektowego. Teraz wróciłem do procesu remontowania front-endu tej i kilku innych witryn MVC (Ruby on Rails i MVC.net) w celu zaimplementowania responsywnego frameworka (Bootstrap), a w trakcie tego procesu ponownie będę musiał przejrzeć, a następnie przerobić i aktualizować dużo JavaScriptu. Te aplikacje internetowe NIE są jednostronicowymi aplikacjami JavaScript (w rzeczywistości usuwamy wiele Ajax) lub są zaprojektowane tak, aby wymagały wzorca JavaScript MVC; te aplikacje są w zasadzie broszurami, katalogami i witrynami administracyjnymi, które są zgodne ze wzorcem MVC po stronie serwera. Zdecydowana większość wymaganego JavaScript to behawioralne, gotowe wtyczki (JQuery i Bootstrap itp.), które działają na określonych węzłach DOM. _Zamierzam przedstawić bardzo krótkie (tak krótkie, jak tylko mogę) omówienie obecnej architektury tylko w celu zilustrowania zakresu i rodzaju paradygmatu, o którym mówię. Mam nadzieję, że pomoże ci to zrozumieć naturę wzorców, których szukam, ale nie szukam komentarza na temat szczegółów tego kodu._ To, co zrobiłem w przeszłości, jest stosunkowo proste i łatwe do utrzymać, ale, jak wspomniano powyżej, niektórzy inni programiści nie lubią obecnej architektury. Obecnie, gdy dokument jest gotowy, wykonuję wszystko, co globalne JavaScript musi wystąpić na każdej stronie, a następnie wywołuję funkcję init specyficzną dla strony, aby zainicjować funkcjonalność specyficzną dla węzła, pobierając metodę init z obiektu JS. Przy każdym załadowaniu strony dzieje się coś takiego: $(document).ready(function(){ $('header').menuAction();App.pages.executePage('home','show'); // dynamiczne z obiektu żądania frameworka }); Główny skrypt aplikacji App wygląda tak: App = { użytecznyGlobalVar: 0, pages: { executePage: function(action, controller) { // jeśli istnieje, App.pages[action][controller].init() }, home: { show : { init: function() { $('#tabs').tabs(); //et. al }, normalizeName: function() { // specyficzna dla domu funkcja narzędziowa, // nie wymagająca pełnego komponentu/klasy/modułu } }, edit: ... }, user_profile: ... } } Dowolny wspólne cechy i funkcje wymagające modularyzacji lub komponowania są wykonywane zgodnie z potrzebami podczas prototypowania. W przypadku powszechnej implementacji wtyczek często rozszerzam JQuery, dzięki czemu mogę łatwo zainicjować wtyczkę z tymi samymi opcjami w całej witrynie. Na przykład $('[data-tabs]').myTabs() z tym kodem w pliku javascript narzędzia: (function($) { $.fn.myTabs = function() { this.tabs( { //. ..wspólne opcje }); }; }) Bardzo mile widziane będą odnośniki do artykułów, książek lub innych dyskusji. Ponownie szukam wzorca implementacji obejmującego całą witrynę, a NIE struktury JS MVC lub ogólnych instrukcji dotyczących tworzenia klas lub komponentów JS. Dzięki za pomoc!


title: Jak przekazać wymagania dotyczące życia?

text: Zwykle używam std::unique_ptr do przekazywania własności i przekazywania surowych wskaźników jako parametrów, gdy nie jest sugerowane żadne prawo własności. Jednak prawie nigdy nie uważam, że nullptr jest akceptowany jako argument, więc byłoby miło użyć referencji, aby tego uniknąć, ale nie jestem pewien, czy większość ludzi spodziewałaby się, że obiekt, do którego odwołuje się parametr, musi istnieć przez okres istnienia struct A bez patrzenia na kod źródłowy. struct A { A(B& b) : bPtr(&b) {;} void method() { // użyj bPtr } B* bPtr; }; Pytania są następujące: 1) Czy jest tutaj jedyna opcja, aby trzymać się wskaźników i zawsze sprawdzać, czy nie ma nullptr? 3) Czy fakt, że A potrzebuje bPtr, aby był ważny, oznacza, że powinien on mieć shared_ptr? Jeśli tak, to czuję, że używałbym wspólnych wskaźników praktycznie wszędzie. 2) Czy istnieją konwencje, które mogą pomóc przekazać użytkownikom wymagania dotyczące czasu życia parametrów poza komentarzami i dokumentacją?


title: Jak opisywać zmiany podpisu metody?

text: Tworzę mini framework i chcę dokonać zmian w istniejących metodach. Wiem, że aby odrzucić metodę, mogę użyć adnotacji `@deprecated`. Jednak jakiej adnotacji powinienem użyć, aby poinformować użytkowników, że zamierzam zmienić ilość parametrów, które otrzyma metoda, a może zwrócony wynik? Chciałbym wiedzieć, jakie adnotacje mają być używane w PHP.


title: Czy powinienem kontynuować praktykę kodowania-samouka, czy nauczyć się zawodowo kodować?

text: Ostatnio zajmuję się pracą zawodową, spotykam się z innymi programistami i nawiązuję przyjaźnie w branży. Jedyną rzeczą jest to, że jestem w 100% samoukiem. To spowodowało, że mój styl bardzo odbiega od stylu tych, którzy są odpowiednio wytrenowani. Inna jest technika i organizacja mojego kodu. To mieszanka kilku rzeczy, które robię. Zwykle łączę ze sobą kilka paradygmatów programowania. Podobnie jak funkcjonalne i OO. Skłaniam się bardziej ku stronie funkcjonalnej niż OO, ale widzę zastosowanie OO, gdy coś miałoby większy sens jako byt abstrakcyjny. Jak obiekt gry. Dalej też idę prostą drogą, kiedy coś robię. W przeciwieństwie do tego wydaje się, że czasami kod, który widzę od profesjonalnych programistów, jest skomplikowany ze względu na to! Używam wielu zamknięć. I wreszcie, nie jestem najlepszym komentatorem. Łatwiej jest mi po prostu przeczytać mój kod niż przeczytać komentarz. W większości przypadków po prostu czytam kod, nawet jeśli są komentarze. Poza tym powiedziano mi, że ze względu na prostotę pisania kodu bardzo łatwo jest go przeczytać. Słyszę, jak profesjonalnie wyszkoleni programiści wciąż mówią o takich rzeczach jak testy jednostkowe. Coś, czego nigdy wcześniej nie używałem, więc nie mam nawet najmniejszego pojęcia, czym one są i jak działają. Mnóstwo podkreśleń "_", które nie są w moim guście. Większość technik, których używam, pochodzi prosto ode mnie lub z kilku przeczytanych książek. Nie wiem nic o MVC, ale dużo o tym słyszałem z takimi rzeczami jak backbone.js. Myślę, że to sposób na zorganizowanie aplikacji. Po prostu dezorientuje mnie to, ponieważ do tej pory stworzyłem własne struktury organizacyjne. To trochę bolesne. Nie mogę w ogóle korzystać z aplikacji szablonowych, kiedy uczę się czegoś nowego, np. z Ubuntu Quickly. Mam problem ze zrozumieniem kodu, o którym mogę powiedzieć, że pochodzi od kogoś przeszkolonego. Kompletne programowanie OO naprawdę pozostawia niesmak w moich ustach, ale wydaje się, że to jest to, czego wszyscy inni ściśle używają. To sprawiło, że nie byłem tak pewny wyglądu mojego kodu, czy zastanawiałem się, czy wywołam iskry przy dołączaniu do firmy, czy może przyczynię się do projektów open source. Właściwie to raczej boję się, że ludzie w końcu będą sprawdzać mój kod. **Czy to coś normalnego, przez co przechodzi każdy programista, czy naprawdę powinienem zmienić swoje techniki?**


title: jak mam poradzić sobie z błędem serwera podczas wylogowania z ajax?

text: Muszę napisać procedurę obsługi błędu serwera podczas wylogowania użytkownika. Jaka jest powszechna praktyka? ajax.post({ url: '/auth/logout' }).done(function (odpowiedź) { switch (response.statusCode) { case 200: { //aktualizacja interfejsu użytkownika związanego z informacjami o użytkowniku } case 500: { //co powinno } } }) Uwaga: Funkcja ajax jest reimplementacją funkcji $.ajax() z wyjątkiem tego, że zawsze wywołuje gotowe wywołanie zwrotne (obiekt obietnicy niestandardowej jest zawsze rozwiązywany i nigdy nie jest odrzucany) **UPDATE:** Na serwerze I zniszcz sesję i usuń plik cookie automatycznego logowania, jeśli jest obecny. Czy rozsądnym podejściem (w przypadku wystąpienia błędu serwera) jest usuwanie plików cookie związanych z nazwą sesji i automatycznym logowaniem na kliencie za pomocą javascript (zakładając, że znam ich nazwy)?


title: Projekt zarządzania zapasami Problem z przeliczeniem jednostek miary

text: Obecnie pracujemy nad modułem inwentaryzacji. Mamy moduły zapotrzebowania, zamówienia, przyjęcia towaru itp. Oczywiście istnieje potrzeba przeliczenia jednostek miary lub jednostek miary. Użytkownik składa żądanie zakupu w oparciu o **UOM sprzedaży**, czyli wskaźnik, w którym chce sprzedawać. System składa zamówienie w zakresie **UOM zakupu** , w metryce złoży zamówienie u dostawcy. Jednak mamy dylemat konwersji UOM, chcemy uniknąć ułamków podczas konwersji. > Np. Jeśli jeden JM zakupu = 7 JM sprzedaży, konwersja będzie wynosić 1/7 , to > oczywiście stworzy ilości ułamkowe dla obu przypadków tak długo, jak nie ma marnotrawstwa)?


title: Jak mogę być agentem zmian wśród starych programistów?

text: Zajmuję się tworzeniem oprogramowania od ponad 12 lat. Utrzymuję wysokie standardy podczas projektowania kodu od normalizacji bazy danych, poprzez OOP, po naukę i implementację wzorca modelu widoku modelu. W swojej karierze odkryłem, że właściwy projekt zawsze wygrywa i pozwala na rozszerzanie, a przez to elastyczność aplikacji — to proste równanie. Podobnie byłem bardzo produktywny przed rozpoczęciem mojej obecnej pracy około trzy lata temu. Na przykład pierwszy rok po ukończeniu studiów przeprojektowałem aplikację do rejestrowania połączeń, stworzyłem aplikację do zamawiania produktów, która używała SOAP, w tym instalację aplikacji, i pracowałem nad wieloma nowymi funkcjami w głównej aplikacji tej firmy. Nie miałem żadnych przeszkód per se. Jednak na obecnym stanowisku pracuję od trzech lat i nie mam gotowej aplikacji, aby się na nią wykazać. Przyczyny powolnego procesu rozwoju są następujące: 1. brakuje nam personelu 2. nasza baza danych jest źle zaprojektowana i została zaktualizowana ze względu na ograniczenia czasowe oraz 3. brak procesu zarządzania projektami. Podczas rozmowy kwalifikacyjnej na to stanowisko powiedziano mi, że cenią sobie właściwy projekt i chcą wdrożyć proces zarządzania projektami, ale okazało się, że tak naprawdę nie chcą żadnego scenariusza. Próbowałem być narzędziem zmiany i zalecam ścieżkę, a mój przełożony zgadza się, ale nie zatwierdza zmiany. Co ja robię? Czy jedyną zmianą, jaką mogę zrobić, jest zmiana pracy? Jak zostać agentem zmian? Rozmawiałem z kierownikiem wyższego szczebla i otrzymuję tę samą odpowiedź: rozumiem i widzę problem, ale tam się rozwiązuje. Co teraz?


title: Czy ograniczanie zaangażowania w Scrumie prowadzi do samozadowolenia?

text: W mojej organizacji zespoły Scrumowe prawie nigdy nie kończą wszystkich swoich historii w 100%. Zasugerowałem, abyśmy zobowiązali się do tworzenia mniejszej liczby historii w każdym sprincie, ale kierownik ds. badań i rozwoju mówi, że jeśli to zrobimy, ludzie nadal nie ukończą pracy, ale zrobią jej mniej, co spowolni rozwój. Mówi, że tutaj działa Syndrom Studenta. Jakie jest twoje zdanie na ten temat?


title: Jak powinien nazywać się główny obszar treści?

text: Pracuję nad systemem CMS, który będzie używany przez innych i próbuję dowiedzieć się, jak powinna nazywać się główna treść strony. Pierwotnie miałem to nazwać „treścią” – ale być może „treść” lub „strona” byłyby lepsze. <html> <body> .... print $treść; .... </body> </html> To nie jest tylko pytanie o nazwy klas/identyfikatorów znaczników. Chodzi również o to, co ta nazwa oznacza dla ludzi, kiedy po raz pierwszy ją słyszą. Chcę, aby ludzie wiedzieli, że ____ to główny obszar strony.


title: Dlaczego powinniśmy używać zewnętrznych plików właściwości dla aplikacji?

text: Obecnie pracuję nad projektem kolejowym i mam wymóg, w którym chcę mieć możliwość mapowania początkowych liter nazwy kraju na jego kod ISD. np.: IND => 91, USA => 1, itd. Szersze pytanie to (niezależnie od tego, na jakim frameworku pracujesz), jaka powinna być najlepsza praktyka do przechowywania tych rzeczy. Czy powinieneś używać pliku właściwości (w tym przypadku yaml)? LUB Czy powinieneś po prostu utworzyć tabelę w bazie danych i odczytać ją stamtąd? LUB Czy powinieneś mieć strukturę podobną do hash_map w kodzie ruby (lub w dowolnym innym języku)?


title: Starsze PHP vs nowsza wersja PHP

text: Moja firma buduje stronę internetową z bazą danych. Programista wykorzystał PHP 5.0. Mój dostawca usług (współdzielony) w międzyczasie zaktualizował do PHP 5.3.0. Poprawki są w toku i wydają się nie mieć końca... Czy mam przejść na VPS i zainstalować starsze PHP, czy też powinniśmy przebudować je z nowszym PHP? Podczas pracy zdalnej z programistami jaki jest protokół dostarczania całego kodu? Proszę, jaki jest standard branżowy? Potrzebuję niezależnego do przeglądu ich pracy. Jak należy do tego podejść?


title: Najlepszy model rozwoju dla początkujących twórców gier

text: Mała grupa znajomych (w tym ja) postanowiła stworzyć prostą grę 2D. Wszyscy jesteśmy nowicjuszami w tworzeniu oprogramowania, więc chciałem zapytać, który model tworzenia oprogramowania najlepiej sprawdziłby się w takiej grupie. Z listy na Wikipedii modele Wodospad i Spirala wydają się być dwiema najlepszymi opcjami. Naszym planem jest użycie C# z XNA do rozwoju.


title: Jak gniazda działają w połączeniach bezprzewodowych?

text: Pracowałem tylko nad aplikacjami po stronie klienta (w szczególności mobilnych) przy użyciu Androida, gdzie cała sieć jest obsługiwana w warstwie HTTP przy użyciu komponentów dostarczonych przez framework, takich jak HttpUrlConnection. Ale systemy przesyłania wiadomości typu push, takie jak Websockets/XMPP itp., Wszystkie utrzymują trwałe połączenie z serwerem. Nawet GCM Google, który jest wypiekany na urządzeniach obsługiwanych przez Google Play, utrzymuje trwałe połączenie z serwerami. Moje pytanie brzmi, jak to działa bez rozładowywania baterii? Jeśli wykonujemy ciągłe żądania HTTP sekwencyjnie, zużycie baterii jest znaczne. Jak utrzymywane są te trwałe połączenia bez napotkania tego samego problemu?


title: Czy istnieje księga kanoniczna na temat C++/CLI?

text: Wiem dość dużo o C++, ale bardzo mało o .NET. Chciałbym poszerzyć swoje horyzonty. Czy istnieje książka, która jest de facto standardem opisującym najlepsze praktyki, metodologie projektowania i inne przydatne informacje na temat C++/CLI (najlepiej z ogólnymi informacjami o .NET)? Co w tej książce czyni ją wyjątkową?


title: Gdzie w sferze zasad projektowania leży „izolowanie złożoności”?

text: Byłem po prostu ciekawy, myślę, że większość ludzi jest tego świadoma jako technika: masz jakieś okropne dane, które po prostu trzeba przeanalizować i nie możesz nic zrobić, aby uprościć algorytm, aby to zrobić, więc najlepsze, co możesz zrobić, to wyizolować złożoność tego algorytmu w jednym miejscu, zamiast rozrzucania części algorytmu. Następnie po wyizolowaniu go, zacementowaniu granic jakimś interfejsem lub kontraktem, aby zapewnić, że złożoność nie wycieknie. Skąd to dążenie do izolowania złożoności w bibliotece zasad projektowania? Nie sądzę, że jest to słowo w słowo jedna z formalnie udokumentowanych zasad projektowania, chociaż domyślam się, że jest jedna lub dwie, które bardzo ściśle się z nią pokrywają.


title: Co jest nie tak z Erlangiem?

text: (jeśli już!) Wczoraj wieczorem znowu poderwałem Erlanga, ponieważ natknąłem się na problem w Projekcie Euler, który według mnie byłby idealnym rozwiązaniem. Po mniej więcej krótkim czasie kodowania otrzymałem rozwiązanie, które było niezwykle proste i eleganckie (jak na coś, co stworzyłem) – główna funkcja to tylko kilka linijek. Moje pytanie brzmi: co powstrzymuje ludzi przed większą adopcją Erlanga? * Czego Twoim zdaniem brakuje obecnym programistom, aby zwiększyć adopcję (biblioteki, funkcje językowe, IDE/zestawy narzędzi)? * Dla osób, które próbowały, ale zostały odrzucone przez język – jakie aspekty były trudne do zrozumienia lub pominięte, albo czy znalazłeś język funkcjonalny, który lepiej pasowałby do Twoich zadań?


title: Jaka lista funkcji/elementów bazy danych jest potrzebna programiście do zrozumienia?

text: Jakie cechy/elementy bazy danych są niezbędne programiście do zrozumienia, aby tworzyć nietrywialne aplikacje? Kiedyś zostałem poproszony podczas rozmowy kwalifikacyjnej (przez administratora danych) o ocenę mojego zrozumienia pojęć dotyczących baz danych – pomyślałem, że byłoby interesujące uzyskać opinie. Poszukuję umiejętności podstawowych i zaawansowanych, a także wszelkich opinii na temat tego, gdzie deweloperzy są zazwyczaj najsłabsi (jaki brak umiejętności lub wiedzy sprawia najwięcej problemów). Czy lepiej jest, gdy programiści muszą wiedzieć i przekazywać bardziej zaawansowaną pracę administratorowi DBA – gdzie istnieje ta „linia na piasku”?


title: Jak mogę się sprawdzić, gdy jako jedyny pracuję nad projektem?

text: Jestem pomiędzy pracą w mojej dziedzinie (niezwiązaną z tworzeniem oprogramowania), a ostatnio dostałem tymczasową umowę poboczną polegającą na pisaniu kilku aplikacji dla firmy. Jestem jedyną osobą pracującą nad tymi konkretnymi aplikacjami. Czy są sposoby, w jakie powinienem się sprawdzać, aby upewnić się, że moje aplikacje działają poprawnie? Testuję swój kod, staram się myśleć o przypadkach brzegowych, generuję przykładowe dane, używam kontroli źródła itp., ale ponieważ jestem _jedyną_ osobą pracującą nad tymi aplikacjami, obawiam się, że przegapię błędy, które łatwo można znaleźć w środowisko zespołowe. Kiedy skończę aplikację, kiedy jestem z niej zadowolony lub kiedy upłynie mój termin, firma planuje wykorzystać ją w produkcji. Jakakolwiek rada? Nie używam frazesu, ale na razie po prostu pracuję „najlepiej, jak potrafię” i mam nadzieję, że to wystarczy. Nawiasem mówiąc, podlegam zarówno ścisłej umowie NDA, jak i przepisom dotyczącym materiałów niejawnych, więc nie rozmawiam o aplikacjach z przyjaciółmi, którzy faktycznie pracowali przy tworzeniu oprogramowania. (Jeśli nie jest to oczywiste, nie jestem programistą z zawodu, a nawet moje doświadczenie z innymi aspektami informatyki/informatyki jest ograniczone i ogranicza się w większości do zabawy).


title: Mapy Google - Geofence trasy

text: Zastanawiam się nad wdrożeniem aplikacji opartej na PHP, gdzie masz określoną trasę, na przykład z Londynu do Edynburga. Wzdłuż tej trasy chcę obliczyć powiedzmy promień 10 mil lub wielokąt wokół całej trasy/kierunków jazdy, sprawdź, czy określone punkty/lat-lon znajdują się w tym promieniu. Jeśli tak - Dodaj je do listy punktów trasy, ponownie oblicz trasę i ponownie wygeneruj wskazówki dojazdu. Wiem, że istnieje wiele różnych API dla Map Google, ale zasadniczo szukam porady na temat tego, które API powinienem przejrzeć. Uważam, że wyrażenie, którego szukam, to „Geofencing”, a do tego widzę, że interfejs API Google Tracks ma metody, które to wykorzystują (https://developers.google.com/maps/documentation/tracks/geofences) – Ale Wydaje mi się, że nie wiem, jak to mi pomoże, ani jak będę w stanie to wykorzystać. Czy można przeprowadzić wyszukiwanie w alternatywny sposób? Na przykład tworzenie wskazówek dojazdu za pomocą 1 wywołania API, przechowywanie wszystkich punktów trasy tej trasy w bazie danych MySQL, a następnie używanie czegoś na wzór http://stackoverflow.com/questions/1078386/see-if-lat-long -wchodzi-w-wielokąt-używa-mysql? sprawdzić, czy każdy punkt znajduje się na trasie wielokąta/geofence?


title: Czy umowa EULA może ograniczać zakres zastosowań aplikacji?

text: Zdaję sobie sprawę, że może to być tutaj nie na temat - ale nie mogłem znaleźć lepszego miejsca w rodzinie stackexchange. I to pytanie po prostu dręczyło mnie od lat. Zastanawiam się, czy eula może określić, do czego używasz aplikacji? IE: jeśli piszę w edytorze tekstu, czy mogę powiedzieć „nie da się nim pisać powieści fantasy”. Zastanawiam się nad tym, ponieważ wiele aplikacji zawiera klauzule typu „nie możesz użyć XY, aby zrobić coś nielegalnego”. I rzeczywiście zastanawiasz się, czy to ma jakiś pożytek? To tak, jakby powiedzieć, że kupując samochód, po przejechaniu na czerwonym świetle lub przekroczeniu prędkości traci się prawo do jego prowadzenia. Uważam, że to „nie jest sprawą projektanta samochodów”.


title: Czy powinienem poświęcić czas na upiększanie testów jednostkowych?

text: Firma, w której pracowałem, zanim przeprowadziliśmy zautomatyzowane testy jednostkowe, aby przetestować naszą pracę. Jednak standardy kodowania i architektura nie były zbyt ważne dla testów. Oczywiście trzeba było poprawnie wciąć kod i umieścić nawiasy klamrowe tam, gdzie powinno się je umieścić, ale nikt nie chciałby przeszukiwać kodu testowego. Wydawało mi się to rozsądne, ponieważ testy były zwykle często zmieniane, a pomysł polegał na tym, aby szybko napisać test, a następnie zacząć poważnie pisać kod. Nowa firma właśnie przyzwyczaiła się do testowania jednostkowego naszej pracy, ale oczekuje, że spędzisz czas upewniając się, że kod testowy wygląda tak ładnie i dobrze przemyślany, jak kod, który testuje. Osobiście uważam, że to strata czasu, ponieważ testy są wewnętrzne i chociaż kod testowy powinien być schludny, nie musi być tak doskonale zaprojektowany, jak kod, który wychodzi do klienta. Czy mylę się w mojej wierze? Co należy zrobić tutaj, koledzy programiści? Częstotliwość, z jaką nasi programiści muszą modyfikować/rozszerzać/ponownie wykorzystywać istniejące testy jednostkowe jest różna, jedne częściej, inne rzadziej. Używamy Pythona Django i większość architektury testów jest wbudowana, a większość testów to tylko proste funkcje. Bardzo mniej potrzebna konfiguracja/rozkładanie.


title: Dlaczego wiązanie nie jest cechą natywną w większości języków?

text: IMHO powiązanie zmiennej z inną zmienną lub wyrażeniem jest bardzo powszechnym scenariuszem w matematyce. W rzeczywistości na początku wielu uczniów myśli, że operator przypisania (=) jest rodzajem wiązania. Jednak w większości języków wiązanie nie jest obsługiwane jako funkcja natywna. W niektórych językach, takich jak C#, wiązanie jest obsługiwane w niektórych przypadkach przy spełnieniu pewnych warunków. Ale IMHO zaimplementowanie tego jako natywnej funkcji było tak proste, jak zmiana następującego kodu: int a,b,sum; suma := a + b; a = 10; b = 20; a++; do tego- int a,b,sum; a = 10; suma = a + b; b = 20; suma = a + b; a++; suma = a + b; Oznacza to umieszczenie instrukcji wiążącej jako przypisania po każdej instrukcji zmieniającej wartości dowolnej zmiennej zawartej w wyrażeniu po prawej stronie. Następnie wystarczy przyciąć nadmiarowe instrukcje (lub optymalizacja w asemblerze po kompilacji). Dlaczego więc nie jest obsługiwany natywnie w większości języków. Szczególnie w rodzinie języków C? Aktualizacja: Z różnych opinii myślę, że powinienem dokładniej zdefiniować to proponowane „wiązanie”- * Jest to wiązanie w jedną stronę. Tylko suma jest związana z a+b, a nie odwrotnie. * Zakres powiązania jest lokalny. * Po ustanowieniu wiązania nie można go zmienić. Oznacza to, że gdy suma jest powiązana z a+b, suma zawsze będzie równa a+b. Mam nadzieję, że pomysł jest teraz jaśniejszy. Aktualizacja 2: Po prostu chciałem mieć tę funkcję P#. Mam nadzieję, że będzie tam w przyszłości.


title: Programista „Program wymiany zagranicznej” w zespołach

text: Tam, gdzie pracuję, mamy obecnie trzy zespoły pracujące nad jednym produktem. Odbyliśmy kilka rozmów i ustaliliśmy, że może być wiele korzyści z przeprowadzenia programu „wymiany”, w którym członek jednego zespołu będzie pracował przez pewien czas z członkami innego zespołu (min.: 1 dzień, maks. : 1 tydzień). Biorąc pod uwagę, że już parujemy programy (prawie) 100% czasu, „zamieniony” programista nie będzie całkowicie zagubiony i nie będzie dużego spadku wydajności. Cele programu to: * Dostęp do nowych narzędzi/bibliotek * Poznanie współpracowników * Zwiększenie wszechstronności wszystkich programistów między zespołami Wszyscy są bardzo podekscytowani pomysłem, ale mamy problem z organizacją logistyki takich program. Czy ktoś ustanowił coś takiego, a jeśli tak, co pomogło ci to zorganizować? _Edytuj_ Specjalnie poszukuje przykładów: * Jak często wymieniasz się * Wskazówki dotyczące śledzenia wymian/planowania * Jeśli wykonałeś taki program, jak on działał dla Ciebie? Czy chciałbyś więcej „procesu” czy zachować to ad hoc?


title: Czy możemy stworzyć aplikację GPL zawierającą płatną reklamę?

text: Zastanawialiśmy się nad wykorzystaniem komponentów GPL do stworzenia aplikacji na GPL i swobodnego jej rozdawania. Następnie chcemy wykorzystać to jako lidera strat. W tej bezpłatnej aplikacji, w której dostępny jest nawet kod źródłowy, planujemy umieścić reklamę jakiegoś płatnego oprogramowania. Płatne oprogramowanie byłoby dla funkcjonalności, która jest zupełnie inna niż darmowa aplikacja. Na przykład, darmowe oprogramowanie byłoby jak, powiedzmy, aplikacja książeczka czekowa, ale płatne byłoby narzędziem do usuwania wirusów, które ludzie wypróbowują, a następnie mogą zapłacić, i jest binarnym oprogramowaniem o zamkniętym kodzie źródłowym. Czy GPL zezwala na zbudowanie aplikacji zawierającej płatną reklamę?


title: Kompilatory i repliki online - nie jedna wielka luka w zabezpieczeniach?

text: W sieci jest mnóstwo kompilatorów i usług REPL. Na przykład: Fay ide. Uważam, że wdrożenie podobnej technologii byłoby bardzo interesujące. Ale wydaje się, że jest to poważna luka w zabezpieczeniach. Czy mylę się sądząc, że ujawnienie kompilatora byłoby ryzykowne? Tłumacz wydaje się jeszcze gorszy. **aktualizacja:** mogę być nieco bardziej szczegółowy. Miła usługa, o której myślę (eksperyment myślowy na tym etapie), byłaby zbliżona do powyższego przypadku Fay. Pobierasz dane od użytkownika, przetwarzasz je i zwracasz, potencjalnie jako uruchamialny javascript do tego samego lub innych użytkowników. Spójrzmy w szczególności na ten przykład. Najbardziej oczywistym problemem bezpieczeństwa, jaki widzę w tym przypadku, ponieważ nie oceniam strony serwera kodu, byłaby sytuacja użytkowników, ponieważ uruchamialiby kod stworzony przez „nieznanego” autora. Istotnym zabezpieczeniem w tym zakresie powinien być fakt, że mogą oni odczytać kod przed jego uruchomieniem. Chociaż zastanawiam się też czy i kiedy tłumaczenie kodu stanowi zagrożenie dla serwera? O jakich wektorach exploitów można by pomyśleć w tym kontekście? **Podsumowanie:** 1. Poza tym, czego można oczekiwać od dowolnej konfiguracji serwera internetowego i poza najbardziej oczywistymi problemami (a może także niektórymi z tych oczywistych), w jaki sposób jeden użytkownik może narazić na szwank inny użytkownik? -. W jaki sposób można wzmocnić aplikację serwera, aby nie została naruszona? 2. Jakie ważne pytania zaniedbałem? ;) 3. Chciałbym spróbować kilku eksperymentów i jako gospodarz mam na myśli prawie wolną mowę. Mogę sobie wyobrazić, że takie użycie może być zabronione przez ich warunki użytkowania? A może mogę im zaufać, że dostatecznie sprawdzą moje konto w piaskownicy. Jakie powinny być moje „minimalne” zabezpieczenia, aby wypróbować rzeczy i jakie zabezpieczenia byłyby możliwe w tak ograniczonym środowisku hostingowym? **update2:** Uważam, że kompilacja do JavaScript w celu oceny po stronie klienta lub ocena ograniczonego edsls obejmie większość/wszystkie przypadki użycia, o których myślę. Rozumiem, że oznacza to, że naprawdę nie narażam strony serwera na większe ryzyko niż _zazwyczaj_. I nie widzę, w jaki sposób użytkownik jest narażony na większe ryzyko niż przejście do losowego linku na jsFiddle.


title: Jak wybrać odpowiednią konferencję poświęconą oprogramowaniu/technologii?

text: Od jakiegoś czasu programuję i myślałem, że naprawdę powinienem pojechać na konferencję. Myślę, że będę mógł dużo wynieść z możliwości nawiązywania kontaktów, ale chciałbym też zobaczyć nowe pomysły/technologie i inne rzeczy, które mogą napędzać pomysły do mojej pracy. Ponieważ konferencje kosztują dużo, naprawdę chcę mieć pewność, że znajdę taką, która może zapewnić wartość dla mnie osobiście i dla mojego pracodawcy. Wiem, że pojawiły się pytania dotyczące identyfikacji witryn z listami konferencji, nawet tych, które identyfikują dobre konferencje. Ale sedno mojego pytania sprowadza się do tego, co sprawia, że dana konferencja jest „dobra”? Jak byś wziął listę wszystkich dostępnych konferencji i przefiltrował ją do tych, które pasowałyby do Ciebie osobiście? Jakie czynniki bierzesz pod uwagę w sobie i swojej sytuacji osobistej i jak to wpływa na to, jakich funkcji szukasz na konferencji? Również w drugą stronę, jeśli natknąłeś się na konferencję, która może być interesująca, czego szukasz, aby wiedzieć, czy będzie dobrze pasować? I odwrotnie, na jakie czerwone flagi zwracasz uwagę, aby upewnić się, że nie weźmiesz udziału w nieodpowiedniej konferencji?


Zadano mi ciekawe pytanie: Czy baza danych powinna zawierać wszystkie dane? Lub ciężkie pliki binarne powinny być przechowywane w systemie plików? Przykład ciężkich plików binarnych: filmy lub ciężkie pliki pdf (+200 MB) W starej aplikacji internetowej aspx (1.1) próbowałem otworzyć plik pdf 200 MB przechowywany jako obiekt blob w bazie danych Oracle 11g i po prostu zabrakło mu pamięci . Jednak ta sama aplikacja internetowa asp.net nie miała problemu z otwarciem tego samego pliku pdf przechowywanego w systemie plików serwera. Możliwe, że być może istnieje jakiś właściwy sposób na otwieranie ciężkich pól blobów za pomocą asp.net. Ze względu na integralność mówię, że wszystkie dane powinny być przechowywane w bazie danych, ale opisany przeze mnie przypadek pokazał mi, że może tak nie jest. Czytałem kiedyś, że jeśli Twoja aplikacja internetowa trafia do chmury, to bardzo trudno byłoby zachować referencje plików przechowywanych w systemie plików (ścieżki plików typu: ../MyFolder001/MyFile.mpg), ponieważ nie wiesz, gdzie te pliki będą rozpowszechniane. Czy ciężkie pliki binarne nie powinny być przechowywane w bazie danych?


title: Polityka i praktyka w zakresie utrzymania kodu

text: Właśnie skończyłem studia i pracuję w tej firmie od około 8 miesięcy, podczas gdy otrzymałem tytuł programisty, większość czasu poświęciłem na naprawianie i debugowanie kodów innych osób. Zawsze się zastanawiam, dlaczego oryginalny programista nie jest odpowiedzialny za naprawę swojego kodu. Rozumiem, że jeśli pierwotny programista nie jest już obecny, to inni programiści muszą przejąć pracę, ale co, jeśli programista nadal pracuje jako pracownik firmy? Można argumentować, że jest to korzystne dla nowych programistów, ponieważ widzą w tym okazję do nauki, z czym się zgadzam, ale co, jeśli złożoność problemu/problemu kodu jest bardzo wysoka? W moim przypadku większość kodów, które przypisali mi do naprawy, to nietrywialne problemy i zawsze kończy się to zadawaniem oryginalnych pytań programistów dotyczących kodu. Dlaczego programiści, którzy go stworzyli, nie mogą naprawić istniejącego problemu, jeśli rozumieją go o wiele lepiej, ponieważ go zakodowali? A problem, o którym mówię, nie jest jakimś trywialnym problemem, który można rozwiązać w dzień lub dwa, ale problemem, który wymaga głębokiego zrozumienia kodu w celu znalezienia rozwiązania. Jakie jest to uzasadnienie i czy jest to powszechne w branży oprogramowania?


title: Dlaczego kierownicy projektów stoją ponad nawet liderami zespołów?

text: Wraz z rozpoczęciem pracy w większych firmach do struktury organizacyjnej zaczęli wkradać się kierownicy projektów. Trudno mi zrozumieć, dlaczego ci ludzie są wyżej w rankingu niż techniczni liderzy. To, co mnie naprawdę denerwuje, to fakt, że PM mają bardzo małą wiedzę techniczną. Analityk, lider techniczny, zwykle rozkłada cały projekt na mniejsze jednostki pracy. Nawet planowanie tych elementów musi być wykonane przez kogoś, kto naprawdę rozumie zależności. Więc możesz sobie wyobrazić moje zmieszanie, dlaczego ci PM, którzy są mniej sprawni technicznie, zajmują wyższe pozycje na wykresach organizacyjnych. Idę tutaj na rozciągnięciu, ale czuję, że PM, który jest nad kierownikiem technicznym, jest jak księgowy nad dyrektorem operacyjnym, ponieważ ten pierwszy zajmuje się księgowością. Dlaczego więc PM są wyżej w rankingu niż prowadzą szkolenia?


title: Jaki jest minimalny kod/operacje w osobnym wątku?

text: Rozumiem, że wątki są potrzebne, aby uzyskać maksymalną wydajność z dzisiejszych procesorów wielordzeniowych, ale rozpoczęcie wątku jest dość kosztowne, więc nie można umieścić wszystkich obliczeń, które można wykonać równolegle we własnym wątku. Na przykład odpowiedź = nowy wątek(plus(1,2)) + nowy wątek(plus(3,4)) będzie działał znacznie wolniej niż prosta jednowątkowa odpowiedź = 1+2+3+4, ale jeśli plus był naprawdę skomplikowane obliczenia wariant gwintowany może być szybszy. Teraz do pytań * Czy istnieje jakaś konwencja lub standardy dotyczące minimalnej długości kodu, operacji lub czasu wykonania, które można obronić we własnym wątku? * Czy w ogóle muszę się tym martwić, czy też kompilator/procesor jest tak sprytny, że wykonuje całą pracę za mnie? Powodem, dla którego zadaję to pytanie, jest to, że widziałem implementację quicksort, która uruchamiała nowy wątek dla każdego wywołania rekurencyjnego kończącego się (n²) wątkami, a wiele z tych wątków właśnie zwróciło jakąś wartość.


title: Jak wykonać zewnętrzne testy API (czarna skrzynka)

text: Załóżmy, że korzystasz z interfejsów API od dostawcy, jak upewnić się, że ich interfejs API działa zgodnie z oczekiwaniami? Moim głównym zmartwieniem jest to, że czasami dostawca wprowadzał zmiany w swoim kodzie i łamał API, chcemy mieć jakieś automatyczne oprogramowanie do ciągłego ich testowania. Jak sobie z tym poradzić?


title: Jak określić sposób pobierania opłat za obsługę witryn programu SharePoint i opracowywanie programu SharePoint?

text: Niedawno utworzyłem witrynę w programie SharePoint i muszę skonfigurować umowę na konserwację/pomoc techniczną dla witryny. Oprócz strony istnieje kilka niestandardowych modułów, które zostały opracowane, które monitorujemy. Jakie względy należy wziąć pod uwagę przy ustalaniu wysokości opłat za obsługę witryny programu SharePoint i wszelkich niestandardowych aplikacji opracowanych dla tej witryny?


title: Jakie są twoje techniki przechowywania numpy struktur w polach bazy danych django i jak je serializować dla http?

text: Chcę opublikować mały projekt internetowy, który ma zawierać niektóre wyniki moich badań, aby zaprezentować je społeczności naukowej. Wszystkie moje analizy, które przeprowadziłem do tej pory, zostały już napisane w pythonie, dlatego rozważałem użycie frameworka webowego django do dostarczenia wyników. Dzieje się tak, ponieważ planuję pokazanie wizualizacji na aktualnych danych, aby móc przeprowadzić analizę na nowych danych przez crona bezpośrednio w django. do tej pory mam na myśli dwa pytania, jak mam zacząć tworzyć: 1. Jak mogę łatwo przechowywać `numpy arrays` w sqlite, aby zachować strukturę tablicy i jaki typ pola bazy danych django najlepiej pasuje? 2. Jaki jest najlepszy sposób na `json.dump` `numpy 2d-array`, aby móc je obsłużyć w d3.js? Jak widać, chodzi o połączenie numpy + django + d3.js. Moim pierwszym hackowaniem było przechowywanie numpy wyników jako ciągów, ale myślę, że to nie jest najlepsze, ponieważ muszę je ponownie przeanalizować po pobraniu ich z bazy danych. Jeśli chodzi o drugie pytanie, znalazłem już `simplejson.dumps` ale niestety tak naprawdę nie działa on na `numpy arrays` i dlatego czasami musiałem coś takiego zhakować return HttpResponse('{"array1" : '+simplejson.dumps( list(array1))+'}'), których tak naprawdę nie lubię. Podsumowując: **Jakie są twoje techniki przechowywania `numpy` struktur w polach bazy danych django i jak je serializować dla `http`?**


title: Jaki jest cel korzystania z przestrzeni roboczej w Aptanie?

text: Prawie zawsze tworzę strony internetowe za pomocą prostego edytora, takiego jak Geany lub Notepad++. Ostatnio zaczynam od Aptany i jestem trochę zdezorientowany co do celu/korzyści przestrzeni roboczej, chodzi mi o to, że tego nie rozumiem. Szczerze mówiąc jest to coś, co naprawdę chcę zrozumieć, dlaczego jest to przydatne?, jak z tego korzystać?


title: Jak identyfikować przypadki „krawędziowe” w algorytmach?

text: Zasadniczo, w jaki sposób możesz dowiedzieć się, który może być twoim najgorszym lub najlepszym przypadkiem i jakimikolwiek innymi „krawędziowymi” przypadkami, które możesz mieć ZANIM je posiadasz, a więc jak przygotować dla nich swój kod?


title: Potrzebne porady - CMS vs. framework

text: Zamierzam zrobić stronę internetową dla klienta, który chce mieć możliwość zmiany strony co tydzień (głównie zmieniając zdjęcia i informacje tekstowe). To jest dla restauracji, więc klient chce zmieniać menu i zdjęcia prawie co tydzień. Zawsze tworzyłem strony i aplikacje webowe od podstaw lub od podstaw i nigdy nie pracowałem z CMS, ale czy taka sytuacja uzasadnia użycie CMS? Jakie są inne opcje? Edycja: Bardzo chciałbym, aby CMS był opcją ostateczności, ale jeśli jest to najprawdopodobniej najlepsza opcja, skorzystam z niej.


title: Optymalizacja jako branża: czy o to chodzi?

text: Moja firma ma wysoce zoptymalizowaną aplikację naukową, która stała się tak duża i skomplikowana, że tworzenie nowych wersji zajmuje dosłownie t = nieskończoność. (Np. mam e-mail, który zapowiada wydanie pod koniec 2007 r. czegoś, co nie zostało jeszcze wydane.) Prośby o nowe funkcje od zespołu naukowego do zespołu programistów prowadzą do wielu kłótni. To skłoniło mnie do myślenia.. Aplikacja powinna być napisana przejrzyście, z dobrym designem, czytelnymi nazwami i mnóstwem automatycznych testów. Do tej aplikacji dodawane są nowe funkcje. Uruchom i zalicz testy. Następnie ta aplikacja jest rozgałęziona w celu optymalizacji, czyli wersja produkcyjna lub produkcyjna. Ponownie uruchom i zalicz testy. Czy czegoś mi brakuje? Czy to jest „rzecz”? Wydaje mi się, że moje pytanie brzmi, czy gdybym uderzył wiceprezesa ds. rozwoju produktu, czy miałbym rację (co do pomysłu, a nie bicia)?


title: Dlaczego bazy danych nie są zintegrowane jako funkcja językowa?

text: Czy istnieją języki programowania, które mają wbudowaną bazę danych jako pierwszorzędną funkcję językową zamiast łączenia się z zewnętrzną bazą danych SQL (lub inną)? Jakie byłyby wady i zalety takiej funkcji? Jak taka funkcja miałaby wyglądać i jak zmieniłaby sposób, w jaki programujemy?


title: Jak programować obiektowo za pomocą frameworka DI?

text: > **Możliwy duplikat:** > Czy „Odwrócenie kontroli” promuje „Model domeny anemicznej”? Mam wrażenie, że projekty wykorzystujące framework DI, taki jak Spring lub Guice, mają tendencję do utraty orientacji obiektowej i degeneracji do projektu czysto proceduralnego: 1. DI nie tylko centralizuje kwestię, której implementacji obiektu użyć, ale także zarządza cyklem życia tych obiektów. Wiele **wzorców projektowych** OO opiera się jednak na zdolności logiki biznesowej do łączenia obiektów. Nie wiedziałbym na przykład, jak zaimplementować wzorzec strategii wiosną, ponieważ decyzja, której z konkretnych strategii użyć, jest statycznie określana przez konfigurację aplikacji, a nie fragment kodu. To samo dotyczy dekoratora, kompozytu, obserwatora, ... 2. Powyższy powód prowadzi do projektu, w którym funkcjonalność i dane są rozdzielone. Ponieważ nie chcesz, aby kontener DI decydował o utworzeniu danych, dzielisz dowolny kod z danych, aby tylko ta część była zarządzana przez kontener DI. Jest to sprzeczne z ideą OO, gdzie **kod i dane powinny znajdować się razem** w jednej jednostce. To przerywa **enkapsulację danych**, ponieważ wszystkie pola „ziarna” danych są ujawniane przez publiczne pobierające i ustawiające. 3. Nie możesz już używać **polimorfizmu**, ponieważ kod nie jest już powiązany z jego danymi, a "funkcje wirtualne" nie działają. Prowadzi to do wystąpienia kaskad, o których wszyscy wiemy, że nie powinniśmy ich używać. Tracimy również wszystkie te projekty, które opierają się na polimorfizmie. 4. Kontener DI wstrzyknie managed beans tylko do obiektów, które również są przez niego zarządzane. Nie możesz więc **mieszać zarządzanych ziaren fasoli z normalnymi obiektami**, ponieważ w łańcuchu referencyjnym zarządzanych ziaren nie może być żadnych „niezarządzanych przerw”. Więc kiedy zacząłeś z DI, musisz umieścić cały inny kod pod kontrolą kontenera DI i nie możesz już używać normalnych obiektów. Przypuszczam, że to jest powód, dla którego oddzielenie kodu i danych odbywa się tak rygorystycznie w projektach DI. Widzę, że są powody, dla których warto korzystać z DI, ale czy naprawdę warto tak bardzo rezygnować? Ludzi nie obchodzi OO? Poza tym **artykułem** nie mogę znaleźć żadnych dyskusji na ten temat. A może to tylko ja nie rozumiem, jak to zrobić właściwie? Jakieś pomysły, jak rozwiązać powyższe cztery punkty? **Załącznik 1: Objaśnienie wzorca strategii** Odnoszę się do przykładu tutaj. Załóżmy, że istnieje wersja DI, w której wszystkie implementacje „Strategii” i „Kontekstu” są wstrzykiwane do „StrategyExample”. Wtedy `StrategyExample` nie decyduje już, którą `Strategię` należy wstrzyknąć do `Context`, ale konfiguracja już zadecydowała, którą implementację należy wstrzyknąć do `Context`. Więc tak, DI mocno stosuje wzorzec strategii. Ale zawsze robi to statycznie.


title: Co jest lepsze w prototypowaniu: język z typowaniem statycznym czy z typowaniem dynamicznym?

text: Czy podczas opracowywania projektu nowego systemu lepiej zacząć od języka z typowaniem statycznym (jak Haskell) czy od języka z typowaniem dynamicznym (jak Ruby)? Argumenty, które przychodzą mi do głowy: * Używając języka statycznego, możesz szybko stworzyć specyfikację i zakres tego, co program będzie robił. Dzięki dynamicznemu językowi możesz szybko utworzyć działające demo, które zostanie zaprezentowane klientowi do sprawdzenia. * Dzięki dynamicznemu językowi często unikasz konieczności zmiany struktury danych i kodu refaktoryzacji podczas zmiany projektu. W języku statycznym możesz zdefiniować typy przed implementacją, zachowując bardzo mały kod. * W przypadku języka statycznego musisz zawczasu określić, co zrobi Twój program. Dzięki dynamicznemu językowi możesz zacząć pisać kod i pozwolić, aby projekt rozwijał się organicznie. Jak mówi Paul Graham w Hackers and Painters: > Język programowania służy do myślenia o programach, a nie do wyrażania > programów, o których już pomyślałeś. * W przypadku języka statycznego kompilator może pomóc zidentyfikować wiele rodzajów błędów. Dzięki dynamicznemu językowi możesz szybciej rozpocząć testowanie i znajdowanie błędów. Typowanie statyczne i dynamiczne ma zarówno zalety, jak i wady, jeśli chodzi o prototypowanie. Jednak oba wydają mi się równie słuszne. Na podstawie Twoich doświadczeń, który z nich jest ostatecznie lepszy? * * * ## Uwagi ### Prototypowanie w języku naturalnym Trzeci rodzaj języka do rozważenia: język naturalny. Zamiast prototypować w kodzie, można prototypować na piśmie. Klient może wtedy zapoznać się z Twoją dokumentacją i na początku ocenić projekt, ale nie może bawić się działającą demonstracją. Dobrze napisana dokumentacja może ułatwić implementację w dowolnym języku. Zastrzeżenia: * Dokumentacja może być żmudna w czytaniu i trudna do strawienia bez możliwości jej przeglądania. Spekuluję, że klient wolałby raczej poeksperymentować z czymś, co działa, niż czytać ścianę tekstu (i obrazów). * Prototypowanie aplikacji w języku angielskim, a nie w definicjach typu, jest bardziej szczegółowe i mniej konkretne. ### Typy Haskella są opisowe Zauważ, że typy są szczególnie opisowe w Haskell, bardziej niż w wielu statycznych językach, takich jak C++ i Java. Załóżmy na przykład, że mam funkcję z tą sygnaturą w Haskell: foo :: forall a. [a] -> _Funkcja, która dla dowolnego typu `a` pobiera listę elementów typu `a` i zwraca wartość typu `a`._ Nawet nie znając nazwy funkcji, wiem na pewno że: * Nie wykonuje operacji wejścia/wyjścia ani nie modyfikuje żadnych wartości (no cóż, chyba że nieprawidłowo używa unsafePerformIO), ponieważ Haskell jest czysto funkcjonalny. * Nie może traktować elementów jako, powiedzmy, liczb całkowitych, ponieważ musi obsługiwać _dowolny_ typ. * Musi _ma__ korzystać z listy wejściowej (lub zgłosić wyjątek lub wejść w nieskończoną pętlę). W przeciwnym razie, skąd otrzymałaby wartość typu „a”? Dlatego jedyną rzeczą, jaką ta funkcja może zrobić (poza niepowodzeniem), jest wyodrębnienie elementu z listy wejściowej i zwrócenie go. Chociaż nadal nie wiem, którego elementu użyje, `[a] -> a` mówi mi o wszystkim innym.


title: Testowanie jednostkowe projektów Open Source, które wymagają kluczy do wywołań API

text: Jaka jest zalecana metoda konfigurowania testów kodu, który wymaga klucza prywatnego do wykonywania wywołań do zewnętrznych usług sieci Web? Pełne na pozorowanych obiektach, czy istnieje sposób na dystrybucję testów jednostkowych typu open source za pomocą zgrabnej metody, aby dodać własny klucz prywatny testera w czasie testu? Używam Pythona, ale wszelkie ogólne najlepsze praktyki


title: Długa lista parametrów kontra długa lista zmiennych stanu

text: W książce o C++ autor mówi, że nie potrzebujemy już funkcji z długą listą parametrów, ponieważ większość parametrów można przerobić na zmienne stanu w klasie. Z drugiej strony, książka o programowaniu funkcjonalnym mówi, że zmienne stanu są złe, ponieważ powodują skutki uboczne, które powodują podatny na błędy i trudny do zrównoleglenia kod. Zaczynam się zastanawiać. Czy kod powinien unikać w jak największym stopniu polegania na zmiennych stanu, przenosząc swoją zmienną stanu do listy parametrów funkcji?


title: Dlaczego wolisz symbol wieloznaczny od dyskryminatora typu w Java API (Re: Effective Java)

text: W sekcji generycznej Efektywnej Javy Blocha (która z łatwością jest dostępna dla wszystkich w rozdziale „darmowym”: http://java.sun.com/docs/books/ Effective/generics.pdf) mówi: > Jeśli parametr typu pojawia się tylko raz w deklaracji metody, zastąp ją > symbolem wieloznacznym. (Patrz strony 31-33 tego pliku pdf) Podpis, o którym mowa, to: public static void swap(List<?> list, int i, int j) vs public static void swap(List<E> list, int i, int j ) Następnie przechodzi do wykonywania pracy statycznej prywatnej funkcji „pomocnika” z rzeczywistym parametrem typu. Sygnatura funkcji pomocniczej jest _DOKŁADNIE_ taka jak w drugiej opcji. Dlaczego preferowany jest symbol wieloznaczny, skoro i tak NIE trzeba go używać, aby wykonać pracę? Rozumiem, że w tym przypadku, ponieważ modyfikuje Listę i nie możesz dodać do kolekcji za pomocą nieograniczonego symbolu wieloznacznego, więc po co go w ogóle używać?


title: Asp.Net MVC Uwierzytelnianie Windows - podatności http vs https?

text: Zajmuję się tworzeniem witryny intranetowej ASP.Net MVC 3, która będzie używać wyłącznie zintegrowanego uwierzytelniania systemu Windows. Jakie są luki w zabezpieczeniach ruchu uwierzytelniania typu wyzwanie/odpowiedź przesyłanego w postaci zwykłego tekstu? Czy ktoś sniffujący ruch sieciowy będzie w stanie przejąć uwierzytelnioną sesję?


title: Czy ścieżka uaktualnienia z Win32 do .NET do WinRT jest możliwa?

text: Wspieram aplikację VB6. Obecnie jest zastępowany, moduł po module, .NET (wraz z wieloma nowymi funkcjami). GUI znajduje się w WPF, ale prawie zerowe jest sprzężenie z logiką biznesową, więc nie jest to tak ważne. Mam nadzieję, że migracja zakończy się w połowie 2012 roku. Czytam niektóre wiadomości z konferencji MS build i wygląda na to, że WinRT z Metro będzie wybranym API i GUI do przyszłego rozwoju, zwłaszcza jeśli chcesz, aby Twoja aplikacja działała na urządzeniach mobilnych (co zrobimy, z pewnością). Na jaki rodzaj progu prędkości patrzymy, gdy (ostatecznie) migrujemy z .NET do WinRT i Metro? Wygląda na to, że C# i Xaml będą dostępne, ale WinRT nie jest .NET. Czy API jest kompatybilne (wystarczy zmienić opcję w menu kompilacji VS)? Jeśli tak nie jest, czy będzie dostępne jednokierunkowe narzędzie do konwersji? Czy będzie możliwe łatwe utrzymanie jednej aplikacji działającej pod .NET/WPF na systemach Windows XP/7 i jednocześnie budującej się do celu WinRT/Metro w czasie, gdy mamy wszystkie te systemy we własnym zakresie?


title: Lepszy sposób robienia Regex?

text: Naprawdę nie lubię wyrażeń regularnych, za każdym razem, gdy do nich wracam, wydaje mi się, że muszę się uczyć od nowa. Jest też niesamowicie trudny do utrzymania, modyfikacji i na pierwszy rzut oka do zrozumienia, co robi. Czy ktoś kiedykolwiek próbował napisać na nim kolejną warstwę, która zamienia bardziej semantyczne wyrażenia „podobne do języka SQL” w wyrażenie regularne? Wyobrażam sobie, że działa to w następujący sposób: AnotherString = "kawa powitalny sygnał dźwiękowy 15" FindString.StartsWith string dłuższy niż 5 FindString.Contains "sygnał dźwiękowy" po "cześć" FindString.EndsWidth int < 20 FindString.DoesntContain "no!!" i nie zawiera "co!" Foreach FindString pasuje do AnotherString ... Next To prawdopodobnie nie jest najlepszy przykład w historii, ale idea jest taka, że wzorzec jest zbudowany z pewnego rodzaju semantycznego, znaczącego języka, który można rozbić na tradycyjne wyrażenia regularne. Powyższe byłoby znacznie łatwiejsze dla programisty do zmodyfikowania. Wyobrażam sobie, że jest to do pewnego stopnia podobne do SQL/Linq. Dzięki temu wyrażenie regularne byłoby znacznie bardziej semantyczne i łatwiejsze w utrzymaniu. Czy próbowano tego już wcześniej i czy jest to zły/dobry pomysł? Czy to zadziała? **Edytuj** Być może jest to lepszy przykład (wiem, że adresy URL są notorycznie trudne do przeanalizowania, a to jest zbyt uproszczone): string UserInputtedURL = "http://www.google.com/page.html?ID=5" Protokoły = {"http", "https"}; Domeny = {"com", "net", "org"} Rule.CaseSensitive = false; Reguła zaczyna się od protokołów LUB zaczyna się od „www”; Reguła, po której następuje ciąg znaków, kończy się „.” Reguła, po której następuje Reguła domen if stringend lub endwidth " " end else continuewith RuleSet2 RuleSet2.startswith "/" itd... if(UserInputtedURL.Matches(Rule)){ // URL jest prawidłowy! }


title: Jak sprawdzić, czy pracodawca został zablokowany w Apple App Store?

text: Mam potencjalnego pracodawcę, który desperacko chce wyprodukować aplikację, ale z jakiegoś powodu odmawia uzyskania firmowego konta deweloperskiego za 99 USD, twierdząc, że proces aplikacji byłby zbyt trudny i żmudny. A jednak chcą, żebym założył konto jednoosobowe. Myślę, że zostały zablokowane w sklepie z aplikacjami Apple, ale jak mogę to zweryfikować? Dziękuję.


title: C++ i odpowiednie biblioteki do tworzenia aplikacji Autocad/Autodesk/CAD?

text: Widziałem wakat, w którym wymagano, aby programista rozwijał narzędzia CAD przy użyciu bibliotek C++ i OpenGl. Jestem inżynierem budownictwa i chcę brać udział w takich projektach, więc pomyślałem, że nauczę się C++ i kilku bibliotek, które mogą mi pomóc w uzyskaniu takich możliwości pracy. Znam trochę C++, ale nie znam tych bibliotek (qt, openGL). Czy ktoś może mi powiedzieć/poprowadzić, która biblioteka jest najbardziej odpowiednia i najbardziej wymagana do tworzenia takich aplikacji?


title: Jak zrobić strukturę stołu, aby produkty były dostępne zarówno w sprzedaży hurtowej, jak i detalicznej?

text: Ignorując różne szczegóły kolumn, takie jak kolory, kształty i rozmiary, mam już pomysł, jak sobie z tym poradzić, bardziej jestem zainteresowany cenami detalicznymi, cenami całkowitymi (z tabelą lub bez) i ewentualnie rabatami. Jeśli już, to chcę wiedzieć, na co też powinienem się liczyć. Czy będzie to tylko dodanie kolumny ilości, dwóch kolumn cenowych i dwóch kolumn rabatów oraz limitu ilościowego? Gdybym miał dodać tabelę cenową, zostałaby ona wstawiona jako plik json, czy byłby to zły pomysł? Proszę o wgląd w to.


title: Na co zwrócić uwagę przy wyborze architektury zorientowanej na usługi, która musi współpracować z .NET i Javą?

text: Planuję napisać aplikację, w której będzie usługa (nazwijmy ją A) nasłuchująca poszczególnych poleceń. Usługa ta następnie przekaże te polecenia do innych usług (nazwij je B i C), które są napisane odpowiednio w .NET i Javie (usługa A wybiera, która z usług B lub C ma się przekazywać w zależności od zawartości żądania do usługa A). Szukam frameworka, który pozwoli na interoperacyjność zarówno z .NET, jak i z Javą, na przykład WCF lub JAX-WS, lub napisanie niestandardowego frameworka (np. Polecenia JSON REST przez HTTP, podobne do http://code.google .com/p/selenium/wiki/JsonWireProtocol). Jakie pytania/aspekty powinienem wziąć pod uwagę przy podejmowaniu decyzji?


title: Crash Course w ASP.NET

text: Jestem programistą .NET, który szuka nowych miejsc pracy w celu zmiany tempa. Moja dotychczasowa kariera doprowadziła mnie do biegłości w posługiwaniu się C#, WPF, WinForms, MSSQL i wszelkiego rodzaju gadżetami w frameworku .NET, w tym Entities, Parallel Tasks itp. Jednak jedną rzeczą, której oczywiście brakuje, są umiejętności ASP . Prawie każda praca w mojej okolicy (Minneapolis/St.Paul) wymaga silnego, ponad 3-letniego doświadczenia z ASP.NET. Czuję się pewnie, że potrafię wyłapywać nowe technologie, zwłaszcza w świecie .NET, jednak z ASP nie wiem, od czego zacząć. Podobnie jak w przypadku większości rzeczy w .NET, prawdopodobnie istnieje twardy, stary sposób robienia rzeczy i nowy, elegancki sposób robienia rzeczy. Po prostu uruchamiając szablony w VS2008, istnieje kilka szablonów ASP, które implementują różne technologie, takie jak Entities. Nie mam pojęcia od czego zacząć. Nawiązując więc do tytułu tego postu, szukam szybkiego kursu w ASP. Biorąc pod uwagę, że jest to technologia sieciowa, mam problem z myśleniem o pobocznym projekcie jako wymówce, by nauczyć się go tak, jak bym inaczej. Czy ktoś może mi wskazać, na czym powinienem się skupić na nauce? Czy istnieje duża ilość elementów ASP, które mogę zignorować? W związku z tym, czy jest jakiś nowszy punkt wyjścia, od którego mógłbym zacząć, co dałoby mi przewagę nad zmęczonymi facetami z ASP, którzy utknęli robiąc rzeczy po staremu? :P Po prostu szukam wskazówek. Dziękuję bardzo!


title: Co to znaczy, że styl architektoniczny jest skoncentrowany na dokumencie?

text: Słyszałem, że mówiono, że REST jest „zorientowany na dokument”. Nie wiedząc, co to oznacza, zacząłem szperać i odkryłem, że termin **zorientowany na dokument** jest używany w odniesieniu do baz danych, zwłaszcza baz danych NoSQL, w przeciwieństwie do podstawowego magazynu wartości kluczy. Wydaje się zatem, że dokumentowana orientacja baz danych ma związek z ich wewnętrznymi reprezentacjami będącymi JSON lub XML; Widziałem na stronie Wikipedii, że wiele baz danych zorientowanych na dokumenty twierdzi, że obsługuje RESTful API, ale nie mając doświadczenia z żadnymi bazami danych NoSQL, a także będąc nowym w REST, nie jestem pewien, co to oznacza (sama baza danych jest bezpośrednio dostępna za pośrednictwem usługa?); i tak czy inaczej, o ile mi wiadomo, REST nie ogranicza podstawowego modelu danych aplikacji, a jedynie jej umowę serwisową. Co więc oznacza stwierdzenie, że REST jest zorientowany/zorientowany na dokument? Czy to oznacza, że REST ogranicza usługę do korzystania z formatu JSON lub XML w kontrakcie? Czy to oznacza, że REST jest bardziej przyjazny dla baz danych NoSQL niż konwencjonalne relacyjne bazy danych?


title: Kto określa najlepsze praktyki?

text: Podczas pisania kodu często szukałem odpowiedzi związanych z „**najlepszą praktyką**”. I widzę wiele pytań dotyczących najlepszych praktyk. Jednak myślałem innego dnia. Kto tak naprawdę określa, czym jest ta najlepsza praktyka? Czy to właściciele czy twórcy języka programowania. Czy jest to ogólna społeczność programistów, która pisze w tym języku i jest to po prostu konsensus intuicyjny. Czy to ten, kto wydaje się mieć najwyższy prestiż w świecie deweloperów i krzyczy najgłośniej? Czy najlepsza praktyka to naprawdę tylko kolejny termin na osobistą opinię? Mam nadzieję, że to konstruktywne pytanie. Jeśli mógłbym lepiej to sformułować, aby upewnić się, że nie zostanie zamknięty, proszę o edycję lub poinformuj mnie inaczej.


title: AND jest lepszy lub używa wewnętrznego „IF”

text: W sytuacji takiej jak ta:" if ((metadata != null) && (metadata.TypeEnum != VariantInfoMetadata.CellTypeEnum.Status)) czy zaleca się zachowanie powyższego kodu? A może lepiej zrobić zagnieżdżony " if" i dzieli warunek na dwie sekcje, gdzie "zewnętrzny if" upewnia się, że metadane nie są null, a wewnętrzne, jeśli wykonuje resztę sprawdzania.Myślę, że zagnieżdżone if zajmuje się możliwym wyjątkiem wartości null, jeśli wartość metadanych ma wartość null.


title: Używanie nazwy domeny w EULA oprogramowania zamiast mojego imienia i nazwiska w polu Licencjodawca

text: Zamierzam sprzedać oprogramowanie.Zarejestrowałem już domenę, ale nie mam zarejestrowanej firmy.Czy mogę użyć mojej witryny/nazwy domeny, np.:myproduct.com w polu licencjodawcy w umowie EULA, zamiast używać myname.Odnowię moja domena rocznie, czy jest z tym problem. Czy znasz jakieś firmy produkujące oprogramowanie, które działają w ten sposób. Jestem zdezorientowany, jeśli chodzi o punkt widzenia użytkowników, czy uznają to za nieco inne. Proszę pomóż mi.


title: Czy należy tworzyć diagramy klas przed czy po implementacji?

text: Tak, jak to widzę, jeśli stworzysz go, zanim uzyskasz przewagę: * Planowanie z wyprzedzeniem * Przegląd projektu, ale tracisz: * Czas (robiąc pracę, prawdopodobnie skończysz powtarzać podczas pisania kodu) Z drugiej strony, ja mógłbym po prostu stworzyć je wszystkie po napisaniu mojego kodu, aby zachować go jako odniesienie dla przyszłych programistów. Który z nich służy diagramom klas, a który jest korzystniejszy?


title: Modele na tabelę bazy danych?

text: Używam codeignitera i znalazłem się w podobnej sytuacji, w której powtarzałem metody Model. Tworzę model na kontroler. Ale czy tworzenie modelu na tabelę bazy danych byłoby uważane za dobrą praktykę? W ten sposób metody nie są pisane dwukrotnie. Zamiast modelu na kontroler lub kilku małych modeli, które są współdzielone. Przykład, jeśli mam metodę modelu get_user($user_id) mógłbym napisać ją na users_models.php... Jedną z wad, jaką widzę w tym przypadku, jest to, że może będę musiał wywoływać kilka modeli, a nie tylko nazwa_kontrolera_models.php . Czy ładowanie kilku modeli, w których kilka metod może nie być używanych z kontrolera, może wpłynąć na wydajność i szybkość? Jaki może być najlepszy sposób na rozwiązanie tego problemu? Uwaga: są podobne pytania, ale nie obejmują one podstawy modelu na tabelę bazy danych.


title: Czy lepiej zwrócić NULL lub puste wartości z funkcji/metod, w których nie ma wartości zwracanej?

text: Tutaj szukam rekomendacji. Zmagam się z tym, czy lepiej jest zwrócić wartość NULL lub pustą wartość z metody, gdy wartość zwracana nie jest obecna lub nie można jej określić. Jako przykłady weźmy następujące dwie metody: string ReverseString(string stringToReverse) // pobiera ciąg i odwraca go. Person FindPerson(int personID) // znajduje osobę z pasującym personID. W `ReverseString()` powiedziałbym, że zwraca pusty ciąg, ponieważ typem zwracanym jest ciąg, więc osoba wywołująca tego oczekuje. Ponadto w ten sposób osoba wywołująca nie musiałaby sprawdzać, czy zwrócono NULL. W `FindPerson()` zwrócenie wartości NULL wydaje się lepszym dopasowaniem. Niezależnie od tego, czy zostanie zwrócony NULL lub pusty obiekt Person (`new Person()`), osoba wywołująca będzie musiała sprawdzić, czy obiekt Person jest NULL lub pusty, zanim zrobi cokolwiek z nim (np. wywołanie `UpdateName( )”). Dlaczego więc po prostu nie zwrócić tutaj wartości NULL, a dzwoniący musi tylko sprawdzić NULL. Czy ktoś jeszcze się z tym zmaga? Każda pomoc lub wgląd są mile widziane.


title: Jak przechowywać kolekcje połączonych obiektów tekstowych w bazie danych?

text: Piszę program w Javie, który działa jako prezentacja pisanego dokumentu, który musi być przechowywany w bazie danych (używam MySQL, ale jestem otwarty na sugestie innych typów baz danych). Klasa Essay jest zbiorem obiektów klasy Paragraf (dokładniej `Essay extends LinkedList<Paragraph>`, która składa się głównie z `int ID` i `Treści ciągu`. Obiekt Essay jest przechowywany jako osobna tabela w DB, co jest dość proste (z kolumnami „int paragraphId” i „Blob text”), a ja wykonuję proste zapytanie, które tworzy nowy obiekt akapitu dla każdego wiersza w tabeli, gdy program jest inicjalizowany. słowa z hiperłączami prowadzą do innych obiektów eseju, które również muszą być przechowywane w bazie danych.Moje pytanie jak najlepiej je zapisać - rozważam opcje: * Utworzenie pojedynczej dodatkowej tabeli DB, w której każdy esej jest przechowywany w wierszu , gdzie akapity są przechowywane w pojedynczym obiekcie tekstowym oddzielonym ogranicznikiem, a program oddziela je w oddzielnym obiekcie Akapit podczas pobierania ich z bazy danych (jest to dość łatwe, ponieważ te połączone eseje są znacznie krótsze niż esej główny). * Stwórz pojedyncza dodatkowa tabela z dużą liczbą kolumn treści, przechowująca każdy akapit w osobnej kolumnie. Następnie, gdy dane są pobierane z bazy danych, tworzy nowy esej dla każdego wiersza i nowy akapit dla każdej kolumny w tym wierszu, aż do znalezienia wartości null. * Dynamicznie twórz osobną tabelę DB dla każdego połączonego eseju, konfigurując ją identycznie jak podstawową. Nie wydaje się to idealne, ponieważ kończyłoby się to bardzo dużą liczbą tabel, a wiele z nich miałoby tylko dwa lub trzy akapity, przez co nowa tabela wydawałaby się marnotrawstwem. * Zrób zupełnie inny układ: miej jedną tabelę akapitów, w której przechowywane są wszystkie akapity ze wszystkich esejów, i inną tabelę o nazwie Eseje, która używa typu danych `SET` do przechowywania identyfikatorów (kluczy obcych) akapitów zawartych w każdym eseju. Zmodyfikowałem tutaj mój rzeczywisty przypadek użycia, aby ułatwić wyjaśnienie. Jestem nowicjuszem w programowaniu baz danych i robię to głównie jako ćwiczenie, więc szukam ogólnych wskazówek na temat zalet / wad tych podejść, a także wszelkich dodatkowych sugestii.


title: Prowadzenie niezbyt dobrego zespołu

text: Jak byś sobie poradził, gdyby przydzielono ci zespół 5 osób z, powiedzmy, 4 niekompetentnymi programistami i poproszono Cię o kierowanie? Oczywiście nie możesz kodować dla 4 facetów (możesz, ale to nie jest dobry pomysł. Przynajmniej się wypaliłem). Czy spotkałeś się z takimi sytuacjami? Edycja: Myślę, że brzmiałem niegrzecznie, wybierając niewłaściwe słowo (niekompetentne), aby rozwiązać mój problem. Reformując pytanie, jak radzisz sobie z ludźmi, którzy nie wykonują przydzielonych zadań (z jakichkolwiek powodów [od niekompetencji do rzeczy typu „nie obchodzi mnie”])?


title: Myślenie w C++

text: > **Possible Duplicate:** > Czy jest dobra książka do grok C++? Szukałem dobrej książki, aby zrozumieć C++ (i OOP) najlepiej jak potrafię, a podczas moich poszukiwań znalazłem **Thinking in C++** (napisane przez Bruce'a Eckela) i wiele podekscytowanych opinii na jej temat . Więc moje pytanie brzmi: czy ta książka jest naprawdę dobra, czy jest coś lepszego do szczegółowego zrozumienia C++?


title: Dlaczego nie osadzić stylów/skryptów w HTML zamiast linkowania?

text: Łączymy pliki CSS i JavaScript, aby zmniejszyć liczbę żądań HTTP, co poprawia wydajność. Wynikiem jest HTML taki: <link rel="stylesheet" href="all-my-css-0fn392nf.min.css"> <!-- później... --> <script src="all-my- js-0fn392nf.min.js"></script> Jeśli mamy logikę serwera/kompilacji, która robi to wszystko za nas, dlaczego nie pójść o krok dalej i osadzić te połączone style i skrypty w kodzie HTML? <style>.all{szerokość:100%;}.my{display:none;}.css{color:white;}</style> <!-- później... --> <script>var wszystko, mój , js;</script> To o dwa żądania HTTP mniej, ale nie widziałem tej techniki w praktyce. Dlaczego nie?


title: Problem z programowaniem późno w nocy

text: Niedawno dowiedziałem się, że programowanie późno w nocy powoduje problemy ze snem, więc jakie są najlepsze godziny na programowanie „po pracy”? Może jest jakiś przedział czasowy, który należy ustawić po skończeniu programowania i pójściem spać, lub jakaś aktywność?


title: Czy logika biznesowa nie wkradnie się do widoku?

text: Przez ostatnie 3 lata rozwijałem kilka projektów aplikacji internetowych, zarówno osobistych, jak i zawodowych, i wydaje mi się, że nie mogę się domyślić, czy jest możliwe, aby przynajmniej _jakaś_ logika biznesowa nie znalazła się w warstwie widoku aplikacji. W większości przypadków pojawią się problemy typu "Jeżeli użytkownik wybrał opcję x to aplikacja musi umożliwić mu dostarczenie informacji dla y, jeśli nie to powinien podać informację z". Lub wykonaj jakąś operację AJAX, która powinna zastosować pewne zmiany do modelu, ale NIE zatwierdzaj ich, dopóki użytkownik tego nie zażąda. To jedne z najprostszych problemów, z jakimi się spotkałem i nie potrafię zrozumieć, jak można uniknąć skomplikowanej logiki w widoku. Większość książek, które czytałem, opisujących MVC, zwykle zawiera kilka bardzo trywialnych przykładów, takich jak operacje CRUD, które po prostu aktualizują dane na serwerze i wyświetlają je, ale CRUD nie ma miejsca w większości bogatych aplikacji. Czy można osiągnąć widok bez żadnej logiki biznesowej?


title: Pobieranie rozwiązań z Internetu. Zły czy dobry?

text: Szukałem w Internecie typowych pytań do wywiadu. Natknąłem się na taki, który dotyczył znajdowania wystąpień pewnych znaków w tablicy. Rozwiązanie opisane tuż pod nim było moim zdaniem bardzo eleganckie. Ale potem przyszła mi do głowy kolejna myśl, że to rozwiązanie jest o wiele lepsze niż to, co przyszło mi do głowy. Więc chociaż znam rozwiązanie (które najprawdopodobniej dostarczył ktoś z lepszym IQ), moje IQ było nadal takie samo. Oznacza to, że chociaż mogę znać odpowiedź, to nadal nie była moja. stąd jeśli to pytanie zostało zadane i zostałem zatrudniony po odpowiedzi na to pytanie, nie mógłbym odtworzyć tej samej elegancji w moich innych przedsięwzięciach w organizacji. Moje pytanie brzmi, co myślicie o takiej „pożyczonej inteligencji”? Czy to jest dobre? Czy uważasz, że znalezienie rozwiązań w Internecie sprawia, że myślisz w ten sam, bardziej elegancki sposób?


title: Czy istnieje najlepsze rozwiązanie dotyczące wypełniania listy rozwijanej w ASP.Net MVC?

text: Wchodzę do projektu, w którym nadrzędną metodą jest otwarcie strony, a następnie użycie wywołań jquery AJAX do dynamicznego wypełnienia wszystkich list rozwijanych na stronie. Dla mnie wydaje się to dodatkowym obciążeniem dla serwera i wygląda okropnie, a funkcjonalność wydaje się być ograniczona, ponieważ użytkownik może zacząć korzystać z list rozwijanych, nawet jeśli nie są one jeszcze załadowane. Wydaje mi się, że o wiele bardziej sensowne jest utworzenie listy wyboru w modelu i wypełnienie listy rozwijanej w widoku, zanim strona zostanie kiedykolwiek przesłana do przeglądarki. Czy brakuje mi czegoś w moim myśleniu tutaj? Czy istnieje dobry powód, aby początkowo dynamicznie wiązać listę rozwijaną za pośrednictwem AJAX?


title: Obsługa zdarzeń globalnych i indywidualnych obiektów

text:
Ostatnio studiowałem wiele próbek javascript, zarówno z bibliotekami, jak i bez nich, żeby wspomnieć o jQuery. Jako stary programista JavaScript wcześnie nauczyłem się korzystać z dyskretnego JavaScript, w którym można dodawać zdarzenia kliknięcia myszą do globalnego modułu obsługi za pomocą `document.onclick = mylib.document_onclick;` Następnie, tagując dowolny element niestandardowym atrybutem/właściwością/ expando, byłem w stanie poradzić sobie z wszelkiego rodzaju funkcjami w bardzo prosty sposób. // HTML
 Wyloguj
 Strona początkowa 1 Strona początkowa 2 // JS document_onclick: function (e) { e = getEvObj(e); // niestandardowa metoda pobierania obiektu zdarzenia var evSrcTag = getSrcObj(e); // niestandardowa metoda pobierania elementu źródłowego //mouseclick if (evSrcTag.getAttribute('data-mc') != undefined) { switch (evSrcTag.getAttribute('data-mc')) { case 'logout': if (! Confirm(myconfig.msg['asklogout'])) { return cancelEv(e); // własna metoda anulowania zdarzenia } break; case 'ajax': //przetwórz żądanie ajax, ponieważ dostępny jest javascript, anuluj domyślne zdarzenie (href) //case ...... } } }, Dziś widzę wiele rozwiązań, w których zdarzenie jest powiązane/dołączone bezpośrednio do konkretny element. Wydaje się, że szybko staje się długą listą modułów obsługi do dodania, wraz z powiązanymi/dodanymi poszczególnymi funkcjami i nazwami klas. // HTML utwórz link dynamicznie utwórz link dynamicznie utwórz link dynamicznie // JS $(function(){ $("#anchor1").click( function() { $("#anchor1").append('test1'); }); $("#kotwica2").click( function() { $("#kotwica2").append('test2'); }); $("#anchor3").click( function() { $("#anchor3").append('test3'); }); }); Odnosząc się do sposobu konfigurowania programów obsługi, czy jedno podejście jest lepsze od drugiego, a jeśli tak, to które z nich jest i dlaczego?


title: jak zamodelować tę relację? w ERD

text: Mam trzy podmioty : Technik Naprawa Pojazdów Pytanie jak to zamodelować w ERD? Wiedząc, że technik może naprawić wiele samochodów, a ten sam samochód może naprawić jeden i tylko jeden technik? W jaki sposób podmiot zajmujący się naprawą powinien z tym wszystkim powiązać?


title: „Nadgodziny są częścią pracy” prawda, ale złe nastawienie?

text: Mój przełożony powiedział mi, że praca w godzinach nadliczbowych to tylko część pracy i oczekuje się ode mnie pracy w godzinach nadliczbowych. Nie płacimy za nadgodziny, jak większość firm. Zdaję sobie sprawę, że większość programistów poświęca 50-60+ godzin pracy tygodniowo, ale czy takie podejście powinien przyjąć menedżer? Wygląda na to, że biorą to za pewnik. A może totalnie się mylę i to zupełnie normalne :P


title: Zamiana n-słabych punktów na m-słabe, gdzie m<n i gdzie odchylenie odległości od punktu do punktu jest zminimalizowane

text: Chcę zastosować grupowanie k-średnich do (rzadkiego) wykresu sąsiedztwa. W tym celu muszę przypisać węzły do pozycji w przestrzeni euklidesowej. W prosty sposób mogę to zrobić, mając przestrzeń o tylu wymiarach, ile jest węzłów, w których każdy składnik odpowiada innemu węzłowi. Teraz, aby grupowanie było trochę bardziej zrozumiałe, a może po prostu inne, zastanawiam się, czy istnieją sposoby na „składanie” n-wymiarowej przestrzeni punktów w łatwiejszą do zarządzania przestrzeń, może 3-ciemną, a może po prostu m-dim gdzie m < n. Robiąc to, chcę zachować relacje odległości między węzłami - więc chcę zminimalizować odchylenie między odległością w linii prostej między dowolnymi dwoma punktami przed zgięciem a po zgięciu, czyli innymi słowy, sumą wszystkich odchyleń. Więc nie mogę znaleźć żadnych konkretnych informacji na ten temat, kiedy patrzę. Może brakuje mi terminologii. Jakie są na to dobre/skuteczne metody? Algorytmy? Wydaje się, że jest to nieco archetypowy problem optymalizacji/minimizacji średniej kwadratowej. Prosty przypadek podstawowy: P1 = (1,1,1) P2 = (1,1,0) p3 = (1,0,1) newPoints = spacefold(2,[P1,P2,P3]) // przykładowe wyjście : // newPoints = [(1,1), // (1,0), // (0,1)] W tym przykładzie zostały one dogodnie umieszczone na płaszczyźnie - usunięcie składnika x daje optymalne rozwiązanie.


title: Jaki był pierwszy język programowania napisany dla komputerów?

text: Patrząc na tak wiele języków programowania, jakie mamy dzisiaj, z których każdy jest wyjątkowy na swój sposób, próbowałem dowiedzieć się, jaki jest pierwszy język programowania napisany dla komputerów. Patrząc na datę premiery popularnych języków, trochę się zbliżyłem, ale nie przyjrzałem się mniej oczywistym, językom programowania, które są albo martwe, albo bardzo mało używane w dzisiejszych czasach. Fortran to najbliższa rzecz, jaką mam, ale nie wiem, czy to prawda. W skrócie: jaki był pierwszy język programowania napisany dla komputerów? Czy są jakieś języki wywodzące się z tego języka?


title: Architektura warstwowa przy użyciu Entity Framework z różnymi bibliotekami klas

text: Nasze wymagania biznesowe wymagały stworzenia warstwowej i modułowej architektury. Dlatego zaprojektowałem architekturę tak, aby była jak najbardziej oddzielona i modułowa. Poniżej wymienię moje warstwy * Aplikacja ASP .NET MVC (UI) * Warstwa logiki biznesowej (BLL) * Warstwa dostępu do danych (DAL) Dalej używałem IOC, gdzie każdy moduł BLL definiuje swoje wymagania dotyczące dostępu do danych w zakresie interfejsów. Tak więc DAL musi teraz zaimplementować te interfejsy. Ważne jest, aby pamiętać, że * Zarówno UI, jak i DAL są zależne od LOGIKI biznesowej * LOGIKA BIZNESOWA nie jest zależna od żadnego innego rozwiązania. Używając interfejsów zrobiłem IOC, więc teraz DAL jest zależny od BLL, a nie na odwrót. * BLL to nie tylko jeden projekt, ale zestaw projektów bibliotek klas - po jednej bibliotece klas dla każdego modułu biznesowego. * DAL to projekt jednej biblioteki klas "współdzielony" przez wszystkie projekty BLL (ponieważ baza danych jest taka sama i nie ma sensu dzielenie DAL na osobne projekty). Nie będę tutaj wdawał się w szczegóły, ale powiedzmy, że zapadła decyzja o użyciu EDMX. Jednak teraz nie widzę, jak EDMX będzie pasował do tego miksu. Uważam, że nie jestem jedyną osobą, która kiedykolwiek podzieliła BLL na różne biblioteki klas, ale mam jeden projekt DAL. Ale czy EDMX lub jakikolwiek ORM może obsługiwać taką "rozproszoną" architekturę?


title: Lepsze zaplecze lub więcej praktycznych doświadczeń

text: Niedawno skończyłem samouczek dotyczący szyn Michaela Hartla. W całej książce polecał The Rails 3 Way po ukończeniu jego książki. Z własnego doświadczenia sądzisz, że lepiej byłoby przeczytać kolejną książkę lub zacząć tworzyć aplikację i samodzielnie wymyślać różne rzeczy?


title: Dlaczego nie poprzedzamy wyliczeniami, klasami abstrakcyjnymi i strukturami?

text: Społeczność C# tak wszechobecnie używa prefiksu „I” do oznaczenia interfejsu, który znają nawet najbardziej niedoświadczeni programiści. Dlaczego więc nie prefiksujemy wyliczeń, klas abstrakcyjnych ani struktur (ewentualnie odpowiednio „E”, „A” i „S”)? Na przykład, gdybyśmy oznaczyli wszystkie klasy abstrakcyjne literą „A”, dostarczyłoby to cennych informacji o tym typie, które, choć można by je wywnioskować, nie są od razu oczywiste. Proszę zauważyć, że nie opowiadam się za tą zmianą, po prostu próbuję zrozumieć, dlaczego nie robimy rzeczy w ten sposób. Ten wątek odpowiada, dlaczego używamy przedrostka "I", ale nie odpowiada, dlaczego _nie_ używamy innych przedrostków.


title: Najlepszy możliwy sposób implementacji reguł biznesowych w PHP

text: Planuję napisać aplikację e-commerce przy użyciu PHP i MySQL z mnóstwem niestandardowych reguł. Powiedzmy na przykład, że chcę mieć regułę typu " _Daj Klientowi X, 10% rabatu na Produkt Y jeśli dołączy go do Produktu Z_ " Słyszałem o silniku reguł biznesowych (w Javie i innych). Zamierzam zaimplementować elastyczną funkcjonalność reguł biznesowych **bez twardego kodowania** czegokolwiek do PHP iz dobrą, solidną architekturą z celem utrzymania i ponownego użycia z pomocą PHP OOPS. Proszę o poradę w następujących kwestiach: Czy tabela decyzyjna pasuje do mojego zamierzonego celu? Jak mogę zmienić regułę/logikę biznesową aplikacji PHP bez ponownego wdrażania/przepisywania?


title: Czy są jakieś darmowe narzędzia do pomiaru wydajności, bezpieczeństwa i innych standardów projektu internetowego?

text: Czy istnieją narzędzia typu open source do pomiaru standardu projektu aplikacji internetowej? Chcę zweryfikować mój projekt pod kątem: * możliwych wycieków bezpieczeństwa (wstrzyknięcie SQL itp.) * wydajności * stabilności (w środowisku o dużej współbieżności) i innych metryk jakości.


title: Czy „Prawo Demeter” ma zastosowanie do podpisów metod publicznych/API?

text: Biorąc pod uwagę, że zmiany w sygnaturze API/metody publicznej powinny być minimalne, aby zapobiec złamaniu tych kodów klientów, które używają tych metod, zastanawiałem się, czy prawo Demeter ma do nich mniejsze zastosowanie. Prosty przykład: class Account() { double balance; public void debit(Transakcja t) { saldo -= t.getAmount(); } } Zauważ, że metoda debetowa przekazuje obiekt Transaction, a nie tylko podwójną kwotę ('Prawo Demeter', jak rozumiem, mówi, że należy przekazać tylko wymagane informacje, w tym przypadku tylko kwotę, a nie obiekt Transaction. ...). Powodem tego jest to, że metoda w przyszłości może wymagać innych właściwości Transakcji oprócz kwoty. Z tego co rozumiem, zapobiegnie to złamaniu sygnatury metody poprzez dodanie nowego parametru w przyszłości. Czy to sprawia, że jest to rozsądny wybór? A może czegoś mi brakuje?


title: Najlepsze rozwiązanie do uzyskiwania informacji o skierowaniu w PHP

text: Obecnie przerabiam strukturę linków na stronie internetowej. W przeszłości używaliśmy określonych plików php w ostatnim kroku, aby skierować użytkownika we właściwe miejsce. Przykład: www.example.com/akcja/idź-do-niebieskiego.php lub www.example.com/akcja/krótki/idź-do-czerwonego.php www.example.com/akcja/wysoki/idź-do-czerwonego .php Przeprowadzamy teraz restrukturyzację, aby wyeliminować katalog `/short/` lub `/tall/`. Oznacza to, że teraz `go-to-blue.php` wykona dodatkowe przetwarzanie, aby upewnić się, że wysyła gościa we właściwe miejsce. Statyczna metoda z przeszłości była dość skuteczna, ponieważ cóż, jeśli wyszli z tej strony, wiedzieliśmy, że zrobiliśmy to dobrze. Teraz, odkąd przekierowujemy 301 z `action/short/go-to-red.php` do `action/go-to-red.php`, w `idź-do-red.php` ważne jest, abyśmy zrozumieli użytkownik mógł zostać przekierowany z `/short/` lub `/tall/`. Więc w tej chwili używam HTTP_REFERRER i oczywiście w moich testach działa dobrze, ale po długim czytaniu jasne jest, że nie jest to solidne rozwiązanie, więc zacząłem burzę mózgów na temat innych sposobów sprawdzenia i upewnienia się, że otrzymamy właściwe informacje o skierowaniu. Gdybyśmy mogli sprawdzić HTTP_REFERRER plus jakiś inny test, byłbym przekonany, że mamy całkiem dobry system, który odeśle odwiedzającego we właściwe miejsce. Kilka pytań/komentarzy: 1. Czy do osiągnięcia tego celu mogę użyć zmiennej sesji lub pliku cookie? 2. Jeśli tak, czy zostanie to utrzymane poprzez przekierowanie 301? Nie rozumiem, dlaczego miałoby nie być. 3. Podanie adresu URL w adresie url nie wchodzi w grę w tym przypadku.


title: Jak zaprojektowałbyś aplikację z wieloma docelowymi platformami i urządzeniami?

text: Jestem na samym początku fazy projektowania aplikacji, która będzie musiała działać na następujących platformach/urządzeniach: * Desktop: Windows, Linux i Mac * Mobile: Android, iPhone/iPad & Windows Phone 7 * Web: Silverlight Będę używać C# na Mono i chcę zmaksymalizować ponowne wykorzystanie kodu. Oprócz pulpitu (będę używał WinForms/GTK#), **moje obawy związane są z wieloma różnymi GUI, z którymi będę musiał się zmierzyć**. Jakie byłoby twoje podejście? Oczywiście widoki będą się różnić, ale co z kontrolerami, dostępem do danych, klasami narzędzi itp. Czy naprawdę można dzielić wszystko poza widokami?


title: Myśląc o przejściu z Maca na Windows, potrzebujesz trochę wskazówek

text: Chcąc przejść na Win7, ponieważ maszyny są tańsze, łatwiejsze w naprawie i jako programista stron internetowych, nie musiałbym już emulować IE. Chcę, aby przejście było jak najbardziej płynne, więc jakie byłoby najbliższe dopasowanie do mojego obecnego stosu aplikacji. MAMP TextMate Transmit Filemerge (do użytku z GIT DIFF)


title: Narzędzie krzywych kolorów dla kanału „wartość”

text: Próbuję napisać program do odczytu plików krzywych GIMP i zastosowania ich do obrazu. Udało mi się zaimplementować krzywe dla kanałów czerwonego, zielonego i niebieskiego, ale nie mogę zmusić ich do działania dla wartości pseudochannel. Dla kanałów kolorów po prostu tworzę tabelę przeglądową z krzywych i iteruję przez piksele, robiąc coś takiego: red = redlookup[red] green = greenlookup[green] blue = bluelookup[blue] Jak dotąd dobrze, dokładnie to samo wyniki w moim programie i GIMP-ie. Na powyższej stronie GIMP twierdzi się, że kanał wartości jest zdefiniowany jako „v = max (r, g, b)”, ale nie rozumiem, jak dostosować każdy kanał koloru od wyszukiwania tej wartości. Obecnie zagłębiam się w kod źródłowy GIMP, ale jest to dość zawiłe. **Podsumowując:** jeśli mam tablicę `valuelookup` reprezentującą krzywą dla pseudokanału wartości, jak mogę jej użyć do dostosowania wartości RGB dla każdego piksela na obrazie? * * * GIMP definiuje kanały w następujący sposób: **Wartość** > Krzywa reprezentuje wartość, czyli jasność pikseli jaka jest widoczna > w złożonym obrazie. **Czerwony; Zielony; Niebieski** > Krzywa przedstawia ilość koloru w każdym z trzech kanałów RGB >. Tutaj ciemność oznacza niewiele koloru. Światło oznacza dużo > koloru. Wartości mieszczą się w zakresie od 0 do 255.


title: Korzyści z platformy integracyjnej

text: Planujemy wprowadzenie platformy integracyjnej. Na początku to dodatkowa warstwa i dopłata. Ale po pewnym czasie usługa, której potrzebuje nowy system, będzie dostępna na platformie integracyjnej, oszczędzając w ten sposób wysiłek programistyczny. Pytanie brzmi, czy ktoś zna jakieś badania, które sprawdzają, jak długo trwa powyższa „chwila”? A może są jakieś badania ROI dotyczące wykorzystania platform integracyjnych?


title: Zastosowania sztucznej inteligencji w zwykłych aplikacjach biznesowych

text: To wątpliwość, którą miałem od bardzo dawna. Obecnie uczę się podstaw sztucznej inteligencji, głównie z książki Petera Norviga. Wiem już, że w Data Mining i Business Intelligence można wykorzystać kilka technik sztucznej inteligencji, ale zastanawiam się, czy nie ma bardziej „normalnych” scenariuszy, w których można zastosować sztuczną inteligencję. Czy może być scenariusz, w którym aplikację można ulepszyć za pomocą sztucznej inteligencji? Książki tak naprawdę nie zawierają więcej niż kilku wybranych przypadków biznesowych. Z góry dziękuję **EDYTUJ** Na podstawie komentarzy będę bardziej szczegółowy. Jak można ulepszyć aplikację za pomocą technik AI? I nie mam na myśli dodawania możliwości wyszukiwania (jeśli są już narzędzia do tego) lub rzeczy BI (już wiem, że jest to oparte na AI). Chcę wiedzieć, czy można wziąć zwykłą aplikację (weź aplikację do planowania wysyłek) i zastosować niektóre techniki sztucznej inteligencji, aby poprawić jej wyniki lub przedstawić zalecenia użytkownikowi.


title: Jak przenieść moje myślenie z C++ do C#

text: Jestem doświadczonym programistą C++, znam język bardzo szczegółowo i intensywnie korzystam z niektórych jego cech. Znam również zasady OOD i wzorce projektowe. Uczę się teraz C#, ale nie mogę przestać czuć, że nie mogę pozbyć się mentalności C++. Tak mocno przywiązałem się do mocnych stron C++, że nie mogę żyć bez niektórych funkcji. I nie mogę znaleźć żadnych dobrych obejść ani zamienników dla nich w C#. Jakie **dobre praktyki** , **wzorce projektowe** , **idiomy** różniące się w języku C# od perspektywy C++ możesz zaproponować? Jak uzyskać doskonały projekt C++, który nie wygląda głupio w C#? W szczególności nie mogę znaleźć dobrego C#-owego sposobu radzenia sobie z (ostatnie przykłady): * Kontrolowanie okresu istnienia zasobów, które wymagają deterministycznego czyszczenia (takich jak pliki). Łatwo jest mieć pod ręką `używanie`, ale jak używać go poprawnie, gdy własność zasobu jest przenoszona [... między wątkami]? W C++ użyłbym po prostu wspólnych wskaźników i pozwoliłby zająć się 'zbieraniem śmieci' we właściwym czasie. * Ciągłe zmaganie się z nadpisywaniem funkcji dla określonych generyków (uwielbiam takie rzeczy, jak częściowa specjalizacja szablonów w C++). Czy powinienem po prostu porzucić wszelkie próby wykonania dowolnego programowania generycznego w C#? Może generyki są celowo ograniczone i używanie ich poza określoną dziedziną problemów nie jest C#-owe? * Funkcjonalność podobna do makr. Chociaż generalnie jest to zły pomysł, w przypadku niektórych dziedzin problemów nie ma innego obejścia (np. warunkowej oceny instrukcji, jak w przypadku dzienników, które powinny trafiać tylko do wydań debugowania). Nie posiadanie ich oznacza, że muszę umieścić więcej "jeśli (warunek) {...}" boilerplate a nadal nie jest równy pod względem wywoływania efektów ubocznych.


title: Co wziąć pod uwagę przy projektowaniu aplikacji webowej, która będzie wdrażana w ramach load balancera?

text: Obecnie utrzymuję aplikację internetową Java, która początkowo została zaprojektowana do pracy tylko jako pojedyncza instancja (nie w klastrze/farmie). Teraz klient planuje zmodernizować swoją infrastrukturę, a częścią jego planu jest umieszczenie naszej aplikacji internetowej za load balancerem. Zidentyfikowałem już kilka poważnych problemów projektowych: 1. Użytkownicy mogą przesyłać pliki, a nasza aplikacja przechowuje te pliki w lokalnym systemie plików. 2. Istnieją zaplanowane zadania, które mogą powodować problemy, gdy są wykonywane jednocześnie (tj. generowanie plików). 3. Zmienne sesji są intensywnie używane w większości modułów. Potrzebuję opinii na temat proponowanych przeze mnie rozwiązań poniżej. 1. Potrafię rozwiązać punkt 1, przechowując wszystkie pliki w pamięci zewnętrznej/współdzielonej (SAN itp.) 2. Dzięki punkcie 2 mogę stworzyć mechanizm blokujący w bazie danych, aby po uruchomieniu zaplanowanych zadań aplikacje webowe najpierw sprawdź tabelę i tylko pierwszy, który zaktualizuje, uruchomi wspomniane zadanie. 3. Właściwie nadal nie jestem pewien, czy pozycja 3 może powodować problemy. Jeśli użytkownik zaloguje się do naszej aplikacji i load balancer przekieruje go na serwer 1, czy jest możliwe, że load balancer wskaże mu serwer 2 następnym razem, gdy kliknie link? Nie mam jeszcze pojęcia, jak działa load balancer na tym poziomie. Ponadto, jakie są inne rzeczy, które powinienem wziąć pod uwagę, projektując poziomo skalowalną aplikację internetową [od zera]?


title: Czy to praktyczne mieć doskonały wynik walidacji w HTML?

text: Niedawno brałem udział w gorącej dyskusji na temat tego, czy praktyczne jest posiadanie doskonałego wyniku walidacji dowolnego dokumentu HTML. Przez praktyczne mam na myśli: * Nie zajmuje śmiesznej ilości czasu w porównaniu do jego prawie idealnego odpowiednika. * Może być **dobrze wyglądać w _starszych przeglądarkach_** i **nadawać się do użytku w _bardzo starych przeglądarkach_**. * Uzasadnia wysiłek, jaki może w tym ponieść (czy wiąże się to z jakimś rodzajem nagrody za SEO/Użyteczność/Dostępność, której nie można osiągnąć w prostszy sposób przy prawie doskonałej walidacji) Tak więc w zasadzie ** doskonały wynik walidacji jest praktyczny na jakiś dokument HTML?**


title: Modułowość kontra prostota jednoklasowa

text: Od półtora roku jestem częścią organizacji, w której pracuję. Firma zasadniczo pisze kod w Perlu i ma duże ilości starszego kodu, który pierwotnie uniemożliwiał firmie posuwanie się naprzód z jakimikolwiek zmianami w kodzie. Moją pierwszą obserwacją dotyczącą istniejącego kodu był brak modułowości. W czasie, gdy tu pracowałem, z pomocą kilku (którzy odeszli z firmy), wykonałem dużo ciężkiej pracy Modularyzując wszystkie główne sekcje aplikacji. Uważam, że obecnie mamy około 70% podstawowych systemów zmodularyzowanych, spójnych i warstwowych. W tym momencie jestem oskarżany o komplikowanie projektu systemu i wszystko, co staram się robić, jest traktowane z podejrzliwością. Aby zaprojektować te systemy, zastosowałem wszystkie najlepsze dostępne lub znane mi podejścia projektowe (wzory) i metodologie (SOLID). Kiedy to pisałem, wszystko to zostało docenione, ale teraz programiści chcą wrócić do tego, co uważają za prostsze metodologie (co zasadniczo obejmuje posiadanie dużych pojedynczych klas, robienie setek rzeczy). Nadal nie wierzę, że takie podejście rzeczywiście doprowadzi do prostszego projektowania, ale nikt nie jest tak naprawdę gotowy do słuchania. Aby dać przykład, nasz kod zasadniczo ładuje kilka plików podczas swojego życia. Tradycyjnie klasa zajmowała się wieloma rzeczami, takimi jak ładowanie pliku, wielokrotne sprawdzanie, czy plik się zmienił, czy wczytano odpowiednią wersję pliku itp. Ładujemy również inny zestaw plików dla przypadków testowych, aby upewnić się, że działa poprawnie. Wszystko to odbywało się wcześniej bardzo niezorganizowaną modą. Każdy stworzył własną wersję pliku. Było wiele wersji tych plików i nie dało się nimi zarządzać. Wprowadziłem podsystem, który załaduje odpowiedni plik (wykonaj weryfikację wersji) podając nazwę i konfigurację, która powie wszystkie dostępne wersje pliku. Ostatecznie zapewniło to, że we wszystkich przypadkach testowych używane są tylko dwie lub trzy wersje plików. Zasadniczo podąża za fasadą i wzorcem fabrycznym, w którym program ładujący utworzy odpowiedni obiekt pliku, który będzie miał interfejs do ładowania, zapisywania i powinno_przeładować. W końcu został nawet użyty do załadowania treści z CouchDB, ponieważ reprezentują one tylko dokument. Jest to teraz zbyt skomplikowane dla programistów i nikt tak naprawdę nie czyta kodu ani dokumentacji, którą napisałem. Zgadzam się, że powrót do naszego starego systemu usunie jeden podsystem, ale przywróci problem z niemożliwą do zarządzania liczbą plików. W tym momencie nie jestem pewien wszystkiego, czego się nauczyłem. Uważam, że nie jestem zainteresowany sugerowaniem jakichkolwiek ulepszeń, ponieważ moje rozwiązanie będzie tylko oskarżane o zbytnie skomplikowanie. Jak myślisz, co mogę teraz zrobić?


title: Jak opracować algorytm brute-forsingu/backtrackingu?

text: Jako początkujący programista nie wiem, jak konceptualnie myśleć o brutalnym wymuszaniu. Mój umysł nie jest w stanie pojąć, jak napisać kod, który wypróbuje każdą możliwość. Mam problem, który chcę rozwiązać. Oto fragment kodu (są inne funkcje, ale nie ma powodu, aby je tutaj umieszczać, po prostu działają w tle): main(): step_segment = [] # zawiera bieżący segment STATS = [250,0,0,0,13 ,0] # zawiera 1 krok (statystyki bieżących kroków) # STATS = [step_id, Danger, Danger_limit, rnd, b_loop, enc] # Tymczasowy wybór interfejsu = Brak podczas wyboru != "0": print \ "\n1 - Uruchamianie testu porównawczego " choice = raw_input("Wybór: ") if choice == "0": print "\nDo widzenia." elif choice == "1": while (len(step_segment)) < 128: step_segment, STATS = take_step(step_segment, STATS) if STATS[5] == "B": "Nie wiem, co tu robić. Wypróbuj każdą możliwość !?" **Cel:** chcę utworzyć listę wszystkich możliwych „tras” przez segment wraz z czasem trwania. **Opis:** 1. Zrobię krok na trasie (jest tylko jeden kierunek: do przodu). Za każdym razem, gdy robię krok, moje statystyki są aktualizowane. Wykonuje krok i aktualizuje statystyki: `step_segment, STATS = take_step(step_segment, STATS)` 2. Lista wykonanych kroków wraz ze statystykami jest przechowywana w `step_segment`. Dzięki temu mogę „cofnąć” dowolną liczbę kroków, jeśli chcę. Aby cofnąć krok, wywołaj funkcję: `step_segment, STATS = undo_step(step_segment, STATS)` 3. Mogę zobaczyć, ile czasu zajęła moja bieżąca trasa, wykonując: `time = frames(step_segment)`. 4. W pewnym momencie wezmę udział w bitwie. Dostaję się do bitwy, gdy `STATS[5] == "B"` 5. Kiedy jest bitwa, mam po prostu dwie możliwości: **i.** Walcz w bitwie lub **ii.** Biegnij z dala. 6. Jeśli chcę walczyć, robię: `step_segment = do_fight(step_segment, STATS)`. Odnotowuje to również, że wybrałem walkę, wraz ze statystykami, w `step_segment`. (Więc mogę to cofnąć, jeśli chcę). 7. Jeśli chcę uciec, robię: `step_segment = run_away(step_segment,STATS)`. Czy ktoś może mi doradzić, jak mogę zakodować brute force na ten problem? **W szczególności** , chciałbym wiedzieć, jak mogę nakazać komputerowi wypróbowanie każdej możliwości; Po prostu nie mogę wymyślić, jak... >.<' Chcę zobaczyć każdą możliwą kombinację Run & Fight (jedyne dwie możliwości, kiedy dotrę do bitwy). Jest tylko około 200 możliwości. Potrzebuję tylko 128 kroków, więc istnieje skończona ilość możliwości, stąd: `while (len(step_segment)) < 128`. Po prostu nie wiem, jak to zrobić w Pythonie. Cały mój powód, dla którego nauczyłem się programowania, to rozwiązanie tego problemu. Myślę, że mogę wyjaśnić rozwiązanie po angielsku, tak jak to zrobiłem powyżej, ale nie wiem, jak to zakodować. Byłbym **bardzo** wdzięczny, gdyby ktoś mógł mi doradzić! Dziękuję Ci.


title: Projekt OO dla transferu danych klient-serwer/RPC/n-warstwowy (w szczególności SignalR)

text: Używam SignalR do implementacji systemu klient/serwer, ale myślę, że to pytanie może dotyczyć innych systemów warstwowych/klient-serwer/RPC. Jeśli nie znasz SignalR, zasadniczo tworzysz klasę po stronie serwera (nazywaną „centrum”), która zawiera metody, które chcesz udostępnić klientom. Po stronie klienta sygnalizujący uwidacznia klasę "serwera proxy", za pomocą której można wywoływać metody centrum po stronie serwera. Powiedzmy, że chcę zdalnie sterować samochodami z mojej aplikacji klienckiej. Moją pierwszą myślą było stworzenie abstrakcyjnej klasy bazowej `CarBase` z takimi metodami jak Start(), Stop(), Steer() itp. Po stronie klienta zaimplementowałbym konkretną klasę `Car`, której metody będą wywoływać ( za pośrednictwem serwera proxy centrum sygnalizującego) odpowiednie metody w centrum serwera. Podobnie po stronie serwera zaimplementowałbym konkretną klasę `Car`, ale tym razem jej metody wykonałyby odpowiednie akcje na „fizycznym” samochodzie. Powiedzmy, że klient chce uruchomić samochód:- var car = new Car(); samochód.Id = 123; samochód.Start(); Metoda `Start` samochodu zasadniczo wywołałaby odpowiednią metodę serwera przez serwer proxy, np.:- public override void Start() { _hubProxy.Invoke("StartCar", this); } _Oto moje pierwsze pytanie_ \- czy jest dopuszczalne, aby klasa Car była zależna od serwera proxy i przekazywała się do zdalnej metody w ten sposób? Czytałem, że funkcjonalność taka jak trwałość jest osobnym problemem i dlatego powinna funkcjonować w osobnej klasie i nie mam zdania, czy ta wytyczna dotyczy tego, co tutaj robię. Jeśli tak, dałoby to kod klienta taki jak `_hubProxy.StartCar(car);` zamiast bardziej przyjaznego i intuicyjnego "car.Start();". Idąc dalej, po stronie serwera, metoda StartCar() klasy "hub" może wyglądać mniej więcej tak:- public void StartCar(CarBase clientCar) { // Utworzenie instancji samochodu po stronie serwera // (ta implementacja współdziała z " fizyczny samochód). var serwerSamochód = new Car(); // Mapuj właściwości odebranego samochodu klienta serverCar.Id = clientCar.Id; .. itd.. serwerSamochód.Start(); } Czy jest to akceptowalne podejście, np. posiadanie przepustki po stronie klienta w swoim obiekcie Car? A może powinienem przekazywać coś innego, np. tylko identyfikator samochodu i inne istotne właściwości? Wydaje mi się, że nie mogę uniknąć tworzenia instancji samochodu po stronie serwera (i mapowania jego właściwości) - w końcu tutaj znajduje się funkcjonalność interakcji z fizycznym samochodem. Kręciłem się w kółko, próbując znaleźć lepsze rozwiązanie i dotarłem do punktu, w którym nie widzę drewna dla drzew.


title: Jaka jest dobra zasada dotycząca nazewnictwa tabel łączy?

text: W ten sam sposób, w jaki tabela „publikacja” może odnosić się do tabeli „osoba” poprzez „subskrypcje”, a tabela „firma” może odnosić się do tabeli „osoba” przez „pracownik”, zastanawiam się, czy istnieje opisowy sposób powiązania tabeli „firma” z tabelą „typ_firmy”. Oto kilka przybliżonych (i uproszczonych) przykładów odpowiednich tabel. **firma:** \- |id|nazwa| **company_type:** \- |typ|opis| **{nazwa potrzebna}:** \- |id|identyfikator_firmy|typ| Ponadto zdaję sobie sprawę, że nie wszystkie relacje można nazwać tak zwięźle jak „subskrypcje” lub „pracownik”, więc jeśli tak jest w tym przypadku, jaka byłaby dobra praktyczna zasada, aby uniknąć bliskiej kolizji nazw z czymś w rodzaju „typy_firm” ? _Dodatkowe szczegóły:_ Rodzaje firm w naszym obecnym przypadku są _nieco_ zawiłe. Ta branża ma wiele kanałów dostaw i wiele kanałów klientów, więc chociaż „dostawca” jest prawidłowym typem firmy, sprzedawca może być również „niezależny”, „autoryzowany” lub „uprawniony na zasadzie franczyzy”… lub dowolna kombinacja tych trzech. Rodzaje klientów są bardzo podobnie wieloaspektowe, a aby jeszcze bardziej skomplikować problem, jedna firma może jednocześnie należeć do niektórych typów dostawców i klientów.