title: Tłumaczenie dłuższych tekstów (szablony widoków i wiadomości e-mail) za pomocą gettext

text: Zajmuję się tworzeniem wielojęzycznej aplikacji internetowej PHP i mam długie teksty, które muszę przetłumaczyć za pomocą gettexta. Są to szablony wiadomości e-mail (zwykle krótkie, ale wciąż kilka linii) oraz części szablonów widoków (dłuższe opisowe bloki tekstu). Teksty te zawierałyby prosty HTML (takie jak pogrubienie/kursywa dla podkreślenia, prawdopodobnie link tu lub tam). Szablony to skrypty PHP, których dane wyjściowe są przechwytywane. Problem polega na tym, że gettext wydaje się bardzo nieporadny w obsłudze dłuższych tekstów. Dłuższe teksty generalnie zmieniałyby się z upływem czasu niż krótkie teksty — mogę albo zmienić msgid i upewnić się, że aktualizuję go we wszystkich tłumaczeniach (może być dużo pracy i bardzo podatne na błędy, gdy msgid jest długi), albo mogę zachować msgid niezmieniony i modyfikuje tylko tłumaczenia (co pozostawi mylące nieaktualne teksty w szablonach). Widziałem też porady przeciwko umieszczaniu kodu HTML w ciągach gettext, ale unikanie tego spowoduje rozbicie jednego naturalnego fragmentu tekstu na wiele kawałków, co będzie jeszcze większym koszmarem do przetłumaczenia i ponownego złożenia, a także widziałem porady przeciwko niepotrzebne dzielenie ciągów gettext na oddzielne msgid. Innym podejściem, które widzę, jest całkowite zignorowanie gettexta dla tych dłuższych tekstów i oddzielenie tych bloków w zewnętrznych podszablonach dla każdego locale i po prostu uwzględnienie tego dla bieżącej lokalizacji. Wadą jest to, że oddzielam wysiłek tłumaczenia między plikami gettext .po i oddzielnymi szablonami znajdującymi się w zupełnie innej lokalizacji. Ponieważ ta aplikacja będzie używana jako punkt wyjścia dla innych aplikacji w przyszłości, staram się wymyślić najlepsze podejście na dłuższą metę. Potrzebuję porady dotyczącej najlepszych praktyk w takich sytuacjach. Jak zaimplementowałeś podobne przypadki? Co się sprawdziło, a co okazało się złym pomysłem?


title: Udostępnianie uwierzytelniania w subdomenach za pomocą plików cookie

text: Wiem, że ogólnie same pliki cookie nie są uważane za wystarczająco solidne do przechowywania informacji uwierzytelniających. Zastanawiam się, czy istnieje istniejący wzorzec projektowy lub framework do udostępniania uwierzytelniania w subdomenach bez konieczności używania czegoś bardziej złożonego, takiego jak OpenID. Idealnie byłoby, gdyby użytkownik odwiedził abc.example.org, zalogował się i przeszedł do xyz.example.org, gdzie jest automatycznie rozpoznawany (najlepiej byłoby też odwrotnie – logowanie przez xyz oznacza automatyczne zaloguj się w abc). Problem polega na tym, że abc.example.org i xyz.example.org znajdują się na różnych serwerach i różnych platformach aplikacji internetowych, chociaż oba mogą korzystać ze wspólnej bazy danych. Platformy aplikacji internetowych obejmują PHP, ColdFusion i Python (Django), chociaż interesuje mnie to również z bardziej ogólnej perspektywy (tj. Agnostyka językowa).


title: Pierwsze języki z ogólną obsługą programowania

text: Który był pierwszym językiem z obsługą programowania generycznego i jaki był pierwszy główny język statycznie typowany (szeroko używany) z obsługą generyków. Generics implementuje koncepcję typów sparametryzowanych, aby umożliwić wiele typów. Termin rodzajowy oznacza „odnoszący się do lub odpowiedni dla dużych grup klas”. Widziałem następujące wzmianki o „pierwszym”: > Parametryczny polimorfizm pierwszego rzędu jest teraz standardowym elementem statycznie > wpisanych języków programowania. Począwszy od Systemu F [20,42] i języków programowania funkcjonalnego, konstrukcje znalazły drogę do języków głównego nurtu, takich jak Java i C#. W tych językach parametryczny > polimorfizm pierwszego rzędu jest zwykle nazywany generykami. Z „Generic of a Higher Kind”, Adriaan Moors, Frank Piessens i Martin Odersky. potrzebne dla określonych typów podanych jako parametry. To > podejście, zapoczątkowane przez Adę w 1983 r. Z Wikipedii Programowanie ogólne


title: Budowanie systemu rozproszonego na Amazon Web Services

text: Czy zwykłe użycie AWS do zbudowania aplikacji uczyniłoby tę aplikację systemem rozproszonym? Na przykład, jeśli ktoś używa **RDS** dla serwera bazy danych, **EC2** dla samej aplikacji i **S3** do hostowania mediów przesłanych przez użytkownika, czy to czyni z tego system rozproszony? Jeśli nie, to jak powinna się nazywać i czego brakuje tej aplikacji, aby była rozpowszechniana? **Aktualizacja** Oto moje podejście do aplikacji w celu wyjaśnienia mojego podejścia do budowy systemu: 1. Tworzę aplikację, która jest grą społecznościową na Facebooka. 2. Stworzyłem aplikację lokalnie na stosie LAMP przy użyciu Symfony2. 3. Do produkcji wykorzystałem pojedynczą instancję EC2 Micro do hostowania samej aplikacji, RDS do hostowania mojej bazy danych, S3 do hostowania plików przesłanych przez użytkownika oraz CloudFront do hostowania treści statycznych. Wiem, że może to brzmieć jak naiwne podejście, więc nie wstydź się wyrażać swoich pomysłów.


title: Praktyczne programowanie zgodnie z Zasadą Inwersji Zależności

