title: Nowicjusz w Pythonie próbuje się uczyć

text: Próbuję nauczyć się programować, zanim pójdę na studia i natknąłem się na pytanie, którego nie byłem w stanie zrobić. W funkcji napisz kod do wprowadzenia dwóch liczb całkowitych m i n oraz oblicz i wyświetl sumę wszystkich liczb całkowitych od m do n. gdyby wprowadzono 4 i 8 (w dowolnej kolejności), suma do obliczenia wyniosłaby 4+5+6+7+8. Sumę należy obliczyć za pomocą pętli, aby wielokrotnie dodawać liczby do sumy. Nie możesz użyć formuły do obliczenia wyniku. Udało mi się wykonać podstawowe dodawanie, ale dalsze dodawanie jest tam, gdzie utknąłem, tak jak jeśli wpiszesz wartość dla m = 6 i n = 9, powinno to zostać wydrukowane jako 6 + 7 + 8 + 9 i dodać wartości Wszystkie wkłady będą bardzo mile widziane. Dziękuję


title: Dwa możliwe rozwiązania problemu, projektowanie DB

text: Widziałem niedawny post o osobie kwestionującej rozwiązanie swojego szefa (uważam, że moje rozwiązanie jest lepsze niż mojego szefa, więc czy powinienem go zignorować?) i postanowiłem zapytać o coś podobnego, ale nie tak „kolizyjnego”, jak brzmiało to w powyższym linku. Mówiąc prościej i bardziej konceptualnie: mamy aplikację internetową, która rozlicza telefony dla wielu różnych klientów. Rzecz w tym, że osoba, która rozpoczęła projekt, nie uważała, że w naszym projekcie jest tylko 9999 możliwych rozszerzeń telefonów (trochę naiwne, wiem). Natknęliśmy się na punkt, w którym użytkownicy różnych klientów będą musieli dzielić ten sam „numer wewnętrzny”. Na poziomie bazy danych „numer rozszerzenia” jest ustalony jako „unikalny”, a tabela „Rozszerzenia” ma klucz obcy do „Użytkownicy”. Najprostszym rozwiązaniem, jak widzieliśmy, było usunięcie tego „unikalnego” ograniczenia i zezwolenie na duplikowanie „numerów rozszerzeń”, ponieważ nadal możemy sprawdzić i zweryfikować, do którego „klienta” należy „Użytkownik”. Jednak osoba nadzorująca moją pracę uważała, że spowoduje to problemy w przyszłości, jeśli po prostu pozwolimy na powielanie. Zasugerował, abym stworzył tabelę pośredniczącą, która łączy ze sobą dwie tabele, a mianowicie `UserProfile` (który ma klucz obcy do User i `Client`) oraz tabelę `Extension`. Ponieważ moja droga wydawała się łatwiejsza do wykonania, stworzyłem gałąź projektu, aby przetestować, czy działa poprawnie, co robi. Potem zacząłem implementować w inny sposób i natknąłem się na pewne komplikacje, modyfikacje całego systemu, ale nadal uważam, że jest to wykonalne. Osobą, która nadzoruje moją pracę jest administrator systemu, który zajmuje się programowaniem. Jestem programistą na pełen etat, choć bez dużego doświadczenia (jeszcze młody ;) ). Byłoby fajnie, gdybym miał jakąś zewnętrzną perspektywę na mój dylemat? Wielkie dzięki chłopaki.


title: Udostępnianie modeli domen przez API

text: Tworzę prosty interfejs API RESTful dla aplikacji internetowej, nad którą pracuję, i zastanawiam się, jak najlepiej eksponować moje modele domeny. Załóżmy, że mam klasę User i chcę dostarczyć odpowiedź JSON z różnymi właściwościami użytkownika. Oczywiście nie chcę publicznie ujawniać każdej właściwości mojego modelu (rzeczy takich jak DateCreated, PasswordHash itp.) ze względu na problemy z bezpieczeństwem i przepustowością. Zapoznałem się z obiektami transferu danych i zastanawiam się, czy to jest właściwy sposób. Jeśli mam rację, mógłbym na przykład przekazać model użytkownika do mojego DTO użytkownika i upewnić się, że wspomniany DTO pozwala na udostępnienie tylko wybranych przeze mnie właściwości użytkownika (co pomogłoby również oddzielić moje modele od mojego publicznego interfejsu API). Czy to rozwiązanie jest odpowiednie, czy są lepsze sposoby na to? Dziękuję.


title: Utrzymanie dobrej formy podczas nauki nowych technologii

text: Uważam, że jako wykonawca muszę dość regularnie uczyć się nowych technologii, aby zachować konkurencyjność. Jednak uważam również, że (nie tylko, ale przede wszystkim) w takich okolicznościach mam tendencję do bardzo złego przepływu kodu i muszę wykonać wiele poprawek, aby uzyskać kanoniczne rozwiązanie. Chociaż zdaję sobie sprawę, że są tacy programiści kontraktowi, którzy nie mają problemów z braniem pieniędzy i bieganiem, chcę utrzymywać dobre relacje dzięki dobrej bazie kodu, która jest nie tylko łatwa, ale i przyjemna w utrzymaniu – co ostatecznie przekłada się na bardziej lukratywne dla mnie biznes na dłuższą metę, ponieważ ryzyko architektoniczne jest minimalne. Zastanawiam się jednak, czy istnieją sposoby, dzięki którym mógłbym poprawić moją zdolność uczenia się technologii _jednocześnie_ zbliżając strukturę do tego, co jest poprawne / kanoniczne, od samego początku - szczególnie biorąc pod uwagę niektóre słabo udokumentowane technologie lub te, które są udokumentowane fragmentarycznie. Chociaż nie ma substytutu doświadczenia, chcę usprawnić ten proces, zmniejszając znaczny czas refaktoryzacji, który obecnie cierpię, ponieważ jest to coś, czego często doświadczam.


title: Korzystanie z abstrakcji wysokiego poziomu

text: Nie jestem pewien, czy używam właściwego terminu, ale czy programowałbyś przy użyciu abstrakcji wysokiego poziomu, takich jak Powerbuilder, lub jakiś CMS, taki jak MODx lub DotNetNuke? Nie bawiłem się jeszcze żadną z nich. Powodem, dla którego pytam, jest to, że czuję się onieśmielony całym pojęciem używania jakiejkolwiek abstrakcji w stosunku do języków, których używam. Myślę, że moja praca może być zbyt uproszczona. Chociaż może to zapewnić szybsze rozwiązania biznesowe, wolałbym kodować bezpośrednio z, w moim przypadku, .NET. Czy użyjesz/chcesz używać takich abstrakcji, czy wolisz je od programowania w językach niższego poziomu?


title: Wyjaśnienie dotyczące wzorca projektowego MVC

text: Czytałem na MVC i miałem wątpliwości. Przykład, w którym Model, Widok i Kontroler to wszystkie indywidualne klasy, których obiekty są tworzone i używane do wdrażania aplikacji w innej klasie. Zaprojektowany przeze mnie GUI traktuje Model, Widok i Kontroler jako oddzielne klasy i w większości przypadków można dokonać zmian w każdej z nich bez naruszania drugiej. Jednak te oddzielne klasy są przywoływane w klasie Kontroler (UI). Nie mam 4 klasy, która wywołuje i tworzy obiekty dla modelu, widoku i kontrolera. Czy moja konfiguracja nadal jest zgodna z metodologią projektowania MVC? Dziękuję.


title: Jak zarządzać przy mniejszej wiedzy technicznej?

text: Zostałem kierownikiem projektu w mojej firmie i oto czego doświadczyłem do tej pory: Na początku starałem się utrzymać formę techniczną z innymi programistami zespołu (około 15 programistów) i czytać tyle, ile mogłem żebym wiedział prawie wszystko, co dzieje się w projekcie, od architektury, po spójność składni. Jednak szybko zdałem sobie sprawę, że jest prawie niemożliwe, abyś **wiedział wszystko**. Dlatego to naturalne, że cofasz się w wyścigu technicznym. Wyobraź sobie, ile pracy wymaga nauka **Ext JS** , **Angular JS** , **BRE** , **WCF** , **Enterprise Library** do logowania, **Asterisk** itd. itd. wszystko w tym samym czasie. Wydaje mi się więc, że to nie jest właściwa droga. Myślę, że formuła brzmi: im więcej ludzi musisz zarządzać, tym mniej wiedzy technicznej możesz posiadać. Istnieją jednak problemy związane z brakiem wiedzy na temat tego, co dzieje się w Twoim zespole z technicznego punktu widzenia: 1. Możesz nie rozumieć i nie wykrywać wąskich gardeł w taki sam sposób, w jaki robiłbyś to podczas tworzenia oprogramowania 2. Możesz nie zdecydować, która technologia jest lepsza pod względem wydajności i produktywności 3 W przypadku sporu technicznego w zespole możesz nie być w stanie pomóc. Możesz nie być w stanie przewidzieć i przewidzieć czasu niezbędnego do wykonania zadania 6. Tracisz swoją pasję, gdy programista z entuzjazmem mówi o rozwiązanym problemie, ponieważ nie rozumiesz 40 procent tego, co mówi o czymś, a im mniej o czymś wiesz, tym bardziej może to być dla ciebie nudne 7. Deweloperom trudniej będzie ci coś wyjaśnić i będą musieli mówić mniej technicznie 8. Źli programiści (rzadcy, ale istnieją) mogą nadużyć Twoja mniejsza wiedza techniczna i powoduje różnego rodzaju problemy 9. ... Zjawisko to prawdopodobnie występuje w każdej karierze i zawodzie. Ponieważ jednak świat rozwoju i ogólnie komputery posuwają się do przodu z większą szybkością (w porównaniu np. do przemysłu samochodowego), więc w krótkim czasie, takim jak 6 miesięcy, czujesz, że się cofasz. Wersja po wersji, funkcja po funkcji, biblioteka po bibliotece, masz pomysł. Widziałem te pytania i zawierają dobre sugestie. Jak mogę utrzymać swoje umiejętności techniczne po zostaniu kierownikiem projektu? Ile powinien wiedzieć mój kierownik projektu? Ile powinien wiedzieć mój kierownik projektu? Czy menedżer (lub dyrektor generalny) w firmie informatycznej powinien mieć doświadczenie informatyczne w organizacji? Jak przekonać zarząd do poradzenia sobie z długiem technicznym? Opierają się jednak bardziej na osobistym doświadczeniu i radach, co oczywiście jest dobre, ale może nie pomóc. Czy mamy książkę lub przemyślany i zbadany esej na ten temat o tym, jak zarządzać zespołem programistów, **mającym mniejszą wiedzę techniczną** niż członkowie zespołu? Jakie punkty należy wziąć pod uwagę, aby skutecznie prowadzić i sprawić, by cały zespół osiągnął sukces?


title: gdzie dokładnie należy umieścić logikę biznesową Pythona w django

text: Właśnie zacząłem się uczyć Django/Pythona/Web Development. Ten problem niepokoi mnie już od jakiegoś czasu. Tworzę aplikację z wieloma szablonami w Django. Mam views.py, który po prostu renderuje odpowiedzi do odpowiednich szablonów i mam models.py, w którym ustrukturyzowałem moją bazę danych. W jednym z moich szablonów muszę załadować obraz (co jestem w stanie zrobić) i muszę uruchomić logikę opartą na cechach wgranego obrazu (jeszcze nie zrobione). Ta logika wymaga wielu ciężkich obliczeń. Po wykonaniu obliczeń logika powinna zwrócić do szablonu przetworzone informacje (współrzędne). Udało mi się wykonać wszystkie te czynności z powodzeniem w samodzielnej aplikacji komputerowej Pythona wywołującej pliki Pythona jeden po drugim. Ponieważ jednak teraz chcę zrobić z tej aplikacji internetowej, zacząłem używać frameworka Django. Zrobiłem dużo poszukiwań, ale nadal nie jestem w stanie określić, gdzie dokładnie powinienem umieścić ten plik Pythona zawierający całą logikę. Czy powinienem mieć inny plik oparty na klasie `(logic.py)` i wywoływać go z `view.py`? Poszukałem w Google i odkryłem, że wielu programistów umieszcza swoją logikę biznesową w swoich plikach models.py w Django. Jednak czuję, że intuicyjnie nie jest to właściwe, ponieważ model powinien komunikować się wyłącznie z zapleczem. Każda pomoc byłaby mile widziana. Z góry dziękuję.


title: Czy istnieje coś takiego jak stwierdzenie „kiedy”?

text: Czy istnieje funkcja języka lub języka, która może obsługiwać przypadki „kiedy”? Oznacza to, że za każdym razem, gdy jakiś warunek staje się prawdziwy, w dowolnym zakresie lub kontekście, można określić dodatkowy kod do wykonania? Zauważ, że różni się to od prostego `if`, które musi być w określonym zakresie i wyraźnie napisane. Klauzula when byłaby prawie jak 'if', która odnosi się do każdego przypadku w wykonywaniu programu po nim.


title: Jakie są zalety JRuby (lub innego języka przeniesionego do JVM)? Dlaczego miałby go używać?

text: Powiedzmy, że bardzo lubię Rubiego i znam Javę. Co kryje się za tymi językami J* i Iron*, które umożliwiają używanie składni języka obcego do kompilowania ich do kodu bajtowego JVM lub .NET? Zasadniczo, jaka jest zaleta? Czy to tylko dlatego, że lubisz środowisko uruchomieniowe jednego języka, ale nie składnię? Proszę doradź!


title: Czy ViewModel z więcej niż jednym repozytorium jest zły?

text: Pracuję nad projektem z MVVM. Niektóre ViewModele mają więcej niż jedno repozytorium. * **Czy ViewModele z więcej niż jednym repozytorium są złe?** * **Podaj, dlaczego jest dobry/zły.**


title: Czy istnieją strategie wykrywania usług REST za pomocą HATEOAS?

