<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://rigo.info/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://rigo.info/feed.php">
        <title>rigo.info en:blog</title>
        <description></description>
        <link>http://rigo.info/</link>
        <image rdf:resource="http://rigo.info/lib/tpl/arctic/images/favicon.ico" />
       <dc:date>2026-04-28T18:46:39+02:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://rigo.info/en/blog/archive_and_remove_files_older_than_a_specified_date?rev=1247781600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/archiving_trac_project_environment_into_a_zip_file?rev=1246831200&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/automatize_awstats_config_file_creation?rev=1256421600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/basic_commandline_teaching_shell_in_hungarian?rev=1240264800&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/check_files_for_holes?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/convert_bind9_zone_configuration_to_a_hosts_file?rev=1255557600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/convert_video_dvd_or_iso_to_vob_using_mplayer?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/creating_alternative_xmltv_station_lists_for_hungary_and_romania?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/creating_mp4_files_compatible_with_flowplayer_using_ffmpeg?rev=1242338400&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/cvs_home_dir?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/display_countdown_timer_until_given_date_using_javascript_from_php?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/distroggize?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/emulating_fixed_position_css_attribute_under_ie7?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/enhance_images_for_ocr?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/fixing_single_text_input_submit_bug_on_ie7?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/freemail?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/freemind_to_wikimedia?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/insert_outline_numbering_into_schematron_files?rev=1242597600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/installing_debian_lenny_and_openvz_on_an_ibm_xseries?rev=1239919200&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/kopkop?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/kukac?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/libnids_multithreading_patch?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/login_banner_with_calendar?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/merging_logrotate_d_files_back_again?rev=1252101600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/merging_postscript_ps_files?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/migrating_openldap_database_with_samba_schema_to_slapd_2.4.x?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/migrating_user_database_to_ldap_on_debian_lenny_and_openvz?rev=1242165600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/muddleftpd-scripting?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/muddlestats?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/mysql_dump_to_tables?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/pdf2page?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/periodically_mirror_remote_ldap_user_and_group_database?rev=1247436000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/playing_random_videos_from_a_directory_using_mplayer?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/proxy_local_mysql_socket_over_the_network?rev=1252101600&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/quick_and_dirty_ca_with_bash_and_dialog?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/read_dvd_video_disc_label?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/remote_backup_of_an_openvz_host_using_duplicity?rev=1247695200&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/removing_accents_from_filenames_in_a_directory_tree?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/rename_digital_camera_files_based_on_exif_header?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/reversi?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/sevenseas?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/snortwarn?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/spyshell?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/stripattach?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/sync_jpeg_comments_and_exif_comments_of_image_files?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/tagliner?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/test_multiple_dns_servers_with_multiple_domains?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/un-accenting_text?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/unpack_all_rar_archive_files_in_a_directory_tree?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/url_monitor?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/vob_to_avi_using_mencoder?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/vob_to_avi_using_mencoder_next_gen?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/vym_to_freemind?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/wainting_for_samba_mounts_upon_login_to_kde?rev=1239660000&amp;do=diff"/>
                <rdf:li rdf:resource="http://rigo.info/en/blog/xstreamwrapper?rev=1239660000&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://rigo.info/lib/tpl/arctic/images/favicon.ico">
        <title>rigo.info</title>
        <link>http://rigo.info/</link>
        <url>http://rigo.info/lib/tpl/arctic/images/favicon.ico</url>
    </image>
    <item rdf:about="http://rigo.info/en/blog/archive_and_remove_files_older_than_a_specified_date?rev=1247781600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-07-17T00:00:00+02:00</dc:date>
        <title>en:blog:archive_and_remove_files_older_than_a_specified_date</title>
        <link>http://rigo.info/en/blog/archive_and_remove_files_older_than_a_specified_date?rev=1247781600&amp;do=diff</link>
        <description>Archive and remove files older than a specified date

This small script realizes the routine task of finding and archiving files older than a given date from a directory structure.


#!/bin/bash

if [ ! -d &quot;$2&quot; ]; then
    echo &quot;usage: $0 &lt;timestamp&gt; &lt;directory&gt;&quot;
    exit 0
fi

ts=&quot;$1&quot;
dir=&quot;$2&quot;

tmpdir=`mktemp -d`
trap &quot;rm -rf '$tmpdir'&quot; exit

touch -d &quot;$ts&quot; &quot;$tmpdir/tsfile&quot; || exit

echo &quot;+ finding files older than $ts in $dir&quot;
find &quot;$dir&quot; -type f -not -cnewer &quot;$tmpdir/tsfile&quot; &gt; &quot;$tmpdir/fileli…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/archiving_trac_project_environment_into_a_zip_file?rev=1246831200&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-07-06T00:00:00+02:00</dc:date>
        <title>en:blog:archiving_trac_project_environment_into_a_zip_file</title>
        <link>http://rigo.info/en/blog/archiving_trac_project_environment_into_a_zip_file?rev=1246831200&amp;do=diff</link>
        <description>Archiving trac project environment into a zip file

The following small script dumps all usable information from a trac project directory, then creates a .zip archive in the actual working directory. The zip will contain all lists from trac, a dump of the wiki structure, and a hot copy of the project dir itself.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/automatize_awstats_config_file_creation?rev=1256421600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-25T00:00:00+02:00</dc:date>
        <title>en:blog:automatize_awstats_config_file_creation</title>
        <link>http://rigo.info/en/blog/automatize_awstats_config_file_creation?rev=1256421600&amp;do=diff</link>
        <description>Automatize awstats config file creation

