title: Narzędzie typu Wiki do pisania specyfikacji i dokumentacji

text: Poszukuję wiki lub podobnego do wiki systemu do pisania i zarządzania specyfikacją i dokumentacją do projektu oprogramowania. Wiem, że dostępnych jest wiele implementacji wiki, ale czy są takie, które szczególnie dobrze nadają się do tego rodzaju zadań? Właściwie nie musi to być wiki, tylko system, który ułatwia pisanie i przeglądanie specyfikacji i dokumentacji oraz obsługuje śledzenie zmian.


title: Wybór odpowiednich zasobów

text: Kiedyś usłyszałem, że dobra książka o dowolnym języku programowania nie może być krótka, więc liczba stron jest pierwszym kryterium przy wyborze samouczka. To stwierdzenie było pół żartem, ale jest w nim trochę prawdy. Dostępne są dziesiątki i setki książek o najpopularniejszych językach programowania, frameworkach i technologiach i trudno wybrać jedną. Tak więc _stan fikcyjny_ jest pierwszym do sprawdzenia. Czy istnieją jakieś kryteria, które pomogą wybrać „właściwe” samouczki? Na co przede wszystkim (lub prawdopodobnie druga) należy zwrócić uwagę przy wyborze samouczka technicznego?


title: Jaka jest konieczność korzystania z funkcji i wyrażeń lambda w C++?

text: 1. Jaka jest konieczność używania funkcji i wyrażeń lambda w C++? 2. Czy możesz wyjaśnić lub pokazać na przykładach, jak używać funkcji i wyrażeń lambda? 3. Przejrzałem już powiązaną stronę Wikipedii, ale mam tylko kilka pomysłów na ten temat. Czy jest więcej zasobów, które mogę przeczytać? Czy mogę wiedzieć, które kompilatory w pełni obsługują tę funkcję lambda? Niektóre odpowiedzi, które znalazłem, to kompilatory VS10 i GCC5. Czy istnieją kompilatory online obsługujące tę funkcję?


title: kiedy i jakie korzyści może przynieść zastąpienie dotychczasowego przekazywania komunikatów JMS w projekcie?

text: Przeniosłem się do nowego projektu i jako jedyny "gość od oprogramowania" jestem mile widziany i oczekiwany, aby zasugerować ulepszenia projektowe do istniejącego kodu (kod właśnie wyszedł z fazy prototypu i wymaga rozszerzenia do ostatecznej wersji do wydania; plus dodanie funkcjonalności ) Kod zawiera wiele samodzielnych komponentów, które mają działać wspólnie, ale każdy z nich można zrestartować samodzielnie. Przekazują wiadomości między tymi demonami za pomocą kilku ręcznie napisanych klas, które implementują własny serwer z kolejką wiadomości. Działa wystarczająco dobrze, projekt przeszedł fazę prototypu i chociaż stabilność jest jednym z ich największych długoterminowych celów, nie jest notorycznie niestabilna; po prostu nie do końca na równi z ostatecznym wydaniem. Mimo to, za każdym razem, gdy widzę kod, myślę tylko o tym, że „zrobiłbym to przy użyciu JMS”. Gdybym cofnął się w czasie do dni ich wdrożenia, powiedziałbym im, aby zrobili to w JMS od samego początku; i mam wielką pokusę, by teraz na to nalegać. Jedynym problemem jest to, że nawet jeśli wymyślanie koła na nowo było wtedy nieoptymalne, to co mają teraz w większości działa i nie chciałbym wyrzucać dużych kawałków kodu. Nie mam wątpliwości, że gdybyśmy zachowali logikę przekazu, musiałbym poświęcić trochę czasu na pracę nad tym; Nie jestem pewien, czy jest w 100% niezawodny; są pewne pomniejsze wyścigi danych, które im uchodzą na sucho, ponieważ system powinien być w stanie odzyskać, nawet jeśli tak się stanie, niektóre „zapachy kodu”, które chcę zbadać dalej itp. Mimo to, zastąpienie całego systemu JMS byłoby ładne duży remont. Wymagają napisania dużej ilości nowego kodu, trochę debugowania w celu naprawienia problemów, które już napotkali i naprawili w swoim domowym systemie, i ostatecznie dodają zależność od JMS, gdy wydamy ten projekt, co może być niepożądane. Aby dać nieco lepsze wyobrażenie o systemie takim, jaki jest; jest to w większości bezpośredni potok z dwukierunkowymi wywołaniami asynchronicznymi. Każda oddzielna część systemu (zwana demonami) co najwyżej rozmawia z dwoma innymi demonami, tym przed nim w potoku i tym za nim. Każdy demon będzie przekazywał żądania dalej „w dół” potoku do architektury niskiego poziomu i będzie chciał otrzymać odpowiedź (ale nie blokuje oczekiwania na nią), ponadto asynchroniczne komunikaty muszą być w stanie propagować kopię zapasową systemu. Wiele osób może jednocześnie wysyłać prośby; ale nie oczekujemy absurdalnie dużej liczby wszystkich wiadomości. Każdy klient będzie generował wiadomości w małej serii, ale serie nie są duże i nie _nie sądzę_, że musi to przeskalować do absurdalnie dużej liczby klientów. Utrata wiadomości prawdopodobnie skutkowałaby niespójnym stanem; zagubione wiadomości są obecnie quasi wykrywane, ale tak naprawdę nie robi się nic, aby „wyczyścić” po ich wystąpieniu; ale system jest na tyle podstawowy, że niespójny stan prawdopodobnie nie zepsuje rzeczy tak okropnie, jak mogłyby to zrobić niektóre systemy (plus mamy własny mały zamknięty system, prawdopodobnie nie stracimy wiadomości). Obecny kod komunikacyjny jest ogólny, każdy demon może wysłać dowolną wiadomość do dowolnego innego; i po prostu ufamy, że każdy demon wysyła komunikaty tylko do właściwych demonów i że żaden demon nie wysyła komunikatu typu, który inny demon nie wie, jak to się dzieje (wszystkie komunikaty są wyliczane, ale niektóre są opłacalne tylko po wysłaniu do określonych demonów) pytanie brzmi, czy mogę uzasadnić przejście na JMS? Czułbym się bardziej komfortowo ze stabilnością, gdybym wiedział, że używam systemu korporacyjnego i myślę, że pozwoliłoby to niektórym z moich innych „zwariowanych, prawdopodobnie nigdy nie zająć się implementacją, ale byłoby tak fajnych” trochę łatwiej wdrożyć później. Jednak mamy mały zespół i i tak nie możemy zrobić wszystkiego, co chciałbym zrobić. Czy JMS zapewni wystarczające korzyści, aby uzasadnić koszty przepisania w większości działającego kodu (głównie działającego, ponieważ nie mamy oczywistego przykładu „to nie działa!”, wiem z przeglądu kodu, że są drobne problemy, kilka zapachów ' muszę zajrzeć dalej i zasadniczo, że jest to przyzwoity, ale nigdzie zbliżony poziom przedsiębiorstwa, ale jestem pewien, że muszę się zająć czymś, co nie zajęłoby tak długo, jak napisanie logiki JMS, a tym bardziej testowanie i debugowanie). Jak „złe” jest tworzenie zależności od zewnętrznego systemu, takiego jak JMS, kiedy obecnie możemy działać bez niego? Czy istnieją inne przydatne zalety JMS, których nie widzę (gwarantowane dostarczanie wiadomości wydaje mi się duże, ale nie jestem pewien, ile korzyści przyniesie to jeszcze ten projekt) Nawiasem mówiąc, jedna z naszych ewentualnych „długoterminowych, fajnie mieć, gdybyśmy się do tego zadali, celami byłoby zastąpienie obecnego użycia wywołań SQL do pobierania danych przez przechowywanie wszystkiego w pamięci. Jeśli będziemy przechowywać w pamięci, będziemy potrzebować bardzo niezawodnego przekazywania komunikatów, aby zachować spójność stanu między wieloma demonami, a teraz skłaniam się ku temu, aby czegoś takiego nigdy nie próbować bez czegoś takiego jak JMS. Stan nie zmieniałby się zbyt często, ale gdy się zmienia, musiałby pozostać spójny, martwić się wyścigiem danych itp. Możemy tego w ogóle nie robić, czy JMS znacznie ułatwiłby zachowanie spójności stanu i obsługę wyścigów danych, czy nadal będę postępować zgodnie z tą samą logiką w obu przypadkach? Czy są pewne rzeczy, które są szczególnie podatne na niepowodzenie w przypadku systemów szybkiego przekazywania wiadomości, których powinienem szukać wprost?


title: Jaki jest właściwy sposób pracy z grafikiem?

text: Ostatnio współpracowaliśmy z grafikiem (zaaranżowanym przez klienta) w celu dostarczenia skórki do zbudowanej przez nas aplikacji Django+Bootstrap. Projektant dostarczył serię statycznych obrazów nowego layoutu wraz z dokumentem opisującym niektóre atrybuty techniczne (rozmiary czcionek, kolory, kilka wymiarów itp.). Wdrożenie tego okazało się niezwykle czasochłonne. Chociaż cała witryna była w zasadzie stroną główną, stroną indeksową i pół tuzinem stron szczegółowych, spędziłem co najmniej 5 dni na wdrażaniu zmian CSS i HTML. Więc wyjdę na kończynę i nazwam to _Wrong Way_. Moje podstawowe podejście to: 1. Porównaj obraz statyczny z bieżącym renderowaniem i zauważ różnicę. 2. Zgadnij, jaka zmiana byłaby potrzebna w CSS/HTML 3. Dokonaj tej zmiany 4. Przejdź do kroku 1. Niektóre z konkretnych problemów nie rozumiałem, że projekt zawierał zmianę z 8 kolumn na 12, niektóre obrazy dostarczone w zły format (pliki .png mogą renderować się inaczej w różnych kombinacjach przeglądarki/platformy), kłopoty z cofaniem stylizacji Bootstrapa, zwykłe zapasy CSS w celu uzyskania idealnego renderowania pikseli itp. I od czasu do czasu musiałem przeorganizować szablony HTML, aby uzyskać określone zachowanie. Jaka jest właściwa droga?


title: Jak radzić sobie z usuwaniem rekordów z powiązanymi rekordami?

text: nie jest to pytanie techniczne, ale raczej o właściwą logikę obsługi usuwania z ograniczeniem klucza obcego. Przede wszystkim jestem bardzo nowy w programowaniu i manekinem inżynierii oprogramowania. Nadal jestem studentem pierwszego roku. W mojej aplikacji do ćwiczeń kaskadowałem rekord z relacją OneToMany z innymi rekordami. Innymi słowy, kiedy usunę rekord, Hibernate automatycznie usunie powiązane rekordy. Mój problem polega na tym, że mój nauczyciel powiedział mi, że kaskadowanie nie jest w porządku. Powiedział, że użytkownik musi najpierw usunąć powiązane rekordy, a nie powiedział mi szczegółów i jest trochę zły, kiedy nam powiedział. (Zawsze taki jest, chce zastraszyć swoich uczniów. Nie wiem, w czym ma problem, ale nie przeszkadza mi to. Po prostu chcę się uczyć). Proszę o radę, bo nie mogę się zdecydować. Do tej pory są to moje przemyślenia: 1) Po kliknięciu usuń, system poinformuje użytkownika, że istnieją powiązane rekordy i zostanie on usunięty, jeśli będzie kontynuował. Zapyta się wtedy, czy będzie kontynuował. 2) Po kliknięciu Usuń, system poinformuje użytkownika, że istnieją powiązane rekordy i może zostać przekierowany na stronę lub pojawi się wyskakujące okienko, które pokaże wszystkie powiązane rekordy i może ręcznie usunąć. 3) Nie zezwalaj użytkownikowi na usuwanie. Proszę o poradę....


title: Jak mogę przetestować moją witrynę inną niż Ruby za pomocą Rubiego?

text: Chciałbym zbudować kilka testów Rubiego, aby przetestować moją witrynę inną niż Ruby. Uwielbiam narzędzia do testowania Rubiego (webrat, kapibara itp.), ale wydają się być przeznaczone do testowania lokalnych witryn. Jak mogę używać tych wspaniałych narzędzi do testowania zewnętrznych witryn internetowych? Czy istnieje sposób na nadpisanie ich ustawień, aby nie klikały „http://localhost” za wszystko? A może działają głębiej i to, o co proszę, jest niemożliwe? MichaelT, myślę, że lepszym sposobem zadania pytania jest: Jak mogę stale testować witrynę inną niż Ruby (powiedzmy, .Net) za pomocą narzędzi Ruby? Chcę indeksować moją witrynę co 5 minut, wykonując takie czynności, jak logowanie, upewnianie się, że strona główna się ładuje, dodawanie rzeczy do koszyka i kasowanie. Jeśli którykolwiek z tych kroków nie powiedzie się lub trwa zbyt długo, chcę, aby system powiadomił mnie w jakiś sposób, abym mógł to naprawić. AKTUALIZACJA: JustinC ma dobry pomysł, najwyraźniej jest to zduplikowane pytanie i nie byłem w stanie znaleźć właściwego pytania do zadania. Myślę, że jedno z rozwiązań w twojej odpowiedzi zadziała i będę się bawił z nimi obydwoma. Dzięki! UWAGA: Wiem, że w sieci jest kilku dostawców SaaS, którzy przeprowadzają testy transakcji, ale w krótkiej ankiecie nie udało mi się znaleźć takiego, który A) działał z systemami innymi niż Windows, a B) mógł być skryptowany bez jakiegoś „ nagrywania” (który nie działał w moim systemie).


title: Jaka jest maksymalna liczba węzłów w drzewie równowagi o głębokości n?

text: Nigdzie nie mogłem znaleźć odpowiedzi, ale powiedzmy, że mamy B-drzewo z min = 1 i max = 2: Jaki jest wzór na obliczenie maksymalnej liczby węzłów w tym B-drzewie, jeśli głębokość wynosi powiedzmy 100? To pytanie zadano podczas testu w klasie, na który prawie wszyscy nie mieli pojęcia, jaka jest odpowiedź. Byłem kompletnie zakłopotany i zastanawiam się, czy ktoś wie, co to jest. Wielkie dzięki!


title: "elastyczne" funkcje w SQL Server 2012?

text: Szukam bardzo egzotycznej rzeczy i nie mam pojęcia, czy w ogóle istnieje w SQL Server 2012. (Proszę wybaczyć - moje doświadczenie jest w T-SQL, ale jeszcze nie ma drobnych szczegółów „programowania” SQL). , czy to 'to' to UDF czy SP czy coś innego - nie wiem. Wyzwaniem jest stworzenie czegoś tak elastycznego, aby zwracało tabelę z co najmniej jednym rekordem i listą pól określaną w czasie wykonywania. Chyba coś w rodzaju wirtualnego stołu, ale „lżejszego” i szybszego. Czy jest to wykonalne (i jak)? Jako przykład, powiedzmy, że mam dwa rekordy (identyfikatory to „1” i „2”), a ich wartości dla pola „nazwa” to „R1” i „R2”. Jakaś inna logika sprawia, że chcę połączyć je w rekord o identyfikatorze ''virtual1'' i dwóch nazwach pól ''F1'' i ''F2'' o wartości ''R1'' i ''R2'' - bardzo dużo się sprowadzało, ale to co chciałbym osiągnąć....


title: Jakie są kluczowe punkty Code Complete?

text: Słyszałem, że wiele osób wspomina Code Complete jako książkę, którą warto przeczytać. Niestety jestem tak zajęty, że nie mam czasu na jej przeczytanie, więc czy ktoś może mi powiedzieć, jakie są kluczowe punkty tej książki?


title: Jakie są kryteria oceny ORM for.NET?

text: Zajmuję się ewaluacją ORM-ów. Użyłem SubSonic, Linq-to-SQL i Entity Framework. Mam zespół programistów od juniorów po seniorów. Jakie są kryteria oceny ORM for.NET?


title: Rozwidlenie źródła SQLite

text: Jestem zainteresowany modyfikacją kodu źródłowego SQLite i udostępnieniem go jako eksperymentalny widelec publiczny (GitHub, Google Code itp.). Jednak kod źródłowy SQLite jest obecnie w domenie publicznej. Jeśli się rozwidlę, czy mogę zmienić licencję przy użyciu GNU GPL 3+? Chciałbym, aby moje zmiany w oryginalnym źródle były objęte licencją GNU GPL 3+. Używając tego Q jako przykładu, planuję zatwierdzić ostatnie oficjalne źródło do repozytorium git i zrobić notatkę w README o oryginalnym kodzie źródłowym. Zakładam, że spełni to tę klauzulę: „Dzieło musi być opatrzone wyraźnymi adnotacjami, że je zmodyfikowałeś, i podając odpowiednią datę”.


title: Dlaczego dane przesyłane z serwera mogą być w różnych formatach, a przesyłane na serwer może być tylko ciągiem?

text: Niedawno natknąłem się na błąd, chyba spowodowany moim niezrozumieniem działania HTTP, gdzie wysyłałem obiekt JSON na serwer, aby był przechowywany w danych sesji, a następnie odsyłany do klienta w późniejszym czasie. Kiedy wysyłałem dane na serwer, wszystkie moje wartości logiczne były ujęte w cudzysłowy, więc kiedy później zostały odesłane do klienta i przeanalizowane, wszystkie moje fałszywe wartości zostały ocenione jako prawdziwe - oczywiście dość nooby błąd, ale mnie to zajęło wieki do debugowania, ponieważ byłem głupi i widziałem „fałszywe” wartości w narzędziach programistycznych chrome i myślałem, że wszystko jest w porządku z odpowiedzią z serwera i szukałem problemu gdzie indziej. Zastanawiałem się więc, czy istnieje sposób na ustawienie nagłówka typu content podczas wysyłania danych do serwera, który spowodowałby zachowanie typów danych, tak jak w przypadku wysyłania odpowiedzi z serwera do klienta?


title: Tworzenie własnego oprogramowania na kompilatorze haskella

text: Czy używanie GHC jako podstawy i budowanie jakiejś komercyjnej aplikacji na jego szczycie jest całkowicie legalne? Czy istnieją takie przykłady, z którymi mogę wchodzić w interakcje?


title: Prawo autorskie/ogólne prawo publikowania oprogramowania online

text: Planuję wydać program, który stworzyłem, ale nie jestem pewien, jak zapewnić, że ludzie go nie ukradną. Cena wynosi 1 USD, ale nie sprzedaję go przez „sklep z aplikacjami” ani nic, więc muszę sam zajmować się sprawami prawnymi, a także budować stronę internetową. Jak sprawić, by odsprzedawanie kopii tego było nielegalne (czy jest to domyślnie?). A co z dodaniem praw autorskich do samego kodu? Często, kiedy kupuję oprogramowanie, a nawet gdy jest darmowe, muszę zaakceptować regulamin (oczywiście czytam _sarkazm_ ). Czy potrzebuję czegoś takiego? Nie wiem, czy jakieś inne informacje są istotne, ale na wszelki wypadek: * Jest napisany w Javie * Nie ma żadnych podobnych programów (w projektowaniu), które by mi się podobały. * Planuję używać Paypal do płatności, chociaż mogę zajrzeć do amazon lub zobaczyć koszt certyfikatu ssl u mojego hosta, aby sprawdzić, czy ma sens zrobienie tego samemu.


title: Co to jest składnia NPR?

text: co to jest składnia NPR, z tego, co zebrałem z internetu, doszedłem do wniosku, że NPR jest bazą danych o wydajności. Bazuje na bazie danych NPR Biorąc pod uwagę, że zebrane dane są poprawne, jak wyodrębnić dane z tej bazy danych, jakiego języka\narzędzi powinienem używać?


title: Zaawansowane artykuły Java

text: Ostatnio _naprawdę_ zaczynam programować. Zawsze to kochałem, ale teraz myślę tylko o tym. 24 godziny na dobę, 7 dni w tygodniu. A teraz, kiedy dużo pracuję i niedługo skończę studia i dostanę pracę na pełny etat, chcę udoskonalić te umiejętności. Ostatnio całe moje programowanie było w Javie i Javascript. Prawie opanowałem dziwactwa Javascript, ale wciąż jestem „nowy” w Javie. Napisałem dużo kodu, ale nie znam tajników. (Na przykład właśnie odkryłem wypróbowanie z oświadczeniem o zasobach.) TL;DR - Szukam artykułów, które poprawią moje umiejętności w Javie i naprawdę znam tajniki języka. Wszystko, od wskazówek dotyczących refaktoryzacji, przez zaawansowane przewodniki dotyczące bezpieczeństwa, po optymalizacje wydajności. Gdzie mogę się udać, aby zostać lepszym programistą Java. (Oprócz mojego IDE. Spędzam tam wystarczająco dużo czasu. :p )


title: Typowa instancja nowego obiektu - czy istnieje sposób na uniknięcie powtarzającej się składni?

text: Podczas nauki C# (i ogólniej pojęć OO w tym samym czasie) coś, co uważam za bardzo rozpraszające, jest zilustrowane następującym przykładem: ExampleClass exampleObject = new ExampleClass(); Martwiło mnie to pozornie zbędne powtórzenie. Pewne światło zaświeciło, gdy pojąłem różnicę między zadeklarowaniem zmiennej a przypisaniem jej wartości lub referencji (i że te procesy mogą być oddzielne). Jednak powyższe użycie jest niezwykle powszechne. Oczywiście nauczyłem się z tym żyć (i nie spodziewam się zmiany składni C#!), ale zastanawiałem się, czy istnieje lepszy sposób. Czy byłyby jakieś zalety: exampleObject = new ExampleClass(); Gdzie zmienna `exampleObject` jest silnie zapisana jako `ExampleClass`, gdy nie jest określona? **EDIT** [po wskazaniu przez komentatorów niejednoznaczności powyższego między deklaracją nowej a przypisaniem istniejącej zmiennej:] Alternatywna hipotetyczna skrócona składnia, która pozwala uniknąć niejednoznaczności deklaracji/przypisania, to: ExampleClass exampleObject = Nowy(); ...gdzie utworzyłoby to nową instancję klasy `ExampleClass`, której typ został określony w deklaracji zmiennej referencyjnej `exampleObject`. .. ale jestem pewien, że otwiera to inne problemy, o których nie pomyślałem! **/EDIT** Oczywiście, jeśli z jakiegoś powodu chcielibyśmy, aby `exampleObject` był typu `Object` lub - co jest bardziej powszechnym wymaganiem - aby był typu klasy nadrzędnej `ExampleClass`, określilibyśmy te przed nazwą zmiennej w standardowy sposób, ale czy jest jakaś wada mojego sugerowanego skrótu w tym bardzo powszechnym scenariuszu?


title: Modele, kontrolery i ponowne wykorzystanie kodu

text: Mam bloga, na którym użytkownicy mogą zamieszczać komentarze. Podczas tworzenia komentarza dzieją się różne rzeczy: * tworzenie obiektu komentarza, skojarzenia, utrwalanie * wysyłanie wiadomości e-mail z powiadomieniem do autora posta z uwzględnieniem jego preferencji * wysyłanie powiadomienia do moderatorów z uwzględnieniem ich preferencji * aktualizowanie pełnotekstowej bazy danych do wyszukiwania * ... mógłbym umieścić wszystko to w sterowniku, ale co jeśli chcę ponownie wykorzystać ten kod? np. Chciałbym udostępnić API do zamieszczania komentarzy. Mógłbym to również umieścić w modelu, ale zastanawiam się, czy nie stracę przez to elastyczności. I czy byłoby to możliwe do zrealizowania z warstwy modelowej? Co byś zrobił ?


title: Gdzie się udać po Adobe Flex?

text: Po tym poście http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html, a zwłaszcza w tym akapicie: > ... Czy firma Adobe zaleca używanie Flex lub HTML5 w naszej aplikacji dla przedsiębiorstw > rozwój? Wierzymy, że w dłuższej perspektywie HTML5 będzie najlepszą technologią do tworzenia aplikacji dla przedsiębiorstw. Wiemy również, że obecnie Flex ma > wyraźne korzyści dla projektów klientów na dużą skalę, zwykle związanych z > profilami aplikacji desktopowych. ... Nie popełnij błędu, dni Flexa się skończyły. W związku z tym wiele osób zadaje sobie pytanie: **Która technologia (które technologie) rozwiążą problemy ich i ich klientów w przyszłości bez elastyczności?** P.S.: Oczywiście poprawną odpowiedzią dla adobe byłoby „…Ponieważ wierzymy, że że HTML5 będzie najlepszą technologią do tworzenia aplikacji dla przedsiębiorstw, zapewnimy, że będzie on kierowany do przyszłych wersji frameworka Flex...”


title: Chcę opublikować aplikację na Androida, ale boję się patentów na oprogramowanie

text: Napisałem aplikację, która pomaga oszczędzać energię. Właściwie to bardzo proste. Sprawdzam aktualną lokalizację telefonu i dokonuję pewnych zmian w konfiguracji typu "dźwięk wyłączony, ciemny wyświetlacz, wifi wyłączone...", w zależności od lokalizacji użytkownika. Sony właśnie wypuściło nowy telefon z jedną z funkcji moich aplikacji (właściwie ma dodatkowy wpis w menu opcji). Nie mam pojęcia, czy jest patent na tę funkcję. Czy mogę nawet wydać tę aplikację bez ryzyka pozwania? Jestem bardzo zdezorientowany całą „patentową” sytuacją. Mam około 20 lat i nie umiem nawet napisać prostej aplikacji bez zainwestowania dużych pieniędzy w prawnika. Edycja: **Nie proszę o poradę prawną**. Chciałem otrzymać przegląd tego, jak deweloperzy widzą lub radzą sobie z całą sytuacją.


title: Jakie są wskazówki, jak uniknąć „Śmierci w programie PowerPoint” podczas prezentacji technicznej?

text: Jakie są wskazówki dotyczące utrzymania zainteresowania użytkowników prezentacją techniczną?


title: Szczegóły kryteriów akceptacji w historyjce użytkownika

text: Mam następujący przykład dla historyjki użytkownika z kryteriami akceptacji. Chciałbym wiedzieć, czy mogę opisać, jak należy zmienić GUI, aby obsługiwać nową funkcję. Ile szczegółów mogą mieć kryteria akceptacji? To jest mój przykład: **User Story:** Jako administrator forum będę łączył osoby w grupy, aby ludzie mogli się zorganizować. **Kryteria akceptacji:** 1. Tworzenie grupy osób odbywa się poniżej puli grup osób (pula grup osób jest obiektem dostępnym również wizualnie w obecnym systemie oprogramowania) 2. Tworzenie odbywa się za pomocą menu kontekstowego puli grup osób . Poniżej puli można tworzyć nowe grupy. 3. Grupa osób zawiera: ID grupy osób, opis, uwagę. Czy to może być trafne kryterium akceptacji? Ponieważ opisuję, jak można utworzyć nową grupę, otwierając menu kontekstowe.


title: Jak poprawnie używać Anorm

text: Więc jestem nowy w świecie scala-play. I właśnie rzuciłem okiem na Anorm i wydawało się to całkiem fajne. Ale zastanawiałem się, jaki jest właściwy sposób korzystania z niego? Myślę, że nie powinniśmy po prostu umieszczać pseudo-SQL wszędzie w naszym kodzie. Zajrzałem na stronę i jest tam samouczek wyjaśniający niektóre rzeczy, ale nie jest powiedziane, jak właściwie z niego korzystać. Czy ktoś może podzielić się swoimi 5 centami?


title: Jaka jest różnica między metodami dodawania i oferowania w PriorityQueue języka Java?

text: W java.util.PriorityQueue mamy metody `add(E e)` i `offer(E e)`. Obie metody są udokumentowane jako: > Wstawia określony element do tej kolejki priorytetowej. Jakie są różnice między tymi dwiema metodami?


title: Czy programiści niepełnosprawni fizycznie są narażeni na dyskryminację?

text: Pewnego dnia uderzyła mnie ta myśl: jak pracodawca patrzyłby na jednoręcznego programistę, z którym przeprowadza się rozmowę kwalifikacyjną? Nie zdziwiłbym się, gdyby osoba za biurkiem pomyślała: > Hm, ma tylko jedną rękę. Jedna ręka to połowa dwóch rąk, więc on/ona może pisać o połowę szybciej niż dwuręczny. Programiści wpisują kod, dzięki czemu > wyprodukują o połowę mniej kodu. Oznacza to, że jednoręczny programista jest o połowę mniej produktywny niż dwuręczny koder. Ale dobrzy programiści robią o wiele więcej niż tylko pisanie kodu: opracowują algorytmy i rozwiązania podstawowych problemów; robią przeglądy kodu i utrzymują wysoki standard; wykrywają i naprawiają błędy; i wiele więcej. Co najważniejsze, myślą! Jeśli chcesz mieć moc pisania, wynajmij orangutang! Ale może szczekam na nieistniejący problem. Może pracodawcy nie uważają, że niepełnosprawność fizyczna wpływa na ich umiejętności programowania. Skąd miałbym wiedzieć - nigdy nie spotkałem fizycznie niepełnosprawnego programisty, nie mówiąc już o jednoręcznym, żeby to potwierdzić. Jakie masz doświadczenie? Czy byłeś na przykład świadkiem, jak fizycznie niepełnosprawny programista nie został zatrudniony, ponieważ uważano, że nie będzie w stanie wykonać pracy z powodu niepełnosprawności?