text: Tworząc usługę REST z ograniczeniem HATEOAS, bardzo łatwo jest ogłosić istnienie zasobów poprzez łączenie. Robisz `GET` do katalogu głównego mojej witryny, a ja odpowiadam dokumentem głównym zawierającym wszystkie zasoby pierwszego poziomu: { users: { href: "/users" } pytania { href: "/questions" } } Klienci, którzy Dowiedz się, jak czytać te wartości `href`, aby wykonać na nich żądania `GET` i odkryć wszystkie aktualne zasoby dostępne w aplikacji. Działa to dobrze w przypadku podstawowych scenariuszy wyszukiwania, ale nie wskazuje, czy zasób podlega zapytaniu. Na przykład, rozsądne może być wykonanie: GET /users?surname=Smith Czy istnieją formaty, które mogą wyrazić tę zdolność zapytania z wystarczającą ilością informacji, aby klient mógł utworzyć spójne zapytanie bez konieczności wcześniejszej znajomości zasobu? Dodatkowo, czy istnieje sposób wyrażenia, że klient może wykonać POST do danej lokalizacji z oczekiwaną lokalizacją. Na przykład można się spodziewać, że klient wykona następujące czynności w celu utworzenia nowego zasobu pytań: POST /questions { title: "Czy istnieją strategie wykrywania usług REST przy użyciu HATEOAS?", body: "Kiedy budujesz usługę REST za pomocą HATEOAS ograniczenie, to bardzo..." } Używając HTML jako formatu do spożycia przez ludzi, możemy wyrazić wiele z tego poprzez użycie formularzy i pisemnych podpowiedzi, aby umożliwić człowiekowi odkrycie operacji, które mogą wykonać na usłudze. Czy istnieją formaty, które są zdolne do podobnych rzeczy dla klientów?


title: projekt 'silnika gry' dla małych gier javascript?

