niedziela, 30 marca 2008

Jak przygotować oraz wyświetlić plik video w Silverlight 2.0

W artykule tym, zmierzyłem się z encodingiem pliku video do formatu "lubianego" przez Silvelright-a oraz z wyświetlaniem otrzymanego filmiku w aplikacji. Dodatkowo, chciałem zaprezentować jak w prosty sposób możemy wyświetlić pasek ładowania oraz stanu filmiku.

Obrabiamy filmik

Ponieważ Silverlight jest technologią internetową (RIA), to z racji swoich ograniczeń musi nakładać na wyświetlane elementy pewne standardy. Jednym z nich jest np. brak wyświetlania filmów video w różnych formatach i o dowolnej wielkości (dla porównania, WPF nie ma z tym problemu). Nałożone wymagania ze strony Silverlight-a, zmuszają nas do wstępnego przerobienia plików video, zanim umieścimy go w aplikacji.

Obróbkę pliku video, najlepiej dokonać przy pomoc program "Expression Encoder". W artykule tym użyje "Expression Encoder 2 Beta", wersje tą można pobrać za darmo na stronie Microsoftu (link).

Po zainstalowaniu i uruchomieniu aplikacji "Expression Encoder 2 Beta", ładujemy plik video. Możemy to zrobić poprzez File->Import lub przeciągając plik video na ekran aplikacji. Mając już załadowany filmik, przechodzimy do menu po prawej, gdzie tak jak widać na załączonym obrazku, możemy zmienić ustawienia encodingu.


Opcji jest bardzo dużo ale dla potrzeb tego dema, w zakładce "Profile" wybieramy z rozwijanej listy video np. "Streaming 256k DSL (MP)". Każda opcja jest opisana w tooltip-ie i powoduje zmiany w jakości otrzymanego pliku. Przy każdej zmianie, program wylicza przewidywany rozmiar pliku wyjściowego.

Następnie wciskamy przycisk "Encode" i czekamy na rezultaty. Katalogiem wynikowym jest ten, z zakładki "Output". W katalogu tym, powinien pojawić się gotowy do wstawienia filmik.

Oczywiście program Expression Encoder nie służy tylko do konwersji video dla aplikacji Silverlight ale także posiada wiele innych rozbudowanych opcji.

Umieszczamy video w aplikacji Silvelrigth 2.0

Gotowy film, przerobiony przez Expression Encoder, należy dodać do aplikacji oraz wyświetlić. Aby wyświetlić wystarczy jedna linia kodu:

<MediaElement Source="videoName.wmv" AutoPlay="True"
/>

Natomiast, aby dodać film video do projektu mamy dwa sposoby:

  1. Poprzez dodanie do projektu oraz ustawienie w properties pliku video, opcji "Copy to Output Directory" na "Copy always", co zapewni nam ciągłe kopiowanie pliku video do katalogu ze skompilowanym plikiem .xap (można oczywiście kopiować ręcznie ale jest to uciążliwe)
  2. Drugim sposobem jest ustawienie w properties filmiku, opcji "Build Action" na "Resources". Efektem tego ustawienia jest wkompilowywanie filmiku w plik .xap, przez co zwiększamy znacząco jego wielkość. Im większy plik .xap tym wolniej będzie się uruchamiać aplikacja. Opcja ta nie jest zalecana, znacznie lepiej jest odpalić plik xap i zassać filmik już po uruchomieniu aplikacji Silverlight 2.0.

Pasek ładowania oraz stan filmu

Oprócz zwykłego wyświetlania filmu video na stronie, mamy także możliwości dostanie się i obsługiwania jego ładowania oraz stanu wyświetlania.

Aby tego dokonać, dodajmy do pliku xaml trzy prostokąty, które będą reprezentować pasek stanu oraz pasek ładowania.

<Canvas HorizontalAlignment="Left">
<Rectangle x:Name="ProgressRect" Opacity="1"
Stroke="#FF000000" StrokeThickness="2"
Width="448" Height="16"
Canvas.Left="5" Canvas.Top="10"/
>
<Rectangle Opacity="0.3"
Fill="#FF000000"
x:Name="playingRect"
Width="0" Height="16"
Canvas.Left="5" Canvas.Top="10"/
>
<Rectangle Opacity="0.3"
x:Name="downloadRect"
Fill="#FF000000"
Width="0" Height="16"
Canvas.Left="5" Canvas.Top="10"/
>
</Canvas>

