<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Icheb's blog &#187; Programming stuff</title>
	<atom:link href="http://www.icheb.info/category/programming-stuff/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.icheb.info</link>
	<description>Welcome to my unupdated, not really interesting blog</description>
	<lastBuildDate>Sun, 31 Jan 2010 20:59:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The latest IXR library</title>
		<link>http://www.icheb.info/2009/03/the-latest-ixr-library/</link>
		<comments>http://www.icheb.info/2009/03/the-latest-ixr-library/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 22:02:52 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>
		<category><![CDATA[IXR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.icheb.info/?p=72</guid>
		<description><![CDATA[It seems IXR (the Incutio XML-RPC library) is no longer available from a number of websites. So I&#8217;ve uploaded the latest version I&#8217;m currently using for projects. This version does contain most of the changes by Rogier van Dongen, added SSL support (requires CURL) and so on. This version does contain a few small changes, [...]]]></description>
			<content:encoded><![CDATA[<p>It seems IXR (the Incutio XML-RPC library) is no longer available from a number of websites.</p>
<p>So I&#8217;ve uploaded the latest version I&#8217;m currently using for projects. This version does contain most of the changes by Rogier van Dongen, added SSL support (requires CURL) and so on.</p>
<p>This version does contain a few small changes, to allow certain features to be used in my projects, but no one should have any problems with it.</p>
<p>If you have idea&#8217;s about modifications, please let me know!</p>
<p>You can see the source at: <a href="http://www.icheb.info/IXR.phps">http://www.icheb.info/IXR.phps</a></p>
<p>And download is available from: <a href="http://www.icheb.info/IXR.txt">http://www.icheb.info/IXR.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2009/03/the-latest-ixr-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another bug in the IXR XML-RPC lib</title>
		<link>http://www.icheb.info/2007/05/another-bug-in-the-ixr-xml-rpc-lib/</link>
		<comments>http://www.icheb.info/2007/05/another-bug-in-the-ixr-xml-rpc-lib/#comments</comments>
		<pubDate>Tue, 01 May 2007 16:21:22 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>
		<category><![CDATA[IXR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2007/05/01/another-bug-in-the-ixr-xml-rpc-lib/</guid>
		<description><![CDATA[Some time ago I&#8217;d written a modification to the XML-RPC lib from Incutio (see http://www.icheb.info/2007/01/28/ixr-incutio-xml-rpc-with-ssl-support/). But there was more&#8230; Today, a friend mailed me with a problem (and solution) for a new problem everyone has missed so far. I&#8217;ve placed a modified version online at: http://www.icheb.nl/icheb_info_blog/IXR/IXR_Library.inc.php_2.txt If you actually want to know what&#8217;s wrong, and [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I&#8217;d written a modification to the XML-RPC lib from Incutio (see <a href="http://www.icheb.info/2007/01/28/ixr-incutio-xml-rpc-with-ssl-support/">http://www.icheb.info/2007/01/28/ixr-incutio-xml-rpc-with-ssl-support/</a>).</p>
<p>But there was more&#8230; Today, a friend mailed me with a problem (and solution) for a new problem everyone has missed so far.<br />
I&#8217;ve placed a modified version online at: <a href="http://www.icheb.nl/icheb_info_blog/IXR/IXR_Library.inc.php_2.txt">http://www.icheb.nl/icheb_info_blog/IXR/IXR_Library.inc.php_2.txt</a></p>
<p>If you actually want to know what&#8217;s wrong, and why, click the more button below <img src='http://www.icheb.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
<span id="more-48"></span><br />
<em>Recently, I had to create some webservices using the IXR Library.</em></p>
<p><em>After having designed the webservices, I created the server according to a basic IXRServer extend.</em></p>
<p><em>Just to test, I then wrote a simple client, which worked just fine.<br />
However, when I wanted to migrate the PHP based client to an AJAX based web client, I stumbled upon some issues.</em></p>
<p><em>Let me try to explain this by example.</em></p>
<p><em>A pretty normal XML request for IXR looks as follows (without the xml declaration):<br />
</em><code>&lt;pre lang="xml" line="1"&gt;</code></p>
<p>ixr.test.fetchVar</p>
<p>testvar testvar2<br />
&lt;/pre&gt;</p>
<p><em>Take note of the fact that this request has NO typing information, for it cannot be generated by the JS libraries I use.<br />
Under normal circumstances (using the IXRClient), the parameter type information would have shown, as in e.g.:</em><br />
<code>&lt;pre lang="xml" line="1"&gt;</code> testvar testvar2&lt;/pre&gt;<br />
<em><br />
It is exactly this however, that creates the issue. Where the normal IXRCLient will correctly return data,<br />
The AJAX based client will not show anything.</em></p>
<p><em>Digging into the code, I discovered the error. Things start to go wrong as soon as there’s NO typing information available for a parameter.</em></p>
<p><em>Dumping my data, I discovered that all ‘newline’ characters were left intact.<br />
In the case as described, there’s more then one: just after , after and after </em></p>
<p><em>For the first encountered variable, I this end up with a parsed value of “\n\n\ntestvar”<br />
Every encountered newline character seems to be added to the value, but NOT removed, as I expected.</em></p>
<p><em>Now for a solution:<br />
Inside the IXRMessage, things are parsed by an XMLParser.<br />
Inside the ‘tag_close’ call, things are rendered and converted to contain correct values.<br />
Except for in case, the case where there’s no typing information!<br />
In every other case (except for base64), the value to be set is first trim()’d.</em></p>
<p><em>The code for the ‘value’ tag, however, is NOT:</em><br />
<code>&lt;pre lang="PHP" line="1"&gt;</code> case &#8216;value&#8217;:<br />
// &#8220;If no type is indicated, the type is string.&#8221;<br />
if (trim($this-&gt;_currentTagContents) != &#8221;) {<br />
$value = (string)$this-&gt;_currentTagContents;<br />
$this-&gt;_currentTagContents = &#8221;;<br />
$valueFlag = true;<br />
}<br />
break;<br />
&lt;/pre&gt;<br />
<em><br />
As one can see from the code above, the if-statement does a trim, but the trimmed string is NEVER assigned.<br />
One possible solution for the code above could be (I decided to break down in two lines):</em><br />
<code>&lt;pre lang="php" line="1"&gt;</code><br />
if (trim($this-&gt;_currentTagContents) != &#8221;) {<br />
$value = trim($this-&gt;_currentTagContents);<br />
$value = (string)$value;<br />
$this-&gt;_currentTagContents = &#8221;;<br />
$valueFlag = true;<br />
}<br />
break;<br />
&lt;/pre&gt;<br />
<em></em></p>
<p><em>This solution now also strips the surrounding whitespace, tabs, newlines, etc from the input, as can be expected!</em></p>
<p>Rogier van Dongen, thank you for this patch <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2007/05/another-bug-in-the-ixr-xml-rpc-lib/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IXR (Incutio XML-RPC) with SSL support</title>
		<link>http://www.icheb.info/2007/01/ixr-incutio-xml-rpc-with-ssl-support/</link>
		<comments>http://www.icheb.info/2007/01/ixr-incutio-xml-rpc-with-ssl-support/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 13:24:48 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>
		<category><![CDATA[IXR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2007/01/28/ixr-incutio-xml-rpc-with-ssl-support/</guid>
		<description><![CDATA[I&#8217;ve been looking for this for ages now, but this morning I actually found someone that had done this, and is still following the XML-RPC conventions. (I&#8217;ve also got a closed source version of this, included in some projects, but it doesn&#8217;t follow the XML-RPC conventions anymore). So I was very glad to find this. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking for this for ages now, but this morning I actually found someone that had done this, and is still following the XML-RPC conventions. (I&#8217;ve also got a <em>closed source</em> version of this, included in some projects, but it doesn&#8217;t follow the XML-RPC conventions anymore).</p>
<p>So I was very glad to find <a href="http://griffin.oobleyboo.com/archive/xmlrpc_1_7_1_release" target="_blank">this</a>. But due to me not using a verified SSL certificate, I ran into some problems.</p>
<p><span id="more-45"></span>I kept getting the following error:</p>
<p><code>* SSL certificate problem, verify that the CA cert is OK. Details:<br />
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed</code><br />
After reading through the code, I created a modified version that solves this issue (just added an additional CURL command to ignore the problem), you can download it from<a href="http://www.icheb.nl/icheb_info_blog/IXR/IXR_Library.inc.php.txt" target="_blank"> this location</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2007/01/ixr-incutio-xml-rpc-with-ssl-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WTF? &#8211; I did something that qualifies for &#8216;The Daily WTF&#8217;</title>
		<link>http://www.icheb.info/2006/11/wtf-i-did-something-that-qualifies-for-the-daily-wtf/</link>
		<comments>http://www.icheb.info/2006/11/wtf-i-did-something-that-qualifies-for-the-daily-wtf/#comments</comments>
		<pubDate>Sat, 18 Nov 2006 21:20:18 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Nerd stories]]></category>
		<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/11/18/wtf-i-did-something-that-qualifies-for-the-daily-wtf/</guid>
		<description><![CDATA[For the first time, I created a critical WTF-style problem. Luckily it wasn&#8217;t on something critical. After writing some scripts, I&#8217;ve able to recover everything (I think)&#8230; Wtf did I do? Today, I was working on transferring old backups offsite to our office backup drive. I used to use a nice script for this I [...]]]></description>
			<content:encoded><![CDATA[<p>For the first time, I created a critical <a title="The Daily WTF" target="_blank" href="http://thedailywtf.com/Default.aspx">WTF-style problem</a>. Luckily it wasn&#8217;t on something critical.</p>
<p>After writing some scripts, I&#8217;ve able to recover everything (I think)&#8230;</p>
<p><span id="more-42"></span> <strong>Wtf did I do?<img align="right" title="Tux inside, idiot outside" alt="Tux inside, idiot outside" src="http://www.icheb.nl/mirrors/blogzooi/tuxandidiot.jpg" /></strong><br />
Today, I was working on transferring old backups <em>offsite</em> to our office backup drive. I used to use a nice script for this I wrote back in 2004 called shifter.sh. It would create the correct dirs (by date) for each reseller on each server, and move the latest backups there, after that, it would chown everything back the way it should be to allow transport/control by ftp. Well, that&#8217;s what it should do.</p>
<p>Due to something called &#8216;<em>old stuff that shouldn&#8217;t be used anymore</em>&#8216; I recently moved all clients away from a certain server. So I opened up the shifter file and deleted the lines belonging to the <em>/home/backupsys/horus/</em> dirs (or server). Well, took about 2 minutes. What I didn&#8217;t see though, was that the code for the next server had an &#8216;cd ..&#8217; 2 times, to get back to /home/backupsys from the /home/backupsys/{date}/.</p>
<p>So far so good, I ran the script, however it seemed to be taking longer than I could remember. After reading some stuff on the daily wtf some time ago about moving stuff wrong, I canceled the script and tried to see what the heck went wrong. Well, first of all, the dirs I needed to continue weren&#8217;t there. Secondly, I found this desturbing image:</p>
<p><em>ls -alh /</em></p>
<pre>drwxr-xr-x   23 root     root         4.0K Nov 18 14:19 .
drwxr-xr-x   23 root     root         4.0K Nov 18 14:19 ..
drwxr-xr-x    2 backupsys backupsys     4.0K Nov 18 14:19 11-18-06
-rw-------    1 backupsys backupsys      13K Nov 18 14:21 aquota.group
-rw-------    1 backupsys backupsys      15K Nov 18 14:21 aquota.user
-rw-r--r--    1 root     root            0 Oct 11 18:29 .autofsck
drwxr-xr-x    2 backupsys backupsys     4.0K Apr  2  2005 bin
drwxr-xr-x    3 backupsys backupsys     4.0K Aug 20  2004 boot
drwxr-xr-x   20 backupsys backupsys     116K Oct 11 18:30 dev
drwxr-xr-x   46 backupsys backupsys     4.0K Nov 18 00:10 etc
drwx--x--x   22 backupsys backupsys     4.0K Oct 27 22:21 home
drwxr-xr-x    2 backupsys backupsys     4.0K Jan 25  2003 initrd
drwxr-xr-x    9 backupsys backupsys     4.0K Jun 10  2005 lib
drwx------    2 backupsys backupsys      16K Aug 19  2004 lost+found
drwxr-xr-x    2 backupsys backupsys     4.0K Jan 28  2003 misc
drwxr-xr-x    2 backupsys backupsys     4.0K Aug 18  2004 mnt
drwxr-xr-x    2 backupsys backupsys     4.0K Jan 25  2003 opt
dr-xr-xr-x  101 backupsys backupsys        0 Oct 11 20:29 proc
drwxr-x---   13 backupsys backupsys     4.0K Nov 18 14:22 root
drwxr-xr-x    2 backupsys backupsys     8.0K Jun 10  2005 sbin
drwxrwxrwt   12 backupsys backupsys     4.0K Nov 18 14:23 tmp
drwxr-xr-x   18 backupsys backupsys     4.0K Aug  6 14:38 usr
drwxr-xr-x   19 root     root         4.0K Oct 21  2004 var</pre>
<p><strong>Wha does this mean?</strong><br />
What this means, besides the /var every dir is owned by the wrong user. The script was killed by me while it was processing the /usr/. I am happy about the fact I killed it, because the next step would be to <em>cd ..</em> a few more times, and then starting to move everything again. Which would have meant, it would have created a situation like described <a title="WTF ?!!" target="_blank" href="http://thedailywtf.com/forums/thread/101956.aspx">here</a>.</p>
<p><strong>So, WTF happend?!!</strong><br />
Well, rather easy, there were too much <em>cd ..</em>&#8216;s in the shifter.sh code. So ultimately it went to the /. And due to the fact I usually am too lazy to use the right user for these processes, I had root. So the script started to chown EVERY file on the / recursively to &#8216;backupsys:backupsys&#8217;. This usually is very bad. Luckily I canceled the process before the shell died, but I was unable to open a new shell from ssh.</p>
<p><strong>Repairing the problem</strong><br />
As I said, I&#8217;m lazy, so I needed a fast way to repair this. A friend of mine, while laughing his arse off, thought of a nice idea, the ugly type of idea&#8217;s I&#8217;m known of (at least, that&#8217;s what some people think of me <img src='http://www.icheb.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  ). I have another old server with the same distro, so I created a quick and dirty script in PHP to write a &#8216;<a title="Source code to my beautiful creation" target="_blank" href="http://www.icheb.nl/mirrors/blogzooi/owner_lister.txt">chown script</a>&#8216;. This script created chown commands based on the server it is on, which can then be transferred to the server with the &#8216;owner problem&#8217;. After using this script, I used another script I created earlier for Direct Admin, to restore /home ownerships.</p>
<p>In total, it took about 2 hours to f*ck the server up, and restore it. And I did it without any noticeable downtime on ANY service <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Does this still qualify for The Daily WTF?</p>
<p>(second note; this post might look a bit f*cked. This is caused by something in the WordPress editor thingy, it won&#8217;t parse my entered crap right)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/11/wtf-i-did-something-that-qualifies-for-the-daily-wtf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Penistime &#8211; De perfecte manier om te meten of een bak genoeg uptime heeft</title>
		<link>http://www.icheb.info/2006/11/penistime-de-perfecte-manier-om-te-meten-of-een-bak-genoeg-uptime-heeft/</link>
		<comments>http://www.icheb.info/2006/11/penistime-de-perfecte-manier-om-te-meten-of-een-bak-genoeg-uptime-heeft/#comments</comments>
		<pubDate>Wed, 01 Nov 2006 16:24:43 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/11/01/penistime-de-perfecte-manier-om-te-meten-of-een-bak-genoeg-uptime-heeft/</guid>
		<description><![CDATA[Net kwam ik op IRC een linkje tegen naar een site die inmiddels dood was, en enkel nog in de google cache bestond. Hier werd omschreven hoe penistime.c eruit zag, de beste manier om te meten of je linux bak lang genoeg aan staat. Geen nerdfights meer om te zien wie de beste uptime heeft, [...]]]></description>
			<content:encoded><![CDATA[<p>Net kwam ik op IRC een linkje tegen naar een site die inmiddels dood was, en enkel nog in de google cache bestond. Hier werd omschreven hoe penistime.c eruit zag, de beste manier om te meten of je linux bak lang genoeg aan staat. Geen nerdfights meer om te zien wie de beste uptime heeft, gewoon even meten met penistime <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><span id="more-39"></span></p>
<p>Compilen gaat zoals gewoonlijk met &#8216;gcc penistime.c -o penistime&#8217;.</p>
<p>Succes ermee <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Te downloaden @ <a target="_blank" href="http://www.icheb.nl/mirrors/blogzooi/penistime.c">http://www.icheb.nl/mirrors/blogzooi/penistime.c</a> (wordpress snapt de includes niet)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/11/penistime-de-perfecte-manier-om-te-meten-of-een-bak-genoeg-uptime-heeft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Client Exec addons competition</title>
		<link>http://www.icheb.info/2006/10/client-exec-addons-competition/</link>
		<comments>http://www.icheb.info/2006/10/client-exec-addons-competition/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 21:48:56 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/10/27/client-exec-addons-competition/</guid>
		<description><![CDATA[Some time ago I received a request to enter in the Client Exec addons competition. Well, I&#8217;ve written 2 addons for usage within my company, and modified another one to output more usefull statistical data. Due to the fact these plugins are licensed as LGPL by me, I thought, why not attach them to my [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I received a request to enter in the <a target="_blank" title="Client Exec" href="http://www.clientexec.com/newsite/">Client Exec</a> addons competition.</p>
<p>Well, I&#8217;ve written 2 addons for usage within <a target="_blank" title="my company" href="http://www.sebsoft.nl">my company</a>, and modified another one to output more <em>usefull</em> statistical data.</p>
<p>Due to the fact these plugins are licensed as <a target="_blank" title="What is this LGPL ?" href="http://en.wikipedia.org/wiki/LGPL">LGPL</a> by me, I thought, why not attach them to my blog in an entry <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><span id="more-38"></span></p>
<p>First of all, I haven&#8217;t heard back from Client Exec yet, so I&#8217;m unsure if the addons have been accepted into the competition, and/or if I&#8217;m gonna win prizes with them. Second of all, there are two plugins, plugin number one has quite ugly code, it does the job. But I&#8217;m unsure if it will even work with more recent Client Exec versions.</p>
<p><strong>What the heck do these plugins do?</strong></p>
<p>Plugin 1 ( <a target="_blank" title="Download location" href="http://www.icheb.nl/icheb_info_blog/ClientExec/Invoice_overview_report.rar">http://www.icheb.nl/icheb_info_blog/ClientExec/Invoice_overview_report.rar</a> )  is able to show a lot of details about all the invoices created until now in this year. Furthermore, it can provide a direct link to .pdf versions of the invoices, if the readme is executed like I&#8217;ve written it. If you modify this plugin, please let me know. And please don&#8217;t sell it or anything. It&#8217;s only LGPL so that it can be included in CE if I&#8217;d win the competition.</p>
<p>Plugin 2 ( <a target="_blank" title="Download location" href="http://www.icheb.nl/icheb_info_blog/ClientExec/subscriber_lifetime_report.rar">http://www.icheb.nl/icheb_info_blog/ClientExec/subscriber_lifetime_report.rar</a> ) was not originally written by me. All I&#8217;ve done was extending the functions by showing the total amount a subscriber/customer has paid until now. So you&#8217;re able to get a better idea if your best customer is really your best customer <img src='http://www.icheb.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><strong>Help, help, I&#8217;m blind, where do I download these plugins?</strong><br />
Plugin 1 (total invoice overview, with all kinds of details) can be downloaded at:  http://www.icheb.nl/icheb_info_blog/ClientExec/Invoice_overview_report.rar</p>
<p>Plugin 2 (customer lifetime revenue) can be downloaded at: http://www.icheb.nl/icheb_info_blog/ClientExec/subscriber_lifetime_report.rar</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/10/client-exec-addons-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation of Ruby on Rails on Debian Sarge</title>
		<link>http://www.icheb.info/2006/10/installation-of-ruby-on-rails-on-debian-sarge/</link>
		<comments>http://www.icheb.info/2006/10/installation-of-ruby-on-rails-on-debian-sarge/#comments</comments>
		<pubDate>Wed, 18 Oct 2006 22:13:41 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/10/19/installation-of-ruby-on-rails-on-debian-sarge/</guid>
		<description><![CDATA[Just to prove I’m still alive, I’ll explain some stuff I did today. Today, I decided I wanted to install Ruby on Rails. So I’d copied a virtual Debian Sarge machine on the Sebsoft VPS server, so I could do it from a (somewhat too) clean start. First it took me about 45 minutes to [...]]]></description>
			<content:encoded><![CDATA[<p>Just to prove I’m still alive, I’ll explain some stuff I did today.<span lang="EN-GB"><img align="right" alt="Ruby on Rails" title="Ruby on Rails" src="http://www.icheb.info/wp-content/uploads/2006/10/rails.png" /></span></p>
<p><span lang="EN-GB">Today, I decided I wanted to install Ruby on Rails.</span></p>
<p><span lang="EN-GB" /></p>
<p class="MsoNormal"><span lang="EN-GB">So I’d copied a virtual Debian Sarge machine on the <a title="Yeah, using VPS of my own company" target="_blank" href="http://www.sebsoft.nl">Sebsoft</a> VPS server, so I could do it from a (somewhat too) clean start.</span></p>
<p class="MsoNormal"><span lang="EN-GB">First it took me about 45 minutes to get the VPS to work like it should. But after that, I could finally begin installing.</span></p>
<p class="MsoNormal"><span lang="EN-GB">My goal was to spend a maximum of 45 minutes to get everything working and after that spend 20 minutes to create a blog, like the <a title="Warning, clicking this link will open a .mov movie" target="_blank" href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov">blog screencast</a> on the <a target="_blank" href="http://www.rubyonrails.org/">Ruby on Rails website</a>.</span></p>
<p><span id="more-37"></span></p>
<p class="MsoNormal"><span lang="EN-GB"><strong>Begin</strong><br />
How to begin, well, I’d found a nice tutorial that was nice and easy to follow, to get the VPS cleaned up a bit, and install some basic crap, to get everything going. So after following <a target="_blank" href="http://www.howtoforge.com/ruby_on_rails_apache2_fastcgi_debian_p3">http://www.howtoforge.com/ruby_on_rails_apache2_fastcgi_debian_p3</a> I had a nice MySQL server, with Postfix, that could talk SSL.</span>
</p>
<p class="MsoNormal"><span lang="EN-GB">Whohoo, nice, first time I worked with Postfix, and well, copypasting everything is just easier and faster <img src='http://www.icheb.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</span></p>
<p class="MsoNormal"><span lang="EN-GB">The next step was on <a title="*need more links*" target="_blank" href="http://www.howtoforge.com/ruby_on_rails_apache2_fastcgi_debian_p4">page 4</a> of the same howto. However, after installing the FastCGI lib and the mod_fastcgi for Apache 2.0, I ran into a brick wall. The server is actually i686, but gives back errors when trying to compile in a certain way, so I have to compile everything with i386 support, too lazy to repeat the installation of the VPS <img src='http://www.icheb.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</span></p>
<p class="MsoNormal"><span lang="EN-GB">So I switched to <a target="_blank" href="http://www.debian-administration.org/articles/329">http://www.debian-administration.org/articles/329</a>. Granted, I didn’t install ‘apache libapache-mod-fastcgi’ like it said there, but that part already worked.</span></p>
<p class="MsoNormal"><span lang="EN-GB"><br />
After about one hour and a few minutes, I had everything ready, and added the first vhost to Apache’s config. Did take an additional chmod 777 but after this it worked like a charm.</span>
</p>
<p class="MsoNormal"><span lang="EN-GB">In 20 minutes I had a basic scaffolding based blog created in Ruby on Rails. It took somewhat longer due to the fact I was using a MySQL console and VIM to enter everything, but I’ve got to admit, RoR really is fast when trying to create something.</span></p>
<p class="MsoNormal"><span lang="EN-GB"><br />
Converting scaffolding into actual code as an app basis rules!</span>
</p>
<p class="MsoNormal"><span lang="EN-GB">Just wish I knew more about Ruby. </span></p>
<p><em>Alright, this is something for the next blog entry, never ever again use <strike>Micro$oft</strike> <strike>M$</strike> MS Word to type the actual entry in, it takes more time to change the crap it outputs to something usefull than to manually code in the style you want&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/10/installation-of-ruby-on-rails-on-debian-sarge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.rubyonrails.org/video/rails_take2_with_sound.mov" length="54364199" type="video/quicktime" />
		</item>
		<item>
		<title>Asterisk and RxFax, trouble or not?</title>
		<link>http://www.icheb.info/2006/08/asterisk-and-rxfax-trouble-or-not/</link>
		<comments>http://www.icheb.info/2006/08/asterisk-and-rxfax-trouble-or-not/#comments</comments>
		<pubDate>Mon, 07 Aug 2006 22:29:35 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/08/08/asterisk-and-rxfax-trouble-or-not/</guid>
		<description><![CDATA[Some time ago, I posted at the Asterisk-users mailinglist. I had a problem, with RxFax. It wasn&#8217;t working at all anymore. However it had worked before. In this posting, I&#8217;ll describe the problem and a possible fix. However I can&#8217;t call this a fix, as it&#8217;s a feature. Not a bug. First of all, my [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, I posted at the Asterisk-users mailinglist. I had a problem, with RxFax. It wasn&#8217;t working at all anymore. However it had worked before. In this posting, I&#8217;ll describe the problem and a possible fix. However I can&#8217;t call this a fix, as it&#8217;s a feature. Not a bug.<br />
<span id="more-33"></span> First of all, my original e-mail to the mailinglist:</p>
<p><em>Hi,</em></p>
<p><em>For some time now, I&#8217;ve been fighting with RxFax and Asterisk.<br />
I had it working for some time, however, for some reason it just stopped  working, I guess someone updated Asterisk or something, don&#8217;t know exactly.</em></p>
<p><em>At the moment I keep getting errors while entering the RxFax stage of a  call.<br />
But due to the fact RxFax does not contain any code to directly interact  with an RTP stream, it uses SpanDSP, I guess the problem is somewhere in  SpanDSP.</em></p>
<p><em>From my logs, I get:<br />
&#8211; Goto (macro-faxreceive,s,7)<br />
&#8211; Executing RxFAX(&#8220;SIP/-ff83&#8243;,  &#8220;/var/spool/asterisk/fax/fax/asterisk-8558-1149842081.2.tif&#8221;) in new stack<br />
Jun  9 10:34:56 WARNING[8558]: chan_sip.c:1829 sip_write: Asked to  transmit frame type 64, while native formats is 4 (read/write = 64/4)<br />
Jun  9 10:34:56 WARNING[8558]: chan_sip.c:1829 sip_write: Asked to  transmit frame type 64, while native formats is 4 (read/write = 64/4)<br />
Jun  9 10:34:56 WARNING[8558]: chan_sip.c:1829 sip_write: Asked to  transmit frame type 64, while native formats is 4 (read/write = 64/4)</em></p>
<p><em>The basic call setup works perfectly, but whenever I try to enter a fax  stage, I get this error.<br />
According to the SIP call initialisation, there are no problems with  formats, and the agreed upon format is 4 (aka ulaw).<br />
At the moment I get these errors, there aren&#8217;t any SIP transmissions, so  were in mid-session&#8230;</em></p>
<p><em>I guess the problem is somewhere in SpanDSP or a transcoding error  between slin and ulaw in chan_sip.</em></p>
<p><em>I&#8217;ve confirmed this problem on 2 servers so far.<br />
The first server is our fax receiver (production), where this problem  started. But it also appeared when I tried to directly connect a fax  transmission from a PSTN line with an Sipura 3000 as FXO (forwarding the  audio stream over our NAT to our local Asterisk server, with the ulaw  codec).<br />
Both servers are Debian Sarge servers.</em></p>
<p><em>Confirmed this problem in:<br />
Asterisk 1.0.7 (default .deb packages, being with SpanDSP 0.0.2pre10-3)<br />
Asterisk 1.0.11 (after reading  <a class="moz-txt-link-freetext" href="http://lists.digium.com/pipermail/asterisk-users/2006-May/151843.html">http://lists.digium.com/pipermail/asterisk-users/2006-May/151843.html</a>,  SpanDSP 0.0.2pre26)<br />
Asterisk 1.2.8 (from source, with SpanDSP 0.0.2pre26)<br />
Asterisk 1.2.7.1 (from source, with SpanDSP 0.0.2pre25)</em></p>
<p><em>Does anyone know of a way to get it working again?</em></p>
<p><em>It has worked before, so I know it&#8217;s perfectly possible with Debian Sarge.<br />
Furthermore I&#8217;ve set this up on Red Hat Enterprise servers without this  problem (with Asterisk 1.0.9). So I don&#8217;t believe this is an error  caused by myself. </em></p>
<p>Well, some time later, I posted the message again, on the -dev mailinglist. At that time the maintainer of the SpanDSP lib (<a target="_blank" href="http://www.soft-switch.org/">Steve Underwood</a>) responded to me, it was a user problem. No futher details.</p>
<p>So time after that, <a target="_blank" href="http://www.gaam-engineering.ch/index_home.php">Lukas Gaam</a> contacted me, he had the exact same problem. And due to him, a solution has been found now.</p>
<p>Basically, the problem can be best described like:</p>
<p><em>When SpanDSP is called for RxFax() after audio has been transmitted to  the calling party, SpanDSP fails. If RxFax is activated before other  audio is transmitted by Asterisk over the channel, it works fine.<br />
So it seems, SpanDSP is having problems when it&#8217;s not the first thing  that produces audio.<br />
If a extension is build up like:<br />
exten => s,1,Answer()<br />
exten => s,2,Ringing()<br />
exten => s,3,Wait(x)<br />
exten => s,4,Macro(faxreceive&#8230;)<br />
It fails.</em></p>
<p><em>If however Ringing() is removed, Asterisk will not produce any audio  before starting the RxFax, and it works perfectly. </em></p>
<p>After Lukas discovered this, we tested it with different audio source, like Playback(), which seemed to cause the same issue.</p>
<p>So the fix would be to have perfect silence before calling the RxFax command / macro.</p>
<p>My current home dialplan has been changed to look like:</p>
<p><em>exten => 1,1,Answer<br />
exten => 1,n,NVFaxDetect(5)<br />
exten => 1,n,Ringing<br />
exten => 1,n,Wait,5</em></p>
<p>Which makes sure faxes are redirected to the fax extension, however it&#8217;s a pain in the ass, the fax detect takes so long, as some callers start talking before getting the Ringing event.</p>
<p>Perhaps someone can use this to fix problems <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Lukas, thanks for providing the final solution <img src='http://www.icheb.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/08/asterisk-and-rxfax-trouble-or-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk, queue&#8217;s, agents en doorschakeling</title>
		<link>http://www.icheb.info/2006/04/asterisk-queues-agents-en-doorschakeling/</link>
		<comments>http://www.icheb.info/2006/04/asterisk-queues-agents-en-doorschakeling/#comments</comments>
		<pubDate>Thu, 20 Apr 2006 07:23:14 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/2006/04/20/asterisk-queues-agents-en-doorschakeling/</guid>
		<description><![CDATA[De kracht van een product als Asterisk is, naast dat het open source is, dat het in staat is om behoorlijk veel te doen. Zo kan je een compleet callcenter ermee inrichting. En dan ben je nog niet eens zo lang bezig, zodra je weet wat je doet. Het probleem begint echter zodra je er [...]]]></description>
			<content:encoded><![CDATA[<p>De kracht van een product als Asterisk is, naast dat het open source is, dat het in staat is om behoorlijk veel te doen. Zo kan je een compleet callcenter ermee inrichting. En dan ben je nog niet eens zo lang bezig, zodra je weet wat je doet. Het probleem begint echter zodra je er een callcenter ermee hebt ingericht en er problemen zijn.</p>
<p><span id="more-29"></span>Het ziet er naar uit dat er een smerige bug in Asterisk zit, waarmee het kan gebeuren dat als een agent een call doorschakelt (call afkomstig van de queue waarop de agent is aangemeld), dat de agent pas weer een nieuwe call ontvangen zodra de doorgeschakelde call is afgerond. Dat is natuurlijk een absurde situatie. Als je dan in een queue zit te wachten van een callcenter, terwijl er eigenlijk helemaal geen mensen aan het praten zijn&#8230; Niet echt handig.</p>
<p>Na een dag zoeken was de oplossing vrij simpel. Door eerst een Transfer() aan te roepen alvorens een Dial() naar buiten te doen maakt Asterisk een nieuwe &#8216;thread&#8217; aan, zo lijkt het, waardoor het probleem opgelost is, zolang er op de #-manier wordt doorgeschakeld. Bij doorschakeling via de transfertoets manier werkt het jammer genoeg niet, maar goed. Ook dit is al een oplossing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2006/04/asterisk-queues-agents-en-doorschakeling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISO landen in het Nederlands</title>
		<link>http://www.icheb.info/2005/12/iso-landen-in-het-nederlands/</link>
		<comments>http://www.icheb.info/2005/12/iso-landen-in-het-nederlands/#comments</comments>
		<pubDate>Thu, 22 Dec 2005 07:58:38 +0000</pubDate>
		<dc:creator>Icheb</dc:creator>
				<category><![CDATA[Programming stuff]]></category>

		<guid isPermaLink="false">http://www.icheb.info/?p=21</guid>
		<description><![CDATA[Veel mensen hebben er moeite mee. Voor een of andere web applicatie heb je om een of andere reden een overzicht nodig van de Nederlandse landnamen, maar verder wel volgens het ISO formaat. Nog erger is het, omdat er op de Nederlandse Wikipedia, op de pagina van de juiste ISO code een Nederlandstalige tabel staat, [...]]]></description>
			<content:encoded><![CDATA[<p>Veel mensen hebben er moeite mee.</p>
<p>Voor een of andere web applicatie heb je om een of andere reden een overzicht nodig van de Nederlandse landnamen, maar verder wel volgens het ISO formaat.</p>
<p>Nog erger is het, omdat er op de Nederlandse Wikipedia, op de pagina van de juiste ISO code een Nederlandstalige tabel staat, al is hij verder niet als .SQL beschikbaar.</p>
<p>Nadat ik deze tabel nodig had, heb ik er, met regexp replacements, een versie gemaakt met alle landennamen, in .SQL formaat.</p>
<p>Je mag hem zelf gebruiken, maar link a.u.b. terug naar mij, ik ben er toch een tijd aan bezig geweest&#8230;<br />
Dit is vanaf nu hier te bekijken, op de volgende pagina:<br />
<span id="more-24"></span><br />
<code><br />
CREATE TABLE IF NOT EXISTS nlcountry (<br />
  iso CHAR(2) NOT NULL PRIMARY KEY,<br />
  printable_name VARCHAR(80) NOT NULL,<br />
  iso3 CHAR(3),<br />
  numcode SMALLINT<br />
);<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AF','Afghanistan','AFG','004');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AL','Albanië','ALB','008');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DZ','Algerije','DZA','012');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AS','Amerikaans-Samoa','ASM','016');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AD','Andorra','AND','020');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AO','Angola','AGO','024');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AG','Antigua en Barbuda','ATG','028');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AR','Argentinië','ARG','032');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AM','Armenië','ARM','051');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AW','Aruba','ABW','533');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BH','Bahrein','BHR','048');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BD','Bangladesh','BGD','050');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BE','België','BEL','056');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BZ','Belize (land)','BLZ','084');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BJ','Benin','BEN','204');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BT','Bhutan','BTN','064');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BO','Bolivia','BOL','068');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BA','Bosnië-Herzegovina','BIH','070');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BV','Bouvet','BVT','074');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BN','Brunei','BRN','096');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CA','Canada','CAN','124');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CL','Chili','CHL','152');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CN','Volksrepubliek China','CHN','156');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CU','Cuba','CUB','192');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CY','Cyprus','CYP','196');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('EG','Egypte','EGY','818');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('EE','Estland','EST','233');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FO','Faeröer','FRO','234');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FJ','Fiji','FJI','242');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PH','Filipijnen','PHL','608');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FR','Frankrijk','FRA','250');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GF','Frans-Guyana','GUF','254');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GA','Gabon','GAB','266');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GM','Gambia (land)','GMB','270');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GE','Georgië','GEO','268');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GH','Ghana','GHA','288');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GR','Griekenland','GRC','300');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GD','Grenada','GRD','308');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GU','Guam','GUM','316');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GN','Guinee','GIN','324');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GY','Guyana','GUY','328');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HT','Haïti','HTI','332');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HU','Hongarije','HUN','348');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IS','IJsland','ISL','352');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IR','Iran','IRN','364');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IQ','Irak','IRQ','368');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IE','Ierse Republiek','IRL','372');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IT','Italië','ITA','380');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CI','Ivoorkust','CIV','384');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('JM','Jamaica','JAM','388');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('JP','Japan','JPN','392');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('YE','Jemen','YEM','887');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CM','Kameroen','CMR','120');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CV','Kaapverdië','CPV','132');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KZ','Kazachstan','KAZ','398');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KI','Kiribati','KIR','296');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HR','Kroatië','HRV','191');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KW','Koeweit','KWT','414');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KG','Kirgizië','KGZ','417');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LA','Laos','LAO','418');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LV','Letland','LVA','428');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LS','Lesotho','LSO','426');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LY','Libië','LBY','434');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MG','Madagaskar','MDG','450');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MW','Malawi','MWI','454');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ML','Mali','MLI','466');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('YT','Mayotte','MYT','175');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MX','Mexico (land)','MEX','484');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MC','Monaco','MCO','492');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MS','Montserrat','MSR','500');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MA','Marokko','MAR','504');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MZ','Mozambique','MOZ','508');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MM','Myanmar','MMR','104');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NA','Namibië','NAM','516');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NR','Nauru','NRU','520');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NP','Nepal','NPL','524');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NZ','Nieuw-Zeeland','NZL','554');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NI','Nicaragua','NIC','558');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NE','Niger (land)','NER','562');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NG','Nigeria','NGA','566');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('UZ','Oezbekistan','UZB','860');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NO','Noorwegen','NOR','578');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('OM','Oman','OMN','512');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('UG','Oeganda','UGA','800');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AT','Oostenrijk','AUT','040');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TL','Oost-Timor','TLS','626');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PK','Pakistan','PAK','586');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PW','Palau (land)','PLW','585');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PS','Palestina','PSE','275');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PA','Panama (land)','PAN','591');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PY','Paraguay','PRY','600');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PE','Peru','PER','604');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PL','Polen','POL','616');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PR','Puerto Rico','PRI','630');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('QA','Qatar','QAT','634');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('RO','Roemenië','ROU','642');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('RU','Rusland','RUS','643');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('RW','Rwanda','RWA','646');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('EH','Westelijke Sahara','ESH','732');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LC','Saint Lucia','LCA','662');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('WS','Samoa','WSM','882');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SM','San Marino','SMR','674');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SN','Senegal','SEN','686');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SC','Seychellen','SYC','690');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SL','Sierra Leone','SLE','694');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SG','Singapore','SGP','702');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SH','Sint Helena','SHN','654');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SK','Slowakije','SVK','703');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SI','Slovenië','SVN','705');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SB','Solomon Eilanden','SLB','090');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SO','Somalië','SOM','706');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ES','Spanje','ESP','724');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LK','Sri Lanka','LKA','144');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SD','Soedan','SDN','736');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SR','Suriname','SUR','740');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SY','Syrië','SYR','760');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TJ','Tadzjikistan','TJK','762');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TW','Taiwan','TWN','158');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TH','Thailand','THA','764');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TG','Togo','TGO','768');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TO','Tonga (land)','TON','776');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TD','Tsjaad','TCD','148');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TN','Tunesië','TUN','788');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TR','Turkije','TUR','792');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TM','Turkmenistan','TKM','795');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TV','Tuvalu','TUV','798');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('UY','Uruguay','URY','858');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VU','Vanuatu','VUT','548');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VE','Venezuela','VEN','862');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VN','Vietnam','VNM','704');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ZM','Zambia','ZMB','894');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ZW','Zimbabwe','ZWE','716');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SE','Zweden','SWE','752');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CH','Zwitserland','CHE','756');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VI','Amerikaanse Maagdeneilanden','VIR','850');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AI','Anguilla','AIA','660');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AQ','Antarctica','ATA','010');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AU','Australië','AUS','036');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AZ','Azerbeidzjan','AZE','031');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BS','Bahama\'s','BHS','044');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BB','Barbados','BRB','052');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BM','Bermuda','BMU','060');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BW','Botswana','BWA','072');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BR','Brazilië','BRA','076');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VG','Britse Maagdeneilanden','VGB','092');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IO','Brits IO Territorium','VGB','092');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BG','Bulgarije','BGR','100');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BF','Burkina Faso','BFA','854');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BI','Burundi','BDI','108');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KH','Cambodja','KHM','116');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CF','Centraal-Afrikaanse Republiek','CAF','140');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CX','Christmaseiland','CXR','162');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CC','Cocoseilanden','CCK','166');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CO','Colombia','COL','170');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KM','Comoren','COM','174');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CG','Congo-Brazzaville','COG','178');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CD','Congo-Kinshasa','COD','180');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CK','Cookeilanden','COK','184');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CR','Costa Rica','CRI','188');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DK','Denemarken','DNK','208');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DJ','Djibouti','DJI','262');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DM','Dominica','DMA','212');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DO','Dominicaanse Republiek','DOM','214');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('DE','Duitsland','DEU','276');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('EC','Ecuador','ECU','218');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SV','El Salvador','SLV','222');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GQ','Equatoriaal-Guinea','GNQ','226');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ER','Eritrea','ERI','232');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ET','Ethiopië','ETH','231');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FK','Falklandeilanden','FLK','238');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FI','Finland','FIN','246');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PF','Frans-Polynesië','PYF','258');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TF','Franse Zuidelijke Gebieden','ATF','260');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GI','Gibraltar','GIB','292');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GL','Groenland','GRL','304');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GP','Guadeloupe','GLP','312');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GT','Guatemala','GTM','320');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GW','Guinee-Bissau','GNB','624');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HM','Heard- en McDonaldeilanden','HMD','334');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HN','Honduras','HND','340');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('HK','Hongkong','HKG','344');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IN','India','IND','356');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ID','Indonesië','IDN','360');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IM','Isle of Man','','833');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('IL','Israël','ISR','376');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('JO','Jordanië','JOR','400');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KY','Caymaneilanden','CYM','136');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KE','Kenia','KEN','404');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KP','Noord-Korea','PRK','408');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LB','Libanon','LBN','422');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LR','Liberia','LBR','430');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LI','Liechtenstein','LIE','438');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LT','Litouwen','LTU','440');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('LU','Luxemburg','LUX','442');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MO','Macao','MAC','446');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MK','Macedonië','MKD','807');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MY','Maleisië','MYS','458');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MV','Maldiven','MDV','462');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MT','Malta','MLT','470');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MQ','Martinique','MTQ','474');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MR','Mauritanië','MRT','478');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MU','Mauritius','MUS','480');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('FM','Micronesia','FSM','583');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MD','Moldavië','MDA','498');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MN','Mongolië','MNG','496');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NL','Nederland','NLD','528');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AN','Nederlandse Antillen','ANT','530');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NC','Nieuw-Caledonië','NCL','540');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NU','Niue','NIU','570');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('NF','Norfolkeiland','NFK','574');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MP','Noordelijke Marianen','MNP','580');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('UA','Oekraïne','UKR','804');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PG','Papoea-Nieuw-Guinea','PNG','598');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PN','Pitcairn','PCN','612');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PT','Portugal','PRT','620');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('RE','Réunion','REU','638');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KN','Saint Kitts en Nevis','KNA','659');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('PM','Saint-Pierre en Miquelon','SPM','666');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VC','Saint Vincent en de Grenadines','VCT','670');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GS','Sandwich Eilanden','SGS','239');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ST','São Tomé en Principe','STP','678');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SA','Saoedi-Arabië','SAU','682');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CS','Servië en Montenegro','SCG','891');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SJ','Jan Mayen','SJM','744');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('SZ','Swaziland','SWZ','748');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TZ','Tanzania','TZA','834');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TK','Tokelau','TKL','772');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TT','Trinidad en Tobago','TTO','780');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('CZ','Tsjechië','CZE','203');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('TC','Turks en Caicos eilanden','TCA','796');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('AE','Verenigde Arabische Emiraten','ARE','784');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('GB','Verenigd Koninkrijk','GBR','826');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('US','Verenigde Staten van Amerika','USA','840');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('VA','Vaticaanstad','VAT','336');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('WF','Wallis en Futuna','WLF','876');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('BY','Wit-Rusland','BLR','112');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('ZA','Zuid-Afrika','ZAF','710');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('KR','Zuid-Korea','KOR','410');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('MH','Marshalleilanden','MHL','584');<br />
INSERT INTO nlcountry (iso,printable_name,iso3,numcode) VALUES ('UM','Kleine Pacifische eilanden VS','UMI','581');<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icheb.info/2005/12/iso-landen-in-het-nederlands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