title: Czy PhoneGap i RoboVm mogą działać harmonijnie?

text: Celem jest stworzenie aplikacji na iOS przy użyciu phonegap i java. Czy podczas pisania wtyczek phonegap, które wchodzą w interakcję z kodem natywnym (objective-c), byłoby możliwe, aby wszedł w interakcję z javą podczas korzystania z robovm?


title: Wymieniasz redaktorów i IDE w swoim CV?

text: > **Możliwy duplikat:** > Zatrudnianie programistów – wymienianie IDE jako wymogu? Widziałem to od czasu do czasu, że ludzie mają tendencję do wspominania redaktorów w swoim CV/CV i byłem winny robienia tego samego (chociaż z IDE). Czy jest to w jakiś sposób interesujące dla pracodawcy, czy może nawet uważane za coś naiwnego i negatywnego? EDYCJA: Znalazłem to pytanie, które wymienia kilka powodów, dla których być może umieszczenie IDE byłoby rozsądne. Może to pytanie powinno zostać zamknięte.


title: Jak poważnie programista powinien traktować nagrodę „gwiazdy”?

text: Pracuję w średniej wielkości korporacji programistycznej. w Indiach (ok. 6500 pracowników). Ta firma ma zasady dotyczące gwiazd; w zasadzie co kwartał wybierają osobę z każdej „klasy” i wręczają jej nagrodę (kilka bonów upominkowych i trofeum). Cóż, nie żebym była zazdrosna… ale kolega właśnie dostał nagrodę i czuję się pominięty. Wydaje mi się, że nie mogę pogodzić się z faktem, że tego nie zrozumiałem. Czy te nagrody rzeczywiście zapewniają jakąkolwiek korzyść w karierze programisty? Czy inni programiści bardziej cenią programistów, którzy zdobyli te nagrody?


title: Konwersja tekstu - JavaScript przed zapisaniem do db lub php podczas pobierania?

text: Krótko mówiąc, mam serwis społecznościowy, który jakiś czas temu napisałem jako dowód koncepcji, że mam umiejętności, aby to zrobić. Postanowiłem wrócić do tego i „ulepszyć” wiele złych praktyk kodowania, które stosowałem, kiedy pierwszy raz pisałem tę rzecz (3 lata temu). # Moja obecna sytuacja Użytkownicy mogą tworzyć posty. Podczas publikowania dozwolone są niektóre tagi w stylu bbcode, a także wiele emotikonów i tym podobnych. Obecnie biorę post i przechowuję go w bazie danych mySQL tak, jak został napisany. Pobierając post, używam wyrażeń php i regex, aby przekonwertować te tagi i emotikony na odpowiedni html. Na przykład mogę przekonwertować `:)` na `<img src='/images/smiley.gif' />`. Działa dobrze... ale potem zacząłem się zastanawiać (chyba zły pomysł). # Moje zaproponowane rozwiązanie Doszedłem do wniosku, że wykonywanie tej konwersji za każdym razem, gdy post jest pobierany z bazy danych, prawdopodobnie nie jest optymalne, ponieważ istnieje pewna ilość użycia procesora po stronie serwera do wykonania wszystkich podstawień wyrażeń regularnych. Podejście, które chciałbym przyjąć, to wykonanie konwersji z wyprzedzeniem i przechowywanie wersji html posta w bazie danych. W ten sposób, gdy odzyskam go 100 razy lub więcej, nie muszę kontynuować konwersji. Planuję przechowywać zarówno oryginalny tekst (do wykorzystania do edycji posta), jak i przekonwertowany tekst (do wyświetlenia posta). Poza zajmowaniem większej ilości miejsca w bazie danych (przechowuję teraz surową wersję tekstową, a także wersję HTML, czy są jakieś wady podejścia, o którym myślę? Czy to brzmi jak rozsądna optymalizacja Cały proces? teraz.Dlaczego w ogóle wpadłem na taki szalony pomysł?No cóż... w tej chwili przechowuję w bazie tekst w stylu bbcode, a przy tworzeniu strony uruchamiam funkcję zastępującą cały ten kod html. To, co **chcę** zrobić, to pokazać okno podglądu, podobne do witryny StackExchange, aby użytkownicy wchodząc w swoje posty mogli zobaczyć, jaki byłby sformatowany wynik.Zakładam, że muszę to zrobić za pośrednictwem JavaScript, więc zasadniczo powieliłem preg_replace, którego używam w php, z funkcjami replace w JavaScript, więc mogę wyświetlić podgląd jako t Użytkownik wprowadza swój tekst. Soooo... Teraz duplikuję kod zastępujący tekst, raz w php, raz w js. Pomyślałem, że może powinienem znaleźć sposób, aby nie musieć pisać kodu dwa razy... ale po pewnym namyśle może to mały kompromis, aby poradzić sobie z tym w ten sposób. Chciałem tylko podzielić się tym, co kręci się w mojej głowie, aby postawić mnie na tej ścieżce w pierwszej kolejności...


title: Jak znaleźć kogoś, kto zbuduje dla mnie aplikację?

text: Mam pomysł, który chciałbym rozwinąć jako aplikację. Nie mam jednak umiejętności programowania. - Czy ktoś może wskazać jakieś zasoby, w jaki sposób mogę zatrudnić renomowaną firmę do wykonania pracy za mnie. * Jakie są ważne czynniki, które powinienem wziąć pod uwagę przy wyborze? * Jakieś znaki ostrzegawcze lub czerwone flagi, o których powinienem pamiętać przy wyborze? * Czy ktoś może podać kosztorys? Nie mam dużego kapitału do zainwestowania. Czy są firmy, które zbudują i przyjmą jakiś procent aplikacji, jeśli uważają, że odniesie ona sukces? Dziękuję wszystkim za poświęcony czas.


title: Czy deweloperowi łatwo jest zostać analitykiem systemowym/biznesowym?

text: Rozwijam się już od jakiegoś czasu i jestem trochę znudzony drobnymi szczegółami tworzenia oprogramowania. Chciałbym być mniej techniczny i bardziej skoncentrowany na szerszym obrazie, na przykład przyjąć bardziej całościowe podejście systemowe z perspektywy biznesowej. Dlatego myślę, że mógłbym zostać analitykiem biznesowym. Ale jak dotąd nie potrafię określić, co robi analityk biznesowy, czego nie może zrobić programista. Wiem, że powinni wiedzieć więcej o regułach biznesowych i sposobie korzystania z systemu przez użytkownika, ale jako programista uważam, że i tak musisz to wiedzieć. Mam na myśli to, że trenowałem nowych BA, kiedy po raz pierwszy zaczęli używać systemu. Jestem też dobry w kontaktach z ludźmi i całkiem nieźle piszę. Więc cieszę się, że to robię, ale na pewno jest o wiele więcej w tej pracy, prawda? To po prostu dziwne, ponieważ licencjaci w mojej okolicy wydają się zarabiać znacznie więcej niż programiści – jakich umiejętności brakuje mi jako programistom, których potrzebuję jako BA?


title: Jak sobie radzisz z Javą pochodzącą z javascriptu?

text: Nauczyłem się trochę javascript jako mojego wprowadzenia do programowania, a teraz próbuję przejść do Javy i Pythona, a stamtąd do c++, c# itp. Zostałem przyłapany na zadaniach szkolnych, więc miałem bardzo małe szanse nauczyć się jeszcze czegokolwiek, ale czaiłem się wokół SO, szukając łatwych pytań Java, które mógłbym sobie zadać i próbując uczyć się z odpowiedzi. Widziałem jeden, który był dość interesujący. Było to zadanie domowe dotyczące znalezienia najbardziej wydajnej kolejności zadań do wykonania, zakładając, że każda praca trwała dwa dni i musiała być wykonana w kolejności sekwencyjnej. Mogłem to łatwo zrobić w javascript, ale mam problem z ustaleniem, jak w Javie. Z javascriptem po prostu zwróciłbym tablicę dwuwymiarową. Każdy element to tablica zawierająca zysk i dni do pracy. Ignorując, czy jest to głupi sposób zwracania danych w javascript, jaki jest właściwy sposób zwracania takich danych w Javie? Innymi słowy, tablica javascript, którą chciałbym zwrócić, wyglądałaby mniej więcej tak: [ ['1-3-5', 50], ['2-5-8', 90], ['2-4-7', 75 ] ] W Javie musiałbym na początek przekonwertować liczby całkowite na łańcuchy, a następnie znaleźć sposób na połączenie dwóch dwuwymiarowych tablic... Nie trzeba dodawać, że jest to zły sposób.


title: Zarządzanie wieloma projektami, które współdzielą kod + dostosowywanie

text: Niedawno zostałem głównym deweloperem projektu na moim pierwszym pozastażowym stanowisku programistycznym. Jestem tam od 8 miesięcy, odkąd skończyłam studia w grudniu. Projekt jest oferowaną przez nas usługą internetową, która służy do śledzenia zapasów, zapewniania funkcji raportowania i innych usług administracyjnych. Projekt został pierwotnie stworzony dla pojedynczego klienta, ale zaczął stać się projektem ogólnym, który można dostosować do każdego klienta. Tak więc, gdy każdy nowy klient loguje się, kopiujemy kod z najnowszego projektu i zaczynamy od nowa, dostosowując stronę dla nowego klienta. Dostosowanie może być dość dramatyczne w niektórych obszarach witryny lub w niektórych przypadkach jest potrzebne bardzo niewiele dostosowania. Problem, który widzę, polega na tym, że gdy wprowadzamy ulepszenia do podstawowych funkcji witryny, z których wszyscy klienci skorzystają, musielibyśmy skopiować tę nową funkcję do witryny każdego klienta. Wydaje mi się to bardzo kłopotliwe, nawet przy moim ograniczonym doświadczeniu i czuję, że musi być lepszy sposób. I szczerze mówiąc, zwykle w ogóle nie jest kopiowany. To samo dotyczy poprawek błędów. Będą przechodzić klient po kliencie, naprawiając te same błędy, które występują w każdej witrynie. Obecnie używamy Microsoft Team Foundation Server jako repozytorium kodu, więc nowy projekt dla każdego klienta jest tworzony i dodawany. Warto wspomnieć, że jest to mniejsza firma zatrudniająca około 40 pracowników. Z czego 9 to programiści. Czuję, że to może być szansa na udowodnienie swojej wartości i znalezienie lepszego rozwiązania. Jeśli ktoś tutaj miał doświadczenie w podobnej sytuacji, byłby mile widziany. **Aktualizacja:** Niektóre pytania, które zadałem, dodałem tutaj. P. Opisz, jak wygląda aplikacja. Czy to jest aplikacja internetowa? Czy sama aplikacja wygląda na trzy (lub więcej) warstwy? Czy kod to bałagan? O. Tak, jest to aplikacja internetowa, która ma dość obszerną bazę danych i jest regulowana przez FDA. Jest używany przez firmy farmaceutyczne do śledzenia próbek leków farmaceutycznych dystrybuowanych przez ich przedstawicieli. Kod nie jest okropny, ale zdecydowanie można go ulepszyć. To jest coś, co próbowałem zrobić. Został opracowany w ASP.Net i C#. P. Opowiedz mi o bazie danych. Czy istnieje wspólna baza danych, z którą współdziałają wszystkie wystąpienia aplikacji? A. Brak udostępnionej bazy danych, każdy klient ma własną instancję bazy danych. Kiedy nowy klient podpisuje się, pobieramy kopię najnowszej bazy danych klienta do wykorzystania. Baza danych jest napisana w dość ogólny sposób. Pewna logika biznesowa musi zostać podrasowana w zależności od klienta, ale zwykle nie jest ona zbyt rozbudowana i nie wymaga modyfikowania struktur tabel ani niczego w tym rodzaju. I wreszcie, większość dostosowań, które należy wykonać, obejmuje logikę biznesową. Tak naprawdę nie zmieniamy interfejsu użytkownika na klienta ani nic w tym stylu. Po prostu zdobądź kopię logo firmy i uderz ją w domyślne miejsce. Niektóre z bardziej rozległych zmian dotyczyły struktury firmy i dotyczyły bazy danych/BL. Przez większość czasu są to jednak bardziej drobne zmiany.


title: Czy uczciwe jest nazywanie bazy danych lub dokumentu „modelem”, tak jak w przypadku modelu/widoku/kontrolera?

text: Częścią mojej pracy jest praca nad aplikacjami biznesowymi opartymi na bazach danych po stronie klienta, takich jak Access czy FoxPro. Innym razem te lokalne LOBA mają bezpośredni dostęp do dokumentów, taki jak dokładne mapowanie jeden do jednego między obiektem logicznym a węzłem XML lub odniesienia do zakładek w dokumentach Word lub zakresach arkuszy kalkulacyjnych Excel. Chociaż kod jest tak niechlujny, jak można by się spodziewać, zwykle jest dość stabilny, a platformy, na których zbudowane są te aplikacje, mają jedną wspólną cechę: bezpośrednio i przejrzyście tłumaczą dane programu na fizyczną pamięć masową, z punktu widzenia programisty. Czy byłoby uczciwe odwoływanie się do bazy danych lub dokumentu w jednym z tych LOBA jako „Model”, gdy mowa o rozdzieleniu obaw Model/Widok/Kontroler? A może niewłaściwe byłoby wywołanie separacji UI i MVC logiki biznesowej, chyba że tworzymy obiekty pośrednie, które z kolei mapują do interfejsu użytkownika lub bazy danych?


title: Czy nadmierna inżynieria jest znakiem ostrzegawczym?