oraz StoryBord do obsługi czasu trawania filmu:

<Canvas x:Name="LayoutRoot"  >
<Canvas.Resources>
<Storyboard x:Name="timer" Completed="timer_Completed"/>
</Canvas.Resources>

Dla kontorlki MediaElement dodajemy trzy metody:

MediaEnded="MediaElement_MediaEnded" MediaOpened="MediaElement_MediaOpened" DownloadProgressChanged="MediaElement_DownloadProgressChanged"

oraz ich implementacje w kodzie .cs:

bool isMediaOpened = false;
void Page_Loaded(object sender, RoutedEventArgs e)
{
timer_Completed(sender, e);
}

private void MediaElement_MediaEnded(object sender, RoutedEventArgs e)
{
timer_Completed(sender, e);
((MediaElement)sender).Stop();
((MediaElement)sender).Play();
}

private void MediaElement_MediaOpened(object sender, RoutedEventArgs e)
{
isMediaOpened = true;
}

private void MediaElement_DownloadProgressChanged(object sender, RoutedEventArgs e)
{
downloadRect.Width = Math.Floor(((MediaElement)sender).DownloadProgress * ProgressRect.Width);
}

private void timer_Completed(object sender, EventArgs e)
{
if (isMediaOpened)
{
double percent = filmik.Position.Seconds / ((double)filmik.NaturalDuration.TimeSpan.Seconds);
playingRect.Width = Math.Floor(percent * ProgressRect.Width);
}
sekund.Text = filmik.Position.Seconds.ToString();
timer.Duration = new
TimeSpan(0, 0, 1);
timer.Begin();
}

A wiec, w kodzie xaml dodaliśmy trzy prostokąty (Rectangle), które będą reprezentować pasek ładowania oraz pasek stanu filmu (czas). Dodaliśmy takżę StoryBord który będzie się wywoływał co sekunde i atualizował stan prostokątów.

Dodaliśmy także metody, MediaElement_MediaEnded() obsługuje zakończenie trawnia filmu, robi Stop() i ponownie go włącza poprzez wywołanie Play(). Powstała także metoda MediaElement_MediaOpened, która przełącza flagę, gdy filmik zostanie ściągniety z serwera i włączy odliczanie czasu. Kolejna metodą jest MediaElement_DownloadProgressChanged (). Jest ona wywoływana gdy stan pobierania pliku video z serwera się zmienia, a więc podczas łądowania strony. No i ostatnią z metod jest timer_Completed. Obsługuje ona przesuwanie prostokąta odpowiedzialnego za wyświetlanie czasu filmu. Szerkość prostokąta jest zmieniana, a StoryBord zostaje uruchomiony na kolejną sekunde.

Proste i fajnie wygląda.

Demo:





Source Code:

Resources:


kick it on DotNetKicks.com


Jacek Ciereszko

poniedziałek, 24 marca 2008

Button jako UserControl na stylach w Silverlight 2.0

środa, 19 marca 2008

Hosting aplikacji w Silverlight 2.0

Stało się! Wreszcie na stronie https://silverlight.live.com znowu działa Silverlight Streaming i to dla aplikacji Silverlight 2.0. W związku z wprowadzonymi zmianami, poprzedzającymi wydanie Silvelrighta 2.0 Beta 1, na początku marca były problemy z hostingiem, które zostały rozwiązane. Od dziś możemy znowu wrzucać nasze dzieła i chwalić się nimi przed innymi.

W porównaniu do Silverlight-a 1.1, w Silverlight 2.0 hosting został uproszczony dzięki pakowaniu przez Visual Studio całej aplikacji do plików *.xap. Pliki te, są to tak naprawdę foldery spakowane zip-em, możemy je rozpakować i podejrzeć zawartość. Po skompilowaniu projektu, Visual Studio tworzy je w katalogu ClienBin naszej aplikacji.

Aby umieścić aplikację Silvelright 2.0 na serwerze, wystarczy dodać plik manifest.xml który podobnie jak w Silvelright 1.1 wygląda tak:

<SilverlightApp>

<version>2.0</version>

<source>MyApplication.xap</source>

</SilverlightApp>

Tag <version> oraz <source> są wymagane. Możemy także dodawać inne parametry opcjonalne, np.:

<SilverlightApp>
  <version>2.0</version>
  <source> MyApplication.xap</source>
  <width>400</width>
  <height>300</height>
  <background>white</background>
  <isWindowless>false</isWindowless>
  <framerate>24</framerate>
</SilverlightApp>


Plik manifest.xml oraz plik .xap (w moim przykładzie jest to "MyApplication.xap") z katalogu ClientBin pakujemy zip-em w jedno archiwum. Plik zip wrzucamy na strone https://silverlight.live.com.




Po wgraniu, pojawi się informacja o prawidłowej budowie pliku manifest.xml (lub też złej) oraz informacje o tym w jaki sposób możemy umieścić wgraną aplikację na naszej stronie.



Przykładową aplikację możecie zobaczyć tu:




Kod powyższej aplikacji znajduje tu: (link), a wgrany plik zip tu:(link).



kick it on DotNetKicks.com

niedziela, 16 marca 2008

Silverlight 2.0 application with MultiScaleImage control and Deep Zoom Composer.

In this article I would like to present simple application with MultiScaleImage control and generated images from Deep Zoom Composer application. I hope my English is enough to understand this text but just in case I will put a lot of pictures. I will show you how to create application with very deep zoom and put it inside Silverlight 2.0.

First we have to generate project with images, therefore we have to download Deep Zoom Composer application. This process has 3 steps:

  1. "Add Image…"

    Create new project ("File"->"New Project…") and import images ("Add Image…"). Choose for example 3 images, not too much. Please, check if they are not too big (greater than 2MB).

  2. "Compose"

    Now we go to another step by clicking "Compose" button in the top of the screen.

    Then, drag and drop images. Take first one, resize and fit it to the screen.



    Zoom in image and place another one.

    And do the same to others pictures. Zoom it, and put image in that place.

  3. "Export"

    OK, so we created images, let's "Export" this to Visual Studio.

    All we have to do, is set path for our project ("Export Location"), add Name and choose if it will be exported to "deep image collection" (it generate more files and from my view it work slower).

    After this step we should have in our output something like this:


We need only folder with images and file "info.bin", in my example this is folder "deepzoomcomposerek".

OK, we have images from Deep Zoom Composer application. Let's put this to Silverlight 2.0 (If you haven't installed Silverlight Tools Beta 1 for Visual Studio 2008, you can download it here).

First, create new project in Visual Studio 2008.


I chose option "Generate an HTML test page..." because I don't need html files to add javascript to web page, I will create single silverlight project and use key down.

Now, build your project and copy folder with images (in my code this is "deepzoomcomposerek") from output (Deep Zoom Composer) to ClientBin folder (Visual Studio project). You should see something like this:

In Page.xaml file add code:

<UserControl x:Class="DeepZoomComposer.Page"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="1024" Height="768">

<Grid x:Name="LayoutRoot" Background="White">
<MultiScaleImage Canvas.Top="10" Canvas.Left="10"
x:Name="wg_net_ZoomObject" ViewportWidth="1.0" Height="768"
Width="1024" Source="/deepzoomcomposerek/info.bin" />
</Grid>
</UserControl>

Now you should be able to run your project and see your images.

Let's add mouse and key control. We have to add events to MultiScaleImage
in Page.xaml:

<UserControl x:Class="DeepZoomComposer.Page"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

KeyDown="UserControl_KeyDown" MouseLeave="UserControl_MouseLeave"
Width="1024" Height="768">
<Grid x:Name="LayoutRoot" Background="White">
<MultiScaleImage Canvas.Top="10" Canvas.Left="10" x:Name="wg_net_ZoomObject" ViewportWidth="1.0" Height="768" Width="1024" Source="/deepzoomcomposerek/info.bin" MouseLeftButtonDown="wg_net_ZoomObject_MouseLeftButtonDown" MouseLeftButtonUp="wg_net_ZoomObject_MouseLeftButtonUp"
MouseMove="wg_net_ZoomObject_MouseMove" />
</Grid>
</UserControl>

