<?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></title>
	<atom:link href="http://www.apptom.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.apptom.fr</link>
	<description></description>
	<lastBuildDate>Mon, 06 May 2013 07:08:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Lancer un cron sur un cluster</title>
		<link>http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/</link>
		<comments>http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/#comments</comments>
		<pubDate>Mon, 07 Jan 2013 08:39:50 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[EC2]]></category>

		<guid isPermaLink="false">http://www.apptom.fr/?p=1398</guid>
		<description><![CDATA[<p>Sur un de mes projets j&#8217;ai besoin d&#8217;exécuter une tâche tous les jours. Cet exercice pourtant trivial peut devenir plus complexe si mon service utilise plusieurs serveurs et que je ne veux exécuter la tâche qu&#8217;une seule fois. En Java j&#8217;utilisais le scheduler Quartz pour régler ce problème. Il est très efficace et en cas de<p><a href="http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/">Lancer un cron sur un cluster</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Sur un de mes projets j&#8217;ai besoin d&#8217;exécuter une tâche tous les jours. Cet exercice pourtant trivial peut devenir plus complexe si mon service utilise plusieurs serveurs et que je ne veux exécuter la tâche qu&#8217;une seule fois. En Java j&#8217;utilisais le <a href="http://quartz-scheduler.org/">scheduler Quartz</a> pour régler ce problème. Il est très efficace et en cas de cluster il utilise une base de données pour s&#8217;assurer que la tâche n&#8217;est lancée que sur un seul serveur. Mais si votre tâche doit être lancée en shell ? J&#8217;ai donc cherché une solution pour le faire simplement sur mon projet utilisant des instances EC2.</p>
<p>Après pas mal de recherches, j&#8217;ai trouvé une solution simple sur <a href="http://stackoverflow.com/a/12623737">stackoverflow</a>. L&#8217;idée est bonne mais le script ne fonctionne pas (rien que l&#8217;utilisation de la commande hostname est étrange&#8230;).<br />
J&#8217;ai finalement fait fonctionner ce script :</p>
<pre name="code" class="ruby:nogutter">#!/usr/bin/env ruby

AWS_AUTO_SCALING_HOME='/opt/aws/apitools/as'
JAVA_HOME='/usr/lib/jvm/jre'
MY_GROUP = '&lt;GroupName&gt;'

@cmd_out = `bash -c 'JAVA_HOME=#{ JAVA_HOME } AWS_AUTO_SCALING_HOME=#{ AWS_AUTO_SCALING_HOME } as-describe-auto-scaling-instances -region &lt;REGION&gt; -I &lt;KEY&gt; -S &lt;SECRET&gt;'`

raise "Output empty, should not happen!" if @cmd_out.empty?
@lines = @cmd_out.split(/\r?\n/)
@last = @lines.select {|l| l.match MY_GROUP }.reverse.
detect { |l| l =~ /^INSTANCE\s+\S+\s+\S+\s+\S+\s+InService\s+HEALTHY/ }
raise "No suitable host in autoscaling group!" unless @last
@last_host = @last.match(/^INSTANCE\s+(\S+)/)[1]
@hostname = `wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`

if @hostname.index(@last_host)
  puts "It's me!"
  exit(0)
else
  puts "Someone else will do it!"
  exit(1)
end</pre>
<p>Il est aussi possible de gérer différemment la gestion de l&#8217;authentification AWS en passant par un fichier comme expliqué <a href="http://alestic.com/2010/09/aws-iam">ici</a>.</p>
<p>Ce script doit être exécuté par root. Ensuite il suffit d&#8217;ajouter une ligne dans la crontab de vos instances du type :</p>
<blockquote><p>02 01 * * * ~/lastonly.rb &#038;&#038; wget -q -O &#8211; http://www.mysite.com/cron/crontasks</p></blockquote>
<p>Cette solution n&#8217;est pas parfaite mais elle a le mérite d&#8217;être simple. Une autre solution plus &#8220;propre&#8221; serait sans doute d&#8217;utiliser <a href="http://aws.amazon.com/fr/swf/">Amazon Simple Workflow Service</a></p>
<p>The post <a href="http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/">Lancer un cron sur un cluster</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2013/01/lancer-un-cron-sur-un-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Relic sur du Beanstalk PHP</title>
		<link>http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/</link>
		<comments>http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 20:34:41 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[AMI]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[New Relic]]></category>

		<guid isPermaLink="false">http://www.apptom.fr/?p=1369</guid>
		<description><![CDATA[<p>Ces derniers temps j&#8217;ai beaucoup travaillé sur les produits Amazon Web Services. J&#8217;ai notamment utilisé Beanstalk pour mettre en production un site web important. Pour mesurer l&#8217;activité des serveurs et l&#8217;utilisation de l&#8217;application j&#8217;ai utilisé le service New Relic. En plus il existe un partenariat entre AWS et New Relic pour utiliser un compte standard<p><a href="http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/">New Relic sur du Beanstalk PHP</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Ces derniers temps j&#8217;ai beaucoup travaillé sur les produits Amazon Web Services. J&#8217;ai notamment utilisé Beanstalk pour mettre en production un site web important. Pour mesurer l&#8217;activité des serveurs et l&#8217;utilisation de l&#8217;application j&#8217;ai utilisé le service <a title="new relic" href="https://newrelic.com" target="_blank">New Relic</a>. En plus il existe un <a title="Newrelic aws" href="http://newrelic.com/aws" target="_blank">partenariat entre AWS et New Relic</a> pour utiliser un compte standard gratuitement (vous économisez $50 par mois).</p>
<p>Pour utiliser New Relic il faut l&#8217;installer sur une image et en faire une nouvelle AMI. Dans un premier temps j&#8217;ai fait l&#8217;erreur de faire une image depuis une instance EC2 lancée par Beanstalk. Ca ne peut pas fonctionner car vous intégrez votre application à l&#8217;image. La procédure est assez simple une fois qu&#8217;on a compris ça.</p>
<ol>
<li>Notez la référence de l&#8217;AMI utilisée en ce moment pas Beanstalk (dans mon cas ami-df9b9cab)</li>
<li>Lancez une nouvelle instance EC2 basée sur l&#8217;AMI notée juste avant</li>
<li>Loggez vous sur la VM pour y installer New Relic. Toute la doc est disponible <a title="newrelic php" href="https://newrelic.com/docs/php/the-newrelic-install-script" target="_blank">ici</a>, mais pour du PHP sous centos 64 bits ça donne ça :</li>
<blockquote><pre>sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm

sudo yum install newrelic-php5

sudo newrelic-install

sudo chown elasticbeanstalk:elasticbeanstalk /etc/php.d/newrelic.ini

sudo chmod 777 /etc/php.d/newrelic.ini</pre>
</blockquote>
<li>Editez ensuite le fichier /etc/php.d/newrelic.ini pour indiquer votre clé API dans &#8220;newrelic.license&#8221; et changez le nom de l&#8217;application dans &#8220;newrelic.appname&#8221;. Par contre j&#8217;ai remarqué que sur ma VM le démon New Relic n&#8217;était pas lancé automatiquement au démarrage. Il faut donc exécuter la ligne de commande :</li>
<blockquote>
<pre>sudo chkconfig newrelic-daemon on</pre>
</blockquote>
<li>Ensuite on peut ajouter le monitoring du serveur</li>
<blockquote>
<pre>sudo yum install newrelic-sysmond</pre>
<pre>sudo nrsysmond-config --set license_key=YOUR_LICENSE_KEY</pre>
<pre>sudo /etc/init.d/newrelic-sysmond start</pre>
</blockquote>
</ol>
<p>Une fois que vous avez bien vérifié que les services sont bien lancés au démarrage, vous pouvez construire une AMI depuis la console. Ensuite il faut indiquer la référence de l&#8217;AMI au niveau de la configuration de l&#8217;environnement Beanstalk dans &#8220;Custom AMI ID&#8221;</p>
<p>C&#8217;est aussi simple que ça <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The post <a href="http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/">New Relic sur du Beanstalk PHP</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/11/new-relic-sur-beanstalk-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon Web Services Consulting Partners</title>
		<link>http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/</link>
		<comments>http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/#comments</comments>
		<pubDate>Tue, 09 Oct 2012 06:11:03 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[APN]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Partner]]></category>

		<guid isPermaLink="false">http://www.apptom.fr/?p=1342</guid>
		<description><![CDATA[<p>Apptom devient officiellement &#8220;Amazon Web Services Consulting Partners&#8221; niveau Standard. Aujourd&#8217;hui seulement une dizaine de sociétés en France ont ce niveau et Apptom est la seule basée en Bretagne. Ce statut nous apporte une communication directe avec les équipes techniques d&#8217;Amazon. Apptom se positionne aussi comme revendeur Amazon, nous allons pouvoir simplifier la facturation pour nos<p><a href="http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/">Amazon Web Services Consulting Partners</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Apptom devient officiellement &#8220;<a title="aws" href="https://aws.amazon.com/solution-providers/si/apptom" target="_blank">Amazon Web Services Consulting Partners</a>&#8221; niveau Standard. Aujourd&#8217;hui seulement une dizaine de sociétés en France ont ce niveau et Apptom est la seule basée en Bretagne. Ce statut nous apporte une communication directe avec les équipes techniques d&#8217;Amazon.</p>
<p>Apptom se positionne aussi comme revendeur Amazon, nous allons pouvoir simplifier la facturation pour nos clients tout en réduisant les coûts.</p>
<p>Pour vous aider à trouver un partenaire Amazon proche de chez vous, j&#8217;ai créé le site <a title="partner aws" href="http://www.partneraws.com" target="_blank">www.partneraws.com</a>. Le site positionne les partenaires consulting sur une carte. C&#8217;est plus simple à utiliser que sur le site web officiel.</p>
<p style="text-align: center;"><a href="http://www.partneraws.com" target="_blank"><img class="aligncenter  wp-image-1353" title="Amazon Partner Map" src="http://www.apptom.fr/wp-content/uploads/2012/10/map-1024x703.jpg" alt="Amazon Web Services Partner Map" width="531" height="364" /></a></p>
<p>The post <a href="http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/">Amazon Web Services Consulting Partners</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/10/amazon-web-services-consulting-partners/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine Suite</title>
		<link>http://www.apptom.fr/blog/2012/07/google-app-engine-suite/</link>
		<comments>http://www.apptom.fr/blog/2012/07/google-app-engine-suite/#comments</comments>
		<pubDate>Wed, 18 Jul 2012 20:01:10 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Goole App Engine]]></category>

		<guid isPermaLink="false">http://www.apptom.fr/?p=1290</guid>
		<description><![CDATA[<p>Comme expliqué dans le premier article j&#8217;ai rencontré certaines difficultés au niveau du développement avec Google App Engine. L&#8217;intégration et la gestion de la plate-forme a aussi amené son lot de surprises. Gestion des instances Nous utilisons GAE pour un service qui a peu de trafic. En mode gratuit aucune instance n&#8217;est lancée par défaut,<p><a href="http://www.apptom.fr/blog/2012/07/google-app-engine-suite/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/07/google-app-engine-suite/">Google App Engine Suite</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Comme expliqué dans le premier article j&#8217;ai rencontré certaines difficultés au niveau du développement avec Google App Engine. L&#8217;intégration et la gestion de la plate-forme a aussi amené son lot de surprises.</p>
<h2>Gestion des instances</h2>
<p>Nous utilisons GAE pour un service qui a peu de trafic. En mode gratuit aucune instance n&#8217;est lancée par défaut, donc chaque utilisateur a un risque de déclencher le lancement d&#8217;une instance. Il faut 18 secondes pour démarrer mon instance: 18 secondes ce n’est pas énorme pour démarrer un serveur d&#8217;applications, par contre pour répondre à une requête HTTP c&#8217;est une éternité.</p>
<p>Pourquoi ces 18 secondes ? J&#8217;ai décomposé un peu les choses :</p>
<ul>
<li>2s &#8211; GAE avec juste une servlet</li>
<li>11s &#8211; Spring (MVC + Security)</li>
<li>2s &#8211; URLRewrite</li>
<li>2s &#8211; objectify</li>
</ul>
<p>C&#8217;est donc clairement Spring qui prend le plus de temps au démarrage. Mais d&#8217;un autre côté, même sans 6 secondes pour répondre à une requête c&#8217;est déjà trop.</p>
<p>Pour éviter ce problème, il faut donc minimiser le nombre de démarrages d&#8217;instance. La solution &#8220;lowcost&#8221; est de configurer un cron toutes les minutes sur votre application. De cette façon vous avez une chance d&#8217;avoir toujours une instance en ligne et vos clients ont des temps de réponse corrects. Mais ce n&#8217;est pas une science exacte, j&#8217;ai quand même eu des problèmes. L&#8217;autre solution est d&#8217;activer la facturation (2,10$ par semaine au minimum) pour utiliser les instances &#8220;idle&#8221;. Vous pouvez garder N instances démarrées sans arrêt. Mais même avec cette option je n&#8217;ai pas un comportement satisfaisant. Déjà certains clients tombent encore sur une requête de 18s, c&#8217;est très rare heureusement, mais ce qui m&#8217;inquiète le plus c&#8217;est de voir GAE devoir lancer 3 instances pour répondre à 2 clients ! Sur les 24 dernières heures j&#8217;ai eu 400 requêtes (statiques et dynamiques), je pense que même un simple apache sur une instance micro Amazon est capable d&#8217;encaisser cette charge et bien GAE a eu besoin de lancer 2 instances.</p>
<p>D&#8217;un autre côté, la notion d&#8217;instance &#8220;idle&#8221; veut bien dire ce qu&#8217;elle veut dire : &#8220;instance inactive&#8221;. C&#8217;est un moyen de pouvoir anticiper un pic de charge. Donc dès qu&#8217;un utilisateur arrive sur mon service, une seconde instance est lancée (par une requête /_ah/warmup). Donc il est assez logique de voir souvent 2 instances. Mais pourquoi GAE en lance régulièrement une troisième !?</p>
<p>J&#8217;ai donc beaucoup de mal à comprendre ce fonctionnement difficilement prévisible, les joies du PAAS <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Un problème avec la 3G</h2>
<p>On a eu un autre problème heureusement passager. Le 18 juin pendant plusieurs heures tous les services hébergés sur GAE n&#8217;étaient plus accessibles sur les réseaux 3G Bouygues et Orange. J&#8217;ai fait le test sur plusieurs services utilisant GAE en wifi, sur une box ou sur le réseau SFR aucun problème, mais sur les réseaux Orange et Bouygues on avait la page :</p>
<p><a href="http://www.apptom.fr/wp-content/uploads/2012/07/photo.png"><img class="aligncenter size-medium wp-image-1328" title="photo" src="http://www.apptom.fr/wp-content/uploads/2012/07/photo-217x300.png" alt="" width="217" height="300" /></a></p>
<p>Aucun retour de google sur ce problème qui heureusement ne s&#8217;est pas reproduit.</p>
<h2>Conclusion</h2>
<p>C&#8217;est donc une expérience un peu mitigée. Ce manque de contrôle me gêne un peu. Si on ajoute à cela que le développement réalisé est complètement dédié à GAE, il faut vraiment réfléchir avant de choisir cette plateforme. En tout cas si vous tentez l&#8217;aventure, surtout pensez au temps de démarrage de l&#8217;instance dès le début. Mais oubliez Spring ou Play qui ne fait pas mieux à ce niveau-là.</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/07/google-app-engine-suite/">Google App Engine Suite</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/07/google-app-engine-suite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jenkins pour xCode</title>
		<link>http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/</link>
		<comments>http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/#comments</comments>
		<pubDate>Sat, 07 Jul 2012 15:28:56 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[ota]]></category>
		<category><![CDATA[XCode]]></category>

		<guid isPermaLink="false">http://www.apptom.fr/?p=1297</guid>
		<description><![CDATA[<p>Il n&#8217;est pas concevable pour moi de développer sans avoir une plateforme d&#8217;intégration continue. Il existe pas mal de solutions pour le faire en mode SAAS (sur cloudbees pas exemple). Par contre pour le faire sur des projets iOS c&#8217;est plus dur à trouver car il faut le faire sur un MAC. J&#8217;ai donc installé<p><a href="http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/">Jenkins pour xCode</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Il n&#8217;est pas concevable pour moi de développer sans avoir une plateforme d&#8217;intégration continue. Il existe pas mal de solutions pour le faire en mode SAAS (sur <a title="Cloudbees" href="http://www.cloudbees.com/" target="_blank">cloudbees</a> pas exemple). Par contre pour le faire sur des projets iOS c&#8217;est plus dur à trouver car il faut le faire sur un MAC. J&#8217;ai donc installé un jenkins sur un Mac mini et ce n&#8217;est pas si évident que ça à faire.</p>
<h2>Installation</h2>
<p>Jenkins c&#8217;est un simple war à installer sur un serveur. Pour nous simplifier la vie une version installable est disponible <a title="Jenkins installation" href="http://jenkins-ci.org/content/thank-you-downloading-os-x-installer" target="_blank">ici</a>. Mais les premiers problèmes arrivent vite à cause des droits utilisateur. Par défaut Jenkins utilise l&#8217;utilisateur deamon et ça pose pas mal de problèmes.</p>
<p>J&#8217;ai trouvé la solution sur <a href="http://momo.brauchtman.net/2011/11/12/howto-install-jenkins-on-os-x-and-make-it-build-mac-stuff/" target="_blank">ce blog</a>.</p>
<p>Pour résumer, il faut changer la configuration par défaut et installer Jenkins pour qu&#8217;il démarre avec l&#8217;utilisateur jenkins &#8220;Start at boot as jenkins&#8221;. Ensuite il faut créer l&#8217;utilisateur :</p>
<blockquote><p>sudo dscl . create /Users/jenkins<br />
sudo dscl . create /Users/jenkins PrimaryGroupID 1<br />
sudo dscl . create /Users/jenkins UniqueID 300<br />
sudo dscl . create /Users/jenkins UserShell /bin/bash<br />
sudo dscl . create /Users/jenkins home /Users/Shared/Jenkins/Home/<br />
sudo dscl . create /Users/jenkins NFSHomeDirectory /Users/Shared/Jenkins/Home/<br />
sudo dscl . passwd /Users/jenkins</p></blockquote>
<p>Grâce à ça vous allez pouvoir créer les clés SSH pour utiliser jenkins avec github. Pour cela il faut suivre <a href="https://help.github.com/articles/generating-ssh-keys" target="_blank">la doc github</a> en utilisant l&#8217;utilisateur jenkins.</p>
<h2>XCode</h2>
<p>Maintenant que nous pouvons récupérer les sources, il faut construire un IPA. Commencez par ajouter <a href="https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin" target="_blank">le plugin xcode</a> dans jenkins.</p>
<p>A partir d&#8217;XCode 4.3, il faut commencer par changer le répertoire de base avec la commande :</p>
<blockquote><p>sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer</p></blockquote>
<p>J&#8217;ai eu aussi des problèmes avec les certificats développeurs. Par défaut ils sont installés dans le trousseau au niveau session donc inaccessibles d&#8217;un autre utilisateur. Là j&#8217;ai utilisé la méthode un peu &#8220;bourine&#8221; et j&#8217;ai ajouté mes certificats au niveau système.</p>
<p>Ensuite le build était bloqué car il ne trouvait pas le fichier de provisioning. Il suffit de les ajouter dans le répertoire :</p>
<blockquote><p>/Users/jenkins/Library/MobileDevice/Provisioning</p></blockquote>
<p>Et voilà ! On a enfin généré un fichier IPA avec Jenkins.</p>
<h2>Over The Air</h2>
<p>Pour aller un cran plus loin, j&#8217;ai eu envie de mettre en place un site pour faciliter l&#8217;installation de l&#8217;application. C&#8217;est possible depuis iOS 4. Il faut générer le plist associé à l&#8217;IPA et faire une page web avec un lien vers le plist. Mais j&#8217;ai arrété mes recherches de script pour faire ça lorsque j&#8217;ai découvert le <a href="http://testflightapp.com">service testFlight</a>. Il suffit d&#8217;uploader l&#8217;IPA et testflight s&#8217;occupe de la diffusion sur les terminaux de tests (et bien plus en fait). Comme il y a un plugin jenkins pour testflight l&#8217;intégration est transparente.</p>
<p>&nbsp;</p>
<p>En espérant que cette note vous gagne du temps ! <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Liens :</p>
<ul>
<li><a href="http://deadmeta4.com/2012/04/01/from-commit-to-testflight-part-1/">Blog DeadMeta4</a></li>
<li><a title="Cloudbees" href="http://www.cloudbees.com/" target="_blank">Cloudbees</a></li>
<li><a href="http://testflightapp.com">testFlight</a></li>
<li><a href="http://momo.brauchtman.net/2011/11/12/howto-install-jenkins-on-os-x-and-make-it-build-mac-stuff/" target="_blank">Moritz Haarmann&#8217;s Blog</a></li>
</ul>
<p>&nbsp;</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/">Jenkins pour xCode</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/07/jenkins-pour-xcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développer sur Google App Engine</title>
		<link>http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/</link>
		<comments>http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 20:07:32 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://www.net-liard.com/blog/?p=1225</guid>
		<description><![CDATA[<p>Depuis 1 mois je teste le déploiement de services sur Google App Engine. Le moins que l&#8217;on puisse dire c&#8217;est que c&#8217;est loin d&#8217;être aussi simple que ce que j&#8217;avais vu pendant la Devoxx France. Je vous propose un petit tour sur ce que j&#8217;ai remarqué. Le Data Store Même si Google propose une base<p><a href="http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/">Développer sur Google App Engine</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Depuis 1 mois je teste le déploiement de services sur Google App Engine. Le moins que l&#8217;on puisse dire c&#8217;est que c&#8217;est loin d&#8217;être aussi simple que ce que j&#8217;avais vu pendant la Devoxx France. Je vous propose un petit tour sur ce que j&#8217;ai remarqué.</p>
<h2>Le Data Store</h2>
<p>Même si Google propose une base SQL en version Beta, j&#8217;ai utilisé le datastore No SQL par défaut. Pour simplifier la gestion de la persistance, la librairie <a href="http://code.google.com/p/objectify-appengine/">Objectify</a> est très bien adaptée. La première chose à faire est de bien identifier les champs à indexer. Par défaut un paramètre est indexé, mais plus il y a d&#8217;index plus le coût d&#8217;écriture est important.</p>
<p>Attention aussi à la notion d&#8217;objet embeded. On ne peut le faire qu&#8217;à un niveau. Donc une classe embeded ne peut pas avoir d&#8217;attribut List.</p>
<p>Mais la plus grosse surprise que j&#8217;ai eue c&#8217;est que l&#8217;écriture se fait de façon asynchrone. Après avoir persisté un objet il faut attendre 5-6s pour pouvoir le lire en base. Il faut donc ruser et utiliser des caches pour masquer ce délai.</p>
<h2>Le Blobstore</h2>
<p>C&#8217;est une des fonctions intéressantes du service. Elle permet de stocker facilement des fichiers, des images par exemple. Et pour les images justement il y a même une astuce pour les redimensionner.</p>
<pre class="nogutter:nocontrols">// Resize the image to 32 pixels (aspect-ratio preserved)

http://<em>your_app_id</em>.appspot.com/randomStringImageId<strong>=s32</strong>

// Crop the image to 32 pixels

http://<em>your_app_id</em>.appspot.com/randomStringImageId=s32<strong>-c</strong></pre>
<p>Pour trouver de l&#8217;information sur cette fonction, il faut lire la version Anglaise de la doc. En effet au début on apprécie le fait que toute la doc de Google App Engine ait été traduite en Français. On déchante vite lorsqu&#8217;on s&#8217;aperçoit que cette dernière n&#8217;est pas au même niveau que la version anglaise. Donc n&#8217;oubliez pas de lire la VO <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pour revenir au BlobStore, j&#8217;ai eu un problème pour gérer les fichiers non renseignés dans un formulaire. Sur un formulaire où l&#8217;utilisateur peut éventuellement uploader 1 fichier, un blobstore vide est créé s&#8217;il n&#8217;y a pas de fichier.</p>
<p>Ce comportement est d&#8217;autant plus étrange qu&#8217;on ne le retrouve pas sur le serveur local en mode dev. Une autre leçon à retenir : tester au plus tôt en production votre code.</p>
<p>Pour résoudre le problème, il faut tester la taille du fichier uploadé pour ensuite le supprimer s&#8217;il est vide.</p>
<pre class="java:nogutter:nocontrols">if (blobs.get("uploadFile") != null) {
 BlobKey blobKey = blobs.get("uploadFile").get(0);
 BlobInfo blobInfo = new BlobInfoFactory().loadBlobInfo(blobKey);
 if (blobInfo.getSize() &gt; 0) {
  uploadFileUrl = imagesService.getServingUrl(blobKey);
 } else {
  blobstoreService.delete(blobKey);
 }
}</pre>
<h2>A suivre</h2>
<p>Je termine là mes remarques sur la partie purement dev de Google App Engine. Mais j&#8217;ai eu d&#8217;autres surprises que je vous détaillerai prochainement.</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/">Développer sur Google App Engine</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/06/developper-sur-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Création de Apptom</title>
		<link>http://www.apptom.fr/blog/2012/06/creation-de-apptom/</link>
		<comments>http://www.apptom.fr/blog/2012/06/creation-de-apptom/#comments</comments>
		<pubDate>Sun, 10 Jun 2012 09:11:30 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Perso]]></category>
		<category><![CDATA[Apptom]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.net-liard.com/blog/?p=1228</guid>
		<description><![CDATA[<p>C&#8217;est maintenant officiel, en Septembre je vais quitter Orange pour créer la société Apptom. Après 7 ans dans le service R&#38;D de cet opérateur, j&#8217;ai envie de me lancer un nouveau défi. Progresser dans une grosse entreprise française sans devenir chef de projet ou manager devient de plus en plus difficile. Donc je me lance<p><a href="http://www.apptom.fr/blog/2012/06/creation-de-apptom/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/06/creation-de-apptom/">Création de Apptom</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est maintenant officiel, en Septembre je vais quitter Orange pour créer la société Apptom. Après 7 ans dans le service R&amp;D de cet opérateur, j&#8217;ai envie de me lancer un nouveau défi. Progresser dans une grosse entreprise française sans devenir chef de projet ou manager devient de plus en plus difficile. Donc je me lance en solo afin de partager mon expertise technique avec un maximum de monde.</p>
<p style="text-align: center;"><a href="http://www.net-liard.com/wp-content/uploads/2012/06/AppTom_logoRVB.png"><img class=" wp-image-1232 aligncenter" title="AppTom_logoRVB" src="http://www.apptom.fr/wp-content/uploads/2012/06/AppTom_logoRVB.png" alt="" /></a></p>
<p>Mon objectif est de mettre en avant mon expertise sur la conception et le développement d&#8217;applications web et notamment sur la réalisation d&#8217;applications iOS natives. Pour compléter ce côté développement, je vais aussi faire du conseil pour accompagner des PME à migrer leur infrastructure vers des offres de cloud computing.</p>
<p>En attendant Septembre, je suis en pleine phase de prospection. Rencontrer du monde, parler technique c&#8217;est vraiment un exercice que j&#8217;apprécie. J&#8217;ai multiplié les contacts et ça m&#8217;a déjà apporté 2 belles affaires.</p>
<h2>Mes Parents font des SMS</h2>
<div><a href="http://itunes.apple.com/fr/app/mes-parents-font-des-sms/id515723434?mt=8"><img class=" wp-image-1229 aligncenter" title="mpfsApp" src="http://www.apptom.fr/wp-content/uploads/2012/06/mpfsApp-200x300.png" alt="" /></a></div>
<div>Alexandre a réalisé un site web pour publier des SMS un peu décalés de nos parents. Pour compléter le site, il m&#8217;a demandé de réaliser une application iPhone. C&#8217;est vraiment plus pratique pour diffuser un screenshot. Ça a fait un gros carton sur l&#8217;AppStore en arrivant même en 5e position du top gratuit !</div>
<div>Une très bonne expérience qui m&#8217;a surtout fait découvrir <a href="http://www.feedvalue.com/">feedvalue</a> une régie pub française qui est presque 10 fois plus rentable que Admob !</div>
<h2>Kwala</h2>
<div><a href="http://kwala.fr"><img class=" wp-image-1234 aligncenter" title="Kwala-Logo-Web-Square" src="http://www.apptom.fr/wp-content/uploads/2012/06/Kwala-Logo-Web-Square-300x276.png" alt="" /></a></div>
<div>En Mai Benjamin, un ami qui dirige la société Sushee et qui a participé à la création de Code d&#8217;Armor, m&#8217;a proposé de réaliser avec lui un projet de jeux sur smartphone pour les collectivités. Le site est déjà en ligne : <a href="http://www.kwala.fr">www.kwala.fr</a> et on finalise les développements la semaine prochaine. C&#8217;est vraiment un beau projet. La bonne nouvelle c&#8217;est que l&#8217;agglomération de Lannion Trégor a déjà signé notre premier contrat pour faire un jeu cet été. Sur ce projet j&#8217;ai réalisé toute la partie back-office, codé en Java et hébergé sur Google App Engine.</div>
<h2>Le début</h2>
<div>Encore beaucoup de choses à faire et ce n&#8217;est qu&#8217;un début ! Je suis aussi en plein dans la paperasse : faire les statuts, trouver mutuelle et prévoyance, Business Plan, prévisionnel&#8230; Que des choses super drôles quoi :/</div>
<div>Heureusement j&#8217;ai trouvé pas mal d&#8217;informations sur des blogs d&#8217;indépendants :</div>
<div>
<ul>
<li><a href="http://www.touilleur-express.fr/tag/independant/">Blog de Nicolas Martignole</a></li>
<li><a href="http://www.java-freelance.fr/freelance">Blog de Mathilde Lemée</a></li>
</ul>
</div>
<div>Mais ce qui a vraiment bien structuré mon projet c&#8217;est l&#8217;accompagnement d&#8217;Orange. En effet mon projet rentre dans le cadre d&#8217;un essaimage, j&#8217;ai donc profité de formations pour bien préparer mon projet.</div>
<div>Je suis super motivé par cette nouvelle aventure et mes premiers contacts sont très positifs. Donc si vous cherchez un bon développeur et que vous souhaitez vous lancer dans le cloud : contactez-moi ! <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </div>
<p>The post <a href="http://www.apptom.fr/blog/2012/06/creation-de-apptom/">Création de Apptom</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/06/creation-de-apptom/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Soirée coding Android</title>
		<link>http://www.apptom.fr/blog/2012/05/soiree-coding-android/</link>
		<comments>http://www.apptom.fr/blog/2012/05/soiree-coding-android/#comments</comments>
		<pubDate>Mon, 14 May 2012 08:03:44 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Perso]]></category>
		<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://www.net-liard.com/blog/?p=1209</guid>
		<description><![CDATA[<p>Le mercredi 9 mai nous avons fait avec Code d&#8217;Armor une soirée coding Android. Depuis décembre 2011 Code d&#8217;Armor organise des présentations techniques pour des développeurs. Présenter à 50 personnes du code c&#8217;est bien, mais en écrire ensemble c&#8217;est mieux ! Donc suite à la soirée sur Android du mois d&#8217;Avril, nous avons décidé de<p><a href="http://www.apptom.fr/blog/2012/05/soiree-coding-android/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/05/soiree-coding-android/">Soirée coding Android</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.net-liard.com/blog/wp-content/uploads/2012/05/7177476148_daa8c5c9b4.jpg"><img class="aligncenter  wp-image-1217" title="7177476148_daa8c5c9b4" src="http://www.apptom.fr/wp-content/uploads/2012/05/7177476148_daa8c5c9b4-300x199.jpg" alt="" /></a></p>
<p>Le mercredi 9 mai nous avons fait avec Code d&#8217;Armor une soirée coding Android.</p>
<p>Depuis décembre 2011 Code d&#8217;Armor organise des présentations techniques pour des développeurs. Présenter à 50 personnes du code c&#8217;est bien, mais en écrire ensemble c&#8217;est mieux ! Donc suite à la soirée sur Android du mois d&#8217;Avril, nous avons décidé de faire une soirée coding sur le même sujet.</p>
<p>12 personnes ont répondu présents pour coder et parfois découvrir avec nous une application Android. L&#8217;objectif était de réaliser une application pour Code d&#8217;Armor avec plusieurs pages :</p>
<ul>
<li>Les informations sur les soirées</li>
<li>Un tweetwall</li>
<li>Un bloc note partagé</li>
</ul>
<p>Comme nous avions 4 heures, l&#8217;objectif était un peu prétentieux, surtout pour un public principalement composé de débutants. Mais il était aussi intéressant de montrer ce qu&#8217;il était possible de faire.</p>
<p>Au final les participants ont bien apprécié la soirée. Ca a été une bonne introduction au sujet et un bon moment de partage entre passionnés. Car oui il faut vraiment être passionné pour venir coder jusqu&#8217;à minuit après une journée de boulot. Et c&#8217;est avant tout ça l&#8217;objectif de Code d&#8217;Armor : se rencontrer et construire un réseau.</p>
<p>Pour finir un petit retour en photo de la soirée :</p>
<p>[set_id=72157629681549132]</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/05/soiree-coding-android/">Soirée coding Android</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/05/soiree-coding-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devoxx France</title>
		<link>http://www.apptom.fr/blog/2012/04/devoxx-france/</link>
		<comments>http://www.apptom.fr/blog/2012/04/devoxx-france/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 08:14:58 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.net-liard.com/blog/?p=1187</guid>
		<description><![CDATA[<p>La première édition de Devoxx France a eu lieu les 18, 19 et 20 avril 2012. Un grand rassemblement de développeurs français (essentiellement) et donc beaucoup de geeks ! Sans vous refaire toutes les conférences en détail (il y aura des vidéos sur parleys pour ça) revenons sur ce que j&#8217;ai vu et l&#8217;ambiance générale.<p><a href="http://www.apptom.fr/blog/2012/04/devoxx-france/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/04/devoxx-france/">Devoxx France</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>La première édition de Devoxx France a eu lieu les 18, 19 et 20 avril 2012. Un grand rassemblement de développeurs français (essentiellement) et donc beaucoup de geeks !</p>
<p>Sans vous refaire toutes les conférences en détail (il y aura des vidéos sur <a href="http://www.parleys.com/">parleys</a> pour ça) revenons sur ce que j&#8217;ai vu et l&#8217;ambiance générale.</p>
<h2>Mercredi</h2>
<p>Venant de province (Lannion), réveil à 5h30 pour prendre l&#8217;avion et arriver juste avant 9h à l&#8217;hôtel Marriott. Le checking est rapide et sans pb. On entre ensuite dans le vive du sujet, 3 heures de conférence ou de labs. En effet la première journée est taggée &#8220;University&#8221;. Le principe est de prendre du temps pour approfondir un sujet technique. C&#8217;est vrai qu&#8217;avec 3 heures on entre plus dans le détail que pendant des présentations de 50 minutes.</p>
<h4>Google App Engine</h4>
<p>L&#8217;objectif de cette session est de réaliser un site web pour annoncer les résultats de l&#8217;élection présidentielle. Donc de prouver la capacité de monter en charge de Google App Engine. Parmi les ingénieurs Google présents il y avait <a href="http://twitter.com/#/ludoch">Ludovic Champenois</a>. Il développe la plateforme, donc forcément il la maitrise <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Google App Engine utilise les mêmes data center que ceux utilisés par le fameux moteur de recherche pour héberger vos applications. La présentation commence donc par un avertissement amusant :</p>
<blockquote><p>Faites attention, on va forcément arriver à absorber votre trafic.</p></blockquote>
<p>L&#8217;avertissement est en fait par rapport à la facturation. En effet la charge n&#8217;est pas un problème, vous pouvez avoir des pics de charges énormes google va les absorber&#8230; Mais après il va falloir payer. Les quotas d&#8217;utilisation sont journaliers et il est donc très fortement conseillé de mettre une limite en $ par jour en fonction de votre budget.</p>
<p>Cette session est animée sous forme de TP. Vous pouvez retrouver le code <a href="http://code.google.com/p/devoxx-france-appengine/">ici</a>.</p>
<p>J&#8217;aime vraiment utiliser Google App Engine. Pour un développeur Java c&#8217;est très simple. Le gros problème c&#8217;est l&#8217;impossibilité d&#8217;estimer le coût de la solution pour une application pro. Il y a tellement de paramètre qui rentre en compte que l&#8217;on ne peut pas vraiment le faire précisément.</p>
<h4>Developing, Deploying and Scaling in the Cloud with Play par James Ward, Nicolas Leroux et Guillaume Bort</h4>
<p>En fait j&#8217;avais commencé à la présentation CDI, mais je n&#8217;ai vraiment pas accroché au début avec l&#8217;explication des échanges OAuth. J&#8217;ai donc rapidement migré sur Play.</p>
<p>J&#8217;ai trouvé ça intéressant mais assez superficiel. Le problème c&#8217;est que j&#8217;ai déjà un peu testé play et donc cette présentation qui a déroulé le tutoriel de base ne m&#8217;a rien appris.</p>
<p>A partir de 17h ont commencé les présentations &#8220;Tool in action&#8221;. Ce sont des sessions de 30 minutes pour présenter un outil. J&#8217;ai participé à deux sessions :</p>
<ul>
<li>Tester une application Web avec Selenium 2, Selenium Grid et TestNG</li>
<li>Continuous deployement : Rackspace, Chef et capistrano en action</li>
</ul>
<p>Une demi-heure c&#8217;est vraiment court. On a juste le temps de comprendre à quoi sert l&#8217;outil. Je ne suis pas super fan de ce concept.</p>
<p>Ensuite il y avait des BOF (Birds-of-a-Feather). Ce sont des rencontres informelles de passionés autour d&#8217;un sujet. Des sessions jusqu&#8217;à 21h. Mais pour moi réveillé depuis 5h30 et avec 450 Km de trajet dans les pattes, dès 18h j&#8217;en avais plein la tête, je n&#8217;ai donc pas participé à ces &#8220;BOF&#8221;.</p>
<h2>Jeudi</h2>
<p>On commence donc par une keynote dans une salle immense. Après une petite intro expliquant la génèse du projet Devoxx France, nous avons droit à 2 belles présentations.</p>
<h4>Fier d&#8217;être développeur ? par Pierre Pezziardi</h4>
<p>Co-fondateur d’OCTO Technology Pierre Pezziardi a une très belle vision du métier de développeur et nous parle de notre problème à faire partager notre passion. Sa réponse est simple : Arrêtez de vous plaindre que le développement est un métier dévalorisé et changez déjà votre propre façon de penser avant de demander aux autres de changer la leur.</p>
<p>Pour cela il nous présente le &#8220;egoless programming manifesto&#8221;. 1o règles que l&#8217;on peut traduire comme cela :</p>
<ol>
<li>Comprendre et accepter que l&#8217;on fait des erreurs</li>
<li>Vous n&#8217;êtes pas votre code</li>
<li>Peut-importe votre niveau de kung fu, quelqu&#8217;un est meilleur</li>
<li>Ne pas réécrire le code d&#8217;un autre développeur sans concertation</li>
<li>Traitez les personnes qui en connaissent moins que vous avec respect et patience</li>
<li>La seule constante dans le monde c&#8217;est le changement</li>
<li>La seule autorité réelle découle de la connaissance, pas de la hiérarchie</li>
<li>Battez vous pour vos convictions mais pitié acceptez la défaite</li>
<li>Ne soyez pas &#8220;le gars dans le bureau&#8221;</li>
<li>Critiquez le code pas le codeur. Soyez tolérant avec le codeur et sans pitié avec le code</li>
</ol>
<p>Des règles à respecter dans tout bon open space qui se respecte ! <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4>This could be Heaven or this could be Hell by Ben Evans and Martijn Verburg</h4>
<p>Style complètement différent mais présentation très bien faite. On a eu droit à un vrai show sur comment peut évoluer le monde java dans les prochaines années.</p>
<p>On enchaine sur les conférences.</p>
<h4>ElasticSearch par David Pilato</h4>
<p>ElasticSearch est une plateforme utilisable pour indexer de gros volumes de données et expose une interface REST pour requêter. C&#8217;est super puissant et très scalable car il gère des mécanismes de réplication et de clustering. Le seule chose qu&#8217;il faut bien comprendre c&#8217;est que les données indexées sont stockées par ElasticSearch. Donc indexer un gros volume de twitter c&#8217;est bien, mais il faut ensuite assurer au niveau de l&#8217;espace disque.</p>
<h4>Nouveau look pour une nouvelle vie: Spring, JQuery et HTML5 par Julien Dubois</h4>
<p>Bon là, rien de vraiment nouveau pour moi, mais j&#8217;étais curieux de voir ce que donnait le projet <a href="http://blog.ippon.fr/2012/04/11/resultat-du-concours-tatami-pour-devoxx-france/">Tatami</a> de Ippon et j&#8217;aime bien les présentations de Julien. Ce qu&#8217;il faut savoir c&#8217;est que spring n&#8217;a pas vraiment la cote à Devoxx. D&#8217;ailleurs la conf de Julien n&#8217;avait pas été retenue au &#8220;Call for paper&#8221;. Mais comme Ippon est sponsor Julien a habilement utilisé leur slot partenaire pour la faire.</p>
<p>A la fin de la présentation il lance donc un test de charge comparatif entre son service Tatami (Jquery, Spring, Casandra avec persistance sur disque) contre le service démo de Play utilisant une base de données en mémoire. Et là c&#8217;est le drame <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Julien explose le score avec Spring alors que Play plante sous la charge. Je peux vous assurer qu&#8217;il ne s&#8217;est pas fait que des copains dans la salle.</p>
<h4>Programmation concurrente en Java dans la pratique par Alex Snaps</h4>
<p>Une bonne présentation des différents moyens de faire du code thead safe et comment c&#8217;est mis en place dans l&#8217;implémentation de EhCache. Ca a été pour moi une bonne piqure de rappel.</p>
<h4>Pour une fois soyons physiques ! Une introduction à Arduino par David Delabassee</h4>
<p>Depuis le temps que j&#8217;entends parler de arduino j&#8217;ai enfin pu voir à quoi ça ressemblait. Enfin un peu de matériel ça fait du bien. Passer de Google App Engine où on parle d&#8217;espace disque en Téra à Arduino avec un processeur 8 bits et 16k de mémoire c&#8217;est un peu le grand écart <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Arduino est une petite plaque avec un micro controller et des connecteurs d&#8217;entrée/sortie. Ensuite en fonction des constructeurs et du niveau de gamme il y a plus ou moins de mémoire, d&#8217;adaptateurs (USB, RJ45 ou autre). Pour étendre les possibilités il faut ajouter des &#8220;Shields&#8221;. Un Shield est une extension spécifique avec par exemple un écran LCD ou des relais pour contrôler des appareils 220V.</p>
<p>A savoir aussi que le fameux Hello Word en arduino consiste à allumer une LED <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4>Cloud et PaaS: les développeurs reprennent le pouvoir par Sacha Labourey</h4>
<p>Sacha est CEO de CloudBees, il nous a présenté sa vision du cloud. Pour lui les développeurs ne devraient se préoccuper uniquement du code et laisser la gestion de l&#8217;IT à des pros : les fournisseurs PAAS.</p>
<h2>Vendredi</h2>
<p>On commence la dernière matinée par trois Keynotes. La première d&#8217;IBM était atroce, des slides illisibles avec une tonne d&#8217;informations inintéressantes et un speaker &#8220;mou du slip&#8221;. 30 minutes de perdues. Ca pestait tellement sur twitter que les organisateurs n&#8217;ont pas affiché de tweet wall après son passage. Heureusement les 2 autres présentations étaient vraiment de haut niveau.</p>
<p>Patrick Chanezon de VMWare nous a retracé le parcours assez classique d&#8217;un développeur en France pour bien mettre en avant qu&#8217;il est vital dans notre metier de bien suivre <a href="http://www.slideshare.net/chanezon/devoxx-france-2012-portrait-du-developeur-en-the-artist">l&#8217;évolution des technos</a>.</p>
<p>Neal Ford nous a ensuite fait une présentation très dynamique sur comment on se laisse distraire par des abstractions en oubliant l&#8217;essentiel.</p>
<h4>sizeOf en Java — parce que la taille… ça compte! par Alex Snaps</h4>
<p>Encore une petite piqûre de rappel sur comment la JVM gère la mémoire. Alex Snaps travaille chez Terracotta sur EhCache donc la gestion du HEAP c&#8217;est son dada !</p>
<p>Après le repas il y avait une session sur JavaFX. J&#8217;ai d&#8217;abord pensé à une bonne blague des organisateurs, mais non ! Je n&#8217;y suis pas allé car j&#8217;avais déjà eu une démo à une conf en Floride en 2008. A mon avis ça n&#8217;a pas évoluer <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A la place j&#8217;ai fait 2 autres sessions</p>
<ul>
<li>Changeons la conception de nos applications grâce aux services Cloud par Cyrille Le clerc</li>
<li>Java sur Amazon Web Services par Carlos Conde</li>
</ul>
<p>Je suis un peu déçu, je pensais que l&#8217;on allait rentrer un peu plus dans des problèmes spécifiques au développement pour du cloud, mais on a juste eu une énumération des différents services disponibles.</p>
<p>La dernière conférence sur Google App Engine a été plus intéressante même si j&#8217;avais déjà eu la plupart des infos lors du TP mercredi matin.</p>
<h2>Conclusion</h2>
<p>J&#8217;ai vraiment passé 3 très bonnes journées. C&#8217;est toujours enrichissant d&#8217;écouter ce type de conférence, de rencontrer les spécialistes de leur domaine.</p>
<p>Bien sûr, on peut noter quelques points négatifs (des axes d&#8217;amélioration disent les RH <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). L&#8217;organisation a été un peu victime de son succès. Il était difficile de se déplacer autour des stands tellement il y avait de monde. J&#8217;ai aussi trouvé le programme très chargé. J&#8217;ai rarement vu des conférences finir après 17h un vendredi. C&#8217;est aussi sur ces détails que l&#8217;on ressent le côté très parisien des organisateurs. Ca peut être sympa de penser aux personnes qui ont 4-5 heures de train pour rentrer chez eux. Personnellement j&#8217;ai loupé les deux dernières conf pour pouvoir prendre mon avion.</p>
<p>Mais à part ça je tire mon chapeau aux organisateurs. Pour avoir participé à quelques conférences aux USA j&#8217;ai retrouvé exactement le même niveau de prestation. Jamais je n&#8217;avais vu une conférence comme celle-ci en France (bon ok, je ne les fais pas toutes non plus&#8230;). Merci aux organisateurs et bonne chance pour l&#8217;organisation de devoxx 2013 !</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/04/devoxx-france/">Devoxx France</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/04/devoxx-france/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Global Game JAM</title>
		<link>http://www.apptom.fr/blog/2012/01/global-game-jam/</link>
		<comments>http://www.apptom.fr/blog/2012/01/global-game-jam/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 20:10:07 +0000</pubDate>
		<dc:creator>Samuel</dc:creator>
				<category><![CDATA[Perso]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ggj12]]></category>
		<category><![CDATA[global]]></category>
		<category><![CDATA[jam]]></category>
		<category><![CDATA[jeux video]]></category>

		<guid isPermaLink="false">http://www.net-liard.com/blog/?p=1158</guid>
		<description><![CDATA[<p>Ce week-end avait lieu le Global Game JAM. Cet évènement avait lieu dans 246 villes à travers le monde. Il était organisé sur Rennes au Jardin moderne par 2 associations : 3hitcombo west indie collective L&#8217;objectif est simple : réaliser un jeu en 48h. Je vais vous résumer comment ça c&#8217;est passé : Vendredi 27 Après les<p><a href="http://www.apptom.fr/blog/2012/01/global-game-jam/">La suite &#8594;</a></p></p><p>The post <a href="http://www.apptom.fr/blog/2012/01/global-game-jam/">Global Game JAM</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></description>
			<content:encoded><![CDATA[<p>Ce week-end avait lieu le Global Game JAM. Cet évènement avait lieu dans 246 villes à travers le monde. Il était organisé sur Rennes au Jardin moderne par 2 associations :</p>
<ul>
<li><a title="http://3hitcombo.fr" href="http://3hitcombo.fr/">3hitcombo</a></li>
<li><a title="http://westindiecollective.org/" href="http://westindiecollective.org/">west indie collective</a></li>
</ul>
<p style="text-align: center;"><a href="http://www.net-liard.com/blog/wp-content/uploads/2012/01/ggj.png"><img class="aligncenter  wp-image-1159" title="ggj" src="/wp-content/uploads/2012/01/ggj-212x300.png" alt="" /></a>L&#8217;objectif est simple : réaliser un jeu en 48h.</p>
<p>Je vais vous résumer comment ça c&#8217;est passé :</p>
<p><span id="more-1158"></span></p>
<h2>Vendredi 27</h2>
<p>Après les annonces générales et quelques conseils, on passe directement au thème imposé par la Global. Cette année c&#8217;est une illustration :</p>
<p style="text-align: center;"><a href="http://www.net-liard.com/blog/wp-content/uploads/2012/01/200px-Ouroboros-simple.svg_.png"><img class="aligncenter  wp-image-1160" title="200px-Ouroboros-simple.svg" src="/wp-content/uploads/2012/01/200px-Ouroboros-simple.svg_.png" alt="" /></a>Un Ouroboros donc.</p>
<p>On enchaine ensuite sur une séance de brainstorm collectif autour de ce thème, 1 heure où les idées fusent. Ensuite il est temps de constituer des équipes. Trois &#8220;mouvances&#8221; se constituent :</p>
<ul>
<li>Les jeux de plateau</li>
<li>Les jeux vidéo multi-joueur</li>
<li>Les minis jeux / pixelart</li>
</ul>
<p>On se regroupe donc en fonction de nos envies et de nos compétences. Je choisi de participé au groupe &#8220;mini jeux&#8221;. Nous sommes rapidement 9 avec des profils bien différents et donc complémentaires :  3 Graphistes, 3 Développeurs, 1 Game designer et 2 Sound designer. Reste maintenant à trouver une idée de jeux : un thème et un game play. Donc on recommence un long brainstorm pour ensuite tenter de trouver un consensus. L&#8217;exercice n&#8217;est pas simple à 9. Nous arrivons au final à vouloir faire un jeu de plateforme autour d&#8217;un personnage cherchant des toilettes de façon urgente. Ne me demandez pas ni pourquoi ni comment nous en sommes arrivés là, la fatigue sûrement&#8230;. La non consommation d&#8217;alcool ou de stupéfiant peut aussi expliquer ce manque de créativité.</p>
<p>A 23h il y avait 4 équipes de créées :</p>
<ul>
<li>Un jeu de plateau avec des canards et des bombes</li>
<li>Un jeu de 3D temps réel</li>
<li>Un jeu de plateforme</li>
<li>Un jeu multijoueur PC et android.</li>
</ul>
<p>Personnellement j&#8217;ai décidé de dormir la première nuit pour garder mes forces.</p>
<h2>Samedi 28</h2>
<p>Dès 9h on a commencé à coder (c&#8217;est très tôt pour un samedi matin). Coder oui mais avec quel langage ? Nous sommes 3 développeurs maitrisant des technos différentes. Là on a deux choix, soit on choisit une techno neutre que personne ne maitrise vraiment bien pour s&#8217;y mettre à 3, ou on laisse un des développeurs prendre le lead et les 2 autres essaient de suivre. On a clairement choisi cette dernière solution et Christopher est parti sur une solution HTML/CSS/Javascript avec le framework <a href="http://www.melonjs.org/">melonJS</a> (il a codé une bonne partie de la nuit de vendredi à samedi en fait).</p>
<p>De mon côté j&#8217;ai essayé de développer en parallèle une version sur iPhone basée sur <a href="http://www.cocos2d-iphone.org/">cocos2d</a>.</p>
<p>Notre WarRoom :</p>
<p style="text-align: center;"><a href="http://www.net-liard.com/blog/wp-content/uploads/2012/01/war.jpg"><img class="aligncenter  wp-image-1163" title="war" src="/wp-content/uploads/2012/01/war-300x169.jpg" alt="" /></a></p>
<p>En fait notre équipe a continué toute la journée à discuter autour du game play. Ca fusait dans tous les sens sur des idées de jauges de vie, objectif du jeu. Personnellement ça m&#8217;inquietait un peu de ne rien voir converger, je me suis donc concentré sur la version iPhone et la maitrise de cocos2d. Je n&#8217;avais jamais fait de jeu de plateforme avant, je suis donc parti de zéro. J&#8217;ai commencé par coder le défilement des différents niveaux d&#8217;image d&#8217;arrière plan pour donner un effet de profondeur. Heureusement la gestion des animations de sprite est de base dans cocos2d. Un moteur physique est aussi disponible, ce qui permet de faire rapidement sauter mon sprite de façon assez fluide.</p>
<p>L&#8217;objectif du jeu est super simple, le personnage cours et il doit éviter des obstacles. Je ne me voyais faire beaucoup plus en 48h.</p>
<p>J&#8217;ai commencé à avoir des problèmes avec la gestion des collisions. Je voulais utiliser un Tiled Map pour que ce soit éditable plus facilement. Mais après plusieurs heures, j&#8217;ai abandonné la gestion des fichiers TMX pour partir sur quelque chose de bien plus simple. Le positionnement des obstacles est géré à la main et la gestion de collision se limite à vérifier si mon personnage est au dessus d&#8217;une certaine hauteur au passage de l&#8217;obstacle.</p>
<p>A 1h30 du matin j&#8217;avais :</p>
<ul>
<li>La gestion de 2 niveaux d&#8217;image de fond</li>
<li>La gestion du saut du sprite</li>
<li>L&#8217;ajout de façon aléatoire d&#8217;obstacles dans le jeu</li>
<li>La gestion de collision</li>
</ul>
<p>et là il était temps de dormir, je n&#8217;ai plus 20 ans <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Dimanche 29</h2>
<p>Reprise du code à 9h30 pas super frais. Pendant cette matinée les graphistes ont donné un coup de boost pour faire 4 nouveaux décors et finir les sprites des différents obstacles. J&#8217;ai donc passé ma matinée à intégrer leur boulot. Les sounds designer aussi ont pas mal bossé pour nous fournir du son pour chaque écran du jeu. Il fallait aussi faire l&#8217;enchainement des pages : Accueil, crédits, jeux, écran game over.</p>
<p>Quand nous avons compris vers 12h que notre développeur principal avait décidé de faire la grasse matinée la version HTML du jeu était très fortement compromise. Nous risquions donc de n&#8217;avoir que la version iPhone à montrer ce qui ajoutait un poil de stress.</p>
<p>On a terminé en intégrant le boulot des sounds designer pour avoir une application totalement terminée. Alors soit, le game play est plus que minimaliste, le thème est loin d&#8217;être très classe mais on a quand même le mérite de l&#8217;avoir terminé en 48h <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>A 15h on publiait une vidéo sur youtube pour montrer ce que ça donne :</p>
<p><center><iframe src="http://www.youtube.com/embed/DKxfYR6DJ0o" frameborder="0" width="560" height="315"></iframe></center>Ca a le mérite au moins de beaucoup faire rire mes enfants <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>En plus de notre application iPhone, 3 jeux ont été présentés ce dimanche</p>
<h3>Aux quatre coin coin</h3>
<p>Jeux de plateau très bien fait. Un gas a même pris le temps de sculter de superbes petites pièces de jeu. Admirez ce superbe plateau fait en aquarelle :</p>
<h3 style="text-align: left;"><a href="http://globalgamejam.org/2012/aux-quatre-coin-coin"><img class="aligncenter  wp-image-1169" title="photo_board_preview" src="/wp-content/uploads/2012/01/photo_board_preview-300x214.jpg" alt="" /></a>Jörmungand</h3>
<p>Je n&#8217;avais pas bien compris le principe de ce jeu lorsqu&#8217;ils l&#8217;avaient présenté la première fois. Mais j&#8217;ai été bluffé par leur démo le dimanche après midi. Ils ont codé un jeu en 3D avec une partie reconnaissance de tag via une webcam.</p>
<h3 style="text-align: left;"><a href="http://globalgamejam.org/2012/j%C3%B6rmungand"><img class="aligncenter  wp-image-1170" title="jurmungand" src="/wp-content/uploads/2012/01/jurmungand-300x175.png" alt="" /></a>STRAT</h3>
<p>Là par contre leur démo n&#8217;a pas été transcendante <img src='http://www.apptom.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mais ils ont développé un jeux multi-joueur sur Android avec un écran principal sur un PC. C&#8217;était la seule équipe avec des développeurs travaillant sur la même techno et ça les a bien aidé.</p>
<h2 style="text-align: left;"><a href="http://globalgamejam.org/2012/strat"><img class="aligncenter  wp-image-1171" title="Visu" src="/wp-content/uploads/2012/01/Visu-300x240.png" alt="" /></a>Bilan</h2>
<p>J&#8217;ai beaucoup aimé ce week-end. C&#8217;est très stimulant d&#8217;avoir une forte contrainte de temps. En tant que développeur j&#8217;ai aussi bien apprécié d&#8217;être entouré de graphistes et de sound designer. C&#8217;est super enrichissant de voir comment ils travaillent vu que c&#8217;est un monde qui m&#8217;est complètement inconu.</p>
<p>Si je pouvais vous donner un seul conseil pour bien réussir ce type de week-end c&#8217;est d&#8217;essayer d&#8217;avoir une équipe de développeurs homogène. Ca permet de mieux se partager le travail et de ne pas être dépendant d&#8217;une seule personne.</p>
<p>L&#8217;objectif du startup week-end c&#8217;est de construire une startup en 56 heures. Etablir un business model cohérent c&#8217;est ça la priorité numéro 1 pour finir sur le podium. L&#8217;objectif du week-end Global Game JAM c&#8217;est de créer un jeu, de s&#8217;amuser. Il n&#8217;y a pas de gagnant, pas de podium. Là les développeurs ont vraiment leur place (contrairement au <a href="/blog/2011/11/startup-week-end-bretagne/">startup weekend à mon avis</a>). J&#8217;y ai fait de belles rencontres et je commence à réfléchir pour l&#8217;organiser sur Lannion en 2013.</p>
<p>The post <a href="http://www.apptom.fr/blog/2012/01/global-game-jam/">Global Game JAM</a> appeared first on <a href="http://www.apptom.fr"></a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.apptom.fr/blog/2012/01/global-game-jam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