text: W praktyce zasada odwrócenia zależności oznacza, że w systemie komponenty wysokiego poziomu powinny zależeć od abstrakcji komponentów niskiego poziomu (zamiast bezpośrednio od komponentów niskiego poziomu), a komponenty niskiego poziomu powinny być zdefiniowane w kategoriach tych abstrakcji . Kluczową kwestią dla mojego pytania jest to, że _komponenty niskiego poziomu są definiowane w kategoriach abstrakcji, które są definiowane w kategoriach składników wysokiego poziomu_. Znaczenie: komponenty wysokiego poziomu „definiują abstrakcję” w kategoriach tego, co byłoby dla nich wygodne, a komponenty niskiego poziomu muszą być zdefiniowane zgodnie z tą abstrakcją (zazwyczaj interfejs). Więc jeśli komponent wysokiego poziomu to `Samochód`, a komponent niskiego poziomu to `Silnik`, a interfejs `IEngine` jest zdefiniowany - zostanie on zdefiniowany zgodnie z potrzebami `Samochodu` i `Silnika` będzie musiała dostosować się do tych potrzeb. Jeśli więc dla samochodu `Car` wygodnie jest uruchomić silnik, `IEngine` będzie zawierał metodę `start()`, a `Engine` musiałby ją zaimplementować. Moje pytanie brzmi: Rozpoczynając programowanie na projekcie zaprojektowanym zgodnie z Zasadą Inwersji Zależności - czy komponenty wysokopoziomowe są zazwyczaj implementowane przed niskopoziomowymi, tj. rozwój „od góry do dołu”? Ponieważ zasada zakłada, że komponenty niskopoziomowe są projektowane zgodnie z tym, co jest wygodne dla komponentów wysokopoziomowych, sensowne jest rozpoczęcie programowania komponentów wysokopoziomowych, a dopiero potem zdefiniowanie interfejsu `ILowLevelComponent` w oparciu o to, czego się nauczyliśmy komponenty wysokiego poziomu są potrzebne, gdy je zaprogramowaliśmy. Na przykład wdrażamy system symulujący samochód. „Samochód” to komponent wysokiego poziomu, a „Silnik” i „SteeringWheel” to komponenty niskiego poziomu. `Engine` i `SteeringWheel` zajmują się konkretną pracą związaną z przemieszczaniem samochodu, natomiast `Car` zajmuje się koordynacją wszystkiego i stworzeniem działającego systemu. Gdybyśmy projektowali system zgodnie z DIP, oznacza to, że `Engine` i `SteeringWheel` są definiowane w kategoriach abstrakcji, czyli tego, co jest wygodne dla `Car`. Dlatego warto najpierw zaimplementować `Samochód`, dokładnie zrozumieć, jak to będzie działać w kategoriach wysokiego poziomu i czego potrzebuje do działania, a dopiero potem zdefiniować interfejsy `IEngine` i `ISeeringWheel`, zgodnie z tym, co ` potrzeby. A potem oczywiście zaimplementuj konkretne klasy, które implementują interfejsy. **Pytam więc: czy pracując nad projektem zaprojektowanym w duchu DIP, podejście „od góry do dołu” jest powszechne? Czy w ten sposób zwykle wykonuje się pracę nad projektem zgodnie z zasadą odwrócenia zależności?**


title: Pracowałeś ze źle zaprojektowaną aplikacją?

text: Cóż, zostałem poproszony o pracę w aplikacji internetowej Java, która jest bardzo kiepsko zaprojektowana. W imię „ułatwienia tego” wymyślili własne „ramy”, które sprawiają, że rzeczy są niezwykle trudne do zrozumienia. Walczę o ustalenie przepływu sterowania. Czy masz takie doświadczenie? Co robisz w takich sytuacjach, gdy facet, który to „zaprojektował” już odszedł z firmy?


title: Co robisz przed rozpoczęciem programowania?

text: Nie jestem pewien, czy to pytanie należy tutaj, nie tyle mam problem z programowaniem, co raczej problem z tym, co zrobić przed rozpoczęciem programowania. Chcę wizualnej reprezentacji tego, jakich zmiennych potrzebuję i jakie klasy mają jakie metody. Wiem, że istnieje UML, ale nie jestem pewien, czy to najlepszy sposób, więc czego używacie przed rozpoczęciem programowania, która metoda? Nie chcę rozpoczynać wojny o to, co jest lepsze, tylko jakie są różne podejścia?


title: Jaki jest dobry wzorzec projektowy do implementacji usług REST na urządzeniach mobilnych?

text: Łatwo jest zaimplementować wywołania do punktów końcowych API, a następnie przeanalizować JSON i obsłużyć dane - ale jaki jest do tego dobry wzorzec projektowy? Oto kilka sposobów, które wypróbowałem, ale wydaje mi się, że powinien być lepszy sposób: 1. Utwórz klasę singleton, która zarządza całym kodem sieciowym i całym kodem analizy danych dla całej aplikacji dla wszystkich punktów końcowych. Wtedy dowolna klasa kontrolera może trafić w singleton 2. Twórz zadania punktów końcowych sieci bezpośrednio z kontrolerów widoku - używając bloków w kontrolerze widoku do zarządzania odpowiedziami Rozważmy aplikację, która może trafić na punkt końcowy (GET), aby pobrać listę spotkań. Weź również pod uwagę punkt końcowy POST, w którym możesz wysyłać nowe spotkania. Dane muszą być spakowane/rozpakowane w formacie JSON, a błędy muszą być odpowiednio obsługiwane. Jaki jest dobry wzorzec projektowy, aby to osiągnąć? A zanim odrzucisz ten post i powiesz, że jest zbyt szeroki lub subiektywny, spójrz na tę stronę: https://programmers.stackexchange.com/help/dont-ask > Niektóre subiektywne pytania są dozwolone, ale „subiektywne” nie oznacza > „ wszystko idzie". Oczekuje się, że wszystkie subiektywne pytania będą > **konstruktywne**. Trudno znaleźć dobrą odpowiedź na ten powszechny problem.


title: Co zrobić, jeśli członek zespołu przegapi planowanie sprintu?

text: Powiedzmy, że członek zespołu jest na corocznym urlopie. Nie będzie uczestniczył w planowaniu sprintu, ale wróci w połowie iteracji/sprintu. Załóżmy, że ma 50% pojemności, tj. będzie dostępny przez późniejszą połowę iteracji, czy powinniśmy: 1. Odbyć z nim sesję planowania po jego powrocie. 2. odbyć z nim sesję planowania przed wyjazdem na coroczny urlop, tj. przed planowaniem sprintu. 3. nie planuj mu żadnych zadań i przydzielaj mu zadania niesprintowe np. skoki itp. 4. niech jego rówieśnicy planują w jego imieniu podczas planowania sprintu, a osoba nieobecna może następnie dodać zadania, gdy wróci, a jeśli nie może wykonać całej pracy, może zdescopedować. 5. Poproś go, aby usiadł z innym programistą i przez chwilę programował w parach. 6. cokolwiek innego.. Jestem zainteresowany tym, co robisz.. Uwaga: Robimy (1) i nie wydaje mi się to właściwe.


title: Wybierasz się na konferencję programistyczną – oczekiwania szefów są rozsądne?

text: W przyszłym tygodniu wraz ze współpracownikiem zostaniemy wysłani na lokalną konferencję kodowania. Dziś rano nasz kierownik wysłał nam e-mail, w którym powiedział, że musimy zabrać nasze laptopy i zasugerował, że zrobimy dokument Google, aby mógł zobaczyć, jak robimy notatki w czasie rzeczywistym. To naprawdę mnie poruszyło i oboje odesłaliśmy mu e-mailem. Te e-maile zamieściłem poniżej. Zastanawiam się, czy spotkaliście się z tego typu oczekiwaniami swoich szefów. Jestem profesjonalnym programistą od ponad 10 lat i nigdy nie miałem tego typu mikrozarządzania przy wysyłaniu na konferencję. Zastanawiam się tylko, czy „współpracownik” i ja nie widzimy rzeczy wyraźnie, czy też nasz szef jest z tego powodu trochę dziwny. * * * Od: Szef Wysłano: piątek, 25 marca 2011 r. 11:51 Do: Współpracownik; Me Temat: Re: DevConnections w przyszłym tygodniu Naprawdę chłopaki? Cokolwiek działa dla ciebie, jak sądzę. Ale spodziewam się, że masz wystarczająco szczegółowe notatki, aby odpowiednio udostępnić sesje, w których uczestniczysz, w tym wszelkie adresy URL do informacji pomocniczych itp. Nie jest to "byłoby miłe", ale profesjonalne oczekiwanie na uczestnictwo w tego typu wydarzeniach. \--Szef Dnia 25.03.11 10:08 "Współpracownik" napisał: > Hotel, w którym odbywa się konferencja, jest ogromny. „Trzątanie się z laptopem” to dokładny opis he he. > > Sam nie uczę się klasycznie. Uczę się przez zwracanie uwagi, > uczestniczenie w temacie zajęć i zadawanie pytań. Jeśli próbuję robić > notatki, działa to destrukcyjnie na mój proces uczenia się. Utalentowany nauczyciel ze społeczności > college'u, dr Phar, zwrócił mi uwagę na ten fakt i powiedział, że jestem "wizualnym uczniem". Po tym udało mi się osiągnąć doskonałe wyniki w college'u i uzyskać tytuł magistra. > > Aby sprostać wymaganiom Szefa, zazwyczaj poświęcam pół dnia po konferencji > na przygotowanie materiałów prezentacyjnych dla zespołu. > > Współpracownik > > \-----Oryginalna wiadomość----- Od: Ja Wysłano: piątek, 25 marca 2011 r. 9:48 > Do: Szef; Współpracownik Temat: RE: DevConnections w przyszłym tygodniu > > Dzięki za przypomnienie. Zdecydowanie planowałem zabrać ze sobą notatnik, żeby robić notatki i nie mam problemu z dzieleniem się informacjami, z którymi wracam, ale wolałbym nie nosić laptopa, jeśli mam wybór. Czy to w porządku? > Może moglibyśmy zabrać nasze laptopy i trzymać je w bagażniku na wypadek pracy > awaryjne? Co myślisz? > > Ja > > \-----Oryginalna wiadomość----- Od: Szef Wysłano: piątek, 25 marca 2011 r. 8:39 > Do: Ja; Coworker Temat: DevConnections w przyszłym tygodniu > > Współpracownik / Ja > > Nie zapomnij zabrać ze sobą laptopów w przyszłym tygodniu i sporządzić notatki, aby podzielić się nimi z zespołem. Podobnie jak w przeszłości, możemy zaplanować sesję przeglądu, aby podzielić się > najważniejszymi punktami. Może użyj Dokumentów Google i udostępnij mi swoje notatki i . >Ponadto, > poświęć trochę czasu na skoordynowanie obecności na sesji, aby pomóc Ci znaleźć > wszystkie dobre tematy. > > Baw się dobrze, szefie


title: Pytania dotyczące UML w odniesieniu do wzorca poleceń

text: http://www.oodesign.com/command-pattern.html Czytając samouczek o wzorcu poleceń, natknąłem się na diagram UML, który wydaje się pomijać pewne zależności. Na poniższym diagramie klient tworzy instancję transakcji giełdowej, agenta oraz zlecenia kupna i sprzedaży akcji. Dlaczego autor pomija strzałkę relacji do klasy agenta? Dlaczego linia przerywana dla <> jest używana zamiast ciągłej strzałki, takiej jak ta od Klienta do StockTrade? ![tutaj podaj opis obrazka](http://i.stack.imgur.com/9clLI.gif) Porównałem również powyższy diagram z poniższym, który całkowicie pomija klasę Invoker/Agent i korzysta również z klasy CallbackTwo do agregowania Odbiorców. Implementacja C# ma klasę wywołującą, chociaż implementacje w innych językach nie. Czy to oznacza, że relacja inwokera jest niejawna? http://sourcemaking.com/design_patterns/command http://sourcemaking.com/design_patterns/command/c-sharp-dot-net ![tu wpisz opis obrazu](http://i.stack.imgur.com/ GljS8.png)


title: Funkcje C++ „całego zespołu”?

text: W C++ funkcje takie jak wyjątki wpływają na cały program: możesz albo wyłączyć je w całym programie, albo musisz radzić sobie z nimi w całym kodzie. Jak ujął to słynny artykuł w C++ Report: > Wbrew intuicji, trudną częścią kodowania wyjątków nie są jawne > rzuty i przechwyty. Naprawdę trudną częścią korzystania z wyjątków jest napisanie całego kodu interweniującego w taki sposób, aby arbitralny wyjątek mógł się > propagować ze swojej strony rzutów do swojego programu obsługi, docierając > bezpiecznie i bez uszkadzania innych części programu po drodze. Ponieważ nawet `new` zgłasza wyjątki, każda funkcja musi zapewniać podstawowe bezpieczeństwo wyjątków — chyba że wywołuje tylko funkcje, które gwarantują brak wyjątków — _chyba że całkowicie wyłączysz wyjątki w całym projekcie_. Stąd wyjątki są cechą „całego programu” lub „całego zespołu”, ponieważ muszą być rozumiane przez każdego w zespole, który ich używa. Ale o ile wiem, nie wszystkie funkcje C++ są takie. Możliwym przykładem jest to, że jeśli nie dostanę szablonów, ale ich nie używam, nadal będę mógł napisać poprawny C++ — czy nie?. Mogę nawet nazwać „sort” na tablicy liczb całkowitych i cieszyć się jego niesamowitą przewagą prędkości wrt. `qsort` w C (ponieważ nie jest wywoływany wskaźnik do funkcji), bez narażania się na błędy — czy nie? Wygląda na to, że szablony nie są „całym zespołem”. Czy istnieją inne funkcje C++, które wpływają na kod, który ich nie używa, a zatem są „całym zespołem”? Szczególnie interesują mnie funkcje, których nie ma w C. **Aktualizacja** : _szczególnie_ szukam funkcji, w których nie ma żadnego znaku językowego, o którym musisz wiedzieć. Pierwsza odpowiedź, jaką otrzymałem, to const-poprawność, która również dotyczy całego zespołu, stąd każdy musi się o tym dowiedzieć; jednak AFAICS będzie miało na ciebie wpływ tylko wtedy, gdy wywołasz funkcję, która jest oznaczona jako `const`, a kompilator zapobiegnie wywoływaniu jej na obiektach niestałych, więc masz coś do wyszukania. Z wyjątkami, nawet tego nie rozumiesz; co więcej, są one zawsze używane, gdy tylko użyjesz `new`, stąd wyjątki są bardziej „podstępne”. Ponieważ jednak nie mogę wyrazić tego jako obiektywnie, docenię każdą funkcję całego zespołu. **Aktualizacja 2** : zamiast funkcji C++ powinienem był napisać coś takiego jak "Funkcja specyficzna dla C++", aby wykluczyć takie rzeczy jak wielowątkowość, które mają zastosowanie do dużej ilości języków programowania głównego nurtu. ### Dodatek: Dlaczego to pytanie jest obiektywne (jeśli się zastanawiasz) C++ jest językiem złożonym, więc wiele projektów lub przewodników po kodowaniu próbuje wybrać „proste” cechy C++, a wiele osób próbuje włączać lub wyłączać niektóre z nich według w większości subiektywnych kryteria. Pytania na ten temat są słusznie regularnie zamykane tutaj na SO. Zamiast tego, powyżej zdefiniowałem (tak precyzyjnie, jak to możliwe), czym jest funkcja języka „całego zespołu”, podałem przykład (wyjątki) wraz z obszernymi dowodami w literaturze na temat C++ i poprosiłem o funkcje całego zespołu w C++ poza wyjątkami. To, czy powinieneś używać funkcji „całego zespołu”, czy jest to istotna koncepcja, może być subiektywne — ale to tylko oznacza, że waga tego pytania jest subiektywna, jak zawsze.


title: najlepsze praktyki w tworzeniu backlogu produktu w scrum

text: Jestem nowy w scrum, ogólnie w zarządzaniu projektami i mam problemy z podjęciem decyzji, jak nazwać funkcję lub podfunkcję (które są listami zadań do tworzenia tej funkcji?), zwłaszcza w przypadku standardowych rzeczy, które mamy w każdej aplikacji internetowej. Dlatego poszukuję najlepszych praktyk dotyczących tworzenia backlogów produktów dla typowego oprogramowania strony internetowej (użytkownicy, profile, admin, front-end). Mam to na myśli jako przykład. - cecha: strona główna - cecha: strona kontaktowa - cecha: panel administracyjny - utwórz użytkownika + utwórz bazę danych (lista zadań) + zapisz procedury składowane (lista zadań) - usuń użytkownika - dodaj treść - usuń treść - cecha: subskrybuj - utwórz subskrybowaną stronę Również , jak ziarnisty jest zbyt ziarnisty?


title: Raz i tylko raz - z większą ilością linijek kodu

text: Mam brzydki fragment kodu - zasadniczo iterację niektórych struktur danych, w których istota akcji się zmieniała, ale kod iteracji pozostał taki sam. Iteracja stanowiła większość kodu i były co najmniej cztery przypadki kopiowania kodu. Zrefaktorowałem więc kod, umieszczając każdy poziom iteracji we własnej klasie (prawdopodobnie napiszę o tym później inny post). Nowy kod jest znacznie ładniejszy (przynajmniej dla mojego oka), bez lokalizacji kopiowania/wklejania. Jednak ze względu na pewną infrastrukturę, którą musiałem wprowadzić do refaktoryzacji zagnieżdżonych pętli do oddzielnych klas, uzyskałem o 10% większą liczbę LOC. Jeśli zdyskontuję dodatkową infrastrukturę, otrzymam około 5% mniejszy kod w porównaniu do oryginalnego rozmiaru. Kod jest więc bardziej wyrafinowany, ale nie krótszy i może być trudniejszy do zrozumienia dla mniej doświadczonego programisty. Być może w przyszłości nadal będę miał krótszy kod, jeśli pojawi się więcej możliwości ponownego wykorzystania. Moje pytanie brzmi: czy uważasz, że było warto? Czy dobrym pomysłem jest refaktoryzacja „raz i tylko raz”, jeśli liczba LOC wzrośnie?


title: Jak zidentyfikować hakerów na podstawie adresów IP i odwiedzanych stron?

text: Zauważyłem, że w mojej witrynie generowane są podejrzane błędy na podstawie żądanych stron. Mój błąd polega na rejestrowaniu ścieżki, do której użytkownik próbuje uzyskać dostęp. Z powodu tych błędów (i ścieżek, do których próbowali uzyskać dostęp) stworzyłem własny proces czarnej listy, w którym mogę umieścić na czarnej liście kogoś z mojej witryny na podstawie adresu IP i/lub nazwy użytkownika. Po wdrożeniu tego nie widziałem ŻADNYCH błędów tego rodzaju… aż do dzisiaj. Teraz, zanim przejdę dalej i wstawię tę osobę na czarną listę, chciałbym się upewnić, że nie jest to prawdziwa wyszukiwarka, która próbuje tylko zbudować swoją bazę danych ze wszystkimi linkami dostępnymi z mojej witryny. Tak więc, moje pytanie, czy istnieje sposób, aby zobaczyć, do jakiej firmy przypisany jest adres IP? A może te roboty indeksujące z wyszukiwarek przechodzą tylko do istniejących stron?


title: Obszar badań

text: Próbuję zrozumieć, którą część kodu powinienem przetestować. Mam jakiś kod. Poniżej przykład tego kodu, aby zrozumieć ideę. W zależności od niektórych parametrów wstawiam taką lub inną walutę do "Zdarzenia" i zwracam jego serializację w kontrolerze. Którą część kodu powinienem przetestować? Tylko ostateczna serializacja, czy tylko „Event” lub każda metoda: getJson, getRows, fillCurrency, setCurrency? class Controller { public function getJson() { $rows = $eventManager->getRows(); zwróć nowe JsonResponse($wiersze); } } class EventManager { public function getRows() { //jakiś kod tutaj if ($parametr == true) { $this->fillCurrency($event, $currency); } } public function fillCurrency($event, $currency) { //jakiś kod tutaj if ($parameters == true) { $event->setCurrency($currency); } } } class Event { public function setCurrency($currency) { $this->updatedAt = new Datetime(); $ta->waluta = $waluta; } }


title: Analiza obrazu

text: Jeśli otworzę plik obrazu, powiedzmy z rozszerzeniem PNG, zobaczę trochę kodu. Teraz powiedzmy, że chcę mechanicznie wydobyć trochę informacji z obrazu. Więc pytanie brzmi, jaki jest pierwszy krok tutaj, czy muszę przeanalizować obraz?. Jeśli tak, w jaki sposób mogę uzyskać gramatykę plików graficznych? (PNG, JPEG, itp.) AKTUALIZACJA: Znalazłem problem z moim myśleniem!. Parsery są przeznaczone dla języków tekstowych, jednak obrazy są plikami binarnymi. Więc nie sądzę, że musimy je analizować, musimy iść w przeciwnym kierunku i przekształcić je w abstrakcyjne drzewa składni, zastanawiając się, jak to zrobić bez znajomości gramatyki!


title: Czy C++.Net jest szeroko używany?

text: Z tradycji jestem programistą C++. W ciągu ostatnich 12 miesięcy dużo kodowałem w C# i byłem mile zaskoczony pragmatycznym podejściem C# (kiedyś przestałem próbować kodować go tak, jakby był "C++ z wyrzucaniem śmieci"). Niedawno mieliśmy kilku absolwentów i kiedy pomagałem jednemu z nich, zdałem sobie sprawę, że używa .Net w C++. Po zapytaniu dlaczego, odpowiedziała, że „od swojego menedżera kazał jej używać C++”. Pomijając oczywisty problem z komunikacją, zakładam, że używała .Net, ponieważ jest to jedyny framework, z którym miała do czynienia. Potem natknąłem się na stary projekt starszego programisty, który również używał C++ do sterowania frontendem Forms. Byłoby to napisane mniej więcej w czasie, gdy pojawił się .Net, więc zakładam, że zabawa z .Net była z jego strony ćwiczeniem edukacyjnym. To była tylko mała aplikacja narzędziowa. Po dokonaniu drobnych modyfikacji w tej aplikacji wydawało mi się, że używanie C++ do obsługi .Net daje najgorsze z obu światów. Bez zbierania śmieci lub bezpieczeństwa pamięci, ale nie ma też możliwości uzyskania rzeczywistej szybkości/optymalizacji, ponieważ masz do czynienia z zarządzanym frameworkiem. Więc moje pytanie brzmi, czy ludzie używają C++ .Net do dowolnego dużego samodzielnego kodu produkcyjnego (tj. Nie hydraulika), a jeśli tak, jakie są Twoje powody, aby to zrobić? Swobodnie przyznaję, że nigdy nie zagłębiałem się głęboko w rozszerzenia C++ .Net, więc może robię to źle.


title: Który projekt PHP typu open source ma „idealny” projekt OOP, z którego mogę się uczyć?

text: Jestem nowicjuszem w OOP i najlepiej uczę się na przykładzie. Można powiedzieć, że to pytanie jest podobne do tego, które projekty open source Scala powinienem studiować, aby poznać najlepsze praktyki kodowania \- ale w PHP. Słyszałem – mówię, że Symfony ma najlepszą „architekturę” (nie będę udawał, że wiem, co to właściwie znaczy), a także Doctrine ORM. Czy warto poświęcać wiele miesięcy na czytanie kodu źródłowego tych projektów, próbując wydedukować zastosowane wzorce i ucząc się nowych sztuczek? Widziałem równą liczbę stron internetowych, które obrażają i polubiły bazę kodu Zend (w razie potrzeby zapewnią linki). Czy znasz jakiś inny projekt, który sprawiłby, że każdy doświadczony programista OOP uronłby łzy radości? Proszę pozwolić, że dodam, że praktyczność i zakres użycia nie są tutaj problemem - chcę tylko: * Wybierz projekt, który ma bazę kodu uważaną przez deweloperów za świetną i lepszą ode mnie. * Napisz kod, który osiągnie to, co robi projekt. * Porównaj wyniki i spróbuj dowiedzieć się, czego nie wiem. Zasadniczo baza kodów zainteresowań akademickich. Jakieś zalecenia proszę?


title: Praktyka programowania w C, przekazywanie wskaźnika do funkcji

text: Rozważmy następującą funkcję C, która jako argument przyjmuje łańcuch znaków, który jest następnie przechowywany wewnątrz struktury: struct mystruct* usestring(char* string) { struct mystruct *struct; struct = malloc(sizeof(struct mojastruktura)); struktura->ciąg = ciąg; struktura powrotu; } Rozumiem, że ciąg przekazany do funkcji jest tym samym ciągiem, który jest przechowywany w strukturze. Jaka jest właściwa etykieta w tej sytuacji? Czy powinienem wykonać kopię ciągu i przechowywać go w strukturze, czy też powinienem oczekiwać, że funkcja wywołująca nie zmodyfikuje później ciągu?


title: Biblioteka aktora / framework dla C++

text: W projekcie C++, nad którym pracuję, mamy aplikację składającą się z kilku procesów wdrożonych na różnych maszynach. Ta sieć procesów jest dynamiczna, ponieważ procesy (klienci lub usługi działające w tle) mogą być uruchamiane i kończone w czasie życia aplikacji. Mamy już moduł, który umożliwia przesyłanie dowolnych danych przez sieć przez RPC i używamy go do wymiany informacji (takich jak informacje o statusie, informacje o postępie, kody błędów itp.) między procesami. Chcielibyśmy mieć bardziej abstrakcyjną warstwę do obsługi komunikacji asynchronicznej (obecnie RPC jest wykonywany synchronicznie) i umożliwiającą dynamiczne uruchamianie i kończenie procesów, a jednocześnie odnajdywanie się nawzajem. Ostatnio szukaliśmy rozwiązania i wydaje nam się, że możemy użyć czegoś takiego jak Scala **aktorzy** i **zdani aktorzy** (patrz np. ten samouczek). Innym językiem używającym modelu aktorskiego, który istnieje dłużej niż Scala, jest Erlang (patrz także to pytanie). Aktorzy to obiekty, które mają zachowanie i skrzynkę pocztową, nie udostępniają żadnych danych. Aktorzy są wykonywani współbieżnie i komunikują się poprzez asynchroniczną wymianę komunikatów. W ramach swojego zachowania aktorzy mogą tworzyć innych aktorów. Komunikaty są również reprezentowane jako obiekty. Najprostszy przypadek jest taki, że aktorzy żyją w tym samym procesie. W tym przypadku mogą się do siebie adresować za pomocą uchwytu (odniesienia, wskaźnika, unikalnego identyfikatora). Implementacja aktora ukrywa podstawowe wątki i wszelkie inne szczegóły. Gdy aktorzy żyją w różnych procesach (i prawdopodobnie na różnych komputerach w sieci), są identyfikowani przez adres IP, port i nazwę. W tym przypadku mówimy o **aktorach zdalnych** (patrz krótki przykład na górze tej strony). W naszym przypadku mielibyśmy jednego aktora na każdy proces, który zajmuje się całą komunikacją, czyli potrzebujemy jakiegoś rodzaju aktorów zdalnych. Na wikipedii znalazłem linki do bibliotek aktorów dla C++ i zacząłem przyglądać się Theronowi. Theron wydaje się być bardzo dobrze napisaną i udokumentowaną biblioteką, ale według mnie nie obsługuje zdalnych aktorów: wszyscy aktorzy muszą żyć w tym samym procesie. Możliwe jest utworzenie kilku pul aktorów ( **frameworks** ), ale wszystkie te pule muszą działać w tym samym procesie. Chciałem więc zapytać, czy ktoś zna inne biblioteki C++, które obsługują koncepcję zdalnego aktora, jak naszkicowano powyżej. **EDYTUJ** To pytanie zostało zredagowane w stosunku do oryginalnego pytania, zgodnie ze wskazówkami z dyskusji programistów-meta. **AKTUALIZACJA** Inne frameworki, którym się przyjrzałem, to libcppa (powinna obsługiwać aktorów zdalnych, ale wciąż jest w fazie rozwoju, obecnie wersja 0.1), actor-cpp (również w fazie rozwoju) i libactor, który jest w C (web witryna mówi, że "nadaje się do użytku, chociaż może nie być gotowy do produkcji").


title: Wzorzec projektowy dostępu do bazy danych przypominającej drzewo w Javie?

text: Zajmuję się tworzeniem programu do przeglądania/zarządzania postaciami w odgrywaniu ról dla systemu locap LARP. Postacie mają dostęp do umiejętności ułożonych w strukturę przypominającą drzewo. Umiejętności jest wiele i potencjalnie wiele na postać. Wiem, że mogę po prostu zaimportować bibliotekę swing Java, aby uzyskać dostęp do drzewa, ale czuję, że może mnie to zniechęcić, gdy wszystko, co trzeba zrobić, to dostęp do bazy danych przypominającej drzewo, a postać musi tylko o tym wiedzieć mają dostęp do podzbioru umiejętności. Nie jestem pewien, czy wzorzec projektowania drzewa jest najlepszym wyborem do tego (tj. Utwórz instancję drzewa dla umiejętności znanych dla postaci i dodaj/usuń części w razie potrzeby) czy „zrób sprytne rzeczy” i użyj listy dla każdej postaci aby zobaczyć, które części (umiejętności) bazy danych (drzewo zewnętrzne) są „własnością”. Moje umiejętności są z grubsza podzielone w następujący sposób: „Kategoria kursu -> Typ broni -> Rzeczywista broń -> Biegłość -> Umiejętność specjalna”, co jest dość głębokie. Poza tym nie ma potrzeby wiedzieć, co jest na każdym poziomie, wystarczy, że to dzieci, dopóki nie uderzysz w liść, a ten w górę. Moja baza danych faktycznie już istnieje na stronie LARP-a, więc gdybym nie musiał jej powielać, byłoby dobrze. Oto przykład Broń i Tarcze Kapłan Wojownik Zwiadowca Mag 1H Biegłość w używaniu broni 3 6 6 9 1H Specjalizacja w broni 6 12 12 18 1H Biegłość w używaniu broni 12 24 24 36 1H Biegłość w używaniu broni 24 48 48 72 A później: Magiczny wojownik Kapłan Zwiadowca Mag Naucz się zaklęć 9 x (l + 1) 9 x (l + 1) 6 x (l + 1) 3 x (l + 1) l = poziom zaklęcia, ... Utwórz talizman 9 + l 9 + l 6 + l 3 + l l = poziom,


title: Co wybrałbyś dla swojego projektu między .NET i Java w tym momencie?

text: Dopiero zaczynasz nowy projekt i masz do wyboru te dwie technologie, Java i .NET. Projekt, nad którym pracujesz, nie wymaga posiadania funkcji, które ułatwiłyby wybór między dwiema technologiami (np. .NET ma to, czego potrzebuję, a Java nie) i obie powinny działać dobrze dla Ciebie (chociaż tylko oczywiście potrzebuję). Weź pod uwagę: * Wydajność * Dostępne narzędzia (nawet narzędzia innych firm) * Kompatybilność między platformami * Biblioteki (zwłaszcza biblioteki innych firm) * Koszt (Oracle wydaje się próbować zarabiać na Javie) * Proces rozwoju (najłatwiejszy/najszybszy) Należy również pamiętać że Linux nie jest twoją główną platformą, ale chciałbyś przenieść swój projekt również na Linux/MacOs. Zdecydowanie powinieneś pamiętać o problemach, które krążą wokół Oracle i społeczności Java, a także o ograniczeniach Mono i Java. Byłoby bardzo mile widziane, gdyby osoby z doświadczeniem w obu przypadkach mogły przedstawić ogólny zarys i swój własny, subiektywny pogląd na temat tego, co wybraliby i dlaczego.


title: Znalazłeś lepsze rozwiązanie problemu w pracy – czy powinienem powstrzymać się od opublikowania fragmentu kodu online?

text: Myślę, że większość z nas, programistów, używała Stack Overflow do rozwiązywania codziennych problemów: szukała wydajnego algorytmu, aby coś zrobić. Teraz wyobraź sobie sytuację: masz problem do rozwiązania. Trochę Google znalazłem pytanie StackOverflow, ale do tej pory nie jesteś zadowolony z odpowiedzi. Musisz więc przeprowadzić własne badania: musisz to zrobić, ponieważ chcesz, aby było to w aplikacji firmy. W końcu po kilku godzinach znalazłeś lepsze rozwiązanie. Cieszysz się, dodałeś go do bazy kodu firmy, a następnie chcesz przesłać odpowiedź wraz z fragmentem kodu (tylko kilka linii) na pytanie, które znalazłeś wcześniej, aby pomóc innym. Ale poczekaj: oprogramowanie firmy jest zamknięte, a ty pracowałeś nad nim na bieżąco. Czy to oznacza, że nie powinienem publikować odpowiedzi ani w pracy, ani w domu na to pytanie przez resztę mojego życia, ponieważ rozwiązałem je w pracy, a firma jest właścicielem tego fragmentu kodu?


title: Wznów dylemat pracy zawodowej

text: W swoim CV wymieniam siebie jako „7 lat praktycznego doświadczenia w programowaniu w języku C”. Aby wyjaśnić, jestem programistą C-samoukiem z kilkoma kursami uniwersyteckimi dodanymi do mieszanki. Pracowałem nad kilkoma małymi osobistymi projektami i uważam się za bardziej kompetentnego niż absolwent informatyki bez rzeczywistego doświadczenia w świecie rzeczywistym, chociaż w żadnym wypadku nie jestem ekspertem. Problem polega na tym... Ciągle otrzymuję telefony i e-maile od rekruterów, którzy widzą moje CV na stronach z ofertami pracy, pytają o moje zainteresowanie stanowiskami dla starszych programistów, kontraktami itp., do których czuję, że nie mam wystarczających kwalifikacji. Moje CV zawiera tylko 3 lata doświadczenia zawodowego (to wszystko to IT), więc kiedy pytają o moje wcześniejsze doświadczenie w C, muszę wyjaśnić, że była to praca osobista, a nie zawodowa. Naprawdę chciałbym pracować jako programista, ale nie chcę zostać zatrudniony do czegoś, z czym nie mogę sobie poradzić, ani nie chcę przedstawiać się w złym świetle, próbując pokazać swoje mocne strony. Celowo wybrałem sformułowanie „praktyczne”, aby sugerować, że nie jest profesjonalne. Jak mam wyrazić moje doświadczenie w C w moim CV, aby lepiej je wyjaśnić?


title: Czy jest korzyść z utrzymywania dużego projektu ze złym kodem?

text: Obecnie prowadzę duży projekt z ponad 100000 LOC. Kod używa MFC jako swojego szkieletu, generalnie ma tylko część interfejsu, która mocno wykorzystuje mfc api i część logiki biznesowej, która jest pełna złego kodu, mylącej logiki. Firma co roku dostarcza klientowi kilka drobnych funkcji (większość funkcji to dodanie kodu do istniejącego projektu, znalezienie jakiegoś odniesienia do jakiegoś api lub zmiennej i nie inaczej jest z naprawą 3-4 błędów), większość zadań to: rozwiązać problem i zoptymalizować wydajność . Podobnie jak inne firmy utrzymujące pozycję, ceni ludzi, którzy znają się na logice swojego produktu. Są osoby, które potrafią szybko zakończyć pracę przy takim projekcie, czy warto szkolić się jak taki programista? Czy warto pracować nad takim projektem przez długi czas?


title: Programista monitorujący schowek pod Windows

text: W trakcie dostosowywania rozwiązania „wstaw do schowka” do nowego zachowania stwierdziłem, że potrzebuję dobrego monitora schowka _programistów_ dla systemu Windows. Nie muszę mieć historii elementów w schowku, ale muszę zobaczyć szczegóły tego, co jest tam aktualnie umieszczone, w tym - to ważne - różne wersje (RTF/HTML/zwykły tekst/itp.) dla pewności że wszystkie te, które tam umieszczam, są poprawne. Wolne jest preferowane, ale tanie wystarczy. Jesteśmy sklepem Java, ale mogę zainstalować edycję Visual Studio Express, jeśli to ułatwi. (EDYCJA: Pole programistyczne to 64-bitowy system Windows 7) Jakieś sugestie?


title: Książki/źródła o wewnętrznym działaniu JavaScript

text: Kiedy kilka lat temu zacząłem studiować C++, wiele książek i tekstów, które czytałem, bardzo dokładnie wyjaśniało, w jaki sposób napisany kod przełoży się na konkretne operacje na sprzęcie (takie jak dynamiczna alokacja pamięci, arytmetyka wskaźników itp. ). Uważam, że te wyjaśnienia są niezwykle pomocne w pełnym zrozumieniu języka. Teraz studiuję JavaScript i poznaję cały paradygmat programowania funkcjonalnego, z funkcjami jako obiektami pierwszej klasy i tak dalej. Przeczytałem wiele tekstów i książek o tym, jak używać JavaScript, ale jeszcze nie natknąłem się na źródło, które wyjaśnia niskopoziomowe wewnętrzne działanie języka (np. jak funkcja jest reprezentowana w pamięci, co dokładnie dzieje się, gdy funkcja jest wywoływana z .apply() i dostarczany jest nowy kontekst itp.). Chyba można powiedzieć, że to, czego szukam, to wiedza potrzebna do napisania kompilatora/VM JS..? Jak środowiska wykonawcze obsługują różne aspekty języka na niskim poziomie. Czy ktoś wie, gdzie znaleźć książki lub tekst, który dotyczy bardzo niskiego poziomu szczegółów języka?


title: Sekcja Tło i Metody Badawcze (Pisanie Artykułu)

text: Po raz pierwszy piszę _artykuł_ o projekcie oprogramowania. Mam używać formatu papieru ACM UbiComp. Mam już strukturę, którą powinienem podążać, a po sekcjach Streszczenie, Wprowadzenie, Praca pokrewna znajduje się sekcja **Metody ogólne i badawcze**. Przeglądałem kilka artykułów, ale niektóre z nich albo go nie mają, mają tylko sekcję tła lub mają tylko sekcję metod badawczych. **Mam problem ze znalezieniem artykułu, który ma ten dział, a ponadto o czym muszę tu napisać**. Mój projekt dotyczy śledzenia lokalizacji Bluetooth i mam implementację i ocenę, więc nie jest to coś teoretycznego.


title: Jak działa algorytm potęgowania Fibonacciego przez kwadrat?

text: Jest to jeden z najlepszych algorytmów obliczania n-tej sekwencji Fibonacciego. potrzebuje czasu O(log(n)) do wykonania swojej pracy, więc jest tak wydajny. Znalazłem to gdzieś, ale nie wiem, jak to działa! Czy ktoś może mi powiedzieć, jak działa ten algorytm? Dziękuję. Oto kod: int fib3 (int n) { int i = 1, j = 0, k = 0, h = 1, t; podczas gdy (n > 0) { if (n % 2) { t = j * h; j = i * h + j * k + t; i = ja * k + t; } t = h * h; h = 2 * k * h + t; k = k * k + t; n /= 2; } powrót j; }


title: Czy mogę wyświetlić część kodu źródłowego wtyczki open source z licencją GPLv2?

text: Chciałbym opublikować część lub pełny kod źródłowy jednej lub więcej wtyczek (na licencji GPL, GPLv2, MIT lub bez licencji) na mojej stronie/blogu. Strona o której mówię jest dla każdego, bezpłatna w użytkowaniu i kopiowaniu kodu. Dodatkowo, czy to w porządku, jeśli nie podam żadnego linku do kodu źródłowego/wtyczki? Na pewno udzielę deweloperowi pełnych punktów.


title: Czy nowy programista powinien koncentrować się na jednej technologii, dopóki nie będzie w niej biegły?

text: Ok, od jakiegoś czasu uczę kumpla programowania. Bardzo szybko się uczy i jak na razie jest całkiem dobry w programowaniu. Ma jednak jeden „problem”, który staram się poprawić. Wskakuje i zaczyna programować na wysokim poziomie, nie ucząc się podstaw (stworzył w pełni rozwiniętą aplikację internetową, ale nadal nie zna się na paginacji ani zarządzaniu sesjami). To jednak nie jest problem. Ciągle skacze do nowych technologii (Node.js, MongoDB, EC2 itp.). Próbowałem mu powiedzieć, że powinien nauczyć się podstaw dotyczących wybranego przez siebie RDMS (MySQL), ponieważ używa go codziennie, zanim zainwestuje trochę czasu w naukę podstaw MongoDB (i prawdopodobnie przejście do czegoś nowego). Czy to ja jestem tutaj w błędzie, czy powinien starać się skoncentrować na jednej rzeczy na raz i stać się w tym naprawdę dobry?


title: Testy jednostkowe: „To zapach kodu, jeśli przeprowadzasz refaktoryzację i nie ma współpracowników”?

text: Czytam The Art of Unit Testing Roya Osherove'a. Jestem w punkcie 7.2. Pisanie testów możliwych do utrzymania, w których autor ma następującą uwagę na temat zapachu kodu: > UWAGA: Kiedy refaktoryzujesz stan wewnętrzny, aby był widoczny dla testu zewnętrznego, > czy można to uznać za zapach kodu (znak, że coś może być źle w > projekcie lub logice kodu)? To nie jest zapach kodu podczas refaktoryzacji > w celu ujawnienia współpracowników. **To zapach kodu, jeśli przeprowadzasz refaktoryzację i nie masz > współpracowników (więc nie musisz niczego zastępować ani kpić).** **EDYTUJ** : Co autor rozumie przez „współpracowników” to zależności. Niektóre z jego przykładów zależności to klasy, które uzyskują dostęp do bazy danych lub mają dostęp do systemu plików systemu operacyjnego. W tym miejscu definiuje skrót i zaczyna używać słowa collaborator: > _stub_ jest kontrolowanym zamiennikiem istniejącej **zależności** (lub > **collaborator** ) w systemie. Autor nie ma przykładu tego zapachu kodu i mam problem ze zrozumieniem/wyobrażeniem sobie, jak by to wyglądało. Czy ktoś może to trochę bardziej wyjaśnić i podać konkretny przykład?


title: Zalety/wady deklaracji parametrów/typów zwracanych w językach z wnioskowaniem o typie

text: Chciałbym poznać Twoją opinię na temat ręcznego deklarowania parametrów/typów zwracanych w językach z wnioskowaniem typu jak Scala. Czy jest jakiś powód, dla którego należy to zrobić lub nie, skoro kompilator może wywnioskować typy?


title: Programowanie funkcjonalne: czy krotki są realnym zamiennikiem typów?

text: Jakiś czas temu postanowiłem nauczyć się Haskella, aby pomóc w nauce bardziej "czysto funkcjonalnych" pomysłów, które mógłbym zastosować w F#. Od razu wydaje się, że w Haskell nie ma prawdziwych typów, takich jak te, które ma F#. Nie przeszkadza mi to, więc chciałem znaleźć sposób na usunięcie się z hybrydowego projektu OO/funkcjonalnego, którego używałem w F#, i naprawdę starałem się wyjść bezklasowo i naprawdę opracować projekt skoncentrowany na funkcjach. Pierwszą rzeczą, która przyszła mi do głowy podczas używania Haskella, było po prostu przekazywanie krotek, ponieważ mogą one przechowywać informacje w parach klucz-wartość, podobnie jak języki dynamiczne, ale nie mają składni konstruktora, jak typy F#. Na przykład w F#: wpisz DatabaseWorkValueItem(firstItem, secondItem, thirdItem) = Member Public x.FirstItem = FirstItem Member Public x.SecondItem = SecondItem Member Public x.ThirdItem = ThirdItem I to byłoby w moim nowym proponowanym projekcie: moduł DatabaseWorkValueItem = let firstItem (item, _, _) = pozwolę na pozbycie się secondItem (_,item, _) = pozwolę na pozom'trzecie rzecz (_,_, item) = item -- Zastąp konstruktor metodą let CreateValueItem (parametr:String, value:Object, sqlType :SqlDbType) = (parametr, wartość, sqlType) -- Zastąp właściwości większą liczbą metod let GetDataType (item :(String *Object * SqlDbType)) = trzeci element let GetParameter (item :(String *Object * SqlDbType)) = element firstItem let GetValue (item :(String *Object * SqlDbType)) = secondItem item Obaj mają ten sam pomysł. Jedna tworzy klasę typu Type z właściwościami ustawionymi podczas konstrukcji, a druga używa wszystkich funkcji do tworzenia i odczytywania krotki. Pytanie brzmi: czy jestem szalony, żeby się tym zawracać? Chociaż zdaję sobie sprawę, że F# ma wygodę przeskakiwania między dwoma paradygmatami, nie mogę oprzeć się wrażeniu, że jest to komfortowy koc do


title: Czy oprogramowanie do testowania jednostkowego może być używane do samego testowania jednostkowego?

text: QUnit reklamuje się na swojej stronie internetowej w następujący sposób: > ...może testować dowolny ogólny kod JavaScript, w tym sam siebie! Czy naprawdę możesz użyć oprogramowania do testów jednostkowych do przetestowania samego siebie? Czy wady oprogramowania nie oznaczają, że wyniki są niewiarygodne?


title: Jak udokumentować kod zabezpieczający/szyfrujący aplikacji?

text: Pracuję nad aplikacją, dla której opracowałem warstwę bezpieczeństwa. Wykorzystuje identyfikator sprzętowy dysku twardego, adres MAC i inny sprzętowy klucz szeregowy, aby zablokować oprogramowanie określonego elementu sprzętu. Natknąłem się na strony internetowe, które mówiły, że powinienem używać dość dziwnych nazw dla procedur/funkcji/zmiennych w warstwie bezpieczeństwa. Na przykład funkcja XtDmat: Boolean; var x3mat: ciąg; hhiTms: liczba całkowita; początek Wynik := Fałsz; x3mat := GWindosColr; //to zwraca HD ID hhiTms := GalilDriverID; //pobiera identyfikator kontrolera if (t5gFx=x3mat) i (hhiTms=f4teXX) then Result := True; //dopasuj identyfikatory do tych zapisanych w rejestrze; A dla okna dialogowego wiadomości: procedura Tfrm_MainWindow.mxProtectorExpiration( Sender: TObject ); rozpocznij lbl_Remaining.Caption := GetClassPath('xsedfers34;;''kd'); // zaszyfrowana wartość odszyfrowana i pokazana 'Pozostało 0 dni' lbl_Message.Caption := GetClassPath('qwe23vftTxxx ii gtr'); //odszyfruj i pokaż 'Ta licencja wygasła' btn_Go.Enabled := False; koniec; Zrobiłem to, ponieważ użyłem Delphi DEDE do dekompilacji mojego kodu i znalazłem nawet klucz rejestru „HCKU\software\myapplication” na widoku. Teraz jednak trudno jest 1. wyjaśnić kolegom z zespołu, dlaczego to zrobiłem (czyli nazwiska), 2. udokumentować, ponieważ nazwy nie mają sensu, 3. debugować, co przyprawia mnie o ból głowy. Czy ktoś może zasugerować dobry sposób na udokumentowanie tego typu kodu w tego typu sytuacji. Kod staje się więc łatwiejszy, ale nadal trudny do dekompilacji. Alternatywnie, można by zasugerować zaciemnianie dla Delphi.


title: Jak Delphi XE2 będzie działać na różnych platformach?

text: Czytałem więc trochę o Delphi XE2 i prawdopodobnie pójdę na światową trasę w Chicago, która pojawi się pod koniec tego miesiąca i zadam to pytanie, jeśli nikt nie może na nie odpowiedzieć tutaj. Zastanawiam się, w jaki sposób mój kod Delphi będzie wykonywany na komputerze Mac? Czy coś jeszcze będzie musiało zostać uruchomione (tj. Maszyna wirtualna), aby program działał?


title: Łączenie bibliotek w iOS?

text: To chyba zupełnie nieciekawe pytanie, ale brakuje mi w głowie linków, gdy myślę o łączeniu bibliotek w iOS. Zwykle po prostu dodaję nową bibliotekę, która została skompilowana krzyżowo i ustawiam ścieżki kompilacji i konsolidatora, nie wiedząc tak naprawdę, co robię. Mam nadzieję, że ktoś pomoże mi wypełnić luki. Weźmy na przykład bibliotekę OpenCV. Mam to całkowicie działające btw ze względu na naprawdę dobrze napisany samouczek ( http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en ), ale chcę tylko wiedzieć, co właśnie się dzieje. Myślę, że dzieje się tak, że kiedy buduję OpenCV dla iOS, twój kod wynikowy jest umieszczany w plikach .a. Ten kod obiektowy to tylko skompilowane pliki implementacji ( .m ). Jednym z powodów, dla których chciałbyś to zrobić, jest utrudnienie zobaczenia kodu źródłowego i uniknięcie konieczności kompilowania tego kodu za każdym razem. Pliki .h nie zostaną umieszczone w bibliotece ( .a ). Dołączasz .h do plików źródłowych, a te pliki nagłówkowe komunikują się w jakiś sposób z biblioteką kodu wynikowego ( .a ). Musisz również dołączyć pliki nagłówkowe dla swojej biblioteki w ścieżce budowania, a samą bibliotekę w ścieżce konsolidatora. Czy sposób wyświetlania bibliotek łączących jest poprawny? Jeśli nie, czy ktoś może mnie w tym poprawić?


title: Czy w Javie poświęciłbyś bezpieczeństwo typów na rzecz ładniejszego interfejsu programistycznego?

text: **Kiedy i dlaczego zrezygnowałbyś z bezpieczeństwa czcionek na rzecz ładniejszego interfejsu programistycznego?** Podam przykład: gdybyś miał wybór między dwoma agregatorami zdarzeń, który z nich wolałbyś i dlaczego? Wersja refleksyjna: SomeEvent.subscribe(instance, "nameOfAmethod"); //metoda wywoływana przez odbicie SomeEvent.fire(arg1, arg2); //wypalanie może być nawet wpisane statycznie Wersja z typowaniem statycznym: EventSystem.getEvent(SomeEvent.class).subscribe(new EventHandler<Payload>() { public void eventOccurred(Object sender, Payload payload) { //kod obsługi zdarzeń tutaj } }); EventSystem.getEvent(SomeEvent.class).fireEvent(ładunek); Należy pamiętać, że w Javie, ze względu na wymazywanie typów, nie można zaimplementować ogólnego interfejsu z różnymi parametrami typu więcej niż raz i trzeba uciekać się do anonimowych lub zewnętrznych klas dla handlerów. Teraz system zdarzeń odblaskowych ma ładniejszy interfejs użytkownika, ale tracisz bezpieczeństwo typu. Który wolisz? Czy utworzyłbyś puste klasy zdarzeń tylko ze względu na posiadanie symbolu, tak jak robi to Microsoft z PRISM w swoim agregatorze zdarzeń?


title: Dlaczego nigdy nie ma żadnych kontrowersji dotyczących oświadczenia switch?

text: Wszyscy wiemy, że stwierdzenie „goto” powinno być używane tylko w bardzo rzadkich przypadkach, jeśli w ogóle. Odradza się używanie wyrażenia `goto` niezliczoną ilość miejsc niezliczoną ilość razy. Ale dlaczego nigdy nie ma czegoś takiego w poleceniu `switch`? Rozumiem stanowisko, w którym zawsze należy unikać instrukcji „switch”, ponieważ wszystko, co ma „switch”, zawsze może być wyrażone przez „if...else...”, co jest również bardziej czytelne, a składnia instrukcji switch jest trudna zapamiętać. Czy sie zgadzasz? Jakie są argumenty przemawiające za utrzymaniem instrukcji „switch”? Może być również trudne w użyciu, jeśli to, co testujesz, zmienia się z, powiedzmy, liczby całkowitej na obiekt, wtedy C++ lub Java nie będą w stanie wykonać przełączenia, a C nie może wykonać przełączenia na czymś takim jak struktura lub unia. A technika opadania jest tak rzadko stosowana, że zastanawiam się, dlaczego nigdy nie żałowano, że w ogóle się przełączyła? Jedynym miejscem, które znam, gdzie jest to najlepsza praktyka, jest kod GUI, a nawet ten przełącznik jest prawdopodobnie lepiej zakodowany w sposób bardziej obiektowy.


title: zastępowanie zaimplementowanych metod klasy bazowej

text: Czytałem gdzieś, że łańcuch dziedziczenia zrywa się, gdy zmieniasz zachowanie z klasy pochodnej. Co oznacza tutaj „zmiana zachowania”? Czy zastąpienie już zaimplementowanej metody w klasie bazowej jest uważane za „zachowanie zmieniające”? A może autor ma na myśli zmianę sygnatur metod i wyników? Poza tym jestem gotowy Powielanie kodu nie jest dobrą praktyką, a jej utrzymanie jest koszmarem. Ponownie, czy przesłonięcie już zaimplementowanej metody w klasie bazowej jest uważane za „powielający kod”? Jeśli nie, co zostanie uznane za „powielający kod”? I


title: Zamawianie, jeśli warunki wydajności i czystego kodu

text: Jest to pytanie czysto projektowe, a przykład jest prosty, aby zilustrować to, o co pytam, i jest zbyt wiele kombinacji bardziej złożonego kodu, aby podać przykłady, które obejmowałyby ten temat. _Nie odnoszę się konkretnie do tego przykładu, po prostu używam tego przykładu, aby zilustrować to, do czego mam na myśli._ Czy w instrukcji if istnieje preferowany sposób uporządkowania warunków pod względem konwencji kodowania i, co ważniejsze, wydajności? Dla tak prostego przykładu wydajność nie będzie problemem, ale nie proszę o przegląd kodu per se, ale o zrozumienie koncepcji. Dwie alternatywy: 1. public double myStuff(int i) { // sprawdź nieprawidłową liczbę turystów if (i > 0) { // zrób coś tutaj return doubleSomething; } else { return Double.NaN; } } 2. public double myStuff(int i) { if (i <= 0) { return Double.NaN; } else { { // zrób coś tutaj return doubleSomething; } Gdyby instrukcja if stała się bardziej złożona i prawdopodobnie zagnieżdżona, w jakiej kolejności należy zająć się warunkami?


title: Zrozumienie plików cookie HTTP w Indy 10 dla Delphi XE2

text: Ostatnio pracowałem z serwerami/klientami HTTP Indy 10 w Delphi XE2 i muszę się upewnić, że dobrze rozumiem zarządzanie sesjami. Na serwerze mam „wiadro” sesji, czyli listę obiektów, z których każdy reprezentuje unikalną sesję. Nie używam nazwy użytkownika i hasła do uwierzytelniania użytkowników, ale raczej używam unikalnego klucza API, który jest wydawany klientowi i ma ważność. Gdy klient chce połączyć się z serwerem, najpierw loguje się, wywołując polecenie "login", które jest następującą ścieżką: `http://localhost:1234/login?APIKey=abcdefghij`. Serwer sprawdza ten klucz API w bazie danych i jeśli jest prawidłowy, tworzy nową sesję w zasobniku, wydaje nowe ciasteczko (unikalny ciąg) i ustawia ciasteczka odpowiedzi na `Success=Y` i `Cookie=abcdefghij` . Tutaj mam pytanie. Zakładając, że klient ma własną metodę zarządzania plikami cookie, klient otrzyma tę odpowiedź logowania z powrotem z serwera i _automatycznie_ zapisze pliki cookie w razie potrzeby. Wszelkie przyszłe żądania od klienta do serwera będą automatycznie wysyłać wraz z tymi plikami cookie, a strona klienta nie musi koniecznie martwić się ustawianiem tych plików cookie podczas wysyłania żądań do serwera. Prawidłowy? PS - Zadaję to pytanie tutaj na programrs.stackexchange.com, ponieważ nie uznałem za stosowne zadawać na stackoverflow.com. Jeśli ktoś uważa, że jest to wystarczające dla stackoverflow.com, daj mi znać.


