sobota, 29 grudnia 2007

Trendy na rok 2008

Niektórzy lubią bawić się w rolę wizjonerów. Więc spróbuję pokazać jakie trendy mogą być w roku 2008

Rozwój widgetów i aplikacji out-of-browser. Mam oczywiście na myśli sytuację w której programiści tworzą aplikację AJAX która nie musi działać w przeglądarce internetowej a zachowuje się jak program komputerowy wraz z możliwością zapisu danych oraz może działać w trybie offline. Takimi aplikacjami są Adobe AIR, Yahoo Konfabulator czy Google Desktop a także Możilla Prism (kiedyś WebRunner). Podobny trend wkracza w świat urządzeń mobilnych w postaci Androids.

Rywalizacja pomiędzy Flash Playerem a Silverlight - Flash Player jest technologią już dojrzałą natomiast Silverlight dopiero wkracza do świadomości użytkowników internetu. Polem rywalizacji pomiędzy Flash Playerem a Silverlight staną sie technologie wideo (w obsłudze wysokiej klasy filmów wideo). Ciekawie może zapowiadać się rywalizacja pomiędzy wersjami beta Silverlight 2.0 a Flash Playerem 10 (chodzi o ilość komponentów UI i teoretycznie zastosowanie wsparcia ze strony kart graficznych).

Ewolucja technologii AJAX - wykorzystanie potencjału Google Gears. AJAX staje się częścią wielu serwisów internetowych i aplikacji internetowych. Ale główna przeszkodą było to że dane nad którymi pracował użytkownik nie dało się opracowywać w trybie offline a także to że przeglądarki internetowe nie oferowały wystarczającej ilości miejsca na dysku twardym do przechowywania tych danych. Technologia Google Gears pozwala programistom AJAX na tworzenie aplikacji pracujących w trybie offline, zapewnia przechowywanie danych w bazie danych SQLite, a także wprowadza mechanizm wielowątkowości w skryptach JavaScript (ang worker pool) . W połączeniu z dość popularnym silnikiem HTML jakim jest WebKit ta technologia staje się podstawą do tworzenia technologii internetowych out-of-browser (uruchamianych poza przeglądarka internetową). Spodziewam się pojawienia już dojrzałej wersji Firefox 3 a pod koniec 2008 roku wersji beta Internet Explorera 8. Ciekawy jestem czy IE8 zintegrują z Silverlight 2.0, jeśli tak to stanie się dość interesująca rywalizacja a przede wszystkim z tego powodu, że niektórzy będą woleli załączać funkcjonalności w formatach binarnych wykonywanych w przeglądarce bo szybciej się wykonują i... utrudniają konkurencji poznanie jak działają ich rozwiązania.

Web 2.0 - więcej rozrywki i otwarte API. Wygląda na to, że serwisy społecznościowe "przejadły się" według Marcina Jagodzińskiego czy Dominika Kaznowskiego. albo Marty Klimowicz. W ilu serwisach użytkownik może być aktywny? W niewielu (2-3). Prowadzenie bloga nie jest już wyznacznikiem, że ktoś sie wyróżnia. Sztuką już jest prowadzić aktywnie i interesująco bloga przez kilka lat. Dodawanie map czy informacji związanych z miejscem staje się dość nudne w sytuacji gdzie mamy GPSy z mapami w samochodach czy w urządzeniach mobilnych. W tej sytuacji istotne będzie to jak wiele rozrywki dostarczy dany serwis internetowy. Rozrywka może być dwojakiego typu: skoncentrowana na zabawie czy skoncentrowana na poznawanie ludzi. Przypuszczam, że sukces SecondLife wyniósł z tego, że dostarczał ludziom takiej rozrywki ( i jeszcze im za to płacił wirtualną waluta) . Można też zauważyć że przenoszenie mechanizmów które występują w grach Multi Massive OnLine Role Playing Games do serwisów społecznościowych może przynieść wymierne korzyści w postaci reklam product replacement. Ludzie sporo czasu lubią spędzać przy prostych gierkach. W sytuacji gdy coraz więcej serwisów społecznościowych otwiera swoje API dla programistów powoduje to, że zaawansowani użytkownicy sami tworzą nowe funkcjonalności dla serwisu społecznościowego. Także rywalizacja pomiędzy serwisami społecznościowymi powoduje to, że muszą ze sobą współpracować w pewnych obszarach - bo tego chcą Ci zaawansowani użytkownicy. Tak powstała inicjatywa OpenSocial.

