Development z Zapomnianej Strony

..:: Paweł Hofman .NET Portal ::..

Adobe wprowadziło własną obsługę formatu JSON w wersji AIR 3.0+. Udostępniona została ona poprzez obiekt JSON z głównej przestrzeni nazw (z metodami parse() oraz stringify()). Co ciekawe na PlayBooku używa ona natywnego kodu, przez co jest dużo wydajniejsza od jakiejkolwiek biblioteki napisanej w ActionScript przez kogoś w sieci!

Jeśli jednak zbudujemy projekt w FlashDevelop IDE, tak jak to opisałem wcześniej, to wszystko będzie super działało w środowisku testowym na Windowsie. Jednak przy próbie uruchomienia na urządzeniu (tj. PlayBooku z OS 2.0.1, AIR w wersji 3.1.0.38 i Flash Player w wersji 11.1.121.38), dostaniemy w prezencie piękny błąd wykonania:

ReferenceError: Error #1065: Variable JSON is not defined.

Dlaczego? Przecież wszystko jest na swoim miejscu. Niby tak, ale ciągle nie wymusiliśmy uruchomienia naszej aplikacji w AIR 3+ (czy to Flash Player 11+). Aby to poprawić, należy dodać do opcji kompilatora informacje, że korzystamy z wersji SWF 13. We właściwościach projektu w polu Additional Compiler Options wpisujemy:

-swf-version=13

Compiler_Options

I tak to właśnie działa!



Jak zrobić zrzut aktualnego ekranu na PlayBooku? Można oczywiście aparatem ;), ale jak uzyskać coś w oryginalnej rozdzielczości?

Wciśnij przyciski Volume+ i Volume- jednocześnie. A plik zostanie zapisany pośród innych utworzonych zdjęć na rolce aparatu. Niestety nie zostanie odegrany żaden dźwięk ani animacja w tym momencie, sygnalizująca wykonanie tej operacji.

Następnie używając QNX Momentics IDE i widoku Target File System Navigator, otwieramy folder, w którym obrazki te się znajdują:

    wifi:/accounts/1000/shared/camera/

i możemy je przegrać na swoją maszynę.



Niestety do tej pory nie ukazała się, żadna publiczna wersja frameworka graficznego Cascades na PlayBooka. Czy to oznacza, że nie można łatwo tworzyć aplikacji graficznych na ten tablet?

Otóż nie! Jest to najbardziej otwarta platforma, z jaką miałem do czynienia pracować i gorąco zachęcam do zabawy z nią! Posiada (oprócz oczywiście Androida) pełne wsparcie dla technologii Flash! I co ciekawe, co pokażę dalej, programy można tworzyć, łatwo, szybko i przyjemnie, a wyglądają one przy tym jak te natywne. Co najważniejsze, wszystko to ZA DARMO!

 

Czego potrzebujemy? (zalecam instalację w podanej kolejności)

FlashDevelop

  • BlackBerry Tablet OS Template dla FlashDevelop (instalacja polega na wypakowaniu wszystkiego do folderu: C:\Program Files\FlashDevelop\Projects). Szablon ten wymagał niestety kilku poprawek, które zaraz opiszę, ale lepsze to, niż pisać wszystko od zera. Teraz przynajmniej, tworząc nowy projekt dostaniemy wszystko, aby szybko utworzyć pierwszą aplikację.
  • I na dokładkę coś, co po prostu umili życie oraz deployment. Instalujemy FriutBat 1.4. Na jego stronie znajduje się też mały przewodnik o tym, co jak i gdzie. Jedyne, co jest istotne to znowu, lokalizacje SDK oraz adres IP urządzenia i hasło do niego.

FruitBat_Settings

Trochę tytułem wstępu – na co dzień używam NDK 2.0 do pracy z kodem w C/C++ i dystrybuowanego razem z nim QNX Momentics IDE. W nim też mam skonfigurowane wszystkie potrzebne klucze (P12, CSJ, CSK…), debug-token itp. Dlatego ten etap pominę ;) Na tej stronie zainteresowani znajdą wszystko.

Tak naprawdę to wystarczy to zrobić RAZ, z automatu przy pomocy czarodzieja (wizzarda) z Momentics’a (nie to co w poprzedniej wersji SDK, która wymagała rejestracji w Internecie, i wymiany emaili z RIMem, która trwała kilka godzin!) i włączyć tryb developerski na urządzeniu i oczywiście zapomnieć (na jakiś czas, aż klucze nie wygasną :D). W dodatku dla wygody, FriutBat również odnajduje te klucze w ich domyślnych lokalizacjach i nie musimy tego tam ustawiać.