title: Jednostki Entity Framework - Niektóre dane z usługi sieci Web - Najlepsza architektura?

text: Obecnie używamy Entity Framework jako ORM w kilku aplikacjach internetowych i do tej pory nam to odpowiadało, ponieważ wszystkie nasze dane są przechowywane w jednej bazie danych. Używamy wzorca repozytorium i mamy usługi (warstwę domeny), które z nich korzystają i zwracają jednostki EF bezpośrednio do kontrolerów ASP.NET MVC. Pojawił się jednak wymóg korzystania z zewnętrznego interfejsu API (za pośrednictwem usługi sieciowej), który zapewni nam dodatkowe informacje dotyczące użytkownika w naszej bazie danych. W naszej lokalnej bazie danych użytkowników będziemy przechowywać identyfikator zewnętrzny, który możemy przekazać do API w celu uzyskania dodatkowych informacji. Dostępnych jest sporo informacji, ale dla uproszczenia jedna z nich dotyczy firmy użytkownika (nazwisko, kierownik, pokój, stanowisko, lokalizacja itp.). Informacje te będą wykorzystywane w różnych miejscach w naszych aplikacjach internetowych, a nie w jednym miejscu. Więc moje pytanie brzmi, gdzie jest najlepsze miejsce do wypełnienia i uzyskania dostępu do tych informacji? Ponieważ jest on używany w różnych miejscach, nie ma sensu pobierać go ad-hoc wszędzie tam, gdzie używamy go w aplikacji internetowej - więc warto zwrócić te dodatkowe dane z warstwy domeny. Moją pierwszą myślą było po prostu stworzenie opakowującej klasy modelu, która będzie zawierała encję EF (EFUser) oraz nową klasę 'ApiUser' zawierającą nowe informacje - a gdy otrzymamy użytkownika, otrzymamy EFUser, a następnie dodatkowe informacje z API i wypełnij obiekt ApiUser. Jednak, chociaż byłoby to w porządku w przypadku pozyskiwania pojedynczych użytkowników, przewraca się, gdy uzyskuje się wielu użytkowników. Nie możemy trafić do API podczas pobierania listy użytkowników. Moją drugą myślą było po prostu dodanie metody singleton do encji EFUser, która zwraca ApiUser, i po prostu wypełnij ją w razie potrzeby. Rozwiązuje to powyższy problem, ponieważ uzyskujemy do niego dostęp tylko wtedy, gdy tego potrzebujemy. Lub ostatnią myślą było zachowanie lokalnej kopii danych w naszej bazie danych i zsynchronizowanie jej z API, gdy użytkownik się zaloguje. To minimalna praca, ponieważ jest to tylko proces synchronizacji - i nie mamy narzutu na trafienie DB i API za każdym razem, gdy chcemy uzyskać informacje o użytkowniku. Oznacza to jednak przechowywanie danych w dwóch miejscach, a także oznacza, że dane są nieaktualne dla każdego użytkownika, który nie logował się od dłuższego czasu. Czy ktoś ma jakieś rady lub sugestie, jak najlepiej poradzić sobie z tego rodzaju scenariuszem?


