Artykuły dla kategorii Programowanie

freeimages.com
cze 05 2015
0

HttpClient - równoległe pobieranie danych z różnych żródeł

Rynek aplikacji mobilnych rozwija się niezwykle dynamicznie w ostatnich latach. Programy na telefony dotykają dzisiaj naprawdę wielu ważnych i istotnych obszarów naszego codziennego życia. Coraz częściej tego rodzaju aplikacje funkcjonują w chmurze, dzięki czemu mamy łatwy dostęp do wszystkich niezbędnych nam informacji, niezależnie od tego gdzie jesteśmy i z jakiego urządzenia aktualnie korzystamy.

Wykorzystanie chmury wiąże się najczęściej z użyciem odpowiedniego API, do którego podłączają się wszystkie aplikacje klienckie. W wielu przypadkach programy mobilne muszą wysyłać kilka różnych żądań na raz. Oczywiście w .Net mamy odpowiednie klasy do obsługi komunikacji sieciowej. Jedną z takich konstrukcji jest klasa HttpClient umieszczona w przestrzeni System.Net.Http. HttpClient działa naprawdę bardzo sprawnie, aczkolwiek jest jeden mały problem z tą konstrukcją - trzeba napisać trochę dodatkowego kodu, który pozwoli na równoległe wykonywanie wielu różnych żądań. Na szczęście nie jest to trudne i postaram się tego dowieźć w niniejszym tekście.

freeimages.com
maj 29 2015
0

Efektywne tworzenie GRIDów w XAMLu

XAML - czyli tzw. rozszerzalny język znaczników, jest motorem napędowym wielu technologi stworzonych przez Microsoft. Spotkać go można m.in. w Silverlighcie, WPFie, czy też katowanych ostatnio przeze mnie na blogu aplikacjach uniwersalnych. I choć między tymi technologiami jest sporo istotnych różnic, to w praktyce są one częściowo ze sobą zbieżne właśnie dzięki XAMLowi.

Tworząc frontend w WPF, można bardzo szybko złapać o co chodzi w aplikacjach uniwersalnych - i vice versa. Oczywiście poszczególne kontrolki mogą się różnić pomiędzy konkretnymi implementacjami, ale jest też kilka takich elementów, które albo są takie same, albo zachowują się bardzo podobnie. Do tej właśnie grupy można zaliczyć tytułowego GRIDa, który w praktyce jest moim ulubionym kontenerem do budowania efektywnych layoutów. W dzisiejszym tekście postaram się Wam przedstawić kluczowe jego elementy, które można wykorzystać w codziennej pracy.

freeimages.com
maj 21 2015
0

Biblioteki warte poznania w C# - Google Analytics SDK for Windows 8 and Windows Phone

Ponad dwa lata temu polskim Internetem wstrząsnęła ustawa o ciasteczkach, która nakazuje właścicielom stron informować użytkowników, że na ich witrynie mogą być oni śledzeni za pomocą cookies. Denerwujące popupy i divy informujące o ciasteczkach, zaczęły wyrastać jak grzyby po deszczu. Nowa regulacja nazwała po imieniu to o czym wiedzieli wszyscy internauci - jesteśmy śledzeni.

O ile jeszcze śledzenie zarobkowe może być denerwujące (ciekawe skąd cały Internet nagle wie, że szukałem przed chwilą wakacji?), o tyle w wielu przypadkach, ciasteczka dostarczają sensownych informacji właścicielom stron, którzy dzięki temu wiedzą np. co można poprawić w nawigacji witryny i dzięki temu mogą zyskać również użytkownicy końcowi.

Jednym z większym generatorów ciastek w sieci, jest usługa Google Analytics, która śledzi ruch użytkowników na stronie. Serwis giganta z Mountain View przez wiele lat kojarzył się tylko ze stronami WWW, ale w praktyce od jakiegoś czasu możemy go wykorzystywać również w aplikacjach. W ten oto trochę zawoalowany sposób, dotarłem do meritum, czyli do biblioteki Google Analytics SDK for Windows 8 and Windows Phone, która jak sam tytuł wskazuje pozwala na podpięcie analityk w naszych aplikacjach:)

freeimages.com
maj 09 2015
0

Pivot na sterydach - dodajemy nowe funkcje do kontrolki

Microsoft od zawsze stawiał na kontrolki w swoich aplikacjach. Mieliśmy z nimi do czynienia w Windows Forms, ASP.NET, WPF, a także Silverlight. Nie mogło ich oczywiście zabraknąć również w aplikacjach uniwersalnych.

Każda z kontrolek ma swój zestaw właściwości oraz zdarzeń, które z założenia mają zaspokajać podstawowe potrzeby użytkowników. W praktyce, zestaw ten często jest niewystarczający. Co zrobić w takiej sytuacji? Zamiast kombinować z istniejącymi właściwościami i metodami, możemy spróbować stworzyć swoje własne - tak jak mam to zamiar zrobić w dzisiejszym tekście z kontrolką Pivota, którą dobrze kojarzyć powinni szczególnie programiści Windows Phone:-)

freeimages.com
kwi 29 2015
0

Enum jako flaga

Enum jest bardzo pożyteczną konstrukcją, której używam praktycznie w każdym, nawet najmniejszym projekcie. Enumeracja ma praktycznie same zalety - przede wszystkim pozwala na definiowanie stałych wartości, które później można łatwo użyć w dowolnym miejscu w naszym kodzie. Jak na razie wszystko jest jasne i oczywiste. Mniej znaną właściwością enumów jest praca w trybie flagi, dzięki czemu enumeracja dostaje dodatkowego kopa;-) Przykład umieszczony w dalszej części tekstu pokaże jakie może to przynieść korzyści.