In my opinion awstats is THE apache log file analyzer solution. Unfortunately it does not support automatic configuration based on the webserver configuration, which is a great feature to miss IMHO. The following shell script has 3 different sections:</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/basic_commandline_teaching_shell_in_hungarian?rev=1240264800&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-21T00:00:00+02:00</dc:date>
        <title>en:blog:basic_commandline_teaching_shell_in_hungarian</title>
        <link>http://rigo.info/en/blog/basic_commandline_teaching_shell_in_hungarian?rev=1240264800&amp;do=diff</link>
        <description>Basic commandline teaching shell (in Hungarian)

 - a basic step-by-step shell environment I'm using for teaching Linux commandline basics.

teaching,
	example,
	bash,
	commandline</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/check_files_for_holes?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:check_files_for_holes</title>
        <link>http://rigo.info/en/blog/check_files_for_holes?rev=1239660000&amp;do=diff</link>
        <description>Check files for holes

It's quite hard to tell if a file under Linux has holes (eg. it is a sparse file). This script tries to determine this by comparing apparent and real file sizes.


#!/bin/sh

where=${1:-.}

find &quot;$where&quot; -type f | while read file; do

#    apparentsize=`du --apparent-size &quot;$file&quot; | cut -f 1`
#    realsize=`du &quot;$file&quot; | cut -f 1`

    blocks=`stat -c &quot;%b&quot; &quot;$file&quot;`
    blocksize=`stat -c &quot;%B&quot; &quot;$file&quot;`
    realsize=$(($blocks * $blocksize))
    apparentsize=`stat -c &quot;%s&quot; &quot;$fi…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/convert_bind9_zone_configuration_to_a_hosts_file?rev=1255557600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-10-15T00:00:00+02:00</dc:date>
        <title>en:blog:convert_bind9_zone_configuration_to_a_hosts_file</title>
        <link>http://rigo.info/en/blog/convert_bind9_zone_configuration_to_a_hosts_file?rev=1255557600&amp;do=diff</link>
        <description>Convert bind9 zone configuration to a hosts file

During migration it's sometimes useful to test a server with many virtual hosts before directing them to their new IP. For this purpose it's necessary to have a proper hosts file on the testing station. The following bash/awk script reads and parses bind9 configuration from an</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/convert_video_dvd_or_iso_to_vob_using_mplayer?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:convert_video_dvd_or_iso_to_vob_using_mplayer</title>
        <link>http://rigo.info/en/blog/convert_video_dvd_or_iso_to_vob_using_mplayer?rev=1239660000&amp;do=diff</link>
        <description>Convert Video DVD or ISO to VOB using MPlayer

My custom iso2vob bash shell script to convert video DVD to VOB editable by Avidemux using MPlayer.


#!/bin/bash
info=`mplayer -ao null -vo null -frames 1 -identify -dvd-device &quot;$1&quot; dvd://`

if [ &quot;$2&quot; ]; then

	titles=&quot;$2&quot;
	titles_num=`echo &quot;$titles&quot; | wc -w`

else 

	titles=`echo -e &quot;$info&quot; | egrep &quot;ID_DVD_TITLE_[0-9]+_LEN&quot; | cut -f 4 -d'_' | sort -n`
	titles_num=`echo -e &quot;$titles&quot; | wc -l`

fi

