Sprzedaj swój stary telefon Czy masz może w szafie tak stary telefon, że wydaje się, że musiałbyś komuś zapłacić aby go od Ciebie zabrał? Jeśli tak, to mam dla Ciebie świetne rozwiązanie, zrób z niego pożytek i sprzedaj go w Top Dollar Mobile. Jakiś czas temu natrafiłem w sieci na artykuł, który opisywał wejście TDM na rynek polski. Pomysł...

Czytaj dalej

Podsumowanie roku 2011 Czas na podsumowanie minionego roku. W ostatnich 12 miesiącach na blogu pojawiło się  tylko 18 wpisów - tragedia. W poprzednim roku (2010), niepełnym, bo blog powstał w maju, wpisów było 44.  W 2011 roku witrynę odwiedziło 3307 unikalny użytkowników (spadek prawie o 50%), którzy wygenerowali 4326 odwiedzin (6190 odsłon)....

Czytaj dalej

Prawdziwy Android Gingerbread Idą święta. Czas na pierniki - androidowe :) Składniki: 300 g mąki pszennej, 100 g mąki żytniej pełnoziarnistej, 2 duże jajka, 13 dag cukru pudru, 10 dag masła, roztopionego, 10 dag miodu, 1 łyżka przyprawy do piernika, 1 łyżka kakao, 1 łyżeczka sody oczyszczonej. Wszystkie składniki wsypać do naczynia, wymieszać...

Czytaj dalej

Do czego służy laptop? Wracając z wakacji we wrześniu, czekając na przesiadkę na lotnisku w Brukseli, zostałem uświadomiony do czego w dzisiejszych czasach służy laptop... to po prostu podstawka pod iPad'a :)

Czytaj dalej

Wideo GTalk w Warszawskim Metrze W weekend przeprowadziłem ciekawy eksperyment. Siedząc w pędzącym metrze, trzymając w ręku Galaxy Taba 10.1, łączącego się z siecią poprzez operatora Play (jedyny dostępny "pod ziemią") nawiązałem wideochat z osobą na powierzchni :) Niby nic, ale żebyście widzieli miny osób siedzących obok :) Bezcenne! Wideoczat w wersji...

Czytaj dalej

Google Docs

Uwielbiam Microsoft Office. Przy pomocy tego pakietu napisałem dwie prace dyplomowe, stworzyłem wszystkie dotychczasowe prezentacje i wykorzystałem mnóstwo arkuszy kalkulacyjnych. Jednak z chwilą, kiedy dostęp do dokumentów stał się dla mnie ważny z każdego miejsca na ziemi, przesiadłem się na Google Docs.

Tak – Google Docs. Bartosz Milewski, autor wpisu na SpidersWeb  ”Google Docs i Cloud Connect w walce z Microsoft Office”, napisał, że „Google Docs jest darmowy i oferuje prawie tą samą funkcjonalność…„. Oj, to chyba nie do końca jest prawdą. Przestrzeń funkcjonalności, jaka dzieli te dwa produkty, jest ogromna. Zauważyłem to, kiedy po raz pierwszy użyłem pakietu biurowego spod znaku internetowego giganta. Czytaj dalej

Rekrutacja do Microsoftu

Na mojego uczelnianego maila trafiła niedawno wiadomość o ostatnim etapie rekrutacji na Intership do siedziby Microsoft w Redmond. Dziekani wydziałów (techniczno) informatycznych najlepszych uczelni w Polsce do końca listopada mieli zgłosić dowolną ilość studentów na pierwszy etap rekrutacji. Moje dni na tej uczelni są już policzone, więc nie było sensu startować, ale przypomniało mi to moją dawną rekrutacje do Microsoftu.

Zanim jednak przedstawię Wam swoją historię, chciałbym polecić wszystkim wpis Jarosława Kowalskiego, który opisał swoją pomyślną rekrutację do Microsoftu oraz całą przeprowadzkę z rodziną do USA. Czytałem tę notkę milion razy, w marzeniach widząc tam siebie. Eh… ;] Portal developers.pl, na którym sam kiedyś pisałem, już nie istnieje, blog Jarka również, ale możemy cofnąć się w czasie przy pomocy web.archive.org i zobaczyć wersję zapamiętaną dnia 18/11/2007. Wpis Jarka opisujący rekrutację został stworzony 29/06/2006 i jest dostępny tutaj. Jarek nadal pracuje w Microsofcie, jego aktualny blog dostępny jest pod adresem jkowalski.com. Czytaj dalej

Dwie świetne sesje o ASP.NET MVC 2

