<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Cyberdelia</title><link>http://cyberdelia.tryphon.org/blog/</link><description>Captured (A)live</description><language>fr-fr</language><lastBuildDate>Sat, 09 Aug 2008 21:17:17 +0100</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cyberdelia/articles" type="application/rss+xml" /><item><title>Peafowl</title><link>http://feeds.feedburner.com/~r/cyberdelia/articles/~3/360563744/</link><description>&lt;p&gt;&lt;img src="http://people.tryphon.org/~tim/images/peafowl.jpg" title="Peafowl Photography" alt="Peafowl Photography" /&gt;&lt;/p&gt;

&lt;p&gt;You might already have heard of &lt;a href="http://rubyforge.org/projects/starling/" title="Starling"&gt;Starling&lt;/a&gt;, a light-weight persistent queue server that speaks the &lt;a href="http://www.danga.com/memcached/" title="Memcached"&gt;memcache&lt;/a&gt; protocol and that powers &lt;a href="http://twitter.com" title="Twitter"&gt;Twitter&lt;/a&gt; (&lt;em&gt;when it&amp;#8217;s up&lt;/em&gt;).&lt;br /&gt;
Now, let me introduce to you, &lt;a href="http://code.google.com/p/peafowl/" title="Peafowl"&gt;Peafowl&lt;/a&gt;, a Starling port in &lt;a href="http://www.python.org" title="Python"&gt;python&lt;/a&gt;, fully compatible with Starling queue log.&lt;/p&gt;

&lt;p&gt;You can use it if you can&amp;#8217;t bear &lt;a href="http://www.ruby-lang.org/" title="Ruby"&gt;ruby&lt;/a&gt;, or  just by using a memcache client to access starling/peafowl server within your python code.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cyberdelia/articles/~4/360563744" height="1" width="1"/&gt;</description><pubDate>Sat, 09 Aug 2008 21:17:17 +0100</pubDate><guid isPermaLink="false">http://cyberdelia.tryphon.org/blog/2008/08/09/peafowl/</guid><feedburner:origLink>http://cyberdelia.tryphon.org/blog/2008/08/09/peafowl/</feedburner:origLink></item><item><title>Próxima Estación: Esperanzah!</title><link>http://feeds.feedburner.com/~r/cyberdelia/articles/~3/274157259/</link><description>&lt;p&gt;Depuis quelques mois, je cherche comment résumer, comme l&amp;#8217;ont &lt;a href="http://blog.tryphon.org/alban/archives/2007/08/11/cetait-radio-esperanzah-2007/" title="C’était Radio Esperanzah! 2007"&gt;déjà fait certains&lt;/a&gt;, mes aventures pendant le dernier &lt;a href="http://2007.esperanzah.be" title="Festival Esperanzah!"&gt;festival Esperanzah!&lt;/a&gt;. Après avoir écrit un roman d&amp;#8217;absurdité, je me suis rappelé que d&amp;#8217;autres l&amp;#8217;avaient déjà fait pour moi :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bravo à l&amp;#8217;équipe pour ce site simple, pratique et clair dans son accès et qui regorge d&amp;#8217;informations sur tous les artistes et les sujets qui nous intéressent. Cela permet à tous ceux qui n&amp;#8217;ont pu se déplacer de partager ce week-end à l&amp;#8217;Abbaye&amp;#8230; Merci !! &lt;strong&gt;&amp;mdash; Gilbert&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;Je vous félicite pour l&amp;#8217;accessibilité de votre site! Je suis non-voyante et j&amp;#8217;utilise Jaws, un lecteur d&amp;#8217;écran, pour accéder à Internet. Votre site est très clair et très accessible. Un ruban de plus à accrocher au chapeau prestigieux de l&amp;#8217;équipe d&amp;#8217;Esperanzah! &lt;strong&gt;&amp;mdash; Séverine&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Et, visiblement, personne n&amp;#8217;a songé à nous envoyer des messages de mécontentement et les records de fréquentation semblent confirmer l&amp;#8217;état de fait. Même si le projet est loin d&amp;#8217;être perfectible, son objectif était de proposer autre chose que les quelques pages d&amp;#8217;information et d&amp;#8217;actualité sur le festival. Après tout le festival Esperanzah! est loin d&amp;#8217;être un festival qui n&amp;#8217;a rien à dire et qui ne se dote pas de &lt;a href="http://www.autres-mondes.org/" title="Autres Mondes"&gt;toute une équipe&lt;/a&gt; pour le crier haut et fort sur &lt;a href="http://2007.esperanzah.be/radio/" title="Radio Esperanzah!"&gt;la bande FM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alors l&amp;#8217;accent a été mis sur la synergie entre les contenus : chaque artiste ou association est lié aux articles, photos, sons le concernant. Ainsi, si vous tombez sur la page d&amp;#8217;un artiste, vous pourrez retrouver toutes ses interviews, toutes ses photos en un clin d&amp;#8217;oeil.&lt;/p&gt;

&lt;p&gt;Pour permettre à tous de ne pas perdre une miette du festival, chacun des nombreux événements qui se déroule pendant le festival (concert, conférence, film, etc.) pouvait être suivi sur le site web heure par heure et des alertes pour les prochains événements était diffusée via &lt;a href="http://twitter.com/esperanzah" title="Twitter : Esperanzah!"&gt;twitter&lt;/a&gt;. Même si ce dernier service a fait un gros flop, il a très bien servi en interne!&lt;/p&gt;

&lt;p&gt;Au final, le site web a été un succès tout autant que le festival (sold-out plusieurs jours de suite) et tout cela est dû au travail d&amp;#8217;un tas de gens :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bastien pour ses webcams et l&amp;#8217;infrastructure réseau.&lt;/li&gt;
&lt;li&gt;Alice, Vincent, &lt;a href="http://www.myspace.com/lakrabarna" title="La K-Rabarna"&gt;Delphine &amp;amp; Nadège&lt;/a&gt; pour avoir suivi et retranscrit l&amp;#8217;antenne de Radio Esperanzah.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.tryphon.org/alban/" title="Alban's Blog"&gt;Alban&lt;/a&gt; pour m&amp;#8217;avoir fait confiance et pour la gestion de projet.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.djangoproject.com" title="Django"&gt;Django&lt;/a&gt; pour avoir tenu la charge et m&amp;#8217;avoir simplifié la vie!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et vous pouvez toujours retrouver &lt;a href="http://2007.esperanzah.be/" title="Esperanzah! : Archives 2007"&gt;les archives&lt;/a&gt; et &lt;a href="http://2007.epseranzah.be/photos/" title="Esperanzah! : Photos 2007"&gt;les photos&lt;/a&gt; de cette édition 2007 sur le web.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cyberdelia/articles/~4/274157259" height="1" width="1"/&gt;</description><pubDate>Sun, 20 Apr 2008 18:49:09 +0100</pubDate><guid isPermaLink="false">http://cyberdelia.tryphon.org/blog/2008/04/20/proxima-estacion-esperanzah/</guid><feedburner:origLink>http://cyberdelia.tryphon.org/blog/2008/04/20/proxima-estacion-esperanzah/</feedburner:origLink></item><item><title>Django &amp;amp; Capistrano</title><link>http://feeds.feedburner.com/~r/cyberdelia/articles/~3/183017752/</link><description>&lt;p&gt;One of the major &lt;a href="http://www.djangoproject.com/" title="Django Web Framework"&gt;Django&lt;/a&gt;&amp;#8216;s drawback for a project like &lt;a href="http://paperblog.fr" title="Paperblog"&gt;Paperblog&lt;/a&gt; is the lack of automated deployement tools, like what &lt;a href="http://www.capify.org" title="Capistrano"&gt;Capistrano&lt;/a&gt; is for &lt;a href="http://www.rubyonrails.com" title="Ruby On Rails"&gt;Rails&lt;/a&gt;. But Capistrano is designed to be flexible, this is how to get it able to deploy Django project.&lt;/p&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;p&gt;The best way to install Capistrano is to use rubygems :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;sudo apt-get install rubygems ruby ruby-dev
sudo gem install capistrano fastthread thermios&lt;/code&gt;
&lt;/blockquote&gt;  

&lt;h3&gt;Recipe&lt;/h3&gt;

&lt;p&gt;Before going a step further, this is basically how Capistrano works. Capistrano is watching for a file named &lt;strong&gt;&lt;em&gt;Capfile&lt;/em&gt;&lt;/strong&gt;  in the root directory of your project.&lt;br /&gt;
This file contains all the recipes of your deploy, each recipes is composed of simple &lt;em&gt;task&lt;/em&gt; that you can regroup, execute only on a certain kind of machine, render atomic, etc. For example :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;namespace :deploy do
  desc "Restarts your application"
  task :restart do
    sudo "/etc/init.d/apache2 reload"
  end
end&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;Capistrano offers us already written tasks to deploy application from a subversion repository on &lt;em&gt;n&lt;/em&gt; servers with distincts rôles (app, web, db, etc.).&lt;br /&gt;
Some of them suppose that your are deploying Rails apps, so we only have to redefine them in order to make Capistrano able to deploy our sweet Django project.&lt;/p&gt;

&lt;h3&gt;Capify&lt;/h3&gt;

&lt;p&gt;To &lt;em&gt;capify&lt;/em&gt; our Django project, we just need to create un &lt;em&gt;Capfile&lt;/em&gt; file in the root directory of our project and add this line in order to import all predefined Capistrano tasks :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;load 'deploy' if respond_to?(:namespace)&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before going further, take a look at the Capistrano&amp;#8217;s &lt;a href="http://manuals.rubyonrails.com/read/book/17" title="Capistrano &amp;amp; Rails"&gt;predefined tasks documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First of all, we need to declare some essential variables like : the subversion repository&amp;#8217;s url, the name of our project, define role for each server, etc. Most of them are already documented, once again, take a look at the Rails documentation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;#REQUIRED VARIABLES
set :application, "myapp"
set :repository, "http://dev.example.com/myapp/trunk"
#ROLES
role :app, "production.example.com"
role :web, "production.example.com"
role :db,  "production.example.com", :primary =&gt; true
#OPTIONAL VARIABLES
set :keep_releases, 3
set :deploy_to, "/var/www/myapp/"
set :group_writable, true&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;We finally just need to redefine task in order to feed our needs and our project. Let&amp;#8217;s start by the obvious, task for start and restart :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;namespace :deploy do
  desc "Restarts your application"
  task :restart, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
    sudo "/etc/init.d/apache2 reload"
  end
  desc "Start the application servers"
  task :start, :roles =&gt; :app do
    sudo "/etc/init.d/apache2 start"
  end
end&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;And then we need to adapt these rules for Django, don&amp;#8217;t be afraid to change things to reflect your very own project or to add other task :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;namespace :deploy do
  after 'deploy:symlink', 'deploy:files'
  desc "Install settings and media files"
  task :files, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
   run "ln -nfs #{shared_path}/system/settings.py #{release_path}/settings.py"
   run "ln -nfs #{shared_path}/media/ #{release_path}/media"
   run "ln -nfs #{shared_path}/cache/ #{release_path}/cache"
  end
  desc "[internal] Touches up the released code"
  task :finalize_update, :except =&gt; { :no_release =&gt; true } do
   run "chmod -R g+w #{latest_release}" if fetch(:group_writable, true)
  end
  desc "Prepares one or more servers for deployment"
  task :setup, :except =&gt; { :no_release =&gt; true } do
   dirs = [deploy_to, releases_path, shared_path]
   dirs += %w(system media cache).map { |d| File.join(shared_path, d) }
   run "umask 02 &amp;amp;&amp;amp; mkdir -p #{dirs.join(' ')}"
  end
  desc "Deploys and starts a `cold' application"
  task :cold do
   update
   start
  end
end&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;These tasks create 3 directory that will be keep between each deploy :&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;&lt;strong&gt;media&lt;/strong&gt; : is our MEDIA_ROOT &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;system&lt;/strong&gt; : will contain your settings.py &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;cache&lt;/strong&gt; : is our cache directory (in case you use django file cache) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The directory &amp;#8221;&lt;em&gt;/var/www/myapp/shared/&lt;/em&gt;&amp;#8221; will contains every file that are independant from your code or specific to your server. And each file will be linked to the current deployed version via a symlink.&lt;br /&gt;
The directory &amp;#8221;&lt;em&gt;/var/ww/myapp/current/&lt;/em&gt;&amp;#8221; is pointing to the latest  &amp;#8221;&lt;em&gt;release&lt;/em&gt;&amp;#8221; of your project.&lt;/p&gt;

&lt;p&gt;You are ready to deploy your Django project using Capistrano :&lt;/p&gt;

&lt;blockquote&gt;
&lt;code&gt;cap deploy&lt;/code&gt;
&lt;/blockquote&gt;

&lt;p&gt;To make your life easier, this is a &lt;em&gt;Capfile&lt;/em&gt; ready to server with some extras inside !&lt;/p&gt;

&lt;p class="download"&gt;Download the &lt;a href="http://cyberdelia.tryphon.org/media/assets/Capfile" title="Capfile"&gt;Capfile&lt;/a&gt; example.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cyberdelia/articles/~4/183017752" height="1" width="1"/&gt;</description><pubDate>Sat, 27 Oct 2007 19:08:55 +0100</pubDate><guid isPermaLink="false">http://cyberdelia.tryphon.org/blog/2007/10/27/django-capistrano/</guid><feedburner:origLink>http://cyberdelia.tryphon.org/blog/2007/10/27/django-capistrano/</feedburner:origLink></item><item><title>When October comes</title><link>http://feeds.feedburner.com/~r/cyberdelia/articles/~3/183017753/</link><description>&lt;p&gt;Octobre s&amp;#8217;annonce déjà et avec lui, comme chaque année, le &lt;a href="http://www.nancyjazzpulsations.com" title="Nancy Jazz Pulsations"&gt;Nancy Jazz Pulsations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Au programme de ce qu&amp;#8217;il ne faut pas rater :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Karzapp&amp;#8217; 4tet&lt;/strong&gt;, le 10 octobre au &lt;em&gt;Pichon Jazz Club&lt;/em&gt; :  Rater ces 4 là, ce serait passer à côté de gai luron déjanté qui joue de Jazz et de Jam.&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Amp Fiddler&lt;/strong&gt;, &lt;strong&gt;Cinematic Orchestra&lt;/strong&gt;, le 11 octobre à 20h30 au &lt;em&gt;Chapiteau de la Pépinière&lt;/em&gt; : Une bonne soirée entre funk et electro.&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bombes 2 bal&lt;/strong&gt;,  &lt;strong&gt;Les Doigts de l&amp;#8217;Homme&lt;/strong&gt;, le 14 octobre à 14h00 au &lt;em&gt;Chapiteau de la Pépinière&lt;/em&gt; : Les copines des Fabulous avec une pointe de Jazz Manouche, ça pourrait plaire à &lt;a href="http://blog.tryphon.org/freakout/" title="Freakout"&gt;certains&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hocus Pocus&lt;/strong&gt;, le 16 octobre à 20h30 au &lt;em&gt;Chapiteau de la Pépinière&lt;/em&gt; : Comment Hocus Pocus à Nancy ? Réservez-moi 2 places, l&amp;#8217;autre c&amp;#8217;est pour Gaël !&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiken Jah Fakoly&lt;/strong&gt; , le 19 octobre à 20h00 au &lt;em&gt;Chapiteau de la Pépinière&lt;/em&gt; : Pas besoin de commentaires.&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sharon Jones&lt;/strong&gt;, &lt;strong&gt;Fred Wesley&lt;/strong&gt;, le 20 octobre à 20h00 au &lt;em&gt;Chapiteau de la Pépinière&lt;/em&gt; : De la soul, de la funk et une pointe de jazz.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/cyberdelia/articles/~4/183017753" height="1" width="1"/&gt;</description><pubDate>Sun, 16 Sep 2007 19:43:22 +0100</pubDate><guid isPermaLink="false">http://cyberdelia.tryphon.org/blog/2007/09/16/when-october-comes/</guid><feedburner:origLink>http://cyberdelia.tryphon.org/blog/2007/09/16/when-october-comes/</feedburner:origLink></item><item><title>New Way, New Life</title><link>http://feeds.feedburner.com/~r/cyberdelia/articles/~3/183017754/</link><description>&lt;p&gt;Changements après changements, on se retrouve dans une nouvelle ville, une nouvelle voie, une nouvelle vie.&lt;br /&gt;
Evénements après évenements, on se surprends, on essaye d&amp;#8217;éviter les erreurs qu&amp;#8217;on a fait dans le passé, on regrette déjà celle qu&amp;#8217;on croit venir de faire et on attends le prochain avec impatience.&lt;br /&gt;
Jour après jour, on découvre sa nouvelle vie, ces nouveaux lieux, ces nouveaux gens et ceux qu&amp;#8217;on avait négligé.&lt;br /&gt;
Pour au final, ne faire que constater qu&amp;#8217;on a grandit, que c&amp;#8217;est toujours vous et que c&amp;#8217;est toujours elle.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/cyberdelia/articles/~4/183017754" height="1" width="1"/&gt;</description><pubDate>Sun, 09 Sep 2007 18:20:00 +0100</pubDate><guid isPermaLink="false">http://cyberdelia.tryphon.org/blog/2007/09/09/new-way-new-life/</guid><feedburner:origLink>http://cyberdelia.tryphon.org/blog/2007/09/09/new-way-new-life/</feedburner:origLink></item></channel></rss>