and implementation to Page.cs:

bool dragInProgress = false; //global variables
Point dragOffset;
Point currentPosition;
private void UserControl_KeyDown(object sender, KeyEventArgs e)
{
Point p = wg_net_ZoomObject.ElementToLogicalPoint(new Point((wg_net_ZoomObject.Width / 2),
((wg_net_ZoomObject.Width / wg_net_ZoomObject.AspectRatio) / 2)));
switch (e.Key)
{
case Key.Q:
wg_net_ZoomObject.ZoomAboutLogicalPoint(1.1, p.X, p.Y);
break;
case Key.E:
wg_net_ZoomObject.ZoomAboutLogicalPoint(0.9, p.X, p.Y);
break;
case Key.Left:
case Key.A:
wg_net_ZoomObject.ViewportOrigin =
new Point(wg_net_ZoomObject.ViewportOrigin.X - 0.1,
wg_net_ZoomObject.ViewportOrigin.Y);
break;
case Key.Right:
case Key.D:
wg_net_ZoomObject.ViewportOrigin =
new Point(wg_net_ZoomObject.ViewportOrigin.X + 0.1,
wg_net_ZoomObject.ViewportOrigin.Y);
break;
case Key.Up:
case Key.W:
wg_net_ZoomObject.ViewportOrigin = new Point(wg_net_ZoomObject.ViewportOrigin.X,
wg_net_ZoomObject.ViewportOrigin.Y - 0.1);
break;
case Key.Down:
case Key.S:
wg_net_ZoomObject.ViewportOrigin = new Point(wg_net_ZoomObject.ViewportOrigin.X,
wg_net_ZoomObject.ViewportOrigin.Y + 0.1);
break;
default:
break;
}
}

private void UserControl_MouseLeave(object sender, MouseEventArgs e)
{
dragInProgress = false;
}

private void wg_net_ZoomObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
dragInProgress = true;
dragOffset = e.GetPosition(this);
currentPosition = wg_net_ZoomObject.ViewportOrigin;
}

private void wg_net_ZoomObject_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
dragInProgress = false;
}

private void wg_net_ZoomObject_MouseMove(object sender, MouseEventArgs e)
{
if (dragInProgress)
{ Point newOrigin = new Point();
newOrigin.X = currentPosition.X -
(((e.GetPosition(wg_net_ZoomObject).X - dragOffset.X)
/ wg_net_ZoomObject.ActualWidth) * wg_net_ZoomObject.ViewportWidth);
newOrigin.Y = currentPosition.Y -
(((e.GetPosition(wg_net_ZoomObject).Y - dragOffset.Y)
/ wg_net_ZoomObject.ActualHeight) * wg_net_ZoomObject.ViewportWidth);
wg_net_ZoomObject.ViewportOrigin = newOrigin;
}
}

Now you can run application and "deep zoom" in your images. As you can see in code, you can zoom in/zoom out your images with Q and E or move them with W, S, A, D and arrows.

Very good resources:

Laurence Moroney's Blog - DeepZoom in C# - Not just possible, but easy
Mike Taulty's Blog - Silverlight 2 - First Attempt with MultiScaleImage
Yasser Makram - Silverlight 2.0 Deep Zoom using MultiScaleImage Control
Joe Stegman's WebBlog - Deep Zoom version of Silverlight 2 Developer Reference Poster

Source code:


Working demo:


http://www.wpierdalaj.pl/blog_resources/demoDeepZoomComposer.html


FIN

I hope you enjoy this article, it was my first in English language and I think the last one on this blog. There is a plenty good blogs in English and I don't want to just copy them. So if you have any question about articles wrote in polish, send me email and I will try to help you.


Jacek Ciereszko

kick it on DotNetKicks.com

czwartek, 13 marca 2008

