title: Metody testowania jednostkowego, które wywołują usługi internetowe dostawców

text: Mam klasę z jedną metodą publiczną `Send()` i kilkoma metodami prywatnymi. Wywołuje kilka usług internetowych i przetwarza odpowiedź. Przetwarzanie odbywa się metodami prywatnymi. Chcę przetestować kod jednostkowy. Rozumiem, że testy jednostkowe powinny testować mój kod w izolacji (tj. makiety odpowiedzi dostawców). Uważam również, że metody prywatne nie powinny być testowane jednostkowo. Ale jeśli po prostu testuję metodę Send(), mój kod nie jest testowany w izolacji i jest zależny od odpowiedzi dostawcy. Czy powinienem wtedy upublicznić moje prywatne metody, aby móc je przetestować za pomocą fałszywych odpowiedzi? Wydaje się to złą praktyką, ponieważ tylko klasa powinna do nich zadzwonić. Przepraszam, jeśli jest to podstawowe pytanie, jestem całkiem nowy w testowaniu jednostkowym. Używam c# i VS2010


title: Język programowania z dopasowaniem wzorców w drzewach

text: Chciałbym stworzyć prototyp systemu algebry komputerowej. Równanie byłoby reprezentowane przez drzewo, a reguły byłyby definiowane – podobnie jak aksjomaty matematyczne – poprzez określenie wzorca (w drzewie) i reguły restrukturyzacji dla dopasowanej części drzewa. Czy możesz zaproponować język programowania, z którym mógłbym poeksperymentować, aby przetestować to podejście (najlepiej niezbyt eksperymentalny)? Zasadniczo powinien obsługiwać struktury danych wysokiego poziomu, takie jak listy (a właściwie drzewa) i ułatwiać dopasowanie drzewa do wzorca, a także zastępować część drzewa substytutem. Chodzi więc o dopasowanie wzorców struktury danych na wysokim poziomie i łatwą ich modyfikację. EDIT: Oczywiście mógłbym napisać program w dowolnym języku programowania, ale szukam konkretnie czegoś, co ułatwi prototypowanie pierwszego pomysłu. Nie mam nic przeciwko uczeniu się nowego języka (dla zabawy).


title: Zalecany sposób na rozpoczęcie od Javascriptu po stronie klienta i serwera

text: Myślę o przejściu w średnim okresie na node.js do tworzenia stron po stronie serwera i głównie jQuery i scriptaculous do tworzenia stron internetowych po stronie klienta. Do pisania skryptów planuję użyć coffeescriptu. * czy uważasz, że używanie coffeescriptu jest w porządku, czy powinienem nauczyć się „zwykłego” Javascriptu? * Jakie zasoby np. książki, e-booki, listy mailingowe, artykuły itp. czy polecasz?


title: Jak decydować o kosztach/warunkach utrzymania w przypadku pracy na zlecenie?

text: Jestem programistą JavaScript i planuję podejmować projekty Freelance związane z efektami JavaScript dla sieci. Niedawno zgłosił się do mnie potencjalny klient, aby stworzyć efekt JavaScript dla swojej strony internetowej. Efekt był dość złożony i nie był ogólny. Oznacza to, że za każdym razem, gdy projekt strony internetowej uległby zmianie, kod JavaScript musiałby zostać zmodyfikowany. Ze względu na taki charakter kodu powiedziałem klientowi, że nie będę w stanie zapewnić utrzymania tego projektu. W przyszłości chętnie zmodyfikuję kod, ale każdorazowo będę dokonywał kalkulacji kosztów. Klient nie był z tego zadowolony. Pomyślałem o obliczeniu prawdopodobieństwa modyfikacji, o które klient może poprosić w ciągu roku, i pomnożeniu początkowego oszacowania przez to, aby konserwacja stała się bezpłatna. Np. jeśli koszt początkowego projektu to 100 zł i zakładam, że klient poprosi mnie o modyfikację kodu 4 razy w roku, to naliczyłbym mu opłatę (100 + 4*100). Ale myślę, że to byłoby zdecydowanie za dużo, a klient odmówiłby zapłaty tak wysokiej kwoty. Właśnie zacząłem pracować jako freelancer i część kosztorysowa związana z utrzymaniem bardzo mnie dezorientuje. Jaki jest dobry sposób na oszacowanie kosztów utrzymania. Przydatne byłyby również sugestie dotyczące warunków konserwacji, takich jak jaki powinien być zakres.


title: Najlepszy sposób na udostępnienie / "podarowanie" oprogramowania C# - i jakiej licencji?

text: Kilka lat temu opracowałem małą bibliotekę klas C#, która wciąż jest często pobierana. Ponieważ nie mam już czasu na wsparcie projektu, chciałbym go przekazać. Jakie jest najlepsze miejsce do tego? Kilka uwag: 1. Nie będę już właścicielem tego projektu, po prostu "chcę go oddać" 2. Ma być "bezpłatnie", niekomercyjny, ... 3. Najlepiej by było, gdyby inni mogą wprowadzać zmiany, a także je rozprowadzać 4. Nie może to być dla mnie zagrożeniem prawnym, więc żadnych zobowiązań itp. Czy już coś robiłeś, co byś polecił...? Aktualizacja: praktycznie w mgnieniu oka otrzymałem świetne opinie, **więc muszę wybrać licencję**. Nie jestem za bardzo w tych sprawach prawnych, również nie jest to mój główny interes. Co polecasz do tego? Mówiąc prościej, mam niewiele wymagań (wyjaśniając swoje intencje): 1. Ludzie mogą używać go w oprogramowaniu komercyjnym i niekomercyjnym 2. Nie chcę być w jakikolwiek sposób odpowiedzialny 3. Wszelkie ulepszenia (poprawki itp.) powinny być również dostępny dla mnie i publiczności na tej samej licencji, co w 4. 4. Nie chcę zmuszać ludzi do publikowania całego kodu źródłowego, gdy wdrażają bibliotekę w ramach większego projektu. Ale chcę, aby ponownie opublikowali wszelkie bezpośrednie ulepszenia lub poprawki błędów. Jest zbyt wiele licencji, aby przeczytać je wszystkie....


title: Czy istnieje sposób na opublikowanie aplikacji IOS z systemu Windows/Linux?

text: Od dawna używam Linuksa (zwłaszcza Ubuntu) i Windows 7. Chcę publikować aplikacje na iOS, ale nie mam komputera Mac ani iPhone'a. W pobliżu nie ma nikogo, kto pożyczy mi Maca, a ja też nie chcę ich kupować. Więc moje pytanie brzmi: jak mogę opublikować moją aplikację na iOS z systemu Windows lub Linux? Nie mam na myśli publikowania programów dla iPhone'ów z jailbreakiem, chcę publikować za pośrednictwem Apple Store. Moje wyniki wyszukiwania wskazują, że nie ma niezawodnego sposobu na opublikowanie aplikacji na iOS z systemu Windows lub Linux. Chcę też, aby była to aplikacja płatna, a nie rozdawana za darmo. Czy ktoś zna sposób na publikowanie aplikacji na iOS z systemu Windows lub Linux?


title: Czy zachowanie programu należy modyfikować za pomocą pliku konfiguracyjnego lub zmiennych środowiskowych?

text: Mam na myśli przede wszystkim aplikacje wiersza poleceń *nix, w których chcesz trwale zmienić zachowanie z domyślnych. Zmienne środowiskowe są łatwe do zrozumienia i zaimplementowania, zwykle wymagają od użytkownika zmodyfikowania ich `~/.bashrc` w celu trwałej zmiany. Jednak kolizja przestrzeni nazw może stanowić problem (ale mało prawdopodobne, jeśli będziesz ostrożny). Z drugiej strony, wiele programów używa plików konfiguracyjnych `~/.programrc`. Czy to po prostu gadatliwość? Jeśli twój program ma tylko 2 ustawienia konfiguracyjne, to prosty `eksport APP_SETTING=1` działa dobrze. Jeśli jednak zaczynasz oferować ponad 5 opcji, to powinien być czas, aby zacząć przeglądać plik konfiguracyjny?


title: Czy „konwencja ponad konfiguracją” nie narusza podstawowych zasad programowania?

text: Patrzyłem na framework WPF MVVM Caliburn.Micro i przeczytałem, że wiele standardowych rzeczy jest opartych na konwencjach nazewnictwa. Na przykład automatyczne wiązanie właściwości w widoku z właściwościami w ViewModel. Chociaż wydaje się to wygodne (usuwa część standardowego kodu), moją pierwszą instynktowną reakcją jest to, że nie jest to całkowicie oczywiste dla nowego programisty, który przeczyta ten kod. Innymi słowy, funkcjonalność aplikacji nie jest w pełni wyjaśniona przez jej własny kod, ale także przez dokumentację frameworka. **EDYTUJ:** Więc to podejście nazywa się konwencją ponad konfiguracją. Ponieważ nie mogłem znaleźć żadnych pytań na ten temat, zmieniłem moje pytanie: **Moje pytanie brzmi:** Czy konwencja nad konfiguracją jest poprawnym sposobem uproszczenia rzeczy, czy też narusza niektóre zasady programowania (a jeśli tak, to jakie)?


title: Jak radzić sobie ze statycznymi klasami użyteczności podczas projektowania pod kątem testowalności

text: Staramy się zaprojektować nasz system tak, aby był testowalny iw większości rozwijany przy użyciu TDD. Obecnie próbujemy rozwiązać następujący problem: W różnych miejscach konieczne jest, abyśmy używali statycznych metod pomocniczych, takich jak ImageIO i URLEncoder (obie standardowe Java API) oraz różnych innych bibliotek, które składają się głównie z metod statycznych (takich jak biblioteki Apache Commons) . Jednak niezwykle trudno jest przetestować te metody, które używają takich statycznych klas pomocniczych. Mam kilka pomysłów na rozwiązanie tego problemu: 1. Użyj mock framework, który może mock klas statycznych (jak PowerMock). To może być najprostsze rozwiązanie, ale wydaje się, że mam ochotę się poddać. 2. Twórz instancyjne klasy opakowujące wokół wszystkich tych statycznych narzędzi, aby można je było wstrzykiwać do klas, które ich używają. Brzmi to jak stosunkowo czyste rozwiązanie, ale obawiam się, że stworzymy strasznie wiele klas opakowujących. 3. Wyodrębnij każde wywołanie tych statycznych klas pomocniczych do funkcji, którą można nadpisać, i przetestuj podklasę klasy, którą faktycznie chcę przetestować. Ale ciągle myślę, że to musi być problem, z którym wiele osób musi się zmierzyć podczas TDD - więc muszą już istnieć rozwiązania tego problemu. Jaka jest najlepsza strategia utrzymania testowalności klas korzystających z tych statycznych pomocników?


title: Najlepsze praktyki dotyczące wydawania aplikacji PHP typu open source

text: Jestem programistą PHP, ale nigdy wcześniej nie pracowałem ani nie uczestniczyłem w żadnych projektach open source. Opracowuję CMS na własny użytek. Mam działający prototyp i myślę, że gdy będzie gotowy (prawdopodobnie za kilka miesięcy), może to być coś, czym zainteresuje się społeczność PHP. Jestem dość pewnym siebie programistą, ale są obszary, w których brakuje mojej wiedzy, zwłaszcza jeśli chodzi o kwestie związane z open source: * Jaki jest najlepszy sposób na opublikowanie projektu i/lub znalezienie innych, którzy mogą być zainteresowani współpracą * Mój CMS jest zasilany przez CakePHP i zasadniczo znajduje się na nim jako warstwa. Rozdzieliłem projekt CakePHP na GitHub: wcześniej korzystałem z systemów kontroli wersji (SVN), ale jestem całkiem nowy w GIT, więc chcę mieć pewność, że robię wszystko w „najlepszy sposób” * Jak mogę znaleźć o problemach licencyjnych? Która licencja open source byłaby najlepsza dla mojej aplikacji? Ponadto, mój projekt zapożycza się z wielu innych projektów open source, na przykład mam sekcje kodu (które mocno zmodyfikowałem), ale które zawierały informacje o prawach autorskich/licencjach - nie mam pojęcia, jakie są moje zobowiązania w zakresie przechowywanie ich w To tylko kilka przykładów pytań, które mam, ale wydaje mi się, że muszą istnieć jakieś zasoby, które byłyby dla mnie przydatne. Od czego najlepiej zacząć, jakie są najlepsze społeczności/witryny, które zajmują się tymi problemami? Rozejrzałem się, ale nie byłem w stanie wymyślić zbyt wiele...


title: W jaki sposób przetwarzanie dużych danych może być szczególnym wymogiem w pracy?

text: Zdarzyło mi się zobaczyć niektóre wymagania dotyczące stanowisk pracy programisty Oracle SQL lub programisty C#, którzy chcą osoby, która poradzi sobie z terabajtami danych w ETL lub migracji danych. Pracowałem nad migracją danych, aby przenieść dane z jednego systemu do drugiego. Jako programista C# lub programista Oracle SQL nie jestem w stanie zrozumieć, jak sprawy będą wyglądać inaczej, jeśli w grę wchodzą duże dane. (Dokumentacja Oracle mówi, że bez problemu poradzi sobie nawet z 8000 terabajtów, po co więc mam się martwić o wolumen?) Czy ktoś może doradzić, co jest szczególnego w obsłudze migracji danych o dużych wolumenach?


title: Programowanie w innych systemach pisania, takich jak te, które piszą od prawej do lewej

text: Jak programiści w krajach, których system pisania jest, powiedzmy, pisany od prawej do lewej, piszą swój kod? Powiedzmy, że jeśli używali kompilatora C#, czy stosują podejście od lewej do prawej, czy mają inne IDE, które pozwala im pisać kod C# od prawej do lewej?


title: Najlepsze miejsce na interfejs fabryczny