function dvdlabel() {
	dd if=&quot;$1&quot; count=1 bs=1024 sk…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/creating_alternative_xmltv_station_lists_for_hungary_and_romania?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:creating_alternative_xmltv_station_lists_for_hungary_and_romania</title>
        <link>http://rigo.info/en/blog/creating_alternative_xmltv_station_lists_for_hungary_and_romania?rev=1239660000&amp;do=diff</link>
        <description>Creating alternative XMLTV station lists for Hungary and Romania

The PERL xmltv grabber for .hu and .ro packaged with the original xmltv distribution is rather slow and buggy so I've decided to write my own using AWK and of course bash.


#!/bin/bash

WGET=&quot;wget -q -O- &quot;

get_channel_list() {

    list=`$WGET &quot;http://www.port.hu/pls/tv/tv.channel?i_ch=1&amp;i_days=1&amp;i_xday=1&amp;i_where=1&quot;`

#    echo -e &quot;$list&quot; | egrep -zo '&lt;select name=&quot;i_ch&quot;.*&lt;/select&gt;' | awk '/value=&quot;[0-9]+&quot;&gt;.*&lt;\/option&gt;/ { print $…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/creating_mp4_files_compatible_with_flowplayer_using_ffmpeg?rev=1242338400&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-05-15T00:00:00+02:00</dc:date>
        <title>en:blog:creating_mp4_files_compatible_with_flowplayer_using_ffmpeg</title>
        <link>http://rigo.info/en/blog/creating_mp4_files_compatible_with_flowplayer_using_ffmpeg?rev=1242338400&amp;do=diff</link>
        <description>Creating mp4 files compatible with Flowplayer using ffmpeg

I'm using the excellent embeddable flash applet, Flowplayer to display videos online taken with my digital camera. Unfortunately my dc saves videos in an AVI container with MJPEG video and PCM audio so I have to convert them to a more web-friendly and modern format using</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/cvs_home_dir?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:cvs_home_dir</title>
        <link>http://rigo.info/en/blog/cvs_home_dir?rev=1239660000&amp;do=diff</link>
        <description>CVS home dir

A small bash script to be run from your .bashrc. This is practical for multi-homed users - like myself - to keep ssh authorized keys, bookmarks, bash settings, aliases, etc. in sync amongst different accounts.


#!/bin/bash
#
# CVSHOME - small BASH script to be run from your .bashrc
# this is practical for multi-homed users - like myself -
# to keep ssh authorized keys, bookmarks, bash settings, 
# aliases, etc. in sync amongst different accounts.
#
# GPLv2 by Erno Rigo &lt;mcree AT t…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/display_countdown_timer_until_given_date_using_javascript_from_php?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:display_countdown_timer_until_given_date_using_javascript_from_php</title>
        <link>http://rigo.info/en/blog/display_countdown_timer_until_given_date_using_javascript_from_php?rev=1239660000&amp;do=diff</link>
        <description>Display countdown timer until given date using JavaScript from PHP

This function is used in my custom computer exam software to display a countdown timer that stops at the end of the exam. The timestamp is determined and stored in a file when the student clicks</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/distroggize?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:distroggize</title>
        <link>http://rigo.info/en/blog/distroggize?rev=1239660000&amp;do=diff</link>
        <description>DistrOggize

A small shell script which allows recursive parallel distributed recoding of directories containing mp3 files. It uses ssh, oggenc and mp3info to do the work. 


#!/bin/bash

set -e

echo &quot;distributed oggifying directory $1 ... please be patient&quot;

oggdir=&quot;$1.oggized&quot;

mkdir -p &quot;$oggdir&quot;

tmpdir=&quot;/tmp/distoggize_&quot;`date +%s%N`$RANDOM
echo $tmpdir

trap cleanup 0

cleanup() {
    echo &quot;cleaning up...&quot;
    for host in $peers; do 
        ssh $host &quot;rm -rf $tmpdir&quot;
    done
}

makeogg() …</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/emulating_fixed_position_css_attribute_under_ie7?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:emulating_fixed_position_css_attribute_under_ie7</title>
        <link>http://rigo.info/en/blog/emulating_fixed_position_css_attribute_under_ie7?rev=1239660000&amp;do=diff</link>
        <description>Emulating position:fixed CSS property under IE7

Recently I've been figting with IE7 to act like Mozilla Firefox and allow position:fixed CSS properties to work properly. As I'm using PHP, I had to come up with a complex solution that worked correctly on both modern browsers. Since the</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/enhance_images_for_ocr?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:enhance_images_for_ocr</title>
        <link>http://rigo.info/en/blog/enhance_images_for_ocr?rev=1239660000&amp;do=diff</link>
        <description>Enhance images for OCR

I use this code to enhance photographs or other image files taken from black and white text. Does great job for optical character recognition, printing and other purposes. This script is using ImageMagick to do the actual job.


#!/bin/bash

mkdir &quot;bw&quot;

for x in *.jpg ; do 
	b=`basename $x .jpg`
	echo $x
	convert -noise 1 -unsharp 10x5+10 -threshold 20% &quot;$x&quot; &quot;bw/$b.pbm&quot;;
	unpaper &quot;bw/$b.pbm&quot; &quot;bw/unpaper_$b.pbm&quot;
	convert &quot;bw/unpaper_$b.pbm&quot; &quot;bw/$b.png&quot;;
	rm -f &quot;bw/$b.pbm&quot; …</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/fixing_single_text_input_submit_bug_on_ie7?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:fixing_single_text_input_submit_bug_on_ie7</title>
        <link>http://rigo.info/en/blog/fixing_single_text_input_submit_bug_on_ie7?rev=1239660000&amp;do=diff</link>
        <description>Fixing single text input submit bug on IE7

Apparently, IE7 fails to submit the form with the default button if the form only contains one text input box. Here is the fix for that. Just create a text input in a hidden div on the page. This will circumvent the</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/freemail?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:freemail</title>
        <link>http://rigo.info/en/blog/freemail?rev=1239660000&amp;do=diff</link>
        <description>freemail

 - My old contribution to the web IMAP email gateway scene. Written in an early version of PHP in 2001 and it's still in use somewhere (I won't tell you: use google...). 

imap,
	mime,
	email,
	php,
	html,
	webmail,
	web</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/freemind_to_wikimedia?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:freemind_to_wikimedia</title>
        <link>http://rigo.info/en/blog/freemind_to_wikimedia?rev=1239660000&amp;do=diff</link>
        <description>Freemind to WikiMedia

Here you can find a modifyed version of freemind2wiki that converts freemind files to wikimedia markup. 


&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
 &lt;xsl:output method=&quot;text&quot;/&gt;
 &lt;xsl:template match=&quot;/&quot;&gt;
 &lt;xsl:apply-templates/&gt;
 &lt;/xsl:template&gt;
  &lt;xsl:template name=&quot;linebreak&quot;&gt;
   &lt;xsl:text&gt; 
&lt;/xsl:text&gt;
  &lt;/xsl:template&gt;
  &lt;xsl:template match=&quot;map&quot;&gt;
   &lt;xsl:apply-templates select=&quot;child::node&quot;/&gt;
  &lt;/xsl:template&gt;…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/insert_outline_numbering_into_schematron_files?rev=1242597600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-05-18T00:00:00+02:00</dc:date>
        <title>en:blog:insert_outline_numbering_into_schematron_files</title>
        <link>http://rigo.info/en/blog/insert_outline_numbering_into_schematron_files?rev=1242597600&amp;do=diff</link>
        <description>Insert outline numbering into Schematron files

I was requested to insert outline numbering into a Schematron rule file for debug purposes. Here is the resulting XSLT file:


&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!--
  Insert outline numbering into Schematron files - Ernő Rigó &lt;erno@rigo.info&gt;
--&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot;
xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
xmlns:sch=&quot;http://www.ascc.net/xml/schematron&quot; schemaVersion=&quot;1.0&quot;
&gt;

&lt;xsl:template match=&quot;sch:pattern&quot;&gt;
  &lt;xsl:variable name=&quot;counter&quot;&gt;
…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/installing_debian_lenny_and_openvz_on_an_ibm_xseries?rev=1239919200&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-17T00:00:00+02:00</dc:date>
        <title>en:blog:installing_debian_lenny_and_openvz_on_an_ibm_xseries</title>
        <link>http://rigo.info/en/blog/installing_debian_lenny_and_openvz_on_an_ibm_xseries?rev=1239919200&amp;do=diff</link>
        <description>Installing Debian Lenny and OpenVZ on an IBM xSeries

Recently I had the opportunity to install Lenny and OpenVZ on a bigger chunk of metal. You can read my full guide here.

howto,
	install,
	linux,
	openvz,
	ibm,
	x3650</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/kopkop?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:kopkop</title>
        <link>http://rigo.info/en/blog/kopkop?rev=1239660000&amp;do=diff</link>
        <description>KopKop

 - Stealthy and secure remote command triggering for IP networks. The kopkop daemon listens for encrypted, signed and fully random-looking command packets. Only the fields essential for the packets' travel trough the internet are filled with 'sane' data. Upon reception and after a preset timeout it executes user defined commands. This could be used to open firewalls, allow hosts, etc., so one can reduce your system's attack surface by hiding services like 22/tcp ssh or 1000/tcp webmin. T…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/kukac?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:kukac</title>
        <link>http://rigo.info/en/blog/kukac?rev=1239660000&amp;do=diff</link>
        <description>kukac

 - An ncurses based networked multiplayer worm fight arena with a possible maximum of eight players. This one was a network lab project at the [TUB] so it comes with exclusive documentation in hungarian. 

game,
	ncurses,
	multiplayer,
	network,
	c</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/libnids_multithreading_patch?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:libnids_multithreading_patch</title>
        <link>http://rigo.info/en/blog/libnids_multithreading_patch?rev=1239660000&amp;do=diff</link>
        <description>LibNIDS multithreading patch

 - My patch against libnids-1.20 to start ip defragmentation and tcp stream assembly in a different thread. Compiling libNIDS in an environment where glib-2.0 is available enables libnids to use two different threads - one for receiving IP fragments from</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/login_banner_with_calendar?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:login_banner_with_calendar</title>
        <link>http://rigo.info/en/blog/login_banner_with_calendar?rev=1239660000&amp;do=diff</link>
        <description>Login Banner with Calendar

A small shell script that uses cal and other builtin info to display a nicely cached (hence fast) color calendar banner from your .bashrc. The calendar data is in hungarian.


#!/bin/bash
#bash banner script by mcree

#################################
# CACHE HIT

f=~/.banner.tmp

stat=`stat -c %y $f 2&gt; /dev/null | cut -f 1 -d' ' `
date=`date +%Y-%m-%d`

if [ &quot;$stat&quot; = &quot;$date&quot; ]; then
    cat $f
    return
fi

#################################
# DATA

honapok=`cat &lt;&lt;E…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/merging_logrotate_d_files_back_again?rev=1252101600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-09-05T00:00:00+02:00</dc:date>
        <title>en:blog:merging_logrotate_d_files_back_again</title>
        <link>http://rigo.info/en/blog/merging_logrotate_d_files_back_again?rev=1252101600&amp;do=diff</link>
        <description>Merging logrotate'd files back again

As you may already know, logrotate is an excellent utility to keep the size of your log directory under certain control. However in some cases it may be feasible to „undo” the rotated logs into a single monolithic file. Such is a case when you want to migrate your web server log analization from</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/merging_postscript_ps_files?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:merging_postscript_ps_files</title>
        <link>http://rigo.info/en/blog/merging_postscript_ps_files?rev=1239660000&amp;do=diff</link>
        <description>Merging PostScript (PS) files

I've found the following command pretty useful in merging PS files:


gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=output.ps input1.ps input2.ps ... etc


util,
	ps,
	postscript,
	bash</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/migrating_openldap_database_with_samba_schema_to_slapd_2.4.x?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:migrating_openldap_database_with_samba_schema_to_slapd_2.4.x</title>
        <link>http://rigo.info/en/blog/migrating_openldap_database_with_samba_schema_to_slapd_2.4.x?rev=1239660000&amp;do=diff</link>
        <description>Migrating OpenLDAP database with samba schema to slapd 2.4.x

According to &lt;https://help.ubuntu.com/8.10/serverguide/C/samba-ldap.html&gt; the configuration of OpenLDAP server has changed to a more flexible (and at first sight a bit obscure) directory based one. The guide is a bit long so i've decided to put my own findings here.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/migrating_user_database_to_ldap_on_debian_lenny_and_openvz?rev=1242165600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-05-13T00:00:00+02:00</dc:date>
        <title>en:blog:migrating_user_database_to_ldap_on_debian_lenny_and_openvz</title>
        <link>http://rigo.info/en/blog/migrating_user_database_to_ldap_on_debian_lenny_and_openvz?rev=1242165600&amp;do=diff</link>
        <description>Migrating user database to LDAP on Debian Lenny and OpenVZ

As a preparation for for establishing a distributed virtualized environment based on OpenVZ I had to create a new VE based on a precreated Debian Lenny x86 minimal OS template. Once the new VE had Internet access I took the time to update it and remove some unnecessary packages, reconfigure debconf to ask all questions then installed a basic LDAP environment:</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/muddleftpd-scripting?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:muddleftpd-scripting</title>
        <link>http://rigo.info/en/blog/muddleftpd-scripting?rev=1239660000&amp;do=diff</link>
        <description>muddleftpd-scripting

[MuddleFTPD scripting patch] - This is a diff patch for muddleftpd to allow running of external scripts upon ftp events such as finished uploads. The patch has a race condition which has not been fixed. The patch was dropped by the muddleftpd team because it executes external commands (why</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/muddlestats?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:muddlestats</title>
        <link>http://rigo.info/en/blog/muddlestats?rev=1239660000&amp;do=diff</link>
        <description>muddlestats

 - My first somewhat serious python code that generates html statistics from muddleftpd server logs. 

util,
	statistics,
	stats,
	ftp,
	ftpd,
	muddleftpd,
	log,
	monitor,
	python</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/mysql_dump_to_tables?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:mysql_dump_to_tables</title>
        <link>http://rigo.info/en/blog/mysql_dump_to_tables?rev=1239660000&amp;do=diff</link>
        <description>MySQL dump to tables

A very small GAWK script that splits a mysql text dump to separate table dump files.


#!/bin/sh
# GPLv2 by Erno Rigo &lt;mcree_AT_tricon_DOT_hu&gt;

gawk '
 BEGIN { FS=&quot; &quot;; dest=&quot;/dev/null&quot; }
 /^(USE)/ { dir=gensub(&quot;;&quot;,&quot;&quot;,&quot;g&quot;,$2) ; dir=gensub(&quot;`&quot;,&quot;&quot;,&quot;g&quot;,dir) ; system(&quot;mkdir &quot;dir) }
 /^(CREATE|USE|DROP)/ { fflush(dest); dest=&quot;/dev/null&quot; }
 /^CREATE TABLE/ { file=gensub(&quot;`&quot;,&quot;&quot;,&quot;g&quot;,$3) ; fflush(dest); dest=dir&quot;/&quot;file&quot;.sql&quot; }
 { print &gt;&gt; dest }
'</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/pdf2page?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:pdf2page</title>
        <link>http://rigo.info/en/blog/pdf2page?rev=1239660000&amp;do=diff</link>
        <description>pdf2page

A small shell script to convert singlepage A4-sized pdf documents to two pages per sheet using pstools.


#!/bin/bash
function switch() {
    rm -f pdfopt.ps
    mv pdfopt2.ps pdfopt.ps
}
pdftops -paper A4 -level3 $1 pdfopt.ps
psresize -p a4 pdfopt.ps pdfopt2.ps ; switch
psnup -n2 -d1 -pa4 -Pa4 pdfopt.ps pdfopt2.ps ; switch
psresize -pa4 pdfopt.ps pdfopt2.ps ; switch
psresize -Pa4 pdfopt.ps pdfopt2.ps ; switch
ps2ps pdfopt.ps pdfopt2.ps ; switch
ps2pdf pdfopt.ps `basename $1 .pdf`_2.pd…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/periodically_mirror_remote_ldap_user_and_group_database?rev=1247436000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-07-13T00:00:00+02:00</dc:date>
        <title>en:blog:periodically_mirror_remote_ldap_user_and_group_database</title>
        <link>http://rigo.info/en/blog/periodically_mirror_remote_ldap_user_and_group_database?rev=1247436000&amp;do=diff</link>
        <description>Periodically mirror remote LDAP user and group database

The following script solves the task of replicating a remote, ldap based, user and group database to a local ldap server. This approach is better than on-line ldap replication in scenarios where the local ldap server is behind a slow and unstable internet connection. The script utilizes extensive error reporting and emergency backups to keep everything in order under unexpected circumstances.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/playing_random_videos_from_a_directory_using_mplayer?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:playing_random_videos_from_a_directory_using_mplayer</title>
        <link>http://rigo.info/en/blog/playing_random_videos_from_a_directory_using_mplayer?rev=1239660000&amp;do=diff</link>
        <description>Playing random videos from a directory using MPlayer

The following shell script plays avi, mpeg and wmv files in a random order when executed in a directory containing files.


#!/bin/bash
ls -1Q \
| awk 'BEGIN {FS=&quot;\n&quot;} /.*.(avi|mpg|mpeg|wmv)/ {printf(&quot;%i\t%s\n&quot;,rand()*10^6,$1) }' \
| sort | cut -f2 | xargs mplayer -fs</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/proxy_local_mysql_socket_over_the_network?rev=1252101600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-09-05T00:00:00+02:00</dc:date>
        <title>en:blog:proxy_local_mysql_socket_over_the_network</title>
        <link>http://rigo.info/en/blog/proxy_local_mysql_socket_over_the_network?rev=1252101600&amp;do=diff</link>
        <description>Proxy local mysql socket over the network

As an user of OpenVZ it's often my task to migrate database driven web applications to separate environments. In recent versions of OpenVZ, bind mounting of sockets between virtual environments is prohibited. I had to find a way to proxy local connections to</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/quick_and_dirty_ca_with_bash_and_dialog?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:quick_and_dirty_ca_with_bash_and_dialog</title>
        <link>http://rigo.info/en/blog/quick_and_dirty_ca_with_bash_and_dialog?rev=1239660000&amp;do=diff</link>
        <description>Quick and dirty CA with bash and dialog

This is my quick shell script wrapper using dialog to create a new signed key with my own CA.


#!/bin/bash

set -e

hostname=`dialog --stdout --clear --inputbox &quot;hostname (pl: www.tricon.hu)&quot; 8 50`
hostmaster=`dialog --stdout --clear --inputbox &quot;hostmaster e-mail (pl: hostmaster@tricon.hu)&quot; 8 50`

cp reqtemplate_openssl.cnf reqs/$hostname.req.openssl.conf
rpl &quot;|HOSTNAME|&quot; &quot;$hostname&quot; reqs/$hostname.req.openssl.conf
rpl &quot;|HOSTMASTER|&quot; &quot;$hostmaster&quot; reqs/$…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/read_dvd_video_disc_label?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:read_dvd_video_disc_label</title>
        <link>http://rigo.info/en/blog/read_dvd_video_disc_label?rev=1239660000&amp;do=diff</link>
        <description>Read DVD Video Disc Label

Simplistic bash script to read DVD label from disc.


#!/bin/bash
dd if=&quot;$1&quot; count=1 bs=1024 skip=32 2&gt;/dev/null | cut -b 41-72 | sed 's/[^[:alnum:]]._ -]+//g' | sed 's/^ *//g' | rev | sed 's/^ *//g' | rev


util,
	dd,
	dvd,
	label,
	bash</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/remote_backup_of_an_openvz_host_using_duplicity?rev=1247695200&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-07-16T00:00:00+02:00</dc:date>
        <title>en:blog:remote_backup_of_an_openvz_host_using_duplicity</title>
        <link>http://rigo.info/en/blog/remote_backup_of_an_openvz_host_using_duplicity?rev=1247695200&amp;do=diff</link>
        <description>Remote backup of an OpenVZ host using duplicity and LVM snapshots

The following script was developed and tested under Debian Lenny.


#!/bin/bash
###################################################################
#
# This shell script creates remote incremental backups
# from all of your OpenVZ virtual environments using
# duplicity and LVM snapshots. This uses far less space than
# the vzdump utility but is not as configurable.
# 
# The script is meant to be run from cron.daily. It sends
# it…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/removing_accents_from_filenames_in_a_directory_tree?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:removing_accents_from_filenames_in_a_directory_tree</title>
        <link>http://rigo.info/en/blog/removing_accents_from_filenames_in_a_directory_tree?rev=1239660000&amp;do=diff</link>
        <description>Removing accents from filenames in a directory tree

The following shell script can be used to remove accents from filenames in a directory and all subdirectories.


#!/bin/bash

function dodir() {
    pushd &quot;$1&quot; &gt;&gt; /dev/null
    for x in *; do
        trans=`echo &quot;$x&quot; | tr &quot;éáóüűúöóíÉÁÓÜŰÚÖÓÍ&quot; &quot;eaouuuooiEAOUUUOOI&quot; | tr -c &quot;[:alnum:]!@#$%^&amp;_,' ()[].\n-&quot; &quot;#&quot;`
        if [ &quot;$trans&quot; != &quot;$x&quot; ]; then
            echo &quot;must rename $x to $trans&quot;
            mv &quot;$x&quot; &quot;$trans&quot;
            if [ -d &quot;$trans&quot;…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/rename_digital_camera_files_based_on_exif_header?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:rename_digital_camera_files_based_on_exif_header</title>
        <link>http://rigo.info/en/blog/rename_digital_camera_files_based_on_exif_header?rev=1239660000&amp;do=diff</link>
        <description>Rename digital camera files based on EXIF header

I use this scriptlet to have my digicam files in order.


#!/bin/bash
jhead -nf&quot;%Y%m%d_%H%M%S&quot; *
jhead -cmd &quot;jpegtran -progressive &amp;i &gt; &amp;o&quot; *.jpg
exiftran -ai *.jpg
#jhead -cmd &quot;mogrify -quality 90 &amp;i&quot; *.jpg
chmod ugo-x *.jpg
jhead -ft *.jpg</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/reversi?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:reversi</title>
        <link>http://rigo.info/en/blog/reversi?rev=1239660000&amp;do=diff</link>
        <description>reversi

 - An old reversi table game clone written in Turbo Pascal. Comments and game controls are in hungarian.

game,
	console,
	reversi,
	pascal</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/sevenseas?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:sevenseas</title>
        <link>http://rigo.info/en/blog/sevenseas?rev=1239660000&amp;do=diff</link>
        <description>SevenSeas

 - My first KDevelop project. This is a remake of the old turn based table game, often called „robots” or „tron” with a pirate theme (an idea stolen from astraware). In the you must use the obstacles of the level to kill pirate ships that try follow your every move. The game supports (but not requies) a trivial networked high score server which is not included.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/snortwarn?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:snortwarn</title>
        <link>http://rigo.info/en/blog/snortwarn?rev=1239660000&amp;do=diff</link>
        <description>SnortWarn

This python script uses snort's database event logs and the whois database to send scheduled e-mails to abuse ISP-s about incidents. 


#!/usr/bin/python
import sys
import os
import re
import pprint
from pyPgSQL import PgSQL
from sets import Set
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

_DB=None
_DBname=&quot;snortdb&quot;
_DBuser=&quot;snortdb&quot;
_DBpass=&quot;password&quot;
_DBhost=&quot;localhost&quot;

primaryrecipient=&quot;email@add.ress.hu&quot;
treshold=5 # minimum no…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/spyshell?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:spyshell</title>
        <link>http://rigo.info/en/blog/spyshell?rev=1239660000&amp;do=diff</link>
        <description>SpyShell

This is a shell wrapper for the script program from bsdutils that can be used in /etc/passwd as a login shell to log everything an user does. 


#!/bin/bash
#
# spy shell by mcree@tricon.hu
#
# This is a shell wrapper for the script program from bsdutils
# that can be used in /etc/passwd as a login shell to log
# everything an user does.
#
# Protected by the General Public License v2
#

export SHELL=&quot;/bin/bash&quot;
script=&quot;/usr/bin/script&quot;

mydir=&quot;/var/log/spyshell&quot;
whoami=`/usr/bin/whoami…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/stripattach?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:stripattach</title>
        <link>http://rigo.info/en/blog/stripattach?rev=1239660000&amp;do=diff</link>
        <description>StripAttach

A quick and dirty script to strip, save and compress attachments from a MIME message arriving to the standard input. The attachments are replaced with URL information and the processed message is then dumped to stdout. This makes a good use as a procmail filter to keep down mailbox sizes. Also can be a good starting base to achieve single attachment storage on large servers with many users.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/sync_jpeg_comments_and_exif_comments_of_image_files?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:sync_jpeg_comments_and_exif_comments_of_image_files</title>
        <link>http://rigo.info/en/blog/sync_jpeg_comments_and_exif_comments_of_image_files?rev=1239660000&amp;do=diff</link>
        <description>Sync JPEG comments and EXIF comments of image files

I'm planning to keep image related comments in my digital camera images. Unfortunately there are two ways to attach information to jpegs and there are tools that use one or the other but not both. So I've created the following script that syncs those two kinds of comments and handles conflicts gracefully.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/tagliner?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:tagliner</title>
        <link>http://rigo.info/en/blog/tagliner?rev=1239660000&amp;do=diff</link>
        <description>tagliner

 - My first Linux C code ever 8). I'm still actively use this fortune-like program that selects random lines from a textfile and outputs them to stdout, with word wrap support. The random seed is saved between runs to an external file to ensure good pseudo-random properties.</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/test_multiple_dns_servers_with_multiple_domains?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:test_multiple_dns_servers_with_multiple_domains</title>
        <link>http://rigo.info/en/blog/test_multiple_dns_servers_with_multiple_domains?rev=1239660000&amp;do=diff</link>
        <description>Test multiple DNS servers with multiple domains

I was using this script to regression test some DNS servers with multiple personalities. All domains are tested on all servers - both private and public.


#!/bin/bash

namecheck() {
    echo `date`&quot; checking for $1 @$2&quot;
    ans=`dig $1 A @$2 +recurse +qr +all 2&gt;&amp;1`
    res=`echo -e &quot;$ans&quot; | grep &quot;ANSWER SECTION&quot;`
    if [ -z &quot;$res&quot; ]; then
        echo -e &quot;NO ANSWER FROM $2:\n$ans&quot;
    fi
#    echo -e &quot;$ans&quot; | grep -A 1 &quot;ANSWER SECTION&quot;
}

multic…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/un-accenting_text?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:un-accenting_text</title>
        <link>http://rigo.info/en/blog/un-accenting_text?rev=1239660000&amp;do=diff</link>
        <description>Un-accenting text

This PHP code snippet is userful in removing accents from international (latin), especially hungarian texts.


&lt;?PHP

function unaccent($txt) {

  return strtr(recode(&quot;utf8..l1&quot;,strtr($txt,&quot;őŐűŰ&quot;,&quot;oOuU&quot;)),
  &quot;\xe1\xc1\xe0\xc0\xe2\xc2\xe4\xc4\xe3\xc3\xe5\xc5&quot;.
  &quot;\xaa\xe7\xc7\xe9\xc9\xe8\xc8\xea\xca\xeb\xcb\xed&quot;.
  &quot;\xcd\xec\xcc\xee\xce\xef\xcf\xf1\xd1\xf3\xd3\xf2&quot;.
  &quot;\xd2\xf4\xd4\xf6\xd6\xf5\xd5\x8\xd8\xba\xf0\xfa\xda&quot;.
  &quot;\xf9\xd9\xfb\xdb\xfc\xdc\xfd\xdd\xff\xe6\xc6\xdf\xf8&quot;…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/unpack_all_rar_archive_files_in_a_directory_tree?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:unpack_all_rar_archive_files_in_a_directory_tree</title>
        <link>http://rigo.info/en/blog/unpack_all_rar_archive_files_in_a_directory_tree?rev=1239660000&amp;do=diff</link>
        <description>Unpack all RAR archive files in a directory tree

I use the following shell script to unpack all RAR files in a directory and all subdirectories. The script supports both the old and new RAR naming conventions (both .rar, .r00, .r01, ... AND .partXX.rar styles).</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/url_monitor?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:url_monitor</title>
        <link>http://rigo.info/en/blog/url_monitor?rev=1239660000&amp;do=diff</link>
        <description>URL Monitor

Short shell script to monitor an URL for change. Sends notification and differences in e-mail. 


#!/bin/bash
# Short shell script to monitor an URL for change.
# Sends notification and differences in e-mail.
#
# by Erno Rigo &lt;mcree@tricon.hu&gt;
#
# Licensed under the GPL ;-)

FILE=&quot;kzblog&quot;
OLDFILE=&quot;$FILE.old&quot;
SENDER=&quot;devnull@example.com&quot;
RECIPIENT=&quot;somebody@somewhere.com&quot;
URL=&quot;http://kz71.freeblog.hu/&quot;

if [ ! -r $OLDFILE ]; then wget -q -O - &quot;$URL&quot; | html2text -nobs &gt; $OLDFILE; fi
w…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/vob_to_avi_using_mencoder?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:vob_to_avi_using_mencoder</title>
        <link>http://rigo.info/en/blog/vob_to_avi_using_mencoder?rev=1239660000&amp;do=diff</link>
        <description>VOB to AVI using Mencoder

This is a quite complex bash shell script to recode DVD VOB files to AVI using MEncoder, Avidemux and other tools. Automates crop detection, aspect ratio calc, dual audio muxing and subtitle ripping. I'm not saying this is all perfect of course</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/vob_to_avi_using_mencoder_next_gen?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:vob_to_avi_using_mencoder_next_gen</title>
        <link>http://rigo.info/en/blog/vob_to_avi_using_mencoder_next_gen?rev=1239660000&amp;do=diff</link>
        <description>VOB to AVI using Mencoder (Next Gen)

This is a recode and enhancement of my first vob2avi shell script. Pretty much does the same.


#!/bin/bash

function init() {
	if [ &quot;$INIT_DONE&quot; ]; then echo &quot;+ init: done already&quot; &gt;&amp;2; return; fi
	key=&quot;$IN $OPTS&quot;
	echo &quot;::: init: initializing with key '$key'&quot; &gt;&amp;2 ;
#	hash=`echo &quot;$key&quot; | md5sum | cut -f1 -d' '`
	hash=`echo &quot;OPTS $OPTS&quot; | sed 's/[^[:alnum:]]/_/g' `
	echo &quot;+ init: hash is '$hash'&quot; &gt;&amp;2 ;
	basedir=`dirname &quot;$IN&quot;`
	basename=`basename &quot;$IN&quot;`
	exp…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/vym_to_freemind?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:vym_to_freemind</title>
        <link>http://rigo.info/en/blog/vym_to_freemind?rev=1239660000&amp;do=diff</link>
        <description>VYM to Freemind

An XSLT that converts VYM mindmaps to the Freemind format.


&lt;xsl:transform version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
&lt;!-- by Erno Rigo [mcree_AT_tricon_DOT_hu], 2006-11-14 --&gt;

&lt;xsl:template match=&quot;/&quot;&gt;
	&lt;xsl:apply-templates select=&quot;/vymmap/mapcenter&quot; /&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match=&quot;/vymmap/mapcenter&quot;&gt;
	&lt;map version=&quot;0.8.0&quot;&gt;
		&lt;node ID=&quot;_&quot; TEXT=&quot;map imported from VYM&quot;&gt;
		&lt;xsl:apply-templates select=&quot;branch&quot; /&gt;
		&lt;/node&gt;
	&lt;/map&gt;
&lt;/xsl:template&gt;

&lt;xs…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/wainting_for_samba_mounts_upon_login_to_kde?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:wainting_for_samba_mounts_upon_login_to_kde</title>
        <link>http://rigo.info/en/blog/wainting_for_samba_mounts_upon_login_to_kde?rev=1239660000&amp;do=diff</link>
        <description>Wainting for samba mounts upon login to KDE

Since my employer introduced the policy of switching off office PCs during night hours I'm keeping my documents and other important stuff (most notably my KDE Desktop directory) on a remote samba share. When I arrive to the office in the morning it's useful to have KDE wait for the Desktop directory to be mounted, that in turn only happens after my PC obtains an address via DHCP. Often I was too quick to supply my login credentials so KDE panicked and…</description>
    </item>
    <item rdf:about="http://rigo.info/en/blog/xstreamwrapper?rev=1239660000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2009-04-14T00:00:00+02:00</dc:date>
        <title>en:blog:xstreamwrapper</title>
        <link>http://rigo.info/en/blog/xstreamwrapper?rev=1239660000&amp;do=diff</link>
        <description>XStreamWrapper

 - I've written a java wrapper class for using XStream in my way. Also here you can find a very simple example which can be used to save and restore application configuration from an .xml conffile. 

api,
	xml,
	xstream,
	persistence,
	java</description>
    </item>
</rdf:RDF>