title: MonoTouch/MonoDroid + C# = godny zaufania?

text: > **Możliwe duplikaty:** > Programowanie w trybie MonoTouch a Objective-C dla iPhone/iPod/iPad > Czy jako programista C# nauczyłbyś się programować w języku Java na Androida, czy zamiast tego używać > MonoDroid? Bardzo ciekawią mnie narzędzia o nazwie MonoTouch i MonoDroid do tworzenia aplikacji na Androida, iPhone'a i iPoda za pomocą kodu c#. Pytanie: * Czy te narzędzia są wystarczająco dobre, aby tworzyć aplikacje, które będą używane w różnych środowiskach? * Czy te narzędzia mogą zastąpić oryginalny sposób tworzenia aplikacji? Jeśli tworzysz aplikację na Androida, często używasz do jej tworzenia Javy. * Czym różni się tworzenie aplikacji w Mono na Androida od tworzenia aplikacji na Windows Mobile Phone?


title: Czy programiści Androida muszą płacić podatki od sprzedaży?

text: Według wpisu na blogu RetroDreamer programiści Androida muszą płacić podatki od sprzedaży za sprzedaż aplikacji w krajach, w których obowiązują podatki od sprzedaży, podczas gdy programiści Apple nie płacą podatków bezpośrednio. Czy to dokładny opis? Czy tak, jak radzą sobie z tym różne osoby, które publikują aplikacje na Androida?


