23D

Updates from michal-gron RSS

Komentáře | Klávesové zkratky
  • Michal Gron 2:24 pm on August 4, 2010 Permalink
    Tagy: , , ,   

    PMD = Project Mess Detector 

    PMD je nástroj, ktorý skenuje zdrojový kód a hľadá v ňom možné problémy ako:

    • nevhodný dizajn – prázdne try—catch—finaly/switch bloky …
    • mŕtvy kód – nepoužívané lokálne premenné, parametre a privátne metódy …
    • neoptimálny kód – nové inštancie v slučkách …
    • prekomplikované výrazy – nepotrebné if výrazy, vnorené for cykly …
    • duplicitný kód – copy-paste kód znamená copy-paste bugs

    Podľa tvorcov PMD skratka nemá žiadny význam, ale minimálne jedna výstižná sa nájde: “Project Mess Detector”.

    Prečo používať PMD?

    • S PMD dokážeme posúdiť kvalitu kódu na základe jednoduchých pravidiel. Ako povedal Tom DeMarco, “nevieme kontrolovať to čo nevieme merať”.
    • Nielen junior vývojári majú svoje drobné “zlozvyky”. PMD včas odhalí nevhodný dizajn kódu a pomože nám túto úlohu zautomatizovať.
    • PMD vie či vývojári dodržiavajú interné code guidelines a dohodnuté štandardy.

    FlexPMD

    FlexPMD je klon PMD určený pre ActionScript 3 a MXML. Okrem všeobecných PMD pravidiel obsahuje pravidlá špecifické pre Flex SDK, Cairngorm, AsDocs, MXML, Bindings, CSS, Events atď.
    FlexPMD sa dá spustiť napríklad z príkazovej riadky, Ant skriptu, Eclipse, z Mac OSX Automator alebo Maven-om (http://opensource.adobe.com/wiki/display/flexpmd/How+to+invoke+FlexPMD).
    Výsledný report s porušeniami pravidiel (súbor vo formáte XML) sa dá interpretovať viacerými spôsobmi (http://opensource.adobe.com/wiki/display/flexpmd/How+to+interpret+results):

    image

    priamo v Eclipse prostredí,

    image

    v Hudson-e

    image

    alebo v prehliadači (http://opensource.adobe.com/svn/opensource/flexpmd/bin/flex-pmd-violations-viewer.html).

    Best practices

    Zvoľte si pravidlá, ktoré vám vyhovujú

    Povolenie všetkých pravidiel spôsobí vytvorenie obrovského reportu, z ktorého veľké množstvo porušení aj tak nebude dôležitých. Prehrabávanie sa tisíckami riadkov reportu pre pár výnimiek asi čoskoro prestane baviť. Začnite s bežnými kategóriami pravidiel a neskôr pridávajte ďalšie. Šikovný nástroj od Adobe vypľuje naklikaný RuleSet: http://opensource.adobe.com/svn/opensource/flexpmd/bin/flex-pmd-ruleset-creator.html.

    Používajte IDE plugin

    Používať PMD v IDE je príjemnešie ako prepínať medzi HTML reportom a IDE tam a späť. Vo väčšine IDE, klik na výnimku v reporte spôsobí skok na konkrétny problémový riadok v kóde.

    Nesnažte sa dosiahnúť 0 výnimiek

    Snahou nie je dosiahnúť prázdny report, ten má len Chuck Norris. Vždy budú existovať v projekte výnimky, ktoré pravidlá porušia.

    Literatúra:

    1. PMD, http://pmd.sourceforge.net/
    2. FlexPMD, Adobe, http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD
    3. Hudson, http://hudson-ci.org/
    4. Improving Project Quality with PMD, Tom Wheeler, http://jnb.ociweb.com/jnb/jnbJun2004.html
     
  • Michal Gron 2:51 am on July 30, 2010 Permalink
    Tagy: , , ,   

    Jednotné nastavenia mxmlc kompilátora 

    Kedysi moje nastavenie vyzeralo nejako takto:

    -locale en_US 

    Po čase sa rozrástlo na:

    -locale en_US -keep-generated-actionscript -incremental -optimize=false 
    -keep-as3-metadata+=Collaborative,Keywords 
    -define=APPLICATION::debug,true -define=APPLICATION::release,false 

    Vynásobím si počet zmien za rok krát počet vývojových strojov, prirátam jeden integračný server a dostanem desiatky úprav kompilačných argumentov, desiatky duplicitných informácií, ktoré sú roztrúsené po celom development department. Každá ďalšia zmena mi pripomína, že musím napísať e-mail s oznamom o zmene, že na polovici strojov to budem musieť prísť upraviť osobne a ešte sa prihlásiť na server, nájsť všetky miesta v ant-ových skriptoch kde sa nastavujú ďalšie kompilačné parametre (unit-testy, mapy pokrytia …). Pri najlepšom je to pár hodín roboty.

    Našťastie sa to celé dá spríjemniť na jeden jediný svn commit a v budúcnosti už nemusíme nastavovať každý stroj zvlášť, základné nastavenia mxmlc budú konzistentné a my ostaneme DRY.

    1. Vytvoríme app-config.xml. Súbor kopíruje štruktúru východzieho konfiguračného súboru sdk/3.5.0.12683a/frameworks/flex-config.xml avšak nemusí byť kompletný a stačí ak bude obsahovať len nastavenia, ktoré chceme zmeniť.

    <?xml version="1.0"?>
    <flex-config>
        <
    compiler>
            <
    define>
                <
    name>APPLICATION::debug</name>
                <
    value>false</value>
            </
    define>
            <
    define>
                <
    name>APPLICATION::release</name>
                <
    value>true</value>
            </
    define>
            <
    keep-as3-metadata>
                <
    name>Bindable</name>
                <
    name>Managed</name>
                <
    name>ChangeEvent</name>
                <
    name>NonCommittingChangeEvent</name>
                <
    name>Transient</name>
                <
    name>Collaborative</name>
                <
    name>Keywords</name>
            </
    keep-as3-metadata>
            <
    keep-generated-actionscript>true</keep-generated-actionscript>
            <
    optimize>false</optimize>
            <
    incremental>true</incremental>
        </
    compiler>
    </
    flex-config

    2. Necháme si prejsť mráz po chrbte a posledný krát nastavíme na všetkých strojoch kompilačné argumenty vývojového prostredia:

    -load-config+=app-config.xml 

    3. Pri budúcej zmene kompilačných argumentov stačí editovať xml súbor a zmeny rozdistribuovať cez svn.

    Literatúra:

    1. Xavi Beumala (Technical Architect, Adobe), Streamlining your Flex project environment, http://www.adobe.com/devnet/flex/articles/flex_streamline_project_environment_print.html

     
  • Michal Gron 8:27 am on July 27, 2010 Permalink
    Tagy: , ,   

    Flash/Flex Builder shortcuts 

    Tlačená forma:

    • stiahnúť PDF
    • vytlačiť na A4
    • preložiť na polovicu
    • prilepiť na monitor

     
  • Michal Gron 1:41 am on April 1, 2010 Permalink
    Tagy: , ,   

    Kontinuálna integrácia Flex/AIR projektov 


    Spoločnosť sinusgear.com poskytla vzorovému projektu hosting a bezkonkurenčnú podporu.

     
  • Michal Gron 6:43 am on March 24, 2010 Permalink
    Tagy: , ,   

    Adobe User Group Slovakia Stretnutie – 25. Marec, 2010 

    Čas: 25. Marec, 2010 od 18:00 do 20:00
    Miesto: Galvaniho 17/A, Bratislava

    Viac na stránke AUG Slovakia: http://groups.adobe.com/posts/980dd04221

     
  • Michal Gron 6:43 am on March 24, 2010 Permalink
    Tagy: , ,   

    Adobe User Group Slovakia Stretnutie – 25. Marec, 2010 

    Čas: 25. Marec, 2010 od 18:00 do 20:00
    Miesto: Galvaniho 17/A, Bratislava

    Viac na stránke AUG Slovakia: http://groups.adobe.com/posts/980dd04221

     
  • Michal Gron 2:46 am on July 7, 2009 Permalink
    Tagy: , ,   

    Začíname s Picasa Web API (II) 

    V prvej časti seriálu o Picasa Web API sme si priblížili pojmy služba Picasa Web Albums a jej rozhranie Picasa Web Albums Data API. Povedali sme si čo je to Picasa Flash API a kde takéto API zohnať, čo všetko treba spraviť pre úspešný response zo strany Picasa Web API a ako nám to Picasa Flash API umožní dosiahnúť v kratšom čase a s menšou námahou.

    Stiahnúť

    Najčerstvejšia verzia Picasa Flash API sa vždy nachádza v svn. Zo zdrojových súborov je pre každú významnú revíziu vytvorená swc knižnica, ktorá sa dá stiahnúť na adrese http://code.google.com/p/picasaflashapi/downloads/list

    Nainštalovať

    Použitie knižnice sa líši od Flash verzie. Pre Flash CS3, treba knižnicu skopírovať do “Components” zložky:

    • V systéme Windows: C:\Program Files\Adobe\Adobe Flash CS3\language\Configuration\Components
    • Pre Mac: /Applications/Adobe Flash CS3/Configuration/Components

    Po nakopírovaní knižnice do zložky ju vo Flash CS3 stačí presunúť z Components okna do Library a triedy budú k dispozícii.

    Flash CS4 je inteligentnejší a dovoľuje nám zadefinovať knižnicu v záložke Library Path v Publish Settings nasledovne:
    Flash CS4 Publish Settings.

    Hotovo. Knižnica je vo Flash-i.

    Použiť

    Našou nasledujúcou úlohou bude vytvoriť jednoduchú aplikáciu, ktorá bude zobrazovať množinu fotografií umiestnených a označkovaných v Picasa Web galérii. Zobrazovanie fotografií by malo byť manuálne a automatické. Ak je k dispozícii názov fotografie, chceme ho zobraziť tiež. To aké fotografie chceme zobrazovať by sa malo dať definovať cez FlashVars aby sme mohli aplikáciu použiť na viacerých miestach s rôznymi značkami.

    Užívateľské rozhranie je na vás. Ja som použil štandardné Flash komponenty. UILoader v tandeme s ProgressBar-om bola pre mňa najrýchlejšia možnosť ako dostať do aplikácie obrázok s feedback-om sťahovaných dát. Dva Illustrator-om naskinované Button-y slúžia ako “Play” a “Next”. Pre názov obrázku som použil klasický TextField s embednutým písmom.

    Flash CS3 Scene with components.

    Kvôli prehľadnosti uvediem len časti kódu týkajúce sa dát.

    var service PicasaService = new PicasaService();
        
    service.imgmax "400"
    Vytvoríme inštanciu Picasa služby s tým, že maximálna veľkosť obrázkov, ktoré budeme ďalej načítavať bude 400 pixelov. Všetky dostupné vlastnosti služby a ich hodnoty nájdete v asdoc.
    var loader UILoader;
    var 
    entries : Array;
    var 
    responder PicasaResponder service.albums.list_by_tag(fv.user || "thisispinkfu"fv.tag || "diana");
        
    responder.addEventListener(PicasaDataEvent.DATAserviceComplete_Handlerfalse0true);
        
    responder.addEventListener(ErrorEvent.ERRORserviceError_Handlerfalse0true); 
    Zadefinujeme pole “entries”, ktoré bude naplnené po úspešnej odpovedi a v prípade, že odpoveď obsahuje jeden a viac obrázkov. Volanie metódy list_by_tag(username, tag) na službe nám vráti objekt typu PicasaResponder, ktorý vysiela servisné udalosti.
    function serviceComplete_Handler(evt PicasaDataEvent) : void
    {
        
    // naplnime entires
        
    entries evt.data.entries.concat([]);
        
        if(
    entries.length 0)
        
    {
             
    // spustime tahanie obrazkov
             
    loadNextEntry();
        

        
    else
        
    {
             
    // nemame ziadne obrazky (neexistujuci tag alebo uzivatel)
             
    cmp_label.text "Zero entries...";
        
    }
    Ak dostaneme úspešnú odpoveď z Picasa Web Data API, naplníme pole entries objektmi, ktoré pre nás automaticky vytvorí Picasa Flash API. Ak sa v poli nachádza aspoň jeden objekt, zavoláme funkciu loadNextEntry(). V opačnom prípade nastala zrejme chyba, resp. značka, ktorú sme uviedli vo volaní metódy list_by_tag neexistuje, resp. žiadny obrázok v našej galérii nebol označkovaný.
    function serviceError_Handler(evt ErrorEvent) : void
    {
        cmp_label
    .text "Error: " evt.text;
    Ak služba nedostala úspešnú odpoveď, napr. zadaný užívateľ neexistuje, zobrazíme feedback o chybe.
    function loadNextEntry(evt Event null) : void
    {
        
    var url String entries[entry].media.content.url;// url obrazku
        
    var lbl String entries[entry].summary// nazov obrazku 

        
    cmp_label.text lbl != null lbl ""// cmp_label je text field

        // vytvorime instanciu UILoader-a a pridame na Stage
        
    loader = new UILoader();
        
    loader.width 400;
        
    loader.height 400;
        
    loader.addEventListener(Event.COMPLETEimageComplete_Handlerfalse0true);
        
    loader.addEventListener(IOErrorEvent.IO_ERRORimageError_Handlerfalse0true);
        
    loaders.addChild(loader);

        
    // spustime cucanie
        
    loader.load(new URLRequest(url));
    Funkcia loadNextEntry nahrá ďalší obrázok v poradí. Extrahuje adresu obrázka a jeho názov z objektu v poli entries, vytvorí novú inštanciu triedy UILoader a zapíše “complete” a “ioError” event listenery.
    function imageComplete_Handler(evt Event) : void
    {
        
    // spustime napr. timer
    Po úspešnom stiahnutí obrázka sa zavolá funkcia imageComplete_Handler, do ktorej umiestnime napríklad prezentačný kód, ktorý spustí slideshow.
    function imageError_Handler(evt IOErrorEvent) : void
    {
        cmp_label
    .text "Error: " evt.text;
    V prípade, že nastala chyba pri sťahovaní obrázka, zavolá sa funkcia imageError_Handler, ktorá zobrazí feedback o chybe.
    function get fv() : Object
    {
        
    return Object(LoaderInfo(this.loaderInfo).parameters);
    Helper funkcia fv() vracia objekt s FlashVars. Umožňuje nám opýtať sa napr. na hodnotu premennej user definovanej cez flashVars v html <object/>/<embed/> tagu.

    Nasadiť

    Výsledok bude vyzerať približne takto:

    Nemáte nainštalovaný Flash Player Plugin

    Zdrojové súbory (Flash CS4) môžte stiahnuť z http://picasaflashapi.googlecode.com/svn/trunk/docs/tutorials/Flash_Slideshow/zip/Flash_Slideshow.zip

    Kam ďalej

    V tejto časti seriálu o knižnici PicasaFlashApi a spol. sme si ukázali ako jednoducho zobraziť otagované obrázky vo Flash aplikácii. Na pozadí jedného volania funkcie service.albums.list_by_tag(user, tag) nám knižnica PicasaFlashAPI poskladala request, odoslala, čakala na odpoveď druhej strany, preparsovala a vyhodnotila odpoveď a nakoniec vrátila pole objektov. S PicasaFlashAPI je možné toho spraviť oveľa viac a dokonca ešte jednoduchšie, o tom však neskôr.

    Linky na ďalšie zdroje:

     
  • Michal Gron 4:00 pm on June 18, 2009 Permalink
    Tagy: , ,   

    Google AuthSub a Picasa Web Data API crossdomain.xml 

    Od apríla tohto roku som mal možnosť ako člen http://groups.google.com/group/authsub-trusted-testers skupiny testovať a ladiť AuthSub autentifikáciu cez Flash Player. Mesiac sme komunikovali, testovali a reportovali problémy. Výsledkom je crossdomain.xml pre Google Accounts http://accounts.googleapis.com/crossdomain.xml

    Juch. Zhrniem výsledky do krátkej ukážky Google Accounts AuthSub autentifikácie:

    1. Načítať crossdomain.xml

    Explicitne musíme povoliť odosielanie requestov na Google Accounts API

    Security.loadPolicyFile("https://accounts.googleapis.com/crossdomain.xml"); 

    2. Prejsť na stránku “Žiadosť o prístup”

    Nasleduje autentifikácia cez prehliadač na strane Google

    // create a request to get the token
    var variables URLVariables = new URLVariables();
        
    variables["scope""http://photos.googleapis.com/data";
        
    variables["session""1";
        
    variables["secure""0";
        
    variables["hd""default";
        
    variables["next""http://www.prasa.sk/authsub/index.html";
        
    var 
    requestURLRequest = new URLRequest("https://www.google.com/accounts/AuthSubRequest");
        
    request.data =  variables;
     
    navigateToURL(request"_top"); 

    3. Google vráti prehliadač späť …

    … na našu aplikáciu spolu aj s tokenom. Token sa dá z adresy načítať napríklad cez ExternalInterface.call()

    http://www.prasa.sk/authsub/index.html?token=CK-...-ezGBg 

    4. Načítať long-lived session token

    Nasledovným volaním vymeníme single-use token za long-lived session token, ktorý možeme použiť na authorizovaný request služieb Google (napr. Picasa Web Data API):

    private function getAuthSubSessionToken() : void
    {
        
    // create request to get the session token
        
    var request URLRequest = new URLRequest();
            
    request.url "https://accounts.googleapis.com/accounts/AuthSubSessionToken";
            
    request.method URLRequestMethod.POST;            // we need to use POST method because the headers are NOT sent
            
    request.data = new URLVariables("test=variable");    // some test varialbe to get the headers working
            // create request headers
            
    request.requestHeaders.push(new URLRequestHeader("Authorization","AuthSub token=\""+token+"\""));
            
    request.requestHeaders.push(new URLRequestHeader("Content-type","application/x-www-form-urlencoded"));
            
        var 
    loader URLLoader = new URLLoader();
            
    loader.addEventListener(Event.COMPLETEloader_result);
            
        try
        
    {
            loader
    .load(request);
        

        
    catch(Error)
        
    {
            
    throw new Error(e);
        
    }
    }

    public function loader_result(evt Event) : void
    {
        
    var loader URLLoader URLLoader(evt.target);
        
    sessionToken = new URLVariables(loader.data).Token;    // store our session token in a instance variable

    Novinkou v crossdomain.xml aktualizáciách od Google je aj Picasa Web Data API. Do crossdomain.xml súboru pribudla Authorization hlavička a keďže vlastné hlavičky sa nedajú z Flash Player-a poslať ináč ako POST requestom, pribudla aj X-HTTP-Method-Override hlavička pre simuláciu napr. GET requestov. S takýmto crossdomain.xml súborom a long-lived session tokenom už konečne vieme načítať napríklad zoznam privátnych Picasa Web albumov.

    1. Explicitne načítať crossdomain.xml

    Explicitne musíme povoliť odosielanie requestov na Picasa Web Data API

    Security.loadPolicyFile("http://photos.googleapis.com/data/crossdomain.xml"); 

    2. Odoslať žiadosť …

    … spolu s s autorizačným tokenom v hlavičke

    private function getPrivateAlbums() : void
    {
        
    // create request to get the session token
        
    var request URLRequest = new URLRequest();
            
    request.url "http://photos.googleapis.com/data/feed/api/user/default?access=private";
            
    request.method URLRequestMethod.POST;            // we need to use POST method because the headers are NOT sent
            
    request.data = new URLVariables("test=variable");    // some test varialbe to get the headers working
            // create request headers
            
    request.requestHeaders.push(new URLRequestHeader("Authorization","AuthSub token=\"" + sessionToken + "\""));
            
    request.requestHeaders.push(new URLRequestHeader("X-HTTP-Method-Override""GET"));
            
    request.requestHeaders.push(new URLRequestHeader("Content-type","application/atom+xml"));
            
        var 
    loader URLLoader = new URLLoader();
            
    loader.addEventListener(Event.COMPLETEprivateLoader_result);
            
        try
        
    {
            loader
    .load(request);
        

        
    catch(Error)
        
    {
            
    throw new Error(e);
        
    }
    }

    public function privateLoader_result(evt Event) : void
    {
        
    var atom_ns Namespace = new Namespace("http://www.w3.org/2005/Atom");
        var 
    loader URLLoader URLLoader(evt.target); 
        var 
    data XML = new XML(loader.data);
        
        for 
    each(var album XML in data.atom_ns::entry)
        
    {
            trace
    (album.atom_ns::title.text(), album.atom_ns::summary.text());
        
    }        

    Funkčnú aplikáciu hladajte na http://www.prasa.sk/authsub (view-source enabled).

    Po dlhom čase sme sa nakoniec dočkali. Som zvedavý na nové aplikácie a možnosti.
    Má niekto chuť napísať gdata client library v as3?

     
  • Michal Gron 12:13 pm on March 22, 2009 Permalink
    Tagy: , , , ,   

    Začíname s Picasa Web API 

    Čo je to Picasa Web Albums Data API?

    Pod týmto označením sa skrýva rozhranie, ktoré umožňuje integrovať službu Picasa Web Albums (ďalej len PWA) do vašich webov a aplikácií. Rozhranie umožňuje vytvárať albumy, zasielať a sťahovať obrázky, komentáre k obrázkom a tisíc ďalších vecí.

    Niektoré z mála vecí, ktoré využívajú PWA Data API:

    • Aplikácie na jednoduché uploadovanie obrázkov zo zariadení, desktopových aplikácií a ostatných webových služieb
    • Mobilný klienti na prezeranie a uploadovanie obrázkov do PWA
    • Integrácia PWA s blogovacími nástrojmi k jednoduchému zdielaniu obrázkov na vašich blogoch
    • Digitálne foto rámiky

    Pre stručný prehľad je k dispozícii video:

    Domovská stránka PWA Data API: http://code.google.com/apis/picasaweb/

    A čo je to Picasa Flash API?

    Pod týmto názvom sa skrýva klientské rozhranie, ktoré umožňuje čo najjednoduchšie pristupovať priamo k PWA pomocou Flash Player-a. Picasa Flash API (ďalej len PFA) je read-only Actionscript 3 rozhranie k Picasa Web Albums. Umožňuje listovať v používateľských albumoch, obrázkoch, komentároch, tagoch alebo vyhľadávať obrázky v Picasa komunite.

    Domovská stránka Picasa Flash API: http://code.google.com/p/picasaflashapi/

    Aký je teda rozdiel?

    • Picasa Web Albums Data API je rozhranie k službe Picasa Web Albums od Google.
    • Picasa Flash API je Flash/Flex knižnica.
    • Pomocou Picasa Flash API posielate requesty z Flash Player-a na Picasa Web Albums Data API rozhranie.
    • Picasa Web Albums Data API žije na serverovej strane Google, Picasa Flash API beží u klienta.

    Ako s tým súvisí Picasa?

    Výborná otázka. Picasa je desktopový klient pre Mac, Linux alebo Windows. Picasa slúži na jednoduchú a rýchlu organizáciu, úpravu a odovzdávanie vašich fotografií na web. Áno, Picasa je tiež len klient (a naviac výkonný), ktorý okrem iných vlastností, možností a funkcií taktiež využíva Picasa Web Albums Data API napr. k odovzdávaniu obrázkov na web.

    Prezeranie a vyhľadávanie

    Poďme si to hneď všetko vyskúšať :). Každý url request smerom na PWA má nasledovnú schému:

    http://<api_url>/<collection_type>/<projection_type>/<context>?<parameters>

    Začnime s jednoduchým receptom - zoznamom používateľových albumov. Nato aby sme získali tento zoznam potrebujeme nasledovné ingrediencie:

    1. Adresa Picasa Web Albums Data API:

    Môžeme použiť adresu "http://picasaweb.google.com/data" alebo jej alias "http://photos.googleapis.com/data". Ja radšej používam tú druhú. Dôvodom je crossdomain.xml súbor, ktorý musí byť načítaný do Flash Player-a pred akýmkoľvek iným requestom smerom na PWA (knižnica to spraví automaticky za vás). Týmto si zabezpečíme, že PWA neodmietne našeho klienta a Flash Player spracuje PWA odpoveď. Viac k tejto téme je popísané tu. A keďže crossdomain.xml súbor sa nachádza na http://photos.googleapis.com/data/crossdomain.xml, používam radšej ten druhý tvar. Ak by sme pristupovali k PWA cez prvú adresu, môžeme listovať pomocou PFA aj privátne albumy v prípade, že sme prihlásený cez browser do google účtu, pretože koláčik obsahuje adresu http://picasaweb.google.com/data a PWA nám vráti aj naše vlastné privátne albumy.

    2. Collection type:

    Keďže PFA je read-only, budeme používať iba "/feed". Collection type "/media" by sme využili pri zápise dát z klienta smerom na server, napríklad pri aktualizácii alebo pri odovzdávaní fotografií.

    3. Projection type:

    Máme opať niekoľko možností. V prípade, že použijeme "/base", odpoveď z PWA bude základný Atom feed bez akýchkoľvek rozširujúcich elementov. Tento typ projekcie je read-only. My však chceme dostať z PWA aj dodatočné informácie o fotografiách ako napr. ich veľkosť, adresy náhľadov atď. a preto budeme používať Projection type "/api". Ak by nám Google v budúcnosti umožnil zapisovať do PWA z Flash Player-a, Projection type "/api" je nato pripravené (read-write).

    4. Context:

    Posledná prísada je hodnota, ktorá definuje aké zdroje chceme na PWA používať. Podľa tohto kontextu rozdeľujeme requesty na:

    • User-based feed: /user/<userid>
    • Contacts-based feed: /user/<userid>/contacts
    • Album-based feed: /user/<userid>/albumid/<albumid>
    • Photo-based feed: /user/<userid>/albumid/<albumid>/photoid/<photoid>
    • Community search feed: /all
    • Featured photos feed: /featured

    Po správnom zmiešaní ingrediencií pre zoznam albumov užívateľa dostaneme nasledovné url: http://photos.googleapis.com/data/feed/api/user/thisispinkfu

    PWA nám odpovie nasledovne (skrátene kvôli prehľadnosti):

    <feed ...>
        <
    id>http://photos.googleapis.com/data/feed/api/user/thisispinkfu</id>
        
    <title>thisispinkfu</title>
        ...
        <
    entry>
            <
    id>http://photos.googleapis.com/data/entry/api/user/thisispinkfu/albumid/5296410852174025857</id>
            
    ...
            <
    category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/photos/2007#album"/>
            <
    title>Pinholes</title>
            <
    summary>Sharan STD-35 and Diana pinholes</summary>
            .
            .
            .
        </
    entry>
        <
    entry>
        ...
        </
    entry>
        ...
    </
    feed
    Albumy sa vracajú späť v <entry> elementoch, kde každý <entry> element obsahuje metadáta k albumu ako napr. počet fotografií v albume, náhľad albumu, názov atď...

    Aby ste nemuseli pracne vytvárať url requesty na PWA a následne parsovať štrúdle odpovedí, pomôže vám Picasa Flash API, ktorá za vás request vytvorí, sparsuje odpoveď a vráti ju zabalenú v pekne otypovanom objekte :)

    Zoznam albumov by sme pomocou PFA získali nasledovne:

    // vytvorime instanciu servisu
    var service PicasaService = new PicasaService();

    // zavolame servisnu metodu, ktora vrati responder
    // responder vysle pri uspesnej odpovedi z PWA data event
    var responder PicasaResponder service.albums.list("thisispinkfu");
        
    responder.addEventListener(PicasaDataEvent.DATAonGetAlbumsComplete);

    // po uspesnej odpovedi
    function onGetAlbumsComplete(evt PicasaDataEvent) : void
    {
        
    var item AlbumEntry;

        
    // prejdeme vsetky <entry>
        
    for(var int 0evt.data.entries.lengtha++)
        
    {
            item 
    evt.data.entries[a] as AlbumEntry;
            
    // a vypiseme nazov albumy a jeho linku na picasaweb stranku
            
    trace(item.title.value " (" item.links[1].href ")");
        
    }
    Výstupom z funkcie je zoznam albumov s ich názvom a priamou linkou na picasaweb stránku:
    (GEThttp://photos.googleapis.com/data/feed/api/user/thisispinkfu
    Pinholes (http://picasaweb.google.com/thisispinkfu/Pinholes)
    Redscale (http://picasaweb.google.com/thisispinkfu/Redscale)
    Stockholm (http://picasaweb.google.com/thisispinkfu/Stockholm)
    Instants (http://picasaweb.google.com/thisispinkfu/Instants)
    ... 
    Ďalšími možnosti PWA je napríklad:
    • vyhľadávanie obrázkov s v komunite na základe query a napr. tagov
    • použitie geografických hraníc pre obmedzenie výsledkov vyhľadávania na určitú zemepisnú oblasť
    • limitovanie vyhľadávania na "obľúbené" fotografie

    V stručnosti sme si spravili prehľad čo je to Picasa Web Albums Data API, čo je to Picasa Flash API, načrtli sme ich možnosti a obmedzenia a vytvorili krátky príklad, ako získať zoznam všetkých albumov od Picasaweb používateľa.

    Nakoniec už len krátky odkaz na nádherný screen saver, ktorý využíva Picasa Flash API:
    http://www.inspirit.ru/exchange/ascii_saver/

     
  • Michal Gron 4:00 am on February 25, 2009 Permalink
    Tagy: , , ,   

    Flex Live Event 

    Počas dvoch hodín prebehnú krátke prezentácie na tému od Flash Lite cez Flex, AIR až po Data Services. Prezentácie sú orientované ako pre začiatočníkov, tak aj pokročilých používateľov so zameraním na konkrétne využitie v praxi (best practices, case studies).

    Všetci sú srdečne pozvaní, registrácia na toto podujatie nie je potrebná.

    Viac informácií sa nachádza na stránke Slovakia FUG

     


    View Larger Map

     

© 2009 Buzzboot Corp.

c
publikovat nový odkaz
j
přeskočit na další
k
předchozí
r
reagovat
e
editovat
o
zobrazit/skrýt komentáře
t
skočit nahoru
l
přihlásit se
h
zobrazit nápovědu
esc
zrušit