<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Django, Python, Linux, PHP, Open Source  …</description><title>Technical articles</title><generator>Tumblr (3.0; @yourlabs)</generator><link>http://blog.yourlabs.org/</link><item><title>Offre de boulot sympa pour hacker junior</title><description>&lt;p&gt;Salut a tous, et particulièrement aux drupalistas et autres artisans du web que ça peut intéresser. Pour ceux qui ne me connaissent pas, voici mon &lt;a href="http://stackoverflow.com/users/136008/jpic" target="_blank"&gt;profil sur StackOverflow&lt;/a&gt;. Pour ceux qui ne sont pas sur de bien connaitre le mot hacker, ou qui pensent carrément que je fais une erreur en employant ce mot, merci de lire &lt;a href="http://www.catb.org/esr/faqs/hacker-howto.html" target="_blank"&gt;hacker howto&lt;/a&gt; par &lt;a href="http://en.wikipedia.org/wiki/Eric_S._Raymond" target="_blank"&gt;Eric Steven Raymond&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Je cherche quelqu&amp;#8217;un de débrouillard en terme de création de sites webs pour me remplacer, avec un minimum d’expérience en drupal - que je ne connais que depuis 2 mois donc je suis facilement remplaçable&amp;#8230; Ce job est parfait pour quelqu&amp;#8217;un d&amp;#8217;un qui n&amp;#8217;a pas peur des défis et qui prend son métier très à cœur un peu comme moi.&lt;/p&gt;

&lt;p&gt;Il s&amp;#8217;agit d&amp;#8217;une startup parisienne très sympa, pour laquelle je travailles depuis principalement Valencia (Espagne) oú j&amp;#8217;ai encore un appartement.&lt;/p&gt;

&lt;p&gt;Bon payeurs, je travaille pour eux depuis Mars 2010. J&amp;#8217;ai toujours été payé. Comme c&amp;#8217;est bien payé et que je suis un excellent gestionnaire et que je vie dans la campagne en Espagne, il m&amp;#8217;est arrivé d&amp;#8217;encaisser 4 mois de salaires d&amp;#8217;un coup, par choix.&lt;/p&gt;

&lt;p&gt;Il y a des possibilités d&amp;#8217;évolution. C&amp;#8217;est payé entre 1800 et 2800 par mois selon les missions et l’expérience. Les collègues sont des gens exceptionnels avec des petits défauts bien sur comme tout le monde &amp;#8230; mais surtout de grandes qualités&amp;#160;! Il suffit d’être un peu ouvert d&amp;#8217;esprit.&lt;/p&gt;

&lt;p&gt;L&amp;#8217;emploi vient avec un Asus Zenbook qui appartient au client, c&amp;#8217;est un ultra-portable dernier cri:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;8Gb de ram,&lt;/li&gt;
&lt;li&gt;256Gb de SSD,&lt;/li&gt;
&lt;li&gt;quad core i7,&lt;/li&gt;
&lt;li&gt;écran meilleur que HD,&lt;/li&gt;
&lt;li&gt;5 heures d&amp;#8217;autonomie,&lt;/li&gt;
&lt;li&gt;ultra fin, ultra léger, ultra portable.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;C&amp;#8217;est en télétravail et à plein temps. De plus, il y a des voyages à Paris presque tout frais payés plusieurs fois par an.&lt;/p&gt;