text: Dlatego przedstawiamy proste ćwiczenie z kodowania nowym kandydatom z pewnymi dobrze zdefiniowanymi wymaganiami. Czasami otrzymujemy rozwiązania, które tak naprawdę nie rozwiązują danego problemu, ale są nadmiernie zaprojektowane, aby rozwiązać postrzegany problem - często poza granicami ćwiczenia. Teraz moje pytanie brzmi, czy to znak ostrzegawczy? EDYCJA: Dość dużo dyskusji opiera się na błędnym teście - co jest słuszne. Jak opisałem w komentarzu, podstawowym założeniem testu jest pokazanie, w jaki sposób można w sensowny sposób odczytać dane z pliku (a zdziwiłbyś się różnorodnością podejść, które widzimy) i jak dopasować elementów przed obliczeniem opóźnienia między aktualizacjami. Teraz, aby to zadziałało, należy przyjąć pewne założenia dotyczące danych i szukamy tych założeń, a także wyraźnie stwierdzamy, że chcemy zobaczyć podejście, które przyjmujesz (w tym podejście OO itp.) Wszystko to w dwie godziny ramy czasowe. IMHO, kiedy przeprowadzałem wywiad, było to najbardziej kompletne ćwiczenie, z jakim się spotkałem. Konkretny scenariusz, nad którym się zastanawiam, polega na tym, że kandydat, zamiast czytać z pliku, zaakceptował dane wejściowe „sieci” w aplikacji wielowątkowej, która wyraźnie nie jest w zakresie.


title: Jak zaprojektować obsługę wielu języków dla grupy aplikacji?

text: Mam około 8 aplikacji internetowych (wszystkie oparte na ASP.NET) i chcę zaimplementować obsługę wielu języków dla nich wszystkich i mieć architekturę, którą mogę wykorzystać w nowych aplikacjach internetowych w przyszłości. Chciałbym również spróbować scentralizować część administratora (gdzie znajdują się wszystkie tłumaczenia tekstów i inne zasoby specyficzne dla języka), czy znasz jakieś narzędzie lub wzór architektoniczny, który może być przydatny w tym przypadku? Jedynym solidnym rozwiązaniem, o którym mogę pomyśleć, jest posiadanie aplikacji internetowej, która zarządza zasobami obsługi języka i wszystkimi innymi aplikacjami internetowymi, które łączą się z tą scentralizowaną aplikacją/usługą, ale obawiam się, że to rozwiązanie będzie miało wpływ na wydajność wszystkich aplikacji jeśli nie zostanie wdrożony we właściwy sposób. Byłbym bardzo wdzięczny za wszelkie sugestie.


title: Licencja GPL — sprzedaż i kradzież

text: Rozumiem, że gdy jakiekolwiek oprogramowanie na licencji GPL jest przekazywane innej osobie, odbiorca ma takie same prawa do oprogramowania, które ja robię. Rozumiem również, że dotyczy to „dzieła opartego na Programie”. Pytania: 1) Zauważyłem, że kilka firm sprzedaje wtyczki wordpress i wymaga zakupu nowej wtyczki dla każdej witryny. Wtyczki są oczywiście "dziełem opartym na Programie". Jak to robią z GPL? (tzn. chcę to zrobić i nie pozwolić, aby ktoś wziął moją wtyczkę, odwrócił się i sprzedał dla siebie. Pracuję z Drupalem, ale nie z Wordpressem). 2) Jeśli napiszę moduł do celów wewnętrznych, a pracownik zabierze go do domu i umieści w Internecie, czy jest to legalne? Mam na myśli to, że jeśli ktoś ukradnie mój kod, czy nadal ma takie same prawa do kodu, jak ja? 3) Jeśli używam modułów Drupala w branży oprogramowania jako usługi i pozwalam ludziom z nich korzystać (tj. hostowanych na moich serwerach), czy nadal muszę podawać im źródło? Źródła: http://www.gnu.org/licenses/quick-guide-gplv3.html


title: Czy dla wymaganych parametrów metody lepiej jest użyć polecenia attach lub IllegalArgumentException?

text: W Javie, co jest bardziej zalecane i dlaczego? Oba typy będą zgłaszać wyjątki, więc pod tym względem obsługa ich jest taka sama. „Asert” jest nieco krótsze, ale nie jestem pewien, jakie to ma znaczenie. public void doStuff(Object obj) { attach obj != null; ... } vs public void doStuff(Object obj) { if (obj == null) { throw new IllegalArgumentException("obiekt był pusty"); } ... }


title: Jak przeprowadzić 3-dniowe szkolenie z aktualnych technik, takich jak TDD i CI

text: Mam za zadanie przeprowadzić szkolenie dla przyszłego zespołu 20 programistów Java do nowego projektu. Właściciel projektu chce, abyśmy korzystali z najnowocześniejszych technik programistycznych, takich jak TDD i CI. Deweloperzy są wykwalifikowanymi programistami Java, ale mają niewielkie lub żadne doświadczenie z testowaniem jednostkowym i najprawdopodobniej tylko powierzchowne doświadczenie w refaktoryzacji. Więc ogólny kierownik projektu zaplanował 3-dniowe szkolenie dla wszystkich programistów i niektórych kierowników projektów, aby nauczyć się „nowych” technik, wprowadzić wszystkich we wspólny sposób myślenia i zacząć. Mam więc 3 dni (czyli 20 godzin) na ich nauczenie * ~~Software Craftsmanship~~ usunięte z powodu odpowiedzi * Testy jednostkowe * TDD/BDD * Refaktoryzacja * Statyczna analiza kodu * CI Oczywiście nie mogę ich wszystkiego nauczyć. Więc moje pytania brzmią: * **jak rozdysponować dostępny czas na te (i inne) tematy** , * na czym się skupić, a czego pominąć, * i jak najlepiej **przeprowadzić sesję szkoleniową w oparciu o te tematy** ?


title: Jak zrobić duży kawałek zakodowanych na sztywno pozycji menu w programowalny sposób?

text: Tak więc w aplikacji JavaScript mamy wiele powtarzających się „elementów menu” z określonymi „ustawieniami”: URL, nazwa, tytuł itp. (Te ustawienia czasami mogą być opcjonalne). Oto sedno menuItem i mamy ich mnóstwo. Klient wprowadza nowe zmiany co miesiąc lub dwa razy w miesiącu w tych elementach, albo element menu powinien mieć inną nazwę, albo adres URL jest nieaktualny lub cokolwiek innego. Zamiast za każdym razem zmieniać każdy adres URL, pomyślałem o: * Stworzeniu usługi internetowej z kompletnym CRUD na elementach menu, cokolwiek tam jest, trafia bezpośrednio przez JSON do aplikacji Cóż, chciałbym usłyszeć, czy masz kilka przemyśleń na temat „konfigurowania” aplikacji zamiast zakodowania aplikacji za każdym razem, gdy nadejdzie CR. Oto sedno menuItem i mamy ich mnóstwo. Wszelka pomoc będzie mile widziana


title: Dobre publiczne API do wykorzystania w dema i dokumentacji?

text: Stworzyłem bibliotekę narzędzi i udostępniłem ją jako open source na Github i chciałbym udokumentować narzędzia HTTP. Stworzyłem to wokół niektórych opracowanych przeze mnie aplikacji, ale żaden z używanych przeze mnie interfejsów API nie jest przeznaczony do użytku publicznego. Chcę użyć dobrze znanego publicznego API w mojej dokumentacji, aby próbki kodu działały i były naprawdę łatwe do zrozumienia dla użytkownika, ale nie pracuję z żadnym takim API, więc nie znam żadnego ... wyglądam o sugestie.


title: Jak przestać się pozłacać i po prostu zadowolić się wydawaniem działających zmian

text: Zespół programistów, którego jestem członkiem, przystosował się ostatnio do pracy zgodnie z praktykami Agile. To osobiście podkreśliło fakt, że nie mogę powstrzymać się od złocenia kodu (i dokumentacji) i konsekwentnie przekraczam pierwotne szacunki, kiedy mogłem dostarczyć rozwiązania spełniające wymagania znacznie wcześniej. Myślę, że moja etyka graniczy z obsesją, ponieważ jestem zbyt przywiązany do mojego kodu i rzadko jestem zadowolony z wydania, zanim zrefaktoryzuję go i udoskonalę do n-tego stopnia. Cieszę się, że zdałem sobie z tego sprawę, ale jak mogę zmienić swoje nastawienie/mentalność, aby zadowolić się swoimi postępami i zwolnić na czas?


title: Które z tych przykładów OOP demonstrują właściwe koncepcje OOP?

text: Nadal próbuję owinąć głowę wokół OOP. Oczywiście wszystkie poniższe przykłady działają, ale czy istnieje jeden (lub być może inny), który najlepiej ilustruje koncepcje OOP? /** * W poniższych przykładach klasa Image wysyła zapytanie do obrazu * i skojarzonych informacji z bazy danych, która jest * przekazywana do tworzenia instancji poprzez wstrzykiwanie zależności. */ $obraz = nowy obraz(nowy Db()); **Przykład 1:** if ($image->setImageId($id, $size)) { header('content-type: ' . $image->content_type); header('content-length: ' . $image->length); echo $image->getBytes(); } **Przykład 2:** if ($image_info = $image->getImageInfoByIdAndSize($id, $size)) { header('content-type: ' . $image_info->content_type); header('content-length: ' . $image_info->length); echo $image->getImageBytesByIdAndSize($id, $rozmiar); } **Przykład 3:** $image->setImageIdAndSize($id, $rozmiar); if ($image_info = $image->getImageInfo()) { header('content-type: ' . $image_info->content_type); header('content-length: ' . $image_info->length); echo $image->getImageBytes(); }


title: Zamierzam rzucić pracę z powodu naszej platformy: jak mogę zostawić produktywne wyjaśnienie tego?

text: Planuję odejść z mojej obecnej pracy, ponieważ jesteśmy zmuszeni do korzystania z Blub, z korporacyjnym frameworkiem Blub i serwerem internetowym na poziomie Blub, na przeciętnym współdzielonym hostingu. Moi współpracownicy są przyjaźni, a mój szef jest przeciętnym właścicielem małej firmy - chcę odejść całkowicie ze względów technicznych. Czuję, że przemoczenie w Blubie szkodzi mojemu mózgowi i czyni mnie gorszym programistą. Kiedy wychodzę, jak mam to wyjaśnić mojemu szefowi i współpracownikom? Jak mogę produktywnie sformułować moje skargi dotyczące Blub? Jakie ostrzeżenie mogę i powinienem zostawić mojemu następcy w dokumentacji? _(staram się upewnić, że spełniam standardy)_


title: Interesujesz się milionem rzeczy, masz milion celów: jak wybrać, na czym się skupić

text: Obecnie pracuję jako programista aplikacji internetowych przy użyciu technologii .NET. Chcę dowiedzieć się więcej o technologiach, z którymi pracuję, ale interesuje mnie RÓWNIEŻ milion innych rzeczy... (w tym programowanie systemów, sieci, tworzenie gier, tworzenie gier mobilnych, tematyka informatyczna, matematyka, udział w Open Projekt źródłowy, założenie własnej firmy itp.). Wydaje mi się, że nie mogę się skupić na jednej rzeczy, aby zostać „ekspertem”, kiedy jest tak wiele **innych** rzeczy do opanowania, które przyciągają moją uwagę, a w ciągu dnia jest tylko tyle godzin. .. Moje pytanie brzmi, jakie są dobre strategie, aby przestać odwlekać i efektywnie zarządzać czasem, aby jak najlepiej wykorzystać swój wolny czas i dowiedzieć się, co cię interesuje, nie tracąc z oczu innych priorytetów i pozwalając na inne zainteresowania przebić się przez pęknięcia? Czy też muszę się poświęcić, a jeśli tak, to jak określić priorytet tego, co należy poświęcić? Chciałbym usłyszeć, co macie do powiedzenia... Dzięki


title: Jak modelować/strukturyzować dane zawierające relacje nadrzędny/podrzędny dla tej samej jednostki?

