On The Fly (otf.lt)

2008-01-15

Flex. Adobe Flex.

Įrašyta kategorijoje: Development — Tags: , , , , , — OnTheFly @ 02:36

Prieš savaitę su kolega ieškojom “kažko, ką galima įterpti į PowerPoint skaidres ir suteikti prezentacijai dinamiškumo”. Užduotis labai paprasta: reikia “programos”, kuri pavaizduotų tam tikrus duomenis, paskaičiuotų jų statistiką, leistų keisti duomenų šaltinį (pvz. skaitytų duomenis iš išorinio failo). Būtų puiku, jei “programą” pavyktų panaudoti ir plačiau, nei PPT ribose — pavyzdžiui, įkelti į tinklapį. Paleisti kompiuteryje be papildomų “apvalkalų” — PowerPoint, interneto naršyklės. Dar geriau — jei ji būtų multiplatforminė (Windows, Linux, MacOS). Idėjos:

  • VBA macros. Viskas pusiau gerai, kol neišeinama iš MS Office pasaulio. Pliusai — “all-in-one”, t.y. Excel‘iu paruoši duomenis, kuriais manipuliuoti galima per makro komandas. Minusai: įterpus į PPT kaip objektą, Excel’io objektas nėra aktyvus, vietoje jo rodomas tik paveiksliukas. Tuomet prezentacijos metu tenka jį sužadinti, sutikti su dialogu, pranešančiu apie makro komandų pavojų, ir tuomet negražiai atsiveria paties Excelio langas. Kitas, subjektyvus minusas — programuoti VBA nėra pats maloniausias dalykas gyvenime.
  • DHML+JavaScript. Pliusai: multiplatforminis sprendimas, tinkamas visur, kur tik palaikomas DHTML ir JavaScript. Minusas — saugumo modelis. Dėl jo sudėtinga universaliai nuskaityti duomenis iš lokalaus disko (tarkim, pateiktus XML faile). Be to, sudėtinga įterpti į PPT. Tenka naudoti Web Browser ActiveX komponentą ir jį konfigūruoti (nors yra LiveWEB Add-on’sas, kuris gyvenimą šiek tiek palengvina).
  • .NET ir ActiveX. Pagal įsivaizdavimą, su .NET turėjo būti įmanoma sukurti ActiveX komponentą, leidžiantį pasiekti norimą funkcionalumą ir dinamiką. Pliusai — viskas gražu Windows platformoje, kur įmanoma panaudoti ActiveX (o juos panaudoti galima labai daug kur). Minusai — sudėtingas (bent taip pasirodė) saugaus, patikimo ActiveX sukūrimas. Neaišku, kaip jį integruoti į PPT taip, kad būtų teisingai rodomas kitame kompiuteryje. Žodžiu, daug techninių problemų.
  • Adobe (former Macromedia) Flash. Prisiminus į PPT, DOC, XLS failus įterptus elementarius, bet “užvedančius” žaidimukus, buvo rimtai pažiūrėta ir į šį variantą. Minusai: sudėtingas sukūrimas (esu gal tik kelis kartus kūręs paprastus “flešinius” reklaminius skydelius), visiškai naujas PĮ kūrimo konceptas (scenos, timeline’ai ir pan.). Pliusai — multiplatforminis, integruojamas į MS Office produktus, gražiai apvelkamas HTML apvalkalu, paleidžiamas be papildomų “apvalkalų” (Flash player).

