<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/css" href="http://www.jerri.de/blog/"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Jerris Weblog</title>
<atom:link href="http://www.jerri.de/blog/rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.jerri.de/blog</link>
<description>Alles was Jerri auf seiner Reise durch die Welt findet...</description>
<dc:language>de-de</dc:language>
<dc:creator>Jerri</dc:creator>
<dc:date>2010-02-09T20:04:57+01:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<item>
<link>http://www.jerri.de/blog/archives/2010/02/06/reading_through_strace_files_-_finding_file_accesses/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2010/02/06/reading_through_strace_files_-_finding_file_accesses/index.html</guid>
<title>Reading through strace files - finding file accesses</title>
<dc:date>2010-02-06T13:36:55+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Konsole</dc:subject>
<description>
<![CDATA[
<p>
This is more or less a followup to my last blog entry. Still trying to find out
about which application is using my hard drive. I experimented some more with
strace and learned something about vim search patterns. :)
</p>

<p>
Suppose you make a strace of a process (e.g. <strike><tt>ls
-l</tt></strike><tt>vim --help</tt> which outputs the standard vim commandline
help) using the following command
</p>

<pre>
strace -f -s 4095 vim --help 2&gt;$HOME/tracefile.txt
</pre>

<p>
This creates a very large file with all system calls the process did during
it's execution. To now find the file accesses in this tracefile you maybe would
open this file in vim and then would na&iuml;vly search e.g. for the string
<tt>] open (</tt> to see, which files where opened. Vim search hightlighting
would show you all open statements, but you would have to read the file
yourself to find the corresponding close statement. Works, but gets very
strenously if there are a lot of open-calls.
</p>

<p>
Now, with the following search-pattern in vim (using search highlighting) you
will find the whole block in the trace file; from the beginning open to the
ending close-call wonderfully highlighted for a quick overview. (Enter this
after pressing <tt>/</tt> in command-mode.)
</p>

<pre>
] open(.* = \(\d*\)\_.\{-}] close(\1)
</pre>

<p>
This pattern uses several new features I never really used before (Which is
funny, as I tend to use regular expressions a lot). An example of the block
this pattern finds is
</p>

