W tym wpisie postaram się krótko przedstawić blok bezpieczeństwa (Security Block) z biblioteki Microsoft Enterprise Library. Biblioteki tej użyjemy do sprawdzania rol i reguł dostępu do funkcji serwisu WCF. Najpierw oczywiście musimy pobrać bibliotekę Microsoft Enterprise Library, znajduje się ona pod tym adresem. http://www.microsoft.com/download/en/details.aspx?id=15104. Biblioteka ta jest również dostępna z poziomu NuGeta, jednakże instalacja poprzez ten plugin dorzuca do projektu tylko dll-ki. W p...
W poprzednim wpisie przedstawiłem w jaki sposób zaimplementować mechanizm logowania po stronie serwera. Wykorzystałem do tego celu WCF RIA oraz znane z ASP MembershipProvidery. Tym razem przedstawię jak wymusić logowanie po stronie klienta, oraz w jaki sposób można dynamicznie zmieniać providerów, którzy walidują usera. Poprzednim razem stworzyliśmy już szkielet aplikacji, zatem mamy projekt klienta oraz projekt serwera. Zacznijmy od "włączenia" FormsAuthentication po stronie klienta. W pliku App.xaml.c...
Silverlight 4033 dni, 8 godzin, 51 minut temu 47 źrodło rozwiń
W dzisiejszym wpisie postaram się przedstawić moją koncepcję logowania do aplikacji Silverlightowej z wykorzystaniem MembershipProviders oraz własnego AuthenticationService. Zacznijmy od stworzenia bazy danych, w której będziemy przetrzymywać informacje o użytkownikach - hasła, role itp. Bazę danych stworzymy przy użyciu narzędzia aspnetregsql.exe, które to wygeneruje schemat bazy danych dostosowany do możliwości SqlMembershipProvider-a. aspnetregsql.exe znajduje się w katalogu C:\WINDOWS\Microsoft.NET...
Silverlight 4033 dni, 8 godzin, 51 minut temu 127 źrodło rozwiń
Wiele osób z pewnością kojarzy pliki PDB, przynajmniej z nazwy. Myślę, jednak, że w praktyce mało kto zdaje sobie sprawę co one zawierają i kiedy mogą się przydać programiście. W poście zatem chciałbym przybliżyć praktyczne korzyści z używania Program Database Files. Z pewnością PDB kojarzy się z debuggowaniem i niestety z czymś niepotrzebnym w środowisku produkcyjnym – co jak się okaże jest nieprawdą! Zacznijmy od wprowadzenia teoretycznego, PDB dla .NET zawiera:Nazwy plików z kodem źródłowym.Nazwy lo...
Niniejszy post jest kontynuacją cyklu o Reactive Extensions dla .NET ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5], [RX 6], [RX 7], [RX 8]), dotyczyć on będzie możliwości wykorzystania LINQ na obserwowalnych kolekcjach i w RX. W uproszczeniu Language INtegrated Query (LINQ) to część technologii .NET i umożliwia zadawanie pytań na obiektach, a składnia LINQ przypomina trochę SQL (patrz Wikipedia). Cechą charakterystyczną LINQ jest to, że operuje ona na dowolnych kolekcjach oferujących iterator (czyli operuje n...
Programowanie rozproszone 4036 dni, 5 godzin, 44 minuty temu 85 źrodło rozwiń
W C# 3.0 wprowadzono nowy typ inicjalizacji pól klas, przykład:class SampleClass { publicint X { get; set; } publicint Y { get; set; } } SampleClass sampleClass =null; try { sampleClass =new SampleClass {X =5, Y =10}; } catch (Exception) { } int y = sampleClass.Y; Przed c# 3.0 programiści zwykle używali następującej konstrukcji:SampleClass sampleClass =null; try { sampleClass=new SampleClass(); sampleClass.X =5; sampleClass.Y =10; } catch (Exception) { } int y = samp...
W ramach kontynuacji cyklu o Reactive Extensions dla .NET ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5], [RX 6], [RX 7]) chciałbym przejść teraz do zdarzeń, dla których Rx dostarcza szczególnego wsparcia. Programowanie reaktywne, to również wykorzystanie zdarzeń (z j. ang. event), do których podłączamy się, przekazując delegat do funkcji, która ma obsłużyć zdarzenie (z j. ang. event handler), następnie czekamy na nachodzące zdarzenia. Dla przykładu rozważmy obsługę zdarzeń związanych z ruchem myszy. Wyobraźmy ...
Programowanie rozproszone 4038 dni, 23 godziny temu 212 źrodło rozwiń
Dzisiaj prosta i częsta sprawa – obsługa zdarzeń. Zdefiniujmy fikcyjne zdarzenie:class SampleClass { publicevent EventHandler EventHappened; } Następnie mamy jakąś metodę, która po wykonaniu własnej logiki, wywołuje zdarzenie. Jak powinno to zostać prawidłowo wykonane? Zacznijmy od niepoprawnego podejścia:class SampleClass { publicevent EventHandler EventHappened; privatevoid Method() { EventHappened(this,new EventArgs()); } } Metoda spowoduje wyjątek jeśli żadne z...
Dziś krótko. W ramach kontynuacji artykułu o Reactive Extensions dla .NET ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5], [RX 6]) chciałbym wrócić znów do obserwowalnych kolekcji i źródeł, na podstawie których one powstają. Przecież nie zawsze powstaną one ze "zwykłej" kolekcji i zwykle nie jest wiadome, jakie dane one zawierają. Reactive Extension (RX) wyróżnia dwa typy źródeł danych, na podstawie których może powstać obserwowalna kolekcja. Są to źródła zimne i ciepłe (z j. ang. cold i hot). Źródła "zimne" s...
Programowanie rozproszone 4039 dni, 23 godziny, 8 minut temu 101 źrodło rozwiń
autor: Nowy rok za nami, pora na mały noworoczny prezent. W mojej bibliotece znajduje się kilka książek, które zostały wybrane przez moją drugą połówkę jako „coś co zagraca mieszkanie w którym nie ma miejsca na moje książki” :) Dlatego też przez najbliższe kilka tygodni będę starał się oddać wszystkie te książki, które zostały wybrane/wskazane itp. itd.. Zasady ich oddania są banalnie proste...
Czy kiedykolwiek zdarzyło się Wam spotkać z aplikacją, która podczas przetwarzania jakiś bardziej złożonych i czasochłonnych operacji, swoje okno w sposób, który skutecznie blokował Waszą pracę? Czy nie zdarzało się Wam również w takich sytuacjach ujrzeć pełny optymizmu napis Brak odpowiedzi? Podejrzewam że każdy z Was, przynajmniej raz spotkał się z taką sytuacją. Być może część z Was przeklinała system operacyjny, choć w istocie to nie była do końca jego zasługa. Bardziej winny w takiej sytuacji był...
Architektura 4040 dni, 8 godzin, 16 minut temu 135 źrodło rozwiń
Chciałbyś przetestować Rails? Nie chcesz instalować u siebie całego środowiska, a może utworzyłeś pierwszą aplikację ‘Hello world’ w Rails nie nie wiesz gdzie ją przetestować?
Używając LINQ należy pamiętać o takiej właściwości tego języka zapytań jak opóźnione wywoływanie (Diferred Execution). Polega to na tym, iż zapytanie jest wywoływanie dopiero wtedy, gdy jest to rzeczywiście potrzebne. Najczęściej dzieje się podczas wowoływania metody, która sprawdza całą kolekcje, którą przeszukujemy, takimi metodami są np. Count() ToList() Każda z tych metod, aby zwrócic wynik musi sprawdzić całą kolek...
Na początku stwórzmy strukturę z konstruktorem przyjmującym dwa parametry:publicstruct SampleStruct { public SampleStruct(int x, int y) { _x = x; _y = y; } privateint _x, _y; } Czy powyższy kod jest prawidłowy? Tak, skompiluje się i będzie działał bez problemów. Zdefiniujmy więc domyślny konstruktor:publicstruct SampleStruct { public SampleStruct() { _x = _y =0; } public SampleStruct(int x, int y) { _x = x; _y = y; ...
autor: W poprzednich częściach ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5]) artykułu o Reactive Extensions dla .NET pojawiło się już dość sporo teorii, ale raczej mało przykładów, w tym wpisie chciałbym się skupić właśnie na przykładach bazujących na zdobytej uprzednio wiedzy. Zacznijmy od zastanowienia się nad prostymi subskrypcjami. W przykładzie z wpisu pt.: "[RX 3] Reactive Extensions pierwszy kontakt z kodem", zasubskrybowaliśmy obiekt typu IObservable (funkcją Subscribe) i jako parametr przekazane zost...
Programowanie rozproszone 4043 dni, 18 godzin, 20 minut temu 95 źrodło rozwiń
W komentarzu do poprzedniego posta Bartosz napisał, że według niego nowo utworzony obiekt z wynullowanymi polami nie zawsze jest błędem i czasami może mieć sens. Nie zgadzam się z tym zupełnie. Powiem więcej: wg mnie, w językach wysokiego poziomu (chodzi mi o takie, gdzie już nie musimy ręcznie alokować i zwalniać pamięci) wartość null nie ma w ogóle racji bytu! ...
Architektura 4045 dni, 2 godziny, 31 minut temu 403 źrodło rozwiń
Ostatnimi czasy (tuż przed świętami) stwierdziłem że .Net oferuje dosyć ubogie wsparcie dla struktur drzewiastych. Ponieważ miałem konieczność dokonywania operacji Wspieranych przez Linq naturalnym pomysłem było napisanie operacji wspierających iterowanie po drzewie (takiej małej małpki). W ramach tego artykułu opisuję co udało mi się osiągnąć. Nieprzyzwyczajonych do mojej formy wypowiedzi przepraszam za to że "Ten wykwit werbalnej weny wyrodził się w wielomówność" i zapraszam do lektury samego artykułu.
Architektura 4045 dni, 2 godziny, 31 minut temu 210 źrodło rozwiń
Tak jak pisałem we wcześniejszych częściach ([RX 1], [RX 2], [RX 3], [RX 4]), Reactive Extensions dla .NET oferują mnóstwo pomocniczych rozszerzeń pozwalających na proste tworzenie obserwowalnych kolekcji. Przyjrzyjmy się tym najbardziej podstawowym. Najprymitywniejsze kolekcje obserwowalne Poniższa tabela przedstawia najprymitywniejsze (lub inaczej najprostsze) kolekcje obserwowalne. Dla każdego przykładu oprócz funkcji generującej obserwowalną kolekcję, podano również odpowiednik w postaci kolekcj...
Niedawno był wpis o naprawdę wspaniałym edytorze jakim jest Sublime Text 2. Wtedy postarałem się przedstawić sporo użyteczności i ciekawostek jakie do tego czasu udało mi się zlokalizować/poznać. Dziś ciąg dalszy nowości (tak na “gorąco” bym rzekł), które poznałem w ostatnim czasie, a które wydają się naprawdę fenomenalne. W szczególności dla programistów ;]
W zeszłym poście pisałem o strukturach w c#. Jednym z ważnych efektów ubocznych jest boxing oraz unboxing. Jak wiemy z poprzedniego wpisu struktury przechowywane są na stosie a klasy na stercie. Boxing to niż innego jak wrapping struktury (lub jakiekolwiek innego typu wartościowego) w obiekt przechowywany na stercie. Na przykład:int value=0; object boxedValue=value; // boxing Zmienna value przechowywana jest na stosie, z kolei boxedValue na stercie (pamiętajmy o nagłówku oraz GC). Należy zwrócić szcz...