freeimages.com
kwi 17 2015
0

Polimorficzne tworzenie obiektów - usuwamy switcha

Sporo w ostatnim czasie pisałem o wzorcach projektowych. Starałem się w miarę dokładnie zgłębić ten temat i po stworzeniu kilku tekstów z tego cyklu, naszło mnie na małą refleksję - wzorce projektowe są nierozerwalnie związane z polimorfizmem.

Jeśli spojrzymy na poszczególne przypadki (zwłaszcza te z grupy konstrukcyjnych wzorców projektowych), to szybko przekonamy się, że elementem spójnym jest wspólny interfejs. Pojawia się on naprawdę w wielu wzorcach.

W wielu przypadkach jest on kluczem do sukcesu. Dzięki interfejsom możemy stworzyć kilka różnych klas, które będą zachowywać się inaczej, ale sumarycznie będzie można z nich korzystać w taki sam, uniwersalny sposób. I nie byłoby w tym nic złego, gdyby nie fakt, że tak utworzone byty trzeba jakoś wywoływać.. Niestety bardzo często robi się to za pomocą rozwiniętej logiki warunkowej. A przecież takich właśnie elementów chcieliśmy się pozbyć - prawda:)?

Na szczęście logikę warunkową można stosunkowo prosto wyrzucić, a za przykład posłuży nam kod opisywany w tekście poświęconym metodzie wytwórczej.

freeimages.com
kwi 02 2015
0

Wzorzec adapter - przykładowa implementacja w C#

Wiele mówi się o dobrych praktykach tworzenia kodu, używaniu wzorców projektowych i innych zmyślnych rozwiązań. W praktyce nie jest jednak tak kolorowo. Często terminy gonią, w kodzie pojawiają się klasy, których liczba linii liczona jest w setkach, a pośród nich znaleźć można wiele bezmyślnych powtórzeń oraz niepraktycznych interfejsów. Ale przecież obiecaliśmy sobie, że kiedyś to zmienimy, prawda?

Takie sytuacje lubią się mścić. Bardzo często musimy rozszerzać pewne istniejące rozwiązania. Pół biedy jeśli mamy dużo czasu na refaktoring. Gorzej jeśli go nam brakuje, bądź też rozpatrywany kod został już użyty w wielu różnych miejscach i jakiekolwiek zmiany w jego interfejsach nie wchodzę w ogóle w rachubę. Co zrobić w takiej sytuacji?

Wciąż możemy sięgnąć po wzorce projektowe, np. po tytułowy Adapter, który w pewnym sensie pozwoli na reużycie istniejącego rozwiązania.

freeimages.com
mar 11 2015
0

Wzorzec template method - przykładowa implementacja w C#

Dobry programista zawsze będzie się starał pisać czytelny kod. Kluczem do sukcesu jest w tym przypadku ciągła refaktoryzacja wsparta wzorcami projektowymi. Wzorce projektowe w wielu przypadkach pozwalają na zapewnienie elastycznych i skalowalnych rozwiązań. Oczywiście nieodpowiednio użyte mogą również zaszkodzić - tak jak inne rzeczy w naszym codziennym życiu;-)

Dlaczego o tym wszystkim piszę? Przyczyna jest bardzo prosta - chciałbym w dzisiejszym wpisie przedstawić kolejny wzorzec typu must have, czy może w tym przypadku bardziej must use.

Template method (po polsku - metoda szablonowa) jest wzorcem niezwykle prostym w użyciu i jednocześnie bardzo użytecznym zarazem, ponieważ pozwala zredukować duplikowany kod do minimum, a czasem nawet do zera. Najwyższa więc pora na krótką prezentację;-)

freeimages.com
mar 06 2015
0

Wzorzec strategia - przykładowa implementacja w C#

Jeśli ktoś spytałby mnie o element który kojarzy mi się z programowaniem niezależnie od zastosowanego języka, to odpowiedziałbym prosto - instrukcje warunkowe. Wszelkiej maści IFy i switche pojawiają się w praktycznie każdym szanującym się języku programowania i tak naprawdę trudno sobie wyobrazić jakąkolwiek sensowną aplikację, która by z nich nie korzystała. I choć w teorii dają one wiele dobrego, to w praktyce, przy nieodpowiednim użyciu, mogą w sposób znaczący obniżyć czytelność tworzonego kodu.

Pewnym rozwiązaniem tego problemu są wzorce projektowe, które pokazują jak łatwo można uprościć instrukcje warunkowe, a czasem nawet całkowicie je wyeliminować. Tytułowy wzorzec strategii zalicza się do tego zaszczytnego grona wzorców, które walczą z tego rodzajami problemów. W praktyce jest on bardzo popularny, dlatego też wypadałoby by mieć przynajmniej jakiekolwiek pojęcie o nim. Pora najwyższa na usystematyzowanie swoich wiadomości:-)

freeimages.com
lut 06 2015
0

Universal apps - jak zidentyfikować urządzenie?

Ostatnio w pracy miałem do rozwikłania pewien banalny problem (przynajmniej tak mi się pierwotnie wydawało). Moim zadaniem było znalezienie programowego rozwiązania, które w sposób jednoznaczny pozwoli zidentyfikować smartfon z systemem Windows Phone. Aplikacja wykorzystywała architekturę WinRT (Universal Apps).

Na potencjalne rozwiązanie wpadłem stosunkowo szybko. Postanowiłem skorzystać z adresu MAC (odbiornik WiFi/moduł GSM). I wszystko byłoby w porządku, gdyby nie fakt, że nie można tego adresu w żaden normalny sposób wyciągnąć za pomocą kodu.. Musiałem więc poszukać innego rozwiązania. Na szczęście się udało, a wszystko to dzięki klasie HardwareIdentification.