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

<channel>
	<title>kip&#039;s blog</title>
	<atom:link href="http://blog.kips-world.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kips-world.de</link>
	<description>nothing too important</description>
	<lastBuildDate>Fri, 08 Jan 2010 12:41:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Exposé und mehrere Monitore</title>
		<link>http://blog.kips-world.de/expose-und-mehrere-monitore/</link>
		<comments>http://blog.kips-world.de/expose-und-mehrere-monitore/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:13:59 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[expose]]></category>
		<category><![CDATA[multi monitor]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=241</guid>
		<description><![CDATA[
Ich bin ein großer Fan von Exposé unter OSX. Die Hauptfunktion von Exposé ist das schnelle Finden eines bestimmten Fensters. Klingt simpel und wenig spektakulär, aber wenn man oft sehr viele Fenster und Anwendungen gleichzeitig geöffnet hat lernt man Exposé sehr zu schätzen. Ich benutze hauptsächlich die Funktionen &#8220;Alle Fenster anzeigen&#8221;, &#8220;Alle Fenster des aktuellen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kips-world.de/wp-content/uploads/2010/01/expose-alle-fenster.jpg"><img src="http://blog.kips-world.de/wp-content/uploads/2010/01/expose-alle-fenster-500x250.jpg" alt="expose-alle-fenster" title="expose-alle-fenster" width="500" height="250" class="aligncenter size-thumbnail wp-image-255" /></a><br />
Ich bin ein großer Fan von Exposé unter OSX. Die Hauptfunktion von Exposé ist das schnelle Finden eines bestimmten Fensters. Klingt simpel und wenig spektakulär, aber wenn man oft sehr viele Fenster und Anwendungen gleichzeitig geöffnet hat lernt man Exposé sehr zu schätzen. Ich benutze hauptsächlich die Funktionen &#8220;Alle Fenster anzeigen&#8221;, &#8220;Alle Fenster des aktuellen Programms anzeigen&#8221; und &#8220;Desktop anzeigen&#8221;.<br />
<span id="more-241"></span><br />
Diese drei Funktionen kann man sehr einfach durch eine Mausbewegung aufrufen. Ich muss den Mauszeiger dafür nur in eine der Ecken meines Desktop&#8217;s bewegen und die dort verknüpfte Funktion wird aufgerufen. Solange man nur einen Monitor hat funktioniert das mit den vier Ecken des Desktop wunderbar:</p>
<p><a href="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-01.png"><img src="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-01-500x250.png" alt="multi-monitor-01" title="multi-monitor-01" width="500" height="250" class="aligncenter size-thumbnail wp-image-258" /></a></p>
<p>Schließt man an seinen Mac aber einen weiteren Monitor an, verbindet OSX die beiden Desktops zu einer einzigen großen Arbeitsfläche. Das Problem: Die &#8220;inneren&#8221; Ecken der beiden Monitore sind dann keine Ecken des Desktops mehr. Wenn ich mit diesen Einstellungen die Funktion der Ecke #4 aufrufen möchte, muss ich mit dem Mauszeiger in die rechte untere Ecke des 2. Monitors fahren.</p>
<p><a href="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-02.png"><img src="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-02-500x250.png" alt="multi-monitor-02" title="multi-monitor-02" width="500" height="250" class="aligncenter size-thumbnail wp-image-259" /></a></p>
<p>Wenn man die Funktion so häufig nutzt wie ich ist man von diesem Verhalten seitens OSX schnell genervt. Abhilfe schafft hier ein kleiner Trick von <a href="http://www.macosxhints.com/article.php?story=20041106031749738">Macosxhints.com</a>. Man öffnet dazu in den Systemeinstellungen den Dialog &#8220;Monitore&#8221; und wechselt zum Reiter &#8220;Anordnen&#8221;. Dort klickt man auf einen der beiden Desktop und verschiebt ihn mit gedrückter Maustaste ein wenig nach oben oder unten. Da beide Desktops nun nicht mehr bündig sind, entsteht eine zusätzliche Ecke auf der Arbeitsfläche, die mit der gleichen Funktion wie die entsprechende Ecke auf der anderen Arbeitsfläche belegt ist. Im Bild sollte dies deutlicher werden:</p>
<p><a href="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-03.png"><img src="http://blog.kips-world.de/wp-content/uploads/2010/01/multi-monitor-03-500x250.png" alt="multi-monitor-03" title="multi-monitor-03" width="500" height="250" class="aligncenter size-thumbnail wp-image-263" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/expose-und-mehrere-monitore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freitags Song</title>
		<link>http://blog.kips-world.de/freitags-song/</link>
		<comments>http://blog.kips-world.de/freitags-song/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:43:08 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[ohrwurm]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/freitags-song/</guid>
		<description><![CDATA[
The Cure &#8211; Friday Im In Love
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cA2yvFaObJc&#038;hl=de&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cA2yvFaObJc&#038;hl=de&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>The Cure &#8211; Friday Im In Love</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/freitags-song/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WP: Email-Absender</title>
		<link>http://blog.kips-world.de/wp-email-absender-aendern/</link>
		<comments>http://blog.kips-world.de/wp-email-absender-aendern/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:47:12 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress-plugins]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[getting started]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=226</guid>
		<description><![CDATA[Ich habe heute angefangen die Kundendatenbank des IRD an Wordpress anzukoppeln damit sich unsere Kunden direkt auf unserer Webseite anmelden können und sich nicht extra über Wordpress registrieren müssen. Beim Testen der Funktionen hat mich der Absender der `Passwort-Erinnerungs-Mails` extrem gestört. Wordpress benutzt hier standardmäßig den Namen &#8220;Wordpress&#8221; und die Email-Adresse &#8220;wordpress@domain.tld&#8221; (wobei domain.tld natürlich [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe heute angefangen die Kundendatenbank des IRD an Wordpress anzukoppeln damit sich unsere Kunden direkt auf unserer Webseite anmelden können und sich nicht extra über Wordpress registrieren müssen. Beim Testen der Funktionen hat mich der Absender der `Passwort-Erinnerungs-Mails` extrem gestört. Wordpress benutzt hier standardmäßig den Namen &#8220;Wordpress&#8221; und die Email-Adresse &#8220;wordpress@domain.tld&#8221; (wobei domain.tld natürlich durch die Domain ersetzt wird auf der Wordpress läuft).</p>
<p>Zum Glück muss man bei Wordpress mit solchen Schönheitsfehlern nicht leben &#8211; ein kleines MiniPlugin genügt um seine eigene Email-Adresse und den Absendernamen festzulegen. Hier erstmal der Code:</p>
<pre name="code" class="php">
&lt;?php
/*
Plugin Name: myemail
Plugin URI: http://blog.kips-world.de
Description: Some wordpress hacks for my website
Version: 1.0
Author: Dennis Saenger
Author URI: http://blog.kips-world.de
*/

function kip_from_mail($f) {

        $admin = get_userdata(1);
        return $admin->user_email;
}
function kip_from_name($f) {

        $admin = get_userdata(1);
        return $admin->display_name;
}
add_filter('wp_mail_from', 'kip_from_mail', 0, 1);
add_filter('wp_mail_from_name', 'kip_from_name', 0, 1);
?&gt;
</pre>
<p>Um den Absendernamen und die Emailadresse zu ändern benutze ich hier je einen Wordpress-Filter. Immer wenn Wordpress eine Email verschicken will, werden diese beiden Filter automatisch aufgerufen. Als Parameter übergibt Wordpress die Default-Werte an die Funktionen. Bei <em>kip_from_mail()</em> übergibt Wordpress &#8220;wordpress@blog.kips-world.de&#8221;, bei <em>kip_from_name()</em> wird &#8220;Wordpress&#8221; übergeben. Man könnte diese Werte jetzt modifizieren und zurückgeben, aber ich habe mich dafür entschieden einfach den Nickname und die Emailadresse des Admin als Absender zu nutzen. Ich ignoriere die Variablen (<em>$f</em>) in beiden Funktionen also einfach und hole mir mit der Funktion <em>get_userdata()</em> einfach die Werte des admin Users (der admin hat die User-ID <em>1</em>).</p>
<p>Um das ganze selbst auszuprobieren erstellst du in deinem Wordpress-Pluginordner einfach eine Datei &#8220;myemail.php&#8221; und kopierst den obigen PHP-Code dort hinein. Im Admin-Bereich von Wordpress wird es dann ein neues Plugin &#8220;myemail&#8221; geben. Dieses noch schnell aktivieren und schon sendet Wordpress Emails mit einem schönen Absender!</p>
<p>Wer jetzt Lust bekommen hat selbst kleine Modifikationen an Wordpress vorzunehmen findet im Wordpress-Codex alles was er wissen muss. In der <a href="http://codex.wordpress.org/Plugin_API">Plugin-API</a> gibt es eine Einführung zu Filtern und Actions (die beiden Plugin-Schnittstellen von Wordpress). In der <a href="http://codex.wordpress.org/Function_Reference">Function Reference</a> werden alle Wordpress-Funktionen inklusive Beschreibung aufgelistet. Und auf der Homepage von <a href="http://adambrown.info/">Adam</a> findet man eine komplette <a href="http://adambrown.info/p/wp_hooks">Liste mit allen Filtern und Actions</a> (sehr wichtig!).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/wp-email-absender-aendern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lotto?!</title>
		<link>http://blog.kips-world.de/lotto/</link>
		<comments>http://blog.kips-world.de/lotto/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 14:19:29 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lotto]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/lotto/</guid>
		<description><![CDATA[
&#60;?php
/* mein lotto zahlen glückgenerator */

// ich spiele 6 kästchen
$n = 6;

for ($i = 1; $i ]]></description>
			<content:encoded><![CDATA[<pre name="code" class="php">
&lt;?php
/* mein lotto zahlen glückgenerator */

// ich spiele 6 kästchen
$n = 6;

for ($i = 1; $i <= ($n*6); ++$i) {
	print rand(1,49);
	$i % 6 == 0 ? print "&lt;br /&gt;" : print ", ";
}
?&gt;
</pre>
<p>Und wer eine eigene Ausgabe haben will: <a href="http://dev.kips-world.de/lotto.php">http://dev.kips-world.de/lotto.php</a>.<br />
P.S.: Wer gewinnt darf mir etwas abgeben!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/lotto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Tastatur ausfahren :o</title>
		<link>http://blog.kips-world.de/iphone-tastatur-ausfahren/</link>
		<comments>http://blog.kips-world.de/iphone-tastatur-ausfahren/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 14:05:22 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[fake]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/iphone-tastatur-ausfahren-o/</guid>
		<description><![CDATA[
fake aber lustig  
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/W3UoYdATVDI&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=de&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/W3UoYdATVDI&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=de&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="500" height="344"></embed></object></p>
<p>fake aber lustig <img src='http://blog.kips-world.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/iphone-tastatur-ausfahren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>virtualbox &#8211; einen gast ins LAN einbinden</title>
		<link>http://blog.kips-world.de/virtualbox-einen-gast-ins-lan-einbinden/</link>
		<comments>http://blog.kips-world.de/virtualbox-einen-gast-ins-lan-einbinden/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 21:37:33 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[gast]]></category>
		<category><![CDATA[netzwerk]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualisierung]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=197</guid>
		<description><![CDATA[
Ich benutze zur Zeit neben Ubuntu 9.04 auch Windows 7 auf meinem Desktop Rechner. Ich muss zugeben, obwohl mir das neue Windows ganz gut gefällt, möchte ich lieber eine LAMP Umgebung zur Webentwicklung benutzen, auch unter Windows. Also warum nicht ein Ubuntu in einer virtuellen Maschine laufen lassen und den Apache und MySQL Server von [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kips-world.de/wp-content/uploads/2009/09/vbox-logo.png"><img src="http://blog.kips-world.de/wp-content/uploads/2009/09/vbox-logo-150x150.png" alt="vbox-logo" title="vbox-logo" width="150" height="150" class="alignleft size-thumbnail wp-image-199" /></a><br />
Ich benutze zur Zeit neben Ubuntu 9.04 auch Windows 7 auf meinem Desktop Rechner. Ich muss zugeben, obwohl mir das neue Windows ganz gut gefällt, möchte ich lieber eine LAMP Umgebung zur Webentwicklung benutzen, auch unter Windows. Also warum nicht ein Ubuntu in einer virtuellen Maschine laufen lassen und den Apache und MySQL Server von Ubuntu nutzen.<br />
<span id="more-197"></span></p>
<p>Zur Virtualisierung benutze ich das konstenlose <a href="http://www.virtualbox.org/">Virtual Box</a>. Um mein Gast-System als vollwertigen Server zu nutzen, muss ich das virtualisierte Ubuntu in mein Netzwerk einbinden. Das System soll eine eigene IP im Netzwerk haben und auch von anderen Rechnern aus ansprechbar sein, als wäre es ein zusätzlicher Rechner im Netzwerk. Seit Virtual Box 2.2 soll dies sehr einfach sein &#8211; zumindestens laut Dokumentation. Man muss in den Einstellungen der virtuellen Maschine unter dem Punkt `Netzwerk` lediglich ein paar Einstellungen ändern. Wichtig ist, dass man unter dem Punkt <i>Angeschlossen an</i> `Netzwerkbrücke` auswählt. Als Netzwerk-Schnittstelle muss man die Netzwerkkarte auswählen, die an das lokale Netzwerk angeschlossen ist. Was in der Dokumentation leider nicht erwähnt wird, ist, dass der Bridge Modus nicht mit jedem virtuellen Adaptertyp funktioniert. </p>
<p><a href="http://blog.kips-world.de/wp-content/uploads/2009/09/virtual-box-network-config.png"><img src="http://blog.kips-world.de/wp-content/uploads/2009/09/virtual-box-network-config-150x150.png" alt="virtual-box-network-config" title="virtual-box-network-config" width="150" height="150" class="alignright size-thumbnail wp-image-200" /></a><br />
Standardmäßig arbeitet die Virtual Box mit dem Adaptertyp <em>PCnet-Fast III</em>, der bei meinen Bemühungen aber nicht als Bridge arbeiten wollte. Ich habe mich dann für die <em>Intel PRO/1000 T Server</em> entschieden &#8211; damit lief der Bridge Modus auf Anhieb. Man muss dem Netzwerkadapter im Gast-System dann einfach eine IP aus dem lokalen Netzwerk zuweisen, den Rest übernimmt VirtualBox. Über die zugewiesene IP ist die virtuelle Ubuntu Maschine dann auch von anderen Rechnern im LAN aus ansprechbar. Der Zugriff aufs Internet aus dem Gastsystem heraus funktionierte bei mir auch auf Anhieb. Ich habe unter Ubuntu dazu einfach die IP meines Routers als Gateway und DNS Server eingetragen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/virtualbox-einen-gast-ins-lan-einbinden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>batch rename unter mac osx</title>
		<link>http://blog.kips-world.de/batch-rename-mac-osx/</link>
		<comments>http://blog.kips-world.de/batch-rename-mac-osx/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:50:18 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[rename]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=168</guid>
		<description><![CDATA[
Ich hatte gerade das Problem, dass ich 94 Bilddateien umbenennen musste. Die Bilder hatten alle den Teilstring &#8220;bearb_#&#8221; oder &#8220;bearb_&#8221; im Namen und der sollte entfernt werden.
Unter MacOSX gibt es dafür natürlich einige grafische Tools, nicht zuletzt den `Automator`. Dieser bennent auf Wunsch beliebig viele Dateien um, allerdings mit festem Namen und einer laufenden Nummer. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kips-world.de/wp-content/uploads/2009/09/konsole.png"><img src="http://blog.kips-world.de/wp-content/uploads/2009/09/konsole.png" alt="konsole" title="konsole" width="128" height="128" class="alignleft size-full wp-image-172" /></a><br />
Ich hatte gerade das Problem, dass ich 94 Bilddateien umbenennen musste. Die Bilder hatten alle den Teilstring &#8220;bearb_#&#8221; oder &#8220;bearb_&#8221; im Namen und der sollte entfernt werden.</p>
<p>Unter MacOSX gibt es dafür natürlich einige grafische Tools, nicht zuletzt den `Automator`. Dieser bennent auf Wunsch beliebig viele Dateien um, allerdings mit festem Namen und einer laufenden Nummer. Ich wollte die Namen meiner Bilder allerdings behalten und nur den störenden Teilstring entfernen. </p>
<p>Hier zeigt sich mal wieder warum ich meinen Mac so mag: Geniales GUI &#8211; aber unter der Haube ein Unix mit all seinen nützlichen Tools! Einen Teilstring aus allen Dateinamen eines Ordners zu entfernen ist für ein Unix und die Bash keine Herausforderung &#8211; dazu braucht man nur eine einzige Befehlszeile:<br />
<span id="more-168"></span></p>
<pre name="code" class="c">
for FILE in * ; do NEWFILE=`echo $FILE | sed -E 's/bearb_#?//g'` ; mv "$FILE" "$NEWFILE" ; done
</pre>
<p>Die Befehle im Detail:</p>
<ul>
<li>
	<em>for FILE in *; do</em>: Eine For-Schleife die nacheinander alle Dateien im aktuellen Verzeichnis einliest und deren Dateinamen in der Variable $FILE spiechert.
	</li>
<li>
	<em>NEWFILE=` &#8230; `</em>: Diese Anweisung führt eine neue Variable $NEWFILE ein und weist ihr die Ausgabe der Befehle zwischen den Anführungszeichen zu. Die schrägen Anführungszeichen haben die Besonderheit, dass der String zwischen ihnen als Unix-Befehl ausgeführt wird.
	</li>
<li>
	<em>echo $FILE | sed -E &#8217;s/bearb_#?//g&#8217;</em>: echo $FILE gibt einfach nur den alten Dateinamen aus und die Pipe (der senkrechte Strich: | ) leitet die Ausgabe von <em>echo</em> auf den zweiten Befehl <em>sed</em> um.</p>
<p><em>sed</em> kann mit Hilfe von Regulären Ausdrücken Zeichenketten bearbeiten. Der Parameter -E aktiviert die erweiterten Regulären Ausdrücke von sed. Das <em>s</em> vor dem ersten Schrägstrich weist <em>sed</em> an, den String zwischen den ersten beiden Schrägstrichen mit dem String zwischen dem 2. und 3. Schrägstrich zu ersetzen.</p>
<p>Der 2. String ist leer, was bedeutet, dass der mit dem 1. Regulären Ausdruck gefundene String einfach gelöscht wird. Der Reguläre Ausdruck ist einfach der Teilstring den ich entfernen muss. Das #-Zeichen kam in manchen Strings nicht vor. Damit der Reguläre Ausdruck Teilstrings in der Form &#8220;bearb_&#8221; und &#8220;bearb_#&#8221; findet, steht das ?-Zeichen hinter dem #-Zeichen. Ein ?-Zeichen bedeutet bei Regulären Ausdrücken, dass ein Zeichen genau 0- oder 1mal vorkommen darf.
	</li>
<li><em>done</em>: Das abschließende <em>done</em> beendet die for-Schleife.</li>
</ul>
<p>Problem gelöst &#8211; mit Unix Hausmitteln, ohne extra Tools! <img src='http://blog.kips-world.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/batch-rename-mac-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Festplatte retten</title>
		<link>http://blog.kips-world.de/festplatte-retten/</link>
		<comments>http://blog.kips-world.de/festplatte-retten/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 15:56:52 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[ddrescue]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[rescue]]></category>
		<category><![CDATA[testdisk]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=152</guid>
		<description><![CDATA[Ich habe heute verzweifelt einen Laptop in die Hand gedrückt bekommen: &#8220;Beim Booten erscheint Partitionstabelle ungültig &#8211; was soll ich machen?&#8221;.
Erstmal ist wichtig nicht zu versuchen die Festplatte mit irgendwelchen Windows Tools wieder zu retten, denn wenn das schiefgeht sind die Daten vielleicht wirklich weg. Mein erster Schritt war also eine Ubuntu Live CD zu [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe heute verzweifelt einen Laptop in die Hand gedrückt bekommen: &#8220;Beim Booten erscheint Partitionstabelle ungültig &#8211; was soll ich machen?&#8221;.</p>
<p>Erstmal ist wichtig nicht zu versuchen die Festplatte mit irgendwelchen Windows Tools wieder zu retten, denn wenn das schiefgeht sind die Daten vielleicht wirklich weg. Mein erster Schritt war also eine Ubuntu Live CD zu booten und die gesamte Festplatte mit dem Linux Tool `dd` auf eine externe USB Platte zu sichern:</p>
<pre name="code" class="c">
dd if=/dev/sda of=/media/disk/sda.dd.img
</pre>
<p>Das dauert ein Weilchen, denn dd kopiert byte für byte genau wie die Daten auf der Festplatte stehen, alles in eine Datei. Dabei werden auch leere Bereich der Festplatte mitkopiert. Das heißt, dass eine 120GB Festplatte wie in meinem Fall &#8211; selbst wenn nur 10GB belegt sind &#8211; ein Image der Größe 120GB erzeugt.</p>
<p>Nachdem die Festplatte gesichert ist können wir das Problem etwas genauer analysieren. Mit sfdisk ersteinmal schauen, was von der Partitionstabelle noch übrig ist:</p>
<pre name="code" class="c">
sfdisk -d /media/disk/sda.dd.img
Warnung: erweiterte Partition beginnt nicht an einer Zylindergrenze
DOS und Linux werden den Inhalt unterschiedlich interpretieren.
# Partitionstabelle von /media/disk/sda.dd.img
unit: sectors

/media/disk/sda.dd.img1 : start=229197824, size=  5240832, Id= c, bootable
/media/disk/sda.dd.img2 : start=   241664, size= 20971520, Id= 7
/media/disk/sda.dd.img3 : start= 21213184, size=207982592, Id= 7, bootable
/media/disk/sda.dd.img4 : start=229195776, size=  5242880, Id= f
/media/disk/sda.dd.img5 : start=229197824, size=  5240832, Id= 0
</pre>
<p>Sieht ja garnicht so schlecht aus. Ich weiß, dass die Platte drei Partitionen hatte (es handelt sich um ein DELL Notebook, zwei der drei Partitionen sind von DELL angelegt, eine der angezeigten 5 Partitionen ist wohl eine erweiterte). Die Daten-Partition ist die Wichtige um die es mir geht. Woran man die erkennt? Es sollte eine der größeren Partitionen sein. Jetzt sind ein paar Grundkenntnisse über Festplatten-Partionierung und Dateisysteme vorteilhaft. Nach der Ausgabe von sfdisk vermute ich, dass es sich bei img2 um eine erweiterte Partition handelt (also nur um den Container für eine logische Partition). img3 scheint mir die Daten-Partition zu sein nach der ich suche.  Um diese Partition jetzt zu mounten, muss ich noch den richtigen Offset berechnen. sfdisk sagt mir, dass img3 bei &#8220;21213184&#8243; startet. Dieser Wert muss jetzt aber noch mit 512 multipliziert werden (Bei (S)ATA Platten ist ein Sektor 512 Byte groß). Der mount-Befehl sieht dann so aus:</p>
<pre name="code" class="c">
mount /media/disk/sda.dd.img /mnt/sda-3 -t ntfs-3g -o ro,loop,offset=10861150208
</pre>
<p>Bingo! Ich kann die Partition aus dem Image heraus lesen. Alle Daten scheinen da zu sein!<br />
Jetzt kann ich mich an die Reparatur der Festplatte wagen. Dazu werde ich <a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a> benutzen, aber alle anderen (auch Windows Tools) sind jetzt auch in Ordnung &#8211; zur Not hat man ja ein komplettes Image der Festplatte das man zurückspielen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/festplatte-retten/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mysql-query benchmark</title>
		<link>http://blog.kips-world.de/mysql-query-benchmark/</link>
		<comments>http://blog.kips-world.de/mysql-query-benchmark/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 21:28:56 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=145</guid>
		<description><![CDATA[
Ich habe heute einen MySQL-Query mit insgesamt 14 Joins geschrieben und wollte schauen wie schnell dieser ausgeführt wird. Deshalb hab ich mir schnell ein kleines Benchmark Skript geschrieben. In dem Skript gibt man seine MySQL Daten, den Query und die Anzahl der Testläufe ein. Als Ausgabe erhält man die durchschnittliche Zeit, die die Datenbank benötigt [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.kips-world.de/wp-content/uploads/2009/09/logo_mysql_sun_a.gif"><img src="http://blog.kips-world.de/wp-content/uploads/2009/09/logo_mysql_sun_a.gif" alt="logo_mysql_sun_a" title="logo_mysql_sun_a" width="114" height="68" class="alignright size-full wp-image-147" /></a><br />
Ich habe heute einen MySQL-Query mit insgesamt 14 Joins geschrieben und wollte schauen wie schnell dieser ausgeführt wird. Deshalb hab ich mir schnell ein kleines <a href="http://dl.kips-world.de/misc/benchmark.txt">Benchmark Skript</a> geschrieben. In dem Skript gibt man seine MySQL Daten, den Query und die Anzahl der Testläufe ein. Als Ausgabe erhält man die durchschnittliche Zeit, die die Datenbank benötigt um den Query auszuführen. Finde ich ganz nützlich wenn man versucht seine Datenbankanfragen flott zu machen. </p>
<p>In der MySQL-Doku gibt es auch ein ganzes <a href="http://dev.mysql.com/doc/refman/5.0/en/optimization.html">Kapitel zur Query-Optimierung</a>. Außerdem bin ich auf <a href="http://hackmysql.com">hackmysql.com</a> gestossen. Dort gibt es ein paar interessante Paper zum Thema:</p>
<ul>
<li><a href="http://hackmysql.com/case2">Table Design and MySQL Index Details</a></li>
<li><a href="http://hackmysql.com/case4">How To Index For Joins With MySQL</a></li>
<li><a href="http://hackmysql.com/case5">How To Look At MySQL Joins and More ORDER BY With LIMIT</a></li>
</ul>
<p>Es gibt noch ein paar weitere die teilweise noch tiefer in die Materie eintauchen. Einfach mal auf <a href="http://hackmysql.com">hackmysql.com</a> vorbeischauen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/mysql-query-benchmark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ohrwurm #2</title>
		<link>http://blog.kips-world.de/ohrwurm-2/</link>
		<comments>http://blog.kips-world.de/ohrwurm-2/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 21:15:32 +0000</pubDate>
		<dc:creator>blog.kips-world.de</dc:creator>
				<category><![CDATA[ohrwurm]]></category>

		<guid isPermaLink="false">http://blog.kips-world.de/?p=140</guid>
		<description><![CDATA[
Am Besten im Auto &#8211; so laut das der Rückspiegel wackelt &#8230; 
Ist zzt. auch Nummer #1 in den deutschen Single Charts und in den iTunes Charts!
]]></description>
			<content:encoded><![CDATA[<p><object width="500" height="300"><param name="movie" value="http://www.youtube.com/v/5RbSXxwiYMY&#038;hl=de&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5RbSXxwiYMY&#038;hl=de&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="300"></embed></object></p>
<p>Am Besten im Auto &#8211; so laut das der Rückspiegel wackelt &#8230; <img src='http://blog.kips-world.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Ist zzt. auch Nummer #1 in den deutschen Single Charts und in den iTunes Charts!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kips-world.de/ohrwurm-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.638 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-10 22:55:37 -->