&lt;p&gt;Je mets ma carierre en suspens pour des raisons personnelles. Je n&amp;#8217;aurais plus du tout le temps de travailler sur internet.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/50309801396</link><guid>http://blog.yourlabs.org/post/50309801396</guid><pubDate>Mon, 13 May 2013 03:58:00 +0200</pubDate><category>job</category></item><item><title>Open Source Windows NT</title><description>&lt;p&gt;Seems like &lt;a href="http://www.reactos.org/" target="_blank"&gt;ReactOS&lt;/a&gt; is rapidely growing.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/46940165012</link><guid>http://blog.yourlabs.org/post/46940165012</guid><pubDate>Tue, 02 Apr 2013 17:28:16 +0200</pubDate><category>windows</category><category>os</category></item><item><title>Drupal 7 with nginx and uwsgi-php example configuration</title><description>&lt;p&gt;&lt;a href="http://drupal.org" target="_blank"&gt;Drupal&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" target="_blank"&gt;CMS&lt;/a&gt; written in &lt;a href="http://php.net" target="_blank"&gt;PHP&lt;/a&gt; which supports &lt;a href="http://postgres.org" target="_blank"&gt;PostgreSQL&lt;/a&gt;. It is made for &lt;a href="http://php.net/mod_php" target="_blank"&gt;mod_php&lt;/a&gt; and &lt;a href="http://apache.org" target="_blank"&gt;Apache&lt;/a&gt;, thought it works with &lt;a href="http://projects.unbit.it/uwsgi/" target="_blank"&gt;uWGSI&lt;/a&gt; and &lt;a href="http://nginx.org" target="_blank"&gt;Nginx&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When you have tried uWGSI you know why you want this.&lt;/p&gt;

&lt;p&gt;Example nginx configuration:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;server {
    server_name drupal.example.com;
    root /srv/drupal/www/;

    error_log /tmp/nginx_drupal.log;

    index index.php index.html;

    location / { 
        try_files $uri @rewrite;
    }   

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }   

    location ~* files/styles {
        access_log off;
        expires 30d;
        try_files $uri @rewrite;
    }   

    location ~ .php$ {
        include uwsgi_params;
        uwsgi_modifier1 14; 
        uwsgi_pass unix:/tmp/uwsgi_drupal.sock;
    }   
}   
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And an example uwsgi configuration:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[uwsgi]
socket=/tmp/uwsgi_drupal.sock
pidfile=/tmp/uwsgi_drupal.pid
daemonize=/var/log/uwsgi/drupal.log
plugins=php

chdir=/srv/drupal
cheaper=4
close-on-exec=1
harakiri=360
max-requests=128
processes=8
master=1
uid=drupal
gid=drupal
chmod=666
log-5xx=1
vacuum=1
post-buffering=8192
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.yourlabs.org/post/46416407809</link><guid>http://blog.yourlabs.org/post/46416407809</guid><pubDate>Wed, 27 Mar 2013 13:30:00 +0100</pubDate><category>linux</category><category>php</category><category>uwsgi</category><category>nginx</category></item><item><title>Partition your data with django-parting</title><description>&lt;p&gt;Just stumbled on &lt;a href="https://github.com/danfairs/django-parting" target="_blank"&gt;django-parting&lt;/a&gt; which provides a nice API to partition your data.&lt;/p&gt;

&lt;p&gt;For those not familiar with data partitioning, I recommend reading &lt;a href="http://dev.mysql.com/tech-resources/articles/partitioning.html" target="_blank"&gt;partitionning on mysql&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/46344388294</link><guid>http://blog.yourlabs.org/post/46344388294</guid><pubDate>Tue, 26 Mar 2013 17:44:16 +0100</pubDate><category>django</category><category>python</category></item><item><title>PyCon 2013 videos are online !</title><description>&lt;p&gt;Check &lt;a href="http://pyvideo.org/category/33/pycon-us-2013" target="_blank"&gt;them&lt;/a&gt; out.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/45919742258</link><guid>http://blog.yourlabs.org/post/45919742258</guid><pubDate>Thu, 21 Mar 2013 17:46:58 +0100</pubDate><category>python</category></item><item><title>First 5 Minutes Troubleshooting A Server</title><description>&lt;p&gt;A very nice article about &lt;a href="http://devo.ps/blog/2013/03/06/troubleshooting-5minutes-on-a-yet-unknown-box.html" target="_blank"&gt;troubleshooting a server&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/45190883341</link><guid>http://blog.yourlabs.org/post/45190883341</guid><pubDate>Tue, 12 Mar 2013 15:59:26 +0100</pubDate><category>linux</category></item><item><title>PostgreSQL for beginners: Initial configuration</title><description>&lt;p&gt;Those are notes taken from the talk &lt;a href="http://klewel.com/conferences/djangocon-2012/index.php?talkID=3" target="_blank"&gt;&amp;#8220;PostgreSQL when it is not
your job&amp;#8221;&lt;/a&gt; by
&lt;a href="http://thebuild.com/blog/" target="_blank"&gt;Christophe Pettus&lt;/a&gt; from 
&lt;a href="http://www.pgexperts.com/" target="_blank"&gt;PostgreSQL Experts Inc.&lt;/a&gt; at 
&lt;a href="http://klewel.com/conferences/djangocon-2012/" target="_blank"&gt;DjangoCon Europe 2012&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This article describes how to make a basic PostgreSQL configuration:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;logging,&lt;/li&gt;
&lt;li&gt;memory,&lt;/li&gt;
&lt;li&gt;checkpoints,&lt;/li&gt;
&lt;li&gt;planner.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Note: this article is mostly a transcript from the talk by Christophe Pettus:
so send all the cookies to him. Thanks&amp;#160;!&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s around 12 configuration options and you&amp;#8217;re done.&lt;/p&gt;

