<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkINR3Y4fip7ImA9WhRREk8.&quot;"><id>tag:blogger.com,1999:blog-21581248</id><updated>2011-11-25T12:29:56.836+01:00</updated><category term="ruby" /><category term="muttrc" /><category term="Plymouth" /><category term="smtp" /><category term="admin" /><category term="sv manual" /><category term="apt-get" /><category term="postfix" /><category term="mencoder" /><category term="hacking" /><category term="cdrecord" /><category term="mplayer" /><category term="bitlbee" /><category term="firefox" /><category term="mutt" /><category term="mrtg" /><category term="ati" /><category term="strace" /><category term="debian" /><category term="license" /><category term="gimp" /><category term="irc" /><category term="tracd" /><category term="amavis" /><category term="backup" /><category term="zenity" /><category term="business card" /><category term="mysql" /><category term="schema" /><category term="sqlite" /><category term="graphics" /><category term="openssl" /><category term="ffmpeg" /><category term="bash" /><category term="font" /><category term="vlc" /><category term="xwindows" /><category term="trac" /><category term="Python AppEngine" /><category term="sql" /><category term="html" /><category term="fontforge" /><category term="ubuntu" /><category term="sec" /><category term="subtitles" /><category term="skiing" /><category term="gmail" /><category term="netcat" /><category term="replication" /><category term="svn" /><category term="subversion" /><title>A Correct Life - sysadmin everyday problems</title><subtitle type="html">Tell me more: &lt;a href="mailto:my.home.my.castle@gmail.com"&gt;my.home.my.castle@gmail.com&lt;/a&gt; || Get it faster: &lt;a href="http://correctlife.blogspot.com/feeds/posts/default"&gt;RSS&lt;/a&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://correctlife.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/CorrectLife" /><feedburner:info uri="correctlife" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><logo>http://noneo.republika.pl/images/FeedBurner_logo.jpeg</logo><entry gd:etag="W/&quot;D0QAR387fCp7ImA9Wx9bFU4.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-2382862342963527929</id><published>2011-02-24T09:15:00.000+01:00</published><updated>2011-02-24T09:15:46.104+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T09:15:46.104+01:00</app:edited><title>Wrapper on check_nt!UPTIME</title><content type="html">&lt;pre&gt;#!/bin/bash

HOSTADDRESS=$1
MINWARN=$2 # in hours
MINCRIT=$3 # in hours

SECONDS=`/usr/local/nagios/libexec/check_nt -H $HOSTADDRESS -p 12489 -s $ECRET$ -v COUNTER -l "\\System\\System Up Time"`
#### IS:           6817
#### SHOULD BE:    WARNING: uptime: 1:53 &lt; warning|'uptime'=6817000;172800000;3600000;

HOURS=$(( $SECONDS / 60 / 60 ))
SECONDSINHOURS=$(( $HOURS * 60 * 60 ))
REMAININGSECONDS=$(( $SECONDS - $SECONDSINHOURS ))
MINUTES=$(( $REMAININGSECONDS / 60 ))
FORMEDUPTIME="${HOURS}:${MINUTES}"

if [[ $HOURS -lt $MINCRIT ]]; then
    echo "CRITICAL: System started ${FORMEDUPTIME}h ago."
    exit 2
fi

if [[ $HOURS -lt $MINWARN ]]; then
    echo "WARNING: System started ${FORMEDUPTIME}h ago."
    exit 1
fi

echo "OK. Uptime $FORMEDUPTIME.|'uptime'=${SECONDS}000;7200000;3600000;"
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-2382862342963527929?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=94jixXB4B7c:uULlvcuXHuA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=94jixXB4B7c:uULlvcuXHuA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2382862342963527929?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2382862342963527929?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/94jixXB4B7c/wrapper-on-checkntuptime.html" title="Wrapper on check_nt!UPTIME" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><feedburner:origLink>http://correctlife.blogspot.com/2011/02/wrapper-on-checkntuptime.html</feedburner:origLink></entry><entry><title type="text">Does Ubuntu Contribute its Share to Free Software Projects? [Digg]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/SiwDLyhisAE/Does_Ubuntu_Contribute_its_Share_to_Free_Software_Projects" /><author><name>Digg</name></author><updated>2010-08-03T06:21:03-07:00</updated><id>http://digg.com/news/technology/Does_Ubuntu_Contribute_its_Share_to_Free_Software_Projects</id><content type="html">The dispute about this issue reflects a clash of changing values about the future of open source.</content><digg:diggCount xmlns:digg="http://digg.com/docs/diggrss/">
			2
		</digg:diggCount><digg:category xmlns:digg="http://digg.com/docs/diggrss/">
			Technology
		</digg:category><digg:commentCount xmlns:digg="http://digg.com/docs/diggrss/">
			0
		</digg:commentCount><digg:userActivity xmlns:digg="http://digg.com/docs/diggrss/">
			digg
		</digg:userActivity><feedburner:origLink>http://digg.com/news/technology/Does_Ubuntu_Contribute_its_Share_to_Free_Software_Projects?utm_campaign=Feed%3A+http%3A%2F%2Fservices.digg.com%2F2.0%2Fuser.getActivity%3Ftype%3Drss%26activity_type%3Ddigg%26username%3Dnoneo&amp;utm_medium=feed&amp;utm_source=diggapi</feedburner:origLink></entry><entry gd:etag="W/&quot;C08BRXo8eCp7ImA9WxFaEU4.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-4720630196729111664</id><published>2010-07-14T20:20:00.002+02:00</published><updated>2010-07-14T20:24:14.470+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-14T20:24:14.470+02:00</app:edited><title>Multisite Drupal</title><content type="html">&lt;pre&gt;postgres=# CREATE DATABASE example_eu OWNER drupal6 ENCODING 'UTF8';
cp ./drupal/sites/default ./drupal/sites/www.example.eu
vim ./drupal/sites/www.example.eu/dbconfig.php
vim /etc/apache2/sites-available/example.eu
a2ensite example.eu
firefox https://www.example.eu/
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-4720630196729111664?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=rOURReFYkm8:WEtXf_xdplc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=rOURReFYkm8:WEtXf_xdplc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/4720630196729111664?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/4720630196729111664?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/rOURReFYkm8/multisite-drupal.html" title="Multisite Drupal" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><feedburner:origLink>http://correctlife.blogspot.com/2010/07/multisite-drupal.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHRXg_eCp7ImA9WxFVEk4.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-8131383484562352999</id><published>2010-06-11T08:16:00.003+02:00</published><updated>2010-06-11T08:23:54.640+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-11T08:23:54.640+02:00</app:edited><title>Cutting mailq</title><content type="html">Removing selected mail messages from postfix's mail queue based on sender on recipients:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mailq | tail +2 | grep -v ’^ *(’ | awk  ´BEGIN { RS = "" }&lt;br /&gt;  # $7=sender, $8=recipient1, $9=recipient2&lt;br /&gt;  { if ($8 == "user@example.com" &amp;&amp; $9 == "")&lt;br /&gt;    print $1 }&lt;br /&gt;´ | tr -d ’*!’ | postsuper -d -&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-8131383484562352999?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=evCsyFVBlFI:-mUrnDprwT4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=evCsyFVBlFI:-mUrnDprwT4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/8131383484562352999/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=8131383484562352999" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/8131383484562352999?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/8131383484562352999?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/evCsyFVBlFI/removing-selected-mail-messages-from.html" title="Cutting mailq" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2010/06/removing-selected-mail-messages-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FQ3w7fyp7ImA9WxBXFko.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-7863125821172715317</id><published>2010-01-28T11:16:00.000+01:00</published><updated>2010-01-28T11:16:52.207+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-28T11:16:52.207+01:00</app:edited><title>Print folded book in Evice</title><content type="html">To print folded "book" in Evince its necessary to define what pages and in what order to print on both sides.&lt;br /&gt;
&lt;br /&gt;
If the number of pages is not divided by 4, increase it (e.g. 62 increase to 64).&lt;br /&gt;
&lt;br /&gt;
Then generate two series of page numbers:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#!/usr/bin/perl -w

