title: Jak niezależny jest Clojure od Javy?

text: Jestem całkiem nowy w świecie Clojure. Doceniam fakt, że ma się łatwy dostęp do wszystkich bibliotek Java za pośrednictwem funkcji interop Clojure, ale zastanawiałem się, jak bardzo Clojure stoi na własnych nogach. Oczywiście istnieją platformy, takie jak Android, gdzie zawsze wymagana będzie interoperacyjność z Javą, ponieważ podstawowe biblioteki są napisane lub udostępnione w Javie. Co więcej, ponieważ łańcuchy Clojure są łańcuchami Javy, oczekuję, że biblioteki do manipulacji łańcuchami będą opakowaniem metod Javy String. Ale w przypadku innych zadań nie widzę powodu, dla którego nie można by rozwijać natywnych bibliotek Clojure. Pomyśl o HTTP, manipulacji datami, parsowaniu XML, szablonowaniu, serializacji i deserializacji JSON, OAuth, bibliotekach matematycznych i tak dalej. Więc moje pytanie brzmi: jak daleko Clojure uniezależniło się od ekosystemu Javy? Czy posiada własne biblioteki idiomatyczne dla większości tych i innych zadań?


title: Czy możemy żyć bez konstruktorów?

text: Powiedzmy, że z jakiegoś powodu wszystkie obiekty są tworzone w ten sposób $obj = CLASS::getInstance(). Następnie wstrzykujemy zależności za pomocą seterów i wykonujemy inicjalizację początkową za pomocą $obj->initInstance(); Czy są jakieś realne problemy lub sytuacje, których nie da się rozwiązać, jeśli w ogóle nie użyjemy konstruktorów? PS. powodem tworzenia obiektu w ten sposób jest to, że możemy podmienić klasę wewnątrz getInstance() zgodnie z pewnymi regułami. Pracuję w PHP, jeśli o to chodzi


title: Czy istnieje określony termin dla metody akcesora, która zwraca wartość logiczną?

text: Przypominam sobie, że istnieje określony termin dla metody akcesora, która zwraca wartość logiczną, ale mi to umyka. Na przykład: typowe metody, takie jak: class Przykład { bool isDirty(); bool maDzieci(); bool isValid(SomeType obj); }; Zadowolę się również takim terminem, jaki odnosi się do funkcji nie-członkowskich.


title: Usuwanie „oszustwa związanego z testowaniem integracji” — Zrozumienie testów współpracy i umów

