<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://julien.danjou.info/blog/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>jd:/dev/blog - software</title>
  <link>http://julien.danjou.info/blog/index.php/</link>
  <description>Julien Danjou's blog</description>
  <language>fr</language>
  <pubDate>Fri, 03 Oct 2008 21:09:26 +0200</pubDate>
  <copyright>All Right Reserved</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>PHP applications code quality</title>
    <link>http://julien.danjou.info/blog/index.php/post/2008/03/27/PHP-applications-code-quality</link>
    <guid isPermaLink="false">urn:md5:d900e2d3555b39c1599afe1135508ebd</guid>
    <pubDate>Thu, 27 Mar 2008 07:57:00 +0100</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Internet</category>
        <category>php</category><category>python</category><category>software</category><category>web</category>    
    <description>    &lt;p&gt;Ah, &lt;a href=&quot;http://blog.drinsama.de/erich/en/linux/2008032601-measuring-code-quality-by-database-support.html&quot;&gt;Erich&lt;/a&gt;, that IS so true. I never found a well written PHP application anyway, or it was only 10 lines long.&lt;/p&gt;


&lt;p&gt;I guess that's primarily the language fault. It permits to do a lot of stuff and does not simplify, help nor force the simplest implementation methods like &lt;a href=&quot;http://en.wikipedia.org/wiki/Model-view-controller&quot;&gt;MVC&lt;/a&gt; which should be the base in Web developement.&lt;/p&gt;


&lt;p&gt;Well, take as example what we would do with Python and GTK+ if they were like PHP and HTML (I do not have the API reference so it will be somewhat improvised):&lt;/p&gt;

&lt;pre&gt;
#finally we do not need this module I wrote everything myself
#import somemodule
def main():
    # Well we want to do some printing
    window = GtkWindow()
    # Connect to the database without any abstraction, that sucks
    db = mysql.connect()
    data = db.query(&quot;select RANDOMLYTYPEDDATA from MYONLYTABLE&quot;);
    while data:
        # Ah, we do not have include() so we cannot reuse code
        # I'm a PHP developer, I do not know functions
        import somestuff
    window.print(somestuff.result)
    # Obviously, forgot to close db connection, etc.
    if form.data.field == &quot;hello&quot;:
        # The user asked for hello, print hello
        window.print(&quot;hello&quot;)
    # debug
    print data[0]
    if form.data.anotherfield[0] == &quot;morning&quot;:
        data = db.query(&quot;select anotherdata from MYONLYDATA&quot;)
    else:
        sys.exit(42)
    label = GtkLabel()
    # Yes know we construct the view!
    window.add(label)
    label.print(data)&lt;/pre&gt;


