<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Spidou</title>
	<atom:link href="http://blog.spidou.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.spidou.com</link>
	<description>Logiciels libres, Ubuntu, Rails...</description>
	<lastBuildDate>Mon, 09 Jul 2012 09:35:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Déployer une application Rails 3.x sur AWS (Amazon Web Services) avec Capistrano, Nginx et Passenger (Partie 1/2)</title>
		<link>http://blog.spidou.com/2012/07/deployer-application-rails-3-aws-amazon-web-services-capistrano-nginx-passenger-partie-1/</link>
		<comments>http://blog.spidou.com/2012/07/deployer-application-rails-3-aws-amazon-web-services-capistrano-nginx-passenger-partie-1/#comments</comments>
		<pubDate>Mon, 09 Jul 2012 09:02:03 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[12.04]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ami]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[elastic]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[instance]]></category>
		<category><![CDATA[lts]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[pare feu]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails 3]]></category>
		<category><![CDATA[rails 3.x]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[security groups]]></category>
		<category><![CDATA[ses]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=196</guid>
		<description><![CDATA[J'ai déjà écrit deux articles pour expliquer comment déployer une application Rails sur Heroku. Pour ceux qui ne savent pas ce que c'est, il s'agit d'un service de PaaS (Plateform as a Service) dans le cloud, permettant de déployer votre application Rails (ou autre) en moins de temps qu'il ne faut pour l'écrire ! Heroku est [...]]]></description>
				<content:encoded><![CDATA[<p>J'ai déjà écrit <a title="Déployer votre application Rails sur Heroku" href="http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/" target="_blank">deux</a> <a title="Déployer une application Rails 3.1 sur Heroku (Cedar)" href="http://blog.spidou.com/2011/11/deployer-application-rails-3-1-sur-heroku-cedar/" target="_blank">articles</a> pour expliquer comment déployer une application Rails sur Heroku. Pour ceux qui ne savent pas ce que c'est, il s'agit d'un service de PaaS (Plateform as a Service) dans le cloud, permettant de déployer votre application Rails (ou autre) en moins de temps qu'il ne faut pour l'écrire !</p>
<p>Heroku est vraiment formidable et j'admire le travail effectué par l'équipe de développement, mais son seul point faible actuellement est qu'il ne permet pas (encore ?) de choisir la zone géographique dans laquelle on souhaite déployer notre application. En effet, Heroku se base sur les services d'Amazon, mais utilise par défaut les serveurs basés aux États-Unis. Partant de ce constat, deux problèmes se posent à moi :</p>
<ul>
<li>étant situé à la l'île de la Réunion, le temps de latence peut être très long juste pour le chargement d'une simple page.</li>
<li>je souhaite déclarer ma base de données à la CNIL, mais celle-ci ne doit pas quitter la zone européenne, ou doit être hébergée par un membre du <a title="Safe harbor - CNIL - Commission nationale de l'informatique et des libertés" href="http://www.cnil.fr/vos-responsabilites/le-transfert-de-donnees-a-letranger/safe-harbor/" target="_blank">Safe Harbor</a>, ce qui n'est pas le cas d'Heroku.</li>
</ul>
<p>Dans ce cas, je n'ai plus le choix, je dois me lancer sans les filets d'Heroku. Et vous allez m'accompagner dans cette aventure, en espérant que cela puisse vous être utile ! <span id="more-196"></span></p>
<h2>S'inscrire sur Amazon AWS</h2>
<p>De toute évidence, il y a beaucoup de chance pour que vous ayez déjà un compte chez Amazon... Mais bon, si ce n'est pas le cas, procédez à l'inscription via <a title="Inscription Amazon Web Services (AWS)" href="https://aws-portal.amazon.com/gp/aws/developer/registration/index.html" target="_blank">cette page</a> et revenez tout de suite après.</p>
<p>&nbsp;</p>
<h2>Créer une instance EC2 (Elastic Compute Cloud)</h2>
<p>Connectez-vous à la <a title="Console d'administration EC2" href="https://console.aws.amazon.com/ec2" target="_blank">console d'administration EC2</a>. La première chose à faire est de choisir la <strong>région</strong> sur laquelle vous souhaitez créer votre instance. Si vous êtes en Europe, ou comme moi à la Réunion, la zone sur laquelle vous aurez le moins de latence est <strong>EU West (Ireland)</strong>. Ce choix se fait tout en haut du menu de gauche.</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Select-Region.png"><img class="size-full wp-image-205 alignnone" title="EC2 Select Region" src="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Select-Region.png" alt="" width="213" height="282" /></a></p>
<p>&nbsp;</p>
<p>Toujours dans le menu de gauche, cliquez sur "Instances" dans le sous-menu du même nom. Cliquez sur "Launch instance". Sélectionnez "Quick Launch Wizard" puis appuyez sur "Continue". Entrez les quelques informations demandées comme dans l'aperçu ci-dessous :</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-new-instance.png"><img class="alignnone size-large wp-image-204" title="Nouvelle instance EC2" src="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-new-instance-1024x621.png" alt="Nouvelle instance EC2" width="550" height="333" /></a></p>
<p>&nbsp;</p>
<p>Le choix proposé par défaut pour l'image est <strong>Amazon Linux AMI</strong>. Personnellement, j'ai préféré choisir la <strong>Ubuntu Server 12.04 LTS en 64 bits</strong> (attention, la suite de l'article se base sur ce choix).</p>
<p>Dans la section "Choose a Key Pair", entrez le nom de votre jeu de clé (qui vous verrez, vous permettra de vous connecter à votre instance par la suite) puis cliquez sur "Download". Sauvegardez précieusement le fichier <strong>.pem</strong> dans un dossier <em>~/.ec2</em> créé pour l'occasion. Vous pouvez maintenant cliquer sur "Continue". La page suivante affiche un récapitulatif. Vous pouvez cliquer sur "Launch" pour créer immédiatement votre instance. Cliquez ensuite sur "Close" pour fermer la fenêtre d'informations.</p>
<p>&nbsp;</p>
<h2>Se connecter à l'instance EC2</h2>
<p>Maintenant que votre instance est créée et démarrée (au bout de quelques secondes), vous devez vous y connecter. Faites un clic droit sur la ligne représentant votre instance, puis cliquez sur "Connect".</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Connect.png"><img class="alignnone size-full wp-image-206" title="EC2 Connect" src="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Connect.png" alt="" width="832" height="233" /></a></p>
<p>&nbsp;</p>
<p>Choisissez ensuite la première option "Connect with a standalone SSH Client" et copier (Ctrl-C) le texte donné en exemple, qui devrait ressembler à ceci :</p>
<p><code>ssh -i mykeypair.pem ubuntu@ec2-xx-xxx-xx-xx.eu-west-1.compute.amazonaws.com</code></p>
<p>Puis servez-vous en pour vous connecter. Si vous aviez précédemment placé votre fichier .pem dans le dossier <em>~/.ec2</em>, placez-vous dans votre dossier personnel et entrez la commande suivante :</p>
<p><code>ssh -i .ec2/mykeypair.pem ubuntu@ec2-xx-xxx-xx-xx.eu-west-1.compute.amazonaws.com<br />
Are you sure you want to continue connecting (yes/no)?</code></p>
<p>Tapez <strong>yes</strong> puis appuyez sur la touche Entrée.</p>
<p>Voilà, vous êtes maintenant connecté à votre instance EC2 via SSH. Les commandes <strong>root</strong> peuvent être lancées via la commande <strong>sudo</strong>.</p>
<p>&nbsp;</p>
<h2>Configurer et préparer l'instance EC2 à héberger une application Rails</h2>
<p>Les commandes suivantes doivent être lancées dans votre instance EC2 via SSH.</p>
<h3>Installation des dépendances</h3>
<p><code>sudo apt-get update<br />
sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev curl git-core ruby rubygems libv8-dev libmysql-ruby libmysqlclient-dev</code></p>
<h3>Installation de Rails, Bundler et Passenger</h3>
<p><code>sudo gem install rails bundler passenger --no-ri --no-rdoc</code></p>
<h3>Installation de Nginx avec Passenger</h3>
<p><code>sudo passenger-install-nginx-module</code></p>
<p>Appuyez sur <strong>Entrée</strong> au message d'accueil pour passer à l'installation. Puis entrez le chiffre <strong>1</strong> pour choisir "download, compile, and install Nginx for me" et appuyez sur <strong>Entrée</strong>. Ensuite acceptez les valeurs par défaut pour toutes les autres questions.</p>
<p><code>wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh<br />
sudo mv init-deb.sh /etc/init.d/nginx<br />
sudo chmod +x /etc/init.d/nginx<br />
sudo /usr/sbin/update-rc.d -f nginx defaults</code></p>
<p><code>sudo /etc/init.d/nginx stop<br />
sudo /etc/init.d/nginx start</code></p>
<h3>Configuration de Nginx</h3>
<p>Modifier le fichier <em>/opt/nginx/config/nginx.conf</em> afin d'obtenir quelque chose comme ceci :</p>
<p><code>server {<br />
listen 80;<br />
server_name localhost;<br />
root /home/ubuntu/www/sample/public;<br />
passenger_enabled on;<br />
}</code></p>
<p>Pensez à bien supprimer ou commenter les lignes suivantes :</p>
<p><code>location / {<br />
root html;<br />
index index.html index.htm;<br />
}</code></p>
<p>Puis redémarrer le serveur Nginx avec la commande suivante :</p>
<p><code>sudo service nginx restart</code></p>
<h3>Création d'un projet pour tester l'environnement</h3>
<p><code>mkdir /home/ubuntu/www; cd /home/ubuntu/www<br />
rails new sample -d mysql</code></p>
<h3>Configuration du pare-feu</h3>
<p>Dans la <a title="Console d'administration EC2" href="https://console.aws.amazon.com/ec2" target="_blank">console d'administration EC2</a>, cliquez sur "Security Groups" dans le sous-menu "Network &amp; Security". Sélectionnez la première ligne qui devrait s'appeler "quicklaunch-0", puis dans le panneau de propriétés du bas, sélectionnez l'onglet "Inbound".</p>
<p>Créez une nouvelle règle en sélectionnant <strong>HTTP</strong> dans la liste de choix "Create a new rule", en laissant <strong>0.0.0.0/0</strong> dans "Source" et en cliquant sur "Add rule".</p>
<p>Cliquez sur "Apply Rule Changes" pour appliquer les changements.</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Security-Groups.png"><img class="alignnone size-full wp-image-209" title="EC2 Security Groups" src="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Security-Groups.png" alt="" width="695" height="586" /></a></p>
<p>&nbsp;</p>
<p>Vous pouvez maintenant tester si l'application Rails fonctionne correctement en tapant l'adresse <em>DNS publique temporaire</em> de votre instance EC2 dans votre navigateur. Vous pouvez récupérer cette adresse dans la console d'administration EC2, menu "Instances", onglet "Description", valeur "Public DNS". Cette adresse est susceptible de changer à chaque redémarrage de votre instance.</p>
<p>Si vous obtenez cet écran, c'est que tout fonctionne correctement !</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Rails-App.png"><img class="alignnone size-full wp-image-210" title="EC2 Rails App" src="http://blog.spidou.com/wp-content/uploads/2012/07/EC2-Rails-App.png" alt="" width="747" height="557" /></a></p>
<p>&nbsp;</p>
<p>Dans la deuxième et dernière partie de cet article, nous verrons comment configurer <strong>Capistrano</strong> pour simplifier le déploiement de notre application sur notre instance EC2, et comment configurer Rails pour utiliser <strong>RDS</strong> (Relational Database Service) et <strong>SES</strong> (Simple Email Service).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2012/07/deployer-application-rails-3-aws-amazon-web-services-capistrano-nginx-passenger-partie-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Comment remporter la WebCup ?</title>
		<link>http://blog.spidou.com/2012/05/comment-remporter-la-webcup/</link>
		<comments>http://blog.spidou.com/2012/05/comment-remporter-la-webcup/#comments</comments>
		<pubDate>Wed, 30 May 2012 10:38:55 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[24h]]></category>
		<category><![CDATA[24h chrono]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[baseline]]></category>
		<category><![CDATA[chrono]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[développement]]></category>
		<category><![CDATA[grand prix]]></category>
		<category><![CDATA[jury]]></category>
		<category><![CDATA[méthode agile]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webcup]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=170</guid>
		<description><![CDATA[Je l'avoue, le titre est volontairement provocateur, mais je vous rassure je n'ai pas la prétention de détenir les solutions pour gagner à coup sûr cette compétition. Cet article a pour objectif de vous donner quelques astuces pour mettre toutes les chances de votre côté. Pour ceux qui ne connaissent pas ce qu'est la WebCup, il s'agit [...]]]></description>
				<content:encoded><![CDATA[<p>Je l'avoue, le titre est volontairement provocateur, mais je vous rassure je n'ai pas la prétention de détenir les solutions pour gagner à coup sûr cette compétition.</p>
<p>Cet article a pour objectif de vous donner quelques astuces pour mettre toutes les chances de votre côté.</p>
<p>Pour ceux qui ne connaissent pas ce qu'est la <a title="WebCup" href="http://www.webcup.re/a-propos-de-webcub-ile-de-la-reunion/" target="_blank">WebCup</a>, il s'agit d'une compétition où il est demandé de réaliser une site internet en 24h. Vous pouvez y aller en équipe ou en solo, que vous soyez professionnel, étudiant ou amateur. <span id="more-170"></span></p>
<h1>Définissez votre baseline</h1>
<p>Avant tout, vous devez savoir quelle direction vous voulez prendre, et quels sont vos objectifs. Voulez-vous remporter le Grand Prix du Jury, le Prix du Meilleur Graphisme ou le Prix du Meilleur Développement ? Ou peut-être même les trois ?</p>
<p>En fonction de vos objectifs, vous saurez sur quels éléments vous allez devoir vous focaliser pendant la compétition.</p>
<p>Ensuite, vous devez savoir si vous voulez vous orienter vers un style sérieux, "corporate", réaliste, sophistiqué, futuriste, fun, humoristique, ou que sais-je ? Il est important de prendre cette direction suffisamment tôt, et de la garder en tête pour toutes vos décisions futures. Votre site en sortira plus cohérent et fort d'un esprit bien ancré.</p>
<h1>Commencez par la fin</h1>
<p>Ce qu'il faut savoir, c'est que la WebCup est une compétition impitoyable ! Vous n'avez que cinq petites minutes pour défendre un travail réalisé en 24h, devant un jury qui ne demande qu'à être impressionné. Vous l'avez donc compris, la présentation finale de votre site est très importante si vous espérez obtenir un prix.</p>
<h4>Mise en scène</h4>
<p>Vous devez commencer par réfléchir à la mise en scène de votre présentation finale. Chaque seconde doit être calculée et utilisée à bon escient. Pour cela, réfléchissez et répondez aux questions suivantes :</p>
<ul>
<li>Quelles fonctionnalités souhaiteriez-vous présenter ? (astuce : choisir les fonctionnalités qui ont le plus de potentiel pour que les membres du jury poussent un "Wooaaaw !!")</li>
<li>Le jury peut-il être sollicité ou impliqué ? (la seule réponse possible devrait être oui !) Comment ?</li>
<li>Le public peut-il être sollicité ou impliqué ? Si oui, comment ?</li>
</ul>
<p>Une fois que vous avez votre liste de fonctionnalités, classez les par importance (c'est simple, le plus gros "Woooaaaaw !!" en premier, le plus petit en dernier). C'est dans cet ordre que vous allez les développer par la suite.</p>
<h4>Casting</h4>
<p>Une fois que vous avez terminé la mise en scène, il vous reste à attribuer les rôles. Si vous êtes en solo, la question ne se pose même pas. Si vous êtes une équipe, vous devez choisir la personne ayant le plus de charisme et d'aisance devant une "assemblée". Si votre équipe ne dispose pas d'un tel profil, choisissez la personne qui parle le plus fort et le plus clairement possible.</p>
<p>Vous pouvez aussi décider que plusieurs personnes s'expriment lors de la présentation, mais uniquement si cela apporte une plus-value (mouvement, dynamisme), et si chaque personne respecte son temps de parole.</p>
<p>Les autres membres de l'équipe qui ne parlent pas peuvent servir d'assistants pour manipuler le site web, faire défiler une diapositive, faire passer un objet au public ou au jury, etc.</p>
<h1>Développez d'abord les tâches prioritaires</h1>
<p>Ne nous leurrons pas, il est impossible de terminer à 100% un site web en seulement 24h. Du moins pas le genre de site demandé pour cette compétition. L'objectif est bien entendu de vous apprendre à repousser vos limites, de vous comparer aux autres acteurs du marché local, de vous amuser... mais surtout de voir si vous êtes capable de définir correctement vos priorités.</p>
<p>Si vous connaissez un peu les méthodes agiles, vous comprendrez toute de suite où je veux en venir dans le paragraphe suivant. Sinon je vous suggère de vous documenter sur le <a title="Méthodes Agiles" href="http://fr.wikipedia.org/wiki/M%C3%A9thode_agile" target="_blank">sujet</a>.</p>
<p>À mon sens, la WebCup s'inscrit très bien dans les valeurs des méthodes agiles, dont voici le Premier (avec un P majuscule) principe :</p>
<blockquote><p>La plus haute priorité est de satisfaire le client en livrant <strong>rapidement</strong> et régulièrement des <strong>fonctionnalités à forte valeur ajoutée</strong></p></blockquote>
<p>24h pour une première version, je trouve que c'est suffisamment <em>rapide</em>, tout comme le préconise le manifeste agile.</p>
<p><em>Des fonctionnalités à forte valeur ajoutée </em>signifie que vous devez absolument commencer par les tâches prioritaires, et dans notre cas ce sont celles qui vont sublimer le jury.</p>
<p>Pour cela, la WebCup représente un très bon exercice pour tous ceux qui souhaitent mettre en pratique les méthodes agiles et les inclure dans leurs méthodes de développement.</p>
<h1>Ne laissez rien au hasard</h1>
<p>Attention, la WebCup c'est du sérieux ! N'allez pas croire que vous allez vous en tirer avec un simple coquille vide, c'est-à-dire avec quelques beaux écrans et quelques animations et sans réel développement derrière. En effet, entre la fin de la compétition et votre présentation devant le jury - ce qui représente environ 2h de temps - des experts scrutent votre code et vérifient que votre site est réellement fonctionnel. Chaque fonctionnalité est testée - en votre compagnie - puis évaluée.</p>
<p>C'est pourquoi une fois que les fonctionnalités principales sont développées à 100%, et prêtes à être présentées au jury, vous pouvez vous concentrer sur les fonctionnalités secondaires. Ne laissez rien au hasard, même les plus petits détails feront la différence.</p>
<p>Bon courage, et dites-moi si cette méthode vous a (ou "aurait") été utile.</p>
<p>N.B. : Cet article n'est pas affilié à l'association WebCup, et tout ce qui y est écrit l'est en mon nom, et non à celui de l'association WebCup. Le nom WebCup est une marque déposée.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2012/05/comment-remporter-la-webcup/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Déployer une application Rails 3.1 sur Heroku (Cedar)</title>
		<link>http://blog.spidou.com/2011/11/deployer-application-rails-3-1-sur-heroku-cedar/</link>
		<comments>http://blog.spidou.com/2011/11/deployer-application-rails-3-1-sur-heroku-cedar/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 11:40:15 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[asset]]></category>
		<category><![CDATA[cedar]]></category>
		<category><![CDATA[déploiement]]></category>
		<category><![CDATA[déployer]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[pipeline]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails 3]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=134</guid>
		<description><![CDATA[Dans un précédent billet, j'expliquais Comment déployer une application Rails 2.X sur Heroku. Le temps passe et les outils ont évolué, une petite mise à jour s'impose donc ! Voyons ensemble la démarche à suivre pour déployer une application Rails 3.1 sur Heroku (Cedar) Prérequis Installer Git :$ apt-get install git-core Avoir une application Rails [...]]]></description>
				<content:encoded><![CDATA[<p>Dans un précédent billet, j'expliquais <a title="Déployer votre application Rails sur Heroku" href="http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/">Comment déployer une application Rails 2.X sur Heroku</a>.</p>
<p>Le temps passe et les outils ont évolué, une petite mise à jour s'impose donc !</p>
<p>Voyons ensemble la démarche à suivre pour déployer une application Rails 3.1 sur Heroku (Cedar)</p>
<p><span id="more-134"></span></p>
<h3>Prérequis</h3>
<ul>
<li>Installer Git :<code>$ apt-get install git-core</code></li>
<li>Avoir une application Rails qui fonctionne</li>
<li>Placer le code source de l'application Rails sous Git (versionning)</li>
<li>Créer et configurer votre clé SSH</li>
<li>Créer un compte sur le site heroku.com</li>
<li>Installer la gem Heroku : <code>$ gem install heroku</code></li>
<li>Ajouter votre clé SSH au server Heroku : <code>$ heroku keys:add</code></li>
</ul>
<div>La mise en oeuvre des pré-requis est détailleé dans mon <a title="Déployer votre application Rails sur Heroku" href="http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/">précédent billet</a>.</div>
<div>
<h2>Création de l'application sur Heroku Cedar</h2>
<p>J'insiste volontairement sur Heroku <strong>Cedar</strong> car il s'agit d'un élément <em>clé</em> si l'on souhaite déployer une application Rails <strong>3.1</strong>.</p>
<p>On crée donc notre application Heroku avec la commande suivante :</p>
<pre>$ heroku create <strong>-s cedar</strong> my_app</pre>
<h2>PostgreSQL</h2>
<p>Heroku ne prend en charge que les bases de données de type PostgreSQL, c'est pourquoi vous devez ajouter les lignes suivantes au fichier <code>Gemfile</code> :</p>
<pre>group :production do
  gem 'pg'
end</pre>
<p>Heroku met en garde sur cette pratique, car il estime qu'il est préférable d'avoir un environnement de développement le plus proche possible de votre environnement de développement. Idéalement, vous devriez avoir dans votre fichier <code>Gemfile</code> :</p>
<pre>gem 'pg'</pre>
<h2>Asset Pipeline</h2>
<p>Pour bien comprendre le principe du Asset Pipeline qui fait son apparition dans Rails 3.1, je vous suggère fortement de lire la <a href="http://guides.rubyonrails.org/asset_pipeline.html">documentation officielle</a>.</p>
<p>Maintenant que vous maîtrisez le sujet, voyons comment tout cela fonctionne dans la réalité !</p>
<p>Il y a trois manières différentes de mettre en place Asset Pipeline sur Heroku :</p>
<ol>
<li>En compilant les "assets" localement et en les ajoutant au versionning</li>
<li>En compilant les "assets" au moment du déploiement <em>(solution que je recommande)</em></li>
<li>En compilant les "assets" à l’exécution</li>
</ol>
<h3>Solution n°1 : compiler les "assets" localement</h3>
<p>Tout d'abord, il faut modifier le fichier <code>Gemfile</code> pour obtenir quelque chose comme ceci :</p>
<pre>group :assets do
  gem 'coffee-rails', '~&gt; 3.1.1'
  gem 'uglifier',     '&gt;= 1.0.3'
end</pre>
<pre>gem 'sass-rails', '~&gt; 3.1.4'</pre>
<p>Ensuite il faut compiler les "assets" en lançant la commande suivante :</p>
<pre>rake assets:precompile RAILS_ENV=production</pre>
<p>Cette commande va créer le dossier <code>public/assets</code> (s'il n'était pas déjà présent) et y générer l'ensemble des fichiers "assets" (.css, .css.gz, .js, .js.gz, les fichiers images ainsi que les fichiers avec leur empreinte MD5). Un fichier <code>manifest.yml</code> est également généré, qui permet à lui seul de recenser tous les "assets" compilés.</p>
<p>Le dossier <code>public/assets</code> doit faire partie du versionning (dans le dépôt Git) pour qu'il soit accessible par Heroku :</p>
<pre>git add public/assets
git commit -m "add public/assets into repo and set up locally compiled assets"</pre>
<p>Il suffit maintenant de lancer la commande suivante pour déployer notre application :</p>
<pre>git push heroku master</pre>
<p>Pendant la procédure, Heroku nous informe qu'il a bien trouvé le fichier <code>manifest.yml</code>, et qu'il considère donc que les "assets" sont déjà compilés et prêts à être utilisés :</p>
<pre>-----&gt; Preparing app for Rails asset pipeline
       Detected manifest.yml, assuming <strong>assets were compiled locally</strong></pre>
<h3>Solution n°2 : compiler les "assets" lors du déploiement</h3>
<p>Pour commencer, il faut ajouter au fichier <code>Gemfile</code> les lignes suivantes :</p>
<pre>gem 'execjs'
gem 'sass-rails', '~&gt; 3.1.4'
gem 'compass'
gem 'haml'</pre>
<p>Heroku aillant la particularité d'être une solution d'hébergement en "lecture seule" (mis à part pour le dossier <code>/tmp</code>), le seul moyen de stocker nos "assets" compilés et justement de passer par le dossier <code>/tmp</code>. Les modifications qui suivent sont nécessaires pour le bon fonctionnement de Compass sur Heroku.</p>
<p>Créer un fichier <code>config/compass.rb</code> avec les lignes suivantes :</p>
<pre>project_type = :rails
http_path    = '/'
css_dir      = 'tmp/stylesheets'
sass_dir     = 'app/views/stylesheets'</pre>
<p>Puis un deuxième fichier <code>config/initializers/compass.rb</code> avec le contenu suivant :</p>
<pre>require 'fileutils'
FileUtils.mkdir_p(Rails.root.join("tmp", "stylesheets"))

Rails.configuration.middleware.insert_before('Rack::Sendfile', 'Rack::Static',
    :urls =&gt; ['/stylesheets'],
    :root =&gt; "#{Rails.root}/tmp")</pre>
<p>Vous pouvez ajouter la ligne suivante à votre fichier <code>.gitignore</code> :</p>
<pre>/public/assets/*</pre>
<p>Valider ensuite les changements dans git :</p>
<pre>git add .
git commit -m "ignore public/assets and set up assets compilation during deployment"</pre>
<p>Il suffit maintenant de lancer la commande suivante pour déployer notre application :</p>
<pre>git push heroku master</pre>
<p>Pendant la procédure, Heroku nous informe qu'il n'a trouvé aucun "asset" compilé (le fichier <code>public/assets/manifest.yml</code> étant absent), et qu'il va donc les compiler immédiatement :</p>
<pre>-----&gt; Preparing Rails asset pipeline
       Running: <strong>rake assets:precompile</strong></pre>
<h3>Solution n°3 : compiler les "assets" à l’exécution</h3>
<p>Visiblement, cette solution est mise en place automatiquement par Heroku lorsqu'il n'arrive pas à exécuter la commande <code>assets:precompile</code>, on observe alors les lignes suivantes lors du déploiement :</p>
<pre lang="term">-----&gt; Preparing Rails asset pipeline
       Running: rake assets:precompile
       ERROR: Unable to connect to memcached
       Precompiling assets failed, <strong>enabling runtime asset compilation</strong>
       Injecting rails31_enable_runtime_asset_compilation</pre>
<p>Pour contourner le fait que Rails 3.1 désactive la compilation des "assets" à l'exécution, Heroku injecte automatiquement le plugin <a href="https://github.com/hone/rails31_enable_runtime_asset_compilation">rails31_enable_runtime_asset_compilation</a>.</p>
<p>Il faut bien comprendre que cette dernière solution n'est pas vraiment envisageable en production, il s'agit surtout d'une procédure de secours à la solution n°2.</p>
<h2>Envoi d'e-mails</h2>
<p>Si votre application a besoin d'envoyer des e-mails (via Devise, ou autre), pensez à configurer correctement vos environnements :</p>
<p>Dans <code>config/environments/development.rb</code> :</p>
<pre>config.action_mailer.default_url_options = { :host =&gt; 'localhost:3000' }</pre>
<p>Dans <code>config/environments/production.rb</code> :</p>
<pre>config.action_mailer.default_url_options = { :host =&gt; 'yourapp.heroku.com' }</pre>
<p>Et enfin, simplifiez-vous la vie en utilisant SendGrid. La commande a légèrement changé :</p>
<pre>heroku addons:add sendgrid:<strong>starter</strong></pre>
<p>Je donne plus d'informations sur la mise en place de SendGrid <a title="Déployer votre application Rails sur Heroku" href="http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/">ici</a>.</p>
<h2>Petits changements</h2>
<p>Certaines commandes ont un peu changé également, comme par exemple :</p>
<pre>heroku <strong>run</strong> rake db:migrate</pre>
<pre>heroku <strong>run</strong> rake db:seed</pre>
<pre>heroku <strong>run</strong> console</pre>
<h2>Conclusion</h2>
<p>Voilà vous êtes arrivés au bout ! N'hésitez pas à me dire si vous avez rencontré des difficultés...</p>
<h4></h4>
<h4>Sources :</h4>
<p><a href="http://devcenter.heroku.com/articles/rails31_heroku_cedar">http://devcenter.heroku.com/articles/rails31_heroku_cedar<br />
</a><a href="http://devcenter.heroku.com/articles/rails3">http://devcenter.heroku.com/articles/rails3<br />
</a><a href="http://devcenter.heroku.com/articles/using-compass">http://devcenter.heroku.com/articles/using-compass<br />
</a><a href="http://www.engineyard.com/blog/2011/sass-compass-and-the-rails-3-1-asset-pipeline/">http://www.engineyard.com/blog/2011/sass-compass-and-the-rails-3-1-asset-pipeline/</a> <a href="http://edgeguides.rubyonrails.org/asset_pipeline.html">http://edgeguides.rubyonrails.org/asset_pipeline.html</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2011/11/deployer-application-rails-3-1-sur-heroku-cedar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Startup Weekend Réunion 2011</title>
		<link>http://blog.spidou.com/2011/10/startup-weekend-reunion-2011/</link>
		<comments>http://blog.spidou.com/2011/10/startup-weekend-reunion-2011/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 11:10:13 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[dream to real]]></category>
		<category><![CDATA[entreprise]]></category>
		<category><![CDATA[fleur d'arome]]></category>
		<category><![CDATA[greefood]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[startupweekend]]></category>
		<category><![CDATA[superbook]]></category>
		<category><![CDATA[supinfo]]></category>
		<category><![CDATA[weekend]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=118</guid>
		<description><![CDATA[La première Startup Weekend Réunion s'est déroulé ce weekend, du 21 au 23 octobre 2011, dans les locaux de Supinfo à Saint-Denis. Au total, 23 projets ont été pitchés, 13 ont été retenus par le staff, et 10 sont arrivés au terme des 3 jours. J'ai essayé de faire un petit récap des projets selon [...]]]></description>
				<content:encoded><![CDATA[<p>La première <a title="Startup Weekend Réunion" href="http://reunion.startupweekend.org/" target="_blank">Startup Weekend Réunion</a> s'est déroulé ce weekend, du 21 au 23 octobre 2011, dans les locaux de Supinfo à Saint-Denis.</p>
<p>Au total, 23 projets ont été pitchés, 13 ont été retenus par le staff, et 10 sont arrivés au terme des 3 jours.</p>
<p>J'ai essayé de faire un petit récap des projets selon mes souvenirs, dans l'ordre de passage. J'ai également donné mon avis (qui reste mon avis), et une note (je me base sur la qualité du pitch, le potentiel du projet, et sa capacité à être rentable rapidement et sur le long terme).</p>
<p><span id="more-118"></span></p>
<p><strong>1. Servanoo</strong></p>
<p><strong> </strong>C'est une sorte d'Amazon, mais pour la restauration. En gros, il est tard, on est fatigué et on a faim. On se connecte sur Servanoo. On choisit son/ses repas et on commande (j'imagine que le paiement se fait en ligne?). Servanoo s'occupe de passer la commande auprès du/des prestataire(s) (restaurant, pizzeria, etc) et de lui donner les informations de livraison. Le(s) prestataire(s) livrent directement chez nous. On mange.<br />
<span style="text-decoration: underline;">Business Model</span> : Récupérer une commission sur chaque commande effectuée</p>
<p><span style="text-decoration: underline;">Mon avis</span> : L'idée peut être bonne, mais beaucoup de détails sont passés à la trappe (logistique, beaucoup de restaurant ne livrent pas à domicile, frais d'hébergement du site web, etc). Il faut également se poser la question si ce service répond réellement à un problème/besoin.<br />
<span style="text-decoration: underline;">Ma note</span> : 2/10</p>
<p><strong>2. Fleur d'arôme</strong></p>
<p>C'est un présentoir de bouteille de vin en forme de moule ouverte (dit comme ça, c'est pas très glamour), qui a l'avantage de présenter la bouteille sous un nouvel angle, avec un éclairage original et un système de refroidissement par coussinet (pour maintenir la bouteille à la bonne température).<br />
<span style="text-decoration: underline;">Business Model</span> : Tout simplement, le vendre à un maximum de clients dans le réseau CHR (Café - Hôtel - Restaurant)</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Je ne m'y connais pas de tout dans le domaine de la présentation de vin, donc je ne pourrais pas dire si ce projet est innovant. Si c'est le cas, pourquoi pas ? Mais je doute qu'une startup puisse se reposer sur ce seul produit. À mon avis pour se lancer dans ce domaine, il faudrait avoir au moins une dizaine de produits similaires (ou au moins, d'autres idées, d'autres concepts), pour fournir au client un minimum de choix. Ensuite il était question de breveter le double système éclairage/refroidissement. Dans ce cas, il faudrait absolument basculer le produit dans une gamme de luxe, pour espérer récupérer l'investissement et l'énergie dépensée pour l'obtention du brevet !<br />
<span style="text-decoration: underline;">Ma note</span> : 4/10</p>
<p><strong>3. LiveReunion</strong></p>
<p>Il s'agit pour ce projet de faire mieux que les PagesJaunes et Reunitoo. Comment s'y prendre ? En faisant un mix de ces deux concurrents et en prenant le meilleur de chacun : plus étoffé que Reunitoo (grâce à la gratuité pour les annonceurs) et mieux fournis en information que les PagesJaunes (présentation des produits des annonceurs).<br />
<span style="text-decoration: underline;">Business Model</span> : La publicité, et le développement de modules spécifiques pour certains annonceurs (si je me souviens bien)</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Beaucoup d'entreprises s'y sont essayées et se sont cassées la figure. Plus récemment, MyVisite360, qui pourtant propose un produit "innovant" et différent de la concurrence, n'a pas réussi à séduire les annonceurs et à prendre son envol.<br />
Je pense qu'il faut un projet beaucoup plus solide et novateur pour se lancer dans ce domaine.<br />
<span style="text-decoration: underline;">Ma note</span> : 2/10</p>
<p><strong>4. GreeFood</strong></p>
<p>Ce projet consiste à fabriquer de la farine alimentaire protéinée à base d'insectes, dans un premier temps pour nourrir les animaux, puis dans un second temps pour nourrir l'Homme. Pour résumer, si j'ai bien compris le procédé, il s'agirait d'ébouillanter les petites bestioles, puis de les faire sécher avant de les réduire en poudre/farine. Et tout ceci sans perdre les caractéristiques bénéfiques des insectes, notamment leur fort taux en protéine.<br />
<span style="text-decoration: underline;">Business Model</span> : Vendre cette farine alimentaire protéinée à un maximum d'agriculteurs locaux (pour résumer). Visiblement, la fabrication de cette farine alimentaire serait moins coûteuse, et plus respectueuse de l'environnement.</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Projet intéressant et novateur, mais qui pourrait faire peur à certains agriculteurs. Une petite étude sur les effets de cette nouvelle alimentation sur les animaux en rassurerait plus d'un. Dommage également de proposer un prix plus élevé que la farine alimentaire utilisée actuellement par les agriculteurs, qui ne verront pas forcément d'intérêt de s'y lancer. En partant sur un prix de départ légèrement plus bas que le marché, cela couplé avec un label "Bio", il est nettement plus probable que de nombreux agriculteurs adoptent le produit les yeux fermés.<br />
<span style="text-decoration: underline;">Ma note</span> : 6/10</p>
<p><strong>5. GreenWifi Everywhere</strong></p>
<p>Le but de ce projet est noble : fournir un accès Wifi à tous, gratuitement. Comment ? Grâce à l'énergie solaire, qui alimenterait les différents spots repartis un peu partout sur l'île. Et pour couronner le tout, l'idée est de fournir un accès complet, en garantissant une connexion permanente, même en déplacement ("roaming" wifi).<br />
<span style="text-decoration: underline;">Business Model</span> : Aucun...</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Ce projet repose uniquement sur les aides/subventions des collectivités, et ne génère quasiment aucun revenu. Bien que l'intention soit noble, elle n'en est pas pour autant viable. La réalisation de ce type de projet serait plutôt la vocation d'une fondation ou d'une association à but non lucratif. Une startup (et toute entreprise) est faite évidemment pour aider les gens, mais aussi (et surtout) pour générer de l'argent !<br />
<span style="text-decoration: underline;">Ma note</span> : 1/10</p>
<p><strong>6. SuperBook</strong></p>
<p>Ce projet a vraisemblablement connu plusieurs retournements de situation. À l'origine, le but du projet est de fournir une nouvelle expérience de lecture en proposant du contenu immersif pendant la lecture d'un livre sur une tablette. Le bruit de la pluie sur la tôle, l'orage, un coup de feu... ce sont autant d’évènements sonores qui pourraient venir accompagner votre lecture et vous immerger encore plus dans l'histoire que vous lisez. Mais après avoir découvert que le projet existait déjà outre-atlantique, et qu'un brevet aurait été déposé, l'équipe décide de se focaliser sur un genre particulier (les mangas) et imagine un tout nouveau concept. Les évènements sonores se déclencheraient maintenant de manière automatique, grâce à un procédé qui permet de détecter le positionnement des yeux sur la page (via la caméra frontale de l'appareil).<br />
<span style="text-decoration: underline;">Business Model</span> : Vendre aux éditeurs des licences d'utilisation de leur kit de développement qui permet de fabriquer des "SuperBook" + une commission sur chaque "SuperBook" vendu (du moins je l'imagine, je ne me rappelle plus exactement)</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Grâce à un pitcheur charismatique et une équipe déjà bien formée, on a eu droit à une présentation bluffante (et immersive) pour ce projet innovant. Ce projet nécessitant une bonne maîtrise technologique et une veille concurrentielle accrue risque de rencontrer des difficultés à la hauteur de leur ambition. Ils ont tout intérêt à bien s'entourer, des points de vue technologique et juridique notamment.<br />
<span style="text-decoration: underline;">Ma note</span> : 8/10</p>
<p><strong>7. Cherry Redlips</strong></p>
<p>Il parait qu'une vague de mode "rétro" s'empare de la France, et Cherry Redlips compte bien en tirer profit. Sur la base d'un système de distribution à la Tupperware (ou Frédéric M, et cie), l'objectif est de proposer à une clientèle féminine un catalogue de vêtement s'inspirant des années 20 à 50 aux États-Unis. Il sera possible de parcourir le catalogue de produit en ligne, et certainement d'y faire des achats. Des réunions seront également organisées (toujours sur le modèle Tupperware) où les clientes pourront toucher et essayer certains vêtements pré-sélectionnés.<br />
<span style="text-decoration: underline;">Business Model</span> : "Tupperware-like"</p>
<p><span style="text-decoration: underline;">Mon avis</span> : Pourquoi pas ? Le système de distribution est rôdé, on n'invente rien, donc on ne prend pas beaucoup de risque à ce niveau. Malheureusement le succès du projet dépend beaucoup de la tendance et de la mode actuelle (ou dans un futur proche), et n'offre donc très peu de perspective dans l'avenir... Évidemment ce n'est pas une excuse pour ne pas se lancer dans ce genre d'aventure, à condition de continuer la veille et de guetter les prochaines tendances.<br />
<span style="text-decoration: underline;">Ma note</span> : 5/10</p>
<p><strong>8. BTPlink</strong></p>
<p>Une plateforme permettant de simplifier les relations (et "restaurer la confiance") entre les particuliers et les artisans.<br />
<span style="text-decoration: underline;">Business Model</span> : Prélever 6% de commission sur le prix total du chantier.</p>
<p><span style="text-decoration: underline;">Mon avis</span> : J'avoue ne pas avoir suivi la présentation entièrement, donc je ne pourrais pas en dire grand chose. Je me rappelle que le jury avait relevé un problème de positionnement vis-à-vis des architectes, ou encore concernant la gestion des aléas (retards, non qualités, etc). Le pitcheur a été très déstabilisé et n'a pas su répondre correctement. On voit que le projet n'est pas encore mature et manque clairement de stabilité. Un projet à creuser et à bien ficeler de bout-en-bout, par exemple en sondant les principaux acteurs du marché sur le fait d'avoir ce nouveau type d'intermédiaire.<br />
<span style="text-decoration: underline;">Ma note</span> : 4/10</p>
<p><strong>9. Saint-Denis Pass</strong></p>
<p>Il s'agit de proposer au dionysiens des avantages dans les commerces de Saint-Denis, et cela proposé par un natif de la ville. Attention, il ne compte pas s'arrêter là. Une fois la ville de Saint-Denis "maîtrisée", il compte créer le Saint-Pierre Pass, le Saint-Gilles Pass... et j'en passe.<br />
<span style="text-decoration: underline;">Business Model</span> : Chaque commerçant partenaire reverse 200€/mois, en échange d'une augmentation "significative" de clients.</p>
<p><span style="text-decoration: underline;">Mon avis</span> : 3 points négatifs pour ce projet. D'une part, c'est aberrant de cibler uniquement les commerçants et les habitants de Saint-Denis. Pour une petite île comme la Réunion, ce ne serait pas de la folie de lancer directement une carte pour l'ensemble des habitants de l'île. Et dans l'optique de lancer une carte par grande ville, comment les clients vont s'y retrouver avec leur dizaine de carte en poche ? Deuxièmement, il semble que le meneur de ce projet n'a pas conscience de la concurrence déjà en place (Sésame, qui donne également des avantages à Maurice, Cartatout, Bourbon Avantage, etc), ou du nombre d'échecs précédents dans le domaine. Finalement, ce projet n'a rien d'innovant. Il aurait été largement plus intéressant de proposer un système de cartes de fidélité centralisées (chaque commerçant garde l'identité sur sa carte de fidélité) et se basant sur la technologie du futur : le NFC (à bon entendeur, vous savez ce qu'il vous reste à faire).<br />
<span style="text-decoration: underline;">Ma note</span> : 1/10</p>
<p><strong>10. Dream 2 Real</strong></p>
<p>Le but de ce projet est de créer un coffret cadeau, du même genre que les coffrets <a href="http://www.aladin-reunion.fr/" target="_blank">Aladin</a>, mais cette fois-ci à destination d'un public bien spécifique : les personnes à mobilité réduite. Le coffret, qui se décline en 3 versions (de 69€ à 149€, si mes souvenirs sont bons), permettrait aux handicapés d’accéder à des activités qui leur sont "à priori" inaccessibles. Un vol en ULM, un saut à l'élastique, ou encore un saut en parachute sont autant de rêves que pourront réaliser ces personnes grâce à Dream 2 Real.<br />
<span style="text-decoration: underline;">Business Model</span> : Vendre un maximum de coffret cadeau (évidemment). Même les coffrets non utilisés ont été pris en compte dans leur prévisionnel.</p>
<p><span style="text-decoration: underline;">Mon avis</span> : En plus de répondre à une juste cause, ce projet me semble tout à fait viable. Le business plan présenté est réaliste, on voit que le projet a été réfléchi et que les membres de l'équipe ont pensé à tout (avec l'aide des mentors, évidemment). Pour illustrer le sujet, la présentation se termine par une vidéo d'une personne qui effectue un saut à l'élastique en fauteuil roulant. Tout comme le jury, je m'étais demandé si cette personne s'en était sorti vivante... on voit dans la <a href="http://www.youtube.com/watch?v=VHvlQhhxVsk&amp;feature=player_embedded" target="_blank">vidéo complète</a> que oui, il s'en sort indemne <img src='http://blog.spidou.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<span style="text-decoration: underline;">Ma note</span> : 9/10</p>
<p>Mon classement est donc un peu différent de celui du jury :</p>
<p>1er : Dream 2 Real<br />
2ème : SuperBook<br />
3ème : GreeFood</p>
<p>Pour rappel, le classement du jury est celui-ci :</p>
<p>1er : SuperBook<br />
2ème : Dream 2 Real<br />
3ème : Fleur d'arôme<br />
Prix spécial du jury : GreeFood</p>
<p>PS: je me suis basé essentiellement sur mes souvenirs pour rédiger cet article, donc si je me suis trompé quelque part, n'hésitez pas à me le signaler.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2011/10/startup-weekend-reunion-2011/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Déployer votre application Rails sur Heroku</title>
		<link>http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/</link>
		<comments>http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 08:19:51 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[déploiement]]></category>
		<category><![CDATA[déployer]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[sendgrid]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=97</guid>
		<description><![CDATA[Prérequis Avoir une application Rails qui fonctionne Installer Git : $ apt-get install git-core Placer votre code source sous GIT (versionning) $ cd PATH/TO/MY_APP $ git init Initialized empty Git repository in .git/ $ git add . $ git commit -m "new app" Configurer votre clé SSH Git utilise SSH comme protocole de transport sécurisé. [...]]]></description>
				<content:encoded><![CDATA[<h3>Prérequis</h3>
<ul>
<li>Avoir une application Rails qui fonctionne</li>
<li>Installer Git : <code>$ apt-get install git-core</code></li>
</ul>
<h2>Placer votre code source sous GIT (versionning)</h2>
<p><code>$ cd PATH/TO/MY_APP<br />
$ git init<br />
Initialized empty Git repository in .git/<br />
$ git add .<br />
$ git commit -m "new app"</code></p>
<h2>Configurer votre clé SSH</h2>
<p>Git utilise SSH comme protocole de transport sécurisé. Si vous n'en avez pas déjà une, vous devez créer une clé SSH et envoyé la clé publique sur Heroku. Avant de continuer, <a href="http://help.github.com/linux-set-up-git/#_set_up_ssh_keys" target="_blank">suivez les instructions pour savoir comment générer des clés SSH sous Linux</a>. Pour savoir si vous pouvez passer à l'étape suivante, il suffit de vérifier que le fichier <code>~/.ssh/id_rsa.pub</code> existe bien.</p>
<h2>Créer un compte sur Heroku et créer votre application</h2>
<p>Inscrivez-vous sur <a href="https://api.heroku.com/signup" target="_blank">Heroku</a>. Une fois que vous avez terminer la procédure d'inscription, il faut ouvrir un terminal pour installer le client Heroku (gem) :</p>
<p><code>$ gem install heroku</code></p>
<p>La gem Heroku installe un client qui permet de gérer toutes vos applications, les add-ons, les variables d'environnements, les clés SSH, les logs, et bien plus encore... tout cela en ligne de commande !</p>
<p>Pour avoir la liste complète des commandes disponibles, il suffit de taper <code>$ heroku help</code> ou simplement <code>$ heroku</code></p>
<p>Avant de continuer, il est préférable d'ajouter immédiatement la clé SSH créée précédemment sur le serveur de Heroku. Ce qui permettra de déployer le code source sur le serveur par la suite :</p>
<p><code>$ heroku keys:add</code></p>
<p>Il n'y a rien d'autre à faire. Le script récupère automatiquement votre clé publique <code>~/.ssh/id_rsa.pub</code> et l'envoie sur le serveur.</p>
<p>Voyons maintenant comment créer une application Heroku. Rien de plus simple :</p>
<p><code>$ heroku create<br />
Creating hollow-summer-129... done<br />
http://hollow-summer-129.heroku.com/ | git@heroku.com:hollow-summer-129.git<br />
Git remote heroku added</code></p>
<p>Vous pouvez également spécifier le nom de l'application comme ceci :</p>
<p><code>$ heroku create my_app</code></p>
<p>On peut noter que la dernière ligne qui est renvoyée <code>"Git remote heroku added"</code> indique qu'un dépôt distant a automatiquement été ajouté à Git. Cette ligne n'apparait pas si vous lancer la commande <code>$ heroku create</code> depuis un dossier qui n'est pas soumis au système de versionning Git.<br />
Pour vous en rendre compte, vous pouvez taper la ligne de commande suivante :</p>
<p><code>$ git remote<br />
heroku<br />
origin</code></p>
<p>Et pour avoir plus de détails :</p>
<p><code>$ git remote show heroku<br />
* remote heroku<br />
Fetch URL: git@heroku.com:hollow-summer-129.git<br />
Push URL: git@heroku.com:hollow-summer-129.git<br />
HEAD branch: (unknown)</code></p>
<p>La commande <code>$ heroku open</code> vous permet d'ouvrir un navigateur avec un message d'accueil vous indiquant que votre application a bien été créée, et qu'il ne reste plus qu'à la déployer.</p>
<h2>Déployer votre code sur le serveur Heroku</h2>
<p><code>$ git push heroku master<br />
Counting objects: 65, done.<br />
Compressing objects: 100% (58/58), done.<br />
Writing objects: 100% (65/65), 80.54 KiB, done.<br />
Total 65 (delta 14), reused 0 (delta 0)</code></p>
<p><code>Heroku receiving push<br />
-----&gt; Rails app detected<br />
Compiled slug size is 0.1MB<br />
-----&gt; Launching....... done<br />
App deployed to Heroku</code></p>
<p><code>To git@heroku.com:hollow-summer-129.git<br />
* [new branch] master -&gt; master</code></p>
<p>Voilààà ! Le déploiement est effectué... en une seule ligne de commande !</p>
<p>Bon il reste maintenant à mettre en place votre base de données, car votre application ne fonctionnera pas sans tables dans votre base :</p>
<p><code>$ heroku rake db:migrate</code></p>
<p>Il est bon de noter que toutes les commandes rake que vous avez l'habitude de lancer en local peuvent être lancer à distance grâce au client heroku. Par exemple vous pouvez lancer la commande suivante pour alimenter votre base avec les données par défaut :</p>
<p><code>$ heroku rake db:seed</code></p>
<p>Vous pouvez maintenant vous féliciter en admirant votre site déployé sur Heroku après avoir taper la commande <code>$ heroku open</code></p>
<h2>Utiliser un nom de domaine personnalisé (autre que *.heroku.com)</h2>
<p>Pour cela, il faut d'abord installer un add-on Heroku : Custom Domains</p>
<p><code>$ heroku addons:add custom_domains:basic</code></p>
<p>Ensuite il suffit de spécifier le domaine à partir duquel vous voulez accéder à votre site comme ceci :</p>
<p><code>$ heroku domains:add hollow-summer.com<br />
$ heroku domains:add www.hollow-summer.com</code></p>
<p>La plus grande difficulté consiste maintenant à modifier votre DNS via votre fournisseur de noms de domaine (ou de DNS) pour que votre nom de domaine (ici "www.hollow-summer.com") pointe vers les serveurs Heroku. Pour cela il faut modifier le Zone File pour obtenir un résultat comme ceci :</p>
<p><code>@ 3600 IN A 75.101.163.44<br />
@ 3600 IN A 75.101.145.87<br />
@ 3600 IN A 174.129.212.2<br />
www 3600 IN CNAME proxy.heroku.com.</code></p>
<p>Si vous rencontrez des difficultés pour cette partie, cette <a href="http://vimeo.com/6918287" target="_blank">vidéo</a> vous aidera certainement.</p>
<h2>Configurer l'envoi de mail avec SendGrid</h2>
<p>Pour gérer les envois de mail depuis votre application Rails, il y a une solution assez simple qui consiste à envoyer vos mails en passant par votre addresse Gmail personnelle et par le serveur SMTP de Google. <a href="http://sterlingcobb.com/archives/19" target="_blank">Voir comment faire ici</a>.</p>
<p>Cependant, Heroku nous propose d'utiliser l'add-on <a href="http://devcenter.heroku.com/articles/sendgrid" target="_blank">Sendgrid</a>, qui se repose sur le service d'envoi de mail très abouti du même nom. <a href="http://sendgrid.com">Plus d'infos sur Sendgrid ici</a>.</p>
<p>Comme d'habitude, l'installation d'un add-on Heroku peut se faire en ligne de commande comme cela :</p>
<p><code>$ heroku addons:add sendgrid:free<br />
Adding sendgrid:free to hollow-summer-129...done.</code></p>
<p>C'est tout ! L'add-on se charge de configurer votre application pour envoyer des emails en passant par Sendgrid.</p>
<p>Pour être sûr que tout va fontionner, on peut vérifier que les variables d'environnement sont bien définies avec la commande suivante :</p>
<p><code>heroku config --long | grep SENDGRID<br />
SENDGRID_DOMAIN   = heroku.com<br />
SENDGRID_PASSWORD = #password#<br />
SENDGRID_USERNAME = #username#@heroku.com</code></p>
<h4>Remarque :</h4>
<p>L'installation du plugin Sendgrid crée automatiquement un compte sur le site <a title="Sendgrid" href="http://sendgrid.com" target="_blank">sendgrid.com</a></p>
<p>Vous pouvez vous connecter en indiquant respectivement comme 'username' et 'password' les valeurs récupérées par la commande précédente pour SENDGRID_USERNAME et SENDGRID_PASSWORD.</p>
<p>Vous arriverez sur une interface d'administration complète, qui vous permettra entre autre, d'avoir des statistiques sur les emails envoyés par votre application, ou même de savoir si les destinataires ont ouverts l'email et/ou cliqués sur un lien dans l'email (si vous avez choisis les options).</p>
<h2>Fin</h2>
<p>Voilà, on obtient en très peu de temps une application déployée, fonctionnelle, avec envoi de mail opérationnel et nom de domaine configuré.</p>
<p>Je suis très impressionné par le travail réalisé par l'équipe d'Heroku. C'est vraiment un travail de pro !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2011/04/deployer-votre-application-rails-sur-heroku/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Valider un fichier XML avec un schéma particulier</title>
		<link>http://blog.spidou.com/2011/02/valider-un-fichier-xml-avec-un-schema-particulier/</link>
		<comments>http://blog.spidou.com/2011/02/valider-un-fichier-xml-avec-un-schema-particulier/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 06:32:31 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Logiciels Libres]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[validation]]></category>
		<category><![CDATA[validator]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xmllint]]></category>
		<category><![CDATA[xsd]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=86</guid>
		<description><![CDATA[Pour cela il faut installer un petit outil appelé xmllint, présent dans le paquet libxml2-utils. Chez moi ce paquet était déjà installé. Ensuite il suffit de lancer la commande suivante : xmllint fichier.xml --schema http://monsiteweb.com/schema.xsd Il est également possible de valider le XML à partir d'un DTD avec l'option --dtdvalid Le programme indique le message [...]]]></description>
				<content:encoded><![CDATA[<p>Pour cela il faut installer un petit outil appelé xmllint, présent dans le paquet <a href="apt://libxml2-utils">libxml2-utils</a>. Chez moi ce paquet était déjà installé.</p>
<p>Ensuite il suffit de lancer la commande suivante :</p>
<p><code>xmllint fichier.xml --schema http://monsiteweb.com/schema.xsd</code></p>
<p>Il est également possible de valider le XML à partir d'un DTD avec l'option <code>--dtdvalid</code></p>
<p>Le programme indique le message suivant s'il ne trouve aucune erreur :</p>
<p><code>fichier.xml validates</code></p>
<p>Dans le cas contraire, le programme indique les erreurs à corriger pour valider le XML.</p>
<p><em>Il est bon de noter de xmllint vérifie aussi que le XML est bien formé sans tenir compte d'un éventuel schéma ou d'un DTD.</em></p>
<p>Super, rapide, efficace. Très utile lorsqu'on souhaite valider de gros fichier XML.</p>
<p>Pour les petits fichiers et si il n'y aucun linux à portée de main, ce site internet est très bien aussi : <a href="http://www.xmlvalidation.com/" target="_blank">http://www.xmlvalidation.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2011/02/valider-un-fichier-xml-avec-un-schema-particulier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les réducteurs d&#8217;URL</title>
		<link>http://blog.spidou.com/2011/01/les-reducteurs-durl/</link>
		<comments>http://blog.spidou.com/2011/01/les-reducteurs-durl/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 19:33:08 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[réducteur]]></category>
		<category><![CDATA[réducteur d'url]]></category>
		<category><![CDATA[shortener]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://blog.spidou.com/?p=62</guid>
		<description><![CDATA["La réduction d'URL est une technique utilisée sur Internet qui permet de rendre une page accessible par l'intermédiaire d'une très courte URL." - Wikipedia Pour plus d'infos sur les mécanismes, voir sur Wikipedia. Visiblement le premier site proposant ce type de service web est apparu vers 2001. Personnellement j'ai entendu parler de ce système en [...]]]></description>
				<content:encoded><![CDATA[<p>"La réduction d'URL est une technique utilisée sur Internet qui permet de rendre une page accessible par l'intermédiaire d'une très courte URL." - Wikipedia<br />
Pour plus d'infos sur les mécanismes, voir sur <a title="Réducteur d'URL" href="http://fr.wikipedia.org/wiki/R%C3%A9duction_d%27URL" target="_blank">Wikipedia</a>.</p>
<p>Visiblement le premier site proposant ce type de service web est apparu vers 2001. Personnellement j'ai entendu parler de ce système en 2010, en même temps que j'ai découvert Twitter. Effectivement le principe prend tout son sens lorsqu'on sait que les messages sur Twitter sont limités à 140 caractères.</p>
<p><span id="more-62"></span></p>
<p>Dans ce contexte où les caractères sont comptés, la course au nom de domaine le plus court (pour un service de réduction d'URL) est lancée. C'est pourquoi depuis quelques temps on voit fleurir à tous les coins de rue ce genre de service. On peut même constater que plusieurs sites populaires ont créés leur propre réducteurs d'URL</p>
<ul>
<li>tinyurl.com (le précurseur)</li>
<li>bit.ly (un des plus utilisé)</li>
<li>is.gd (idem)</li>
<li>boi.re (pour les alcooliques anonymes de la Réunion)</li>
<li>clica.li (un autre fournisseur péi)</li>
<li>fb.me (Facebook)</li>
<li>goo.gl (Google)</li>
<li>t.co (Twitter)</li>
</ul>
<h1>Connaissez-vous vraiment votre fournisseur de réducteur d'URL ?</h1>
<p>Tout comme on souhaite pouvoir faire confiance à notre fournisseur de messagerie, notre hébergeur de données etc, je pense qu'il faut également se poser la question si on peut faire confiance à notre réducteur d'URL. Eh oui, qui nous dit que celui-ci ne va pas cesser de fonctionner du jour au lendemain (parce qu'il faut dire qu'il n'y gagne pas grand chose dans l'histoire) ? Ou qu'il ne va pas réclamer un abonnement ou autre compensation financière sous peine de voir tous nos liens rediriger vers une erreur 404 ? Bon je vous l'accorde, ce cas de figure ne peut se présenter que si les liens sont associés à un compte (comme les liens goo.gl peuvent être rattachés à votre compte Google par exemple).</p>
<p>Je vous pose donc la question : à quel point connaissez-vous votre fournisseur de réducteur d'URL ? À quel point lui faites-vous confiance ?</p>
<h1>La sur-utilisation des réducteurs d'URL</h1>
<p>Récemment, j'ai constaté que de plus en plus d'internautes utilisent des URL courtes en dehors de Twitter : sur le statut Facebook, leur site web ou encore leur blog.<br />
Personnellement je ne comprends pas l'intérêt d'utiliser une URL courte si on n'est pas limité en caractères, si ce n'est de :</p>
<ul>
<li>rendre invisible la vraie URL de la page cible, et donc de dissuader l'utilisateur de cliquer dessus (les victimes d'un <a title="Rickroll" href="http://fr.wikipedia.org/wiki/Rickroll" target="_blank">Rickroll</a> seront encore plus farouches);</li>
<li>perdre le bénéfice du référencement des moteurs de recherche qui se basent sur les liens entre sites (en vrai je ne sais pas vraiment comment les moteurs de recherche se débrouillent dans cette pagaille d'URLs courtes) ;</li>
<li>dépendre d'un site tiers dont vous ne savez rien... juste pour faire un lien vers une page !</li>
</ul>
<h1>Conclusion</h1>
<p>N'existe-t-il pas un système d'encodage réversible qui permettrait de retrouver l'URL originale grâce à un petit algorithme ? L'algorithme pourrait soit être commun à tous les fournisseurs, soit être différent mais à la condition d'être divulgué par le fournisseur.</p>
<p>En attendant qu'un fournisseur propose ce genre de solution, je suggère de n'utiliser les réducteurs d'URL que dans les cas suivants :</p>
<ul>
<li>lorsque c'est nécessaire (Twitter);</li>
<li>si votre lien redirige vers une information éphémère (Twitter);</li>
<li>si vous savez pertinemment que vous n'aurez pas besoin de ce lien d'ici quelques jours (Twitter)...</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2011/01/les-reducteurs-durl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Convertir un code binaire en chaine de caractères</title>
		<link>http://blog.spidou.com/2010/12/convertir-un-code-binaire-en-chaine-de-caracteres/</link>
		<comments>http://blog.spidou.com/2010/12/convertir-un-code-binaire-en-chaine-de-caracteres/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 08:06:42 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[binaire]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[caractère]]></category>
		<category><![CDATA[chaine]]></category>
		<category><![CDATA[convertir]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[nexus s]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://5pidou.wordpress.com/?p=39</guid>
		<description><![CDATA[Google lance en ce moment une série de jeux (concours, jeux de piste, etc) via Twitter pour faire gagner des téléphones Nexus S. C'est une bonne façon de faire de la pub je trouve... malheureusement les règles du concours indique qu'il faut être sur le territoire des USA, Angleterre ou Canada (hors Québec, allez savoir [...]]]></description>
				<content:encoded><![CDATA[<p>Google lance en ce moment une série de jeux (concours, jeux de piste, etc) via Twitter pour faire gagner des téléphones Nexus S.</p>
<p>C'est une bonne façon de faire de la pub je trouve... malheureusement les règles du concours indique qu'il faut être sur le territoire des USA, Angleterre ou Canada (hors Québec, allez savoir pourquoi...) pour prétendre à la récompense :s Il ne reste donc plus qu'à y jouer pour le plaisir.</p>
<p><span id="more-39"></span></p>
<p>La 2ème épreuve du concours consistait à fouiller dans le code source d'une page web, extraire un code binaire d'un ASCII Art qui y était caché, et convertir ce code binaire en chaine de caractère pour obtenir une URL. Sur cette URL, un petit puzzle à remettre en ordre pour obtenir la phrase secrète !</p>
<p>Je me suis intéressé plus particulièrement à la conversion d'un code binaire en chaine caractère. Voilà le code binaire à transformer :<br />
01101000011101000111010001110000001110100010111100101111011001110110111101101111<br />
001011100110011101101100001011110110101001010000010011110100100101101100</p>
<p>Même si la conversion n'aurait pas pris beaucoup de temps en passant par une table de correspondance (comme <a href="http://www.table-ascii.com/" target="_blank">celle-là</a>), j'ai voulu m'amuser à créer un petit script qui aurait fait le boulot à ma place. Et puis on ne sait jamais, ça pourrait servir plus tard...</p>
<p>En lançant mon petit script, on obtient le résultat suivant : <a href="http://goo.gl/jPOIl" target="_blank">http://goo.gl/jPOIl</a></p>
<p>J'ai écris le script en Ruby. Ça m'a pris environ 20 minutes pour arriver à un résultat. J'ai perdu un peu de temps à comprendre qu'il fallait d'abord découper la chaine de caractère en paquets de 8 bits (car 1 caractère ASCII est codé sur 8 bits). Ensuite il a fallu trouver les bonnes méthodes à utiliser (String#unpack et Array#pack),  et surtout comprendre comment elles fonctionnent.</p>
<p>Le script est disponible <a href="http://blog.spidou.com/files/bin2str.rb" target="_blank">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2010/12/convertir-un-code-binaire-en-chaine-de-caracteres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser SSH comme serveur Proxy</title>
		<link>http://blog.spidou.com/2010/12/ssh-serveur-proxy/</link>
		<comments>http://blog.spidou.com/2010/12/ssh-serveur-proxy/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 06:49:44 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Logiciels Libres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnelling]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://5pidou.wordpress.com/?p=25</guid>
		<description><![CDATA[Pourquoi faire ? Pour naviguer sur internet ou récupérer ses emails en toute sécurité depuis n'importe où (gallerie commerciale, boulot, etc) Comment faire ? Pré-requis : On va dire que vous avez un serveur chez vous qui tourne 24h/24 et sur lequel vous avez les droits administrateurs. Le client indique la machine (un laptop, PDA, [...]]]></description>
				<content:encoded><![CDATA[<h2>Pourquoi faire ?</h2>
<p>Pour naviguer sur internet ou récupérer ses emails en toute sécurité depuis n'importe où (gallerie commerciale, boulot, etc)</p>
<h2>Comment faire ?</h2>
<p><em><span style="text-decoration: underline;">Pré-requis </span>: On va dire que vous avez un <strong>serveur</strong> chez vous qui tourne 24h/24 et sur lequel vous avez les droits administrateurs. Le <strong>client</strong> indique la machine (un laptop, PDA, etc) que vous utiliser pour naviguer ou récupérer vos emails sur la fameuse connexion non sécurisée.<br />
</em></p>
<p>La mise en place se déroule en deux étapes :</p>
<p><strong>Sur le serveur (Ubuntu/Debian)<br />
</strong></p>
<p>Il faut installer le serveur ssh (le serveur se lance tout seul après l'installation) :<br />
<code>apt-get install ssh # ou openssh-server</code></p>
<p><span style="text-decoration: underline;">Remarque</span> : pensez à configurer votre box pour accepter les connexions entrantes sur le port 22 (ssh)</p>
<p><strong>Sur le client (Ubuntu/Debian) :</strong></p>
<p>Il faut installer le client ssh (le client se lance tout seul après l'installation) :<br />
<code>apt-get install ssh # ou openssh-client</code></p>
<p>La commande suivante permet de se connecter à votre serveur<strong> domain.no-ip.org</strong> et à mettre en place une redirection de port dynamique :<br />
<code>ssh -D 8080 -Nf domain.no-ip.org</code></p>
<p><code>-D 8080</code> =&gt;  indique que toute les connections qui seront effectuées sur le port 8080 seront redirigées vers le canal sécurisé.<br />
<code>-N</code> =&gt; indique de ne pas exécuter de commande distante. Cette option est nécessaire pour la redirection de port.<br />
<code>-f</code> =&gt; demande à ssh de tourner en tâche de fond. Pour arrêter la redirection de port, il faut tuer le processus (<code>ps aux |grep ssh</code>)</p>
<p>Il reste maintenant à configurer votre navigateur pour qu'il passe par votre canal sécurisé.<br />
Avec Firefox (3.6.*), Édition &gt; Préférences  &gt; Avancé &gt; Réseau &gt; Paramètres. Choisissez Configuration manuelle d'un proxy, puis dans SOCKS, mettez <strong>localhost:8080</strong>.</p>
<p>Avec Ubuntu, un outil permet de configurer un Proxy qui sera valable à l'ensemble du système.<br />
Allez dans Système &gt; Préférences &gt; Réseau Proxy. Choisissez Configuration manuelle d'un proxy, puis dans SOCKS, mettez<strong> localhost:8080</strong>.</p>
<p><em>Si vous avez effectué la manipulation précédente avec Firefox, pensez à remettre l'option <span style="text-decoration: underline;">Utiliser les paramètres proxy du système</span></em></p>
<p>C'est tout, vous pouvez désormais surfer en toute sécurité !</p>
<p>TODO : Sur le client (Android)</p>
<h2>Tester la configuration</h2>
<p>Vous voulez tester que votre configuration fonctionne ?</p>
<p>1- Désactivez le proxy (<strong>SOCKS localhost:8080</strong>)<br />
2- Rendez-vous sur <a href="http://www.monip.org" target="_blank"><strong>www.monip.org</strong></a> (ou tout autre site qui vous renseigne votre IP)<br />
3- Notez l'adresse IP qui vous est attribué<br />
4- Activer le proxy (<strong>SOCKS localhost:8080</strong>)<br />
5- Répétez l'opération 2<br />
6- Constatez que votre adresse IP a changé. C'est en fait l'adresse IP affectée à votre box depuis chez vous.<br />
7- C'est bon ça marche !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2010/12/ssh-serveur-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I Love Microsoft (irony inside)</title>
		<link>http://blog.spidou.com/2010/10/i-love-microsoft-irony-inside/</link>
		<comments>http://blog.spidou.com/2010/10/i-love-microsoft-irony-inside/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 06:31:03 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[piratage]]></category>

		<guid isPermaLink="false">http://5pidou.wordpress.com/?p=15</guid>
		<description><![CDATA[Tout est dans le titre... et dans l'image ci-dessous :]]></description>
				<content:encoded><![CDATA[<p>Tout est dans le titre... et dans l'image ci-dessous :</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2010/10/microsoft-anti-piratage.jpg"><img class="alignnone size-medium wp-image-16" title="microsoft anti-piratage" src="http://5pidou.files.wordpress.com/2010/10/microsoft-anti-piratage.jpg?w=213" alt="" width="213" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2010/10/i-love-microsoft-irony-inside/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>À la bourre</title>
		<link>http://blog.spidou.com/2010/10/a-la-bourre/</link>
		<comments>http://blog.spidou.com/2010/10/a-la-bourre/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 05:26:45 +0000</pubDate>
		<dc:creator>spidou</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[10.10]]></category>
		<category><![CDATA[Maverick]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://5pidou.wordpress.com/?p=6</guid>
		<description><![CDATA[Déjà 12 jours que la dernière mouture d'Ubuntu est sortie et je ne l'ai toujours pas installé sur mon laptop ! C'est bien la première fois que ça m'arrive, d'habitude je l'installe le jour même de la sortie... Je me dis que c'est peut-être parce que je ne veux pas perdre mon uptime... mais il [...]]]></description>
				<content:encoded><![CDATA[<p>Déjà 12 jours que la dernière mouture d'Ubuntu est sortie et je ne l'ai toujours pas installé sur mon laptop ! C'est bien la première fois que ça m'arrive, d'habitude je l'installe le jour même de la sortie...</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2010/10/ubuntu-10-10.png"><img class="alignnone size-medium wp-image-40" title="ubuntu-10-10" src="http://blog.spidou.com/wp-content/uploads/2010/10/ubuntu-10-102-300x124.png" alt="" width="300" height="124" /></a></p>
<p>Je me dis que c'est peut-être parce que je ne veux pas perdre mon uptime... mais il faudra bien m'y faire !</p>
<p><a href="http://blog.spidou.com/wp-content/uploads/2010/10/uprecord.png"><img class="alignnone size-medium wp-image-41" title="uprecord" src="http://blog.spidou.com/wp-content/uploads/2010/10/uprecord-300x157.png" alt="" width="300" height="157" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.spidou.com/2010/10/a-la-bourre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
