BloggerOd czasu do czasu zastanawiam się co jeszcze ulepszyć na blogu. Jakiś miesiąc temu sprawdziłem jak blog wygląda w każdej przeglądarce. W każdej przeglądarce wygląd był w miarę podobny. Zauważyłem jednak ,że w przeglądarce Opera wszystkie nagłówki nie mają polskich znaków.

Problem z znakami w Operze

Ustaliłem ,że winna jest czcionka “Consolas” z jakiegoś powodu nie wyświetlała ona polskich znaków w Operze.Postanowiłem zmienić czcionkę z “Consolas” na “Courier New” w końcu jest to też programistyczna czcionka. Myślę ,że teraz blog wygląda jeszcze lepiej niż wcześniej .W przyszłości być może jeszcze zmiennie styl podkreślania kod programistycznego.

Na cóż jeśli posiadasz bloga nawet z gotowym stylem warto sprawdzić jak blog wygląda na: Operze, Firefox, Chrome i  IE. Zwłaszcza ,że wytłumaczenie tego faktu jest kłopotliwe. Sam się zdziwiłem ponieważ nie powinno być żadnych problemów.

MetodyCzęść NR.2Kiedyś komputery były tylko maszynami, które manipulowały wyłącznie wartościami liczbowymi. Pierwsze super komputery obliczały tor lotu pocisków jak i łamały szyfry.

To było kiedyś, komputery dzisiaj, chociaż nikt nie prowadzić statystyk w tym kierunku, pracują w większości nad manipulacją napisów.

Czy to jest dokument tekstowy, czy strona internetowa operacje na napisach powszechnie występują.

WłaściwościCzęść NR.15Hymn właściwości to ważny aspekt. Jak zauważysz pola w klasach .NET są zawsze prywatne natomiast właściwości udostępniają nam zmienne. Chociaż na potrzeby tego kursu na pewno zdarzały się sytuacje, w których pola w klasie czy strukturze były publiczne ,ale nie jest to poprawne zachowanie.

Kiedy chcesz przeczytać bądź zapisać zmienną zazwyczaj używasz symbolu przypisania czyli znaku równa się ( = ). Dlatego stosowanie metod do wyświetlenia zawartości pól nie jest takim dobry pomysłem. Jest to wykonalne ,ale efekt nie jest taki zadowalający.

Oto przykład. Jak widzisz ilość kodu jest dość duża. Zrobiłem to specjalnie by wykazać ,że to podejście jest również słabe, właśnie z powodu ilości kodu.

NTSF FAT32Dzisiaj musiałem zmienić systemy plików na swoich dyskach przenośnych ,a ma ich aż trzy. .

Dyski przenośne

W sumie wszystkie trzy dyski USB potrafią przechować 1300GB danych ,ale jak mój kolega zauważył wszystkie dyski mają format plików FAT32. Pliki w tym formacie wolno się zapisują i co gorsza pliki powyżej 4GB nie mogą być zapisane. Jest to kłopotliwe ponieważ np. obrazy dysków w maszynach wirtualnych czy nawet obrazy płyt blue-ray są na pewno większe niż 4GB.  Żyjemy w 2011 roku i system FAT32 przestały być użyteczne wraz końcem systemu Windows 98/ME.

Skróty

Skróty klawiszowe w Eclipse na pewno są lepsze niż w Visual Studio. Słyszałem wiele porównań tych dwóch środowisk i co do skrótów klawiszowych nie ma tutaj wątpliwości kto tu wygrywa. Skróty w Visual Studio opisałem tutaj.

Oto jak Eclipse rozwiązuje problemy ze trudnymi kombinacjami

Eclipse doskonale rozwiązał problem ze złożonymi kombinacjami klawiszowymi . W Visual Studio otrzymujemy informacje ,że program oczekuje na dalszy klawisz. Natomiast w Eclipse wyświetla się małe menu ze wszystkim dostępnymi pod kombinacjami. Dlaczego nie ma tego w Visual Studio nie mam pojęcia.

Wydaje się to trochę dziwne zwłaszcza , że od Visual Studio 2010 mamy do dyspozycji pluginy tworzone przez osoby trzecie.