&lt;h3&gt;Logging&lt;/h3&gt;

&lt;p&gt;Starting with logging is a good idea because it&amp;#8217;s the best way of getting
information for configuring the other settings.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;be generous with logging; it&amp;#8217;s very low-impact on the system,&lt;/li&gt;
&lt;li&gt;it&amp;#8217;s your best source of information for finding performance problems&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Where to log&lt;/h4&gt;

&lt;p&gt;Three options:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;syslog, if you have a syslog infrastructure you like already,&lt;/li&gt;
&lt;li&gt;standard format to files - if you&amp;#8217;re using tools that need standard format,&lt;/li&gt;
&lt;li&gt;otherwise, CSV format to files,&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;What to log&amp;#160;?&lt;/h4&gt;

&lt;p&gt;Christophe Pettus recommends this configuration, which you can copy and paste
in your postgresql.conf:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;log_destination = 'csvlog'
log_directory = 'pg_log
# enable file rotator
logging_collector = on
log_filename = 'postgres-%Y-%m-%d_%H%M%S'
log_rotation_age = 1d
log_retation_size = 1GB
# log statements that take more than 250ms
log_min_duration_statement = 250ms
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Memory configuration&lt;/h3&gt;

&lt;p&gt;Three things you have to tweak:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;shared_buffers,&lt;/li&gt;
&lt;li&gt;work_mem,&lt;/li&gt;
&lt;li&gt;maintenance_work_mem,&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;shared_buffers&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;below 2GB of RAM, set to 20% of total system memory,&lt;/li&gt;
&lt;li&gt;below 32GB, set to 25% of total system memory,&lt;/li&gt;
&lt;li&gt;avec 32GB, set to 8GB,&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;work_mem&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;start low: 32-64MB,&lt;/li&gt;
&lt;li&gt;then wait until there is some server load (simulated or real),&lt;/li&gt;
&lt;li&gt;look for &amp;#8216;temporary file&amp;#8217; lines in logs,&lt;/li&gt;
&lt;li&gt;it will say &amp;#8220;I&amp;#8217;m creating temporary file of this size&amp;#8221;,&lt;/li&gt;
&lt;li&gt;set work_mem to 2-3x the largest temp file you see.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This can be a &lt;strong&gt;huge&lt;/strong&gt; spped-up if set properly&amp;#160;! This is probably &lt;strong&gt;the&lt;/strong&gt;
setting that has the most impact on postgresql performance&amp;#160;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But&lt;/strong&gt; if you find yourself setting this super high like 8GB, you probably
don&amp;#8217;t want to set it that high. Because every time someone does an operation
in postgres like a SORT, it could potentially use that amount of memory per
planner.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re having problems of memory exhaustion problems, this is the best
setting to back off.&lt;/p&gt;

&lt;h4&gt;maintenance_work_meme&lt;/h4&gt;

&lt;p&gt;This is the amount of memory that PostgreSQL uses for indexing or vacuum
operations.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;10% of system memory, up to 1GB,&lt;/li&gt;
&lt;li&gt;Maybe even higher if you are having VACUUM problems,&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;effective_cache_size&lt;/h4&gt;

