Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side).
Jednak cały kłopot polegał na tym, że:
dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML’u – czyli niejako miałem się podszyć pod zwykłą stronę www, nie wykorzystując żadnych udogodnień typu AMF, Webservice czy RemoteObject,
chciałem wysłać jednocześnie dane tekstowe (np. dane rejestracyjne) oraz binarne (np. obrazki JPG), bez limitu ilości,
obrazki nie były pobierane z dysku użytkownika przez FileReference.browse, ale tworzone w locie jako zrzuty komponentów przez ImageSnapshot i trzymane w pamięci w zmiennych typu ByteArray.
Jedyne co udało mi się znaleźć to artykuł na blogu Neer’a Friedman’a i jego projekt na Google Code. Był to dobry początek do zmian…
BTW: niejaki Mike Stead, którego komentarz widnieje pod wpisem Neer’a też zajmował się tym problemem i zdaje się, że nawet go jakoś elegancko rozwiązał, jednak jego stronka padła kompletnie i nie ma jej nawet w Google Cache…
Wywaliłem kod odpowiedzialny za używanie Socketów zamieniając go na zwykłego URLLoader’a oraz troche zrefaktoryzowałem kod (uporzadkowałem). Tym sposobem pojawiła się biblioteka MultipartRequestLoader
private function init():void { loader = new MultipartRequestLoader('http://flex.imrahil.com/work/multipart_loader/upload.php'); var variables:MultipartVariables = new MultipartVariables(); var myByteArray:ByteArray = new ByteArray();
// we will create a fake file content here, you should replace this with the binary data you want to upload for(var i:int=0; i<100;i++) { myByteArray.writeUTFBytes("123by\nAR\r\nRA\x65\x0156"); }
W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (Flex Data Visualization Component) w tejże wersji.
Największe zaskoczenie jednak to fakt, że paczka z wykresami zawiera kod źródłowy oraz nie ma klasy odpowiedzialnej za watermarki! Ok, wcześniej można było rozpakować kod źródłowy posiadając klucz licencyjny do Flex Buildera, ale brak watermarków to całkowita nowość. Teraz każdy może robić wykresy czy używać AdvancedDataGrid bez żadnych problemów.
Czas na stworzenie prostej aplikacji wykorzystującej Jave (BlazeDS) i Flex w jednym projekcie Flex Buildera. Będzie to klasyczne “Hello World”
Wymagane oprogramowanie:
Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools,
BlazeDS 3.2.0.3978 – dostępny na stronach Adobe Open Source (jest to wersja z samymi binariami – dostępna jest także wersja z zintegrowanym Tomcatem) – rozpakowujemy w dowolne miejsce, np.: C:\Work\BlazeDS
Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie Flex Builder do kodowania Flex + Java. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych.
Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku kodowania przez jedną osobę.
Kod Javy będzie docelowo wykorzystywał BlazeDS/LiveCycle Data Services – będzie to jednak zagadnieniem następnego tutoriala.
Wymagane oprogramowanie: Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools.
Co wybrać? AMFPHP, ZendAmf, WebOrb for PHP czy może SabreAMF? A może wogóle język inny niż PHP?
Pytanie na które ciężko ostanim czasy znaleźć dobrą odpowiedź. Żeby choć trochę ułatwić sprawę polecam sprawne porównanie istniejących rozwiązań dla PHP opublikowane przez Mihai Corlan’a.
Dodatkowo dodam, że w dniu dzisiejszym pojawił się update (do wersji 1.7.8) biblioteki ZendAMF – więcej info na blogu Wade’a Arnolda, a kod można ściągnąć ze stron Zend Frameworka.
Adobe i Facebook ogłosiły dzisiaj, że łączą wysiłki w celu ułatwienia deweloperom Flash Platform pracy nad aplikacjami działającymi na Facebook Platform. W tym celu opublikowana została oficjalna biblioteka AS3 umożliwiająca korzystanie z API Facebook’a z poziomu aplikacji Flex/Flash. Pojawił się także specjalny dział na stronach Adobe Devnet poświęcony temu zagadnieniu.
Serwis InsideRIA.com będzie od przyszłego tygodnia publikował tutoriale pokazujące w jaki sposób wykorzystać w praktyce nowe facebook’owe AS3 API.
Edit: Ryan Stewart opublikował niesamowite demo pokazujące możliwości Facebook API oraz Adobe Flash Collaboration Services (AFCS – dawniej Cocomo)
Wyśmienita aplikacja Tour de Flex przedstawiająca możliwości Flex/AIR doczekała się aktualizacji do wersji 1.2. Można ją ściągnąć ze strony http://www.adobe.com/devnet/flex/tourdeflex (uwaga! instalka waży 37MB!) lub wykonać automatyczny update uruchamiając wcześniejszą wersję aplikacji. Więcej informacji o zmianach znajdziecie na stronie Grega Wilsona.
27 listopada 2008 roku firma Janmedia zorganizowała we Wrocławiu spotkanie o nazwie RIA Day 2008 (Flex, AIR , LiveCycle & ColdFusion jam). Oprócz zagadnień zawartych w nazwie odbyło się także wręczenie nagród w konkursie Flex Challenge.
Pierwsze wystąpienie miał jeden z głównych Adobe Evangelistów, Ben Forta.
[inspic=8,,fullscreen,thumb,:must]
[inspic=10,,fullscreen,thumb,:must]
[inspic=11,,fullscreen,thumb,:must]
[inspic=12,,fullscreen,thumb,:must]
[inspic=15,,fullscreen,thumb,:must]
Bardzo ciekawie prezentowały się plany Adobe na rok 2009, a zwłaszcza kwestia nowych wersji Flash Playera (codename: “Argo” i “Stratos”) oraz nowego środowiska AIR (codename: “Athena”, “Zephyr” oraz “Stratos”) dla urządzeń innych niż PC (czyli telewizory, smartphone’y czy low-endowe komórki)
[inspic=13,,fullscreen,thumb,:must]
[inspic=14,,fullscreen,thumb,:must]
Bardzo ciekawe było też wystąpienie Piotra Walczyszyna (pierwszy, polski Adobe Evangelist ) które początkowo miało być na temat tworzenia aplikacji AIR za pomocą Flash CS4, a skończyło się na pokazaniu jak korzystać z Adobe Cocomo oraz frameworka Swiz.
[inspic=16,,fullscreen,thumb,:must]
Później techniczną prezentacją na temat Zend + AMF dał Michał Zwoliński, po nim znowu Ben Forta z bardziej deweloperską niż marketingową prezentacją na temat Flex + LiveCycle i mocno marketingowa prezentacja Tadeusza Chełkowskiego o narzędziach z pakietu LiveCycle (wspomaganie decyzji, generowanie PDF’ów, etc)
Po kolejnej przerwie na regenerację sił i konsumpcję organizatorzy wręczyli nagrody w konkursie Flex Challenge. Gdy nagrody rzeczowe zostały rozdane, swoje prezentacje miało 3 finalistów, z których tylko Mateusz Malczak (pierwsze miejsce za aplikację cartoonair.com) pokazał coś technicznego i konkretnego
Niestety zawiodłem się na ekipie ArsThanea, która opowiadała o projekcie MyDeco.com. Chłopaki nie pokazali nic technicznego, a jedynie same ogólniki (że Cairngorm, że Papervision, etc). Odniosłem też wrażenie, że nie lubią tego projekt (strasznie “rozstrzelonego” po świecie – część ekipy w Londynie, część na Ukrainie, część jeszcze w innej części świata, narzucanych narzędzi pracy)
Ogólnie imprezę oceniam bardzo wysoko. Organizacja była perfekcyjna, poruszane tematy ciekawe, a jedzenie bardzo dobre
sposobów komunikacji z stroną serwerową (HTTPService, WebService czy Remoting),
wykorzystania różnorakich API (np.: Twitter, Ebay, Flickr, etc),
zewnętrznych komponentów do generowania wykresów,
komponentów do map (Google Maps, Yahoo Maps)
innych komponentów, np.: Degrafa, cała masa od zewnętrznych deweloperów
Aktualnie aplikacja posiada 217 przykładów, ale dzięki temu, że posiada wbudowany system aktualizacji liczba ta będzie się prawdopodobnie szybko zwiększać
Interfejs Tour de Flex pozwala nam na podgląd źródła każdego komponentu czy przykładu oraz szybkie podejrzenie specyfikacji w Adobe Flex 3 Language Reference (wyświetlanemu dzięki silnikowi WebKit w AIR). Wbudowany jest także system komentarzy.
Dodatkowo ekipa Adobe Evangelist Team przygotowała wtyczkę do Flex Buildera umożliwiającą przeglądanie przykładów prosto z poziomu Flex IDE!
Instaluje się ją tak jak każdą inną wtyczkę z adresu http://tourdeflex.adobe.com/eclipse. Po instalacji trzeba tylko podać ręcznie ścieżkę do pliku exe zainstalowanej wcześniej aplikacji Tour de Flex.