Instalacja MVVM Light Toolkit Właściwie jedyne co jest niezbędne do pracy z MVVM LT, to same biblioteki w formie plików DLL, jednak aby naprawdę wygodnie korzystać z tego narzędzia dobrze jest skorzystać z małych wspomagaczy przygotowanych przez autora. Pobieramy paczkę stąd i następnie wypakowujemy to co nam potrzeba. Jest tego całkiem sporo, ponieważ przygotowane są wersje zależne od wykorzystywanej technologii i oprogramowania: binarki - biblioteki w postaci plików DLL w postaciach przygotowanych dla...
Architektura 3816 dni, 3 godziny, 4 minuty temu 413 źrodło rozwiń
Deus ex adfectus machina – menedżer stanów Skąd taki tytuł? Deus ex machina (łac.) – Bóg z maszyny adfectus (łac.) – stan Za Eurypisesem wprowadzę do Theme Festival coś, co szybko rozwiąże problem zarządzaniem grą, „aby akcja nie trwała zbyt długo” (za Wikipedią). Ten wpis poświęcę koncepcji menedżera stanów, „Boga z maszyny stanów”. O co tu chodzi? Całą grę należy wyobrazić sobie jako graf przejść między stanami. Stanem gry może być wszystko, od menu, przez okno opcji, po różne etapy rozgrywki. Przej...
Architektura 3818 dni, 14 godzin, 43 minuty temu 32 źrodło rozwiń
Na naszym blogu opisujemy na bieżąco proces tworzenia pewnego projektu. Proces ten jest oparty o metodologie z rodziny Agile, a jego poszczególne elementy przedstawiamy w kolejnych wpisach. Możliwe jednak, że stronę tą odwiedzą również osoby, które nigdy wcześniej nie słyszały o czymś takim, jak Agile. Ten wpis jest adresowany głównie do nich.
Architektura 3818 dni, 14 godzin, 43 minuty temu 103 źrodło rozwiń
Korzystając z wzorca MVVM cały czas skupiamy się na zachowaniu koncepcji czyli wszelkiego rodzaju logika biznesowa udostępniana jest widokowi poprzez ViewModel. Z drugiej strony nasz widok (View) powinien składać się tylko ze znaczników XAML. W sieci można znaleźć mnóstwo video tutoriali gdzie oglądając odnosimy wrażenie, że punktem honoru prelegenta jest pokazanie w pełni działającej aplikacji przy zachowaniu czystego CodeBehind. Ostatnio jednak uświadomiłem sobie (a raczej wymaganie biznesowe postaw...
Architektura 3821 dni, 8 godzin, 23 minuty temu 167 źrodło rozwiń
Problem oprogramowania, które ulega degradacji dotyczy w głównej mierze projektów, w których zapomina się, iż żyjemy w świecie zmieniających się wymagań, a naszym zadaniem jest tworzenie oprogramowania, które będzie potrafiło te zmiany przetrwać. Tak jest! Wymagania zawsze się zmieniają więc powinno to być jedno z priorytetowych założeń każdego projektu. Będąc świadomym tego stanu rzeczy, należy każdorazowo stosować określony zbiór praktyk, przyczyniających się do uelastycznienia projektu.
Architektura 3823 dni, 8 godzin temu 123 źrodło rozwiń
W poprzedniej odsłonie pokazałem jak skorzystać z właściwości SqlDataAdapter do pobrania danych z bazy oraz ich wstawienia. Może się zdarzyć jednak tak, że przed dokonaniem aktualizacji danych w bazie chcemy wykonać na nich pewne operacje, jak np. wstawienie wielu wierszy. Jednocześnie miło byłoby zachować kontrolę nad wstawianymi danymi z poziomu aplikacji. Jedną z informacji przydatnych przy tej operacji...
Architektura 3823 dni, 8 godzin temu 44 źrodło rozwiń
Autor: W poprzedni wpisie przedstawiłem podstawową koncepcję wzorca projektowego MVVM oraz pokazałem jak złączyć widok (View), będący graficzną reprezentacją naszej logiki biznesowej wraz modelem (Model) przy wykorzystaniu klasy pośredniczącej (ViewModel). Brakującym elementem w przedstawionym przykładzie była implementacja zdarzeń jakie oferują nam kontrolki. Z pomocą przychodzi nam wzorzec projektowy Command, który doczekał się swojej implenetacji w Silverlight 4. Ogólna koncepcja działania polega ...
Architektura 3825 dni, 20 godzin, 46 minut temu 327 źrodło rozwiń
Architektura trójwarstwowa jest chyba najlepiej znaną implementacją wzorca warstw w architekturze aplikacji. Z mojego doświadczenia wynika jednak, że znajomość ta zwykle jest bardzo powierzchowna i nie sięga wgłąb (warstw;-)). Porzućmy więc na chwilę CQRS, DDD i inne fajne akronimy i wróćmy “do korzeni”. Co to jest architektura trójwarstwowa?Definicja Sama jej nazwa w języku polskim jest problematyczna. Angielska terminologia rozróżnia dwa ich rodzaje: tiers to wa...
Architektura 3828 dni, 5 godzin, 21 minut temu 161 źrodło rozwiń
Konwersja Enum do List. Zawsze zapominam jak to się robi a to tak prosta sprawa. IList listDayOfWeek = new List(); var dic = Enum.GetValues(typeof(DayOfWeek)) //pobiera wszystkie wartości z danego typu as IEnumerable; //!! najważniejszy punkt programu // a teraz dodajmy warunek że nasza lista ma być.. np bez niedzieli listDayOfWeek = dic.Where(d=>d!= DayOfWeek.Sunday).ToList();
Architektura 3832 dni, 20 godzin, 10 minut temu 118 źrodło rozwiń
Publikując artykuł na temat "małych" i "dużych" byłem ciekawy opinii innych ludzi z branży. Pierwszy odzew otrzymałem od kolegi ze studiów Marka Kozłowskiego i za jego zgodą przedstawiam go poniżej. Marek po przeczytaniu postu wyraził zdziwienie, że taki temat w ogóle pojawił się w rozmowie, a rozbicie kodu na podprojekty jest dla niego czymś naturalnym i oczywistym. Stwierdził również, że nie wyobraża sobie pracy z jednym dużym projektem (Aspekt psychologiczny), na który składa się na przykład 100 p...
Architektura 3832 dni, 20 godzin, 10 minut temu 78 źrodło rozwiń
F# często przedstawiany jest jako "multi-paradigm", tak więc w swojej funkcyjnej naturze pozwala również na programowanie zorientowane obiektowo. Abstrakcję OOP realizują m. in. interfejsy i klasy abstrakcyjne, które są podobne do tych w C#. Składowe interfejsów i klas abstrakcyjnych (klasa abstrakcyjna jest dodatkowo opatrzona atrybutem typu) są deklarowane przy pomocy nazwy i następującego po niej typu składowej (ponieważ funkcja w FP jest rodzajem typu złożonego, tak więc składowa posiada swój typ, a ...
Architektura 3836 dni, 8 godzin, 23 minuty temu 38 źrodło rozwiń
W .NET mamy do dyspozycji wygodny mechanizm do zapisywania ustawień aplikacji. Nie będę tutaj opisywać podstaw obsługi tego mechanizmu. Osoby niezaznajomione z tym mechanizmem odsyłam do dokumentacji. W tym wpisie skupię się na stworzeniu własnego dostawcy ustawień. Domyślnym i jedynym standardowo dostępnym dostawcą, który zajmuje się zapisem ustawień jest LocalFileSettingsProvider. Dostawca ten zapisuje pliki do lokalnego katalogu u...
Architektura 3836 dni, 18 godzin, 42 minuty temu 33 źrodło rozwiń
Jakiś czas temu obiecałem jakiegoś sampla z MVVM i słowa dotrzymałem. Dziś wrzucam pierwszą część – opis założeń i warstwa modelu. I nie będzie to kolejny przykład na klasie User, tylko kompletny i gotowy do użycia komponent – wirtualna klawiatura obsługująca wielodotyk – efekt ostatnich dwóch dni pracy (i jeszcze pewnie dwóch kolejnych ...
Architektura 3838 dni, 6 godzin, 20 minut temu 127 źrodło rozwiń
Małymi kroczkami, dotarłem do miejsca, w którym czas złapać za klawiaturę i zacząć pisać kod. Plan działania (pierwsza pięciolatka) wygląda następująco: import i parsowanie danych ze strony sejmu, obliczanie różnych statystyk na podstawie zgromadzonych danych, warstwę dostępu do bazy danych i UI w formie strony internetowej. Uszeregowałem sobie zadania od najtrudniejszego do najłatwiejszego, przynajmniej teoretycznie. Na pierwszy ogień idzie import i parsowanie danych ze strony sejmu. Fasadę procesu impo...
Architektura 3839 dni, 8 godzin, 16 minut temu 44 źrodło rozwiń
Zastanawiałem się nad strukturą programu, może po prostu zrobić to tak jak wszystkie projekty na zaliczenie, czyli na odpierdol, byle działało. Ale nie, to w końcu praca dyplomowa, trzeba być poważnym, poza tym chcę się nauczyć czegoś nowego, dodam do założeń nowy punkt: „W łatwy sposób będzie można zmienić wygląd aplikacji, bez konieczności ingerowania w kod (logikę).” Czyli krótko mówiąc trzeba zastosowa...
Architektura 3840 dni, 22 godziny, 25 minut temu 284 ź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 3843 dni, 12 godzin temu 259 źrodło rozwiń
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 3845 dni, 8 godzin, 27 minut temu 33 źrodło rozwiń
Szkoda, że w C# nie ma znanych z Javy anonimowych klas. Nie mylić z anonimowymi typami, które nie pozwalają na implementację metod! W internecie jest wiele skarg i próśb próbujących wymusić na Microsofcie dodania tego, jakże wygodnego, ficzera do naszego języka...
Architektura 3864 dni, 13 godzin, 48 minut temu 106 źrodło rozwiń
Chcąc dostosować swój kod do wymagań korporacyjnych oraz w celu samodoskonalenia umiejętności zacząłem niedawno stosować między innymi ten wzorzec. Jego zastosowanie może wydawać się oczywiste, ale jego znaczenie jest ogromne, jeżeli budowany kod ma nosić cechy modułowości i skalowalności. Wzorzec Dependency Injection (DI) stosuje się zazwyczaj z innym bardzo ważnym wzorcem jakim jest Inversion of Control (IoC) ale o tym przy okazji. Najprościej rzecz ujmując DI to dostarczenie zależności pomiędzy klasa...
Architektura 3865 dni, 5 godzin, 44 minuty temu 200 źrodło rozwiń
Generyczna klasa zbioru W projekcie, nad którym pracuję potrzebowałem przyzwoicie działającej klasy reprezentującej zbiór. Zbiór nie do końca w sensie teoriomnogościowym (o właściwościach takiego można przeczytać np. tu), posiadający jedną bardzo ważną cechę: przechowywanie unikalnych elementów. Istniejące implementacje (Hashtable oraz HashSet) nie spełniały moich oczekiwań – elementów do wstawiania było na tyle dużo, że występowały kolizje z obliczonej przez GetHashCode() wartości. Ponieważ rozwiązanie...
Architektura 3868 dni, 1 godzinę, 6 minut temu 74 źrodło rozwiń