Lepsza jakość filmów wideo
- Filmy wideo stają się częścią zwykłych stron internetowych. Tak jak wspomniałem rywalizacja pomiędzy Flash Player 9 a Silverlight 1.0 będzie dotyczyć obsługi na stronach internetowych plików wideo w wysokiej jakości (pomiędzy standardami H.264 a VC-1). Częściej też zaczną pojawiać się prezentacje produktów w filmach wideo na stronach internetowych upodobniając te strony do programów telewizyjnych. Przykładem wykorzystania nowszych technologii w celu tworzenia telewizji internetowej są serwisy takie jak
Joost
, Babelgum, czy szczególnie Hulu

Języki programowania: dalszy wzrost zainteresowania Pythonem
. Platformy programistyczne takie jak .NET czy Java charakteryzuje bardzo szybki wzrost nowych rozwiązań, ale w większości przydatnych w dużych korporacjach niż dla przeciętnego użytkownika. Małe firmy czy zaawansowani użytkownicy bardziej potrzebują szybkich i łatwych rozwiązań. Stąd jest duża popularność technologii skryptowych JavaScriptu na którym opiera się AJAX czy PHP na którym tworzy się większość stron internetowych. Ale przyszłość ma przed sobą Python. Bo ten język jest bardzo wydajny po stronie serwera (frameworki Django, Pylons) i jak w tworzeniu aplikacji desktopowych (IronPython, czy Jython), a niedługo może masowo wejść jako język programowania aplikacji AJAX w Silverlight czy w urządzeniach mobilnych (PyS60 czy PyUIQ) a może też nawet w Mozilli poprzez PyXPCOM.

Zwrot w stronę technologii mobilnych
- Urządzenia mobilne staja się coraz powszechniejsze i posiadają sporo możliwości technologicznych (bluetooth, obsługa internetu, GPS, J2ME) i platform (Symbian, Windows Mobile). Coraz więcej firm inwestuje się w technologie mobilne (tworzenia gier, tworzenie zawartości takiej jak muzyka czy tapety, czy przystosowanie stron internetowych oraz aplikacji do działania na urządzeniach mobilnych). Oznacza to, że spodziewam się bardzo dużego zapotrzebowania dla programistów znających technologie mobilne (J2ME , FlashLite, Symbian C++ , Compact Framework.NET, PyS60 )

niedziela, 23 grudnia 2007

YouTube na komórce

Sebastian Jedruszkiewicz napisał odtwarzacz plików *.flv emTube ma platformę Symbian 9 trzeciej edycji pozwalając na oglądanie filmików z YouTube. Wykorzystał do tego bibliotekę ffmpeg i załączył kod źródłowy z tej biblioteki pod Symbiana. Ciekawy jestem czy ten kod się przyjmie i będzie można się spodziewać nowych odtwarzaczy wideo pod Symbianem. Zauważyłem kolejną aplikację która może wykorzystać ten kod libavcodec to MobiTubia

Większość aplikacji które teraz się tworzy może wymagać zainstalowanego FlashLite 3. Ale są już 2 aplikacje SWF pierwsza z nich to CNPDA Flash Player a druga to YTPlayer W przypadku korzystaniu z pierwszej trzeba załadować pliki flv lokalnie, a w przypadku korzystania z tej drugiej to ściąga się z internetu bezpośrednio. A jak napisać najkrótszy kod do korzystania z YouTube z ActionScript 2? Kod pochodzi stąd


System.security.allowDomain("http://www.youtube.com");
System.security.loadPolicyFile("http://www.youtube.com/crossdomain.xml");
this.createEmptyMovieClip("video_mc",10);
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadStart = function() {trace("started");};
listener.onLoadInit = function(mc:MovieClip)
{
_root.resizeInt = setInterval(adjustVideo, 10, mc, mc._width, {w:400, h:300, x:40, y:70});
};
listener.onLoadError = function() {trace("error");};
mcl.addListener(listener);
mcl.loadClip("http://www.youtube.com/v/vGcnc2tgjZI",video_mc);

function adjustVideo(vid:MovieClip, initW:Number, finalValues:Object)
{
if (initW != vid._width)
{
clearInterval(_root.resizeInt);
delete _root.resizeInt;
vid._width = finalValues.w;
vid._height = finalValues.h;
vid._x = finalValues.x;
vid._y = finalValues.y;
}
}

sobota, 22 grudnia 2007

Silverlight 2.0 i IronPython