No cóż zobaczmy jakie skróty klawiszowe oferuje Eclipse.

DziedziczenieCzęść NR.11Jest to kurs obiektowości , a jeszcze nie było mowy o dziedziczeniu w C#. Chociaż dziedziczenie i polimorfizm pojawiały się w niektórych miejscach w innych wpisach.

Dziedziczenie to kluczowy mechanizm obiektowości. Dziedziczenie pozwala na powielanie funkcjonalności wobec różnych klas w ten sposób nie musimy pisać ciągle samego kodu. .

TabliceCzęść NR.9Tablica pozwala na przechowywanie zbioru wartości. W programowaniu mamy wiele sposobów przechowywania kolekcji wartości ,a tablice są jednym z tych sposobów.

Tablice mogą przechowywać tylko jeden określony typ wartości. NP. tablicaint będzie mogła przechowywać tylko liczby tego typu.

W teorii tablica typu objectmoże przechowywać wszystkie typy ale odpakowywanie(unboxing) wartości z takiej tablicy może okazać się dość kłopotliwe.

StrukturaCzęść NR.8 Klasy są typami referencyjnymi i ich zawartość jest zawsze tworzona na stercie. W niektórych wypadkach klasa zawiera tak niewielką ilość danych , że zarządzanie nimi na stercie jest nieopłacalne. W takich wypadkach lepiej użyć struktury.

Struktura jest typem wartościowym czyli jej miejsce jest na stosie.

Chociaż jeśli struktura jest duża to lepiej stosować klasy.

Skróty VSSkróty klawiszowe w Visual Studio nie są tak dobrze skonstruowane jak w Eclipse. Niektóre funkcje wymagają połączenia 2 bądź nawet 3 kombinacji klawiszowych. Zapamiętanie ich może się kojarzyć z głupią bijatyką, gdzie ciosy(combosy)  to kombinacja 5 klawiszy z całej klawiatury. Naprawdę nie dziwi mnie fakt ,że nikt z tego nie korzysta ponieważ trudno zapamiętać złożone kombinacje klawiszy. Już łatwiej zapamiętać kombinacje do gier konsolowych jak i słynny Konami Code.

EnumCzęść NR.7Typ wyliczeniowy, na który często mówię Enum (szkoda , że ta nazwa nie może być przyjęta Puszczam oczko) jest jedną z fajniejszych rzeczy w programowaniu. Dlaczego?

Choćby dlatego , że wyklucza wartości, których nie chcemy. Przykładowo do aplikacji chcemy aby użytkownik podał konkretny miesiąc ponieważ nasza zmienna byłaby typem wyliczeniowym , a nie np. stringiem .

Nie byłoby mowy o podaniu niewłaściwej wartości ponieważ sprawnie byśmy je przechwytywali.

Typy wyliczeniowe przydatne są także przy kontrolkach, jak ComboBox ponieważ z góry wiemy, jakie pola może użytkownik wybrać.

Jednym słowem zamiana niektórych zmiennych z string na typ wyliczeniowy może bardzo usprawnić aplikacje. 

IntellisenseVisual Studio od wersji 2005 posiada Intellisense, który automatycznie wyświetla wszystkie możliwe wyrażenia jakie mogą być użyte w programie. Nie trzeba pisać całej sentencji by korzystać z tej wygody, wystarczy jedna litera, bądź nawet spacja.

Intelisense w Visual Studio 2010

Od wczoraj uczę się programować w Eclipse i trochę zmartwił mnie fakt ,że Intellisense uruchamia się dopiero po napisaniu jednej sentencji.

Zasady

Przed pracą praktyczną nad kodem postanowiłem napisać kolejny wstęp do wzorców projektowych.



Powszechne zasady projektowe

Istnieje pewna liczba powszechnych zasad projektowych, z którymi szczerze mówiąc spotkałem się zanim jeszcze rozpocząłem swoją przygodę z programowaniem.
Niektóre zasady mogą wydawać się banalne ,ale moim zdaniem nawet początkujący programista powinien ich przestrzegać.
Jeśli myślisz, że się z nimi nie spotkałeś to możesz się zdziwić .Te zasady możesz znać, tylko nie wiedziałeś ,że mają one swoje określone nazwy. 