Sposób na umieszczenie bazki ASPNETDB.mdf w naszym własnym pliku bazy danych

Kolejny arytkuł z serii "ASP.NET - zapiski lamera programisty".

Co zrobić, gdy chcemy skorzystać z dobrodziejstw kontrolek Login ale chcemy całą bazę danych aplikacji trzymać w jednym pliku, zamiast w dwóch plikach: ASPNETDB.mdf i jakimś naszym pliku .mdf? Otóż wystarczy wygenerować za pomocą aspnet_regsql.exe tabele w naszym pliku bazy danych. Aby to zrobić:

  1. Należy do projektu dodać nowy plik SQL Server Database (.mdf), np. Database.mdf.

    ->

  2. Następnie, w Server Explorer wybrać nowo dodaną bazę danych, kliknąć prawym przyciskiem myszki i przejść do opcji "Modify Connection…". Zanim to zrobicie, sprawdźcie czy Visual Studio nie nawiązał połączenia z bazą danych, jeśli tak, to wybierzcie najpierw "Close Connection" i dopiero potem "Modify Connection…".

  3. Powinno pojawić się okienko "Modify Connection", w którym wybieramy opcję "Change…" z grupy "data source".

  4. W otwartym okienku "Change Data Source", wybieramy "Microsoft SQL Server" i klikamy OK.

  5. Po tej operacji powinniśmy wrócić do okienka "Modify Connection", które tym razem będzie wyglądać trochę inaczej.


    W polu "Server name" musimy wprowadzić nazwę komputera oraz dodać string "\SQLEXPRESS", w moim przypadku wygląda to tak: "DZAK-PC\SQLEXPRESS". Zamiast nazwy komputera, możemy także wpisać kropkę i wtedy "Server name" będzie miał postać: ".\SQLEXPRESS".

    Następnie ustawiamy logowanie do serwera sql, jeśli ustawialiście jakieś hasła, to zmieńcie opcje na "Use SQL Server Authentication" i podajcie login i hasło, jeśli natomiast instalowaliście SQL Server razem z Visualem, zostawcie opcję "Use Windows Authentication".

    Ostatnią zmianą jest wskazanie bazy danych, w tym celu zmieniamy ustawienie na "Attach a database file" i za pomocą "Browse…" wskazujemy plik naszej bazy danych w projekcie. (Dla pewności możemy sprawdzić połączenie "Test Connection".)

    W przypadku gdyby Visual Studio robił problemy, sprawdź czy nie masz przypadkiem Windows Vista i jeśli tak, to czy uruchomiłeś Visual-a jako administrator (jak uruchamiać Visual-a jako administrator)!

  6. Po tej operacji nasza baza zostanie przeniesiona do katalogów SQL Servera. Aby móc ją wypełnić tabelami, potrzebujemy jeszcze tylko skorzystania z programu aspnet_regsql.exe.

    Program ten znajdziemy w katalogu: "C:\Windows\Microsoft.NET\Framework\v2.0.50727". Jeśli mamy Viste, musimy zrobić to samo, co dla Visual-a, czyli uruchomić go jako administrator ("Run as administrator").

  7. Otworzy się okienko programu i przyciskiem Next/Dalej należy przeklikać aż do uzyskania następującego widoku:

  8. W otrzymanym okienku w polu "Server" wstawiamy albo nazwę swojego komputera i "\SQLEXPRESS" lub samo ".\SQLEXPRESS". Na liście rozwijanej w polu "Database" powinniśmy móc odnaleźć naszą bazę danych (Database.mdf). Wybieramy ją, klikamy dwukrotnie dalej i po wygenerowaniu tabel w bazie danych klikamy Finish, aby zamknąć aplikację.
  9. W ten o to prosty sposób, wygenerowaliśmy tabele w naszym własnym pliku bazy danych.

  10. Ostatnią rzeczą, która musimy zrobić jest wskazanie Visual-owi aby korzystał z naszej bazy danych, zamiast szukać/generować ASPNETDB.mdf. W tym celu musimy zmodyfikować wpis "LocalSqlServer" dla connection stringa w pliku Web.config. Należy dodać następujący wpis:

<connectionStrings>
<
remove name="LocalSqlServer" />
<
add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\(twoja ścieżka do bazy danych)\App_Data\Database.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
</
connectionStrings>

Tak przetworzona baza danych, pozwala na dodanie naszych własnych tabel oraz na podłączenie kontrolek "Login", które będą wykorzystywały wygenerowane tabele.

środa, 12 marca 2008

ASP.NET - zapiski lamera programisty

Ponieważ co jakiś czas tworząc stronki w ASP.NET, nie pamiętam pewnych zagadnień i jestem zmuszony zerkać na stare projekty, postanowiłem umieścić na blogu kilka wybranych problemów. Zagadnienia te są zwykle banalne, ale mam dość tracenia czasu na ich przypominaniu i chce je mieć w jednym miejscu o!

W tej serii artykułów zawarłem problemy:

  1. Polskich znaków.
  2. Przypomnienie o trybie uruchamiania Visual Studio 2005/2008 w Windows Vista.
  3. Sposób na umieszczenie bazy ASPNETDB.mdf w naszym własnym pliku bazy danych.
  4. Ustawienie ról, profili oraz praw dostępu dla wybranych użytkowników przy użyciu web.sitemap. (w trakcie)


Polskie znaki

A więc ustawić polskie znaki w ASP.NET to rzecz prosta, zwykle niewymagająca od nas żadnych zmian, ale chciałem zwrócić uwagę jak łatwo można sobie strzelić w nogę.

Wystarczy, że chcemy zmigrować zwykłą stronę HTML na stronę ASP.NET. Co robimy? Zakładamy nowy projekt ASP.NET, dodajemy stronę Master Page, dodajemy np. Default.aspx i kopiujemy zawartość naszej strony do stron .aspx. Kopiujemy także META tag-i i tu należy zwrócić uwagę, aby oprócz skopiowania META tag-u kodowania znaków, czyli np.

<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />

ustawić także w web.config tag globalization. Mianowicie, należy pamiętać o requestEncoding, responseEncoding oraz fileEncoding. Mój przykładowy wpis w web.config, wraz z ustawieniami "kraju" wygląda następująco:

<globalization culture="auto:pl-PL" uiCulture="auto:pl-PL" fileEncoding="windows-1250" responseEncoding="utf-8" requestEncoding="utf-8"/>

Jeśli o tym zapomnimy, możemy mięć problem z polskimi znakamii po umieszczeniu strony na serwerze. Pamiętajmy, że wpis w META tagu jest istotny tylko dla przeglądarki, a nie dla IIS-a.

Jeśli nie chcemy robić ustawień globalnie, zawsze możemy wstawić w dyrektywie strony: <%@ Page CodePage="28592" … %>, choć to rozwiązanie jest niezalecane.

Przypomnienie o trybie uruchamiania Visual Studio 2005/2008 w Windows Vista

A więc kolejny raz zdarzyło mi się, że spędziłem trochę czasu poszukując rozwiązania problemu, który był spowodowany właśnie przez uruchamianie Visual Studio pod Windows Vista nie jako administrator. Aby raz na zawsze, a raczej do następnego formatu systemu, ustawić ten tryb automatycznie i nie musieć o tym pamiętać, należy:

Prawym klawiszem myszki kliknąć na ikonce Visual Studio 2005 lub/i 2008, wybrać pole Properties/Właściwości i następnie przejść do zakładki Compatibility/Kompatybilność. W tej zakładce należy odszukać na samym dole grupy Privilege Level/Poziom Dostępu i zaznaczyć opcję Run this program as an administrator/Uruchamiaj program jako administrator(patrz Rysunek 1.). Następnie kliknąć Apply/Zastosuj i zamknąć okienko. Od tej pory przy każdym uruchomieniu zostaniemy odpytani o prawa dostępu (no chyba, że zmienimy w ustawieniach Windows Vista na niepytanie o prawa) i nasz kochany Visual Studio będzie działał z prawami administratora. :]

Problem ten wydaje się tym bardziej upierdliwy, iż kiedyś spędziłem naprawdę dużo czasu zanim odkryłem, że powodem nie działania debugera w ASP.NET jest właśnie brak praw administracyjnych dla Visual-a. Debuger się włączał, ale nigdy nie zatrzymywał na break pointach.

