title: Najlepsze praktyki dotyczące przenoszenia dużych aplikacji MS Access na platformę .Net?

text: Mamy naprawdę ogromną aplikację MS Access opracowaną wewnętrznie początkowo na nasze osobiste potrzeby, która następnie została przekształcona w oprogramowanie komercyjne i z powodzeniem sprzedana. Oprogramowanie jest rodzajem „wszechstronnego oprogramowania dla Twojej firmy” i zawiera kilka modułów, w tym system zarządzania dokumentami, planowanie zasobów przedsiębiorstwa, zarządzanie zapasami, zarządzanie relacjami z klientami, analizę danych itp. Jesteśmy bardzo zadowoleni z obecnego funkcjonalność aplikacji, ale aby sprostać prośbom naszych klientów zdajemy sobie sprawę, że musimy przejść na coś nowego. Zdecydowaliśmy się na stopniowe przenoszenie naszej aplikacji w kierunku .Net, ponieważ możemy trzymać się Visual Basic .Net: mimo że dla większości programistów jest to nowy język, mamy głęboką wiedzę o VBA i kilkudziesięciu małych projektach zaimplementowanych w VB6. Rozpoczęliśmy już przenoszenie funkcjonalności warstwy danych naszej aplikacji na MS SQL Server, dzięki czemu każda manipulacja i wyszukiwanie danych odbywa się bezpośrednio na serwerze. To, czego szukamy, to najlepsze praktyki stopniowego przenoszenia naszego rozbudowanego GUI (około 500-600 różnych formularzy, w tym podformularzy, około 200 raportów z obsługą wielu języków itp.). W związku z niedawną prośbą naszego potencjalnego klienta o wdrożenie asynchronicznego szyfrowania danych na dokumentach w DMS, z przyjemnością również całkowicie oddzielimy tę część od MS Access i zaimplementujemy ją w .Net. Pytanie brzmi, jak bezproblemowo zintegrować aplikację .Net z istniejącym systemem MS Access, aby móc ją wywołać z określonymi parametrami (prawa użytkownika itp.) i umożliwić wymianę danych pomiędzy tą aplikacją a uruchomioną aplikacją MS Access. * * * **EDYTUJ:** Próbowaliśmy zastosować pewne praktyki z książki Martina Fowlera „Wzorce integracji przedsiębiorstw”, aby osiągnąć pewną integrację między aplikacją MS Access i kilkoma małymi narzędziami, które zaimplementowaliśmy w .Net dla różnych potrzeb. Udało nam się jednak wykorzystać tylko wzorzec „wspólnej bazy danych” i nie byliśmy zadowoleni z naszego rozwiązania. Na przykład wdrożyliśmy małe narzędzie działające jako usługa Windows, które automatycznie pobiera wszystkie wiadomości z serwera pocztowego za pomocą połączenia POP3 i przechowuje je w jednej tabeli, podczas gdy wszystkie załączniki są przechowywane w systemie plików. To, co głównie zrobiliśmy, to wykorzystaliśmy ADO.NET do bezpośredniego dostępu do baz danych MS Access w formacie MDB i zapełniliśmy tabelę pewnymi przetworzonymi danymi (np. danymi o wiadomościach e-mail z powyższego przykładu: mamy pola FROM, TO, CC, BCC, Temat i ciało). **Nie ma absolutnie żadnego problemu z obsługą formatu danych MDB z .Net** , ponadto nie chcemy pozostawać przy MDB i upgradować prawie wszystko do MS SQL Server 2008 - to daje nam dużo więcej swobody w zarządzaniu danymi i skalowalność. Główny problem polega na tym, że **nie wiemy, jak zaimplementować rodzaj „wywołania zwrotnego”** w programie Access, dzięki czemu możemy wywołać wykonanie określonego kodu VBA podczas aktualizacji danych. Mieliśmy wielkie nadzieje z MS Access 2010 obsługującym **wyzwalacze aktualizacji i wstawiania dla tabel danych** , ale okazało się, że możemy używać tylko makr MS Access dla tych wyzwalaczy i nie ma możliwości wykonania żadnego niestandardowego kodu VBA w wyzwalaczu . Wypróbowaliśmy również kilka rozwiązań z **wysyłaniem naciśnięć klawiszy bezpośrednio do okna MS Access**, aby naśladować niektóre żądania danych wywołane przez użytkownika. To działa, ale naszym zdaniem nie jest to realne rozwiązanie, które można wykorzystać w produkcji. Przyjrzeliśmy się również DDE dla MS Access, ale **nie mogliśmy znaleźć żadnego dobrego przykładowego rozwiązania implementującego polecenia DDE** i używającego ich do wymiany danych i poleceń w pamięci. Tak więc głównym problemem jest współistnienie i interakcja aplikacji MS Access i .Net. **EDIT2** : Zapomniałem wspomnieć, co **zaimplementowaliśmy również bibliotekę MSMQ w VBA** do przesyłania wiadomości między .Net a MS Access, problemem ponownie był brak callbacku tutaj: naprawdę musieliśmy odpytywać kolejkę pod kątem nowe wiadomości i biorąc pod uwagę, że VBA tak naprawdę nie obsługuje wielowątkowości, nie było to dobre rozwiązanie.


title: Alternatywy dla pesymistycznego blokowania w zastosowaniach klastrowych

text: Badam alternatywy dla pesymistycznego blokowania na poziomie bazy danych, aby osiągnąć izolację transakcji w klastrze aplikacji `Java` działających przeciwko tej samej bazie danych. Synchronizacja współbieżnego dostępu w warstwie aplikacji wyraźnie nie jest rozwiązaniem w obecnej konfiguracji, ponieważ ta sama transakcja bazy danych może być wywoływana jednocześnie z wielu maszyn JVM. Obecnie podlegamy okazjonalnym `warunkom wyścigu`, które ze względu na `optymistyczne blokowanie`, które mamy za pomocą `Hibernate`, powodują wyjątek `StaleObjectStateException` i utratę danych. Mam średnio dużą transakcję w ramach mojego projektu refaktoryzacji. Opiszmy to jako aktualizowanie jednego wiersza tabeli najwyższego poziomu, a następnie tworzenie różnych powiązanych wstawek i/lub aktualizacji kilku jej jednostek podrzędnych, z których każda jest jeden-do-wielu. Chciałbym zapewnić wyłączny dostęp do wiersza tabeli najwyższego poziomu i wszystkich dzieci, których to dotyczy, ale chciałbym trzymać się z dala od pesymistycznego blokowania na poziomie bazy danych głównie ze względu na wydajność. Czy ma sens uruchamianie pojedynczej (być może synchronicznej) aplikacji kolejki komunikatów, do której można przenieść tę metodę, aby zapewnić zsynchronizowany dostęp, w przeciwieństwie do każdego węzła klastra korzystającego z własnego, co stanowi oczywiste zagrożenie dla wyścigu? Wspominam o tym podejściu, chociaż nie jestem do niego przekonany, ponieważ zarówno wiersz tabeli najwyższego poziomu, jak i jej dzieci mogą być również aktualizowane z innych wywołań systemowych, a nie tylko wspomnianej transakcji. Dlatego staram się zaprojektować rozwiązanie, w którym wiersz tabeli najwyższego poziomu i jego elementy podrzędne będą w jakiś sposób pseudo-zablokowane (wyłączna izolacja transakcji), ale na poziomie aplikacji, a nie bazy danych. Jestem otwarta na pomysły i sugestie, rozumiem, że nie jest to bardzo cięte i wyschnięte wyzwanie.


title: Kiedy należy używać funkcji arytmetycznych o dowolnej precyzji w PHP?

text: Mój kolega używa funkcji kalkulatora binarnego w obliczeniach przepustowości; aż do terabajtów iz podziałem procentowym przy alokacji. Jego użycie tych funkcji wydaje się poprawne, aby nie stracić ani bajta; chociaż wydaje się, że używa ich teraz do wszystkiego. Instrukcja mówi tylko: > Dla matematyki dowolnej precyzji PHP oferuje Kalkulator Binarny, który > obsługuje liczby o dowolnej wielkości i precyzji, reprezentowane jako łańcuchy. Ile kosztuje dowolny rozmiar? Czy to naprawdę konieczne? Jak duży jest domyślny float w PHP? Czy są jakieś dobre rady dotyczące tego lub rzeczy, o których należy pamiętać?


title: Wskazówki dotyczące łączenia wspólnej bazy danych z kilkoma instancjami tej samej aplikacji

text: Poszukuję rad odnośnie przyszłego rozwoju mojej aplikacji, która może być uruchomiona na kilku maszynach, które muszą używać i manipulować tymi samymi danymi. Ponieważ brzmi to nieco niejasno, pozwólcie, że to rozwinę. Wyobraź sobie aplikację komputerową, w której użytkownik zarządza informacjami o klientach, spotkaniach, historii klienta i czym nie. Teraz załóżmy, że garstka użytkowników korzystających z tej samej aplikacji na różnych komputerach musi używać tych samych danych, o których mowa. Uważam, że najlepszym sposobem rozwiązania tej sytuacji byłoby przechowywanie bazy danych w centralnej lokalizacji, pod warunkiem, że API (na przykład REST) jest używane przez każdą instancję aplikacji. Zakładając, że może istnieć około 5 do 10 instancji aplikacji uruchamiających żądania w bazie danych. Czy byłby to najlepszy sposób na zapewnienie krótkiego czasu odpowiedzi na żądania przez każdą instancję? Czy ktoś wie coś lepszego lub czy jest to najlepsza droga. O jakich sugestiach, poradach, wskazówkach, najlepszych praktykach można, a czego nie należy mi powiedzieć. Dziękuję. **EDYCJA: Wyjaśnienie pytania i jego kontekst w aplikacji** Rozwój będzie się składał z aplikacji klienckiej, która będzie łączyć się z aplikacją serwerową, początkowo aplikacja kliencka będzie aplikacją desktopową, jednak przyszłe aplikacje klienckie webowe i mobilne mogą być również opracowane, jeśli linia bazowa użytkownika wykaże takie pragnienie. To jest jeszcze podstawowy szkic tego, jak może być, ponieważ wciąż wygładzamy krawędzie. Aplikacja kliencka będzie składać się w dużej mierze z interfejsu użytkownika i komunikacji typu end-to-end. Aplikacja serwera będzie tworzona w trzech warstwach: * Warstwa usług: Warstwa ta zapewnia środki, za pomocą których klienci wysyłają żądania do serwera, a odpowiedzi są odsyłane. Dodatkowo ta warstwa działa również jako klient innych usług stron trzecich, takich jak poczta e-mail (SMTP) i dostarczanie wiadomości tekstowych (Brama SMS), gdy klienci żądają takich działań. * Warstwa logiczna: tutaj przetwarzana jest logika biznesowa dotycząca żądań wystawionych przez klientów. * Warstwa danych: gdzie wykonywane są operacje na bazie danych. Moje wątpliwości dotyczą warstwy usługowej podczas łączenia się z aplikacjami klienckimi, uważam, że powinienem opracować własny protokół komunikacyjny z gniazdami i obiektami serializowanymi, aby skrócić czas potrzebny klientowi na ponowne połączenie z serwerem w celu wysłania nowych żądań. Czas, do którego się odnoszę, to czas, w którym zwykłe żądanie HTTP wykonuje uzgadnianie przed wysłaniem żądania do serwera, tak jak zwykły interfejs API REST, do którego każdy miałby dostęp za pośrednictwem serwera WWW. Czy powinienem opracować własny protokół połączenia z trwałym połączeniem z gniazdem i wymienianymi obiektami serializowanymi, czy powinienem korzystać ze zwykłego interfejsu API REST. Niektórzy klienci mogą wysyłać wiele żądań jedno po drugim przez wiele godzin, ale jeszcze inni mogą wysyłać kilka żądań i na tym by się skończyło. Jestem niezdecydowany, jaką ścieżką powinienem tutaj podążać, REST czy niestandardowy protokół połączenia z gniazdem, jak wspomniano wcześniej? **AKTUALIZACJA: Socket będzie drogą.** Zdecydowaliśmy się stworzyć niestandardowy protokół komunikacyjny z gniazdami i zachować dostępność, gdy aplikacja kliencka zauważy duże zapotrzebowanie ze strony użytkownika, co również pozwala nam mieć wyraźniejszy widok z których klienci są połączeni i utrzymuje otwarty kanał z aplikacją kliencką, co może być przydatne w przypadku aktualizacji funkcji w przyszłości.


title: Wyświetlanie widoku z innego widoku w MVP

text: To pytanie dotyczy triad MVP. Powiedzmy, że mam dwie triady, a pierwsza to „Widok1”, „Tryb1” i „Presenter1”. Druga triada ma `View2`, `Model2` i `Presenter2`. Teraz staram się po prostu wyświetlić `View2` po kliknięciu `przycisku` w `View1`. Pokazałeś `View1` wywołując metodę show prezentera. View1Presenter prezenter1 = nowy View1Presenter (widok1, Model1); prezenter1.pokaz(); Teraz, kiedy klikam przycisk `btnShowView2` na `View1`, powinien wyświetlić `View2`. Jak więc wywołać `presenter2.show()` z `View1`?


title: Licencja GPL Total Phase Aardvark Driver

text: Używam adaptera hosta SPI dla projektu. Aardvark z TotalPhase. I zrobiłem coś szalonego, przeczytałem tę licencję EULA, którą wszyscy po prostu klikają. Licencja na instalację sterownika zawiera następujące bity: > Ten pakiet instalatora sterownika zawiera również sterownik WIN32, który jest w całości > oparty na projekcie libusb-win32 (wydanie 0.1.10.1). > > ... > > LICENCJA: > > Oprogramowanie w tym pakiecie jest rozpowszechniane na następujących licencjach: > > Sterownik: GNU General Public License (GPL) > Biblioteka, Pliki testowe: GNU Lesser General Public License (LGPL) Teraz, moje rozumienie GPL jest takie, że jest lepkie i wirusowe. Jeśli dołączysz oprogramowanie, cały projekt musi zostać wydany na licencji GPL (jeśli je rozpowszechniasz, możesz robić, co chcesz, z projektami wewnętrznymi). Jeśli sterownik był podobny do biblioteki i był licencjonowany na licencji LGPL, mógłby być używany przez mój zastrzeżony projekt z zamkniętym kodem źródłowym, o ile wraz z nim przekazano jego źródło i licencję. Ale tak nie jest, to czysta GPL. Jeśli dołączę ten sterownik do mojego projektu i rozprowadzę go, czy muszę wydać projekt na licencji GPL?