text: Ostatnio oglądałem Testy integracyjne to oszustwo J. B. Rainsbergera i teraz szukam więcej materiałów na ten temat. Muszę przyznać, że jestem zszokowany tym, jak bardzo robimy źle (np. testowanie integracyjne, kiedy powinniśmy testować jednostkowo), zaintrygowany koncepcjami opisanymi przez Rainsbergera, ale także zdezorientowany, jak je zastosować. Chciałbym mieć więcej opisanych **testów współpracy i testów kontraktowych**, ale nie wiem od czego zacząć. Jedyne, co utkwiło mi w głowie, to 4 pytania, które muszą zadać testy: **Strona A:** Czy zadaję właściwe pytanie? Czy poradzę sobie z odpowiedzią? **Strona B:** Czy mogę odpowiedzieć na pytanie? Czy odpowiadam poprawnie? Ale jak zastosować to do jakiejś metody losowej w moim stosie aplikacji? Czy istnieje książka, samouczek lub przykład, który bierze przykład ze świata rzeczywistego i stosuje te idee izolowanych mikrotestów? Idealnie, w przykładzie użyto **Java, Spring + PowerMock / Mockito / EasyMoock** Każda literatura, która zajmuje się ogólnie tymi pojęciami i pomaga mi lepiej je zrozumieć, byłaby mile widziana. Również jeśli istnieją fora, na których mogę zadać bardziej szczegółowe pytania dotyczące prawidłowego testowania jednostkowego, a może nawet refaktoryzacja istniejącego kodu i zamieszczanie przykładów byłoby miłe. Dziękuję! * * * **Edycja - kilka dodatkowych przemyśleń:** Czy istnieje ogólna zasada, kiedy używać makiety, a kiedy kodu pośredniczącego, aby odizolować testowaną klasę od współpracowników? Czy można to zastosować do 4 pytań? Najlepszym frameworkiem do mockingu wydaje się być PowerMock, który pozwala mi dokładnie zdefiniować dla każdego testu, jaką klasę chcę mieć mockowaną i co powinna zwrócić, czy jest coś lepszego niż zadałeś powyższe pytania? Czy istnieją dobre tutoriale, które wykorzystują PowerMock do zastosowania niektórych lub wszystkich podanych zasad do jakiejś części stosu aplikacji w świecie rzeczywistym, powiedzmy DAO lub GUI? * * * **Edytuj 2 - przykład** Tylko kilka przykładów metod, które chcę przetestować i moje przemyślenia. Mam serwis internetowy, który zapisuje zamówienia. Na tym etapie nie martwimy się zbytnio o najlepsze zabezpieczenia, więc aby je mieć, usługa pobierze również nazwę użytkownika i hasło, aby uwierzytelnić żądanie zapisania. Po uwierzytelnieniu, „OrderManager” jest wywoływany, aby zapisać „Zamówienie”. Wewnętrznie menedżer decyduje, czy jest to nowe zamówienie, więc należy je utworzyć, czy istniejące, które należy zaktualizować. (To nie powinno mieć znaczenia dla WebSerice, prawda?) @WebService public class OrderService { @Inject private AuthenticationManager authenticationManager; @Inject private OrderManager orderManager; public void save(String username, String hasło, Order Order) { authenticationManager.authenticate(username, password); spróbuj { orderManager.save(order); } wreszcie { authenticationManager.logout(); } } Teraz zastanawiam się: Co dokładnie testuję tutaj? Myślę, że powinny być testy na sukces i porażkę uwierzytelniania oraz na sukces i porażkę ratowania kolejności. Ale jak podzielić to na 4 pytania? Moja klasa w ramach testu to oczywiście `OrderService` (OS), a współpracownikami są `OrderManager` (OM) i `AuthenticationManager`. (AM) Więc mam następujące testy, proszę mnie tutaj poprawić, tylko głośno myślę: **OS <\--> OM** * OS prosi OM o zapisanie zamówienia (jakie różne parametry testuję tutaj `null` i `Order`? Czy ma to znaczenie, czy `Order` jest poprawnie zainicjowany?) * OM odpowiada na wywołanie save wywołując jakąś inną wewnętrzną metodę, ja testuję czy ta metoda zostanie wywołana?! * System operacyjny nie powinien zawieść, jeśli OM nie zawiedzie * System operacyjny powinien zawieść, jeśli zawiedzie OM ... Co jeszcze? A potem oczywiście **OS<\-->AM**: *OS prosi AM o uwierzytelnienie - chyba testuję jak AM reaguje na różne rodzaje nazwy użytkownika/hasła? * ... Teraz mój **pierwszy wniosek** : Jeśli chodzi o WebSerice mogę przetestować tylko 2 z 4 pytań: Strona A. Teraz muszę spojrzeć na `OrderManager` i `AuthenticationManager` i sprawdzić, czy mogą odpowiedzieć na pytania strony B. Prawda? Po drugie - dostęp do bazy danych: Utrwalanie Uwierzytelniania i Zamówienia oczywiście wymaga pewnych danych w bazie danych w środowisku produkcyjnym. Jednak w przypadku moich testów jednostkowych nie będę ich potrzebować, więc po prostu wyśmieję wywołania, aby zwrócić pożądany wynik, prawda? Ale jak mam z tego kpić? Potrzebuję `AuthenticationManager.authenticate`, aby prawie nic nie robił, ponieważ w przypadku nieudanego uwierzytelnienia wyrzuci `Wyjątek`, w przeciwnym razie zwraca typ `void`. Jak mogę powiedzieć mojemu `OrderService.save()`, aby używał mojego wykpiwanego `AuthenticationManager.authenticate()`? I jak ustawić `AuthenticationManager` tak, aby nic nie robił lub zgłaszał wyjątek? Czy mogę powiedzieć Springowi, aby **wstrzyknął** wykpiwany `AuthenticationManager`, który nic nie zrobi / zgłosi `Wyjątek` do mojego testowanego `OrderService`?


title: Jak skutecznie korzystać z usług sieci Web w środowisku przedsiębiorstwa, jeśli nie można korzystać z transakcji?

text: Miejsce, w którym pracuję, próbuje ustalić pewne podstawowe zasady, a debata, którą teraz toczymy, dotyczy lokalnych bibliotek a usług internetowych dotyczących ponownego wykorzystania kodu. Usługi internetowe wydają się być popularnym wyborem w większości firm i właśnie do tego skłania się większość programistów. Po prostu nie widzę, jak można efektywnie wykorzystać usługi sieciowe do jakiejkolwiek poważnej pracy. Jak mogę bezpiecznie wykonać wiele wywołań usług, jeśli nie mogę użyć transakcji? Załóżmy, że mam zadanie crona, które pobiera klientów z naszej bazy danych, którzy spełniają określony warunek, o którym muszą zostać powiadomieni. Otrzymują faks, e-mail i tworzony jest bilet w celu wewnętrznego śledzenia problemu. To są 3 różne wywołania serwisowe, które miałyby miejsce dla każdego klienta w pętli for. Jeśli gdzieś w tym miejscu wystąpi błąd, możliwe jest, że na przykład do klienta zostanie wysłany faks i e-mail, ale bilet nie zostanie utworzony. Albo gorzej, to zadanie cron może zawierać błąd, który powoduje, że za każdym razem kończy się niepowodzeniem w tym samym momencie i wielokrotnie wysyła e-maile do tego samego klienta. Gdyby wszystkie biblioteki były lokalne, wszystko można by po prostu owinąć w transakcję i nic z tego by się nie stało. Ale w tym przykładzie używamy usług internetowych. Zauważ, że metody e-mail i faks faktycznie wstawiają dane do tabel kolejek opartych na bazie danych, które z kolei są obsługiwane przez oddzielny proces zadania cron. Tak więc połączenia z usługami „wyślij e-mail” i „wyślij faks” mogą zostać przerwane bez skutków ubocznych, jeśli zajdzie taka potrzeba. Opcją jest umieszczenie tego całego fragmentu kodu w samej usłudze sieciowej, aby sama usługa internetowa wywoływała metody tworzenia wiadomości e-mail, faksu i biletu w transakcji. Ale potem tworzymy metodę usługi sieciowej tylko na użytek transakcji; nie ma uzasadnionego powodu, dla którego kiedykolwiek musielibyśmy wywoływać tę metodę z dowolnego miejsca poza tym jednym skryptem cron. Jak ogólnie poradziłbyś sobie z tą metodą?


title: Jak używać PowerMock/Mokito/EasyMock, aby użyć mocowanego obiektu do wstrzykiwania zależności?

text: Mam metodę `AuthenticationManager.authenticate(username,password)`, która jest wywoływana w testowanej metodzie someMethod SomeService. AuthenticationManager jest wstrzykiwany do SomeService: @Component public class SomeService { @Inject private AuthenticationManager authenticationManager; public void someMethod() { authenticationManager.authenticate(nazwa użytkownika, hasło); // zrób więcej rzeczy, które chcę przetestować } } Teraz do testu jednostkowego potrzebuję metody uwierzytelnienia, aby po prostu udawać, że działa poprawnie, w moim przypadku nic nie rób, więc mogę sprawdzić, czy sama metoda wykonuje oczekiwaną pracę (uwierzytelnianie to testowane gdzie indziej zgodnie z zasadami testowania jednostkowego, jednak uwierzytelnianie musi być wywołane wewnątrz tej metody) Więc myślę, że potrzebuję `SomeService`, aby użyć wykpiwanego `AuthenticationManager`, który po prostu zwróci i nie zrobi nic więcej, gdy `authenticate()` jest wywoływana przez `someMethod()`. Jak to zrobić z PowerMock (lub EasyMock / Mockito, które są częścią PowerMock)? A może istnieje inny sposób, aby powiedzieć Springowi, aby używał Mocka zamiast prawdziwej oferty, podczas wstrzykiwania `AuthenticationManager` do `SomeService`? A może mój projekt jest zły? Dziękuję! * * * **Edycja - znalazłem rozwiązanie, chciałbym usłyszeć komentarze** Znalazłem więc fajny sposób na wstrzyknięcie makiety bez konieczności używania settera lub poziomu pakietu: @RunWith(PowerMockRunner.class) public class TestOrderService { @ Mock private AuthenticationManager authenticationManager; @InjectMocks prywatny OrderService orderService = nowy OrderService(); @Before public void setup() { MockitoAnnotations.initMocks(this); Mockito.doNothing().when(this.authenticationManager).authenticate(null, null); } @Test public void testOrderService() { orderService.save(null, null, null); } } z OrderService w ten sposób: public void save(String username, Order order) { authenticationManager.authenticate(username, password); // zrób coś z zamówieniem... } Teraz metoda save wywoła uwierzytelnienie na makiecie, a makieta nic nie robi, co pozwala mi przetestować rzeczywistą pracę w mojej metodzie usługi (która w rzeczywistości wywołuje metodę menedżera, ale to nie było punkt ;) )


title: n-warstwowy projekt architektury, naprawdę warty wysiłku?

text: Budowałem aplikację w .Net przez prawie rok (prawie sam), podjąłem decyzję o zbudowaniu jej z 3-warstwowym projektem. Niedawno po zakończeniu projektu przeanalizowałem, czy wysiłek związany z tworzeniem tej aplikacji z myślą o projektowaniu warstw rzeczywiście rekompensuje „korzyści” uzyskane z realizacji takiego projektu. Przeniesienie aplikacji desktopowej do sieci bez większego przepisywania kodu i prawie niezależne od bazy danych; Nie widzę dalszych korzyści z tego płynących. Jakieś doświadczenia i myśli?


title: Wyszukaj obiekt w pętli lub zapytaniu? Kto ma lepszą wydajność?

text: Mam DB, który przechowuje niektóre złożone obiekty mojej aplikacji. Kiedy moja aplikacja się uruchamia, ładuję obiekty na listę i przechowuję je w pamięci RAM. Ale czasami chciałbym poszukać obiektów spełniających warunki (filtrowanie), nawet warunki są złożone. Zawsze pisałem pętlę for (czasem bardzo złożoną) dla tej rzeczy, która działa na tych obiektach. Ale ostatnio słyszałem, że zapytania DB i SQL mają wiele mechanizmów optymalizacyjnych (zależnych od firmy DB) i działają szybciej niż zwykłe wyszukiwanie. Jeśli dobrze rozumiem, lepiej napisać zapytanie SQL, które przeszukuje te obiekty i zwraca identyfikatory obiektów. A potem przez te identyfikatory, zdobądź odpowiednie obiekty. Wygląda jak najlepsze rozwiązanie do wyszukiwania obiektów. Ale mam trochę wątpliwości co do tego pomysłu, bo cały czas uczyliśmy się, że DB jest wolny i lepiej załadować obiekty do RAMu i nad nimi popracować... Mam więc dwa pytania: 1) Czy zapytania faktycznie szybsze niż zwykłe wyszukiwanie (w przypadku złożonych wyszukiwań)? 2) Może to prawda dla wielu wielu obiektów (tysiące), ale czy jest to prawdziwe dla kilku obiektów (dziesiątek)?


title: Jakiej architektury użyć do wywołań AJAX?

text: Pracuję nad stroną z PHP jako backendem. Są rzeczy z front-endu, które chciałbym zrealizować za pomocą wywołań AJAX. Którą z tych metod powinienem użyć do ich zaprojektowania i dlaczego? * Wywołaj różne pliki PHP do różnych zastosowań ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/3EURr.jpg) * Wywołaj ten sam plik PHP, z instrukcjami, co robić ![wprowadź opis obrazu tutaj](http://i.stack.imgur.com/KUIKq.jpg) * RESTful API * Jakiś inny lepszy sposób?


title: Potencjalne problemy z przeglądami kodu

text: dla jasności **przegląd kodu** = spotkanie zespołu i przegląd/udostępnienie kodu Jakie są potencjalnie negatywne aspekty procesu przeglądu kodu w środowisku programistycznym? Co mi przychodzi na myśl * Silna krytyka może prowadzić do negatywnych interakcji i uczucia wrogości między kolegami. * Lenistwo w czytaniu i zrozumieniu nowego kodu może prowadzić do apatycznych i bardzo ogólnych informacji zwrotnych. * Do zorganizowania i przeprowadzenia procesu przeglądu potrzebna jest znaczna inwestycja czasowa. Musi być jednak coś więcej. Jakie negatywne rzeczy zauważyliście lub doświadczyliście?


title: Chcę sprzedać prosty kalkulator. Jaki jest najprostszy sposób na zaimplementowanie kluczy rejestracyjnych?

text: Chcę sprzedać prosty kalkulator, który pomoże w określonej branży. Ten kalkulator byłby zainstalowany na komputerze (w przeciwieństwie do usługi sieciowej). Jak zaimplementowany jest mechanizm klucza rejestracyjnego?


title: Czy istnieje wzorzec projektowy opisujący oddzielenie Formularza od Modelu?

text: Pracuję nad aplikacją sieci web zaimplementowaną w języku C#, która jest zgodna z konwencjami MVC. Ta aplikacja zawiera stronę, która pozwala mi tworzyć lub aktualizować Wingding. Widok przekazuje kompletny model Wingding z powrotem do kontrolera, abym mógł go utworzyć lub zaktualizować. Problem polega na tym, że strona ma również pole wyboru, które pozwala mi tworzyć identyczne Wingdings dla _wszystkich_ użytkowników. Bieżący kod dodaje zmienną do _Winding Model_, aby przechwycić te dane, dzięki czemu można je przekazać z powrotem z widoku. Wydaje mi się oczywiste, że strona powinna mieć obiekt _Wingding Page Form_, który jest przekazywany z powrotem z widoku do kontrolera, zamiast dodawać dodatkowe zmienne do Modelu, które nie zostaną zapisane w DB. Wiem, że liczy się to jako oddzielenie obaw, ale czy istnieje bardziej szczegółowy wzorzec projektowy, który opisuje oddzielenie elementu From od modelu?


title: Zarządzanie ścieżkami zasobów w kodzie źródłowym

text: Podejrzewam, że jest to coś, z czym wielu z was miało do czynienia, i jestem pewien, że są artykuły, jak to zrobić, ale wydaje mi się, że nie mogę ich znaleźć. Mój problem polega na tym, że moje różne klasy stałe w Javie (czytaj: klasy zawierające listy wartości stałych statycznych) są zbyt liczne i zbyt duże, a niektóre z nich mają irytujące, złożone inicjatory statyczne. Mamy klasę ścieżek do plików, klasę nazw plików, klasę stałych, klasę stringów, klasę kolorów (dla komponentów swing) i mnóstwo css dla komponentów JavaFX... to trwa i trwa. CSS jest do opanowania, reszta szybko przestaje być taka. posiadanie klas takich jak ta public class Stałe { public static final String coś = "Coś"; public static final Ścieżka someResourcePath = staticMethodCall(RootString, dirTraversal); public static final Image spinner = iconFindingStaticMethod(dirTraversal) //i tak w kółko przez setki (na szczęście jeszcze nie tysiące) wierszy //a potem często mamy statyczny{ //kod, który określa nasze środowisko i odpowiednio zmienia niektóre ścieżki // czasami prosimy ładowarkę klas, aby znalazła dla nas coś //nic zbyt strasznego, ale statyczne inicjatory nigdy nie są przyjazne. } } jest dobry z jednego bardzo ważnego powodu: każdy programista java wie dokładnie, co ta klasa robi i jak działa. Te ze statycznymi inicjatorami mogą być nieco mylące, ale w większości powyższe to PO-Static-JO. Lubię to. ale wprowadza też szereg problemów. Spróbuję wymienić tutaj te, które znam: 1. najbardziej oczywisty zapach kodu ze wszystkich: te klasy mnożą się i wszystkie są irytująco duże. Mamy jeden dla rozszerzeń plików, który zawiera kilkadziesiąt wpisów, w tym takie rzeczy jak `public static final String XMLFileExtension = "xml"`. To może być trochę za dużo, ale nie jestem skłonny obwiniać dewelopera, który to napisał. Nie byłoby trudno zastąpić odwołania do tego wartością ciągu, ale chciałbym zachęcić do tego rodzaju kodu, więc czułbym się głupio robiąc to. Ale te klasy stają się duże i denerwujące. 2. użycie stałych statycznych nie jest testowalne. Samo w sobie nie jest to zbyt częstym problemem, ponieważ wartości w tych klasach powinny być proste, ale zamienia się w problem, gdy robisz coś takiego jak `Constants.someFilePath.exists() ? a() : b()` (ponieważ _nie ma sposobu na przechwycenie tego, co istnieje() call_ , z dowolnego środowiska zapytamy rzeczywisty system plików, czy ta ścieżka istnieje, co jest problemem podczas testowania). na pierwszy rzut oka, więc naprawdę chciałbym wprowadzić te wartości jak wszystko inne, aby mogły być modyfikowane przez nasze urządzenia za pomocą wartości fake/stub/mock. 3. Wprowadza również problem zależności. W tej chwili mamy kilka modułów IntelliJ & Guice (półoddzielne bazy kodu) w tym samym repozytorium git. Wszystkie używają plików stałych naszego oryginalnego modułu, co oznacza, że wszystkie moduły są zależne od tego modułu, ale ze stałymi statycznymi, jakie jest rozwiązanie? Kopiuj wklej? Kilka rozwiązań, o których myślałem: * moglibyśmy wykorzystać wskazówki i po prostu wstrzyknąć każdą potrzebną stałą z parametrem `@Named`. To rozwiązuje problemy 2 i 3, ale łączy problem 1, ponieważ logika wiązania musiałaby być albo niewiarygodnie długa i zawierać ogromny obszar podwójnej rejestracji, albo stosować dość złożoną kompozycję. * moglibyśmy przejść na trasę auto-generate-source-java-from-XML-or-JSON, której używałem z Androidem i wierzę, że jakiś komponent C#, nad którym krótko pracowałem. Dodatkowy krok w procesie budowania dodaje poziom złożoności w obszarze (tj. Devops), z którym niewielu programistów jest zaznajomionych. Fajnie było mieć tylko dużą tabelę zaćmienia zawierającą wszystkie moje wartości, ale dodatkowa złożoność procesu budowania jest niepożądana. Co więcej, statyczna logika inicjatora nie pasowała do tego modelu. * pozostań na kursie z Javą, może wypakuj pakiet w pobliżu trasy o nazwie "Środowisko" lub "stałe", a następnie nadaj temu pakietowi szereg stałych klas, które mogą dziedziczyć inne klasy ze współdzielonymi polami. Jeśli chodzi o testowalność, natrafiamy na końcowe pola inline w języku Java. Moglibyśmy zastąpić każde pole prostym getterem, ale to sprawia, że i tak już zbyt szczegółowy problem jest bardziej szczegółowy. Naprawdę nie wiem, jak mam się z tym uporać. Od kilku miesięcy powtarzam sobie, żeby to stało się problemem, myśląc, że pojawi się jakieś rozwiązanie. Nie ma i wiem, że mamy dość sękaty wykres zależności, hacki wokół testowania kodu ze ścieżkami do plików i duże klasy stałe. Jakie rozwiązania zastosowaliście do zarządzania tymi plikami? Czy nie jestem za bardzo zaniepokojony i to, co mamy teraz, jest najlepszym rozwiązaniem? Dzięki chłopaki, -Geoff


title: W jaki sposób programista pracujący sam może odpowiedzieć na wzrost zapotrzebowania na serwery?

text: Wyobraź sobie taki scenariusz: stworzyłeś aplikację do gry wieloosobowej na platformę mobilną, taką jak Android. Pomyślnie skonfigurowałeś go z jednym serwerem, zorientowałeś się, jak to zrobić. Działa całkiem dobrze. Ku Twojemu zdziwieniu, gra STARTUJE. Wymagania serwera eksplodują. Musisz skalować, ale nie masz prawie żadnego doświadczenia z uruchamianiem jednego serwera, nie mówiąc już o uruchamianiu wielu serwerów w tandemie. Co robisz? Czy istnieje usługa (w stylu Heroku), która pomoże w takiej sytuacji? Byle co? A może potrzebujesz zatrudnić kogoś z określonym zestawem umiejętności i niezbędnym doświadczeniem?


title: C++ zwraca referencje

text: Patrząc na tworzenie biblioteki GUI dla silnika gry. Generalnie unikam wskazówek, jeśli ich nie potrzebuję, a w moim poniższym przykładzie stwierdzam, że nie i to działa, ale po prostu ciekawe, czy ten projekt jest ogólnie uważany za dobrą praktykę lub czy ktoś ma do niego uwagi. int main() { // wszystkie widżety są pozycjonowane i mają rozmiar zgodny z rozmiarem okna Window wndOptions("wndOptions"); Przycisk cmdExit("cmdExit"); // okno nie jest właścicielem widżetów ani nie tworzy widżetów, więc nie jest odpowiedzialne za usuwanie widżetów wndOptions.AddWidget(&cmdExit); // w ten sposób możesz znaleźć kontrolkę i również ją rzucić. ustaw zmienną jako referencję Button& test = wndOptions.FindWidget<Button>("cmdExit"); test.SetPosition(50, 25); zwróć 0; } Jak widać, pomysł polega na tym, że tworzysz swoje kontrolki (w tym przypadku przycisk) i przekazujesz do nich wskaźnik do okna. Następnie możesz znaleźć kontrolkę według nazwy, zwracając odwołanie do tej kontrolki, w której możesz manipulować kontrolką. Nie ma sensu używać FindWidget() w tym przykładzie, ponieważ mam zmienną cmdExit, ale gdybym miał przekazać okno, byłby to sposób na znalezienie i użycie kontrolek. Największym problemem, jaki mam, jest to, że FindWidget() może nie znaleźć widżetu. W tej chwili zgłaszam wyjątek, ponieważ nie znalazłem kontrolki, którą uznałbym za prawdziwy wyjątek, a nie coś, co powinno się wydarzyć dużo, jeśli w ogóle. Jakieś komentarze na temat użycia w ten sposób?


title: Co dalej po nauczeniu się podstaw języka programowania C?

text: Po zapoznaniu się z podstawami programowania w C z kilku książek (zmienne, tablice, listy połączone itp.), co dalej? Jakieś sugestie obszarów, w których mogę rozszerzyć moje umiejętności programowania w C, i jakieś pomocne źródła? Bo zastanawiałem się, co zrobili doświadczeni programiści po zapoznaniu się z podstawami.


title: Wstrzykiwanie zależności (DI) w aplikacjach c++

text: Bawię się wstrzykiwaniem zależności, ale nie jestem pewien, czy robię to dobrze. Szczególnie nie jestem pewien, jaki powinien być prawidłowy sposób budowania klas z wstrzykiwanymi zależnościami. Powiedzmy, że mam klasę A, która tworzy klasę B. Klasa B zależy od klasy C, a klasa C od klasy D. Kto powinien być odpowiedzialny za tworzenie klasy D? 1. Może to być klasa A. Jednak w dużym systemie klasa A może skończyć się tworzeniem i składaniem bardzo dużej liczby obiektów. 2. Oddzielna klasa konstruktora, która utworzy D, C i B. A użyje tej klasy konstruktora. 3. Jakaś inna opcja. Poza tym dużo czytam o kontenerach DI. Wydaje się jednak, że nie ma większych frameworków dla C++. Poza tym, jeśli dobrze rozumiem, DI można dobrze wykonać nawet bez kontenerów. Mam rację?


title: Wytyczne dotyczące architektury „jednostronicowej aplikacji internetowej”

text: Zamierzam rozpocząć projekt poboczny, aby zbudować aplikację sieci web "pojedynczej strony". Aplikacja musi działać w czasie rzeczywistym, wysyłając aktualizacje do klientów, gdy zachodzą zmiany. Czy są jakieś dobre zasoby dla najlepszych praktyk w architekturze dla tego rodzaju aplikacji. Najlepszym źródłem, jakie do tej pory znalazłem, jest artykuł o architekturze trello tutaj: http://blog.fogcreek.com/the-trello-tech-stack/ Dla mnie ta architektura, choć bardzo seksowna, jest prawdopodobnie przesadzony moje specyficzne potrzeby - chociaż mam podobne wymagania. Zastanawiam się, czy muszę zawracać sobie głowę sub/pubem po stronie serwera, czy nie mógłbym po prostu wypychać aktualizacji z serwera, gdy coś się dzieje (np. gdy klient wyśle aktualizację na serwer, napisz aktualizację do bazy, a następnie wyślij aktualizację do klientów). Jeśli chodzi o technologię, prawdopodobnie zamierzam zbudować to w Node.JS lub może Ruby, chociaż wytyczne dotyczące architektury powinny w pewnym stopniu dotyczyć dowolnych bazowych technologii serwerowych.


title: Implementacja sortowania wymiany Radix?

text: Potrzebuję trochę pomocy w zrozumieniu implementacji algorytmu sortowania wymiany radix. Wymiana Radix (nie wiem, czy jest to dokładna nazwa w literaturze angielskiej) jest bardzo podobna do quicksort, ale wykorzystuje binarną reprezentację liczb. Najpierw patrzymy na najwyższą cyfrę w reprezentacji binarnej, a następnie za pomocą dwóch indeksów (od początku tablicy i od końca inkrementujemy pierwszą, jeśli dana cyfra jest równa 0, a dekrementujemy drugą, jeśli dana cyfra jest 1). Następnie zamieniamy dwie liczby, a następnie kontynuujemy pracę, aż i = j (indeksy są równe). Następnie mamy dwie oddzielne partycje i sortujemy je według drugiej najważniejszej cyfry i tak dalej... Głównie mam kilka pytań: 1. Czy ten algorytm rzeczywiście nazywa się radix exchange, czy też ma inną, częściej używaną nazwę? 2. Jakie są zalety tego algorytmu? Wydaje się, że to dużo pracy i mało efektywne? 3. Gdzie mogę zobaczyć przykładową implementację algorytmu? Może będzie trochę jaśniejszy, co to naprawdę jest, ponieważ w tej chwili jest to dla mnie bardzo zagmatwane.


title: Ile testować w TDD?

text: Jestem nowicjuszem w TDD (pisząc pierwszy projekt zgodnie z praktykami TDD). Mam dość prosty interfejs `IProfiler` i implementację `Profiler`. interface IProfiler { bool IsBusy {get;} long Elapsed {get;} } Prosty test profiler IProfiler = default(Profiler); [TestInitialize] public void Initialize() { profiler = new Profiler(); } [TestMethod] public void ProfilerInitializationTest() { Assert.AreEqual(false, profiler.IsBusy); Assert.AreEqual(true, profiler.ElapsedMilliSeconds == default(long)); } Pytanie brzmi: Jak będę miał więcej stanów, to liczba asercji wzrośnie. Czy powinienem zachować oddzielne Assert, aby przetestować każde pole, czy powinienem uwzględnić wszystkie tutaj, czy też powinienem pogrupować w 3-4 podobne potwierdzenia?


title: Rysowanie schematu blokowego funkcji obliczania liczby w szeregu Fibonacciego

text: Próbuję zrobić schemat blokowy funkcji obliczania liczby w serii Fibonacciego. Ale wygląda na nie w porządku. Nie wiem, jak narysować funkcję rekurencyjną. Pomóż mi, jak to naprawić. Mój schemat blokowy: DIA ![PNG](http://ubuntuone.com/7SrSmJWoTpuQekGY43Hcqa) To jest mój kod: #include <iostream> using namespace std; długi długi Fibonacci (wejście int); int main() { cout << "Wprowadź numer indeksu Fibonacciego: "; int Indeks = 0; cin >> Indeks; cout << Fibonacci(i) << endl; zwróć 0; } long long Fibonacci(int input) { if (input < 2) return input; else { return Fibonacci(wejście - 1) + Fibonacci(wejście - 2); } }


title: Używanie strumieni jako parametrów metody i/lub typów zwracanych

text: Załóżmy więc, że mam interfejs „Transformer”, który może przekształcić jeden typ pliku w inny. Powiedzmy, że chcę również używać strumieni do dostarczania danych do Transformera. Takie podejście jest uważane za „najlepszą praktykę”; publiczna transformacja InputStream (dane InputStream); LUB public void transform(InputStream originalData, OutputStream newData); Chociaż pierwsza metoda wydaje mi się nieco bardziej zwięzła (tj. otrzymujesz strumień wejściowy, który możesz wykorzystać natychmiast), wydaje się, że narusza całą zasadę „twórca strumienia powinien być tym, który go zamyka”. Druga metoda, chociaż wymaga nieco więcej pracy ze strony klienta, aby obsłużyć strumień wyjściowy, wydaje się, że w niektórych przypadkach może być bardziej użyteczna (np. przekazanie ServletOutputStream jako argumentu „newData”), a kod klienta obsłuży wszystkie otwieranie/zamykanie strumieni. Skłaniam się ku drugiej metodzie, ale widziałem obie używane w różnych interfejsach API, z którymi się spotkałem i zastanawiam się, czy są sytuacje, w których jedna byłaby preferowana od drugiej?


title: Czy "Zapasy" są wzorcem anty-testowym TDD/jednostek?

text: Martin Fowler's Mocks Aren't Stubs stwierdza, że **Stubs** zapewniają gotowe odpowiedzi na połączenia wykonane podczas testu, podczas gdy obiekty **Mocks** są wstępnie zaprogramowane z oczekiwaniami, które tworzą specyfikację połączeń, które mają otrzymać. Ponadto kilka źródeł podaje, że Stubs **nie powinny** zawodzić testów, ale Mock **może**. A co z tym: $validator= $this->getMock('ValidatorService'); // Ustaw oczekiwanie na wywoływanie metody isValid() // tylko raz i z ciągiem 'textToBeValidated' // jako parametrem i zwracającą prawdę lub fałsz. $validator->expects($this->once()) ->method('isValid') ->with($this->equalTo('textToBeValidated')) ->will($this->returnValue(true)) ; Pojawiło się to w recenzji kodu w projekcie, nad którym pracuję i nazwaliśmy to **Stock** ( **St** ub - M **ock** ). Dlaczego pytasz?! 1. Ustawia oczekiwanie na wywołanie `isValid()` tylko raz i z pewnymi danymi wejściowymi, takimi jak Mock. 2. Zwraca gotową odpowiedź jak Stub. Mam wrażenie, że to źle, ale co, jeśli użyliśmy tylko czystego kodu Stub: $validator->expects($this->any()) //<-- nie można teraz oblać testu ->method(' isValid') ->will($this->returnValue(true)); //<-- gotowa odpowiedź * Nie mogę zweryfikować, czy metoda `isValid` została wywołana tylko raz z odpowiednimi parametrami. * Jeśli test zdał, nie jestem pewien, czy zdał z właściwego powodu. Być może `isValid()` zostało wywołane dwukrotnie i to spowodowało przejście. Użyjmy więc zamiast tego czystego Mocka: $validator->expects($this->once()) ->method('isValid') ->with($this->equalTo('textToBeValidated')) * Nie mogę sprawdź, czy moja funkcja działa poprawnie, ponieważ sprawdziłem tylko, czy wywołanie `isValid()` zakończyło się powodzeniem. Może jest błąd w pozostałej części mojego kodu używającej `ValidatorService`. Wiem, że niektórzy będą mówić o weryfikacji stanu vs zachowania, ale sposób, w jaki to widzę, jedynym sposobem, aby mieć pewność, że test przejdzie z właściwego powodu, jest użycie Stocka (tj. Zweryfikowanie zachowania i stanu końcowego). Oczywiście inną opcją jest napisanie 2 testów dla każdego kryterium testu. Jeden przy użyciu Mocka i identyczny test przy użyciu Stub. Spowoduje to jednak TestOverflow (ogromna liczba prawie identycznych testów). Jaki jest prawidłowy sposób przeprowadzenia konkretnego testu funkcji przy użyciu zależności?


title: Zabezpieczanie usług internetowych

text: Jak podejść do zabezpieczania serwisów internetowych? Przychodzi mi do głowy jedno z dwóch poniższych podejść 1. wysyłanie hasła do nazwy użytkownika w każdym żądaniu walidacji 2. wysyłanie tokena opartego na czasie (GUID lub podobnego długiego ciągu znaków) W pierwszym podejściu muszę za każdym razem odpytywać bazę danych w większości przypadków RDBMS do uwierzytelniania użytkownika. W drugim teraz dokonuję uwierzytelnienia hasłem nazwy użytkownika tylko raz, a następnie zwracam użytkownikowi token oparty na czasie. Wszystkie przyszłe żądania biznesowe są uwierzytelniane za pomocą tego tokena. Po wygaśnięciu ten token będzie musiał zostać odtworzony przez klienta wywołującego. Oba podejścia wydają się mieć swoje plusy i minusy. Którą poleciłbyś w jakich okolicznościach i jakie byłyby Twoje powody? Być może konkretny stan, w którym jedno faworyzuje drugie.


title: MVC + 3 poziomy; gdzie w grę wchodzą ViewModels?

text: Projektuję 3-warstwową aplikację przy użyciu ASP.NET MVC 4. Jako odniesienie użyłem następujących zasobów. * CodeProject: MVC + N-tier + Entity Framework * Rozdzielenie dostępu do danych w ASP.NET MVC Do tej pory mam następujący projekt. **Presentation Layer (PL)** (główny projekt MVC, gdzie **M** **MVC** zostało przeniesione do warstwy dostępu do danych): MyProjectName.Main Views/ Controllers/ ... **Business Logic Layer ( BLL)** : MyProjectName.BLL ViewModels/ ProjectServices/ ... **Data Access Layer (DAL)** : MyProjectName.DAL Models/ Repositories.EF/ Repositories.Dapper/ ... Teraz PL odwołuje się do BLL i BLL DAL. W ten sposób dolna warstwa nie zależy od tej nad nią. W tym projekcie PL odwołuje się do usługi BLL. PL może przekazać model widoku do BLL, a BLL może przekazać model widoku z powrotem do PL. Ponadto LOGO wywołuje warstwę DAL, a warstwa DAL może zwrócić Model z powrotem do LOGIKI biznesowej. BLL może z kolei zbudować model widoku i zwrócić go do PL. Do tej pory ten wzór działał dla mnie. Jednak napotkałem problem polegający na tym, że niektóre z moich modeli ViewModels wymagają złączeń na kilku encjach. W zwykłym podejściu MVC, w kontrolerze użyłem zapytania LINQ, aby wykonać `join`s, a następnie `select new MyViewModel(){...}`. Ale teraz w DAL nie mam dostępu do miejsca, w którym zdefiniowane są ViewModele (w BLL). Oznacza to, że nie mogę wykonać złączeń w DAL i zwrócić go do BLL. Wygląda na to, że muszę wykonać oddzielne zapytania w DAL (zamiast sprzężeń w jednym zapytaniu), a BLL użyje ich wyników do zbudowania ViewModel. Jest to bardzo niewygodne, ale nie sądzę, że powinienem narażać DAL na ViewModels. Jakieś pomysły, jak rozwiązać ten dylemat? Dziękuję.


title: Wzorzec projektowania stron internetowych

text: Buduję małą stronę internetową, w PHP i używam wzorca projektowego MVC dla interfejsu użytkownika. W przyszłości będę musiał dodać obsługę mobilną dla mojej strony internetowej. Będzie w poddomenie „m”, jak wszyscy. Cała sieć jest dla mnie nowa, ja też jestem nowy w MVC. Zrobiłem dla każdej strony Widok, Model i Kontroler. Widoki i modele znajdują się w jakimś wewnętrznym katalogu, a kontroler znajduje się w publicznym katalogu serwera (katalog główny serwerów). **Moje pytania:** 1. Czy muszę stworzyć nowy projekt MVC dla stron mobilnych, czy mogę użyć modelu zwykłej witryny? 2. Większość witryn ma subdomenę „m” dla mobilnych stron internetowych. Ale jedyną rzeczą, którą trzeba zmienić, jest część Widok. Jeśli strona publiczna jest Kontrolerem, dlaczego nie tworzyć tylko Widoków dla stron mobilnych, a Kontroler zadecyduje, który Widok będzie prezentowany? Na przykład: if ($isMobile) { include 'mobiles\main.php'; } else { include 'web\main.php'; } Z subdomeną "m" musisz mieć inny kontroler. Bynajmniej?


title: Jak chronić mój kod php działający na serwerze klienta?

text: Chciałbym zapytać, jak chronić mój kod, który działa na serwerze klienta, przed zmianą i/lub kopiowaniem. Działa na Ubuntu Server ze standardowym stosem Apache Php Mysql. Jakiekolwiek potrzebne oprogramowanie byłoby najlepiej typu open source. Chciałbym również zamknąć aplikację w przypadku problemów z licencją. Wykonanie tego przy użyciu mojego kodu jest możliwe, ale ponieważ jest to php, klient może zmienić kod, aby temu zapobiec. Z góry dziękuję.


title: Czy wymagane jest wypełnianie bajtów podczas używania długości pola pakietu?

text: Jestem zaangażowany w projekt polegający na zaimplementowaniu protokołu binarnego, który będzie przesyłany przez TCP. Podczas naszych wczesnych dyskusji natknęliśmy się na krótką przeszkodę w podejmowaniu decyzji, czy wymagane jest upychanie bajtów, jeśli zdecydujemy się uwzględnić długość pakietu w nagłówku pola. Na przykład. Jeśli struktura naszego pakietu była taka: [STX] [DŁUGOŚĆ PAKIETU] [ID PAKIETU] ..... [ETX] Czy musimy bajtować rzeczy? Jeden z moich kolegów wydaje się mówić, że skoro znamy długość pakietu, to nawet jeśli w bajtach pojawi się znak specjalny, np. STX, ETX, nie będzie to miało znaczenia, ponieważ i tak odczytujemy [Długość pakietu] ilość bajtów. Wydaje się sensowne, ale nie jestem w 100% pewien, czy to rozumowanie jest w porządku. Należy pamiętać, że nie używamy istniejących modułów obsługi protokołu, takich jak proto-buf, ale sami projektujemy ten protokół na własny użytek. Aby potwierdzić to, co myślę, mam na myśli, odnosząc się do upychania bajtów: > Wypychanie bajtów to proces, który przekształca sekwencję bajtów danych, które mogą > zawierać „nielegalne” lub „zarezerwowane” wartości w potencjalnie dłuższą sekwencję > nie zawierającą żadnych wystąpień tych wartości Zaczerpnięte z Wiki - Consistent Overhead Byte Stuffing


title: Co to jest „rodzeństwo” plików .json?

text: Czytałem tutaj dokumentację Bower i przeczytałem ten wiersz: „Plik .bowerrc powinien być rodzeństwem bower.json twojego projektu”. Co to dokładnie oznacza? Wyszukiwanie w Google zwróciło pytania osób pytających, jak znaleźć rodzeństwo, ale nie o to, kim naprawdę są.


title: Dziedziczenie Doktryny 2 i Konkretnego stołu

text: Używam Doctrine 2 i przeczytałem kilka artykułów na temat mapowania strategii dziedziczenia za pomocą ORM. Widziałem trzy główne strategie: "Dziedziczenie tabeli klas", "Dziedziczenie tabeli konkretnej" i "Dziedziczenie pojedynczej tabeli". W Doctrine 2 zarządzałem instalacją „dziedziczenia tabel klas” (CTI) i „dziedziczenia pojedynczej tabeli” (STI). W niektórych przypadkach wydaje mi się, że użycie "Concrete Table Inheritance" jest najbardziej odpowiednie, ale nie znalazłem żadnej dokumentacji pokazującej tę strategię w Doctrine 2. Dlaczego w Doctrine 2 nie ma "Concrete Table Inheritance"? Czy to dla wydajności? Jaki jest powód ?


title: Kiedy używać domyślnego modyfikatora dostępu?

text: Chcę zrozumieć, z punktu widzenia projektowania, w jakich sytuacjach powinienem używać domyślnego modyfikatora dostępu, a kiedy nie. Znalazłem to pokrewne pytanie, które dostarcza kilku podstawowych wyjaśnień, jednak zawsze szukam odpowiedzi, która będzie dotyczyć zasad enkapsulacji i pojedynczego powodu zmiany, i zająć się tym w bardziej profesjonalny sposób.


title: Czy ograniczenia zabezpieczeń powinny powodować, że usługa zwraca wartość null lub zgłasza wyjątek?

text: Nie zgadzam się w tej kwestii z bardziej doświadczonym programistą i zastanawiam się, co myślą o tym inni; naszym środowiskiem jest Java, EJB 3, usługi itp. Kod, który napisałem, wywołuje usługę, która pobiera i tworzy rzeczy. Problem, na który natknąłem się, polegał na tym, że otrzymałem wyjątki zerowego wskaźnika, które nie miały sensu. Na przykład, gdy poproszę usługę o utworzenie obiektu, otrzymam null z powrotem; kiedy próbuję wyszukać obiekt o znanym prawidłowym identyfikatorze, zwracam wartość null. Spędziłem trochę czasu próbując dowiedzieć się, co jest nie tak w moim kodzie; Ponieważ jestem mniej doświadczony, zwykle zakładam, że zrobiłem coś złego, ale okazuje się, że powodem zerowych zwrotów było bezpieczeństwo. Jeśli jednostka główna użytkownika korzystająca z mojej usługi nie miała odpowiednich uprawnień dla usługi docelowej, po prostu zwraca wartość null. Większość innych usług tutaj również nie jest dobrze udokumentowana, więc najwyraźniej jest to tylko coś, o czym musisz wiedzieć. Jest to dość mylące, ponieważ programista pisze kod, który wchodzi w interakcję z usługą. Byłoby dla mnie o wiele bardziej sensowne, gdyby usługa zawierała wyjątek, który powiedziałby mi, że użytkownik nie ma odpowiednich uprawnień do załadowania tej rzeczy lub stworzenia tej rzeczy; Od razu wiedziałbym, dlaczego moja usługa nie działa zgodnie z oczekiwaniami. Bardziej doświadczony programista, który napisał usługę, argumentował, że żądanie danych nie jest warunkiem błędu i że wyjątki powinny być zgłaszane tylko w przypadku błędu, a nie wtedy, gdy użytkownik nie ma dostępu do danych. Te dane są często wyszukiwane w GUI, a dla tych użytkowników bez odpowiednich uprawnień, te rzeczy po prostu „nie istnieją”. Krótko mówiąc: pytanie nie jest złe, stąd nie ma wyjątku. Metody pobierania zwracają wartość null, ponieważ dla tych użytkowników te rzeczy „nie istnieją”. Metody tworzenia zwracają wartość null, gdy użytkownik nie mógł tego utworzyć. Czy jest to normalna i/lub dobra praktyka? Wolę używać wyjątków, ponieważ znacznie łatwiej jest mi wiedzieć, co się dzieje. Więc na przykład wolałbym również zgłosić NotFoundException, jeśli poprosiłeś o obiekt z nieprawidłowym identyfikatorem, zamiast zwracać wartość null.


title: Gdzie umieścić metodę zwracającą listę aktywnych wpisów w tabeli?

text: Mam klasę o nazwie `GuestbookEntry`, która mapuje właściwości znajdujące się w tabeli bazy danych o nazwie "księga gości". Bardzo prosta! Pierwotnie miałem statyczną metodę o nazwie `getActiveEntries()`, która pobierała tablicę wszystkich obiektów `GuestbookEntry`. Każdy wiersz w tabeli księgi gości był obiektem dodanym do tej tablicy. Następnie, ucząc się, jak poprawnie projektować klasy PHP, nauczyłem się kilku rzeczy: 1. Metody statyczne nie są pożądane. 2. Separacja obaw 3. Zasada pojedynczej odpowiedzialności Jeśli klasa `GuestbookEntry` powinna być odpowiedzialna tylko za zarządzanie pojedynczymi wpisami w księdze gości, to dokąd powinna pójść ta metoda `getActiveEntries()`? ## Aktualizacja: szukam odpowiedzi zgodnej z zasadami akronimu SOLID i pozwalającej na testowanie. Dlatego chcę trzymać się z dala od statycznych wywołań/standardowych funkcji. DAO, repozytorium, ...? Proszę wyjaśnij tak, jakby twoje wyjaśnienie było częścią "Gdzie znaleźć dla opornych"... :-)


title: Spośród wszystkich projektów, z jakiego dobrego przykładu można się nauczyć?

text: Czasami możesz się wiele nauczyć patrząc na projekt, zamiast rozglądać się za radą... Jakie są dobre, najnowocześniejsze projekty, z których można się uczyć?


title: Logowanie z aplikacji zewnętrznej w MVC

text: Mamy aplikację ASP.Net MVC, która używa dostawcy tożsamości do uwierzytelniania użytkowników. Nowy klient chce teraz uzyskać dostęp do aplikacji owr, naciskając przycisk w swojej aplikacji winform. Zacząłem modyfikować kontroler logowania, dodając nową metodę HttpGet, która akceptuje nazwę użytkownika i hasło i podąża standardową ścieżką logowania. Działa tak, ale teraz luka bezpieczeństwa jest otwarta! Przekazywanie "hasła" jako parametru nie jest dobrym pomysłem. Zastanawiam się nad wdrożeniem systemu haszowanego tokena; zewnętrzna aplikacja szyfruje token za pomocą nazwy użytkownika, hasła, znacznika czasu, soli... Otrzymuję token w metodzie logowania, porównuję token z wygenerowanym lokalnie i kontynuuję logowanie. Problem polega na tym, że hasło w schemacie tożsamości jest zahaszowane (właściwość passwordHash), więc nie mogę wygenerować tokena po stronie mojego serwera. **_Update_** Napisałem prostego klienta winform z HttpWebRequest, aby pobrać token OAuth z mojej aplikacji internetowej. Teraz mam ważny token, ale jak mogę użyć tego tokena, aby uzyskać dostęp do mojej aplikacji? var request = WebRequest.Create("http://localhost:2409/token") jako HttpWebRequest; request.Method = "POST"; request.ContentType = "aplikacja/x-www-form-urlencoded"; request.CookieContainer = new CookieContainer(); var authCredentials = "grant_type=password&userName=... ... token = dynamicObj.access_token; ... System.Diagnostics.Process.Start("http://localhost:2409/??????token=" + token); Czy ktoś może mi pomóc?


title: Projekt bazy danych z problemami z wydajnością i wykorzystaniem widoków

text: Projektuję bazę danych dla systemu szkolnego. Muszę stworzyć wiele tabel i wiele tabel linków, aby utrzymać strukturę w systemie. Staram się zachować integralność zagraniczną i staram się stworzyć jak najbardziej unikalny wpis danych. Ale to spowoduje problemy z zapytaniami, kiedy zacznę budować system. Będę musiał wykonać wiele łączeń i obawiam się, że odbije się to na optymalizacji i wydajności. W tym przypadku mam studenta, który bierze udział w kursie z danego przedmiotu. W trakcie kursu może wypożyczyć z biblioteki książkę na ten temat. Moje stoły byłyby. Przedmioty z: id, imieniem b. kurs z: id, imieniem, id. przedmiotu c. tabela powiązań, aby wiedzieć, że uczeń uczestniczy w kursie: id, identyfikator użytkownika, identyfikator kursu d. element biblioteki nazwa id tabeli e. tabela linków, aby wiedzieć, który element biblioteki wypożycza uczeń: identyfikator biblioteki, id z c Próbuję użyć klucza podstawowego z c, ponieważ zapewni to, że jeśli użytkownik nie będzie już uczęszczał na kurs, nie będzie mógł go wypożyczyć książka. Tabela powiązań będzie się układać kaskadowo, jeśli nie istnieje relacja między kursem a użytkownikiem. Problem z tym polega na tym. Jeśli muszę znać nazwę przedmiotu, na który student wypożyczył książkę. Muszę dołączyć do czterech stołów. Mogę po prostu dodać identyfikator tematu, aby uzyskać nazwę tematu. Ale tego właśnie nienawidzę. Jeśli jest to naprawdę problem z wydajnością, czy użycie widoków przyspieszyłoby zapytania i czy naprawdę można zaimplementować widoki w projekcie. Myślę więc, że moje pytania w tym zakresie brzmią: 1. Czy tworzenie wielu tabel z unikalnymi kolumnami jest naprawdę dużym problemem z wydajnością. Słyszałem, że indeksowanie kolumn bardzo pomaga? 2. Czy widoki są pomocne w utrzymaniu relacyjnej bazy danych i przyspieszaniu zapytań? 3. A w tabeli c nie użyłem oddzielnego identyfikatora klucza podstawowego, ponieważ chcę się upewnić, że jeden uczeń może pożyczyć jeden przedmiot na raz. Czy to dobra praktyka?


title: W PHP jak zapisać katalog plik php znajduje się w zmiennej (centos)

text: więc powiedzmy, że mój plik php "example.php" znajduje się w katalogu "/user/example" Myślałem, że wiersz "$dir = getcwd();" zapisałby "/user/example" do $dir, ale zamiast tego zapisuje katalog, w którym znajduje się użytkownik uruchamiający skrypt, np. jeśli uruchomię skrypt z katalogu głównego, zmienna $dir będzie zawierała katalog główny. Czy istnieje polecenie, którego mogę użyć, lub wskazówka, którą możesz mi dać, abym mógł zapisać katalog, w którym znajduje się plik php?


title: Co to jest utajone parsowanie w NLP?

text: Czytam artykuł opisujący pracę NLP i ledwo łapię pojęcie terminu "utajone parsowanie". Artykuł oryginalny: http://web.stanford.edu/~angeli/papers/2013-acl-temporal.pdf Rysunek na stronie 6 wydaje się być pomocny (nie mogę przesłać rysunku z powodu mojej reputacji)


title: Jak mogę napisać złożoną walidację i logikę biznesową, które można ponownie wykorzystać zarówno w bezpośrednich zmianach modelu danych, jak i oczekujących zmianach w oknie dialogowym?

text: Liczyłem na radę: muszę zaprojektować oprogramowanie dla średniej wielkości aplikacji Java/Swing. Aplikacja będzie miała około 200 przypadków użycia wymagających złożonej walidacji danych i logiki biznesowej. Zazwyczaj jest to mój typowy projekt: * Utwórz proste POJO dla każdego przypadku użycia, z niestandardowym konstruktorem i niestandardową walidacją i logiką biznesową w ramach metody wykonania. Te operacje wdrażają proste i złożone sprawdzanie poprawności danych, takie jak wymagane pola, unikalne nazwy i bardziej złożone ograniczenia. * Utwórz jeden kontroler, który ma metodę dla każdego przypadku użycia. Każda metoda pobiera niestandardowe parametry, konstruuje i wykonuje powiązaną z nią operację. * Dla uproszczenia nie wspomnę o szczegółach dotyczących powiadamiania Data Model czy mechanizmu kolejkowania operacji. To rozwiązanie sprawdzało się w przeszłości, ponieważ zachęca wszystkich programistów do ponownego wykorzystania istniejących metod kontrolera i sprawdzania poprawności, jednak: Nowa aplikacja będzie intensywnie używać okien dialogowych do wprowadzania danych; Oczekuje się, że te okna dialogowe zaimplementują tę samą złożoną walidację danych i logikę biznesową, którą implementuje kontroler, jednak okna dialogowe nie powinny aktualizować modelu danych, dopóki nie zostanie kliknięty przycisk OK. Nienawidzę pomysłu pisania wielu wersji tej samej złożonej walidacji i logiki biznesowej, ze względu na koszmar związany z konserwacją. Jak mogę przeprowadzić złożoną logikę biznesową i weryfikację zarówno standardowych zmian modelu danych, jak i "oczekujących" zmian w oknie dialogowym, biorąc pod uwagę, że okno dialogowe nie zatwierdza zmian do momentu kliknięcia przycisku OK? Model danych może być dość duży, więc tworzenie jego klonu w pamięci i kontrolera nie wydaje się opłacalne. Czy ktoś ma jakieś sugestie? Jeśli tak, będę na zawsze u ciebie dłużnikiem.


title: Dlaczego niektóre programy po instalacji wymagają ponownego uruchomienia systemu?

text: To pytanie zadano mi w wywiadzie. Po zainstalowaniu programów w systemie operacyjnym Windows niektóre programy wymagają ponownego uruchomienia systemu, a inne nie. Jaki jest tego powód? Wygooglowałem, ale nie otrzymałem satysfakcjonującej odpowiedzi. Z góry dziękuję.


title: Jak przetestować warstwę dostępu do danych?

text: Mam metodę DAO, która wykorzystuje Spring do dostępu JDBC. Oblicza wskaźnik sukcesu sprzedającego w sprzedaży przedmiotu. Oto kod: public BigDecimal getSellingSuccessRate(long id_sprzedawcy) { String sql = "SELECT SUM(IF(cena_sprzedana NIE JEST NULL, 1, 0))/SUM(1) FROM transakcja WHERE id_sprzedawcy =?"; Argumenty obiektu[] = {seller_id}; return getJdbcTemplate().queryForObject(sql, args, BigDecimal.class); } Jak mam przejść do testowania tej metody lub dowolnej metody DAO za pomocą JUnit? Jakie są najlepsze praktyki testowania logiki dostępu do danych? Zastanawiam się nad przetestowaniem go na wbudowanej bazie danych załadowanej pewnymi danymi, ale czy nie powinniśmy przeprowadzać testów integracyjnych podobnych do środowiska produkcyjnego pod względem RDBMS i schematu?


title: połączenie ruby i C++

text: Omawiałem projekt koncepcyjny z moim przyjacielem i najskuteczniejszym sposobem, jaki widzieliśmy, jest napisanie silnika w C++, podczas gdy logika byłaby zrobiona w Ruby. Jednakże, potrzebowalibyśmy danych, które byłyby często przekazywane, na przykład: * Silnik zgłasza, że zdarzyło się A, które zostało wyzwolone w tablicy proc (zdarzenie „A” jest przekazywane, ale proc go nie używa) * Ruby decyduje, że musimy poczekać aby B się wydarzyło * Ruby dodaje proc do tablicy. Tablica proc jest iterowana podczas każdego cyklu w silniku C++ * Silnik C++ zgłasza, że wydarzyło się B i przekazuje „zdarzenie B (powinno być obiektem ruby) * Ruby odbiera zdarzenie B i decyduje, co dalej Nie pracuję z wieloma często i zastanawiałem się, czy możliwe jest zaimplementowanie rzeczy w ten sposób.Wiem, że w C++ jest ruby VALUE, ale chciałbym poznać standardowy sposób łączenia tych dwóch.(Oczywiście wiem, że ruby podąża za perl "więcej niż 1 sposób, aby to zrobić", ale często jest to ustandaryzowany sposób) Edit 1: Przeprowadziłem szybki test z SWIG i bardzo szybko napotkałem problem. Z tego, co widzę, ruby (1.9.3p286, chociaż używa 1.9.1 gems afaik) nie może załadować udostępnionego obiektu.Umieściłem tutaj kod, wykonane działania i więcej informacji.Edycja 2: Próbowałem kompilować do najnowszej wersji ruby and swig (Boże, uwielbiam ABS), aby sprawdzić, czy może to był jakiś błąd kompilacji w górę.Nie mam żadnych błędów i problem pozostaje.Wygląda na to, że może to być niezgodność między tą wersją SWIG a Ruby v wersja... Albo problem z obecną wersją Rubiego.


title: Jakie architektury są powszechnie używane w php?

text: Chcę wiedzieć, jakie architektury są powszechnie używane w tworzeniu aplikacji internetowych PHP. Wcześniej używałem MVC dla J2EE, ale w J2EE wszystko jest odseparowane jako część samego języka (pojo/servlet/jsp). Nie wiem, jak wykorzystać MVC w PHP, ponieważ oddzielenie problemów dotyczy tylko kodu. Czy możemy używać MVC również w PHP, a jeśli tak, to w jaki sposób? Czy są jakieś inne architektury, o których powinienem wiedzieć?


title: Czy korzystanie z kodeksu poprzedniego pracodawcy w nowym projekcie jest dla mnie legalne lub etyczne?

text: Uczestniczyłem i napisałem dużą ilość kodu w projekcie, który moja obecna firma zleciła mojej poprzedniej firmie w zeszłym roku. Po tym odszedłem z mojej poprzedniej firmy i niedawno dołączyłem do mojej obecnej firmy. Kilka dni temu mój obecny pracodawca prosi mnie o kontynuowanie projektu na istniejącym kodzie (moja obecna firma jest właścicielem praw autorskich i ona ma kod). Myślę, że nie jest to ani etyczne, ani legalne. Czy powinienem więc odmówić mojemu obecnemu pracodawcy? Czy mój były pracodawca może pozwać mnie do sądu, jeśli podejmę się realizacji projektu?


title: Jakie są przyczyny, które prowadzą do przepełnienia oprogramowania?

text: Dzisiaj zdecydowałem się przeprowadzić czystą instalację sterowników Creative Sound Blaster, ponieważ po pewnym czasie same zaczynają się zepsuć. A to oznaczało, że musiałem przejść całą procedurę oczyszczania. I zajęło mi to prawie 2 godziny.. I szczerze, nie widzę powodu dlaczego?! I chociaż firma Creative, IMHO, jest absolutnym zdobywcą pierwszego miejsca za produkcję oprogramowania o niskiej jakości, które nigdy nie działa, problem rozdęcia nie dotyczy wyłącznie ich. Komputer PC ze sterownikiem aparatu cyfrowego Canon będzie miał około 10 wpisów Canona, które są ze sobą połączone za pomocą wszelkiego rodzaju połączeń. Visual Studio jest również doskonałym przykładem, istnieje około 50 wpisów do pełnej instalacji, a naprawa tego jest możliwa tylko przy całkowitym nukingu. A raz zdołał nawet zrujnować całą instalację systemu operacyjnego, gdy aktualizowałem z VS2k8 do VS2k8SP1 czy coś takiego. Jak się okazuje, 5 GB wolnego miejsca nie wystarczyło na łatkę 300Mb... Wydaje się więc, że jest to powszechny problem. Prawie każda aplikacja w dzisiejszych czasach zwykle zawiera programy rozpakowujące, wielu zainstalowanych "przyjaciół" spyware, sterowniki mają zwykle około 600 MB dla wszystkiego, w tym drukarek i tak dalej. Ale dlaczego? Czy to wina programisty? Takie aplikacje są koszmarem do obsługi, nigdy nie działają w 100% w dzisiejszych czasach, a prawie wszyscy użytkownicy, których znam, są bardzo negatywnie nastawieni do całego tego rozdęcia, które otrzymują jako obowiązkową instalację sterownika dla pamięci USB / drukarki / aparatu / karty dźwiękowej / przeglądarki. Wygląda na to, że NSIS od Nullsoft to jedyny czysty system instalacyjny, który nie jest nadęty, z tego, co wiem, na przykład instalacja Firefoksa. Czysta, prawie oparta na xcopy instalacja bez żadnych problemów. Dlaczego więc ludzie nie używają prostych konfiguracji i aplikacji, które nie są zakorzenione w 30 warstwach wzajemnych połączeń? Czy to dlatego, że programiści są leniwi? Korzystasz z narzędzi codegen? Czy to dlatego, że korporacje wymuszają na aplikacjach wagi ciężkiej jako coś, co użytkownicy pokochają? Jaka jest przyczyna i czy istnieje nadzieja, że oprogramowanie kiedyś powróci do podstaw? Jakie są kroki, aby uniknąć pisania wzdęć, gdy zaczynasz nową aplikację od zera?


title: Jakich języków powinienem się nauczyć, aby stworzyć aplikację na Androida

text: Mam trochę wolnego czasu. Chcę opracować kilka aplikacji na Androida. Znam trochę html, css i podstawy programowania w C. Problem w tym, że nie znam żadnej javy ani .net. Muszę zacząć od zera i powinienem uczyć się sam. Czy to możliwe? Jeśli to możliwe, czego powinienem się nauczyć, aby tworzyć wysokiej jakości aplikacje? Mogę spędzać czas, jeśli mogę się uczyć.


title: Najgorsze praktyki w C++, najczęstsze błędy

text: Po przeczytaniu tej słynnej wypowiedzi Linusa Torvaldsa zastanawiałem się, jakie właściwie są wszystkie pułapki dla programistów w C++. Ja wyraźnie nie odnoszę się do literówek lub złego przepływu programu, jak potraktowano w tym pytaniu i jego odpowiedziach, ale do bardziej wysokopoziomowych błędów, które nie są wykrywane przez kompilator i nie powodują oczywistych błędów przy pierwszym uruchomieniu, kompletnych błędów projektowych, rzeczy, które są nieprawdopodobne w C, ale prawdopodobnie zostaną zrobione w C++ przez nowicjuszy, którzy nie rozumieją pełnych implikacji ich kodu. Z zadowoleniem przyjmuję również odpowiedzi wskazujące na ogromny spadek wydajności tam, gdzie zwykle nie można się tego spodziewać. Przykład tego, co powiedział mi kiedyś jeden z moich profesorów o generatorze parserów LR(1), napisałem: > Użyłeś nieco zbyt wielu przypadków niepotrzebnego dziedziczenia i > wirtualności. Dziedziczenie sprawia, że projekt jest znacznie bardziej skomplikowany (i > nieefektywny z powodu podsystemu RTTI (wnioskowanie o typie w czasie wykonywania)), dlatego należy go > używać tylko tam, gdzie ma to sens, np. dla działań w > tabeli parsowania. Ponieważ intensywnie korzystasz z szablonów, > praktycznie nie potrzebujesz dziedziczenia."


title: Programujesz przy użyciu nieoficjalnego zestawu na Androida?

text: Przeprowadziłem pewne badania nad programowaniem na platformie Android i odkryłem, że jedynym sposobem na stworzenie aplikacji przy użyciu C ++ jest użycie NDK. Dowiedziałem się również, że NDK ma ograniczone wsparcie dla C/C++, a C++ ma jeszcze mniejsze wsparcie niż C. Oto problem. Muszę programować w C++, ponieważ nie znam się zbytnio na Javie. Właściwie wcale nie znajomy. Wciąż mam 18 lat, więc nie mam dużego doświadczenia z wieloma językami programowania. Po przeprowadzeniu dalszych badań znalazłem nieoficjalny NDK, zwany NDK-CrystaX, który implementuje więcej wsparcia dla C/C++ niż oficjalny NDK. Zanim zacznę używać, muszę wiedzieć, czy używanie tego niestandardowego NDK w aplikacji na Androida jest legalne i nadal mogę go sprzedawać w Android Marketplace. Czy to jest? A może nie? Innym rozwiązaniem byłoby, gdyby nowsze wydania NDK miały pełne wsparcie dla C/C++. Ale ja też nie jestem tego pewien, więc ponownie szukam Twojej hojności i proszę o podzielenie się swoją wiedzą na ten temat.


title: Czy zajęcia częściowe to nowoczesne programowanie zorientowane na przedmiot?

text: Następuje ważna dyskusja: C# i inny język sprawiły, że klasy częściowe stały się bardziej popularne. Ale czy nie jest to naprawdę narzędzie, które na nowo wymyśliło koło programowania zorientowanego na przedmiot? Co myślicie? Czy programowania zorientowanego na przedmiot należy uczyć więcej i bardziej się skoncentrować, aby pomóc programistom lepiej wykorzystać zajęcia częściowe? Zasoby: http://ptsoft.net/tdd/papers/MDSoC_Thesis_MsC_Final.pdf Mało ważne opcjonalne ścieżki do dyskusji są następujące: Ja sam używam formy zorientowanej na przedmiot podczas tworzenia projektu kosmicznego imperium w unity3d. W unity3d obiekty gry (modele 3d), które istnieją w silniku 3d, mogą mieć dołączone "skrypty" (odczyt klasy lub dowolny plik kodu) z kilkoma specjalnymi funkcjami globalnymi, które mogą działać na każdej klatce. Jest to doskonały grunt do korzystania z programowania zorientowanego na przedmiot. Weźmy na przykład gameObject floty, ponieważ mogę dołączyć jedną klasę wartości (waga, nazwa, atak, obrona), jedną klasę gameRule, która obsługuje całą logikę biznesową i jeśli potrzebuję nowego tematu, na przykład „Raid”, dodaję tylko raid klasy do gameObject i wszystkie te są oddzielone. Wszystkie one implementują ogólny interfejs dla ich tematu, dzięki czemu można je sprawdzić i uzyskać do nich dostęp za pomocą „ IRaid = gameObject.GetComponent[of IRaid] jeśli IRaid nie ma wartości null: kod ”


title: Czy powinienem mieć różne automatyczne testy Selenium dla różnych rozdzielczości ekranu?

text: Strona, którą tworzę, będzie miała trzy punkty przerwania: desktop, tablet, mobile. Czy powinienem napisać test dla każdej rozdzielczości?


title: Jak usunąć obiekt, gdy odwołują się do niego inne rzeczy (i nie czyniąc kodu pełnym współzależności)

text: **Sytuacja:** W moim programie jest lista wskazówek. Aby wywołać cue w określonym czasie, istnieją obiekty zwane wyzwalaczami. Cue mają wiele publicznych metod, które pozwalają między innymi na „odpalanie” (co powoduje, że wykonują akcję). Wyzwala "odpalanie" wskazówek, gdy są aktywowane. Robią to, odwołując się do Cue, a następnie wywołując Cue.fire(). Wszystkie wyzwalacze są przechowywane w klasie o nazwie TriggerManager, która przechowuje je na liście tablicy. Cue są częścią połączonej listy ze sobą. Tak więc, w lecie: wyzwalacze wiedzą o Cue, ale Cue nie wiedzą o wyzwalaczach; Wyzwalacze wywołują podpowiedzi w określonych momentach. **Problem:** gdy usunę Cue z połączonej listy, nadal jest „żywa”/nie została zebrana, ponieważ znajduje się wyzwalacz z odniesieniem do niej. Naturalną rzeczą byłoby usunięcie wyzwalacza, ale stwarza to wiele problemów, które należy rozwiązać: Główny z nich jest taki: Ponieważ Cue nie wie o wyzwalaczu, który się do niego odwołuje, w jaki sposób mogę go uzyskać zostać usunięte. (Zwłaszcza, że odwołuje się do niego klasa TriggerManager). Musi być sposób, aby to zrobić bez uzależniania Cue od TriggerManagerów LUB Cue zależnych od TriggerManagers, które nie powinny mieć nic wspólnego z Cue (nadanie wszystkim dwukierunkowym odniesieniom do siebie sprawi, że kod będzie skomplikowany i trudno śledzić) **Pytanie:** Czy istnieje rozwiązanie, które rozwiąże mój problem, jednocześnie zachowując kod w zarządzaniu? Czy mój projekt jest z natury wadliwy? Jeśli tak, jak to naprawić?


title: Prawne konsekwencje użycia znaku towarowego JavaScript?

text: Powszechnie wiadomo, że nazwa „JavaScript” jest znakiem towarowym firmy Oracle (dawniej znak towarowy firmy Sun, dawniej znak towarowy Netscape). Jednak inni nie mają problemu z używaniem znaku towarowego JavaScript. Google używa go w odniesieniu do V8, Mozilla używa go w odniesieniu do SpiderMonkey i w różnych innych miejscach itp. Mozilla jest jedyną, która wydaje się próbować przypisać znak towarowy swojemu właścicielowi (na dole tej strony), chociaż w tym czasie tego tekstu błędnie przypisuje się Sunowi, a nie Oracle. Przez długi czas Microsoft używał „JScript” jako nazwy swojej implementacji ECMAScript zamiast „JavaScript”, prawdopodobnie w celu uniknięcia naruszenia znaku towarowego. Ostatnio (nie jestem pewien kiedy) Microsoft zmienił nazwę z „JScript” na „JavaScript”. W oparciu o historię wersji rozumiem, że napisali nową implementację ECMAScript i nazwali ją „JavaScript”, pozostawiając starą o nazwie „JScript” (zamiast wstecznie zmieniając nazwę „JScript” na „JavaScript”). Moje pytanie brzmi: skoro JavaScript jest znakiem towarowym, czy używanie go w połączeniu z nazwą produktu lub technologii (takiej jak „Microsoft JavaScript”) bez pozwolenia nie jest naruszeniem prawa? Jeśli tak, gdzie mogę znaleźć zapisy umów z Oracle/Sun/Netscape zezwalających na używanie znaku towarowego przez osoby trzecie? Zakładam, że te dokumenty byłyby gdzieś publicznie wymienione, ale nie wiem, gdzie je znaleźć. I wreszcie, jeśli znak towarowy ponownie zmieni właściciela, czy wcześniej zawarte umowy nadal będą ważne, czy też będą musiały zostać ponownie sfałszowane z obecnym właścicielem znaku? Powodem, dla którego pytam, jest to, że chcę wiedzieć, czy mogę użyć słowa „JavaScript” w tytule produktu, na przykład biblioteki JavaScript, bez wyraźnej zgody, i czy muszę zamieścić zastrzeżenie stwierdzające, że JavaScript jest znakiem towarowym firmy Oracle .


title: Jak właściwie działa płatny Saas?

text: Czy ktoś mógłby mi wyjaśnić, jak działa płatny Saas? Wiem, że za darmo Saas można po prostu stworzyć pewien rodzaj procesu rejestracji i uwierzytelniania, który pozwala użytkownikom korzystać ze wszystkich funkcji. Ale jak działa płatny Saas? Witryny takie jak Shopify, Volusion i wiele innych oferują różne funkcje w różnych cenach, od bezpłatnych do kilkuset dolarów. Ale jak im się to udaje? Btw, miałem tylko doświadczenie z ogólnymi witrynami e-commerce, więc tego rodzaju zaawansowane rzeczy są dla mnie mylące. Dziękuję.


title: Opcje licencjonowania oprogramowania dla wtyczek?

text: Tworzę aplikację, w której do tej pory większość kodu i zasobów była tworzona przeze mnie. Są mniejsze fragmenty kodu, które zaczerpnąłem z innych miejsc; wszystkie zostały licencjonowane jako „rób z tym, co chcesz”. Doszedłem jednak do punktu, w którym chcę włączyć dość duże części innego projektu do mojego, a ten inny projekt jest na licencji GPLv3. Do tego momentu nie brałem pod uwagę problemów licencyjnych z moim oprogramowaniem; w tej chwili po prostu siedzi na moim komputerze bez oficjalnej licencji. Włączenie tego innego projektu do mojego wymagałoby ode mnie również przyjęcia licencji GPLv3. Zdecydowałem, że chociaż nie mam nic przeciwko licencjonowaniu większości tego, co napisałem, chcę, aby część tego, co napisałem, była dostępna dla prawnie zastrzeżonych prac pochodnych (co jest niezgodne z GPL). Więc jak mam to obejść? To, co do tej pory wymyśliłem, to używanie „wtyczek” lub dodatków do mojej aplikacji. Podczas gdy podstawową aplikacją jest GPL, mogę licencjonować kod, który chcę dla prac pochodnych, być LGPL lub nawet zamknięty, i po prostu mieć je jako wtyczki do mojej aplikacji na GPL. Czy to jest opłacalne? Moim argumentem jest to, że wtyczka jest po prostu czymś, co dodaje funkcjonalność i nie czyni mojej podstawowej aplikacji pochodną pracy wtyczki.


title: Zezwalaj na odwoływanie się do jednostek należących do jednego użytkownika przez jednostki innych użytkowników

text: Pracuję nad aplikacją sieci web Asp.NET MVC. Mam następujące (uproszczone) jednostki: public class Course { public int Id { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } ciąg publiczny Opis { get; ustawić; } public Użytkownik Utworzony przez { get; ustawić; } public EventArea EventArea { get; ustawić; } } public class EventArea { public int Id { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } ciąg publiczny Opis { get; ustawić; } public Użytkownik Utworzony przez { get; ustawić; } public Współrzędna Współrzędna { get; ustawić; } } public class CoOrdinate { public int Id { get; ustawić; } public int Współrzędne { get; ustawić; } public int Długość geograficzna { get; ustawić; } } Użytkownicy mogą rejestrować się i tworzyć własne encje kursu. Każdy Kurs ma lokalizację geograficzną, reprezentowaną przez EventArea, który może być również utworzony przez użytkownika. Ponieważ EventArea reprezentuje lokalizację geograficzną, powinien być dostępny do użytku przez innych użytkowników, którzy chcą utworzyć kurs w tej samej lokalizacji. Jednak udostępnienie encji EventArea użytkownikom innym niż twórca rodzi następujące pytania: 1. Co się stanie, jeśli EventArea zostanie zmodyfikowany lub usunięty przez tworzącego użytkownika? 2. Kto powinien mieć możliwość przeglądania/edycji/modyfikowania encji EventArea? Jakieś alternatywne sugestie, jak podejść do scenariusza, w którym do encji utworzonej przez jednego użytkownika może odwoływać się inny użytkownik?


title: Jak dowiedzieć się, jakie są standardy/oczekiwania branżowe, szczególnie w zakresie bezpieczeństwa?

text: Na przykład, około rok temu tworzyłem swoją pierwszą mobilną aplikację internetową, aw połowie ktoś wskazał mi jQuery Mobile. Oczywiście wywołało to całkowitą rewolucję w mojej aplikacji. Przepisałem wszystko. Teraz, jeśli jesteś w terenie wystarczająco długo, może wydaje się to powszechną wiedzą, ale byłem w tym zupełnie nowy. Ale to mnie zastanowiło: jest _tak wiele_ bibliotek, rozszerzeń i frameworków. Wydaje się to szczególnie istotne w kategorii bezpieczeństwa. Obawiam się, że w końcu złapię się na robieniu czegoś w profesjonalnym otoczeniu (nadal jestem studentem) i ktoś podejdzie i powie: _Mój Boże, próbujesz zabezpieczyć dane użytkownika **że sposób?** Nie wiesz o bibliotece Gordona-Wokkera krypto-magicznych algorytmów haszujących? Bez niego równie dobrze możesz używać zwykłego tekstu._ Skąd wiesz, jakie są najlepsze sposoby maksymalizacji bezpieczeństwa? Zwłaszcza jeśli starasz się stworzyć coś na własną rękę...


title: Długoterminowa umowa Freelancer: czy powinna mieć dzień pensji, czy nie?

text: Nie lubię mówić o pieniądzach. Po prostu lubię pracować. Nadal wierzę w związek między dobrą pracą a dobrym wynagrodzeniem. Dlatego nie chcę pytać pracodawcy o moje odszkodowania, a właściwie pytają mnie. Stworzyłem więc liberalny kontrakt z niesprecyzowanym wynagrodzeniem – nie chciałem stracić praw do własnych projektów i nie zwracałem uwagi na dzień wynagrodzenia. 1. Teraz firma powiedziała, że zapłaciliby mi miesiąc wcześniej, gdybym dostarczył papier podatkowy. Podałem go przed kolejnym dniem płatności (nieokreślony). 2. W następnym miesiącu współpracodawca prawie blokuje moją pracę -- nie pozwala mi na dostęp do działającego repozytorium, a współpracodawca wyrusza w rejs, kiedy powinniśmy sfinalizować projekt, więc nie mogę nic zrobić. 3. Teraz projekt nie jest sfinalizowany, współpracodawca najwyraźniej dostarczył szefowi kilka fałszywych oświadczeń na temat moich poczynań (nie dostałem niczego za miesiąc pracy i 1 miesiąc, kiedy współpracodawca prawie zmarnował tylko mój czas) -- Mogłem tylko debugować kod mojego współpracodawcy i nic nie robić. 4. Czuję, że współpracodawca nie pozwolił mi pracować celowo, aby mieć wymówkę, aby nie wypłacać wynagrodzenia. Współpracodawca mówi, że nie mogę rozmawiać z szefem. Szef mówi, że muszę rozmawiać bezpośrednio ze współpracodawcą, a nie z nim. Nic nie powiedziałem o tej sytuacji. Nie udało mi się zrobić rzeczy, ponieważ nie wolno mi było, a teraz nawet nie wolno mi mówić. Szef to osoba, która wypłaca pensje. Ale zarówno szef, jak i współpracodawca mają sceny w firmie – myślę, że współpracodawca i szef to w zasadzie ta sama osoba, stworzyli teatr, żeby prawie 2 miesiące pracy mieli za darmo. Teraz mam wiele pomysłów, jak uniknąć tego typu sytuacji w przyszłości: 1. określ dzień wynagrodzenia 2. upewnij się, że możesz rozmawiać bezpośrednio z menedżerem i szefem, a nie pośrednio 3. inne?


title: wiele plików dołączonych a jeden duży plik dołączany

text:
Firma, w której pracuję, jest w trakcie całkowitej przebudowy naszej obecnej witryny intranetowej, przenosząc ją na framework Drupal. Jednym z obszarów, który kwestionuję, jest liczba plików dołączanych, które posiadamy. Jak to istnieje w tej chwili, każda strona .php ma odpowiadającą jej stronę .inc. Istnieją strony .inc, które zapewniają określoną funkcjonalność, ale nie są powiązane z konkretną stroną. Jednak każda strona .php zawiera wiele plików - co najmniej załaduje odpowiadającą jej stronę .inc oraz kilka ogólnych skryptów. To sprawia, że próba znalezienia definicji funkcji jest koszmarem podczas debugowania. Moje opcje w tej chwili wydają się być następujące: 1) Nadal używaj tego samego systemu, ale postaraj się, aby dołączanie wiersza z komentarzem, gdzie funkcja jest zdefiniowana, było częścią naszej konwencji 2) Skonsoliduj wszystkie pliki dołączane w jeden duży plik. Obejmuje to definicje klas, definicje funkcji, wszystko. Obawiam się, że ten plik stanie się monolityczny w naprawdę wielkim pośpiechu. Miałoby to jednak tę zaletę, że wszystkie definicje funkcji byłyby w jednym miejscu. Szczerze mówiąc, nie lubię żadnej z tych opcji. Moim celem jest zmniejszenie zależności i uczynienie naszego kodu czytelnym i łatwym w nawigacji. Jaka jest nasza najlepsza metoda rozwiązania tego problemu? Powinienem również stwierdzić, że jest to kod bardzo przestarzały - nie został zrefaktoryzowany od czasu powstania w latach 2003-2004. Aby dać ci wyobrażenie, nad czym pracuję, jest dużo echa php html: printf("\n"); printf("<tabela>\n"); printf("
\n"); printf("Wybierz podział:	\n"); printf("<select name=\"div\">\n"); printf(" <wartość opcji=1 \"wybrano\">Podział1\n"); printf(" <wartość opcji=2>Podział2\n"); printf("</select>	\n"); printf("
\n"); printf("
\n"); printf("<input type=\"prześlij\" value=\"Dalej->\">	\n"); printf("
\n"); printf("
\n"); printf("\n");


title: Struktura katalogów (projekt systemu plików)

text: Patrzyłem na sposób projektowania systemów plików i zauważyłem, że większość miejsc mówi, że hierarchię katalogów można zaimplementować za pomocą tablicy mieszającej. Czy ktoś mógłby mi wyjaśnić, jak działa używanie tablicy mieszającej do przechowywania struktury katalogów? Na przykład, co się stanie, jeśli dodam plik/katalog lub przeniosę katalog, jak to wpłynie na tablicę mieszającą? W jaki sposób zaangażowane są ścieżki?


title: Silniki polimorficzne w C i/lub C++

text: Natknąłem się na silniki polimorficzne i nic o nich nie wiem. Jednak jestem ciekaw, jak są napisane. Każdy przykład, który sprawdziłem, zapisuje je w asemblerze, mój asembler wcale nie jest dobry; Znam tylko kilka instrukcji tu i tam, ale niezbyt dobrze. Z drugiej strony jestem dobry w C i C++. Znam pojęcie polimorfizmu w C++, ale po przeczytaniu o silnikach polimorficznych zakładam, że różnią się one od polimorfizmu w C++. Szukam tylko prostego kodu, który pokazuje szyfrowanie/odszyfrowywanie i/lub zaciemnianie kodu za pomocą C i/lub C++ W jaki sposób można wykorzystać techniki, takie jak użycie wirtualnego słowa kluczowego w C++, do zaciemnienia lub zaszyfrowania kodu w aplikacji? UWAGA: kazano mi przenieść to pytanie ze stackoverflow.com do tego miejsca.


title: Testy funkcjonalne w weryfikacji

text: Wczoraj moje pytanie Dlaczego weryfikacja nie obejmuje rzeczywistych testów? wzbudziło wiele kontrowersji, ale nie ujawniło odpowiedzi na pokrewne i bardzo ważne pytanie: czy testowanie funkcjonalne czarnoskrzynkowe wykonywane przez testerów należy do weryfikacji czy walidacji? * ISO 12207:12208 tutaj wspomina o testowaniu wyłącznie jako czynności walidacyjnej, jednak mówi o walidacji wymagań zamierzonego zastosowania. Dla mnie jest to wyższy poziom, jak przypadki testowe UAT napisane przez użytkowników biznesowych * Wspomniane powyżej ISO nie wspomina o żadnej konkretnej weryfikacji (7.2.4.3.2) z wyjątkiem weryfikacji wymagań, weryfikacji projektu, weryfikacji dokumentu oraz kodu i integracji. Dwa ostatnie można prawdopodobnie uznać za testowanie jednostkowe i zintegrowane. Ale gdzie w takim razie są regularne testy przeprowadzane przez testerów pod koniec fazy? Książka, o której wspomniałem w pierwotnym pytaniu, wspomina, że weryfikacja jest wykonywana technikami statycznymi, jednak na wykresie modelu V opisuje testowanie systemu względem opisu wysokiego poziomu jako weryfikację, wspominając, że obejmuje wszystkie rodzaje testowania, takie jak funkcjonalne, obciążeniowe itp. Standard IEEE dla V&V, można przeczytać tak: _Mimo że testy i oceny nie są częścią procesów V&V, techniki opisane w tym standardzie mogą być przydatne w ich wykonywaniu._ Jest to więc coś innego niż w ISO, gdzie walidacja wspomina testowanie jako czynność. Nie wspominając o wielu sprzecznych informacjach w sieci. Byłbym bardzo wdzięczny za odniesienie m.in. standard w odpowiedzi lub wyjaśnieniu tego, co przegapiłem w ISO. Dla mnie nie jestem w stanie powiedzieć, gdzie należy praca testerów.


title: Problem z uzyskaniem wartości tablicy na stronie jsp!

text:
**plik js:** function savethechanges(){ for(var i=0;i<count;i++) { dropdown1[i]=document.getElementById("sel"+i).value; kot[i]=document.getElementById("kot"+i).wartość; item[i]=document.getElementById("kod elementu"+i).value; if(dropdown1[i] == 0){ document.detailsview.action="BillCB.jsp?method=" + "11" + "&itemcode=" +item[i]+ "&kot=" +kot[i]+ "&itemStatus1=" +dropdown1[i]+ "&billno=" +billno; } else if(dropdown1[i] == 1){ document.detailsview.action="BillCB.jsp?method="+"9"+"&itemcode="+item[i]+"&kot="+kot[i ]+"&itemStatus1="+menu1[i]+"&billno="+billno; } else{ document.detailsview.action= "BillCB.jsp?method="+"10"+"&itemcode="+item[i]+"&kot="+kot[i]+"&itemStatus1="+dropdown1[i ]+ "&billno="+billno; } } } **Plik JSP:** > podczas pobierania tutaj długość listy rozwijanej1 wynosi 1.ale dla długości kota i elementu > wynosi 18 proszę podać swoje rozwiązanie! przypadek 11: gotMethod = prawda; billdetails_be.billno = Integer.valueOf(request.getParameter("billno")); String[] kotCB2=request.getParameterValues("kot"); String[] itemCB2=request.getParameterValues("kod pozycji"); String[] statCB2=request.getParameterValues("itemStatus1"); int[] kotarr2=nowy int[kotCB2.length]; int[] itemarr2=nowy int[itemCB2.length]; int[] statarr2=nowy int[statCB2.length]; System.out.println("W DOSTĘPNE:długość tablicy wynosi:"+statCB2.length); System.out.println("W DOSTĘPNE:długość tablicy wynosi:"+kotCB2.length); for(int i=1;i<itemarr2.length;i++) { kotarr2[i]=Całkowita.parseInt(kotCB2[i]); } for(int i=1;i<itemarr2.length;i++) { itemarr2[i]=Integer.parseInt(itemCB2[i]); } for(int i=1;i<itemarr2.length;i++) { statarr2[i]=Integer.parseInt(statCB2[i]); } for(int i=1;i<itemarr2.length;i++) { int kotint2=kotarr2[i]; int itemint2=itemarr2[i]; int statint2=statarr2[i]; System.out.println( i+"wartość kot w dostępnej"+ kotint2); int availablebill = websrv.availablebill(billdetails_be.billno, kotint2, itemint2,statint2); } **design page(jsp)** <% for(int i=0;i<count;i++){ %>
  <input id="itemcode<%=i%>" type=" ukryty" name="itemcode" value=" <%=billdetails_be.get(i).itemcode%">	 <%=billdetails_be.get(i).itemdescription%>	   <input id="ilość<%=i%>" type="tekst" name="ilość" style="szerokość: 30px;" readOnly="tylko do odczytu" value="<%=billdetails_be.get(i).quantity%>" > <input type="submit" id="inc<%=i%>" onclick= "doIt1(1,<% =i%>);" value="+" style="szerokość:20px; wysokość:20px;obramowanie-promień:10px;padding:0 0;" /> <input type="prześlij" id="dec<%=i%>" onclick= "doIt1(-1,<%=i%>);" value="-" style="width:20px; height:20px; border-radius:10px; padding:0 0; "/> 	   <%=billdetails_be.get(i).price%> 	   <%=billdetails_be.get(i).itemstatusdescription%>	  <select name="statusi" id="sel<%=i%>"> <option value= "0">Dostępne</option> <option value="1">Niedostępne</option> <option value="2">Usuń</option> </select> 	  <input id = "kot<%=i%>" type="tekst" style="obramowanie: 0px stałe #000000;" name="kot" style="kursor: tekst" readonly="readonly" value="<%=billdetails_be.get(i).kotno%>">	  <input id="mojailość<% =i%>" type="ukryty" name="quantity1" value=" <%=billdetails_be.get(i).quantity%>">
 <% } %> < input style = "width: 150px; " class = "btn btn-green btn-large" type = "prześlij" name = "zapisz" id = "zapisz" value = "zapisz" class = "przycisk" onclick = "zapisz zmiany ( <%=count%>);"> 	 **PROBLEM** > 1. to jest w pliku js, z którego przekazuję wartość do BillCB.jsp document.detailsview.action="BillCB.jsp? method=" + "11" + "&itemcode=" +itemcode1[i]+ "&kot=" +kot1[i]+ "&itemStatus1=" +wybór[i]+ "&billno=" +billno; > 2. to jest w pliku BillCB.jsp (metoda :11) String[] statCB2=request.getParameterValues("itemStatus1"); int[] statarr2=nowy int[statCB2.length]; System.out.println("W DOSTĘPNE:długość tablicy STATUS to:"+statCB2.length); > W DOSTĘPNE:długość tablicy STATUS wynosi:1-to jest problem.


title: Co to jest „podwyższona reprezentacja”?

text: Po prostu natknąłem się na ten termin tutaj: http://www.codemesh.io/codemesh2014/viktor-klang > „Zademonstrujemy interfejs API Flow — uniesioną reprezentację — oraz > podłączany sposób przekształcenia uniesionej reprezentacji w wykonanie > reprezentacja — materializacja przepływu." Googlowanie niewiele pomogło.


title: Czy używanie stylów wbudowanych w wygenerowanym kodzie to zła praktyka?

text: Jeśli używam technologii takiej jak Grails. Naprawdę łatwo jest zakończyć stylizację w linii. Czy są jakieś wady automatycznego generowania kodu ze stylami wbudowanymi? Czy jest to uważane za złą praktykę? Czemu?


title: Po co używać protokołu, a nie bezpośrednio wywoływać metodę?

text: To pytanie zadano mi w wywiadzie. Na przykład: protokół `UITableviewDelegate` ma `CellForRowAtIndexpath`. Po co tworzyć metodę delegowaną w protokole, a nie metodę w klasie UITableView i wywoływać ją bezpośrednio?


title: Format zrzutu drzewa składni

text: Podczas pisania kompilatora warto uwzględnić możliwość zrzucenia abstrakcyjnego drzewa składni w formacie czytelnym dla człowieka, w celu debugowania. Te dane wyjściowe mogą być również przydatne dla innych narzędzi, takich jak IDE i analizatory kodu, więc równie dobrze mogę udostępnić je jako udokumentowaną funkcję. Biorąc to pod uwagę, jaki format byłby najbardziej przydatny? Nie ma to dla mnie większego znaczenia, o ile mogę na to spojrzeć, więc równie dobrze mógłbym podać np. jakie inne narzędzia byłyby najłatwiejsze do odczytania.


title: Jak skutecznie wdrożyć zasadę 80/20 dla czasu programisty?

text: Jestem programistą w banku, w którym wdrożona jest zasada 80/20. 80% czasu pracujesz nad przydzielonym projektem, a 20% pracujesz nad czymś, co Cię interesuje. Jednak nie jestem do końca pewien, jak to zrobić. Mam nadzieję, że są inni, którzy mogą mi doradzić, jak to zrobić. Mój problem polega na tym, że kiedy naprawdę wchodzę w strefę, myślę tylko o zadaniu, które mam pod ręką. Jeśli to jest 20% er, ostatnią rzeczą, którą chcę zrobić, to zatrzymać się i iść, stracić impet i wrócić do pracy nad moim głównym projektem. Czy mam pracować 4 dni nad czymś i 1 dzień nad czymś innym? czy 4 tygodnie i 1 tydzień? Wiem, że to zależy od firmy, ale mam nadzieję, że przekonam się, jak to się robi w całej branży.


title: Jakiś dokument referencyjny /model/implementacja wymuszania zależności/porządkowania zdarzeń w obliczeniach rozproszonych?

text: Na przykład, Proces P nasłuchuje zdarzeń E(A) i E(B), ale aby przetworzyć jedno ze zdarzeń, P potrzebuje również dostępnego drugiego zdarzenia. Naiwnie, gdy P otrzyma jedno ze zdarzeń, sprawdzi, czy drugie zdarzenie zostało już odebrane. Jeśli nie, może poczekać. Ale 1) nie brzmi to zbyt wydajnie, zwłaszcza gdy każdy proces ma wiele różnych typów zdarzeń do przetworzenia. 2) Ponadto, gdy liczba rozproszonych procesów wzrasta do dużej liczby, zdarzenia są bardziej splątane między procesami, procesy umierają / restartują się itp. Wszystko to sprawia, że obsługa zdarzeń jest bardziej skomplikowana. Więc chciałbym wiedzieć, czy istnieją jakieś referencyjne doc / model / implementacje do obsługi zdarzeń w takim rozproszonym środowisku obliczeniowym?


title: Jak ręcznie wykryć zakleszczenia

text: Rozumiem koncepcje impasu wystarczająco dobrze, ale kiedy pojawia się problem taki jak ten poniżej, nie jestem pewien, jak go rozwiązać. Mogę narysować wykres alokacji zasobów, ale nie wiem, jak go stamtąd rozwiązać. Czy istnieje lepszy, bardziej formalny sposób rozwiązania tego problemu? Rozważmy system z pięcioma procesami, od P1 do P5, i pięcioma zasobami, od R1 do R5. Własność zasobów jest następująca. • P1 trzyma R1 i chce R3 • P2 trzyma R2 i chce R1 • P3 trzyma R3 i chce R5 • P4 trzyma R5 i chce R2 • P5 trzyma R4 i chce R2 Czy ten system jest zablokowany? Uzasadnij swoją odpowiedź. Jeśli system jest zakleszczony, wymień zaangażowane procesy.


title: Jeśli zdefiniuję właściwość, aby prototyp pojawił się w konstruktorze obiektu, to dlaczego?

text: Wziąłem przykład z tego pytania nieco zmodyfikowanego: Jaki jest sens metody prototypowej? funkcja pracownik(imię, stanowisko,urodzony) { this.name=name; this.jobtitle=nazwa stanowiska; this.born=urodzony; this.status="single" } worker.prototype.salary=10000000; var fred=nowy pracownik("Fred Flintstone","Jaskiniowiec",1970); konsola.log(fred.wynagrodzenie); fred.wynagrodzenie=20000; console.log(fred.salary) A dane wyjściowe w konsoli są następujące: ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/YfGwp.png) Jaka jest różnica `wynagrodzenie` w konstruktorze ale nadal mogę uzyskać do niego dostęp za pomocą `fred.salary`, jak mogę sprawdzić, czy jest w konstruktorze z kodu, status nadal jest własnością pracownika, jak mogę na przykład stwierdzić, czy `name` jest jednym z pracowników lub został dotknięty przez inicjalizację ? Dlaczego pensja w konstruktorze, skoro nazwisko, stanowisko, urodzone tam, gdzie "dotknęło" go `pracownik("Fred Flintstone","Jaskiniowiec",1970);` «konstruktor»?