Jeszcze końcowa uwaga, zanim przejdziemy do mięska – wszystkie te narzędzia, które wymieniłem po liście SDK, nie są oficjalnie wspierane przez RIM, a przez grono programistów, którym się nudzi po godzinach. Mimo to wszystko działa w jak najlepszym porządku i nie spotkałem się z jakimikolwiek problemami.

Jeśli nie chcesz stosować tych sztuczek, to po prostu kup Adobe Flash Buildera, a wszystko skonfiguruje się samo.

 

Moja pierwsza aplikacja!

  • Uruchamiamy FlashBuildera i tworzymy nowy projekt (Project –> New Project) w oparciu o szablon Air BlackBerry Playbook. Nazwijmy go “MyAirTest”.

MyAirTest_Template

  • Próba kompilacji zakończy się błędem:

     

    Error: a target file must be specified
    Use 'mxmlc -help' for information about using the command line.

    Rozwiązanie: w oknie ‘Project’, naciskamy PPM na pliku MyAirTest.as i wybieramy opcję “Set Document Class”.
  • Kolejny błąd, choć tym razem inny:

MyAirTest\src\MyAirTest.as: Error: A file found in a source-path 'MyAirTest' must have the same name as the class definition inside the file 'Main'.

Rozwiązanie: Szablon źle nazywa główną klasę (tzn. Main), a powinna ona nazywa się tak samo jak plik, w którym się znajduje.

  • Otwórzmy może oryginalną dokumentację i spróbujmy skopiować przykładowy program autorów PlayBooka (pamiętajmy o nazwie głównej klasy, aby zmienić ją na MyAirTest).
  • Kompilacja powinna się udać.
  • Przeciągamy plik application.xml z katalogu ‘bin’ naszej aplikacji na okno aplikacji FruitBat. Automatycznie wczyta on wszystko o naszym programie i powinniśmy być gotowi do instalacji na urządzeniu! Brawo!

MyTestApp_Install

  • Ale nie tak szybko, bo oto kolejne problemy:

Error 305: Initial window content SWF version 11 exceeds namespace version http://ns.adobe.com/air/application/2.5

  • A zatem w application.xml zmieniamy spodziewaną wersję SDK z 2.5 na 2.6 (lub wyższą), poprzez zmianę na “http://ns.adobe.com/air/application/2.6”.
  • Poprawmy od razu informacje o naszym podpisie. W pliku blackberry-tablet.xml wpisujemy odpowiednie informacje w tagach “authorId” oraz “author”. Muszą być one zgodne z debug-toknem, który wgraliśmy na urządzenie!
  • I wgrywamy wszystko FruitBatem (utworzy on podpisany plik *.bar) i używając połączenia WiFi lub USB (zależnie od podanego adresu IP urządzania) i automatycznie je uruchomi.
    I oto cała tajemnica…

PlayBook_MyAirTest

Moja druga aplikacja!

Cóż, w tym momencie nie pozostaje nic innego jak tylko uczyć się Action Script 3. Ciekawsze przykłady – a mianowicie jak utworzyć menu, zakładki, wyszukiwanie itp. znajdują się na portalu blackberry.github.com. Pociąga to za sobą jedną niedogodność – trzeba samemu ręcznie utworzyć pliki projektów zgodne z FlashDevelop (bazując na tych z Flash Buildera). Nie jest to bynajmniej nic trudnego, a bardziej nudne zajęcie.

Jedna podpowiedź – brakujące pliki swc z referencjami głównie do klas QNX znajdują sie tutaj:

   C:\Program Files\Research In Motion\blackberry-tablet-sdk-2.0.0\frameworks\libs

W FlashDevelop, zakładka ‘Project’, PPM na dowolnym katalogu i Add –> Existing File … –> wybieramy np. qnx-screen.swc. A już po samym dodaniu go, naciskamy na nim PPM i wybieramy opcję ‘Add To Library’, co spowoduje, że nazwa zmieni się na niebieską.

 

Co dalej?

Wszystko ;) Własne aplikacje, publikacja, natywne rozszerzenia, aby mieć dostęp do natywnego kodu… jednym słowem – ‘why do I climb a mount? because I am in love!’



Jako szczęśliwy posiadacz Kindle Touch, pragnę wycisnąć maksimum z tego urządzenia. Wszystkich, którzy również borykają się z podobnymi problemami jak:

  • instalacja alternatywnych słowników (np. do języka niemieckiego)
  • poszukują źródeł darmowych książek w języku ojczystym
  • i chcą szybko opanować, co i jak

odsyłam do świata czytników. Warta uwagi strona.