&lt;p&gt;That is typical PHP code: we just take randomly typed data from our DB eng... no wait, from MySQL (remember that's LAMP!!! Not LAPP or anything else, bitches!), then we print some HTML code with data, and we do tests on environment, forms, etc, and we get back data, reprint them, do not use functions but include() multiple times thousand of files and then do not close/free anything.&lt;/p&gt;


&lt;p&gt;It's so easy to do bad code that lot of people coming from nowhere and who did not learn anything from other languages are doing it.&lt;/p&gt;


&lt;p&gt;Another hypothesis coming from my experiment: PHP is a language which can be developed under any OS since it's server-side executed. A link between mostly brain dead &quot;developers&quot; from the Microsoft world and whose from the Free Software world. A clash.&lt;/p&gt;


&lt;p&gt;I apologize to some of my coworkers doing better PHP all the day. &lt;img src=&quot;/blog//themes/geeek.org/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Moving old projects to git</title>
    <link>http://julien.danjou.info/blog/index.php/post/2008/01/26/Moving-old-projects-to-git</link>
    <guid isPermaLink="false">urn:md5:18c04a85ceff1286dce522c4fbfd9253</guid>
    <pubDate>Sat, 26 Jan 2008 10:02:00 +0100</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>git</category><category>mod_defensible</category><category>software</category><category>sysrqd</category><category>telak</category>    
    <description>    &lt;p&gt;I finally did it.&lt;/p&gt;


&lt;p&gt;Most of my small and personal projects (&lt;a href=&quot;http://julien.danjou.info/telak.html&quot;&gt;telak&lt;/a&gt;, &lt;a href=&quot;http://julien.danjou.info/sysrqd.html&quot;&gt;sysrqd&lt;/a&gt; and &lt;a href=&quot;http://julien.danjou.info/mod_defensible.html&quot;&gt;mod_defensible&lt;/a&gt;) were maintained in my home-svn-repository. This had the side effect that I did not have a good overview of the current status of the project, and that I never though about tagging releases.&lt;/p&gt;


&lt;p&gt;I used git-svnimport to move this stuff to git, with great success. Now, I see that only one release on three is tagged correctly, bad me. They are now on my &lt;a href=&quot;http://git.naquadah.org&quot;&gt;git server&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;But with a better tool like git I'm sure I will be more precise when I will work on that source code, so it was time to switch. And now my source code is public, which is far better than before.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Time &lt; work</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/11/15/Time-work</link>
    <guid isPermaLink="false">urn:md5:0bc1c9962a88e89e809281e863a4bbed</guid>
    <pubDate>Thu, 15 Nov 2007 20:45:00 +0100</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Life</category>
        <category>awesome</category><category>debian</category><category>life</category><category>software</category>    
    <description>    &lt;p&gt;It's official: I'm beginning to be a bit overloaded.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://zomers.be/~luk/blog/index.html&quot;&gt;Luk&lt;/a&gt; gently asked me about my status in the (stable) release management team. That just made a bit more guilty not doing that I'd like to do.&lt;/p&gt;


&lt;p&gt;Current TODO list involves:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;release &lt;a href=&quot;http://awesome.naquadah.org&quot;&gt;awesome&lt;/a&gt; 2.0-rc1 and update website and documentation for it;&lt;/li&gt;
&lt;li&gt;work on &lt;a href=&quot;http://julien.danjou.info/rebuildd.html&quot;&gt;rebuildd&lt;/a&gt;, finish and polish 0.3 version;&lt;/li&gt;
&lt;li&gt;run a full rebuild of the Debian archive to test rebuldd 0.3, do some QA work;&lt;/li&gt;
&lt;li&gt;update &lt;a href=&quot;http://julien.danjou.info/mod_defensible.html&quot;&gt;mod_defensible&lt;/a&gt; to fix problem with udns timeout;&lt;/li&gt;
&lt;li&gt;work on Debian release management, at least rewrite lost script for (old-)proposed-updates which were on ries'&lt;/li&gt;
&lt;li&gt;work on Debian Xen;&lt;/li&gt;
&lt;li&gt;handle a lot of waiting task on my network/servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, the thing that will help: I'm house moving this week-end with no (real) Internet connection yet. I only managed to establish a VPN over port 53/udp on a hotspot from a pub near my new apartment with 25-30 KB/s bandwidth, which is better than nothing actually.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;awesome* is asking me a lot of time right now, and since it's my last launched project, I am motivated and have a lot of idea, so I like to hack on him right now. I think I will have to postpone future release to not forget other things.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm going to see what happens by the end of the year and if I'm able to catch up with everything. Otherwise I might need to drop some things… &lt;img src=&quot;/blog//themes/geeek.org/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Life is too short.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>awesome developement</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/10/29/awesome-developement</link>
    <guid isPermaLink="false">urn:md5:3b2d0390873afeada706fd2b104027c4</guid>
    <pubDate>Mon, 29 Oct 2007 11:04:00 +0100</pubDate>
    <dc:creator>jd</dc:creator>
        <category>awesome</category>
        <category>awesome</category><category>software</category><category>wm</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://awesome.naquadah.org&quot;&gt;awesome&lt;/a&gt; developement is in a very good shape.&lt;/p&gt;


&lt;p&gt;We're now more than half way on the 2.0 road. The contributors base is increasing, since there's now 2-3 people regularly sending patches, so this is very good, and the (still small) users base is increasing smoothly.&lt;/p&gt;


&lt;p&gt;The awesome core code is step by step rewritten in a better and more generic way. The next big work is tabs implementation, that I am still postponing right now because of the core which is not ready to handle. It needs to become even more generic to not break everything by adding such a feature.&lt;/p&gt;


&lt;p&gt;I still hope to release awesome 2.0-rc1 by the end of november.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>git statistics?</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/10/02/git-statistics</link>
    <guid isPermaLink="false">urn:md5:a8145cbb48503e98824abaccaa2d85af</guid>
    <pubDate>Tue, 02 Oct 2007 15:43:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>git</category><category>software</category>    
    <description>    &lt;p&gt;I wonder if there are tools to do pretty git statistics, something like that:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://julien.danjou.info/blog/public/img/linux26gitstats.png&quot;&gt;&lt;img src=&quot;http://julien.danjou.info/blog/public/img/.linux26gitstats_s.jpg&quot; alt=&quot;Linux 2.6 git stats&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;(done on linux-2.6 git repository).&lt;/p&gt;


&lt;p&gt;I just wrote a quick'n dirty Python script to do that, but I'm too lazy to write a full program for now…&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>awesome</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/09/20/awesome</link>
    <guid isPermaLink="false">urn:md5:9a32653985d6b60b8cc9448ffceaaafb</guid>
    <pubDate>Thu, 20 Sep 2007 17:58:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>awesome</category>
        <category>awesome</category><category>software</category>    
    <description>    &lt;p&gt;Then, I did it finally, I wrote my own &lt;a href=&quot;http://awesome.naquadah.org&quot;&gt;window manager&lt;/a&gt;. \o/&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Sorry dwm</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/09/15/Sorry</link>
    <guid isPermaLink="false">urn:md5:2072e0ab54f522327c431a4fad54604a</guid>
    <pubDate>Sat, 15 Sep 2007 23:37:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>dwm</category><category>software</category>    
    <description>    &lt;p&gt;This time I &lt;a href=&quot;http://www.suckless.org/hg.rc/dwm/rev/70f6fcd100b7&quot;&gt;L O L&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Waiting so long</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/09/14/Waiting-so-long</link>
    <guid isPermaLink="false">urn:md5:152fd3c8a3384a925d382a665a7bb4a4</guid>
    <pubDate>Fri, 14 Sep 2007 19:16:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Life</category>
        <category>fun</category><category>kernel</category><category>life</category><category>software</category><category>thinking</category>    
    <description>    &lt;p&gt;Oh my god, I'd be happy the day La Poste (french post offices) will call a kernel hacker to...&lt;/p&gt;


&lt;p&gt;Wait for it...&lt;/p&gt;


&lt;p&gt;Explain them what is a queue scheduler.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Window manager sucks</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/08/17/Window-manager-sucks</link>
    <guid isPermaLink="false">urn:md5:064a8a47c34aa3cc489b5e9dabd43024</guid>
    <pubDate>Fri, 17 Aug 2007 00:06:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>software</category><category>thinking</category><category>window managers</category>    
    <description>    &lt;p&gt;Now my fvwm is segfaulting almost at each startup.&lt;/p&gt;


&lt;p&gt;Seriously, there's great software everywhere, but still no good window manager (I know, I tested almost them all).&lt;/p&gt;


&lt;p&gt;Life sucks.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>On media players, xmms and audacious</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/08/10/On-media-players-xmms-anda-audacious</link>
    <guid isPermaLink="false">urn:md5:cc11bb4a7fb69d97418b24947e9705d7</guid>
    <pubDate>Fri, 10 Aug 2007 11:59:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>audacious</category><category>debian</category><category>software</category><category>xmms</category>    
    <description>    &lt;p&gt;Last month the new thread I was afraid about has started. Called
&lt;a href=&quot;http://lists.debian.org/debian-devel/2007/07/msg00026.html&quot;&gt;Considerations for 'xmms' removal from Debian&lt;/a&gt;, the
maintainers of the xmms package proposed the removal of it.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;I used &lt;a href=&quot;http://www.xmms.org&quot;&gt;xmms&lt;/a&gt; (and, before, x11amp) for something like 9 or 10 years. I know, I love it. I can't bear other
players. &lt;a href=&quot;http://amarok.kde.org/&quot;&gt;Amarok&lt;/a&gt; is heavy, &lt;a href=&quot;http://www.gnome.org/projects/rhythmbox/&quot;&gt;rhythmbox&lt;/a&gt; seems like
a joke to me. I like to load my 6500 files playlist in one shot, press 'j' and jump to the song I want. I don't
see how it could be easier to use a music player.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;Following the thread, I must admit that, yes, xmms is old, gtk1.2, unmaintained, etc. I had to switch, sooner is better.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;So I use now &lt;a href=&quot;http://audacious-media-player.org/&quot;&gt;Audacious&lt;/a&gt;. At least I try to. Last time I tested it, the search (jump, 'j' key) function was… not working. No it is, it works like xmms, and I'm
happy. I know that upstream author of audacious dislikes being compared to xmms, but, screw you, you're like xmms, and I like it, so I like audacious for this.
The plugins and the interface is like xmms, so it's great also.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;However it's buggyyyyyyy. Third day of use, serious bug reported as &lt;a href=&quot;http://bugs.debian.org/436557&quot;&gt;#436557&lt;/a&gt;. It segfaults sometimes, or simply blocks
reading a file.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;The information loading 'on demand' is so crapy compared to xmms. I mean, it's fucking slow! When I put shuffle on and I lick 'next song please', then
it hangs reading informations. xmms was doing what in a better way.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;However, dear audacious-author-that-already-hates-me-for-comparing-xmms-and-audacious, I really think it'll be a real alternative for old xmms users
like me and a lot I know (yes, I know a lot of people, damn it!). Developement seems to be very active, so I'll continue to report bug and use it.&lt;/p&gt;

&lt;pre&gt;&lt;/pre&gt;

&lt;p&gt;Yes, I believe in audacious.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Evolution, you can't pass through</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/08/07/Evolution-you-cant-pass-through</link>
    <guid isPermaLink="false">urn:md5:968f83277e982e90a4880ea16e5b50f8</guid>
    <pubDate>Tue, 07 Aug 2007 08:34:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>music</category><category>software</category>    
    <description>    &lt;p&gt;I've switched from &lt;a href=&quot;http://xmms.org/&quot;&gt;xmms&lt;/a&gt; to &lt;a href=&quot;http://audacious-media-player.org&quot;&gt;Audacious&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;The end of 10 years of love.&lt;/p&gt;


&lt;p&gt;At least I can use &lt;a href=&quot;http://last.fm/user/acidounet&quot;&gt;last.fm&lt;/a&gt; again…&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Big update for rebuildd</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/07/09/Big-update-for-rebuildd</link>
    <guid isPermaLink="false">urn:md5:9066c972ced116534f69205bb940cf60</guid>
    <pubDate>Mon, 09 Jul 2007 11:45:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>debian</category><category>rebuildd</category><category>software</category>    
    <description>    &lt;p&gt;During the last five days, I made a bunch of updates to rebuildd:&lt;/p&gt;


&lt;pre&gt;35 files changed, 709 insertions(+), 190 deletions(-)&lt;/pre&gt;


&lt;p&gt;That's mainly small enhancements, and a brand new Debian packaging. It's now very usable from my point of view.
Moreover, the repository is now on &lt;a href=&quot;http://alioth.debian.org/projects/rebuildd/&quot;&gt;Alioth&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;There's still some code improvement to do and some features to add, but I'm quite happy with it.&lt;/p&gt;


&lt;p&gt;Consequently, I just released the &lt;a href=&quot;http://julien.danjou.info/rebuildd.html&quot;&gt;first version&lt;/a&gt;, numbered 0.1.0.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>rebuildd online preview</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/07/04/rebuildd-online-preview</link>
    <guid isPermaLink="false">urn:md5:f01b8f8f1e768e95c712dd356dec5c6a</guid>
    <pubDate>Wed, 04 Jul 2007 11:22:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Debian</category>
        <category>debian</category><category>rebuildd</category><category>software</category>    
    <description>    &lt;p&gt;I just set up a small &lt;a href=&quot;http://julien.danjou.info/rebuildd.html&quot;&gt;rebuildd&lt;/a&gt; test daemon on a dev box. You can see it &lt;a href=&quot;http://rebuildd.naquadah.org:9998/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Five days of coding: rebuildd</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/07/03/Five-days-of-coding%3A-rebuildd</link>
    <guid isPermaLink="false">urn:md5:aa7858168771be53c4280a34ca455772</guid>
    <pubDate>Tue, 03 Jul 2007 19:14:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Debian</category>
        <category>debian</category><category>rebuildd</category><category>software</category>    
    <description>    &lt;p&gt;Last week I decided to begin a new project, whose name is now &lt;em&gt;rebuildd&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;If the name is not explicit to you, let me explain: it's like buildd, but its first purpose is to rebuild packages.&lt;/p&gt;


&lt;p&gt;If you want to know more, you can take a look on the &lt;a href=&quot;http://julien.danjou.info/rebuildd.html&quot;&gt;Web page&lt;/a&gt; I just set up.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Why you won't use MySQL/ndb</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/06/14/MySQL/ndb-shit</link>
    <guid isPermaLink="false">urn:md5:76106fc65a402bf2a7ff3e83766edc01</guid>
    <pubDate>Sun, 17 Jun 2007 11:25:00 +0200</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>bugs</category><category>debian</category><category>mysql</category><category>software</category>    
    <description>    &lt;p&gt;I just failed to migrate a big project at work because of that, the D day:&lt;/p&gt;


&lt;pre&gt;Jun 15 10:46:39 hostname mysqld[20095]: Version:'5.0.32-Debian_7etch1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  Debian etch distribution
Jun 15 10:46:43 hostname mysqld[20095]: mysqld got signal 11&lt;/pre&gt;


&lt;p&gt;So no, you won't use &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-overview.html&quot;&gt;NDB&lt;/a&gt;, at least with MySQL 5.0.31 (included in etch). It's _so_ buggy that we get a segfault on the first DELETE statement with a 30 MB database.&lt;/p&gt;


&lt;p&gt;Backporting version 5.0.41 from sid gives better results (at least for now).&lt;/p&gt;


&lt;p&gt;I knew we should have used PostgreSQL from the beginning...&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>mod_defensible 1.2</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/02/01/383-mod_defensible-12</link>
    <guid isPermaLink="false">urn:md5:a8ea93b8a034e566b8f6513491361f3e</guid>
    <pubDate>Thu, 01 Feb 2007 16:51:58 +0000</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>software</category>    
    <description>    &lt;p&gt;I just released &lt;a href=&quot;http://julien.danjou.info/mod_defensible.html&quot;&gt;mod_defensible&lt;/a&gt; 1.2 and uploaded it to Debian. Just have to wait that the &lt;a href=&quot;http://ftp-master.debian.org/new.html&quot;&gt;NEW queue&lt;/a&gt; is processed.&lt;/p&gt;


&lt;p&gt;In the meantime packages are available &lt;a href=&quot;http://naquadah.org/~jd/debian/mod_defensible/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>mod_defensible 1.1</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/01/19/380-mod_defensible-11</link>
    <guid isPermaLink="false">urn:md5:82c2bfa9e65a26fdd76e29d4467314d3</guid>
    <pubDate>Fri, 19 Jan 2007 16:43:00 +0000</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>software</category>    
    <description>    &lt;p&gt;Hopla, a new version of &lt;a href=&quot;http://julien.danjou.info/mod_defensible.html&quot;&gt;mod_defensible&lt;/a&gt;. I added a custom page in order to explain to the client why it is forbidden to access to the page.&lt;/p&gt;


&lt;p&gt;In the mean time, my webserver load dropped to somewhat 20% less than without this module.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>sysrqd 9</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/01/19/379-sysrqd-9</link>
    <guid isPermaLink="false">urn:md5:86a14ea5a50e370a47d5433cc88b79ad</guid>
    <pubDate>Fri, 19 Jan 2007 15:37:55 +0000</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>software</category>    
    <description>    &lt;p&gt;I just released &lt;a href=&quot;http://julien.danjou.info/sysrqd.html&quot;&gt;sysrqd&lt;/a&gt; 9th version. This version include a little page for Neil McGovern: never go in swap and allow to bind to a specific IP address.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Creating a FLAN</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/01/16/376-creating-a-flan</link>
    <guid isPermaLink="false">urn:md5:4a01683a25ef5542ecc492d99817d8ae</guid>
    <pubDate>Tue, 16 Jan 2007 12:48:13 +0000</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Naquadah Network</category>
        <category>network</category><category>software</category>    
    <description>    &lt;p&gt;I have several servers around the Internet, and one of my need is to have VPN between them to access various data and services, like SNMP or NFS. I used to build VPN with &lt;a href=&quot;http://www.openvpn.net&quot;&gt;OpenVPN&lt;/a&gt; between some of them.&lt;/p&gt;


&lt;p&gt;My main problem was that I had to set up IP interfaces at each end, build multiple tunnels or make some routing, and... that was not what I wanted, too complicated.&lt;/p&gt;


&lt;p&gt;I took a deeper look in OpenVPN and found a solution: I created a FLAN… No, not a cake, a Faked LAN! This is so easy and powerful that I beat myself to not have though about that before.&lt;/p&gt;


&lt;p&gt;I did it with 3 servers for now, this is how it works: on each server I create an interface named &lt;em&gt;if-&lt;a href=&quot;http://julien.danjou.info/blog/index.php/post/2007/01/16/remote hostname&quot;&gt;remote hostname&lt;/a&gt;&lt;/em&gt; which is a &lt;em&gt;tap&lt;/em&gt; (Ethernet) interfaces connected to the remote host. On &lt;em&gt;server1&lt;/em&gt;, I have two interfaces, &lt;em&gt;if-server2&lt;/em&gt; and &lt;em&gt;if-server3&lt;/em&gt; which are like direct wired connection to the remote host, and I can do Ethernet on them.&lt;/p&gt;


&lt;p&gt;When each server has its link up, I create an Ethernet bridge. In this bridge, I put the two interfaces connected to the remote servers. This finally build something like that for each server:&lt;/p&gt;


&lt;pre&gt;server1 -- eth0
  \ 
 if-bridge 192.168.4.88
    \  \_ if-server2 -- VPN -- if-server1 -- if-bridge 192.168.4.89 -- server2
     \_ if-server3 -- VPN -- if-server-1 -- if-bridge 192.168.4.90 -- server3&lt;/pre&gt;


&lt;p&gt;Obviously, you will have a loop in your faked Ethernet LAN, so you'll have to active &lt;a href=&quot;http://fr.wikipedia.org/wiki/Spanning_Tree_Protocol&quot;&gt;STP&lt;/a&gt; in order to have a working LAN. And it works.&lt;/p&gt;


&lt;p&gt;The main advantage with this solution is that each server has only one IP on this virtual network, and there's no connection problem if one of your host is down: STP will rebuild the network in a transparent way. The main problem is that you may have to set up a lot of link if you want a full redundancy. I think I'll setup only two links between each server, because it maybe too painfull otherwise.&lt;/p&gt;


&lt;p&gt;You can also do some optimization if you need, because the current bridge implementation in Linux is so powerful that you can put cost on interfaces for your bridge, or define which bridge should be the root of your tree. Have fun!&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Kicking out Web spammers with DNSBL</title>
    <link>http://julien.danjou.info/blog/index.php/post/2007/01/15/375-kicking-out-web-spammers-with-dnsbl</link>
    <guid isPermaLink="false">urn:md5:1e28e0b48e23fd57e1d4fb781f8bed89</guid>
    <pubDate>Mon, 15 Jan 2007 11:33:00 +0000</pubDate>
    <dc:creator>jd</dc:creator>
        <category>Free Software</category>
        <category>internet</category><category>software</category>    
    <description>    &lt;p&gt;Every project has its story. Every war has its winner, and its casualties. They were 20 millions men, fighting for their freedom.&lt;/p&gt;


&lt;p&gt;And you'll never know their story.&lt;/p&gt;


&lt;p&gt;Because during last week, I was looking why my Web server was so heavily loaded. And I discovered that my blog was attacked by spammers trying to post comments. They were stopped by a great plug-in named &lt;em&gt;spamplemousse&lt;/em&gt;, which use spam keywords and DNSBL to drop spam comments.&lt;br /&gt;
However, this plug-in is written in PHP, like the rest of my blog, so it loads Apache and MySQL in a way that is no more acceptable: the page have still to be rendered for this !@#$ spammers.&lt;/p&gt;


&lt;p&gt;Consequently, I decided to write a Apache 2.x module which will just drop a &lt;em&gt;403 Forbidden&lt;/em&gt; error page in the spammers' head using DNSBL servers. Here it is, and it is called &lt;a href=&quot;http://julien.danjou.info/mod_defensible.html&quot;&gt;mod_defensible&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;I'm using it since 3 days now, and I got some pretty interesting result and less load on my Web server, so &lt;em&gt;c'est tout bon&lt;/em&gt;&lt;sup&gt;[&lt;a href=&quot;http://julien.danjou.info/blog/index.php/post/2007/01/15/#pnote-375-1&quot; id=&quot;rev-pnote-375-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://julien.danjou.info/blog/index.php/post/2007/01/15/#rev-pnote-375-1&quot; id=&quot;pnote-375-1&quot;&gt;1&lt;/a&gt;] It's all good&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
</channel>
</rss>