use strict;

my $pages=64;
my $modifier=0;

for (my $i=1; $i&lt;=$pages/4; $i++) {
  my $left_page  = $pages-$modifier;
  my $right_page = $modifier + 1;
  print "$left_page,";
  print "$right_page,";
  $modifier+=2;
}

print "\n";

$modifier=1;

for (my $i=1; $i&lt;=$pages/4; $i++) {
  my $right_page = $modifier + 1;
  my $left_page  = $pages-$modifier;
  print "$right_page,";
  print "$left_page,";
  $modifier+=2;
}

print "\n";
exit 0;
&lt;/pre&gt;
&lt;br /&gt;
Paste it in the print form (without the last comma).&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-7863125821172715317?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=fxoNrdkRfCk:q2jz-tvjmT4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=fxoNrdkRfCk:q2jz-tvjmT4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/7863125821172715317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=7863125821172715317" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7863125821172715317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7863125821172715317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/fxoNrdkRfCk/print-folded-book-in-evice.html" title="Print folded book in Evice" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2010/01/print-folded-book-in-evice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIMRX4zfCp7ImA9WxBXFk0.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-9145529340757329204</id><published>2009-10-06T12:48:00.002+02:00</published><updated>2010-01-27T15:29:44.084+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T15:29:44.084+01:00</app:edited><title>List of MySQL grants</title><content type="html">The command line shows list of all grants on all databases, including root@locahosts. It also shows encrypted passwords as they exists in mysql.user table.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New',Courier,monospace;"&gt;mysql -Bse "SELECT CONCAT('SHOW GRANTS FOR \'', user ,'\'@\'', host, '\';') FROM mysql.user" | mysql -Bs | sed 's/$/;/g'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-9145529340757329204?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=i52ciM9AT7A:dXeZ6dogfJo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=i52ciM9AT7A:dXeZ6dogfJo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/9145529340757329204/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=9145529340757329204" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/9145529340757329204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/9145529340757329204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/i52ciM9AT7A/list-of-mysql-grants.html" title="List of MySQL grants" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/10/list-of-mysql-grants.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYBRn45cCp7ImA9WxJUEU4.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-2622847432324007363</id><published>2009-06-19T11:55:00.004+02:00</published><updated>2009-07-09T12:59:17.028+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-09T12:59:17.028+02:00</app:edited><title>Data transfer from PostgreSQL to MySQL</title><content type="html">Based on a tip from &lt;a href="http://www.codesmell.org/blog/2009/03/migrate-data-from-postgres-to-mysql/"&gt;codesmell.org&lt;/a&gt; blog I eventually transferred data from PostgreSQL to MySQL. My client - what is unusual - decided to stay at MySQL as homogeneous environment and drop PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
The main problem is to&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;preserve encoding&lt;/li&gt;
&lt;li&gt;keep all quoted characters&lt;/li&gt;
&lt;li&gt;change boolean from T/F to 1/0, and&lt;/li&gt;
&lt;li&gt;auto_increment what was serialized.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Transfering schema is planned for future post. The main guidelines are:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;change type &lt;tt&gt;inet&lt;/tt&gt; to &lt;tt&gt;text&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;remove serial and nextval&lt;/li&gt;
&lt;li&gt;remove evrything after "::" in field description using this command:&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;echo "default 'USD'::bpchar" | awk '{ i=index($0, ":"); print i; print substr($0, 0, i); }'
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Exporting data&lt;/h2&gt;&lt;br /&gt;
The first step is to compose string of the definition of every table for export to CSV:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;table_name(first_column,second_column...)&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Script parses all tables definitions and composes the desired string:&lt;br /&gt;
users(id,created,login,name,email,description)&lt;br /&gt;
ads(id,user_id,subject,text)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;PostgreSQL versions&lt;/h3&gt;&lt;br /&gt;
To parse PostgreSQL data I needed psql client in the same version as server. After download proper version I compiled and installed only client and necessary libraries. Create short script in source directory to automate it:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#!/bin/bashmake -C src/bin installmake -C src/bin/psql installmake -C src/include installmake -C src/interfaces installmake -C doc install
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Then run &lt;tt&gt;./configure --prefix=$HOME/local&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
Client in &lt;tt&gt;~/local/bin/psql&lt;/tt&gt; is ready to use. Execute it using full path or supplement $PATH:&lt;br /&gt;
&lt;tt&gt;export PATH=$HOME/local/bin:$PATH&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
Actual function:&lt;br /&gt;
&lt;pre&gt;function definitions {
while read table; do
if [[ $table != '' ]]; then
# weird empty lines
definition="$table("        # start the string with table name
while read column_def; do
column=`echo "$column_def" | awk '{ print $1; }'`
definition="${definition}${column}" # add column name
definition="$definition,"  # add comma
done &lt; &lt;($PGSQLCONN -t -c "\d $table" | awk '{ print $1; }')
echo "$definition)" | sed 's/,,)/)/' # add closing bracket and remove double commas
fi
done &lt; &lt;($PGSQLCONN -t -c "\dt" | grep -v "pg_" | awk '{ print $3; }') &gt; $TABLE_DEFS
# for the while loop use all tables list from command psql&gt; \dt
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Some tables depend on data from other. To put FOREIGN KEY with reference to user's ids, I needed to put users table first. Identify all such tables and move them on top of imported tables.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;tmpf="/tmp/tmp_table_definitions.txt"
grep -E "^user" $TABLE_DEFINITIONS &amp;gt; $PRIORITY_DEFINITIONS
grep -E "^ad" $TABLE_DEFINITIONS &amp;gt;&amp;gt; $PRIORITY_DEFINITIONS
grep -E -v "(^user|^ad)" $TABLE_DEFINITIONS &amp;gt; $tmpf
mv $PRIORITY_DEFINITIONS $TABLE_DEFINITIONScat $tmpf &amp;gt;&amp;gt; $TABLE_DEFINITIONS
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Generation of a list table from table definition.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function tables {
DIR="$PROJHOME/csv"rm -rf $DIRmkdir $DIRtmpf="/tmp/tmp.csv"
# Ensure there's enough disk space on /tmp
rm $LISTA_TABEL 2&amp;gt;/dev/null
for definition in `cat $TABLE_DEFINITIONS`; do
echo "$definition" | \
awk 'BEGIN { FS = "(" } ; { print $1; }' &amp;gt;&amp;gt; $TABLE_LIST
done}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Dump of the data from PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function dump {
### Data dump from PostgreSQL to CSV
for definition in `cat $TABLE_DEFINITIONS`; do
tabela=`echo $definition | \
awk 'BEGIN { FS = "(" } ; { print $1; }'`
file="${DIR}/${tabela}.csv"
nice ~/local/bin/psql --host=ip_address \
--user=account_name \
-c "COPY $definition TO STDOUT" db_name &amp;gt; $file
rows=`wc -l $file`
echo "&amp;gt;&amp;gt;File of the table $table has $rows rows"
done
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Statements of table creation:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function create {
$MYSQLCONN &amp;lt; $RECREATE_TABLE
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
RECREATE_FILE contains complete database definition. Its based on PostgreSQL dump of schema with modifications to meet MySQL requirements.&lt;br /&gt;
&lt;br /&gt;
Pouring the data into MySQL:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function tip {
tmpf="/tmp/tmp.csv"
for table in `cat $TABLE_LIST`; do
csv_file="$PROJHOME/csv/${table}.csv"
nice cat "$csv_file" | nice sed 's/\tt\t/\t1\t/g' | \
nice sed 's/\tf\t/\t0\t/g' &amp;gt; "$tmpf"
mv "$tmpf" "$csv_file"
# echo "TRUNCATE TABLE $tabela;" | $MYSQLCONN
echo "LOAD DATA LOCAL INFILE '$csv_file' INTO TABLE $table;" | \
$MYSQLCONN
done
}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Adding auto_increment behaviour to id columns:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function auto_increment {
$MYSQLCONN &amp;lt; $AUTO_INCREMENT
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Where AUTO_INCREMENT file looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;ALTER TABLE user_activity MODIFY COLUMN `id` INTEGER NOT NULL AUTO_INCREMENT;
ALTER TABLE add_statistics MODIFY COLUMN `id` INTEGER NOT NULL AUTO_INCREMENT;
ALTER TABLE search_history MODIFY COLUMN `id` INTEGER NOT NULL AUTO_INCREMENT;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
I added the above statements for all tables with id.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-2622847432324007363?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=c3H35_z8fnU:u7FW0qBWfrE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=c3H35_z8fnU:u7FW0qBWfrE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="related" href="http://www.codesmell.org/blog/2009/03/migrate-data-from-postgres-to-mysql/" title="Data transfer from PostgreSQL to MySQL" /><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/2622847432324007363/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=2622847432324007363" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2622847432324007363?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2622847432324007363?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/c3H35_z8fnU/data-transfer-from-postgresql-to-mysql.html" title="Data transfer from PostgreSQL to MySQL" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/06/data-transfer-from-postgresql-to-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MCSHc9fip7ImA9WxJWFE0.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-793494843885931079</id><published>2009-06-18T20:27:00.001+02:00</published><updated>2009-06-19T11:57:49.966+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-19T11:57:49.966+02:00</app:edited><title>basename ... is bad if I can use something simpler</title><content type="html">From graybot on irc.freenode.net#bash:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for f in *.wav; do lame "$f" "${f%.wav}.mp3"; done&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-793494843885931079?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=xJndPFOkKWo:okmRPNA4wBc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=xJndPFOkKWo:okmRPNA4wBc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/793494843885931079/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=793494843885931079" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/793494843885931079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/793494843885931079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/xJndPFOkKWo/basename-is-bad-if-i-can-use-something.html" title="basename ... is bad if I can use something simpler" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/06/basename-is-bad-if-i-can-use-something.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAERXg4fyp7ImA9WxVbFEQ.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-5368060242089640979</id><published>2009-03-31T09:34:00.003+02:00</published><updated>2009-03-31T11:45:04.637+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-31T11:45:04.637+02:00</app:edited><title>PostgreSQL 8.0 table sizes</title><content type="html">First, find your namespace's OID:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SELECT oid,* FROM pg_namespace;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;.&lt;br /&gt;To calculate table sizes SELECT the following:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SELECT relname, CAST (relpages AS bigint) * 8196 AS size_in_bytes, reltuples FROM pg_class WHERE relnamespace = your_database_namespace_oid ORDER BY size_in_bytes DESC;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-5368060242089640979?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=6HZoXt2vKow:synFmyxjuoY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=6HZoXt2vKow:synFmyxjuoY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/5368060242089640979/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=5368060242089640979" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5368060242089640979?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5368060242089640979?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/6HZoXt2vKow/postgresql-80-table-sizes.html" title="PostgreSQL 8.0 table sizes" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/03/postgresql-80-table-sizes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIBQXo7cSp7ImA9WxVUGUo.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-6238778766480991744</id><published>2009-03-25T10:11:00.002+01:00</published><updated>2009-03-25T10:15:50.409+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-25T10:15:50.409+01:00</app:edited><title>Unseen and not drawn faces in 3D games</title><content type="html">Unusual figure what faces are not drawn in 3D games:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_BD5e2fpNJbA/Scn1nVF8-WI/AAAAAAAAJ7U/Hc2wqookQrs/s1600-h/unseen_not_drawn_faces2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/Scn1nVF8-WI/AAAAAAAAJ7U/Hc2wqookQrs/s320/unseen_not_drawn_faces2.png" /&gt;&lt;/a&gt;&lt;/div&gt;from &lt;a href="http://selectparks.net/%7Ejulian/share/text/Buffering-Bergson_Oliver_2006-07-24.pdf"&gt;Matter and Memory in 3D Games&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-6238778766480991744?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=dX2yGdoLYvo:xE4kGetXCbY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=dX2yGdoLYvo:xE4kGetXCbY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="related" href="http://www.julianoliver.com/" title="Unseen and not drawn faces in 3D games" /><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/6238778766480991744/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=6238778766480991744" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6238778766480991744?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6238778766480991744?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/dX2yGdoLYvo/unseen-and-not-drawn-faces-in-3d-games.html" title="Unseen and not drawn faces in 3D games" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BD5e2fpNJbA/Scn1nVF8-WI/AAAAAAAAJ7U/Hc2wqookQrs/s72-c/unseen_not_drawn_faces2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/03/unseen-and-not-drawn-faces-in-3d-games.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDSHg6fip7ImA9WxVXE0k.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-1943046253250170900</id><published>2009-02-08T15:48:00.007+01:00</published><updated>2009-02-11T11:16:19.616+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-11T11:16:19.616+01:00</app:edited><title>Really unalterable file</title><content type="html">While setting Cisco VPN client, I wanted to run it in background. To do it I needed to prevent this software to modify configuration file (remove user password). chmod 0400 didn't help, but in Linux there is another tool to make a file "unalterable": &lt;i&gt;chattr&lt;/i&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chattr +i /etc/opt/cisco-vpnclient/Profiles/remotesite.pcf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Another case, when I don't want to allow my fingers to break the system, is when I edit a file:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;vim -M /file/to/edit&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;view /file/to/edit&lt;/code&gt; allows you to execute &lt;code&gt;:w!&lt;/code&gt;, but &lt;code&gt;M&lt;/code&gt; flag - doesn't.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;i&gt;Root means more rights and more responsibility.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-1943046253250170900?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=UELnSJJAWZA:ChfmlQAQQtc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=UELnSJJAWZA:ChfmlQAQQtc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/1943046253250170900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=1943046253250170900" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/1943046253250170900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/1943046253250170900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/UELnSJJAWZA/really-unalterable-file.html" title="Really unalterable file" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2009/02/really-unalterable-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UAQHgzcCp7ImA9WxVSFE0.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-7668737361925434427</id><published>2008-11-28T19:26:00.006+01:00</published><updated>2009-01-08T08:54:01.688+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-08T08:54:01.688+01:00</app:edited><title>Importing PGP keys into APT</title><content type="html">Two methods of importing PGP keys into APT. One, for keys as a text file downloaded from vendor server, the second for keys distributed trough kes servers.&lt;br /&gt;&lt;br /&gt;Valid for Debian, Ubuntu and any other Linux distribution based on &lt;code&gt;apt&lt;/code&gt; packaging system.&lt;br /&gt;&lt;br /&gt;One method (e.g. Google Picasa):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add  -&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Another method (e.g. DAViCal):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-key advanced --keyserver subkeys.pgp.net --recv-keys CCA377BD77494424B0DB674F8C90347F8F068012&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-7668737361925434427?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=OcHNWTMZC-U:2Xe6ZurkbyE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=OcHNWTMZC-U:2Xe6ZurkbyE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/7668737361925434427/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=7668737361925434427" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7668737361925434427?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7668737361925434427?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/OcHNWTMZC-U/importing-pgp-keys-in-apt.html" title="Importing PGP keys into APT" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/11/importing-pgp-keys-in-apt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8BQXc8eSp7ImA9WxVaEU0.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-6612755309292682495</id><published>2008-08-19T14:40:00.006+02:00</published><updated>2009-04-07T14:54:10.971+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-07T14:54:10.971+02:00</app:edited><title>Many TracD servers at once</title><content type="html">The script below runs TracD server connected to Subversion repository. What is home directory of the TracD instance depends on the name of the script. Then a configuration file is parsed - everything depends on name of the script.&lt;br /&gt;&lt;br /&gt;If you want to start TracD with home at &lt;code&gt;/home/trac/repo1&lt;/code&gt; change the name of the script to &lt;code&gt;/etc/init.d/tracd-repo1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# tracd - brings up the trac daemon&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;PROJECT=`echo $0 | awk -F- '{ print $2; }'`&lt;br /&gt;&lt;br /&gt;# Get LSB functions&lt;br /&gt;. /lib/lsb/init-functions&lt;br /&gt;. /etc/default/rcS&lt;br /&gt;. /etc/default/tracd-${PROJECT}&lt;br /&gt;&lt;br /&gt;# Check that the package is still installed&lt;br /&gt;[ -x $TRACD ] || exit 0;&lt;br /&gt;[ -d $TRAC_ENV ] || exit 0;&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt; start)&lt;br /&gt;   log_begin_msg "Starting tracd..."&lt;br /&gt;   #umask 002&lt;br /&gt;   if start-stop-daemon --start --pidfile=$TRAC_PID --chuid $TRAC_USER:$TRAC_GROUP \&lt;br /&gt;     --chdir $TRAC_HOME --umask 002 \&lt;br /&gt;     --exec $TRACD -- --daemonize \&lt;br /&gt;     --pidfile=$TRAC_PID \&lt;br /&gt;       -p $TRACD_PORT \&lt;br /&gt;       -a ${TRAC_INITENV},${TRAC_ENV}/conf/users.htdigest,${PROJECT_REALM} \&lt;br /&gt;       ${TRAC_PROJECT}&lt;br /&gt;   then&lt;br /&gt;     log_end_msg 0&lt;br /&gt;   else&lt;br /&gt;     log_end_msg $?&lt;br /&gt;   fi&lt;br /&gt;   ;;&lt;br /&gt;&lt;br /&gt; stop)&lt;br /&gt;   log_begin_msg "Stopping tracd..."&lt;br /&gt;   #if `ps ax | grep [/]usr/bin/tracd | awk '{ print $1; }' | \&lt;br /&gt;     xargs kill 2 &gt; /dev/null`&lt;br /&gt;   if start-stop-daemon --stop --pidfile=$TRAC_PID&lt;br /&gt;   then&lt;br /&gt;     log_end_msg 0&lt;br /&gt;   else&lt;br /&gt;     log_end_msg $?&lt;br /&gt;   fi&lt;br /&gt;   ;;&lt;br /&gt;&lt;br /&gt; restart|force-reload)&lt;br /&gt;   $0 stop &amp;amp;&amp;amp; $0 start&lt;br /&gt;   ;;&lt;br /&gt;&lt;br /&gt; *)&lt;br /&gt;   echo "Usage: /etc/init.d/tracd {start|stop|restart|force-reload}"&lt;br /&gt;   exit 1&lt;br /&gt;   ;;&lt;br /&gt;esac&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All variables are stored in &lt;code&gt;/etc/default/tracd-${PROJECT}&lt;/code&gt;. Below is an example of the file (&lt;code&gt;/etc/default/tracd-docs&lt;/code&gt;):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;TRACD=/usr/bin/tracd&lt;br /&gt;TRACD_HOST=127.0.0.1&lt;br /&gt;TRACD_PORT=8000&lt;br /&gt;TRAC_USER=trac&lt;br /&gt;TRAC_GROUP=users&lt;br /&gt;TRAC_INITENV=docs&lt;br /&gt;TRAC_PROJECT=docs&lt;br /&gt;PROJECT_REALM=Docs&lt;br /&gt;TRAC_HOME=/home/$TRAC_USER&lt;br /&gt;TRAC_ENV=${TRAC_HOME}/$TRAC_INITENV&lt;br /&gt;TRAC_PID=${TRAC_ENV}/tracd.pid&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-6612755309292682495?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=5qhF1bDfxkM:k5J4bSCic4w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=5qhF1bDfxkM:k5J4bSCic4w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/6612755309292682495/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=6612755309292682495" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6612755309292682495?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6612755309292682495?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/5qhF1bDfxkM/many-tracd-servers-at-once.html" title="Many TracD servers at once" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/08/many-tracd-servers-at-once.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MBQno8fyp7ImA9WxRVE0k.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-5870880324759498198</id><published>2008-08-05T14:21:00.006+02:00</published><updated>2008-11-10T19:24:13.477+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-10T19:24:13.477+01:00</app:edited><title>Imagemagick based automation tool</title><content type="html">I needed a tool to generate some images for MRTG index page. Imagemagick has some programs to create and convert images. Very useful &lt;a href="http://www.imagemagick.org/Usage/text/"&gt;guide&lt;/a&gt; is on Imagemagick site. Look at this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for STRING in MySQL1 MySQL2 Loghost Backup; do&lt;br /&gt;  # Variables "invented" experimentally&lt;br /&gt;  A=3; B=70&lt;br /&gt;  # Length of string&lt;br /&gt;  X=${#STRING}&lt;br /&gt;  # Where to start to draw the label&lt;br /&gt;  Y=$((A*X+B))&lt;br /&gt;  # Imagemagick tool with PostScript command to rotate label&lt;br /&gt;  convert -size 20x120 xc:white  \&lt;br /&gt;    -font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf \&lt;br /&gt;    -pointsize 16 \&lt;br /&gt;    -fill black \&lt;br /&gt;    -draw "rotate -90 text -$Y,15 '$STRING'" /tmp/${STRING}.png&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Some experiments gave me variables for equation to center the label vertically. I can't do it in PostScript.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BD5e2fpNJbA/SJrGRfPaloI/AAAAAAAAF7o/8b4W4V4VS8o/s1600-h/composite3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BD5e2fpNJbA/SJrGRfPaloI/AAAAAAAAF7o/8b4W4V4VS8o/s400/composite3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5231711920890484354" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-5870880324759498198?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=iSdQsIIaRvw:5CHSucKDW9s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=iSdQsIIaRvw:5CHSucKDW9s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/5870880324759498198/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=5870880324759498198" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5870880324759498198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5870880324759498198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/iSdQsIIaRvw/imagemagick.html" title="Imagemagick based automation tool" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BD5e2fpNJbA/SJrGRfPaloI/AAAAAAAAF7o/8b4W4V4VS8o/s72-c/composite3.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/08/imagemagick.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNR3w7fip7ImA9WxdUFk0.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-3277928866492660360</id><published>2008-08-01T18:10:00.002+02:00</published><updated>2008-08-01T18:34:56.206+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-01T18:34:56.206+02:00</app:edited><title>MySQL engines</title><content type="html">Have you ever read all the details about guts of database engines available for MySQL? Some articles are really surprising. Most are convinced, that MyISAM is good for reads with small percentage of writes. But an &lt;a href="http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/"&gt;article&lt;/a&gt; on mysqlperformance blog shows something different. And it is not only special kind of queries (e.g. JOINS) but also really simple SELECTS.&lt;br /&gt;&lt;br /&gt;I haven't tested it yet with my application. Its time for change. MyISAM stays on slaves, but masters need fresh look and tuning.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-3277928866492660360?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=iRqSEFmSEf8:ICKnTQpCO9A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=iRqSEFmSEf8:ICKnTQpCO9A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/3277928866492660360/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=3277928866492660360" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/3277928866492660360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/3277928866492660360?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/iRqSEFmSEf8/mysql-engines.html" title="MySQL engines" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/08/mysql-engines.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08NQ3w4fyp7ImA9WxdUE08.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-2039502904308481581</id><published>2008-07-29T11:19:00.004+02:00</published><updated>2008-07-29T12:04:52.237+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-29T12:04:52.237+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>Preparing new SVN repo</title><content type="html">Just for note. I am looking for it too often on Google. Its time to write it somewhere in one place as a "reference"&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Install subversion&lt;/h3&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;apt-get install subversion&lt;/code&gt;. Distributions other then Debian, Ubuntu and all based on APT package systems have different command to install this software. You can always download newest version and do magic sequence: &lt;i&gt;./configure &amp;&amp; make &amp;&amp; make install&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;create user for subversion: &lt;code&gt;useradd -g bin -s /bin/bash -c 'Subversion' /home/subversion -m svn&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;passwd svn&lt;/code&gt; Just to protect this directory. You will never use this password after configuration process.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;create an init script from &lt;a href="http://correctlife.blogspot.com/2008/06/subversion-tracd.html"&gt;Subversion + Tracd&lt;/a&gt; post. Be aware, that in the script is an assumption, that user name (svn) and home directory (subversion in our current case) are the same. Change it to your own settings&lt;/li&gt;&lt;br /&gt;&lt;li&gt;edit &lt;code&gt;/home/subversion/repo/conf/passwd&lt;/code&gt; and &lt;code&gt;/home/subversion/repo/conf/svnserve.conf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;svnserve.conf: uncomment auth and non-auth access and line with passwd file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;passwd: add your name  and password. Its clear text file, please don't copy your any real password from others accounts.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Configure repository&lt;/h3&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;on svn account create repository: &lt;code&gt;svnadmin create /home/subversion/repo&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;as root start svnserve &lt;code&gt;/etc/init.d/svnserve start&lt;/code&gt; (this script should contain setting from you real environment)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;test from your regular account (not root nor svn): &lt;code&gt;svn mkdir svn://127.0.0.1/trunk -user &lt;i&gt;your_user_name_in_repo_passwd&lt;/i&gt; -m "&lt;i&gt;Your comment to this operation&lt;/i&gt;"&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;If you found anything unclear or missing, you would consider to comment or sent me an e-mail.&lt;br /&gt;Please, complain!&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-2039502904308481581?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=uRaCAcsPbp4:8S9TOiMQNWo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=uRaCAcsPbp4:8S9TOiMQNWo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/2039502904308481581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=2039502904308481581" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2039502904308481581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/2039502904308481581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/uRaCAcsPbp4/preparing-new-svn-repo.html" title="Preparing new SVN repo" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/07/preparing-new-svn-repo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MERnc7eyp7ImA9WxRVE0k.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-4077611102071987539</id><published>2008-07-21T16:20:00.007+02:00</published><updated>2008-11-10T19:23:27.903+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-10T19:23:27.903+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Python AppEngine" /><title>App Engine SDK - e-mail sending</title><content type="html">According to &lt;a href="http://code.google.com/appengine/docs/mail/overview.html"&gt;SDK documentation&lt;/a&gt;, its possible to send e-mail from your local, test application. Unfortunately there's a problem if you change mail parameters. &lt;a href="http://aralbalkan.com/1311"&gt;Aral Balkan&lt;/a&gt; recommends small local SMTP server written in Python. I - by now - decided to restart dev_appserver.py every time I change something.&lt;br /&gt;&lt;br /&gt;If anybody starts with App Engine or Django, please leave a comment, and tell me what is your preferred tutorial and how do you test you Python applications.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-4077611102071987539?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=GcR0BIckOhQ:grq4eO4iIHg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=GcR0BIckOhQ:grq4eO4iIHg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/4077611102071987539/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=4077611102071987539" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/4077611102071987539?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/4077611102071987539?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/GcR0BIckOhQ/app-engine-sdk.html" title="App Engine SDK - e-mail sending" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/07/app-engine-sdk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cCRHY5eip7ImA9WxdXGUQ.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-7692932706594309549</id><published>2008-06-30T11:16:00.006+02:00</published><updated>2008-07-02T11:31:05.822+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-02T11:31:05.822+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mutt" /><title>Mutt query_command for mail address</title><content type="html">In mutt its possible to query external program for e-mail address. After typing some letters (in To: Cc: or Bcc:) press &amp;lt;Ctrl+T&amp;gt; and mutt calls external program defined in .muttrc in query_command variable (e.g. &lt;code&gt;set query_command="~/.mutt/addgrep.sh '%s'"&lt;/code&gt;).&lt;br /&gt;&lt;br /&gt;It can be any program, and one is widely recommended: &lt;a href="http://rolo.sourceforge.net/"&gt;rolo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Below is very short, basic script, but complex enough for me:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;if [[ $# &lt; 1 ]] &lt;br /&gt;then&lt;br /&gt;  exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;echo 'Grepping ~/.mutt/address_book.txt...'&lt;br /&gt;grep $1 ~/.mutt/address_book.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The structure of address book is as follow:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Anyname &amp;lt;mail@address.com&amp;gt;&lt;br /&gt;First Sure &amp;lt;first_sure@address.org&amp;gt;&lt;br /&gt;just@address.net&lt;br /&gt;"All variants" &amp;lt;of_syntax@domain.com&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-7692932706594309549?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=kDoNQnfCEic:Nl6b2qldkBs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=kDoNQnfCEic:Nl6b2qldkBs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/7692932706594309549/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=7692932706594309549" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7692932706594309549?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7692932706594309549?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/kDoNQnfCEic/mutt-querycommand-for-mail-address.html" title="Mutt query_command for mail address" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/mutt-querycommand-for-mail-address.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YESHY6fyp7ImA9WxdXGUQ.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-5678208665426618438</id><published>2008-06-29T16:15:00.005+02:00</published><updated>2008-07-02T11:31:49.817+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-02T11:31:49.817+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="netcat" /><category scheme="http://www.blogger.com/atom/ns#" term="sec" /><title>Testing environments</title><content type="html">My development/test environments varies from Bash commands to sets of VMachines.&lt;br /&gt;&lt;br /&gt;VMachines can be just a copy of live system, but then its interesting how to forward traffic (HTTP requests, mail messages) to them. Bash commands are flexible tool to feed our tested env with all kinds of strings, connections etc.&lt;br /&gt;&lt;br /&gt;In my daily problems with testing I try to take proper tools and mimicry life environment behaviour in on my testing "machines". The most time consuming task is to redirect "events" to my dev env and to collect actions without mixing with other events. For example instead of live log, I can &lt;i&gt;cat&lt;/i&gt; historical logs - fast and very similar to production environment. I can forward &lt;i&gt;reactions&lt;/i&gt; to my mail box, but with subject or another feature to distinguish it and for easy deleting.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Testing SEC (Simple Event Correlator)&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Lets assume we test mail bombing. SEC is prepared to generate a context SingleWithThreshold (for introduction, please visit Jim Brown's &lt;a href="http://sixshooter.v6.thrupoint.net/SEC-examples/article.html"&gt;Working with SEC&lt;/a&gt;). We edit &lt;code&gt;/etc/sec/mail_guard.sec&lt;/code&gt; and then we start SEC without daemonizing:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sec -input=/var/log/syslog -conf=/etc/sec/mail_guard.sec&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Mail log is usually in &lt;code&gt;/var/log/mail.log&lt;/code&gt;, but in our case we forwarded all logs from all servers to a separate server, a &lt;i&gt;log collector&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Now I have to feed my SEC. Actually testing conditions should be created BEFORE the environment we want to to test, to ensure we focus on final functionality, not on our hopes, that it won't break ;-)&lt;br /&gt;&lt;br /&gt;We use Bash to generate some mail traffic:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;COUNTER=200&lt;br /&gt;while [[ $COUNTER -gt 0 ]]&lt;br /&gt;do&lt;br /&gt;  let COUNTER=COUNTER-1&lt;br /&gt;  tail -1 /var/log/mail.log | mail -s "Its not SPAM" destination@domain.com&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Testing netcat&lt;/h3&gt;&lt;br /&gt;Another example: we are going to test a listener bound to a port and waiting for a command. Lets establish a server:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;nc -l -p 3333 -s 127.0.0.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;How to test it? (here is not too polite version ;-))&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cat /var/log/mail.log | nc localhost 3333&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now we test triggering upon a particular string:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;nc -l -p 3333 -s 127.0.0.1 | while read STRING&lt;br /&gt;do&lt;br /&gt;  if [[ $STRING =~ "mx" ]]&lt;br /&gt;  then&lt;br /&gt;    echo "rm -rf /  .... Please wait."&lt;br /&gt;  fi&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Looks like ngrep :-)&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-5678208665426618438?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=K7w_pU5_FJw:d8UbvIRRrng:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=K7w_pU5_FJw:d8UbvIRRrng:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/5678208665426618438/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=5678208665426618438" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5678208665426618438?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/5678208665426618438?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/K7w_pU5_FJw/testing-environments.html" title="Testing environments" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/testing-environments.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkICRn4zeCp7ImA9WxRbGUw.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-3904950048480981167</id><published>2008-06-26T16:17:00.010+02:00</published><updated>2008-12-10T13:02:47.080+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-10T13:02:47.080+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="graphics" /><category scheme="http://www.blogger.com/atom/ns#" term="mrtg" /><title>MRTG colours</title><content type="html">After hard work with &lt;a href="/2008/05/my-custom-mrtg-collectors.html"&gt; my custom MRTG collectors&lt;/a&gt;, its time to make some fun with MRTG: COLOURS :-)&lt;br /&gt;&lt;br /&gt;To make the charts more funny, we need to know what options we have to add to mrtg.cfg, and what to put as arguments.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Options&lt;/h3&gt;&lt;br /&gt;There is an option for definition of colour of lines, another for background of web page holding the charts and one nice option to input some custom string at the top border of chart (title and date/time):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Options[bbc.response]: ..., ..., ..., pngdate&lt;br /&gt;PNGTitle[bbc.response]: Response time of http://www.bbc.co.uk/&lt;br /&gt;Colours[bbc.response]: DIRTY YELLOW#E6B420,ORANGE#E65120,THIRD#993615,FOURTH#997815&lt;br /&gt;Background[bbc.response]: #1A1A1A&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here are four colours: a pair for collected data and a pair for additional lines. The names are user defined and we use them later in description at the bottom of the page.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Colour blending&lt;/h3&gt;&lt;br /&gt;Coding was easy, now WHAT colours to use? Very helpful are sites with application to blend colours. I prefer these: &lt;a href="http://www.wellstyled.com/tools/colorscheme2/index-en.html"&gt;Color Scheme2&lt;/a&gt;, &lt;a href="http://www.colorblender.com/"&gt;Color Blender&lt;/a&gt; or &lt;a href="http://www.colorschemer.com/online.html"&gt;Color Schemer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first offers contrast colour set, especially useful for MRTG.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Bottom of the chart page&lt;/h3&gt;&lt;br /&gt;At the bottom of auto generated web page are descriptions of colours. By default the names there are: GREEN, BLUE, DARK GREEN, VIOLET. If you change your colour codes in Colours[title], it would be nice to make according changes in the colour names at the footer description. In the examples above colours are: DIRTY YELLOW, ORANGE, THIRD and FOURTH.&lt;br /&gt;&lt;br /&gt;Additionally you can make custom description at the bottom of page, which differ from image, because there is more space for explanation:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Legend1[bbc.response]: Average time of retrieving 3 news stories&lt;br /&gt;Legend2[bbc.response]: Max time from 3 retrievings&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BD5e2fpNJbA/SGOsIfMZsvI/AAAAAAAAF4A/8yEFwxWolxk/s1600-h/bbc.response-day.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BD5e2fpNJbA/SGOsIfMZsvI/AAAAAAAAF4A/8yEFwxWolxk/s400/bbc.response-day.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5216202055237612274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BD5e2fpNJbA/SGQePEK53ZI/AAAAAAAAF4I/CEPCIiMGRmY/s1600-h/mrtg-bottom.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_BD5e2fpNJbA/SGQePEK53ZI/AAAAAAAAF4I/CEPCIiMGRmY/s400/mrtg-bottom.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5216327512568225170" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-3904950048480981167?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=1snA6Lp3NzQ:58Sp1QMxAq8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=1snA6Lp3NzQ:58Sp1QMxAq8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/3904950048480981167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=3904950048480981167" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/3904950048480981167?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/3904950048480981167?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/1snA6Lp3NzQ/mrtg-colors.html" title="MRTG colours" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BD5e2fpNJbA/SGOsIfMZsvI/AAAAAAAAF4A/8yEFwxWolxk/s72-c/bbc.response-day.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/mrtg-colors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYMRXYzeSp7ImA9WxRWGEo.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-473904558450568733</id><published>2008-06-25T11:05:00.004+02:00</published><updated>2008-11-05T10:09:44.881+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-05T10:09:44.881+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><category scheme="http://www.blogger.com/atom/ns#" term="font" /><title>Firefox fonts</title><content type="html">Its huge subject, including font rendering in system (in my case its Xorg in Ubuntu). It starts from font installing, the topic I found quite though. I try to update this post from time to time.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Font families and sizes&lt;/h2&gt;&lt;br /&gt;In Firefox I still have problems with font sizes and many times, when I change font properties in &lt;i&gt;Edit -&gt; Preferences&lt;/i&gt; I get a mess on some web pages.&lt;br /&gt;To unify all setiings without crawling thru all properties, I close Firefox, open preferences file, for exampl&lt;br /&gt;e&lt;br /&gt;&lt;br /&gt;&lt;code&gt;~/.mozilla/firefox/w6mr5ny9.default/prefs.js&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;where only the profile name (w6mr5ny9.default) can be confusing, and I change all settings according to my nee&lt;br /&gt;ds. By now its:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;user_pref("font.language.group", "x-western");&lt;br /&gt;user_pref("font.minimum-size.x-central-euro", 12);&lt;br /&gt;user_pref("font.minimum-size.x-unicode", 12);&lt;br /&gt;user_pref("font.minimum-size.x-user-def", 12);&lt;br /&gt;user_pref("font.minimum-size.x-western", 12);&lt;br /&gt;user_pref("font.name.monospace.x-central-euro", "Inconsolata");&lt;br /&gt;user_pref("font.name.monospace.x-unicode", "Inconsolata");&lt;br /&gt;user_pref("font.name.monospace.x-user-def", "Inconsolata");&lt;br /&gt;user_pref("font.name.monospace.x-western", "Inconsolata");&lt;br /&gt;user_pref("font.name.sans-serif.x-central-euro", "DejaVu Sans");&lt;br /&gt;user_pref("font.name.sans-serif.x-unicode", "DejaVu Sans");&lt;br /&gt;user_pref("font.name.sans-serif.x-user-def", "DejaVu Sans");&lt;br /&gt;user_pref("font.name.sans-serif.x-western", "DejaVu Sans");&lt;br /&gt;user_pref("font.name.serif.x-central-euro", "DejaVu Serif");&lt;br /&gt;user_pref("font.name.serif.x-unicode", "DejaVu Serif");&lt;br /&gt;user_pref("font.name.serif.x-user-def", "DejaVu Serif");&lt;br /&gt;user_pref("font.name.serif.x-western", "DejaVu Serif");&lt;br /&gt;user_pref("font.size.fixed.x-central-euro", 16);&lt;br /&gt;user_pref("font.size.fixed.x-unicode", 16);&lt;br /&gt;user_pref("font.size.fixed.x-user-def", 16);&lt;br /&gt;user_pref("font.size.fixed.x-western", 16);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I always try to set the same font name and size for all 4 language groups I use (Central European, Unicode, Western and User Defined).&lt;br /&gt;&lt;br /&gt;Its possible to change it on about:config page directly in Firefox.&lt;br /&gt;&lt;br /&gt;The other problem in Firefox is its lack of connection to systems font settings. Firefox doesn't antialiases fonts even its set in system. To turn it on create &lt;code&gt;~/.fonts.conf&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&amp;gt;&lt;br /&gt;&amp;lt;fontconfig&amp;gt;&lt;br /&gt; &amp;lt;match target="font" &amp;gt;&lt;br /&gt;  &amp;lt;edit mode="assign" name="autohint" &amp;gt;&lt;br /&gt;   &amp;lt;bool&amp;gt;true&amp;lt;/bool&amp;gt;&lt;br /&gt;  &amp;lt;/edit&amp;gt;&lt;br /&gt; &amp;lt;/match&amp;gt;&lt;br /&gt; &amp;lt;match target="font" &amp;gt;&lt;br /&gt;  &amp;lt;edit mode="assign" name="rgba" &amp;gt;&lt;br /&gt;   &amp;lt;const&amp;gt;none&amp;lt;/const&amp;gt;&lt;br /&gt;  &amp;lt;/edit&amp;gt;&lt;br /&gt; &amp;lt;/match&amp;gt;&lt;br /&gt; &amp;lt;match target="font" &amp;gt;&lt;br /&gt;  &amp;lt;edit mode="assign" name="hinting" &amp;gt;&lt;br /&gt;   &amp;lt;bool&amp;gt;false&amp;lt;/bool&amp;gt;&lt;br /&gt;  &amp;lt;/edit&amp;gt;&lt;br /&gt; &amp;lt;/match&amp;gt;&lt;br /&gt; &amp;lt;match target="font" &amp;gt;&lt;br /&gt;  &amp;lt;edit mode="assign" name="hintstyle" &amp;gt;&lt;br /&gt;   &amp;lt;const&amp;gt;hintnone&amp;lt;/const&amp;gt;&lt;br /&gt;  &amp;lt;/edit&amp;gt;&lt;br /&gt; &amp;lt;/match&amp;gt;&lt;br /&gt; &amp;lt;match target="font" &amp;gt;&lt;br /&gt;  &amp;lt;edit mode="assign" name="antialias" &amp;gt;&lt;br /&gt;   &amp;lt;bool&amp;gt;true&amp;lt;/bool&amp;gt;&lt;br /&gt;  &amp;lt;/edit&amp;gt;&lt;br /&gt; &amp;lt;/match&amp;gt;&lt;br /&gt;&amp;lt;/fontconfig&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-473904558450568733?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=R1Sh9-inixg:MJghCmloICI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=R1Sh9-inixg:MJghCmloICI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/473904558450568733/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=473904558450568733" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/473904558450568733?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/473904558450568733?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/R1Sh9-inixg/firefox-fonts.html" title="Firefox fonts" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/firefox-fonts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNRH8zeip7ImA9WxdXGUQ.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-7526815943766034425</id><published>2008-06-23T16:26:00.003+02:00</published><updated>2008-07-02T11:33:15.182+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-02T11:33:15.182+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mrtg" /><title>MRTG triggers</title><content type="html">As Thomas J. Muggli described on &lt;a href="http://www.cloudnet.com/~tom/mrtg/thresh.html"&gt;his website&lt;/a&gt;, its easy to implement MRTG triggers for alerting purposes.&lt;br /&gt;&lt;br /&gt;Add three lines to your mrtg.cfg:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ThreshMaxI[serverA.MySQL]: 25000&lt;br /&gt;ThreshProgI[serverA.MySQL]: /usr/local/bin/mrtg_threshprogi.sh&lt;br /&gt;ThreshProgOKI[serverA.MySQL]: /usr/local/bin/mrtg_threshprogoki.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This particular string "MySQL" in fact can be changed to whatever: CPU, network traffic, web page requests etc. (see &lt;a href ="http://correctlife.blogspot.com/2008/05/my-custom-mrtg-collectors.html"&gt;my custom MRTG collectors&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Then lets write a script to manage crossed thresholds:&lt;br /&gt;&lt;h4&gt;/usr/local/bin/mrtg_threshprogi.sh&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;echo "" | mail -s "[MRTG] $1 exceeded; allowed: ${2}, current: $3" root&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;/usr/local/bin/mrtg_threshprogoki.sh&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;echo "" | mail -s "[MRTG] $1 returned to $2" root&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Simple and effective.&lt;br /&gt;If mrtg.cfg strings are the same as directory name convention, you can attach &lt;code&gt;/var/www/ssl/mrtg/MySQL/serverA.MySQL-day.png&lt;/code&gt; to the e-mail:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# $1 == "serverA.cpu" =&gt; srv == "serverA"; meter == "cpu"&lt;br /&gt;# optionally: METER=`echo $meter | tr /a-z/ /A-Z/` changes "cpu" to "CPU"&lt;br /&gt;IFS=. read srv meter &lt;&lt;&lt; $1&lt;br /&gt;mutt -x -s "[MRTG] $1 exceeded; allowed: ${2}, current: $3" \&lt;br /&gt;  -a /saltstone/httpd/html_ssl/info/mrtg/${meter}/${SUBJECT}-day.png root&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-7526815943766034425?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=zSlXjt6NGe8:s9SQ1TBoFls:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=zSlXjt6NGe8:s9SQ1TBoFls:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="related" href="http://www.cloudnet.com/~tom/mrtg/thresh.html" title="MRTG triggers" /><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/7526815943766034425/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=7526815943766034425" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7526815943766034425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7526815943766034425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/zSlXjt6NGe8/mrtg-triggers.html" title="MRTG triggers" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/mrtg-triggers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4ER348fyp7ImA9WxRVGUw.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-7081317702883161080</id><published>2008-06-23T10:43:00.006+02:00</published><updated>2008-11-17T09:35:06.077+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-17T09:35:06.077+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bash" /><category scheme="http://www.blogger.com/atom/ns#" term="zenity" /><title>For BashWiki (if not there yet)</title><content type="html">Bash Wiki with tips and trick you can find at &lt;a href="http://wooledge.org:8000/BashGuide"&gt;Wooledge.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;noneo:~$ man read&lt;br /&gt;No manual entry for read&lt;br /&gt;&lt;br /&gt;noneo:~$ help read&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;:-)&lt;br /&gt;&lt;br /&gt;Other tricks:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for i in "$(&lt; "$file")"; do echo $i; done&lt;br /&gt;&lt;br /&gt;n=0; while :; do echo $n; let n=$n+1; done&lt;br /&gt;&lt;br /&gt;sudo tail -f /var/log/auth.log | while read  LINE&lt;br /&gt;do&lt;br /&gt;  if [[ $LINE =~ "session opened" ]]&lt;br /&gt;  then&lt;br /&gt;    NEWUSER=`echo $LINE | awk '{ print $11; }'`&lt;br /&gt;    zenity --error --text="$NEWUSER logged in"&lt;br /&gt;  fi&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;: ${2?"Two parameters required. Please fix it."}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To Be Continued...&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-7081317702883161080?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=5-Qjt1beWvI:7xJs-b5Tt54:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=5-Qjt1beWvI:7xJs-b5Tt54:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/7081317702883161080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=7081317702883161080" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7081317702883161080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/7081317702883161080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/5-Qjt1beWvI/for-bashwiki-if-not-there-yet.html" title="For BashWiki (if not there yet)" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/for-bashwiki-if-not-there-yet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UMRX09eip7ImA9WxdXGUQ.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-503998659475878223</id><published>2008-06-20T15:17:00.005+02:00</published><updated>2008-07-02T11:34:44.362+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-02T11:34:44.362+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="strace" /><category scheme="http://www.blogger.com/atom/ns#" term="debian" /><category scheme="http://www.blogger.com/atom/ns#" term="apt-get" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>When apt-get install hangs</title><content type="html">I encountered problems with error prone configuration processed by apt-get. Its usually fault of post-installation scripts. My diagnostic procedure is as follow:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;strace -f -o /tmp/strace.log apt-get install whatever&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;less /tmp/strace.log&lt;/code&gt; and search of the package name from the end&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If the problem is with post-installation script, you will find some errors around &lt;code&gt;/var/lib/dpkg/info/whatever.postinst&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Edit it and inspect why it can/can't start/stop service (for example)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Particularly in the last case /var/lib/dpkg/info/snmpd.postinst called&lt;br /&gt;&lt;br /&gt;&lt;code&gt; . /usr/share/debconf/confmodule&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;which hung. All script returned code error much higher then 0 :-)&lt;br /&gt;&lt;br /&gt;How to fix it is another story.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-503998659475878223?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=vtDo6wMLSK4:1pHgUl9YUIM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=vtDo6wMLSK4:1pHgUl9YUIM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/503998659475878223/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=503998659475878223" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/503998659475878223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/503998659475878223?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/vtDo6wMLSK4/apt-get-install.html" title="When apt-get install hangs" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/apt-get-install.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UDSHw6fSp7ImA9WxdUEks.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-6797384894711160403</id><published>2008-06-20T13:42:00.006+02:00</published><updated>2008-07-28T18:07:59.215+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-28T18:07:59.215+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mencoder" /><category scheme="http://www.blogger.com/atom/ns#" term="mplayer" /><category scheme="http://www.blogger.com/atom/ns#" term="skiing" /><title>Hostel</title><content type="html">A film created from four webcams mounted around hostel in Szklarska Poręba. Frames were captured every 11 minutes, film speed is 15 frames per second. Its December 2007/January 2008.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DQSFOELvSQE&amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DQSFOELvSQE&amp;hl=en" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;A command used to prepare this film (from &lt;code&gt;man mencoder&lt;/code&gt;):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;while true&lt;br /&gt;do&lt;br /&gt;  DATE=`date +%F_%H_%M`&lt;br /&gt;  wget -O ./szklarska_${DATE}_1.jpeg http://server.com.pl/live/kamera_1.jpg&lt;br /&gt;  sleep 60&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and next, when we collect some pictures:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mencoder "mf://szklarska*_1.jpeg" -mf fps=10 -o ./szklarska_1.avi -ovc lavc -lavcopts vcodec=mpeg4&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you made some "media" on your own, please leave a comment what and how you did it. If you have any problem with encoding/decoding on Linux, please don/t hesitate to ask. My e-mail is above, a link to comments is below.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-6797384894711160403?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=LZUK565YGoU:fLgtau6WNzw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=LZUK565YGoU:fLgtau6WNzw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/6797384894711160403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=6797384894711160403" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6797384894711160403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/6797384894711160403?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/LZUK565YGoU/hostel.html" title="Hostel" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/hostel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGRHY5cSp7ImA9WxdQF00.&quot;"><id>tag:blogger.com,1999:blog-21581248.post-570034479091944926</id><published>2008-06-17T14:47:00.002+02:00</published><updated>2008-06-17T14:52:05.829+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-17T14:52:05.829+02:00</app:edited><title>What remains free, whats not</title><content type="html">RIAA/MPAA won't win. Associates Press as well. Everything will be free. The same way as roads are mostly free, Internet will become such good. We won't pay for Internet resources directly, we will pay taxes for it.&lt;div class="blogger-post-footer"&gt;___
Artur&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21581248-570034479091944926?l=correctlife.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=LMLqQ7dDo3g:uVZX3j-LRcc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CorrectLife?a=LMLqQ7dDo3g:uVZX3j-LRcc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CorrectLife?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="related" href="http://biz.yahoo.com/nytimes/080614/1194785259060.html?.v=3" title="What remains free, whats not" /><link rel="replies" type="application/atom+xml" href="http://correctlife.blogspot.com/feeds/570034479091944926/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=21581248&amp;postID=570034479091944926" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/570034479091944926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21581248/posts/default/570034479091944926?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/CorrectLife/~3/LMLqQ7dDo3g/what-remains-free-whats-not.html" title="What remains free, whats not" /><author><name>Artur Kaminski</name><uri>http://www.blogger.com/profile/09582104557280581674</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_BD5e2fpNJbA/SdCSXgGgwNI/AAAAAAAAJ70/ML3F1JwC1uw/S220/jaja3_little.jpeg" /></author><thr:total>0</thr:total><feedburner:origLink>http://correctlife.blogspot.com/2008/06/what-remains-free-whats-not.html</feedburner:origLink></entry></feed>

