<?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>ajaveeb &#187; Entwicklung</title>
	<atom:link href="http://ajaveeb.de/tags/entwicklung/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaveeb.de</link>
	<description>Das Technikblog von Benjamin Hofmann</description>
	<lastBuildDate>Fri, 26 Feb 2010 20:21:40 +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>Die ideale IDE</title>
		<link>http://ajaveeb.de/die-ideale-ide-714</link>
		<comments>http://ajaveeb.de/die-ideale-ide-714#comments</comments>
		<pubDate>Fri, 26 Feb 2010 20:21:40 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=714</guid>
		<description><![CDATA[... gibt es nicht. Das steht fest, da keine alles kann. Jedoch gibt es ein paar interessante IDEs f&#252;r PHP-Entwickler.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/1d883f716e93d8b3e1d97ce7458dd1de.jpg" alt="Die ideale IDE" width="596" height="298" /></p><p style="font-weight:bold">... gibt es nicht. Das steht fest, da keine alles kann. Jedoch gibt es ein paar interessante IDEs für <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Entwickler.</p><p>Wer <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> professionell entwickelt wird sich fr&#252;her oder sp&#228;ter auf die Suche nach einer geeigneten <a href="http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung">IDE</a> begeben. Inzwischen gibt es hier auch f&#252;r <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> einige interessante St&#252;cke <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a>: <a href="http://www.eclipse.org/pdt/">PDT</a>, <a href="http://www.zend.com/de/products/studio/">Zend Studio</a>, <a href="http://netbeans.org/features/php/">NetBeans for PHP</a>, <a href="http://www.phpbar.de/w/PHP_IDE_Software%C3%BCbersicht">uvm.</a></p>
<p>F&#252;r welche IDE man sich entscheidet h&#228;ngt entweder von den Pr&#228;ferenzen des Entwicklers ab oder davon was die Firma daf&#252;r ausgeben will. Immerhin hat man die Wahl zwischen ausgereiften kostenlosen Produkten und kommerziellen Varianten, die je nach Lizenztyp auch mal schnell ins Geld gehen k&#246;nnen.</p>
<p>Eine weitere Frage, die man sich stellen muss ist die, was die IDE alles k&#246;nnen soll/muss. <a href="http://en.wikipedia.org/wiki/Autocomplete#In_source_code_editors">Code-Completion</a> versteht sich von selbst, aber was gibt es sonst noch? <a href="http://subversion.tigris.org/">SVN</a>-/<a href="http://git-scm.com/">Git</a>-Integration? <a href="http://de.wikipedia.org/wiki/File_Transfer_Protocol">FTP</a>? Automatische Erstellung von Dokumentationen anhand des Codes? Datenbank-Management? Debugger? Automatisierte <a href="http://www.phpunit.de/">Unit-Tests</a>? Oder etwas ganz anderes?</p>
<p>Und wer sich bis jetzt noch nicht gefragt hat warum ich genau die drei oben genannten IDEs aufgez&#228;hlt habe erf&#228;hrt jetzt warum. Das sind n&#228;mlich genau diejenigen, die ich bisher verwendet und getestet habe. Hier also nun meine Eindr&#252;cke.</p>
<h2>PDT</h2>
<p><a href="http://www.eclipse.org/pdt/">PDT</a> ist eine freie IDE, die auf <a href="http://www.eclipse.org/">Eclipse</a> basiert. Dadurch, dass hier schon eine ausgereifte IDE im Hintergrund arbeitet und die <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Integration eher durch Plugins erfolgt als durch Einbau in die Basis hat man viele ben&#246;tigte Features quasi schon frei Haus.</p>
<p>Jedoch ist PDT in meinen Augen bei weitem noch nicht ausgereift und es fehlen viele Features, die man als professioneller <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Entwickler ben&#246;tigt. Zudem laufen viele Prozesse in der IDE, die man f&#252;r die Entwicklung von <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> gar nicht ben&#246;tigt, was die <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> teilweise m&#228;chtig ausbremsen kann.</p>
<h2>Zend Studio</h2>
<p>Wenn es nach Zend geht ist das <a href="http://www.zend.com/de/products/studio/">Zend Studio</a> die ultimative IDE f&#252;r <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>. Fr&#252;her war sie das auch, zumindest bis Version 5.5. Seit der Nutzung von Eclipse und PDT als Basis hatte ich nur noch Probleme. Also jetzt bitte nicht falsch verstehen, die IDE ist wirklich gro&#223;artig, wenn sie funktioniert. Jedoch war zumindest in meinem Fall einiges an Handarbeit n&#246;tig bis es soweit war. Und da ich mich sehr &#252;ber diese s&#252;ndhaft teure verbuggte IDE ge&#228;rgert habe will ich auch gar nicht mehr Worte dar&#252;ber verlieren.</p>
<h2>NetBeans for <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a></h2>
<p>Seit einiger Zeit nutze ich <a href="http://netbeans.org/features/php/">NetBeans for PHP</a>. Eine super IDE, die wirklich schnell und zuverl&#228;ssig arbeitet und einige sehr interessante Features hat, die sonst keine IDE zu bieten hat. Nat&#252;rlich gibt es auch hier nicht alles, was man sich w&#252;nscht, aber das was vorhanden ist funktioniert einwandfrei.</p>
<h2>Und du?</h2>
<p>Nun liegt es an dir. Welche IDE nutzt du und warum?</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/wili/242259195/">Office: want Otso&#8217;s job?</a> von <a href="http://www.flickr.com/photos/wili/">wili hybrid</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/die-ideale-ide-714#comments">12 Kommentare</a> &middot; <a href="http://ajaveeb.de/die-ideale-ide-714">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/die-ideale-ide-714/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>(Mikro-)Optimierungen</title>
		<link>http://ajaveeb.de/mikro-optimierungen-701</link>
		<comments>http://ajaveeb.de/mikro-optimierungen-701#comments</comments>
		<pubDate>Wed, 24 Feb 2010 06:30:37 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Beiträge]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=701</guid>
		<description><![CDATA[Optimieren von Code ist toll und kann gewaltige Vorteile in der Performance bringen. Aber man sollte es nicht &#252;bertreiben.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/403ab68c4e554f924b0332909dfb5e9d.jpg" alt="(Mikro-)Optimierungen" width="596" height="298" /></p><p style="font-weight:bold">Optimieren von Code ist toll und kann gewaltige Vorteile in der Performance bringen. Aber man sollte es nicht übertreiben.</p><p>Es gibt dutzende, wenn nicht sogar hunderte oder tausende, Wege eine Anwendung performanter zu gestalten. Einer der meistgenutzten Wege ist die <a href="http://ajaveeb.de/tags/optimierung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Optimierung">Optimierung</a> des Codes. Hierbei gibt es nat&#252;rlich einige sehr interessante und gute Ans&#228;tze, aber auch viele, die die Wartungsf&#228;higkeit des Codes einschr&#228;nken oder schlichtweg nur minimale Gewinne bringen.</p>
<p>Vorweg wollen wir uns jedoch mit der Frage besch&#228;ftigen, ob Optimierungen wirklich n&#246;tig sind. Wenn eine Anwendung in einer f&#252;r den Nutzer zumutbaren Zeit reagiert sollte man sich keine Gedanken machen hier noch etwas zu verbessern. Ebenso sollte man sich keinen unn&#246;tigen Aufwand zumuten, wenn sich das Problem durch Aufstocken der Hardware l&#246;sen l&#228;sst. Meist bringt das mehr und kommt g&#252;nstiger. Man sollte jedoch dringend etwas unternehmen, wenn sich die Hardware sowieso schon auf einem Maximallevel befindet und diese an ihre Grenzen st&#246;&#223;t.</p>
<p>Der &#252;bliche Weg ist dann mithilfe eines <a href="http://de.wikipedia.org/wiki/Profiler_%28Programmierung%29">Profilers</a> die Stellen im Code zu finden, die die Anwendung ausbremsen. Sobald man sie gefunden hat macht man sich Gedanken, was man verbessern kann. Beispiele hierf&#252;r sind weniger Datenbankabfragen ausf&#252;hren, Ergebnisse zu cachen, Statements optimieren, etc.</p>
<p>Was man jedoch tunlichst vermeiden sollte sind Mikro-Optimierungen. In <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> gibt es hierf&#252;r <a href="http://www.phpbar.de/w/Code-Optimierungen">einige</a> <a href="http://www.drweb.de/magazin/schneller-php-schneller/">tolle</a> <a href="http://www.4webmaster.net/tutorials_artikel/php_mysql/optimiert_programmieren_in_php.htm">Beispiele</a>, z.B. Strings in einfache Hochkommata schreiben, Prekrement statt Postkrement verwenden, k&#252;rzere Variablennamen zu verwenden, usw. Ich pers&#246;nlich habe mir zwar einige Sachen davon angew&#246;hnt, da es nie schaden kann hier und da eine tausendstel Millisekunde zu sparen, jedoch bringen diese Optimierungen meistens keine Verbesserung im Gegensatz zum vorherigen Stand. Viel wichtiger ist es seinen Code nochmal zu &#252;berdenken und alternative Methoden zu finden, die die Ausf&#252;hrung beschleunigen.</p>
<p>Irgendwie habe ich gerade das Gef&#252;hl, dass ich was komplett anderes geschrieben habe als ich urspr&#252;nglich wollte, aber die wichtigste Message habe ich genannt und darauf kommt es an. &#220;brigens gibt es auch <a href="http://www.phphatesme.com/blog/allgemein/mikro-optimierung/">bei PHP hates me einen Artikel dazu</a>.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/fabiovenni/264808733/">Old street at the speed of light</a> von <a href="http://www.flickr.com/photos/fabiovenni/">fabbio</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/mikro-optimierungen-701#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/mikro-optimierungen-701">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/mikro-optimierungen-701/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Warum PHP?</title>
		<link>http://ajaveeb.de/warum-php-688</link>
		<comments>http://ajaveeb.de/warum-php-688#comments</comments>
		<pubDate>Sun, 21 Feb 2010 17:53:37 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Beiträge]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Umfrage]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=688</guid>
		<description><![CDATA[PHP macht es enorm einfach schnell auch durchaus komplexe Anwendungen zu erstellen. Darum ist es f&#252;r mich die ideale Sprache.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/187363106b8c9e562a0afac745cc2bed.jpg" alt="Warum PHP?" width="596" height="298" /></p><p style="font-weight:bold"><a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> macht es enorm einfach schnell auch durchaus komplexe Anwendungen zu erstellen. Darum ist es für mich die ideale Sprache.</p><p>Dieser Artikel bezieht sich auf einen Beitrag im <a href="http://phplabor.wordpress.com/">PHP Labor</a>, der die Frage stellt &#8220;<a href="http://phplabor.wordpress.com/2010/02/17/warum-php/">Warum PHP?</a>&#8220;. Der Artikel ist sehr interessant zu lesen, da aber jeder seine eigene Meinung hat, was auch gut ist, will ich mich heute auch dieser Frage stellen und eine Antwort darauf geben.</p>
<p>Zuerst einmal der Weg wie ich zu <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> gekommen bin. Vor ein paar Jahren fing ich an mit simplem HTML Websites zu erstellen. Irgendwann folgte dann CSS und die Websites wurden komplexer. Gerade als ich soweit war diese beiden Sprachen zu verstehen hatte ich das erste Mal Kontakt mit <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>. Ich wollte damals ein Forum f&#252;r die Mitglieder meines &#8220;Clans&#8221; bereitstellen.</p>
<p>Leider hatte ich damals keine Ahnung was ich  mache und habe einfach so lang rumgewurschtelt bis es gepasst hat. Dann fing jedoch recht bald danach meine Ausbildung zum Fachinformatiker (Anwendungsentwicklung) bei der <a href="http://www.infomax-online.de">infomax websolutions GmbH</a> an. Dort hatte ich dann zum ersten Mal mit einer richtigen Anwendung zu tun. Unter Anleitung habe ich dann Schritt f&#252;r Schritt die Sprache gelernt.</p>
<p>Heute, fast drei Jahre danach, wage ich zu behaupten, dass ich <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> durchaus gut kenne und auch kann.</p>
<p>Aber warum <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> und nicht Java, C#, Python oder sogar Delphi? Nun, jede Sprache hat ihren Reiz und auch einen mehr oder weniger festgelegten Einsatzzweck. Bei <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> fasziniert mich die Einfachheit. Es ist super einfach die Sprache zu lernen und damit Anwendungen zu programmieren. Von einfachen Skripten, die nur einen einzigen Zweck haben bis hin zu hochkomplizierten Anwendungen nach allen Regeln der Programmierkunst ist alles m&#246;glich. Und das meist recht schnell.</p>
<p>Auch der Einstieg ist schnell geschehen. Installiere dir einen Webserver mit <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> und lege los. Es muss nichts kompiliert werden, sondern &#196;nderungen sind sofort sichtbar. Alles Dinge, die ich mag und so schnell nicht aufgeben will.</p>
<p>So, das war meine Meinung zu der Frage &#8220;Warum <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>?&#8221;. Was sagst du dazu?</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/lizard_queen/114587853/">Big 5 &#8211; Elephant</a> von <a href="http://www.flickr.com/photos/lizard_queen/">TheLizardQueen</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/warum-php-688#comments">5 Kommentare</a> &middot; <a href="http://ajaveeb.de/warum-php-688">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/warum-php-688/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin: dB Twtpoll</title>
		<link>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648</link>
		<comments>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648#comments</comments>
		<pubDate>Mon, 10 Aug 2009 21:17:27 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twtpoll]]></category>
		<category><![CDATA[Umfrage]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=648</guid>
		<description><![CDATA[You are registered on Twitter, own a blog and like to create polls? Then this plugin might be the right thing for you.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/ebb14f4d7954059c8f12dcd692f74341.jpg" alt="WordPress Plugin: dB Twtpoll" width="596" height="298" /></p><p style="font-weight:bold">You are registered on <a href="http://ajaveeb.de/tags/twitter" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twitter">Twitter</a>, own a blog and like to create polls? Then this plugin might be the right thing for you.</p><p>Just to say it before anyone complains. This is my first public released plugin for <a href="http://wordpress.org">WordPress</a> and I´m not used to write english posts as you can tell if you look around a bit.</p>
<h2>What´s this all about?</h2>
<p>I like to create polls with <a href="http://twtpoll.com">Twtpoll</a>, a neat little service to create votings with your account from <a href="http://twitter.com">Twitter</a>.</p>
<p>These polls can be embedded in a website by using two lines of javascript code. That´s not a difficult thing to do, but it´s somehow inflexible. After embedding a poll you have javascript code directly in your post. That´s a bad thing because of three simple reasons:</p>
<ol>
<li>It´s not to easy to read. Especially for people that don´t speak HTML.</li>
<li>If the code for embedding a poll gets changed in future you have to look through all your posts with polls and update it.</li>
<li>Your feed subscribers could by chance not be able to view the poll, because script tags are filtered by their feedreader. If this is the case and you are using this plugin a fallback will be shown with a link to the original post.</li>
</ol>
<h2>So, where to get the plugin?</h2>
<p>At this very moment it isn´t listed in the <a href="http://wordpress.org/extend/plugins/">Plugin Directory at WordPress</a>. So you can only download it from here.</p>
<p><a href="http://ajaveeb.de/wp-content/uploads/2009/08/dB-Twtpoll.zip">DOWNLOAD</a></p>
<h2>How do I install the plugin now?</h2>
<p>That´s as easy as always with WordPress. Unpack the archive, upload it to your <code>wp-content</code> directory and activate it at the plugins page.</p>
<h2>I installed it. How do I embed polls?</h2>
<p>That´s really easy. Just add the shortcode <code>[twtpoll]</code> with the attribute <code>id</code> anywhere in your post. After this the poll will be shown at this exact position.</p>
<p>For now it is not possible to read and copy the ID of your poll from anywhere on Twtpoll. Sounds confusing, but you can get the ID if you take a look at the URL in your browsers address bar. The last part of it is the ID you need to include your poll. Just copy it and paste it within the shortcode, e.g. <code>[twtpoll id="d6iby3"]</code></p>
<h2>Something else?</h2>
<p>Nope. Not really. I just hope you have fun with this plugin and my English wasn´t too bad. If you encounter any spelling or grammar errors please share this knowledge with me in the <a href="#respond">comments</a>.</p>
<p>One more thing. If you have a nice idea to extend the plugin don´t hesitate to let me know in the <a href="#respond">comments</a>. I appreciate every feedback.</p>
<p>&#8212;<br />
Photo: <a href="http://www.flickr.com/photos/theresasthompson/2999130055/">VOTE</a> by <a href="http://www.flickr.com/photos/theresasthompson/">Theresa Thompson</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/wordpress-plugin-db-twtpoll-648#comments">10 Kommentare</a> &middot; <a href="http://ajaveeb.de/wordpress-plugin-db-twtpoll-648">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/wordpress-plugin-db-twtpoll-648/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Die Ergebnisse der ersten Umfrage</title>
		<link>http://ajaveeb.de/die-ergebnisse-der-erste-umfrage-627</link>
		<comments>http://ajaveeb.de/die-ergebnisse-der-erste-umfrage-627#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:07:37 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Beiträge]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Operatoren]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[Umfrage]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=627</guid>
		<description><![CDATA[Die Umfrage zu den zuk&#252;nftigen Themen dieses Blogs ist vorbei und die Ergebnisse sind da. Hier ist die Zusammenfassung.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/50a42c29faa94674747db9d2a1554903.jpg" alt="Die Ergebnisse der ersten Umfrage" width="596" height="298" /></p><p style="font-weight:bold">Die <a href="http://ajaveeb.de/tags/umfrage" class="st_tag internal_tag" rel="tag" title="Posts tagged with Umfrage">Umfrage</a> zu den zukünftigen Themen dieses Blogs ist vorbei und die Ergebnisse sind da. Hier ist die Zusammenfassung.</p><p>Ich wei&#223;, ich wei&#223;. Ich bin schon f&#252;nf Tage zu sp&#228;t dran die Ergebnisse <a href="http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588">meiner Umfrage</a> bekannt zu geben. Aber lieber sp&#228;t als nie und deswegen kommen hier auch schon die Ergebnisse:</p>
<ul>
<li><strong>45%</strong>: Entwurfsmuster (Design Patterns)</li>
<li><strong>21%</strong>: Regul&#228;re Ausdr&#252;cke einfach erkl&#228;rt</li>
<li><strong>14%</strong>: <a href="http://ajaveeb.de/tags/operatoren" class="st_tag internal_tag" rel="tag" title="Posts tagged with Operatoren">Operatoren</a> in <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> und deren Verwendung</li>
<li><strong>10%</strong>: Wie generiere ich ein Bild aus meinem Feed?</li>
<li><strong>10%</strong>: dB_Image &#8211; Eine <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Klasse zur Bildbearbeitung</li>
</ul>
<p>Insgesamt haben 42 Leute abgestimmt. H&#228;tte mehr sein k&#246;nnen, bin aber trotzdem ganz zufrieden damit.</p>
<p>So, nun stellt sich die Frage ab wann die Artikel online gehen. Da ich kaum glaube diese Woche viel zum Bloggen zu kommen werde ich versuchen am Wochenende die ersten paar Artikel zu schreiben und dann unter der Woche St&#252;ck f&#252;r St&#252;ck zu ver&#246;ffentlichen.</p>
<p>Anfangen werde ich nat&#252;rlich mit den Entwurfsmustern, was eine Serie mit mindestens 15 Artikeln wird. Jeder Artikel wird dann ein Pattern behandeln, alles andere w&#228;re auch zuviel auf einmal, meiner Meinung nach. Anschlie&#223;end kommen die regul&#228;ren Ausdr&#252;cke zum Zug, was ein langer Artikel werden d&#252;rfte. Die <a href="http://ajaveeb.de/tags/operatoren" class="st_tag internal_tag" rel="tag" title="Posts tagged with Operatoren">Operatoren</a> will ich wiederum in mehreren beschreiben, da es eine Vielzahl davon gibt. Die letzten beiden Pl&#228;tze werden mit jeweils einem Artikel gew&#252;rdigt.</p>
<p>Damit sollte der Stoff dieses Blogs schon mal nicht so schnell ausgehen. Ich freue mich darauf und ich hoffe ihr auch <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/mysticmusings/3446573894/">I VOTED !!!!</a> von <a href="http://www.flickr.com/photos/mysticmusings/">Mystic Musings</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/die-ergebnisse-der-erste-umfrage-627#comments">2 Kommentare</a> &middot; <a href="http://ajaveeb.de/die-ergebnisse-der-erste-umfrage-627">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/die-ergebnisse-der-erste-umfrage-627/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>maiksi.de &#8211; Mein Lifestream geht online</title>
		<link>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602</link>
		<comments>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602#comments</comments>
		<pubDate>Sun, 12 Jul 2009 22:44:07 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Launch]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekt]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=602</guid>
		<description><![CDATA[Lange habe ich den Launch meines Lifestreams geplant, jetzt ist es endlich soweit.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/dfa7bdb0f3356de03ed5e8bd4354be93.jpg" alt="maiksi.de &#8211; Mein Lifestream geht online" width="596" height="298" /></p><p style="font-weight:bold">Lange habe ich den <a href="http://ajaveeb.de/tags/launch" class="st_tag internal_tag" rel="tag" title="Posts tagged with Launch">Launch</a> meines Lifestreams geplant, jetzt ist es endlich soweit.</p><p>Seit heute ist mein neuestest Projekt online: <a href="http://maiksi.de">maiksi.de</a>, mein Lifestream. Urspr&#252;nglich ganz anders geplant, aber jetzt wesentlich besser und viel cooler.</p>
<p>Urspr&#252;nglich wollte ich meinen Lifestream mit <a href="http://www.sweetcron.com/">Sweetcron</a> umsetzen, einem wirklich sch&#246;nen St&#252;ck <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a>, welches per Cronjob alle gepflegten Feeds einliest und chronologisch alle darin enthaltenen Artikel auflistet. Doch so sehr ich es auch versucht habe wollte kein anst&#228;ndiges Design dabei herauskommen.</p>
<p>Doch gestern kam mir die glorreiche Idee eines meiner alten Designs als Grundlage zu verwenden und damit mein Feed fressendes Monster selbst zu programmieren. Das Basisdesign war ja schon da, ich musste es nur noch an den neuen Einsatzzweck anpassen, weshalb die Entwicklung auch sehr schnell vonstatten gehen konnte.</p>
<h2>Technik</h2>
<p>Dass diese Website auf <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> basiert, brauche ich wohl niemandem zu erz&#228;hlen, immerhin ist diese Sprache mein Steckenpferd. Doch dazu wollte ich anfangs noch HTML 5 verwenden, habe es aber sein lassen, da wirklich nahezu kein Browser das unterst&#252;tzt, was ich nutzen wollte. Also bin ich beim guten alten XHTML geblieben. Abgesehen davon ist noch <a href="http://jquery.com/">jQuery</a> auf der Clientseite und <a href="http://magpierss.sourceforge.net/">Magpie RSS</a> auf der Serverseite im Einsatz.</p>
<p>Wird die Seite aufgerufen wird f&#252;r jede gelistete Website ein AJAX-Request abgesetzt, der mir im JSON-Format ein paar Basisdaten und die letzten 5 Eintr&#228;ge im Feed mitsamt URL und Titel zur&#252;ckgibt. Aus diesen Daten werden kleine Fenster gebaut, die beim Klick auf den Titel einer Seite angezeigt werden und mittels <a href="http://jqueryui.com/">jQuery UI</a> verschoben werden k&#246;nnen.</p>
<h2>Antrieb</h2>
<p>Als Internetjunkie bin ich nahezu den ganzen Tag im Netz unterwegs und hinterlasse hier und dort diverse Spuren. Mit einem Lifestream k&#246;nnen diese Aktivit&#228;ten gesammelt und aggregiert werden. Da die Umsetzung mit Sweetcron jedoch nichts werden wollte habe ich einen neuen Antrieb gefunden, n&#228;mlich einen Lifestream zu schaffen, der ganz anders als alle anderen zuvor ist.</p>
<p>Ich denke, dass mir das mit dem schlichten Design und der interaktiven Umsetzung durchaus gelungen ist. Mittels eines kurzen Klicks ist man &#252;ber jede meiner Aktivit&#228;ten informiert und deswegen ist auch der Name maiksi perfekt. Dieses Wort stammt aus der Sprache <a href="http://de.wikipedia.org/wiki/Tagalog">Tagalog</a> und bedeutet &#8220;kurz&#8221;.</p>
<p>Und jetzt hoffe ich mal, dass euch diese Seite ebenso gut gef&#228;llt wie mir und bin gespannt auf Feedback <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/maiksi-de-mein-lifestream-geht-online-602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welche Artikel wollt ihr demn&#228;chst bei ajaveeb lesen?</title>
		<link>http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588</link>
		<comments>http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588#comments</comments>
		<pubDate>Mon, 06 Jul 2009 18:39:29 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Beiträge]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Operatoren]]></category>
		<category><![CDATA[Pattern]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[Umfrage]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=588</guid>
		<description><![CDATA[Diese Frage stelle ich einfach mal so in den Raum und habe eine Umfrage dazu er&#246;ffnet. Mach mit und trage einen Teil zu diesem Blog bei.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/3c90a29206616fcad1befa51b05ff52b.jpg" alt="Welche Artikel wollt ihr demn&#228;chst bei ajaveeb lesen?" width="596" height="298" /></p><p style="font-weight:bold">Diese Frage stelle ich einfach mal so in den Raum und habe eine <a href="http://ajaveeb.de/tags/umfrage" class="st_tag internal_tag" rel="tag" title="Posts tagged with Umfrage">Umfrage</a> dazu eröffnet. Mach mit und trage einen Teil zu diesem Blog bei.</p><p><a href="http://twtpoll.com/r1xhgi">Diese Umfrage</a> hat zun&#228;chst zwei Hintergrundgedanken:</p>
<ol>
<li>Was interessiert euch am meisten?</li>
<li>Ich kann <a href="http://twtpoll.com/">twtpoll</a> damit ausprobieren.</li>
</ol>
<h2>Welche Themen gibt es?</h2>
<p>Das ist wohl die Frage, die am brennendsten auf der Zunge liegt und deshalb hier eine kleine Liste der Artikel, die zur Auswahl stehen.</p>
<ul>
<li><a href="http://ajaveeb.de/tags/operatoren" class="st_tag internal_tag" rel="tag" title="Posts tagged with Operatoren">Operatoren</a> in <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> und deren Verwendung</li>
<li>Entwurfsmuster (Design Patterns)</li>
<li>Regul&#228;re Ausdr&#252;cke einfach erkl&#228;rt</li>
<li>Wie generiere ich ein Bild aus meinem Feed?</li>
<li>dB_Image &#8211; Eine <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Klasse zur Bildbearbeitung</li>
</ul>
<p>Die Themen decken einige interessante Bereiche der Softwareprogrammierung ab, mit denen man sich als Programmierer immer wieder herumschlagen muss. Die letzten beiden Themen sind jedoch in meinem eigenen Interesse und stellen Entwicklungen von mir dar, die ich mit den dazugeh&#246;rigen Artikeln ver&#246;ffentlichen und den Weg von der Idee bis zum fertigen Produkt vorstellen will.</p>
<p>Damit keine Missverst&#228;ndnisse entstehen: Ich werde &#252;ber alle diese Themen schreiben, das steht au&#223;er Frage. Nur will ich mit dieser <a href="http://ajaveeb.de/tags/umfrage" class="st_tag internal_tag" rel="tag" title="Posts tagged with Umfrage">Umfrage</a> kl&#228;ren was ihr am Interessantesten findet und was ich demnach als erstes ver&#246;ffentlichen werde.</p>
<h2>Die <a href="http://ajaveeb.de/tags/umfrage" class="st_tag internal_tag" rel="tag" title="Posts tagged with Umfrage">Umfrage</a></h2>
<p>Zum Abschluss noch die <a href="http://ajaveeb.de/tags/umfrage" class="st_tag internal_tag" rel="tag" title="Posts tagged with Umfrage">Umfrage</a> selbst. Wer lieber direkt bei <a href="http://twtpoll.com/">twtpoll</a> teilnehmen will kann das auch nach einem Klick auf <a href="http://twtpoll.com/r1xhgi">diesen Link</a> tun.</p>
<script src="http://twtpoll.com/js/badge.js" type="text/javascript"></script><script src="http://twtpoll.com/badge/?twt=r1xhgi" type="text/javascript"></script><noscript><p>There is a poll embedded in this post. Please visit the <a href="http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588">original post</a> to vote.</p></noscript>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/viggum/3004820550/">VOTE(d)</a> von <a href="http://www.flickr.com/photos/viggum/">ashley.adcox</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588#comments">7 Kommentare</a> &middot; <a href="http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/welche-artikel-wollt-ihr-demnaechst-bei-ajaveeb-lesen-588/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>String Klasse: Version 1.1.0</title>
		<link>http://ajaveeb.de/string-klasse-version-1-1-0-572</link>
		<comments>http://ajaveeb.de/string-klasse-version-1-1-0-572#comments</comments>
		<pubDate>Sun, 05 Jul 2009 14:25:45 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=572</guid>
		<description><![CDATA[Dank den Kommentaren zu den bisherigen Versionen ist es mir heute m&#246;glich eine neue Version meiner String-Klasse f&#252;r PHP zu ver&#246;ffentlichen.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/da942cc25621a5b0a06956979175e8a0.jpg" alt="String Klasse: Version 1.1.0" width="596" height="298" /></p><p style="font-weight:bold">Dank den Kommentaren zu den bisherigen Versionen ist es mir heute möglich eine neue Version meiner String-Klasse für <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> zu veröffentlichen.</p><p>Diese Version gammelt nun schon seit weit &#252;ber einem Monat auf meinem PC herum, hat aber erst heute ihre Vollendung gefunden dank dem <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331#comment-431">Kommentar von Phil</a>. Er hat mich darauf gebracht zwei magische Methoden einzubauen, mit denen die M&#246;glichkeiten der Klasse enorm gestiegen sind.</p>
<h2>Neue Features</h2>
<p>Da dieses Release neue Features beinhaltet und nicht nur Bugs und Optimierungen enth&#228;lt verdient es auch den Sprung von <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331">Version 1.0.1</a> auf 1.1.0. Welche Features das genau sind werde ich jetzt versuchen zu erl&#228;utern.</p>
<h3>String erweitern</h3>
<p>Es gibt jetzt gleich vier neue Methoden einen String zu erweitern: <code>add()</code>, <code>addMore()</code>, <code>insert()</code>, <code>insertMore()</code>.</p>
<p>Mit der <code>add()</code>-Methode ist es m&#246;glich einen anderen String oder auch ein String-Objekt an das bisher bestehende anzuf&#252;gen oder voranzustellen. Man kann auch mit einem Parameter angeben, was zwischen den Strings stehen soll. Mit <code>addMore()</code> kann man im Grunde genommen genau das Gleiche machen, nur kann man hier ein Array aus Strings oder String-Objekten &#252;bergeben.</p>
<p>Mittels <code>insert()</code> kann man einen String oder auch hier wieder ein String-Objekt in das bisherige String-Objekt einf&#252;gen. Dabei gibt man &#252;ber einen Parameter den Offset an. Hier macht <code>insertMore()</code> auch wieder das Gleiche, nur dass es die in einem Array &#252;bergebenen Strings nacheinander einf&#252;gt.</p>
<h3>String kopieren</h3>
<p>Es ist nun auch m&#246;glich ein String-Objekt zu kopieren mittels der Methode <code>copy()</code>. Zur&#252;ckgegeben wird ein neues String-Objekt, welches den gleichen Inhalt hat, wie das, welches kopiert wurde.</p>
<h3>Magische Methoden</h3>
<p>Mit <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> 5 wurden <a href="http://php.net/manual/en/language.oop5.magic.php">magische Methoden</a> in Objekten eingef&#252;hrt. Wie eingangs erw&#228;hnt habe ich heute erste die beiden Methoden <code>__call()</code> und <code>__toString()</code> eingebaut.</p>
<p>Erstere ist daf&#252;r zust&#228;ndig die M&#246;glichkeiten dieser Klasse enorm zu erweitern, da man dadurch jede beliebige String-Funktion aufrufen kann und diese dann auf das Objekt angewendet wird. Beispiel:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Gibt &#39;is is the new st&#39; aus</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39;This is the new string.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span><span class="sy0">-&gt;</span><span class="me1">substr</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">16</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Wie man sieht ist diese Methode ein wirklich m&#228;chtiges Werkzeug und auch <a href="http://ajaveeb.de/php-klasse-fuer-strings-306#comment-225">Simon</a> sollte jetzt zufrieden gestellt sein <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Die Methode <code>__toString()</code> sorgt daf&#252;r, dass das Objekt direkt ausgegeben werden kann. Normalerweise w&#252;rde eine Warnung auftreten, doch jetzt wird schlicht und ergreifend der String zur&#252;ckgegeben. Das kann dann so aussehen:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// Gibt &#39;This is the new string.&#39; aus</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39;This is the new string.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h3>Vererbbarkeit</h3>
<p>Als letzte gravierende &#196;nderung ist es nun m&#246;glich von der String-Klasse abzuleiten, um eigene Erweiterungen daf&#252;r zu schreiben. Man kann in den abgeleiteten Klassen jede Methode verwenden, die die String-Klasse selbst hat, da alles entweder von au&#223;en zug&#228;nglich, also <code>public</code> ist oder gesch&#252;tzt (<code>protected</code>).</p>
<p>Diese M&#246;glichkeit habe ich mir auch direkt zunutze gemacht und eine Ableitung geschrieben: JavascriptString. Mit dieser Klasse ist es m&#246;glich viele String-Funktionen, die in Javascript zur Verf&#252;gung stehen auch in <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> zu nutzen.</p>
<h2>Dokumentation</h2>
<p>Dieser Artikel ist nicht allzu ausf&#252;hrlich und das soll er auch gar nicht sein. Ich muss nicht jede einzelne Zeile oder Methode ausf&#252;hrlich erkl&#228;ren, denn die Klasse selbst ist ausf&#252;hrlichst dokumentiert und mit Beispielen versehen. Wer jedoch einen schnellen Blick riskieren will<a href="http://development.ajaveeb.de/string/"> findet hier eine ausf&#252;hrliche Dokumentation</a>, die mit <a href="http://www.phpdoc.org/">phpDocumentor</a> erstellt wurde.</p>
<h2><a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a></h2>
<p>Da ich inzwischen <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> auch privat nutze war es nur logisch das Projekt auch damit zu versionieren. Den aktuellen Entwicklungsstand findet man ab sofort immer unter dieser URL: <a href="http://dbsvn.agitos.de/public/string/trunk/">http://dbsvn.agitos.de/public/string/trunk/</a></p>
<p>Committen darf momentan nur ich, aber um den aktuellen Stand auschecken zu k&#246;nnen gibt es den User <strong>anonymous</strong> mit dem gleich lautenden Passwort.</p>
<h2>Download</h2>
<p>Zu guter Letzt kommt schlie&#223;lich noch der Download der aktuellen Version. <a href="http://ajaveeb.de/wp-content/uploads/2009/07/string_1_1_0.zip">Download</a>.</p>
<p>Wer auch hier <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> nutzen m&#246;chte kann dies &#252;ber den von mir angelegten Tag erledigen: <a href="http://dbsvn.agitos.de/public/string/tags/1_1_0/">http://dbsvn.agitos.de/public/string/tags/1_1_0/</a></p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/yanivg/95442635/">text decay</a> von <a href="http://www.flickr.com/photos/yanivg/">YaniG</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/string-klasse-version-1-1-0-572#comments">6 Kommentare</a> &middot; <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/string-klasse-version-1-1-0-572/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Subversion &#8211; Was ist´s, was bringt´s?</title>
		<link>http://ajaveeb.de/subversion-was-ists-was-bringts-540</link>
		<comments>http://ajaveeb.de/subversion-was-ists-was-bringts-540#comments</comments>
		<pubDate>Sun, 28 Jun 2009 10:48:09 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=540</guid>
		<description><![CDATA[Was ist Subversion und was bringt der Einsatz davon? Diesen Mysterien gehe ich mit diesem Artikel auf den Grund.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/4bc3b6ff7635fe977ea1f7008c7b733d.jpg" alt="Subversion &#8211; Was ist´s, was bringt´s?" width="596" height="298" /></p><p style="font-weight:bold">Was ist <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> und was bringt der Einsatz davon? Diesen Mysterien gehe ich mit diesem Artikel auf den Grund.</p><p>Mal ganz ehrlich. Viele Programmierer fangen nach einer Idee direkt und ohne Umschweife das Schreiben ihres Codes an. Dabei entsteht ein ganzer Wulst an Funktionen und Logiken. Manche davon sind besser, andere schlechter und so wird von der einen Stelle zur anderen kopiert, gel&#246;scht und neu geschrieben. Stellt man jetzt jedoch irgendwann einmal fest, dass die letzten Schritte nicht dem entsprechen, was man sich vorstellt macht man diese r&#252;ckg&#228;ngig. Ist das nicht m&#246;glich hat man ein Problem und muss versuchen sich das Geschriebene wieder irgendwie zusammenzureimen.</p>
<p>Dieses eben beschriebene Szenario kenne ich aus meiner eigenen Erfahrung nur allzu gut und h&#228;tte ich zu diesen Zeitpunkten <a href="http://subversion.tigris.org/">Subversion</a> eingesetzt, h&#228;tte ich mir einiges an Stress und Verkomplizierungen sparen k&#246;nnen.</p>
<h2>Was ist <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a>?</h2>
<p><a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> ist eine <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> zur <a href="http://de.wikipedia.org/wiki/Versionsverwaltung">Versionsverwaltung</a>. Mit ihr ist es m&#246;glich jederzeit nachzuvollziehen wer wann was an einer Datei ge&#228;ndert hat. Wird der Log richtig gepflegt wird auch sofort klar, warum die &#196;nderung erfolgt ist. Abgesehen davon kann man mit <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> nach einer fehlerhaften Entwicklung auch &#228;ltere Versionsst&#228;nde, sogenannte Revisionen, wiederherstellen. Und zu guter letzt kann man mit diesem Tool noch fertige Release-St&#228;nde auszeichnen.</p>
<p><a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> unterst&#252;tzt also Entwickler nicht nur dabei ihren eigenen Code unter Kontrolle zu halten, sondern ist vor allem f&#252;r Teams aus mehreren Entwicklern gedacht. Man hat die M&#246;glichkeit, dass sich mehrere Personen die aktuelle Revision eines Projektes oder einer Datei herunterladen (Checkout), daran arbeiten und sie anschlie&#223;end wieder hochladen (Commit) und somit eine neue Revision erstellen. Dadurch ist es m&#246;glich, dass mehr als eine Person an einer Datei arbeitet. Beim Commit werden die verschiedenen Codest&#228;nde wieder zusammengef&#252;hrt (Merge), selbst dann wenn von der aktuellen Datei schon eine neue Version existiert. Probleme treten nur dann auf, wenn an der gleichen Stelle im Code etwas ge&#228;ndert wurde (Conflict). Hier m&#252;ssen sich die betroffenen Entwickler zusammensetzen und einen gemeinsamen Nenner finden.</p>
<h2>Was bringt <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a>?</h2>
<p>Alles bis jetzt geschrieben ist ja ganz nett und h&#246;rt sich gut an, aber wo bleibt jetzt der praktische Nutzen von alldem?</p>
<p>Im Grunde genommen kann ich nur wiederholen, was bereits geschrieben ist. <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> unterst&#252;tzt Entwickler in der Kontrolle und Entwicklung ihres Codes. Nicht mehr und nicht weniger. <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> ist keine eierlegende Wollmilchsau. Es hilft nicht dabei besseren Code zu schreiben. Es tut einfach das, was es kann und das ist verschiedene Entwicklungsst&#228;nde zu speichern und zug&#228;nglich zu machen.</p>
<p>Allerdings kann <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> bei richtiger Verwendung ein extrem m&#228;chtiges Tool darstellen. Und das nicht nur bei der Entwicklung von <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a>, sondern auch bei der Verwaltung von Dokumenten, Bildern, Musik, Videos, usw. Hier nehme ich einfach mal die <a href="http://de.wikipedia.org/wiki/Versionsverwaltung">Wikipedia</a> als Beispiel. Jeder dort eingestellte Artikel besitzt verschiedene Versionen, z.B. der <a href="http://de.wikipedia.org/w/index.php?title=Subversion&#038;action=history">Subversion-Artikel</a>. Anhand dieser Versionen kann weltweit jeder Interessierte nachsehen wann welche &#196;nderung gemacht wurde und warum. Baut jemand Mist wird einfach eine &#228;ltere Version wiederhergestellt und schon geht es weiter. Der Nutzen bei Wikipedia sollte jetzt wohl jedem klar geworden sein.</p>
<p>Durch die Tatsache, dass man mit <a href="http://ajaveeb.de/tags/subversion" class="st_tag internal_tag" rel="tag" title="Posts tagged with Subversion">Subversion</a> nahezu alles verwalten kann und das an einer zentralen Stelle wird das Tool erst richtig n&#252;tzlich. Hierzu ein praktisches Beispiel aus der Arbeit. Ein Projekt steht an, an dem eine Person entwickelt. Gegen Ende des Projektes wird die Zeit &#252;blicherweise etwas knapp und ein zweiter Entwickler steigt ein. Diese zweite Person muss jetzt nicht lange darauf warten, dass er den Code vom Kollegen geschickt bekommt, sondern kann sofort anfangen, indem er sich das Projekt auscheckt. Durch den Log kann er sich auch schnell &#252;ber den aktuellen Stand informieren und direkt loslegen. Nat&#252;rlich m&#252;ssen sich die beiden Entwickler absprechen wer was erledigt. Die pers&#246;nliche Komponente kann und darf nicht verloren gehen f&#252;r den Erfolg eines Projektes.</p>
<p>Das war jetzt nur ein Beispiel von vielen Tausend, die man finden k&#246;nnte, aber ich denke hierdurch ist zumindest ein Nutzen dieses Tools klar geworden. Wer noch Fragen hat kann diese gerne in den Kommentaren stellen <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/daquellamanera/70740020/">Subversión</a> von <a href="http://www.flickr.com/photos/daquellamanera/">Daquella manera</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/subversion-was-ists-was-bringts-540#comments">6 Kommentare</a> &middot; <a href="http://ajaveeb.de/subversion-was-ists-was-bringts-540">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/subversion-was-ists-was-bringts-540/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ColorBox</title>
		<link>http://ajaveeb.de/colorbox-352</link>
		<comments>http://ajaveeb.de/colorbox-352#comments</comments>
		<pubDate>Sat, 14 Mar 2009 16:29:58 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Beiträge]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Lightbox]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=352</guid>
		<description><![CDATA[ColorBox ist ein ganz neuer Konkurrent f&#252;r alle bisherigen Lightbox-Klone. Klein, m&#228;chtig und anpassbar.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/1b5945c1f160a6cafec748217462a626.jpg" alt="ColorBox" width="596" height="298" /></p><p style="font-weight:bold">ColorBox ist ein ganz neuer Konkurrent für alle bisherigen <a href="http://ajaveeb.de/tags/lightbox" class="st_tag internal_tag" rel="tag" title="Posts tagged with Lightbox">Lightbox</a>-Klone. Klein, mächtig und anpassbar.</p><p>Und wieder bin ich bei der Entwicklung meines bereits zuvor erw&#228;hnten Projekts &#252;ber etwas interessantes gesto&#223;en.</p>
<p>Diesmal ist es ein noch sehr junges <a href="http://jquery.com/">jQuery</a>-Plugin: <a href="http://colorpowered.com/colorbox/">ColorBox</a>. Jung deswegen, da die erste Version erst am 3. M&#228;rz diesen Jahres ver&#246;ffentlicht wurde, also vor noch nicht mal zwei Wochen.</p>
<p>ColorBox ist ein weiterer <a href="http://ajaveeb.de/tags/lightbox" class="st_tag internal_tag" rel="tag" title="Posts tagged with Lightbox">Lightbox</a>-Klon, der allerdings neben Bildern auch Inline-Content und andere Seiten anzeigen kann.<span id="more-352"></span> Soweit noch nix neues, denn das gibt es auch alles schon. Die gro&#223;e Besonderheit an ColorBox ist jedoch, dass sie wahnsinnig leicht anzupassen ist. Ich konnte damit innerhalb k&#252;rzester Zeit einen komplett neuen Style daf&#252;r entwickeln. Bei den herk&#246;mmlichen Lightboxen muss man sich meist auf kleinere Anpassungen beschr&#228;nken, da die &#196;nderungen ziemlich kompliziert sind und oftmals gro&#223;e Auswirkungen auf die gesamte <a href="http://ajaveeb.de/tags/lightbox" class="st_tag internal_tag" rel="tag" title="Posts tagged with Lightbox">Lightbox</a> haben.</p>
<p>Wie f&#252;r jQuery Plugins &#252;blich ist diese <a href="http://ajaveeb.de/tags/lightbox" class="st_tag internal_tag" rel="tag" title="Posts tagged with Lightbox">Lightbox</a> sehr unkompliziert einzubinden. Einfach die Funktion <code>colorbox()</code> an einen Selektor h&#228;ngen und schon ist sie einsatzf&#228;hig. </p>
<pre lang="javascript">$('a.magnify').colorbox();</pre>
<p>Ebenfalls sehr sch&#246;n ist, dass sie bereits an die neue Version 1.3 von jQuery angepasst wurde.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/mr_mt_02/107479937/">color boxes</a> von <a href="http://www.flickr.com/photos/mr_mt_02/">Mr.mt</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/colorbox-352#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/colorbox-352">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/colorbox-352/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>String-Klasse: Version 1.0.1</title>
		<link>http://ajaveeb.de/string-klasse-version-1-0-1-331</link>
		<comments>http://ajaveeb.de/string-klasse-version-1-0-1-331#comments</comments>
		<pubDate>Thu, 05 Feb 2009 17:11:42 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=331</guid>
		<description><![CDATA[Das erste Update meiner String-Klasse steht an.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/1daad04c15bb1468e050ab54d81c2f68.jpg" alt="String-Klasse: Version 1.0.1" width="596" height="298" /></p><p style="font-weight:bold">Das erste Update meiner String-Klasse steht an.</p><p><strong>Information:</strong><br />
Es steht eine neue Version der Klasse zur Verf&#252;gung: <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">String-Klasse: Version 1.1.0</a></p>
<p>Dank des Kommentars von <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/#comment-199">Phate</a> habe ich mich auf die Suche nach einer Alternative zu <a href="http://de.php.net/eval"><code>eval()</code></a> gemacht und diese in den Kommentaren zu dieser Funktion gefunden: <a href="http://de.php.net/manual/de/function.call-user-func-array.php"><code>call_user_func_array()</code></a>.<span id="more-331"></span></p>
<p>Mithilfe dieser Funktion habe ich nun also meine <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/">String-Klasse</a> leicht &#252;berarbeitet. Nun ist sie sogar etwas schlanker und der Code einfacher nachzuvollziehen als zuvor. Au&#223;erdem ist sie sicherer geworden, denn <code>eval()</code> stellt in gewisser Art und Weise ein Sicherheitsrisiko dar. Trotzdem bin ich pers&#246;nlich der Meinung, dass es durchaus seine Berechtigung hat in manchen Situationen.</p>
<p>Hier ist nun der Download der neuen Version: <a href='http://www.ajaveeb.de/wp-content/uploads/2009/02/string_v101.zip'>string_v101.zip</a></p>
<p>Eine Dokumentation der Klasse und unter welcher Lizenz sie steht findet ihr in meinem <a href="http://www.ajaveeb.de/entwicklungen/php-klasse-fuer-strings-306/">ersten Beitrag</a> dar&#252;ber. Daran hat sich nichts ge&#228;ndert.</p>
<p>Ich bin allerdings immer noch auf der Suche nach sinnvollen Erweiterungen der Klasse. Gern nehme ich auch abstrakte Ideen entgegen und setze diese in, von der String-Klasse abgeleiteten Klassen, um <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/darwinbell/395970515/">what are word for?</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/string-klasse-version-1-0-1-331#comments">6 Kommentare</a> &middot; <a href="http://ajaveeb.de/string-klasse-version-1-0-1-331">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/string-klasse-version-1-0-1-331/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP-Klasse f&#252;r Strings</title>
		<link>http://ajaveeb.de/php-klasse-fuer-strings-306</link>
		<comments>http://ajaveeb.de/php-klasse-fuer-strings-306#comments</comments>
		<pubDate>Sat, 31 Jan 2009 20:32:32 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=306</guid>
		<description><![CDATA[Dies ist die Vorstellung einer meiner Entwicklungen. Einer String-Klasse f&#252;r PHP.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/4146c52f32851cb8c24110d07077d44e.jpg" alt="PHP-Klasse f&#252;r Strings" width="596" height="298" /></p><p style="font-weight:bold">Dies ist die Vorstellung einer meiner Entwicklungen. Einer String-Klasse für <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>.</p><p><strong>Information:</strong><br />
Es steht eine neue Version der Klasse zur Verf&#252;gung: <a href="http://ajaveeb.de/string-klasse-version-1-1-0-572">String-Klasse: Version 1.1.0</a></p>
<p>Inspiriert von C++ habe ich eine generische Klasse geschrieben, mit der man Strings in <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> in Objekte umwandeln kann.</p>
<p>Einer meiner Hauptgr&#252;nde f&#252;r diese Entwicklung ist die Tatsache, dass ich in der Arbeit schon diverse Projekte auf UTF-8 umgestellt habe. Um UTF-8 m&#246;glichst weit zu unterst&#252;tzen hat man momentan eine sehr einfache M&#246;glichkeit, n&#228;mlich die <a href="http://de.php.net/mbstring">Multibyte String-Funktionen</a> von <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>. Damit der Code des Portals nun auch mit UTF-8 umgehen kann sucht man sich die Funktionen von der Seite des <a href="http://ajaveeb.de/tags/php" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>-Manuals, sucht danach portalweit und ersetzt alle Vorkommen mit dem neuen Funktionsaufruf.<span id="more-306"></span></p>
<p>Da dies nur Copy &#038; Paste ist und ich f&#252;r meine eigenen Projekte sowas vermeiden will ist mir die Idee mit der String-Klasse gekommen, die ich gerade eben geschrieben habe. Der Vorteil dieser Klasse ist der, dass man sich keine Gedanken darum machen muss, ob die Multibyte-String-Erweiterung installiert ist oder nicht, da jeder Funktionsaufruf gepr&#252;ft wird und ggf. die Multibyte-Variante der Funktion genutzt wird.</p>
<h3>Verwendung</h3>
<p>Einen neuen String zu initialisieren geschieht entweder mit dem Konstruktor oder mit der Methode String->set():</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// mittels Konstruktor</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string1</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="st0">&#39; &nbsp; &nbsp; Das ist ein Teststring. &nbsp; &#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// mittels set()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span> <span class="sy0">=</span> <span class="kw2">new</span> String<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&#39;Das ist auch ein Teststring.&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Um einen String nun zu bearbeiten verwendet man die Methode String->edit(). Der erste Parameter stellt hierbei den Funktionsnamen dar, der zweite optionale Parameter enth&#228;lt ein Array mit s&#228;mtlichen ben&#246;tigten Parametern. Bei den Parametern kann man jedoch den ersten weglassen, da dies immer der String selbst ist.</p>
<p>Steht f&#252;r den &#252;bergebenen Funktionsnamen eine Multibyte-Version zur Verf&#252;gung wird diese verwendet.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// ohne Parameter</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string1</span><span class="sy0">-&gt;</span><span class="me1">edit</span><span class="br0">&#40;</span><span class="st0">&#39;trim&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// mit Parametern</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">edit</span><span class="br0">&#40;</span><span class="st0">&#39;substr&#39;</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">10</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Um einen String schlussendlich ausgeben zu k&#246;nnen gibt es die Methode String->get(). Diese gibt den String zur&#252;ck, den man anschlie&#223;end an andere Funktionen &#252;bergeben oder ausgeben lassen kann.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// gibt &#39;Das ist ein Teststring&#39; zur&#252;ck</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string1</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// gibt &#39;s ist auch&#39; zur&#252;ck</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$string2</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<h3>Download &#038; Lizenz</h3>
<p>Der Download der Klasse findet sich hier: <a href='http://www.ajaveeb.de/wp-content/uploads/2009/01/string.zip'>string.zip</a></p>
<p>Die Klasse steht unter der <a href="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</a>. Damit kann sie auch in kommerziellen Projekten verwendet, ge&#228;ndert oder weitergegeben werden.</p>
<h3>Weiterentwicklung</h3>
<p>Mir spukt eine &#8220;History&#8221; im Kopf herum, mit der man eine bestimmte Anzahl von &#196;nderungen am String wieder r&#252;ckg&#228;ngig machen kann, sofern man dies braucht. Jedoch w&#252;sste ich hierf&#252;r momentan keine Anwendungsm&#246;glichkeit und es w&#252;rde den Speicherbedarf nur massiv erh&#246;hen.</p>
<p>Habt ihr noch Ideen, was hier fehlt oder dringend ben&#246;tigt wird?</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/feuilllu/739173692/">WORDS</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/php-klasse-fuer-strings-306#comments">8 Kommentare</a> &middot; <a href="http://ajaveeb.de/php-klasse-fuer-strings-306">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/php-klasse-fuer-strings-306/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Best Practice: Template-Entwicklung</title>
		<link>http://ajaveeb.de/best-practice-template-entwicklung-27</link>
		<comments>http://ajaveeb.de/best-practice-template-entwicklung-27#comments</comments>
		<pubDate>Tue, 04 Mar 2008 21:00:15 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Optimierung]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/artikel/best-practice-template-entwicklung-27/</guid>
		<description><![CDATA[Was ist die beste Vorgehensweise bei der Entwicklung eines Templates f&#252;r eine beliebige Publishing-Software? Diese oder &#228;hnliche Fragen stellen sich dem Entwickler immer wieder, wenn er mit einem neuen Projekt anf&#228;ngt. Besonders dann wenn es auf diese Frage noch keine feststehende Antwort gibt und man auf die Tipps und Tricks derer angewiesen ist, die soetwas [...]]]></description>
			<content:encoded><![CDATA[<p>Was ist die beste Vorgehensweise bei der Entwicklung eines Templates f&#252;r eine beliebige Publishing-<a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a>? Diese oder &#228;hnliche Fragen stellen sich dem Entwickler immer wieder, wenn er mit einem neuen Projekt anf&#228;ngt. Besonders dann wenn es auf diese Frage noch keine feststehende Antwort gibt und man auf die Tipps und Tricks derer angewiesen ist, die soetwas schon einmal getan haben.</p>
<p>Dieser Artikel besch&#228;ftigt sich mit genau diesem Thema und versucht praktische und vor allem praktikable L&#246;sungsvorschl&#228;ge zu liefern. Ich beginne hier beim Grundlegensten aller Projekte, der Idee, und gehe dann auf alle weiteren n&#246;tigen Schritte ein, bis endlich eine funktionsf&#228;hige Website entstanden ist.<span id="more-27"></span></p>
<h3>Am Anfang steht die Idee</h3>
<p>Ohne eine gute Idee scheitert jedes Projekt schon im Ansatz. Aber wenn man es geschafft hat eine tolle Idee zu haben, bei der man nicht vor unendlich gro&#223;en H&#252;rden aufgrund fehlender Kenntnisse o.&#196;. steht, kann es endlich losgehen. Der n&#228;chste Schritt ist es seinen Einfall weiterzuentwickeln und sich ein Konzept zu schaffen, mit dem man arbeiten kann. Ob dies nun durch massives Brainstorming, Austausch mit anderen oder spontan unter der Dusche entsteht ist egal. Die Hauptsache ist, dass schlussendlich eine Art roter Faden entsteht, an den man sich bei der Entwicklung halten kann.</p>
<h3>Design: der Hauptbestandteil eines Templates</h3>
<p>Logischerweise sollte man sich bei der Konzeption seiner Idee auch schon diverse Gedanken zum Design machen, denn immerhin ist das der wichtigste Bestandteil bei der Template-Entwicklung. Ohne Design kein Template, so einfach ist das.</p>
<p>Wie man letztendlich sein Design entwickelt ist jedem selbst &#252;berlassen. Ob mit Photoshop auf den Pixel genau oder skizzenhaft mit Papier und Bleistift. Der wichtige Teil hierbei ist jedes gew&#252;nschte Feature von Anfang an in den Prozess mit einzubeziehen, damit man nicht pl&#246;tzlich vor einem gro&#223;en Problem steht und m&#252;hselig eine mehr schlechte als rechte L&#246;sung zu praktizieren.</p>
<p>Ist das Design endlich fertig hilft es ungemein das entstandene Bild erst einmal eine Weile auf sich wirken zu lassen und sich direkt Gedanken dazu zu machen, wie man dieses Unget&#252;m mit allen seinen Details in Quelltext verwandelt. Hierzu gibt es diverse Dienstleister, doch kosteng&#252;nstiger und spa&#223;bringender ist es, sich selbst an die Arbeit zu machen. Steht das grobe Grundger&#252;st ist der Moment gekommen sich die Spezifikationen f&#252;r das gew&#228;hlte Publishing-System anzusehen. Bei <a href="http://wordpress.org/">WordPress</a> beispielsweise gibt es bei der Navigation f&#252;r die Seiten eine CSS-Klasse, die automatisch an die Listenelemente geh&#228;ngt wird, sollte die aufgef&#252;hrte Seite aufgerufen werden. Also warum sollte man sich hier selbst eine ausgefeilte L&#246;sung &#252;berlegen, wenn man vorhandene Sachen direkt nutzen kann?</p>
<h3>Die technische Umsetzung oder das Spiel mit dem Feuer</h3>
<p>Hat man es nun endlich geschafft nach Stunden des Fluchens aufgrund zickender Browser, Inkompatibilit&#228;ten oder nicht vorhandenen, aber dringend ben&#246;tigter, Eigenschaften von HTML und CSS endlich einen zufriedenstellenden HTML-Dummy zu erstellen beginnt der Spa&#223; erst richtig, denn nun beginnt die Implementierung.</p>
<p>Der erste Schritt sollte der sein den entstandenen HTML-Dummy in eine Standarddatei (bei WordPress die <code>index.php</code> im Ordner <code>/wp-content/themes/dein-theme</code>) zu kopieren und die CSS-, Javascript- und Bilddateien an die richtige Stelle zu bringen. Anschlie&#223;end f&#228;ngt man damit an den zuvor m&#252;hselig erstellten Quelltext zu zerlegen und in einzelne Dateien zu packen, die je nach ben&#246;tigter Anzeige eingebunden werden. Statische Inhalte und dynamische Inhalte sollten ebenfalls strikt voneinander getrennt werden, um nicht zu einem sp&#228;teren Zeitpunkt den &#220;berblick zu verlieren.</p>
<p>Nach dem Zerlegen des Quelltextes sollte man mit dem existenziellsten Bestandteil der Website anfangen: der Navigation. Hat man diese umgesetzt und im Backend nat&#252;rlich die entsprechende Struktur der Site angelegt f&#228;llt es schon um Meilen leichter zu den Seiten zu kommen, an denen man momentan entwickelt, da man sich umst&#228;ndliches Kopieren von Links, etc. sparen kann.</p>
<p>Nun liegt es im Ermessen des Entwicklers, ob er mit einer Inhaltsseite oder der Startseite weiter macht. Letztere ist in den meisten F&#228;llen bei gro&#223;en Projekten sehr schwierig umzusetzen, da hier viele Dinge aus dem System gleichzeitig angezeigt werden sollen. Im Gro&#223;en und Ganzen empfiehlt es sich erst einmal die einfachen Dinge wie normale Inhaltsseiten oder Listentemplates umzusetzen und sich erst dann zu den wirklich schwierigen zu begeben.</p>
<p>Kleiner Tipp noch am Rande: Am Anfang geht alles sehr schnell, da man dank der leicht umzusetzenden Sachen schnell Fortschritte erzielt. Jedoch werden die Aufgaben immer schwieriger und zeitintensiver, je weiter man fortschreitet. Hier also nicht gleich frustrieren <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Der eben genannte Tipp gilt nat&#252;rlich auch dann, wenn mal nicht gleich etwas so funktionieren will, wie es soll. Je umfangreicher die zu bew&#228;ltigende Aufgabe, desto schleppender geht es voran, aber das was z&#228;hlt ist das Ergebnis. Und wenn dieses erzielt wird f&#228;llt jeder bisherige Stress ab wie Schuppen von den Augen. Ebenfalls eine zeitraubende Angelegenheit sind Dinge, die man beim Design vergessen hat oder neue, zus&#228;tzliche Anforderungen und Features. Auch hier gilt dann erst einmal &#252;berlegen, wie man dies angeht und dann anfangen Code zu schreiben.</p>
<h3>Der Schluss vom Lied: Eine funktionierende Website</h3>
<p>Sind alle Features implementiert und Anforderungen umgesetzt kann man sich ruhigen Gewissens zur&#252;cklehnen und sein Gesamtwerk betrachten. Jedoch sollte man selbst zu diesem Zeitpunkt das gesamte Projekt noch einmal grundlegend &#252;berdenken: Ist wirklich alles eingebaut? Gibt es noch Features, die praktisch w&#228;ren? Wie sieht es mit der Usability aus? Hier hilft es meist das Projekt anderen Leuten zu pr&#228;sentieren, die dann sehr oft noch diverse Tipps f&#252;r Verbesserungen geben k&#246;nnen, die man auch noch vor dem Onlinestart umsetzen sollte.</p>
<p>Erst dann, wenn wirklich alles funktioniert und niemanden beim schnellen &#220;berflug etwas ins Auge f&#228;llt kann die Site online gehen. Eventuell nimmt man sich aber auch noch kurz vor dem Release etwas Zeit und beachtet <a href="http://www.ajaveeb.de/artikel/html-css-und-javascript-quelltext-optimieren-7/">meine Tipps zur Optimierung von Quelltext</a>.</p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/best-practice-template-entwicklung-27#comments">2 Kommentare</a> &middot; <a href="http://ajaveeb.de/best-practice-template-entwicklung-27">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/best-practice-template-entwicklung-27/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