text: Dla zabawy tworzę grupę dwóch lub trzech prostych gier javascriptowych. Gdy ktoś ukończy jedną grę, otrzyma trudniejszą lub łatwiejszą wersję innej gry, w zależności od tego, czy oryginalna gra została wygrana, czy przegrana. Mam wysokopoziomowe pytanie dotyczące projektowania rzeczy: Do tej pory stworzyłem klasę dla jednego typu gry, która zarządza interakcją z interfejsem użytkownika i stanem samej gry. Ale czy w celu śledzenia liczby wygranych podgier lub zrozumienia, czy następna prezentowana gra powinna być mniej lub bardziej trudna, czy istnieją argumenty za stworzeniem klasy „silnika gry”? Jak silnik komunikuje się z grami? Na przykład, kiedy gra zostaje wygrana, w jaki sposób ta informacja jest przekazywana do silnika? Czy istnieje lepszy lub bardziej powszechny projekt? (Jeśli chcesz zobaczyć, co mam do tej pory, gry powoli nabierają kształtu tutaj: https://github.com/yosemitebandit/candela i można je obejrzeć na http://yosemitebandit.com/candela)


title: Automatyczne dodawanie danych z JSON do SQL

text: Jestem naprawdę nowy w tego rodzaju rzeczach; moje tło jest głównie w C#. Czy ktoś mógłby wskazać mi właściwy kierunek? Muszę ustawić skrypt, aby automatycznie analizował niektóre JSON do bazy danych SQL, gdy tylko dane zostaną zaktualizowane na serwerze. Najpierw patrzę na ten plik, który zwraca lokalizację pliku dla danych i ostatni zmodyfikowany znacznik czasu: http://us.battle.net/api/wow/auction/data/medivh. Spędziłem ostatnią godzinę na googlowaniu, ale nie mogę znaleźć odpowiedniej odpowiedzi. Podsumowując, skrypt musi uruchamiać się co około 15 minut, sprawdzać, czy zmienił się znacznik czasu, a jeśli tak, a następnie pobrać nowe dane i wprowadzić je do bazy danych SQL. Czy muszę używać PHP do analizowania i wstawiania danych JSON do bazy danych? Jeśli tak, jak mogę uruchomić kod PHP co x minut?


title: Aplikacje, na które wpływa wydajność pamięci

text: Piszę artykuł na temat aplikacji, na które bardziej wpływa wydajność pamięci niż wydajność procesora. Dużo napisałem na temat luki między nimi, jednak wydaje mi się, że nie mogę znaleźć niczego o aplikacjach, na które bardziej wpływa wydajność pamięci niż szybkość procesora. Przypuszczam, że są to aplikacje, które tworzą dużą liczbę odwołań do pamięci, ale nie mam pojęcia, jakie aplikacje miałyby tak dużą liczbę odwołań, aby się wyróżniać? Może bazy danych? Czy możesz dać mi jakieś wskazówki, jak postępować, kilka linków do artykułów? Naprawdę utknąłem.


title: Czy pamięć podręczna Java Integer jest realizacją wzorca puli obiektów?

text: Jednym z najbardziej znanych przykładów pełnowartościowej puli obiektów jest pula połączeń JDBC. Główne powody: * obiekty w puli są drogie w tworzeniu i powiązaniu z zasobami zewnętrznymi * każdy obiekt w puli jest serwowany maksymalnie jednemu klientowi na raz * obiekty w puli muszą zostać przywrócone do stanu czystego przed ponownym udostępnieniem do nowego klienta Mając powyższe na uwadze, czy pamięć podręczna Java Integer może być traktowana jako realizacja puli obiektów? Oto dlaczego w to wątpię: * obiekty w puli mogą być używane przez więcej niż jednego klienta naraz ze względu na ich niezmienność * niemutowalność zapobiega również osiągnięciu przez obiekty puli stanu przestarzałego * nie ma pojęcia o „wolnym” obiekcie, gotowym do być przydzielone do klienta


title: Wymaganie wywołania statycznego ustawiacza klas przed konstruktorem, zły projekt?

text: Mam klasę, powiedzmy „Foo”, a każda instancja Foo będzie potrzebowała i zawierała ten sam obiekt List, „myList”. Ponieważ każda instancja klasy będzie dzielić ten sam obiekt List, pomyślałem, że dobrze byłoby zrobić „myList”. static i użyj funkcji statycznej, aby ustawić `myList` przed wywołaniem konstruktora. Zastanawiałem się, czy to źle, bo wymaga to wywołania settera przed konstruktorem? Jeśli osoba tego nie zrobi, program się zawiesi. Alternatywnym sposobem byłoby przekazywanie za każdym razem `myList`.


title: Najlepsza praktyka: strategia dotycząca projektów stron internetowych i wersjonowania

text: Jakie są najlepsze praktyki i strategia projektowania i tworzenia strony internetowej? Kluczowe części, które chcę wziąć pod uwagę, to: * Wdrożenie DLL * Publikowanie IIS * Wersjonowanie projektu * Przestrzeń nazw Proszę odpowiedzieć na te pytania, podając zalecane kroki, które należy wykonać dla własnych witryn sieci Web. Przykładowy przewodnik** (Proszę poprawić go swoim.) 1. Tworzysz aplikację internetową 2. Tworzysz jej wersję IIS 3. Skopiuj to samo do folderu internetowego IIS 4. Skopiuj dokładną „aplikację internetową” DLL do folderu wersji IIS (lub Zbudujesz tutaj DLL wesite za pomocą csc lub wybierz inną metodę) 5. Dodaj każdy projekt osobno do repozytorium 6. Czy mimo to oba powodują konflikty (aplikacja internetowa i strona internetowa)? 7. Czy tworzysz oddzielne projekty? 8. W jaki sposób zapewniasz, że kompilacja zestawu stron internetowych jest zawsze aktualizowana? 9. Jak zamierzasz je wersjonować i zsynchronizować? 10. Przeniesienie biblioteki DLL witryny z aplikacji internetowej nie może być dobrym pomysłem. Jak sobie z tym poradzić? 1. Najważniejszą częścią tego pytania jest dla mnie liczba projektów/rozwiązań, które tworzysz dla projektu strony internetowej. Sądzę, że prawdopodobnie są to 1 lub 2 rozwiązania, a jako profesjonalny programista sprawisz, że zostaną one wywrotowe. 2. Czy zmieniasz przestrzenie nazw lub zestawy? Czy każdy z nich będzie miał oddzielne zespoły rdzenia? Podzielisz się? Jeśli się podzielisz, jak sobie z tym poradzisz? Myślę, że pojawią się konflikty. 3. Czy używasz projektu jako kontenera drugiego? Jak będzie wyglądała dywersja? ### To, czego używam, to VisualSVN, to mój wybór subwersjonowania. Miałem 2 projekty podobne do powyższej formuły; Stworzyłem projekt sieciowy ze stronami, a następnie sklonowałem go w IIS. Naprawiłem niektóre problemy z adresami i ścieżkami, a także skopiowałem bibliotekę DLL wewnątrz wersji IIS witryny, ale naprawdę nie znam tej metody jako całkowicie praktycznej metody z powodu konfliktów, o których wspomniałem.


title: Przykłady ograniczeń w IT ze względu na projektowaną długość bitów

text: Prowadzę kurs "Wstęp w Programowaniu" dla studentów pierwszego roku i chciałbym znaleźć ciekawe przykłady, w których rozmiar typu danych w bitach, wybrany konstrukcyjnie, prowadził do pewnych znanych ograniczeń lub ważnych wartości. Oto kilka przykładów: 1. Ze względu na to, że teledrukarka Bell używała 7-bitowego kodu (później akceptowanego jako ASCII) do tej pory często kodowaliśmy załączniki w wiadomościach elektronicznych tak, aby zawierały tylko 7-bitowe dane. 2. Klasyczne ograniczenie 32-bitowej przestrzeni adresowej prowadzi do maksymalnego rozmiaru pamięci RAM 4 GB dostępnego dla systemów 32-bitowych i maksymalnego rozmiaru pliku 4 GB w systemie FAT32. Czy znasz inne ciekawe przykłady, jak wybór typu danych (a zwłaszcza ich binarnej długości) wpłynął na współczesny świat IT. **Dodano po krótkiej dyskusji w komentarzach:** _Nie będę uczyć jak pokonywać ograniczenia._ Chcę tylko, aby wiedzieli, że 1 bajt może przechowywać wartości od -127..0..+127 o 0.. 255, 2 bajty pokrywają zakres 0..65535 itp., udowadniając przykłady, które znają z innych źródeł, takie jak wspomniane powyżej kodowanie base64 itp. Właśnie uczymy się podstawowych typów danych i staram się znaleźć dobre odniesienie do „jak duże te typy są.


title: Uproszczenie wyszukiwania danych za pomocą .NET

text: Przykład w witrynie asp.net zawiera przykład użycia Linq do utworzenia funkcji wyszukiwania w witrynie albumu muzycznego przy użyciu MVC. Kod wygląda tak - public ActionResult Index(string movieGenre, string searchString) { var GenreLst = new List<string>(); var GenreQry = z dw db.Movies orderby d.Genre select d.Genre; RodzajLst.AddRange(GenreQry.Distinct()); ViewBag.movieGenre = new SelectList(GenreLst); var filmy = z mw db.Filmy wybierz m; if (!String.IsNullOrEmpty(searchString)) { filmy = filmy.Where(s => s.Title.Contains(searchString)); } if (!string.IsNullOrEmpty(movieGenre)) { movies = movies.Where(x => x.Genre == movieGenre); } return Widok(filmy); } Widziałem podobne przykłady w innych samouczkach i wypróbowałem je w rzeczywistej aplikacji biznesowej, którą rozwijam/utrzymuję. W praktyce ten wzorzec nie wydaje się dobrze skalować, ponieważ wraz z rozszerzaniem się kryteriów wyszukiwania, dodaję coraz więcej warunków, które wyglądają i są nieprzyjemne/powtarzalne. Jak mogę dokonać refaktoryzacji tego wzorca? Jednym z pomysłów, jaki mam, jest utworzenie kolumny w każdej tabeli, którą można „przeszukiwać”, która może być kolumną obliczoną, łączącą wszystkie dane z różnych kolumn (SQL Server 2008). Więc zamiast mieć gatunek filmowy i tytuł, byłoby to coś takiego. if (!String.IsNullOrEmpty(searchString)) { filmy = filmy.Where(s => s.SearchColumn.Contains(searchString)); } Jakie są tego konsekwencje dla wydajności/projektu/architektury? Próbowałem też korzystać z procedur wykorzystujących zapytania dynamiczne, ale potem po prostu przeniosłem brzydotę do bazy danych. Np. CREATE PROCEDURE [dbo].[search_music] @title as varchar(50), @genre as varchar(50) AS -- ustaw zmienne na null, jeśli są puste IF @title = '' SET @title = null IF @genre = '' SET @genre = null SELECT m.* FROM view_Music as m WHERE (title = @title OR @title IS NULL) AND (gatunek LIKE '%' + @genre + '%' OR @genre IS NULL) ORDER BY Id opis OPCJA (RECOMPILE) Jakieś sugestie? Porady?


title: Krzyżowy kod „maszyny”?

text: Niektóre języki (głównie te stworzone w ciągu ostatnich dwóch dekad) mogą teraz nie tylko działać (po pewnym etapie kompilacji lub bezpośrednio) na kilku platformach, ale także mogą być skompilowane do działania na kilku maszynach wirtualnych. Weźmy na przykład Scala. Czysty kod Scala może być interpretowany, skompilowany w celu uruchomienia na JVM (Java Virtual Machine) lub może być skompilowany w celu uruchomienia przy użyciu .NET Framework. Odłóżmy na bok korzyści z niezależności od platformy, jakie dokładnie są korzyści z pisania kodu, który można kompilować na kilku maszynach wirtualnych i środowiskach wykonawczych?


title: Przenosimy korporacyjny front-end oparty na Access do aplikacji internetowej

text: Mamy aplikację dla przedsiębiorstw z interfejsem napisanym w programie Microsoft Access 2003, która ewoluowała w ciągu ostatnich 6 lat. Dane zaplecza i spora ilość logiki zaplecza są zawarte w kilku bazach danych Microsoft SQL Server. Ta aplikacja typu front-end składa się z około 180 formularzy i ponad 120 000 wierszy kodu oraz współpracuje z bibliotekami DLL VB.Net, które obsługują różne krytyczne funkcje wykorzystywane przez naszych pracowników sprzedaży. Obecny system wykorzystuje 3 monitory do wyświetlania różnych informacji; aplikacja Access używa COM+ do kontrolowania programów Microsoft Outlook i Internet Explorer do różnych celów. Interfejs programu Access czasami zajmuje 2 ekrany, automatycznie zmieniając swój rozmiar na podstawie wymiarów ekranu zgłaszanych przez interfejs API systemu Windows. Aplikacja wykorzystuje również mapę Google do prezentowania danych naszym agentom i umożliwia dwukierunkową interaktywność z mapą poprzez łączność COM+ z JavaScript zawartym w mapie Google. Za namową wyższego kierownictwa zamierzamy całkowicie przepisać tę aplikację przy użyciu technologii internetowych, takich jak ASP.Net lub być może stos LAMP (myślenie ze stosem LAMP jest „bezpłatne” jest dość tanie). Chcemy przejść na aplikację internetową, aby wyeliminować zależność od naszej fizycznej lokalizacji przy zatrudnianiu nowych członków sił sprzedaży. Obecnie nasza główna siedziba jest przepełniona i musimy dalej rozwijać firmę. Czy ktoś ma jakieś przemyślenia na temat tego, jaka technologia byłaby najlepsza do wykorzystania w aplikacji internetowej tej wielkości? Należy pamiętać, że aplikacja jest zależna od usług zaplecza w naszej istniejącej infrastrukturze. Aplikacja obsługuje między innymi dane finansowe oraz dane osobowe klientów. [Przyjrzałem się najlepszym praktykom przenoszenia dużych aplikacji MS Access w kierunku .Net? i przeczytaj odpowiedzi i większość komentarzy. Ciekawa lektura i ma kilka ważnych punktów, ale nasz C.O.O. i zakontraktowany architekt oprogramowania naciska na pełną aplikację internetową, a nie aplikację .Net Windows]


title: Czy powinienem nauczyć się java do tworzenia aplikacji mobilnych, czy C# po prostu to zrobi?

text: Nie mogę się doczekać zagłębienia się w framework .NET, ale większość aplikacji mobilnych wydaje się być tworzona w Javie. Najprawdopodobniej będę celował w mniej droższe telefony, takie jak Nokia i motorolla, a nie Android lub iPhone OS. Czy mogę zrobić te rzeczy w C#?


title: Na końcu mojej liny

text: Jestem wykonawcą dużej firmy. Obecnie w projekcie pracuje trzech programistów, w tym ja. Problem polega na tym, że pozostali 2 deweloperzy tak naprawdę tego nie rozumieją. Przez „to” rozumiem: * Nie rozumieją najlepszych praktyk dla używanej przez nas technologii. Po 6 miesiącach ja i inni podawali im przykłady, używa się okropnych antywzorców. * Są programistami typu „kopiuj i wklej”, którzy produkują głównie kod spaghetti. * _Ciągle_ psują rzeczy, wprowadzając zmiany, ale nie robią podstawowego testu dymnego, aby sprawdzić, czy wszystko jest w porządku * Odmawiają/rzadko prosić o przeglądy kodu. * Odmawiają / rzadko robią nawet podstawowe rzeczy, takie jak formatowanie kodu. * Brak dokumentacji na temat klas (jsdocs) * Obawiam się usunięcia kodu, który nic nie robi * Wszędzie zostawiaj komentowane bloki kodu, mimo że mamy kontrolę wersji. Czuję się coraz bardziej sfrustrowany, gdy formatuję kod innych, naprawiam błędy, odkrywam zepsute funkcje i tworzę abstrakcje, aby usunąć spaghetti. Naprawdę nie wiem, co robić. Staram się nie denerwować, ale to tylko bałagan. Lubię tych ludzi jako ludzi, ale czuję, że sytuacja z kodowaniem jest tak zła, że mógłbym działać szybciej, gdyby po prostu przeglądali internet przez cały dzień. Czy byłoby nie na miejscu, aby poprosić naszego menedżera o sprawdzenie dostępu innych svn commit; Zatwierdzenia można wykonać tylko po sprawdzeniu przez kogoś, kto ma wiedzę w tym, co robimy? Jako wykonawca nie jestem pewien, czy to najlepszy ruch. Czy istnieje subtelny/nie tak subtelny sposób na wyjaśnienie, ile rzeczy naprawiam?


title: Czy programowanie jest zbyt łatwe w porównaniu z innymi dziedzinami?

text: Programuję od kilku lat i nie powiem, że to bułka z masłem, ale w tej dziedzinie wiesz, jak to zrobić. Zawsze możesz poszukać w Google zasobów, samouczków. Jest mnóstwo już napisanego kodu, który może ci pomóc - frameworki, biblioteki, ale jeśli porównasz to z innymi dziedzinami innowacji, takimi jak "Elektronika". Nie jest łatwo zacząć, społeczność może nie być zbyt duża w Internecie, robienie rzeczy dobrze i nie zapominajmy, że nic nie mówi, gdzie może być błąd. Wiele razy chciałem, ale nie mogłem wejść do budowy jakiegoś robota, ponieważ nie wiem, jak zacząć. Więc moje pytanie brzmi, czy programowanie wydaje się być łatwe w porównaniu z resztą dziedzin, czy to tylko moje zainteresowanie to ułatwia?


title: Jakie są dobre wzory matematyczne do programowania?

text: Jakie są niektóre popularne formuły matematyczne, których nauczyłeś się, które pomogły ci napisać lepsze algorytmy i stać się lepszym programistą? Przykład: Dowiedziałem się o wzorze odległości ekludianowej: `sqrt((x1-x2)^2+(y1-y2)^2)`, który pomógł mi zrozumieć, jak znaleźć podobne obiekty poprzez porównanie 2 czynników.


title: Odpowiednie licencje do oferty freemium

text: Obecnie pracuję nad rozwiązaniem napisanym w JavaScript. Planuję wydać dwie wersje: * Za darmo: lite z podstawowymi opcjami, czyli plug and play (działa tylko po załadowaniu na stronę) * Za opłatą: pełna wersja, która ma więcej opcji i wymaga wsparcia I Zastanawiam się, które licencje będą dla mnie działać. Oto moje dotychczasowe przemyślenia, proszę mnie poprawić: * MIT: Obawiam się, że ktoś inny może udostępnić nowe funkcje jako dodatek do mojego rozwiązania, na licencji komercyjnej. Oznacza to, że nie byłbym w stanie w przyszłości dodać tych samych funkcji do własnego rozwiązania. * GPL: wydaje się nie działać w moim przypadku, jeśli wydam wersję lite na GPL, oznacza to, że muszę również wydać pełną wersję za darmo. * Podwójne licencjonowanie: widzę, że niektóre frameworki lub biblioteki oferują podwójne licencjonowanie, ale nie jestem pewien, jak to działa.


title: Najlepszy monitor do programowania (oczy)?

text: Obecnie muszę kupić nowy monitor (mój stary się zepsuł i utknąłem z ekranem laptopa). Jaki jest obecnie dobry wybór na monitor? Byłem całkiem poza obiegiem. Oczywiście głównie interesuję się moimi oczami i potrzebuję czegoś, co jest dobre do czytania tekstu (oczywiście programowanie). Powiedziawszy to, nie dbam o gry i piękny obraz... tylko tekst. Jakieś badania na ten temat? Jaki jest najlepszy monitor do czytania tekstu? Wolałbym nazwę marki, jeśli to możliwe.


title: Czy gniazda Pythona są odpowiednie do synchronizacji plików?

text: Pracuję w organizacji z ograniczonymi funduszami. Nie stać ich na konto firmowe w Dropbox. Jednak uznaliby za przydatne, aby wszystkie ich pliki były synchronizowane na lokalnych komputerach. Niedawno przyjrzałem się gniazdom Pythona i wygląda na to, że niestandardowy skrypt może osiągnąć to, czego szukają. Obawiam się, że może to być zbyt niski poziom, ponieważ może istnieć biblioteka, która zapewnia dużą funkcjonalność, a zaczynanie od zera byłoby stratą zasobów. Czy istnieje biblioteka/moduł Pythona, który zapewni to, czego szukam?


title: Jaki jest odpowiednik Entity Framework w świecie sklepów Oracle?

text: W świecie deweloperów/firm specjalizujących się w budowaniu/wdrażaniu rozwiązań opartych na oprogramowaniu zbudowanym/sprzedawanym przez Oracle (znanym również jako „domy Oracle”), **jaki rodzaj oprogramowania pośredniczącego ORM jest uważany za „standard branżowy”** (jeśli istnieje), w oparciu o na twoim doświadczeniu? Mamy ograniczone doświadczenie w stosie Oracle, więc bylibyśmy wdzięczni za spostrzeżenia osób, które mają w tym większe doświadczenie. Może to wpłynąć na naszą mapę drogową produktu.


title: Czy ma dla Ciebie znaczenie, że oprogramowanie jest „dostępnym źródłem”, ale nie „open source”

text: Zapewne znasz listę licencji open source oficjalnie zatwierdzonych przez OSI. Najważniejszym, jak sądzę, byłaby GPL, MIT, [tu wstaw swoją ulubioną licencję]. Niedawno natknąłem się na projekt, który choć był open source (twórca udostępnił cały kod źródłowy), nie był oficjalnie open source na jednej z tych oficjalnych licencji. * Udostępnił źródło, ale nie obiecał, że udostępni je w przyszłości. * Zezwalał na sugestie modyfikacji, ale nie obiecywał akceptowania łatek i nie zezwalał na zewnętrzną dystrybucję zewnętrznie załatanych wersji. * Zezwalał na wykorzystanie oprogramowania w projektach komercyjnych lub płatnych, ale uniemożliwiał sprzedaż samego oprogramowania. Przypuszczam, że można by to nazwać „dostępnym źródłem”, a nie open source, jak lubimy o tym myśleć. Rozumiem, dlaczego zespół zarządzający firmy nie chciałby robić interesów z tym oprogramowaniem. Nie mogą tego rozwidlić, nie mogą tego sprzedać, nie mogą stworzyć własnej wersji oprogramowania i rozpowszechniać go lub sprzedawać. Ale czy miałoby dla ciebie znaczenie, że jesteś częścią zespołu inżynierów oprogramowania, który po prostu korzysta z tego oprogramowania? Nadal mogę za jego pomocą wykonać swoją pracę, mogę go wykorzystać w projekcie, za który mi zapłacono (ale nie mogę sprzedać samego oprogramowania, czego i tak nie prowadzę) i mogę wprowadzić zmiany w kodzie, aby zachowywał się inaczej dla moich potrzeb (ale nie mogę upublicznić tych modyfikacji), a jeśli chcę, aby te modyfikacje zostały oficjalnie udostępnione innym, zatwierdzenie zależy od samego projektu i decydują, czy włączyć je do oficjalnego wydania, czy nie. Wiemy więc, że firma, która chce oprzeć swoją działalność na tym „dostępnym źródle”, nie może tego zrobić, ale jako ktoś z zespołu inżynierów oprogramowania, czy te różnice mają dla Ciebie znaczenie, czy też wydają się mniej istotne? Ciekawe, co myślą o tym inni.


title: Który język pojawił się jako pierwszy przy przypisaniu równoległym?

text: Kiedy odkryłem, że python ma równoległe zadanie, pomyślałem, że jest całkiem fajny. Niedawno odkryłem, że przypisanie równoległe działa również w ruby. Dla osób, które tego nie znają: `x,y = y,x` w ruby, python zamienia wartości x i y . Jaki język pojawił się jako pierwszy z równoległym przypisaniem, python? czy był to inny język?


title: Co programiści muszą wiedzieć o biznesie/zarządzaniu?

text: Jak sugerowałem przez moje inne posty, nadal jestem dość nowy w sile roboczej. Podczas spotkań zespołu zwykle jestem w stanie nadążyć za dyskusją techniczną, ale kiedy mój kierownik projektu zaczyna opowiadać o tym, jak wygraliśmy nowy kontrakt, lub jesteśmy zaangażowani w składanie nowej oferty lub... o czymkolwiek, co jest raczej biznesowy niż techniczny, naprawdę... mogę się dość szybko zgubić. Jakie jest absolutne minimum, które wszyscy programiści muszą wiedzieć o zarządzaniu projektami/biznesie, aby funkcjonować?


title: Czy należy testować zasady walidacji?

text: Jeśli mam metodę pobierającą dane wejściowe i dającą wynik, to oczywiste, że testy powinny być napisane. Ale co z takimi rzeczami jak zasady walidacji? Na przykład dodaję regułę walidacji, że pewna właściwość musi mieć co najmniej 5 znaków. Czy powinienem następnie napisać test interfejsu użytkownika, aby sprawdzić komunikat o błędzie, gdy pole formularza jest puste? Załóżmy, że sama biblioteka walidacji działa dobrze, **jedyne, co robię, to dodanie jednej linijki, aby określić tę regułę**. Skłaniam się ku nie, ponieważ powielałbym tylko zasady walidacji, a jeśli same zasady są źle ustawione, test prawdopodobnie również będzie niepoprawny. Jednak bardzo chciałbym poznać opinie i doświadczenia ludzi na ten temat.


title: Szacujesz czas przesyłania plików przez sieć?

text: Przesyłam plik z jednego serwera na drugi. Tak więc, aby oszacować czas potrzebny na przesłanie niektórych GB pliku przez sieć, wysyłam ping do tego adresu IP i biorę średni czas. Na przykład: i pinguję do 172.26.26.36, otrzymuję średni czas podróży w obie strony jako x ms, ponieważ ping wysyła za każdym razem 32 bajty danych. Szacuję prędkość sieci na 2*32*8(bitów)/x = y Mbps --> mnożenie przez 2, ponieważ jest to średni czas podróży w obie strony. Tak więc przesłanie 5 GB danych zajmie 5000/y sekund. Czy mam rację w mojej metodzie szacowania czasu. Jeśli znajdziesz jakiś błąd lub inną dobrą metodę, udostępnij.


title: Jaki kod kryje się za wyjątkiem C++?

text: W C i C++ możesz zwrócić pojedynczą zmienną wewnątrz funkcji. Teraz w przypadku, gdy zmienna zwraca dane, a nie kod błędu, możesz użyć wyjątków. Ale jak to możliwe? Jeśli zwracane dane są danymi, które każesz funkcji zwracać, to praktycznie nie ma możliwości, aby funkcja wywołująca je dowiedziała się o powodzeniu (ponieważ zwrot jest używany dla danych, a nie kodu błędu). Ponadto możliwość wyjątku, aby dosłownie zatrzymać funkcję w środku kodu, aby zwrócić błąd. Jak kompilatory C++ to osiągają?


title: Microchip XC8: Jak spakować kod do górnego limitu?

text: Mam projekt dla PIC16F1454, który wymaga niestandardowego łączenia. Zasadniczo podzieliłem mój kod na dwie części, które można pobrać osobno w terenie i w ten sposób zaktualizować (prawie) całą pamięć flash, w tym bootloader. W ramach planu, aby uniknąć samego murowania, mam następującą strukturę: * Niższa, chroniona sprzętowo, niepodlegająca aktualizacji: * Kod startowy i kopiujący obraz, napisany w asemblerze * Środek: * Przestrzeń aplikacji * Używany również do pobierania nowych images * Górny: * Przestrzeń bootloadera W różnych miejscach jest trochę kodu, który wymusza tę strukturę. Bootloader zawiera stos USB, pętlę główną i niektóre funkcje pomocnicze, które sumują się do nieco więcej niż jednej strony flasha, co powoduje pewne problemy dla linkera. Na przykład plik pomocy mówi, że ta opcja ma łączyć całą listę i umieszczać ją w określonym górnym limicie (zwróć uwagę na ujemny adres): * -L-pUSBCode=-1FFEh,USBConst,BootloaderCode,BootloaderConst Ale kiedy to robię że wszystkie cztery „persekty” nakładają się na siebie, ze zwykłymi, niezamierzonymi konsekwencjami. Zrobiłem tak: * -L-aBootloader=1400h-17FFh,1800h-1FFDh -L-dBootloader=2 -L-pUSBCode=Bootloader -L-pUSBConst=Bootloader -L-pBootloaderCode=Bootloader -L-pBootloaderConst=Bootloader który definiuje klasa z elementami 2-bajtowymi, która przekracza granicę strony o godzinie 1800 i umieszcza wszystkie cztery psekty w tej klasie. Chociaż nie nakładały się na siebie, dostałem dużą dziurę obok granicy strony, wystarczająco dużą, aby zmieściło się kilka funkcji pomocniczych. Mógłbym przypisać funkcje bardziej szczegółowo do więcej niż czterech elementów, co prawdopodobnie poprawiłoby dopasowanie , ale wolę nie komplikować tego bardziej niż to konieczne. Ktoś inny (może być ja po kilku miesiącach) prawdopodobnie zamierza go później zmodyfikować i nie oczekuję, że będzie dokładnie zaznajomiony ze szczegółami. Jak mogę spakować całą sekcję bootloadera tak ciasno, jak to możliwe, w górnej pamięci, uwzględniając odskocznię do main() w 1FFEh-1FFFh, bez konieczności zmiany czegokolwiek poza plikami źródłowymi C przez przyszłego programistę?


title: Nauka architektury komputerowej jako programista

text: Zazwyczaj spotykam guru w SO i innych miejscach (instruktorów, autorów książek itp.), którzy powiedzieliby coś w stylu „To spowoduje problemy z wyrównaniem” lub inne ciekawostki niskiego poziomu. Chcę się dowiedzieć o tych wszystkich ciekawostkach, które są „istotne” w programowaniu. Teraz zwykle, gdy widzę książki niskiego poziomu (na przykład książki o architekturze komputerowej), są one zbyt niskie i skierowane do ludzi, których głównym obszarem zainteresowania jest architektura komputerowa, a nie projektowanie oprogramowania. Czy masz rekomendacje dotyczące książek, które omawiają rzeczy niskiego poziomu, które są istotne dla programistów?


title: Czy musimy zainstalować obraz systemu Intel x86 Atom dla wszystkich poziomów API?

text: Jestem nowy w programowaniu Androida i właśnie zainstalowałem nowy SDK Androida z pakietem Eclipse i ADT. Z tego pytania wiedziałem o instalacji obrazu systemu Intel X86. Ale mam jedno zamieszanie związane z instalacją Intel x86, dla którego nie mogłem znaleźć żadnego rozwiązania w Internecie. W menedżerze SDK opcje instalacji obrazu systemu Intel x86 są pokazane dla każdego poziomu interfejsu API, jak na obrazku. obraz jest tutaj (Ponieważ nie mam uprawnień. Mam nadzieję, że ktoś to poprawi) Więc moje pytanie brzmi, czy musimy mieć obraz systemu intel x86 dla wszystkich poziomów API? (Tworzę aplikację, która będzie obsługiwać od Androida do KitKata.)


title: Jak śledzić replikację sesji?

text: Pracuję nad ogromną aplikacją internetową zaprojektowaną dawno temu. Muszę go skonfigurować tak, aby działał na klastrze. W tym celu skonfigurowałem klaster tomcat. Teraz wiem, że muszę sprawić, by obiekty dodawane do sesji były serializowane. W tym celu chcę wiedzieć, co jest przechowywane w moich sesjach, kiedy się loguję. Dodatkowo, skąd mam wiedzieć (może zalogować), że stan sesji jest replikowany wśród pracowników tomcat?


title: Projektowanie prostego menedżera plików

text: Próbowałem wymyślić najlepszy sposób na zaprojektowanie mojego menedżera plików dla projektu. Muszę pracować z wieloma implementacjami plików i mam klasę File składającą się z 2 klas: Data i Descriptor. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/iHuyC.jpg) Jak widać, mam wiele różnych implementacji klasy Data, po jednej dla każdej organizacji plików. Wszystkie implementacje używają rekordów do organizowania swoich informacji, ale pola dla każdego rodzaju pliku (użytkownicy, transakcje itp.) muszą być przechowywane jako metadane w odpowiednim pliku deskryptora. Więc w zasadzie mój problem polega na próbie uzyskania dostępu i aktualizacji deskryptora każdego pliku. Na przykład, próbując search() w pliku Users z klasy Stacked, potrzebuję pól (nazwa użytkownika, imię, nazwisko itp.), które znajdują się w pliku deskryptora użytkowników, ale nie mogę wymyślić fajny projekt. Jedyny sposób, jaki przychodzi mi do głowy, to przekazywanie referencji Deskryptora do każdej metody (wyszukiwanie, pisanie itp.), ale mam wrażenie, że moje rozwiązanie byłoby zły. Proszę zauważyć, że wciąż muszę dodawać więcej organizacji plików dla różnych plików, więc chcę planować z wyprzedzeniem i mieć fajnego menedżera plików, który poradzi sobie ze wszystkimi żądaniami w najlepszy możliwy sposób, ale obecnie to jest to, co wymyśliłem.


