poniedziałek, 26 listopada 2007

Mobile Python

Właśnie pojawiła sie świetna książka Mobile Python: Rapid Prototyping of Applications on the Mobile Platform. Książkę napisali Jürgen Scheible i Ville Tuulos. Ale największą perełką jest lista przykładów zamieszczona na tej stronie. Warto ją przejrzeć aby zorientować się jakie możliwości tkwią w programowaniu platformy Series60 systemu operacyjnego Symbian. Ma się dostęp do GUI (okna dialogowe), obsługę SMSów, odtwarzania i nagrywania dźwięku i muzyki, a także obsługę grafiki zarówno z plików i jak z niskopoziomowego interfejsu do rysowania. Interesujące też może być tworzenie aplikacji bazujących na bazach danych Sporo jest przykładów wykorzystujących internet. takich jak ściąganie plików, tworzenie własnego serwera internetowego, wykorzystanie AJAX/JSON, komunikację z usługami internetowymi typu Yahoo Maps, Flickr, a także zrobienie własnego komunikatora. Zawiera też przykłady wykorzystujące technologie charakterystyczne dla telefonów komórkowych takich jak obsługa Bluetooth czy GPS bądź kamery. I to wszystko w małej ilości kodowania (linii kodu).

Można śmiało polecić tą książkę każdemu kto ma komórke z Series60, aby mógł zapoznać się z możliwościami programistycznymi systemu Symbian. Myślę że ta lektura byłaby dobrym wprowadzeniem do programowania w C++ w Symbianie. Dlaczego? Tym lepiej zrozumie programowanie pod Symbianem zanim zacznie naukę programowania w C++ pod ten system.

Warto poczytać recenzje tej książki i jak blog poświęcony tej książce, a także posłuchać wywiadu z autorami.

niedziela, 25 listopada 2007

Po powrocie z sanatorium....

W sanatorium byłem zdany na możliwości jakie ma do zaoferowania moja komórka. Nie miałem zbyt dużo możliwości korzystania z komputera z dostępem do internetu. Pomimo tego wszystkiego nie miałem problemów z przeglądaniem stron internetowych w komórce. Gorzej było tam gdzie występowały aplikacje AJAX i formularze HTML (korzystając z WAP a nie GPRS).

Jak czas mi pozwalał to poznawałem możliwości jakie daje stosowanie Mobile Web Serwer (MWS) w mojej komórce. Jest to serwer internetowy oparty na klonie serwera Apache (Raccoon) na platformę Series60 systemu operacyjnego Symbian. Firma Nokia postanowiła ułatwić programistom tworzenie aplikacji dla MWS dostarczając im platformę hostingową mymobilesite.net, dzięki której mogą publikować swoje aplikacje pod spójnym adresem WWW.
Cała sztuka polega na tym, że podczas uruchomienia MWS można się połączyć z internetem bądź pracować lokalnie. Gdy łączy się z internetem użytkownik przesyła swoje dane do platformy hostingowej, gdzie IP komórki na którym się znajduje MWS zostanie skojarzony z jego adresem DNS na tej platformie.

Razem z MWS zostaje zainstalowany portal będący swoistym panelem administracyjnym. Główne jego cechy to zarządzanie dostępem za pomocą autoryzacji HTTP i wersje lokalizacyjne (niestety nie ma jeszcze polskiej wersji). Wraz z nim zostają zainstalowane moduły napisane w Pythonie takie jak: blog, galerie zdjęć i plików wideo znajdujących sie w komórce, robienie zdjęć z kamery w komórce, przesyłanie SMS przez własną komórkę, zarządzanie kontaktami, kalendarzami, notatkami, logi z ostatnich rozmów. Warto przestudiować dogłębnie podręcznik Mobile Web Server Book dla użytkowników portalu i jak informacje dla programistów a także na bieżąco być informowany z bloga