title: Zamknięcia projektów w Scrumie

text: W typowym środowisku programistycznym **zamknięcia projektu** oznaczają koniec projektu. 1. Zapisy projektu są uzupełniane i archiwizowane, 2. udostępniane zasoby, 3. zagadnienia i lekcje są dokumentowane, oraz 4. uroczysta kolacja/przyjęcie zorganizowane z okazji uroczystości. Ostatni krok jest opcjonalny, ale bardzo motywuje uczestników. :-) Porównaj to ze Scrumem. Wiem, że scrum działa na **historiach z zaległości**. Tak więc technicznie każda iteracja zamyka pewne historie. Tak więc są tutaj dwa pytania. 1. Jak w przypadku grupy, która pracuje nad **wieloma jednoczesnymi projektami**, wpasowują się zamknięcia projektów? 2. W przypadku projektu, który obejmuje **wiele grup**, jak ta koncepcja ma zastosowanie? A może termin zamknięcia projektu w ogóle nie dotyczy **projektów T&M**?


title: Dlaczego interfejsy są przydatne?

text: Od jakiegoś czasu uczę się i koduję w C#. Ale nadal nie mogę sobie wyobrazić użyteczności interfejsów. Przynoszą zbyt mało do stołu. Poza dostarczaniem podpisów funkcji, nie robią nic. Jeśli pamiętam nazwy i podpis funkcji, które mają zostać zaimplementowane, nie ma takiej potrzeby. Są po to, aby upewnić się, że wspomniane funkcje (w interfejsie) są zaimplementowane w klasie dziedziczącej. C# to świetny język, ale czasami daje wrażenie, że najpierw Microsoft tworzy problem (nie dopuszczając do wielokrotnego dziedziczenia), a potem dostarcza rozwiązanie, które jest dość żmudne. Takie jest moje rozumienie, które opiera się na ograniczonym doświadczeniu w kodowaniu. Jakie jest twoje zdanie na temat interfejsów? Jak często z nich korzystasz i co sprawia, że to robisz?


title: jakie jest główne zastosowanie interfejsu w programowaniu w świecie rzeczywistym (OOPS)

text: jakie jest główne narzędzie interfejsu. wiemy, że możemy zaimplementować dynamiczne zachowanie za pomocą interfejsu, ale myślę, że to nie tylko narzędzie. więc lubię wiedzieć, kiedy musimy napisać interfejs, a kiedy musimy przejść do klasy abstrakcyjnej. **pokaż mi 5 lub 10 najważniejszych zastosowań interfejsu w prawdziwym scenariuszu.** Przychodzi mi na myśl inne główne zastosowanie, że kierownik projektu lub kierownik zespołu zaimplementuje podstawowy szkielet poprzez interfejs, a inny programista będzie za nim podążał. więc proszę, pokażcie mi przykładowy kod kilka najważniejszych zastosowań interfejsu, które możemy zrobić z klasą abstrakcyjną lub klasą konkretną. **jeden facet powiedział mi w ten sposób, co nie jest dla mnie zbyt jasne** interfejsy to zdefiniowane kontrakty między klasami lub strukturami, konsumenci mogą wymienić implementację na inną, o ile spełniona jest ta sama umowa, czyli nazwy metod i podpis, który składa się na specyfikację, z którą klasy i struktury mogą działać, a nie z konkretną implementacją. Ważną częścią interfejsów jest wiedza, kiedy ich używać, aw rzeczywistości jest to dość proste, gdy chcesz, aby dwa lub więcej niepowiązanych ze sobą obiektów miały tę samą wspólną funkcjonalność, ale niekoniecznie tę samą implementację, której chcesz używać interfejsów; w przeciwnym razie, gdy masz powiązane obiekty, które mają wspólną funkcjonalność i implementację, możesz rozważyć użycie klasy abstrakcyjnej zamiast interfejsu. **to nie jest szczególnie jasne**, gdy chcesz, aby dwa lub więcej niepowiązanych ze sobą obiektów miało tę samą wspólną funkcjonalność, ale niekoniecznie tę samą implementację, której chcesz używać interfejsów; w przeciwnym razie, gdy masz powiązane obiekty, które mają wspólną funkcjonalność i implementację, możesz rozważyć użycie klasy abstrakcyjnej zamiast interfejsu. byłoby miło, gdyby ktoś wyjaśnił przykładowym kodem, kiedy przejść do interfejsu, a kiedy klasę abstrakcyjną. pokaż mi kilka najważniejszych ważnych obszarów, które zawsze dotyczą interfejsu z przykładowym kodem lub najlepszych zastosowań interfejsu z przykładowym kodem. dzięki


title: Programowanie do interfejsu w Javie

text: Jakie jest prawdziwe wykorzystanie interfejsów w Javie? Co oznacza programowanie interfejsów? Słyszałem te rzeczy kilka razy, ale nie wiem, co to jest i dlaczego jest używane.


title: Klasa abstrakcyjna, interfejs: różnica i zastosowanie

text: > **Possible Duplicate:** > Kiedy używać klas abstrakcyjnych zamiast interfejsów i metod rozszerzających w > C#? Jaka jest różnica między klasami abstrakcyjnymi a interfejsami w javie? I w jakich okolicznościach powinienem zdecydować się na stworzenie klasy abstrakcyjnej lub interfejsu. Jakie są punkty, o których muszę pamiętać przed wybraniem jednego z powyższych?


title: Jaki jest sens interfejsu?