Vieną rytą bemedituojant prisiminiau Bruce Eckel, kuris su užsidegimu rašė apie Adobe Flex kaip vartotojo sąsajos kūrimo priemonę. Tada ir kilo mintis pasiaiškinti, kas tai yra, ir galbūt tai tiktų projektukui. Pirmas įspūdis — WOW, kodėl aš apie tai nežinojau ir neskaičiau anksčiau. Antras įspūdis — OHO, kiek visko, ir kaip viskas turėtų būti paprasta. Na ir trečias įspūdis, realiai pritaikius technologiją projektukui — OK, daug visokių niuansų, bet judama teisinga kryptimi. Ir viskas gan paprasta! Bazinius Flex principus galima išmokti per kelias dienas. Technologija iš esmės yra tokia:

  • MXML failas — XML failas, kuriame MXML’u aprašoma vartotojo interfeisas, naudojant įvairių komponentų konceptus (mygtukas, laukelis, lentelė, sąrašas, paveiksliukas, panelis, dialogas, pranešimas, žymė, tekstas…).
  • ActionScript kalba parašytas programinis kodas, aprašantis sudėtingesnius, savus komponentus, apdorojantis įvykius, arba kuriantis vartotojo sąsają vietoje jos aprašymo MXML’u ir t.t. — tarkim, panašu, kaip programuojant Swing.
  • Flex SDK biblioteka turi visko daug — vartotojo sąsajos komponentai, duomenų tipai, duomenų apdorojimo klasės ir kt. Java kalbai gal ir neprilygsta, tačiau matyt 80% visų gyvenimo atvejų pakanka to, kas jau yra, arba galima tai susikurti pateiktomis priemonėmis.
  • Flex kompiliatorius kompiliuoja MXML ir/arba ActionScript failus, sugeneruoja paprastą Flash programą, kurią galima paleisti tiek su Flash grotuvu, tiek įdėti į HTML, MS Office programas ar kitur, kur tik galima panaudoti Flash grotuvą ar Flash ActiveX komponentą.

Minusas — kompiliavimo laikas (naudojau tik Flex SDK, Flexlib atviro kodo biblioteką (reikalingas buvo tik komponentas ImageMap) ir Notepad++). Sukompiliuoti kelių šimtų eilučių projektuką užtrunka ilgokai (apie pusę minutės su Intel DualCore 1.86 GHz procesoriumi ir 2 GB RAM). Ir rezultatas gaunasi nemažas — projektuko atveju apie pusė megabaito, nors tebuvo naudojamas tik vienas view state (vaizdas) ir minimali interaktyvi sąveika (lentelių duomenų filtravimas pagal pasirinktus elementarius kriterijus). Paprasčiausia derinimo priemonė — Alert.show(), kas kažkiek, bet ne ypatingai, palengvina darbą. Tačiau projektukas eina į pabaigą, o Flex’ą, manau, ilgai atsiminsiu kaip visai malonų hands-on experience. Kitas minusas — kol kas nėra normalios nemokamos IDE. Viena (FLEXible) — atrodo daug žadančiai, tačiau kol kas tėra mėgėjiškas žaislas, jei bent taip galima pavadinti. Gal net greičiau tai yra tik pačio Flex galimybių demonstravimas, nes FLEXible sukurtas naudojant Flex. O patogesniam darbui skirta Adobe Flex Builder kainuoja. Nors ne tūkstančiais, bet vis tiek (179 € be mokesčių Lietuvos rinkai). Beje, jis taip pat susilaukęs kritikos, tik tiesiog nėra kito pasirinkimo. Kita vertus, galima išbandyti 30 dienų demonstracinę versiją.

Keletas demo:

Bruce Eckel apie Flex formų naudojimą interneto svetainėse rašė:

Conclusion
Notice the beautiful simplicity of the result. Not only is the Flex code itself typically easier to write than the HTML that is otherwise required, you:
* Get the built-in functionality of the Flex components, which seems typically nicer than the AJAX alternatives.
* Can do all your validation and constraint logic on the client side to give the user a better experience. This logic is much easier to write and reuse than JavaScript.
* Automatically get cross platform behavior without testing (lots of time and suffering saved)
* Can create your own components to add to the mix and get the same benefits.
There’s another significant improvement over HTML: robots can’t detect your submit forms, so you greatly reduce spam submissions.

Tai tiek. Happy Flexing!

