środa, 25 czerwca 2008

Hakowanie Adobe AIR

Czasami padają pytanie jak uruchamiać Adobe AIR na CD/DVD/USB nie naruszając warunków dystrybucji silnika opisane w ich FAQ.

Po pierwsze trzeba zrozumieć jak wygląda instalacja silnika Adobe AIR. Z strony Adobe pobiera się plik AdobeAIRInstaller.exe. Silnik Adobe AIR zawsze instaluje się w tym folderze:
C:\Program Files\Common files\Adobe AIR\Versions\1.0
z następującymi plikami:

Adobe AIR Application Installer.exe
Adobe AIR Application Installer.swf
Adobe AIR Updater.exe
Adobe AIR.dll
Adobe Root Certificate.cer
airappinstaller.exe
digest.s
NPSWF32.dll
setup.swf
template.exe
template.msi
Thawte Root Certificate.cer
WebKit.dll

Rdzeniem silnika są pliki: WebKit.dll, NPSWF32.dll, Adobe AIR.dll.
Ale po zainstalowaniu silnika można zauważyć, że pliki *.air mają charakterystyczną ikonką. Najważniejsze to jest to, że pliki AIR są archiwami typu zip.
Po rozpakowaniu można zauważyć, że mają one odpowiednią strukturę.

aplikacja.swf
mimetype
icons/
air_16.png
air_32.png
air_48.png
air_128.png
META-INF/
AIR/
application.xml
hash
publisherid
signatures.xml

Ale po uruchomieniu pliku *.air zaczyna się proces instalacji, który polega na tym że plik airappinstaller.exe rozpakowuje zawartość *.air do określonego katalogu, a następnie wstawia plik template.exe pod odpowiednia nazwą do katalogu w którym jest rozpakowana zawartość. Przy tej okazji wprowadza też wpisy do rejestru o zainstalowaniu tej aplikacji oraz skróty. Plik temaplate.msi jest tylko potrzebny, po to żeby zrobić deinstalator aplikacji (tylko nie wiem gdzie go wstawia w systemie). Plik template.exe jest wrapperem, który ma za zadanie załadować biblioteki silnika, zinterpretować plik application.xml oraz uruchomić stos TCP/IP danego systemu operacyjnego (np: do obsługi cookie).

Natomiast gdyby komuś zależało na uruchomieniu aplikacji AIR niezależnie od silnika to możne uruchomić aplikację AIR używając debuggera adl z AIR SDK w tej sytuacji można samu napisać plik wsadowy/skrypt/program do uruchomienia aplikacji AIR z adl.

Osadzanie aplikacji AIR wraz z plikami silnika AIR jest zabronione. Ale połączenie aplikacji AIR z zawartością AIR SDK nie jest zabronione i w tej sytuacji można pokusić się o napisanie archiwum wykonywalnego które jest archiwum plików AIR SDK z plikami aplikacji AIR. W razie czego warto napisać do Adobe prośbę o udzielenie licencji na dystrybucję silnika AIR wraz z aplikacją AIR na nośnikach.

Aplikacje AIR poza katalogiem instalacyjnym, używają też specjalnego katalogu w którym przechowywane są zaszyfrowane dane C:\Documents and Settings\root\Dane aplikacji\Adobe\AIR\nazwa_aplikacji_AIR\ Przeważnie są to pliki typu:
PrivateEncryptedData

wtorek, 24 czerwca 2008

Literatura do Adobe AIR

Sezon wakacyjny przed nami. Warto ten czas poświęcić na czytanie książek. Podstawowa literatura to dokumentacja Adobe w plikach PDF (do wydrukowania na drukarce laserowej i zbindowaniu jej)
Dokumentacja AIR/Flex Builder 3 - Pełna wersja dla programistów Flex
Dokumentacja AIR/Flash CS3 - Wersja dla programistów Flash
Dokumentacja AIR/HTML/Ajax - Wersja dla programistów HTML
Dokumentacja dla programistów ActionScript 3
Warto też poczytać o kwestiach bezpieczeństwa w aplikacjach AIR i o modelu bezpieczeństwa aplikacji AIR stosujących AJAX w dokumentach HTML