Wzorce ProjPraca programistów polega na rozwiązywaniu problemów “X”. Wiele z nich się powiela i zostały one już wcześniej rozwiązane. Przez wiele lat rzemiosło programowania obiektowego się doskonaliło. Powstała duża liczba wzorców i zasad ,a najlepsze z nich doczekały się swoich nazw i kategorii.

Posiadając wiedzę na temat wzorców jak i pospolitych rozwiązań jesteśmy w stanie rozwiązywać złożone problemy.Te rozwiązania są powszechne mamy do nich zaufanie ponieważ wiemy ,że dużo wcześniej przed nami ktoś te wzorce z powodzeniem stosował.

Fundamentem wzorców projektowych są zasady  S.O.L.I.D (solid object oriented desing) i one będą opisane w następnym wpisie ,a na razie trochę wstępu.

StatycznaCzęść NR.2

Przykładem klasy statycznej jest np. klasaMath , która zawiera wszystkie potrzebne funkcje matematyczne jak np. cosinus. Do ich użycia klasa nie musi być zadeklarowana o czym więcej w tym wpisie.

Klasa statyczna Math
Na pewno zauważysz ,że nie wszystkie metody należą do instancji klasy; są to metody, które wykonują swoje cele w sposób niezależny od specyfikacji zainicjalizowanej klasy. To są metody statyczne. Po co one są?

Klasy w C#Część NR.1 Ostatnio skończyłem kurs: podstawy C#.Jednak nie było w nim nic o klasach i obiektach. Do pisania prostych programów rzeczywiście można się obyć bez klas. Jednak nie bez powodu C# jest językiem obiektowym .Nikt też nie da nagrody za napisanie programu, który dodaje dwie cyfry. Poprzedni kurs był dobry jako wstęp ,ale nie zmienia to faktu ,że trzeba jeszcze bardziej poszerzać wiedzę.

C# nie jest trudnym językiem programowania ,więc moim zdaniem nie będziesz miał z tym kursem dużych problemów.

Platforma .NET zawiera tysiące klas i nawet jeśli jesteś początkującym programistą C# na pewno zetknąłeś się z nimi. Klasy tworzą dobry mechanizm w zarządzaniu i modelowaniu encji manipulowanymi przez aplikacje. Encja może reprezentować określony przedmiot jak produkt, bądź pracownika albo nawet transakcjeEncje Klasy.

W zależności od naszego poziomu abstrakcji encje mogą prosto obrazować rzeczywistość bądź tworzyć cały złożony system.
Obiekty klas też mają różną długość życia. Niektóre obiekty służą do przechowywania informacji przez prawie cały proces aplikacji ,a niektóre z nich są usuwana zaraz po ich użyciu.

Co to znaczy?W C# mamy do dyspozycji operatory jednoargumentowe jak inkrementacja i dekrementacja. (i++,i--). Mamy też operatory dwuargumentowe, które głównie wykonują podstawowe operacje arytmetyczne (a+b). Czasami w przykładach kodu z Internetu  spotykałem się z wyrażeniem trójargumentowym. Jest ono trochę nieczytelne ,ale na pewno skraca kod o niepotrzebną  if,else.

Operator wygląda tak.

WyjątkiCzęść NR.7The-Hangover-2-Poster-01Nikt nie jest w stanie przewidzieć działań użytkownika. Gdy tworzymy program zwykle jesteśmy przygotowani na scenariusz absolutnie zgodny z zastosowaniem aplikacji ,jednak co się stanie jeśli w miejscu Y napiszę X.

Ten X nie ma żadnego zastosowania z punktu widzenia programu ,ale nie zmienia to faktu ,że powoduje on jego blokadę. Gdy w textboxie pobieramy liczby musimy być przygotowani na to ,że użytkownik nie podał wartości liczbowej. Gdy otwieramy w aplikacji plik graficzny musimy być przygotowani na to ,że użytkownik wybrał przez przypadek plik tekstowy i tak dalej.

MetodyCzęść NR.6time_paradoxPętle w programowaniu są powszechne gdyż wykonywanie jakiejś czynności X razy z innymi parametrami jest na porządku dziennym.