8 Komentarai »

  1. Dekui, labai naudinga informacija. As tiktais pradejau isbandineti web kurima ir flex. Atsirado klasimas, kodel mano svetainei negalima paziureti sourse. Ir ar tai gali trugdyti patekti i google

    Comment by Naujokas — 2008-02-12 @ 23:48

  2. Na, Flex trūkumas tas ir yra, kad informacija paieškos robotams tampa kaip ir neprieinama (google robotas flash’e rodomo teksto neindeksuoja greičiausiai). O apie source — jei teisingai supratau klausimą, tai galima pasiekti į Application elementą įterpus atributą:
    viewSourceURL=”path_to_source/source.html”
    aišku, keliai į šaltinį turi būti teisingi.

    Comment by OnTheFly — 2008-02-13 @ 01:22

  3. Ar yra kokia nors galimybe padaryti flex kurta web matoma, pvz google shearch? nes tai labai svarbu. Jei taip tai, kokiu budu ir ar reikia naudoti, kokias nors programas papildomai be flex?

    Comment by Naujokas — 2008-02-13 @ 12:39

  4. Manau, kad šiuo metu tai neįmanoma (daugelis Flex’o apžvalgas rašančiųjų tai pamini kaip didžiulį trūkumą). Galbūt pagelbėtų alternatyvi svetainės versija, kurioje baziniai duomenys būtų rodomi HTML’u.

    Beje, čia įdomus, Flex technologija paremtas paieškos sistemos “apvalkalas”: http://www.searchmash.com/flash

    Kažkodė įtariu, kad po juo slepiasi tas pats google.

    Comment by OnTheFly — 2008-02-13 @ 14:24

  5. Linkas nerealus :D.
    Labai dekui, nes apie flex LT kalba info beveik neradau. Ir tokiu greitu atsakymu, net nesitikejau.

    Comment by Naujokas — 2008-02-13 @ 17:12

  6. Na lietuviškai gal ir nelabai yra, tačiau pradedančiajam rekomenduočiau paskaityti Flex tutorialus (adobe.com ir ieškoti…) bei knygų (jų jau pakankamai). Pats rekomenduočiau šias knygas:
    “Adobe Flex 2: Training from the Source”, “Programming Flex 2. The Comprehensive Guide to Creating Rich Media Applications with Adobe Flex”

    Comment by OnTheFly — 2008-02-13 @ 21:02

  7. Yra dar vienas naudingas “žaisliukas” – Revolution Studio (http://www.runrev.com). Be abejo turi savo pliusų ir minusų. Mokamas, bet tūkstančių nekainuoja. Demo nemokamas, pasibaigus demo laikotarpiui vienintelis apribojimas yra funkcijų ir procedūrų kodo ilgis (ne daugiau 10 programavimo sakinių). Linux, MacOSX, Windows. Duombazės (integruotas SQLite, mysql, postgresql palaikymas). 2D vektorinė grafika. X-talk šeimos 4 generacijos programavimo kalba (savotiškas objektinis modelis, kuriuo naudojantis programą galima rašyti žmogui suprantamomis išraiškomis – mažiau komentarų reik). Pagrindiniai pliusai – tarplatforminio produkto sukūrimo sparta, labai lanksčios GUI kūrimo galimybės, veikia visose platformose, panaudojant API galima sukurti savas funkcijas naudojant C ir C++. Trūkumai – nėra tikros 3D grafikos, nesiintegruoja į naršykles, mažai žinomas, nes produktas ėjo iš rankų į rankas ir kelis kartus keitė savo pavadinimą (hypercard, metacard…), objektinis modelis apsiriboja vartotojo sąsajos objektais. Idealus ’solo’ programuotojams (į juos ir taiko…), bet ne tiek patogus komandiniam darbui. Wikipedijoje: http://en.wikipedia.org/wiki/Runtime_Revolution.

    Comment by viktoras — 2008-04-07 @ 12:58

  8. Нормуль! :)

    Comment by Работа — 2008-09-23 @ 09:04


RSS feed for comments on this post. TrackBack URI

Pakomentuokite

Blog at WordPress.com.