title: Jaka jest wymowa $/$. w jquery

text: Kiedy czytasz na głos kod jQuery i dochodzisz do wszystkiego, co używa `$`, czy wymawiasz to jako "znak dolara", "jQuery", "selektor jQuery". Czy istnieje jakiś inny skrót wymowy składni `$.` (jak w `$.each`)? A może jest to tak proste, jak powiedzenie „znak dolara kropka…”?. Pytam, ponieważ ponieważ `$` jest aliasem `jQuery`, zastanawiam się, czy jego wymowa się utrzyma.


title: Podejście do ewolucji systemu: stopniowe czy kataklizmiczne?

text: Pracując na ustalonych systemach, często znajdowałem sposoby na ulepszenie interfejsu użytkownika, aby zmaksymalizować wydajność użytkownika (przykład: ekran konserwacji starszej aplikacji nie pozwala na operacje wieloliniowe, gdzie może to zaoszczędzić godziny pracy użytkownika tygodniowo w „edycji jedna linia na raz" istniejąca metoda). Wyzwanie, jakie napotykam, polega na tym, że ulepszenie GUI jest czymś, czego nie mogę zastosować uniwersalnie w systemie bez większego wysiłku programistycznego (wysiłek, którego kierownictwo raczej nie zaakceptuje). Następnie zmagam się z decyzją, czy spróbować dodać ulepszenie na jednym ekranie, czy zrezygnować z tego, dopóki mityczny projekt nie zostanie kiedyś zatwierdzony. Nie robienie tego oznacza, że system nie pozwala użytkownikom być najbardziej wydajnymi, a to mnie martwi, jakbym celowo pozwolił na ograniczenie prędkości, na które nie zasługują. Ale robienie tego oznacza, że teraz jest jakaś niespójność w GUI systemu. Nie wszystkie ekrany będą działać w ten sam sposób, co może spowodować potencjalne zamieszanie. Biorąc pod uwagę Twoją wiedzę i doświadczenie, jaka jest tutaj najlepsza praktyka? Spójność czy wydajność? **Aktualizacja** Dziękuję wszystkim za odpowiedzi. Poparłem wszystkie Twoje przemyślane odpowiedzi. Znam artykuł Spolsky'ego, do którego linkuje Robert Harvey. Zmiana, o której mówię, jest mniej ryzykowna niż całe przepisanie przykładu Netscape, do którego się odnosi, ale artykuł jest trafny i zawsze dobrze się czyta. Pytanie to powstało w czasie, gdy znalazłem sposób, aby umożliwić użytkownikom szybsze przetwarzanie elementów do fakturowania, więc można argumentować, że poprawiło to efektywność przychodów, jednak, jak wielu z Was stwierdziło, nie było to krytyczne. Interesariusze ulegli przepaści decyzji i konsekwencji, a ponieważ to nie oni musieli wprowadzać dane, byli bardziej niż szczęśliwi, mogąc pozwolić użytkownikom marnować się z nieefektywnym GUI. Jednak rzemieślnik we mnie chce ciągłego doskonalenia i jak mówi Justin Cave, jeśli nic nie robisz, twój system nie ewoluuje, jest w stagnacji. W niektórych innych przypadkach zrobiłem to, co sugerowano w odpowiedziach, i spróbowałem podejścia oddolnego, polegającego na zachęcaniu użytkowników do zmiany poprzez przedstawicieli ich interesariuszy. Odkryłem, że zatwierdzenie zmian przyrostowych, które naruszają spójność, zależało od dostępności dla użytkowników końcowych, chętnego interesariusza na spotkaniach dotyczących wniosków o zmianę i, co dziwne, liderów IT, którzy albo bardzo lub wcale nie przejmowali się daną aplikacją. Ci, którym to zależało, wczuli się w ból użytkownika końcowego, a ci, którzy nie czuli się komfortowo, pozostawiając decyzję podwładnym, którzy to zrobili. Osoby umiarkowanie zainteresowane skupiłyby się na zasadzie spójności, która jest zapewne chwalebna, ale której sztywne trzymanie się bez planu zmian oznacza stagnację.


title: Czy muszę zaktualizować log4j do slf4j?

text: Sprawdzamy naszą aplikację internetową JEE pod kątem planowanego refaktoryzacji i jedną z sugestii jest zastąpienie `log4j` `logback` lub `slf4j` Zespół nie jest pewien, czy powinniśmy to zrobić - ponieważ obecnie chcemy śledzić _jeśli to nie jest zepsuty, nie naprawiaj_ w tym obszarze. **Edycja:** Nie proszę o porównanie frameworków rejestrujących, ale czy jest to wartościowy element _refactoring_ do zmiany frameworka, gdy jesteśmy całkiem zadowoleni z log4j


title: wymusza ponowną kompilację pliku wojennego, w tym jego zależności Jar

text: Mam projekt A (aplikacja internetowa), w zależności od projektu B (B.jar) i ten w zależności od projektu C (C.jar). Chciałbym stworzyć mavena o nazwie "Rebuild War", który wyczyści cały skompilowany kod dla tych 3 projektów i przebuduje całość w celu uzyskania świeżego pliku War. Próbowałem pakietu mvn clean w projekcie A, ale zauważyłem, że B i C nie są rekompilowane. Rzeczywiście, B.jar i C.jar, które są zawarte w lokalnym repozytorium, nie mają zmieniającej się daty utworzenia. Czy istnieje zaadaptowana komenda maven do tego wymagania?


title: Co to oznacza: Wyrażenie<Func<TModel, TValue>>

text: W ASP.Net MVC, w widoku brzytwy, można wpisać taki kod: @Html.EditorFor(model => model.Name) (w tym przypadku tworzy pole tekstowe dla pola Nazwa obiektu, który jest zdefiniowany jako typ modelu) Teraz, kiedy widzę definicję metody EditorFor, wygląda to tak: EditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> wyrażenie); Próbowałem więc sam zaimplementować tego rodzaju metodę, ale tak naprawdę nie rozumiem, co to oznacza **`Expression<Func<TModel, TValue>>`** Kto może mi wyjaśnić, co to jest wyrażenie oraz Func i wyrażenie typu Func? Wyjaśnienia, które znalazłem, były tak abstrakcyjne, że nie dały mi wskazówki ....


title: Jestem na rozdrożu z programowaniem i teorią

text: Kupiłem wczoraj "Beginning C++ Through Game Programming", aby zacząć uczyć się C++ i programowania. Wchodzę w 33. godzinę i nie mogę odłożyć tej książki. Rozmawiałem z bardziej doświadczonym przyjacielem, który zasugerował, że powinienem teraz poświęcić swój czas na naukę projektowania algorytmów i struktur danych, ponieważ języki przychodzą i odchodzą, ale mają dogłębną wiedzę teoretyczną (a nie tylko wiedzę o różnych rodzajach algorytmów, ale możliwość tworzenia własnych) będzie trwała i bardziej korzystna. Myślę, że pytam o to: czy powinienem bardziej skupić się na nauce C++ i kupowaniu większej ilości książek, czy zamiast tego powinienem kupić książkę o algorytmach i bardziej się na tym skupić? (Tak, wiem, że mogę zrobić jedno i drugie i planuję, ale pytam, czemu należy poświęcić więcej uwagi) P.S. - Zaglądałem do inżynierii finansowej na studiach i najwyraźniej C++ jest dominującym językiem, ale jak powiedział mój przyjaciel, "języki przychodzą i odchodzą", więc czy nie marnowałbym czasu próbując opanować C++?


title: Czy ten schemat kodów polecających zadziała?

text: Zastanawiam się nad wdrożeniem następującego schematu kodów polecających w celu sprzedaży mojego oprogramowania: * Każdy może otrzymać kod polecający. Po prostu podają e-mail, a ja wysyłam im kod. * Dzięki temu mogą polecić oprogramowanie swojemu znajomemu itp. * Za każdym razem, gdy ktoś kupuje licencję za pomocą kodu polecającego, daję polecającemu 10% tej licencji * Mogą to robić tyle razy, ile chcą Co Ty myśleć? Czy widzisz jakiś potencjalny problem z tym schematem? Czy myślisz, że to zadziała?


title: Frameworki do mockowania typów nie zmieniają praktyk kodowania z punktu testowalności?

text: Wiele osób zaleca, abyśmy kodowali na interfejsach i unikali statyki w celu testowania. Interfejsy służą nie tylko testowalności, czasami są wymogiem. Czasami jednak wprowadzamy nowe interfejsy w aplikacji tylko dla testowalności. Jeśli frameworki do mockowania typów pomagają nam izolować typy zależne, to dlaczego mielibyśmy używać interfejsów tylko ze względu na testowalność? Dlaczego mielibyśmy unikać statycznych członków?


title: Utwórz autosugestię edytora kodu (np. IntelliSense)

text: Jeśli ktoś chciałby napisać auto-sugestię dla edytora IDE/kodu (takiego jak IntelliSense), czy ogólnie trzeba napisać parser dla dowolnego języka, który powinien być obsługiwany, czy też kompilatory/środowiska wykonawcze zapewniają te rzeczy? Ani pliki binarne PHP ani Python wydają się obsługiwać tylko parsowanie plików i generowanie jakiegoś surowego wyjścia. Eclipse wydaje się kręcić własnym parserem, ale czy to jedyny sposób, aby to zrobić? Używanie "natywnego" parsera byłoby niesamowite na tak wielu poziomach :)


title: Ze strukturą encji - kto potrzebuje DAL

text: W EF4 działania na podmiotach są faktycznie wykonywane za pośrednictwem warstwy elementu biznesowego (BE). Dlaczego potrzebuję dostępu do danych (DAL) na innej warstwie?


title: Wyzwanie biznesowe i architektoniczne stojące za tworzeniem skutecznych historyjek użytkownika

text: Kolega z innego działu miał problem i przyszedł do mnie z pytaniem, z którym nie wiedziałam, jak mu pomóc. Niedawno awansował na architekta i został odpowiedzialny za projektowanie i kierowanie zespołem programistów o wątpliwej jakości i niewielkim lub zerowym doświadczeniu w realizacji planu projektu. Zespół ten przyzwyczaił się do rozpoczynania rozwoju tak szybko, jak to możliwe, zanim potrzeby biznesowe zostały nawet ocenione, a następnie hackowania oprogramowania na kawałki, gdy wymagania stały się jasne pod koniec terminu. Z tego powodu w przeszłości próbowali formułować standardy projektowe, ale nigdy nie zawracali sobie głowy przestrzeganiem ich później w projekcie, gdy pojawiło się ciepło. Chce to zmienić i zapytał mnie, jak najlepiej poradzić sobie z tymi wyzwaniami. Moim zdaniem projekt jest skazany na porażkę, zanim się rozpocznie, ponieważ kierownictwo wyznacza napięty termin, zanim wymagania zostaną jasno poznane lub zrozumiane. Dythering ze strony klienta jeszcze bardziej pogłębia problem. Powiedziałem mu, że Agile został STWORZONY do tego rodzaju problemów, formułuj historyjki użytkownika w oparciu o wymagania klientów, o których jesteś teraz świadomy, a następnie jako więcej historyjek użytkownika lub gdy się zmieniają, po prostu dodaj do zaległości i odpowiednio dostosuj swój plan sprintu . Ale potem zacząłem myśleć o tym, jaki naprawdę jest najlepszy sposób na poradzenie sobie z tym? Klient nie ma możliwości dowiedzenia się dokładnie, czego teraz chce od oprogramowania, ale wie, że tego chce i jest gotów za to zapłacić i chce przynajmniej jakiegoś działającego wydania do określonej daty. Otrzymują wycenę z podziałem na to, co zostanie dostarczone (jest to przypuszczenie zarówno dla dostawcy, jak i klienta), cena jest uzgadniana. Przy formułowaniu cytatu musi istnieć jakiś termin, chociaż w tym momencie jest miękki. Historyjki użytkowników nie są nawet znane, a już na pewno nie są zadaniami i możliwością dostarczenia rozsądnego oszacowania. Jak podchodzisz do tego wyzwania? Kiedy ten cytat jest przyjmowany i uzgadniany, czy to normalne, że używa się przybliżonych wyników, jak przedstawiono w cytacie, jako podstawy do formułowania historyjek użytkownika? Co więcej, czy masz jakieś rady, jak „utrzymać przy życiu wzorce projektowe i dokumenty” w całym projekcie, gdy wymagania drastycznie się zmieniają? **EDYTUJ:** Wydaje się, że wiele osób zakłada, że zaangażowany klient powinien być tym, który dostarcza historyjki użytkownika tak, jakby były one dane. Nie mam żadnych osobistych doświadczeń z klientem, który chciałby włożyć taki wysiłek w zaangażowanie w proces rozwoju. W związku z tym wydaje się sensowne, że ze względu na brak wkładu w proces rozwoju, nie są zbyt dobrymi interesariuszami samego projektu. Interesariusze w tym momencie stają się analitykami biznesowymi i menedżerami aplikacji, którzy mają wycisnąć każdą strużkę informacji, jaką mogą uzyskać od klienta i przekształcić ją w informacje użyteczne dla programistów. To oczywiście nie działa, więc być może JEDYNYM sposobem, w jaki Agile lub Kanban mogą działać, jest bezpośrednie zaangażowanie klienta w historyjki użytkowników, w przeciwnym razie projekt jest skazany na porażkę?


title: dobra literatura do nauczania myślenia obiektowego w C