Co nim może być? Otóż – polskie znaki! Pokarało mnie potwornie, bo wszędzie próbuję stworzyć użytkownika o imieniu ‘Paweł’ (aż żal, że tak nazwałem systemowego).

Och, jak ciężko w dobie powszechnej cyfryzacji, o wsparcie chociażby dla kilku głupawych znaków tu i tam. Poległ mi na tym system online FedEx, gdzie lepiej z definicji nie używać żadnych nie ASCII-7 znaków, następnie konsola do GITa, nie umie poprawnie wyświetlić mojego imienia, ani znaleźć katalogu domowego,  a teraz rady sobie nie dają narzędzia do Android na Windows 7.

I tylko jedno lekarstwo przychodzi do głowy – symlink tych wszystkich głupawych odmian, do mojego folderu. W Windows 7 junction robi się tak:

C:\Users>mklink /D "PaweĹ‚" "Paweł"

Znowu możemy poczuć się prawie jak w domu!



Unity3D ponownie zaskakuje, tym razem w związku z pokazaniem na GDC swojego nowego silnika do tworzenia gier w wersji v3.5.

Do 8-ego kwietnia 2012 wciąż jeszcze można za darmo pobierać moduły exportu gier i programów stworzonych w oparciu o ich silnik na platformy iOS oraz Android. Wreszcie można poeksperymentować i na tych platformach, zanim zdecydujemy się na zakup!

Jest to nie lada gratka, zważywszy na cenę ich produktów w wersji “Pro”.

Więcej o tym tutaj. Licencje tutaj.



Gdy w końcu przyjdzie pora, że podczas zabawy z QNX i SDK dla BlackBerry Playbook zostaniemy sam sam z plikiem .bar (lub nie daj Boże!) dostaniemy go od zaprzyjaźnionego dewelopera, to istnieje bardzo prosty sposób, aby ten plik umieścić na urządzeniu. Wystarczy wykonać polecenie:

blackberry-deploy -installApp -device <IP urządzenia> -package <ścieżka do pliku BAR> -password <hasło urządzenia>

A co najlepsze, wszystko to możemy zrobić bez fizycznego podłączania urządzenia do komputera, jeśli poprawnie skonfigurowaliśmy swoje konto dewelopera i mamy możliwość wgrywania zdalnie po WiFi.


Kolejna wersja już jest – najnowsza biblioteka CodeTitans v1.7!

Zmiany, zmiany, zmiany:

  • dodano wsparcie dla Silverlight 4.0+
  • dodano wsparcie dla modyfikowalnego JSONa, czyli odtąd można tworzyć całe drzewo JSON w locie i serializować do tekstu poprzez pojedyncze wywołanie ToString() (poprzez interfejs IJSonMutableObject)
  • dodano opcję klonowania istniejącego drzewa JSON jako modyfikowalne (IJSonMutableObject)
  • usprawniono możliwości filtrowania logów debugowych

Zachęcam do pobrania tutaj.



Nie wiem czemu, ale wydawało mi się, że czasy, gdy firmy telekomunikacyjne traktują klienta jak szmatę odeszły w niepamięć. Oj, jak bardzo się pomyliłem i jak dobitnie wykazała się firma Netia S.A., aby mi to uświadomić.

Cała historia zaczęła się w połowie sierpnia, gdy zmieniłem biuro i zamówiłem na infolinii pakiet “Internet + telefon” w swojej nowej siedzibie. Wszystko pięknie, szybko, kurier przywiózł umowę do podpisania, za 2 tygodnie przyszedł monter i “coś” zrobił, a tydzień później przyjechał ruter i nagle zdziwko.

“Brak sygnału DSL”. Hmmm…

Miało działać, a coś jest nie tak i nie działa, ale to wiem i rozumiem tylko ja. Szybki telefon na infolinię – “wszystko aktywowane i w systemie widać, że śmiga”. To zróbmy kilka prostych testów. Dzwonię z telefonu stacjonarnego do siebie. Brawo, udało się, ale numer jakiś nie ten, co w umowie. Hmmm…. dziwne. To zadzwońmy na ten mój z umowy. O! ktoś odebrał i okazało się, że mieszka 3 ulice dalej, i twierdzi, że nagle telefon, z którego zrezygnował kilka miesięcy wcześniej “reaktywował się”!

Dzwonię ponownie na infolinię, i informuję ich, że aktywowali MÓJ Internet i MÓJ telefon u kogoś “przypadkowego”. “Już rejestruję zgłoszenie awarii. Sprawa zostanie natychmiast załatwiona”. Gdy w ciągu kolejnych 3-ch tygodni dzwoniłem tam jeszcze 4 razy i słyszałem dokładnie to samo, czasem przeplatane tekstem, że “zaraz się z Panem skontaktuje ekipa naprawcza”, to zacząłem nabierać podejrzeń, że ktoś mnie zbywa tanimi tekstami.