Zawsze może tak być, że ta dokumentacja jest albo zbyt uproszczona albo nie jest podręcznikiem, który ma za zadanie wprowadzić w programowanie czy stosowanie danej technologii. Dlatego jest duże pole popisu dla autorów książek czy firm szkoleniowych.

W Polsce na razie można się dowiedzieć o Adobe AIR na szkoleniach firm IT Media czy Altkomu. Takie szkolenia mają sens wtedy gdy firma potrzebuje "na szybko" wprowadzenia do tej technologii dla swoich pracowników w celu uzyskania przewagi konkurencyjnej na rynku. W praktyce takie kursy są tylko wprowadzeniem i wymagają już wcześniej opanowanych umiejętności.
Jednak najlepszym sposobem jest samodzielna edukacja wspierana odpowiednią literaturą. Co się ukazało z książek o Adobe AIR?
Adobe Integrated Runtime (AIR) for JavaScript Developers Pocket Guide. Autorami są Mike Chambers, Daniel Dura, Kevin Hoyt. Książka z serii Adobe Developer Library wydawnictwa O'Reilly została wydana w czerwcu 2007 roku. Książeczka ma 174 stron. Ta książeczka przez została opublikowana w wersji PDF do pobrania. Potem wydano tą książeczkę pod takim tytułem: Adobe AIR for JavaScript Developers Pocket Guide, autorstwa Mike Chambers, Daniel Dura, Kevin Hoyt, Dragos Georgita, z serii Adobe Developer Library wydawnictwa O'Reilly w kwietniu 2008 roku. Książeczka ma 204 stron. Jest to całkiem przystępna książka, która koncentruje się na problemach do rozwiązania w tym momencie trudno oczekiwać ze względu na rozmiar książki dokładnych wyjaśnień i rozbudowanych przykładów. Ostatnio ta pozycja dorobiła się własnego serwisu WWW i nowej pozycji zatytułowanej Adobe AIR for Flex Developers Pocket Guide nad którą pracują Mike Chambers, Robert L. Dixon i Jeff Swartz.
Gdy komuś zależy na wprowadzeniu w krok po kroku w technologię Adobe AIR do tworzenia aplikacji AIR bazujących na HTML/AJAX to polecam książkę:
Adobe AIR (Adobe Integrated Runtime) with Ajax: Visual QuickPro Guide. Autorem jest Larry Ullman. Książka została wydana przez wydawnictwo Peachpit Press w maju 2008 roku. Książka ma 384 stron. Autor prowadzi stronę internetową poświęconą tej książce. Można pobrać kody źródłowe do tej książki.

Dla programistów Adobe Flex 3 polecam następujące książki:
Beginning Adobe AIR: Building Applications for the Adobe Integrated Runtime. Jej autorem jest Rich Tretola. Książkę z serii Programmer to Programmer wydawnictwa Wrox wydano w kwietniu 2008 roku. Książka ma 319 stron i 15 rozdziałów. Można ściągnąć kody źródłowe do tej książki. Autor też prowadzi swojego bloga
Adobe AIR: Create - Modify - Reuse autorstwa Marc Leuchner, Todd Anderson, i Matt Wright. Książka z serii Programmer to Programmer wydawnictwa Wrox wydano w kwietniu 2008 roku. Książka ma 457 stron i 12 rozdziałów. Można zapoznać się z spisem treści, z pierwszym rozdziałem tej książki. Można też pobrać kody źródłowe z 12 aplikacji. Autorzy mają też swojego bloga. Książkę bardzo mocno polecam ze względu na to, że podczas czytania można zapoznać się na konkretnych przykładach.
Creating Mashups with Adobe Flex and AIR. Autorami są John Crosby, Chris Korhonen i David Hassoun. Książka została wydana przez wydawnictwo Friends of Ed w kwietniu 2008 roku. Ma 368 stron. Jest to książka, która koncentruje się na wykorzystaniu publicznych interfejsów wielu usług internetowych takich jak Flickr, Amazon S3, OpenID, bądź stosowanie Ajaxa czy rozwiązań typu SWX. Warto przyjrzeć się kodowi źródłowemu to tej książki.