text: > **Possible Duplicate:** > Kiedy używać klas abstrakcyjnych zamiast interfejsów i metod rozszerzających w > C#? > Jakie są inne powody, by pisać interfejsy zamiast abstrakcyjnych > klas? To pytanie również brzmiało dla mnie trochę trywialnie, dopóki sam się nad tym nie zastanowiłem. Jaki jest sens interfejsu Java? Czy to naprawdę odpowiedź Javy na wielokrotne dziedziczenie? Pomimo używania interfejsów przez jakiś czas, nigdy nie myślałem o tym wszystkim. Wiem, czym jest interfejs, ale wciąż zastanawiam się, dlaczego.


title: Jakie są inne powody, by pisać interfejsy zamiast klas abstrakcyjnych?

text: > **Possible Duplicate:** > Kiedy używać klas abstrakcyjnych zamiast interfejsów i metod rozszerzających w > C#? Kiedy czytałem i przeglądałem kody wykorzystujące klasy abstrakcyjne, mogłem to uzasadnić, ponieważ pozwala to na dodanie wspólnych metod dla dowolnych podklas rozszerzających klasę abstrakcyjną. Na przykład, jeśli zachowanie obiektów jest podobne, użyłbym klas abstrakcyjnych do zaimplementowania pozbawionych treści metod abstrakcyjnych, które są wymagane dla każdego obiektu, i po prostu użyję metod nieabstrakcyjnych już zaimplementowanych w klasie abstrakcyjnej. Przychodzi mi do głowy scenariusz dotyczący wielu typów plików multimedialnych (avi, mpg, mp4) i miałbyś wspólne metody dla wszystkich plików, a także metody abstrakcyjne specyficzne dla mediów, które należy zaimplementować. Jednak jestem trochę zdezorientowany, dlaczego świadomie tworzysz interfejs, który nie może zawierać żadnych nieabstrakcyjnych metod. Czytając tę stronę, stwierdza, że ukrywa informacje (masz na myśli abstrakcyjne metody?). > Ukrywanie szczegółów i udostępnianie wspólnych interfejsów nazywa się enkapsulacją, > co jest analogią do sprawiania, by obiekt wyglądał, jakby był przykryty kapsułą (w tym przypadku interfejsem). Umożliwia to dwóm obiektom różniącym się > reprezentacją wewnętrzną, ale posiadającymi wspólny interfejs wymiennie > użyteczny (tzw. wymienność). Interfejsy pozwalają również na ułatwienie > korzystania ze struktury danych i ochronę stanu obiektu przed błędnymi danymi wejściowymi > i modyfikacją struktury. Czy to oznacza, że wszystkie obiekty, które mają wspólne, zaimplementowane zachowania, mogą być traktowane tak, jakby były tą samą kategorią? Więc dla przykładu pliku multimedialnego, czy oznacza to, że jakikolwiek konkretny typ pliku multimedialnego implementujący `interfejs MediaFile` ma być przekazany jako argumenty metody zajmującej się tego typu obiektami? public class ServiceClass { public ServiceClass() { //bez argumentów konstruktor } public boolean runService(ICollaborator collaborator){ if("success.equals(collaborator.executeJob())){ return true; } else { return false; } } } Ale czy nie możesz zrobić powyższego z klasą abstrakcyjną? Czy możliwość posiadania metody nieabstrakcyjnej nie jest lepsza niż posiadanie jej w ogóle na przyszłość, gdy nagle potrzebujesz istniejącej metody, która będzie miała zastosowanie do wszystkich klas rozszerzających klasę abstrakcyjną? A może różnica polega na korzystaniu z Interfejsu, możliwości całkowitej ochrony implementacji danych? Po raz kolejny nie widzę, w jakich przypadkach byś go użył. Poza tym często implementuję `ActionListener`, aby mieć metodę `actionPerformed`.


title: Co to jest interfejs w języku programowania Java?

text: W zeszłym tygodniu mój wykładowca uczył nas o interfejsach w Javie. Jednak tak dobrze nie zrozumiałem jej wyjaśnienia. Czy ktoś ma dobry opis lub wyjaśnienie interfejsów Java i powody, aby z nich korzystać?


title: Dlaczego interfejsy API zazwyczaj składają się z interfejsów?

text: Zaczynam od projektowania Java API i czytając istniejące bazy kodu, odkryłem, że większość API składa się tylko z interfejsów z ich implementacjami w innym pakiecie. Po przeczytaniu, że interfejsy są ogólnie bardziej problematyczne w użyciu/utrzymaniu niż klasy abstrakcyjne, dlaczego nie używa się klas abstrakcyjnych zamiast interfejsów?


title: Czy używanie interfejsów w kodzie wewnętrznym to dobry pomysł?

text: Pracuję nad zestawem testów automatycznych, których używamy wewnętrznie w pracy. Ostatnio projektowaliśmy klasy, które oprócz dziedziczenia implementują interfejsy. Jak rozumiem, interfejsy w Javie służą do realizacji kontraktu. Klasa, która implementuje interfejs, musi zawierać implementacje wszystkich członków tego interfejsu. Działa to naprawdę dobrze w przypadku budowania bibliotek lub obiektów, które mają być używane przez zewnętrzne zespoły lub osoby, ponieważ gwarantuje, że pewne metody będą obecne. A co z kodem, który jest w całości przechowywany w jednym zespole w jednej lokalizacji? (Załóżmy, że ten kod pozostanie wewnętrzny, w przeciwnym razie to pytanie zmieni się całkowicie.) Jeśli mogę po prostu przejść do mojej historii VCS lub zapytać członka zespołu o zmiany w kodzie, czy naprawdę muszę wymusić te zmiany za pomocą interfejsów? Nawet jeśli zespół jest duży, nadal możesz opracować konwencje lub testy, aby zweryfikować rzeczy. Czuję, że po prostu robimy więcej dla siebie, używając interfejsów, ale może są dodatkowe argumenty. UWAGA: Ten projekt jest projektem Java i tak pozostanie. Interfejsy są tutaj instancjami „interfejsu” z całą składnią i regułami, które mają zastosowanie.


title: Dlaczego powinienem używać interfejsów, jeśli implementacja w większości pozostanie taka sama?

text: > **Możliwy duplikat:** > Dlaczego interfejsy są przydatne? W naszej firmie mamy architekturę zorientowaną na usługi w naszej aplikacji asp.net. Używamy interfejsów dla każdej crap klasy. To ogromny koszt. Klasy usług, dostawcy danych itd... wszystkie używają interfejsów, ale **praktycznie** moglibyśmy również zrezygnować z tych interfejsów i po prostu użyć typu klasy. Dlaczego więc robimy to tak skomplikowane i tracimy dużo produktywności?


title: Kiedy używać klas abstrakcyjnych zamiast interfejsów z metodami rozszerzającymi w C#?

text: „Klasa abstrakcyjna” i „interfejs” to podobne pojęcia, przy czym interfejs jest bardziej abstrakcyjny z nich. Jednym z czynników różnicujących jest to, że w razie potrzeby klasy abstrakcyjne zapewniają implementacje metod dla klas pochodnych. Jednak w C# ten czynnik różnicujący został zmniejszony przez niedawne wprowadzenie metod rozszerzających, które umożliwiają dostarczanie implementacji dla metod interfejsu. Innym czynnikiem różnicującym jest to, że klasa może dziedziczyć tylko jedną klasę abstrakcyjną (tj. nie ma dziedziczenia wielokrotnego), ale może implementować wiele interfejsów. Dzięki temu interfejsy są mniej restrykcyjne i bardziej elastyczne. **Więc w C#, kiedy powinniśmy używać klas abstrakcyjnych zamiast interfejsów z metodami rozszerzającymi?** Godnym uwagi przykładem modelu interfejs + metoda rozszerzająca jest LINQ, gdzie funkcjonalność zapytań jest dostarczana dla dowolnego typu, który implementuje `IEnumerable` poprzez mnogość metod rozszerzania.


title: Zrozumienie interfejsów

text: > **Possible Duplicate:** > Kiedy używać klas abstrakcyjnych zamiast interfejsów i metod rozszerzających w > C#? > Dlaczego interfejsy są przydatne? > Jaki jest sens interfejsu? > Jakie są inne powody, by pisać interfejsy zamiast abstrakcyjnych > klas? > Jaki jest sens posiadania interfejsu w każdej klasie usług? > Czy to zły nawyk nieużywania interfejsów? Czytam Microsoft Visual C# 2010 Step by Step, który moim zdaniem jest bardzo dobrą książką wprowadzającą w język C#. Właśnie skończyłem czytać rozdział o interfejsach i chociaż zrozumiałem składnię tworzenia i używania interfejsów, mam problem ze zrozumieniem, dlaczego powinienem ich używać? Popraw mnie Jeśli się mylę, ale w interfejsie możesz deklarować tylko nazwy i parametry metod. Ciało metody powinno być zadeklarowane w klasie, która dziedziczy interfejs. Dlaczego więc w tym przypadku miałbym deklarować interfejs, jeśli zamierzam zadeklarować całą metodę w klasie, która dziedziczy ten interfejs? O co chodzi? Czy ma to coś wspólnego z faktem, że klasa może dziedziczyć wiele interfejsów?


title: Jak zsynchronizować odświeżanie strony internetowej z wgrywaniem plików z aplikacji Windows?

text: Mam dość prostą aplikację w .net, która przesyła obrazy w stałych odstępach czasu na serwer ftp. Nazwa pliku jest konkretna. Potrzebuję mieć stronę internetową, która odświeża **ale** chcę, aby stało się to dopiero po zakończeniu przesyłania. Jak znaleźć sposób na stwierdzenie, że przesyłanie zostało zakończone? A jeśli rozwiązanie ma dotyczyć zmiany nazwy i usuwania plików tymczasowych, czy powinienem to zrobić z aplikacji Windows czy po stronie serwera? Aktualizacja dzięki: Co by było, gdybym mógł znaleźć sposób, aby sprawdzić, czy nazwa pliku jest **poprawnym** jpg? Mam na myśli, że jeśli transfer się nie skończył, to sprawdzenie powinno zwrócić fałszywe .. pomysły?


title: Konwencja stylu Pythona lower_case_with_underscores: podkreślenia nie są popularne?

text: PEP8 zaleca używanie > małych liter, ze słowami oddzielonymi podkreśleniami, aby poprawić > czytelność nazw zmiennych i funkcji. Widziałem to interpretowane jako `lower_case_with_underscores` przez większość ludzi, chociaż w praktyce iw natywnych metodach Pythona wydaje się, że `lowercase withoutunderscores` jest bardziej popularne. Wygląda na to, że ścisłe przestrzeganie PEP8 byłoby niezręczne, ponieważ wydaje się sugerować mieszanie `lower_case_with_underscores` i `lowercase without underscores`, co byłoby niespójne. Jaka jest twoja interpretacja nazw zmiennych PEP8 i czego właściwie używasz w praktyce? (Osobiście lubię `lowerCamelCase` jako kompromis między czytelnością a łatwością pisania.)


title: Kiedy można nazwać siebie „rubinistą”?

text: Zastanawiałem się, co w ogóle oznaczał ten termin. Czy ma to związek z ilością wiedzy na temat języka Ruby, czy tylko z prostym pomysłem na jego użycie. Kiedy można nazwać siebie „rubinistą”?


title: Etykieta GitHub dotycząca duplikowania repozytorium w celu zmiany funkcjonalności

text: Znalazłem projekt GitHub, do którego chciałbym dodać kilka funkcji. Po skontaktowaniu się z opiekunem zmiany nie są zgodne z kierunkiem, w którym zmierza, ale jest zainteresowany tym, co z tym zrobię. Jaka jest etykieta GitHub dotycząca używania jednego repozytorium jako bazy dla innego projektu, który prawie na pewno nigdy nie zostanie połączony z oryginałem? Zamiast rozwidlać, mój instynkt polega na stworzeniu zupełnie nowego repozytorium i ręcznym skopiowaniu do niego aktualnego stanu oryginalnego kodu. Następnie w dokumentacji podaj kredyt i link do oryginalnego autora/repo dla punktu wyjścia. Czy jest to akceptowalne, czy jest jakieś inne standardowe podejście?


title: Staram się stworzyć wizualną reprezentację czegoś, ale nie wiem jakich słów użyć, więc postaram się to opisać

text: Mój zespół projektowy tworzy witrynę, która będzie wykorzystywać głosowanie w stylu reddit do śledzenia opinii użytkowników na różne tematy i wykorzystywać dane do tworzenia „mapy ciepła”. Mapę cieplną mówię w cudzysłowie, ponieważ nie jestem pewien, czy to właściwy termin - nie mam matematyki, aby to poprawnie wyrazić. Pomysł polega na tym, że będziesz mógł zobaczyć na dwuwymiarowym wykresie, jak twoje opinie mają się do opinii innych wyborców w twojej gminie i polityków, którzy obecnie ubiegają się o urząd. Pomoże to wyborcom w podejmowaniu bardziej świadomych decyzji dotyczących głosowania. Nie jestem pewien, jak to zakodować, ani nawet po co zacząć googlować. Czy ktoś może zasugerować kierunek? ** Zmienię tytuł na bardziej przydatny, gdy będę miał więcej informacji, przepraszam


title: Jak przezwyciężyć strach przed budowaniem aplikacji internetowej z systemem płatności cyklicznych?

text: Jestem programistą Ruby on Rails. Chciałbym stworzyć aplikację internetową. Pozwolę użytkownikom uzyskać płatną subskrypcję na korzystanie z produktu. Potrzebuję więc systemu rozliczeń cyklicznych (np. przez paypal). Ale jest obawa, że poniosę porażkę i popełnię jakieś złe błędy, bo załatwię pieniądze od innych ludzi.... niezależnie od przestrzegania instrukcji m.in. Ryan Bates on Railscasts, jak wdrożyć taki system płatności cyklicznych. Jaka jest twoja rada, aby przezwyciężyć strach przed zbudowaniem takiego produktu? Jakie ryzyka muszę obliczyć przy projektowaniu takiego systemu?


title: Co robisz, aby zachować produktywność podczas pracy na własną rękę?

text: Praca w odosobnieniu, nad fragmentem kodu, którego nikt inny nie zobaczy przez kilka tygodni, jest wyczerpująca. Szukam pomysłów, aby spróbować utrzymać produktywność i motywację. Co robisz, aby pozostać zmotywowanym i produktywnym, gdy otrzymujesz długoterminowe zadanie programistyczne i pracujesz sam (na przykład w domu, bez kolegów z zespołu lub współpracowników)?


title: Usługi znakowania dla bezpiecznej obsługi; Adnotacja czy dziedziczenie?