&lt;p&gt;Unlike other parameters we&amp;#8217;ve seen, this one won&amp;#8217;t actually allocate any
memory.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;set to the amount of file system cache available,&lt;/li&gt;
&lt;li&gt;if you don&amp;#8217;t know, set it to 50% of total system memory,&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Checkpoints&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;A checkpoint is a complete flush of dirty buffers to disk.&lt;/li&gt;
&lt;li&gt;Potentially a lot of I/O (Input/Output),&lt;/li&gt;
&lt;li&gt;Done when the first of two thresholds are hit:

&lt;ul&gt;&lt;li&gt;A particular number of WAL (Write-Ahead-Log) segments have been written &amp;#8230;
basically you don&amp;#8217;t have to worry about that, it&amp;#8217;s when a certain amount of
database activity has happened.&lt;/li&gt;
&lt;li&gt;A timeout occurs.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Settings part I&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;# that's the right value according to Chripstophe
wal_buffers = 16MB
checkpoint_completion_target = 0.9
checkpoint_timeout = 10m-30m, # Depends on the restart time
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The trade off about checkpoint_timeout is: the higher it goes, you&amp;#8217;ll generally
get better performance, but the longer it will take postgresql to restart after
a crash.&lt;/p&gt;

&lt;h4&gt;Settings part II&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;Look for checkpoint entries in the logs&lt;/li&gt;
&lt;li&gt;Is it happening more often than checkpoint_timeout&amp;#160;?&lt;/li&gt;
&lt;li&gt;Then adjust checkpoint_segments so that checkpoints happen due to
timeouts rather than filling segments,&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Settings part III, warnings&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;The WAL can take up to 3&lt;em&gt;16MB&lt;/em&gt;checkpoint_segments on disk, so the higher that
number goes the more space on disk it will be using &amp;#8230; but on modern disks
it&amp;#8217;s not really that much disk,&lt;/li&gt;
&lt;li&gt;Restarting PostgreSQL can take up to checkpoint_timeout (but usually less,
like 20% of that),&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Planner settings&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;effective_io_concurrency, set to the number of I/O channels; otherwise ignore
it. For example if you have a stack of hard drives or an SSD drive that has
32 channels then set it to the number of channels.&lt;/li&gt;
&lt;li&gt;random_page_cost, 3.0 for a typical RAID10 array, 2.0 for a SAN, 1.1 for
Amazon EBS, else don&amp;#8217;t tweak it.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.yourlabs.org/post/44763016655</link><guid>http://blog.yourlabs.org/post/44763016655</guid><pubDate>Thu, 07 Mar 2013 05:21:00 +0100</pubDate><category>postgresql</category><category>linux</category></item><item><title>Foundation 4 is out: a nice Twitter Bootstrap alternative</title><description>&lt;p&gt;The &lt;a href="http://zurb.com/article/1173/foundation-4-is-here-the-smartest-foundat" target="_blank"&gt;new brew of Foundation 4&lt;/a&gt; is out, focusing on mobile first. Worth trying.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/44287391803</link><guid>http://blog.yourlabs.org/post/44287391803</guid><pubDate>Fri, 01 Mar 2013 11:48:52 +0100</pubDate><category>html</category><category>css</category></item><item><title>dropzone.js: nice jQuery plugin for file uploads</title><description>&lt;p&gt;&lt;a href="http://www.dropzonejs.com/" target="_blank"&gt;dropzone.js&lt;/a&gt; is an open source library that provides drag&amp;#8217;n&amp;#8217;drop file uploads with image previews&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43718744608</link><guid>http://blog.yourlabs.org/post/43718744608</guid><pubDate>Fri, 22 Feb 2013 13:30:33 +0100</pubDate><category>javascript</category><category>jquery</category></item><item><title>Enable global site packages in an existing virtualenv</title><description>&lt;p&gt;Nowadays, virtualenv uses &lt;code&gt;--no-site-packages&lt;/code&gt; by default. This means that
the created virtualenv will not access global site-packages modules ie.
&lt;code&gt;/usr/lib/python2.7/site-packages/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To enable global site-packages again, just remove this file::&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;your_env/lib/python2.7/no-global-site-packages.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Why would you do that&amp;#160;?&lt;/p&gt;