Zapowiedzi wydawnicze do kupienia po wakacjach w nawiasach miesiące wydania.

Adobe AIR in Action; Joseph Lott, Kathryn Rotondo, Samuel Ahn i Ashley Atkins. (czerwiec 2008).
Adobe AIR Programming Unleashed; Stacy Tyler Young, Michael Givens i Dimitrios Gianninas (wrzesień 2008)
Breaking Out of the Web Browser with Adobe AIR; Michael Labriola i Jeff Tapper (wrzesień 2008)
Adobe AIR Cookbook: Solutions and Examples for Rich Internet Application Developers; David Tucker, Marco Casario, Koen De Weggheleire i Rich Tretola (listopad 2008)
Adobe AIR For Dummies; Richard Wagner (listopad 2008)
Sams Teach Yourself Adobe AIR Programming in 24 Hours; Michael Givens (listopad 2008)
Professional AIR: Application Development for the Adobe Integrated Runtime; Charles Freedman, Keith Peters, Clint Modien i Ben Lucyk (listopad 2008)
Adobe AIR: A Guide for Developers; Mark Blair, Andrew Muller i Andrew Spaulding (pażdziernik 2008)
Programming Flex 3: The comprehensive guide to creating rich media applications with Adobe Flex; Joey Lott i Chafic Kazoun (wrzesień 2008)
Professional Adobe Flex 3; Joseph Balderson, Peter Ent, Jun Heider i Todd Prekaski (listopad 2008)
AdvancED AIR Applications; Peter Elst, Marco Casario, Zach Stepek, Koen De Weggheleire (pażdziernik 2008)
Konkluzja - jesień 2008 roku zapowiada się interesująco. Książki prawdopodobnie będą już obejmować Adobe AIR 1.1 Gdy ludzie zaczną je kupować to pojawi się Adobe AIR 1.5 i prawdopodobnie wersja beta Adobe AIR 2.0 (wraz ze wsparciem Flex 4). Widać jak szybki jest postęp, że nawet już czekanie na tłumaczenia w wersji polskiej sprawia, że szybko wiedza zdezaktualizuje się.

Uaktualnienie: Ponieważ od dłuższego czasu przeglądam japońskie serwisy japońskich programistów Action Script pozwolę sobie na zamieszczenie linków do japońskich książek o Adobe AIR.

Ostatnio ukazała się książka autorstwa kujira hikou tsukue, "Adobe AIR Professional Guide" wydawnictwa Mycom. Książka ma 448 stron i 7 rozdziałów. Wydaną ją w czerwcu 2008 roku. Dla ciekawych są dostępne kody źródłowe. Ten autor jest redaktorem jednego z najbardziej interesującej japońskojęzycznej serii artykułów o Adobe AIR.

Poprzednio tez to wydawnictwo wydało książkę autorstwa nuno ryuu kawa eiichi pod tytułem "Adobe AIR Programming Guide" i wydano ją w grudniu 2007 roku dla Adobe AIR beta 2. Książka tez ma 440 stron i jest podzielona na 7 rozdziałów. Do tej książki można pobrać kody źródłowe i jak przejrzeć stronę internetową poświęconą tej książce. Zaletą tej książki jest omawianie przykładów opartych na bibliotekach JavaScriptu takiej jak ExtJS.

Pojawiła się też książka autorstwa ZAPA "The first programming Adobe AIR". Książka ta zawiera dołączony CD Książka ta ma 208 stron i 7 rozdziałów.

