Może zdarzyć się tak, że jedno żądanie zostanie wysłane do usługi kilka razy. Fajnie więc by było zabezpieczyć system przed taką ewentualnością. W nagłówku każdego żądania przekazywany jest unikalny identyfikator żądania. W momencie walidacji nagłówka system sprawdza identyfikator z pomocą jedno-instancjowego obiektu SafeContainer. Każdy identyfikator przechowywany jest w kontenerze prze n-minut. Po upływie tego czasu usuwane są "stare" identyfikatory. Jak na razie nie znalazłem sensowniejszego rozwiązan...
Programowanie rozproszone 5213 dni, 12 godzin, 52 minuty temu 61 źrodło rozwiń
Dziś krotki wpis na temat wielojęzycznych stron. Będę opierał się na plikach .resx. Mechanizm jest wbudowany w sama platformę net ale opisze co i jak rozwiązałem w praktyce. ResourceHelper Jest to nasz obiekt pomocniczy ułatwiający pobieranie wartości z plików .resx. Jest rownież odpowiedzialny za inicjalizacje ResourceManagera czyli głównego obiektu od strony platformy .NET który pozwala zarządzać zasobami. Sama klasa nie jest skomplikowana. Oprócz metody inicjalizujacej posiada tylko jedna metodę kt...
Autor: Dotychczas myślałem, że LINQ dopuszcza stosowanie zapytań tylko i wyłącznie w formie SQL-podobnej, tzn: view sourceprint?1 var zmienna = from x in y select x; Doczytałem dzisiaj jednak, że jest to jedna z dwóch metod umożliwiających konstruowanie zapytań do bazy danych. Ta znana mi metoda to tzw. składnia zapytań. Druga, którą kojarzyłem, ale nie wiedziałem, że jest alternatywą, to tzw. składnia lambda. Żeby nie zanudzać teorią przedstawiam poniżej przykład tego samego zapytania napisanego na d...
Bazy danych i XML 5213 dni, 23 godziny, 33 minuty temu 252 źrodło rozwiń
Autor: Dziś, po kilku dniach szukania i testowania różnych narzędzi, udało mi się usiaść do kodowania, postanowiłem się zabrać za pierwszy punkt moich założeń, czyli za InputProvidery. Ich zadaniem będzie przechwytywanie zdarzeń z różnych wejść (kliknięć myszy, TUIO) i promowanie ich do zdarzeń Windows Touch. Chcę stworzyć następujące providery:Dla pojedynczej myszy, tak n...
Dzisiaj kilka słów na temat testowania kodu wykorzystującego NHibernate/Fluent NHibernate. Po stworzeniu modelu, mapowań Fluent NHibernate i wygenerowaniu bazy danych czas sprawdzić, czy ma to szansę działać. Będę testował kod mapowań, ale nic nie stoi na przeszkodzie, żeby wykorzystać ten sam kod (tworzenie sesji i budowanie schematu bazy danych) później, przy testowaniu kodu obiektów typu DAO/Repository (wykorzystujących ISession i/lub IStatelessSession z NHibernate). Żeby przeprowadzić testy będę potr...
Bazy danych i XML 5214 dni, 12 godzin, 22 minuty temu 65 źrodło rozwiń
Dziś chciałbym opisać kolejny wzorzec/mechanizm który będę używal i ma on na celu znaczne uproszczenie kodowania i eliminowanie niepotrzebnych powiązań miedzy obiektami. Event Aggregator Jak już wcześniej wspomniałem ten wzorzec/mechanizm ma na celu eliminowanie niepotrzebnych powiązań miedzy obiektami. Stanowi on pojedyncze źródło dla wielu obiektów. W najprostszej formie wygląda to tak że rejestrujemy klasy które dotyczą konkretnego zdarzenia do naszego event aggregatora. Te klasy nazywają się uchwyt...
Architektura 5214 dni, 12 godzin, 22 minuty temu 267 źrodło rozwiń
PasswordBox jak łatwo się domyślić jest standardową kontrolką WPF dzięki której użytkownik otrzymuje zamaskowane pole tekstowe do wpisywanie haseł itp. Kontrolka spisuje się wyśmienicie do czasu gdy przy budowaniu aplikacji nie wykorzystywany jest wzorzec MVVM (i inne pokrewne Model-View-* oparte o bindowaniu). Powód jest bardzo prosty. Ze względów bezpieczeństwa właściwość Password kontrolki nie jest uznawana jako Dependency Property co uniemożliwia bindowanie. Panowie z MS dokonali akurat takiego wybor...
Autor: Jakiś czas temu napisałem krótki wstęp do mechanizmów zwanych kontrolerami. Pora omówić je troszkę szerzej, gdyż zacząłem wdrażać w projekt tzw. operacje CRUD (ang. Create, Read, Update, Delete), a do ich zrozumienia niezbędna jest większa wiedza dotycząca klasy Controller.
Dzisiaj opiszę sposób na przewidywanie kursów walut. Kursy średnie NBP znajdują się na stronie http://rss.nbp.pl/kursy/TabelaA.xml. Na nowy symulator z kilkoma drobnymi poprawkami tutaj: http://hopfieldsimulator.codeplex.com/releases/view/50771. Po zainstalowaniu tej wersji możemy uruchomić symulator i przejść na zakładkę Predictor. Następnie możemy wprowadzić parametry pracy symulatora np. takie: d = 50000, eta = 0.7, n1 = 5, n2 =...
W dzisiejszym wpisie chciałbym rozwinąć temat, który zacząłem we wpisie na temat reguły prawej ręki (lub reguły zegara). Do napisania tego wpisu zainspirował mnie komentarz pod wspomnianym wpisem: „Bardzo ciekawe opisanie backface cullingu, nigdy bym nie wpadł by tak to wyjaśnić :)” Otóż moim celem nie było wtedy opisanie „backface cullingu”, a jedynie wskazanie, w jakiej kolejności podawać krawędzie, by płaszczyzna na scenie była widoczna. Zobaczmy jednak, cóż to jest ten „backface culling”?
Dzisiaj opiszę sposób, jaki zastosowałem by przechwycić pierwszy wyjątek. Czasem w aplikacji czegoś nie przewidzimy i wyleci nam na wyjątku, dobrze wtedy zalogować ten fakt w jakimś pliku tekstowym lub e dzienniku systemu Windows. Należy też przekazać informację użytkownikowi, aby mógł w razie problemu skopiować komunikat z wyjątku i stos wywołań abyśmy wiedzieli gdzie aplikacja wyleciała. Nowy instalator z tą funkcjonalnoś...
W poprzednich postach pokazałem jak tworzyć asynchroniczne formularze. Nie zawsze jednak chcemy wywoływać takie zapytania za pomocą przycisku Submit. Czasami lepiej użyć linku tekstowego lub po prostu obrazka. Ajaxowy link tekstowy bardzo łatwo utworzyć za pomocą metody ActionLink:
MSChart jest biblioteką do generowania diagramów zarówno w aplikacjach ASP.NET jak i Windows Forms. Tutaj znajdziecie maaaasę przkładów jak można wykorzystać kontrolki i co za pomocą nich można zrobić. Ja nie bawiłem się kontrolkami dla Windows Forms – nawet nie wiem czy się różnią od kontrolek dla ASP.NET. Post dotyczy stricte wykorzystania MSCharts w ASP.NET.
XMPP, Real Time Web i … .NET Czym jest XMPP ? Extensible Messaging and Presence Protocol a.ka. Jabber to otwarty protokół oparty o XML pozwalający na wymianę informacji w czasie (prawie)rzeczywistym.
Architektura 5216 dni, 8 godzin, 50 minut temu 36 źrodło rozwiń
Autor: Jakiś czas temu przeprosiłem się z frameworkiem MsTest i zacząłem na powrót pisać testy z jego wykorzystaniem. Przedtem korzystałem z NUnit, jednak doszedłem do wniosku, że do moich potrzeb wystarczy framework dostarczony w komplecie z Visual Studio. Nie jestem zealotem jeżeli chodzi o testy jednostkowe, piszę proste, wybiórcze testy, którymi na pewno nie pokrywam 100% kodu. Czytałem na kilku stronach narzekania na framework MsTest. Jednak podchodziłem do nich dość sceptycznie. Wiadomo, pro...
Zastanawiałeś się kiedyś jak działa czat w gmail’u lub na facebook’u, wysyłanie i odbieranie wiadomości w czasie rzeczywistym, zmiany statusu znajomych widoczne niemalże od razu itd?. Zasada działania tego typu rozwiązań opiera się o technikę zwaną COMET, znaną też pod nazwami PUSH AJAX i REVERSE AJAX. Zacznijmy jednak od początku. Przyjrzymy się teraz jak wygląda in...
Przeklikaj swój świat! – kontrola zdarzeń myszki Myszka – z pozoru urządzenie, które bez ludzkiej ręki nie jest w stanie nic zrobić. Błąd! Istnieje możliwość nadania jej “życia” poprzez wywoływanie odpowiednich zdarzeń z kodu aplikacji. Aby to osiągnąć przydatne może być wykorzystanie poniższego helpera, a właściwie szablonu helpera, który można w łatwy sposób rozszerzyć o kolejne metody.
Autor: W niniejszym post'cie chciałbym wspomnieć o ważnej rzeczy, jeżeli chodzi o WPF i grafikę 3D. O mały włos o niej bym zapomniał, w poprzednich wpisach (1, 2) nic na ten temat nie wspominałam, a mianowicie chodzi mi o „Regułę prawej dłoni”! A cóż tu więc chodzi? Mianowicie chodzi tutaj o to, że trójkąty należące do sceny „mają stronę widoczną i niewidoczną”. Podając kolejne punkty trójkąta, który chcemy wyświetlić, musimy podać je w takiej kolejności, by normalna dla płaszczyzny, którą te punkty ...
Witam, w zeszłym tygodniu dodałem do symulatora Predykator, w celu sprawdzenia jak działa należy przejść pobrać nowy instalator dostępny tutaj: http://hopfieldsimulator.codeplex.com/releases/view/50597 Po odinstalowaniu poprzedniej wersji należy zainstalować tą. Na pulpicie pojawi się skrót do aplikacji „Hopfield Simulator”. Trzeba ją uruchomić i przejść na zakładkę „Predictor” następnie możemy określić parametry dla przykładu niech będą takie: d = 30, eta = 0.7, n1 = 6 i n2 = 20.P...
Kurcze nie lubię słów inkrementacja/dekrementacja po polsku, zresztą chyba naprawdę nie istnieją w słowniku języka polskiego, jednak ich znaczenie chyba każdy z nas rozumie, chodzi oczywiście o operatory ++ i -- dostępne w C# (i nie tylko).