Na kanale 9 znalazłem dwie świetne sesje o ASP.NET MVC 2. Jeśli do tej pory nie miałeś okazji poznać tej technologii, to te dwa nagrania są właśnie dla Ciebie! Nie oznacza to, że bardziej wtajemniczeni nie znajdą tam czegoś dla siebie – znajdą! Gwarantuję.

Obydwie sesje prowadzi Scott Hanselman, najzabawniejszy prezenter jakiego miałem okazję oglądać. Nie używa PowerPointów i często zdarza mu się uciekać od tematu, ale spokojnie, po chwili do niego wraca, po prostu musi powiedzieć coś śmiesznego ;] To on stworzył NerdDinner – aplikacje, którą zna każdy programista ASP.NET MVC. Hanselman jest także współautorem książki Professional ASP.NET MVC 1MVC 2.

Te dwie sesje to:

  • ASP.NET MVC 2: Basics – całkowite podstawy, zaczynamy od File > New Project. Żadnej większej teorii czy rozwodzenia się na temat MVC – konkrety i jeszcze raz konkrety. Nie ma dużo kodowania, ale cały czas spędzimy w Visual Studio.
  • ASP.NET MVC 2: Ninja Black Belt Tips – triki Ninja mówią same za siebie ;] Hanselman pokazuje, jak działa T4 (narzędzie do generacji kodu z szablonów) w MVC, prezentuje różne silniki renderowania, a także nowości w MVC2 m.in. EditorFor, DsiplayFor.

Obydwie sesje zostały nagrane podczas holnderskiego DevDays w kwietniu tego roku.

Miłego oglądania ;]

Promuj

PDC 2010 OnLine Experience – Relacja

Wybrałem się wczoraj do siedziby Microsoftu w Warszawie na relacje z otwarcia konferencji PDC 2010. Punkt 17:30 stawiłem się u bram budynku na Al. Jerozolimskich 195A (tak, znam ten adres na pamięć). Na początek rejestracja, która polegała jedynie na uzupełnieniu pola „Skąd wiesz o spotkaniu?”. Zero kontroli, każdy mógł wpaść, wolnych miejsc było sporo. Stojąc w kolejce do owej „rejestracji” można było zagrać na XBox’ie 360 z dostawką Kinect/Natal! Bajer!!!

Wybiła 18:00 zaczynamy! Przed keynotem puszczono prezentację wszystkich ośrodków, które biorą udział w akcji OnLine. Z każdego kontynentu wybrano jeden, z którego na chwilę pokazano obraz z kamery. Europę reprezentowała Holandia. Konferencję otworzył Steve Balmer, CEO Microsoftu. Nie było „developers, developers, developers…”, szkoda, widać lata już nie te. W Warszawie rok temu widziałem go na żywo i miał troszkę więcej energii. Nie zabrakło jednak typowego dla niego „bla bla bla” oraz „…. it, baby”  W całej prezentacji skupiono się na dwóch rzeczach: Windows Azure oraz Windows Phone 7. Zaskoczyło mnie to trochę, bo rok temu głównym tematem była właśnie chmura. Jak widać Microsoft wierzy, że tutaj jest przyszłość – przyznam się, że wierzę i ją ;]

No i najważniejsza sprawa. Microsoft poszedł w ślad Google i swoim gościom wręczył lśniące telefony z WP7. A my? My nie dostaliśmy. Na sali krążyły dwie „siódemki”, ale żadna do mnie nie dotarła. Nie płakałem, bawiłem się nią już jakiś czas temu, w końcu pracuję w Samsungu :-)

O 20:00 zaczęły się sesje techniczne. Nie zostałem już – trochę się zmęczyłem tym 2 godzinnym keynotem. Wszystkie prezentacje są dostępne są online, więc w wolnej chwili na pewno do nich zajrzę.

Cały event oceniam dość pozytywnie, choć ani popcornu, ani zagryzki nie było ;/ Nie było też jakiegoś otwarcia, „dzień dobry”, po prostu usiedliśmy i puścili nam strumień online, można było się bardziej postarać.

Wszystkich zachęcam do odwiedzenia witryny konferencji: microsoftpdc.com

Promuj

PDC 2010 OnLine Experience

Tak jak oficjalnie ogłoszono na portalu CodeGuru.pl, Microsoft Polska przygotowało specjalną niespodziankę dla fascynatów technologii .NET – bezpośrednią transmisję z PDC 2010 w siedzibie firmy, w Warszawie, na żywo, z Redmond, 28 października o 16:30!

Czym jest PDC? PDC (Professional Developer Conference) to największa konferencja Microsoftu skierowana do developerów.

Czym jest PDC OnLine Experience? PDC OnLine Experience jest eventem, który dedykujemy osobom, które są bliskie naszej firmie i których nie widzimy na co dzień w biurze.