text: Mamy wiele usług, niektóre wymagają pewnego zabezpieczenia, inne nie. Chcemy w prosty sposób określić kodem, czy usługa będzie bezpieczna, czy nie. Jaki byłby lepszy sposób: adnotacja czy dziedziczenie? public class SomeServiceImplementation : BaseSecureService, ISomeService lub [SecureService] public class SomeServiceImplementaion : ISomeService


title: Czy to śmieszny sposób na ustrukturyzowanie schematu DB, czy też całkowicie czegoś mi brakuje?

text: Zrobiłem sporo pracy z relacyjnymi bazami danych i myślę, że całkiem dobrze rozumiem podstawowe koncepcje dobrego projektowania schematów. Niedawno otrzymałem zadanie przejęcia projektu, w którym DB został zaprojektowany przez wysoko opłacanego konsultanta. Proszę daj mi znać, jeśli moje przeczucie - "WTF??!?" - jest uzasadnione, czy ten gość jest takim geniuszem, że działa poza moim królestwem? Wspomniana DB to wewnętrzna aplikacja służąca do wprowadzania wniosków od pracowników. Wystarczy spojrzeć na małą jego część, aby uzyskać informacje o użytkownikach i informacje o złożonym wniosku. Zaprojektowałbym tak: ### Tabela użytkowników: UserID (klucz podstawowy, indeksowany, bez duplikatów) Imię Nazwisko Dział ### Tabela żądań RequestID (klucz podstawowy, indeksowany, bez duplikatów) <...> różne pola danych zawierające szczegóły żądania UserID -- klucz obcy powiązany z tabelą User Proste, prawda? Konsultant zaprojektował go w ten sposób (z przykładowymi danymi): ### Tabela_użytkowników Identyfikator użytkownika Imię Nazwisko 234 Jan Kowalski 516 Jan Kowalski 123 Foo Bar ### Tabela działów Nazwa działu 1 Sprzedaż 2 HR 3 IT ### Tabela działu użytkowników Identyfikator działu użytkownika Identyfikator użytkownika Dział 1 234 2 2 516 2 3 123 1 ### RequestTable RequestID UserID <...> 1 516 blah 2 516 blah 3 234 blah Cała baza danych jest skonstruowana w ten sposób, z każdym elementem danych zawartym w osobnej tabeli, z numerycznymi identyfikatorami łączącymi wszystko razem . Najwyraźniej konsultant przeczytał o OLAP i chciał „szybkości wyszukiwania liczb całkowitych”. Ma również dużą liczbę procedur zapisanych w bazie, które mogą odwoływać się do wszystkich tych tabel. Czy ten projekt jest prawidłowy dla małej lub średniej wielkości bazy danych SQL? Dziękujemy za komentarze/odpowiedzi...


title: Czy korzystanie z CouchDB to dobry pomysł?

text: Czy dobrym pomysłem jest użycie CouchDB dla aplikacji webowej, która będzie niezależna od platformy (od tabletu do komputera): * Aplikacja jest dużą formą, którą muszę móc dowolnie modyfikować. * Muszę również zeskanować wyniki, aby pobrać dane, aby wysłać plik, aby pomóc klientowi. * Muszę mieć możliwość przesłania wyników na serwer główny. * Chcę głównie korzystać z aplikacji w trybie offline i online do woli. Dane to pytania z odpowiedziami i komentarzami z nimi powiązanymi. Na koniec generowany jest procent dla użytkownika i w zależności od wyniku zostanie wykonane wywołanie innej aplikacji, aby „wysłać” informacje do użytkownika w zależności od jego wyników. Aplikacja musi być w trybie offline, ponieważ nie wiemy, czy użytkownik jest podłączony do Internetu w momencie odpowiadania na pytania. Dane muszą być takie same na wszystkich platformach (replikacja jest dana). Nie mogę polegać na przeglądarce, nawet jeśli aplikacja będzie zbudowana w HTML5, CSS i JavaScript. Czy jest to możliwe z CouchDB i czy jest to zbyt duży mandat dla jednej osoby? Jeśli nie ma wystarczająco dużo szczegółów, zapytaj, a wyjaśnię dokładniej. **EDYTUJ:** Po wszystkich twoich odpowiedziach oto, co doszedłem do wniosku. * Będę używał SQLite i zsynchronizował go z naszymi bazami danych sql. * NoSQL nie jest przeznaczony dla aplikacji, nad którymi pracuję. * Korzystanie z tego, co wiesz, jest czasem dobrym rozwiązaniem * Jeśli nie wiesz, jak korzystać z technologii i zamierzasz użyć jej do dużego projektu, sam kodujesz. nie.


title: Czy abstrakcje muszą zmniejszać czytelność kodu?

text: Dobry programista, z którym pracuję, powiedział mi niedawno o pewnych trudnościach z zaimplementowaniem funkcji w kodzie, który odziedziczyliśmy; powiedział, że problem polega na tym, że kod jest trudny do naśladowania. Od tego momentu zajrzałem głębiej w produkt i zdałem sobie sprawę, jak trudno było zobaczyć ścieżkę kodu. Używał tak wielu interfejsów i abstrakcyjnych warstw, że próba zrozumienia, gdzie wszystko się zaczęło, a gdzie się skończyło, była dość trudna. Przypomniało mi się czasy, w których przeglądałem poprzednie projekty (zanim byłem tak świadomy zasad czystego kodu) i okazało się, że poruszanie się po projekcie jest niezwykle trudne, głównie dlatego, że moje narzędzia do nawigacji w kodzie zawsze wylądują na interfejsie. Znalezienie konkretnej implementacji lub miejsca, w którym coś zostało połączone w architekturze typu plugin, wymagałoby dużo dodatkowego wysiłku. Wiem, że z tego właśnie powodu niektórzy programiści ściśle odrzucają kontenery wstrzykiwania zależności. To tak bardzo myli ścieżkę oprogramowania, że trudność nawigacji w kodzie wzrasta wykładniczo. Moje pytanie brzmi: kiedy framework lub wzorzec wprowadza tak duże obciążenie, czy warto? Czy jest to objaw źle wdrożonego schematu? Wydaje mi się, że programista powinien spojrzeć na szerszy obraz tego, co te abstrakcje wnoszą do projektu, aby pomóc mu przetrwać frustrację. Zwykle jednak trudno jest sprawić, by zobaczyli tak duży obraz. Wiem, że nie udało mi się sprzedać potrzeb IOC i DI z TDD. Dla tych programistów korzystanie z tych narzędzi zbyt mocno ogranicza czytelność kodu.


title: Jakiego back-endowego języka programowania internetowego użyć

text: Mam projekt, w którym będę współpracował, aby zbudować dość prostą witrynę z dostępem do bazy danych. Ja zajmę się back-endem, a mój kolega zajmie się projektowaniem stron internetowych. Problem polega na tym, że mój kolega pracował tylko z programistami PHP, a ja mam dużo większe doświadczenie w Perlu. Dostępne opcje to albo nauczenie się PHP podczas wykonywania projektu, albo nauczenie się mojego kolegi, jak projektować w Perlu. (Myślę, że trzecią opcją byłoby odrzucenie projektu, ponieważ ta przeszkoda jest zbyt nie do pokonania). Jeśli odpowiedzią jest użycie Perla, następnym pytaniem jest, do którego modułu szablonów będzie najłatwiej dostosować mój kolega projektant stron internetowych, który zna PHP. HTML::Mason? HTML::Szablon? Coś innego?


title: Dokument projektu z kodu

text: Nie znam się zbyt dobrze na dokumentowaniu/projektowaniu systemów. Mam do utrzymania aplikację napisaną w C# - pracującą jako usługa Windows. Jednak nie ma dokumentacji dla tego systemu, co sprawia, że znalezienie miejsca, w którym wystąpił jakiś problem (koncepcyjnie), jest naprawdę żałosne. Chciałbym wiedzieć, jak najlepiej zaprojektować/dokumentować to (przy użyciu obecnego kodu) ręcznie lub najlepiej automatycznie, abym mógł dokładnie zidentyfikować problemy. Mam wrażenie, że diagram sekwencji prawdopodobnie nie pomoże. Również proszę, poprowadź mnie, jeśli biorę to po złej stronie?


title: Działania w zakresie zapewnienia jakości

text: > **Możliwy duplikat:** > Pytanie o weryfikację wymagań Zadałem pytanie, ale je usunąłem, ponieważ zostało trochę źle zrozumiane. Jeśli kontrola jakości jest rzeczywistym testowaniem, **jakie są najczęstsze prawdziwe działania związane z zapewnieniem jakości?** Przeczytałem tę weryfikację (przeglądy, inspekcje..), ale nie ma to dla mnie większego sensu, ponieważ wygląda bardziej jak kontrola jakości, ponieważ wymienione tutaj: _DZIAŁ OPIEKI ZDROWOTNEJ I OBSŁUGI LUDZKIEJ WYDAJNOŚĆ PRZEDSIĘBIORSTWA RAMY CYKLU ŻYCIA Przewodnik po praktykach_ > Weryfikacja – „Czy budujemy produkt właściwie?” **Weryfikacja to > technika kontroli jakości**, która służy do oceny systemu lub jego > komponentów w celu określenia, czy produkty projektu spełniają > określone wymagania. Podczas weryfikacji procesy projektowe są > przeglądane i badane przez członków zespołu IV&V w celu > zapobiegania pominięciom, wykrywania problemów i zapewnienia > prawidłowego rozwoju produktu. > Niektóre czynności weryfikacyjne mogą obejmować takie elementy, jak: • Weryfikacja > wymagań względem zdefiniowanych specyfikacji • Weryfikacja projektu względem > zdefiniowanych specyfikacji • Weryfikacja kodu produktu względem określonych > standardów • Weryfikacja warunków, płatności itp. względem > umów I odwrotnie ( _zakres wiedzy o zarządzaniu projektami_ \- wynik google) **Weryfikacja to proces lub technika zapewniania jakości stosowana przez ...**


title: Programowanie na Androida w C i C++

text: Jestem programistą C, C++. Interesuję się rozwojem mobilnym. Chcę wiedzieć, jak mogę tworzyć aplikacje na Androida przy użyciu C i C ++, przeczytałem, że dostarczają zestaw dla programistów C, C ++, ale nie ma on wszystkich funkcji zestawu Java. Czy powinienem wybrać zestaw programistyczny C/C++, czy lepiej nauczyć się języka Java, ponieważ mogą nie zapewniać wszystkich funkcji w przyszłości?


title: Czy istnieją rodzaje oprogramowania, których nie można opracować we wszystkich głównych językach programowania?

text: Chciałbym wiedzieć, czy niektóre z głównych języków programowania absolutnie nie mogą być używane do tworzenia bardzo specyficznych typów oprogramowania. Przez główny język programowania rozumiem C++, C#, Java, Ruby, Python. Przez „nie można opracować” rozumiem, że nie można go rozwijać lub jest to nierealne ze względu na wydajność, trudności w implementacji itp. Zawsze myślałem, że każdy język programowania może być użyty do rozwiązania każdego problemu, ale ostatnio byłem myśląc, że niektóre języki są nieodpowiednie dla niektórych projektów. Jeśli możesz podać przykłady takich zastosowań, byłoby to mile widziane. Dziękuję.


title: Jak działa powiadomienie o „nowej wiadomości”?

text: Interesuje mnie na przykład implementacja „nowej wiadomości” w Gmailu. Wiem, że ajax jest używany, ale co innego jest używany po stronie serwera i klienta. Czy możesz mi wyjaśnić scenariusz? Gmail to tylko próbka podtrzymująca moje pytanie. Interesuje mnie najtańsze rozwiązanie, które pozwala wyświetlać nowe treści w sposób asynchroniczny bez zdarzenia wywołanego przez użytkownika. Jeśli znasz zasób wyjaśniający optymalny sposób wdrożenia takiej aplikacji, docenię to. TY


title: Technika radzenia sobie z okazjonalnym blokowaniem json api?

text: Mam aplikację internetową, która od czasu do czasu (po pewnym bezczynności) blokuje bardzo proste żądanie małych porcji danych (30 ~ 50 kb) do około 20 sekund. Zakładając, że nie mogę zmienić ani zmienić API, czy istnieje jakiś wzorzec w javascript lub jquery, aby pomieścić taką sytuację? Zastanawiam się, aby ustawić limit czasu na około 5 sekund dla wywołania interfejsu API i ponowić żądanie ajax — za pośrednictwem $.ajax() jquery z argumentem limitu czasu. Wyobrażam sobie, że może to być odpowiednik odświeżania przez użytkownika wolno ładującej się strony. Dzięki za twoje przemyślenia.


title: Jakie są dobre wskazówki dotyczące układu biura dla małego zespołu programistów?

text: Nasze biuro wkrótce się przeprowadza i mamy możliwość przeprojektowania naszej przestrzeni biurowej. Mamy pięciu programistów i kilku testerów, współpracujących z kierownikiem projektu i analitykiem biznesowym. Poproszę o Twoje pomysły na idealną aranżację biura dla małego zespołu programistycznego, takiego jak nasz.


title: Ogólny termin określający „przedmioty” a „typy podstawowe”?

text: Jak dokładnie nazywać **typy danych ze strukturą logiczną** (takie jak struktury C, C++ lub obiekty Java) w porównaniu z **podstawowymi typami danych** (takimi jak typy liczbowe, znaki, wartości logiczne...) niezależnie od jakichkolwiek język lub paradygmat. (Szukam słów abstrakcyjnych/akademickich z informatyki).


title: Czy trivium można wykorzystać do skutecznego nauczania języków programowania?

text: Trivium jest systematyczną metodą krytycznego myślenia w celu uzyskania pewności z każdej informacji, która składa się z: * gramatyki * logiki * retoryki Joseph, Sister Miriam (2002). w The Trivium: The Liberal Arts of Logic, Grammar and Retoric. Paul Dry Books, Inc._ krótko opisuje te etapy: > Gramatyka dotyczy rzeczy takiej, jaka jest symbolizowana, Logika dotyczy rzeczy takiej, jaka jest znana, a Retoryka dotyczy rzeczy takiej, jaka jest -> it-is-komunikowane Kiedy dowiedziałem się o trivium, zdałem sobie sprawę, że będzie to najlepszy sposób na podejście do nauczania języków programowania. Przystosowane do języków programowania byłyby to etapy: * na etapie gramatyki byłaby faza nauki, w której pisanie dowolnego programu, zabawa wszystkimi wariantami składni, proste struktury danych, używanie wszystkich słów kluczowych, typów danych, tworzenie prostych programów , byłby celem. * na etapie logicznym będzie nauczanie algorytmów, złożonych warunków warunkowych, jako cel uczenia się * na etapie retorycznym może być nauczanie paradygmatów programowania, programowania proceduralnego, OOP, narzędzi do współpracy i wersjonowania (git) itp. Jakie byłyby wady metoda trivium zastosowana do języków programowania, jakie byłyby przedmioty uczenia się, które nie mogłyby zostać zintegrowane z metodą trivium i czy kolejność etapów trivium (pierwsza gramatyka, druga logika itd.) miałaby zastosowanie do nauki programowania?