title: Uzyskaj atrybucję, gdy inne osoby użyją mojego kodu

text: Mam tę stronę portfolio zawierającą kilka osobistych projektów/wdrożeń algorytmów. Chcę otrzymać atrybucję, czy i kiedy inne osoby użyją mojego kodu lub jego fragmentów. Początkowo myślałem o korzystaniu z Creative Commons, ale, jak wskazuje sam CC, CC nie pasuje dobrze do dystrybucji oprogramowania/kodu. Użyłbym CC0, ale CC0 nie wymusza atrybucji. Czy jest więc sposób na wymuszenie atrybucji w moim kodzie ala CC? Dołączanie kopii licencji FOSS do każdej dystrybucji kodu, którą posiadam, wydaje się przesadą --- sama licencja może być dłuższa niż niektóre moje kody. Czy roszczenia dotyczące praw autorskich do kodów źródłowych będą działać, jeśli powiem, że wymagane jest uznanie autorstwa?


title: Czy to działa, gdy szefem kierownika projektu jest programista?

text: Jestem na etapie planowania projektu i szukam kierownika projektu. Chciałbym trochę zakodować i pilnować wszystkich części projektu. Mam jednak wrażenie, że kierownik projektu osiągnie lepsze wyniki. Mam następujące możliwości: 1) zarządzać projektem, a nie kodem 2) zatrudnić kierownika projektu i sam kodować Obawiam się, że kierownik projektu będzie czuł się utrudniony przez posiadanie właściciela projektu w zespole programistycznym. Jeśli uruchomię projekt, zespół może się rozpaść, powodując niepowodzenie projektu. Aby zmieścić się w budżecie, muszę być zaangażowany w taką czy inną rolę. Czy ktoś ma doświadczenie z tą sytuacją, jakieś sugestie? więcej informacji: 4 wewnętrznych deweloperów, każdy odpowiedzialny za określony obszar. Deweloperzy mogą również zlecić pracę na zewnątrz, jeśli wyrazi na to zgodę kierownik projektu.


title: Zintegrowane reklamy w aplikacjach na telefon – jak nie marnować baterii?

text: Biorąc pod uwagę recenzję PCWorld, która ukazała się w marcu: > ### Bezpłatne aplikacje na Androida z reklamami powodują poważne zużycie baterii > > ...Naukowcy z Purdue University we współpracy z Microsoft twierdzą > że reklamy innych firm w bezpłatnych aplikacjach na smartfony mogą być odpowiada za > aż 65 do 75 procent zużycia energii przez aplikację... Czy istnieje najlepsza praktyka integracji obsługi reklam z aplikacjami mobilnymi, aby nie obciążać nadmiernie baterii użytkownika? > ...Po odpaleniu gry Angry Birds na telefonie z Androidem naukowcy odkryli, > że główny komponent do gier zużywa tylko około 18% całej aplikacji > energii. Największy problem z baterią wynika z oprogramowania obsługującego reklamy i analizy innych firm, które odpowiadają za 45 procent całkowitej energii aplikacji, > zgodnie z badaniem... raport stawia to? Czy lepiej/możliwe jest pobranie dużego zestawu reklam, które są buforowane przez kilka godzin i wykorzystanie ich do wypełnienia przestrzeni reklamowej, aby uniknąć ciągłego korzystania z radia Wi-Fi/3G? Czy istnieją jakieś najlepsze praktyki dotyczące umieszczania reklam w aplikacjach mobilnych?


title: Czy powinienem skorzystać z pomocy Internetu i innych programistów, czy sam powinienem programować?

text: Jestem programistą w dobrej firmie. Moja firma dała mi zadanie do wykonania w ciągu tygodnia, ale ukończyłem to samo w 4 dni, mój szef, klient i inni członkowie zespołu są zadowoleni z mojej pracy; nawet ja byłem! Jednak nagle w mojej głowie pojawiła się myśl: „Do mojej pracy wziąłem trochę kodu z Internetu i pomieszałem go z moim programowaniem i szybciej dałem wynik, jednak martwię się, że powinienem był wykonać to zadanie sam, aby Lepiej bym to zrozumiał (nawet to, co zostało zaczerpnięte z internetu)". Czy ktoś może mi powiedzieć, czy rujnuję w ten sposób swoją karierę programisty (mam na myśli używanie kodu innych osób)?


title: Zarządzanie pamięcią właściwości WPF

text: Próbuję zbudować system powiązań podobny do tego, który jest używany w WPF i natknąłem się na pewne problemy z przeciekaniem pamięci, więc oto moje pytanie - jak zarządzana jest pamięć w systemie właściwości WPF? Z tego co wiem w WPF wartości `DependencyProperties` są przechowywane w zewnętrznych kontenerach - chcę wiedzieć jak są zbierane gdy `DependencyObject` umiera? Najprostszym rozwiązaniem byłoby przechowywanie ich w jakimś słowniku słabych referencji - ale tutaj pojawia się główny problem, na który natknąłem się - gdy istnieje słuchacz we właściwości, który potrzebuje odniesienia do swojego rodzica (tej właściwości), utrzymuje go (rodzica) przy życiu (gdy wartość słownika słabych referencji wskazuje gdzieś, nawet pośrednio, na klucz - nie można go zebrać). Jak można tego uniknąć w WPF bez konieczności używania wszędzie słabych odwołań?


title: Historia użytkownika lub Historie użytkownika dla tego konkretnego wymagania

text: Muszę napisać historyjkę użytkownika dla wymagania, które obejmuje przekazywanie filtrów wyszukiwania do tego samego URI i pobieranie odpowiednich wyników. Mam 5 filtrów. Planuję napisać 5 różnych historii typu: Jako użytkownik URI mogę wyszukiwać według #filter1, aby uzyskać wyniki na podstawie #filter1. A potem szósta historia, która polega na przeszukiwaniu jednego lub więcej lub wszystkich sześciu filtrów w połączeniu. Czy to rozsądna droga?


title: Czy język programowania zwiększa/zmniejsza wartość?

text: Załóżmy, że tworzysz program dla Windows w C#, a następnie Joe Blow tworzy ten sam program dla Windows, ale zamiast tego koduje go w C++. Jeśli Joe Blow miałby sprzedać ten program, co zadecydowałoby o tym, kto dostanie za niego więcej pieniędzy, biorąc pod uwagę różne języki? Zakładając, że oba korzystały z tego samego systemu licencjonowania, a jedyną różnicą między programami był kod źródłowy.


title: Jaki jest właściwy sposób przechowywania obiektu z wieloma atrybutami w Objective-C?

text: Mam obiekt, który pobieram przez HTTP, który ma około 50 atrybutów. Jaki jest właściwy sposób przechowywania tych informacji w Objective-C? Czy powinienem mieć NSObject z właściwością dla każdego atrybutu (jeśli tak, jaki byłby dobry sposób na zainicjowanie tego obiektu?)? Czy powinienem używać słownika NSDictionary zawierającego 50 par klucz-wartość?


title: Zmiana pracy, czy to problem?

text: Jak byś jako osoba zaangażowana w proces rekrutacji (menedżer, ankieter, itp.) czuła się wobec kandydata, który zmieniał pracę co 1-2 lata? **aktualizacja** Dziękujemy wszystkim za wkład, kilka naprawdę świetnych odpowiedzi i dobre informacje w każdym poście. Zapytałem o to, ponieważ obecnie pracuję na 3 stanowiskach w ciągu ostatnich 5 lat i czuję, że moja pozycja prowadzi donikąd (jakby stanowisko powinno być w pierwszej kolejności kontraktowe, a nie na pełny etat). Moją jedyną opcją wydaje się przejście do innego zespołu i robienie czegoś, czym tak naprawdę nie jestem zainteresowany lub szukanie nowej pracy, ale trochę się boję, że moja ostatnia historia pracy to tylko krótkie okresy.


title: Jaki jest sens wzorca PImpl, skoro możemy użyć interfejsu do tego samego celu w C++?

text: Widzę dużo kodu źródłowego, który używa idiomu PImpl w C++. Zakładam, że jego celem jest ukrycie prywatnych danych/typu/implementacji, dzięki czemu może usunąć zależność, a następnie skrócić czas kompilacji i problem z dołączaniem nagłówka. Ale klasy interfejsu/czysto abstrakcyjne w C++ również mają tę możliwość, mogą być również używane do ukrywania danych/typów/implementacji. A żeby wywołujący tylko widział interfejs podczas tworzenia obiektu, możemy zadeklarować metodę fabryczną w nagłówku interfejsu. Porównanie to: 1. **Cost** : Koszt interfejsu jest niższy, ponieważ nie trzeba nawet powtarzać implementacji publicznej funkcji wrappera `void Bar::doWork() { return m_impl->doWork(); }`, wystarczy zdefiniować podpis w interfejsie. 2. **Dobrze rozumiane** : Technologia interfejsu jest lepiej rozumiana przez każdego programistę C++. 3. **Wydajność** : Wydajność interfejsu nie gorsza niż idiom PImpl, zarówno dodatkowy dostęp do pamięci. Zakładam, że wydajność jest taka sama. Poniżej znajduje się pseudokod ilustrujący moje pytanie: // Deklaracja Forward może pomóc uniknąć dołączania nagłówka BarImpl i tych zawartych w nagłówku BarImpl. klasa BarImpl; class Bar { public: // funkcje publiczne void doWork(); private: // Nie musisz kompilować Bar.cpp po zmianie implementacji w BarImpl.cpp BarImpl* m_impl; }; Ten sam cel można zrealizować za pomocą interfejsu: // Bar.h class IBar { public: virtual ~IBar(){} // funkcje publiczne virtual void doWork() = 0; }; // udostępnienie tylko interfejsu zamiast nazwy klasy wywołującemu IBar* createObject(); Więc jaki jest sens PImpl?


title: Czy realistyczne jest testowanie aplikacji WWW za pomocą tomcat, gdy serwer produkcyjny korzysta z WebSphere?

text: W naszej firmie używamy serwera WebSphere Application Server do przechowywania aplikacji webowych, ale nie jest on dostępny dla programistów z powodu wydania licencji. Używamy Tomcata do testowania aplikacji internetowej i mamy nadzieję, że działa dobrze z WebSphere w fazie produkcyjnej. Chciałbym zaadaptować framework spring do naszego serwletu aplikacji webowych POJO z Oracle JDBC i nie jestem pewien na ile WebSphere wspiera framework spring. Sprawdziłem na stronie IBM i nie wydaje się realistyczne testowanie aplikacji webowej za pomocą tomcat, ponieważ istnieją pewne pułapki w używaniu spring w WebSphere jako kontenera. http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.html P.S. Nie mam doświadczenia w korzystaniu ze wiosny ani żadnego frameworka java.


title: Algorytm spłaszczania nakładających się zakresów