Oczywiście zmorą każdego początkującego programisty jest fakt ,że pętle muszą się kiedyś skończyć.

WarunkiCzęść NR.5Programy służą do rozwiązywania złożonych problemów. W tym celu program nie może działać liniowo. Niczym gra Visual Novel, w której w zależności od podjętej przez nas decyzji na ekranie komputera oglądamy inny tekst.

Myślę ,że jest to najlepszy przykład. W takiej grze istnieją proste zmienne bądź liczniki punktów, które decydują o tym co później się wydarzy.

Potem za pomocą twierdzeń decyzyjnych zawartych w programie zmienne przekierowują nas do odpowiednich scen w grze.

Na tym przykładzie przedstawionym na ilustracji postać w garniturze o imieniu “Enomoto” pyta, czy słyszałem o kwantowej teleportacji? . Jeśli odpowiem “tak” to zostanie pominięta cała scena (jak nie rozdział) tłumacząca co to jest kwantowa teleportacja.
Twierdzenia decyzjne
Mam nadzieje ,że przykład spodobał się . Każdy program działa w zależności od decyzji użytkownika. Nasz poprzedni przykład aplikacji WPF obliczał wynik w zależności od wciśniętego przycisku ,ale ile musielibyśmy mieć przycisków do każdej operacji matematycznej. Tymczasem każdy wie ,że w kalkulatorze jest jeden przycisk “równa się", który wszystko zatwierdza .

Jednym słowem by nie powielać kodu musimy po prostu poinformować program ,że w danym przypadku musi wykonać inną operację.

To byłoby tyle, jeśli chodzi o wstęp. Teraz pokażę jak można osiągnąć to w kodzie w C#.

MetodyCzęść NR.4W poprzednim wpisie pokazałem jak łatwo i szybko napisać prostą aplikacje graficzną.
Metoda C#
Jednak jak podkreśliłem w poprzednim wpisie, znajomość operacji arytmetycznych to za mało do budowania nawet takich małych programików.

Dzisiaj pokażę jak tworzyć własne metody. Jest to jeden z najprostszych trików do podzielenia kodu na mniejsze części, tak by stał się on bardziej czytelny.

ExceptionNa początku tworzenia wpisu miałem duży zapał ,ale gdy doszedłem do litery ”R” w wyjątkach z przestrzeni nazw System.SystemException to stwierdziłem , że zrobienie tej listy na pewno zajmie mi więcej niż jeden dzień.

Dla usprawnienia pracy podzieliłem wpis na części ponieważ nie byłem w stanie  zbadać nawet tych wyjątków do litery R.

StartCzęść NR.1Visual C# jest to obiektowo zorientowany język programowania, który na pewno jest też najpotężniejszym arsenałem dostępnym pod flagą technologiczną Microsoft. C# pełni ważną rolę w platformie .NET ,gdyż język ten, częściowo dla niej powstał.


Jeśli znasz język taki jak Java znajdziesz tutaj duże podobieństwa w składni, które nawet nie jest przypadkowe.

IkonyKiedy piszesz kod  IntelliSence wyświetla ci dostępne  klasy, metody i tak dalej. Dzięki tym ikonkom   wiemy co jest czym w tym menu. Dodałem prostą tabelkę objaśniającą. Byłem zbyt leniwy więc skorzystałem z opisu z Wikipedii czyniąc ten wpis o wiele lepszym..


ProgrammerOto lista cech, które powinien posiadać dobry programista, według mnie. Ostatnio zastanawiałem się jakie cechy powinien mieć ? albo jakie już mam, które sprawiają , że jestem dobry w programowaniu.
Pierwszy punkt przyszedł z łatwością. W sumie programowanie polega na rozwiązywaniu problemów ,ale co dalej?. Jakie inne cechy powinien posiadać programista z punktu widzenia programisty?.

Linq MethodCzasami do naszego kodu jest potrzebna nowa funkcja do danego typu wartości, która ma nie oddziaływać w żaden sposób na już istniejący kod.

A z drugiej strony pisanie klasy statycznej i użycie jej w kodzie w następujący sposób wydłuża niepotrzebnie kod.

