<?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>Zeneffy &#62;&#62; Bloc Notes</title>
	<atom:link href="http://blog.zeneffy.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zeneffy.fr</link>
	<description>Etre zen &#38; efficace en utilisant les nouvelles technologies</description>
	<lastBuildDate>Sun, 22 Jan 2012 15:41:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Utiliser les versions 0.6.x de Nodejs sur&#160;Heroku</title>
		<link>http://blog.zeneffy.fr/2012/01/22/utiliser-les-versions-0-6-x-de-nodejs-sur-heroku/</link>
		<comments>http://blog.zeneffy.fr/2012/01/22/utiliser-les-versions-0-6-x-de-nodejs-sur-heroku/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 15:41:38 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=533</guid>
		<description><![CDATA[L&#8217;hébergeur heroku permet de mettre en place des applications nodejs depuis l&#8217;année dernière, toutefois par défaut la version est la 0.4.7 &#8211; version stable mais qui est devenue obsolète avec l&#8217;apparition des versions 0.6.x. Heureusement, il est possible très facilement de forcer la version &#8211; pour cela il suffit d&#8217;une part de rajouter un &#171;&#160;buildpack&#160;&#187; [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;hébergeur <a href="http://heroku.com">heroku</a> permet de mettre en place des applications <a href="http://nodejs.org/">nodejs</a> depuis l&#8217;année dernière, toutefois par défaut la version est la 0.4.7 &#8211; version stable mais qui est devenue obsolète avec l&#8217;apparition des versions 0.6.x.</p>
<p>Heureusement, il est possible très facilement de forcer la version &#8211; pour cela il suffit d&#8217;une part de rajouter un &laquo;&nbsp;buildpack&nbsp;&raquo; dans les variables d&#8217;environnement de votre application:</p>
<pre class="brush: plain; title: ; notranslate">
heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs.git#versions
</pre>
<p>puis de modifier le fichier <em>packages.json</em> pour rajouter une entrée &laquo;&nbsp;engines&nbsp;&raquo;:</p>
<pre class="brush: jscript; title: ; notranslate">
{
    &quot;name&quot;: &quot;monAppli&quot;
  , &quot;version&quot;: &quot;0.1.0&quot;
  , &quot;private&quot;: true
  , &quot;dependencies&quot;: {
      &quot;express&quot;: &quot;2.5.6&quot;
    , &quot;jade&quot;: &quot;0.20.0&quot;
  },
  &quot;engines&quot;: {
    &quot;node&quot;: &quot;0.6.x&quot;,
    &quot;npm&quot;: &quot;1.0.x&quot;
  }
}
</pre>
<p>Puis les classiques</p>
<pre class="brush: plain; title: ; notranslate">
git add .
git commit -m &quot;passage en en 0.6&quot;
git push heroku master
</pre>
<p>Normalement vous devriez voir les lignes:</p>
<pre class="brush: plain; title: ; notranslate">
-----&gt; Heroku receiving push
-----&gt; Fetching custom buildpack... done
-----&gt; Node.js app detected
-----&gt; Resolving engine versions
       Using Node.js version: 0.6.8
       Using npm version: 1.0.106
-----&gt; Fetching Node.js binaries
</pre>
<p>Et voilà, votre application tourne en 0.6.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2012/01/22/utiliser-les-versions-0-6-x-de-nodejs-sur-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instant de bonheur: une application complète&#160;node.js</title>
		<link>http://blog.zeneffy.fr/2011/12/27/instant-de-bonheur-une-application-complete-node-js/</link>
		<comments>http://blog.zeneffy.fr/2011/12/27/instant-de-bonheur-une-application-complete-node-js/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 12:08:26 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=524</guid>
		<description><![CDATA[M&#8217;intéressant depuis quelques temps à node.js (framework web basé sur le moteur javascript V8 de chrome), j&#8217;avais décidé de réaliser une petite application pour tester et me faire une opinion sur l&#8217;utilisation du javascript côté serveur &#8211; par un hasard extraordinaire j&#8217;ai eu l&#8217;occasion de trouver une idée et de la réaliser lors d&#8217;une formation, [...]]]></description>
			<content:encoded><![CDATA[<p>M&#8217;intéressant depuis quelques temps à <a href="http://nodejs.org/">node.js</a> (framework web basé sur le moteur javascript V8 de chrome), j&#8217;avais décidé de réaliser une petite application pour tester et me faire une opinion sur l&#8217;utilisation du javascript côté serveur &#8211; par un hasard extraordinaire j&#8217;ai eu l&#8217;occasion de trouver une idée et de la réaliser lors d&#8217;une formation, par ailleurs sans aucun rapport.</p>
<p>Cela donne l&#8217;application web <a href="http://mon.instant-de-bonheur.fr">mon.instant-de-bonheur.fr</a> qui permet de partager les petits (et grands!) moments de bonheur (sans aucun lien avec l&#8217;<a href="http://programmes.france2.fr/leurs-secrets-du-bonheur/index.php?page=article&amp;numsite=7085&amp;id_article=24314&amp;id_rubrique=7088">émission de France2</a>, quoique&#8230;) et qui a été mise en ligne depuis quelques jours.</p>
<p>Pour les geeks, j&#8217;ai pris soin (ou du moins essayé) de documenter mon code, évidemment publié en opensource (license Apache 2.0) afin que d&#8217;autres puissent peut-être en profiter pour monter en compétence sur les technologies javascript (node.js, jade, expressjs) et noSQL (à travers mongodb).</p>
<p>Le code complet est disponible sur github via <a href="https://github.com/jraigneau/instant">github.com/jraigneau/instant</a>, et la version commentée et mise en forme peut-être revue sur le site même de l&#8217;application via <a href="http://mon.instant-de-bonheur.fr/about">mon.instant-de-bonheur.fr/about</a>. Le code est améliorable, modifiable et ne respecte probablement pas les standards mais &laquo;&nbsp;It works !&nbsp;&raquo; &#8211;  au passage je suis convaincu par l&#8217;utilisation de node.js: rapide, fiable et surtout très facile à utiliser pour un développeur même moyen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/12/27/instant-de-bonheur-une-application-complete-node-js/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Démarrer avec Play! Framework, scala et MongoDB sur&#160;Heroku</title>
		<link>http://blog.zeneffy.fr/2011/10/30/demarrer-avec-play-framework-scala-et-mongodb-sur-heroku/</link>
		<comments>http://blog.zeneffy.fr/2011/10/30/demarrer-avec-play-framework-scala-et-mongodb-sur-heroku/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 09:37:51 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[playframework]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=513</guid>
		<description><![CDATA[J&#8217;ai découvert Play! Framework il y a quelques mois avec beaucoup d&#8217;intérêt et je me suis rendu compte qu&#8217;un module scala existait. Voici donc un premier petit projet qui permet à la fois d&#8217;installer Play! (1.2.3) mais aussi d&#8217;utiliser MongoDB sur Heroku en quelques étapes: 1. Suivant votre système, installez Play! via le zip ou [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai découvert <a href="http://www.playframework.org/">Play! Framework</a> il y a quelques mois avec beaucoup d&#8217;intérêt et je me suis rendu compte qu&#8217;un module <a href="http://scala.playframework.org/">scala</a> existait. Voici donc un premier petit projet qui permet à la fois d&#8217;installer Play! (1.2.3) mais aussi d&#8217;utiliser MongoDB sur Heroku en quelques étapes:</p>
<p>1. Suivant votre système, <a href="http://www.playframework.org/download">installez Play! via le zip</a> ou via brew:</p>
<pre class="brush: plain; title: ; notranslate">
brew install play
</pre>
<p>2. Installez le support java pour Play!</p>
<pre class="brush: plain; title: ; notranslate">
play install scala
</pre>
<p>3. Créez l&#8217;application avec le support java:</p>
<pre class="brush: plain; title: ; notranslate">
play new maSuperDemo --with scala
</pre>
<p>4. Testez que tout s&#8217;est bien passé:</p>
<pre class="brush: plain; title: ; notranslate">
play run
</pre>
<p>puis ouvrez votre navigateur sut http//localhost:9000. Normalement vous devez avoir une belle fenêtre résumant le fonctionnement de Play!. Passons maintenant au choses sérieuses.</p>
<p>5. Modifiez les dépendances du projet pour ajouter <a href="http://api.mongodb.org/scala/casbah/2.1.5.0/index.html">Casbah</a>, la librairie Scala permettant de manipuler <a href="mongodb">MongoDB</a>.</p>
<pre class="brush: plain; title: ; notranslate">
# Application dependencies
require:
    - play
    - play -&gt; scala 0.9.1
    - com.mongodb.casbah -&gt; casbah_2.8.1 2.1.5-1

repositories:
  - scalatools:
     type: iBiblio
     root: http://scala-tools.org/repo-releases/
     contains:
       - com.mongodb.casbah -&gt; *
       - org.scalaj -&gt; *
</pre>
<p>Attention de bien utiliser la version 2.8.1 qui est la seule compatible avec Play! 1.2.3 à l&#8217;heure actuelle.</p>
<p>6. Forcez Play! à charger toutes les dépendances (qui seront stockées dans le répertoire /lib):</p>
<pre class="brush: plain; title: ; notranslate">
play dependencies
</pre>
<p>7. Préparez l&#8217;application pour le déploiement sur heroku: pour des raisons de simplicité nous allons utiliser la base MongoDB de heroku directement (pas de base de développement&#8230;c&#8217;est mal mais c&#8217;est une démo !).<br />
Avant toute chose, créez un fichier .gitignore contenant:</p>
<pre class="brush: plain; title: ; notranslate">
/modules
/tmp
/lib
</pre>
<p>Puis la magie git habituelle</p>
<pre class="brush: plain; title: ; notranslate">
git init
git add .
</pre>
<p>et enfin la déclaration sous heroku (je ne donne pas de nom à l&#8217;application, Heroku m&#8217;en choisira un tout seul) et l&#8217;installation de l&#8217;addon mongodb (ici via mongolab mais mongoHQ ferait aussi l&#8217;affaire)</p>
<pre class="brush: plain; title: ; notranslate">
heroku create --stack cedar
heroku addons:add mongolab:starter
</pre>
<p>Point important: la commande heroku config vous permettra de récupérer l&#8217;url et le port de la base mongoDB automatiquement créée. Exemple:</p>
<pre class="brush: plain; title: ; notranslate">
MONGOLAB_URI =&gt; mongodb://nombase:motdepasse@urlmongolab:portmongolab/nombase
</pre>
<p>Ces données sont à intégrer dans la prochaine étape.</p>
<p>8. Créez un nouveau controleur dans /app/controllers/Messages.scala avec le code suivant:</p>
<pre class="brush: scala; title: ; notranslate">
package controllers;

import play.mvc._;
import com.mongodb.casbah.Imports._
import scala.collection.JavaConverters._

object Messages extends Controller {

//Création de la connexion et authentification
  val _mongoConn = MongoConnection(&quot;urlmongolab&quot;, portmongolab)
  _mongoConn(&quot;nombase&quot;).authenticate(&quot;nombase&quot;,&quot;motdepasse&quot;)

  def index = {
    val msgs = _mongoConn(&quot;nombase&quot;)(&quot;test_data&quot;).find( &quot;msg&quot; $exists true $ne &quot;&quot; )
    val msgStrings = msgs.map( (obj: DBObject) =&gt; obj.getOrElse(&quot;msg&quot;,&quot;&quot;) )
    Template( 'msgStrings -&gt; msgStrings.asJava )
  }

  def save(msg:String) = {
    val doc = MongoDBObject(&quot;msg&quot; -&gt; msg)
    _mongoConn(&quot;nombase&quot;)(&quot;test_data&quot;).save( doc )
    Redirect(&quot;/&quot;)
  }
}
</pre>
<p>Vous noterez les transformations des méthodes &laquo;&nbsp;.asJava&nbsp;&raquo; qui permettent à Groovy (le langage de scripting intégré dans Play) de gérer les listes typique de Scala.</p>
<p>9. Ajoutez une vue pour gérer le controleur avec un fichier dans /app/views/Messages/index.html</p>
<pre class="brush: xml; title: ; notranslate">
&lt;form action=&quot;@{Messages.save()}&quot; method=&quot;POST&quot;/&gt;
  &lt;input type=&quot;text&quot; name=&quot;msg&quot;/&gt;
  &lt;input type=&quot;submit&quot; value=&quot;Add message&quot; /&gt;
&lt;/form&gt;

&lt;ul&gt;
  #{list items:msgStrings, as:'mess' }
  &lt;li&gt;${ mess }&lt;/li&gt;
  #{/list}
&lt;/ul&gt;
</pre>
<p>10. Modifiez les routes dans /config/routes</p>
<pre class="brush: plain; title: ; notranslate">
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                                       Messages.index
POST    /                                       Messages.save

# Ignore favicon requests
GET     /favicon.ico                            404

# Map static resources from the /app/public folder to the /public path
GET     /public/                                staticDir:public

# Catch all
*       /{controller}/{action}                  {controller}.{action}
</pre>
<p>11. Testez votre application en lançant la commande play run &#8211; normalement vous devriez être capable d&#8217;enregistrer des petites messages et de les voir apparaître à l&#8217;écran.</p>
<p>12. Déployez votre application sur heroku et admirez la !</p>
<pre class="brush: plain; title: ; notranslate">
git add .
git commit -m &quot;Premier commit&quot;
git push heroku master
heroku open
</pre>
<p>Ce petit tutoriel peut (doit) être complété avec le <a href="http://scala.playframework.org/documentation/scala-0.9.1/home">tutoriel officiel disponible sur le site de Play</a>, en attendant vous pourrez jouer avec mon application sur <a href="http://glowing-fog-2793.herokuapp.com/">http://glowing-fog-2793.herokuapp.com/</a>.</p>
<p>Tutoriel basé en partie sur <a href="http://jaredrosoff.com/2011/05/getting-started-with-play-framework-scala-and-casbah/">http://jaredrosoff.com/2011/05/getting-started-with-play-framework-scala-and-casbah/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/10/30/demarrer-avec-play-framework-scala-et-mongodb-sur-heroku/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scala sur&#160;Heroku</title>
		<link>http://blog.zeneffy.fr/2011/10/15/scala-sur-heroku/</link>
		<comments>http://blog.zeneffy.fr/2011/10/15/scala-sur-heroku/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 08:21:18 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=501</guid>
		<description><![CDATA[En plein apprentissage de scala, j&#8217;ai décidé de m&#8217;intéresser au framework web Scalatra qui ressemble à Sinatra, mon environnement favori en Ruby. Evidemment, je souhaite pouvoir partager rapidement mes &#8216;créations&#8217; en les hébergeant sur la plate-forme Heroku, devenue polyglotte depuis quelques semaines en supportant d&#8217;autres langages que Ruby (notamment node.js, Java, Clojure, Scala et Python). [...]]]></description>
			<content:encoded><![CDATA[<p>En plein apprentissage de scala, j&#8217;ai décidé de m&#8217;intéresser au framework web <a href="http://www.scalatra.org/">Scalatra</a> qui ressemble à <a href="http://www.sinatrarb.com/">Sinatra</a>, mon environnement favori en Ruby. Evidemment, je souhaite pouvoir partager rapidement mes &#8216;créations&#8217; en les hébergeant sur la plate-forme <a href="http://www.heroku.com/">Heroku</a>, devenue <a href="http://blog.heroku.com/archives/2011/8/3/polyglot_platform/">polyglotte</a> depuis quelques semaines en supportant d&#8217;autres langages que Ruby (notamment node.js, Java, Clojure, Scala et Python).</p>
<p>Après quelques recherches sur internet, j&#8217;ai trouvé mon bonheur sur github <a href="https://gist.github.com/1209277">ici</a> et <a href="https://github.com/mikkelbd/scalatra-hello-heroku">là</a>. Pour gagner du temps dans mes futurs projets, j&#8217;ai alors transformé ces informations en un template <a href="https://github.com/n8han/giter8">giter8</a>. Giter8 est un simple outil basé sur scala et <a href="https://github.com/harrah/xsbt/wiki">SBT</a> qui installe des templates stockés sur Github.</p>
<p>Une fois <a href="https://github.com/n8han/giter8">g8</a> et le <a href="http://devcenter.heroku.com/articles/git">gem heroku</a> installés, mettre en ligne un projet scalatra devient alors très simple:</p>
<pre class="brush: plain; title: ; notranslate">
g8 jraigneau/scalatra-sbt-heroku.g8
cd monProjet
git init
git add . (conseil: pensez à mettre les répertoires de compilation (target) dans votre fichier .gitignore avant...)
git commit -m &quot;Premier commit&quot;
heroku create monProjet --stack cedar
git push heroku master
heroku open
</pre>
<p>Et voilà, votre navigateur s&#8217;ouvre sur la nouvelle application &#8211; la preuve en images:<br />
<iframe width="640" height="360" src="http://www.youtube.com/embed/cJwQX9axz1w" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/10/15/scala-sur-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>En avant pour Scala avec&#160;Vim</title>
		<link>http://blog.zeneffy.fr/2011/10/02/en-avant-pour-scala-avec-vim/</link>
		<comments>http://blog.zeneffy.fr/2011/10/02/en-avant-pour-scala-avec-vim/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 10:31:59 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=495</guid>
		<description><![CDATA[Après quelques années de développement avec mes deux langages favoris Python et de Ruby, j&#8217;ai décidé de me lancer dans un nouveau langage basé sur la JVM (donc pas de Java pur, j&#8217;ai déjà donné!). Après avoir étudié Clojure et Scala, j&#8217;ai décidé de me concentrer sur Scala qui me semble plus naturel et qui mélange les [...]]]></description>
			<content:encoded><![CDATA[<p>Après quelques années de développement avec mes deux langages favoris <a href="http://blog.zeneffy.fr/tag/python/">Python</a> et de <a href="http://blog.zeneffy.fr/tag/ruby/">Ruby</a>, j&#8217;ai décidé de me lancer dans un nouveau langage basé sur la <a href="http://fr.wikipedia.org/wiki/JVM_(informatique)">JVM</a> (donc pas de Java pur, j&#8217;ai déjà donné!). Après avoir étudié <a href="http://clojure.org/">Clojure</a> et <a href="http://www.scala-lang.org/">Scala</a>, j&#8217;ai décidé de me concentrer sur Scala qui me semble plus naturel et qui mélange les paradigmes &laquo;&nbsp;Orienté-Objet&nbsp;&raquo; et &laquo;&nbsp;programmation fonctionnelle&nbsp;&raquo; &#8211; Clojure pour sa part est un <a href="http://fr.wikipedia.org/wiki/Lisp">lisp</a> qui semble très puissant mais moins accessible pour un développeur moyen et dilettante comme moi.</p>
<p>Mon premier réflexe a été bien évidemment de m&#8217;assurer que macVim me permettrait de facilement commencer quelques développement en Scala. En cherchant rapidement sur le web, j&#8217;ai pu trouvé quelques astuces pour la coloration, la navigation à travers les méthodes&#8230;</p>
<p>En premier lieu, il faut installer le plugin Scala pour vim:</p>
<pre class="brush: plain; title: ; notranslate">
svn export --force http://lampsvn.epfl.ch/svn-repos/scala/scala-tool-support/trunk/src/vim
</pre>
<p>puis copier les fichiers obtenus dans votre répertoire .vim</p>
<p>Deuxième étape, l&#8217;installation du plugin <a href="http://www.vim.org/scripts/script.php?script_id=3465">Tagbar</a> (téléchargement du fichier .vba puis méthode d&#8217;installation normale vim)</p>
<pre class="brush: plain; title: ; notranslate">
  vim tagbar.vba
    :so %
    :q
</pre>
<p>TagBar ne prenant pas en compte Scala, il faut légèrement modifier certains fichiers<br />
Tout d&#8217;abord, création dans votre $HOME du fichier .ctags suivant</p>
<pre class="brush: plain; title: ; notranslate">
--langdef=Scala
--langmap=Scala:.scala
--regex-Scala=/^[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/c,classes/
--regex-Scala=/^[ \t]*object[ \t]*([a-zA-Z0-9_]+)/\1/o,objects/
--regex-Scala=/^[ \t]*trait[ \t]*([a-zA-Z0-9_]+)/\1/t,traits/
--regex-Scala=/^[ \t]*case[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/r,cclasses/
--regex-Scala=/^[ \t]*abstract[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\1/a,aclasses/
--regex-Scala=/^[ \t]*def[ \t]*([a-zA-Z0-9_=]+)[ \t]*.*[:=]/\1/m,methods/
--regex-Scala=/[ \t]*val[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\1/V,values/
--regex-Scala=/[ \t]*var[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\1/v,variables/
--regex-Scala=/^[ \t]*type[ \t]*([a-zA-Z0-9_]+)[ \t]*[\[&lt;&gt;=]/\1/T,types/
--regex-Scala=/^[ \t]*import[ \t]*([a-zA-Z0-9_{}., \t=&gt;]+$)/\1/i,includes/
--regex-Scala=/^[ \t]*package[ \t]*([a-zA-Z0-9_.]+$)/\1/p,packages/
</pre>
<p>Puis on va modifier le code du plugin TagBar (à priori dans ~/.vim/plugin/tagbar.vim), en rajoutant les lignes suivantes</p>
<pre class="brush: plain; title: ; notranslate">
&quot; Scala {{{3
let type_scala = {}
let type_scala.ctagstype = 'Scala'
let type_scala.kinds     = [
  \ {'short' : 'p', 'long' : 'packages',  'fold' : 1 },
  \ {'short' : 'V', 'long' : 'values',    'fold' : 0 },
  \ {'short' : 'v', 'long' : 'variables', 'fold' : 0 },
  \ {'short' : 'T', 'long' : 'types',     'fold' : 0 },
  \ {'short' : 't', 'long' : 'traits',    'fold' : 0 },
  \ {'short' : 'o', 'long' : 'objects',   'fold' : 0 },
  \ {'short' : 'a', 'long' : 'aclasses',  'fold' : 0 },
  \ {'short' : 'c', 'long' : 'classes',   'fold' : 0 },
  \ {'short' : 'r', 'long' : 'cclasses',  'fold' : 0 },
  \ {'short' : 'm', 'long' : 'methods',   'fold' : 0 }
\ ]
let type_scala.sro        = '.'
let type_scala.kind2scope = {
  \ 'T' : 'type',
  \ 't' : 'trait',
  \ 'o' : 'object',
  \ 'a' : 'abstract class',
  \ 'c' : 'class',
  \ 'r' : 'case class'
\ }
let type_scala.scope2kind = {
  \ 'type'           : 'T',
  \ 'trait'          : 't',
  \ 'object'         : 'o',
  \ 'abstract class' : 'a',
  \ 'class'          : 'c',
  \ 'case class'     : 'r'
\ }
let s:known_types.scala = type_scala
</pre>
<p>Attention, ces lignes doivent être rajoutées dans la fonction <em>function! s:InitTypes()</em></p>
<p>Et voilà &#8211; Vim est prêt pour Scala !</p>
<p>&nbsp;</p>
<p>Tiré/traduit de <a href="http://latestbuild.net/scala-ctags-and-vim-tagbar">latestbuild.net/scala-ctags-and-vim-tagbar </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/10/02/en-avant-pour-scala-avec-vim/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sauvegarder une base de donnée PostgreSQL chez&#160;Heroku</title>
		<link>http://blog.zeneffy.fr/2011/09/19/sauvegarder-une-base-de-donnee-postgresql-chez-heroku/</link>
		<comments>http://blog.zeneffy.fr/2011/09/19/sauvegarder-une-base-de-donnee-postgresql-chez-heroku/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 17:34:01 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=491</guid>
		<description><![CDATA[Heroku permet de faire très simplement des sauvegardes des bases de données de production en utilisant le module PGBackups. Il faut d&#8217;abord installer le module soit via l&#8217;IHM web , soit via la commande ((dans le répertoire de l&#8217;application) Puis simplement lancer une sauvegarde Une petite vérification s&#8217;impose: qui renvoie normalement Et finalement pour restaurer (avec b001 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.heroku.com">Heroku</a> permet de faire très simplement des sauvegardes des bases de données de production en utilisant le module <a href="http://addons.heroku.com/pgbackups">PGBackups</a>.</p>
<p>Il faut d&#8217;abord installer le module soit via l&#8217;IHM web , soit via la commande ((dans le répertoire de l&#8217;application)</p>
<pre class="brush: plain; title: ; notranslate">
heroku addons:add pgbackups
</pre>
<p>Puis simplement lancer une sauvegarde</p>
<pre class="brush: plain; title: ; notranslate">
heroku pgbackups:capture
</pre>
<p>Une petite vérification s&#8217;impose:</p>
<pre class="brush: plain; title: ; notranslate">
heroku pgbackups
</pre>
<p>qui renvoie normalement</p>
<pre class="brush: plain; title: ; notranslate">
D   | Backup Time         | Size   | Database
-----+---------------------+--------+----------------
b001 | 2011/08/18 11:08.22 | 39.2KB | SHARED_DATABASE
b002 | 2011/09/19 10:24.04 | 40.2KB | SHARED_DATABASE
</pre>
<p>Et finalement pour restaurer (avec b001 la base)</p>
<pre class="brush: plain; title: ; notranslate">
heroku pgbackups:restore DATABASE b001
</pre>
<p>Rappelez vous que la sauvegarde reste l&#8217;un des meilleurs moyens de sécuriser vos données&#8230;</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/09/19/sauvegarder-une-base-de-donnee-postgresql-chez-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacVim, Command-T et&#160;RVM</title>
		<link>http://blog.zeneffy.fr/2011/09/04/macvim-command-t-et-rvm/</link>
		<comments>http://blog.zeneffy.fr/2011/09/04/macvim-command-t-et-rvm/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 18:55:28 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=436</guid>
		<description><![CDATA[MacVim (une forme de l&#8217;éditeur VIM adaptée à MacOS) est mon éditeur de prédilection actuellement malgré de nombreux autres essais (entre autres: Textmate, Kod, Sublime Text). Il est très configurable et permet de rajouter de nombreuses fonctionnalités utiles: ici je vous parlerai du module Command-T qui permet de faire des recherches très fines et surtout pertinentes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/macvim/">MacVim</a> (une forme de l&#8217;éditeur VIM adaptée à MacOS) est mon éditeur de prédilection actuellement malgré de nombreux autres essais (entre autres: <a href="http://macromates.com/">Textmate</a>, <a href="http://kodapp.com/">Kod</a>, <a href="http://www.sublimetext.com/">Sublime Text</a>).</p>
<p>Il est très configurable et permet de rajouter de nombreuses fonctionnalités utiles: ici je vous parlerai du module <a href="https://wincent.com/products/command-t">Command-T</a> qui permet de faire des recherches très fines et surtout pertinentes à travers les répertoires et fichiers d&#8217;un projet &#8211; un screencast est disponible <a href="https://s3.amazonaws.com/s3.wincent.com/command-t/screencasts/command-t-demo.mov?width=640&amp;height=480">sur le site de l&#8217;auteur</a>.</p>
<p>Pour l&#8217;installer sur un mac avec RVM, il faut être vigilant sur la version de Ruby employée car MacVim ne compilant pas avec ruby 1.9.</p>
<p>Installation de MacVim via <a href="http://mxcl.github.com/homebrew/">homebrew</a> avec ruby 1.8.7:</p>
<pre class="brush: plain; title: ; notranslate">
rvm use system
/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.github.com/gist/323731)&quot;
brew install wget macvim
</pre>
<p>Installation de CommandT à partir de vim.org:</p>
<pre class="brush: plain; title: ; notranslate">
wget http://www.vim.org/scripts/download_script.php?src_id=15560
mvim command-t-1.2.1.vba
</pre>
<p>Puis une fois MacVim ouvert:</p>
<pre class="brush: plain; title: ; notranslate">
:so %
</pre>
<p>En sortant de MacVim:</p>
<pre class="brush: plain; title: ; notranslate">
cd /$HOME/.vim/ruby/command-t
ruby extconf.rb
make
</pre>
<p>Et voilà normalement tout fonctionne, vous pouvez utiliser la version de ruby que vous souhaitez sans problème.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/09/04/macvim-command-t-et-rvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>coding in the&#160;cloud</title>
		<link>http://blog.zeneffy.fr/2011/08/18/coding-in-the-cloud/</link>
		<comments>http://blog.zeneffy.fr/2011/08/18/coding-in-the-cloud/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 18:23:00 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=427</guid>
		<description><![CDATA[New and hot: editing source file directly with your browser is now possible on Github, thanks to the Ace editor (used on Cloud9ide) ! &#160; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="https://lh4.googleusercontent.com/-wJu-h10tlKI/Tk1YTQARPaI/AAAAAAAAGdM/XWJT04oOXh4/s144/Plain_Cloud.png" alt="" width="86" height="74" />New and hot: editing source file directly with your browser is <a href="https://github.com/blog/905-edit-like-an-ace">now possible on Github</a>, thanks to the <a href="http://ace.ajax.org/">Ace editor</a> (used on <a href="http://cloud9ide.com/">Cloud9ide</a>) !</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/08/18/coding-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Haml on&#160;Rails</title>
		<link>http://blog.zeneffy.fr/2011/07/12/haml-on-rails/</link>
		<comments>http://blog.zeneffy.fr/2011/07/12/haml-on-rails/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 19:30:54 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=424</guid>
		<description><![CDATA[Pour utiliser haml avec Ruby on Rails 3.x, il suffit d&#8217;ajouter dans le fichier GemFile puis lancer la commande bundle install et finalement ajouter dans le fichier config/application.rb (dans la classe &#171;&#160;Application &#60; Rails::Application&#160;&#187;) &#8211; chaque scaffold sera automatiquement en Haml &#160;]]></description>
			<content:encoded><![CDATA[<p>Pour utiliser <a href="http://haml-lang.com/">haml</a> avec <a href="http://rubyonrails.org/">Ruby on Rails 3.x</a>, il suffit d&#8217;ajouter dans le fichier GemFile</p>
<pre class="brush: ruby; title: ; notranslate">gem 'haml-rails'</pre>
<p>puis lancer la commande bundle install</p>
<p>et finalement ajouter</p>
<pre class="brush: ruby; title: ; notranslate">
config.generators do |g|
  g.template_engine :haml
end
</pre>
<p>dans le fichier config/application.rb (dans la classe &laquo;&nbsp;Application &lt; Rails::Application&nbsp;&raquo;) &#8211; chaque scaffold sera automatiquement en Haml</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/07/12/haml-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.js/Express sur&#160;heroku</title>
		<link>http://blog.zeneffy.fr/2011/06/27/node-jsexpress-sur-heroku/</link>
		<comments>http://blog.zeneffy.fr/2011/06/27/node-jsexpress-sur-heroku/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 20:30:26 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://blog.zeneffy.fr/?p=417</guid>
		<description><![CDATA[Je suis en train de tester node.js ces derniers jours, et notamment le framework web Express &#8211; Fan de l&#8217;hébergeur Heroku, d&#8217;autant plus depuis qu&#8217;il est possible d&#8217;avoir des applications node.js (entre autres), j&#8217;ai souhaité installer une application de test en suivant ce tutorial &#8211; et tout n&#8217;a pas fonctionné du premier coup En effet, [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis en train de tester <a href="http://nodejs.org/">node.js</a> ces derniers jours, et notamment le <a href="http://expressjs.com/">framework web Express</a> &#8211; Fan de l&#8217;hébergeur <a href="http://www.heroku.com/">Heroku</a>, d&#8217;autant plus depuis qu&#8217;il est possible d&#8217;avoir des applications <a href="http://blog.heroku.com/archives/2011/5/31/celadon_cedar/">node.js</a> (entre autres), j&#8217;ai souhaité installer une application de test en suivant <a href="http://pcoding.blogspot.com/2011/06/hebergement-nodejs-avec-heroku-celadon.html"> ce tutorial</a> &#8211; et tout n&#8217;a pas fonctionné du premier coup <img src='http://blog.zeneffy.fr/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>En effet, pour créer mon squelette d&#8217;application &laquo;&nbsp;zen-hw&nbsp;&raquo;, j&#8217;ai utilisé la commande</p>
<pre class="brush: plain; title: ; notranslate">
[julien.newton: zen-hw]$ express
</pre>
<p>qui crée par défaut une arborescence d&#8217;application Express &#8211; or par défaut le fichier app.js lancera la webapp via la commande</p>
<pre class="brush: plain; title: ; notranslate">
app.listen(3000);
</pre>
<p>qui fonctionne parfaitement en local (sauf si <a href="http://pow.cx/">pow</a> est installé, mais c&#8217;est une autre histoire) mais pas sur heroku, avec un beau crash de l&#8217;application visible via:</p>
<pre class="brush: plain; title: ; notranslate">
[julien.newton: zen-hw]$ heroku ps
Process       State               Command
------------  ------------------  ------------------------------
web.1         crashed for 8s      node app.js
</pre>
<p>Pour éviter ce point, il suffit de modifier app.js pour chaque application Express créée via la commande <em>express</em> pour utiliser <em>process.env.PORT</em>, ce qui donne à la fin du fichier:</p>
<pre class="brush: plain; title: ; notranslate">
var port = process.env.PORT || 3210;
app.listen(port, function(){
  console.log(&quot;Listening on &quot; + port);
});
</pre>
<p>et voilà l&#8217;application fonctionne sous heroku !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zeneffy.fr/2011/06/27/node-jsexpress-sur-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