<pre>
] open(&quot;/usr/share/tcltk/tcl8.4/encoding/iso8859-1.enc&quot;, O_RDONLY|O_LARGEFILE) = 5
[pid 14780] fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
[pid 14780] ioctl(5, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfb1bfa8) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 14780] read(5, &quot;# Encoding file: iso8859-1, single-byte...&quot;, 4096) = 1094
[pid 14780] read(5, &quot;&quot;, 4096)           = 0
[pid 14780] close(5)
</pre>

<p>
<b>EDIT:</b> As a reader remarked, my first example in this blog entry with
<tt>ls -l</tt> is not very good. <tt>strace -f -s 4095 ls -l
2&gt;$HOME/tracefile.txt</tt> does not work with the given pattern, as no
pid-information is output (it seems strace only outputs pid-information, if the
process is multithreaded.). So without the pid-information, the pattern should
look like this: <tt>^open(.* = \(\d*\)\_.\{-}] close(\1)</tt>. In this case
only open and close calls on the main-thread are found. If you omit the first
<tt>^</tt> in the pattern, the search should still work although it might get
mixed up with the string <tt>open</tt> inside string-outputs from strace. In
summary this blog entry was created way to fast without proper testing. Sorry
for this. Hopefully the information in this entry still is of some use.
</p>

<h3>backreferencing</h3>

<p>
As you can see, the <tt>open</tt> call returns a handler id which is used to
also <tt>close</tt> the access again. Therefore we use <tt>\(\d*\)</tt> to mark
the first occurrence of the handler at the end of the line and backreference it
at the end with <tt>\1</tt>. (Using <tt>\2</tt>, <tt>\3</tt> etc. you also
could backreference more than one <tt>\(\)</tt> pattern.
</p>

<h3>multi line search</h3>

<p>
Normal you only search for patterns which can be found on one line. Here we
have read over line endings. This is done by using <tt>\_.</tt> which is the
same as <tt>.</tt> but also takes in account line endings.
</p>

<h3>greedy search</h3>

<p>
I you use the multiplier <tt>*</tt> to match more then one character, the
longest string matching the atom will be found. For example with the string
<tt>cabcabcabcab</tt> searching for <tt>c.*b</tt> will result in the full
string found, as it starts with <tt>c</tt> and ends with <tt>b</tt>. If you
only want to get <tt>cab</tt> you have to do a greedy search, which is done by
using the multiplier <tt>\{-}</tt>. So doing <tt>c.\{-}b</tt> will result in
finding only <tt>cab</tt>.
</p>

<h3>addendum</h3>

<p>
Be aware that this will not really work good, if the open and close statements
are entangled. But it seems to work most of the time.
</p>

<p>
If you want to learn more about regular expressions in vim just enter <tt>:help
regular-expression</tt> or <tt>:help pattern</tt> inside a vim-session.
</p>

<p>
Regular expressions can and should also be using in perl, javascript, sed, php,
etc. They are very powerful constructs. Unfortunately every system seems to
have its own dialect of regular expressions. But if you know the basic
structure of regular expressions you learn to cope with the differences really
fast.
</p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2010/01/31/inspect_hard_drive_access_under_linux/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2010/01/31/inspect_hard_drive_access_under_linux/index.html</guid>
<title>Inspect hard drive access under linux</title>
<dc:date>2010-01-31T15:32:38+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Interessant, Konsole</dc:subject>
<description>
<![CDATA[
<p>
Ever wondered which application right now is writing to the hard drive.
Currenlty trying to minimize the hard drive usage on my laptop and tried to
answer this exact question.
</p>

<p>
Unfortunately I did not find a tool to exactly tell me which application is
currently writing to which file on the harddrive. But a least with the tool
<tt>iotop</tt> I was able to find out, which application is writing to the hard
disc at all. Under ubunto or debian install this simply by invoking
</p>

<pre>
apt-get install iotop
</pre>

<p>
Like <tt>top</tt> this python-application continuously outputs the current
processes which are using the hard drive. But you have to be very attentive to
catch all applications while this tool is running. To get a better overview of
all hard drive activity call the tool with the following parameters:
</p>

<pre>
sudo iotop -qqqtaPob
</pre>

<p>
This parameters put iotop into a mode where it outputs something like a logfile
to the screen. Just let this run in the background, do something on your
computer and then check, what tools where using the harddrive. Take a look in
the man-pages of <tt>iotop</tt> to get the meaning of the parameters.
</p>

<p>
Now I am looking for a tool to really see to which files a running process
currently is writing to. Some tests with <tt>strace -f -e trace=file -p
PID</tt> where promising but failed if the running process opens the file only
once at startup.
</p>

<p>
Anyone any ideas how to really see what and where a process writes something to
the hard drive?
</p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/12/18/vim_als_ide/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/12/18/vim_als_ide/index.html</guid>
<title>Vim als IDE</title>
<dc:date>2009-12-18T18:09:16+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Konsole</dc:subject>
<description>
<![CDATA[
<p>
Da ich gerade wieder sehr stark am PHP-Programmieren bin, war ich wieder etwas
im Netz unterwegs um Tools und Tipps zur einfacheren Programmierung von tief
verschachteltem OOP-PHP-Code zu finden. Dabei habe ich zwei sehr interessante
Seiten gefunden.
</p>

<p>
Zunächst mal <a href="http://eclim.org/" target="_blank">Eclim</a>. Das ist ein
Plugin sowohl für Vim als auch für Eclipse. Wer normalerweise mit Vim arbeitet,
wird Eclipse als ein furchtbar langsames Ungetüm empfinden. Um einige der
Funktionalitäten von Eclipse in Vim zu verwenden, aber dabei trotzdem schnell
und flexibel zu arbeiten, der wird dieses Plugin mögen. Für Projekte mit tiefer
Baumstruktur lohnt es sich definitiv. Auch die automatische Syntax-Pruefung bei
Speicherung von php-Dateien ist sehr praktisch. Auch ich habe allerdings die
ganze tiefe von Eclim noch nicht durchschaut. Dieses kleine Plugin ist sehr
mächtig und der Programmierer Eric Van Dewoestine ist in seiner Mailingliste
wahnsinnig schnell beim Beantworten von Fragen.
</p>

<p>
Ein kleiner Tipp von mir (selbst erst in der Mailing-Liste gelernt). Mit den
folgenden beiden Einstellungen, sieht Vim schon beim Start in einem
Eclipse-Projekt-Verzeichnis ein bisschen wie eine IDE aus. :)
</p>

<pre>
" ProjectTree immer darstellen.
let g:EclimProjectTreeAutoOpen = 1
let g:EclimProjectTreeExpandPathOnOpen = 1
</pre>

<p>
Die zweite <a
href="http://www.koch.ro/blog/index.php?/archives/63-VIM-an-a-PHP-IDE.html"
target="_blank">Seite</a> ist eine fantastische Fundgrube an Tools und Ideen
für Vim, um hier wirklich IDE-Funktionalität zu erhalten. Vor allem der Tipp
mit xdebug und dem Vim-Debugger-Plugin, ist genial. Nur ein bisschen
Konfiguration und man kann bequem php-Applikationen debuggen. Und das beste
dabei, unter Debian sind die meisten Sachen nur ein <tt>apt-get install</tt>
weiter entfernt.
</p>

<p>
Das ganze mag einigen nicht neu vorkommen, aber ich war doch überrascht über
die Möglichkeiten, die hier noch zu finden sind. Ich mag Vim einfach!
</p>

<p><a href="http://eclim.org/" target="_blank">Welcome to Eclim - eclim (eclipse + vim)</a></p>

<p><a href="http://www.koch.ro/blog/index.php?/archives/63-VIM-an-a-PHP-IDE.html" target="_blank">VIM an a PHP IDE  - Thomas Koch</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/12/07/nanoblogger-templates_upgedated/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/12/07/nanoblogger-templates_upgedated/index.html</guid>
<title>NanoBlogger-Templates upgedated</title>
<dc:date>2009-12-07T09:54:49+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Homepage</dc:subject>
<description>
<![CDATA[
<p>
<a href="http://nanoblogger.sourceforge.net/" target="_blank">NanoBlogger</a>
hat sich inzwischen ziemlich weiterentwickelt, was mich gezwungen hat, einige
Templates neu zu erstellen bzw. anzupassen. Jetzt sollten eigentlich alle
Seiten in diesem Blog (auch im Archiv die JahresÃ¼berblicke) wieder korrekt
dargestellt werden. Wenn noch jemand eine Seite auf meinem Blog findet, die
nicht korrekt aussieht oder falsch verlinkt ist, dann bitte doch bei mir
melden!
</p>

<p>
Ansonsten hier noch ein Link zu einem neuen <a href="http://w7x.de/"
target="_blank">Blog</a> von einem guten alten Freund.  Wobei ich sagen muss,
dass die Seite ziemlich dunkel ist (von der Farbe her) und sehr kleine Schrift
verwendet (oder ich werde alt. :) )
</p>

<p><a href="http://nanoblogger.sourceforge.net/" target="_blank">NanoBlogger</a></p>

<p><a href="http://w7x.de/" target="_blank">w7x - So gehts auch&#8230;</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/12/04/problem_with_locales_on_remote_server_via_ssh/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/12/04/problem_with_locales_on_remote_server_via_ssh/index.html</guid>
<title>Problem with locales on remote server via ssh</title>
<dc:date>2009-12-04T10:57:43+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Konsole</dc:subject>
<description>
<![CDATA[
<p>
I recently had the problem, that I got the following error when I connection to
a new debian-server via ssh and then called <tt>locale</tt>:
</p>

<pre>
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=de_DE@euro
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
</pre>

<p>The same problem manifested in perl:</p>

<pre>
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_PAPER = "de_DE.UTF-8",
        LC_CTYPE = "de_DE@euro",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
</pre>

<p>
First I thought it was a problem on the remote server. Googeling around I found
a lot of users with the same problem, but not really a solution how to fix it
correctly and what the problem is in the first place.
</p>

<p>
In the end some hints brought me to the solution: Debian in its default
configuration allows ssh to set some environment-variables on the remote
server. This is configured in <tt>/etc/ssh/ssh_config</tt> with the line <tt> SendEnv LANG LC_*</tt>. I think debian went this route to allow umlauts and other special chars
to be possible in a ssh-session. Now, if the locale-setting on your local
machine is not installed on the remote-system you get the aforementioned
error-messages when you ssh to the remote server.
</p>

<p>
So, to get rid of this problem (which normally is only cosmetic) you have two
possiblities:
</p>

<ul>
<li>
Don't send the environment locales from your locale machine to the remote
machine. I took this way by just commenting out the line <tt>SendEnv LANG
LC_*</tt> in <tt>/etc/ssh/ssh_config</tt> as I don't see any reason to set it
on the remote system.
</li>

<li>
Or install the locale which you use on your local system on the remote system.
</li>
</ul>

<p>
I hope this helps some people coping with this problem and searching for an
answer.
</p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/11/09/interessant_f_uumlr_alle_nichtraucher/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/11/09/interessant_f_uumlr_alle_nichtraucher/index.html</guid>
<title>Interessant für alle Nichtraucher...</title>
<dc:date>2009-11-09T10:05:43+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Interessant</dc:subject>
<description>
<![CDATA[
<p>
Hier ein Link für alle Nichtraucher und die, die es werden wollen. Ein
Volksbegehren zum konsequenten Nichtraucherschutz. Es werden 950 tausend
Unterschriften benötigt. Sollte jeder mal durchlesen und selbst drüber
nachdenken. Start der Unterschriftenaktion am 19. November 2009.
</p>

<p><a href="http://www.nichtraucherschutz-bayern.de/" target="_blank">Volksbegehren Nichtraucherschutz Bayern</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/10/18/jerri_ist_e-bay_verk_aumlufer_-_winterreifen_f_uumlr_renault_clio/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/10/18/jerri_ist_e-bay_verk_aumlufer_-_winterreifen_f_uumlr_renault_clio/index.html</guid>
<title>Jerri ist E-Bay Verkäufer - Winterreifen für Renault Clio</title>
<dc:date>2009-10-18T19:43:16+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<description>
<![CDATA[
<p>
Jetzt schlägts Dreizehn. Nun bin ich schon so lange im Internet unterwegs,
spiele mit allen möglichen Sachen rum und versuche soweit möglich am Ball zu
bleiben. Und doch habe ich erst jetzt die Möglichkeit gefunden, mal einen
Artikel bei Ebay zu versteigern. Und zwar geht es um die Winterreifen des
Renault Clio, den ich mal gefahren bin. Die liegen nun doch schon seit einem
Jahr im Keller rum und verbrauchen dort nur Platz. Wer also welche braucht,
hier ist der Link: :)
</p>

<p><a href="http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=150381521120#ht_500wt_1182" target="_blank">Winterreifen für Renault Clio</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/10/03/tutorial_videos_zu_vim/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/10/03/tutorial_videos_zu_vim/index.html</guid>
<title>Tutorial Videos zu VIM</title>
<dc:date>2009-10-03T09:46:35+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Konsole</dc:subject>
<description>
<![CDATA[
<p>
Wieder mal nur ein kleiner Link, gefunden im weiten Netz, zum Thema , dem <a
href="http://www.vim.org/" target="_blank">VIM</a> besten Editor der Welt.
Derek Wyatt hat sich die Mühe gemacht, diverse Editierkonzepte in VIM in
kleinen Videotutorials zu erklären. Sehr schön gemacht und auch ich habe wieder
mal etwas gelernt. Man hört nie auf damit.  Insbesondere für Anfänger sind
diese Videos eine gute Hilfe, da auch einfachere Dinge in VIM erklärt werden.
Alle Tutorials sind in englischer Sprache.
</p>

<p><a href="http://vimeo.com/user1690209/videos" target="_blank">Derek Wyatt's videos on Vimeo</a></p>

<p><a href="http://www.vim.org/" target="_blank">welcome home : vim online</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/08/05/geniale_inspirationssammlung_zum_scripting/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/08/05/geniale_inspirationssammlung_zum_scripting/index.html</guid>
<title>Geniale Inspirationssammlung zum Scripting</title>
<dc:date>2009-08-05T08:54:14+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Interessant, Konsole</dc:subject>
<description>
<![CDATA[
<p>
Eine kleine aber feine Seite, die ich erst vor kurzem gefunden habe. Hier ist
gerade ein Wust an Inspiration versammelt, was das Scripting angeht. Wer viel
und oft etwas auf der Console erledigt, sollte hier mal einen Blick drauf
werfen. Vieles ist bestimmt bekannt, aber die eine oder andere Idee kann man
abgreifen. :)
</p>

<p><a href="http://www.commandlinefu.com/" target="_blank">commandlinefu.com</a></p>]]>
</description>
</item>
<item>
<link>http://www.jerri.de/blog/archives/2009/07/25/endlich_mal_wieder_ein_neues_t-shirt_im_shop/index.html</link>
<guid isPermaLink="true">http://www.jerri.de/blog/archives/2009/07/25/endlich_mal_wieder_ein_neues_t-shirt_im_shop/index.html</guid>
<title>Endlich mal wieder ein neues T-Shirt im Shop</title>
<dc:date>2009-07-25T13:58:28+01:00</dc:date>
<dc:creator>Jerri</dc:creator>
<dc:subject>Homepage</dc:subject>
<description>
<![CDATA[
<p>
Eigentlich naheliegend, die Idee. Aber trotzdem ganz nett. Wer eine nette
Botschaft weitergeben möchte, holt sich das T-Shirt "Jemand mag dich!". Und wer
sinnloserweise für meine Website Werbung machen will, der hole sich das
www.jerri.de-Fan-T-Shirt. :)
</p>

<p><a href="/shop/">Jerris Shop</a></p>

<p>
QR-Codes heissen diese 2D-Barcodes, die man mit den meisten neuen Handys und
dem IPhone abfotografieren und lesen kann. Wer selbst einen solchen 2D-Barcode
erstellen will, kann dies auf der folgenden Seite tun:
</p>

<p><a href="http://qrcode.kaywa.com/" target="_blank">QR-Code Generator</a></p>]]>
</description>
</item>
</channel>
</rss>