Czekam, nic innego nie pozostało. Czekałem 46 dni. W tym czasie, nikt z Netii S.A. się ze mną nie skontaktował, nikt nie napisał maila, a sprawa nadal została nierozwiązana. W ciągu tych dni Netia nie zrobiła dosłownie nic. Cóż… może dlatego, że była zajęta przejmowaniem kolejnej firmy, ale tego nie jestem pewien. Może wszyscy byli na urlopie. Może takie zachowanie to ich najnowsza dewiza. W ten też sposób z klienta, który sam przyszedł do nich, stałem się najbardziej rozgoryczonym złośliwcem.

Po wspomnianych 46-u dniach, zgłosiłem reklamację, że nie chcę płacić rachunków za kogoś, jeśli przypadkiem miałbym dostać jakąś fakturę, i w tym samym piśmie wypowiedziałem umowę. No proszę was, ile może czekać klient biznesowy!

Teraz uwaga, bo to co się stało później, przerosło moje najśmielsze oczekiwania. Firma Netia S.A. ze swoim flagowym oddziałem obsługi klienta, postanowiła kontynuować swoją w pełni nie-profesjonalną postawę, odpowiadając na moją reklamację – NEGATYWNIE! Ale uwaga, zrozumieli, że Internetu i telefonu nie mam, zatem anulują rozmowy prowadzone przez osoby trzecie. Jednakże wg nich umowę wypowiedziałem za wcześnie i obciążą mnie kosztami aktywacji. Pytanie tylko jakiej – bo ja w umowie mam konkretną lokalizację, a tam jak nic nie było, tak dalej nic nie ma! A za wcześnie, bo niby powinienem odczekać 70dni! Na dobicie, konsultant rozpatrujący reklamację stwierdził, że nie mam prawa odwołania ani odpowiedzi i jego decyzja jest ostateczna.

Jak we dwa dni później pozbierałem szczękę z ziemi, to tylko zostało mi stwierdzić kilka faktów i odesłać je ponownie na piśmie na skrytkę pocztową Netii w Katowicach. (Tak są pewne biura lokalne, które sprzedają te usługi, ale to już jest Internetia i nie bardzo chcą obsługiwać klientów, którzy podpisali umowy przez infolinie. Także przestroga – wszystkie reklamacje wysyłajcie zawsze na piśmie!).

A to, co stwierdziłem to:

  • w umowie mam konkretny lokal, gdzie aktywacja powinna mieć miejsce
  • umowa definiuje 40 dni od daty podpisania, jako ostateczny termin wykonania przez Netię S.A. aktywacji
  • brak możliwości odpowiedzi na odpowiedź łamie postanowienia regulaminu, na który wielokrotnie powoływał się konsultant
  • to umowa jest obowiązująca, a regulamin; regulamin reguluje to, co nie jest powiedziane w umowie
  • to po prostu najzwyklejsza próba wyłudzenia pieniędzy za niewykonaną usługę
  • podoba mi się to myślenie, że “jesteśmy dużą firmą – PŁAĆ, bo w sądzie z nami nie wygrasz”

Na koniec – cóż, minęło 65dni. Internetu dalej nie mam, do wyboru mam jeszcze TP S.A., bo nikt inny nie obsługuje centrum miasta. Dobrze, że to Wrocław, duże miasto, dobrze, że 21. wiek i premier Pawlak mówi o informatyzacji kraju. Ha! Oby tak dalej!



Jeśli zajmujesz się na poważnie pisaniem aplikacji na Windows Phone i często korzystasz z emulatora, to jest jedna opcja, która może ci pomóc w debugowaniu. Otóż emulator wyświetla logi na konsoli! Tak, korzysta ze standardowej konsoli w Windows. Domyślnie jest ona niestety ukryta. Brakuje menu, aby ją pokazać, zatem pozostaje tylko ustawienie magicznej wartości w rejestrze:

  • na maszynie 32-bitowej:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XDE]
"EnableConsole"=dword:00000001

  • na maszynie 64-bitowej:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\XDE]
"EnableConsole"=dword:00000001

Miłego podglądania!



Autor

Paweł Hofman [CodeTitans]

ASP.NET
C/C++, C#, Objective-C
SQL

License and Disclaimer

Zobacz mnie na GoldenLine

Zobacz mnie na LinkedIn
Supported by Polish SQL Server User Group (PLSSUG)

Supported by WrocNet.org

Zine.net.pl

Wpisy

Projekty

Moje projekty open-source:

Sign in