<?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>knallisworld &#187; Howtos</title> <atom:link href="http://www.knallisworld.de/blog/category/empfehlungen/howtos/feed/" rel="self" type="application/rss+xml" /><link>http://www.knallisworld.de/blog</link> <description>Where is the beef?</description> <lastBuildDate>Thu, 02 Feb 2012 23:10:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Migration von Trac zu JIRA</title><link>http://www.knallisworld.de/blog/2011/08/07/migration-von-trac-zu-jira/</link> <comments>http://www.knallisworld.de/blog/2011/08/07/migration-von-trac-zu-jira/#comments</comments> <pubDate>Sun, 07 Aug 2011 12:57:53 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Howtos]]></category> <category><![CDATA[Management]]></category> <category><![CDATA[Tutorial]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=1391</guid> <description><![CDATA[Einführung von Atlassians Confluence, FishEye und JIRA In diesem Artikel geht es um die Installation und Konfiguration von Atlassians JIRA, FIshEye und Confluence in einer ursprünglich rein Trac-basierten Umgebung. Ich gehe davon aus, dass die Hersteller-Guides bereits bekannt sind oder bei Fragen zu Rate gezogen werden. Es werden nicht alle Funktionen und Features der Produkte [...]]]></description> <content:encoded><![CDATA[<h2>Einführung von Atlassians Confluence, FishEye und JIRA</h2><p>In diesem Artikel geht es um die Installation und Konfiguration von Atlassians JIRA, FIshEye und Confluence in einer ursprünglich rein Trac-basierten Umgebung.</p><p>Ich gehe davon aus, dass die Hersteller-Guides bereits bekannt sind oder bei Fragen zu Rate gezogen werden. Es werden nicht alle Funktionen und Features der Produkte im einzelnen vorgestellt oder erklärt (etwa: Was ist ein Crowd-Server? oder Wie stelle ich den Benutzer-Signup aus?).</p><ul><li>http://confluence.atlassian.com/display/JIRA/JIRA+Documentation</li><li>http://confluence.atlassian.com/display/FISHEYE/FishEye+Documentation+Home</li><li>http://confluence.atlassian.com/display/DOC/Confluence+Documentation+Home</li></ul><h3>Installationen</h3><p>Für eine saubere Installation empfiehlt es sich, die Anwendungen von einander getrennt zu installieren.</p><p>Alle drei Produkte lassen sich als Standalone oder als WAR herunterladen und installieren. Während die WAR -Variante nur in einen vorhandenen Tomcat deployt wird, ist die Standalone-Variante eine fertig konfigurierte Einheit, die auch entsprechend korrekt konfiguriert ist. Aus mehreren Gründen ist die Standalone-Variante vorzuziehen: Service-Able, besseres Tuning im Performance-Problemfall.</p><p>Leider ist die Qualität der Standalone-Versionen nicht überall gleich; JIRA ist dabei am Besten und quasi vollständig.</p><p>Für diesen Beitrag installieren wir die Produkte jeweils in die drei Verzeichnisse /opt/confluence, /opt/fisheye und /opt/jira. Und natürlich unter Linux.</p><h4>JIRA</h4><p>Praktischerweise wird JIRA in einem selbstausführenden Installer zur Verfügung gestellt. Also sudo gestartet, sollte man hier den empfohlenen Weg nehmen und JIRA als Service mit eigenem Benutzer installieren. Da der Installer selbstständig einen Benutzer jira anlegen wird, sollte dieser nicht vorher schon existieren. Ist bereits einer vorhanden, legt der Installer jira1 an, inkl. einem gleichlautenden Service.</p><p>Danach ist JIRA installiert und muss via Web konfiguriert werden. Für die produktive Installation bedeutet dies beispielsweise eine externe Datenbankanbindung.</p><p><strong>Hinweis:</strong> Sofern der Administratorzugang mit einem Benutzer aus dem späteren Trac-Import matchen soll, sollte der Benutzername gleich heißen.</p><p><strong>Hinweis:</strong> Sollen mehrere Tomcats auf einer Maschine laufen, müssen die Ports entsprechend verändert werden. Die JIRA-Tomcat-Konfiguration ist unter conf/server.xml zu finden. Dort findet sich auch ein auskommentierter Connector für AJP.</p><p>Es empfiehlt sich, den Remote- und API-Zugriff sofort zu aktivieren, da dieser in der Regel immer gebraucht wird (etwa für <a
href="http://www.eclipse.org/mylyn/">Eclipse Mylyn</a>).</p><p>Falls die Benutzerkonten zwischen JIRA, Confluence und FishEye synchronisiert werden sollen (und das ist sicher zu empfehlen): Das Feature heißt bei Atlassian Crowd und ist in allen Produkten implementiert. Hierbei spielt JIRA dann den Crowd-Server, d.h. es stellt die Konten und Passwörter zur Verfügung. Confluence und FishEye werden später nur passiv gespiegelt.</p><h4>FishEye</h4><p>FishEye wird im Gegensatz zu JIRA nicht mit einem Installer ausgeliefert. Das Archiv entpackt hinterlässt nur die Applikation. Da der Standardport von FishEye 8060 ist und sich damit selten mit anderen Diensten überschneidet, kann man dies so stehen lassen.</p><p>Da FishEye von sich aus kein Service-Script mitliefert, muss man das selber beisteuern. Außerdem muss man sich auch selber um einen Benutzer (etwa sinnigerweise fisheye) kümmern.</p><p><script src="https://gist.github.com/1130328.js?file=fisheye"></script></p><p>FishEye wird per Default in eine HSQLDB installiert. Im Gegensatz zu JIRA kann man nicht bereits zu Beginn eine alternative Datenbank auswählen. Dafür kann Fisheye jedoch on the fly via Administration/Database in eine externe Datenbank migriert werden.</p><p>Falls die Crowd-Funktionalität von JIRA verwendet werden soll, muss in der Administration der JIRA-Server als &#8220;Application-Link&#8221; angelegt werden. Anschließend kann man die Benutzer synchronisieren (etwa automatisch jede Stunde) und das lokale Registrieren abschalten.</p><p><strong>Hinweis:</strong> Mit dem FishEye-Administrator-Passwort kommt man immer in die Admin-Backend zurück. Dennoch empfehle ich, einen Login in einem separaten Browser (oder einfach im Inkognito-Modus) auszuprobieren. Per Default werden Benutzer, die in der Gruppe jira-administrators sind, auch automatisch FishEye-Administratoren.</p><p>Erst nach Abschluss dieser Feinheiten lohnt sich das Anlegen von Repositories.</p><p><strong>Hinweis:</strong> Lässt man die alte Trac-Installation noch weiter laufen, so kann man in den Eigenschaften eines FishEye-Repositories einen Linker definieren, damit in Commits erscheinenden Ticket-Referenzen (#123) auf Trac verweisen können (reguläres Muster: #(\d+)). Prinzipiell kann man auch einen Link auf FishEye selber erzeugen, das funktioniert natürlich nur, wenn keine Tickets aufgrund von Projekt-Splittung verschoben wurden.</p><p>Nach erfolgtem Anlegen und Indizieren des Repositorys (oder der Repositories) sollte der Übersichtlichkeit wegen Projekte anlegen &#8212; idealerweise in der gleichen Struktur wie unter JIRA. Anschließend kann man mit den Application-Links dafür sorgen, dass erstens FishEye weißt, dass ein ein bestimmtes Projekt einer JIRA-Installation in den Changeset-Kommentaren verlinkbar ist und zweitens der entsprechenden JIRA-Installation eine Backreferenz auf diese FishEye-Quelle geben.</p><p>Mit dieser Konfiguration werden Commits mit einem Verweis auf ein Ticket (&#8220;&#8230; PROJECTKEY-123&#8230;&#8221;) automatisch auf JIRA verlinkt und gleichzeitig im JIRA-Vorgang als Aktivität aufgelistet.</p><h4>Confluence</h4><p>Wie FishEye bietet auch Confluence nur ein entpacktes Verzeichnis an. Auch hier muss man sich um ein Service-Script und einen Benutzer selber kümmern.</p><p><script src="https://gist.github.com/1130328.js?file=confluence"></script></p><p>Auch hier sollte man nach erfolgter Installation die Authentifizerung auf JIRA umstellen. Dafür muss man eine Referenz auf JIRA anlegen. Eventuell ist es auch nötig, eine zusätzliche Referenz seitens JIRA auf Confluence (erlaubte Abfrage der Konten) anzulegen.</p><p><strong>Wichtiger Hinweis:</strong> Es ist dringendst zu empfehlen, vor dem Switch auf den JIRA-Crowd-Server dem eigenen Konto (in JIRA) die neu zu erstellenden Benutzergruppe confluence-administrators hinzuzufügen &#8212; ansonsten sperrt man sich sofort aus. Hat man den Abgleichtimer auf eine Stunde gestellt und will &#8211; für Confluence &#8211; nicht von vorne anfangen, ist man eine Stunde merkbefreit.</p><h3>Von Trac nach JIRA</h3><h4>Upgrade auf Trac 0.12</h4><p>Das Importwerkzeug von JIRA ist nur mit Trac-Export-Daten kompatibel, die aus einer 0.12-Installation heraus erstellt wurden.</p><p>Die vorhandene Trac-Installation lief leider noch in der Vorgängerversion 0.11. Das macht sich unter anderem daran bemerkbar, das zwar der Import prinzipiell funktioniert, aber beispielsweise alle Zeiten/Zeitstempel falsch sind (01. Januar 1970). Dieser Umstand wird durch eine Änderung der internen Speicherung von Timestamps in Trac geschuldet (0.11 speichert in Sekunden, 0.12 jedoch in Mikrosekunden).</p><p>Daher war es zunächst erforderlich, die vorhandene Trac-Installation mittels Upgrade auf 0.12 zu aktualisieren. Je nach Installation ist ein <a
href="http://trac.edgewall.org/wiki/0.12/TracUpgrade">Upgrade einfach oder umständlich</a>.</p><p>Hinweis: Es kann durchaus sinnvoll sein, dass man seine bisherige Trac-Installation unverändert lassen will. Dies ist relativ einfach zu bewerkstelligen. Auf einer separaten Maschine (dafür eignet sich auch ein schnell aufgezogenes Debian in der VM) wird Trac 0.12 etwa via apt-get installiert. Danach wird ein Trac-Repository konfiguriert und anschließend das existierende Repository 1:1 herüberkopiert. Die anschließenden Befehle <em>trac-admin upgrade</em> und <em>trac-admin wiki upgrade</em> hiefen sowohl die Trac-Datenbank als auch die Wikiseiten auf die neue Version &#8211; fertig!</p><h4>Export von Trac</h4><p>Die Trac-Daten werden wie folgt exportiert: Die Tickets liegen alle in einer Datenbank im Repository, die Attachments liegen als Dateistruktur ebenfalls im Repository. Man wechselt in das Verzeichnis vom Trac-Repository und packt alles zusammen in ein Zip-Archiv.</p><h4>Import in JIRA</h4><p>Im Import-Assistenten wählt man Trac und danach das zuvor erstellte Zip-Archiv. Je nach Größe kann es erforderlich sein, dass man in der JIRA-Administration das Upload-Limit für Dateien (kurzfristig) erhöhen muss. Der Assistent entpackt das Archiv und analysiert die Strukturen. Sofern man keine Besonderheiten hat, kann man die Schritte alle absegnen. Eventuelle CustomFields sollten ebenfalls als solche auch in JIRA eingefügt werden.</p><h4>Das &#8220;No-Priority&#8221;-Issue</h4><p>Beim Import der Ticket-Daten wurde das Feld Priority nicht korrekt übernommen. Das hat die Auswirkung, dass beim Editieren eines Tickets automatisch die erstbeste Priorität seitens JIRA verwendet wird. Und das ist 1 =&gt; Blocker. Etwas unschön.</p><p>Prinzipiell ist so etwas aber kein großer Aufwand, da JIRA ein sehr ausgeklügeltes und vor allem funktionierendes Mehrfachbearbeitungsmanagement mitliefert. Über &#8220;Vorgänge / Suchen / Erweitert&#8221; kann man mittes JQL eine sehr spezifische Abfrage nach Vorgängen machen. Über jede getätigte Abfrage lässt sich über den Button &#8220;Tools&#8221; in der rechten, oberen Ecke eine Mehrfachbearbeitung starten.</p><p><strong>Hinweis:</strong> Da der Name des Trac-Felds &#8220;Priority&#8221; mit dem JIRA-Feld &#8220;Priority&#8221; konkurriert, hat der Importer ein generisches Feld (cf-xxxx) anlegt.</p><p>Über die Abfrage &#8220;status = Reopened and priority is empty and cf[xxxxx] = Blocker&#8221; lassen sich beispielsweise alle &#8220;prioritätslosen&#8221; Tickets abfragen, die aus Trac mit Blocker-Priorität kommen&#8221;. Über die Mehrfachbearbeitung setzt man dann die Priorität auf &#8220;Blocker&#8221;. Das gleiche für alle anderen Prioritäten.</p><h4>Das &#8220;Reopened Issues&#8221;-Issue</h4><p>Beim Import der Ticket-Daten wurden alle bereits geschlossenen und &#8220;resolved&#8221; Tickets mit dem Status &#8220;Reopened&#8221; eingeladen. Auch hierfür eignet sich die Mehrfachbearbeitung.</p><p><strong>Hinweis:</strong> Der Workflow erfordert beim Schließen eines Vorgangs die Angabe einer Resolution. Daher ist es wie bei &#8220;No-Priority&#8221; empfehlenswert, die Abfrage gruppiert nach eine Trac-Resolution zu machen. Ansonsten verliert man die originale Resolution.</p><h3>Von Trac nach Confluence</h3><h4>Export von Trac</h4><p>Die Daten der Wiki-Seiten liegen als Dateistruktur im Trac-Repository. Da der Export bereits unter &#8220;Von Trac nach JIRA&#8221; erfolgt ist, hat man die Wiki-Daten bereits vorliegen.</p><h4>Import in Confluence</h4><p>Für den Import der Daten steht ein universelles Java-Programm zur Verfügung (ist in der Confluence-Administration unter Import zu finden). Damit lassen sich die Trac-Daten (aber auch noch eine ganze Reihe anderer Formate/Anwendungen) in das Confluence-Schema importieren. Das Programm ist etwas unglücklich designed und die Steuerung ist an einigen Punkten etwas unsauber implementiert &#8212; sofern man jedoch einiges beachtet, funktioniert alles einwandfrei.</p><p>Zunächst wählt man in der Liste &#8220;trac&#8221; aus. Danach wählt man den Ordner der Attachments aus, was voraussetzt, das man das Trac-Repository auf dem Rechner zur Verfügung stehen hat, auf welchem der Importer ausgeführt wird. Anschließend wählt man die Wiki-Seiten aus. Hierbei ist anzumerken, dass der Importer den kompletten, absoluten Pfad der Dateien übernimmt! Das ist äußerst unschön, weil man zwar in Confluence später zwar einzelne, aber nicht mehrere Seiten gleichzeitig verschieben kann. Unter Umständen kann es sinnvoll sein, die Wiki-Seiten für diesen Import kurzfristig auf einem /-Level anzulegen. Ein Unding ohnegleichens.</p><p>Nach der Angabe der Confluence-Server-Angaben werden die Daten importiert. Hinweis: Die externe API muss in Confluence selbstverständlich aktiviert sein.</p><h2>Bonus</h2><h3>Hudson/Jenkins-Integration</h3><p>Zwar bietet Atlassian natürlich eine perfekte Integration in und mit ihrem eigenen Buildserver <a
href="http://www.atlassian.com/software/bamboo/">Bamboo</a> an, dies ist aber nicht zwingend erforderlich. In der Regel reicht es aus, wenn man im Ticket automatisch/sofort erkennen kann, mit welchem Build ein Ticket bzw. ein entsprechender Changeset aufgenommen wurde. Dafür gibt es das Jenkins <a
href="https://wiki.jenkins-ci.org/display/JENKINS/JIRA+Plugin">JIRA-Plugin</a>.</p><p>Zuallererst muss in der globalen Konfiguration von Jenkins die JIRA-Installation konfiguriert werden. In den meisten Fällen muss dafür ein Benutzer angegeben werden: Will man es schön und sauber, dann legt man unter JIRA einen eigenen Buildserver-Benutzer an (etwa mit schönem Avatar?) und trägt dessen Zugangsdaten (generisches, langes Passwort?) in der Jenkins-Konfiguration ein.</p><p>Danach kann man im entsprechenden Jenkins-Job das JIRA-Plugin aktivieren und weiteres Tuning machen.</p><p>Mit dieser Konfiguration wird ein Build als weitere Aktivität in einem JIRA-Vorgang auftauchen.</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2011/08/07/migration-von-trac-zu-jira/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Tomcat, Eclipse und der Manager</title><link>http://www.knallisworld.de/blog/2009/09/29/tomcat-eclipse-und-der-manager/</link> <comments>http://www.knallisworld.de/blog/2009/09/29/tomcat-eclipse-und-der-manager/#comments</comments> <pubDate>Tue, 29 Sep 2009 21:24:30 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Howtos]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Technik]]></category> <category><![CDATA[Tipps]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/?p=841</guid> <description><![CDATA[Während es natürlich mit der Standard-Standalone-Variante keine Probleme macht, hat die Integration von Tomcat in Eclipse einen kleinen Nachteil: Dadurch, dass Eclipse neben den Webapps auch die komplette Konfiguration mitsamt der Module übernimmt, fehlt daher die Manager-Webapp. Häufig ist dies egal und zu vernachlässigen, aber falls man doch mal Zugang braucht, sei es zum (testweisen) [...]]]></description> <content:encoded><![CDATA[<p>Während es natürlich mit der Standard-Standalone-Variante keine Probleme macht, hat die Integration von Tomcat in Eclipse einen kleinen Nachteil: Dadurch, dass Eclipse neben den Webapps auch die komplette Konfiguration mitsamt der Module übernimmt, fehlt daher die Manager-Webapp. Häufig ist dies egal und zu vernachlässigen, aber falls man doch mal Zugang braucht, sei es zum (testweisen) Deployen, oder einfach einer Konfiguration außerhalb Eclipse:</p><p>Als erstes fügt man ein externes Webapp-Modul ein, der Suchpfad ist &#8220;${catalina_home}/webapp/manager&#8221;. Dabei sollte man beachten, dass scheinbar der Pfad ausgeschrieben werden muss (bzw. eine gültige Catalina-Home-Variable). Dieser Schritt hat der server.xml eine Zeile (meist gaaaanz unten) wie folgt hinzugefügt:</p><pre class="brush: xml; title: ; notranslate">&lt;Context docBase=&quot;YOURPATH/webapps/manager&quot; path=&quot;/manager&quot; reloadable=&quot;false&quot;/&gt;</pre><p>Wie man sich gerne überzeugen lassen kann, funktioniert die Anwendung jedoch noch nicht. Der Grund: Der Tomcatmanager muss im priviligierten Modus gestartet werden, welcher zusätzlich eine Benutzerkennung erwartet. Zunächst muss die o.g. eingefügt Zeile wie folgt angepasst werden (hier wichtig: privileged=true).</p><pre class="brush: xml; title: ; notranslate">&lt;Context antiJARLocking=&quot;false&quot; antiResourceLocking=&quot;false&quot; docBase=&quot;YOURPATH/webapps/manager&quot; path=&quot;/manager&quot; privileged=&quot;true&quot; reloadable=&quot;false&quot;/&gt;</pre><p>Wie bereits erwähnt, erwartet der Manager einen authentifizierten Benutzer. Man kann sich das Leben aber einfach machen, und die vorgefertige tomcat-users.xml nutzen. Man kann die Einträge auskommentieren; wichtig ist jedoch, das mindestens ein Benutzer existiert, dem die Rollen admin und manager zugewiesen sind. Beispielsweise:</p><pre class="brush: xml; title: ; notranslate">&lt;user username=&quot;manager&quot; password=&quot;manager&quot; roles=&quot;admin,manager&quot;/&gt;</pre><p>Soweit, so gut. Nicht vergessen sollte man jedoch das (Re)Publish des Servers, denn sonst deployt Eclipse die neuen Einstellungen nicht in das interne Tomcat-Home-Verzeichnis.</p><p>Der Manager findet sich dann &#8211; bei einer Standardinstallation &#8211; unter der Adresse http://localhost:8080/manager/html</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2009/09/29/tomcat-eclipse-und-der-manager/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PHP/zlib: Wie ermittelt man die unkomprimierte Dateigröße einer .gz-Datei?</title><link>http://www.knallisworld.de/blog/2007/10/22/phpzlib-wie-ermittelt-man-die-unkomprimierte-dateigrose-einer-gz-datei/</link> <comments>http://www.knallisworld.de/blog/2007/10/22/phpzlib-wie-ermittelt-man-die-unkomprimierte-dateigrose-einer-gz-datei/#comments</comments> <pubDate>Mon, 22 Oct 2007 18:36:59 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Howtos]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Technologie/IT]]></category> <category><![CDATA[Was ich schon immer mal wissen wollte..]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/2007/10/22/phpzlib-wie-ermittelt-man-die-unkomprimierte-dateigrose-einer-gz-datei/</guid> <description><![CDATA[Problem: Mit $fh = gzopen($fileName, 'r'); erhält man einen Filepointer auf die Datei, aber für gzread() benötigt man neben dem Filepointer auch eine Leseinheit (und in den meisten Fällen dürfte das der Inhalt sein). Allerdings kommen wir mit filesize($fileName) nicht weiter, denn damit erhalten wir nur die Größe der komprimierten Datei zurück. Antwort: Nach einem [...]]]></description> <content:encoded><![CDATA[<p>Problem: Mit <code>$fh = gzopen($fileName, 'r');</code> erhält man einen Filepointer auf die Datei, aber für <code>gzread()</code> benötigt man neben dem Filepointer auch eine Leseinheit (und in den meisten Fällen dürfte das der Inhalt sein). Allerdings kommen wir mit <code>filesize($fileName)</code> nicht weiter, denn damit erhalten wir nur die Größe der komprimierten Datei zurück.</p><p>Antwort: Nach einem Beitrag von <a
href="http://de3.php.net/manual/de/function.gzread.php#73724">zaotong</a> auf <a
href="http://php.net/gzread">php.net/gzread</a> wird die Originaldatengröße in den letzten 4 Bytes der Datei gespeichert; alles was man machen muss, ist also die letzten 4 Bytes auslesen und als Buffergröße nutzen.</p><p>Snippet:</p><pre lang="php" lineno="1">$fileName = 'compressed.gz';
// normal öffnen, windows-binärmode
$fh = fopen($fileName, "rb");
// springe zum 4. vorletzen byte
fseek($fh, -4, SEEK_END);
//lese die nächsten 4 bytes (also die letzten)
$readBuf = fread($fh, 4);
// binärdaten lesen, ist integer (4 Byte)
$gzSize = end(unpack("V", $readBuf));
// pointer wieder schliesen
fclose($fh);
// nun entkomprimieren, windows-binärmode
$fh = gzopen($fileName, "rb");
// nun können wir angeben, wieviel wirkliche daten wir lesen wollen
$content = gzread($fh, $gzSize);
// und brav wieder schließen
gzclose($fh);</pre>]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2007/10/22/phpzlib-wie-ermittelt-man-die-unkomprimierte-dateigrose-einer-gz-datei/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Verkaufe deine Seele bei eBay (Howto)</title><link>http://www.knallisworld.de/blog/2006/08/12/verkaufe-deine-seele-bei-ebay-howto/</link> <comments>http://www.knallisworld.de/blog/2006/08/12/verkaufe-deine-seele-bei-ebay-howto/#comments</comments> <pubDate>Sat, 12 Aug 2006 12:07:12 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Allgemeines]]></category> <category><![CDATA[Dumm gelaufen..]]></category> <category><![CDATA[Howtos]]></category> <category><![CDATA[Witziges]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/2006/08/12/verkaufe-deine-seele-bei-ebay-howto/</guid> <description><![CDATA[http://www.netzwelt.de/news/70924_1-ebayplatte-das-persoenlichkeitsprofil-eines-filesharers.html Und so gehts.. da fällt einem nur noch eins ein: Wie blöd muss man sein..]]></description> <content:encoded><![CDATA[<p><a
href="http://www.netzwelt.de/news/70924_1-ebayplatte-das-persoenlichkeitsprofil-eines-filesharers.html">http://www.netzwelt.de/news/70924_1-ebayplatte-das-persoenlichkeitsprofil-eines-filesharers.html</a></p><p>Und so gehts.. da fällt einem nur noch eins ein: Wie blöd muss man sein..</p> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2006/08/12/verkaufe-deine-seele-bei-ebay-howto/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Howto: Von Plog/Lifetype nach WordPress migrieren</title><link>http://www.knallisworld.de/blog/2006/06/15/howto-von-ploglifetype-nach-wordpress-migrieren/</link> <comments>http://www.knallisworld.de/blog/2006/06/15/howto-von-ploglifetype-nach-wordpress-migrieren/#comments</comments> <pubDate>Thu, 15 Jun 2006 00:17:07 +0000</pubDate> <dc:creator>knalli</dc:creator> <category><![CDATA[Howtos]]></category> <category><![CDATA[Technologie/IT]]></category> <guid
isPermaLink="false">http://www.knallisworld.de/blog/2006/06/15/howto-von-ploglifetype-nach-wordpress-migrieren/</guid> <description><![CDATA[Eine gute Basiserklärung findet sich hier: http://www.colinzhu.com/2005/12/25/migrating_plog1_to_wordpress2.html Da ich allerdings Probleme damit hatte, ergänze ich um die Fehlerberichtigungen. In der zu herunterladenden Plog-Importer-Datei (plog.php.txt) befindet sich eine Angabe zur XML-Datei (RSS-Feed), der lokal verfügbar sein muss. Es kann sein, dass man hier den Pfad angeben könnte. Tatsächlich poppt aber ein Fenster auf, um die Quelle [...]]]></description> <content:encoded><![CDATA[<p>Eine gute Basiserklärung findet sich hier: http://www.colinzhu.com/2005/12/25/migrating_plog1_to_wordpress2.html</p><p>Da ich allerdings Probleme damit hatte, ergänze ich um die Fehlerberichtigungen.</p><ol><li>In der zu herunterladenden Plog-Importer-Datei (plog.php.txt) befindet sich eine Angabe zur XML-Datei (RSS-Feed), der lokal verfügbar sein muss. Es kann sein, dass man hier den Pfad angeben könnte. Tatsächlich poppt aber ein Fenster auf, um die Quelle vom PC aus hochzuladen.</li><li>Plog/Lifetype generiert den Feed im alten und XML-untypischen ISO-Zeichensatz. Da WordPress auf UTF8 setzt (richtig so), wäre es nicht nur besser, sondern verursacht dann auch keine Anzeigefehler, wenn die Feedstrings beim Parsen und Eingeben in die WordPressdatenbank in UTF8-Strings konvertiert werden.<br
/> Das geht wie folgt (Pluginimport: plog.php) die utf8_encode-Funktionen einbauen:<pre class="brush: php; title: ; notranslate"> // Die Funktion unhtmlentities erhält einen veränderten Returnwert
return utf8_encode(strtr($string, $trans_tbl));// einfaches Austauschen:
$post_title = $wpdb-&amp;gt;escape(utf8_encode(trim($post_title[1])));
// einfaches Austauschen:
$post_name = $wpdb-&amp;gt;escape(utf8_encode(trim($post_name[1])));
// einfaches Austauschen:
$post_content = str_replace(array ('&lt;!--[cdata[', ']]--&gt;'), '', $wpdb-&amp;gt;escape(utf8_encode(trim($post_content[1])))); </pre></li><li>Importieren.. fertig.</li></ol> ]]></content:encoded> <wfw:commentRss>http://www.knallisworld.de/blog/2006/06/15/howto-von-ploglifetype-nach-wordpress-migrieren/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