Lublin :)W poniedziałek 9 Maja  odbyły się kolejne “Lubelskie Dni Informatyki”. Postanowiłem na nie pojechać szkoda, że sam ale też było fajnie. Pojechałem bus-em o 6:10 i byłem na miejscu już o 8:00. Droga okazała się prosta i łatwa więc nie miałem żadnego problemu z dotarciem na miejsce konferencji. Myślę, że każdy dałby sobie radę nawet jeśli nigdy nie był w Lublinie.  

First NHW poprzednim wpisie o NHibernate chciałem ciebie szybko wprowadzić w zagadnienia podstawowe. Po co w ogóle jest potrzebna technologia pośrednicząca między aplikacją obiektową a relacyjną bazą danych. Właśnie o tym możesz tutaj poczytać.

W Internecie istnieje wiele poradników w języku angielskim do NHibernate . Jednak niektóre z nich wymagają posiadania dużych umiejętności z innych zakresów wiedzy, jak np. o NUnit. Ale ja przecież chcę się uczyć NHibernate. Uśmiech z językiem

ContactKażdy poważny blog potrzebuje formularza kontaktowego.  Blogger nie oferuje takiej gotowej funkcji. Ale oczywiście  mamy do dyspozycji serwisy, które za darmo będą pomagały w tym procesie.
Ja skorzystałem z serwisu “EmailMeForm”. Po założeniu konta mogę stworzyć różne formularze niekoniecznie kontaktowe. Serwis oferuje wiele bajerów więc każdy może tutaj stworzyć swój własny formularz jaki tylko chce.

NHibernateTworzenie aplikacji wymaga znajomości technologii , które mają rozwiązywać wszelkie problemy. Jako programiści mamy dostęp do tablicy narzędzi i  właśnie z nich wybieramy tą jedną służącą do rozwiązania konkretnych problemów. Jednym z tych problemów jest sposób zarządzania danymi, aby móc je zapisać,           a potem odczytać.

Culture SLLokalizacja polega na dostosowaniu aplikacji - w zależności od danej kultury bądź państwa. Lokalizacja polega na przetłumaczeniu interface użytkownika na dany język. Lokalizacja aplikacji polega na utworzeniu oddzielnego zestawu zasobów (jak tekst i obrazki). Jak to wygląda w Silverlight.

NUnitTesty jednostkowe służą do walidacji jak i weryfikacji działania klas i ich metod. W poważnych firmach testy jednostkowe są codziennością, gdyż  ręczne testowanie zajmuje więcej czasu. Także  człowiek jest bardziej omylny niż maszyna, czyli jego proces testowania  może być omylny.

FireFoxFireFox udostępnia wiele dodatków. Dzięki temu nawet gdybym chciał zmienić przeglądarkę to nie mogę. Istnieje wiele dodatów, bez których nie mogę już żyć.

W tym wpisie opisałem kilka dodatków, które są użyteczne dla każdego grafika bądź programisty web.

Markup Znaczniki rozszerzeniowe! Bardzo ważny aspekt w XAML-u. Znaczniki są krótkimi napisami zazwyczaj zamkniętymi w nawiasach klamrowych, które dodają nową funkcjonalność w XAML-u. W języku XAML stosujemy różne znaczniki takie jak “{StaticResource}”, “{TemplateBinding}”, i “{Binding}” oraz wiele innych. Używam ich przez cały czas.

Meta TagiNa przykład, jeśli chodzi o imię i nazwisko moje czy kogo innego . Pierwsze co się zgłasza to facebook . Potem jest grupa, którą utworzyłem na facebook-u. Po tym co zobaczyłem rozważam zmianę loginu na facebook-u albo usunięcie swojej grupy. Potem zgłasza się goldenline. Na końcu dopiero coś bardziej informującego  mojego przyszłego pracodawcę.

EfektyW poprzednim wpisie opisałem niewielki problem z zapętlaniem dźwięków w Silverlight 4. Obecnie w Silverlight 5 Beta, która pojawiła się niecałe 2 tygodnie temu ten problem został rozwiązany dla plików .wav. Klasa SoundEffect została ściągnięta z frameworku XNA i odpowiednio uproszczona na potrzeby Silverlight. XNA to framework, to budowania gier, więc nic dziwnego, że ta klasa jest wręcz stworzona do właśnie takich efektów.