Zauważyłem, że popularność Pythona rośnie (nie tak szybko jak Ruby) i będzie rosła dzięki temu, że będzie jednym z popularnych języków DLR w SilverLight 2.0 Nareszcie można programować sobie w IronPython na stronach WWW dzięki takiej technologii jak Silverlight 1.1.
Zauważyłem, że Michael Foord napisał świetne wprowadzenie do programowania Silverlight 1.1 przy pomocy IronPythona
Przykłady też można znaleźć na IronPython Cookbook
Ja natomiast najpierw ściągnąłem przykłady z CodePlex (one są z kwietnia 2007 roku).
Potem ściągnąłem zestaw kodu źródłowego do SilverLight 1.1 Alpha Refresh.
Na podstawie tego kodu przerobiłem tak, żeby przykłady z CodePlex dały się uruchomić.
(głównie to polegało na zaktualizowaniu przykładów do nowszej wersji pliku Slilverlight.js)

Przykłady z CodePlex to:
Clock - pokazuje jak zaprogramować zegar. Celem tego przykładu jest pokazanie jak może współpracować z XAML
DLRConsole - zaawansowany przykład który pokazuje jak można zaprogramować na stronie internetowej własne środowisko wykonawcze pozwalające na uruchamianie własnych skryptów IronPythona na stronie internetowej
Flaculator - kalkulator, który pokazuje w sposób bardzo przystępny działanie na nawiasach czy złożonych operacjach matematycznych na ułamkach
GrandPiano - pozwala na zaprogramowanie dźwięków poprzez symulację pianina
PhotoViewer - przeglądarka plików graficznych
WordFind - wyszukiwarka tekstów na stronie i podświetla znalezione słowa

Zrobiłem 3 przykłady aby pokazać jaką elastyczność posiada SilverLight jak zacznie się programować z językami DLR
Kod dokumentu  XHTML  jest taki sam

<html>
<head>
<title>Kurs IronPython z Silverlight Project</title>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
function CreateSilverlight()

     Silverlight.createObject("first.xaml",
                              document.getElementById('SilverlightControlHost'),
                              "SilverlightControl",
                              {width: '1000', height: '1000', version: '1.1'},
                              {onError: null, onLoad: null},
                              null);
}
</script>
</head>
    <body>
    <div id="SilverlightControlHost">
        <script type="text/javascript">
            CreateSilverlight();
        </script>
    </div>
    </body>
</html>
 
Pierwszy przykład to czysty XAML w pliku first.xaml

<Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   
  <Ellipse Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" Fill="SlateBlue" />
</Canvas>

Drugi przykład to załadowanie pliku XAML przez IronPythona w pliku second.xaml

<Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   <x:Code Source="second.py" Type="text/python" />
   <Canvas x:Name="Root" Loaded="OnLoad" />
</Canvas>

Kod z second.py

def OnLoad(sender, event):
    t = XamlReader.Load("first.xaml")
    Root.Children.Add(t)

Trzeci przykład to wygenerowanie z poziomu programowania w IronPythonie w pliku third.xaml

<Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Width="200" Height="200" Background="LimeGreen">
   <x:Code Source="third.py" Type="text/python" />
   <Canvas x:Name="Root" Loaded="OnLoad" />
</Canvas>

Kod z third.py

from System.Windows import DependencyObject
from System.Windows.Controls import TextBlock, Canvas
from System.Windows.Shapes import Ellipse
from System.Windows.Media import SolidColorBrush
from System.Windows.Media import Colors

# Taken from DLRConsole
# A typed way to set properties
SetIntValue = DependencyObject.SetValue.Template[int]

def OnLoad(sender, event):
    e = Ellipse()
    b = SolidColorBrush(Colors.Blue)
    black = SolidColorBrush(Colors.Black)   
    SetIntValue(e, Canvas.LeftProperty, 30)
    SetIntValue(e, Canvas.TopProperty, 30)
    SetIntValue(e, Canvas.ZIndexProperty, 2)   
    e.Height = 200
    e.Width = 200
    e.Stroke = black
    e.StrokeThickness = 10
    e.Fill = b                   
    Root.Children.Add(e)

piątek, 21 grudnia 2007

Adobe Media Player Pre-release 2

Adobe wypuściło już wersję Adobe Media Player Pre-release 2 (wersja kodowa 0.8). Jest to aplikacja AIR, która na razie ma otwierać pliki FLV i F4V.
Mnie tylko zainteresowało to w jaki sposób aplikacja AIR ma być skojarzona z odpowiednimi rozszerzeniami. Otóż to jest proste wystarczy opisać w pliku application.xml