text: Jakie jest najlepsze miejsce na interfejs fabryczny do tworzenia instancji innego interfejsu? **OpcjaA** : osobny interfejs publiczny klasy InterAFactory { InterA createInterA(); } interfejs publiczny InterA { void doStuff(); } **OpcjaB** : podklasa publicznego interfejsu InterA { public interface Factory { InterA createInterA(); } void doStuff(); } Zauważyłem, że guawa ma tendencję do używania B dla niezmiennych kolekcji, ale to jest dla budowniczych, które różnią się nieco od fabryk. Skłaniam się również ku opcji B, ponieważ zmniejsza ona liczbę klas najwyższego poziomu w pakiecie i silnie kojarzy fabrykę z tym, co tworzy. Jednak implementacje nie będą przez to powiązane ani nie będą miały wpływu, a implementacje fabryki będą nieco bardziej szczegółowe. Myśli?


title: Programowanie proceduralne?

text: Mam zamiar wyruszyć w podróż, aby stworzyć nowy generator raportów dla naszego wewnętrznego oprogramowania. Nasz stary generator jest wykonany w VB6, pilotach Word i obrazach pixelpushe. I jest wolniejszy niż leniwiec na lep na muchy. Język, którym posługuję się najbardziej płynnie, to C#, więc najlepiej będzie, jeśli zrobię to w C#. Jestem jednak otwarty na inne języki, z których prawdopodobnie najlepiej znam JavaScript. Moje pytanie tak naprawdę brzmi, jak powinienem postępować podczas konfigurowania mojej aplikacji. Dane, których dotyczy, to dane ankietowe. Jest podzielony na pytania i grupy pytań. Dzisiaj wygląda to tak: * Utwórz wynik raportu dla pełnego raportu * Utwórz wynik raportu dla każdej grupy pytań * Utwórz wynik raportu dla każdego pytania * Utwórz wynik raportu dla każdej grupy pytań I Dodatkowo może być kilka dodatkowych kroków, aby uzyskać wyniki według zmiennej filtr i tak dalej. Mój problem polega na tym, że nie mogę tak naprawdę owinąć głowy w żaden inny sposób niż ten „proceduralny” sposób. Jak byś się zajął w rozwiązaniu tego? Jakieś sugestie? Więcej danych: * Dane są przechowywane w MSSQL * Środowisko to Windows


title: Dlaczego Java ustawiła dostęp do pakietów jako domyślny?

text: Zadaję to pytanie, ponieważ uważam, że zrobili to z bardzo dobrego powodu i że większość ludzi nie używa go właściwie, dobrze z mojego dotychczasowego doświadczenia w branży. Ale jeśli moja teoria jest prawdziwa, to nie jestem pewien, dlaczego uwzględnili modyfikator dostępu prywatnego...? Uważam, że jeśli dostęp domyślny jest właściwie używany, zapewnia lepszą testowalność przy zachowaniu enkapsulacji. Powoduje to również, że modyfikator dostępu prywatnego jest zbędny. Domyślny modyfikator dostępu może być użyty do zapewnienia tego samego efektu poprzez użycie unikalnego pakietu dla metod, które muszą być ukryte przed resztą świata, i robi to bez narażania testowalności, ponieważ pakiety w folderze test, z tym samym w stanie uzyskać dostęp do wszystkich domyślnych metod zadeklarowanych w folderze źródłowym. Uważam, że właśnie dlatego Java używa dostępu do pakietów jako „domyślnego”. Ale nie jestem pewien, dlaczego obejmowały również dostęp prywatny, jestem pewien, że istnieje prawidłowy przypadek użycia...


title: Czy istnieją alternatywy dla stosu + sterty + statycznego modelu pamięci?

text: Wszystkie programy, które widziałem, organizują swoją pamięć danych w jeden lub więcej stosów wywołań (zwykle o stałym rozmiarze, ale czasami nie), stertę i pamięć statyczną. Ostatnio dodano do tego również lokalną pamięć statyczną dla wątków. Czy były próby radykalnie odmiennego uporządkowania układu pamięci danych, m.in. bez stosu wywołań? Lub zorganizować pamięć w inny sposób, który osiąga to samo?


title: Czy mamy jakieś specjalne względy projektowe dotyczące zachowania anonimowości w aplikacji?

text: To otwarte pytanie, które analizuję podczas wykonywania zabawnych projektów w czasie wolnym. Serwisy takie jak Google, Facebook przechowują aktywność użytkowników i być może sprzedają je lub wykorzystują do reklam. Ale wierzę, że zachowana jest anonimowość. Na przykład, muszę ujawnić, że na danym obszarze jest 5 osób w wieku 45-50 lat, które są narkomanami... ale nie chcę podawać nazwisk osób. W rzeczywistości chcę mieć pewność, że nikt nie będzie miał dostępu do ich nazwisk, w przeciwnym razie doprowadziłoby to do naruszenia prywatności (Przepraszam za dziwny przykład!) Czy istnieje jakieś narzędzie/standard, którego wszyscy (zwłaszcza mniejsze organizacje) stosują, aby ograniczyć komplikacje prawne związane z kradzieżą tożsamości, takie jak ten ? Taguję MongoDB i Javę, ponieważ korzystam z tych technologii i odpowiedzi dla nich specyficzne byłyby łatwiejsze do zaimplementowania.


title: Jak zespół programistów .NET powinien projektować i realizować projekty typu greenfield?

text: Niektóre z najgorętszych tematów w świecie oprogramowania to: * Projektowanie oparte na domenach * Zasady SOLID * Zwinne metodologie * ORM Teraz zakładając, że nie używasz obecnie wszystkich tych elementów w swoim zespole, jeśli miałbyś zapytać swój zespół ( indywidualnie, a nie jako grupa), co wiedzieli o tematach, których nie zgłaszali – ile wiedzą o tych innych tematach – prawdopodobnie „słyszeli o tym/gdzieś o tym przeczytali”. Problem polega na tym, że coraz częściej technologia zmienia się tak szybko, że wiele osób (przeciętnych programistów Joe) po prostu nie nadąża za najnowszymi myślami. Teraz, podczas gdy ci, którzy są uzdolnieni akademicko, mogą co roku przeczytać ponad 20 książek na powyższe tematy i połączyć je w jakiś porządek w swoich głowach, aby zastosować je w nowym projekcie oprogramowania, większość z nas nie będzie skłonna robić wszystkiego że studiowanie. Osobiście siedzę przy biurku cały dzień, programując, więc ostatnią rzeczą, na którą mam ochotę, jest powrót do domu i zrobienie tego samego. Chcę uprawiać sport, spotykać się z przyjaciółmi, spędzać czas z dziewczyną i ogólnie mieć życie. Tak więc, biorąc pod uwagę ładny, lśniący nowy projekt greenfield, wielu z nas (zrób to najbardziej, jeśli jesteśmy uczciwi) nadal jest dość zdezorientowanych, jak radzić sobie z nowym projektem z najnowszymi, najlepszymi myślami, które są najczęściej akceptowane przez naszych bardziej akademickich mola. Więc moje pytanie - zastanawiałem się, czy istnieje jakaś książka, obecna lub przyszła, która łączy najnowsze myślenie w coś łatwiejszego do przetrawienia i zastosowania przez przeciętnego śmiertelnika? (najlepiej przy użyciu .net i najpopularniejszej obecnie powiązanej technologii) Z mojego doświadczenia na rynku, wyglądałoby to mniej więcej tak, aby było odpowiednie dla większości prawdziwych programistów: 1. Przykłady oparte na jakimś rodzaju witryny internetowej, więc wszystkie poziomy mogą być zaangażowany. 2. Wyjaśnij, w jaki sposób identyfikować i mapować rzeczywiste obiekty biznesowe, co jest obecnie wykonywane przy użyciu projektowania opartego na domenie jako najnowszego powszechnie akceptowanego sposobu myślenia, przy jednoczesnym przestrzeganiu zasad SOLID. 3. Wyjaśnij, jak (2) przechodzi od modelu do schematu bazy danych, korzystając z najnowszej technologii ORM (to może być największa sekcja). 4. Użyj MVC (lub jakiejkolwiek technologii, która się stanie) jako platformy dla przykładów. 5. Bardzo krótko wyjaśnij TDD, a następnie pokaż, jak podłączyć testowanie jednostek, prawdopodobnie testowanie w studiu wizualnym/nunit lub najnowsze technologie. 6. Kiedy używać IoC. 7. Pokaż, jak napisać kilka bardzo prostych testów integracyjnych, korzystając z dowolnego aktualnie wybranego narzędzia (Fitnesse lub cokolwiek innego). 8. Pokaż (w nie więcej niż jednym rozdziale), jak skonfigurować TFS do ciągłej integracji. Książka byłaby następnie aktualizowana co roku, aby odzwierciedlić najnowsze i najbardziej uzgodnione koncepcje, więc zespoły programistyczne zawsze wiedziały, jak najlepiej poradzić sobie z nowym projektem, bez przedzierania się przez tegoroczną górę nowych książek, aby samemu spróbować zidentyfikować wspólne tematy. najgorętsze tematy roku. Byłoby ważne, aby poprawki nie odzwierciedlały własnej opinii autora, a raczej ogólną opinię większości jego filarów, dzięki czemu zbudowano zaakceptowane, jednolite podejście do projektów deweloperskich .net. Prawdziwym kluczem do tej książki jest to, że byłaby to książka „Jak”, a nie „Dlaczego powinieneś”. Mógłby (i prawdopodobnie powinien) odwoływać się do książek „Dlaczego” dla tych, którzy chcieli być lepszymi programistami lub po prostu potrzebowali wiedzieć więcej, ale nie miałby miejsca na wyjaśnienie tego czegoś więcej niż zwięźle, biorąc pod uwagę cel książki . Być może książkę można by dokładniej nazwać „Jak poprawnie i praktycznie zastosować obecny stan rozwoju oprogramowania i technologii .NET w tegorocznych projektach w świecie rzeczywistym (dla idiotów)”, ale myślę, że tytuł wymaga pracy ;-) , aby zmieścić się w dyrektywie "zadaj pytanie" - czy jest jakaś książka choćby trochę podobna do tej? (chociaż wątpię, że jest regularnie aktualizowany). Racja, idę przeczytać kolejną suchą, teoretyczną książkę, w tydzień wolny, aby spróbować i nadążyć :( Szkoda, że prawdopodobnie zapomniałem całej treści, zanim przyjdę z niej korzystać, i w ogóle Wiem, że to może być już nieaktualne... Och btw, gdzie jest najlepsze miejsce, aby rozpocząć to jako dyskusję, a nie pytanie? przeczytanie FAQ sugerowało tylko czat w czasie rzeczywistym, na który szybko rzuciłem okiem , ale tbh jest dość martwy i wydaje się, że jest w większości jednolinijkowy, nie nadaje się do czegoś rozwlekłego (inna strona byłaby w porządku).


title: Dlaczego folder „app” jest teraz (bardziej) powszechnym wzorcem w projektach internetowych?

text: Może to być związane z projektem Yeoman lub może zaadoptowali to z innego miejsca, ale wydaje się, że jest to ustawienie domyślne dla wszystkich ich generatorów. Poza generatorami Yeoman zauważyłem to również w innych projektach, które nie mają nic wspólnego z Yeomanem (na przykład ten). Skąd wzięła się ta konwencja i jakie są powody używania tego na przykład w folderze `src` (który był bardziej powszechny)? A może to tylko przypadkowa preferencja? * * * p.s.: O ile wiem, nie wydaje się to być ściśle związane z tym, że jest to aplikacja internetowa zamiast strony internetowej (co i tak jest raczej subiektywne).


title: Pisanie solidnego kodu a nadmierna inżynieria

text: Skąd wiesz, że piszesz najbardziej niezawodny kod bez przesady? Za dużo myślę o każdej możliwej ścieżce, którą może obrać mój kod, i czasami wydaje mi się, że to strata czasu. Wydaje mi się, że zależy to od rodzaju programu, który piszesz, ale nie chcę poświęcać zbyt wiele czasu na branie pod uwagę sytuacji, które nigdy się nie zdarzą.


title: Architektura śledzenia czasu i rejestracji płatności

text: Tytuł może być trochę niepoprawny. :) W każdym razie buduję oprogramowanie, w którym pracownicy wkładają czas pracy w ciągu dnia (godziny pracy), a pracodawca „płaci” za ten czas. "Płatność" odbywa się poza tym systemem, więc pracodawca po prostu "potwierdza" (pole wyboru lub coś w tym stylu), które godziny pracy są płatne. Więc pytanie brzmi - jaki jest najlepszy sposób (zarówno pod względem interfejsu użytkownika, jak i przechowywania danych) na wdrożenie tego? W tej chwili mam taki pomysł: * Pracownik wybiera tydzień i ręcznie (przy pomocy niektórych pomocników JavaScript, np. „wypełnij ten sam czas dla wszystkich dni”) wprowadza godziny pracy w każdy dzień tygodnia. Pracodawca potwierdza płatność w ten sam sposób, w jaki pracownik wprowadza dane (wybiera tydzień, potwierdza każdego dnia). Dane są zapisywane w DB jako uniksowy znacznik czasu (jeden dzień na wiersz tabeli). Problemem jest 14 wejść (7 dni*(wejście "godziny od" + "godziny do")), ale takie podejście wydaje się dość łatwe do zaimplementowania. Może coś przeoczam i można to zrobić inaczej i lepiej? Może ktoś ma jakiś przykład już działającego oprogramowania?


title: Jak mogę dowiedzieć się o typografii, czcionkach, glifach itp.?

text: Wiem o tym tak mało, że mam problem ze sformułowaniem pytania. Najwyraźniej ze względu na ograniczenia techniczne styl pisania urdu nastaleeq jest bardzo trudny, być może niemożliwy, biorąc pod uwagę obecne standardy stosowane w sieci. Chciałbym zagłębić się w to, dlaczego tak jest (przynajmniej w aspektach technicznych). Moje, bardzo z grubsza, rozumiem to: Unicode jest obecnie standardem, ale nie definiuje wyglądu znaków, definiuje tylko nazwy znaków i system numeracji do ich reprezentowania. „Czcionki”, takie jak Halvetica czy Times New Roman, tak naprawdę definiują wygląd postaci. Czym zatem jest True Type i czym różni się od Open Type, Postscript lub LaTex? Jeśli język wymaga tego, kształty znaków _i jak łączą się ze sobą_ (pomyśl kursywą), zmieniają się w zależności od ich położenia w tekście... jak to jest obsługiwane? Jeśli Unicode jest tylko systemem reprezentacji, a czcionki dotyczą tylko pojedynczych znaków, dokąd zmierzają te algorytmy oparte na lokalizacji? Czy obecny zestaw standardów jest zbyt ograniczony, aby poradzić sobie ze złożoną typografią w stylu kursywy? Jeśli tak, czy kanwę HTML można wykorzystać do stworzenia alternatywnego/eksperymentalnego „systemu czcionek”? Jeśli muszę „zrobić własne”, czy praca Knutha nad typografią cyfrową jest nadal aktualna, czy też istnieją bardziej nowoczesne odniesienia?