Ponieważ możliwości MWS będą się rozwijały wraz z rozwojem Raccoona, PyS60 i samego Symbiana. Na przykład zaskoczył mnie mile mechanizm pozwalający na czytanie tekstu i fakt że można to zastosować w aplikacji dla MWS. Oznacza to, że synteza mowy pojawi się szybciej w aplikacjach po stronie serwera w komórkach niż w klasycznym hostingu. Zauważyłem że niektóre komórki z Symbianem też mają rozpoznawanie mowy czy pisma (aczkolwiek programowanie tej funkcjonalności jest dostępne dla firm tworzących konsorcjum Symbiana niż dla programistów open source).

Co to oznacza dla biznesu czy rozwoju aplikacji internetowych? Komórki (smartphones) w odróżnieniu od laptopów mają cechę, którą sprawia, że stają właściwie "inteligentnymi pilotami" do sterowania wieloma urządzeniami i co ciekawsze pozwalają na faktyczne funkcjonowanie organizacji w czasie rzeczywistym przez internet. Wstawienie serwera WWW w urządzeniu klienckim sprawia, że zmienia rola internetu - przeglądarka internetowa staje bramą do systemu operacyjnego w ten sposób jak są rozwinięte sieci Peer2Peer. W sieciach Peer2Peer głownie wymienia sie plikami. Natomiast jest obecnie jest tendencja do tworzenia aplikacji które pozwalałby na pracę w trybie offline i jak wykorzystać możliwosci jakie dają sieci Peer2Peer. W tej sytuacji lepiej jest tworzyć własne aplikacje internetowe i ich odpowiedniki pozwalające na pracę offline i wzajemną synchronizację danych. Może dojść do sytuacji, gdzie ściąga się skrypty w Pythonie (jako paczkę .sis) i uruchamia sie na własnym lokalnym serwerze. A ten lokalny serwer przekazuje informacje do przeglądarki internetowej, albo wykonuje skrypt w trybie wsadowym pozwalając na wykorzystanie GUI systemu Symbian. Można w ten sposób szybko przełączać się pomiędzy wersją lokalną dla przeglądarki internetowej w ten sposób "inni" też mają dostęp do tej wersji lokalnej jak znają adres DNS serwera na komórce. W razie czego można przełączyć na na wersję GUI. Przykład: napisano skrypt w PyS60 do zapisywania własnych wyników nad ćwiczeniami rehabilitacyjnymi wykorzystujący GUI Symbiana. Gdy trzeba upublicznić wyniki to wystarczy napisać skrypt dla MWS robiący to samo co poprzedni skrypt (poprzez jego nieznaczną modyfikację). W efekcie końcowym oznacza to, że większość prostych aplikacji na Symbiana będzie można zaprogramować sobie przy pomocy PyS60 i odpalać z poziomu przeglądarki internetowej lokalnie ( tj na adresie 127.0.0.1) . Twórca Raccoona Johan Wikman przewidując rozwój aplikacji internetowych / intranetowych opartych o wbudowany serwer WWW w komórkach rozpoczął prace nad interpreterem PHP i bibliotekami PHP dla Series60 (Personal Apache, MySQL, PHP - PAMP). Apple wypuszczając iPhone chciało pokazać, że należy budować aplikacje mobilne oparte na przeglądarce internetowej. Ten kierunek ma sens wtedy gdy użytkownik dysponuje dość stabilną łącznością bezprzewodową i nie traktuje komórki jak małego komputera. Spotkało się to z pewną niechęcią w środowisku biznesowym (ale nie wśród zwykłych użytkowników dla których funkcjonalność w postaci możliwości programowania urządzenia mobilnego jest zbytecznym bajerem).

Natomiast Google postawiło na budowanie własnej platformy programistycznej opartej na języku Java ale niezależnej od J2ME / PhoneME (czy JavaFX Mobile). Tak powstał Android. Patrząc na API Androida jest to próba przeniesienia części API Symbiana dla programistów Java, szczególnie jeśli chodzi o UI aplikacji (które właściwie nie zmieniło się od dawna).

Kwestią czasu jest pojawienie sie technologii AIR Mobile. Ale obecnie już można robić przy pomocy frameworka Flyer i FlashLite 2.0 to co ma być w AIR Mobile.