środa, 18 czerwca 2008

Adobe AIR 1.1

Zgodnie z tym co się dowiedziałem się na Adobe AIR on Tour Spring 2008 w Warszawie że mają zostać wypuszczone nowe wersje silnika Adobe AIR. Adobe AIR 1.1 ma zostać zlokalizowana i umożliwić twórcom tworzenie międzynarodowych wersji aplikacji AIR.
Mnie poza nowymi bibliotekami JS w Adobe AIR SDK zainteresował sprosób w jaki się przedstawia ta nowa wersja AIR 1.1
Zauważyłem wpis typu UserAgent:
Mozilla/5.0 (Windows; U; pl-PL) AppleWebKit/523+ (KHTML, like Gecko) AdobeAIR/1.1
Zrobiłem test UserAgent dla AIR 1.0 to mi pokazało:
Mozilla/5.0 (Windows; U; pl-PL) AppleWebKit/420+ (KHTML, like Gecko) AdobeAIR/1.0

Zrobiłem testy przy pomocy przeglądarki Scout. Przedstawia sie jako: że ma silnik Webkit420+ co oznacza że był zgodny z Safari 2. Test ACID 2, prawie przeszedł zrzut ekranu. Test ACID 3 przeszedł z wynikiem 39/100. Test Sun Spider z wynikiem Total: 30831.2ms +/- 2.9%, a test Dromaeo z wynikiem 17213.40ms

Wniosek: jak na dzisiejsze standardy Adobe AIR 1.0 wydany w lutym 2008 roku nie był jakoś zacofany jeśli chodzi o obsługę standardów, chociaż całkiem dobre miał wyniki w porównaniu z innymi przeglądarkami z poprzedniej generacji na przykład z Firefoxem 2.0 30300.80ms, a który test ACID3 przechodził wynikiem z 52/100, ustępując Operze 10616.40ms, a Opera 9.27 przy tym teście ACID 3 mi pokazuje 46/100

Ale pojawił się AIR 1.1 to mamy ciekawiej bo Opera 9.5 i jak Firefox 3 już daleko odbiegają w wynikach benchmarków od Adobe AIR, bo w zmienili w nim silnik na AppleWebKit/523+ co oznacza że jest zgodny z Safari 3.0.4
ACID 2 wygląda identycznie jak w poprzedniej wersji. ACID 3 wypada z wynikiem 40/100 czyli to było do przewidzenia biorąc pod uwagę wyniki jakie osiągało Safari 3.0.4. Test Dromaeo dla AIR 1.1 to 17958.20ms

Podsumowanie wyników testów wydajnościowych JS dla Opery 9.23, Firefoxa 2.0.0.14, AIR 1.0 oraz AIR 1.1, Safari 3.0.4


Obserwując tempo zmagań programistów jak tworzą coraz szybsze przeglądarki w ostatnim roku czasu to jednak doceniam Adobe, że jednak postawiło na Webkita, bo okazuje się że ten silnik w ciągu roku czasu osiągnął taki szybki postęp technologiczny przy wsparciu programistów Google (Android), Nokia (Web Browser S60), KDE (przeglądarka KHTML), Trolltech (silnik graficzny Qt), w przeciwieństwie do silnika Gecko, które na razie jest rozwijane przez Fundację Mozilla, przy wsparciu Adobe (z silnikiem Tamarin). Adobe wybiera stabilne wersje silnika Webkit, co może to trochę dziwić ze nie wybrało najnowszej stabilnej wersji WebKit 525. Myślę ze to jest podyktowane procesem projektowania technologii w korporacjach, jak inżynierzy tworzą projekt to wybierają aktualną wersję biblioteki i do tej wersji zaczynają prace koncepcyjne, potem przychodzi pora na programowanie a potem na testowanie. W tym czasie biblioteka też sie rozwija, ale w trosce o bezpieczeństwo produktu biblioteka nie jest aktualizowana.