text: Myślę, że to tylko moje myślenie jest tutaj wyłączone. Załóżmy, że mam dwie jednostki: pytanie i wybór. Pytanie może dotyczyć rodzica lub dziecka, lub obu (w odniesieniu do innych pytań). Wydaje się, że ten model jest zbyt prosty i jest nierozwiązanym podejściem „wielu do wielu”, ale myślę, że moje myślenie jest tutaj problemem, więc jest to bardziej pytanie koncepcyjne. Jaki jest najlepszy sposób na zaprojektowanie/modelowanie tego? Proszę wyjaśnić, dlaczego jest to relacja „wielu do wielu”, a także czy należy ją rozwiązać i dlaczego. Zobacz poniżej: ![idea](http://i.stack.imgur.com/7kUG9.png) Pytanie może dotyczyć rodzica, dziecka lub obu (potencjalnie wiele razy). Logika programowania uniemożliwiłaby dziecku bycie własnym rodzicem i vice versa. Wygląda na to, że brakuje mi tutaj jakiegoś rozwiązania łączącego, albo po prostu nie kręcę się wokół tego.


title: Jak sprawdzić, czy projekt Open Source jest wystarczająco dojrzały, aby można go było wykorzystać w produkcie?

text: Jest kilka projektów open source, które chciałbym włączyć do produktu w pracy. Nie mamy przepustowości ani wiedzy merytorycznej, aby zrobić to sami. Znalazłem je, wyszukując w Google. Nie znam żadnych „głównych graczy”, którzy korzystają z tych projektów, ale to, co widzę, dodaje mi otuchy. Teraz jestem trochę zaniepokojony poziomem ryzyka, na jakie jestem narażony, korzystając z projektu open source JoeBlow. Jeśli zajmuje mi to 95% drogi, być może pozostałe 5% jest łatwe do dodania lub naprawy. Może to nietrywialne. **Jak ludzie starają się ustalić, czy projekt open source jest wystarczająco dojrzały, aby można go było wykorzystać w produkcie?** To nie jest projekt hobbystyczny, więc stabilność, łatwość utrzymania itp. są najważniejsze.


title: Czy powinniśmy wymusić styl kodu w naszej dużej bazie kodu?

text: Przez „styl kodu” rozumiem 2 rzeczy: 1. Styl, np. // bad if(foo){ ... } // good if (foo) { ... } 2. Konwencje i idiomatyczność, gdzie dwa sposoby pisania tego samego są funkcjonalnie równoważne, ale jeden jest bardziej idiomatyczny. np. // bad if (fooLib.equals(a, b)) { ... } // good if (a == b) { ... } Myślę, że sensowne jest użycie autoformatera do automatycznego wymuszenia #1 . Więc moje pytanie dotyczy konkretnie punktu 2. Lubię rozbijać rzeczy na plusy i minusy, oto co do tej pory wymyśliłem: **Zalety:** * Używany przez wiele dużych baz kodu (np. Google, jQuery) * Pomaga trochę ułatwić pracę w nowych obszarach bazy kodu * Pomaga uczynić kod bardziej przenośnym (niekoniecznie jest to prawdą) * Styl kodu jest automatyczny, gdy się do niego przyzwyczaisz * Ułatwia szybkie odrzucanie pull requestów **Wady:** * Wymaga inżynierów i czas recenzentów kodu z dala od ważniejszych rzeczy (takich jak tworzenie funkcji) * Kod powinien być pisany od nowa co 2-3 lata, więc ważniejsze jest skupienie się na właściwej architekturze i osiągnięciu wysokiego pokrycia testami * Dodaje obciążenie kodu recenzje (np. „nie rób tego w ten sposób, podoba mi się ten inny sposób bardziej”) * Nawet jeśli używam stylu kodu od jakiegoś czasu, wciąż muszę się zatrzymać i pomyśleć o tym, jak napisać linijkę lepiej * Posiadanie wymuszonego, jednolitego stylu kodu utrudnia eksperymentowanie z potencjalnie lepszymi stylami * Utrzymanie a Przewodnik po stylu wymaga dużo wysiłku * Inżynierowie rzadko czytają przewodnik po stylu. Częściej jest to cytowane w przeglądach kodu. A jako pytanie drugorzędne: mamy też wiele mniejszych repozytoriów - czy należy tam egzekwować ten sam styl kodu?


title: Języki zaimplementowane w Pythonie?

text: AFAIK, Scala i Clojure są zaimplementowane w Javie, a Java w C. Przypuszczam, że wiele lub większość języków jest zaimplementowanych w C, na przykład Perl, Python i SQL. Nie wiem zbyt wiele o implementacji języka, ale może mógłbyś mi powiedzieć, dlaczego faworyzuję jeden język implementacji Java w stosunku do innego C? Czy są jakieś teorie o tym, że jeden język implementuje inny, czy też uciekamy się do teorii maszyny Turinga, w której język jest uważany za maszynę Turinga?


title: Klasy narzędzi w MVC — ASP.NET

text: Zastanawiałem się więc dzisiaj, gdzie umieściłbyś klasy narzędziowe w aplikacji ASP.NET MVC? Przez klasy użytkowe rozumiem klasy, które mogą być statyczne i służą tylko do wykonywania funkcji. Podobnie jak klasa do wysłania e-maila, który przyjmuje adres e-mail , temat i treść jako argumenty. Przypuszczam, że może utworzenie osobnego folderu i przestrzeni nazw byłoby wystarczająco dobre, ale chciałem uzyskać opinie wszystkich


title: Jak nazywa się wzorzec, gdy pobierający biorą odpowiedzialność za ustawienie?

text: Od lat intensywnie używam wzoru, ale nie wiem, jak się nazywa. Wygląda to tak.... class xzy { public function getFoo() { if ( undefined(this.foo)) { this.foo = new Foo; } return this.foo } public function setFoo(foo) { this.foo = foo; zwróć to; } public function getResult() { if ( undefined(this.result)) { this.result = this.getFoo().action(); } return this.result; } } Świetnie nadaje się do testowania, ale nadal pozwala na wysoki poziom enkapsulacji. Świetnie nadaje się również do suszenia kodu. Bardzo rzadko korzystam też z konstruktora. Jestem teraz w sytuacji, w której mógłbym naprawdę zrobić z określeniem wzorca w jakiejś dokumentacji, ale nie wiem, jak się to nazywa i trudno jest spróbować i Google.


title: Kto zajmuje się UX w projekcie scrumowym?

text: OK. Załóżmy, że pracujesz nad podręcznikowym projektem scrumowym. Masz Scrum Mastera współpracującego z właścicielem produktu. Następny sprint będzie wymagał ciężkiego interfejsu użytkownika – zanim twoi programiści zaczną budować ekrany, naprawdę chcesz mieć _jakiś_ pomysł, jak one będą wyglądać. Kto i kiedy zajmuje się wireframingiem? Właściciel produktu? Ktoś wspiera właściciela produktu? Mistrz scrum? Jeśli masz eksperta UX, czy współpracują z programistami _po_ rozpoczęciu sprintu, czy też dostarczają z góry makiety i makiety, które znajdują się obok twoich kart historii i ograniczeń, aby kierować i informować o pracy wykonywanej przez programistów? Jestem prawie pewien, że potrzebujemy pomocy UX, widzisz, ale naprawdę nie jestem pewien, gdzie ją zastosować... EDYCJA: Pozwól, że przeformułuję pytanie. Jak zapewnić spójne, wysokiej jakości wrażenia użytkownika w zwinnym projekcie?


title: Utrzymuj moje klasy i metody tak małe, jak to możliwe?

text: Kilka dni temu rozmawiałam z doktorantką z inżynierii oprogramowania iw pewnym momencie powiedziała mi: > Utrzymuj swoje zajęcia i metody jak najmniejsze I zastanawiam się, czy to zawsze jest dobra praktyka. Mam na myśli na przykład, czy warto mieć klasę z tylko 2 atrybutami? Na przykład w niektórych metodach do pracy potrzebuję par liczb całkowitych. Czy powinienem napisać klasę "PairOfIntgers"? Czy taki sposób myślenia może „złamać” kod na zbyt wiele kawałków?


title: Najlepsze praktyki dotyczące uwierzytelniania/zabezpieczeń aplikacji internetowych (dowolna platforma)

text: Dostałem dzisiaj pytanie od mojego przełożonego z pytaniem o to, co jest uważane za akceptowalny projekt uwierzytelniania aplikacji formularza internetowego, szczególnie w odniesieniu do natury wielu popularnych przeglądarek, aby "Zapamiętaj hasło" dla typowych pól logowania nazwy użytkownika hasła . Mam problem ze znalezieniem odpowiedzi, którą uważam za akceptowalną. W świetle wstydliwych luk bezpieczeństwa Sony naprawdę chcę być ostrożny, nawet jeśli dane przechowywane na ludziach są mniej wrażliwe. Nie przechowujemy numerów PESEL ani nawet adresów, ale przechowujemy numery telefonów, adresy e-mail i zdjęcie odwiedzającego. Obawia się, że użytkownik może po prostu Zapamiętać hasło na publicznym terminalu, a następnie ktoś może po prostu wskoczyć na ten terminal i zacząć przeglądać lub modyfikować dane w nieautoryzowany sposób. Jestem jednak prawie pewien, że przynajmniej na stacjach roboczych z systemem Windows przeglądarka nie „zapamiętuje hasła” na kontach użytkowników systemu Windows. Poza tym wdrażam jednokierunkowe szyfrowanie hasła po stronie serwera (przechowywanie zaszyfrowanego hasła w bazie danych, szyfrowanie hasła podanego przez użytkownika na serwerze, porównanie z zaszyfrowanym ciągiem z bazy danych). Nie ma natychmiastowych planów włączenia szyfrowania SSL, ale nadal jest to opcja. Czy w tym podejściu są jakieś poważne luki w zabezpieczeniach? Masz lepsze sugestie?


title: Zrozumienie koncepcji testów jednostkowych

text: Właśnie zacząłem pisać testy jednostkowe i nie jestem pewien, czy robię to „w odpowiedni sposób”. Czy mam testować każdą klasę „poprzez usunięcie zależności”? Innymi słowy, czy testowanie jednostkowe oznacza: „przetestuj część kodu z założeniem, że podane zależności do innych modułów są poprawne i przetestuj te zależności jako pojedyncze moduły później w innych klasach testów jednostkowych”? Na przykład piszę aplikację WinRT w sposób Model-View-ViewModel i mam klasę MainViewModel. Ta klasa ma zależność od `IDataRepository`, która jest wstrzykiwana do konstruktora. `MainViewModel` odpowiada za obsługę poleceń i łączenie modelu z widokiem. `MainViewModel` zawiera polecenia takie jak `CopyItems`, `LoadData` itp., które opierają się na implementacji `IDataRepository`. Czy powinienem przekazywać fałszywy (mock/sfałszować?) `IDataRepository` w `MainViewModel_Tests` i testować tylko czy dane są ładowane, kopiowane itp. podczas wykonywania polecenia? Czy jeden test powinien sprawdzać tylko to, co naprawdę robi klasa, a nie to, co robią zależności?


title: Czy to w porządku, jeśli nie znam C, ale jestem dobry w C++?

text: Mam pytanie, na które myślę, że najlepiej tutaj odpowiedzieć. Jestem całkiem niezły w `C++`, dobrze, bo dobrze mi się z tym językiem, przeczytałem `Accelerated C++` i wykonałem prawie wszystkie ćwiczenia. Mam jednak duży problem. Czy muszę się nauczyć „C”? Nigdy w życiu nie zrobiłem „C”. Właśnie zacząłem od `C++` kiedy zacząłem programować. Prawdopodobnie dlatego, że zawsze interesowało mnie, dlaczego wszyscy nazywają ten język tak złożonym. Teraz chociaż znam odpowiedź na to pytanie ;) Szczególnie interesuje mnie, czy mogę przetrwać bez znajomości "C" w dzisiejszym świecie. Na przykład, jeśli udzielę wywiadu w firmie, jeśli powiem im, że nie znam `C` \- czy uznają to za OK? Dwa języki, w których jestem dobry, to Python i C++. Pytam o to, bo słyszałem, że firmy pytają w wywiadach o struktury danych. Więc jeśli poproszą mnie o zaimplementowanie i jeśli zrobię to w C++, czy jest to akceptowalne? A ludzi, którzy mówią „jak możesz nie znać C, skoro jesteś w C++”, proszę nie odpowiadać :) Bez obrazy, ale nie rozumiem, dlaczego nauka C jest warunkiem koniecznym.


title: Czy mogę wydać komplementarne aplikacje Windows 8 i WP8 w odpowiednich sklepach?

text: Tworzę parę aplikacji, jedną do uruchamiania najlepiej na tabletach, ale także laptopach i komputerach PC, a drugą na WP8. Te aplikacje są komplementarne – posiadanie jednej bez drugiej jest bezużyteczne. Wiem, że jest sklep Windows i sklep Windows Phone, więc jeden zostanie wydany w jednym, a drugi w drugim. Moje pytanie brzmi: skoro te aplikacje same w sobie są bezużyteczne (chociaż w większości przypadków nie będą to te same osoby obsługujące obie aplikacje), czy będzie problem z oferowaniem tych bezużytecznych, gdy są używane same? IOW: Osoba A użyje aplikacji Windows 8 do interakcji z niektórymi osobami, które mają zainstalowaną aplikację WP8; osoby z aplikacją WP8 będą wchodzić w interakcję z osobą lub osobami, które mają zainstalowaną aplikację Windows 8. Martwię się, jeśli te aplikacje przejdą proces certyfikacji, w którym muszą być przydatne „samodzielne” – czy tak jest?


title: Pliki skryptów jako projekt zasobu lub rozwiązania?

text: Napisałem program dla innej grupy w mojej firmie, który używa skryptów. Skrypty te są wybierane przez użytkownika za pomocą dwóch list rozwijanych: kategorii i nazwy. Obecnie aplikacja używa pliku XML znajdującego się w udziale sieciowym, aby zapełnić listy rozwijane skryptami oraz powiązanymi z nimi kategoriami i tytułami. Plik XML zawiera również lokalizację ścieżki sieciowej, w której przechowywane są skrypty, a także tytuł, opis i szczegóły użytkowania. Próbuję zdecydować się na lepszy sposób zarządzania dostępem do skryptów, nie pozwalając użytkownikom końcowym na ich edycję za pomocą edytora tekstu. Przechodziłem między dodawaniem ich jako projektu w ramach rozwiązania lub dodawaniem ich jako referencji. Czy ktoś ma jakieś przemyślenia na temat jednej z tych opcji lub być może lepszego rozwiązania? EDYCJA: Myślę, że znalazłem rozwiązanie dla tego, co chcę zrobić. http://support.microsoft.com/kb/319292. Załaduję makra, a także plik XML, co powinno pozwolić mi osiągnąć to, co próbuję zrobić.


title: Z czym dokładnie łączy się mój program?

text: Słyszałem, że moje programy C++ "potrzebują połączenia z biblioteką C++/środowiskiem uruchomieniowym". Jednak środowisko uruchomieniowe C++ to tylko kompilator wstawiający kod operacji stosu do obrazu lub kod "boilerplate", jeśli chcesz. Środowisko wykonawcze C++ jest w zasadzie nierozerwalnie związane z samym programem, więc „łączenie środowiska wykonawczego” jest trochę nielogiczne. Łączenie biblioteki ma więcej sensu, zwłaszcza, że biblioteki C++ są niezależnymi obiektami, które w innym przypadku wymagałyby rozwiązania z samym programem źródłowym i relokacji. Zastanawiałem się więc, poza biblioteką C++, co jeszcze lub skąd dokładnie wiesz, z czym się łączysz? Na przykład, jeśli rzekomo łączę się z biblioteką C++, muszę również połączyć się z biblioteką specyficzną dla systemu operacyjnego i API, lub przynajmniej wrapperem, który będzie się tym bezpośrednio zajmował. Czyli linker w efekcie połączy główny plik programu z biblioteką C++ z OS-API/biblioteką? To nie brzmi szczególnie dobrze. Zasadniczo, linker połączy ze sobą wiele bibliotek (statycznie, w tym przykładzie, w czasie kompilacji/linkowania)?


title: Wykorzystanie obietnic, zamknięć i rekurencji w Node.js