title: Moje żądanie ściągnięcia z github zostało scalone, jaka jest konwencja na tym etapie?

text: Rozdzieliłem projekt na Github, dokonałem małej zmiany i wysłałem żądanie ściągnięcia do pierwotnego opiekuna, który go ściągnął. Teraz ostatnim zatwierdzeniem jest `Połączone żądanie ściągnięcia #11 z my_username/master`. Robię to po raz pierwszy, więc nie jestem pewien, jaka jest teraz etykieta: wykonałem `git pull upstream master`, potem `git push origin master`, a teraz ostatni commit w moim własnym repozytorium czyta „Połączone żądanie ściągnięcia #11 z my_username/master”, co wydaje mi się dość dziwne. Czy jest to sposób, w jaki ludzie zwykle to robią, czy jest coś, co muszę zrobić, aby „oczyścić historię” czy coś takiego? Uwaga: ponieważ była to niewielka zmiana w dokumentacji, nie stworzyłem żadnych gałęzi, po prostu dokonałem zmiany w mojej gałęzi `master` i wysłałem żądanie pull. Więc w tej części nie ma sprzątania.


title: Czy naprawdę trudno jest znaleźć dobrych programistów?

text: Kilka dni temu pojawił się temat dotyczący znacznika pracy, a także krążyły miejskie legendy na ten temat. Więc jakie masz doświadczenie? Czy próbowałeś zatrudniać programistów (prawdopodobnie dobrym pomysłem jest wspomnieć o sektorze - web/database/embedded/general i kontynent)? A jakie są twoje doświadczenia? Czy firmy otrzymują ponad 500 CV dziennie? Nikt się nie zgłasza? Ludzie, którzy aplikują, są w tym źli? Jakie są główne powody, dla których kandydaci są uznawani za „niewystarczająco dobrzy”?


title: Dobre projekty open source do opanowania współbieżności Pythona

text: Programowanie współbieżne w Pythonie jest bardzo kolorowe (i też mylące). Jest zbyt wiele opcji, z których każda ma swoje zalety i wady... * Oparte na wątkach (moduł `threading`) * Oparte na procesach (moduł `multiprocessing`) * Wspólne procedury (`greenlet`, `gevent`, `eventlet`) * Async (`Twisted`, `Tornado`) * Komunikacja między procesami (moduł `subprocess`) * Oparta na kolejce wiadomości (`ØMQ`, `PyCom`, `mpi4py`) * Inne (`Pyro`, `execnet`, `Python równoległy`) Znam niektóre z nich i potrafię pisać programy z ich użyciem. Ale po prostu nie czuję, że znam ich zbyt dobrze - nie mogę zdecydować, czego użyć i kiedy. Nie wiem, jak spojrzeć na to z odpowiedniej perspektywy. Więc moje proste pytanie brzmi -- jakie są projekty open source, które wykorzystują te techniki, abym mógł zobaczyć je w działaniu w prawdziwym programie.


title: OO Nazwa zasady projektowania?

text: Wydaje mi się, że pamiętam, jak czytałem gdzieś, że jedną z zasad dobrego projektowania obiektowego jest pisanie metod, które przyjmują możliwie najmniej pochodny typ, ale zwracają możliwie najbardziej pochodny typ? Po pierwsze, czy istnieje taka zasada, a po drugie, jak by to nazwać? Poszukuję nazwy, aby móc polecać innym programistom mentoring.


title: Jak doradzać Stack Overflow w pracy?

text: Zastanawiam się nad zrobieniem krótkiej prezentacji w pracy na temat wykorzystania Stack Overflow jako zasobu do codziennej pracy. Jakie masz doświadczenie w tym zakresie? Czy uważasz, że jest to prawidłowy zasób, aby poinformować o tym współpracowników, czy jest to podobne do informowania ich o Google jako zasobie? Czy jest lepszy sposób na zrobienie tego? Skłaniałem się do zadawania pytań po stronie Stack Overflow, zamiast odpowiadania na nie, aby uniknąć kłótni o to, że nie powinieneś tego robić w czasie pracy. * * * Tylko jako kontynuacja. Początkowo nie chciałem, aby pytanie było zbyt specyficzne dla mojego przypadku. Moja prezentacja będzie tylko krótkim czterominutowym przemówieniem, które przez godzinę będę powtarzał różnym grupom. Mogę zadać pytanie przed rozmową na Stack Overflow i odwołać się do niego podczas prezentacji. Mam nadzieję, że w ciągu godziny będę miał trochę aktywności. Opowiem też krótko o niektórych innych witrynach Stack Exchange, które pasowałyby do odbiorców, ponieważ nie wszyscy są programistami. Myślę, że superużytkownik, błąd serwera i programiści powinni działać dobrze. Nie będę robił prezentacji przez kilka następnych miesięcy, ponieważ został przełożony, ale poinformuję o tym, jak sobie radziłem.


title: Python jako pierwszy język?

text: Właśnie rozpocząłem pracę w Information Security World. Chcę nauczyć się języka Python do tworzenia własnego zautomatyzowanego narzędzia do Fuzzing, SQL-Injection itp. Moje pytanie brzmi: nie wiem zbyt wiele o języku C (tylko podstawowa wiedza), ale chcę uczyć się bezpośrednio języka Python, więc czy to dobrze ? Widziałem, że istnieje duża różnica między Pythonem i C (oczywiście) i dla pola bezpieczeństwa informacji Python = GOD, więc chcę wiedzieć, że nauka Pythona wymaga doświadczenia w języku C? Jeśli nie, czy mogę zacząć uczyć się Pythona bezpośrednio?


title: Zrób słyszalny Ding! powiadomienie dźwiękowe lub warknięcie po zakończeniu testu rake!

text: Tracę mnóstwo produktywności, rozpraszając się podczas oczekiwania na uruchomienie testów. Zwykle zaczynam patrzeć na coś, gdy się ładują --- i 15-20 minut później zdaję sobie sprawę, że moje testy już dawno się skończyły i spędziłem 10 minut na czytaniu online. Dokonaj małej zmiany... powtórz testy... zmarnuj kolejne 10-15 minut! Jak mogę sprawić, aby mój komputer wygenerował jakiś alert (powiadomienie o dźwięku lub warczeniu) po zakończeniu testów, abym mógł wrócić do tego, co robiłem?


title: W jakiej kolejności należy czytać te książki?

text: To pytanie nie jest duplikatem - nie pytam o najlepsze książki. Proszę raczej o najlepszą kolejność studiowania. Jestem nowy w programowaniu, ale skończyłem bardzo, bardzo prostą książkę (Początek C# 3.0: Wprowadzenie do programowania obiektowego) i napisałem kilka prostych programów. Oto książki, które zamierzam przeczytać tutaj: Pro C# 2010 i platforma .NET 4 C# 4.0 w skrócie: The Definitive Reference CLR przez C# C# in Depth, Second Edition Jaka byłaby najlepsza kolejność ich studiowania?


title: czy bezpiecznie jest używać razem jQuery i MooTools?

text: Muszę tylko wiedzieć, czy bezpiecznie jest używać jQuery i MooTools Together w jednym frameworku webowym? Nie próbuję tworzyć aplikacji używając obu, ale jestem w sytuacji, w której muszę zmodyfikować framework aplikacji oparty na mootool, więc jestem przyzwyczajony do jquery, nie chcę tracić czasu na naukę mootools i myślę, że jquery jest lepsze niż mootools w wielu kontekstach, takich jak liczba aplikacji, wtyczek itp., więc pytania brzmią: 1. czy bezpiecznie jest używać mootools i jquery w jednym frameworku? 2. czy pojawią się problemy z różnymi przeglądarkami? 3. jak solidna będzie aplikacja przy użyciu obu?


title: Dwa wywiady: Porady dotyczące udzielania odpowiedzi słabszemu z dwóch, jeśli oczekuje się na wynik preferowanego

text: Niedawno udzieliłem dwóch wywiadów (powiedzmy, że firma A i B) i jestem skłonny wchodzić do firmy A częściej niż B. Kierownik ds. rekrutacji firmy A może trochę spóźnić się z odpowiedzią. Nie chcę stracić B, jeśli nie dostanę się do A. Chcę wiedzieć, czy otrzymam pozytywną odpowiedź od firmy B przed A, czy jest uprzejmy sposób powiedzenia, że czekam na inny wynik? Czy mogę kupić około tygodnia? Jak to przekazać? Z góry dziękuję.


title: Czy KISS wspiera narzędzia i frameworki, które eksponują złożone, nieszczelne warstwy abstrakcji?

text: Narzędzia i frameworki upraszczają złożone zadania. To wygląda na coś, co byłoby wspierane przez KISS (niech to proste, głupie). Narzędzia i frameworki mogą również wprowadzać nieszczelne warstwy abstrakcji, w których złożoność problemów jest znacznie bardziej problematyczna niż wszystko, co napisałbyś sam. Nie interesuje mnie skuteczność narzędzi i ram, ponieważ jest to bardziej opinia religijna i można ją zachować w tajemnicy. Interesuje mnie to, czy narzędzia i frameworki są faworyzowane przez KISS. Oczywiście niektóre warstwy abstrakcji są akceptowane przez prawie wszystkich, ale istnieje wiele przykładów skrajnych przypadków, w których trudno to powiedzieć. Na przykład: w przypadku usługi internetowej w .Net, KISS preferuje podstawową usługę WCF (bardzo łatwą do utworzenia; dość trudne do zrozumienia/zobaczenia, co faktycznie dzieje się pod maską) lub podstawową usługę REST (trudniejsze do utworzenia; łatwiejsze zrozumieć/zobaczyć, co tak naprawdę dzieje się pod maską)? Uwaga: istnieje wiele innych przykładów, więc możesz zaproponować bardziej odpowiednie.


title: Kiedy powinieneś przepisać?

text: > **Możliwy duplikat:** > Kiedy BIG Rewrite odpowiedź? W słynnym (lub niesławnym) artykule Joela Spolsky'ego Thins You Should Never Do, Część I, twierdzi on, że przepisywanie jest zawsze złym posunięciem, ponieważ: 1. Automatycznie spycha Cię w tyle (konkurentów/harmonogram/itd.) 2 Kod prawdopodobnie nie jest tak zły, jak sądzą programiści (wszystko, co napisał ktoś inny, jest zawsze bałaganem, chociaż niektóre są większe niż inne - a nawet wtedy) 3. Prawdopodobnie łatwiej/szybciej/taniej jest naprawić to, co naprawdę jest nie tak z to niż pisać od nowa. 4. Pisząc od nowa, prawdopodobnie ponownie wprowadzisz błędy, które zostały naprawione w poprzednich wersjach oryginalnego kodu. Zamiast tego zaleca naprawienie tego, co jest nie tak z kodem. Zakładam, że jest to dobre podsumowanie jego postu i postuluję, że generalnie jest to prawda. Próbuję zebrać zestaw zasad/wytycznych dla mojego zespołu, a jedną z nich (w oparciu o artykuł Joela) jest Nie piszemy od nowa… nigdy! - Ale możemy zrefaktoryzować duże fragmenty kodu. (ten wyjątek zajmuje się brzydkimi/problematycznymi problemami z kodem) Jedno z pytań, które się pojawiło, to „A co, gdy zmieni się technologia i nie będzie już można uzyskać wsparcia dla starszych wersji?”. To właśnie nazywam ścieżką Syzyfowego Ulepszenia. Przypominam sobie na przykład, że kiedy Oracle przeszło z SQL*Forms 2.x/3.x do Forms 6i i dalej, formularze, które były oryginalnie opracowane w starym formacie .inp, nie były już obsługiwane w obecnej wersji Oracle i Oracle Forms. Miałeś więc do wyboru trzymanie się nieobsługiwanej bazy danych z nieobsługiwanymi narzędziami lub przepisywanie formularzy od zera (lub przekonwertowanie za pomocą narzędzi innych firm, a następnie przejście z grzebieniem o drobnych zębach). Nazwę to przenoszeniem, zwłaszcza gdy wykonujesz wierne tłumaczenie linia po linii/funkcja przez funkcję na nową technologię i nie dodajesz żadnej funkcjonalności. Zasadą stała się wtedy: nie piszemy od nowa… nigdy! - Ale możemy zrefaktoryzować duże fragmenty kodu. - Możemy przenieść kod na nową platformę, kiedy *naprawdę* nie mamy innego wyjścia. (i naprawdę mam na myśli, nie możesz nawet wykupić wyjścia z problemu za dwukrotność kosztu przeniesienia) Czy są jakieś inne wyjątki, które pominąłem?


title: Jak przekonać zarząd do poradzenia sobie z długiem technicznym?

text: To pytanie, które często zadaję sobie podczas pracy z programistami. Do tej pory pracowałem w czterech firmach i zdałem sobie sprawę z braku dbałości o czystość kodu i radzenie sobie z długiem technicznym, który utrudnia przyszły rozwój aplikacji. Na przykład pierwsza firma, dla której pracowałem, napisała bazę danych od podstaw, zamiast używać czegoś takiego jak MySQL, co stworzyło piekło dla zespołu podczas refaktoryzacji lub rozszerzania aplikacji. Zawsze starałem się być szczery i klarowny z moim menedżerem, kiedy omawiał prognozy, ale kierownictwo nie wydaje się być zainteresowane naprawą tego, co już jest i straszne jest widzieć wpływ, jaki ma to na morale zespołu. Jakie są Twoje przemyślenia na temat najlepszego sposobu rozwiązania tego problemu? Widziałem ludzi pakujących się i wychodzących. Firma staje się wtedy „drzwiami obrotowymi”, z programistami przychodzącymi i wychodzącymi i pogarszającymi kod. W jaki sposób przekazujesz to kierownictwu, aby zainteresować ich rozwiązaniem długu technicznego?