poniedziałek, 16 czerwca 2008

Safari 4

Safari 4 beta można pobrać stąd
Krótko cieszyłem się najszybszą przeglądarką świata. bo pojawiły się Safari 4 Developer Preview pod Windows, Opera 9.5 oraz Firefox 3. Zalogowałem się na Apple Developer Connection. Pobrałem. Zainstalowałem to cudo. Uaktywniłem w menu Develop, ale z jakiś tam powodów nie chciało mi uruchomić Show Web Inspector. Może ktoś z czytelników wie jak uruchomić to pod Windows XP. Z poważniejszych nowości to faktyczne zapisywanie stron WWW jako pliki exe. Idea całkiem interesujaca, ale nie przydatna dla kogoś kto nie ma zainstalowanego Safari 4, bo te pliki korzystają z ustawień Safari 4. Zrobiłem sobie test szybkości wykonywania skryptów JS z wynikiem 4634.40ms. Mogłem też cieszyć się przejściem testu ACID3,

Oczywiście że warto dopingować zespołowi tworzącemu silnik WebKit, Mam nadzieję że lepsza współpraca Google (Google Gears) , z Apple (twórcy Webkit i Safari) oraz Adobe (Adobe AIR i Adobe Flash Player) sprawi że szybko powstanie przegladarka obsługujaca HTML 5.

PS. Instrukcja jak uruchomić w menu Safari Programowanie (Debug) i jak dodac do menu kontekstowego Skontroluj element (Inspect element)
W pliku C:\Documents and Settings\Michal\Dane aplikacji\Apple Computer\Safari\Preferences\com.apple.Safari.plist
dodajemy wpis

<key>WebKitDeveloperExtras</key>
<true/>

natomiast w pliku C:\Documents and Settings\Michal\Dane aplikacji\Apple Computer\Safari\WebKitPreferences.plist dodajemy wpis

<key>WebKitDeveloperExtras</key>
<true/>
<key>WebKitUserStyleSheetLocationPreferenceKey</key>
<true/>
<key>IncludeDebugMenu</key>
<true/>

sobota, 14 czerwca 2008

Znacznik Canvas

Gdy pomyślałem o tym w jakim kierunku rozwinie się programowanie interfejsu użytkownika aplikacji komputerowych i jak aplikacji na urządzenia mobilne to coraz większe znaczenie będzie tkwiło w rozwoju możliwości silników przeglądarek internetowych. Silniki renderujące HTML i CSS oraz interpretery JavaScript są kluczową kwestią przy wyborze technologii dla nowego interfejsu użytkownika.
Coraz bardziej istotne jest udostępnienie programistom możliwości rysowania i animowania na stronie internetowej bez konieczności wspierania się zewnętrznymi rozszerzeniami. Ale i tak nie ucieknie się od instalowania rozszerzeń - jeżeli chodzi o nowe funkcjonalności. Flash Player i jak Silverlight są po to, aby użytkownicy mogli obsługiwać treść multimedialną. Wszystko jest w porządku gdyby nie to, że kierunek rozwoju prezentacji treści zmierza w stronę mechanizmów które są stosowane przy składzie tekstu (zwiększenie uwagi na typografię, stosowanie układu wielokolumnowego, nowy sposób nawigacji - stosowanie radialnego menu tzw: pie menu).

Pozostaje pytanie - czy to jest potrzebne? Nawyki i przyzwyczajenia są czymś naturalnym. Zawsze są jakieś propozycje dla użytkowników. Na przykład stosowanie gestów myszki pozwalają na wykonywanie pewnych akcji o wiele szybciej. Jak dzisiaj technologie Adobe w formatach SWF i PDF zmonopolizowały świat. To czy jest coś co może zagrozić tym formatom? Tak, znacznik canvas. Można by porównać go do tego jak było z AJAX, technologie które były w IE4 czy Mozilla 1.0 można było stosować w AJAX, ale niewielu programistów o tym wiedziało. Myślę, że coś podobnego czeka na "odkrycie" znacznika canvas. Znacznik canvas świetnie nadaje sie do tworzenia zawartości interaktywnej ze szczególnym naciskiem na graficzny interfejs użytkownika.

