<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.deldycke.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kev's blog</title>
	
	<link>http://kevin.deldycke.com</link>
	<description>Free Softwares, Computers &amp; Linux</description>
	<lastBuildDate>Thu, 02 Sep 2010 13:24:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<image><link>http://kevin.deldycke.com</link><url>http://www.gravatar.com/avatar/91a488c34a8dc1c392b2b0d972b4584e</url><title>Kevin's avatar</title></image>
		<feedburner:info uri="coolkevmen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>50.6325</geo:lat><geo:long>3.058333</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://kev.coolcavemen.com/feed/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://kev.coolcavemen.com/feed/" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item>
		<title>Convert Lotus Notes’ nsf files to mbox with nlconverter</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/kMQNPs_kFkM/</link>
		<comments>http://kevin.deldycke.com/2010/09/convert-lotus-notes-nsf-files-mbox-nlconverter/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 13:17:43 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IBM Lotus Notes]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mbox]]></category>
		<category><![CDATA[nlconverter]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[Windows 2000]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1848</guid>
		<description><![CDATA[There is a great piece of software called nlconverter. It&#8217;s a tool designed to convert Lotus Notes&#8217; .nsf files to mbox. It rely on win32&#8242;s COM/DDE API so it can only be used on Windows. If you want to extract mails out of your .nsf database, this might be the tool you&#8217;re looking for. Bonus [...]]]></description>
			<content:encoded><![CDATA[<p>There is a great piece of software called <a  href="http://code.google.com/p/nlconverter/">nlconverter</a>. It&#8217;s a tool designed to convert Lotus Notes&#8217; <code>.nsf</code> files to <code>mbox</code>. It rely on win32&#8242;s COM/DDE API so it can only be used on Windows.</p>
<p>If you want to extract mails out of your <code>.nsf</code> database, this might be the tool you&#8217;re looking for. Bonus point: it&#8217;s written in Python ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h4>Installing nlconverter and its dependencies</h4>
<p>Here is how I installed <code>nlconverter</code> on a Windows 2000 (SP4) machine:</p>
<ol>
<li>First I downloaded and installed the <a  href="http://www.python.org/download/releases/">official Python builds for Windows</a> (<a  href="http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi">2.6.6 precisely</a>):<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/001-python-266-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/001-python-266-install-on-windows-2000-300x255.png" alt="" title="001-python-266-install-on-windows-2000" width="300" height="255" class="aligncenter size-medium wp-image-1832" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/002-python-266-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/002-python-266-install-on-windows-2000-300x255.png" alt="" title="002-python-266-install-on-windows-2000" width="300" height="255" class="aligncenter size-medium wp-image-1833" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/003-python-266-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/003-python-266-install-on-windows-2000-300x255.png" alt="" title="003-python-266-install-on-windows-2000" width="300" height="255" class="aligncenter size-medium wp-image-1834" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/004-python-266-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/004-python-266-install-on-windows-2000-300x255.png" alt="" title="004-python-266-install-on-windows-2000" width="300" height="255" class="aligncenter size-medium wp-image-1835" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/005-python-266-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/005-python-266-install-on-windows-2000-300x255.png" alt="" title="005-python-266-install-on-windows-2000" width="300" height="255" class="aligncenter size-medium wp-image-1836" /></a></li>
<li>Then <a  href="http://sourceforge.net/projects/pywin32/">Python for Windows extensions</a> (<a  href="http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download">build 214 for Python 2.6 in my case</a>):<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/001-pywin32-214-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/001-pywin32-214-install-on-windows-2000-300x193.png" alt="" title="001-pywin32-214-install-on-windows-2000" width="300" height="193" class="aligncenter size-medium wp-image-1838" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/002-pywin32-214-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/002-pywin32-214-install-on-windows-2000-300x193.png" alt="" title="002-pywin32-214-install-on-windows-2000" width="300" height="193" class="aligncenter size-medium wp-image-1839" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/003-pywin32-214-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/003-pywin32-214-install-on-windows-2000-300x193.png" alt="" title="003-pywin32-214-install-on-windows-2000" width="300" height="193" class="aligncenter size-medium wp-image-1840" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/004-pywin32-214-install-on-windows-2000.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/004-pywin32-214-install-on-windows-2000-300x193.png" alt="" title="004-pywin32-214-install-on-windows-2000" width="300" height="193" class="aligncenter size-medium wp-image-1841" /></a></li>
<li>Finally I had to <a  href="http://codespeak.net/icalendar/">download the latest <code>icalendar</code> archive</a>, then extract the <code>\iCalendar-1.2\src\icalendar</code> folder to <code>C:\Python26\Lib\site-packages\</code>:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/extract-icalendar-python-package-on-windows.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/extract-icalendar-python-package-on-windows-300x217.png" alt="" title="extract-icalendar-python-package-on-windows" width="300" height="217" class="aligncenter size-medium wp-image-1843" /></a></li>
<li>Next step is to <a  href="http://code.google.com/p/nlconverter/downloads">download nlconverter</a> itself and extract it:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/nlconverter-install-on-windows.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/nlconverter-install-on-windows-300x214.png" alt="" title="nlconverter-install-on-windows" width="300" height="214" class="aligncenter size-medium wp-image-1846" /></a></li>
</ol>
<h4>nlconverter GUI</h4>
<p>First thing you have to do is to create an <a  href="http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/">export of your mails as a <code>.nsf</code> database</a>. Follow the previous link to get the instructions.</li>
<p>Now let&#8217;s convert this <code>nsf</code> to a <code>mbox</code>. <a  href="http://code.google.com/p/nlconverter/wiki/Faq">nlconverter&#8217;s FAQ</a> tells you to run the <code>gui.exe</code> program to perform the conversion.</p>
<p>Unfortunately it didn&#8217;t work for me:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/nlconverter-gui-fail.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/nlconverter-gui-fail-300x91.png" alt="" title="nlconverter-gui-fail" width="300" height="91" class="aligncenter size-medium wp-image-1856" /></a></p>
<p>So I tried the alternative approach by using the command line.</p>
<h4>nlconverter command line</h4>
<p>Again, most of the things I&#8217;m writing here are based on <a  href="http://code.google.com/p/nlconverter/wiki/Faq">nlconverter&#8217;s FAQ</a>:</p>
<ol>
<li>First, we have to <a  href="http://nlconverter.googlecode.com/hg/notes2mbox.py">download the <code>notes2mbox.py</code> script</a> from <a  href="http://code.google.com/p/nlconverter/source/browse/">nlconverter&#8217;s mercurial repository</a>, as this file is not distributed in the <code>winnlc-alpha-1.zip</code> archive I unzipped previously. Let&#8217;s put <code>notes2mbox.py</code> in <code>C:\winnlc-alpha-1\</code>:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/09/download-notes2mbox-python-script.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/09/download-notes2mbox-python-script-300x167.png" alt="" title="download-notes2mbox-python-script" width="300" height="167" class="aligncenter size-medium wp-image-1881" /></a></li>
<li>Now we&#8217;ll modify the <code>notes2mbox.py</code> script to set the password (via the <code>notesPasswd</code> variable) and location (<code>notesNsfPath</code> variable) of the <code>.nsf</code> file. Here are the modifications I applied:
<pre class="brush: diff;">
--- notes2mbox.py.orig	2010-09-02 13:49:58.000000000 +0200
+++ notes2mbox.py	2010-09-02 13:51:24.000000000 +0200
@@ -14,8 +14,8 @@
 import NlconverterLib

 #Constantes
-notesPasswd = &quot;foobar&quot;
-notesNsfPath = &quot;C:\\archive.nsf&quot;
+notesPasswd = &quot;XXXXXXXXXXXXX&quot;
+notesNsfPath = &quot;C:\\winnlc-alpha-1\\kevin-notes-big-backup-part-1.nsf&quot;

 #Connection à Notes
 db = NlconverterLib.getNotesDb(notesNsfPath, notesPasswd)
</pre>
</li>
<li>Before running the script, we have to register a Notes DLL used by nlconverter:
<pre class="brush: bash;">
regsvr32 &quot;C:\Program Files\Notes\nlsxbe.dll&quot;
</pre>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/notes-nlsxbe-dll-registered1.png" class="thickbox no_icon" rel="gallery-1848" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/notes-nlsxbe-dll-registered1-300x96.png" alt="" title="notes-nlsxbe-dll-registered" width="300" height="96" class="aligncenter size-medium wp-image-1868" /></a><br />
And make the Python interpreter available system-wide:</p>
<pre class="brush: bash;">
C:\winnlc-alpha-1&gt;SET Path=%Path%;C:\Python26
</pre>
</li>
<li>Now we can run the <code>notes2mbox.py</code> script:
<pre class="brush: bash;">
C:\winnlc-alpha-1&gt;C:\Python26\python.exe notes2mbox.py
</pre>
</li>
</ol>
<p>If you&#8217;re lucky, you&#8217;ll get a nice mbox at the end of the process.</p>
<p>But I was not and the <code>notes2mbox.py</code> ended up with the following error:</p>
<pre class="brush: python;">
Traceback (most recent call last):
  File &quot;notes2mbox.py&quot;, line 21, in &lt;module&gt;
    db = NlconverterLib.getNotesDb(notesNsfPath, notesPasswd)
  File &quot;C:\winnlc-alpha-1\NlconverterLib.py&quot;, line 43, in getNotesDb
    session = win32com.client.Dispatch(r'Lotus.NotesSession')
  File &quot;C:\Python26\lib\site-packages\win32com\client\__init__.py&quot;, line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File &quot;C:\Python26\lib\site-packages\win32com\client\dynamic.py&quot;, line 104, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File &quot;C:\Python26\lib\site-packages\win32com\client\dynamic.py&quot;, line 84, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221231, 'ClassFactory ne peut pas fournir la classe demand\xe9e', None, None)
</pre>
<p>As you can see, I tried hard to make nlconverter working, without any success. But this should not stop you to try. In fact I suspect the Lotus Notes installed on my machine to be crippled or corrupted (can&#8217;t really tell). So you may be more lucky than me. In any case, feel free to report any success or failure in the comment section below !</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2006/11/usefull-commands-rpm/" rel="bookmark" class="crp_title">Usefull Commands: RPM, Urpmi &#038; Yum</a></li><li><a  href="http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/" rel="bookmark" class="crp_title">Maildir deduplication script in Python</a></li><li><a  href="http://kevin.deldycke.com/2008/07/python-ultimate-regular-expression-to-catch-html-tags/" rel="bookmark" class="crp_title">Python ultimate regular expression to catch HTML tags</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/n9jR2n-_J7QorlVdEp3X9T7SBxQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/n9jR2n-_J7QorlVdEp3X9T7SBxQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/n9jR2n-_J7QorlVdEp3X9T7SBxQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/n9jR2n-_J7QorlVdEp3X9T7SBxQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/kMQNPs_kFkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/09/convert-lotus-notes-nsf-files-mbox-nlconverter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/09/convert-lotus-notes-nsf-files-mbox-nlconverter/</feedburner:origLink></item>
		<item>
		<title>How-to fix Lotus Notes’ disabled TCPIP port error</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/YK87xvwsS0I/</link>
		<comments>http://kevin.deldycke.com/2010/08/how-to-fix-lotus-notes-disabled-tcp-ip-port-error/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 15:36:59 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[IBM Lotus Notes]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mac OS X v10.5]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1777</guid>
		<description><![CDATA[Today I encountered this error message: Error logging into server localhost: You must enable the Notes TCPIP port. This appeared in the fat Lotus Notes client v7.0.3 running on Mac OS X Leopard (10.5). To fix this issue, first of all, quit Notes. Then locate the Notes&#8217; preference file attached to your current user. Mine [...]]]></description>
			<content:encoded><![CDATA[<p>Today I encountered this error message:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-tcp-ip-error.png" class="thickbox no_icon" rel="gallery-1777" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-tcp-ip-error-300x122.png" alt="" title="lotus-notes-tcp-ip-error" width="300" height="122" class="aligncenter size-medium wp-image-1772" /></a></p>
<blockquote><p>Error logging into server localhost: You must enable the Notes TCPIP port.</p></blockquote>
<p>This appeared in the fat Lotus Notes client v7.0.3 running on Mac OS X Leopard (10.5).</p>
<p>To fix this issue, first of all, quit Notes. Then <a  href="http://www-01.ibm.com/support/docview.wss?uid=swg21090921">locate the Notes&#8217; preference file</a> attached to your current user. Mine was found in my home directory at <code>/Users/kevin/Library/Preferences/Notes Preferences</code>. At the end of this file, add <a  href="http://macosx.com/forums/1277870-post4.html">these two directives</a>:</p>
<pre class="brush: plain;">
TCPIP=TCP,0,15,0
Ports=TCPIP
</pre>
<p>Then relaunch Lotus Notes and switch from <code>Island (Disconnected)</code> location to another that will allow your client to listen to the network. In my case, <code>Home (Network Dialup)</code> did the trick:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-location-switch.png" class="thickbox no_icon" rel="gallery-1777" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-location-switch.png" alt="" title="lotus-notes-location-switch" width="275" height="198" class="aligncenter size-full wp-image-1793" /></a></p>
<p>Problem solved ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/" rel="bookmark" class="crp_title">Lotus Notes&#8217; Rich Text to MIME conversion error</a></li><li><a  href="http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/" rel="bookmark" class="crp_title">How-to export/backup Lotus Notes mails</a></li><li><a  href="http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/" rel="bookmark" class="crp_title">Maildir deduplication script in Python</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/AvKbNyvqdEoYQNU2yHrjoB43YzI/0/da"><img src="http://feedads.g.doubleclick.net/~a/AvKbNyvqdEoYQNU2yHrjoB43YzI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AvKbNyvqdEoYQNU2yHrjoB43YzI/1/da"><img src="http://feedads.g.doubleclick.net/~a/AvKbNyvqdEoYQNU2yHrjoB43YzI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/YK87xvwsS0I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/08/how-to-fix-lotus-notes-disabled-tcp-ip-port-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/08/how-to-fix-lotus-notes-disabled-tcp-ip-port-error/</feedburner:origLink></item>
		<item>
		<title>Maildir deduplication script in Python</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/WAo-KJvMoTo/</link>
		<comments>http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 18:56:03 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[maildir]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1712</guid>
		<description><![CDATA[Some months ago I wrote a tiny Python script which scan all folders and sub-folders of a Maildir, then remove duplicate mails. You can give the script a list of email headers to ignore while it compares mails between each others. This is particularly helpful to find duplicate mails having the exact same content but [...]]]></description>
			<content:encoded><![CDATA[<p>Some months ago I wrote a tiny Python script which scan all folders and sub-folders of a Maildir, then remove duplicate mails.</p>
<p>You can give the script a list of email headers to ignore while it compares mails between each others. This is particularly helpful to find duplicate mails having the exact same content but different UIDs.</p>
<p>I created this script to clean up a Maildir folder I messed up after moving repeatedly tons of mails from a Lotus Notes database. As you can see below, the same mail imported twice contain a variable header based on the date and time the import was performed:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-x-mimetrack-mail-header.png" class="thickbox no_icon" rel="gallery-1712" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/lotus-notes-x-mimetrack-mail-header-300x45.png" alt="" title="lotus-notes-x-mimetrack-mail-header" width="300" height="45" class="aligncenter size-medium wp-image-1716" /></a></p>
<p>This variable header make mails looks different from the point of view of the script. That&#8217;s explain why I implemented the <code>HEADERS_TO_IGNORE</code> parameter with the default set to <code>X-MIMETrack</code>.</p>
<p>The <a  href="http://github.com/kdeldycke/kev-code/blob/master/maildir-deduplicate.py">script is available on my GitHub</a> repository. It was tested on MacOS X 10.6 with python 2.6.2 but should work on other systems and versions as the code is really simple (and stupid).</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2007/11/how-to-import-a-maildir-folder-to-kmail/" rel="bookmark" class="crp_title">How-to import a Maildir++ folder to Kmail</a></li><li><a  href="http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/" rel="bookmark" class="crp_title">How-to export/backup Lotus Notes mails</a></li><li><a  href="http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/" rel="bookmark" class="crp_title">Subversion commits and mail activity stream in iCalendar</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/JGzRgG34mCg4BI4AV_1Bev9QE7c/0/da"><img src="http://feedads.g.doubleclick.net/~a/JGzRgG34mCg4BI4AV_1Bev9QE7c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JGzRgG34mCg4BI4AV_1Bev9QE7c/1/da"><img src="http://feedads.g.doubleclick.net/~a/JGzRgG34mCg4BI4AV_1Bev9QE7c/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/WAo-KJvMoTo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/</feedburner:origLink></item>
		<item>
		<title>Midnight in Paris: on-set photos of next Woody Allen movie</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/yguqtU6XW0U/</link>
		<comments>http://kevin.deldycke.com/2010/08/midnight-paris-on-set-photos-woody-allen-movie/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 12:25:29 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Alexander III bridge]]></category>
		<category><![CDATA[Canon EOS 7D]]></category>
		<category><![CDATA[midnight in paris]]></category>
		<category><![CDATA[Owen Wilson]]></category>
		<category><![CDATA[paris]]></category>
		<category><![CDATA[Paris,France]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[Woody Allen]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1689</guid>
		<description><![CDATA[Last night, I was going back home from a photo trip with friends, when I spotted a film crew on Alexander III bridge in Paris. It happened to be the shooting of some scenes for the next Woody Allen movie: Midnight in Paris. Here are some noisy photos I&#8217;ve taken with my Canon 7D and [...]]]></description>
			<content:encoded><![CDATA[<p>Last night, I was going back home from a photo trip with friends, when I spotted a film crew on <a  href="http://en.wikipedia.org/wiki/Pont_Alexandre_III">Alexander III bridge in Paris</a>. It happened to be the shooting of some scenes for the next Woody Allen movie: <a  href="http://www.imdb.com/title/tt1605783/">Midnight in Paris</a>.</p>
<p>Here are some noisy photos I&#8217;ve taken with my Canon 7D and a <a  href="http://en.wikipedia.org/wiki/Canon_EF-S_15-85mm_lens">15-85mm f/3.5-5.6</a>. If only I had a <a  href="http://en.wikipedia.org/wiki/Canon_EF_300mm_f/2.8L_USM">fast telephoto lens</a>&#8230; <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-owen-wilson.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-owen-wilson-205x300.jpg" alt="" title="midnight-in-paris-owen-wilson" width="205" height="300" class="aligncenter size-medium wp-image-1698" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-woody-allen.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-woody-allen-178x300.jpg" alt="" title="midnight-in-paris-woody-allen" width="178" height="300" class="aligncenter size-medium wp-image-1699" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-001.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-001-300x200.jpg" alt="" title="midnight-in-paris-set-001" width="300" height="200" class="aligncenter size-medium wp-image-1700" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-002.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-002-300x200.jpg" alt="" title="midnight-in-paris-set-002" width="300" height="200" class="aligncenter size-medium wp-image-1701" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-003.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-003-300x200.jpg" alt="" title="midnight-in-paris-set-003" width="300" height="200" class="aligncenter size-medium wp-image-1702" /></a><br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-004.jpg" class="thickbox no_icon" rel="gallery-1689" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/midnight-in-paris-set-004-200x300.jpg" alt="" title="midnight-in-paris-set-004" width="200" height="300" class="aligncenter size-medium wp-image-1703" /></a></p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/01/cool-cavemen-live-gayant-expo-first-video-released/" rel="bookmark" class="crp_title">Cool Cavemen live at Gayant Expo: first video released !</a></li><li><a  href="http://kevin.deldycke.com/2010/01/new-year-eve-light-painting/" rel="bookmark" class="crp_title">New Year&#8217;s Eve Light Painting</a></li><li><a  href="http://kevin.deldycke.com/2010/02/i-know-what-you-did-last-saturday/" rel="bookmark" class="crp_title">I know what you did last saturday&#8230;</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/QdjOWvzeCHbJ5YxeuaRBcD5kR8c/0/da"><img src="http://feedads.g.doubleclick.net/~a/QdjOWvzeCHbJ5YxeuaRBcD5kR8c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QdjOWvzeCHbJ5YxeuaRBcD5kR8c/1/da"><img src="http://feedads.g.doubleclick.net/~a/QdjOWvzeCHbJ5YxeuaRBcD5kR8c/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/yguqtU6XW0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/08/midnight-paris-on-set-photos-woody-allen-movie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/08/midnight-paris-on-set-photos-woody-allen-movie/</feedburner:origLink></item>
		<item>
		<title>QLC effects generator for LED panels</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/jaoayROMLNI/</link>
		<comments>http://kevin.deldycke.com/2010/08/qlc-effects-generator-led-panels/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 19:42:14 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[canon 7D]]></category>
		<category><![CDATA[Cool Cavemen]]></category>
		<category><![CDATA[dmx]]></category>
		<category><![CDATA[light]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[QLC]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1562</guid>
		<description><![CDATA[Here is another script I wrote some months ago. It&#8217;s called qlc-effects-generator.py. It&#8217;s a quick and dirty hack that generate chasers, groups and scenes for QLC (a QT-based DMX lighting software). It just produce XML statements you copy&#8217;n'paste in your .qxw QLC workspace file. I used it to create some effects for my 4 el-cheapo [...]]]></description>
			<content:encoded><![CDATA[<p>Here is another script I wrote some months ago. It&#8217;s called <code><a  href="http://github.com/kdeldycke/kev-code/blob/master/qlc-effects-generator.py">qlc-effects-generator.py</a></code>. It&#8217;s a quick and dirty hack that generate chasers, groups and scenes for <a  href="http://sourceforge.net/projects/qlc/">QLC (a QT-based DMX lighting software)</a>. It just produce XML statements you copy&#8217;n'paste in your <code>.qxw</code> QLC workspace file.</p>
<p>I used it to create some effects for my 4 el-cheapo <a  href="http://fr.audiofanzine.com/projecteur-traditionnel-divers/mac-mah/WIDER-PANEL-RGB-648-LEDS-DMX/">Mac-Mah LED wider panels</a>. This script helped me generate column and row presets of my 4&#215;8 pixels LED matrix for some basic colors:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/qlc-wider-panel-presets.png" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/qlc-wider-panel-presets-300x187.png" alt="" title="qlc-wider-panel-presets" width="300" height="187" class="aligncenter size-medium wp-image-1565" /></a></p>
<p>Here are some photos of my preliminary tests at home:</p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-fushia.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-fushia-150x150.jpg" alt="" title="4-mac-mah-wider-led-panel-fushia" width="150" height="150" class="alignleft size-thumbnail wp-image-1665" /></a></p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-blue.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-blue-150x150.jpg" alt="" title="4-mac-mah-wider-led-panel-blue" width="150" height="150" class="alignleft size-thumbnail wp-image-1666" /></a></p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-red.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-red-150x150.jpg" alt="" title="4-mac-mah-wider-led-panel-red" width="150" height="150" class="alignleft size-thumbnail wp-image-1667" /></a></p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-white.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/4-mac-mah-wider-led-panel-white-150x150.jpg" alt="" title="4-mac-mah-wider-led-panel-white" width="150" height="150" class="alignleft size-thumbnail wp-image-1668" /></a></p>
<div style="clear:both"></div>
<p>And finally photos of the panels on stage (<a  href="http://www.heroow.fr/2009/11/18/cool-cavemen/">taken by Toma Heroow</a> during <a  href="http://coolcavemen.com/2009/mametzik-mad-fest-chez-march/">Cool Cavemen&#8217;s concert in last november</a>):</p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0516-scaled.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0516-scaled-150x150.jpg" alt="" title="img_0516-scaled" width="150" height="150" class="alignleft size-thumbnail wp-image-1677" /></a></p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0583-scaled.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0583-scaled-150x150.jpg" alt="" title="img_0583-scaled" width="150" height="150" class="alignleft size-thumbnail wp-image-1686" /></a></p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0519-scaled.jpg" class="thickbox no_icon" rel="gallery-1562" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/img_0519-scaled-150x150.jpg" alt="" title="img_0519-scaled" width="150" height="150" class="alignleft size-thumbnail wp-image-1685" /></a></p>
<div style="clear:both"></div>
<p>As usual, use and hack this script at you own risks, and feel free to send me bug reports and contributions ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/video/" rel="bookmark" class="crp_title">Videos</a></li><li><a  href="http://kevin.deldycke.com/2007/04/how-to-block-ads-in-konqueror/" rel="bookmark" class="crp_title">How-to Block Ads in Konqueror</a></li><li><a  href="http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/" rel="bookmark" class="crp_title">Subversion commits and mail activity stream in iCalendar</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/O0ktCuDkdR-R5-HuAz2gJH765XM/0/da"><img src="http://feedads.g.doubleclick.net/~a/O0ktCuDkdR-R5-HuAz2gJH765XM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/O0ktCuDkdR-R5-HuAz2gJH765XM/1/da"><img src="http://feedads.g.doubleclick.net/~a/O0ktCuDkdR-R5-HuAz2gJH765XM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/jaoayROMLNI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/08/qlc-effects-generator-led-panels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/08/qlc-effects-generator-led-panels/</feedburner:origLink></item>
		<item>
		<title>Blocking e107 dDOS attack with fail2ban</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/JqO75uG-aLo/</link>
		<comments>http://kevin.deldycke.com/2010/08/blocking-e107-ddos-attack-fail2ban/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 19:09:54 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Cool Cavemen]]></category>
		<category><![CDATA[e107]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1613</guid>
		<description><![CDATA[Last month, a new security vulnerability was discovered in e107. If a fix was released quickly, some instances on the web were left unpatched. These sites are easy target for hackers script-kiddies, and a generalized dDOS attack was carry out on every e107 websites out there. I&#8217;m no exception and the old and decrepit part [...]]]></description>
			<content:encoded><![CDATA[<p>Last month, a new security vulnerability was discovered in e107. If <a  href="http://e107.org/comment.php?comment.news.867">a fix was released quickly</a>, some instances on the web were left unpatched. These sites are easy target for <strike>hackers</strike> script-kiddies, and <a  href="http://e107.org/comment.php?comment.news.868">a generalized dDOS attack was carry out</a> on every e107 websites out there.</p>
<p>I&#8217;m no exception and the old and decrepit part of Cool Cavemen&#8217;s website <a  href="http://coolcavemen.com/e107_plugins/forum/forum_viewforum.php?3">still running on e107</a> was attacked. This was enough to crash my tiny server. Unfortunately this <a  href="http://twitter.com/kdeldycke/status/17728248113">happened while I was on holidays</a>. Without any time to address this issue properly, I decided to shutdown my web server. This explain why this blog and all Cool Cavemen&#8217;s websites were dead during half of july.</p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/08/munin-fail2ban-jails-weekly-stats.png" class="thickbox no_icon" rel="gallery-1613" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/08/munin-fail2ban-jails-weekly-stats-150x150.png" alt="" title="munin-fail2ban-jails-weekly-stats" width="150" height="150" class="alignleft size-thumbnail wp-image-1707" /></a> Now <a  href="http://twitter.com/kdeldycke/status/19250530728">everything is back to normal</a> (I hope), thanks to <code><a  href="http://www.fail2ban.org">fail2ban</a></code>. I created a set of rules (<a  href="http://eromang.zataz.com/2010/07/13/byroenet-casper-bot-search-e107-rce-scanner/">based on this article</a>) to dynamically catch <a  href="http://en.wikipedia.org/wiki/Denial-of-service_attack">dDOS</a> attempts and ban all IP addresses involved. Here is how I configured <code>fail2ban</code>&#8230;</p>
<div style="clear: both;"></div>
<p>First, create a new empty file at <code>/etc/fail2ban/filter.d/apache-e107ddos.conf</code> and put the following directives there:</p>
<pre class="brush: plain;">
# Fail2Ban configuration file
# Notes.:  Regexp to catch all attemps to exploit an e107 vulnerability.
# Author: Kevin Deldycke

[Definition]
failregex = &lt;HOST&gt;\s-\s-\s.*\s&quot;(GET|POST).*\/(help_us|contact|config|avd_start|\*)\.php
            &lt;HOST&gt;\s-\s-\s.*(Casper|b3b4s|dex|Dex|kmccrew|plaNETWORK|sasqia|sledink|indocom) Bot Search
            &lt;HOST&gt;\s-\s-\s.*MaMa CaSpEr
            &lt;HOST&gt;\s-\s-\s.*rk q kangen
            &lt;HOST&gt;\s-\s-\s.*Mozilla\/4\.76 \[ru\] \(X11; U; SunOS 5\.7 sun4u\)
            &lt;HOST&gt;\s-\s-\s.*perl post
ignoreregex =
</pre>
<p>Then update you fail2ban config file (<code>/etc/fail2ban/jail.local</code> in my case) with the appropriate section:</p>
<pre class="brush: plain;">
[apache-e107ddos]
enabled  = true
filter   = apache-e107ddos
port     = http,https
action   = iptables-allports
logpath  = /var/log/apache*/*access.log
maxretry = 1
</pre>
<p>Then restart your fail2ban service:</p>
<pre class="brush: bash;">
$ /etc/init.d/fail2ban restart
</pre>
<p>And you&#8217;ll start to get those nice logs:</p>
<pre class="brush: bash;">
$ tail -F /var/log/fail2ban.log
2010-06-23 16:05:37,417 fail2ban.actions: WARNING [apache-e107ddos] Ban 193.33.21.199
2010-06-23 16:05:58,113 fail2ban.actions: WARNING [apache-e107ddos] Ban 89.108.116.226
2010-06-23 16:05:58,521 fail2ban.actions: WARNING [apache-e107ddos] Ban 69.41.162.10
2010-06-23 16:05:58,541 fail2ban.actions: WARNING [apache-e107ddos] Ban 209.62.28.178
2010-06-23 16:06:03,573 fail2ban.actions: WARNING [apache-e107ddos] Ban 69.73.147.90
2010-06-23 16:06:42,975 fail2ban.actions: WARNING [apache-e107ddos] 69.41.162.10 already banned
2010-06-23 16:06:44,227 fail2ban.actions: WARNING [apache-e107ddos] 69.41.162.10 already banned
2010-06-23 16:06:54,238 fail2ban.actions: WARNING [apache-e107ddos] 69.73.147.90 already banned
2010-06-23 16:07:50,305 fail2ban.actions: WARNING [apache-e107ddos] Ban 80.55.107.74
</pre>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2006/05/how-to-localy-disable-python-cgi/" rel="bookmark" class="crp_title">How-to locally Disable Python CGI scripts.</a></li><li><a  href="http://kevin.deldycke.com/2007/05/feedburner-and-e107-integration/" rel="bookmark" class="crp_title">FeedBurner and e107 integration</a></li><li><a  href="http://kevin.deldycke.com/2007/03/e107-to-wordpress-v07-support-categories-and-private-pages/" rel="bookmark" class="crp_title">e107 to WordPress v0.7: support Categories and Private Pages</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/_qydZm6xsckU2ENjRbB_8drAMjg/0/da"><img src="http://feedads.g.doubleclick.net/~a/_qydZm6xsckU2ENjRbB_8drAMjg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_qydZm6xsckU2ENjRbB_8drAMjg/1/da"><img src="http://feedads.g.doubleclick.net/~a/_qydZm6xsckU2ENjRbB_8drAMjg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/JqO75uG-aLo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/08/blocking-e107-ddos-attack-fail2ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/08/blocking-e107-ddos-attack-fail2ban/</feedburner:origLink></item>
		<item>
		<title>Usefull Commands: Exim</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/6mugirY2lkA/</link>
		<comments>http://kevin.deldycke.com/2010/07/usefull-commands-exim/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 09:54:54 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Mail transfer agents]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1617</guid>
		<description><![CDATA[List mails in the queue: exim -bp View headers of a mail: exim -Mvh &#60;mail-id&#62; View body of a mail: exim -Mvb &#60;mail-id&#62; Remove a mail from the queue: exim -Mrm &#60;mail-id&#62; Remove all frozen mails in the queue: exiqgrep -z -i &#124; xargs exim -Mrm Related content:Usefull Commands: a SynthesisMaildir deduplication script in PythonUsefull [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>List mails in the queue:
<pre class="brush: bash;">
exim -bp
</pre>
</li>
<li>View headers of a mail:
<pre class="brush: bash;">
exim -Mvh &lt;mail-id&gt;
</pre>
</li>
<li>View body of a mail:
<pre class="brush: bash;">
exim -Mvb &lt;mail-id&gt;
</pre>
</li>
<li>Remove a mail from the queue:
<pre class="brush: bash;">
exim -Mrm &lt;mail-id&gt;
</pre>
</li>
<li>Remove all frozen mails in the queue:
<pre class="brush: bash;">
exiqgrep -z -i | xargs exim -Mrm
</pre>
</li>
</ul>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2006/12/usefull-commands-a-synthesis/" rel="bookmark" class="crp_title">Usefull Commands: a Synthesis</a></li><li><a  href="http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/" rel="bookmark" class="crp_title">Maildir deduplication script in Python</a></li><li><a  href="http://kevin.deldycke.com/2008/12/usefull-commands-dpkg-apt-aptitude/" rel="bookmark" class="crp_title">Usefull Commands: dpkg, apt and aptitude</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/HRTq3LhMYNT0uwlBAktnFQzGoRg/0/da"><img src="http://feedads.g.doubleclick.net/~a/HRTq3LhMYNT0uwlBAktnFQzGoRg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HRTq3LhMYNT0uwlBAktnFQzGoRg/1/da"><img src="http://feedads.g.doubleclick.net/~a/HRTq3LhMYNT0uwlBAktnFQzGoRg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/6mugirY2lkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/07/usefull-commands-exim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/07/usefull-commands-exim/</feedburner:origLink></item>
		<item>
		<title>How-to export/backup Lotus Notes mails</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/HnRbQd_Xr1c/</link>
		<comments>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:30:11 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[IBM Lotus Notes]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1574</guid>
		<description><![CDATA[You are using Lotus Notes as your mail platform. Unfortunately your mailbox has a quota you&#8217;ve already reached and you need space. A solution consist in exporting regularly your mails on your local machine to free up your inbox. Here is a little article documenting the export procedure using the fat desktop client. If screenshots [...]]]></description>
			<content:encoded><![CDATA[<p>You are using Lotus Notes as your mail platform. Unfortunately your mailbox has a quota you&#8217;ve already reached and you need space. A solution consist in exporting regularly your mails on your local machine to free up your inbox. Here is a little article documenting the export procedure using the fat desktop client.</p>
<p>If screenshots were taken with a french version, instructions given here are for the english one. This will give you enough clues to perform the export whatever the localisation is. The Lotus Notes version I used was the 7.0.2 release.</p>
<p>So first, let&#8217;s start Notes and open your mailbox. You should be on a screen similar to this one:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-mail-main-screen.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-mail-main-screen-300x217.png" alt="" title="lotus-notes-mail-main-screen" width="300" height="217" class="aligncenter size-medium wp-image-1577" /></a></p>
<p>Then, go to the <code>File</code> › <code>Database</code> › <code>New Copy</code> menu:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-database-export-menu.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-database-export-menu-300x217.png" alt="" title="lotus-notes-database-export-menu" width="300" height="217" class="aligncenter size-medium wp-image-1578" /></a></p>
<p>And you&#8217;ll get an export screen that&#8217;ll let you choose where to create a local copy of your database:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/export-screen.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/export-screen-300x199.png" alt="" title="export-screen" width="300" height="199" class="aligncenter size-medium wp-image-1579" /></a><br />
This will generate a <code>.nsf</code> file containing all your current mail.</p>
<p>Now that you have a backup, you are free to delete all your mails in Lotus Notes. By following this procedure regulary, you can create yearly or monthly archives of you mails without reaching the mailbox quota ! For example, this is how my local archive folder looks like:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-exported-mail-archives.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-exported-mail-archives.png" alt="" title="lotus-notes-exported-mail-archives" width="150" height="138" class="aligncenter size-full wp-image-1580" /></a></p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/" rel="bookmark" class="crp_title">Maildir deduplication script in Python</a></li><li><a  href="http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/" rel="bookmark" class="crp_title">Lotus Notes&#8217; Rich Text to MIME conversion error</a></li><li><a  href="http://kevin.deldycke.com/2010/08/how-to-fix-lotus-notes-disabled-tcp-ip-port-error/" rel="bookmark" class="crp_title">How-to fix Lotus Notes&#8217; disabled TCPIP port error</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/Nr-y86ziN3yam-QCZ6jdKnC0A5w/0/da"><img src="http://feedads.g.doubleclick.net/~a/Nr-y86ziN3yam-QCZ6jdKnC0A5w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Nr-y86ziN3yam-QCZ6jdKnC0A5w/1/da"><img src="http://feedads.g.doubleclick.net/~a/Nr-y86ziN3yam-QCZ6jdKnC0A5w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/HnRbQd_Xr1c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/</feedburner:origLink></item>
		<item>
		<title>Subversion commits and mail activity stream in iCalendar</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/wYTUpw4bFmo/</link>
		<comments>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:53:46 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[maildir]]></category>
		<category><![CDATA[Ohloh]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1546</guid>
		<description><![CDATA[Last week I consolidated all my code in my GitHub repository. I stumble upon an old script I haven&#8217;t publicized yet: svn2ical.py. This is a simple hack which get commit metadata out of a Subversion repository and generate an iCalendar file containing all commits of a given author. I used it back then to visualize [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I <a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/">consolidated all my code</a> in <a  href="http://github.com/kdeldycke/kev-code">my GitHub repository</a>. I stumble upon an old script I haven&#8217;t publicized yet: <code><a  href="http://github.com/kdeldycke/kev-code/blob/master/svn2ical.py">svn2ical.py</a></code>.</p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/icalendar-subversion-commits.png" class="thickbox no_icon" rel="gallery-1546" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/icalendar-subversion-commits-150x150.png" alt="" title="icalendar-subversion-commits" width="150" height="150" class="alignleft size-thumbnail wp-image-1551" /></a> This is a simple hack which get commit metadata out of a Subversion repository and generate an iCalendar file containing all commits of a given author. I used it back then to visualize in a calendar my commit activity. Nowadays this script is quite useless as services like <a  href="http://www.ohloh.net/accounts/kevin">Ohloh</a> and <a  href="http://github.com/kdeldycke">GitHub</a> provides great timeline and activity streams. But this script can still be usefull for private repositories.</p>
<p>And in the same spirit of this script, I uncovered <code><a  href="http://github.com/kdeldycke/kev-code/blob/master/maildir2ical.py">maildir2ical.py</a></code>, a script that look in a maildir folder for mails sent by a particular author, then generate an iCal file based on mail dates.</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/" rel="bookmark" class="crp_title">How-to fix bad commit authorship in Git</a></li><li><a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/" rel="bookmark" class="crp_title">Commit history reconstruction with Git</a></li><li><a  href="http://kevin.deldycke.com/2010/08/maildir-deduplication-script-python/" rel="bookmark" class="crp_title">Maildir deduplication script in Python</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/6k7L1CrL22crEBsatzfr-V5c86M/0/da"><img src="http://feedads.g.doubleclick.net/~a/6k7L1CrL22crEBsatzfr-V5c86M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6k7L1CrL22crEBsatzfr-V5c86M/1/da"><img src="http://feedads.g.doubleclick.net/~a/6k7L1CrL22crEBsatzfr-V5c86M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/wYTUpw4bFmo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/</feedburner:origLink></item>
		<item>
		<title>Commit history reconstruction with Git</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/FU5Q-64V_g8/</link>
		<comments>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:06:37 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[Init]]></category>
		<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1403</guid>
		<description><![CDATA[Here is something I wanted to do for 3 years. I wanted to migrate my code repository from this: to a proper revision control system, like Subversion. And I wanted to reconstruct the commit history with all the proper dates. That&#8217;s something I can&#8217;t do with SVN. Then came Git. I knew that Git was [...]]]></description>
			<content:encoded><![CDATA[<p>Here is something I wanted to do for 3 years. I wanted to migrate my code repository from this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/dumb-code-revision-control-system.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/dumb-code-revision-control-system-237x300.png" alt="" title="dumb-code-revision-control-system" width="237" height="300" class="aligncenter size-medium wp-image-1479" /></a><br />
to a proper <a  href="http://en.wikipedia.org/wiki/Revision_control">revision control system</a>, like Subversion. And I wanted to reconstruct the commit history with all the proper dates. That&#8217;s something I can&#8217;t do with SVN.</p>
<p>Then came Git. I knew that Git was powerful enough to let me manipulate the history (at my own risks). So I studied it during the last weeks until I found an acceptable way to do exactly what I had in mind. Here are my notes regarding this journey.</p>
<p>First, I need to get a local copy of <a  href="http://github.com/kdeldycke/kev-code">my GitHub repository</a>. That&#8217;s the place where I want all my code to reside at the end of the process.</p>
<pre class="brush: bash;">
cd ~
git clone git@github.com:kdeldycke/kev-code.git
</pre>
<p>In gitg, my untouched repository looks like this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-repository-at-start.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-repository-at-start-300x154.png" alt="" title="git-repository-at-start" width="300" height="154" class="aligncenter size-medium wp-image-1485" /></a><br />
Notice all the pre-existing code.</p>
<p>Let&#8217;s create a <code>history-injection</code> branch from the <code>init</code> tag. The later is the root of my repository, as explained in my previous post on <a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/">how I initialize my Git repositories</a>.</p>
<pre class="brush: bash;">
git branch history-injection init
</pre>
<p>Then switch to our brand new branch:</p>
<pre class="brush: bash;">
git checkout history-injection
</pre>
<p>We are now in a safe and contained environment in which we can do all our dirty stuff. Let&#8217;s move the file we want to add in our repository:</p>
<pre class="brush: bash;">
cp ~/scripts/website-backup-2006_04_30.py ~/kev-code/website-backup.py
</pre>
<p>Commit this new file locally, as usual, but with a commit date set in the past:</p>
<pre class="brush: bash;">
cd ~/kev-code
git add --all
git commit --all --date=&quot;2006-04-30 23:17&quot; -m &quot;First version of a script to backup several remote websites via FTP and make bzip2 archives.&quot;
</pre>
<p>I can repeat the last steps to reconstruct the commit history of my <code>website-backup.py</code> script:</p>
<pre class="brush: bash;">
cp ~/scripts/website-backup-2006_10_29.py ~/kev-code/website-backup.py
git commit --all --date=&quot;2006-10-29 23:13&quot; -m &quot;Delete previous backups if nothing has changed.&quot;
cp ~/scripts/website-backup-2006_11_01.py ~/kev-code/website-backup.py
git commit --all --date=&quot;2006-11-01 23:14&quot; -m &quot;Keep monthly bzip2 snapshots of backups and incremental backups of the last 32 days thanks to rdiff-backup.&quot;
(...)
</pre>
<p>At last, the <code>history-injection</code> branch contain all version of <code>website-backup.py</code>:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/history-injection-branch.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/history-injection-branch-300x187.png" alt="" title="history-injection-branch" width="300" height="187" class="aligncenter size-medium wp-image-1488" /></a></p>
<p>Now I&#8217;ll use the <code>rebase</code> directive to insert the <code>history-injection</code> branch back in the main line (aka <code>master</code>). This insertion will take place just after the <code>init</code> tag. This translates to the following Git command:</p>
<pre class="brush: bash;">
git rebase --preserve-merges --onto history-injection init master
</pre>
<p>The <code>--preserve-merges</code> option is really important here to not let Git takes too much initiatives. Without this option, all our banches between the <code>init</code> tag and the head of the <code>master</code> branch will be rebased. Believe me, that&#8217;s not what we want.</p>
<p>I no longer need my temporary <code>history-injection</code> branch. Let&#8217;s remove it:</p>
<pre class="brush: bash;">
git branch -D history-injection
</pre>
<p>Now you should have a unique and straight history line from <code>init</code> tag to <code>master</code> head. Like this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/rebased-history-injection-branch.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/rebased-history-injection-branch-300x187.png" alt="" title="rebased-history-injection-branch" width="300" height="187" class="aligncenter size-medium wp-image-1490" /></a></p>
<p>Commits appears to be ordered as they should but you may not be as lucky as me. In fact the recently merge commits are stuck at the &#8220;bottom&#8221; (just after the <code>init</code> tag, as we asked Git to do on rebase). And you may find you in a situation where commits of the whole master branch are not chronologically ordered.</p>
<p>Here is such an example. It happened when I tried to rebase the full history of my <code>system-backup.py</code> script:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/system-backup-script-rebase.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/system-backup-script-rebase-300x187.png" alt="" title="system-backup-script-rebase" width="300" height="187" class="aligncenter size-medium wp-image-1494" /></a></p>
<p>I haven&#8217;t found a way to tell Git how to rebase by following commit dates. I know that something can be done with a command like:</p>
<pre class="brush: bash;">
git rebase --interactive init
</pre>
<p>But I haven&#8217;t succeeded yet. So I left these commits unsorted for now. I may write another blog post in the future if I find a way to cleanly sort them. In the mean time, If you have a solution, I&#8217;ll be happy to ear that !</p>
<p>Finally, when we have something that looks good, we can push our changes to our remote GitHub repository:</p>
<pre class="brush: bash;">
git push origin
</pre>
<p>But Git will complain: changing already-pushed commits is bad. As I <a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/">explained several weeks ago</a>, it&#8217;s dangerous but I don&#8217;t care. I&#8217;m the only user of this repository. So let&#8217;s bypass Git&#8217;s wise warnings:</p>
<pre class="brush: bash;">
git push origin +master:master
</pre>
<p>Et voilà ! By repeating these steps several times, I moved my code to GitHub, with a consistent and clean commit history.</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/" rel="bookmark" class="crp_title">How I initialize my Git repositories</a></li><li><a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/" rel="bookmark" class="crp_title">How-to fix bad commit authorship in Git</a></li><li><a  href="http://kevin.deldycke.com/2010/02/usefull-commands-git/" rel="bookmark" class="crp_title">Usefull Commands: Git</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/FU5Q-64V_g8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.841 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-03 09:23:28 -->
