<?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>Dunkelstern&#039;s Blog &#187; Blog</title>
	<atom:link href="http://blog.dunkelstern.de/tag/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dunkelstern.de</link>
	<description>Weird things happening</description>
	<lastBuildDate>Fri, 27 Aug 2010 22:38:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>WordPress?!?</title>
		<link>http://blog.dunkelstern.de/2010/06/28/wordpress/</link>
		<comments>http://blog.dunkelstern.de/2010/06/28/wordpress/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 14:48:55 +0000</pubDate>
		<dc:creator>dunkelstern</dc:creator>
				<category><![CDATA[Meine Nerven!]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Konzept]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://blog.dunkelstern.de/?p=107</guid>
		<description><![CDATA[So, ich hab mich jetzt 3 Tage lang mit WordPress rumgeärgert und hab schon die Nase voll. Die Codequalität der angebotenen Plugins ist unter aller Sau! Doch warum interessiert mich die Codequalität von funktionierenden Plugins? Ganz einfach, sie funktionieren nicht, oder nicht so wie ich das will. Bestes Beispiel die Tag-Cloud in der Seitenleiste. Ich [...]]]></description>
			<content:encoded><![CDATA[<p>So, ich hab mich jetzt 3 Tage lang mit WordPress rumgeärgert und hab schon die Nase voll. Die Codequalität der angebotenen Plugins ist unter aller Sau!</p>
<p><span id="more-107"></span>Doch warum interessiert mich die Codequalität von funktionierenden Plugins? Ganz einfach, sie funktionieren nicht, oder nicht so wie ich das will. Bestes Beispiel die Tag-Cloud in der Seitenleiste. Ich wollte eine Tag-Cloud die eben nicht nur die Schriftgröße verändert umso häufiger der Tag vorkommt, deshalb fällt die standard WordPress Tagcloud schonmal raus. Zum Ändern der Farbe gibts 2 fertige Plugins, eines davon funktioniert gar nicht (ich denke das liegt irgendwie an WordPress 3, anders kann ich mir die positiven Bewertungen nicht erklären), das andere Produziert invaliden HTML Code und kann auch nur zufällige Farben vergeben (Palette kann man einstellen aber die Farben aus dieser werden zufällig auf die Tags verteilt). Ich wollte aber etwas anderes: Meine Vorstellung war, dass das Tag-Cloud Plugin einfach CSS Klassen vergibt die ich dann in meinem Stylesheet vernünftig beschreiben kann. Somit könnte man eben nicht nur Schriftgröße und Farbe richtig anpassen sondern auch die Schriftart ändern zum Beispiel.</p>
<h3>Plugin abändern?</h3>
<p>Das dachte ich mir auch, dann nehm ich halt das vorhandene Plugin her und bau das um. Dann hat mich allerdings der Schlag getroffen in welchem katastrophalen Zustand der Code ist. Geschockt wie ich war hab ich mal die anderen Plugins die ich so installiert habe in meinen Texteditor geworfen und bei allen existiert dasselbe Chaos.</p>
<h3>Anderes Thema: Themes</h3>
<p>Ich dachte, da WordPress so verbreitet ist müsste man eine Menge Themes finden auf die man Aufbauen kann, doch zumindest mit der in WordPress integrierten Suche findet man fast nix. Also hab ich mir ein möglichst minimalistisches Theme genommen und angefangen das umzubauen. Auch hier wieder: Totales Chaos!</p>
<p>Was mir bei der Bastelei weiterhin aufgefallen ist: Das ganze Theme Konzept von WordPress ist totaler Murks. Möchte ich z.B. auf der Frontpage (<code>index.php</code>) meines Blogs einen Blogeintrag komplett ausgeführt haben statt ihn automatisch beim &#8220;more&#8221;-Tag abschneiden zu lassen, muss ich eine Variable namens <code>$more</code> auf den Wert <code>-1</code> setzen bevor ich das Kommando <code>the_post()</code> aufrufe. (Dieses <code>the_post()</code> ist nochmal so ne ganz andere Geschichte) Kurzgesagt: Das Template design in WordPress ist totaler Murks. Magische Variablen die irgendwie im globalen Kontext existieren müssen um etwas total unbeteiligtes zu verändern? Das gehört im besten Fall als Parameter in <code>the_post()</code>, aber am besten schafft man dieses Konstrukt gleich mit ab.</p>
<h3>Reengineering WordPress: The right way!</h3>
<div id="attachment_108" class="wp-caption alignright" style="width: 460px"><a href="http://blog.dunkelstern.de/wp-content/uploads/2010/06/modular_blog.png"><img class="size-full wp-image-108 " title="Mindmap" src="http://blog.dunkelstern.de/wp-content/uploads/2010/06/modular_blog_thumb.png" alt="Mindmap des Modularen Blogs" width="450" height="324" /></a><p class="wp-caption-text">Konzept</p></div>
<p>Wie macht man es also Richtig? Meiner Meinung nach muss alles was nicht integraler Bestandteil des Blogs ist in externe Plugins ausgelagert werden. Also auch Tags, Kategorien und sogar Kommentare. Erstens kann man so schnell Teile austauschen ohne das ganze System updaten zu müssen und zweitens werde ich damit gezwungen vernünftig zu Programmieren.</p>
<p>Am besten sollten alle Plugins sich konventionell prozedural bei den Systemfunktionen einklinken (Hooks registrieren) und dann als reine Klassen und Objekte weiter existieren. Bei der Architektur würde ich das Android Modell bevorzugen. Ein Plugin benötigt &#8220;Dienste&#8221; und stellt dem System auf der anderen Seite wieder andere Dienste zur verfügung. Beispielsweise würde ein Tags Plugin sich in die Adminseite für die Posts mit einklinken und auf dieser Seite zusätzliche Steuerelemente zur Verfügung stellen, weiterhin klinkt es sich automatisch in den &#8220;Postings&#8221; Dienst ein und ergänzt zu jedem Posting die vorhandenen Tags. Auf der anderen Seite benötigt das Tags Plugin natürlich Zugriff auf die Datenbank in der es eine eigene Tabelle für die Tags anlegt und die Posts mit den Tags verknüpft.</p>
<p>Das Theme Template wiederum könnte das System fragen ob ein &#8220;Tags&#8221; Service existiert und die Tags anzeigen sobald es welche erhält. Das Theme wäre also ebenfalls von Systemdiensten abhängig, allerdings auf zweierlei unterschiedliche Weisen: Erstens könnte es einen Dienst Zwingend benötigen oder zweitens ihn optional unterstützen (wenn keine Tags da sind zeig ich halt keine an vs. ich benötige dringend JQuery da sonst die Seite nicht funktioniert). Auf der anderen Seite stellt das Theme Template dem System aber auch Dienste zur Verfügung in Form von Containern (z.B. Posting/Archiv Bereich und eine Navigationsleiste oben und eine Sidebar). Diese Container könnten dann wie im WordPress Admin Interface mit Widgets gefüllt werden die ebenfalls als Plugins angelegt sind.</p>
<p>Ich habe das ganze mal als Mindmap (klick auf das Bild führt zum ganzen Ausmaß) grob zusammengefasst weil ich mir selber darüber klar werden wollte wie viel Aufwand es wäre ein Blog auf dieser Basis zu entwickeln. Ich muss sagen das ganze wirkt recht umfangreich auf mich, doch ich denke ich werde es probieren (auch einfach aus dem Grund weil mein altes Blog aus historisch gewachsenem Code besteht und mittlerweile ein wenig aus der Mode gekommen ist da ich dort rein prozedural Programmiert habe). Ich vermute das Backend an sich wird der meiste Aufwand, doch die Plugins können ja stückweise entstehen.</p>
<p>Das ganze soll nachher OpenSource werden, da ich es auch als Referenz für zukünftige Bewerbungen benutzen möchte und einfach weil ich denke, dass WordPress (sofern es nicht überdacht wird, wobei… das hatte ich bei 3.0 schon erwartet) ausgedient hat und eine flexiblere Alternative her sollte.</p>
<p>Den Fortschritt könnt ihr, sobald etwas Sichtbar wird, auf <a href="http://devel.dunkelstern.de/">http://devel.dunkelstern.de/</a> mitverfolgen, aber erwartet nicht dort etwas funktionierendes zu finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dunkelstern.de/2010/06/28/wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bloggen über ein Blog</title>
		<link>http://blog.dunkelstern.de/2009/12/27/bloggen-uber-ein-blog/</link>
		<comments>http://blog.dunkelstern.de/2009/12/27/bloggen-uber-ein-blog/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 22:08:54 +0000</pubDate>
		<dc:creator>dunkelstern</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://blog.dunkelstern.de/2009/12/27/blog-opensource</guid>
		<description><![CDATA[Ich denke mittlerweile ist mein Blog soweit gediehen, dass ich es eigentlich auch gleich als OpenSource raushauen kann. Warum auch nicht, vielleicht kann ja jemand davon profitieren. Get it while it&#39;s hot Ich ver&#246;ffentlich das Ding jetzt einfach mal mit einem sehr einfachen Style ohne besonderes Theme oder so. Ein Automatischer Setup Assistent ist schon [...]]]></description>
			<content:encoded><![CDATA[<p>
	Ich denke mittlerweile ist mein Blog soweit gediehen, dass ich es eigentlich auch gleich als OpenSource raushauen kann. Warum auch nicht, vielleicht kann ja jemand davon profitieren.</p>
<h3>
	Get it while it&#39;s hot <img src='http://blog.dunkelstern.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>
	Ich ver&ouml;ffentlich das Ding jetzt einfach mal mit einem sehr einfachen Style ohne besonderes Theme oder so. Ein Automatischer Setup Assistent ist schon dabei, eigentlich muss man es nur runterladen und entpacken.</p>
<p>
	<a href="http://projects.dunkelstern.de/blog/dunkelstern_blog-1.0.1.tar.gz">http://projects.dunkelstern.de/blog/dunkelstern_blog-1.0.1.tar.gz</a></p>
<h4>
	Setup</h4>
<h5>
	Systemvorraussetzungen</h5>
<ul>
<li>
		Apache Webserver</li>
<li>
		URL Rewriting muss eingeschaltet sein</li>
<li>
		PHP 5.2+</li>
<li>
		Datenbank (SQLite reicht auch).</li>
</ul>
<p>
	Momentan unterst&uuml;tzt das Dunkelstern Blog SQLite, MySQL und PostgreSQL &uuml;ber&nbsp;das PHP-PDO Objekt.</p>
<p>
	Um das Blog zu installieren m&uuml;ssen die Dateien lediglich auf einen Webserver&nbsp;hochgeladen werden (die <span class="code"><em>.htaccess</em></span> nicht vergessen!) und mit einem Browser&nbsp;das Verzeichnis angesurft werden. Der Setup Assistent sollte sich nun automatisch &Ouml;ffnen.</p>
<p>
	Will man das Blog einfach mal kurz antesten, so muss lediglich ein Passwort f&uuml;r&nbsp;den ersten User eingetragen werden und auf &quot;Erstellen&quot; geklickt werden. Danach sollte&nbsp;sich das Blog dann mit dem ersten Eintrag zeigen. In diesem Eintrag ist auch ein Link&nbsp;zum Admin Interface eingebunden, diesen sollte man sich entweder merken oder als&nbsp;Lesezeichen im Browser abspeichern.</p>
<h4>
	Funktionen</h4>
<ul>
<li>
		Standardkonformer Atom Feed</li>
<li>
		Komplett webbasiertes Admin Interface</li>
<li>
		Automatischer Setup Assistent</li>
<li>
		Komplett mittels CSS und Template Dateien ver&auml;nderbares Theme</li>
<li>
		XML-RPC Interface welches erm&ouml;glicht das Blog mit einem Standalone&nbsp;Blogging client zu verwenden</li>
<li>
		WYSIWYG Editor im Webinterface</li>
<li>
		Mehrere Autoren Accounts moeglich (siehe Roadmap)</li>
<li>
		Erstellen von Blogeintraegen mit Datum in der Zukunft, diese erscheinen&nbsp;ab dem eingestellten Datum im Feed und auf der Webseite</li>
<li>
		Erstellen von Entw&uuml;rfen die nicht Ver&ouml;ffentlicht werden</li>
<li>
		Moderierbare Kommentare</li>
<li>
		Captcha Einbindung zur Verhinderung von Spam</li>
<li>
		Taggen von Beitr&auml;gen moeglich</li>
<li>
		Suche nach Tags und Autoren f&uuml;r den Benutzer und Leser m&ouml;glich</li>
<li>
		Automatisches K&uuml;rzen von Beitr&auml;gen f&uuml;r die Frontpage (&quot;Weiterlesen&#8230;&quot; Link)</li>
<li>
		Baumstruktur des Blog Archivs anzeigbar</li>
<li>
		Kommentare, Reaktionen und Trackbacks via Disqus</li>
</ul>
<h4>
	XML-RPC Zugriff</h4>
<p>
	Es wurden verschiedene Blogging clients getestet (am besten funktioniert immer noch&nbsp;der Windows Live Writer, aber auch Marsedit und Blogo auf dem Mac wurden ausgiebig&nbsp;getestet.)</p>
<h5>
	Einstellungen f&uuml;r den Blogging Client:</h5>
<div class="code">
	<strong>XML-RPC Zugangspunkt:</strong> http://pfad.zum/blog/xmlrpc<br />
	<strong>Blog Serverssoftware:</strong> WordPress 2+<br />
	<strong>Benutzername:</strong> Angelegter Benutzer<br />
	<strong>Passwort: </strong> Angelegtes Passwort<br />
	<strong>Blog URL:</strong> http://pfad.zum/blog/</div>
<h4>
	Anpassen</h4>
<p>
	Das Aussehen des Blogs kann total an die Seite in die es Integriert werden soll&nbsp;angepasst werden. Die n&ouml;tigen Dateien dazu findet man in <span class="code">./templates/</span></p>
<p>
	Beim parsen der Templates werden alle Tokens die mit <span class="code">%</span>-Zeichen umschlossen sind durch&nbsp;entsprechende Werte ersetzt. Umschliesst man ein Wort mit zwei Hash-Zeichen (<span class="code">#</span>) so&nbsp;sucht die Engine nach einer Datei mit diesem Namen im Template Ordner und bindet diese&nbsp;anstatt dem Token ein. Wenn die Datei eine PHP Datei ist so wird sie ganz normal&nbsp;ausgef&uuml;hrt.</p>
<p>
	M&ouml;chte man die Templates Sprachabh&auml;ngig gestalten so sind die entsprechenden Dateien&nbsp;aus dem Template Ordner in den entsprechende Unterorder der jeweiligen Sprache zu verschieben.</p>
<p>
	Die Anpassung des Captcha Mechanismus ist sehr einfach &uuml;ber die Datei <span class="code">captcha.php</span>&nbsp;m&ouml;glich.</p>
<h4>
	Was noch fehlt&#8230;</h4>
<ul>
<li>
		Benutzerverwaltung im Webinterface</li>
<li>
		Einfache Statistik</li>
<li>
		Google LaTeX API einbinden</li>
<li>
		Trackback Links und Pingback Interface</li>
<li>
		Trackbacks Senden</li>
<li>
		Spamfilter ohne Captcha (akismet o.ae.)</li>
<li>
		Twitter Authentifizierung</li>
<li>
		Twitter Kommentare einbinden</li>
</ul>
<h4>
	Kontakt</h4>
<p>
	F&uuml;r Bugreports und Anregungen schreibt mir einfach eine E-Mail oder&nbsp;Kontaktiert mich auf Jabber oder Skype.</p>
<p>
	<strong>Twitter:</strong> <a href="http://twitter.com/dunkelstern">@dunkelstern</a></p>
<p>
	<strong>E-Mail:</strong> <span class="code">jschriewer@gmail.com</span></p>
<p>
	<strong>Jabber:</strong><span class="code"> dunkelstern@jabber.org</span></p>
<p>
	<strong>Skype: &nbsp;</strong><span class="code">dunkelstern738</span></p>
<p>
	<a href="http://blog.dunkelstern.de">http://blog.dunkelstern.de</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dunkelstern.de/2009/12/27/bloggen-uber-ein-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

