<?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>Thomas Falkner</title>
	<atom:link href="http://blog.thomas-falkner.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Thu, 29 Mar 2012 11:51:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Standard Look and Feel f&#252;r DevExpress</title>
		<link>http://blog.thomas-falkner.de/2012/03/29/standard-look-and-feel-fuer-devexpress/</link>
		<comments>http://blog.thomas-falkner.de/2012/03/29/standard-look-and-feel-fuer-devexpress/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 09:00:20 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[DevExpress]]></category>
		<category><![CDATA[VB.net]]></category>
		<category><![CDATA[VB.Net]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=338</guid>
		<description><![CDATA[DevExpress bietet fantastische M&#246;glichkeiten, um Steuerelemente an einen bestimmten visuellen Stil (Skin) anzupassen, neben vordefinierten Skins besteht auch die M&#246;glichkeit eigene Skins zu gestalten. Um nicht jeden Steuerelemente einzelnen einen Stil zuweisen zu m&#252;ssen, l&#228;sst sich auch ein Skin f&#252;r die Applikation global als Standard definieren. Unter VB.Net geht das am einfachsten im Konstruktor der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.devexpress.com/">DevExpress</a> bietet fantastische M&#246;glichkeiten, um Steuerelemente an einen bestimmten visuellen Stil (Skin) anzupassen, neben vordefinierten Skins besteht auch die M&#246;glichkeit eigene Skins zu gestalten.<br />
Um nicht jeden Steuerelemente einzelnen einen Stil zuweisen zu m&#252;ssen, l&#228;sst sich auch ein Skin f&#252;r die Applikation global als Standard definieren. Unter VB.Net geht das am einfachsten im Konstruktor der Form.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p338code2'); return false;">View Code</a> VBNET</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3382"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p338code2"><pre class="vbnet" style="font-family:monospace;"><span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Class</span> MainForm
&nbsp;
    <span style="color: #0600FF;">Sub</span> <span style="color: #FF8000;">New</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
        DevExpress.<span style="color: #0000FF;">LookAndFeel</span>.<span style="color: #0000FF;">UserLookAndFeel</span>.<span style="color: #0600FF;">Default</span>.<span style="color: #0000FF;">SkinName</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;Office 2010 Silver&quot;</span> 
        <span style="color: #008080; font-style: italic;">' This call is required by the Windows Form Designer.</span>
        InitializeComponent<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2012/03/29/standard-look-and-feel-fuer-devexpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wenn Windows DVD-/CD-Laufwerke nicht mehr erkennt</title>
		<link>http://blog.thomas-falkner.de/2011/04/24/wenn-windows-dvd-cd-laufwerke-nicht-mehr-erkennt/</link>
		<comments>http://blog.thomas-falkner.de/2011/04/24/wenn-windows-dvd-cd-laufwerke-nicht-mehr-erkennt/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 12:11:57 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=335</guid>
		<description><![CDATA[Werden CD- oder DVD-Laufwerke unter Windows XP, Vista oder Windows 7 im Explorer nicht mehr angezeigt, hilft es sich &#252;ber den Ger&#228;temanager einen genaueren &#220;berblick des Problems zu verschaffen. Erscheint das Laufwerk im Ger&#228;temanager mit einem gelben Ausrufezeichen versehen und wird in den Eigenschaften des Ger&#228;ts der Fehler Code 19 ausgewiesen, deutet das auf eine [...]]]></description>
			<content:encoded><![CDATA[<p>Werden CD- oder DVD-Laufwerke unter Windows XP, Vista oder Windows 7 im Explorer nicht mehr angezeigt, hilft es sich &#252;ber den Ger&#228;temanager einen genaueren &#220;berblick des Problems zu verschaffen. Erscheint das Laufwerk im Ger&#228;temanager mit einem gelben Ausrufezeichen versehen und wird in den Eigenschaften des Ger&#228;ts der Fehler Code 19 ausgewiesen, deutet das auf eine nicht vollst&#228;ndig bei der Deinstallation entfernte Brennsoftware wie z.B. Nero hin.</p>
<blockquote><p>Dieses Hardwareger&#228;t kann nicht gestartet werden, da dessen Konfigurationsinformationen (in der Registrierung) unvollst&#228;ndig oder besch&#228;digt sind. (Code 19) </p></blockquote>
<p>Damit die Laufwerke wieder im Explorer erscheinen, m&#252;ssen die von der Software in der Registrierung gesetzten Werte manuelle entfernt werden. </p>
<ol>
<li>&#214;ffne dazu das Programm regedit (Start-> Ausf&#252;hren -> regedit).</li>
<li>Expandiere den Schl&#252;ssel <tt>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}</tt></li>
<p> .</p>
<li>L&#246;sche die Parameter <b>UpperFilter</b> und &#8211; sofern vorhanden &#8211; <b>LowerFilter</b></li>
<li>Starte Windows neu.</li>
</ol>
<p>Auf das DVD oder CD-Laufwerk sollte nun wieder zugegriffen werden k&#246;nnen. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/04/24/wenn-windows-dvd-cd-laufwerke-nicht-mehr-erkennt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wenn der Schreibtisch Desktop hei&#223;t</title>
		<link>http://blog.thomas-falkner.de/2011/04/14/wenn-der-schreibtisch-desktop-heisst/</link>
		<comments>http://blog.thomas-falkner.de/2011/04/14/wenn-der-schreibtisch-desktop-heisst/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 09:57:53 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=333</guid>
		<description><![CDATA[Wenn pl&#246;tzlich der Schreibtisch unter Mac OS X Desktop oder Dokumente Documents hei&#223;en, liegt es wahrscheinlich daran, dass die versteckte Datei .localized in jeweiligen Ordner gel&#246;scht wurden. Um das Problem zu l&#246;sen gen&#252;gt es die Terminal.app zu starten, z.B. mit cd Desktop in den entsprechenden Ordner zu wechseln und mittels touch .localized die Datei wieder [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn pl&#246;tzlich der Schreibtisch unter Mac OS X Desktop oder Dokumente Documents hei&#223;en, liegt es wahrscheinlich daran, dass die versteckte Datei <tt>.localized</tt> in jeweiligen Ordner gel&#246;scht wurden.  Um das Problem zu l&#246;sen gen&#252;gt es die Terminal.app zu starten, z.B. mit <tt>cd Desktop</tt> in den entsprechenden Ordner zu wechseln und mittels </p>
<pre>
touch .localized
</pre>
<p>die Datei wieder anzulegen. Im Finder sollte der Ordner nun wieder in der konfigurierten Landessprache angezeigt werden. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/04/14/wenn-der-schreibtisch-desktop-heisst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP-Fehlermeldungen mit .htaccess steuern</title>
		<link>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/</link>
		<comments>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 10:13:15 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[.htacess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sicherheit]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=329</guid>
		<description><![CDATA[Grunds&#228;tzlich kann es zu einem Sicherheitsrisiko werden PHP-Fehlermeldungen auf der Website anzeigen zu lassen, da mit R&#252;ckschl&#252;ssen auf den Code, die Verzeichnisstruktur oder Datenbankstruktur der Fehler ausgenutzt werden k&#246;nnte. Mit folgenden Eintr&#228;gen in der .htaccess lassen sich die PHP-Fehlermeldungen unterdr&#252;cken. php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_value docref_root 0 php_value docref_ext 0 [...]]]></description>
			<content:encoded><![CDATA[<p>Grunds&#228;tzlich kann es zu einem Sicherheitsrisiko werden PHP-Fehlermeldungen auf der Website anzeigen zu lassen, da mit R&#252;ckschl&#252;ssen auf den Code, die Verzeichnisstruktur oder Datenbankstruktur der Fehler ausgenutzt werden k&#246;nnte.<br />
Mit folgenden Eintr&#228;gen in der <tt>.htaccess</tt> lassen sich die PHP-Fehlermeldungen unterdr&#252;cken. </p>
<pre name="code" class="php">
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
</pre>
<p>Sinnvoll ist es hingegen die Fehler in eine Logdatei zu schreiben:</p>
<pre name="code" class="php">
php_flag  log_errors on
php_value error_log  /path/to/website/PHP_errors.log
</pre>
<p>Sinnvoll ist es zudem den Zugriff &#252;ber den Browser auf die Logdatei zu verbieten:</p>
<pre name="code" class="php">
<files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</files>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Alle E-Mails in der Postfix Mailqueue l&#246;schen</title>
		<link>http://blog.thomas-falkner.de/2011/03/03/alle-e-mails-in-der-postfix-mailqueue-loeschen/</link>
		<comments>http://blog.thomas-falkner.de/2011/03/03/alle-e-mails-in-der-postfix-mailqueue-loeschen/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 12:41:34 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Postfix]]></category>
		<category><![CDATA[mailserver]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=326</guid>
		<description><![CDATA[Durch au&#223;erordentliche Ereignisse, wie &#252;berlaufende tempor&#228;re Verzeichnisse, falsche Konfigurationen oder Serverabst&#252;rze kann es geschehen, dass Postfix E-Mail nicht aus den Queues l&#246;scht. Mit dem Postfixtool postsuper kann man das L&#246;schen der Warteschlangen erzwingen. postsuper -d ALL Ein Neustart oder Reload von Postfix ist danach nicht erforderlich. Sollte postsuper den Dienst verweigern, lassen sich die Queues [...]]]></description>
			<content:encoded><![CDATA[<p>Durch au&#223;erordentliche Ereignisse, wie &#252;berlaufende tempor&#228;re Verzeichnisse, falsche Konfigurationen oder Serverabst&#252;rze kann es geschehen, dass Postfix E-Mail nicht aus den Queues l&#246;scht. Mit dem Postfixtool postsuper kann man das L&#246;schen der Warteschlangen erzwingen. </p>
<p><code>postsuper -d ALL</code></p>
<p> Ein Neustart oder Reload von Postfix ist danach nicht erforderlich.</p>
<p>Sollte postsuper den Dienst verweigern, lassen sich die Queues auch manuell l&#246;schen.</p>
<p><code>cd /var/spool/postfix &#038;&#038; rm -r active/* deferred/* defer/*</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/03/03/alle-e-mails-in-der-postfix-mailqueue-loeschen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kostenlos: Sitzordnungen als Vekorgrafik</title>
		<link>http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/</link>
		<comments>http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 13:36:34 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Illustrator]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[vekorgrafiken]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=317</guid>
		<description><![CDATA[Frontalunterricht, Arbeitsgruppen, Hufeisen und U-Form als Sitzordnungen im Klassenzimmer. Die Grafiken dienten als Illustration f&#252;r die optimale &#8211; und auch falsche &#8211; Integration von Sch&#252;lern mit H&#246;rsch&#228;digung. Doch es finden sich gewiss noch viele weitere Anwendungen. Die Grafiken im Illustrator-Format stehen unter Creative Commons und k&#246;nnen frei benutzt und ver&#228;ndert werden. Sitzordnung Klassenzimmer]]></description>
			<content:encoded><![CDATA[<p>Frontalunterricht, Arbeitsgruppen, Hufeisen und U-Form als Sitzordnungen im Klassenzimmer. Die Grafiken dienten als Illustration f&#252;r die optimale &#8211; und auch falsche &#8211; Integration von Sch&#252;lern mit H&#246;rsch&#228;digung. Doch es finden sich gewiss noch viele weitere Anwendungen. Die Grafiken im Illustrator-Format stehen unter <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons</a> und k&#246;nnen frei benutzt und ver&#228;ndert werden. </p>

<a href='http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/frontalunterricht/' title='frontalunterricht'><img width="150" height="150" src="http://blog.thomas-falkner.de/wp-content/uploads/2011/01/frontalunterricht-150x150.png" class="attachment-thumbnail" alt="frontalunterricht" title="frontalunterricht" /></a>
<a href='http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/gruppentische/' title='gruppentische'><img width="150" height="150" src="http://blog.thomas-falkner.de/wp-content/uploads/2011/01/gruppentische-150x150.png" class="attachment-thumbnail" alt="gruppentische" title="gruppentische" /></a>
<a href='http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/hufeisen/' title='hufeisen'><img width="150" height="150" src="http://blog.thomas-falkner.de/wp-content/uploads/2011/01/hufeisen-150x150.png" class="attachment-thumbnail" alt="hufeisen" title="hufeisen" /></a>
<a href='http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/uform/' title='uform'><img width="150" height="150" src="http://blog.thomas-falkner.de/wp-content/uploads/2011/01/uform-150x150.png" class="attachment-thumbnail" alt="uform" title="uform" /></a>

<p><a  title='Sitzordnung Klassenzimmer' href='http://blog.thomas-falkner.de/?wpdmact=process&did=MS5ob3RsaW5r' style="background:url('http://blog.thomas-falkner.de/wp-content/plugins/download-manager/icon/download.png') no-repeat;padding:3px 12px 12px 28px;font:bold 10pt verdana;">Sitzordnung Klassenzimmer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/01/29/kostenlos-sitzordnungen-als-vekorgrafik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screenshot unter Mac OS X</title>
		<link>http://blog.thomas-falkner.de/2011/01/25/screenshot-unter-mac-os-x/</link>
		<comments>http://blog.thomas-falkner.de/2011/01/25/screenshot-unter-mac-os-x/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 19:52:51 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[screenshots]]></category>
		<category><![CDATA[shortcuts]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=271</guid>
		<description><![CDATA[Mac OSX bietet eine durchaus komfortable M&#246;glichkeit Screenshots anzufertigen &#8211; allerdings sollte man die Shortcuts kennen. Shortcut Beschreibung Shift &#xF8FF; 3 Screenshot des gesamten Bildschirms Shift Ctrl &#xF8FF; 3 Screenshot wird in die Zwischenablage gesichert Shift &#xF8FF; 4 Mit dem Fadekreuz den zu fotografierenden Bereich ausw&#228;hlen Shift &#xF8FF; 4 Leertaste Durch &#252;berfahren mit dem Mauszeiger [...]]]></description>
			<content:encoded><![CDATA[<p>Mac OSX bietet eine durchaus komfortable M&#246;glichkeit Screenshots anzufertigen &#8211; allerdings sollte man die Shortcuts kennen.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="3">
<thead>
<tr>
<th align="left">Shortcut</th>
<th align="left">Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top">Shift &#xF8FF; 3</td>
<td valign="top">Screenshot des gesamten Bildschirms</td>
</tr>
<tr>
<td valign="top">Shift Ctrl &#xF8FF; 3</td>
<td valign="top">Screenshot wird in die Zwischenablage gesichert</td>
</tr>
<tr>
<td valign="top">Shift &#xF8FF; 4</td>
<td valign="top">Mit dem Fadekreuz den zu fotografierenden Bereich ausw&#228;hlen</td>
</tr>
<tr>
<td valign="top">Shift &#xF8FF; 4 Leertaste</td>
<td valign="top">Durch &#252;berfahren mit dem Mauszeiger werden Bereiche (Fenster, Desktop, Dock, etc.) fokussiert. Mit einem Mausklick wird der selektierte Bereich aufgenommen.</td>
</tr>
<tr>
<td valign="top">Shift &#xF8FF; F4</td>
<td valign="top">Fenster fotografieren</td>
</tr>
</tbody>
</table>
<p><span id="more-271"></span></p>
<h2>Format der Screenshots &#228;ndern</h2>
<p>Als Standard speichert OS X Screenshots im PNG-Format ab. Grunds&#228;tzlich sind auch weitere Formate m&#246;glich:</p>
<ul>
<li>pdf</li>
<li>tiff</li>
<li>gif</li>
<li>bmp</li>
<li>pict</li>
<li>jpg</li>
</ul>
<p>Um das Dateiformat f&#252;r Screenshots zu &#228;ndern, starte die Terminal.app. M&#246;chtest du zum Beispiel als Standardformat f&#252;r Screenshots das JPG-Format festlegen, gebe im Terminal folgendes Kommando ein: </p>
<p><code>defaults write com.apple.screencapture type jpg</code></p>
<p>Anschlie&#223;end musst du den SystemUIServer neustarten, damit die neue Konfiguration &#252;bernommen wird. F&#252;hre dazu folgenden Befehl aus:</p>
<p><code>killall SystemUIServer</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/01/25/screenshot-unter-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cURL mit 6 praktischen Beispielen erkl&#228;rt</title>
		<link>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/</link>
		<comments>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 09:32:13 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=294</guid>
		<description><![CDATA[cURL ist ein Open Source Kommandozeilentool, mit dem sich aus Shell- oder Batchskripten heraus Dateien &#252;ber Protokolle wie http, https, ftp, gopher, sftp, ftps oder scp &#252;bertragen lassen. cURL leistet mir gute Dienste bei der Entwicklung von Websites. Mit cURL lassen sich Websites fernsteuern und testen. Anhand einiger Beispiele m&#246;chte ich den gro&#223;en Vorteil von [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://curl.haxx.se/">cURL</a> ist ein Open Source Kommandozeilentool, mit dem sich aus Shell- oder Batchskripten heraus Dateien &#252;ber Protokolle wie http, https, ftp, gopher, sftp, ftps oder scp &#252;bertragen lassen. cURL  leistet mir gute Dienste bei der Entwicklung von Websites. Mit cURL lassen sich Websites fernsteuern und testen. Anhand einiger Beispiele m&#246;chte ich den gro&#223;en Vorteil von cURL demonstrieren.</p>
<p><span id="more-294"></span></p>
<h2>1. Websites auslesen</h2>
<p><code>curl http://example.com/index.html</code><br />
Mit diesem Kommando wird die Datei index.html ausgelesen und auf der Standardausgabe ausgegeben.<br />
M&#246;chten wir die Datei unter dem Namen savedpage.html abspeichern, benutzen wir dazu folgenden Befehl:</p>
<p><code>curl -o savedpage.html http://www.example.com/</code></p>
<p>Erfordert eine Website die Anmeldung &#252;ber den HTTP-Authentifizierungsmechanismus, lassen sich &#252;ber cURL auch Benutzername und Passwort &#252;bergeben.</p>
<p><code>curl -u username:password http://www.example.com/</code></p>
<p>Wenn sich eine URL ge&#228;ndert hat, machen viele Webmaster von der M&#246;glichkeit gebrauch auf die neue Adresse umzuleiten. Da in der Standardkonfiguration cURL Weiterleitungen nicht folgt, m&#252;ssen wir in diesem Fall den Parameter -L &#252;bergeben.</p>
<p><code>curl -L http://www.example.com/</code></p>
<h2>2. URL mit variablen GET-Parameter auslesen</h2>
<p>cURL erm&#246;glicht die &#220;bergabe eines regul&#228;ren Ausdrucks als GET-Parameter. Nehmen wir an ein Website w&#228;re &#252;ber ein CMS betrieben und b&#246;te die einzelnen Dokumente &#252;ber URLs nach folgenden Schema an.<br />
<code></p>
<p>http://example.com/pages.php?id=1</p>
<p>http://example.com/pages.php?id=17</p>
<p>http://example.com/pages.php?id=99</p>
<p></code></p>
<p>An cURL l&#228;sst sich der Parameter id als regul&#228;rer Ausdruck &#252;bergeben, um alle ids und damit Dokumente in einen bestimmten Bereich zu erfassen.</p>
<p><code>curl -o pages#1.html http://example.com/pages.php?id=[1-99]</code></p>
<p>Damit weisen wir cURL an alle Dokumente mit den ids 1-99 aufzurufen und in den Dateien page01.html bis page99.html in das Verzeichnis aus dem cURL aufgerufen wurde zu schreiben. Doch was passiert, wenn zum Beispiel die Datei http://example.com/pages.php?id=42 nicht existieren sollte? Hier hebt cURL sich in der Standardkonfiguration durch ein besonders intelligentes Verhalten hervor: Liefert die aufgerufene URL den Fehler 404 &#8211; Dokument nicht gefunden &#8211; zur&#252;ck, f&#228;hrt cURL mit der n&#228;chsten id fort, ohne dabei die Datei page42.html anzulegen.  </p>
<h2>3. HTTP-Header auslesen</h2>
<p><code>curl --head http://www.google.com/</code><br />
Mit dem Parameter &#8211;head weisen wir cURL an den HTTP-Header auf die Standardausgabe zu schreiben.<br />
M&#246;chten wir den Header in die Datei header.txt schreiben, lie&#223;e sich das zum einen durch Umleitungsoperatoren der Shell erreichen oder ganz ohne Unterst&#252;tzung der Shell durch den Parameter &#8211;dump-header.</p>
<p><code>curl --dump-header headers.txt http://www.google.com/</code></p>
<h2>4. cURL und FTP</h2>
<p>Neben vielen weiteren Protokollen kann cURL auch mit FTP-Servern sprechen.</p>
<p><code>curl ftp://username:password@example.com</code></p>
<p>Damit weisen wir cURL an den Index des Hauptverzeichnisses auszugeben. Benutzername und Passwort werden direkt in der URL kodiert.<br />
M&#246;chten wir das Unterverzeichnis images auf dem FTP-Server auflisten, gen&#252;gt es das Verzeichnis an die URL zu h&#228;ngen:</p>
<p><code>curl ftp://username:password@example.com/images/</code></p>
<p>Mit cURL ist auch ein Upload auf einen FTP-Server m&#246;glich, dazu &#252;bergeben wir den Parameter -T gefolgt vom Dateinamen bzw. vollst&#228;ndigen Dateipfad.   </p>
<p><code>curl -T uploadfile.txt -u username:password ftp://example.com/files/myfile.txt</code><br />
Mit diesem Kommando kopiert cURL die Datei uploadfile.txt auf den FTP-Server in das Verzeichnis files unter den Dateinamen myfile.txt.</p>
<h2>5. Formulare mit cURL ausf&#252;llen</h2>
<p>Nehmen wir an ein Formular auf einer Website h&#228;tte folgenden Aufbau:<br />
<code></p>
<form method="post" action="add.php">
<input type="text" name="item"/>
<input type="text" name="category"/>
<input type="submit" name="submit" value="speichern"/>
</form>
<p></code></p>
<p>Der Parameter -d weist cURL an die Daten als application/x-www-form-urlencoded formatierte Zeichenkette an den Server zu &#252;bergeben. </p>
<p><code>curl -d "item=Book&#038;category=SiFi&#038;submit=speichern"  http://www.example.com/add.php</code></p>
<p>Die einzelnen Input-Felder des Formulars werden in der URL mit dem Namen angesprochen, ihr Wert wird &#252;ber den Operator = zugewiesen. Die Verkn&#252;pfung der einzelnen Felder erfolgt mit dem &#038;-Operator. Wir bef&#252;llen im Beispiel das Formularfeld item also mit &#8220;Book&#8221; und das Feld category mit &#8220;SiFi&#8221;. </p>
<h2>6. Referer &#038; User Agent</h2>
<p>HTTP-Request k&#246;nnen das Attribut referer tragen, das dem Webserver Aufschluss dar&#252;ber gibt, &#252;ber welche URL die aktuelle Ressource aufgerufen wurde.  Mit cURL l&#228;sst sich das referer-Attribut nach belieben setzen, indem wir den Parameter -e gefolgt von der augenscheinlich verweisenden URL setzen.</p>
<p><code>curl -e http://refferingsite.com  http://www.example.com/</code></p>
<p>Alle HTTP-Anfragen sollten das Attribut User-Agent aufweisen, das dem Server mitteilt &#252;ber welchen Client der Zugriff erfolgt. Das Attribut User-Agent erm&#246;glicht es zum Beispiel eine spezielle Version einer Website f&#252;r das iPhone oder andere Ger&#228;te auszuliefern. </p>
<p>Um einen bestimmten User-Agent zu simulieren, k&#246;nnen wir den Parameter -A gefolgt vom angeblichen <a href="http://www.user-agents.org/">User-Agent</a> setzen. Um uns zum Beispiel als iPhone auszugeben, benutzen wir folgenden Befehl:</p>
<p><code>curl -A "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"  http://www.example.com</code></p>
<p>Bei entsprechenden Feedback zum Artikel, werde ich gerne weitere Anwendungen f&#252;r cURL aufzeigen. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/01/25/curl-mit-6-praktischen-beispielen-erklaert/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Elegant viele Dateien mit curl laden</title>
		<link>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/</link>
		<comments>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 13:00:45 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=284</guid>
		<description><![CDATA[Curl bietet die interessante M&#246;glichkeit Dateien durch Muster zu spezifizieren. Liegen zum Beispiel im Verzeichnis Bilder, die von 00.jpg bis 100.jpg benannt sind, lassen sich diese mit nur einer Zeile curl downloaden: curl http://host.tld/images/[00-100].jpg -o "img#1.jpg" Der Parameter -o weist an, dass curl die Dateien nicht auf der Standardausgabe ausgeben, sondern in eine Datei schreiben [...]]]></description>
			<content:encoded><![CDATA[<p>Curl bietet die interessante M&#246;glichkeit Dateien durch Muster zu spezifizieren. Liegen zum Beispiel im Verzeichnis Bilder, die von 00.jpg bis 100.jpg benannt sind, lassen sich diese mit nur einer Zeile curl downloaden:</p>
<p><code><br />
curl http://host.tld/images/[00-100].jpg -o "img#1.jpg"<br />
</code></p>
<p>Der Parameter <tt>-o</tt> weist an, dass curl die Dateien nicht auf der Standardausgabe ausgeben, sondern in eine Datei schreiben soll. Der Dateiname wird im Beispiel durch den Ausdruck &#8220;img#2.jpg&#8221; angegeben. Die Bilder werden dann mit dem Namen img00.jpg bis img100.jpg gespeichert. Das w&#228;re zwar auch mit wget und eine Schleife gegangen, doch curl bietet hier einen m.E. eleganteren Weg.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/12/09/elegant-viele-dateien-mit-curl-laden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grafiken in Textfeldern werden unter Word 2011 nicht gedruckt</title>
		<link>http://blog.thomas-falkner.de/2010/11/20/grafiken-in-textfeldern-werden-unter-word-2011-nicht-gedruckt/</link>
		<comments>http://blog.thomas-falkner.de/2010/11/20/grafiken-in-textfeldern-werden-unter-word-2011-nicht-gedruckt/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 18:42:19 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[word]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2010/11/20/grafiken-in-textfeldern-werden-unter-word-2011-nicht-gedruckt/</guid>
		<description><![CDATA[Ich glaube, ich habe einen Bug unter Microsoft Word 2011 f&#252;r OS X gefunden. Platziere ich ein Foto, eine Zeichnung oder Grafik innerhalb eines Textfeldes, erscheint die Grafik weder in der Druckvorschau noch wird die gedruckt. Abhilfe schaffte nur das Speichern im alten Word 97-2004 Format.]]></description>
			<content:encoded><![CDATA[<p>Ich glaube, ich habe einen Bug unter Microsoft Word 2011 f&#252;r OS X gefunden. Platziere ich ein Foto, eine Zeichnung oder Grafik innerhalb eines Textfeldes, erscheint die Grafik weder in der Druckvorschau noch wird die gedruckt.</p>
<p>Abhilfe schaffte nur das Speichern im alten Word 97-2004 Format.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/11/20/grafiken-in-textfeldern-werden-unter-word-2011-nicht-gedruckt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