Choć zaproszenia na CG pojawiło się 15 października, to już dzień wcześniej (albo jeszcze wcześniej, kto wie) krążył mail z tymi ‘tajnymi informacjami’. Dziękuję, że i mój adres znalazł się na czyjejś liście, i miałem okazję zarejestrować się wcześniej ;-)

To wydarzenie, z cyklu kto pierwszy ten lepszy i liczba gości ograniczona, a mimo szybkiej rejestracji, trafiłem na listę oczekujących. Opatrzność jednak czuwała i dziś dostałem potwierdzenie ;-) Będę!

Developers, Developers, Developers….

Promuj

Rozszerzamy Visual Studio 2010 – Wstęp

Celem mojej pracy magisterskiej jest nie tylko praca badawcza prowadząca do pewnych wniosków i algorytmów, ale również budowa narzędzia implementującego te algorytmy. W związku z tym, że koncentruję się na analizie statyczne/dynamicznej kodu, postanowiłem rozszerzyć Visual Studio 2010 o swoje własne narzędzie. Celem kolejnej serii wpisów na moim blogu będzie zapoznanie Was z możliwościami rozbudowy, jakie oferuje Visual Studio 2010.

Na samym początku chciałbym wspomnieć o myśli, która niemal co chwila przeplata się we wszystkich artykułach i wszystkich screencast dotyczących Visual Studio Extensibility: kiedyś pisanie rozszerzeń do Visual Studio było bardzo bolesne, teraz jest o wiele, wiele prościej.

Aby rozpocząć swoją przygodę z rozbudową Visual Studio, należy oczywiście posiadać owe IDE w wersji Proffesional lub lepszej oraz pobrać i zainstalować SDK (~10MB) dostępny tutaj [1]. Po pomyślnym zainstalowaniu powinniście w oknie nowego projektu posiadać dodatkową kategorię  „Extensibility” w poszczególnych sekcjach językowych.

Niestety budowanie wtyczek nie jest trywialne i nie da się po prostu stworzyć Hello World bez choćby chwili poświęconej na dokształcenie. Wszystkim zainteresowanym zatem polecam serię screencastów z Development Tools Ecosystem Summit dostępnych na kanale 9 [2]. Myślę, że przebrnięcie przez serię 100 da Wam w miarę jasny obraz sytuacji i bez problemów będziecie mogli stworzyć prostą wtyczkę. Seria 200 jest już bardziej ambitna (ale i trudniejsza), dlatego tym bardziej ją polecam ;-)

Kopalnia wiedzy znajduje się oczywiście w bibliotece MSDN w sekcji Visual Studio 2010 SDK [3]. Polecam ją wszystkim ciekawskim i spragnionym detali developerom. Jest również specjalna strona Extending Visual Studio [4] będąca MSDN’owym punktem wejściowym w świat rozszerzeń Visual Studio.

Nie należy również zapomnieć o blogu zespołu tworzącego Visual Studio [5].

Najlepszym jednak sposobem poznania VSX (Visual Studio Extensibility) jest (po uprzedniej krótkiej lekturze) grzebanie w kodzie. Stworzoną przy pomocy tutoriala wtyczkę rozkładałem na części pierwsze, a wszystkie niejasności sprawdzałem w bibliotece MSDN. Po dwóch takich wieczorach mam już ogólne pojęcie na temat architektury wtyczek, podstawowych zasad ich tworzenia, a także wiem, czego unikać i co należy stosować.

W kolejnych wpisach postaram się Wam pokazać, jak stworzyć już nietrywialne wtyczki. Zapraszam.

Linki:

Promuj

Axum – Agenci w akcji

Powakacyjna kontynuacja serii na temat różnych podejść w pisaniu aplikacji równoległych. Po koniec lipca przedstawiłem model Agenta, a dzisiaj chciałbym przedstawić jego Microsoftową implementację.

Axum to kolejny inkubacyjny projekt z Redmond, tak więc naprawdę nie wiadomo, co się z nim dalej stanie. Model agenta [1], który przedstawiłem w poprzednim poście, został przez giganta potraktowany całkiem poważnie. Solidna implementacja, skalowalność, wtyczka do Visual Studio – to wszystko daje całkiem duże pole do popisu, ale powoli…

Axum to jezyk programowania – pewnie się zdziwiliście - w 99% oparty na C# i w pełni współpracujący z platformą .NET. To narzędzie umożliwiające koordynację niezależnych komponentów aplikacji, definiujące agentów oraz ich interakcje. Jest to język „special-purpose”, więc z miejsca wprowadzona jest tu równoległość.

