<?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; Programmierung</title>
	<atom:link href="http://blog.himmelrath.net/category/tec/prog/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>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>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>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>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>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>
		<item>
		<title>Multi-Desktop-Background-Creator&#8230;</title>
		<link>http://blog.himmelrath.net/misc/multi-desktop-background-creator/</link>
		<comments>http://blog.himmelrath.net/misc/multi-desktop-background-creator/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 08:53:51 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Bildbearbeitung]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Wallpaper]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=167</guid>
		<description><![CDATA[Ich arbeite entweder mit zwei Rechnern nebeneinander die über Synergy verbunden sind oder an einem Rechner mit zwei Monitoren. Bei zwei Monitoren an einem Rechner sieht das Hintergrundbild immer schlecht aus. Deshalb habe ich ein Bash-Script geschrieben dem man beliebig viele Monitorauflösungen von links nach rechts übergibt und einen Ordner <a href="http://blog.himmelrath.net/misc/multi-desktop-background-creator/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich arbeite entweder mit zwei Rechnern nebeneinander die über <a href="http://synergy2.sourceforge.net/" target="_blank">Synergy</a> verbunden sind oder an einem Rechner mit zwei Monitoren. Bei zwei Monitoren an einem Rechner sieht das Hintergrundbild immer schlecht aus. Deshalb habe ich ein Bash-Script geschrieben dem man beliebig viele Monitorauflösungen von links nach rechts übergibt und einen Ordner in dem die Bilder gesucht werden, dass dann zufällig aus den passenden Bildern ein großes passendes Bild zusammenstellt. Zusätzlich kann man konfigurieren ob nur passende Auflösungen verwendet werden sollen oder die Bilder nur verkleinert oder auch vergrößert werden sollen um auf den Monitor zu passen.</p>
<p>Hier die Beschreibung der Kommandozeilenoptionen:</p>
<pre style="font-size: 0.8em;">        -----===== createMultiDesktopWallpaper =====-----

 "createMultiDesktopWallpaper --of=OUTFILE sf=SEARCHFOLDER  RES1 RES2 [RES3 [...]]"

Concatenates the images in the given order and writes the result to the file
specified by --of

Obligatory parameters:
 --of=         The out-file, meaning the file to write the concatenated image
               to. This file will be overwritten without notice.
 --sf=         The folder to search in for images.
 RES[1-x]      The resolution of the Desktops for which the background should
               be created from left to right. The RES-parameters must have the
               form of WIDTHxHEIGHT (e.g. '1280x1024'). There have to be at least
               two RES-parameters

Optional parameters:
 --mode=       The mode for choosing the images. Possible values:
                 exact  - For every resolution an image with exactly the given
                          size is used. No resizing of images.
                 exact2 - Like exact, but needs a preordered search-folder. Use the
                          orderImagesByResolution script to order it. (Faster)
                 down   - Uses images that are at least as big as the given size
                          and resizes bigger images. This might lead to images being
                          cropped because they have a differnt ratio.
                 any    - Resizes any picture to the given resolution. This might
                          look bad if you have for example a 24" monitor and some
                          640x480 images in the search-folder
               Default: exact
 --background= The color of the background if the pictures do not have the same
               size. (default: black)
 --same        Use the same image for all resolutions. Only works with mode 'down'
               or 'any'
 --align=      Vertical alignment of images that are smaller that the biggest
               image given
 --verbose     Output additional information

Example:
   "createMultiDesktopWallpaper --of=bg.png --sf=Pictures 1920x1200 1280x1024"</pre>
<p>Um das Script zu benutzen benötigt man ImageMagick und die Scripte <a href="http://blog.himmelrath.net/wp-content/uploads/2009/08/createMultiDesktopWallpaper">createMultiDesktopWallpaper</a> und <a href="http://blog.himmelrath.net/wp-content/uploads/2009/08/concatenateImages">concatenateImage</a>. Wenn man die Geschwindigkeit optimieren will, kann man das <a href="http://blog.himmelrath.net/wp-content/uploads/2009/08/orderImagesByResolution">orderImagesByResolution</a> Script benutzen um die Bilder vorher zu ordnen und dann den Modus &#8220;exact2&#8243; nutzen.</p>
<p>Das Ergebnis sieht dann bei 1920&#215;1200 und 1280&#215;1024 z.B. so aus: (Aus zwei Photos die ich gemacht habe)</p>
<div id="attachment_172" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.himmelrath.net/wp-content/uploads/2009/08/Generated-Wallpaper.jpg"><img class="size-medium wp-image-172" title="Generated Wallpaper" src="http://blog.himmelrath.net/wp-content/uploads/2009/08/Generated-Wallpaper-300x112.jpg" alt="Generated Wallpaper" width="300" height="112" /></a><p class="wp-caption-text">Generiertes Wallpaper</p></div>
<p>Eine andere Sprache als bash wäre bezüglich Caching sicher sinnvoll gewesen, aber nicht bei meiner kleinen Auswahl an Wallpapern lohnt sich ein Caching Mechanismus noch nicht. Natürlich lässt sich ein Dateibasiertes Caching auch mit bash realisieren, aber besonders elegant geht das nunmal auch nicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/misc/multi-desktop-background-creator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Universelle Bashscript Vorlage</title>
		<link>http://blog.himmelrath.net/tec/prog/universelle-bashscript-vorlage/</link>
		<comments>http://blog.himmelrath.net/tec/prog/universelle-bashscript-vorlage/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 14:43:22 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Vorlage]]></category>

		<guid isPermaLink="false">http://blog.himmelrath.net/?p=164</guid>
		<description><![CDATA[Ich schreibe immer mal wieder kleine Bashscripte für Alltagsaufgaben wie Backups und kleinere Aufgaben für die sich einfach keine großen Programme lohnen. Was mir immer gefehlt hat ist eine grundsätzliche Vorgehensweise die ich auf etwas größere Scripte anwenden kann um Parameter zu verarbeiten und eine Hilfe auszugeben.

Heute habe ich mir <a href="http://blog.himmelrath.net/tec/prog/universelle-bashscript-vorlage/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich schreibe immer mal wieder kleine Bashscripte für Alltagsaufgaben wie Backups und kleinere Aufgaben für die sich einfach keine großen Programme lohnen. Was mir immer gefehlt hat ist eine grundsätzliche Vorgehensweise die ich auf etwas größere Scripte anwenden kann um Parameter zu verarbeiten und eine Hilfe auszugeben.</p>
<p>Heute habe ich mir mal die Mühe gemacht eines meiner größeren Scripte so umzuschreiben, dass es als allgemeine Vorlage genutzt werden kann. Vielleicht hilft es ja jemandem.</p>
<p>Das <a href="/wp-content/uploads/2009/08/bashScriptTemplate">Bash Script Template</a> kann man sich <a href="/wp-content/uploads/2009/08/bashScriptTemplate">hier</a> herunterladen.</p>
<p>Das &#8220;Besondere&#8221; an dieser Scriptvorlage ist dass für die Hilfe alle Texte am Anfang des Script als Variablen definiert werden und die Parameter mit der vorgegebenen Methode in beliebiger Reihenfolge an das Programm übergeben werden können.</p>
<p>Über Rückmeldungen und Verbesserungsvorschläge freue ich mich immer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/universelle-bashscript-vorlage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugs finden &#8211; das Patentrezept.</title>
		<link>http://blog.himmelrath.net/tec/prog/bugs-finden-das-patentrezept/</link>
		<comments>http://blog.himmelrath.net/tec/prog/bugs-finden-das-patentrezept/#comments</comments>
		<pubDate>Sat, 09 Dec 2006 12:29:46 +0000</pubDate>
		<dc:creator>Jens</dc:creator>
				<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://dev.strange-new-world.net/blog/?p=13</guid>
		<description><![CDATA[Wenn das mal nicht die ultimative Lösung ist, wie man Bugs findet:
Another effective [debugging] technique is to explain your code to someone else. This will often cause you to explain the bug to yourself. Sometimes it takes no more than a few sentences, followed by an embarrassed "Never mind, I <a href="http://blog.himmelrath.net/tec/prog/bugs-finden-das-patentrezept/">[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Wenn das mal nicht die ultimative Lösung ist, wie man Bugs findet:</p>
<blockquote><p>Another effective [debugging] technique is to explain your code to someone else. This will often cause you to explain the bug to yourself. Sometimes it takes no more than a few sentences, followed by an embarrassed &#8220;Never mind, I see what&#8217;s wrong. Sorry to bother you.&#8221; This works remarkably well; you can even use non-programmers as listeners. One university computer center kept a teddy bear near the help desk. Students with mysterious bugs were required to explain them to the bear before they could speak to a human counselor.<br />
<span style="font-style: italic;">(</span><span style="font-style: italic;">B. Kernighan &amp; D. Pike in &#8220;The Practice of Programming&#8221; pp. 123)</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.himmelrath.net/tec/prog/bugs-finden-das-patentrezept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