title: Open-source, rozwój oparty na konsensusie

text: **Pytanie:** Czy istnieje licencja typu open source, która wymaga, aby moje imię (lub imię, które chcę promować) zawsze było powiązane z projektem i jego pochodnymi? (Albo w informacji o prawach autorskich (©) albo w innym.) **Motywacja:** \- Moją główną motywacją jest reputacja/postęp kariery. Gdyby zyskał szerokie zastosowanie, mógłby wyglądać bardzo dobrze na wznowieniu (rozumiem, że to długa perspektywa). \- Dodatkową korzyścią jest to, że będzie wyraźnie informować przyszłych pracodawców, że ten kod był używany przeze mnie przed rozpoczęciem pracy w firmie i będzie nadal używany po moim odejściu. **To jest moje zrozumienie:** Zdaję sobie sprawę, że 99,9% projektów open-source nigdy się nie rozwija i że kieruję się perspektywą rozwoju reputacji/kariery. Rozumiem, że wielu nie czyta/respektuje licencji. Rozumiem, że zarządzanie projektami open source zajmuje dużo czasu. Rozumiem, że „Rozwój oparty na konsensusie” jest najlepszą szansą na zmotywowanie społeczności i że mogę/stracę znaczną kontrolę.


title: Jak mogę zarejestrować się w programie dla programistów iOS jako osoba niepełnoletnia?

text: Niedawno zacząłem uczyć się tworzenia aplikacji na iOS i chociaż symulator jest dobry na początek, doszedłem do tego, że naprawdę powinienem testować aplikacje, które piszę na rzeczywistym urządzeniu. Aby to zrobić, musisz być członkiem programu dla programistów iOS za 99 USD rocznie, który umożliwia również publikowanie w App Store. Jestem bardziej niż szczęśliwy, że mogę zapłacić opłatę, ale mój problem polega na tym, że nadal jestem nieletni, a aby dołączyć do programu dla programistów musisz mieć ukończone 18 lat w USA (nie jestem pewien, jak to działa w innych krajach) . Rozmawiałem z kilkoma innymi, którzy byli w podobnej sytuacji, ale ich odpowiedzi były różne. Z tego, co zebrałem, najlepszym sposobem działania jest zarejestrowanie się w imieniu jednego z moich rodziców. Mój problem z tym polega na tym, że gdybym miał kiedykolwiek opublikować aplikację w sklepie, byłoby idealnie, gdybym miał nazwisko sprzedawcy zamiast mojego taty. To nie byłby koniec świata, gdyby tak się stało, ale jak powiedziałem, to nie byłoby idealne. Czy któryś z was był na takim stanowisku lub znał kogoś, kto to zrobił? Jak inni rozwiązali ten problem? Wszelkie wskazówki lub sugestie byłyby bardzo mile widziane.


Używamy bugzilli do śledzenia błędów i próśb o nowe funkcje, a także wymagamy od programistów pisania osobnych informacji o wydaniu, jeśli zakończą kodowanie funkcji. Staromodny, wiem. Jeden problem, jaki mamy z powyższym rozwiązaniem, polega na tym, że chociaż działa świetnie w przypadku oprogramowania, które już sprzedajemy, jest całkowicie bezużyteczny, jeśli chodzi o śledzenie postępu nowego projektu rozwoju oprogramowania. Powodem jest to, że w momencie tworzenia nowego oprogramowania nie używamy, a raczej nie możemy, używać bugzilli do śledzenia funkcji po prostu dlatego, że bugzilla nie jest odpowiednia do przedstawienia skomplikowanej zawiłości zależności funkcji ( Aby ukończyć nowe oprogramowania, jest po prostu zbyt wiele funkcji do napisania i po prostu nie mamy ochoty umieszczać ich w bugzilli, a nawet gdybyśmy to zrobili, nie mielibyśmy możliwości dowiedzenia się, które funkcje zależą od których, i nie będziemy w stanie i tak uzyskaj dokładną prognozę daty wysyłki). Wtedy nasi interesariusze będą zaniepokojeni naszymi postępami w rozwoju (lub ich brakiem) i zaczną walić w drzwi lidera zespołu (tak naprawdę) w szacunkach, na co nie mogę odpowiedzieć, ponieważ tragicznie, ja też szczerze nie do końca wiedzieć, jak daleko od ukończenia nowej aplikacji. Jak przedstawiłbyś swoje postępy w rozwoju oprogramowania swoim interesariuszom?


title: Skąd firmy finansowe pozyskują dane giełdowe do analizy?

text: Zastanawiałem się nad tym tematem i zawsze się zastanawiałem, skąd czerpią dane, które są analizowane w aplikacjach, zajrzałem na stronę Nasdaq i wygląda na to, że nie mają żadnego API, czy firmy przeanalizuj sekcję finansów Yahoo, czy są specjalne kontrakty, porozumienia w miejscach z różnymi giełdami?


title: Czy MVC/REST powinien zwrócić 403 lub 404 dla zasobów należących do innych użytkowników?

text: Podczas pracy z witryną opartą na zasobach (taką jak aplikacja MVC lub usługa REST), mamy dwie główne opcje, gdy klient próbuje `POBIERZ` zasób, do którego nie ma dostępu: * **403** , który mówi, że klient jest _nieautoryzowany_; lub * **404** , który mówi, że zasób _nie istnieje_ (lub nie można go znaleźć). Powszechna mądrość i powszechna praktyka wydaje się odpowiadać prawdą - to jest 403. Ale zastanawiam się, czy rzeczywiście jest to słuszne. Bezpieczne systemy logowania nigdy nie informują o przyczynie niepowodzenia logowania. Oznacza to, że jeśli chodzi o klienta, nie ma wykrywalnej różnicy między nieistniejącą nazwą użytkownika a nieprawidłowym hasłem. Ma to na celu uniemożliwienie wykrycia identyfikatorów użytkowników lub, co gorsza, adresów e-mail. Z punktu widzenia _prywatności_ wydaje się, że o wiele bezpieczniej jest zwrócić kod 404. Przypomina mi się incydent, w którym ktoś podobno odkrył zwycięzców reality show (Survivor, jak sądzę), sprawdzając, które zasoby _nie_ istniały w witryny, a które to zrobiły. Obawiam się, że 403 może ujawnić poufne informacje, takie jak numer seryjny lub numer konta. Czy istnieją ważne powody, aby _nie_ zwracać 404? Czy polityka 404 może mieć negatywne skutki uboczne gdzie indziej? Jeśli nie, to dlaczego ta praktyka nie jest bardziej powszechna?


title: Jak jest poprawny sposób pisania TDD dla void API?

text: Ok, więc mój scenariusz jest taki: mam komponent innej firmy, który oferuje interfejs API do komunikacji z systemem zewnętrznym. Metoda woła o nakazanie zewnętrznemu systemowi wykonania pewnych czynności, wszystkie zwracają void. Tak więc stworzyłem interfejs opakowujący i wyśmiewałem system zewnętrzny. Ale ponieważ nie mam prawdziwej logiki ani czeków w moim kodzie, który wywołuje rzeczy w zewnętrznym interfejsie API, kod jest tylko proceduralny. Naprawdę nie mogę przetestować niczego poza tym, że metody są wywoływane. _systemWrapper.DoStuff(a, b , c , d); _systemWrapper.DoStuff2(e, f); _systemWrapper.DoStuff3(g); Nie mogę skonfigurować systemu zewnętrznego z moich testów, więc testy integracyjne nie wchodzą w rachubę. To, co zrobiłem, aby to przetestować, to wyśmiewanie mojego „_systemWrapper” i po prostu sprawdzam, czy parametry, które wywołuję w makiecie, zawierają prawidłowe parametry. Czy to powszechny sposób na rozwiązanie tego konkretnego problemu? Wydaje mi się, że przeprowadzenie testu, aby upewnić się, że masz ten i ten wiersz kodu, wydaje się nieco wyczerpujące. Problem polega na tym, że ten system robi się DUŻY, a pisanie testów, które twierdzą, że ta i ta linia jest obecna, wymyka się spod kontroli, a refaktoryzacja staje się naprawdę trudna, a wszystkie testy kończą się niepowodzeniem, jeśli zmienimy połączenie do osoby trzeciej.


title: Czy istnieje jedna książka, która obejmuje szeroki zakres podstaw informatyki?

text: Kiedy robiłem studia licencjackie z inżynierii elektrycznej, była książka Van Valkenburgha zatytułowana „Podstawowa energia elektryczna”. Jeśli przeczytasz tę książkę od deski do deski, twoje podstawy elektrotechniki będą kuloodporne. Polecam wszystkim moim juniorom i bardzo mi się podobało. Czy istnieje taka książka z dziedziny informatyki? Nie przejmuję się tak bardzo algorytmami. Zastanawiam się bardziej nad czymś, co mówi mi, jak wszystko działa pod kołdrą. TCPIP, zarządzanie pamięcią, DNS, routing, SSL, buforowanie, kolejkowanie itp.


title: Projekt dla obiektu z opcjonalnymi i modyfikowalnymi atrybutami?