title: Przygotowanie do zajęć z informatyki

text: Znam trochę Rubiego, ale nigdy nie mógłbym zrobić niczego wspaniałego, ani nawet dobrego. Po prostu wiem, że interesuję się programowaniem i to właśnie chcę robić. Jaki programista? Brak pomysłu. Będę chodzić do szkoły na informatykę i nie wiem, co powinnam zrobić, aby czuć się bardziej komfortowo na moich zajęciach. Czego powinienem się nauczyć? Jest tyle rzeczy, których nie wiem. Wszystko co wiem to HTML, CSS i trochę Ruby. Nie znam ŻADNEJ Javy ani nie wiem nic o Apache, MySql lub PHP. Chciałbym się nauczyć czegoś, co (mam nadzieję) pomogłoby mi w szkole. Nie chcę zaczynać i utonąć od razu, ponieważ nie rozumiem podstawowych pojęć w **___ _**. <\--- Wszystko związane z CS może zmieścić się w tej przestrzeni. Czego powinienem się nauczyć dalej? Jednym z problemów, z którym się borykam, jest to, że absolutnie NIE mam pojęcia, jakim programistą chcę być. Wiem, że nie chcę programować gier wideo i nie jestem pewien, czy chcę robić web dev (chociaż jestem pewien, że nie wiem wystarczająco, aby naprawdę wiedzieć, CO robić). Czy ktoś może doradzić w niektórych sprawach Powinienem się teraz uczyć, aby się przygotować?


