title: Czy możesz wywołać dowolną klasę modelu php w MVC z kontrolera?

text: W tej chwili tworzę **proste MVC** i zastanawiam się, czy jest to „poprawne”, aby móc wywołać dowolną klasę modelu bezpośrednio z kontrolera, aby uzyskać dane do wysłania do widoku? Mam następującą strukturę folderów: .htaccess index.php /controller /model /templates Posiadam również potrzebne klasy modeli w folderze `/model`, w tej chwili próbowałem grać z `/model/model.class .php`, aby spróbować zbudować wszystkie części strony, ale już zaczyna się rozrastać i myślę, że lepiej byłoby całkowicie go wyciąć. Myślę, że lepszym podejściem jest użycie: elseif($_GET['type'] == "Profil") { $profile = new thread ($userId); $comments = $profile->getComments(); wymagają "szablonów/profil.php"; } Powyższe jest krótkim przykładem, ale czy to jak kontroler mógłby/powinien/może wyglądać, czy pierwsze podejście było lepsze, czy też zupełnie nie rozumiem punktu komunikacji modelu i kontrolera?


title: Skrypty Dokumentów Google

text: Mam około 10 arkuszy kalkulacyjnych Google Docs. Chciałbym dodać/przetworzyć wiersze z każdego z nich i wyświetlić podsumowanie tych danych w nowej zakładce w każdym arkuszu kalkulacyjnym. Jeśli więc ktoś doda wiersz do jednego z arkuszy kalkulacyjnych, karta podsumowania powinna zostać zaktualizowana we wszystkich z nich. 2 pytania: 1. Czy jest to możliwe przy użyciu skryptów google docs? 2. Jaki jest najlepszy sposób udostępnienia tego samego skryptu i uruchomienia go we wszystkich dokumentach?


title: „Cofnięcie” zawijania liczb całkowitych

text: Kilka lat temu natknąłem się na interesujący problem teoretyczny. Nigdy nie znalazłem rozwiązania i nadal mnie to prześladuje, kiedy śpię. Załóżmy, że masz aplikację (C#), która przechowuje pewną liczbę w int o nazwie x. (Wartość x nie jest stała). Kiedy program jest uruchomiony, x jest mnożone przez 33, a następnie zapisywane do pliku. Podstawowy kod źródłowy wygląda tak: int x = getSomeInt(); x = x * 33; plik.WriteLine(x); // Zapisuje x do pliku w formacie dziesiętnym Kilka lat później odkrywasz, że potrzebujesz oryginalnych wartości X z powrotem. Niektóre obliczenia są proste: wystarczy podzielić liczbę w pliku przez 33. Jednak w innych przypadkach X jest na tyle duże, że mnożenie spowodowało przepełnienie liczby całkowitej. Zgodnie z dokumentacją, C# będzie obcinał bity wyższego rzędu, aż liczba będzie mniejsza niż „int.MaxValue”. Czy w tym przypadku można: 1. Odzyskać sam X lub 2. Odzyskać listę możliwych wartości X? Wydaje mi się (chociaż moja logika z pewnością może być błędna), że jedno lub oba powinny być możliwe, ponieważ prostszy przypadek dodawania działa (Zasadniczo, jeśli dodasz 10 do X i zostanie on zawinięty, możesz odjąć 10 i ponownie zakończyć z X ), a mnożenie to po prostu wielokrotne dodawanie. Pomaga również (jak sądzę) fakt, że X we wszystkich przypadkach jest mnożone przez tę samą wartość - stałą 33. To tańczyło wokół mojej czaszki w dziwnych momentach od lat. Przyszło mi do głowy, spędzę trochę czasu próbując to przemyśleć, a potem zapomnę o tym na kilka miesięcy. Jestem zmęczony ściganiem tego problemu! Czy ktoś może zaoferować wgląd? (Uwaga: naprawdę nie wiem, jak to oznaczyć. Sugestie są mile widziane.) **Edytuj:** Pozwól mi wyjaśnić, że jeśli mogę uzyskać listę możliwych wartości dla X, są inne testy, które mogę wykonać, aby pomóż mi zawęzić go do pierwotnej wartości.


title: Czy Java to dobry początek nauki OOP?

text: Mam dobrego nauczyciela, który rozumie OOP. Jednak język, w którym jest ekspertem, to Java i nie chcę się uczyć Java. Moje pytanie brzmi, czy myślisz, że jeśli nauczę się OOP używając Javy, zmarnuję swój czas? A czy uważasz, że dobrze jest zacząć uczyć się OOP?


title: Jak wykrywać osiągnięcia w grach?

text: Pomyłkowo wysłałem to do stackoverflow, a teraz publikuję tutaj na podstawie sugestii na tej stronie ... To jest bardzo koncepcyjne pytanie na bardzo wysokim poziomie. Powiedzmy, że w aplikacji mam 4 różne akcje, na przykład: Prześlij, Udostępnij, Skomentuj i polub I chcę dać odznaki za osiągnięcia użytkownikom takim jak: * Rookie - Prześlij swoje pierwsze 5 plików * Prześlij Junkie - Prześlij 20 plików w 1 dzień * Night Crawler - Prześlij plik po północy * Share-a-holic - Udostępnij 10 różnych plików * Lubię wszystko - Jak 20 różnych plików, masz pomysł. Jaki jest najlepszy sposób, aby sprawdzić i zobaczyć, czy użytkownik osiągnął określone osiągnięcie bez konieczności kompilowania logiki osiągnięcia w moim kodzie? I .. - Zachowaj możliwość dodawania nowych osiągnięć po kompilacji (xml lub db) - Osiągnięcia muszą śledzić określone działania, liczbę razy i dodatkowe kryteria (takie jak pora dnia) - Wykrywanie powinno odbywać się w czasie zbliżonym do rzeczywistego, aby użytkownik został powiadomiony niemal natychmiast po ukończeniu osiągnięcia Moje największe pytanie brzmi: jak rozpoznać osiągnięcie tych osiągnięć? Czy: 1) Po każdej akcji sprawdzam, czy... (w większości przypadków w czasie rzeczywistym) 2) Czy inny program przez cały czas sprawdza bazę danych pod kątem określonych reguł? (Najłatwiejsze) Czy jest inny paradygmat, którego mi brakuje? Czuję, że zdecydowanie tak jest, ponieważ w wielu grach (takich jak na przykład plecak odrzutowy na iOS) jestem powiadamiany o osiągnięciu, które odblokowałem w momencie, w którym je odblokowałem, co uważam za imponujące. Dziękuję Ci


title: Narysuj szachownicę w Javie