Simple Któregoś dnia przeglądałem nowości w Silverlight Beta 5. Z wszystkich nowości zaciekawiła mnie możliwość zapętlania dźwięku. Jednak na razie można zapętlać tylko pliki .wav ale może niedługo się to zmieni. Podczas przeglądania wpadłem na pomysł napisania prostego odtwarzacza muzycznego z możliwością zapętlania dźwięków w Silverlight 4.

Stworzenie aplikacji zajęło mi niecałą godzinę. Aplikacja bardzo mi się spodobała, może niedługo stworzę lepszą wersję i może nawet według wzoru MVVM. Aplikacja wygląda następująco.

SOAP SL4Prawie każda aplikacja nawet Silverlight potrzebuje zbioru danych aby osiągnąć swój cel. Silverlight podobnie jak WPF oferuje możliwość bindowania danych jak i efektownego wyświetlania. Jednak skąd biorą się te dane. Ponieważ jak wcześniej ustaliliśmy Silverlight działa po stronie klienta. Znajduje się ona jakby po drugiej stronie muru gdzie nie ma bezpośredniego dostępu do danych, jak to jest w ASP.NET.

CSS

Figury Scalable Vector Graphic (SVG) jest to standardowy język zaakceptowany przez W3C służący do opisywania dwuwymiarowej grafiki wektorowej jak i rastrowej, w niektórych przypadkach za pomocą pliku XML. Firefox 3+, Opera 9+ i Safari 3+ wspierają renderowanie SVG. Jedyną zagubioną przeglądarką jest … oczywiście Internet Explorer w wersji 8 ,ale tą lukę można uzupełnić przy pomocy wtyczek. Chociaż i one odchodzą w zapomnienie.

SVG staje się następnym elementem standardów HTML 5. Wcześniej by użyć SVG trzeba było się posłużyć wspaniałym tagami jak <object> <iframe>. Jak pokazuje ten przykład.

PivotViewer

Wysyłając aplikację PivotViewer na swój serwer DropBox zdałem sobie sprawę, że będzie problem ze ścieżką do kolekcji. Zmienianie statycznej ścieżki, która jest zawarta w pliku .xap nie wydało się takim fantastycznym pomysłem. Za każdym razem gdybym chciał pokazać swoją aplikacje musiałbym ją edytować?
Nie ma mowy. Jak to można rozwiązać.

PivotViewer Na całym świecie są zbierane niesamowite ilości informacji w tym także graficznej. Szybkość naszych łączy internetowych zwiększa się jak i możliwości graficzne naszych urządzeń. Teraz powinieneś zadać sobie pytanie jak w przyszłości będziemy oglądać galerie obrazków z Internetu. Obecnie mamy tradycyjne galerie polegające na klikaniu miniatur i oglądaniu obrazków.

Animacja c#

Wyobraźmy sobie taką sytuacje, że mamy jakąś animację w Silverlight –cie, która zachodzi dla przycisku A.

Teraz chcemy jednak by dla przycisku B wykonała się ta sama animacja tylko w drugą stronę od końca.

Niby jest to prosta i oczywista rzecz jednak rozśmieszyły mnie odpowiedzi na forum Silverlight . Do rozwiązania tego problemu trzeba stworzyć dokładnie taką samą animację (storyboard), która wykonuje się od tyłu. Wygląda mi to trochę na marnotrawstwo czasu i energii.

DropBox SL

Blog nie miałby sensu bez pisania o aplikacjach "Silverlight". Jak można umieścić aplikacje Silverlight na Blogger-rze. Zagadnienie można podzielić na dwie części.

 

 

  • Hostowanie- Blogger, czy nawet WordPress nie daje możliwości przechowywania naszych plików na serwerze i powiązania ich z naszym blogiem. Jednym słowem host trzeba znaleźć samemu.
  • Umieszczenie aplikacji w HTML - Blogger oferuje bardzo łatwy edytor do pisania postów, który  bez problemu daje możliwość umieszczenia filmów YouTube, jednak jak to się przekłada na Silverlight.

Teraz, gdy wiem  na czym polegają nasze problemy. Poszukajmy rozwiązania.