title: Ubezpieczam ręce

text: Jestem inżynierem oprogramowania - oznacza to, że piszę cały dzień. Robiłem trochę obróbki drewna z przyjacielem, a on zauważył, że należy uważać, wypadek, który odciął palec lub więcej, może mieć katastrofalne skutki dla mojej kariery. Jestem pewien, że istnieją obejścia, ale prawdopodobnie nie są one tak wygodne. Czy istnieje możliwość wykupienia ubezpieczenia od urazów rąk lub nadgarstków? Jeśli tak, ile to kosztuje? Poleciłbyś to?


title: Skąd wiesz, co program musi zrobić, aby wykonać dane zadanie?

text: Jestem noobem jeśli chodzi o programowanie. Po prostu znam trochę Rubiego, jeśli chodzi o programowanie, to naprawdę tyle, ale na pewno jest to zainteresowanie. Ucząc się programowania, daję sobie zadania do wykonania, aby lepiej nauczyć się Rubiego, ale stwierdzam, że wiele moich problemów w programowaniu dotyczy tego, jak wykonać zadanie. Na przykład: Podczas pisania sprawdzania SERP (który jest niestety w połowie kompletny, ponieważ nie potrafię czytać PHP) znalazłem skrypt PHP tego, co programowałem. Użyłem go jako swego rodzaju szablonu do napisania mojego kontrolera. (Właściwie nie zamierzam używać mojego kontrolera, tylko zadanie do nauczenia się.) W każdym razie, kiedy badałem PHP, dowiedziałem się, że skrypt robi wiele rzeczy, których bym się po nim nie spodziewał. Nie wiedziałem NIC o tym, jak zdobędę skrypt do wyszukiwania w Google, jak będzie zbierać dane itp. Jak mam się tego nauczyć? Gdybym miał zrobić ten skrypt z szablonu tego gościa, wszystko czego bym się nauczył to jak zrobić skrypt SERP. Ale jak ten facet nauczył się tworzyć scenariusz? Jakie elementy włożyć/wykorzystać? Coś, co przyjaciel znalazł w moim skrypcie (błąd), którego nigdy nawet nie brałem pod uwagę, było związane z różnicami w systemie Windows vs Linux (niestety muszę programować w systemie Windows, dopóki nie podzielę mojego dysku twardego na partycje i nie uderzę tam dystrybucji Linuksa. Jedyny powód, dla którego mam Windows jest dlatego, że cała ta sprawa ze Steam na Linuksie była mistyfikacją.) Miało to związek z nowymi liniami, spacjami lub czymś takim... Nie pamiętam z góry. Skąd miałam wiedzieć o błędzie? Jak złapałbym błąd, gdyby mój znajomy, który jest bardzo doświadczony, nie zwrócił na to uwagi? I naprawdę, najważniejszą częścią mojego pytania jest powyższa część: Skąd mam wiedzieć, jakie elementy* (*jeśli użyję tutaj słowa 'funkcje', obawiam się, że byłoby to pomylone z metodami...) muszę wstawić program w celu wykonania danego zadania?