Warto śledzić i poznawać możliwości zastosowania znacznika canvas.
John Resig napisał bibliotekę Processing.js dzięki której otrzymaliśmy framework do programowania grafiki dwuwymiarowej w przeglądarce internetowej. Istnieje też biblioteka ExplorerCanvas napisana przez Emila Eklund, Erika Arvidssona i Glena Murphy'ego dla Internet Explorera pozwalająca tej przeglądarce wykorzystywanie znacznika Canvas.
Na stronach internetowych dla programistów Mozilii jest Przewodnik po canvas w języku polskim. Warto go przerobić w kontekście wykorzystania go w Adobe AIR. Istnieje bardzo ciekawe narzędzie interaktywne Canvas Shell do testowania znacznika canvas za pomocą kodu JavaScript. W oparciu o możliwości canvas powstała biblioteka Reflection.js 1.9

Ale jak myślę, że największe zastosowanie znacznik canvas może mieć w tworzeniu gier reklamowych wykorzystujących Ajax pisanych w JavaScript. Przypuszczam że, będzie można tworzyć proste gry w JavaScript dla Adobe AIR i na strony internetowe.

Możliwości można już posmakować w poszczególnych przykładach: Canvascape, Unreal Soccer, Arcanoid, Canvas Quest, 3d JavaScript Chess, Canvas Paint, JavaScript Super Mario Kart, Mocha UI, Blob Sallad, PlotKit, Canvas Painter, Ajax3d.
Skoro na komórkach mamy możliwość programowania w 3D w OpenGL ES to dlaczego mamy do tej pory czekać na takie rozwiązania w przeglądarkach WWW w postaci Canvas 3D? Programista Mozilli Vladmir Vukićević zaproponował takie rozszerzenie dla Firefoxa 3, a to już na horyzoncie Alp Toker pracuje nad przeglądarką na bazie silnika WebKit w której można będzie można przenieść świat Second Life do przeglądarek internetowych. Ale tak w sumie Flash Player ze swoimi silnikami 3D wraz ze wsparciem Adobe AIR dla znacznika canvas są obecnie najlepszym rozwiązaniem dla programistów, którzy chcieliby tworzyć bogaty interfejs użytkownika aplikacji komputerowych, przy użyciu technologii stosowanej w przeglądarkach internetowych.

czwartek, 5 czerwca 2008

SquirrelFish

Całkiem niedawno zachwalałem koncepcję kompilacji kodu JavaScript do bajtkodu w locie. Do silnika WebKit został dodany nowy silnik SquirrelFish wykonawczy bazujący na wirtualnej maszynie. Można oczekiwać że kolejne wersje uaktualnienia Adobe AIR będą bazować na nowej wersji WebKit. Ale jakoś nie mogłem uwierzyć statystykom Postanowiłem użyć swojego kodu Java Script na fib(30). Zainstalowałem Safari 3.1 Nie sprawiało mi to problemu. Okazało sie to wersja 3.1.1 (525.17) Pomyślałem że trzeba wsiąść najnowszego night builda silnika WebKit. Była to wersja WebKit r34367 z 5 czerwca 2008. Najpierw przetestowałem fib(30) na oficjalnym Safari 3.1.1 z wynikiem 1843 ms. Potem w folderze gdzie miałem zainstalowane Safari C:\Program Files\Safari plik WebKit.dll w wersji 3.525.18.0 zastąpiłem plikiem z night builda WebKit.dll w wersji3.526.0.0 (podmieniłem też folder WebKit.resources). I uruchomiłem test fib(30) z wynikiem 468 ms.

Tak cieszę najszybszą przeglądarką świata.