poniedziałek, 10 marca 2008

Silverlight 2.0 (Beta1) już dostępny!

Wraz z konferencją MIX08 w Las Vegas, Microsoft ogłosił wydanie beta wersji grupy produktów. W ciągu kilku dni pojawił się nowy Silverlight w wersje 2.0 Beta 1, Internet Explorer 8 Beta 1 oraz Expression Studio 2 Beta 1. Pomimo tego, że są to dopiero wersje Beta 1, postanowiłem troszkę zapoznać się z tymi produktami.

Silverlight 2.0

Zacznijmy od Silverlight-a 2.0. Wraz z wydaniem nowszej, niestety niekompatybilnej wersji wstecz, Microsoft opublikował:

  1. Runtime dla Silverlight 2.0 (beta1) (link), czyli plugin do przeglądarki internetowej, umożliwiający uruchomienie aplikacji (około 4.38MB).
  2. SDK (link) – dokumentacja, biblioteki oraz narzędzia do developowania aplikacji silverlight (40MB)
  3. Kod źródłowy i Unit Testy dla kontrolek Silverlight 2 Beta 1 (link)
  4. Dokumentacja (link)
  5. MSDN -> Silverlight 2 Beta 1 - Development with the .NET Framework (link)
  6. Przydatne tool-sy: Silverlight Tools Beta 1 for Visual Studio 2008. Pakiet zawiera runtime oraz sdk (54MB). (link)
  7. Microsoft Expression Blend 2.5 March 2008 Preview – narzędzie do tworzenia strony graficznej naszych aplikacji. (link)

To co powinniśmy ściągnąć i zainstalować to Silverlight Tools Beta 1 for Visual Studio 2008 (minimalna wersja Visual-a to standard). Tool-sy zawierają run time oraz sdk, a więc wystarczy nam tylko jedna instalacja aby móc rozpocząć zabawę z nowym silverlightem. (Jeśli wystąpi problem podczas instalacji, sprawdźcie czy odinstalowaliście tool-sy dla Silverlight-a 1.1). Dodatkowo warto zaopatrzyć się w Microsoft Expression Blend 2.5 March 2008 Preview, który znacząco przyspieszy nam prace nad grafiką.

Tak jak wcześniej wspomniałem, poprzednie wersje naszych aplikacji, czyli między innymi Silverlight 1.1 nie będą działały po w/w instalacjach. A więc, co się zmieniło, że nasze programiki nie działają? A no zmieniło się wiele. Począwszy od struktury aplikacji, gdzie pojawia się nam plik App.xaml (co raz bliżej nam do WPF-a), a nasz stary Page.xaml zostaje przekształcony w kontrolkę, a skończywszy na zmianach w hostingu naszych aplikacji. Jeśli chcemy zmigrować naszą starą aplikację z Silverlight 1.1 na 2.0, Microsoft zaleca założenie nowego projektu i przeklejenie kodu do nowych plików, a więc nic automatycznego.

Dodatkowo na stronie http://silverlight.net znajdziecie filmiki, tutoriale oraz Hands-On Labs.
Więcej:


Internet Explorer 8 Beta 1

Razem obok Silverlight 2.0, światło dzienne ujrzała także najnowsza wersja "jedynej poprawnej przeglądarki", czyli Internet Explorer 8. Przeglądarka ta w nowej wersje wspiera standardy CSS 2.1 oraz HTML 5. Z naszego punktu widzenia, warto zwrócić uwagę, że nowy IE wspiera narzędzia dla programistów, a w tym wyposażony jest w debuger do CSS oraz skryptów, a twórcy zapowiadają jeszcze kolejne.

Więcej informacji na temat IE 8 możecie znaleźć na stronie MS IE 8 oraz download IE8.

Expression Studio 2 Beta 1