<fileTypes>
<fileType>
<name>com.adobe.flv</name>
<extension>flv</extension>
<description>Flash Video</description>
<contentType>video/x-flv</contentType>
</fileType>
<fileType>
<name>com.adobe.f4v</name>
<extension>f4v</extension>
<description>MPEG-4 Flash Video</description>
<contentType>video/x-f4v</contentType>
</fileType>
</fileTypes>
<allowBrowserInvocation>true</allowBrowserInvocation>


Dalej się zastanawiam, czy mogę napisać własny Media Player? Oczywiście po przeczytaniu prostego artykułu Exploring Flash Player support for high-definition H.264 video and AAC audio a także artykułów Controlling Flash video with FLVPlayback programming i Using the FLVPlayback component with Flash Player 9 Update 3. Szukałem też informacji o tym jak zapewnić sobie konwersję plików wideo do formatu mp4 i znalazłem informację o tym w Encoding video in H264. Znalazłem też techniczny artykuł w Adobe o profilach HD Video i ich kodekach, a także prezentację ich możliwości. Ciekawy jestem, czy da się wstawić FAVideo (Flash Ajax Video) w aplikację AIR?

czwartek, 20 grudnia 2007

Adobe AIR beta 3

Ponieważ Adobe AIR zaprojektowano pod kątem programowania w AJAX jest bardzo duże prawdopodobieństwo, że większość aplikacji AJAX zechce sie przenosić na Adobe AIR

A co takiego oferuje Adobe AIR?

Obsługę bazy danych

  • dostęp do osadzonej bazy danych SQLite
  • manipulowanie danymi w bazie danych SQLite

Obsługę plików
  • asynchroniczny i synchroniczny odczyt z pliku tekstowego na dysku twardym
  • dostęp do struktury plików i katalogów
  • wybieranie wielu plików z dysku twardego
  • przenoszenie plików do aplikacji AIR
  • dostęp do plików ze schowka
  • przenoszenie plików do schowka
  • zapisywanie tekstu do plików tekstowych

Obsługa grafiki
  • kodowanie do formatu PNG zarówno jak z kodu JavaScript i jak z blibliotek ActionScript
  • zastosowanie filtrów Flasha do zawartości dokumentu HTML
  • dokonywanie zrzutu ekranu aplikacji do pliku
  • skalowanie grafiki
  • określanie rozmiaru pliku graficznego
  • odczytywanie danych EXIF z plików graficznych

Obsługa technologii Flash
  • zaprogramowanie i wykorzystanie Flash Remoting z poziomu JavaScript
  • szyfrowanie danych i przechowywanie ich lokalnie
  • przechwytywanie obrazu z kamery i dokonywanie z tego z zrzutów do przeglądarki
  • odtwarzanie plików dźwiękowych
  • wysyłanie plików w tle
  • odczyt danych XML z internetu przy pomocy XMLHttpRequest (XHR)
Obsługa okna aplikacji
  • można tworzyć własny wygląd okna aplikacji (ang. chrome)
  • obsługa pełnego ekranu
  • tworzenie okien modalnych
Można to wszystko sprawdzić wystarczy ściągnąć zestaw przykładów od Kevina Hoyta
Najpierw trzeba ściągnąć Adobe AIR beta 3 SDK i rozpakować to do folderu C:\air
Następnie ściągamy powyższy zestaw przykładów i rozpakujemy do folderu C:\samples
No teraz tylko zastosować pewien trik odnośnie pliku C:\air\bin\adl.exe
Dodajemy do zmiennej środowiskowej w systemie Windows PATH ścieżkę C:\air\bin\
Wybieramy następnie folder C:\samples\full a w nim robimy plik wsadowy run.bat z skryptem

adl application.xml

a następnie uruchamiamy ten plik w ten sposób otwieramy aplikację AIR w trybie debugowania ale i także możemy uruchamiać aplikacje AIR bez konieczności instalowania środowiska runtime. Przypuszczam, że ten sposób też pozwoli na uruchamianie aplikacji AIR pod Linux trybie emulacji z Windowsem. Można ten plik run.bat powstawiać do każdego folderu z przykładem z folderu C:\samples i w ten sposób poznawać możliwości Adobe AIR Powodzenia!

środa, 19 grudnia 2007

HaxeVideo

