<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>La Case de l&#039;Oncle Tom &#187; iphone</title>
	<atom:link href="http://case.oncle-tom.net/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://case.oncle-tom.net</link>
	<description>Développement Web, bonnes pratiques et performances</description>
	<lastBuildDate>Sun, 25 Dec 2011 19:33:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="search"
           href="http://case.oncle-tom.net/opensearch"
           type="application/opensearchdescription+xml"
           title="Content Search" />		<item>
		<title>1 seule raison de proposer une application plutôt qu&#8217;une version mobile de son site</title>
		<link>http://case.oncle-tom.net/2010/raison-application-site-web-mobile/</link>
		<comments>http://case.oncle-tom.net/2010/raison-application-site-web-mobile/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 12:10:00 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[bordeaux]]></category>
		<category><![CDATA[buzz]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[presse-citron]]></category>
		<category><![CDATA[usages]]></category>
		<category><![CDATA[webapp]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=9231</guid>
		<description><![CDATA[Réaction suite à la lecture d'un article traitant des 10 raisons de proposer une application mobile au lieu d'un site Web mobile. C'était tellement ahurissant que je me suis senti obligé de réagir pour partager mon point de vue et surtout, les <strong>réels intérêts</strong> d'utiliser l'un ET l'autre.]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai lu hier un article intitulé <a href="http://www.presse-citron.net/internet-mobile-10-raisons-de-proposer-une-application-plutot-quune-version-web-mobile-de-son-site">Internet mobile : 10 raisons de proposer une application plutôt qu&#8217;une version Web mobile de son site</a>. Je passerai outre le « x raisons / meilleures applis / bla bla » dont l&#8217;intérêt a été usé par son usage.</p>
<p>Non, ce qui m&#8217;a vraiment frappé c&#8217;est que sur les 10 raisons évoquées, à peine 2 sortent la tête du lot :</p>
<ul>
<li>utilisation du push</li>
<li>l&#8217;écosystème de l&#8217;App Store</li>
</ul>
<p>Mais surtout, les véritables raisons ne sont même pas évoquées.<br />
Rectification.</p>
<p><img class="aligncenter size-full wp-image-9330" title="Logo Android" src="http://case.oncle-tom.net/images/2010/04/android-nq8.png" alt="Logo Android" width="256" height="256" /></p>
<p><span id="more-9231"></span></p>
<h3>Ces 10 raisons sont du <em>bullshit</em></h3>
<p>La grosse dérive de ces articles à base de n-raisons, c&#8217;est qu&#8217;on se sent obligé d&#8217;en pondre pour arrondir le compteur. Forcément, 2 raisons ça fait pas rêver.</p>
<p>Je vais revenir sur chacune de ces raisons de préférer une application à une version mobile :</p>
<ol>
<li><strong>un format adapté</strong><br />
Ça ne veut strictement rien dire : le site Web mobile et l&#8217;application peuvent avoir la même apparence et s&#8217;affichent dans le même espace disponible (à quelques détails près − les boutons de navigation par exemple).  L&#8217;application ne garantit par le rendu mais utilise bien souvent une charte <em>de facto</em> ; charte qui est rarement reprise pour les sites Web mobile et pour cause, ces derniers s&#8217;adressent à <em>tous les mobinautes</em>.</li>
<li><strong>une plus grande facilité d&#8217;utilisation pour le public</strong><br />
Là encore il y a grosse confusion entre fond et forme. Un site Web mobile peut avoir la même apparence et le même type de navigation qu&#8217;une application. La preuve : l&#8217;application Facebook (pour Android en tous cas) renvoie régulièrement sur la version mobile (adaptée aux écrans tactiles) pour terminer certaines actions.<br />
En terme d&#8217;apparence, elles sont quasiment identiques. D&#8217;ailleurs, vu qu&#8217;il est impossible de consulter ses messages privés sur l&#8217;application, le site Web mobile est plus facile à utiliser que l&#8217;application.</li>
<li><strong>le grand public déteste les <acronym title="Uniform Resource Locator">URL</acronym></strong><br />
Il s&#8217;en fiche surtout, parce qu&#8217;il ne comprend pas. Donc bien souvent le nom du site est cherché dans le moteur de recherche par défaut du navigateur. Cela se termine par un ajout dans les favoris.<br />
Entre chercher un nom d&#8217;appli dans un <em>store</em> ou dans un moteur de recherche Web, il n&#8217;y a strictement aucune différence.</li>
<li><strong>le grand public adore les icônes</strong><br />
Difficile de laisser échapper un sourire en lisant cette raison <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Je cherche encore le rapport car des icônes, on peut en mettre à foison sur un site Web mobile.</li>
<li> <strong>le push</strong><br />
C&#8217;est quelque chose qu&#8217;on ne peut effectivement pas faire depuis un site Web mobile. C&#8217;est un avantage pour l&#8217;application. Combien de sites ont besoin de fournir du <em>push</em> ? Je n&#8217;imagine pas avoir 26 applications de blogs m&#8217;envoyer du push à chaque publication d&#8217;article. Donc à consommer avec modération d&#8217;autant plus que l&#8217;existence du <em>push</em> ne rend pas son utilisation obligatoire.</li>
<li><strong>le buzz</strong><br />
Le buzz ne se fait pas par rapport à l&#8217;application mais aux fonctionnalités du service. Que je sache, je joue avec Foursquare, j&#8217;utilise Seesmic pour son widget Android et ses options poussées, pas parce que c&#8217;est une application ou un site Web. Foursquare serait pourri, l&#8217;application n&#8217;y changerait pas grand chose.<br />
Le buzz est possible mais ça concerne un nombre tellement faible de services (par rapport à l&#8217;ensemble des sites Web existants) qu&#8217;il ne faut pas espérer un <em>buzz</em> uniquement parce qu&#8217;une application existe.</li>
<li><strong>c&#8217;est bon pour ton image, coco</strong><br />
Ne pas proposer une application pour un service à usage de masse est effectivement une erreur à l&#8217;heure actuelle. En revanche, c&#8217;est une décision stratégique qui n&#8217;empêche pas pour autant de disposer d&#8217;un site Web mobile. La raison est hors-contexte : ça se décide entre l&#8217;application et l&#8217;application.</li>
<li><strong>une application est plus facile à trouver qu&#8217;un site Web</strong><br />
Cf. ce que j&#8217;ai écrit plus haut : chercher sur l&#8217;App Store ou sur Google, c&#8217;est pareil. En revanche, le réflexe de chercher dans le <em>store</em> sera probablement bien plus élevé. Ça n&#8217;ajoute aucune facilité. C&#8217;est juste une habitude différente − donc ce n&#8217;est clairement pas la même chose.</li>
<li><strong>une application offre des possibilités de fonctions plus avancées qu&#8217;une version Web mobile</strong><br />
Oui, et le push en fait partie. Mais là encore, l&#8217;auteur de l&#8217;article n&#8217;a pas compris qu&#8217;un site Web est universel, à la différence de l&#8217;application qui est spécifique à la plateforme en question. C&#8217;est d&#8217;ailleurs pour ça que ça porte un nom différent, site Web, application.<br />
Encore que, avec des technos Web on peut réaliser une application mobile grâce à des outils comme <a href="http://www.phonegap.com/">PhoneGap</a>.</li>
<li><strong>l&#8217;écosystème de l&#8217;App Store, iAd et la possibilité de monétiser une application</strong><br />
C&#8217;est fortement lié à la 8ème raison : l&#8217;écosystème fait qu&#8217;on va chercher en premier dans le <em>store</em> plutôt que depuis son navigateur mobile. D&#8217;ailleurs, pour un service existant, les utilisateurs n&#8217;attendent même pas que la communication soit faite sur l&#8217;application : les possesseurs de <em>smartphones</em> cherchent dans le <em>store</em>. Point final.<br />
iAd n&#8217;est qu&#8217;une plateforme publicitaire parmi d&#8217;autres mais on n&#8217;a pas le choix (sur iPhone en tous cas).<br />
La monétisation est possible en paiement à l&#8217;acte sur un site Web mobile, mais clairement pas à l&#8217;installation. La manière de monétiser est différente. L&#8217;acte d&#8217;achat aussi : l&#8217;utilisateur sera très certainement plus propice à payer une application qu&#8217;un accès à un site Web mobile.</li>
</ol>
<h3>S&#8217;il ne fallait retenir qu&#8217;une seule raison</h3>
<p>Quand même, je vais citer LA raison qui me fait utiliser une application plutôt qu&#8217;un site Web mobile : la <strong>vitesse</strong>. L&#8217;application ayant toute l&#8217;interface préchargée, la navigation est fatalement plus rapide.</p>
<p>Je pourrai quand même citer un excellent contre-exemple : le <a href="http://m.flickr.com/">site Web mobile de Flickr</a>. Sa navigation entièrement en Ajax (pour les mobiles supportant cela) la rend véloce et très agréable à utiliser. Elle est aussi rapide à consulter que l&#8217;application Facebook. Elle est même plus rapide en ce qui concerne le chargement d&#8217;images.</p>
<p><a href="http://case.oncle-tom.net/images/2010/04/bordeaux-agenda.jpg"><img class="aligncenter size-medium wp-image-9331" title="Écran de l'application Bordeaux Agenda" src="http://case.oncle-tom.net/images/2010/04/bordeaux-agenda-208x300.jpg" alt="Écran de l'application Bordeaux Agenda" width="208" height="300" /></a></p>
<h3>Application ou site mobile ? Les deux mon capitaine !</h3>
<p>Il faut quand même comprendre une chose : le choix ne se fait pas entre une application <strong>ou</strong> un site Web mobile.</p>
<p>Comme je l&#8217;expliquais avant, <strong>la cible est différente</strong>.<br />
Quand je publie une application iPhone, le public est mécaniquement la population possédant un iPhone.<br />
Quand je publie un site Web mobile, le public est mécaniquement la population connectée à l&#8217;Internet mobile, y compris les utilisateurs d&#8217;iPhone naviguant avec Opera Mini.</p>
<p>Le Web a une notion d&#8217;universalité que n&#8217;ont pas les <em>stores</em>. Un <em>store</em>, c&#8217;est un service Minitel 2.0. On se connecte au service et on n&#8217;en sort pas.<br />
<strong>Ne pas proposer de site Web mobile, c&#8217;est nier une frange des internautes</strong>. Et ce n&#8217;est pas ce que j&#8217;appelle un progrès, l&#8217;exclusion.</p>
<p>Ah et dernier point : il n&#8217;y a pas que l&#8217;iPhone dans la vie. Il y a aussi Android, webOs et Windows Phone. Certes en Europe l&#8217;iPhone domine l&#8217;Internet mobile et le marché des <em>smartphones</em> mais ce n&#8217;est pas une généralité mondiale.</p>
<h3>Conclusion</h3>
<p>La mobilité et le Web mobile sont des sujets très chauds et en pleine croissance. Ça serait bien d&#8217;arrêter de se secouer la nouille pour le bon plaisir des statistiques.</p>
<p>Vous pouvez proposer un site Web mobile.<br />
Vous pouvez proposer une application mobile.</p>
<p>Vous n&#8217;avez par contre pas vocation ni obligation de sortir une application mobile pour y caser tous les <em>buzzwords</em> ou être <em>hype</em>. Un exemple ? L&#8217;<a href="http://itunes.apple.com/fr/app/a-bordeaux-agenda-culture-et-sorties/id345268578">application Agenda de la ville de Bordeaux</a>. C&#8217;est une appli mais un chargement systématique de 10 minutes au lancement, c&#8217;est un non-sens complet.</p>
<p>Comme quoi, application ou site Web mobile, encore une fois, la clé du succès c&#8217;est une <strong>bonne conception et surtout une réflexion sur les apports à l&#8217;usager en situation de mobilité</strong>.</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2010/raison-application-site-web-mobile/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Widget Jaiku pour Netvibes : présentation et bilan du développement</title>
		<link>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/</link>
		<comments>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 05:00:37 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[jaiku]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[micro-blogs]]></category>
		<category><![CDATA[netvibes]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[xhtml]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=1070</guid>
		<description><![CDATA[J&#8217;ai publié il y a quelques semaines un widget Jaiku dans l&#8217;écosystème Netvibes. Autrement dit, on peut désormais interagir avec le sous-employé Jaiku depuis son compte Netvibes en levant à peine le petit doigt. La réalisation de ce widget était pour moi l&#8217;occasion de réaliser mon premier widget utilisant la plateforme UWA : un développement [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://case.oncle-tom.net/images/2008/06/logo-jaiku.png"><img class="aligncenter size-full wp-image-938" title="Logo Jaiku" src="http://case.oncle-tom.net/images/2008/06/logo-jaiku.png" alt="" width="89" height="73" /></a></p>
<p>J&#8217;ai publié il y a quelques semaines un <a title="widget Jaiku pour Netvibes" href="http://eco.netvibes.com/widgets/241591/jaiku">widget Jaiku</a> dans l&#8217;<a href="http://eco.netvibes.com">écosystème Netvibes</a>. Autrement dit, on peut désormais interagir avec le sous-employé Jaiku depuis son compte Netvibes en levant à peine le petit doigt.</p>
<p>La réalisation de ce widget était pour moi l&#8217;occasion de réaliser mon premier widget utilisant la plateforme <acronym title="Universal Widget API">UWA</acronym> : un développement rendu compatible pour plusieurs plateformes dont <a href="http://igoogle.com">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">MacOS X Dashboard</a>, <a href="http://live.com">Windows Live</a> etc.</p>
<p><span id="more-1070"></span></p>
<h3>Présentation du widget Jaiku pour Netvibes</h3>
<p>Avant de rentrer dans les détails techniques, faisons ensemble un petit tour de ce qu&#8217;est capable de faire le widget Jaiku. Rien de bien méchant puisqu&#8217;il fait ce qu&#8217;on veut : lire et envoyer les messages. Faut savoir rester simple <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div id="attachment_1082" class="wp-caption aligncenter" style="width: 290px"><img class="size-full wp-image-1082" title="Jaiku pour Netvibes" src="http://case.oncle-tom.net/images/2008/08/jaiku-netvibes.png" alt="Jaiku pour Netvibes" width="280" height="450" /><p class="wp-caption-text">Widget Jaiku pour Netvibes</p></div>
<p>Je ne me cacherai pas que je me suis largement inspiré du widget Twitter pour Netvibes au niveau de la présentation tout en ajoutant ma touche personnelle.</p>
<p>L&#8217;écran de connexion accueille directement avec des champs identifiant et mot de passe pour faciliter son utilisation. Pas besoin d&#8217;aller fouiller dans les options. Un petit confort on dira.</p>
<p>L&#8217;entête contient ce qu&#8217;il faut pour envoyer des messages : votre lieu de présence et le champ de saisie. Le compteur de texte se met à jour à chaque caractère saisi et surtout, votre saisie n&#8217;est pas bloquée une fois que vous atteignez la limite. Il n&#8217;y a rien de plus pénible que ça.</p>
<p><strong>Le gros du morceau réside dans les onglets</strong> : pour une fois vous pouvez facilement naviguer d&#8217;une ligne de temps à une autre. Choisissez les messages de vos contacts, les vôtres (un peu narcissique non ?) ou encore les messages publics.<br />
Les 3 onglets sont paginés à la convenance de l&#8217;utilisateur, de 1 à 20 messages par page.</p>
<p>J&#8217;ai ensuite agrémenté de plusieurs fonctionnalités que j&#8217;apprécie à l&#8217;usage (à vous de me dire si c&#8217;est aussi le cas) :</p>
<ul>
<li><strong>possibilité de répondre à un message</strong> en pré-remplissant le champ de saisie avec ce qu&#8217;il faut (et ce que l&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku permet de faire &#8230;)</li>
<li>icône signalant l&#8217;<strong>origine des messages</strong> affichés (flux <acronym title="Really Simple Syndication">RSS</acronym>, Twitter, Last.fm etc.)</li>
<li><strong>filtrage de ses propres messages</strong> : vos messages n&#8217;apparaîtront pas dans la ligne de temps des contacts (ce qui en soit n&#8217;est pas plus mal)</li>
<li><strong>formattage des messages</strong> avec une meilleure reconnaissance de <acronym title="Uniform Resource Locator">URL</acronym> que le widget Twitter et surtout, une reconnaissance des noms d&#8217;utilisateurs (@utilisateur) et des noms de canaux (#canal) &#8230; vous permettant de leur répondre en cliquant sur leur nom</li>
</ul>
<p>Il resterait encore pas mal de choses à faire mais on arrive malheureusement assez rapidement aux limites des 2 services.</p>
<h3>L&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku</h3>
<p>L&#8217;<a href="http://devku.org/docs"><acronym title="Application Programming Interface">API</acronym> Jaiku</a> est très bien mais un peu <strong>chiche en services</strong>.</p>
<p>Le nombre de flux en récupération est suffisant : contacts, messages, informations personnelles.<br />
En revanche les méthodes d&#8217;envoi sont limitées et pour cause, il n&#8217;y en a qu&#8217;une : envoyer un message.</p>
<p>Il ne manque pas grand chose pour qu&#8217;on puisse tout faire :</p>
<ul>
<li>obtention de la liste des icônes personnalisées</li>
<li>préciser à quel message on adresse une réponse (pour éviter de casser les discussions)</li>
<li>une gestion de <em>messages privés</em> (et les flux qui vont bien)</li>
<li>une <acronym title="Application Programming Interface">API</acronym> qui ne souffre pas d&#8217;autant de délai &#8230; parfois il faut attendre 3 heures avant d&#8217;avoir un flux actualisé. Pas pratique pour de la messagerie en temps quasi-réel</li>
</ul>
<p>Ces demandes ont été faites mais bon, il faudra attendre la <a href="http://www.jaiku.com/blog/2008/08/18/from-the-dev-corner-an-under-the-hood-preview-of-our-new-engine/">relance de Jaiku avec Google App Engine</a> &#8230; très bientôt visiblement.</p>
<h3>Et du côté de Netvibes ?</h3>
<p>Le développement du widget repose sur l&#8217;<acronym title="Application Programming Interface">API</acronym> <acronym title="Universal Widget API">UWA</acronym> de Netvibes et donc par conséquent, c&#8217;est du développement 99% JavaScript.</p>
<p>Heureusement tout n&#8217;est pas à faire puisqu&#8217;<acronym title="Universal Widget API">UWA</acronym> fournit une base d&#8217;outils et quelques fonctionnalités natives comme la pagination ou les onglets.</p>
<h3>Quels avantages à utiliser Netvibes <acronym title="Universal Widget API">UWA</acronym> ?</h3>
<p>La <a href="http://dev.netvibes.com/doc/universal_widget_api">spécification <acronym title="Universal Widget API">UWA</acronym></a> permet donc à partir d&#8217;un <strong>développement unique de le porter sur d&#8217;autres plateformes de blogs</strong> en un minimum d&#8217;efforts (très souvent aucun). Il faut savoir qu&#8217;à chaque plateforme de widget il y a une manière de développer différente.</p>
<p>Alors plutôt que de parier sur un cheval, avec <acronym title="Universal Widget API">UWA</acronym>, on peut parier sur tous. Et ne faire qu&#8217;un seul développement.</p>
<p>Le développement d&#8217;un widget aboutit très généralement à l&#8217;ajout dans l&#8217;<a href="http://eco.netvibes.com">écosystème Netvibes</a>. Le widget se retrouve ainsi à la portée de toutes les pages de démarrage par le biais de son moteur de recherche intégré.</p>
<p>Côté développement, tout reste globalement simple quand on veut faire du simple.</p>
<h3>Mais quelle galère à développer avec Netvibes <acronym title="Universal Widget API">UWA</acronym> &#8230;</h3>
<p>En revanche ça devient beaucoup moins drôle quand on tombe sur des besoins mal couverts par la documentation.<br />
Et quand je dis <em>mal couvert</em>, ça inclut :</p>
<ul>
<li>pas de documentation du tout</li>
<li>une documentation partielle et pas suffisamment verbeuse (genre pour les onglets et la pagination)</li>
<li>une documentation obsolète et pas recommandée de leur propre aveu (le stockage des mots de passe)</li>
</ul>
<p><strong>L&#8217;adoption d&#8217;un service et sa qualité se jugent à mon avis par sa documentation</strong>. Certes des efforts sont faits mais leur <acronym title="Application Programming Interface">API</acronym> deviendra crédible et fiable le jour où elle sera à jour et complète.</p>
<p>En plus de ça, certaines fonctionnalités sont elles aussi incomplètes.</p>
<p>Au hasard, le <strong>processus de <acronym title="localisation">l10n</acronym></strong> : à implémenter soi-même et encore, il ne pourra pas couvrir tous les besoins comme les préférences. C&#8217;est d&#8217;autant plus dommage que leur système est particulièrement au point pour l&#8217;interface traduite en une dizaine de langues.<br />
Mais pas les widgets &#8230;</p>
<p>Toute à l&#8217;heure j&#8217;évoquais les mots de passe. Il y a bien un mécanisme qui permet de les stocker mais il agit comme il veut : <strong>on ne peut stocker qu&#8217;un mot de passe par widget</strong> et surtout, on ne peut pas l&#8217;utiliser autrement que dans le cas d&#8217;une identification <acronym title="HyperText Transfer Protocol">HTTP</acronym>.<br />
Autrement dit, le stockage d&#8217;un clé d&#8217;<acronym title="Application Programming Interface">API</acronym> se fera dans un champ texte standard.</p>
<p>Ça ne serait pas gênant si la plupart des widgets étaient exécutés dans une iframe et que cette dite iframe embarquait dans l&#8217;<acronym title="Uniform Resource Locator">URL</acronym> toutes les préférences enregistrées. Donc <em>votre</em> clé d&#8217;<acronym title="Application Programming Interface">API</acronym>.<br />
Pourquoi c&#8217;est gênant ? Car il y a un <em>mécanisme inhérent</em> à tout navigateur Web qui s&#8217;appelle le Referrer. En clair, quand vous affichez une page, votre navigateur envoie l&#8217;adresse de la page appelante.<br />
Je me passerai du dessin &#8230;</p>
<p>Enfin, et pour terminer sur une note un peu moins noire, l&#8217;environnement de développement est un superbe outil pour tester son widget de manière indépendante. C&#8217;est à dire sans se connecter sur netvibes.com.<br />
Enfin là où le bas blesse c&#8217;est que les <strong>comportements et la présentation sont différents</strong> entre l&#8217;environnement de développement et Netvibes.</p>
<p>Ce qui sous-entend des bugs présents en développement et pas en production, la gestion des mots de passe qui diffère en développement de la production et du paramétrage spécifique pas documenté.</p>
<h3>Proxy local pour widget Netvibes</h3>
<p>Le <a href="http://dev.netvibes.com/doc/uwa_faq">proxy de développement Netvibes</a> indiqué dans la <acronym title="Frequently Asked Questions">FAQ</acronym> est fonctionnel mais <em>trop minimaliste</em>. On peut en effet récupérer les données mais dès qu&#8217;il s&#8217;agit d&#8217;en envoyer, c&#8217;est cuit.</p>
<p>J&#8217;ai donc adapté le <a href="http://developer.yahoo.com/javascript/samples/proxy/php_proxy_simple.txt">proxy du Yahoo! Developer Network</a> à mes besoins en ajoutant plusieurs fonctionnalités :</p>
<ul>
<li><strong>mise en cache des requêtes GET</strong> pour accélérer les chargements de page et éviter de cramer trop de requête auprès de fournisseurs les limitant (qui a dit Twitter ?)</li>
<li><strong>transmission des données POST</strong> ; c&#8217;est ce qu&#8217;il manquait le plus à la version fournie par Netvibes</li>
<li><strong>compatible texte/JSON/<acronym title="eXtensible Markup Language">XML</acronym></strong> ; le proxy renvoie les bonnes entêtes en fonction de la demande</li>
</ul>
<pre><code class="php">&lt;?php
define('CACHE_TTL', is_int($_GET['cache']) ? $_GET['cache'] : 3600);
define('CACHE_FOLDER', dirname(__FILE__).'/cache');
//
$session = curl_init($_GET['url']);
// If it's a POST, put the POST data in the body
if (isset($_POST) &amp;&amp; !empty($_POST))
{
  $postvars = '';
  while ($element = current($_POST))
  {
    $postvars .= key($_POST).'='.$element.'&amp;';
    next($_POST);
  }
  curl_setopt ($session, CURLOPT_POST, true);
  curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}
// Play with some cache
$md5sign = md5($_GET['url'].$postvars);
$md5file = CACHE_FOLDER.'/'.$md5sign;
/*
 * Read cache
 */
if (file_exists($md5file) &amp;&amp; filemtime($md5file)+CACHE_TTL &gt; time())
{
  curl_close($session);
  send_headers_content_type($_GET['type']);
  readfile($md5file);
  exit();
}
// Don't return <acronym title="HyperText Transfer Protocol">HTTP</acronym> headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// Make the call
$output = curl_exec($session);
$fp = fopen($md5file, "wb+");
fwrite($fp, $output);
fclose($fp);
send_headers_content_type($_GET['type']);
echo $output;
curl_close($session);
/*
 * Functions
 */
function send_headers_content_type($type)
{
  // Set the Content-Type appropriately
  switch ($type)
  {
    case 'text':
    default:
      header("Content-Type: text/plain");
    break;
    case 'xml':
      header("Content-Type: text/xml");
    break;
    case 'json':
      header('Content-Type: text/x-json');
    break;
  }
}
?&gt;</code></pre>
<p>En revanche, je serais vous, <strong>j&#8217;éviterais de m&#8217;en servir publiquement</strong> car il n&#8217;y a aucune vérification de sécurité donc à moins que vous ayiez envie de servir de relais à spam, le mieux est de n&#8217;utiliser ce proxy que sur une instance locale ou bien de davantage le blinder.</p>
<h3>Conclusion</h3>
<p>On arrive désormais au terme de ce billet fleuve <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Quoique je puisse en dire, <strong>Netvibes <acronym title="Universal Widget API">UWA</acronym> est quand même fort sympathique</strong> et permet d&#8217;aboutir à des temps de développement assez courts une fois la majorité des problèmés rencontrés. Nul doute que <strong>votre premier développement sera le plus compliqué</strong>. Surtout si comme moi vous avez envie de tout utiliser : pagination, onglets et <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> à droite à gauche.</p>
<p>Dans tous les cas, <strong>une bonne conception de l&#8217;application vous sauvera la mise</strong> et évitera trop de réécriture de code.<br />
L&#8217;implémentation de la pagination et des onglets est particulièrement douloureuse si vous n&#8217;utilisez pas de programmation objet. Soyez-en avertis.</p>
<p>Je me suis personnellement bien amusé à développer en utilisant <acronym title="Universal Widget API">UWA</acronym> et en jouant avec l&#8217;<acronym title="Application Programming Interface">API</acronym> Jaiku. Cette dernière met vraiment l&#8217;accent sur le JSON ce qui est très pratique pour manipuler des données distantes de manière minimaliste.</p>
<p><strong>Une fois que ces 2 plateformes arriveront à maturité, il y aura de quoi faire d&#8217;encore plus belles applications</strong>.</p>
<p>N&#8217;hésitez pas à utiliser <a href="http://eco.netvibes.com/subscribe/241591">Jaiku sur Netvibes</a>, à me laisser vos remarques et à partager votre expérience de développement de widgets si le cœur vous en dit <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/widget-jaiku-netvibes-presentation-bilan-developpement/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPhone : beauté et frustration au bout des doigts</title>
		<link>http://case.oncle-tom.net/2008/iphone-beaute-frustration/</link>
		<comments>http://case.oncle-tom.net/2008/iphone-beaute-frustration/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 05:00:37 +0000</pubDate>
		<dc:creator>Oncle Tom</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[inconvénients]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobilité]]></category>
		<category><![CDATA[pda]]></category>
		<category><![CDATA[téléphone]]></category>
		<guid isPermaLink="false">http://case.oncle-tom.net/?p=939</guid>
		<description><![CDATA[La nouvelle génération d&#8217;iPhone, iPhone 3G, sort dans la majorité des pays du monde dans 2 jours. On devra attendre le 17 juillet 2008 pour en bénéficier en Europe. iPhone a amorcé une transformation des interfaces utilisateurs dans le monde des téléphones mobiles et c&#8217;est une bonne chose. Tellement bonne que je m&#8217;imaginais déjà synchroniser [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-940" title="iPhone 3G" src="http://case.oncle-tom.net/images/2008/07/iphone-3g.jpg" alt="iPhone 3G" width="340" height="355" /></p>
<p>La nouvelle génération d&#8217;iPhone, <strong>iPhone 3G</strong>, sort dans la majorité des pays du monde dans 2 jours. On devra attendre le 17 juillet 2008 pour en bénéficier en Europe.</p>
<p>iPhone a amorcé une <strong>transformation des interfaces utilisateurs</strong> dans le monde des téléphones mobiles et c&#8217;est une bonne chose. Tellement bonne que je m&#8217;imaginais déjà synchroniser mes contacts avec mes calendriers en ligne, accéder à mes comptes mails, surfer facilement sur le Web et téléphoner via mon compte SIP Free.</p>
<p>J&#8217;étais prêt à suivre l&#8217;enthousiasme fébrile des adorateurs de Mac jusqu&#8217;à ce que j&#8217;essaie un iPod Touch &#8230; à savoir un iPhone sans micro ni écouteur.</p>
<p><span id="more-939"></span></p>
<p>J&#8217;ai donc utilisé un <strong>iPod Touch</strong> pendant 2 semaines pour tester ses capacités, comme si c&#8217;était le mien. Il était bien évidemment <a href="http://www.google.fr/search?q=define%3Ajailbreak">jailbreaké</a> car pourquoi utiliser un produit bridé alors qu&#8217;il peut faire beaucoup plus ?</p>
<p>J&#8217;ai au début été séduit &#8230; puis déçu dès qu&#8217;il s&#8217;agissait de pousser les choses un peu plus en profondeur (pas d&#8217;arrières-pensées merci <img src='http://case.oncle-tom.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<h3>Les raisons d&#8217;acheter un iPhone</h3>
<ol>
<li>un <strong>bel objet</strong> il faut bien le reconnaître ;</li>
<li>une <strong>interface utilisateur globalement simple et intuitive</strong> (quoique, sur du tactile on ne pense pas nécessairement au double-tap) ;</li>
<li>une <strong>connectivité maximale avec un Mac</strong> (courrier, contacts &amp; cie) ;</li>
<li>ENFIN un clavier déconnecté du matériel : les claviers s&#8217;adaptent aux contextes (langues, saisies d&#8217;<acronym title="Uniform Resource Locator">URL</acronym> etc.) et non l&#8217;inverse ;</li>
<li>la possibilité de <strong>synchroniser ses calendriers</strong> Google Calendar avec le petit programme qui va bien (<em>NemusSync</em>, bientôt avec <em>Funambol</em>)</li>
</ol>
<p>Au final, on peut se retrouver avec un produit totalement autonome, permettant de téléphoner sans abonnement téléphonique &#8230; mais en allant à l&#8217;encontre de la politique d&#8217;Apple.</p>
<p style="text-align: center;"><img class="size-full wp-image-942" title="iPhone &amp; iPod Touch Jailbreak" src="http://case.oncle-tom.net/images/2008/07/ipod-touch-iphone-jailbreak.jpg" alt="iPhone &amp; iPod Touch Jailbreak" width="440" height="274" /></p>
<h3>Les raisons de ne pas acheter un iPhone</h3>
<ol>
<li>on est <strong>à la merci de la politique d&#8217;Apple</strong> : fermée et finalement sans respect pour l&#8217;utilisateur. Microsoft se fait jeter des cailloux pour les mêmes choses avec l&#8217;activation sous 30 jours de Windows et j&#8217;en passe et des meilleures ;</li>
<li><strong>pas de rétention des mots de passe</strong> : vous aimez retaper sans arrêt vos identifiants et mots de passe sur les sites Web ? Moi non et pourtant c&#8217;est le lot de tout utilisateur iPhone &#8230; ;</li>
<li>l&#8217;<strong>ajout de favoris depuis Safari sur le Dashboard est chaotique</strong> : ça nous fait quitter l&#8217;application ? Et devinez quoi ? Si celle-ci nécessite une identification, on en revient au point #2 ;</li>
<li>une <strong>autonomie ridicule en veille</strong> : même en veille iPhone pompe un max (10/12 heures à vue de nez). Je n&#8217;ai pas envie de me balader en permanence avec un câble <acronym title="Universal Serial Bus">USB</acronym> ou un chargeur secteur &#8230; surtout vu leur prix ;</li>
<li><strong>politique d&#8217;économie d&#8217;énergie minimaliste</strong> : pas de possibilité de connecter/déconnecter facilement du Wifi ni d&#8217;avoir la main facilement sur tous les processus actifs, potentiellement consommateurs d&#8217;énergie ;</li>
<li><strong>une seule boîte mail pour écrire</strong> : que paramétriez votre iPhone pour 1 ou 10 comptes mails, vous ne pourrez en envoyer que depuis votre compte par défaut. Ça incite à tout sauf à rédiger du mail en somme ;</li>
<li>cette <strong>sensation d&#8217;avoir toujours besoin d&#8217;un ordinateur/Mac</strong> : je croyais qu&#8217;on était avec des mobiles équipés de Wifi ? Pourquoi diable avoir de besoin de synchroniser avec un ordinateur nos données déjà présentes sur le Web ?</li>
<li>le <strong>verrouillage</strong> des opérateurs, de l&#8217;<acronym title="Operating System">OS</acronym>, du développement &#8230; pourquoi concevoir un produit et tenter de nous enfermer dedans d&#8217;une manière aussi peu élégante ?</li>
<li>l&#8217;<strong>obligation d&#8217;utiliser un logiciel type iTunes</strong> pour synchroniser ses musiques et compagnie : c&#8217;est la vente liée revue à la sauce Apple. Les baladeurs UMS c&#8217;est tellement plus pratique &#8230;</li>
</ol>
<p>On pourrait également citer le copier/coller mais ces 8 points m&#8217;ont au final davantage dérangé. Loin de moi l&#8217;envie de démonter sur la place publique iPhone mais j&#8217;ai quand même du mal à croire qu&#8217;un appareil aussi sophistiqué suscite autant d&#8217;enthousiasme avec de pareilles tares.</p>
<p><strong>Où est passé le sens critique</strong> ?</p>
<p style="text-align: center;"><img class="size-full wp-image-941" title="iPhone Installer" src="http://case.oncle-tom.net/images/2008/07/iphone-installer.jpg" alt="iPhone Installer" width="500" height="375" /></p>
<h3>Mon ressenti sur iPhone</h3>
<p>iPhone est un magnifique objet avec une interface innovante. Je le vois très bien devenir le <acronym title="Personal Digital Assistant">PDA</acronym> par défaut de tout commercial, la console de jeux de nos enfants mais aussi leur téléphone, carnet d&#8217;adresses &#8230; bref un <strong>appareil numérique qui rassemble notre vie</strong> tout en la rendant communiquante.</p>
<p>Le modèle économique reposant sur les forfaits vocaux va inévitablement se casser la figure : avec un iPhone et le protocole SIP on peut déjà appeler et recevoir les coups de fils comme si on était chez soi &#8230; à partir d&#8217;une simple connexion Wi-Fi !<br />
J&#8217;imagine que ça viendra le cas quand les revenus générés via l&#8217;AppStore seront suffisants. Apple pourrait avec ça devenir le premier opérateur mobile. Et volontairement je ne mets pas <strong>opérateur de <em>téléphonie</em></strong> car on sera bien au-délà.</p>
<p>En clair, c&#8217;est un produit tentant, plein de promesses mais avec des défauts trop gênant à mes yeux ; des défauts qu&#8217;on est obligé de rencontrer, comme la rétention des mots de passe. J&#8217;ai du mal à croire que des personnes trouvent cette situation accommodante.</p>
<p>Bref, iPhone ou pas iPhone &#8230; ou autre chose ?</p>]]></content:encoded>
			<wfw:commentRss>http://case.oncle-tom.net/2008/iphone-beaute-frustration/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