text: Dość często C jest podstawową platformą rozwoju. A kiedy rzeczy są na dużą skalę, widziałem, że partycjonowanie systemu jako różnych _obiektów_ jest całkiem naturalną rzeczą. Niektóre lub wiele zasad analizy i projektowania obiektowego jest tutaj bardzo dobrze stosowanych. To nie jest kwestia debaty o tym, czy C jest dobrym kandydatem do programowania obiektowego, czy nie. To też NIE jest pytanie, jak zrobić OO w C. Możesz odnieść się do tego pytania i prawdopodobnie jest wiele takich cytatów. Jeśli o mnie chodzi, nauczyłem się niektórych z tych rzeczy podczas pracy z wieloma projektami open source i komercyjnymi. (libjpeg, ffmpeg, Gstreamer oparty na GObject). Prawdopodobnie mogę rozszerzyć kilka referencji, które wyjaśniają niektóre z tych pojęć, takich jak 1. Artykuł o wydarzeniu Helix 2. Artykuł o Linux Mag 3. jedna z moich odpowiedzi, która łączy referencje Schreinera Schreiner jest zdecydowanie jednym z niewielu źródeł, jakie znam. Jest jednak kilka rzeczy/podejść, które mi się w tym nie podobają. Czasami ta książka bardziej skłania się ku teoretycznemu zamknięciu na OO_ness_ niż byciu użyteczną. Ale z pewnością jest to prawdopodobnie największy skok ze wszystkich referencji, jakie znalazłem. Niestety, kiedy wprowadzamy młodszych ludzi, wydaje się zbyt trudne, aby nauczyli się tego wszystkiego na własnej skórze. Zwykle, gdy mówimy, że jest to C, ogólną reakcją jest odrzucenie całego „myślenia obiektowego”. Szukam pomocy rozszerzając powyższe referencje od osób, które były w podobnych dziedzinach pracy. > **Czy jest jakaś dobra literatura formalna, która wyjaśnia, jak można wykorzystać myślenie obiektowe > podczas pracy w C?** Widziałem mnóstwo książek na temat ogólnych „paradygmatów zorientowanych obiektowo”, ale wszystkie one skupiają się głównie na zaawansowanych językach nie w C. Widzisz większość książek C - ale większość skupia się tylko na składni i zaciemnionych rogach C i to wszystko. Nie ma prawie ŻADNYCH dobrych odniesień, szczególnie książek lub jakiejkolwiek systematycznej (mam na myśli formalnej) literatury na temat stosowania OO w C. Jest to bardzo zaskakujące, biorąc pod uwagę, że tak wiele projektów open source na dużą skalę używa C, które naprawdę bardzo dobrze to wykorzystują; ale prawie nie widzimy dobrej literatury formalnej na ten temat.


title: Najlepszy wzorzec twórczy dla rejestratorów w systemie wielowątkowym?

text: To jest kolejne pytanie do moich poprzednich pytań: Wzorzec współbieżności rejestratora w aplikacji wielowątkowej Jak sugerują inni, zadaję to pytanie osobno. Jak nauka z ostatniego pytania. W środowisku wielowątkowym rejestrator powinien być bezpieczny dla wątków i prawdopodobnie asynchroniczny (gdzie komunikaty są kolejkowane, podczas gdy wątek w tle pisze, zwalniając wątek obiektu żądającego). Rejestratorem może być signleton lub może to być rejestrator grupowy, co jest uogólnieniem powyższego. Teraz pojawia się pytanie, w jaki sposób należy przypisać logger do obiektu? Przychodzą mi do głowy dwie opcje: **1\. Żądanie obiektu do rejestratora:** Czy każdy z obiektów powinien wywoływać jakieś globalne API, takie jak `get_logger()`? Takie API zwraca "singleton" lub logger grupowy. Czuję jednak, że wiąże się to z założeniem środowiska aplikacji do zaimplementowania rejestratora - co moim zdaniem jest rodzajem sprzężenia. Jeśli ten sam obiekt ma być używany przez inną aplikację - ta nowa aplikacja również musi zaimplementować taką metodę. **2\. Przypisz logger przez jakieś znane API** Innym alternatywnym podejściem jest stworzenie pewnego rodzaju wirtualnej klasy, która jest implementowana przez aplikację w oparciu o własną strukturę aplikacji i przypisanie obiektu gdzieś w konstruktorze. To jest bardziej uogólniona metoda. Niestety przy tak wielu obiektach - a raczej drzewo obiektów przechodzących przez logger obiekty na każdy poziom jest dość bałaganiarski. > Moje pytanie, czy istnieje lepszy sposób na zrobienie tego? Jeśli chcesz wybrać którekolwiek z > powyższych, które podejście byś wybrał i dlaczego? Pozostałe pytania pozostają otwarte na temat ich konfiguracji: 1. W jaki sposób przypisywane są nazwy lub identyfikatory obiektów, które będą używane do drukowania w logach (jako nazwy modułów) 2. W jaki sposób obiekty te znajdują odpowiednie właściwości (takie jak jako poziomy dziennika i inne takie parametry) W pierwszym podejściu centralny interfejs API musi radzić sobie z wszystkimi tymi odmianami. W drugim podejściu - potrzebna jest dodatkowa praca. Dlatego chcę zrozumieć z prawdziwego doświadczenia ludzi, jak skutecznie pisać logger w takim środowisku.


title: Czy istnieje potrzeba systemu raportowania w PHP?

text: Zaprojektowałem system raportowania do wykorzystania w naszej aplikacji na poziomie przedsiębiorstwa. Jestem w stanie otworzyć go, ponieważ to nie jest nasza sprawa, a możemy uzyskać ulepszony kod, udostępniając go społeczności. Moje pytanie, czy jest już gotowy system raportowania napisany w PHP, napisany dla php 5.3 według najnowszych standardów itp.? Niektóre cechy aktualnej wersji: 1. 100% separacja MVC 2. Dobry framework do manipulowania wynikami zapytań przed, w trakcie i po pobraniu 3. Łatwe stosowanie paginacji do raportu 4. Niezwykle łatwe stosowanie wielu filtrów do raportów 5. System, raz jest wyuczony, może być łatwo rozszerzony (ma podpięcia prawie do wszystkiego) 6. łatwo refaktoryzowany 7. funkcjonalność statystyczna. (Chętnie też usłyszę, jakie inne funkcje muszę dodać).


title: Ciągła integracja: jaka częstotliwość?

text: Zawsze uruchamiałem kompilacje po każdym zatwierdzeniu, ale w tym nowym projekcie architekci po prostu poprosili mnie o zmianę częstotliwości na „jedna kompilacja co 15 minut” i po prostu nie mogę zrozumieć, dlaczego byłby to dobry powód w porównaniu z „ budowanie na każdym zatwierdzeniu". Po pierwsze, kilka szczegółów: * Projekt Objective-C (iOS 5) * 10 programistów * każda kompilacja zajmuje około 1 minuty i obejmuje kompilację i testy jednostkowe. * serwer integracyjny to Mac Mini, więc moc obliczeniowa nie jest tutaj problemem * używamy Jenkinsa z wtyczką XCode Argumentowałem, że jeśli budujesz przy każdym zatwierdzeniu, możesz teraz zobaczyć, co poszło nie tak, i poprawić bezpośrednio Twoje błędy, nie przeszkadzając zbyt często innym twórcom. Dodatkowo nasz tester mniej przejmuje się w ten sposób błędami UT. Jego argumentem było to, że deweloperzy zostaną zalani wiadomościami o „błędach kompilacji” (co nie jest do końca prawdą, ponieważ Jenkins można skonfigurować tak, aby wysyłał wiadomość tylko dla pierwszej uszkodzonej kompilacji), a metryki nie mogą być wykonane poprawnie, jeśli częstotliwość kompilacji jest za wysoka. Więc jaka jest twoja opinia na ten temat?


title: rozpoczęcie projektu z myślą o rozwoju.

text: Mam pomysł na aplikację internetową i mam kilku dobrych ludzi, którzy chcą się zaangażować. Na początku będę robił większość kodu i mam kilkuletnie doświadczenie z kilkoma dość dużymi projektami. Mam prawie 0 budżetu. Jaki pogląd powinienem przyjąć w odniesieniu do przechowywania/bazy danych? Uruchom projekt szybko i niedrogo, a następnie ponownie oceń, czy zakończył się sukcesem? Czy ktoś ma z tym doświadczenie i porady?


title: Czy rozsądne jest wymaganie haseł, gdy użytkownicy logują się do mojej aplikacji za pośrednictwem kont w mediach społecznościowych?

text: Zbudowałem aplikację, która wymaga od użytkowników uwierzytelnienia za pomocą jednego lub więcej kont mediów społecznościowych z Facebooka, Twittera lub LinkedIn. **Edytuj** Po zalogowaniu się użytkownika w systemie utrzymywana jest jego tożsamość, z którą powiązane są wszystkie tworzone przez niego treści. Użytkownik może skojarzyć jedno konto od każdego z obsługiwanych dostawców z tą tożsamością. Niepokoi mnie, jak chronić potencjalnych użytkowników przed połączeniem niewłaściwego konta ze swoją tożsamością w naszej aplikacji. **/Edytuj** Istnieją dwa główne scenariusze, które mogą się zdarzyć: * Użytkownik ma wiele kont u jednego z trzech dostawców i nie jest zalogowany do tego, którego sobie życzy. * Użytkownik wchodzi na komputer publiczny lub współdzielony, na którym poprzedni użytkownik zostawił się zalogowany do jednego z trzech dostawców. Chociaż sam nie spotkałem się z wieloma tego typu przykładami, rozważam wymaganie od użytkowników uwierzytelniania hasła za pomocą Facebooka, Twittera i LinkedIn za każdym razem, gdy logują się do naszej aplikacji. Czy to rozsądne podejście, czy też istnieją powody, dla których wiele innych witryn i aplikacji nie wymaga od użytkowników podania nazwy użytkownika i hasła podczas autoryzacji aplikacji w celu uzyskania dostępu do ich kont w mediach społecznościowych? Z góry dziękuję! **Edytuj** Wyjaśnienie, nie zamierzam przechowywać niczyjej nazwy użytkownika ani hasła. Raczej, gdy użytkownik kliknie przycisk, aby się zalogować, na przykładzie Facebooka, zastanawiam się nad wyświetleniem pytania „Czy to ty?” okno typu. Pomysł polega na tym, że użytkownik zareagowałby na wyzwanie, logując się do Facebooka na koncie pobranym z hasha protokołu Oauth, lub logując się na właściwe konto, a wywołanie zwrotne Oauth byłoby uruchamiane z nowymi danymi hashowania protokołu Oauth.


title: Proces przeglądu kodu podczas korzystania z GIT jako repozytorium?

text: Jaki jest najlepszy proces przeglądu kodu podczas korzystania z GIT? Mamy zewnętrznego dostawcę GIT (Unfuddle) i ograniczamy wykorzystanie zasobów - więc nie możemy mieć dedykowanych zdalnych repozytoriów dla każdego dewelopera. Obecny proces: * Mamy serwer GIT z gałęzią `master`, do której wszyscy się zobowiązują * Devs pracują na lokalnym mirrorze `master` lub lokalnej gałęzi funkcji * Devs push do gałęzi `master` serwera * Devs proszą o przegląd kodu na ostatnim commit Problem: * Każdy błąd w przeglądzie kodu jest już w fazie master zanim zostanie wykryty. * Co gorsza, zwykle ktoś spalił kilka godzin próbując dowiedzieć się, co się stało... Chcielibyśmy więc * zrobić przegląd kodu PRZED dostarczeniem do 'mastera'. * Miej proces, który działa z globalnym zespołem (bez recenzji!) * coś, co nie wymaga, aby indywidualny programista był przy swoim biurku/maszynie, aby był zasilany, aby ktoś inny mógł się zdalnie włączyć (usuń ludzką zależność, programiści wracają do domu w różnych strefach czasowych) Używamy TortoiseGIT do wizualnej reprezentacji listy zmienionych plików, porównywania plików itp. Niektórzy z nas wrzucają do powłoki GIT, gdy GUI nie wystarcza, ale najlepiej byłoby, gdyby przepływ pracy ma być prosty i oparty na GUI (chcę, aby narzędzie podniosło wszelkie obciążenia, a nie moi deweloperzy).


title: Metoda weryfikacji zależności TDD została wywołana poprawnie