text: Czytam książkę o programowaniu i mam problem ze zrozumieniem kilku części tego kodu. Program rysuje szachownicę i koloruje nieparzyste kwadraty na czarno. import acm.grafiki.*; import acm.program.*; public class CheckerBoard extends GraphicsProgram { public void run() { double squareSize = (double) getHeight() / numRows; for(int i = 0; i <= liczba wierszy; i++){ for(int j = 0; j <= liczba kolumn; j++) { double x = j * rozmiar kwadratu; podwójne y = i * rozmiar kwadratu; GRect kwadrat = nowy GRect(x,y,squareSize,squareSize); square.setFilled((i + j) % 2 != 0); dodaj (kwadrat); } } } prywatny statyczny końcowy int numRows = 8; prywatny statyczny końcowy int numColumns = 8; Rozumiem większość kodu, ale nadal jestem trochę zdezorientowany. Moje pierwsze pytanie brzmi: jak dokładnie program przechodzi przez pętle for? Są zagnieżdżone, czy najpierw utworzy wszystkie kolumny (pętla j for)? A może zwiększa zarówno i, jak i j po zakończeniu bloku kodu? Po drugie, dlaczego ustawiam x = j, a y = i? x jest poziome, a j jest pionowe, czy nie powinienem ustawić x = i i y = j? Oba wydają się przynosić te same wyniki. Przede wszystkim chciałbym wiedzieć, jak za każdym razem działa pętla for. podstawowy przebieg lub dwa przez program. Każda pomoc byłaby mile widziana, dzięki!


title: Czy aplikacja napisana od podstaw w języku programowania musi być licencją?

text: Jest tak wiele języków programowania, takich jak PHP, Perl, Python, Java, C, C++ i wiele innych. Ten język programowania ma pewną licencję open source. Jeśli tworzę aplikację od podstaw, która nie jest związana z modyfikacją źródeł tych języków. Czy moja aplikacja musi być licencją open source? Istnieją miliardy aplikacji napisanych w tym języku? Cała aplikacja była open source? Nie rozumiem tego, czy kiedykolwiek istniał problem językowy? Myślę, że nie powinno być problemu z licencjonowaniem języka programowania, tak jak język mówiony .. albo mówię po angielsku, francusku lub w jakimkolwiek innym. Mogę napisać książkę w dowolnym języku bez mojej książki jako open source, czy to prawda???


title: Jak zaimplementować OpsDB z wersji Release It! autor: Michael T. Nygard

text: Niedawno czytałem Release It! książka Michaela T. Nygarda. W książce opowiada o implementacji OpsDB do zarządzania i rejestrowania statystyk wydajności aplikacji. Czy ktoś zaimplementował którąś z koncepcji w OpsDB? Próbowałem znaleźć kilka przykładów, ale mam problemy i naprawdę chciałbym coś takiego zaimplementować. Ta strona zawiera trochę informacji o szczegółach http://screamingtiger.blogspot.co.uk/2010/05/release-it-176-standards-de-jure-and-de.html w sekcji Baza danych operacji Patrząc na powyższe Nie jestem do końca pewien, jaka byłaby funkcja - czy liczy się aplikacja kliencka. Ponadto, jakie byłyby niektóre z typowych rzeczy do przechwycenia dla aplikacji internetowej. Jakakolwiek pomoc byłaby mile widziana


title: Jak zminimalizować konflikty scalania podczas korzystania z VCS bez blokady, takiego jak git?

text: Używam git od około czterech miesięcy. Chociaż podoba mi się większość jego funkcji, uważam za raczej niewygodne, że wielu programistów może jednocześnie wprowadzać zmiany w tym samym pliku, a następnie zachodzi potrzeba scalania. W rzeczywistości wolałbym czekać na odblokowanie pliku, niż żmudne i bolesne scalanie. Zastanawiałem się, czy istnieje etykieta zespołu lub przepływ pracy, aby obejść tę okropną sytuację. W moim idealnym świecie rozwoju nigdy nie byłoby potrzeby łączenia. Np. czy istnieje kombinacja zaczepów, poleceń i przepływów pracy dla git, aby zdalne repozytorium było powiadamiane, gdy lokalne repozytorium zmienia plik, tak aby inni programiści otrzymywali powiadomienie git, jeśli sami próbują modyfikować ten sam plik jednocześnie (np. uruchomić `status git` czy coś takiego)?


title: Używanie tekstury jako tablicy liczb całkowitych (OpenGL 3.3, shader w wersji 3.3)

text: Próbuję mieć coś w rodzaju jednolitej tablicy liczb całkowitych dla mojego Fragment Shadera (potrzebuję tylko dostępu do odczytu). Ponieważ to całkiem spory kawałek danych (nie tak duży, żeby wgrywanie go w każdej klatce nie było możliwe, ale na tyle, żebym chciał raczej tego nie robić). Zasadniczo chcę po prostu przekazać mu uniform informujący shader, gdzie jest ta „tablica”. Wierzę, że mogę do tego użyć tekstury 1D, ale nie wiem jak (właściwie nie wiem, jak zrobić wiele rzeczy, ponieważ po prostu nie mogę znaleźć odniesienia do GLSL 3.3, zawsze znajduję referencje dotyczące interfejsu API języka C). Brzmi to jak dość podstawowe pytanie i jestem pewien, że już gdzieś na nie udzielono odpowiedzi, ale wciąż szukam i nie mogę znaleźć tego, czego szukam.


title: Czy ktoś używał Hydry RemObjects do mieszania dużego projektu Delphi z nowymi dodatkami C#?

text: _(Mam nadzieję, że jest to odpowiednie dla programistów, a nie dla StackOverflow - mogę sobie wyobrazić, że zostanie zamknięte w SO, ponieważ nie ma oczywistej "właściwej" odpowiedzi.)_ Mamy duży projekt Delphi 2007 VCL, który używa takich rzeczy jak DBXpress, Report Builder, DevExpress oraz komponenty TMS (zarówno wizualne jak i niewizualne) itp. Z powodów, którymi nie będę Cię zanudzać, firma chciałaby rozpocząć dodawanie nowych modułów do programu za pomocą .Net (w szczególności poprzez C#). Przepisywanie od zera nie wchodzi w grę, a biorąc pod uwagę intensywne korzystanie z Report Builder i różnych innych fragmentów kodu firm trzecich, specyficznego dla Delphi, podejrzewam, że użycie czegoś takiego jak TurnSharp do regeneracji projektu C# również nie działałoby dobrze. **Idealnie chcielibyśmy zachować nasz kod Delphi Win32 VCL, ale dodawać nowe moduły (wtyczki, sekcje zawartej funkcjonalności, takie jak kreatory itp.) za pośrednictwem C#.** Rozważamy więc Hydrę RemObjects, a w ciągu najbliższych kilku tygodni prawdopodobnie spróbuj najpierw ocenić to w mniejszym, ale reprezentatywnym projekcie. Zastanawiałem się, czy ktoś miał doświadczenie w robieniu takich rzeczy z Hydrą...?


title: Czy programowanie w stylu imperatywnym (powiedzmy w Javie/C) jest bardziej podatne na błędy niż coś bardziej deklaratywnego?

text: Wiem, że programiści mają tendencję do defensywnego podejścia do swoich paradygmatów i narzędzi, których używają. Ale z twojego doświadczenia wynika, że z najbardziej ogólnymi, typowymi fragmentami kodu, które widzisz w Javie, C++ lub C, kod jest bardziej podatny na błędy niż podobny fragment kodu w deklaratywnym lub funkcjonalnym języku programowania. Na przykład w Javie może być wiele schematów i kodu konfiguracyjnego, aby wywołać procedurę docelową. Zwykle programiści mogą potrzebować przyjrzeć się szczegółom implementacji, aby naprawdę zrozumieć, co się stanie, jeśli podadzą lub nie zapewnią poprawnych zależności. Zwykle programista nigdy tego nie robi, więc kończy się to błędami NullPointerException i innymi błędami logicznymi.


title: Oprogramowanie do przenoszenia

text: Chciałbym wiedzieć, co byłoby potrzebne do studiowania i zrozumienia w zakresie platform obliczeniowych i systemu operacyjnego (Linux, Mac OS X i Windows), aby zostać inżynierem portowania oprogramowania.


title: Jak testować i optymalizować, gdy nie możesz odtworzyć środowiska?

text: W przeszłości pracowałem w różnych środowiskach. Aplikacje komputerowe, gry, elementy osadzone, usługi internetowe, zadania wiersza poleceń, witryny internetowe, raportowanie baz danych i tak dalej. Wszystkie te środowiska miały tę samą cechę: bez względu na ich złożoność, bez względu na ich rozmiar, zawsze mogłem mieć podzbiór lub wycinek aplikacji na moim komputerze lub w środowisku deweloperskim do przetestowania. Dziś nie. Dziś znajduję się w środowisku, którego głównym celem jest skalowalność. Reprodukcja środowiska jest zbyt kosztowna. Biorąc wycinek środowiska, choć wiarygodny (niektóre fragmenty musiałyby być symulowane lub używane w trybie pojedynczego wystąpienia, do którego nie są stworzone), w pewnym sensie przekreśla cel, ponieważ zasłania współbieżność i ładowanie tego prawdziwy system napotyka. Nawet mały system „testowy” ma swoje wady. Rzeczy będą się zachowywać inaczej, gdy masz 2 węzły i gdy masz 64 węzły. Moje zwykłe podejście do optymalizacji (zmierz, wypróbuj coś, zweryfikuj poprawność, zmierz różnice, powtórz) tak naprawdę nie działa tutaj, ponieważ nie mogę skutecznie wykonać kroków 2 i 3 dla części problemu, które mają znaczenie (niezawodność współbieżności i wydajność pod Załaduj). Ten scenariusz nie wydaje się jednak wyjątkowy. Jakie jest powszechne podejście do wykonywania tego rodzaju zadań w takim środowisku? Jest kilka powiązanych pytań: * to pytanie dotyczy braku sprzętu (takiego jak analizatory widma), który można (stosunkowo) łatwo emulować. * to pytanie dotyczy śledzenia błędów, które istnieją tylko w środowiskach produkcyjnych, co jest pomocne - ale jest to inny rodzaj aktywności.


title: Czy kosztowne operacje dla użytkownika są szkodliwe dla innych użytkowników?

text: Załóżmy, że użytkownik A robi coś drogiego (w odniesieniu do procesora i/lub pamięci), co zajmuje kilka sekund. Jednocześnie użytkownik B potrzebuje bardzo małej ilości czasu obliczeniowego. W tym przypadku, czy przetwarzanie dla użytkownika A znacznie spowolni przetwarzanie użytkownika B (może nawet blokuje?), czy też te sytuacje są obsługiwane w większości systemów? (Używam ASP.NET MVC, ale nie miałbym nic przeciwko bardziej ogólnej odpowiedzi)


title: Projekt bazy danych MySQL - Opinie

text: Wraz z bratem pracuję nad aplikacją internetową dla naszej firmy. Nasza aplikacja jest dość prosta, będzie rozwijana za pomocą php i mysql. * Klienci i dostawcy ABMs * Artykuły Zapasy (nie zarządzamy zapasami, ponieważ odsprzedajemy od naszych dostawców) * Zakupy * Saldo kont dla naszych klientów i dostawców Utknąłem na tabelach księgowych... Oto mój model: ![projekt bazy danych] (http://i.stack.imgur.com/jvRmR.jpg) Mam wątpliwości co do tabeli konta, zastanawiam się nad użyciem wyzwalacza, gdy zakupy zmieniają status (dostarczone do klienta), a następnie aktualizuję saldo konta, ale nie wiem, czy to model jest dobry do zarządzania Kontami dla moich Klientów. Szukam opinii o moich błędach!! Dziękuję Ci.


title: Czy istnieją alternatywy dla używania opcjonalnego typu w środowisku wielowątkowym?

text: Tworzę kolejkę MPMC w C++ i chciałbym dowiedzieć się, jaki byłby najlepszy interfejs dla metody `try_dequeue` (**nie interesuje mnie** jej implementacja). Chciałbym zapewnić metodę, która nie blokuje, jeśli kolejka jest pusta (jak robi to moja metoda `dequeue()`), ale jakoś powiadamia o tym wywołującego. Chociaż dostarczam również metodę `bool empty() const`, to niestety nie działa dobrze, ponieważ dla kolejki wielowątkowej robienie czegoś zgodnie z liniami `if(!queue.empty()) queue.dequeue();` nie zapewnia gwarancje. To, co aktualnie mam, to `T try_dequeue()`, które zgłasza wyjątek, jeśli kolejka jest pusta. Wydaje się, że jest to najbardziej intuicyjny interfejs, ale pusta kolejka nie jest sytuacją wyjątkową, a to strasznie przypomina używanie wyjątków do sterowania przepływem. Inną opcją byłoby `bool try_dequeue(T* t)`, które zapisywałoby do `t` tylko wtedy, gdy kolejka nie była pusta i zwracało, jeśli `t` zostało zapisane. Po użyciu powyższej metody wyjątku wydaje się to prawdopodobnie najmniej inwazyjne, ale wymagałoby, aby `T` było zarówno domyślnie konstruowane (lub w jakiś sposób trywialnie konstruowane, więc wywołujący może wykonać `T t; queue.try_dequeue(&t); `) i przypisywalne. Nie chciałbym jednak narzucać tych wymagań `T`, więc być może podejście podobne do Javy, takie jak `opcjonalny<T> try_dequeue()` jest w porządku. Jednym z drobnych problemów z tym jest to, że musiałbym zaimplementować własny (nie mogę użyć boost). Być może ważniejsze jest to, że interfejs wydaje się nadęty w tym sensie, że teraz przeciągam teraz inny typ tam, gdzie (miejmy nadzieję) można by go uniknąć, i podobnie jak sytuacja z `set::insert` STL wymaga od nas kopiuje parę, a następnie "rozkłada" jej argumenty, zmusza użytkownika do niezdarnego, długiego rytuału, który musi być powtarzany za każdym razem, gdy używa funkcji. Być może za bardzo martwię się użytecznością `opcjonalny<T>`, biorąc pod uwagę, że nie ma on żadnego z poważniejszych problemów niż pozostałe dwa podejścia, ale zastanawiam się, jakie byłoby najlepsze podejście tutaj? Czy jest to opcja „opcjonalna”? _Edytuj_ : Przyszło mi do głowy, że jest też trochę dziwaczna opcja `bool try_dequeue(std::function<void(T&)>)`, która wydaje się całkiem niezła (w rzeczywistości ta będzie miała najbardziej minimalny interfejs, jaki możesz mieć, gdzie nie ma potrzeby, aby żadna zewnętrzna logika ustawiała lokalną `T` na zwracaną wartość). Niestety wolałbym uniknąć narzutu poniesionego przez wywołanie rzeczywistej funkcji `std::function` i użycie funkcji szablonu `template<klasa F> bool try_deque(const F&)` również nie jest opcją, ponieważ jest to pochodna klasy (z ogólnego interfejsu kolejki).


title: Jeśli powinieneś mieć tylko jedno potwierdzenie na test; jak przetestować wiele wejść?

text: Próbuję zbudować kilka przypadków testowych i przeczytałem, że powinieneś spróbować ograniczyć liczbę asercji na przypadek testowy. Więc moje pytanie brzmi, jaki jest najlepszy sposób na przetestowanie funkcji z wieloma danymi wejściowymi. Na przykład mam funkcję, która analizuje ciąg znaków od użytkownika i zwraca liczbę minut. Łańcuch może mieć postać `"5w6h2d1m"`, gdzie `w, h, d, m` odpowiada liczbie tygodni, godzin, dni i minut. Gdybym chciał postępować zgodnie z zasadą „1 asercja na regułę testu”, musiałbym wykonać wiele testów dla każdej odmiany danych wejściowych? To wydaje się głupie, więc zamiast tego mam po prostu coś takiego: self.assertEqual(parse_date('5m'), 5) self.assertEqual(parse_date('5h'), 300) self.assertEqual(parse_date('5d') ,7200) self.assertEqual(parse_date('1d4h20m'), 1700) W jednym przypadku testowym. Czy jest lepszy sposób?


title: Utrzymanie modelu domeny zgodnego z rzeczywistymi danymi

text: Ostatnio moją uwagę zwrócił projektowanie oparte na domenach i zastanawiając się, jak takie podejście może nam pomóc, natknąłem się na następujący problem. W DDD powszechnym podejściem jest pobieranie encji (lub lepiej, zagregowanych korzeni) z repozytorium, które działa jako kolekcja tych encji w pamięci. Po pobraniu tych encji mogą one zostać zaktualizowane lub usunięte przez użytkownika, jednak po pobraniu są one zasadniczo odłączane od źródła danych i należy aktywnie informować repozytorium, aby zaktualizować źródło danych i sprawić, by było ponownie zgodne z naszą in-memory reprezentacja. Jakie jest podejście DDD do pobierania jednostek, które powinny pozostać połączone ze źródłem danych? Na przykład w naszej sytuacji pobieramy serię czujników, które podczas pobierania mają określony pomiar. Z biegiem czasu te wartości pomiaru mogą ulec zmianie, a nasza logika biznesowa w modelu domeny powinna odpowiednio reagować na te zmiany. Np. zdarzenia domeny mogą być zgłaszane, jeśli wartość czujnika przekroczy wstępnie zdefiniowany próg. Jednak stosując podejście oparte na repozytorium, te wartości czujników są tylko migawkami i są odłączone od źródła danych. Czy ktoś z was ma pomysł, jak rozwiązać ten problem zgodnie z podejściem DDD?


title: Czy istnieje teoria matematyki lub model stojący za projektowaniem języków programowania?

text: Próbuję zrozumieć, czy projekt języków programowania jest zbudowany na jakimś modelu teoretycznym. Natknąłem się na kilka linków opisujących teorię języka programowania, rachunek lambda, języki formalne i maszynę Turinga. Zgubiłem się w całej tej teorii, z czego zrozumiałem, że (dowolny ..?) język programowania jest zbudowany na rachunku lambda, co sprowadza się do kilku konstrukcji językowych. 1. czy moje rozumienie jest prawidłowe? 2. czy istnieją inne modele niż rachunek lambda? 3. Jeśli języki mają ten sam model, czy możemy użyć tego do konwersji kodu źródłowego z jednego języka na drugi?


title: Jak prawidłowo zaprojektować system księgowy wiele do wielu (opłaty/płatności)?

text: To jest tak samo pytanie o db/programowanie, jak pytanie o rachunkowość/matematykę, więc publikuję na wszystkich odpowiednich forach. Z góry dziękujemy za cierpliwość. Zasadniczo mam problem z owinięciem głowy wokół księgi płatności. Mój system ma trzy tabele: CHARGES, PAYMENTS i PAYMENTS_TO_CHARGES. Problem polega na tym, że część wymagań systemowych wymaga zarówno możliwości bezpośredniego powiązania płatności z OPŁATĄ, jak i umożliwienia członkom księgowania nadpłat (lub kredytów) na swoim koncie. Dlatego istnieje potrzeba śledzenia kredytów, a następnie zastosowania ich w razie potrzeby do przyszłych OPŁAT. Być może myślę o rzeczach z niewłaściwego punktu widzenia, ale OBCIĄŻENIA wyobrażam sobie jako DEBET, a PŁATNOŚCI jako KREDYT. Jednak wydaje się, że obaj mogą mieć DEBET / KREDYT w zależności od twojego podejścia księgowego. Tak więc moje pytanie -- oficjalnie -- jest najlepszym sposobem śledzenia/uzgadniania płatności i opłat, przy jednoczesnym dopuszczaniu nadpłat itp. Próbuję rozpracować tabele bazy danych i logikę biznesową, ale za każdym razem Rozwiązuję jeden problem, pojawia się odwrotny (lub odwrotny) przedmiot. Czy zezwolę relacji wiele-do-wielu na śledzenie dodatnich i ujemnych liczb na transakcję? Czy tworzę fałszywą uniwersalną opłatę, której dotyczą wszystkie kredyty? Czy tworzę całkowicie oddzielną tabelę KREDYTY? Jak możesz powiedzieć, prawdopodobnie przemyślam to, ale z pewnością jestem zdezorientowany. Gdyby wszystkie transakcje były gwarantowane 1 do 1, byłoby to oczywiście znacznie prostsze. Niestety nie są najlepsze.


title: Rozdzielczość kolizji z haszowaniem sondowania liniowego

text: Mam więc szybkie pytanie o metodę sondowania liniowego rozwiązywania kolizji w tablicach mieszających. Czyli z definicji metoda sondowania liniowego wyglądałaby następująco: while (hashTable[hash] != null) hash = (hash(key) + step) % tableSize; Ale w moim przypadku dokładnie wiem, jaki będzie rozmiar tabeli, znam wszystkie klucze, więc zastanawiam się, czy jest to prawidłowa alternatywna implementacja: while (hashTable[hash] != null) { if (++hash = = hashTable.length) hash = 0; } Przepraszam, jeśli zrobiłem to zbyt zagmatwane, ale sam jestem trochę zdezorientowany... Jeśli nie możesz dostać tego, o co pytam, bardzo pomocne byłoby proste wyjaśnienie, jak zaimplementować sondowanie liniowe, i ps: pracuję w javie. Wielkie dzięki


title: Do czego używasz makr w swoim edytorze?

text: Mój wybrany edytor to Notepad++. Ma możliwości makro, ale o ile mi się wydaje, nie widzę, jak mogę go użyć do czegokolwiek. Czy używasz w swoim edytorze makr, które ułatwiły Ci pracę? (do ogólnego użytku mam na myśli)


title: Język programowania? - Aby stworzyć aplikację (kurs eLearning), która będzie działać na komputerach PC, Mac, iPhone, iPad, Touch itp.?

text: Obecnie w pracy pomagam układać i tworzyć kursy eLearningowe we Flashu. Nasi starsi programiści mają wiedzę, jak to zrobić, chociaż - chciałbym wiedzieć, jak można przejść od konwersji kursu eLearningowego z Flasha do aplikacji na Maca i PC, wyglądającej podobnie do lekcji muzyki w Garageband? * Jaki język programowania został użyty do stworzenia Garageband na Macu? * Jaki jest najlepszy sposób na stworzenie aplikacji, która będzie działać na komputerach PC, Mac, iPhone, iPad, Touch itp., Zamiast używać Flasha i ActionScript do tworzenia aplikacji internetowych, które będą działać tylko w przeglądarce na komputerach Mac i PC? * Jakieś dalsze wskazówki? Dzięki Josh


title: Co to jest hack Kena Thompsona?

text: Czytałem kilka rzeczy, takich jak cm bell labs, ale nie mogłem tego wszystkiego zdobyć. Jak to naprawdę działa? Jaka jest w tym logika?


title: Jak powinienem opisać proces uczenia się cudzego kodu? (W sytuacji fakturowania.)

text: **Edycja:** Justin Cave zwrócił uwagę, że ten rodzaj komunikacji powinien być na pierwszym miejscu w moim cytowaniu / szacunkach. W takim przypadku nadal interesuje mnie, jakiego rodzaju języka ludzie używają do opisywania „istniejących działań związanych z nauką kodu”. Zwłaszcza dla firmy, która wcześniej nie miała do czynienia z dostawcami oprogramowania. **Zakończ edycję** Mam umowę na aktualizację oprogramowania wewnętrznego dla dużej firmy. Firma poprosiła o wiele nowych funkcji i kilka poprawek błędów. To moja pierwsza praca w stylu freelancera. Najpierw musiałem zapoznać się z działaniem aplikacji – nauczyłem się jej tak, jakbym był użytkownikiem. Następnie musiałem dowiedzieć się, jak działa oprogramowanie. Zacząłem od ogólnych pojęć, a następnie zawęziłem do niezbędnych szczegółów, zanim zacząłem pracować nad każdą poprawką błędów i funkcją. Przynajmniej na początku projektu zajęło mi dużo więcej czasu nauczenie się istniejącego kodu niż napisanie dodatkowych funkcji. Jak opisać proces uczenia się istniejącego kodu na fakturze? (Ta część firmy zwykle robi rzeczy we własnym zakresie, więc nie ma dużego doświadczenia w kontaktach z wykonawcami oprogramowania takimi jak ja i obawiam się, że mogą nie rozumieć narzutu uczenia się kodu innej osoby). Nie chcę po prostu przypisywać czasu uczenia się do aktualizacji funkcji, ponieważ w niektórych przypadkach „proste zadanie” wyglądałoby, jakby zajęło mi to zbyt dużo czasu. Chcę podzielić fakturę na odpowiednie kroki i poinformować, że naliczam duże koszty uczenia się kodu innej osoby, zanim będę mógł dodać do niego własny. Czy istnieje standardowy sposób opisywania tego rodzaju czynności podczas wystawiania faktur za pracę?


title: Czy w Pythonie lepiej jest zdefiniować moduł z funkcjami, czy moduł z klasą, która zawiera funkcje?

text: W moim kodzie każda z powyższych dwóch opcji działałaby równie dobrze, ale jestem zainteresowany poznaniem zalet i wad obu podejść.


title: Czy w aplikacji internetowej można grupować wiele stron w jednej klasie widoku lub w jednej klasie na stronę?

text: Jeśli budujesz aplikację internetową i masz komponent do zarządzania użytkownikami, zaleca się wykonanie: class UserAdminView extends View { } lub class UserAdminUpdateView extends View { } A co z kontrolerami? Myśli?


title: Programujesz „wszystko” w HTML5?

text: Aplikacje HTML 5 w przeglądarce naprawdę wydają się startować. Używam src:kit w Google Chrome od kilku tygodni i bardzo mi się podoba. Z zawodu jestem programistą ASP.Net (C#/MVC3) i w przeszłości zajmowałem się programowaniem kilku elementów WebForms. Wraz z rozwojem aplikacji dla Windows 8 wkraczających w branżę lokalnych aplikacji HTML5 i głównych przeglądarek na smartfony obsługujących instalację HTML5, a także wielu platform ją obsługujących (na przykład PhoneGap i Titanium), czy już/niedługo będziemy w tym punkcie? że mógłbym stworzyć aplikację, która byłaby w pełni "instalowalna" do uruchamiania jako _standalone_ na _każdej_ platformie? Zdaję sobie sprawę, że baza danych (lub wstaw tutaj swój magazyn danych) byłaby również potrzebna, więc konieczne byłoby dodanie tam innego języka dla oprogramowania pośredniczącego. C# na Mac/Linux z Mono jest możliwe, ale Mono generalnie tworzy tylko aplikację GTK+, więc prawdopodobnie musiałbym stworzyć inny wrapper, aby pomieścić aplikację… Myślę. Jakieś sugestie dotyczące lepszego języka do wykorzystania jako oprogramowanie pośredniczące? Tj. dla ułatwienia transportu - mam znacznie więcej doświadczenia z C# niż cokolwiek innego, więc chciałbym coś z tej rodziny, jeśli będę musiał zrobić coś innego. Zasadniczo, jak daleko jesteśmy od tego? Co jeszcze musi się zmienić? Co najważniejsze, jeśli jest to możliwe (w co wierzę, teoretycznie jest), jaki jest duży skok między tym, gdzie jesteśmy teraz, a tym, kiedy tam będziemy? To w końcu przekształci się w program, więc jest to całkowicie praktyczny problem, nad którym pracuję (zacznę programować po świętach). EDYCJA: Aby wyjaśnić, do „każdej” platformy dołączam co najmniej następujące elementy: Windows XP+/Mac OS X/Linux: każda dystrybucja w ciągu ostatnich 2 lat/iOS/Android/Blackberry 5+/Windows Phone 7+


title: Jak stworzyć oprogramowanie do darowizn

text: Mam wymóg stworzenia oprogramowania darowizn dla projektu. Czy ktoś wie, jak KickStarter zaprojektował ich? Jakie są zaangażowane elementy bezpieczeństwa? Jak utworzyć część przetwarzania transakcji kartą kredytową? Czy jest do tego jakaś wspólna biblioteka/usługa? Nadal jestem w fazie badań nad tym, więc wszelkie pomysły są doceniane! Witryna, dla której próbuję to zrobić, to http://www.problemio.com


title: Jak szybko przeszukiwać system plików podczas wyodrębniania/ekstrapolacji różnych danych i przekazywania opinii użytkowników?

text: Pracuję nad systemowym skanerem plików, który ujawnia informacje o różnych plikach (np. rozmiar, ostatnio używany, duplikaty itp.). Obecnie przechodzę przez system plików tylko raz, aby uzyskać dobry pomiar plików, które będę przetwarzać, a następnie przechodzę przez pętlę, wykonując faktyczne przetwarzanie (informacje o rozmiarze, informacje o hashowaniu itp.). Oczywiście od razu tworzy to całą warstwę „dodatkowego” przetwarzania, ale pozwala mi wykorzystać zdobyte wcześniej informacje do dostarczenia użytkownikowi pewnych „danych postępu”. Szukałem dobrego mechanizmu do wykorzystania, aby przyspieszyć proces, jednocześnie pokazując dane o postępach użytkownikom końcowym. Myślałem o stworzeniu oddzielnych wątków (jeden do dołączania plików do stosu, a drugi do odczytu ze stosu, gdy staną się dostępne), ale może to szybko wymknąć się programowo. Aby przyspieszyć początkowe skanowanie, obecnie wykonuję „znajdź ścieżkę” (lub jej odpowiednik w zależności od używanego systemu operacyjnego) i pobieram wszystkie dane wyjściowe. To jednak uniemożliwia mi negowanie całych podfolderów (jeśli użytkownik sobie tego życzy), ponieważ po prostu rekurencyjnie wyświetla wszystko. Niektóre systemy operacyjne mają opcje wiersza poleceń do negacji katalogów itp., ale potrzebuję rozwiązania wieloplatformowego. Tak więc, aaaaaawszystko, czy ktoś ma jakieś algorytmiczne sugestie dotyczące szybkości przy jednoczesnym zapewnieniu wysokiej jakości postępów? Nie jestem zasadniczo związany z żadnym konkretnym językiem. Bardziej szukam wyższego poziomu widoku tego, co ma się wydarzyć. To, co najlepsze.


title: Optymalny sposób przechowywania 18 miliardów kluczy, par wartości

text: Mam około 200 milionów nowych obiektów i 90-dniowe zasady przechowywania, dzięki czemu mam 18 miliardów rekordów do przechowywania w postaci par klucz-wartość. Klucz i wartość będą ciągiem. Jest to w zasadzie odwzorowanie unikalnego identyfikatora obiektu w aplikacji na unikalny identyfikator obiektu w rzeczywistej pamięci obiektów. Istnieje aplikacja, która ładuje obiekty do internetowego systemu operacyjnego. Dla każdego ładowanego obiektu tworzy 16-znakowy klucz ciągu, powiedzmy DataID. Sam system operacyjny sieci Web tworzy 40-znakowy klucz ciągu, powiedzmy ObjectID. Więc to, co próbuję zrobić, to utworzyć mapowanie między DataID -> ObjectID dla 18 miliardów obiektów. Nie znam mechanizmu używanego do tworzenia identyfikatorów. Będę miał do czynienia z: write(klucz,wartość) odczyt(klucz) usuń(klucz,wartość) Szukam pomysłów na optymalny sposób realizacji tego. Powinien być zoptymalizowany pod kątem odczytów i zapisów. Optymalizacja przestrzeni jest drugorzędna. Wiem, że Hadoop/NoSQL to jedna droga i prawdopodobnie innym rozwiązaniem byłyby rozproszone tabele Hash, ale kilka dodatkowych opcji pomoże mi zdecydować, które jest najlepszym rozwiązaniem. Relacyjna baza danych nie wchodzi w grę, ponieważ nie mamy istniejącego RDBMS w obecnym środowisku.


title: Czy obrazy powinny być przechowywane w repozytorium git?

text: W przypadku rozproszonego zespołu, który używa Git i Github jako kontroli wersji, czy obrazy powinny być również przechowywane w repozytorium git? W większości obrazy nie zostaną zmienione. Folder zawierający je będzie powiększał się tylko w miarę dodawania obrazów. Problem polega na tym, że folder obrazów może z czasem urosnąć do dużych rozmiarów przez połączenie dużych obrazów lub tylko ich dużej liczby. Czy jest to uważane za najlepszą praktykę? Jakie są inne alternatywy dla udostępniania plików binarnych potrzebnych w projektach, do których rozproszony zespół może łatwo uzyskać dostęp?


title: Czy COBOL nadal warto się uczyć?

text: Czy nauka języka COBOL nadal ma sens?


title: Dlaczego JSP przez serwlety do wglądu?

text: Chociaż serwlety wykonują zadanie wysyłania kodu HTML do klienta, programiści ważą JSP nad serwletami. Nawet kod JSP jest kompilowany do serwletu przed wysłaniem odpowiedzi do przeglądarki, dlaczego więc preferowany jest JSP? Jeśli używany jest aplet, można zaoszczędzić dużo pracy obliczeniowej.


title: Czy iCloud korzysta z systemu Windows Azure?

text: Właśnie przeczytałem ten artykuł na temat korzystania z platformy Azure przez iCloud: http://www.zdnet.com/blog/microsoft/is-apple-really-using-windows-azure-to-power-icloud/9687 Każdy wie, czy są jakieś prawda w tym?


title: Organizacja biblioteki w .NET

text: Napisałem bibliotekę operacji bitowych .NET jako część moich projektów (od `get MSB set` do bardziej skomplikowanych transformacji bitowych) i zamierzam wydać ją jako wolne oprogramowanie. Jestem jednak trochę zdezorientowany, jeśli chodzi o aspekt projektowy biblioteki. Wiele metod/transformacji w bibliotece ma różną endianowość. Prostym przykładem jest metoda `getBitAt`, która traktuje indeks `0` jako najmniej znaczący lub najbardziej znaczący bit, w zależności od używanej wersji. W praktyce odkryłem, że używanie oddzielnych funkcji dla różnych endianowości daje znacznie bardziej zrozumiały i wielokrotnego użytku kod niż założenie, że wszystkie operacje są "little-endian" czy coś takiego. Jestem naprawdę zakłopotany tym, jak najlepiej spakować bibliotekę. * Czy powinienem mieć metody, które mają wersje LE i BE, mają w sygnaturze parametr enum, np. „Endianness.Little, Endianness.Big”? * Czy powinienem mieć różne klasy statyczne z identycznie nazwanymi metodami? takie jak `MSB.GetBit` i `LSB.GetBit` Mówiąc o wiele szerzej, czy istnieje standard, którego mógłbym użyć w takich przypadkach? Jakiś przewodnik? Czy mój problem z projektem jest trywialny? Mam skłonność do perfekcjonizmu i czasami utknę w skomplikowanych kwestiach projektowych, takich jak ten... **Uwaga:** W pewnym sensie zdałem sobie sprawę, że używam „endianness” nieco potocznie, aby odnieść się do wartości zamówienia/miejsca cyfrowe części składowe (czy to bity, bajty, czy słowa) w większej całości, w dowolnym ustawieniu. Nie mówię o endianowości na poziomie maszyny czy endianowości transmisji szeregowej. Tylko o semantyce wartości miejsca w ogóle. Więc nie ma kontekstu celowania w różne maszyny/techniki transmisji czy coś takiego.


title: jaka jest różnica w sekcji i podraporcie, gdzie używać wielu sekcji?

text: Podziel się swoją wiedzą na temat koncepcji Crystal Reports. 1. Chcę wiedzieć, jaka jest różnica w sekcji i podraporcie? Wiem o sekcjach domyślnych i możemy dodać nowe sekcje do raportu. 2. Jaki jest cel podraportu? kiedy powinniśmy używać podraportu zamiast sekcji? 3. Gdzie powinniśmy użyć wielu sekcji szczegółów w raporcie? 4. Czy sekcje służą do przenoszenia pola „Może rosnąć”, które będzie dynamicznie dostarczać dane?


title: Formalna definicja terminu „czysty język OO”?

text: Nie wyobrażam sobie lepszego miejsca wśród rodzeństwa SO, aby zadać takie pytanie. Pierwotnie chciałem zapytać "Czy Python jest czystym językiem OO?" ale biorąc pod uwagę kłopoty i pewien rodzaj dyskomfortu, którego doświadczają ludzie, próbując zdefiniować termin, postanowiłem zacząć od uzyskania jasnej definicji samego terminu. Byłoby raczej uczciwie zacząć od korespondencji dr. Alana Kay, który ukuł ten termin (zwróć uwagę na inspirację biologiczną analogią do komórek lub innych żywych obiektów). Istnieją następujące sposoby podejścia do zadania: 1. Przeprowadź analizę porównawczą, wymieniając języki programowania, które mogą wykazywać (lub nie wykazują) pewne właściwości unikalne i wystarczające do zdefiniowania terminu (chociaż Smalltalk, Scala, ~~Java~~ , i tak dalej - są możliwymi przykładami, ale IMO w ten sposób nie wydaje się ani kompletna, ani owocna) 2. Podaj formalną definicję (lub zbliżoną, np. w bardziej akademickim lub matematycznym stylu). 3. Podaj definicję filozoficzną, która całkowicie opierałaby się na semantycznym kontekście konkretnego języka lub doświadczeniu programowania a priori (musi być jakaś szansa na pomyślne wyjaśnienie przez społeczność). Moja aktualna wersja: _"Jeśli pewien język programowania (formalny) potrafi (gramatycznie) rozróżniać operacje i operandy, a także wnioskować o typie każdego operandu, czy ten typ jest obiektem (w sensie OOP), czy nie, wtedy nazywamy taki język językiem OO, o ile istnieje przynajmniej jeden typ w tym języku, który jest obiektem.W końcu, jeśli wszystkie typy języka są również obiektami, definiujemy taki język jako czysty (silny) język OO. „_ Byłbym wdzięczny za wszelkie możliwe ulepszenia. Jak widać, właśnie uzależniłem definicję od terminu „obiekt” (często w pełni określanego jako klasa obiektów). [EDYTUJ] Dodatkowo używam (na szczęście dobrze rozumianego) pojęcia _typ_ jak w typowanych językach. Programowanie typu danych lub programowanie zorientowane na typ jest nie tylko interpretacją składniową (tekstu programu, tj. jak traktować pewne wartości literałów i zmiennych danych - coś, co ewoluuje w kierunku bezpieczeństwa typów), ale może być przypisane do gramatyki języka i studiowane w sposób formalny (wykorzystując logikę matematyczną) jako tzw. systemy typów. Zauważ, że wymaganie od konkretnego systemu typów posiadania tzw. _typu uniwersalnego_ jest jednym ze sposobów definiowania czystości języka OO (są sposoby na rozwinięcie tego semantycznie). _NB_ _**jak odpowiedzieć_** : * pomaga, jeśli określisz książkę lub odniesienie, które wspiera/wyjaśnia twoje rozumienie terminologii i pojęć (zazwyczaj dobra definicja obejmuje lub odwołuje się do wszystkich powiązanych pojęć z wyjątkiem podstawowych). * jeśli to możliwe, wskaż wciętą kategorię swojej odpowiedzi/definicji, jeśli nie jest jasne, że inaczej (patrz wyżej: 1 - przykład języka, 2 - logika matematyczna, 3 - opis techniczny i filozofia programowania) * _klasyfikacja jest ważna_ (a także dlatego, że termin pure-OO jest włączone do terminu OO) odpowiadając spróbuj oddzielić elementy paradygmatu OO z innych dobrze znanych metodologii (i nie myl ich/nakładaj, np. typowe elementy programowania modułowego mogą być objęte/wcielone w programowanie OO): spróbuj aby odróżnić OOP od (włączając lub będąc częścią) programowania funkcjonalnego, programowania logicznego (szczególnie silnie wyspecjalizowanego), typów danych Abstarct (ADT), modułowego, metaprogramowania (ogólne i czas makrorozbudowy LISP), kontraktów (np. Eiffel), aspektu zorientowany (AO), (różnica między klasyfikacją deklaratywną i funkcjonalną oraz _historyczne_ definicje ustrukturyzowanej Dijkstry są jasne) _**o trudności w podaniu definicji formalnej_** : niespodzianka dość łatwo jest podać opis matematyczny OOP w postaci pewnego systemu logicznego (formalnego) (najprawdopodobniej opartego na typach) i definiującego jedno pojęcie po drugim. Można nawet spróbować zrobić coś bardziej praktycznego, stosując ten formalizm do sprawdzania bezpieczeństwa typów lub aspektów projektowania nowego języka niż tylko abstrakcyjna rozrywka lub ćwiczenia (także sformułowanie OOP w intuicjonistycznej teorii typów, typy zależne, niezależnie, w formalizmach FOL jako rachunek lambda i po prostu za pomocą teorii kategorii). Głównym punktem tutaj jest to, że _co nie powinno dziwić_, że takie sformułowania IMO są silnie stronnicze (wadliwe) przez najprawdopodobniej początkowo niepełne zrozumienie OOP (w inżynierii komputerowej) i kończą się prawie niedostępne później (a zatem prawie nie przyczyniają się do wstecznego rozwoju świata programowania - może z wyjątkiem pewnego odsetka znalezisk aplikacje z powrotem ze świata formalnego poprzez integrację z popularnymi językami). A więc tak, trudno podać dokładnie „dobrą” definicję, a nie tylko definicję. Ale jestem pewien, że pytam o to tutaj ze względu na wasze doświadczenie i bezpośrednie zaangażowanie, chłopaki.


title: Jak mogę uniknąć błędów inżynieryjnych PDT?

text: Jako programista z wystarczającym doświadczeniem, aby ocenić narzędzie, mogę powiedzieć, że PDT jest bardzo duże i ma niską wydajność dla PHP IDE. Staje się coraz większy wraz z wydaniem i wykładniczo wolniejszy wraz z rozmiarem projektów. Dodaj kilka dodatkowych reguł kolorowania składni i dosłownie się czołga, uzupełnianie kodu działa losowo, a budowanie obszaru roboczego trwa wiecznie. Czarna magia Java (-Xmx itp.) trochę łagodzi ból, ale to wszystko. Więc moje pytania to: 1. Dlaczego PDT jest takie? Jakie czynniki projektowe lub inżynieryjne doprowadziły do jego słabej wydajności? 2. Jak mogę uniknąć popełniania tych samych błędów we własnych produktach?


title: Jak rozbić warstwy Yocto w celu ciągłej integracji?

text: Budujemy oprogramowanie wbudowane w systemie Linux w oparciu o projekt Yocto. Mamy kilka różnych konfiguracji, które budujemy do różnych celów (ale ten sam cel). Zmagam się z najlepszym sposobem na skonfigurowanie ciągłej integracji dla tego projektu. Idealnie chciałbym móc ponownie wykorzystać większość artefaktów, aby ktoś pracujący nad konkretną warstwą mógł szybko uzyskać informację zwrotną. Jednak nie znalazłem żadnych dobrych sugestii, jak rozbić te kompilacje. Czy istnieje sposób na rozdzielenie różnych warstw, nad którymi pracujemy, na wiele kompilacji ze współdzielonymi artefaktami, tak aby deweloperzy otrzymali informację zwrotną z każdej kompilacji w kilka godzin?


title: Zacznij od nauczania klas

text: Na każdych zajęciach i w każdej książce o programowaniu, którą widziałem, zajęcia są wstrzymane. Uważa się, że są mylące i dziwne. Z pewnością miałem z nimi problemy. Ale w programowaniu zorientowanym obiektowo zajęcia są tak ważne, patrząc wstecz na moją edukację, że to prawie nielogiczne, że pozwolono mi pracować tak długo bez znajomości przedmiotów. Pomagam opracować kurs nauczania Pythona dla osób, które nigdy wcześniej nie programowały. Czy można uczyć programowania zaczynając przede wszystkim od zajęć? Czy nie można powiedzieć: „To jest klasa. Wypełnimy ją rzeczownikami i czasownikami, aby służyła naszym konkretnym/określonym potrzebom”?


title: Kiedy decydować się na wprowadzenie interfejsów (czysto abstrakcyjnych klas bazowych) w C++?

text: Załóżmy, że tworzysz funkcjonalność i masz 90% pewność, że klasa implementacyjna pozostanie sama. Gdybym był na tym stanowisku w Javie, prawdopodobnie nie używałbym teraz interfejsu, aby wszystko było proste. W Javie łatwo jest zrefaktoryzować kod i rozpakować interfejs później. W C++ refaktoryzacja nie zawsze jest taka prosta. Może wymagać zastąpienia wartości inteligentnymi wskaźnikami (ze względu na wprowadzenie polimorfizmu) i innych nietrywialnych zadań. Z drugiej strony nie podoba mi się pomysł wprowadzenia wirtualnych rozmów, kiedy jestem na 90% pewien, że nie będą potrzebne. W końcu szybkość jest jednym z powodów, dla których przedkłada się C++ nad prostsze języki.


title: Jaka jest różnica między CSDA a WPBiO?

text: To pytanie dotyczy certyfikacji IEEE CSDA i CSDP. Ukończyłem już kurs CSDA, który obejmował wszystkie obszary wiedzy w Software Engineering Body of Knowledge (SWEBOK). Myślę też o zrobieniu certyfikacji CSDP, ale nie mogę znaleźć nigdzie, co by mi mówiło, czym różni się od CSDA. Wiem, że jest skierowany bardziej do profesjonalistów niż do niedawnych absolwentów i wyobrażam sobie, że obejmuje te same obszary, co CSDA, ale bardziej szczegółowo. Niestety nie mogę znaleźć zbyt wielu dowodów na poparcie tego. To sprawia, że trudno uzasadnić mojemu szefowi, że powinien wydać na to kilkaset funtów z budżetu szkoleniowego grupy. Pytanie więc brzmi: **Co oferuje WPBiO, czego nie oferuje CSDA?**


title: Wady kodu kata

text: Code kata to koncepcja, która proponuje doskonalenie umiejętności programisty poprzez wielokrotne rozwiązywanie drobnych problemów, próbując ulepszać kod w każdej iteracji. Nazwa pochodzi z analogii do sztuki walki kata, gdzie formy (aka kata) to praktyki wykonywane w kółko prowadzące do ulepszeń. Od reakcji, którą otrzymałem do mojego ostatniego pytania na ten temat, chciałbym wiedzieć, jakie są wady tego podejścia?


title: Praca z danymi i metadanymi, które są rozdzielone na różnych serwerach

text: Podczas tworzenia produktu spotkałem się z sytuacją, w której moja grupa chce przechowywać metadane dla formularzy wprowadzania danych (pytania, układ, itp.) w innej bazie niż ta, w której przechowywane są zebrane dane. Dotyczy to głównie bezpieczeństwa, ponieważ chcemy, aby nasze metadane były dostępne publicznie, a zebrane dane były tak bezpieczne, jak to tylko możliwe. Myślałem o napisaniu usługi sieciowej, która dostarcza metainformacje, do których może uzyskać dostęp program do zbierania danych. Jedynym problemem, jaki widzę w tym podejściu, jest to, że frontend będzie musiał dopasować metadane do zebranych danych, co byłoby bardziej wydajne jako sprzężenie na zapleczu. Obecnie system ten ma działać na platformach .NET i MSSQL. Nie bawiłem się bibliotekami .NET działającymi w SQL, ale rozważam próbę stworzenia logiki, która wyciągnęłaby z usługi sieciowej, przekonwertowałaby metadane na tabelę, do której SQL może dołączyć i zwróciłaby połączone dane i w ten sposób metadane. Czy to rozwiązanie jest złym sposobem podejścia do problemu? Czy istnieje wzorzec lub „standard branżowy” polegający na łączeniu dwóch zestawów danych, które nie znajdują się w tej samej bazie danych?


title: Zrób schemat blokowy, aby zademonstrować zachowanie zamknięcia

text: Widziałem poniżej pytanie testowe któregoś dnia, w którym autorzy użyli schematu blokowego do przedstawienia logiki pętli, i pomyślałem, że byłoby interesujące zrobić to z bardziej złożoną logiką. Na przykład zamknięcie w tym natychmiast wywołanym wyrażeniu funkcji (IIFE) trochę mnie niepokoi: while (i <= qty_of_gets) { // potrzebuje IIFE (function(i) { obietnica = obietnica.then(function(){ return $.get("queries/html/" + product_id + i + ".php"); }); }(i++)); } Zastanawiam się, czy zobaczenie schematu blokowego przedstawiającego to, co się w nim dzieje, może być bardziej wyjaśniające. Czy można coś takiego zrobić? Czy byłoby to pomocne, czy po prostu niechlujne? Nie mam najmniejszego pojęcia, od czego zacząć, ale pomyślałem, że może ktoś chciałby się dźgnąć. Prawdopodobnie cały ajax mógł odejść i mógłby to być prosty powrót w ramach IIFE. ![test logiczny](http://i.stack.imgur.com/qicvE.png)


title: Czy pojedynczy obiekt konfiguracyjny to zły pomysł?

text: W większości moich aplikacji mam pojedynczy lub statyczny obiekt "config", odpowiedzialny za odczytywanie różnych ustawień z dysku. Prawie wszystkie klasy używają go do różnych celów. Zasadniczo jest to po prostu tablica mieszająca par nazwa/wartość. Jest tylko do odczytu, więc nie przejmowałem się zbytnio faktem, że mam tak duży stan globalny. Ale teraz, kiedy zaczynam testowanie jednostkowe, zaczyna to stawać się problemem. Jednym z problemów jest to, że zwykle nie chcesz testować z tą samą konfiguracją, z którą pracujesz. Jest na to kilka rozwiązań: * Daj obiektowi konfiguracyjnemu setter, który jest używany TYLKO do testowania, aby można było przekazać różne ustawienia. * Kontynuuj używanie pojedynczego obiektu konfiguracyjnego, ale zmień go z pojedynczego na instancję, którą przekazujesz wszędzie, gdzie jest potrzebny. Następnie możesz skonstruować go raz w swojej aplikacji i raz w testach, z różnymi ustawieniami. Ale tak czy inaczej, nadal pozostajesz z drugim problemem: prawie każda klasa może używać obiektu konfiguracyjnego. Tak więc w teście musisz ustawić konfigurację dla testowanej klasy, ale także WSZYSTKIE jej zależności. To może sprawić, że Twój kod testowy będzie brzydki. Zaczynam dochodzić do wniosku, że tego rodzaju obiekt konfiguracyjny to zły pomysł. Co myślisz? Jakie są alternatywy? A jak zacząć refaktoryzację aplikacji, która wszędzie używa konfiguracji?


title: Jak nazywa się błąd, który nagle psuje wszystko, ale zawsze był obecny?

text: Mieliśmy dzisiaj awarię naszego oprogramowania i po zbadaniu odkryliśmy, że awaria powinna wystąpić od tygodni, ale czekaliśmy do dzisiejszego ranka, aby podnieść swoją brzydką głowę. Czy istnieje akceptowana nazwa takiego błędu, której mogę użyć, odnosząc się do niego z innymi programistami? Najbliższy, jaki udało mi się znaleźć, to Schrödinbug, ale nie sądzę, żeby to miało zastosowanie, ponieważ nikt nie sprawdzał żadnego kodu. Błąd po prostu czyhał.


title: Co można zrobić przeciwko inercji językowej?

text: Często projekty używają języka programowania X, ale używałyby języka programowania Y, gdyby były rozpoczynane od zera. Na przykład duże modele numeryczne można w całości napisać w Fortranie. Chociaż może to być rozsądny wybór dla komponentów, które muszą działać szybko (alternatywą byłoby C lub C++), może to być kiepski wybór dla komponentów, które albo nie muszą działać szybko (takie jak elementy związane z danymi wejściowymi ludzkimi lub proste wizualizacje) lub gdy czas wykonania nie jest czynnikiem ograniczającym (takim jak I/O, szczególnie z sieci). Innym przykładem może być sytuacja, w której projekt jest budowany przy użyciu odpowiedniego języka (takiego jak Matlab; nie, klony FOSS nie są wystarczająco dobre) i został rozpoczęty w czasie, gdy alternatywy FOSS nie były opłacalne, ale dziesięć lat później są; i migracja byłaby korzystna. Jednak ze względu na _inercję języka_ migracja nie następuje. Kod, który działa, nie powinien być zmieniany, przenoszenie kodu jest czasochłonnym i kosztownym procesem, a programiści znają język X, ale niekoniecznie język Y. Jednak na dłuższą metę migracja byłaby prawdopodobnie korzystna. Czy można coś zrobić, aby złagodzić problemy związane z inercją języka? Czy są jakieś godne uwagi przykłady dużych projektów, które skutecznie przezwyciężyły ten problem? A może projekt na zawsze pozostanie przy początkowych wyborach?


title: MKOl i usługi bezpaństwowe. Krótkotrwałe czy jednoinstancyjne?

text: Biorąc pod uwagę platformę zbierającą elementy bezużyteczne, podczas używania kontenera IOC do wstrzykiwania usług czysto bezstanowych, ogólnie lepiej jest użyć okresu istnienia pojedynczej instancji kontenera, czy też odtworzyć obiekt za każdym razem, gdy jest używany i wyrzucić go wraz ze wszystkimi jego zależnościami jak tylko skończysz z nimi?


title: Pisanie prototypu aplikacji – dobre praktyki?

text: Do projektu, w którym pracuję, chcę zaimplementować mały prototyp, aby wypróbować różne rzeczy, zademonstrować klientowi pewną funkcjonalność i poznać niektóre frameworki używane w projekcie. Masz jakieś sugestie lub znasz najlepsze praktyki wdrożenia takiego prototypu? Trochę więcej szczegółów: * Aplikacja będzie złożoną aplikacją webową * Muszę zaimplementować mechanizm, w którym serwer wysyła dane do subskrybowanych klientów (dane będą generowane przez jakieś zdarzenia) * Chcę napisać prototyp, który implementuje dokładnie to zachowanie ale nic więcej


title: Samotny programista kontra wszystko inne

text: Myślę, że mógłbyś nazwać mnie „MicroISV”, ponieważ to w zasadzie tylko ja pracuję nad stworzeniem produktu, który ma być sprzedawany komercyjnie. Jestem pewien, że jest wielu takich jak ja, więc oto moje pytanie: Oprócz aspektu programowania/kodowania, aby uzyskać kod za drzwi, **_czy robisz majsterkowanie, czy robisz wszystko inne_**? Na przykład tworzenie stron internetowych, marketing internetowy, księgowość/podatki, protokoły firmowe, obsługa klienta, konfigurowanie e-commerce/bankowości, zarządzanie serwerem, zaopatrzenie itp. Wszystkie te działania wydają się być poza sferą tego, w czym jestem dobry lub mam na to cierpliwość/czas, ale nie wiem, czy alternatywa jest zbyt niewiarygodna lub zbyt droga, aby warto było spróbować przekazać te zadania komuś innemu (np. lokalnej firmie, sprzedawcom na odesku itp. ). Z pewnością rozumiem, że chcę zachować wszystkie te zadania „wewnętrznie” (tj. Ja) w celu ochrony strategii, planów, kodu, prywatnych rzeczy, takich jak numery kont bankowych, ale czy zlecanie tych zadań na zewnątrz jest aż tak dużym ryzykiem? Jakie masz doświadczenie?


title: Kierownik stara się zrozumieć tworzenie Web 2.0 — który język jest najlepszy?

text: Piszę biznes plan dla programistów w środowisku 2.0; mam najwyższy szacunek dla ludzi wykonujących tę pracę, ale moja ignorancja nie pozwala mi określić, kogo będę potrzebować, aby ją ukończyć. Jak najlepiej opisać potrzeby deweloperów firmy Web 2.0 Social/Gaming jako otwartej pozycji do wynajęcia?


title: Jakie są Twoje strategie, aby w sprytny sposób poprawić poziom swojego zespołu?

text: Szukam innowacyjnych sposobów na ulepszenie całego zespołu i podniesienie poziomu globalnego w każdym aspekcie, nie tylko technicznym. Moje aktualne rozwiązania: * **wyzwanie programistyczne** z głosowaniami, notatkami itp. * **uczenie się nawzajem**: każdego miesiąca członek może zaprezentować nowe API, strategię, cokolwiek, co pomoże w tworzeniu lepszego oprogramowania. Skończy się to głosami. Jeśli zostanie zatwierdzony, zespół zobowiąże się do korzystania z niego przez miesiąc. Następnie opinie. Następnie użyj go lub zostaw. * **coroczny przegląd w celu zmniejszenia martwego pola** okna Johari. Osobiście naprawdę uważam, że _pożegnalny pożegnanie_ , robiony za każdym razem, gdy definitywnie opuszczam grupę ludzi. Ze względu na uwarunkowania społeczne potrzebują rozgrzewki. Więc naprawdę mówię im, żeby nie filtrowali swoich słów i prawie obrzydli mi o mnie. Bez względu na to, co by powiedzieli, pozostanę cicho. Świetnie sprawdza się w przypadku kobiet, zwłaszcza jeśli mogą odpowiedzieć e-mailem, a ty daleko (podwójna siatka bezpieczeństwa) _**A co z twoim ?_**


title: Czy ma sens używanie tagu bez numerów wersji?

text: W naszej grupie roboczej dyskutowaliśmy o wykorzystaniu tagów git w naszych projektach. Niektórzy argumentowali za tagami pro, a niektórzy sprzeciwiali się używaniu tagów. Sedno polega na tym, że mówimy o projektach Magento, które tak naprawdę nie używają numerów wersji, stąd tagi składają się tylko z odwołań do dat `20140624`. Zaletą było to, że łatwiej jest przywrócić tag niż normalny skrót zatwierdzenia i jest to część gitflow, a przeciwną stroną było to, że tworzy tylko narzut. Co myślisz o używaniu tagów git tylko do przywracania historii?


title: Jaki jest najlepszy sposób na uporządkowanie kodu JavaFX 2.0?

text: W każdym przykładzie, który widziałem, prawie cały kod GUI jest napisany w metodzie `start(Stage stage)` klasy głównej. Czy to najlepsze podejście, czy też można podklasować klasę Stage i tworzyć własne rzeczy? Jeśli to drugie jest w porządku, czy wydajność nie ucierpi z powodu wielu etapów?


title: Dlaczego operator inteligentnego dopasowania Perla jest uważany za uszkodzony?

text: Widziałem wiele komentarzy w Internecie, że operator inteligentnego dopasowania Perla jest uszkodzony. Wiem, że pierwotnie była częścią Perla 6, potem została zaimplementowana w Perlu 5.10 ze starej wersji specyfikacji, a następnie została poprawiona w 5.10.1, aby dopasować obecną specyfikację Perla 6. Czy problem został rozwiązany w wersji 5.10.1+, czy też istnieją inne problemy z operatorem inteligentnego dopasowania, które sprawiają, że jest to problematyczne w praktyce? Jakie są problemy? Czy istnieje jeszcze bardziej zaktualizowana wersja (być może Perl 6), która rozwiązuje problemy? **Edycja:** Aby wyjaśnić, nie pytam o błędy, ale raczej o opinię, że zamierzone zachowanie `~~` jest złe.


title: Jak przekonać programistów kowbojów do korzystania z kontroli kodu źródłowego?

text: **AKTUALIZACJA** Pracuję w małym zespole składającym się z 4 osób. Wszyscy używali kontroli źródła. Większość z nich nie może znieść kontroli źródła i zamiast tego decyduje się jej nie używać. Mocno wierzę, że kontrola źródeł jest niezbędną częścią rozwoju zawodowego. Kilka kwestii bardzo utrudnia przekonanie ich do korzystania z kontroli źródeł: * Zespół nie jest przyzwyczajony do korzystania z TFS. Miałem 2 sesje treningowe, ale przydzielono mi tylko 1 godzinę, która jest niewystarczająca. * Członkowie zespołu bezpośrednio modyfikują kod na serwerze. Dzięki temu kod nie jest zsynchronizowany. Wymaganie porównania, aby mieć pewność, że pracujesz z najnowszym kodem. I pojawiają się złożone problemy z scalaniem * Szacunki czasu oferowane przez programistów nie obejmują czasu potrzebnego do rozwiązania któregokolwiek z tych problemów. Tak więc, jeśli powiem „nie”, zajmie to 10x dłużej…Muszę ciągle wyjaśniać te kwestie i zaryzykować, ponieważ teraz kierownictwo może postrzegać mnie jako „wolnego”. * Fizyczne pliki na serwerze różnią się w nieznany sposób ponad ~100 plików. Połączenie wymaga znajomości projektu, a co za tym idzie współpracy deweloperskiej, której nie jestem w stanie pozyskać. * Inne projekty nie są zsynchronizowane. Deweloperzy nadal nie mają zaufania do kontroli źródła i dlatego zwiększają problem, nie używając kontroli źródła. * Deweloperzy twierdzą, że używanie kontroli kodu źródłowego jest marnotrawstwem, ponieważ łączenie jest podatne na błędy i trudne. Jest to trudny argument, ponieważ gdy kontrola źródła jest tak źle wykorzystywana, a kontrola źródła jest stale omijana, jest to rzeczywiście podatne na błędy. Dlatego też, ich zdaniem, dowody „mówią same za siebie”. * Deweloperzy twierdzą, że bezpośrednia modyfikacja kodu serwera z pominięciem TFS pozwala zaoszczędzić czas. Z tym też trudno się spierać. Ponieważ scalanie wymagane do synchronizacji kodu **na początek** jest czasochłonne. Pomnóż to przez 10+ projektów, którymi zarządzamy. * Stałe pliki są często przechowywane w tym samym katalogu, co projekt internetowy. Tak więc publikowanie (pełne publikowanie) usuwa te pliki, które nie są pod kontrolą źródła. Prowadzi to również do braku zaufania do kontroli źródła. Ponieważ „publikowanie przerywa projekt”. Naprawienie tego (przenoszenie przechowywanych plików z podfolderów rozwiązania) zajmuje dużo czasu i debugowania, ponieważ te lokalizacje nie są ustawione w pliku web.config i często istnieją w wielu punktach kodu. Tak więc kultura trwa sama. Zła praktyka rodzi więcej złych praktyk. Złe rozwiązania prowadzą do nowych hacków, które „naprawiają” znacznie głębsze, znacznie bardziej czasochłonne problemy. Serwery, miejsce na dysku twardym są niezwykle trudne do zdobycia. Jednak oczekiwania użytkowników rosną. Co można zrobić w tej sytuacji?


title: Widoczność metod testowania częściowych mocków

text: Obecnie piszę testy jednostkowe do testowania zachowania metody i chciałbym częściowo zakpić metody wywołujące wstrzykiwane właściwości. Na przykład: public void doCoś() { int complexInt = 1 + 1; if(getProperty().someBooleanReturn()) { ... etc. ... } } Tak więc oczywiście chcę zakpić z metody `getProperty()`, aby oczekiwać `someBooleanReturn()`. Moje pytanie brzmi, ponieważ nie chcę, aby getter był widoczny dla innych klas, ale widoczny dla testów jednostkowych, obecnie robię te metody pakietowo-prywatne (zakres domyślny). Czy istnieje standard dla tego typu operacji? Dziękuję!


title: Prawa autorskie do własnej implementacji Standard C Library

text: Jestem zajęty pisaniem podstawowej biblioteki Standard C dla mojego hobbystycznego systemu operacyjnego. Włączam tylko te funkcje, których naprawdę potrzebuję na razie, ale biblioteka nadal jest określana jako „libc” w moim źródle i planuję rozszerzyć ją do w pełni funkcjonalnej biblioteki C. Mój system operacyjny zostanie wydany jako open-source, więc chciałbym wiedzieć, jaki rodzaj informacji o prawach autorskich powinienem umieścić na plikach źródłowych mojej „Biblioteki C”, ponieważ kod jest mój, ale nadal opiera się na źródle innych Biblioteki C, takie jak GNU C. Widziałem tę informację o prawach autorskich na implementacji biblioteki C dla AVR 00001 /* Copyright (c) 2002, Marek Michalkiewicz 00002 Copyright (c) 2004,2007 Joerg Wunsch 00003 00004 Fragmenty dokumentacji Copyright (c) 1990, 1991, 1993, 1994 00005 Regenci Uniwersytetu Kalifornijskiego. 00006 00007 Wszelkie prawa zastrzeżone. 00008 00009 Redystrybucja i używanie w formie źródłowej i binarnej, z modyfikacją 00010 lub bez, jest dozwolone pod warunkiem spełnienia następujących warunków: 00011 00012 * Redystrybucje kodu źródłowego muszą zawierać powyższą informację o prawach autorskich 00013, niniejszą listę warunków i poniższe zastrzeżenie . 00014 00015 * Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach autorskich 00016, tę listę warunków i następujące wyłączenie odpowiedzialności w 00017 dokumentacji i/lub innych materiałach dostarczonych z dystrybucją 00018. 00019 00020 * Ani nazwiska właścicieli praw autorskich, ani nazwiska 00021 współtwórców nie mogą być używane do promowania lub promowania produktów 00022 pochodzących z tego oprogramowania bez uprzedniej pisemnej zgody. 00023 00024 NINIEJSZE OPROGRAMOWANIE JEST DOSTARCZANE PRZEZ POSIADACZY PRAW AUTORSKICH I WSPÓŁCZYNNIKÓW „TAK JAK JEST” 00025 ORAZ WSZELKIE WYRAŹNE LUB DOROZUMIANE GWARANCJE, W TYM MIĘDZY INNYMI 00026 DOROZUMIANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO SZCZEGÓLNEGO CELU 00027. W ŻADNYM WYPADKU WŁAŚCICIEL PRAW AUTORSKICH LUB WSPÓŁPRACOWNICY 00028 NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK BEZPOŚREDNIE, POŚREDNIE, PRZYPADKOWE, SZCZEGÓLNE, PRZYKŁADOWE LUB 00029 SZKODY WTÓRNE (W TYM MIĘDZY INNYMI ZAKUP 00030 TOWARÓW LUB USŁUG ZASTĘPCZYCH, UTRATĘ DANYCH; LUB ZYSKÓW LUB PRZERWANIE W DZIAŁALNOŚCI 00031) JEDNAK SPOWODOWANE I NA DOWOLNEJ TEORII ODPOWIEDZIALNOŚCI, CZY W UMIE 00032, ODPOWIEDZIALNOŚCI ŚCISŁEJ LUB CZYNNEJ (W TYM ZANIEDBANIA LUB W INNY SPOSÓB) 00033 WYNIKAJĄCE Z KORZYSTANIA Z TEGO OPROGRAMOWANIA, 00034 MOŻLIWOŚĆ TAKICH USZKODZEŃ. 00035 00036 $Id: stdlib_8h_source.html,v 1.1.1.4 2012/01/03 16:04:22 joerg_wunsch Exp $ 00037 */


title: Ciągła integracja Java z dodatkami

text: Ciągła integracja jest dla mnie bardzo nowa, ale postanowiłem spróbować. Niestety okazało się, że jest tam ogromna ilość różnych narzędzi, a każdy z nich jest spory i wydaje się trudny (jestem nowy, więc oczywiście mnie to onieśmiela). To, czego szukam, to narzędzie, które może * uruchomić moje testy junitowe * wykonać moje kompilacje * utworzyć pliki jar * wdrożyć określone pliki jar na określonych zdalnych serwerach. Jakie są kluczowe kroki i podejścia do spełnienia tych wymagań?


title: Linie gildii nazewnictwa CSS z elementami z wieloma klasami

text: Wygląda na to, że istnieją 2 sposoby, w jakie ktoś może obsłużyć nazewnictwo klas dla elementów, które mają mieć wiele klas. Jednym ze sposobów byłoby:  To jest coś, czego używa twitter bootstrap. Inną możliwością, którą mógłbym pomyśleć, byłaby:  Wygląda na to, że fundacja zurb używa tej metody. Teraz korzyści z pierwszego, które widzę, to mniejsza szansa na to, że zewnętrzny CSS będzie ingerował w stylizację, ponieważ nazwa klasy btn-success nie byłaby tak powszechna, jak sukces nazwy klasy. Zaletą drugiego, jak widzę, jest to, że jest mniej pisania i potencjalnie lepsze ponowne wykorzystanie stylu. Czy są jakieś inne zalety/wady jednej z opcji i czy jedna z nich jest bardziej popularna od drugiej?


title: Jaka jest dobra alternatywa dla zmiennej name dla języka, który ma tylko niezmienne referencje lub etykiety?

text: Na przykład w językach funkcjonalnych **zmienne** są jednym przypisaniem, a ich wartości są niezmienne po przypisaniu. Mają więc dwa stany **unbound** i **bound** , raz powiązanego nie można zmienić. Czy istnieje jakiś termin matematyczny lub inny termin informatyczny, który jest najbardziej odpowiedni dla takich rzeczy? Coś, co **semantycznie** nie implikuje wariancji ani zmienności. Jeśli nie, takie pojęcie nie istnieje, a gdybyś projektował język, który miałby takie konstrukcje, czego innego niż słowo **zmienna** byś użył dla nich? **Nie** naprawdę chcę **ankietować** w poszukiwaniu pomysłów, próbuję dowiedzieć się, czy istnieje już zaakceptowany termin branżowy (dowolna branża) na taką rzecz.


title: Ogólny projekt tabeli parametrów

text: Mamy ogólną tabelę parametrów, której ważnymi atrybutami są: numer id auto inkrementacja nie null domena varchar (200) nie null klasyfikacja varchar (200) nie null param_name varchar (200) nie null wartość CLOB/tekst created_by, created_date, updated itp. Tutaj id jest unikalny dla tabeli plus na poziomie funkcjonalnym występuje unikalny indeks domeny, klasyfikacja, nazwa_parametru Wartość to tekst o dowolnej długości w UTF-8. Chcemy dodać BLOB, obsługę danych binarnych. Dostępne opcje: 1. dodaj nową kolumnę: blob_value BLOB LUB 2. dodaj pole „typ” varchar2 w tej tabeli, które może mieć wartość null lub „B”, domyślnie null. Null lub puste oznacza nie - tekst Jeśli B oznacza, że jest to blob. W takim przypadku wartość będzie zawierać identyfikator wiersza tabeli blob. Tabela blob będzie wyglądać następująco: numer id automatyczne zwiększanie danych BLOB 3. Pozostaw istniejącą tabelę samą i w nowej tabeli, która odwołuje się do tej: numer parametru_id klucz podstawowy, obiekt blob danych, z ograniczeniem FOREIGN KEY (parameter_id) REFERENCES Parametr(id) ( sugestia FrankieTheKneeMan dziękuję) Zaletą pierwszego jest to, że param może mieć zarówno tekst, jak i kropelkę lub jedno i drugie. Zaleta drugiego - nie jestem pewien -> nie trzeba zachowywać pustych kolumn? Obecna tabela ma 30 000 wierszy i spodziewamy się, że wzrośnie do 70 000, z czego 10% będzie potrzebować danych blob. Pytanie: który z nich byś wybrał i dlaczego, czy też masz alternatywę?


title: Strona dla Lokalnej Grupy Użytkowników Programistów

text: Poszukiwanie sugestii/wymagań dotyczących strony internetowej dla lokalnej grupy użytkowników programistów i wynikających z tego opinii innych komentujących odpowiedzi. Przykłady istniejącej witryny byłyby ładne, ale nie wymagane.


title: Skonstruuj tablicę z istniejącej tablicy

text: > Mając tablicę liczb całkowitych A[1...n-1], gdzie 'N' jest długością tablicy A[ ]. > Skonstruuj tablicę B taką, że B[i] = min(A[i], A[i+1], ..., A[i+K-1]), > gdzie K będzie podane. Tablica B będzie miała N-K+1 elementów. Możemy rozwiązać problem za pomocą min-heaps Skonstruuj min-heap dla k elementów - O(k) Dla każdego następnego elementu usuń pierwszy element i wstaw nowy element i heapify Stąd czas najgorszego przypadku - O( (n-k+1) *k ) + O(k) Spacja - O(k) Czy możemy to zrobić lepiej?


title: Używasz oAuth jako uzupełnienie istniejącego systemu uwierzytelniania?

text: Mam nadzieję, że jest to właściwa wymiana stosów, aby o to zapytać, oto idzie. Buduję nową stronę internetową, dzięki której wdraża własny, niestandardowy system logowania. Wystarczy zarejestrować swoją nazwę użytkownika, hasło e-mail itp. Następnie możesz się zalogować, klikając opcję „zapamiętaj mnie”, aby oszczędzić sobie kłopotów z logowaniem za każdym razem. Dla uproszczenia nazwijmy to **Niestandardowym systemem logowania**, a konto **Niestandardowym kontem**. Jednak jestem bardzo zainteresowany integracją niektórych systemów logowania innych firm za pośrednictwem oAuth, które są oferowane przez takie firmy jak Facebook, Google i Twitter. Moje pytanie brzmi, czy możliwe jest posiadanie mechanizmu, dzięki któremu: * logujesz się na przykład przez Google * mój skrypt potwierdza tokeny i wszystkie te dobre rzeczy, aby upewnić się, że autoryzowałeś logowanie * Następnie proszę o połączenie swojego konta Google na: * istniejące **konto niestandardowe** lub * nowe **konto niestandardowe** prosząc o zarejestrowanie go po zalogowaniu się w Google * po zalogowaniu się na **konto niestandardowe** traktuję Cię jak każdy inny użytkownik, z wyjątkiem tego, że zakładam, że opcja „zapamiętaj mnie” była zaznaczona i ustawiam plik cookie, który loguje Cię od tego momentu, tak jakbyś cały czas używał normalnego **Konta niestandardowego**. Może to zasadniczo oznaczać, że nie muszę ciągle odpytywać serwerów Google, tylko podczas logowania. Od tego momentu, dopóki mają prawidłowy plik cookie, pozostaną zalogowani. Czy to możliwe? Czy są jakieś oczywiste wady, których mi brakuje?


title: Sugerowana konfiguracja dla programowania AngularJS w Visual Studio 2013

text: Zaczynam od AngularJS. Zaplecze będzie Web API (co też jest dla mnie nowością) i chciałbym używać tylko jednego IDE, więc próbuję dowiedzieć się, jak skonfigurować projekt w Visual Studio 2013 dla AngularJS. Chciałbym zachować go jako osobny projekt, aby był luźno połączony z interfejsem API (lub zachować interfejs użytkownika oddzielony od interfejsu API sieci Web). Trudno mi wymyślić, jak uzyskać tę konfigurację. Więc.... * Jaki typ projektu jest najlepszy dla projektu w czystym AngularJS (czysty HTML 5)? * Czy sugerowane jest użycie Grunta? A może MS Build lepiej radzi sobie z zadaniami budowania? Myślę tutaj o lintingu, minifikacji, łączeniu plików w jeden plik dystrybucyjny, może kopiowaniu na serwer WWW. * Jak przeprowadzasz testy? Czy istnieje wtyczka do uruchamiania testów Jasmin? Czy po prostu prowadzisz Karmę osobno? * Czy są jakieś dobre szablony dla AngularJS? Czy ktoś używa ngBoilerplate? Każda pomoc byłaby mile widziana.


title: W jaki sposób rozmiar stosu i sterty jest ograniczony przez system operacyjny?

text: **Uwaga** : jeśli musisz wziąć pod uwagę konkretny system operacyjny, aby móc odpowiedzieć, rozważ Linuksa. Za każdym razem, gdy uruchamiam program, otrzyma on miejsce w pamięci wirtualnej do uruchomienia, z obszarem na jego stos i jeden na jego stertę. **Pytanie 1** : czy stos i sterta mają statyczny limit rozmiaru (np. 2 gigabajty każdy), czy ten limit jest dynamiczny, zmieniający się zgodnie z alokacją pamięci podczas wykonywania programu (tj. łącznie 4 gigabajty) ma być używany przez obie strony, więc jeśli program używa tylko stosu, będzie mógł mieć stos o pojemności 4 gigabajtów)? **Pytanie 2** : Jak zdefiniowany jest limit? Czy jest to całkowita dostępna pamięć RAM? **Pytanie 3** : A co z sekcją tekstu (kodu) i danych, w jaki sposób są one ograniczone?


title: Czy używanie Singletona jest poprawne dla Jtree i DefaultTreeModel?

text: Zasadniczo mam jeden widok drzewa, który używa jednego DefaultTreeModel. Czy można używać singletona dla Tree rozszerzającego JTree i innego singletona dla TreeModel rozszerzającego DefaultTreeModel? Jeśli nie, to jaki jest powód unikania używania singletona dla każdego obiektu?


title: Język przygód tekstowych

text: Myślałem o stworzeniu tekstowej gry przygodowej i po małym wyszukiwaniu w Google dowiedziałem się, że w Prologu powstaje całkiem sporo (prostych) tekstowych gier przygodowych. Dlaczego?


title: Jakiej technologii/algorytmu należy użyć do wyabstrahowania znaczenia lub słów kluczowych z fragmentu tekstu?

text: Witam i dzięki za obejrzenie! ## Tło Mam projekt, w którym muszę wyabstrahować znaczenie fragmentu tekstu, aby określić, czego szuka tekst, a następnie dopasować ten tekst do listy wyników wyszukiwania. Teraz mam z tym pewien kontekst, a następujący scenariusz jest bardzo bliski, ale nie narusza mojej umowy NDA z klientem: Powiedzmy, że mam opis stanowiska programisty z wpisu na Craig's List. Chcę jakoś przeanalizować ten opis i zgadnąć, czy post szuka programisty C#, DBA, SDET, programisty C++ itp. Jeszcze lepiej, byłoby dobrze wydestylować pewne parametry, takie jak lata/poziom doświadczenia i doświadczenia z dowolnymi stosami (.NET, Java itp.). Po wyabstrahowaniu zapotrzebowania muszę odwołać się do bazy danych życiorysów (CV), aby znaleźć uporządkowany zestaw dopasowań, prawdopodobnie przy użyciu tego samego algorytmu lub przynajmniej systemu znaczników. ## Pytanie Jak najlepiej osiągnąć ten cel? Czy powinienem zająć się budowaniem indeksu słów kluczowych? Przetwarzanie języka naturalnego? Algorytmy ewolucyjne? Musimy założyć, że interakcja między ludźmi będzie bardzo minimalna. ## Przykładowe ogłoszenie o pracę Oto przykładowe ogłoszenie o pracy, które losowo wyciągnąłem z listy Craiga: > Zachęcamy do przeniesienia swojej kariery do środowiska, w którym talent jest > nagradzany i zachęcane są do nowych pomysłów. W Seattle Children's, czołowym centrum opieki pediatrycznej Pacific > Northwest, oferujemy więcej niż tylko > najnowocześniejsze obiekty i otwarty potencjał rozwoju kariery. Znajdziesz również > prawdziwe zaangażowanie na rzecz naszych pacjentów i rodzin, które wykraczają daleko poza granice wiedzy klinicznej. Stanowisko Applications Development Senior > w Centrum Terapii Rozwojowej będzie rozwijać, testować, standaryzować > i wdrażać oprogramowanie do wysokoprzepustowej analizy danych. Obejmuje to > analizę systemu, projektowanie, obsługę aplikacji, badania standardów oraz > zarządzanie relacjami z klientem/dostawcą w celu wsparcia operacji produkcyjnych. > Na przykład, wspieranie integracji różnych podejść > obliczeniowych do kompleksowego przepływu pracy w celu wysokoprzepustowej analizy danych, > w tym aplikacji dla proteomiki i metabolomiki. Uczestniczy we wszystkich > fazach cyklu życia projektu, w tym architektury, projektowania, > rozwoju, alfa, beta, wydania i wsparcia produkcyjnego. Idealny > kandydat będzie miał tytuł licencjata w tej dziedzinie i minimum trzyletnie doświadczenie w tworzeniu oprogramowania; praktyczna znajomość JAVA, > Spring, AJAX, JSF, Hibernate, JQuery, JUnit; i solidne doświadczenie z > strojeniem SQL i zrozumieniem planu wykonania będzie kluczem do tej roli. > Prosimy o wypełnienie pytań oceny pracy zaraz po > złożeniu aplikacji na to stanowisko. Wymagane: \- Licencjat w> Informatyka, matematyka, biznes lub pokrewna dziedzina \- Trzy (3) lata> doświadczenie w tworzeniu oprogramowania \- Znajomość języków JAVA, Spring, AJAX, > JSF, Hibernate, JQuery i JUnit \ - Solidne doświadczenie w dostrajaniu SQL i > zrozumienie planów wykonania \- Silne zrozumienie wielowarstwowych > aplikacji internetowych i wyzwań związanych ze skalowalnością Preferowane: \- Pięć (5) lub więcej > lat doświadczenia w tworzeniu oprogramowania \- Doświadczenie w tworzeniu dużych > systemów oprogramowania \ - Doświadczenie z usługami internetowymi (HTTP, JSON, SOAP, XML), > środowiskami Unix/Linux i systemami rozproszonymi (HADOOP) \- Doświadczenie w > rozwoju oprogramowania i algorytmiki dla biologii molekularnej, biotechnologii, > mikromacierzy lub proteomiki. Oferujemy konkurencyjne wynagrodzenie, hojne płatne urlopy > zniżki na transport oraz programy nagradzania i nagradzania pracowników. Dziękuję! Matt


title: Używaj czasowników z funkcjami, rzeczowników z klasami - a co z interfejsami?

text: Ok, rozumiem normalne konwencje używania czasowników z funkcjami i rzeczowników z klasami. A co z interfejsami? Czy istnieje jakaś metodologia wymyślania nazw interfejsów, które mogą nie być tak oczywiste? Żeby było jasne, nie mówię o tym, czy umieścić „I” przed nazwą, czy użyć camelCase lub PascalCase. Zastanawiam się nad metodą wymyślenia jasnej, semantycznej nazwy interfejsu. **EDYTUJ** Mam obsesję na punkcie jak najjaśniejszego nazwania interfejsu. Myślę, że musi to być też rzeczownik, ponieważ kiedy myślę o nazywaniu klas, myślę o najbliższym "rzeczywistym" obiekcie świata, do którego może się odnosić. Przypuszczam, że interfejsy świata rzeczywistego to takie rzeczy jak klawiatura, mysz, pilot, ekran bankomatu. To są wszystkie rzeczowniki. W każdym razie każdy dodatkowy wgląd w dobry sposób formułowania nazw interfejsów byłby mile widziany.


title: Jakie kwestie muszę wziąć pod uwagę podczas konfigurowania grupy wsparcia użytkowników dla systemu w dużym przedsiębiorstwie?

text: Miałem za zadanie zostać administratorem dużego systemu oprogramowania dla przedsiębiorstw, który składa się z kilku aplikacji opakowanych w folię termokurczliwą i kilku domowych „klejów” i ma kilkuset użytkowników na trzech kontynentach. Jak myślisz, jakie aspekty/punkty muszę rozwiązać? W tej chwili najlepsze, co mogę wymyślić, to cytat z wpisu na blogu Kathy Sierra „Creating Passionate Users”: > W jaki sposób pomaga to użytkownikom kopać tyłki? co wydaje się pomocne jako mantra, ale niezbyt konkretne.


title: Którą część bazy źródłowej użytkownicy powinni testować?

text: Używam SVN i zastanawiam się, którą część bazy kodu użytkownicy powinni przetestować. Trzon (po połączeniu nowej gałęzi funkcji) czy gałąź? Jeśli korzystasz z brancha, jak radzisz sobie ze scenariuszem, w którym dwóch programistów pracuje nad dwoma różnymi zestawami funkcji (a więc dwiema branchami) i musisz je udostępnić użytkownikom do testowania? Mieliśmy scenariusz, w którym użytkownicy testują niewłaściwą wersję (gałąź) i oczywiście nie widzą ich poprawek. Byłbym wdzięczny za jakieś doświadczenie / radę, jak sobie z tym poradzić. Aktualizacja: Gałęzie są używane do nowych funkcji/naprawiania błędów i ostatecznie zostają połączone z powrotem do bagażnika. Testowanie obejmuje testowanie całej aplikacji (pod kątem efektów witryny), ale realistycznie użytkownicy będą testować tylko ich funkcję.


title: Czy powinniśmy zawsze przeprowadzać testy jednostkowe błędów podczas ich poprawiania?

text: Przy poprawianiu błędów zachęcam do pracy, aby najpierw napisać test, który nie powiedzie się z danym błędem, a następnie naprawić kod, aż test przejdzie. Jest to zgodne z praktykami TDD i powinno być dobrą praktyką, ale zauważyłem, że ma tendencję do tworzenia zagadkowych testów, które są bardzo bliskie implementacji. Na przykład mieliśmy problem, gdy zadanie zostało wysłane, osiągnęło określony stan, zostało przerwane i ponowione. Aby odtworzyć ten błąd, napisano masywny test z synchronizacją wątków, mnóstwem kpin i innych rzeczy... Wykonało swoje zadanie, ale teraz, gdy refaktoryzuję kod, uważam, że bardzo kusi mnie, aby po prostu usunąć tego mamuta, ponieważ dopasowanie do nowego projektu wymagałoby naprawdę dużo pracy (znowu). I to tylko testowanie jednej małej funkcji w jednym konkretnym przypadku. Stąd moje pytanie: jak testować błędy, które są trudne do odtworzenia? Jak uniknąć tworzenia rzeczy, które testują implementację i szkodzą refaktoryzacji i czytelności?


title: JavaScript, adnotacje tekstowe i pomysły

text: Jestem bardzo ciekaw, aby usłyszeć opinie innych na temat problemu, który rozważam od jakiegoś czasu. Zasadniczo chciałbym przedstawić użytkownikowi dokument tekstowy i pozwolić mu na zaznaczanie tekstu i opisywanie go. Specyficzne dla adnotacji, które zamierzam osiągnąć: 1. Umożliwić użytkownikom dokonanie wyboru tekstu, opisanie go, a następnie zapisanie zaznaczenia i adnotacji do późniejszego wykorzystania 2. (UI) Obsługa reprezentowania nakładających się adnotacji. Na przykład, jeśli ciąg, w którym: „To jest zdanie testowe dla mojego przykładowego zdania testowego”, użytkownik1 może mieć adnotację „to zdanie testowe dla mojego przykładu”, a użytkownik2 może mieć adnotację „dla mojego przykładu”. 3. Uwzględnij sytuacje, w których zmienia się tekst dokumentu. Jeśli to możliwe, adnotacje zostaną zaktualizowane. Jak poradziłbyś sobie z tym z technicznego punktu widzenia? Kilka pomysłów, które miałem to: * Użyj zakresów javascript i przechowuj adnotację jako parę liczb całkowitych, coś takiego: (document_start_char, document_end_char). Zapisz tę parę w db. * Alternatywnie, używając JS, pobierz zaznaczony tekst i zapisz cały tekst w bazie danych. (nie wiem, jak zrobiłbym wtedy nakładające się adnotacje) * Reprezentuj nakładające się adnotacje, stosując styl CSS, aby podświetlić tekst, a następnie przyciemnić „stos” adnotacji, w których się nakładają. Najmniejsza adnotacja zawsze musiałaby znajdować się na górze „stosu”. Jakie są Twoje przemyślenia lub obszary poprawy? Jak _do diabła_ mogę wesprzeć aktualizację tekstu dokumentu bez uszkadzania wszystkich adnotacji?


title: Zamykający tag (?>) w plikach PHP?

text: Niektórzy przysięgają, że zamykają swoje pliki PHP za pomocą `?>`, inni twierdzą, że lepiej jest je pominąć. Wiem, że nie jest konieczne, aby go tam mieć, po prostu zastanawiam się, jakie są plusy i minusy robienia tego i jakie są najlepsze praktyki.


title: Dlaczego ludzie korzystają z książek o programowaniu?

text: Uważam, że kiedy ktoś pyta, jaki jest najlepszy sposób na naukę programowania, ludzie zwykle dostarczają mu odniesienia do kilku tekstów napisanych przez różnych autorów. Jednak nie wierzę, że wiele osób w ogóle uczy się programowania z książek. Uważam, że zazwyczaj stają przed wyzwaniem, a następnie wykorzystują programowanie jako narzędzie do jego przezwyciężenia. Na przykład "zająłem się" programowaniem, ponieważ chciałem uruchomić serwer dla gry, w którą grałem, więc wyszukałem i przeczytałem wsparcie dla tego konkretnego serwera, a teraz jestem zatrudnionym inżynierem oprogramowania, używając tylko umiejętności, które rozwinąłem ( a następnie dalej rozwijany) przez kodowanie skryptów C# dla niezbyt popularnego pakietu serwerowego. Więc moje pytanie brzmi, czy ludziom na ogół łatwiej jest uczyć się z tych książek? Wiem, że przyjrzałem się kilku z nich i stwierdziłem, że są zbyt „suche”, aby zachęcić mnie do jego ukończenia.


title: Tworzenie interfejsu do zdalnego zarządzania

text: Szukam informacji na temat tworzenia interfejsu zdalnego zarządzania dla naszego oprogramowania. To nie jest nic nielegalnego. Nasze oprogramowanie jest przeznaczone do produkcji telewizyjnej na żywo, a po ich nadawaniu nie możemy uzyskać dostępu do komputera (zwykle przez LogMeIn). Chciałbym móc przesyłać/pobierać pliki i wydawać polecenia do naszego oprogramowania. Polecenia byłyby specyficzne dla oprogramowania, takie jak „załaduj ten plik”, „uruchom ten skrypt” lub „zwróć tę wartość” itp. Preferowane jest połączenie przez gniazdo, ale problem polega na tym, że większość naszych komputerów znajduje się za zaporami ogniowymi i serwerami NAT. Nie wiem od czego zacząć. Myślę, że tunelowanie HTTP jest dobrym rozwiązaniem, ale zastanawiam się, czy istnieją inne opcje lub zalecenia. Załóżmy również, że nasi klienci nie chcą otwierać portów ze względów bezpieczeństwa. Dziękuję.


title: Opracowanie systemu wykrywania botów/robotów sieciowych

text: Próbuję zbudować system dla mojej firmy, który chce sprawdzać nietypowe/nadużywające wzorce użytkowników (głównie web scrapery). Obecnie zaimplementowana przeze mnie logika parsuje logi dostępu http i uwzględnia następujące parametry w celu obliczenia potencjału użytkownika będącego scraperem lub botem: 1. Sprawdza współczynnik żądań v/s HTTP 'POST/GET' dla każdego IP 2 . Oblicza stosunek unikalnych adresów URL i całkowitą liczbę trafień (rzadkość) przez każdy adres IP. W oparciu o powyższe dwa parametry staramy się blokować każdy adres IP wykazujący nietypowe zachowanie, ale same te dwa parametry nie wystarczają do wykrycia botów. Dlatego chciałbym wiedzieć: 1. Czy są jakieś inne parametry, które można uwzględnić, aby poprawić wykrywanie? 2. Znalazłem artykuł opublikowany w bibliotece ACM, który jest zgodny z podejściem bayesowskim do wykrywania robota indeksującego. Czy ktoś tego używał? Jaka jest to skuteczność? 3. Stack Overflow i inne witryny o dużym natężeniu ruchu mają wdrożone tego rodzaju systemy. Jaką logikę stosują, aby trzymać niechcianych spamerów/przeszukiwaczy z dala w czasie rzeczywistym?


title: Implikacje uchwytów między formami

text: Tworzyłem aplikację WindowsForm w C#, z 2 formularzami. Niezależnie od tego, co konkretnie zrobili, musiałem uzyskać dostęp do wartości w `form2` i wysłać je do `form1` i vice versa. Aby tak się stało, znalazłem kogoś, kto mówi o przeciążeniu konstruktora i zadziałało to dla mnie, jak wyjaśniam w kodzie. Form1: namespace miniDldMngr { public częściowa klasa Main : Form { miniDldMngr.SettingsForm settingsForm; //Ustawienia natychmiastoweForm private void settingsToolStripButton_Click(object sender, EventArgs e) { settingsForm = new miniDldMngr.SettingsForm(this); //Utwórz uchwyt dla ustawień Form1Form.ShowDialog(); //Właściwości formularza zostały zmienione tak, aby działały jak okno dialogowe } Form2: namespace miniDldMngr { public częściowa klasa SettingsForm : Form { private Main HandleToForm1; //zmienna lokalna do przechowywania uchwytu do Form1 public SettingsForm() { InitializeComponent(); } public SettingsForm(Main frm1Handle) //przeciążony konstruktor z uchwytem do Form1 { InitializeComponent(); HandleToForm1 = frm1Handle; txtIni.Text = HandleToForm1.comboLoad.Text; //oto jak mogę uzyskać dostęp do kontroli na przykład na formularzu 1, o ile modyfikatory są publiczne } Natknąłem się na tę odpowiedź na Stack Overflow, a użytkownik skomentował codeparkle: > Nie jest ani skalowalny, ani podobny do OOP. Co doprowadziło mnie do przekonania, że może nie był to najlepszy wybór do rozwiązania mojego początkowego problemu. (S) Dodał dalej: > Jednym ze sposobów jest stworzenie wydarzenia w klasie, które zna informacje > które należy pokazać. Formularz może następnie zarejestrować jedną ze swoich metod jako > obsługę zdarzeń. Gdy informacje staną się dostępne, klasa powiadamia > Form, wywołując tę procedurę obsługi z argumentem zawierającym możliwe do wyświetlenia informacje >. Piękno tego podejścia polega na tym, że klasa jest oddzielona (nie > zależna) od implementacji Form. Wzorce projektowe MVC i MVVM > to inne niezawodne sposoby na zrobienie tego. Teraz mam kilka pytań: 1. Jakie są konsekwencje zastosowanej przeze mnie procedury? 2. Dlaczego nie jest to podejście obiektowe? 3. Jaka byłaby najlepsza praktyka przesyłania informacji tam iz powrotem między zajęciami/formami? 4. Jak byś podszedł do stworzenia wydarzenia wspomnianego przez codeparkle? 5. Nie wiem nic o wzorcach projektowych MVC lub MVVM, więc niektóre linki do uporządkowanego wyjaśnienia byłyby mile widziane. Proszę wziąć pod uwagę, że programowanie jest dla mnie bardzo nowe i nie zrozumiem cię, jeśli będziesz mówić tak, jakbym wiedział, co robię. Przykłady kodu działają ze mną cuda, ponieważ mogę je przetestować.


title: Jak poradzić sobie z dostawcą, który prosi o rozwiązanie problemu, którego nie mógł rozwiązać

text: Będąc małym działem programistów, często zdarza się, że zlecamy projekty na zewnątrz. Mamy zestaw firm, z którymi bardzo lubimy pracować, bardzo rzetelnych i dobrych lokalnych ludzi, którzy doceniają pracę. Zdarzyło się to kilka razy, ostatnio dzisiaj: **Otrzymujemy projekt, ustawiamy go w naszym środowisku i zauważamy problem. Ponieważ nie są w stanie dostarczyć rozwiązania na czas, jesteśmy zmuszeni znaleźć rozwiązanie wewnętrznie. Wtedy sprzedawca, któremu bardzo dobrze płacimy, czasami zapyta, jak rozwiązaliśmy problem.** Znowu to rzadkość i mamy świetne relacje z tymi facetami, ale mam pewne przeczucie, że nie powinienem go przekazywać odpowiedzi na zasób, za który płacimy. Jak mam sobie z tym poradzić? Czy odkładam na bok moje ego i po prostu mówię: „Dziękuję za świetną robotę, oto twoje 30 000 USD i zakończyliśmy dla Ciebie projekt, robiąc tę jedną rzecz, której Twoja firma nie była w stanie zrobić, ale teraz może obciążyć nas większą opłatą za zrobienie następnym razem” ? Czy należy im powiedzieć, że nie mogę dać im kodu „firmowego” itp.? Czy to zrujnuje nasz związek?


title: Czy SCRUM nadaje się do środowisk wieloprojektowych?

text: W niedalekiej przyszłości przeniosę się do pracy i wierzę, że będą bardzo zainteresowani moim doświadczeniem ze Scrumem i jego wpływem na ich działalność. Staram się zrozumieć, czy to zadziała w ich środowisku. W moim obecnym miejscu pracy mamy 2 produkty/2 zaległości/2 oddzielne zespoły. Te zaległości są oczywiście priorytetyzowane w oparciu o to, czego firma najbardziej potrzebuje w przypadku rozwijanej przez nas platformy. Miejsce, do którego się przeniosę, ma jednak wiele projektów w ruchu w tym samym czasie (2/3 osoby pracują nad każdym), małe kawałki pracy przychodzą i są naprawiane codziennie i wyobrażam sobie wszystkie produkty dostarczane przez klienta są mniej więcej równie ważne. Zastanawiam się więc, czy ktoś ma doświadczenie ze Scrumem w podobnym środowisku, jakie masz prawdziwe przykłady rzeczy, które zadziałały? Co nie zadziałało? Jakie względy należy wziąć pod uwagę, aby Scrum działał w tej sytuacji? Jest kilka aspektów, co do których nie jestem pewien, jak by się dobrze sprawdziły: 1. Wierzę, że ludzie w zespołach będą pracować w różnych projektach, a zatem potencjalnie w zespołach scrumowych, jeśli zostaną rozbite. 2. Jak radzisz sobie z priorytetami w tak wielu ruchomych częściach, które prawdopodobnie często się zmieniają i mają swoje własne ramy czasowe? 3. Jeśli masz zespół scrumowy, który pracuje nad kilkoma projektami (niektóre z nich wymagają tylko 1 Deva), to jak rozumiesz kontekst stand-upu?


title: Pisanie własnego kodu rozpoznawania głosu

text: **Opis problemu** Chcę używać rozpoznawania głosu jako części projektu sprzętowego, który chciałbym całkowicie sam w sobie (używam małych urządzeń o małej mocy i niskiej prędkości, takich jak Arduino i Raspberry Pi, Kinects itp. , nie jest zaangażowany tradycyjny komputer z systemem operacyjnym, a więc projekt zamknięty / samodzielny). Rozpoznawanie głosu może być bardzo skomplikowane w zależności od pożądanego poziomu zaawansowania. Mam, jak sądzę, stosunkowo prosty zestaw wymagań. Chcę tylko rozpoznać własny głos, a mam mały słownik zawierający około 20 słów, które chciałbym rozpoznać. Dzięki temu nie potrzebuję skomplikowanych bibliotek rozpoznawania mowy na tekst i głosu ani żadnego z doskonałego oprogramowania innych firm, które znajduję w wyszukiwarkach internetowych (takich nie brakuje!). Uważam, że moje wymagania są „na tyle proste” (w granicach rozsądku), że mogę zakodować własne rozwiązanie. **Zastanawiam się, czy ktoś napisał swój własny proces w ten sposób i czy moja metoda jest bardzo błędna? Czy istnieje lepszy sposób na zrobienie tego bez konieczności posiadania wysokiego poziomu matematyki lub pisania złożonego algorytmu?** To jest rozwiązanie, które próbowałem wymyślić poniżej. **Opis rozwiązania** Będę pisał to w C, ale chcę omówić proces agnostyczny języka, skupiając się na samym procesie. Więc zignorujmy to, jeśli możemy. **1 .** Wstępnie nagram mój słownik słów, aby odpowiadał tym, które są wypowiadane. Możemy sobie wyobrazić, że mam 20 nagrań moich 20 różnych słów, a może krótkich fraz lub zdań składających się z dwóch lub trzech słów. Uważam, że dzięki temu proces porównywania dwóch plików nagrań jest łatwiejszy niż konwersja dźwięku na tekst i porównywanie dwóch ciągów. **2 .** Mikrofon jest podłączony do mojego urządzenia sprzętowego, na którym działa mój kod. [1]. Kod w sposób ciągły pobiera próbki o stałej długości, na przykład o długości 10 ms, i przechowuje 10 kolejnych próbek, na przykład, w trybie rejestrowania cyklicznego. [2]. (Wymyślam te liczby z czubka głowy, więc są to tylko przykłady opisujące proces). _[1] Byłoby to prawdopodobnie połączone przez filtr pasmowoprzepustowy i wzmacniacz operacyjny, podobnie jak nagrania słownikowe, aby przechowywane i zebrane próbki audio były mniejsze._ _[2] Nie jestem pewien, w jaki sposób Wezmę próbkę, muszę wypracować metodę, gdybym stworzył liczbę (liczba całkowita/zmiennoprzecinkowa/podwójna), która reprezentuje dźwięk próbki 10 ms (być może wartość CRC lub suma MD5 itp. próbki audio), lub strumień cyfr (być może strumień odczytów dźwiękowych częstotliwości). Docelowo „próbką” będzie cyfra lub cyfry. Ta część będzie o wiele bardziej zaangażowana w sprzęt, więc nie jest to temat do dyskusji tutaj._ **3 .** Kod sprawdza, czy jest przechowywanych 10 kolejnych próbek i szuka zwiększenia głośności, aby wskazać słowo lub frazę, która jest wypowiadana (a przerwać od milczenia), a następnie zwiększa się kolejne zbieranie próbek do np. 500 próbek. Oznaczałoby to, że przechwytuje 5 sekund dźwięku w próbkach 10 ms. To właśnie te próbki lub „segmenty” są porównywane między dźwiękiem przechowywanym a dźwiękiem przechwyconym. Jeśli wystarczająco wysoki procent przechwyconych próbek pasuje do równoważnych przechowywanych, kod zakłada to samo słowo. Na przykład początek nagrywania w sklepie świata "hello", zapisane słowa są dzielone na próbki 10 ms również Stored Sample No | 1| 2| 3| 4| 5| 6| 7| 8| Zapisana wartość próbki |27|38|41|16|59|77|200|78| Przychodzący dźwięk (mówię „cześć”) z kilkoma „pustymi” próbkami na początku symbolizującymi ciszę. Incoming Sample No | 1| 2| 3| 4| 5| 6| 7| 8| 9|10| 11|12| Przychodząca wartość próbki | | | |20|27|38|46|16|59|77|200|78| **4 .** Gdy kod zbierze pełny strumień próbek, na początku odcina puste próbki, aby utworzyć następujące nagranie dźwiękowe. Może również przesunąć zestaw próbek do tyłu i do przodu o kilka miejsc, aby lepiej dopasować się do przechowywanej próbki. Daje to zestaw próbek podobny do poniższego: Stored Sample No | 1| 2| 3| 4| 5| 6| 7| 8| Zapisana wartość próbki |27|38|41|16|59|77|200|78| Przychodząca próbka nr |-1| 1| 2| 3| 4| 5| 6| 7| 8| Przychodząca wartość próbki |20|27|38|46|16|59|81|201|78| **5 .** Uważam, że mając wartość procentową określającą, jak blisko musi być każda próbka, próbka 7 różni się wartością 1, która jest mniejsza niż %1, oraz wartością procentową całkowitej liczby próbek, które muszą mieścić się w zakresie procentowym dopasowania próbki, kod ma łatwo dostrajalny poziom dokładności. Nigdy wcześniej nie robiłem czegoś takiego z audio, to może być dużo pracy. Dlatego zadaję to pytanie, jeśli być może już wiesz, że odpowiedź na to pytanie jest oczywista (jakakolwiek by ona nie była). Mam nadzieję, że nie będzie to skomplikowane obliczeniowo zadanie, ponieważ część sprzętu, którego będę używał, będzie miała niską liczbę sekund. W setkach megaherców (może 1 Ghz przy użyciu przetaktowanego Rasp Pi). Jest to więc dość surowy sposób dopasowywania próbek audio przy użyciu mniejszej mocy obliczeniowej. Nie dążę do natychmiastowych rezultatów, ale mniej niż 30 sekund na przyzwoity dowód koncepcji. **PS** Nie mam przedstawiciela, który mógłby oznaczyć to nowym tagiem, takim jak „audio”, „rozpoznawanie dźwięku”, „głos”, „rozpoznawanie głosu” itp.


title: Obsługa lub zapobieganie konfliktom w systemie wielu użytkowników

text: Mam aplikację internetową, z której korzysta wielu użytkowników z różnych lokalizacji na całym świecie. Załóżmy, że mam formularz „edytuj” dla określonego dokumentu i dwóch (lub więcej) użytkowników edytuje dokument w tym samym czasie. Wiem, że obaj użytkownicy mogą edytować dokument i przesyłać go, ale użytkownik1 nie zobaczy, że użytkownik2 dokonał zmian w dokumencie i może przesłać starszą wersję. Myślałem o dodaniu pewnego rodzaju blokady, ale wtedy, jeśli użytkownik1 otworzył dokument tylko do edycji, ale nigdy niczego nie zmienił (i pozostawił otwarty), użytkownik2 nigdy nie będzie mógł go edytować. Dlatego zastanawiałem się nad dodaniem limitu czasu dla edytora, ale wtedy użytkownik1 może przekroczyć limit czasu przed zakończeniem wprowadzania zmian w dokumencie (powiedzmy, że wyszedł na uruchomienie). Pytanie brzmi, jak można zapobiec edycji dokumentu przez jednego użytkownika, podczas gdy inny go zmienia? Uwaga: jeśli to pytanie nie należy tutaj, proszę wyjaśnić, dlaczego i gdzie mogę je zadać.


title: Aktualizacja statusu i projekt/architektura bazy danych kanału informacyjnego

text: Wyobraź sobie aplikację podobną do Facebooka, w której masz aktualizacje statusu i kanał informacyjny. Imiona i zdjęcia profilowe można zmienić. Istnieje również kilka różnych typów aktualizacji wymagających innego szablonu układu dla każdego typu. Nienawidzę mojej implementacji i chciałbym otrzymać informację zwrotną, jak ją ulepszyć. Kiedy przechowuję aktualizację statusu w bazie danych, zasadniczo przechowuję szablon HTML w bazie danych z niektórymi informacjami dotyczącymi aktualizacji. Ponieważ zdjęcie profilowe i nazwa plakatu mogą się zmieniać, zachowuję symbole zastępcze w kodzie HTML przechowywane w bazie danych, takie jak „{USER_PROFILE_PIC}” i zastępuję je najbardziej aktualną wartością, gdy rekord jest wyciągany i wyświetlany. Nienawidzę robienia tego w ten sposób, ponieważ jeśli chcemy wprowadzić zmiany w projekcie, utknęliśmy z tym kodem HTML w bazie danych. Robię to wszystko w SQL Server. W razie potrzeby jestem otwarty na inne bazy danych, po prostu szukam dobrego sposobu na pobieranie dynamicznych aktualizacji statusu z bazy danych i wyświetlanie ich z aktualnymi informacjami. TIA


title: Granice funkcji w programowaniu funkcjonalnym

text: Bardzo podoba mi się paradygmat programowania funkcjonalnego, ale nadal nie jestem pewien, jak za jego pomocą zaprojektować mały/średni projekt. Używając OO, mam zestaw oznaczonych bytów (klas) z jasno określonymi granicami. Mogę wytłumaczyć takie rzeczy jak: * co robi ta klasa? * czy powinienem umieścić ten kod _wewnątrz_ czy _na zewnątrz_ klasy? * czy powinienem podzielić tę klasę na dwie? * jak klient chciałby korzystać z tej klasy? Tak więc jedną wielką zaletą klas jest to, że zapewniają **granice** dla części funkcjonalności. Uważam, że to bardzo pomaga przy projektowaniu aplikacji. W programowaniu funkcjonalnym wszystko wydaje się sprowadzać do komponowania i abstrahowania funkcji i struktur danych. Klasy typów w haskell służą głównie do oferowania polimorfizmu. To samo dotyczy prototypów w clojure. Jaką dobrą „jednostkę cech” można zdefiniować, nazwać i uzasadnić projektując aplikację napisaną w funkcjonalnym stylu?


title: Czy jest jakaś korzyść z udziału w witrynach takich jak TopCoder i GoogleCode?

text: Poza oczywistymi względami, takimi jak finanse, zatrudnienie i uznanie, jakie są praktyczne/rzeczywiste korzyści z korzystania z serwisów konkursowych? Wydaje się to dość algorytmiczne i ciężkie matematycznie, ale jak to ma się do czegoś praktycznego w twoim codziennym programowaniu?


title: Czy można wydajnie reprezentować mutację grafu obiektowego za pomocą stanów niezmiennych?

text: Ćwiczę przy użyciu niezmiennego obiektu w C++. Moim osobistym celem jest przedstawienie grafu obiektu generycznego (w stosie) za pomocą sekwencji grafów niezmiennych. Samo zbudowanie wykresu dla wielu wersji nie jest aż tak trudne. Problemem jest wydajność. Wersjonowanie brute-force wymaga pełnej kopii wykresu, a to było nie do przyjęcia. Próbowałem udostępnić niezmienione węzły. Ale w tym przypadku mam nowy problem; Bibliografia. Odniesienie do innego obiektu musi być aktualizowane na całym wykresie. Wymaga to odwiedzenia wszystkich węzłów za każdym razem, gdy wyprowadzam nową wersję wykresu. A to mutuje węzły z referencjami, więc one również powinny być wyprowadzone (przez kopiowanie). Wydajność nie będzie lepsza niż kopiowanie metodą brute-force. O ile mogę sobie wyobrazić, nie ma naprawdę wydajnego sposobu przedstawienia mutacji grafu obiektów ze stanami niezmiennymi. Więc proszę o jakiś pomysł na ten temat. Czy możliwe jest sprawne przedstawienie grafu mutacji obiektów przy niezmiennym stanie?