text: Szukam fajnego sposobu na spłaszczenie (podzielenie) listy potencjalnie nakładających się zakresów liczbowych. Problem jest bardzo podobny do tego z tego pytania: najszybszy sposób na dzielenie nakładających się zakresów dat i wiele innych. Jednak zakresy to nie tylko liczby całkowite i szukam przyzwoitego algorytmu, który można łatwo zaimplementować w JavaScript lub Pythonie itp. **Przykładowe dane:** ![Przykładowe dane](http://i.stack. imgur.com/NRAkh.png) **Przykładowe rozwiązanie:** ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/HP8Ri.png) Przepraszamy, jeśli to jest duplikat, ale mam jeszcze znaleźć rozwiązanie.


title: Jasmine BDD a testy integracyjne

text: Powiedzmy, że muszę napisać test dla interfejsu użytkownika, w następującym stylu BDD: użytkownik odwiedza buysomething.com, zapisuje coś na swojej liście życzeń, a zapisany licznik przedmiotów jest aktualizowany. Wynik testu jest taki, że DOM zostaje zmanipulowany. W głębi serca czuję, że to lepiej nadaje się jako test integracyjny - ale mój zespół obecnie używa jaśminu do ładowania urządzeń i testowania takich interakcji. Może to prowadzić do kruchości testów, ponieważ są one zależne od statycznych urządzeń zamiast rzeczywistych znaczników. Czy nadużywamy tutaj Jasmine?


title: Przechowywanie kluczy podstawowych obiektów w Redis, a następnie odpytywanie ich w Postgresie przez Django

text: To chyba mój drugi raz publikujący w programistach. Zwykle jestem na stackoverflow, ale to pytanie jest bardziej odpowiednie dla społeczności tutaj. Wszelkie sugestie, rady i spostrzeżenia w tej sprawie są niezwykle cenione. Wymagam od ciebie również brutalnej szczerości. Jeśli uważasz, że to, co obecnie robię w zakresie projektowania, jest naprawdę głupie, POWIEDZ MI! ponieważ jestem samoukiem, inżynierem oprogramowania zaplecza i mogę korzystać ze wszystkich porad, jakie mogę uzyskać. Używam Django, Redis i PostgreSQL. Załóżmy na przykład, że mam model użytkownika, postu i lokalizacji. #models.py z django.db importuj modele z django.contrib.auth.models import Klasa użytkownika Post(models.Model): user = models.ForeignKey(User) media_url = models.CharField(max_length=255, blank=True) related_location = modele.ForeignKey('Location') class Location(models.Model): name = models.CharField(max_length=200, blank=True) address = models.CharField(max_length=255, blank=True) city = modele. CharField(max_length=140, blank=True) Świetnie, teraz to już na uboczu, powiedzmy, że użytkownicy chcieli zobaczyć wszystkie posty oznaczone w określonej lokalizacji. Ta lokalizacja ma identyfikator 1812. Normalnym sposobem na zrobienie tego jest wykonanie prostego zapytania i zwrotnych postów, w których related_location ma identyfikator 1812. Podzieliłbym wyniki na strony tak, aby użytkownik widział jednocześnie 10 obiektów. Jeśli chcą zobaczyć więcej, muszą złożyć kolejną prośbę. Kiedyś robiłem rzeczy w ten sposób, do niedawna bałem się, że bazy danych będą potencjalnie duże, a zapytania stają się naprawdę wolne. Postanowiłem więc utworzyć indeksy na Redis dla każdego obiektu Location. Na przykład, powiedzmy, że posty 7, 33, 18, 12, 89, 56500, 34000, 30 wszyscy jesteśmy oznaczeni w lokalizacji 1812. Utworzyłbym listę Redis o nazwie „location: 1812” i na tej liście zawierałaby identyfikatory wszystkich postów, które są tam oznaczone, w tym przypadku redislist = [7, 33, 18, 12, 89, 56500, 34000, 30]. Następnie wziąłbym tę listę i zapytałbym o nią: queryset = Post.objects.filter(pk__in = redislist).order_by('-pk') Czy to mądra rzecz? Natychmiast zacząłem myśleć o zaletach i wadach podejścia. Po pierwsze, zapytania do bazy danych byłyby szybsze, ponieważ już wiem, które obiekty muszę pobrać. Jednak pod względem wzornictwa, czy warto? W przypadku czegoś takiego jak unikalne obiekty lokalizacji, sam stół w postgresie może rosnąć nieskończenie wiele (może mieć ponad miliard wierszy). Przechowywanie listy dla każdego obiektu lokalizacji w Redis może być kosztowne (wyczerpuje się pamięć). Więc wszystko sprowadza się do tego. Czy DB jest wystarczająco dobry, czy powinienem kontynuować to, co robię?


title: Czy deweloperzy baz danych są uwzględniani w zadaniach DBA?

text: To nie jest porada zawodowa, to raczej kwestia logistyki. Patrząc na rynek pracy i tym podobne, jest tam mniej administratorów baz danych niż myślę, ale jestem ciekawy, czy administratorzy baz danych faktycznie obejmują programistów baz danych, czy też programiści baz danych są bardziej pod ogólnym terminem „programiści” lub "Deweloperzy oprogramowania"? Jak ktoś, kto lubi programować SQL/zapytania/procedury składowane i tym podobne, ale prawdopodobnie wie trochę o ustawianiu bazy danych i tak dalej? Czy byłoby to pod pojęciem DBA, czy coś innego? (Ponieważ nie widziałem żadnych raportów dla Database Developera w "prognozach rynku pracy" itp.)


W jaki sposób przeglądarka ustala, że skrypt działał zbyt długo? Czy faktycznie można to skonfigurować za pomocą niektórych zaawansowanych ustawień?


title: Jak właściwie działa renderowanie czcionek?

text: Zdaję sobie sprawę, że zasadniczo nic nie wiem o sposobie renderowania czcionek na moim komputerze. Z tego, co mogę zaobserwować, renderowanie czcionek jest generalnie wykonywane w spójny sposób w całym systemie. Na przykład ustawienia podpowiedzi czcionek subpikselowych, które konfiguruję w moim panelu sterowania DE, mają wpływ na tekst, który pojawia się na obramowaniach okien, w mojej przeglądarce, w edytorze tekstu i tak dalej. (Powinienem zauważyć, że niektóre aplikacje Java wykazują zauważalną różnicę, więc myślę, że używają innego mechanizmu renderowania czcionek). Z powyższego wynika, że prawdopodobnie wszystkie aplikacje, które wymagają renderowania czcionek, korzystają z jakiejś biblioteki obejmującej cały system operacyjny (lub DE). Z drugiej strony przeglądarki zazwyczaj zarządzają własnym renderowaniem poprzez silnik renderujący, który zajmuje się pozycjonowaniem różnych elementów – w tym tekstu – zgodnie z określonymi regułami przepływu. Nie jestem pewien, jak te dwa fakty są ze sobą zgodne. Zakładałbym, że przeglądarka musiałaby poprosić system operacyjny o narysowanie glifu w danej pozycji, ale jak może zarządzać przepływem tekstu, nie wiedząc wcześniej, ile miejsca zajmie glif? Czy istnieją oddzielne wywołania określające rozmiary glifów, aby przeglądarka mogła zarządzać przepływem tak, jakby znaki były małymi polami, które są później wypełniane przez system operacyjny? (Chociaż to nie zajmuje się kerningiem). A może system operacyjny odpowiada za rysowanie całego obszaru tekstowego, w tym przepływu tekstu? Czy system operacyjny zwraca wyrenderowany glif jako bitmapę i pozostawia go aplikacji do narysowania go na ekranie?


title: Jak programista powinien przygotować się do nowej pracy?

text: Właśnie skończyłem studia i mam około 2 miesięcy zanim zacznę pracować w firmie. Mam doświadczenie w C, C++, Javie i trochę Androidzie (opracowałem aplikację zeszłego lata, przestałem nad tym pracować). Chcę tylko nauczyć się czegoś nowego, jednocześnie doskonaląc moje podstawowe umiejętności C , C++ i Java. Naprawdę potrzebuję porady na temat tego, czego powinienem zacząć się uczyć, aby móc pracować nad tym, co zostanie mi dane, gdy zaczynam pracę... lub w sensie, który pomoże mi poprawić się z mojego obecnego poziomu... lub który pomoże mi lepiej rozumieć rzeczy, pomaga mi w zrozumieniu rzeczy itp.


title: Edukacyjne, dobrze napisane projekty FOSS do czytania, studiowania lub dyskusji

text: Zanim to powiesz: tak, to „pytanie” było zadawane innym razem. Jednak nie mogłem ukarać wielu takich pytań i nie było to takie łatwe, a te, które znalazłem, miały podobne wyniki. Co staram się powiedzieć, że nie ma wyczerpujących list dobrze napisanych projektów Open Source, więc postanowiłem postawić pewne wymagania dla wpisów (jeden lub ewentualnie więcej): * **Idiomatyczne** użycie języka, w którym są są napisane * Projekt powinien być **lekki**. Nie tak „kilka kbs”, jak „czysty” i prawdopodobnie zgodny z filozofią UNIX, efektywnie wykorzystujący zasoby i wykonujący swój obowiązek i nic więcej. **Brak rozrostu kodu**, co najważniejsze. Na przykład projekty takie jak Firefox i GNOME nie będą się kwalifikować. * Minimalne poleganie na zewnętrznych, niestandardowych bibliotekach, z wyjątkami dla niektórych popularnych bibliotek FOSS (curses, Xlib, OpenGL i prawdopodobnie "zwykłych podejrzanych", takich jak gtk+, webkit i Boost). Poleganie na dobrze napisanych bibliotekach jest mile widziane. * **Brak** polegania na **zastrzeżonym** oprogramowaniu - z oczywistych powodów (np. programy oparte na XNA, DirectX, Cocoa i podobnych). * **Dobrze udokumentowany** kod jest mile widziany. Jeśli to możliwe, dołącz łącza do interfejsów internetowych do ich repozytoriów. Oto kilka przykładowych projektów, które często pojawiają się w tych wątkach: _**Systemy operacyjne_** * Plan 9 z Bell Labs: Mniej więcej oficjalna "kontynuacja" UNIXa. Napisane w C przez tych samych ludzi, którzy wymyślili C! * NetBSD: Najbardziej przenośna implementacja BSD, napisana w C, a także dobry przykład przenośnego i zorganizowanego kodu. _**Sieć i bazy danych_** * Sqlite: Niezwykle lekki i niezwykle wydajny, jeden z najlepszych programów C, jakie widziałem. Sam policz linie! * Lighttpd: Mały, ale całkiem niezawodny serwer sieciowy napisany w C. _**Języki programowania i maszyny wirtualne_** * Lua: niezwykle lekki, wieloparadygmatyczny język programowania. Napisany w C. * Tiny C Compiler: Naprawdę mały kompilator C. Nie do końca porównywalne do GCC czy Clang, ale spełnia swoje zadanie. * PyPy: Implementacja Pythona napisana w Pythonie. * Pharo: OK, przyznaję, nie jestem ekspertem Smalltalk, ale Pharo jest rozwidleniem Squeak i wyglądał dość interesująco. * Stackless Python \- Implementacja Pythona, która nie opiera się na stosie wywołań C - napisana w C (z niektórymi częściami w Pythonie) _**Games i 3D:_** * Angband: Jedna z najbardziej dostępnych baz kodu roguelike tutaj, napisany w C. * Ogre3D: Wieloplatformowy silnik 3D. Staje się nadęty, jeśli nie pominiesz kodu implementacji specyficznej dla platformy, w przeciwnym razie jest to całkiem solidny przykład dobrego C++ OO. * Przenośna kolekcja puzzli Simona Tathama: Tytuł mówi wszystko. _**Other_** \- dwm: Lekki menedżer okien. Napisany w C. _**Emulation and Reverse Engineering_** \- Bochs: emulator x86, napisany w C++ i wystarczająco mały. \- MAME: Jeśli chcesz zobaczyć C na jednym z najniższych poziomów, MAME jest dla Ciebie. Może nie być tak czysty jak inne projekty, ale może DUŻO Cię nauczyć. Zanim zapytasz: nie wspomniałem o Linuksie, ponieważ stał się on dość rozdęty w ciągu ostatnich kilku lat, Linus również to potwierdził. Niemniej jednak byłoby to świetne pouczające przeczytanie tego samego, nawet jeśli z innych powodów. To samo dla GCC.


title: Jak kodujesz bez obrażania?

text: Mam na myśli to, jak się rozwijasz na bazie kodu, którą dzielisz się z programistami, którzy pracują nad tym od lat i dobrze się z tym znają? Nie chcę nadepnąć nikomu na palce, ale nie otrzymuję tak subtelnych skarg na sposób, w jaki robię różne rzeczy, czy to w jaki sposób wpisuję swój kod, czy jak często melduję się w SVN (zbyt często). Więc chociaż mogę łatwo zmienić te rzeczy - ogólnie chcę być lepszym programistą zespołowym. Nie jestem pewien, co zrobić, poza pytaniem, ale może macie jakieś myśli, które mógłbym wprowadzić w życie. **AKTUALIZACJA** Nie ma żadnego przewodnika po stylu – po prostu ludzie nie są przyzwyczajeni do udostępniania bazy kodu. Każdy ma swój mały, wyciszony świat kodu. To jest sklep z perlami, ale jestem pewien, że odnoszą się one do każdego języka **UPDATE 2** CTO, który później został dyrektorem generalnym, był kompletnym megalomanem i był głównym źródłem tych skarg. Jeśli nie robiłeś rzeczy dokładnie tak, jak lubił, bez względu na to, czy używałeś Maca, Emacsa, 4 spacji zamiast 2, czy też ubierałeś się w określony sposób, byłeś gorszy. To była przerażająca sytuacja, którą próbowałem naprawić, ale jedyną poprawną odpowiedzią dla mnie było wyjście. Jestem przekonany, że był to przypadek **nękania** w miejscu pracy, a co za tym idzie, jestem bardziej świadomy tego, co może być subtelnym zastraszaniem i niewłaściwym zachowaniem w środowisku pracy. ** Każdemu programiście, który szuka odpowiedzi na taką sytuację, natychmiast wyjdź. Nie możesz wyjść ze złej sytuacji zespołowej.**


title: Czy warto dodać do aplikacji raportowanie ad hoc?

text: Mamy aplikację, która zbiera dużo danych i ma wbudowane raporty. Pierwszą iteracją była integracja Crystal Reports, która działała ładnie. Utwórz raport w programie Crystal Report designer, a następnie zaimportuj plik RPT do aplikacji. Działało to dobrze, ale użytkownicy potrzebowali aplikacji do uruchomienia raportu, a dodatkowo użytkownicy nie mogli utworzyć raportu. Dodaliśmy filtry, sortery i grupy, aby plik RPT można było dostosować, ale nie mogli utworzyć go od zera. Drugą interakcją było rozwiązanie internetowe wykorzystujące SSRS, SSAS i narzędzie do tworzenia raportów firmy Microsoft. Wymagało to trochę pracy z bazą danych i trochę pracy, aby uruchomić kostki ze schematu OLTP, ale ostatecznie znacznie łatwiej było tworzyć raporty zbiorcze. Jednak nadal musimy tworzyć raporty za pomocą narzędzia do tworzenia raportów, publikować je, itp. Dodaliśmy również filtry, sortery i grupujące, aby można je było „dostosowywać”. W obu tych scenariuszach mamy około 30 do 50 nieszablonowych raportów utworzonych w czasie. Teraz toczy się dyskusja na temat dodawania raportów ad hoc, aby użytkownicy mogli tworzyć raport od zera w locie. Teraz nasz model danych jest bardzo złożony i wymaga dobrej znajomości go, aby nadać mu sens. Wykonanie tego jako minimum wymagałoby sporo pracy, aby wprowadzić model danych do schematu, który jest „bardziej raportowalny” i łatwiejszy do zrozumienia. Nie sądzę, aby nasza aplikacja była odpowiednia do raportowania ad hoc (nie jest to warte wysiłku). Czy ktoś odniósł sukces w dostarczaniu raportów ad hoc? Jakiego zestawu narzędzi użyłeś? Czy miało to wpływ na sukces Twojej aplikacji?


title: Implementacja algorytmów artykułów technicznych w C++ lub MATLAB

text: Jestem studentem elektrotechniki. Czytałem wiele artykułów technicznych na temat algorytmów przetwarzania sygnału i obrazu (rekonstrukcja, segmentacja, filtrowanie itp.). Większość algorytmów przedstawionych w tych artykułach jest zdefiniowana dla ciągłego czasu i ciągłej częstotliwości i często podaje rozwiązania w postaci skomplikowanych równań. W jaki sposób zaimplementowałbyś od podstaw artykuł techniczny w C++ lub MATLAB, aby powtórzyć wyniki uzyskane we wspomnianym artykule? Dokładniej, patrzyłem na artykuł „Ogólny algorytm rekonstrukcji wiązki stożkowej” autorstwa Wanga i in. (IEEE Trans Med Imaging. 1993;12(3):486-96) i zastanawiałem się, jak mam zacząć wdrażając swój algorytm? Równanie 10 daje wzór zrekonstruowanego obrazu w . Jak byś to zakodował? Czy miałbyś pętlę for przechodzącą przez każdy woksel i obliczającą odpowiednią formułę? Jak zakodowałbyś funkcje funkcji w tej formule? Jak oceniłbyś funkcje w dowolnych punktach? Przeczytałem książkę „Digital Image Processing” autorstwa Gonzaleza i Woodsa, ale wciąż nie mam pojęcia. Czytałem też o serii książek Numerical Recipes. Czy to byłby właściwy sposób? Jakie masz doświadczenia z programowaniem algorytmów z artykułów naukowych? Jakieś wskazówki lub sugestie?


title: Jak wybierasz używanie określonego języka programowania?

text: Rozmawiałem między kolegami z zespołu o tym, jak wybrać język programowania do użycia w projekcie, co doprowadziło mnie do wniosku, że istnieje wiele kryteriów wyboru na początku projektu, ale nie ma prawdziwego standardu. Czy wybrałeś język programowania dla składni i semantyki? A może wybierasz taki, ponieważ ma najlepsze wsparcie do robienia pewnych rzeczy? Albo dlatego, że masz lepsze biblioteki? Czy wybierasz go jako paradygmat? Jakich kryteriów używasz, aby wybrać jeden język, kiedy zamierzasz zrobić projekt?


title: Rozwijać najnowszą i najlepszą czy trzymać się dobrze udokumentowanej wersji?

text: Czy powinienem rozwijać się na najnowszej i najlepszej wersji Joomla 1.7, czy trzymać się dobrze udokumentowanej wersji 1.5? Jestem nowicjuszem w Joomla (i ogólnie w webDev), więc kręcę się, szukam w Internecie i pytam tych mądrzejszych od siebie. Problem polega na tym, że odpowiedzi dotyczą wersji 1.5, a nie 1.7, więc błądzę. Zwykle korzystam z najnowszych i najlepszych. * Powinna być obsługiwana dłużej * Powinna zawierać poprawki błędów * Nowe, niesamowite rzeczy zostaną opracowane nie będą kompatybilne wstecznie * Rozszerzenia i komponenty dla starej wersji nie będą utrzymywane Ale muszę uruchomić tę stronę w ciągu miesiąca . A jeśli walczę źle lub brakuje mi dokumentacji, będzie to ciężka bitwa. Więc trzymaj się najnowszych i najlepszych lub zainstaluj to, do czego są przeznaczone wszystkie samouczki, przewodniki i filmy?


title: Dlaczego OOP jest trudne?

text: Kiedy zacząłem używać języka zorientowanego obiektowo (Java), po prostu poszedłem „Fajnie” i zacząłem kodować. Nigdy się nad tym nie zastanawiałem, aż do niedawna, po przeczytaniu wielu pytań dotyczących OOP. Ogólne wrażenie, jakie odnoszę, jest takie, że ludzie się z tym borykają. Ponieważ nie myślałem o tym tak ciężko i nie powiedziałbym, że jestem geniuszem, myślę, że musiałem coś przeoczyć lub źle to zrozumieć. Dlaczego OOP jest trudne do zrozumienia? _Czy_ trudno to zrozumieć?


title: Czy powinienem powiedzieć ankieterowi, że znam już odpowiedź na zadane pytanie?

text: W rozmowie programistycznej, jeśli zadano mi pytanie, na które już znam odpowiedź, np. podanie algorytmu dla konkretnego problemu. Czy powinienem to ujawnić ankieterowi? Ten problem ma sens tylko wtedy, gdy w pytaniu pojawia się aspekt nowości. Jednym z przykładów jest „Jak odwróciłbyś każde słowo w ciągu, ale nie ich kolejność?”. Wydaje się również, że istnieje podział na łatwiejsze rzeczy, które „powinniście” znać, takie jak mój przykład, i trudniejsze, bardziej wymyślne problemy. Jaka jest twoja polityka i uzasadnienie radzenia sobie z tym problemem? Jeśli znasz już pytanie/łamigłówkę, czy powinieneś to ujawnić oprócz odpowiedzi na pytanie? Czy istnieje jakiś dylemat etyczny związany z nieujawnieniem swojej wcześniejszej wiedzy na ten temat?


title: Pisemne kursy umiejętności komunikacyjnych, jak ważne są dla programistów?

text: Zwykle martwimy się o standardy kodowania, etykę, najnowszą technologię itp. Czasami jednak ignorujemy nasze umiejętności pisania i komunikacji. Czy musimy kontynuować kursy umiejętności komunikacyjnych? Które wolisz? Czy są dostępne kursy online, które mogłeś wypróbować?


title: Protokół plotkowania w topologii pierścienia

text: Wdrażam mechanizm wykrywania członkostwa oparty na plotkach. Powiedzmy, że mamy topologię pierścienia, tj. node1 wie tylko o 2 węzłach (node4 i node2) wokół niego. node1 - - - - node4 node2 - - - - node3 Teraz plotki mówią: Wybierz losowo węzeł z listy członków. Ale jeśli ściśle przestrzegamy topologii pierścienia, wówczas node1 powinien próbować plotkować tylko z node2 lub node4. Inaczej, tylko dla komunikacji topologia stanie się kliką, a nie pierścieniem. Tło: Zgodnie z artykułem Amazon dyanmo: > Każdy węzeł kontaktuje się z partnerem wybranym losowo co sekundę, a dwa węzły > skutecznie uzgadniają swoje utrwalone historie zmian członkostwa. Jeśli tak jest, to czy implementacja dynama nie jest zgodna z „prawdziwą” topologią pierścienia i używa pierścienia tylko do spójnego mieszania (replikacji) i używa kliki do wykrywania członkostwa?


title: Programowanie na starym komputerze(ach)

text: Każdy, kto nadal programuje na starych komputerach, m.in. ZX Spectrum BASIC, Amiga BASIC, głupie terminale? Jeśli tak, to czy uważasz to za przydatne do programowania przy użyciu dzisiejszych technologii? Wreszcie, dlaczego to robisz? Dla zabawy?


title: Dyski twarde i programowanie SSD

text: Dyski twarde SSD ostatnio zyskują na popularności. I zastanawiałem się, czy warto go kupić jako programista. Możliwość zaoszczędzenia pięciu minut podczas uruchamiania komputera jest fajna, ale nie przekona mojego szefa. Jak to wpływa na typowy projekt studia wizualnego zawierający setki plików? Czasy kompilacji, dostęp do plików, czekanie, aż visual studio zrobi swoje... Czy są jakieś testy, które to sprawdzały? A najlepiej, ile czasu tygodniowo można by wygrać dzięki uaktualnieniu?


title: Czy w przypadku ORM wspierającego walidację danych należy wymuszać również ograniczenia w bazie danych?

text: Zawsze stosowałem ograniczenia na poziomie bazy danych oprócz moich modeli (ActiveRecord). Ale zastanawiałem się, czy to naprawdę jest wymagane? **Trochę tła** Niedawno musiałem przetestować podstawową metodę automatycznego generowania znaczników czasu dla modelu. Normalnie test tworzyłby instancję modelu i zapisywał go bez walidacji. Ale istnieją inne wymagane pola, które nie mogą mieć wartości null w definicji tabeli, co oznacza, że nie mogę zapisać instancji, nawet jeśli pominę walidację ActiveRecord. Więc zastanawiam się, czy powinienem usunąć takie ograniczenia z samej bazy danych i pozwolić, aby ORM je obsłużył? **Możliwe korzyści** jeśli pominę ograniczenia w db, imo - * Potrafi modyfikować regułę walidacji w modelu, bez konieczności migracji bazy danych. * Można pominąć walidację w testach. **Możliwa wada?** Jeśli jest możliwe, że walidacja ORM nie powiedzie się lub zostanie pominięta, baza danych nie sprawdza ograniczeń. Co myślisz? **EDYTUJ** W tym przypadku korzystam z Yii Framework, który generuje model z bazy danych, stąd też generowane są reguły bazy danych (chociaż zawsze mógłbym napisać je samemu po wygenerowaniu).


title: Jaka jest najbardziej skomplikowana struktura danych, której użyłeś w praktyce?

text: Zalążek tego pytania pojawił się w dyskusji, którą przeprowadziłem z kilkoma innymi programistami z branży. Okazuje się, że w wielu miejscach kierownicy projektów nieufnie podchodzą do złożonych struktur danych i generalnie nalegają na to, co istnieje poza standardowymi bibliotekami/pakietami. Ogólny pomysł wydaje się przypominać użycie kombinacji tego, co już jest dostępne, chyba że wydajność jest poważnie utrudniona. Pomaga to w utrzymaniu prostej bazy kodu, co dla osób niedyplomatycznych oznaczałoby „mamy wysokie zużycie, a nowsze, które zatrudniamy, mogą nie być tak dobre”. Więc nie ma filtru kwitnienia, listy pomijania ani drzewek dla was, ćpunów CS. Oto pytanie (ponownie): Jaka jest najbardziej skomplikowana struktura danych, którą zrobiłeś lub wykorzystałeś w biurze? Pomaga zorientować się, jak dobre/wyrafinowane jest oprogramowanie w świecie rzeczywistym.


title: równoważna konstrukcja funkcji wyższego rzędu w 10 najpopularniejszych językach TIOBE

text: Próbuję znaleźć konstrukcję języka równoważną funkcjom wyższego rzędu w 10 najlepszych językach z indeksu TIOBE. Oto moje dotychczasowe wyniki: 1. **C** \- wskaźniki do funkcji 2. **Java** \- metody anonimowe, lambdy 3. **Objective-C** \- wskaźniki do funkcji, selektory, bloki, delegacje (jak wyjaśniono tutaj) 4. **C++** \- wskaźniki do funkcji, lambdas 5. **Basic** \- [ _missing_ ] 6. **C#** \- metody anonimowe, delegate, lambdas 7. **Python ** \- [ _Wiem, że to możliwe, ale nie wiem, jak się to nazywa_ ] 8. **PHP** \- funkcje anonimowe 9. **Perl** \- [ _brakujące_] 10. **JavaScript** \ - funkcje Czy mógłbyś mi pomóc z brakującymi częściami? I ewentualnie poprawić ewentualne błędy? Nie szukam obejścia, ale wbudowanych konstrukcji językowych, które pozwalają przekazać funkcję do innej funkcji.


title: Jak najlepiej poradzić sobie z refaktoryzacją baz danych w zespole?

text: Obecnie stosujemy podejście „roll-forward” do zmian w bazie danych, podobne do „Migracji”, gdzie każdy programista tworzy i sprawdza skrypt, który promuje najnowszą wersję bazy danych do nowego stanu. Problemy pojawiają się, gdy wielu programistów jednocześnie pracuje nad nietrywialnymi zadaniami i w końcu wprowadza zmiany w bazie danych, które wzajemnie się kolidują. Bit „nietrywialny” jest znaczący, ponieważ jeśli zadania trwają wystarczająco długo, a zmiany w bazie danych pojawią się wystarczająco wcześnie w cyklu, żaden z deweloperów nie będzie świadomy zmian nawzajem i skończymy z koszmarem scalania baz danych ( preferowany przypadek) lub przypadkowo uszkodzona baza danych. Czy takich sytuacji można łatwo uniknąć? Czy istnieją strategie refaktoryzacji baz danych, które skutecznie radzą sobie ze scenariuszem, w którym wielu programistów aktywnie zmienia schemat? Jeśli ma to znaczenie, korzystamy z SQL Server.


W _JavaScript: The Good Parts_ Douglasa Crockforda, wspomina w swoim rozdziale dotyczącym dziedziczenia: > Inną korzyścią dziedziczenia klasycznego jest to, że zawiera ono > specyfikację systemu typów. To głównie uwalnia programistę > od konieczności pisania jawnych operacji rzutowania, co jest bardzo dobrą rzeczą > ponieważ podczas rzutowania tracone są korzyści związane z bezpieczeństwem systemu typów. Więc przede wszystkim, czym właściwie jest bezpieczeństwo? ochrona przed uszkodzeniem danych, hakerami, awariami systemu itp.? Jakie są zalety bezpieczeństwa systemu typu? Co sprawia, że system typów jest inny, co pozwala mu zapewnić te korzyści w zakresie bezpieczeństwa?


title: Czy go-langowe baseny gorutynowe to tylko zielone nitki?

text: Komentator tutaj przedstawia następującą krytykę zielonych wątków: > Początkowo sprzedawano mi model N:M jako sposób na sterowanie zdarzeniami > programowanie bez piekła wywołań zwrotnych. Możesz napisać kod, który wygląda jak > bolesny stary kod proceduralny, ale pod spodem kryje się magia, która wykorzystuje przestrzeń użytkownika > przełączanie zadań, gdy coś by się blokowało. Brzmi wspaniale. Problem polega na tym, że > rozwiązujemy złożoność z większą złożonością. swapcontext() i > family są dość proste, złożoność pochodzi z innych > niezamierzonych miejsc. > > Nagle jesteś zmuszony do napisania harmonogramu przestrzeni użytkownika i zgadnij co > Naprawdę trudno jest napisać harmonogram, który wykona lepszą pracę niż > Harmonogramy Linuksa, w który włożono wiele lat pracy. Teraz chcesz > w swoim harmonogramie obsadzić N zielonych wątków w M fizycznych wątkach, więc musisz się > martwić o synchronizację. Synchronizacja powoduje problemy z wydajnością, więc > zaczynasz teraz, jesteś w nowej, pozbawionej blokad króliczej dziurze. Zbudowanie poprawnego > wysoce współbieżnego harmonogramu nie jest łatwym zadaniem. Kolejna krytyka jest tutaj: > Pojedynczy proces udający wiele wątków ma wiele problemów. Jednym z nich > jest to, że wszystkie sfałszowane wątki zatrzymują się na każdym błędzie strony. Moje pytanie brzmi - **gorutyny Arego-langa (dla domyślnej puli) to tylko zielone wątki? Jeśli tak – czy odnoszą się do powyższych uwag krytycznych?**


title: Jak zacząć od modelowania 2d lub 3d?

text: Moim celem jest pokazanie fraktali w płaszczyźnie lub w przestrzeni... Myślałem, że opengl to najlepszy początek, ale która jest najlepszą książką zorientowaną na "matematykę" i "grafikę matematyczną"? 1. Czerwona książka? http://www.opengl.org/documentation/red_book/ 2. Opengl znakomity? http://www.opengl.org/documentation/books/#opengl_superbible_4th_edition 3. Jakieś inne? I... czy możesz zaproponować jakieś IDE?


title: Jakie są zalety bezpieczeństwa Google Caja nad korzystaniem z interfejsu Web Worker API?

text: Obecnie zaglądam do Google Caja, aby uruchomić dostarczony przez użytkownika kod JS w przeglądarce i w węźle. Do tej pory rozumiem, że w kontekście przeglądarki „kod nakłaniany” uniemożliwia odczytywanie i manipulowanie stanem okna poprzez uruchomienie niebezpiecznego kodu przez w pełni rozwinięty parser, który pozbywa się wszelkiego rodzaju wektorów ataku, a następnie bezpiecznie go wykonuje kod w 'iframe' tego samego pochodzenia. Jednak obecnie pracuję nad rozwiązaniem wykorzystującym „Worker” HTML5 (patrz tutaj) i wydaje się, że ma to ten sam efekt. Czego Caja ma do zaoferowania, czego nie ma Pracownik, poza możliwością dostosowywania polityk bezpieczeństwa? Czy posiada dodatkowe zabezpieczenia?


title: Lista generyków bez generyków

text: Używam bardzo prymitywnej Javy, która nie ma Generic, a także nie mogę użyć refleksji. Chcę utworzyć ogólną listę, aby była wpisana jako bezpieczna (tj. Mam tylko listę zawierającą obiekty i chcę utworzyć listę zawierającą określony obiekt, a nie mieszankę). Z drugiej strony nie chcę też tworzyć osobnej klasy dla każdej możliwej listy. Czy jest inny sposób na zrobienie tego bez użycia Generics?


title: Zarządzanie skryptami wdrożeniowymi w procesie ciągłej dostawy

text: Moje pytanie dotyczy **skryptów wdrożeniowych** w procesie **ciągłego dostarczania**. Ciągłe dostarczanie zaleca, aby skrypty wdrażania były wersjonowane do SCM tak jak normalny kod. * Jaka jest najlepsza praktyka, aby uniknąć problemów, takich jak pobieranie (np. z Git) skryptu, który nie ma odpowiednich uprawnień lub nie jest wykonywalny? * Ponadto, gdzie w repozytorium SCM powinny znajdować się skrypty wdrożeniowe?


title: Strategia przechowywania haseł/poświadczeń w kontekście ciągłego dostarczania

text: Zdrowym rozsądkiem jest nie przechowywać haseł/poświadczeń w SCM. Chciałbym wtedy wiedzieć, jaka byłaby **dobra strategia przechowywania haseł/poświadczeń** w kontekście ciągłego dostarczania. * Gdzie i jak przechowywać dane uwierzytelniające? * Jak mogę odzyskać i wykorzystać te dane uwierzytelniające/hasła?


Czy istnieje strona internetowa, na której możemy omawiać i ulepszać fragmenty kodu? Na przykład, jeśli napisałem jakąś funkcję i chcę wiedzieć, co myślą o niej inni.


title: Czym dokładnie jest błąd w wymaganiach?

text: Właśnie szukałem formalnej definicji i nie znalazłem żadnej. Termin "błąd w wymaganiach" zawsze był dla mnie mylący, co dokładnie oznacza?


title: Dlaczego #pragmy nie są częścią standardu C++?

text: Zwykle problem możliwości wielokrotnych wtrąceń jest rozwiązywany za pomocą serii `#ifdef` `#ifndef`, ale pragmy rozwiązują to za pomocą jednej linii, najwyraźniej są naprawdę przydatne i mogą poprawić czytelność kodu. Dlaczego nie są częścią standardów C++ i C? jest lepszy sposób na uniknięcie wielokrotnych wtrąceń?


title: Dlaczego instrukcja „do” wymaga „chwila”?

text: Ponieważ to stwierdzenie jest tak powszechne: `while (true)` (Java) lub `while (1)` (C) lub czasami `for (;;)` Dlaczego nie ma na to jednej instrukcji? Mogę pomyśleć, że instrukcja, która może to zrobić, to po prostu „do”, ale „do” wymaga „while” na końcu bloku, ale bardziej logiczne byłoby napisanie nieskończonej pętli w ten sposób do { //loop forever } Dlaczego nie? AFAIK instrukcja `do` zawsze wymaga `while` na końcu, ale gdybyśmy mogli użyć tego jak powyżej, byłby to jasny sposób na zdefiniowanie czegoś takiego jak `while (true)`, które moim zdaniem nie powinno być pisane w ten sposób ( lub „dla (;;)”).


title: Rozmowa kwalifikacyjna do pracy, która wykorzystuje umiejętności, z którymi nie masz doświadczenia?

text: Obecnie jestem zatrudniony jako programista w językach C# i C++. Jednak chcę znaleźć nową pracę z powodów osobistych i złożyłem podanie o ogłoszenie o pracy, które wymieniało PHP, CSS i JavaScript jako umiejętności, których szuka firma. Jestem zainteresowany poznaniem PHP, CSS, Javascript. Ta firma chce mnie przesłuchać. Jednak mam z nimi bardzo małe doświadczenie, więc nie wiem, jak się przygotować. Czy jest prawdopodobne, że nie będę nawet pytał o PHP, CSS, Javascript? Jak myślicie, jakie pytania techniczne zostaną mi zadane? Aby odnieść sukces, wystarczy pokazać, że bardzo chętnie uczę się PHP, CSS, Javascript?


title: Jak wdrożyć system rezygnacji z subskrypcji e-mail dla witryny z wieloma rodzajami e-maili?

text: Pracuję nad stroną internetową, która zawiera wiele różnych typów e-maili. Użytkownicy mają konta, a po zalogowaniu mają dostęp do strony ustawień, której mogą używać do dostosowywania rodzajów otrzymywanych wiadomości e-mail. Chciałbym jednak również umożliwić użytkownikom łatwe anulowanie subskrypcji bezpośrednio w otrzymywanych e-mailach. Przyjrzałem się nagłówkom listy rezygnacji z subskrypcji, a także tworzeniu pewnego rodzaju linku za jednym kliknięciem, który wypisałby użytkownika z tego typu wiadomości e-mail bez konieczności logowania lub dalszych działań. To ostatnie prawdopodobnie wymagałoby ode mnie złamania konwencji i wprowadzenia zmian w bazie danych w odpowiedzi na GET na link. Czy jednak nie mylę się, myśląc, że którekolwiek z nich wymagałoby ode mnie wygenerowania i trwałego przechowywania unikalnego identyfikatora w mojej bazie danych dla każdej wysłanej wiadomości e-mail, co naprawdę komplikuje dostarczanie wiadomości e-mail? Bez tego nie jestem pewien, w jaki sposób byłbym w stanie jednoznacznie zidentyfikować użytkownika i typ wiadomości e-mail, aby zmienić ich preferencje dotyczące poczty e-mail, a ten identyfikator musiałby być przechowywany na zawsze, ponieważ użytkownik mógłby mieć wiadomość e-mail w swoim skrzynki odbiorczej przez długi czas, zanim zdecydują się na nią działać. Alternatywnie rozważałem posiadanie strony bez logowania do zarządzania preferencjami poczty e-mail. W przeciwieństwie do powyższego, gdzie potrzebowałbym jednego z tych identyfikatorów dla każdego e-maila, wymagałoby to tylko jednego identyfikatora na użytkownika, bez generowania lub innych działań wymaganych przy wysyłaniu wiadomości e-mail. Wszystkie te kwestie powodują problemy z bezpieczeństwem i mogą być potencjalnie wykorzystywane przez ludzi do manipulowania preferencjami dotyczącymi poczty e-mail innych. Można to nieco złagodzić, upewniając się, że identyfikator jest naprawdę trudny do odgadnięcia. W przypadku podejścia z identyfikatorem raz na użytkownika rozważałem wygenerowanie identyfikatora przez przekazanie identyfikatora użytkownika przez jakiś rodzaj algorytmu szyfrowania, czy jest to rozsądne podejście? W przypadku identyfikatorów e-mail, być może mógłbym użyć identyfikatora użytkownika dołączonego do czasu. Jednak nawet to nie wyeliminowałoby całkowicie problemu, ponieważ byłoby to tak naprawdę tylko zabezpieczeniem przez ukrywanie, a każdy, kto miałby adres URL, mógłby manipulować, a ostatecznie główną obroną musiałby być fakt, że większość ludzi nie jest tak znudzona, aby manipulować preferencjami poczty e-mail innych osób. Czy są jakieś inne alternatywy, które pominąłem, lub problemy lub rozwiązania z nimi, które każdy może udzielić wglądu? Jakie są najlepsze praktyki w tym obszarze? **Edytuj:** Oto alternatywa, której przegapiłem dla każdego, kto natknie się na to później. Sprytnym sposobem na to jest umieszczenie w łączu rezygnacji z subskrypcji podpisu kryptograficznego użytkownika, który ma zostać wypisany, oraz tego, z czego ma się wypisać. W bazie danych nie trzeba niczego przechowywać, a bezpieczeństwo jest na równi z rozwiązaniami, które rozważałem.


title: Możliwości certyfikacji C#?

text: Studiuję C# od około sześciu miesięcy na uniwersytecie. Chciałbym mieć coś do pokazania w swojej pracy. Wiem, że scena certyfikacji zmienia się z miesiąca na miesiąc i byłbym wdzięczny, gdyby ktoś mógł mi doradzić, jakie opcje certyfikacji są dla mnie dostępne. Dziękuję Ci bardzo za Twój czas. Mariko


title: Jaki jest właściwy sposób wyodrębniania i przekazywania parametrów w celu wywołania funkcji JavaScript z mojej strony PHP?

text:
Oto moja sytuacja: mam stronę wyników wyszukiwania w PHP, gdzie większość logiki znajduje się w pliku javascript, aby uniknąć odświeżania strony za każdym razem, gdy wykonywana jest akcja. Pierwszą rzeczą, którą robię przy użyciu PHP, jest odfiltrowanie i zapisanie prawidłowych wartości ciągu zapytania do zmiennych PHP oraz skorzystanie z funkcji htmlspecialchars, aby zapobiec wstrzykiwaniu. Teraz chciałbym wywołać moją funkcję javascript za pomocą tych zmiennych, więc utworzyłem tag skryptu na dole strony, aby przekazać do niego zmienne PHP (patrz mój przykład). Kiedy umieściłem cały mój kod javascript w jego własnym zakresie (jak czytałem, to była dobra praktyka bezpieczeństwa), zdałem sobie sprawę, że nie mogę już wywoływać mojej funkcji spoza niego. Zdaję sobie również sprawę, że metoda javascript może być nadal wywoływana ze wszystkim, czego chce haker, więc czy to oznacza, że tak naprawdę nie mogę skorzystać z htmlspecialchars w mojej sytuacji? Oto uproszczona wersja mojego kodu: <?php try { if (isset($_GET["id"])) { if (!is_numeric($_GET["id"])) throw new Exception("URL jest nie w prawidłowym formacie"); $id= $_GET["id"]; } elseif (isset($_GET["keyword"])) { $keyword = htmlspecialchars($_GET["keyword"]); } } catch (wyjątek $e) { // obsługuj błąd } ?>

 < ?php if (isset($id)) { echo ''; } elseif (isset($keyword)) { echo ''; } ?>   Zasadniczo jest to js: function ShowSearchResults(klucz,wartość) { $.getJSON("includes/search_results.php?"+key+"="+value, function(data) { // wypełnij wyniki wyszukiwania $(".searchResults").html( "wyniki wyszukiwania" ); }) .error(function() { $(".searchResults").html( "brak wyników" ); }); } Moje pytania (pamiętając o bezpieczeństwie i najlepszych praktykach): Czy przekazywanie wartości ciągu zapytania do funkcji javascript z wnętrza treści jest złą praktyką? Początkowo zrobiłem to, ponieważ miałem wrażenie, że wyodrębnianie wartości ciągu zapytania za pomocą javascriptu nie jest dobrym pomysłem. Może się mylę. Czy należy wyodrębnić wartości ciągu zapytania z funkcji $(document).ready, a następnie wywołać stamtąd odpowiednie funkcje javascript? Jaki jest właściwy sposób, aby to zrobić (odpowiednik htmlspecialchars)? Należy pamiętać, że w moim kodzie javascript używam $.getJSON do wywołania innej funkcji po stronie serwera (w PHP), która może odrzucić wszystko, co jest niebezpieczne. Każdy wgląd byłby bardzo mile widziany.


title: Przełączanie z klasy abstrakcyjnej na interfejs

text: Mam klasę abstrakcyjną, która ma wszystkie metody abstrakcyjne, z wyjątkiem jednej, która konstruuje obiekty podklas. Teraz mój mentor poprosił mnie o przeniesienie tej abstrakcyjnej klasy do interfejsu. Posiadanie interfejsu nie stanowi problemu, z wyjątkiem metody używanej do konstruowania obiektów podklas. Gdzie teraz powinna iść ta metoda? Czytałem też gdzieś, że interfejsy są bardziej wydajne niż klasy abstrakcyjne. Czy to prawda? Oto przykład moich klas abstract class Animal { //wiele metod abstrakcyjnych getAnimalobject(jakiś parametr) { return //odpowiednia podklasa } } class Dog extends Animal {} class Elephant extends Animal {}


title: Zagnieżdżone encje i obliczenia na właściwości encji liścia — podejście SQL lub NoSQL

text: Pracuję nad projektem hobbystycznym o nazwie Zarządzanie Menu/Przepisami. Tak wyglądają moje podmioty i ich relacje. „Składnik” ma właściwości „Kod” i „Wartość” „Składnik” ma kolekcję „Składniki” „Przepis” ma kolekcję „Składniki” i czasami może mieć kolekcję innych „przepisów” „Posiłek” ma kolekcję „Recipes” i „Ingredients” „Menu” ma kolekcję „Meals” Relacje mogą być przedstawione jako ![Entity menu i relacje](http://i.stack.imgur.com/Un7Pr. png) Na jednej ze stron, dla wybranego menu, muszę wyświetlić informacje o skutecznych składnikach odżywczych obliczonych na podstawie jego składników (posiłki, przepisy, składniki i odpowiednie składniki odżywcze). Od teraz używam SQL Server do przechowywania danych i nawiguję po łańcuchu z mojego kodu C#, zaczynając od każdego posiłku z menu, a następnie agregując wartości składników odżywczych. Myślę, że nie jest to skuteczny sposób, ponieważ takie obliczenia są wykonywane za każdym razem, gdy żądana jest strona, a składniki zmieniają się od czasu do czasu. Myślałem o posiadaniu usługi działającej w tle, która utrzymuje tabelę o nazwie MenuNutrients (`{MenuId, NutrientId, Value}`) i wypełni/zaktualizuje tę tabelę skutecznymi składnikami odżywczymi, gdy którykolwiek ze składników (posiłek, przepis, składnik) ulegnie zmianie . Uważam, że GraphDB byłaby dobrym rozwiązaniem dla tego wymagania, ale moja ekspozycja na NoSQL jest ograniczona. Chcę wiedzieć, jakie są alternatywne rozwiązania/podejścia do tego wymogu wyświetlania wartości odżywczych danego menu. Mam nadzieję, że mój opis scenariusza jest jasny.


title: Jak przetestowano pierwszego tłumacza Malbolge?

text: Według Wikipedii Malbolge było tak trudne do zrozumienia, kiedy się pojawiło, że pojawienie się pierwszego programu Malbolge zajęło dwa lata. Jeśli to prawda, w jaki sposób przetestowano pierwszy interpreter Malbolge (aby sprawdzić, czy zrobił to właściwie, gdy podano program Malbolge)? Czy to w ogóle zostało przetestowane?


title: Korygowanie wcięcia

text: Pracuję dla międzynarodowej firmy IT firma usługowa. Myślałem, że będą stosować dobre praktyki programistyczne, ale tak nie jest. Jednym z przykładów jest baza kodu źródłowego projektu Java, który jest obecnie opracowywany dla klienta. Jest pełen niepoprawnie wciętego kodu. Jest mieszanka tabulatorów i spacji w wierszach (nie, nie używają stylu formatowania GNU), a także 2, 3 lub 4 wcięcia spacji. Wszędzie, gdzie pracowałem, ludzie zgadzali się na ustalony standard kodowania wcięć i trzymali się go, dlatego uważam ten projekt za anatemę. Jak dyplomatycznie zmusić je do prawidłowego wcięcia?


title: Przemyślenia i najlepsze praktyki dotyczące klas statycznych i członków

text: Jestem bardzo ciekawy przemyśleń i najlepszych praktyk branżowych dotyczących statycznych członków lub całych klas statycznych. Czy ma to jakieś wady, czy też bierze udział w jakichkolwiek antywzorcach? Widzę te encje jako „klasy narzędziowe/członków”, w tym sensie, że nie wymagają ani nie wymagają tworzenia instancji klasy w celu zapewnienia funkcjonalności. Jakie są ogólne przemyślenia i najlepsze praktyki branżowe w tym zakresie? Zobacz poniższe przykładowe klasy i członków, aby zilustrować, do czego się odwołuję. // klasa niestatyczna ze statycznymi elementami // public class Class1 { // ... inne niestatyczne elementy ... public static string GetSomeString() { // zrób coś } } // static class // public static class Class2 { // ... inne statyczne składowe ... public static string GetSomeString() { // zrób coś } } Z góry dziękuję!


title: System „zadań”, który ma zakończenie, aby przygotować się do kolejnego zadania

text: Chcę stworzyć system, aby były pewne zadania. Na przykład porozmawiajmy o grze. Chcę, żeby było ponad 100 zadań robiących różne rzeczy, ale gdy magiczny poziom gracza wynosi 5, wykona magiczne zadanie, jeśli gracz ma 5 poziom umiejętności walki, będzie walczył. Już to mam, ale oto haczyk. Chcę, aby po wykonaniu zadania miało „zakończenie”. Więc zrobi coś, zanim w końcu zostanie zabity. Mój kod do tej pory: for (GameTask a : s.gameTasks) { if (a != null) { if (a.validate()) { a.execute(); } } } Zapętli wszystkie zadania i wykona je, jednak jak mogę zaimplementować do niego „zakończenie”, aby był gotowy do następnego zadania? Mam nadzieję, że napisałem to wyraźnie, ponieważ angielski nie jest moim językiem ojczystym. tl;dr, chcę dodać „koniec” do każdego zadania, aby można je było zabić i było gotowe do następnego zadania.


title: Struktura bazy danych listy subskrybentów

text: Tworzę aplikację, która pozwala różnym użytkownikom przechowywać informacje o subskrybentach * Aby przechowywać informacje o subskrybentach, użytkownik najpierw tworzy listę. Dla każdej listy istnieje ListID. `Subskrybent` może mieć inny atrybut: e-mail telefon faks.... Dla każdej listy ich ustawienie jest inne, dlatego wprowadzono `tablicę require_attribute`. Jest to pomost między subskrybentem a listą, która przechowuje `Listid, subid, attribute, datatype` **Oznacza to, że system ma wiele list, każdy użytkownik ma swoją własną listę, a lista ma inny atrybut, niektóre listy mają adres e-mail , phone , niektórzy mogą mieć telefon, adres, imię i nazwisko mail.. A typ danych jest inny, niektórzy mogą używać 'name' jako liczby całkowitej, niektórzy mogą używać 'name' jako varchar** * atrybut oznacza e-mail telefon, należy go zdefiniować dla ` która lista ma jaki atrybut subskrybenta` * datatype oznacza dla każdego atrybutu jaki jest jego typ danych Tabela :subid : Pole :subid , nazwa, e-mail Tabela :Require Attribute: Field : Listid ,subid , attribute, datatype Atrybut tutaj to {name, email} Tak więc proste dane to Subskrybent: 1 , MYname, Myemail Require Attribute : Listid , 1 , 'email', 'intger' Listid , 1 , 'name', 'varchar'. obsłużyć, Od abonenta jest udostępniany wszystkim, więc jeśli dana osoba chce zmienić typ danych nazwy, wpłynie to również na dane innego użytkownika. Prosta sytuacja błędu: Subskrybent: lista1, Subskrybent 1 , name1, email1 list2, Abonent 2 , name2 , email2 Require Attribute : List1 , Subscriber 1 , 'email', 'varchar', List1 , Subscriber 1 , 'name', 'varchar' , Listid , Subscriber 2 , 'email', 'varchar', Listid , Subscriber 2, 'name', 'integer', **jeśli użytkownik B zmieni typ danych name w atrybucie require z varchar na integer, spowoduje to problem . ponieważ lista 1 jest własnością użytkownika A, chce, aby typ danych to varchar, ale lista 2 jest wygrywana przez użytkownika B, chce, aby typ danych był liczbą całkowitą** Więc jak mogę przeprojektować strukturę?


title: Co to za problem?

text: Analityk biznesowy tworzy wymaganie. Wymóg wdrożony przez dewelopera. BA przeprowadza kontrolę jakości. Raport o błędach zawiera różne błędy, które nigdy nie były wymaganiami. NP. Wymagane jest wyświetlenie raportu. Wyświetlany jest raport. W kontroli jakości analityk widzi, że użytkownik może wprowadzić nieprawidłowe dane. Nieprawidłowe dane powodują, że raport jest nieważny. Zgodnie z wymaganiami wyświetlany jest komunikat o błędzie. Analityk decyduje, że chce, aby dane z wcześniej uruchomionego raportu zostały wyczyszczone. Obecnie przy wejściu w nieprawidłowy stan system wyświetla wyniki z poprzedniego raportu wraz z komunikatem o błędzie. W tym przypadku problem polega na tym, że jesteśmy w stanie błędu. Stan błędu wymaga komunikatu o błędzie, ale poza tym jest niezdefiniowany. Czy ten zakres „błędów” jest pełzający, słabo zdefiniowane wymagania, brak ogólnego procesu biznesowego do zarządzania błędami, brak przewidywania technicznego ze strony BA/Dev, ważne żądanie lub inne? Jak możesz zminimalizować tego typu problemy? **Inne szczegóły (specyficzne dla tej aplikacji)** Aplikacja internetowa. Stan trwały jest ogólną częścią projektu (stąd powód, dla którego raport jest nadal wyświetlany). Istnieje niewiele operacji HTTP POST/GET wykonywanych poza AJAX. Menu nawigacyjne zmienia strony bez pełnych ogłoszeń zwrotnych. Zamiast tego wykonaj HTTP GET, aby załadować HTML/JSON do części strony internetowej po kliknięciu.


title: Przeciążenie lub parametry opcjonalne

text: Kiedy mam funkcję, która może lub nie może otrzymać określonego parametru, czy lepiej jest przeciążyć funkcję, czy dodać opcjonalne argumenty? Jeśli każdy z nich ma swoje wzloty i upadki - kiedy miałbym ich użyć?


title: Jak mogę powstrzymać się od nadpisywania zmiennych składowych „nowymi”?

text: Większość mojego doświadczenia w programowaniu była związana z C++ i (drżenie) FORTRAN (jestem naukowcem, a nie programistą jako takim, ale robię co w mojej mocy). Niedawno zacząłem intensywnie używać Pythona i uważam go za świetny. Jednak właśnie spędziłem kilka frustrujących godzin na tropieniu błędu, który okazał się spowodowany utworzeniem nowego elementu obiektu w funkcji, tj. def some_func(self): self.some_info = list(), ale już utworzyłem gdzie indziej element `some_info` dla tego obiektu w innym celu, więc złe rzeczy oczywiście wydarzyły się później, ale trudno było wrócić do tego miejsca. Oczywiście w języku takim jak C++ jest to niemożliwe, ponieważ nie można po prostu tworzyć składowych obiektów w locie. Ponieważ jestem przyzwyczajony do języka, który się tym zajmuje, nie mam dobrze rozwiniętej dyscypliny proceduralnej, która zapobiegałaby nadużywaniu wolności, jaką zapewnia Python (i inne języki dynamicznie typowane). Jaki jest więc najlepszy sposób, aby zapobiec tego rodzaju błędom podczas używania języków takich jak python?


title: Co powoduje nadgodziny i jak można ich uniknąć?

text: Dzisiaj mój menedżer **_powiedział_** mi, że muszę pracować z czasem, aby nadrobić brak planowania i zarządzania projektami. Zamiast zachęcać do nieodpłatnej obowiązkowej pracy w nadgodzinach, mój przełożony dał jasno do zrozumienia, że nie mam wyboru w tej sprawie. To nie jest pojedynczy projekt. Obecnie mamy kilkanaście projektów w ruchu na raz i po prostu nie mogę ich wszystkich wykonać. Dlatego muszę pracować w godzinach nadliczbowych, abyśmy nie musieli naginać terminów. * Czy to oznaka ignoranckiego lub lekceważącego menedżera, czy po prostu niedoświadczonego? * Jestem na tym stanowisku z powodu braku planowania i zarządzania projektami (chyba). Jak mogę tego uniknąć w przyszłości? Nie jestem Project Managerem, to nie jest moja siła. * Jakie są dobre sposoby, aby pracownik pracował w godzinach nadliczbowych, jeśli nie możesz im bezpośrednio zapłacić? Dobre zachęty itp. Z tego, co słyszałem, zdobycie szacunku pracownika jest najlepszym sposobem, aby z czasem zmusić pracowników do pracy, chociaż nigdy nie powinieneś robić z tego nawyku.


title: Jakie są najlepsze praktyki projektowania dla nodejs dla modułów natywnych, które współdzielą zależności?

text: Sytuacja hipotetyczna, mam 3 moduły węzłów, wszystkie natywne, A, B i C. * A to moduł narzędziowy, który udostępnia kilka funkcji w javascript poprzez interfejs węzła, dodatkowo deklaruje/definiuje bogaty zestaw natywnych struktur i funkcji * B to moduł, który jest zależny od struktur danych i źródła w A, eksponuje niektóre funkcje w javascript, dodatkowo deklaruje/definiuje natywne struktury i funkcje * C to moduł zależny od struktur danych i źródła w A i B, eksploduje niektóre funkcje do javascript, dodatkowo deklaruje/definiuje natywne struktury i funkcje Do tej pory podczas konfigurowania tych modułów mam skrypt preinstalacyjny do instalowania innych zależnych dołączeń, ale aby uzyskać dostęp do wszystkich innych modułów podaj jaki jest najlepszy sposób połączyć się z obiektem biblioteki współdzielonej (*.node) ? Czy istnieje alternatywna najlepsza praktyka dla modułów natywnych (np. instalowanie wszystkich źródeł z innych modułów przed zbudowaniem tego pojedynczego modułu)? Odpowiedź


title: Jak sprawić, by klient zrozumiał znaczenie cyklu życia projektu?

text: Sytuacja jest taka, że mam wielu wewnętrznych klientów, którzy nadal mają problemy ze zrozumieniem koncepcji definiowania jasnych wymagań dla projektu i zobowiązania się do nich. Niestety moja sytuacja zawodowa jest taka, że nie mogę odrzucić takich projektów i często jestem zmuszana do sytuacji, o których mogę powiedzieć, że są skazane na pełzanie zakresu (lub gorzej) od samego początku. Mówienie im, że szczegółowe wymagania są niezbędne i dlaczego ich potrzebujemy (na przykładach przeszłych trudnych projektów z tego powodu) nie pomogło. Poszukuję technik, wskazówek, słów itp., których możesz użyć, aby zmotywować lub naświetlić klientów w takich sytuacjach na konieczność wymagań, wyznaczania kamieni milowych itp. Jestem tylko programistą, a nie menedżerem.


title: ASP MVC Action parametry wszystkie ciągi vs typ jawny

text: Wraz z kolegą tworzyliśmy projekt ASP.NET MVC i podczas tego stworzyliśmy nową metodę akcji do obsługi jednego z naszych widoków. Początkowo zacząłem tworzyć akcję w następujący sposób: public ActionResult Index(int id, int numberOfAssessments, int age) { // do stuff } Jednak kiedy zacząłem pisać, porozmawialiśmy o tym: **On**: _"Dlaczego ja tworząc te int, wszystkie powinny być łańcuchami"_ **Ja** : _"Cóż, są intami, więc bardziej sensowne jest ich silne typowanie i zatrzymanie potencjalnych błędów później w bloku kodu"._ **On* * : _"Wstecz, co gdybyśmy chcieli zmienić id na reprezentację alfanumeryczną. Wiemy, że musimy zmienić ten podpis wszędzie tam, gdzie gdyby był to łańcuch, to już by to obsłużyło"._ **Ja** : _" Teraz nie jest to ciąg znaków i nie mamy planów, aby w tej chwili uczynić go ciągiem znaków._ Tak naprawdę nie zdecydowaliśmy wyraźnie, co robić, ale dało mi to do myślenia. **Pytanie** : Czy parametry metod Action powinny być ciągami znaków, jeśli ma to być bardziej elastyczne w przyszłości, czy też powinny być specyficzne dla ich typu, abyśmy mogli wykorzystać powiązanie MVC i obsługę błędów? Jaka jest najlepsza lub akceptowana praktyka w takich sytuacjach. Czy trzeba wziąć pod uwagę zbyt wiele kwestii, aby uzyskać ostateczną odpowiedź?


title: Przenoszenie rozwoju zorientowanego obiektowo na wyższy poziom

text: Czy możesz wymienić niektóre zaawansowane tematy lub koncepcje OO, o których należy pamiętać? Jestem programistą od 2 lat i obecnie dążę do pewnej firmy, która wymaga programisty internetowego z minimum 3 letnim doświadczeniem. Wyobrażam sobie, że rozmowa będzie miała podstawowe tematy zorientowane obiektowo, takie jak (abstrakcja, polimorfizm, dziedziczenie, wzorce projektowe, UML, bazy danych i ORM, zasady SOLID, zasada DRY, ...itd) Mam te tematy omówione, ale czym jestem z niecierpliwością czekamy na poruszanie takich tematów, jak sprzężenie odśrodkowe, sprzężenie dośrodkowe, niestabilność, prawo Demeter itp. Jeszcze kilka dni temu nie wiedziałem, że takie koncepcje istnieją (może dlatego, że jestem inżynierem komunikacji w zasadzie nie absolwentem CS). Czy mógłbyś polecić jakieś bardziej zaawansowane tematy dotyczące programowania obiektowego?


title: Skrócone właściwości CSS3

text: Pracując na własną rękę pomyślałem, że muszę się nauczyć skróconych właściwości css3, ponieważ - jak wiem teraz, wpływa to na czas ładowania strony, więc muszę go trochę zoptymalizować. Zastanawiałem się - czy jest jakaś kolejność, jak zapisywać wartości właściwości, używając skróconych rekwizytów? Na przykład: `czcionka: 1em/1,5em pogrubiona kursywa szeryfowa`


title: Scenariusze różnic między UICulture a Kulturą

text: W .NET istnieją dwie wartości „kultury”, UICulture i Kultura. Pierwsza dotyczy zlokalizowanych tekstów w interfejsie użytkownika, a druga ustawia kulturę dla formatów daty i liczb. Nie potrafię wymyślić żadnego powodu ani scenariusza, aby te dwie wartości były różne. Czy jest ku temu jakiś powód?


title: Mierniki / Metodologia szacowania wykorzystania zasobów oprogramowania na etapie planowania

text: Szukam podejść do oszacowania wykorzystania zasobów aplikacji (webowej) w środowisku JEE. Ogólnym celem jest uzyskanie prognozy wymagań sprzętowych/programowych, gdy aplikacja jest jeszcze w fazie rozwoju lub nawet na etapie planowania. Czy to zadanie jest zbyt skomplikowane (wiele różnych czynników), aby uzyskać dość rzetelną propozycję bez poświęcania zbyt wiele czasu?


title: Konwencja nazewnictwa plików zewnętrznych (obrazów, dźwięków) w Xcode

text: * Jakie są lepsze konwencje nazewnictwa w Xcode w odniesieniu do plików zewnętrznych (obrazy, dźwięki) itp.? * Czy istnieją jakieś wytyczne od dostawcy Apple? * Ponieważ przechowujemy nasze projekty w SVN, czy jest jakiś współudział ze strony Hosted Server (używamy Linux + Server SVN)?


title: Jaka jest różnica między stylami K&R i One True Brace Style (1TBS)?

text: Przeczytałem artykuł na Wikipedii o stylach wcięcia, ale nadal nie rozumiem. Jaka jest różnica między K&R a 1TBS?


title: Jakie czynniki wpływają na wypróbowanie nowego frameworka lub narzędzia?

text: Jestem w trakcie wprowadzania ostatnich poprawek do frameworka o otwartym kodzie źródłowym, który mam nadzieję wydać w ciągu najbliższych kilku miesięcy. To jest coś, dla czego chciałbym rozwijać społeczność, więc jestem ciekaw, jakie czynniki wpływają na decyzję o użyciu nowego frameworka lub narzędzia i dlaczego. Niektóre z konkretnych rzeczy, o których chciałbym dowiedzieć się więcej (proszę dodać do tego): * Rodzaje dokumentacji/poradników/instrukcji * Wsparcie społeczności (komentarze/forum) * Aktualizacje (blog/media społecznościowe/kanały) * Spójrz i styl projektu strony internetowej projektu * Białe księgi / referencje * Duża lista funkcji * Rozmiar społeczności * Narzędzia * Możliwość wniesienia wkładu * Zasięg testów projektu (stabilność/bezpieczeństwo) * Poziom szumu (zalecany przez znajomych lub w sieci) * Przekonujący tekst marketingowy Idealnie chciałbym mieć wszystkie powyższe elementy, ale jakie konkretne cechy/właściwości będą miały większe znaczenie w skłonieniu programistów do przyjęcia czegoś nowego? **Co mówi „To jest projekt na poziomie profesjonalnym” i jakie są sygnały ostrzegawcze, które powstrzymują Cię przed jego wypróbowaniem?**


title: Planowanie przed rozpoczęciem projektu

text: Ile planowania należy zrobić przed rozpoczęciem projektu? Czy powinni mieć wszystko już zaplanowane, kiedy zaczynają kodować, czy powinni po prostu uzyskać podstawowe pojęcie o tym, czego chcą, a następnie wymyślać rzeczy w locie? Na przykład chcę stworzyć klienta YouTube, który umożliwia strumieniowe przesyłanie filmów i pobieranie wielu filmów jednocześnie (podobnie jak Minitube). Wiem, jak powinien wyglądać interfejs po pierwszym uruchomieniu programu. Czy to na razie wystarczy? Czy powinienem to stworzyć, a następnie zaplanować następny krok, czy powinienem kontynuować planowanie? Ile planowania wystarczy?


title: Jakie cechy mają ze sobą najlepsi menedżerowie, dla których pracowałeś?

text: Słucham podcastu Scotta Hanselmana i Roba Conery'ego This Developer's Life. W ostatnim odcinku omawiają cechy osobowości: > 1.0.4 - Bycie wrednym. > > Co sprawia, że ludzie w naszej branży mają na myśli? A co z agresywnym? Pewny siebie? > Jaka jest różnica? Wolałbyś mieć sierżanta musztry na szefa, czy > mistrza zen? Rozmawiamy z Cyrą Richardson i Gilesem Bowkettem. Zastanowiłem się, jakie cechy mają ze sobą najlepsi menedżerowie, nad którymi pracowałeś? EDYCJA: Żeby wyjaśnić, ponieważ było kilka bliskich głosów, interesuje mnie, czy istnieją cechy wspólne dla menedżerów programistów, które niekoniecznie są tymi cechami, których wymaga menedżer innej profesji. Co do tego, czy jest to związane z programowaniem, czy nie, cóż, nie chcę zadawać tego pytania na stronie, która nie dotyczy programowania, ponieważ szczerze mówiąc, nie jestem tak zainteresowany tym, co ludzie, którzy zarabiają na życie z puszki zupy chcą od swoich menedżerów, ponieważ jestem zainteresowany tym, czego _deweloperzy_ chcą od swoich menedżerów.


title: Czy radzisz sobie z warunkami braku pamięci?

text: Co robisz, gdy `malloc` zwraca 0 lub nowy wyrzuca wyjątek? Po prostu zatrzymać lub spróbować przetrwać stan OOM/zapisać pracę użytkownika?


title: Jak obsługiwać duże projekty js+jquery przy użyciu dobrze napisanego, zorientowanego obiektowo kodu JavaScript i jQuery?

text: Uwielbiam całe to doświadczenie użytkownika/interfejs i umieszczam dużo jQuery i JavaScript (czysty JavaScript dla rzeczy HTML5, takich jak płótno, API plików itp.). Problem, z którym się teraz borykam, polega na tym, że moje kody rozrastają się, 3-4 pliki na projekt z każdym plikiem około 1000 linii kodu, a ich utrzymanie i rozszerzanie staje się bólem głowy. Wiem, że kodowanie JavaScript zorientowane obiektowo może rozwiązać wiele moich problemów. Znam podstawowe koncepcje programowania zorientowanego obiektowo, zrobiłem przyzwoitą ilość w C++, Javie i Pythonie w projektach szkolnych i uniwersyteckich. Chcę przeczytać kilka dobrych przykładów programowania OO na dużą skalę w JavaScript (i jQuery) lub, jeśli to możliwe, trochę książki poświęconej pisaniu dużych programów OO w JavaScript. EDIT1: Sprawdziłem backbone.js, zgadnij, że tego potrzebowałem, na pewno, kiedy użyję go w moim następnym projekcie, dzięki Raynos, moje pytanie powinno dotyczyć obsługi dużych projektów js, a nie tego, co to jest, sry


title: Znalezienie nowej pracy, gdy moje umiejętności nie pasują do ogłoszeń o pracę

text: Jestem programistą C++ i pracowałem nad różnymi aplikacjami internetowymi przy użyciu Perla, Ruby itp. Mam też przyzwoitą znajomość Javy. Problem, z którym mam do czynienia podczas ubiegania się o pracę, polega na tym, że firmy mają określone wymagania, takie jak "Doświadczenie z C# 3.5/4. Powinieneś mieć doświadczenie w tworzeniu aplikacji internetowych z ASP.NET". Co powinieneś zrobić w takich sytuacjach? 1. Nie brać pod uwagę tych firm i szukać firm z Twoją wiedzą specjalistyczną? 2. Po prostu umieść to w swoim CV i poznaj technologię przed rozmowami kwalifikacyjnymi? W końcu, jak trudno jest programiście zrozumieć nowe języki? 3. Postaraj się przekonać pracodawcę w liście motywacyjnym, że jesteś dobry w jednej rzeczy, ale czy nauka nowego języka jest całkiem łatwym narzędziem? 4. Coś jeszcze?


title: Lista priorytetów zadań przechowywanych w bazie danych

text: Staram się wymyślić najlepszy sposób na wykonanie następujących czynności: Mam listę zadań przechowywaną w bazie danych. Zadanie ma przypisany priorytet. Możesz zmienić priorytet zadania, aby zmienić kolejność ich realizacji. Myślę o czymś bardzo podobnym do Pivotal Trackera. Wyobraź sobie więc, że mamy następujące: 1 Zadanie A 2 Zadanie B 3 Zadanie C 4 Zadanie D 5 Zadanie E Postanawiamy, że E jest teraz najważniejszym zadaniem 1 Zadanie E 2 Zadanie A 3 Zadanie B 4 Zadanie C 5 Zadanie D Muszę zaktualizować wszystkie 5 zadań, aby nadać im nowy priorytet. Jeśli zadanie B stanie się wtedy ważniejsze niż A, miałbym 1 Zadanie E 2 Zadanie B 3 Zadanie A 4 Zadanie C 5 Zadanie D Muszę zaktualizować tylko zadanie B i A. Jakie byłyby sposoby na zorganizowanie tego w DB? Wyobrażam sobie, że miałbyś inne projekty przechowywane w tej samej tabeli, które miałyby tam własną wagę. Czy lepiej byłoby wskazać zadanie, które ma miejsce po nim (trochę jak lista linków). To naprawdę tylko zrzut mózgu. Zastanawiałem się tylko, jak zaimplementować coś takiego.


title: Jak rozwijać niestandardowe funkcje na Ejabberdzie?

text: Tworzę aplikację czatu w czasie rzeczywistym. Po chwili szukania, znalazłem Ejabberd i Erlang to dobra opcja. Pytanie brzmi, że Ejabberd nie zapewnia wszystkich potrzebnych mi funkcji. Potrzebuję pewnych niestandardowych funkcji, takich jak dopasowywanie na podstawie lokalizacji i anonimowe logowanie. Jak więc tworzyć niestandardowe funkcje na Ejabberd? napisać do niego moduły? lub opracować inną samodzielną aplikację serwerową (internetową lub inną aplikację serwerową) do interakcji z nią? Dziękuję!


title: jakie są korzyści z zamknięcia, przede wszystkim dla PHP?

text: Rozpoczynam proces przenoszenia kodu do PHP 5.3, a jedną z najbardziej reklamowanych funkcji PHP 5.3 jest możliwość używania domknięć. Moje rozumienie domknięć jest takie, że pozwalają na anonimowe funkcje, mogą być przypisane do nazw zmiennych i mają interesujące możliwości określania zakresu. Z mojego punktu widzenia jedyną pozorną korzyścią w rzeczywistych aplikacjach jest zmniejszenie bałaganu w przestrzeni nazw, ponieważ domknięcia są anonimowe. Czy się w tym mylę? Czy powinienem próbować umieszczać zamknięcia wszędzie tam, gdzie koduję? **EDYTUJ**: Przeczytałem już ten post na temat zamknięć JavaScript.


title: Czy Twój zespół dobrze funkcjonuje bez przestrzegania metodologii pracy (takiej jak scrum)?

text: Przez ostatnie 9 lat pracowałem w wielu małych zespołach. Każdy miał oczywiste dobre praktyki, takie jak krótkie spotkania, kontrola wersji, oprogramowanie do ciągłej integracji, śledzenie problemów i tak dalej. W ciągu tych 9 lat nigdy nie słyszałem wiele o metodologiach rozwoju; na przykład nigdy nie było „robimy scrum” lub „zróbmy zwinnie” lub coś więcej niż przelotne odwołanie. Wszystkie zespoły wydawały się funkcjonować dobrze, bez zbytniego przechodzenia przez proces, po prostu działaliśmy swobodnie i po prostu naturalnie działaliśmy dobrze. Czy ktoś inny robił postępy przez długi czas bez napotkania scrum/agile/etc? Jedyny kontakt, jaki miałem z nimi, to strony takie jak ta. Czytam pytania typu http://programmers.stackexchange.com/questions/16905/sprint- meeting-what-to-talk-about ... i cała ta rozmowa wydaje się opisywać prawie robotów, jak ludzie, którzy stosują metodologię maszyny skończonych . Czy to naprawdę (choć przesadzone) tak? Zastanawiam się, czy osoby publikujące w Internecie są po prostu głośnymi zwolennikami „najlepszych praktyk”, z podobnymi poglądami na podręczniki, nie odzwierciedlającymi tak naprawdę tego, jak ludzie pracują… Czy też spotkałem się z niektórymi zespołami tworzącymi swoje procesy w sposób naturalny. Co więcej (jestem w Wielkiej Brytanii, co może być istotne)… Myślę, że jeśli metodologia zostałaby wprowadzona do któregokolwiek z zespołów, nad którymi pracowałem, po prostu odrzuciliby ją jako głupią i niepotrzebną… na. Zgodziłbym się, podążanie za procesami wydaje się nieco nienaturalne. Czy to typowe czy powszechne?


title: Jak mogę zmierzyć mój poziom kompetencji lub zestaw umiejętności w ASP.NET?

text: > Jako programista ASP.NET z ponad 5 letnim doświadczeniem. Lubię mierzyć mój poziom kompetencji > w ASP.NET i SQL Server. Zasadniczo moim celem jest podniesienie poziomu > kompetencji i zestawu umiejętności w ASP.NET; wcześniej muszę wiedzieć, jaki jest > mój poziom, biorąc pod uwagę obecne ASP.NET i technologie pokrewne... Proszę podać kilka wskazówek... * Czy jest jakiś quiz lub egzamin mierzący zestaw umiejętności, które doświadczenie i technologia konta? * Jak mierzysz umiejętności lub kompetencje swoje lub swoich młodszych programistów? Uwaga: To pytanie zostało pierwotnie zadane w SO, przesyłam tutaj ponownie, aby uzyskać więcej informacji.


title: Co to znaczy, że praca wymaga uzyskania tytułu licencjata z informatyki lub pokrewnej dziedziny?

text: Co konkretnie należy rozumieć przez „pole pokrewne”? Jestem w trakcie realizacji B.A.S. infrastruktury IT. z U of M (Twin Cities), ale bawią się pomysłem zrobienia CSCI B.S. Nie chcę być hardkorowym programistą, ale czy posiadanie stopnia CSCI, zamiast ITI, otworzy więcej drzwi do każdego zawodu w świecie IT, na który w końcu się skupię?


title: Czy posiadasz przełącznik, który włącza lub wyłącza szyderczy zapach kodu?

text: Mam metodę, która wygląda tak: def foobar(mock=False, **kwargs): # ... snipped `foobar` faktycznie wykonuje kilka wywołań do Amazon S3 i zwraca złożony wynik. Aby było to testowalne, wprowadziłem parametr `mock`, aby wyłączyć wykonywanie połączeń sieciowych na żywo. Wydaje mi się, że to zapach kodu, ale testowalność jest również bardzo ważna. Co jeszcze mogę zrobić, jeśli chcę zrezygnować z parametru?


title: Używanie klas statycznych jako przestrzeni nazw

text: Widziałem innych programistów używających klas statycznych jako przestrzeni nazw public static class CategoryA { public class Item1 { public void DoCos() { } } public class Item2 { public void DoCos() { } } } public static class CategoryB { public class Item3 { public void DoCos() { } } public class Item4 { public void DoCos() { } } } Aby utworzyć instancję klas wewnętrznych, będzie wyglądać następująco: CategoryA.Item1 item = new CategoryA.Item1(); Uzasadnieniem jest to, że przestrzenie nazw można ukryć za pomocą słowa kluczowego „using”. Jednak używając klas statycznych, należy określić nazwy klas warstwy zewnętrznej, co skutecznie zachowuje przestrzenie nazw. Microsoft odradza to w wytycznych. Osobiście uważam, że wpływa to na czytelność. Jakie są Twoje myśli?


title: Dlaczego „Gra w życie” Conwaya jest używana do rekolekcji z kodowaniem?

text: Code Retreat to całodniowe wydarzenie szkoleniowe, które koncentruje się na podstawach tworzenia oprogramowania. Zbliża się „globalny” dzień odosobnienia na temat kodu, którego nie mogę się doczekać. To powiedziawszy, byłem już na jednym z nich i muszę powiedzieć, że był ogromny chaos… co jest w porządku. Jedyną rzeczą, której wciąż nie rozumiem, jest to, dlaczego „Game of Life” jest dobrym problemem dla TDD i jak wygląda dobre i złe TDD. Zdaj sobie sprawę, że to dość otwarte pytanie, więc nie wahaj się komentować.


title: Który z tych algorytmów jest najlepszy dla mojego celu?

text: Stworzyłem program, który ogranicza mysz do określonego regionu na podstawie czarno-białej mapy bitowej. Program jest w 100% funkcjonalny, ale wykorzystuje niedokładny, choć szybki algorytm zmiany położenia myszy, gdy wychodzi ona poza obszar. Obecnie, gdy mysz wyjdzie poza obszar, dzieje się to w następujący sposób: 1. Narysowana jest linia między predefiniowanym statycznym punktem wewnątrz regionu a nową pozycją myszy. 2. Znajduje się punkt, w którym linia przecina krawędź dozwolonego obszaru. 3. Mysz zostanie przesunięta do tego punktu. To działa, ale działa _idealnie_ tylko w przypadku idealnego okręgu z wcześniej zdefiniowanym punktem ustawionym dokładnie w środku. Niestety tak się nigdy nie stanie. Aplikacja będzie używana z różnorodnymi prostokątami i nieregularnymi, amorficznymi kształtami. W przypadku takich kształtów punkt, w którym narysowana linia przecina krawędź, zwykle nie będzie najbliższym punktem na kształcie myszy. Muszę utworzyć nowy algorytm, który znajdzie _najbliższy_ punkt nowej pozycji myszy na krawędzi dozwolonego obszaru. Mam kilka pomysłów na ten temat, ale nie jestem pewien ich słuszności, ponieważ mogą mieć zbyt wiele kosztów ogólnych. Chociaż nie pytam o kod, może pomóc wiedzieć, że używam Objective C / Cocoa, rozwijającego się dla OS X, ponieważ czuję, że używany język może wpłynąć na wydajność potencjalnych metod. Moje pomysły są następujące: * Użycie odrobiny trygonometrii do rzutowania linii zadziałałoby, ale wymagałoby to pewnego rodzaju intensywnego algorytmu, aby przetestować każdy punkt na każdej linii, dopóki nie znajdzie krawędzi regionu… Wydaje się to zbyt wymagające, ponieważ tam może być około 200 linii, z których każda musiałaby mieć aż 200 pikseli sprawdzanych pod kątem czerni/bieli.... * Używając czegoś w rodzaju algorytmu wyznaczania ścieżek A*, aby znaleźć najkrótszą ścieżkę do czarnego piksela; jednak A* wydaje się zasobożerny, chociaż prawdopodobnie mógłbym ograniczyć go tylko do sprawdzania z grubsza w jednym kierunku. Wygląda też na to, że zajmie to więcej czasu i wysiłku niż mam dostęp do tej małej części znacznie większego projektu, nad którym pracuję, popraw mnie, jeśli się mylę i nie będzie to znacząca ilość kodu (>100 linie lub w pobliżu). * Mapowanie granicy regionu, zanim aplikacja zacznie uruchamiać pętlę kranu zdarzenia. Myślę, że mógłbym to osiągnąć, używając mojego obecnego algorytmu opartego na linii, aby znaleźć punkt krawędzi, a następnie zainicjować algorytm, który sprawdza wszystkie 8 pikseli wokół tego piksela, znajduje następny piksel graniczny w jednym kierunku i kontynuuje to, aż nadejdzie z powrotem do piksela początkowego. Mogłem następnie przechowywać te dane w tablicy, która miałaby być używana przez cały czas trwania programu, a metoda zmiany pozycji myszy sprawdzała tablicę pod kątem najbliższego piksela na granicy do pozycji docelowej myszy. Ta ostatnia metoda prawdopodobnie wykonałaby dość szybko początkowe mapowanie granic. (Musiałby mapować tylko od 2 000 do 8 000 pikseli, co oznacza, że sprawdzono od 8 000 do 64 000, a mógłbym nawet na stałe przechowywać dane, aby przyspieszyć uruchamianie.) Jednak nie jestem pewien, ile czasu zajmie skanowanie ta tablica dla najkrótszej odległości dla _każdego zdarzenia ruchu myszy_... Przypuszczam, że może istnieć skrót ograniczający liczbę elementów w tablicy, które będą sprawdzane, do liczby zmiennej zaczynającej się od punktu przecięcia na linii (z mojego oryginalny algorytm) i podnieś/obniż tę liczbę, aby poeksperymentować z kompromisem narzut/dokładność. Daj mi znać, jeśli nadmiernie się nad tym zastanawiam i istnieje prostszy sposób, który zadziała dobrze, lub która z tych metod byłaby w stanie wykonać około 30 razy na sekundę, aby utrzymać płynność ruchu myszy, **lub** jeśli masz lepszą/szybszą metodę. Poniżej zamieściłem odpowiednie części mojego kodu w celach informacyjnych i podałem przykład tego, jak może wyglądać ten obszar. (Sprawdzam wartość koloru względem załadowanej mapy bitowej, która jest czarno-biała.) // // Ta część kodu jest uruchamiana za każdym razem, gdy poruszamy się myszą. // punkt CGPoint = CGEventGetLocation(zdarzenie); pływak tX = punkt.x; float tY = punkt.y; if( is_in_area(tX,tY, mouse_mask)){ // cel jest w porządku. obszar, nie rób nic }inny{ Cel CGPoint; //punkt wewnątrz zastrzeżonego obszaru: float iX = 600; // wewnątrz x float iY = 500; // wewnątrz y // delta do punktu środkowego pomiędzy iX,iY i tX,tY float dX; pływak dY; dokładność pływaka = 0,5; //dokładność pętli aż do osiągnięcia do { dX = (tX-iX)/2; dY = (tY-iY)/2; if(jest_w_obszarze((tX-dX),(tY-dY),maska_myszy)){ iX += dX; iY += dY; } inny { tX -= dX; tY -= dY; } } while (abs(dX)>dokładność || abs(dY)>dokładność); cel = CGPointMake(roundf(tX), roundf(tY)); CGDisplayMoveCursorToPoint(CGMainDisplayID(),cel); } Oto "is_in_area(int x, int y)" : bool is_in_area(NSInteger x, NSInteger y, NSBitmapImageRep *mouse_mask){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSUInteger piksel[4]; [mouse_mask getPixel:pixel atX:x y:y]; if(pixel[0]!= 0){ [uwolnienie puli]; zwróć fałsz; } [zwolnienie puli]; zwróć prawdę; } ![mapa bitowa dla „dozwolonego obszaru” \(dozwolony obszar jest czarny\)](http://i.stack.imgur.com/MHaNC.png)


title: CQRS bez używania innych wzorców

text: Chciałbym wytłumaczyć CQRS mojemu zespołowi programistów. Po prostu nie potrafię wytłumaczyć tego w najprostszy sposób, aby mogli szybko zaimplementować wzorzec bez żadnych innych frameworków. Przeczytałem wiele zasobów, w tym wideo i artykuły, ale nie mogę znaleźć sposobu zaimplementowania CQRS bez korzystania z innych wzorców, takich jak magistrala usług, wzorzec pozyskiwania zdarzeń, projektowanie oparte na domenie. Znam cel tych wzorców, ale w pierwszym kroku nie chcę, aby myśleli, że CQRS i te wzorce muszą być ze sobą powiązane. Moim pierwszym pomysłem jest stwierdzenie, że CQRS polega na oddzieleniu części odczytu i zapisu. Część do odczytu składa się tylko z projektu interfejsu użytkownika i projektu DAL. Następnie część zapisu składa się z typowej architektury wielowarstwowej: UI/BLL/DAL. Czy CQRS mówi, że musimy mieć również dwa magazyny danych? A co z pojęciem poleceń, które ujawniają intencje użytkownika, czy jest to również część CQRS lub DDD? Zasadniczo, jak zaimplementować CQRS bez używania innych wzorców. Przyznaję, że nie jest to dla mnie jasne, ponieważ w moim osobistym projekcie pracowałem z NCQRS/DDD/Event Sourcing/ServiceBus.


title: Czy OOP staje się łatwiejsze czy trudniejsze?

text: Kiedy pojęcia programowania zorientowanego obiektowo zostały wprowadzone do programistów lata temu, wyglądało to interesująco, a programowanie było czystsze. OOP wyglądało jak ta giełda = new Stock(); stock.addItem(pozycja); stock.removeItem(pozycja); Łatwiej było to zrozumieć dzięki samoopisowej nazwie. Ale teraz OOP, z wzorcami takimi jak obiekty transferu danych (lub obiekty wartości), repozytorium, wstrzykiwanie zależności itp., stał się bardziej złożony. Aby osiągnąć powyższe, może być konieczne utworzenie kilku klas (np. abstrakcyjna, fabryczna, DAO itp.) i zaimplementowanie kilku interfejsów Uwaga: Nie sprzeciwiam się najlepszym praktykom, które ułatwiają współpracę, testowanie i integrację


title: Interfejs API plików HTML5 lub most Java umożliwiający dostęp do lokalnych plików?

text: Mam dostęp do plików na użytkowniku oprogramowania i nie wiem, czy lepiej korzystać z pełnej aplikacji JS z regułami HTML5 File Api, czy używać Javy i komunikować się z nią?


title: Czego tak naprawdę potrzebuje programista, aby zostać profesjonalistą?

text: Istnieje ogromna liczba programistów, zwłaszcza juniorów, którzy potrzebują dobrej pomocy w stawaniu się profesjonalistami. Słyszałem wiele o "książkach, które każdy programista powinien przeczytać", itp. Mam dwuletnie doświadczenie w programowaniu, dobrze czuję się w C++, ale obecnie mam dziwne wrażenie, że nie wiem nic o programowaniu. Powinienem przeczytać Algorytmy Cormena, Code Complete McConnella itp., ale nie znam dokładnych kroków wymaganych, aby zostać profesjonalistą. Co powinniśmy zrobić? Czego powinniśmy się nauczyć? System operacyjny? Organizacja komputerowa? Algorytmy? C++ dogłębnie? Ile czasu musimy poświęcić, aby stać się tym, czego chcemy?


title: Dziedziczenie: Czy kod z nadklasy jest wirtualnie *kopiowany* do podklasy, czy też *do którego odwołuje się podklasa*?

text: Klasa `Sub` jest podklasą klasy `Sup`. Co to właściwie oznacza? Innymi słowy, jakie jest praktyczne znaczenie „dziedziczenia”? **Opcja 1:** Kod z Sup jest praktycznie _kopiowany_ do Sub. (jak w 'kopiuj-wklej', ale bez skopiowanego kodu _wizualnie_ widocznego w podklasie). Przykład: `methodA()` jest metodą oryginalnie w Sup. Sub rozszerza Sup, więc `metodaA()` jest (wirtualnie) kopiowana i wklejana do Sub. Teraz Sub ma metodę o nazwie `methodA()`. **Jest identyczna z `metodąA()` Supa w każdym wierszu kodu, ale w całości należy do Sub - i nie zależy od Sup ani w żaden sposób jest z nią powiązana.** **Opcja 2:** kod z Sup nie jest w rzeczywistości _kopiowany_ do Sub. To wciąż tylko w superklasie. Ale dostęp do tego kodu można uzyskać za pośrednictwem podklasy i może być używany przez podklasę. Przykład: `methodA()` jest metodą w Sup. Sub rozszerza Sup, więc teraz poprzez Sub można uzyskać dostęp do `methodA()`, jak na przykład: `subInstance.methodA()`. Ale to faktycznie wywoła metodę `methodA()` w superklasie. Co oznacza, że **methodA() będzie działać w kontekście nadklasy, nawet jeśli została wywołana przez podklasę.** **Pytanie: Która z dwóch opcji tak naprawdę działa? Jeśli żaden z nich nie jest, proszę opisać, jak te rzeczy faktycznie działają.**