title: Czy Foswiki może być używany jako rozproszony zamiennik Redmine?

text: Dobrze znam i uwielbiam używać `git`, między innymi ze względu na jego rozproszony charakter. Teraz chciałbym skonfigurować podobne oprogramowanie do zarządzania projektami _distributed_ (FOSS) z funkcjami podobnymi do tego, co oferuje Redmine, takimi jak * Śledzenie problemów i czasu, kamienie milowe * Wykresy Gantta, kalendarz * Integracja git, może jakieś automatyczne łączenie zatwierdzeń i zagadnienia * Wiki (najlepiej z obsługą Mathjax) * Forum, aktualności, powiadomienia * Wiele projektów Poszukuję jednak rozwiązania, które nie wymaga stale dostępnego serwera, tj. tak jak w git, każdy użytkownik powinien mieć własną kopię, którą można łatwo zsynchronizowane z innymi. Jednak nie powinno być możliwe posiadanie kopii każdego projektu na każdym komputerze. Ponieważ trac i tak używa wielu instancji dla wielu projektów, rozważałem użycie tego, ale nie wiem, jak dobrze przystosowuje się do prostego `git`ingu samej bazy danych (co byłoby najłatwiejszym sposobem obsługi dystrybucji, ponieważ i tak jest używany git ), ani nie obejmuje wszystkich funkcji Redmine. Po sprawdzeniu http://www.wikimatrix.org w poszukiwaniu Wiki ze zintegrowanym systemem śledzenia i obsługą RCS oraz odfiltrowaniu pozornie przestarzałego projektu, wybór zasadniczo sprowadza się do Foswiki, TWiki i Ikiwiki. Ten ostatni wydaje się nie oferować tylu funkcji użyteczności, aw przypadku TWiki vs Foswiki skłaniam się do tego drugiego. Wreszcie jest Fossil, który zaczyna się od drugiego końca, próbując całkowicie zastąpić git i śledząc siebie. Nie czuję się jednak zbyt komfortowo z myślą o zastąpieniu git, a funkcje inne niż SCM Fossil nie wydają się być tak rozwinięte. Czy istnieją kluczowe funkcje oprogramowania do zarządzania projektami, takie jak Redmine, których Foswiki nie zapewnia nawet przy wszystkich dostępnych rozszerzeniach?


title: Jak przetłumaczyć dane wprowadzone przez użytkownika na fikcyjny język?

text: Z powodów eksperymentalnych staram się przekonwertować dane wprowadzone przez użytkownika na fikcyjny język. Całe tłumaczenie może być 1:1. Wolałbym, gdybym mógł to osiągnąć za pomocą PHP. Czy powinienem używać gettext i poedit? Fikcyjny język nie jest zbyt duży, wyobrażam sobie, że mogę wykonać większość tłumaczenia 1:1, przeszukałem google, ale znalazłem tylko przestarzały kod i lokalizację.


title: Najlepszy sposób na rozbicie przytłaczającego kodu na łatwe do zarządzania kawałki?

text: Ciągle przytłaczają mnie duże projekty, gdy osiągną pewien poziom złożoności. Kiedy osiągnę pewien punkt w projekcie, moje postępy spowalniają do pełzania i ciągle wracam do celu i rozwiązuję wszelkiego rodzaju zamieszanie. Stałem się naprawdę dobry w refaktoryzacji z powodu mojej słabości. I zawsze staram się rozkładać moje obiekty na mniejsze, łatwiejsze w zarządzaniu. Ta słabość prawdopodobnie spowodowała, że zwróciłem zbyt dużą uwagę na właściwe projektowanie rzeczy. Wiem, że jeśli uda mi się rozbić moje problemy na mniejsze, uda mi się je wykonać płynnie. Jedną ze strategii, która przychodzi na myśl, jest rozwój oparty na testach. Co jeszcze mogę zrobić?


title: Analiza algorytmu: częstości wykonywania