Najprościej przedstawić Axum budując bardzo prostą aplikację taką jak  kalkulator. Na początek zatem musimy zaplanować, jakie elementy będą nam potrzebne – myśląc naturalnie w świecie agentów. Otóż, potrzebny będzie nam agent wykonujący pojedyncze działanie, np. dodawanie, ale również agent, który przekaże mu dane jednocześnie odbierając je od nas (np. z konsoli), tj. agent utożsamiany z punktem wejściowym aplikacji. Agent powinien również definiować kanał, czyli określenie rodzaju wiadomości, jaką może obsłużyć.

Zacznijmy zatem od kanału. Nazwijmy go MathChannel:

  1. channel MathChannel
  2. {
  3.    input int X;
  4.    input int Y;
  5.    output int Z;
  6. }

Jak widać, kanał definiuje pewne pola zwane portami. Oprócz typu decyduje się również o kierunku. Porty to nic innego jak bufory. Kolejność używania portów przez agenta można zdefiniować w tzw. patternach, ale na tym etapie poznawania Axum nie będą one potrzebne.

Stwórzmy zatem agenta dodawania:

  1. public agent Adder : channel MathChannel
  2. {
  3.    public Adder()
  4.    {
  5.       while(true)
  6.       {
  7.          Z <– ( receive(X) + receive(Y) );
  8.       }
  9.    }
  10. }

Należy zauważyć, że definiując agenta, musimy zdecydować, jaki kanał będzie obsługiwał, a w tym wypadku oczywiście będzie to nasz kanał matematyczny. Jak widzicie, kanał nie decyduje o funkcjonalności, a jedynie o możliwym interfejsie obsługi. Konstruktor tego agenta jest punktem wejściowym. Czytanie z kanału jest blokujące, tak więc łatwo zauważyć, na czym polega działanie agenta: czeka on na parametr, który pojawi się na porcie X w kanale. Jeśli przyjdzie, czeka na Y, a jeśli i ten przyjdzie – na port Z wstawia wynik działania i znów nasłuchuje na porcie X. O ile konstrukcja pobierania z portu jest „normalna”, to wysyłanie wyniku na port operatorem „<–” może troszkę dziwić. Axum definiuje więcej podobnych operatorów.

Czas na kluczowego agenta:

  1. public agent App : channel Application
  2. {
  3.    public App()
  4.    {
  5.       var a = Adder.CreateInNewDomain();
  6.       while(true)
  7.       {
  8.          Console.Write("X: ");
  9.          int x = Int32.Parse(Console.ReadLine());
  10.          a::X <– x;
  11.  
  12.          Console.Write("X: ");
  13.          int y = Int32.Parse(Console.ReadLine());
  14.          a::Y <– y;
  15.  
  16.          int za = receive(a::Z);
  17.          Console.WriteLine("Adder Z: " + za);
  18.       }
  19.    }
  20. }

Agent będący punktem wejściowym aplikacji musi implementować kanał Application, co w tym wypadku polega jedynie na deklaracji. W konstruktorze (czyli w ciele wykonywania agenta) tworzymy pozostałych potrzebnych nam agentów, w tym wypadku tylko jednego – do dodawania. Zauważcie, że stworzony został w innej domenie niż obecny agent, przez co będzie mógł działać równolegle. Następnie najzwyczajniej w świecie pobieramy liczbę z konsoli i wysyłamy ją na dany port agenta – port który definiuje zgodnie z kanałem. To samo robimy z drugim argumentem. Znaną funkcją receive odbieramy wynik. Ciekawy jest sposób dostępu do portów, a mianowicie nie przez kropkę, jak przywykliśmy do tego typu konstrukcji, a przez podwójny dwukropek.

Myślę, że kod jest na tyle prosty, że każdy zrozumiał ideę, ale teraz więcej szczegółów.

  • każdy agent to oddzielny wątek
  • wysyłanie na porty odbywa się przez kopiowanie i jest nieblokujące
  • porty mogą być jedynie typów niezmiennych (immutable) lub w pełni serializowanych
  • możliwe są operacje Multiplex, Combine, Broadcast, Alternate
  • kanały są kompatybilne z WCF

Axum to naprawdę potężne narzędzie, które bez problemu można wpleść w istniejące projekty .NETowe. Jest skalowane, intuicyjne i proste w zaadaptowaniu. W powyższym wpisie przedstawiłem jedynie  zarys funkcjonalności, ale wszystkich gorąco zachęcam do przyjrzeniu się temu narzędziu bliżej.

Dostępna jest wersja Axum zarówno do VisualStudio 2008 oraz 2010 [2]. Dla ciekawskich powyższy projekt powiększony o jeszcze jednego agenta prezentuje na swoim googlowym hostingu kodu [3]. Zapraszam!

Źródła:

Promuj