title: Jak pracodawcy poszukujący programisty widzą stopień Bioinformatyki?

text: Kocham programowanie, ale kocham też biologię. Zasadniczo bioinformatyka brzmi dla mnie zabawnie. Jest jednak spora szansa, że nie dostanę pracy w bioinformatyce i będę zmuszony budować swoją karierę wokół regularnego programowania. W związku z tym pytanie: czy dla pracodawcy ma (duże) znaczenie, jeśli szuka stałego programisty, ale znajdzie dyplom z Bioinformatyki? A może jest to to samo _na dłuższą metę_ co zwykły dyplom z informatyki?


title: Ile AJAX to za dużo?

text: Mój obecny projekt jest częścią silnie powiązanej architektury, z indywidualnymi systemami, z których każdy posiada określone dane i eksponuje je w sposób REST. Zarówno nasze usługi sieciowe, jak i interfejs użytkownika korzystają z tego powiązania, przechowując łącza do zasobów w innych systemach zamiast przechowywania kopii danych i prezentując widoki złożone przez pobranie bieżącego stanu tych zasobów. Na przykład mój system może być odpowiedzialny za księgę pamiątkową ludzi (oczywiście nie używam tutaj naszych prawdziwych danych i relacji). Ludzie są własnością innego systemu i być może mają informacje kontaktowe (adresy e-mail, numery telefonów, uchwyty na Twitterze itp.). Te informacje kontaktowe mogą być przechowywane w innym systemie, który zawiera szczegółowe informacje o numerze telefonu lub adresie e-mail. Aby przedstawić widok w moim interfejsie użytkownika, muszę pobrać własne dane i skorzystać z linków, aby przedstawić odpowiednie szczegóły z tych innych systemów. Mogę buforować niektóre części tych informacji, ale prawdopodobnie chcę pobrać najnowsze szczegóły. Na niektórych moich stronach mam dość małą liczbę wyszukiwań do tego rodzaju wzbogacania danych. Na innych stronach przedstawiam znacznie więcej informacji i kończę eksplozją danych, gdy otrzymuję listę, rozwijam każdy element, rozwijam każdy z nich i tak dalej. Eksperymentowałem z dostarczeniem usługi, która wykonuje tę agregację i zwraca wszystkie dane potrzebne widokowi w jednej odpowiedzi. Nie jestem jednak pewien, czy jest to najczystszy sposób, aby to zapewnić. Czy ktoś może zaproponować jakieś strategie określania, kiedy należy bezpośrednio używać żądań AJAX do pobierania tych danych? W którym momencie powinienem przejść od indywidualnych żądań do świadczenia usług zagregowanych w celu budowania danych? A może jest jakaś inna technika, którą mógłbym zastosować?