text: Zastosowałem rekurencyjne wywołanie do zamknięcia w celu złagodzenia niektórych warunków wyścigowych, które dostaję (myślę, że tak jest). Chciałbym wiedzieć, czy (i dlaczego) jest to dobre rozwiązanie, czy złe. function getResources(aktywność, zasób) { var q = when.defer(), resourceQuery = buildSelectionQuery(zasób), timeoutCounter = 0, timeoutLimit = 100; function queryDatabase() { query.getResult({ query: resourceQuery }, function(err, result) { if (result.length === 0) { if (timeoutCounter > timeoutLimit) { q.reject(); } timeoutCounter++; / /kolejne wywołania queryDatabase(); } else { q.resolve(wynik); } }); } //początkowe wywołanie queryDatabase(); powrót q.obietnica; } * * * To, co staram się ustalić, to zasadność użycia rekurencji i domknięcia w tej kombinacji - czy jest to akceptowalny sposób podejścia do problemu powtórzenia wywołania do bazy danych? Bez powtórzenia wywołania wynik jest czasami pusty. To ciekawe, ponieważ ta funkcja jest wywoływana dopiero po zapisaniu rekordu. Jednak jest to w innym systemie, więc zakładam, że szybkość indeksowania jest wadliwa w MySQL - nie chcę wchodzić w ten aspekt systemu, ponieważ jestem zadowolony z tego, co mam - moje pytanie jest izolowane używając tego wzorca - rekurencyjne wywołanie zamknięcia jako sposób na powtórzenie wywołania.


title: pomiar obciążenia bazy danych

text: Czytałem o memcache i jedno z pytań, które mam na ten moment, dotyczy „pomiaru obciążenia bazy danych”. W tym samouczku mówią o „obciążeniu bazy danych 20”. Jak mogę zmierzyć obciążenie bazy danych aplikacji internetowej?


title: Wzorce obsługi zmian zestawów właściwości w C++

text: Mam kilka "Zestawów właściwości" (które są prostymi `strukturami` zawierającymi członków POD). Chciałbym zmodyfikować te zestawy właściwości (np. dodać nowy element członkowski) w czasie wykonywania, aby można było uzewnętrznić definicję zestawów właściwości, a sam kod mógł zostać ponownie użyty z wieloma wersjami/typami zestawów właściwości przy minimalnym /bez zmian. Na przykład zestaw właściwości może wyglądać tak: struct PropSetA { bool activeFlag; int przetwarzanieCount; /* odetnij kilka innych takich pól*/ }; Ale zamiast ustawiać jego definicję w kamieniu w czasie kompilacji, chciałbym utworzyć ją _dynamicznie_ w czasie wykonywania. Coś takiego: klasa PropSet propSetA; propSetA("aktywna flaga",prawda); //przeciążenie operatora wywołania funkcji propSetA("processingCount",0); A kod zależny od zestawów właściwości (być może w jakiejś innej bibliotece) użyje danych w następujący sposób: bool actvFlag = propSet["activeFlag"]; if(actvFlag == true) { //Do rzeczy } Bieżąca implementacja stojąca za tym wszystkim wygląda następująco: class PropValue { public: // Wariant podobny do klasy do przechowywania wielu typów danych // przeciążony operator konwersji. Np.: operator bool() { return (baseType == BOOLEAN) ? this->ToBoolean() : false; } // I metoda tworzenia PropValues różnych bazowych typów danych static FromBool(bool baseValue); }; class PropSet { public: // przeciążony[] operator dodawania właściwości void operator()(std::string propName, bool propVal) { propMap.insert(std::make_pair(propName, PropVal::FromBool(propVal))); } protected: // mapa właściwości std::map<std::string, PropValue> propMap; }; Ten problem jest podobny do tego pytania na SO i obecne podejście (opisane powyżej) opiera się na tej odpowiedzi. Ale jak wspomniano w SO, jest to bardziej hack niż właściwe rozwiązanie. Podstawowe problemy, które mam z tym podejściem, są następujące: * Rozszerzenie tego o obsługę nowych typów będzie wymagało znacznej zmiany kodu. Przy absolutnym minimum przeciążonych operatorów należy rozszerzyć, aby obsługiwały nowy typ. * Obsługa złożonych właściwości (np. `struct` zawierająca `struct`) jest trudna. * Obsługa mechanizmu referencyjnego (potrzebnego do optymalizacji bez powielania identycznych zestawów właściwości) jest trudna. Dotyczy to również ogólnie obsługi wskaźników i tablic wielowymiarowych. Czy są jakieś znane wzorce postępowania z tym scenariuszem? Zasadniczo szukam odpowiednika wzorca odwiedzającego, ale raczej rozszerzam właściwości `class` niż metody. **Edytuj:** Zmodyfikowano opis problemu dla przejrzystości i dodano trochę więcej kodu z bieżącej implementacji.


title: Czy do pobierania rekordów należy używać nowej metody/akcji? (Szyny)

text: Mam kontroler administratora, który jest właśnie używany do akcji indeksowania, która renderuje widok z najnowszymi aktualizacjami niektórych zasobów: class AdminController < ApplicationController before_action :authenticate_user! layout "admin" def index @events = Event.last(3) @foos = Foo.last(3) @bars = Bar.last(3) koniec koniec Teraz chcę utworzyć nowe wydarzenie. Mam więc kontroler zdarzeń: class EventsController < ApplicationController before_action :authenticate_user!, only: [:new,:create] layout "admin", only: [:new] def index @events = Event.all end def show end def new end def create end end Ale chcę wyświetlić listę wydarzeń, które zostały wcześniej dodane, w tym samym widoku, co formularz do tworzenia nowego wydarzenia. Czy mam pobrać wszystkie zdarzenia w nowej akcji? tj. def new @events = Event.all end A może jest lepsze podejście (być może bardziej spokojne)?


title: RFC: rozszerzenie wzorca projektowego MVC

text: Od lat używam w swoich aplikacjach wzorca MVC (z pełnym oddzieleniem kontrolera od jego widoków). Konieczność zaimplementowania kilkuset widoków reprezentujących nieco ponad 100 modeli dla potencjalnego kontraktu, tym razem chciałbym skrócić czas tworzenia moich zadań interfejsu użytkownika, a także dodać kilka dodatkowych funkcji (dekoracja widoku itp.). Jestem ciekaw, czy ktoś używał lub nawet wdrożył projekt taki jak ten, który wyjaśnię poniżej, a jeśli tak, jakie były twoje zalety i wady. Bez zbytniego wchodzenia w szczegóły, zamierzam po prostu rozwinąć przykład API, z którym żonglowałem w mojej głowie przez kilka dni, wraz z pewnymi wyjaśnieniami nieco później, więc oto: Model m = dao. pobierzInstancję(ID); // np.: prawdopodobnie pobierz go z bazy danych VTextField text = new VTextField(); // po prostu "rozszerza" komponenty Swing text.setModel(m); Deco dekoratora = DecoratorFactory.getInstance(); // specyficzne dla klienta text.setDecorator(deco); Kontroler c = ControllerFactory.getInstance(m); text.setController(c); Walidator v = ValidatorFactory.getInstance(m); // pobierz aktualny walidator c.setValidator(v, "validateText"); Tak więc w powyższym przykładzie pomysł jest taki, że będę miał tę samą aplikację dla kilku klientów. Chociaż każdy zaakceptował ogólną użyteczność, każdy chce mieć do tego swoje markowe L&F, niektóre oparte na regułach biznesowych (tj. pole tekstowe zawiera błędy, tło pola tekstowego powinno być w kolorze żółtym z czerwoną czcionką… inni chcą tekst w kolorze czarnym i tło żółte z czerwoną obwódką). Myślałem, że w każdym zdarzeniu (na skupieniu, skupieniu na utracie, wpisaniu klucza itp.) komponent w zasadzie wywoła kontroler. Z kolei kontroler (poprzez odbicie) wywołałby walidator. Jeśli walidacja zakończy się pomyślnie, kontroler po prostu aktualizuje model. Jeśli walidacja nie powiedzie się, kontroler nie aktualizuje modelu. Kontroler utrzymywałby stan tego wszystkiego (przeglądanie, edytowanie, edytowanie z błędami itp.) i delegowałby dekoratorowi, który dostosuje L&F każdego komponentu w oparciu o wymagania klienta. Pozwoliłoby to uniknąć mnóstwa bloków „jeśli / inaczej” bezpośrednio w jednym kontrolerze. Kontroler, walidator i dekorator wiedzą, którą konkretną instancję załadować na podstawie tego, który klient uruchamia aplikację. W ten sposób mogę oddzielić logikę dla każdego klienta i ponownie użyć, gdy jest to wspólne zachowanie. Dekorator nie zastępuje metod paintXXX(), ale po prostu wywołuje 'setBackground(c)', 'setBorder(b)' i wszystkie te metody ustawiające, które są już dostępne w komponentach Swing. Powodem, dla którego rozszerzam każdy komponent, jest po prostu dodanie metod 'setModel(m)' i 'setController(c)' wraz z dowolną logiką frameworka, której będę potrzebować. Gdy komponent jest w trybie „widoku”, zwykle nie maluje obramowania, tła i innych rzeczy (wygląda bardziej jak tradycyjna strona internetowa). Kiedy jest w trybie „edycji”, wygląda bardziej jak komponent Swing. Kiedy projektuję interfejs użytkownika aplikacji, zwykle trzymam się tylko kilku głównych komponentów (JTextField, JTextArea, JPanel itp.). Więc nie byłoby zbyt wiele pracy z tej strony. Nie zacząłem jeszcze wdrażać żadnej z tych rzeczy, więc jeśli znasz istniejące biblioteki, które robią coś podobnego, proszę je wskazać. Moimi jedynymi prawdziwymi problemami, jakie mam w tej chwili, jest to, jak radzić sobie z przypadkami, w których komponenty są od siebie zależne. Na przykład dwa pola tekstowe o wartości int. Jeśli jedno pole jest nieparzyste, to drugie również musi być nieparzyste, a jeśli jedno jest parzyste, to drugie musi być parzyste. Kiedy nastąpi walidacja, walidator będzie potrzebował wartości innego pola tekstowego, aby poprawnie zweryfikować ... więc nadal nie rozwiązałem tej części.


title: zmierza we właściwym kierunku? C++ i szablony klas

text: Pracuję nad jakimś dziedziczonym kodem w C++ i próbuję użyć 2 klas z szablonami, ponieważ potrzebuję 2 typów każdej klasy do działania na danych zmiennoprzecinkowych lub całkowitych (dokładnie podwójne v uint64_t). W dwóch klasach, które próbuję "stemplować"(?), jedna dziedziczy po drugiej. Definicje danych potrzebne dla obu są zdefiniowane w klasie „bardziej bazowej”, niektóre ze sparametryzowaną nazwą typu „T”, a niektóre z rozpoznanymi typami (np. „int”) w sekcji „protected:”. Odpowiedni plik implementacji (.cc) dla większej liczby klas bazowych kompiluje „ok”, ale plik implementacji dla klasy pochodnej (która jest również „szablonowa”) nie widzi danych klasy z pierwszego szablonu. Myślę, że plik klasy pochodnej chce zobaczyć rozwiązaną wersję definicji szablonu klasy bazowej, ale nie jestem pewien. Przykład: więcej pliku szablonu klasy bazowej (.h) zawiera: template < nazwa_typu T > class FieldMeter : public Meter { ... protected: int numfields_; F *pola_; F ogółem_, używany_, ostatni_używany_; ...}; 'less base' class (.h) file: template <typename T> class FieldMeterGraph : public FieldMeter <T> { ... } Problem pojawia się w pliku less-base class .cc podczas uzyskiwania dostępu do 'numfields_' lub 'fields_': fieldmetergraph .cc:51:24: error: 'numfields_' nie zostało zadeklarowane w tym zakresie if (!heightfield_ && numfields_>0 && graphNumCols_ >0) Gdy obie były prostymi klasami, nie otrzymałem powyższego, więc jest to przypadek, w którym dane deklarowane w bardziej podstawowej klasie „templatized” nie są dostępne w implementacji szablonu pochodnego. Moja terminologia może być nieco niewłaściwa – ale wydaje się, że powinno to być wykonalne – z „klasami końcowymi”, takimi jak „`cpumeter`”, które przekazywałyby stały typ danych (`uint64_t`) do szablonu `FieldMeterGraph` najwyższego poziomu. Kusi mnie, aby uciec się do przechowywania typu w czasie kompilacji i ręcznie wykonać rozdzielczość, w czasie wykonywania, tak jak w „C”, ale jak rozumiem, powinno to być rozwiązane przez kompilator (g ++ przy użyciu C + +11), w czasie kompilacji. Mam czwarty grób Stroustrupa jako punkt odniesienia, ale wydaje się, że jego przykłady są nieco zbyt ogólne, abym mógł poprawnie wyprowadzić możliwy do rozwiązania, konkretny przykład, który lubi g++ (chociaż komunikaty o błędach g++ wydają się być niezwykle pomocne i precyzyjne w porównaniu do tego, co normalnie dostaję w perlu...).... Jeśli ktoś wie, jak szybciej rozwiązać moją zagadkę, niż moje losowe próbowanie różnych rzeczy, które nie działają, byłoby to mile widziane! ;-) Dziękuję!


title: Powłoka aplikacji przy użyciu MEF

