title: Czy to jest przykład wzorca czy algorytmu?

text: Czuję, że mam tutaj „coś” wielokrotnego użytku i nie jestem pewien, czy myśleć o tym jako o wzorcu, czy o algorytmie (lub nie). Charakteryzuje się nieznaną ilością pracy do wykonania zadania, ponieważ podzadania mogą napotkać różne warunki, które powodują dodanie „problemów” do globalnej kolejki. Następnie polecenie jest uruchamiane wielokrotnie w połączeniu z rundą „Naprawiania problemów”, aż albo nie zostaną żadne problemy, albo ich liczba się nie zmieni. Po prostu umieszczam tutaj wystarczająco dużo kodu, aby pokazać, o czym mówię - jest w tym trochę więcej (daj mi znać, czy powinienem więcej publikować). public void FindNewCampaigns() { var findNewCampaigns = Locator.Get<ICommand<IEnumerable<Campaign>>>("FindNewCampaigns"); var kampanie = findNewCampaigns.Execute(); var Issues = Locator.Get<ICollection<Problem>>("CommandIssues"); while (problemy.Liczba > 0) { int before = Issues.Count; FixProblemy(problemy); problemy.Wyczyść(); kampanie = znajdźNoweKampanie.Wykonaj(); int after = Issues.Count; if (before == after) { System.Console.WriteLine("Nie naprawiono żadnych problemów, kończę ({0}/{1}).", before, after); przerwanie; } } if (issues.Count == 0) { CreateCampaigns(campaigns); } } private void FixIssues(ICollection<Issues.Issue> Issues) { foreach (var problem w sprawach) { System.Console.WriteLine("Problem: " + issue.GetType().Name + " - " + issue.ToString( )); if (problem to AdvertiserDoesNotExist) { var specificIssue = (AdvertiserDoesNotExist)problem; var polecenie = Locator.Get<ICommand<string, DirectAgents.SynchService.Model.EomDatabase.Advertiser>>("CreateAdvertiser"); command.Execute(konkretnyproblem.nazwareklamodawcy); } else if (problem to AccountManagerDoesNotExist) { var specificIssue = (AccountManagerDoesNotExist)problem; var command = Locator.Get<ICommand<string, DirectAgents.SynchService.Model.EomDatabase.AccountManager>>("CreateAccountManager"); polecenie.Wykonaj(określony problem.Nazwa menedżera konta); } else if (problem to AdManagerDoesNotExist) { var specificIssue = (AdManagerDoesNotExist)problem; var command = Locator.Get<ICommand<string, DirectAgents.SynchService.Model.EomDatabase.AdManager>>("CreateAdManager"); command.Execute(konkretnyproblem.AdManagerName); } else if (problem to MediaBuyerDoesNotExist) { var specificIssue = (MediaBuyerDoesNotExist)problem; var command = Locator.Get<ICommand<string, DirectAgents.SynchService.Model.EomDatabase.MediaBuyer>>("CreateMediaBuyer"); polecenie.Wykonaj(określony problem.Nazwa nabywcy mediów); } } } Oto kod dla `FindNewCampaigns`. Dodaje problemy, gdy je znajdzie. _Problem_ ma być czymś, co musi się wydarzyć, zanim nowa kampania zostanie faktycznie utworzona w sklepie docelowym. public class FindNewCampaigns : Command<IEnumerable<Campaign>> { private IFactory<CakeEntities> cakeEntities; private IFactory<DADatabase> eomDatabase; public FindNewCampaigns(IFactory<CakeEntities> cakeEntities, IFactory<DADatabase> eomDatabase) { this.cakeEntities = cakeEntities; this.eomDatabase = eomDatabase; } public override IEnumerable<Campaign> Execute() { using (var eom = eomDatabase.Create()) using (var cake = cakeEntities.Create()) { // Pobierz kampanie EOM var kampanie = eom.Campaigns.Select(c = > c.pid).ToList(); // Pobierz oferty Cake var oferty = cake.CakeOffers.Select(c => c.Offer_Id).ToList(); // Uzyskaj oferty Cake, które nie pasują do kampanii EOM var newOffers = offers.Except(campaigns).ToList(); // Pobierz wartości domyślne int accountManagerID = DefaultAccountManagerId(eom); int adManagerID = DefaultAdManagerId(eom); int IDReklamodawcy = Domyślny IDReklamodawcy(eom); int CampaignStatusID = DefaultCampaignStatus(eom); // Utwórz nowe kampanie w pamięci var newCampaigns = (z oferty w cake.CakeOffers gdzie newOffers.Contains(offer.Offer_Id) select new { Offer = offer, Campaign = new Campaign { pid = offer.Offer_Id, Campaign_name = offer.OfferName, id_statusu_kampanii = id_statusu_kampanii, id_managera_konta = identyfikator_menedżera_konta, id_managera_ad_ = identyfikator_administratora, id_ogłoszeniodawcy = id_ogłoszeniodawcy, } }).ToList(); // Ustaw stan kampanii var CampaignStatus = eom.CampaignStatus.ToDictionary(c => c.name, c => c.id); KampaniaStatus.Add("Prywatne",Statuskampanii["Aktywny"]); KampaniaStatus.Add("Zastosuj do uruchomienia", kampaniaStatus["Aktywny"]); KampaniaStatus.Add("Nieaktywny", stan kampanii["domyślny"]); foreach (var item in newCampaigns) { string nazwa_statusu = pozycja.Oferta.Nazwa_statusu; if (campaignStatus.ContainsKey(statusName)) { item.Campaign.campaign_status_id = CampaignStatus[statusName]; } else { AddIssue(new CampaignStatusDoesNotExist(statusName)); } } // Ustaw reklamodawcę var cakeAdvertisers = cake.CakeAdvertisers.ToDictionary(c => c.Advertiser_Id); foreach (var item in newCampaigns) { int offerAdvertiserID = int.Parse(item.Offer.Advertiser_Id); var offerAdvertiser = ciasto.CakeAdvertisers.FirstOrDefault(c => c.Advertiser_Id == offerAdvertiserID); string ofertaNazwaReklamodawcy = ofertaReklamodawca.NazwaReklamodawcy; var eomAdvertiser = eom.Advertisers.FirstOrDefault(c => c.name == ofertaReklamodawcaName); if (eomAdvertiser != null) { item.Campaign.advertiser_id = eomAdvertiser.id; } else { AddIssue(new AdvertiserDoesNotExist(offerAdvertiserName)); } } // Ustaw menedżera konta foreach (var element w nowychKampaniach) { int offerAdvertiserID = int.Parse(item.Offer.Advertiser_Id); var offerAdvertiser = ciasto.CakeAdvertisers.FirstOrDefault(c => c.Advertiser_Id == offerAdvertiserID); string offerAccountManager = offerAdvertiser.AccountManagerName; if (offerAccountManager != null) { AccountManager am = eom.AccountManagers.ToList().SingleOrDefault(c => c.NameIsEquivalentTo(offerAccountManager)); if (am != null) { item.Campaign.account_manager_id = am.id; } else { AddIssue(new AccountManagerDoesNotExist(offerAccountManager)); } } else { AddProssue(nowa OfertaBrak MenedżeraKonta(pozycja.Oferta.NazwaOferty)); } } // Ustaw menedżera reklam dla foreach (element var w nowychKampaniach) { int offerAdvertiserID = int.Parse(item.Offer.Advertiser_Id); var offerAdvertiser = ciasto.CakeAdvertisers.FirstOrDefault(c => c.Advertiser_Id == offerAdvertiserID); string ofertaAdManager = ofertaReklamodawca.AdManagerName; if (offerAdManager != null) { AdManager ad = eom.AdManagers.ToList().SingleOrDefault(c => c.NameIsEquivalentTo(offerAdManager)); if (ad != null) { item.Campaign.ad_manager_id = ad.id; } else { AddIssue(new AdManagerDoesNotExist(offerAdManager)); } } else { AddProssue(nowa OfertaBrakAdministratora(item.Offer.OfferName)); } } return newCampaigns.Select(c => c.Campaign).ToList(); } }


title: Różnica między testem funkcjonalnym a testem integracyjnym

text: Jestem głęboko zdezorientowany tą różnicą. Przeczytałem tak wiele definicji i zawsze wyjaśniają one test funkcjonalny, ponieważ testowanie jest spełnione. Cóż, to tylko przeformułowanie nazwy „test funkcjonalny”. To nie wyjaśnia różnicy. Interesuje mnie prawdziwy kod, aby zademonstrować różnicę. Załóżmy, że mamy funkcję w bibliotece wykonującą haszowanie: def custom_hasher(scheme, val): # użyj wielu bibliotek haszujących... def hasher(inlist, scheme): """ Weź listę i wypisz zahaszowane wartości listy. """ output = list() for val in inlist: output.append(custom_hasher(scheme, val)) return output Teraz dla testu funkcjonalnego, zgaduję, że chcemy przetestować `['a', 'b']` jest zwracane jako coś w rodzaju `['jask34sdasdas', 'asasjdk234sjdk']` biorąc pod uwagę pewien schemat. Ale to tylko tyle, co może zrobić test integracyjny! Wiem dokładnie, jakiego typu dane wejściowe chcę (chcę dobre wykonanie, więc przekazuję listę) lub chcę, aby wywołał wyjątek `Object has no append method`, jeśli przekazuję w słowniku. Mogę to zrobić w obu. Gdzie jest różnica? Innym przykładem jest aplikacja internetowa: @logged_in # tylko zalogowany użytkownik może to zrobić @route("/invite", method=['POST']) def send_invite(request): recp_email = request.data['recp_email'] # teraz zrób kilka logiki przed i po wysłaniu e-maila. Więc w moim teście integracji na pewno zrobię to przez sieć (z uruchomionym serwerem). Wyślij prośbę na ten adres URL. To samo dla testu funkcjonalnego. Jak narysować linię? W tym przypadku mogę napisać test funkcjonalny, który sprawdza, czy wiadomość e-mail jest wysyłana, patrząc na dziennik wysyłania w jakiejś tabeli. Ale to inna funkcja niż ta, którą testuję (widok `send_invite`). Więc nie wiem, jak je rozróżnić. Oboje coś twierdzą. Proszę pomóż.


title: Jaki jest związek między piśmiennym programowaniem a siecią semantyczną?

text: Badałem (przypadkowo) semantyczne/ontologiczne podejścia do dokumentacji technicznej, kiedy natknąłem się na ten klejnot: > Literate Programming i Semantic Web to pomysły z różnych czasów, > które mają związek. Powiązany artykuł, Literate Programming in XML autorstwa Normana Walsha, omawia technologie XML, które są kluczowe dla sieci semantycznej, jednak nie widzę konceptualnego związku między piśmiennym programowaniem a dokumentacją opartą na sieci semantycznej _lub_ ontologii. Pomoc?


title: Pseudokod kolejki Brodal

text: Próbuję znaleźć więcej zasobów dotyczących stosu Brodal. Wszystko, co znalazłem, to implementacja haskella stosu Brodal-Okasaki, ale _myślę_, że są to sterty skośne, czy to prawda? Co więcej, jestem analfabetą w Haskell, więc to niewiele pomaga. Czy ktoś ma (lub wie o) implementację kolejki Brodal w pseudokodzie, C, C++, Pythonie? Proszę również poprawić, jeśli moje powyższe założenia są błędne.


title: Czy mój pierwszy pracodawca oczekuje zbyt wiele?

text: To moja pierwsza praca jako programista. Pracuję w następujących technologiach: * ASP.NET * C# * HTML * CSS * Javascript * JQuery Pracuję w firmie tworzącej oprogramowanie dla małych firm bankowych. Obecnie mają swoje oprogramowanie działające w 100 firmach. Ich oprogramowanie zostało opracowane w Visual Fox Pro. Zostałem zatrudniony do opracowania wersji online tego oprogramowania. Jestem jedynym programistą. Mój szef jest innym deweloperem, jedynym innym deweloperem w firmie. Dlatego mój pracodawca ma w sumie dwóch programistów. Mój szef nie ma żadnego doświadczenia z programowaniem .NET. Pracuję nad tym projektem od 8 miesięcy. Postęp jest, ale jest bardzo powolny. Robię co w mojej mocy, aby robić to, o co prosi mój szef. Ale projekt wydaje mi się zbyt ambitny. Firma nie ma żadnych planów dotyczących projektu. Po prostu proszą mnie o opracowanie tego, co zapewnia ich starsze oprogramowanie. Mam więc do czynienia z frontendem, backendem, recenzowaniem kodu, architekturą projektu i nie tylko. Postanowiłem dać z siebie wszystko. Bardzo się staram. Ale projekt czasami wydaje się po prostu przytłaczający. **Pytanie:** Czy to normalne, że początkujący programista przebywa w tym miejscu? * Czy moi pracodawcy oczekują zbyt wiele od nowego programisty? * Czy jako programista brakuje mi umiejętności, aby sobie z tym poradzić? Zawsze odczuwam potrzebę pracy w przynajmniej małym zespole, jeśli nie w dużym. Po prostu nie jestem w stanie ocenić swojego stanu. Otrzymuję też bardzo niską pensję. Pracuję też w sobotę. Proszę o pomoc w wyjaśnieniu mojego osądu. Wszelkie sugestie są mile widziane.


title: Agregacja a kompozycja

text: Rozumiem, czym jest kompozycja w OOP, ale nie jestem w stanie jasno określić, czym jest agregacja. Czy ktoś może wyjaśnić?


title: Jaka jest branżowa definicja interpretera (w przeciwieństwie do kompilatora)?

text: Na moich kursach projektowania kompilatorów poznałem i pracowałem z jasną akademicką definicją interpretera i kompilatora, gdzie interpreter jest > programem Pi z języka M zdolnym do pobrania programu i z języka > Ja i danych wejściowych oraz wykonywanie i z podanymi danymi wejściowymi i poprawną > semantyką dla I na maszynie zdolnej do uruchamiania programów z języka M i kompilatorem będącym > programem Pc, który po podaniu poprawnego programu i z języka I jako > danych wejściowych daje semantycznie równoważny program w języku O Ta definicja jasno określiłaby zwykłe wykonanie kodu bajtowego Javy przez JVM w domenie interpretacji, bez względu na to, jak dużo zostało wykonanej kompilacji JIT. (Oczywiście Java jest również kompilowana wcześniej, od kodu Java do kodu bajtowego Java.) W dyskusjach na tej stronie spotkałem się z opiniami, które wyraźnie i stanowczo stwierdzają coś przeciwnego, tj. że rzeczy do wykonywania kodu bajtowego Java są kompilatorami. Ponieważ mam zamiar przeskoczyć od naukowców do przemysłu, jestem trochę zdezorientowany: czy powyższa definicja tłumaczy ustnych jest błędna z punktu widzenia ludzi z branży w ogóle? A może jest to po prostu fałszywe dla ludzi Javy? Czy pogląd na Javę jako w pełni skompilowany język jest poglądem alternatywnym, ale mniejszościowym? Czy tylko kilku wariatów? (PS: Proszę nie przenosić tego do csteorii. Celowo zadałem to pytanie, ponieważ naprawdę chciałbym poznać punkt widzenia profesjonalnego przemysłu, a nie społeczności akademickiej.)


title: Jaki jest preferowany sposób ochrony własności kodu (np. prawa autorskie, licencje itp.)

text: Opublikowałem trochę kodu open source na soureforge i ktoś skontaktował się ze mną, twierdząc, że zamierza użyć moich algorytmów w produkcie komercyjnym. Nie chcę, żeby tak się stało, co mam zrobić? Według nas witryna copyright.gov: „Twoja praca jest chroniona prawem autorskim w momencie, gdy jest stworzona i utrwalona w namacalnej formie, która jest dostrzegalna albo bezpośrednio, albo za pomocą maszyny lub urządzenia”. Co wydaje się zapewniać pewną ochronę prawną, nie robiąc nic. Szukałem od nich oficjalnego prawa autorskiego i jest to więcej, niż chciałbym wydać (135 USD). Czy to jest to, czego potrzebuję do swojej pracy? A może licencje są tańszą i bezpieczniejszą/legalną alternatywą? Albo coś innego? Czy w ogóle nic?


title: Zostałeś zatrudniony, aby naprawić mały błąd w witrynie o wysokim poziomie bezpieczeństwa. Patrząc na kod, jest wypełniony lukami w zabezpieczeniach. Co robisz?

text: Zostałem zatrudniony przez kogoś do wykonania drobnej pracy na stronie. To witryna dla dużej firmy. Zawiera bardzo wrażliwe dane, dlatego bezpieczeństwo jest bardzo ważne. Po przeanalizowaniu kodu zauważyłem, że jest on wypełniony lukami w zabezpieczeniach - czytanie, mnóstwo plików PHP wrzucających dane get/post użytkownika bezpośrednio do żądań mysql i poleceń systemowych. Problem w tym, że osoba, która wykonała dla niego stronę, jest programistą z rodziną i dziećmi, które są zależne od tej pracy. Nie mogę po prostu powiedzieć: „Twoja strona to park rozrywki dla dzieci ze skryptami. Pozwól, że przerobię ją dla Ciebie, a wszystko będzie dobrze”. Co byś zrobił w tej sytuacji? ## Aktualizacja: Zastosowałem się tutaj do dobrych rad i grzecznie poinformowałem programistę, że znalazłem kilka możliwych luk bezpieczeństwa na stronie. Wskazałem na tę linię i powiedziałem, że może być tam podatność na ataki typu SQL injection i zapytałem, czy wie o tym. Odpowiedział: _"Jasne, ale myślę, że aby ją wykorzystać, atakujący powinien mieć informacje o strukturze bazy danych; muszę lepiej zrozumieć"_. ## Aktualizacja 2: Powiedziałem, że nie zawsze tak jest i zasugerowałem, aby skorzystał z tego linku do pytania Stack Overflow, aby odpowiednio sobie z tym poradzić: Jak zapobiec wstrzykiwaniu SQL w PHP? Powiedział, że go przestudiuje i podziękował, że powiedziałem mu wcześniej. Myślę, że moja część jest skończona, dzięki chłopaki.


title: Przetarg a wymagania a projekt rozwiązania

text: Tradycyjnie, który z powyższych dokumentów jest uważany za najważniejszy, jeśli chodzi o akceptację systemu? Ostatnio prowadziłem taką rozmowę: Argumentowano, że wstępne wymagania/dokumentację przetargową należy wykorzystać do ustalenia akceptacji systemu. Mówiono, że projekt rozwiązania służy jedynie do opisania sposobu, w jaki system rozwiąże problem, a nie problemu, który rozwiąże. Ponadto argumentowano, że jeśli wymagania zostaną pominięte podczas projektowania rozwiązania, do wymagań należy się odwołać podczas akceptacji systemu _i_, że jeśli pominięto jakiekolwiek wymagania, należy odwołać się do oryginalnej oferty. Z drugiej strony sugerowałem, że – chociaż wymagania mogą opierać się na pierwotnej ofercie – zastępują ją po uzgodnieniu z interesariuszami. Co więcej, podczas projektowania rozwiązania przeprowadzana jest analiza w celu uwzględnienia i udoskonalenia tych początkowych wymagań, przekładając je na system zdolny do spełnienia rzeczywistych wymagań. Po zatwierdzeniu przez odpowiednich użytkowników, ten projekt rozwiązania powinien bezwzględnie reprezentować wymagania (ze względu na to, że jest na nich zaprojektowany), ale w rzeczywistości zastępuje je jako podstawę akceptacji systemu. Czy jeden z powyższych argumentów jest bardziej słuszny niż drugi? _EDIT: Przepraszamy za niejednoznaczne terminy. W tej sytuacji przetarg to dokument, który klient zabrał na rynek podczas zakupu dostawcy - zawiera on szczegóły wszystkich funkcji wysokiego poziomu, których szuka. Projekt rozwiązania to nie dokument techniczny, to specyfikacja funkcjonalna._


title: Doprecyzowanie wymagań między dwoma poziomami specyfikacji

text: Obecnie pracuję nad zdefiniowaniem architektury dokumentacji systemu, od potrzeb klientów po wymagania programowe/sprzętowe. Mam duży problem z poziomem dopracowania wymagań. Klasyczna architektura to : PTS --> SSS --> SSDD --> SRS/HRS z PTS : Specyfikacja techniczna Purshaser SSS : Specyfikacja systemu dostawcy SSDD : Opis projektu segmentu systemu SRS / HRS : Specyfikacja wymagań oprogramowania / sprzętu. Wymagania z PTS są przerabiane w SSS, ten dokument tylko wyraża potrzeby (na tym poziomie nie są zdefiniowane żadne wymagania projektowe). Następnie projekt systemu jest opisany w SSDD : przydzielamy wymagania z SSS do funkcji z projektu, a funkcje są następnie przydzielane do komponentów (oprogramowania lub sprzętu) (nadal jesteśmy na poziomie SSDD). Na koniec dla każdego komponentu piszemy jeden SRS lub jeden HRS. Wymagania w SRS lub HRS są doprecyzowaniem wymagań z SSS (a między tymi dwoma poziomami tworzy się macierz identyfikowalności). Mój problem jest następujący: Nasz system jest złożony, a niektóre wymagania w SSS muszą zostać udoskonalone dwukrotnie, aby były na odpowiednim poziomie w SRS (oznacza to, że ludzie zajmujący się oprogramowaniem mogą zrozumieć wymagania dotyczące ich kodowania) . Ale dzięki tej architekturze dokumentów mogę udoskonalić tylko raz wymagania z SSS. Drugi problem polega na tym, że tylko część wymagań z SSS wymaga dwukrotnego doprecyzowania. Druga część wymaga tylko jednego udoskonalenia. Na poniższym obrazku zielone pola to wymagania na odpowiednim poziomie dla SRS lub HRS. A fioletowe pola to wymagania pośrednie, których nie można uwzględnić w SSS, ponieważ są to wymagania projektowe. Gdzie mogę umieścić te fioletowe wymagania? Czy jest ktoś, kto już napotkał ten problem? Czy powinienem napisać dwa dokumenty na poziomie SRS? Czy powinienem uwzględnić wymagania pośrednie w SSDD? Czy powinienem uwzględnić dwa poziomy doprecyzowania (fioletowy i zielony) w tym samym dokumencie SRS (nie jestem pewien, czy jest to możliwe, ponieważ SRS dotyczy tylko jednego komponentu) ??? Dziękujemy za pomoc i doświadczenie ;-) ![Doprecyzowanie wymagań](http://i.stack.imgur.com/3xHyM.png)


title: Dlaczego adnotacje zostały wprowadzone w Spring i Hibernate?

text: Chciałbym wiedzieć, dlaczego adnotacje zostały wprowadzone w Spring i Hibernate? W przypadku wcześniejszych wersji obu frameworków autorzy książek mówili, że jeśli zachowamy konfigurację w plikach xml, to będzie ona łatwiejsza w utrzymaniu (ze względu na rozdzielenie) i wystarczy zmienić plik xml, aby przekonfigurować aplikację. Jeśli korzystamy z adnotacji w naszym projekcie i w przyszłości chcemy przekonfigurować aplikację, to ponownie musimy skompilować i zbudować projekt. Dlaczego więc te adnotacje zostały wprowadzone w tych frameworkach? Z mojego punktu widzenia adnotacje uzależniają aplikacje od określonego frameworka. Czy to nie prawda?


title: Ile powinienem się martwić o modelowanie/analizowanie aplikacji internetowej?

text: Zajmuję się tworzeniem nowoczesnej aplikacji webowej - skalowalnej, solidnej i szybkiej. Muszę go rozwijać tak szybko, jak mogę. Ile powinienem się martwić o fazę analizy lub pisanie dla niej diagramów UML lub diagramów ER? A jaki powinien być przepływ na tym? Od czego powinienem zacząć rysować?


title: Czy powinienem zawracać sobie głowę pisaniem testów jednostkowych dla komponentów UI/UX?

text: Więc buduję aplikację za pomocą Angulara i zacząłem zajmować się testowaniem interfejsu użytkownika za pomocą DalekJS (http://dalekjs.com). Pisząc te testy myślałem sobie, czy powinienem w ogóle zawracać sobie głowę pisaniem testów jednostkowych, które są komponentami UI/UX. Teraz moje usługi kątowe generalnie nie mają nic wspólnego z DOMem lub bezpośrednim renderowaniem rzeczy na stronie, więc te, które testuję jednostkowo i ma to sens, jednak dyrektywy kątowe są komponentami, które renderują rzeczy bezpośrednio na stronę, a pisanie testów jednostkowych wydaje się być 1 Nie jest to skuteczny sposób testowania komponentów UI/UX i 2. Nakładałby się na testy UI/UX. Jeśli chodzi o punkt #1, testy jednostkowe (przynajmniej te, które widziałem) tak naprawdę nie zapisują niczego do przeglądarki i nie renderują. W przypadku rzeczy, które wymagają DOM, zwykle mockujesz DOM w zmiennej i używasz tego do testowania wszystkiego, co chcesz przetestować. Jeśli masz błąd z testem, nie możesz go załadować w przeglądarce i bawić się nim tak, jak w przypadku testów UI/UX (które z mojego doświadczenia działają na kodzie, który jest prawdziwą aplikacją, która renderuje i tak dalej) . W punkcie 2 jedna z moich dyrektyw ma właściwość o nazwie contentVisible. Teraz mogę napisać test jednostkowy, który upewnia się, że właściwość jest poprawną wartością w określonych punktach, ale tak naprawdę nie testuje tego, co naprawdę chcę przetestować, ponieważ nawet jeśli contentVisible jest ustawione na false, zawartość nadal może być renderowana do ekran, który odbierze test UI/UX. Czy nadal warto napisać test jednostkowy dla komponentów UI/UX, w którym testy interfejsu użytkownika byłyby w stanie wychwycić wszystko, co test jednostkowy, a także wykonać lepszą pracę, ponieważ może przetestować to, co jest faktycznie renderowane? **Wyjątek** Jedyny przypadek wyjątku, w którym potrzebuję testu jednostkowego, dotyczy pewnych żądań ajax. Na przykład upewnienie się, że żądanie ajax nie jest wykonane, że żądanie ajax, które nie tworzy, a zmiany w interfejsie użytkownika, to rzeczy, które można przetestować tylko za pomocą testów jednostkowych.


title: Dystrybucja oprogramowania kryptograficznego na GitHub

text: Zajmuję się tworzeniem programu kryptograficznego i planuję jego dystrybucję za pomocą GitHub, Ale są pewne przepisy dotyczące eksportu oprogramowania kryptograficznego, jak uchronić się przed odpowiedzialnością, jeśli ktoś zabierze go poza granice hrabstwa? jakie zastrzeżenie powinienem dołączyć do mojego oprogramowania, gdy je rozpowszechniam?


title: Jaki byłby dobry termin „parasol” dla HTML, CSS, SQL, JavaScript i tym podobnych?

text: Wydaje się, że istnieje dość wyraźny konsensus w kwestii tego, czy HTML i CSS są językami programowania. Oni nie są. HTML to język znaczników, a CSS to język arkusza stylów. Prawdopodobnie mógłbyś również argumentować, że SQL również nie jest językiem programowania, a JavaScript jest, jak sama nazwa wskazuje, bardziej językiem skryptowym niż językiem programowania. Jednak, jakie jest dla nich dobre określenie „parasolowe”? Czy mogę po prostu powiedzieć, że są to „technologie”?


title: Jak rozłożyć warstwę danych w nopCommerce i zastąpić MS SQL RavenDB?

text: Jestem nowy w nopCommerce i ogólnie w e-commerce, ale jestem zaangażowany w projekt e-commerce. Teraz z moich wcześniejszych doświadczeń z RavenDB (które w większości były absolutnie przyjemne) i w oparciu o potrzeby firmy (szybkie zmiany z niezręcznymi przepływami biznesowymi) wydawało się, że jest atrakcyjną opcją, aby RavenDB obsługiwał wszelkiego rodzaju rzeczy związane z bazą danych. Nie rozumiem w pełni projektowania i architektury nopCommerce, więc nie doszedłem do wniosku, jak rozkładać części danych, ponieważ wydaje się, że warstwa usług w rzeczywistości nie abstrahuje od koncepcji warstwy danych; jak wprowadzenie modelu roboczego EF do innych warstw. Znalazłem inny projekt, który wykorzystywał NuDB jako bazę danych jako widelec nopCommerce. Ale to nie pomogło, ponieważ NuDB nadal ma wrażenie RDBMS i nie różni się tak bardzo jak RavenDB. Teraz najpierw, jak mogę dowiedzieć się o wewnętrznych elementach nopCommerce (poza badaniem kodu)? To przepływy pracy? To konwencje? Po drugie, czy ktoś wcześniej próbował czegoś podobnego z bazą danych NoSQL (np. MongoDB lub RavenDB)? Czy można to osiągnąć w ciągu 1 (~2) miesiąca? Z góry dziękuję;


title: Co to jest wzorzec „Bezpłatna Monada + Tłumacz”?

text: Widziałem ludzi rozmawiających o _Free Monad with Interpreter_ , szczególnie w kontekście dostępu do danych. Co to za wzór? Kiedy mogę chcieć z niego skorzystać? Jak to działa i jak bym go zaimplementował? Rozumiem (z postów takich jak ten), że chodzi o oddzielenie modelu od dostępu do danych. Czym różni się od znanego wzorca Repozytorium? Wydaje się, że mają tę samą motywację.


title: Wzorzec wzajemnego obserwatora w Javie

text: Chcę poprawić swoje umiejętności wielowątkowości i projektowania wzorców. W związku z tym projektuję serwer Instant Messaging. Najpierw piszę Serwer. Mój plan do tej pory to mieć klasy Client "Proxy" do obsługi połączenia z gniazdem dla każdego klienta. Chcę mieć klasę „Exchange”, która pobiera wiadomość od klienta proxy i przekazuje ją odbiorcy proxy klienta. Myślałem o tym, aby zarówno Klient, jak i Giełda obserwowali się nawzajem w tej sytuacji za pomocą Wzorca Obserwatora. Wzajemni obserwatorzy, przy czym Klient Proxy i Giełda są Obserwatorem i Podmiotem. Zastanawiając się dalej, czy zamiast tego powinienem mieć tylko Giełdę jako Obserwatora, a Proxy Klienta jako wiele Podmiotów dla Wymiany? \-- Dalsze przemyślenia Wygląda na to, że ludziom podoba się pomysł wzajemnej obserwacji między Proxy i Exchange. Planowałem, aby każdy klient Proxy działał w osobnym wątku. Czy Giełda stanie się wąskim gardłem, jeśli będzie tylko jeden Obiekt? Wydaje mi się, że mógłbym potrzebować puli obiektów wymiany, ale nie jestem pewien, w jaki sposób miałoby to wtedy mapować do wzorca Observer, nawet gdybym miał jakiegoś brokera przed moją pulą pracowników.


title: Alokacja pamięci klas, które nie mają żadnych globalnych danych i blokad

text: static void Main(string[] args) { var c2 = new Class2(); var c3 = nowa klasa3(); var c1 = nowa klasa1(c2,c3); c1.Metoda1(); } klasa Klasa1 { tylko do odczytu Klasa2 _klasa2; tylko do odczytu Klasa3 _klasa3; public Class1(Class2 class2, Class3 class3) { _class2 = class2; _klasa3 = klasa3; } public void Metoda1() { _class2.PerformM1(); _class3.PerformM2(); } } class Class2 { public void PerformM1() { //wykonaj jakąś operację } } class Class3 { public void PerformM2() { //wykonaj jakąś operację } } **Pytanie na podstawie powyższego kodu:** 1. Ile pamięci obiekt Class1 ma, gdy jest tworzony? 2. Czy jakakolwiek pamięć zwiększa się lub zmniejsza, gdy wykonuję c1.Method1(); pamiętając, że żadna z klas nie ma żadnych pól globalnych, które mogą zająć jakąkolwiek przestrzeń. * * * **Edycja** Rozszerzając o jeszcze jedno pytanie: 1. Jeśli tworzenie nowych obiektów Class1 i wywoływanie metod obiektu c1 nie wymaga dużego zużycia pamięci, to czy słuszne jest stwierdzenie, że nie potrzebuję blokady powyższy przykładowy kod. Mogę po prostu utworzyć liczbę n obiektów i przypisać pojedynczy obiekt do pojedynczego zadania (lub wątku)?


title: Czy wybór ASP.NET WebForms do projektowania aplikacji internetowych jest teraz złą praktyką?

text: Nie mam czasu na kodowanie w MVC i jQuery, po prostu chcę, żeby ta praca została "wykonana" i szczerze, po 3 latach programowania MVC lubię WebForms. Tak więc moje pytanie brzmi, technicznie, czy wybór formularzy WebForm ASP.NET przez MVC jest złą praktyką?


title: Licencjonowanie bibliotek zewnętrznych

text: Problem, który mam, może niektórym z Was wydawać się trywialny, ale ogólnie mam pytanie dotyczące wszystkich tych "wolnych" licencji oprogramowania (głównie dla bibliotek PHP). Załóżmy, że chcę stworzyć projekt dla użytkownika końcowego i sprzedać mu go oraz w miarę możliwości zaszyfrować swój kod źródłowy. Na przykład dla licencji Zend Framework jest to New BSD License, a dla Laravel jest to licencja MIT. Na frameworku Zend jest taka krótka informacja: > Redystrybucje kodu źródłowego muszą zawierać powyższą informację o prawach autorskich, > listę warunków i następujące zastrzeżenie. > > Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich, > tę listę warunków i następujące zastrzeżenie w dokumentacji > i/lub innych materiałach dostarczonych z dystrybucją. ale to nic dla mnie nie znaczy. Co to znaczy pierwszy? Czy powinienem po prostu pobrać Zend Framework i umieścić go w katalogu, a kiedy nic z nim nie zrobię, mogę o tym zapomnieć, czy może powinienem powiedzieć mojemu klientowi, że użyłem frameworka i moje oprogramowanie może nie działać, ponieważ > TO OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZE PRAW AUTORSKICH I WSPÓŁCZYNNICY „TAK JAK JEST” > ORAZ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE... Naprawdę nie rozumiem, jak działają te licencje i jakie są różnice między nimi. Czy mógłbyś mi udzielić pomocy lub zasobów zewnętrznych, w których ten problem zostanie wyjaśniony w prosty sposób?


title: Struktury danych dla bioinformatyki

text: jakie są struktury danych, które powinien znać ktoś zajmujący się bioinformatyką? Myślę, że każdy powinien wiedzieć o listach, skrótach, zrównoważonych drzewach itp., ale spodziewam się, że istnieją struktury danych specyficzne dla domeny. Czy jest jakaś książka poświęcona temu tematowi? Dzięki, Lucianie


title: Zdobądź staż programistyczny, jeśli nie znasz się na programowaniu? Uczysz się zamiast tego?

text: Czy możliwe jest odbycie stażu do nauki programowania, jeśli powiedziałeś, że miałeś tylko jedne zajęcia z Visual Basic? Na przykład chcę nauczyć się dowolnego języka programowania, ale mam tylko 1 zajęcia z Visual Basic i SQL.... Czy mogę być w firmie, aby uczyć się w pracy?


title: Format do uzyskiwania jasnych wskazówek dotyczących parametrów danych od użytkowników

text: W ramach mojej pracy regularnie otrzymuję ad-hoc żądania od użytkowników dotyczące migawek naszej bardzo dużej bazy danych. Jednak nie ma ustalonego formatu ich dostarczania i zwykle przychodzą one w formie wypunktowanego tekstu, na przykład: * Wszyscy klienci * Wszyscy aktywni w ciągu ostatnich 0-24 miesięcy (w tym klienci, z którymi nie można się skontaktować) * Wszyscy zaangażowani w to na przykład „zatwierdzony” to flaga, a „aktywny/niemożliwy do kontaktu” jest zarówno stanem tekstowym, jak i stanem dynamicznym opartym na ostatnim zakupie. Prośbę tę można więc interpretować jako: * Wszyscy klienci, którzy dokonali zakupu w ciągu ostatnich 24 miesięcy, niezależnie od statusu * Wszyscy klienci, którzy mają status „aktywny” lub „bez możliwości kontaktu”, niezależnie od ostatniego zakupu. * Jeden z powyższych, a następnie „albo” z zatwierdzoną flagą lub „i” z zatwierdzoną flagą. Nie będę się rozprawiał - widzisz problem. A warto dodać, że możliwy zakres parametrów jest dość duży. Zwykle muszę porozmawiać z wnioskodawcą i przejść przez rygor wyjaśniania problemu i próby sprecyzowania wymagań. Ta sytuacja nie może być tak rzadka. Czy istnieje skuteczniejszy sposób na uchwycenie tych szczegółów za pomocą siatki w stylu pola wyboru lub innej pomocy wizualnej? Czy ktoś ma jakieś przykłady doświadczeń przydatnych rozwiązań?


title: Czy „wzorzec eksponujący (hack)” jest nowo zidentyfikowanym wzorcem, czy też ma inną nazwę?

text: **EDYTOWANO W CELU WYJAŚNIENIA** W przeszłości widziałem całą gamę postanowień i krówek. Niektóre naprawdę się wyróżniają. Jedna szczególna rezolucja, którą początkowo uważałem za krówkę, prawdopodobnie zasługuje na własną kategorię. Można to uznać za hack lub wzorzec, ponieważ wzorzec projektowy to tylko fragment kodu wielokrotnego użytku. Tak więc nadal jest zgodny z definicją: http://en.wikipedia.org/wiki/Software_design_pattern Prawdopodobnie ma już nazwę, ale nie widziałem jej w literaturze. Zastanawiałem się, czy ktoś zna inną nazwę dla tego, co nazwałem „wzorzec eksponujący (hack)”. Przykład tego podaję poniżej. Ten kod służy do ujawniania danych, które nie są dostępne w źródle danych. Zamiast tego wyniki nie są generowane, dopóki nie zostanie wywołana metoda powiązania danych. Niestety po wykonaniu wyniki te nie są przechowywane w żadnym miejscu w źródle danych. Wynika to z niedopatrzenia (lub złego projektu) w interfejsie API innej firmy. Tak więc wyniki są przekazywane przez repeater do przechowywania lokalnie, przed zwróceniem ich jako zapełnionej PageDataCollection: public static PageDataCollection Search(this SearchDataSource searchDataSource) { PageDataCollection results = new PageDataCollection(); //Jest to fikcyjny repeater, którego jedynym celem jest zapewnienie sposobu //iterowania wyników wyszukiwania Repeater dummy = new Repeater(); dummy.ItemDataBound += delegate(Object sender, RepeaterItemEventArgs e) { if (e != null && e.Item != null && e.Item.DataItem != null) { PageData pageData = e.Item.DataItem as PageData; if (pageData != null) { results.Add(pageData); } } }; dummy.DataSource = searchDataSource; dummy.DataBind(); zwracać wyniki; }


title: Taksonomia / Klasyfikacja obiektów świata rzeczywistego. Sugestie dotyczące rozwoju

text: Muszę opracować system taksonomii/klasyfikacji w oparciu o algorytmy klasyfikacji i chciałbym mieć kilka sugestii. Celem jest pomoc użytkownikowi programu w kategoryzacji obiektu (może to być roślina, moneta, zwierzę,...) i nauczenie, czego szukać na każdym kroku. Program prawdopodobnie będzie napisany w PHP. Algorytm powinien również być w stanie opierać się na modułach (wiele typów klasyfikacji może istnieć na określonym poziomie, a typy klasyfikacji powinny być wymienne). Przykład: ![Przykład klasyfikacji](http://i.stack.imgur.com/N8rrC.jpg) Czy program/algo powinien być zorientowany obiektowo? czy może to być konieczne (jeśli/inaczej, przypadek)?


title: Rozwiązanie dla wielu wersji jednego oprogramowania

text: Przepraszam, jeśli tytuł jest trochę trudny do zdobycia. Nigdy nie zbudowałem całego dużego oprogramowania, tylko kilka małych aplikacji w wolnym czasie, byłem bardziej zaznajomiony z rzeczami „zrób to, co mój szef powiedział mi”. A nasze podejście jest trochę amatorskie, również przestarzałe (Foxpro 8.0 i MS SQL 2000). Teraz zacząłem pracować w innej firmie i zostałem przydzielony do budowy oprogramowania w C#.Net, ale problem polega na tym, że nie jestem pewien architektury programu. Mój problem polega na tym, że budujemy oprogramowanie. Ale mamy różnych klientów i na przykład mamy funkcję CalculateCostOfProduct, która może być inna dla każdego klienta. Mówi, że dla strony A funkcja to: function CalculateCostOfProduct() return 5; dla strony B : funkcja CalculateCostOfProduct() return 10; ... Powinny też istnieć dodatkowe moduły na specjalne potrzeby ! Będą więc dostosowane wersje z oryginalnego standardu. Jak mam tym zarządzać? Ale nie możemy zbudować różnych plików exe dla różnych klientów! Więc proszę o kilka pomysłów lub rozwiązań, które mogą rozwiązać ten problem.


title: MVC: view/sidebar.php może załadować model?

text: Mam trasę, która aktywuje kontroler, który zwraca mi stronę przez widok. Nazwijmy to **stroną wzorcową**. > trasa -> kontroler -> widok [strona wzorcowa] Strona wzorcowa jest podzielona na nagłówek, pasek boczny, treść i stopkę. A ponieważ pasek boczny można załadować na inne strony, a nie tylko stronę wzorcową, ma on własny plik widoku. Jednak pasek boczny powinien otrzymywać dane od użytkownika, które zostałyby uzyskane za pośrednictwem Modelu. I teoretycznie model może być wywołany tylko przez kontroler, który wywołuje widok, jednak ten widok jest stroną wzorcową, a nie paskiem bocznym. > [...] -> view [master page] -> view [sidebar] Myślałem więc, że możliwości są następujące, a pomysł polega na tym, aby wiedzieć, czy jest to dobre, czy złe, a może jest to inny sposób, w jaki mógłbym nie wyobrażaj sobie. 1. **Kontroler załaduje dane z Modelu i zastosuje pasek boczny, który z kolei zostanie zastosowany do strony wzorcowej.** Tu problem polega na tym, że w „głębszym” przypadku byłoby to niezwykle pracochłonne i trudne rozumieć. 2. **Kontroler uruchamia Model, ale wysyła do strony wzorcowej, która odpowiadałaby za wczytanie paska bocznego Widoku i przekazanie do niego informacji o Modelu.** W tym przypadku praca polegałaby na przekazywaniu informacji pomiędzy warstwy, o ile było to konieczne do zebrania informacji. 3. **Kontroler załaduje tylko stronę wzorcową View, która załaduje pasek boczny, który będzie odpowiedzialny za wykonanie Modelu (wewnątrz Widoku).** Problem polega na tym, że Widok teoretycznie nie powinien uruchamiać Modelu, po prostu wydrukować Twoje dane już przetworzone w Administratorze. Jaki byłby najwłaściwszy sposób, aby ten proces przebiegał poprawnie?


title: Oddzielne serwery i lokalna maszyna do kompilacji, śledzenia problemów itp. w projekcie solo

text: Czy w przypadku projektów solo przechowujesz narzędzia do kompilacji/zarządzania na lokalnym komputerze, czy na osobnym serwerze? Jeśli nie ma gwarancji, że serwer będzie bezpieczniejszy lub bardziej niezawodny niż moja własna maszyna, staram się zrozumieć, ale może brakuje niektórych rzeczy. Zauważ, że nie dyskutuję o wartości ciągłej integracji lub posiadania środowiska pomostowego itp. Tylko pytanie, czy istnieje na oddzielnym sprzęcie.


title: Projekt klasy do wywoływania „tej samej metody” na różnych klasach z jednego miejsca

text: Pozwolę sobie przedstawić moją sytuację: mam aplikację Java EE i w jednym pakiecie chcę mieć klasy, które będą przede wszystkim pełnić rolę cache dla niektórych danych z bazy danych, np.: * klasa, która będzie przechowywać wszystkie artykuły na naszą stronę * klasa, która będzie przechowuj wszystkie kategorie * itd. Każda klasa powinna mieć jakąś metodę `update()`, która uaktualni dane dla tej klasy z bazy danych, a także inne metody manipulacji danymi specyficzne dla tego typu danych. Teraz chciałbym wywołać metodę `update()` dla wszystkich instancji klasy (będzie dokładnie jedna instancja klasy dla każdej klasy) z jednego miejsca. Jaki jest najlepszy projekt?


title: Czy pracodawcy zatrudniający do pracy w oprogramowaniu dbają o zajęcia, które uczęszczałeś na studia magisterskie z informatyki?

text: Jestem rozdarty między dwoma zajęciami na następny semestr (Projektowanie Oprogramowania i Zaawansowana Grafika Komputerowa). Bardziej podobałaby mi się zaawansowana grafika komputerowa, ale uważam, że zajęcia z projektowania oprogramowania pomogłyby mi w podejściu do wszystkiego, co kiedykolwiek zbudowałem przez resztę mojej kariery. Czuję, że mógłbym po prostu kupić książkę (właściwie mam już obie książki) klasy projektowania oprogramowania i przejść przez nią, gdybym chciał. Ale pomyśl, że trochę trudniej byłoby samodzielnie wybrać zajęcia z zaawansowanej grafiki komputerowej. Czy pracodawcy przyglądają się klasom absolwentów, które uczęszczałeś, aby zdecydować, czy będziesz pasował, czy nie? Myślę, że, co ważniejsze, chciałbym wiedzieć, czy gdybym chciał pracować dla wysokiej klasy firmy programistycznej, takiej jak Apple lub Google, czy taka firma byłaby pod większym wrażeniem kogoś, kto uczęszczał na zajęcia z inżynierii oprogramowania lub ostre zajęcia CS?


title: Najlepsze miejsce do pisania zapytań SQL

text: Pracowałem nad tym projektem dla mojej firmy. Obecnie osadzam moje instrukcje SQL w samym programie, gdy są potrzebne. Mam dwie oddzielne klasy - 1. Klasa QueryBuilder (zawiera wszystkie zapytania) 2. Klasa DbConnection (Wykonuje zapytania względem bazy danych, dba o łączność itp.) To, co to robi, jest zawsze, gdy potrzebuję dokonać najmniejszej korekty w zapytanie, muszę przebudować całą aplikację. Mam nadzieję, że istnieją lepsze sposoby radzenia sobie z tym. Gdzieś mogę przechowywać te zapytania, pobierać je, przekazywać parametry **jako parametry poleceń** , a następnie je wykonywać i jeśli muszę, zmieniać je bez konieczności przebudowy aplikacji. W mojej głowie jest kilka pomysłów. 1. Pliki zasobów. 2. Oddzielne pliki DLL/klasy — Wadą jest to, że będę musiał przebudować tę klasę, jeśli dokonam zmiany w tym kodzie. Ale separacja ma swoją zaletę. 3. Pliki tekstowe, mogą stać się niemożliwe do zarządzania, gdy liczba zapytań wzrośnie. Chciałbym wiedzieć, czy istnieje lepszy sposób na poradzenie sobie z tym problemem i czy inni mają jakiś sposób na obejście tego.


title: ViewController w programowaniu

text: ViewController to termin określający klasy, które obsługują widoki we frameworku. Jest to szczególnie używane w frameworkach MVC. Przechodzę przez różne projekty, pisane przez różnych programistów, którzy wdrażają MVC na różne sposoby. Zwłaszcza się mylę, o relacji między MainView (widok nadrzędny) i niektóre CustomView (widżet itp.) w ramach. ** Osobiście przekazuję referencję MainView do ViewController w celu utworzenia instancji. Wszystkie widoki podrzędne ViewController są dodawane do tego odwołania MainView. Dodatkowo, sam ViewController jest dodawany jako dziecko MainView.** Tak : ![relacja widoku głównego i kontrolera widoku](http://i.stack.imgur.com/VkkVz.jpg) Chcesz wiedzieć, czy to jest właściwy sposób na wzajemne relacje?


title: Gdzie umieścić kod R dla przepływu pracy R+Sweave+LaTeX

text: Ostatni tydzień spędziłem na nauce 3 nowych narzędzi: R, Sweave i LaTeX. Jedno pytanie, które przyszło mi do głowy podczas pracy nad moim pierwszym projektem: Gdzie umieścić większość kodu R? Samouczki, które przeczytałem online, umieściły większość kodu R w pliku LaTeX .Rnw. Jednak uważam, że wiele obliczeń języka R w pliku LaTeX rozprasza. To, co uważam za niezwykle pomocne (oczywiście), to wywołanie kodu R w pliku LaTeX i osadzenie wyniku. Tak więc przepływ pracy, którego używam, polega na umieszczeniu 99% mojego kodu R w moim pliku .R. Najpierw uruchamiam ten plik, zapisuję kilka obliczeń jako obiekty i wyprowadzam plik .Rout po zakończeniu (aby zapisać pracę). Następnie podczas uruchamiania Sweave _ładuję ten plik .Rout_ , dzięki czemu większość moich obliczeń jest już ukończona i jest w sesji Sweave R. Wtedy moje objaśnienia LaTeX do R są całkiem proste: po prostu daj mi tabelę XTable zapisaną w „res.table” lub podaj mi wynik już obliczonych obliczeń przechowywanych w zmiennej „res”. Dlatego naciskam na minimalną możliwą ilość kodu R w pliku LaTeX, aby osiągnąć pożądany rezultat (osadzanie wyników statystyk w zapisie LaTeX). Czy ktoś ma jakieś doświadczenie z takim podejściem? Po prostu martwię się, że mogę wpaść w kłopoty na dalszych etapach, kiedy zaczynam naprawdę próbować załadować i wykorzystać ten przepływ pracy.


title: Dlaczego testerzy i programiści się nie lubią?

text: W swojej karierze programistycznej widziałem różnych programistów i testerów i wielu z nich się nie lubiło/nie lubiło. Chodzi mi o to, że programiści uważają, że praca testera nie jest „prawdziwą” pracą, a testerzy uważają, że programiści są zbyt „dumni”. Czy to słuszna decyzja podjęta przeze mnie, dlaczego i co możemy zrobić, aby uniknąć tego rodzaju problemów?


title: Jak modelować hashtagi za pomocą nodejs i mongodb

text: Istniejąca architektura: serwer nodejs z backendem mongodb. Mam ciągi opisujące obrazy, które mogą zawierać #hashtagi. Chcę wyodrębnić hashtagi z ciągów, przechowywać hashtagi i powiązać obraz z tym hashtagiem. Tak więc np. obraz jest przesyłany z opcją „zabawa na #bandcamp #nyc”, „#bandcamp” i „#nyc” są wyodrębniane. * Jeśli nie istnieją już jako hashtagi, są tworzone i obraz jest powiązany z nimi obydwoma. * Jeśli istnieją, jest to rozpoznawane i obraz jest powiązany z obydwoma. Tak więc będzie możliwe zbudowanie zapytania mongo find, które pobiera wszystkie obrazy dla hashtagu lub wielu hashtagów. Jestem nowy w nosql, rozumiem, że w relacji miałbym: * hashtagi tabeli * obrazy tabeli * obrazy tabeli hashtags z relacjami wiele do wielu. Obraz może mieć wiele hashtagów, a hashtag może mieć wiele obrazów. Jakie podejście jest odpowiednie w przypadku mongo? Z czytania pytań i odpowiedzi w ten sposób: http://stackoverflow.com/questions/8455685/how-to-implement-post-tags-in-mongo widzę, że mogę zaimplementować poddokument w dokumencie obrazu z tagami. Czy to skuteczne w wyszukiwaniu i pobieraniu? Mógłbym wtedy użyć http://cookbook.mongodb.org/patterns/count_tags/ \- map zmniejszyć? Skończmy z: kolekcja obrazków withwith tags zbiór tagów poddokumentu * dokument z tagami poddokument z tagami wyodrębnionymi i dodanymi do niego podczas tworzenia obrazu oraz nowy tag dodany do kolekcji, jeśli jeszcze nie jest obecny (tzn. tagi muszą być unikalne) utwórz także tag w kolekcji tags i uruchom map Reduce. Czy to dźwięk? Czy rozumiem rzeczy poprawnie i czy moje podejście jest rozsądne?


title: Nauczanie: Jak możesz zmotywować uczniów do komentowania?

text: Pamiętam, kiedy uczono mnie, że „komentarze są najważniejszą częścią kodu”. A raczej, kiedy _poinformowano_ mnie, że komentarze są najważniejszą częścią kodu. Nie wydaje mi się, żebym był przekonany i nadal widzę częste przypadki, w których programiści nie są przekonani o konieczności dobrych i dokładnych komentarzy. Z pewnością jestem przekonany w tym momencie - próbując czytać w szczególności złożone formuły, które wywołują funkcje, które wywołują inne funkcje, których nie rozumiem - ale nie wiem, jak przekazać to uczniom.


title: Jak przekonać menedżera, aby przeniósł mnie z zespołu usług/wsparcia do działu rozwoju?

text: Dołączyłem do firmy kilka miesięcy temu jako programista Java. Lubię kodować i sprawia mi to radość. Po szkoleniu Java zostałem włączony do projektu usług/wsparcia. W tym zespole nie ma kodowania. Kiedy poprosiłem mojego kierownika o przeniesienie mnie do projektu programistycznego lub wycofanie mnie z tego projektu, zakwestionował moje "Dlaczego chcesz się kodować?" To jest punkt, w którym zaniemówiłem, aby zobiektywizować, dlaczego chcę kodować. Jak mogę go przekonać do przeniesienia mnie do projektu deweloperskiego? Chcę ciągle zdobywać wiedzę w Javie i doświadczenie w programowaniu.


title: Ładowanie za przedłużenie chromu?

text: Mam rozszerzenie chrome, które moim zdaniem jest dość przydatne. Został już opublikowany i jest bezpłatny. Jak mogę zacząć pobierać opłaty w sklepie internetowym Chrome? 0,99 USD lub coś takiego.


title: Czy możliwe jest przypadkowe znalezienie czterocyfrowej nazwy użytkownika/hasła?

text: Wyobraź sobie, że masz formularz logowania i ma on dwa pola: * Nazwa użytkownika (Maksymalna długość: tylko 4 cyfry) * Hasło (Maksymalna długość: 4 - tylko cyfry) Czy można napisać program, który znajdzie nazwę użytkownika i hasło? Jak wiem, w najgorszym przypadku będziemy mieli 100 000 000 czeków. i to jest szalone, ponieważ zajmuje bardzo dużo czasu. Więc jakie jest twoje rozwiązanie?


title: Algorytm rekurencyjnej oceny wyrażeń przyrostkowych

text: Czytam książkę Sedgewicka o algorytmach w języku C i szukam algorytmu do oceny wyrażeń przyrostkowych (tylko dodawanie i mnożenie) bez użycia stosu. Próbowałem wdrożyć jeden, ale zawsze nigdzie nie doszedłem. Mam prostą implementację C dla oceny **prefiks** int eval() { int x = 0; podczas gdy (a[i] == ' ') i++; if (a[i] == '+') { i++; zwróć eval() + eval(); } if (a[i] == '*') { i++; return eval() * eval(); } while ( (a[i] >= '0') && (a[i] <= '9')) x = 10*x + (a[i++]-'0'); powrót x; } i zastanawiałem się, czy można zrobić coś tak eleganckiego jak to, ale do oceny postfix.


title: Jak przechowywać nazwy plików, rozpocząć przesunięcie i długość, unikając problemu narzuconych przez siebie limitów (tabela przeglądowa) lub konieczności skanowania całego pliku?

text: Próbuję dowiedzieć się więcej o C i jego potomkach (głównie C++). Zdecydowałem, że chciałbym stworzyć swego rodzaju „system plików”. Nie szczególnie zaawansowany, ale coś do zabawy. Nie mam zamiaru czynić go możliwym do zamontowania, zabezpieczenia, a nawet odzyskania. W tej chwili utknąłem w krainie koncepcyjnej, próbując zdecydować, jak wdrożyć MFT/FAT. Na początku myślałem, że po prostu użyję pierwszej liczby X bajtów do przechowywania tabeli wyszukiwania, kiedy zdałem sobie sprawę, że będzie wtedy ograniczenie liczby plików, które mogę przechowywać, pomyślałem, że może użyć jakiegoś rodzaju metadanych z każdym plikiem ale wtedy musiałbym przeskanować cały system plików, aby zlokalizować plik. Przeczytałem to i to, chociaż link z80 wydaje się, że jest bardziej na mojej ulicy. Z wysokiego poziomu chcę móc wydać polecenie takie jak: ./myfs funnycat.jpg mystorage.mfs Zasadniczo dodawanie danych binarnych na końcu mystorage.mfs Jak mogę przechowywać informacje, które zawierałyby nazwy plików, start offset i długości, unikając przy tym kwestii narzuconych przez siebie limitów (długość tabeli przeglądowej) lub konieczności skanowania całego pliku (metadane z danymi binarnymi)? **Zwięzłe wyjaśnienie** Szukam sposobu na etykietowanie danych binarnych przechowywanych w jednym ciągłym pliku, aby móc pobierać dane z danego zakresu przesunięcia lub ciągiem. ./myfs mystorage.mfs funnycat.jpg Prawdopodobnie, aby to osiągnąć, dodam trochę logiki do myfs, aby sprawdzić pierwszy argument pod kątem oznak, że jest to blob zawierający inne pliki lub nie.


title: Walidacja parametrów konstruktora w C# — najlepsze praktyki

text: Jaka jest najlepsza praktyka w zakresie sprawdzania poprawności parametrów konstruktora? Załóżmy prosty fragment C#: public class MojaKlasa { public MojaKlasa(ciąg tekst) { if (String.IsNullOrEmpty(tekst)) throw new ArgumentException("Tekst nie może być pusty"); // Kontynuuj normalną konstrukcję } } Czy dopuszczalne byłoby zgłoszenie wyjątku? Alternatywą, którą napotkałem, była wstępna walidacja, przed utworzeniem instancji: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Tekst nie może być pusty"); zwróć null; } else { return new MyClass(text); } } }


title: Ile godzin dziennie możesz być naprawdę produktywny? Jak?

text: Zauważyłem, że mam problemy z utrzymaniem czujności przez 8 godzin dziennie. Słyszałem o ludziach, którzy negocjowali umowy o pracę na zaledwie 4 godziny dziennie, twierdząc, że nie będą w stanie zrobić dużo więcej w ciągu ośmiu godzin. Często przytłacza mnie senność, nuda, rozproszenie. W niektóre dni wydaje mi się, że płonę przez osiem godzin w wściekłej eksplozji produktywności; w inne dni prawie nic nie robię. Przez większość dni jest gdzieś pośrodku i czuję się źle, że marnuję dużo czasu, ponieważ nie mogę zebrać koncentracji, aby być jak najlepiej przez większość dnia. Chciałbym usłyszeć Twoje doświadczenia (powiedz mi, że nie jestem sam!) i, jeśli znajdziesz, rozwiązania tego dylematu. Czy jesteś produktywny przez 8 godzin dziennie prawie codziennie? Jak?


title: Kiedy preferuje się łączenie funkcji Dodaj/Edytuj, a kiedy trzymać je oddzielnie?

text: Regularnie spotykam się z sytuacjami, w których muszę dodać lub edytować element, a czasami używam oddzielnych metod do dodawania i edycji, a innym razem łączę je w jedną metodę. Czy jedna metoda jest lepsza od drugiej? Jeśli tak, dlaczego? public void AddItem() { ShowEditingPopup(new Item(), "Dodaj element"); } public void EditItem(Item item) { ShowEditingPopup(item, "Edytuj element"); } OR public void EditItem(Item item) { ShowEditingPopup((item ?? new Item()), string.format("{0} Item", (item == null ? "Add" : "Edit ")) ); } gdzie `ShowEditingPopup` jest zdefiniowany jako public void ShowEditingPopup(object popupDataContext, string popupTitle) { PopupDataContext = popupDataContext; tytuł_wyskakującego = tytuł_wyskakującego; IsPopupVisible = prawda; } **Edytuj:** Dla wyjaśnienia, nie zapisuję elementu, otwieram go do edycji. Prawie zawsze wdrażam ogólną metodę Save do zapisywania w bazie danych **Edytuj #2:** Edytowane próbki kodu, aby dokładniej odzwierciedlały sytuację, do której się odnoszę


title: Pisanie metody „przekształcenia” niezmiennego obiektu: jak mam do tego podejść?

text: (Podczas gdy to pytanie dotyczy konkretnego dylematu kodowania, dotyczy głównie tego, jaki jest najlepszy sposób zaprojektowania funkcji.) Piszę metodę, która powinna brać dwa obiekty Color i stopniowo przekształcać pierwszy Color w drugi, tworzenie animacji. Metoda będzie znajdować się w klasie narzędziowej. Mój problem polega na tym, że Kolor jest obiektem niezmiennym. Oznacza to, że nie mogę wykonać `color.setRGB` lub `color.setBlue` wewnątrz pętli w metodzie. To, co _mogę_ zrobić, to utworzyć instancję nowego Color i zwrócić go z metody. Ale wtedy nie będę mógł _stopniowo_ zmieniać koloru. Pomyślałem więc o trzech możliwych rozwiązaniach: * * * 1- Kod klienta zawiera wywołanie metody wewnątrz pętli. Na przykład: int czas trwania = 1500; // czas trwania animacji w milisekundach int steps = 20; // ile 'cykli' zajmie animacja for(int i=0; i<kroki; i++) color = transformColor(color, targetColor, duration, steps); A metoda wyglądałaby tak: Color transformColor(Kolor oryginał, kolor docelowy, czas trwania, kroki int){ int redDiff = target.getRed() - original.getRed(); int redAddition = redDiff / kroki; int newRed = oryginał.getRed() + redAddition; // to samo dla zielonego i niebieskiego .. Thread.sleep(duration / STEPS); // pominięta obsługa wyjątków return new Color(newRed, newGreen, newBlue); } Wadą tego podejścia jest to, że kod klienta musi "wykonywać część zadania metody" i zawierać pętlę `for`. Metoda nie działa całkowicie samodzielnie, co mi się nie podoba. * * * 2- Utwórz zmienną podklasę `Color` za pomocą metod takich jak `setRed` i przekaż obiekty tej klasy do `transformColor`. Wtedy mogłoby to wyglądać mniej więcej tak: void transformColor(MutableColor original, Color target, int duration){ final int STEPS = 20; int redDiff = cel.getRed() - oryginalny.getRed(); int redAddition = redDiff / kroki; int newRed = oryginał.getRed() + redAddition; // to samo dla zielonego i niebieskiego .. for(int i=0; i<STEPS; i++){ original.setRed(original.getRed() + redAddition); // to samo dla zielonego i niebieskiego .. Thread.sleep(duration / STEPS); // pominięto obsługę wyjątków } } Wtedy kod wywołujący zwykle wyglądałby mniej więcej tak: // Metoda zwykle przekształca kolory JComponents JComponent someComponent = ... ; // ustawienie koloru w JComponent na MutableColor Color mutableColor = new MutableColor(someComponent.getForeground()); someComponent.setForeground(mutableColor); // później, transformacja Color w JComponent transformColor((MutableColor)someComponent.getForeground(), new Color(200,100,150), 2000); Wadą jest konieczność stworzenia nowej klasy `MutableColor`, a także konieczność wykonania rzutowania. * * * 3- Przekaż do metody rzeczywisty obiekt mutowalny, który posiada kolor. Następnie metoda może wykonać `object.setColor` lub podobnie w każdej iteracji pętli. Dwie wady: A- Nie tak elegancki. Przekazywanie obiektu, który utrzymuje kolor tylko po to, by zmienić kolor, wydaje się nienaturalne. B- Chociaż przez większość czasu ta metoda będzie używana do przekształcania kolorów wewnątrz obiektów `JComponent`, inne rodzaje obiektów również mogą mieć kolory. Tak więc metoda musiałaby być przeciążona, aby otrzymać inne typy lub otrzymać `Object` i mieć w środku kontrole `instanceof`. Nieoptymalna. * * * W tej chwili myślę, że najbardziej lubię rozwiązanie #2, niż rozwiązanie #1 i rozwiązanie #3 najmniej. Chciałabym jednak usłyszeć Wasze opinie i sugestie na ten temat.


title: CI - Jak długo trwa ciągłość?

text: Obecnie używamy CCNet jako naszego serwera ciągłej integracji. Większość projektów sprawdza zmiany co 30 sekund (domyślnie) i w razie potrzeby wykonuje kompilację (testy jednostkowe, stylecop, fxcop itp.). Mamy teraz całkiem sporo projektów, a serwer spędza większość czasu w pobliżu 100% wykorzystania procesora. Zaniepokoiło to część zespołu programistów, mimo że serwer jest responsywny, a kompilacje wciąż trwają mniej więcej tyle samo, co zawsze. Sugerowano, aby skrócić interwał sprawdzania do około pięciu minut. Wydaje mi się, że to za długo i ryzykujemy, że ludzie napiszą kod, a potem pojadą do domu na weekend, a teraz jest zepsuty build, który może powstrzymywać innych. W odpowiedzi sugeruje się, że jeśli ktoś potrzebuje znać wyniki, może wymusić kompilację. Ale wydaje się, że to przekreśla cel CI, ponieważ myślałem, że ma być zautomatyzowany. Proponowane przeze mnie rozwiązanie to po prostu zdobycie kolejnego serwera kompilacji i rozdzielenie kompilacji między serwery. Czy myślę o tym w niewłaściwy sposób, czy może jest moment, w którym jeśli integracja nie wystarcza, to tak naprawdę nie robisz już CI?


title: Do domeny czy nie do domeny

text: Standardy SQL92 i SQL99 definiują konstrukcje DDL `CREATE DOMAIN`. Nie wszystkie bazy danych obsługują to lub mają inną nazwę (np. SQL Server ma typy zdefiniowane przez użytkownika). Umożliwiają one zdefiniowanie ograniczonego typu danych, który ma być używany w ich bazie danych, w celu uproszczenia i wymuszenia reguł odnoszących się do dozwolonych wartości. Taki typ danych mógłby być użyty w deklaracjach kolumn, w danych wejściowych i wyjściowych do procedur składowanych i funkcji itp... Chciałbym wiedzieć: * Czy ludzie faktycznie używają domen w swoich projektach baz danych? * Jeśli tak, w jakim stopniu? * Jak przydatne są? * Jakie pułapki napotkałeś? Staram się ocenić opłacalność ich wykorzystania w przyszłym rozwoju bazy danych.


title: Czy mogę bez problemu używać Linux/Mono zamiast Windows/Visual Studio?

text: Mam ponad 6 lat doświadczenia z .Net (C#/ASP.NET) i Visual Studio. Ale ostatnio mam ochotę przejść na Linux/Mono. Pojawia się kilka pytań: 1. Czy mogę poprawnie uruchamiać moje stare projekty Visual Studio i kody źródłowe w Mono? 2. Moi klienci używają IIS dla ASP.NET i MS Windows dla projektów Wininform i Console. Czy moja migracja ma na nie wpływ? Innymi słowy, czy moje projekty Mono działają w systemie Windows/IIS bez żadnych zmian lub problemów? 3. Czy Mono jest niezawodny, biorąc pod uwagę ostatnie zmiany w Mono, Novell, Xamarin i Attachme? 4. Czy mogę nadal korzystać z moich ulubionych projektów open source, takich jak NHibernate, Castle, Cuyahoga, log4net, Microsoft Enterprise Library i DNN? 5. Czy mogę bez problemu hostować projekty WWW Mono ASP.NET w Apache? 6. Czy mogę dokładnie wykorzystać swoje umiejętności w webforms ASP.NET i MVC w Mono?


Posiadanie międzynarodowych certyfikatów od gigantycznych firm, takich jak Microsoft, Cisco itp., może być bardzo pomocne w Twojej karierze. Również jeśli masz przyzwoite doświadczenie, nie ma problemu ze znalezieniem pracy. Co powiesz na bezpłatne, ale aktywne członkostwo w W3C? Nie dają ci certyfikatów. Po prostu zostajesz członkiem, myślisz o rekomendacjach i propozycjach, uczestniczysz w procesie decyzyjnym i to wszystko. Czy członkostwo w W3C pomoże w przyszłej karierze?


title: Jakie masz doświadczenia z SQL CLR dla złożonej logiki biznesowej?

text: Pomyślałem więc, że mam idealny przypadek użycia dla procedury CLR SQL. Przeszukałem sieć w poszukiwaniu podobnego przykładu, w którym pobierane są dane, dodawane i aktualizowane rekordy. Od jakiegoś czasu nie przyglądałem się procedurze SQL CLR, ale odkąd została wydana w 2005 roku (około 6 lat temu!), mam nadzieję, że będzie mnóstwo przykładów! Rozważam to, ponieważ muszę przejrzeć pewne dane, przepuścić je przez garść logiki proceduralnej, zaktualizować, a następnie przesłać je z powrotem do klienta. Myślę tutaj, aby zbliżyć się do metalu DB tak blisko, jak to możliwe, i użyć tego sprzętu, aby szybko się to stało. Czy ktoś używa SQL CLR? Jeśli tak, jakie masz z tym doświadczenie? p.s. pierwotnie opublikowany na stackoverflow i przeniesiony tutaj na podstawie komentarza.


title: W Scrumie, co zrobić, gdy punkty fabularne i godziny zadań nie są z grubsza skorelowane?

text: Nasz zespół programistów jest całkiem nowy w procesie scrum, więc chciałbym pomóc udoskonalić nasze metody, aby lepiej je wykorzystać. W szczególności zauważyłem, że korelacja między punktami fabularnymi a godzinami zadań nie jest zbyt dobra. Oznacza to, że często mamy historie o niższych punktach rozłożone na łączną liczbę godzin pracy większą niż historie o wyższych punktach. Teraz zdaję sobie sprawę, że są to dwa oddzielne procesy szacowania i że powinniśmy wykorzystać godziny do oszacowania tylko pozostałej pracy na sprint, używając punktów fabularnych do obliczenia prędkości i być w stanie przewidzieć długość cyklu wydawniczego lub ilość funkcji, którymi będziemy mogli się zająć. Wydaje mi się jednak, że jeśli punkty sprintu i godziny zadań nie są dobrze skorelowane, to musimy wykonywać złą robotę przy szacowaniu jednego lub obu z nich. Ponieważ dostosowujemy tylko pozostałe godziny pracy, a nie rejestrujemy spędzonego czasu, nie mogę łatwo stwierdzić, czy problem dotyczy początkowego podziału godzin pracy, czy też oszacowania punktu fabularnego. Więc moje pytanie brzmi, czy i jak powinniśmy sobie z tym poradzić? Przychodzi mi do głowy kilka sposobów, aby zacząć sobie z tym radzić: * Rejestruj czas spędzony na zadaniu i wykorzystuj te informacje jako informację zwrotną, aby udoskonalić nasz proces szacowania poprzez retrospektywną identyfikację historyjek użytkowników, które zostały przez nas niedoszacowane/przeszacowane. **_Ale nie jestem przekonany, że chcemy rejestrować te informacje i spodziewam się oporu wobec nich._** * W fazie planowania zidentyfikuj wartości odstające po procesie podziału godzin zadania i przyjrzyj się im dalej. W ten sposób moglibyśmy spróbować określić, czy źle oceniliśmy złożoność historii, czy też w podziale zadań brakuje niektórych wysiłków lub przeszacowaliśmy długość prostych zadań. **_Obawiam się jednak, że połączyłoby to dwie próby szacowania, co też nie wydaje się właściwe... Zakłada to również, że zdekomponowalibyśmy wszystkie historie w fazie planowania, w przeciwnym razie nie zrobimy tego być w stanie wiele zrobić z historiami, które zostały źle ocenione._** * Inną metodą podejścia do tego byłoby próba niezależnego włączenia metod w celu usprawnienia procesu szacowania i podniesienia świadomości zespołu na temat znaczenia szacowania. Następnie po prostu monitoruj korelację między punktami historii a początkowym podziałem godzin zadań jako wskaźnikiem tego, jak sobie radzimy i czy musimy dalej nad tym pracować. **_Jestem skłonny sądzić, że jest to najlepsze podejście, ale mniej aktywne._** Jaki jest najlepszy sposób podejścia do tego problemu i/lub jakie są inne sugestie dotyczące usprawnienia procesu szacowania w tym kontekście?


title: Jakie są sposoby tworzenia dokumentu przepływu pracy, który odwzorowuje elementy w projekcie blisko ich odpowiedników w kodzie?

text: Uruchamiamy średniej wielkości aplikację internetową PHP, napisaną w stylu MVC, przy użyciu CodeIgniter. Większość specyfikacji funkcjonalnych została napisana i jest kilka funkcji, które z pewnością zostaną zastąpione ulepszonym zachowaniem w późniejszych etapach projektu. Mam za zadanie napisać dokument workflow z technicznego punktu widzenia i oto, co chcę omówić, najlepiej: * Dokument powinien być jakimś diagramem, * Ścisłe odwzorowanie elementów w dokumencie z modelami/ widoki/kontrolery/funkcje js/inne ważne bloki w kodzie; nazwijmy te moduły. To wystarczy, ponieważ będę mógł z tego wyprowadzić sposób niezależnego testowania różnych modułów i przypisywania różnych modułów różnym programistom. Aspekt przepisywania części dokumentu, gdy odkryję, że części kodu wymagają wymiany, nie stanowi problemu. Zrobię przepisywanie, aby zachować synchronizację kodu i diagramu, jeśli/kiedy będę musiał. Moje dotychczasowe próby z sieciami Petriego i diagramami interakcji UML nie powiodły się, gdy zdałem sobie sprawę, że muszę ujawnić zbyt wiele logiki podejmowania decyzji wewnątrz kontrolerów. Szukam porady i jestem ciekawa, czy ktoś to robił wcześniej.


title: 7 napędzanych klas z jedną wspólną klasą bazową

text: Napisałem następujący kod, //main.cpp #include<iostream> #include<string> #include"human.h" #include"computer.h" #include"referee.h" #include"RandomComputer.h" #include"Avalanche.h" #include"Bureaucrat.h" #include"Toolbox.h" #include"Crescendo.h" #include"PaperDoll.h" #include"FistfullODollors.h" przy użyciu standardowej przestrzeni nazw; int main() { Lawina pla1; plac lawinowy2; sędzia f; pla1.disp(); for (int i=0;i<5;i++) { cout<<pla2.mov[i]; } zwróć 0; } w tym programie wszystkie zawarte klasy oprócz referee.h i human.h są sterowane z komputera.h. każde wywołanie sterowane ma zmienną tablicową char, która jest inicjowana, gdy zadeklarowany jest element klasy sterowanej. problem polega na tym, że kiedy deklaruję tow różnych członków klasy z napędem, powiedzmy Avalache i ToolBox. po wydrukowaniu tablicy char dla jednego z nich za pomocą pętli for nic nie wypisuje. Jeśli jednak zadeklaruję tylko jeden z nich w main.cpp, działa poprawnie. a plik dla computer.h wygląda następująco: #ifndef COMPUTER_H #define COMPUTER_H class computer { public: int nump; char mov[]; nieważne disp(); }; #endif ToolBox.h wygląda tak: #ifndef TOOLBOX_H #define TOOLBOX_H #include"computer.h" class Przybornik: komputer publiczny { public: Toolbox(); }; #endif w końcu Avalanche.h wygląda następująco: #ifndef AVALANCHE_H #define AVALANCHE_H #include"computer.h" class Avalanche: public computer { public: Avalanche(); }; #endif


title: Czy haszowanie „nazwa użytkownika + hasło” jest tak samo bezpieczne jak haszowanie solone?

text: Chcę zahaszować „użytkownik + hasło”. [EDIT: prehashing „user” byłby ulepszeniem, więc moje pytanie dotyczy również hashowania „hash(user) + password”. Jeśli problem dotyczy tego samego użytkownika w różnych witrynach, to haszowanie zmieniono na hashowanie `"hash(serviceName + user) + password"`] Z tego, co przeczytałem o solonym hashu, użycie "user + password" jako danych wejściowych do funkcji hash pomoże nam unikaj problemów z hakowaniem odwrotnej tablicy haszującej. To samo można powiedzieć o stole tęczowym. Jakiś powód, dla którego nie jest to tak dobre, jak solony hasz?


title: Skąd pamiętasz, gdzie w kodzie chcesz kontynuować następnym razem?

text: Kiedy przerywasz pracę nad jakimś kodem (czy to dlatego, że musisz popracować nad czymś innym lub wyjechać na wakacje, czy po prostu dlatego, że jest koniec dnia), po zamknięciu projektu Visual Studio, jaki jest twój preferowany sposób zapamiętania co chcesz zrobić, gdy ponownie zaczniesz pracować nad tym kodem. Czy ustawiasz zakładkę programu Visual Studio, czy zapisujesz coś w rodzaju „// TODO: kontynuuj tutaj następnym razem”? Może masz specjalny tag, taki jak `// NEXT:`? Czy umieszczasz karteczkę na swoim monitorze? Czy używasz fajnego narzędzia lub wtyczki Visual Studio, które powinienem znać? Czy masz jakąś osobistą sztuczkę, która pomoże Ci znaleźć w kodzie miejsce, w którym przerwałeś ostatnią pracę nad kodem?


title: Jaka jest różnica między świetnym programistą a programistą odnoszącym sukcesy finansowe?

text: Jaka jest różnica między ludźmi takimi jak Zukerberg, Page i Brin, którzy są programistami, a także odnoszą nadzwyczajne sukcesy finansowe, a innymi mądrymi, świetnymi programistami, którzy nie odnoszą wielkich sukcesów finansowych (jak większość pracowników na Facebooku i Google).


title: Czy istnieje język, w którym parametry są umieszczane w nazwie metody?

text: w JavaScript: function getTopCustomersOfTheYear(howManyCustomers, whichYear) { // Trochę kodu tutaj. } getTopCustomersOfTheYear(50, 2010); w C#: public Lista<Klient> GetTopCustomersOfTheYear(int howManyCustomers, int jakiYear) { // Tu trochę kodu } Lista<Customer> customers = GetTopCustomersOfTheYear(50, 2010); w PHP: public function getTopCustomersOfTheYear($howManyCustomers, $whichYear) { // Tu trochę kodu } $customers = getTopCustomersOfTheYear(50, 2010); Czy istnieje jakiś język, który obsługuje tę składnię: function GetTop(x)CustomersOfTheYear(y) { // Tu trochę kodu } returnValue = GetTop(50)CustomersOfTheYear(2010); Czy nie jest to bardziej semantyczna, bardziej czytelna forma napisania funkcji? **Aktualizacja:** Powodem, dla którego zadaję to pytanie, jest to, że piszę artykuł o nowej składni nowego języka. Pomyślałem jednak, że taka składnia do deklarowania metod może być przyjemniejsza i bardziej przyjazna dla programistów oraz zmniejszy krzywą uczenia się języka, ponieważ jest bardziej zbliżona do języka naturalnego. Chciałem tylko wiedzieć, czy ta funkcja była już rozważana, czy nie.


title: Wyszukaj (wolno poruszającą się) liczbę z karą za zbyt wysoką wartość testu

text: Twoim zadaniem jest zaprojektowanie algorytmu wyszukiwania, który znajdzie moją tajną liczbę, która mieści się w przedziale od 0 do 2^64. Jeśli twoja wartość testowa jest zbyt niska, możesz przetestować ponownie za 1 sekundę. Jeśli twoja wartość testowa jest zbyt wysoka, nie możesz testować ponownie przez następne 300 sekund. Co sekundę dodam 1 do lub odejmę 1 od liczby. Nie powiem ci, co zrobiłem, i chociaż może to być przypadkowe, może też nie być przypadkowe. Jak szybko znaleźć przybliżoną liczbę? Oczywistą odpowiedzią jest użycie wyszukiwania binarnego, ale ponieważ kara jest wysoka za zbyt wysokie zgadywanie, myślę, że wymaga to pewnego dostosowania. **Tło** Muszę znaleźć szybkość systemu. Prędkość zmienia się powoli. Odgadnięcie zajmuje 1 sekundę. Jeśli moje przypuszczenie jest zbyt niskie: nie ma problemu. Jeśli jest zbyt wysoki, system uruchamia się ponownie, powodując 5-minutowe opóźnienie. Moim celem jest stosunkowo szybkie oszacowanie prędkości.


title: Szacunki zadań Sprint Backlog — z czego składają się godziny?

text: Jeśli chodzi o backlog sprintu, przeczytałem, że historie są podzielone na zadania i szacowane. Czy te szacunki zazwyczaj dotyczą tylko godzin opracowywania, czy też rozwoju + kontroli jakości? Z czego zazwyczaj składają się te godziny? Dziękuję.


title: Czy powinniśmy unikać stosowania wzorców projektowych w ciągle zmieniających się projektach?

text: Mój przyjaciel pracuje dla małej firmy nad projektem, którego znienawidziłby każdy programista: jest zmuszany do jak najszybszego wydania, jest jedynym, którego obchodzi dług techniczny, klient nie ma zaplecza technicznego itd. historia, która skłoniła mnie do zastanowienia się nad stosownością wzorców projektowych w projektach takich jak ten. Oto historia. > Musieliśmy wyświetlać produkty w różnych miejscach na stronie. Na przykład menedżerowie treści mogą przeglądać produkty, ale także użytkowników końcowych lub partnerów za pośrednictwem interfejsu API. > > Czasami w produktach brakowało informacji: na przykład kilka > z nich nie miało żadnej ceny w momencie tworzenia produktu, ale cena > nie została jeszcze określona. Niektóre nie posiadały opisu (opis > będący złożonym obiektem z historią modyfikacji, zlokalizowaną treścią > itp.). Niektórym brakowało informacji o wysyłce. > > Zainspirowany moimi ostatnimi lekturami na temat wzorców projektowych, pomyślałem, że jest to doskonała > okazja do użycia magicznego wzorca Null Object. Więc zrobiłem to, > i wszystko było gładkie i czyste. Wystarczyło wywołać > `product.Price.ToString("c")`, aby wyświetlić cenę, lub > `product.Description.Current`, aby wyświetlić opis; bez warunkowych rzeczy > wymagane. Aż pewnego dnia interesariusz poprosił o wyświetlenie go w inny sposób > w interfejsie API, poprzez umieszczenie „null” w JSON. A także inaczej dla treści > menedżerów, wyświetlając „Cena nieokreślona [Zmień]”. I musiałem zamordować mój > ukochany wzorzec Null Object, ponieważ nie było już takiej potrzeby. > > W ten sam sposób musiałem usunąć kilka abstrakcyjnych fabryk i kilku > budowniczych, skończyło się na zastąpieniu mojego pięknego wzoru Fasady przez bezpośrednie i > brzydkie wywołania, ponieważ bazowe interfejsy zmieniały się dwa razy dziennie przez > trzy miesiące, i nawet Singleton zostawił mnie, gdy wymagania mówiły, że > przedmiotowy obiekt musi być inny w zależności od kontekstu. > > Ponad trzy tygodnie pracy polegały na dodawaniu wzorców projektowych, a następnie > rozrywaniu ich po miesiącu, a mój kod w końcu stał się spaghetti > na tyle, by nikt nie mógł go utrzymać, łącznie ze mną. Czy nie byłoby lepiej nigdy nie używać tych wzorców? Rzeczywiście, musiałem sam pracować nad tego typu projektami, w których wymagania ciągle się zmieniają i są _dyktowane_ przez osoby, które nie mają na myśli spójności ani spójności produktu. W tym kontekście nie ma znaczenia, jak bardzo jesteś zwinny, przyjdziesz z eleganckim rozwiązaniem problemu, a kiedy w końcu go wdrożysz, dowiesz się, że wymagania zmieniły się tak drastycznie, że twoje eleganckie rozwiązanie nie pasuje dłużej. Jakie byłoby rozwiązanie w tym przypadku? * Nie używasz żadnych wzorców projektowych, przestań myśleć i pisz bezpośrednio? Interesujące byłoby doświadczenie, w którym jeden zespół pisze kod bezpośrednio, podczas gdy inny zastanawia się dwa razy przed pisaniem, podejmując ryzyko wyrzucenia oryginalnego projektu kilka dni później: kto wie, może oba zespoły miałyby ten sam dług techniczny. W przypadku braku takich danych stwierdziłbym tylko, że _nie wydaje się_ właściwe_ pisać kodu bez wcześniejszego zastanowienia podczas pracy nad projektem 20 osobo-miesięcznym. * Zachować wzorzec projektowy, który nie ma już sensu, i spróbować dodać więcej wzorców do nowo utworzonej sytuacji? To też nie wydaje się właściwe. Wzorce służą do uproszczenia zrozumienia kodu; umieść zbyt dużo wzorów, a kod stanie się bałaganem. * Zacząć myśleć o nowym projekcie, który obejmuje nowe wymagania, a następnie powoli przerobić stary projekt na nowy? Jako teoretyk i osoba, która faworyzuje Agile, całkowicie się tym interesuję. W praktyce, gdy wiesz, że będziesz musiał wracać do tablicy co tydzień i _przerobić dużą część poprzedniego projektu_ i że klient po prostu nie ma wystarczających środków, aby za to zapłacić, ani wystarczająco dużo czasu, aby czekać , to prawdopodobnie nie zadziała. Jakieś sugestie?


title: Czy komponenty są idealne do pakowania i ponownego wykorzystywania żądań find()?

text: Podczas aplikacji ciągle ładuję kilka modeli. Zamiast wpisywać kod w celu załadowania modelu, uruchom find, czy rozsądne byłoby umieszczenie tego kodu w metodzie i wywołanie go z kontrolera. Na przykład: **Zamiast** funkcja public view() { $this->loadModel('Foo'); $this->Foo->find('list'); } **Czy mogę użyć** funkcji publicznej view() { $this->ComponentName->fooLoad(); }


title: Jak radzisz sobie z spóźnianiem się z zadaniem?

text: Mam do was pytanie. Załóżmy, że otrzymujesz zadanie jako element w rejestrze produktów. Załóżmy, że masz element do dostarczenia, który ma się odbyć następnego dnia. Jeśli spóźniasz się z wykonaniem zadania w porównaniu do tego, kiedy dokonałeś szacunków, co z tym zrobisz? Czy niepokoi Cię fakt, że masz opóźnienia w harmonogramie? Jak sobie z tym radzisz? Mówisz scrum masterowi czy właścicielowi produktu?


title: Jakiego frameworka internetowego interfejsu użytkownika opartego na Javie?

text: * Wicket * Kliknięcie * GWT * Vaadin Jak rozumiem, wszystkie te frameworki umożliwiają tworzenie komponentów gui za pomocą javy (ze wszystkimi jej zaletami) bez konieczności wykonywania wielu html/javascript. Oprócz rozważania czynników technicznych jestem również zainteresowany tym, czy któryś z nich szybko zyskuje na popularności. Jeśli określony framework staje się _liderem grupy_ , to również wpłynie na decyzję.


title: Jak języki programowania definiują funkcje?

text: Jak języki programowania definiują i zapisują funkcje/metody? Tworzę interpretowany język programowania w Ruby i próbuję dowiedzieć się, jak zaimplementować deklarację funkcji. Moim pierwszym pomysłem jest zapisanie treści deklaracji na mapie. Na przykład, jeśli zrobiłem coś takiego jak def a() { callSomething(); x += 5; } Następnie dodałbym wpis do mojej mapy: { 'a' => 'callSomething(); x += 5;' } Problem z tym polega na tym, że stałoby się to rekurencyjne, ponieważ musiałbym wywołać moją metodę `parse` na łańcuchu, który następnie wywołałby `parse` ponownie, gdy napotkałby `doSomething`, a wtedy zabrakłoby stosu przestrzeń ostatecznie. Jak więc radzą sobie z tym języki interpretowane?


title: Ostatnio czytałem o wzorcach projektowania jednostek pracy i repozytorium; pracując z EF zastanawiam się, czy to dobry wzorzec projektowy

text: Zauważyłem, że najpierw tworzyłem rekordy podrzędne, które wymagają istnienia rekordu głównego, aby mogły się do niego odwoływać za pomocą klucza podstawowego rekordu głównego (jeśli to właściwy termin). Aby to osiągnąć za pomocą EF 6, próbowałem dwukrotnie wywołać `SaveChanges()` - raz, aby utworzyć rekord główny, aby wygenerować jego klucz tożsamości i raz po utworzeniu dzieci. Problem, na który natknąłem się, polegał na tym, że EF nie lubi wielu wywołań do `SaveChanges()`, więc musiałem użyć transakcji. Nie lubię korzystać z transakcji, ponieważ z jakiegoś powodu, którego nie potrafię wyartykułować, jest to nieporządne. Jest to dla mnie dość powszechny problem, że muszę to zrobić, więc zamiast `using`, `try/catch` i `commit/rollback` pomyślałem, że łatwiej będzie mieć to za każdym razem: this._dbContextWrapper.CommitIfTrue( () => { // Wiele wywołań SaveChanges() tutaj zwraca true; }); Chociaż posiadam również opcję `BeginTransaction()` wystawioną na moim `_dbContextWrapper` tak, że przekazywanie `Func<bool>` nie jest pożądane. public interface IRepository { IQueryable<TModel> Query<TModel>() gdzie TModel : class; TModel Find<TModel>(params object[] key) gdzie TModel : class; void Add<TModel>(TModel model) gdzie TModel : klasa; void Update<TModel>(TModel zaktualizowany, params object[] key) gdzie TModel : class; IDataResult ZapiszZmiany(); void Delete<TModel>(params object[] key) gdzie TModel : class; IRepositoryTransaction BeginTransaction(); IRepositoryTransaction BeginTransaction(IsolationLevel izolacjiLevel); IDataResult CommitIfTrue(Func<bool> transakcja); IDataResult CommitIfTrue(Func<bool> transakcja, IsolationLevel izolacjiLevel); } interfejs publiczny IRepositoryTransaction : IDisposable { void Commit(); nieważne wycofanie(); } interfejs publiczny IDataResult { bool IsSuccess { get; } string Komunikat o błędzie { get; } } Zdaję sobie sprawę, że to "`IRepository`" jest tylko cienkim opakowaniem wokół `DbContext` \- Robię to po to, aby moje klasy mogły mieć dostarczoną im implementację `Mock` zamiast zadzierać z `Fakes` do obejść niewirtualny aspekt metod `DbContext`. Moje pytanie brzmi: ** Czy moja metoda `CommitIfTrue` jest rozsądna? Czy istnieje sposób na zrobienie czegoś podobnego, który jest również bardziej testowalny/nie wymaga „Akcji” ani „Func”?**


title: Jaka jest różnica między programowaniem imperatywnym, proceduralnym i strukturalnym?

text: Poszukując informacji (książki, Wikipedia, podobne pytania na temat SE, itp.) zrozumiałem, że programowanie imperatywne jest jednym z głównych paradygmatów programowania, w którym opisujesz szereg poleceń (lub instrukcji) do wykonania przez komputer (więc jesteś ładna). bardzo nakazuje mu podejmowanie określonych działań, stąd nazwa „imperatyw”). Na razie w porządku. Z drugiej strony programowanie proceduralne jest specyficznym typem (lub podzbiorem) programowania imperatywnego, w którym używa się procedur (tj. funkcji) do opisania poleceń, które komputer powinien wykonać. **Pierwsze pytanie** : Czy istnieje imperatywny język programowania, który nie jest proceduralny? Innymi słowy, czy możesz mieć programowanie imperatywne bez procedur? **Aktualizacja** : Wydaje się, że odpowiedź na to pierwsze pytanie. Język MOŻE być imperatywem, nie będąc proceduralnym ani zorganizowanym. Przykładem jest czysty język asemblera. Następnie masz również programowanie strukturalne, które wydaje się być innym typem (lub podzbiorem) programowania imperatywnego, które pojawiło się, aby usunąć zależność od instrukcji GOTO. **Drugie pytanie** : Jaka jest różnica między programowaniem proceduralnym a programowaniem strukturalnym? Czy możesz mieć jedno bez drugiego i na odwrót? Czy możemy powiedzieć, że programowanie proceduralne jest podzbiorem programowania strukturalnego, jak na obrazku? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/Ip5eR.jpg)


title: Otrzymywanie zapłaty za pośrednictwem firmy Ltd lub firmy Umbrella?

text: Obecnie pracuję dla firmy jako konsultant ds. tworzenia stron internetowych i zapytano mnie, czy chcę otrzymywać zapłatę za pośrednictwem firmy Umbrella, czy za pośrednictwem mojego Ltd. Co jest dla mnie lepsze i dlaczego? @David Thornley zrobił dobry punkt w komentarzach. Nie zapominaj, że mówimy tutaj o tworzeniu stron internetowych. Nie jestem pewien, jak to jest w Wielkiej Brytanii, ale w kraju, z którego pochodzę, za rzeczy, które robisz, jesteś opodatkowany inaczej.


title: Oprogramowanie Lean/Kanban *Inside* (tj. limity WIP, redukcja kolejek i pull jako techniki programowania)

text: Myśląc o Kanbanie, zdałem sobie sprawę, że teoria kolejkowania stojąca za metodologią rozwoju SW odnosi się oczywiście również do oprogramowania współbieżnego. Teraz szukam, czy tego rodzaju myślenie jest wprost stosowane w jakiejś dziedzinie. Prosty przykład: zwykle chcemy ograniczyć liczbę wątków, aby uniknąć thrashingu pamięci podręcznej (limity WIP). W artykule dotyczącym wzorca zakłócającego[1] jednym z interesujących mnie stwierdzeń było to, że producenci/konsumenci rzadko są zrównoważeni, więc podczas korzystania z kolejek albo konsumenci czekają (kolejki są puste), albo producenci produkują więcej niż zużywają, co skutkuje albo kolejka z pełną pojemnością lub kolejka bez ograniczeń, która wysadza i pochłania pamięć. Obydwa, w ujęciu leanowym, są marnotrawstwem i wydłużają czas realizacji. Czy ktoś ma przykłady zastosowania limitów WIP, redukcji/eliminacji kolejek, pull lub single piece flow w programowaniu? http://disruptor.googlecode.com/files/Disruptor-1.0.pdf


title: Narzut wydajności standardowych kontenerów i doładowanie

text: Adap.TV wybrał C++ do tworzenia swojego oprogramowania. Postanowili jednak nie używać standardowych kontenerów1 i boost ze względu na wydajność, o czym pisali w poniższym artykule: * Dlaczego używamy C++ (bez użycia STL lub boost) Mówi (podkreślenie moje), > Istnieje kilka zasad, których przestrzegamy **aby utrzymać > wysoką wydajność** ; > **Unikaj malloc(), calloc() lub new** > **Brak free() lub usuwania** (i nie ma potrzeby używania tcmalloc) > **Brak STL, boost itp.** > Unikaj blokowania tak bardzo, jak possible > # wątków = # rdzeni procesora (hiperwątk jest kompromisem między opóźnieniem a > przepustowością) Jak wiemy, standardowe kontenery używają alokatorów, które wewnętrznie używają `new` i `delete`, które są _kosztownymi_ operacjami. Aby ich uniknąć, AdapTv całkowicie zrezygnował ze standardowych kontenerów. Zamiast używać `new` i `delete` (wielokrotnie), _ponownie_ wykorzystują_ pamięć (co oznacza, że używają puli pamięci). Zastanawiam się, co powstrzymuje ich przed używaniem niestandardowych alokatorów dla standardowych kontenerów! Niestandardowy alokator może wewnętrznie używać puli pamięci, co oznacza _ponowne wykorzystanie pamięci_. Nie widzę więc, jak standardowe kontenery mogłyby pogorszyć wydajność. A może czegoś mi brakuje? Czy nie możemy uniknąć używania „new” i „delete” w standardowych kontenerach? Czy jest jakiś inny powód, dla którego ktoś miałby unikać używania standardowych kontenerów? A może to po prostu brak wiedzy z ich strony doprowadził do tej decyzji? A co z doładowaniem? * * * 1) Przypuszczam, że przez _STL_ mieli na myśli _standardowe kontenery C++_ , a nie SGI SGI.


title: Czy można zintegrować MS Project Server z SVN?

text: Używamy Hosted SVN + Fogbugz do kontroli źródła i śledzenia zadań/problemów. Nasi programiści są bardzo zaznajomieni z SVN i wahamy się w tym momencie, aby zmienić dostawców kontroli źródła (np. TFS). Jednak Management intensywnie korzysta z Microsoft Project do zarządzania projektami i rozważa skonfigurowanie MS Project Server. **EDYTUJ** Z SVN + Fogbugz (lub kilkoma innymi narzędziami do śledzenia zadań), możemy utworzyć hak po zatwierdzeniu, aby zaktualizować zadania (zamknij/ponownie otwórz/określ czas) z wiadomości o zatwierdzeniu. Czy ktoś zna sposób na zintegrowanie MS Project Server z SVN? Czy to w ogóle możliwe? Szukałem w Internecie, ale nic nie mogłem znaleźć. Może nie szukałem poprawnie?


title: Możliwość komentowania scenorysu?

text: Niedawno zacząłem pracować dla firmy, która zleca mi tworzenie makiet aplikacji, którą chcieliby przekonwertować na aplikację na iPhone'a. Nie zostałem poinformowany, jak wszystkie deski do siebie pasują, ale mam ogólne pojęcie, jak powinny wyglądać. Chciałabym pisać notatki lub komentarze na każdej indywidualnej tablicy na temat tego, jak należy coś zrobić, gdy będę mieć więcej informacji. Czy można komentować na tablicy, czy też w pobliżu tablic jest jakieś miejsce, w którym mogę zostawić notatki co dalej?


title: Jak mogę oszacować żywotność linii kodu?

text: Staram się wymyślić sposób na analizę trwałości kodu w projektach open source: to znaczy, jak długo konkretna linia kodu jest aktywna i używana. Mój obecny pogląd jest taki, że długość życia linii kodu zaczyna się, gdy jest po raz pierwszy zatwierdzona, a kończy się, gdy wystąpi jedno z następujących zdarzeń: * Jest edytowany lub usuwany, * Wykluczony z kompilacji, * Żaden kod w jego kompilacji nie jest utrzymywany przez pewien czas (powiedzmy rok). UWAGA: W celu wyjaśnienia, dlaczego „edycja” jest liczona jako „śmierć”, edytowane linie byłyby liczone jako „nowa” generacja lub linia kodu. Poza tym, jeśli nie ma łatwego sposobu na zrobienie tego, nie byłoby rozliczania z długowieczności linii lub pochodzenia od przodka. Co jeszcze określiłoby żywotność linii kodu?


title: Jak wykorzystać kamerę internetową klienta do nagrywania za pośrednictwem strony internetowej?

text: Buduję witrynę i idealnie chciałbym nagrywać interakcję użytkowników za pomocą ich kamery internetowej. Jak zintegrować nagranie z kamery internetowej z moją witryną. Widziałem, jak to się robi z lampą błyskową. Ale staram się tego unikać. Moja witryna jest budowana przy użyciu c#, javascript i przeznaczona dla IE 7 i starszych. * * * Chcę nagrać filmy na później. Nie będą używane do rozmów itp.


title: Wybierasz między jednym a wieloma projektami w repozytorium git?

text: W środowisku **`git`**, gdzie zmodularyzowaliśmy większość projektów, mamy do czynienia z problemem projektowym _jeden projekt na repozytorium_ lub _wiele projektów na repozytorium_. Rozważmy projekt zmodularyzowany: myProject/ +-- gui +-- core +-- api +-- implA +-- implB Dzisiaj mamy _jeden projekt na repozytorium_. Daje to swobodę * `wypuszczania` poszczególnych komponentów * `tag` poszczególnych komponentów Ale jest również kłopotliwe w przypadku **`rozgałęzienia`** komponentów, ponieważ często rozgałęzienie `api` wymaga równoważnych gałęzi w `core` i być może innych komponentów. Biorąc pod uwagę, że chcemy `wydać` poszczególne komponenty, możemy nadal uzyskać podobną elastyczność, wykorzystując projekt _wielu projektów na repozytorium_. Jakie są doświadczenia i jak/dlaczego rozwiązałeś te problemy?


title: Najlepszy sposób na przedstawienie małej aplikacji

text: Wygłaszam prezentację na temat małej aplikacji osi czasu, którą zrobiłem w ciągu ostatnich kilku tygodni. Jak mogę przekształcić tę małą aplikację w znacznie większą przemowę, trwającą około 3 minut. **Czy powinienem skupić się na tym, jak to zostało zrobione, czy po prostu na tym, dlaczego ludzie powinni go używać?**


title: Znalezienie sposobu na uproszczenie złożonych zapytań w starszej aplikacji

text: Pracuję z istniejącą aplikacją zbudowaną na Rails 3.1/MySql, przy czym większość pracy odbywa się w interfejsie JavaScript, chociaż rzeczywiste platformy nie mają tutaj ogromnego znaczenia, z wyjątkiem tego, że podają kontekst. Aplikacja jest potężna, obsługuje rozsądną ilość danych i działa dobrze. Wraz ze wzrostem liczby korzystających z niego klientów i złożoności tworzonych przez nich projektów zaczynamy jednak napotykać na kilka problemów wydajnościowych. O ile wiem, źródłem tych problemów jest to, że dane reprezentują drzewo i ActiveRecord bardzo trudno jest deterministycznie wiedzieć, jakie dane powinien pobrać. Mój model ma wiele relacji, takich jak: Projekt has_many Nodes has_many GlobalConditions Węzeł has_one Rodzic has_many Nodes has_many WeightingFactors do NodeFactors has_many Tags do NodeTags GlobalCondition ma_wiele węzłów (odwołuje się przez identyfikator, zamiast replikować drzewo) WeightingFactor has_many Nodes do Node_Tagdes Node Factors przez Node_Tagdes Factors [tu wpisz opis obrazka](http://i.stack.imgur.com/4L3Rn.png) Cały system ma coś w regionie trzydziestu typów, które opcjonalnie zwisają z jednego lub wielu węzłów w drzewie. Moje pytanie brzmi: co mogę zrobić, aby szybciej odzyskać i skonstruować te dane? Pracując dużo z .Net, gdybym był tam w podobnej sytuacji, przyjrzałbym się zbudowaniu procedury składowanej, aby za jednym razem wyciągnąć wszystko z bazy danych, ale wolałbym zachować logikę w aplikacji i z czego Mogę powiedzieć, że trudno byłoby pobrać odpytywane dane i zbudować z nich obiekty ActiveRecord bez utraty ich integralności, co spowodowałoby więcej problemów niż rozwiązuje. Przyszło mi również do głowy, że mógłbym zebrać dane i wysłać część z nich asynchronicznie, co nie poprawiłoby wydajności, ale poprawiłoby postrzeganie wydajności przez użytkownika. Jednak jeśli sekcje danych pojawiły się po załadowaniu strony, może to również być dość mylące. Zastanawiam się, czy przydatną strategią byłoby uświadomienie wszystkiego o swoim projekcie nadrzędnym, aby można było wyciągnąć wszystkie rekordy dla tego projektu, a następnie zbudować relacje później, ale biorąc pod uwagę wszechobecność złożonych drzew w codziennym programowaniu życie Nie zdziwiłbym się, gdyby istniały jakieś lepsze wzorce projektowe lub standardowe podejścia do tego typu sytuacji, w których nie jestem dobrze zorientowany.


title: Czy istnieje standardowa wizualna wskazówka wskazująca obecność podpowiedzi (tekst najechania kursorem)?

text: Powszechnie uznaną wskazówką, że tekst jest klikalny, jest podkreślenie go, ustawienie innego koloru i zmiana kursora na symbol dłoni po najechaniu na niego. Mam sytuację, w której kolumna w raporcie może zawierać podpowiedź — tekst najechania kursorem, który pojawia się po umieszczeniu nad nim kursora. Próbuję wymyślić dla użytkownika oczywistą wskazówkę. Kiedy używam wskazówki podobnej do hiperłącza, użytkownicy instynktownie ją klikają i zastanawiają się, dlaczego nic się nie dzieje. Czy możesz odesłać mnie do jakichś rzeczywistych przykładów skutecznych wskazówek? Albo jaką wskazówkę z powodzeniem wykorzystałeś w przeszłości, aby to osiągnąć?


title: Po co uczyć się szesnastkowego?

text: Brałem udział w kilku zajęciach z programowania wprowadzającego, głównie po to, aby zmoczyć stopy w każdym rodzaju programowania, jaki znalazłem. Nic dziwnego, że prawie każda klasa przechodzi przez ten sam format: wstęp do sprzętu, wstęp do oprogramowania, a następnie przechodzisz do właściwego programowania. Chociaż zrozumienie, jak działa sprzęt i oprogramowanie, jest bardzo ważne, zawsze byłem zdezorientowany jednym tematem, który pojawiał się na każdym kursie. We wstępie do sekcji oprogramowania, który znalazłem, bez wątpienia zawsze kładli duży nacisk na umiejętność czytania w systemie binarnym, szesnastkowym, a czasem nawet ósemkowym. Rozumiem, że dobrze jest zrozumieć, czym są te rzeczy i jak zinterpretuje je komputer, ale nigdy nie musiałem umieć czytać i pisać żadnego z tych systemów liczbowych. Naprawdę, jedyny raz, kiedy widziałem coś innego niż baza 10, dotyczy kolorów w CSS, co jest jeszcze łatwiejsze, jeśli używasz czegoś takiego jak www.colorpicker.com systemy liczbowe w świecie programowania, czy to tylko stara tradycja umieszczania tych sekcji we wszystkich podręcznikach programowania? Czy ktoś ma dobry przykład tego, gdzie przeciętny programista faktycznie użyłby liczby ósemkowej?


title: Pamięć masowa po stronie klienta w różnych przeglądarkach

text: Zajmuję się tworzeniem aplikacji angularjs. Aplikacja musi działać w aktualnych FF, IE, Chrome oraz na iOS/Android przez Phonegap. Szukam rozwiązania do przechowywania danych w kliencie. Phonegap oferuje webowe API sql, które jest również obsługiwane przez Chrome. FF jednak go nie obsługuje, ponieważ jest porzucony przez w3c. Pliki cookie i localStorage nie działają niezawodnie w systemie iOS. Jak mogę przechowywać dane we wszystkich tych przeglądarkach?


title: VB.NET: Dwa poziomy dla trzech warstw lub trzy poziomy dla trzech warstw

text: W listopadzie zadałem na StackOverflow pytanie o rozdzielenie bardzo dużej aplikacji na warstwy i warstwy: http://stackoverflow.com/questions/13342626/net-divorcing-layers. Poprzedni deweloper zawierał logikę danych i logikę biznesową w warstwie logiki biznesowej Moje pytanie dotyczy elementu tiers. Badałem tutaj i doszedłem do wniosku, że lepiej jest rozdzielić warstwy na warstwy zawarte w osobnych bibliotekach DLL, tj. Warstwa prezentacji, warstwa logiki biznesowej i warstwa dostępu do danych mają oddzielne biblioteki DLL, jak opisano tutaj: http://stackoverflow.com/questions/13342626 /net-rozwód-warstwy. Wydaje się to być zgodne z tym, czego nauczyłem się na uniwersytecie. Jednak od tego czasu wszystkie przykłady, które znajduję w Internecie, sugerują posiadanie dwóch warstw (jednej dla warstwy prezentacji i jednej dla BLL i DAL). Czy istnieją jakieś konkretne kryteria, których deweloperzy używają, aby zdecydować, czy użyć trzech warstw? Używam ADO.NET i mam udostępnioną klasę SQL Helper w warstwie dostępu do danych. Klasa SQLHelper jest podobna do tej, ale dla VB.NET: http://www.sharpdeveloper.net/source/SqlHelper-Source-Code-cs.html


title: Znaczenie Unified w UML

text: UML i inne powiązane języki modelowania istnieją w większości dziedzin inżynierii systemów, aby reprezentować system, przepływ, relacje w ustrukturyzowany sposób. UML jest również jednym z języków modelowania stosowanych w informatyce podobnie jak w innych branżach do reprezentowania systemów w sposób zorientowany na obiekt za pomocą różnego rodzaju diagramów. Czy „Zunifikowany” UML ma tutaj specjalne (lub rzeczywiste) znaczenie?


title: Awaria SmartHeap w _shi_removeFromFreeList

text: Mamy wielowątkową aplikację w C++, która używa SmartHeap-10 na Linuksie. new, new[], delete i delete [] są przeciążone. występuje _niespójne_ występowanie SIGSEGV, tylko w delete[]. ślad pokazuje - #0 0x08b068bc w _shi_removeFromFreeList () #1 0x08b070d7 w _shi_freeVar () #2 0x08b086a7 w MemFreePtr () #3 0x081e91ea w operator delete(void*) () gdzie MemFreePtr () jest funkcją biblioteki. Jakieś wskazówki do przemyślenia?


title: Wyjaśnienie dotyczące sprzężenia parametrów obiektu, jak wspomniano w książce Code Complete

text: Czytałem na temat przełomowej i doskonałej książki _Code Complete_. Omawia różne rodzaje sprzężeń, które mogą wystąpić między modułami (które mogą być klasami i metodami): 1. _Proste-sprzęganie-parametrów-danych_ 2. _Proste-sprzęganie-obiektów_ 3. _Sprzęganie-obiektów-parametrów_ 4. _Semantyczne sprzęganie_ Książka musi powiedzieć to o _sprzęganiu obiekt-parametr_ : > Dwa moduły są sprzęgane ze sobą, jeśli `Obiekt1` > wymaga `Obiektu2`, aby przekazać mu `Obiekt3`. Ten rodzaj sprzężenia jest ściślejszy > niż „Obiekt1”, wymagający „Obiektu2”, aby przekazać tylko prymitywne typy danych >, ponieważ wymaga „Obiektu2”, aby wiedzieć o „Obiektie3”. Co autor próbuje tutaj mieć na myśli?


title: Jak liczyć trafienia w HTTP API bez ugrzęźnięcia w DB?

text: Tworzę API i chcę liczyć trafienia dla każdego użytkownika. Jest to API HTTP zaimplementowane w Pythonie. Mógłbym przechowywać licznik w bazie danych (używając PostGreSQL), ale będzie to bardzo zajęty interfejs API, więc nie chcę narzutu w bazie danych. Patrzę na Redis lub po prostu piszę logi tekstowe. Ale czy istnieje lepsze podejście? To usługa kafelków mapy, więc seria setek trafień na sekundę. Chcę raportować użytkownikowi miesięczne wykorzystanie, a nie łączną liczbę trafień.


title: O sztucznej inteligencji

text: Jestem zainteresowany rozpoczęciem kariery w sztucznej inteligencji. Czy ktoś może zasugerować, jak mógłbym się do tego przygotować? Jakie języki powinienem uczyć się, które byłyby najlepsze dla tego wyboru kariery?


title: Mało dużych bibliotek czy wiele małych bibliotek?

text: W ciągu kilku miesięcy stworzyłem mały framework do tworzenia gier, który obecnie włączam do wszystkich moich projektów. Framework zależy od bibliotek SFML, LUA, JSONcpp i innych. Zajmuje się audio, grafiką, sieciami, wątkami; ma kilka przydatnych narzędzi systemu plików i możliwości zawijania LUA. Ponadto ma wiele przydatnych „losowych” metod narzędziowych, takich jak pomocniki do analizowania ciągów i narzędzia matematyczne. Większość moich projektów wykorzystuje wszystkie te funkcje, ale nie wszystkie: * Mam automatyczny aktualizator, który korzysta tylko z systemu plików i funkcji sieciowych * Mam grę bez możliwości sieciowych * Mam projekt, który nie t potrzebuję JSONcpp * Mam projekt, który potrzebuje tylko tych narzędzi string/math Oznacza to, że muszę dołączyć biblioteki współdzielone SFML/LUA/JSON do każdego projektu, nawet jeśli nie są używane. W ten sposób projekty (nieskompresowane) mają minimum 10 MB, z czego większość jest niewykorzystana. Alternatywą byłoby podzielenie frameworka na wiele mniejszych bibliotek, co moim zdaniem byłoby o wiele bardziej efektywne i eleganckie, ale wiązałoby się również z koniecznością utrzymywania większej liczby plików DLL i projektów. Musiałbym podzielić swój framework na wiele mniejszych bibliotek: * Grafika * Threading * Networking * System plików * Mniejsze narzędzia * JSONcpp utils * LUA utils Czy to najlepsze rozwiązanie?


title: Dobry projekt dla delegatów w architekturze zorientowanej na usługi

text: Mój problem jest dość złożony do wyjaśnienia, a mój angielski nie jest doskonały, więc mam nadzieję, że zrozumiesz moje pytanie. W architekturze zorientowanej na usługi istnieją moduły, które są właścicielami danych używanych przez wszystkie inne aplikacje, a te moduły udostępniają dane za pośrednictwem zdalnego wywoływania metod i usług sieci Web. My, twórcy modułu, widzieliśmy, że kod, który wywołuje te moduły, powtarza się we wszystkich innych modułach, więc postanowiliśmy umieścić wspólny kod i stworzyć nowy moduł o nazwie _Common Delegates_. Obowiązki tego nowego modułu to: * przechowywanie informacji o nazwie hosta, porcie i nazwach JNDI i/lub usług sieciowych; * tworzenie instancji i korzystanie z lokalizatora usług; * tworzenie instancji i wywoływanie odgałęzień do zdalnych modułów. Ale metody ujawniane przez moduły _Common Delegates_ używają tych samych klas Request i Response, które są zdefiniowane w wywoływanych modułach. Oznacza to, że ten moduł nie działa jako warstwa odsprzęgająca. W niektórych przypadkach ten moduł powodował problemy związane z zależnościami kołowymi podczas kompilacji maven. Czy dobrze jest podzielić moduł _Common Delegates_ na wiele różnych artefaktów Maven, aby uniknąć zależności cyklicznych, jeden dla wywoływanego modułu? Na przykład, jeśli muszę zadzwonić przez RMI do modułu A, będę musiał użyć _delegata modułu A_. Czy dobrze jest, aby te delegacje były również warstwą rozdzielającą, co oznacza, że będą ujawniać własne ziarna żądań i odpowiedzi i przekształcać je w ziarna używane przez wywoływane metody?