title: Zaczynasz od Perla?

text: Jaka jest najlepsza książka dla początkujących Perl? Gdzie nauczyć się Perla od podstaw? Bash/Linux znam tylko na poziomie średniozaawansowanym. Chciałbym nauczyć się Perla, ponieważ ma on tę samą składnię w każdym systemie operacyjnym, w przeciwieństwie do niektórych języków skryptowych powłoki.


title: Użyć modelu do „wszystkiego” w MVC?

text: To pytanie jest wynikiem dyskusji TUTAJ i zostało przeniesione TUTAJ. Czy naprawdę dobrą praktyką jest dostarczanie KAŻDEJ wartości, którą wyświetlasz w dowolnym widoku za pośrednictwem modelu? Zwłaszcza zmienne, takie jak aktualna nazwa użytkownika. Nawet Microsoft odes w swoim domyślnym szablonie dla `_LoginPartial` w ASP.NET MVC 3+: "Hello" + User.Identity.GetUserName() + "!" Myślę, że to jest w porządku, aby nie dostarczać tego za pośrednictwem modelu, ponieważ jest znacznie lepszy w świetle łatwości konserwacji. A może powinieneś przestrzegać "reguł MVC" i dodawać model/pod-model do każdej strony/modelu, aby dostarczać takie rzeczy i przekazywać je w swoich widokach i częściach? **Jak rozwiązujesz takie "problemy" lub jak uważasz, że jest to najlepszy sposób na zrobienie takich rzeczy?** Dziedziczenie byłoby opcją: public class BaseUserModel { public string UserName { get; ustawić; } } Wymagaj, aby każdy model dziedziczył z modelu podstawowego, takiego jak powyżej, zawierającego takie wartości. Ale czy może to powodować problemy, jeśli potrzebujesz/chcesz odziedziczyć inną klasę dla jakiegoś modelu?


