Affichage des articles dont le libellé est YQL. Afficher tous les articles
Affichage des articles dont le libellé est YQL. Afficher tous les articles

dimanche 8 janvier 2012

AIR mobile et Google Spreadsheet

Scénario classique : vous souhaitez afficher une liste de valeurs ou un tableau sur une application mobile. Cette liste provient d'une base de données qui est mise à jour régulièrement par des administrateurs / gestionnaires.

De prime abord, on est tenté de penser : serveur Web, base de données, interface d'administration, ...
Or, pour des besoins modestes, je vous propose une approche full web qui ne vous coûtera pas un centime !

Ma proposition consiste à simplement gérer votre liste au sein d'une Google Spreadsheet (vous aurez besoin d'un compte Google pour ce faire) et à permettre à votre application AIR mobile d'y accéder.
Attention : à partir du moment où vous publiez votre Google Spreadsheet sur le Web, quiconque dispose de l'URL est capable de la visualiser même si elle est privée !




Malheureusement :

  1.  Google n'autorise pas - via son crossdomain.xml - aux applications Flash d'accéder à ses fichiers
  2. Google interdit à YQL - via son robots.txt - d'attaquer les URLs en http://docs.google.com/spreadsheet/... (ou tout autre url qui nous permettrait d'accéder à nos données)
Aussi, la plupart des solutions qu'on trouve sur le Web consiste donc à monter un petit serveur proxy pour s'affranchir de cette contrainte (qui en crée une nouvelle : la maintenance dudit serveur : qu'il soit physiquement chez vous, chez un hébergeur ou encore dans le cloud Google App Engine, Amazon, ...)
Nous nous contenterons de simplement publier le fichier sur le Web (cf. Etape 1) ce qui lève cette restriction (si quelqu'un a l'explication, je suis preneur !!)

En utilisant YQL (Yahoo! Query Language), on va pouvoir attaquer notre Google Spreadsheet de façon puissante.



J'avoue adorer le fait que Yahoo! vienne un peu à la "rescousse" de Google   :-)

Étape 1 : créer la Google Spreadsheet et la publier (Fichier -> Publier sur le Web) en cochant la publication automatique après modification


Étape 2 : construire la requête YQL. Pour cette partie, je vous conseille fortement la console YQL !


Exemple de requête avec clause WHERE :
select * from csv where url="https://docs.google.com/spreadsheet/pub?key=0ArrC4225dYxmdG9LNFNvVjBPb2ZURGJpWVV6TG9Za0E&output=csv" and columns="personnalite,fonction,photo" and personnalite LIKE "%u%"


Étape 3 : consommer cette requête depuis AIR et exploiter le résultat



Les références vers le projet  Flash Builder et le fichier AIR (pour bureau)
Projet Flash Builder 4.6 : BlogYQL.fxp
Package AIR pour le bureau : BlogYQL.air


Quelques références qui m'ont aider à construire ce billet :
  1. http://www.ravelrumba.com/blog/json-google-spreadsheets/
  2. http://net.tutsplus.com/tutorials/other/how-to-create-a-web-service-in-a-matter-of-minutes/
  3. http://active.tutsplus.com/tutorials/tools-tips/quick-tip-using-google-app-engine-as-a-proxy-server/
PS : Merci à Pierre B. pour son aide sur YQL dans la rédaction de ce billet

samedi 25 septembre 2010

Détendez-vous avec CashMachine !

Mise à jour (08-Janvier-2012) : CashMachine est passé sous OpenFeint et AGON Online a fermé le 30 Juin 2011 donc le badge ne fonctionnera plus... mais les enseignements tirés restent valables !!

Une fois n'est pas coutume, laissons SAP de côté et regardons une application - CashMachine - qui se décline en Flash et sur iPhone (avec une conversion du Flash en application iPhone via le Packager for iPhone d'Adobe ??)
Il ne s'agit d'une application toute récente mais on me l'a fait découvrir la semaine dernière.  ;-)

CashMachine

Les scores sont disponibles sur AGON Online.


Le petit badge que vous voyez ci-dessous est loin d'être anodin car il a fallu :

  1. attaquer l'API REST de la plateforme AGON (chaque application dispose de son propre ID application_id avec des catégories de score leaderboard_id différents par jeu)
  2. effectuer un appel JSON depuis l'application Flex
  3. encapsuler l'appel JSON dans un appel YQL pour pouvoir contourner les restrictions liées au crossdomain.xml
  4. contourner 2 bugs (sur encodeURI avec HTTPService et sur YQL qui renvoie une chaîne JSON bien étrange lorsque le JSON initial est complexe)
Un outil bien utile pour analyser le flux JSON : http://json.parser.online.fr/

Mais au final, vous avez un badge qui se met à jour automatiquement au chargement de ce billet !  :)
Vous pouvez faire de même sur votre site puisqu'il suffit de changer le paramètre FlashVars.
Pour ceux qui voudrait récupérer le projet Flex 3...

Le principe est à mi-chemin entre un Tetris et un Bejeweled (pour l'aspect graphique surtout) et consiste à aligner au moins 3 objets de nature identique pour les voir se transmuter en un objet de niveau immédiatement supérieur. Le jeu se complique donc au fur et à mesure car la variété des objets augmente progressivement.


Pour les possesseurs d'iPod Touch, d'iPhone et d'iPad, il existe une version gratuite (avec un bandeau publicitaire) et une version payante.

A noter l'intégration avec la plateforme Agon pour partager vos scores avec vos amis.



Voilà, bonne détente !

Ah une dernière chose, si comme moi vous trouvez étrange que le score diminue par moment, c'est normal ! Le jeu ne comptabilise pas la façon dont vous progressez (vous faîtes des combos par dizaine) mais seulement la valeur des objets à chaque instant. Ainsi chacun peut jouer de la manière qu'il préfère. Et puis, si vous faîtes des combos, dîtes-vous que vous avez plus de place pour mettre des objets de plus grande valeur pour la suite...   8oD

Mise à jour (26-Mars-2011) : suite à une modification du flux JSON par AGON, j'ai dû recompiler le Flex

PS : je ne suis nullement affilié avec les créateurs de ce jeu. Il ne s'agit pas d'un billet rémunéré !!  ;-)