text: Obecnie czytam rozdział Analysis of Algorithms w Algorithms, 4th Edition i próbuję zrozumieć, jak autor obliczył **(N^2)/2** i **(N^3)/6** _częstotliwości wykonanie_ w poniższym fragmencie kodu (tutaj jest pełny kod): public class ThreeSum { public static int count(int[] a) { int N = a.length; int cnt = 0; for (int i = 0; i < N; i++) { // <---------------- 1 for (int j = i+1; j < N; j++) { // <---------- N for (int k = j+1; k < N; k++) { // <------ N^2/2 if (a[i] + a[j] + a[k] == 0) { // <--- N^3/6 cnt++; // <---------------------- x } } } } return cnt; } } Po co dzielić N^2 przez 2? Po co dzielić N^3 przez 6?


title: Gdybyś miał wybrać Tworzenie gier vs Tworzenie aplikacji, co wybierzesz?

text: Dzisiaj zostałem zapytany, czy chcę zajmować się tworzeniem gier czy tworzeniem aplikacji. Nigdy nie myślałem, że kiedykolwiek będę zarabiał na gry. Spróbuję może przez kilka tygodni, ale jakie są Twoje przemyślenia na ten temat? PS aplikacje lub gry będą przeznaczone na urządzenia mobilne.


title: Czy rozwój zawodowy powinien odbywać się w czasie firmy?

text: Jako początkujący programista w niepełnym wymiarze godzin w małej firmie konsultingowej, staram się zorganizować czas na pogłębienie własnej wiedzy na temat tworzenia oprogramowania - czy to czytanie książki, nadążanie za popularnymi pytaniami na StackOverflow, badanie technologii, którą Korzystasz z dogłębnej wiedzy lub śledzisz pierwszą stronę Hacker News. Widzę rezultaty, jakie przyniosły mi czas poświęcony na naukę, ale wyliczanie i demonstrowanie umiejętności i wiedzy zdobytej w ramach rozwoju zawodowego jest trudne. Firma nie ma żadnej zdefiniowanej polityki PD, a podczas pracy dla konsultantów istnieje duża presja, aby coś dostarczono _teraz!_. Sprawdziłem, co robią moi współpracownicy i nie wydają się poświęcać czasu na samodoskonalenie; po prostu pracują nad podanymi problemami, wyszukując określone odwołania MSDN, próbki kodu i tym podobne, gdy ich potrzebują. Zdaję sobie sprawę, że polityka PD będzie się różnić w zależności od firmy o różnej wielkości i kulturze, a firma taka jak moja jest prawdopodobnie nieco skrajnym przypadkiem. Chciałbym usłyszeć opinie i doświadczenia bardziej doświadczonych programistów; zwłaszcza tych, którzy muszą dokonywać wyborów dotyczących polityki PD w swoim zespole lub firmie. Chciałbym również dowiedzieć się o bardziej radykalnych podejściach do PD, nawet jeśli są one całkowicie obecne; zawsze ciekawie jest zobaczyć, czego próbują inni ludzie. Nie do końca podsumowanie, ale o to, o co staram się zapytać: * Czy jest powszechne lub zalecane, aby firmy przydzielały czas na PD? * Czyja jest odpowiedzialność za aktualizowanie wiedzy i umiejętności programisty? * Czy harmonogram pracy w niepełnym wymiarze godzin powinien inspirować niższy stosunek czasu PD do pracy? * W jaki sposób programista może pokazać współpracownikom, którzy nie są programistami, że czytanie blogów i książek jest produktywne? * Czy czytanie blogów i książek faktycznie jest produktywne? (mile widziane referencje) * Czy pisanie blogów jest skutecznym sposobem PD? (ostatni temat w Hacker News) Jest to rodzaj szerokiego pytania, ponieważ nie wiem dokładnie, jakie pytania muszę tutaj zadać, więc wszelkie przemyślenia na temat istotnych kwestii, których nie poruszyłem, są mile widziane.


title: Zapominam o rzeczach, które zrobiłem wcześniej i jak to naprawić

text: Nie jestem pewien, czy to tylko ja, czy to jest powszechne w naszej dziedzinie. Miniony rok był dla mnie trochę intensywny. Uczyłem się kilku różnych technologii, aby wykonać pewne zadania i czasami musiałem całkowicie skupić się na tej jednej nowej technologii, której się uczę. To, co zauważyłem, kiedy wróciłem do używania wszystkiego razem w pełnym projekcie, to to, że zapomniałem, jak robić rzeczy, które już wiedziałem, zanim zacząłem koncentrować się na nauce tej innej nowej technologii. Czasami okazuje się, że zapominam nawet o prostych rzeczach, takich jak składnia wybierania div w jquery, że muszę wrócić do starych plików, aby szybko zerknąć. Czasami mogę kodować coś, co rozpoznałem, że zrobiłem wcześniej w innym projekcie, ale nie do końca pamiętam, do którego projektu to było, więc muszę przejść przez kilka projektów i przejrzeć kod, aby spróbować zapamiętać, gdzie to zrobiłem. Jakie wymyśliłeś sposoby, aby zapobiec zapomnieniu rzeczy, które zrobiłeś wcześniej, lub aby łatwo uzyskać dostęp do kodu, który napisałeś w przeszłości?


title: Czy zawsze źle jest optymalizować przed profilowaniem?

text: Widzę mantrę „profilowania przed optymalizacją” powtarzaną raz po raz tutaj, na SO i gdzie indziej. Chociaż z pewnością korzystam z narzędzi do profilowania, wyniki tylko od czasu do czasu dziwią mnie. Wygląda na to, że profiler często podaje te same informacje, które można rozsądnie wywnioskować, znając prawdopodobną ścieżkę wykonania programu, rozumiejąc, jak działa twoja architektura i mając dobre pojęcie o tym, jakie techniki optymalizacji może kompilator zatrudnić dla Ciebie. Z tego powodu generalnie stwierdzam, że kiedy się rozwijam, widzę, że obszary kodu, które wyczuwam, będą wąskimi gardłami (często podczas pisania kodu myślę sobie „hej, to będzie krytyczną częścią kodu i musi być szybki, ale najpierw użyję wolniejszej implementacji, aby udowodnić koncepcję, a następnie zoptymalizuję ją później”) i po prostu idę dalej i optymalizuję te obszary, zanim zabiorę się za dużo profilowania. Czy to naprawdę taka zła praktyka, czy to tylko naturalny wynik zdobywania doświadczenia w optymalizacji? **Edytuj** Chciałem tylko zaznaczyć, że _ja_ używam profilerów, zastanawiam się tylko, jak źle jest uważać, że najpierw należy zerwać nisko wiszące owoce, zamiast czekać, aż profiler udowodni, że coś jest powolne. **Edytuj 2** Dziękujemy wszystkim za dotychczasowe spostrzeżenia. Ludzie napisali wiele dobrych komentarzy. Muszę powiedzieć, że nadal mam mieszane uczucia co do niektórych porad, ale dało mi to dużo wglądu w to, dlaczego ludzie wypowiadają się.


title: Jak radzić sobie z Team Leadem, który nie lubi ekstremalnego programowania?

text: Z http://en.wikipedia.org/wiki/Extreme_programming Extreme Programming to metodologia tworzenia oprogramowania, która ma na celu poprawę jakości oprogramowania i reagowanie na zmieniające się wymagania klientów. Mój kierownik zespołu nie lubi programowania ekstremalnego, ponieważ * ukończenie projektu może zająć więcej czasu. * Zwiększa koszt początkowy (20% lub więcej). * Ciągła interakcja jest męcząca. * Testy jednostkowe są trudne dla baz danych, rozproszonych i GUI. Czy są jakieś dowody na poparcie tych twierdzeń o ekstremalnym programowaniu, czy są to wymysły? Jakie argumenty można wysunąć, gdy ekstremalne programowanie może rzeczywiście być szkodliwe dla zespołu lub projektu?


title: Czy istnieje sposób na aktualizację bazy danych klienta bez przeglądania wszystkich jego wrażliwych danych?

text: Klient poprosił mnie o aktualizację swojej aplikacji internetowej. W ostatniej chwili wyraził troskę o umożliwienie mi dostępu do swojej bazy danych (a tym samym do poufnych informacji o kliencie), ponieważ pracujemy ze sobą po raz pierwszy, a on mnie nie zna. Z tego co wiem, nie ma możliwości pracy nad tym projektem bez pełnego dostępu do jego bazy danych. Po pierwsze muszę dokonać aktualizacji bazy danych (dodawanie kolumn, tworzenie nowych tabel itp.). Muszę przetestować aplikację na żywo po jej zaktualizowaniu i obawiam się, że nie będę mieć pełnego dostępu do bazy danych. Czy mogę pracować nad jego projektem bez dostępu do jego poufnych informacji? Wielkie dzięki


title: Jaki jest najlepszy sposób pracy z DAL i BLL?

text: Obecnie przeprowadzam refaktoryzację mojej biblioteki DLL i BLL i potrzebuję porady, jaki jest najlepszy sposób pracy z DAL i BLL. Moje obecne rozwiązanie wygląda następująco: // klasa DAL składa się tylko z zapytań SQL i zwraca wynik SQL class DAL { public function isBrandInList($brand) { $sql ="SELECT id FROM sl_label WHERE name = '$brand'"; $to->zapytanie($sql); zwróć $this->query_result; } } // LOKACJE LOGICZNE przetworzy dane z DAL i zwróci dane do dowolnej funkcji zwanej funkcją LOGIKA BLOKOWANA. class BLL extends DAL { funkcja publiczna isBrandInList($name) { $result = parent::isBrandInList($name); if(mysql_num_rows($result) > 0) { while ($row = mysql_fetch_array($result)) { return $row['status']; } } else { return false; } } } Nie sądzę, że jest to najlepszy sposób pracy, a mój plik DAL pobiera ponad 1000 linii kodu i ma ponad 50 różnych klas. Robi się bałagan. Planuję to ulepszyć i zacząć używać `MySQLi`/`PDO` oraz przygotowanych instrukcji. Czy ktoś może mi powiedzieć, jak mogę poprawić sposób pisania DAL i BLL? Czy powinienem utworzyć podklasę w DAL, np. jedna podklasa dla osoby i jedna podklasa dla marki? Wygooglowałem i spojrzałem na różne wzorce projektowe. Większość z nich jest dla .NET i nie ma dobrych przykładów. A może jakieś linki do dobrych artykułów? Te, które znalazłem, nie były najlepsze. **AKTUALIZACJA** To jest przykład tego, jak robię to dzisiaj. Poniższy kod to tylko fragmenty, a nie cały kod. //search.php require_once('classes/search.class.php'); $search = nowe wyszukiwanie($_GET); $result = $search->search(); echo $wynik; //search.class.php include('classes/bll.class.php'); class Search rozszerza BLL { private $store_term; funkcja publiczna __construct($term) { parent::__construct(); $this->get_search_term($term); } funkcja prywatna get_search_term($term) {} funkcja publiczna search() { if(!empty($this->store_term)) $result = $this->search_store(); zwróć $wynik; } funkcja prywatna search_store() { $result = parent::getStoresBySearch($this->store_term); $html = 'Kod do budowania listy wyników wyszukiwania HTML tutaj'; zwróć $html; } //bll.class.php klasa BLL rozszerza DAL { funkcja publiczna __construct() { parent::__construct(); } funkcja public getBrandsBySearch($term) { $result = parent::getBrandsBySearch(mysql_real_escape_string($term)); zwróć $wynik; } } // dal.class.php class DAL extends pdo { public function __construct($cfg_file = 'sl.config') { parent::__construct($this->dsn, $this->user, $this->pass ); } funkcja public getStoresBySearch($term) { $term = $term.'%'; $sql = "WYBIERZ bla bla bla"; $sth = rodzic::przygotuj($sql); $sth->setFetchMode(PDO::FETCH_ASSOC); $sth->execute(array(':term'=>$term)); $wynik = $sth->pobierzWszystko(); zwróć $wynik; } } Mam przeczucie, że może to nie być najlepszy sposób na kodowanie?


title: xpath a DOM API

text: Niedawno wpadłem na xpath podczas pisania skryptu w stylu „małpa małpa” i od razu się zakochałem. Nie zrobiłem jeszcze żadnego testu porównawczego (wkrótce), ale według kilku źródeł, które przeczytałem, xpath jest szybszy niż użycie API DOM. Po sprawdzeniu wewnętrznych części kilku bibliotek (Swizzle i jQuery) zauważyłem, że ani nie używa xpath, ale korzysta z API DOM. Moje pytanie brzmi: czy jest tu coś, czego nie widzę, dlaczego te biblioteki nie zmieniły się, aby używać xpath (lub zostały napisane po raz pierwszy przy użyciu xpath zamiast API DOM), czy po prostu xpath po prostu tego nie zrobił już się przyjęło?


title: wrap mysql API do użytku gui

text: Jakiś czas temu napisałem narzędzie wiersza poleceń, które łączy się z MySQL i za pomocą serii poleceń robi wiele dobrych rzeczy. Pierwotnie miał być używany przeze mnie i być może przez innych programistów. Teraz jednak jest prawdopodobne, że nie-deweloperzy w pewnym momencie będą używać tego samego narzędzia, a przynajmniej jego części. Biorąc pod uwagę, że wiele osób denerwuje się w momencie, gdy wypowiadasz zakazane słowa śmierci _terminal_ lub _CLI_ , postanowiłem napisać podstawowy GUI przy użyciu GTK+. Z oczywistych powodów utrzymywałem rzeczy ładnie oddzielone i uwidoczniłem tylko te funkcje, które narzędzie GUI musi obsługiwać. Ale tutaj wpadłem w kłopoty. Mój kod wykorzystuje nieznaną liczbę przygotowanych instrukcji. Do tej pory przekazywałem je od funkcji do funkcji. Oczywiście nie chcę tego robić w kodzie GUI. (Wiem, wystarczy, że robię to w wersji CLI, i chcę też przepisać fragmenty tego kodu). Do tej pory wymyśliłem 3 sposoby na naprawienie tego. W efekcie muszę napisać wrapper-API wokół tych bitów i śrub interfejsu API MySQL, które muszą zostać ujawnione. Ale co jest najlepsze? Jakie są wady i zalety każdego podejścia? Czy brakuje mi oczywistego czwartego podejścia? Oto opcje, które obecnie rozważam: * napisz prosty nagłówek z typedefs i trochę makr (`MAKE_STMT("Moje zapytanie")` i poprzedź wszystkie typy związane z API MySQL za pomocą `DB_` lub coś w tym rodzaju .Nie podoba mi się to, proste, ponieważ API GTK+ jest dość podobne i sprawia, że kod wygląda, przynajmniej na moje oko, trochę bałaganiarski.To też tak naprawdę nie rozwiązuje problemu, ale raczej go maskuje. * Użyj globalnej tablicy skrótów lub prostej tablicy w kodzie mysql i przydziel pamięć dla każdej przygotowanej instrukcji, której potrzebuję, i zwróć jej przesunięcie/hasz.Mogę następnie przekazać to w moim kodzie CLI/GUI i użyć funkcji takiej jak `execute_stmt(int offset, struct param_list *params);` które może następnie użyć `offset`. Jest to podejście, którego prawdopodobnie użyję ATM, ponieważ musi to być najprostszy sposób na zachowanie db- powiązane dane z kodu front-endu * użyj `void *` w kodzie front-endu i makr, które rzutują i wywołują odpowiednie funkcje we właściwym czasie. aby użyć tego podejścia, ale przynajmniej mogę sprawdzić wskaźniki `NULL` i nie zostawiać raportowania/obsługi błędów do kodu DB, który nie wie, czy program działa w trybie CLI czy GUI (i chciałbym obsługi błędów inaczej w obu przypadkach). * Być może ostatnią alternatywą, którą obecnie robię, biorąc pod uwagę, że nie zamierzam przerabiać kodu CLI, jest użycie oddzielnych plików .h. Możliwe dalsze rozszerzenie tego do 3 plików .c: 1 dla typowych funkcji, 1 dla kodu specyficznego dla CLI i 1 dla kodu GUI. Prawdopodobnie skończę z czymś takim, ale pozostaje pytanie: jaki jest najlepszy sposób, aby trzymać kod związany z MySQL jak najdalej od kodu interfejsu użytkownika?


title: Jak mogę przejść od bycia niezależnym programistą PHP do pracy w firmie?

text: Od około trzech lat jestem niezależnym twórcą stron internetowych, głównie zajmującym się nie-frameworkowymi projektami PHP. Zastanawiam się nad przejściem do pracy opartej na pracodawcy, ale nie jestem pewien, czego się ode mnie oczekuje i jak przygotować się do zmiany. Na jakich technologiach, koncepcjach i wzorach powinienem się skoncentrować, aby nie upaść i nie spalić się po opuszczeniu życia freelancera? Co mogę zrobić, aby przygotować się do rozwoju w zespole?


title: Czy SOA jako koncepcja ma funkcjonować w kodzie, czy między maszynami w sieci?

text: Jak brzmi pytanie: Czy podczas wdrażania „SOA” jest to koncepcja przeznaczona do komunikacji między systemami w sieci, czy też jest to koncepcja działająca w języku jako wzorzec?


title: Ile dokumentacji wystarczy?

text: Ile dokumentacji technicznej (dla przyszłych programistów) _wystarczy_? Czy istnieje odpowiedni stosunek między kodowaniem godzin a dokumentowaniem godzin? Papadimoulis twierdzi, że powinieneś > stworzyć najmniejszą ilość dokumentacji potrzebnej do > jak największego > zrozumienia. Czy to dobra wskazówka, czy są jakieś konkretne rzeczy, które powinienem tworzyć?


title: Czy istnieje jakiś wzorzec projektowy z wyjątkiem MVC dla sieci?

text: Chcę wiedzieć, czy oprócz MVC istnieją jakieś wzorce projektowe dla sieci? Wiem, że istnieją wzorce projektowe, takie jak: Registry, Observer, Factory, ActiveRecord,... i MVC zestaw innych wzorców projektowych i struktury folderów. Czy istnieje wzorzec projektowy, taki jak MVC to zestaw innych wzorców projektowych? Edycja: moim językiem programowania jest PHP.


title: Jak robisz slajdy do rozmów programistycznych?

text: Wygłosiłem ostatnio kilka prelekcji i nie znalazłem dobrego sposobu na zrobienie slajdów. Oto kilka pożądanych cech programowania slajdów: * Są to slajdy. Standardowy bufor emacs tego nie zrobi. * Mają podświetlanie składni kodu. * Obsługują formatowanie _podstawowe_, takie jak rozmiar i kolor czcionki oraz punktory. * Nie są potrzebne żadne fantazyjne animacje. Jedyną animacją, której pragnę, jest pojawianie się pocisków jeden po drugim. * EDYCJA: Powinno być łatwe przełączanie się za pomocą Alt-Tab tam iz powrotem od terminala do slajdów bez niszczenia sekwencji/pozycji prezentacji. Do tej pory rozważałem: * Microsoft Office - wykluczone dla użytkowników Linuksa. * OpenOffice.org - za dużo jak na moje potrzeby, formatowanie/podświetlanie kodu musi być wykonane zewnętrznie i wklejone. Plusem jest obsługa punktorów, animacji punkt po punkcie i formatowania czcionek. Według mojej wiedzy nie ma mowy o tym, że alt-tab do terminala niszczy tryb i pozycję prezentacji. * Emacs - Obsługuje całe formatowanie kodu, ale nie znalazłem trybu _slides_, który pozwalałby mi przejść z jednego fragmentu do drugiego. * HTML5 - kiedyś robiłem slajdy używając html5rocks jako szablonu. Obsługuje wszystko, ale jest zbyt trudne i czasochłonne, aby „zrzucić” kilka slajdów przed drobną rozmową. Również funkcje tylko html5 mogą nie działać w przeglądarce zainstalowanej na podium komputera. Jakieś sugestie dotyczące programów/technik tworzenia prezentacji zorientowanych na kod? EDYCJA: Myślę, że S5 i Latex są najbardziej zgodne z duchem tego, czego szukam, ale to nie znaczy, że inne sugestie (w tym nieużywanie slajdów w ogóle) są „niewłaściwe”.


title: Jak przekonać szefa do przejścia na OOP PHP?

text: Od miesięcy próbujemy przekonać mojego szefa do przejścia na OOP php, ale za każdym razem wyciąga swoje wcześniejsze doświadczenia z programowaniem i przekonuje nas w inny sposób. muszę rozmawiać z nim jak szef, powiedz mi, jak go przekonać? Muszę sprawić, by zrozumiał długofalowe korzyści, a także korzyści finansowe. Jednym z argumentów, których użył dzisiaj, było to, że nie jest to optymalne pod względem wydajności, na przykład za każdym razem, gdy trzeba nawiązać połączenie z bazą danych, za każdym razem trzeba utworzyć nowy obiekt. Proszę pomóż mi.


title: Ile powinienem wiedzieć przed szukaniem stażu? (samouk z wykształceniem matematycznym)

text: Jedyne formalne wykształcenie, jakie otrzymałem, to 2,5 roku specjalizacji z czystej matematyki z aplikacjami komputerowymi (brzmi jak oksymoron, ale w zasadzie jest to czysta matematyka z niektórymi kursami z algorytmów, dyskretna matematyka z niektórymi aplikacjami CS i trochę kryptografii z teorią liczb) . Zrezygnowałem (z powodów osobistych, a nie akademickich). Nie jestem nawet pewien, czy niekompletny BS. Stopień warto wspomnieć w CV. Odkąd w tym roku skończyłem szkołę, skupiam się na nauce programowania back-endowego (PHP, MySQL, CSS/HTML; bawiłem się tylko js). Spędzam cały dzień czekając na moment, w którym będę mógł usiąść przy komputerze i robić to, co kocham... bez względu na wynagrodzenie, skorzystałbym z okazji rzucenia pracy i zrobienia czegoś związanego z programowaniem sieciowym. Moją jedyną obawą jest to, że z braku formalnego wykształcenia/doradcy nie mam pojęcia, czego oczekuje się od stażysty. Przepracowałem wszystkie podstawowe „standardowe” samouczki (formularze, budowanie bazy danych MySQL, zapytania itp.). Czytam teraz Code Complete, algebrę relacyjną, kod Wordpress, uczę się podstaw języka niskiego poziomu (C, rozumienie wskaźników, pamięć i tak dalej). Buduję własne ramy tematyczne WP od podstaw (z myślą o ponownym wykorzystaniu i czytelności) ... ale obserwując ludzi tutaj w SE, jasne jest, że wiem bardzo mało. To dość onieśmielające. ** Ile należy wiedzieć przed rozważeniem pierwszego stażu? Na jakim poziomie powinienem być i skąd będę wiedział, kiedy tam jestem?** Na co warto, sądząc po „Macierzach Kompetencji Programistów”, to właśnie jestem w następujących kategoriach: * Informatyka: Znam wszystkie poziomy 0 i jeden poziom 1. * Inżynieria oprogramowania: dwa poziomy pierwszego i jeden zerowy (cóż, tak jakby: znam tylko git i niewiele). * Programowanie: pięć poziomów 1, cztery poziomy 2, trzy poziomy 3, trzy zer. * Doświadczenie: trzy zerki, jeden poziom 1. * Wiedza: pięć poziomów 1, jedno 0, jeden 3. Więc w zasadzie głównie '1' i '0'... naprawdę niski poziom.


title: Czy kiedykolwiek znalazłeś błąd, którego nie możesz rozwiązać? Co robisz w takim przypadku?

text: Pracujemy nad hostowanym CMS, takim jak WordPress.com. Kiedy tworzyliśmy **moduł Galerii Obrazów** , zbadaliśmy wiele bibliotek jQuery, takich jak **easySlider** , **jCarousel** i **Nivo Slider**. Ale każdy z nich miał jakiś dziwny błąd w różnych przeglądarkach. Poświęciliśmy prawie 2 dni na znalezienie źródła błędu. Ale nie mogliśmy znaleźć źródła problemu. Najważniejszym powodem może być to, że nasz system jest teraz złożony. Oto problemy: 1. Przesuwanie easySlider nie było przejściowe i było nagłe. 2. jCarousel przesuwały obrazy o połowę do ich szerokości w IE. 3. Nivo Slider nie ukrywał ostatnio wyświetlanego obrazu, przez co nie nadawał się do galerii obrazów z niejednorodnymi obrazami. Właśnie doszliśmy do wniosku, że musimy znaleźć bibliotekę, która może działać bez błędów, przeszukaliśmy i znaleźliśmy jedną. Ale moje pytanie brzmi, czy to normalne w przypadku dużych projektów, że nie można znaleźć źródła błędu, a zamiast tego znajduje się on metodą prób i błędów, a ty po prostu uciekasz przed błędem? Masz takie doświadczenie?


title: C++ do przyjaciela czy nie do przyjaciela

text: W tym semestrze mam na studiach programowanie obiektowe z kursem c++ i uczyliśmy się funkcji zaprzyjaźnionych. Instynktownie nie lubię ich za to, że potrafią ominąć zabezpieczenia zapewniane przez enkapsulację i ukrywanie danych. Przeczytałem kilka artykułów w Internecie i niektórzy uważali, że to dobry pomysł z pewnymi uzasadnionymi zastosowaniami. Co powiedziałby ekspert OOP o funkcjach przyjaciela w C++? Czy powinienem go po prostu przejrzeć, czy powinienem dowiedzieć się o nim więcej?


title: Czy PHP nadaje się do pobierania dużych ilości danych?

text: Czy PHP nadaje się do pobierania dużych ilości danych, zwykle przez cron? Czy powinienem się martwić o zużycie pamięci, gdy używam PHP do pobierania wielu plików zip?


title: Zrozumienie ręcznie pisanych leksykonów

text: Zamierzam stworzyć kompilator dla C (C99; posiadam standardy PDF), napisany w C (rysunek go) i sprawdzenie, jak działają kompilatory w Wikipedii, wiele mi powiedziało. Jednak po przeczytaniu lekserów wprawił mnie w zakłopotanie. Strona Wikipedii stwierdza, że: > GNU Compiler Collection (gcc) używa ręcznie pisanych lekserów. Próbowałem googlować, co za ręcznie pisany leksyk i nie wymyśliłem niczego poza „stworzeniem schematu opisującego, jak powinien działać”, jednak czy nie tak powinno wyglądać całe tworzenie oprogramowania? Więc moje pytanie brzmi: „Co to jest leksykarz pisany odręcznie?”


title: Jak działa losowe tasowanie w Pythonie?

text: Jak shuffle from random działa w Pythonie? Pytam, bo działa bardzo szybko. Kiedy próbuję napisać shuffle, działa to 1 minutę dla elementu 10^6, ale Python shuffle robi to w 8 sekund?


title: Jak prawidłowo nauczyć się ASP.NET MVC?

text: Mam pytanie i może niektórzy z was uznają, że to kiepskie, ale mam nadzieję, że ktoś naprowadzi mnie na właściwe tory. Więc programuję już od dłuższego czasu. Zacząłem programować, gdy miałem około 13 lat w Delphi, ale kiedy miałem około 17 lat, przerzuciłem się na C# i teraz naprawdę lubię w nim programować, głównie dlatego, że jego składnia jest dla mnie bardzo atrakcyjna, a kod zarządzany jest bardzo Dobry. Więc wszystko było dobre i zabawne, ale potem miałem kilka ofert pracy, które oczywiście wziąłem, ale problem z nimi polega na tym, że wszystkie dotyczą programowania internetowego. I musiałem nauczyć się podstaw PHP i MVC. I poniekąd zrobiłem to podczas budowania aplikacji z wykorzystaniem CI i frameworka Kohana. Ale chcę budować strony internetowe przy użyciu ASP.NET, ponieważ lubię C# dużo, dużo bardziej niż PHP. **TL;DR** Chcę poznać ASP.NET MVC, ale nie wiem od czego zacząć. To, od czego chcę zacząć, to zbudować prosty CMS. Ale nie wiem od czego zacząć. Czy używam tej samej logiki co PHP? Czego używam do połączeń DB? A także, jeśli planuję hostować coś, co jest kompilowane za pomocą ASP.NET MVC3 u dostawcy hostingu, czy muszę kupić jakąś licencję?


title: W jaki sposób uwzględniasz wsparcie w swoim sprincie?

text: Nasza firma przeniosła się niedawno na Scrum, gdzie powstał produkt, który został prawie zakodowany przez jedną osobę (Joe). Mamy wsparcie dla naszych obecnych klientów, których staramy się zintegrować z naszym procesem. Na razie wypróbowaliśmy następujące podejście: * Każdego tygodnia przeprowadzamy rotację osoby odpowiedzialnej. * Osoba odpowiedzialna za tydzień może poświęcić na wsparcie do 8 godzin. Ale nam się to nie udało: * Joe zawsze zajmuje się wsparciem, ponieważ lepiej zna kod i zawsze szybciej mu to robi, niż wyjaśnia. * My (reszta z nas) koncentrujemy się na tym, co jest na tablicy Sprint, czyli na nowych historiach, zamiast na zadaniach wsparcia. * Joe ma za dużo pracy, nie może sam poradzić sobie z całym wsparciem, ponieważ musi robić rzeczy poza Sprintem. Czy spotkałeś już podobną sytuację? Jak udało ci się z tego wyjść? Uwaga: W tej chwili nie możemy poświęcić ani jednej osoby na wsparcie. Mamy nadzieję, że w przyszłości.


title: Co się stanie, jeśli zamknę InputStream, który jest przekazywany jako argument?

text: Przeczytałem, że Java jest przekazywana po wartości i czytałem o tym w tym pytaniu na StackOverflow, ale nadal jestem trochę zdezorientowany, jeśli chodzi o metody close() lub shutdown() w różnych klasach. Chcę wiedzieć, załóżmy, że robię to: public Constructor(){ if(isProceeding){ InputStream iStream = new InputStream(); ProcessStuff(iStream); } } public void processStuff(InputStream stream){ //do rzeczy stream.close(); } Czy zmienna iStream faktycznie zostaje zamknięta w metodzie processStuff(), czy jej kopia zostaje zamknięta, a sam iStream nadal pozostaje otwarty?


title: Algorytm oceny książek: Względna percepcja

text: Dlatego rozwijam tę aplikację do oceniania książek (pomyśl jak IMDB dla książek) przy użyciu relacyjnej bazy danych. **Stwierdzenie problemu :** Powiedzmy, że książka „**A**” zasługuje na 8,5 w sensie absolutnym. W przypadku, gdy A jest najlepszą książką, jaką kiedykolwiek widziałem, najprawdopodobniej ocenię ją > 9,5, podczas gdy dla kogoś innego może to być po prostu przeciętna książka, więc ocenią ją mniej (powiedzmy około 8). Załóżmy, że 4 takich ludzi ocenia to na 8. Jeśli jest 10 takich jak ja (którzy nigdy nie czytali świetnej literatury) i wszyscy oceniają to na 9,5-10. To skutecznie sprawi, że jego skumulowana ocena będzie większa niż 9 (9,5*10 + 8*4) / 14 = 9,1, podczas gdy potrzebowaliśmy wyniku na 8,5 ... Jak mogę zająć się (znormalizować) to nastawienie z powodu nieprawidłowego postrzegania osoby. **MyProposedSolution :** Oto jeden ze sposobów rozwiązania tego problemu. Możemy mieć zmienną **Współczynnik_Lit**, która mówi nam, ile wiedzy na temat literatury posiada użytkownik. Jeśli ja oceniam " **A** "(książkę) 9,5 a osoba " **X** " ocenia ją na 8, to musi czytać książki znacznie lepiej niż " **A** " i stąd jego współczynnik Lit_ powinien wynosić wyższy. A potem możemy znormalizować oceny zgodnie ze współczynnikiem Lit_użytkownika. Czy może istnieć lepszy algorytm/rozwiązanie dla tego samego?


title: Czy to prawda, że aplety Java mogą wykonywać akcelerację sprzętową, podczas gdy Flash nie?

text: Mam nadzieję, że możesz potwierdzić lub obalić, czy dobrze to rozumiem. Wiem na pewno, że aplety Java mogą mieć akcelerację sprzętową i zastanawiam się, czy jest to jedyny znany sposób na akcelerację sprzętową grafiki na stronach internetowych, czy jest inny sposób?


title: Programowanie funkcjonalne – czy jego znajomość pomaga potencjalnym kandydatom do pracy?

text: Głównym językiem, którym aktualnie się posługuję, jest C# iz nim czuję się najbardziej komfortowo. Jednak zacząłem bawić się w F# i Haskell i naprawdę lubię te języki. Chciałbym z czasem poprawić swoje umiejętności w jednym z tych języków, ponieważ używanie ich jest dla mnie naprawdę zabawne (w przeciwieństwie do Rubiego, który jest reklamowany jako „zabawa”, po prostu nie rozumiem tego, gdzie jest zabawa, ale dygresja...). Moje pytanie jest skierowane do osób, które zatrudniły/rozmawiały na stanowiska programistyczne (młodszy/średni poziom): jeśli widzisz w CV funkcjonalny język programowania, czy wpływa on na Twoją opinię (pozytywną lub negatywną) o tym kandydacie? Moje uzasadnienie dla wiedzy z programowania funkcjonalnego wpływającej na pogląd kandydata jest takie, że może ona pokazać, że kandydat może dostosować się do różnych metodologii i przyjąć wielowymiarowe podejście do problemów, a nie „takie samo stare podejście OO”. (Może to być poza bazą, daj mi znać, jeśli to założenie również jest!)


title: Jak sprawiłeś, że testowanie jednostkowe stało się przyjemniejsze?

text: Jeśli zawsze uwielbiałeś testowanie jednostkowe, dobrze dla Ciebie! Ale dla nieszczęśników, którzy nie urodzili się z upodobaniem do tego, jak udało ci się uczynić to zadanie przyjemniejszym? To nie jest pytanie „jaki jest właściwy sposób na test jednostkowy”. Po prostu chcę poznać małe osobiste sztuczki, które zmniejszają nudę (śmiem twierdzić) pisania testów jednostkowych.


title: Wchodzenie do JEE

text: Jestem autorem tego pytania sprzed kilku miesięcy: Java, ale bez doświadczenia z JEE Myślałem o edycji tego pytania, ponieważ jest to trochę kontynuacja - ale w rzeczywistości jest to wystarczająco inny kontekst, który można zadać osobno. Jeśli to zrobię, odpowiedzi będą się krzyżować, a wątek stanie się bałaganiarski. W każdym razie, w zasadzie, w ciągu ostatnich kilku miesięcy zrobiłem dość intensywny przegląd mojej wiedzy na temat JEE. Pracowałem nad książką, budowałem aplikacje od podstaw itp. Przynajmniej jeśli chodzi o podstawową wbudowaną aplikację Servlets/JSP CRUD, mogę powiedzieć, że teraz wiem, jak działa aplikacja internetowa JEE, jak wszystkie podłącza się hydraulikę i konfigurację itp. I mam o wiele pełniejsze zrozumienie modelu JEE w ogóle niż wcześniej. Oto moje pytanie: mam nadzieję, że zajmę się JEE (prawdopodobnie tworzeniem stron internetowych, ale najlepiej back-endem opartym na danych) i zastanawiam się, czy ta wiedza jest wystarczająca, aby zacząć aplikować o pracę w przestrzeni JEE. Otrzymuję sprzeczne raporty: Niektórzy twierdzą, że dobre ogólne umiejętności programistyczne + silna podstawowa Java to wszystko, co jest potrzebne, a inni twierdzą, że naprawdę potrzebujesz dużego doświadczenia w konkretnych frameworkach i technologiach związanych z JEE dla danych ról JEE. Ciężko jest dobrze przeczytać, co jest słuszne - i nie chcę wyglądać na ignoranta, ubiegając się o rzeczy, na które wyraźnie nie jestem gotowy. Mam bardzo silną jądrową Javę i prawie całą dekadę doświadczenia w programowaniu komercyjnym, ale naprawdę nie mogę twierdzić, że jest to mocny komercyjny JEE (tylko Swing, aplety i wiele, wiele rdzenia Java). **Uwaga** : Jeśli to pomaga, mogę wspomnieć, że nie mam nic przeciwko podjęciu pracy o krok poniżej tego, czego można się spodziewać z moim ogólnym poziomem doświadczenia komercyjnego - aby dostać się do JEE. Wszystko to jest spowodowane głównie tym, że rynek rozwoju apletów i Swing jest w tej chwili prawie martwy i muszę poszerzyć moje doświadczenie w ekosystemie Java.


title: Aplikacje kakaowe: użyć okna dialogowego preferencji użytkownika lub aplikacji preferencji systemowych?

text: Pisząc **_Cocoa Applications_** dla **_MacOSX_** , masz do wyboru albo niestandardowe okno dialogowe preferencji, albo użyć **_Settings.app_** do zarządzania swoimi preferencjami. Jeśli chodzi o funkcjonalność, nie ma między nimi żadnej różnicy (poza tym, że preferencje w Settigns.app są dostępne, gdy Twoja aplikacja nie jest uruchomiona). Jakiego rozwiązania używasz i dlaczego?


title: Czym jest spójność logiczna i dlaczego jest zła lub niepożądana?

text: Ze strony c2wiki na temat sprzężenia i spójności: > Spójność (współzależność w module) Nazwy siły/poziomu: (od gorszego > do lepszego, wysoka spójność jest dobra) > > * Zbieżna spójność: (Najgorsze) Elementy modułu są niepowiązane > * ** Spójność logiczna : Elementy wykonują podobne czynności jak wybrane > z modułu zewnętrznego, tj. przez flagę, która wybiera operację do wykonania (patrz > także CommandObject). np. ciało funkcji to jeden wielki if-else/włącz > flaga operacji** > * Spójność czasowa : operacje związane tylko z ogólnym czasem wykonania > (tj. inicjalizacja() lub FatalErrorShutdown?()) > * Spójność proceduralna : Elementy zaangażowane w różne, ale sekwencyjne > działania, każda na innych danych (zwykle może być trywialnie podzielona na > wiele modułów wzdłuż liniowych granic sekwencji) > * Spójność komunikacyjna: niepowiązane operacje, z wyjątkiem tych samych danych lub danych wejściowych > * Spójność sekwencyjna: operacje na tych samych danych w zamówienie; > dane wyjściowe z jednej funkcji są danymi wejściowymi do następnej (potoku) > * Spójność informacyjna: moduł wykonuje szereg akcji, każda z > własnym punktem wejścia, z niezależnym kodem dla każdej akcji, wszystkie wykonywane na tej samej strukturze danych. Zasadniczo implementacja abstrakcyjnego typu data >. czyli zdefiniuj strukturę tabeli_regionu_sprzedaży i jej operatorów: > init_table(), update_table(), print_table() > * Spójność funkcjonalna : wszystkie elementy składają się na jedno, dobrze zdefiniowane > zadanie, czyli funkcję, która wykonuje dokładnie jedną operację > get_engine_temperature( ), add_sales_tax() > (podkreślenie moje). Nie do końca rozumiem definicję spójności logicznej. Moje pytania to: * **co to jest spójność logiczna?** * **Dlaczego ma tak złą reputację (drugi najgorszy rodzaj spójności)?**


title: Czy technologia Intellisense jest szybsza w programie Visual Studio 2012 w porównaniu z programem Visual Studio 2010 dla projektów C++?

text: Kilka miesięcy temu przeszliśmy na VS2010 z VS2003 i jest wiele ulepszeń. Ale szybkość Intellisense nie jest jednym z nich (chociaż generuje wyniki wyższej jakości, co jest świetne). Przeczytałem, że Intellisense i system pomocy MSDN zostały ulepszone w VS2012. Ciekawe, czy faktycznie jest szybciej? Jedynymi danymi, jakie udało mi się znaleźć, były wykresy wczesnego wydania (VS2011). Dla przypomnienia używam waniliowej instalacji VS2010 z dodatkiem SP1 na Windows 7 SP1 (x64). Brak uruchomionych wtyczek i dodatków. Czego konkretnie szukam: * Czy poprawiła się szybkość autouzupełniania intellisense? * Czy poprawiła się szybkość klawisza F12 (definicja GoTo)? Odpowiedzi na te pytania pomogą w ustaleniu, czy VS2012 jest wart pieniędzy na aktualizację w tej chwili, ponieważ powolność Intellisense byłaby jedynym głównym powodem aktualizacji. Chciałbym również wiedzieć, czy system pomocy się poprawił. Obecnie korzystam z pomocy MSDN z VS2008SP1, ponieważ ma filtrowanie i jest szybszy.


title: Jak długi jest typowy nowoczesny potok mikroprocesorowy?

text: Nauczyłem się trochę o pipeliningu, ale to były 4-etapowe i 5-etapowe i myślę, że typowe dla współczesnego pipeliningu jest znacznie dłuższe i bardziej skomplikowane w praktyce. Jak długie są typowe potoki i jak bardzo możemy się spodziewać ich wzrostu oraz gdzie jest sens osiągania malejących zysków w poprawie wydajności w przypadku dłuższych potoków?


title: Czy RESTful API jest odpowiednie dla usług o charakterze niemal obliczeniowym?

text: Czy interfejs RESTful API jest odpowiedni w następującym scenariuszu? * Uzyskiwany jest ograniczony czasowo token, który wystarczy na jedną minutę * Obraz jest przesyłany na serwer * Na żądanie serwer wykonuje przetwarzanie obrazu obciążające procesor w określonym czasie * Wynik jest dostępny do pobrania w określonym czasie limit * Kiedy token wygaśnie: * Obraz, obliczenia, wynik są odrzucane / przerywane, a każde otwarte połączenie zostanie zamknięte. * Wszystkie inne niezbędne aspekty usług internetowych, takie jak uwierzytelnianie/autoryzacja usług, limity, szyfrowanie itp., mogą być nadal konieczne. Ponieważ „zasób” może istnieć tylko przez mniej niż minutę, czy nadal ma sens, aby „zasób” był obywatelem pierwszej klasy w tym interfejsie API? * * * **Aktualizacja** Znalazłem ten link, który mówi o REST API do kolejkowania zadań w RabbitMQ. Jest to jednak „strona pomysłu”, więc nie jestem pewien, czy jest to istotne, czy nie.


title: Pytanie do wywiadu „Co to jest funkcja wirtualna”

text: To było dla mnie zabawne i ciekawa jest reakcja na to pytanie społeczności. Był to wywiad dla programisty C++/Qt, w którym zadano pytanie **"Co to jest funkcja wirtualna"**. Nie coś w stylu „jak działa polimorfizm w C++” lub „jak działają funkcje wirtualne”, ale czym jest. Moją pierwszą myślą było udzielenie odpowiedzi „Wirtualne funkcje (metody) to metody, które mają słowo „wirtualne” przed podpisem”, ale wyjaśniłem, jak one działają =) Jak myślisz, czy to właściwie sformułowane pytanie? A o co poprosisz na to pytanie? PS: Mam nadzieję, że ta część stackexchange jest odpowiednia dla tego pytania


title: Gdzie mam przechowywać pliki dla zainstalowanych modułów Pythona?

text: Jeśli pobiorę moduł dla Pythona (takiego jak alglib) i instalacja jest po prostu kwestią uruchomienia python setup.py install Gdzie powinienem przechowywać pobrane pliki lub pliki, które zostaną utworzone po uruchomieniu setup.py? Czy w katalogu Pythona jest jakiś fajny folder, w którym ludzie umieszczają te moduły przed uruchomieniem setup.py? Czy mogę przenieść pliki po uruchomieniu? Czy mogę je usunąć... czy to przestanie działać? Nie mogłem znaleźć żadnej rekomendacji tutaj: http://docs.python.org/2/install/ Również używam systemu Windows i instaluję pythona przez python (x, y)


title: Java BufferedReader a wątek konsumencki oddzielnego producenta

text: Mam bardzo duży plik oddzielony sekwencją znaków '*L*I*N*E'. Plik będzie rzędu 250G. A każda linia ma około 600 bajtów do 1000 bajtów. Będę wykonywał następujące operacje na pliku: Czytaj plik linia po linii i dla każdej linii przekażę go parserowi, który wykona pewne obliczenia na linii i zaktualizuje niektóre statystyki. Parser zajmie około 15 mikrometrów na linię. Od teraz używam `BufferedReader` do odczytywania wierszy i przekazywania ich do parsera w jednym wątku. Moje pytanie brzmi: czy mam oddzielny wątek czytnika, który tylko odczytuje plik i zrzuca wszystko w kolejce (w pamięci) i czy mój parser działa w kolejce w pamięci (w osobnym wątku konsumenckim), czy mogę osiągnąć lepszą przepustowość? Nic się nie zmienia poza tym, że mój parser działa na danych w pamięci, a inny wątek zajmuje tylko operację IO (odczytaj plik i zrzuć go do kolejki). Jest to złożony program, w którym powyższe jest jedną częścią, więc staram się przyspieszyć powyższą część. Dlatego nie mogę wysłać aktualnego kodu.


title: Jak przekonać współpracowników/interesariuszy do wypróbowania nowych technologii?

text: Mam współpracownika/menedżera/interesariusza, który jest bardzo konserwatywny, jeśli chodzi o przyjmowanie nowych technologii. Całkowicie rozumiem dlaczego: mamy dużą wewnętrzną wiedzę na temat Javy, MySQL/Postgres itd., są one dobrze ugruntowane i są dla nich dobre wsparcie. Ale technologia ewoluuje i czasami nowsze technologie są lepiej dostosowane do dzisiejszych zadań. Sensowne jest na przykład intensywne przetwarzanie numeryczne w czymś takim jak Python+Numpy. Niektóre rodzaje prostych witryn internetowych są szybsze i łatwiejsze do zaimplementowania w Ruby/Rails. Przetwarzanie setek gigabajtów dzienników dziennie jest dobrze dostosowane do architektury Hadoop M-R. Ale często spotykam się z dużym oporem przed wprowadzaniem nowych technologii do miksu, nawet jeśli wydaje mi się, że jest na to mocny argument. Opór sprowadza się nawet do drobnych szczegółów, takich jak używanie ciężkiego interfejsu JavaScript i usług internetowych zamiast ciężkiego JSP po stronie serwera dla ostatniego projektu. Najczęstszym zarzutem jest to, że ponieważ nie mamy dużego doświadczenia w tej technologii, nie będzie można ją utrzymać, jeśli nie będę mógł tego zrobić sam. Jak pracujesz z takimi ludźmi, aby przezwyciężyć tego rodzaju obiekcje?


title: Jak ważny jest certyfikat SSL dla strony internetowej?

text: Uruchamiam własny projekt, ma on obszar rejestracji/logowania (poprzez devise z RoR, oczywiście odpowiednio zahaszowany i solony). Ponieważ używam subdomen i muszę mieć do nich dostęp za pomocą iframe (to jest naprawdę uzasadnione!), potrzebowałbym jednego z tych drogich certyfikatów, które obejmują subdomeny. Ponieważ robię to z własnego czasu i pieniędzy, więc waham się, czy zostawić kilka setek na świadectwie, plus kilka godzin zagłębiania się w coś, czego wcześniej nie próbowałem. Nie przechowuję żadnych poufnych informacji poza adresem e-mail i hasłem. O ile rozumiem, jedyna luka występuje, gdy użytkownik loguje się lub rejestruje z nieszyfrowanej sieci (takiej jak kawiarnia), a ktoś nasłuchuje sieci. Czy jestem tani? Czy to jest coś, czym powinienem się zająć przed wypuszczeniem na wolność. Powinienem chyba wspomnieć, że mam 25 000 użytkowników zarejestrowanych, aby otrzymywać powiadomienia po uruchomieniu, więc jestem tym zdenerwowany.


title: Klienci z wieloma proxy i wielowątkowymi wywołaniami zwrotnymi

text: Stworzyłem sesyjną usługę sieciową za pomocą WCF, a w szczególności użyłem powiązania `NetTcpBinding`. Oprócz metod inicjowania i kończenia sesji, inne metody pozwalają klientowi wysłać do jednego lub więcej zadań do wykonania (wyniki są zwracane przez wywołanie zwrotne, więc usługa jest dupleksowa), ale także pozwalają poznać status usługi. Zakładając, że aktywujesz tę samą usługę na wielu punktach końcowych i zakładając, że klient zna te punkty końcowe (na przykład, może utrzymywać `Listę` punktów końcowych), klient powinien połączyć się z jedną lub więcej replikami tej samej usługi. Klient okresowo aktualizuje stan usługi, więc gdy potrzebuje wykonać nowe zadanie (zadanie jest przesyłane przez użytkownika przez UI), wybiera usługę aktualnie mniej obciążoną i wysyła do niej zadanie. Klient okresowo inicjuje również procedurę konserwacyjną w celu odłączenia się od jednej lub więcej przeciążonych usług oraz w celu połączenia się z nowymi usługami. Utworzyłem proxy klienta za pomocą narzędzia _svcutil_. Chciałbym, aby każdy z proxy mógł być używany jednocześnie przez różne wątki, na przykład oprócz wątku, który przesyła zadania za pomocą proxy, istnieją również dwa następujące wątki, które działają okresowo: * wątek, który okresowo wysyła żądanie do usługi w celu uzyskania aktualnego stanu; * wątek, który okresowo wybiera proxy do zamknięcia i tworzy instancję nowego proxy w celu zastąpienia tego zamkniętego. Czy aby osiągnąć te cele, wystarczy stworzyć szereg proxy i zarządzać ich otwieraniem i zamykaniem w osobnych wątkach? Wydaje mi się, że przeczytałem, że wywołania metod proxy są bezpieczne dla wątków, więc nie musiałbym wykonywać blokady przed żądaniem aktualizacji usługi. Jednak gdy procedura konserwacji (która jest aktywowana we własnym wątku) zdecyduje się zamknąć proxy, czy powinienem wykonać blokadę? Wreszcie, każdy serwer proxy jest również powiązany z obiektem, który implementuje interfejs wywołań zwrotnych dla usługi: czy wywołania zwrotne (wywoływane na kliencie) są wykonywane w różnych wątkach na kliencie? Chciałbym owinąć zarządzanie serwerem proxy w jedną lub więcej klas, aby można było nim łatwo zarządzać w aplikacji WPF.


title: Jak powstrzymać się przed przynoszeniem pracy do domu?

text: Programowanie to bardzo mózgowa praca, a jednym z największych problemów, jakie mam, jest zabieranie ze sobą pracy do domu. To takie proste: kiedy tylko mam okazję pomyśleć, mój umysł w naturalny sposób wędruje do spraw związanych z pracą. Uważam, że tak wiele innych rzeczy w moich czasach jest raczej mentalnie pozbawionych bodźców i, jak mówią, natura nie znosi próżni. Niestety, ciągłe myślenie o pracy jest dla mnie stresujące i nie mogę po prostu przestawić tego przełącznika pod koniec dnia. To powodowało u mnie sporo bezsenności. Co gorsza, prawie wszyscy moi znajomi są współpracownikami, a wiele z naszych rozmów nie sprawia, że zapominam o minionym tygodniu. Ogólnie rzecz biorąc, fajnie się z nimi przebywa, a po naszym festynie wszyscy przestajemy mówić o pracy, ale wystarczy powiedzieć, że nie zachęca mnie to do zapomnienia o sprawach związanych z pracą. Co więc mogę zrobić, aby na koniec dnia zostawić swoje projekty programistyczne za sobą? A jeśli tego nie zrobisz, jaki rodzaj mentalnie stymulujących czynności mógłbym wykonywać, aby zająć godziny poza pracą (które nie są stresujące i nie wymagają leków zmieniających umysł)?


title: Dlaczego ludzie boją się umrzeć ()?

text: Widziałem wiele osób (pierwszy komentarz) nienawidzących `die();` zamiast `exit;` Jako kolejne komentarze do tego posta, `die` i `exit` są takie same – nastawienie wydaje się być jednym z percepcji, z pewnym poczuciem, że jedno imię jest bardziej odpowiednie w pewnych kontekstach niż inne. Ale dlaczego to ma znaczenie? Jeśli robią to samo, dlaczego powinno mnie obchodzić, jakiej nazwy używam? Czy śmierć pod jakimkolwiek innym imieniem nie pachnie tak słodko?


title: Czy warto stosować koncepcje niezależne od narzędzi w zespole programistycznym?

text: Tracimy dużo czasu, używając terminów specyficznych dla narzędzi, kiedy wszyscy tak naprawdę mówimy o tych samych rzeczach. Problem polega na tym, że osoba1 jest zaznajomiona z zestawem narzędzi1, osoba2 z zestawem narzędzi2 itd. Tak więc każdy z nich używa zestawu terminów, z którymi jest mu najwygodniej, iw końcu rozmawiamy o różnych celach. Czy ktoś natknął się na ten problem w Twoim miejscu pracy? Jak to rozwiązałeś? Pytam tutaj konkretnie o zespoły programistów.


title: Przejście do kariery programistycznej z administracji systemem

text: Mam trochę wyjątkową historię. Mam pewne doświadczenie w pracy w IT, którego generalnie nie znoszę, a do ukończenia studiów z fizyki został około roku. Chciałbym dalej studiować fizykę, ale ścieżka kariery jest dość wyczerpująca i zdecydowałem się tego nie robić. Znam (lub znałem) podstawy kilku dobrych języków: Java, C, C++, PHP i znam SQL. Na moim dyplomie z fizyki przeprowadziłem pewne badania, które wymagały sporo programowania w C++, aczkolwiek w formacie, który jest bardziej proceduralny niż OOP, co jest powszechne, gdy naukowcy próbują programować. Chciałbym zamienić moje doświadczenia na karierę w programowaniu niższego poziomu, urządzeniach wbudowanych, sterownikach lub programowaniu naukowym/matematycznym itp., ponieważ nie podoba mi się pomysł pisania stron internetowych lub innych aplikacji CRUD przez 50 godzin tygodniowo. Zrobiłem wystarczająco dużo rzeczy z LAMP, by wiedzieć, że mnie to nie interesuje. To powiedziawszy, jestem elastyczny i mam tylko mgliste pojęcie o tym, co chcę zrobić. Więc pytanie, które stawiam, brzmi: jak dobrze się ustawić, aby za rok lub więcej rozpocząć taką karierę jako nowy absolwent? Z pewnością muszę wzmocnić pewne podstawy, ponieważ minęło dużo czasu, odkąd się nauczyłem i jestem dość zardzewiały. Po drugie, nie mam żadnego portfela, który mógłbym pokazać, ponieważ moje badania fizyki tak naprawdę się do tego nie nadają, chociaż być może jest okazja, aby niektóre rzeczy, które robiłem, przełożyć na bardziej dyskretny projekt. Wreszcie, obawiam się, że moje doświadczenie informatyczne w moim CV zaklasyfikuje mnie jako typ administratora i nie pozwoli mi włamać się do przyjemniejszego, przynajmniej dla mnie, świata programowania. Dziękuję! TL; DR: Stopień z fizyki i praca z informatyką chcą przekształcić się w karierę zajmującą się programowaniem niższego poziomu.


title: Chcę narysować diagram klas, ale nie wiem jak wstawić serwer i bazę danych?

text: Właśnie zacząłem rysować diagram klas, myślę, że jest on oparty na architekturze trójwarstwowej. Posiadam aplikację mobilną, serwery, bazę danych oraz interfejs webowy. Ale nie wiem czy należy włożyć serwer? Chcę po prostu napisać ten na wysokim poziomie.


title: Czy interfejs administratora publicznie dostępnej aplikacji internetowej powinien być dostępny z zewnątrz?

text: Pracuję teraz nad aplikacją, która potrzebuje sposobu, aby pracownicy mogli zalogować się do zaplecza publicznej aplikacji, aby uzyskać podstawowe raportowanie. Gdybyś to tworzył, umieściłbyś interfejs administratora po stronie publicznej czy po stronie intranetowej? Aktualizacja: Jest to back-end naszej aplikacji eCommerce. Rejestruję wszystkie transakcje z procesorem CC (NIE wysłane dane, tylko odpowiedź od procesora) oraz przetworzone transakcje, aby pomóc nam w rozwiązywaniu problemów, gdy klient ma problem. Coś w rodzaju punktu kompleksowej obsługi zamiast wyszukiwania w wielu miejscach. Powinni być w biurze, kiedy to robią. Jest to projekt ASP.NET MVC, jeśli ma to znaczenie.


title: Tłumaczenie komunikatów o błędach z zewnętrznego interfejsu API?

text: Jeśli lokalizuję oprogramowanie korzystające z zewnętrznego interfejsu API, jak mam obsługiwać komunikaty o błędach pochodzące z tego interfejsu API? Nie kontroluję API, tylko je konsumuję. Odpowiedzi na błędy nie są zbyt ustrukturyzowane: niektóre zawierają kody błędów, niektóre zawierają szczegółowe informacje w tekście, inne prawie nic. Niektóre błędy mogą zostać naprawione przez użytkownika (nieprawidłowa konfiguracja), niektóre są spowodowane usługą zewnętrzną (przeciążenie serwera), niektóre mogą być spowodowane błędem w moim oprogramowaniu (oczywiście byłoby to bardzo mało prawdopodobne...). Chciałbym zapewnić moim użytkownikom końcowym płynną obsługę, aby wiedzieli, co poszło nie tak i co mogą zrobić, aby to naprawić. Jaka jest najlepsza strategia do zastosowania tutaj? _(Jest to uogólnienie pytania z WordPress Stack Exchange. Pomyślałem, że warto tu zadać ponownie, ponieważ nie ogranicza się ono do wtyczek WordPress.)_


title: Jaki jest właściwy sposób przekazywania parametrów do systemu MVC?

text: Staram się nauczyć java servlet/jsp z koncepcją MVC i zbudowałem najprostszą aplikację MVC. Teraz chcę podać więcej szczegółów, aby lepiej zrozumieć. Jeśli musiałbym zarejestrować nowy wiersz w tabeli w bazie danych, jak przekazać do systemu różne wartości kolumny? Na przykład, użytkownik może chcieć zarejestrować nowe zdarzenie w swoim planerze, a szczegóły zdarzenia obejmują „gdzie”, „kiedy”, „kto”, „szczegóły” itp. Powinna przekazać całą tę długą wartość z apletu parametr, czyli: link http? String accNo = request.getParameter("numer_konta"); String a = request.getParameter("..."); Ciąg b = request.getParameter("..."); Ciąg c = request.getParameter("..."); Ciąg d = request.getParameter("..."); Aby zilustrować mój pogląd, że pokazywanie wszystkich parametrów na łączu jest naprawdę nieprofesjonalne: http://localhost:8080/domain1/servlet1?param1=555555555555&param2=666666666666666666666666666666666666666666666666666666&param3='userSome losowy szczegół napisany przez .....' Czy istnieje inny sposób na ich przekazanie?


title: Jak zademonstrować to, czego nauczyłem się poza miejscem pracy?

text: Uważam się za wszechstronnego programistę. Czytam książki, zagłębiam się w technologie w domu, chodzę na spotkania programistów, często stosuję przepełnienie stosu i tak dalej. Ale jak mam to pokazać potencjalnemu pracodawcy? Jeśli czytam książkę o Hibernate, ale nie używamy jej w pracy, jak mam pokazać w swoim CV, że znam Hibernate? Czy pomogłoby posiadanie projektu pobocznego, który go używa i umieszczenie go na GitHub? Jak wszyscy radzicie sobie z tym problemem?


title: Jak mogę stwierdzić, czy firma naprawdę poważnie podchodzi do Agile i Scrum?

text: > **Possible Duplicate:** > Oddzielenie prawdziwego agile od modnego słowa agile w wywiadzie Poszedłem na rozmowę kwalifikacyjną. Firma naprawdę chce się mną zająć. Jednak moim spornym punktem jest to, że nie otrzymałem jasnych informacji, czy używają metodologii Agile i Scrum. Umówiłem tam telefoniczny czat z konsultantem... jakie pytania zadaję, aby sprawdzić, czy naprawdę poważnie traktują agile i scrum? Myślałem: * Czy możesz zbudować i wydać oprogramowanie w jednym kroku? * Czy korzystasz z ciągłej integracji? Czy ktoś może mi doradzić, jak naprawdę wyciągnąć z nich prawdę? Dostanę tylko tę jedną szansę, aby ich przepytać. Pozdrawiam, Pete


title: Jak stworzyć frontend (UI) dla mojej strony Django

text: Uczę się Django i jestem nowy w tworzeniu stron internetowych. Przepraszam, jeśli uważasz to pytanie za zbyt głupie. Tak więc tworzę aplikację na Facebooka przy użyciu Django, którą chciałbym hostować w Google App Engine. Projekt skupiałby się na czytaniu kanałów RSS/Atom z dowolnej strony internetowej (to wszystko, co mogę teraz powiedzieć). Jestem pewien, że przetwarzam pliki RSS/Atom, ale martwię się o część frontendową (interfejs użytkownika) - "Część projektowa". Nie znam HTML/CSS/ JavaScript (radzę sobie z prostymi rzeczami HTML, ale to nie prowadzi do projektowania). Najpierw pomyślałem o użyciu narzędzi takich jak Dreamweaver lub innego podobnego oprogramowania do projektowania interfejsu użytkownika, ale kiedy naprawdę zacząłem uczyć się django i zagłębiać się w to, wydaje się to „niemożliwe”. Tak więc, * Jak powinienem zaprojektować część interfejsu użytkownika mojej witryny? Czy nie mogę używać narzędzi takich jak Dreamweaver? * Jeśli NIE, jaki jest najlepszy sposób dla faceta takiego jak ja, który nie zna JavaScript/CSS * Jeśli TAK, jaka jest najlepsza alternatywa open source dla Dreamweavera? * Czy Google App Engine poradzi sobie z tym wszystkim? * Jak ludzie zajmujący się Django edytują te strony szablonów. Django wspomina, że oddzieli część logiczną (widoki) i projektową (szablony), aby różne działy w firmie mogły obsługiwać osobno. Ale biorąc pod uwagę fakt, że strony HTML Django są wypełnione "tagami", które nie są w żaden sposób związane z HTML (projektowanie), jak radzą sobie z tym użytkownicy interfejsu?