<?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; Artikel</title>
	<atom:link href="http://ajaveeb.de/kategorien/artikel/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>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<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 PHP-Entwickler.</p><p>Wer PHP 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 PHP 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 PHP-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 PHP-Entwickler ben&#246;tigt. Zudem laufen viele Prozesse in der IDE, die man f&#252;r die Entwicklung von PHP 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 PHP. 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><a href="http://ajaveeb.de/tags/netbeans" class="st_tag internal_tag" rel="tag" title="Posts tagged with NetBeans">NetBeans</a> for PHP</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>IPC 2009 &#8211; Tag 1</title>
		<link>http://ajaveeb.de/ipc-2009-tag-1-674</link>
		<comments>http://ajaveeb.de/ipc-2009-tag-1-674#comments</comments>
		<pubDate>Sun, 22 Nov 2009 18:25:38 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Karlsruhe]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP Conference]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=674</guid>
		<description><![CDATA[Hiermit will ich einen Einblick in die Sessions des ersten Tages der IPC 2009 und der Ergebnisse davon geben.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/7b8bf9aff9f753706d26ed86cfc8315d.jpg" alt="IPC 2009 &#8211; Tag 1" width="596" height="298" /></p><p style="font-weight:bold">Hiermit will ich einen Einblick in die Sessions des ersten Tages der IPC 2009 und der Ergebnisse davon geben.</p><p>Da ich, wie ich bereits geschrieben habe, p&#252;nktlich angekommen bin habe ich die Er&#246;ffnungssession auch noch mitbekommen, die einen kleinen Einblick in das vielf&#228;ltige Programm der International PHP Conference und der webtech gab. Kurz darauf ging es dann auch schon mit der Session &#8220;Design Patterns&#8221; von Cal Evans bei mir los und das war genau richtig als Einstimmung auf die n&#228;chsten drei Tage.</p>
<h2>Design Patterns von Cal Evans</h2>
<p>Gestartet hat die Session direkt mit einer Buchempfehlung: &#8220;Design Patterns&#8221; von der Gang Of Four. Anschlie&#223;end ging er dann gro&#223;teils auf das MVC-Pattern ein und hat dessen richtige Verwendung erkl&#228;rt, z.B. sollte ein Model niemals direkt auf eine Datenbank abbilden, da die Datenquellen eines Models wesentlich vielf&#228;ltiger sein k&#246;nnen. Sie k&#246;nnen neben Datenbanken auch auf Webservices, etc. zugreifen und ihre Daten von dort beziehen.</p>
<p>Controller sollten ebenfalls keine gro&#223;en Logiken beinhalten, sondern nur daf&#252;r Sorge tragen, dass die Daten vom Model zum View und umgekehrt gelangen. Jedoch sollten im Controller die Exceptions gefangen werden. Das Stichwort, welches ich vor kurzem dazu gelernt habe, nennt sich &#8220;Fat Model, Tiny Controller&#8221;.</p>
<p>Der View sollte logischerweise keine Logiken enthalten, sondern nur f&#252;r die Darstellung sorgen. Daf&#252;r kann er, wenn n&#246;tig, auch direkt auf das Model zugreifen, darf jedoch keine Daten schreiben, sondern nur lesen.</p>
<p>Abgesehen davon ist er noch auf das Decorator Pattern eingegangen, welches anstatt multipler Vererbungen verwendet werden sollte, da man damit wesentlich flexibler ist.</p>
<h2><a href="http://ajaveeb.de/tags/netbeans" class="st_tag internal_tag" rel="tag" title="Posts tagged with NetBeans">NetBeans</a> IDE von Petr Pisl</h2>
<p>Die zweite Session stand ganz im Zeichen der aktuellen Betaversion von <a href="http://ajaveeb.de/tags/netbeans" class="st_tag internal_tag" rel="tag" title="Posts tagged with NetBeans">NetBeans</a>, einer schlanken, aber sehr m&#228;chtigen IDE f&#252;r die Entwicklung in verschiedenen Programmiersprachen. Da es bei der IPC logischerweise um PHP geht wurden auch nur die neuen Features dieses Pakets abgehandelt.</p>
<p>So soll die neue Version nach Plan am 10.12.2009 erscheinen und viele neue F&#228;higkeiten besitzen. Die erste genannte war eine Codevervollst&#228;ndigung ohne PHPDoc. Daf&#252;r scannt <a href="http://ajaveeb.de/tags/netbeans" class="st_tag internal_tag" rel="tag" title="Posts tagged with NetBeans">NetBeans</a> den Code und versucht anhand verschiedener Indikatoren herauszufinden, was die Methoden und Funktionen f&#252;r R&#252;ckgabewerte liefern. Auch soll PHPDoc nun eine Code-Completion erhalten, ebenso wie einzelne Elemente eines Arrays oder auch SQL, welches in Strings vorkommt. Man kann nun auch bestimmte Ordner aus dem Index f&#252;r die Vervollst&#228;ndigung herausnehmen.</p>
<p>Abgesehen von diesen Features, die ich enorm spannend finde soll auch das Erstellen von Unit-Tests sehr einfach werden und die Ausf&#252;hrung dieser ebenso. Das Handling dieses Features erinnert mich stark an Zend Studio for Eclipse, wo das auch m&#246;glich ist.</p>
<h2>Continuous Integration von Stefan Priebsch und Sebastian Bergmann</h2>
<p>Diese Session war f&#252;r mich extrem interessant, da ich mit diesem Thema noch nicht wirklich in Ber&#252;hrung gekommen bin. Die ersten Aussagen der beiden hat auch direkt beinhaltet, dass man unbedingt automatische Tests durchlaufen lassen soll und mindestens einmal t&#228;glich den aktuellen Stand zu integrieren, also zu committen.</p>
<p>Anschlie&#223;end wurde der Wert von Continuous Integration angesprochen, der sehr hoch ist. Durch dieses Verfahren verringert man Risiken und reduziert gleiche Prozesse, da nicht &#252;berall die gleiche <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> installiert werden muss. Abgesehen davon erzeugt man deploybare <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a>, sorgt f&#252;r gr&#246;&#223;eres Vertrauen in den eigenen Code und die Sichtbarkeit eines Projektes wird erh&#246;ht, da jeder immer den aktuellsten Stand einsehen kann.</p>
<p>Um mit diesem Verfahren starten zu k&#246;nnen muss man zuerst einmal die Prozesse herausfinden, die automatisiert werden k&#246;nnen. Hieraus soll dann ein &#8220;Non-Event&#8221; gemacht werden, was im Klartext bedeutet, dass es sehr einfach sein soll diesen Prozess auszuf&#252;hren, z.B. durch einen Klick auf einen Button oder ein kleines Skript.</p>
<p>Zuletzt wurden dann noch diverse Tools vorgestellt, die man nutzen kann und die ich hier einfach nur auflisten will, da ich mich damit noch nicht weiter besch&#228;ftigt habe: CruiseControl, phpUnderControl, Hudson, Atlassian Bamboo und Arbit.</p>
<h2>Event Driven Architectures von Benjamin Eberlei</h2>
<p>PHP an sich unterst&#252;tzt nur bedingt Events, da es eine request-basierte Sprache ist. Jedoch gibt es zwei Patterns, die man nutzen kann, um so eine Architektur zu bilden: Das Observer-Pattern und das Event-Dispatcher-Pattern.</p>
<p>Doch auch dies reicht noch nicht aus, um auf Events reagieren zu k&#246;nnen. Dazu sind weitere Tools notwendig, wie z.B. XMPP, dropr oder Gearman. Erst durch diese wird es m&#246;glich auch asynchron mit PHP arbeiten zu k&#246;nnen. Von diesen drei Tools hat Benjamin noch Gearman etwas weiter vorgestellt, welches durch seine einfache Nutzung bei mir punkten konnte.</p>
<h2>Wer langsam ist verliert von Dr. Johannes Mainusch</h2>
<p>Diese Session war von der webtech und sehr interessant. Es wurde davon berichtet, welche Ziele sich XING gesetzt hat und wie sie es geschafft haben diese zu erreichen.</p>
<p>Die Performance von Websites ist sehr wichtig und jede Seite sollte innerhalb von zwei Sekunden komplett geladen werden, da ein Mensch in dieser Zeit eine Reaktion erwartet. Wenn nichts voran geht kommt Frustration auf und die Plattform wird verlassen. Diese Nutzer kommen auch meist nicht wieder. Dabei macht die Zeit, die der Server f&#252;r die Datenverarbeitung ben&#246;tigt, meist nur einen kleinen Teil aus, der gr&#246;&#223;te Teil findet jedoch auf dem Weg vom Server zum Nutzer statt.</p>
<p>Um hier f&#252;r mehr Geschwindigkeit zu sorgen ist es erstmal wichtig die Engp&#228;sse zu finden. Wie gro&#223; sind die ausgelieferten Dateien, werden diese vom Browser gecached, gibt es langsame Requests usw. Hat man hier alles identifiziert kann mit der <a href="http://ajaveeb.de/tags/optimierung" class="st_tag internal_tag" rel="tag" title="Posts tagged with Optimierung">Optimierung</a> begonnen werden. Man kann dann anfangen Dateien zusammenzufassen, das Caching f&#252;r den Browser zu beeinflussen usw.</p>
<h2>Fazit</h2>
<p>Alle diese Sessions waren sehr interessant und ich bereue es nicht andere Sessions besucht zu haben. Es waren viele spannende Themen von kompetenten Speakern, die zumindest mir einige neue Erkenntnisse gebracht haben.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/mor10am/4115624727/">IPC 2009</a> von <a href="http://www.flickr.com/photos/mor10am/">mor10am</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/ipc-2009-tag-1-674#comments">2 Kommentare</a> &middot; <a href="http://ajaveeb.de/ipc-2009-tag-1-674">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/ipc-2009-tag-1-674/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IPC 2009 &#8211; Eine Zusammenfassung</title>
		<link>http://ajaveeb.de/ipc-2009-eine-zusammenfassung-671</link>
		<comments>http://ajaveeb.de/ipc-2009-eine-zusammenfassung-671#comments</comments>
		<pubDate>Sat, 21 Nov 2009 00:06:18 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Karlsruhe]]></category>
		<category><![CDATA[PHP Conference]]></category>
		<category><![CDATA[Unconference]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=671</guid>
		<description><![CDATA[Es war wieder einmal soweit. Die International PHP Conference hat stattgefunden. Ich war da und will hiermit dar&#252;ber berichten.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/d372a5530a1aa7359538c7c4d88a12b4.jpg" alt="IPC 2009 &#8211; Eine Zusammenfassung" width="596" height="298" /></p><p style="font-weight:bold">Es war wieder einmal soweit. Die International PHP Conference hat stattgefunden. Ich war da und will hiermit darüber berichten.</p><p>Wir schreiben den 16. November 2009. An sich genommen kein besonderes Datum. Doch einige unter uns Menschen, die sogenannten Geeks, Nerds und Konsorten freuen sich auf ein gro&#223;es Event, welches in <a href="http://ajaveeb.de/tags/karlsruhe" class="st_tag internal_tag" rel="tag" title="Posts tagged with Karlsruhe">Karlsruhe</a> stattfindet: Die International PHP Conference 2009.</p>
<p>Auch ich geh&#246;re zu dieser auserlesenen Personengruppe und bin bereits seit Sonntag in <a href="http://ajaveeb.de/tags/karlsruhe" class="st_tag internal_tag" rel="tag" title="Posts tagged with Karlsruhe">Karlsruhe</a>, um gleich morgens mit der Begr&#252;&#223;ungssession durchstarten zu k&#246;nnen.</p>
<p>Neben der IPC l&#228;uft parallel noch eine weitere Konferenz, die damit ihre Premiere feiert. Die webtech Conference hat sich aus der webinale heraus entwickelt und soll mehr auf die tats&#228;chlich verwendeten Technologien im World Wide Web eingehen und kein Querbeet-Programm bieten, sondern sich gezielt an Webentwickler richten.</p>
<p>Beide Konferenzen bieten viele interessante Sessions zu allen m&#246;glichen relevanten Themen, die man sich im jeweiligen Umfeld nur denken kann. Somit gibt es insgesamt an die 150 Sessions (ich habe nicht nachgez&#228;hlt). F&#252;r Besucher, die einen Super-Konferenz-Pass habe, so wie mich, gibt es sogar als Schmankerl kostenlos ein Netbook oder besser gesagt ein Intellibook.</p>
<p>Doch nun zur Zusammenfassung, bevor ich mich hier noch in irgendwelchen langwierigen Erkl&#228;rungen verstricke <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Sonntag, 15. November 2009</h2>
<p>Nach einiger Versp&#228;tung bin ich in <a href="http://ajaveeb.de/tags/karlsruhe" class="st_tag internal_tag" rel="tag" title="Posts tagged with Karlsruhe">Karlsruhe</a> angekommen und nachdem ich im Hotel eingecheckt habe, habe ich mich direkt auf den Weg ins Konferenzzentrum gemacht, um noch etwas von der Unconference, f&#252;r die ich angemeldet war, mitzubekommen.</p>
<p>Doch das war eine herbe Entt&#228;uschung, da mir die Dame am Empfang mitgeteilt hat, dass sich die Unonference aufgrund mangelnder Teilnehmerzahl zerschlagen hat. Wie ich am n&#228;chsten Tag erfahren habe waren ganze sieben Leute anwesend. Nichtsdestotrotz wurde mir angeboten die laufenden Workshops zu besuchen. Da ich jedoch schon recht sp&#228;t dran war und die Workshops nur noch ca. 45 Minuten dauerten bin ich stattdessen ins Kino gegangen.</p>
<h2>Montag, 16. November 2009</h2>
<p>Um nichts zu verpassen war ich schon gegen neun Uhr im Konferenzzentrum, was sich als gut herausgestellt hat, da ich so auch die &#8220;Begr&#252;&#223;ungssession&#8221; anschauen konnte, die auf das Programm der n&#228;chsten drei Tage vorbereitet hat.</p>
<p>Anschlie&#223;end hie&#223; es dann mein Hirn auf Englisch zu stellen und die erste Session zu besuchen. Welche Sessions ich genau besucht habe folgt in den n&#228;chsten Artikeln. Wer mir auf Twitter folgt hat sowieso einen gro&#223;en Teil davon schon erfahren.</p>
<p>Insgesamt gibt es zu sagen, dass die Sessions am Montag sehr ausgewogen und interessant waren. Ich bereue keine einzige davon. Sehr &#252;berrascht war ich vom guten Essen des Caterings, auch wenn das &#8220;Essensband&#8221; um mein Handgelenk etwas sehr eng befestigt wurde.</p>
<p>Am Montag fand auch noch die Open Source Expo statt, wo sich Open Source-Projekte vorstellen und neue Nutzer sammeln k&#246;nnen. Die meisten Systeme kannte ich auch schon zuvor, doch auch einige neue waren dabei, von denen ich noch nie zuvor geh&#246;rt habe.</p>
<p>Abends bin ich nahezu direkt nach der letzten Session zur&#252;ck ins Hotel und habe mich vom Tag erholt und angefangen mein neues technisches Spielzeug einzurichten.</p>
<h2>Dienstag, 17. November 2009</h2>
<p>Am Dienstag ging es schon um neun Uhr los und ich habe es auch geschafft, trotz starker M&#252;digkeit und des Unwillens mich aus dem warmen Bett zu begeben, p&#252;nktlich zu sein. </p>
<p>Auch an diesem Tag waren viele interessante Sessions zu besuchen, das Essen war auch wieder gut und abends gab es dann, nach einer doch etwas unn&#252;tzen Session, noch eine Party, eine Fun-Keynote und Casino. Quasi das gleiche Programm wie letztes Jahr schon zur webinale. Diese Gelegenheit habe ich nat&#252;rlich genutzt und mich &#252;ber einen Twitterbekannten (@tweetmaex) noch mit zwei anderen Leuten bekannt gemacht.</p>
<h2>Mittwoch, 18. November 2009</h2>
<p>Auch am Mittwoch begannen die ersten Sessions schon um neun Uhr und wieder habe ich es geschafft p&#252;nktlich anzukommen. Die Sessions waren auch gro&#223;teils interessant, aber irgendwie hat man sehr stark gemerkt, dass der letzte Tag der Konferenz ist, da auf eine bestimmte Art und Weise die Luft raus war.</p>
<p>Gef&#252;hlt gab es wesentlich mehr deutsche Sessions und sogar die Keynote war deutsch, was ich ziemlich unpassend finde auf einer internationalen Konferenz. Dazu kommt, dass sie nicht mal sehr spannend oder ansprechend war. Mehr dazu jedoch in einem anderen Artikel. Die letzte Session hab ich dann aufgrund mangelnder guter Themen sausen lassen und bin stattdessen mit meinen neuen Bekannten zu Starbucks und habe mir einen sehr leckeren Cappuccino genehmigt.</p>
<h2>Fazit</h2>
<p>Alles in allem betrachtet hat mir die Konferenz sehr gut gefallen und ich habe einiges dazu gelernt. Und bis auf ein paar kleine &#8220;Unstimmigkeiten&#8221; gibt es auch nichts zu meckern.</p>
<p>Sehr faszinierend fand ich wie stark das Zend Framework gepusht und die VZ-Familie mies gemacht wurde. Zudem sollte jeder seinen Buildvorgang &#252;berdenken und auf Continuos Integration und automatische Builds umstellen, um die Qualit&#228;t sicher zu stellen, die man haben will. Hierzu wurden auch einige Tools genannt, die ich mir bestimmt mal anschauen werde.</p>
<p>So, das ist ein h&#252;bsch langer Artikel geworden und deswegen h&#246;re ich jetzt auch auf bevor der Akku seinen Geist aufgibt und alles zunichte macht. Alles weitere dar&#252;ber, welche Sessions ich besucht habe und was die Kernaussagen davon waren folgt in den n&#228;chsten drei Artikeln.</p>
<p>&#8212;<br />
Bild: <a href="http://www.flickr.com/photos/tswicegood/4111546651/">Packed house at Cal Evan&#8217;s talks</a> von <a href="http://www.flickr.com/photos/tswicegood/">tswicegood</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/ipc-2009-eine-zusammenfassung-671#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/ipc-2009-eine-zusammenfassung-671">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/ipc-2009-eine-zusammenfassung-671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML ist tot, lang lebe HTML</title>
		<link>http://ajaveeb.de/html-ist-tot-lang-lebe-html-661</link>
		<comments>http://ajaveeb.de/html-ist-tot-lang-lebe-html-661#comments</comments>
		<pubDate>Sat, 31 Oct 2009 21:58:43 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=661</guid>
		<description><![CDATA[Die Welt im Netz ist in Aufruhr. HTML 5 ist im Anmarsch und das in gro&#223;en Schritten. In diesem Artikel stelle ich meine Pr&#228;sentation zu diesem Thema der Welt zur Verf&#252;gung.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/c8079979d3a44c73be3428cf30f4ca2b.jpg" alt="HTML ist tot, lang lebe HTML" width="596" height="298" /></p><p style="font-weight:bold">Die Welt im Netz ist in Aufruhr. HTML 5 ist im Anmarsch und das in großen Schritten. In diesem Artikel stelle ich meine Präsentation zu diesem Thema der Welt zur Verfügung.</p><p>Der Titel bezieht sich auf den Trend vor ein paar Jahren, als sich die Welt von HTML 4.01 abwandte und zu XHTML gewechselt ist. Doch nun geht der Wechsel wieder in die andere Richtung und somit wurde HTML wiederbelebt.</p>
<p>Auf der Klausurtagung <a href="http://www.infomax-online.de">meiner Firma</a> im vor einiger Zeit hielt ich einen Vortrag zu diesem Thema, was bereits geht und was uns erwartet. Und genau <a href="http://www.slideshare.net/benni3005/html-ist-tot-lang-lebe-html">diesen Vortrag</a> will ich hiermit der Welt zur Verf&#252;gung stellen.</p>
<p><object style="margin:0px" width="601" height="488"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5-091031120604-phpapp01&#038;stripped_title=html-ist-tot-lang-lebe-html" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=html5-091031120604-phpapp01&#038;stripped_title=html-ist-tot-lang-lebe-html" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="601" height="488"></embed></object></p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/apocalust/3371826665/">How to spend an afternoon</a> von <a href="http://www.flickr.com/photos/apocalust/">Apocalust</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/html-ist-tot-lang-lebe-html-661#comments">7 Kommentare</a> &middot; <a href="http://ajaveeb.de/html-ist-tot-lang-lebe-html-661">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/html-ist-tot-lang-lebe-html-661/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Statusmails per Cronjob verschicken</title>
		<link>http://ajaveeb.de/statusmails-per-cronjob-verschicken-556</link>
		<comments>http://ajaveeb.de/statusmails-per-cronjob-verschicken-556#comments</comments>
		<pubDate>Sat, 04 Jul 2009 23:36:06 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Cronjob]]></category>
		<category><![CDATA[eMail]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=556</guid>
		<description><![CDATA[Cronjobs sind eine sehr praktische Angelegenheit. Doch nicht immer ist man &#252;ber den aktuellen Status informiert. Dieser Artikel zeigt eine M&#246;glichkeit dazu auf.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/b791a40b2c60b29d1ee801bff6aebac9.jpg" alt="Statusmails per Cronjob verschicken" width="596" height="298" /></p><p style="font-weight:bold">Cronjobs sind eine sehr praktische Angelegenheit. Doch nicht immer ist man über den aktuellen Status informiert. Dieser Artikel zeigt eine Möglichkeit dazu auf.</p><p>Wer mein Blog schon etwas l&#228;nger verfolgt oder sich mal durchgeklickt hat ist vielleicht darauf aufmerksam geworden, dass ich als <a href="http://ajaveeb.de/tiny-tiny-rss-180">Feedreader Tiny Tiiny RSS</a> verwende. Bei diesem Feedreader hat man die M&#246;glichkeit per <a href="http://de.wikipedia.org/wiki/Cron">Cronjob</a> seine abonnierten Feeds aktualisieren zu lassen.</p>
<h2>Der schlechte Ansatz</h2>
<p>Anfangs dachte ich es w&#228;re eine gute Idee die Ausgaben des auszuf&#252;hrenden Skriptes in einer Datei zu loggen. Nach einer Woche wurde mir jedoch klar, dass dies keine gute Idee war, da die Logdatei bereits zu diesem Zeitpunkt mehrere Megabyte gro&#223; geworden war. Zum schnellen Checken des Status also v&#246;llig unbrauchbar. Die logische Konsequenz daraus war, dass ich das Logging komplett entfernt habe, was im Nachhinein betrachtet auch keine allzu schlaue L&#246;sung darstellt.</p>
<h2>Die bessere L&#246;sung</h2>
<p>Vor ein paar Wochen kam mir dann die Idee die Ausgaben des Skriptes per Mail verschicken zu lassen. Ich fand nach einiger Recherche auch ein paar brauchbare Ans&#228;tze, die jedoch dadurch zunichte gemacht wurden, dass mir auf meinem Webspace die ben&#246;tigten Erweiterungen nicht zur Verf&#252;gung stehen.</p>
<p>Heute bin ich dann schlie&#223;lich doch auf eine L&#246;sung gesto&#223;en, die mein Problem behebt. Hier jetzt erst mal der Code, der im Shellskript steht, welches ich f&#252;r die Ausf&#252;hrung verwende:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/sh</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> <span class="sy0">/</span>path<span class="sy0">/</span>to<span class="sy0">/</span>feedreader</div>
</li>
<li class="li1">
<div class="de1">php5 -f update_feeds.php <span class="sy0">&gt;</span> update_feeds.log</div>
</li>
<li class="li1">
<div class="de1">mailx -s <span class="st0">&quot;Feedreader Update Status&quot;</span> example<span class="sy0">@</span>example.com <span class="sy0">&lt;</span> update_feeds.log</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> -f update_feeds.log</div>
</li>
</ol>
</div>
<p>Was passiert jetzt in diesem Skript genau? Das ist im Grunde genommen so einfach wie genial.</p>
<p>Die erste Zeile zeichnet die Datei als Shellskript aus, damit Linux auch wei&#223;, dass sie ausgef&#252;hrt und nicht gelesen werden soll. Der Befehl <code>cd</code> dient dazu in ein anderes Verzeichnis zu springen. In diesem Fall der Ordner, in dem Tiny Tiny RSS installiert ist.</p>
<p>Als n&#228;chstes kommt der wichtige Teil dieses Skriptes, da mit dem Befehl <code>php5</code> das Updateskript aufgerufen wird. <code>php5</code> deswegen, da unter dem &#252;blichen Befehl <code>php</code> auf meinem Webspace noch PHP 4 ausgef&#252;hrt wird. Das war jedoch noch nicht alles, da mit dem Operator <code>&gt;</code> die Ausgabe des Skriptes in einer Datei gespeichert wird. Verwendet man den Operator <code>&gt;&gt;</code> wird die Ausgabe an die bisherigen Inhalte der Datei angeh&#228;ngt, was bei mir, wie oben beschrieben, zu riesigen Dateien f&#252;hren kann.</p>
<p>Soweit so gut, das ist bisher fast genau das, was ich anfangs auch genutzt habe. Doch jetzt kommt der entscheidende Unterschied. In der n&#228;chsten Zeile wird mit dem Befehl <code>mailx</code> eine eMail verschickt. Den Betreff kann man &#252;ber den Parameter <code>-s</code> angeben. Anschlie&#223;end folgt die Mailadresse, an die die Mail geschickt werden soll. Am Ende der Zeile wird durch den Operator <code>&lt;</code> der Inhalt der zuvor geschriebenen Logdatei in den Body geschrieben. Das Ergebnis davon sieht man Sekunden danach in seiner Inbox. In der letzten Zeile l&#246;sche ich mit dem Befehl <code>rm</code> noch die Datei, damit kein unn&#246;tiger Speicherplatz verbraucht wird.</p>
<p>Alles in allem also keine gro&#223;e Magie, die dort betrieben wird. Man muss einfach nur die zur Verf&#252;gung stehenden Mittel seines Servers/Webspaces herausfinden und nutzen, was am besten passt.</p>
<h2>Die abschlie&#223;ende Perfektion der L&#246;sung</h2>
<p>Bisher scheint die L&#246;sung des Problems schon sehr gut zu sein, doch wenn der Cronjob alle f&#252;nf Minuten ausgef&#252;hrt wird hat man bald ein extrem &#252;berf&#252;lltes Postfach. Deswegen zeige ich hier noch eine M&#246;glichkeit auf diesen Umstand in Thunderbird zu beheben.</p>
<p>F&#228;ngt man an zu rechnen f&#228;llt sehr schnell auf, dass pro Tag 288 eMails im Postfach landen. Rechnet man weiter sind das 2016 eMails in der Woche und 105120 eMails im Jahr. Eindeutig zuviel um den &#220;berblick zu behalten. Hier kommt dann allerdings ein sehr praktisches Feature von Thunderbird ins Spiel. Leitet man seine Statusmails &#252;ber einen Filter in einen bestimmten Ordner, so kann man einfach in den Eigenschaften dieses Ordners einstellen, dass alle darin enthaltenen eMails, die &#228;lter als ein Tag sind gel&#246;scht werden.</p>
<p>Dazu macht man einen Rechtsklick auf den Ordner und w&#228;hlt &#8220;Eigenschaften&#8221; aus. Im sich &#246;ffnenden Dialog wechselt man in den Reiter &#8220;Speicherplatz&#8221;. Dort befindet sich dann die gew&#252;nschte Einstellung. Es gibt nat&#252;rlich auch noch andere M&#246;glichkeiten, z.B. dass alle Nachrichten bis auf die letzten 30 oder alle gelesenen gel&#246;scht werden. Das muss dann aber jeder f&#252;r sich entscheiden.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/catatronic/2390769239/">Status</a> von <a href="http://www.flickr.com/photos/catatronic/">catatronic</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/statusmails-per-cronjob-verschicken-556#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/statusmails-per-cronjob-verschicken-556">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/statusmails-per-cronjob-verschicken-556/feed</wfw:commentRss>
		<slash:comments>0</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>Relaunch Nummer 2</title>
		<link>http://ajaveeb.de/relaunch-nummer-2-441</link>
		<comments>http://ajaveeb.de/relaunch-nummer-2-441#comments</comments>
		<pubDate>Fri, 12 Jun 2009 23:38:30 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Privates]]></category>
		<category><![CDATA[Relaunch]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=441</guid>
		<description><![CDATA[Heute ist es endlich soweit. Nach Monaten geht das neue Design online und die Bloggerei geht weiter.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/61cf1211f0c0d87c68762357de91ce99.jpg" alt="Relaunch Nummer 2" width="596" height="298" /></p><p style="font-weight:bold">Heute ist es endlich soweit. Nach Monaten geht das neue Design online und die Bloggerei geht weiter.</p><p>Hier ist er also. Der zweite Relaunch dieses Blogs, zumindest was das Design anbelangt.</p>
<p>Von Grund auf wurde alles neu gestaltet. Nur die Struktur habe ich, wie beim <a href="http://ajaveeb.de/alles-neu-macht-der-mai-oder-so-aehnlich-53">letzten Designwechsel</a>, behalten. Dieses Theme sollte nun auch f&#252;r eine l&#228;ngere Zeit meinen Anspr&#252;chen gen&#252;gen und bietet genug M&#246;glichkeiten es weiter zu entwickeln und somit nicht eine halbe Ewigkeit das Gleiche zu pr&#228;sentieren.</p>
<h2>Was ist anders?</h2>
<p>Das will ich diesmal gar nicht lange erkl&#228;ren. Finde es doch einfach selbst heraus. Nur soviel: Alles ist anders. Der gesamte Code wurde von mir neu geschrieben und ist nun auch noch mehr auf Barrierefreiheit und Suchmaschinenoptimierung ausgelegt. Hier auch noch ein gro&#223;es Danke an meine Arbeitskollegin <a href="http://www.elahaney.de/">Ela*</a>. Sie hat mich von den ersten Entw&#252;rfen bis zur Umsetzung f&#252;r <a href="http://wordpress.org">WordPress</a> begleitet und mir einige sehr n&#252;tzliche Tipps gegeben.</p>
<h2>Bugs und anderes Ungeziefer</h2>
<p>Wer Bugs findet soll sie bitte nicht behalten, sondern am Besten hier in den Kommentaren melden. Ich werde in den n&#228;chsten Tagen noch einige kleinere und eventuell auch gr&#246;&#223;ere Optimierungen vornehmen. Hier schon mal eine Liste, was noch fehlt und was kommt.</p>
<ul>
<li><del datetime="2009-06-13T13:20:29+00:00">Print-Stylesheet</del></li>
<li><del datetime="2009-06-13T13:20:29+00:00">Browseroptimierungen</del></li>
<li><del datetime="2009-06-13T13:20:29+00:00">Script von <a href="http://browser-update.org/">Browser-Update.org</a> einbinden</del></li>
<li>Artikel &#252;berarbeiten und Bilder hinzuf&#252;gen</li>
<li><del datetime="2009-06-13T13:20:29+00:00">Bilder und Ausz&#252;ge im Feed integrieren</del></li>
<li><del datetime="2009-06-13T13:20:29+00:00">Threaded Comments</del></li>
<li><del datetime="2009-06-13T13:20:29+00:00">Safari: Colorbox &#252;berlagert Content permanent</del></li>
<li><del datetime="2009-07-05T20:33:10+00:00">Kontaktformular</del></li>
<li><del datetime="2009-06-13T16:54:45+00:00">Performanceoptimierung</del></li>
</ul>
<h2>Meinungen?</h2>
<p>So. Jetzt bist du dran. Sag mir wie dir das neue Design (nicht) gef&#228;llt und warum. Ich werde versuchen jede Kritik zu beherzigen und einen Kompromiss zu finden. Also auf gehts zum frisch gestylten <a href="#respond">Kommentarformular</a>.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/stuckincustoms/752319396/">Heart of Satan &#8211; What it looks like when fireworks explode inside of a storm cloud over a river</a> von <a href="http://www.flickr.com/photos/stuckincustoms/">Stuck in Customs</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/relaunch-nummer-2-441#comments">7 Kommentare</a> &middot; <a href="http://ajaveeb.de/relaunch-nummer-2-441">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/relaunch-nummer-2-441/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Neuer PC</title>
		<link>http://ajaveeb.de/neuer-pc-394</link>
		<comments>http://ajaveeb.de/neuer-pc-394#comments</comments>
		<pubDate>Sun, 19 Apr 2009 14:16:20 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=394</guid>
		<description><![CDATA[Unter meinem Schreibtisch verrichtet nun ein neuer PC seine Arbeit, den ich mit diesem Artikel kurz vorstellen will.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/ddea901291489a1222adfee499541938.jpg" alt="Neuer PC" width="596" height="298" /></p><p style="font-weight:bold">Unter meinem Schreibtisch verrichtet nun ein neuer PC seine Arbeit, den ich mit diesem Artikel kurz vorstellen will.</p><p>Wer mir bei <a href="http://twitter.com/benni3005">Twitter</a> folgt hat inzwischen wahrscheinlich gelesen, dass ich einen neuen PC habe, den ich mit diesem Artikel kurz vorstellen will.</p>
<p>F&#252;r mich standen anfangs drei verschiedene Alternativen zur Auswahl, von denen logischerweise nur eine gewinnen konnte:</p>
<ol>
<li>PC komplett selbst bauen</li>
<li>Aufr&#252;st-PC finden und alte Komponenten weiter verwenden</li>
<li>Mac kaufen</li>
</ol>
<p><span id="more-394"></span></p>
<p>Die erste M&#246;glichkeit ist aufgrund meiner zu geringen Hardware-Kenntnisse und den erheblichen Mehrkosten recht schnell in den geistigen M&#252;lleimer gewandert. Bei den anderen beiden habe ich lange mit mir gehadert, was denn nun besser sei. Ein <a href="http://www.apple.com/de/macmini/">Mac mini</a> oder ein halbfertiger PC, den ich noch zu Ende bauen muss. Beide hatten ihren Reiz, aber schlussendlich hat die zweite M&#246;glichkeit gewonnen und ich habe mir einen Aufr&#252;st-PC bestellt.</p>
<p>Gefunden habe ich meinen neuen PC dann nach einer langen Suche bei <a href="https://www.csl-computer.com/shop/product_info.php?products_id=1676">CSL-Computer</a>. Ich habe ihn dann auch ohne gro&#223;artige weitere Einbauten bestellt, abgesehen von der wesentlich st&#228;rkeren Grafikkarte <a href="http://www.nvidia.com/object/product_geforce_9400gt_us.html">GeForce 9400 GT</a>. Selbst eingebaut habe ich noch eine 250GB-Festplatte, meine beiden alten DVD-Brenner und eine USB-Erweiterungskarte. Als Betriebssystem setze ich die Beta von Windows 7 (32 Bit) ein.</p>
<p>Eine der wichtigsten Bedingungen f&#252;r meinen neuen PC war, dass er Full-HD-Inhalte fl&#252;ssig darstellen kann und 64-Bit-f&#228;hig ist, falls ich mit dem Release von Windows 7 darauf umsteigen will. Beide erf&#252;llt er mit Bravour. Videos mit einer Dateigr&#246;&#223;e von mehreren GB, einer Aufl&#246;sung von 1920&#215;1080 Pixel und 7.1 Sound verkraftet er locker ohne sich gro&#223; anstrengen zu m&#252;ssen. Die CPU-Auslastung lag bei meinem Test bei gerade mal 30 &#8211; 40%. Das ist mehr als ich erwartet hatte.</p>
<p class="image left"><img src="http://img.ajaveeb.de/594fd63f291084a7410bccbbd36ff0e4.jpg" alt="BenQ E2200HD" /></p>
<p>Nat&#252;rlich fehlt f&#252;r diese Leistung noch der passende Monitor, da mein aktueller mit seinen 17 Zoll und einer Aufl&#246;sung von 1280&#215;1024 in dem neuen Segment nichts mehr zu suchen hat, aber auch hier ist bereits Abhilfe bestellt. Ich hoffe bis Mitte der Woche einen brandneuen <a href="http://benq.de/products/LCD/?product=1031">BenQ E2200HD</a> in meinen H&#228;nden zu halten. An diesem wird dann neben dem PC auch meine PS3 angest&#246;pselt und dann kann der Spa&#223; beginnen. </p>
<p>&#220;brigens kommt dann auch bald mein <a href="http://ajaveeb.de/tags/review" class="st_tag internal_tag" rel="tag" title="Posts tagged with Review">Review</a> zu Windows 7. Diesmal definitiv <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/nickwheeleroz/2669814012/"> Connecting to the Interweb Tubes</a> von <a href="http://www.flickr.com/photos/nickwheeleroz/">nickwheeleroz</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/neuer-pc-394#comments">5 Kommentare</a> &middot; <a href="http://ajaveeb.de/neuer-pc-394">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/neuer-pc-394/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Neue Permalinks</title>
		<link>http://ajaveeb.de/neue-permalinks-369</link>
		<comments>http://ajaveeb.de/neue-permalinks-369#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:37:25 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Relaunch]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ajaveeb.de/?p=369</guid>
		<description><![CDATA[Es gibt neue Permalinks f&#252;r dieses Blog. Wie und warum erl&#228;utere ich hier.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/5493f66c086d8c4bffe0625727ced8da.jpg" alt="Neue Permalinks" width="596" height="298" /></p><p style="font-weight:bold">Es gibt neue Permalinks für dieses Blog. Wie und warum erläutere ich hier.</p><p>Im Zuge des zuk&#252;nftigen Relaunches dieses Blogs habe ich heute bereits die <a href="http://codex.wordpress.org/Using_Permalinks">Permalinks</a> umgestellt. Die bisherige Struktur sah so aus: <code>/%category%/%postname%-%post_id%/</code> und ist dieser Struktur gewichen: <code>/%postname%-%post_id%</code></p>
<p>Die &#196;nderungen an sich halten sich also in Grenzen. Es f&#228;llt nur die Kategorie und der Slash am Ende weg. Aber das reicht um nur noch Fehlerseiten zu Gesicht zu bekommen, da <a href="http://wordpress.org/">WordPress</a> keine eindeutige Zuordnung mehr hat.<span id="more-369"></span></p>
<p>Um die Fehlerseiten zu umgehen und die Permalinks so zu migrieren, dass sowohl menschliche Besucher umgeleitet als auch die neuen URLs in den Index von Suchmaschinen kommen, begab ich mich auf die Suche nach einem geeigneten <a href="http://ajaveeb.de/tags/plugin" class="st_tag internal_tag" rel="tag" title="Posts tagged with Plugin">Plugin</a>. <a href="http://urbangiraffe.com/plugins/advanced-permalinks/">Advanced Permalinks</a> schien der Retter in der Not zu sein, da man damit Permalinks migrieren und noch wesentlich mehr damit anstellen kann.</p>
<p>Nach der Installation und Aktivierung des Plugins konfigurierte ich es so, dass meine alten Links auf die neue URL weitergeleitet werden. Das klappte auch hervorragend. Alles wurde auf die neue Seite geleitet, jedoch fiel mir auf, dass statt dem gew&#252;nschten <a href="http://de.wikipedia.org/wiki/HTTP-Statuscode">Statuscode</a> 301 der falsche Code 302 vom Server gesendet wurde.</p>
<p>F&#252;r den Nutzer ergibt sich bei den beiden Codes kein Unterschied. Man wird bei beiden auf die richtige Seite geleitet, jedoch haben Suchmaschinen damit so ihre Probleme, da 302 bedeutet, dass die Seite nur vor&#252;bergehend unter einer anderen URL zu finden ist und der momentane Link g&#252;ltig bleibt. Ergo: Die Links in Google und Co. w&#252;rden sich nie &#228;ndern.</p>
<p>Um nicht am <a href="http://ajaveeb.de/tags/plugin" class="st_tag internal_tag" rel="tag" title="Posts tagged with Plugin">Plugin</a> selbst herumzupfuschen richtete ich die Weiterleitungen manuell in der <a href="http://de.wikipedia.org/wiki/Htaccess">.htaccess</a>-Datei ein. Darin befindet sich jetzt dieser Block, der genau das bewirkt, was ich wollte:</p>
<div class="geshi no robots">
<div class="head">RewriteRule ^([a-z-]+)/([a-z0-9-]+)-([0-9]{1,3})/trackback(|/)$ /$2-$3/trackback [R=301,L]</div>
<ol>
<li class="li1">
<div class="de1">RewriteRule ^<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z-<span class="br0">&#93;</span>+<span class="br0">&#41;</span>/<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z0<span class="nu0">-9</span>-<span class="br0">&#93;</span>+<span class="br0">&#41;</span>-<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="nu0">-9</span><span class="br0">&#93;</span><span class="br0">&#123;</span><span class="nu0">1</span>,<span class="nu0">3</span><span class="br0">&#125;</span><span class="br0">&#41;</span>/feed<span class="br0">&#40;</span>|/<span class="br0">&#41;</span>$ /$<span class="nu0">2</span>-$<span class="nu0">3</span>/feed <span class="br0">&#91;</span>R=<span class="nu0">301</span>,L<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">RewriteRule ^<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z-<span class="br0">&#93;</span>+<span class="br0">&#41;</span>/<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z0<span class="nu0">-9</span>-<span class="br0">&#93;</span>+<span class="br0">&#41;</span>-<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="nu0">-9</span><span class="br0">&#93;</span><span class="br0">&#123;</span><span class="nu0">1</span>,<span class="nu0">3</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span>|/<span class="br0">&#41;</span>$ /$<span class="nu0">2</span>-$<span class="nu0">3</span> <span class="br0">&#91;</span>R=<span class="nu0">301</span>,L<span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>Mit diesem Code werden die gew&#252;nschten 301-Codes gesendet, wenn man einen Artikel aufruft. Bei allen anderen Linkstrukturen greift der regul&#228;re Ausdruck nicht. Wie man jedoch auch sieht m&#252;ssen Kommentarfeeds und Trackback-URLs ebenfalls umgeleitet werden, weswegen ich mir nicht zu 100% sicher bin ob diese drei Regeln ausreichen. Von daher bitte ich darum mir Bescheid zu geben, wenn ein Link nicht mehr so funktioniert wie er sollte.</p>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/ravages/2831688538/">Links.</a> von <a href="http://www.flickr.com/photos/ravages/">Ravages</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/neue-permalinks-369#comments">0 Kommentare</a> &middot; <a href="http://ajaveeb.de/neue-permalinks-369">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/neue-permalinks-369/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1. Geburtstag &#8211; Ein kleiner R&#252;ckblick</title>
		<link>http://ajaveeb.de/1-geburtstag-ein-kleiner-rueckblick-316</link>
		<comments>http://ajaveeb.de/1-geburtstag-ein-kleiner-rueckblick-316#comments</comments>
		<pubDate>Mon, 02 Feb 2009 23:00:13 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Bilder]]></category>
		<category><![CDATA[Geburtstag]]></category>
		<category><![CDATA[Privates]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=316</guid>
		<description><![CDATA[Dieses Blog hat Geburtstag und wird ein Jahr alt. Nehmt euch ein St&#252;ck Kuchen und feiert mit.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/16dbfa1da883e2623c8a97b3eb62a24a.jpg" alt="1. Geburtstag &#8211; Ein kleiner R&#252;ckblick" width="596" height="298" /></p><p style="font-weight:bold">Dieses Blog hat Geburtstag und wird ein Jahr alt. Nehmt euch ein Stück Kuchen und feiert mit.</p><p>Es ist nun schon ein Jahr her seit ich dieses Blog ins Leben gerufen habe. In der Zwischenzeit hat sich einiges getan und auch eine gro&#223;e Sendepause gab es bereits. Alles in allem w&#252;rde ich pers&#246;nlich aber durchaus von einer kleinen Erfolgsgeschichte reden.</p>
<h3>Der Anfang ist getan</h3>
<p>Am 3. Februar 2008 habe ich exakt um 21:39 meinen ersten Artikel <a href="http://www.ajaveeb.de/beitraege/schwarzes-google-oder-sauberer-code-6/">Schwarzes Google oder sauberer Code?</a> ver&#246;ffentlicht, der bisher zwar nur 5 mal gelesen wurde, aber der Anfang war getan. Schon zu dieser Zeit hat sich durchaus das &#8220;gro&#223;e Thema&#8221; dieses Blogs gezeigt: Webentwicklung. Wenn auch damals noch haupts&#228;chlich im Client-Bereich. Ab dem 15. Juli 2008 habe ich angefangen interessante Links gesammelt zu ver&#246;ffentlichen in der Serie <a href="http://www.ajaveeb.de/linktipps/links-verweise-was-auch-immer-119/">Links, Verweise, was auch immer…</a> Ebenfalls im Juli, jedoch schon am 12. kam das <a href="http://www.ajaveeb.de/artikel/alles-neu-macht-der-mai-oder-so-aehnlich-53/">erste Redesign</a> des Blogs mit dem heute auch noch aktuellen Design.</p>
<h3>Ein gro&#223;er Erfolg</h3>
<p>Und wieder am 12. Juli 2008 habe ich den erfolgreichsten und meistgefragten Artikel dieses Blog geschrieben: <a href="http://www.ajaveeb.de/rezensionen/samsung-u900-soul-77/">Samsung U900 Soul</a>. Zu diesem Zeitpunkt gesellen sich dort 103 Kommentare. Insgesamt wurde der Artikel schon ca. 1400 mal aufgerufen und etwas weniger als 900 Personen sind &#252;ber eine Suchmaschine darauf aufmerksam geworden. Selbst heute, ein gutes halbes Jahr sp&#228;ter, bekommt dieser Artikel den meisten Traffic ab.</p>
<h3>Schleppend geht es weiter</h3>
<p>Im August 2008 wurden noch regelm&#228;&#223;ig Artikel von mir ver&#246;ffentlicht, was sich allerdings ab 16. September 2008 ge&#228;ndert hat. Dort verlor ich die Lust zu bloggen und bin in eine gro&#223;e Sendepause &#252;bergegangen, die noch bis zum 20. Januar 2009 anhalten sollte. Denn zu diesem Zeitpunkt habe ich mich <a href="http://www.ajaveeb.de/beitraege/lange-abwesenheit-303/">wieder gemeldet</a> und wurde auch gleich freudig begr&#252;&#223;t.</p>
<h3>Ein Blick in die Zukunft</h3>
<p>Einen genaueren &#220;berblick &#252;ber zuk&#252;nftige &#196;nderungen, etc. habe ich bereits in meinem &#8220;<a href="http://www.ajaveeb.de/beitraege/lange-abwesenheit-303/">After-Sendepause-Beitrag</a>&#8221; geschrieben. Seitdem hat sich noch nicht viel ver&#228;ndert, bis auf die Tatsache, dass ich mein <a href="http://www.ajaveeb.de/artikel/kleines-buchungssystem-160/">kleines Buchungssystem</a> von Grund auf neu schreiben werde, da laut Statistiken und einer Anfrage tats&#228;chlich Interesse daran besteht.</p>
<h3>Statistiken</h3>
<p>Hier nun ein kleiner Einblick in meine Statistiken, die seit M&#228;rz von <a href="http://www.haveamint.com/">Mint</a> aufgezeichnet werden.</p>
<h4>Artikel, die am meisten aufgerufen wurden</h4>
<ol>
<li><a href="http://www.ajaveeb.de/rezensionen/samsung-u900-soul-77/">Samsung U900 Soul</a></li>
<li><a href="http://www.ajaveeb.de/linktipps/raquo-und-co-96/">&amp;raquo; und Co.</a></li>
<li><a href="http://www.ajaveeb.de/beitraege/silverstripe-31/">Silverstripe</a></li>
<li><a href="http://www.ajaveeb.de/artikel/html-css-und-javascript-quelltext-optimieren-7/">HTML-, CSS- und Javascript-Quelltext optimieren</a></li>
<li><a href="http://www.ajaveeb.de/artikel/kleines-buchungssystem-160/">Kleines Buchungssystem</a></li>
</ol>
<h4>Besucherzahlen</h4>
<ul>
<li><strong><a href="http://www.ajaveeb.de/date/2008/03/">M&#228;rz 2008</a></strong>: 177 Besucher, 290 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/04/">April 2008</a></strong>: 249 Besucher, 380 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/05/">Mai 2008</a></strong>: 274 Besucher, 499 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/06/">Juni 2008</a></strong>: 389 Besucher, 614 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/07/">Juli 2008</a></strong>: 514 Besucher, 880 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/08/">August2008</a></strong>: 712 Besucher, 1367Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2008/09/">September 2008</a></strong>: 1267 Besucher, 1914 Seitenaufrufe</li>
<li><strong>Oktober 2008</strong>: 1355 Besucher, 1946 Seitenaufrufe</li>
<li><strong>November 2008</strong>: 1642 Besucher, 2362 Seitenaufrufe</li>
<li><strong>Dezember 2008</strong>: 1545 Besucher, 2102 Seitenaufrufe</li>
<li><strong><a href="http://www.ajaveeb.de/date/2009/01/">Januar 2009</a></strong>: 1797 Besucher, 2596 Seitenaufrufe</li>
</ul>
<p>Alles in allem macht das ca. 10000 Besucher und ca. 15000 Seitenaufrufe, was f&#252;r ein Blog, welches gerade einmal ein Jahr existiert gar nicht mal schlecht ist, wie ich finde. Allerdings muss ich auch sagen, dass es bei der Menge an Besuchern ruhig ein paar Seitenaufrufe mehr sein k&#246;nnten. Anscheinend muss ich hier noch einen gr&#246;&#223;eren Anreiz schaffen auf meinem Blog zu verweilen. Aber das kommt mit dem neuen Design <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Und zum Schluss</h3>
<p>&#8230; kann ich nur sagen, dass ich wirklich erstaunt bin &#252;ber das bisherige Wachstum meines Blogs und hoffe, dass dieses auch noch l&#228;nger anh&#228;lt. Meinen Teil werde ich in jedem Fall dazu beitragen.</p>
<p>&#8212;<br />
Foto: <a href="http://flickr.com/photos/donsolo/2234406328/">Best. Cake. Evar.</a> von <a href="http://flickr.com/photos/donsolo/">Don Solo</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/1-geburtstag-ein-kleiner-rueckblick-316#comments">3 Kommentare</a> &middot; <a href="http://ajaveeb.de/1-geburtstag-ein-kleiner-rueckblick-316">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/1-geburtstag-ein-kleiner-rueckblick-316/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CSS Shorthands &#8211; Rahmen</title>
		<link>http://ajaveeb.de/css-shorthands-rahmen-233</link>
		<comments>http://ajaveeb.de/css-shorthands-rahmen-233#comments</comments>
		<pubDate>Tue, 26 Aug 2008 19:19:13 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=233</guid>
		<description><![CDATA[Der dritte Teil meiner Serie zu CSS Shorthands. Diesmal geht es um Rahmen.]]></description>
			<content:encoded><![CDATA[<p class="mainimage"><img src="http://img.ajaveeb.de/96976015406ef510b1c83e033d8810b5.jpg" alt="CSS Shorthands &#8211; Rahmen" width="596" height="298" /></p><p style="font-weight:bold">Der dritte Teil meiner Serie zu CSS Shorthands. Diesmal geht es um Rahmen.</p><p>Heute kommt bereits der dritte Teil meiner Serie &#252;ber CSS Shorthands. Im ersten Teil gab ich eine <a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">kurze Einf&#252;hrung</a>, was das &#252;berhaupt ist und was sie bringen, im zweiten Teil wurden <a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">Innen- und Au&#223;enabst&#228;nde</a> ausf&#252;hrlich behandelt.</p>
<p>Nun im dritten Teil werde ich Rahmen beschreiben. Wie man sie normalerweise definiert und wie man es auch ganz kurz und knackig machen kann, wenn man wei&#223; wie.<span id="more-233"></span></p>
<p>Hier also zum Einstieg eine vollst&#228;ndige Definition f&#252;r einen normalen zehn Pixel dicken blauen Rahmen:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-width</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-style</span><span class="sy0">:</span> <span class="kw2">solid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-color</span><span class="sy0">:</span> <span class="re0">#0000ff</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Das allein ist noch kein gro&#223;es Schauspiel. Das &#196;quivalent sieht dazu so aus:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">solid</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Auch hier hat sich der Code f&#252;r die einzelnen Attribute auf mehr oder weniger ein Drittel des vorherigen verringert. Aber nun noch die Erkl&#228;rung der Syntax:</p>
<ul>
<li>Der erste Wert bestimmt die Breite des Rahmens. Die Angabe dort kann in allen erdenklichen Gr&#246;&#223;eneinheiten erfolgen, die in CSS zul&#228;ssig sind.</li>
<li>Der zweite Wert bestimmt die Art des Rahmens. Im obigen Beispiel nutze ich eine durchgezogene Linie. Alternativen hierzu w&#228;ren eine gestrichelte (<code>dashed</code>) oder gepunktete (<code>dotted</code>) Linie. Mehr zu den verschiedenen Arten einer Rahmenlinie findet man bei <a href="http://de.selfhtml.org/css/eigenschaften/rahmen.htm#border_style">SELFHTML</a>.</li>
<li>Der dritte Wert gibt schlussendlich die Farbe an. Dies kann ebenfalls in allen zul&#228;ssigen Varianten erfolgen.</li>
</ul>
<p>Bis jetzt kann man sich noch denken, warum man das verwenden sollte. Doch sp&#228;testens wenn man einen bunten Rahmen erstellen will mit vier verschiedenen Farben, Dicken und Linienarten wird es schnell &#252;bersichtlich:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Oben ein 10 Pixel dicker durchgezogener roter Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-width</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-style</span><span class="sy0">:</span> <span class="kw2">solid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top-color</span><span class="sy0">:</span> <span class="re0">#ff0000</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Rechts ein 3 Pixel dicker gestrichelter gr&#252;ner Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-width</span><span class="sy0">:</span> <span class="re3">3px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-style</span><span class="sy0">:</span> <span class="kw2">dashed</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right-color</span><span class="sy0">:</span> <span class="re0">#00ff00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Unten ein 50 Pixel dicker doppelter grauer Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-width</span><span class="sy0">:</span> <span class="re3">50px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-style</span><span class="sy0">:</span> <span class="kw2">double</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom-color</span><span class="sy0">:</span> <span class="re0">#<span class="nu0">808080</span></span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/* Links ein 15 Pixel dicker gepunkteter blauer Rahmen */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-width</span><span class="sy0">:</span> <span class="re3">15px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-style</span><span class="sy0">:</span> <span class="kw2">dotted</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left-color</span><span class="sy0">:</span> <span class="re0">#0000ff</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>OK, so ein Beispiel will niemand nachbauen und wer sowas auf seiner Website verwendet leidet sowieso an Geschmacksverirrung der &#252;belsten Sorte, aber es zeigt recht eindeutig, wie schnell der Code f&#252;r einen simplen Rahmen wachsen und un&#252;bersichtlich werden kann.</p>
<p>Und um dem geneigten Entwickler die &#220;bersicht zu erleichtern und die Stellen, an denen was ge&#228;ndert werden kann, zu verringern hier nun das kurze Beispiel:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">solid</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-right</span><span class="sy0">:</span> <span class="re3">3px</span> <span class="kw2">dashed</span> <span class="re0">#0f0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-bottom</span><span class="sy0">:</span> <span class="re3">50px</span> <span class="kw2">double</span> <span class="re0">#<span class="nu0">808080</span></span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-left</span><span class="sy0">:</span> <span class="re3">15px</span> <span class="kw2">dotted</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>An diesem Beispiel sieht man deutlich, wie effektiv Shorthands sein k&#246;nnen und wie stark sie den Code vereinfachen k&#246;nnen. Und wie man sieht kann man die Kurzdefinitionen nicht nur f&#252;r einen kompletten Rahmen verwenden, sondern auch nur f&#252;r bestimmte Teile eines Rahmens.</p>
<p>Logischerweise kann man nat&#252;rlich auch Mischungen verwenden, wie die folgende:</p>
<div class="geshi no css">
<div class="head">element {</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-top</span><span class="sy0">:</span> <span class="re3">5px</span> <span class="kw2">solid</span> <span class="re0">#00f</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hier wird zuerst f&#252;r das gesamte Element ein solider Rahmen von einem Pixel Dicke und in der Farbe rot angegeben. Anschlie&#223;end wird ein Teil des Rahmens &#252;berschrieben. Dadurch ist der komplette Rahmen rot und nur oben ist er f&#252;nf Pixel dick und blau.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">CSS Shorthands &#8211; Innen- und Au&#223;enabstand</a></li>
</ul>
<p>&#8212;<br />
Foto: <a href="http://www.flickr.com/photos/david_ludwig/386317095/">Border-USA-Mexico</a></p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-rahmen-233#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-rahmen-233">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-rahmen-233/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Shorthands &#8211; Innen- und Au&#223;enabstand</title>
		<link>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216</link>
		<comments>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:56:27 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=216</guid>
		<description><![CDATA[Dies ist der zweite Teil meiner Artikel-Serie &#252;ber CSS-Shorthands. Im ersten Teil habe ich nur eine kleine Einf&#252;hrung zu diesem Thema gegeben und hier geht es direkt ans Eingemachte.
Der Innenabstand, besser bekannt als padding und der Au&#223;enabstand alias margin sind zwei sehr popul&#228;re Beispiele f&#252;r effektive Shorthands. Hier nun auch direkt das Beispiel dazu:



/* Erst [...]]]></description>
			<content:encoded><![CDATA[<p>Dies ist der zweite Teil meiner Artikel-Serie &#252;ber CSS-Shorthands. Im <a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">ersten Teil</a> habe ich nur eine kleine Einf&#252;hrung zu diesem Thema gegeben und hier geht es direkt ans Eingemachte.</p>
<p>Der Innenabstand, besser bekannt als <code>padding</code> und der Au&#223;enabstand alias <code>margin</code> sind zwei sehr popul&#228;re Beispiele f&#252;r effektive Shorthands.<span id="more-216"></span> Hier nun auch direkt das Beispiel dazu:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-bottom</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding-left</span><span class="sy0">:</span> <span class="re3">40px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">20px</span> <span class="re3">30px</span> <span class="re3">40px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Bei <code>margin</code> gilt genau die gleiche Syntax <img src='http://ajaveeb.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Bei <code>padding</code> und <code>margin</code> werden die einzelnen Werte immer in einer bestimmten Reihenfolge angegeben, die ich nun zeigen will:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">padding</span><span class="sy0">:</span> oben rechts unten links<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Das allein ist noch nicht sehr spannend, denn das wird es erst, wenn man die K&#252;rzung noch weiter k&#252;rzt. So kann z.B. folgendes Konstrukt noch st&#228;rker gek&#252;rzt werden:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-left</span><span class="sy0">:</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="kw2">auto</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hierbei wird f&#252;r oben und unten jeweils der Wert <code>10px</code> genutzt und f&#252;r rechts und links <code>auto</code>. Man muss also nicht immer alle Werte f&#252;r alle Positionen bef&#252;llen. Man kann von einem Wert aufw&#228;rts bis zu maximal vier Werten gehen. Die letzen beiden M&#246;glichkeiten werde ich jetzt noch zeigen:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Erst mal die umst&#228;ndliche Ausf&#252;hrung f&#252;r einen gleichm&#228;&#223;igen Abstand */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-left</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* Dann die kurze Variante f&#252;r einen gleichm&#228;&#223;igen Abstand */</span></div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hiermit bekommt man auf allen vier Seiten eines Elementes einen gleichm&#228;&#223;igen Abstand von jeweils 10 Pixel. Und damit komme ich auch schon zur wohl unbekanntesten und am wenigsten genutzten Variante. Der mit drei Werten.</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-top</span><span class="sy0">:</span> <span class="re3">10px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-right</span><span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin-bottom</span><span class="sy0">:</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">margin</span><span class="sy0">:</span> <span class="re3">10px</span> <span class="re3">20px</span> <span class="re3">30px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Damit bekommt man oben einen Abstand von 10 Pixel, rechts von 20 Pixel und unten von 30 Pixel. Ein Abstand nach links existiert bei dieser Notation nicht.</p>
<p>Dies war auch schon der zweite Teil meiner Serie &#252;ber CSS Shorthands. Fragen, Anregungen, Kritik ist immer gern gesehen. Vielleicht habe ich ja auch etwas vergessen.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-effektiv-nutzen-einfuehrung-206/">CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-rahmen-233/">CSS Shorthands &#8211; Rahmen</a></li>
</ul>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216#comments">1 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-innen-und-aussenabstand-216/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS Shorthands effektiv nutzen &#8211; Einf&#252;hrung</title>
		<link>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206</link>
		<comments>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:43:32 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Komprimierung]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Shorthands]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=206</guid>
		<description><![CDATA[Heute will ich eine Artikel-Serie starten, die sich mit CSS Shorthands besch&#228;ftigt. Da das Thema ein sehr komplexes ist und nicht mal eben schnell abgehandelt werden kann, werde ich heute nur mit einer kleinen Einf&#252;hrung starten und die anderen Teile der Serie, die dann die einzelnen M&#246;glichkeiten von Shorthands n&#228;her beleuchten in den n&#228;chsten Tagen [...]]]></description>
			<content:encoded><![CDATA[<p>Heute will ich eine Artikel-Serie starten, die sich mit CSS Shorthands besch&#228;ftigt. Da das Thema ein sehr komplexes ist und nicht mal eben schnell abgehandelt werden kann, werde ich heute nur mit einer kleinen Einf&#252;hrung starten und die anderen Teile der Serie, die dann die einzelnen M&#246;glichkeiten von Shorthands n&#228;her beleuchten in den n&#228;chsten Tagen St&#252;ck f&#252;r St&#252;ck ver&#246;ffentlichen.<span id="more-206"></span></p>
<h3>Was sind CSS Shorthands?</h3>
<p>Im Grunde genommen ist das schnell erkl&#228;rt. Es sind schlichtweg Abk&#252;rzungen von Definitionen in CSS. Normalerweise muss man z.B. bei einem Rahmen jede Eigenschaft einzeln definieren. Genauer gesagt gibt es f&#252;r jede dieser Eigenschaften eine eigene M&#246;glichkeit zur Definition:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-width</span><span class="sy0">:</span> <span class="re3">1px</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-style</span><span class="sy0">:</span> <span class="kw2">dotted</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border-color</span><span class="sy0">:</span> <span class="re0">#ff0000</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Hiermit wird ein Rahmen erstellt, der exakt ein Pixel breit, gepunktet und rot ist. Nat&#252;rlich ist das umst&#228;ndlich zu schreiben, wenn man, wie ich, seinen Quelltext in einem normalen Texteditor schreibt und nicht in einem dieser speziellen Editoren f&#252;r CSS. Darum gibt es f&#252;r obiges Beispiel auch die M&#246;glichkeit dies so zu definieren:</p>
<div class="geshi no css">
<ol>
<li class="li1">
<div class="de1">element <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">dotted</span> <span class="re0">#f00</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Der Code hat sich somit auf ca. ein Drittel des Vorherigen gek&#252;rzt und ist wesentlich besser zu lesen als zuvor. Die Reihenfolge der einzelnen Werte folgt bei jeder M&#246;glichkeit Shorthands zu nutzen einem festgelegten Muster, damit niemand seine eigene Suppe kochen kann und Browser eine bestimmte Grundlage zum Rendering haben.</p>
<p>Im &#252;brigen kann man auch Farbangaben k&#252;rzen, wie man oben sehr gut sieht. So kann z.B. aus <code>#000000</code> einfach nur <code>#000</code> werden. Dies funktioniert nat&#252;rlich nur bei Farbangaben, bei denen jeweils zwei mal die gleiche Ziffer hintereinander erscheint. <code>#12ff66</code> kann man deswegen nicht in Kurzschreibweise definieren.</p>
<p>So, ich denke das Grundprinzip hat nun jeder verstanden und deswegen fange ich gleich mal an den zweiten Teil zu schreiben.</p>
<p>Hier nun eine Liste der weiteren Artikel, die sich in dieser Serie befinden:</p>
<ul>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-innen-und-aussenabstand-216/">CSS Shorthands &#8211; Innen- und Au&#223;enabstand</a></li>
<li><a href="http://www.ajaveeb.de/artikel/css-shorthands-rahmen-233/">CSS Shorthands &#8211; Rahmen</a></li>
</ul>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206#comments">4 Kommentare</a> &middot; <a href="http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/css-shorthands-effektiv-nutzen-einfuehrung-206/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tiny Tiny RSS</title>
		<link>http://ajaveeb.de/tiny-tiny-rss-180</link>
		<comments>http://ajaveeb.de/tiny-tiny-rss-180#comments</comments>
		<pubDate>Sat, 23 Aug 2008 19:12:44 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=180</guid>
		<description><![CDATA[Ich beobachte nun schon seit einigen Wochen, dass sich an Wochenenden in meinem Feedreader so gut wie nichts tut, obwohl jeder zu dieser Zeit eigentlich am meisten Zeit haben sollte. Ist das eine allgemeine Unlust oder einfach nur eine Wochenend-Faulheit?

Egal, denn dies bringt mich zu meinem eigentlichen Thema. Einem sehr guten Feedreader auf Basis von PHP und AJAX: <a href="http://tt-rss.org/trac/wiki">Tiny Tiny RSS</a>.]]></description>
			<content:encoded><![CDATA[<p style="font-weight:bold">Ich beobachte nun schon seit einigen Wochen, dass sich an Wochenenden in meinem Feedreader so gut wie nichts tut, obwohl jeder zu dieser Zeit eigentlich am meisten Zeit haben sollte. Ist das eine allgemeine Unlust oder einfach nur eine Wochenend-Faulheit?

Egal, denn dies bringt mich zu meinem eigentlichen Thema. Einem sehr guten Feedreader auf Basis von PHP und <a href="http://ajaveeb.de/tags/ajax" class="st_tag internal_tag" rel="tag" title="Posts tagged with AJAX">AJAX</a>: <a href="http://tt-rss.org/trac/wiki">Tiny Tiny RSS</a>.</p><p><a href="http://www.ajaveeb.de/wp-content/uploads/2008/08/tinytinyrss-1219518482.png" rel="lightbox" title="Screenshot von Tiny Tiny RSS"><img src="http://www.ajaveeb.de/wp-content/uploads/2008/08/tinytinyrssklein-1219518482.png" alt="Tiny Tiny RSS" style="float:none" /></a></p>
<p>Ich beobachte nun schon seit einigen Wochen, dass sich an Wochenenden in meinem Feedreader so gut wie nichts tut, obwohl jeder zu dieser Zeit eigentlich am meisten Zeit haben sollte. Ist das eine allgemeine Unlust oder einfach nur eine Wochenend-Faulheit?</p>
<p>Egal, denn dies bringt mich zu meinem eigentlichen Thema. Einem sehr guten Feedreader auf Basis von PHP und <a href="http://ajaveeb.de/tags/ajax" class="st_tag internal_tag" rel="tag" title="Posts tagged with AJAX">AJAX</a>: <a href="http://tt-rss.org/trac/wiki">Tiny Tiny RSS</a>.<span id="more-180"></span></p>
<p>Als ich vor einige Zeit damit begonnen habe Feeds zu lesen habe ich mich logischerweise auf die Suche nach einem geeigneten Feedreader begeben. Anfangs habe ich mich hier f&#252;r <a href="http://sage.mozdev.org/">Sage</a> entschieden, was ein Add-on f&#252;r Firefox ist. Doch bald begann die Suche von neuem, da ich auch von unterwegs auf meine Feeds zugreifen wollte. Hierbei habe ich mir diverse Anbieter angeschaut, doch keiner hat mir wirklich gefallen. Schlussendlich bin ich jedoch, durch Zufall, auf Tiny Tiny RSS gesto&#223;en.</p>
<h3>Features von Tiny Tiny RSS</h3>
<p>Dieses feine St&#252;ck <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> von <a href="http://bah.org.ru/">Andrew Dolgov</a> bietet alles, was man braucht und sieht nebenbei noch sehr gut aus, was ein weiterer Grund f&#252;r mich war diesem Reader eine Chance zu geben. Doch hier nun die Features:</p>
<ul>
<li>Die <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> l&#228;uft vollautomatisch auf einem Webserver</li>
<li>TT-RSS unterst&#252;tzt diverse Formate wie RSS, RDF, Atom, etc.</li>
<li>OPML-Importe und Exporte stehen zur Verf&#252;gung</li>
<li>Die Installation und Konfiguration gestaltet sich einfach</li>
<li>Das Interface ben&#246;tigt keine Reloads der Seite dank <a href="http://de.wikipedia.org/wiki/XMLHttpRequest">XmlHttpRequest</a> oder einfacher gesagt <a href="http://de.wikipedia.org/wiki/Ajax_(Programmierung)">AJAX</a></li>
<li>Die <a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> ist frei und steht unter einer <a href="http://www.gnu.org/copyleft/gpl.html">GPL-Lizenz</a></li>
<li>Artikel k&#246;nnen selbst aggregiert und anderen verf&#252;gbar gemacht werden</li>
<li>Wie bei <a href="https://mail.google.com/">Google Mail</a> werden Tastatureingaben unterst&#252;tzt</li>
<li>Artikel k&#246;nnen intern bewertet werden</li>
<li>Podcasts werden seit der aktuellen Version ebenfalls unterst&#252;tzt</li>
</ul>
<p>F&#252;r all das wird ein Webserver oder nat&#252;rlich auch Webspace mit mindestens PHP 4 und <a href="http://ru2.php.net/mbstring">mbstring</a> ben&#246;tigt. Als Datenbank kann entweder <a href="http://www.mysql.com/">MySQL</a> ab Version 4.1 oder <a href="http://www.postgresql.org/">PostgreSQL</a> ab Version 7.4 benutzt werden. Zus&#228;tzlich ist es noch praktisch wenn <a href="http://phpxmlrpc.sourceforge.net/">XML-RPC for PHP</a> und Gettext auf dem Server verf&#252;gbar sind.</p>
<h3>Installation von TT-RSS</h3>
<p>Die Installation gestaltet sich sehr einfach. Das heruntergeladene Archiv entpacken, die Konfigurationsdatei anpassen und hochladen. Anschlie&#223;end noch das Datenbankschema einspielen und schon kann der Spa&#223; beginnen.</p>
<p>Das Datenbankschema einspielen ist hierbei wohl der schwierigste Teil, da dies nicht wie bei <a href="http://wordpress.org/">WordPress</a> in einer Installationsroutine geschieht, sondern manuell erledigt werden muss. Hierzu kann man, je nach M&#246;glichkeit, die Kommandozeile oder phpMyAdmin verwenden.</p>
<p>Bevor man Tiny Tiny RSS das erste Mal nutzt muss man auch noch angeben, wie die Feeds aktualisiert werden sollen. Am besten eignet sich hierf&#252;r ein Cronjob, der die Datei <code>update_feeds.php</code> in bestimmten Abst&#228;nden aufruft. Jedoch gibt es auch noch diverse andere Methoden, die allesamt <a href="http://tt-rss.org/trac/wiki/UpdatingFeeds">hier</a> beschrieben sind.</p>
<h3>Eindruck</h3>
<p>Mein Eindruck von Tiny Tiny RSS ist sehr gut, auch nach der langen Zeit, die ich dieses Tool nun schon nutze. Das Interface reagiert schnell und ist intuitiv zu bedienen. Jeder kommt damit binnen Minuten zurecht. Die Einstellungen, die man t&#228;tigen kann sind ebenfalls sehr umfangreich. Man kann nahezu alles konfigurieren. Man kann Feeds auch in Kategorien einteilen, um einen besseren &#220;berblick zu behalten und zur besseren Identifikation der Feeds werden die Favicons der Websites angezeigt, sofern verf&#252;gbar.</p>
<p>Alles in allem kann ich dieses Tool jedem besten Gewissens empfehlen, da auch Updates leicht von der Hand gehen, die relativ regelm&#228;&#223;ig ver&#246;ffentlicht werden und neue Features oder Bugfixes enthalten. Ganz nebenbei gibt es auch noch ein <a href="https://addons.mozilla.org/de/firefox/addon/3342">sehr praktisches Add-on f&#252;r Firefox</a>, mit dem immer dar&#252;ber informiert ist, wie viele neue Artikel gelesen werden wollen und man kann seine Installation mittels eines Bookmarklets oder Favlets als Feedreader registrieren. Was das ist beschreibt <a href="http://www.perun.net/">Perun</a> in seinem neuen Blog <a href="http://www.webwork-tools.de/2008/08/was-sind-bookmarklets-bzw-favlets/">Webwork-Tools</a>.</p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/tiny-tiny-rss-180#comments">4 Kommentare</a> &middot; <a href="http://ajaveeb.de/tiny-tiny-rss-180">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/tiny-tiny-rss-180/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Umfrage beim WordPress Magazin</title>
		<link>http://ajaveeb.de/umfrage-beim-wordpress-magazin-169</link>
		<comments>http://ajaveeb.de/umfrage-beim-wordpress-magazin-169#comments</comments>
		<pubDate>Sun, 17 Aug 2008 21:44:31 +0000</pubDate>
		<dc:creator>Benni</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Umfrage]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.ajaveeb.de/?p=169</guid>
		<description><![CDATA[Zuallererst will ich Valentin Tomaschek zum Onlinestart des WordPress Magazins gratulieren. Noch gibt es zwar nicht sehr viel Inhalt, aber das wird sich bestimmt bald &#228;ndern und ich hoffe, dass die Site zu einem weiteren Anlaufpunkt f&#252;r deutsche Blogger wird, die WordPress verwenden.
Dann will ich an der momentan stattfindenden Umfrage teilnehmen, bei der es auch [...]]]></description>
			<content:encoded><![CDATA[<p>Zuallererst will ich <a href="http://www.installmehere.net/">Valentin Tomaschek</a> zum Onlinestart des <a href="http://www.wordpress-magazin.de/">WordPress Magazins</a> gratulieren. Noch gibt es zwar nicht sehr viel Inhalt, aber das wird sich bestimmt bald &#228;ndern und ich hoffe, dass die Site zu einem weiteren Anlaufpunkt f&#252;r deutsche Blogger wird, die <a href="http://wordpress.org/">WordPress</a> verwenden.</p>
<p>Dann will ich an der <a href="http://www.wordpress-magazin.de/umfrage-und-was-zu-gewinnen/">momentan stattfindenden Umfrage</a> teilnehmen, bei der es auch etwas zu gewinnen gibt, n&#228;mlich eine <a href="http://www.wpseo.de/license/">Classic-Lizenz von wpSEO</a>.<span id="more-169"></span></p>
<p>Und jetzt direkt zu den Fragen:</p>
<p><strong>1. Wie bist Du zum bloggen gekommen?</strong></p>
<p>Um ehrlich zu sein, keine Ahnung. Ich habe mich, seit ich von Blogs erfahren habe, zwar stark daf&#252;r interessiert und hatte auch schon mal ein paar kleine Blogs, aber irgendwie hatte ich selten die Lust dazu dauernd was zu schreiben. Inzwischen hat sich das ge&#228;ndert und ich schreibe gern. Nicht unbedingt oft oder sehr regelm&#228;&#223;ig, aber es macht mir Spa&#223;, was ja wohl die Hauptsache am Bloggen sein sollte.</p>
<p><strong>2. Warum hast Du Dich f&#252;r WordPress als Blog-<a href="http://ajaveeb.de/tags/software" class="st_tag internal_tag" rel="tag" title="Posts tagged with Software">Software</a> entschieden?</strong></p>
<p>WordPress ist mir einfach sehr sympathisch. Als designliebender Mensch kann ich mich hier bei der Themeerstellung nahezu grenzenlos austoben. Ein weiterer Punkt, der f&#252;r WordPress spricht ist, dass es ein aufger&#228;umtes Tool ist mit der F&#228;higkeit beliebig erweitert zu werden, was es auch f&#252;r diverse andere Projekte geeignet macht.</p>
<p><strong>3. Hat etwas gegen WordPress gesprochen?</strong></p>
<p>Bisher habe ich nichts gefunden, was mich von WordPress abbringen k&#246;nnte. OK, ein paar kleinere M&#228;ngel hat es an manchen Stellen, doch die kann man meist &#252;ber Plugins ausb&#252;geln.</p>
<p><strong>4. Hast Du eine bestimmte thematische Ausrichtung beim Bloggen und wenn ja, welche?</strong></p>
<p>Thematische Ausrichtung&#8230; Hm&#8230; Im Grunde genommen blogge ich &#252;ber alles M&#246;gliche, was mir auf meinem Weg durchs Internet in die Quere kommt. Ich versuche jedoch meinen Fokus auf Programmierung und Webdesign zu setzen, was mir bisher jedoch noch nicht wirklich gelungen ist.</p>
<p><strong>5. Was tust Du um mehr Leser f&#252;r Deinen Blog zu gewinnen und was um diese dort auch m&#246;glichst dauerhaft zu halten?</strong></p>
<p>Dank <a href="http://www.haveamint.com/">Mint</a> verf&#252;ge ich &#252;ber sehr aussagekr&#228;ftige Statistiken meines Blogs, die ich auch t&#228;glich verfolge, um Trends zu erkennen oder mich dar&#252;ber zu wundern. Meist werden die Eintr&#228;ge, von denen ich die meisten Lesern erwarte relativ wenig gelesen, w&#228;hrend andere v&#246;llig unerwartet zu Rennern werden.</p>
<p>Allgemein betreibe ich sehr wenig Werbung f&#252;r mein Blog und verlasse mich mehr auf die Optimierungen, die ich im SEO-Bereich vorgenommen habe. Und bisher mit relativ hohem Erfolg. Obwohl ich bisher f&#252;r diese Domain keinen Pagerank habe kann ich doch schon mehr oder weniger 2000 Besucher in 5 Monaten verzeichnen.</p>
<p>So, jetzt bin ich ja mal gespannt, was andere auf diese Fragen antworten und ob ich vielleicht sogar gewinne. Ich bin zwar nicht sehr scharf auf den Gewinn, da ich wpSEO hier bereits einsetze, aber eventuell kann ich die Lizenz f&#252;r ein anderes Projekt gebrauchen.</p>
<hr /><small>&copy; <a href="http://www.ajaveeb.de/">Benjamin Hofmann</a> (ID:  f3d8e0b3cf4b39ca430ffe4e706e912c)</small><br /><a href="http://ajaveeb.de/umfrage-beim-wordpress-magazin-169#comments">3 Kommentare</a> &middot; <a href="http://ajaveeb.de/umfrage-beim-wordpress-magazin-169">Permalink</a>]]></content:encoded>
			<wfw:commentRss>http://ajaveeb.de/umfrage-beim-wordpress-magazin-169/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