text: Używałem wzorca Builder do tworzenia obiektów z dużą liczbą atrybutów, gdzie większość z nich jest opcjonalna. Ale do tej pory określałem je jako ostateczne, zgodnie z zaleceniami Joshua Blocka i innych autorów, i nie musiałem zmieniać ich wartości. Zastanawiam się, co powinienem zrobić, jeśli potrzebuję klasy z dużą liczbą opcjonalnych, ale nieostatecznych (mutowalnych) atrybutów? Mój kod wzorca Konstruktora wygląda tak: public class Przykład { //Wszystkie możliwe parametry (opcjonalne lub nie) private final int param1; prywatny końcowy int param2; //Builder class public static class Builder { private final int param1; //Wymagane parametry private int param2 = 0; //Parametry opcjonalne - inicjalizacja do domyślnych //Builder constructor public Builder (int param1) { this.param1 = param1; } //Metody typu setter dla parametrów opcjonalnych public Builder param2(int value) { param2 = value; zwróć to; } //build() metoda public Przykład build() { return new Example(this); } } //Konstruktor prywatny private Przykład(Konstruktor konstruktora) { param1 = builder.param1; param2 = budowniczy.param2; } } Czy mogę po prostu usunąć słowo kluczowe `final` z deklaracji, aby móc uzyskać dostęp do atrybutów z zewnątrz (na przykład poprzez normalne ustawiacze)? A może istnieje wzorzec twórczy, który dopuszcza opcjonalne, ale nieostateczne atrybuty, które w tym przypadku byłyby lepiej dopasowane?


title: Czy goto poprawić DRY-ness OK?

text: Mój kod ma wiele sprawdzeń w celu wykrycia błędów w różnych przypadkach (wiele warunków spowodowałoby ten sam błąd), wewnątrz funkcji zwracającej strukturę błędu. Zamiast wyglądać tak: err_struct myfunc(...) { err_struct error = { .error = false }; ... if(coś) { błąd.błąd = prawda; error.description = "nieprawidłowe dane wejściowe"; błąd zwrotu; } ... przypadek 1024: error.error = true; error.description = "nieprawidłowe dane wejściowe"; // ten sam błąd, ale inny scenariusz wykrywania zwraca błąd; przerwanie; // proszę nie komentować tej przerwy (EDIT: gra słów niezamierzona) ... Czy użycie `goto` w poniższym kontekście jest uważane za lepsze niż w poprzednim przykładzie? err_struct myfunc(...) { err_struct error = { .error = false }; ... jeśli(coś) przejdź do nieprawidłowe_wejście; ... sprawa 1024: przejdź do nieważne_wejście; przerwanie; błąd zwrotu; nieważne_wejście: błąd.error = prawda; error.description = "nieprawidłowe dane wejściowe"; błąd zwrotu;


title: Błąd aplikacji konsoli Wymagane jest odwołanie do obiektu dla niestatycznego pola, metody lub właściwości

text: Hej wszystkim, próbuję uruchomić następujący kod, ale obecnie otrzymuję ten błąd: > Odwołanie do obiektu jest wymagane dla niestatycznego pola, metody lub > właściwości 'fetchFeedData.Program.txtUsername' Kod to: class Program { private string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\feedReader"; wewnętrzny statyczny zewnętrzny IntPtr GetCurrentProcess(); prywatny WebClient imageKlient; private String txtUsername = "xxxxxx@xxxxxx.com"; private String txtPassword = "xxxxxxx"; private Boolean chkDownVideo = false; private Boolean chkIsHD = fałsz; [STAThread] static void Main(string[] args) { bool isNew; Mutex mtx = new Mutex(true, "FacebookNewsfeedReader", out isNew); jeśli (jestNowy) { InitializeXul(); ZaładujUstawienia(); } else MessageBox.Show("Już jedna instancja jest uruchomiona.....", "Facebook Newsfeed Reader"); } static void LoadSettings() { imageClient = new WebClient(); imageClient.Headers.Add("Akceptuj", "obraz/webp,*/*;q=0.8"); imageClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/36.0.1985.125 Safari/537.36"); imageClient.Headers.Add("Referer", "https://www.zzzzzzzz.com/"); imageClient.Headers.Add("Accept-Encoding", "gzip,deflate,sdch"); imageClient.Headers.Add("Accept-Language", "en-US,en;q=0.8"); string[] vals = data.Split('\n'); if (wartości.Długość < 3) return; txtNazwaUżytkownika = vals[0]; txtPassword = vals[1]; txtFolderPrzeglądania = wartości[2]; chkDownVideo = bool.Parse(vals[3]); chkIsHD = bool.Parse(vals[4]); } Pokazuje ten sam błąd w następujących wierszach: imageClient = ... imageClient.Headers.Add(... imageClient.Headers.Add(... imageClient.Headers.Add(... imageClient.Headers.Add(. .. imageClient.Headers.Add(... appDataPath + ... txtUsername = ... txtPassword = ... txtBrowseFolder = ... chkDownVideo = ... chkIsHD = ... Trochę szukałem i znalazłem dalsze sugestie dotyczące upewnij się, że oba mają te same wywołania funkcji (statyczne, nieważne itp.), ale to nie rozwiązuje problemu.Każda pomoc byłaby świetna!


title: Pisząc testy selenowe, mam to zrobić, czy zrobić to dobrze?

text: Próbuję sterować moim interfejsem użytkownika (ciężkim na javascript) przez selen. Resztę moich interakcji ajaxowych z selenem przetestowałem już z powodzeniem. Jednak ta jedna konkretna metoda wydaje mi się wymykać, ponieważ nie mogę sfałszować prawidłowego zdarzenia kliknięcia. Mógłbym rozwiązać ten problem, po prostu czekając w teście, aż użytkownik kliknie punkt, a następnie kontynuując test, ale wydaje się to być wykręceniem. Ale naprawdę kończy mi się termin, żeby to zrobić i działać. Czy powinienem to zrobić i przejść dalej, czy powinienem poświęcić dodatkowy (nieznany) czas na rozwiązanie tego problemu i mieć możliwość zautomatyzowania testów selenu w 100%?


title: Rozpoznawanie pól tekstowych na podstawie ich wartości etykiety

text: Mam aplikację, która ma **pola tekstowe** (nie zaznaczaj, nie pole wyboru ani inne typy), w których użytkownik może wprowadzić jakąś wartość, na przykład: ![*ISBN* i *E-Mail* są etykietami każdego wejścia ](http://i.stack.imgur.com/nKf2O.png) _ISBN_ i _E-Mail_ to **etykieta** każdego wejścia. Teraz muszę automatycznie przetestować te wejścia zgodnie z ich etykietą. Pytanie brzmi: jak rozpoznać, że na przykład pierwsze wejście wymaga kodu ISBN? Zaprogramowałem coś takiego: 1. zmień wartość etykiety na małe litery 2. sprawdź, czy wartość etykiety zawiera _isbn_ 3. jeśli tak ustaw wartość pola na losowy kod _ISBN_ (np.: 1234567890), w przeciwnym razie ustaw ją na wartość losową ( domyślne) Dla pola e-mail: 1. zmień wartość etykiety na małe litery 2. sprawdź, czy wartość etykiety zawiera _e-mail_ lub _email_ lub _mail_ 3. jeśli tak, ustaw wartość pola na losową _email_ (np.: abcd@abcd.com ), w przeciwnym razie ustaw ją na wartość losową (domyślną) I tak dalej dla każdego napotkanego pola tekstowego. Czy to jest wiarygodne? Jak mogę poprawić „rozpoznawanie części”? Znam tylko _wartość etykiety_ i _wartość pola_ (co jest już zapisane w polu domyślnie) dla każdego wprowadzonego tekstu.


title: Kiedy jest odpowiedni czas, aby dołączyć do projektu open source dla programisty?

text: Większość nowicjuszy w programowaniu zaczyna od podstawowych projektów, aby zacząć od programowania. Większość programistów C++ spędza trochę czasu z łamigłówkami i konkursami, ale nie zawsze jest to pomocne. Czasami trzeba poświęcić trochę czasu na realne projekty. Rozpoczęcie własnego projektu open source może być problemem w samokształceniu dla początkujących z powodu braku mentorów i rówieśników, którzy nie mogą spojrzeć na twój kod i dać sugestii. Projekty open source mogą rozwiązać ten problem, niektóre projekty mogą być najbardziej odpowiednie dla nowych programistów. Poza tym każdy jest w pewnym momencie nowicjuszem. Spróbuję więc zadać to pytanie z perspektywy początkującego. Wypróbowałem kilka pytań na temat przepełnienia stosu, zanim zadałem takie pytanie, jak: Jak dołączyć i minimum, którego potrzebujesz, i jak zaangażować się w open source i na jakim poziomie programowania itp. Ale to nie pomaga mi, jeśli chodzi o samoocenę umiejętności . Jak się tego dowiedzieć? Jak mogę sprawdzić, co jest potrzebne, aby dołączyć do projektu open source i czy naprawdę dobrze czuję się z ogromnym kodem źródłowym itp. Moje pytanie brzmi _kiedy uważać się za komfortowego dołączania do programowania open source?_ Chodzi mi o to, jak sprawdzisz się, czy jesteś gotowy przejąć ciężar dużych/małych projektów open source ? jak sprawdzisz się, aby sprawdzić, czy możesz pracować z kontrolą wersji / innymi programistami / napiętym harmonogramem itp. ?


title: Czy powinienem scalić z tego samego oddziału, czy z połączenia?

text: Pytanie w rodzaju _najlepszych praktyk_: czy lepiej jest łączyć bezpośrednio ze źródła do innych gałęzi, czy można łączyć z fuzji? Używanie Subversion do kontroli źródła. **Scenariusz** : * Oddział A ma wprowadzone i zatwierdzone zmiany. * Gałąź B i Trunk wymagają aktualizacji. **Przypadek 1** Połącz od A do B i ponownie od A do Trunk. lub **Przypadek 2** Połącz od A do B, a następnie połącz od B do Trunk. Być może brakuje mi również przypadku 3, w którym łączysz się z B i Trunk jednocześnie (nie jestem pewien, czy jest to zależne od używanej kontroli źródła?). Zauważ, że może istnieć dowolna liczba rozgałęzień, które wymagają scalenia, tak że możesz „kaskadowo” scalić (A do B, C do D...).


title: Pisanie własnego silnika bloga przy użyciu PHP/JavaScript – czy robię to „dobrze”?

text: Po pierwsze, z góry przepraszam, jeśli to jest w niewłaściwym miejscu — nie byłem pewien, czy powinno to być tutaj, czy w Code Review, ale tak naprawdę nie proszę nikogo o sprawdzenie mojego kodu . . . Oto mój projekt: Głównie jako ćwiczenie edukacyjne piszę własny silnik blogowy. Oto jak to działa: Administrator pisze post -> post jest zapisywany do pliku .html, a szczegóły posta są zapisywane ZARÓWNO do bazy danych MySQL, jak i do pliku JSON przy użyciu PHP -> posty są ładowane na stronę za pomocą ramek iframe, określanych przez JavaScript za pomocą szczegóły w pliku JSON. Tak więc do ładowania postów na stronie nie jest wymagany PHP ani dostęp do bazy danych. Jedynym powodem, dla którego baza danych w ogóle jest posiadanie edytowalnego rekordu, więc jeśli administrator musi usunąć post, wpis może zostać usunięty z bazy danych, a plik JSON ponownie zapisany z bazy danych. Co chcę wiedzieć: 1) To wydaje się trochę kłopotliwe. Czy ludzie zalecaliby zrezygnowanie z JSON i większe wykorzystanie bazy danych? Jak zintegrować to z materiałami JavaScript? 2) Czy przechowywanie każdego posta jako osobnego pliku .html i ładowanie jako iframe to rozsądny sposób robienia rzeczy? 3) Czy istnieje sposób na całkowite wycięcie PHP? Właściwie to mi się nie podoba. Zaczynam się uczyć Pythona, ale wydaje mi się to strasznym pocieszeniem dla małego silnika blogowego. Jak prawdopodobnie możesz powiedzieć, jestem BARDZO nowy w programowaniu! Zajrzałem do TaffyDB, który teoretycznie mógłby całkowicie pozbyć się bazy danych - ładuję JSON za pomocą Taffy, usuwam jeden rekord i przepisuję JSON . . . z wyjątkiem tego, że nadal potrzebowałbym PHP do zapisywania do pliku, który myślę? Martwię się również, że poleganie wyłącznie na plikach JSON spowoduje, że wszystko będzie bardzo powolne (rozumiem, że problemy z szybkością rosną wykładniczo wraz z rozmiarem JSON?) Wszelkie porady / opinie byłyby mile widziane i ponownie przepraszam, jeśli publikuję w złym fragmencie Wymiana stosu.


title: Jakie są najlepsze strategie sprzedaży aplikacji na Androida?

text: Jestem młodym programistą i mam nadzieję, że wkrótce sprzedam swoje aplikacje na Androida. Moje aplikacje są w zasadzie gotowe w 99%, więc zastanawiam się, jaka byłaby najlepsza strategia marketingowa do sprzedaży moich aplikacji. Jestem pewien, że te genialne umysły mogą mi dać kilka świetnych rad. Szczególnie interesują mnie Twoje przemyślenia na temat następujących kwestii (zwłaszcza doświadczonych programistów Androida): * Czy bardziej opłaca się sprzedawać aplikację za darmo z reklamami, czy sprzedawać aplikację bez reklam za cenę? Może połączenie bezpłatnej wersji reklamowej i płatnej wersji bez reklam? * Jeśli rozdajesz aplikację z reklamami za darmo, czy odmowa schylania się do tyłu w celu jej obsługi jest etyczna? * Jak bardzo piractwo faktycznie wpływa na potencjalną sprzedaż? Czy należy dołożyć wszelkich starań, aby temu zapobiec? * Czy nadal możesz zarabiać na swojej aplikacji, jeśli udostępnisz ją jako open source? Czy mógłbyś być może więcej zyskać na uwadze, którą mógłbyś w ten sposób zwrócić? * Czy Google Android Marketplace to naprawdę najlepsze miejsce do publikowania aplikacji na Androida? * Czy warto utrzymywać blog lub witrynę dla programistów, aby informować użytkowników o postępach w rozwoju i wersjach oprogramowania? Wszelkie inne sugestie, które możesz mi dać, aby zmaksymalizować zysk, a jednocześnie zapewnić zadowolenie użytkowników i wrócić po więcej, również byłyby bardzo mile widziane. Chociaż doceniam ogólne wskazówki i triki, chciałbym prosić, aby w miarę możliwości wykonać dodatkowy krok i pokazać, w jaki sposób odnoszą się one do sprzedaży aplikacji na Androida. Najbardziej chciałbym zobaczyć statystyki marketingowe, retrospektywę programistów i wszelkie dodatkowe doświadczenia, którymi możesz się podzielić ze sprzedaży aplikacji na Androida. Z góry bardzo dziękuję za poświęcony czas. Naprawdę doceniam wszystkie otrzymywane odpowiedzi.


title: jak tworzyć archiwa zip java z maksymalnym limitem rozmiaru pliku

text: Muszę napisać algorytm w javie (dla aplikacji na Androida), aby odczytać folder zawierający więcej folderów, a każdy z nich zawiera obrazy i pliki audio, więc struktura jest następująca: `mainDir/subfolders/myFile1.jpg` * Musi być w java, coś takiego jak perl script nie jest opcją. Najlepiej byłoby, gdyby skompresowane archiwum skompresowało jak najwięcej plików przed wysłaniem zipa. Tylko zwykły zamek (bez słoika). Mój problem polega na tym, że muszę ograniczyć rozmiar archiwum do 16 MB i w czasie wykonywania tworzyć tyle archiwów, ile potrzeba, aby zawierały wszystkie moje pliki z mojego głównego folderu `mainDir`. Próbowałem kilku przykładów z sieci, czytałem dokumentację javy, ale nie potrafię tego zrozumieć i złożyć w całość tak, jak tego potrzebuję. Czy ktoś już to zrobił lub ma dla mnie link lub przykład? Rozwiązałem odczytywanie plików metodą rekurencyjną, ale nie potrafię zrozumieć logiki tworzenia zip. **EDIT:** FileNotFoundException (brak takiego pliku lub katalogu) to był mój początkowy post na Stack Overflow. Mam na to odpowiedź, ale nie mogę ustawić rozmiaru ZipEntry, a logika nie działa, a także podczas wyodrębniania moich plików z archiwum otrzymuję błąd „nieobsługiwana metoda kompresji”.


title: Wdrażanie aplikacji za pomocą Puppet

text: Ostatnio badam marionetki i myślę, że może być przydatna integracja z moim potoku wdrażania. Obecnie wdrażam swoje aplikacje ręcznie dodając użytkowników, tworząc vhosty, ustawiając katalogi, a następnie git klonując moje repozytorium z GitHub. Wdrażam zmiany za pomocą prostego ściągania Git (haki Git zajmują się migracjami baz danych, czyszczeniem pamięci podręcznej itp.). Dzięki puppet mógłbym skonfigurować manifest, aby utworzyć dla mnie katalog, uprawnienia i zarządzanie wirtualnym hostem. Aby wdrożyć aplikację w środowisku dev/prod, ściągnę manifest z GitHub i uruchamiam go lokalnie. Myślałem również o dodaniu procesu manifestu marionetek do haka Git, aby przy każdym pociągnięciu Puppet mógł zapewnić, że uprawnienia do katalogu są prawidłowe. Czy są jakieś problemy z tym podejściem? Co mógłbym zrobić lepiej?


title: Wzorzec projektowy dla klas Util i ogólnych zmiennych statycznych

text: Opracowuję Mojo (myślę, że to zwykła klasa) dla mojej niestandardowej wtyczki Maven. Na górze znajduje się Abstrakcyjny Mojo. Na przykład mam kilka innych niestandardowych Mojo, które tworzą dołączenia po stronie serwera. Mam kilka zmiennych statycznych i kilka metod util, na przykład pobranie nazwy systemu operacyjnego, naprawienie separatora plików w celu używanego systemu operacyjnego itp. Stworzyłem abstrakcyjną Base Mojo, która rozszerza Abstract Mojo i umieszczam w niej wszystkie zwykłe rzeczy. Kiedy tworzę Mojo (tj. Dołączanie po stronie serwera), rozszerzam je z mojego Base Mojo. Jednak czy powinienem pomyśleć, że powinienem oddzielić zmienne i używać metod, czy nie i jakiego rodzaju wzorcem powinienem się kierować. Aby było jasne, jest to: * **AbstractMojo** domyślnie na górze (nie mogę tego zmienić) * **BaseMojo** klasa abstrakcyjna, która rozszerza **AbstractMojo**, która ma metody util i statyczne zmienne systemowe * * *CustomMojo** rozszerza **BaseMojo** i ponosi odpowiedzialność. Masz pomysły jak zrealizować projekt pod moje potrzeby?


title: Rzeczy, których powinieneś się nauczyć w szkole, ale nie zwracałeś wtedy uwagi

text: To pytanie sprawiło, że pomyślałem, że było lepsze pytanie. Czego nauczyłeś się w szkole, co nie obchodziło cię wtedy, ale okazało się przydatne lub musiałeś się uczyć od nowa w miejscu pracy, ponieważ miałeś to w szkole, ale nie zachowałeś informacji i potrzebowałeś ich? (Mam na myśli prace związane z oprogramowaniem.) Myślę, że może to pomóc studentom w określeniu tego, na co naprawdę powinni zwracać uwagę, gdy są w szkole.


title: Czy lekceważenie projektowania może być pułapką zwinnych metodologii powodujących ciągłe przeróbki, czy też jest niezrozumieniem metodologii?

text: Od roku pracuję nad projektem zwinnym, aby przeprojektować aplikację ubezpieczeniową. Naprawdę lubię pracować w zwinnym środowisku, chociaż kadra zarządzająca i analitycy, z którymi pracuję, wciąż mają zakorzenione myślenie kaskadowe i sprawia, że przyjęcie nowego paradygmatu w kierunku zwinności jest trochę skomplikowane. Z punktu widzenia programisty czasami wydaje mi się, że skoro robimy „agile”, nie przemyślamy ani nie zastanawiamy się wystarczająco nad naszymi projektami i po prostu idziemy z nurtem i refaktorujemy później. Wiele razy kończy się to przeróbkami, ponieważ nigdy nie przykładamy wystarczającej ilości do niektórych elementów aplikacji. O ile rozumiem, agile jest jak posiadanie małych wodospadów i dostarczanie małych elementów na raz (iteracje), ale czasami tracimy ogólny obraz i ostatecznie płacimy za to później przeróbkami. Czy metodyki zwinne zachęcają lub tolerują prokrastynację bardziej niż tradycyjny wodospad? Czy to ciągłe przerabianie fragmentów oprogramowania o zdefiniowanych wymaganiach jest dopuszczalne? Czy ktoś inny doświadcza czegoś podobnego w swoich projektach?


title: Zasób dla wspólnych ballparków w projektach rozwojowych?

text: Czy ktoś wie o jakimkolwiek źródle, które daje kilka roboczogodzin dla typowych projektów rozwojowych? Zdaję sobie sprawę, że będzie się bardzo różnić w zależności od struktury/języka/poziomu umiejętności programistów, ale szukam tylko czegoś, co mieści się w granicach 50%. W obliczu klasycznej kompilacji vs kup vs użyj open source i nie chcę wybierać złej ścieżki. Dziękuję!


title: Najlepszy sposób na przeanalizowanie opcjonalnych reguł gramatycznych?

text: Dla zabawy zacząłem pisać odręczny parser. W przypadku prostych reguł działa, ale mam problem z opcjonalnymi regułami gramatyki. Zasady opcjonalne zaznaczyłem znakiem zapytania. Oto prosta zasada: reguła1: „AA”? "AB"? „Klimatyzacja”? „AD” Tak więc ciąg AA, AB i AC jest opcjonalny, ale AD jest wymagany. np.: "AAABAD" pasuje, "AAAD" pasuje, "AAAB" nie pasuje, "AD" pasuje, ... Potrzebuję algorytmu, a nie narzędzia regex lub czegoś takiego. Mogę to rozwiązać metodą brute force (więc próbuję każdej możliwej kombinacji reguł), ale myślę, że jest na to lepszy sposób.


title: Filtrowanie listy

text: Postaram się uprościć mój problem. Powiedzmy, że mam kolekcję (a dokładniej Listę) z różnymi typami elementów, dla wyjaśnienia załóżmy, że mamy obiekty „Osoba” z różnym wiekiem urodzenia i identyfikatorem. Reprezentuję taką osobę: `{<id>,<rok>}` W pewnym momencie chcę otrzymać podlistę wszystkich osób urodzonych w 1988 i 1989 roku oraz **jeśli** jest ** nie** osób urodzonych w tych latach, chcę wszystkie osoby urodzone w 1990: [{1,1988},{2,1988},{3,1982},{4,1995},{5,1989},{ 6,1989},{7,1990}] ==> [{1,1988},{2,1988},{5,1989},{61989}] [{11990},{2,1981 },{31983},{4,1993},{51981},{61989},{71990}] ==> [{61989}] [{11990},{ 21981},{31983},{4,1993},{51981},{61985},{71990}] ==> [{11990},{7,1990} ] ## Opcja 0 Na początku zastanawiałem się nad użyciem metody filter w bibliotece apache commons, ale to nie zadziałałoby, ponieważ musiałbym wiedzieć o wszystkich elementach na liście, aby zdecydować, czy dany element znajdzie się na liście podrzędnej czy nie, więc wykluczyłem tę opcję. ## Opcja 1 Najprostszym sposobem, jaki widzę, aby to zrobić, jest wykonanie pętli przez listę w poszukiwaniu elementów, które pasują do pierwszego warunku (1988 lub 1989), a następnie, jeśli nie mogę ich znaleźć, ponownie wykonaj pętlę, aby wyszukać elementy, które pasują do drugiego warunku (1900). Ale nie podoba mi się to, ponieważ trzeba wielokrotnie przewijać listę. ## Opcja 2 Inną opcją, o której mogę pomyśleć, jest przechodzenie przez listę tylko raz i posiadanie dwóch różnych podlist, jednej z elementami, które pasują do pierwszego warunku, a drugiej z elementami, które pasują do drugiego warunku. Na koniec, jeśli pierwsza podlista jest pusta, zwracamy drugą podlistę. Który z tych dwóch jest lepszy (bardziej wydajny)? Którego byś użył i dlaczego? Czy uważasz, że istnieje lepsze rozwiązanie niż te?


title: Dobra praktyka dla zwrotów w Pythonie

text: Ostatnio pracowałem nad prototypem kodu w Pythonie. Kod działał świetnie, potem zdałem sobie sprawę, że potrzebuję trochę więcej informacji zwrotnych od jednej z moich funkcji, więc zmieniłem instrukcję return z return x na return (x,y) Następnie wracając do refaktoryzacji istniejącego kodu zdałem sobie sprawę, że chyba że szukam wywołanie tej funkcji w całej bazie kodu Nie będę wiedział o żadnych problemach do czasu uruchomienia (a jeśli jest to jakiś marginalny przypadek) prawie nigdy i ryzykuję awarię programu z powodu nieprzechwyconego wyjątku skutkującego operacjami na niedopasowanych typach. Kontrastuję to z językami statycznie typowanymi, gdzie w czasie kompilacji dowiaduję się o wszystkich miejscach, w których zwrot nie jest niezgodny z oczekiwanym typem. Zastanawiałem się więc, czy istnieje jakaś konwencjonalna mądrość związana z typami zwracanymi w Pythonie, aby uniknąć tego grppingu przez nonsens kodu. P.S> Oczywiście lepsze wzorce projektowe rozwiązałyby ten problem lub nie używano języka kaczkowego, ale czasami zdarza się, że trzeba zmienić typ zwracany.


title: Preferowana metoda obsługi nieudanych operacji CRUD w Entity Framework (6)?

text: Używam EF 6 jako mojego ORM. Próbuję zdecydować, jak radzić sobie z awariami CRUD. ### Opcja 1: Użyj wyjątków (własnych lub wbudowanych), aby poinformować warstwę internetową, że element nie został poprawnie zapisany. Obsługuj wyjątki w warstwie sieci Web jako komunikaty o błędach dla użytkownika lub wyzwalaj wpis AJAX, aby spróbować ponownie w zależności od przyczyny niepowodzenia. ### Opcja 2: Użyj jakiegoś obiektu jako opakowania dla operacji CRUD. Zwróć wyliczenie i wiadomość. Zapisuj analizator obiektów w warstwie sieci Web jako komunikaty o błędach dla użytkownika lub wyzwalaj wpis AJAX, aby spróbować ponownie w zależności od przyczyny niepowodzenia. Jestem też otwarta na inne pomysły. To są dwa, które wymyśliłem. Używam DB najpierw na starszej bazie danych. Ta struktura bazy danych jest w najlepszym razie słaba. Obecny sposób obsługi problemów polega na zwróceniu obiektu, który zawiera wyliczenie i wiadomość. Większość aplikacji trafiających do bazy danych jest wykorzystywana w aplikacjach winform. Po prostu piszę aplikacje internetowe, które ich uderzyły.


title: Czy utworzone przeze mnie aplikacje Facebooka będą nadal dostępne, jeśli dezaktywuję swoje konto?

text: Nie chcę mieć osobistego konta na Facebooku, mam je, ale zostało na jakiś czas wyłączone. Mój klient chciałby, abym przeniósł kilka aplikacji internetowych na Facebooka, które są hostowane w jego domenie, i wygląda na to, że nie mogę tego zrobić za pomocą mojego konta biznesowego, co nie ma dla mnie żadnego sensu, ponieważ dotyczy to rozwoju oprogramowania firmy, którą posiadam i którą prowadzę. Gdybym tymczasowo aktywował moje osobiste konto na Facebooku, aby utworzyć kilka aplikacji, czy nadal będą one dostępne na rynku, sądzę, że nazywa się to „Centrum aplikacji”, jeśli później dezaktywuję konto użyte do ich utworzenia?


title: Wzorzec klastra klasy celu-C

text: Mam wiele podkasów jednej klasy. Wybieram konkretną klasę na podstawie typu (proste wyliczenie). Podoba mi się pomysł klastra klasowego. Czy powinienem go użyć, czy po prostu utworzyć klasę fabryki (ale każda klasa w Object-c jest w rzeczywistości fabryką)? Jaka jest różnica między wzorcem fabryki a wzorcem klastra klas. Kiedy używać go w kodzie i dlaczego?


title: RESTful projekt API. Co mam zwrócić, jeśli nie ma wierszy?

text: Obecnie koduję API dla sieci społecznościowej za pomocą Slim Framework. Moje pytanie brzmi: jakie są najlepsze praktyki, gdy w strukturze json nie ma wierszy do zwrócenia? Powiedzmy, że to wywołanie **/v1/get/movies** zwraca 2 wiersze z tabeli nazw filmów: [ {"name": "Ghostbusters"}, {"name": "Indiana Jones"} ] Ale wtedy ja zadzwoń **/v1/get/books** i nie ma żadnych wierszy w tej tabeli. Czy powinienem po prostu zwrócić pustą strukturę? [ ] ...a może lepiej komunikat i kod błędu? [ "errors": { "message": "nie znaleziono dopasowań", "code": 134 } ] Co jest lepszą praktyką? (interfejs API będzie używany w aplikacjach na iOS i Androida) Dzięki!


title: Czy warto tworzyć mapę wiedzy dla oprogramowania?

text: Zasadniczo celem jest stworzenie wizualnej reprezentacji dokumentu specyfikacji oprogramowania. Ta wizualna reprezentacja uchwyciłaby różne scenariusze związane z oprogramowaniem. Korzyści: * Obraz mówi głośniej niż słowa * Złap scenariusze, aby musiały być obsługiwane przez programistę * Staje się mapą wiedzy dla innych * Może służyć jako punkt odniesienia * Może być również używany do transferu wiedzy. Pomysły: * Jeśli to możliwe, możemy dynamicznie modyfikować reprezentację wizualną, aby dodać scenariusze, gdy zostaną znalezione problemy z witryną, a nie zostały one początkowo zidentyfikowane. Nie wiem jak to zrobić. Ale chciałbym zainwestować czas, aby dowiedzieć się, jak to zrobić. Ale czy jest to warte wysiłku?


title: Awaria oprogramowania z powodu niedopatrzeń konserwacyjnych – przykład/studium przypadku

text: Przeprowadzam badania nad rolą utrzymania w rozwoju oprogramowania i wykorzystaniem metryk w cyklu rozwojowym. To, o co proszę, to punkt we właściwym kierunku lub ewentualnie bezpośredni przykład, w którym wystąpiły awarie oprogramowania z powodu niedopatrzenia kosztów utrzymania. Dokładniej, szukam przypadku, w którym wdrożony system zawiódł, ponieważ koszty/nakład pracy związany z konserwacją był zbyt duży, ponieważ prognozy metryk były słabe lub nie było ich wcale. Rozumiem, że to bardzo konkretne pytanie, ale męczyłem się myśląc o wszystkich znanych mi awariach oprogramowania i żadna z nich nie spełnia kryteriów.


title: Fałszywi przyjaciele? Słowo kluczowe "static" w C w porównaniu do C++, C# i Java

text: Dla mnie użycie słowa kluczowego `static` w C i językach takich jak C# i Java to „fałszywi przyjaciele”, jak „stać się” po angielsku i „bekommen” po niemiecku (= „to get” po angielsku), ponieważ oznaczają różne rzeczy. W języku C `static` oznacza, że funkcja lub zmienna jest dostępna tylko poprzez funkcje wewnątrz tego samego pliku źródłowego, porównywalne do funkcji `private` i elementów członkowskich w C++, Javie i C#. W C++, Java i C# `static` oznacza, że metody nie są członkami instancji klasy, ale efektywnie są mniej więcej jak funkcje C plus przestrzeń nazw. IMHO te dwie koncepcje są zupełnie inne, więc dlaczego projektanci C++, a później Javy i C# wybrali słowo kluczowe `static` dla tego zachowania? Czy istnieje logiczne połączenie, za którym tęsknię? **EDYTUJ** Wiem, że `static` w C nie reguluje dostępności w sposób podobny do `private` w C++, ale może być używany w ten sposób, zobacz http://stackoverflow.com/a/1479639/ 124983


title: Jak zachować adekwatność zespołów .Net w okresie wysokiego przepływu?

text: W jakim stopniu jako programiści .Net bierzecie pod uwagę zmiany między Windows XP, 7 i 8 przy wyborze środowiska programistycznego i bibliotek? Zbliżamy się do końca Windows XP; Windows 7 jest zauważalnie i agresywnie robi to znak; Windows 8 (Win R/T) jest na horyzoncie. Oczywiście **elastyczność** jest całkowicie oczekiwana z perspektywy klienta. Ale mamy do czynienia z rozwojem do obecnego systemu operacyjnego, Windows 7 ( _co zrozumiałe, niektórzy mogą twierdzić, że obecny system operacyjny to wciąż XP_ ) ... i utrzymaniem starszego kodu dla odchodzącego systemu operacyjnego, WinXP. Tak więc Windows 8 i cała dobroć Win R/T rozpala wyobraźnię i nie możesz powstrzymać się od zadawania sobie pytania: " _co będzie nadal aktualne za 5 lat?_ " Cóż, przynajmniej nie mogę się powstrzymać od zadania pytania . W okresach gwałtownej ewolucji systemu operacyjnego, jakie rozważania planujesz uwzględnić w projektowaniu aplikacji, bibliotekach, frameworkach i wyborze środowisk programistycznych; a robiąc to, jak określić długość trafności danego projektu?


title: Co spowalnia duże i złożone oprogramowanie?

text: Z powodu, który jest w dużej mierze nieistotny, zainstalowałem Delphi 7 po raz kolejny w tak długim czasie. Muszę przyznać, że byłem kompletnie zachwycony – w pewnym sensie nie byłem od dłuższego czasu. Wcale tak nie pamiętam. Instalacja trwała około 30 sekund. Uruchomienie go zajęło 2 sekundy i od razu nadawał się do użytku. Mogę nacisnąć "Uruchom" sekundę po uruchomieniu, a niecałą sekundę później pusty program jest już widoczny i działa. Hurra, komputery stają się o wiele szybsze! Ale powodem, dla którego zostałem zachwycony w ten sposób, jest to, że zwykle używam Visual Studio 2010, który wcale nie jest tak zgryźliwy. To prawda, Delphi 7 jest znacznie mniejszym systemem niż Visual Studio 2010, ale _wygląd_ ma tam wszystkie naprawdę potrzebne rzeczy: paletę kontrolną, projektant formularzy, edytor kodu z uzupełnianiem kodu. Zdaję sobie sprawę, że język może być prostszy, a uzupełnianie kodu może być dużo mniej wydajne, a IDE może nie być tak rozszerzalne i bogate w funkcje, ale nadal: nie rozumiem, jak (tj. przez jaki mechanizm) ma wiele dodatkowych funkcji (których być może jeszcze nie uruchomiłem) powoduje, że system taki jak Visual Studio zawsze wydaje się powolny w porównaniu. Osobom doświadczonym w pracy z systemami chciałbym zapytać o skalę Visual Studio: co powoduje ich spowolnienie? Czy są to warstwy na warstwach abstrakcji wymagane do utrzymania bazy kodu w ramach możliwości ludzkiego zrozumienia? Czy to sama ilość kodu, który trzeba przepuścić? Czy jest to współczesna tendencja do oszczędzania czasu programisty przy (niesamowicie ogromnym) koszcie w dziale cykli zegara / wykorzystania pamięci?


title: Jaki jest najlepszy wzorzec dodawania istniejącego elementu do kolekcji w REST API?

text: Projektuję pragmatyczny interfejs API REST i trochę utknąłem w tym, jak najlepiej dodać istniejące encje do kolekcji. Mój model domeny zawiera projekt, który ma kolekcję witryn. Jest to ścisła relacja wiele-do-wielu i nie muszę tworzyć podmiotu, który jawnie modeluje tę relację (np. ProjectSite). Mój interfejs API umożliwi konsumentom dodanie istniejącej witryny do projektu. Kiedy się rozłączam, jedyne dane, których naprawdę potrzebuję, to ProjectId i SiteId. Mój początkowy pomysł był następujący: 1. POST myapi/projects/{projectId}/sites/{siteId} Ale pomyślałem też o 2. POST myapi/projects/{projectId}/sites z encją Site wysłaną jako zawartość JSON. Opcja 1 jest prosta i działa, ale nie wydaje się całkiem odpowiednia, a mam inne relacje, które nie są zgodne z tym wzorcem, więc dodaje niespójność do mojego interfejsu API. Opcja 2 jest lepsza, ale prowadzi do dwóch obaw: * Czy powinienem utworzyć witrynę, czy zgłosić wyjątek, jeśli zostanie opublikowana nowa witryna (SiteId = 0)? * Ponieważ do utworzenia relacji potrzebuję tylko ProjectId i SiteId, witryna może zostać opublikowana z błędnymi lub brakującymi danymi dla innych właściwości. Trzecią opcją jest zapewnienie prostego punktu końcowego wyłącznie do tworzenia i usuwania relacji. Ten punkt końcowy oczekiwałby ładunku JSON zawierającego tylko ProjectId i SiteId. Proszę, pomóż mi wyrwać się z tego paraliżu analitycznego!


title: Czego możemy się nauczyć z języków ezoterycznych?

text: Języki ezoteryczne są intrygujące i mogą sprawić, że zaczniesz mówić „Hmmm…”, ale czego tak naprawdę możemy się od nich nauczyć? Czy warto poświęcić więcej niż 5 minut na napisanie aplikacji w języku ezoterycznym? Czy próbowałeś jednego, a jeśli tak, czego się nauczyłeś?


title: Globalne wartości stałe w całej witrynie MVC

text: Mój MVC (.NET) ma pewne stałe wartości w całej witrynie, takie jak numer telefonu, adres fizyczny, adres e-mail itp. Chciałbym raz zapisać tę wartość, aby przyszłe aktualizacje były łatwiejsze, gdy zmienią swoje dane. Aby uprościć moje pytanie, skupiłem się tylko na numerze telefonu. Moje pytanie brzmi, gdzie i jak przechowywać ten numer i jaki mam problem z decyzją. W tej chwili wybrałem przechowywanie go w pliku Global.asax jako metodę statyczną, np. public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { //logic } public static string GetPhoneNumber() { zwrot "012345 678 910"; } } Działa to bardzo dobrze, w moim kontrolerze mogę dodać referencje do tej metody i przypisać ją do ViewBag public ActionResult Contact() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); } Jak w wielu witrynach, numer telefonu będzie widoczny u góry każdej strony i dlatego umieszczenie go w `_Layout.cshtml` jest logiczne. Problem, który mam, polega na tym, że nie ma kontrolera (nie wiem) dla _Layout.cshtml i jedynym sposobem, w jaki mogę przekazać wartość, jest skonfigurowanie ViewBag.Phone dla każdego widoku, EG public class HomeController : Controller { / / // GET: /Home/ public ActionResult Index() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); zwróć Widok(); } public ActionResult About() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); zwróć Widok(); } public ActionResult Contact() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); zwróć Widok(); } To jest brudne i śmierdzące, ale nie mam pojęcia, jak mogę to poprawić. Czy powinienem przechowywać moje zmienne globalne w innym miejscu, czy jest lepsze podejście do tego, ponieważ jestem pewien, że jest to powszechny problem.


title: Czy można teraz tworzyć przeciętny kod w ramach przygotowań do nowych funkcji językowych?

text: Będę konkretna: Java 8 ma zawierać między innymi wyrażenia lambda oraz referencje do metod i konstruktorów. Jako programista Java jestem pod tym względem bardzo podekscytowany. W moim codziennym programowaniu dostrzegam coraz więcej możliwości, w których korzystanie z tych funkcji znacznie uprościłoby kod, który w innym przypadku byłby bardzo rozbudowany i żmudny. Zamiast referencji do metod i konstruktorów zacząłem używać coraz więcej refleksji i planuję jak najszybciej przenieść te ścieżki kodu do Javy 8. Używam specjalnych komentarzy (takich jak dobrze znane komentarze TODO: JAVA8), które mogą być używane przez IDE lub łatwo grepowane w celu znalezienia odpowiednich miejsc. Wszystkie te przypadki dokładnie testuję, aby upewnić się, że działają. Ale nadal muszę się zastanawiać, czy dobrze jest tak robić. Czy można teraz tworzyć nieco bardziej kruchy kod, który w końcu stanie się znowu solidny? GA dla Javy 8 to wrzesień 2013, więc nie jest to zbyt odległa przyszłość (pod warunkiem, że data premiery się nie przesunie). Ogólnym przykładem może być coś takiego: chcę utworzyć kilka obiektów kontenerów i wypełnić je danymi z bazy danych. Gdybym miał użyć standardowego podejścia Javy, mogłoby to wyglądać tak: class ContainerService { private Database database; prywatna mapa końcowa, ContainerInitializer> INICJALIZATORY = new HashMap(); { INICJALIZATORY.put(Foo.class, nowy FooInitializer()); } public Container getContainer(Class cls) { return INITIALIZES.get(cls).create(); } interface ContainerInitializer { Kontener create(); } class FooInitializer implementuje ContainerInitializer { Container create() { return new Container(database.getFoo()); } } } Kodem odblaskowym jest class ContainerService { private Database database; private final Map, String> INICJALIZATORY = new HashMap(); { INICJALIZATORY.put(Foo.class, "getFoo"); } public Container getContainer(Class cls) { Metoda m = Database.class.getMethod(INITIALIZERS.get(cls)); zwróć nowy Container(m.invoke(baza danych)); } } Zwróć uwagę, jak odpadają wszystkie pośrednie interfejsy i klasy. Wariant Java 8 jest czymś w rodzaju: class ContainerService { private Database database; prywatna mapa końcowa, ContainerInitializer> INICJALIZATORY = new HashMap(); { INICJALIZATORY.put(Foo.class, baza danych::getFoo); } public Container getContainer(Class cls) { zwróć nowy Container(INICJALIZATOR.get(cls).create(); } prywatny interfejs ContainerInitializer { Container create(); } } To znowu jest nieco dłuższe, ale ma bezpieczeństwo typu. Równie trywialne jest przejście od przygotowanego kodu do kodu końcowego za pomocą referencji metod. Oczywiście przykład jest nieco prosty. Wyobraź sobie, że kontener może zawierać wiele typów. W pierwszej metodzie dla każdego z nich byłaby dodatkowa klasa. W pozostałych dwóch metodach należy dodać tylko dane. Dzięki temu wszystko jest o wiele prostsze.


title: Moja uczelnia nie prowadzi kursów php, ponieważ jest to „łatwy” język programowania?

text: Spotkałem studenta z wydziału informatyki i odkryłem, że uczą tylko java i aspx. Zapytałem go, dlaczego nie uczyli php, ponieważ jest to najlepszy język programowania w sieci. Mówi, że był to "łatwy" (lub hobbystyczny) język programowania. Nie jestem pewien, co to znaczy. Jakie jest Twoje zdanie?


title: Jaka metodologia programowania byłaby dla nas odpowiednia?

text: Niestety, ktoś nauczył naszą wyższą kadrę zarządzającą słowa „Agile” i teraz chce, żebyśmy się do tego zbliżyli. Mam peryferyjne zrozumienie agile (w zasadzie), ale nigdy nie używałem go w praktyce. Z tego, co wiem, nie będzie to dobrze pasowało do naszej organizacji. W tej chwili rzeczy są dość grunge'owe. Oto jak to jest; Jesteśmy bardzo małym zespołem - dwóch programistów, jeden DBA, jeden projektant. Firma, w której pracuję, zarabia nieproporcjonalnie dużo pieniędzy w stosunku do swojej wielkości, z czego prawie 95% to czysta sprzedaż internetowa. Z perspektywy deweloperskiej jesteśmy narażeni na wiele inwazji na biurko w ciągu typowego dnia (jesteśmy wsparciem technicznym i deweloperem), praca może regularnie po prostu spadać z nieba w mgnieniu oka, jeśli członek zespołu sprzedaży obiecuje coś komuś . Podejmujemy się też większych projektów i są one koszmarem z ciągłymi przerwami. Niektórzy z nas zaczynają wyrywać sobie włosy! Plany projektów są sporządzane przez nietechnicznych menedżerów w arkuszach kalkulacyjnych programu Excel, w których próbują podzielić zadanie na krótkie zdania, które mogą zrozumieć i umieścić datę obok każdego z nich. Te daty są zawsze okropnie nierealne i często pomijane, a nasze spotkania (które mamy około tygodnia) są regularnie wypełnione niezręcznymi momentami z ludźmi pytającymi „dlaczego jeszcze tego nie zrobiono”. Jestem prawie pewien, że Agile nie jest dla nas. Teraz, biorąc pod uwagę, że (i próbowałem), ta firma _nie zmieni swojego postępowania_ i tylko zespół programistów jest gotowy na zmianę, czy istnieje metodologia rozwoju, którą moglibyśmy przyjąć, która jest odpowiednia, aby po prostu zaoszczędzić nam trochę zdrowia psychicznego?


title: Naruszenie zasad SQL

text: Muszę napisać przyzwoitą bazę danych, mniej więcej 1GB. Zaliczyłem tylko semestr wprowadzający dotyczący baz danych SQL. W trakcie kursu dowiedzieliśmy się, że model relacyjny w SQL nie ma domyślnej kolejności i dlatego podczas wykonywania zapytań zawsze powinniśmy mieć zmienną, która ustawia odpowiedni porządek w tabeli. Jednak przy wykonywaniu prac praktycznych uważam, że „wygodne” jest wykonanie zamówionej już małej, nieskończonej ilości stolików. Załóżmy na przykład, że masz 5 klientów i że ich informacje nigdy nie połączą ich danych. Czy dopuszczalne jest posiadanie potencjalnie nieskończonej liczby tabel z tabelą na klienta? Na przykład dołączam nowe wiersze już zamówione do bazy danych. Baza danych jest już zamówiona. Czy dopuszczalne jest wykonanie zapytania nieuporządkowanego i po prostu założenie, że jest ono uporządkowane niejawnie? Wszystko to narusza zasady, które znam. Mój szef, który nie zna się na bazach danych mówi, że jeśli to działa, to działa i że szybkość jest ważna. Co mu odpowie?


title: Korzystanie z częściowo zaimplementowanych interfejsów

text: Rozważ następującą hierarchię w notacji C++: class A { public: virtual void doStuff()=0; wirtualna pustka doOtherStuff()=0; }; klasa B:public A { public: void doStuff(); nieważne doOtherStuff(); }; class C:public A { public: void doStuff(); nieważne doOtherStuff(); }; Teraz załóżmy, że kod dla doStuff jest identyczny w B i C. Jaka jest najlepsza praktyka * implementowania doStuff w klasie D:public A i niech B i C pochodzą z A * Niech prawdziwe zadanie zostanie wykonane w funkcji, która jest wywoływany z doStuff zarówno w B, jak i C Jakoś ten ostatni wydaje się bardziej czysty, prawda? Należy zauważyć, że w B i C istnieją również inne metody o wspólnych implementacjach, a w modelu bazowym koncepcja D nie istnieje.


title: Co to znaczy być twórcą gier?

text: Jestem programistą .NET i głównie buduję GUI, ale oczywiście także czysty C# ze względu na potrzeby na poziomie architektury i bazy danych. Dla mnie twórcy gier w dyskusjach często są po prostu określani jako „twórcy gier”. Uważam, że jest to trochę zbyt płytkie i jestem ciekaw, co tak naprawdę oznacza „twórca gier”. Kim z kolei bylibyśmy dla twórcy gier? Czy zdarzają się konwersje z jednego kierunku w drugi i jakie są główne różnice w regularnym procesie rozwoju?


title: Myślenie o jednoczesnym kodowaniu tego samego projektu w dwóch językach. Dobry pomysł?

text: Czy to dobry sposób na naukę nowego języka? Lub rozwijać preferencje jednego języka? Myślałem o kodowaniu projektu zarówno w Pythonie, jak i Javie. Jedynym możliwym do przewidzenia problemem jest próba przeniesienia rozwiązań, które należy przemyśleć dla każdego języka. Czy to jest niepotrzebne? (Moje intencje nie mają na celu porównania.)


title: Najlepsza strategia na odkrycie usługi internetowej w sieci lokalnej?

text: Obecnie prowadzę badania do projektu. Konfiguracja jest prosta, mam komputer z uruchomioną usługą w mojej sieci domowej i każde urządzenie podłączone do tej samej sieci powinno być w stanie automatycznie wykryć usługę i korzystać z niej. Nie mam konkretnych wymagań technologicznych, czy to po stronie serwera, czy klienta. Klient wie o definicji usługi. Poza tym nie mam pojęcia, jaką strategię zastosować, na jaką technologię zwrócić uwagę lub czy powinienem wybrać usługę opartą na SOAP lub HTTP. Myślę, że przejście na HTTP z REST API jest najlepsze do kierowania na wszystkie urządzenia, ale jestem otwarty na wszelkie sugestie. Dziękuję.


title: SLF4J vs LOG4J Który preferować?

text: Widziałem to pytanie, ale nie odpowiada mi. Ma zupełnie nowy projekt. Prawie zawsze używałem Log4J, ale teraz widzę, jak SLF4J robi kilka fal. Czego Log4J nie mógł zrobić, a potrzebowaliśmy SLF4J? Czy to naprawdę ulepszenie. Czy powinienem go używać w projekcie, który będzie miał również API dla innych do rozszerzenia?


title: Jak znaleźć źródło mylących problemów?

text: Kilka razy po opublikowaniu na Stack Overflow odkryłem, że problem, który mam, jest nieco specyficzny i może mieć problemy zakorzenione w innym miejscu mojego kodu. Są one bardzo trudne do rozwiązania za pomocą pytania i często otrzymuję słabe lub nieistotne odpowiedzi. Kiedy problem jest zbyt zlokalizowany lub zbyt złożony, aby Stack Overflow mógł być wykorzystany, co powinienem zrobić, aby rozwiązać problem, aby można go było rozwiązać? Jak mogę zwrócić się do kolegów lub grup użytkowników z takimi problemami?


title: Nowy projekt PHP, jak najlepiej go zaprojektować

text: Zrobiłem już projekt PHP i zrobiłem kilka rzeczy bardzo źle :) Po prostu miałem wszystkie strony jako skrypty z php zmieszanym z html. Nie używałem też frameworka takiego jak cakephp. I tak naprawdę nie używałem obiektów, ani nie miałem żadnego zestawu testów. :) Tym razem chcę to zrobić dobrze. Co powinienem zrobić w zakresie dobrych praktyk? A czego nie używam? Jakieś sugestie? Porady?


title: Co powinienem studiować, aby móc dołączyć do projektu open source w C++?

text: Uczę się C/C++/Oracle/Unix. Zastanawiam się nad stworzeniem jakiejś aplikacji samodzielnie, ale nie mam pojęcia, co jeszcze jest wymagane. Weźmy przykład C++. Mam bardzo podstawową wiedzę na ten temat (typy danych, koncepcje OOP, wektory, obsługa plików, obsługa wyjątków itp.). Nie jestem jednak ekspertem. Właśnie przeczytałem jedną książkę o C++ i niewiele wiem o grafice w C++. Wszedłem na codeplex.com (strona open source do programowania i rozwoju), mieli kilka projektów w C++, które szukają programistów. Teraz to wykracza poza moją wiedzę, ale chcę coś zbudować. Jeśli nie, to chcę dowiedzieć się więcej, aby to zrobić, ale nie mam pojęcia, od czego zacząć i jakie tematy materialne, książki do przeczytania. Jest tak wiele rzeczy związanych z aplikacją: pliki .exe, pliki .dll i wiele innych 1) Czy myślę we właściwym kierunku? 2) Czy można to zrobić samemu lub być częścią tak dużych projektów open source online? Jakie rzeczy muszę zebrać online i uczyć się? Proszę o pomoc, w miarę możliwości proszę podać tematy, książki, strony internetowe, które mogą mi pomóc w nauce i dążeniu do osiągnięcia celu.


title: Czy "Właściwość" w C# kosztuje dużo?

text: Mam klasę utworzoną w jakiejś przestrzeni nazw, na przykład `SomeNameSpace.SubNameSpace.StaticClassName` Oto fragment kodu z innego pliku kodu, w którym chcę użyć tej klasy wiele razy, więc utworzyłem właściwość w pliku kodu w ten sposób // Wystarczy podać alias dla długiej nazwy "SomeNameSpace.SubNameSpace.StaticClassName.PropertyName" public StaticClassName ServerProxyAlias { get { return SomeNameSpace.SubNameSpace.Instance.PropertyName; } set { SomeNameSpace.SubNameSpace.Instance.PropertyName = wartość; } } **Czy jest jakiś problem z wykonaniem tego?**


title: Jakie są dobre powody, by używać wielkich liter w słowach kluczowych SQL?

text: Wydaje się, że jest wielu programistów, którzy piszą swój kod SQL, używając wielkich liter: SELECT kolumna FROM tabela INNER JOIN tabela ON warunek WHERE warunek klauzula GROUP BY HAVING warunek Zastanawiam się, dlaczego ludzie trzymają się tego podejścia? Oczywiście jest to od dawna ustanowiona konwencja - ale nigdy nie spotkałem się z RDBMS, który _wymaga_ wielkich liter. Osobiście uważam, że SŁOWA KLUCZOWE, KTÓRE krzyczą, zwracają uwagę na dokładnie niewłaściwą część zapytania, dlatego piszę słowa kluczowe małymi literami. Jednak wystarczająco dużo osób używa tej konwencji, że wydaje mi się, że czegoś mi brakuje, stąd to pytanie.


title: Jak radzisz sobie z "pierdami mózgu"?

text: Z pliku żargonu: _brain fart: n. Rzeczywisty wynik braino, w przeciwieństwie do mentalnej usterki, jaką jest sam braino. Np. wpisanie dir na polu Uniksa po sesji z DOS._ Ostatnio pracowałem z JavaScriptem i Pythonem i popełniłem błędy, takie jak wpisywanie, w Pythonie, function foo(argument1, argument2): To nie jest czysty JavaScript, ale to również nie działa w Pythonie. Jeden z moich ostatnich postów, http://serverfault.com/questions/506403/why-is-my-root-url-serving-up-a-404-under-apache/506452?iemail=1&noredirect=1#506452, chodziło o to, dlaczego czysta, prosta, działająca i raczej niewielka zawartość DocumentRoot nie była wyświetlana. Odpowiedź była taka, że popełniłem błąd, którego nie pamiętam przez lata pracy z Apache: umieściłem przecinki między wpisami ServerAlias i dlatego (całkowicie odpowiedni) DocumentRoot podawał ServerError. (A czy wspomniałem, że spędzam dużo czasu na kodowaniu, gdzie oddzielenie przez ", " było właściwym sposobem oddzielenia?) Czy tego rodzaju rzeczy po prostu nie podlegają negocjacjom? Czy są sposoby na ich złagodzenie i zrekompensowanie?


title: Co wygeneruje dla mnie plik macierzy sąsiedztwa z określoną topologią?

text: Piszę aplikację, która pobiera plik określający macierz sąsiedztwa i używa go do skonstruowania grafu (w tym przypadku skierowanej sieci społecznościowej). To, co chciałbym zrobić, to określić rozmiar macierzy, a następnie wygenerować macierz sąsiedztwa o jednej z następujących topologii: pierścieniowej, hierarchicznej, w pełni połączonej, losowej i smallworld (każdy węzeł x stopnie oddzielenia od siebie). Idealnym wyjściem byłby plik tekstowy. Nie mogę stworzyć tych plików ręcznie, ponieważ rozmiar jest w tysiącach^2... W pełni połączone i losowe nie są wymagane w 100%, ale byłoby fajnie, mogę je po prostu zaimplementować w kodzie. Przeczytałem rozprawę, w której określono, że używał aplikacji znajdującej się pod adresem http://ww2.cs.mu.oz.au/~tmill/graphtastic.tgz ...ale wygląda na to, że już nie istnieje, więc nie jestem pewien, co robić. Myślałem, że będzie mnóstwo takich aplikacji, ale nie widzę żadnych. Czy istnieje program, który mógłby wygenerować macierz sąsiedztwa z konfigurowalną topologią do pliku tekstowego?


title: Zwinne historie użytkowników i kryteria akceptacji

text: Po raz pierwszy piszę zwinne historie użytkowników i historie akceptacji i liczyłem na informacje zwrotne od doświadczonego menedżera produktu lub programisty. Muszę tylko uchwycić główne punkty w kryteriach akceptacji. ## User Story JAKO zarejestrowany poszukujący pracy CHCĘ stworzyć i edytować moje CV w interfejsie użytkownika na moim urządzeniu mobilnym, ABY pracodawcy i osoby rekrutujące mogły przeglądać moje podsumowanie kariery i dane kontaktowe ## Kryteria akceptacji 1. Użytkownik musi zalogować się do zarejestrowane konto w celu utworzenia CV 2. Użytkownik nie może zapisać CV, jeśli wszystkie wymagane pola w formularzu nie są wypełnione 3. Użytkownik powinien mieć możliwość edycji i usunięcia formularza w dowolnym momencie 4. Dane z zapisanego formularza są przechowywane w baza CV 5. Tylko zarejestrowani Rekruterzy i Pracodawcy mogą przeglądać CV i dane kontaktowe użytkowników 6. Konto użytkownika poszukującego pracy jest połączone i zsynchronizowane zarówno w wersji mobilnej, jak i stacjonarnej Czy to kryterium akceptacji brzmi odpowiednio dla danej historyjki użytkownika? Czy jest jakiś sposób, aby mogli być bardziej skoncentrowani, a jeśli tak, to w jaki sposób?


Aby zapoznać się z definicjami i przykładami „stanu”, zobacz: http://en.wikipedia.org/wiki/Program_state , http://en.wikipedia.org/wiki/Finite_state_machine , http://en.wikipedia.org/wiki /State_diagram Schemat przedstawiający bardzo prosty przykład, zauważ, jak aktualny stan zmienia sposób działania kołowrotu, gdy to samo wejście (włożenie monety, pchnięcie kołowrotu) jest podane dwa razy z rzędu: http://en.wikipedia.org /wiki/File:Turnstile_state_machine_colored.svg Zastanawiałem się przez chwilę nad tym pytaniem i nie wymyśliłem nic innego jak: 1. Zmniejsz zakres/funkcje projektu/oprogramowania. 2. Zepchnij ciężar podejmowania inteligentnych decyzji na użytkownika i/lub dostarcz programowi „ściągawkę”, która ułatwia podejmowanie decyzji (na przykład: zamiast próbować napisać program, który prowadzi samochód przy użyciu tylko dwóch kamer internetowych, możesz osadź znaczniki punktów na drodze co 100 stóp, umieść specjalne odblaskowe znaczniki między pasami i użyj bazy danych map terenu, aby pomóc programowi w podejmowaniu decyzji; wymagałoby to pracy geniusza na poziomie Tesli/Newtona [zakładając, że program może rób takie rzeczy jak (1) unikaj zwierząt, pozostałości po eksplodujących oponach itp., jednocześnie podejmując mniej drastyczne środki w przypadku takich rzeczy jak tekturowe i plastikowe butelki, (2) zajmij się blokowaniem punktów orientacyjnych i wskaźników spowodowanych przez inne pojazdy, (3) dostosuj do warunków pogodowych itp. itd.] kontra ktoś, kto potrafi napisać algorytm „połącz kropki”) PS: Te dwie metody zaklasyfikowałbym jako „oszukujące”, ponieważ znacząco zmieniasz wejście/wyjście programu. W pierwszym przypadku zmniejszasz swój program do zera, a w drugim przerzucasz większość ciężaru podejmowania decyzji na tego, kto utrzymuje bazę danych i system tranzytowy. Czy istnieją jakieś słuszne sposoby eliminowania/redukowania stanu?


title: Używanie „kontekstowych” nazw klas CSS

text: Dziś rano znalazłem na biurku notatkę z kilkoma wskazówkami od wyższego programisty, który przeglądał jakiś HTML/CSS, który ułożyłem. Jedną z jego sugestii było, abym „trzymał się z daleka od kontekstowych nazw klas i identyfikatorów, takich jak „w lewo” lub „w prawo”. Nigdy nie używaj kolorów jako nazw. Trzymaj się nazw semantycznych na podstawie treści”. Czy to słuszna rada? Czemu?


title: Sugestie dotyczące oprogramowania do edycji drzewa (jako narzędzia do wizualizacji)?

text: Próbuję wygenerować drzewo wywołań dla kodu, nad którym pracuję (nie napisałem go), aby pomóc mi to zrozumieć. Chcę móc ręcznie wprowadzić każdą funkcję i wywołane przez nią funkcje (jako dzieci), budując w ten sposób drzewo. Ale chciałbym, aby automatycznie organizował i pozycjonował wykres tak, aby nic się nie nakładało, bez konieczności przesuwania wszystkiego za każdym razem, gdy coś dodam. Na przykład, oto struktura rodzaju danych, które chciałbym umieścić, w gównianym formacie Lispesque: ( initAll //root node ( //root node's children - funkcje, które wywołuje ( initDisplay ()) ) //to dziecko jest liść (initControlBar ( //initControlBar - dzieci - funkcje, które wywołuje ( addButtons ()) ) ( setUpControlBarEvents () ) ) ) ( alertUserSystemReady () ) ) ) Myślę, że może to być narzędzie do tworzenia wykresów (drzewa są oczywiście podzbiorem wykresów ), ale nie wyobrażam sobie, żeby narzędzie do tworzenia wykresów miało możliwość automagicznego umieszczania rzeczy na właściwym poziomie. To, co podoba mi się w organizowaniu tych danych w postaci drzewa, to to, że istnieją różne poziomy, które pomagają mi wizualizować, co się dzieje. Próbowałem yEd i LucidChart, ale oba były dla mnie zbyt ręczne. Ponieważ drzewo będzie dość głębokie, potrzebuję czegoś, co może automatycznie zrestrukturyzować się za pomocą danych drzewa. Próbowałem również GraphViz, ale nie mogłem go uruchomić (jestem w systemie Windows i nie wiedziałem, co zrobić po instalacji). Google nie pomaga zbytnio w edytorze drzewa – daje mi strony takie jak http://bioinfo.unice.fr/biodiv/Tree_editors.html, które mają po prostu zbyt wiele do wyboru. Myślę, że w tym przypadku lepiej byłoby wykorzystać doświadczenie innych, więc przyjechałem tutaj. Czy ktoś zna jakieś narzędzia, które przybliżyłyby mnie do celu? Dziękuję!


title: jak zredukować lub zatrzymać duplikację wpisu relacji w treeview

text: Chcę utworzyć widok drzewa do wyświetlania lub pokazać relację członka rodziny. W tym celu stworzyłem 3 tabele tj. następujące. familyDetails->[f_id,fname,lname] relations -> [r_id,relation] .....//np. ojciec,matka,syn,itd. familyRelations ->[fr_id,fk_f_id1,fk_r_id,fk_f_id2] //aby pokazać A jest ojcem b. Tutaj problem polega na tym, że jeśli powiem, że A jest ojcem B i C, to zrobi to jeden wpis w tabeli `familyRelations`. Ale tutaj utworzy jeszcze jeden wpis dla B jest córką A. Więc w odwrotnej relacji (np. ojciec->syn lub syn->ojciec, itd.) utworzy wpis dla wszystkich przypadków. Więc jeśli nie ma N osób w rodzinie, to utworzy N * N wpisów w tabeli familyRelations. Jak zdefiniować relacje z innymi członkami. Ten przepływ jest właściwy, czy trzeba zmienić? Jestem w tym zdezorientowany. Jak więc rozwiązać ten problem. Czy jest jakiś inny sposób?


title: Pakiet oprogramowania oddzielnie od zawartości, która jest licencją CC BY-NC-SA 3.0

text: Mam zawartość CC BY-NC-SA 3.0 (patrz http://creativecommons.org/licenses/by-nc-sa/3.0/), czy oprogramowanie, które jej używa, może być nadal produkowane komercyjnie i po prostu pozwól użytkownikowi pobrać treść osobno? Innymi słowy, jeśli mam komercyjne oprogramowanie, które wykorzystuje zawartość z licencją CC, czy oprogramowanie nadal może być rozpowszechniane jako komercyjne i po prostu nie może być rozpowszechniane z tą zawartością… LUB, czy to nadal narusza tę licencję CC, a zatem oprogramowanie może nie być sprzedawany na rynku? Jeśli ktoś zna odpowiedź lub może wskazać mi miejsce, w którym mogę znaleźć odpowiedź, bardzo bym to docenił. Dziękuję!


title: Jak nauczyć się właściwego podejścia do implementacji połowy funkcji?

text: Prowadzę zespół programistów i chcę jak najczęściej wypuszczać nasz produkt (dostawa ciągła). W wielu przypadkach musimy zaimplementować funkcję, której wdrożenie trwa dłużej niż czas między wydaniami. Nadal chcę, aby ludzie codziennie zatwierdzali swój kod (Continuous Integration). Wiele razy wdrożenie nowej funkcji wymaga zmiany istniejącej funkcji, a istniejące funkcje oczywiście nadal muszą działać, nawet jeśli nowa funkcja nie jest jeszcze ukończona. Jeśli programista zastosuje **właściwe podejście** , może ostrożnie dostosować istniejące funkcje, a wszystko to nie stanowi problemu. Jednak jakie jest właściwie właściwe podejście? Mój własny umysł dostrojony do programowania podpowiada mi, co mam zrobić w każdym indywidualnym przypadku, ale muszę się dowiedzieć więcej i potrzebuję materiałów do czytania, które mogę przeczytać i polecić członkom zespołu. Lub jakakolwiek inna metoda uczenia się, jak nauczyć się tego podejścia, wystarczy. Oto jest pytanie. **Jak upewnić się, że członkowie zespołu nauczyli się właściwego podejścia do implementacji połowy funkcji?** Szukałem osób, które twierdzą, że mają strategie w tym zakresie, ale jeszcze ich nie znalazłem, z wyjątkiem osób, które piszą kilka przypadkowych opinii na temat temat. Być może nie używam właściwych słów do wyszukiwania, a może nikt nie wydał żadnych miarodajnych wskazówek na ten temat. **AKTUALIZACJA** Wybrałem najlepszą odpowiedź, ale charakter pytania utrudniał udzielenie jednoznacznej, wyczerpującej odpowiedzi.


title: Kapitał biznesowy dla kodu. Czy wskazane jest zawieranie takich umów?

text: Zastanawiałem się nad tym podejściem do projektu, nad którym zamierzam się rozpocząć i chciałbym usłyszeć od innych programistów o ich doświadczeniach w tworzeniu kodu dla equity. Czy ktoś naprawdę odniósł sukces w takim przedsięwzięciu.


title: Do czego służą operatory bitów?

text: Języki programowania często zawierają różne operatory bitowe (np. bitowe przesunięcie w lewo iw prawo, bitowe AND, OR, XOR...). Nie przyzwyczajają się one jednak zbyt często, a przynajmniej takie było moje doświadczenie. Czasami są używane w wyzwaniach programistycznych lub pytaniach wywiadu, lub rozwiązanie może ich wymagać, np.: * Bez użycia żadnego operatora równości, utwórz funkcję, która zwraca `true`, gdy dwie wartości są równe * Bez użycia trzeciej zmiennej, zamień wartość dwóch zmiennych Te z kolei prawdopodobnie mają niewiele zastosowań w **rzeczywistym**. Myślę, że powinny być szybsze, ponieważ bezpośrednio manipulują pamięcią na niskim poziomie. Dlaczego takie można znaleźć w większości języków programowania? Jakieś przypadki użycia w prawdziwym świecie?


title: Manipulacja bitami w C

text: Obecnie studiuję system komputerowy na mojej uczelni, a teraz uczymy się o manipulacji bitami w języku C. A ja jestem tylko ciekawostką, w jaki sposób nauka manipulacji bitami może pomóc nam w stworzeniu niezawodnego kodu? po co to jest, jeśli chodzi o prawdziwy problem świata? iw jaki sposób jest to bardzo przydatne w naszym programie ? Dziękuję Ci


title: Przewaga używania Swinga nad AWT

text: Dlaczego Swing jest preferowany nad AWT? Którego komponentu Swing można użyć do odtwarzania na nim wideo?


title: Czy są jakieś (bezpłatne) formaty wideo, które zawierają kanały dla dowolnych danych zależnych od czasu?

text: Jestem w trakcie pisania potoku analizy obrazu i natrafiłem na małą przeszkodę. Oto widok 30 000 stóp: 1. Obrazy przychodzą jako obrazy PNG zakodowane w base64 przez standardowe wejście 2. Obrazy są dekodowane i przetwarzane. Nie sądzę, aby szczegóły były szczególnie istotne, ale chętnie przedstawię szczegóły w formie edycji. 3. Po zakończeniu analizy, **cały strumień** musi zostać połączony w możliwym do przeszukania formacie ze znacznikiem czasu (to jest plik wideo pewnego rodzaju) i zapisany na dysku. Moje pytanie dotyczy „etapu 3”. Na tym końcowym etapie potoku każda ramka będzie miała zestaw powiązanych cech, które zostały wyodrębnione za pomocą analizy obrazu przeprowadzonej na „etapie 2”. Chciałbym, aby ostateczny format wyjściowy (format wideo) zachował te informacje wraz z ramką, która je „posiada”. Innymi słowy, należy myśleć o tym jako o oddzielnym kanale, który ewoluuje wraz z danymi wideo, powiązanym z tym samym odniesieniem czasowym. Pozwoliłoby to w szczególności traktować funkcje jako szeregi czasowe. Oto prosty diagram ilustrujący to, co staram się osiągnąć. -0 ms--16 ms--32 ms--48 ms--64 ms- ... n ms -> # kanał czasowy -F1----F2-----F3-----F4- ----F5---- ... Fn ---> # kanał wideo -1.1---3.6----5.0----2.6----3.1--- ... 11.2 -> # kanał danych 1 -100---105----120----96-----101--- ... 52 ---> # kanał danych 2 Jak widać na powyższym schemacie, istnieją dwa kanały danych (chociaż w idealnym przypadku format powinien obsługiwać dowolną liczbę kanałów), których wartości zmieniają się w czasie. Zauważ, że kanał `czasu` nie musi być rzeczywistym kanałem, _per se_, ale został zilustrowany jako taki, aby pokazać, że kanały wideo i danych są reprezentowane jako funkcja czasu. Przynajmniej chciałbym móc wypełnić każdy „indeks” każdego kanału wartością typu int lub float. Idealnie jednak chciałbym mieć odniesienie do pewnych danych binarnych o dowolnej długości. Oprócz zapewnienia powyższej funkcjonalności, ten hipotetyczny kodek powinien obsługiwać jakąś formę nowoczesnej kompresji wideo. Czy coś takiego istnieje?


title: Licencja „wirusowa”, która blokuje tylko działania prawne użytkownika i programisty przeciwko sobie

text: Ostatnio dużo myślałem o licencjonowaniu oprogramowania, ponieważ chciałbym trochę zakodować. Nie jestem ekspertem we wszystkich tych licencjach, więc wymyśliłem własny pomysł i zanim przejdę na papier, chciałbym się upewnić, że nie wymyśliłem koła na nowo, więc może bym mógł używać czegoś, co istnieje. Główną ideą mojej licencji jest zagwarantowanie swobody korzystania z oprogramowania, ale nie „wolności do” (pozytywne) (np. wolność posiadania kodu źródłowego), ale „wolności od” (negatywne) (wyłącznie od działań prawnych przeciwko tobie). Byłaby to „wirusowa” licencja typu copyleft. Będziesz mógł bez obaw robić wszystko, co chcesz z oprogramowaniem (i plikami binarnymi, np. inżynierią wsteczną), o ile zamieścisz informacje o autorze i/lub autorach, a wszystkie prace pochodne będą rozpowszechniane z tą samą licencją. Nie interesuje mnie nic, co ograniczałoby wolność firmy do robienia czegoś takiego jak „tivoization”. Po prostu próbuję osiągnąć coś, co zablokowałoby wszelkie działania prawne użytkownika i dewelopera, skierowane przeciwko sobie, z wyjątkiem podstawowej atrybucji. Czy istnieje coś takiego?


title: Jakie jest najlepsze rozwiązanie dla klasy API, która może mieć różne punkty końcowe? (iOS)

text: Jakie jest najlepsze podejście do tworzenia pojedynczej klasy API, w której różne żądania mogą wywoływać różnych dostawców api i jak tym zarządzać? Na przykład możesz mieć pojedynczą klasę 'API', która może mieć kilka metod, takich jak getProduct getImage getUser Jaki jest najlepszy sposób na zarządzanie tym, ale teoretycznie getProduct musi wywołać api.website1.com getImage musi wywołać api. website2.com/v1/ getUser musi wywołać api.website2.com/v2/ Ale nie ma nic do powiedzenia, że getImage może w przyszłości użyć website1.com lub że getUser może skończyć używając /v3/. dobry sposób na zarządzanie tym, w którym punkty końcowe (i poświadczenia) mogą potencjalnie ulec zmianie dla różnych żądań, ale dla programisty tylko korzystającego z klasy API singleton, nie są one zamieszane tam, skąd faktycznie pochodzi. Myślę, że właściwym podejściem jest upewnienie się, że żądania są zgodne z określonym interfejsem (niezależnie od tego, skąd pochodzą, np. typu User), ale myślę, że jest to konfiguracja wokół tworzenia instancji prawidłowego typu żądania API i właściwych poświadczeń, z którymi walczę rozejrzyj się. Domyślam się, że fabryka, która zwraca właściwego dostawcę, byłaby dobrym sposobem, ale nakazanie tej fabryce zwrotu właściwego dostawcy okazuje się trudne. To jest oparte na iOS, ale wszelkie pomysły koncepcyjne byłyby mile widziane dzięki


title: Kiedy należy używać var zamiast deklarować typ jawny?

text: var Id = z wartości w Enumerable.Range(0, 100) wybierz wartość; IEnumerable<int> ids = z wartości w Enumerable.Range(0, 100) wybierz wartość; foreach (var v w Id) { Console.WriteLine(v.ToString()); } foreach (var x w identyfikatorach) { Console.WriteLine(x.ToString()); } Oba wykonają tę samą pracę, ale jaka jest różnica?