<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-11922628</id><updated>2009-02-25T19:22:48.105+01:00</updated><title type='text'>root.log</title><subtitle type='html'>During my programming work I had to do some system administration tasks, and since a while I'm also maintaining some servers. This is a log for the problems I find - and hopefully their solutions.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>peter</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11922628.post-114692258969313548</id><published>2006-05-06T14:44:00.000+02:00</published><updated>2006-05-06T15:37:06.683+02:00</updated><title type='text'>Top wizardry</title><content type='html'>&lt;p&gt;OK, you're probably way too familiar with the Linux &lt;code&gt;top&lt;/code&gt; command. But do you know what all of these mean?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;top -b -n 1&lt;/li&gt;&lt;li&gt;top -u www-data&lt;/li&gt;&lt;li&gt;top -p 4365&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If not, head over to this valuable article on &lt;a href="http://www.linuxforums.org/misc/using_top_more_efficiently.html"&gt;using top more efficiently&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-114692258969313548?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/114692258969313548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=114692258969313548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/114692258969313548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/114692258969313548'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2006/05/top-wizardry.html' title='Top wizardry'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112903087731850362</id><published>2005-10-11T13:40:00.000+02:00</published><updated>2005-10-11T13:41:17.326+02:00</updated><title type='text'>Backup all mysql databases to separate dump files</title><content type='html'>It's easy to just simple do a &lt;br /&gt;&lt;br /&gt;mysqldump --alldatabases &gt; mysqlbackup.sql &lt;br /&gt;&lt;br /&gt;to backup everything into a large SQL dump, so that you have the inserts there if you have a booboo happening. But what a nightmare you face when you just have to get those lines that affect your recently-crashed site! Well, there's a bit more sophisticated, but much better solution: have each of your database backed up in a separate SQL dump file with the following shell script:&lt;br /&gt;&lt;br /&gt;for i in /var/lib/mysql/*/; do&lt;br /&gt;    dbname=`basename $i`&lt;br /&gt;    /usr/bin/mysqldump $dbname &gt; /home/db_backups&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;Of course you might have to add login parameters to the mysql line above, but that shouldn't be a problem. (Hint: -u myusername --password=mysecretpassword)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112903087731850362?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112903087731850362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112903087731850362' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112903087731850362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112903087731850362'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/10/backup-all-mysql-databases-to-separate.html' title='Backup all mysql databases to separate dump files'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112826329453654866</id><published>2005-10-02T16:27:00.000+02:00</published><updated>2005-10-02T18:39:01.946+02:00</updated><title type='text'>Serve all - and any - subdomains from one central script</title><content type='html'>This is probably the most common wildcard example, still, I needed some googling to find the perfect way to do it. The idea is that the setup &lt;b&gt;should accept any kind of subdomains&lt;/b&gt; (we don't know in the beginning, what subdomains might come), and serve them &lt;b&gt;from one central scritp&lt;/b&gt;. Of course all this without the user seeing what's going on behind the curtains. Let me make it clear with an example:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;http://anything.example.com/somesubdir&lt;/tt&gt; &lt;br /&gt;&lt;b&gt;should be served by&lt;/b&gt; &lt;br /&gt;&lt;tt&gt;http://example.com/centralscript.cgi/anything/somesubdir&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;http://anotherthing.example.com/&lt;/tt&gt; &lt;br /&gt;&lt;b&gt;should be served by&lt;/b&gt; &lt;br /&gt;&lt;tt&gt;http://example.com/centralscript.cgi/anotherthing&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;So, as you see, we have a &lt;tt&gt;centralscript.cgi&lt;/tt&gt;, which gets the subdomain name and the directories that were called as a parameter. This of course can be a PHP script too, whatever you prefer. Now, one more thing to the specification: www.example.com and the plain example.com &lt;b&gt;should work as they are now&lt;/b&gt;, no centralscript.cgi magic here. &lt;br /&gt;&lt;br /&gt;The solution was found at the wonderful webmasterworld forums - as so often. &lt;a href="http://www.webmasterworld.com/forum92/1310.htm"&gt;This topic&lt;/a&gt; discusses the exact same problem. I'll go into more details here and include the necessary nameserver configuration too, but I &lt;b&gt;don't want to take credit for anything here&lt;/b&gt;, I would still be struggling without the fine guys at the webmasterworld.&lt;br /&gt;&lt;br /&gt;So, first, let's &lt;b&gt;set up our nameserver&lt;/b&gt; (bind9 is my choice, but whatever you use, this should work. I hope at least.), edit the zone file for your example.com domain. First of all, never forget to &lt;b&gt;update the timestamp&lt;/b&gt; of the zone, so start with that, and then insert the following line to the end of your subdomain list:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;* A 1.2.3.4&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Where of course 1.2.3.4 is the IP of your domain name. Restart the nameserver (&lt;tt&gt;/etc/init.d/bind9 restart&lt;/tt&gt;, or whatever you use), and check your setup with pinging anything.example.com. Provided that the test box uses the same nameserver too, you should get pretty fast response times. If not, maybe you should wait a bit until the domain zone file spreads to your test box - but be prepared for a bit more time than a cup of tea. Anyway, continue, if you can ping any subdomain under example.com - the &lt;b&gt;nameserver part is done&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Next, &lt;b&gt;Apache config&lt;/b&gt; and the mysterious &lt;b&gt;rewrite engine&lt;/b&gt;. It's a topic worth to master, but honestly, I didn't have the time yet. The explanation of the techniques below can be found at the webmasterworld forums linked above.&lt;br /&gt;&lt;br /&gt;So, open up your httpd.conf file, and look for the virtualhost already set up for your main example.com domain. (I won't explain it here how to do that, it's pretty basic.) Side-note: I'm very much against puting this kind of settings to .htaccess files. Only use those, if you absolutely don't have access to the central configuration file - just imagine, the httpd.conf files are loaded once you start the server, but the .htaccess files are loaded &lt;em&gt;at every request&lt;/em&gt;. No need to overload your server without a reason.&lt;br /&gt;&lt;br /&gt;First what you have to do is make sure that apache finds the appropriate virtualhost for all your subdomains. Add this line to the virtualhost settings:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;ServerAlias *.example.com&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;To test if it works, restart apache, and go for http://whatever.example.com. You should see your original www.example.com main page, since no special rules are defined yet for this subdomain. If all goes well, open the httpd.conf file again, and paste this code below at the end of the virtualhost config of www.example.com:&lt;pre&gt;# Rewrite &amp;lt;subdomain&amp;gt;.example.com/&amp;lt;path&amp;gt; to&lt;br /&gt;#   example.com/centralscript.cgi/&amp;lt;subdomain&amp;gt;/&amp;lt;path&amp;gt; &lt;br /&gt;RewriteEngine On&lt;br /&gt;&lt;br /&gt;# Skip rewrite if no hostname or if subdomain is www &lt;br /&gt;RewriteCond %{HTTP_HOST} . &lt;br /&gt;RewriteCond %{HTTP_HOST} !^www\. [NC] &lt;br /&gt;&lt;br /&gt;# Extract (required) subdomain (%1), and &lt;br /&gt;#   first path element (%3),&lt;br /&gt;#   discard port number if present (%2) (&lt;b&gt;in one line!&lt;/b&gt;)&lt;br /&gt;RewriteCond %{HTTP_HOST}&amp;lt;&amp;gt;%{REQUEST_URI} &lt;br /&gt;    ^([^.]+)\.example\.com(:80)?&amp;lt;&amp;gt;/([^/]*) [NC] &lt;br /&gt;&lt;br /&gt;# Rewrite only when subdomain not equal to &lt;br /&gt;# first path element (prevents mod_rewrite recursion) &lt;br /&gt;RewriteCond %1&amp;lt;&amp;gt;%3 !^(.*)&amp;lt;&gt;\1$ [NC] &lt;br /&gt;&lt;br /&gt;# Rewrite to /subdomain/path &lt;br /&gt;RewriteRule ^(.*) /centralscript.cgi/%1$1 [L]&lt;br /&gt;&lt;br /&gt;# Do some logging&lt;br /&gt;RewriteLog "/var/log/apache/rewrite.log"&lt;br /&gt;RewriteLogLevel 9&lt;br /&gt;&lt;/pre&gt;Of course you'll have to &lt;b&gt;replace example.com&lt;/b&gt; to your main domain, &lt;b&gt;and centralscript.cgi&lt;/b&gt; for your script's name. Restart apache, and check if it works. If not, study the rewrite log set up above, if yes, comment out the two last lines - again, no need to overload the server with some useless logging junk. &lt;br /&gt;&lt;br /&gt;I provide you a simple centralscript.cgi to test if the setup works, and also to see how the parameters are passed:&lt;pre&gt;#!/usr/bin/perl&lt;br /&gt;print "Content-type: text/plain\n\n";&lt;br /&gt;print "CGI parameter (PATH_INFO): $ENV{'PATH_INFO'}";&lt;br /&gt;&lt;/pre&gt;Of course the usual blahblah applies: script should have the x flag, and ExecCGI should be allowed for the directory where it's in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112826329453654866?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112826329453654866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112826329453654866' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112826329453654866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112826329453654866'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/10/serve-all-and-any-subdomains-from-one.html' title='Serve all - and any - subdomains from one central script'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112817253357636390</id><published>2005-10-01T15:14:00.000+02:00</published><updated>2005-10-01T15:16:36.823+02:00</updated><title type='text'>Common templates for different blogs in MovableType</title><content type='html'>Say you have more than one (we have eight, and growing...) number of MT blogs that have templates that are the same for every one of them. (For example the RSS feed, individual archive, whatever.) You'd love to have them at a central place, so when it's time to finetune, you don't have to modify all the blogs' templates for the same changes. I hate doing repetitive stuff, so instead I found out that how I can avoid it. &lt;br /&gt;&lt;br /&gt;MovableType supports a feature that lets you link a template to a file. Yes, that's going to be the solution: we link the same temaplate (in this example the RSS feed index.xml one) to the same file at every blog. The only problem is that the "link template to a file" input box's rootdir is the root of your blog, which is of course different for the different blogs.&lt;br /&gt;&lt;br /&gt;For example you have this setup:&lt;br /&gt;&lt;br /&gt;/home/blogs/blog1/ - www.blog1.com&lt;br /&gt;/home/blogs/blog2/ - www.blog2.com&lt;br /&gt;&lt;br /&gt;Now if you try to link to "/common_index.xml.tmpl" at blog1, it will create the file /home/blogs/blog1/common_index.xml.tmp. Which is of course hard to see from blog2. What you can do is set up a directory for all the common templates (for example: /home/blogs/common_templates) and link to it like this: ../common_templates/index.xml.tml&lt;br /&gt;&lt;br /&gt;I know it's a dirty hack, it might even be a bug in the MovableType engine (but so far it's working at MT 3.2), but it works like a charm, you just have to set it up once at every blog, then a modification at any blog will affect all the other blogs too. You might need to rebuild all of your blogs to see it working in case you're not modifying a dynamic template.&lt;br /&gt;&lt;br /&gt;To master this technique, you can separate common parts from individual ones with referring to template modules. If you refer to a module with &amp;lt;$MTInclude module="head"$&amp;gt; then every blog will look for the template module "head" in its own templates, so you can achieve individual heads, while having common index templates. Way to go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112817253357636390?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112817253357636390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112817253357636390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112817253357636390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112817253357636390'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/10/common-templates-for-different-blogs.html' title='Common templates for different blogs in MovableType'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112800608185699855</id><published>2005-09-29T17:01:00.000+02:00</published><updated>2005-09-29T17:01:21.866+02:00</updated><title type='text'>Simple, automated server link check</title><content type='html'>It's been ages since I've been looking for a solution to be able to check dead links on my sites. Just it never had a high priority - until now. &lt;br /&gt;&lt;br /&gt;After some googling, installing, playing around, removing, googling, installing, etc... I've found the perfect script for me: &lt;a href="http://degraaff.org/checkbot/"&gt;CheckBot&lt;/a&gt;. The &lt;a href="http://degraaff.org/checkbot/checkbot.pl.html"&gt;documentation&lt;/a&gt; is pretty much straightforward, but for a reference, I use this setup:&lt;br /&gt;&lt;br /&gt;checkbot --verbose --cookies --file index.html --mailto my@addre.ss --dontwarn "(301|302|903|904|400|403)" --ignore "(feeds\.archive|jigsaw|https)" --sleep 0.2 http://www.site1.com http://www.site2.com&lt;br /&gt;&lt;br /&gt;--verbose: this should be turned off for automatic running&lt;br /&gt;&lt;br /&gt;--file index.html: that's because the report's in its own directory&lt;br /&gt;&lt;br /&gt;--mailto: my@addre.ss: so that I see what was going on&lt;br /&gt;&lt;br /&gt;--dontwarn "(301|302|903|904|400|403)": I pretty much only need the serious problems&lt;br /&gt;&lt;br /&gt;--ignore "(feeds\.archive|jigsaw|https)": URLs with these strings I don't want to check, validators in the beginning, linked with another URL from every page, and I don't need https checking neither (I know the regexps could be better, but that was fine for me)&lt;br /&gt;&lt;br /&gt;--sleep 0.2: Without this I experienced a sudden 1.2 load on the webserver, that's not nice. 0.2 seconds of delay between requests it OK for me - local files are still fast, and for remote files the network delay will be much longer anyway&lt;br /&gt;&lt;br /&gt;And then the URLs at the end. Can be put to a crontab to run every week, and that's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112800608185699855?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112800608185699855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112800608185699855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112800608185699855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112800608185699855'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/09/simple-automated-server-link-check.html' title='Simple, automated server link check'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112799028017568637</id><published>2005-09-29T12:37:00.000+02:00</published><updated>2005-09-29T12:38:00.180+02:00</updated><title type='text'>Mysterious connection problem and resolution</title><content type='html'>This was weird. 2 days ago my connection to a company IMAP server simply stopped working. To cut a long story short, after lots of trying and head-scratching, I could at least identify the problem at its roots: whenever I telneted to a working port of the IMAP server (it has webmail too, etc) I was faced with an empty screen, and after the first keypress, the connection dropped.&lt;br /&gt;&lt;br /&gt;Now I use a Windows XP laptop through a wifi router for work, I don't want to get into details why, it's just given. I tried to locate the source of the problem: trying from a remote server works OK. Trying from connecting the laptop to the router instead of wifi: NOT OK. Trying from the home linux server connected to the router: OK. Trying from Knoppix on my laptop: OK. &lt;br /&gt;&lt;br /&gt;Shit, the problem's in the networking part of Windows XP. Hell, all I need now is a reinstall... like I'd have time for that. But I had an idea: if the stuff works from my server, why don't I try to tunel the IMAP traffic through it? Why not - besides the fact that I've never done anything like that before.&lt;br /&gt;&lt;br /&gt;But surprisingly it worked like a charm, thanks to &lt;a href="http://www.cs.uu.nl/technical/services/ssh/putty/puttyfw.html"&gt;this guide&lt;/a&gt;. You might want to turn on compression and ask putty not to open a remote shell, since you're not using the ssh connection itself, just for the tunel. When set up, I started the tunel, and asked my IMAP client to connect to localhost:143 - and voilá, after all the struggling, I have a faster and a bit more secure connection now. Phew.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112799028017568637?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112799028017568637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112799028017568637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112799028017568637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112799028017568637'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/09/mysterious-connection-problem-and.html' title='Mysterious connection problem and resolution'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112124472334483771</id><published>2005-07-13T10:49:00.000+02:00</published><updated>2005-07-13T10:52:03.350+02:00</updated><title type='text'>Creating and using SFV checkfiles on debian</title><content type='html'>This is quite straightforward, just I need it so rarely that I'm keep on forgeting, so here's the note. The package is &lt;tt&gt;cksfv&lt;/tt&gt;, to create an sfv checkfile for sample.tgz use &lt;tt&gt;cksfv sample.tgz &gt; sample.sfv&lt;/tt&gt;, to check it just use &lt;tt&gt;cksfv sample.svf&lt;/tt&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112124472334483771?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112124472334483771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112124472334483771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112124472334483771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112124472334483771'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/07/creating-and-using-sfv-checkfiles-on.html' title='Creating and using SFV checkfiles on debian'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-112108845171550495</id><published>2005-07-11T15:26:00.000+02:00</published><updated>2005-07-11T15:27:31.716+02:00</updated><title type='text'>MovableType MTDateHeaders problem solved!</title><content type='html'>I've updated the &lt;a href="http://rootlog.blogspot.com/2005/04/movabletype-monthly-archive-problems.html"&gt;original article&lt;/a&gt; in case someone finds it through google. Phew.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-112108845171550495?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/112108845171550495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=112108845171550495' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112108845171550495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/112108845171550495'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/07/movabletype-mtdateheaders-problem.html' title='MovableType MTDateHeaders problem solved!'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111814394479782560</id><published>2005-06-07T13:24:00.000+02:00</published><updated>2005-06-07T13:32:41.240+02:00</updated><title type='text'>Registered users cannot make modifications in MediaWiki</title><content type='html'>This was bugging me for a while. There was a server restart and after that no registered users could make any changes in our MediaWiki install - unregistered users could write, change, whatever without any problems. I've updated to 1.4.5, no help. Finally I've turned to &lt;a href="irc://irc.freenode.net/#mediawiki"&gt;the IRC channel of MediaWiki&lt;/a&gt; - and a simple answer led me to the solution: "your php session support is broken. fix it." &lt;br /&gt;&lt;br /&gt;I've checked my php.ini, and there I found:&lt;blockquote&gt;session.save_path = /tmp/php4_sessions&lt;/blockquote&gt;Thinking a bit back I remember adding this subdirectory to the config a while ago, when I had enough of all the session files in the /tmp folder - what I forgot is that at restart, the contents of the /tmp folder is completely deleted - including subdirectories. Also, php warns me at the config that she'll not create subdirs for the sessions, so there it is - I've changed back the php.ini config to /tmp, and now everything works well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111814394479782560?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111814394479782560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111814394479782560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111814394479782560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111814394479782560'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/06/registered-users-cannot-make.html' title='Registered users cannot make modifications in MediaWiki'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111606247045821394</id><published>2005-05-14T11:16:00.000+02:00</published><updated>2005-05-14T11:21:10.463+02:00</updated><title type='text'>p2p on debian</title><content type='html'>As far as I know, &lt;a href="http://mldonkey.berlios.de/"&gt;MLDonkey&lt;/a&gt; is the best application for this: multiple protocols (edonkey, overnet, torrent, gnutella, etc.), telnet- and web-based client, dpkg installer, what else would you need? Just running it was not so obvious for me, so here it is:&lt;ul&gt;&lt;li&gt;Start daemon: mldonkey_server --daemon --start&lt;/li&gt;&lt;li&gt;Stop daemon: mldonkey_server --daemon --stop&lt;/li&gt;&lt;/ul&gt;I'm sure it should work normally by /etc/init.d, but it failed for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111606247045821394?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111606247045821394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111606247045821394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111606247045821394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111606247045821394'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/05/p2p-on-debian.html' title='p2p on debian'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111527632792689708</id><published>2005-05-05T08:57:00.000+02:00</published><updated>2005-05-05T08:58:47.930+02:00</updated><title type='text'>Debian Administration site</title><content type='html'>This seems to be useful, tips and tricks site for &lt;a href="http://www.debian-administration.org/"&gt;Debian system administration&lt;/a&gt;. Bookmarked, too bad their rss feeds are not working in Opera 8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111527632792689708?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111527632792689708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111527632792689708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111527632792689708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111527632792689708'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/05/debian-administration-site.html' title='Debian Administration site'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111436306797728822</id><published>2005-04-24T19:16:00.000+02:00</published><updated>2005-04-24T19:20:29.170+02:00</updated><title type='text'>Incoming FTP directory config</title><content type='html'>I guess this task is quite usual, however, I've never done this before, and had to do some googling to make it work as I wanted. &lt;br /&gt;&lt;br /&gt;Requirements:&lt;ul&gt;&lt;li&gt;user &lt;tt&gt;public&lt;/tt&gt; should be able to create new files and subdirs under /home/joe/incoming/&lt;/li&gt;&lt;li&gt;only &lt;tt&gt;joe&lt;/tt&gt; and nobody else should be able to read the contents of, rename and delete from /home/joe/incoming&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;After some finetuning, the addition to proftpd.conf is the following:&lt;pre&gt;&amp;lt;Directory /home/joe/incoming&amp;gt;&lt;br /&gt; Umask   002     002&lt;br /&gt;  &amp;lt;Limit STOR CWD MKD XMKD&amp;gt;&lt;br /&gt;   AllowAll&lt;br /&gt;  &amp;lt;/Limit&amp;gt;&lt;br /&gt;  &amp;lt;Limit READ RMD XRMD DELE SITE_CHMOD RNFR RNTO&amp;gt;&lt;br /&gt;   AllowUser joe&lt;br /&gt;   DenyAll&lt;br /&gt;  &amp;lt;/Limit&amp;gt;&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/pre&gt;Also, user &lt;tt&gt;joe&lt;/tt&gt; is in the same group as user &lt;tt&gt;public&lt;/tt&gt;. &lt;br /&gt;&lt;br /&gt;Quite a boring post, I admit, but I want to save some time next time I have to do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111436306797728822?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111436306797728822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111436306797728822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111436306797728822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111436306797728822'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/incoming-ftp-directory-config.html' title='Incoming FTP directory config'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111434445396618830</id><published>2005-04-24T14:02:00.000+02:00</published><updated>2005-04-24T14:09:20.716+02:00</updated><title type='text'>screen for dummies ...</title><content type='html'>... like me. screen is an oldschool, yet very useful package to handle multilple jobs. This post will not list all of its functions - which can be find almost everywhere - just serves as a virtual post-it note for myself with the for the most basic features.&lt;ol&gt;&lt;li&gt;Start a program in the background with screen:&lt;pre&gt;screen -dmS &lt;i&gt;sessionname&lt;/i&gt; &lt;i&gt;prgname&lt;/i&gt;&lt;/pre&gt; - this will start &lt;i&gt;prgname&lt;/i&gt; in a background screen named &lt;i&gt;sessionname&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;See what's going on in a background screen:&lt;pre&gt;screen -r &lt;i&gt;sessionname&lt;/i&gt;&lt;/pre&gt; - this will put you on the screen of the session named &lt;i&gt;sessionname&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Put the foreground screen back to the background: CTRL+A and then D (for detach).&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111434445396618830?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111434445396618830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111434445396618830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111434445396618830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111434445396618830'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/screen-for-dummies.html' title='screen for dummies ...'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111426405918203829</id><published>2005-04-23T15:47:00.000+02:00</published><updated>2005-04-23T15:49:08.953+02:00</updated><title type='text'>How to backup all your incoming and outgoing mails?</title><content type='html'>It's so simple I'm wondering why I haven't thought of it before. GMail. Set up a new account, like &lt;i&gt;yourname&lt;/i&gt;backup@gmail.com. Add it to the automatic &lt;tt&gt;bcc:&lt;/tt&gt; setting of your favourite email client(s). Set up an autoforward (keep mails on server) on your email host. (I go for the least work, so I just made a &lt;tt&gt;.forward&lt;/tt&gt; file like this in my home directory:&lt;pre&gt;&lt;i&gt;myusername&lt;/i&gt;&lt;br /&gt;&lt;i&gt;myname&lt;/i&gt;backup@gmail.com&lt;/pre&gt; - so just a copy of my mails are forwarded to gmail.)&lt;br /&gt;&lt;br /&gt;Voilá, you have 2 GBytes (and growing) backup of all your incoming and outgoing emails. Neat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111426405918203829?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111426405918203829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111426405918203829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111426405918203829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111426405918203829'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/how-to-backup-all-your-incoming-and.html' title='How to backup all your incoming and outgoing mails?'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111372656798212030</id><published>2005-04-17T10:28:00.000+02:00</published><updated>2005-04-17T10:32:02.233+02:00</updated><title type='text'>All kinds of file uploads to MediaWiki</title><content type='html'>I'm using a &lt;a href="http://wikipedia.sourceforge.net/"&gt;MediaWiki&lt;/a&gt; install to work on the always-changing documentation of a current project. The default install doesn't allow file uploads at all. Here's what I had to do:&lt;br /&gt;&lt;br /&gt;First, &lt;tt&gt;chmod a+w images&lt;/tt&gt; in the wiki root directory. Now users can upload all kinds of files that are not blacklisted in MediaWiki. Unfortunately we need to store .doc Word documents too in the wiki, so I needed another step. After some googling I've found the info in &lt;a href="http://mail.wikipedia.org/pipermail/wikitech-l/2004-September.txt"&gt;an archive of the wikitech-list&lt;/a&gt;:&lt;pre&gt;# If this is turned off, &lt;br /&gt;# users may override the warning for files not&lt;br /&gt;# covered by $wgFileExtensions.&lt;br /&gt;$wgStrictFileExtensions = true;&lt;/pre&gt;These lines are from the &lt;tt&gt;DefaultSettings.php&lt;/tt&gt; file, but you're not advised to make changes there. Instead, just copy them to &lt;tt&gt;LocalSettings.php&lt;/tt&gt;, and set the variable to false.&lt;br /&gt;&lt;br /&gt;After this, uploads of any file format are immediately available to every user of the wiki. Since I'm controlling access at the Apache level, that's exactly what I wanted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111372656798212030?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111372656798212030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111372656798212030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111372656798212030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111372656798212030'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/all-kinds-of-file-uploads-to-mediawiki.html' title='All kinds of file uploads to MediaWiki'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111354831921567151</id><published>2005-04-15T08:50:00.000+02:00</published><updated>2005-04-15T09:11:16.046+02:00</updated><title type='text'>Moving a site</title><content type='html'>I wake up in the morning, 8AM, &lt;b&gt;very&lt;/b&gt; early for me, and what do I see? The site's DNS I expected to change during the night displays another user's site. This is crazy, the new server is supposed to host the site well, I've tested that yesterday night, so what's wrong? After a coffe and two cigarettes, I've found it:&lt;ul&gt;&lt;li&gt;The DNS got changed during the night as I expected, just TTL was quite high, and my laptop had the old address cached&lt;/li&gt;&lt;li&gt;But not the old server&lt;/li&gt;&lt;li&gt;And add to the chaos that apache got restarted on the old server too&lt;/li&gt;&lt;li&gt;Which meant that if somebody requested the site from the old server got another page, because the server didn't think he's supposed to serve pages for this domain&lt;/li&gt;&lt;li&gt;Which is exactly what happened to me&lt;/li&gt;&lt;li&gt;(And to a few other visitors too, unfortuantely)&lt;/li&gt;&lt;/ul&gt;Quick'n'dirty solution: I've lied to the old server that he's still in charge of this domain name by adding a line to /etc/hosts... After an apache restart, all's fine now, regardless of how fresh or how old your DNS record is. Now off to have a breakfast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111354831921567151?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111354831921567151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111354831921567151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111354831921567151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111354831921567151'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/moving-site.html' title='Moving a site'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111331674721279883</id><published>2005-04-12T16:37:00.000+02:00</published><updated>2005-04-12T16:39:07.213+02:00</updated><title type='text'>Understanding Linux memory issues</title><content type='html'>Just found a nice support page at a hosting company on &lt;a href="http://rimuhosting.com/howto/memory.jsp"&gt;troubleshouting memory usage&lt;/a&gt;. &lt;i&gt;Blognote to self: finetune apache and mysql configs!&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111331674721279883?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111331674721279883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111331674721279883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111331674721279883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111331674721279883'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/understanding-linux-memory-issues.html' title='Understanding Linux memory issues'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111321079817214693</id><published>2005-04-11T11:12:00.000+02:00</published><updated>2005-04-11T11:26:44.566+02:00</updated><title type='text'>Rescue / burn-in boot cds</title><content type='html'>A friend of mine is having a new laptop today (the bastard) and I advised him to "burn-in" the beast before installing anything on it. And of course I didn't remember the name of the tool I use for this, so after some googleing I assembled this list, so next time I can just look it up here. (If I remember that I've posted it. Whatever.)&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ultimatebootcd.com/"&gt;The Ultimate BootCD&lt;/a&gt; - all kinds of burn-in tests for RAM, CPU, HDD, etc.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.knoppix.org/"&gt;KNOPPIX&lt;/a&gt; Linux LiveCD - there are thousands of different Linux LiveCDs out there now, but this I actually used before, and found out with great pleasure that it reads NTFS and burns CDs. Probably the others do too.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ubcd4win.com/"&gt;UBCD for Windows&lt;/a&gt; - Sideproject of The Ultimate BootCD, with a live windows (you'll need your install to build the cd) running from the cd itself. Sounds promising, but fortunately I never needed it yet.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111321079817214693?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111321079817214693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111321079817214693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111321079817214693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111321079817214693'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/rescue-burn-in-boot-cds.html' title='Rescue / burn-in boot cds'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111320520749350461</id><published>2005-04-11T09:39:00.000+02:00</published><updated>2005-04-11T09:40:42.173+02:00</updated><title type='text'>Spambot = DOS</title><content type='html'>This is getting serious. Yesterday night a spammer put 245 comments in less than 2 minutes to some MovableType blogs I host. The result: the server got overloaded in no time and the kernel started a great massacre in there. After the smoke cleared up crond, named and munin-node were killed - for the whole night, I just restarted them. It's really pissing me off, an automated process can bring down a server in 2 minutes, I'll have to do something about this. Ideas:&lt;ul&gt;&lt;li&gt;upgrade to MT3, check how it's done there&lt;/li&gt;&lt;li&gt;disable comments for old posts (is it possible in MT2.6?)&lt;/li&gt;&lt;li&gt;hack comments.cgi not to allow more than 1 comment / 1 minute / 1 IP&lt;/li&gt;&lt;li&gt;replace &lt;a href="http://www.jayallen.org/projects/mt-blacklist/"&gt;MTBlackList&lt;/a&gt; with a better protection tool&lt;/li&gt;&lt;/ul&gt;That's all I can think of. Together with the &lt;a href="http://rootlog.blogspot.com/2005/04/movabletype-monthly-archive-problems.html"&gt;previous trouble with MT2.6&lt;/a&gt; I think it might be time to upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111320520749350461?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111320520749350461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111320520749350461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111320520749350461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111320520749350461'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/spambot-dos.html' title='Spambot = DOS'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111313552304449281</id><published>2005-04-10T14:18:00.000+02:00</published><updated>2005-04-10T14:21:16.966+02:00</updated><title type='text'>Strange debian-mysql-apache-mod_perl problem</title><content type='html'>This got me. I was adding a new script to an already working mod_perl site, and when I found it working on my Windows box, I "released" it to the live Linux server. &lt;br /&gt;&lt;br /&gt;It didn't work. Without getting into too much details, I could summarize what caused the problem:&lt;PRE&gt;use DBI;&lt;br /&gt;print "Content-type: text/html\n\n OK!";&lt;br /&gt;print eval{ &lt;br /&gt; DBI-&gt;connect("DBI:mysql:database=dbname",'user','pass', &lt;br /&gt; { RaiseError =&gt; 1, PrintError =&gt; 1, AutoCommit =&gt; 1 }) &lt;br /&gt;};&lt;/PRE&gt;The above script nicely connects through the command line, but when loaded into the browser, it returns 0 bytes and closes the connection. If I comment out the connection line(s), the whole thing works OK from mod_perl too.&lt;br /&gt;&lt;br /&gt;The site's error log gets the following messages:&lt;PRE&gt;free(): invalid pointer 0x917cb90!&lt;/PRE&gt;Strange. Add to the frustration that the other parts of the site use the database connection without a problem. &lt;br /&gt;&lt;br /&gt;No happy end: I moved the new function under CGI, there it works. &lt;br /&gt;&lt;br /&gt;Sometimes I really wish I was a baker or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111313552304449281?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111313552304449281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111313552304449281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111313552304449281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111313552304449281'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/strange-debian-mysql-apache-modperl.html' title='Strange debian-mysql-apache-mod_perl problem'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111287868853338125</id><published>2005-04-07T14:56:00.000+02:00</published><updated>2005-04-07T16:34:54.086+02:00</updated><title type='text'>Resizable textarea</title><content type='html'>Just a reminder for myself, next time I'll need a textarea being able to contain lots of info, I should make it &lt;a href="http://thraxil.org/test/resize.html"&gt;resizable&lt;/a&gt;. Or maybe just allow the user to &lt;a href="http://tool-man.org/examples/edit-in-place.html"&gt;edit the contents of the page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111287868853338125?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111287868853338125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111287868853338125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111287868853338125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111287868853338125'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/resizable-textarea.html' title='Resizable textarea'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111278758408406588</id><published>2005-04-06T13:39:00.000+02:00</published><updated>2005-04-06T14:22:58.786+02:00</updated><title type='text'>Backslashes in php regular expressions</title><content type='html'>Damn this was frustrating! Trying to match a \ character in php? Don't expect the usual Perl behavior, finding \\ - it won't work. You have to search for \\\ ! And the solution was only found in a &lt;a href="http://svn.bbpress.automattic.com/trunk/bb-admin/upgrade.php"&gt;source code&lt;/a&gt; with google: &lt;pre&gt;  function deslash($content) {&lt;br /&gt;    // Note: \\\ inside a regex denotes a single backslash.&lt;br /&gt;&lt;br /&gt;    // Replace one or more backslashes followed by a single&lt;br /&gt;    // quote with a single quote.&lt;br /&gt;    $content = preg_replace("/\\\+'/", "'", $content);&lt;br /&gt;&lt;br /&gt;    // Replace one or more backslashes followed by a double&lt;br /&gt;    // quote with a double quote.&lt;br /&gt;    $content = preg_replace('/\\\+"/', '"', $content);&lt;br /&gt;&lt;br /&gt;    // Replace one or more backslashes with one backslash.&lt;br /&gt;    $content = preg_replace("/\\\+/", "\\", $content);&lt;br /&gt;&lt;br /&gt;    return $content;&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;2 hours wasted...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111278758408406588?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111278758408406588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111278758408406588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111278758408406588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111278758408406588'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/backslashes-in-php-regular-expressions.html' title='Backslashes in php regular expressions'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111277750272195828</id><published>2005-04-06T10:48:00.000+02:00</published><updated>2005-04-06T14:23:57.556+02:00</updated><title type='text'>Backing up an ftp-only site</title><content type='html'>One of my new sites has an ftp account only, but still, I'm only sleeping well if I can back everything up. I thought a simple mirror would be enough, and when I have the files on a more controllable box, I can put them into my regular backups. That's exactly what I did:&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Installed the &lt;a href="http://www.sunsite.org.uk/packages/mirror/"&gt;mirror package&lt;/a&gt; with &lt;a href="http://aptitude.sourceforge.net/"&gt;aptitude&lt;/a&gt; (by the way, it kicks the ass of apt-get)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Created the following mini package file, saved as &lt;tt&gt;/home/someserver_backup/someserver_mirror_package&lt;/tt&gt;:&lt;br /&gt;&lt;pre&gt;package=someserver.com&lt;br /&gt;site=ftp.someserver.com&lt;br /&gt;local_dir=/home/someserver_backup/someserver.com/&lt;br /&gt;remote_user=someftpuser&lt;br /&gt;remote_password=someftppassword&lt;br /&gt;remote_dir=/&lt;br /&gt;passive_ftp=true&lt;br /&gt;get_patt=(^http|^cgi)&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tested it with &lt;tt&gt;mirror -n /home/someserver_backup/someserver_mirror_package&lt;/tt&gt; (if you see filenames running on the screen, you're probably ok)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added &lt;tt&gt;/usr/bin/mirror &lt;br /&gt;/home/someserver_backup/someserver_mirror_package&lt;/tt&gt; to backup2l.conf's PRE_BACKUP section&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ran &lt;tt&gt;backup2l -b&lt;/tt&gt; to see if everything's ok&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Smiled&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111277750272195828?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111277750272195828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111277750272195828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111277750272195828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111277750272195828'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/backing-up-ftp-only-site.html' title='Backing up an ftp-only site'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111277104634996743</id><published>2005-04-06T09:03:00.000+02:00</published><updated>2005-07-11T15:22:09.306+02:00</updated><title type='text'>MovableType monthly archive problems</title><content type='html'>I just moved my MT blog to a new server, and found that the monthly archive page does some weird stuff. &amp;lt;/MTMonthHeader&amp;gt; appearing in the rendered page's source was a sign that one of the plugins (&lt;a href="http://www.sixapart.com/pronet/plugins/plugin/dateheaders.html"&gt;MTDateHeaders&lt;/a&gt; to be specific) is not working. Of course, no errors during rebuilding. &lt;br /&gt;&lt;br /&gt;I rememberd a similar issue with &lt;a href="http://awstats.sourceforge.net/"&gt;AWStats&lt;/a&gt;, where after all it turned out that one of the plugins were missing a perl module. Some &lt;a href="http://www.google.com/search?q=mtdateheaders"&gt;googling&lt;/a&gt; &lt;a href="http://today.icantfocus.com/blog/archives/entries/mtdateheaders_update.icf"&gt;showed&lt;/a&gt; that this module uses &lt;a href="http://search.cpan.org/~stbey/Date-Calc-5.4/"&gt;Date::Calc&lt;/a&gt;, and I didn't have it on the new box! Until now, at least... &lt;br /&gt;&lt;br /&gt;But no help, this module still doesn't work. And - maybe it's just me, but - I cannot find the original plugin to download and check what else it misses. I gave up here yesterday night, today I might just update the whole MT package to 3.15, and find out how to do the MonthHeader thing differently.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Update:&lt;/em&gt; I've recently upgraded to the latest MovableType (3.17), with a clean install, but the problem was still there. OK, this time hardcore googling. Finally I've found a &lt;a href="http://www.movabletype.org/support/index.php?act=ST&amp;f=20&amp;t=7950"&gt;forum post&lt;/a&gt; where the author of the MTDateHeaders explained some install issues. One thing stroke me: he was referring an MTDateHeaders.&lt;strong&gt;pm&lt;/strong&gt; file too, together with the usual pl. Sparks above head. That's going to be it! &lt;br /&gt;&lt;br /&gt;Fortunately I still had access to the old server where everything was working ok. Did a quick'n'dirty find: &lt;pre&gt;find / -name MTDateHeaders.pm&lt;/pre&gt;And there it was, this nasty, bad bad bad module under &lt;tt&gt;/usr/local/share/perl/5.8.3&lt;/tt&gt;! Moved to the new server, and there it goes, everything works nicely.&lt;br /&gt;&lt;br /&gt;Before I finish, let me summarize: there's a software on the server, MovableType. There's a small plugin for it, MTDateHeaders. MT has a nice extlib directory for all the modules she and the plugins might need. Added all these together, a question rises: &lt;strong&gt;How the hell dares this plugin touch the base perl library directory?!&lt;/strong&gt; And if it's unavoidable (it is not), why cannot he complain if his vital module is missing?! Wonders of the world, I guess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111277104634996743?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111277104634996743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111277104634996743' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111277104634996743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111277104634996743'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/movabletype-monthly-archive-problems.html' title='MovableType monthly archive problems'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11922628.post-111268511866429317</id><published>2005-04-05T09:10:00.000+02:00</published><updated>2005-04-06T21:24:51.376+02:00</updated><title type='text'>Restarting updated services</title><content type='html'>&lt;a href="http://lists.debian.org/debian-security/2005/04/msg00044.html"&gt;This script&lt;/a&gt; posted to the &lt;a href="http://lists.debian.org/debian-security/"&gt;debian security list&lt;/a&gt; by Frans Pop seems to be very useful. It checks for services that are depending on recently updated libraries, and therefore should be restarted. Now I just have to remember to restart the whole server whenever there's a new kernel installed.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update: I've found out that the debian-goodies package contains a script called checkrestart which does exactly the same. Well, now I know.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11922628-111268511866429317?l=rootlog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rootlog.blogspot.com/feeds/111268511866429317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=11922628&amp;postID=111268511866429317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111268511866429317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11922628/posts/default/111268511866429317'/><link rel='alternate' type='text/html' href='http://rootlog.blogspot.com/2005/04/restarting-updated-services.html' title='Restarting updated services'/><author><name>peter</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03077454311415959313'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>