Marcin's profileMoje zmagania z .NET...i...PhotosBlogListsMore Tools Help

Blog


    June 14

    PEX – rewolucyjne podejście do testów jednostkowych

    Testy jednostkowe nie od dziś są narzędziem, które chętnie wykorzystują programiści i testerzy. Piszemy je po to by być pewnym tego, że funkcjonalności, które powstają w projekcie na pewno spełniają zasady, które są opisane w analizie czy to podane przez klienta. Testy jednostkowe zakorzeniły się dzięki popularyzacji metodologii metodyki TDD (Test Driven Development) i XP (Extreme Programming) oraz łatwości wykorzystania Frameworków, takich jak NUnit, XUnit czy Visual Studio Test.

    Niestety wytworzenie testów dla naszego kodu to nie wszystko o czym musimy pamiętać. Ważną kwestią jest jaki stopień pokrycia kodu jaki zapewniają nam nasze testy.
    To pierwszy poważny problem jaki napotkamy tworząc testy jednostkowe. Zakładając, że piszemy testy manualnie musimy stworzyć sobie modele parametrów wejściowych dla metod, które pozwolą przetestować wszystkie ścieżki (przejść przez wszystkie ścieżki decyzyjne) w kodzie i w dodatku sprawdzić ewentualnie parametr wyjściowy. Niestety choć mamy na rynku wiele Frameworków pozwalających na tworzenie testów jednostkowych to ich rola tak naprawdę ogranicza się do dania nam środowiska uruchomieniowego dla kodu, który sami napiszemy + dania nam informacji o pokryciu kodu i ewentualnych problemach.
    Drugim problemem jaki napotkamy to aktualizacja testów. Często jest tak, że w momencie pisania testu dana funkcjonalność posiada x ścieżek w kodzie, które mogą się wykonać dając nam wynik. Podczas procesu dodawania nowych wymagań do funkcji nie zawsze pamiętamy o aktualizacji testów, obecne testy nadal mogą działać, ale testy nie będą zawierać wszystkich możliwych ścieżek- doprowadza to do sytuacji kiedy tracimy cel z przed oczu.
    Trzeci problem to przekazywanie parametrów do metod testujących. Wspomniane frameworki obchodzą ten problem częściowo, pozwalają albo na dodanie atrybutów do metody, które zawierają dane wejściowe, albo pozwalają na podłączanie zewnętrznego źródła danych, np: baza danych.

    Nie będę podważał słuszności pisania testów, bo wszyscy przecież wiemy, że oprogramowanie powinno je posiadać, ich brak w projekcie to lekkomyślność i złudne zaoszczędzenie budżetu. Przeraża jednak to, że często testy posiadają więcej linii kodu niż funkcjonalność, którą testujemy, a zwiększenie ich ilości wcale bezpośrednio nie musi się przedkładać na zwiększenie pokrycia kodu.

    Tutaj pojawia się PEX

    pexweb
    Jest to narzędzie, które pozwala wygenerować testy na podstawie naszego kodu. Teraz czas na pytania: w jaki sposób to robi i czy jest skuteczny. PEX analizuje kod w dwojaki sposób: pierwsza analiza statyczna prowadzi do skompilowania rozwiązania i przejrzenia tego jest w środku, między innymi wykorzystując refleksję. Drugi sposób to analiza dynamiczna, jest uruchamiany fragment kodu i analizowane są ścieżki wykonania dla konkretnych parametrów- narzędzie szuka możliwości wykonania jak największej ilości ścieżek- często dochodząc do pokrycia kodu testami w 100%.

    Przykład 1.
    Metoda rozszerzona, która sprawdza zakres daty. Dwa możliwe stany, true i false.

    1Klikamy prawym przyciskiem na metodzie, i wybieramy Run Pex. Narzędzie skompiluje kod i sprawdzając możliwe parametry i ścieżki przejścia kodu pokaże nam wyniki uruchomienia:

    2Analizator uznał, że tylko dwa przypadki będą potrzebne do pokrycia kodu w 100%. Po prawej stronie widzimy ile testów zostało wygenerowanych i czy zostały zakończone pomyślenie.

    3Klikając na poszczególne testy w Pex Exploration Results możemy zobaczyć szczegóły implementacji testu.

    4Dany test możemy też zapisać w postaci projektu. Wystarczy kliknąć na Save Test. Pokaże nam się okienko z krokami jakie należy podjąć by dodać test do Solution. Kiedy klikniemy Apply wszystkie kroki zostaną wykonane za nas.

    Przykład 2.

    Metoda rozszerzona, manipulująca łańcuchem znaków przyjmowanym w parametrze. Trochę więcej kodu, więc można oczekiwać większej ilości błędów implementacyjnych.

    5 Faktycznie! Po uruchomieniu narzędzia widać, że tym razem podziało się więcej. Mamy już cztery przypadki testowe, w tym dwa wygenerowały błąd.

    6Klikając na test można sprawdzić Stack Trace i sprawdzić gdzie dokładnie nastąpił problem, później można w tym miejscu postawić BreakPointa i sprawdzić co dokładnie się dzieje.

    Zapiszmy testy do nowego projektu klikając Save Test:

    Clipboard021

    Po zatwierdzeniu zostaje stworzony projekt, a w nim metody z parametrami testowymi. Automatycznie do projektu zostaje dodana referencja do naszego projektu.

    Clipboard051

    W każdej chwili możemy zobaczyć wygenerowany kod przez narzędzie. Poniższy kod prezentuje testy, jakie były przeprowadzane na naszej metodzie. Widzimy parametry wejściowe, jak też atrybuty mówiące o tym, czy spodziewany jest wyjątek:

    Clipboard071

    Od tego momentu także możemy cieszyć się pełnym wsparciem jakie daje nam Visual Studio w sferze testowania. PEX przeniósł swoje testy do projektu kompatybilnego z testami Visual Studio więc możemy z tego poziomu je uruchamiać i sprawdzać wyniki ich wykonania, jak też badać pokrycie kodu w procentach:

    Clipboard0211

     

    Metoda, którą testowaliśmy wyżej z założenia miała wyrzucać wyjątek w momencie kiedy parametr będzie pusty. W przypadku kiedy zakładaliśmy takie zachowanie powinniśmy poinformować narzędzie o tym. Klikając prawym przyciskiem na przypadku testowym w oknie Pex Exploration Results możemy dla danego parametru wejściowego założyć występowanie wyjątków określonych typów. Test wtedy będzie wykonywać się z wynikiem pozytywnym.

    7


    Podsumowanie

    Nie ma róży bez kolców, jest to wersja 0.14, czyli bardzo wczesna. Już dzisiaj widać, że będzie to wspaniałe narzędzie, które ułatwi nam pracę. Pokazane wyżej funkcjonalności to zaledwie kilka wybranych aspektów z tego co potrafi PEX. Pamiętajmy, że to narzędzie do generowania testów dla aplikacji jednowątkowych. Dla aplikacji wielowątkowych Microsoft Research ma inny projekt, CHESS http://research.microsoft.com/en-us/projects/chess/

    O PEX na pewno będę pisać jeszcze sporo, ponieważ zamierzam dodać testy jednostkowe do projektu liczącego parędziesiąt tysięcy linii kodu, który rozwijam od paru miesięcy. Pisanie testów, które pokryłyby dużą ilość kodu byłoby zbyt czasochłonne, a utrzymanie tego zbyt drogie, dlatego to narzędzie będzie mi na pewno pomagać w mojej pracy. Polecam wszystkim zapoznanie się z PEX, adres gdzie znajdziecie więcej informacji: http://research.microsoft.com/en-us/projects/Pex/

    Powodzenia!

    Technorati Tagi: ,,,,
    June 13

    Jak obniżyć produktywność programisty…

    Choć jestem jeszcze w miarę młody i moja przeszłość zawodowa nie jest zbyt bogata to jednak udało mi się już pracować w kilku firmach. Niestety podczas pracy spotyka się człowiek z dobrymi i złymi praktykami. Dzisiaj chciałbym napisać trochę o tych złych, które dotknęły mnie podczas pracy w jednej z firm- a temat jest na tyle ciekawy, że warto go poruszyć bo wielu z nas pracuje z ludźmi i warto wiedzieć jakie zachowania są tymi, których powinniśmy się wystrzegać.

    20080518730

    Dla programisty praca jest bardzo często pasją, która bawi tak wiele ludzi dlatego, że można zbudować coś z niczego. To satysfakcja z tworzenia motywuje tak wiele osób do dalszej pracy i rozwoju. Szkoda, że tak wiele osób odpowiedzialnych za zarządzanie ludźmi w zespołach nie pamięta o tym i niszczy całą otoczkę, która jest tak ważna by utrzymać dobrą atmosferę pracy. 

    Zaczyna się od redukcji pracy do prostych schematów. Jeżeli kierownik projektu/lead nie potrafi już na tym etapie przyznać, że nie zawsze jest jedno jedyne rozwiązanie i nie zawsze to on ma rację praca programisty zaczyna się sprowadzać do kodowania zgodnie z podanymi wytycznymi, bez możliwości rozwiązywania problemów samodzielnie. Prowadzi to do braku wykorzystywania swojego potencjału, a przez to do mniejszego zaangażowania pracownika w jego pracę.

    Jeżeli dodamy do tego jeszcze nieumiejętną krytykę, która dość często sprowadza się tylko do powiedzenia, że to jest do niczego i należy to zrobić od nowa narażamy się na brak szacunku. Nie od dziś wiadomo, że spora część informatyków to introwertycy, którzy mają problemy komunikacyjne, a traktowanie swojego zespołu z góry tylko pogarsza całą sytuację. Pamiętajmy, że członkowie zespołu w dużej części nie podzielą się problemem, ale będą sprawę trzymać w sobie przez co praca w zespole stanie coraz bardziej uciążliwa.

    Zdarza się, że osoba, które odbiera zadanie nie ma w ogóle pomysłu jak ulepszyć dane rozwiązanie. Krytyka, które nie opiera się na rzetelnej ocenie rozwiązania, opisie możliwych poprawek nie jest konstruktywna i w takim wypadku w ogóle nie powinna być podawana. Pracownik, który odczuwa, że jest ostrzeliwany ciągłą nie konstruktywną krytyką w końcu zacznie myśleć, że jego zaangażowanie w projekt nie ma sensu, a ocena jego zadań jest przypadkowa. Większość kierowników/leadów traktuje krytykę jako moment wytknięcia win i taką tez budują atmosferę. Obie strony wtedy niepotrzebnie nerwowo podchodzą do sytuacji. Warto tutaj pamiętać, że krytyka ma służyć nie wyładowywaniu emocji, a pomocy pracownikowi w zrozumieniu jego błędów.

    clip-image001


    Niestety o ile często zdarza nam się ganić za złe rozwiązania, bardzo rzadko przyznajemy, że dane rozwiązania są dobre. Niestety często zapomina się o tym by pochwalić, docenić dane rozwiązanie. Nie jest to nic wielkiego, ale w perspektywie czasu wpływa pozytywnie na zespół. Członkowie danego zespołu wiedzą, że ich praca nie idzie na marne, że ktoś sprawdził ich rozwiązanie.


    Czy zastanawiał się ktoś z Was dlaczego w ogóle dochodzi do porażek w projektach?
    Bardzo często zadania nie są dobrze dobrane do danej osoby. Mijają się z umiejętnościami, zainteresowaniami, co niestety w perspektywie czasu doprowadza do wprowadzania do projektu niepotrzebnego zagrożenia. Przyznam, że przydział zadań jest trudną sprawą, ale zawsze przed przekazaniem komuś danego kawałka programu do wykonania należy się zastanowić czy zadanie to jest do osiągnięcia przez danego pracownika. Oczywiście zadania powinny być tak dobierane by stanowiły wyzwanie, ale takie, które jest w “granicach” możliwości. Jeżeli ktoś jest programistą C++ i dostanie zadanie z COBOLa to faktycznie jest to wyzwanie, ale już raczej wychodzące poza granice profilu zainteresowań danego programisty. Nie jest to reguła, ale należy mieć to na względzie.

    g623

    Rozmawiałem ostatnio ze znajomym, który przyjechał z małego miasteczka do Warszawy, miasta sukcesu i wielkich możliwości :) Chwile porozmawialiśmy o jego obecnej pracy. Powiem szczerze, że to właśnie rozmowa z nim natchnęła mnie do napisania tego tekstu. Była to osoba, która pracuje w zespole, który niewiele ma wspólnego z dobrymi technikami zarządzania zasobami ludzkimi.
    Nie raz pojawiając się w nowej firmie byłem wdrażany do dużych projektów, po to by zaraz zacząć pracować ku chwale i uciesze moich przełożonych. Wdrożenia były przeprowadzane czasem lepiej, czasem gorzej, ale ich wspólną cechą było to, że osoby z zespołu chętnie dzieliły się wiedzą i kiedy ktoś miał problem zawsze można było liczyć na pomoc. Wiadomo Google/Bing dobre na wszystko, ale czasem tworząc wewnętrzne projekty te wyszukiwarki na niewiele się zdadzą, a na szybką i skrupulatną aktualizację dokumentacji niewiele firm na budżet (sic!). Są jednak firmy “perełki” na rynku IT, które stawiają na samo-rozwój ponad wszystko, poniżej przedstawiam tabelkę przedstawiającą odpowiedzi na pytanie związane z projektem wewnętrznym firmy, które zadaje początkujący pracownik:

    Odpowiedź

    Komentarz

    Częstość występowania

    Nie wiem.

    Wersja podstawowa, najkrótsza i ucinająca dalszą dyskusję w pierwszej chwili.

    Rzadko, ponieważ w jasny sposób pokazuje, że przełożony nie wie, bądź jest bardzo niechętny w dzieleniu się wiedzą.

    Nie wiem, dawno nie grzebałem w tym kawałku kodu.

    Wersja nieco rozbudowana. W prosty sposób pokazuje, że po prostu zapytałeś o coś, co jest tematem trudnym, gdybyś zapytał o cokolwiek innego, na pewno otrzymał byś sensowną odpowiedź.

    Często, ponieważ jest bezpieczna dla przełożonego. Nikt nie wie wszystkiego.

    Nie wiem, zdebuguj sobie.

    Jest to odpowiedź godna mędrca, który nie daje Ci ryby, ale wędkę, nie daje gotowych odpowiedzi, ale wskazówki, abyś sam odkrył sens życia.

    Często, ponieważ nie zostawia Cię na lodzie, wiesz gdzie szukać odpowiedzi.

    Nie wiem, poczytaj w dokumentacji.

    Gdy uzyskasz taką odpowiedź powinieneś się cieszyć, bo naprowadza Cię w jasny sposób na kierunek, w którym powinieneś szukać. Szkoda, że dokumentów nikt od paru lat nie uzupełnił.

    Rzadko, bo nie oto chodzi, abyś miał wszystko podane na tacy.

    Nie wiem, zapytaj kogoś innego.

    Podstępna to odpowiedź, bo wiadomo, że nie ma kogo zapytać.

    Często, ponieważ przełożony odesłał Cię do bardziej kompetentnej osoby, w tym temacie.

    Nie wiem, zapytaj (Imię).

    Jak wyżej, tyle, że osoba wymieniona z imienia zapewne już nie pracuje w tej firmie.

    Często, jeśli bug, którego naprawiasz jest naprawdę pilny.

    Dlaczego nie zapytasz kogoś innego.

    Odpowiedź agresywna, gdy pytanie jest na tyle oczywiste, że głupio nie znać na nie odpowiedzi – a jednak.

    Rzadko, przełożony musi zachować pozory, że jednak stara Ci się pomóc.


    Ciekawsza rozmowa jednak jest wtedy kiedy w pobliżu przełożonego, z którym rozmawiasz jest jego szef:

    To będzie pewnie jakoś tak, ale głowy nie daje, dawno w tym nie grzebałem, musisz poczytać w dokumentacji.

    Miód dla uszu, usłyszeć taką odpowiedź. Zwłaszcza, gdy wypowiedziana jest w miły i łagodny sposób. Szef szefa jest zadowolony, a Ty przecież wiesz, że odpowiedź, która uzyskałeś jest błędna, i musisz radzić sobie sam.

    Rzadko.

    Poczekaj, upewnię się w dokumentacji i Ci powiem.

    Absolutny rarytas. Złudna sztuczka, po krótkim czasie okazuje się, że jeszcze nikt nie wprowadził tej funkcjonalności do dokumentacji.

    Praktycznie nigdy.


    Straszne, ale jak widać rynek IT ma wiele oblicz, takie zachowania w pracy to absolutny margines wiec nie ma się czym przejmować :) ale jednak warto wiedzieć, że takie praktyki też istnieją.
    Psychologowie twierdzą, że wiele tych wzorców wynosimy z domu lub szkoły dlatego traktujemy je jako naturalne. Uważam, że przełomowym momentem jest uświadomienie sobie innych rozwiązań, porównanie ich z obecnymi praktykami. To pierwszy krok do możliwych zmian.

    Życzę wszystkim zespołu, w których zaufanie i chęć wspólnej pracy będą na pierwszym miejscu.

    June 12

    70-528, 70-536, 70-526 – zaliczone :)

    Cały rok się zabierałem do zdania tych certyfikatów, niestety obecna praca i studia trochę mi w tym przeszkadzały. W pracy człowiek dzień w dzień spotyka się z takimi wzorcami, że nie wiadomo, czy to książki kłamią czy percepcja zawodzi, a na studiach to w ogóle nie mają pojęcia o nauczaniu pisania oprogramowania zgodnie z czymkolwiek.

    Człowiek jednak postanowił wstąpić do zawodowej ekstraklasy. Wybór padł na długi weekend i był to strzał w dziesiątkę. Combidata to jedyna firma, którą udało mi się znaleźć, która nie zablokowała na Prometricu możliwości rejestracji na 12 czerwca właśnie tam postanowiłem zdawać. Początkowa niechęć do innych firm szkoleniowych niż jedyna słuszna, w której jeszcze pracuję szybko znikła. Bardzo miła obsługa, dobra kawa i uśmiech pozwolił zapomnieć o początkowych problemach jakie mieli z odpaleniem mojego egzaminu o 8:15.
    Plan był taki, 70-528 o 8:15, 70-536 o 11:30 i na koniec 70-526 o 13:30.

    70-528
    Egzamin nie jest dla osób, które w ASP.NET umieją napisać proste solution zawierające parę pod stron. Piszę rozwiązania internetowe od dwóch lat, a jednak na egzaminie zdarzyło się parę pytań, które mnie zastanowiły.
    Bindowanie zostało sprawdzone na podstawowym poziomie, żadnych rewelacji. Zostajemy poproszeniu o przykład przypisania do kontrolki danej encji z DataSetu. Banał! Z ADO.NET już trochę gorzej bo przykłady były dość długie, a odpowiedzi różniły się szczegółami. Tutaj trzeba przysiąść i poczytać o budowaniu tabelek i kolumn w kodzie, o budowaniu w nich relacji i zarządzaniu obiektami- wiedza o transakcjach też będzie cenna. Przyda się wiedza o tym jak budować własne kontrolki, jak budować template’y oraz jak działają masterpage’e i theme. Jedyny temat jaki mnie zaskoczył to tworzenie mobilnych stron w ASP.NET- tutaj pewnie straciłem parę punktów. Egzamin nie był łatwy dlatego, że posiadał wiele pytań wielokrotnego wyboru, czasem z dwoma, czasem z trzema, a czasem bez dokładnego sprecyzowania ile odpowiedzi od nas wymagali. Dodatkowo trafiły się pytania gdzie trzeba było w kolejności podać wszystkie kroki do wykonania danej czynności.
    WYNIK: 912/1000

    70-536
    Ten egzamin wydawał mi się jeszcze parę dni tematu najtrudniejszy. Jakież było moje zaskoczenie gdy zobaczyłem pytania. Ogólnie bardzo proste, lecz wymagające usystematyzowanej wiedzy. Polecam przeczytać dział w Training Kicie o kolekcjach, większości z nich nie używamy, ale na egzaminie mogą się pojawić ciekawostki związane właśnie z tymi, których pewnie bliżej nie znamy. Pytania z wątków bardzo proste, należy wiedzieć jak sterować wątkami, jak zaprogramować czekanie jednego wątku na drugi. Sporo zaskoczenia w dziale z AppDomain i Assembly. Tutaj na chwilę podniosła się poprzeczka, kiedy dostałem pytania z Security dla tych obiektów. Ciśnienie jednak szybko opadło i później wzrosło tylko na chwilkę przy sprawdzaniu czy wiem jak dynamicznie wywołać procedurę z klasy.
    Znowu zobaczyłem moje ulubione XMLowe pliki- pytania sprawdzały czy wiem jak się serializuje pokazana klasa przy użyciu SOAPFormatera i BinaryFormatera. Dłuższym przystankiem cieszy się pytania związane z globalizacją. Radzę sprawdzić sobie jak działają klasy CultureInfo i RegionInfo. Oceniam go jako najprostszy egzamin tego dnia.
    WYNIK: 964/1000

    70-526
    Ten egzamin oceniam jako najtrudniejszy. Szczerze mówiąc to niewiele mam wspólnego z prawdziwym programowanie aplikacji okienkowych, jednak głównie pracuje przy rozwiązaniach internetowych. Bardzo dużo pytań związanych z drukowaniem. Musimy wiedzieć jak wywoływać drukowanie, jak uruchamiać podgląd wydruku oraz powinniśmy znać zdarzenia jakie posiadają te obiekty.
    Kiedy myślałem, że najgorsze już za mną dostałem kubłem w głowę- BackgroundWorker. O tej klasie to lepiej wiedzieć wszystko, z czym stosować, z czym nie stosować, ja działa, jak raportuje postępy, jakie ma zdarzenia i property. Parę ciekawych pytań tutaj sie znalazło, ale nie dałem się nabrać. Reszta egzaminu to praca z ADO.NET, przykłady wydawały mi się identyczne z egzaminu z ASP.NET, tak samo zresztą było w przypadku obsługi XML. Parę pytań o kontrolki, implementacje własnych i o ich późniejsze użycie.
    WYNIK: 920/1000

    Skąd wiedza do tych egzaminów? Głównie z pracy przy dużych projektach jakie robię w firmach gdzie pracuję. Przed egzaminami starałem się usystematyzować to co wiem czytając Training Kity- nie ma tam wszystkiego, ale mimo to pomagają. Książki te mają jednak minusy, są pisane nie zawsze zrozumiałym językiem, zdarzają się błędy.

    Porady na koniec dla osób, które zamierzają się przygotowywać do jakich jakichkolwiek egzaminów:

    • Systematyczna nauka, ale nie więcej niż jeden rozdział na dzień. Więcej może doprowadzić do odwrotnego efektu niż chcieliśmy osiągnąć. Nie ma się co śpieszyć, jak czegoś nie rozumiemy poszukajmy choćby w Internecie.
    • Róbmy ćwiczenia zamieszczone w książkach, mi się zazwyczaj nie chciało tego robić- ale na egzaminach spotkałem “casy” podobne do tych przedstawianych w podsumowaniach rozdziałów.
    • Szukajmy wiedzy poza książką. Na forach znajdziemy odpowiedzi na wiele pytań, ale artykuły pozwolą nam poukładać sobie wiedzę.

    A po co nam to wszystko….

      • kiedyś mogliśmy liczyć na ładny dyplom ze złotym znaczkiem, podpis Billa i kartę do portfela by móc się pochwalić znajomym przy piwie. Dzisiaj nie dostaniemy nic, od 1 czerwca zostały zawieszone wysyłki zgodnie z nową polityką ochrony środowiska. Przyślą nam jak zapłacimy za przesyłkę, Nie sprawdzałem jeszcze jak to działa, ale pewnie napiszę o tym,
      • dostęp do MCP Store – sklepu tylko dla MCP, gdzie znajdziemy kubki, koszulki i inne fajne prezenty,
      • podobno wyższe zarobki – dział Akademicki Microsoft przekonuje, że dzięki certyfikatom możemy zdobyć lepszą pracę. Mają rację, o ile trafimy na pracodawcę, który umie uszanować wiedzę i zaangażowanie, jak będziecie mieli pecha traficie na gbura, który wasz certyfikat uzna, za “żadną wartość dodaną”.

    Wszystkim, którzy zamierzają zdawać egzaminy życzę powodzenia, a sam zaczynam szukać lepszego jutra. Następny cel to ukończenie ścieżki MCPD.

    May 23

    Code Camp 2009 Warszawa

    W sobotę 23 maja odbyła się konferencja Code Camp. Oczywiście nie mogłem sobie odmówić przyjemności uczestnictwa w tym wydarzeniu. Spotkanie to nie tylko cały dzień sesji, ale okazja do porozmawiania z wieloma znajomymi z całej Polski, którzy na ten dzień zjawili się w Warszawie. Takie wydarzenia to świetna okazja do integracji i wymiany poglądów.

    200905231060Uczestnicy schodzili się już od godziny 8:00 rano.

    200905231058 200905231059 
    Poranna sesja Tomka Kopacza to strzał w 10-tkę. Człowiek o takim zapale i pasji do technologii, o której opowiada nie jedną osobę jest w stanie obudzić. Jego sesje nigdy mnie nie zawiodły, a tezy przez niego wygłaszane na długi czas pozostają w sferze przemyśleń. Tym razem postanowił opowiedzieć o przetwarzaniu równoległym na platformie .NET. Zaczęliśmy od podstawowych mechanizmów jakie znamy z .NET 2.0/3.5- lecz szybko przeszliśmy do perełek jakie da nam .NET 4.0 w tej sferze. Niestety mechanizmy obecne w obecnych wersjach środowiska każą nam stosować wiele sztuczek dodatkowo używając bardzo ciężkich mechanizmów, które komunikują się bezpośrednio z Kernelem. Taki narzut kosztuje. Nowo środowisko będzie nas wspierać w bardziej efektywnym wykorzystaniu zasobów, pozwoli lepiej deklarować algorytmy oraz dzięki nowemu Debugerowi w Visual Studio 2010 będziemy mogli śledzić wykonywanie się aplikacji wielowątkowej/taskowej. Jako użytkownik PLINQ dla .NET 3.5 na pewno przetestuje możliwości w wersji 4.0. Sporo było także o takich Frameworkach jak CCR oraz DSS. Polecam każdemu zapoznać się z tymi rozwiązaniami, nie raz udało mi się zaoszczędzić sporo czasu dodając te biblioteki do serwisów WCFowych.

    200905231062 200905231063
    Drugą sesję poprowadzili Piotr Czekała i Krzysztof Bartkowski z firmy InSys. Z początku temat wydał mi się nudny- po raz kolejny wykład o Silverlight. Jednak z każdą minutą przekonywałem się, że w tej prezentacji jest coś na co nie zwracali szczególnej uwagi inni prelegenci omawiający ten temat. Sesja na praktycznych przykładach wyjaśniała możliwości streamingu wideo. SmoothStreaming jest technologią, którą w najbliższym czasie się zainteresuje właśnie dzięki tej sesji. Silverlight dzisiaj bardzo zauważalnie wkracza na rynek multimediów i trudno go ignorować. Wielu klientów przekonuje się do prostoty implementacji, dużych możliwości i niedużego kosztu wytworzenia rozwiązań. W natarciu jednak wciąż jest Flex- zobaczymy jak Silverlight 3.0 się obroni w tej rywalizacji.

    200905231065 200905231067
    Następny wykład poprowadził Bartłomiej Legiędź. Był to jeden z tych wykładów, dla których warto było przyjść. Człowiek z przekonaniami i pasją postanowił zmienić “brzydkie” zasady jakimi kierujemy się MY programiści podczas kodowania. Zaczęliśmy od omówienia tego co obecnie mają programiści Java czyli wyjątków kontrolowanych. Swoją drogą bardzo ciekawe jak dobre chęci twórców Java przyczyniły się do powstawania sztuczek pozwalających obejść dobre praktyki. Oczywiście w C# nie ma podobnego mechanizmu co może początkowo zastanawiać, jednak i na to mamy wytłumaczenie architekta tego języka- wskazuje on problem tworzenia bocznych furtek przez programistów Javowych, który postanowili obejść ten “problem”- w C# nie ma tego mechanizmu, bo nie przyjął się w innych językach. To nie zmienia faktu, że podczas pisania kodu przydała by się informacja o tym, że nie przygotowaliśmy aplikacji na wszelkie ewentualności, tutaj mam na myśli maksymalnie warning, nie error jak to jest w Java. Z doświadczenia wiem, że wiele wyjątków w aplikacji nieobsłużonych przez programistów trafia prędzej czy później jako P1 Blocker do supportu projektu. Bartek postanowił stworzyć plug-in do ReSharpera, który będzie dokumentował wyjątki rzucane przez metody. Pomysł prosty i genialny w jednym. Dzięki temu zawsze będziemy wiedzieć jakie wyjątki rzuca dana metoda, a przy okazji podczas analizy kodu przez FxCop dostaniemy mniej błędów ;-) Polecam przetestowanie toola: http://exceptionalplugin.codeplex.com/

    200905231068 200905231070
    Przed ostatni wykład poprowadził Michał Żyliński. IronPython to to czego nigdy nie dotykałem i o czym w sumienie niewiele wiedziałem. Postanowiłem jednak wytrwać na tej sesji chcąc się choćby trochę dowiedzieć dlaczego ludzie lubią tego typu rozwiązania. Niestety nie udało mi się na tej sesji znaleźć funkcjonalności, które mógłbym dzisiaj w swoich projektach wdrożyć z powodzeniem, lub które mogłyby przyśpieszyć moją pracę.

     200905231071 200905231077

    Ostatni wykład poprowadził Andrzej Piotrowski, uczestnik tegorocznego finału konkursu ImagineCUP. Swoją prezentacją chciał pokazać jak ważne jest przemyślenie tworzonego rozwiązania oraz jaką rolę w zespole pełnią Designer i Programista. Tutaj muszę się z nim zgodzić, sam zauważałem niejednokrotnie rozmawiając z różnego rodzaju funduszami, że wygląd danego produktu jest czasem dla nich ważniejszy niż stopień zaimplementowania funkcjonalności. Szkoda, że prelegent był taki speszony, sesja dużo lepsza byłaby w odbiorze gdyby udało mu się zapanować nad emocjami.
    Jeszcze chciałbym nawiązać do lewego obrazka dotyczącego Software development- nie było tutaj winy prelegenta, że slajd wywołał u mnie wewnętrzną salwę śmiechu. Ostatnio jestem w różnych projektach i niestety gdyby ktoś zrealizował choć połowę z tych przedstawionych punktów w dobrej kolejności i choć z lekkim zaangażowaniem to można by uniknąć wielu wpadek- niestety wciąż jest popularna metoda “Na szybko” + “Jakoś to będzie” = “Fire (deployment) & Forget na produkcje”. Dobrze, że promuje się na konferencjach poprawne zachowania, szkoda jednak, że ludzie odpowiedzialni za projekty często są tak zaślepieni swoją wiedzą, że uważają, że ich nikt już nic nie nauczy i najlepiej to oni właśnie wiedzą. Może dlatego aż tak duży odsetek aplikacji upada, a sporo z tego co udaje się sprzedać jest dziurawe jak ser szwajcarski gdzie dziury trzeba zalewać miksturami z niepewnych składników.

    200905231083 Ostatnie słowa należały do Michała, który na koniec podziękował wszystkim za przybycie i zaprosił do uważnego śledzenia działań grup offline. Tutaj chciałbym podziękować organizatorom za wkład w konferencje- miło było wpaść, spotkać się i posłuchać bardzo ciekawych wykładów.

    May 22

    Device Emulator Manager vs Windows 7 RC (PL)

    Polskie testy najnowszego dziecka firmy Microsoft Windows 7 powoli się kończą, nie pozostaje nic innego jak zacząć podsumowywać te parę tygodni “prac”. Dzisiaj przedstawię problem związany z używaniem Device Emulator Managera w Windows 7.

    Problem by nie istniał gdyby nieodparta chęć dokończenia jednej z moich aplikacji mobilnych, która to na domiar złego miała zamiar korzystać z Internetu. Tak wygórowane wymagania niestety są zazwyczaj opatrzone stertą prac jakie trzeba wykonać celem uruchomienia wszystkich bzdetów. Z optymizmem uruchomiłem emulator Windows Mobile 5 myśląc naiwnie, że w opcjach wybiorę kartę sieciową, która będzie współdzielona do połączenia do Internetu- nic bardziej mylnego- przywitał mnie komunikat:

    1

    To przecież jednak nie problem. Ściągam instalator Virtual PC 2007 SP1 i zabieram się do instalacji…a tu STOP:

    2

    No przecież grunt to się nie załamywać, odpalamy Wyszukiwanie rozwiązań w trybie online:

    3teraz już się możemy załamać ;)

    Na szczęście da się osiągnąć zamierzony cel, wymaga on jednak nieco innych kroków.
    Najpierw musimy ściągnąć Windows Mobile Device Center i go zainstalować i uruchomić. W oknie wybieramy Ustawienia urządzenia przenośnego i w otwartym oknie zezwalamy na połączenia DMA:

    4 
    Następnie w Device Emulator Manager klikamy na uruchomionym urządzeniu i wybieramy Cradle:

    5

    I już wszystko działa…

    6 

    By uprzedzić komentarze- w najnowszym Virtual PC dedykowanym do systemu Windows 7 nie ma sterownika, o który prosił w pierwszych krokach Device Emulator Manager. Mam nadzieje, że ta porada pomoże tym, którzy spędzili sporo czasu na poszukiwaniu rozwiązań.

    May 03

    Windows Azure… otwórz się na chmury

    W ciągu ostatnich paru miesięcy bardzo głośno było o tak zwanych “chmurach”. Po raz pierwszy technologia zaprezentowana podczas Mix dzisiaj może być już śmiało wykorzystywana przez programistów i duże firmy do modelowania problemów biznesowych. Warto jednak zauważyć, że to wciąż wersja CTP.

    image

    O co w ogóle tyle zamieszania, przecież już kilkadziesiąt lat temu powstały podwaliny pod tak zwany utility computing w systemach Unix. To co było kiedyś jednak znacząco różni się od tego co dostajemy dzisiaj. Teraz dostajemy kompletne środowisko działające zarówno w Data Center Microsoft jak też u programisty. Sam proces programowania nieznacznie różni się od tego co już znamy z .NET. Platforma została zaprojektowana w bardzo przejrzysty sposób. W ramach Windows Azure mamy dostęp to tak zwanych usług, które możemy wykorzystywać w aplikacjach lokalnych jak też w aplikacjach, które działają w chmurze. To znaczy, że nie musimy wysyłać całej aplikacji do Data Center by móc korzystać z przywilejów jakie daje nam na przykład .NET Services, Live czy Data Services. Możemy tylko konkretną technologię podłączyć do naszej aplikacji i z niej korzystać.

    Tworzona aplikacja zawsze składa się z dwóch części. Paczki, którą przygotuje dla nas Visual Studio + plik konfiguracyjny. To w pliku konfiguracyjnym są na przykład dane potrzebne do dostępu do Storage, jak też ilość instancji jaką chcemy mieć w naszym środowisku. Niestety na dzień dzisiejszy nie możemy tworzyć zakresów instancji jakie mają być odpalane w różnych sytuacjach, czy porach dnia. Musimy na sztywno podać liczbę kopii aplikacji jaka ma zostać uruchomiona.

    Sposób działania zdejmuje z nas wiele odpowiedzialności. Nie musimy się martwić o rozkład ruchu pomiędzy nasze instancje. Zajmuje się tym sprzętowy router będący na wejściu, on sprawdza jak wygląda zajętość naszych instancji i zgodnie z ich wolnym czasem rozdziela nowe zadania. Teoretycznie więc jeżeli mamy uruchomione dwie instancje i dwa jednoczesne żądania to powinny one zostać rozdzielone równomiernie i wykonane w tym samym czasie w trybie 1 instancja / 1 żądanie.
    W aktualnej wersji CTP mamy dwa typy aplikacji, Web Role, który może być reprezentowany przez aplikacje ASP.NET lub Web Service WCF i Worker Role, który jest czymś na wzór batchy, czyli uruchamianych co jakiś czas narzędzi porządkujących/sprawdzających nasze środowisko. Jak widać na obrazku do Web Role mamy dostęp z zewnątrz, rozwiązania stoją za serwerem IIS, do Worker Role nie mamy dostępu, możemy tylko obserwować jego działania przez przeglądanie komunikatów jakie nam wysyła.

    Każda maszyna raportuje swój stan przez agenda do fabryki, fabryka zawsze wie ile instancji naszej aplikacji jest aktualnie odpalonych w Data Center. Jeżeli jakaś maszyna nagle padnie, fabryka wyśle nasz program do innej maszyny i tam go uruchomi. Tak by zapewnić ilość instancji jaka była wpisana w plik konfiguracyjny.

    image

    Możliwości składania danych na dzień dzisiejszy są najsłabszą częścią tej platformy. Nie ma modelu relacyjnego, a zamiast niego dostajemy trzy modele dostępu do danych. Pierwszy to tak zwane Bloby, czyli duże bloki danych. Możemy w jednym takim Blobie przechowywać do 50GB danych. Blob jest rozdzielany na małe bloki danych, po to by łatwiej było retransmitować czy przesyłać pliki wielowątkowo. Drugi model to tabele, ale bez powiązań relacyjnych. Tabela nie posiada schemy co w skrajnych przypadkach pozwalana nam na przechowywanie w każdym wierszu innej porcji danych. Dodatkowo każdy wiersz posiada dwa klucze mówiące o przynależności, pierwszy Partition Key mówi o tym, którego serwera powinna trzymać się dana porcja danych, drugi Row Key jest kluczem unikalnym w ramach zbioru Partiton Key. Po co tak udziwniać można by zapytać… ma to choćby jedno logiczne wytłumaczenie- zgodnie z metodologią uruchamiania naszych aplikacji w środowisku rozproszonym, na różnych luźnie połączonych serwerach moglibyśmy się spotkać z sytuacją gdzie dane bardzo często wybierane są przechowywane na różnych fizycznych maszynach, dzięki temu, że dla danych tabel ustawimy ten sam Partition Key dane zawsze będą “blisko” siebie. Ostatni typ danych to kolejka, służy głównie do kolejkowania zadań przez Web Role dla Worker Role. Kolejki są bezpieczne, to znaczy, jeżeli mamy więcej instancji Worker Role i jedna z nich weźmie ze stosu zadanie i go nie wykona, zadanie wróci do kolejki by inna instancja mogła je obsłużyć.

    image

    Mamy teraz co najmniej trzy modele tworzenia oprogramowania dzięki tym usługom.
    Możemy dodać do naszej aplikacji obsługę jednej z usług, które mamy dostępne w ramach Windows Azure, na przykład autentykacje w ramach usługi Live. Druga możliwość to umieszczenie całej aplikacji w Data Center, tam nasza aplikacja ma dostęp do usług wbudowanych. Ostatnia możliwość to oparcie funkcjonalności naszej aplikacji o logikę umieszczoną w “chmurze”. W takim rozwiązaniu możemy umieścić nasz cały Business Logic w Data Center i odpowiednio go skalować, dodatkowo mamy dostęp do wbudowanych usług, które mogą nam zaoszczędzić sporo czasu pracy.

    image

    Wykreował nam się bardzo fajny model:

    image

     

     

     

     

     

    Dzięki temu, że wraz z SDK dostajemy kompletne środowisko, które umożliwia emulowanie X instancji na naszej jednej maszynie, pozwala emulować rozkładanie ruchu pomiędzy instancje i wykorzystuje do tego narzędzie Fabryki możemy w łatwy sposób przekonać się jak rozwiązanie będzie działać po wysłaniu na serwery produkcyjne. Sam model tworzenia został bardzo uproszczony, sprowadza się praktycznie do stworzenia programu, kompilacji do paczki, wysłania rozwiązania przez stronę internetową i nadzorowania jego działania.

    Jak mawiają dyrektorzy działów marketingu wszystko działa w Power Point, w rzeczywistości wiele razy trafiamy głową w mur. Tak też jest w przypadku tej technologii, najbardziej drażniące rzeczy to:

    1. Podczas wysyłania rozwiązania na serwer musimy czekać nawet kilkadziesiąt minut na uruchomienie naszego programu. Wiem, że jest to wersja CTP i nie można wymagać wielkiej wydajności, ale warto to pokreślić dla osób, które dopiero będą zaczynać by wiedziały, że to nie wina przeglądarki- tylko tyle czasu trwa uruchamianie programu w “chmurze”.
    2. Nasza aplikacja może wysyłać komunikaty przez obiekt RoleManager. Niestety pogląd tych komunikatów nie jest prosty. Nie dostajemy “z pudełka” rozwiązania, które pozwoliłoby na przeglądanie tych logów. Powstały zewnętrzne narzędzia, które na to pozwalają- więcej o nich będę pisał w przyszłości.
    3. Mamy różnice w deploymentcie rozwiązań Live i Web Role. Na dzień dużo lepiej zostało zaprojektowane wysyłanie rozwiązania do usług Live, dlatego, że raz musimy utworzyć aplikacje przez stronę internetową, później podając w Visual Studio ID aplikacji po wciśnięciu F5 rozwiązanie “leci” automatycznie na serwer- w przypadku Web Role za każdym razem paczka jest tworzona na naszej maszynie i to my musimy ją wysłać na serwer przez stronę, tam sprawdzić czy uruchomiła się prawidłowo i ewentualnie przełączyć ją ze stanu testowego w produkcyjny.


    Ostatnie parę tygodni spędziłem jeżdżąc po Polsce prezentując Windows Azure. Rozmawiając zarówno z ludźmi związanymi ze światem biznesu jak też ze studentami odniosłem wrażenie, że to ma szanse się przyjąć. Platforma ma na dzień dzisiejszy trochę braków, ale z pewnością do końca roku 2009 kiedy to jest zapowiadana wersja pełna, otrzymamy gotowy dobrze działający system. Szybki rozwój oraz spore parcie ze strony dużych klientów na pewno wpłynie bardzo pozytywnie na rozwój tej technologii. Pozostaje tylko obserwować kolejne wersje i testować nowości.

    Usługa w chwili obecnej jest bezpłatna, ale by móc z niej korzystać należy się zarejestrować na stronie http://microsoft.com/azure i poczekać na przydzieleniu kodu uprawniającego do odblokowania usług w ramach własnego konta Live. Na tej stronie można znaleźć również pliki wideo, dokumenty wdrożeniowe, przykłady zastosowań jak też SDK do samodzielnych działań.

    Technorati Tagi: ,,
    May 01

    Windows 7 RC PL

    Od wczoraj beta testerzy Windows 7 mają dostęp do wersji polskiej systemu. Trzeba przyznać, że łącze nie nawaliło jak to miało miejsce wiele razy podczas ściągania wersji Beta/RC Windows Vista. Udało się wczoraj ściągnąć cały obraz w ciągu godzinki co uważam za bardzo dobry czas. Może to dlatego, że ściągałem obraz z Microsoft Connect. Przy próbie ściągnięcia obrazu z TechNet dostawałem Unknown Error, który od dawna jest znanym problemem przeciążenia serwerów w Microsoft.

    Niestety nie mogę zainstalować wersji na laptopie do końca weekendu majowego ze względu na pracę, którą muszę wykonać dlatego zainstalowałem system dla testu na wirtualnej maszynie.

    Już od samego początku witają nas polskie napisy:

    1

    Instalacja zakończyła się praktycznie bezobsługowo w ciągu zaledwie 20minut co na maszynę wirtualną jest bardzo dobrym wynikiem. Po zakończeniu instalacji musimy podać kilka podstawowych danych:

    2

    Sam system działa bardzo dobrze. Dużo lepiej niż wersja Beta (kompilacja 7000). Wszystkie sterowniki pobrały się prawidłowo z Internetu co nie zmuszało mnie do szukania płytek instalacyjnych. Dodatkowo warto podkreślić, że działają już dobrze podsystemy graficzne- więc wszelkie niebieskie ekrany związane z kartą graficzną powinny pójść w zapomnienie.
    Działa także Windows Azure SDK, co było bolączką poprzedniej Bety, niestety to zmuszało do szukania rozwiązań w kompilacjach pośrednich ;)

    Teraz czas na ocenę tłumaczenia, tym się zajmę dopiero po zainstalowaniu wersji na laptopie, na którym pracuje. Na szybko przechodząc po okienkach widać, że nie wszystko jeszcze zostało przetłumaczone:

    3

    …ale nie tego szukamy. Bardziej trzeba zwracać uwagę na błędy gramatyczne, literówki i tego typu sprawy. Osoby, które chciałyby przetestować Windows 7 RC (kompilacja 7100) muszą poczekać do 5 maja kiedy to zostanie ta wersja upubliczniona. Ci, którzy mają dostęp do subskrypcji MSDN/Technet mogą już testować. Niestety wersja polska będzie dostępna tylko dla beta testerów.

    Lubelskie Dni Informatyki 2009 – relacja

    Lubelskie Dni Informatyki to wydarzenie, które odbyło się w tym roku już po raz drugi. Konferencja była skierowana przede wszystkim do pasjonatów informatyki z całej Polski. Konferencja miała służyć jako forum wymiany informacji oraz doświadczeń związanych z informatyką, między autorytetami w tej dziedzinie, a słuchaczami - tworzyć płaszczyznę kontaktu między uczestnikami o podobnych zainteresowaniach.

    Z każdym rokiem jest trudniej, ale i tym razem udało nam się zorganizować świetne wydarzenie. Na prawdę wszyscy organizatorzy zrobili wszystko by uczestnikom się podobało. Każdego dnia od wczesnych godzin rannych tworzyła się kolejka do rejestracji na to wydarzenie:

    P5060466

    Wykłady to nie wszystko, osoby uczestniczące w naszym wydarzeniu mieli świadomość tego, że w każdej chwili mogą wylosować jedną z nagród ufundowanych przez naszych sponsorów.

    100_3549

    W tym roku było bardzo dużo wykładów nie związanych z technologiami sponsorów. Każdy więc mógł wybrać interesujący go temat i przyjść na to wydarzenie. Wiele wykładów było bardzo praktycznych, na przykład Daniel Plawgo, który przyjechał do nas aż z Olsztyna poprowadził wykład o narzędziach ułatwiających pracę grupową studentom- czyli mówił o takich narzędziach, które można używać za darmo.

    200904291048

    Pierwszego dnia pierwszy wykład poprowadzili dla nas przedstawiciele firmy Kasperky Polska. Sesja niezwykle praktyczna, pokazująca jak działają wirusy na naszych komputerach i jak bezradni możemy się stać po ataku złośliwego oprogramowania. Celem prezentacji było zaprezentowanie jak usunąć z maszyny wirusa nie mając oprogramowania antywirusowego. Zadanie nie łatwe jak się okazało, ale w bardzo przystępny sposób pokazane na przykładzie kilku wirusów.

    Drugi wykład Eugeniusza Licznarowskiego z firmy Microsoft miał za zadanie pokazać słuchaczom jak zmienia sie firma Microsoft. Pokazał ile błędów popełniła firma tworząc poszczególne wersje pakietu Office i jak zmienił się tok myślenia w ostatnich latach. Bardzo ciekawe były przykłady badań przeprowadzanych na użytkownikach pakietu, które w efekcie końcowym przyczyniły się do powstania tak zwanej wstążki, czyli elementu interfejsu który znamy z najnowszego pakietu Office.

    Trzeci wykład dotyczył marketingu internetowego. Prelegent pokazał wszystkie najważniejsze aspekty reklamowania naszej strony w Internecie, elementy o których nie można zapominać oraz poradził nam jak nie wydać majątku na to byśmy stali się rozpoznawani w branży IT.

    Ostatni już wykład pierwszego dnia mówił o pozycjonowaniu naszych stron w wyszukiwarkach. Pozycjonowanie dotychczas kojarzyło mi się z magicznymi sztuczkami i technikami, które są znane tylko wybranym. Nadal tak uważam, ale teraz wiem, na co muszę uważać i jak choćby w podstawowym stopniu pomóc mojej stronie we własnym zakresie usług.

    Drugi dzień konferencji otworzył wykład Macieja Lisa dotyczący Botnetu. Od samego początku kiedy Maciek się do nas zgłosił ciekawiło mnie co pokaże. Maciek bardzo rzeczowo przedstawił temat, robiąc przy okazji wielkie SHOW. Bardzo podobał mi się ten wykład, i publiczności też- świetna zabawa i bardzo poważny temat w jednym.

    Ja też miałem swoje 5minut podczas tej konferencji (a raczej 60min + 10min o które przedłużyłem) gdzie opowiedziałem o Windows Azure. Podobny wykład miałem w Gdańsku parę dni wcześniej. Moją ideą było uświadomić słuchaczom jakie problemy mogą nas spotkać podczas projektowania architektury sprzętowej i programowej dla naszego rozwiązania. Przeszliśmy przez kilka możliwych scenariuszy możliwych rozwiązań podsumowując, które jest tańsze w utrzymaniu i lepsze z punktu widzenia firmy:

    200904281041005

    Następny wykład poprowadził Mariusz Kędziora z firmy Microsoft. Zaprezentował on trendy w wirtualizacji, oprogramowanie, które pozwala nam na łatwe wirtualizowanie naszej infrastruktury serwerowej oraz metodologie utrzymywania serwerów cały czasy online, nawet wtedy kiedy któraś z maszyn utrzymujących serwery wirtualne padnie. Nie wiedziałem, że jest technika, która umożliwia szybkie przeniesienie maszyn z jednego fizycznego serwera na drugi w czasie awarii…

    Przedostatni wykład poprowadził Grzegorz Rycaj z firmy Billennium. Wykład był AJAX Tips & Tricks. Mi bardzo się podobały praktycznie przykłady zastosowania AJAX oraz bardzo dobrze wyjaśnione możliwe pułapki podczas stosowania tej technologii. Dzięki tej prezentacji już wiem co muszę poprawić w swoich rozwiązaniach.

    Ostatni wykład poprowadził Jakub Kądziela o Silverlight 3.0. Obecnie na rynku rządzi Silverlight 2, który już jest dość innowacyjny, podczas tej sesji mogliśmy się dowiedzieć jak jeszcze dużo jest do zrobienia i jaki krok milowy w tym segmencie rynku został postawiony dla najnowszej wersji środowiska. Wszystkim umiejącym .NET polecam zapoznanie się z Silverlight. Dużo świetnej zabawy.

    Trzeci dzień zapoczątkował Paweł Wasilewski, który przyjechał do nas aż z Poznania. Mówił o tym jak w prosty sposób można rozszerzyć swoją stronę o usługi Live. Pokazał między innymi mechanizmy logowania się na stronie przez profil Live oraz jak można umieścić na swojej stronie mapę i zaprogramować proste interakcje z nią.

    Tobiasz Koprowski, który przyjechał do nas z Wrocławia, mówił o wysokiej dostępności SQL Server. Wykład choć wydawał się bardzo skomplikowany (temat na to wskazywał) okazał się jednym z najlepszych na całej konferencji. Bardzo ciekawe anegdoty oraz wiele ciekawych praktycznych porad sprawiły, że ta sesja bardzo mi się spodobała, i raczej nie tylko mi z tego co widziałem na ankietach konferencji:

    200904291052

    Ostatni wykład był poprowadzony przez Rafała Nagrodzkiego, który zaprezentował możliwości ukrywania danych w plikach JPG. Sesja była połączeniem praktycznego wywodu na temat zastosowań takiego rozwiązania i technicznym wyjaśnieniem mechanizmów jakie musimy zawrzeć w swojej aplikacji by móc korzystać z tej funkcjonalności.

    Jak widzicie było bardzo dużo sesji. Były osoby, które przetrwały z nami aż trzy dni, byli na każdym wykładzie. Było widać po nich zmęczenie, ale oni się nie poddawali bo kolejna okazja by zobaczyć tak znakomitych prelegentów w dużej mierze z poza Lublina może nadarzyć się dopiero za rok!

    P5070602 

    Osoby spragnione chwili wyciszenia i odpoczynku mogły w każdej chwili wybrać się na dziedziniec Katolickiego Uniwersytetu Lubelskiego i podziwiać piękną przyrodę…i przesiadujące tam osoby :) Wielu naszym prelegentom z poza miasta ten element szczególnie utkwił w pamięci.

    P5070593 

    Podsumowując chciałbym podziękować wszystkim organizatorom, to dzięki Wam i Waszemu uporowi udało się zorganizować po raz drugi tak świetne wydarzenie w naszym mieście. Mam nadzieje, że nie zraziliście się do ogromu prac i za rok zrobimy jeszcze lepsze wydarzenie.

    Zapraszam wszystkich na stronę http://lubelskiedniinformatyki.pl  gdzie już niedługo będą zmieszczone wszystkie prezentacje naszych prelegentów a w ciągu dwóch miesięcy prezentacje wideo.

    Konferencja NetVision w Gdańsku

    Było mi dane zarówno w zeszłym jak też i w tym roku przyjechać na to wydarzenie. Niestety pamięć jest zawodna i chwile trwało zanim udało mi się odnaleźć w realiach innego dużego miasta. Konferencja oficjalnie trwała od 23 do 26 kwietnia. Ponieważ byłem 23 kwietnia na spotkaniu ze Stevem Ballmerem do Gdańska udało mi się dotrzeć dopiero po południu i nie poszedłem na rejestrację odebrać mojego identyfikatora. Niestety jak się okazało dzięki temu, że nie poszedłem pierwszego dnia na rejestrację nie miałem identyfikatora, który upoważniał by mnie do wstępu na imprezę integracyjną- szkoda, bo byłem tam prelegentem jednego ze sponsorów, w świetle tego dziwi mnie takie zachowanie- ochrona klubu mogła mieć przecież listę uczestników… może później ktoś wpadł na tej pomysł, ale ja i tak czekałem pod klubem godzinę i nie zamierzałem czekać dłużej.

    Gdybym wcześniej miał ten identyfikator może sprawy potoczyłyby się inaczej.

    001

    Drugiego dnia konferencji postanowiłem odnaleźć miejsce rejestracji, tutaj należy pochwalić organizatorów, bo karteczek lokalizacyjnych było dość sporo…

    20090425981

    Jednak nie wszystkie wskazywały na sensowne lokalizacje… na niżej mówi mi o miejscu Rejestracji, ale strzałki nie ma…:)

    20090424977

    Jednak w niedługim czasie udało się odnaleźć miejsce konferencji…

    20090424967

    Dopiero następnego dnia postanowiłem przyjść na parę ciekawych wykładów, interesowała mnie głównie ścieżka Mobile

     20090424971    

    Prelegenci niektórych firm byli bardzo skorzy do rozmowy po swoich wystąpieniach- jak sie okazało z niektórymi z nich w niedalekiej przyszłości jest szansa na jakiś biznes… firmy dzisiaj bardzo chętnie inwestują w ciekawe pomysły, a ja od jakiegoś czasu szukam inwestora.

    Moja sesja odbyła się w sobotę (25.04). Mówiłem o Aplikacjach i Usługach w Chmurze. To dopiero tworzący się nurt oprogramowania, w którym będziemy tworzyć aplikację i uruchamiać na wielu serwerach w DataCenter poza naszą firmom. Głównie po to by zredukować koszty, pozwolić na centralne zarządzanie firmie zewnętrznej poprawkami i serwerami- ogólnie zdjąć z nas odpowiedzialność za sprzęt i oprogramowanie firm trzecich. W tym celu postała platforma Windows Azure, która już dziś pozwala na tworzenie rozwiązań uruchamianych w Data Center Microsoftu w USA. Podczas sesji pokazywałem jak prosto można przekonwertować naszą aplikację ASP.NET do formatu aplikacji uruchamianej w chmurze i jak prosto się taką aplikację wysyła. Choć miałem tylko 45min myślę, że udało mi się oddać sens tego rozwiązania. Miałem wiele pytań zarówno w trakcie wykładu jak też i po więc zainteresowanie było dość spore- na pewno większe niż oczekiwałem.

    20090424976 002

    Oczywiście nie samą konferencją człowiek żyje, miałem w ciągu tych czterech dni sporo okazji do podziwiania morza, czy to w Gdańsku czy pobliskim Sopocie…

     200904251016200904251004

    Uważam, że NetVision 9 Seminarium Biznesu i Nowych Technologii to bardzo ciekawe wydarzenie. Miałem wrażenie, że w tym roku jest mniej uczestników niż w latach poprzednich- ale nawet taka trudność nie przeszkodziła w realizacji spotkania organizatorom. Nie spotkałem się z innym podobnym studenckim przedsięwzięciem, które by odbywało się przez tyle dni i pozwalało na wybór ciekawych wykładów jak tez szkoleń. Szkolenia to tak naprawdę siła tej konferencji, wiele dużych firm prowadzi w małych grupach bardzo ciekawe warsztaty, takie jak motywowanie pracowników, sztuka prezentacji czy techniki sprzedaży.

    Na pewno za rok będę chciał tu wrócić, może znowu uda się poprowadzić jakiś wykład.

    Spotkanie ze Stevem Ballmerem

    23 kwietnia 2009 roku odbyło się spotkanie aktywnych członków społeczności ze Stevem Ballmerem. Oczywiście nie mogło mnie tam zabraknąć. Już w 2007 roku byłem na spotkaniu z nim i przekonany wtedy do jego wizji rozwoju rynku IT postanowiłem i tym razem sprawdzić gdzie to wszystko zmierza. 

    Ponieważ poprzedniego dnia miałem swój występ na ITAD w Częstochowie musiałem się szybko przetransferować do Warszawy na ranne spotkanie. Na szczęście nie było problemu z dojazdem do samej Warszawy jak też do hotelu Sheraton. Jak na każdym tego typu spotkaniu prócz celu samego w sobie czyli spotkaniu ze Stevem można było spotkać wielu wielu znajomych, z którymi w większości rozmawia się tylko przez e-mail/skype/msn. To jest niewątpliwa wartość dodana tych spotkań.

    Po wpuszczeniu nas do sali wszystko zaczęło się dłużyć. Mogliśmy obserwować film prezentujący technologie Live, który widziałem siedząc tam chyba z 10 razy. Za którymś razem nawet mogłem już skutecznie “przewidywać” następną scenę. Dzięki temu znam już na pamięć parę scenariuszy w jakich portali Live jest idealny :)

     20090423958

    Po paru dziesięciu minutach Steve wkroczył na scenę z szalikiem Polskiej reprezentacji. Wtedy może nie do końca było to jasne, ale teraz można przewidywać, że miało to coś wspólnego z później ogłoszonymi finałami konkursu Imagine CUP 2010 w Polsce. Niestety jego przemówienie trwało 5min, w ciągu których przedstawił bardzo krótko Roadmap rozwiązań Microsoft, oraz odniósł się do kryzysu na świecie i jego realnym odbiciu w świecie IT. Nie był tutaj jedyną osobą, od której w ostatnim czasie usłyszałem, że na kryzysie w IT można zarobić.

    DSC_2121

    Reszta jego sesji czyli około 40min zostało oddane w ręce społeczności i ich pytań. Osoby, które wcześniej przedstawiły swoje pytania mogły je teraz zadać na żywo. Padło wiele ciekawych pytań, między innymi o patenty, piractwo w Polsce, o rozwój SQL Server jako platformy komunikacyjnej.
    Padły też pytania o to czy Microsoft kupi konkurencyjne przeglądarki, takie jak Opera oraz czy Microsoft ma się czego martwić w czasie kryzysu. Oczywiście Microsoft nie kupi konkurencyjnych przeglądarek, a kryzys będzie tylko momentem gdzie ludzie na chwile przestaną kupować produkty z Redmond, ale nadal będą ich używać- czasem nie do końca zgodnie z prawem.
    Paweł Potasiński podczas swojego pytania został nawet posądzony przez Ballmera o testowanie inteligencji, ale po chwili wyjaśnili sobie jaka będzie przyszłość SQL Servera, była mowa o tym, że teraz jest czas na dogonienie Oracla w rozwiązaniach dla największych korporacji, tam gdzie liczy się skalowalność i wydajność.

    PHOTO_0118

    Jestem zadowolony z tego spotkania, ale oczekiwałem więcej. Dwa lata temu spotkanie z nim większe wrażenie to spotkanie we mnie wywołało. W większości dlatego, że jego mowa była dłuższa, dobrze przemyślana, z ciekawymi dodatkami w postaci śmiesznych sytuacji. Wydarzenie, które odbyło się tym razem dużo lepiej przygotował Microsoft, parę dni po już możemy się cieszyć filmem ze spotkania i zdjęciami- wydarzenie z 2007 choć miało zostać opublikowane nie zostało, mi jednak udało się nagrać co ciekawsze wtedy kawałki i zrobić parę zdjęć.
    Jeżeli będziecie mieli w przyszłości okazję polecam przyjść na takie spotkanie i poznać człowieka z taką charyzmą jak on.

    Jeżeli ktoś jest zainteresowany materiałami to poniżej prezentuje linki do:
    Relacji wideo - http://edge.technet.com/Media/Steve-Ballmer-spotkanie-z-polsk-spoecznoci-IT/
    Relacji zdjęciowej - http://photosynth.net/view.aspx?cid=66AA39FC-A537-4D82-BE0E-A58C01ED6EA4

    IT Academic Day w Częstochowie

    22 kwietnia 2009 roku odbyła się konferencja IT Academic Day w Akademii im. Jana Długosza w Częstochowie. Miałem okazję uczestniczyć w wydarzeniu dzięki zaproszeniu Iwony Jamróz, która organizowała to wydarzenie. Tak naprawdę nie przyjechałem tam by wysłuchać wykładów, lecz po to by sam poprowadzić swoją sesję. Zanim jednak opiszę to o czym mówiłem, przedstawię dwie sesje, które były przede mną.

    20090422953

    Pierwsza prezentacja była poprowadzona przez Piotrka Kramka. Była na temat innowacji jakie wprowadził i będzie wprowadzać na rynek firma Microsoft. Mogliśmy zobaczyć między innymi takie technologie jak DeepZoom, Microsoft Tag, Windows 7 czy PPTFlex. Piotrek nie miał łatwej prezentacji, ponieważ co chwila ktoś z publiczności próbował tak użyć prezentowanego narzędzia by się “wysypało”. Na szczęście dla Piotrka do ostatniej chwili wszystko działało.

    Druga prezentacja była prowadzona przez dwóch pracowników Kasperski Polska. Sesja niezwykle praktyczna, pokazująca jak działają wirusy na naszych komputerach i jak bezradni możemy się stać po ataku złośliwego oprogramowania. Celem prezentacji było zaprezentowanie jak usunąć z maszyny wirusa nie mając oprogramowania antywirusowego. Zadanie nie łatwe jak się okazało, ale w bardzo przystępny sposób pokazane na przykładzie kilku wirusów.

    Ostatnia pozycja tej konferencji to moja prezentacja dotycząca nowoczesnych metod dostępu do danych. Na początku przedstawiłem idee Linq i Entity Framework by później móc przedstawić wiele technologii na tym bazujących.
    Pierwsza opisywana technologia to ADO.NET Data Services, która pozwala wyeksponować model bazy danych jako WEB Service, bardzo łatwe zarządzanie uprawnieniami do encji oraz łatwość stworzenia modelu i podpięcia go do projektu sprawia, że cały proces trwa maksymalnie parę minut.

    003 
    Druga technologia to ASP.NET Dynamic Data Site, która pozwala na stworzenie w parę sekund na podstawie modelu bazy stron, które mogą służyć do edycji danych. Dzięki temu, że łatwo można dostosowywać layout oraz walidacja danych jest przeprowadzana automatycznie na podstawie danych pobranych z bazy danych niewiele pozostaje nam do roboty.
    Ostatni framework jaki przedstawiłem to Sync Framework. Pozwala on w bardzo prosty sposób synchronizować dane pomiędzy dwoma puntami/aplikacjami. Dzięki temu, że druga strona może być wystawiona za Web Servicem pozwala nam to na kreowanie wielu ciekawych scenariuszy synchronizacyjnych. Samo narzędzie ma w sobie wbudowane wiele algorytmów, które oczywiście sami możemy rozszerzać.

    20090422955

    Samo wydarzenie wspominam bardzo miło. Widownia nie wymęczyła mnie za bardzo. Nie wiedziałem, że tak blisko domu rodzinnego mam tak ciekawa uczelnię. Na pewno w przyszłych latach będę chciał tam wrócić na tego typu konferencje.

    April 24

    IT Academic Day – Akademia im. Jana Długosza w Częstochowie

    W środę (22.04) miałem przyjemność uczestniczyć w konferencji zorganizowanej przez grupę .NET w Akademii im. Jana Długosza w Częstochowie. Mój przyjazd tam nie był przypadkowy, zostałem tam zaproszony w roli prelegenta który miał opowiedzieć o dzisiejszych realiach dostępu do danych na platformie .NET.

    Temat wydał mi się na tyle ciekawy, że z wielką chęcią przyjąłem to wyzwanie. Temat potraktowałem jako opowieść historyczną, gdzie przechodząc między “epokami” komputeryzacji i zmianami podejścia do tworzenia oprogramowania starałem się uwidocznić zmiany mentalne inżynierów, którzy byli odpowiedzialni za tworzenie warstw dostępu do danych.
    Później nadszedł czas na charakterystykę dzisiejszych czasów, czyli dobę narzędzi ORM. Tutaj zatrzymałem się na chwilę i porozmawialiśmy o LINQ, Entity Frameworku, ale też o innych narzędziach jak NHibernate. Każde z nich ma swoje wady i walety- ale łączy je jedno, odejście od bardzo trudnego w utrzymaniu rozwiązania utrzymywania kodu w formacie plików tekstowych dołączanych do solution. Dyskusja o tym czy wydajność dzisiaj jest najważniejsza pokazała, że nie do końca tak dzisiaj myślą pracownicy działów IT, dzisiaj dla nich i dla ich klientów liczy się czas wytworzenia oprogramowania i czas jego utrzymania, narzędzia ORM pozwalają ten czas skrócić wielokrotnie, a zaoszczędzone pieniądze można wykorzystać choćby na część infrastruktury. Później omawiałem takie technologie jak ADO.NET Data Services i ASP.NET Dynamic Site oraz Sync Framwork.
    Pierwsza technologia pozwala wystawić w ciągu paru sekund model danych przez web service, który posiada interfejs REST, bardzo przenośny i szybki. Poza tym jest możliwość implementacji różnorodnych mechanizmów autoryzacji i autentykacji do zasobów.
    Druga technologia pozwala na wygenerowanie w ciągu paru chwil stron internetowych na podstawie modelu pozwalających na edycję każdej encji w bazie danych.
    Ostatnia z omawianych technologii to framework pozwalający synchronizować dwie aplikacje, czy to ich bazy, czy to ich zasób plikowy. Bardzo duże możliwości rozbudowy i wiele wbudowanych algorytmów nie pozwala przejść obojętnie obok tego dodatku do Visual Studio.
    Odbiór publiczności był bardzo pozytywny, a zadawane pytania przez nich pozwalają mi sądzić, że zrozumieli temat bardzo dobrze.

    Prócz mojej sesji były jeszcze dwie inne. Pierwszą prowadził Piotr Kramek z polskiego oddziału Microsoft, który przybliżył przybyłym najnowsze technologie będące jeszcze w fazie beta, nad którymi pracuje Microsoft w tym w większość dział Research. Tak mogliśmy na przykład zobaczyć wtyczkę do PowerPointa PPTFlex, która umożliwia stworzenie prezentacji w całkiem inny sposób niż znany dotychczas, można użyć w prezentach znanego nam DeepZooma z Silverlight. Dodatkowo mogliśmy zobaczyć narzędzie na Windows Mobile, które umożliwia nagrywanie notatek głosowych i późniejsze odpytywanie swojego urządzenia o dane w nich zawarte- swoją drogą narzędzie bardzo interesujące i Microsoft TAG- zmianę podejścia do kodów kreskowych.

    Drugi wykład poprowadzony przez Kaspersky Lab pokazał jak można walczyć z wirusami nie posiadając na komputerze oprogramowania antywirusowego. Temat bardzo ciekawy bo można było się zapoznać ze słabościami systemu, które wykorzystują wirusy by nam zablokować kompletnie prace, ale też mogliśmy się nauczyć wykorzystywać je byśmy to my mogli przejąć kontrolę nad maszyną w momencie ataku. Każdemu polecam ten wykład, szczególnie, że firma Kaspersky jeździ po całej Polsce z tym wykładem. Na przykład podczas Lubelskich Dni Informatyki w poniedziałek będzie można ich posłuchać.

    Cieszę się, że mogłem być na wydarzeniu, że w Częstochowie- w mieście, które jest oddalone od mojego domu rodzinnego tylko 37km- kiedyś jak wybierałem studia nie było w tym mieście takich wydarzeń. Jak się pojawią zdjęcia to wkleję je tutaj.

    April 20

    ADO.NET Data Services

    Dzisiaj kiedy podejścia do tworzenia oprogramowania opatrzone tajemniczymi literkami typu SOA, S+S i SaaS są na TOPie trudno sobie wyobrazić brak zastanowienia nad tym jak można wystawić swoją bazę danych w serwisie web. Okazuje się, że Microsoft  w najnowszym wydaniu Visual Studio 2008 z SP1 podarował nam prosty kreator do tworzenia właśnie takiego cuda. ADO.NET Data Service to często jedyna metoda by udostępnić aplikacji Silverlight dostęp do danych.

    Jak to działa?
    Tutaj uraczę Was kolejnym skrótem, który jest silnie związany z techniką wystawiania nam danych. ADO.NET Data Service pozwala nam na uzyskanie danych przy użyciu REST. Najkrócej mówiąc możemy uzyskać i edytować dane przez proste komendy protokołu HTTP, takie jak GET, PUT, POST czy DELETE. Założenie jest bardzo proste, a dzięki własne takiemu podejściu bardzo przenośne- ułatwiamy konsumowanie takiego serwisu przez inne technologie.

    Na czym polega prostota?
    Dzięki prostemu mechanizmowi generowania adresów URL można wybierać dane z modelu podłączonego do serwisu. Poniższa tabelka pokazuje kilka prostych przykładów na “wyciąganie” danych z serwisu:

    Wszystkie encje /Zamowienia
    Pojedyncza encja /Zamowienia (123)
    Jedna właściwość /Zamowienia (123)/Nazwa
    Link do innej encji (join) /Zamowienia (123)/Kategoria
    Link do właściwości konkretnej powiązanej encji /Zamowienia (123)/Kategoria(‘piece')/Nazwa
    Prosta wartość /Zamowienia (123)/Nazwa/$value
    Sortowanie /Zamowienia ?$orderby=Nazwa
    Stronicowanie /Zamowienia ?$top=10&$skip=30
    Filtrowanie /Zamowienia ?$filter=Created gt '2007-05-07'
       


    Jednym z ważniejszych czynników jest bezpieczeństwo. ADO.NET Data Services pozwala na autentykacje WCF, ASP.NET Membership lub własny. Mamy także możliwość ustalenia dostępu do każdej encji (tabeli) z osobna.

    Przykładowy przykład, czyli jak to zrobić szybko…

    Otwieramy Visual Studio i tworzymy nowy projekt:
    1
    Dodajemy nowy element do projektu, model bazy danych w wykonaniu Entity Framework, LINQ też może być modelem, ale w tym przypadku byłoby więcej kwestii do ogarnięcia, dlatego tą możliwość przedstawię w innym poście:
    2
    Wybieramy tryb generowanie modelu na podstawie bazy danych:3

    Tworzymy nowe połączenie do bazy:
    4
    Ostatnim krokiem w tworzeniu modelu jest wybranie potrzebnych tabelek, widoków…
    5 

    Po utworzeniu modelu musimy stworzyć ADO.NET Data Service, który udostępni nam nasz model:

    6

    Dostaniemy serwis, z klasą przedstawioną niżej. W klasie tej należy poprawić DataSerivce, gdzie zamiast komentarza podajemy klasę z naszym modelem bazy oraz należy odkomentować sekcje “config”, gdzie ustawimy dostęp do naszych encji z modelu. W moim przypadku wstawię w miejsce nazwy encji “*”, co będzie oznaczać odniesienie do wszystkich encji:

    7

    8

    Po uruchomieniu powinniśmy zobaczyć poniższy ekran. To jest właśnie “reprezencja” naszych danych…9

    Jeżeli odpowiednio zmodyfikujemy URL będziemy mogli dostać się do konkretnych encji poszczególnych tabelek:10

    Mam nadzieje, że zainteresowało Was takie rozwiązanie.  W następnych postach postaram się umieścić kilka praktycznych wskazówek dotyczących ADO.NET Data Services.

    April 19

    Lubelskie Dni Informatyki 2009

    Ponad dwa lata temu zrodził się pomysł na imprezę informatyczną jakiej region Lubelski jeszcze nie miał. Wtedy nie myślałem, że będzie możliwe wdrożenie z powodzeniem tego pomysłu, ale dzisiaj kiedy ogłaszam już drugą edycję jestem pewien, że to było dobre posunięcie.

    LDI Logo 150x150

    W tym roku po raz drugi zapraszając na Lubelskie Dni Informatyki chciałbym zwrócić uwagę, że mimo tego, że mamy “kryzys” wiele firm chciało nam pomóc i pojawić się na konferencji w roli merytorycznej wysyłając prelegenta czy to w roli sponsora pomagając nam spiąć wszystkie sprawy do kupy.

    Ciągle się rozwijamy i w tym roku zamierzamy zrobić jeszcze lepsze wydarzenie. Zaprosiliśmy prelegentów z Poznania, Wrocławia i Warszawy. W ciągu trzech dni zaprezentujemy przybyłym gościom najróżniejsze technologie, wychodząc od walki z wirusami, przez multimedialne możliwości dzisiejszych frameworków do tworzenia stron, po marketing i pozycjonowanie aż do metodologii pracy grupowej. Każdy znajdzie coś dla siebie.

    W tym roku także wystąpię z własną sesją. Tym razem opowiem o nowym trendzie jaki pojawia się na rynku IT czyli uruchamianiu aplikacji i usług w chmurze. Przykładem będzie dla mnie technologia Azure.

    Wszystkich zainteresowanych odsyłam na stronę http://lubelskiedniinformatyki.pl . Do zobaczenia w tym magicznym miejscu, w Lublinie :)

    P5070592

    April 03

    Microsoft Technology Review 2009, II spotkanie

    To drugie z cyklu czterech spotkań technologicznych organizowanych przez Microsoft. Zapoznasz się na nich z nowymi systemami Microsoft Windows, rozwiązaniami wirtualizacyjnymi oraz narzędziami umożliwiającymi zarządzanie środowiskiem IT opartym na systemach Microsoft.

    Na najbliższym spotkaniu będzie można zobaczyć prezentacje na temat wirtualizacji, nowych funkcjonalności IE8 oraz najważniejszych technologii zabezpieczeń w Windows 7 (w tym UAC, BitLocker ToGo, AppLocker). Będzie też krótki show o IE8. Zobacz szczegółowe opisy sesji i zarejestruj się już dziś. Liczba miejsc jest ograniczona. Rejestracja będzie potwierdzona mailem zwrotnym w czasie 48h.

    Spotkanie odbędzie się 15 kwietnia (Środa), agenda spotkania:

    Godzina

    Sesja

    Prelegent

    10:00 – 10:15

    IE8 Show

    Patryk Góralowski

    10:15 – 11: 30

    Wirtualizacja
    Gość specjalny spotkania, który pracuje w grupie przygotowującej i programującej Hyper-V w Microsoft w Redmont, USA. Opowie o Wirtualizacji, odpowie na Twoje pytania.

    Bartłomiej Nowierski

    11:30 – 11:45

    Przerwa

     

    11:45 – 12:30

    IE8.0 nowa wizja przeglądarki, przegląd funkcjonalności.

    Od niedawna ze strony http://microsoft.com/ie8 można pobrać najnowszą przeglądarkę Internet Explorer 8 w finalnej wersji. Dlaczego warto rozpocząć korzystanie z IE8? Co się zmieniło od czasów IE7 i IE6? Co to są i jak działają WebSlices? Na czym polega izolacja kart, przeglądanie InPrivate? Jak dostosować przeglądarkę do swoich potrzeb?

    Paula Januszkiewicz

    12:30 – 13:15

    Obiad

     

    13:15 – 14.30

    Technologie zabezpieczeń i kontroli w Windows 7

    Dowiesz się dlaczego Windows 7 jest najbardziej bezpiecznym systemem z rodziny Windows Client. Podczas prezentacji pokazane zostaną szczegółowo najważniejsze technologie zabezpieczeń – User Account Control, szyfrowania – BitLocker, i kontroli – AppLocker oraz udoskonalone polityki inspekcji. Jeżeli szukasz informacji o nowościach i zmianach w zakresie bezpieczeństwa systemu z perspektywy Specjalisty IT, jeśli oczekujesz technicznych konkretów - ta sesja jest dla Ciebie.

    Łukasz Foks

    Jak wyłączyć debugowanie skryptów JavaScript w Visual Studio 2008

    Jakiś czas temu musiałem się silnie związać z Java Script z uwagi na tworzone przeze mnie rozwiązania. Wtedy wytykanie wszystkich błędów w skryptach przez Visual Studio mi nie przeszkadzało, lecz od pewnego czasu na szczęście już nie muszę się martwić edycją tych skryptów, a Visual Studio ciągle stoi na straży i przypomina kiedy może, że nadal coś tam może być nie tak.

    Znalazłem na CodePlex bardzo fajny Add-in do środowiska, który pozwala jednym kliknięciem włączyć/wyłączyć debugowanie skryptów. Już nie trzeba szukać w opcjach IE i restartować przeglądarki. Polecam wypróbować, link tutaj.

    jsdebug

    December 30

    C# => JavaScript - cuda?

    Żyjemy w XXI wieku, czasach portali WEB 2.0, a może już 3.0. Nie bawią już nas statyczne strony, dzisiaj chcemy by strony internetowe były bardziej "żywe", więcej migało, więcej się ruszało, by wyglądem przypominały aplikacje, które uruchamiamy w systemie operacyjnym.
    Odpowiedzą na to wszystko okazał się AJAX, już kiedyś odkryty ale szybko zakopany ze względu na brak zainteresowania, dziś odkopany i wykorzystywany na potęgę.

    AJAX to skrót, które kryje za sobą kolejne technologie- tym razem JavaScript i XML. Od lat znamy JavaScript i XML, można by pomyśleć, że połączenie tych technologii nie będzie niczym trudnym. Wystarczy usiąść i poklepać kod, który za chwile przeglądarka wykona asynchronicznie wymieniając się z serwerem kodem XML co w efekcie powzoli nam się cieszyć zmianą wyglądu strony bez koniczeności przeładowania jej...

    Problem pojawia się kiedy piszemy skomplikowane portale gdzie sporą trudność może sprawić dobry podział "odpowiedzialności" pomiędzy kod główny "php/asp.net", a kod asynchroniczny "javascript".
    W drodze ewolucji powstało trochę Frameworków ułatwiajacych pracę, pozwalających na mocne przenikanie się technologii w projekcie, tworząc przy tym czasem sporo zamieszania, ale starając się to wszystko jakimś cudem utrzymać w kupie.

    Sporo poczytałem i doszedłem do jednego wniosku, Web 2.0 to już standard, czas nauczyć się tych cudownych rzeczy, które tworzą te piękne portale. Jak smutny programista, którego oderwano od .NET musiałem pewnego dnia usiąść i zmusić się do nauki JS, wmawiając sobie dla dobra siebie użytkowników moich stron warto się tego nauczyć - przecież swoją praca chcemy dawać innym radość, a widział ktoś tysiące użytkowników przesiadujących na statycznych przydkich stronach, ja nie- a ty?

    ....i mógłby to być koniec historii gdyby nie wiadomość, która podziałała jak wiadro zimnej wody wylanej na ospałego programistę. Mogę generować kod JavaScript pisząc w C# - - - jak to, jeszcze raz, przecież od dawna było wiadomo, że moge położyć jakąś kontrolkę na stronie i coś się tam pogeneruje w JavaScript (ale przecież ktoś to napisał już, a jedyne co moge zmienić to parę właściwości, które nie wpływają na zmianę kodu a jedynie na ścieżkę jego wykonywania).

    Otóż jakiś gość z Microsoftu miał na tyle wolnego czasu, że postanowił zmienić bieg historii, którą znamy od dawna, postanowił kijem zmienić bieg rzeki i tak zmienił słowa w czyny i przygotował narzędzie, które zamiast kompilować kod C# do MSIL kompiluje kod C# do JavaScript i to w taki sposób, że kod jest czytelny i w miarę zrozumiały. Narzędzie to zwie się Script#.

    Chcesz zobaczyć jak to działa? Zainstaluj pakiet ze strony http://projects.nikhilk.net/ScriptSharp. Po instalacji odpal Visual Studio i stworz projekt Script#-enabled Web site. MIłej zabawy :)

    1
    Nowy projekt

    2
    Widok mieszany, Scriptlet to obiekt do którego możemy dopisywać kod C#, który zostanie zamieniony na JavaScript

    3
    Na obiekcie wybieramy Edycje kodu C#...

    4
    W nowym oknie możemy edytować kod klasy, mamy IntelliSense, pomoc ReSharpera - ogólnie to co przy zwykłym pisaniu kodu

    No i na koniec mamy dylemat. Niby wszystko jest dobrze, programiści C# piszą w C#, część kodu później jest zamieniana na JavaScript, część na MSIL, a część jeszcze na coś innego, ale czy to wszystko jest wporządku? Zastanówmy się czy programista pisząc kod, który później "zamieni" się na JavaScript bez znajomości tego drugiego nie popełni gdzieś błędu, czy nie będzie chciał zrobić czegoś co nie jest dozwolone... a może to po prostu obawa, przed nowym znakiem czasów jakie nadchodzą, kodem coraz bardziej generowanym z języka X do języka Y. Czy na pewno potrzebujemy takiego stopnia abstrakcji by zamieniać jeden język innym językiem?

    No i po tym wszystkim to ja już nie wiem co mam robić, czego się uczyć- biore urlop, może w tym czasie ktoś wymyśli jeszcze coś fajniejszego. W przyszłości umieszczę tu parę projektów w Script#, próbując zbadać technologię, jej mozliwości i zagrożenia.

    October 12

    Microsoft Technology Summit 2008 and Bloggers Underground

    W poprzednich wpisach reklamowałem dwie imprezy - MTS2008 i Bloggers Underground. Oba te wydarzenia odbyły się w poprzednim tygodniu i nie pozostaje mi nic innego jak opisać to co tam zastałem.

    Bloggers Underground

    Impreza odbyła się na warszawskiej starówce 7 października czyli kilka godzin przez MTS. Impreza zorganizowana w podziemiach lokalu Leżaki idealnie pasowała do nazwy wydarzenia. Chociaż szukałem lokalu przez pół godziny to jednak udało mi się być jednym z pierwszych na miejscu. Frekwencja przerosła moje oczekiwania, mogliśmy zobaczyć dziesiątki osób, które już aktywnie prowadzą blogi i parę osób, które będą w najbliższym czasie zaczynać. Parę osób przygotowało krótkie 10min sesje powiązane tematycznie z blogiem, dzięki czemu mogliśmy się dowiedzieć jak dobrze prowadzić bloga, dlaczego pisać bloga w jezyku angielskim i wiele wiele innych.
    Za całość byli odpowiedzialni Karol Stilger, Aneta Sidorowicz i Łukasz Foks. Bardzo dziękuję za zaproszenie, było super!

    blogday 

    MTS, pierwsze wrażenia

    To co jest jedną z ważniejszy kwestii w tego typu imprezach to ludzie! Kiedy rok temu pojechałem na Microsoft Security & Developer Days nie znałem praktycznie nikogo, w tym roku było całkiem inaczej. W gronie znajomych świetnie się komentowało "na żywo" całe wydarzenie, które niestety nie było idealne, ale o tym dalej.

    1_wejscie 2_ludzie

    Uważam, że kwestie organizacyjne mają bezpośrednie przełożenie na zadowolenie osób będących na konferencji i dlatego trochę mnie zirytowało jak do tego podszedł w tym roku Microsoft.

    Pierwsza rzecz to oznaczenia sal. Każda osoba, która odebrała pojawiłą się na konferencji dostała plan budynku. Były tam narysowane wszystkie poziomy, na których odbywać się będzie wydarzenie. Niestety poziomy te nie miały oznaczenia "piętro" przez co można było błądzić w nieskończoność. Jednym z takich przypadków jest Mobilne centrum edukacyjne Altkomu. Wraz ze znajomymi chciałem tam dotrzeć bo mieliśmy jeszcze sporo czasu do sesji generalnej. Niestety osoby z obsługi nie mogły się zdecydować i niektórzy twierdzili, że centrum jest na 4, a inne że na 6 piętrze. Dodając do tego, że nie wszystkie windy jeżdzą na wszystkie piętra (nawet mając odpowiednie przyciski) i to, że zjeżdzając złą windą w drodze powrotnej można było wylądować poza obszarem konferencji można to podsumować bardzo słabo. Nam się udało w końcu dotrzeć, zapisać na egzamin na 11:00, który jednak się nie odbył bo...Altkomowe centrum padło.

    Ścisk jaki panował na sali z jedzeniem moim zdaniem był nie do zaakceptowania. Nie dlatego, że byłem cągle głodny i nie mogłem się dopchać, ale dlatego, że ta sala była też miejscem gdzie byli partnerzy konferencji, a zniektórymi chciałem porozmawiać oraz było to miejsce przez które przechodziło się do wielu sal wykładowych. W pierwszym dniu ścisk był umiarkowany, ale w drugim przekroczyło to granice wytrzymałości.

    Kiedy czytałem na WSS przed MTS wpisy ludzi zastanawiających się czy w tym roku będziemy obiad konsumować na podłodze trochę nie chciałem wierzyć w to, że ludzie, którzy zapłacili za event będą mogli w takich warunkach jeść. W drugim dniu widziałem ludzi siedzących na schodach lub na ziemi z talerzykiem na kolanach i jedzących obiad. SZOK, a wystarczyłoby parę dodatkowych stolików.

    Tyle, nie będę się pastwił już nad organizacją, teraz czas podsumować merytoryczność wykładów na jakich się zjawiłem.

    Stoisko społeczności offline

    W ciągu dwóch dnich trochę czasu spędziłem przy tym stoisku. Tutaj najwięcej znajomych udało mi się spotkać w ciągu całego wydarzenia. Przy tym stoisku prawdopodobnie narodziło się wiele nowych grup, wiele nowych członków grup. Mam nadzieje, że świadomość ludzi o tym, że takie grupy istnieją wzrosła i zainteresowanie nie tylko wzbudzały rozdawane ołówki czy pluszaki, ale działalność grup i pasja osób je prowadzących.

    3_spolecznosc

    Sesja generalna

    4_intro 5_wsazka

    Na początku mogliśmy wysłuchać jak prezesi firm Microsoft, Dell i Intel słodzą sobie tworząc atmosferę rodem z programu "Rozmowy w toku". Krótką chwilę zajęło im zastanawianie się nad sensem komputera w domu, później postanowili pochwalić się ile każda z firm zasadziła drzew. Teraz już wiem, że Dell sadzi rocznie tyle drzew ile sprzedał komputerów, a polski oddział Microsoft choć nie podał takiego prostego przelicznika to jednak niedługo wybiera się nad morze sadzić drzewa - intel w tej kwestii milczał. Musiałem przeczekać to, bo za chwile miał się na scenie pojawić Mariusz Jarzębowski ze swoją opowieścią o zmianie interfejsu Office. Przez kilkadziesiąt minut mogliśmy się dać porwać opowieści, która miała uświadomić, że do 2003 roku Microsoft nie patrzył na opinie ludzi używających ich oprogramowania, że wciąż dodawał nowe narzędzia do już przeładowanego interfejsu Office'a. W tym właśnie roku jednak postanowił coś zmienić, zauważając, że narzędzia, które tworzą zatraciły gdzieś duszę, że ludzie nie chcą już używać przeładowanego Worda nie mogąc znaleźć w nim podstawowych opcji. Tak właśnie narodził się Ribbon, czyli wstążka, którą możemy dziś podziwiać w Office 2007. Szkoda, że dopiero teraz Microsoft tłumaczy dlaczego tak drastycznie przebudowano to jedną z flagowych narzędzi. Miałem okazję widzieć prezentację Mariusza po raz drugi, a już niedługo będę miał okazję z ramienia Microsoft sam ją prowadzić na polskich uczelniach. Na prezentacji gościa z TP wyszedłem, uznałem, że nie interesuje mnie jakie możliwości daje TP swoim klientom w budowie własnych stron.

    Metody i sposoby testowania oprogramowania - Piotr Ślęzak

    Napaliłem się na sesje dlatego, że ostatnio się przekonałem, żę o testowaniu nie wiem wiele choć zajmowałem się tym pare miesięcy w pracy. Uznałem, że MTS bedzie idealnym miejscem na pogłębienie wiedzy w tym temacie. Niestety po 15min poczułem się jak na wykładzie na Uniwersytecie, po 25min już ledwo mogłem wytrzymać slajdy przeładowane teorią akademicką a po 40min wyszedłem. Później jeszcze rozmawiałem z paroma osobami, które zostały do końca- ogólnie wychodząc prędzej nic nie straciłem.

    Speaker Idol

    Konkurs dla tych którzy by chcieli wystąpić na przyszłorocznej edycji MTS. Aż załowałem że nie wysłałem swojego zgłoszenia, ale za rok zrobię to na pewno po tym co zobaczyłem. Świetna zabawa + dobra publika. Niestety wszystko działo się w przerwie na obiad przez co ludzi słuchających było trochę mało. Każdy miał 3min na to by zaprezentować dowolny temat, moim zdaniem wszyscy sobie poradzili bardzo dobrze, na drugim zdjęciu możemy zobaczyć Kubę, który za rok wystąpi na MTS! Gratulacje.

    6_spi1 7_spi2

    8_spi3all 9_spi4eug

    Praktycznie aspekty budowania rozwiązań klasy Enterprise z wykorzystaniem produktów Microsoft Patterns and Practises - Marcin Sieradzki

    Choć od rana wiało porażką to jednak postanowiłęm się nie zrażać. Ta sesja dlatego, że EntLibem się już trochę czasu bawię, poczytałem trochę blogów ludzi, którzy twierdzili, że się na tym znają, parę osób nawet wyprodukowało webcasty, które też udało mi się z zaciekawieniem zobaczyć. Wszyscy wszędzie piszą, że EntLib jest super i w większych projektach świetnie się skaluje, daje duże możliwości. Skogo gość w temacie obiecał, że "praktycznie" pokaże jak się to powinno stosować w większych projektach to muszę to zobaczyć. Niestety podczas 75min dowiedziałem się, że firma, w której prowadzący pracuje (Sygnity) ma produkt Documan, że jeden z twórców siedzi na sali i że produkt działa w oparciu o dobre praktyki EntLiba. Druga sesja i dalej nie wiem nic.

    Klocki nie tylko do zabawy - platforma do efektywnego tworzenia zaawansowanych aplikacji Web - Artur Żarski

    Temat był tak zbudowany, że idąc nie wiedziałem o czym będzie sesja. Teraz wiem, że to był jednej z lepszych moich wyborów. Myśląc o tym co Artur robi w Microsoft można by pomyśleć, że sesja będzie trochę dotykała Sharepointa i innych "cięzkich" technologii. Okazało się coś całkiem odwrotnego. Artur pokazał jak się można bawić tworząc strony. Technologia, którą omawiał to PopFly.

    10_popfly 11_popfly2

    W końcu coś ciekawego. Prowadzący wpadł na świetny pomysł, że ktoś z publiczności zbuduje z nim prostą grę w 15min - dobra zabawa, dużo smiechu. Może nie po to przyszedłem na MTS, bo jednak nastawiłem się na bardziej techniczne sesje, ale ta prezentacja pozwoliła mi mieć nadzieje, że dalej może być tylko dobrze. Swoją drogą technologia mnie na tyle zainteresowała, że może to będzie jeden z tematów moich przyszłych wykładów, czy to na grupie czy konferencjach ITAD.

    Wybrane koncepcje architektoniczne - jak organizować rozbudowane systemy Informatyczne (oraz jak ich nie organizować) - Tomasz Kopacz

    Tomek to gwarancja udanej sesji. Dlatego poszedłem na jego sesje choć nie miałem jej w swoim harmonogramie. Przez ponad godzine mogliśmy posłuchać o tym jak dzisiaj się buduje oraz jak się powinno budować systemy informatyczne. Dużo było o popularnym SOA. Trochę teoretyzowania ze strony prelegenta tylko zachęcało do własnych przemyśleń. Z tej sesji byłem bardzo zadowolony - świetne zakończenie dnia.

    Spotkanie w Hard Rock Cafe

    Impreza jest nieodłącznym kompanem konferencji takich jak ta.  Mało kiedy tak wiele znajomych pojawia się w jednym miejscu. Microsoft zorganizował imprezę dla 100 osób, między innymi dla pracowników swojej firmy, prelegentów i liderów grup zawodowych. Niestety impreza była zamknięta i nie można było spotkać tam wszystkich znajomych, którzy byli na konferencji. Atmosfera była fajna przez co udało mi się tam wysiedzieć do północy. Sceneria samego lokalu jest bardzo fajna i wszystkim, którzy tam jeszcze nie byli polecam.

    12_rock1 13_rock2

    Bezpieczeństwo serwisów WWW - praktyczne uwagi o implementacji zaleceń DBTI ABW w ASP.NET - Zbigniew Łapiński

    Pierwsza sesja drugiego dnia. Specjalnie wstałem wcześnie rano, a prosto nie było (impreza- patrz wyżej). Pomyślałem sobie, że skoro buduje duże portale w ASP.NET to warto by było sprawdzić czy zabezpieczenia, które stosuje są wystarczające. Prelegent, który jest z Agencji Bezpieczeństwa Wewnętrznego miał być tego gwarantem.

    Niestety!!! Okazało się, że mogłem trochę dłużej pospać sobie w domu, bo prezentacja była bardzo słaba. Podczas 75min prelegent przytoczył wiadomości, które na studiach każdy z nas przerabiał, między innymi o tym, że aby aplikacja była bezpieczna jest potrzebne dobre źródło prądu no i jeszcze jakiś zasilacz awaryjny. Na koniec parę przykładów pokazujących jak się bawić plikami config i podpisywać aplikacje. Niestety przykłady były krótkie i słabo się komponowały z prezentacją.

    14_aspnetabw

    Organizacja dostępu do danych w aplikacjach WWW - Tomasz Kopacz

    Drugi dzień konferencji i po raz drugi pojawiam się na sesji Tomka. Czasem odrywam się od tematu sesji i zastanawiam się jak człowiek może z taką pasją opowiadać o tak czasem skomplikowanych rzeczach. Podczas tej sesji jednak niewiele było czasu na oderwanie się ponieważ było sporo materiału, i to na wysokim poziomie. W końcu ktoś powiedział, że DataSetów się nie uzywa na stronach WWW, poza tym sporo przykładów, porównań prędkości poszczególnych technologii- jak się okazało LINQ2SQL wcale nie wychodzi tak źle na tle innych tle innych rozwiązań. Sporo o WCF i best practises o budowaniu warstw dostępu do danych sprawiło, że warto było się pojawić.

    15_kopacz1 16_kopacz2

    Programowanie mobilne - Bartosz Zass

    Ostatnio trochę programuję na urządzenia mobilne więc postanowiłem wybrać się na sesje Bartka. Nie żałuję, choć nie dowiedziałem o niczym czego bym już nie wiedział to jednak sesja była bardzo dobrze poprowadzona za co duży plus dla prowadzącego. Kiedy przychodzi się na prezentacje znając już temat mało który prelegent potrafi zainteresować na tyle by człowiek nie odrywał się od prezentacji, Bartowi się to udało i to tylko świadczy o jego poziomie, choć przed prezentacją było widać, że się denerwował troszkę. Prezentacja była dość ryzykowna dla prowadzącego bo zakładała dużą interakcję z salą. Był program, który czekał na sms od widowni, choć numer telefonu podany na ekranie nie był prawdziwy, to jednak Bartek zdradził paru osobom ten działający i parę śmiesznych sytuacji było podczas sesji. Dużo śmiechu i przy tym dużo wiedzy praktycznej.

    17_bartek1 18_bartek2

    Testy w Visual Studio Team System 2008 - Artur Jedynak

    Wybrałem się jeszcze raz na sesję o testach. Bardzo chciałem by ta sesja nie była tak nudna jak poprzednia, na której byłem w pierwszym dniu. Tym razem było super. Człowiek świetnie przygotowany, doskonale sobie poradził z zaprezentowaniem technik testowania przy użyciu Visual Studio przy okazji odpowiadając rzeczowo na pytania widowni.

    19_testy

    Sesja kończąca

    Organizatorzy postarali się by podczas sesji kończącej sala nie byłą pusta i przeniesiono finał konkursu Speaker Idol właśnie na ten czas. Ja poszedłem tylko z tego powodu tam i sądzę, że nie byłem jedyny. Duże wrażenie dla finalistów robiła sala kongresowa, na pewno to było spore utrudnienie- ale moim zdaniem wszyscy sobie dobrze poradzili. Miałem dwóch faworytów, jeden z nich wygrał - gratulacje dla Kuby. Będziemy go mogli zobaczyć za rok jako prelegenta!

    20_spifinal1

    Podsumowanie

    Imprezę podsumuję bardzo pozytywnie, choć nie wszystko było idealne to jednak nie ma większej imprezy w Polsce, która opowiadała by o technologiach Microsoft. Szansa wysłuchania sesji (nie zawsze do końca związanych z tematem) dała mi bardzo dużo, bo choć sam prelegent nie pokazał za dużo to czasem wystarczy to do tego by samemu się zainteresować daną technologią.
    Chciałbym by Microsoft wyciągnął wnioski z tej imprezy. By ludzie tworzący konferencję poczytali blogi uczestników i spisali sobie listę zarzutów. Jeżeli choć parę rzeczy uda się za rok naprawić będzie bardzo dobrze. Dla mnie wciąż wzorem jest impreza z przed roku, gdzie większości tegorocznych błędów nie widziałem.

    September 23

    Bloggers Underground

    Na blogu ostatnio nic się nie dzieje, a to dlatego, że zaczynam się przenosić do Warszawy. Nowa praca, nowe obowiązki i sprawy związane z uczelnią sprawiają, że nie mam czasu chwilowo pisać, ale już niedługo będzie można tutaj przeczytać o Silverlight 2, ADO.NET Data Services i innych nowych technologiach wydanych przez Microsoft.

    Kilka dni temu dostałem zaproszenie od Karola Stilgera (MVP), na imprezę o nazwie Bloggers Underground. To spotkanie osób piszących blogi o tematyce IT. Każdy podczas spotkania będzie mógł przedstawić ciekawe "case study" lub po prostu opowiedzieć ciekawą historię. Szykuje się bardzo fajne spotkanie spotkanie w super obsadzie. Po prostu super pomysł Karol!

    To wszystko dzień przed MTS, o którym już tu pisałem. Jeżeli nie spotkamy się na Bloggers Underground to do zobaczenia na MTS 2008!

    July 17

    Przedłużenie promocji na MTS 2008

    MTS2008_480_95_A-do22lipca

    Microsoft zmienił zdanie i postanowił przedłużyć promocję cenową do 22 lipca na MTS (o tym wydarzeniu pisałem więcej wątek wcześniej). Zachęcam wszystkich do zapoznania się z ofertą, szczególnie, że teraz z dnia na dzień na stronie przybywa prelegentów, którzy z tego co już możemy zauwazyć są gwarancją udanego wydarzenia. Zapraszam do portali społecznościowych takich gdzie są informacje o tym jak uzyskać dodatkową zniżkę:

    - CodeGuru - http://codeguru.pl
    - WSS - http://wss.pl

    Do zobaczenia 8-9 października!