text: Projektuję powłokę aplikacji WPF przy użyciu MEF. Chciałbym, aby aplikacja uruchamiała „widok” po uruchomieniu. Chciałbym również, aby opcja posiadania innego dodatku miała atrybut „startup”, a następnie aplikacja ładowałaby ten jeden. Zrobiłem interfejs: [InheritedExport] public interface IStartupParams { /// Pobiera lub ustawia właściwość WindowMode. WindowMode WindowMode { get; ustawić; } /// Pobiera lub ustawia właściwość NavigateUri. string NavigateUri { get; ustawić; } /// Pobiera lub ustawia właściwość Priority. int Priority { get; ustawić; } } Aplikacja załaduje więc wiele konkretnych klas IStartupParams i wybierze tę o najwyższym priorytecie. Co sądzicie o tym projekcie? Jakieś pomysły?


title: Napisz testy do testów jednostkowych w TDD?

text: W odpowiedzi na inne pytanie zasugerowałem stworzenie wartości losowej dla danych wejściowych do konkretnej metody. Z mojego doświadczenia wynika, że przydaje się to do uczynienia testów bardziej czytelnymi i pozwala pominąć „trywialną fazę”, w której zakodujesz określone wyniki w metodzie. Oto kod testu jednostkowego wklejony z drugiej odpowiedzi, dla szybkiego odniesienia: [Test] public void FullHouseReturnsTrue() { var roll = AnyFullHouse(); Assert.That(sut.IsFullHouse(roll)); } [Test] public void StraightReturnsFalse() { var roll = AnyStraight(); Assert.That(sut.IsFullHouse(roll), Is.False); } Kilka komentarzy w odpowiedzi sugerowało, że ta strategia nie zadziała dobrze, ponieważ metoda pomocnicza również musiałaby zostać przetestowana. Z mojego doświadczenia wynika, że nigdy nie musiałem testować takich metod, ponieważ tworzenie odpowiedniego kodu produkcyjnego testuje również mój kod testowy. Czy `AnyStraight()` i `AnyFullHouse()` muszą mieć własne testy jednostkowe? Jeśli tak, to jak rozwiązać problem jajka i kurczaka, który się pojawił? **EDYTUJ** Czy nadal chciałbym tworzyć dedykowane testy jednostkowe dla algorytmu `AnyFullHouse`, jeśli wstawię metodę? [Test] public void FullHouseReturnsTrue() { var roll = listOfHardCodedFullHouseRolls[_random.Next(0, listOfHardCodedFullHouseRolls.Length)]; Assert.That(sut.IsFullHouse(roll)); }


title: Pojedynczy plik konfiguracyjny dla wielu usług WCF

text: Mamy scenariusz, w którym mamy wiele usług WCF hostowanych na tym samym serwerze łączącym się z tą samą bazą danych. Ale obecnie wszystkie mają osobne pliki web.config. Tak więc za każdym razem, gdy następuje jakaś zmiana lub nowe wdrożenie na innym serwerze, każdy plik web.config musi zostać zmieniony. Czy istnieje sposób, abyśmy mogli mieć pojedynczą konfigurację (czy to w pliku, czy w pamięci/db), która może być współdzielona przez wszystkie usługi na danym serwerze? Jeśli tak, co by to było? Jeśli nie, dlaczego nie? Jeśli nie powinniśmy iść na takie podejście, dlaczego nie? Obecnie mamy taką hierarchię (struktura folderów) * Usługi * Usługa1 * Usługa2 ... ... * UsługaN


title: Czy istnieje zasada inżynierii oprogramowania, która wiąże koszty ponownego użycia i testów regresji w systemie produkcyjnym?

text: Pracowałem nad dużym systemem transakcji finansowych dla banku, który zajmował się emeryturami i inwestycjami. Po 15 latach zmian funkcji koszt ręcznego testu regresji wzrósł do 200 000 USD na wydanie. (10 mln LOC, 10 mln USD transakcji dziennie). System ten łączy się również z 19 innymi systemami w firmie, przenoszącymi wiele danych. System ten został zaimplementowany w Javie. Obserwujemy jednak, że im więcej „ponownie” wykorzystujemy, tym bardziej wzrastają koszty testów regresji. (Powodem jest to, że musisz „przetestować dotykany kod” – a ponownie użyty/udostępniony kod wpływa na wiele miejsc, gdy jest dotykany. Więc pomimo „DRY – Do Not Repeat Yourself” – nie kopiuj i nie wklejaj kodu - obserwujemy zachętę finansową do kopiowania i wklejania kodu, co ma na celu obniżenie kosztów testów regresji, ponieważ nie chcemy modyfikować kodu, który mógłby zostać udostępniony, ponieważ spowoduje to duży wpływ na testy regresji ) Moje pytanie brzmi * *czy istnieje zasada inżynierii oprogramowania, która opisuje związek między kosztami ponownego użycia a kosztami testów regresji?** Powodem, dla którego zadałbym to pytanie, jest to, że prawdopodobnie rozłożenie systemu na mniejsze części do przetestowania przynosi korzyści finansowe. **Założenia:** 1. „Test regresji” oznacza „test akceptacyjny” – tj. inna grupa poświęcająca czas na napisanie nowych i ponowne wykorzystanie starych testów na system w imieniu firmy, w tym na konfigurację środowiska i danych. 2. Wiem, że odruchową reakcją na duży koszt testów regresji jest „więcej testów automatycznych”. To dobra zasada. W tym środowisku jest kilka wyzwań. (a) Testy automatyczne są mniej przydatne poza granicami systemu, chyba że system ten ma również wysoki zasięg testów automatycznych. (Sfera wpływu wyzwania). (b) Kulturowo trudno jest nadać rozpędu programistom czas lub inwestycje kapitałowe w wysoki zasięg testów automatycznych, gdy system jest już duży i złożony. (c) Koszt utrzymania testów automatycznych jest ukryty w projekcie, dzięki czemu można je łatwo odrzucić na poziomie projektu. (d) To tylko kulturowa rzeczywistość pracy w banku. (e) Pracuję nad rozwiązaniem tego problemu w inny sposób (dekompozycja).


title: W którym momencie należy uaktualnić programistów systemu Windows do najnowszej wersji systemu Windows?

text: W którym momencie powinienem rozpocząć uaktualnianie komputerów naszych programistów do nowszej wersji systemu Windows? Z doświadczenia wynika, że Microsoft zwykle ma epicką porażkę w przypadku każdego innego systemu operacyjnego. (Naprawdę nie próbuję rozpoczynać debaty na ten temat, niech tak będzie z moim odczuciem) tj. 2000 był stabilnym i użytecznym systemem operacyjnym, ale ja. nie radził sobie dobrze, xp był świetnym systemem operacyjnym z których wiele firm nadal korzysta, Vista nie radziła sobie dobrze (wiem, że powodem, dla którego ten nie działał dobrze, nie był tak naprawdę wina Microsoftu i że Vista i 7 to ta sama główna wersja), podczas gdy 7 wydaje się być doskonałym system operacyjny to będzie przez jakiś czas – trochę jak teraz PD. Tak czy inaczej, to sprawia, że niechętnie uaktualniam nasze komputery programistyczne do systemu Windows 8. * a. Nie chcę kosztować naszej firmy mnóstwa pieniędzy za system operacyjny który będzie używany tylko przez rok lub dwa. * b. Muszą też mieć podwójny system linuksowy, a przeczytałem, że Windows 8 i grub nie będą ze sobą dobrze współpracować. Chcę, aby nasi programiści rozwijali się w najnowszym środowisku i mieli wiodącą przewagę we wszystkich technologiach, z którymi się rozwijają. Chcę wyprzedzić – a przynajmniej wyprzedzić – krzywą technologiczną, ale chcę, żeby miało to sens biznesowy. Więc w szczególności, czy powinienem w tym momencie ulepszyć ich maszyny? Ogólnie rzecz biorąc, jakiego rachunku powinienem używać do podejmowania decyzji o tego rodzaju rzeczach? **edytuj** Piszą aplikacje desktopowe, jak również aplikacje ASP.NET. Ponadto upewniam się, że zawsze mają najnowszą wersję programu Visual Studio.


title: Czy to zły pomysł, aby zapytać ankietera, jaka jest największa siła i słabość jego zespołu programistycznego?

text: Zastanawiałem się, czy to było dobre pytanie, które można zadać potencjalnemu pracodawcy podczas rozmowy kwalifikacyjnej na stanowisko programisty: > Jaka jest największa siła i słabość Twojego zespołu deweloperskiego? Wszyscy dostajemy to pytanie podczas wywiadu, więc dlaczego nie zadać ich w zamian? Myślę, że to bardzo dobre pytanie, ponieważ moglibyśmy dowiedzieć się o zespole i jak ta siła lub słabość może na nas wpłynąć, ale nie chcę drażnić ankietera. Czy zadawanie tego pytania podczas rozmowy kwalifikacyjnej na stanowisko programisty ma jakieś wady?


title: OpenUp/Podstawy w praktyce

text: Mam pewne wątpliwości co do procesu OpenUp/Basic. Opisuje się go jako proces iteracyjny składający się z czterech faz: * inicjacja, * opracowanie, * konstrukcja i * przejście. Nie wiem, czy pojedyncza iteracja składa się ze wszystkich tych faz, czy też wykonujemy kilka iteracji w ramach jednej fazy, a następnie przechodzimy do następnej fazy. W drugim przypadku wydaje się to niepraktyczne, ale w pierwszym przypadku nie można określić wykonalności projektu. Czy jest ktoś, kto ma doświadczenie we wdrażaniu go w organizacji?


title: Jakie jest uzasadnienie sieci semantycznej?

text: Czy sieć semantyczna jest rozszerzoną formą relacyjnej bazy danych, aby dane nie były zbędne? Oznacza to, że powinien istnieć tylko jako byt, a wszystkie jego cechy określone przez inne byty powinny być połączone predykatami.


title: Budujesz czat w jedną stronę?

text: Wdrażam aplikację Windows 8 za pomocą C#, częścią tego jest One Way Chat. Będzie dla wielu użytkowników, takich jak nauczyciel i uczeń. Do każdego kursu chcemy używać czatu. Nauczyciele uczą różnych kursów, które obejmują wielu uczniów, a studenci studiują różne kursy, więc gdy nauczyciel i uczeń otworzą stronę kursu, znajdą stronę czatu specyficzną dla tego kursu. Jak mogę zbudować coś takiego?


title: Czy powinienem dokonać refaktoryzacji testów jednostkowych, gdy wyodrębnię klasę z testowanego systemu?

text: Napisałem te zajęcia, które robią kilka rzeczy (być może jest to naruszenie zasady pojedynczej odpowiedzialności). Teraz zdaję sobie sprawę, że jakaś inna część projektu potrzebuje _kawałka_ tej logiki, a sposób, w jaki zamierzam to ujawnić, to wyodrębnienie klasy z mojego oryginalnego testowanego systemu. Przewiduję, że będę w stanie to zrobić bez konieczności zmiany kodu testowego, ale kiedy skończę, możesz argumentować, że test nie jest już testem **jednostkowym**. Będzie testować oryginalną klasę _i_ klasę, którą wyodrębniłem. Innymi słowy, będę miał jeden przypadek testowy, ale testowane będą dwa systemy. Czy po skończeniu mam dokonać refaktoryzacji kodu testowego? IE: Utworzyć ExtractedClassTest i przenieść do niego wszystkie odpowiednie testy z OriginalClassTest? Wygląda na to, że może to być trochę ryzykowne: mogę stracić część pokrycia w procesie, może to nie być tak proste jak przeniesienie testu i w końcu przepiszę kod testowy, o którym wiem, że kiedyś działał, ale może już nie, itp. Z drugiej strony, jeśli pozostawię OriginalClassTest bez zmian, widzę, że jest to problem związany z konserwacją testów. Nieco mylące będzie odnalezienie, gdzie znajdują się testy ExtractedClass. Twoje pierwsze wrażenie będzie takie, że nie istnieje. Z biegiem czasu, przy wielu refaktoryzacjach kodu produkcyjnego, może to stać się poważnym problemem. Jestem nowy w TDD, więc chciałbym zasięgnąć porady eksperta. Dziękuję!


title: Nazewnictwo dla wyrażeń wieloznacznych i wyrażeń regularnych

text: Kiedy widzę termin _wzorzec_ w opisie składni, wnioskuję, że określono wyrażenie regularne. Czy istnieje osobny termin określający wyrażenie wieloznaczne? ^foo.*(bar|baz){3} <-- 'wyrażenie regularne' lub 'wzór' foo*bar.txt <--- 'wyrażenie wieloznaczne' czy ...? A może wyrażenie wieloznaczne jest po prostu innym typem wzorca, który wymaga informacji kontekstowych w celu rozróżnienia?


title: Najlepsza praktyka synchronizowania długich ścieżek z systemami plików, w których długość ścieżki jest ograniczona?

text: Napisałem narzędzie do synchronizacji do synchronizacji folderów/plików z Alfresco do Windows. PROBLEM: * W Alfresco, /files/can/have/very/very/very/long/filepaths/like/this.txt * Windows API uniemożliwia utworzenie ścieżki zawierającej więcej niż 260 znaków. Oprócz poinformowania użytkownika o problemie, jaka jest najlepsza praktyka w takim przypadku? 1. Skrócić nazwę pliku? 2. Pominąć plik? 3. Utworzyć coś w rodzaju "powrotu karetki folderu", specjalny folder, z którego ścieżka może kontynuować? 4. Coś jeszcze? Pliki muszą być w 100% użyteczne dla innych aplikacji. W razie potrzeby można zmodyfikować nazwy katalogów, mogę zachować mapowanie.


title: Wytyczne dotyczące przestrzeni nazw i nazw klas

text: Mam problemy z prawidłowym nazywaniem moich klas i usług, gdy zaangażowane są narzędzia i inne klasy pomocy. Jak ustrukturyzowałbyś następujące elementy: EventService.cs EventServiceUtils.cs EventServiceValidators.cs EventServiceCoordinator.cs itd... Mam wiele usług z takimi samymi potrzebami jak powyższa usługa. Jedną z myśli jest oddzielenie tego wszystkiego do odpowiedniej przestrzeni nazw, aby wyglądało to mniej więcej tak: Services.EventService.EventService.cs //(faktyczna usługa) Services.EventService.Validators.DateValidator.cs Services.EventService.Validators.ParticipantValidator .cs Services.EventService.Coordinators.ParticipantCoordinator.cs Services.EventService.ExtensionMethods.Extensions.cs i tak dalej. Każda przestrzeń nazw to oczywiście osobny folder. Ale nie wydaje się to w 100%, ponieważ prawdopodobnie w innych usługach jest więcej `DateValidators`, co może łatwo prowadzić do niechcianego odwołania. A także `Services.EventService.EventService.cs` zawiera nazwę klasy w przestrzeni nazw, co też nie jest dobre. Możesz użyć `Services.Event.EventService.cs`, ale oczywiście istnieje już encja o tej nazwie. To jest model domeny.


title: Korzystanie z OSS z licencją MIT z zależnościami GPL

text: Zostałem przydzielony do audytu zależności zewnętrznych dla jednego z produktów mojej firmy, aby upewnić się, że nie grozi nam naruszenie jakichkolwiek licencji. To prawdopodobnie praca dla prawnika, ale takie jest życie, gdy pracujesz w małej firmie. W mojej firmie używamy CS2J, projektu o otwartym kodzie źródłowym, do tłumaczenia C# na Javę. CS2J sam jest licencjonowany przez MIT i używamy go na dwa sposoby. Po pierwsze, używamy go jako wewnętrznego narzędzia do tłumaczenia naszego kodu źródłowego z jednego języka na inny. Po drugie, zawiera bibliotekę wsparcia (plik jar), do której odwołują się przetłumaczone pliki. Pakujemy tę bibliotekę wsparcia z naszą główną dystrybucją. Okazuje się, że biblioteka wsparcia zależy od JavaMail, produktu na licencji GPL. (Technicznie rzecz biorąc, istnieje inna opcja licencji, ale zawiera tę samą klauzulę copyleft.) Uważam, że kiedyś miała coś innego niż licencja GPL, ale tak już nie jest. Planowaliśmy dostarczyć bibliotekę wsparcia (CS2JSupport.jar) i JavaMail (mail.jar) jako jego zależność. Mam kilka pytań: 1. Czy CS2J może być licencjonowany na licencji MIT w pierwszej kolejności, jeśli jest dystrybuowany z zależnością GPL? 2. Jeśli wysyłamy mail.jar jako zależność naszej zależności, czy to oznacza, że copyleft dotyczy nas? A może dotyczy to tylko CS2J? 3. Mamy bliskie relacje z autorem CS2J. Gdybyśmy poprosili autora CS2J o udostępnienie pliku CS2JSupport.jar, który zawierał plik mail.jar _wewnątrz_ jara, to czy CS2JSupport jest po prostu dziełem pochodnym mail.jar? A skoro praca pochodna jest objęta licencją MIT, a nie licencją GPL, czy to zwolniłoby moją firmę z copyleft, nawet jeśli nie bylibyśmy zwolnieni w sytuacji opisanej w punkcie 2?


title: wzorzec projektowy, aby udostępnić MongoDB do REST api?

text: Konfigurujemy coś w rodzaju biblioteki dokumentów na Amazon AWS. Architektura to w zasadzie 1. serwer AMI z MongoDB 2. garść dokumentów PDF w elastycznej pamięci blokowej 3. trochę skryptów po stronie serwera, które ściągają i analizują metadane do MongoDB, i wreszcie 4. niektóre usługi front-end, które wysyłają zapytania do bazy danych . Ostatecznym celem jest strona internetowa, która ułatwia wyszukiwanie i odkrywanie biblioteki PDF (np. pokaż mi wszystkie pliki PDF napisane przez X). Po pierwsze, zastanawiam się, czy jest to rozsądny sposób postępowania. (Czy to dobry wzorzec projektowy?) Po drugie, mamy trudności z ujawnieniem MongoDB przez REST API. Możemy uzyskać dostęp do REST za pośrednictwem paska adresu przeglądarki, ale utknęliśmy podczas wysyłania żądań GET w javascript po stronie klienta z powodu żądań międzyserwerowych. Każda pomoc jest mile widziana.


title: Czy wykonywanie Wodospadu co 2 tygodnie jest uważane za programowanie zwinne?

text: Zastanawiałem się, czy nadal można zaklasyfikować podejście programistyczne typu Waterfall, w którym długość cyklu wodospadu wynosi 1-2 tygodnie, jako Agile.


title: Jak wybrać odpowiedni system licencjonowania/zaciemniania dla platformy .NET?

text: Widziałem kiedyś, jak ktoś sugerował .NET Reactor jako dobry zaciemniacz. Poszedłem na ich stronę internetową, aby to sprawdzić i zobaczyłem, że mają produkt o nazwie IntelliLock, który jest reklamowany jako dość solidny system licencjonowania, który ma wbudowaną ochronę/zaciemnianie kodu. Powiedziawszy to, próbowałem się z nimi skontaktować i zadać im kilka pytań dotyczące produktu, ale nie otrzymałem żadnej odpowiedzi. To dla mnie rodzaj czerwonej flagi. Wydaje się jednak, że istnieje pewna baza użytkowników tego produktu, którzy są zadowoleni. Jakich systemów licencjonowania .NET z ochroną/zaciemnianiem kodu .NET używasz? Jakie są jego zalety i wady, z którymi się spotkałeś? Czy są rzeczy, których powinienem szukać lub unikać podczas oceny tych systemów?


title: Różnica między „\n” i „\r\n”

text: Tak tak, zdaję sobie sprawę, że `'\n'` zapisuje znak nowej linii w systemie UNIX, podczas gdy dla Windows istnieje dwuznakowa sekwencja: `'\r\n'`. Wszystko to jest bardzo ładne w teorii, ale moje pytanie brzmi **_dlaczego_**? Dlaczego znak powrotu karetki jest dodatkowy w systemie Windows? Jeśli UNIX może to zrobić w `\n`, dlaczego Windows potrzebuje do tego dwóch znaków? Czytam książkę Davida Beazleya o Pythonie i on mówi: > Na przykład w systemie Windows napisanie znaku '\n' faktycznie wyprowadza > dwuznakową sekwencję '\r\n' (a podczas odczytywania pliku z powrotem, '\r \n' jest > tłumaczone z powrotem na pojedynczy znak '\n'). Dlaczego dodatkowy wysiłek? Będę szczery. Znam różnicę od dawna, ale nigdy nie zadałem sobie trudu, aby zapytać DLACZEGO. Mam nadzieję, że dziś odpowiem. Dziękuję za Twój czas.


title: Czym różni się reaktywne programowanie logiczne od programowania funkcjonalnego?

text: Jako model programowania reaktywnego doskonale nadaje się do propagacji zmian wymaganej do przetwarzania transakcji, to znaczy, gdy serwer otrzymuje żądania zmiany (wstawienia, aktualizacji lub usunięcia). Kluczowe podejście zapożycza się w dużej mierze z projektowania opartego na domenie, aby zapewnić deklaratywną logikę domeny. Ale czym różni się od podejścia do programowania funkcyjnego?


title: Zarabianie dodatkowej gotówki jako programista

text: Pracuję jako programista na pełen etat i mam całkiem dobrze płatną pracę w kraju, w którym mieszkam, ale w tej chwili przydałoby mi się trochę dodatkowej gotówki (żona narzekająca na nową kuchnię itp.). W wolnym czasie byłabym zainteresowana małymi projektami. Nie interesuje mnie pisanie złośliwego oprogramowania ani szybkie wzbogacanie się. Sprawdziłem kilka witryn niezależnych programistów, ale wszystkie projekty wydają się być bardzo słabo opłacane lub ludzie, którzy chcą tworzyć złośliwe oprogramowanie (lub jedno i drugie). Czy są jakieś dobre strony dla freelancerów, które mogłem przegapić? Czy istnieją inne sposoby na znalezienie małych projektów niezależnych?


title: Co to jest plik kompilacji ant i plik kompilacji maven?

text: Czy ktoś może mi powiedzieć prostymi słowami, czym dokładnie jest plik budowania mrówek i plik budowania maven?


title: Celowe podnoszenie wyjątków w celu użycia catch

text: W przypadku typowego `if...else` z obsługą wyjątków, czy coś takiego jak poniższy przykład jest zalecaną praktyką w celu uniknięcia duplikacji kodu? try { if (GetDataFromServer()) { return ProcessData(); } else { wyrzuć nowy wyjątek(); } catch (wyjątek ex) { return null; } zamiast... spróbuj { if (GetDataFromServer()) { ProcessData(); } else { return null; } } catch(wyjątek ex) { return null; } Wiem, że jest niewielki spadek wydajności, ale zastanawiam się, czy jest to uważane za dopuszczalną praktykę. Obecnie robię to drugą metodą - szczególnie w przypadkach, w których muszę inaczej obsługiwać określone wyjątki - ale zastanawiałem się, czy pierwsza metoda jest odpowiednia dla prostych przypadków.


title: Jaki jest prawidłowy sposób implementacji Auth/ACL w MVC?

text: Zastanawiam się nad stworzeniem poprawnie zaprojektowanego systemu MVC Auth/ACL. Myślę, że chcę, aby uwierzytelnianie użytkownika (i obsługa sesji) było oddzielone od systemu ACL. (Nie wiem dlaczego, ale z tego, co przeczytałem, wydaje się to dobrym pomysłem.) Co MVC ma wspólnego z tym pytaniem, które zadajesz? Ponieważ chcę, aby aplikacja była dobrze zintegrowana z moim ACL. Przykład kontrolera (CodeIgniter): <?php class forums extends MX_Controller { $allowed = array('users', 'admin'); $potrzebne_login = prawda; function __construct() { //przykład sprawdzania czy jesteś zalogowany. if($this->auth->logged_in() && $this->auth->is_admin()) { echo "jesteś zalogowany!"; } } public function add_topic() { if($this->auth->allowed('add_topic') { //niektóre dodaj temat rzeczy. } else { echo 'nie wolno dodawać tematu'; } } } ?> ## # Moje myśli `$this->auth` byłyby automatycznie ładowane w systemie.Chciałbym sprawdzić tablicę `$allowed` z użytkownikiem aktualnie (nie)zalogowanym i odpowiednio zareagować.Czy to dobry sposób na robienie rzeczy? Nie widziałem dużo literatury na temat integracji MVC i Auth.Chcę, aby rzeczy były tak proste, jak to możliwe.


title: Czym jest wywiad „Professional Fit”?

text: Przeszedłem więc wstępną rozmowę kwalifikacyjną na kampusie szkolnym i rozmowę na miejscu (jeden dzień, głównie wywiady techniczne) z tą firmą, a tydzień później powiedziano mi, że będzie dodatkowa rozmowa telefoniczna z jednym z ich zatrudnianie menedżerów, zwany „Professional Fit Interview”, który nie mam pojęcia, co to jest. Zanim pomyślałem, że wywiad na miejscu będzie ostatnią rundą, przynajmniej takie wrażenie od nich odniosłem. Czym więc może być ten „rozmowa o dopasowaniu zawodowców”? Jak mam się do tego przygotować? Wielkie dzięki! Kontynuacja: Dziękuję wszystkim za odpowiedzi. Jak wszyscy wspominali, jest to wywiad typu HR. Ankieter przedstawił trochę zespół, a następnie zapytał, czy mam jakieś pytania, i zadał mi kilka pytań, takich jak „gdzie widzisz siebie za 2 lata”. W każdym razie e-mail z odrzuceniem przyszedł około tydzień później.


title: Czy muszę kupować indywidualne subskrypcje dla programistów ios dla członków mojego zespołu, jeśli mam subskrypcję firmową?

text: Domyślam się, że muszę, a jeśli to zrobię, kupię je podczas sprawdzania licencji firmy.


title: Czy jest jakiś producent instalatora Windows z przyzwoitymi możliwościami tworzenia skryptów?

text: Muszę wykonać złożone przetwarzanie zależności podczas instalacji naszego rozwiązania, zainstalować kilka powiązanych programów z ich własnych instalatorów, a także prawdopodobnie przeprowadzić kilka prostych testów, aby określić wydajność maszyny, aby dobrać odpowiednie parametry dla naszej aplikacji. Myślę, że coś takiego jak Lua świetnie nadałoby się do tego zadania, ale wszystkie skrypty w instalatorach, które do tej pory znalazłem, przypominają skrypt Pascala Inno Setup, który pozostawia wiele do życzenia, a język skryptowy NSIS nie istnieje. Chyba brakuje mi tutaj czegoś naprawdę oczywistego, ponieważ moje zadanie nie jest wyjątkowe i prawdopodobnie zostało już wcześniej rozwiązane.


title: Udostępnianie tylko części kodu za pomocą git

text: **Sytuacja** Mam kod, który ma funkcje X i Y. Bob potrzebuje dostępu do kodu, aby móc dalej rozwijać funkcję X. Normalnie pozwoliłbym Bobowi sklonować kod, ale problem polega na tym, że funkcja Y jest poufna, więc nie jest to możliwe. Bob nie musi mieć możliwości przeglądania kodu funkcji Y, aby dalej rozwijać funkcję X. Jeśli stworzę nową gałąź do udostępnienia Bobowi i usunę funkcję Y z kodu, nadal będzie ona widoczna w historii zmian. Myślę więc, że jedyną opcją jest: 1. Utwórz nową gałąź i usuń funkcję Y. 2. Utwórz zupełnie nowe repozytorium do udostępnienia Bobowi 3. Skopiuj pliki (gdy nowa gałąź bez Y jest wyrejestrowana) do nowego magazyn. 4. Daj Bobowi dostęp do tego nowego repozytorium. 5. Po tym, jak Bob rozwinie funkcję X dalej, wybierz odpowiednie wiersze i pliki i wstaw je do mojego wzorca. (bolesne) **Pytanie** Czy istnieje lepszy sposób na to?


title: MVC - udostępnianie wielu modeli

text: Buduję aplikację desktopową java, w której próbuję zaimplementować MVC. Interfejs GUI ma wiele widoków (pomyśl o wyskakujących oknach) z głównego widoku. Każdy widok ma skojarzony model, z którego otrzymuje aktualizacje. Wpadam w scenariusze, w których **dwa widoki** muszą uzyskać dostęp do określonego pola danych z jednego **modelu**. Wymaga to, aby jeden model „wiedział” o drugim. Jakie mam możliwości rozwiązania tego problemu? Pole danych to tabela wypełniana w jednym z widoków, a następnie dostępna w głównym widoku powitalnym. Próbowałem przekazać drugi model do konstruktora pierwszego z kontrolera, jednak wydaje mi się, że jest to niechlujne. Czy model powinien słuchać innego modelu (wzorzec obserwatora)? Być może moje pytanie jest zbyt subiektywne....


title: Jak zaprojektowałbyś język programowania?

text: Gdybyś miał zaprojektować język programowania, jak byś to zrobił? Jakie funkcje byś wprowadził? Co byś pominął? Wpisywany statycznie czy dynamicznie? Mocno czy słabo napisane? Skompilowane czy zinterpretowane? Uzasadnij swoje odpowiedzi.


title: "Zapisywanie nazwy metody w zmiennej: Python", Jak działa ten kod?

text: Próbuję zrozumieć następujący fragment kodu: factor = misc.kkt_chol2(G, dims, A) .... .... factor(W, P) Jak parametr w wiązaniu czynnika z parametrami wewnątrz kkt_chol2? Z góry dziękuję za odpowiedź.


title: Kategorie pętli „for”

text: Pamiętam, jak kiedyś czytałem badania, w których przeanalizowano cały kod w języku C i okazało się, że zdecydowaną większość pętli „for” można było podzielić na około pięć kategorii, odpowiadających funkcjonalnym ekwiwalentom „map”, „filtr”. , `fold` itp. Nie mogę już znaleźć tego artykułu/artykułu. Czy ktoś może mi to wskazać?


title: Po co przyczyniać się do niewolnych projektów open source?

text: Jako właściciel projektu open source chciałbyś, aby ludzie wnosili swój wkład i ulepszali go, prawda? Ale jeśli zdecydujesz się na fajny, smaczny model licencjonowania, aby ludzie mogli korzystać z oprogramowania [korporacyjnego lub innego], czy masz prawa do wszystkich dochodów? jeśli tak, dlaczego ludzie mieliby zawracać sobie głowę wkładem? Mogą wykonywać całą pracę, podczas gdy ty, właściciel, zbierasz wszystkie nagrody? To po prostu wydaje mi się niewłaściwe, może źle to rozumiem.