title: Czy istnieją liczby, których nie można przedstawić w systemie o podstawie 10, ale można je przedstawić w systemie o podstawie 2?

text: `C#` ma typ `decimal`, który jest używany dla liczb, które wymagają dokładnej reprezentacji w podstawie 10. Na przykład `0.1` nie może być reprezentowane w podstawie 2 (np. `float` i `double`) i zawsze będzie aproksymacją gdy są przechowywane w zmiennych tego typu. Zastanawiałem się, czy odwrotny fakt również jest możliwy. Czy istnieją liczby, które nie są reprezentowane w systemie o podstawie 10, ale mogą być reprezentowane w systemie o podstawie 2 (w takim przypadku do ich obsługi chciałbym użyć zmiennoprzecinkowego zamiast dziesiętnego)?


title: Jaka jest definicja czasu na zadanie?

text: Guru Microsoftu, Eric Brechner, omawia mierzenie „czasu na zadanie” w swojej książce „Hard Code”. Dyskusja pojawia się podczas sekcji Agile - Scrum. Domyślam się, że oznacza to „czas poświęcony na wykonanie zadania X”, ale potem przechodzi do omówienia czasu na zadanie w procentach według zespołu. Więc nie wiem, jak zrobić ten logiczny skok. Czym dokładnie w kontekście Microsoftu jest „czas na zadanie”? * * * Po pierwsze > Codzienne spotkania stand-up w Scrum są wysoce zorganizowane i zbierają przydatne > dane. Organizator zespołu (Scrum Master) po prostu pyta wszystkich członków zespołu > co osiągnęli od wczoraj (i ile czasu to zajęło) [...] Następnie > Śledzenie czasu zajęło to mały wkład mojego zespołu w Scrum w > Microsoft. Dodając te informacje do danych dotyczących spalania (ile pozostało do zrobienia), możesz tworzyć fantastyczne skumulowane diagramy przepływu, mierzyć czas nad zadaniem i pracą w toku oraz lepiej oszacować możliwości zespołu. > Typowy czas na zadanie wynosi około 42% dla zespołów produkcyjnych; 30% dla zespołów > skoncentrowanych na komunikacji - jak moja - i aż 60% dla kolokowanych > zespołów fabularnych.