Ponieważ szkoda mi troszkę czasu na instalacje i sprawdzanie wszystkich narzędzi wchodzących w skład tego pakietu, to zainteresowanych zapraszam na stronę Expression Studio 2 Beta 1 oraz stronę domową Micrsoft Expression, gdzie znajduje się więcej informacji, a sam tylko przypomnę, że w skład Expression Studio 2 wchodzą:

  • Expression Blend
  • Expression Design
  • Expression Encoder
  • Expression Media
  • Expression Web

Osobiście miałem okazję spróbować Expression Web-a, Expression Encoder oraz oczywiście Expression Blend-a. Expression Web bardzo ułatwia pracę z html-em, zawiera także wspomagacze dla ASP.NET, jednak do ASP-a mimo wszystko lepszy jest Visual Studio. Expression Encoder posiada bardzo dużo funkcji video, przede wszystkim potrafi encodować filmiki do typów akceptowalnych przez Silverlighta 1.1 (2.0 jeszcze nie sprawdziłem). No i na końcu Expression Blend, każdy kto choć trochę dłubał w silverlightcie na pewno zna to narzędzie. Najnowsza jego wersja, czyli Microsoft Expression Blend 2.5 March 2008 Preview, zawiera wspomaganie dla Silverlighta 2.0, nowe kontrolki, itd.


Wszystkich chętnych zapraszam do komentowania, a ja sam uciekam do testowania nowych możliwości, jakie Microsoft nam dał wraz z wypuszczeniem tylu nowych wersji produktów. :D



Jak włączyć hibernacje w Viście, czyli how to turn on hibernation mode back on in Windows Vista

Windows Vista ma tą właściwość, że pozwala na skasowanie w czasie czyszczenia dysku, pliku który odpowiedzialny jest za hibernacje, a więc w efekcie tego zyskujemy trochę miejsca ale tracimy w opcji zamykania system "hibernacje". Ja akurat należę do osób, które lubią ten tryb wyłączania komputera, w związku z czym po raz kolejny rozpocząłem poszukiwania jak to włączyć ponownie.

Zrobiłem małe poszukiwania, czego efektem jest to krótkie rozwiązanie:

  • W menu start, wpisujemy "cmd" (Command prompt), klikamy prawym i uruchamiamy konsole poleceń jako administrator (Run as administrator).
  • W konsoli wpisujemy: "powercfg –h on" i enter.
  • Chwile zaburczy, a wśród opcji wyłączania powinna pojawić się ponownie opcja "hibernate".

Źródło:

http://ezinearticles.com/?Windows-Vista-Top-10-Tips-and-Tricks&id=461195

niedziela, 2 marca 2008

Kropki w kodzie, czyli dots instead of space in visual studio.

Zdążyła mi się dziś rzecz dość śmieszna ale frustrująca, otóż używając mojego ulubionego skrótu klawiszowego w Visual Studio do formatowania kodu, czyli Ctrl + E+ D, zupełnie przypadkiem wcisnąłem jakąś kombinację, która zamieniła spacje (white spaces) na kropki. Jak się okazało ponownie wyłączyć się nie chciało pomimo moich usilnych starań.

Problem trochę rozwiązało ustawienie koloru dla widocznych białych znaków (Visible White Space: Tools -> Options -> Enviroment -> Fonts and Colors -> Visible White Space). Rozwiązanie to sprawia, że nie widać kropek dopóki ich nie zaznaczymy. A więc pomogło, ale nie było to rozwiązanie wystarczające.


Natomiast rozwiązaniem które znalazłem na necie było dobranie się do rejestrów Visuala ;) ...ponoć działa, ja sobie darowałem tą metodę, ale dla chętnych przekleję:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\...\Text Editor\

"Visible Whitespace" ustawić na 0

Jeśli ktoś tego spróbuje i będzie działać, daj mi znać ;]

No i w końcu znalazłem także właściwe rozwiązanie, było blisko mojego skrótu, no ale możliwości było wiele w związku z czym szansa na trafienie tego właściwego wcale nie jest duża.

Rozwiązanie:

Visual Studio 2008: Ctrl + E + S

Visual Studio 2005: Ctrl + R + W

Visual Studio 2003: Edit > Advanced > View White Space lub Ctrl + R + W

p.s. czy ktoś w ogóle korzystał kiedyś z tych kropek?