Otóż Adobe wypuściło Flash Media Server 3 w dwóch wersjach Flash Media Streaming Server 3 i Flash Media Interactive Server 3.0
Ale dokumentacja jeszcze jest dla Flash Media Server 2 i jeszcze nie ma wersji developerskiej  wykorzystującej te nowości  (jest tylko  wersja  developerska  dla  Flash Media Server  2) Te rozwiązania są dobre jak komuś zależy na  nadawaniu  telewizji  wysokiej klasy  w sposób strumieniowy wykorzystując  H.264 and HE-AAC. Ale większość ludzi zadowala się niską jakością, bo mają często  wolny transfer, w tej sytuacji wystarczy im standard H.263 (jako kodek On6 w formacie FLV).  Ponieważ te technologie są drogie ( tzn licencja na komercyjne wykorzystanie sporo kosztuje ) więc programiści zaproponowali nowe alternatywne produkty Red5 i HaxeVideo (prawdopodobnie przewaga HaxeVideo polega na możliwości nagrywania dźwięku z mikrofonu)

Ściągamy kompilator HaXe wraz maszyną Neko 1.6
Instalujemy je (instalator sam pobierze aktualne wersje)
Instalator zainstaluje je w C:\Program Files/Motion-Twin/haxe/
Następnie pobieramy HaXe Video
I rozpakowujemy to na serwerze Apache jako folder haxevideo np: w E:\Program Files\Apache Software Foundation\Apache2.2\htdocs
Uruchamiamy serwer HaXeVideo klikając w plik server.bat i zauważymy tekst "Starting haXe Video Server on localhost::1935"
a następnie  możemy  wejść  http://localhost/haxevideo/video.html przez przeglądarkę
I klikamy "Play Test Video" i zobaczymy jak szybko i płynnie możemy oglądać plik 2MB FLV (od razu  bez buforowania)
Podobnie możemy nagrać na żywo audycję do pliku *.flv  - wystarczy kliknąć  "Record Cam"

Przypuszczam, że uruchomienie tego serwera jest też możliwe na Linuksie.
 

czwartek, 13 grudnia 2007

Adobe Flash Player 9.0.115

Adobe zrobiło programistom świetne prezenty pod gwiazdkę. 3 grudnia 2007 upubliczniło wersję developerską Flash Lite 3, która ma obsługiwać pliki video flv. ( u mnie działa na mojej komórce bez problemów). Programiści FlashLite muszą zaktualizować Flash Lite 3.0 Update for Device Central CS3 a także Adobe Flash CS3 Professional (9.0.2).z 12 grudnia 2007 roku. Więcej informacji o programowaniu video pod Flash Lite 3 można przeczytać w tym artykule Wprowadziło także nową wersję Adobe Flash Playera 9.0.115. I zmieniły się jej wymagania sprzętowe (co oznacza, że na słabszych komputerach nie ma co się cieszyć z obsługi nowych technologii wideo). Ta wersja zawiera sporo usprawnień. Główną nowością jest to że pozwala na obsługę filmów zakodowanych kodekiem H.364 (który wchodzi w część standardu MPEG-4) a także dźwięku w formacie ACC. Istotne jest to że po 18 grudnia Adobe po otrzymaniu informacji od Google o pewnych problemach związanych z bezpieczeństwem w internecie zaleca jako środek zaradczy wyłączanie obsługi gniazd w Flash Player. Dla programistów zainteresuje możliwość to, że biblioteki frameworka Flex mają być scachowane Jako pliki SWZ, co pozwoli na tworzenie mniejszych plików SWF bo nie trzeba będzie łączyć komponentów frameworka Flex z plikami aplikacji. Pomimo nowych rozwiązań Adobe wprowadziło też bardziej restrykcyjną politykę bezpieczeństwa dla Flash Playerów

Kilka dni później 12 grudnia 2007 Adobe wprowadziła nowe wersje beta dla Flex i AIR. Adobe Flex 3 Beta 3 to już ostatnia beta przed premierą. W skład tego wchodzą tez Flex Builder 3 Beta 3, Flex 3 SDK Beta 3, a także rozwiązania serwerowe dla Apache i dla IIS. Adobe AIR Beta 3 składa się z silnika wykonawczego, (który ma działać aż do listopada 2008 roku) Adobe AIR Beta 3 SDK, oraz z dokumentacji dla programistów Flasha, Flex i HTMLDeveloperów

Ale najciekawszą rzeczą jaką zrobiło Adobe to jest upublicznienie specyfikacji AMF 3 jako standardu do wymiany danych (szczególnie bardzo dużych rekordów danych) pomiędzy serwerem a aplikacjami klienckimi. Razem z upublicznieniem tej specyfikacji udostępniła część LiveCycle DataServices ES pod nazwą BlazeDS. (wkrótce może upubliczni też kod źródłowy Jest to aplikacja J2EE, przygotowana do uruchamiania na takich serwerach aplikacyjnych jak Apache Tomcat czy JBoss czy ColdFusion 8.