<?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>Chaim &#187; Programmierung</title>
	<atom:link href="http://www.le-chaim.de/category/programmierung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.le-chaim.de</link>
	<description></description>
	<lastBuildDate>Mon, 06 Feb 2012 22:15:27 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Code is Poetry</title>
		<link>http://www.le-chaim.de/allgemein/code-is-poetry/</link>
		<comments>http://www.le-chaim.de/allgemein/code-is-poetry/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 12:09:54 +0000</pubDate>
		<dc:creator>Chaim</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Philosophisch]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://www.le-chaim.de/?p=989</guid>
		<description><![CDATA[Die meiste Zeit arbeite ich schnell. Sicher, Zeit ist Geld. Doch es kommt noch schlimmer, seit ich mich zurück erinnern kann, mache ich in meinen Klausuren (früher hieß das ja noch &#8220;Arbeiten&#8221;) Flüchtigkeitsfehler und zwar ziemlich gravierende. Ich vergesse Buchstaben am Ende des Satzes oder ganze Wörter. Ich habe seit ich denken kann eine schmierige [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="lightbox" href="http://www.le-chaim.de/wp-content/uploads/2009/11/code-is-poetry.jpg"><img class="alignnone size-medium wp-image-990" style="float: left; margin:10px;" title="Code is Poetry" src="http://www.le-chaim.de/wp-content/uploads/2009/11/code-is-poetry-300x232.jpg" alt="code-is-poetry" width="300" height="232" /></a>Die meiste Zeit arbeite ich schnell. Sicher, Zeit ist Geld. Doch es kommt noch schlimmer, seit ich mich zurück erinnern kann, mache ich in meinen Klausuren (früher hieß das ja noch &#8220;Arbeiten&#8221;) Flüchtigkeitsfehler und zwar ziemlich gravierende. Ich vergesse Buchstaben am Ende des Satzes oder ganze Wörter. Ich habe seit ich denken kann eine schmierige und unleserliche Handschrift (gut, das trifft auf viele zu&#8230; <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) und vor allem lasse ich mich durch alles sofort ablenken. Am meisten bekommen das die Menschen zu spüren, die eng mit mir zusammenarbeiten zum Beispiel <a href="http://www.logistik-wissen.com/">Julian</a> (ja ich weiß du sagst, das sei nun mal mein &#8220;Wesen&#8221; <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) als wir an seinem Design gesessen haben, kam ich auch ständig vom Thema ab, obwohl wir schon recht konzentriert gearbeitet haben.</p>
<p>In der Realität geht es soweit, dass ich mich an bestimmten Orten gar nicht konzentrieren kann. Ich habe einen krankhaften Aufräumwahn, wenn es um meinen Schreibtisch geht. Ich muss alles minimalistisch halten, die Stifte symmetrisch zur Tischkante legen, alles vom Schreibtisch räumen, was ich gerade nicht brauche damit ich mich überhaupt mal auf eine Sache konzentrieren kann. (Böse Zungen sprechen sogar von Zwangshandlungen <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   ) Sobald etwas in meinem Blickfeld auftaucht, das nicht direkt mit der Tätigkeit verbunden ist, die ich gerade ausführen soll, lasse ich mich dadurch ablenken.</p>
<p>Doch worauf ich eigentlich hinaus will, ist, dass diese (Konzentrations-)Schwäche mir in vielerlei Hinsicht im Wege steht. Denn ebenso chaotisch und flüchtig sehen leider oft auch meine Codes aus. (Wenn ich mich nicht zwinge sie superordentlich zu schreiben, was ich nun immer mehr tue). Das muss nicht, kann nicht und darf nicht sein. Denn Code ist Poesie. Oder um es in schöner WordPressmanier auszudrücken: <strong>Code is Poetry!</strong></p>
<p><strong>Was macht für mich einen guten Programmierer aus?</strong></p>
<p>Neben den Skills, achte ich inzwischen sehr konservativ, man könnte auch sagen spießig auf:</p>
<p><strong>sauberen, übersichtlichen, verständlichen Code</strong></p>
<p>Das bedeutet gut strukturiert, mit Kommentaren versehen und valide.</p>
<p>In gewisser Hinsicht bin ich <strong>Perfektionist</strong>. Das steh im krassen Widerspruch zu meiner Schluderigkeit (ebenso wie meine Ordnungsliebe und Aufräumwahn in krassem Widerspruch zu meiner Faulheit und der Angewohnheit überall alles liegen zu lassen, stehen&#8230;). Ich liebe es gerade Linien zu sehen, ich liebe Ordnung und Symmetrie, ich liebe Organisation. Ich liebe schwarze Farbe auf weißem Hintergrund und ich liebe den Minimalismus. Denjenigen, die in den letzten Tagen das (zweifelhafte) Vergnügen hatten mit mir wegen eines <a href="http://www.le-chaim.de/2009/10/29/unzuverlassige-freelancer/">Designs</a> zu kommunizieren, kommt nun vielleicht wieder in den Sinn, dass ich jedes Mal gesagt habe, wie wichtig es mir ist, dass ein Design übersichtlich und professionell aussieht. Dass man eine Struktur und gerade Linien darin erkennt. Ebenso ist es auch mit Source Code. <strong>Programmierer ist ein Traumberuf, eine Berufung</strong> und in gewisser Hinsicht arbeitet man auch mit Träumen. Das klingt philosophisch, übertrieben und irgendwie ein bisschen kitschig aber es ist die Wahrheit. Wer die Fähigkeit besitzt zu programmieren, der kann <strong>etwas aus dem Nichts erschaffen</strong>. Er kann Gedanken, Ideen in konkrete Dimensionen zwängen. Er kann aus dem, wovon man vorher nur reden und träumen konnte etwas zum Anfassen (bzw. anklicken) schaffen. Er sollte diese Gabe nicht so flüchtig einsetzen, <span style="text-decoration: line-through;">wie ich meine Klausuren schreibe <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </span> sondern mit Sorgfalt und sich Mühe bei seinen Codes geben. Denn: <strong>Code is Poetry!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.le-chaim.de/allgemein/code-is-poetry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spaß mit Twitter ohne API</title>
		<link>http://www.le-chaim.de/tutorials/spas-mit-twitter-ohne-api/</link>
		<comments>http://www.le-chaim.de/tutorials/spas-mit-twitter-ohne-api/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 14:09:25 +0000</pubDate>
		<dc:creator>Chaim</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Codeschnipsel]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.le-chaim.de/?p=836</guid>
		<description><![CDATA[Vor einiger Zeit habe ich einen Gastartikel auf Netheweb veröffentlicht, darüber wie man seinen Twitterfeed im Blog anzeigen kann ohne sich in die Twitterapi einarbeiten zu müssen. Der Artikel zeigt anhand eines Beispiels, wie man die letzten vier Tweets seines Twitteraccounts (oder des Accounts eines Freundes) auf seinem Blog darstellen kann. Hier der Codeschnipsel: $feed [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit habe ich einen Gastartikel auf Netheweb veröffentlicht, darüber wie man seinen <a href="http://netheweb.de/microblogging/twitter-im-blog-anzeigen/">Twitterfeed im Blog anzeigen</a> kann ohne sich in die <strong>Twitterapi</strong> einarbeiten zu müssen. Der Artikel zeigt anhand eines Beispiels, wie man die letzten vier Tweets seines Twitteraccounts (oder des Accounts eines Freundes) auf seinem Blog darstellen kann.</p>
<p>Hier der Codeschnipsel:</p>
<pre lang="php">$feed = "http://search.twitter.com/search.atom?q=from:creanu&amp;rpp=4";
$xml = simplexml_load_file($feed);
echo "<strong>Meine letzten Tweets:</strong> 

";
foreach($xml->entry as $entry) {
$tweet = $entry->title;
$title = htmlentities($tweet,ENT_QUOTES, 'utf-8');
echo $tweet."

";
}</pre>
<p><span id="more-836"></span></p>
<p>Die Variable $feed enthält die URL zum Feed der Suche. Diesen Feed erhält man ganz einfach, indem man das gesuchte (in diesem Fall &#8220;from:creanu&#8221;) in die Twittersearch eingibt und auf &#8220;Rss Feed for this query&#8221; klickt. Diesen Feed kann ich dann mit der simplexml-Funktion bearbeiten. Mittels einer foreach-Schleife werden alle Tweets (in diesem Fall 4 Stück, da wir die Suche mit dem Parameter rpp=4 auf 4 Ausgaben begrenzen) aufgeführt.</p>
<p>So nun möchte ich den Code noch ein wenig umschreiben für einen Hashtag und alle Tweets aufführen, die mit diesem Hastag getaggt wurden. Für dieses Beispiel, möchte ich auf ein Hashtag zurückgreifen, das bisher nur einmal verwendet wurde (zumindes laut der Twittersearch, die nur X Wochen zurück geht). <a href="http://search.twitter.com/search?q=%23hebraeisch">#hebräisch</a>.</p>
<pre lang="php">$feed = "http://search.twitter.com/search.atom?q=%23hebraeisch";
$xml = simplexml_load_file($feed);
echo "<strong>Tweets mit dem Hashtag #hebraeisch:</strong> 

";
foreach($xml-&gt;entry as $entry) {
$tweet = $entry->title;
$title = htmlentities($tweet,ENT_QUOTES, 'utf-8');
echo $tweet."

";
}

?></pre>
<p>&#8220;%23&#8243; in der URL steht für # (wer hätte das gedacht!?)</p>
<p>Mit dem Code werden jetzt alle Tweets mit dem Hashtag #hebraeisch angezeigt. Nun möchte ich passend dazu noch den Twitternamen, desjenigen anzeigen, der den Hashtag getwittert hat.</p>
<pre lang="php">$twitteruser = $entry-&gt;name;</pre>
<p>und dann die Ausgabe:</p>
<pre lang="php">echo $twitteruser.": ".$tweet;</pre>
<p><strong>Woher weiß ich, wie die Objekte heißen!?</strong></p>
<p>Die Variable $entry ist ein Objekt, das mehere Elemente enthält. Nämlich alle Elemente, die auch die XML-Datei enthält. XML-Dateien sind wie folgt aufgebaut:</p>
<pre lang="php">&lt;name&gt;creanu&lt;/name&gt;</pre>
<p><tweet>Mein Tweet</tweet></p>
<p>&lt;datum&gt;07.10.2009&lt;/datum&gt;</p>
<p>Wenn ich nun auf den Inhalt des Elements &#8220;datum&#8221; zugreifen möchte, tue ich das mit $entry-&gt;datum. Um herauszufinden welche Elemente es in der XML Datei gibt und wie sie heißen öffne ich sie im Browser und lasse mir den Quelltext anzeigen. Falls du eingestellt haben solltest, dass sich Feeds automatisch in deinem Feedreader öffnen, klickst du den Feed und speicherst ihn auf deiner Festplatte (Ziel speichern unter&#8230;) um ihn dort mit einem Texteditor zu öffnen und dir die Struktur anzusehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.le-chaim.de/tutorials/spas-mit-twitter-ohne-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP-Frameworks</title>
		<link>http://www.le-chaim.de/webwork/php-frameworks/</link>
		<comments>http://www.le-chaim.de/webwork/php-frameworks/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 18:20:28 +0000</pubDate>
		<dc:creator>Chaim</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Webwork]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.le-chaim.de/?p=616</guid>
		<description><![CDATA[Schon seit langer Zeit schwirrt mir die Idee zu einem &#8220;kleinen&#8221; Projekt im Kopf rum. Eigentlich schon seit 2004 (damals, habe ich diese Idee das erste Mal umgesetzt, leider waren meine PHP Kenntnisse damals noch zu buggy, so dass ich das Projekt schnell wieder vom Netz nahm). Seit einigen Tagen, muss ich aber immer öfter [...]]]></description>
			<content:encoded><![CDATA[<p>Schon seit langer Zeit schwirrt mir die Idee zu einem &#8220;kleinen&#8221; Projekt im Kopf rum. Eigentlich schon seit 2004 (damals, habe ich diese Idee das erste Mal umgesetzt, leider waren meine PHP Kenntnisse damals noch zu buggy, so dass ich das Projekt schnell wieder vom Netz nahm). Seit einigen Tagen, muss ich aber immer öfter dran denken und habe mich entschlossen die Idee nun auch endlich umzusetzen.</p>
<p>Da ich aber möglichst viel Zeit sparen will überlege ich nun ein Framework zu nehmen. Die Vorteile liegen auf der Hand:</p>
<ul>
<li>Weniger Code</li>
<li>Dadurch mehr Zeit</li>
<li>und die Fehlerquote sinkt (was zusätzlich mehr Zeit bringt)</li>
</ul>
<p>Nun steh ich aber vor der Frage welches Framework ich einsetzen soll. Ich muss zugeben, dass ich bisher noch nie mit einem PHP Framework gearbeitet habe. Sondern nur mit den AJAX Frameworks <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://script.aculo.us/">Script.aculo.us</a> und <a href="http://jquery.com/">jQuery.</a></p>
<p>Nach kurzem googlen, kann ich nun zwei Frameworks (die ich auch vorher schon vom Hören-Sagen kannte <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) in die engere Auswahl holen: <a href="http://cakephp.org/">CakePHP</a> und das <a href="http://framework.zend.com/">Zend Framework</a>.</p>
<p><span id="more-616"></span>Hier ein paar Facts zum Zend Framework.</p>
<p><img class="alignnone size-full wp-image-617" style="float:left; margin:15px;" title="zend_framework_logo" src="http://www.le-chaim.de/wp-content/uploads/2009/06/zend_framework_logo.png" alt="zend_framework_logo" width="259" height="136" /></p>
<p>Das Zend Framework, wird von sehr vielen Entwickelern hochgejubelt sei es in Blogposts, in Foren oder über Twitter. Ich habe mir das Framework <a href="http://framework.zend.com/download">hier heruntergeladen</a> und einen Blick drauf geworfen. Mein erster Eindruck: <strong>sehr umfangreich</strong>!</p>
<p><strong>Die Installation:</strong></p>
<p>Die Installation ist sehr einfach. Ihr ladet euch das Framework herunter und entpackt es. Im extrahierten Ordner findet ihr einen Ordner namens <strong>Library</strong>, diesen kopiert ihr in das Verzeichnis in dem eure Dateien liegen. Aus Sicherheitsgründen empfiehlt es sich, den Library Ordner in das Hauptverzeichnis eures Projekts zu legen und alle weiteren nötigen Daten in einen speziellen Unterordner.</p>
<p>Falls ihr nun vorhabt, die mitgelieferten Testdateien auszuprobieren, müsst ihr folgendes Beachten: Die Pfade in den Dateien unterscheiden sich von denen, die wir eben angelegt haben. Wenn ihr z.B. die Amazon-Suche ausprobieren wollt, versucht diese auf den Frameworkordner Zend im selbigen Verzeichnis zurückzugreifen. Das heißt ihr müsst die Pfade entweder anpassen oder ihr schiebt die Datei in das Hauptverzeichnis in dem auch der Ordner Zend (in &#8220;Library&#8221;) befindet.</p>
<p>Also entweder so:</p>
<p>&#8211; Mein Projekt</p>
<p style="padding-left: 30px;">&#8211; library</p>
<p style="padding-left: 60px;">&#8211; Zend</p>
<p style="padding-left: 60px;">&#8211; datei.php</p>
<p>Oder ihr schnappt euch einfach den Zend Ordner, knallt ihn ins Hauptverzeichnis und packt die Datei ebenfalls ins Hauptverzeichnis.</p>
<p><strong>Sicheres arbeiten mit dem Zend Framework</strong></p>
<p>Ich habe oben schon erwähnt, dass es sicherer ist die Projektdaten in einem Unterordner auszuführen und die Library im Hauptverzeichnis zu behalten. Per .htaccess sollte man dann alles außer dem Frontend für den Benutzer vor unbefugten Zugriffen schützen. Ihr findet in <a href="http://www.zf-tutorials.de/archives/41#bootstrap">diesem Tutorial</a> noch eine sehr gute Erklärung dafür. Die Idee ist folgende:</p>
<p>Ich habe ein Hauptverzeichnis. Darin liegt mein <em><strong>Library</strong></em> Ordner (inkl. <em>Zend</em> Ordner mit den Frameworkdateien). Dann habe ich einen Ordner in dem sich das Frontend für meinen User befindet. Dieser Ordner heißt <em><strong>public</strong></em>. Und ich habe einen <em><strong>application</strong></em> Ordner indem sich die von mir angepassten Dateien befinden. Der User bekommt nur den public Ordner zu sehen. Alles andere wird via .htaccess für den User ausgeschlossen.</p>
<p><strong>Modul &#8211; View &#8211; Controller </strong></p>
<p>Die Zend Technologie setzt auf <strong>MVC</strong>, dies steht (wie man unschwer aus der Überschrift erkennen kann) für <em>Modul View Controller</em>. Nach dem MVC Prinzip wird eine Anwendung in drei wesentliche Teilkomponenten aufgeteilt. Die nötigen Datensätze (Die Modul), das Frontend für den Benutzer (View) und sozsuagen die Engine dahinter, die alles steuert (Controller).</p>
<p>Da Zend objektorientiert ist läuft das natürlich alles mit Klassen, Funktionen etc.</p>
<p>Mit der Hilfe des <a href="http://framework.zend.com/docs/overview">Getting Startes</a> von ZF habe ich mich heute Nachmittag schon ganz gut in die Materie einarbeiten können. Ich kann euch das Tutorial und das umfangreiche <a href="http://framework.zend.com/manual/en/">Manual</a> nur empfehlen. Außerdem gibt es noch ein paar <a href="http://framework.zend.com/docs/screencasts">Screencasts</a> die die Sache sehr gut verdeutlichen.</p>
<p>Nachdem ich jetzt den ganzen Nachmittag mit dem Zend Framework verbracht habe, werde ich mich heute nicht mehr in Cake einarbeiten <img src='http://www.le-chaim.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  um es in diesem Artikel vorzustellen. Stattdessen werde ich jetzt erstmal weiter mit Zend arbeiten und Cake evtl. irgendwann mal hier vorstellen.</p>
<p>Zum Schluss noch mein Fazit: Der erste Eindruck hat sich bewahrheitet, Zend ist extrem umfangreich! Wer glaubt die Nutzung eines Frameworks erspart das Lernen von PHP liegt gewaltig daneben. Zend ist ziemlich komplex und erfordert grundlegende Kenntnisse in PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.le-chaim.de/webwork/php-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

