<?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 &#187; programmieren</title>
	<atom:link href="http://blog.thomas-falkner.de/tag/programmieren/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Sun, 24 Apr 2011 12:11:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>MySQL mit Ruby unter Mac OS X</title>
		<link>http://blog.thomas-falkner.de/2007/06/18/mysql-mit-ruby-unter-mac-os-x/</link>
		<comments>http://blog.thomas-falkner.de/2007/06/18/mysql-mit-ruby-unter-mac-os-x/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 22:24:02 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/06/18/mysql-mit-ruby-unter-mac-os-x/</guid>
		<description><![CDATA[M&#246;chte man eine MySQL-Datenbank mit Ruby ansprechen, muss unter UNIX-artigen Betriebsystemen den Datenbanktreiber manuell kompilieren. Dazu gen&#252;gt es die jeweils aktuelle Version von http://www.tmtm.org/downloads/mysql/ruby/ zu laden und zu kompilieren. Derzeit aktuell ist Version 2.7.3 . Das Archiv ist mit tar xzvf mysql-ruby-2.7.3.tar.gz schnell entpackt. Danach wechseln wir ins Verzeichnis mysql-ruby-2.7.3 konfigurieren das Modul: sudo ruby [...]]]></description>
			<content:encoded><![CDATA[<p>M&#246;chte man eine MySQL-Datenbank mit Ruby ansprechen, muss unter UNIX-artigen Betriebsystemen den Datenbanktreiber manuell kompilieren.<br />
Dazu gen&#252;gt es die jeweils aktuelle Version von <a href="http://www.tmtm.org/downloads/mysql/ruby/">http://www.tmtm.org/downloads/mysql/ruby/</a> zu laden und zu kompilieren. Derzeit aktuell ist Version <a href="http://www.tmtm.org/downloads/mysql/ruby/mysql-ruby-2.7.3.tar.gz">2.7.3 </a>.</p>
<p>Das Archiv ist mit <code>tar xzvf mysql-ruby-2.7.3.tar.gz</code> schnell entpackt. Danach wechseln wir ins Verzeichnis <code>mysql-ruby-2.7.3</code> konfigurieren das Modul: </p>
<p><code>sudo ruby extconf.rb --with-mysql-include=/usr/local/mysql/include --with-mysql-lib=/usr/local/mysql/lib --with-mysql-dir=/usr/local/mysql  --with-mysql-config=/usr/local/mysql/bin/mysql_config</code></p>
<p>Ich habe MySQL unter <code>/usr/local/mysql</code> installiert - der Pfad muss unter Umst&#228;nden angepasst werden. Wo MySQL installiert ist, l&#228;sst sich z.B. mit einem <code>which mysql</code> in Erfahrung bringen.</p>
<p>Der bekannte Einzeiler <code>sudo make &#038;& make install</code> erledigen den Rest. </p>
<p>Mit einem kleinen Script l&#228;sst sich die Installation testen:</p>
<div class="igBar"><span id="lruby-2"><a href="#" onclick="javascript:showPlainTxt('ruby-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">RUBY:</span>
<div id="ruby-2">
<div class="ruby">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">"mysql"</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">begin</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; Mysql.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost"</span>,<span style="color:#996600;">"dbuser"</span>,<span style="color:#996600;">"geheim"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"Klappt! <img src='http://blog.thomas-falkner.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> "</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">rescue</span> StandardError</div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"Klappt nicht. <img src='http://blog.thomas-falkner.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> "</span>&nbsp; &nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/06/18/mysql-mit-ruby-unter-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mr Wong codes wrong</title>
		<link>http://blog.thomas-falkner.de/2007/03/29/mr-wong-codes-wrong/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/29/mr-wong-codes-wrong/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 06:53:05 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Netzwelt]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/29/mr-wong-codes-wrong/</guid>
		<description><![CDATA[Mich erschreckt immer mehr, wie dilletantisch proffessionelle Websites mit hohen Bekanntheitsgrad und Besucherzahl implementiert sind. Heute Morgen zum Beispiel hat der Social-Bookmarking-Dienst Mr Wong einen Totalausfall: Das kann passieren, auch bei Profis. Die Frage ist nur, wie man mit solchen Fehlern umgeht. PHP-Fehlermeldungen in einem Produktivsystem &#252;ber den Browser auszugeben, ist eine schlechte Idee. Oftmals [...]]]></description>
			<content:encoded><![CDATA[<p>Mich erschreckt immer mehr, wie dilletantisch proffessionelle Websites mit hohen Bekanntheitsgrad und Besucherzahl implementiert sind. Heute Morgen zum Beispiel hat der <a href="http://de.wikipedia.org/wiki/Social_Bookmarks">Social-Bookmarking</a>-Dienst <a href="http://www.mister-wong.de/">Mr Wong</a> einen Totalausfall:</p>
<p><img src='http://blog.thomas-falkner.de/wp-content/uploads/2007/03/mrwong.png' alt='Mr Wong Fehlermeldung' /></p>
<p>Das kann passieren, auch bei Profis. Die Frage ist nur, wie man mit solchen Fehlern umgeht. PHP-Fehlermeldungen in einem Produktivsystem &#252;ber den Browser auszugeben, ist eine schlechte Idee. Oftmals geben diese Fehlermeldungen Auskunft &#252;ber Implementierungsdetails aus, die einem potentiellen Angreifer Sicherheitsl&#252;cken offenbaren k&#246;nnen. Normale Benutzer k&#246;nnen mit Fehlermeldungen des PHP-Interpreters gar nichts anfangen, darum sollten sie in verst&#228;ndlichen Worten dar&#252;ber informiert werden, warum der Dienst momentan nicht funktioniert. Etwa in der Form von: "Unsere Datenbank ist ausgefallen. Unser Administrator wurde informiert. In K&#252;rze wird der Dienst wieder zur Verf&#252;gung stehen. Wir bitten den Ausfall zu entschuldigen." Und bevor solche Meldungen &#252;berhaupt ausgegeben werden, sollte der Administrator benachrichtigt werden. Mit <a href="http://www.devshed.com/c/a/PHP/Error-Handling-in-PHP-Introducing-Exceptions-in-PHP-5/">Exceptions</a> w&#228;re das alles kein Problem: </p>
<div class="igBar"><span id="lphp-4"><a href="#" onclick="javascript:showPlainTxt('php-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-4">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">try <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Hier kann was schiefgehen!</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> catch <span style="color:#006600; font-weight:bold;">&#40;</span>Exception <span style="color:#0000FF;">$fehler</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Gib was sinnvolles aus, informiere den Sysadmin, don't panic!</span></div>
</li>
<li style="font-weight: bold;color:PROJECT;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Um keinen Code duplizieren zu m&#252;ssen und Exceptions gezielter behandeln zu k&#246;nnen, lassen sich in PHP5 sogar eigene Exceptions implementieren. Au&#223;erdem bringt die <a href="http://www.php.net/~helly/php/ext/spl/">PHP-SPL</a> vordefinierte <a href="http://www.php.net/~helly/php/ext/spl/classException.html">Exceptionklassen</a> mit. Doch dazu wann anders mehr.</p>
<p>Ironischerweise hat die Agentur hinter Mr Wong vor kurzem eine Stelle f&#252;r PHP-Entwickler <a href="http://www.mister-wong.de/blog/mister-wong-sucht-php-entwickler/2007/01/04/">ausgeschrieben</a>. <img src='http://blog.thomas-falkner.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/29/mr-wong-codes-wrong/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Professionelle Softwareentwicklung mit PHP5</title>
		<link>http://blog.thomas-falkner.de/2007/03/25/professionelle-softwareentwicklung-mit-php5/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/25/professionelle-softwareentwicklung-mit-php5/#comments</comments>
		<pubDate>Sun, 25 Mar 2007 22:53:29 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[openbooks]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/25/professionelle-softwareentwicklung-mit-php5/</guid>
		<description><![CDATA[Der Code der meisten in PHP implementierten Anwendungen ist schlecht. Schlecht bedeutet nicht etwa, dass er nicht funktionieren w&#252;rde. Aber er ist schlecht zu warten, kaum wiederverwendbar und anf&#228;llig f&#252;r Fehler. Die Objektorientierung bietet Paradigmen und Patterns, die konsequent angewandt zu guten Code f&#252;hren, doch bis zu Version 4 wurde ein objektorientierter Ansatz in PHP [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://blog.thomas-falkner.de/wp-content/uploads/2007/03/389864229101_aa137_sclzzzzzzz_.jpg' alt='Professionelle Softwareentwicklung mit PHP5' style="float:right" />Der Code der meisten in PHP implementierten Anwendungen ist schlecht. Schlecht bedeutet nicht etwa, dass er nicht funktionieren w&#252;rde. Aber er ist schlecht zu warten, kaum wiederverwendbar und anf&#228;llig f&#252;r Fehler. Die Objektorientierung bietet Paradigmen und Patterns, die konsequent angewandt zu guten Code f&#252;hren, doch bis zu Version 4 wurde ein objektorientierter Ansatz in PHP gar nicht oder nur nominell unterst&#252;tzt. Seit Version 5 beginnt die popul&#228;re Scriptsprache sich zu professionalisieren, allerdings k&#246;nnen nur wenige Entwicklern einen Nutzen daraus ziehen. Denn viele, wenn nicht die meisten PHP-Programmierer lernten PHP als erste Programmiersprache und sind nicht mit professionellen Entwurfs- und Implementierungstechniken vertraut. Abhilfe schafft das Buch <em>Professionelle Softwareentwicklung mit PHP5</em> von <a href="http://sebastian-bergmann.de/">Sebastian Bergmann</a>: Der Autor richtet sich an den fortgeschrittenen PHP-Entwickler und erl&#228;utert ihm Objektorientierung, Entwurfsmuster und Modellierung mit UML aufs Wesentliche reduziert, abstrakt und doch praxisnah. Wer professionell in PHP entwickeln m&#246;chte, meistert mit diesem Buch den bequemen Einstieg.</p>
<p>Die erste Auflage des Buchs stellt der Autor auf seiner <a href="http://www.professionelle-softwareentwicklung-mit-php5.de/">Website</a> als <a href="http://www.professionelle-softwareentwicklung-mit-php5.de/erste_auflage/">HTML-Version</a> kostenlos zur Verf&#252;gung. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/25/professionelle-softwareentwicklung-mit-php5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zeichens&#228;tze bequem konvertieren</title>
		<link>http://blog.thomas-falkner.de/2007/03/21/zeichensaetze-bequem-konvertieren/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/21/zeichensaetze-bequem-konvertieren/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 10:52:25 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/21/zeichensaetze-bequem-konvertieren/</guid>
		<description><![CDATA[Eine bequeme M&#246;glichkeit Zeichens&#228;tze zu konvertieren kommt nat&#252;rlich aus der UNIX-Welt: iconv K&#252;rzlich wurde ich mit der Migration eines CRM beauftragt. Das alte CRM speicherte die Daten ISO 8859-1 codiert ab, das neue in UTF-8. Hier die L&#246;sung: iconv -f iso-8859-1 -t utf-8 crm8859-1.sql > crmUTF-8.sql Das SQL-Dump war &#252;brigens > 2 GB, iconv eignet [...]]]></description>
			<content:encoded><![CDATA[<p>Eine bequeme M&#246;glichkeit Zeichens&#228;tze zu konvertieren kommt nat&#252;rlich aus der UNIX-Welt: <a href="http://www.gnu.org/software/libiconv/">iconv</a></p>
<p>K&#252;rzlich wurde ich mit der Migration eines <a href="http://de.wikipedia.org/wiki/Kundenbeziehungsmanagement">CRM</a> beauftragt. Das alte CRM speicherte die Daten <a href="http://de.wikipedia.org/wiki/ISO_8859-1">ISO 8859-1</a> codiert ab, das neue in <a href="http://de.wikipedia.org/wiki/UTF-8">UTF-8</a>. </p>
<p>Hier die L&#246;sung:</p>
<p><code>iconv -f iso-8859-1 -t utf-8  crm8859-1.sql > crmUTF-8.sql</code></p>
<p>Das SQL-Dump war &#252;brigens > 2 GB,  <tt>iconv</tt> eignet sich im Gegensatz zu vielen anderen Tools auch f&#252;r umfangreichere Datenmengen.<br />
<tt>Iconv</tt> l&#228;sst sich &#252;brigens auch &#252;ber viele Scriptsprachen wie etwa PHP, Perl oder Ruby benutzen. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/21/zeichensaetze-bequem-konvertieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rubybuch f&#252;r lau</title>
		<link>http://blog.thomas-falkner.de/2007/03/06/rubybuch-fuer-lau/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/06/rubybuch-fuer-lau/#comments</comments>
		<pubDate>Tue, 06 Mar 2007 22:05:19 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/06/rubybuch-fuer-lau/</guid>
		<description><![CDATA[Ruby ist eine sehr m&#228;chtige objektorientierte Programmiersprache, die aufgrund des ihr innewohnenden Prinzips der geringsten &#220;berraschung im direkten Vergleich mit &#228;hnlich leistungsf&#228;higen Sprachen leicht erlernbar ist. Wem dazu die exzellente Dokumentation nicht gen&#252;gt, erh&#228;lt mit Mr. Neighborly’s Humble Little Ruby Book gegen eine kostenlose Registrierung ein didaktisch gut aufgebautes Lehrbuch. Wer lieber auf toten B&#228;ume [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ruby-lang.org/de/">Ruby</a> ist eine sehr m&#228;chtige objektorientierte Programmiersprache, die aufgrund des ihr innewohnenden Prinzips der geringsten &#220;berraschung im direkten Vergleich mit &#228;hnlich leistungsf&#228;higen Sprachen leicht erlernbar ist. Wem dazu die exzellente <a href="http://www.ruby-lang.org/de/documentation/">Dokumentation</a> nicht gen&#252;gt, erh&#228;lt mit <a href="http://www.infoq.com/minibooks/ruby/">Mr. Neighborly’s Humble Little Ruby Book</a> gegen eine kostenlose Registrierung ein didaktisch gut aufgebautes Lehrbuch.</p>
<p>Wer lieber auf toten B&#228;ume liest, kann das Buch &#252;brigens auch <a href="http://www.lulu.com/content/433384">kaufen</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/06/rubybuch-fuer-lau/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