&lt;p&gt;Some modules are complicated to install (xpyb) or take too much time to compile
(pyqt). Using the distro packages can be pretty useful&amp;#160;!&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43640708845</link><guid>http://blog.yourlabs.org/post/43640708845</guid><pubDate>Thu, 21 Feb 2013 13:30:40 +0100</pubDate><category>python</category><category>virtualenv</category></item><item><title>There's no magic: virtualenv for beginners</title><description>&lt;p&gt;&lt;a href="https://github.com/akaptur" target="_blank"&gt;Allison&lt;/a&gt; from &lt;a href="https://www.hackerschool.com/" target="_blank"&gt;hacker school&lt;/a&gt; published an interesting article about &lt;a href="https://www.hackerschool.com/blog/14-there-is-no-magic-virtualenv-edition" target="_blank"&gt;virtualenv for beginners&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43561523676</link><guid>http://blog.yourlabs.org/post/43561523676</guid><pubDate>Wed, 20 Feb 2013 13:30:29 +0100</pubDate><category>python</category></item><item><title>Django security releases: 1.5rc2, 1.4.4, 1.3.5</title><description>&lt;p&gt;Please &lt;a href="https://www.djangoproject.com/weblog/2013/feb/19/security/" target="_blank"&gt;upgrade&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43557058623</link><guid>http://blog.yourlabs.org/post/43557058623</guid><pubDate>Wed, 20 Feb 2013 10:38:15 +0100</pubDate><category>django</category></item><item><title>Intel's 6-year-late copy of PaX's UDEREF (Sep 7 2012)</title><description>&lt;p&gt;TL;DR: Intel implements UDEREF equivalent 6 years after PaX, PaX will make use of it on amd64 for improved performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://forums.grsecurity.net/viewtopic.php?f=7&amp;amp;t=3046" target="_blank"&gt;Read article &amp;#8230;&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43481805748</link><guid>http://blog.yourlabs.org/post/43481805748</guid><pubDate>Tue, 19 Feb 2013 13:30:43 +0100</pubDate><category>linux</category></item><item><title>Linux 3.8 was released on Mon, 18 Feb 2013.</title><description>&lt;p&gt;Linux 3.8 was &lt;a href="http://kernelnewbies.org/LinuxChanges" target="_blank"&gt;released&lt;/a&gt;&amp;#160;!&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43475631284</link><guid>http://blog.yourlabs.org/post/43475631284</guid><pubDate>Tue, 19 Feb 2013 09:38:26 +0100</pubDate><category>linux</category></item><item><title>SourceTree: the git GUI that might work for windows users</title><description>&lt;p&gt;&lt;a href="http://sourcetreeapp.com/" target="_blank"&gt;SourceTree&lt;/a&gt; is a free client for Mercurial and Git. The &lt;a href="http://blog.sourcetreeapp.com/2013/02/14/sourcetree-for-windows-beta-signup/" target="_blank"&gt;windows release has been announced&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43395008017</link><guid>http://blog.yourlabs.org/post/43395008017</guid><pubDate>Mon, 18 Feb 2013 13:30:32 +0100</pubDate><category>windows</category></item><item><title>OpenVim interactive online guide to Vim</title><description>&lt;p&gt;&lt;a href="http://vim.org" target="_blank"&gt;Vim&lt;/a&gt; is a great text and code editor for command line interface. &lt;a href="http://www.openvim.com/" target="_blank"&gt;OpenVim&lt;/a&gt; presents an &lt;a href="http://www.openvim.com/tutorial.html" target="_blank"&gt;interactive tutorial&lt;/a&gt; which seems nice for new beginners.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43349420551</link><guid>http://blog.yourlabs.org/post/43349420551</guid><pubDate>Mon, 18 Feb 2013 00:02:50 +0100</pubDate><category>linux</category></item><item><title>Jedi-vim/rope takes too long</title><description>&lt;p&gt;For those &lt;a href="https://github.com/jpic/dotfiles/tree/master/bundle" target="_blank"&gt;using&lt;/a&gt; &lt;a href="https://github.com/davidhalter/jedi-vim" target="_blank"&gt;jedi-vim&lt;/a&gt; are indirectly using &lt;a href="http://rope.sourceforge.net/" target="_blank"&gt;rope&lt;/a&gt; refactoring library.&lt;/p&gt;

