Archive for April, 2011

Świeżutkie, pachnące, prosto z drukarni

Helion zrobił mi dziś bardzo miłą niespodziankę, a mianowicie przysłał mi paczkę z książkami. Nie są to jednak byle jakie książki… Są to świeżutkie, pachnące i prosto z drukarni wydania książki, której jestem współautorem!
Jakiś czas temu Jacek Matulewski zaprosił mnie do projektu mającego na celu przygotowanie książki na temat Visual Studio 2010 oraz języka C#. Efektem naszej współpracy jest ukazanie się pozycji pod tytułem “Visual Studio 2010 dla programistów C#“. Niedawno książka znalazła się w przedsprzedaży, a tydzień później w regularnej dystrybucji.

W swojej części postanowiłem przedstawić Windows Communication Foundation. Z racji na dużą ilość tematów podejmowanych w książce nie było to proste zadanie, bo jak opisać tak potężne zagadnienie na kilkudziesięciu stronach… Udało się jednak zarysować najważniejsze pojęcia związane z tematem oraz przedstawić jego istotę.

Korzystając z okazji prywatna dedykacja i podziękowania dla mojej żony, która była bardzo wyrozumiała w trakcie prac nad książką i dodatkowo mnie motywowała :)

Visual Studio 2010 dla programistów C#

Zachęcam do lektury!


WP7 Accelerometer Emulator April Update

W grudniu opublikowałem post na temat mojego projektu Windows Phone 7 Accelerometer Emulator. Niedawno ponownie zasiadłem do kodu emulatora i dodałem jedną z możliwości, którą zapowiadałem.

Nagrywanie sekwencji użytkownika.

Wyobraźmy sobie sytuację, w której piszemy jakiś kawałek kodu, który ma się zachować w określony sposób przy danej sekwencji ruchów, jaką wykona użytkownik telefonu. Do tej pory jeżeli korzystaliście z mojego projektu trzeba było wykonywać te sekwencje samemu przy każdym teście. Teraz to się zmieniło. Wystarczy raz nagrać taką sekwencję, a następnie przy kolejnych testach można ją odtworzyć. Jeżeli chcemy skorzystać z aktualnej sekwencji w późniejszych testach, wystarczy zapisać sekwencję do pliku XML. Po ponownym rozpoczęciu pracy wczytać do emulatora plik z zapisem sekwencji. Eksport ten daje również możliwość testowania przez kilku programistów tej samej sekwencji poprzez zwykłą wymianę pliku symulacji.

WP7 Accelerometer Emulator Recording Panel

Użycie:
1 – przycisk Start
2 – wykonujemy sekwencję
3 – przycisk Stop
4 – aby odtworzyć wybieramy Play
5 – aby zatrzymać sekwencję w dowolnym momencie klikamy Stop
6 – jeżeli chcemy zachować sekwencję testową wybieramy Save
7 – aby wczytać wcześniej przygotowaną sekwencję wybieramy Load.
W razie gdyby w sekwencji coś poszło nie tak (wykonaliśmy nie ten ruch, który zamierzaliśmy), można wyczyścić zgromaczone dane przy pomocy przycisku Clear.

Jeszcze może słowo na temat opcji Limit – ograniczamy w ten sposób ilość zapamiętanych przez program stanów, dzięki czemu nie będzie sytuacji, w której po rozpoczęciu nagrania aplikacja zacznie pochłaniać pamięć. Wstępnie ustawiłem maksymalną wartość na 500, co daje nam ok 50s sekwencji – moim zdaniem dużo :)

WP7Accelerometer Emulator April Update

Paczka ze źródłami


Pomorska Konferencja Informatyczna

Dziś w Gdańsku miała miejsce Pomorska Konferencja Informatyczna. Moja wizyta w Gdańsku była dość krótka, aczkolwiek treściwa. Podczas prezentacji udało się uniknąć problemów technicznych oraz ożywić salę – a o to właśnie chodzi, żeby wciągnąć słuchaczy w temat i w dyskusję. Temat, o którym opowiadałem był połączeniem wstępu do platformy Windows Phone 7 oraz opisu mechanizmu notyfikacji PUSH. Osoby, które są zainteresowane przestudiowaniem przygotowanych przeze mnie materiałów mogą je pobrać korzystając z poniższych linków. Przed uruchomieniem Notifiera polecam zapoznanie się z plikiem ReadThisBeforeYouStart.txt.

Projekt

Prezentacja


2nd Silesian Code Camp

Weekend minął pod znakiem drugiej edycji Silesian Code Camp, na której miałem przyjemność być prelegentem. Duże brawa należą się organizatorom, za dobre przygotowanie i organizację całej konferencji. Co do samych sesji, to nie mogę za dużo powiedzieć, bo nie miałem okazji uczestniczyć w nich (poza swoją :) )
Drugi plus należy się uczestnikom konferencji. Wiedzieli czego oczekują i na jakie sesje przychodzą, dlatego też pozytywnie zaskoczyła mnie skala dyskusji, która rozwinęła się podczas mojej prezentacji. Widać było, że temat jest interesujący i nowości, o których opowiadałem od razu podsunęły niektórym pomysły na ich wykorzystanie.

Dla osób, które chciałyby we własnym zakresie przejrzeć przygotowane przeze mnie dema poniżej załączam link do spakowanego kodu oraz prezentacji. W przykładach znajduje się plik BeforeYouStart.txt, który objaśnia w jaki sposób poradzić sobie z prawami do nasłuchu na protokole http w aplikacji konsolowej (konieczne do uruchomienia przykładowych hostów).

Projekt

Prezentacja


Pytanie – rozwiązanie [7] – WP7 jak rozpoznać Theme

Aby aplikacje tworzone na platformie Windows Phone 7 dawały użytkownikowi jeszcze większy komfort korzystania warto dostosować UI do aktualnych ustawień telefonu. Możemy to osiągnąć między innymi rozpoznając wybrany przez niego motyw (theme).  W tym celu korzystamy z prostego enuma oraz metody widocznej na poniższym listingu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public enum Theme
{
	Light,
	Dark
}
 
public static Theme PhoneTheme
{
	get
	{
		if (Application.Current.Resources["PhoneBackgroundColor"].ToString() == "#FF000000")
			return Theme.Dark;
		else
			return Theme.Light;
	}
}

Pytanie – rozwiązanie [6] – jak odwrócić string

Przy okazji przygotowywania testowego serwisu na 2nd Silesian Code Camp zastanawiałem się jak najwygodniej odwrócić łańcuch znaków (string). Poza oczywistym rozwiązaniem wykorzystującym odwracanie tablicy w pętli, w oko wpadł mi następujący kawałek kodu, który w przejrzysty sposób rozwiązuje to zadanie:

1
2
3
4
5
6
public string Reverse(string str)
{
	char[] charArray = str.ToCharArray(); 
	Array.Reverse(charArray);
	return new string(charArray);
}

  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: