To będzie króciutki wpis, niemniej traktujący o dość istotniej zasadzie programowania obiektowego, tj. zasadzie jednolitego dostępu. Jej treść brzmi następująco: Wszystkie usługi oferowane przez moduł powinny być dostępne za pośrednictwem jednolitej notacji, która nie zdradza, czy zostały one zaimplementowane z wykorzystaniem danych przechowywanych statycznie, czy też obliczanych na bieżąco w razie potrzeby. Jakie są zalety ze stosowania tej zasady? Otóż...
Sztuka programowania 3179 dni, 18 godzin, 53 minuty temu 195 źrodło rozwiń
Introduction Hi Today, I would like to present my concept of making skinnable application in Windows Phone 7.1. Making a skinnable application in Windows Phone might be a little bit tricky. Unfortunately, WP7 doesn't support DynamicResource keyword which is a basic tool for making skins in WPF. In order to overcome this inconvenience I decided to write a SkinManager for WindowsPhone. 2. Base view As I mentioned before, there is no support for using dynamic resources in WP7, therefore, in order to...
Silverlight 3179 dni, 18 godzin, 53 minuty temu 42 źrodło rozwiń
WPF dostarcza obiekt Freezable. Możemy dziedziczyć po tej klasie aby stworzyć własne obiekty immutable. Ze względów wydajnościowych, można takowy obiekt “zamrozić” i wtedy nie można już go więcej modyfikować – staje się więc immutable. Przykład:internalclass SampleClass : Freezable { public SampleClass(string text) { Text = text; } protectedoverride Freezable CreateInstanceCore() { returnnew SampleClass(null); } publicstaticreadonly DependencyProperty TextProperty = ...
Na moim blogu co jakiś czas można znaleźć informacje dotyczące pisania dobrego oraz złego kodu w c#. Oprócz tego zacząłem pisać serie artykułów związanych z tą tematyką. Wiele informacji w tych artykułach można było znaleźć już wcześniej na moim blogu ale myślę, że ten cykl stanowi dobre dopełnienie i podsumowanie tego wszystkiego co piszę tutaj. Oczywiście artykuły rozszerzają tematykę, oraz zawierają więcej przykładów więc tym bardziej zachęcam do lektury. Dziś została opublikowana pierwsza część: ht...
Sztuka programowania 3183 dni, 2 godziny, 23 minuty temu 622 źrodło rozwiń
Projektowanie interfejsu 1/3 Dziś nie będzie kody w tym i kolejnych postach skupie się na zasadach jakie obowiązują przy projektowaniu interfejsu dla aplikacji Metro. W dzisiejszy poście skupie się na temacie nawigacji pomiędzy stronami i elementami jakie wchodzą w skład nawigacji. Pisząc na temat nawigowania w aplikacjach metro dla systemu Windows 8 trzeba rozpocząć od przedstawienia dwóch podstawowych wzorców nawigacyjnych.Układ hierarchiczny Jest jednym z najczęściej używanych systemów nawiga...
Tym artykułem rozpoczynamy serię wpisów dotyczących jednego z API wchodzących w skład .NET Framework – WCF (Windows Communication Foundation). Dowiesz się czym jest WCF i „z czym się go je”. Seria artykułów o WCF pomoże Ci się przygotować do egzaminu 70-503. Wpisy będą doskonałym materiałem do powtórki i przypomnienia sobie zagadnień – więc zapraszam do śledzenia kodzimy.net WCF? WTF! WCF (Windows Communication Foundation) – jest to jedno z API .NET Framework. Dzięki WCF będziesz w stanie p...
Dodanie animacji w WPF w stylu funkcyjnym.
Sztuka programowania 3184 dni, 20 godzin, 23 minuty temu 226 źrodło rozwiń
W ramach pakietu dystrybucyjnego .NET Framework do systemu trafia biblioteka SOS.DLL, która pozwala analizować kod .NET w WinDbg. Na tym blogu promuję jednak użycie biblioteki psscor4 (i wcześniejszej psscor2) do analizy dumpów (a także debuggowania aktywnych procesów), co wiąże się głównie z tym, że biblioteka ta jest niezależna od konkretnej wersji CLR (a konkretniej biblioteki mscordacwks.dll), w ramach której uruchomiony był proces. Do tego dochodzi fakt, że psscor zawiera wszystkie te rozszerzenia, ...
W dzisiejszym poście przedstawię kontrolkę LinqDataSource oraz sposób jej implementacji w projekcie Web Site oraz Web Application. LinqDataSource odwołuje się do bazy danych inaczej niż SqlDataSource. Nasza dzisiejsza kontrolka do pracy potrzebuje obiekt kontekstu. Zanim pokażę jak go utworzyć potrzebujemy znowu jakieś przykładowe dane. Tym razem nasze dane utworzymy sami: Tworzymy nową aplikację Asp.NET Empty Web Application: Następnie w Solution Explorerze klikamy prawym przyciskiem na na...
Dziś czas na kolejną metrykę badania kodu – TypeRank. Wartość metryki jest liczona za pomocą algorytmu Google Page Rank, który jest wykorzystywany przez wyszukiwarki do indeksowania stron. W świecie wyszukiwarek internetowych im większa wartość tym strona znajdzie się wyżej podczas prezentowania wyników. Algorytm bada powiązania między stronami internetowymi. Strona dostaje wyższą ocenę, gdy więcej innych stron wskazuje na nią. Stwierdzono, że skoro do danej strony odwołuje się więcej innych witryn to ...
Sztuka programowania 3186 dni, 3 godziny, 12 minut temu 70 źrodło rozwiń
Każdy średnio zaawansowany użytkownik systemu Windows, wie co to jest usługa systemowa. W niniejszym artykule nie demonstruję jak taką usługę zaimplementować, ani jak ona działa, lecz prezentuje jak można utworzyć instalator dla takiej usługi w środowisku Visual Studio.
W ostatnim wpisie pokazałem w jaki sposób wczytać i uruchomić paczkę Integration Services w aplikacji .NET. Dzisiaj rozszerzę ten temat, prezentując kod C# pozwalający na pobranie danych z paczki SSIS zawierającej komponent DataReader Destination. Komponent ten poprzez interfejs DataReader udostępnia aplikacjom zewnętrznym zestaw danych z elementu DataFlow.
Ponieważ ostatnio zajmuję się ASP.NET postanowiłem napisać parę postów odnośnie wiązania danych. Tak więc lecimy: ASP.NET idzie nam na rękę jeśli chodzi o połączenia z bazami danych. Nie trzeba pisać tak dużo zbędnego kodu jak to miało miejsce wcześniej. W tym poście zaprezentuję kontrolkę SqlDataSource która umożliwia uzyskanie dostępu do dowolnego źródła danych (należącego do grupy dostawców ADO.NET). Domyślnie kontrolka ta posiada możliwość współpracy z dostawcami ODBC, OLE DB, SQL Server, Oracle,...
Trips & tricks–Flyout control Dziś zaprezentuję jak stworzyć flyout control. Flyout control jest niczym innym jak popup colntrol, który możemy wywołać po kliknięciu np. na przycisk. Przykład takigo flyout to przycisk “Opinia” w SkyDrive. Akurat to okno jest mocno rozbudowane jednak flyout nie musi nieć aż tylko opcji. A więc jak można stworzyć taką funkcjonalność a wystarczy użyć poniższej metody.publicstatic Popup ShowPopup(FrameworkElement source, UserControl control) { Popup flyout = ...
Dziś trochę o matematycznej walidacji kodu czyli o metrykach. LCOM (lack cohesion of methods) umożliwia obliczenie jak bardzo nasze metody są spójne. Do obliczania tej wartości istnieją gotowe narzędzia takie jak nDepend, ale aby w pełni zrozumieć znaczenie metryki obliczymy sami jej wartość dla prostej klasy. Powinno dążyć się do jak największej spójności a tym samym do jak najniższej wartości LCOM. Przed wyjaśnieniem czym jest metryka LCOM wprowadźmy następujące pojęcia: M – zbiór metod danej klasy...
Sztuka programowania 3189 dni, 3 godziny temu 219 źrodło rozwiń
Jak każdemu porządnemu developerowi zdarza mi się czasem napisać testy. Jak każdemu porządnemu developerowi, czasem zdarza mi się wykorzystać mechanizm metod rozszerzających (jeśli nie wiesz o czym mówię sprawdź na msdn). Jak każdy prawdziwy developer, chciałem przetestować logikę, która była wykorzystywana w jednej z takich metod. W zasadzie to nie w samej metodzie, chciałem sprawdzić czy zostanie wywołana z wartościami, które są dla mnie ważne. Zacznę od metod rozszerzających, a testowanie przyjdzie ...
Sztuka programowania 3192 dni, 8 godzin, 42 minuty temu 207 źrodło rozwiń
Tips & tricks – FileExistsAsync Dziś podzielę się kodem metody, która sprawdza czy istnieje plik w zadanym katalogu. Niby nic, ale jednak WinRT jak na razie nie posiada takiej funkcji i trzeba samemu coś takiego napisać. Metoda nie jest skomplikowana jak widać poniżej.public async static Task
W ostatnim poście opisałem atrybut ThreadStatic pozwalający na korzystanie ze statycznych pól w sposób niezależny w każdym wątku. Dziś pora na analogiczną klasę, wprowadzoną w .NET 4.0 – ThreadLocal. Zacznijmy od przykładu:class ClassA { private ThreadLocal
Sztuka programowania 3192 dni, 8 godzin, 42 minuty temu 65 źrodło rozwiń
Telefony z Windows Phone wyposażone są w wibrację, z której możemy korzystać zarówno w grach jak i normalnych aplikacjach. Podstawowe API kontrolera wibracji (VibrateController) pozwana na pojedynczą wibrację, która trwa określony czas. Problem pojawia się gdy chcemy “zagrać” sekwencję wibracji o różnych czasach trwania, z różnymi przerwami. Poniżej przedstawiam klasę VibrationProvider.
Mobile development 3192 dni, 8 godzin, 42 minuty temu 43 źrodło rozwiń
W dzisiejszym temacie przedstawię przykładowy kod C# umożliwiający załadowanie i uruchomienie paczki Integration Services. Na początku w projekcie konieczne jest dodanie referencji do Microsoft.SQLServer.ManagedDTS.dll. Wszystkie użyte klasy znajdują się w przestrzeni Microsoft.SqlServer.Dts.Runtime.