<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Web, Technologies, IA, Vidéo...</title><link href="https://www.alkannoide.com/" rel="alternate"/><link href="https://www.alkannoide.com/feeds/all.atom.xml" rel="self"/><id>https://www.alkannoide.com/</id><updated>2026-08-11T23:12:00+02:00</updated><entry><title>Tracer un contenu, un objectif important à l'heure des LLMs. Claude commence à fournir une partie de la solution.</title><link href="https://www.alkannoide.com/2026/08/11/tracer-un-contenu-un-objectif-important-a-lheure-des-llm/" rel="alternate"/><published>2026-08-11T23:12:00+02:00</published><updated>2026-08-11T23:12:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-08-11:/2026/08/11/tracer-un-contenu-un-objectif-important-a-lheure-des-llm/</id><summary type="html">&lt;p&gt;Anthropic annonce hier que Claude va intégrer des marqueurs permettant d’identifier, par machine, du contenu généré ou traité par Claude.&lt;/p&gt;
&lt;p&gt;Cette démarche s’inscrit dans les engagements pris par Anthropic dans le cadre de l’article 50(2) de l’AI Act européen, consacré à la transparence des contenus …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Anthropic annonce hier que Claude va intégrer des marqueurs permettant d’identifier, par machine, du contenu généré ou traité par Claude.&lt;/p&gt;
&lt;p&gt;Cette démarche s’inscrit dans les engagements pris par Anthropic dans le cadre de l’article 50(2) de l’AI Act européen, consacré à la transparence des contenus générés par IA. Les obligations de transparence de l’article 50 de l’AI Act sont d’ailleurs applicables depuis le 2 août 2026.&lt;/p&gt;
&lt;p&gt;Il y aura essentiellement deux mécanismes :&lt;/p&gt;
&lt;p&gt;➡️ Pour le texte : un watermark invisible
Claude incorporera directement dans le texte un marquage imperceptible qui ne modifie ni le sens, ni la lisibilité du texte. Il accompagnera le texte lorsqu’on le copie-colle et pourra survivre à certaines modifications ou éditions.&lt;/p&gt;
&lt;p&gt;➡️ Pour les fichiers : des métadonnées de provenance signées
Pour certains formats générés par Claude, notamment image comme .svg, .png et .jpg, Anthropic ajoutera des métadonnées de provenance en s’appuyant sur le standard ouvert C2PA (standard ouvert qui permet d’attacher à un contenu des informations vérifiables sur sa provenance et son historique de création ou de modification). Ces métadonnées permettent notamment de vérifier qu’un fichier a été traité par Claude et de détecter certaines altérations.&lt;/p&gt;
&lt;p&gt;Tout ceci me rappelle le watermarking utilisé dans le monde du streaming, même si l’objectif est ici différent : il ne s’agit pas d’identifier un utilisateur final, mais de pouvoir détecter qu’un contenu a potentiellement été traité par Claude.&lt;/p&gt;
&lt;p&gt;💡 En résumé, Claude introduit une couche de traçabilité machine-readable de ses productions. Et c’est probablement là le point le plus intéressant : cette traçabilité porte sur le fait que Claude a traité le contenu, pas nécessairement sur son origine intellectuelle. Un contenu peut donc être marqué parce que Claude l’a traduit, reformulé ou simplement édité, sans pour autant que Claude en soit à l’origine.&lt;/p&gt;
&lt;p&gt;❓ Une question me vient alors, et je n’ai pas encore la réponse : quelles sont les implications de ce mécanisme au regard du RGPD et du respect de la vie privée ? Que contient exactement ce marqueur ? Peut-il permettre, directement ou indirectement, de faire le lien avec l’utilisateur, l’organisation ou le contexte dans lequel le contenu a été produit ? 
Ami(e)s juristes si vous voulez partager votre avis !&lt;/p&gt;
&lt;p&gt;Le sujet de la traçabilité des contenus générés par IA ouvre donc aussi une nouvelle question : jusqu’où peut-on tracer un contenu sans tracer la personne qui l’a produit ou utilisé ?&lt;/p&gt;
&lt;p&gt;Source:  le blog post d'Anthropic &lt;a href="https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content"&gt;https://support.claude.com/en/articles/16266773-how-claude-marks-ai-generated-content&lt;/a&gt;&lt;/p&gt;</content><category term="Actualités"/><category term="ia"/><category term="llm"/></entry><entry><title>Un développeur est parvenu à faire fonctionner un LLM de près de 29 millions de paramètres sur… un ESP32.</title><link href="https://www.alkannoide.com/2026/08/05/un-developpeur-est-parvenu-a-faire-fonctionner-un-llm-de-pres-de-29-millions-de-parametres-sur-un-esp32/" rel="alternate"/><published>2026-08-05T23:32:00+02:00</published><updated>2026-08-05T23:32:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-08-05:/2026/08/05/un-developpeur-est-parvenu-a-faire-fonctionner-un-llm-de-pres-de-29-millions-de-parametres-sur-un-esp32/</id><summary type="html">&lt;p&gt;Oui, vous avez bien lu. Pas un Raspberry Pi, pas un smartphone... un microcontrôleur à quelques euros.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/08/llm-on-esp32.png"&gt;&lt;img src="/images/2026/08/llm-on-esp32-1024x683.png" class="wp-image-2143" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne connaissent pas, un ESP32 est un microcontrôleur très utilisé dans les objets connectés (domotique, capteurs, robots, électronique embarquée). Il coûte quelques euros et dispose de ressources extrêmement limitées : mémoire …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Oui, vous avez bien lu. Pas un Raspberry Pi, pas un smartphone... un microcontrôleur à quelques euros.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/08/llm-on-esp32.png"&gt;&lt;img src="/images/2026/08/llm-on-esp32-1024x683.png" class="wp-image-2143" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne connaissent pas, un ESP32 est un microcontrôleur très utilisé dans les objets connectés (domotique, capteurs, robots, électronique embarquée). Il coûte quelques euros et dispose de ressources extrêmement limitées : mémoire rapide \&amp;lt; 1Mo et quelques Mo de Flash. On est à des années-lumière des ressources dont dispose le moindre PC moderne.&lt;/p&gt;
&lt;p&gt;Avant toute chose, il s'agit d'une preuve de faisabilité (PoC). Ce n'est pas un concurrent de ChatGPT, mais une démonstration extrêmement intéressante d'optimisation logicielle.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❓ Qu'a-t-il modifié ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Non seulement il a compressé le modèle mais en plus l’auteur a repensé la manière dont le modèle utilise la mémoire :&lt;/p&gt;
&lt;p&gt;- le cœur du Transformer (environ 560 000 paramètres) reste dans la mémoire rapide ;&lt;/p&gt;
&lt;p&gt;- les 25 millions de paramètres sont stockés dans la mémoire Flash, beaucoup plus grande mais plus lente ;&lt;/p&gt;
&lt;p&gt;- les données ne sont lues qu'au moment où elles sont réellement nécessaires&lt;/p&gt;
&lt;p&gt;Résultat : environ 9 tokens par seconde sur un ESP32-S3.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🤯 Pourquoi est-ce possible ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On ne parle pas 29 millions de paramètres manipulés à chaque token généré. En réalité, ici, une grande partie des paramètres est stockée sous forme d'une immense table de correspondance. À chaque génération de token, seule une infime partie est consultée. Cette architecture permet donc de conserver l'essentiel du modèle dans la mémoire Flash tout en gardant uniquement les éléments critiques dans la mémoire rapide.&lt;/p&gt;
&lt;p&gt;C'est cette séparation intelligente entre stockage et mémoire de calcul qui rend le PoC possible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;❓ Quels pourraient être les usages ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ca ne remplace pas les grands modèles, en revanche, on peut imaginer :&lt;/p&gt;
&lt;p&gt;➡️ des assistants ultra-spécialisés embarqués dans une machine industrielle ;&lt;/p&gt;
&lt;p&gt;➡️ le pilotage d'un équipement en langage naturel, sans connexion au cloud ;&lt;/p&gt;
&lt;p&gt;➡️ des objets connectés capables de dialoguer localement tout en préservant la confidentialité des données.&lt;/p&gt;
&lt;p&gt;Ce qui me fascine le plus n'est finalement pas le LLM lui-même. Ceci me rappelle l’époque où l'on cherchait à repousser les limites du matériel grâce à l'ingéniosité du logiciel. Aujourd'hui, la puissance de calcul disponible masque souvent ce type de travail d'optimisation, même si le monde de l'embarqué continue à cultiver cette approche.&lt;/p&gt;
&lt;p&gt;Pour moi, l'innovation n'est donc pas d'avoir mis un LLM sur un ESP32. Elle est d'avoir démontré qu'en exploitant intelligemment la hiérarchie mémoire, on peut repousser très loin les limites apparentes du matériel.&lt;/p&gt;
&lt;p&gt;💬 Et vous, quel objet du quotidien gagnerait, selon vous, à embarquer un petit LLM fonctionnant entièrement en local, sans dépendre du cloud ?&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="https://github.com/slvDev/esp32-ai"&gt;https://github.com/slvDev/esp32-ai&lt;/a&gt;&lt;/p&gt;</content><category term="Actualités"/><category term="ia"/><category term="llm"/></entry><entry><title>Quand une IA commence à "tricher" sur un benchmark de sécurité…</title><link href="https://www.alkannoide.com/2026/07/31/quand-une-ia-commence-a-tricher-sur-un-benchmark-de-securite/" rel="alternate"/><published>2026-07-31T20:15:00+02:00</published><updated>2026-07-31T20:15:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-07-31:/2026/07/31/quand-une-ia-commence-a-tricher-sur-un-benchmark-de-securite/</id><summary type="html">&lt;p&gt;Cette question peut se poser à la suite de l'incident survenu ce mois-ci.&lt;br&gt;
Lors d'un test interne, OpenAI évaluait un modèle expérimental sur un benchmark de cybersécurité, avec les garde-fous désactivés. Plutôt que de résoudre le défi de manière classique, le modèle a trouvé un moyen de voler des mots …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Cette question peut se poser à la suite de l'incident survenu ce mois-ci.&lt;br&gt;
Lors d'un test interne, OpenAI évaluait un modèle expérimental sur un benchmark de cybersécurité, avec les garde-fous désactivés. Plutôt que de résoudre le défi de manière classique, le modèle a trouvé un moyen de voler des mots de passe, d'exploiter des vulnérabilités et de se déplacer sur les serveurs de Hugging Face afin de récupérer... les réponses au test.&lt;/p&gt;
&lt;p&gt;Ce qui ressemble à un scénario de science-fiction soulève pourtant plusieurs questions.&lt;br&gt;
➡️ Les modèles ne se contentent plus d'exécuter des instructions : ils semblent capables d'élaborer des stratégies complexes pour atteindre un objectif.&lt;br&gt;
➡️ Les mécanismes de sandboxing et les environnements d'évaluation deviennent aussi importants que les modèles eux-mêmes. Tester une IA aux capacités offensives nécessite un niveau de sécurité digne des environnements les plus sensibles. C'était déjà vrai hier ; cela l'est encore davantage à l'ère des LLM.&lt;br&gt;
➡️ L'alignement ne consiste pas seulement à empêcher des réponses inappropriées. Il faut aussi s'assurer qu'un agent ne cherche pas à contourner les règles lorsqu'il poursuit un objectif.&lt;br&gt;
➡️ Les capacités offensives de l'IA progressent plus vite que les outils de défense accessibles. Les modèles commerciaux, comme ceux d'OpenAI ou d'Anthropic, sont volontairement limités pour éviter certains usages offensifs. À l'inverse, des modèles open source, comme GLM-5.2 utilisé par Hugging Face pour analyser l'incident, n'ont pas ces restrictions et peuvent être employés librement... aussi bien par les défenseurs que par les attaquants.  &lt;/p&gt;
&lt;p&gt;💬 Cela m'amène à plusieurs interrogations.&lt;br&gt;
Faut-il laisser les IA "libres" pour qu'elles nous défendent... au risque qu'elles puissent aussi nous attaquer ?&lt;br&gt;
Ou faut-il les verrouiller à double tour, quitte à les rendre moins utiles face aux menaces réelles ?&lt;br&gt;
Et une dernière question, volontairement provocatrice : va-t-on devoir commencer à enseigner l'éthique aux IA... ou surtout à ceux qui les conçoivent ? 😉  &lt;/p&gt;
&lt;p&gt;* Plus de détails sur l'incident [en] : &lt;a href="https://simonwillison.net/2026/Jul/22/openai-cyberattack/"&gt;https://simonwillison.net/2026/Jul/22/openai-cyberattack/&lt;/a&gt; - &lt;a href="https://huggingface.co/blog/security-incident-july-2026"&gt;https://huggingface.co/blog/security-incident-july-2026&lt;/a&gt;&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="ia"/></entry><entry><title>Comment suivre le domaine des LLMs où l’histoire semble s’écrire chaque semaine ?</title><link href="https://www.alkannoide.com/2026/07/15/comment-suivre-le-domaine-des-llms-ou-lhistoire-semble-secrire-chaque-semaine/" rel="alternate"/><published>2026-07-15T22:45:00+02:00</published><updated>2026-07-15T22:45:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-07-15:/2026/07/15/comment-suivre-le-domaine-des-llms-ou-lhistoire-semble-secrire-chaque-semaine/</id><summary type="html">&lt;p&gt;Je suis récemment tombé sur une ressource fascinante : une chronologie interactive qui retrace l’évolution des grands modèles de langage (LLMs), de Transformer (2017) jusqu’aux modèles les plus récents. Cette chronologie sur &lt;strong&gt;&lt;a href="https://llm-timeline.com/" target="_blank" rel="noreferrer noopener"&gt;https://llm-timeline.com/&lt;/a&gt;&lt;/strong&gt; est une excellente façon de prendre du recul sur l’évolution de l’IA …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je suis récemment tombé sur une ressource fascinante : une chronologie interactive qui retrace l’évolution des grands modèles de langage (LLMs), de Transformer (2017) jusqu’aux modèles les plus récents. Cette chronologie sur &lt;strong&gt;&lt;a href="https://llm-timeline.com/" target="_blank" rel="noreferrer noopener"&gt;https://llm-timeline.com/&lt;/a&gt;&lt;/strong&gt; est une excellente façon de prendre du recul sur l’évolution de l’IA générative et de mesurer le chemin parcouru depuis 2017.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/07/evolution-llm.png"&gt;&lt;img src="/images/2026/07/evolution-llm.png" class="wp-image-2007" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En la parcourant, deux choses m’ont frappé. La première est que les architectures fondatrices des LLM modernes ont près de dix ans. La seconde est que ce n’est plus seulement la vitesse à laquelle les modèles se succèdent qui est frappante, c’est la densité de l’innovation.  &lt;/p&gt;
&lt;p&gt;En quelques années, nous sommes passés :&lt;br&gt;
➡️ des premiers modèles démontrant le potentiel des Transformers,&lt;br&gt;
➡️ à la démocratisation des LLMs,&lt;br&gt;
➡️ puis à une concurrence mondiale où chaque acteur cherche à repousser une limite différente.  &lt;/p&gt;
&lt;p&gt;Aujourd’hui, comparer les modèles uniquement par leur nombre de paramètres n’a plus beaucoup de sens. Les questions que l’on se pose sont désormais bien plus concrètes :&lt;br&gt;
• Peut-il utiliser efficacement des outils, des API ou des bases de connaissances ?&lt;br&gt;
• Quel est son coût d’utilisation… et son coût à grande échelle ?&lt;br&gt;
• Peut-il fonctionner en local pour répondre aux exigences de sécurité et de souveraineté ?&lt;br&gt;
• Quelle est sa consommation de ressources (GPU, mémoire, énergie) ?&lt;br&gt;
• Est-il suffisamment rapide pour être utilisé en production ?&lt;br&gt;
• Peut-il être personnalisé ou affiné pour répondre à des besoins métiers ?&lt;br&gt;
Au fond, il semble que l’on ne compare plus seulement des modèles. On compare des solutions capables de répondre à des contraintes métier, techniques, économiques et réglementaires.  &lt;/p&gt;
&lt;p&gt;En observant cette chronologie, on réalise aussi que l’innovation ne vient plus d’un seul laboratoire. OpenAI, Anthropic, Google, Meta, Mistral AI, xAI, DeepSeek, Alibaba, Zhipu AI… chacun contribue à accélérer le rythme. Et d’autres acteurs pourraient arriver dans un futur proche.&lt;br&gt;
Finalement, le défi n’est peut-être plus de savoir quel est le « meilleur » LLM.&lt;br&gt;
Le véritable enjeu est de comprendre dans quels cas d'usage chaque génération de modèles apporte une nouvelle valeur.  &lt;/p&gt;
&lt;p&gt;Et vous, quel modèle, quelle avancée ou quel cas d’usage vous a le plus marqué ces dernières années ?&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="ia"/><category term="llm"/></entry><entry><title>La bataille des puces IA semble être complètement lancée !</title><link href="https://www.alkannoide.com/2026/06/25/la-bataille-des-puces-ia-semble-etre-completement-lancee/" rel="alternate"/><published>2026-06-25T20:00:00+02:00</published><updated>2026-06-25T20:00:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-25:/2026/06/25/la-bataille-des-puces-ia-semble-etre-completement-lancee/</id><summary type="html">&lt;p&gt;Depuis plusieurs années, Nvidia domine le marché des puces pour l’IA avec ses GPU captant plus de 80 % des parts de marché dans les data centers. Cette année 2026 marquerait un tournant, car le paysage évolue rapidement. L’inférence, le processus où un modèle (ChatGPT, Mistral) entraîné utilise de …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Depuis plusieurs années, Nvidia domine le marché des puces pour l’IA avec ses GPU captant plus de 80 % des parts de marché dans les data centers. Cette année 2026 marquerait un tournant, car le paysage évolue rapidement. L’inférence, le processus où un modèle (ChatGPT, Mistral) entraîné utilise de nouvelles données pour produire une réponse, est le terrain de jeu d’une bataille qui s’annonce féroce. Et pour cause : elle représente jusqu’à 90 % des coûts opérationnels des grands modèles de langage.&lt;/p&gt;
&lt;p&gt;De « nouveaux » acteurs (ils ne sont au final pas si nouveau ! ) bousculent le marché :&lt;/p&gt;
&lt;p&gt;🔹 &lt;strong&gt;OpenAI &amp;amp; Broadcom&lt;/strong&gt; :&lt;br&gt;
L’annonce a été faite ces derniers jours. Avec Jalapeño, leur première puce dédiée à l’inférence, ils visent une réduction de 50 % des coûts et un déploiement massif dans des data centres géants avec Microsoft.&lt;/p&gt;
&lt;p&gt;🔹 &lt;strong&gt;Huawei&lt;/strong&gt; :&lt;br&gt;
Le géant chinois mise sur son Ascend 910. Deepseek (un LLM d’origine chinoise) a d’ailleurs dans sa dernière version optimisé l’usage de ces puces par rapport aux puces concurrentes (Nvidia ou AMD). Une alternative pour la Chine avec des performances qui commencent à être un sérieux rival.&lt;/p&gt;
&lt;p&gt;🔹 &lt;strong&gt;AMD&lt;/strong&gt; :&lt;br&gt;
Avec ses Instinct MI450 et MI500, AMD propose une alternative 15 à 20 % moins chère que Nvidia, tout en restant compatible avec les frameworks existants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quels sont les avantages d’avoir un choix dans les puces ?&lt;/strong&gt;&lt;br&gt;
✅ &lt;strong&gt;Baisse des coûts&lt;/strong&gt; : La concurrence pousse les prix à la baisse, une aubaine pour les entreprises.&lt;br&gt;
✅ &lt;strong&gt;Innovation accélérée&lt;/strong&gt; : Plus d’acteurs = plus de choix et de solutions adaptées.&lt;br&gt;
✅ &lt;strong&gt;Moins de dépendance&lt;/strong&gt; : Diversifier les fournisseurs réduit les risques (techniques, géopolitiques).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alors, Nvidia, prêt à partager ton gâteau ?&lt;/strong&gt; *🎂  *
Avec l’arrivée de Jalapeño, Ascend 910C et les Instinct d’AMD, le marché des puces IA devient enfin un vrai buffet à volonté… et c’est une excellente nouvelle pour tout le monde (sauf peut-être pour Jensen Huang).&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="ia"/><category term="llm"/></entry><entry><title>Vers une pile standardisée pour les protocoles des agents IA ?</title><link href="https://www.alkannoide.com/2026/06/15/vers-une-pile-standardisee-pour-les-protocoles-des-agents-ia/" rel="alternate"/><published>2026-06-15T23:08:00+02:00</published><updated>2026-06-15T23:08:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-15:/2026/06/15/vers-une-pile-standardisee-pour-les-protocoles-des-agents-ia/</id><summary type="html">&lt;p&gt;Et si les agents IA avaient besoin de leur propre TCP/IP ?&lt;/p&gt;
&lt;p&gt;Tout système d’interaction repose sur un protocole défini. Les agents IA et leurs écosystèmes n’y font pas exception. Pourtant, les débats actuels opposent souvent MCP, A2A, ACP ou ANP comme s’ils résolvaient le même problème …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Et si les agents IA avaient besoin de leur propre TCP/IP ?&lt;/p&gt;
&lt;p&gt;Tout système d’interaction repose sur un protocole défini. Les agents IA et leurs écosystèmes n’y font pas exception. Pourtant, les débats actuels opposent souvent MCP, A2A, ACP ou ANP comme s’ils résolvaient le même problème. En réalité, ils répondent à des couches distinctes d’une architecture commune, comparable à ce que TCP/IP a été pour Internet.&lt;/p&gt;
&lt;p&gt;Tentons de clarifier le rôle de chaque protocole et montrer comment ils s’articulent pour construire l’Internet des agents. J'espère ne rien oublier !&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/06/protocoles_ia.png"&gt;&lt;img src="/images/2026/06/protocoles_ia-683x1024.png" class="wp-image-1992" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;1. Couche Identité &amp;amp; Découverte&lt;/span&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Protocole phare : [ANP](https://github.com/agent-network-protocol/AgentNetworkProtocol) (Agent Network Protocol)

&lt;/li&gt;



&lt;li&gt;

Fonction : Permet de découvrir des agents, leurs capacités, leurs identités et leurs permissions

&lt;/li&gt;



&lt;li&gt;

Question clé : « Comment trouver le bon agent et savoir ce qu’il sait faire ? »

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;2. Couche Communication/Messaging&lt;/span&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Protocole phare : [ACP](https://www.ibm.com/fr-fr/think/topics/agent-communication-protocol) (conçu par IBM)

&lt;/li&gt;



&lt;li&gt;

Fonction : Définis les formats de messages et les mécanismes d’échange entre agents

&lt;/li&gt;



&lt;li&gt;

Question clé : « Quel langage ou format utilisent les agents pour communiquer ? »

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;3. Couche Coordination&lt;/span&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Protocole phare : [A2A](https://a2a-protocol.org/latest/) (Agent-to-Agent)

&lt;/li&gt;



&lt;li&gt;

Fonction : Permet à plusieurs agents de collaborer, se déléguer des tâches et partager leur état d’avancement

&lt;/li&gt;



&lt;li&gt;

Question clé : « Comment des agents travaillent-ils ensemble ? »

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;4. Couche Outils&lt;/span&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Protocole phare : [MCP](https://modelcontextprotocol.io/docs/getting-started/intro) (Model Context Protocol - conçu par Anthropic)

&lt;/li&gt;



&lt;li&gt;

Fonction : Permet à un agent de découvrir et utiliser des outils, APIs, bases de données ou services externes

&lt;/li&gt;



&lt;li&gt;

Question clé : « Comment un agent interagit-il avec une ressource ? »

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;5. Couche Transport : le défi restant&lt;/span&gt;&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Problématique : Le HTTP est largement utilisé malheureusement il ne pourra pas répondre à toutes les contraintes : NAT traversal, routage notamment.

&lt;/li&gt;



&lt;li&gt;

Question clé : « Comment les messages circulent-ils physiquement entre les agents ? »

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;💡 Vers une pile de protocoles pour les agents !&lt;/p&gt;
&lt;p&gt;Les couches Outils, Coordination, Communication et Découverte commencent à se structurer. Reste un défi majeur : la couche Transport.&lt;/p&gt;
&lt;p&gt;Et si la vraie question n’était plus « Quel protocole va gagner ? », mais plutôt :&lt;/p&gt;
&lt;p&gt;« Comment ces protocoles vont-ils s’articuler pour construire l’Internet des agents ? »  &lt;/p&gt;</content><category term="Analyse"/><category term="agent"/><category term="ia"/><category term="protocoles"/></entry><entry><title>L’IA entre-t-elle dans une nouvelle phase : celle de l’optimisation ?</title><link href="https://www.alkannoide.com/2026/06/10/lia-entre-t-elle-dans-une-nouvelle-phase-celle-de-loptimisation/" rel="alternate"/><published>2026-06-10T23:03:00+02:00</published><updated>2026-06-10T23:03:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-10:/2026/06/10/lia-entre-t-elle-dans-une-nouvelle-phase-celle-de-loptimisation/</id><summary type="html">&lt;p&gt;Les annonces se multiplient ces dernières semaines à propos de l’optimisation des LLM (ces "cerveaux" capables de comprendre et générer du texte, comme Gemini ou GPT). Google, OpenAI, Mistral… Tous cherchent à rendre leurs modèles plus performants, plus précis, ou moins coûteux.&lt;/p&gt;
&lt;p&gt;Mais un autre mouvement, tout aussi stratégique …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Les annonces se multiplient ces dernières semaines à propos de l’optimisation des LLM (ces "cerveaux" capables de comprendre et générer du texte, comme Gemini ou GPT). Google, OpenAI, Mistral… Tous cherchent à rendre leurs modèles plus performants, plus précis, ou moins coûteux.&lt;/p&gt;
&lt;p&gt;Mais un autre mouvement, tout aussi stratégique, émerge. L’optimisation ne se limite plus aux modèles eux-mêmes. Avec l’avènement des agents IA, c’est tout l’écosystème autour des LLM qui devient un levier clé.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/06/optimisationIA.png"&gt;&lt;img src="/images/2026/06/optimisationIA-1024x683.png" class="wp-image-1988" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🚗 Pour tout comprendre, prenons une analogie et imaginons une voiture :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Le LLM, c’est le moteur (ex : un V12 Ferrari). Puissant, mais inutile sans le reste.

&lt;/li&gt;



&lt;li&gt;

L’agent IA, c’est la carrosserie, la boîte de vitesses et le pilote : en bref tout ce qui permet d’exploiter pleinement ce moteur.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Mettre un V12 dans une Twingo, ça ne servira à rien : il faut un châssis adapté, une transmission efficace, et un bon conducteur. Avoir un bon agent IA est maintenant tout aussi crucial que le LLM lui-même. Et les choses bougent, aussi bien dans les solutions propriétaires que dans l’open source.&lt;/p&gt;
&lt;p&gt;🔹 Un exemple révélateur : Harness-1&lt;/p&gt;
&lt;p&gt;Dans un article récent, &lt;a href="https://venturebeat.com/orchestration/researchers-trained-an-open-source-ai-search-agent-harness-1-that-outperforms-gpt-5-4-on-recalling-relevant-information"&gt;VentureBeat présente Harness-1&lt;/a&gt;, un projet open source développé par des chercheurs. Il s’agit d’un agent IA qui, placé en amont du LLM, optimise la recherche et la sélection des informations.&lt;/p&gt;
&lt;p&gt;Résultat : quand on lui demande de trouver des réponses précises sur une question posée, le couple Harness-1 et LLM standard (ex : GPT-5.4) obtient 73 % de précision, contre 70,9 % pour GPT-5.4 seul.&lt;/p&gt;
&lt;p&gt;En quoi cela est révolutionnaire ?&lt;/p&gt;
&lt;p&gt;Harness-1 ne remplace pas le LLM: il améliore son environnement. Les informations sont de meilleures qualités avant d’être envoyé au LLM.&lt;/p&gt;
&lt;p&gt;Il prouve qu’un agent léger, couplé à un workflow intelligent, peut surpasser un LLM géant utilisé seul.&lt;/p&gt;
&lt;p&gt;Pour moi, l’IA ne progresse plus uniquement grâce à des modèles toujours plus grands. C’est l’architecture complète qui compte avec :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Des agents qui savent mieux interagir avec le monde réel (outils, bases de données, APIs).

&lt;/li&gt;



&lt;li&gt;

Des workflows optimisés qui combinent plusieurs étapes (recherche \&gt; filtrage \&gt; génération) pour maximiser l’efficacité.

&lt;/li&gt;



&lt;li&gt;

L’open source, qui ouvre des voies alternatives pour innover sur l’architecture plutôt que sur la taille.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;💡 En résumé :&lt;/p&gt;
&lt;p&gt;On passe d’une course à la taille ("plus gros = mieux") à une course à l’intelligence collective :&lt;/p&gt;
&lt;p&gt;LLM + Agents + Workflows = L’écosystème gagnant.&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="agent"/><category term="ia"/></entry><entry><title>L’IA ne demande pas uniquement des GPU : le CPU devient ou plutôt redeviendrait-il le nouveau terrain de jeu central ?</title><link href="https://www.alkannoide.com/2026/06/04/lia-ne-demande-pas-uniquement-des-gpu-le-cpu-devient-ou-plutot-redeviendrait-il-le-nouveau-terrain-de-jeu-central/" rel="alternate"/><published>2026-06-04T21:57:00+02:00</published><updated>2026-06-04T21:57:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-04:/2026/06/04/lia-ne-demande-pas-uniquement-des-gpu-le-cpu-devient-ou-plutot-redeviendrait-il-le-nouveau-terrain-de-jeu-central/</id><summary type="html">&lt;p&gt;C'est suite à la lecture de cet article &lt;a href="https://www.actuia.com/actualite/bytedance-prepare-ses-propres-cpu-arm-et-risc-v-pour-reprendre-le-controle-du-cout-par-token/#un-marche-serveur-chinois-qui-glisse-hors-dintel"&gt;ByteDance prépare ses propres CPU Arm et RISC-V pour reprendre le contrôle du coût par token que me vient cette réflexion&lt;/a&gt;. L’ère de l’IA ne se résume plus à une course aux GPU. Et pour cause, avec l’essor des …&lt;/p&gt;</summary><content type="html">&lt;p&gt;C'est suite à la lecture de cet article &lt;a href="https://www.actuia.com/actualite/bytedance-prepare-ses-propres-cpu-arm-et-risc-v-pour-reprendre-le-controle-du-cout-par-token/#un-marche-serveur-chinois-qui-glisse-hors-dintel"&gt;ByteDance prépare ses propres CPU Arm et RISC-V pour reprendre le contrôle du coût par token que me vient cette réflexion&lt;/a&gt;. L’ère de l’IA ne se résume plus à une course aux GPU. Et pour cause, avec l’essor des agents autonomes, les besoins en infrastructure ont radicalement changé. Il semble que l'on passe en effet d’un monde dominé par le GPU... à une dépendance multi-composants.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/06/ia-plus-uniquement-GPU.png"&gt;&lt;img src="/images/2026/06/ia-plus-uniquement-GPU.png" class="wp-image-1985" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Jusqu’à récemment, l’entraînement des grands modèles de langage (LLM) reposait presque exclusivement sur des GPU haut de gamme, avec NVIDIA en position de monopole. Résultat :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Coûts élevés : Les entreprises dépendent d’un seul fournisseur, avec des marges et des prix imposés. Même, comme j’en parlais précédemment, le local AI est envisageable.

&lt;/li&gt;



&lt;li&gt;

Goulot d’étranglement : La demande en GPU explose, mais l’offre reste limitée (et chère).

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Mais voici qu'un nouveau problème arrive. Les agents IA ne se contentent pas d’un simple appel à un LLM (les fameux modèles). Ils nécessitent :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Orchestration complexe (appels à des outils externes, gestion de la mémoire, raisonnement multi-étapes).

&lt;/li&gt;



&lt;li&gt;

Mémoire massive pour maintenir le contexte et les états.

&lt;/li&gt;



&lt;li&gt;

Et potentiellement même du calcul hybride : GPU pour l’inférence, mais CPU spécialisés pour tout le reste.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;La question qui se pose maintenant est qui contrôlera l’infra de demain ?&lt;/p&gt;
&lt;p&gt;Tout ceci devient un enjeu stratégique. Et ça bouge à travers le monde. Un petit état des lieux:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

NVIDIA domine toujours et fournit le marché en GPU, mais son hégémonie est contestée.

&lt;/li&gt;



&lt;li&gt;

La Chine via par exemple ByteDance (TikTok) et Huawei investissent massivement dans leurs propres équipement (ARM, RISC-V) pour offrir des gains dans les coûts par token, maîtriser leur chaîne d’approvisionnement (et éviter les risques géopolitiques) et enfin, pourquoi pas, créer un avantage concurrentiel en optimisant leur infrastructure pour leurs besoins spécifiques.

&lt;/li&gt;



&lt;li&gt;

L’Europe n’est pas en reste. On voit des gros acteurs comme Mistral et OVH qui investisse dans l’infrastructure nécessaire afin de proposer des solutions IA. Même si ils dépendant des fournisseurs de semi-conducteurs non européen.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;🤔 Maintenant qu’est-ce que cela signifie pour les entreprises?&lt;/p&gt;
&lt;p&gt;Si vous utilisez des solutions d’IA générative ou des agents, voici ce que je suggérerais :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Diversifiez ses dépendances

&lt;/li&gt;



&lt;li&gt;

Anticipez au maximum les coûts cachés

&lt;/li&gt;



&lt;li&gt;

Rester en veille sur les alternatives : Les prochaines générations de CPU spécialisés pourraient bouleverser le marché

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Au final, cette approche n’est pas inconnue, elle a déjà été utilisée par le passé.&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="ia"/><category term="llm"/></entry><entry><title>Réflexion du jour : La fin du "all you can eat" dans l’IA : et si les wrappers devenaient les nouveaux héros ?</title><link href="https://www.alkannoide.com/2026/06/04/reflexion-du-jour-la-fin-du-all-you-can-eat-dans-lia-et-si-les-wrappers-devenaient-les-nouveaux-heros/" rel="alternate"/><published>2026-06-04T20:59:00+02:00</published><updated>2026-06-04T20:59:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-04:/2026/06/04/reflexion-du-jour-la-fin-du-all-you-can-eat-dans-lia-et-si-les-wrappers-devenaient-les-nouveaux-heros/</id><summary type="html">&lt;p&gt;Après l’ère des abonnements illimités, les géants comme GitHub Copilot ou Claude ont récemment annoncé le basculement vers une tarification basée sur l’usage des tokens. Finie la consommation sans limite : chaque mot, chaque virgule, chaque espace compte désormais.&lt;/p&gt;
&lt;p&gt;Pourquoi ce changement ?&lt;br&gt;
Parce que le coût de l’intelligence …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Après l’ère des abonnements illimités, les géants comme GitHub Copilot ou Claude ont récemment annoncé le basculement vers une tarification basée sur l’usage des tokens. Finie la consommation sans limite : chaque mot, chaque virgule, chaque espace compte désormais.&lt;/p&gt;
&lt;p&gt;Pourquoi ce changement ?&lt;br&gt;
Parce que le coût de l’intelligence artificielle explose. Comme le souligne &lt;a href="https://www.madrona.com/price-of-tokenmaxxing-claude-explosive-growth-cost-of-intelligence/"&gt;Madrona&lt;/a&gt;, l’optimisation des tokens ("tokenmaxxing") devient un enjeu stratégique. Et avec des modèles toujours plus gros la vitesse et l’efficacité ne sont plus des options, ce sont des nécessités. Des innovations comme le Multi-Token Prediction (MTP), désormais disponible dans Gemma 4 ou via llama.cpp, optimisent déjà la génération des tokens. Pourtant, cela ne suffit pas.  &lt;/p&gt;
&lt;p&gt;Avec la fin des usages illimités, une question s’impose : comment optimiser chaque token, au-delà des améliorations logicielles comme le MTP ? La réponse pourrait bien résider dans une nouvelle génération d’outils intermédiaires que j'appelerais des wrappers d’IA. Ces outils, placés avant, pendant ou après l’appel au LLM, ont un seul but : réduire le gaspillage de tokens tout en améliorant la qualité des résultats. Quelques exemples concrets :&lt;br&gt;
- Prétraitement des données : Pourquoi envoyer un PDF brut à un LLM quand un wrapper peut en extraire uniquement les parties utiles ?&lt;br&gt;
- Conversion de formats : Des outils comme celui de Cloudflare transforment du HTML en Markdown, évitant d’envoyer des balises inutiles au modèle.&lt;br&gt;
- Optimisation des prompts : Reformuler une requête pour la rendre plus concise, sans perdre son sens.&lt;br&gt;
- Post-traitement : Nettoyer ou structurer la réponse du LLM pour éviter de payer pour des tokens superflus.  &lt;/p&gt;
&lt;p&gt;🔥 Une opportunité... ou une course déjà lancée ?&lt;br&gt;
Cette transition de la gestion des tokens ouvre un nouveau marché. Des startups sont-elles déjà en train de se positionner sur ce créneau ?&lt;br&gt;
- Des solutions clés en main pour diviser par 2 (ou plus) la facture IA pourraient émerger.&lt;br&gt;
- Les fournisseurs de LLM pourraient intégrer ces optimisations nativement dans leurs APIs.&lt;br&gt;
- Les entreprises qui maîtriseront ces outils gagneront un avantage compétitif en réduisant leurs coûts… tout en gardant la même qualité.  &lt;/p&gt;
&lt;p&gt;❓ Et si, au final, tout cela était logique ?&lt;br&gt;
On optimise l’entrée, on optimise la sortie... pour obtenir le traitement le plus efficace possible. Après tout, n’est-ce pas la base de toute bonne ingénierie ?  &lt;/p&gt;
&lt;p&gt;💬 Et vous, comment vous préparez-vous à ces nouvelles contraintes sur les tokens ?&lt;br&gt;
- Avez-vous déjà testé des wrappers pour optimiser vos appels aux LLM ?&lt;br&gt;
- Pensez-vous que cette course à l’efficacité va accélérer l’innovation… ou complexifier l’accès à l’IA pour les petits acteurs ?&lt;/p&gt;</content><category term="Analyse"/><category term="ia"/><category term="llm"/></entry><entry><title>Réflexion autour de l'impact de l'IA sur les sites et plateforme à revenu publicitaire</title><link href="https://www.alkannoide.com/2026/06/04/reflexion-autour-de-limpact-de-lia-sur-les-sites-et-plateforme-a-revenu-publicitaire/" rel="alternate"/><published>2026-06-04T20:52:00+02:00</published><updated>2026-06-04T20:52:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-04:/2026/06/04/reflexion-autour-de-limpact-de-lia-sur-les-sites-et-plateforme-a-revenu-publicitaire/</id><summary type="html">&lt;p&gt;Commençons avec ce que j'appelerais notre canari dans la mine.  &lt;/p&gt;
&lt;p&gt;Très connu de la communauté des développeurs — même s’il était déjà en déclin depuis le milieu des années 2010 — Stack Overflow a vu le nombre de questions publiées chuter fortement depuis l’arrivée de ChatGPT. Et par conséquence : moins …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Commençons avec ce que j'appelerais notre canari dans la mine.  &lt;/p&gt;
&lt;p&gt;Très connu de la communauté des développeurs — même s’il était déjà en déclin depuis le milieu des années 2010 — Stack Overflow a vu le nombre de questions publiées chuter fortement depuis l’arrivée de ChatGPT. Et par conséquence : moins de visites.  &lt;/p&gt;
&lt;p&gt;Beaucoup plus récemment, l’un des auteurs de &lt;strong&gt;Minecraft.fr&lt;/strong&gt; a publié une analyse très intéressante (&lt;a href="https://minecraft.fr/ce-qui-se-passe-sur-minecraft-fr-quand-vous-posez-une-question-a-une-ia/"&gt;https://minecraft.fr/ce-qui-se-passe-sur-minecraft-fr-quand-vous-posez-une-question-a-une-ia/&lt;/a&gt;) sur ce qu’il se passe lorsqu’un utilisateur pose une question à une IA.&lt;/p&gt;
&lt;p&gt;En résumé :&lt;br&gt;
les IA citent souvent Minecraft.fr comme source pour répondre aux questions sur Minecraft… mais ces citations ne génèrent presque jamais de visites réelles sur le site. Malgré un bon référencement Google, le nombre de clics a chuté de moitié, y compris sur des requêtes intemporelles. Comme si l’utilisateur ne ressentait plus le besoin d’ouvrir la source une fois la réponse obtenue.&lt;br&gt;
Ils ont pris la décision de continuer à produire du contenu de qualité… alors même que ce contenu sert désormais davantage les IA que leur propre trafic.&lt;br&gt;
D'un autre côté, de plus en plus de site fiable bloquent l'accès aux IA, cela risquerait de dégrader la qualité des résultats fournir par les IA.&lt;/p&gt;
&lt;p&gt;Maintenant plusieurs questions me viennent à l'esprit :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Quel avenir pour les sites dont le modèle économique dépend principalement de la publicité ?

&lt;/li&gt;



&lt;li&gt;

Les IA vont-elles pousser certains contenus derrière des paywalls ou des communautés privées ?

&lt;/li&gt;



&lt;li&gt;

Va-t-on voir émerger des modèles de licensing de la donnée pour rémunérer les producteurs de contenu ? On voit apparaître du pay-per-crawl.

&lt;/li&gt;



&lt;li&gt;

Comment financer durablement la production de savoir humain si l’interface qui répond capte l’essentiel de la valeur ?

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Pendant longtemps, nous avons pensé que le principal problème des IA serait la qualité des réponses. Mais le vrai sujet me semble au final plutôt économique.&lt;/p&gt;
&lt;p&gt;Car sans créateurs, journalistes, experts, développeurs, communautés… les IA finiront par ne plus avoir grand-chose d’utile à apprendre ni à citer.&lt;/p&gt;</content><category term="Analyse"/><category term="ia"/></entry><entry><title>Et si un copilote de développement tournait… sur votre propre machine ?</title><link href="https://www.alkannoide.com/2026/06/04/et-si-un-copilote-de-developpement-tournait-sur-votre-propre-machine/" rel="alternate"/><published>2026-06-04T19:13:00+02:00</published><updated>2026-06-04T19:13:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-06-04:/2026/06/04/et-si-un-copilote-de-developpement-tournait-sur-votre-propre-machine/</id><summary type="html">&lt;p&gt;À mes heures perdues (enfin pas tant perdu que cela, j’ai appris des choses), je me suis récemment amusé à tester les copilotes pour développeurs. Vous connaissez sûrement Claude Code ou GitHub Copilot. Ayant lu des messages et articles, j’ai décidé de voir ce type d'assistant donne mais …&lt;/p&gt;</summary><content type="html">&lt;p&gt;À mes heures perdues (enfin pas tant perdu que cela, j’ai appris des choses), je me suis récemment amusé à tester les copilotes pour développeurs. Vous connaissez sûrement Claude Code ou GitHub Copilot. Ayant lu des messages et articles, j’ai décidé de voir ce type d'assistant donne mais en 100% local, sans dépendance à une solution cloud.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/06/llm-en-local.jpeg"&gt;&lt;img src="/images/2026/06/llm-en-local-1024x682.jpeg" class="wp-image-1963" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le résultat est très interessant. Voici mon expérience :&lt;/p&gt;
&lt;p&gt;🖥 Matériel : CPU AMD Ryzen 7 PRO 4750U (2020) avec 32 Go de RAM. Pas de GPU puissant, donc tout tourne côté CPU. Ce n’est clairement pas du dernier cri, mais ça fait un bon benchmark, non ?&lt;br&gt;
🛠 Setup : VSCode + extension Continue côté client, et côté serveur… Llama.cpp utilisant le modèle Phi-3 (2024) et un mitmproxy.&lt;/p&gt;
&lt;p&gt;Après quelques optimisations, les résultats sont surprenants :&lt;/p&gt;
&lt;p&gt;➡️ J’ai commencé simple : un Hello World dans différents langages, généré en quelques secondes. Basique, mais symbolique pour démarrer dans un langage.&lt;br&gt;
➡️ Analyse de code parfaitement fonctionnelle : on sélectionne le code comme contexte et on pose sa question dessus. Deux dizaines de secondes après, on a la réponse.&lt;br&gt;
➡️ Optimisation de la latence : grâce à mitmproxy, j’ai pu surveiller et réduire la quantité de texte envoyée au LLM, ce qui accélère sensiblement les réponses.&lt;/p&gt;
&lt;p&gt;Toutes les fonctionnalités attendues d’un copilote sont donc disponible à la différence que tout tourne en local (sur la même machine), avec la confidentialité (rien ne sort de chez vous) et flexible (la bascule d'un modèle LLM à l'autre est simple). En utilisant du matériel récent et notamment un bon GPU, je ne vois pas de limitation pour une grande majorité des cas d’usage.&lt;/p&gt;
&lt;p&gt;En bref, faire tourner un assistant de développement en local… ça marche vraiment !&lt;br&gt;
Et le meilleur dans tout ça ? J’utilise cette expérience pour du code, rien n’empêche d’adapter la solution d’utiliser des LLM locaux pour d’autres cas d’usages.&lt;br&gt;
La seule contrainte est le support de la partie serveur décrite plus haut. Entre ça et le suivi de son usage de tokens sur les solutions externes, la question peut se poser.&lt;/p&gt;
&lt;p&gt;❓ Et vous, avez-vous déjà essayé un copilote qui fonctionne directement sur votre machine ? L'utilisez-vous au quotidien&lt;/p&gt;
&lt;p&gt;Je peux partager plus d’infos techniques dans les commentaires&lt;/p&gt;</content><category term="Actualités, Bidouille, Développement web"/><category term="edgeai"/></entry><entry><title>On le sait, le numérique a un impact environnemental… je découvre que la France le mesure annuellement !</title><link href="https://www.alkannoide.com/2026/05/24/on-le-sait-le-numerique-a-un-impact-environnemental-je-decouvre-que-la-france-le-mesure-annuellement/" rel="alternate"/><published>2026-05-24T16:48:00+02:00</published><updated>2026-05-24T16:48:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-05-24:/2026/05/24/on-le-sait-le-numerique-a-un-impact-environnemental-je-decouvre-que-la-france-le-mesure-annuellement/</id><summary type="html">&lt;p&gt;L’ARCEP publie chaque année une enquête sur l’empreinte écologique du numérique en France. Une initiative précieuse pour y voir plus clair !&lt;br&gt;
Pour ceux qui ne savent pas, l'ARCEP c'est Autorité de régulation des communications électroniques, des postes et de la distribution de la presse.  &lt;/p&gt;
&lt;p&gt;5 catégories analysées :&lt;br&gt;
✔ Opérateurs …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L’ARCEP publie chaque année une enquête sur l’empreinte écologique du numérique en France. Une initiative précieuse pour y voir plus clair !&lt;br&gt;
Pour ceux qui ne savent pas, l'ARCEP c'est Autorité de régulation des communications électroniques, des postes et de la distribution de la presse.  &lt;/p&gt;
&lt;p&gt;5 catégories analysées :&lt;br&gt;
✔ Opérateurs télécoms (réseaux fixes/mobiles)&lt;br&gt;
✔ Fabricants de terminaux (smartphones, PC, tablettes…)&lt;br&gt;
✔ Opérateurs de data centers&lt;br&gt;
✔ Équipements de réseaux mobiles (nouveauté 2025)&lt;br&gt;
✔ Câbles fibre optique (nouveauté 2026)  &lt;/p&gt;
&lt;p&gt;🔍 3 enseignements clés :&lt;br&gt;
→ +38% d’électricité pour les data centers en 3 ans (20 MW en moyenne pour les nouveaux sites !).&lt;br&gt;
→ 108 000 tonnes de CO₂ émises en 2024 pour la fabrication des câbles fibre.&lt;br&gt;
→ Stabilisation de la consommation des réseaux télécoms à 4,1 TWh (grâce à la fibre, plus sobre).  &lt;/p&gt;
&lt;p&gt;Source: &lt;a href="https://www.arcep.fr/actualites/actualites-et-communiques/detail/n/environnement-eapns-210526.html"&gt;enquête Arcep 2026&lt;/a&gt;&lt;/p&gt;</content><category term="Actualités"/></entry><entry><title>Hier soir, j’ai codé un LLM (enfin un mini LLM)… et j'ai survécu !</title><link href="https://www.alkannoide.com/2026/05/21/hier-soir-jai-code-un-llm-enfin-un-mini-llm-et-jai-survecu/" rel="alternate"/><published>2026-05-21T20:38:00+02:00</published><updated>2026-05-21T20:38:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-05-21:/2026/05/21/hier-soir-jai-code-un-llm-enfin-un-mini-llm-et-jai-survecu/</id><summary type="html">&lt;p&gt;Il y a un mois, je partageais cette &lt;a href="https://www.linkedin.com/posts/oliviernoel_if-you-want-to-understand-how-llm-works-and-ugcPost-7452355713961615360-qGWp/"&gt;vidéo&lt;/a&gt; expliquant les bases des LLM en 1 minute. Aujourd’hui, je passe à l’étape supérieure en découvrant "&lt;a href="https://github.com/angelos-p/llm-from-scratch"&gt;LLM from Scratch&lt;/a&gt;" : un workshop où je peux mettre les mains dans la machine. En une soirée et avec un peu de Python …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a un mois, je partageais cette &lt;a href="https://www.linkedin.com/posts/oliviernoel_if-you-want-to-understand-how-llm-works-and-ugcPost-7452355713961615360-qGWp/"&gt;vidéo&lt;/a&gt; expliquant les bases des LLM en 1 minute. Aujourd’hui, je passe à l’étape supérieure en découvrant "&lt;a href="https://github.com/angelos-p/llm-from-scratch"&gt;LLM from Scratch&lt;/a&gt;" : un workshop où je peux mettre les mains dans la machine. En une soirée et avec un peu de Python, ce workshop nous lance dans la création d'un petit LLM. Cela a piqué ma curiosité. Grâce à ce workshop, je comprends mieux les concepts fondamentaux derrière ces modèles. Et c’est bien moins flippant que ce qu’on imagine !&lt;/p&gt;
&lt;p&gt;Prérequis : Connaître un minimum le language Python (si vous savez faire un print("Hello World"), vous êtes qualifiés 🥳 ).  &lt;/p&gt;
&lt;p&gt;Au programme et sans spoiler :&lt;br&gt;
✅ Étape 1 : La "tokenisation", ou "comment transformer du texte en Lego pour l’ordinateur".&lt;br&gt;
✅ Étape 2 : Les "embeddings", ou "pourquoi votre chat et mon chat ne sont pas le même chat pour l’IA" (spoiler : c’est une histoire de maths).&lt;br&gt;
✅ Étape 3 : L’assemblage, ou "comment faire croire à votre PC qu’il est intelligent" (il ne l’est pas. Désolé.).&lt;br&gt;
✅ Étape 4 : La génération de texte, ou "comment faire parler votre modèle... même s’il dit parfois des bêtises".  &lt;/p&gt;
&lt;p&gt;Pourquoi c’est cool ?   &lt;br&gt;
- Plus besoin de faire semblant de comprendre quand on me parlera de transformers et je ne parle pas du film.&lt;br&gt;
- Lors de ma prochaine soirée mondaine, je pourrais dire : "Moi aussi, j’ai codé un LLM... enfin, un mini-LLM. Mais c’est déjà ça !"&lt;br&gt;
- Je serais en mesure d'expliquer à mon étourage c’est qu’un LLM avec un peu plus de détails... sans avoir l’air de réciter un cours.    &lt;/p&gt;
&lt;p&gt;🫵 À vous de jouer !  &lt;/p&gt;
&lt;p&gt;Pour les ambitieux: si cela vous a donné envie d’aller plus loin, ce livre "&lt;a href="https://www.manning.com/books/build-a-large-language-model-from-scratch"&gt;Build a Large Language Model from Scratch&lt;/a&gt;" semble être une bonne référence pour avancer sur votre prochain défi. Attention, votre cerveau pourrait vous en vouloir... mais au moins, vous saurez pourquoi ! 😂&lt;/p&gt;</content><category term="Bidouille"/><category term="ia"/><category term="llm"/></entry><entry><title>Edge AI vs Cloud AI : un arbitrage devenu critique</title><link href="https://www.alkannoide.com/2026/05/04/edge-ai-vs-cloud-ai-un-arbitrage-devenu-critique/" rel="alternate"/><published>2026-05-04T20:15:00+02:00</published><updated>2026-05-04T20:15:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-05-04:/2026/05/04/edge-ai-vs-cloud-ai-un-arbitrage-devenu-critique/</id><summary type="html">&lt;p&gt;Lors de ma veille, je suis tombé sur un article intéressant sur l’Edge AI et le Cloud AI dans les environnements industriels : &lt;a href="https://iotindustriel.com/autres/technologies/intelligence-artificielle/edge-ai-pourquoi-votre-cloud-sabote-votre-productivite/"&gt;Pourquoi l’intelligence locale est la clé de la productivité industrielle 4.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce que je trouve particulièrement pertinent, c’est la mise en lumière de 3 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Lors de ma veille, je suis tombé sur un article intéressant sur l’Edge AI et le Cloud AI dans les environnements industriels : &lt;a href="https://iotindustriel.com/autres/technologies/intelligence-artificielle/edge-ai-pourquoi-votre-cloud-sabote-votre-productivite/"&gt;Pourquoi l’intelligence locale est la clé de la productivité industrielle 4.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce que je trouve particulièrement pertinent, c’est la mise en lumière de 3 contraintes structurelles, souvent sous-estimées dans presque tous les domaines, mais encore plus critiques dans l’industrie :&lt;br&gt;
➡ la latence&lt;br&gt;
➡ les coûts de transfert de données&lt;br&gt;
➡ la dépendance à la connectivité&lt;/p&gt;
&lt;p&gt;Dans un contexte industriel, ces facteurs ne sont pas de simples “détails techniques” : ils peuvent directement impacter la performance opérationnelle, voire bloquer des cas d’usage temps réel.&lt;/p&gt;
&lt;p&gt;Le point que je retiens surtout est la grille de lecture finale :&lt;br&gt;
➡ Cloud AI : analyse stratégique, entraînement, apprentissage, vision long terme&lt;br&gt;
➡ Edge AI : action terrain, temps réel, décision locale&lt;br&gt;
Et surtout, la vraie valeur n’est pas dans l’opposition des deux approches, mais dans leur complémentarité.&lt;/p&gt;
&lt;p&gt;On se dirige clairement vers des architectures hybrides (hybrides comme on peut l’observer dans beaucoup de domaines), où :&lt;br&gt;
➡ le cloud structure, apprend et optimise&lt;br&gt;
➡ l’edge exécute, réagit et décide localement&lt;/p&gt;
&lt;p&gt;Au final, pour moi la question ne serait plus “Cloud ou Edge”. Mais plutôt : où placer l’intelligence pour maximiser la réactivité, la fiabilité et le ROI ?&lt;/p&gt;</content><category term="Actualités, Analyse"/><category term="edgeai"/></entry><entry><title>L’IA n’est plus seulement dans le cloud… elle commence à revenir sur nos machines.</title><link href="https://www.alkannoide.com/2026/04/06/lia-nest-plus-seulement-dans-le-cloud-elle-commence-a-revenir-sur-nos-machines/" rel="alternate"/><published>2026-04-06T20:21:00+02:00</published><updated>2026-04-06T20:21:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-04-06:/2026/04/06/lia-nest-plus-seulement-dans-le-cloud-elle-commence-a-revenir-sur-nos-machines/</id><summary type="html">&lt;p&gt;Au début, l’IA (celle qui a explosé avec ChatGPT) rimait avec cloud : puissance déportée, dépendance aux API, latence acceptée comme une certaine fatalité. Et puis, progressivement — presque silencieusement ? — le centre de gravité se rapproche de nos propres machines. Une évolution que je suis depuis un moment, et j’ai …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Au début, l’IA (celle qui a explosé avec ChatGPT) rimait avec cloud : puissance déportée, dépendance aux API, latence acceptée comme une certaine fatalité. Et puis, progressivement — presque silencieusement ? — le centre de gravité se rapproche de nos propres machines. Une évolution que je suis depuis un moment, et j’ai l'impression qu’un vrai basculement est en train de se produire.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2026/04/ia-local.jpeg"&gt;&lt;img src="/images/2026/04/ia-local-1024x859.jpeg" class="wp-image-1965" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ce week-end, Apple a discrètement fait un pas majeur : approbation officielle du pilote de Tiny Corp pour prendre en charge les eGPU NVIDIA sur Mac. Ce pilote est pensé pour l’IA, pas pour les jeux ou usages généraux.&lt;br&gt;
Le message est clair : l’IA locale, embarquée et maîtrisée, devient une réalité. Une IA qui ne dépend plus d’un serveur distant, mais de votre propre matériel — confidentialité, réactivité et souveraineté garanties.&lt;/p&gt;
&lt;p&gt;Les puces Apple sont déjà puissantes : M1 à M5 offrent un CPU ultra-optimisé capable de gérer inférence, pipelines rapides et orchestration. Avec un eGPU externe, elles peuvent désormais être associées pour des calculs encore plus ambitieux. Ces associations sont d'ailleurs déjà possible sur PC traditionnel depuis quelques temps.&lt;/p&gt;
&lt;p&gt;Concrètement, on peut imaginer :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Des copilotes privés ultra-efficient et 100% offline , sans risque d’exposition des données

&lt;/li&gt;



&lt;li&gt;

Des outils avancés de création (texte, image, code), fonctionnant en local, sans abonnement ni latence

&lt;/li&gt;



&lt;li&gt;

Des workflows IA embarqués dans des apps métiers, pour une réactivité immédiate

&lt;/li&gt;



&lt;li&gt;

Des environnements de test rapides, sans friction ni coût variable

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;On passe d’une logique de consommation à une logique d’appropriation. Plus besoin de dépendre d’une connexion ou d’un budget API pour innover.&lt;br&gt;
La vraie question : comment orchestrer ces synergies CPU+eGPU pour rivaliser, sur certains usages, avec le cloud ? Bien sûr, le cloud reste roi pour le scale, mais "local" ne veut plus dire "limité". Et ça, c’est profondément excitant pour l’avenir de l’IA sur toutes les plateformes.&lt;/p&gt;</content><category term="Actualités"/><category term="ia"/><category term="llm"/></entry><entry><title>Un modèle de raisonnement (une IA) qui tient désormais dans un smartphone. C'est une révolution et je trouve cela incroyablement excitant!</title><link href="https://www.alkannoide.com/2026/02/01/un-modele-de-raisonnement-une-ia-qui-tient-desormais-dans-un-smartphone-cest-une-revolution-et-je-trouve-cela-incroyablement-excitant/" rel="alternate"/><published>2026-02-01T21:59:00+01:00</published><updated>2026-02-01T21:59:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2026-02-01:/2026/02/01/un-modele-de-raisonnement-une-ia-qui-tient-desormais-dans-un-smartphone-cest-une-revolution-et-je-trouve-cela-incroyablement-excitant/</id><summary type="html">&lt;p&gt;Il y a deux ans, il fallait deux datacenters pour faire tourner un modèle de raisonnement avancé. Liquid AI annonce en janvier une prouesse : un modèle capable de raisonner en autonomie, sur un smartphone et utilisant moins de 1 Go de RAM.&lt;/p&gt;
&lt;p&gt;Pourquoi est-ce un tournant ?&lt;br&gt;
À l’ère où …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a deux ans, il fallait deux datacenters pour faire tourner un modèle de raisonnement avancé. Liquid AI annonce en janvier une prouesse : un modèle capable de raisonner en autonomie, sur un smartphone et utilisant moins de 1 Go de RAM.&lt;/p&gt;
&lt;p&gt;Pourquoi est-ce un tournant ?&lt;br&gt;
À l’ère où la mémoire vive coûte cher (on parle de +500% sur 12 mois) et où la "privacy" devient un enjeu critique, cette avancée risque de changer la donne. Plus besoin de cloud, plus besoin de transférer des données sensibles : l’IA pense localement, sur l’appareil, comme un vrai assistant personnel.  &lt;/p&gt;
&lt;p&gt;Mais c’est quoi, un "modèle de raisonnement" ?&lt;br&gt;
Contrairement aux LLM classiques (ChatGPT, Le Chat,...) qui prédisent des mots en s’appuyant sur des statistiques, les modèles de raisonnement simulent une pensée logique :&lt;br&gt;
- Ils décomposent les problèmes en étapes ("Pour résoudre X, fais d’abord Y, puis Z").&lt;br&gt;
- Ils expliquent leurs démarches (ex. : "Je conclus que ce symptôme correspond à A, car B et C").&lt;br&gt;
- Ils s’adaptent à des tâches complexes sans être réentraînés.  &lt;/p&gt;
&lt;p&gt;Des cas d’usage qui vont tout changer&lt;br&gt;
Avec des modèles légers et autonomes, imaginons :&lt;br&gt;
- assistants médicaux sur les appareils des médecins sans besoin d'envoyer les données dans le cloud&lt;br&gt;
- analyse automatique de contrats et assistance juridique en direct&lt;br&gt;
- détection de pannes par des robots industriels sur eux-mêmes de manière autonome  &lt;/p&gt;
&lt;p&gt;Pourquoi est-ce une révolution ?&lt;br&gt;
- Réduction des coûts: pas de besoin en infrastructure distante&lt;br&gt;
- "Privacy" : les données ne sortent pas de l'appareil&lt;br&gt;
- Latence : ça tourne localement, pas d'échange de données nécessaires.  &lt;/p&gt;
&lt;p&gt;Bientôt, votre grille-pain pourra négocier avec votre frigo pour savoir qui a mangé le dernier morceau de pain. Et votre aspirateur robot vous expliquera pourquoi il a encore coincé sous le canapé (spoiler : c’est votre faute 🤣 ).  &lt;/p&gt;
&lt;p&gt;Pour en savoir plus sur cette annonce de &lt;strong&gt;&lt;a href="https://www.liquid.ai/blog/lfm2-5-1-2b-thinking-on-device-reasoning-under-1gb"&gt;Liquid.ai&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content><category term="Actualités"/><category term="ia"/></entry><entry><title>Prompt Engineering: The Office Dungeon &amp; Dragons! (Spoiler: You’re All Wizards Now 🪄🧙)</title><link href="https://www.alkannoide.com/2025/12/23/prompt-engineering-the-office-dungeon-dragons-spoiler-youre-all-wizards-now-%f0%9f%aa%84%f0%9f%a7%99/" rel="alternate"/><published>2025-12-23T16:48:00+01:00</published><updated>2025-12-23T16:48:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2025-12-23:/2025/12/23/prompt-engineering-the-office-dungeon-dragons-spoiler-youre-all-wizards-now-%f0%9f%aa%84%f0%9f%a7%99/</id><summary type="html">&lt;p&gt;As 2025 wraps up, one truth is undeniable: we are nearly all becoming spellcasters. No wand or pointy hat required (though both are encouraged) just a keyboard, an internet connection, and a new superpower more game-changing than "Ctrl+C / Ctrl+V": Prompt Engineering!&lt;/p&gt;
&lt;p&gt;Picture this: every morning, you wake up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;As 2025 wraps up, one truth is undeniable: we are nearly all becoming spellcasters. No wand or pointy hat required (though both are encouraged) just a keyboard, an internet connection, and a new superpower more game-changing than "Ctrl+C / Ctrl+V": Prompt Engineering!&lt;/p&gt;
&lt;p&gt;Picture this: every morning, you wake up as a Level 1 Mage (aka "Copy-Paste Neophyte"), and every AI interaction is a dice roll. Your mission? Go from "Fumble" to "Critical Success" without accidentally summoning something unexpected.&lt;/p&gt;
&lt;p&gt;❓What’s Your Prompting Level? Like in any RPG, let's roll the dice and find out!&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Prompt Newbie (Neophyte): "Uh… can you write me an email?"

&lt;/li&gt;



&lt;li&gt;

Prompt Associate (Apprentice): "Write a professional email to my boss about the project, but make it sound like Shakespeare wrote it."

&lt;/li&gt;



&lt;li&gt;

Prompt Wizard (Journeyman): "Act as a 1920s detective. Analyze this dataset, find anomalies, and explain it in prose."

&lt;/li&gt;



&lt;li&gt;

Prompt Grandmaster (Expert): "Simulate a debate between Socrates, Einstein, and a sarcastic AI about the ethics of time travel."

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;🫵 Now your turn, what’s YOUR current level?&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Neophyte (I talk to AI like it’s my cat)

&lt;/li&gt;



&lt;li&gt;

Apprentice (I’ve mastered "be creative")

&lt;/li&gt;



&lt;li&gt;

Journeyman (I cite sources like a pro)

&lt;/li&gt;



&lt;li&gt;

Grandmaster (The AI suggests ideas I hadn’t even thought of)

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Where do you want to be in 2026?&lt;/p&gt;
&lt;p&gt;Spoiler: Everyone wants to be a Grandmaster… but let’s be realistic, Fumbles make the best stories 😉 Share them if you have one.&lt;/p&gt;
&lt;p&gt;If this post made you smile, tag a colleague who still thinks "Ctrl+F" is advanced tech. And remember: in 2026, the real magic is in the prompt! 😁&lt;/p&gt;</content><category term="Hors Sujet"/><category term="ia"/></entry><entry><title>MCP et l’interopérabilité en IA : est-ce une révolution structurante ? C'est la question que je me suis récemment posée</title><link href="https://www.alkannoide.com/2025/12/17/mcp-et-linteroperabilite-en-ia-est-ce-une-revolution-structurante-cest-la-question-que-je-me-suis-recemment-posee/" rel="alternate"/><published>2025-12-17T20:49:00+01:00</published><updated>2025-12-17T20:49:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2025-12-17:/2025/12/17/mcp-et-linteroperabilite-en-ia-est-ce-une-revolution-structurante-cest-la-question-que-je-me-suis-recemment-posee/</id><summary type="html">&lt;p&gt;L’IA souffrait d’un paradoxe : des modèles toujours plus performants, mais enfermés dans des silos techniques. Les différents acteurs développaient ses propres protocoles d’interconnexion, créant des barrières qui freinaient l’innovation systémique plus globale et la collaboration entre systèmes. Une première question se pose et si une des …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L’IA souffrait d’un paradoxe : des modèles toujours plus performants, mais enfermés dans des silos techniques. Les différents acteurs développaient ses propres protocoles d’interconnexion, créant des barrières qui freinaient l’innovation systémique plus globale et la collaboration entre systèmes. Une première question se pose et si une des vraies ruptures ne venait pas de l’IA elle-même, mais de sa capacité à dialoguer ?&lt;/p&gt;
&lt;p&gt;Fin 2024, Anthropic (l’un des leaders de l’IA sécurisée et interprétable, connu pour ses modèles comme Claude) a introduit MCP (Model Communication Protocol). Ce protocole ouvert ne se contente pas de standardiser les échanges entre systèmes : il définit un langage universel pour l’IA, comparable à ce que HTTP a été pour le web, SQL pour les bases de données, ou REST pour les API des services web. Une avancée d’autant plus stratégique que MCP est désormais hébergé depuis le début de ce mois par la Linux Foundation – qui supporte déjà plus de 900 projets critiques comme Kubernetes ou RISC-V – garantissant ainsi neutralité et pérennité.&lt;/p&gt;
&lt;p&gt;Pourquoi MCP a changé/change la donne ?&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Fin des silos technologiques : Les entreprises ne sont plus contraintes de dépendre d’un seul fournisseur avec son format d'interconnexion. Elles peuvent désormais orchestrer des modèles hétérogènes (open-source, propriétaires, spécialisés) au sein d’une même architecture, sans friction.

&lt;/li&gt;



&lt;li&gt;

Accélération de l’innovation : L’interopérabilité réduit les coûts d’intégration et permet de combiner rapidement des briques IA pour des cas d’usage complexes.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Je partage maintenant un regard critique : entre opportunités et défis. Si MCP représente une avancée majeure, son adoption pose des défis clés :&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;


&lt;/p&gt;

&lt;li&gt;

Standardisation vs. différenciation : Les acteurs historiques accepteront-ils de jouer le jeu de l’interopérabilité. De ce que j'observe cela semble le cas.

&lt;/li&gt;



&lt;li&gt;

Sécurité et gouvernance : Un protocole ouvert exige des garde-fous robustes pour éviter les abus (fuites de données, manipulations, cyberattaques). La bascule d'Anthropic vers la Linux Foundation va dans le bon sens.

&lt;/li&gt;



&lt;li&gt;

MCP pourrait-il devenir le "TCP/IP de l’IA", invisible mais omniprésent ? Si oui, sa gouvernance devrait, de mon point de vue, rester libre et transparente pour éviter les dérives.

&lt;/li&gt;


&lt;/ul&gt;

&lt;p&gt;Et demain ?&lt;br&gt;
À court terme, MCP va simplifier l’intégration de l’IA dans les processus métiers, réduisant les coûts et accélérant le déploiement de solutions hybrides. C'est une excellente nouvelle. À plus long terme, il pourrait redéfinir les équilibres industriels, en favorisant les écosystèmes ouverts plutôt que les solutions propriétaires. Ce n'est pas la première fois que l'on a pu observer une bataille de "chapelle" par le passé.&lt;br&gt;
Une certitude : l’ère des IA isolées est révolue. Place à celle des systèmes conversants et collaboratifs pour des systèmes et solutions complexes.&lt;/p&gt;</content><category term="Actualités"/><category term="ia"/><category term="mcp"/></entry><entry><title>IBC report 2018</title><link href="https://www.alkannoide.com/2018/10/03/ibc-report-2018/" rel="alternate"/><published>2018-10-03T14:06:00+02:00</published><updated>2018-10-03T14:06:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2018-10-03:/2018/10/03/ibc-report-2018/</id><summary type="html">&lt;p&gt;&lt;a href="https://show.ibc.org/"&gt;&lt;img src="/images/2018/10/IBC_Show_logo.png" class="alignright wp-image-1916 size-full" width="197" height="171" /&gt;&lt;/a&gt;IBC is one of the two biggest show related to broadcast and by extension broadband in the world (the other is NAB). It is happening in Amsterdam every year in September.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consolidation&lt;/strong&gt; is probably the main word which could summarise the IBC this year. Dozens of companies are providing the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://show.ibc.org/"&gt;&lt;img src="/images/2018/10/IBC_Show_logo.png" class="alignright wp-image-1916 size-full" width="197" height="171" /&gt;&lt;/a&gt;IBC is one of the two biggest show related to broadcast and by extension broadband in the world (the other is NAB). It is happening in Amsterdam every year in September.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consolidation&lt;/strong&gt; is probably the main word which could summarise the IBC this year. Dozens of companies are providing the same level of feature / products. They are trying to differentiate from each other with the “business/use-cases” solution they can provide.&lt;/p&gt;
&lt;p&gt;*Note: I focused this article only on some topics related to the OTT technologies and delivery, there were others trends like blockchain which was covered during the event.  *&lt;/p&gt;
&lt;h1&gt;Technology is here&lt;/h1&gt;
&lt;p&gt;Technologies are now in place, the use-cases and solutions need to be built.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ABR streaming formats are settled : HLS and DASH are now standard, used by the entire market to deliver their content.&lt;/li&gt;
&lt;li&gt;DRM : all recent media server are now able to encrypt the content and interact with DRM licence servers. All license providers are now moving to use the same encryption algorithm&lt;/li&gt;
&lt;li&gt;4K: except NTT which was demo-ing 8K, companies were only listing 4K as part of their product portfolio and not pushing as the new key feature. 4K is not anymore a key trends, it is a standard&lt;/li&gt;
&lt;li&gt;World cup provides use-cases to demonstrate the ability to show high scalability with low latency (see BBC example below)&lt;/li&gt;
&lt;li&gt;AR/VR were not trends, the technology is here, but for now, the disruptive business case is not yet available on the market.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The only topic which is on-going is related to AV1: the new video codec. The bitstream was freezed in March this year. The companies and working groups are now working on the improvement for encoding and decoding. We should see major release during the next NAB in 2019 and very probably from Bitmovin who is one of the AV1 major contributor.&lt;/p&gt;
&lt;h1&gt;AI&lt;/h1&gt;
&lt;p&gt;AI was one of the words you could see at IBC, however digging more with the companies, by AI, it is more a productization of machine learning systems :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;face recognition (video players),&lt;/li&gt;
&lt;li&gt;build linear video channel based on recommandations&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Peer-to-peer - CDN&lt;/h1&gt;
&lt;p&gt;Every big sport event comes with their challenge. This year for World Cup in Russia, the CDNs were heavily used. At the same time, the content providers started to use in production Peer-to-Peer solution. The goal was to improve the delivery and reduce (or ratain) the CDN pressure (and by consequence the CDN bill) for those content providers.&lt;/p&gt;
&lt;p&gt;There are 2 majors companies which are covering the majority of that peer-to-peer market :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://streamroot.io/"&gt;Streamroot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.peer5.com"&gt;Peer5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Others companies (like &lt;a href="http://www.easybroadcast.fr/"&gt;EasyBroadcast&lt;/a&gt;) are also providing P2P solution, but they are more confidential for the moment.&lt;/p&gt;
&lt;p&gt;Content providers still need CDN (as source) for their content, but for large scale event, P2P solution provider are / will be more and more used.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2018/10/IMG_2562.png"&gt;&lt;img src="/images/2018/10/IMG_2562.png" class="aligncenter size-full wp-image-1917" width="255" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interestingly, P2P solution are suffering when the internal ISP network is not really good (keeping in mind WebRTC is using UDP and not TCP for transport). India is currently  a good example.&lt;/p&gt;
&lt;h1&gt;Low latency streaming&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://www.svgeurope.org/blog/headlines/ibc-2018-reflections-wowza-co-founder-david-stubenvoll-on-battling-latency-on-the-companys-legacy/"&gt;Wowza Media Systems Co-Founder David Stubenvoll on Battling Latency on the Company’s Legacy&lt;/a&gt; is probably a good start to understand the current situation to stream low latency.&lt;/p&gt;
&lt;h2&gt;DASH CMAF&lt;/h2&gt;
&lt;p&gt;If you do not know CMAF, Bitmovin is providing a great explanation of &lt;a href="https://bitmovin.com/what-is-cmaf-threat-opportunity/"&gt;CMAF&lt;/a&gt;. One of the main goal would be at the end to have HLS (TS chunks) and DASH (MP4 chunks) using the same chunks format, only the manifests will be different (M3U8 for HLS, MPD for DASH). Also CMAF would solve the low latency problem (when sub-seconds chunks are required).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bbc.co.uk/rd/projects/low-latency-live-streaming-mpeg-dash"&gt;BBC R&amp;amp;D&lt;/a&gt; was exposing during the show the setup their deployed for the last big events : World Cup, Winbledon using MPEG-DASH CMAF for low latency streaming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="/images/2018/10/IMG_2564.jpg"&gt;&lt;img src="/images/2018/10/IMG_2564.jpg" class="aligncenter size-full wp-image-1918" width="3794" height="1341" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DASH CMAF is now fully supported by various companies (this is complete lists):&lt;/li&gt;
&lt;li&gt;&lt;a href="https://anevia.com/"&gt;Anevia&lt;/a&gt;, &lt;a href="https://www.elemental.com/"&gt;AWS Elemental,&lt;/a&gt; GPAC &lt;a href="http://www.gpac-licensing.com/signals/"&gt;Signals&lt;/a&gt; on the packaging side&lt;/li&gt;
&lt;li&gt;&lt;a href="https://castlabs.com/"&gt;Castlabs&lt;/a&gt;, &lt;a href="https://www.theoplayer.com/"&gt;TheoPlayer,&lt;/a&gt; &lt;a href="https://github.com/Dash-Industry-Forum/dash.js/wiki"&gt;dash.js&lt;/a&gt; (open source video player supported by the &lt;a href="https://dashif.org/"&gt;DASH-IF)&lt;/a&gt; on the player side&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;WebRTC&lt;/h2&gt;
&lt;p&gt;Limelight Networks released their &lt;a href="https://www.limelight.com/realtime-streaming/"&gt;ultra low latency video product&lt;/a&gt; based on WebRTC protocols. The demo @IBC was showing sub second latency from ingest server located (Frankfurt) to edges located in Japan (~800ms) and Los Angeles (~500ms)&lt;/p&gt;
&lt;h2&gt;Websocket&lt;/h2&gt;
&lt;p&gt;Some companies which are providing media player are providing also websocket video streaming solution : &lt;a href="https://mistserver.org/"&gt;MistServer&lt;/a&gt;, &lt;a href="https://softvelum.com/"&gt;Softvelum (&lt;/a&gt;with Nimble Streamer)&lt;/p&gt;</content><category term="Conférence, Vidéo"/></entry><entry><title>Live to VoD workflows - which solutions ?</title><link href="https://www.alkannoide.com/2013/11/12/live-to-vod-workflows-which-solutions/" rel="alternate"/><published>2013-11-12T10:36:00+01:00</published><updated>2013-11-12T10:36:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-11-12:/2013/11/12/live-to-vod-workflows-which-solutions/</id><summary type="html">&lt;p&gt;For many companies, especially for broadcasters, there is a common question : how can I de-linearize the live to create VoD contents ? During last IBC, I made a turn of the different tools which can help to create this kind of workflows. Some provides software and others provides appliances. Here is …&lt;/p&gt;</summary><content type="html">&lt;p&gt;For many companies, especially for broadcasters, there is a common question : how can I de-linearize the live to create VoD contents ? During last IBC, I made a turn of the different tools which can help to create this kind of workflows. Some provides software and others provides appliances. Here is an overview of the different solutions of the company I identified which provide solutions.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Harmonic&lt;/h2&gt;
&lt;p&gt;Harmonic provides some solutions to generate file from live stream : &lt;a href="http://harmonicinc.com/product/promedia-live"&gt;ProMedia Live server&lt;/a&gt;, &lt;a href="http://harmonicinc.com/product/prostream-1000-ace"&gt;ProStream 1000 with ACE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/11/harmonic_live_to_vod.png"&gt;&lt;img src="/images/2013/11/harmonic_live_to_vod.png" class="wp-image-1636 aligncenter" width="370" height="191" alt="harmonic_live_to_vod" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The ProMedia Live can be available as software only or as an appliance (based on optimized hardware). The ProMedia 1000 with ACE is a 1U device.&lt;/p&gt;
&lt;p&gt;You can use API or GUI to manage the server and create to order to generate VoD content from Live stream. Both support SDI inputs of HD/SD video or MPEG2 / H.264 via transport stream.&lt;/p&gt;
&lt;h2&gt;Hexaglobe&lt;/h2&gt;
&lt;p&gt;&lt;img src="/images/2013/10/hexaglobe.gif" class="size-full wp-image-1603 alignright" width="250" height="54" alt="hexaglobe" /&gt; &lt;a href="http://www.hexaglobe.com"&gt;Hexaglobe&lt;/a&gt; provided a solution called : Advanced Replay. This solution provides two main features :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an automatic mode which is pluggable to an EPG for example&lt;/li&gt;
&lt;li&gt;a GUI to create extract scenes from the live&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Advanced Replay records the live stream and can be able to provide more than 72hours of recorded streams. The solution is GoP accurate and take as input : TS, RTMP and also SDI.&lt;/p&gt;
&lt;p&gt;To finish the solution is provided in a server 1U and can be implemented with others Hexaglobe solutions or with some others solutions (CDN, CMS etc...)&lt;/p&gt;
&lt;h2&gt;MediaExcel&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2013/11/hero_5000.png" style="color: #ff4b33; line-height: 24px; font-size: 16px;"&gt;&lt;img src="/images/2013/11/hero_5000.png" class="wp-image-1634 alignleft" width="235" height="74" alt="hero_5000" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;MediaExcel is based in the US. They provide one solution : &lt;a href="http://www.mediaexcel.com/products/hero-vs-cloud"&gt;Media Excel HERO&lt;/a&gt;. This platform can manage , on the same one, Live and VoD. MediaExcel provide also 1U servers.&lt;/p&gt;
&lt;p&gt;You can scale the platform with the cloud to create a head-end architecture.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mediaexcel.com//images/cloud.png"&gt;&lt;img src="http://www.mediaexcel.com//images/cloud.png" class="aligncenter" width="392" height="284" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;"With HERO's on-demand dynamic repurposing for live-to-live, live-to-file, and file-to-file transcoding, no other platform delivers the quality, ease of use, and management capabilities for reducing CAPEX and OPEX." said &lt;a href="http://www.prlog.org/12206565-media-excel-powers-enhanced-multiscreen-opportunities-4kuhd-and-hevc-solutions-at-ibc-2013.html"&gt;John Hotchkiss, COO at Media Excel, during last IBC&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;OpenHeadEnd&lt;/h2&gt;
&lt;p&gt;&lt;img src="/images/2013/10/openheadend.png" class="alignright wp-image-1604" style="line-height: 24px; font-size: 16px;" width="211" height="33" alt="openheadend" /&gt; &lt;a href="http://openheadend.tv/"&gt;OpenHeadEnd&lt;/a&gt; is a french company. OpenHeadEnd provides a solution based on a simple USB dongle you can plug on a standard PC or a server. Many inputs are possible : from terrestrial reception to IP. The output formats are MPEG2, MPEG4 . You manage the solution via a web interface. Various features are available :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;record live 24H/24H&lt;/li&gt;
&lt;li&gt;capture and recompose a VoD content from recorded live stream&lt;/li&gt;
&lt;li&gt;remux or/and transcode streams&lt;/li&gt;
&lt;li&gt;manage failover (for example if one input failed, the solution use another).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can have an overview on how to create workflow via the &lt;a href="http://www.youtube.com/user/OpenHeadend?feature=watch"&gt;Youtube channel&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Unified Streaming Capture&lt;/h2&gt;
&lt;p&gt;CodeShop, knew with it main product &lt;a href="http://www.unified-streaming.com/products/streaming/"&gt;Unified Streaming&lt;/a&gt;, announced last Summer &lt;a href="http://www.unified-streaming.com/products/capture/"&gt;Unified Capture&lt;/a&gt;. The solution can be implemented in the Unified Streaming environment.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2013/10/capture.png" class="wp-image-1608 aligncenter" width="500" height="253" alt="unified capture" /&gt;&lt;/p&gt;
&lt;p&gt;You save your live stream on the disk. Then, you send to Unified Capture (a command-line tool) the TC-in and TC-out to cut and you obtain a single file output. This solution is also frame accurate.&lt;/p&gt;
&lt;p&gt;This article give an overview of the different solutions I identified, but perhaps I missed others companies/solutions. If yes, don't hesitate to add a comment in the thread.&lt;/p&gt;</content><category term="Analyse, Vidéo"/><category term="live"/><category term="video"/><category term="vod"/><category term="workflow"/></entry><entry><title>[OVFS] Speaker at the next SATIS expo in Paris</title><link href="https://www.alkannoide.com/2013/11/08/ovfs-speaker-at-the-next-satis-expo-in-paris/" rel="alternate"/><published>2013-11-08T14:55:00+01:00</published><updated>2013-11-08T14:55:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-11-08:/2013/11/08/ovfs-speaker-at-the-next-satis-expo-in-paris/</id><summary type="html">&lt;p&gt;&lt;a href="http://www.satis-expo.com/" target="_blank"&gt;&lt;img src="/images/2013/11/satis2013.png" class="alignleft size-full wp-image-1649" width="229" height="128" alt="satis2013" /&gt;&lt;/a&gt;I will be a speaker (as panelist) in one session during the next &lt;a href="http://www.satis-expo.com/"&gt;Satis expo&lt;/a&gt; in Paris. This session is called : "White card to the Online Video French Squad". &lt;a href="http://www.ovfsquad.fr"&gt;Online Video French Squad&lt;/a&gt; a french group of &lt;span style="text-decoration: underline;"&gt;tech&lt;/span&gt; guys who working in the online video ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2013/11/logo.png" class="alignright wp-image-1647" width="150" height="150" alt="Online Video French Squad" /&gt;&lt;/p&gt;
&lt;p&gt;In this session, we …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="http://www.satis-expo.com/" target="_blank"&gt;&lt;img src="/images/2013/11/satis2013.png" class="alignleft size-full wp-image-1649" width="229" height="128" alt="satis2013" /&gt;&lt;/a&gt;I will be a speaker (as panelist) in one session during the next &lt;a href="http://www.satis-expo.com/"&gt;Satis expo&lt;/a&gt; in Paris. This session is called : "White card to the Online Video French Squad". &lt;a href="http://www.ovfsquad.fr"&gt;Online Video French Squad&lt;/a&gt; a french group of &lt;span style="text-decoration: underline;"&gt;tech&lt;/span&gt; guys who working in the online video ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2013/11/logo.png" class="alignright wp-image-1647" width="150" height="150" alt="Online Video French Squad" /&gt;&lt;/p&gt;
&lt;p&gt;In this session, we will talk about : &lt;a href="http://www.satis-expo.com/site/FR/EVENEMENTS/Rechercher_une_conference/Zoom_conference,20131120_120000,C2580,I2581,Zoom-262cc8da09e7eb28873367a81c4c2d67.htm"&gt;&lt;strong&gt;DRMs, what costs for the OTT security ?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Which DRM for which devices ? Business models, technical constraints, issues on multiscreen workflow and user experience...&lt;/p&gt;
&lt;p&gt;The others panelists will be :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nicolas Weil, Solution Architect at Akamai&lt;/li&gt;
&lt;li&gt;Simon Laroque, Project Manager at Cognacq-Jay Image&lt;/li&gt;
&lt;li&gt;Philippe Rambourg, Broadcast Engineering Manager at Canal +&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The session will be on Wednesday, the 20th of November at 12PM.&lt;/p&gt;
&lt;p&gt;To my english readers, I apologize in advance, this session will be in french.&lt;/p&gt;</content><category term="OVFS, Vidéo"/></entry><entry><title>How to create and architecture an open-source and/or free video platform ?</title><link href="https://www.alkannoide.com/2013/07/05/how-to-create-and-architecture-an-open-source-andor-free-video-platform/" rel="alternate"/><published>2013-07-05T10:51:00+02:00</published><updated>2013-07-05T10:51:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-07-05:/2013/07/05/how-to-create-and-architecture-an-open-source-andor-free-video-platform/</id><summary type="html">&lt;p&gt;This post is the result of a sort of challenge. The objective is to create an architecture to generate, manage and deliver HTTP streaming videos using free and/or open-source tools and/or applications. It need to answer to many questions : tools must be open source or free; reliability of …&lt;/p&gt;</summary><content type="html">&lt;p&gt;This post is the result of a sort of challenge. The objective is to create an architecture to generate, manage and deliver HTTP streaming videos using free and/or open-source tools and/or applications. It need to answer to many questions : tools must be open source or free; reliability of the platform and the ability to scale up quickly. The architecture can be split in two parts : the content preparation and the delivery. I will expose an overview for each part of the architecture. Then I will list differents tools you can use. To finish, I will give you in details the architecture I will choose to deploy. But to realize this, few or some developments can be required, the language you will use, will be your choice. The operating system will be on Linux.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Content preparation&lt;/h2&gt;
&lt;p&gt;Here is the part to prepare the content. It will be separate in 3 differents items, I call them services :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="line-height: 16px;"&gt;Manager&lt;/span&gt;&lt;/strong&gt;&lt;span style="line-height: 16px;"&gt; this service will orchestrate all the tasks. In this part, I choose the self-development but another option is possible (see below).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bus&lt;/strong&gt; the service bus will deliver all messages between others services&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worker &lt;/strong&gt;each worker will be in charge of one specific task : encode, upload, download, package.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these is exposed in this figure :&lt;/p&gt;
&lt;h3&gt;&lt;a href="/images/2013/06/how_to_open_arch_video_step1.png"&gt;&lt;img src="/images/2013/06/how_to_open_arch_video_step1.png" class="alignnone wp-image-1506" width="650" height="354" alt="how_to_open_arch_video_step1" /&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The generated assets are transfered in the delivery zone storage.&lt;/p&gt;
&lt;h3&gt;Service : Manager&lt;/h3&gt;
&lt;p&gt;Here is the intelligence of the system. You have two choice :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 16px;"&gt;&lt;span style="line-height: 16px;"&gt;create your own system. In this case, t&lt;/span&gt;&lt;/span&gt;he manager need some developments, you can choose the language you want : Python, PHP, NodeJS, Java, Perl, etc...&lt;/li&gt;
&lt;li&gt;using a system already developed. I think about Kaltura platform for example. This option need some integration and learning time if you want to use it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I recommend to associate your code to a database. The database will save the metadata of your video assets and some configurations datas.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 16px;"&gt;relational database : &lt;/span&gt;&lt;a href="http://www.mysql.com/" style="line-height: 16px;"&gt;MySQL&lt;/a&gt;&lt;span style="line-height: 16px;"&gt;, &lt;/span&gt;&lt;a href="http://www.postgresql.org/" style="line-height: 16px;"&gt;PostgreSQL&lt;/a&gt;&lt;span style="line-height: 16px;"&gt;, &lt;/span&gt;&lt;a href="http://www.sqlite.org/" style="line-height: 16px;"&gt;SQLLite&lt;/a&gt;, ...&lt;/li&gt;
&lt;li&gt;non-relational database : &lt;a href="http://redis.io/"&gt;Redis&lt;/a&gt;, ...&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Service : Bus&lt;/h3&gt;
&lt;p&gt;The service bus will use the concept of &lt;a href="http://en.wikipedia.org/wiki/Message_queue"&gt;Message queue&lt;/a&gt;. That is very interesting because it helps to manage more easily the communication between each application : you send the message and the library or the system make the rest. There are many tools in the open source world :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.zeromq.org/"&gt;ZeroMQ&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gearman.org/"&gt;Gearman&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rabbitmq.com/"&gt;RabbitMQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For each message queue solutions, you will find connectors for separates languages (C, C++, PHP, Python, Perl, ...). Depends on the message queue solution you choose, you need to make more or less developments.&lt;/p&gt;
&lt;h3&gt;Service : Worker&lt;/h3&gt;
&lt;p&gt;Workers services are here to make specific tasks :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;encode&lt;/strong&gt; : this service is based on the most famous open source tools in the encoding's world : &lt;a href="http://ffmpeg.org/"&gt;ffmpeg&lt;/a&gt; and its differents libraries (&lt;a href="http://ffmpeg.org/trac/ffmpeg/wiki/AACEncodingGuide"&gt;libfaac&lt;/a&gt;, &lt;a href="http://www.videolan.org/developers/x264.html"&gt;libx264&lt;/a&gt;, ...). But you can use &lt;a href="http://www.mplayerhq.hu/design7/news.html"&gt;mencoder&lt;/a&gt; too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;package&lt;/strong&gt; : the objective is not to encode the video asset, but to change the format. Some tools are available :&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gpac.wp.mines-telecom.fr/"&gt;MP4Box&lt;/a&gt; : to manage MP4 files or MPEG-DASH&lt;/li&gt;
&lt;li&gt;&lt;a href="http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WSaeac10ab694095a12a9a3a7d12823cda643-7ffc.html"&gt;f4fpackager&lt;/a&gt; : to generate HDS, you will need to deploy the HDS module for Apache in the delivery platform&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/iliya-gr/mediasegmenter"&gt;mediasegmenter&lt;/a&gt; : to generate HLS&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mistserver.org/index.php?title=FLV2DTSC"&gt;FLV2DTSC&lt;/a&gt; : to generate DTSC if you want to use &lt;a href="http://www.mistserver.org"&gt;MistServer&lt;/a&gt; (&lt;a href="https://www.alkannoide.com/2013/04/18/mistserver-optimize-the-http-delivery-via-caching/" title="Mistserver – Optimize the HTTP delivery via caching"&gt;a solution I told in previous articles&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;transferts&lt;/strong&gt; : at the end of a process, you will need to transfert the asset to a destination. Transfert workers is able to use some protocols : FTP, SCP, HTTP, etc... So you can push the content to the delivery storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of this services can be in the same physical server. If you have more assets to manage and generate, it is possible very easily to scale up. Workers can be deploy on dedicated server and the bus service is here to manage the network. You can add another service manager to add redundance. Thoses updates will have a impact on the reliability of the platform.&lt;/p&gt;
&lt;p&gt;Here is one solution which include the most part of those precepts : &lt;a href="http://www.transcodem.com/"&gt;Transcodem&lt;/a&gt;. You can fork this project on GitHub too.&lt;/p&gt;
&lt;h2&gt;Delivery&lt;/h2&gt;
&lt;p&gt;Ok, now your assets are ready to deliver and are in the delivery storage. In our architecture, we want to stream content based on HTTP protocol (HDS, HLS, Smooth Streaming). You can start with one physical server, but all tools and the architecture I expose can scale up easily to many physicals servers. We have many tools to help us :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 16px;"&gt;HTTP webservers : &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt;, &lt;a href="http://nginx.org/"&gt;NGinx&lt;/a&gt;, &lt;a href="http://www.lighttpd.net/"&gt;Lighttpd&lt;/a&gt; and differents plugins (&lt;a href="http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS7b362c044b7dd076-735e76121260080a90e-8000.html"&gt;module origin from Adobe&lt;/a&gt; to stream HDS for example)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Media servers : &lt;a href="http://www.red5.org/"&gt;Red5&lt;/a&gt;, &lt;a href="http://www.mistserver.org"&gt;MistServer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And if your platform will support a high load, you can use proxy cache solution like &lt;a href="https://www.varnish-cache.org/"&gt;Varnish&lt;/a&gt;. I gave in a previous post a solution to &lt;a href="https://www.alkannoide.com/2013/04/18/mistserver-optimize-the-http-delivery-via-caching/" title="Mistserver – Optimize the HTTP delivery via caching"&gt;deliver content with Varnish and MistServer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/07/how_to_open_arch_video_step2.png"&gt;&lt;img src="/images/2013/07/how_to_open_arch_video_step2.png" class="aligncenter wp-image-1582" width="624" height="271" alt="how_to_open_arch_video_step2" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To finish, you can split the two part or merge them in one infrastructure. I am opened to talk about this architecture and which tools we can use to deploy it.&lt;/p&gt;</content><category term="Analyse, Streaming server, Vidéo"/><category term="architecture"/><category term="http"/><category term="message queue"/><category term="mistserver"/><category term="streaming"/><category term="varnish"/></entry><entry><title>Play with ffserver - a quick overview</title><link href="https://www.alkannoide.com/2013/07/04/play-with-ffserver-a-quick-overview/" rel="alternate"/><published>2013-07-04T11:04:00+02:00</published><updated>2013-07-04T11:04:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-07-04:/2013/07/04/play-with-ffserver-a-quick-overview/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2012/01/ffmpeg.jpg"&gt;&lt;img src="/images/2012/01/ffmpeg.jpg" class="wp-image-659 alignright" width="154" height="86" alt="ffmpeg" /&gt;&lt;/a&gt;Everybody knows &lt;a href="http://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt; the command line encoding tool but do you know ffserver ? &lt;a href="http://www.ffmpeg.org/ffserver.html"&gt;ffserver&lt;/a&gt; is a multimedia streaming server for live broadcasts. With it, you can stream over HTTP, &lt;a href="http://fr.wikipedia.org/wiki/Real-time_Transport_Protocol"&gt;RTP&lt;/a&gt; and &lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Streaming_Protocol"&gt;RSTP&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Quick overview&lt;/h2&gt;
&lt;p&gt;The concept is to use ffmpeg to push content to one server. This server will transcode …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2012/01/ffmpeg.jpg"&gt;&lt;img src="/images/2012/01/ffmpeg.jpg" class="wp-image-659 alignright" width="154" height="86" alt="ffmpeg" /&gt;&lt;/a&gt;Everybody knows &lt;a href="http://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt; the command line encoding tool but do you know ffserver ? &lt;a href="http://www.ffmpeg.org/ffserver.html"&gt;ffserver&lt;/a&gt; is a multimedia streaming server for live broadcasts. With it, you can stream over HTTP, &lt;a href="http://fr.wikipedia.org/wiki/Real-time_Transport_Protocol"&gt;RTP&lt;/a&gt; and &lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Streaming_Protocol"&gt;RSTP&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Quick overview&lt;/h2&gt;
&lt;p&gt;The concept is to use ffmpeg to push content to one server. This server will transcode streams and deliver to the end-users.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/07/ffserver_map.png"&gt;&lt;img src="/images/2013/07/ffserver_map.png" class="aligncenter size-full wp-image-1892" width="678" height="426" alt="FFServer map" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Input streams are called feed and for each feed you can have multiple output stream.&lt;/p&gt;
&lt;p&gt;We can manage ffserver via a configuration file. The syntax is close to the one used for Apache server. You can find a example &lt;a href="http://ffmpeg.org/sample.html"&gt;here&lt;/a&gt;. And there are more informations in the &lt;a href="http://ffmpeg.org/trac/ffmpeg/wiki/Streaming%20media%20with%20ffserver"&gt;ffserver wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will see two examples on how to deliver content via a ffserver. There will be a FLV and a WebM stream.  &lt;/p&gt;
&lt;h2&gt;Stream FLV&lt;/h2&gt;
&lt;p&gt;In this example, we will have one input stream and two output : one in FLV and one WebM.&lt;/p&gt;
&lt;p&gt;Here are the general configuration settings&lt;/p&gt;
&lt;p&gt;[code language="text"]&lt;br&gt;
Port 8090&lt;br&gt;
BindAddress 0.0.0.0&lt;br&gt;
MaxHTTPConnections 2000&lt;br&gt;
MaxClients 1000&lt;br&gt;
MaxBandwidth 1000&lt;br&gt;
CustomLog -&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;We define a status page.&lt;/p&gt;
&lt;p&gt;[code language="text"]&lt;br&gt;
\&amp;lt;Stream stat.html&amp;gt;&lt;br&gt;
Format status&lt;br&gt;
ACL allow localhost&lt;br&gt;
ACL allow 192.168.0.0 192.168.255.255&lt;br&gt;
\&amp;lt;/Stream&amp;gt;&lt;br&gt;
[/code]&lt;br&gt;
This page will help us to monitor the server. This page is call with this url : http://localhost:8090/stat.html and you will get this page :&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/07/ffserver-status.png"&gt;&lt;img src="/images/2013/07/ffserver-status.png" class="wp-image-1560 aligncenter" width="532" height="365" alt="ffserver-status" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now we set up the feed : storage area, max size and allowed referrers. Remember, feeds are the input of the ffserver.&lt;br&gt;
[code language="text"]&lt;br&gt;
\&amp;lt;Feed feed1.ffm&amp;gt;&lt;br&gt;
File /tmp/feed1.ffm&lt;br&gt;
FileMaxSize 1G&lt;br&gt;
ACL allow 127.0.0.1&lt;br&gt;
\&amp;lt;/Feed&amp;gt;&lt;br&gt;
[/code]&lt;br&gt;
Ok, our configuration file have now a input feed. Now, we will add the first output : the FLV one. The video will be encoded in H264 for video and AAC for audio. This part is divided in 3 part :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;general settings : which feed is used and output format&lt;/li&gt;
&lt;li&gt;settings for video&lt;/li&gt;
&lt;li&gt;settings for audio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[code language="text"]&lt;br&gt;
\&amp;lt;Stream live.flv&amp;gt;&lt;br&gt;
Format flv&lt;br&gt;
Feed feed1.ffm&lt;/p&gt;
&lt;p&gt;VideoCodec libx264&lt;br&gt;
VideoFrameRate 30&lt;br&gt;
VideoBitRate 800&lt;br&gt;
VideoSize 720x576&lt;br&gt;
AVOptionVideo crf 23&lt;br&gt;
AVOptionVideo preset medium&lt;br&gt;
AVOptionVideo me_range 16&lt;br&gt;
AVOptionVideo qdiff 4&lt;br&gt;
AVOptionVideo qmin 10&lt;br&gt;
AVOptionVideo qmax 51&lt;br&gt;
AVOptionVideo flags +global_header&lt;/p&gt;
&lt;p&gt;AudioCodec aac&lt;br&gt;
Strict -2&lt;br&gt;
AudioBitRate 128&lt;br&gt;
AudioChannels 2&lt;br&gt;
AudioSampleRate 44100&lt;br&gt;
AVOptionAudio flags +global_header&lt;br&gt;
\&amp;lt;/Stream&amp;gt;&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;The first part of our server is now configured and saved in a ffserver.conf file. We can test it. Launch the server with this command line :&lt;br&gt;
[code language="bash"]ffserver -f ffserver.conf[/code]&lt;br&gt;
You will have this output :&lt;br&gt;
[code language="bash"] ffserver version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers&lt;br&gt;
built on Jun 24 2013 10:41:49 with Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)&lt;br&gt;
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libopus --enable-libtheora --enable-libschroedinger --enable-libopenjpeg --enable-libmodplug --enable-libvpx --enable-libspeex --enable-libass --enable-libbluray --enable-gnutls --enable-libfreetype --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-yasm --enable-gpl --enable-postproc --enable-libx264 --enable-libxvid --enable-nonfree --enable-libfaac&lt;br&gt;
libavutil 52. 18.100 / 52. 18.100&lt;br&gt;
libavcodec 54. 92.100 / 54. 92.100&lt;br&gt;
libavformat 54. 63.104 / 54. 63.104&lt;br&gt;
libavdevice 54. 3.103 / 54. 3.103&lt;br&gt;
libavfilter 3. 42.103 / 3. 42.103&lt;br&gt;
libswscale 2. 2.100 / 2. 2.100&lt;br&gt;
libswresample 0. 17.102 / 0. 17.102&lt;br&gt;
libpostproc 52. 2.100 / 52. 2.100&lt;br&gt;
Wed Jul 3 14:02:01 2013 FFserver started.&lt;br&gt;
[/code]&lt;br&gt;
Your server is now up and running. We can push our first movie, in my case, I use the &lt;a href="http://www.sintel.org/"&gt;Sintel Movie&lt;/a&gt; trailer. The ffmpeg command line read the video and push it to the feed we configured above.&lt;br&gt;
[code language="bash"][/code]ffmpeg -i sintel.mp4 http://localhost:8090/feed1.ffm[/code]&lt;br&gt;
Now you can launch your preferred player (in my case VLC) and try to stream the content : http://localhost:8090/live.flv ;-)&lt;/p&gt;
&lt;h2&gt;Stream WebM&lt;/h2&gt;
&lt;p&gt;Ok we have now one FLV output stream. We will replace FLV stream by one new output : WebM (with Vorbis and VP6). We will re-used the ffserver.conf file and put this part :&lt;/p&gt;
&lt;p&gt;[code language="text"]&lt;br&gt;
\&amp;lt;Stream live.webm&amp;gt;&lt;br&gt;
Feed feed1.ffm&lt;br&gt;
Format webm&lt;/p&gt;
&lt;p&gt;AudioCodec vorbis&lt;br&gt;
AudioBitRate 64&lt;/p&gt;
&lt;p&gt;VideoCodec libvpx&lt;br&gt;
VideoSize 720x576&lt;br&gt;
VideoFrameRate 25&lt;br&gt;
AVOptionVideo flags +global_header&lt;br&gt;
AVOptionVideo cpu-used 0&lt;br&gt;
AVOptionVideo qmin 10&lt;br&gt;
AVOptionVideo qmax 42&lt;br&gt;
AVOptionVideo quality good&lt;br&gt;
AVOptionAudio flags +global_header&lt;br&gt;
PreRoll 15&lt;br&gt;
StartSendOnKey&lt;br&gt;
VideoBitRate 400&lt;br&gt;
\&amp;lt;/Stream&amp;gt;&lt;br&gt;
[/code]&lt;/p&gt;
&lt;p&gt;Restart the server and push again the content. You can test the movie on Chrome or VLC with this url : http://localhost:8090/live.webm&lt;/p&gt;
&lt;p&gt;Note: with WebM, you can create a kind of live stream if you loop on different ffmpeg command line.&lt;/p&gt;
&lt;p&gt;To conclude, we know ffmpeg as one of the most useful free encoder. Now, ffserver is a very interesting tool and deserve more time to test the different possibility of it.&lt;br&gt;
Have fun with it ! ;-)&lt;/p&gt;</content><category term="Analyse, Bidouille, Streaming server, Vidéo"/><category term="ffmpeg"/><category term="ffserver"/><category term="flv"/><category term="streaming"/><category term="webm"/></entry><entry><title>Mistserver - Optimize the HTTP delivery via caching</title><link href="https://www.alkannoide.com/2013/04/18/mistserver-optimize-the-http-delivery-via-caching/" rel="alternate"/><published>2013-04-18T16:24:00+02:00</published><updated>2013-04-18T16:24:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-04-18:/2013/04/18/mistserver-optimize-the-http-delivery-via-caching/</id><summary type="html">&lt;p&gt;In the previous post, we looked the &lt;a href="https://www.alkannoide.com/2013/04/11/mistserver-new-features-for-the-version-1-1/" title="MistServer – new features for the version 1.1"&gt;new features of MistServer (version 1.1).&lt;/a&gt;&lt;br&gt;
&lt;a href="/images/2013/04/varnish.png"&gt;&lt;img src="/images/2013/04/varnish.png" class="alignright size-full wp-image-1392" width="200" height="75" alt="varnish" /&gt;&lt;/a&gt;Today, I expose an idea exposed by a friend &lt;a href="http://www.eltrovemo.com/"&gt;Nicolas Weil&lt;/a&gt;. We talked about the content caching for an architecture based on Mistserver especially for HTTP based format. We thought about &lt;a href="https://www.varnish-cache.org/"&gt;Varnish&lt;/a&gt;, an &lt;a href="http://en.wikipedia.org/wiki/Varnish_(software)"&gt;HTTP accelerator&lt;/a&gt;. The …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In the previous post, we looked the &lt;a href="https://www.alkannoide.com/2013/04/11/mistserver-new-features-for-the-version-1-1/" title="MistServer – new features for the version 1.1"&gt;new features of MistServer (version 1.1).&lt;/a&gt;&lt;br&gt;
&lt;a href="/images/2013/04/varnish.png"&gt;&lt;img src="/images/2013/04/varnish.png" class="alignright size-full wp-image-1392" width="200" height="75" alt="varnish" /&gt;&lt;/a&gt;Today, I expose an idea exposed by a friend &lt;a href="http://www.eltrovemo.com/"&gt;Nicolas Weil&lt;/a&gt;. We talked about the content caching for an architecture based on Mistserver especially for HTTP based format. We thought about &lt;a href="https://www.varnish-cache.org/"&gt;Varnish&lt;/a&gt;, an &lt;a href="http://en.wikipedia.org/wiki/Varnish_(software)"&gt;HTTP accelerator&lt;/a&gt;. The idea is to keep in cache the different fragments which are generated by MistServer. This article will not talk about the RTMP or TS part, theses protocols are not HTTP based.&lt;/p&gt;
&lt;p&gt;To make this test, I use on the same server MistServer and Varnish. Here is the architecture.&lt;br&gt;
&lt;a href="/images/2013/04/varnish-mist.png"&gt;&lt;img src="/images/2013/04/varnish-mist.png" class="size-full wp-image-1437 alignnone" width="597" height="366" alt="varnish-mist" /&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;!--more--&gt;

&lt;p&gt;As you look, my Mistserver HTTP based protocols are on 8081 port. The operating system is Ubuntu and I follow this tutorial to &lt;a href="https://www.varnish-cache.org/installation/ubuntu"&gt;install Varnish&lt;/a&gt;. Then I setup Varnish and fill which is his backend. Open the &lt;em&gt;/etc/varnish/default.vcl&lt;/em&gt; and update thoses lines :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;backend default {
    .host = &amp;quot;127.0.0.1&amp;quot;;
    .port = &amp;quot;8081&amp;quot;;
}
sub vcl_recv {
    set req.grace = 30s;
    return (lookup);
}
sub vcl_pipe {
    return (pipe);
}
sub vcl_pass {
    return (pass);
}
sub vcl_init {
    return (ok);
}
sub vcl_fini {
    return (ok);
}
sub vcl_deliver {
        if (obj.hits &amp;gt; 0) {
                set resp.http.X-Cache = &amp;quot;cached&amp;quot;;
        } else {
                set resp.http.X-Cache = &amp;quot;uncached&amp;quot;;
        }
        return (deliver);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To help on debug,  I add in vcl_deliver a &lt;em&gt;X-Cache&lt;/em&gt; header with values &lt;em&gt;cached - uncached&lt;/em&gt;. HTTP files will be in cache during 30 seconds. You can change the value very easier.&lt;/p&gt;
&lt;p&gt;You can optimize the configuration but it's not the object of that article and you can find many informations on the web.&lt;/p&gt;
&lt;p&gt;To check the good configuration,  get a content with curl command line. Be careful, we are not testing to call the MistServer but the Varnish cache, so we will point to the port 80 not 8081.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;curl&lt;span class="w"&gt; &lt;/span&gt;-I&lt;span class="w"&gt; &lt;/span&gt;http://ip_address/dynamic/mystream/manifest.f4m
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Check the HTTP header :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kr"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt; &lt;span class="ne"&gt;OK&lt;/span&gt;
&lt;span class="na"&gt;Cache-Control&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;no-cache&lt;/span&gt;
&lt;span class="na"&gt;Content-Type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;text/xml&lt;/span&gt;
&lt;span class="na"&gt;X-UID&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;0f4405cc8b4b43312a8f35d7ba0b043e_sintel_dynamic&lt;/span&gt;
&lt;span class="na"&gt;Content-Length&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;815&lt;/span&gt;
&lt;span class="na"&gt;Accept-Ranges&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;bytes&lt;/span&gt;
&lt;span class="na"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;Thu, 11 Apr 2013 14:30:19 GMT&lt;/span&gt;
&lt;span class="na"&gt;Age&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;0&lt;/span&gt;
&lt;span class="na"&gt;Connection&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;keep-alive&lt;/span&gt;
&lt;span class="na"&gt;X-Cache&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;uncached&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can see the uncached value on the last line.&lt;br&gt;
If you make a new call, before the end of the 30s of cache, the content will be in Varnish cache and MistServer is not called :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kr"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt; &lt;span class="ne"&gt;OK&lt;/span&gt;
&lt;span class="na"&gt;Cache-Control&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;no-cache&lt;/span&gt;
&lt;span class="na"&gt;Content-Type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;text/xml&lt;/span&gt;
&lt;span class="na"&gt;X-UID&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;0f4405cc8b4b43312a8f35d7ba0b043e_sintel_dynamic&lt;/span&gt;
&lt;span class="na"&gt;Content-Length&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;815&lt;/span&gt;
&lt;span class="na"&gt;Accept-Ranges&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;bytes&lt;/span&gt;
&lt;span class="na"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;Thu, 11 Apr 2013 14:30:21 GMT&lt;/span&gt;
&lt;span class="na"&gt;Age&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;2&lt;/span&gt;
&lt;span class="na"&gt;Connection&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;keep-alive&lt;/span&gt;
&lt;span class="na"&gt;X-Cache&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;cached&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is the magic of HTTP caching ! ;-) Mistserver is not used when content is cached by Varnish.&lt;/p&gt;
&lt;p&gt;You can check too with the varnishlog tools to see if Varnish call the backend or not.&lt;/p&gt;
&lt;p&gt;If you want to use this kind of configuration for production for example, you can apply this kind of architecture : multiple varnish caches (called edges), as physical servers, in front of Mistserver (called origin).&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/04/varnish_mist_multiple.png"&gt;&lt;img src="/images/2013/04/varnish_mist_multiple.png" class="size-full wp-image-1442 alignnone" width="628" height="410" alt="varnish_mist_multiple" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can divide by many the load on the origin server and Varnish was created for this kind of usage.&lt;/p&gt;
&lt;p&gt;To finish, you can apply this kind of configuration for VoD or Live. For VoD, the cache lifetime can be more than 10 minutes, for live, I advise a short cache lifetime, the reason are simple to understand.&lt;/p&gt;
&lt;p&gt;Have fun !&lt;/p&gt;</content><category term="Analyse, Streaming server, Vidéo"/><category term="architecture"/><category term="cache"/><category term="mistserver"/><category term="varnish"/></entry><entry><title>MistServer - new features for the version 1.1</title><link href="https://www.alkannoide.com/2013/04/11/mistserver-new-features-for-the-version-1-1/" rel="alternate"/><published>2013-04-11T20:45:00+02:00</published><updated>2013-04-11T20:45:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-04-11:/2013/04/11/mistserver-new-features-for-the-version-1-1/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2012/12/mistserver.png"&gt;&lt;img src="/images/2012/12/mistserver.png" class="alignleft wp-image-1087" width="151" height="151" alt="mistserver" /&gt;&lt;/a&gt;I made last year a post to introduce a new streaming server : &lt;a href="https://www.alkannoide.com/2012/12/10/mistserver-a-new-multimedia-streaming-server-first-overview/" title="Mistserver – a new multimedia streaming server – First overview"&gt;MistServer&lt;/a&gt;. From this article, I follow all the updates made by the team. &lt;a href="http://mistserver.org/?news=7" target="_blank"&gt;The DDVTech team released the server in version 1.1 the 31th March.&lt;/a&gt; The &lt;a href="http://mistserver.org/index.php?title=Mistserver_Changelog" target="_blank"&gt;changelog&lt;/a&gt; is available too.&lt;/p&gt;
&lt;p&gt;Some important formats were updated in this …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2012/12/mistserver.png"&gt;&lt;img src="/images/2012/12/mistserver.png" class="alignleft wp-image-1087" width="151" height="151" alt="mistserver" /&gt;&lt;/a&gt;I made last year a post to introduce a new streaming server : &lt;a href="https://www.alkannoide.com/2012/12/10/mistserver-a-new-multimedia-streaming-server-first-overview/" title="Mistserver – a new multimedia streaming server – First overview"&gt;MistServer&lt;/a&gt;. From this article, I follow all the updates made by the team. &lt;a href="http://mistserver.org/?news=7" target="_blank"&gt;The DDVTech team released the server in version 1.1 the 31th March.&lt;/a&gt; The &lt;a href="http://mistserver.org/index.php?title=Mistserver_Changelog" target="_blank"&gt;changelog&lt;/a&gt; is available too.&lt;/p&gt;
&lt;p&gt;Some important formats were updated in this new version : HLS and Smooth Streaming, HTTP Progressive. They added too MPEG TS protocol. The interface get some updates too for a better management. And the most important, the server gets many improvements.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;&lt;!--more--&gt;The interface&lt;/h2&gt;
&lt;p&gt;The main update on the interface is for the protocol section. The &lt;strong&gt;Limits&lt;/strong&gt; are now only available in the LTS (you need to buy it, but it's only 299€).&lt;/p&gt;
&lt;p&gt;The list of the protocols available is more cleanest.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2013/04/protocol_index.png"&gt;&lt;img src="/images/2013/04/protocol_index.png" class="aligncenter wp-image-1374" width="641" height="192" alt="protocol_index" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To add or edit a protocol, you will get a specific form. You can choose HTTP or HTTP based protocol, RTMP and TS. We will see the different protocols below.&lt;/p&gt;
&lt;h2&gt;&lt;a href="/images/2013/04/protocol_edit.png"&gt;&lt;img src="/images/2013/04/protocol_edit.png" width="642" height="179" alt="protocol_edit" /&gt;&lt;/a&gt;Formats supported&lt;/h2&gt;
&lt;p&gt;In this version,  new formats are now supported or the performance to deliver was improved.  MistServer interface is very easy to use and manage if you want to make a try. For the HTTP based protocol, you need to create first a HTTP protocol on a specific interface and port.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP Dynamic Streaming&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This format was already available in previous version, but the template of the url changed :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;&lt;span class="k"&gt;dynamic&lt;/span&gt;&lt;span class="o"&gt;/[&lt;/span&gt;&lt;span class="n"&gt;stream_name&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;&lt;span class="n"&gt;manifest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;f4m&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can test the content with &lt;a href="http://www.opensourcemediaframework.com/"&gt;an OSMF player.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP Smooth Streaming&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Microsoft's protocol works now well with the last version. I tested it 3 months ago but the video doesn't stream well (lags, buffering, etc...). It's now fixed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;&lt;span class="n"&gt;smooth&lt;/span&gt;&lt;span class="o"&gt;/[&lt;/span&gt;&lt;span class="n"&gt;stream_name&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ism&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Manifest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is a &lt;a href="http://player.smooth.vertigo.com"&gt;distant Smooth player&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP Live Streaming&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This format is used by the iOS devices (iPhone / iPad / iPod) and by some Android devices.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;&lt;span class="n"&gt;hls&lt;/span&gt;&lt;span class="o"&gt;/[&lt;/span&gt;&lt;span class="n"&gt;stream_name&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;&lt;span class="k"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;m3u8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can test your content with an Quicktime player or a &lt;a href="http://www.videolan.org/vlc/"&gt;VLC player&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This format is currently in progress. The dev team is improving the performance of this format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP Progressive&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With MistServer, you can deliver too the content via HTTP Progressive download. You just need to call the movie as a FLV file or MP3 file (for audio only).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/[&lt;/span&gt;&lt;span class="n"&gt;stream_name&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;flv&lt;/span&gt;
&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;ip_address&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/[&lt;/span&gt;&lt;span class="n"&gt;stream_name&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mp3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can read flv with a Flash based player. Or, &lt;a href="https://groups.google.com/d/msg/mistserver/eL_5FBhDvWE/gdr6LMCfXVwJ"&gt;I read a specific trick&lt;/a&gt; (on Mist mailing list) for Android, you just make a \&amp;lt;a&amp;gt; link pointing to the flv. Android detects MimeType and suggests one of the player.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RTMP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RTMP is a format provided by Adobe. You can read RTMP stream with some players.&lt;br&gt;
In MistServer interface, add a new protocol RTMP. By default, the port is 1935.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;rtmp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="cm"&gt;/*/[streamname]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;TS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As the CTO of DDVTech told me, TS is a raw stream. You can deliver a single stream once you are connected to. In the interface, you need to provide which stream you want to deliver.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nl"&gt;tcp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//[&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;]/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can try the stream with VLC for example.&lt;/p&gt;
&lt;p&gt;To conclude, this version makes available some good functionalities and the team help us quickly on the different communication channels (GoogleGroup, IRC). To avoid the load, we can make some optimization in the architecture based on Mist. We will see it in a next post. Have fun when you test it !&lt;/p&gt;
&lt;p&gt;Update 18/04/2013 : DDVTech &lt;a href="http://mistserver.org/?news=8"&gt;published a version 1.1.1&lt;/a&gt; with some bug fixes (&lt;a href="http://mistserver.org/index.php?title=Mistserver_Changelog"&gt;changelog&lt;/a&gt;).&lt;/p&gt;</content><category term="Analyse, Streaming server, Vidéo"/><category term="mistserver"/><category term="streaming"/></entry><entry><title>REST cookbook</title><link href="https://www.alkannoide.com/2013/03/08/rest-cookbook/" rel="alternate"/><published>2013-03-08T10:53:00+01:00</published><updated>2013-03-08T10:53:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-03-08:/2013/03/08/rest-cookbook/</id><summary type="html">&lt;p&gt;A new small blog post where I sticked informations or links about &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Rest&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Restful&lt;/a&gt; :a style of architecture for distributed softwares. This post will be updated each time I have new links.&lt;/p&gt;
&lt;p&gt;Restful is stateless. The main goals of Restful architecture are scalability, availability and agnotiscs technologies between software …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A new small blog post where I sticked informations or links about &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Rest&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Restful&lt;/a&gt; :a style of architecture for distributed softwares. This post will be updated each time I have new links.&lt;/p&gt;
&lt;p&gt;Restful is stateless. The main goals of Restful architecture are scalability, availability and agnotiscs technologies between software (via an common interface). A new Internet draft is out, it names &lt;a href="http://tools.ietf.org/html/draft-williams-http-rest-auth-00"&gt;RESTful Authentication Pattern&lt;/a&gt; and will help to design your architecture.&lt;/p&gt;
&lt;p&gt;If you will deploy this type of architecture, you can read this slideshare which give &lt;a href="http://blog.apigee.com/detail/slides_for_restful_api_design_second_edition_webinar/"&gt;best practices to design API&lt;/a&gt; (a webinar is available too). To design a Restful architecture, you need to &lt;a href="http://redrata.com/restful-uri-design/"&gt;design your URI&lt;/a&gt;. There is another good document made by &lt;a href="http://www.apigee.com"&gt;Apigee&lt;/a&gt; : &lt;a href="http://info.apigee.com/Portals/62317/docs/web%20api.pdf"&gt;Web API Design&lt;/a&gt; - Crafting interfaces that Developers love [PDF file]&lt;/p&gt;
&lt;p&gt;Here is some examples of API architectures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="line-height: 16px;"&gt;&lt;a href="http://techblog.netflix.com/2013/01/optimizing-netflix-api.html"&gt;Optimizing the Netflix API&lt;/a&gt;&lt;br&gt;
  &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To conclude, there is a tool to assist you on your development : &lt;a href="http://code.google.com/p/rest-client/"&gt;Rest-client&lt;/a&gt;. It's a Java app (so cross-platform) to test your Restful webservices.&lt;/p&gt;</content><category term="Analyse, Développement web, SOA"/><category term="api"/><category term="rest"/><category term="soa"/></entry><entry><title>Release of cloud services to manage media contents</title><link href="https://www.alkannoide.com/2013/02/12/release-of-cloud-services-to-manage-media-contents/" rel="alternate"/><published>2013-02-12T11:55:00+01:00</published><updated>2013-02-12T11:55:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-02-12:/2013/02/12/release-of-cloud-services-to-manage-media-contents/</id><summary type="html">&lt;p&gt;The beginning of this year 2013 is full of news in the transcoding cloud world. The two main platforms announced the release of their own solutions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://techcrunch.com/2013/01/22/windows-azure-media-services-opens-up-adds-new-platform-for-developers/"&gt;Microsoft with Azure Media Services&lt;/a&gt; (the 22th of January)&lt;/li&gt;
&lt;li&gt;one week later &lt;span style="line-height: 16px;"&gt;&lt;a href="http://aws.typepad.com/aws/2013/01/amazon-elastic-transcoder.html"&gt;Amazon with Elastic Transcoder&lt;/a&gt; (the 29th of January)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I made some posts …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The beginning of this year 2013 is full of news in the transcoding cloud world. The two main platforms announced the release of their own solutions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://techcrunch.com/2013/01/22/windows-azure-media-services-opens-up-adds-new-platform-for-developers/"&gt;Microsoft with Azure Media Services&lt;/a&gt; (the 22th of January)&lt;/li&gt;
&lt;li&gt;one week later &lt;span style="line-height: 16px;"&gt;&lt;a href="http://aws.typepad.com/aws/2013/01/amazon-elastic-transcoder.html"&gt;Amazon with Elastic Transcoder&lt;/a&gt; (the 29th of January)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I made some posts to introduce Azure Media Services (&lt;a href="https://www.alkannoide.com/2012/08/24/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-1/" title="Microsoft Azure Media Services – How to encode in the Azure Cloud – Part 1"&gt;part 1&lt;/a&gt;, &lt;a href="https://www.alkannoide.com/2012/09/12/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-2/" title="Microsoft Azure Media Services – How to encode in the Azure Cloud – Part 2"&gt;part 2&lt;/a&gt;) available after May  2012. Here is a quick overview to compare those different services.&lt;/p&gt;
&lt;h2&gt;Platform Models&lt;/h2&gt;
&lt;p&gt;Here is a quick overview of each platform models.&lt;/p&gt;
&lt;h3&gt;Amazon Elastic Transcoding&lt;/h3&gt;
&lt;p&gt;&lt;img src="/images/2013/02/elastic_transcode_model_1.png" class="size-full wp-image-1326 alignnone" width="547" height="374" alt="elastic_transcode_platform" /&gt;&lt;/p&gt;
&lt;h3&gt;Azure Media Services&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2013/02/MediaServicesArch.png"&gt;&lt;img src="/images/2013/02/MediaServicesArch.png" class="alignleft size-full wp-image-1327" width="600" height="400" alt="Media Services Architecture" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #000000; font-size: 1.8em; line-height: 1.5em;"&gt;Functionnalities&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This table exposes the differents features supported by each solutions.&lt;/p&gt;
&lt;p&gt;[table id=3 /]&lt;/p&gt;
&lt;p&gt;Both solutions give the opportunity to create our own presets but there are also some generic presets available : for iDevices, for mobiles, generic profiles for SD and HD.&lt;/p&gt;
&lt;h2&gt;Pricing&lt;/h2&gt;
&lt;p&gt;Each cloud company applies its own pricing, not based on the same parameters.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2013/02/transcoding_icon.jpg" class="alignright" style="line-height: 24px;" width="60" height="72" alt="Amazon Elastic Transcoding" /&gt;&lt;/p&gt;
&lt;p&gt;On Amazon side, the price is based on output content duration. You have two prices :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;for Standard resolution (less than 720p) : 0,072€ per minute&lt;/li&gt;
&lt;li&gt;for HD (more than 720p) : cost of SD x 2 per minute&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="/images/2012/10/windowsazure.png" class="alignleft" width="100" height="76" alt="windowsazure" /&gt;Microsoft, on the other side, applies on Azure Media Service a pricing on encoded GigaBytes processed. They count input and output datas. The pricing begins at 1,99\$ by GigaBytes up to 5TeraBytes / Month. &lt;a href="http://www.windowsazure.com/en-us/pricing/details/#header-9"&gt;It reduces&lt;/a&gt; when you use more the service. This prices don't include the storage on Amazon S3 or Azure Storage.&lt;/p&gt;
&lt;p&gt;To choose the good one, you need to make a table to compare, it depends of your usage. I will try soon to expose one or more architectures based on those two services to manage video assets. So keep in touch ;-)&lt;/p&gt;</content><category term="Analyse, Cloud, Encodage, Vidéo"/><category term="amazon"/><category term="azure"/><category term="media services"/></entry><entry><title>AWS re:Invent 2012 - selection of interesting media tracks</title><link href="https://www.alkannoide.com/2013/01/18/aws-reinvent-2012-selection-of-interesting-media-tracks/" rel="alternate"/><published>2013-01-18T13:54:00+01:00</published><updated>2013-01-18T13:54:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-01-18:/2013/01/18/aws-reinvent-2012-selection-of-interesting-media-tracks/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2013/01/reInvent.png" style="color: #ff4b33; line-height: 24px;"&gt;&lt;img src="/images/2013/01/reInvent.png" class="wp-image-1264 alignleft" width="147" height="30" alt="reInvent" /&gt;&lt;/a&gt;&lt;br&gt;
The &lt;a href="https://reinvent.awsevents.com/"&gt;Amazon Web Services re:Invent&lt;/a&gt; conference was done in last November at Las Vegas. There was some talks about different applications or different usage of the cloud solution provide by Amazon. I selected 3 of them which can be very interesting and talked about the media processing : the Netflix …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2013/01/reInvent.png" style="color: #ff4b33; line-height: 24px;"&gt;&lt;img src="/images/2013/01/reInvent.png" class="wp-image-1264 alignleft" width="147" height="30" alt="reInvent" /&gt;&lt;/a&gt;&lt;br&gt;
The &lt;a href="https://reinvent.awsevents.com/"&gt;Amazon Web Services re:Invent&lt;/a&gt; conference was done in last November at Las Vegas. There was some talks about different applications or different usage of the cloud solution provide by Amazon. I selected 3 of them which can be very interesting and talked about the media processing : the Netflix architecture, how to scale, etc...&lt;/p&gt;
&lt;h2&gt;Netflix’s Transcoding Transformation&lt;/h2&gt;
&lt;iframe style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://fr.slideshare.net/slideshow/embed_code/15522283?rel=0" height="356" width="427" allowfullscreen frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;

&lt;h2&gt;Scalable Media Processing&lt;/h2&gt;
&lt;iframe style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://fr.slideshare.net/slideshow/embed_code/15423587?rel=0" height="356" width="427" allowfullscreen frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;

&lt;h2&gt;Addressing Security in Media Workflows&lt;/h2&gt;
&lt;iframe style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://fr.slideshare.net/slideshow/embed_code/15493453?rel=0" height="356" width="427" allowfullscreen frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;</content><category term="Cloud, Vidéo"/><category term="aws"/><category term="cloud"/></entry><entry><title>Precision about HTTP streaming format in Adobe Media Server</title><link href="https://www.alkannoide.com/2013/01/04/precision-about-http-streaming-format-in-adobe-media-server/" rel="alternate"/><published>2013-01-04T14:31:00+01:00</published><updated>2013-01-04T14:31:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2013-01-04:/2013/01/04/precision-about-http-streaming-format-in-adobe-media-server/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2012/10/ams.png" class="size-full wp-image-998 alignright" width="80" height="80" alt="ams" /&gt; To begin this new year, I make this post on a subject which can introduce misunderstandings. Previously, Adobe named it streaming server : Flash Media Server (aka FMS) &lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/index.html"&gt;v4.5&lt;/a&gt;. In october 2012, Adobe release a new version and recalled the server: Adobe Media Server (aka AMS) &lt;a href="http://help.adobe.com/en_US/adobemediaserver/devguide/index.html"&gt;v5.0.1&lt;/a&gt;. Some …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2012/10/ams.png" class="size-full wp-image-998 alignright" width="80" height="80" alt="ams" /&gt; To begin this new year, I make this post on a subject which can introduce misunderstandings. Previously, Adobe named it streaming server : Flash Media Server (aka FMS) &lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/index.html"&gt;v4.5&lt;/a&gt;. In october 2012, Adobe release a new version and recalled the server: Adobe Media Server (aka AMS) &lt;a href="http://help.adobe.com/en_US/adobemediaserver/devguide/index.html"&gt;v5.0.1&lt;/a&gt;. Some acronym used in FMS are the same in AMS, but this is not the same "products" (e.g. PHLS). In this post, I will give some input on live streaming format and especially about security applied on.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;HTTP Dynamic Streaming (HDS)&lt;/h2&gt;
&lt;p&gt;Adobe Media Server is abled to stream (and so repack) 3 HDS formats :&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;HTTP Dynamic Streaming (HDS)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This is the common &lt;a href="http://www/images.adobe.com/www.adobe.com/content/dam/Adobe/en/products/hds-dynamic-streaming/pdfs/hds_datasheet.pdf"&gt;HDS&lt;/a&gt; format created by Adobe. A HDS content contains 1 XML based manifest file (.f4m), 1 index file (.f4x) and 1 file contained the fragments (.f4f).&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Protected HTTP Dynamic Streaming (PHDS)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;PHDS adds encryption on the content without using a DRM system like Adobe Access. The content is only encrypted, there is no right management.&lt;/p&gt;
&lt;p&gt;To improve your security, you can use too SWF verification. One or more players are declared in a whitelist on the server and only this players can stream contents.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;HTTP Dynamic Streaming associate to &lt;a href="http://www.adobe.com/products/adobe-access.html"&gt;Adobe Access&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To apply some rights on your content, you apply some rules via a DRM system. The Adobe Access license server is optimized to use with HDS. You need to declare on the server some informations from the license server and which DRM policy you want to use.&lt;/p&gt;
&lt;h2&gt;HTTP Live Streaming (HLS)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.alkannoide.com/2012/12/19/adobe-media-server-setup-phls-live-stream/" title="Adobe Flash Media Server 4.5 – Setup PHLS live stream"&gt;In a previous post&lt;/a&gt;, I talked on the Flash Media Server 4.5 setup, to be more precise on PHLS setup. There is a big difference, so here, forget the formats in FMS ;-) Adobe Media Server is abled to stream 4 HLS formats. The first is the common HLS and 3 others.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Vanilla&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In AMS, Vanilla is the HLS format with an AES-128 encryption applied on the content. You can stream the content with all Quicktime based players (like the player on iOS devices).&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;" mce-mark="1"&gt;Protected HTTP Live Streaming (PHLS)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Here is the main difference between PHLS on FMS and PHLS in AMS. In FMS, PHLS is the HLS with AES. In AMS, PHLS is an encryption on your content without using a DRM system.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;HTTP Live Streaming associate to &lt;a href="http://www.adobe.com/products/adobe-access.html"&gt;Adobe Access&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Like HDS with Adobe Access, you can apply a full DRM solution on HLS. Please notice, this functionality is only available with Adobe Access v4.&lt;/p&gt;
&lt;p&gt;For the two last formats, the content can only be streamed by a specific player provided by Adobe.&lt;/p&gt;
&lt;p&gt;To finish, when you read the documentation on Adobe developer website, be careful you read the doc related to the good version of the streaming server. Some link in AMS 5.0 reported to the FMS 4.5 ;-)&lt;/p&gt;</content><category term="Analyse, Streaming server, Vidéo"/><category term="adobe"/><category term="ams"/><category term="PHDS"/><category term="PHLS"/></entry><entry><title>Adobe Flash Media Server 4.5 - Setup PHLS live stream</title><link href="https://www.alkannoide.com/2012/12/19/adobe-media-server-setup-phls-live-stream/" rel="alternate"/><published>2012-12-19T17:26:00+01:00</published><updated>2012-12-19T17:26:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-12-19:/2012/12/19/adobe-media-server-setup-phls-live-stream/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2012/12/FMS.png"&gt;&lt;img src="/images/2012/12/FMS.png" class="alignleft size-full wp-image-1150" width="80" height="80" alt="FMS" /&gt;&lt;/a&gt;&lt;br&gt;
Here is a How to, the objective is to demonstrate the setup of a PHLS live stream. PHLS means Protected HLS : the custom format of HLS by Adobe. The protection is realized with a AES-128 encryption on the content. To make this configuration, you need a streaming server which will …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2012/12/FMS.png"&gt;&lt;img src="/images/2012/12/FMS.png" class="alignleft size-full wp-image-1150" width="80" height="80" alt="FMS" /&gt;&lt;/a&gt;&lt;br&gt;
Here is a How to, the objective is to demonstrate the setup of a PHLS live stream. PHLS means Protected HLS : the custom format of HLS by Adobe. The protection is realized with a AES-128 encryption on the content. To make this configuration, you need a streaming server which will push content via RTMP. Some live transcoders are available from ElementalLive to ffmpeg. And you need too a &lt;a href="http://www.adobe.com/products/adobe-media-server-family.html"&gt;Adobe Media Server&lt;/a&gt; 4.5 installed to complete this how to.  All I write in this post is available via the&lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/index.html"&gt; FMS documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Setup HLS live stream&lt;/h2&gt;
&lt;p&gt;First, we will push not one, but multiple RTMP streams. Remember, HLS is an adaptive bit rate protocol, so you need to use some bitrate as input. FMS will rewrap the content to the good output. In this case, I will push 4 stream at 200, 400, 600 and 800 kbits/s.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/12/AMS-HLS.png" style="color: #ff4b33; line-height: 24px; font-size: 16px;"&gt;&lt;img src="/images/2012/12/AMS-HLS.png" class="aligncenter size-full wp-image-1160" width="738" height="184" alt="AMS-HLS" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But where do we push the content ? Here is the template url :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;rtmp://&lt;em&gt;ams_address&lt;em&gt;/livepkgr/&lt;/em&gt;stream_name&lt;em&gt;?adbe-live-event=&lt;/em&gt;event_name&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apply this template with the previous data (192.168.0.2 is the address of the FMS), we will have :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rtmp://192.168.0.2/livepkgr/200k?adbe-live-event=mylive&lt;/li&gt;
&lt;li&gt;rtmp://192.168.0.2/livepkgr/400k?adbe-live-event=mylive&lt;/li&gt;
&lt;li&gt;rtmp://192.168.0.2/livepkgr/600k?adbe-live-event=mylive&lt;/li&gt;
&lt;li&gt;rtmp://192.168.0.2/livepkgr/800k?adbe-live-event=mylive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok, now we will check if the stream are correctly pushed. Have a look on the FMS administration and go to &lt;strong&gt;Manage Server&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Select the server&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Applications&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/12/AMS-server_input.png"&gt;&lt;img src="/images/2012/12/AMS-server_input.png" class="aligncenter wp-image-1179" width="723" height="479" alt="AMS-server_input" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another solution, to check the content is correctly pushed, is to connect to the server via ssh, in my case (I used Linux), and check if there is some files in &lt;strong&gt;/mnt/applications/livepkgr/events/_definst_/&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;eventname&lt;/em&gt;* * like this kind of files :&lt;br&gt;
&lt;/strong&gt;&lt;em&gt;MTQ1OTkwMzc5OQ=.stream&lt;/em&gt;&lt;strong&gt; or &lt;/strong&gt;&lt;em&gt;NDE3MDY5NTk0OQ=.stream&lt;/em&gt;**&lt;em&gt;.&lt;/em&gt; It can be useful to check the presence of this files in order to manage your live stream platform based on FMS.&lt;/p&gt;
&lt;p&gt;Then, and here is the magic of FMS :-), you can watch you content... to be more precise, you can stream each bitrate separately with the player:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/200k.m3u8&lt;/li&gt;
&lt;li&gt;http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/400k.m3u8&lt;/li&gt;
&lt;li&gt;http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/600k.m3u8&lt;/li&gt;
&lt;li&gt;http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/800k.m3u8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Try the differents URLs in iOS device, Quicktime or VLC and you can be able to view the live content. We have some single bit rate stream and at the beginning of this post, I wanted an adaptive bit rate live stream .&lt;/p&gt;
&lt;p&gt;So finally, we create a m3u8 manifest file which contains our different sub-streams (the manifest for each bit rate).&lt;/p&gt;
&lt;p&gt;[bash]&lt;br&gt;
#EXTM3U&lt;br&gt;
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=200000&lt;br&gt;
http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/200k.m3u8&lt;br&gt;
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000&lt;br&gt;
http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/400k.m3u8&lt;br&gt;
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=600000&lt;br&gt;
http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/600k.m3u8&lt;br&gt;
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000&lt;br&gt;
http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/800k.m3u8&lt;br&gt;
[/bash]&lt;/p&gt;
&lt;p&gt;Put this file at the root folder of FMS and try again with the player (for example the address will be at : http://192.168.0.2/manifest.m3u8). You can view the stream adapt to the band-with available. ;-)&lt;/p&gt;
&lt;h2&gt;Add encryption and setup PHLS live stream&lt;/h2&gt;
&lt;p&gt;We made a big part of the job. We have HLS live stream which is adaptive to the bandwidth. The question is how to encrypt the content and this operation will be made by  Adobe Flash Media Server. To do that, we need to change configuration files. When you change the configuration, you need to restart FMS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;rootinstall/server restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The encryption is possible at 3 different levels :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;server&lt;/li&gt;
&lt;li&gt;application&lt;/li&gt;
&lt;li&gt;event&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An application is composed by different events. The configuration will be applied to every event in application. The file is located :&lt;br&gt;
&lt;em&gt;rootinstall&lt;/em&gt;/applications/&lt;em&gt;application_name&lt;/em&gt;/Application.xml&lt;/p&gt;
&lt;p&gt;At event level, the configuration files are located in:&lt;br&gt;
&lt;em&gt;rootinstall&lt;/em&gt;/applications/&lt;em&gt;application_name&lt;/em&gt;/events/_definst_/&lt;em&gt;event_name&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you want all streams (VoD, Live via RTMP, Live via HTTP) will be encrypted, you do it at the server level. The configuration will be updated in :&lt;br&gt;
&lt;em&gt;rootinstall&lt;/em&gt;/Apache2.2/conf/httpd.conf&lt;/p&gt;
&lt;p&gt;For this example, we apply the configuration on the server level, so in the &lt;em&gt;httpd.conf&lt;/em&gt;. To do it, we will add &lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/WS47c0525fe440307e-685173b213221ed709a-8000.html#WS7a9129987161e101591b686513197183547-8000"&gt;three directives&lt;/a&gt; in the file :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HLSEncryptionScope&lt;/strong&gt; : declare the scope in which the encryption is applied (server or content)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HLSEncryptCipherKeyFile&lt;/strong&gt; : the location of the encrypted key file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HLSEncryptKeyURI&lt;/strong&gt; : the URI added in the manifest file. The file defined in this directive is the same as  HLSEncryptCipherKeyFile directive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is a key file provided when you had installed FMS. It is located in &lt;em&gt;rootinstall/phls/&lt;/em&gt; and named &lt;em&gt;liveevent.bin. &lt;/em&gt;Update the Apache configuration file with the good directive's value. The directive are located in the tag :&lt;/p&gt;
&lt;p&gt;[bash]\&amp;lt;Location /hls-live&amp;gt;[/bash]&lt;/p&gt;
&lt;p&gt;Here is an example&lt;/p&gt;
&lt;p&gt;[bash]&lt;br&gt;
\&amp;lt;Location /hls-live&amp;gt;&lt;br&gt;
HLSHttpStreamingEnabled true&lt;br&gt;
HttpStreamingLiveEventPath "/mnt/applications"&lt;br&gt;
HttpStreamingContentPath "/mnt/applications"&lt;br&gt;
HLSMediaFileDuration 8000&lt;br&gt;
HLSSlidingWindowLength 6&lt;br&gt;
HLSFmsDirPath ".."&lt;br&gt;
HLSM3U8MaxAge 2&lt;br&gt;
HLSTSSegmentMaxAge -1&lt;/p&gt;
&lt;p&gt;HLSEncryptionScope server&lt;br&gt;
HLSEncryptCipherKeyFile "../phls/liveeventkey.bin"&lt;br&gt;
HLSEncryptKeyURI "http://192.168.0.2/hls-key/liveeventkey.bin"&lt;/p&gt;
&lt;p&gt;Options -Indexes FollowSymLinks&lt;br&gt;
\&amp;lt;/Location&amp;gt;&lt;br&gt;
[/bash]&lt;/p&gt;
&lt;p&gt;Ok, save the file. As you can see, the key will the available at this url http://192.168.0.2/hls-key/liveeventkey.bin but if you try to access it, the file is in 404. It is normal, you need to add one thing in the httpd.conf : the hls-key is not defined, so you need to setup it.&lt;/p&gt;
&lt;p&gt;[bash]&lt;br&gt;
\&amp;lt;Location /hls-key&amp;gt;&lt;br&gt;
HLSEncryptHostCipherKey true # if true, this is the cypher key location&lt;br&gt;
HLSFmsDirPath ".." # the folder of the AMS&lt;br&gt;
HLSEncryptKeyRepository "../phls" # the folder where the keys are located&lt;br&gt;
\&amp;lt;/Location&amp;gt;&lt;br&gt;
[/bash]&lt;/p&gt;
&lt;p&gt;Save the file again and restart the server.&lt;/p&gt;
&lt;p&gt;You can now test the stream (http://192.168.0.2/manifest.m3u8) with a HLS player (iOS or Quicktime). To validate the content is encrypted, download one of the substream for example http://192.168.0.2/hls-live/livepkgr/_definst_/mylive/200k.m3u8. You find this line :&lt;/p&gt;
&lt;p&gt;[bash]#EXT-X-KEY:METHOD=AES-128,URI="http://192.168.0.2/hls-key/liveeventkey.bin",IV=0XU806869759IJTE74645447[/bash]&lt;/p&gt;
&lt;p&gt;If you look it, your content is encrypted, you can now enjoy streaming PHLS live :-)&lt;/p&gt;
&lt;p&gt;Sources :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/WSeb6b7485f9649bf23d103e5512e08f3a338-8000.html"&gt;Overview of HTTP Dynamic Streaming and HTTP Live Streaming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/WS47c0525fe440307e-685173b213221ed709a-8000.html"&gt;Protected HTTP streaming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://help.adobe.com/en_US/flashmediaserver/devguide/WSd391de4d9c7bd609a95b3f112a373a7115-7fff.html"&gt;HTTP streaming configuration file reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Streaming server, Vidéo"/><category term="FMS"/><category term="PHLS"/></entry><entry><title>Mistserver - a new multimedia streaming server - First overview</title><link href="https://www.alkannoide.com/2012/12/10/mistserver-a-new-multimedia-streaming-server-first-overview/" rel="alternate"/><published>2012-12-10T14:41:00+01:00</published><updated>2012-12-10T14:41:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-12-10:/2012/12/10/mistserver-a-new-multimedia-streaming-server-first-overview/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2012/12/mistserver.png" title="mistserver" class="wp-image-1087 alignleft" width="151" height="151" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mistserver.org/"&gt;Mistserver&lt;/a&gt; is a open-source multimedia streaming server developed by &lt;a href="http://ddvtech.com/"&gt;DDVTech&lt;/a&gt; a company based in Netherlands. This server will support some technologies : HLS, HDS, Smooth Streaming, RTMP, ...&lt;/p&gt;
&lt;p&gt;For the moment, HDS, RTMP and progressive download are available. You can push too livestream via RMTP. The company have two others solutions : &lt;a href="http://mistserver.org/index.php?title=Miststeward_Introduction"&gt;MistSteward …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2012/12/mistserver.png" title="mistserver" class="wp-image-1087 alignleft" width="151" height="151" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mistserver.org/"&gt;Mistserver&lt;/a&gt; is a open-source multimedia streaming server developed by &lt;a href="http://ddvtech.com/"&gt;DDVTech&lt;/a&gt; a company based in Netherlands. This server will support some technologies : HLS, HDS, Smooth Streaming, RTMP, ...&lt;/p&gt;
&lt;p&gt;For the moment, HDS, RTMP and progressive download are available. You can push too livestream via RMTP. The company have two others solutions : &lt;a href="http://mistserver.org/index.php?title=Miststeward_Introduction"&gt;MistSteward&lt;/a&gt;, &lt;a href="http://mistserver.org/index.php?title=Mistcenter"&gt;MistCenter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;DDVTech positions his solution in a competitive market with some actors : Adobe Media Server, Wowza, Red5, Apache, ...&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/12/mistserver_position.png"&gt;&lt;img src="/images/2012/12/mistserver_position.png" title="mistserver_position" width="678" height="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The solution is open-source so the source code is available on &lt;a href="https://github.com/DDVTECH/"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main idea, in the server architecture, is to have a specific process for each viewer. The main concept design is modularity via some Server API.&lt;/p&gt;
&lt;p&gt;For this first quick overview, I use a Virtual Machine based on Ubuntu 64bits. In the download section of the site, you have some statics binaries. In my case, I compile the library and the server. You need to install some packages before, if they are not already installed :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;apt-get install pkg-config openssl-dev g++
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then, just follow the &lt;a href="http://mistserver.org/index.php?title=Quick_Start"&gt;QuickStart page&lt;/a&gt;. When it's finished, have a look on administration  home page.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/12/home_admin.png"&gt;&lt;img src="/images/2012/12/home_admin.png" title="home_admin" class="aligncenter size-full wp-image-1105" width="640" height="176" /&gt;&lt;/a&gt; Ok, now I will stream a VoD content. To do that, you need to use a FLV file (named here &lt;em&gt;movie.flv&lt;/em&gt;). Please take care when you use the commandline MistFLV2DTSC : you need to have the &lt;strong&gt;\&amp;lt; &amp;gt;&lt;/strong&gt; in your command. The video is piped in the MistFLV2DTSC and then output in the dtsc file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;MistFLV2DTSC &amp;lt; movie.flv &amp;gt; movie.dtsc
MistDTSCFix movie.dtsc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now, add your content in the administration portal. Go in &lt;strong&gt;Protocols&lt;/strong&gt; and add a new one. You can add 2 types of protocols : HTTP or RTMP and associate it to a port. The interface is the network interface you want to use.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/12/mist-protocols.png"&gt;&lt;img src="/images/2012/12/mist-protocols.png" title="mist-protocols" class="size-full wp-image-1121 aligncenter" width="600" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ok, so your server is set-up to stream file on HTTP and port 8080. Without adding one protocol, you can't be able to stream a content.&lt;/p&gt;
&lt;p&gt;Now, add our video (the &lt;em&gt;movie.flv&lt;/em&gt; file). Go in &lt;strong&gt;Stream&lt;/strong&gt;, fill a name and a source (the location of the file in the server). &lt;a href="/images/2012/12/mist-streams.png"&gt;&lt;img src="/images/2012/12/mist-streams.png" title="mist-streams" class="aligncenter size-full wp-image-1124" width="600" height="153" /&gt;&lt;/a&gt;You will see in the server log (available via the Administration interface or via shell)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;STRM&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;New&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;After few moment, the status updates to &lt;strong&gt;Available&lt;/strong&gt;. You can now preview the content, click on &lt;strong&gt;Embed&lt;/strong&gt; then &lt;strong&gt;Preview&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To finish, you can access to your content via differents url for the differents protocols  :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;for FLV : http://server_address:port/movie.flv&lt;/li&gt;
&lt;li&gt;for F4m : http://server_address:port/movie/manifest.f4m&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next step is to set-up a live stream and playing with the server, but this is for another post ;-)&lt;/p&gt;
&lt;p&gt;Update 12th April 2013 : &lt;a href="https://www.alkannoide.com/2013/04/11/mistserver-new-features-for-the-version-1-1/" title="MistServer – new features for the version 1.1"&gt;Release of version 1.1&lt;/a&gt;&lt;/p&gt;</content><category term="Analyse, Streaming server, Vidéo"/><category term="hds"/><category term="HLS"/><category term="HSS"/><category term="mistserver"/><category term="rtmp"/><category term="streaming"/></entry><entry><title>Packaging adaptive bitrate VOD content on the fly</title><link href="https://www.alkannoide.com/2012/10/30/packaging-adaptive-bitrate-vod-content-on-the-fly/" rel="alternate"/><published>2012-10-30T13:40:00+01:00</published><updated>2012-10-30T13:40:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-10-30:/2012/10/30/packaging-adaptive-bitrate-vod-content-on-the-fly/</id><summary type="html">&lt;p&gt;The actual market on the OTT use Adaptive Bit Rate video format over HTTP (&lt;a href="http://www.iis.net/downloads/microsoft/smooth-streaming"&gt;Smooth Streaming&lt;/a&gt;, &lt;a href="https://www.alkannoide.com/2012/01/26/quest-ce-que-le-http-dynamic-streaming/" title="Qu’est ce que le HTTP Dynamic Streaming ?"&gt;HTTP Dynamic Streaming&lt;/a&gt;, &lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" title="La vidéo sur iPhone"&gt;HTTP Live Streaming&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP"&gt;MPEG-DASH&lt;/a&gt; soon) to deliver the content. I make this analyse without integrate the DRMs system which is a big topic itself. Here is an overview of the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The actual market on the OTT use Adaptive Bit Rate video format over HTTP (&lt;a href="http://www.iis.net/downloads/microsoft/smooth-streaming"&gt;Smooth Streaming&lt;/a&gt;, &lt;a href="https://www.alkannoide.com/2012/01/26/quest-ce-que-le-http-dynamic-streaming/" title="Qu’est ce que le HTTP Dynamic Streaming ?"&gt;HTTP Dynamic Streaming&lt;/a&gt;, &lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" title="La vidéo sur iPhone"&gt;HTTP Live Streaming&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Adaptive_Streaming_over_HTTP"&gt;MPEG-DASH&lt;/a&gt; soon) to deliver the content. I make this analyse without integrate the DRMs system which is a big topic itself. Here is an overview of the different format available for each platform.&lt;/p&gt;
&lt;p&gt;[table id=1 /]&lt;/p&gt;
&lt;p&gt;The matrix is a kind complex; all this technologies are multibitrate, so for one asset, you need to transcode for each bitrate. Each technology is different and use his own specification :&lt;/p&gt;
&lt;p&gt;[table id=2 /]&lt;/p&gt;
&lt;p&gt;If I follow the specifications given by the manufacturers (HLS) or if I'm basing on 4 bitrates for the others formats (Smooth Streaming, HDS), I need to transcode more than 20 times the same asset.&lt;/p&gt;
&lt;p&gt;There is an option to avoid and reduce significatively the number of transcoding tasks : the packaging on the fly. This article will only analyse the on-demand side, not the live.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Packaging on the fly is possible. If you look the second table, you will see all format can be encoded in H264 and AAC, so you would streamline the number of transcoding tasks from 20 times to 8. I take 8 because this is the number of bitrate given for the &lt;a href="https://developer.apple.com/library/ios/technotes/tn2224/_index.html#//apple_ref/doc/uid/DTS40009745-CH1-SETTINGSFILES"&gt;iPad encoding video recommandations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main idea is : have one ABR streaming format in input, repack in a server the content in anyone others formats. To do that there is different solutions, I group them by type :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;solution self-hosted&lt;/li&gt;
&lt;li&gt;solution provided by a CDN&lt;/li&gt;
&lt;li&gt;solution provided by a Cloud services&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Solution self-hosted&lt;/h2&gt;
&lt;h3&gt;Adobe Media Server&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/ams.png"&gt;&lt;img src="/images/2012/10/ams.png" title="ams" class="alignleft size-full wp-image-998" width="80" height="80" /&gt;&lt;/a&gt;&lt;a href="http://www.adobe.com/products/adobe-media-server-family.html"&gt;Adobe Media Server&lt;/a&gt; (previously called Flash Media Server - FMS) is the media server provided by Adobe Systems. The real-time packaging was released in FMS 4.5 for HLS and HDS. The input file will be a f4v or mp4 file (&lt;a href="http://help.adobe.com/en_US/adobemediaserver/devguide/WS36639d9e8574ac3f4741126212dea232fa8-8000.2.3.html"&gt;setup to play on-demand MBR&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Currently, there is no support of Smooth Streaming protocol. I don't know if Adobe's team planned it in their roadmap.&lt;/p&gt;
&lt;p&gt;Adobe Media Server v5.0.1 (the last one) can be &lt;a href="http://helpx.adobe.com/adobe-media-server/kb/system-requirements-flash-media-server.html"&gt;installed on multiple platforms&lt;/a&gt; : Linux CentOs, Microsoft Windows Server, Red Hat.&lt;/p&gt;
&lt;h3&gt;Unified Streaming Platform&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/usp.png"&gt;&lt;img src="/images/2012/10/usp.png" title="usp" class="alignright size-full wp-image-999" width="220" height="62" /&gt;&lt;/a&gt;Unified Streaming Platform is provided by CodeShop, a dutch company. For VOD content, the idea is to provide from one unified source (based ISM or F4M files) to every ABR format : HLS, HDS, Smooth Streaming, MPEG-DASH.&lt;/p&gt;
&lt;p&gt;To deploy the platform, you need 2 tools :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mp4split packager which convert mp4 files to fragmented format&lt;/li&gt;
&lt;li&gt;a module for webserver (Apache, Nginx, Lighttpd, IIS) which convert on the fly the  input format to the asked output format.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The fact the solution is based on a module for common webserver, it is very easy to monitor.&lt;/p&gt;
&lt;p&gt;There is a link to view a demo at the bottom of &lt;a href="http://www.unified-streaming.com/"&gt;USP website&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Spectrum&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/seawell.jpeg"&gt;&lt;img src="/images/2012/10/seawell.jpeg" title="seawell" class="size-full wp-image-1002 alignright" width="200" height="42" /&gt;&lt;/a&gt;&lt;a href="http://www.seawellnetworks.com/"&gt;Seawell Networks&lt;/a&gt;, a company based in Portland, Oregon,  develop &lt;a href="http://www.seawellnetworks.com/wp-content/uploads/2012/05/SeaWell-Spectrum2.0-Product-Sheet_updated.pdf"&gt;Spectrum&lt;/a&gt;. You can use 2 format in input : HLS or Smooth Streaming. In the output, the software provide 3 formats : HLS, Smooth Streaming and HDS.&lt;/p&gt;
&lt;p&gt;There are interesting features in this software which are added to the main one :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the advertising insertion dynamically&lt;/li&gt;
&lt;li&gt;the real-time analytics&lt;/li&gt;
&lt;li&gt;management via APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="line-height: 24px;"&gt;Wowza Media Server&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/wowza-media-server.png"&gt;&lt;img src="/images/2012/10/wowza-media-server.png" title="wowza-media-server" class="alignleft wp-image-1013" width="148" height="153" /&gt;&lt;/a&gt;Wowza is a US company based near Denver in Colorado. The first version was released in 2007 to provide a low cost solution compared to FMS. In &lt;a href="http://www.wowza.com/media-server"&gt;Wowza Media Server&lt;/a&gt; version 3, released in 2009, they gave the option to use one format to deliver every devices.&lt;/p&gt;
&lt;p&gt;The server is available on many platforms : Windows Server, all Linux distributions, Unix and Solaris. You can manage it from an administration UI. Some API (based in Java) are available to create and deploy your own add-on.&lt;/p&gt;
&lt;p&gt;If you want more, you can ! Because Wowza give the opportunity to use an add-on which transcode on-the-fly : you have non-H264 input file, the add-on transcode in H264.&lt;/p&gt;
&lt;h2&gt;Solutions provided by CDN&lt;/h2&gt;
&lt;h3&gt;Akamai Sola Vision&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/akamai.gif"&gt;&lt;img src="/images/2012/10/akamai.gif" title="akamai" class="alignright size-full wp-image-1037" width="263" height="148" /&gt;&lt;/a&gt; his own solution of repacking on the fly : &lt;a href="http://www.akamai.com/dl/brochures/stream_packaging_universal_streaming.pdf"&gt;Sola Vision&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The input format is a simple MP4 file. You don't need to package your content in one of the ABR format. The solution prepare the content to be streamed in HLS, HDS or FLV.&lt;/p&gt;
&lt;p&gt;The main advantage is you have a all-in-one solution : content packaging and distribution via the Akamai infrastructure around the world.&lt;/p&gt;
&lt;h3&gt;Limelight Deliver Anywhere&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/deliver.gif"&gt;&lt;img src="/images/2012/10/deliver.gif" title="deliver" class="size-full wp-image-1025 alignleft" width="72" height="72" /&gt;&lt;/a&gt;Limelight announced too their own solution : &lt;a href="http://www.limelight.com/services/delivery-network/deliver-anywhere/"&gt;Deliver Anywhere&lt;/a&gt;. The content is transformed into the good format : Smooth, HLS.&lt;/p&gt;
&lt;p&gt;As Akamai, you can have access to the CDN infrastructure to deliver your content. You can &lt;a href="http://media.limelight.com/documents/LLNW_Deliver_1010.pdf"&gt;access to complementary services&lt;/a&gt; like authentication via MediaVault, Bandwith control, watermarking...&lt;/p&gt;
&lt;h2&gt;Solutions provided by Cloud services&lt;/h2&gt;
&lt;h3&gt;Windows Azure Media Services&lt;/h3&gt;
&lt;p&gt;&lt;a href="/images/2012/10/windowsazure.png"&gt;&lt;img src="/images/2012/10/windowsazure.png" title="windowsazure" class="alignright wp-image-1030" width="143" height="108" /&gt;&lt;/a&gt;Windows Azure Media Services was out in preview at the end of last spring. This solution provide some tools to manage and work on videos. One of the last feature which will be implemented in the cloud solution is called &lt;a href="http://blog.johndeutscher.com/2012/09/29/new-azure-media-servics-blogs/"&gt;Dynamic Remux&lt;/a&gt;. One single MP4 file is stored and the asset can be encrypted dynamically and packaged :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playready for Smooth, DASH and HLS&lt;/li&gt;
&lt;li&gt;AES-128 for HLS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you can see, there is some solution which is available and can respond to your problematic. You can implement one of them in your infrastructure for production or use one of them to manage overload or burst for example.&lt;/p&gt;
&lt;p&gt;You have the name of the tools, it's your job to find the good application. If you need it  ;-)&lt;/p&gt;</content><category term="Analyse, Vidéo"/></entry><entry><title>Microsoft Azure Media Services – How to encode in the Azure Cloud – Part 2</title><link href="https://www.alkannoide.com/2012/09/12/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-2/" rel="alternate"/><published>2012-09-12T14:58:00+02:00</published><updated>2012-09-12T14:58:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-09-12:/2012/09/12/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-2/</id><summary type="html">&lt;p&gt;After the first post which give an overview and explain how set-up a WAMS environment, I continue the discovery of &lt;a href="http://en.wikipedia.org/wiki/Wayne's_World"&gt;WAMS World&lt;/a&gt; (sorry for the pun ;-)). In this post, we will see how we can transform a video from a input format to another format. It's possible to generate multiple …&lt;/p&gt;</summary><content type="html">&lt;p&gt;After the first post which give an overview and explain how set-up a WAMS environment, I continue the discovery of &lt;a href="http://en.wikipedia.org/wiki/Wayne's_World"&gt;WAMS World&lt;/a&gt; (sorry for the pun ;-)). In this post, we will see how we can transform a video from a input format to another format. It's possible to generate multiple output format or to encrypt the video. But we will see it in a next posts.&lt;/p&gt;
&lt;p&gt;First of all, we need to understand the different terms we will use in WAMS. In my example, I want to obtain this workflow :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;create an &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277"&gt;asset&lt;/a&gt; : an asset is an entity which contains all informations on the video (metadata, ...)&lt;/li&gt;
&lt;li&gt;upload a file in blob storage and associate to the asset&lt;/li&gt;
&lt;li&gt;apply a &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277"&gt;job&lt;/a&gt; on the asset. A job is composed by one or more &lt;a href="http://msdn.microsoft.com/en-us/library/hh974286"&gt;tasks&lt;/a&gt;. A task is an action : eg:  encoding with protection. To run the task, we use a &lt;a href="http://msdn.microsoft.com/en-us/library/hh974283"&gt;MediaProcessor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;after the job completed, deliver the video via the Azure CDN.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Create an asset&lt;/h2&gt;
&lt;p&gt;As I said previously, the AMS is based on REST, so you use HTTP verbs to make an action. Here is the PHP class, I used to make API call (I completed the code &lt;a href="https://www.alkannoide.com/2012/08/24/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-1/" title="Microsoft Azure Media Services – How to encode in the Azure Cloud – Part 1"&gt;given in previous post&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;[php]class Rest{&lt;br&gt;
protected \$strUrl;&lt;br&gt;
protected \$strToken;&lt;br&gt;
protected \$strBody;&lt;br&gt;
public function __construct(){&lt;br&gt;
\$this-&amp;gt;requestToken();&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;private function generateData(\$arrData){&lt;br&gt;
return implode('&amp;amp;', \$arrData);&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function requestToken(){&lt;br&gt;
if (file_exists(TOKEN_STORAGE)){&lt;br&gt;
echo 'Get Token from storage'."\n";&lt;br&gt;
\$data = file_get_contents(TOKEN_STORAGE);&lt;br&gt;
\$arrToken = json_decode(\$data);&lt;br&gt;
if ((filemtime(TOKEN_STORAGE) + \$arrToken-&amp;gt;expires_in) &amp;gt; time()) {&lt;br&gt;
\$this-&amp;gt;strToken = \$arrToken-&amp;gt;access_token;&lt;br&gt;
} else {&lt;br&gt;
echo 'Token expired'."\n";&lt;br&gt;
unlink(TOKEN_STORAGE);&lt;br&gt;
\$this-&amp;gt;requestToken();&lt;br&gt;
}&lt;br&gt;
} else {&lt;br&gt;
echo 'Get new token from API'."\n";&lt;br&gt;
\$arrData = array(&lt;br&gt;
'grant_type=client_credentials',&lt;br&gt;
'client_id='.CLIENT_ID,&lt;br&gt;
'client_secret='.urlencode(ACCESS_KEY),&lt;br&gt;
'scope=urn%3aWindowsAzureMediaServices'&lt;br&gt;
);&lt;br&gt;
\$arrHeader = array(&lt;br&gt;
'Content-length:'.strlen(\$this-&amp;gt;generateData(\$arrData))&lt;br&gt;
);&lt;/p&gt;
&lt;p&gt;\$ch = curl_init();&lt;br&gt;
curl_setopt(\$ch, CURLOPT_URL, TOKEN_URL);&lt;br&gt;
curl_setopt(\$ch, CURLOPT_POSTFIELDS, \$this-&amp;gt;generateData(\$arrData));&lt;br&gt;
curl_setopt(\$ch, CURLOPT_HTTPHEADER, \$arrHeader);&lt;br&gt;
curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);&lt;br&gt;
\$data = curl_exec(\$ch);&lt;br&gt;
curl_close(\$ch);&lt;/p&gt;
&lt;p&gt;\$arrToken = json_decode(\$data);&lt;br&gt;
if (isset(\$arrToken-&amp;gt;error)){&lt;br&gt;
print_r(\$arrToken);&lt;br&gt;
die();&lt;br&gt;
}&lt;br&gt;
\$this-&amp;gt;strToken = \$arrToken-&amp;gt;access_token;&lt;br&gt;
file_put_contents(TOKEN_STORAGE, \$data);&lt;br&gt;
echo 'Token save in storage'."\n";&lt;br&gt;
}&lt;br&gt;
return \$this-&amp;gt;strToken;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function request(\$arrData = array()){&lt;br&gt;
\$ch = curl_init();&lt;br&gt;
\$arrHeader = array(&lt;br&gt;
'x-ms-version:1.0',&lt;br&gt;
'DataServiceVersion:3.0',&lt;br&gt;
'MaxDataServiceVersion:3.0',&lt;br&gt;
'Authorization: Bearer '.\$this-&amp;gt;strToken,&lt;br&gt;
'Content-Type: application/json;odata=verbose',&lt;br&gt;
'Accept: application/json;odata=verbose'&lt;br&gt;
);&lt;br&gt;
echo 'Call API:'.\$this-&amp;gt;strUrl."\n";&lt;br&gt;
curl_setopt(\$ch, CURLOPT_URL, \$this-&amp;gt;strUrl);&lt;br&gt;
curl_setopt(\$ch, CURLOPT_HTTPHEADER, \$arrHeader);&lt;br&gt;
curl_setopt(\$ch, CURLOPT_HEADER, true);&lt;br&gt;
curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);&lt;br&gt;
if (!empty(\$arrData)){&lt;br&gt;
curl_setopt(\$ch, CURLOPT_POSTFIELDS, json_encode(\$arrData));&lt;br&gt;
}&lt;br&gt;
\$data = curl_exec(\$ch);&lt;br&gt;
\$arrInfo = curl_getinfo(\$ch);&lt;br&gt;
curl_close(\$ch);&lt;/p&gt;
&lt;p&gt;list(\$strHeader, \$strBody) = explode("\r\n\r\n", \$data, 2);&lt;/p&gt;
&lt;p&gt;if (\$arrInfo['http_code'] == 301){&lt;br&gt;
if(preg_match('`\s*Location:\s(.+)`i', \$data, \$arrTmp)){&lt;br&gt;
\$arrTmp[1] = trim(\$arrTmp[1]);&lt;br&gt;
Register::getInstance()-&amp;gt;setIndex('base_url', \$arrTmp[1]);&lt;br&gt;
\$this-&amp;gt;strUrl = \$arrTmp[1].\$this-&amp;gt;getVerb();&lt;br&gt;
echo 'Redirection to '.\$this-&amp;gt;strUrl."\n";&lt;br&gt;
\$this-&amp;gt;request(\$arrData);&lt;br&gt;
}&lt;br&gt;
} else {&lt;br&gt;
\$this-&amp;gt;strBody = \$strBody;&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;private function getVerb(){&lt;br&gt;
\$arrUrl = explode('/', \$this-&amp;gt;strUrl);&lt;br&gt;
return array_pop(\$arrUrl);&lt;br&gt;
}&lt;br&gt;
}[/php]&lt;/p&gt;
&lt;p&gt;You can look, the code manages the token, so you only need to make the API call.&lt;/p&gt;
&lt;p&gt;Now, we will create an asset. To do that, we need&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an asset name; in my case : first_sintel_test.&lt;/li&gt;
&lt;li&gt;the URI of the API : https://wamsbluclus001rest-hs.cloudapp.net/API/Assets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We will &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277#create_an_asset"&gt;create an asset with POST verb&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[php]class Asset extends Rest{&lt;/p&gt;
&lt;p&gt;public function __construct(){&lt;br&gt;
parent::__construct();&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function createAsset(\$strName) {&lt;br&gt;
\$strAPIname = 'Assets';&lt;br&gt;
\$this-&amp;gt;strUrl = 'https://wamsbluclus001rest-hs.cloudapp.net/API/'.\$strAPIname;&lt;br&gt;
\$arrCreate = array('Name' =&amp;gt; \$strName);&lt;br&gt;
\$this-&amp;gt;request(\$arrCreate);&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;\$obj = new Asset();&lt;br&gt;
\$str = \$obj-&amp;gt;createAsset('first_sintel_test');&lt;/p&gt;
&lt;p&gt;print_r(json_decode(\$str));&lt;br&gt;
[/php]&lt;/p&gt;
&lt;p&gt;Ok, the server answers, the asset was created. Now, we will verified by listing the different asset. The method below will be added to the previous one.&lt;/p&gt;
&lt;p&gt;[php]public function listAsset() {&lt;br&gt;
\$strAPIname = 'Assets';&lt;br&gt;
\$this-&amp;gt;strUrl = Register::getInstance()-&amp;gt;getIndex('base_url').\$strAPIname;&lt;br&gt;
\$this-&amp;gt;request();&lt;br&gt;
return \$this-&amp;gt;strBody;&lt;br&gt;
}&lt;br&gt;
[/php]&lt;/p&gt;
&lt;p&gt;Note the asset ID, you need it after. Now, we call the &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277#list_an_asset"&gt;list Asset API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[php]&lt;br&gt;
\$obj = new Asset();&lt;br&gt;
\$str = \$obj-&amp;gt;listAsset();&lt;/p&gt;
&lt;p&gt;print_r(json_decode(\$str));&lt;br&gt;
[/php]&lt;/p&gt;
&lt;p&gt;Good, we have our first_sintel_test asset with his creation date, his status and &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277#asset_entity_properties"&gt;some others properties&lt;/a&gt;. You can filter to get informations about one asset by adding the ID (a unique identifier).&lt;/p&gt;
&lt;p&gt;Now, we can upload our file in blob storage.&lt;/p&gt;
&lt;h2&gt;Upload a file and associate to asset&lt;/h2&gt;
&lt;p&gt;To upload a file and associate to an asset, you need to give &lt;a href="http://msdn.microsoft.com/en-us/library/hh974297#create_an_accesspolicy"&gt;access via policies&lt;/a&gt; (time duration and permission: read, write, delete,...). You can create the policy, the process is the same like the Asset creation. Note the access ID, you need it after.&lt;/p&gt;
&lt;p&gt;[php]&lt;br&gt;
\$obj = new AccessPolicy();&lt;br&gt;
\$str = \$obj-&amp;gt;createAssetPolicy('sintel_policy', 30, 2);&lt;br&gt;
print_r(json_decode(\$str));&lt;br&gt;
[/php]&lt;/p&gt;
&lt;p&gt;We have now a policy to upload the file, we have to get a URL path to upload by created a &lt;a href="http://msdn.microsoft.com/en-us/library/hh974308"&gt;Locator&lt;/a&gt;. When it will be created, it will available in the Asset list API. To create a Locator, you need 4 informations :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the asset ID (you noted it before)&lt;/li&gt;
&lt;li&gt;the access policy ID (noted it too)&lt;/li&gt;
&lt;li&gt;the start time : this one is to give the access in the future or now (have a look on &lt;a href="http://msdn.microsoft.com/en-us/library/jj129593#upload_a_file"&gt;documentation's tips&lt;/a&gt; to give access immediately).&lt;/li&gt;
&lt;li&gt;the type of access (SAS, Origin or Azure CDN)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok, now we can upload the file with &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dd179355.aspx"&gt;Windows Azure Storage Services REST API&lt;/a&gt;. You can check that your video was uploaded correctly via the Azure Portal : Storage -&amp;gt; Select your storage -&amp;gt; Containers and you can see it :&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/09/storage-container1.jpg"&gt;&lt;img src="/images/2012/09/storage-container1.jpg" title="storage-container" class="alignleft size-full wp-image-930" width="700" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, before process the video we need to &lt;a href="http://msdn.microsoft.com/en-us/library/hh974277#publish_an_asset"&gt;publish the asset&lt;/a&gt;. Take care on the Content-length header's value, it needs to be set at 0. I make a little update on the code.&lt;/p&gt;
&lt;p&gt;[php]&lt;br&gt;
public function request(\$arrData = array(), \$strTypePost = false){&lt;br&gt;
....&lt;br&gt;
echo 'Call API:'.\$this-&amp;gt;strUrl."\n";&lt;br&gt;
if (\$strTypePost &amp;amp;&amp;amp; empty(\$arrData)) {&lt;br&gt;
curl_setopt(\$ch, CURLOPT_CUSTOMREQUEST, 'POST');&lt;br&gt;
\$arrHeader[] = 'Content-Length: 0';&lt;br&gt;
}&lt;br&gt;
curl_setopt(\$ch, CURLOPT_URL, \$this-&amp;gt;strUrl);&lt;br&gt;
....&lt;br&gt;
\$this-&amp;gt;strUrl = \$arrTmp[1].\$this-&amp;gt;getVerb();&lt;br&gt;
echo 'Redirection to '.\$this-&amp;gt;strUrl."\n";&lt;br&gt;
\$this-&amp;gt;request(\$arrData, \$strTypePost);&lt;br&gt;
....&lt;br&gt;
}[/php]&lt;/p&gt;
&lt;p&gt;Then, you will receive a 204 header code.&lt;/p&gt;
&lt;h2&gt;Create a job&lt;/h2&gt;
&lt;p&gt;Ok, now, we have the asset and the file. But, in which format do we want to transcode ? Microsoft give us &lt;a href="http://msdn.microsoft.com/en-us/library/hh973619"&gt;a list of presets&lt;/a&gt; to make Task on WAMS : transcode in differents commons formats (for example iOS), apply protection (via PlayReady DRM) or rewrap contents from Smooth to HLS. I choose this preset : &lt;em&gt;H.264 iPod Classic / Nano. &lt;/em&gt;We can apply multiple tasks on an asset, but we will this it in a next post.&lt;/p&gt;
&lt;p&gt;Let's go to create our first job and apply a task preset.&lt;/p&gt;
&lt;p&gt;[php]class Jobs extends Rest{&lt;/p&gt;
&lt;p&gt;public function __construct(){&lt;br&gt;
\$this-&amp;gt;requestToken();&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function listJobs(){&lt;br&gt;
\$strAPIname = 'Jobs';&lt;br&gt;
\$this-&amp;gt;strUrl = Register::getInstance()-&amp;gt;getIndex('base_url').\$strAPIname;&lt;br&gt;
\$this-&amp;gt;request();&lt;br&gt;
return \$this-&amp;gt;strBody;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function createJob(\$strName, \$strAssetUri, \$strConfig, \$strProcessor, \$strTaskBody) {&lt;br&gt;
\$strAPIname = 'Jobs';&lt;br&gt;
\$this-&amp;gt;strUrl = Register::getInstance()-&amp;gt;getIndex('base_url').\$strAPIname;&lt;/p&gt;
&lt;p&gt;\$objMedia = new stdClass();&lt;br&gt;
\$objMedia-&amp;gt;__metadata-&amp;gt;uri = \$strAssetUri;&lt;/p&gt;
&lt;p&gt;\$objTask = new stdClass();&lt;br&gt;
\$objTask-&amp;gt;Configuration = \$strConfig;&lt;br&gt;
\$objTask-&amp;gt;MediaProcessorId = \$strProcessor;&lt;br&gt;
\$objTask-&amp;gt;TaskBody = \$strTaskBody;&lt;/p&gt;
&lt;p&gt;\$arrCreate = new stdClass();&lt;br&gt;
\$arrCreate-&amp;gt;Name = \$strName;&lt;br&gt;
\$arrCreate-&amp;gt;InputMediaAssets[] = \$objMedia;&lt;br&gt;
\$arrCreate-&amp;gt;Tasks[] = \$objTask;&lt;/p&gt;
&lt;p&gt;\$this-&amp;gt;request(\$arrCreate);&lt;br&gt;
return \$this-&amp;gt;strBody;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;public function cancelJob(\$assetId) {&lt;br&gt;
\$strAPIname = 'CancelJob?jobid=';&lt;/p&gt;
&lt;p&gt;\$this-&amp;gt;strUrl = Register::getInstance()-&amp;gt;getIndex('base_url').\$strAPIname."'".urlencode(\$assetId)."'";&lt;/p&gt;
&lt;p&gt;\$this-&amp;gt;request();&lt;br&gt;
return \$this-&amp;gt;strBody;&lt;br&gt;
}&lt;br&gt;
}[/php]&lt;/p&gt;
&lt;p&gt;This class provides methods to list, create and cancel a job. Here is a API creation call :&lt;/p&gt;
&lt;p&gt;[php]&lt;br&gt;
\$objJob = new Jobs();&lt;br&gt;
\$str = \$objJob-&amp;gt;createJob('EncoreSecondSintel', \$assetUri, \$strConf, \$strProcess, \$strTaskBody);&lt;br&gt;
print_r(json_decode(\$str));&lt;br&gt;
[/php]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;\$assetUri&lt;/em&gt; is given when you create the asset, &lt;em&gt;\$strConf&lt;/em&gt; is the preset we choose (the string &lt;em&gt;H.264 iPod Classic / Nano&lt;/em&gt;), &lt;em&gt;\$strTaskBody&lt;/em&gt; is a XML string :&lt;/p&gt;
&lt;p&gt;[xml]\&amp;lt;?xml version="1.0" encoding="utf-16"?&amp;gt;&lt;br&gt;
\&amp;lt;taskBody&amp;gt;&lt;br&gt;
\&amp;lt;inputAsset&amp;gt;JobInputAsset(0)\&amp;lt;/inputAsset&amp;gt;&lt;br&gt;
\&amp;lt;outputAsset&amp;gt;JobOutputAsset(0)\&amp;lt;/outputAsset&amp;gt;&lt;br&gt;
\&amp;lt;/taskBody&amp;gt;[/xml]&lt;/p&gt;
&lt;p&gt;There is a last parameter : &lt;em&gt;\$strProcess&lt;/em&gt;. This is the ID of the MediaProcessor we want to use. There is 4 types of &lt;a href="http://msdn.microsoft.com/en-us/library/hh974283"&gt;MediaProcessors&lt;/a&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Storage Decryption&lt;/li&gt;
&lt;li&gt;Windows Azure Media Encoder&lt;/li&gt;
&lt;li&gt;MP4 to Smooth Streams Task&lt;/li&gt;
&lt;li&gt;PlayReady Protection Task&lt;/li&gt;
&lt;li&gt;Smooth Streams to HLS Task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In our case, we are using the Windows Azure Media Encoder, so apply the associated ID give by the MediaProcessor API on the &lt;em&gt;\$strProcess&lt;/em&gt; param.&lt;/p&gt;
&lt;p&gt;Ok, now we can create a Job. The &lt;a href="http://msdn.microsoft.com/en-us/library/5100ddd7-92ff-4c37-84d2-4f84fee250a7#job_entity_properties"&gt;Job entity&lt;/a&gt; have different properties :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Job ID&lt;/li&gt;
&lt;li&gt;Time datas (creation, end of task, running duration,...)&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Tasks details. This parameter provide us some additionnals informations like the performance :&lt;/li&gt;
&lt;/ul&gt;
&lt;table data-cellspacing="0" data-cellpadding="0"&gt;
&lt;colgroup&gt;
&lt;col style="width: 100%" /&gt;
&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td data-valign="middle"&gt;EncodeTime: 00:00:20.9047240&lt;br /&gt;
Avg CPU Load: 70.3%  Avg Active Core: 3.9/4&lt;br /&gt;
Download: 00:00:02.1264505&lt;br /&gt;
Upload: 00:00:09.4015013&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Great, the job is running, we can follow the progression with the listJobs() method.&lt;/p&gt;
&lt;p&gt;When the job is done, the movie is on blob storage in Azure. There is few solutions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;download the movie&lt;/li&gt;
&lt;li&gt;publish the movie on the Azure CDN (for streaming)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In our case, we will download the movie with  &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/dd179355.aspx"&gt;Windows Azure Storage Services REST API&lt;/a&gt;.  After few seconds (or minutes it depends on your movie size), you will have the video on your local storage and view it.&lt;/p&gt;
&lt;p&gt;To finish :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the transfert (upload/download : on/from Azure and from AzureStorage to MediaService instances)  on the differents files seems to take more time than the transcoding process&lt;/li&gt;
&lt;li&gt;for a good usage, you need to understand all the entities available and how they will be implemented&lt;/li&gt;
&lt;li&gt;there is many possibilities, so don't hesitate to test the multiple combinaison you think. I will make other(s) post(s) on this subject.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Cloud, Encodage, Vidéo"/></entry><entry><title>Microsoft Azure Media Services - How to encode in the Azure Cloud - Part 1</title><link href="https://www.alkannoide.com/2012/08/24/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-1/" rel="alternate"/><published>2012-08-24T15:25:00+02:00</published><updated>2012-08-24T15:25:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-08-24:/2012/08/24/microsoft-azure-media-services-how-to-encode-in-the-azure-cloud-part-1/</id><summary type="html">&lt;p&gt;I open a serie of posts which will talk about this solution. Microsoft announced at the end of spring the preview of &lt;a href="https://www.windowsazure.com/en-us/develop/net/how-to-guides/media-services/#what-are"&gt;Windows Azure Media Services&lt;/a&gt;. WAMS form an extensible media platform that integrates the best of the Microsoft Media Platform and third-party media components in Windows Azure.&lt;/p&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;WAMS …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I open a serie of posts which will talk about this solution. Microsoft announced at the end of spring the preview of &lt;a href="https://www.windowsazure.com/en-us/develop/net/how-to-guides/media-services/#what-are"&gt;Windows Azure Media Services&lt;/a&gt;. WAMS form an extensible media platform that integrates the best of the Microsoft Media Platform and third-party media components in Windows Azure.&lt;/p&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;WAMS can transform movie in differents formats and codecs :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supported video and audio codecs:&lt;/li&gt;
&lt;li&gt;H.264 High, Main and Baseline Profiles&lt;/li&gt;
&lt;li&gt;AAC-LC&lt;/li&gt;
&lt;li&gt;HE-AAC&lt;/li&gt;
&lt;li&gt;VC-1 (Windows Media Video 9) Simple, Main and Advanced Profiles&lt;/li&gt;
&lt;li&gt;Windows Media Audio Standard&lt;/li&gt;
&lt;li&gt;Windows Media Audio Professional&lt;/li&gt;
&lt;li&gt;Supported format conversions:&lt;/li&gt;
&lt;li&gt;ISO MP4 (.mp4) to Smooth Streaming File Format (PIFF 1.3) (.ismv; .isma)&lt;/li&gt;
&lt;li&gt;Smooth Streaming File Format (PIFF) to Apple HTTP Live Streaming (.msu8, .ts)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the moment, you can only make VoD video.&lt;br&gt;
It is already possible to encrypt your content (via PlayReady DRM). You can manage it via &lt;a href="http://msdn.microsoft.com/en-us/library/hh973613"&gt;.NET&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/hh973618"&gt;REST API&lt;/a&gt;. I'm not a .NET developer, so I will try the solution via API. My code side will be in PHP.&lt;/p&gt;
&lt;h2&gt;Setup&lt;/h2&gt;
&lt;p&gt;First of all, you need to &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/MediaServices/thread/a9d3d1b4-09eb-4a28-ad1d-a1f4cf3123cb"&gt;setup your account to use WAMS&lt;/a&gt;. Currently, the setup is only possible via Powershell, but it will change via the Azure portal. For this step, you need a Windows, but after you can use other OS.&lt;/p&gt;
&lt;p&gt;To connect to Media services, you need two things : 1) an access token provided by Windows Azure Access Control Services (ACS) and 2) the URI of Media Services itself. To get the token, you make a &lt;a href="http://msdn.microsoft.com/en-us/library/hh973616"&gt;OAuth request&lt;/a&gt; with the parameter you get when you setup your account : the access key and the client ID. Different libraries are available in different langage to make this kind of request, for me, I create a simple PHP method to manage it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rest&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;strUrl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;strToken&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;protected&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;strBody&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requestToken&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;file_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN_STORAGE&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Get Token from storage&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;file_get_contents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN_STORAGE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;json_decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;filemtime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN_STORAGE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;expires_in&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;time&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;strToken&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Token expired&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;unlink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN_STORAGE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;requestToken&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Get new token from API&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrData&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;grant_type=client_credentials&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;client_id=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CLIENT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;client_secret=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ACCESS_KEY&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;scope=urn%3aWindowsAzureMediaServices&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrHeader&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Content-length:&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;generateData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrData&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;curl_init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CURLOPT_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;TOKEN_URL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CURLOPT_POSTFIELDS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;generateData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrData&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CURLOPT_HTTPHEADER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrHeader&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CURLOPT_RETURNTRANSFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;curl_exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;curl_close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;json_decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;isset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;strToken&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;arrToken&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;file_put_contents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TOKEN_STORAGE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Token save in storage&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;strToken&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;/php&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The AMS response will contains the token. If you make many calls, I suggest to cache the access token, the expires_in value and the timestamp of the request to avoid unnecessary calls.&lt;/p&gt;
&lt;p&gt;Now, we have a token to access, we can play with the Azure Media Services. We will see it in next posts.&lt;/p&gt;</content><category term="Cloud, Encodage, Vidéo"/></entry><entry><title>Le streaming vidéo adaptatif via HTTP : une réalité...</title><link href="https://www.alkannoide.com/2012/07/16/le-streaming-video-adaptatif-via-http-une-realite/" rel="alternate"/><published>2012-07-16T10:07:00+02:00</published><updated>2012-07-16T10:07:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-07-16:/2012/07/16/le-streaming-video-adaptatif-via-http-une-realite/</id><summary type="html">&lt;p&gt;Dans le domaine de la vidéo en ligne, l'une des principales questions ces dernières années fût de migrer des technologies classiques de streaming (&lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Streaming_Protocol"&gt;RTSP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Media_Server"&gt;MMS&lt;/a&gt;, &lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Messaging_Protocol"&gt;RTMP&lt;/a&gt;...) vers du téléchargement via HTTP. Et ceci pour plusieurs raisons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les coûts moins importants&lt;/li&gt;
&lt;li&gt;le filtrage, les 'anciens' protocoles étaient souvent filtré par les …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Dans le domaine de la vidéo en ligne, l'une des principales questions ces dernières années fût de migrer des technologies classiques de streaming (&lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Streaming_Protocol"&gt;RTSP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Media_Server"&gt;MMS&lt;/a&gt;, &lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Messaging_Protocol"&gt;RTMP&lt;/a&gt;...) vers du téléchargement via HTTP. Et ceci pour plusieurs raisons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les coûts moins importants&lt;/li&gt;
&lt;li&gt;le filtrage, les 'anciens' protocoles étaient souvent filtré par les pare-feux&lt;/li&gt;
&lt;li&gt;HTTP ne demande pas de configuration particulière&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

&lt;span style="font-size: medium;"&gt;&lt;span style="line-height: 24px;"&gt;Ces nouveaux formats deviennent prépondérant notamment dans le domaine des médias.&lt;/span&gt;&lt;/span&gt;

&lt;/div&gt;

&lt;h2&gt;&lt;!--more--&gt;Le principe&lt;/h2&gt;
&lt;p&gt;Le concept se présente de la manière suivante : différents débits de la même vidéo sont segmentés, voire fragmentés (ces morceaux de vidéos sont appelées des chunks). On liste ces différents segments dans différents fichiers manifestes permettant ainsi l’ajustement d’un débit à l’autre par le client. Le lecteur de ce dernier teste ainsi régulièrement l’état du débit et télécharge le meilleur segment suivant dans sa mémoire tampon (comme le montre la figure suivante).&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2012/07/ABR.png" title="ABR" class="aligncenter size-full wp-image-818" width="643" height="222" /&gt;&lt;/p&gt;
&lt;p&gt;L’introduction de ces technologies a permis d’un côté de réduire le coût en bande passante pour la diffusion et la mise en cache de contenu et de l’autre d’optimiser l’expérience utilisateur quelque soit son débit. En revanche, les coûts ont augmentés d’une part en terme de temps de préparation de contenus (notamment en raison des multiples transcodages) ; d’autre part, en terme de stockage de ces mêmes contenus (au lieu d’un seul fichier auparavant, on se retrouve maintenant avec un nombre important de petits fichiers).&lt;/p&gt;
&lt;p&gt;Il est important de noter qu’en réalité, les technologies de streaming en multi-débit ne sont pas des technologies de streaming à part entière comme par exemple RTMP ; elles se basent sur le téléchargement progressif des contenus sur le protocole HTTP.&lt;/p&gt;
&lt;h2&gt;Les formats actuellement disponibles&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;HTTP Live Streaming (HLS)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/07/ios.png"&gt;&lt;img src="/images/2012/07/ios.png" title="ios" class="alignleft wp-image-823" width="65" height="51" /&gt;&lt;/a&gt;Encore à l'état de &lt;a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-08"&gt;brouillon (en version 8)&lt;/a&gt; mais fortement déployée, cette technologie est propulsée par Apple. On rencontre des vidéos HLS notamment sur les plateformes iOS (iPhone, iPad, iPod). On peut également en retrouver sur Android (depuis la version 3.0 : Honeycomb) et sur certains modèles de télévisions connectées. HLS se présente sous la forme de manifestes (fichiers textes .m3u8) et de segments vidéos (.ts). &lt;a href="/images/2012/07/hls.jpeg"&gt;&lt;img src="/images/2012/07/hls.jpeg" title="hls" class="aligncenter size-full wp-image-802" width="294" height="283" /&gt;&lt;/a&gt; Il est possible de chiffrer les segments via l'algorithme AES. Le lien vers la clé de chiffrement est indiqué dans le manifeste. L'un des gros avantages de HLS est qu'il est possible de diffuser les contenus depuis n'importe quel serveurs HTTP (&lt;a href="http://fr.wikipedia.org/wiki/Apache_HTTP_Server/"&gt;Apache&lt;/a&gt;, &lt;a href="http://fr.wikipedia.org/wiki/Nginx"&gt;NGinx&lt;/a&gt;, ...).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: dans le cadre d'une soumission d'applications pour l'Apple Store, il est nécessaire de se fier aux &lt;a href="https://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW8"&gt;spécifications vidéos&lt;/a&gt; en fonction de la plateforme cible.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" title="La vidéo sur iPhone"&gt;J'avais abordé la vidéo sur iPhone dans un précédent billet.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Smooth Streaming&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/07/smooth.png"&gt;&lt;img src="/images/2012/07/smooth.png" title="smooth" class="alignright wp-image-824" width="108" height="93" /&gt;&lt;/a&gt;Smooth Streaming est fortement lié à l'environnement de développement Silverlight de Microsoft. La diffusion de Smooth Streaming s'effectue via des &lt;a href="http://www.iis.net/download/SmoothStreaming"&gt;serveurs IIS intégrant le module Smooth Streaming&lt;/a&gt;. La structure d'une vidéo Smooth Streaming se présente sous la forme suivante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un fichier manifeste ISM&lt;/li&gt;
&lt;li&gt;des fichiers vidéos ISMV correspondant aux différents débits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Smooth Streaming est utilisé via le plug-in Silverlight pour PC/Mac, sur la Xbox et sur les terminaux mobiles Windows Phone 7.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP  Dynamic Streaming (HDS)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/07/HDS.jpeg"&gt;&lt;img src="/images/2012/07/HDS.jpeg" title="HDS" class="size-full wp-image-825 alignleft" width="90" height="90" /&gt;&lt;/a&gt;HDS est supporté par Adobe. Fonctionnant sur le même principe que HLS ou Smooth Streaming, HDS est défini via des fichiers manifestes au format XML : F4M et des segments vidéos au format F4V. &lt;a href="https://www.alkannoide.com/2012/01/26/quest-ce-que-le-http-dynamic-streaming/" title="Qu’est ce que le HTTP Dynamic Streaming ?"&gt;Une présentation de HDS est déjà disponible.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour conclure, il y a cependant un problème à tout cela, il reste toujours 3 formats de diffusion; les impacts sont notamment la multiplicité des encodages des vidéos (et je n'ajoute même pas la gestion de DRM...).&lt;/p&gt;
&lt;p&gt;Une solution pourrait tout de même résoudre cela : &lt;a href="http://dashpg.com/?page_id=25"&gt;MPEG-DASH&lt;/a&gt; (Dynamic Adaptive Streaming over HTTP). Les différents acteurs citées dans l'article participent à sa définition. Si cette nouvelle technologie était appliquée sur l'ensemble des "écrans", une grande partie des problèmes cités disparaîtrait. Une affaire à suivre...&lt;/p&gt;</content><category term="Vidéo"/></entry><entry><title>Organisation des Amazon Web Services</title><link href="https://www.alkannoide.com/2012/06/22/organisation-des-amazon-web-services/" rel="alternate"/><published>2012-06-22T14:16:00+02:00</published><updated>2012-06-22T14:16:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-06-22:/2012/06/22/organisation-des-amazon-web-services/</id><summary type="html">&lt;p&gt;Cette semaine a eu lieu à Paris, l'&lt;a href="http://aws.amazon.com/fr/aws-summit-2012/paris/"&gt;AWS Summit&lt;/a&gt;, premier événement du genre organisé par Amazon en France. Il a reuni 2 à 300 personnes.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/AWS_Summit2012.png"&gt;&lt;img src="/images/2012/06/AWS_Summit2012.png" title="AWS_Summit2012" class="aligncenter size-full wp-image-724" width="600" height="95" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La journée était découpée en deux parties :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la matinée consacrée à une présentation générale ainsi que deux retours d'expérience (Visiware et Sodexo),&lt;/li&gt;
&lt;li&gt;l'après-midi, plus …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Cette semaine a eu lieu à Paris, l'&lt;a href="http://aws.amazon.com/fr/aws-summit-2012/paris/"&gt;AWS Summit&lt;/a&gt;, premier événement du genre organisé par Amazon en France. Il a reuni 2 à 300 personnes.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/AWS_Summit2012.png"&gt;&lt;img src="/images/2012/06/AWS_Summit2012.png" title="AWS_Summit2012" class="aligncenter size-full wp-image-724" width="600" height="95" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La journée était découpée en deux parties :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la matinée consacrée à une présentation générale ainsi que deux retours d'expérience (Visiware et Sodexo),&lt;/li&gt;
&lt;li&gt;l'après-midi, plus technique, a permis de voir plus en détails certains des services proposés par Amazon au travers d'exemple d'architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce billet, je vais reprendre l'organisation des différents services proposés sur AWS. Ils sont au nombre de 30 disponibles sur 5 couches.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;NB: je m'excuse par avance de la qualité des photos...&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Couche 1 : Infrastructure globale d'Amazon Web Services&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2012/06/aws-global-infra.jpg"&gt;&lt;img src="/images/2012/06/aws-global-infra.jpg" title="aws-global-infra" class="aligncenter size-full wp-image-732" width="511" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'infrastructure est organisée en 3 parties:&lt;/p&gt;
&lt;div&gt;

- les **régions**: correspondant aux endroits où se situent les datacenters d'Amazon. [Il en existe actuellement 7](http://docs.amazonwebservices.com/general/latest/gr/rande.html) : 3 aux Etats-Unis, 1 en Europe, 1 en Amérique du Sud, 2 en Asie (en jaune sur la carte).&lt;img src="/images/2012/06/mapzone.png" title="mapzone" class="aligncenter size-full wp-image-731" width="424" height="203" /&gt;
- les **zones de disponibilités** : au sein d'une même région, il est possible de regrouper des instances d'Amazon au sein de zone de disponibilités.[&lt;img src="/images/2012/06/Concepts_Regions_Zones.png" title="Concepts_Regions_Zones" class="aligncenter wp-image-753" width="386" height="262" /&gt;](/images/2012/06/Concepts_Regions_Zones.png)
- les **edges** : ce sont des points d'entrées de CloudFront disponible à travers le monde (en bleu sur la carte)

A noter qu'il existe également une région uniquement disponible au gouvernement américain.

&lt;/div&gt;

&lt;h2&gt;Couche 2 : Réseaux&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2012/06/aws-network-services.jpg"&gt;&lt;img src="/images/2012/06/aws-network-services.jpg" title="aws-network-services" class="aligncenter wp-image-735" width="640" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si vous possédez déjà une infrastructure, il est possible de la connecter via un VPN sur le cloud d'Amazon, permettant aux instances Amazon ainsi d'être sur le réseau privé de l'infrastructure.&lt;/p&gt;
&lt;h2&gt;Couche 3 : Services de calcul de stockages et de base de données&lt;/h2&gt;
&lt;p&gt;C'est sans doute le service le plus connu d'Amazon : &lt;a href="http://aws.amazon.com/fr/ec2/"&gt;Amazon EC2&lt;/a&gt; pour Elastic Compute Cloud, ce dernier correspond une instance disposant d'une capacité de calculs et de traitements.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/compute-serv.jpg"&gt;&lt;img src="/images/2012/06/compute-serv.jpg" title="compute-serv" class="aligncenter size-full wp-image-738" width="510" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lors de l'utilisation de multiple instances EC2, il est possible de gérer la charge entre ces instances via l'&lt;a href="http://aws.amazon.com/fr/elasticloadbalancing"&gt;Elastic Load Balancing&lt;/a&gt; et d'augmenter leur nombre automatiquement via &lt;a href="http://aws.amazon.com/fr/autoscaling"&gt;l'Auto Scaling&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/storage-serv.jpg"&gt;&lt;img src="/images/2012/06/storage-serv.jpg" title="storage-serv" class="aligncenter size-full wp-image-741" width="510" height="316" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Côté système de stockage, un autre service connu d'Amazon &lt;a href="http://aws.amazon.com/fr/s3/"&gt;Simple Storage Service&lt;/a&gt; (Amazon S3). Il est conçu pour fournir une 99,999999999% de durabilité et 99,99% de disponibilité des objets sur une année donnée et permettant de stocker de 1 à 5 To de données. Ce service est uniquement accessible via HTTP, il est donc tout à fait indiquer pour le stockage de données type média.&lt;/p&gt;
&lt;p&gt;Pour stocker les données hors des instances des EC2, &lt;a href="http://aws.amazon.com/fr/ebs/"&gt;Elastic Block Store&lt;/a&gt; répond à la demande. Un de ces atouts est d'avoir une très haute disponibilité, il est donc fortement recommandé lorsque l'on utilise des bases de données.&lt;/p&gt;
&lt;p&gt;Enfin, &lt;a href="http://aws.amazon.com/fr/storagegateway/"&gt;AWS Storage Gateway&lt;/a&gt; permet d'effectuer des sauvegardes de vos bases (dans votre propre infrastructure par exemple) pour la reprise de services depuis le nuage. L'objectif étant de réaliser une sauvegarde à un instant de vos données.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/database-serv.jpg"&gt;&lt;img src="/images/2012/06/database-serv.jpg" title="database-serv" class="aligncenter size-full wp-image-744" width="510" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Côté base de données, on pourra au choix utiliser des bases de données relationnelles (MySQL ou Oracle) via &lt;a href="http://aws.amazon.com/fr/rds/"&gt;Amazon RDS&lt;/a&gt; et des bases de données NoSQL via &lt;a href="http://aws.amazon.com/fr/dynamodb/"&gt;Amazon DynamoDB&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Couche 4 : Ecosystème d'application de services&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2012/06/ecosystem-appserv.jpg"&gt;&lt;img src="/images/2012/06/ecosystem-appserv.jpg" title="ecosystem-appserv" class="aligncenter size-full wp-image-745" width="510" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Au dessus des 3 premières couches, il est possible d'installer et d'utiliser les applications.&lt;/p&gt;
&lt;p&gt;Tout un ensemble d'applications sont disponibles depuis la sécurité aux tests en passant par les services de développeurs. Des applications spécifiques sont bien entendus également installables.&lt;/p&gt;
&lt;p&gt;Amazon met à ce sujet à disponible un espace d'achat/vente de services : l'&lt;a href="https://aws.amazon.com/marketplace"&gt;AWS Marketplace&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Couche 5 : Déploiement &amp;amp; Administration&lt;/h2&gt;
&lt;p&gt;Après avoir choisir votre "structure" de services dans le Cloud d'Amazon, vous allez devoir administrer et déployer.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/06/deployement.jpg"&gt;&lt;img src="/images/2012/06/deployement.jpg" title="deployement" class="aligncenter size-full wp-image-746" width="510" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour cela Amazon met à disposition un ensemble de services :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/fr/console/"&gt;AWS Management Console&lt;/a&gt; : c'est la console qui va vous permettre de gérer l'ensemble de vos services Amazon.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/fr/iam/"&gt;AWS Identity and Access Management&lt;/a&gt; (AWS IAM) permettra de gérer l'accès aux services et ressources&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/fr/cloudfront/"&gt;Amazon CloudWatch&lt;/a&gt; est le service de &lt;a href="http://fr.wikipedia.org/wiki/Content_Delivery_Network"&gt;CDN&lt;/a&gt; (Content Delivery Network) qui se base sur l'ensemble des Edges (présenté dans la couche 1)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/fr/cloudformation/"&gt;AWS CloudFormation&lt;/a&gt; facilitera le travail collaboratif entre les développeurs et les administrateurs.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://aws.amazon.com/fr/elasticbeanstalk/"&gt;AWS Elastic Beanstalk&lt;/a&gt; automatisera le déploiement de vos ressources ou applications (via les push sur Git par exemple).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout ceci montre ainsi l'organisation globale des services Amazon. Tous les services n'ont pas été listés ils sont en effet 30 actuellement. AWS est un service sur étagère permettant de sélectionner le ou les outils dont vous avez besoin.&lt;/p&gt;
&lt;p&gt;Dernier point, en créant en compte, il est possible de tester (dans une certaine mesure) une grande partie des services AWS pendant 12mois.&lt;/p&gt;</content><category term="Cloud, Conférence"/></entry><entry><title>FIMS une architecture SOA dans le monde média</title><link href="https://www.alkannoide.com/2012/01/27/fims-une-architecture-soa-dans-le-monde-media/" rel="alternate"/><published>2012-01-27T11:00:00+01:00</published><updated>2012-01-27T11:00:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-27:/2012/01/27/fims-une-architecture-soa-dans-le-monde-media/</id><summary type="html">&lt;p&gt;Afin de répondre à l'émergence de la vidéo sur les nouveaux canaux médias et pour permettre leur diffusion, les  systèmes d'informations permettant le traitement des contenus sont de plus en plus hétérogènes. On voit ainsi différentes technologies au sein d'un même système d'information : pour la capture, la transformation des contenus …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Afin de répondre à l'émergence de la vidéo sur les nouveaux canaux médias et pour permettre leur diffusion, les  systèmes d'informations permettant le traitement des contenus sont de plus en plus hétérogènes. On voit ainsi différentes technologies au sein d'un même système d'information : pour la capture, la transformation des contenus vidéos.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/01/NoSOA2.png"&gt;&lt;img src="/images/2012/01/NoSOA2.png" title="NoSOA" class="size-full wp-image-714 aligncenter" width="277" height="137" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour répondre à cette problématique, une task force s'est mise en place : AMWA-EBU FIMS task force.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2012/01/FIMS.jpg" title="FIMS" class="size-full wp-image-695 aligncenter" width="180" height="100" /&gt; &lt;!--more--&gt;Cela nous fait beaucoup d'acronymes, voici leur explication :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.amwa.tv"&gt;AMWA&lt;/a&gt; : Advanced Media Worklfow Association, cette association a pour mission d'améliorer et développer l'utilisation des standards médias.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tech.ebu.ch"&gt;EBU&lt;/a&gt; : European Broadcasting Union a une mission similaire à l'AMWA en regroupant des européens&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.amwa.tv/ebu/index.php/Main_Page"&gt;FIMS&lt;/a&gt; : Framework for Interoperable Media Service&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le framework FIMS est basé sur une architecture SOA et permet l'interopérabilité entre les différentes entités d'un SI média. Ce framework normalise ainsi leurs échanges en s'intercalant comme moyen de communication.&lt;a href="/images/2012/01/Objectif-FIMS.png"&gt;&lt;img src="/images/2012/01/Objectif-FIMS.png" title="Objectif-FIMS" class="aligncenter size-full wp-image-709" width="691" height="281" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le projet a été présenté pour la première fois en 2011 lors des gros événements du Broadcast : le &lt;a href="http://www.nabshow.com/"&gt;NAB&lt;/a&gt; (à Las Vegas en avril) puis de l'&lt;a href="http://www.ibc.org/"&gt;IBC&lt;/a&gt; (à Amsterdam en septembre). Il est actuellement en version 1.0 et rentre dans sa seconde phase. En plus d'être piloté par l'AMWA et l'EBU, des acteurs importants du monde de la vidéo les ont rejoints  : Sony, Harmonic, BBC. Le &lt;a href="http://wiki.amwa.tv/ebu/index.php/Main_Page"&gt;wiki&lt;/a&gt; regroupe l'ensemble des documents et des ressources liés à ce projet.&lt;/p&gt;</content><category term="SOA, Vidéo"/><category term="fims"/><category term="soa"/></entry><entry><title>Qu'est ce que le HTTP Dynamic Streaming ?</title><link href="https://www.alkannoide.com/2012/01/26/quest-ce-que-le-http-dynamic-streaming/" rel="alternate"/><published>2012-01-26T09:12:00+01:00</published><updated>2012-01-26T09:12:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-26:/2012/01/26/quest-ce-que-le-http-dynamic-streaming/</id><summary type="html">&lt;p&gt;Cet article est une traduction de l'article de &lt;a href="http://www.thekuroko.com/2011/06/articles/what-is-http-dynamic-streaming/" title="What is HTTP Dynamic Streaming ?"&gt;John Crosby : What is HTTP Dynamic Streaming ?&lt;/a&gt; Jusqu'à maintenant, la livraison de contenu vidéo sur HTTP était distribué en téléchargement progressif, ceci signifie que pour lire une partie ou rechercher un endroit spécifique dans la vie, vous devez attendre que cette partie …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Cet article est une traduction de l'article de &lt;a href="http://www.thekuroko.com/2011/06/articles/what-is-http-dynamic-streaming/" title="What is HTTP Dynamic Streaming ?"&gt;John Crosby : What is HTTP Dynamic Streaming ?&lt;/a&gt; Jusqu'à maintenant, la livraison de contenu vidéo sur HTTP était distribué en téléchargement progressif, ceci signifie que pour lire une partie ou rechercher un endroit spécifique dans la vie, vous devez attendre que cette partie se télécharge. Le protocole &lt;a href="http://fr.wikipedia.org/wiki/Real_Time_Messaging_Protocol"&gt;RTMP&lt;/a&gt; permet de réaliser une recherche à n'importe quel endroit du contenu vidéo via streaming, mais requiert une technologie serveur telle que &lt;a href="http://fr.wikipedia.org/wiki/Adobe_Flash_Media_Server"&gt;Flash Media Server&lt;/a&gt; (&lt;a href="http://www.adobe.com/fr/products/flashmediaserver/"&gt;produit Adobe&lt;/a&gt;) pour effectuer cela.&lt;img alt="" src="http://www.veni-video-vici.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" title="Lire la suite…"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2012/01/HTTPStreaming.jpg"&gt;&lt;img src="/images/2012/01/HTTPStreaming.jpg" title="HTTPStreaming" class="aligncenter wp-image-683" width="665" height="293" /&gt;&lt;/a&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;HTTP Dynamic Streaming ou HDS combine HTTP (téléchargement progressif) et RTMP (téléchargement en streaming) permettant de délivrer un contenu vidéo en streaming sur HTTP. Ceci signifie :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une technologie de serveur de streaming n'est pas requise, il est juste nécessaire d'avoir un serveur HTTP (ex Apache)&lt;/li&gt;
&lt;li&gt;Les clients peuvent accéder et commencer à lire un contenu 'instantanément'&lt;/li&gt;
&lt;li&gt;Les clients peuvent rechercher des endroits dans la vidéo qui n'ont pas encore été téléchargés.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…et tout cela sur le protocole HTTP.&lt;/p&gt;
&lt;p&gt;Il y a un certain nombre de choses que vous devez prendre en compte lorsque vous démarrez avec HTTP Dynamic Streaming.&lt;/p&gt;
&lt;p&gt;D'une part, un serveur media pour streamer le contenu n'est pas requis, mais le server Web Apache avec le Module HTTP Origin l'est. Le module HTTP Origin est un module Apache gratuit à l'utilisation fournit par Adobe, et est pré-installé et configuré avec le Flash Media Server quand vous installez le serveur web fourni. L'installation et la configuration du module sera couverte dans un autre article.&lt;/p&gt;
&lt;p&gt;D'autre part, le contenu vidéo devra être 'préparé' pour HTTP Dynamic Streaming avant d'être déployé sur votre serveur. Votre workflow de création de contenu devra être ajusté pour accueillir votre contenu vidéo dans un format de fichier F4F. Il existe un outil, le f4fpackager, qu'Adobe a créé pour faire cela pour vous.&lt;/p&gt;
&lt;p&gt;La préparation de ces contenus fera l'objet d'un prochain article.&lt;/p&gt;</content><category term="Vidéo"/><category term="hds"/><category term="http dynamic streaming"/><category term="rtmp"/></entry><entry><title>Changement de thème</title><link href="https://www.alkannoide.com/2012/01/24/changement-de-theme/" rel="alternate"/><published>2012-01-24T17:13:00+01:00</published><updated>2012-01-24T17:13:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-24:/2012/01/24/changement-de-theme/</id><content type="html">&lt;p&gt;Je trouvais depuis un certain temps que mon blog n'était pas très visible et peu agréable à l'oeil. Un petit rappel du précèdent thème :&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2012/01/ancientheme.png" title="ancientheme" class="aligncenter wp-image-688" width="240" height="134" /&gt;&lt;/p&gt;
&lt;p&gt;J'ai donc décidé après une longue recherche de mettre en place le nouveau thème actuellement présent sur le site.&lt;/p&gt;
&lt;p&gt;N'hésitez pas pour vos remarques.&lt;/p&gt;</content><category term="Hors Sujet"/></entry><entry><title>FFmpeg, le couteau suisse gratuit de la vidéo</title><link href="https://www.alkannoide.com/2012/01/23/ffmpeg-le-couteau-suisse-gratuit-de-la-video/" rel="alternate"/><published>2012-01-23T16:01:00+01:00</published><updated>2012-01-23T16:01:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-23:/2012/01/23/ffmpeg-le-couteau-suisse-gratuit-de-la-video/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2012/01/ffmpeg.jpg"&gt;&lt;img src="/images/2012/01/ffmpeg.jpg" title="ffmpeg" class="alignleft wp-image-659" width="180" height="101" /&gt;&lt;/a&gt;Je travaille avec le logiciel &lt;a href="http://ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;. C'est un outil en ligne de commande utilisé comme base pour beaucoup d'outils plus haut niveau dans le domaine de l'encodage vidéo. L'application est également fortement utilisé par des purs players de la vidéos sur la toile. FFmpeg est complété par une ensemble de …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2012/01/ffmpeg.jpg"&gt;&lt;img src="/images/2012/01/ffmpeg.jpg" title="ffmpeg" class="alignleft wp-image-659" width="180" height="101" /&gt;&lt;/a&gt;Je travaille avec le logiciel &lt;a href="http://ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;. C'est un outil en ligne de commande utilisé comme base pour beaucoup d'outils plus haut niveau dans le domaine de l'encodage vidéo. L'application est également fortement utilisé par des purs players de la vidéos sur la toile. FFmpeg est complété par une ensemble de librairies : libavcodec, libavformat ou encore libx264 pour le &lt;a href="http://www.videolan.org/developers/x264.html"&gt;H.264&lt;/a&gt; dont je parlerais plus à la fin du billet.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://doc.ubuntu-fr.org/ffmpeg#utilisation"&gt;Commencer sur une bonne base (FR)&lt;/a&gt; tiré de la documentation Ubuntu, il permet de voir les premières commandes. &lt;a href="https://sites.google.com/site/linuxencoding/ffmpeg-tips"&gt;Ce petit manuel&lt;/a&gt; (en anglais) reprend les différentes options de bases possibles.&lt;/p&gt;
&lt;p&gt;Pour aller plus loin, Fabio Sonnati a réalisé 4 articles beaucoup plus poussés. Il est un des experts mondial dans le développement de plateformes média, l'optimisation de la diffusion diffusion et l'encodage des vidéos. Le nom de ces billets veut tout dire : the swiss army knife of Internet Streaming &lt;a href="http://sonnati.wordpress.com/2011/07/11/ffmpeg-the-swiss-army-knife-of-internet-streaming-part-i/"&gt;part 1&lt;/a&gt;, &lt;a href="http://sonnati.wordpress.com/2011/08/08/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-ii/"&gt;part 2&lt;/a&gt;, &lt;a href="http://sonnati.wordpress.com/2011/08/19/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iii/"&gt;part 3&lt;/a&gt;, &lt;a href="http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iv/"&gt;part 4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'encodage au format H.264 représente 99% des vidéos disponibles sur Internet. Lorsque l'on veut travailler sur ce type d'encodage, il est important de connaître les différents options qui sont offertes entre &lt;a href="https://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping"&gt;ffmpeg et la librairie&lt;/a&gt;.&lt;/p&gt;</content><category term="Encodage, Vidéo"/><category term="ffmpeg"/><category term="h264"/></entry><entry><title>HDS - Late Binding Audio avec OSMF</title><link href="https://www.alkannoide.com/2012/01/20/hds-late-binding-audio-avec-osmf/" rel="alternate"/><published>2012-01-20T09:47:00+01:00</published><updated>2012-01-20T09:47:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-20:/2012/01/20/hds-late-binding-audio-avec-osmf/</id><summary type="html">&lt;p&gt;Vous allez me dire, mais qu'est ce que ce titre signifie en réalité ? C'est assez simple, je vais décomposer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;HDS pour &lt;a href="http://www.adobe.com/products/httpdynamicstreaming/"&gt;HTTP Dynamic Streaming&lt;/a&gt; est un protocole de diffusion des vidéos (créé par Adobe). Le principe est similaire au &lt;a href="http://developer.apple.com/resources/http-streaming/"&gt;HTTP Live Streaming&lt;/a&gt; utilisé sur les iPhone et iPad (&lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" title="La vidéo sur iPhone"&gt;j'avais présenté …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Vous allez me dire, mais qu'est ce que ce titre signifie en réalité ? C'est assez simple, je vais décomposer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;HDS pour &lt;a href="http://www.adobe.com/products/httpdynamicstreaming/"&gt;HTTP Dynamic Streaming&lt;/a&gt; est un protocole de diffusion des vidéos (créé par Adobe). Le principe est similaire au &lt;a href="http://developer.apple.com/resources/http-streaming/"&gt;HTTP Live Streaming&lt;/a&gt; utilisé sur les iPhone et iPad (&lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" title="La vidéo sur iPhone"&gt;j'avais présenté ce protocole&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Late Binding Audio : comprenez par là la possibilité d'avoir plusieurs pistes audios associé à un flux vidéo&lt;/li&gt;
&lt;li&gt;&lt;a href="http://osmf.org"&gt;OSMF&lt;/a&gt; pour Open Source Media Framework, un framework Flex utilisé pour la gestion des vidéos.&lt;a href="/images/2012/01/osmf.jpg"&gt;&lt;img src="/images/2012/01/osmf.jpg" title="osmf" class="alignright wp-image-636" style="border-style: initial; border-color: initial;" width="283" height="88" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

&lt;/div&gt;

&lt;p&gt;Mon article est tiré d'&lt;a href="http://www.realeyes.com/blog/2011/07/28/http-dynamic-streaming-part-2-late-binding-audio-using-osmf/"&gt;un article en anglai&lt;/a&gt;s, j'y ajoute cependant quelques points de détails.&lt;/p&gt;
&lt;h2&gt;Récupéré une vidéo&lt;/h2&gt;
&lt;p&gt;Dans un premier temps, vous allez devoir récupérer une vidéo et la préparer dans différents formats. Pour préparer ces vidéos, j'ai utilisé &lt;a href="http://ffmpeg.org/"&gt;ffmpeg&lt;/a&gt; (boîte à outils pour le traitement des vidéos) et transcodé les vidéos en MP4.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la vidéo originale avec l'audio encodé en format FLV ou un format compatible MP4&lt;/li&gt;
&lt;li&gt;la piste audio seule provenant de la vidéo originale également au format FLV ou MP4&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;ffmpeg -i scenes.mp4 -vn -acodec copy -f mp4 scenes-audio1.mp4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;une piste alternative audio, de préférence de même durée que la vidéo originale, encodé de la même manière* *&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;ffmpeg -i scenes2.mp4 -vn -acodec copy -f mp4 scenes-audio2.mp4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Packager la vidéo avec les outils f4fpackager&lt;/h2&gt;
&lt;p&gt;Afin de préparer le contenu, Adobe a rendu disponible un outil : le &lt;a href="http://www.adobe.com/go/httpdynamicstreaming_bits"&gt;FilePackager ou f4fpackager;&lt;/a&gt; disponible sous Linux ou Windows. On effectue un package pour chacune des vidéos&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;f4fpackager&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;scenes1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mp4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;lba&lt;/span&gt;
&lt;span class="nx"&gt;f4fpackager&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;scenes&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;audio1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mp4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;lba&lt;/span&gt;
&lt;span class="nx"&gt;f4fpackager&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;scenes&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;audio2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mp4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;lba&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Vous vous retrouvez maintenant avec les fichiers suivants :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;scenes1.f4m
scenes1Seg1.f4x
scenes1Seg1.f4f
scenes-audio1.f4m
scenes-audio1Seg1.f4x
scenes-audio1Seg1.f4f
scenes-audio2.f4m
scenes-audio2Seg1.f4x
scenes-audio2Seg1.f4f
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Créer le fichier f4m principal&lt;/h2&gt;
&lt;p&gt;Nous allons manipuler le fichier f4m afin de prendre en compte les pistes audios. Pour cela, il faut récupérer dans les balises &lt;em&gt;bootstrapInfo&lt;/em&gt; et &lt;em&gt;media&lt;/em&gt; dans les fichiers &lt;em&gt;scenes-audio1.f4m&lt;/em&gt; et &lt;em&gt;scenes-audio2.f4m&lt;/em&gt; et les copier dans le fichier &lt;em&gt;scenes1.f4m&lt;/em&gt; à la suite de la balise &lt;em&gt;media&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;                AAABS2Fic3QAAAAAAAAADgAAAAPoAAAAAAAEBWoAAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAEIBAAABBmFmcnQAAAAAAAAD6AAAAAAPAAAAAQAAAAAAAAAAAAAQaAAAAAIAAAAAAAAQkAAAETAAAAADAAAAAAAAIegAAA2sAAAABAAAAAAAAC+AAAATiAAAAAUAAAAAAABC4AAADhAAAAAGAAAAAAAAUPAAABEwAAAABwAAAAAAAGH4AAAPoAAAACEAAAAAAAH0KAAAD6AAAAAiAAAAAAACA6AAABS0AAAAIwAAAAAAAhhAAAAPoAAAAD0AAAAAAAOqcAAAD6AAAAA/AAAAAAADyWAAABEwAAAAQAAAAAAAA9poAAAPoAAAAEIAAAAAAAP5WAAADBwAAAAAAAAAAAAAAAAAAAAAAA==



                        AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBAcHjU/fO2RgAFd2lkdGgAQIaAAAAAAAAABmhlaWdodABAeUAAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAMYXVkaW9jb2RlY2lkAgAEbXA0YQAKYXZjcHJvZmlsZQBAU0AAAAAAAAAIYXZjbGV2ZWwAQD8AAAAAAAAADnZpZGVvZnJhbWVyYXRlAEA5AAAAAAAAAA9hdWRpb3NhbXBsZXJhdGUAQOdwAAAAAAAADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAACXRyYWNraW5mbwoAAAACAwAGbGVuZ3RoAEFZIZgAAAAAAAl0aW1lc2NhbGUAQNhqAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAwAGbGVuZ3RoAEFoIQAAAAAAAAl0aW1lc2NhbGUAQOdwAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAAAJ
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Ajouter des attributs au tags media dans le f4m principal&lt;/h2&gt;
&lt;p&gt;Pour faire fonctionner le multi-audio, il faudra rajouter les balises suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;alternate = "true"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;type = "audio"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;lang="français"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;bitrate=" "&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une fois tout cela prêt, vous aurez à compiler la dernière version de OSMF et à lire la vidéo en appelant le f4m principal que vous venez de préparer.&lt;/p&gt;</content><category term="Vidéo"/></entry><entry><title>[Tribune] La 3D est l’évolution logique du cinéma</title><link href="https://www.alkannoide.com/2012/01/10/tribune-la-3d-est-levolution-logique-du-cinema/" rel="alternate"/><published>2012-01-10T14:09:00+01:00</published><updated>2012-01-10T14:09:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2012-01-10:/2012/01/10/tribune-la-3d-est-levolution-logique-du-cinema/</id><summary type="html">&lt;p&gt;Je fais profiter de mon blog à Antoine Cabrera-Marchal (&lt;a href="http://twitter.com/#!/3dproductionsfr"&gt;@3dproductionsfr&lt;/a&gt;) pour réaliser un article au sujet de la 3D. Personnellement, j'ai du mal avec la 3D peut être parce que j'ai du mal avec l'immersion. Je vous laisse cependant le parcourir.&lt;/p&gt;
&lt;h2&gt;Avant-propos&lt;/h2&gt;
&lt;p&gt;Alors, pour être très clair et très précis …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je fais profiter de mon blog à Antoine Cabrera-Marchal (&lt;a href="http://twitter.com/#!/3dproductionsfr"&gt;@3dproductionsfr&lt;/a&gt;) pour réaliser un article au sujet de la 3D. Personnellement, j'ai du mal avec la 3D peut être parce que j'ai du mal avec l'immersion. Je vous laisse cependant le parcourir.&lt;/p&gt;
&lt;h2&gt;Avant-propos&lt;/h2&gt;
&lt;p&gt;Alors, pour être très clair et très précis, on ne dit pas 3D mais relief ou stéréoscopie… La terminologie 3D étant un abus de langage pour désigner les films ou animations réalisés ou convertis en 3D stéréoscopique, permettant la restitution de l’image en relief, notre vision naturelle.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Depuis 2009 (année du re-lancement contemporain de la 3D relief à destination du grand public), j'entends de ci et de la des pseudos journalistes (tout juste méritant un cachet de pigiste pour un site Internet ayant 4 semaines de retard sur l'actualité hi-tech... Evitez les sites avec des chiffres binaires terminant par .net, car de valeur, ils n'ont que leur nom) critiquer avec véhémence ce qui est communément appelé la 3D.&lt;/p&gt;
&lt;p&gt;On arrête de polémiquer sur l'arrangement de l'industrie qui cherche à vendre un nouveau matériel, à renouveler les gammes, à vendre, à vous faire dépenser, cracher, enrichir les actionnaires !!! A croire que les avancées technologiques n'étaient qu'un complot du conglomérat technico financier du CAC40 et du NASDAQ pour s’engraisser sur le dos des consommateurs victimes de ce qui brille… Oui, les consommateurs sont des victimes car on les force à acheter…&lt;/p&gt;
&lt;p&gt;Et Non ! Les films en reliefs ne sont pas un effet de mode, c’est une réelle évolution technologique des loisirs vidéo et vidéo-ludiques. Ce n’est pas un petit pas technique mais un grand pas pour l’humanité !&lt;/p&gt;
&lt;p&gt;Bref !&lt;/p&gt;
&lt;h2&gt;De la photographie au cinéma en relief&lt;/h2&gt;
&lt;p&gt;Je suis Lyonnais, et si j'ai bien une belle fierté, c'est de vivre dans la ville qui a vu naitre le cinéma ! Cherchez dans Wikipédia, je ne vais pas vous faire l'article… On a une avenue des Frères Lumière (c'est un indice :) )&lt;/p&gt;
&lt;h3&gt;Le premier film muet en n&amp;amp;b&lt;/h3&gt;
&lt;p&gt;Vous êtes un peu au courant de cette représentation ou un train entre dans une gare et ou les téléspectateurs effrayés quittent la salle ? Non… Google… J'ai la flemme de tout vous mâcher… &lt;a href="http://fr.wikipedia.org/wiki/L'Arriv%C3%A9e_d'un_train_en_gare_de_La_Ciotat"&gt;http://fr.wikipedia.org/wiki/L'Arriv%C3%A9e_d'un_train_en_gare_de_La_Ciotat&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=hlb3XKjnZkE"&gt;http://www.youtube.com/watch?v=hlb3XKjnZkE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et puis ?&lt;/p&gt;
&lt;p&gt;Ces gens ont juste été surpris par quelque chose de nouveau, d'inhabituel, ils connaissaient les /images fixes, Louis Daguerre et son &lt;a href="http://fr.wikipedia.org/wiki/Daguerr%C3%A9otype"&gt;daguerréotype&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;D'une image fixe, on est passé à une image qui bouge… J'entends déjà les premiers grincheux… Qu'est ce que ça apporte ? On avait de superbes photos en n&amp;amp;b et la elles bougent ??!! Ca n'apporte rien à la beauté des corps, des monuments, que l'on peut observer, fixes ; apprécier, éternels… La photo figeait le temps, dans les films, on n’a plus le temps de voir… Des grincheux je vous dis…&lt;/p&gt;
&lt;p&gt;Etant photographe, je vous garantie que la lumière est la composante la plus importante pour réussir un cliché, il faut essayer, tourner, atténuer, déplacer, approcher, ... Mais il n’est pas question de se passer de cela dans les films !&lt;/p&gt;
&lt;h3&gt;Le cinéma en couleur&lt;/h3&gt;
&lt;p&gt;Puis vient la couleur... Je saute les étapes du parlant, etc… car je ne suis pas assez cultivé... Inculte pour certains lecteurs, j'en suis convaincu…&lt;/p&gt;
&lt;p&gt;Une pomme rouge, verte, jaune ? Personnellement, rien qu'à l'évocation, je ressens l'acidité de la granny smith, le coté farineux de la rouge que je mettrais volontiers sur un lit de pate feuilletée… et la jaune passe partout sucrée… En n&amp;amp;b, mon esprit trop imparfait aurait ressenti, … une pomme … avec un goût de … pomme ! :)&lt;/p&gt;
&lt;p&gt;Ok des /images avec ces couleurs, c'est bien mais bon… Le noir et blanc a le mérite de faire ressortir les sentiments, les tensions, des nuances que la couleur ne traduit pas… La lumière et le contraste d'une photo en n&amp;amp;b fait passer l'essentiel, le principal... La couleur… ça sert à quoi ? Ce n'est qu'un message qui perturbe le principal, un peu de jaune, de bleu de rouge et ça détourne le message réel d'un cliché non ?… L’exemple de la pomme montre que la couleur ajoute des éléments, évoque des sens complémentaires.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mandellia.fr/affiches/photo-doisneau-le-baiser-de-l-hotel-de-ville,05183.html"&gt;Ce baiser&lt;/a&gt; serait-il le même en couleur ?&lt;/p&gt;
&lt;p&gt;Et bien non, la couleur n'enlève rien aux nuances de contrastes et de lumière d'un cliché, la couleur apporte de la chaleur, une fraicheur, des sens com-plé-men-taires !&lt;br&gt;
L'erreur serais de mettre de coté le cadre, la circulation de la lumière sur le corps d'une femme, de la statue de David (il en faut pour tous ;) ) pour apporter une touche de bleu ou rouge…. Au passage, &lt;a href="http://arts.ens-lsh.fr/peintureancienne/invention/menu2/partie1/invent_m2_p1_04.htm"&gt;un article intéressant&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais dites donc… Connaissez-vous des peintres en n&amp;amp;b à part l'œuvre Guernica de Picasso ?&lt;/p&gt;
&lt;p&gt;Donc FILM… N&amp;amp;b pour des raisons techniques puis couleur… Vous avez bien saisi l’apport des différentes techniques ?&lt;/p&gt;
&lt;p&gt;Parenthèse : Question : rêvez-vous en n&amp;amp;b ou couleur ? Quand la télé couleur n’existait pas, les gens rêvaient en n&amp;amp;b ? Il y a pas mal de publications scientifiques sur le sujet.&lt;/p&gt;
&lt;p&gt;Alors… oui, il y a eu des efforts dans les films n&amp;amp;b… mais la couleur… Vous a-t-elle apporté un semblant de sentiment supplémentaire ? Regardez-vous encore des films en n&amp;amp;b ? Vous apportent-ils plus de plaisir ? La liste de Schindler, Sin City ?&lt;/p&gt;
&lt;p&gt;La couleur a indéniablement apporté quelque chose de plus, y compris la liste de Schindler ! Il y a des couleurs liées à des sentiments. Une atmosphère glaciale, bleuetée, comme si l'on ouvrait la porte d'un frigo… Ou une atmosphère chaleureuse, romantique, teintée de rouge, lors d'un diner romantique….&lt;/p&gt;
&lt;h3&gt;Et la haute définition ?&lt;/h3&gt;
&lt;p&gt;La haute définition…  rien que des pixels en plus… rien à ajouter, enfin oui, c’est plus joli, net… la qualité semble meilleure… Le rendu de la réalité est plus fidèle …&lt;/p&gt;
&lt;p&gt;En parlant de fidélité avec ce que l’on souhaite représenter, je rappelle que l’on a toujours existé dans les 3 dimensions voir 4 si l’on inclus le temps qui passe (ou plus, mais on ne va pas s’étendre sur les suivantes), c’est du relief animé… Le reflet de la réalité !&lt;/p&gt;
&lt;h3&gt;Et on en arrive enfin aux films et animations en relief&lt;/h3&gt;
&lt;p&gt;A ce jour, c’est cette forme de cinéma qui représente au mieux la réalité et qui ajoute une dimension aux animations.&lt;/p&gt;
&lt;p&gt;Ce qu’il faut bien comprendre, c’est que l’on n’enlève rien au cinéma couleur, on ajoute une dimension, donc des possibilités, des émotions !&lt;br&gt;
On n'exclue pas le scénario, la narration, les intrigues, on ajoute de la profondeur, on se rapproche encore de la réalité, de nos rêves, on facilité notre capacité à transposer le personnage héroïque avec notre vie…&lt;/p&gt;
&lt;h3&gt;Le gain&lt;/h3&gt;
&lt;p&gt;Le relief, c'est l'immersion, c'est plus de proximité avec le film, c'est jouer avec les héros… vivre avec, ressentir à leur cotés, éprouver le déséquilibre, avoir le vertige, ressentir la vitesse, toucher, avoir un frisson lorsque l'épée de Pirates des caraïbes transperce l'écran…!!!&lt;/p&gt;
&lt;p&gt;Comme pour le son spatial qui ajouté une dimension incroyable aux films, le relief nous intègre dans l’action !&lt;br&gt;
Une petite expérience : écoutez un morceau en mono, avec un casque, avec un système 5.1 ou 7.1… Franchement, il n'y a pas …"PHOTO" ! Pourriez-vous vous en passer aujourd’hui ?&lt;/p&gt;
&lt;h3&gt;On veut des sensations !&lt;/h3&gt;
&lt;p&gt;Certains attendent d’un film que ça bouge de partout, que les couleurs soient incroyables, mais ce n’est pas le cas général.&lt;br&gt;
Pour les films en relief, certains attendent qu’il y ait des effets de profondeur et de jaillissement partout et ils sont déçus que les films ne soient pas pleins de ces artefacts mais ils ne représentent pas non plus la majorité !&lt;/p&gt;
&lt;p&gt;Les publicités Haribo ou Oasis (je fais de la pub, envoyez-moi des caisses de bonbons et des cannettes siouplé) sont bluffantes, pleines d’effets de jaillissement vers les spectateurs, on a envie d’attraper les chamalows au vol, ou on détourne la tête pour éviter les fruits… Mais ce sont des effets de parcs d’attraction ! Comme dans le réel, ces effets fatiguent les yeux. Un film en relief ne doit pas nécessairement comporter cela. Vous donner le vertige lorsque le héro se penche sur une falaise, c’est déjà bien :-) Le vertige oui, la nausée, non !&lt;/p&gt;
&lt;h2&gt;Et après ?&lt;/h2&gt;
&lt;p&gt;La 3D relief réveille, éveille nos sens, après les 3 dimensions de l’espace, on imagine plus de sensations : odorat, mouvements, ce que l'on appelle la 4eme dimension dans les parcs d'attraction par exemple. C'est une révolution ou le rêve et l'évolution se mêlent, s'emmêlent !&lt;br&gt;
On peut également imaginer une autre évolution dans laquelle la captation ou la réalisation des films permettrait de reconstituer l’ensemble du volume d’une scène, puis de s’y aventurer en devenant soit même le cadreur. Encore un autre débat…&lt;/p&gt;
&lt;p&gt;* Antoine Cabrera-Marchal*&lt;/p&gt;</content><category term="Analyse, Vidéo"/></entry><entry><title>PHPTour 2011 - Retour des deux journées</title><link href="https://www.alkannoide.com/2011/12/05/phptour-2011-retour-des-deux-journees/" rel="alternate"/><published>2011-12-05T16:34:00+01:00</published><updated>2011-12-05T16:34:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-12-05:/2011/12/05/phptour-2011-retour-des-deux-journees/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2011/11/phptour2011.png" title="phptour2011" class="alignright size-full wp-image-563" width="244" height="94" /&gt;&lt;/p&gt;
&lt;p&gt;L'AFUP a mis en place cette année un nouvel événement : le PHPTour qui est itinérant et s'est déroulé pour la première fois à Lille. J'avais publié &lt;a href="https://www.alkannoide.com/2011/11/16/mon-programme-du-phptour-a-lille/" title="Mon programme du PHPTour à Lille"&gt;la liste des conférences&lt;/a&gt; auxquelles je pensais assister. Cet article sera surtout un retour rapide sur certaines des sessions qui je pense sont à …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2011/11/phptour2011.png" title="phptour2011" class="alignright size-full wp-image-563" width="244" height="94" /&gt;&lt;/p&gt;
&lt;p&gt;L'AFUP a mis en place cette année un nouvel événement : le PHPTour qui est itinérant et s'est déroulé pour la première fois à Lille. J'avais publié &lt;a href="https://www.alkannoide.com/2011/11/16/mon-programme-du-phptour-a-lille/" title="Mon programme du PHPTour à Lille"&gt;la liste des conférences&lt;/a&gt; auxquelles je pensais assister. Cet article sera surtout un retour rapide sur certaines des sessions qui je pense sont à retenir voire à étudier.&lt;/p&gt;
&lt;h2&gt;PHP 5.4&lt;/h2&gt;
&lt;p&gt;Julien Pauli a pris le relais de David Soria Parra (malade) pour réaliser la présentation de PHP 5.4. On retiendra les points suivants en terme de process :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une release php par an (pour suivre ubuntu)&lt;/li&gt;
&lt;li&gt;Possibilité de publier une RFC (Requests For Comment)&lt;/li&gt;
&lt;li&gt;Durée de vie 3ans pour une version&lt;/li&gt;
&lt;li&gt;Cassage de compatibilité uniquement entre les releases majeures&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Côté code, on notera :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;*new SessionHandler, *&lt;/li&gt;
&lt;li&gt;une amélioration de la CLI&lt;/li&gt;
&lt;li&gt;le mixins pour les &lt;a href="http://fr.wikipedia.org/wiki/Trait_(type_abstrait)"&gt;traits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;E_ALL contient E_STRICT&lt;/li&gt;
&lt;li&gt;Passage du code svn à Gît&lt;/li&gt;
&lt;li&gt;Amélioration performance sur temps d'exécution et mémoire (&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Xquery - XML&lt;/h2&gt;
&lt;p&gt;Jai souvent vu dans des articles des éléments sur XQuery, mais je ne m'étais jamais penché sur la question. J'aurais sûrement dû car c'est un sujet à creuser dans le cas où le XML est à manipuler. Deux informations principales sont à retenir :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xquery permet de faire de la lecture, des recherches, du streaming de fichiers XML&lt;/li&gt;
&lt;li&gt;L'importation d'un fichier XML de 700Mo prend :&lt;/li&gt;
&lt;li&gt;via SimpleXML 9 Go en empreinte mémoire&lt;/li&gt;
&lt;li&gt;Xquery seulement 19 Mo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;20minutes tenue en charge site média&lt;/h2&gt;
&lt;p&gt;Pour gérer une tenue en charge, il y a 3 étapes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;la mesure&lt;/li&gt;
&lt;li&gt;la (ou les) solution(s)&lt;/li&gt;
&lt;li&gt;l'analyse&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Phpcloud&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2011/12/phpcloud.png"&gt;&lt;img src="/images/2011/12/phpcloud.png" title="phpcloud" class="alignleft size-full wp-image-604" width="227" height="84" /&gt;&lt;/a&gt;C'est l'annonce faite par Zend cette année. On y retiendra que c'est une plateforme de développement avec le debug et une grande partie des outils Zend. Pour des sociétés déjà présentes, je ne pense pas que cela soit intéressant en revanche pour un développeur indépendant ou une équipe qui se monte, cet outil permettrait d'industrialiser rapidement les choses.&lt;/p&gt;
&lt;h2&gt;Atoum&lt;/h2&gt;
&lt;p&gt;Frédéric Hardy n'a pas effectué une session technique, mais un historique de son framework de test unitaires. Les points suivants résumeront l'état d'esprit dans lequel le framework a été mis en place :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il faut apprendre à écrire des tests&lt;/li&gt;
&lt;li&gt;Trois valeurs&lt;/li&gt;
&lt;li&gt;Simplicité utilisation, un seul fichier à utiliser, une seule archive, autorun, langage naturel (vocabulaire évolutif),  : facile, rapport complet et modifiable&lt;/li&gt;
&lt;li&gt;Moderne version de php, isolation des tests (sandbox), parallelisation,&lt;/li&gt;
&lt;li&gt;Intuitif, logique floue, interfaces fluides, API cohérente, choix des tests à exécuter&lt;/li&gt;
&lt;li&gt;Gain productivité et qualité&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Magento&lt;/h2&gt;
&lt;p&gt;Cette session était très intéressante, dans le sens où ce n'était pas un technicien qui l'effectuait, mais un responsable webmarketing. C'est très rare de voir ce type de personnage dans des conférences techniques et je tiens à saluer le geste. En revanche, j'ai été fortement déçu de la réaction critique de certains...&lt;/p&gt;
&lt;p&gt;La question lors de cette session était : peut-il tout gérer ou faut-il une solution maison ? Pour toutes les plateformes dont mobile, widgets. Deux solutions avaient été retenus : Drupal et Magento. Après le choix de Magento, plusieurs surprises sont survenus; deux exemples : le dimensionnement : 1 énorme serveur pour gérer la charge et 6,55 min par produits.&lt;/p&gt;
&lt;p&gt;Magento répondant uniquement à 20% de leur demande, ils ont préférés revenir sur des solutions maisons et plus agiles : photo mail (picassa like), outil permettant la visualisation de tribunes pour les commerciaux, mise en place d'API e-shop.&lt;/p&gt;
&lt;h2&gt;Dev/admin. Sys&lt;/h2&gt;
&lt;p&gt;&lt;a href="/images/2011/12/streetfighter.jpg"&gt;&lt;img src="/images/2011/12/streetfighter.jpg" title="Street Fighter 4 video game logo" class="size-full wp-image-612 alignright" width="216" height="112" /&gt;&lt;/a&gt;Cette conférence était plutôt un retour sur les problèmes entre les équipes de développements et les administrateurs systèmes. On pourrait résumer cela à un StreetFighter. L'une des solutions peut être le DevOps. Ce terme pourrait se traduire par une philosophie par exempel : un développement aurait une meilleure connaissance de son éco-système. Ce n'est pas un métier, mais un état d'esprit.&lt;br&gt;
Structuration du travail et des opérations sur toute la chaîne est très important et les bonnes interactions entre les deux entités sont primordiales pour faire avance les choses plus rapidement. Il est également important de choisir le bon outil en fonction des besoins.&lt;/p&gt;
&lt;h2&gt;Cryptologie&lt;/h2&gt;
&lt;p&gt;Cette session a été annoncée en dernière minute, mais c'était l'une des plus pointus techniquement. Sans doute en raison de la non connaissance de la plupart des développeurs des outils de cryptages. Les éléments à étudier sont&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la méthode &lt;a href="http://php.net/manual/fr/function.crypt.php"&gt;crypt()&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;l'extension &lt;a href="http://php.net/manual/fr/book.mcrypt.php"&gt;mcrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;l'extension &lt;a href="http://php.net/manual/fr/book.hash.php"&gt;hash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;l'extension &lt;a href="http://php.net/manual/fr/book.openssl.php"&gt;OpenSSL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On pourra retenir que la cryptographie ce n'est pas la sécurité et qu'il faut être en PHP5.3 pour accéder à ces fonctionnalités.&lt;/p&gt;
&lt;p&gt;En résumé, je tiens à remercier l'ensemble de l'équipe d'organisation de l'AFUP mais également l'ensemble des conférenciers. Comme chaque année, j'ai pu revoir pas mal de personne que je connaissais. Je serais vraisemblablement présent au prochain ForumPHP qui se déroulera en juin 2012 à Paris.&lt;/p&gt;</content><category term="Conférence"/></entry><entry><title>Arduino 1.0 libéré</title><link href="https://www.alkannoide.com/2011/12/01/arduino-1-0-libere/" rel="alternate"/><published>2011-12-01T08:42:00+01:00</published><updated>2011-12-01T08:42:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-12-01:/2011/12/01/arduino-1-0-libere/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2011/10/arduino.png" title="arduino" class="alignright size-full wp-image-477" width="116" height="80" /&gt;&lt;/p&gt;
&lt;p&gt;J'en parlais dans &lt;a href="https://www.alkannoide.com/2011/10/05/arrivee-imminente-de-la-v1-0-darduino/" title="Arrivée imminente de la v1.0 d’Arduino"&gt;un précédent billet&lt;/a&gt;, maintenant c'est officiel : la version 1.0 d'Arduino est enfin sorti. C'est finalement 1 mois et demi après l'annonce des RC que la sortie finale est réalisée.&lt;/p&gt;
&lt;p&gt;La nouvelle mouture inclus nativement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le support de DHCP et DNS : très intéressant dans des mises en …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2011/10/arduino.png" title="arduino" class="alignright size-full wp-image-477" width="116" height="80" /&gt;&lt;/p&gt;
&lt;p&gt;J'en parlais dans &lt;a href="https://www.alkannoide.com/2011/10/05/arrivee-imminente-de-la-v1-0-darduino/" title="Arrivée imminente de la v1.0 d’Arduino"&gt;un précédent billet&lt;/a&gt;, maintenant c'est officiel : la version 1.0 d'Arduino est enfin sorti. C'est finalement 1 mois et demi après l'annonce des RC que la sortie finale est réalisée.&lt;/p&gt;
&lt;p&gt;La nouvelle mouture inclus nativement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le support de DHCP et DNS : très intéressant dans des mises en applications réseaux&lt;/li&gt;
&lt;li&gt;des modifications dans la classe Serial et l'intégration d'une classe SoftwareSerial&lt;/li&gt;
&lt;li&gt;le support multiple de fichier dans le librairie SD&lt;/li&gt;
&lt;li&gt;et beaucoup d'autres évolutions et modifications.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

La note de sortie est disponible ([release note](http://arduino.cc/en/Main/ReleaseNotes)). Cette sortie également officialise la stabilité du système.

&lt;/div&gt;</content><category term="Actualités, Arduino"/></entry><entry><title>[JM2L] Présentation de l'Arduino</title><link href="https://www.alkannoide.com/2011/11/28/jm2l-presentation-de-larduino/" rel="alternate"/><published>2011-11-28T15:01:00+01:00</published><updated>2011-11-28T15:01:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-11-28:/2011/11/28/jm2l-presentation-de-larduino/</id><summary type="html">&lt;p&gt;&lt;a href="https://www.alkannoide.com/2011/10/04/conference-arduino-au-jm2l-a-sophia-antipolis/" title="Conférence Arduino au JM2L à Sophia Antipolis"&gt;Ma conférence "Présentation de l'Arduino"&lt;/a&gt; s'est déroulé ce week-end. J'ai pu profiter du soleil de la Riviera. Et je vous fais maintenant profiter du support de présentation, la vidéo sera disponible prochainement.&lt;/p&gt;
&lt;div id="__ss_10365768" style="width: 425px;"&gt;

&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10365768" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"&gt;

&lt;/iframe&gt;

&lt;/div&gt;

&lt;p&gt;Je tiens en parallèle à remercier toute l'équipe d'organisation des JM2L et du conseil d'administration de Linux-Azur pour …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://www.alkannoide.com/2011/10/04/conference-arduino-au-jm2l-a-sophia-antipolis/" title="Conférence Arduino au JM2L à Sophia Antipolis"&gt;Ma conférence "Présentation de l'Arduino"&lt;/a&gt; s'est déroulé ce week-end. J'ai pu profiter du soleil de la Riviera. Et je vous fais maintenant profiter du support de présentation, la vidéo sera disponible prochainement.&lt;/p&gt;
&lt;div id="__ss_10365768" style="width: 425px;"&gt;

&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/10365768" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"&gt;

&lt;/iframe&gt;

&lt;/div&gt;

&lt;p&gt;Je tiens en parallèle à remercier toute l'équipe d'organisation des JM2L et du conseil d'administration de Linux-Azur pour leur accueil et leur assistance. Je tiens à remercier tout particulier Renée Mages. J'aurais surement des sujets liés au libre pour la prochain édition.&lt;/p&gt;</content><category term="Arduino, Conférence"/></entry><entry><title>La semaine des conférences</title><link href="https://www.alkannoide.com/2011/11/21/la-semaine-des-conferences/" rel="alternate"/><published>2011-11-21T11:27:00+01:00</published><updated>2011-11-21T11:27:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-11-21:/2011/11/21/la-semaine-des-conferences/</id><summary type="html">&lt;p&gt;Le mois de novembre est l'un des mois les plus chargé de l'année en conférence, séminaires. Pour ma part, c'est cette semaine. En effet, je serais présent à deux conférences, l'une en tant que spectateur et l'autre en tant que conférenciers.&lt;/p&gt;
&lt;p&gt;Je pars mercredi pour suivre le PHPTour qui se …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Le mois de novembre est l'un des mois les plus chargé de l'année en conférence, séminaires. Pour ma part, c'est cette semaine. En effet, je serais présent à deux conférences, l'une en tant que spectateur et l'autre en tant que conférenciers.&lt;/p&gt;
&lt;p&gt;Je pars mercredi pour suivre le PHPTour qui se déroulera à Lille jeudi et vendredi. J'ai d'ailleurs déjà effectué ma &lt;a href="https://www.alkannoide.com/2011/11/16/mon-programme-du-phptour-a-lille/" style="text-align: justify;" title="Mon programme du PHPTour à Lille"&gt;sélection de session&lt;/a&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2011/11/phptour2011.png" title="phptour2011" class="size-full wp-image-563 aligncenter" width="244" height="94" /&gt;&lt;/p&gt;
&lt;p&gt;Je redescendrais ensuite samedi matin sur Nice pour me rendre aux Journées Méditerranéennes du Logiciel Libre, où je réaliserais une session de &lt;a href="https://www.alkannoide.com/2011/10/04/conference-arduino-au-jm2l-a-sophia-antipolis/" style="text-align: justify;" title="Conférence Arduino au JM2L à Sophia Antipolis"&gt;présentation de l'Arduino&lt;/a&gt;&lt;span class="Apple-style-span" style="text-align: justify;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2011/10/afficheJM2L2011.png" title="afficheJM2L2011" class="size-full wp-image-484 aligncenter" width="214" height="303" /&gt;&lt;/p&gt;
&lt;p&gt;Dans un cas, comme dans l'autre, n'hésitez pas à me faire signe si vous souhaitez échanger autour d'un verre ou autre petit four...&lt;/p&gt;</content><category term="Actualités, Conférence"/></entry><entry><title>Mon programme du PHPTour à Lille</title><link href="https://www.alkannoide.com/2011/11/16/mon-programme-du-phptour-a-lille/" rel="alternate"/><published>2011-11-16T11:42:00+01:00</published><updated>2011-11-16T11:42:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-11-16:/2011/11/16/mon-programme-du-phptour-a-lille/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2011/11/phptour2011.png"&gt;&lt;img src="/images/2011/11/phptour2011.png" title="phptour2011" class="size-full wp-image-563 alignright" width="244" height="94" /&gt;&lt;/a&gt;Cette année, pas de &lt;a href="http://afup.org/pages/forumphp2010/"&gt;ForumPHP&lt;/a&gt; à Paris faute de travaux à la Villette. Cependant, l'&lt;a href="http://afup.org"&gt;AFUP&lt;/a&gt; a mis en place une nouvelle formule : le &lt;a href="http://afup.org/pages/phptourlille2011/"&gt;PHPTour&lt;/a&gt;, un événement itinérant qui se déroulera dans une ville différente à chaque fois. Cette année, c'est à Lille et j'y serias. A ce sujet, je …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2011/11/phptour2011.png"&gt;&lt;img src="/images/2011/11/phptour2011.png" title="phptour2011" class="size-full wp-image-563 alignright" width="244" height="94" /&gt;&lt;/a&gt;Cette année, pas de &lt;a href="http://afup.org/pages/forumphp2010/"&gt;ForumPHP&lt;/a&gt; à Paris faute de travaux à la Villette. Cependant, l'&lt;a href="http://afup.org"&gt;AFUP&lt;/a&gt; a mis en place une nouvelle formule : le &lt;a href="http://afup.org/pages/phptourlille2011/"&gt;PHPTour&lt;/a&gt;, un événement itinérant qui se déroulera dans une ville différente à chaque fois. Cette année, c'est à Lille et j'y serias. A ce sujet, je vous fais part de mon &lt;a href="http://afup.org/pages/phptourlille2011/sessions.php"&gt;programme des sessions&lt;/a&gt; que je suivrais.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Le jeudi, je commencerais par la présentation de PHP 5.4 par David Sora Parra en session plénière. Ensuite, pour la première matinée de sessions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traitement XML de pointe avec PHP et XQuery&lt;/li&gt;
&lt;li&gt;Tenue en charge d'un site média&lt;/li&gt;
&lt;li&gt;Optimiser la performance business de votre site avec l'A/B testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

Après un bon repas, je suivrais la conférence de Zeev Suraski qui présentera le nouveau produit phpcloud.com. J'aimerais en savoir plus sur ce sujet. L'après midi se poursuivra avec:

&lt;/div&gt;

&lt;div&gt;

- La conférence sur les tests Mock, Stubs et Tests m'intéresse particulièrement car mon projet actuel me pose quelques soucis concernant la mise en place des tests
- la présentation d'Atoum, le framework de test unitaire, mis en place par Frédéric Hardy
- je terminerais la première journée par la présentation : Pourquoi on a abandonné Magento au profit d'un dévéloppement spécifique. Très intéressé de connaître les différents éléments qui les ont poussés à ce choix

&lt;div&gt;

Pour la deuxième journée :

&lt;/div&gt;

&lt;div&gt;

- êtes-vous prêt pour le succès ?
- Comment développer et déployer une application PHP maintenable ? J'espère pouvoir glâner des bonnes pratiques, cela peut notamment aider dans le cadre de déploiement d'applicatif PHP (non web)
- Profiling PHP Applications par Derick Rethans. Je rappelle que Derick est le créateur de Xdebug entre autres...
- Sécurité des applications PHP, j'attends de voir sous quel angle sera réalisé cette session

&lt;div&gt;

Pour la dernière demi-journée, encore une fois, j'aimerais me divisé pour aller à toutes les sessions. Mais il faut faire un choix :

&lt;/div&gt;

&lt;div&gt;

- Caching and Tuning fun for high scalability
- dev et admin sys : une cohabitation simplifiée... pour éviter de se taper dessus entre les deux équipes ;)

&lt;div&gt;

Ca fait un bon programme et je préparerais un compte-rendu des sessions que j'aurais suivi dans ce blog.

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;</content><category term="Conférence"/><category term="PHP"/></entry><entry><title>Ce robot est l'un des plus rapide du monde...</title><link href="https://www.alkannoide.com/2011/11/14/ce-robot-est-lun-des-plus-rapide-du-monde/" rel="alternate"/><published>2011-11-14T15:10:00+01:00</published><updated>2011-11-14T15:10:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-11-14:/2011/11/14/ce-robot-est-lun-des-plus-rapide-du-monde/</id><summary type="html">&lt;p&gt;Ce petit bijou de robotique est suisse. En plus d'être rapide, il est également extrêmement précis, ce qui lui laisse un large champ d'application.&lt;/p&gt;
&lt;p&gt;Les moteurs sont en rotation mais en sortie le mouvement est toujours une translation. Inventé par Reymond Clavel, ce robot est inspiré de l'industrie du chocolat …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Ce petit bijou de robotique est suisse. En plus d'être rapide, il est également extrêmement précis, ce qui lui laisse un large champ d'application.&lt;/p&gt;
&lt;p&gt;Les moteurs sont en rotation mais en sortie le mouvement est toujours une translation. Inventé par Reymond Clavel, ce robot est inspiré de l'industrie du chocolat. Le robot avec du matériel standard atteint les 15G d'accélérations. On entend d'ailleurs parler d'un robot qui atteint les 100G.&lt;/p&gt;
&lt;p&gt;C'est juste hallucinant. La vidéo parle d'elle-même.&lt;/p&gt;
&lt;object style="height: 290px; width: 480px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_FOpni3BJxM?version=3&amp;amp;feature=player_embedded"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/_FOpni3BJxM?version=3&amp;amp;feature=player_embedded" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="290"&gt;&lt;/object&gt;</content><category term="Electronique"/></entry><entry><title>Outil de Geek ultime sous Mac</title><link href="https://www.alkannoide.com/2011/11/10/outil-de-geek-ultime-sous-mac/" rel="alternate"/><published>2011-11-10T12:27:00+01:00</published><updated>2011-11-10T12:27:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-11-10:/2011/11/10/outil-de-geek-ultime-sous-mac/</id><summary type="html">&lt;p&gt;Un ami m'a fait découvrir récemment un outil que j'appellerais outil pour ultra geek disponible uniquement sous Mac. Cet outil permet d'afficher sur le bureau tout un ensemble d'informations diverses et varié. C'est à vous de faire votre propre configuration.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Cet outil s'appelle &lt;a href="http://projects.tynsoe.org/fr/geektool/"&gt;Geektool&lt;/a&gt;. Trois modes de fonctionnement sont disponibles …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Un ami m'a fait découvrir récemment un outil que j'appellerais outil pour ultra geek disponible uniquement sous Mac. Cet outil permet d'afficher sur le bureau tout un ensemble d'informations diverses et varié. C'est à vous de faire votre propre configuration.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Cet outil s'appelle &lt;a href="http://projects.tynsoe.org/fr/geektool/"&gt;Geektool&lt;/a&gt;. Trois modes de fonctionnement sont disponibles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le mode Fichier qui vous permettra de surveiller l'activité sur votre MacOS X&lt;/li&gt;
&lt;li&gt;le mode Image qui vous permet d'afficher des graphiques, /images (assez intéressant pour avoir des graphs d'utilisation réseau ou CPU par exemple)&lt;/li&gt;
&lt;li&gt;le mode Shell qui vous permet de lancer une commande shell&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

Voici par exemple, ce que j'ai mis sur mon bureau :

&lt;/div&gt;

&lt;div&gt;

[&lt;img src="/images/2011/11/geektool.png" title="geektool" class="aligncenter size-full wp-image-527" width="480" height="154" /&gt;](/images/2011/11/geektool.png)

&lt;/div&gt;</content><category term="Hors Sujet"/></entry><entry><title>Arrivée imminente de la v1.0 d'Arduino</title><link href="https://www.alkannoide.com/2011/10/05/arrivee-imminente-de-la-v1-0-darduino/" rel="alternate"/><published>2011-10-05T11:05:00+02:00</published><updated>2011-10-05T11:05:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-10-05:/2011/10/05/arrivee-imminente-de-la-v1-0-darduino/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2011/10/arduino.png" title="arduino" class="alignleft size-full wp-image-477" width="116" height="80" /&gt;&lt;/p&gt;
&lt;p&gt;Ca y est, la Release d'Arduino en 1.0 arrive bientôt. Elle est en effet annoncé sur le &lt;a href="http://arduino.cc/blog/2011/10/04/arduino-1-0/"&gt;blog Arduino&lt;/a&gt;. Beaucoup de choses vont évolués entre la dernière version 0 et la 1.0. Un premier résumé en attendant la traduction compléte du Changelog.&lt;!--more--&gt;&lt;br&gt;
Côté IDE, le point le plus …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2011/10/arduino.png" title="arduino" class="alignleft size-full wp-image-477" width="116" height="80" /&gt;&lt;/p&gt;
&lt;p&gt;Ca y est, la Release d'Arduino en 1.0 arrive bientôt. Elle est en effet annoncé sur le &lt;a href="http://arduino.cc/blog/2011/10/04/arduino-1-0/"&gt;blog Arduino&lt;/a&gt;. Beaucoup de choses vont évolués entre la dernière version 0 et la 1.0. Un premier résumé en attendant la traduction compléte du Changelog.&lt;!--more--&gt;&lt;br&gt;
Côté IDE, le point le plus important est sans doute le changement des extensions de fichier notammement pour eviter les conflits avec le logiciel Processing. On peut également noté des évolutions au niveau de l'interface (icônes, barres de progression…).&lt;br&gt;
Côté SDK, les évolutions sont bien plus importantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;transmission série en asynchrone (via Serial) : ça laisse présager de belle mise en application&lt;/li&gt;
&lt;li&gt;support des écritures de chaines de caractères sur mémoire Flash au lieu de la mémoire RAM&lt;/li&gt;
&lt;li&gt;support DNS et DHCP au sein de la library Ethernet : auparavant il fallait faire appel à une lib externe ou directement passer par les adresses IP&lt;/li&gt;
&lt;li&gt;support de plusieurs fichiers dans la librairie SD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le boulot apporté est donc très conséquent et va permettre de réaliser des mises en application beaucoup plus complexes :)&lt;/p&gt;</content><category term="Arduino"/></entry><entry><title>Conférence Arduino au JM2L à Sophia Antipolis</title><link href="https://www.alkannoide.com/2011/10/04/conference-arduino-au-jm2l-a-sophia-antipolis/" rel="alternate"/><published>2011-10-04T10:37:00+02:00</published><updated>2011-10-04T10:37:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-10-04:/2011/10/04/conference-arduino-au-jm2l-a-sophia-antipolis/</id><summary type="html">&lt;p&gt;Je vais effectuer une conférence lors des prochaines &lt;a href="http://jm2l.linux-azur.org/" title="Journées Méditerranéennes du Logiciel Libre"&gt;Journées Méditerranéennes du Logiciel Libre&lt;/a&gt; qui se dérouleront à Sofia Antipolis les 25 et 26 novembre. J'y réaliserais une présentation sur le micro-contrôleur &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt;. Ma conférence se déroulera le &lt;a href="http://jm2l.linux-azur.org/conference/2011/presentation-du-micro-controleur-arduino"&gt;samedi après-midi à 16h&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/10/afficheJM2L2011.png"&gt;&lt;img src="/images/2011/10/afficheJM2L2011.png" title="afficheJM2L2011" class="aligncenter size-full wp-image-484" width="357" height="505" /&gt;&lt;/a&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Au sommaire :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;qu'est-ce que l'Arduino?&lt;/li&gt;
&lt;li&gt;d'où vient-il ?&lt;/li&gt;
&lt;li&gt;comment s'en …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Je vais effectuer une conférence lors des prochaines &lt;a href="http://jm2l.linux-azur.org/" title="Journées Méditerranéennes du Logiciel Libre"&gt;Journées Méditerranéennes du Logiciel Libre&lt;/a&gt; qui se dérouleront à Sofia Antipolis les 25 et 26 novembre. J'y réaliserais une présentation sur le micro-contrôleur &lt;a href="http://arduino.cc/"&gt;Arduino&lt;/a&gt;. Ma conférence se déroulera le &lt;a href="http://jm2l.linux-azur.org/conference/2011/presentation-du-micro-controleur-arduino"&gt;samedi après-midi à 16h&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/10/afficheJM2L2011.png"&gt;&lt;img src="/images/2011/10/afficheJM2L2011.png" title="afficheJM2L2011" class="aligncenter size-full wp-image-484" width="357" height="505" /&gt;&lt;/a&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Au sommaire :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;qu'est-ce que l'Arduino?&lt;/li&gt;
&lt;li&gt;d'où vient-il ?&lt;/li&gt;
&lt;li&gt;comment s'en servir ?&lt;/li&gt;
&lt;li&gt;à quoi peut-il servir ?&lt;/li&gt;
&lt;li&gt;son avenir&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

Je rendrais disponible la présentation une fois la conférence terminée. Les vidéos seront également disponible sur le site des J2ML

&lt;/div&gt;</content><category term="Arduino, Conférence"/></entry><entry><title>[Livre] Compression vidéo sur Internet</title><link href="https://www.alkannoide.com/2011/09/21/livre-compression-video-sur-internet/" rel="alternate"/><published>2011-09-21T07:47:00+02:00</published><updated>2011-09-21T07:47:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-09-21:/2011/09/21/livre-compression-video-sur-internet/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2011/09/book-video-compression.jpg"&gt;&lt;br&gt;
&lt;/a&gt;Je viens de terminer la lecture du dernier livre de &lt;a href="http://www.streaminglearningcenter.com/users/jan-ozer-1.html"&gt;Jan Ozer&lt;/a&gt; : Video Compression for Flash, Apple Devices and Html5. Ce livre est un petit bijou. Que vous travaillez directement sur la vidéo, si vous en êtes proche ou même si vous souhaitez approfondir vos connaissances techniques, ce livre est …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2011/09/book-video-compression.jpg"&gt;&lt;br&gt;
&lt;/a&gt;Je viens de terminer la lecture du dernier livre de &lt;a href="http://www.streaminglearningcenter.com/users/jan-ozer-1.html"&gt;Jan Ozer&lt;/a&gt; : Video Compression for Flash, Apple Devices and Html5. Ce livre est un petit bijou. Que vous travaillez directement sur la vidéo, si vous en êtes proche ou même si vous souhaitez approfondir vos connaissances techniques, ce livre est fait pour vous.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/09/book-video-compression.jpg"&gt;&lt;img src="/images/2011/09/book-video-compression.jpg" title="book-video-compression" class="size-full wp-image-443 aligncenter" style="border-style: initial; border-color: initial;" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;

&lt;span style="color: #0000ee;"&gt;&lt;span style="text-decoration: underline;"&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;!--more--&gt;Le livre aborde les points suivants :

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;une première partie aborde le H264 (le codec vidéo) en partant de la théorie pour arriver progressivement aux paramétrages et aux outils qui permettent les transcodages&lt;/li&gt;
&lt;li&gt;une petite partie aborde WebM, VP6 et WMV&lt;/li&gt;
&lt;li&gt;ensuite, comment préparer les contenus pour les différentes cibles : Flash, iOS, HTML5&lt;/li&gt;
&lt;li&gt;enfin l'auteur aborde enfin des outils plus industriels, les méthodes de diffusion&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

Au final, ce livre est réellement à avoir dans une bibliothèque de livre technique/technologique lié au Web.

&lt;/div&gt;

&lt;div&gt;

Disponible sur [Amazon](http://www.amazon.fr/Video-Compression-Flash-Apple-Devices/dp/0976259508/) (en anglais)

&lt;/div&gt;</content><category term="Vidéo"/></entry><entry><title>Le relais téléphonique le plus proche sans GPS</title><link href="https://www.alkannoide.com/2011/09/20/le-relais-telephonique-le-plus-proche-sans-gps/" rel="alternate"/><published>2011-09-20T09:41:00+02:00</published><updated>2011-09-20T09:41:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-09-20:/2011/09/20/le-relais-telephonique-le-plus-proche-sans-gps/</id><summary type="html">&lt;p&gt;Une discussion sur Twitter très intéressante s'est entamé hier soir avec &lt;a href="http://twitter.com/skywodd"&gt;@skywood&lt;/a&gt;. En effet, ce dernier me posa la question suivante : comment récupérer les coordonnées d'un relais téléphonique (&lt;a href="https://www.alkannoide.com/2010/11/04/sigle-et-debit-3g-sont-differents-pourquoi/" title="Sigle et débit 3G sont différents, pourquoi ?"&gt;je décrivais ces relais dans un précédent billet&lt;/a&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un numéro progressif : &lt;a href="http://en.wikipedia.org/wiki/Cell_ID" target="_blank" title="Cell ID"&gt;Cell ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;un code pour la zone géographique : &lt;a href="http://en.wikipedia.org/wiki/Location_area#Location_area" target="_blank" title="Location Area"&gt;LAC&lt;/a&gt; Local Area …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Une discussion sur Twitter très intéressante s'est entamé hier soir avec &lt;a href="http://twitter.com/skywodd"&gt;@skywood&lt;/a&gt;. En effet, ce dernier me posa la question suivante : comment récupérer les coordonnées d'un relais téléphonique (&lt;a href="https://www.alkannoide.com/2010/11/04/sigle-et-debit-3g-sont-differents-pourquoi/" title="Sigle et débit 3G sont différents, pourquoi ?"&gt;je décrivais ces relais dans un précédent billet&lt;/a&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un numéro progressif : &lt;a href="http://en.wikipedia.org/wiki/Cell_ID" target="_blank" title="Cell ID"&gt;Cell ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;un code pour la zone géographique : &lt;a href="http://en.wikipedia.org/wiki/Location_area#Location_area" target="_blank" title="Location Area"&gt;LAC&lt;/a&gt; Local Area Code&lt;/li&gt;
&lt;li&gt;un code pour l'opérateur télécom &lt;a href="http://en.wikipedia.org/wiki/Mobile_Network_Code" target="_blank"&gt;MNC&lt;/a&gt; Mobile Network Code&lt;/li&gt;
&lt;li&gt;un code pour réseau national : &lt;a href="http://en.wikipedia.org/wiki/List_of_mobile_country_codes" target="_blank"&gt;MMC&lt;/a&gt; Mobile Country Code&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;

A partir de ces informations, le téléphone est capable de se localiser via une API chez Google (à vérifier pour l'utilisation). La précision est plutôt intéressante (jusqu'à 60-90 mètres).

&lt;/div&gt;

&lt;div&gt;

A propos de relais téléphonique, vous pouvez retrouver deux bases de données permettant de retrouver les positions des relais :

&lt;/div&gt;

&lt;div&gt;

- &lt;a href="http://www.opencellid.org/" target="_blank"&gt;OpenCellID&lt;/a&gt; : une base open source contenant les coordonnées GPS mais également les informations cités plus haut dans cet article
- &lt;a href="http://www.cartoradio.fr/" target="_blank"&gt;ANFR&lt;/a&gt; (Agence Nationale des Fréquences) : cette base regroupe l'ensemble des relais téléphoniques, des antennes de radiodiffusion et également des points de mesures

&lt;div&gt;

On peut également observer sur cette image la couverture des opérateurs téléphoniques :

&lt;/div&gt;

&lt;/div&gt;

&lt;div&gt;

&lt;img src="http://combain.com/mexc//images/coverage/france.png_208_all.png" title="Couverture opérateur téléphonique" class="aligncenter" width="450" height="459" /&gt;

&lt;/div&gt;

&lt;div&gt;

Je crois que @skywodd souhaite en faire un projet, j'attends de voir ce que cela va donner. On verra également si l'API Google est disponible sans limite d'utilisation (ou des limites cohérentes).

&lt;/div&gt;</content><category term="Analyse, Mobile"/></entry><entry><title>Linky : un compteur intelligent ? Pas uniquement</title><link href="https://www.alkannoide.com/2011/07/20/linky-un-compteur-intelligent-pas-uniquement/" rel="alternate"/><published>2011-07-20T11:51:00+02:00</published><updated>2011-07-20T11:51:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-07-20:/2011/07/20/linky-un-compteur-intelligent-pas-uniquement/</id><summary type="html">&lt;p&gt;Linky est le nouveau compteur EDF dit "intelligent". Actuellement en test sur deux régions de France, le gouvernement prendra normalement la décision finale de déploiement durant l'été. A la base, cette décision devait être prise durant l'hiver 2011. Mais cela va nous coûter et pas uniquement sur notre porte-monnaie.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Pour …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Linky est le nouveau compteur EDF dit "intelligent". Actuellement en test sur deux régions de France, le gouvernement prendra normalement la décision finale de déploiement durant l'été. A la base, cette décision devait être prise durant l'hiver 2011. Mais cela va nous coûter et pas uniquement sur notre porte-monnaie.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Pour la petite histoire, ce nouveau compteur fait parti d'un projet plus global de réseaux électriques intelligents au niveau européen : le &lt;a href="http://fr.wikipedia.org/wiki/Smart_grid"&gt;Smart Grid&lt;/a&gt;. En France, le projet s'appelle "Linky" tout comme le nouveau compteur. Il serait mis en place dans 35 millions de foyers. Les objectifs principaux sont les réductions des coûts tout particulièrement côté EDF. En effet, ce compteur sera pilotable à distance :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;oublions donc le passage d'un technicien EDF pour l'ouverture, relevé / fermeture des compteurs&lt;/li&gt;
&lt;li&gt;en cas de non-paiement, le distributeur pourra couper l'arrivée électrique&lt;/li&gt;
&lt;li&gt;les informations à propos de la consommation seront en temps réel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="/images/2011/07/linky.jpg"&gt;&lt;img src="/images/2011/07/linky-300x224.jpg" title="linky" class="size-medium wp-image-415 alignleft" width="300" height="224" /&gt;&lt;/a&gt;Côté technique, la technologie utilisée sera le &lt;a href="http://fr.wikipedia.org/wiki/Courant_porteur_en_ligne"&gt;CPL&lt;/a&gt; pour relier le compteur Linky au concentrateur. Le protocole utilisé est côté réseau PLAN (norme &lt;a href="http://en.wikipedia.org/wiki/IEC_61334"&gt;IEC_61334&lt;/a&gt;) et pour la partie applicative la message COSEM (norme &lt;a href="http://en.wikipedia.org/wiki/IEC_62056"&gt;IEC_62056&lt;/a&gt;). J'ai trouvé une &lt;a href="http://www.dlms.com/downloads/dlmscosem2008asmartstandardforsmartmetering.pdf"&gt;présentation&lt;/a&gt; (PDF) plus précise du protocole de COSEM. Je n'ai rien trouvé au sujet du cryptage des données lors du transport des données. A cet effet, je me pose la question de l'accès aux autres Linky depuis un point du réseau. Quelle est la sécurité associée : les informations transiteront via le CPL, mais quel sera la sécurité utilisée lors de la communication ? Une personne sera-t-elle capable via un peu de bricolage et un peu de développement d'accéder à mon compteur et y effectuer des actions ? En tant que technicien, je sais que le 100% sécurité n'existe pas, mais je souhaite tout de même connaître le risque associé...&lt;/p&gt;
&lt;p&gt;Le compteur sera finalement payant : 120 à 240 €, étalé sur 10ans soit 1 à 2 € en plus par mois, &lt;a href="http://marches.lefigaro.fr/news/societes.html?&amp;amp;ID_NEWS=184176545"&gt;à la base cela n'était pas prévu&lt;/a&gt;. Pourquoi une telle différence de prix d'ailleurs, on va tout de même du simple au double. La pose sera effectué non pas par EDF, mais par des prestataires tierces. Encore un point complètement ahurissant. De plus, et c'est un comble total là, ils ont trouvé le moyen de nous faire payer l'accès aux informations (&lt;span style="text-decoration: underline;"&gt;à nos informations privées&lt;/span&gt;) via internet. Inadmissible !!&lt;/p&gt;
&lt;p&gt;Des questions se posent : pourquoi devons-nous payer 3,5€ par mois pour avoir accès aux informations ? C'est comme si nous achetions un téléphone portable mais que nous devrions payer l'opérateur pour accéder aux informations de consommations (tels des appels entrants / sortants etc...). Où et comment sont stockés les données et quel est le traitement associé (en plus de celui pour EDF) ? En temps réel, le distributeur saura ce que chaque habitant fait : "&lt;em&gt;Les informations de consommation d'énergie transmises par les compteurs sont très détaillées et permettent de savoir beaucoup de choses sur les occupants d'une habitation, comme leur horaire de réveil, le moment où ils prennent une douche ou bien quand ils utilisent certains appareils (four, bouilloire, toaster…)&lt;/em&gt;", comme l'a signalé la &lt;a href="www.cnil.fr/en-savoir-plus/fiches-pratiques/fiche/article/les-compteurs-electriques-intelligents-en-questions/"&gt;CNIL&lt;/a&gt;. Cet &lt;a href="http://www.energie2007.fr/actualites/fiche/3430"&gt;article d'energie2007.fr&lt;/a&gt; montre également qu'en fait, il serait possible de faire "sauter" ce déploiement dans le cas où l'abonné n'en tire pas d'avantages... et on peut le voir c'est le cas.&lt;/p&gt;
&lt;p&gt;L'objectif annoncé du projet était de permettre la réduction des factures, or lors de la phase d'expérimentation, ils ont observé une réduction de 50€ environ sur l'année. Si l'utilisateur veut accéder aux données, il devra payer 3,5€ x 12 = 42 €... quel intérêt alors mis à part engraisser EDF et ses prestataires !&lt;br&gt;
Pour résumé, je me pose énormément pour mon habitat et ma vie privée et actuellement, aucune réelle assurance n'est disponible sur la toile. Je suis ouvert à tout retour d'expérience ou précision plus technique sur le système.&lt;/p&gt;</content><category term="Analyse, Coup de gueule"/></entry><entry><title>Quelques hacks Kinnect plutôt sympa</title><link href="https://www.alkannoide.com/2011/07/07/quelques-hacks-kinnect-plutot-sympa/" rel="alternate"/><published>2011-07-07T13:53:00+02:00</published><updated>2011-07-07T13:53:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-07-07:/2011/07/07/quelques-hacks-kinnect-plutot-sympa/</id><summary type="html">&lt;p&gt;&lt;a href="/images/2011/07/kinect.jpg"&gt;&lt;img src="/images/2011/07/kinect.jpg" title="kinect" class="alignright size-full wp-image-486" width="300" height="94" /&gt;&lt;/a&gt;En quelques jours, je suis tombé sur deux vidéos assez bluffantes des possibilités offertes par Kinect. Rappelons que le &lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/"&gt;SDK du Kinect&lt;/a&gt; est disponible sur le site de Microsoft.&lt;/p&gt;
&lt;p&gt;Le premier exemple montre Rajarshi Roy qui a développé un outil permettant d'utiliser le Kinect pour jouer à différents jeux sur …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="/images/2011/07/kinect.jpg"&gt;&lt;img src="/images/2011/07/kinect.jpg" title="kinect" class="alignright size-full wp-image-486" width="300" height="94" /&gt;&lt;/a&gt;En quelques jours, je suis tombé sur deux vidéos assez bluffantes des possibilités offertes par Kinect. Rappelons que le &lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/"&gt;SDK du Kinect&lt;/a&gt; est disponible sur le site de Microsoft.&lt;/p&gt;
&lt;p&gt;Le premier exemple montre Rajarshi Roy qui a développé un outil permettant d'utiliser le Kinect pour jouer à différents jeux sur PC (ex : NeedForSpeed, Portal, etc...). On voit sur la vidéo qu'un calibrage est nécessaire afin de jouer. Le &lt;a href="https://github.com/spaghetti-coder/NIGameController"&gt;code source&lt;/a&gt; est également disponible, du nettoyage sera fait prochainement.&lt;/p&gt;
&lt;iframe src="http://www.youtube.com/embed/Bq7mdl0yAy0" frameborder="0" width="425" height="349"&gt;&lt;/iframe&gt;

&lt;p&gt;La seconde démo est elle totalement hallucinante. On y voit un homme pilotant via son Kinect un quadcopter (une sorte de ARDrone de chez Parrot). Plutôt qu'un long discours, je vous laisse lire la vidéo.&lt;/p&gt;
&lt;iframe src="http://www.youtube.com/embed/A52FqfOi0Ek" frameborder="0" width="560" height="349"&gt;&lt;/iframe&gt;

&lt;p&gt;Source : &lt;a href="http://www.engadget.com/"&gt;Endgadget&lt;/a&gt;, &lt;a href="http://hackaday.com/"&gt;Hackaday&lt;/a&gt;&lt;/p&gt;</content><category term="Bidouille"/></entry><entry><title>Quelques protocoles utilisables en domotique</title><link href="https://www.alkannoide.com/2011/07/06/quelques-protocoles-utilisables-en-domotique/" rel="alternate"/><published>2011-07-06T13:23:00+02:00</published><updated>2011-07-06T13:23:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-07-06:/2011/07/06/quelques-protocoles-utilisables-en-domotique/</id><summary type="html">&lt;p&gt;L'objectif de cet article est d'obtenir un aperçu d'une partie des différents protocoles utilisables pour le transport de données dans le cadre d'une installation de domotique. Je vais aborder uniquement les 4 plus importants qui sont portés soient par des alliances, soit par des regroupements de sociétés.&lt;/p&gt;
&lt;h2&gt;Zigbee&lt;/h2&gt;
&lt;p&gt;&lt;img src="/images/2011/07/xbee.jpeg" title="xbee" class="size-full wp-image-369 alignleft" width="135" height="135" /&gt;C'est un …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L'objectif de cet article est d'obtenir un aperçu d'une partie des différents protocoles utilisables pour le transport de données dans le cadre d'une installation de domotique. Je vais aborder uniquement les 4 plus importants qui sont portés soient par des alliances, soit par des regroupements de sociétés.&lt;/p&gt;
&lt;h2&gt;Zigbee&lt;/h2&gt;
&lt;p&gt;&lt;img src="/images/2011/07/xbee.jpeg" title="xbee" class="size-full wp-image-369 alignleft" width="135" height="135" /&gt;C'est un standard de communication récent (début des années 2000) permettant l'échange d'informations via onde radio avec une consommation réduite. Il est porté par une &lt;a href="http://www.zigbee.org" title="Alliance Zigbee"&gt;alliance&lt;/a&gt; du même nom dont le but est de promouvoir la technologie. Les fréquences sont 868Mhz, 915Mhz et 2,4GHz à utiliser selon la zone géographique (Europe, Amérique, Monde...). Le standard s'appuie également sur la norme &lt;a href="http://fr.wikipedia.org/wiki/802.15.4"&gt;IEEE 202.15.4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le module Xbee se repose sur ce standard de communication et permet l'utilisation de ce protocole.&lt;/p&gt;
&lt;h2&gt;X10&lt;/h2&gt;
&lt;p&gt;&lt;img src="/images/2011/07/x10-300x225.jpg" title="x10" class="alignright size-medium wp-image-376" width="180" height="135" /&gt;&lt;/p&gt;
&lt;p&gt;Si vous avez une Freebox avec les prises CPL, vous connaissez déjà dans les grandes lignes le principe. En effet, tout comme le Homeplug de la Freebox, le protocole X10 est un protocole de communication par courant porteur développé dans les années 70. Il passe par le circuit électrique de l'habitation. Le protocole se base sur la sinosoïde du courant électrique alternatif pour transmettre les informations. Sa fréquence est de 120Hz.&lt;/p&gt;
&lt;p&gt;On peut distinguer plusieurs avantages : il se base sur le circuit électrique (donc pas besoin de faire passer des câbles en plus), il n'y a pas d'ondes en plus, son coût est peu cher. En revanche, il a différents inconvénients : pas de compatibilité USA / France par exemple dû à la fréquence du courant, sensibilité aux ondes (par exemple une télévision trop proche)&lt;/p&gt;
&lt;h2&gt;EIB/KNX&lt;/h2&gt;
&lt;p&gt;C'est un standard pour le contrôle des maisons et des bâtiments. EIB (European Industrial Bus) est un standard créé à la fin des années 80, ayant pour but d'améliorer la communication entre les équipements des bâtiments et de permettre l'interopérabilité entre les équipements EIB. Le résultat donna la norme EIB/KNX. La spécification KNX fut publié en 2002. Le très bon &lt;a href="http://www.stielec.ac-aix-marseille.fr/cours/abati/domo/knx.htm"&gt;article de l'académie d'Aix-Marseille&lt;/a&gt; rentre plus en détails dans cette norme.&lt;/p&gt;
&lt;h2&gt;1-Wire&lt;/h2&gt;
&lt;p&gt;C'est un protocole de communication basé sur un bus (série ou parallèle) via 2 fils : un fil pour les données et un fil pour la masse. Il est utilisé principalement pour des capteurs : températures, taux de gaz ou autres systèmes de météorologie. Il peut être également utilisé pour la gestion de l'énergie (onduleur, batteries, ...).&lt;/p&gt;
&lt;p&gt;Naturellement, d'autres protocoles existent, cependant ils sont beaucoup moins utilisés notamment car utilisés par des sociétés moins populaires.&lt;/p&gt;
&lt;p&gt;Crédits : &lt;a href="http://fr.wikipedia.org"&gt;Wikipedia&lt;/a&gt;, &lt;a href="http://www.sparkfun.com"&gt;sparkfun&lt;/a&gt;&lt;/p&gt;</content><category term="Analyse, Domotique"/></entry><entry><title>La migration IPv6 en retard sur l'applicatif ?</title><link href="https://www.alkannoide.com/2011/07/01/la-migration-ipv6-en-retard-sur-lapplicatif/" rel="alternate"/><published>2011-07-01T10:11:00+02:00</published><updated>2011-07-01T10:11:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-07-01:/2011/07/01/la-migration-ipv6-en-retard-sur-lapplicatif/</id><summary type="html">&lt;p&gt;&lt;img src="/images/2011/07/ipv6.jpg" title="ipv6" class="alignleft size-full wp-image-358" width="247" height="105" /&gt;&lt;/p&gt;
&lt;p&gt;Depuis quelques années et surtout depuis quelques mois/semaines, on parle de la migration IPV6 qui est à effectué d'urgence. Or, il semblerait qu'un aspect important de cette migration a été, très souvent, omise : les applications.&lt;/p&gt;
&lt;p&gt;Petit rappel, l'IPv4 est défini par 4 décimaux séparé par des points (ex 192 …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img src="/images/2011/07/ipv6.jpg" title="ipv6" class="alignleft size-full wp-image-358" width="247" height="105" /&gt;&lt;/p&gt;
&lt;p&gt;Depuis quelques années et surtout depuis quelques mois/semaines, on parle de la migration IPV6 qui est à effectué d'urgence. Or, il semblerait qu'un aspect important de cette migration a été, très souvent, omise : les applications.&lt;/p&gt;
&lt;p&gt;Petit rappel, l'IPv4 est défini par 4 décimaux séparé par des points (ex 192.168.0.2) . La valeur représente un octet (256 valeurs possibles). Afin de répondre à la problématique du nombre croissant de device, mais également pour faire évoluer et répondre à d'autres problématiques, l'IPv6 a été défini. A noter, que cette définition a démarré dans les années 90. Une adresse IPv6 sera représenté par 8 groupes de 2 octets séparés par des deux points (ex : 2001:0db8:0000:85a3:0000:0000:ac1f:800). Côté infrastructure, matériel et OS, cette évolution est intégrée depuis un petit moment ou l'intégration se termine. Ce n'est pas le cas de la plupart des applicatifs.&lt;/p&gt;
&lt;p&gt;En sachant la différence sur les tailles des adresses, on se rend compte que les applications sont très souvent développées sur une base d'adresse v4, sauf pour les toutes dernières (et encore !). Prenons un exemple simple, j'ai une application qui tourne sur un serveur PHP avec une base de données en MySQL. Je souhaite enregistrer les IPs des personnes qui se connectent. Le champ utilisé est à 99% un VARCHAR(15) : 4 décimaux de 3 chiffres plus les 3 points. Mon évolution va consister à devoir soit ajouter un champ dédié pour l'IPv6 (en plus de la V4), soit de modifier la taille du champ en VARCHAR(39). Je ne parle pas non plus du code qui sera également à modifier.&lt;/p&gt;
&lt;p&gt;En France, d'ici 2013 au plus tard, les FAI ont annoncé la bascule toutes les boxes (et donc tous les abonnés en IPv6). Pareil pour les téléphones mobiles. En résumé, plus le temps passe jusque cette date, plus il deviendra critique et sensible de faire évoluer les applications sans heurt. Je pense également à tous les systèmes de géolocalisation (ex la base &lt;a href="http://www.maxmind.com/"&gt;Maxmind&lt;/a&gt;) qui se base sur les IPv4 et qui vont devoir également gérer la bascule IPv6.&lt;/p&gt;
&lt;p&gt;En résumé, si vous n'avez pas encore commencé à étudier cette migration, il est temps de le faire ;-)&lt;/p&gt;</content><category term="Analyse, Développement web"/><category term="PHP"/></entry><entry><title>Piloter sa main par des impulsions électriques</title><link href="https://www.alkannoide.com/2011/06/29/piloter-sa-main-par-des-impulsions-electriques/" rel="alternate"/><published>2011-06-29T14:31:00+02:00</published><updated>2011-06-29T14:31:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-06-29:/2011/06/29/piloter-sa-main-par-des-impulsions-electriques/</id><summary type="html">&lt;p&gt;Des chercheurs de l'université de Tokyo et le Sony Computer Science Laboratories vont faciliter l'apprentissage des instruments de musique. ;-) En effet, ils viennent de développer le &lt;a href="http://lab.rekimoto.org/projects/possessedhand/" title="PossessedHand"&gt;PossessedHand&lt;/a&gt;.&lt;a href="/images/2011/06/possessedhand.jpg"&gt;&lt;img src="/images/2011/06/possessedhand-300x234.jpg" title="possessedhand" class="aligncenter size-medium wp-image-339" width="300" height="234" /&gt;&lt;/a&gt;&lt;!--more--&gt;&lt;a href="http://lab.rekimoto.org/projects/possessedhand/"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'objectif de départ était de pouvoir jouer du &lt;a href="http://fr.wikipedia.org/wiki/Koto"&gt;koto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/06/koto.jpg"&gt;&lt;img src="/images/2011/06/koto-300x224.jpg" title="koto" class="aligncenter size-medium wp-image-340" width="300" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'appareil permet de piloter en effet le bras et la main grâce à l'envoi …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Des chercheurs de l'université de Tokyo et le Sony Computer Science Laboratories vont faciliter l'apprentissage des instruments de musique. ;-) En effet, ils viennent de développer le &lt;a href="http://lab.rekimoto.org/projects/possessedhand/" title="PossessedHand"&gt;PossessedHand&lt;/a&gt;.&lt;a href="/images/2011/06/possessedhand.jpg"&gt;&lt;img src="/images/2011/06/possessedhand-300x234.jpg" title="possessedhand" class="aligncenter size-medium wp-image-339" width="300" height="234" /&gt;&lt;/a&gt;&lt;!--more--&gt;&lt;a href="http://lab.rekimoto.org/projects/possessedhand/"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'objectif de départ était de pouvoir jouer du &lt;a href="http://fr.wikipedia.org/wiki/Koto"&gt;koto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/06/koto.jpg"&gt;&lt;img src="/images/2011/06/koto-300x224.jpg" title="koto" class="aligncenter size-medium wp-image-340" width="300" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L'appareil permet de piloter en effet le bras et la main grâce à l'envoi d'impulsion électrique via un ensemble de 28 électrodes. Chaque muscle peut être stimulé plus ou moins fortement. Le système de calibrage automatique évalue chaque relation entre l'impulsion via l'électrode et la réaction du muscle.&lt;/p&gt;
&lt;p&gt;L'expérience montre que l'appareil est capable de gérer le mouvement de 16 articulations. Je trouve l'expérience assez impressionnante et ça démontre l'évolution des techniques de contrôles biologiques.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lab.rekimoto.org/projects/possessedhand/"&gt;Source&lt;/a&gt; - &lt;a href="http://www.newscientist.com/article/mg21028186.100-handhacking-lets-you-pluck-strings-like-a-musical-pro.html"&gt;Source New Scientist&lt;/a&gt;&lt;/p&gt;</content><category term="Bidouille, Electronique"/></entry><entry><title>Quizzy - une app mobile réalisée avec Titanium</title><link href="https://www.alkannoide.com/2011/06/21/quizzy-une-app-mobile-realisee-avec-titanium/" rel="alternate"/><published>2011-06-21T10:37:00+02:00</published><updated>2011-06-21T10:37:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-06-21:/2011/06/21/quizzy-une-app-mobile-realisee-avec-titanium/</id><summary type="html">&lt;p&gt;Un petit message pour vous parler d'une application mobile. Cette application se nomme Quizzy; elle est disponible sur &lt;a href="http://itunes.apple.com/us/app/quizzy-culture-generale/id438741375"&gt;iPhone&lt;/a&gt; et sur &lt;a href="https://market.android.com/details?id=com.titaniumnews.quizzydroid"&gt;Android&lt;/a&gt;. Elle est gratuite.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/06/quizzy.jpeg"&gt;&lt;img src="/images/2011/06/quizzy-200x300.jpg" title="quizzy" class="aligncenter size-medium wp-image-331" width="200" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Elle est développée par un ami : &lt;a href="http://yannick.titanium-news.com/"&gt;Yannick&lt;/a&gt; qui développe depuis 1 an environ des apps mobiles grâce à Titanium (je vous en avais parlé dans …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Un petit message pour vous parler d'une application mobile. Cette application se nomme Quizzy; elle est disponible sur &lt;a href="http://itunes.apple.com/us/app/quizzy-culture-generale/id438741375"&gt;iPhone&lt;/a&gt; et sur &lt;a href="https://market.android.com/details?id=com.titaniumnews.quizzydroid"&gt;Android&lt;/a&gt;. Elle est gratuite.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/06/quizzy.jpeg"&gt;&lt;img src="/images/2011/06/quizzy-200x300.jpg" title="quizzy" class="aligncenter size-medium wp-image-331" width="200" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Elle est développée par un ami : &lt;a href="http://yannick.titanium-news.com/"&gt;Yannick&lt;/a&gt; qui développe depuis 1 an environ des apps mobiles grâce à Titanium (je vous en avais parlé dans &lt;a href="https://www.alkannoide.com/2011/02/07/blog-developper-sur-mobile-via-appcelerator-titanium/" title="[Blog] Développer sur mobile via AppCelerator Titanium"&gt;un précédent billet&lt;/a&gt;). Très simple d'utilisation, l'application est doté d'une base importante de quizz portant sur tous les domaines (cinéma, géographie, littérature, ...). Vous pouvez effectuer des quizz de 20 / 30 / 50 questions en mode déconnecté (très intéressant par exemple dans le métro de Lyon). Il est également possible d'afficher les résultats (par défaut, ces derniers ne le sont pas).&lt;/p&gt;
&lt;p&gt;En plus du classement mondial (sur la communauté francophone), il est également possible de contribuer ses propres questions qui sont validés avant d'intégrer la base de quizz.&lt;/p&gt;
&lt;p&gt;Voilà donc une application plutôt sympa qui permet de passer le temps tout en s'instruisant.&lt;/p&gt;</content><category term="Hors Sujet, Mobile"/></entry><entry><title>Etat de la communauté francophone Arduino</title><link href="https://www.alkannoide.com/2011/06/01/etat-de-la-communaute-francophone-arduino/" rel="alternate"/><published>2011-06-01T11:59:00+02:00</published><updated>2011-06-01T11:59:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-06-01:/2011/06/01/etat-de-la-communaute-francophone-arduino/</id><summary type="html">&lt;p&gt;Ces derniers temps, je me suis mis en quête de trouver une communauté Arduino francophone, ayant pour but d'échanger sur les différents projets réalisés, de pouvoir partager ces problèmes et avoir les réponses. Voici donc les différentes sources que j'ai pu trouver &lt;!--more--&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la version française du site officiel &lt;a href="http://arduino.cc/fr"&gt;http://arduino …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Ces derniers temps, je me suis mis en quête de trouver une communauté Arduino francophone, ayant pour but d'échanger sur les différents projets réalisés, de pouvoir partager ces problèmes et avoir les réponses. Voici donc les différentes sources que j'ai pu trouver &lt;!--more--&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la version française du site officiel &lt;a href="http://arduino.cc/fr"&gt;http://arduino.cc/fr&lt;/a&gt; . La traduction est réalisé par Xavier Hinault (qui propose également le site &lt;a href="http://www.mon-club-elec.fr/"&gt;http://www.mon-club-elec.fr/&lt;/a&gt;). Malheureusement, la traduction n'a pas été mise à jour depuis 9 mois et plusieurs versions du soft ont été mises à jour&lt;/li&gt;
&lt;li&gt;la partie &lt;a href="http://arduino.cc/forum/index.php/board,33.0.html"&gt;française du forum arduino.cc&lt;/a&gt; où plusieurs topics sont actifs&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.semageek.com/category/electronique/arduino-electronique/"&gt;Semageek.com&lt;/a&gt; qui offre pas mal de billet sur le sujet (merci &lt;a href="http://twitter.com/affreuxJojo"&gt;@affreuxJojo&lt;/a&gt; et &lt;a href="http://twitter.com/semageek"&gt;@semageek&lt;/a&gt; pour les infos)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.dataflow.ws/AtelierArduino"&gt;AtelierArduino&lt;/a&gt; rassemble un ensemble de cours sur l'Arduino&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pobot.org/-L-univers-Arduino-.html"&gt;PoBot&lt;/a&gt; qui offre différents tutoriels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici également un liste de projets assez sympa liés à l'Arduino&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hexapod-arduino.com/"&gt;hexapod-arduino&lt;/a&gt;, le concepteur a pour but de réaliser Bleuet (vous savez le petit robot dans la série Fx Effets Spéciaux)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.irit.fr/~Nicolas.Lassabe/robot.php"&gt;robot autonome&lt;/a&gt; dans ses déplacements, réalisé par un scientifique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au vue de toute cette communauté plutôt éparpillé, je me dis qu'il serait bien d'avoir un premier point d'entrée sur le site arduino.cc avec l'ensemble de la doc traduite mais également des liens vers les différents projets francophones. Qu'en pensez-vous ?&lt;/p&gt;</content><category term="Arduino"/></entry><entry><title>Tweet via l'Arduino et un PC</title><link href="https://www.alkannoide.com/2011/05/30/tweet-via-larduino-et-un-pc/" rel="alternate"/><published>2011-05-30T21:15:00+02:00</published><updated>2011-05-30T21:15:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-05-30:/2011/05/30/tweet-via-larduino-et-un-pc/</id><summary type="html">&lt;p&gt;Dans ma découverte de l'Arduino, ma première envie fût de réaliser un tweet avec l'Arduino grâce à la détection de courant via une de ses entrées (ou changement d'état). On s'amusera par la même occasion à faire allumer une LED. Pour cela, nous aurons besoin d'une plaque de pratique, de …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Dans ma découverte de l'Arduino, ma première envie fût de réaliser un tweet avec l'Arduino grâce à la détection de courant via une de ses entrées (ou changement d'état). On s'amusera par la même occasion à faire allumer une LED. Pour cela, nous aurons besoin d'une plaque de pratique, de différents composants électronique (LED, transistors, résistance), d'un Ethernet Shield et bien entendu de l'Arduino.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;L'Arduino en lui même n'est pas capable de faire un tweet, en revanche, il est tout à fait à même de faire un appel réseau via un &lt;a href="http://www.arduino.cc/en/Main/ArduinoEthernetShield" target="_blank"&gt;Ethernet Shield&lt;/a&gt; et la librairie &lt;a href="http://arduino.cc/en/Reference/Ethernet" target="_blank"&gt;Ethernet&lt;/a&gt;. Il vous faudra donc un ordinateur également relié au réseau et sur lequel sera présent le code permettant de faire le tweet. Je me suis basé sur ce tutoriel: &lt;a href="http://yanncochard.com/tuto/envoyer-un-tweet-en-php-avec-oauth-sur-twitter" target="_blank"&gt;Envoyer un tweet simplement en PHP avec OAuth&lt;/a&gt; pour tweetter. Le montage donne le résultat suivant :&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/05/tweeet_interr.jpg"&gt;&lt;img src="/images/2011/05/tweeet_interr-300x225.jpg" title="tweeet_interr" class="aligncenter size-medium wp-image-311" width="300" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour vous aider, voici une vision plus claire grâce un petit schéma. J'ai utilisé un transistor PNP &lt;a href="http://www.datasheetcatalog.org/datasheet2/e/0lgyazxze3q9t7q8809uzxcp3d3y.pdf" target="_blank"&gt;BC32725&lt;/a&gt;, trois résistances de 110 Ohms, une LED. Attention au sens du transistor, vous risquez d'avoir des surprises ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2011/05/tweet_interrupt1.png"&gt;&lt;img src="/images/2011/05/tweet_interrupt1-300x291.png" title="tweet_interrupt" class="aligncenter size-medium wp-image-310" width="300" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour les électroniciens, le schéma suivant vous donnera une meilleure vision du montage :&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2011/05/schema_electro_tweet-300x291.jpg" title="schema_electro_tweet" class="aligncenter size-medium wp-image-314" width="300" height="291" /&gt;&lt;/p&gt;
&lt;p&gt;Pour rappel, notre objectif est de faire un tweet depuis un changement d'état (électrique) via une des entrées de l'Arduino. Dans le schéma ci-dessus, j'ai utilisé un interrupteur pour simuler le changement d'état. Je vous laisse voir pour les utilisations possibles en modifiant l'interrupteur par un capteur ;-)&lt;/p&gt;
&lt;p&gt;Maintenant, passons au code qui sera dans l'Arduino :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;#include &amp;lt;Ethernet.h&amp;gt;&lt;/span&gt;
&lt;span class="c1"&gt;#include &amp;lt;SPI.h&amp;gt;&lt;/span&gt;

&lt;span class="n"&gt;byte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mac&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;xzz&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;adresse MAC est indiqué sur l&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;Ethernet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Shield&lt;/span&gt;
&lt;span class="n"&gt;byte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;adresse ip pour le shield&lt;/span&gt;
&lt;span class="n"&gt;byte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;yyy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;yyy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;yyy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;yyy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;adresse ip de la cible (qui permettra le tweet)&lt;/span&gt;

&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Cette&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;savoir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;un&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tweet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;déjà&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;é&lt;/span&gt;&lt;span class="n"&gt;té&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;effectuée&lt;/span&gt;
&lt;span class="nb nb-Type"&gt;bool&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tweet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;pinMode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;OUTPUT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;définit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;le&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sortie&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qui&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;servira&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pour&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;allumer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;LED&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9600&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Ethernet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;configure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ethernet&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;

&lt;span class="nb nb-Type"&gt;void&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Etat pin 2 : &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb nb-Type"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;analogRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;état de l&amp;#39;&lt;/span&gt;&lt;span class="n"&gt;entrée&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Analogique&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;tweet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;si&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;valeur&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;du&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;A2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;est&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;supérieur&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;à&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;considère&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;un&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;changement&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;état et donc on lance le tweet&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;analogWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;sendTweet&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;analogWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sinon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attends&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;envoi du tweet via le code PHP se fait ici&lt;/span&gt;
&lt;span class="nb nb-Type"&gt;bool&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sendTweet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;connecting...&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;connected&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;GET /tweet.php HTTP/1.0&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;do&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fait&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tourner&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;le&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pour&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;récupérer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;appel HTTP&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nb"&gt;char&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;available&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connected&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;clôt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;connexion&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;une&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fois&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requête&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HTTP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;faite&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;disconnecting.&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stop&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;tweet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;bloque&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ici&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;les&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tweets&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;potentiels&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;suivants&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Une fois embarquée sur l'Arduino, vous pouvez effectuer vos premiers tests. En fermant l'interrupteur, l'Arduino lancera un appel réseau sur le serveur que vous aurez défini et effectuera le tweet. Et voilà le tour est joué. Pour refaire un tweet, il vous faudra faire un reset sur l'Arduino.&lt;/p&gt;
&lt;p&gt;Bon amusement ;-)&lt;/p&gt;</content><category term="Arduino, Electronique"/></entry><entry><title>De l'Arduino à mes retours à l'électronique</title><link href="https://www.alkannoide.com/2011/05/26/de-larduino-a-mes-retours-a-lelectronique/" rel="alternate"/><published>2011-05-26T16:13:00+02:00</published><updated>2011-05-26T16:13:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-05-26:/2011/05/26/de-larduino-a-mes-retours-a-lelectronique/</id><summary type="html">&lt;p&gt;Depuis un petit moment, j'ai laissé de côté ce blog, pour plusieurs raisons : le travail, l'animation sur le portail &lt;a href="www.titanium-news.com"&gt;www.titanium-news.com&lt;/a&gt;, mais également car depuis quelques temps, je bidouille sur Arduino : une carte intégrant un microprocesseur en open-source, mais également un IDE également en open-source. Je vais dans les …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Depuis un petit moment, j'ai laissé de côté ce blog, pour plusieurs raisons : le travail, l'animation sur le portail &lt;a href="www.titanium-news.com"&gt;www.titanium-news.com&lt;/a&gt;, mais également car depuis quelques temps, je bidouille sur Arduino : une carte intégrant un microprocesseur en open-source, mais également un IDE également en open-source. Je vais dans les prochains temps me remettre à écrire plus ardemment, enfin je l'espère.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Le site &lt;a href="http://arduino.cc/"&gt;arduino.cc&lt;/a&gt; fourmille de documentation, de spécifications et d'exemple à propos de l'Arduino. Pour ma part, j'ai acheté le module sur &lt;a href="http://www.lextronic.fr"&gt;Lextronic&lt;/a&gt;, et j'ai reçu le colis sous 3 jours. Je recommande également de se munir d'un kit contenant différents composants électronique, des fils et une plaque de pratique (exemple de kit sur le &lt;a href="http://store.arduino.cc/eu/index.php?main_page=product_info&amp;amp;cPath=2&amp;amp;products_id=81"&gt;store.arduino.cc&lt;/a&gt;). Cela vous permettra de ne pas être bloquer au premier tutoriel.&lt;/p&gt;
&lt;p&gt;Une fois que vous aurez reçu tout ces éléments, vous pourrez commencer, tout comme moi, à vous amuser. Vous aurez cependant assez rapidement besoin de notions en électronique afin de ne pas faire griller vos composants (comme une de mes LEDs dernièrement). Pour ma part, la découverte de l'Arduino m'oblige à reprendre mes bases d'électronique (auxquelles je n'avais pas touché depuis près de 10ans, l'IUT c'est loin déjà ;-) ).&lt;/p&gt;
&lt;p&gt;Quelques idées de projet sont présentes dans mon esprit et je vais essayer de les mettre en place. Pour vous faire profiter de mes expériences, j'ai créé deux nouvelles catégories dans le blog : &lt;a href="https://www.alkannoide.com/category/arduino/"&gt;Arduino&lt;/a&gt; et &lt;a href="https://www.alkannoide.com/category/electronique/"&gt;Electronique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bonne bidouille.&lt;/p&gt;</content><category term="Arduino, Electronique"/></entry><entry><title>Push notification service chez Apple</title><link href="https://www.alkannoide.com/2011/03/02/push-notification-service-chez-apple/" rel="alternate"/><published>2011-03-02T14:44:00+01:00</published><updated>2011-03-02T14:44:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-03-02:/2011/03/02/push-notification-service-chez-apple/</id><summary type="html">&lt;p&gt;J'ai eu le retour de différentes personnes n'ayant pas compris totalement le mode de fonctionnement du service de push notification chez Apple. Je vais donc donner différents détails qui je l'espère permettrons de mieux comprendre le fonctionnement.&lt;/p&gt;
&lt;p&gt;Il est important de distinguer 3 entités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le terminal iOS utilisé ;&lt;/li&gt;
&lt;li&gt;le service …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;J'ai eu le retour de différentes personnes n'ayant pas compris totalement le mode de fonctionnement du service de push notification chez Apple. Je vais donc donner différents détails qui je l'espère permettrons de mieux comprendre le fonctionnement.&lt;/p&gt;
&lt;p&gt;Il est important de distinguer 3 entités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le terminal iOS utilisé ;&lt;/li&gt;
&lt;li&gt;le service de push chez Apple (que j'appellerais APNS) ;&lt;/li&gt;
&lt;li&gt;le service de push chez l'éditeur de l'application (que j'appellerais PushService) qui comporte une base de données.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le fonctionnement est le suivant :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;L'application est installé sur le téléphone d'un utilisateur. Ce dernier active les notifications pushs. Le terminal envoi une requête au PushService avec son UDID (Identifiant uniquement sous la forme d'une chaîne hexadécimale).&lt;/li&gt;
&lt;li&gt;Lors de l'arrivée d'un nouveau contenu, le PushService récupère l'ensemble des UDIDs enregistrés. Il se connecte ensuite à l'APNS via un socket SSL et transmet le message. Il est possible de définir le type de notification : soit badge, soit alerte, soit un son; accompagné d'un message.&lt;/li&gt;
&lt;li&gt;Les serveurs de pushs APNS chez Apple envoient ensuite la requête aux différents téléphones&lt;/li&gt;
&lt;li&gt;Les utilisateurs reçoivent sur leurs terminaux les notifications.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le délai est très souvent de quelques secondes entre l'envoi par PushService et la réception sur le terminal). PushService doit régulièrement effectuer une action complémentaire auprès du service de push Apple : récupéré la liste des UDIDs qui ne doivent plus recevoir de push notifications (ex : terminal indisponible, compte utilisateur apple fermé, etc...). Si cette action n'est pas réalisée, Apple se permettra de rendre indisponible l'envoi de push.&lt;/p&gt;
&lt;p&gt;A noter qu'actuellement, aucun service de push n'est disponible sur Android. Mais il semblerait que les développements soient en beta dans les labs.&lt;/p&gt;</content><category term="Analyse, iPhone, Mobile"/></entry><entry><title>[Coup de gueule] Méthodes de recrutements</title><link href="https://www.alkannoide.com/2011/02/28/coup-de-gueule-methodes-de-recrutements/" rel="alternate"/><published>2011-02-28T11:57:00+01:00</published><updated>2011-02-28T11:57:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-02-28:/2011/02/28/coup-de-gueule-methodes-de-recrutements/</id><summary type="html">&lt;ul&gt;
&lt;li&gt;on me propose le meilleur poste de ma carrière (dans une société que je ne connais pas de nom bien entendu), on discute durant une heure, vient ensuite la proposition d'entretien de visu. A ce moment-là, on me fait comprendre que l'on désire me voir vite. Problème : je dois débourser …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;on me propose le meilleur poste de ma carrière (dans une société que je ne connais pas de nom bien entendu), on discute durant une heure, vient ensuite la proposition d'entretien de visu. A ce moment-là, on me fait comprendre que l'on désire me voir vite. Problème : je dois débourser quelques centaines d'euros pour m'y rendre car ce dernier ne veut pas prendre les frais en charge. Chers recruteurs, n'oubliez pas que je suis déjà en poste et donc que j'ai autre chose à faire que de jeter par la fenêtre 400euros en transport / logement pour une heure d'entretien !&lt;/li&gt;
&lt;li&gt;on me contacte pour rejoindre une société; avec laquelle j'ai été en contact ou je suis en relation directe ou indirecte. Très souvent, ce sont des stagiaires qui ne connaissent pas les clients de leur SSII ou qui n'ont pas accès à l'historique des recrutements. Bref, je prends cette approche comme une sorte d'incompétence de la part de la société...&lt;/li&gt;
&lt;li&gt;lors d'un entretien, on m'a indiqué que la participation et l'intéressement était considéré comme du salaire fixe ! J'ai cru m'étouffer en entendant cela !&lt;/li&gt;
&lt;li&gt;on me demande mes défauts / qualités, trop souvent demandés lors d'entretien. Quel est le réel intérêt de cette question ! Selon les contextes professionnels, les défauts peuvent se transformer en qualité et vice-versa, tout dépend de la personne et ce n'est pas en 2h d'entretien que l'on peut voir cela.&lt;/li&gt;
&lt;li&gt;on me fait de la &lt;a href="http://fr.wikipedia.org/wiki/Programmation_Neuro-Linguistique"&gt;PNL&lt;/a&gt; : cet outil est un pure gag pour moi, surtout quand le candidat la connaît et sait comment la contourner. Il peut donc complètement modifier l'avis du recruteur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'ensemble des points ne sont que des exemples et ce ne sont pas les seuls... mais ils sont trop souvent présents lors des phases de recrutements. Je m'adresse donc à vous recruteurs : mesdames, messieurs, lorsque vous recrutez:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mettez les moyens qu'il faut pour faire réellement venir le candidat au sein de votre société (même si vous devez pour cela payer leurs déplacements) ;&lt;/li&gt;
&lt;li&gt;ne mettez pas des stagiaires (seul à seul) dans les phases de recrutements, notamment lors des entretiens face  à des candidats expérimentés, personnellement je prends cela pour un manque marquant de sérieux ;&lt;/li&gt;
&lt;li&gt;arrêtez de nous faire croire mont et merveille... nous ne sommes pas des juniors, on ne croit plus à vos promesses, on désire des faits réels et écrits sur le papier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je relative cependant mon discours en indiquant que certains recruteurs sont de réels pros qui savent comment réaliser les entretiens et ne suivent pas bêtement le manuel du recruteurs pour les nuls.&lt;/p&gt;
&lt;p&gt;Et vous, avez déjà eu ce type d'expérience, n'hésitez pas à en faire part ici.&lt;/p&gt;</content><category term="Coup de gueule"/></entry><entry><title>Python - MySQL (via MAMP sous Mac OS X)</title><link href="https://www.alkannoide.com/2011/02/09/python-mysql-via-mamp-sous-mac-os-x/" rel="alternate"/><published>2011-02-09T21:12:00+01:00</published><updated>2011-02-09T21:12:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-02-09:/2011/02/09/python-mysql-via-mamp-sous-mac-os-x/</id><summary type="html">&lt;p&gt;Je suis actuellement à la découverte de &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt;. A cet effet, je regardais la méthode pour me connecter à une base de données MySQL. J'ai passé pas mal de temps à configurer mon environnement, j'en profite donc pour vous faire profiter de mes remarques pour l'installation et la configuration du …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je suis actuellement à la découverte de &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt;. A cet effet, je regardais la méthode pour me connecter à une base de données MySQL. J'ai passé pas mal de temps à configurer mon environnement, j'en profite donc pour vous faire profiter de mes remarques pour l'installation et la configuration du module permettant l'intéraction BDD \&amp;lt;-&amp;gt; langage. Je travaille sous Mac OS X (Snow Leopard) avec MAMP et voici les différentes étapes permettant de se connecter à une base de donnée MySQL depuis Python.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Etape 1 : installé MySQL depuis les sources&lt;/h2&gt;
&lt;p&gt;Décompresser le fichier depuis le dossier où se trouve le fichier :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;tar xzvf mysql-5.1.55.tar.gz&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;cd mysql-5.1.37&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-shared --with-plugins=innobase&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;make&lt;/em&gt; (cette étape prends quelques minutes, on est tout de même en train de compiler MySQL)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sudo make install&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On s'arrête maintenant là pour la partie Server de MySQL.&lt;/p&gt;
&lt;h2&gt;Etape 2 : installé le module Python MySQLdb&lt;/h2&gt;
&lt;p&gt;On commence tout d'abord par définir dans l'environnement où se trouve les commandes MySQL via cette command&lt;/p&gt;
&lt;p&gt;&lt;em&gt;export PATH=\$PATH:/usr/local/mysql/bin/&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Vérifier ensuite que vous avez installé &lt;em&gt;setuptools&lt;/em&gt;, le cas échéant, vous pouvez télécharger sur &lt;a href="http://pypi.python.org/pypi/setuptools"&gt;le site&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il faut ensuite télécharger et décompresser le fichier suivant : &lt;a href="http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download"&gt;MySQLdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Effectuer ensuite les commandes suivantes :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sudo python setup.py clean&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sudo python setup.py build&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sudo python setup.py install&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Testez ensuite le module est bien installé. Pour cela, faites les commandes suivantes:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;cd&lt;/em&gt; (il est conseillé d'être dans un autre dossier que celui où se trouve le module MySQLdb)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;python&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;gt;&amp;gt;&amp;gt; import MySQLdb&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si aucune erreur ne s'affiche, c'est que le module est bien disponible.&lt;/p&gt;
&lt;h2&gt;Etape 3 : connexion depuis un script Python&lt;/h2&gt;
&lt;p&gt;Tout est prêt maintenant, je vais tenter de me connecter via le script de base (via la &lt;a href="http://www.kitebird.com/articles/pydbapi.html#TOC_3"&gt;documentation&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;conn = MySQLdb.connect(host = "localhost", user = "root",passwd = "root",db = "mysql")&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;cursor = conn.cursor()&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;cursor.execute ("DESCRIBE user")&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;rows = cursor.fetchall()&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;for row in rows:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;print row&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;cursor.close ()&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;conn.close ()&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Cependant une exception se lève&lt;/p&gt;
&lt;p&gt;En effet, vous n'utilisez pas le mysql compilé précédemment mais celui de MAMP, il faut donc rajouter un paramètre supplémentaire :&lt;/p&gt;
&lt;p&gt;Relancez votre script et le tour est joué, vous êtes connecté à votre base de donnée MySQL MAMP.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;Source : &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hivelogic.com/articles/compiling-mysql-on-snow-leopard"&gt;Installing MySQL on Snow Leopard&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.kitebird.com/articles/pydbapi.html"&gt;Writing MySQL Scripts with Python DB-API&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mysql-python.sourceforge.net/MySQLdb-1.2.2/"&gt;Documentation officielle&lt;/a&gt;&lt;/p&gt;</content><category term="Python"/></entry><entry><title>[Blog] Développer sur mobile via AppCelerator Titanium</title><link href="https://www.alkannoide.com/2011/02/07/blog-developper-sur-mobile-via-appcelerator-titanium/" rel="alternate"/><published>2011-02-07T10:03:00+01:00</published><updated>2011-02-07T10:03:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-02-07:/2011/02/07/blog-developper-sur-mobile-via-appcelerator-titanium/</id><summary type="html">&lt;p&gt;Je participe depuis quelques jours à un autre blog en français, avec &lt;a href="http://twitter.com/yannickgrammont"&gt;@yannickgrammont&lt;/a&gt; et &lt;a href="http://twitter.com/las92i"&gt;@las92i&lt;/a&gt;, parlant de Titanium : &lt;a href="http://www.titanium-news.com"&gt;titanium-news.com&lt;/a&gt;. Nous y aborderons l'ensemble de l'actualité, les mises à jour du SDK Titanium. Quelques tutoriels y verront également le jour. Un compte Twitter est également présent &lt;a href="http://twitter.com/titanium_news"&gt;@titanium_news&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Titanium est un …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je participe depuis quelques jours à un autre blog en français, avec &lt;a href="http://twitter.com/yannickgrammont"&gt;@yannickgrammont&lt;/a&gt; et &lt;a href="http://twitter.com/las92i"&gt;@las92i&lt;/a&gt;, parlant de Titanium : &lt;a href="http://www.titanium-news.com"&gt;titanium-news.com&lt;/a&gt;. Nous y aborderons l'ensemble de l'actualité, les mises à jour du SDK Titanium. Quelques tutoriels y verront également le jour. Un compte Twitter est également présent &lt;a href="http://twitter.com/titanium_news"&gt;@titanium_news&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Titanium est un outil permettant le développement d'applications sur mobile et/ou sur desktop. Développé par &lt;a href="http://www.appcelerator.com/"&gt;AppCelerator&lt;/a&gt;, il est en constante amélioration et prends en compte différents SDK natifs mobiles : iOS et Android. Blackberry est actuellement en cours de portage et devrait arriver prochainement.&lt;/p&gt;</content><category term="Applications, Javascript &amp;amp; co, Mobile"/></entry><entry><title>La fin de l'IP v4 proche ?</title><link href="https://www.alkannoide.com/2011/01/24/la-fin-de-lip-v4-proche/" rel="alternate"/><published>2011-01-24T11:38:00+01:00</published><updated>2011-01-24T11:38:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-01-24:/2011/01/24/la-fin-de-lip-v4-proche/</id><summary type="html">&lt;p&gt;Cela fait plusieurs années que l'on en parle, c'est dorénavant de l'actualité chaude. Depuis quelques années déjà, certaines entreprises ou institutions mettent en garde la communauté afin de migrer rapidement sur IPv6. Dans 8 jours, il n'y aura plus d'adresse IP v4.&lt;/p&gt;
&lt;p&gt;Quelques rappels sur l'IP v6. Son développement a …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Cela fait plusieurs années que l'on en parle, c'est dorénavant de l'actualité chaude. Depuis quelques années déjà, certaines entreprises ou institutions mettent en garde la communauté afin de migrer rapidement sur IPv6. Dans 8 jours, il n'y aura plus d'adresse IP v4.&lt;/p&gt;
&lt;p&gt;Quelques rappels sur l'IP v6. Son développement a démarré en 1993. L'adressage permet d'avoir un nombre beaucoup important d'adresses : sur 128 bits, soit 2^128 adresses au lieu de 32 bits (2^32) pour IP v4. La sécurité est également accrue grâce à l'intégration native d'&lt;a href="http://fr.wikipedia.org/wiki/IPsec"&gt;IPSec&lt;/a&gt;. Il est également à noter que tous les systèmes d'exploitation récents supportent cette nouvelle version d'IP v6.&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Les impacts de cette migration sont techniques et donc financiers. En effet, il ne suffit de pas de cliquer sur un bouton, il faut parfois mettre à jour le code, mais il peut être également obligatoire de changer les équipements physiques qui ne seraient plus compatibles avec cette nouvelle version. La migration peut également impacter les services en production et ainsi les rendre indisponible un certain temps. Bref, c'est une grosse migration à réaliser avec un protocole strict et bien défini; tout ceci avec l'objectif de réaliser la migration en un clic de souris ;-)&lt;/p&gt;
&lt;p&gt;Quelques articles à propos de la migration vers IPv6 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.pcinpact.com/actu/news/50010-google-ietf-ipv6-migration-decentralisation.htm"&gt;IPv6 : Google appelle à la migration pour un Internet décentralisé (PC Impact)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.certa.ssi.gouv.fr/site/CERTA-2006-INF-004/CERTA-2006-INF-004.html"&gt;Note d'information du CERTA sur la migration IPV6 (enjeu et sécurité)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zdnet.fr/blogs/infra-net/ipv6-il-y-a-urgence-a-migrer-selon-l-iana-et-la-commission-europeenne-mais-les-freins-sont-encore-nombreux-39752710.htm"&gt;IPv6 : il y a urgence à migrer, selon l'IANA et la Commission Européenne, mais les freins sont encore nombreux... (ZDNet.fr)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je rajoute ce widget, proposer par &lt;a href="http://www.inetcore.com/"&gt;iNetCore&lt;/a&gt;, pour voir le temps restant&lt;/p&gt;
&lt;p&gt;

&lt;script src="http://inetcore.com/project/ipv4ec/fr-FR/wolf_c.js" type="text/javascript"&gt;&lt;/script&gt;

&lt;/p&gt;</content><category term="Analyse"/></entry><entry><title>La veille a-t-elle un intérêt ?</title><link href="https://www.alkannoide.com/2011/01/21/la-veille-a-t-elle-un-interet/" rel="alternate"/><published>2011-01-21T10:48:00+01:00</published><updated>2011-01-21T10:48:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-01-21:/2011/01/21/la-veille-a-t-elle-un-interet/</id><summary type="html">&lt;p&gt;Cette question fait suite à la question posée lors d'un cours par un étudiant de Master 2.&lt;/p&gt;
&lt;p&gt;Pour commencer une définition de la veille s'impose : &lt;em&gt;à l'heure où le développement des entreprises s'avère étroitement lié à leur capacité d'adaptation et d'anticipation, disposer des bonnes informations devient une nécessité, pour prendre …&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Cette question fait suite à la question posée lors d'un cours par un étudiant de Master 2.&lt;/p&gt;
&lt;p&gt;Pour commencer une définition de la veille s'impose : &lt;em&gt;à l'heure où le développement des entreprises s'avère étroitement lié à leur capacité d'adaptation et d'anticipation, disposer des bonnes informations devient une nécessité, pour prendre des décisions argumentées et mener les actions adéquates&lt;/em&gt; (&lt;a href="http://www.cbre.de/fr_fr/metiers/marketing/marketing_lexique"&gt;source&lt;/a&gt;). La lecture de cette définition reflète tout l'intérêt de réaliser de la veille : anticiper et s'adapter à l'évolution dans le monde des entreprises.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sur la &lt;strong&gt;technologique&lt;/strong&gt; : évolution des langages de développement et de leurs écosystèmes, nouveaux outils et méthodes. Pour cela, le veilleur passe par les sites référents dans son domaine, les blogs et sites d'actualités spécialisées, mais également en réalisant des tests et/ou des benchmarks par lui-même.&lt;/li&gt;
&lt;li&gt;sur l'&lt;strong&gt;économie&lt;/strong&gt; : c'est en effet une suite logique de la veille technologie, je dirais même que les deux sont totalement complémentaires et indispensables l'une pour l'autre. A ce niveau, le veilleur s'empare de la presse et des médias plus traditionnel, cela lui permet de connaître le contexte dans lequel il évolue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une veille régulière permet l'innovation et la possibilité pour une entreprise de rester fortement concurrentielle. Trop souvent, les entreprises et formations restent trop le nez dans le guidon et oublient de permettre la réalisation de cette tâche. Il est primordial de réaliser de la veille, à la fois pour l'entreprise mais également pour soi-même.&lt;/p&gt;
&lt;p&gt;En conclusion, j'adresse deux messages :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aux responsables et managers: "Permettez à vos équipes de réaliser de la veille, les bénéfices seront alors conséquents".&lt;/li&gt;
&lt;li&gt;aux opérationnels : "N'oubliez jamais de rester à niveau sur l'actualité, il en va de votre évolution future..."&lt;/li&gt;
&lt;/ul&gt;</content><category term="Analyse"/></entry><entry><title>Interview - Retour sur WP7 vs iOS</title><link href="https://www.alkannoide.com/2011/01/20/interview-retour-sur-wp7-vs-ios/" rel="alternate"/><published>2011-01-20T13:00:00+01:00</published><updated>2011-01-20T13:00:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2011-01-20:/2011/01/20/interview-retour-sur-wp7-vs-ios/</id><summary type="html">&lt;p&gt;&lt;strong&gt;&lt;!--more--&gt;Pourrais-tu te présenter en quelques mots ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dominique Siacci :&lt;/strong&gt; je m'appelle Dominique Siacci, 21 ans, j'ai créé DuoApps avec mon associé au début de l'année 2009 à la fin de mes études. Nous développons des applications mobiles sur iPhone, iPad, Android et Windows Phone. La structure a un peu évolué entre …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;&lt;!--more--&gt;Pourrais-tu te présenter en quelques mots ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dominique Siacci :&lt;/strong&gt; je m'appelle Dominique Siacci, 21 ans, j'ai créé DuoApps avec mon associé au début de l'année 2009 à la fin de mes études. Nous développons des applications mobiles sur iPhone, iPad, Android et Windows Phone. La structure a un peu évolué entre temps (nous sommes désormais 4 dans l'équipe), et j'assure aujourd'hui seul la gestion de l'entreprise.&lt;/p&gt;
&lt;p&gt;Mon profil est plutôt un profil technique (je suis développeur web à l'origine) et j'ai beaucoup développé sur iOS, notamment au démarrage de notre entreprise.&lt;/p&gt;
&lt;p&gt;Plus loin dans cette interview, j'ai sollicité Christelle Thiry, qui est en charge des développements Android et Windows Phone 7 chez DuoApps afin qu'elle puisse apporter un point de vue plus technique que le mien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tu travailles depuis 2 ans maintenant sur iOS, qu’est ce qui t’a séduit dans ce langage ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DS :&lt;/strong&gt; Incontestablement, iOS, l'Objective-C, le framework Cocoa Touch, et par extension la procédure de validation des applications par Apple, imposent une certaine rigueur qui me semble saine. Au départ, j'avoue avoir été complètement désorienté, notamment à cause des problématiques à résoudre qui sont complètement différentes du développement web. La syntaxe d'Objective-C, qui est un langage très verbeux, est aussi déstabilisante, mais au final, il s'avère beaucoup plus logique à utiliser que n'importe quel autre langage.&lt;/p&gt;
&lt;p&gt;Ce qui est plus plus attirant dans cette technologie est sans conteste iOS lui même, et plus généralement les terminaux (iPhone, iPad, etc.) qui ouvrent des possibilités extraordinaires dans la conception d'applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows Phone 7 est sorti depuis peu. Tu as réalisé une première application. Que penses-tu de ce nouvel environnement ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DS :&lt;/strong&gt; Très honnêtement, Windows Phone 7 me semble être le premier OS à pouvoir réellement prétendre faire concurrence à iOS. C'est pour cela que nous avons fait le choix de former quelqu'un à cette technologie. C'était une sorte de pari, car à l'époque où nous avons débuté le développement (c'est à dire cet été), nous n'avions pas eu l'occasion de tester un device en réel. Cela dit, nos impressions se sont confirmées très vite, lorsque nous avons pu disposer d'un téléphone prêté par Microsoft.&lt;/p&gt;
&lt;p&gt;Sur le modèle de distribution, WP7 est davantage comparable à Android qu'à iOS, avec une offre de devices élargie. Microsoft a d'ailleurs fait un très bon choix en imposant des spécifications très strictes aux constructeurs, ce qui permettra peut-être d'éviter l'hétérogénéité calamiteuse d'Android. Sur tous ces points (qualité des devices, qualité de l'ergonomie du système, qualité des outils de développement), Windows Phone surpasse largement Android.&lt;/p&gt;
&lt;p&gt;Nous avons commencé par développer l'application de l'hebdomadaire Marianne, ce qui lui a permis d'être parmi les deux premiers titres de presse français (avec Le Figaro) présents lors du lancement de la plate-forme. L'équipe web de Marianne est très dynamique, et il est très appréciable de travailler avec des gens conscients des enjeux du mobile.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plus précisément  que est ton avis les outils de développements et du langage ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DS :&lt;/strong&gt; J'avoue ne pas avoir développé moi-même l'application de Marianne, il s'agit de notre développeuse Android, qui a consacré un peu plus de deux mois à se former sur cette nouvelle plate-forme. Cependant, j'ai suivi d'assez près le développement, et je dois dire que les outils me semblent très bien conçus. Microsoft a clairement fait de gros efforts. De plus, Silverlight est un framework qui a fait ses preuves, et qui présente une communauté assez importante - ce qui n'était de fait pas le cas d'iOS à sa sortie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Christelle Thiry :&lt;/strong&gt; Les outils ainsi que le langage sont très stables. Cet environnement de développement était déjà très utilisé avant la sortie de WP7.&lt;/p&gt;
&lt;p&gt;Le framework Siverlight est vraiment bien pensé, ce qui, je trouve, permet une programmation très intuitive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Est-ce comparable à iOS ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DS :&lt;/strong&gt; On sent clairement qu'il reste du chemin à parcourir à Microsoft avant d'atteindre le niveau d'iOS. Cependant, il y a tout de même près de quatre ans et quatre versions d'écart entre les deux systèmes. Mais je pense sincèrement que la comparaison n'a pas à se faire avec iOS, plutôt avec Android. iOS et WP7 ont vocation à perdurer tous les deux, dans une complémentarité assez bonne. Ce sont deux approches ergonomiques réellement différentes, deux approches de commercialisation différentes...&lt;/p&gt;
&lt;p&gt;Personnellement je fais confiance à Microsoft pour faire évoluer son système dans le bon sens, en ne commettant pas les mêmes erreurs que Google. A mes yeux, Android est un casse-tête pour les développeurs. Il y a aujourd'hui 4 versions de l'OS qui cohabitent, ce qui nous empêche clairement de pouvoir franchir un pas fonctionnel. On est de fait obligés d'assurer la rétro-compatibilité de nos applications ce qui est assez contrariant...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CB :&lt;/strong&gt; A mon sens, les outils de développement WP7 peuvent facilement être comparés à ceux d'iOS dans la mesure où ils facilitent vraiment le développement, ce qui n'est pas le cas du SDK Android. En revanche, au niveau du fonctionnement de l'OS, WP7 est beaucoup plus semblable à Android. Je parle surtout du cycle de vie d'une application. Bien sûr, au niveau de l'OS, il manque encore quelques fonctionnalités clefs pour rattraper iOS et Android (comme le multi-tâches).&lt;/p&gt;
&lt;p&gt;Pour moi il n'y a pas de comparaison possible au niveau du développement en lui-même entre WP7 et Android. La programmation Android est très contraignante, et je ne parle même pas de la partie test et débugage de l'application avant la publication. En effet, il est impossible de tester une application sur tous les types de devices existants, que ce soit au niveau physique ou au niveau logiciel. En revanche, la publication immédiate sur l'Android Market (sans passer par un processus de certification) est vraiment très pratique du point de vue du développeur… Sur ce point, Microsoft a opté pour le même modèle qu'Apple.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(NDLR : Christelle n'a jamais développé sous iOS, mais elle a une bonne année d'expérience sur Android)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qu’en est-il de l’intégration graphique ? Est-ce comparable à l’Interface Builder pour iOS ou à l’intégration plus laborieuse sous Android ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CT :&lt;/strong&gt; N'ayant jamais développé pour iOS, je ne pourrais dire si l'intégration graphique est comparable à Interface Builder. En revanche, je peux dire qu'elle est beaucoup plus aisée que sur Android, grâce notamment à l'outil Expression Blend.&lt;/p&gt;
&lt;p&gt;De plus les éléments graphiques du framework WP7 sont plus aboutis, Google n'ayant pas du tout joué sur l'esthétique pour son système.  Le problème, ou l'avantage, avec Android c'est que même au niveau de l'intégration graphique c'est totalement libre, ce qui donne une multitude de styles graphiques pour les applications, donc beaucoup d'hétérogénéité.&lt;/p&gt;
&lt;p&gt;Et encore une fois le gros point noir de l'intégration graphique pour Android c'est le parc très large de modèles de devices (taille et résolution d'écran, clavier physique ou pas…). Microsoft étant beaucoup plus restrictif sur ce plan l'intégration graphique est plus simple et beaucoup plus gratifiante pour le développeur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Merci à tous les deux.&lt;/strong&gt;&lt;/p&gt;</content><category term="Interview, Mobile"/></entry><entry><title>Retour sur les conférences du ForumPHP (jour 2)</title><link href="https://www.alkannoide.com/2010/11/15/retour-sur-les-conferences-du-forumphp-jour-2/" rel="alternate"/><published>2010-11-15T13:24:00+01:00</published><updated>2010-11-15T13:24:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-11-15:/2010/11/15/retour-sur-les-conferences-du-forumphp-jour-2/</id><summary type="html">&lt;h2&gt;&lt;!--more--&gt;Déboguer son code - Xdebug&lt;/h2&gt;
&lt;p&gt;Xdebug est un outil développé et maintenu par Derick Rethans (http://derickrethans.nl). Il possède deux fonctionnalités : debug et profiling.&lt;/p&gt;
&lt;p&gt;Derick nous présente une grande partie des éléments de configuration afin de réaliser les traces de debug les plus explicites possibles : ajout direct vers les fichiers …&lt;/p&gt;</summary><content type="html">&lt;h2&gt;&lt;!--more--&gt;Déboguer son code - Xdebug&lt;/h2&gt;
&lt;p&gt;Xdebug est un outil développé et maintenu par Derick Rethans (http://derickrethans.nl). Il possède deux fonctionnalités : debug et profiling.&lt;/p&gt;
&lt;p&gt;Derick nous présente une grande partie des éléments de configuration afin de réaliser les traces de debug les plus explicites possibles : ajout direct vers les fichiers présentant des problèmes, gestion de l'affichage des &lt;em&gt;var_dump&lt;/em&gt; (profondeur d'affichage), etc...&lt;/p&gt;
&lt;p&gt;Ensuite il nous présente la possibilité de faire du profiling et d'interpréter les données récupérées. Pour cela, un petit tour dans la configuration et ensuite des applications tierces sont mises à contribution : &lt;a href="http://kcachegrind.sourceforge.net/html/Home.html"&gt;KCacheGrind&lt;/a&gt; ou &lt;a href="http://code.google.com/p/webgrind/"&gt;WebGrind&lt;/a&gt;. Des plugins sont (seront) disponibles pour les différents IDE afin de travailler "en live" avec le serveur.&lt;/p&gt;
&lt;h2&gt;Un site web performant, tout est dans le réseau et le navigateur&lt;/h2&gt;
&lt;p&gt;Eric Daspet nous présente quelques méthodes afin d'augmenter les performances. Avant cela, des chiffres nous font prendre connaissances des effets bénéfiques de la performance d'un site web. Qui dit performance, dit augmentation potentielle du revenu et du business liée au site en question.&lt;/p&gt;
&lt;p&gt;Nous rentrons ensuite dans des aspects plus techniques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sur un appel de page : 5% du traitement est réalisé en back-end et 95% en front-end&lt;/li&gt;
&lt;li&gt;4 à 6 requêtes en parallèle par domaine sont possibles avec les derniers navigateurs, il est donc important de gérer au mieux /images, CSS, JS&lt;/li&gt;
&lt;li&gt;mise en place de la compression Gzip, utilisation des Etags et autres entête de cache HTTP&lt;/li&gt;
&lt;li&gt;utilisation de sprites pour les /images&lt;/li&gt;
&lt;li&gt;regroupements des multiples fichiers CSS en un 1 seul (même chose pour les JS)&lt;/li&gt;
&lt;li&gt;appel des JS externes avant le \&amp;lt;/body&amp;gt; afin d'augmenter l'affichage de la page&lt;/li&gt;
&lt;li&gt;utilisation du KeepAlive au niveau de la configuration Apache afin de réduire les temps de connexions TCP (à utiliser avec attention car elle augmente la charge CPU des serveurs).&lt;/li&gt;
&lt;li&gt;amélioration de la gestion des DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout ceci afin de réduire les temps de latence et ainsi augmenter la performance du site.&lt;/p&gt;
&lt;h2&gt;Attaque sur les webservices&lt;/h2&gt;
&lt;p&gt;L'intervenant Renaud Bidou présente dans un premier temps la structure fonctionnelle des webservices puis les différentes technologies différentes. Je pensais connaître assez bien cet aspect, cela m'a permis d'en apprendre plus.&lt;/p&gt;
&lt;p&gt;Des attaques par Xpath, DOS, XSLT, avec le &lt;em&gt;pipe&lt;/em&gt; sont présentés et sont, pour moi, assez flippantes de par leurs simplicités de mise en place.&lt;/p&gt;
&lt;p&gt;On retiendra : "plus le code est complexe à relire, plus il sera complexe à maintenir et moins la sécurité sera importante !"&lt;/p&gt;
&lt;p&gt;Une conférence intéressante car elle aborde un sujet de plus en plus sensible et présent pour les sociétés; Je regrette tout de même que le terme webservice ait été associé à SOAP lors de la conf et que le REST n'ait été que survolé.&lt;/p&gt;
&lt;p&gt;Un excellent ForumPHP qui m'a permis de revoir certaines personnes, d'en découvrir de nouvelles. J'attends la fin d'année prochaine pour l'édition 2011, qui ne fêtera elle aucun anniversaire...&lt;/p&gt;</content><category term="Conférence, Mobile"/><category term="PHP"/></entry><entry><title>Retour sur les conférences du ForumPHP (jour 1)</title><link href="https://www.alkannoide.com/2010/11/10/retour-sur-les-conferences-du-forumphp-jour-1/" rel="alternate"/><published>2010-11-10T22:43:00+01:00</published><updated>2010-11-10T22:43:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-11-10:/2010/11/10/retour-sur-les-conferences-du-forumphp-jour-1/</id><summary type="html">&lt;h2&gt;&lt;!--more--&gt;Développer une application mobile avec Flex et PHP&lt;/h2&gt;
&lt;p&gt;C'est Michael Chaize (&lt;a href="http://twitter.com/mchaize"&gt;@mchaize&lt;/a&gt;) qui est aux commandes. Il présente dans un premier temps l'historique de Flash puis Flex. On se rappellera par exemple que Flash adopte le riche media à partir de 2006 mais également qu'à l'heure actuelle : 75% des lecteurs …&lt;/p&gt;</summary><content type="html">&lt;h2&gt;&lt;!--more--&gt;Développer une application mobile avec Flex et PHP&lt;/h2&gt;
&lt;p&gt;C'est Michael Chaize (&lt;a href="http://twitter.com/mchaize"&gt;@mchaize&lt;/a&gt;) qui est aux commandes. Il présente dans un premier temps l'historique de Flash puis Flex. On se rappellera par exemple que Flash adopte le riche media à partir de 2006 mais également qu'à l'heure actuelle : 75% des lecteurs de vidéos tournent avec Flash.&lt;/p&gt;
&lt;p&gt;Flash 10.1 est ensuite abordé, une véritable révolution. En effet, cette dernière mouture prend en charge tous les types d'équipements. Auparavant, Flash était uniquement disponible sur Mac, PC et Linux. Dorénavant, il est également disponible sur mobile, tablette et GoogleTV.&lt;/p&gt;
&lt;p&gt;Pour les applications disponibles sur iOS (iPad et iPhone), c'est l'&lt;a href="http://labs.adobe.com/technologies/packagerforiphone/"&gt;iOS packager&lt;/a&gt; permet de compiler l'application.&lt;/p&gt;
&lt;p&gt;Michael aborde ensuite &lt;a href="http://fr.wikipedia.org/wiki/Action_Message_Format"&gt;AMF&lt;/a&gt; et propose l'exemple suivant : 5000 lignes. Ces 5000 lignes disponibles au format XML pèseront 1,1Mo. Avec AMF, le poids est réduit à 21ko. C'est un atout non négligeable dans le cas d'application mobile. Bien sûr, nous sommes au ForumPHP, il nous présente donc le SDK AMF pour PHP (très simple à mettre en place).&lt;/p&gt;
&lt;p&gt;En conclusion, on retiendra que Flex permet de gérer l'ensemble de l'animation Front-End et PHP s'occupera de toute la logique métier d'une application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terrible audit de sécurité&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Damien Seguy nous parle d'un "Terrible Audit de Sécurité". Terrible dans le sens où très souvent, l'audit fait peur aux entreprises, notamment un audit de sécurité. L'objectif est de vulgariser la manière dont se réalise l'audit, afin de permettre de le renseigner soi-même son protocole d'audit de sécurité.&lt;/p&gt;
&lt;p&gt;Il nous explique les différentes phrases d'un audit et commence par la mise en place d'un référentiel de sécurité qui exposera les différents axes et en les détaillant. Pour cela, il est possible de s'appuyer sur différentes références : OSWASP, ISO, etc.. En résumé, il faut rédiger un référentiel, le convertir en code à éviter ou recommander et le vérifier soi-même.&lt;/p&gt;
&lt;p&gt;Comme à chaque fois, la conférence de Damien est très pédagogique, un réel plaisir. Je me dit que l'audit de sécurité pourrait être le sujet d'un Barcamp...&lt;/p&gt;
&lt;h2&gt;Optimisation des performances LAMP&lt;/h2&gt;
&lt;p&gt;Cyril Pierre de Geyer et Guillaume Plessis nous présentent cette conférence orientée sur les aspects systèmes et permettant d'améliorer la disponibilité d'une infrastructure LAMP. On passe d'abord en revue les outils permettant de réaliser du monitoring de plateforme : de Nagios à Zend Platform en passant par Cacti ou Pimba. Les conférenciers nous présentent également comment réaliser des tirs de charge. Pour cela, les outils ApacheBench ou encore Jmeter nous sont présentés.&lt;/p&gt;
&lt;p&gt;En résumé, cela nous donne un aperçu global des outils et informations qui permettent d'optimiser sa plateforme.&lt;/p&gt;
&lt;h4&gt;&lt;em&gt;Slides&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://www.slideshare.net/mchaize/flex-et-php-pour-dvelopper-des-applications-mobiles"&gt;Voir la présentation : développer une application mobile avec Flex et PHP&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="http://joind.in/2086"&gt;&lt;em&gt;Voir la présentation : optimisation des plateformes LAMP&lt;/em&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content><category term="Conférence, Mobile"/><category term="PHP"/></entry><entry><title>Suite de la discussion sur ma question du jour</title><link href="https://www.alkannoide.com/2010/11/05/suite-de-la-discussion-sur-ma-question-du-jour/" rel="alternate"/><published>2010-11-05T11:46:00+01:00</published><updated>2010-11-05T11:46:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-11-05:/2010/11/05/suite-de-la-discussion-sur-ma-question-du-jour/</id><summary type="html">&lt;p&gt;Aujourd'hui, je me suis posé une question et je l'ai partagé sur Twitter, en voici le contenu :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dans une archi complexe, les différentes fonctions ne devraient-elles pas etre sur une logique de webservice ? Ceci afin d'assurer maintenance, évolutivité, flexibilité et migration mieux adapté. Des avis ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ludobos"&gt;@ludobos&lt;/a&gt; a repris cette question …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Aujourd'hui, je me suis posé une question et je l'ai partagé sur Twitter, en voici le contenu :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Dans une archi complexe, les différentes fonctions ne devraient-elles pas etre sur une logique de webservice ? Ceci afin d'assurer maintenance, évolutivité, flexibilité et migration mieux adapté. Des avis ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/ludobos"&gt;@ludobos&lt;/a&gt; a repris cette question autrement et je trouve la question tout à fait adaptée :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;dans un monde cross-plateform, le dev site html multi-browser a-t-il un sens ? quid des applis ?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Qu'en pensez vous ? Quel est votre avis sur le sujet ?&lt;/p&gt;</content><category term="Développement web, Mobile"/></entry><entry><title>Sigle et débit 3G sont différents, pourquoi ?</title><link href="https://www.alkannoide.com/2010/11/04/sigle-et-debit-3g-sont-differents-pourquoi/" rel="alternate"/><published>2010-11-04T22:27:00+01:00</published><updated>2010-11-04T22:27:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-11-04:/2010/11/04/sigle-et-debit-3g-sont-differents-pourquoi/</id><summary type="html">&lt;p&gt;J'entends souvent "j'ai le sigle 3G mais le contenu de ton application ne remonte, le bug vient de ton application". Etant donné qu'une réponse en 1 phrase n'existe pas vraiment, je vais le faire en plusieurs lignes par ce billet et plutôt qu'un long discours, rien ne vaut un bon …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'entends souvent "j'ai le sigle 3G mais le contenu de ton application ne remonte, le bug vient de ton application". Etant donné qu'une réponse en 1 phrase n'existe pas vraiment, je vais le faire en plusieurs lignes par ce billet et plutôt qu'un long discours, rien ne vaut un bon schéma pour expliquer les différents éléments en place.&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2010/11/wireless-network.jpg" title="wireless-network" class="aligncenter size-full wp-image-157" width="600" height="136" /&gt;&lt;/p&gt;
&lt;p&gt;Le principe est le suivant : un utilisateur lance une application récupérant des informations depuis un serveur web. Cette demande est transmise :&lt;/p&gt;
&lt;p&gt;1) par les ondes radios depuis le téléphone jusqu'à l'antenne relais (ou &lt;a href="http://fr.wikipedia.org/wiki/Base_Transceiver_Station"&gt;Base Transceiver Station&lt;/a&gt; ou BTS), selon différentes technologies &lt;a href="http://fr.wikipedia.org/wiki/High_Speed_Downlink_Packet_Access"&gt;3G+&lt;/a&gt; (débit de 4Mbits/s en pratique) , &lt;a href="http://fr.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System"&gt;3G&lt;/a&gt; (2MBits/s), &lt;a href="http://fr.wikipedia.org/wiki/Enhanced_Data_Rates_for_GSM_Evolution"&gt;EDGE&lt;/a&gt; (473 kbit/s).&lt;/p&gt;
&lt;p&gt;2) cette antenne est connectée au réseau interne de l'opérateur. Le &lt;a href="http://fr.wikipedia.org/wiki/D%C3%A9bit_binaire"&gt;débit&lt;/a&gt; entre la BTS et le réseau de l'opérateur n'est pas le même d'une antenne à l'autre. Il peut aller de quelques Mbits/s à plusieurs dizaines (voire centaines) de MBits/s suivant la zone géographique où l'antenne se trouve.&lt;/p&gt;
&lt;p&gt;3) la demande émise sort alors du réseau de l'opérateur pour entrer dans le réseau internet.&lt;/p&gt;
&lt;p&gt;On voit qu'aux deux premiers niveaux, le débit diffère très facilement. Prenons différents exemple afin de mieux comprendre.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="text-decoration: underline;"&gt;Exemple 1:&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; L'antenne sur laquelle mon téléphone est connecté, possède un débit avec le réseau opérateur d'environ 100MBits/s. Nous sommes 25 à naviguer sur l'internet mobile. En théorie, nous aurons environ 100Mbits/s divisés par 25 utilisateurs = 4 Mbits/s pour chaque utilisateur. Si la BTS permet l'accès à la technologie 3G+, je pourrais donc avoir le max du débit, cela permet donc une navigation très fluide.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="text-decoration: underline;"&gt;Exemple 2 :&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; Même contexte que l'exemple 1, mis à part qu'au lieu d'être 25, je suis 1000 connecté sur la même antenne. Le calcul donne 100 / 1000 = 0,1 Mbits/s soit 100kbits/s. On voit donc que plus il y a de personnes connectés sur la même antenne, plus le débit chute. Même si mon téléphone indique 3G, je serais limité à un débit de 100kbits/s théorique.&lt;/p&gt;
&lt;p&gt;En résumé, il faut retenir que lorsque le sigle 3G est indiqué, le débit disponible ne sera pas automatiquement le débit maximum de la 3G.&lt;/p&gt;
&lt;p&gt;NB : attention, ceci est bien entendu la théorie, en pratique, il faut également prendre le fait que l'onde radio (entre le téléphone et l'antenne) peut être altérée et réduite par les obstacles. De plus, il est important de savoir que le réseau est divisé en deux : le trafic voix (les appels téléphoniques) et le trafic data (internet mobile). Sur ces deux sources de trafic, la voix restera prioritaire.&lt;/p&gt;</content><category term="Mobile"/></entry><entry><title>Brevets et lobbying : la guerre du mobile en cours</title><link href="https://www.alkannoide.com/2010/10/07/guerre-des-brevets-et-lobbying-la-guerre-du-mobile-est-en-cours/" rel="alternate"/><published>2010-10-07T11:18:00+02:00</published><updated>2010-10-07T11:18:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-10-07:/2010/10/07/guerre-des-brevets-et-lobbying-la-guerre-du-mobile-est-en-cours/</id><summary type="html">&lt;div id="_mcePaste"&gt;

On remarque actuellement que la guerre fait fortement rage dans le monde mobile, les grands acteurs des nouvelles technologies étant sur le qui-vive. Un petit récapitulatif des faits sur les 10 derniers jours :

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

\- [Google tape du pied  une fois de plus à Nokia](http://www.mobile-ocean.com/google-veut-convaincre-nokia-d-utiliser-android--id=4836.html …&lt;/div&gt;</summary><content type="html">&lt;div id="_mcePaste"&gt;

On remarque actuellement que la guerre fait fortement rage dans le monde mobile, les grands acteurs des nouvelles technologies étant sur le qui-vive. Un petit récapitulatif des faits sur les 10 derniers jours :

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

\- [Google tape du pied  une fois de plus à Nokia](http://www.mobile-ocean.com/google-veut-convaincre-nokia-d-utiliser-android--id=4836.html), Google souhaite en effet voir des terminaux mobiles by Nokia

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

\- [Google vs Oracle](http://www.mobile-ocean.com/android-google-accuse-oracle-de-mauvaise-foi--id=4876.html%20), Oracle est agressif au sujet d'Android qui se base sur Java

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

\- [Apple vs Nokia](http://pro.clubic.com/it-business/actualite-369046-apple-attaque-nokia-brevets-royaume-uni.html%20)

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

\- [Microsoft vs Motorola/Google](http://www.itespresso.fr/violation-brevets-microsoft-defie-motorola-google-android-36904.html%20)

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

J'imagine déjà ce qui pourrait se passer sur le marché TV... cela promet

&lt;/div&gt;</content><category term="Android, iPhone, Mobile"/></entry><entry><title>Les grandes phases d'un projet mobile</title><link href="https://www.alkannoide.com/2010/10/07/les-grandes-phases-dun-projet-mobile/" rel="alternate"/><published>2010-10-07T10:24:00+02:00</published><updated>2010-10-07T10:24:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-10-07:/2010/10/07/les-grandes-phases-dun-projet-mobile/</id><summary type="html">&lt;p&gt;Cet article a pour but d'avoir une vision globale des différentes grandes étapes d'un projet mobile. Ces phases sont analogues à un projet classique informatique.&lt;/p&gt;
&lt;h2&gt;&lt;!--more--&gt;Expression de besoin&lt;/h2&gt;
&lt;p&gt;Cette partie permet d’aider les équipes MOA à mieux définir le périmètre de leur projet mobile.&lt;/p&gt;
&lt;p&gt;Le Consultant sera d’assister …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Cet article a pour but d'avoir une vision globale des différentes grandes étapes d'un projet mobile. Ces phases sont analogues à un projet classique informatique.&lt;/p&gt;
&lt;h2&gt;&lt;!--more--&gt;Expression de besoin&lt;/h2&gt;
&lt;p&gt;Cette partie permet d’aider les équipes MOA à mieux définir le périmètre de leur projet mobile.&lt;/p&gt;
&lt;p&gt;Le Consultant sera d’assister les équipes mais également à les orienter au mieux à la fois sur les problématiques produits et fonctionnelles mais il anticipe également les problématiques techniques.&lt;/p&gt;
&lt;p&gt;Le Consultant aidera également à répondre aux problématiques de contributions multi-écrans : web, mobile, …&lt;/p&gt;
&lt;h2&gt;Spécifications fonctionnelles&lt;/h2&gt;
&lt;h3&gt;Spécifications&lt;/h3&gt;
&lt;p&gt;Ce document définit l’ensemble des fonctionnalités de l’application. Etant dans le monde applicatif,  il est important de prendre en compte les actions non visibles. Exemple : que se passe-t-il lorsqu’un utilisateur se connecte.&lt;/p&gt;
&lt;p&gt;Il est important de prendre également en compte l’ergonomie de l’application, tout en respectant les Guidelines des SDK. C’est un autre des rôles important du consultant.&lt;/p&gt;
&lt;h3&gt;Création graphique&lt;/h3&gt;
&lt;p&gt;La création graphique permettra de finaliser la définition d’un projet. En effet, il est possible lors de la phase de conception graphique de répondre à des problématiques ergonomiques.&lt;/p&gt;
&lt;h2&gt;Spécifications techniques&lt;/h2&gt;
&lt;p&gt;Les deux phases suivantes peuvent être parallélisées. On définit :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L’architecture de l’application : cette partie est fortement en relation avec les spécifications fonctionnelles et prends également en compte les Guidelines des différents SDK.&lt;/li&gt;
&lt;li&gt;L’architecture, le format des webservices (politique de cache, type de webservices, etc…). Ces derniers impacteront les équipes SI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Maitrise d’œuvre&lt;/h2&gt;
&lt;h3&gt;Développements&lt;/h3&gt;
&lt;p&gt;Tout comme les spécifications techniques, les développements peuvent être effectués en parallèle. On distingue :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les développements de l’application en elle-même (voire ses différentes versions suivants les SDKs)&lt;/li&gt;
&lt;li&gt;les développements des webservices qui impactent les Systèmes d’Informations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Recette&lt;/h3&gt;
&lt;p&gt;C’est la phase la plus importante d’un projet. Suivant le temps de développements, on pourra définir une livraison hebdomadaire de l’application. Ceci permettra à la fois au Delivery Manager d’assurer le suivi et également aux équipes produits (à partir de la 2&lt;sup&gt;ème&lt;/sup&gt; moitié du temps) de voir les évolutions des développements.&lt;/p&gt;
&lt;h2&gt;Soumission&lt;/h2&gt;
&lt;p&gt;Pour les applications, deux options se présentent :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soumissions avec validation à priori pour Apple (les temps approximatifs de validation pourront être transmis au démarrage des développements)&lt;/li&gt;
&lt;li&gt;soumissions avec validation à posteriori pour Google : l’application est directement disponible sur le Market Place&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour les web-applications, le principe est le même que les sites internets.&lt;/p&gt;</content><category term="Gestion de projet, Mobile"/></entry><entry><title>Interaction entre projet web et projet mobile</title><link href="https://www.alkannoide.com/2010/09/16/interaction-entre-projet-web-et-projet-mobile/" rel="alternate"/><published>2010-09-16T20:57:00+02:00</published><updated>2010-09-16T20:57:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-09-16:/2010/09/16/interaction-entre-projet-web-et-projet-mobile/</id><summary type="html">&lt;p&gt;Je poursuis l'exploration du monde du projet mobile. Aujourd'hui, j'aborde les interactions entre les projets mobiles et les projets webs.&lt;/p&gt;
&lt;p&gt;Je séparerais les projets mobiles en 3 types :&lt;/p&gt;
&lt;p&gt;1) standalone (que je n'aborde pas, ce n'est pas le sujet);&lt;/p&gt;
&lt;p&gt;2) apporte un complément au projet web (ou vice-versa);&lt;/p&gt;
&lt;p&gt;3) "copie …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je poursuis l'exploration du monde du projet mobile. Aujourd'hui, j'aborde les interactions entre les projets mobiles et les projets webs.&lt;/p&gt;
&lt;p&gt;Je séparerais les projets mobiles en 3 types :&lt;/p&gt;
&lt;p&gt;1) standalone (que je n'aborde pas, ce n'est pas le sujet);&lt;/p&gt;
&lt;p&gt;2) apporte un complément au projet web (ou vice-versa);&lt;/p&gt;
&lt;p&gt;3) "copie" le web.&lt;/p&gt;
&lt;p&gt;Si le système d'information (SI) est déjà présent, il est important d'analyser l'adaptation et le rendu des informations disponibles sur mobile. Je recommande d'ailleurs fortement d'effectuer cette analyse dans le cadre d'une pré-étude d'un projet. Ceci permettra alors d'anticiper les problèmes et évolutions techniques tout en impactant le moins possible l'ensemble des acteurs qui auront à intervenir sur le SI.&lt;/p&gt;
&lt;p&gt;Lors de la création d'un système d'information, il est nécessaire d'analyser et de rendre disponible un mode de contribution à la fois user-friendly mais également répondant aux attentes en terme de rendu sur le web et sur le mobile. La prise en compte de ce paramètre est l'un des facteurs de réussite d'un projet web/mobile.&lt;/p&gt;
&lt;p&gt;L'animation est un autre sujet sur lequel, il est important de poser la question suivante : mon produit mobile va être animé de la même manière que mon produit web.&lt;/p&gt;
&lt;p&gt;L'animation identique entre le web implique une mise à disposition des informations contenus dans le SI sur les deux cibles : web et mobile. Par exemple, un visuel pourrait être disponible dans un format "pivot"  permettant ainsi un traitement adéquat.&lt;/p&gt;
&lt;p&gt;Lors d'une animation différente, il est important de faciliter le travail des animateurs du service. Dans les deux cas, associer les contributeurs du service (un des deux grands utilisateurs du SI) lors de la création et la mise en place des interfaces d'animation, est un autre facteur de la réussite d'un projet.&lt;/p&gt;
&lt;p&gt;Enfin, la technique est l'élément central. Un projet informatique n'est pas réalisable sans technique, c'est à la technique que les fondations sont définis et réalisés, tout comme un maçon construit une maison ! Certains risquent de bondir en lisant cela, mais c'est mon point de vue. Bref, il est très important que le noyau technique soit à la fois solide, robuste et agile. Plusieurs techniques d'architecture, de développements et de mise en place sont disponibles et réalisables.&lt;/p&gt;
&lt;p&gt;Il ne faut pas non plus oublier que réaliser un projet mobile ouvre une porte extérieure supplémentaire et qu'il ne faut pas prendre à la légère la mise en place, par exemple de service web.&lt;/p&gt;
&lt;p&gt;Un projet mobile est comme un projet web; il rajoute "juste" des contraintes supplémentaires, tout particulièrement lorsque ces derniers sont liés. Il est très important de prendre en compte l'avis de tout le monde en amont d'un projet, afin de répondre au mieux à leur attente.&lt;/p&gt;</content><category term="Gestion de projet, Mobile"/></entry><entry><title>Débats sur le mobile - application vs web-application</title><link href="https://www.alkannoide.com/2010/07/13/debats-sur-le-mobile-application-vs-web-application/" rel="alternate"/><published>2010-07-13T19:39:00+02:00</published><updated>2010-07-13T19:39:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-07-13:/2010/07/13/debats-sur-le-mobile-application-vs-web-application/</id><summary type="html">&lt;p&gt;Je suis tout récemment tombé sur le site &lt;a href="http://techtoc.tv"&gt;techtoc.tv&lt;/a&gt;, ce site regroupe un ensemble de webcasts autour de sujet liés aux nouvelles technologies. Pourquoi ces deux informations, tout simplement parce que je souhaitais 3 de ces webcasts qui sont en liaison avec &lt;a href="https://www.alkannoide.com/2010/07/06/differences-entre-projet-de-web-app-mobile-et-projet-dapplication-mobile/"&gt;un de mes précédents billets&lt;/a&gt;, où je …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je suis tout récemment tombé sur le site &lt;a href="http://techtoc.tv"&gt;techtoc.tv&lt;/a&gt;, ce site regroupe un ensemble de webcasts autour de sujet liés aux nouvelles technologies. Pourquoi ces deux informations, tout simplement parce que je souhaitais 3 de ces webcasts qui sont en liaison avec &lt;a href="https://www.alkannoide.com/2010/07/06/differences-entre-projet-de-web-app-mobile-et-projet-dapplication-mobile/"&gt;un de mes précédents billets&lt;/a&gt;, où je présentais les différences entre application et webapplication.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://techtoc.tv/event/770/business-mobile/consommations-de-contenus-web/les-apps-vont-elles-remplacer-les-navigateurs-web"&gt;Les apps' vont-elles remplacées les navigateurs webs ?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://techtoc.tv/event/603/mobile-business/mobile-marketing--m-commerce/application-mobile-vs-version-web-mobile"&gt;Application mobile vs version web mobile&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://techtoc.tv/event/487/e-marketing/digital-marketing/mon-business-a-t-il-besoin-d-une-application-mobile"&gt;Mon business a-t-il besoin d'une application mobile ?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si je devais résumer la situation actuelle, une société se doit d'être actuellement présente sur les AppStores (AppStore d'Apple, AndroidMarket de Google, ...). Mais une société doit également ne pas oublier le web mobile, car il permet une meilleure inter-opérabilité mais également une plus grande liberté d'évolution. Enfin, les webapplications sont pour certains considérés comme l'avenir, alors que les applications sont amenés à une décroissance à partir de 2015 voire 2013 selon certains.&lt;/p&gt;</content><category term="Applications, Mobile"/></entry><entry><title>Différences entre projet de web-app mobile et projet d'application mobile</title><link href="https://www.alkannoide.com/2010/07/06/differences-entre-projet-de-web-app-mobile-et-projet-dapplication-mobile/" rel="alternate"/><published>2010-07-06T21:48:00+02:00</published><updated>2010-07-06T21:48:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-07-06:/2010/07/06/differences-entre-projet-de-web-app-mobile-et-projet-dapplication-mobile/</id><summary type="html">&lt;p&gt;On me demande souvent quelle est la différence entre application et web-application. Je vais par ce billet définir chacun et indiquer leurs avantages et inconvénients.&lt;/p&gt;
&lt;h2&gt;&lt;!--more--&gt;Applications&lt;/h2&gt;
&lt;p&gt;Une application mobile est un programme informatique utilisant un SDK (Software Development Kit) basé sur un OS (Operating System) tel qu'iOS ou Android. Le …&lt;/p&gt;</summary><content type="html">&lt;p&gt;On me demande souvent quelle est la différence entre application et web-application. Je vais par ce billet définir chacun et indiquer leurs avantages et inconvénients.&lt;/p&gt;
&lt;h2&gt;&lt;!--more--&gt;Applications&lt;/h2&gt;
&lt;p&gt;Une application mobile est un programme informatique utilisant un SDK (Software Development Kit) basé sur un OS (Operating System) tel qu'iOS ou Android. Le SDK se définit par :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un langage de programmation (Java pour Android, Objective-C pour Apple, Silverlight pour WindowPhone 7 WP7) qui permet de développer l'application&lt;/li&gt;
&lt;li&gt;un ensemble d'APIs (Application Programming Interface) permettant d'utiliser ou d'accéder à des éléments matériels du terminal. L'API sur laquelle il est important de s'arrêter est l'openGL qui permet de faire de la 3D et donc des jeux évolués. A noter que WP7 sera quant à lui basé sur un autre type API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les applications permettent d'avoir une interactivité plus poussée et elles permettent également d'avoir à disposition très facilement toutes les informations à un instant T. La logique est totalement différente par rapport à un site web et il est absolument nécessaire de prendre en compte ce point lors de la phase de spécifications du projet.&lt;/p&gt;
&lt;p&gt;Cependant deux problèmes se posent : le temps de développement (2 mois pour une application de type standard) et le versionning. En effet, si un bug apparaît sur une application, il est nécessaire de repasser par une phase de développement, recette et soumission de l'application; on parle de changement de version. Ce paramètre est très important et explique la nécessité de faire une phase de recette poussée et complète.&lt;/p&gt;
&lt;p&gt;Un dernier point important à noter également est que l'application, contrairement à la web-application, est disponible sur la place de marché de l'OS (AppStore d'Apple, AndroidMarket de Google, ...). Ceci permettant donc une potentielle visibilité, je dis potentielle car l'application sera noyé dans des dizaines voire centaines de milliers d'autres. Ce paramètre est donc à prendre en compte dans la phase de communication.&lt;/p&gt;
&lt;h2&gt;Web-application&lt;/h2&gt;
&lt;p&gt;On entend par web-application un site mobile évolué qui utilise les performances des navigateurs embarqué dans le mobile (Safari mobile, Chrome sur Android, etc..). Ces derniers disposent des éléments suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;différentes fonctionnalités du xHTML et également du HTML5&lt;/li&gt;
&lt;li&gt;le support du Javascript (différents frameworks sont disponibles JQueryTouch par exemple)&lt;/li&gt;
&lt;li&gt;un ou plusieurs librairie Javascript et associé au navigateur permettant d'accéder par exemple au GPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deux avantages principaux (les inverses de l'application) : le temps de développement (on est sur des technologies webs) est court, la gestion des mises à jour sont réalisées en totale transparence pour l'utilisateur puisque l'on est sur une technologie client-serveur. On peut également ajouter que ce type de développement permet de servir n'importe quel terminal de type smartphone : une web-application sous Android sera également disponible sur iPhone.&lt;/p&gt;
&lt;p&gt;Etant sur des technologies webs, il est important de mettre en place les bonnes pratiques suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les règles de SEO/référencement, même si actuellement, Google ne rends pas prédominant le mobile, il est important d'être présent.&lt;/li&gt;
&lt;li&gt;la possibilité de rediriger l'utilisateur depuis le site web standard vers le site mobile et vice-version. Je conseillerais également de permettre cette redirection page à page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En conclusion, je conseillerais la méthode suivante : faire une application mobile (sur iPhone et Android) pour avoir la visibilité des places de marchés, mais ne surtout pas oublié les web-applications. Même si cette dernière sera le plus souvent beaucoup moins ambitieuse que l'application.&lt;/p&gt;</content><category term="Gestion de projet, Mobile"/></entry><entry><title>Ouverture de la catégorie gestion de projet</title><link href="https://www.alkannoide.com/2010/06/16/ouverture-de-la-categorie-gestion-de-projet/" rel="alternate"/><published>2010-06-16T21:36:00+02:00</published><updated>2010-06-16T21:36:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-06-16:/2010/06/16/ouverture-de-la-categorie-gestion-de-projet/</id><summary type="html">&lt;p&gt;J'ouvre dans mon blog une nouvelle catégorie qui intégrera des billets parlant de près ou de loin de la &lt;a href="https://www.alkannoide.com/category/gestion-de-projet/"&gt;gestion de projet&lt;/a&gt; mobile et web. Plusieurs billets sont d'ailleurs dans les cartons et devrait arriver très prochainement. Le but de cette partie sera principalement d'exposer des problématiques apportées par les …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ouvre dans mon blog une nouvelle catégorie qui intégrera des billets parlant de près ou de loin de la &lt;a href="https://www.alkannoide.com/category/gestion-de-projet/"&gt;gestion de projet&lt;/a&gt; mobile et web. Plusieurs billets sont d'ailleurs dans les cartons et devrait arriver très prochainement. Le but de cette partie sera principalement d'exposer des problématiques apportées par les projets mobiles afin de mieux les appréhender.&lt;/p&gt;</content><category term="Gestion de projet"/></entry><entry><title>Test du tethering sur Android Froyo</title><link href="https://www.alkannoide.com/2010/06/16/test-du-tethering-sur-android-froyo/" rel="alternate"/><published>2010-06-16T10:48:00+02:00</published><updated>2010-06-16T10:48:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-06-16:/2010/06/16/test-du-tethering-sur-android-froyo/</id><summary type="html">&lt;p&gt;Suite au Google I/O, je me suis posé la question d'installer ou non Froyo (la v2.2 d'Android) sur mon Nexus One. Finalement, j'ai craqué et je me suis lancé dans l'installation de cette nouvelle version considéré comme bêta. Je désirais à la fois essayer Flash 10.1 mais …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Suite au Google I/O, je me suis posé la question d'installer ou non Froyo (la v2.2 d'Android) sur mon Nexus One. Finalement, j'ai craqué et je me suis lancé dans l'installation de cette nouvelle version considéré comme bêta. Je désirais à la fois essayer Flash 10.1 mais aussi le tethering. Je parlerais dans ce billet du tethering, le Flash sera peut être le sujet d'un autre billet plus tard. Le tethering sur Froyo offre la possibilité de partager la connexion internet mobile du téléphone en WiFi ou par USB. Ayant un Mac, je n'ai malheureusement pas pu tester la version USB (uniquement compatible Windows Vista, Seven et Linux).&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;!--more--&gt;Première étape : la configuration du Nexus One&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ca se passe dans les Paramètres -&amp;gt; Sans Fil et réseaux -&amp;gt; Partage de connexion et point d'accès mobile. Quatre informations sont disponibles :&lt;/p&gt;
&lt;p&gt;- via USB (pour avoir cette zone activée, il faut avoir le téléphone relié à l'ordinateur par USB)&lt;/p&gt;
&lt;p&gt;- Point d'accès Wi-Fi mobile, en activant cette zone, le téléphone se transforme alors en hotspot Wifi&lt;/p&gt;
&lt;p&gt;- Paramètre du point d'accès, dans cette zone, il est possible de mettre à jour le SSID du réseau, la sécurité (réseau ouvert ou sécurisé par clé WPA2)&lt;/p&gt;
&lt;p&gt;- Aide&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Deuxième étape, connexion WiFi et tests&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;C'est exactement pareil qu'un autre hotspot Wifi.&lt;/p&gt;
&lt;p&gt;J'ai testé la connexion en TGV entre Paris et  Lyon. C'est vraiment impressionnant de savoir que le téléphone permet de se connecter à Internet sans passer par une clé 3G. Cependant, j'ai remarqué plusieurs points :&lt;/p&gt;
&lt;p&gt;- dès que le TGV passe une certaine vitesse, on a plus de connexion, mais cela est normale, on a le même souci lorsque l'on se connecte à internet depuis le téléphone directement,&lt;/p&gt;
&lt;p&gt;- j'ai réussi à utiliser l'application Mail et Tweetdeck, je n'ai pas réussi à utiliser les navigateurs (je dois encore creusé le point),&lt;/p&gt;
&lt;p&gt;- ça grille la batterie du téléphone à une vitesse impressionnante (25% en moins de 10min).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Conclusion&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Je donnerais, pour conclusion, les avis suivants :&lt;/p&gt;
&lt;p&gt;- cet outil peut vraiment dépanner et permettre de répondre à ses mails ou voir rapidement des informations sur Internet de manière plus pratique que sur son téléphone,&lt;/p&gt;
&lt;p&gt;- Google a tapé fort en sortant cette fonctionnalité attendu de pas mal de personne, cependant on parle déjà de bridage chez les opérateurs mobiles,&lt;/p&gt;
&lt;p&gt;- cet outils est naissant mais mérite vraiment de s'attarder dessus, tout particulièrement pour les personnes en déplacement régulier, cela leur éviterait 1 téléphone, 1 ordinateur portable et 1 clé 3G; pour revenir à 2 appareils,&lt;/p&gt;
&lt;p&gt;- j'attends avec impatience l'arrivée du LTE en France, qui permettra de naviguer beaucoup plus rapidement sur le net depuis un mobile.&lt;/p&gt;</content><category term="Android, Mobile"/></entry><entry><title>Test de Skype sur iPhone</title><link href="https://www.alkannoide.com/2010/05/31/skype-sur-iphone/" rel="alternate"/><published>2010-05-31T21:30:00+02:00</published><updated>2010-05-31T21:30:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-31:/2010/05/31/skype-sur-iphone/</id><summary type="html">&lt;p&gt;L'annonce a été faite hier : &lt;a href="http://www.accessoweb.com/Skype-2-0-pour-iPhone-autorise-les-appels-via-la-3G_a6564.html"&gt;Skype 2.0 permet de téléphoner en 3G&lt;/a&gt; hier, un de mes collègues et moi-même avons testé cette version : d'un côté un iPhone avec la connexion 3G, de l'autre un MacBook avec Skype installé. La résultante est que nous n'avons pas réussi à effectuer un …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L'annonce a été faite hier : &lt;a href="http://www.accessoweb.com/Skype-2-0-pour-iPhone-autorise-les-appels-via-la-3G_a6564.html"&gt;Skype 2.0 permet de téléphoner en 3G&lt;/a&gt; hier, un de mes collègues et moi-même avons testé cette version : d'un côté un iPhone avec la connexion 3G, de l'autre un MacBook avec Skype installé. La résultante est que nous n'avons pas réussi à effectuer un appel correct. Les différents tests effectués ont été infructueux : on attendait la voix de l'autre très coupée, avec un gros temps de latence et l'impossible de réaliser un vrai appel...&lt;/p&gt;
&lt;p&gt;Heureusement les appels sont gratuits pour le moment et jusque fin août. Connaissant la politique d'Apple en terme de validation, on peut se demander deux choses :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple étant très pointilleux sur les phases de test des applications, ne serait-ce pas les opérateurs qui bloquent les data voix sur la 3G provenant de l'application Skype&lt;/li&gt;
&lt;li&gt;Apple et Skype ont fait une sorte de partenariat pour tout de même valider l'application, cette hypothèse me paraît la moins plausible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et vous qu'en pensez-vous ?&lt;/p&gt;</content><category term="iPhone, Mobile"/></entry><entry><title>Que retenir d'Android 2.2 aka Froyo</title><link href="https://www.alkannoide.com/2010/05/21/que-retenir-dandroid-2-2-aka-froyo/" rel="alternate"/><published>2010-05-21T20:49:00+02:00</published><updated>2010-05-21T20:49:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-21:/2010/05/21/que-retenir-dandroid-2-2-aka-froyo/</id><summary type="html">&lt;p&gt;L'événement pour les développeurs &lt;a href="http://code.google.com/intl/fr-FR/events/io/2010/"&gt;Google I/O&lt;/a&gt; s'est terminé hier. Je ne reviendrait pas sur la première keynote qui est plus accès sur la partie web, mais plutôt sur la seconde. Les vidéos sont d'ailleurs disponibles sur &lt;a href="http://www.youtube.com/googledevelopers"&gt;Youtube&lt;/a&gt;. Suite à mon &lt;a href="https://www.alkannoide.com/2010/05/06/quattendre-sur-android-au-prochain-google-io/"&gt;post&lt;/a&gt; d'il y a deux semaines, les deux points …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L'événement pour les développeurs &lt;a href="http://code.google.com/intl/fr-FR/events/io/2010/"&gt;Google I/O&lt;/a&gt; s'est terminé hier. Je ne reviendrait pas sur la première keynote qui est plus accès sur la partie web, mais plutôt sur la seconde. Les vidéos sont d'ailleurs disponibles sur &lt;a href="http://www.youtube.com/googledevelopers"&gt;Youtube&lt;/a&gt;. Suite à mon &lt;a href="https://www.alkannoide.com/2010/05/06/quattendre-sur-android-au-prochain-google-io/"&gt;post&lt;/a&gt; d'il y a deux semaines, les deux points principaux se sont confirmés:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flash 10.1 est bien intégré&lt;/li&gt;
&lt;li&gt;Côté jeu, de grosse évolution : intégration des APIs OpenGL ES 2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais je m'arrête également sur d'autres évolutions intéressantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;possibilité d'enregistrer les applications sur la carte mémoire (plutôt intéressant pour les grosses applications). D'ailleurs la démonstration a montré que l'application ne subit aucune perte.&lt;/li&gt;
&lt;li&gt;l'interpréteur Javascript a été booster : des résultats 2 à 3 fois plus rapide par rapport à la version Eclair (2.0/2.1)&lt;/li&gt;
&lt;li&gt;un market place digne de ce nom. Il était auparavant possible de synchroniser ses applications avec son compte Google. Il sera possible de rechercher des applications sur la version web du market, d'indiquer que l'on désire l'installer, cette installation sera alors automatiquement lancé sur le smartphone.&lt;/li&gt;
&lt;li&gt;possibilité d'effectuer ou non l'auto-update des applications&lt;/li&gt;
&lt;li&gt;le feedback des plantages d'applications pourra être envoyé (comme sur Firefox) et directement accessible depuis le compte développeur&lt;/li&gt;
&lt;li&gt;Exchange Friendly, même si HTC sense (la surcouche HTC) permettait de gérer correctement Exchange, Google a préféré gérer en natif. Pour mieux intéressé les professionnels ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;D'autres évolutions sont également agréables et intéressantes : synchronisation de Maps entre Chrome et le smartphone, amélioration de la reconnaissance vocale, export d'iTunes en mode streaming, .... J'attends maintenant de pouvoir mettre à jour mon Nexus One pour faire un retour plus complet.&lt;/p&gt;</content><category term="Android, Mobile"/></entry><entry><title>La vidéo sur Android</title><link href="https://www.alkannoide.com/2010/05/19/la-video-sur-android/" rel="alternate"/><published>2010-05-19T20:31:00+02:00</published><updated>2010-05-19T20:31:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-19:/2010/05/19/la-video-sur-android/</id><summary type="html">&lt;p&gt;Je vais compléter un précédent billet (&lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/"&gt;la vidéo sur iPhone&lt;/a&gt;), je vais continuer mon tour d'horizon des technologies vidéos sur les OS mobiles. Dans le cas présent, je parlerais d'Android. Deux types de fichiers sont supportés actuellement par Android :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://fr.wikipedia.org/wiki/3gp"&gt;3GPP&lt;/a&gt;, ce format avait été mis en place pour les terminaux …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Je vais compléter un précédent billet (&lt;a href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/"&gt;la vidéo sur iPhone&lt;/a&gt;), je vais continuer mon tour d'horizon des technologies vidéos sur les OS mobiles. Dans le cas présent, je parlerais d'Android. Deux types de fichiers sont supportés actuellement par Android :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://fr.wikipedia.org/wiki/3gp"&gt;3GPP&lt;/a&gt;, ce format avait été mis en place pour les terminaux mobiles 3G et disparaît peu à peu&lt;/li&gt;
&lt;li&gt;MP4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En terme d'encodage, on peut avoir trois types différents :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;H263&lt;/li&gt;
&lt;li&gt;H264 AVC&lt;/li&gt;
&lt;li&gt;MPEG-4 (ce type d'encodage est uniquement possible avec des fichiers 3GPP)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En encodant une vidéo au format d'encodage H264 avec un type de fichier MP4, il est alors possible de lire la vidéo sur Android et sur iPhone.&lt;/p&gt;
&lt;p&gt;Pour la diffusion des vidéos, deux solutions sont actuellement possible :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://developer.apple.com/opensource/server/streaming/index.html"&gt;Darwin Streaming Server&lt;/a&gt; (projet open source, soutenu par Apple)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.videolan.org/vlc/streaming.html"&gt;VLC Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le protocole de diffusion utilisé est alors le &lt;a href="http://en.wikipedia.org/wiki/Rtsp"&gt;RTSP&lt;/a&gt;.&lt;/p&gt;</content><category term="Android, Vidéo"/></entry><entry><title>Kwaak3 (Quake 3) sur Android</title><link href="https://www.alkannoide.com/2010/05/18/kwaak3-quake-3-sur-android/" rel="alternate"/><published>2010-05-18T11:50:00+02:00</published><updated>2010-05-18T11:50:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-18:/2010/05/18/kwaak3-quake-3-sur-android/</id><summary type="html">&lt;p&gt;Après un certain temps, j'ai finalement réussi à faire tourner &lt;a href="http://code.google.com/p/kwaak3/"&gt;Kwaak3&lt;/a&gt; sur Android : à la fois sur un Nexus One, puis sur un Motorola Droid. Pour rappel, Kwaak3 permet de jouer à Quake depuis son terminal. Malheusement pour moi (possesseur d'un Nexus One), il n'est (pour le moment) pas possible …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Après un certain temps, j'ai finalement réussi à faire tourner &lt;a href="http://code.google.com/p/kwaak3/"&gt;Kwaak3&lt;/a&gt; sur Android : à la fois sur un Nexus One, puis sur un Motorola Droid. Pour rappel, Kwaak3 permet de jouer à Quake depuis son terminal. Malheusement pour moi (possesseur d'un Nexus One), il n'est (pour le moment) pas possible d'y jouer. On peut tout au plus tirer ou bouger la caméra grâce à la souris.&lt;/p&gt;
&lt;p&gt;Deuxième phase, le portage sur un Droid, là, je n'ai pas eu de soucis, j'ai installé l'application et copier/coller le dossier quake3 de la SDCard du Nexus sur celle du Droid. La jouabilité est pas trop mal malgré le petit clavier du terminal. Cela manque tout de même de précision comparé à la version desktop du jeu (et oui, rien ne vaut une souris). Je n'ai pas encore réussi à tuer un des bots, mais j'ai travaille ;-)&lt;/p&gt;
&lt;p&gt;Je pourrais conclure en disant que c'est une première étape intéressante, j'espère avoir très prochainement la possibilité de jouer avec un terminal Android ne possédant pas clavier. Mais également on pourrait espérer un portage des vieux jeux tels que Duke Nukem 3D sur la plateforme voire Serious Sam.&lt;/p&gt;</content><category term="Android"/></entry><entry><title>Gesture search ou la recherche avec doigté</title><link href="https://www.alkannoide.com/2010/05/13/gesture-search-ou-la-recherche-avec-doigte/" rel="alternate"/><published>2010-05-13T11:49:00+02:00</published><updated>2010-05-13T11:49:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-13:/2010/05/13/gesture-search-ou-la-recherche-avec-doigte/</id><summary type="html">&lt;p&gt;Je vais vous faire découvrir une application d'une efficacité déconcertante. Son nom : &lt;a href="http://gesturesearch.googlelabs.com/"&gt;Gesture Search&lt;/a&gt;, disponible sur Android Market, l'application est développé par Google. L'application fait tourner une tâche de fond qui indexe les contacts, les marques-pages du navigateur, les applications installées et la musique. Différentes options de configurations sont disponibles …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je vais vous faire découvrir une application d'une efficacité déconcertante. Son nom : &lt;a href="http://gesturesearch.googlelabs.com/"&gt;Gesture Search&lt;/a&gt;, disponible sur Android Market, l'application est développé par Google. L'application fait tourner une tâche de fond qui indexe les contacts, les marques-pages du navigateur, les applications installées et la musique. Différentes options de configurations sont disponibles :&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2010/05/settings.png"&gt;&lt;img src="/images/2010/05/settings.png" title="Paramètres de Gesture Search" class="aligncenter size-full wp-image-72" width="288" height="480" /&gt;&lt;/a&gt;Côté utilisation, il suffit d'écrire sur l'écran les lettres pour former le mot recherchés.&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2010/05/gesture.png"&gt;&lt;img src="/images/2010/05/gesture.png" title="gesture" class="alignleft size-full wp-image-73" width="173" height="288" /&gt;&lt;/a&gt; &lt;a href="/images/2010/05/refresh.png"&gt;&lt;img src="/images/2010/05/refresh.png" title="refresh" class="size-full wp-image-74 alignright" width="173" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="Android, Applications"/></entry><entry><title>La vidéo sur iPhone</title><link href="https://www.alkannoide.com/2010/05/10/la-video-sur-iphone/" rel="alternate"/><published>2010-05-10T20:29:00+02:00</published><updated>2010-05-10T20:29:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-10:/2010/05/10/la-video-sur-iphone/</id><summary type="html">&lt;p&gt;On entends beaucoup parler actuellement du conflit entre Adobe et Apple (lancé pour rappel par &lt;a href="http://www.apple.com/hotnews/thoughts-on-flash/"&gt;Steve Jobs&lt;/a&gt; fin avril). Je voudrais m'attarder non pas sur ce conflit mais la technologie vidéo utilisé par l'iPhone et l'iPad et d'en décrire un peu plus les aspects.&lt;/p&gt;
&lt;p&gt;La solution recommandée par Apple est …&lt;/p&gt;</summary><content type="html">&lt;p&gt;On entends beaucoup parler actuellement du conflit entre Adobe et Apple (lancé pour rappel par &lt;a href="http://www.apple.com/hotnews/thoughts-on-flash/"&gt;Steve Jobs&lt;/a&gt; fin avril). Je voudrais m'attarder non pas sur ce conflit mais la technologie vidéo utilisé par l'iPhone et l'iPad et d'en décrire un peu plus les aspects.&lt;/p&gt;
&lt;p&gt;La solution recommandée par Apple est le &lt;a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html"&gt;HTTP Live Streaming&lt;/a&gt;. Elle offre la possibilité d'utiliser des serveurs HTTP (par exemple Apache) afin de diffuser la vidéo. Le player appelle dans un premier temps un fichier &lt;a href="http://fr.wikipedia.org/wiki/M3U"&gt;m3u8&lt;/a&gt;. Ce fichier est un fichier de metadata, une playlist comme celle-ci :&lt;/p&gt;
&lt;div id="_mcePaste"&gt;

*\#EXTM3U*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=64000*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*http://media.example.com/64kb.m3u8*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=276000*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*http://media.example.com/276kb.m3u8*

&lt;/div&gt;

&lt;div&gt;

*\#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=420000*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*http://media.example.com/420kb.ts*

&lt;/div&gt;

&lt;div id="_mcePaste"&gt;

*\#EXT-X-ENDLIST*

&lt;/div&gt;

&lt;p&gt;On remarquera tout particulièrement l'élément BANDWITH, il permet de définir le nombre de bits par seconde. Cela permet au player de gérer suivant le réseau quel playlist il va utiliser : en Edge par exemple, le player choisira le fichier 64kb.m3u8. Ce second fichier sera du même format mais contiendra des morceaux de vidéos : des fichiers .ts à lire à la suite les uns des autres. Le player pourra au besoin changer de playlist suivant le débit. Côté encodage, on utilise l'encodage &lt;a href="http://fr.wikipedia.org/wiki/H.264"&gt;H.264&lt;/a&gt; pour la vidéo et &lt;a href="http://fr.wikipedia.org/wiki/Advanced_Audio_Coding"&gt;HE-AAC&lt;/a&gt; pour l'audio.&lt;/p&gt;
&lt;p&gt;Tout ceci est cependant la recommandation d'Apple (cf Guidelines), il est tout à fait possible de lire du MP4 encodé en H.264, il faut juste limité le temps des vidéos à 10min maximum. Dans tous les cas, en utilisant de bons outils d'encodages, la qualité sera au rendez vous et donc la satisfaction des utilisateurs aussi. On pourra par exemple utilisé soit des outils comme &lt;a href="http://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;, ceux d'&lt;a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW3"&gt;Apple&lt;/a&gt;; dans le cas d'entreprise, il est également possible d'utiliser de gros serveurs dédié à l'encodage comme ceux d'&lt;a href="http://www.inlethd.com"&gt;Inlet Technologies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je terminerais par ce lien permettant d'avoir la &lt;a href="http://developer.apple.com/iphone/library/technotes/tn2010/tn2224.html#//apple_ref/doc/uid/DTS40009745"&gt;note technique d'Apple quand à la création et au déploiement du HTTP Live Streaming sur iPhone et iPad&lt;/a&gt;&lt;/p&gt;</content><category term="iPhone, Mobile, Vidéo"/></entry><entry><title>Un fond d'écran GoogleMaps sur Android</title><link href="https://www.alkannoide.com/2010/05/07/un-fond-decran-googlemaps-sur-android/" rel="alternate"/><published>2010-05-07T10:54:00+02:00</published><updated>2010-05-07T10:54:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-07:/2010/05/07/un-fond-decran-googlemaps-sur-android/</id><summary type="html">&lt;p&gt;Un collègue vient de  me faire découvrir une fonctionnalité plutôt sympa sur Android (testée sur un Nexus One et un HTC Desire, à valider sur les autres terminaux). Il est possible de mettre en fond d'écran la carte de Google Maps. Ce fond d'écran se met à jour en temps …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Un collègue vient de  me faire découvrir une fonctionnalité plutôt sympa sur Android (testée sur un Nexus One et un HTC Desire, à valider sur les autres terminaux). Il est possible de mettre en fond d'écran la carte de Google Maps. Ce fond d'écran se met à jour en temps réel suivant la localisation du téléphone.&lt;/p&gt;
&lt;p&gt;Pour mettre en place le fond d'écran, il suffit de sélectionner &lt;em&gt;Fond d'écran animé =&amp;gt; Maps&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/images/2010/05/wallpapers1.png"&gt;&lt;img src="/images/2010/05/wallpapers1.png" title="Choix des fonds d&amp;#39;écrans" class="aligncenter size-full wp-image-53" width="288" height="480" /&gt;&lt;/a&gt;Il est ensuite possible de configurer le mode d'affichage : satellite, normal ou terrain. On peut également activé le trafic. Le résultat est le suivant :&lt;/p&gt;
&lt;p&gt;&lt;img src="/images/2010/05/desktop.png" title="Bureau avec Maps en live Wallpapers" class="aligncenter size-full wp-image-52" width="288" height="480" /&gt;&lt;/p&gt;
&lt;p&gt;La fonctionnalité est plutôt sympathique, surtout lors de déplacement, cela évite de relancer à chaque fois l'application Maps.&lt;/p&gt;</content><category term="Android, Applications, Mobile"/></entry><entry><title>Qu'attendre sur Android au prochain Google I/O ?</title><link href="https://www.alkannoide.com/2010/05/06/quattendre-sur-android-au-prochain-google-io/" rel="alternate"/><published>2010-05-06T21:14:00+02:00</published><updated>2010-05-06T21:14:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-06:/2010/05/06/quattendre-sur-android-au-prochain-google-io/</id><summary type="html">&lt;p&gt;La prochaine conférence annuelle &lt;a href="http://code.google.com/intl/fr-FR/events/io/2010/"&gt;Google I/O&lt;/a&gt; aura lieu dans moins de 2 semaines à San Francisco, un mois avant le &lt;a href="http://developer.apple.com/wwdc/"&gt;WWDC&lt;/a&gt; d'Apple dans la même ville. Que pouvons-nous attendre de cet événément au sujet de l'OS Android ? Voici les deux points principaux qu'il est/serait à attendre.&lt;/p&gt;
&lt;p&gt;Adobe et …&lt;/p&gt;</summary><content type="html">&lt;p&gt;La prochaine conférence annuelle &lt;a href="http://code.google.com/intl/fr-FR/events/io/2010/"&gt;Google I/O&lt;/a&gt; aura lieu dans moins de 2 semaines à San Francisco, un mois avant le &lt;a href="http://developer.apple.com/wwdc/"&gt;WWDC&lt;/a&gt; d'Apple dans la même ville. Que pouvons-nous attendre de cet événément au sujet de l'OS Android ? Voici les deux points principaux qu'il est/serait à attendre.&lt;/p&gt;
&lt;p&gt;Adobe et Google ont déjà annoncé le support natif de Flash 10.1 dans la version 2.2 (alias Froyo) d'Android. Ce support va développer de manière significative l'usage de la vidéo sur le mobile mais également la simplifier. On verra également apparaître des applications basées sur la technologie AIR (on pourrait par exemple s'attendre à un portage de Tweetdeck). On pourrait également voir une annonce par Adobe d'un outil permettant des applications Android avec Flash CS5 ou Flex Builder.&lt;/p&gt;
&lt;p&gt;J'attends pour ma part également des annonces concernant la 3D et les jeux basé sur &lt;a href="http://fr.wikipedia.org/wiki/OpenGL"&gt;l'OpenGL&lt;/a&gt;. En effet, actuellement, peu voire pas d'applications 3D sont disponibles. En fin d'année dernière, Gameloft avait annoncé réduire de manière significative tous les développements sur Android (&lt;a href="http://www.clubic.com/actualite-311980-android-gameloft-editeurs-levent-pied.html"&gt;Android: Gameloft et d'autres lèvent le pied&lt;/a&gt;); puis était finalement revenu sur sa décision (&lt;a href="http://www.pointgphone.com/gameloft-android-9441"&gt;Gameloft croit en Android après tout&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Et vous, qu'attendez-vous du prochain Google I/O ?&lt;/p&gt;</content><category term="Android, Mobile"/></entry><entry><title>Migration de technologie J2EE vers PHP</title><link href="https://www.alkannoide.com/2010/05/06/migration-de-technologie-j2ee-vers-php/" rel="alternate"/><published>2010-05-06T20:54:00+02:00</published><updated>2010-05-06T20:54:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-05-06:/2010/05/06/migration-de-technologie-j2ee-vers-php/</id><summary type="html">&lt;p&gt;Je reprends ici les slides que j'ai utilisé lors de ma conférence au dernier Forum PHP organisé par l'&lt;a href="http://www.afup.org"&gt;AFUP&lt;/a&gt; à la Cité des Sciences de Paris :&lt;/p&gt;
&lt;div&gt;

*Pour obtenir plus de flexibilité afin de répondre aux demandes des équipes webmarketing, la mise en place d'applications alliant PHP et MySQL en …&lt;/div&gt;</summary><content type="html">&lt;p&gt;Je reprends ici les slides que j'ai utilisé lors de ma conférence au dernier Forum PHP organisé par l'&lt;a href="http://www.afup.org"&gt;AFUP&lt;/a&gt; à la Cité des Sciences de Paris :&lt;/p&gt;
&lt;div&gt;

*Pour obtenir plus de flexibilité afin de répondre aux demandes des équipes webmarketing, la mise en place d'applications alliant PHP et MySQL en remplacement de J2EE a permis de répondre à ces besoins. Cela a également permis une baisse des coûts (infrastructure d'exploitation, équipes de développements, ...)*

&lt;/div&gt;

&lt;div&gt;

*  *

&lt;/div&gt;

&lt;div style="width: 425px; text-align: center;"&gt;

&lt;object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;

&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=m6web-12583815272828-phpapp02&amp;amp;stripped_title=migration-de-technologie-j2ee-vers-php-m6web"&gt;&lt;/param&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;
&lt;embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=m6web-12583815272828-phpapp02&amp;amp;stripped_title=migration-de-technologie-j2ee-vers-php-m6web" allowscriptaccess="always" allowfullscreen="true"&gt;

&lt;/embed&gt;

&lt;/object&gt;

&lt;/div&gt;</content><category term="Conférence"/><category term="PHP"/></entry><entry><title>Ouverture d'une nouvelle catégorie : mobile</title><link href="https://www.alkannoide.com/2010/01/06/ouverture-dune-nouvelle-categorie-mobile/" rel="alternate"/><published>2010-01-06T14:52:00+01:00</published><updated>2010-01-06T14:52:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-01-06:/2010/01/06/ouverture-dune-nouvelle-categorie-mobile/</id><summary type="html">&lt;p&gt;Après la migration d'une blog, j'ouvre une nouvelle catégorie dans le blog : mobile. En effet, ce domaine me prend actuellement un grande partie de mon temps de veille... Autant donc partager mes avis, remarques etc dans le domaine. Je suis utilisateur principalement d'iPhone actuellement, mais il m'arrive de tester le …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Après la migration d'une blog, j'ouvre une nouvelle catégorie dans le blog : mobile. En effet, ce domaine me prend actuellement un grande partie de mon temps de veille... Autant donc partager mes avis, remarques etc dans le domaine. Je suis utilisateur principalement d'iPhone actuellement, mais il m'arrive de tester le fonctionnement et les applications sous Android et Symbian (Nokia).&lt;/p&gt;
&lt;p&gt;Cette catégorie regroupera toutes informations, remarques, pensées à propos de l'univers mobile : nouveaux terminaux, nouvelles technologies, développements, conférences.&lt;/p&gt;</content><category term="Général, Mobile"/></entry><entry><title>Who am I ? - Contact</title><link href="https://www.alkannoide.com/2010/01/04/qui-suis-je/" rel="alternate"/><published>2010-01-04T22:14:00+01:00</published><updated>2010-01-04T22:14:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2010-01-04:/2010/01/04/qui-suis-je/</id><summary type="html">&lt;p&gt;J'ai démarré sur le web à la fin des années 90. Mon parcours pro est parsemé par l'innovation et les nouvelles technologies : vagues de l'internet début 2000, nouveaux écrans et streaming dans les années 2010 et maintenant l'intelligence artificielle. J'aime apprendre en pratiquant et en bidouillant... Vous pouvez me trouver …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai démarré sur le web à la fin des années 90. Mon parcours pro est parsemé par l'innovation et les nouvelles technologies : vagues de l'internet début 2000, nouveaux écrans et streaming dans les années 2010 et maintenant l'intelligence artificielle. J'aime apprendre en pratiquant et en bidouillant... Vous pouvez me trouver également sur &lt;a href="http://www.linkedin.com/in/oliviernoel"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;</content><category term="misc"/></entry><entry><title>Ayé enfin terminé...</title><link href="https://www.alkannoide.com/2008/10/22/aye-enfin-termine/" rel="alternate"/><published>2008-10-22T13:07:00+02:00</published><updated>2008-10-22T13:07:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-10-22:/2008/10/22/aye-enfin-termine/</id><summary type="html">&lt;p&gt;Je suis content car je viens enfin de terminer la lecture du livre dont j'avais parlé dans un &lt;a href="http://alkann.free.fr/index.php/2008/03/26/securite-et-php/" target="_self" title="Securité et PHP"&gt;précédent billet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.eyrolles.com/Scan/9782212113235.gif" class="aligncenter" width="107" height="130" alt="PHP Avancé" /&gt;&lt;/p&gt;
&lt;p&gt;Même si beaucoup de chose m'était déjà connu, j'ai pu compléter mes connaissances ou approfondir certains points. Je pense plus généralement que les livres sont un excellent complément aux informations …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je suis content car je viens enfin de terminer la lecture du livre dont j'avais parlé dans un &lt;a href="http://alkann.free.fr/index.php/2008/03/26/securite-et-php/" target="_self" title="Securité et PHP"&gt;précédent billet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.eyrolles.com/Scan/9782212113235.gif" class="aligncenter" width="107" height="130" alt="PHP Avancé" /&gt;&lt;/p&gt;
&lt;p&gt;Même si beaucoup de chose m'était déjà connu, j'ai pu compléter mes connaissances ou approfondir certains points. Je pense plus généralement que les livres sont un excellent complément aux informations que l'on pourrait trouver sur le net.&lt;/p&gt;
&lt;p&gt;Bref, je suis content d'avoir enfin terminé cela. Je pense maintenant m'attaquer au développement de module ou librairies qui pourraient être utiles dans des cas divers et variés...&lt;/p&gt;</content><category term="Développement web, Général"/></entry><entry><title>De l'utilité des frameworks...</title><link href="https://www.alkannoide.com/2008/09/29/de-lutilite-des-frameworks/" rel="alternate"/><published>2008-09-29T20:45:00+02:00</published><updated>2008-09-29T20:45:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-09-29:/2008/09/29/de-lutilite-des-frameworks/</id><summary type="html">&lt;p&gt;Avant tout, je pense qu'il faut séparer les frameworks PHP et ceux en Javascript.&lt;/p&gt;
&lt;p&gt;Les Frameworks Javascript sont une véritable révolution dans le "petit" monde du web. Il en existe plusieurs mais deux sont réellement utilisés à grande ampleur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.prototypejs.org/" target="_blank" title="Prototype"&gt;prototype&lt;/a&gt; (actuellement en déclin)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jquery.com/" target="_blank" title="Jquery"&gt;jquery&lt;/a&gt; (en pleine croissance avec une foison …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Avant tout, je pense qu'il faut séparer les frameworks PHP et ceux en Javascript.&lt;/p&gt;
&lt;p&gt;Les Frameworks Javascript sont une véritable révolution dans le "petit" monde du web. Il en existe plusieurs mais deux sont réellement utilisés à grande ampleur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.prototypejs.org/" target="_blank" title="Prototype"&gt;prototype&lt;/a&gt; (actuellement en déclin)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jquery.com/" target="_blank" title="Jquery"&gt;jquery&lt;/a&gt; (en pleine croissance avec une foison de plug-ins)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C'est en grande partie grâce à ces frameworks que les applications web2.0 sont apparus (mais pas uniquement, on remerciera également Adobe).&lt;/p&gt;
&lt;p&gt;J'en viens maintenant aux frameworks PHP. Actuellement, je dirais qu'il en existe 2 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le &lt;a href="http://framework.zend.com/" target="_blank" title="Zend Framework"&gt;Zend Framework&lt;/a&gt;, actuellement en version 1.6 qui est plus une bibliothèque de librairies. Elles sont utiles mais ne composent pas, pour moi, un framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.symfony-project.org/" target="_blank" title="Symfony"&gt;Symfony&lt;/a&gt;, actuellement dans sa version 1.1. Ce dernier étant pour moi un framework à part entière.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ces derniers sont pour moins un véritable problème. En effet, ils répondent, il est vrai, à tous les besoins possibles et imaginables. Cependant, ils chargent beaucoup d'élément qui demande du support et dont on ne sait pas toujours comment le déroulement s'effectue.&lt;/p&gt;
&lt;p&gt;Je préfère donc réutiliser les briques que j'ai développé moi-même (par exemple pour la gestion des templates ou encore pour la connexion à la base de donnée). Je garde ainsi le contrôle du code, tout en répondant trés précisément au besoin des applications que j'ai à développer.&lt;/p&gt;
&lt;p&gt;Je concluerais en disant que pour utiliser un Framework quel qu'il soit, il faut véritablement se poser la question de ce que l'on veut faire et comment on veut le réaliser. On utilisera ensuite l'outils le plus adapté.&lt;/p&gt;</content><category term="Développement web"/><category term="PHP"/></entry><entry><title>Firefox3, premier retour...</title><link href="https://www.alkannoide.com/2008/06/26/firefox3-premier-retour/" rel="alternate"/><published>2008-06-26T11:08:00+02:00</published><updated>2008-06-26T11:08:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-06-26:/2008/06/26/firefox3-premier-retour/</id><summary type="html">&lt;p&gt;Après avoir explosé le record de téléchargement en une journée (8 millions qui seront inscrit dans le Guiness des records), je reviens sur l'utilisation de Firefox 3.&lt;/p&gt;
&lt;p&gt;Première étape, l'installation ! L'installeur est un fichier très léger (moins de 8Mo ), trés rapide à installer. Un seule bémol mais cela est corrigé …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Après avoir explosé le record de téléchargement en une journée (8 millions qui seront inscrit dans le Guiness des records), je reviens sur l'utilisation de Firefox 3.&lt;/p&gt;
&lt;p&gt;Première étape, l'installation ! L'installeur est un fichier très léger (moins de 8Mo ), trés rapide à installer. Un seule bémol mais cela est corrigé progressivement dans le temps : les plug-ins qui n'étaient pas encore disponible pour FF3...&lt;/p&gt;
&lt;p&gt;Deuxième étape, l'utilisation ! C'est ici que ça commence réellement. Mon tout premier test fût Gmail plutôt lente sur FF2. Résultat, j'ai été scotché sur mon siége, je croyais difficilement possible de rendre l'interface aussi "instantanée". On clique, la page s'affiche ! Bref, Tristan Nitot ne nous avait pas menti en indiquant que l'application serait 4 fois plus rapide. Le reste du surf sur le net, même avis, les pages contenant de l'Ajax sont plus rapides et la gestion et performance du Javascript est augmentée !&lt;/p&gt;
&lt;p&gt;Pour résumé, j'aurais beaucoup de mal à repasser sur Firefox 2... A noter également que Firefox 3 intégre une partie du draft de spécification du HTML5&lt;/p&gt;</content><category term="Général"/></entry><entry><title>Testons nos variables (les expressions régulières)...</title><link href="https://www.alkannoide.com/2008/06/04/testons-nos-variables-les-expressions-regulieres/" rel="alternate"/><published>2008-06-04T15:42:00+02:00</published><updated>2008-06-04T15:42:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-06-04:/2008/06/04/testons-nos-variables-les-expressions-regulieres/</id><summary type="html">&lt;p&gt;J'ai abordé le sujet dans &lt;a href="http://alkann.free.fr/index.php/2008/05/20/les-bienfaits-des-tests-de-variable-en-php/" target="_blank" title="Les bienfaits des tests de variable en PHP"&gt;mon précédent billet&lt;/a&gt;. Les expressions régulières ou rationnelles sont puissantes et rapides, une fois qu'elles sont maitrisés. En PHP, il existe deux types d'expressions régulières :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les &lt;a href="http://fr.php.net/manual/fr/book.regex.php" target="_blank" title="POSIX"&gt;POSIX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;les &lt;a href="http://fr.php.net/manual/fr/book.pcre.php" target="_blank" title="PCRE"&gt;PCRE&lt;/a&gt; (Perl Compatible Regular Expressions)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C'est le second type qui est le plus performant mais plutôt que …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai abordé le sujet dans &lt;a href="http://alkann.free.fr/index.php/2008/05/20/les-bienfaits-des-tests-de-variable-en-php/" target="_blank" title="Les bienfaits des tests de variable en PHP"&gt;mon précédent billet&lt;/a&gt;. Les expressions régulières ou rationnelles sont puissantes et rapides, une fois qu'elles sont maitrisés. En PHP, il existe deux types d'expressions régulières :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les &lt;a href="http://fr.php.net/manual/fr/book.regex.php" target="_blank" title="POSIX"&gt;POSIX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;les &lt;a href="http://fr.php.net/manual/fr/book.pcre.php" target="_blank" title="PCRE"&gt;PCRE&lt;/a&gt; (Perl Compatible Regular Expressions)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C'est le second type qui est le plus performant mais plutôt que de faire un long laïus dessus, je propose de lire ce tutoriel qui les explique très clairement : &lt;a href="http://www.lumadis.be/regex/tuto_pcre.php" target="_blank" title="Expression régulière PCRE"&gt;Les expressions régulières PCRE (Perl Compatible Regular Expressions).&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les expressions régulières me permettent de tester les variables qui proviennent de formulaires en POST ou en GET, tout particulièrement lorsque ces dernières vont "attaquer" ensuite une base de donnée. Cela évite tout problème d'injection SQL. J'ai, par ailleurs, mis en place une librairie avec différents types de données (nom, prénom, titre, email, ville, etc...) que je réutilise pour valider les informations récoltées.&lt;/p&gt;
&lt;p&gt;Je n'ai pas, pour le moment, trouvé de meilleure solution pour tester des variables que les expressions régulières. Pourquoi m'en priverais-je si elles sont en plus performantes ? ;-)&lt;/p&gt;</content><category term="Développement web"/><category term="PHP"/></entry><entry><title>Les bienfaits des tests de variable en PHP</title><link href="https://www.alkannoide.com/2008/05/20/les-bienfaits-des-tests-de-variable-en-php/" rel="alternate"/><published>2008-05-20T08:34:00+02:00</published><updated>2008-05-20T08:34:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-05-20:/2008/05/20/les-bienfaits-des-tests-de-variable-en-php/</id><summary type="html">&lt;p&gt;J'ai fait ce billet pour deux raisons principales :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables&lt;/li&gt;
&lt;li&gt;montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Avant tout, la première chose à faire est …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai fait ce billet pour deux raisons principales :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;avoir un coup de gueule auprès des personnes qui ne sont pas capable de mettre en place leur test de variables&lt;/li&gt;
&lt;li&gt;montrer quelques exemples simples pour éviter des erreurs Notice ou Warning en PHP.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Avant tout, la première chose à faire est d'effectuer ses développements avec le niveau le plus haut d'erreur E_ALL. Très souvent cela indique énormément d'erreur mais la contre partie est que l'on aura par la suite moins de problème d'erreur et de compréhension au niveau du code.&lt;/p&gt;
&lt;p&gt;Premier exemple que je rencontre très régulièrement : la non initialisation d'une clé d'un tableau. Ce type d'erreur se voit par un &lt;em&gt;Notice&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Notice: Undefined index 'champ' in 'fichier.php' on line 10&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ce type d'erreur est très simple à corriger. J'utilise pour ma part la fonction &lt;a href="http://fr2.php.net/manual/fr/function.isset.php" target="_blank" title="Fonction isset"&gt;isset()&lt;/a&gt;. Cela donne le bout de code suivant :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;isset&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;$&lt;span class="nv"&gt;tableau&lt;/span&gt;[&lt;span class="s1"&gt;&amp;#39;champ&amp;#39;&lt;/span&gt;]&lt;span class="ss"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;traitement normal
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;}&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;assigne&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;une&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;valeur&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;par&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;défaut&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;On peut appliquer le même type de traitement pour les données des variables \$_GET, \$_POST, ...&lt;/p&gt;
&lt;p&gt;Le second exemple concerne plus la sécurisation des données venant provenant des formulaires et / ou URL pour valider en utilisant les expressions régulières. Mais ce second exemple fera l'objet d'un prochain billet.&lt;/p&gt;</content><category term="Développement web"/><category term="PHP"/></entry><entry><title>Industrialisation des développements, ça marche...</title><link href="https://www.alkannoide.com/2008/04/21/industrialisation-des-developpements-ca-marche/" rel="alternate"/><published>2008-04-21T22:54:00+02:00</published><updated>2008-04-21T22:54:00+02:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-04-21:/2008/04/21/industrialisation-des-developpements-ca-marche/</id><summary type="html">&lt;p&gt;J'ai participé à une conférence mardi dernier organisé par Bull, dans le cadre des &lt;a href="http://www.bull.com/fr/mornings/" target="_blank" title="Morning du Libre"&gt;Mornings du Libre&lt;/a&gt;. Deux conférenciers au programme :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alban Henry, responsable avant-vente, pour Zend, nous présentant les différentes solutions proposés par Zend pour industrialiser les développements en PHP&lt;/li&gt;
&lt;li&gt;Georges Hiraclides, de chez Bull, nous présenta pour sa …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;J'ai participé à une conférence mardi dernier organisé par Bull, dans le cadre des &lt;a href="http://www.bull.com/fr/mornings/" target="_blank" title="Morning du Libre"&gt;Mornings du Libre&lt;/a&gt;. Deux conférenciers au programme :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alban Henry, responsable avant-vente, pour Zend, nous présentant les différentes solutions proposés par Zend pour industrialiser les développements en PHP&lt;/li&gt;
&lt;li&gt;Georges Hiraclides, de chez Bull, nous présenta pour sa part : NovaForge, leur usine de développement logiciel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour faire un résumé de NovaForge, j'utiliserais le terme d'agrégateur d'outils de gestion de projet dans le cadre d'une industrialisation globale des processus. En effet, ce dernier regroupe :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;des outils de Knowledge Management (wiki, forums, etc...)&lt;/li&gt;
&lt;li&gt;des outils de reporting projet ou de pilotage du macro au micro pour permettre à tous les intervenants d'avoir la meilleure vision possible&lt;/li&gt;
&lt;li&gt;des outils de développements&lt;/li&gt;
&lt;li&gt;des outils d'intégration et de test&lt;/li&gt;
&lt;li&gt;des outils de référentiel : bibliothèque de librairies, bonnes pratiques etc...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour le moment accès sur les développements en Java, la version PHP sera prochainement disponible.&lt;/p&gt;
&lt;p&gt;C'est la raison pour laquelle Zend était également présent à cette conférence. Alban Henry nous a présenté les différents logiciels et contribution :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zend Engine (le moteur PHP),&lt;/li&gt;
&lt;li&gt;Zend Framework (l'un des Frameworks PHP les plus populaires)&lt;/li&gt;
&lt;li&gt;Zend Core : un package stable contenant l'ensemble des librairies et serveurs pour l'utilisation de PHP&lt;/li&gt;
&lt;li&gt;Zend Studio : l'IDE&lt;/li&gt;
&lt;li&gt;Zend Platform: l'applicatif côté serveur pour le debug, le reporting...&lt;/li&gt;
&lt;li&gt;Zend Guard : pour protéger les sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bref tout un panel d'outils permettant d'industrialiser les développements.&lt;/p&gt;
&lt;p&gt;Ce que je retiendrais de cette conférence, c'est surtout que toutes les sociétés qui sont passés dans un mode "Industrialisation des développements" a vu ses performances accrus et ses coûts réduits avec un gain de qualité... Je prêchais déjà la bonne parole, je vais continuer à le faire...&lt;/p&gt;
&lt;p&gt;NB : je suis reparti de cette conférence avec quelques goodies (stylo, tapis de souris...) mais également avec un Livre Blanc intitulé : Les forces Logicielles, vers la révolution industrielle des développements applicatifs. Je vous en parlerais dans un prochain billet.&lt;/p&gt;</content><category term="Conférence, Développement web"/><category term="PHP"/></entry><entry><title>Sécurité et PHP</title><link href="https://www.alkannoide.com/2008/03/26/securite-et-php/" rel="alternate"/><published>2008-03-26T19:20:00+01:00</published><updated>2008-03-26T19:20:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-03-26:/2008/03/26/securite-et-php/</id><summary type="html">&lt;p&gt;Et voilà, je viens de terminer ce livre, dont je parlais dans &lt;a href="http://alkann.free.fr/index.php/2008/02/29/optimisation-et-securisation-de-php/" target="_blank"&gt;ce billet&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.eyrolles.com/Informatique/Livre/9782212121148/livre-securite-php-5-et-mysql.php" target="_blank" title="Sécurité PHP5 et MySQL"&gt;&lt;img src="http://www.eyrolles.com/Scan/9782212121148.gif" width="108" height="130" alt="Sécurité PHP5 et MySQL" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Accès sur PHP5, il peut également être appliqué à PHP4 (encore présent sur certaines plateformes). Côté base de donnée, c'est bien entendu MySQL qui est ciblé, cependant les différentes méthodes appliquées pourraient être transposés avec d'autres …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Et voilà, je viens de terminer ce livre, dont je parlais dans &lt;a href="http://alkann.free.fr/index.php/2008/02/29/optimisation-et-securisation-de-php/" target="_blank"&gt;ce billet&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.eyrolles.com/Informatique/Livre/9782212121148/livre-securite-php-5-et-mysql.php" target="_blank" title="Sécurité PHP5 et MySQL"&gt;&lt;img src="http://www.eyrolles.com/Scan/9782212121148.gif" width="108" height="130" alt="Sécurité PHP5 et MySQL" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Accès sur PHP5, il peut également être appliqué à PHP4 (encore présent sur certaines plateformes). Côté base de donnée, c'est bien entendu MySQL qui est ciblé, cependant les différentes méthodes appliquées pourraient être transposés avec d'autres bases de données (Oracle, PostgreSQL...).&lt;/p&gt;
&lt;p&gt;Mon impression générale est excellente, je ne suis pas déçu de l'investissement. Certains des points abordés m'ont permis :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soit de confirmer les méthodes que j'avais mis en place lors de mes précédents développements&lt;/li&gt;
&lt;li&gt;soit de me permettre ultérieurement d'améliorer la sécurité de mon code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le livre m'a également permettre de mettre à jour des méthodes de "piratages" de site que je ne connaissais ou pensais presque impossible à mettre en place. Bref, un livre a posséder absolument !&lt;/p&gt;
&lt;p&gt;Prochain livre "technique", le pavé &lt;a href="http://www.eyrolles.com/Informatique/Livre/9782212113235/livre-php-5-avance.php" target="_blank" title="PHP5 avancé"&gt;PHP5 Avancé&lt;/a&gt;...&lt;/p&gt;</content><category term="misc"/><category term="BDD"/><category term="MySQL"/><category term="Oracle"/><category term="PHP"/><category term="PostgreSQL"/><category term="Sécurité"/><category term="SGBD"/></entry><entry><title>Fin de Netscape, démarrage de Internet Explorer 8</title><link href="https://www.alkannoide.com/2008/03/04/fin-de-netscape-demarrage-de-internet-explorer-8/" rel="alternate"/><published>2008-03-04T12:05:00+01:00</published><updated>2008-03-04T12:05:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-03-04:/2008/03/04/fin-de-netscape-demarrage-de-internet-explorer-8/</id><summary type="html">&lt;p&gt;Netscape a tiré sa révérence ce mois de Février dernier. On se rappelera de Netscape comme étant le premier navigateur à avoir vulgarisé le web (au niveau de son utilisation). Le projet a démarré en 1994. C'est également grâce à Netscape que le Javascript était né. On retiendra également sa …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Netscape a tiré sa révérence ce mois de Février dernier. On se rappelera de Netscape comme étant le premier navigateur à avoir vulgarisé le web (au niveau de son utilisation). Le projet a démarré en 1994. C'est également grâce à Netscape que le Javascript était né. On retiendra également sa mort progressive avec l'arrivée massive et écrasante (dû à son installation par défaut sur les ordinateurs) du navigateur Internet Explorer de Microsoft.&lt;/p&gt;
&lt;p&gt;Racheté plusieurs milliards de dollars par AOL, Netscape n'a alors jamais réussi à remonter la pente. Mais ces "fondateurs" ont migré vers la fondation Mozilla et plus précisément vers le développement de Firefox, l'outsider actuel d'Internet Explorer. La dernière version de Netscape est la 9.0.0.6.&lt;/p&gt;
&lt;p&gt;Mais à peine la fin de Netscape, que l'on parle chez l'éditeur de Richmond (Microsoft) de la prochaine mouture d'Internet Explorer : la version 8. Enfin, on parle, on devrais plutôt dire que les tests sont en train de démarrer, la beta 1 est disponible aux abonnées de la MSDN. Cette version contiendra 2 moteurs afin de gérer progressivement la bascule entre le HTML4/(x)HTML et le HTML5/CSS2.1/XHTML1.1 (&lt;a href="http://alkann.free.fr/index.php/2008/01/23/html5-premier-draft/" target="_blank" title="HTML5 Premier Draft"&gt;cf mon précédent billet&lt;/a&gt;). Lors de l'affichage des pages, l'application choisira le moteur adapté en fonction de la page.&lt;/p&gt;
&lt;p&gt;Mon avis personnel est l'attente d'un navigateur made in Microsoft réellement fidèle aux recommandations du W3C. Ceci afin de ne pas rencontrer à nouveau les problèmes que l'on a toujours avec IE6. En revanche, je salue Microsoft de permettre une migration progressive des sites vers les futurs standards.&lt;/p&gt;
&lt;p&gt;J'attends donc les retours de la fondation Mozilla (qui prépare dans l'année la sortie de Firefox 3) et d'Opera.&lt;/p&gt;</content><category term="Développement web"/><category term="Firefox"/><category term="html"/><category term="Internet Explorer"/><category term="Mozilla"/><category term="navigateur"/><category term="Netscape"/><category term="Opera"/></entry><entry><title>Optimisation et sécurisation de PHP</title><link href="https://www.alkannoide.com/2008/02/29/optimisation-et-securisation-de-php/" rel="alternate"/><published>2008-02-29T12:10:00+01:00</published><updated>2008-02-29T12:10:00+01:00</updated><author><name>admin</name></author><id>tag:www.alkannoide.com,2008-02-29:/2008/02/29/optimisation-et-securisation-de-php/</id><summary type="html">&lt;p&gt;Je répercute un lien depuis le &lt;a href="http://blog.developpez.com/index.php?blog=126&amp;amp;title=les_differentes_solutions_de_cache_en_ph&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1" target="_blank" title="Blog de Julien Pauli"&gt;blog de Julien Pauli&lt;/a&gt;. Ce lien explique les différentes méthodes de mises en cases de code développé en PHP entre l'opcode caching, le memcache et le cache de rendu de page, on trouve toutes les informations dont on a besoin :) J'ai moi même pu …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je répercute un lien depuis le &lt;a href="http://blog.developpez.com/index.php?blog=126&amp;amp;title=les_differentes_solutions_de_cache_en_ph&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1" target="_blank" title="Blog de Julien Pauli"&gt;blog de Julien Pauli&lt;/a&gt;. Ce lien explique les différentes méthodes de mises en cases de code développé en PHP entre l'opcode caching, le memcache et le cache de rendu de page, on trouve toutes les informations dont on a besoin :) J'ai moi même pu compléter à mes connaissances des outils que je ne connaissais pas ou juste de nom.&lt;/p&gt;
&lt;p&gt;L'autre point concerne un livre en Français qui va trés prochainement rejoindre ma bibliothéque "technique" : &lt;a href="http://php.developpez.com/livres/?page=fr#L9782212121148" target="_blank" title="Sécurité PHP5 et MySQL"&gt;Sécurité PHP 5 et MySQL&lt;/a&gt;. Le livre est écrit par deux personnes connus du monde PHP en France : Damien Séguy (&lt;a href="http://www.nexen.net/" target="_blank" title="Nexen.net"&gt;Nexen&lt;/a&gt;) et Philippe Gamache. Je vous tiendrais une courant une fois que je l'aurais lu ;)&lt;/p&gt;</content><category term="misc"/><category term="MySQL"/><category term="PHP"/><category term="Sécurité"/></entry></feed>