&lt;p&gt;If you are also using a home-level virtualenv ie. in &lt;code&gt;~/env/&lt;/code&gt; then your vim instance might take crazy long time.&lt;/p&gt;

&lt;p&gt;First things first, rope creates a &lt;code&gt;.ropeproject&lt;/code&gt; directory where it thinks the project root is. And it will scan every file in every sub directory. A quick and dirty solution is to create empty &lt;code&gt;.ropeproject&lt;/code&gt; folders lower in the &lt;code&gt;$HOME&lt;/code&gt; filesystem. Rope will automatically use this folder if it finds no other &lt;code&gt;.ropeproject&lt;/code&gt; folder at a lower level.&lt;/p&gt;

&lt;p&gt;But, if you want a home-level &lt;code&gt;.ropeproject&lt;/code&gt;, then you should configure &lt;code&gt;~/.ropeproject/config.py&lt;/code&gt;. It is well commented, you might end with something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Custom source folders:  By default rope searches the project
# for finding source folders (folders that should be searched
# for finding modules).  You can add paths to that list.  Note
# that rope guesses project source folders correctly most of the
# time; use this if you have any problems.
# The folders should be relative to project root and use '/' for
# separating folders regardless of the platform rope is running on.
# 'src/my_source_folder' for instance.
prefs['source_folders'] = ['env/src']

# You can extend python path for looking up modules
prefs['python_path'] = '/home/jpic/env/lib/python2.7/site-packages/'
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.yourlabs.org/post/43143864267</link><guid>http://blog.yourlabs.org/post/43143864267</guid><pubDate>Fri, 15 Feb 2013 13:30:26 +0100</pubDate><category>python</category><category>vim</category></item><item><title>Playlistnow.fm source code is now open !</title><description>&lt;p&gt;Playlistnow.fm is a social network based on music made in Python/Django. The catalog is powered by last.fm and the videos come from youtube.&lt;/p&gt;

&lt;p&gt;Before its final death, we decided to &lt;a href="http://github.com/jpic/playlistnow.fm" target="_blank"&gt;release the source code&lt;/a&gt; under Apache 2.0 license.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43142947690</link><guid>http://blog.yourlabs.org/post/43142947690</guid><pubDate>Fri, 15 Feb 2013 12:59:35 +0100</pubDate><category>django</category><category>python</category></item><item><title>Using Ghost.py to test Django applications with LiveServerTestCase</title><description>&lt;p&gt;I&amp;#8217;m posting this because it took me quite a few hours to get to this point:&lt;/p&gt;

&lt;script src="https://gist.github.com/jpic/074a1a54181f50d578dc.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Ghost.py seem to have a nicer API and to be faster than selenium so far.&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43105534243</link><guid>http://blog.yourlabs.org/post/43105534243</guid><pubDate>Fri, 15 Feb 2013 00:18:00 +0100</pubDate><category>django</category><category>python</category><category>best-practice</category></item><item><title>django-smarter: the CRUD app I've been waiting for</title><description>&lt;p&gt;&lt;a href="https://github.com/05bit/django-smarter" target="_blank"&gt;django-smarter&lt;/a&gt; looks way cool, check it out&amp;#160;!&lt;/p&gt;</description><link>http://blog.yourlabs.org/post/43078910222</link><guid>http://blog.yourlabs.org/post/43078910222</guid><pubDate>Thu, 14 Feb 2013 16:21:41 +0100</pubDate><category>django</category><category>python</category></item></channel></rss>
