<?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>Is it just &#12415;? &#187; Technik</title>
	<atom:link href="http://blog.himmelrath.net/category/tec/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.himmelrath.net</link>
	<description>ungeordneter Unfug</description>
	<lastBuildDate>Sun, 25 Jul 2010 08:00:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Windows 7 ist dumm</title>
		<link>http://blog.himmelrath.net/tec/comp/windows-7-ist-dumm/</link>
		<comments>http://blog.himmelrath.net/tec/comp/windows-7-ist-dumm/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 17:13:23 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Argh!]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[BOOTMGR is compressed]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=809</guid>
		<description><![CDATA[Ich benutze Windows nun wirklich nur noch selten, und selbst das wird hoffentlich bald noch seltener werden, wenn Steam unter Linux läuft. Dennoch schaffe ich es in lustige Fallen zu tappen, die wie in diesem Fall mit einem Mausklick das System zumindest temporär unbrauchbar machen können.

Niemals sollte man auf die <a href="http://blog.himmelrath.net/tec/comp/windows-7-ist-dumm/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich benutze Windows nun wirklich nur noch selten, und selbst das wird hoffentlich bald noch seltener werden, wenn Steam unter Linux läuft. Dennoch schaffe ich es in lustige Fallen zu tappen, die wie in diesem Fall mit einem Mausklick das System zumindest temporär unbrauchbar machen können.</p>
<p>Niemals sollte man auf die Idee kommen, die Optionen zu nutzen, die Windows einem bietet. Ich z.B. bin auf die Idee gekommen den Festplattenplatz doch ein wenig effizienter zu nutzen und meine Systempartition zu komprimieren. Die Theorie dahinter: Mein Prozessor ist deutlich unterbelastet, meine Festplatte ist der Flaschenhals &#8211; warum also nicht durch Komprimierung die Last ein wenig in Richtung Prozessor verlagern?</p>
<p>Gesagt, getan: C: komprimieren, &#8220;für Unterordner übernehmen&#8221;, warten, neustarten, &#8220;<strong>BOOTMGR is compressed</strong>&#8220;. No shit, Sherlock. Du hast das gerade selbst komprimiert. Wie dem auch sei, die Lösung ist einfach: Die Datei BOOTMGR einfach nicht komprimieren.</p>
<p>Wer den gleichen Fehler hat findet hier eine Erläuterung mit 4 verschiedenen Wegen das Problem zu lösen: <a href="http://www.cybervaldez.com/how-to-fix-bootmgr-is-compressed-error/2009/">http://www.cybervaldez.com/how-to-fix-bootmgr-is-compressed-error/2009/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/windows-7-ist-dumm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools für Webentwickler und -designer</title>
		<link>http://blog.himmelrath.net/tec/prog/tools-fur-webentwickler-und-designer/</link>
		<comments>http://blog.himmelrath.net/tec/prog/tools-fur-webentwickler-und-designer/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 16:47:18 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Bildbearbeitung]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[Webauthoring]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=794</guid>
		<description><![CDATA[Ich habe drei nette online Tools gefunden die einem das Leben als Web-Entwickler/-Designer leichter machen.
Kunde hat Anzeigeprobleme mit der Webseite?
Schicke ihn nach ﻿﻿http://www.supportdetails.com/. SupportDetails ist eine Seite die nichts anderes tut als Daten über den Besucher zu sammeln - also ungefähr das gleiche was auch Google Analytics und Co machen, <a href="http://blog.himmelrath.net/tec/prog/tools-fur-webentwickler-und-designer/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich habe drei nette online Tools gefunden die einem das Leben als Web-Entwickler/-Designer leichter machen.</p>
<h3>Kunde hat Anzeigeprobleme mit der Webseite?</h3>
<p>Schicke ihn nach <a href="﻿﻿http://www.supportdetails.com/">﻿﻿http://www.supportdetails.com/</a>. SupportDetails ist eine Seite die nichts anderes tut als Daten über den Besucher zu sammeln &#8211; also ungefähr das gleiche was auch Google Analytics und Co machen, nur eben nicht um Statistiken zu erzeugen, sondern um den individuellen Besucher zu analysieren. Genau diese Daten benötigt man oft um Kundenprobleme nach zu stellen &#8211; wenn der Kunde das nächste mal so etwas sagt wie &#8220;bei mir funktioniert die Navigation nicht&#8221;, dann schickt ihn auf SupportDetailsund lasst euch die Daten per Email zusenden, dazu muss der Kunde dann einfach das Formular ausfüllen.<br />
Datenschutzbedenken? Hört sich böse an? Nein, ja, vielleicht. <img src='http://blog.himmelrath.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Was gesammelt werden könnte wären Informationen über meinen durchschnittlichen Kunden und, dass ich in diesem Bereich arbeite &#8211; sehe ich beides nicht als kritisch an.</p>
<h3>Du willst schnell ein Photo online stellen, aber dir fehlt gerade die Bildbearbeitung?</h3>
<p>Dann mach es halt auf <a href="http://mugtug.com/darkroom/">http://mugtug.com/darkroom/</a>. Man könnte sich zwar auch schnell <a href="http://portableapps.com/apps/graphics_pictures/gimp_portable">The Gimp Portable</a> herunterladen, aber manchmal geht es ja doch nur um eine schnelle Helligkeitskorrektur oder den Weißabgleich, da wäre das Overkill. Darkroom ist quasi <span title="Boah, bin ich witzig heute...">Lightroom Light</span> &#8211; für schnelle Änderungen die sich auf das komplette Foto beziehen eine sinnvolle Sache, wer noch Stellen am Bild korrigieren muss, der nimmt dann doch lieber The Gimp oder PS.</p>
<h3>Du willst jemanden einstellen, weißt aber nicht ob er coden kann?</h3>
<p>Mache eine einfache Interview-Seite auf <a href="http://i.seemikecode.com/">http://i.seemikecode.com/</a>. Hier bekommst du zwei Links: 1. Die Interviewer-Seite 2. Die Eingabe-Seite. Einen Link zu Letzterer schickst du deinem Bewerber zusammen mit einem Code-Problem, dass er lösen soll und kannst ihm fast in Echtzeit dabei zusehen wie er das Problem löst. So erkennt man die Copy&amp;Paste-Genies schnell.<br />
Die offensichtliche Alternative ist natürlich eine Online-Konferenz mit Bildschirmfreigabe, aber dafür braucht man Tools auf beiden Seiten, hier benötigt man nur einen Browser.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/tools-fur-webentwickler-und-designer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Linux] Festplatte sicher löschen</title>
		<link>http://blog.himmelrath.net/tec/comp/festplatte-loeschen/</link>
		<comments>http://blog.himmelrath.net/tec/comp/festplatte-loeschen/#comments</comments>
		<pubDate>Thu, 06 May 2010 20:41:24 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Festplatte]]></category>
		<category><![CDATA[Löschen]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=618</guid>
		<description><![CDATA[Wenn man eine Festplatte wegwirft oder verkauft, will man ja normalerweise sicher gehen, dass keine persönlichen Daten mehr von dieser Platte ausgelesen werden können - einfaches "Löschen" reicht da nicht, weil "löschen" nur bedeutet, dass der Verweis im Dateisystem auf die Daten entfernt wird, jedoch die Daten selbst werden nicht <a href="http://blog.himmelrath.net/tec/comp/festplatte-loeschen/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Wenn man eine Festplatte wegwirft oder verkauft, will man ja normalerweise sicher gehen, dass keine persönlichen Daten mehr von dieser Platte ausgelesen werden können &#8211; einfaches &#8220;Löschen&#8221; reicht da nicht, weil &#8220;löschen&#8221; nur bedeutet, dass der Verweis im Dateisystem auf die Daten entfernt wird, jedoch die Daten selbst werden nicht überschrieben (das wäre nämlich ziemlich langsam). Um nun also sicher zu gehen, kann man die Festplatte mit Daten voll schreiben, das ist einfach und effektiv, denn aller Paranoia zum Trotz hat es bisher niemand geschafft einfach überschriebene Daten wiederherzustellen.</p>
<p>(Im folgenden muss man natürlich /dev/DEVICE noch durch das echte Festplatten-Gerät ersetzen, also sowas wie /dev/sdb oder /dev/sdc &#8211; aber bitte vorher sicher gehen, dass man nicht die falsche Platte platt macht z.B. indem man die Platte mountet und dann mit &#8220;df -h&#8221; oder &#8220;mount&#8221; überprüft welches Gerät wirklich an der Stelle hängt. Aber Vorsicht: Nicht im normalen System das Gerät raussuchen, dann mit Livesystem von CD starten und die Platte überschreiben, da könnte sich der Gerätenahme ändern.)</p>
<p>Die einfache Version schreibt die Festplatte mit Nullen voll:</p>
<p><code>dd if=/dev/zero of=/dev/DEVICE bs=1M</code></p>
<p>bzw. mit pseudo-zufälligen Daten:</p>
<p><code>dd if=/dev/urandom of=/dev/DEVICE bs=1M</code></p>
<p>Wichtig: /dev/<span style="text-decoration: underline;"><strong>u</strong></span>random benutzen, sonst kann es ziemlich lange dauern, /dev/random wartet nämlich bis das System wirklich halbwegs zufällige Daten gesammelt hat und gibt diese dann aus, während /dev/<span style="text-decoration: underline;"><strong>u</strong></span>random (u für &#8220;unlocked&#8221;) nicht wartet und dann weniger sichere Zufallszahlen liefert &#8211; was bei dieser Verwendung aber relativ Schnuppe ist.</p>
<p>Mit Hilfe des bs-Parameters kann man ein wenig an der Geschwindigkeit schrauben &#8211; einfach mal ein paar Werte ausprobieren und 20 Sekunden schreiben lassen, dann mit Strg-C abbrechen &#8211; dd zeigt dann an wie schnell geschrieben wurde in MB/sec.</p>
<p>Wenn man die Festplatte gleich noch testen will während man sie überschreibt, gibt es folgende Möglichkeit:</p>
<p><code>badblocks -w -t random /dev/DEVICE</code></p>
<p>Dieses Programm schreibt nämlich nicht nur alle Sektoren voll, sonder überprüft hinterher auch ob die Daten genau so wieder gelesen werden können. Also die perfekte Möglichkeit Daten zu vernichten, wenn man eine Festplatte verkaufen oder selbst weiter nutzen möchte. Diese Methode ist natürlich langsamer als die dd-Variante oben.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/festplatte-loeschen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zen Coding</title>
		<link>http://blog.himmelrath.net/tec/comp/zen-coding/</link>
		<comments>http://blog.himmelrath.net/tec/comp/zen-coding/#comments</comments>
		<pubDate>Mon, 03 May 2010 09:24:17 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[rapid prototyping]]></category>
		<category><![CDATA[Webauthoring]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=614</guid>
		<description><![CDATA[Nur ganz kurz. Interessant für alle die HTML per Hand schreiben und nicht mit irgend einem WYSIWYMGIYAL-Editor arbeiten (What you see is what you might get if you are lucky): Zen Coding

Zen Coding ermöglicht es nach einer kurzen Einarbeitungszeit (sehr kurz, wenn man CSS kennt) unheimlich schnell HTML-Strukturen zu bauen. <a href="http://blog.himmelrath.net/tec/comp/zen-coding/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Nur ganz kurz. Interessant für alle die HTML per Hand schreiben und nicht mit irgend einem WYSIWYMGIYAL-Editor arbeiten (What you see is what you might get if you are lucky): <a href="http://code.google.com/p/zen-coding/">Zen Coding</a></p>
<p>Zen Coding ermöglicht es nach einer kurzen Einarbeitungszeit (sehr kurz, wenn man CSS kennt) unheimlich schnell HTML-Strukturen zu bauen. Das <a href="http://www.downloadsquad.com/2010/04/30/if-you-code-html-zen-coding-will-change-your-life/">Demostrationsvideo auf dieser Seite</a> hat mich erst einmal umgehauen.</p>
<p>Mal sehen wie es sich im täglichen Gebrauch schlägt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/zen-coding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple backups with windows 2</title>
		<link>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-2/</link>
		<comments>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-2/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 20:44:34 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Rar]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Zip]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=432</guid>
		<description><![CDATA[Update: I made additional changes to the script which are a real improvement for my daily use. The current version is "0.3d [2010-01-08]"

Last week I wrote about a simple way to zip all subfolders of a specific folder which I use for my simple archiving strategy at work. Today I <a href="http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-2/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen &#8211; um in der Übung zu bleiben.</p>
<p><strong>Update:</strong> I made additional changes to the script which are a real improvement for my daily use. The current version is &#8220;0.3d [2010-01-08]&#8221;</p>
<p>Last week I wrote about a <a href="http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-1/">simple way to zip all subfolders of a specific folder</a> which I use for my simple archiving strategy at work. Today I would like to show you a simple script I wrote which backups files listed in a configuration file using rar and puts them into a single archive named after the current date and time. I wrote it to be used as a scheduled task that runs every few hours on some windows machine that is always on.<sup>1</sup></p>
<p>I will not show the complete code here, since it&#8217;s about 150 lines. You can download the whole <a href="/wp-content/uploads/2009/12/2010-01-08-FileBackup.zip">script package as .zip-archive</a>.</p>
<p>The archive contains four files:</p>
<table border="0">
<tbody>
<tr>
<th>INFO-README.TXT</th>
<td>Some Information about the script</td>
</tr>
<tr>
<th>KPSBackupList.ini</th>
<td>The file containing the list of files to backup. Can be changed in the KPSFileBackup.bat</td>
</tr>
<tr>
<th>startHidden.vbs</th>
<td>Just a simple Script file to start the batch file without showing a console-window</td>
</tr>
<tr>
<th>FileBackupConfig.bat</th>
<td>The batch config file. It contains the config-section where you can change the settings as explained below</td>
</tr>
<tr>
<th>KPSFileBackup.bat</th>
<td>The actual batch file, you may run.</td>
</tr>
</tbody>
</table>
<p>The following settings are available:</p>
<table border="0">
<tbody>
<tr>
<th>backupFilelist</th>
<td>The file containing the list of all files that should be backed up</td>
</tr>
<tr>
<th>destinationDir</th>
<td>Destination directory where all backup files are stored</td>
</tr>
<tr>
<th>prefix</th>
<td>The prefix is put before the date in the name of the backup file</td>
</tr>
<tr>
<th>retryTime</th>
<td>Number of seconds to wait before retrying if one of the files was open and could therefore not be put into the archive. This is an approximate value since I hadd to use a workaround to put the script to sleep.</td>
</tr>
<tr>
<th>maxRetries</th>
<td>Number of times the script will retry if one of the files was open</td>
</tr>
<tr>
<th>backupsToKeep</th>
<td>The number of old backups to keep</td>
</tr>
<tr>
<th>rarPath</th>
<td>Path to the RAR<sup>2</sup> executable file</td>
</tr>
</tbody>
</table>
<p><sup>1</sup> The reason for using a batch script and a Windows machine is simple: They do not use linux here. Though I might get my own litte Debian VM in the future, for now Windows has to suffice.</p>
<p><sup>2</sup> The reason for using RAR is simple: It comes preinstalled on all machines here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barcamp Mainz 09 &#8211; #bcmz &#8211; Mein Rückblick</title>
		<link>http://blog.himmelrath.net/tec/comp/barcamp-mainz-09-bcmz-mein-ruckblick/</link>
		<comments>http://blog.himmelrath.net/tec/comp/barcamp-mainz-09-bcmz-mein-ruckblick/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 23:40:55 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Barcamp]]></category>
		<category><![CDATA[bcmz]]></category>
		<category><![CDATA[Garbage Collection]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mainz]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Prototyping]]></category>
		<category><![CDATA[relevanZer]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=397</guid>
		<description><![CDATA[Mein Kollege hat mich nachdem er mir vom Heidelberger Barcamp erzählt hat auf das Mainzer Barcamp geschleppt - zumindest den Samstag konnten wir mitnehmen und an jeweils 6 Vorträgen teilnemhen. Es hat sich gelohnt.

Update: Hier gibt es eine Übersicht über einige der berichtenden Blogs direkt von der Barcamp Orga.

Update: Ralf <a href="http://blog.himmelrath.net/tec/comp/barcamp-mainz-09-bcmz-mein-ruckblick/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Mein <a href="http://twitter.com/nassnasenwombat">Kollege</a> hat mich nachdem er mir vom Heidelberger <a href="http://de.wikipedia.org/wiki/BarCamp">Barcamp</a> erzählt hat auf das <a href="http://www.barcampmainz.de/">Mainzer Barcamp</a> geschleppt &#8211; zumindest den Samstag konnten wir mitnehmen und an jeweils 6 Vorträgen teilnemhen. Es hat sich gelohnt.</p>
<p><strong>Update:</strong> Hier gibt es eine <a href="http://www.barcampmainz.de/index/rueckblick/blogs.html">Übersicht über einige der berichtenden Blogs</a> direkt von der Barcamp Orga.</p>
<p><strong>Update: </strong>Ralf von <a href="http://carrot-solutions.de/">Carrot Business Solutions</a> (Der vom Screencast-Vortrag) berichtet über <a href="http://blog.carrot-solutions.de/2009/11/29/das-barcamp-mainz-oder-der-twittersprache-bekannt-als-bcmz">seine Erfahrungen auf dem Barcamp</a>.<br />
<strong>Update:</strong> Noch ein Blogeintrag als <a href="http://grochtdreis.de/weblog/2009/11/30/rueckblick-auf-das-barcamp-mainz/">Rückblick auf das Barcamp</a>. Hier geht es vor allem um die Unterschiede zu anderen Barcamps.<br />
<strong>Update:</strong> Noch ein <a href="http://jedi-creation.de/blog/2009/11/barcamp-mainz-feedback/">geblogter Rückblick</a>.<br />
<strong> Update:</strong> Es gibt auch kritische Stimmen. Allerdings nur im Detail. Dieser Blogger <a href="http://www.sauerspace.com/2009/11/30/vorstellungsrunde-beim-barcamp-jammern-auf-hohem-niveau/">bemängelt das Fehlen der Vorstellungsrunde</a>. <a href="http://blog.paulinepauline.de/2009/11/30/das-leise-sterben-der-barcamp-vorstellungsrunde/">Dieser auch</a>. Und eine <a href="http://www.humanizedinterface.de/2009/11/barcamps-und-vorstellungsrunden/">Antwort darauf</a> gibt es auch bereits.</p>
<p><strong>Update:</strong> Hier <a href="http://franztoo.de/?p=113">noch ein netter Artikel</a> der noch einmal erklärt was so ein BarCamp überhaupt ist und woher es kommt.</p>
<p>Ich habe mir nen Wolf <a style="font-style: italic;" title="heißt es eigentlich twittern oder tweeten?" href="http://twitter.com/himmelrath">getwittert</a>, ein mögliches neues Thema für meine Magisterarbeit gefunden, ein cooles Projekt kennen gelernt, dass einem die Informationsflut filtert, gelernt wie Garbage Collection unter Java funktioniert (und funktionieren wird), Dinge über Schwärme gelernt, und was von JavaFX gehört. Aber der Reihe nach&#8230;</p>
<table border="0">
<tbody>
<tr>
<th>Wo war ich?</th>
<td>Auf dem Barcamp in Mainz.</td>
</tr>
<tr>
<th>Was ist das?</th>
<td>Eine Konferenz, bei der die Teilnehmer Themen vorbereiten, vorschlagen und dann abgestimmt wird was gehört wird.</td>
</tr>
<tr>
<th>Und sonst?</th>
<td>Es gibt Kaffee, Frühstück, Mittagessen, Kuchen, Getränke, T-Shirts und Werbegeschenke.</td>
</tr>
<tr>
<th>Was kostet das?</th>
<td>Nix.</td>
</tr>
<tr>
<th>Wie finanziert sich das ganze?</th>
<td>Sponsoren geben viel Geld, damit Ihre Namen dort stehen und sie schicken selbst Teilnehmer mit Vorträgen.</td>
</tr>
<tr>
<th>Also nur Werbung?</th>
<td>Nein, aber man sollte die Vorträge zu Sponsorenthemen schon kritisch hinterfragen. Die sind aber auch informativ.</td>
</tr>
</tbody>
</table>
<p>Die Idee ist so simpel wie genial &#8211; hol Dir die Teilnehmer, lass Sie die Arbeit für die Themen machen und das Programm bestimmen &#8211; auf dich kommt ein Haufen Organisationsarbeit zu, aber niemand kann sich über schlechte Themen beschweren, hätte er ja selbst ändern können. Dementsprechend motiviert sind dann die einzelnen Teilnehmer auch: Es gab viele Themenvorschläge und 30 davon konnten angenommen werden (es standen jeweils 3 Vorlesungssähle und 2 Seminarräume bei 6 Vortragszeiten zur Verfügung). Die Sessions sind 45 Minuten lang, sollten aus 30 Minuten Vortrag und 15 Minuten Diskussion bestehen und nicht mehr als 5 Minuten überziehen.<br />
Die Teilnehmer waren auch durchweg motiviert und man hatte keine Probleme einfach mal mit wildfremden Leuten ein Gespräch anzufangen &#8211; &#8220;Du&#8221; hießen sowieso alle.<br />
Mein Programm am Samstag sah dann so aus:</p>
<table border="0">
<tbody>
<tr>
<th style="width: 50px;">05:00</th>
<td><a href="https://twitter.com/himmelrath/status/6133864008">Aufstehen</a>, duschen.</td>
</tr>
<tr>
<th>05:45</th>
<td>Ralf anrufen, wo er bleibt, ihn dabei wecken&#8230;</td>
</tr>
<tr>
<th>06:00</th>
<td>An der Bushaltestelle warten, feststellen, dass weder Bus noch Bahn jetzt noch pünktlich am Hbf wären.</td>
</tr>
<tr>
<th>06:30</th>
<td>Doch das Auto nehmen.</td>
</tr>
<tr>
<th>08:00</th>
<td>Ankunft in Mainz. Schlecht geparkt &#8211; 20min Fußweg zum Camp, dabei verlaufen&#8230;</td>
</tr>
<tr>
<th>08:40</th>
<td>Endlich. <a href="https://twitter.com/himmelrath/status/6136404590">Barcamp</a>.</td>
</tr>
<tr>
<th>09:00</th>
<td><a href="https://twitter.com/himmelrath/status/6136777420">Kostenloses Frühstück.</a></td>
</tr>
<tr>
<th>09:30</th>
<td><a href="https://twitter.com/himmelrath/status/6136592045">Sessionauswahl</a> (Vorstellung und Abstimmung).</td>
</tr>
<tr>
<th>11:00</th>
<td>Vortrag: <strong>Wie kann man Usability im Web (automatisch) messen?</strong></td>
</tr>
<tr>
<th>12:00</th>
<td>Vortrag: <strong>Einführung in JavaFX</strong></td>
</tr>
<tr>
<th>13:00</th>
<td>Mittagspause</td>
</tr>
<tr>
<th>14:00</th>
<td>Vortrag: <strong>Garbage Collection Algorithmen</strong></td>
</tr>
<tr>
<th>15:00</th>
<td>Vortrag: <strong>Das Schwarm Projektmanagement</strong></td>
</tr>
<tr>
<th>16:15</th>
<td>Vortrag: <strong>Der Kampf um Aufmerksamkeit &#8211; ein Vorschlag für persönlich relevante Nachrichten</strong> (<a href="http://relevanzer.com">relevanZer</a>)</td>
</tr>
<tr>
<th>17:15</th>
<td>Vortrag: <strong>Rapid Prototyping mit jQuery</strong></td>
</tr>
<tr>
<th>18:30</th>
<td>Ende. Party machen wir nicht mehr mit. Abfahrt nach Heidelberg.</td>
</tr>
</tbody>
</table>
<p>Die Vorträge haben mir einiges gebracht, allein den Stichworten die ich mir auf Karteikarten geschrieben habe hinterher zu googeln wird mich Wochen kosten &#8211; ganz zu schweigen davon das auch noch auszuprobieren.</p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Wie kann man Usability im Web (automatisch) messen?</strong></div>
<p>Der Vortrag von einem <a href="http://www.informatik.uni-mainz.de/~gotti/publications.php">Mainzer Informatiker</a> wurde von ihm schon als akademisch angekündigt und obwohl es mich interessiert, habe ich mir nicht allzu viele Hoffungen auf einen wirklich interessanten Beitrag gemacht. Ich sollte überrascht werden &#8211; nicht nur war der Vortrag kurzweilig er enthielt vor allem das für mich als Sprachwissenschaftler äußerst interessante Thema automatische Textanalyse und stellte zudem noch ein paar einfache theoretische Möglichkeiten zur Verbesserung der Webseitenusability vor. Einer der beiden Vorträge bei dem ich mir wirklich viele Notizen gemacht habe. &#8211; <a href="https://twitter.com/himmelrath/status/6138904522">tweet</a></p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Einführung in JavaFX</strong></div>
<p>Wie der &#8220;Sunday&#8221; vor ein paar jahren in Aachen eini wirkliche Zeitverschwendung. Viele marketingfolien und ein paar Hello-World Codebeispiele. Dazu kam noch, dass mir das Konzept der auf Java aufgesetzten, pseudo-typfreihen Sprache mit eigener Syntax so gar nciht gefällt. Irgendwie scheint es Sun jedesmal zu schaffen mich mit seinen &#8220;Evangelists&#8221; davon zu überzeugen, dass sie die falsche Firma sind um ein so geniales Konzept wie Java zu tragen. Meinem Unmut habe ich dann <a href="https://twitter.com/himmelrath/status/6139167480">per</a> <a href="https://twitter.com/himmelrath/status/6139217861">Twitter</a> <a href="https://twitter.com/himmelrath/status/6139265652">Luft</a> <a href="https://twitter.com/himmelrath/status/6139378983">gemacht</a>.</p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Garbage Collection Algorithmen</strong></div>
<p>Auch ein Java-Thema, aber mit deutlich interessanterem Vortrag. Diesmal auch nicht von einem Evangelist, sondern einem <a href="http://www.dreamflasher.de/">Mannheimer Informatikstudenten</a> der mir und 4 weiteren Teilnehmern (und dem anwesenden Sun-Vertreter) die Arbeitsweise eines Garbage-Collectors erklärte und dabei auf die spezifische Implementierung in der JVM in derzeitigen und der kommenden 7er-Version einging. Der Sun-Mann der hier neben mir saß war, nebenbei bemerkt, nicht der JavaFX-Vortragende, sondern dessen Kollege. Er wirkte deutlich arroganter, dafür aber auch kompetenter &#8211; damit kann ich besser leben. Durch die geringe Teilnehmerzahl wurde diese Session quasi zu einer intensiven Frage-Stunde in der sowohl der Vortragende auf spezifische Rückfragen einging, als auch nähere Erläuterungen vom Herstellervertreter kamen. Bei dieser Session hatte ich gar keine Möglichkeit mitzuschreiben, dafür war es zu intensiv. Bisher hatte ich mich nicht damit auseinandergesetzt was der GC tatsächlich im Speicher anstellt, sondern ihn einfach benutzt (bzw. mich auf ihn verlassen) &#8211; jetzt habe ich immerhin ein besseres Gefühl dabei. &#8211; Nebenbei habe ich gelernt wofür der Name des ersten T-Mobile-Android Handys G1 steht &#8211; augenscheinlich für &#8220;Garbage First&#8221;. <img src='http://blog.himmelrath.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  &#8211; <a href="https://twitter.com/himmelrath/status/6141482274">tweet</a></p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Das Schwarm Projektmanagement</strong></div>
<p>Nagut, ich habe nicht wirklich geglaubt, dass ich hier in 45 Minuten viel über Projektmanagement lerne, aber zumindest ein paar Hinweise worauf in großen Projekten zu achten ist oder ähnliches hätte ich nett gefunden. Leider wurde mir erst nach mehreren Minuten Vortrag klar, dass es sich beim Vortragenden um den Vertreter des Hauptsponsors (Samsung) handelte&#8230; Der erzählte dann munter drauf los von einem Pharao der eine Pyramide bauen ließ und dass das ja tolles Projektmanagement war, von den Problemen, <a href="http://twitter.com/matzelkoenig/statuses/6141781303">Motivationsmöglichkeiten</a> und zeigte uns so fast eine halbe Stunde lang Bildchen.  Danach kam er dann zu seiner Erzählung über das Samsung-Team, dass er als Projektleiter managed und damit zum eigentlichen Thema des Vortrags. Nur leider war das ganze dann eigentlich eher eine Erzählung darüber wie er als Zuschauer seinen vollkommen frei arbeitenden Mitarbeitern zuguckt und hin und wieder etwas twittert &#8211; wenn es hoch kommt also ein (closed) Community Manager Posten, aber leider nichts wirklich sinnvolles über Projektmanagement. Die zweifel waren dem Publikum anzumerken, die Aussagen des Vortragenden wurden attakiert und seine Position komplett in Frage gestellt. Was fehlte war die klare Aussage, dass ein Schwarm sich eben nicht wirklich managen lässt &#8211; für den kreativen Prozess im Team mag eine Schwarmstruktur ein grandioses Konzept sein, aber leider eigenen sich wohl 90% aller &#8220;real-world&#8221; Projekte nicht oder nur zu einem ganz kleinen Teil für eine solche Vorgehensweise. &#8211; <a href="https://twitter.com/himmelrath/status/6142089009">tweet</a></p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Der Kampf um Aufmerksamkeit &#8211; ein Vorschlag für persönlich relevante Nachrichten</strong></div>
<p><a href="https://twitter.com/domsom">Den Vortragenden</a> hatte ich bereits beim Frühstück getroffen und er hatte mir schon einmal grob das Konzept seiner Idee erklärt &#8211; mir war also vollkommen klar, dass dieser Vortrag nicht langweilig werden würde. Perfekt präsentiert mit <a href="http://prezi.com/">Prezi</a> und einem souveränen Vortragsstil (den Vortrag hat er bestimmt vor dem Spiegel geübt) wurde das Problem der Informationsüberflutung bei intensiver Nutzung von Social Networks und Twitter dargestellt und bisherige Lösungsansätze (Rating-Systeme) vorgestellt. Das Problem: Wenn man 300 RSS-Feeds abboniert hat und noch einmal 200 Leuten auf Twitter folgt, hat man nun einmal das Problem nicht alles lesen zu können und muss eine Vorauswahl treffen. Bisherige Systeme machen das über ein allgemeines Rating-System (z.B. je öfter ein Artikel in Twitter erwähnt wird, desto besser muss er wohl sein) bei dem man sich also quasi die Mainstream-Meinung zeigen lassen kann. Das nahm dann auch den <a href="https://twitter.com/himmelrath/status/6143378043">ersten Teil des Vortrags</a> ein. Das in diesem Vortrag vorgestellte neue System benutzt hingegen ein trainierbares Tagging-System, dass die RSS-Feeds und Twitter-Nachrichten des Benutzers automatisiert auswertet und über eine Textanalyse herausfindet, welche Beiträge den Benutzer am wahrscheinlichsten interessieren. Noch ist das System namens <a href="http://relevanzer.com/">relevanZer</a> (nein, hat nichts mit der Wikipedia-Debatte zu tun, auch wenn das von Teilnehmern vorgeschlagen wurde) im geschlossenen Betatest auf dem &#8220;Stromsparrechner&#8221; des Erfinders, er wird jedoch Zugänge an interessierte Teilnehmer verteilen. Ich hätte ja auch gerne einen, aber wahrscheinlich hätte ich in den nächsten Monaten nicht genügend Zeit um das System wirklich intensiv zu testen &#8211; aber ich werde es definitiv<a href="https://twitter.com/himmelrath/status/6143727309"> im Auge behalten</a>, da ist <a href="https://twitter.com/himmelrath/status/6143941744">Potential</a>.</p>
<div style="margin-left: 60px; margin-top: 20px;"><strong>Rapid Prototyping mit jQuery</strong></div>
<p>Zum Ende zeigte dann <a href="http://paulbakaus.com/">Paul Bakaus</a> noch wie, warum und was man so alles schnell und beeindruckend mit <a href="http://jqueryui.com/">jQuery</a> machen kann und wieso es auch als Webentwickler nicht schadet herumzuspielen und neues auszuprobieren. Interessant fand ich vor allem seine Philosophie hinter dem prototyping nämlich, dass es überhaupt nicht darauf ankommt ob etwas funktioniert, sondern auf die Illusion; quasi die Anwedung der vollen psychologischen Trickkiste des Interface-Designs auf den Kunden. Zwar hagelte es nach seinem sehr lockeren und unterhaltsamen Vortrag mit dem &#8220;Greasemoneky&#8221; (sic) konstruktive Kritik aus dem Publikum, doch der Vortrag wurde &#8211; so mein Eindruck &#8211; durchweg positiv aufgenommen. Auch wenn er für meinen Geschmack das Wort &#8220;Millionenauftrag&#8221; deutlich zu oft verwendet hat. Man hatte zumindest das Gefühl, dass der Mann weiß wovon er spricht und nicht einfach nur leeres Marketinggeblubber aneinander reiht &#8211; außerdem haben sein Vortragsstil und die beeindruckenden Webkit/CSS3-Beispiele durchaus dazu beigetragen die Lust am experimentellen Designen wieder zu wecken. Bei diesem Vortrag habe ich mir eine meiner Notizseiten randvoll mit Stichworten geschriebenm die es nun alle zu googlen gilt. &#8211; <a href="https://twitter.com/himmelrath/status/6145091765">tweet</a></p>
<p><strong>Fazit</strong></p>
<p>Das Barcamp war eine <a href="https://twitter.com/himmelrath/status/6145620523">grandiose Erfahrung</a>: Die Organisation war klasse, die Teilnehmer absolut motiviert und offen und die Themen waren äußerst interessant. Vor allem dafür, dass die Teilnahmekosten gerade einmal die Anreise umfassten war das eine unschlagbare Erfahrung für mich. Ich werde &#8211; sofern ich einen Platz bekomme -beim nächsten mal wieder dabei sein. Das Barcamp selbst ist natürlich auch mit einem <a href="http://twitter.com/bcmainz">Twitter-Account</a> am Start, damit man keine Neuigkeit verpasst.</p>
<p>Ich wünsche allen Teilnehmern die auch am Sonntag dabei sein können einen Tag der dem heutigen in nichts nachsteht.</p>
<p><span style="font-size: 0.9em; font-style: italic;">(Da es schon spät ist, werde ich jetzt nicht noch einmal drüber lesen &#8211; wer Fehler findet darf sie behalten &#8211; ich bessere die dann vielleicht morgen aus&#8230; gute Nacht.)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/barcamp-mainz-09-bcmz-mein-ruckblick/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple backups with windows 1</title>
		<link>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-1/</link>
		<comments>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-1/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 14:51:08 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[Rar]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Zip]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=355</guid>
		<description><![CDATA[At my current workplace, working with Linux (or anything other than windows) seems to be something no one would even bother to think about.  So I had to dig into the world of Windows Batch Scripting in order to create those little tools that make my life  just a bit easier when using <a href="http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-1/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen &#8211; um in der Übung zu bleiben.</p>
<p>At my current workplace, working with Linux (or anything other than windows) seems to be something no one would even bother to think about.  So I had to dig into the world of Windows Batch Scripting in order to create those little tools that make my life  just a bit easier when using linux.</p>
<p>The first thing I had to do was creating a script that simply backups folders. I have a folder which contains other folders that should be archived &#8211; I usually zip (or 7zip) them and move them to the backup space later, which is a fairly easy task using a bash-script and nautilus actions.</p>
<p>Under windows it&#8217;s not that much harder to accomplish. (In the following example I used WinRAR to compress the files because that&#8217;s what we use at work.)</p>
<p>The first thing I needed was of course the batch-file that does the actual work. Here it is:</p>
<pre>
@echo off

rem ===================== Begin Configuration =====================
rem !!! Do not use quotes for the values of the following variables !!!

rem Path to the WinRAR executable file
set winrarPath=%PROGRAMFILES%\WinRAR\WinRAR.exe

rem ====================== End Configuration ======================

rem Please only edit after this line if you know exactly what you are doing.

set curVer=0.1 [2009-11-26]

rem ======================== Begin Script ========================

rem Tell the user which version of the tool they use
echo.
echo                     Mi ArchiveSubfolders version %curVer%
echo.
echo.

if not exist "%winrarPath%" (
    echo Cannot find WinRAR exe file: %winrarPath%
    goto eof
)

set dir=%*
if not exist "%dir%" (
    echo The directory "%dir%" cannot be found
    goto eof
)

set dateString=%DATE:~-4,4%-%DATE:~-7,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

cd "%dir%"
for /D %%a in (*) do (
    rem Creating the archive
    echo Archiving "%%~na"...
    "%winrarPath%" M -afzip -ibck -inul -m5 "%dateString%-%%~na.zip" "%%a"
)

echo.
echo Archiving done

:eof
</pre>
<p>Now that is a nice, simple script, but what should I do with it? I wanted it to be useable directly in the explorer context-menu, so I made a small registry-entry. This is the exported .reg-file:</p>
<pre>
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\archiveSubfolders]
@="Mi: Archive Subfolders (ZIP)"

[HKEY_CLASSES_ROOT\Folder\shell\archiveSubfolders\Command]
@="cmd /c \"\"%%ProgramFiles%%\\MiTools\\archiveSubfolders\\archiveSubfolders.bat\"\" %1"
</pre>
<p>Now I wanted a simple installation-script, for really lazy people like me:</p>
<pre>
@echo off

set installDir=%PROGRAMFILES%\MiTools\archiveSubfolders

if not exist "%installDir%" (
    mkdir "%installDir%"
)

copy archiveSubfolders.bat "%installDir%"
copy "ArchiveSubfolders Context Menu Entry.reg" "%installDir%"

regedit /S "ArchiveSubfolders Context Menu Entry.reg"

echo Installation complete.

:eof
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/simple-backups-with-windows-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Highlight PHP Code</title>
		<link>http://blog.himmelrath.net/tec/prog/wordpress-highlight-php-code/</link>
		<comments>http://blog.himmelrath.net/tec/prog/wordpress-highlight-php-code/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 15:13:14 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=307</guid>
		<description><![CDATA[I like to write about programming, and since I am using Wordpress and writing plugins for it, PHP is the language of choice when it comes to blog-related development.

I wanted to put my PHP-Code into my entries and I wanted it to look nice, which means mono-spaced font and syntax <a href="http://blog.himmelrath.net/tec/prog/wordpress-highlight-php-code/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen &#8211; um in der Übung zu bleiben.</p>
<p>I like to write about programming, and since I am using WordPress and writing plugins for it, PHP is the language of choice when it comes to blog-related development.</p>
<p>I wanted to put my PHP-Code into my entries and I wanted it to look nice, which means mono-spaced font and syntax highlighting. The first one was fairly easy to archieve by just changing the CSS. Whenever I put code into my blog, I write it between &lt;pre&gt; and &lt;/pre&gt;, so I just had to change the CSS for the pre-element:</p>
<pre>
 pre {
    height: auto;
    overflow: auto;
    color: #EEE;
    padding: 5px;
    margin: 10px;
    scroll: auto;
    font-family: Courier New, monospace;
    font-weight: bold;
    white-space: pre;
    font-size: 9pt;
    line-height: 10pt;
}</pre>
<p>The highlighting however must be done on the server side by PHP, so I had to write another (in fact two) filter-function: </p>
<pre><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">highlightCode</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">false&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;pre&gt;'</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$content</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$content&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace_callback</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'|\&lt;pre\&gt;(.*?)\&lt;/pre\&gt;|is'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'highlightCodeCallback'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$content<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$content</span><span style="color: #007700">;<br />}<br /><br />function&nbsp;</span><span style="color: #0000BB">highlightCodeCallback</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">false&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">strpos</span><span style="color: #007700">(</span><span style="color: #0000BB">$matches</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">'&lt;&nbsp;?php'</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$matches</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'|\&lt;code\&gt;\s*\&lt;/code\&gt;|is'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'/*§§BR§§*/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$code<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">strip_tags</span><span style="color: #007700">(</span><span style="color: #0000BB">$code</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Wordpress&nbsp;adds&nbsp;the&nbsp;space&nbsp;when&nbsp;saving<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&lt;&nbsp;?php'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&lt;?php'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$code</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">highlight_string</span><span style="color: #007700">(</span><span style="color: #0000BB">$code</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'/*§§BR§§*/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"\n\n"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$code</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">htmlspecialchars_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$code</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&lt;?php'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&amp;lt;?php'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$code</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #DD0000">'&lt;pre&gt;'</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$code&nbsp;</span><span style="color: #007700">.</span><span style="color: #DD0000">'&lt;/pre&gt;'</span><span style="color: #007700">;<br />}</span>
</span>
</code></pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/wordpress-highlight-php-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: Filter certain categories on main page</title>
		<link>http://blog.himmelrath.net/tec/prog/wordpress-filter-categories/</link>
		<comments>http://blog.himmelrath.net/tec/prog/wordpress-filter-categories/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 17:11:03 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter Tools]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=295</guid>
		<description><![CDATA[I am using the Twitter Tools plugin to automatically create Tweets for my blog entries and vice versa to have some kind of tweet archive on my blog. That works flawlessly.

The only problem is: I tweet too much. I only want to show five entries on my front page, which <a href="http://blog.himmelrath.net/tec/prog/wordpress-filter-categories/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen &#8211; um in der Übung zu bleiben.</p>
<p>I am using the <a href="http://alexking.org/projects/wordpress/readme?project=twitter-tools">Twitter Tools</a> plugin to automatically create Tweets for my blog entries and vice versa to have some kind of tweet archive on my blog. That works flawlessly.</p>
<p>The only problem is: I tweet too much. I only want to show five entries on my front page, which basically means, that my last real blog entry is gone after one or two days, because of the twitter entries. The solution: Entries from the Tweets category should not be visible on the front page.</p>
<p>I had to extend my my-blog-exclusively-plugin with a function that filters the posts that appear on the front page, for this I added a filter to the hook &#8220;<strong>the_posts</strong>&#8221; which is called quite early in the loop before anything has been done to the posts. The posts that would be shown on the front page are given to the callback-function as first parameter in the form of an array. Here is the code:</p>
<pre><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF9900">/**/<br />//&nbsp;Filter&nbsp;post&nbsp;from&nbsp;the&nbsp;category&nbsp;Tweets&nbsp;on&nbsp;front&nbsp;page<br /></span><span style="color: #0000BB">add_filter</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'the_posts'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'filterTweets'<br /></span><span style="color: #007700">);&nbsp;</span><span style="color: #FF9900">/**/<br /><br /></span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">filterTweets</span><span style="color: #007700">(</span><span style="color: #0000BB">$posts</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Filter&nbsp;only&nbsp;on&nbsp;the&nbsp;front&nbsp;page!<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">is_front_page</span><span style="color: #007700">())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$posts</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tweetCategoryName&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Tweets'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$numVisiblePosts&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">5</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$postsToShow&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filteredPosts&nbsp;</span><span style="color: #007700">=&nbsp;array();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$num&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$posts&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$post</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cats&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">in_category</span><span style="color: #007700">(</span><span style="color: #0000BB">$tweetCategoryName</span><span style="color: #007700">,&nbsp;(int)&nbsp;</span><span style="color: #0000BB">$post</span><span style="color: #007700">-&</span><span style="color: #0000BB">gt</span><span style="color: #007700">;</span><span style="color: #0000BB">ID</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">$cats</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$postsToShow</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #0000BB">$post</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filteredPosts</span><span style="color: #007700">[]&nbsp;=&nbsp;</span><span style="color: #0000BB">$post</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$num&nbsp;</span><span style="color: #007700">&</span><span style="color: #0000BB">gt</span><span style="color: #007700">;=&nbsp;</span><span style="color: #0000BB">$numVisiblePosts</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$num&nbsp;</span><span style="color: #007700">&</span><span style="color: #0000BB">lt</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">$numVisiblePosts</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF9900">//&nbsp;Too&nbsp;many&nbsp;twitter&nbsp;posts...&nbsp;what&nbsp;the&nbsp;hell...&nbsp;show&nbsp;some&nbsp;of&nbsp;them<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$numTwitterPosts&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$numVisiblePosts&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">$num</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$postsToShow&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_merge</span><span style="color: #007700">(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$postsToShow</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">array_slice</span><span style="color: #007700">(</span><span style="color: #0000BB">$filteredPosts</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$numTwitterPosts</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$postsToShow</span><span style="color: #007700">;<br />}<br /></span>
</span>
</code></pre>
<p>Another thing I had to do was increase the number of posts shown on the front page, since my plugin now handles restricting the number of posts and I have to ensure that my function gets at least some posts that are not tweets. (But even if there are not enough, it fills up the front page with twitter posts.)</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/wordpress-filter-categories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keyboard vs. Mouse</title>
		<link>http://blog.himmelrath.net/tec/comp/keyboard-vs-mouse/</link>
		<comments>http://blog.himmelrath.net/tec/comp/keyboard-vs-mouse/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 16:29:59 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Argh!]]></category>
		<category><![CDATA[Keyboard]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Synaptic]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=281</guid>
		<description><![CDATA[Do most people really never use the keyboard to work with desktop applications more quickly? There are so many cases of applications that are completely unusable with the keyboard - and I am not talking about image processing which cannot work without a mouse (though those programs are mostly optimized <a href="http://blog.himmelrath.net/tec/comp/keyboard-vs-mouse/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Ich werde mal versuchen einige meiner Einträge auf Englisch zu verfassen &#8211; um in der Übung zu bleiben.</p>
<p>Do most people really never use the keyboard to work with desktop applications more quickly? There are so many cases of applications that are completely unusable with the keyboard &#8211; and I am not talking about image processing which cannot work without a mouse (though those programs are mostly optimized for keyboard use as much as possible, just take a look at photoshop).</p>
<p>But many programs (especially under windows) don&#8217;t allow even the simplest tasks to be done via keyboard. While I can automate most of the tasks I have to do again and again and again in Office<sup>1</sup> via <a href="http://www.typer.de">Shortcut</a>, most <strong>all</strong> of the addins I have to use do not support keyboard use.</p>
<p>Linux is usually better, but far from perfect in this respect: Can anyone tell me how to search in <a href="http://www.nongnu.org/synaptic/">Synaptic</a> (the default gnome package manager) and change where to search in? How do i change from &#8220;name&#8221; to &#8220;name and description&#8221; only using the keyboard?</p>
<p><sup>1</sup> I have to admit, Microsoft really did a good job to make Office 2007 usable via keyboard.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/keyboard-vs-mouse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Linux] CPU Taktung</title>
		<link>http://blog.himmelrath.net/tec/linux/cpu-taktung-unter-linux/</link>
		<comments>http://blog.himmelrath.net/tec/linux/cpu-taktung-unter-linux/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 08:50:47 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[CPU Frequenz]]></category>
		<category><![CDATA[Untertakten]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=266</guid>
		<description><![CDATA[Mit Hilfe des Befehls
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
kann man sich ausgeben lassen welche Taktfrequenzen von der CPU unterstützt werden. Da man ja nun mal keine unterschiedlichen CPUs auf dem Board hat, sollten die ausgegebenen Werte für alle CPUS des Systems gelten, auch wenn man nur "cpu0" (also die erste CPU) abgefragt hat.

Die Ausgabe <a href="http://blog.himmelrath.net/tec/linux/cpu-taktung-unter-linux/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Dies ist einer der Einträge in meinem Blog, der wohl hauptsächlich deshalb da ist, weil ich es wohl selbst wieder vergessen und daher nachschlagen müssen werde.</p>
<p>Mit Hilfe des Befehls<br />
<code>cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies</code><br />
kann man sich ausgeben lassen welche Taktfrequenzen von der CPU unterstützt werden. Da man ja nun mal keine unterschiedlichen CPUs auf dem Board hat, sollten die ausgegebenen Werte für alle CPUS des Systems gelten, auch wenn man nur &#8220;cpu0&#8243; (also die erste CPU) abgefragt hat.</p>
<p>Die Ausgabe kann dann z.B. so aussehen:<br />
<code>2000000 1800000 1000000</code></p>
<p>Dies sind die unterstützten (funktionierenden) Werte, die man dann z.B. dem Programm <strong>cpufreq-selector</strong> übergeben kann:<br />
<code>sudo cpufreq-selector -f 1000000</code></p>
<p>Obiger Befehl stellt meine CPU in den Stromsparmodus. (<strong>sudo</strong> davor nicht vergessen, denn an der CPU-Geschwindigkeit darf nur root herumspielen)</p>
<p>Natürlich geht das ganze auch deutlich einfacher indem man sich eines der unzähligen Programme wie den <a href="http://library.gnome.org/users/cpufreq-applet/stable/cpufreq-applet-introduction.html.en">CPU Frequency Scaling Monitor</a> (gehört zu <a href="http://www.gnome.org/">Gnome</a>) installiert und es bequem über den Desktop einstellt. Spätestens wenn man das mal per ssh auf einem entfernten Rechner einstellen will hilft dieser manuelle Weg jedoch sehr.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/linux/cpu-taktung-unter-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Komprimierung mit 7z</title>
		<link>http://blog.himmelrath.net/tec/comp/komprimierung-mit-7z/</link>
		<comments>http://blog.himmelrath.net/tec/comp/komprimierung-mit-7z/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 10:03:18 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[7z]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=251</guid>
		<description><![CDATA[Ich komprimiere meine Dateien fast immer mit 7z, nur wenn ich Quellcode weitergebe nutze ich das traditionelle tar.bz2. Vor allem habe ich mir angewöhnt alles was ich an CD und DVD Images besitze vor dem verschieben auf die Backupplatte noch einmal zu komprimieren - der Zugriff muss ja nicht schnell <a href="http://blog.himmelrath.net/tec/comp/komprimierung-mit-7z/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p class="remark">Dies ist einer der Einträge in meinem Blog, der wohl hauptsächlich deshalb da ist, weil ich es wohl selbst wieder vergessen und daher nachschlagen müssen werde.</p>
<p>Ich komprimiere meine Dateien fast immer mit 7z, nur wenn ich Quellcode weitergebe nutze ich das traditionelle tar.bz2. Vor allem habe ich mir angewöhnt alles was ich an CD und DVD Images besitze vor dem verschieben auf die Backupplatte noch einmal zu komprimieren &#8211; der Zugriff muss ja nicht schnell gehen, sondern im Optimalfall nicht einmal nötig sein.</p>
<p>Da ich in diesem Fall keine Rücksicht auf irgend wen nehmen muss, kann ich die Parameter so wählen, dass ein für meinen Rechner optimale Komprimierung herauskommt &#8211; auch wenn es sich deshalb auf Rechnern mit wenig Arbeitsspeicher nicht mehr entpacken lassen würde.</p>
<p>Mein Kommando zur Komprimierung lautet (Achtung, nicht auf Systemen nutzen die weniger als 4GB Hauptspeicher haben):<br />
<code>nice -n 10 7z a -mx=9 -mmt=16 -t7z -mfb=258 -md=384m -ms=8g "[ZIEL].7z" "[DATEN]"</code></p>
<p>Kurze Erklärung:</p>
<table class="descriptionTable" border="0">
<tbody>
<tr>
<th>Kommandoteil</th>
<th>Bedeutung</th>
</tr>
<tr>
<td>nice -n 10</td>
<td>Starte das folgende Kommando mit geringer Priorität. Das bedeutet, dass man nebenher noch relativ gut arbeiten kann, bzw. andere Prozesse weniger ausgebremst werden.</td>
</tr>
<tr>
<td>7z a</td>
<td>Füge Daten zu einem Archiv hinzu (a steht für &#8220;add&#8221;).</td>
</tr>
<tr>
<td>-mx=9</td>
<td>Benutze die maximale Kompressionsstufe.</td>
</tr>
<tr>
<td>-mmt=16</td>
<td>Bestimmt die Anzahl der benutzten Threads. Alternativ kann man auch -mmt=on angeben, dann bestimmt 7z selbst die Anzahl der Threads. Bei meinen Tests war jedoch die Anzahl 16 (ich habe einen Dualcore Prozessor) seltsamerweise fast 10% schneller als die Angabe on.</td>
</tr>
<tr>
<td>-t7z</td>
<td>Sagt 7z, dass es das 7z-Format benutzen soll. Eigentlich überflüssig wenn wir den Archivnamen auf .7z enden lassen. Da 7z aber auch so ziemlich alle anderen halbwegs frei verfügbaren Komprimierungsverfahren unterstützt, gehe ich hier noch einmal sicher, dass auch wirklich das effiziente 7z benutzt wird.</td>
</tr>
<tr>
<td>-mfb=258</td>
<td>Die Wortgröße wird hier festgelegt. Faustregel: Je höher die Wortgröße, desto besser die Kompression. Dies ist, soweit ich weiß, der derzeitig maximal zulässige Wert.</td>
</tr>
<tr>
<td>-md=384m</td>
<td>Die Wörterbuchgröße. Auch heir gilt die gleiche Faustregel wie bei der Wortgröße, allerdings kann man hier noch deutlich größer werden. In diesem Fall ist die Wörterbuchgröße 384 MB &#8211; das bedeutet, dass man beim Entpacken schon mindestens 512 MB RAM haben muss und beim Komprimieren ungefähr das Zehnfache der Wörterbuchgröße. Ich habe 6 GB RAM und benutze daher diese Einstellung wenn ich über Nacht die Backups komprimiere. Sobald ich parallel noch Firefox, Thunderbird und Eclipse (um mal Speicherfresser zu nennen) benutzen will, setze ich den Wert auf unter 300m.</td>
</tr>
<tr>
<td>-ms=8g</td>
<td>Die maximale Größe der soliden Blöcke &#8211; auch hier gilt die gleiche Faustregel, auch wenn der Einfluss mit steigender Größe immer geringer wird. Alternativ sollte ein -ms=on auch dafür Sorgen, dass ein ganzes DVD-Image als ein großer Block (&#8220;solid&#8221;) komprimiert wird.</td>
</tr>
<tr>
<td>&#8220;[ZIEL].7z&#8221;</td>
<td>Das Zielarchiv. Es muss nicht auf .7z enden, aber das hat sich aus praktischen Gründen eingebürgert. Unter Windows sollte es natürlich auf jeden Fall so heißen, da Windows das Archiv nicht automatisch als solches erkennen kann.</td>
</tr>
<tr>
<td>&#8220;[DATEN]&#8220;</td>
<td>Das ist dann die Datei, die Dateien oder das Verzeichnis das komprimiert werden soll. Die Anführungsstriche kommen allerdings nicht um mehrere Dateien oder Verzeichnisse, sondern jeweils um eins (damit es keine Probleme mit Leerzeichen gibt).</td>
</tr>
</tbody>
</table>
<p>Um dann viele Images über Nacht zu komprimieren benutze ich folgendes Mini-Script:<br />
<code><br />
#!/bin/bash<br />
for i in *.iso; do<br />
  nice -n 10 7z a -mx=9 -mmt=16 -t7z -mfb=258 -md=384m -ms=8g "$i.7z" "$i"<br />
  if [[ $? -eq 0 &amp;&amp; -f "$i.7z" ]]; then<br />
    rm "$i"<br />
  fi<br />
done<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/comp/komprimierung-mit-7z/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPS Logger</title>
		<link>http://blog.himmelrath.net/tec/prog/gps-logger/</link>
		<comments>http://blog.himmelrath.net/tec/prog/gps-logger/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 11:29:54 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[GPX]]></category>
		<category><![CDATA[Logger]]></category>
		<category><![CDATA[Photo]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=193</guid>
		<description><![CDATA[Ich wollte nur bevor ich es vergesse über mein neues kleines Projekt schreiben: Der MiGPSLogger. Da ich dank myDealz der stolze Besitzer eines kostenlosen Nokia 5800 bin, habe ich mir direkt einmal einen einfachen GPS-Logger in Java ME geschrieben. Das Ding kann Strecken aufnehmen und Orte speichern und diese dann <a href="http://blog.himmelrath.net/tec/prog/gps-logger/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich wollte nur bevor ich es vergesse über mein neues kleines Projekt schreiben: Der <a href="http://dev.himmelrath.net/migpslogger/">MiGPSLogger</a>. Da ich dank <a href="http://www.mydealz.de">myDealz</a> der stolze Besitzer eines kostenlosen Nokia 5800 bin, habe ich mir direkt einmal einen einfachen GPS-Logger in Java ME geschrieben. Das Ding kann Strecken aufnehmen und Orte speichern und diese dann als GPX-Datei speichern, damit man sie in GPS-Programmen verwenden kann.</p>
<p>Man kann z.B. die mit dem Logger erstellten Daten dann in <a href="http://www.gpsvisualizer.com/">gpsvisualizer</a> auf einer Karte anzeigen lassen oder damit Projekte wie <a href="http://www.openstreetmap.de/">openstreetmap</a> unterstützen.<br />
Ich werde das ganze z.B. verwenden um auf meinen Foto-Touren die Fotos automatisiert Koordinaten zuordnen zu können. Ist allerdings alles derzeitig noch im Beta-Stadium.</p>
<p>Vielleicht hilft es ja noch jemandem außer Uli (Geograph und Beta-Tester) und mir. Rückmeldungen und Anregungen sind immer willkommen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/gps-logger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Privatisierung des Überwachungsstaats</title>
		<link>http://blog.himmelrath.net/tec/privatisierung-des-uberwachungsstaats/</link>
		<comments>http://blog.himmelrath.net/tec/privatisierung-des-uberwachungsstaats/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 09:57:22 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Elektroauto]]></category>
		<category><![CDATA[Globale Erwärmung]]></category>
		<category><![CDATA[Nerds]]></category>
		<category><![CDATA[Überwachung]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=190</guid>
		<description><![CDATA[Zumindest in den Blogs ist spätestens seit der FSA09 und der Piratenpartei die Verhinderung des Überwachungsstaats ein großes Thema. Dumm nur, wenn die Überwachungsmittel gleichzeitig eine nützliche Technikspielerei sein, dann kommt der Durchschnittsnerd in die Bredouille.

Auf Telepolis wird über ein Stromversorgungsnetz in den Straßen berichtet, dass natürlich - erst einmal <a href="http://blog.himmelrath.net/tec/privatisierung-des-uberwachungsstaats/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Zumindest in den Blogs ist spätestens seit der <a href="http://wiki.vorratsdatenspeicherung.de/index.php?title=Freiheit_statt_Angst_am_12._September_2009&amp;stable=1">FSA09</a> und der <a href="http://www.piratenpartei.de/">Piratenpartei</a> die Verhinderung des Überwachungsstaats ein großes Thema. Dumm nur, wenn die Überwachungsmittel gleichzeitig eine nützliche Technikspielerei sein, dann kommt der Durchschnittsnerd in die Bredouille.</p>
<p>Auf Telepolis wird über ein <a href="http://www.heise.de/tp/blogs/2/145374/">Stromversorgungsnetz in den Straßen</a> berichtet, dass natürlich &#8211; erst einmal vollkommen unbedenklich &#8211; die umweltschonenden Elektroautos mit &#8220;Sprit&#8221; versorgen soll. Eine sowohl interessante als auch löbliche Idee, allerdings muss für die Abrechnung zwangsweise ein Konto belastet werden, wozu eine Identifikation direkt an Ort und Stelle notwendig wird. Mit diesen Induktionsschleifen wäre also ein absolut genaues Bewegungsprofil möglich.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/privatisierung-des-uberwachungsstaats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GRAND Flash Album Gallery Extras</title>
		<link>http://blog.himmelrath.net/tec/prog/grand-flash-album-gallery-extras/</link>
		<comments>http://blog.himmelrath.net/tec/prog/grand-flash-album-gallery-extras/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 09:44:42 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Gallery]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Wordpress Plugin]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=186</guid>
		<description><![CDATA[Heute mal auf Englisch, weil das Originalplugin auch in English zur Verfügung steht.

Update 2009-09-13: New version. Can now work around WP-Cache

GRAND Flash Album Gallery is a simple to use and professional looking way to present pictures on your website, it even has a nice looking full-screen-option.

There were two features that <a href="http://blog.himmelrath.net/tec/prog/grand-flash-album-gallery-extras/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Heute mal auf Englisch, weil das <a href="http://codeasily.com/wordpress-plugins/flash-album-gallery/flag">Originalplugin</a> auch in English zur Verfügung steht.</p>
<p><strong>Update 2009-09-13: New version. Can now work around WP-Cache</strong></p>
<p><a href="http://codeasily.com/wordpress-plugins/flash-album-gallery/flag">GRAND Flash Album Gallery</a> is a simple to use and professional looking way to present pictures on your website, it even has a nice looking full-screen-option.</p>
<p>There were two features that I really missed:</p>
<ul>
<li>Ability to link to a specific gallery and picture</li>
<li>Removing the [Gallery  not found]-tags from excerpts</li>
</ul>
<p>For those two I wrote my own little plugin called &#8220;<a href="http://blog.himmelrath.net/wp-content/uploads/2009/09/flash-album-gallery-extras.zip">flash-album-gallery-extras</a>&#8220;.<br />
It is more of a quickhack than a real plugin because I had to change the central <a href="http://blog.himmelrath.net/wp-content/uploads/2009/09/xml.php.zip">xml.php</a> file that comes with the Flash Album Gallery Skins (which is used to output an ordered xml-list of the pictures grouped by galleries) and because I use two Session-variables to &#8220;communicate&#8221; with the xml.php. Changing the flash that requests the xml to using additional GET-Parameters would be a cleaner approach, but that would require the authors help.</p>
<p>Maybe he likes my approach and integrates my code (or my idea) into his original solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/grand-flash-album-gallery-extras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