text: Próbuję śledzić TDD w moim projekcie, ale nie mogę się zorientować, jak sprawdzić, czy prawidłowo wywołuję zależność, a nawet czy powinienem to zweryfikować. Oto wymaganie: Napisz klasę AddSalesOrderTask odpowiedzialną za dodanie zamówienia do systemu ERP. Klasa może przyjmować dowolne wymagane zależności, ale musi mieć sygnaturę metody Execute w następujący sposób: public class AddSalesOrderTask { public override bool Execute(OrderData input) { throw new NotImplementedException(); } } Metoda AddSalesOrderTask.Execute musi zmapować OrderData na ERPSalesOrder, a następnie wywołać IERPClient.AddSalesOrder. Mam interfejs dostępu do usługi ERP w następujący sposób: publiczny interfejs IERPClient { void AddSalesOrder(ERPSalesOrder order); } Jak sprawdzić, czy mapowanie zostało wykonane, a następnie przekazane do klienta? Czy powinienem testować obie operacje w tej metodzie? Aby było to testowalne, moją pierwszą myślą było wprowadzenie interfejsu IMappera i przekazanie go jako zależności do AddSalesOrderTask: public interface IMapper<in TFrom, in TTo> { void Map(TFrom source, TTo destination); } Czy po TDD byłby to dobry pierwszy test? prywatne AddSalesOrderTask _testObj; [Fałszywe, UsedImplicitly] prywatny IERPClient _client; [Fałszywe, UsedImplicitly] prywatny IMapper<Order, SalesOrder> _mapper; [TestInitialize] public void MyTestInitialize() { Fake.InitializeFixture(this); _testObj = nowy AddSalesOrderTask(); } [TestMethod] public void Execute_MappedSalesOrderAddedToERP() { // Rozmieść var input = new OrderData(); var ZamówienieSprzedaży = nowe ZamówienieSprzedaży(); // Akt _testObj.Execute(input); // Potwierdź A.CallTo(() => _mapper.Map(context.Order, salesOrder)) .MustHaveHappened(); A.CallTo(() => _client.AddSalesOrder(SalesOrder)) .MustHappened(); } Czy dobrze o tym myślę?


title: jak jasno komunikować się i upewnić się, że zespół wykonuje zadanie

text: Właśnie robię kurs komunikacji, gdzie kodujemy serwer i piszemy dokumenty projektowe. Większość serwera jest już zakodowana, a z informacji podanych w zadaniu staramy się tylko wypełnić puste miejsca. Tak naprawdę nie jestem liderem zespołu, ale moi dwaj koledzy z drużyny są bardzo pasywni. Często inaczej interpretujemy zadanie i nie bardzo dobrze rozumiem ich myślenie, co wszystkich frustruje. Staram się im wytłumaczyć swój punkt widzenia i uznać ich, ale po chwili po prostu mi się poddają. Chcę, żeby mnie zrozumieli, a nie poddali. Kolega z drużyny A wygląda na pokonanego po kłótni, a kiedy jest sfrustrowany, staje się emocjonalny. Czy powinienem być bardziej delikatny? Wszyscy razem kodujemy. Czasami gubię się podczas kodowania i po kilku godzinach nie mam pojęcia, co zrobili moi koledzy z drużyny. Od czasu do czasu pytam ich, co robią, ale nie chcę zbytnio kontrolować. Również nie wiem, które części powinny być moje, a które są moimi kolegami z drużyny. Jeśli funkcja, którą muszą zakodować, będzie musiała użyć mojej funkcji i nieco ją zmienić, czy muszę kodować część, która będzie w mojej funkcji?


title: Jaki jest obecny stan użytkowania i badań maszyn SECD i SKI?

text: Prowadzę niezależne badania/studia z profesorem, który jest bardzo funkcjonalnym facetem. Celem jest zbadanie więcej tego, co dzieje się za kulisami z językami funkcjonalnymi, niż normalnie podczas zajęć, które również zabieram ze sobą (w których piszemy tłumaczy ustnych). Niezależny kurs wyjdzie poza poziom interpretera i przyjrzy się, jak możemy przetłumaczyć niektóre koncepcje na maszynę sprzętową. W szczególności mój profesor wspomniał o dwóch książkach, _Programowanie funkcyjne: aplikacja i implementacja_ autorstwa Petera Hendersona — która obejmuje _maszynę SECD_ (wyidealizowana maszyna do obliczeń funkcjonalnych) oraz _Implementacja języków programowania funkcjonalnego_ autorstwa Simona Peytona Jonesa — która obejmuje _SKI maszyna_ (i oczywiście _kombinatory_ ). Z tego, co robiłem, te dwie książki wydają się dość legendarne w świecie programowania funkcjonalnego - co jest świetne (nadal uważam, że K&R jest jedną z najlepszych książek _C_). Ale obie książki mają też ponad 30 lat. Jestem ciekaw, czy powstały jakieś dalsze badania lub pouczająca literatura dotycząca tych tematów. Interesujące byłoby również wiedzieć, czy którakolwiek z tych koncepcji trafia do nowoczesnych kompilatorów i interpreterów zbliżonych do jądra.


title: Liczba gałęzi/decyzji w przykładzie

text: Po przeczytaniu SO, właśnie znalazłem to pytanie: if (x > y) print (x) else if (x < y) print (y) else print (x,y) **Ile jest gałęzi i decyzji?** To wspomina, że powinny być 3 decyzje i 5 gałęzi, ale nie wiem jak. Dla mnie mogę sobie wyobrazić tylko 4 gałęzie (2 Ifs z dwoma możliwymi wynikami). Oryginalne pytanie tutaj


title: Zminimalizuj odległość podróży n osób do n lokalizacji

text: Problem: Mając współrzędne N osób na zwykłej dwuwymiarowej płaszczyźnie i N docelowych punktów zainteresowania (POI) na tej samej płaszczyźnie, określ zestaw par osób i POI, które minimalizują sumę odległości w linii prostej między lokalizacjami w każdej parze. Żadne dwie osoby nie mogą udać się do tego samego UM, a wszystkie UM muszą być objęte. Innymi słowy, jeśli mam 5 ciężarówek, które muszą jechać do 5 lokalizacji, a ciężarówki są wymienne, gdzie mam wysłać ciężarówki, aby zużyć jak najmniej paliwa (zakładając, że zużycie paliwa jest proporcjonalne do przebytej odległości)? Dyskusja: Brutalna siła wymagałaby silni N. Czy jest lepszy sposób? Wydawałoby się to dość powszechnym problemem w badaniach operacyjnych, ale moje google-fu jest niewystarczające.


title: Czy pożądany jest częściowo znany język skryptowy?

text: Biorąc pod uwagę, że program (w fazie rozwoju) potrzebuje języka skryptowego, a z różnych powodów nie jest możliwe użycie gotowego języka, rozważam oparcie go na składni i części semantyki JavaScript, bycie czymś, co prawie wszyscy znają, w tym używanie rozszerzenia pliku .js, aby m.in. redaktorzy będą wiedzieć, jak wyróżnić składnię skryptów. Z pewnych względów technicznych i tak konieczne jest dokonanie _niektórych_ zmian. Wydaje mi się rozsądnym wprowadzenie kilku innych zmian, które większość ludzi rozważyłaby jako ulepszenia. Na przykład, wyeliminowanie zasady „średniki są opcjonalne”, która czasami potyka ludzi, i nadanie bloku w funkcji nowego konturu leksykalnego. Ale nie jestem pewien, czego tak naprawdę chce większość ludzi. A więc z następujących opcji: 1. Trzymaj się jak najbliżej JavaScriptu, nawet jego aspekty, z którymi wszyscy się zgadzają, są same w sobie błędami, odbiegającymi tylko wtedy, gdy względy techniczne sprawiają, że jest to absolutnie konieczne. (W każdym razie nie ma mowy o możliwości korzystania z istniejącego kodu JavaScript, mówię wyłącznie o korzyściach płynących ze znajomości z punktu widzenia użytkownika). JavaScript, ale różni się pod wieloma względami. 3. Wszystko albo nic, jeśli nie mogę używać rzeczywistego JavaScriptu, stwórz nowy język skryptowy, który jest widocznie zupełnie inny (np. nie składnia w stylu C), więc nie ma możliwości pomylenia go z JavaScript. Która opcja byłaby ogólnie uważana za lepszą? Czy brakuje mi czwartej opcji?


title: Czy mogę tworzyć GUI w MonoTouch i MonoDroid ze współdzielonym zapleczem .NET?

text: Czy możliwe jest utworzenie współdzielonej logiki zaplecza przy użyciu platformy .NET i posiadanie odpowiednich interfejsów GUI w MonoTouch i MonoDroid?


title: Testowanie jednostkowe metody zawierającej dwa parametry typu wyjściowego

text: Śledziłem książkę Art of Unit Testing. Ta książka mówi, że nie możesz mieć żadnej logiki w swoich twierdzeniach, ponieważ zmniejsza to czytelność testu, albo mogę testować zbyt wiele rzeczy na raz. Załóżmy, że istnieje metoda z sygnaturą jak poniżej: public int DoSomething(int zmienna1, wyjściowa zmienna2, wyjściowa zmienna typu float3) { ... } Jak mam przetestować tę metodę, ponieważ muszę potwierdzić wartość zwracaną, zmienna2, zmienna3 ? ?? * * * Metoda Sample Test, która testuje wszystkie te trzy kwestie: public void DosSomethingTest(){ //dodaj kod do zaaranżowania int oczekiwanej wartości=12; string expectVariable1="Oczekuję się"; ciąg oczekiwana Zmienna3=15,9; ciąg rzeczywistaZmienna1, rzeczywistaZmienna3; var sut=nowy Foo(); int rzeczywistaValue=sut.DoCos(15, out aktualnaZmienna1, out aktualnaZmienna3); //tutaj testuję 3 problemy w jednym teście. Czy jest lepszy sposób? if(rzeczywistaValue==oczekiwana wartość){ if(oczekiwanaZmienna1==rzeczywistaZmienna1){ if(oczekiwanaZmienna3!=rzeczywistaZmienna3){ Assert.Fail("Zwrócono nieoczekiwaną zmienną2");//pseudo kod } } else{ Assert.Fail("Nieoczekiwana zmienna1 zwrócono");//pseudo kod } } else{ Assert.Fail("Zwrócono nieoczekiwaną wartość");//pseudo kod } } ## Podejście 2 * * * Oddzielne metody testowe, które dotyczą testów osobno: public void DosSomething_Passing15_Returns12Test(){ //dodaj kod do aranżacji int oczekiwana wartość=12; string expectVariable1="Oczekuję się"; ciąg oczekiwana Zmienna3=15,9; ciąg rzeczywistaZmienna1, rzeczywistaZmienna3; var sut=nowy Foo(); int rzeczywistaValue=sut.DoCos(15, out aktualnaZmienna1, out aktualnaZmienna3); Assert.IsTrue(wartość rzeczywista, wartość oczekiwana); } public void DosSomething_Passing15_ReturnsExpectedVariable1Test(){ //dodaj kod do aranżacji int oczekiwanawartość=12; string expectVariable1="Oczekuję się"; ciąg oczekiwana Zmienna3=15,9; ciąg rzeczywistaZmienna1, rzeczywistaZmienna3; var sut=nowy Foo(); int rzeczywistaValue=sut.DoCos(15, out aktualnaZmienna1, out aktualnaZmienna3); Assert.IsTrue(rzeczywistaZmienna1, oczekiwanaZmienna1); } public void DosSomething_Passing15_ReturnsExpectedVariable2Test(){ //dodaj kod do aranżacji int oczekiwanawartość=12; string expectVariable1="Oczekuję się"; ciąg oczekiwana Zmienna3=15,9; ciąg rzeczywistaZmienna1, rzeczywistaZmienna3; var sut=nowy Foo(); int rzeczywistaValue=sut.DoCos(15, out aktualnaZmienna1, out aktualnaZmienna3); Assert.IsTrue(rzeczywistaZmienna3, oczekiwanaZmienna3); } Czy podejście 2 nie jest zgodne z „Testy nie powinny testować więcej niż jednego problemu”? ## Wniosek * * * Jeśli przeprojektowanie SUT jest możliwe: 1. W idealnym przypadku nie powinno być żadnego parametru wyjściowego, zamiast tego, aby klasa agregatu była oceniana w Asserts. 2. Jeśli istnieją niezwiązane parametry wyjściowe, metoda SUT powinna zostać zrefaktoryzowana na wiele metod, a następnie te nowe metody powinny mieć własne metody testowe, a następnie przetestują tylko jeden problem. Jeśli przeprojektowanie SUT nie jest możliwe, zgodnie z odpowiedzią będą trzy Asert


title: Nieschematyczny projekt NoSQL RESTful?

text: W ostatnim projekcie; Użyłem MongoDB z MongoEngine (ORM/ODM dla Pythona). To pozwoliło mi określić schemat w centralnym „Modelu”. Mój nowy projekt prowadzę na Windows Azure; i w Pythonie nie ma dla niego wrappera ORM/ODM opartego na języku innym niż SQL. Jak byś polecił, abym postąpił: * Zaprojektuj własny Python ORM/ODM dla Windows Azure * A może nie powinienem martwić się skomplikowaną logiką biznesową zaplecza — w celu zmniejszenia narzutu na obliczenia i transport — i po prostu pisz trasy w ten sposób: POST /api/u_speced /<rzeczownik>/create -d {'typ': 'schemat', **(JSON_schema)} → {'utworzony': prawda} PUT /api/u_speced/<rzeczownik>/add -d {'typ': ' data', **(JSON walidowany względem JSON_schema)} → {'id': <id>} GET /api/u_speced/<rzeczownik>/<id> → {reprezentacja rekordu w JSON}


title: Jak prawidłowo obsługiwać zależności warunkowe w fabryce?

text: Załóżmy, że masz ciąg znaków `$action`, który określa, jaki typ `$object` należy utworzyć: `$dbobject`, `$memcacheobject`, `$fileobject`, `$xmlobject` itd. Załóżmy również, że tworzenie obiektu nie jest trywialne i wymagana jest `$fabryka`. Oczywiście różne typy obiektów zależą od różnych rzeczy, jeden na PDO, inny na Memcache i tak dalej. Jak więc stworzyć obiekt w takich warunkach? Pozostało mi kilka opcji: 1. Utwórz `switch ($action) {}` _na zewnątrz_ fabryki, aby wywołać różne podklasy mojej fabryki, które będą wywoływać jej typ obiektu, na przykład: `case ' db': $obj = nowa DBFactory($dbh); przerwa;`. Jest to wyraźnie złe, ponieważ ten przełącznik musi być obecny wszędzie tam, gdzie potrzebny jest przedmiot. 2. Miej `switch ($action) {}` _wewnątrz_ coś w rodzaju fabryki fabrycznej, która wykona kod w #1. Od czego więc powinna zależeć fabryka nadrzędna, wszystko, co _może_ stworzyć? Ponieważ _może_ potrzebować bazy danych i memcache, w celu przestrzegania reguł wstrzykiwania zależności należy dostarczyć do fabryki nadrzędnej _zarówno_ instancje pdo, jak i memcache, _nawet jeśli nie będzie ich używać_. To też brzmi bardzo źle. Innym problemem jest to, że jeśli tworzę inny typ obiektu, który zależy od czegoś nowego, to muszę dodać jego zależności w całym kodzie, w którym tworzone są te fabryki, co jest poziomą zmianą, której właściwie powinienem unikać. To mówi mi, że istnieje koncepcja tego problemu, której w tej chwili nie widzę, dlatego pytanie. To, co próbuję podkreślić, to to, że nawet jeśli potrzebny jest tylko `$fileobject`, który nie zależy od niczego, kod, który analizuje `$action` nadal potrzebuje wszystkich zależności (co jest przesadą) lub będzie tworzył instancję niektóre z nich (co jest przeciwko DI) lub muszą sięgnąć do globalnego stanu/użytkowania singletonów/rejestru, co również jest uważane za złą praktykę. Jaka byłaby wtedy dobra praktyka w tej sytuacji?


title: Algorytm konwersji bazowej w C?

text: Wstawiłem ten kod, który robi to, co powinien, ale może jest lepsze lub bardziej ogólne podejście? Konwertuję 4-cyfrową liczbę o podstawie 10, np. „11” do podstawy 16 np. "17" (która zostaje wypisana na wyświetlaczu jako 11, gdy zostanie wywołana z 17, ponieważ funkcja przyjmuje bity jako argument). int hex1 = być może pierwsza / 1000; int hex2 = (być może pierwsza - hex1*1000) / 100; int hex3 = (być może pierwsza - hex2*100 -hex1*1000) / 10; int hex4 = być możeprime - hex3*10 - hex2*100 - hex1*1000; test int = 16*16*16*hex1+16*16*hex2+16*hex3+hex4; Liczba całkowita „test” będzie miała poprawną wartość po uruchomieniu tego kodu, ale czy istnieje bardziej wydajny sposób na zrobienie tego? ## Aktualizacja 140330 09:43 CET Zdecydowałem się na następujące, które wydają się być w stanie przekonwertować dowolną liczbę cyfr na BCD: int tbcd(int v) { int total = 0; int baza wyników = 1; while(v > 0) { total += baza wyników * (v % 10); baza wyników *= 16; v /= 10; } zwróć sumę; }


title: Różnice w językach programowania i wydajność, czy to ma znaczenie?

text: Jestem całkiem nowy w programowaniu, studiowałem informatykę przez 3 lata na studiach, ale jak wiesz, szkoła to tylko 2% tego, co naprawdę czyni z kogoś pełnoprawnego programistę. Mam wiele problemów ze zrozumieniem, dlaczego ludzie mówią, że język x jest bardziej wydajny niż język y. Rozumiem tylko, jeśli chodzi o wstępnie skompilowane vs skompilowane w czasie wykonywania. Rozumiem, że definiowanie typów danych, takich jak stała w kodzie, jest szybsze niż pozwolenie komputerowi / językowi na to (jak php lub ruby), ale jeśli chodzi o używanie C lub Java, co sprawia, że C jest szybsze? Czy nie zostaną skompilowane do języka maszynowego w najbardziej efektywny sposób? Wydaje mi się, że jedyną różnicą między używaniem języka takiego jak C lub Java jest; język wyższego poziomu, taki jak java, byłby łatwiejszy do organizowania i pisania/utrzymywania dużych aplikacji z klasami i dziedziczeniem. Ale czuję, że po skompilowaniu nie powinno to robić żadnej różnicy. Czy ktoś może wyjaśnić? btw znam tylko języki wyższego poziomu, takie jak php, java, ruby, vb, c#. Może dlatego trudno mi to sobie wyobrazić? następny język, który chcę poznać, to najprawdopodobniej C


title: Podejścia do automatyzacji: zdarzenia/wyzwalacze/Cron

text: Z mojego doświadczenia podczas budowania stron internetowych wynika, że większość logiki systemu jest wykonywana, gdy dane wejściowe są akceptowane, czy to za pośrednictwem POST, GET itp. Chciałbym wiedzieć, jakie procesy lub metodologie istnieją w Pythonie (skłaniając się do używania Python), PHP i Ruby, które umożliwiają aplikacjom internetowym automatyczne wykonywanie zadań bez udziału użytkownika. Na przykład wykonywanie zadań w określonym czasie, stanie lub wydarzeniu. Nie mam doświadczenia i mało rozumiem wyzwalaczy, zdarzeń lub crona, a wszystkie artykuły, na które natknąłem się w Google podczas moich wyszukiwań, zakładały wysoką znajomość tych pojęć. Po prostu potrzebuję opisu sposobów obsługi niereaktywnych procesów w aplikacji internetowej.


title: Jak zorganizować integrację międzymodułową w projekcie modułowym?

text: Obecnie piszę własny PHP Framework (tak, inny) do celów badawczych. Właściwie spróbuję użyć go jako mojej pracy dyplomowej. Po dwóch nieudanych próbach w końcu znalazłem sposób na rozwinięcie go w architekturze modułowej, takiej jak Zend i Symfony. Mam kilka luźno połączonych modułów, które mogą działać niezależnie od siebie, ale ich użyteczność byłaby lepsza, gdybym je skleił. Teraz zastanawiam się, jak najlepiej je zintegrować. Nie chcę umieszczać modułu jako wymagania dla drugiego, ponieważ to łamie konstrukcję modułową. Moim pierwszym pomysłem było stworzenie innego modułu, który wymaga dwóch pozostałych i połączenie ich ze sobą. To działa dobrze, gdy mam tylko dwa moduły, ale kiedy mam moduł, który można zintegrować z dwoma lub więcej modułami, gubię się. Czy powinienem stworzyć jeden moduł dla każdej możliwej integracji? A może powinienem stworzyć tylko jeden moduł i umieścić tam wszystkie integracje, które mogę mieć? Jestem czysty? Jeśli nie, postaram się to lepiej wyjaśnić. ### Edycja: praktyczny przykład. Moja warstwa dostępu do danych implementuje wzorzec **Table Row Gateway**. Mam `TableGatewayInterface` i domyślną implementację `TableGateway`. Wyobraź sobie teraz, że chcę mieć tabelę z pamięcią podręczną dla ostatnich zapytań. Mogę to osiągnąć za pomocą wzorca **Decorator**, tworząc `CachedTableGateway`, który zależy od `TableGateway` i komponentu pamięci podręcznej, powiedzmy `CacheInterface`. Nie potrzebuję pamięci podręcznej, ale może się przydać. Czy powinienem osadzić tę dekorowaną implementację w oryginalnym pakiecie, tworząc wymaganie dla komponentu pamięci podręcznej? A może powinienem utworzyć „pakiet integracyjny”, który wymaga zarówno pamięci podręcznej, jak i bramy tabeli?


title: Unikanie pułapek naturalnie rekurencyjnej relacji między tabelami

text: Tworzę system do zarządzania „sprawami”. W końcu będzie wiele różnych „rodzajów” spraw, więc zacząłem od tabeli „Szablon sprawy”, której można użyć do zdefiniowania, jak wygląda sprawa, a za pomocą tabel satelitarnych określi specyficzne cechy dla konkretnego rodzaju sprawy . Jedną z takich cech są fazy. Sprawa może przechodzić przez szereg faz, ale fazy zależą od rodzaju sprawy. Więc naturalnie stworzyłem tabelę CasePhases z relacją wiele do jednego z tabelą CaseTemplate (ponieważ każdy szablon może definiować własne fazy). Ale potem wpadłem na szkopuł... w której fazie powinna się rozpocząć sprawa? Moją pierwszą myślą było to, że mógłbym po prostu zdefiniować "StartingPhase" w tabeli CaseTemplate przy użyciu klucza obcego, ale to tworzy rekurencyjną relację między tabelami CaseTemplate i CasePhases. Przypuszczam, że mógłbym sprawić, by pole InitialPhase mogło mieć wartość null i po prostu nie przypisywać wartości na początku (aktualizacja rekordu później, gdy zostaną zdefiniowane fazy dla CaseTemplate i użycie logiki biznesowej, aby upewnić się, że CaseTemplate zdefiniował InitialPhase). Lub mógłbym dodać pole "IsStartingPhase" do tabeli CasePhases (z pewną logiką biznesową, aby wymusić, że szablon może mieć tylko jedną fazę ustawioną jako faza początkowa). Obydwa mają swoje wady i zalety, ale żaden z nich nie wydaje mi się szczególnie elegancki lub lepszy od drugiego. Muszę wierzyć, że nie jest to rzadki scenariusz. Czy są jakieś najlepsze praktyki obsługi tej relacji z bazą danych, może brakuje mi jakiejś terminologii? Szukam wyjaśnienia domeny problemu, z którą mam do czynienia i być może kilku podejść, których nie brałem pod uwagę. Korzystam z relacyjnej bazy danych (SQL Server), więc rozwiązania wykorzystujące "egzotyczne" technologie prawdopodobnie nie będą działać w moim środowisku.


title: Konwencja nazewnictwa listy w schemacie xsd

text: Jak najlepiej nazwać listę w schemacie XSD? <xs:element name="CurrentEmployee" type="Pracownik" minOccurs="0" maxOccurs="unbounded" /> Obecnie mam listę obecnych pracowników, jak określono w moim schemacie powyżej. Ale kiedy klasy Java są generowane, uzyskuję dostęp do listy pracowników jako List<Employee> emps = req.getCurrentEmployee(); co daje mylne wrażenie, że pozyskujemy jednego pracownika. Jeśli zrobię mój schemat jako "CurrentEmployees" , kod Java będzie wyglądał dobrze, ale kiedy spojrzymy na dane XML , każdy wiersz będzie wyświetlany jako `"<CurrentEmployees ...".` Więc nie mogę zdecydować między CurrentEmployees a CurrentEmployee . Jakieś sugestie dotyczące poprawnej konwencji nazewnictwa?


title: Wszelkie zasoby lub książki do budowy klienta VNC

text: Bardzo interesuje mnie programowanie sieciowe i chcę zbudować klienta VNC do zabawy i do nauki. Szukałem w Google zasobów dotyczących klienta i serwera VNC, ale przez większość czasu znalezione zasoby dotyczyły tego, jak korzystać z VNC, a nie jak budować lub jak faktycznie działa w warstwie biznesowej, abym mógł dowiedzieć się, jak można go symulować. Proszę zasugerować mi jakąkolwiek dokumentację/artykuły/zasoby z tym związane. Z góry dziękuję. Jest to mój pierwszy post na stronie Programmer Stackexchange, więc proszę wybacz, jeśli to pytanie nie pasuje do tematu tej strony.


title: Korzystanie z interfejsów w ramach enkapsulacji

text: Tworzę interfejsy dla kilku naszych istniejących klas z powodów kpiących. Wiele z tych klas ma również metody zakresu pakietów, które mają na celu zapewnienie pewnego poziomu enkapsulacji, zapewniając, że tylko kontroler może modyfikować niektóre ich stany. Pomyślałem, że mógłbym wykorzystać tę zmianę, aby spróbować uzyskać czystszą hermetyzację. Moje pytanie jest dwojakie. Po pierwsze, czy uważa się za opłacalne użycie interfejsów do enkapsulacji? Mogę sprawić, że niektóre metody nie będą dostępne w moim interfejsie, które są dostępne w klasie. lub mogę mieć moją metodę IBar, która ma metodę getFoo, która zwraca IFoo, ale moja klasa bar zastępuje getFoo, aby zwrócić Bar. Problem polega na tym, że każdy może z łatwością przesłać moje Ixxx do rzeczywistej klasy, więc czy naprawdę uważa się to za warte zachodu enkapsulację? Moje drugie pytanie dotyczy mojego modelu. Chciałbym, aby mój model miał kilka metod typu getAllFoo, które zwracają obiekty IFoo. jednak chcę, aby mój kontroler miał sposób na pobranie rzeczywistej implementacji Foo (tj. Wiedz, że mój IFoo jest typu Foo), aby miał dostęp do metod spoza interfejsu. Jaki jest uważany za najczystszy sposób zapewnienia, że mój kontroler ma dostęp do pełnej klasy, ale inne klasy widzą tylko interfejs? Zakładam, że po prostu rzucenie interfejsu do jego konkretnej klasy byłoby uważane za raczej niechlujne?


title: Czy dobrym pomysłem jest użycie Header("Content-Type [...]"); w podstawowym pliku CMS?

text: Zajmuję się systemami zarządzania treścią od około 7 lat. 2 lata temu stworzyłem własną. Obecnie buduję nową, lepszą i większą wersję. Popadł jednak w dylemat. Mam plik core, który jest dołączany do wszystkich stron. Plik core zapewnia dodanie funkcji, konfiguracji, połączenia mysql itp. Dodałem również `Header("Content-Type: text/html; charset=UTF-8");` na górze kodu w pliku core. Ostatnio musiałem stworzyć generator xml, z `Header("content-type: text/xml; charset=UTF-8");`. Po pierwsze, oczywiście nie mogłem uruchomić xml, ponieważ zapomniałem o moim ustawieniu content-type w pliku core.. Później po prostu dodałem content-type: text/xml po include pliku core.. W zasadzie wszystko działa , ale życzę dopracowania tego projektu jak najlepiej. **Więc teraz myślę, czy dodanie "content-type: text/html" w pliku core to dobry pomysł?** Miałem pomysł, aby dołączyć plik core w ten sposób: `include($rootpath 'inc/core.php?content-type=xml');`, to w pliku core zostanie ustawiony nagłówek na podstawie `$_GET['content-type']`.. Czy to dobre rozwiązanie ?


title: Jak mogę bardziej dynamicznie tworzyć uprawnienia i zarządzać nimi?

text: Chcę zaimplementować system bezpieczeństwa w mojej internetowej aplikacji intranetowej, który pozwoli administratorom bezpieczeństwa „dostroić” dokładnie, jaki rodzaj dostępu użytkownik/rola ma do obiektu. Na przykład, rozwiązanie oparte na ACL może pozwolić recepcjonistce na dostęp do opcji „Utwórz”, „Odczyt” i „Aktualizuj” spotkanie, ale nie „Usuń”, podobnie mogę pozwolić użytkownikowi Bobowi tylko na „Odczyt” lub „Komentarz”. ` w notatce firmowej, ale nie „Utwórz”, „Aktualizuj” ani „Usuń”. Jak jednak mam pozwolić recepcjonistce na umawianie wizyt tylko w godzinach otwarcia? Jak ograniczyć spotkania do dat od dzisiaj do jednego miesiąca od teraz? A co z Bobem - jak bym mu pozwolił "Stworzyć" notatkę po tym, jak zdobędzie wystarczającą ilość punktów "szacunku" (trochę jak tutaj). Co najważniejsze, jak mogę zachować dynamikę tych wartości (godziny otwarcia, ograniczenia dat, punkty szacunku, nowe ograniczenia), aby nie zakodować ich na stałe w aplikacji? Czy ktoś może polecić metodę (lub framework, książkę do przeczytania itp.), abym mógł pozwolić administratorowi tworzyć i zarządzać tymi rolami i ich ograniczeniami, a nie programistą? Istniejące ACL i systemy oparte na rolach, które widziałem, nie wydają się oferować żadnego sposobu radzenia sobie z ograniczeniami — albo masz dostęp, albo nie! Dziękuję


title: Czy po normalizacji bazy danych nadal potrzebujesz indeksowania?

text: Czy po wykonaniu dobrej normalizacji nadal musisz indeksować tabelę? Jak to wpłynie na wydajność? Czy po dobrej normalizacji w jakiś sposób wpłynie to na wydajność? Które kolumny są zwykle indeksowane, jeśli masz już klucz podstawowy i klucz obcy? Wygląda na to, że normalizacja bazy danych jest już skuteczna. Ale mogłem pominąć wpływ indeksowania na bazę danych. Czy jest to skuteczne tylko wtedy, gdy używane są zapytania? Jak to działa / działa i poprawia bazę danych?


title: Dlaczego strony internetowe muszą pytać o język i kraj, skoro przeglądarka może im to powiedzieć?

text: Dlaczego więc strony internetowe muszą pytać (mówiony) język i kraj, skoro przeglądarka może im to powiedzieć? Edycja: konkretnie mam na myśli to, dlaczego nie użyć sekcji accept-language w nagłówku http, ustawionej przez ustawienia języka w przeglądarce, a nie na podstawie adresu IP. To pytanie skupia się na stronach, które stawiają ścianę, zmuszając użytkownika do wybrania języka przed skorzystaniem ze strony, która powinna zamiast tego udostępniać łatwo dostępne ustawienie. Edycja: to pytanie dotyczące doświadczenia użytkownika, skupiające się na tym, że użytkownik powinien ustawić ustawienia języka w przeglądarce podczas pierwszej konfiguracji komputera (jeśli użytkownik jest wystarczająco inteligentny lub może zapytać kogoś wystarczająco mądrego).


title: Tworzenie dokumentów z fragmentów

text: Od czasu do czasu programowo tworzę całe dokumenty (np. XML lub zastrzeżone). Jeśli to wystarczająco proste, po prostu piszę coś takiego jak stringbuilder.append("<blah>"); stringbuilder.append("<blubb>"); stringbuilder.append(jakaśWartość); stringbuilder.append("</blubb>"); stringbuilder.append("</blah>"); Ale co, jeśli schemat dokumentu stanie się bardziej złożony? Jak by to opisać? Co zrobić, jeśli nie jest dobrze skonstruowany jak XML, ale ma dowolny format? W tej chwili pomyślałem o abstrakcyjnym opisie formatu, który wystarczy wypełnić puste miejsca. A jeśli ja też muszę przeanalizować taki dokument? Ale wydaje mi się, że to powracający problem. A więc: Czy istnieje jakiś „wzór”, który mógłby to rozwiązać?


title: Czy istnieje data ważności dobrze cenionych, ale starych książek o programowaniu?

text: Po przeczytaniu pytania o książki, które każdy programista powinien przeczytać, zastanawiam się, czy następujące elementy nie powinny być uważane za przestarzałe: * Kod kompletny: 1 wydanie w 1993 roku; 2. wydanie w maju 2004 r. * Wprowadzenie do algorytmów (Cormen, Leiserson, Rivest, Stein): 1. wydanie w 1990 r.; Wydanie II we wrześniu 2001 r.; 3. wydanie w 2009 r. * Pragmatyczny programista: październik 1999 r. * Struktura i interpretacja programów komputerowych: I wydanie w 1984 r.; Wydanie drugie we wrześniu 1996 r. * Język programowania C: wydanie pierwsze w 1978 r.; Wydanie drugie, kwiecień 1988 Wszystkie te książki wydają się bardzo stare. Czy nie ma różnicy między nowoczesnym komputerem a tym, co było aktualne, gdy powstawały te książki? Na przykład, mój 61-letni nauczyciel bardzo ładnie tłumaczy, ale zapomina wziąć pod uwagę wszystko, co zostało zrobione między tym, kiedy zaczął uczyć 25 lat temu, a teraz. Czy nie jest tak samo w przypadku tych książek? Czy nie ma więcej nowoczesnych książek, które uczą zasad i technologii, które są bliższe obecnej praktyce? A może uważasz je za przydatne i aktualne nawet dzisiaj?


title: Czy potrafisz skutecznie zarządzać, gdy zostaniesz zmuszony do powrotu do rozwoju?

text: Przez około osiem miesięcy zarządzałem zespołem programistycznym, który przepisał aplikację internetową. W tym czasie byłem skoncentrowany na wielu aspektach projektu, które nie wiązały się bezpośrednio z pisaniem kodu, mimo że z zawodu tak zaczynałem. Ostatnio liczba programistów przypisanych do projektu spadła i jestem teraz zmuszony wrócić do roli programisty/zarządzającego. Od tego czasu odkryłem, że bardzo trudno jest skupić się na funkcji i ukończyć ją, jednocześnie starając się wyprzedzić innych programistów i upewnić się, że trzymamy się kursu. Moje pytanie brzmi: czy możesz z powodzeniem zarządzać projektem, gdy zostaniesz zmuszony do powrotu do rozwoju?


title: Niematematyczny projekt Euler (lub podobny)?

text: Sprawdziłem post (Gdzie mogę znaleźć łamigłówki i wyzwania programistyczne?), gdzie jest dużo wyzwań programistycznych i tym podobnych, ale po sprawdzeniu kilku z nich wszystkie wydają się dotyczyć algorytmów i matematyki. Czy istnieje podobna strona dla wyzwań opartych wyłącznie na logice/funkcjonalności? Na przykład: - Pobierz dane za pomocą usługi sieciowej - Wygeneruj wynik X z pliku CSV - Chroń ten kod przed wstrzyknięciem SQL - Zwiększ bezpieczeństwo tego kodu - Co jest nie tak z tym kodem (gdzie błąd jest w logice, a nie w składni) - Zwiększ wydajność tej pętli Czy istnieje taka witryna z wyzwaniami? Zwłaszcza taki, który dostarcza wskazówek i/lub poprawnych rozwiązań. To byłaby bardzo pomocna strona do nauki.


title: Korzystanie z alternatywnego frameworka MVC

text: Jestem nowym użytkownikiem ASP.NET MVC i EF. Czytałem o implementacjach wzorca MVC typu open source, takich jak Spring, FubuMVC, Castle itp. Chcę wiedzieć, jak elastyczne są te alternatywy w porównaniu z ASP.NET MVC. Który jest powszechnie używany, a czyja pomoc jest łatwo dostępna w sieci?


title: kompromisy kosztowe przy wdrażaniu zmian w prod, przechowywane procesy vs. LINQ

text: Trochę kontekstu dla tego pytania: nie chodzi o czas rozwoju przez _całą_ iterację rozwoju, ale tylko o etap wdrażania zmian ze środowiska deweloperskiego do produkcyjnego. "LINQ" tutaj naprawdę oznacza LINQ, ORM lub C#, gdzie w przeciwnym razie byłby używany T-SQL. A tutaj "przechowywane procedury" to tylko ogólny termin, który obejmuje obiekty bazy danych, które zawierają przechowywane procedury, funkcje i widoki. Pytanie zostało po prostu sformułowane jako "LINQ", "przechowywane procesy", ponieważ oba są często porównywane w pytaniach. Aby zawęzić zakres dyskusji możemy założyć aplikacje webowe. Na koniec pytanie brzmi: Jakie są _kompromisy_ w kosztach wdrożenia (od dewelopera do producenta) między tymi dwoma podejściami? Niektórzy twierdzą, że łatwiej jest wycofać zmiany schematu bazy danych niż wycofać zmiany w plikach C# w rozwiązaniu. Inni twierdzą, że łatwiej jest kontrolować wersję lub kod C# kodu niż obiekty schematu Db. Jeśli wprowadzisz zmiany w zapytaniach LINQ, najprawdopodobniej będziesz musiał ponownie skompilować aplikację, aby wypchnąć zmiany do prod. Jeśli wprowadzisz zmiany w schemacie bazy danych, może to wymagać uruchomienia skryptu T-SQL w celu zsynchronizowania zmian z prod. Podobnie jak w przypadku wielu decyzji dotyczących programowania, wybrane rozwiązanie może być zależne od kontekstu. np. w przypadku struktur danych niektóre sytuacje mogą wymagać mapy mieszania, a w innych najlepszym rozwiązaniem może być użycie stosu. Każdy ma swoje zalety/wady.


title: Jak komunikować nieefektywność przed jej wdrożeniem?

text: To problem, z którym spotykam się dość często. Zasadniczo używamy aplikacji do tworzenia treści artystycznych. Często wymaga to napisania do tego niestandardowych narzędzi. Czasami natkniesz się na części aplikacji, w których robienie czegoś nie jest bezpośrednio obsługiwane w interfejsie użytkownika, co oznacza, że albo będzie to trochę bardziej zaangażowane, albo przekaże to firmie produkującej to oprogramowanie, aby mogła zająć się tym w przyszłości. Widzę jednak, że niektórzy bardziej doświadczeni ludzie sugerują stosowanie metod, które są wyjątkowo nieefektywne. Załóżmy na przykład, że chcesz uzyskać dostęp do wartości ostatniego elementu w tablicy elementów 10M. Powiedzmy, że nie jest to bezpośrednio wykonalne. Możesz więc napisać kod, który byłby niewygodny w tym przypadku, ponieważ chcesz, aby można go było wykonać bezpośrednio w aplikacji. Ale zamiast tego proponują, powiedzmy, utwórz zapasową właściwość dla każdego elementu w tablicy, która zasadniczo będzie przechowywać to samo, a następnie użyj wbudowanego narzędzia, które przejdzie przez każdy element i ustawi wartość WSZYSTKIE te nowe właściwości do ostatniego przeczytanego elementu. A więc będzie to tak: for i=0 to array.Length: new_property[0..array.Length - 1] = array[i]; Więc to rzeczywiście da ci ostatni element po zakończeniu operacji, ale będzie to bardzo powolne. Jak możesz przekazać to osobom proponującym te metody? Ponieważ uważają, że to całkiem rozsądne i ponieważ mają większe doświadczenie i jest to głównie aplikacja artystyczna, nie powinno to wiązać się z większą ilością pracy dla nas/nich.


title: Wszelkie zmiany/ulepszenia dla LINQ 2010 vs LINQ 2008

text: Jestem użytkownikiem VB.NET i teraz uczę się LINQ. Książka, którą teraz czytam, skupia się na LINQ 2008 VB.NET. Chcę wiedzieć, czy w LINQ 2010 są zmiany/ulepszenia? p/s: Czytam tę książkę: Pro LINQ Language Integrated Query w VB 2008


title: Odpowiednik testu Joela do pomiaru programisty

text: Rozumiem, że do pomiaru projektu lub kodu możemy użyć _Testu Joela_ , ale czy jest jakiś prosty standardowy test (jak test Joela), który jest w stanie mierzyć i filtrować, jak dobry jest programista? Moim planem jest przeprowadzenie tego testu jako szybkiego filtru przed przejściem do bardziej szczegółowego testu.


title: Co oznacza nowy patent Facebooka na tagowanie zdjęć dla programistów?

text: To jest ponowne przesłanie pytania Blueplastic z SO, które zostało zamknięte. Myślę, że to doskonałe pytanie i chciałbym usłyszeć, co myślą ludzie. Aby to jeszcze rozwinąć, spójrz na patent, za który Yahoo pozywa Facebooka: http://paidcontent.org/article/419-meet-the-10-patents-yahoo-is-using-to-sue- facebook/ te patenty są tak szerokie i nie zdziwiłbym się, że wielu programistów mogło nieumyślnie rozwinąć swoją aplikację tak, aby działała w taki sposób. Rozumiem, że patent ma chronić własność intelektualną i promować innowacyjność. Wydaje się jednak, że jeśli niektóre popularne techniki zostaną opatentowane, stanie się to przeszkodą dla innowacji. * A jeśli istnieje patent na skracanie adresów URL? * A jeśli jest patent na edytor WYSIWYG? * Co by było, gdyby GO4 opatentowało swoje wzorce projektowe? Nie jestem prawnikiem, więc te przedmioty mogą nie podlegać patentowaniu, ale myślę, że to także część pytania. **Edytuj** Kolejny doskonały artykuł omawiający ten problem: http://www.wired.com/epicenter/2012/03/opinion-baio-yahoo-patent-lie/ http://stackoverflow.com/questions/6052154/ what-does-facebooks-new-photo-tagging-patent-mean-for-developers > Wczoraj opublikowano informację, że Facebook uzyskał patent na tagowanie > osób na zdjęciach: http://www.insidefacebook.com/2011/05 /17/facebook- > patent-photo-tagging/ > > Co to oznacza dla innych programistów? > > Tak więc, jeśli chcę stworzyć internetową aplikację do udostępniania zdjęć, w której chcę > pozwolić użytkownikom oznaczać swoich znajomych, czy oznacza to, że muszę płacić Facebookowi > tantiemy? >> Wierzę, że iPhoto i Picasa mają również funkcje oznaczania osób. Czy teraz > muszą też płacić tantiemy na Facebooku?


title: Czy zaciemnianie/zaciemnianie identyfikatorów publicznie dostępnych baz danych to naprawdę „najlepsza praktyka”?

text: Słyszałem, jak ludzie tu i tam w Internecie pouczają, że najlepszą praktyką jest ukrywanie publicznych identyfikatorów baz danych w aplikacjach internetowych. Przypuszczam, że mają na myśli głównie formularze i adresy URL, ale nigdy nie przeczytałem niczego więcej niż kęs na ten temat. **EDYTUJ** : Oczywiście teraz, kiedy o to pytam, znajduję pewne zasoby na ten temat: * http://stackoverflow.com/questions/2374538/obscuring-database-ids * http://stackoverflow.com/ pytania/1895685/should-i-obscure-primary-key-values * http://joshua.schachter.org/2007/01/autoincrement.html Te linki zaspokoiły część mojej ciekawości, ale posty SO nie mają wielu głosów i niekoniecznie są skupione wokół tematu w tym kontekście, więc nie jestem pewien, co o tym myśleć, a niektórzy z nich twierdzą, że trzeci link jest fałszywy. Resztę postu zostawię nietkniętą: * * * Rozumiem różnice między ukrywaniem a bezpieczeństwem, a także to, jak te dwa elementy mogą ze sobą współpracować, ale nie wyobrażam sobie, dlaczego miałoby to być konieczne. Czy jest w tym jakaś prawda, czy to tylko paranoja, czy jest to po prostu całkowicie fałszywe? Mogę wymyślić sposoby na zrobienie tego, ale oczywiście dodaje to dużo złożoności do kodu aplikacji. W jakich okolicznościach byłoby to przydatne? Jeśli to _jest_ coś, co ludzie często robią, w jaki sposób jest zwykle wdrażane? Haszujesz identyfikatory? Coś innego? Wydaje się, że to dużo pracy przy niewielkim dodatkowym zabezpieczeniu. Nie szukam prawdziwych rozwiązań, chcę tylko dowiedzieć się, jak/dlaczego ludzie zrobiliby to w prawdziwym świecie. Czy jest to naprawdę uważane za „najlepszą praktykę”, czy jest to jedynie mikrooptymalizacja o niewielkiej wartości? **UWAGA** : Myślę, że kilka osób mogło mieć zły pomysł: nie sugeruję, że trudne do odgadnięcia identyfikatory byłyby _tylko_ mechanizmem bezpieczeństwa, oczywiście byłyby zwykłe kontrole dostępu. Załóżmy, że są one na miejscu i że sama znajomość identyfikatora lub identyfikatora zaszyfrowanego rekordu nie wystarczy do przyznania dostępu.


title: Czy zamieniam książkę w program naruszam prawa autorskie?

text: Załóżmy, że posiadam kopię książki z fizyki zawierającej oryginalne badania. Załóżmy, że ta książka jest objęta licencją niewolną. Jeśli użyję w swoim programie formuł i pojęć wyjaśnionych w tej książce, czy naruszam prawa autorskie tej książki? Moim zdaniem odpowiedź brzmi nie, ponieważ kopiuję pomysły, a nie tekst, a pomysły nie mogą być chronione prawem autorskim. Muszę jednak powiedzieć, że aby korzystać ze wzorów, muszę przepisywać fragmenty tekstu, stąd pytanie. **Aktualizacja:** nie mam problemów z uznaniem autora i zacytowaniem książki; moim celem jest wolność wyboru licencji dla mojego oprogramowania, bez ograniczania się licencją książki.


title: Czy to jest licencja typu open source?

text: Bawiłem się z kodem w The Unix Archive i odkryłem, że większość kodu odwołuje się do (nieistniejącej) licencji, jednak ta znajduje się w katalogu głównym serwerów lustrzanych i najwyraźniej obejmuje cały kod (wpisany z pliku PDF, więc przepraszam za literówki): (plik źródłowy pdf jest tutaj > Poniższa informacja o prawach autorskich dotyczy plików z kodem źródłowym, na które > przyznano licencję. > > Copyright(c) Caldera International Inc. 2001-20012. Wszelkie prawa zastrzeżone > Redystrybucja i wykorzystanie w formie źródłowej i binarnej, z modyfikacją lub bez, są dozwolone pod warunkiem spełnienia następujących warunków: > > Redystrybucje kodu źródłowego i dokumentacji muszą zawierać powyższą > notę o prawach autorskich, tę listę warunków oraz następujące zastrzeżenie. Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, > tę listę warunków i następujące zastrzeżenie w dokumentacji > i/lub inne materiały dostarczone wraz z dystrybucją > > Wszystkie materiały reklamowe, w których wymienione są funkcje es lub korzystanie z tego oprogramowania musi > zawierać następujące potwierdzenie: Ten produkt zawiera oprogramowanie > opracowane lub będące własnością Caldera International, inc. > > Ani nazwa Caldera International, Inc., ani nazwy innych > współpracowników nie mogą być używane do promowania lub promowania produktów pochodnych > tego oprogramowania bez uprzedniej pisemnej zgody. > > KORZYSTANIE Z OPROGRAMOWANIA UDOSTĘPNIONEGO W RAMACH NINIEJSZEJ LICENCJI PRZEZ CALDERA > INTERNATIONAL, INC. SZCZEGÓLNY CEL SĄ WYŁĄCZONE. W ŻADNYM WYPADKU CALDERA INTERNATIONAL, INC. NIE PONOSI ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, > PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB WTÓRNE SZKODY (W TYM MIĘDZY INNYMI ZAKUP TOWARÓW LUB USŁUG ZASTĘPCZYCH; UTRATA DANYCH, > , LUB ZYSKÓW LUB PRZERWANIE W DZIAŁALNOŚCI JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII > ODPOWIEDZIALNOŚCI UMOWNEJ, ŚCISŁEJ LUB CZYNNEJ (W TYM > ZANIEDBANIA LUB INNEGO) WYNIKAJĄCE Z UŻYWANIA TEGO OPROGRAMOWANIA, NAWET MOŻLIWOŚCI TAKICH USZKODZEŃ. Czy to jest licencja typu open source? To wydaje się być bardzo BSD, z wyjątkiem klauzuli „wszystkie materiały reklamowe wspominające funkcje lub użycie tego oprogramowania muszą zawierać następujące potwierdzenie: ten produkt zawiera oprogramowanie opracowane lub będące własnością Caldera International, Inc” Czy ta klauzula zapobiec temu, że jest to licencja typu open source?


title: Jak przez przypadek przezwyciężyć programowanie?

text: W książce The Pragmatic Programmer autorzy wspominają o koncepcji _programowania przez przypadek_. Wyjaśnia, co to jest, dlaczego jest spowodowane, jakie są niebezpieczeństwa, które możesz napotkać i porównuje się z polem minowym podczas wojny. > Czy oglądasz kiedyś stare czarno-białe filmy wojenne? Zmęczony żołnierz wysuwa się > ostrożnie z zarośli. Przed nami polana: czy są jakieś lądy > miny, czy można bezpiecznie przejść? Nic nie wskazuje na to, że jest to > pole minowe – żadnych znaków, drutu kolczastego ani kraterów. Żołnierz szturcha ziemię > przed sobą bagnetem i krzywi się, spodziewając się eksplozji. Tam > nie ma. Więc przez chwilę żmudnie przechodzi przez pole, > szturchając i szturchając, gdy idzie. Ostatecznie, przekonany, że pole jest > bezpieczne, prostuje się i dumnie maszeruje do przodu, tylko po to, by zostać rozerwanym na kawałki. > > Pierwsze sondy żołnierza dotyczące min nie wykazały niczego, ale to było tylko > szczęście. Doprowadzono go do fałszywego wniosku – z katastrofalnymi skutkami. >> Jako programiści pracujemy również na polach minowych. Istnieją setki pułapek, które tylko czekają, aby nas złapać każdego dnia. Pamiętając opowieść żołnierza, powinniśmy > uważać na wyciąganie fałszywych wniosków. Powinniśmy unikać programowania > przez przypadek — polegając na szczęściu i przypadkowych sukcesach — na rzecz programowania > świadomie... Ale nie jestem zadowolony ze sposobu, w jaki opisują problem „jak to przezwyciężyć”. Tak, musisz myśleć z wyprzedzeniem przed napisaniem kodu, ale jak to przećwiczyć? Jedyne, o czym myślę, to dodanie funkcji do istniejących projektów Open Source, w których musisz mieć wiedzę zarówno na temat tego „co teraz robię”, jak i „Jak działają inne fragmenty kodu”, i nie jest to tak istotne kiedy piszesz własne projekty. EDYCJA: podsumowanie z twoich postów: * Nie zgaduj swojego następnego ruchu, udowodnij, że jest poprawny * Test jednostkowy i refaktoryzacja w miarę możliwości, gdy jest to konieczne * Często dodawaj funkcje-complile-test * Jeśli nie możesz wyjaśnić kodu noobowi, który ponownie prawdopodobnie programowanie przez przypadek. Btw, trudno przyjąć odpowiedź, naprawdę ciężko. Wszystkie odpowiedzi są naprawdę świetne :)


title: Co sprawia, że aplikacje HTML5 i JS są tak dobre, jak aplikacje natywne?

text: Z tego, co rozumiem, * HTML jest językiem znaczników, podobnie jak zawartość XAML, XIB i czegokolwiek używa Android oraz innych natywnych frameworków programistycznych UI. * JavaScript jest językiem programowania używanym wraz z nim do obsługi skryptów po stronie klienta, które będą obejmować takie rzeczy, jak obsługa zdarzeń, walidacje po stronie klienta i wszystko, co C#, Java, Objective-C lub C++ robią w różnych takich frameworkach. * Istnieją wzorce MVC/MVVM dostępne w frameworkach formularzy, takich jak Sencha's, Angular itp. * Mamy localStorage w postaci zarówno sqlite, jak i key-value store, podobnie jak inne frameworki i masz specyfikację API dla prawie wszystkiego, czego brakuje. * Za każdym razem, gdy natywne struktury interfejsu użytkownika muszą renderować interfejs użytkownika , musi przeanalizować podobny znacznik i renderować interfejs użytkownika. **Podział pytań** * Co przestaje robić to samo w HTML i JS? * Zamiast mieć kontrolkę internetową lub przeglądarkę jako warstwę pomiędzy, dlaczego HTML (wraz z CSS) i JS nie mogą działać w ten sam sposób? * Nawet jeśli istnieje warstwa, tak samo środowisko uruchomieniowe .net i JVM są w innych przypadkach, w których C++, C nie są używane. * Więc weźmy przypadek Androida, takiego jak Dalvik, dlaczego Chromium nie może być inną opcją (wraz z dalvik i NDK), gdzie HTML robi to, co robi znaczniki Androida, a JavaScript jest używany do robienia tego, co robi Java? Tak więc pytanie brzmi: nawet jeśli obecne implementacje nie są tak dobre, ale teoretycznie jest możliwe, aby aplikacje oparte na HTML5 działały jak inne aplikacje natywne, szczególnie na urządzeniach mobilnych?


title: Jakie są algorytmy do wybierania kolorów dla linii wykresów na wykresach?

text: Interesuje mnie **jakie algorytmy lub reguły mogę programowo zaimplementować, aby wygenerować kolory RGB lub HSV dla wątków**, aby wizualnie różniły się od sąsiadów. Wiem, że w profesjonalnym tworzeniu map istnieją algorytmy lub reguły, które zapewniają, że żadne dwa sąsiadujące kraje na mapie nie mają tego samego koloru. Mogę też myśleć o Microsoft Office Excel jako o wybieraniu dobrych odcieni/odcieni dla linii działek (czerwony, potem niebieski, potem fioletowy/pomarańczowy). Oto przykład tego, o czym mówię - muszę wygenerować kolory dla 12 linii na czarnym tle. Kolory tutaj zakodowałem ręcznie, używając bezpiecznych dla sieci kodów kolorów RGB. Problem pojawia się, gdy te linie nakładają się na siebie – trudno powiedzieć, czy patrzy się na fiolet, nieco ciemniejszy fiolet czy fiolet. **Szukam lepszego algorytmu do tworzenia kolorów dla takich linii.** ![Przykład koloru wielu linii wykresu](http://i.stack.imgur.com/5zi6d.png) Oto przykład z użyciem Flota biblioteka do kreślenia dla jQuery, ma ładną kolejność kolorów dla wykresów: ![tutaj wpisz opis obrazka](http://i.stack.imgur.com/pv2c7.png)


title: Creative Commons 3 kontra Common Public Attribution License w wersji 1.0 dla mojego skryptu PHP

text: Obecnie pracuję nad skryptem PHP typu open source i próbuję zaadoptować licencję na uznanie autorstwa. Te, które znalazłem to CC 3.0: http://creativecommons.org/licenses/by/3.0/ i CPAL 1.0: http://opensource.org/licenses/CPAL-1.0 Wydają się bardzo podobne do mnie. Jaka jest różnica, plusy i minusy? To, czego chcę, to: 1. Zezwolenie na korzystanie z darmowej i komercyjnej pracy, w razie potrzeby zmodyfikowanie jej do własnych potrzeb, ale niemożność rozpowszechniania jej jako nowego produktu lub pod inną nazwą (bez sublicencji?). EDYCJA: Jestem trochę zdezorientowany co do licencji CPAL, na co pozwala, a co nie? 2. Informacje o prawach autorskich w kodach źródłowych nie mogą zostać usunięte 3. Przyznanie praw autorskich na interfejsie i zapleczu (panelu administracyjnym) nie może zostać usunięte. Ale przyjmę model podwójnego licencjonowania, dodając licencję komercyjną, aby umożliwić usunięcie ich za opłatą (tylko frontend i backend, a nie informacje o prawach autorskich w kodach źródłowych). 4. Wszelkie wtyczki lub motywy stworzone do tego skryptu nie muszą przyjmować mojej licencji, o ile główne kody źródłowe nie są modyfikowane, może to być dowolna licencja (komercyjna, MIT, GPL, CC, CPAL) przyjęta przez autorów. Myślę, że to w zasadzie to. Jestem również otwarty na sugestie dotyczące innych rodzajów licencji i dlaczego


title: Czy do tworzenia można użyć widocznego konstruktora pakietu?

text: Potrzebuję klasy, w której można to zrobić: // program użytkownika elder_tales.Player p = elder_tales.generate_player(); elder_tales.level_up_player( p ); ale nie: // program użytkownika elder_tales.Player p = new ...cokolwiek p.set_stats(); p.zestaw_serwer(); p.calculate_experience() elder_tales.level_up_player( p ) Zasadniczo chcę, aby pakiet tworzył instancję, nie pozwalając użytkownikowi na samodzielne tworzenie instancji; ponieważ instancje typu Player są konstruowane w sposób złożony, postanowiłem nie obciążać użytkownika zbytnio tworzeniem ich za pomocą publicznego konstruktora.


title: Wybierz licencję i model biznesowy aplikacji na Androida

text: Przepraszam, jeśli to niewłaściwe miejsce na to pytanie. Zaczynam tworzyć aplikację na Androida, ale przed pisaniem kodu chciałbym wybrać licencję i model biznesowy. Moje wymagania są następujące: * Uczyń aplikację open source (całkowicie lub częściowo) * Sprzedaj aplikację za niewielką cenę w Google Play Widzę zasadniczo dwie alternatywy do wyboru: 1. Powiedzmy, że chcę mieć pojedynczy płatny plik binarny w Google Play i pozwalam (zaawansowanym) użytkownikom zbudować aplikację dla siebie, jeśli chcą (lub może wziąć aplikację z F-Droid lub podobnych sklepów innych firm). W takim przypadku, jakiej licencji open source powinienem użyć? Nie jestem pewien, czy licencja GPL pozwala mi sprzedawać binaria. 2. Załóżmy, że chcę udostępnić w Google Play podstawową wersję aplikacji za darmo i wersję _pro_ za niewielką opłatą. Podstawowa wersja byłaby open source, ale co z wersją pro? Otwarte czy zamknięte źródło? Zapraszam do zaproponowania dodatkowego modelu!


title: Jak mierzyć produktywność zespołu w czasie za pomocą spójnych rozmiarów historii?

text: Jak mierzyć produktywność zespołu w czasie przy użyciu spójnych rozmiarów historii? Weźmy prosty przykład, jeśli mogę napisać historię co dwa dni, to mogę zrobić pięć historii w ciągu dwutygodniowego sprintu. Z definicji (ponieważ jedna historia to dwa dni), będę kontynuował ukończenie pięciu historii na sprint w nieskończoność. Aby zademonstrować poprawę w czasie, potrzebowałbym nowego pomiaru, na przykład wartości, prawda?


title: Jak zatrzymać studentów/stażystów programistów?

text: W naszym dziale mamy mały zespół i zazwyczaj zatrudniamy 1-3 studentów/stażystów. Problem, jaki mamy, to retencja. Lubimy zatrudniać studenta, który pozostanie w zespole na dłużej niż tylko letni kwartał. Problem polega na tym, że ostatnich 4 studentów, których zatrudniliśmy, przedyskutowaliśmy z nimi to z góry i wszyscy wyjechali wcześniej, niż byśmy chcieli. Wszystkie relacje zakończyły się pomyślnie, studenci albo dostali stanowiska asystenta dydaktycznego lub stanowiska badawcze na uniwersytecie, albo zajęli się większymi i lepszymi rzeczami. To wszystko jest zrozumiałe i nie zarzucamy im tego, że robią to, co jest dla nich najlepsze. Ale moja perspektywa jest inna, ponieważ pracowałem w naszym dziale przez 2 lata na studiach licencjackich, kiedy to po ukończeniu studiów zostałem przyjęty na pełny etat. Jak możemy zatrzymać uczniów? Dajemy im sprzęt, którego potrzebują/chcą, dajemy im problemy do rozwiązania w dowolny sposób (w granicach rozsądku). W sumie dla mnie taka praca dla studenta-programisty jest tak elastyczna i niesamowita, że nie widzę, jak ktokolwiek chciałby odejść. Myśli ?


title: Ta sama sygnatura konstruktora z inną semantyką?

text: Czasami mam do czynienia z problemem, że muszę dostarczyć kilka konstruktorów, aby zainicjalizować obiekty z różnymi zestawami danych. Zbiory te mogą być matematycznie przekształcane w siebie, na przykład: public Element(int x, int y, int szerokość, int wysokość) { setValues(szerokość, wysokość, x, y); } element public Element(int RectTop, int RectLeft, int RectRight, int RectBottom) { setValues(RectRight - RectLeft, Math.Abs(RectBottom - RectTop), RectLeft, -RectTop); } Przy tak pożądanym przeciążeniu, którego w rzeczywistości nie ma ze względu na te same sygnatury, jest prawdopodobne, że zostanie wywołany niewłaściwy konstruktor, np. podajesz Rect-Values i wywoływany jest pierwszy konstruktor. Zakładając, że mielibyśmy różne typy, moglibyśmy to osiągnąć poprzez zamianę typów z dobrą wiedzą, że jest to zła praktyka. Ale tak nie jest w tym prostym przykładzie z typem cztery razy int. Czy możesz wymyślić jakieś eleganckie alternatywy, aby osiągnąć pożądane zachowanie, które mamy wygodę przeciążania, ale z tym samym podpisem?


title: Najlepszy przykład dla domieszek w .NET

text: Chcę przedstawić koncepcję mixinów i ich implementację w .NET. Sposób, w jaki działają w .NET, polega na dodawaniu metod rozszerzających do interfejsu i dekorowaniu klas za pomocą tego interfejsu. Jakie byłyby najlepsze przykłady tego wzorca (inne niż linq)?


title: Techniki umożliwiające dynamiczne zapytania/obliczenia w czasie wykonywania

text: Pracuję nad projektem C#, który zapewnia użytkownikom metodę na żądanie importowania danych z różnych formatów, a następnie wykonuje akcje korespondencji seryjnej podobne do ukończenia szablonu. Proces działa dla podstawowych typów danych. Muszę jednak dodać możliwość wykonywania obliczeń na istniejących danych (których nie ma w źródle), aby wyniki można było umieścić na wyjściu. **Przykład 1** : _Zakres dat_ \-- jeśli istnieją dane w obu polach daty początkowej i końcowej, dane wyjściowe powinny zawierać dwie daty oddzielone znakiem "-". Jeśli obecny jest tylko jeden, wyprowadzana jest tylko ta data. **Przykład 2** : _Warunki_ \-- jeśli dane w polu X spełniają kryteria Y, to wypisz Z. **Przykład 3** : Sformatuj tekst przed konwersją na liczbę i sformatuj wynik jako walutę. Pole źródłowe: „000059975” Pożądane dane wyjściowe: „599,75 USD” _Zauważ, że wersja tekstowa numeru miała stałą długość i zawierała zarówno całe, jak i częściowe jednostki waluty (w tym przypadku dolary i centy)._ Rozumiem, jak wykonać te czynności W kodzie; jednak cała konfiguracja źródeł danych i „obliczonych” pól musi być wykonana w czasie wykonywania za pomocą ciągów. Wszystkie dane po zaimportowaniu są umieszczane w DataTable, więc każde rozwiązanie będzie miało dostęp do ich możliwości w C# 4. Kilka pomysłów, które rozważałem do tej pory: * funkcje lambda z wyrażeniem regularnym zamień * bezpośrednie wyrażenia C# * język skryptowy ( np. przetwarzanie SQL / JavaScript / Python) * DSL (choć nie mam doświadczenia w projektowaniu/wdrożeniu takich) Nie udało mi się zidentyfikować sposobu na zaimplementowanie którejkolwiek z powyższych możliwości. Zauważ też, że chociaż jest to wewnętrzna aplikacja biznesowa, z której w dużej mierze będzie korzystać niewielka grupa pracowników IT, wolałbym pozostać przy rozwiązaniu, które ogranicza możliwość wykonania dowolnego kodu. Jakie techniki istnieją, aby zaspokoić tę potrzebę?


title: MyListActivity, MyCursorAdapter, MyViewHolder -- klasy zagnieżdżone czy nie?

text: Korzystam z kilku działań opartych na `ListActivity`. Wszystkie wyświetlają informacje z różnych zapytań SQLite i wszystkie używają optymalizacji `ViewHolder`. Adapter kursora musi być wyspecjalizowany, a uchwyt widoku jest również specjalny do tego celu. Dlatego są one zdefiniowane jako `klasy prywatne` w definicji `MyListActivity`. Nie mając zbyt dużego doświadczenia z Javą, moje pytanie brzmi, czy wybrane podejście jest poprawne. Możliwe, że klasy niezagnieżdżone (czyli płaski, osobny plik *.java) nie są lepsze z nieznanych mi powodów. Jakie są zalety i wady podejść zagnieżdżonych/płaskich? Mówiąc dokładniej, oto szkielet kodu: public class MyListActivity extends ListActivity implementuje LoaderManager.LoaderCallbacks<Cursor> { private MyCursorAdapter myAdapter; @Override public void onCreate(Bundle saveInstanceState) { ... initLoaderAndSetListAdapter(); } prywatna klasa statyczna MyViewHolder { publiczny kod TextView; public CharArrayBuffer codeBuffer = new CharArrayBuffer(20); ... } private class MyCursorAdapter extends CursorAdapter { private final LayoutInflater mInflater; prywatny końcowy int mLayout; public MyCursorAdapter(Kontekst kontekstu, kursor c, flagi int) { super(kontekst, c, flagi); mLayout = R.layout.the_specific_view_for_the_list_item; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View newView(Kontekst kontekstu, kursor kursora, rodzic ViewGroup) { View v = mInflater.inflate(mLayout, parent, false); Posiadacz MyViewHolder = nowy MyViewHolder(); holder.code = (TextView) v.findViewById(R.id.code); v.setTag(posiadacz); powrót v; } @Override public void bindView(widok widoku, kontekst kontekstu, kursor kursora) { MyViewHolder holder = (MyViewHolder) view.getTag(); cursor.copyStringToBuffer(1, posiadacz.codeBuffer); // KOD_KOLUMNY ... holder.code.setText(holder.codeBuffer.data, 0, holder.codeBuffer.sizeCopied); ... } } private void initLoaderAndSetListAdapter() { getLoaderManager().initLoader(0, null, to); myAdapter = new MyCursorAdapter(this, null, 0); setListAdapter(mójAdapter); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { Uri uri = ... ustaw uri na podstawie sytuacji... ; String[] projekcja = { ... }; CursorLoader cursorLoader = new CursorLoader(this, uri, projekcja, null, null, orderingInfo); powrót kursorLoader; } @Override public void onLoadFinished(loader<Cursor> loader, Cursor data) { myAdapter.swapCursor(data); } @Override public void onLoaderReset(Loader<Cursor> loader) { myAdapter.swapCursor(null); } } Pytanie jest specyficzne dla opisywanej sytuacji, z którą wielokrotnie się spotykam. Proszę, nie traktuj tego jako ogólne _klasy zagnieżdżone, czy nie_.


title: różnica między metodami księgowymi a potencjalnymi w analizie zamortyzowanej

text: Przechodziłem przez Wprowadzenie do algorytmów autorstwa Cormena i innych. W rozdziale zatytułowanym Analiza amortyzowana różnica między metodami księgowymi a potencjalnymi jest podana w następujący sposób > Metoda księgowa przeciąża niektóre operacje na początku sekwencji, > przechowywanie nadmiernego obciążenia jako „przedpłacone kredytu” na konkretnych obiektach w strukturze danych >. ... > > Metoda potencjalna utrzymuje kredyt jako „energię potencjalną” struktury danych jako całości, zamiast kojarzyć kredyt z poszczególnymi obiektami w obrębie struktury danych. Próbowałem to zrozumieć na przykładzie tablicy o zmiennym rozmiarze, która podwaja swój rozmiar, gdy nie ma miejsca na wstawienie elementu. Nie mogłem zrozumieć następującego zdania > przechowywanie nadmiernego obciążenia jako „kredyt przedpłacony” na określonych obiektach w danych > struktura Stosując metodę rachunkowości: ci = opłata za i-tą operację c'i = zamortyzowany koszt i-tej operacji Si = wielkość tablicy po i-tej operacji bi = saldo kredytu po i-tej operacji i 1 2 3 4 5 6 7 8 9 10 si 1 2 4 4 8 8 8 8 16 16 ci 1 2 3 1 5 1 1 1 9 1 c'i 3 3 3 3 3 3 3 3 3 bi 2 3 3 5 3 5 7 9 3 5 co dokładnie oznacza tu „przechowywanie na określonych obiektach w strukturze danych”? W metodzie potencjalnej, jeśli użyję phi jako 2n-m, gdzie n = liczba bieżących elementów w tablicy, a m=rozmiar tablicy n m phi puste 0 0 0 dodaj pierwszy element 1 1 1 dodaj drugi element 2 2 2 dodaj trzeci element 3 4 2 dodaj czwarty element 4 4 4 dodaj piąty element 5 8 2 W tym znaczeniu „...energia potencjalna” struktury danych jako całości zamiast kojarzenia kredytu z poszczególnymi obiektami w strukturze danych ”.


title: Możliwe wzorce projektowe dla funkcji podstawowej z możliwymi dodatkami

text: Mam różne interfejsy, które muszę zaimplementować. Załóżmy, że ITypeA, ITypeB. Mają one następujące metody: ITypeA Połącz Odłącz GetData SetData ClearData ITypeB Połącz Odłącz GetData SetData Start Pauza Stop Posiadają podstawową funkcjonalność: `Connect`, `Disconnect`, `GetData` i `SetData`. Jeśli będę chciał dodać ITypeC w przyszłości, będzie on również miał te podstawowe funkcje. Chcę uzyskać dostęp do podstawowej funkcjonalności, a jeśli jest dodatkowa funkcjonalność, też chcę ją uzyskać. Jakie wzorce projektowe są dostępne w takich sytuacjach? Znalazłem jeden tutaj: Interfejs rozszerzeń. W tym celu tworzysz interfejs podstawowy i wiele interfejsów rozszerzeń, które implementują dodatkowe funkcje. W interfejsie podstawowym możesz zapytać o dostępne interfejsy rozszerzeń komponentu. Ale to podejście wydaje się skomplikowane: muszę tworzyć interfejsy dla każdego typu, fabryki dla interfejsów, potrzebuję tabel, aby zapisać, jaki interfejs należy do jakiej Fabryki... Jakie jest podstawowe rozwiązanie tego problemu? Interfejsy rozszerzeń? Czy są jakieś inne możliwe alternatywy dla mojego problemu?


title: Czy używanie globalnego do utrzymywania aktualnie zalogowanego użytkownika jest złą praktyką?

text: Zajmuję się rozwojem Androida w stosunkowo niedoświadczonej grupie, a wszystkie dane używane przez naszą aplikację są zarządzane w bazie danych. Istnieje kilka sytuacji, w których będziemy musieli pobrać informacje z bazy danych przy użyciu informacji identyfikujących/PK użytkownika, który jest aktualnie zalogowany. Ponieważ jedyną ważną informacją od użytkownika jest PK (nie potrzebujemy całą klasę reprezentującą typy użytkowników lub wszelkie powiązane dane), a ponieważ ten identyfikator jest ważny w całym zakresie aplikacji i nie zmieni się po jego zdefiniowaniu, rozważyliśmy przechowywanie identyfikatora / PK użytkownika w globalnym udane logowanie. Czy użycie zmiennej globalnej w takich okolicznościach jest złą praktyką? Czy istnieje lepszy sposób na poradzenie sobie z tym?


title: Jak porównać cechy dwóch krzywych?

text: Muszę porównać dwie krzywe f(x) i g(x). Znajdują się w tym samym zakresie x (powiedzmy -30 do 30). f(x) może mieć ostre piki lub gładkie piki i doliny. g(x) może mieć te same szczyty i doliny. Jeśli tak, chcę zmierzyć, jak dobrze te cechy pokrywają się bez oględzin. Próbowałem rozwiązać ten problem w następujący sposób. 1. Znormalizuj obie funkcje, dzieląc każdy punkt danych przez całkowity obszar funkcji. Teraz obszar znormalizowanej funkcji wynosi 1,0 2. Przy każdym x uzyskaj minimalną wartość z f(x) i g(x). To da mi nową funkcję, która jest w zasadzie obszarem nakładania się między f(x) i g(x). 3. Kiedy integruję wynikową funkcję z kroku 2, otrzymuję całkowity obszar nakładania się z 1.0. Jednak to nie mówi mi, czy szczyty i doliny pokrywają się, czy nie. Nie jestem pewien, czy można to zrobić, ale jeśli ktoś zna metodę, byłbym wdzięczny za twoją pomoc. ==EDYTUJ== Dla wyjaśnienia załączyłem obrazek. ![Przykładowe krzywe](http://i.stack.imgur.com/JafS4.jpg) Różnica między dwiema krzywymi (czarną i niebieską) może nie być taka sama, ale będą miały uzupełniające się kształty. Wstęp: Funkcje są rzutowaną gęstością stanów (PDOS) orbitali atomowych związku. Więc mam stany dla orbitali s,p,d. Chcę ustalić, czy materiał ma hybrydyzacje s-p, p-d lub d-d (mieszanie orbitalne). Jedyne dane jakie posiadam to PDOS. Jeśli powiedzmy, że PDOS orbitalu s (funkcja f(x)) ma piki i doliny przy tych samych energiach (wartości x) co PDOS orbitalu p (funkcja g(x)) to w tym materiale występuje mieszanie s-p.


title: programowanie i nauczanie w parach

text: Programowanie w parach jest postrzegane jako pomocna strategia nauczania – w rzeczywistości, w porównaniu z pracą pojedynczą, jest to niemal magiczna kula: * większa satysfakcja ucznia * wyższe wyniki egzaminów * na dłużej - późniejsze egzaminy nadal uzyskują wyższe wyniki * lepsze wyniki w późniejszej pracy, która polega na uczeniu się w parach Czy w strategii są jakieś pułapki? Kiedy programowanie w parach jest najbardziej efektywne w nauce, a kiedy najlepiej go unikać?


title: Czy do wyróżniania słów należy używać niestandardowych tagów na stronie HTML?

text: Chciałbym wiedzieć, czy używanie niestandardowych tagów na stronie HTML do pewnych niestandardowych celów jest dobrą praktyką lub czy jest legalne. Na przykład: > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam consequat, > felis sit amet suscipit laoreet, nisi arcu accumsan arcu, vel pulvinar odio > magna suscipit mi. Chcę podkreślić "consectetur adipiscing elit" jako ważne i "nisi arcu accumsan arcu" jako podkreślone. Czyli w kodzie HTML umieściłbym: > Lorem ipsum dolor sit amet, <ważne >consectetur adipiscing > elita</ważne >. Nullam consequat, felis sit amet suscipit laoreet, > <podkreślone>nisi arcu accumsan arcu</highlighted>, vel pulvinar odio magna > suscipit mi. aw CSS: ważne { background: red color: white; } podświetlony { tło: żółty; czarny kolor; } Jednakże, skoro nie są to poprawne znaczniki HTML, czy to jest w porządku?


title: czy powinienem umieszczać połączenia z bazą danych do biblioteki klas?

text: To może być głupie pytanie, ale nigdy wcześniej nie tworzyłem biblioteki klas Powodem, dla którego nie chcę łączyć się z bazą danych za pośrednictwem biblioteki klas, jest obsługa błędów ... czy powinienem po prostu zostawić błędy, aby wrócić do dowolnego kodu korzysta z biblioteki klas? mam się tym zająć? czy też powinienem zostawić go całkowicie i wyjąć cały obiekt bazy danych z biblioteki, tworząc go osobno / kopiując i wklejając za każdym razem, gdy chcę go użyć. Jest to mały projekt z zaledwie 12 klasami, wszystkie poniżej 200 linii i będzie używany tylko w aplikacjach firmowych. Prawdopodobnie będę jedynym, który będzie używał go do programowania, chyba że odejdę i ktoś będzie musiał wprowadzić zmiany w aplikacjach. To c#, czy to robi choćby najmniejszą różnicę?


title: Jakie systemy operacyjne używają zarówno wątku renderowania, jak i wątku interfejsu użytkownika?

text: Pracownicy firmy Microsoft często opisują system Windows 8 jako posiadający zarówno wątek renderowania, jak i wątek interfejsu użytkownika. Zazwyczaj mówią, że wątek Render wykonuje animacje, a wątek interfejsu użytkownika obsługuje większość innych operacji: parsowanie, układ, stosowanie szablonów, wiązanie danych, przetwarzanie danych wejściowych, większość wywołań zwrotnych aplikacji itp. > Animacje można obliczać od początku do końca podczas ich tworzenia. > Czasami zmiany w animowanej właściwości nie wpływają > na pozostałe obiekty w scenie. Są to tak zwane niezależne animacje i > są uruchamiane w **wątku kompozycji zamiast w wątku interfejsu użytkownika**. Gwarantuje to, że > pozostaną gładkie, ponieważ wątek kompozycji jest aktualizowany w > stałym rytmie... Czy jest to powszechna architektura, czy unikalna dla systemu Windows 8? A co z Windows Phone 8? Android? iOS?


title: Randomizacja biomów

text: Wiesz, jak w Minecrafcie świat stale się rozszerza, a wszystkie biomy są losowe? Moje uogólnione pytanie brzmi: w odniesieniu do symulacji kosmicznej, która również stale się rozwija, gdy gracz porusza się po świecie, jak można by zaprogramować tę randomizację w Javie? Moje prawdziwe pytanie brzmi: Czy mogę uzyskać uproszczony przykład podzielony na następujące przykładowe klasy: * astroidy (obejmuje to, ile jest astroid, ich położenie w przestrzeni, ich rozmiar, jak często występują większe astroidy, jak blisko są wzajemnych ograniczeń, ile dużych asteroid może znajdować się na jednym polu, jak często generowane są pola asteroid itp.) * typy gwiazd (rozmiar, kolor, typ, jak często występują, gdzie występują itp. ) * planety-zamieszkalne (rozmiar, położenie, jak często są generowane, gdzie są generowane itp.) Byłoby to obecnie bardzo pomocne, ponieważ chciałbym stworzyć uproszczoną wersję takiego programu.


title: Jakieś wskazówki, jak zostać kierownikiem projektu oprogramowania zaraz po studiach?

text: Ukończyłem studia z licencjatem w compsci we wrześniu ubiegłego roku i od tego czasu (bezskutecznie) staram się znaleźć pracę jako kierownik projektu. Zakochałem się w inżynierii oprogramowania (formalna praktyka za tym wszystkim, a nie tylko kodowanie) w szkole i poświęciłem ostatnie 3-4 lata mojego życia na nauczenie się wszystkiego, co mogę o zarządzaniu projektami i zdobywaniu doświadczenia. W szkole zarządzałem kilkoma projektami (z zespołami liczącymi około 12 osób) i współpracowałem z laboratorium badawczym inżynierii oprogramowania na mojej uczelni. Moje CV też jest przyzwoite – zanim poszedłem do szkoły, pracowałem jako programista (mam teraz 27 lat) i przez 3 lata robiłem Google Summer of Code. Mam również ogólne doświadczenie w „zarządzaniu ludźmi”, pracując przez 2 lata jako fotoedytor dla mojej uniwersyteckiej gazety. Mój pierwszy problem z poszukiwaniem pracy polega na tym, że nie mam wystarczającej liczby rozmów kwalifikacyjnych. Używam careers.stackoverflow.com, co jest niesamowite, ponieważ zwykle kontaktują się ze mną osoby spoza działu HR, które wiedzą, o czym mówią, ale po prostu nie ma wystarczającej liczby firm, które używają go do regularnych rozmów kwalifikacyjnych. Próbowałem też serwisów takich jak monster.com iw przypływie desperacji wysłałem nie mniej niż 60 aplikacji na stanowiska kierownicze. Dostałem 3 listy z automatycznym odrzuceniem i to wszystko. Przynajmniej careers.stackoverflow daje mi rozmowę telefoniczną z 8/10 miejscami, na które aplikuję. Ale głównym (i niezwykle frustrującym) problemem jest kwestia doświadczenia. Z powodzeniem zarządzałem projektami od początku do końca (na moich zajęciach z inżynierii oprogramowania mieliśmy prawdziwych klientów z prawdziwym zapotrzebowaniem na oprogramowanie i zbudowaliśmy je dla nich), ale nigdy nie miałem do czynienia z budżetami i pieniędzmi (wiem dlatego pracownicy HR natychmiast mnie odrzucają). Większość z tych stanowisk wymaga ponad 5 lat doświadczenia w PM i widziałem absurdalne rzeczy, takie jak wymagane 12 lat. Wywiady również doprowadzają do szału. Miałem tak wiele miejsc, które absolutnie mnie kochały i dotarłem do ostatniej rundy wywiadów, i odszedłem myśląc, że wszystko poszło bardzo dobrze i że mnie rozważą. Kiedy jednak zaglądam do nich tydzień później, mówią mi: „Naprawdę cię polubiliśmy, a twoje kwalifikacje są doskonałe, ale mamy nadzieję, że znajdziemy kogoś z większym doświadczeniem”. Złe rozmowy kwalifikacyjne, które potrafię zrozumieć - jak stanowisko PM, które skłoniłoby mnie do zarządzania programistami zarówno lokalnie, jak i za granicą - odbyłem z nimi 3 wywiady, a CAŁĄ rozmowę kwalifikacyjną polegała na tym, że zadawali mi łamigłówki CS i marnowali czas na takie rzeczy, jak pisanie quicksort na papierze lub pisząc drzewa wyszukiwania binarnego. Nawet gdy próbowałem skierować dyskusję na bardziej istotne kwestie związane z PM, dali mi kilka niejasnych ogólnych odpowiedzi i wrócili do bzdur „Chcemy być Google/MS”. Ale kiedy mam DOBRY wywiad, mówią, że moje „kwalifikacje są doskonałe”, ale chcą „więcej doświadczenia”… to sprawia, że chcę wyrywać sobie włosy z głowy. Co jeszcze mogę zrobić? Chociaż dążę do technicznie zaangażowanych stanowisk PM (nie tylko do analizowania budżetów), naprawdę nie chcę prostej pracy programistycznej, ponieważ lubię tworzyć oprogramowanie od bardzo wysokiego poziomu, a nie spędzać dużo czasu na debugowaniu wycieków pamięci . W rzeczywistości nie mogę nawet uzyskać stanowisk rozwojowych, na które jestem zakwalifikowany, ponieważ popełniam błąd mówiąc im, że moje przyszłe cele zawodowe są jako PM (co zwykle powoduje, że mówią coś w stylu „Cóż, już mamy PMów i to pozycja nie jest tak naprawdę ustawiona, aby cię tam dostać”. – co rozumiem jako „nie, to moja praca, trzymaj się z daleka”. Przepraszam za długą wypowiedź, ale jestem naprawdę zdecydowany, aby zostać zatrudnionym jako PM ponieważ jest to zarówno mój cel zawodowy, jak i pasja, która nie pozwala mi zasnąć w nocy. Jakieś sugestie, co jeszcze mogę zrobić? Obecnie piszę bloga, w którym opowiadam o moich filozofiach na temat inżynierii oprogramowania i piszę specyfikacje aplikacji na iOS, którą zaprojektuję, zakoduję i pokażę pracodawcom, ale zajmuje to strasznie dużo czasu. nie mam.


title: Czy źle jest modelować odpowiedzi JSON na klasy, gdy są one w większości podobne?

text: Oto problem: podczas implementacji wrappera C# dla internetowego interfejsu API (Discogs) stanąłem przed dylematem: dość często zwracane odpowiedzi mają w większości podobne elementy i podczas modelowania tych odpowiedzi do klas, pojawiają się pytania, w którą stronę iść byłby najlepszy. Przykład: zapytanie o „wydanie” lub „master” zwróci obiekt, który zawiera tablicę „artysta”, jednak ci „artyści” nie mają dokładnie tych samych członków. Obecnie zdecydowałem się reprezentować tych 'artystów' jako jedną klasę 'Artysty', a nie mieć odpowiednich klas 'ReleaseArtist' i 'MasterArtist', co wkrótce staje się bardzo mylące, mimo że pojawia się inny problem: gdy kategoria (master lub wydanie) nie powraca tych członków, będą nieważne. Chociaż może to również zabrzmieć myląc, uważam, że jest mniej mylące niż poprzednia sytuacja, ponieważ poradziłem sobie z problemem, po prostu nie pokazując pustych elementów podczas wizualizacji tych obiektów. Czy to jest właściwe podejście do naśladowania? Przykład tych różnic: public class Artist { public List<Alias> Aliases { get; ustawić; } ciąg publiczny DataQuality { get; ustawić; } lista publiczna<Obraz> Obrazy { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } public List<string> NameVariations { get; ustawić; } ciąg publiczny Profil { get; ustawić; } public string Rzeczywista nazwa { get; ustawić; } ciąg publiczny ReleasesUrl { get; ustawić; } ciąg publiczny ResourceUrl { get; ustawić; } ciąg publiczny Uri { get; ustawić; } public List<string> Adresy URL { get; ustawić; } } public class ReleaseArtist { public string Join { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } ciąg publiczny Anv { get; ustawić; } public string Tracks { get; ustawić; } ciąg publiczny Rola { get; ustawić; } ciąg publiczny ResourceUrl { get; ustawić; } public int Id { get; ustawić; } } Edytuj: Postanowiłem, że wszystko będzie tak proste, jak to tylko możliwe: oddzielone. ![tutaj wprowadź opis obrazka](http://i.stack.imgur.com/y7Ggj.png) Jest kilka dziwnych nazw, ale zawsze będzie to mniej zagmatwane niż w poprzednich sytuacjach.


title: Potrzebujesz sugestii dotyczących projektowania aplikacji dla wielu systemów Windows

text: Zostało to wcześniej opublikowane w StackOverflow, właśnie przeniosłem się tutaj... Używam VS2008, MVVM, WPF, Prism do tworzenia aplikacji CRM z wieloma oknami. Używam `MidWinow` w moim `MainWindow`, chcę 1. Każdy `ViewModel` mógłby wysłać żądanie do `MainWindow`, aby utworzyć/dodać/zamknąć `MidChildWindow`, `ChildWindow`(z WPF Toolkit), `Window ` (typ okna). 2. `ViewModel` może pobrać `DialogResult` z okna `ChildWindow`, które wykonuje. 3. `MainWindow` kontroluje wszystkie otwarte typy okien. Oto moje obecne podejście: stworzyłem `Słownik` dla każdego typu okien i przechowuję je w klasie MainWindow. Dla 1, tj. w `CustomerInformationView`, jego `CustomerInformationViewModel` może wykonać `EditCommand` i użyć `EventAggregator`, aby poinformować MainWindow o otwarciu nowego `ChildWindow`. CustomerInformationViewModel: CustomerEditView ceView = nowy CustomerEditView (); CustomerEditViewModel ceViewModel = CustomerEditViewModel (); ceView.DataContext = ceViewModel; ChildWindow cWindow = new ChildWindow(); cWindow.Zawartość = ceView; MainWindow.EvntAggregator.GetEvent<NewWindowEvent>().Publish(nowe WindowEventArgs(ceViewModel.ViewModeGUID, cWindow )); cOkno.Pokaż(); Zauważ, że wszystkie moje `ViewModel` wygenerują `Guid` dla pomocy identyfikującej `ChildWindow` ze słownika `MainWindow`. Ponieważ będę używał tylko 1 View 1 ViewModel dla każdego okna. Dla 2. W `CustomerInformationViewModel` mogę uzyskać `DialogResult` przez zdarzenie `OnClosing` z `ChildWindow`, w `CustomerEditViewModel` mogę użyć `Guid`, aby nakazać MainWindow zamknięcie ChildWindow. Oto małe pytania i problemy: Czy warto używać tutaj Guid? Czy powinienem używać HashKey z ChildWindow? Mój `MainWindows` zawiera kolekcje referencyjne systemu Windows. Tak więc za każdym razem, gdy okno zostanie zamknięte, otrzyma powiadomienie o usunięciu z kolekcji przez zdarzenie `OnClosing`. Ale cały sam system Windows nie wie o powiązanym z nim Guid, więc kiedy go usuwam, muszę wyszukać każdą parę KeyValuePair do porównania ... Nadal czuję się źle kojarząc Guid ViewModel dla ChildWindow, miałoby to więcej sensu, gdyby ChildWindow ma swój własny identyfikator, a ViewModel się z nim kojarzy... Ale najważniejsze, czy istnieje lepsze podejście do tego projektu? Jak mogę to lepiej poprawić?