title: Jakie są ważne czynniki dla projektu tabeli bazy danych i projektu obiektu?

text: Kiedy projektuję tabelę bazy danych, często zastanawiam się, czy powinienem starać się, aby tabela była jak najprostsza, czy też powinnam uczynić obiekt tak przejrzystym, jak to możliwe. Wymogiem jest przechowywanie przez cały miesiąc rocznej sprzedażyTon i zysku brutto. Projektuję z obiektu. Obiekt posiada pola rok, miesiąc, sprzedażTon i zysk brutto. W tej sytuacji, gdy potrzebuję zapisać dane do bazy danych, zapisze ona 12 wierszy (jeden wiersz na miesiąc). Ten obiekt jest powiązany z innym obiektem (klientem). więc po zapisaniu zaoszczędzi n (klient) * 12 wierszy za jednym razem. Zrobi ogromną operację wstawiania. Obawiam się, że to spowalnia db. Innym projektem jest użycie tylko jednego obiektu. Jeden obiekt, by oszczędzić cały rok - nie ma potrzeby dzielenia obiektu na kilka miesięcy. Ale w obiekcie będzie 12*2 pól takich jak(month1_sales_ton, month1_gross_profit, month2_sales_ton, month2_gross_profit.......), ta sytuacja powoduje zapisanie najmniej wierszy, w oparciu o n(klient) na czas. Ale ponieważ druga sytuacja nie ma miesiąca, nie mogę napisać popularnej metody, gdy chcę wyszukać roczny zysk brutto z jednego miesiąca, który akceptuje parametry rok, miesiąc. Może powinienem po prostu napisać metodę, aby po prostu minąć rok i uzyskać cały obiekt roczny? Nie wiem. Więc jaką zasadą powinienem się kierować przy projektowaniu stołu?


title: Kiedy w .NET (Visual Studio) tworzysz nowy zestaw?

text: Pracuję nad aplikacją Silverlight. Podzieliłem to na kilka zestawów: * Domena * Repozytoria (wszystko z utrzymywaniem w bazie danych Sterlinga) * UI * ... Tak się tego nauczyłem, ale zastanawiałem się. Jeśli wiesz, że biblioteki DLL nie będą ponownie używane, czy konieczne jest ich dzielenie? A może możesz umieścić wszystko w jednym zestawie i użyć folderów i przestrzeni nazw, aby utrzymać porządek? Widziałem też projekty, które mają zbyt wiele złożeń. Zamiast używać przestrzeni nazw tam, gdzie byłoby to właściwe. A więc: kiedy tworzysz nowy zestaw dla jakiegoś nowego kawałka kodu? Jakieś dobre materiały na ten temat? Czy dzielicie kod technicznie (domena, dane, interfejs użytkownika itp.) i/lub funkcjonalnie (tj. administracja pacjentem, pacjent medyczny, szpitalna logistyka, ... - prawdopodobnie tylko dla większych aplikacji na poziomie korporacyjnym)?


title: Czy należy wersjonować aplikacje internetowe?

text: Niedawno rozmawiałem ze współpracownikiem na temat wersjonowania aplikacji internetowych. Myślę, że w ogóle tego nie potrzebujesz, a jeśli chcesz tylko sprawdzić, czy twoje najnowsze wydanie jest na żywo, myślę, że data (RRMMDD) jest prawdopodobnie wystarczająco dobra. Czy jestem poza bazą? Czy brakuje mi sedna? Czy powinienem używać numerów wersji aplikacji internetowych?


title: Abstrakcyjna kolejka zdarzeń do komunikacji GUI/modelu

text: Mam nadzieję, że nie jest to tak ogólne pytanie, jak „dyskusja”. Piszę symulację starego (ok. 1960) komputera i zastanawiam się nad kolejkowaniem zdarzeń z GUI do „modelu” procesora. GUI składa się z przycisków chwilowych (przycisków i klawiszy maszyny do pisania) oraz przełączników. Oczywiście nie chcę blokować ani GUI, ani wątku procesora. Kiedy myślę o różnego rodzaju zdarzeniach, zdaję sobie sprawę, że **(a)** niektóre nie powinny być replikowane w kolejce, **(b)** niektóre powinny być „przyspieszone” – tj. wysłane do głowy kolejki, a **(c)** niektóre powinny być po prostu ignorowane pod pewnymi warunkami. Wtedy zdałem sobie sprawę, że prawdopodobnie próbuję rozwiązać stary problem. Niewątpliwie inni napotkali podobne wymagania, próbując zaprojektować kolejkę zdarzeń GUI-do-modelu. Zastanawiałem się więc - czy jakaś genialna osoba wyabstrahowała wymagania _dowolnego_ GUI do modelowania systemu przekazywania zdarzeń, być może przewidując jakąś funkcjonalność, o której jeszcze nawet nie pomyślałem? Koduję w Javie, ale sam zaimplementowałbym kolejkę i kolejkowanie - a ponadto wątpię, czy jest coś specyficznego dla Javy w tym problemie.


title: Jak uzyskać lepsze warunki pracy?

text: Pracuję w firmie, która zajmuje się oprogramowaniem i produkcją. Oprogramowanie, które piszemy, jest sprzedawane jako pakiet wraz z innym sprzętem zakupionym przez naszych klientów. Zasadniczo pracuję w magazynie. Są jedne drzwi, które oddzielają inżynierów od zgiełku magazynu. Poprosiłem o wstawienie ścian tłumiących hałas. Wielokrotnie w ciągu 6 miesięcy prosiłem o przeniesienie do jednego z dwóch wolnych biur sprzedaży, ale wydaje się, że niechętnie pozwalają Inżynierowi przenieść się do biura sprzedaży. W rzeczywistości tylko sprzedający mają okna i otrzymują prowizję, mimo że popełniają błędy lub przesadzają z klientem. Więc moje pytanie brzmi: jak mogę uzyskać lepsze warunki pracy bez konieczności odchodzenia z obecnej pracy? Bardzo ciężko jest pracować i koncentrować się. **AKTUALIZACJA** Myślę, że wreszcie mogę zamknąć ten rozdział w moim życiu. Przeniosłem się do dużej korporacji, która wiernie podąża za CMMI, a nawet zacząłem używać Agile w wielu swoich projektach. Niemniej jednak istnieje organizacja, szacunek i szczera troska o inżynierów i naukowców, którzy dla nich pracują. Pierre miał rację – rzucenie palenia było właściwą odpowiedzią. Moje życie nie jest tak stresujące, jak kiedyś, ponieważ teraz pracuję w miejscu, które jest zorganizowane i wie, czego oczekuje od swoich inżynierów, jednocześnie traktując ich tak, jak powinni być traktowani.


title: Styl kodowania parametrów prywatnej metody OOP

text: Po wielu latach kodowania jako programista solowy, doszedłem do wniosku, że przez większość czasu istnieje wiele korzyści z pisania prywatnych funkcji składowych ze wszystkimi używanymi zmiennymi składowymi zawartymi na liście parametrów, zwłaszcza na etapie rozwoju. Dzięki temu mogę jednym spojrzeniem sprawdzić, jakie zmienne składowe są używane, a także podać inne wartości do testów i debugowania. Ponadto zmiana kodu przez usunięcie określonej zmiennej składowej może przerwać wiele funkcji. Jednak w tym przypadku funkcja prywatna pozostaje izolowana, jeśli nadal mogę ją wywołać przy użyciu innych wartości bez naprawiania funkcji. Czy to w końcu zły pomysł, zwłaszcza w środowisku zespołowym? Czy jest to zbyteczne lub mylące, czy są lepsze sposoby?