<?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>noqqe.de</title>
	<atom:link href="http://noqqe.de/feed" rel="self" type="application/rss+xml" />
	<link>http://noqqe.de</link>
	<description>Ich wollte nur [...] und dann ist das Universum explodiert.</description>
	<lastBuildDate>Sun, 22 Jan 2012 13:09:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>MySQL &#124; Table Migration zu InnoDB</title>
		<link>http://noqqe.de/archives/1850</link>
		<comments>http://noqqe.de/archives/1850#comments</comments>
		<pubDate>Sun, 22 Jan 2012 13:09:07 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[acid]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[datenbank]]></category>
		<category><![CDATA[fulltext]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[myisam]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tables]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1850</guid>
		<description><![CDATA[Ich durfte letztens einer schönen Schulung zum Thema MySQL lauschen. Dabei kam viel herrum. Ein Teil davon hat sich mit verschiedenen Storage Engines beschäftigt. Ich habe mich entschieden den Großteil meiner Datenbanken zu InnoDB umzuwandeln. Welche Vor- und Nachteile das hatt sollte sich jeder vorher klarmachen. Stichwort: ACID und Fulltext-Search. Natürlich könnte man einfach mit [...]]]></description>
			<content:encoded><![CDATA[<p>Ich durfte letztens einer schönen Schulung zum Thema MySQL lauschen. Dabei kam viel herrum. Ein Teil davon hat sich mit verschiedenen Storage Engines beschäftigt.</p>
<p>Ich habe mich entschieden den Großteil meiner Datenbanken zu InnoDB umzuwandeln. Welche Vor- und Nachteile das hatt sollte sich jeder vorher klarmachen. Stichwort: ACID und Fulltext-Search. Natürlich könnte man einfach mit ALTER arbeiten. Aber ich wollte nicht umbedingt die alten MyISAM Tables noch im FS liegen haben. Also alle Datenbanken droppen und den geänderten Dump wieder einspielen, sodass die Tables neu (mit InnoDB) angelegt werden.</p>
<p>Zuersteinmal eine Liste mit den generieren mit den Datenbanken die man Bearbeiten möchte. Es ist zu beachten, dass man den mysql Table selbst nicht auf InnoDB umstellen möchte.</p>
<p><code>mysql -u root -p -e "show databases;" -N --batch | grep -v ^information_schema$ | grep -v ^mysql$</code></p>
<p>Die Liste der Datenbanken wird nachher noch hilfreich sein. Danach will man wahrscheinlich erstmal alle Dienste beenden, die auf dem MySQL zugreifen (Apache, Tomcat, whatever). In der my.cnf habe ich dann folgende Optionen für die InnoDB spezifiziert.</p>
<p><code>defaulot-storage-engine = InnoDB<br />
innodb_buffer_pool_size = 16M<br />
innodb_additional_mem_pool_size = 2M<br />
innodb_log_file_size = 5M<br />
innodb_log_buffer_size = 8M<br />
innodb_flush_log_at_trx_commit = 1<br />
innodb_lock_wait_timeout = 50<br />
</code></p>
<p>Anschliessend den Dump erstellen und alle ENGINE=MyISAM durch InnoDB ersetzen:</p>
<p><code>mysqldump -u root -p &gt; all-databases.sql<br />
sed -i -e 's#ENGINE=MyISAM#ENGINE=InnoDB#g' all-databases.sql</code></p>
<p><b>Vorsicht. Hier ist mysql als Datenbank mit gedumped!</b> Mir ist dabei keine wirklich einfache Zeile eingefallen die mit Suche/Ersetze Spielchen mysql ausschliesst. Es gibt bei mysqldump die Option &#8220;&#8211;ignore-table=&#8221; aber auch hier hätte ich jeden mysql Table einzeln nennen müssen. Ich hab die Datenbank dann einfach per hand aus dem Dump herausgelöscht. </p>
<p>Außerdem sollte man seinen Datenbank Dump nach FULLTEXT durchsuchen, da dieser von InnoDB nicht unterstützt wird. In meinem Fall hat es nur ein altes Forum das niemand mehr benutzt betroffen, weshalb ich die Zeile einfach löschen konnte. </p>
<p><code>grep "FULLTEXT" all-databases.sql</code></p>
<p>Um jetzt alle Datenbanken zu droppen hab ich mir folgende Line gebastelt:</p>
<p><code>for x in $(mysql -u root -phierstehteinpasswort -e "show databases;" -N --batch | grep -v ^information_schema | grep -v ^mysql$) ; do mysql -u root -phierstehteinpasswort -e "drop database $x ; " --batch  ; done</code></p>
<p>Nach der Bearbeitung kann man den Dump mit der neuen Engine für die Tables wieder einspielen:</p>
<p><code>mysql -u root -p < all-databases.sql</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1850/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GNU Parallel</title>
		<link>http://noqqe.de/archives/1846</link>
		<comments>http://noqqe.de/archives/1846#comments</comments>
		<pubDate>Sun, 08 Jan 2012 12:47:14 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[gnu parallel]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[seq]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1846</guid>
		<description><![CDATA[Vom GNU Parallel Projekt habe ich vor einiger Zeit in der Arbeit so am Rande etwas mitbekommen. Nachdem ich mir die gute Dokumentation etwas angeschaut habe, hab ich Lust bekommen das mal selbst auszuprobieren. Ich dachte es wäre eine gute Idee einfach ein paar md5 Summen zu bilden. $ time seq 1 10000 &#124; parallel [...]]]></description>
			<content:encoded><![CDATA[<p>Vom <a href="http://www.gnu.org/software/parallel/">GNU Parallel Projekt</a> habe ich vor einiger Zeit in der Arbeit so am Rande etwas mitbekommen. Nachdem ich mir die gute <a href="http://www.gnu.org/software/parallel/man.html">Dokumentation</a> etwas angeschaut habe, hab ich Lust bekommen das mal selbst auszuprobieren.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2012/01/logo-gray+black300.png"><img src="http://blog.n0q.org/wp-uploads/2012/01/logo-gray+black300.png" alt="" title="logo-gray+black300" width="300" height="191" class="alignnone size-full wp-image-1847" /></a></center></p>
<p>Ich dachte es wäre eine gute Idee einfach ein paar md5 Summen zu bilden.</p>
<p><code>$ time seq 1 10000 | parallel 'echo {}| md5sum &#038;> /dev/null '<br />
real	0m20.102s<br />
user	0m35.082s<br />
sys	0m24.918s</code></p>
<p>Nun. Ich bilde nicht so oft 10.000 md5 Summen. War das jetzt viel? Oder wenig? Um einen Vergleichswert zu haben sollte ich wohl auch mal nachsehen, wie das ohne Parallel so aussieht. </p>
<p><code>$ time for x in $(seq 1 10000); do echo $x | md5sum &#038;> /dev/null; done<br />
real	0m13.504s<br />
user	0m2.368s<br />
sys	0m3.948s</code></p>
<p>Ziemlich seltsam. Obwohl ich 10.000 md5 Summen gebildet habe war die sequenzielle Methode schneller als die Parallele. Zumindest dachte ich zu dem Punkt noch das es seltsam ist. Aber an was lag das. Ich hab mir dann überlegt ob ich nicht vielleicht doch noch eine andere Aufgabe als md5 Summenbildung abbilden sollte. Ich entschied mich dazu 1000 mal eine 100.000 Zeichen lange Zeichenkette durch gzip zu schubsen. </p>
<p><code>$ time seq 1 1000 | parallel 'cat /dev/urandom | head -c 100000 | gzip &#038;> /dev/null'<br />
real	0m7.845s<br />
user	0m4.064s<br />
sys	0m20.485s</code></p>
<p>7 Sekunden. Sieht eigentlich ganz nett aus. Und in der Schleife sequenziell? </p>
<p><code>$ time for x in $(seq 1 1000); do cat /dev/urandom | head -c 100000 | gzip &#038;> /dev/null; done<br />
real	0m31.869s<br />
user	0m8.301s<br />
sys	0m33.658s</code></p>
<p>Okay. Jetzt weiss ich, das GNU Parallel eher was für (rechen-)intensivere Aufgaben ist als für viele kleine Prozesse. Anscheinend braucht das Parsing des zusätzlichen Binaries doch etwas zu lange um einen Prozess zu ordnen der sowieso nach sehr kurzer Zeit wieder beendet ist. Alles in allem gefällt mir GNU Parallel aber sehr gut wenn man weiss für was man es einsetzen muss :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1846/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Arduino &#124; Ich bau mir einen Synthesizer</title>
		<link>http://noqqe.de/archives/1833</link>
		<comments>http://noqqe.de/archives/1833#comments</comments>
		<pubDate>Wed, 21 Dec 2011 15:30:58 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[auduino]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[kabel]]></category>
		<category><![CDATA[lfo]]></category>
		<category><![CDATA[löten]]></category>
		<category><![CDATA[low frequenzy synthesizer]]></category>
		<category><![CDATA[soldering]]></category>
		<category><![CDATA[synthesizer]]></category>
		<category><![CDATA[synthi]]></category>
		<category><![CDATA[verkabeln]]></category>
		<category><![CDATA[wiring]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1833</guid>
		<description><![CDATA[Vor ca. 2 Wochen habe ich auf der Suppe vom K4CG ein Video über einen auf Arduino basierten Synthesizer. Die &#8220;Firmware&#8221; die darauf läuft nennt sich &#8220;Auduino&#8221;. Auf deren Projektseite habe ich mich dann etwas schlau gelesen und wie auch schon bei dem Megabitmeter über tinkersoup.de meine Teile bestellt. Auf der Projektseite ist die Konstruktion [...]]]></description>
			<content:encoded><![CDATA[<p>Vor ca. 2 Wochen habe ich auf der <a href="http://k4cg.soup.io">Suppe vom K4CG</a> ein <a href="http://vimeo.com/2266458">Video</a> über einen auf Arduino basierten Synthesizer. Die &#8220;Firmware&#8221; die darauf läuft nennt sich &#8220;Auduino&#8221;.</p>
<p>Auf deren <a href="http://code.google.com/p/tinkerit/wiki/Auduino">Projektseite</a> habe ich mich dann etwas schlau gelesen und wie auch schon bei dem <a href="http://noqqe.de/archives/1751">Megabitmeter</a> über tinkersoup.de meine Teile bestellt. Auf der Projektseite ist die Konstruktion des ganzen finde ich zwar nicht sonderlich gut beschrieben, aber man kommt mit ein bisschen Googeln und Reverse Engineering schon weiter. </p>
<p>Habe dabei aber einen <a href="http://arduino.cc/en/Main/ArduinoBoardNano">Arduino Nano</a> benutzt, weil mir die Anschlüsse bzw &#8220;Architektur&#8221; besser gefällt und ich nicht erst ein Breakout Board von Seriell auf USB nachkaufen musste. Entgegen aller Erwartungen musste ich die Firmware dafür nichtmal modifizieren, da auch bei diesem Board ein ATMega328 verbaut ist.</p>
<p>Ich habe mir wegen der einfacheren Anbringung am Nano so eine Art Halterung/Breadboard mitbestellt, in dem ich die Adern mit Schrauben einfacher verbauen konnte.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/IMG_0604.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/12/IMG_0604.jpg" alt="" title="Arduino Nano mit Halterung" width="500" height="375" class="aligncenter size-full wp-image-1836" /></a></p>
<p>Die Potenziometer (wieder was, das ich gelernt habe) sind in Reihe an den Ground und den 5V Pin geschlossen. Der jeweils mittlere Pin der Drehschalter kommt an die Analog Pins 0 bis 4. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/IMG_0606.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/12/IMG_0606.jpg" alt="" title="IMG_0606" width="500" height="375" class="aligncenter size-full wp-image-1837" /></a></p>
<p>Danach kam der (für mich) kniffligere Teil. Der Audio Jack (bzw. Klinke Buchse) hat von Haus aus 5 Pins. Auf der Projekte Seite von Auduino nur Input und Ground. Nach bisschen schlaulesen in Wikis und Foren scheint es, als würden die verschiedenen Revisionen von Klinke andere Features mit sich bringen. für den Mini Synthesizer hätte vollkommen Klinke Mono ausgereicht. Diverse Zusatzfunktionskanäle sind da eigentlich überflüssig aber im <a href="http://www.tinkersoup.de/product_info.php?products_id=74&#038;osCsid=3c2172e4114e78d30b2788b3cd0d6077">Audio Jack bei TinkerSoup</a> integriert. </p>
<p>Nach etwas Trial and Error Verfahren den weg für Doofe gewählt. Ich hab ehrlichgesagt einfach ein altes Klinke Stecker auf Buchse Kabel aufgeschnitten und mir die Belegung auf der Steckerseite angesehen. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/IMG_0609.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/12/IMG_0609.jpg" alt="" title="Klinke Stecker offen" width="500" height="324" class="aligncenter size-full wp-image-1838" /></a></p>
<p>Bei 3poligen Klinken Steckern sind die vorderen beiden Kontakte fürs Signal (Links, Rechts) und hinten für Ground. Habe dann die beiden Signaladern auf der Buchsenseite verdrillt und wie vorgesehen in den Digitalen Pin 3 geklemmt. Ground natürlich an seine Stelle. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/IMG_0611.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/12/IMG_0611.jpg" alt="" title="Wired up" width="500" height="375" class="aligncenter size-full wp-image-1839" /></a></p>
<p>Im Endeffekt wars dann schon fertig. Firmware mit dem Arduino IDE auf den Chip geladen und hat auch schon funktioniert.  Aber weil ich dann ständig die Potenziometer durcheinander gebracht habe, hab ich noch eine alte Plastikbox aus dem Baumarkt meiner Wahl benutzt, die entsprechenden Löcher gebohrt dort das ganze eingebaut. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/IMG_0616.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/12/IMG_0616.jpg" alt="" title="Auduino Final" width="500" height="375" class="aligncenter size-full wp-image-1840" /></a></p>
<p>Etwas smoother ;) Noch ein paar kleine Kostproben von einem wirklich unbegabten Synthesizer-Bediener. Beim hören etwas aufpassen, ab und zu ist mir da ein Ton entglitten. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/12/record.mp4">Auduino Sample Mp4</a><br />
<a href="http://blog.n0q.org/wp-uploads/2011/12/record16bit-22kkhz.wav">Auduino Sample WAV 16 bit 22 Kkhz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1833/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://blog.n0q.org/wp-uploads/2011/12/record.mp4" length="1726365" type="video/mp4" />
<enclosure url="http://blog.n0q.org/wp-uploads/2011/12/record16bit-22kkhz.wav" length="4768284" type="audio/wav" />
		</item>
		<item>
		<title>fbcmd &#124; Nie wieder Geburtstage vergessen via Shell.</title>
		<link>http://noqqe.de/archives/1827</link>
		<comments>http://noqqe.de/archives/1827#comments</comments>
		<pubDate>Sun, 11 Dec 2011 18:45:18 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[automagisch]]></category>
		<category><![CDATA[automatisch]]></category>
		<category><![CDATA[birthday]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[facbeook]]></category>
		<category><![CDATA[fb]]></category>
		<category><![CDATA[fbcmd]]></category>
		<category><![CDATA[geburtstag]]></category>
		<category><![CDATA[pinnwand]]></category>
		<category><![CDATA[reminder]]></category>
		<category><![CDATA[versenden]]></category>
		<category><![CDATA[wallpost]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1827</guid>
		<description><![CDATA[Die nachfolgende Beschreibung eines technischen Vorgangs würde die Mehrheit der Gesellschaft wahrscheinlich als soziologisch fragwürdig abstempeln. Jedoch beschreibe ich den Hergang trotzdem und gerade deswegen. Ich weiß gar nicht mehr wie genau ich auf fbcmd gekommen bin.  Im Zweifel über einen XML basierten Medienkanal. Jedenfalls ist fbcmd ein äußerst schönes Tool um die gängigen Informationen [...]]]></description>
			<content:encoded><![CDATA[<p>Die nachfolgende Beschreibung eines technischen Vorgangs würde die Mehrheit der Gesellschaft wahrscheinlich als soziologisch fragwürdig abstempeln. Jedoch beschreibe ich den Hergang trotzdem und gerade deswegen.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/12/112817814_facebook-birthday1.jpg"><img class="aligncenter size-full wp-image-1828" title="facebookbirthday" src="http://blog.n0q.org/wp-uploads/2011/12/112817814_facebook-birthday1.jpg" alt="" width="300" height="197" /></a></center></p>
<p>Ich weiß gar nicht mehr wie genau ich auf <a href="http://fbcmd.dtompkins.com/">fbcmd</a> gekommen bin.  Im Zweifel über einen XML basierten Medienkanal. Jedenfalls ist fbcmd ein äußerst schönes Tool um die gängigen Informationen zum eigenen Facebook Account auf der Kommandozeile abzufragen. Dazu bietet es wahnsinnig trickreiche Queries und &#8220;Vergruppungen&#8221; der Facebook Bekanntschaften. Alles dazu <a href="http://fbcmd.dtompkins.com/syntax">hier</a> und besonders <a href="http://fbcmd.dtompkins.com/parameters/flist">hier</a>.</p>
<p>Somit lässt sich wunderbar ein automatisches &#8220;Alles Gute zum Geburtstag!&#8221; bauen. Vorraussetzung ist hierfür eine funktionierende <a href="http://fbcmd.dtompkins.com/installation">Installation von fbcmd</a>.</p>
<p>Der von fbcmd vorgeschlagene Query um eine Geburstagsnachricht an die Pinnwand von jenen zu senden, deren Geburtstag sich heute jährt lautet: </p>
<p><code>fbcmd WALLPOST =bday 'Alles Gute zum Geburstag!'</code></p>
<p>Das lässt sich natürlich wunderbar in einen Cronjob verbauen, der einmal täglich um 15:00 eben diesen Query ausführt:</p>
<p><code>0 15 * * *   fbcmd WALLPOST =bday 'Alles Gute zum Geburstag!' > /dev/null</code></p>
<p>Weil ich aber wissen möchte, wem mein Rechner alles in meinem Namen zum Geburtstag graturliert hab ich das noch leicht modifiziert und lasse mich via Mail darüber benachrichtigen:</p>
<p><code>0 15 * * *   fbcmd WALLPOST =bday 'Alles Gute zum Geburstag!'  | grep -v "^No Friends With Birthday Matches$" | mail -s "fbcmd Gratulation" user@domain.de</code></p>
<p>Eigentlich ist der Titel des Posts gar nicht richtig. Man vergisst Sie trotzdem. Aber ein Device erledigt die Arbeit für einen :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1827/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Loading &#124; Eine Bash-Progress-Bar</title>
		<link>http://noqqe.de/archives/1819</link>
		<comments>http://noqqe.de/archives/1819#comments</comments>
		<pubDate>Sat, 26 Nov 2011 12:53:21 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[balken]]></category>
		<category><![CDATA[bar]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[einfach]]></category>
		<category><![CDATA[fortschrittsbalken]]></category>
		<category><![CDATA[ladebalken]]></category>
		<category><![CDATA[laden]]></category>
		<category><![CDATA[loading bar]]></category>
		<category><![CDATA[progress]]></category>
		<category><![CDATA[progressbar]]></category>
		<category><![CDATA[pv]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[simple]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1819</guid>
		<description><![CDATA[Für ein kleines Projekt, an dem ich so nebenher immer etwas schreibe habe ich eine Art Ladebalken gebraucht. Habe ein paar wirklich coole Lösungsansätze gefunden, aber es läuft meistens auf Depencies raus (pv z.B.) oder nicht wirklich mein Anwendungsfall. Ich hab mir dann kurzerhand was selber gebastelt. Ich gebe zu ich hätte es auch so [...]]]></description>
			<content:encoded><![CDATA[<p>Für ein kleines Projekt, an dem ich so nebenher immer etwas schreibe habe ich eine Art Ladebalken gebraucht. Habe ein paar wirklich coole Lösungsansätze gefunden, aber es läuft meistens auf Depencies raus (pv z.B.) oder nicht wirklich mein Anwendungsfall.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/11/not-sure-if-loading.png"><img class="aligncenter size-full wp-image-1821" title="not-sure-if-loading" src="http://blog.n0q.org/wp-uploads/2011/11/not-sure-if-loading.png" alt="" width="500" height="375" /></a></p>
<p>Ich hab mir dann kurzerhand was selber gebastelt. Ich gebe zu ich hätte es auch so gestaltet können das es einfach nur für meinen Use-Case gereicht hätte, aber das erschien mir unsinnig. Wenn ich mich schon einen halben Abend hinsetze, dann können ja evtl. auch mehr Menschen was davon haben. So entstand dann die <a href="https://github.com/noqqe/bash-progress-bar">bash-progress-bar</a>.</p>
<p>Zu allererst besteht der Ladebalken aus einer while true Schleife. Sollte die Bar in ein Skript einbaut werden wäre die Bedingung dem Skript anzupassen. Ob das jetzt ein test -e auf ein File ist das getouched wird oder eine Art Counter bleibt jedem selbst überlassen.</p>
<pre><code>$ git clone git://github.com/noqqe/bash-progress-bar.git
$ cd /bash-progress-bar/
$ ./loading.sh
&gt; [            #####       ]</code></pre>
<p>Alle Parameter sind natürlich anpassbar. Ich habe versucht so gut wie alles anpassbar zu halten. Ich hoffe das ist mir gelungen ;)<br />
<code>./loading.sh Groesse Geschwindigkeit Rahmen-Anfang Füllcharacter Rahmen-Ende<br />
./loading.sh 50 0.02 [ "######" ]</code><br />
Ohne irgendwie ein GIF-File zu erstellen kann ich das jetzt leider schlecht im Blog demonstrieren. Deshalb: ausprobieren :) Mehr Infos auf der Github Page.</p>
<p>Fragen, Anregungen, Kritik erwünscht!</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1819/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Taskwarrior &#124; The better-task-shell</title>
		<link>http://noqqe.de/archives/1810</link>
		<comments>http://noqqe.de/archives/1810#comments</comments>
		<pubDate>Sat, 22 Oct 2011 12:05:57 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[better shell]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Task]]></category>
		<category><![CDATA[task-shell]]></category>
		<category><![CDATA[Taskwarrior]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1810</guid>
		<description><![CDATA[Eigentlich wollte ich das Projekt task-shell-ng nennen. Aber so gut ist es dann doch nicht geworden. Stattdessen hat es sich aber den Prefix better verdient ;) Als ich vor ca. einem Monat Taskwarrior für mich entdeckt habe, war eigentlich alles gut. Ich hab mich über den integrierten interactive Mode wirklich gefreut. Anfangs. Mit der Zeit [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich wollte ich das Projekt task-shell-ng nennen. Aber so gut ist es dann doch nicht geworden. Stattdessen hat es sich aber den Prefix better verdient ;)</p>
<p>Als ich vor ca. einem Monat Taskwarrior für mich entdeckt habe, war eigentlich alles gut. Ich hab mich über den integrierten interactive Mode wirklich gefreut. Anfangs. Mit der Zeit habe ich aber festgestellt, dass mich dieses &#8220;Ding&#8221; fast in den Wahnsinn treibt. Mir persönlich fehlen einfach elementare Features wie einfaches Cursor bewegen nach vorne und zurück. Überhaupt eine History zu haben wäre schon ein enormer Vorteil.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/1733_f644.gif"><img class="aligncenter size-full wp-image-1811" title="lightspeed" src="http://blog.n0q.org/wp-uploads/2011/10/1733_f644.gif" alt="" width="500" height="204" /></a></p>
<p>Ich hab mir dann kurzer Hand selber eine Taskwarrior Shell Variante gebaut, die im großen und ganzen auf einer Bash basiert.</p>
<p><strong>Features:</strong></p>
<ul>
<li>History vorwärts und rückwärts via Pfeiltasten</li>
<li>Cursorbewegung vorwärts und rückwerts in der aktuellen Zeile</li>
<li>Alle Kommandos nativ benutzbar ( $ add pri:H pro:Living Miete zahlen )</li>
<li>ID&#8217;s direkt nutzbar ( $ 34 edit oder $ 12 pri:H )</li>
<li>separate Logging Funktion in $HOME/.better-task-shell_history</li>
<li>OS Befehle weiterhin nutzbar! ( $ vim /home/user/foobar.txt )</li>
<li>Automatische Erkennung von doppelten Aliases</li>
<li>Automatische Alias Generierung fuer os-binaries ( $ ls  = task ls  ; os-ls = /bin/ls )</li>
<li>Auto-Komplettierung aller Taskwarrior Befehle und definierte Aliase</li>
</ul>
<p><strong>Known Bugs:</strong></p>
<ul>
<li>Neu angelegt tasks  können derzeit noch nicht via ID aufgerufen werden.<br />
$ add Uberweisung einwerfen<br />
Created Task 45<br />
$ 45 pri:H<br />
bash: 45: Kommando nicht gefunden<br />
Für beim Start bestehende Einträge funktioniert dies allerdings problemlos.</li>
<li>Mode -v ist bis jetzt noch nicht benutzbar aber bereits implementiert.</li>
</ul>
<p>Das ganze gibts jetzt unter <a href="http://github.com/noqqe/better-task-shell">http://github.com/noqqe/better-task-shell</a></p>
<p><strong>Usage:</strong></p>
<p><code>git clone git@github.com:noqqe/better-task-shell.git<br />
$ cd better-task-shell<br />
$ ./better-task-shell</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1810/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Git and the Unix philosophy</title>
		<link>http://noqqe.de/archives/1805</link>
		<comments>http://noqqe.de/archives/1805#comments</comments>
		<pubDate>Sat, 15 Oct 2011 14:02:46 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1805</guid>
		<description><![CDATA[Mein Feedreader hat heute einen Post von Julius ausgespuckt, den ich so gut fand, dass ich ihn hier rezitieren möchte. Git follows Linux&#8217;s philosophy of refusing to protect you from yourself. Much like Linux, Git will sit back and watch you fuck your shit right up, and then laugh at you as you try to [...]]]></description>
			<content:encoded><![CDATA[<p>Mein Feedreader hat heute einen <a href="http://blog.plenz.com/2011-10/git-and-the-unix-philosophy.html">Post von Julius</a> ausgespuckt, den ich so gut fand, dass ich ihn hier rezitieren möchte. </p>
<p><em>Git follows Linux&#8217;s philosophy of refusing to protect you from yourself. Much like Linux, Git will sit back and watch you fuck your shit right up, and then laugh at you as you try to get your world back to a state where up is up and down is down. As far as source control goes, not a lot of people are used to this kind of free love.<br />
</em></p>
<p>Ich rezitierte also <a href="http://teddziuba.com/2010/08/too-smart-for-git.html">Julius Zitat</a>. Blogpost-Inception?</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1805/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DeadDrop &#124; Sharing mit Alice and Bob in Baiersdorf</title>
		<link>http://noqqe.de/archives/1792</link>
		<comments>http://noqqe.de/archives/1792#comments</comments>
		<pubDate>Tue, 04 Oct 2011 18:50:34 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[aram barthol]]></category>
		<category><![CDATA[baiersdorf]]></category>
		<category><![CDATA[dead]]></category>
		<category><![CDATA[DeadDrop]]></category>
		<category><![CDATA[gips]]></category>
		<category><![CDATA[mauer]]></category>
		<category><![CDATA[stick]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[usbstick]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1792</guid>
		<description><![CDATA[Als ich durch den Park in Baiersdorf lief und diese alte Mauer einer (vermutlich) verlassenen Werkstatt sah, konnte ich dann doch nicht anders. Wie es begann: Vorbereitung: Abschluss: Ende: http://www.deaddrops.com/db/?page=view&#038;id=804]]></description>
			<content:encoded><![CDATA[<p>Als ich durch den Park in Baiersdorf lief und diese alte Mauer einer (vermutlich) verlassenen Werkstatt sah, konnte ich dann doch nicht anders. </p>
<p>Wie es begann: </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/500-DSC01279.jpg"><img class="aligncenter size-full wp-image-1796" title="DSC01279" src="http://blog.n0q.org/wp-uploads/2011/10/500-DSC01279.jpg" alt="" /></a></p>
<p>Vorbereitung:</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/500-DSC01278.jpg"><img class="aligncenter size-full wp-image-1799" title="500-DSC01278" src="http://blog.n0q.org/wp-uploads/2011/10/500-DSC01278.jpg" alt="" width="500" height="375" /></a></p>
<p>Abschluss:</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/500overview.jpg"><img class="aligncenter size-full wp-image-1800" title="500overview" src="http://blog.n0q.org/wp-uploads/2011/10/500overview.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/501-DSC01281.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/10/501-DSC01281.jpg" alt="" title="501-DSC01281" width="500" height="375" class="aligncenter size-full wp-image-1801" /></a></p>
<p>Ende: </p>
<p><a href=" http://www.deaddrops.com/db/?page=view&#038;id=804">http://www.deaddrops.com/db/?page=view&#038;id=804</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1792/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Statistiken &#124; Einfache Graphen mit R und MySQL Anbindung</title>
		<link>http://noqqe.de/archives/1780</link>
		<comments>http://noqqe.de/archives/1780#comments</comments>
		<pubDate>Sun, 02 Oct 2011 21:58:50 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[analyse]]></category>
		<category><![CDATA[anbindung]]></category>
		<category><![CDATA[einfach]]></category>
		<category><![CDATA[graphen]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[statistic]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>
		<category><![CDATA[zufall]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1780</guid>
		<description><![CDATA[Immer mal wieder reizt mich die Programmiersprache für Statistiken R. Um diesen Reiz dann auszuleben hab ich vor ein paar Monaten angefangen kleine Graphen für den zufallsbasierten Simulator ZRE zu bauen. Das Spiel &#8220;läuft&#8221; einfach 24/7 und schreibt für jedes geschehene Event Einträge in die Datenbank. Diese Einträge werte ich dann mit Hilfe von R [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://noqqe.de/archives/1458">Immer mal wieder</a> reizt mich die Programmiersprache für Statistiken <a href="http://www.r-project.org/">R</a>. Um diesen Reiz dann auszuleben hab ich vor ein paar Monaten angefangen kleine Graphen für den zufallsbasierten Simulator <a href="http://zombies.n0q.org">ZRE</a> zu bauen. Das Spiel &#8220;läuft&#8221; einfach 24/7 und schreibt für jedes geschehene Event Einträge in die Datenbank. Diese Einträge werte ich dann mit Hilfe von R aus.</p>
<p>Dazu gibt es ein Skript. Nämlich <a href="https://gist.github.com/1031260">zre.R</a> (Ob das die Konvention bei R-Skriptnamen ist, kann ich nicht sagen ;) )</p>
<pre><code>#!/usr/bin/env Rscript

### General R-Script
# MySQL
library(RMySQL)
con &lt;- dbConnect(MySQL(), user="", password="", host="", client.flag=CLIENT_MULTI_RESULTS)
# Style
zre_colors &lt;- colors()[grep("green",colors())]
zre_mint &lt;- colors()[c(48,86,50)]</code></pre>
<p>Im Klartext wird aus dem <a href="http://cran.r-project.org">CRAN Library Verzeichnis</a> die Library RMySQL includiert und die Verbindung in der Variable <strong>con</strong> abgelegt. Ähnlich wie bei PHP. Für alle Debian / Ubuntu Benutzer empfiehlt sich aber, die Library einfach über das Paketsystem nachzuinstallieren.</p>
<p><code>$ aptitude install r-cran-rmysql</code></p>
<p>Standardmäßig sehen Graphen die mit R erstellt werden ziemlich mau aus. Die weiteren Variablen unter Style habe ich gewählt um mir die Colorierung der Graphen etwas zu erleichtern. Diese werden später einfach als Attribute in den Plots/Barplots gesetzt und ausgewertet. Ich fange einfach mal der Reihe nach an:</p>
<p>Die Abfolge ist immer ziemlich ähnlich. Zu aller Erst wird der Query für die Datenbank an die Variable <strong>sql</strong> übergeben. Diese Variable wiederrum wird zusammen mit der Connection an die Funktion <strong>dbGetQuery</strong> übergeben und das Ergebnis dessen schliesslich in <strong>zre_wins</strong> gespeichert. Anschliessend ein paar kleine Informationen an das Dateiformat übergeben und den Graphen bauen.</p>
<p>Die Funktion par lässt sich erstmal als eine Art Environment Funktion für Graphen verstehen. Hier werden Eigenschaften wie Schriftfarbe, Hintergrund, Axenfarbe, und Liniendicke definiert. Danach kommt (wie ich finde) der schwierigste Teil. Bauen des Graphen. Je nach Art des Graphen (Balken, Linien, Torte u.ä.) werden logischerweise verschiedene Parameter erwartet. Die Daten werden hierbei jetzt als Matrix an ein Balkendiagram übergeben. Weitere Informationen wie die Überschrift (main) und die Beschreibung der Balken (names.arg) werden einfach angefügt.</p>
<p><strong># Graph: Wins</strong></p>
<pre><code>sql &lt;- paste("SELECT COUNT(id) AS sum, side FROM zombies.zre_wins GROUP BY side;")
zre_wins &lt;- dbGetQuery(con, sql)
png(file="wins.png", width=400, height=400)
par(col="white", bg="transparent", col.axis="white", col.lab="white", col.main="white", lwd=2)
barplot(as.matrix(zre_wins$sum), main="Game Summary", names.arg=c(zre_wins$side), beside=TRUE, col=zre_mint)</code></pre>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/gamesummary.png"><img class="aligncenter size-full wp-image-1781" title="gamesummary" src="http://blog.n0q.org/wp-uploads/2011/10/gamesummary.png" alt="" width="500" height="350" /></a></p>
<p>Selbes Spiel wieder, nur mit mehr Balken und anderem Use-Case. Diesmal werden die 25 Konflikte mit den meisten Opfern visualisiert.</p>
<p><strong># Graph: Highest Kills</strong></p>
<pre><code>sql &lt;- paste("SELECT id, kills FROM zombies.zre_kills ORDER BY kills DESC LIMIT 25;")
zre_matches_highest &lt;- dbGetQuery(con,sql)
png(file="highestkills.png", width = 400, height = 400, bg="transparent")
par(col="white", bg="transparent", col.axis="white", col.lab="white", col.main="white", lwd=4)
barplot(zre_matches_highest$kills, zre_matches_highest$id, main="25 Highest Kills", beside = TRUE, ylab="Kills", col=zre_colors)</code></pre>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/50highest.png"><img class="aligncenter size-full wp-image-1782" title="25highest" src="http://blog.n0q.org/wp-uploads/2011/10/50highest.png" alt="" width="500" height="349" /></a></p>
<p>Aber da Balkendiagramme auch irgendwann Langweilig werden geht das natürlich auch anders. Die 25 letzten Konflikte werden im &#8220;Opferverlauf&#8221; wie folgt dargestellt:</p>
<p><strong># Graph: Kills</strong></p>
<pre><code>sql &lt;- paste("SELECT kills FROM zombies.zre_kills ORDER BY id DESC limit 25;")
zre_kills &lt;- dbGetQuery(con,sql)
yrange &lt;- range(zre_kills$kills)
xrange &lt;- length(zre_kills$kills)
png(file="kills.png", width=400, height=400, bg="transparent")
par(col="white", bg="transparent", col.axis="white", col.lab="white", col.main="white", lwd=4)
plot(zre_kills$kills, xlab="Games", type="b", ylab="Kills", main="Kills from last 25 Attacks", col=zre_mint)</code></pre>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/25kills.png"><img class="aligncenter size-full wp-image-1783" title="25kills" src="http://blog.n0q.org/wp-uploads/2011/10/25kills.png" alt="" width="500" height="389" /></a></p>
<p>Damit es nicht immer nur um Tote geht, auch mal was erfreuliches. Die Geburtenrate in ZRE steigt! :)</p>
<p><strong># Graph: BirthRate</strong></p>
<pre><code>sql &lt;- paste("SELECT Month(date) AS month, count(id) AS born FROM (SELECT *, Month(date) AS M FROM zombies.zre_born) t Group by M; ")
zre_birthrate &lt;- dbGetQuery(con,sql)
png(file="birthrate.png", width=400, height=400)
par(col="white", bg="transparent", col.axis="white", col.lab="white", col.main="white", lwd=3)
barplot(zre_birthrate$born, xlab="Month", ylab="Born Humans/Zombies", names.arg=c(zre_birthrate$month),main="BirthRate per Month", col=zre_colors)</code></pre>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/birthrate.png"><img class="aligncenter size-full wp-image-1784" title="birthrate" src="http://blog.n0q.org/wp-uploads/2011/10/birthrate.png" alt="" width="500" height="382" /></a></p>
<p>Und auch das Wetter soll bei der ganzen Sache nicht zu kurz kommen. Hierbei bitte besonderes Augenmerk auf die Legende rechts oben. Eine direkte Zuordnung der Werte und Farben ist nicht nötig, da die Farben in der selben Reihenfolge von zre_colors befüllt werden wie die Balken. Die erschreckend hohe Zahl an Naturkatastrophen erklärt das aber trotzdem nicht :)</p>
<pre><code># Graph: Weather
sql &lt;- paste("SELECT COUNT(id) AS count, weather FROM zombies.zre_weather GROUP BY weather ORDER BY count DESC;")
zre_weather &lt;- dbGetQuery(con,sql)
png(file="weather.png", width=400, height=400)
par(col="white", bg="transparent", col.axis="white", col.lab="white", col.main="white", lwd=2)
barplot(zre_weather[,1], main="Weather in ZRE", beside = TRUE, col=zre_colors)
legend( 5, 40000, zre_weather$weather, cex=0.9, fill=zre_colors, col="white")</code></pre>
<p><a href="http://blog.n0q.org/wp-uploads/2011/10/weather.png"><img class="aligncenter size-full wp-image-1785" title="weather" src="http://blog.n0q.org/wp-uploads/2011/10/weather.png" alt="" width="500" height="339" /></a></p>
<p>Das volle zre.R Skript befindet sich wie das meiste auf Github: <a href="https://gist.github.com/1031260">https://gist.github.com/1031260</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1780/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flattr &#124; Man kann seine Meinung auch mal ändern.</title>
		<link>http://noqqe.de/archives/1774</link>
		<comments>http://noqqe.de/archives/1774#comments</comments>
		<pubDate>Sat, 01 Oct 2011 11:12:03 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[cats]]></category>
		<category><![CDATA[CCC]]></category>
		<category><![CDATA[chaos computer club]]></category>
		<category><![CDATA[deutsch]]></category>
		<category><![CDATA[donate]]></category>
		<category><![CDATA[donation]]></category>
		<category><![CDATA[Flattr]]></category>
		<category><![CDATA[german]]></category>
		<category><![CDATA[kultur]]></category>
		<category><![CDATA[kulturwertmark]]></category>
		<category><![CDATA[micro]]></category>
		<category><![CDATA[micropayment]]></category>
		<category><![CDATA[payment]]></category>
		<category><![CDATA[spenden]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1774</guid>
		<description><![CDATA[Als dieses Micro-Payment System Flattr vor mehr als einem Jahr raus kam habe ich hier im Blog über Sinn und Unsinn des Dienstes sinniert. Ich konnte mich damals nicht wirklich entscheiden, ob mir das System gefällt oder nicht. In der Tat ist es eigentlich eher so, dass mir das Projekt Kulturwertmark vom CCC viel eher [...]]]></description>
			<content:encoded><![CDATA[<p>Als dieses Micro-Payment System <a href="http://flattr.com">Flattr</a> vor mehr als einem Jahr raus kam habe ich <a href="http://noqqe.de/archives/1024">hier im Blog über Sinn und Unsinn des Dienstes sinniert</a>. Ich konnte mich damals nicht wirklich entscheiden, ob mir das System gefällt oder nicht. In der Tat ist es eigentlich eher so, dass mir das <a href="http://www.ccc.de/de/updates/2011/kulturwertmark">Projekt Kulturwertmark vom CCC</a> viel eher zusagt. </p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/10/1265654972.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/10/1265654972.jpg" alt="" title="1265654972" width="480" height="630" class="aligncenter size-full wp-image-1775" /></a></center></p>
<p>Im Moment ist es abe so, dass es keinen anderen verbreiteten Weg gibt Content bzw. Software von Privat-Menschen zu belohnen, weil er/sie mir geholfen hat. Deshalb (und auch weil mich die Oberfläche interessiert hat) habe ich mich dort angemeldet und verteile seit 2 Monaten etwas Geld hier und da. Vorwiegend an Podcasts, Taskwarrior und Blogs von Leuten die ich kenne. Ich habe initial 8 Euro überwiesen mit denen ich jetzt erstmal 4 Monate rumflattern werde. Das das nicht die Welt ist, ist mir klar. </p>
<p>Und da ich jetzt sowieso schon einen Account dort habe, habe ich auch <a href="https://flattr.com/profile/noqqe">meinen Flattr-Button</a> im Blog (links) eingebunden. Es wird erstmal keinen individuell Button für einzelne Posts geben und es braucht sich auch niemand verpflichtet fühlen da drauf zu drücken. </p>
<p>UPDATE:<br />
Ich hab Flattr &#8220;Things&#8221; bis eben missverstanden. Bis jetzt war im Blog der Flattr Button zu meiner Person eingebunden. Scheint aber als wäre das nicht der Use-Case. Ich habe jetzt für meinen Blog selbst noch ein &#8220;Thing&#8221; eingereicht und dieses mit der richtigen URL eingebunden. Vielen dank an die beiden die bereits den Flattr Knopf gedrückt haben! Leider ist das jetzt nicht mehr sichtbar hier. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1774/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Taskwarrior &#124; Migration von MyTinyTodo</title>
		<link>http://noqqe.de/archives/1766</link>
		<comments>http://noqqe.de/archives/1766#comments</comments>
		<pubDate>Sun, 25 Sep 2011 11:58:52 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[mig]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[mirgration]]></category>
		<category><![CDATA[MyTinyTodo]]></category>
		<category><![CDATA[Task]]></category>
		<category><![CDATA[Taskwarrior]]></category>
		<category><![CDATA[todo]]></category>
		<category><![CDATA[todolist]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubucon]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1766</guid>
		<description><![CDATA[Im Programm der Ubucon habe ich einen Vortrag von Dirk über Taskwarrior gefunden. Aus Gründen hat mich das Tool interessiert. Ich habe zwar bereits eine Todo-Verwaltung (nämlich MyTinytodo) aber trotzdem. Nach zwei Tagen herumspielen und einem wirklich hervorragendem How-To hat mir Taskwarrior allerdings so gefallen, dass ich mich entschlossen habe MyTinyTodo aufzugeben und zu Taskwarrior [...]]]></description>
			<content:encoded><![CDATA[<p>Im <a href="http://ikhaya.ubuntuusers.de/2011/09/06/das-programm-der-ubucon-2011-steht/">Programm der Ubucon</a> habe ich einen <a href="http://www.ubucon.de/programm/taskwarrior">Vortrag</a> von <a href="http://www.deimeke.net/dirk/blog/">Dirk</a> über <a href="http://taskwarrior.org">Taskwarrior</a> gefunden. Aus Gründen hat mich das Tool interessiert. Ich habe zwar bereits eine Todo-Verwaltung (nämlich <a href="http://mytinytodo.net/">MyTinytodo</a>) aber trotzdem.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/09/patrick.jpg"><img class="aligncenter size-full wp-image-1767" title="patrick" src="http://blog.n0q.org/wp-uploads/2011/09/patrick.jpg" alt="" width="320" height="277" /></a></center></p>
<p>Nach zwei Tagen herumspielen und einem wirklich hervorragendem <a href="http://taskwarrior.org/projects/taskwarrior/wiki/Tutorial">How-To</a> hat mir Taskwarrior allerdings so gefallen, dass ich mich entschlossen habe MyTinyTodo aufzugeben und zu Taskwarrior zu wechseln. Da ich meine TodoListe aber auch gerne als eine Art &#8220;Log&#8221; verwende musste ich die Aufgaben erst aus MyTinyTodo migrieren.</p>
<p>Realisiert habe ich das über ein kleines Bash-Script, welches die Daten aus der MyTinyTodo MySQL Datenbank ausliesst und daraus automatisch Taskwarrior Statements formuliert. Allerdings: Ich habe absichtlich nur abgeschlossene Tasks über die &#8220;LOG&#8221;-Funktion von Taskwarrior einfuegt.</p>
<p><script src="https://gist.github.com/1240498.js?file=mytinytodo2taskwarrior.bash"></script></p>
<p>Aus dem Datenbank Eintrag: </p>
<pre><code>mysql&gt; select d_completed,  mtt_lists.name as liste, title from mtt_todolist, mtt_lists where mtt_lists.id = mtt_todolist.list_id order by d_completed desc limit 1;
+-------------+-------+--------------+
| d_completed | liste | title        |
+-------------+-------+--------------+
|  1307714692 | Home  | Miete zahlen |
+-------------+-------+--------------+
1 row in set (0.00 sec)</code></pre>
<p>formuliert das Skript beispielsweise folgendes Kommando für Taskwarrior:</p>
<p><code>task log due:20110610 pro:IMPORT-Home Miete zahlen</code></p>
<p>Das passiert eben für jede Eintrag in der Todo-Datenbank, damit ich dort nachschlagen kann wann was passiert ist. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1766/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DeadDrop &#124; Erlangen &#8211; Schwabachanlage</title>
		<link>http://noqqe.de/archives/1759</link>
		<comments>http://noqqe.de/archives/1759#comments</comments>
		<pubDate>Wed, 21 Sep 2011 19:16:31 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[anonym]]></category>
		<category><![CDATA[DeadDrop]]></category>
		<category><![CDATA[DeadDrop Erlangen]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[passanten]]></category>
		<category><![CDATA[skurril]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1759</guid>
		<description><![CDATA[Ich war dann schliesslich doch noch bei einem funktionierenden DeadDrop in Erlangen. Dem in der Schwabachanlage. Quasi also mein erster &#8220;Check-In&#8221; an einem funktionierendem DeadDrop. Ich muss sagen der Inhalt war wenig bis gar nicht interessant. Allerdings muss das Bild, wie ich da mit Fahrrad, Laptop auf dem Lenker und Kabel in eine tote Mauer [...]]]></description>
			<content:encoded><![CDATA[<p>Ich war dann schliesslich doch noch bei einem funktionierenden DeadDrop in Erlangen. <a href="http://www.deaddrops.com/db/?page=view&#038;id=682">Dem in der Schwabachanlage</a>. Quasi also mein erster &#8220;Check-In&#8221; an einem funktionierendem DeadDrop. </p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/09/IMG_0566.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/09/IMG_0566.jpg" alt="" title="IMG_0566" width="500" height="375" class="aligncenter size-full wp-image-1761" /></a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/09/IMG_05651.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/09/IMG_05651.jpg" alt="" title="IMG_0565" width="500" height="375" class="aligncenter size-full wp-image-1762" /></a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/09/IMG_0562.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/09/IMG_0562.jpg" alt="" title="IMG_0562" width="500" height="667" class="aligncenter size-full wp-image-1763" /></a></p>
<p>Ich muss sagen der Inhalt war wenig bis gar nicht interessant. Allerdings muss das Bild, wie ich da mit Fahrrad, Laptop auf dem Lenker und Kabel in eine tote Mauer stehe ziemlich skurril ausgesehen haben. </p>
<p>&#8220;Gibts da Strom umsonst oder was ist da los?&#8221;</p>
<p>&#8220;Junger Mann, das is ja unerhört. Mit dem Laptop am Lenker Fahrrad fahren! Das ist eine Gefährdung für den Verkehr!&#8221;</p>
<p>&#8220;Ach, was wird das denn? Muss ich die Politzei verständigen?&#8221;</p>
<p>&#8230; um nur ein paar Zitate aufzuzählen. Zur Beruhigung aller: Ich bin natürlich nicht mit dem Fahrrad gefahren während ich den Laptop am Lenker hatte. Das (und den eigentlichen Grund meiner Anwesenheit) habe ich natürlich auch brav jedem erzählt der mich in den insgesamt nur 20 Minuten angesprochen hat. Insgesamt war das sogar witziger als der Deaddrop selbst. Werde das auf jedenfall wiederholen. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1759/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino &#124; Ich baute ein Megabitmeter</title>
		<link>http://noqqe.de/archives/1751</link>
		<comments>http://noqqe.de/archives/1751#comments</comments>
		<pubDate>Sat, 27 Aug 2011 11:10:02 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ATMega]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[löten]]></category>
		<category><![CDATA[Megabit]]></category>
		<category><![CDATA[Megabitmeter]]></category>
		<category><![CDATA[Meter]]></category>
		<category><![CDATA[mikrocontroller]]></category>
		<category><![CDATA[nsfw]]></category>
		<category><![CDATA[pritlove]]></category>
		<category><![CDATA[prozessor]]></category>
		<category><![CDATA[skytee]]></category>
		<category><![CDATA[tim]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1751</guid>
		<description><![CDATA[Vor einiger Zeit hab ich über den Podcast von Tim Pritlove (NSFW) von dem Projekt MegabitMeter erfahren. Es hat mich ehrlichgesagt fasziniert. Der eigentliche (im Namen implimzierte) Zweck zwar weniger, aber gernerell einfach Werte über ein USB Device darstellen zu können. Genaue Anwendungsfälle gibts weiter unten. Zunächstmal hab ich mich ausgiebig mit dem HowTo beschäftigt [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit hab ich über den Podcast von Tim Pritlove (NSFW) von dem Projekt <a href=" http://megabitmeter.de">MegabitMeter</a> erfahren. Es hat mich ehrlichgesagt fasziniert. Der eigentliche (im Namen implimzierte) Zweck zwar weniger, aber gernerell einfach Werte über ein USB Device darstellen zu können. Genaue Anwendungsfälle gibts weiter unten.</p>
<p>Zunächstmal hab ich mich ausgiebig mit dem <a href="http://megabitmeter.de/2010/12/megabitmeter-%E2%80%93-bandwidth-meter-diy-kit-howto/">HowTo</a> beschäftigt welches ich (bis auf ein paar Stellen) sehr gut finde. Die letzten Paar Unstimmigkeiten habe ich dann mit dem wirklich netten und zuvorkommenden Betreibern des Projekts via Mail abstimmen dürfen :) Das lag aber auch an meinen fehlenden elektrotechnischen Kenntnissen.</p>
<p>Ich muss dazu sagen, dass ich in der glücklichen Situation war und jemanden kannte, der in einer Firma tätig ist, die solche Messgeräte anfertigt wodurch ich keinen Kit kaufen musste. Das ist auch der Grund warum das Messgerät etwas anders aussieht.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/IMG_0547.jpg"><img class="aligncenter size-full wp-image-1753" title="IMG_0547" src="http://blog.n0q.org/wp-uploads/2011/08/IMG_0547.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/IMG_0546.jpg"><img class="aligncenter size-full wp-image-1754" title="IMG_0546" src="http://blog.n0q.org/wp-uploads/2011/08/IMG_0546.jpg" alt="" width="500" height="375" /></a></p>
<p>Ich denke auch das der Sinn des Projekts eher das &#8220;do-it-yourself&#8221; ist und der wirtschaftliche Erfolg nur eine positiver Nebeneffekt der Betreiber ist&#8230; (Zumindest hoffe ich, dass ich das nicht falsch interpretiert habe). Außerdem schwierig war, dass der Kit 2 (incl. dem Arduino) nicht verfügbar war, da laut Twitter gerade keine Arduinio Nano in rauen Mengen billig einzukaufen sind. Den Arduino Prozessor habe ich deswegen von <a href="http://tinkersoup.de">TinkerSoup.de</a> geordert.</p>
<p>Wenn alles fertig gebastelt ist, kann man dem Gerät einfach via echo Werte übergeben.</p>
<p><code>$ echo "200" &gt; /dev/ttyUSB0</code></p>
<p>Ein paar Anwendungsbeispeile:</p>
<p>Zufällige Zahlen auf das Gerät projezieren<br />
<code>while true; do RND=$(($RANDOM % 99 * 10)); printf "$RND\n" &gt; /dev/ttyUSB0 ;echo $RND; sleep 2 ; done</code></p>
<p>Zombie Kill Meter (In Verbindung zu <a href="http://zombies.n0q.org">zombies.n0q.org</a>)<br />
<code>while true ; do mysql -u user -ppw -e \"SELECT kills from zombies.zre_kills ORDER BY id DESC LIMIT 1;\" | grep -v ^kills ; sleep 3; done" &gt; /dev/ttyUSB0</code></p>
<p>Port 80 Verbindungen des Webservers<br />
<code>ssh user@host "while true; do echo \$(( $(netstat -tapn | grep -c -e ':80\s*') * 100 )) ; sleep 2; done"  &gt; /dev/ttyUSB0</code></p>
<p>An weiteren Snippets bastle ich im Moment noch. Werden eventuell nachgereicht wenn Sie spruchreif sind. Am Ende noch ein riesen Danke für die Software und die Projektidee sowie das wunderbare HowTo an das Team von <a href="http://megabitmeter.de">megabitmeter.de</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1751/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DeadDrop &#124; Erlangen Kirchplatz</title>
		<link>http://noqqe.de/archives/1747</link>
		<comments>http://noqqe.de/archives/1747#comments</comments>
		<pubDate>Thu, 25 Aug 2011 17:00:33 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Aran Barthol]]></category>
		<category><![CDATA[DeadDrop]]></category>
		<category><![CDATA[DeadDrop Erlangen]]></category>
		<category><![CDATA[Erlangen]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1747</guid>
		<description><![CDATA[Komme gerade vom ersten Versuch zurück, mich mal an einen DeadDrop zu stöpseln. Leider erfolglos, weil broken. Der genaue Link zum (kaputten) DeadDrop: http://deaddrops.com/db/?page=view&#038;id=395 Bei aller verwunderung gibt es in der Datenbank keinerlei Funktion einen Toten Toten Drop zu melden. Wie es der Zufall so will gibt es aber genau seit heute(!) einen neuen DeadDrop [...]]]></description>
			<content:encoded><![CDATA[<p>Komme gerade vom ersten Versuch zurück, mich mal an einen <a href="http://deaddrops.com">DeadDrop</a> zu stöpseln. Leider erfolglos, weil broken. Der genaue Link zum (kaputten) DeadDrop: <a href="http://deaddrops.com/db/?page=view&#038;id=395">http://deaddrops.com/db/?page=view&#038;id=395</a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/IMG_0559.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/08/IMG_0559.jpg" alt="" title="DeadDrop Erlangen Kirchplatz" width="500" height="667" class="aligncenter size-full wp-image-1748" /></a></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/IMG_0558.jpg"><img src="http://blog.n0q.org/wp-uploads/2011/08/IMG_0558.jpg" alt="" title="DeadDrop Erlangen Kirchplatz" width="500" height="375" class="aligncenter size-full wp-image-1749" /></a></p>
<p>Bei aller verwunderung gibt es in der Datenbank keinerlei Funktion einen Toten Toten Drop zu melden. Wie es der Zufall so will gibt es aber genau seit heute(!) einen neuen DeadDrop in Erlangen: <a href="http://deaddrops.com/db/?page=view&#038;id=682">http://deaddrops.com/db/?page=view&#038;id=682</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1747/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PostgreSQL &#124; 1000 und 1 Query</title>
		<link>http://noqqe.de/archives/1742</link>
		<comments>http://noqqe.de/archives/1742#comments</comments>
		<pubDate>Tue, 23 Aug 2011 16:39:15 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[1000 queries]]></category>
		<category><![CDATA[1001 query]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[sequel]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1742</guid>
		<description><![CDATA[Zur Zeit spiele und bastle ich nebenher mit PostgreSQL rum. Überlege ob ich mal eine alternative DB für das Zombie-Revolution-Environment an den Start bringe&#8230; Für meinen Use-Case scheint das allerdings nur begrenzt von Nutzen zu sein. Ich mache vielleicht etwas falsch, aber wenn ich 1000 Queries in MySQL kippe, dauert nur einen Bruchteil so lange [...]]]></description>
			<content:encoded><![CDATA[<p>Zur Zeit spiele und bastle ich nebenher mit PostgreSQL rum. Überlege ob ich mal eine alternative DB für das <a href="http://zombies.n0q.org">Zombie-Revolution-Environment</a> an den Start bringe&#8230;</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/5384_c4d1.jpeg"><img src="http://blog.n0q.org/wp-uploads/2011/08/5384_c4d1.jpeg" alt="" title="brainwash" width="500" height="332" class="aligncenter size-full wp-image-1743" /></a></p>
<p>Für meinen Use-Case scheint das allerdings nur begrenzt von Nutzen zu sein. Ich mache vielleicht etwas falsch, aber wenn ich 1000 Queries in MySQL kippe, dauert nur einen Bruchteil so lange wie in postgreSQL. Um das zu veranschaulichen:</p>
<p><code>$ time for x in $(seq 1 1000) ; do mysql -u root -ppw -e "insert into foobar.foo values ($x, now());" ; done<br />
real    0m7.349s<br />
user    0m0.060s<br />
sys     0m0.380s</code></p>
<p><code>$ time for x in $(seq 1 1000) ; do psql --quiet -d foobar -c "insert into foobar values ($x, now());" ; done<br />
real    1m28.363s<br />
user    0m37.450s<br />
sys     0m13.020s</code></p>
<p>Kann mir jemand sagen woran das liegt? Ich kann mir nur schwer vorstellen das PostgreSQL so hinterher hinkt. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1742/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ROT13 Verschlüsselung in Bash</title>
		<link>http://noqqe.de/archives/1732</link>
		<comments>http://noqqe.de/archives/1732#comments</comments>
		<pubDate>Sat, 13 Aug 2011 12:03:20 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[/dev/radio]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[CCC]]></category>
		<category><![CDATA[decryption]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[rot]]></category>
		<category><![CDATA[rot13]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[very simple encryption]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1732</guid>
		<description><![CDATA[Seit ich meinen neuen Arbeitsweg antrete und täglich ca eine Stunde im Zug verbringe, höre ich umso mehr Podcasts. Besonders gut finde ich http://ulm.ccc.de/dev/radio/. Es ging unter anderem um Algorithmen und Kryptologie im Allgemeinen. Unter anderem eben auch die ROT13 Verschlüsselung. Ich habe mir überlegt wie schwierig es wohl sein kann, diesen in Bash zu [...]]]></description>
			<content:encoded><![CDATA[<p>Seit ich meinen neuen Arbeitsweg antrete und täglich ca eine Stunde im Zug verbringe, höre ich umso mehr Podcasts. Besonders gut finde ich <a href="http://ulm.ccc.de/dev/radio/">http://ulm.ccc.de/dev/radio/</a>. Es ging unter anderem um Algorithmen und Kryptologie im Allgemeinen. Unter anderem eben auch die ROT13 Verschlüsselung.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/08/475px-ROT13_table_with_example.svg_.png"><img src="http://blog.n0q.org/wp-uploads/2011/08/475px-ROT13_table_with_example.svg_.png" alt="Grafik aus Wikipedia unter Public Domain" title="ROT13 Encryption" width="475" height="275" class="aligncenter size-full wp-image-1733" /></a></p>
<p> Ich habe mir überlegt wie schwierig es wohl sein kann, diesen in Bash zu implementieren. Nach kurzem googlen findet man immer wieder eine kleine wirklich ausgefuchste, trickreiche Zeile: </p>
<p><code>$ tr A-Za-z N-ZA-Mn-za-m</code></p>
<p>Irgendwie war mir das aber zu langweilig, mir die Arbeit von einem vorgefertigten Binary erledigen zu lassen. Ich wollte es in echtem Bash selbst schreiben. Was ich dann auch getan habe. </p>
<p><script src="https://gist.github.com/1143762.js?file=rot13.bash"></script></p>
<p>Usage:</p>
<p><code>$ ./rot13 "hello world"<br />
uryyb jbeyq</code></p>
<p><code>$ echo "hello world" | ./rot13<br />
uryyb jbeyq</code></p>
<p><code># Verschlüsseln und entschlüsseln hintereinander.<br />
$ echo "hello world" | ./rot13 | ./rot13<br />
hello world</code></p>
<p><code># Zeichentabelle anzeigen<br />
 $ ./rot13 -t</code></p>
<p>Sollten Zeichen vorkommen, die sicht nicht im Table befinden, werden diese automatisch erkannt und bleiben unverschlüsselt. </p>
<p><code>$ ./rot13 "Ich wollte nur [...] und dann ist das Universum explodiert."<br />
Ipu jbyygr ahe [...] haq qnaa vfg qnf Uavirefhz rkcybqvreg.</code></p>
<p>Genau genommen ist es sogar mehr als nur ROT13. Mit wachsendem Zeichen-Table wächst auch automatisch die Verschiebung der Stellen mit. Es ist also möglich einen eigens definierten Table mit Zeichen anzulegen und diesen zu nutzen. Einzige Bedingung: Es muss eine gerade Anzahl von Zeichen sein. </p>
<p>Und zum Schluss: Danke an /dev/radio für die erhebliche Verkürzung meiner Zugfahrten :) </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1732/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Abschlussprüfung &#124; Zentrales Versionskontrollsystem mit git und etckeeper</title>
		<link>http://noqqe.de/archives/1714</link>
		<comments>http://noqqe.de/archives/1714#comments</comments>
		<pubDate>Sun, 24 Jul 2011 16:56:32 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[abschluss]]></category>
		<category><![CDATA[etckeeper]]></category>
		<category><![CDATA[fachinformatiker]]></category>
		<category><![CDATA[gitolite]]></category>
		<category><![CDATA[Latex]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Projektarbeit]]></category>
		<category><![CDATA[slidy]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1714</guid>
		<description><![CDATA[Nachdem ich letzten Donnerstag erfolgreich meine Ausbildung zum Fachinformatiker abgeschlossen habe, kann ich die dazugehörige Dokumentation / Präsentation hier veröffentlichen. Dokumentation Präsentation Zu danken habe ich dabei hauptsächlich all den wunderbaren OpenSource Tools, die mir zur Erstellung und Umsetzung gedient haben. Um einige zu nennen: LaTeX bzw. TeX-Live (Dokumentation) HTML &#38; Slidy (Präsentation) git (Projektinhalt) [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich letzten Donnerstag erfolgreich meine Ausbildung zum Fachinformatiker abgeschlossen habe, kann ich die dazugehörige Dokumentation / Präsentation hier veröffentlichen.</p>
<p><strong>Dokumentation</strong><br />
<a href="http://blog.n0q.org/wp-uploads/2011/07/documentation.pdf"><img class="aligncenter size-full wp-image-1715" title="Dokumentation" src="http://blog.n0q.org/wp-uploads/2011/07/Bildschirmfoto.png" alt="" width="191" height="280" /></a></p>
<p><strong>Präsentation</strong><br />
<a href="http://blog.n0q.org/wp-uploads/2011/07/slide.html"><img class="aligncenter size-full wp-image-1727" title="Präsentation" src="http://blog.n0q.org/wp-uploads/2011/07/Bildschirmfoto-1.png" alt="" width="428" height="157" /></a></p>
<p>Zu danken habe ich dabei hauptsächlich all den wunderbaren OpenSource Tools, die mir zur Erstellung und Umsetzung gedient haben. Um einige zu nennen:</p>
<ul>
<li><a href="http://www.latex-project.org/">LaTeX</a> bzw. <a href="http://www.tug.org/texlive/">TeX-Live</a> (Dokumentation)</li>
<li>HTML &amp; <a href="http://www.w3.org/2005/03/slideshow.html">Slidy</a> (Präsentation)</li>
<li><a href="http://git-scm.com/">git</a> (Projektinhalt)</li>
<li><a href="http://kitenet.net/~joey/code/etckeeper/">etckeeper</a> von Joey Hess (Projektinhalt)</li>
<li><a href="https://github.com/sitaramc/gitolite#start">gitolite</a> (Projektinhalt)</li>
<li>und natürlich allen Debian Developern, die die genannte Software paketiert haben :)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1714/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Minecraft + Git + Bash = </title>
		<link>http://noqqe.de/archives/1693</link>
		<comments>http://noqqe.de/archives/1693#comments</comments>
		<pubDate>Mon, 04 Jul 2011 18:42:09 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[Autosave]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Minecraft]]></category>
		<category><![CDATA[Minecraft and git]]></category>
		<category><![CDATA[Minecraft und git]]></category>
		<category><![CDATA[Save]]></category>
		<category><![CDATA[Speichern]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1693</guid>
		<description><![CDATA[Seit mittlerweile erstaunlich langer Zeit spiele ich Minecraft. Minecraft hält seine Daten in ~/.minecraft vor. Also Levels, Statistiken, Items. Das Minecraft Home Directory unter Versionskontolle zu stellen hat unter Umständen mehrere Vorteile, die ich hier kurz erläutern möchte :) Initiales Setup Als erstes muss das Verzeichnis initial eingerichtet werden. Initialisierung, hinzufügen aller Dateien und ersten [...]]]></description>
			<content:encoded><![CDATA[<p>Seit mittlerweile erstaunlich langer Zeit spiele ich <a href="http://minecraft.net">Minecraft</a>. Minecraft hält seine Daten in <strong>~/.minecraft</strong> vor. Also Levels, Statistiken, Items. Das Minecraft Home Directory unter Versionskontolle zu stellen hat unter Umständen mehrere Vorteile, die ich hier kurz erläutern möchte :)</p>
<p><strong>Initiales Setup</strong></p>
<p>Als erstes muss das Verzeichnis initial eingerichtet werden. Initialisierung, hinzufügen aller Dateien und ersten Commit erstellen.</p>
<p><code>$ cd $HOME/.minecraft<br />
$ git init<br />
$ git add .<br />
$ git commit -a -m "Initialer Commit"</code></p>
<p><strong>Spielstände manuell Laden und Verwalten (Commits)</strong></p>
<p>Einer der gravierendsten Vorteile. Wer wie ich oft an Klippen hinunter stürzt oder an einem (oder auch mehreren :P ) Creeper(n) scheitert wird das bestätigen können. Einmal gefallen/gestorben gibt es kein zurück mehr. Bis jetzt.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/07/minecraft-hill.png"><img class="aligncenter size-full wp-image-1694" title="minecraft-hill" src="http://blog.n0q.org/wp-uploads/2011/07/minecraft-hill-500.png" alt="" /></a></p>
<p>Die hypothetische &#8220;Herausforderung&#8221; scheint sich gerade aufzutun. Ob jetzt Creeper, Berg oder sonst was ist erstmal egal. Könnte auf jeden Fall kritisch für meinen Minecraft Character enden.</p>
<p><code>$ git commit -a -m "Ob man den Sprung ueberlebt?"</code></p>
<p>Nach einem kurzen Tab in die Konsole, sollte das Spiel erstmal gesichert sein und ich kann den Sprung wagen.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/07/minecraft-gameover.png"><img class="aligncenter size-full wp-image-1695" title="minecraft-gameover" src="http://blog.n0q.org/wp-uploads/2011/07/minecraft-gameover-500.png" alt=""/></a></p>
<p>Anscheinend überlebt man nicht, aber genau das war auch der kritische Punkt. Genau jetzt bin ich in der Lage meinen alten Spielstand wiederherzustellen. Mit nachfolgendem Kommando verwerfe ich alle seit dem letzten Commit entstandenen Änderungen an meinem Spielstand. Vorher dringend aufs Minecraft Titelmenü zurückkehren!</p>
<p><code>$ git stash<br />
# Update<br />
# oder alternativ:<br />
$ git checkout -f</code></p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/07/minecraft-hill-again.png"><img class="aligncenter size-full wp-image-1696" title="minecraft-hill-again" src="http://blog.n0q.org/wp-uploads/2011/07/minecraft-hill-again-500.png" alt="" /></a></p>
<p>Dieses Szenario lässt sich nicht nur auf gerade geschehene Ereignisse abbilden sondern auch zwischen Commits die längere Zeit her sind. Wenn nach einer halben Stunde/einem Monat klar wird, das der Minecraft Char gerade nur Müll verzapft hat, kann auch zwischen mehrere Commits hin und her gesprungen werden. Mit welchen git Kommandos das bewerkstelligt wird, bleibt jedem selbst überlassen.</p>
<p><strong>git-revert</strong> macht den letzten Commit rückgängig, erstellt dabei einen neuen in dem die Änderungen enthalten sind. Das ist in soweit gefährlich, dass zwischenliegende Commits unberührt bleiben und eventuell in einen großen Haufen Datenmüll zerfallen(!). Eher Anwendung für den &#8220;Warp&#8221; an einen früheren Zeitpunkt X findet daher <strong>git-reset</strong>.</p>
<p><code>$ git reset 66a2594<br />
# oder<br />
$ git reset HEAD^</code></p>
<p>Das Working Directory wird damit auf einen Stand gebracht, wie es zum Zeitpunkt des angegebenen Commits aussah. Dieser kann somit auch weiter in der Vergangenheit liegen.</p>
<p><strong>Automatische Speicherung (Bash-Einzeiler)</strong></p>
<p>Allerdings muss ich zugeben, dass diese Praxis relativ schnell aufwendig wird. Immer zwischen Fenstern hin und her zappen ist ja auf Dauer auch eher zermürbend. Daher habe ich mir diese &#8220;Arbeit&#8221; von einer kleinen Bash Zeile abnehmen lassen.</p>
<p><code>$ SEKUNDEN=10 ; while true ; do git add . ; git commit -a -m "AutoSave $(date)" ; sleep $SEKUNDEN ; done </code></p>
<p>Ich denke es ist Geschmacksache wie oft bzw. in welcher Frequenz die Commits abgesetzt werden können. Bis jetzt bin ich mit ca 300 Sekunden (5 Minuten) am besten Gefahren. Die Commits rieseln vor sich hin und beeinträchtigen so in keinster Weise den Spielfluss.<br />
<code><br />
[master bf9dd85] AutoSave Mo 4. Jul 19:56:17 CEST 2011<br />
4 files changed, 15 insertions(+), 12 deletions(-)<br />
rewrite saves/0pen_Running/level.dat (100%)<br />
rewrite saves/0pen_Running/level.dat_old (100%)<br />
[master 5ddedc8] AutoSave Mo 4. Jul 19:56:27 CEST 2011<br />
4 files changed, 17 insertions(+), 19 deletions(-)<br />
rewrite saves/0pen_Running/level.dat (100%)<br />
rewrite saves/0pen_Running/level.dat_old (100%)<br />
[master 2d33023] AutoSave Mo 4. Jul 19:56:37 CEST 2011<br />
4 files changed, 10 insertions(+), 11 deletions(-)<br />
rewrite saves/0pen_Running/level.dat (100%)<br />
rewrite saves/0pen_Running/level.dat_old (100%)<br />
</code></p>
<p><strong>Parallele Welten (Branches)</strong></p>
<p>Um einfach mal ein Anwendungsbeispiel zu nennen: Wer in seinem virtuellen Minecraft-Keller mal raue Mengen an TNT gebunkert hat, möchte es nach Möglichkeit auch mal benutzen, right? Aber danach das ganze Dorf wieder aufbauen? Nee&#8230; Branching!</p>
<p>Das ist der Punkt an dem die Geschichte der lokalen Minecraft Map sich in zwei Teile spaltet. In einer wird das eigene Bauwerk Sodom und Gomorra mäßig untergehen und in der anderen weiterhin existierenden Welt tollen sich Pigs und Sheeps in Minecarts herum. Die Abzweigung lässt sich wie folgt bewerkstelligen.</p>
<p><code>$ git branch blowup<br />
$ git checkout blowup</code></p>
<p>Jetzt kann man in aller Seelen Ruhe TNT verteilen und auch mal Destroyer statt Builder spielen. Tipp: Commit <strong>vor</strong> der Sprengung setzen :P Explosion immer und immer wieder von vorne genießen ;) Bemerkenswert sind außerdem die unterschiedlichen Abläufe von ein und der selben Explosion, aber dazu vielleicht wann anders ein Blogpost. Irgendwann wird aber auch das dann zur Routine und man wechselt via</p>
<p><code>$ git checkout master</code></p>
<p>wieder zu den Schäfchen. Der Branch &#8220;blowup&#8221; bleibt aber bestehen und lässt sich auch nach weiteren Spielständen immer wieder herbeirufen. Ich habe mittlerweile eine Art Branchset meiner &#8220;Lieblingssituationen&#8221; im Game, die ich immer wieder durchspielen kann, wie es mir gerade gefällt. Und nein es sind nicht immer nur Explosionen :) </p>
<p><strong>Networking, Baby! (Remotes)</strong></p>
<p>Mein Minecraft Setup mit allen Einstellungen und Spielständen zentral an einem Ort zu haben war ehrlich gesagt meine erste Motivation git einzusetzen. Ich spiele Minecraft auf 3 verschiedenen Maschinen (Ubuntu, Debian und sogar Mac OSX) und wollte keine 3 unterschiedlichen Maps pflegen müssen. Deshalb fing ich an auf meinem Server zwischen zu lagern. Ein eigens laufender git-Server ist hier aber Vorraussetzung! Freies Hosting bei beispielsweise <a href="http://github.com">Github</a> fällt wegen der großen Datenmengen (ca. 300MB bei mir derzeit) und der fehlenden Privatsphäre flach. Remote-Server hinterlegen und aktuellen Stand pushen:</p>
<p><code>$ git remote add origin git@gitserver.com:minecraft<br />
$ git push origin master</code></p>
<p>Remote-Server auf anderen hosts klonen:</p>
<p><code># Ubuntu/Debian<br />
$ git clone git@gitserver.com:minecraft $HOME/.minecraft<br />
# Mac OSX<br />
$ git clone git@gitserver.com:minecraft $HOME/Library/Application\ Support/minecraft</code></p>
<p><strong>At least</strong></p>
<p>Ich möchte nicht sagen, dass dies hier der ultimative Weg zum heiligen Gral in Minecraft ist. Manchmal weckt eben diese erzeugte &#8220;Sicherheit&#8221; durch den Reset eine gewisse &#8220;Wayne&#8230;&#8221; Einstellung in einem, die dem Spielspaß ein Kleinwenig den kitzel raubt. Gerade am Anfang hat es mir aber extrem geholfen, nicht bei jedem Wipe alle Items zu verlieren oder sich nach einem Ausflug in den Wald wieder &#8220;zurück warpen&#8221; zu können. </p>
<p>Auf weitere Ideen im Umgang mit Minecraft und Git freue ich mich natürlich wie immer :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1693/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>BitCoin &#124; Debian Daemon Script für poclbm-mod</title>
		<link>http://noqqe.de/archives/1689</link>
		<comments>http://noqqe.de/archives/1689#comments</comments>
		<pubDate>Sun, 12 Jun 2011 11:09:28 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[BitCoin]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Mining]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1689</guid>
		<description><![CDATA[Man muss Dinge über Hirnschäden von Menschen lesen die Nachts guten Gewissens neben einem 4 Grafikarten im SLI-Verbund schlafen und zugleich die Bedenken von sinnierenden Typen die an den Limitierungen von 21 Billionen maximal möglichen BitCoins zweifeln. Umweltverschmutzung ist natürlich auch ein Thema. Klar. Gerechtfertigter Weise. Wenn Ihr mich fragt, schiesst die BitCoin Mining Gesellschaft [...]]]></description>
			<content:encoded><![CDATA[<p>Man muss Dinge über Hirnschäden von Menschen lesen die <a href="http://www.bitcoinminingaccidents.com/?p=196">Nachts guten Gewissens neben einem 4 Grafikarten im SLI-Verbund schlafen</a> und zugleich die <a href="http://tav.espians.com/why-bitcoin-will-fail-as-a-currency.html">Bedenken von sinnierenden Typen</a> die an den Limitierungen von 21 Billionen maximal möglichen BitCoins zweifeln. Umweltverschmutzung ist natürlich auch ein Thema. Klar. Gerechtfertigter Weise.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/06/Tux-G2_bitcoin.png"><img src="http://blog.n0q.org/wp-uploads/2011/06/Tux-G2_bitcoin.png" alt="" title="BitCoinTux" width="256" height="256" class="aligncenter size-full wp-image-1690" /></a></center></p>
<p>Wenn Ihr mich fragt, schiesst die BitCoin Mining Gesellschaft am Ziel vorbei. Separate Rechner betreiben schiesst am Ziel vorbei. Hunderte von Euros für neue Grafikkarten ausgeben um 5 MegaHashes/s mehr rechnen zu können schiesst am Ziel vorbei. Euro&#8217;s für BitCoins bezahlen schiesst sowieso am Ziel vorbei. Man kann BitCoins meines Erachtens auch benutzen ohne Kopfstände zu machen. Immer wenn der Rechner sowieso gerade läuft, mit der Hardware die man zur Verfügung hat.</p>
<p>Aus diesem Grund habe ich ein kleines Skript gebastelt. Einen Start-Stop-Daemon für <strong>/etc/init.d/</strong>. Es startet automatisch wenn mein Rechner hochfährt und hört auf wenn ich Ihn herunterfahre. Ganz einfach</p>
<p><code>$ wget -O /etc/init.d/bitcoin https://gist.github.com/raw/1007794/bitcoin.sh<br />
$ chmod +x /etc/init.d/bitcoin<br />
$ update-rc.d bitcoin defaults</code></p>
<p><script src="https://gist.github.com/1007794.js?file=bitcoin.sh"></script></p>
<p><a href="https://gist.github.com/1007794">https://gist.github.com/1007794</a></p>
<p>Ich möchte aber dazu sagen, dass ich dies Funktionstüchtigkeit des Skripts nicht auf anderen Rechnern/Betriebssystemen getestet habe. Vor Benutzung also bitte lesen, verstehen ggf. anpassen. Außerdem wird ein Account bei einem Mining Pool benötigt und der Mining Client an sich (<a href="https://en.bitcoin.it/wiki/Poclbm-mod">poclbm-mod</a>). Während ich diesen Post geschrieben habe, hat mein BitCoin Mining Client entspannt auf meiner Geforce 8600 GS mit nahezu niedlichen 950 KiloHashes/s vor sich hin gemined.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1689/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Beats &#124; Eine in Ruby geschriebene Drummachine</title>
		<link>http://noqqe.de/archives/1680</link>
		<comments>http://noqqe.de/archives/1680#comments</comments>
		<pubDate>Sun, 22 May 2011 18:38:54 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[beats]]></category>
		<category><![CDATA[drummachine]]></category>
		<category><![CDATA[drums]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1680</guid>
		<description><![CDATA[Neulich habe ich voller Begeisterung das Drummachine Projekt Beats entdeckt. Beats stellt so in etwa die Musicbox für Nerds dar. In einem Verzeichnis mit einem Set an *.wav Dateien (wohl der Standard) legt man eine Art Konfigurationsdatei, welche durch Beats interpretiert wird. In einer gewissen Syntax beschreibt man dieses Lied und dessen Abfolge. Das Traurige [...]]]></description>
			<content:encoded><![CDATA[<p>Neulich habe ich voller Begeisterung das <a href="http://beatsdrummachine.com/">Drummachine</a> Projekt <a href="https://github.com/jstrait/beats/">Beats</a> entdeckt. Beats stellt so in etwa die Musicbox für Nerds dar. In einem Verzeichnis mit einem Set an *.wav Dateien (wohl der Standard) legt man eine Art Konfigurationsdatei, welche durch Beats interpretiert wird. In einer gewissen Syntax beschreibt man dieses Lied und dessen Abfolge.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/05/6459_d5e4.jpeg"><img src="http://blog.n0q.org/wp-uploads/2011/05/6459_d5e4.jpeg" alt="" title="6459_d5e4" width="500" height="491" class="aligncenter size-full wp-image-1681" /></a></p>
<p>Das Traurige an der Sache ist eigentlich lediglich, dass ich mir bewusst geworden bin, wie wenig Kreativität/Können ich im musikalischen Bereich vorzuweisen habe. Teilweise sind beim Herumexperimentieren zwar Interessante Ergebnisse entstanden, aber nichts wofür ich mich nicht schämen müsste ;) </p>
<p><code>$ beats song1.txt song.wav<br />
$ open song.wav</code></p>
<p>Ich hab dann allerdings kurzer Hand begonnen, den Vorgang zu automatisieren. Erst wollte ich es outsourcen, aber dann habe ich es doch automatisiert. Da die ganze &#8220;Ich baue mir ein neues Lied&#8221;-Sache nur auf einem einzigen File beruht, dachte ich mir dass sich das mit Sicherheit auch automatisch generieren lässt. </p>
<p>Das Skript das dabei herauskam, taufte ich randombeats. Wie alles was ich in letzter Zeit tue habe ich es natürlich auf github veröffentlicht. </p>
<p><a href="https://github.com/noqqe/randombeats">https://github.com/noqqe/randombeats</a></p>
<p>Benutzung: </p>
<p>Ins jeweilige Verzeichnis mit den Roh-Daten kopieren/wechseln und Skript ausführen. </p>
<p><code>$ git clone http://github.com/noqqe/randombeats<br />
$ cp randombeats/randombeats.bash /path/to/music<br />
$ cd /path/to/music<br />
$ ./randombeats.bash > randomsong.txt<br />
$ beats randomsong.txt<br />
$ open randomsong.wav</code></p>
<p>Raus kommen allerlei sehr Interessante und manchmal auch schöne Rhythmen. Aber manchmal auch akkute Ohrenschmerzen verursachen. Ein paar davon sammle ich mittlerweile in einem separaten Branch im Git-Repo. Diesen kann ich aber nicht uploaden, weil die größe meines Github Accounts auf 300MB beschränkt ist. Aber vielleicht finde ich anderweitig Möglichkeiten die Ergebnisse zu publizieren. </p>
<p>Mittlerweile habe ich  folgenden Befehl in einer Schleife laufen. </p>
<p><code>./randombeats.bash > rnd.txt &#038;&#038; beats rnd.txt &#038;&#038; open rnd.wav </code></p>
<p>An Feedback, Kritik oder Anmerkungen zu Verbesserungen an den Eckdaten des Skripts bin ich wie immer sehr interessiert :) </p>
<p>Update: Kurze WAV-Files generiert und als Beispiel hochgeladen.</p>
<p><a href='http://blog.n0q.org/wp-uploads/2011/05/rnd.mp3'>randombeats example 1</a><br />
<a href='http://blog.n0q.org/wp-uploads/2011/05/wheep.mp3'>randombeats example 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1680/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://blog.n0q.org/wp-uploads/2011/05/rnd.mp3" length="685386" type="audio/mpeg" />
<enclosure url="http://blog.n0q.org/wp-uploads/2011/05/wheep.mp3" length="1532070" type="audio/mpeg" />
		</item>
		<item>
		<title>Shell-Zauberei &#124; Pidgin Chat-Nachrichten zählen</title>
		<link>http://noqqe.de/archives/1672</link>
		<comments>http://noqqe.de/archives/1672#comments</comments>
		<pubDate>Tue, 03 May 2011 10:04:34 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Shell-Zauberei]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[ICQ]]></category>
		<category><![CDATA[libpurple]]></category>
		<category><![CDATA[messages]]></category>
		<category><![CDATA[nachrichten]]></category>
		<category><![CDATA[pidgin]]></category>
		<category><![CDATA[purble]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1672</guid>
		<description><![CDATA[Code cd $HOME/.purple/logs/icq/987654321 cat */** &#124; grep "^&#60;font" &#124; sed -e 's#.*\ &#60;b&#62;\(.*\):&#60;/b&#62;.*#\1#g' &#124; grep -v "^&#60;"&#124;sort &#124; uniq -c &#124; sort -rn Hintergrund Heute ist der 3. Mai und morgen ist meine Abschlussprüfung zum Fachinformatiker. Natürlich sollte man da andere Sachen machen, als Shell Zeilen zu schreiben, aber mein Kopf fühlt sich von den [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Code</strong><br />
<code>cd $HOME/.purple/logs/icq/987654321<br />
cat */** | grep "^&lt;font" | sed -e 's#.*\ &lt;b&gt;\(.*\):&lt;/b&gt;.*#\1#g' | grep -v "^&lt;"|sort | uniq -c | sort -rn</code></p>
<p><strong>Hintergrund</strong><br />
Heute ist der 3. Mai und morgen ist meine Abschlussprüfung zum Fachinformatiker. Natürlich sollte man da andere Sachen machen, als Shell Zeilen zu schreiben, aber mein Kopf fühlt sich von den letzten beiden Wochen, die ich während meines Lernurlaubs damit verbracht habe jegliches während meiner Ausbildung vermitteltes theoretisches Wissen in mich aufzusaugen, sowas von überfüllt an, dass ich während einer Lernpause kurz den Instant-Messenger meiner Wahl angeschmissen habe. Kurz darauf wollte ich wissen, wie viele Nachrichten ich wohl seit Neuinstallation schon erhalten und gesendet habe.</p>
<p><strong>Funktion</strong><br />
Die Zeile bewirkt im Grunde nicht anderes als alle Files auszugeben, nach Zeilen zu suchen die auf das Schema passen die dem einer &#8220;Nachricht gesendet&#8221; Zeile ähneln und sortiert, zählt und sortiert diese wieder. Vorrausgesetzt die Logfiles sind durch Pidgin im HTML Format abgespeichert. </p>
<p><em>About: &#8220;<a href="http://noqqe.de/archives/1627">Ein Byte der Shellzauberei</a>&#8221; &#8211; Kategorie: <a href="http://noqqe.de/archives/category/shell-zauberei">http://noqqe.de/archives/category/shell-zauberei</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RT &#124; RequestTracker-Stats</title>
		<link>http://noqqe.de/archives/1649</link>
		<comments>http://noqqe.de/archives/1649#comments</comments>
		<pubDate>Fri, 29 Apr 2011 09:55:33 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Addon]]></category>
		<category><![CDATA[BestPractical]]></category>
		<category><![CDATA[modul]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[requesttracker]]></category>
		<category><![CDATA[rt]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1649</guid>
		<description><![CDATA[Oft angesprochen und trotzdem bisher nicht die Zeit gefunden drüber zu bloggen: RequestTracker-Stats. Vor kurzem habe ich mir das Balkendiagramm-Shellskript statistical gebastelt. Nachdem es so gut funktionierte hatte, hatte ich mir überlegt, was ich damit jetzt anfangen könnte. Ich brauchte einen großem Umfang an Datenmengen, den ich visualisieren konnte (abgesehen von zufällig erzeugten Daten). Am [...]]]></description>
			<content:encoded><![CDATA[<p>Oft  angesprochen und trotzdem bisher nicht die Zeit gefunden drüber zu bloggen: <a href="http://github.com/noqqe/RequestTracker-Stats">RequestTracker-Stats</a>. Vor kurzem habe ich mir das <a href="http://noqqe.de/archives/1611">Balkendiagramm-Shellskript</a> <a href="http://github.com/noqqe/statistical">statistical</a> gebastelt. Nachdem es so gut funktionierte hatte, hatte ich mir überlegt, was ich damit jetzt anfangen könnte. Ich brauchte einen großem Umfang an Datenmengen, den ich visualisieren konnte (abgesehen von zufällig erzeugten Daten). Am Besten noch etwas, dass Sinn macht :) </p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/04/3927_ede8_550.jpeg"><img src="http://blog.n0q.org/wp-uploads/2011/04/3927_ede8_550.jpeg" alt="" title="3927_ede8_550" width="500" height="416" class="aligncenter size-full wp-image-1655" /></a></center></p>
<p>At Work war &#8220;Ticket-Squashing&#8221; immer wieder ein gutes Stichwort in unserem Ticketsystem. Wir benutzen den <a href="http://bestpractical.com/rt/">RequestTracker</a> von <a href="http://bestpractical.com">BestPractical</a> und ich hatte mir überlegt ein kleines Skript zu basteln, welches die Anzahl der erledigten Tickets pro User aus der MySQL Datenbank ausliesst und dann im Key:Value Format an statistical übergibt. Das hat auch ganz gut funktioniert. </p>
<pre><code>Resolved ticket statistic for this month (April)
---------------------------------------------------
Tracy		|##################### (22)
Amelie		|##################### (22)
Kiri		|############ (13)
Tersina		|########## (11)
Birgitta	|######### (10)
Justine		|######### (10)
Frank		|######## (9)
Betteann	|####### (8)
Cyndy		|# (2)
Kaleena		|# (2)
Kiah		|# (2)
Roxy		| (1)
Estella		| (1)
Marj		| (1)</code></pre>
<p>Allerdings haben sich dann im Laufe des Tages immer mehr (ich nenne es mal statistische-) Anwendungsmöglichkeiten ergeben. Zum Beispiel die Anzahl der erstellten Tickets pro Benutzer: </p>
<pre><code>Most active creators for this month (April)
---------------------------------------------------
Christel@company.com	|############ (13)
Sydelle@company.com	|########### (12)
Birgitta@company.com	|######### (10)
Ainsley@company.com	|######## (9)
Halette@company.com	|##### (6)
Martguerita@comp	|##### (6)
Tracy@company.com	|#### (5)
care@company.com	|#### (5)
fooo@company.com	|### (4)
Christyna@company.com	|## (3)
Ethel@company.com	|## (3)
[...]</code></pre>
<p>Oder die Anzahl der Tickets pro Kategorie: </p>
<pre><code>Queues for this month (April)
---------------------------------------------------
General		|##################### (22)
Web		|##################### (22)
Management	|#################### (21)
WebContent	|################### (20)
IT-Interal	|################ (17)
Categ		|############### (16)
Access		|############### (16)
E-Mail-Service	|############## (15)
SWAN		|########### (12)
Domain-Service	|########## (11)
Junk		|########## (11)
DSL		|## (3)
Other		|# (2)
Hotspot-Service	|# (2)
Buchhaltung	| (1)</code></pre>
<p>Um nur ein paar Beispiele zu nennen. Leider waren es zu diesem Zeitpunkt noch etliche separate Skripte, was mir eigentlich nicht gefiel. Darum habe ich es in ein modular aufgebautes Statistik Umgebungstool umgewandelt. Module sind (de-)aktivierbar und lassen sich leicht in das Rahmenprogramm einfügen. Letztendlich gibt es jetzt einen ganzen Satz von Modulen der unter <a href="http://github.com/noqqe/RequestTracker-Stats">Github</a> zur Verfügung steht. </p>
<p><code>git clone git://github.com/noqqe/RequestTracker-Stats.git</code></p>
<p>Sollte außer uns noch jemand RequestTracker Stats verwenden und Interesse daran haben, ist er herzlich eingeladen die Stats Umgebung zu benutzen ggf. auch Module hinzuzufügen oder zu verbessern :) Eine (ich hoffe doch) ausreichende Anleitung zur Benutzung befindet sich im README des Github Repos. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1649/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shell-Zauberei &#124; Namensliste in MySQL Datenbank einspeisen</title>
		<link>http://noqqe.de/archives/1645</link>
		<comments>http://noqqe.de/archives/1645#comments</comments>
		<pubDate>Fri, 29 Apr 2011 08:30:52 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Shell-Zauberei]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[namen]]></category>
		<category><![CDATA[namensliste]]></category>
		<category><![CDATA[requesttracker]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[txt]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1645</guid>
		<description><![CDATA[Code for x in $(mysql --batch -u root --password=passw0rd -e "USE rtdb; SELECT DISTINCT id FROM Users;" &#124; grep -v ^id); do mysql -u root --password=passw0rd -e "USE rtdb; UPDATE Users SET Name=\"$(sed -n $(($RANDOM % $(cat Names &#124; wc -l) +1 ))p Names)\" WHERE id=\"$x\" ;" ; done Hintergrund Wie auch schon beim letzten [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Code</strong><br />
<code>for x in $(mysql --batch -u root --password=passw0rd -e "USE rtdb; SELECT DISTINCT id FROM Users;" | grep -v ^id); do mysql -u root --password=passw0rd -e "USE rtdb; UPDATE Users SET Name=\"$(sed -n $(($RANDOM % $(cat Names | wc -l) +1 ))p Names)\" WHERE id=\"$x\" ;" ; done</code></p>
<p><strong>Hintergrund</strong><br />
Wie auch schon beim letzten mal dreht es sich wieder um die Anonymisierung der <a href="http://bestpractical.com/rt/">RequestTracker</a> Datenbank für die ich zur Zeit an einem <a href="http://github.com/noqqe/RequestTracker-Stats">Statistik Tool </a>arbeite. Diesmal will ich aber nicht die EmailAdressen ändern, sondern die Namen der Benutzer. Da ich diese nicht so einfach generieren lassen kann, habe ich mir aus dem Interweb eine <a href="http://www.ta7.de/txt/listen/list0013.htm">Liste mit Namen</a> besorgt und mit diesen Namen die eingetragenen überschrieben. Jetzt kann ich endlich den Post über das Statistik Tool schreiben und mit Beispielen versehen :) </p>
<p><strong>Funktion</strong><br />
Das Ganze läuft wie folgt ab: Für jede ID die ich mittels Datenbank-Verbindung in die For-Schleife einbette, setze ich einen UPDATE Befehl ab, der die Tabelle &#8220;Users&#8221; und das Feld &#8220;Name&#8221; aktualisiert. Der Aktualisierungsvorgang passiert aber generisch. Das heisst ich setze den Namen des Users auf einen zufällig ausgewählten neuen Namen aus der Datei &#8220;Names&#8221;. Das habe ich mit sed -n <NUMMER>p FILE gelöst, was sicher auch schöner geht, aber für meine Zwecke hat es ausgereicht.</p>
<p><em>About: &#8220;<a href="http://noqqe.de/archives/1627">Ein Byte der Shellzauberei</a>&#8221; &#8211; Kategorie: <a href="http://noqqe.de/archives/category/shell-zauberei">http://noqqe.de/archives/category/shell-zauberei</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1645/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell-Zauberei &#124; Emailadressen in MySQL Datenbank anonymisieren</title>
		<link>http://noqqe.de/archives/1635</link>
		<comments>http://noqqe.de/archives/1635#comments</comments>
		<pubDate>Sat, 23 Apr 2011 16:53:04 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Shell-Zauberei]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[einzeiler]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[onliner]]></category>
		<category><![CDATA[requesttracker]]></category>
		<category><![CDATA[rt]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1635</guid>
		<description><![CDATA[Code for x in $(mysql -u root --password=passw0rd --batch -e "use rtdb; select id from Users" &#124; grep -v ^id); do mysql -u root --password=passw0rd -e "use rtdb; UPDATE Users SET EmailAddress=\"$x@mail.com\" WHERE id=\"$x\"; "; done Hintergrund Ich arbeite seit kurzem an einem kleinen Statistik Tool für den RequestTracker von Bestpractical. Einem Ticket-System. Um Beispiele [...]]]></description>
			<content:encoded><![CDATA[<p>
<b>Code</b><br />
<code>for x in $(mysql -u root --password=passw0rd --batch -e "use rtdb; select id from Users" | grep -v ^id); do mysql -u root --password=passw0rd -e "use rtdb; UPDATE Users SET EmailAddress=\"$x@mail.com\" WHERE id=\"$x\"; "; done</code><br />
<b>Hintergrund</b><br />
Ich arbeite seit kurzem an einem kleinen Statistik Tool für den <a href="http://bestpractical.com/rt/">RequestTracker</a> von Bestpractical. Einem Ticket-System. Um Beispiele für dieses Tool generieren zu können, brauchte ich eine manipulierte Datenbank. Datenschutz. EmailAdressen mit anderem Inhalt überschreiben.</p>
<p><b>Funktion</b><br />
Im Endeffekt ist es nur eine For-Schleife, die alle User ID&#8217;s aus der RequestTracker Datenbank (Table: Users) ausliesst und für jeden gefundenen Eintrag die EmailAdresse auf &#8220;ID@mail.com&#8221; setzt. So bleiben die Daten auswertbar, sind aber &#8220;anonym&#8221;.</p>
<p><em>About: &#8220;<a href="http://noqqe.de/archives/1627">Ein Byte der Shellzauberei</a>&#8221; &#8211; Kategorie: <a href="http://noqqe.de/archives/category/shell-zauberei">http://noqqe.de/archives/category/shell-zauberei</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1635/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell-Zauberei &#124; Eine Einleitung</title>
		<link>http://noqqe.de/archives/1627</link>
		<comments>http://noqqe.de/archives/1627#comments</comments>
		<pubDate>Sat, 23 Apr 2011 14:57:49 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Shell-Zauberei]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[einzeiler]]></category>
		<category><![CDATA[kategorie]]></category>
		<category><![CDATA[oneliner]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1627</guid>
		<description><![CDATA[Ich möchte mit diesem Post eine kleine Reihe von Blogposts beginnen. Diese Eintragsreihe möchte ich in unbestimmter Länge und Frequenz in meinen Blog etablieren. Der Gedanke zu dieser Aktion, die ich &#8220;Ein Byte der Shell-Zauberei&#8221; nennen werde, geistert mir schon seit ca. zwei Monaten im Kopf herum. Mein Job als Administrator von Debian/Linux Systemen verlangt [...]]]></description>
			<content:encoded><![CDATA[<p>Ich möchte mit diesem Post eine kleine Reihe von Blogposts beginnen. Diese Eintragsreihe möchte ich in unbestimmter Länge und Frequenz in meinen Blog etablieren. Der Gedanke zu dieser Aktion, die ich &#8220;Ein Byte der Shell-Zauberei&#8221; nennen werde, geistert mir schon seit ca. zwei Monaten im Kopf herum.</p>
<p>Mein Job als Administrator von Debian/Linux Systemen verlangt von mir oftmals Automatisierung und Shell-Scripting in mal größerem und auch kleinerem Umfang. Oft lassen sich derartige Aufgaben sehr leicht in einem Einzeiler/Oneliner auf dem Terminal lösen. Ich mag es, wenn Lösungen schnell und einfach durchzuführen sind, besonders mit <a href="http://de.wikipedia.org/wiki/Bourne-again_shell">Bash</a>. Der Anspruch dieser Aufgaben variiert genauso wie deren Umfang. Die &#8220;Zauberei&#8221; im Titel der Aktion darf also wahlweise auch etwas ironisch verstanden werden.</p>
<p>Als mir die Idee kam, dachte ich mir ehrlich gesagt, dass ich für eine solche Reihe wahrscheinlich nicht genügend Kanonenfutter hätte. Sprich, genügend einzeilige Bash Zauberei, die ich im Kontext dieser Reihe posten könnte. Ich beschloss den Gedanken noch nicht sofort zu verwerfen und stattdessen ein paar dieser Einzeiler zu speichern und zu sehen wie viele es werden.</p>
<p>In den letzten Zwei Monaten waren das jetzt ca. 12 Stück die ich als &#8220;Blogwürdig&#8221; empfand. Ich denke, das reicht mir für die Kategorie. </p>
<p><strong>Aufbau</strong></p>
<p>Die Posts werden immer gleich aussehen und folgende Punkte enthalten:</p>
<ul>
</p>
<li>Code</li>
<li>Hintergrund</li>
<li>Funktion</li>
<li>About &#8220;Shell-Zauberei&#8221;</li>
</ul>
<p><strong>Informationen</strong></p>
<p>Kategorie URL: <a href="http://noqqe.de/archives/category/shell-zauberei">http://noqqe.de/archives/category/shell-zauberei</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1627/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Commandline Tools &#124; PDFs zusammenführen</title>
		<link>http://noqqe.de/archives/1622</link>
		<comments>http://noqqe.de/archives/1622#comments</comments>
		<pubDate>Wed, 20 Apr 2011 10:14:50 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[combine]]></category>
		<category><![CDATA[kombinieren]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[pdfs kombinieren]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[zusammenführen]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1622</guid>
		<description><![CDATA[Aufgrund meiner aktuell vorherrschenden Bewerbungsphase wollte ich ein paar PDF Dateien (hauptsächlich Zertifikate und Zeugnisse) in eine PDF Datei zusammenführen. Auf der Suche nach einem derartigen Programm liefen mir natürlich allerlei (dem anschein nach) hübsche Windows Tools für diese Aufgabe über den Weg. Wie schon oft, fand ich dann aber im Unixboard meine Antwort. Das [...]]]></description>
			<content:encoded><![CDATA[<p>Aufgrund meiner aktuell vorherrschenden Bewerbungsphase wollte ich ein paar PDF Dateien (hauptsächlich Zertifikate und Zeugnisse) in <strong>eine</strong> PDF Datei zusammenführen. Auf der Suche nach einem derartigen Programm liefen mir natürlich allerlei (dem anschein nach) hübsche Windows Tools für diese Aufgabe über den Weg. Wie schon oft, fand ich dann aber <a href="http://www.unixboard.de/vb3/showthread.php?31512-PDF-Dateien-%28mehrere%29-zusammenf%FChren-in-ein-PDF">im Unixboard meine Antwort</a>.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/04/Adobe_PDF.png"><img class="aligncenter size-full wp-image-1623" title="Adobe_PDF" src="http://blog.n0q.org/wp-uploads/2011/04/Adobe_PDF.png" alt="" width="100" height="100" /></a></center></p>
<p>Das Commandline Tool <strong><a href="http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/">pdftk</a></strong>. Wunderbar für <a href="http://packages.debian.org/squeeze/pdftk">Debian</a> und <a href="http://packages.ubuntu.com/natty/pdftk">Ubuntu</a> paketiert.</p>
<p><code>$ sudo aptitude install pdftk</code></p>
<p>Ich muss trotzdem zugeben, dass die Syntax mir etwas ungewöhnlich erschien, aber nicht unbezwingbar ist :) Nach ein paar Blicken in die Manpage, kam ich auch da an wo ich wollte.</p>
<pre><code>$ pdftk novell-cert.pdf ripe.pdf lpic-1.pdf cisco-ccna1.pdf cat output Zertifikate.pdf
  \___/ \________________________________________________/  \_/ \____________________/
    |                            |                           |             |
    |                            |                           |             \- Ausgabe an
    |                            |                           |                Zertifikate.pdf
    |                            |                           |
    |                            |                           \- Ausgabe der PDFs
    |                            |
    |                            \- Angabe aller zu kombinierenden PDFs
    |
    \- Programmaufruf</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1622/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>statistical &#124; It&#8217;s about internal functions.</title>
		<link>http://noqqe.de/archives/1611</link>
		<comments>http://noqqe.de/archives/1611#comments</comments>
		<pubDate>Sat, 16 Apr 2011 14:48:23 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[balken]]></category>
		<category><![CDATA[balkendiagramm]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[statistic]]></category>
		<category><![CDATA[statistical]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1611</guid>
		<description><![CDATA[Als ich statistical auf GitHub hochgepushed habe, fing ich an mir Gedanken über die Leistungsfähigkeit des Scripts zu machen. Ich meine es verhielt sich in Anbetracht der Daten (in meinen Augen) wunderbar. Die Key Länge wird bis zu 4 Tab-Längen mit skaliert, genauso wie die Values, in Form der Bars. Aber wie verhält sich es [...]]]></description>
			<content:encoded><![CDATA[<p>Als ich <a href="http://github.com/noqqe/statistical">statistical</a> auf GitHub hochgepushed habe, fing ich an mir Gedanken über die Leistungsfähigkeit des Scripts zu machen. Ich meine es verhielt sich in Anbetracht der Daten (in meinen Augen) wunderbar. Die Key Länge wird bis zu 4 Tab-Längen mit skaliert, genauso wie die Values, in Form der Bars. Aber wie verhält sich es mit größeren Datenmengen?</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/04/3913_12dd_450.jpeg"><img class="aligncenter size-full wp-image-1612" title="ORLY?" src="http://blog.n0q.org/wp-uploads/2011/04/3913_12dd_450.jpeg" alt="" width="450" height="366" /></a></center></p>
<p>Diesbezüglich wollte ich eine kleine For-Schleife benutzen um mehrere zufällige Werte zu generieren und in statistical  zu pipen.</p>
<p><code>time for x in $(seq 1 6000); do echo "$x:$RANDOM" ; done | statistical &gt; /dev/null</code></p>
<p><script src="https://gist.github.com/921795.js?file=gistfile1.sh"></script> Das Ergebnis war mit 6000 Datensätzen und guten 7 Minuten relativ ernüchternd. Vor kurzem hat mich dann auch noch <a href="http://uninformativ.de">Vain</a> via GitHub auf die Geschwindigkeit von statistical hingewiesen. In <a href="https://github.com/vain/statistical">seinem Fork</a>, hat er alle extern spawnenden Befehle gegen Bash interne Funktionen ausgetauscht. Siehe da:  </p>
<p><code> real    0m7.788s<br />
user    0m7.610s<br />
sys     0m0.250s</code></p>
<p> Wahnsinn oder? Durch den Austausch von awk und grep durch interne Bash Funktionen wird das ganze ernsthaft 23x mal schneller. Vielen Dank an Vain an dieser Stelle!</p>
<p><script src="https://gist.github.com/923159.js?file=gistfile1.diff"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1611/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>statistical &#124; Statistiken visualisieren im Terminal</title>
		<link>http://noqqe.de/archives/1603</link>
		<comments>http://noqqe.de/archives/1603#comments</comments>
		<pubDate>Thu, 14 Apr 2011 16:55:10 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[alice]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bob]]></category>
		<category><![CDATA[konsole]]></category>
		<category><![CDATA[linus]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[Statistiken]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1603</guid>
		<description><![CDATA[Mir erschien es einen kurzen Moment lang für sinnvoll ein kleines Shell Tool zu haben, welches mir aus einer Liste von Key:Value Paaren eine Balkenstatistik baut und visualisiert. Wie in etwa $ statistical john:12 alice:5 linus:7 bob:1. Mir gefiel die Idee einfach alles mögliche in meinem Terminal ansehen zu können. Relativ schnell stieß ich aber [...]]]></description>
			<content:encoded><![CDATA[<p>Mir erschien es einen kurzen Moment lang für sinnvoll ein kleines Shell Tool zu haben, welches mir aus einer Liste von Key:Value Paaren eine Balkenstatistik baut und visualisiert. Wie in etwa <strong>$ statistical john:12 alice:5 linus:7 bob:1</strong>. Mir gefiel die Idee einfach alles mögliche in meinem Terminal ansehen zu können.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/04/1923_a9bc.jpeg"><img class="aligncenter size-full wp-image-1604" title="Muppets" src="http://blog.n0q.org/wp-uploads/2011/04/1923_a9bc.jpeg" alt="" width="438" height="350" /></a></center></p>
<p>Relativ schnell stieß ich aber an eine Grenze. Diese hieß &#8220;Windowsize&#8221;. Ich konnte nicht ohne bedenken eine Schleife die die Value Werte zählt bauen, die dementsprechend viele Zeichen anhängt. Denn bei Zahlen &gt;10000 wird das ziemlich unlesbar :)</p>
<pre><code> while [ $COUNTER -lt $VALUE ]; do
        ((COUNTER++))
        echo -n "$OUTPUTCHAR"
        if [ $COUNTER -ge $VALUE ]; then
            echo
        fi
    done</code></pre>
<p>Ich brauchte ein Schema, welches alle Werte einließt und eine skalierbare Basis für alle Werte schafft. Ich entschied mich für eine simple Lösung.</p>
<pre><code>while [ ${FACTORCOUNT} -lt $(( ${#MAXVALUE} - 2 )) ]; do
FACTOR="${FACTOR}0"
    ((FACTORCOUNT++))
done
</code></pre>
<p>Letztenendes kam dann folgendes Verhalten bei meinem Key:Value Statistik Script raus. Ich mags.</p>
<pre><code># Beispiel
$ statistical john:433 alice:49 linus:12 bob:231
john    |###########################################
alice   |####
linus   |#
bob     |#######################</code></pre>
<p>Damit lassen sich sogar teilweise sinnvolle Sachen produzieren. Zum Beispiel die Anzahl der Commits innerhalb eines Git-Repositories. Ich habe hier als Beispiel mal <a href="http://github.com/revans/bash-it">bash-it</a> aufgeführt:</p>
<pre><code>for a in $(git shortlog -sn --all | cut -f2 | cut -f1 -d' '); do echo -n "$a:" ; git log $LOGOPTS --all --numstat --format="%n" --author=$a | cut -f3 | sort -iu | wc -l; done  | statistical
Mark          |##################
Robert        |#########################################################################
Florian       |##############
Jesus         |######
John          |##############
Rich          |########
Piotr         |###
Travis        |####
Fedyashev     |##
zerobearing2  |####
Andy          |###
Daniel        |####
Jeff          |##
Karl          |##
Robert        |#########################################################################
Sirupsen      |##
</code></pre>
<p>Sollte jemand Interesse daran hegen, das Skript auch mal auszuprobieren es befindet sich wie immer auf Github: <a href="http://github.com/noqqe/statistical">http://github.com/noqqe/statistical</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1603/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZRE &#124; SQL Statistik Modul</title>
		<link>http://noqqe.de/archives/1566</link>
		<comments>http://noqqe.de/archives/1566#comments</comments>
		<pubDate>Sat, 26 Mar 2011 12:45:37 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[chewbacca]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[han solo]]></category>
		<category><![CDATA[modul]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[zombie]]></category>
		<category><![CDATA[zombie revolution environment]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1566</guid>
		<description><![CDATA[Ich möchte kurz ein Wort über das SQL Modul verlieren, welches die Statistiken des permanent laufenden Zombie Environments aufzeichnet. Wie mit Sicherheit schon überall auf dem Planeten Erde bekannt ist, passieren in ZRE Events. Diese Hand voll Events lösen (wie der Name vielleicht schon suggeriert) Geschehnisse in innerhalb des Environments aus, welche es gilt statistisch [...]]]></description>
			<content:encoded><![CDATA[<p>Ich möchte kurz ein Wort über das SQL Modul verlieren, welches die Statistiken des permanent laufenden <a href="http://zombies.n0q.org">Zombie Environments</a> aufzeichnet. Wie mit Sicherheit schon überall auf dem Planeten Erde bekannt ist, passieren in ZRE Events. Diese Hand voll Events lösen (wie der Name vielleicht schon suggeriert) Geschehnisse in innerhalb des Environments aus, welche es gilt statistisch auszuwerten und darzustellen.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/0744_a999_450.gif"><img class="aligncenter size-full wp-image-1567" title="han_solo" src="http://blog.n0q.org/wp-uploads/2011/03/0744_a999_450.gif" alt="Han Solo &amp; Chewbacca" width="450" height="284" /></a></center></p>
<p>Wie aber erfasse ich solche Informationen am Besten. Ich hatte ehrlich gesagt keine große Lust, in jedes der Events einzeln eine SQL-Verbindung aufzubauen und den gewünschten Query abzusetzen. Ganz zu schweigen von der Problemfallbehandlung (MySQL nicht installiert, Modul in Config nicht aktiviert, MySQL nicht erreichbar usw.) die ich in jedem Event hätte extra behandeln müssen.</p>
<pre><code>events/
├── attack.humans.event
├── attack.zombies.event
├── born.humans.event
├── born.zombies.event
├── building.humans.event
├── collecting.zombies.event
├── die.humans.event
├── die.zombies.event
├── infos.event
├── stats.humans.event
├── stats.zombies.event
├── support.humans.event
├── support.zombies.event
└── weather.event</code></pre>
<p>Stattdessen entschied ich mich ein kleines Modul in Bash zu schreiben, welches eine Hand voll übergebener Daten annimmt und dann in die konfigurierte Datenbank schreibt.  Hier am Beispiel des weather.event</p>
<p><code>case $nature_msg in<br />
1) echo "A volcano explodes." ; zresql weather vulcano ;;<br />
2) echo "An earthquake hits the city." ; zresql weather earthquake ;;<br />
3) echo "A hurricane hits the city." ; zresql weather hurricane ;;<br />
esac</code></p>
<p>Als erstes übergeben wird immer der gewünschte Modus, in den zresql den Datensatz einordnen soll, danach alle weiteren Informationen die der Struktur nach erforderlich sind.</p>
<p><code># Hurricane<br />
$ zresql weather hurricane<br />
# Humans gewinnen einen Kampf und vernichten 643 Zombies<br />
$ zresql kill human 643</code></p>
<p>Das zresql Modul nimmt die Informationen dann entgegen und leitet es unter den gegebenen Umständen via sqlsend an die Datenbank weiter.</p>
<p><code>[...]<br />
weather) sqlsend "INSERT INTO zre_weather VALUES (NULL, \"$2\", CURRENT_TIMESTAMP);" ;;<br />
kill) sqlsend "INSERT INTO zre_kills VALUES (NULL , \"$2\", \"$3\", CURRENT_TIMESTAMP);" ;;<br />
[...]</code></p>
<p>sqlsend ist im Grunde nur eine weitere kleine Funktion die direkt über Kommandozeile den SQL Query abschickt.</p>
<p><code>sqlsend() {<br />
mysql -e "use $sqldb; $1" --user=$sqluser --password=$sqlpw --host=$sqlhost<br />
}</code></p>
<p>Mit dieser Lösung bin ich eigentlich relativ zufrieden. Über Verbesserungsvorschläge und Kritik freue ich mich natürlich wie immer. Das ganze Modul ist zusehen auf Github:  <a href="https://github.com/noqqe/zombie-revolution-environment/blob/master/lib/sqlstats.library.bash">https://github.com/noqqe/zombie-revolution-environment/blob/master/lib/sqlstats.library.bash</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1566/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offtopic &#124; 3 Jahre Blog</title>
		<link>http://noqqe.de/archives/1536</link>
		<comments>http://noqqe.de/archives/1536#comments</comments>
		<pubDate>Thu, 24 Mar 2011 10:58:24 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1536</guid>
		<description><![CDATA[Vor 3 Jahren hab ich hier den ersten Blog post verfasst. So lange ist das schon her.]]></description>
			<content:encoded><![CDATA[<p>Vor 3 Jahren hab ich hier <a href="http://noqqe.de/archives/421">den ersten Blog</a> post verfasst.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/9922_7807_450.jpeg"><img class="aligncenter size-full wp-image-1573" title="9922_7807_450" src="http://blog.n0q.org/wp-uploads/2011/03/9922_7807_450.jpeg" alt="" width="450" height="336" /></a></center></p>
<p>So lange ist das schon her.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1536/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Persönlicher Eindruck &#124; Chemnitzer Linux Tage 2011</title>
		<link>http://noqqe.de/archives/1538</link>
		<comments>http://noqqe.de/archives/1538#comments</comments>
		<pubDate>Mon, 21 Mar 2011 16:07:05 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[xubuntu]]></category>
		<category><![CDATA[clt]]></category>
		<category><![CDATA[CLT2011]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Erfahrung]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Linux Tage]]></category>
		<category><![CDATA[Linux Tage Chemnitz]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[TeX]]></category>
		<category><![CDATA[tor]]></category>
		<category><![CDATA[ZSH]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1538</guid>
		<description><![CDATA[Nachdem mich die Vorträge letztes Jahr so beeindruckt haben, hab ich mich auch dieses Jahr wieder entschieden die Linux Tage in Chemnitz zu besuchen. Durch einen Ausfall im Debian Team, hatte mir mein Kollege angeboten anstelle des ausgefallenen Mitglieds bei Debian mitzufahren. Was sich im Endeffekt als sehr nice herausstellte. &#160; Freitag Freitag war relativ [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem mich die Vorträge letztes Jahr so beeindruckt haben, hab ich mich auch dieses Jahr wieder entschieden die Linux Tage in Chemnitz zu besuchen. Durch einen Ausfall im Debian Team, hatte mir mein Kollege angeboten anstelle des ausgefallenen Mitglieds bei Debian mitzufahren. Was sich im Endeffekt als sehr nice herausstellte.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/logo.png"><img class="aligncenter size-full wp-image-1540" title="Chemnitzer Linux Tage 2011" src="http://blog.n0q.org/wp-uploads/2011/03/logo.png" alt="" width="250" height="89" align="middle" /></a></center></p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/IMG_0519.jpg"><img class="aligncenter size-medium wp-image-1547" title="CLT2011 Eingang" src="http://blog.n0q.org/wp-uploads/2011/03/IMG_0519-300x225.jpg" alt="" width="300" height="225" /></a></center></p>
<p>&nbsp;</p>
<p><strong>Freitag</strong></p>
<p>Freitag war relativ entspannt. Ankunft und Aufbau des Debian Standes, mexikanisches Essen und danach Treffen mit <a href="http://zeroathome.de/">Ben</a> und Bier auf der Opening Party in der Mensa. Die Turnmatten in der Turnhalle waren auch kuschlig :)</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/IMG_0514_2.jpg"><img class="aligncenter size-medium wp-image-1545" title="CLT2011 Vor Beginn" src="http://blog.n0q.org/wp-uploads/2011/03/IMG_0514_2-300x225.jpg" alt="" width="300" height="225" /></a></center></p>
<p><strong>Samstag</strong></p>
<ul>
<li>Frühstück @ Catering-Tage &#8211; Sehr leckere Sachen.</li>
<li>1. Vortrag:<a href="Storage - aber richtig: DRBD als SAN-Ersatz"> Storage &#8211; Aber richtig von Martin Gerhard Loschwitz</a>. Fand ich persönlich interessant, gerade der iSCSI-DRBD-Ansatz um FibreChannel zu ersetzen gefiel mir sehr gut.</li>
<li>2. Vortrag:<a href="http://chemnitzer.linux-tage.de/2011/vortraege/745"> Provokante Thesen zur IT-Administration von Peer Heinlein</a> Ja, Herr Heinlein. Der Autor des Buchs, welches mich durch die LPIC-1 Prüfung geführt hat sinnierte auf eher komödiantische Art über die typischen Eigenschaften der IT-Dienstleistungsbranche. Hat allerdings Spaß gemacht zuzuhören.</li>
<li>Danach Pause. Erstmal durch die Stände gestöbert, die mittlerweile so gut wie vollzählig anwesend waren. Währenddessen ausgeknobelt, ob der nächste Vortrag Icinga oder Configs mit Git verwalten wird.</li>
<li>3. Vortrag: <a href="http://chemnitzer.linux-tage.de/2011/vortraege/782">Konfigurationsdateien mit Git verwalten von Julius Plenz.</a> Mit bash-it benutze ich ja bereits eine Lösung die für mich zur Verwaltung Teile meines /home gut funktioniert. Aber es schadet ja nie, sich andere Taktiken anzusehen und daraus zu lernen. Genau das habe ich auch erreicht. Julius hatte ein sinnvolles zwei Branches Modell, mit denen er lokale und globale Änderungen seiner Konfigurationsdateien verwaltet. Disziplin und etwas Aufwand sind dafür allerdings nötig. (<a href="http://chemnitzer.linux-tage.de/2011/vortraege/folien/782-config-management.pdf">http://chemnitzer.linux-tage.de/2011/vortraege/folien/782-config-management.pdf</a>)</li>
<li>Hungerbedingt verpasste ich den Vortrag über <em>von C.  Klostermann über </em><a href="http://chemnitzer.linux-tage.de/2011/vortraege/626">Professionelle IT Dokumentation &#8211; Anforderungen aus rechtlicher Sicht</a> Mittagsbuffet schaffte aber Abhilfe.</li>
<li>4. Vortrag: Von H. Uhlig <a href="http://chemnitzer.linux-tage.de/2011/vortraege/736">Dem Hack keine Chance: LAMP sicher betreiben</a>: erwieß sich grade als Administrator von Shared Hosting Systemen als hilfreich und informativ.</li>
<li>5. Vortrag: A. Scherbaum: <a href="http://chemnitzer.linux-tage.de/2011/vortraege/635">Datenbanken von MySQL zu PostgreSQL portieren</a>: Hierzu muss ich sagen, dass ich mir den Ansatz etwas Administrativer vorgestellt habe. Die Feinheiten der Möglichkeiten fernab vom SQL Standart von MySQL und PostgreSQL wurden aber schön ausgeführt und beschrieben. Persönlich aber muss ich gestehen, nicht sagen zu können ob PostgreSQL (abgesehen von dieser Oracle Sache) besser ist als MySQL. Es scheint eben anders zu sein.</li>
<li>6. Vortrag: P. Heinlein: <a href="http://chemnitzer.linux-tage.de/2011/vortraege/742">SPF, DKIM und Greylisting &#8211; Was bringen Absender-Authentifizierung und der neue Spam-Schutz? </a>: Nochmal Herr Heinlein, diesmal über SPF und DKIM als Spam-Schutz sinnierend. Aufklärend auf jedenfall, da ich die beiden Funktionen garnicht kannte und gegen Ende noch 2-12 Worte über Greylisting. Alles in Allem Runde Sache</li>
<li>7. Vortrag: T. Winde<em>: </em><a href="http://chemnitzer.linux-tage.de/2011/vortraege/750">Mit dem Midnight Commander Freiheit leben</a>: Hauptsächlich hat mich Jan&#8217;s Vorliebe für MC in diesen Vortrag getrieben. Es war schön zu sehen, nicht nur Vorträgen von Business-Guys auf den Linux Tagen zu sehen. Ein fast schon &#8220;goldiger&#8221; Vortrag eines älteren Taxi-Unternehmers, der mir trotz geringem Lernerfolg irgendwie gefiel.</li>
<li>Social Event: Wunderbares Buffet mit reichlich zu trinken und zu Essen. Hat im Endeffekt genau dem gedient, für was es gut war. Bier, Essen &amp; Social&#8217;n.</li>
</ul>
<p>&nbsp;</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/IMG_0515.jpg"><img class="aligncenter size-medium wp-image-1546" title="CLT2011" src="http://blog.n0q.org/wp-uploads/2011/03/IMG_0515-225x300.jpg" alt="" width="225" height="300" /></a></center></p>
<p><strong>Sonntag</strong></p>
<ul>
<li>8. Vortrag: Sonntag begann nach einer  weiteren Turnhallen-Nacht mit einem Vortrag <em>von S. Kemter: </em><a href="http://chemnitzer.linux-tage.de/2011/vortraege/690">Höher, Schneller, Weiter &#8211; openSUSE 11.4 </a>: Der auch als <a href="http://karl-tux-stadt.de/ktuxs/">Buergermeister von Karl-Tux-Stadt.de</a> bekannte Redner, gab sich größte Mühe im Einsteigerforum das neue openSUSE, sowie die LTS, stable und unstable Linien vorzustellen.</li>
<li>9. Vortrag: <em>Von Andreas Tille</em> <a href="http://chemnitzer.linux-tage.de/2011/vortraege/636">Ein Jahr OpenStreetMap</a>: Im Einsteigerforum ging es dann für mich auch gleich weiter mit einem (für mich komplett unbekannten) Thema. OpenStreetMap und seine Anwendung. Andreas, der selbst erst ca. 1 Jahr mit OpenStreetMap arbeitet, klärte die Zuhörer über all das auf, was er gerne von Anfang an über das Projekt gewusst hätte. War sehr schön gemacht und hat mir super gefallen. Dem ansonsten überfüllten Raum scheinbar auch.</li>
<li>10. Vortrag<em>: H. Voß </em><a href="http://chemnitzer.linux-tage.de/2011/vortraege/720"><em> </em>Erstellung großer und größter Dokumente mit dem Satzsystem TeX</a>: Ich muss sagen das meine Definition von &#8220;große Dokumente&#8221; ca. 1000 Seiten vor dem begonnen hatte die der Redner als große Dokumente definierte. Wenn so ein LaTeX Dokument mal länger läuft, als ein Kaffee hält, ist es eben viel :)</li>
<li>Mittags ließ ich mich dann von Julius (vom Git-Vortrag) nochmal einen Schritt in Zsh einführen, da sich am Social-Event rausgestellt hat, das er der Autor von <a href="https://www.opensourcepress.de/index.php?26&amp;backPID=178&amp;tt_products=198">Zsh beim OpenPress Verlag</a> ist. Gab ehrlichgesagt vieles, bei dem ich nicht schlecht geschaut hab. &#8230; Wenn ich noch Zeit fände mir das alles einzuprägen&#8230; :)</li>
<li>11. Vortrag:<em> J. Kubieziel: </em><a href="http://chemnitzer.linux-tage.de/2011/vortraege/796">Tor Bridges &#8212; Eine Brücke für freie Information</a>: Danach ließ ich mich dann über die Risiken und Nebenwirkungen von Tor-Bridges aufklären. War sehr aufschlussreich. Langfristiges Interesse == unvermeidbar ;)</li>
<li>Stand abbauen &#8211; Ab nach Hause ;)</li>
</ul>
<p>Im großen und ganzen war es wirklich sehr schön und interessant, viele Leute und Projekte näher kennenzulernen. Die Zahl der Projekte die mich interessieren ist wiedermal gewachsen, die Zahl für die ich die Energie/Zeit habe mich auseinanderzusetzen bleibt aber leider wie immer gleich.</p>
<p>Und gerade als ich mich daran gewöhnt habe, dass am Rednerpult intelligente Leute stehen die Ahnung haben von dem was Sie tun, muss ich wieder in die Schule. Bäm Montag.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1538/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZRE &#124; Live Game Mitschnitt via jQuery und PHP</title>
		<link>http://noqqe.de/archives/1520</link>
		<comments>http://noqqe.de/archives/1520#comments</comments>
		<pubDate>Mon, 14 Mar 2011 19:37:05 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[Output]]></category>
		<category><![CDATA[zombie]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1520</guid>
		<description><![CDATA[Eine der Aufgaben, von denen ich wirklich wenig bis keine Ahnung habe, war die Umsetzung der Live Gamebox für ZRE. Die Anforderung hat mich ehrlich gesagt mal in die Nähe des Web2.0 Wahns getrieben, von dem ich mich sonst fernzuhalten versuche. Zumindest von Entwicklerseiten her. ZRE als Daemon (ja, der Teil kommt auch noch) hat [...]]]></description>
			<content:encoded><![CDATA[<p>Eine der Aufgaben, von denen ich wirklich wenig bis keine Ahnung habe, war die Umsetzung der Live Gamebox für ZRE. Die Anforderung hat mich ehrlich gesagt mal in die Nähe des Web2.0 Wahns getrieben, von dem ich mich sonst fernzuhalten versuche. Zumindest von Entwicklerseiten her.</p>
<p><center><a href="http://blog.n0q.org/wp-uploads/2011/03/4625_7f89_390.jpeg"><img class="aligncenter size-full wp-image-1524" title="4625_7f89_390" src="http://blog.n0q.org/wp-uploads/2011/03/4625_7f89_390.jpeg" alt="" width="390" height="323" /></a></center></p>
<p>ZRE als Daemon (ja, der Teil kommt auch noch) hat die Eigenschaft im zufällig wiederkehrendem Rhythmus Output in ein Textfile zu produzieren. Dieses Textfile (game.txt) hat einen Platz im DocumentRoot des Webauftritts zombies.n0q.org (Ist das eigentilch das erste Mal, dass ich die URL erwähne? Ich glaube ja.). Diese möchte ich parsen und über asynchrone Aktualisierung in den Browser des Heimanwenders bringen.</p>
<p>Zuerst musste ich also den PHP Parser Teil schreiben, der mir die letzten 20 Zeilen, oder falls weniger eben diese aus meiner game.txt ausließt.</p>
<pre><code>$input = file($zreoutput);
$resultArray = "";
$index = 20;
if (count($input) &lt; 20)
{
   $index = count($input);
}
for($i=count($input)-$index; $i
{
   $resultArray .= $input[$i]."&lt;br/&gt;";
}
return $resultArray;</code></pre>
<p>Als nächstes war es dann noch nötig diesen zurecht gebogenen Output dann noch selbst aktualisierend in meine Index Datei zu portieren. Dazu ist dann eine JavaScript nötig um die Funktion zu definieren.</p>
<pre><code>setInterval(
    function() {
      $('#gamebox').load('../statics/gamequery.php');
      }, 2000
);</code></pre>
<p>Jetzt mussten sowohl jQuery als auch das JavaScript Snippet in die Index Datei eingebunden werden. Über Kritik und Anregung freue ich mich natürlich wie immer.</p>
<pre><code>&lt;!-- game informations --&gt;
&lt;script src="js/jquery-min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/gamebox.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;!-- game results --&gt;
&lt;div id="gamebox"&gt;&lt;/div&gt;
</code></pre>
<p>An der Stelle hatte ich gleich mal tatkräftige Hilfe eines Arbeitskollegen ;) Danke an dieser Stelle.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1520/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ZRE &#124; Visualisiert.</title>
		<link>http://noqqe.de/archives/1513</link>
		<comments>http://noqqe.de/archives/1513#comments</comments>
		<pubDate>Tue, 08 Mar 2011 18:51:13 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[docs]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[zre]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1513</guid>
		<description><![CDATA[Ja -.- Ich weiss, ich hab Google Docs benutzt. Soweit jedenfalls zur Planung.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.n0q.org/wp-uploads/2011/03/web-zre.png"><img class="aligncenter size-full wp-image-1515" title="web-zre500" src="http://blog.n0q.org/wp-uploads/2011/03/web-zre500.png" alt="" width="500" height="375" /></a></p>
<p>Ja -.- Ich weiss, ich hab Google Docs benutzt. Soweit jedenfalls zur Planung.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1513/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZRE &#124; Zombie Revolution Environment. Im Web!</title>
		<link>http://noqqe.de/archives/1500</link>
		<comments>http://noqqe.de/archives/1500#comments</comments>
		<pubDate>Sun, 06 Mar 2011 14:06:38 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[brains]]></category>
		<category><![CDATA[brainzz]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[JOY Dortmund]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[revolution]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[zombie]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1500</guid>
		<description><![CDATA[Demnächst könnte es unter Umständen zu einer Vielzahl von Posts kommen, die sich um das damals erwähnte Zombie Revolution Environment drehen. Um jetzt nicht unnötig weit auszuholen versuche ich es mal so kurz wie mögilch zu beschreiben. Vor ca. 2 Wochen bekamen wir @ School einen Flyer für den JOY-Dortmund Wettbewerb für Informatik Projekte von [...]]]></description>
			<content:encoded><![CDATA[<p>Demnächst könnte es unter Umständen zu einer Vielzahl von Posts kommen, die sich um das <a href="http://noqqe.de/archives/1314">damals erwähnte</a> <a href="https://github.com/noqqe/zombie-revolution-environment">Zombie Revolution Environment</a> drehen. Um jetzt nicht unnötig weit auszuholen versuche ich es mal so kurz wie mögilch zu beschreiben.</p>
<p>Vor ca. 2 Wochen bekamen wir @ School einen Flyer für den <a href="http://www.joy-dortmund.de/de/home/">JOY-Dortmund Wettbewerb</a> für Informatik Projekte von IT Auszubildenden. Was unter anderem zu dem hier erwähnten Projekt führte. <a href="http://savier.n0q.org/">Holger</a> und ich kamen auf die Idee im Grunde ZRE für das Web umzusetzen. Aber nicht nur um die Welt auf unterhaltende Art und Weise anzeigen zu lassen, sondern viel mehr eine Analyse des Spielverlaufs mit Hilfe von Statistiken zu erstellen.</p>
<p><a href="http://blog.n0q.org/wp-uploads/2011/03/2251_16ea_4801.png"><img class="aligncenter size-full wp-image-1509" title="2251_16ea_480" src="http://blog.n0q.org/wp-uploads/2011/03/2251_16ea_4801.png" alt="" width="464" height="205" /></a></p>
<p>Da das &#8220;Spiel&#8221; ausschließlich aus zufällig generierten Umständen besteht, wäre die Auswertung der Entwicklungen der simulierten Welt evtl. interessant. Grade wenn man so auf Statistiken steht. :/</p>
<h2>Anforderungen</h2>
<ul>
<li>ZRE (in Bash geschrieben) als lauffähigen Daemon umsetzen der Output an eine Stelle generiert. (Bash &#8211; Shell)</li>
<li>Eine geeignete Website erstellen bzw. designen (HTML, CSS, PHP)</li>
<li>Eine Schnittstelle die die generierten &#8220;Welten&#8221; im Web anzeigt. Am besten als selbst aktualisierende live Anwendung. (JavaScript, AJAX)</li>
<li>Ein SQL-Modul für ZRE entwickeln, welches statistische Werte an eine Datenbank übermittelt. (MySQL)</li>
<li>PHP-Funktionen definieren, die Ergebnisse aus Datenbank abholen. (PHP)</li>
<li>Statistiken visualisieren (R statistical Programming Language)</li>
</ul>
<p>Im wesentlichen sieht die Aufgabenteilung vor, das sich Holger um Website, Design und PHP kümmert und ich mich um die Bash-Module, ZRE an sich, SQL Datenbank und statistische Auswertung bemühe. Selbstverständlich würden wir auch jegliche andere Hilfe oder freiwillige Mitarbeiter dafür begrüßen, falls Interesse besteht. Das wir an dem Wettbewerb teilnehmen wird zusehens unwahrscheinlicher, da das Projekt an sich schon eher einen Unterhaltungswert, statt dem wirklichen Nutzen eines IT-Projekt hat.</p>
<p>Wer sich ZRE an sich mal ansehen will, kann einfach mal das Git-Repo auschecken und starten (auch unter Mac OS X lauffähig).</p>
<p>&nbsp;</p>
<pre><code>$ git clone git://github.com/noqqe/zombie-revolution-environment.git
$ cd zombie-revolution-environment
$ ./zre.bash
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1500/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache &#124; Authentifizierung über mod_auth_pam</title>
		<link>http://noqqe.de/archives/1494</link>
		<comments>http://noqqe.de/archives/1494#comments</comments>
		<pubDate>Fri, 04 Mar 2011 17:53:19 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[authentication failure]]></category>
		<category><![CDATA[AuthPam_Enabled]]></category>
		<category><![CDATA[auth_pam]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[pam]]></category>
		<category><![CDATA[unix_chkpwd]]></category>
		<category><![CDATA[vsftpd]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1494</guid>
		<description><![CDATA[FTP-User, die Dateien auch über HTTP durchsuchen wollen, werden bei vsftpd häufig über /etc/passwd als SystemUser authentifiziert. Um nicht noch eine zusätzliche htpasswd Datei pflegen zu müssen, bietet sich das Apache2 Modul mod_auth_pam an. Allerdings nur wenn man weiss wie. $ aptitude install libapache2-mod-auth-pam $ vim /etc/apache2/sites-availabe/ftp.domain.com &#60;Location /dir&#62; AuthType Basic AuthName "FTP-Auth" AuthPAM_Enabled On [...]]]></description>
			<content:encoded><![CDATA[<p>FTP-User, die Dateien auch über HTTP durchsuchen wollen, werden bei vsftpd häufig über /etc/passwd als SystemUser authentifiziert. Um nicht noch eine zusätzliche htpasswd Datei pflegen zu müssen, bietet sich das Apache2 Modul mod_auth_pam an. Allerdings nur wenn man weiss wie.</p>
<p><code>$ aptitude install libapache2-mod-auth-pam</code></p>
<p><code>$ vim /etc/apache2/sites-availabe/ftp.domain.com<br />
&lt;Location /dir&gt;<br />
AuthType Basic<br />
AuthName "FTP-Auth"<br />
AuthPAM_Enabled On<br />
AuthBasicAuthoritative Off<br />
Require user FTPUSER<br />
&lt;/Location&gt;</code></p>
<p>Sehr wichtig an dieser Stelle <strong>AuthBasicAuthoritative Off . </strong>Ansonsten Internal Server Error. Die Schnittstelle mit der sich Apache2 gegen PAM anmeldet, wird automatisch definiert.</p>
<p><code># cat /etc/pam.d/apache2<br />
@include common-auth<br />
@include common-account</code></p>
<p>Nunja, auch wenn eigentlich soweit alles klar sein sollte, schmeisst Apache2 einen Internal Server Error.</p>
<p><code>Mar  1 12:37:59 host unix_chkpwd[2682]: password check failed for user (FTPUSER)<br />
Mar  1 12:37:59 host apache2: pam_unix(apache2:auth): authentication  failure; logname= uid=xx euid=xx tty= ruser= rhost=123.123.123.123   user=FTPUSER</code></p>
<p>Was an den fehlenden LeseRechten des Users &#8220;www-data&#8221; liegt. Fügt man diesen der Gruppe shadow hinzu, funktioniert die Authentifizierung einwandfrei.<br />
<code><br />
$ vi /etc/group<br />
shadow:x:42:www-data</code></p>
<p>Zusätzliche Hilfe:<br />
<a href="http://pam.sourceforge.net/mod_auth_pam/configure.html">http://pam.sourceforge.net/mod_auth_pam/configure.html</a><br />
<a href="http://biblio.l0t3k.net/howto/en/user-authentication-howto/x302.html">http://biblio.l0t3k.net/howto/en/user-authentication-howto/x302.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1494/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Charset &#124; UTF8 für Apache, PHP, MySQL, Debian und WordPress</title>
		<link>http://noqqe.de/archives/1487</link>
		<comments>http://noqqe.de/archives/1487#comments</comments>
		<pubDate>Thu, 24 Feb 2011 09:22:13 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[charset]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[utf8]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1487</guid>
		<description><![CDATA[Nachdem ich die Migration meines Blogs auf meinen neues Stück Blech größtenteils abgeschlossen hatte, wurde ich wieder an den Charset Wirr-Warr von IT-Systemen erinnert. Um meinem Blog seine Umlaute wieder zu beschaffen habe ich folgende Änderungen an verschiedenen Stellen eingespielt. Vorzugsweise immer in den entsprechenden conf.d/ Verzeichnissen, da die Änderungen evtl. beim nächsten Upgrade überschrieben [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich die Migration meines Blogs auf meinen neues Stück Blech größtenteils abgeschlossen hatte, wurde ich wieder an den Charset Wirr-Warr von IT-Systemen erinnert. Um meinem Blog seine Umlaute wieder zu beschaffen habe ich folgende Änderungen an verschiedenen Stellen eingespielt. Vorzugsweise immer in den entsprechenden conf.d/ Verzeichnissen, da die Änderungen evtl. beim nächsten Upgrade überschrieben werden könnten.</p>
<p><center><font size="32"><br />
<h1>�</h1>
<p></font></center><br />
<strong>Apache2 Charset</strong><br />
<code>vim /etc/apache2/conf.d/charset<br />
AddDefaultCharset UTF-8</code></p>
<p><strong>PHP5 Charset</strong><br />
<code>$ vim /etc/php5/apache2/conf.d/charset.ini<br />
[PHP]<br />
default_charset = "utf-8"<br />
[mbstring]<br />
mbstring.language = utf-8<br />
mbstring.internal_encoding = utf-8<br />
mbstring.http_input = utf-8<br />
mbstring.http_output = utf-8</code></p>
<p><strong>MySQL Charset</strong><br />
<code>$ vim /etc/mysql/conf.d/character<br />
[client]<br />
default-character-set = utf8<br />
[mysqld]<br />
default-character-set = utf8<br />
character-set-server = utf8<br />
collation-server= utf8_general_ci<br />
init_connect = ‘SET collation_connection = utf8_general_ci’<br />
init_connect = ‘SET NAMES utf8′<br />
[mysqldump]<br />
default-character-set = utf8<br />
[mysqlimport]<br />
default-character-set = utf8<br />
[mysql]<br />
default-character-set = utf8</code></p>
<p><strong>Debian WordPress Config</strong><br />
<code>$ vim /etc/wordpress/config-blog.url.php<br />
define('DB_CHARSET', 'utf8');<br />
define('DB_COLLATE', '');<br />
define('WPLANG', 'de_DE.UTF-8');</code></p>
<p><strong>Debian Locales</strong><br />
<code>$ dpkg-reconfigure locales</code></p>
<p>Sollte ich es mal wieder brauchen, les ich hier nach.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1487/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DuckDuckGo &#124; Suche via Firefox Addressleiste umstellen</title>
		<link>http://noqqe.de/archives/1475</link>
		<comments>http://noqqe.de/archives/1475#comments</comments>
		<pubDate>Mon, 07 Feb 2011 16:04:06 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[addressleisten suche]]></category>
		<category><![CDATA[alternative]]></category>
		<category><![CDATA[bang]]></category>
		<category><![CDATA[bang search]]></category>
		<category><![CDATA[duckduckgo]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[keyword.URL]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[searchengine]]></category>
		<category><![CDATA[sicherheit]]></category>
		<category><![CDATA[suche]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1475</guid>
		<description><![CDATA[Seit einiger Zeit benutze ich die Suchmaschine duckduckgo.com . Wenn man von dem völlig bescheuerten Namen und dem Logo mal absieht, versteckt sich dahinter eine wunderbare Suchmaschine. Dazu gehört alles was der typische Paranoia Geek so braucht. Allem vorran die !Bang Suche, die ich mit der Zeit sehr zu schätzen gelernt habe. Jede große Site [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einiger Zeit benutze ich die Suchmaschine <a href="http://duckduckgo.com ">duckduckgo.com </a>. Wenn man von dem völlig bescheuerten Namen und dem Logo mal absieht, versteckt sich dahinter eine wunderbare Suchmaschine. Dazu gehört alles was der typische Paranoia Geek <a href="http://duckduckgo.com/goodies.html">so braucht</a>.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2011/02/nduck.v105.png"><img class="aligncenter size-medium wp-image-1476" title="nduck.v105" src="http://zwetschge.org/blog/wp-content/uploads/2011/02/nduck.v105-300x52.png" alt="" width="300" height="52" /></a></p>
<p>Allem vorran die <a href="http://duckduckgo.com/bang.html">!Bang</a> Suche, die ich mit der Zeit sehr zu schätzen gelernt habe. Jede große Site hat ein Kürzel, mit der Sie durchsucht werden kann. Zum Beispiel &#8220;<a href="http://duckduckgo.com/?q=!wiki+alan+turing">!wiki Alan Turing</a>&#8220;. Außerdem geben Sie an, die Suchanfragen nicht zu loggen (<a href="http://donttrack.us/">http://donttrack.us/</a>), Shortcuts, sowas wie eine Syntax und Wolfram Alpha implementiert zu haben. Alles was DuckDuckGo zu bieten hat unter: <a href="http://duckduckgo.com/goodies.html">http://duckduckgo.com/goodies.html</a></p>
<p>Um jetzt zum Punkt zu kommen: Meine Standardsuchleiste habe ich via Plugin schon auf Duckduckgo umgestellt. Ich habe aber die blöde Angewohnheit meine Suchanfrage einfach direkt in die Suchleiste des Firefox zu schreiben. Bisher wurde mir das immer brav von Google beantwortet. Ich dachte mit der Installation des Plugins von DuckDuckGo wäre das auch umgestellt. Dem ist aber nicht so. Leider.</p>
<p>Stattdessen gilt es, noch folgende Anpassungen zu machen:</p>
<ul>
<li>about:config in die Adresszeile tippen</li>
<li>Nach dem Begriff &#8220;keyword.URL&#8221; suchen</li>
<li>Das Feld doppelklicken (standardmäßig dürfte es leer sein)</li>
<li> &#8220;<strong>http://duckduckgo.com/?q=</strong>&#8221; als String einfügen</li>
</ul>
<p>Anschließend Firefox Neustart. Nein ich habe kein Geld für diesen Post bekommen. Schon wieder nicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1475/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Statistiken &#124; Using R &#8211; The Nerd Way</title>
		<link>http://noqqe.de/archives/1458</link>
		<comments>http://noqqe.de/archives/1458#comments</comments>
		<pubDate>Fri, 04 Feb 2011 10:18:35 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[analyiseren]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mail.log]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[r-script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[Statistiken]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1458</guid>
		<description><![CDATA[Momentan interessiere ich mich für R. Die Programmiersprache für Statistiken genießt aktuell ziemliche Popularität. Persönlich habe ich (in der kurzen Zeit, seitdem ich es benutze und kenne) R als eine Sprache kennengelernt, die nur begrenzt für coole Sachen benutzt wird. Kann an meiner Deklaration von &#8220;cool&#8221; liegen oder das sich die coolen Sachen bisher meiner [...]]]></description>
			<content:encoded><![CDATA[<p>Momentan interessiere ich mich für <a href=" http://de.wikipedia.org/wiki/R_%28Programmiersprache%29">R</a>. Die Programmiersprache für Statistiken genießt aktuell ziemliche <a href="http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html">Popularität</a>.</p>
<p>Persönlich habe ich (in der kurzen Zeit, seitdem ich es benutze und kenne) R als eine Sprache kennengelernt, die nur begrenzt für coole Sachen benutzt wird. Kann an meiner Deklaration von &#8220;cool&#8221; liegen oder das sich die coolen Sachen bisher meiner Kenntnis entzogen. Aber mal davon abgesehen dass Statistiken immer interessant sind, wird R anscheinend meistens von irgendwelchen Sales-Druiden oder Marketing-Dudes verwendet, die Daten aus der DB ihres Online-Shops kratzen lassen um festzustellen wie viele Rosa Einhörner letzten Monat verkauft worden sind.</p>
<p>Nunja, sagen wirs so. Ich hab überlegt für was ich R nutzen würde und etwas damit gespielt. Prinzipiell ist die vorgehensweise sehr einfach. Ich hab irgendwo ein LogFile o.ä. rumliegen (sozusagen die Rohdaten) und bringe diese mit ein bisschen Bash/Shell Zauber in ein Format welches ich R vorschmeissen kann. R unterstützt&#8230; naja so ziemlich alles, was einen halbwegs anständigen Delimiter vorweisen kann.</p>
<p>R arbeitet in diesem Fall mit einer Interaktiven Shell, die die Eingaben interpretiert.<br />
( $: Bash Shell. &gt;: R Shell)</p>
<p><strong>Tweetstatistik meiner Timeline analysieren (via twidge)</strong></p>
<p><code># Letzte 200 Tweets ausgeben<br />
$ twidge lsrecent --all &gt; tweets<br />
# Usernamen sortieren und Tweets zählen<br />
$ grep '^&lt;' tweets | awk '{print $1}' | sort | uniq -c | sort -rn<br />
# In R Shell wechseln<br />
$ R<br />
# Twitter Timeline einlesen<br />
&gt; twittertimeline &lt;- read.table("twitter/tweets", head=T, sep="" )<br />
# Kuchenansicht erstellen<br />
&gt; pie(twittertimeline$Tweets, label=twittertimeline$User)</code><br />
<a href="http://zwetschge.org/blog/wp-content/uploads/2011/02/timeline.png"><img class="aligncenter size-full wp-image-1460" title="timeline-500" src="http://zwetschge.org/blog/wp-content/uploads/2011/02/timeline-500.png" alt="" width="500" height="349" /></a></p>
<p>An dieser Stelle kann es passieren, dass es bei zu vielen Daten wirklich sehr unübersichtlich wird. Was genau ich da falsch mache ist mir allerdings etwas schleierhaft. An der Skalierung lässt sich sicher noch arbeiten. Aber mit einem kleineren Satz von Daten, sieht es schon besser aus.<br />
<code># 20 meisten Twitterer heraussuchen<br />
$ grep '^&lt;' tweets | awk '{print $1}' | sort | uniq -c | sort -n  | tail -20 &gt; tweets-20<br />
# Einlesen<br />
&gt; twittertimeline20 &lt;- read.table("twitter/tweets-20", head=T, sep="")<br />
# Balkendiagram erstellen<br />
&gt; barplot(as.matrix(twittertimeline20$Tweets), main="Timeline", ylab="Tweets", xlab="Users", beside=TRUE, col=rainbow(20))</code><br />
Und damit das ganze auch was aussagt, kann man sogar eine kleine Legende anfügen.</p>
<p><code>&gt; legend( 1, 60,twittertimeline20$User, cex=0.6,  fill=rainbow(20))</code></p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2011/02/timeline-legend.png"><img class="aligncenter size-full wp-image-1462" title="timeline-legend-500" src="http://zwetschge.org/blog/wp-content/uploads/2011/02/timeline-legend-500.png" alt="" width="500" height="305" /></a></p>
<p><strong>History der Bash visualisieren</strong><br />
Wer auf Kuchen steht, kann auch eifnach mal seine Bash History einlesen.<br />
<code># Command sortieren und zählen<br />
$ history | awk '{print $4}' | sort | uniq -c | sort -rn | head &gt; sys/history<br />
   Used Command<br />
   1106 ls<br />
    889 vim<br />
    490 cd<br />
    423 git<br />
    116 screen<br />
    116 rm<br />
     81 ./tismc.bash<br />
     76 ps<br />
     75 less<br />
     72 ./coming-home.bash<br />
# Das generierte File in R einlesen<br />
&gt; history &lt;- read.table("sys/history", head=T, sep="")<br />
# Aus dem Object history ein neues Object für Labels erstellen<br />
# in denen die prozentualen Werte der Commands stehen<br />
&gt; history_labels &lt;- paste(history$Command , " " , round(history$Used/sum(history$Used) * 100, 1) , "%", sep="")<br />
# Object und Labels zu einem Kuchendiagramm formen<br />
&gt; pie(history$Used, main="Commands", label=history_labels, cex=0.8)<br />
 </code><br />
<a href="http://zwetschge.org/blog/wp-content/uploads/2011/02/commands.png"><img class="aligncenter size-full wp-image-1464" title="commands-500" src="http://zwetschge.org/blog/wp-content/uploads/2011/02/commands-500.png" alt="" width="500" height="406" /></a></p>
<p><strong>Mailadressen aus mail.log</strong><br />
Um noch ein 3. mal den Anwendungsbereich zu wechseln, kann man damit auch wunderbar das mail.log seines Mailservers unter die Lupe nehmen.</p>
<pre><code>&gt; mailaddresses &lt;- read.table("mail/mail_addresses", head=T, sep="")
&gt; pie(mailaddresses$Mails, main="Mail Adressen", col=rainbow(length(mailaddresses$Address) ), label=mailaddresses$Address)</code></pre>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2011/02/addresses-advanced2.png"><img class="aligncenter size-full wp-image-1466" title="addresses-advanced2-500" src="http://zwetschge.org/blog/wp-content/uploads/2011/02/addresses-advanced2-500.png" alt="" width="500" height="381" /></a></p>
<p>Egal, mein BWL Lehrer sagte immer: Traue nie einer Statistik, die du nicht selbst gefälscht hast.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1458/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Offtopic &#124; Deskshot.</title>
		<link>http://noqqe.de/archives/1442</link>
		<comments>http://noqqe.de/archives/1442#comments</comments>
		<pubDate>Sun, 26 Dec 2010 12:08:48 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[camel active]]></category>
		<category><![CDATA[Cherry]]></category>
		<category><![CDATA[leatherman]]></category>
		<category><![CDATA[Life nano]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[Phillips In-Ear Surround]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[schreibtischlampe]]></category>
		<category><![CDATA[skeletool CX]]></category>
		<category><![CDATA[starwars]]></category>
		<category><![CDATA[zen vision m]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1442</guid>
		<description><![CDATA[Früher oder später zeigt ja doch jeder mal seinen Desktop her. Hier ist meiner. Von oben nach unten: Bretter der Wandverkleidung Regular Expressions Cheatsheet by addedbytes.com Git Cheat Sheet by pastejean oder hier Eine uralte rote Schreibtisch Lampe die ich am Dachboden meiner Eltern fand. Eine 25 Euro Ikea Tischplatte die mit hoher Wahrscheinlichkeit einen [...]]]></description>
			<content:encoded><![CDATA[<p>Früher oder später zeigt ja doch jeder mal seinen Desktop her. Hier ist meiner.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/12/DSC01272.jpg"><img class="aligncenter size-full wp-image-1444" title="Deskshot-500px" src="http://zwetschge.org/blog/wp-content/uploads/2010/12/DSC01272-500.jpg" alt="" width="500" height="353" /></a></p>
<p>Von oben nach unten:</p>
<ul>
<li>Bretter der Wandverkleidung</li>
<li><a href="http://www.addedbytes.com/cheat-sheets/download/regular-expressions-cheat-sheet-v1.pdf">Regular Expressions Cheatsheet by addedbytes.com</a></li>
<li><a href="https://github.com/pastjean/git-cheat-sheet">Git Cheat Sheet by pastejean</a> oder <a href="http://n0q.org/statics/git-cheat-sheet.svg">hier</a></li>
<li>Eine uralte rote Schreibtisch Lampe die ich am Dachboden meiner Eltern fand.</li>
<li>Eine 25 Euro Ikea Tischplatte die mit hoher Wahrscheinlichkeit einen skandinavischen Namen trägt.</li>
<li>Ein <a href="http://www.amazon.de/Star-Wars-Spacetrooper-Legacy-Collection/dp/B002NZ7CLU/ref=sr_1_24?s=toys&amp;ie=UTF8&amp;qid=1293364401&amp;sr=1-24">StarWars Stormtrooper</a> den ich mal geschenkt bekam.</li>
<li><a href="http://www.amazon.de/camel-active-Geldb%C3%B6rse-braun-5x2x8/dp/B0014VXDQ2/ref=sr_1_24?ie=UTF8&amp;qid=1293365047&amp;sr=8-24">Camel Active Bali</a> Geldbörse</li>
<li><a href="https://support.apple.com/specs/macbook/macbook_late_2006.html">Macbook 2006 Late</a>, gebraucht von einem Kollegen bekommen.</li>
<li>Ein 5-Euro 1GB USB-Stick aus dem Hause No-Name</li>
<li><a href="http://www.amazon.de/Creative-Vision-Tragbarer-MP3-Player-schwarz/dp/B000E3U4JU/ref=sr_1_1?ie=UTF8&amp;qid=1293364747&amp;sr=8-1">Zen Vision:M</a> MP3Player (30GB)</li>
<li><a href="http://www.leatherman.com/products/product.asp?id=3&amp;f=6&amp;c=1">Leatherman Skeletool CX</a></li>
<li><a href="http://www.amazon.de/Philips--Ear-Kopfh%C3%B6rer-Virtual-Surround-schwarz/dp/B002KK60UC/ref=sr_1_8?s=ce-de&amp;ie=UTF8&amp;qid=1293365143&amp;sr=1-8">Philips In-Ear Surround</a> Kopfhörer mit Case</li>
<li><a href="http://www.amazon.de/Cherry-Life-Laser-Notebookmaus-schnurlos-schwarz/dp/B001E2SUSM">Cherry Life nano</a> Maus</li>
</ul>
<p>Bei Deskshots vorher aufräumen ist ja langweilig. Dieser Post darf (nach belieben) auch als Blogstöckchen verstanden werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1442/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mac &#124; Fraise App für LaTeX konfigurieren</title>
		<link>http://noqqe.de/archives/1437</link>
		<comments>http://noqqe.de/archives/1437#comments</comments>
		<pubDate>Thu, 23 Dec 2010 14:16:03 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Fraise]]></category>
		<category><![CDATA[Latex]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Shortcut]]></category>
		<category><![CDATA[Smultron]]></category>
		<category><![CDATA[Tastenkürzel]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1437</guid>
		<description><![CDATA[Nachdem meine 30 Tage von TextMate App ausgelaufen sind, habe ich mich irgendwie an das Apfel+R für LaTeX setzen, durchbauen und PDF anzeigen gewohnt. Allerdings hab ich keine 50$ auf der hohen Kante um dir TextMate zu kaufen. Aber es geht ja auch anders. Was früher Smultron hieß und mittlerweile vom eigentlichen Entwickler eingestellt wurde, [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem meine 30 Tage von <a href="http://macromates.com/">TextMate App</a> ausgelaufen sind, habe ich mich irgendwie an das Apfel+R für LaTeX setzen, durchbauen und PDF anzeigen gewohnt.</p>
<p>Allerdings hab ich keine 50$ auf der hohen Kante um dir TextMate zu kaufen. Aber es geht ja auch anders. Was früher <a href="http://en.wikipedia.org/wiki/Smultron"> Smultron</a> hieß und mittlerweile vom eigentlichen Entwickler eingestellt wurde, gibt es heute als Fork unter dem Namen Fraise.</p>
<p><a href="https://github.com/jfmoy/Fraise/">Fraise</a> ist OpenSource und eigentlich ein schöner schmaler Editor für Mac OS X.  Meine vermisste Funktion des Apfel+R lässt sich auch hier &#8220;nachbilden&#8221;. Mit Apfel+B werden alle Kommandos angezeigt die mit Apfel+R verfügbar sind. Standardmäßig gibt es dort auch einen Satz von Dummies und sonstigem Nützlichem.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/12/Screen-shot-2010-12-23-at-15.09.171.png"><img src="http://zwetschge.org/blog/wp-content/uploads/2010/12/Screen-shot-2010-12-23-at-15.09.171.png" alt="" title="Screenshot 2010-12-23 at 15.09.17" width="500" height="343" class="aligncenter size-full wp-image-1440" /></a></p>
<p>Neue Collection namens LaTeX angelegt und das Command-Set &#8220;Build LaTeX&#8221; eingerichtet. Alles weitere ist im Endeffekt nur ein Shell-Skript, welches das PDF erstellt, die überflüssigen Dateien aufräumt und das generierte pdf mittels &#8220;open&#8221; öffnet.</p>
<p>Extrem hilfreich und billiger als TextMate. Das Skript habe ich bei github gepasted.</p>
<p><script src="https://gist.github.com/753005.js?file=gistfile1.sh"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1437/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Offtopic &#124; Hackerbrause</title>
		<link>http://noqqe.de/archives/1431</link>
		<comments>http://noqqe.de/archives/1431#comments</comments>
		<pubDate>Tue, 21 Dec 2010 16:48:42 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[club]]></category>
		<category><![CDATA[club-mate]]></category>
		<category><![CDATA[geeks]]></category>
		<category><![CDATA[getränk]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[k4cg]]></category>
		<category><![CDATA[mate]]></category>
		<category><![CDATA[nbg]]></category>
		<category><![CDATA[nerds]]></category>
		<category><![CDATA[nürnberg]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1431</guid>
		<description><![CDATA[Beim K4CG den ich Letztens das zweite Mal besucht hatte, kam ich in Berührung mit Club-Mate. Ich suchte nach dem Bier nach etwas unalkoholischem, griff zu Club-Mate und wusste bis dahin nicht wirklich was es damit auf sich hatte. Amateurhaft sprach ich es auch Mate (dt. Kumpel) aus. Das leicht säuerlich schmeckende Eistee Getränk, welches [...]]]></description>
			<content:encoded><![CDATA[<p>Beim <a href="http://www.k4cg.org">K4CG</a> den ich Letztens das zweite Mal besucht hatte, kam ich in Berührung mit <a href="http://de.wikipedia.org/wiki/Club_mate">Club-Mate</a>. Ich suchte nach dem Bier nach etwas unalkoholischem, griff zu Club-Mate und wusste bis dahin nicht wirklich was es damit auf sich hatte. Amateurhaft sprach ich es auch Mate (dt. Kumpel) aus. Das leicht säuerlich schmeckende Eistee Getränk, welches ich eher als Kräuterlimonade zugeordnet hätte, enthält anscheinend eine beträchtliche Menge an Koffein. Was jetzt aus Gründen [...] nicht umbedingt negativ sein muss.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/12/IMG_0470.jpg"><img class="aligncenter size-full wp-image-1432" title="Club-Mate" src="http://zwetschge.org/blog/wp-content/uploads/2010/12/IMG_0470.jpg" alt="" width="500" height="375" /></a></p>
<p>Vor ein paar Tagen hab ich wieder an Club-Mate gedacht und die Suchmaschine meiner Wahl angeschmissen. Über die Homepage fand ich dann auch den<a href="http://www.clubmate.de/cws/startseite.3.html"> nächstbesten in Frage kommenden Getränkemarkt (Keils in Bayreuth)</a>. Anscheinend ist Club-Mate auch ein in Hackerkreisen beliebteres Kultgetränk.</p>
<p>Wie dem auch sei, nun sitz ich hier, mit meinem ersten eigens erstandenen Kasten Club-Mate.</p>
<p>Nebenbei kann ich auch jedem den Hackerspace in Nürnberg K4CG ans Herz legen. Sehr nette und freundliche Hacker oder anderweitig Technik-Interessierte die auch Neulinge gut aufnehmen und betreuen ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1431/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Backup eines Files mit Zeitstempel in unkompliziert.</title>
		<link>http://noqqe.de/archives/1425</link>
		<comments>http://noqqe.de/archives/1425#comments</comments>
		<pubDate>Tue, 14 Dec 2010 14:33:45 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[admins]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bashrc]]></category>
		<category><![CDATA[buf]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[commandlinefu]]></category>
		<category><![CDATA[dirty]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[kommandozeile]]></category>
		<category><![CDATA[quick]]></category>
		<category><![CDATA[schnell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1425</guid>
		<description><![CDATA[Auf eine besondere kleine Funktion möchte ich kurz aufmerksam machen, weil sie viele Administratoren oder Sonst-Wie-Konfigurationen-vornehmende-Benutzer wahrscheinlich auch brauchen könnten: buf () { filename=$1; filetime=$(date +%Y%m%d_%H%M%S); cp ${filename} ${filename}_${filetime}; } Man spielt an der main.cf des Postfix herum oder bastelt an der xorg.conf. Und wie man das eben von dem erfahrenen Linux-Benutzer seines Vertrauens (oder [...]]]></description>
			<content:encoded><![CDATA[<p><a href=" http://www.commandlinefu.com/commands/view/7292/backup-a-file-with-a-date-time-stamp">Auf eine besondere kleine Funktion</a> möchte ich kurz aufmerksam machen, weil sie viele Administratoren oder  Sonst-Wie-Konfigurationen-vornehmende-Benutzer wahrscheinlich auch brauchen könnten:</p>
<p><code> buf () { filename=$1; filetime=$(date +%Y%m%d_%H%M%S); cp ${filename} ${filename}_${filetime}; }</code></p>
<p>Man spielt an der main.cf des Postfix herum oder bastelt an der xorg.conf. Und wie man das eben von dem erfahrenen Linux-Benutzer seines Vertrauens (oder dem UbuntuUsersWiki) gelernt hat, sichert man vorher die Konfigurationsdatei mit dem obligatorischen:</p>
<p><code>cp xorg.conf xorg.conf.bak</code></p>
<p>Je nach Intensität der Anpassungen häufen sich auch Backupfiles a la &#8220;xorg.conf.bak.bak&#8221; oder &#8220;.bak2 bis .bak5000&#8243;</p>
<p>Fügt man die obige Funktion in seine .bashrc hinzu, erledigt sich das Thema relativ schnell.</p>
<p><code>buf xorg.conf</code></p>
<p>Erstellt automatisch ein File mit dem aktuellen Zeitstempel im aktuellen Verzeichnis. Nochmal im formatierten Zustand:</p>
<p><code>buf () {<br />
filename=$1<br />
filetime=$(date +%Y%m%d_%H%M%S)<br />
cp ${filename} ${filename}_${filetime}<br />
}</code></p>
<p>Dass <a href="http://commandlinefu.com">commandlinefu.com</a> eine großartige Site ist, ist wahrscheinlich für die meisten nichts Neues. Teileweise regnet es dort wunderschöne kleine Kommandozeilen für den Alltag.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1425/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>github &#124; Mitarbeit an bash-it</title>
		<link>http://noqqe.de/archives/1420</link>
		<comments>http://noqqe.de/archives/1420#comments</comments>
		<pubDate>Tue, 07 Dec 2010 18:39:24 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash-it]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1420</guid>
		<description><![CDATA[Mehr brauche ich wohl nicht zu sagen. Statt endlose Pull-Requests zu stellen darf ich nun direkt in das bash-it Repo committen und dort als Mitglied wirken.]]></description>
			<content:encoded><![CDATA[<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/12/bash-it-noqqe.png"><img class="aligncenter size-full wp-image-1421" title="bash-it-noqqe" src="http://zwetschge.org/blog/wp-content/uploads/2010/12/bash-it-noqqe.png" alt="" width="500" height="80" /></a>Mehr brauche ich wohl nicht zu sagen. Statt endlose Pull-Requests zu stellen darf ich nun direkt in das bash-it Repo committen und dort als Mitglied wirken.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1420/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>hcht &#124; Handmade Commandline History Tool</title>
		<link>http://noqqe.de/archives/1407</link>
		<comments>http://noqqe.de/archives/1407#comments</comments>
		<pubDate>Wed, 01 Dec 2010 18:58:12 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash-it]]></category>
		<category><![CDATA[commandline]]></category>
		<category><![CDATA[handmade]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[store]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1407</guid>
		<description><![CDATA[Mit dem Namen habe ich mich natürlich mal wieder selbst übertroffen. NICHT. Ehe man sich versieht wird aus einem kleinen Fetzen Code ein ausgewachsenes Plugin für bash-it, in dem der Name des Code-Schnippsels schon so tief sitzt, das sich der Aufwand nicht mehr lohnt ihn zu ändern. Aber mal weg von Oberflächlichkeiten hin zum Code. [...]]]></description>
			<content:encoded><![CDATA[<p>Mit dem Namen habe ich mich natürlich mal wieder selbst übertroffen. NICHT. Ehe man sich versieht wird aus einem kleinen Fetzen Code ein ausgewachsenes Plugin für bash-it, in dem der Name des Code-Schnippsels schon so tief sitzt, das sich der Aufwand nicht mehr lohnt ihn zu ändern. Aber mal weg von Oberflächlichkeiten hin zum Code.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/12/4094723007_34388e39d8.jpg"><img class="aligncenter size-full wp-image-1413" title="4094723007_34388e39d8" src="http://zwetschge.org/blog/wp-content/uploads/2010/12/4094723007_34388e39d8.jpg" alt="" width="500" height="375" /></a></p>
<address>Creative Commons by <a href="http://www.flickr.com/photos/qubodup/">Iwan Gabovitch</a> &#8220;Notizen&#8221;</address>
<p>Es war Dienstag und ich war auf der Suche nach einem kleinen Tool oder einer Idee, wie ich am Besten kleine einzeilige &#8220;Hacks&#8221;, gebastelte Regular Expressions, MicroNotizen, ToDo&#8217;s, Logfile Schnippsel oder sonstige Informationen in Textform speichern und aufheben kann. Nachdem ich nichts fand fing ich an mir selber so ein kleines Tool zu schreiben. Als Plugin für <a href="http://github.com/revans/bash-it">bash-it</a>.</p>
<h2>Funktionen</h2>
<p>Idee ist einfach. Alles wird in einem zentralen Ordner abgespeichert und dieser wird mit tollen Features durch hcht befüllt.</p>
<p><strong>Editor </strong><br />
Die Basis sozusagen. Eine Notiz oder ein Kommando per Hand einfügen<br />
<code>$ hcht das-ist-eine-Notiz.hch</code></p>
<p><strong>List-Funktion</strong><br />
Anzeigen aller abgespeicherten Files<br />
<code>$ hcht</code></p>
<p><strong>Einzeilige Notiz</strong><br />
Den ganzen Spaß gibts auch einzeilig.<br />
<code>$ hcht Hallo, das ist eine kleine Notiz</code></p>
<p><strong>Pipeable</strong><br />
Natürlich hat mein <a href="http://noqqe.de/archives/1402">Lesen von Stdin Post</a> auch einen Sinn gehabt.<br />
<code>$ cat mail.log | hcht maillog<br />
</code><br />
<strong>Wiederholbar</strong><br />
Die bashinterne Funktion ist zum Beispiel auch hilfreich. Angenommen man hat grade einen total coolen Hack gebastelt und will diesen aufheben:<br />
<code>$ find . -iname '*.png' -exec echo '&lt;br&gt;&lt;img src="{}"&gt;'  \; &gt; gallery.html<br />
$ hcht !! </code></p>
<p>Für mehr und vor allem genauere Beschreibung siehe den Source und das Readme auf github:</p>
<p>Dabei heraus kam: <a href="https://github.com/revans/bash-it/blob/master/plugins/hcht.plugin.bash">https://github.com/revans/bash-it/blob/master/plugins/hcht.plugin.bash</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1407/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Lesen von /dev/stdin</title>
		<link>http://noqqe.de/archives/1402</link>
		<comments>http://noqqe.de/archives/1402#comments</comments>
		<pubDate>Wed, 01 Dec 2010 18:27:18 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[/dev/stdin]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[lesen]]></category>
		<category><![CDATA[lesen vom stdin]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[read from stdin]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1402</guid>
		<description><![CDATA[Gestern hat mich eine Idee für ein Skript beschäftigt. Im Detail wollte ich die Syntax: $ cat any_file.txt &#124; script.sh abbilden. Lesen von File Descriptor 0. Also Standard-Input. Mich beschäftigte das Thema aber länger, als ich es erwartet hatte. Auf Sinn und Unsinn des Skripts möchte zumindest in diesem Blogpost nicht weiter eingehen ;) Versuche [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern hat mich eine Idee für ein Skript beschäftigt. Im Detail wollte ich die Syntax:</p>
<p><code>$ cat any_file.txt | script.sh </code></p>
<p>abbilden. Lesen von File Descriptor 0. Also Standard-Input. Mich beschäftigte das Thema aber länger, als ich es erwartet hatte. Auf Sinn und Unsinn des Skripts möchte zumindest in diesem Blogpost nicht weiter eingehen ;)</p>
<h2>Versuche</h2>
<p>Nach kurzem bemühen einer Suchmaschine fand ich heraus, dass /dev/stdin das magische Schlüsselwort der Sache ist. Wie also von Standard Input lesen?</p>
<p><code>cat /dev/stdin<br />
cat /dev/stdin &gt; /tmp/foobar</code></p>
<p>War in etwa mein erster Ansatz. Mich wunderte extrem, dass der übergebene Inhalt zwar ausgegeben wird, aber nicht in dem File steht. Erkenntnis daraus: File Descriptor 0 lässt sich anscheinend nur einmal auslesen. Zweiter Versuch:</p>
<p><code>INPUT=$(cat /dev/stdin)</code></p>
<p>Schliesslich wollte ich den Input auch im Script weiter verarbeiten. Erwies sich aber auch als ungünstig, da Zeilenumbrüche in Variablen irgendwie verschluckt werden.</p>
<h2>Lösung</h2>
<p>Anstatt hier weiterhin mit erfolglosen Lösungsansätzen herum zu schmeissen:<br />
<code>cat &lt; /dev/stdin &gt;&gt; /tmp/foobar</code></p>
<p>Sieht unlogisch aus, funktioniert aber besser als alle Anderen.</p>
<h2>/dev/stdin und read</h2>
<p>Ich habe es nicht geschafft, nach dem einlesen von /dev/stdin eine bedienbare</p>
<p><code>read irgendeinevariable</code></p>
<p>Operation durchzuführen. Alle Eingaben werden automatisch mit dem Inhalt von /dev/stdin gefüllt. Ich konnte dafür leider noch keine Lösung finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1402/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Redmine &#124; Git Bare Repository Workaround</title>
		<link>http://noqqe.de/archives/1396</link>
		<comments>http://noqqe.de/archives/1396#comments</comments>
		<pubDate>Sat, 27 Nov 2010 11:49:42 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bare]]></category>
		<category><![CDATA[barerepo]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[repositories]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[webinterface]]></category>
		<category><![CDATA[workaround]]></category>
		<category><![CDATA[working copy]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1396</guid>
		<description><![CDATA[Die letzten beiden Tage habe ich mich etwas mit Redmine beschäftigt. Das Webinterface für Versionskontrollsysteme hat allerdings eine kleine Macke. Zumindest ist das mein Verständnis des Umstands. Git-Repositories sind in Redmine nur über Working Copies einzulesen. Der gute Stil (und gitolite) stellt serverseitige Git-Repositories als Bare Repos dar. Bare Repos sind im Grunde nur das, [...]]]></description>
			<content:encoded><![CDATA[<p>Die letzten beiden Tage habe ich mich etwas mit <a href="http://www.redmine.org/">Redmine</a> beschäftigt. Das Webinterface für Versionskontrollsysteme hat allerdings eine kleine Macke. Zumindest ist das mein Verständnis des Umstands.</p>
<p>Git-Repositories sind in Redmine nur über Working Copies einzulesen. Der gute Stil (und gitolite) stellt serverseitige Git-Repositories als Bare Repos dar. Bare Repos sind im Grunde nur das, was das .git/ Verzeichnis in jeder Working Copy darstellt. Es befinden sich also keine Klartext Files darin.</p>
<address><a href="http://zwetschge.org/blog/wp-content/uploads/2010/11/2431284305_9c4952e7f6.jpg"><img class="aligncenter size-full wp-image-1399" title="2431284305_9c4952e7f6" src="http://zwetschge.org/blog/wp-content/uploads/2010/11/2431284305_9c4952e7f6.jpg" alt="" width="500" height="375" /></a><br />
Creative Commons by <a href="http://www.flickr.com/photos/bbcolin/">Impact Tarmac</a></address>
<p>Diese Bare Repos lassen sich in Redmine aber nicht hinzufügen. Ob es einfach technisch nicht machbar ist, oder eine Macke seitens Redmine kann ich nicht ausmachen. Fakt ist allerdings, dass ich momentan dazu gezwungen bin Working-Copies für Redmine vorzuhalten.</p>
<p>Ein bisschen Dokumentation zu lesen hat mich da schon um einiges weiter gebracht. Es gibt unter der Redmine Community anscheinend zwei verbreitete Lösungsansätze.</p>
<ul>
<li>Cronjob der alle heilige Zeit auf Änderungen prüft</li>
<li>Hook in Bare Repos einfügen, welcher auslöst wenn gepushte Änderungen vorliegen</li>
</ul>
<p>Kurz: Ich entschied mir für die zweite Lösung. Um Ressourcen zu sparen. Oder weniger Cronjobs laufen zu haben. Erschien mir effizienter.</p>
<h2>Hook für Bare Repo</h2>
<p>In Hook-verzeichnis wechseln. Beispielsweise: /home/git/repositories/repo1.git/hooks/. Richtigen Hook auswählen. <strong>post-recieve</strong> führt Skripte aus, welche _nach_ dem erhalt von Commits ausgeführt werden.  Das Skript sieht vor, das ServerRepo an einen zentralen Sammelpunkt auszuchecken, Rechte anzupassen und für Redmine schreibbar zu machen.</p>
<p><script src="https://gist.github.com/717822.js?file=post-recieve"></script></p>
<p>Werden jetzt neue Commits gepushed, wird automatisch ein neues Repo gecloned und die Änderungen sind sofort in Redmine ersichtlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1396/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>bash-it &#124; n0qorg theme und git_info</title>
		<link>http://noqqe.de/archives/1389</link>
		<comments>http://noqqe.de/archives/1389#comments</comments>
		<pubDate>Wed, 24 Nov 2010 16:14:57 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash-it]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[revans]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1389</guid>
		<description><![CDATA[Um die Entwicklung des Bash Community Frameworks bash-it noch zusätzlich etwas vorran zu treiben, hab ich ein neues Theme und git_info  bereitgestellt. n0qorg theme Schema: host directory (git-status dirty)&#62; Bis jetzt noch nicht gemerged. Denke aber das kommt noch. Theme @ Github git_info Funktion Gibt Übersicht über das aktuelle Repo. Ab jetzt im Framework vorhanden.]]></description>
			<content:encoded><![CDATA[<p>Um die Entwicklung des Bash Community Frameworks <a href="http://github.com/revans/bash-it">bash-it</a> noch zusätzlich etwas vorran zu treiben, hab ich ein neues Theme und git_info  bereitgestellt.</p>
<h2>n0qorg theme</h2>
<p>Schema: host directory (git-status dirty)&gt;<br />
Bis jetzt noch nicht gemerged. Denke aber das kommt noch. <a href="https://github.com/noqqe/bash-it/blob/92b8d6d9cfade500e4d514163b5c18a1df71113d/themes/n0qorg/n0qorg.theme.bash">Theme @ Github</a></p>
<h2><a href="http://zwetschge.org/blog/wp-content/uploads/2010/11/Screenshot.png"><img class="aligncenter size-full wp-image-1390" title="Screenshot n0qorg Theme" src="http://zwetschge.org/blog/wp-content/uploads/2010/11/Screenshot.png" alt="" width="499" height="306" /></a></h2>
<h2>git_info Funktion</h2>
<p>Gibt Übersicht über das aktuelle Repo. Ab jetzt im Framework vorhanden.</p>
<p><script src="https://gist.github.com/709879.js?file=git_info"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1389/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>github &#124; Sinn, Unsinn, Interfaces und schon wieder Zombies</title>
		<link>http://noqqe.de/archives/1383</link>
		<comments>http://noqqe.de/archives/1383#comments</comments>
		<pubDate>Mon, 22 Nov 2010 19:30:35 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[diaspora]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gitignore]]></category>
		<category><![CDATA[sinn]]></category>
		<category><![CDATA[social coding]]></category>
		<category><![CDATA[tiny-tiny-rss]]></category>
		<category><![CDATA[unsinn]]></category>
		<category><![CDATA[zombies]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1383</guid>
		<description><![CDATA[github ist da wo ich mich momentan sehr gerne rumtreibe. creative commons @ jeremy kendall on flickr Unsinn Dort gibt es viele Projekte die mich interessieren, ich ihnen aber trotzdem nicht folgen kann. Dazu gehören unter anderem: diaspora/diaspora gothfox/Tiny-Tiny-RSS github/gitignore Das ist so weil diese Repo&#8217;s _so viel_ Aktivität aufweisen, dass ich von keinem anderen [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/noqqe">github</a> ist da wo ich mich momentan sehr gerne rumtreibe.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/11/5145916501_d9b36ec12f.jpg"><img class="aligncenter size-full wp-image-1384" title="ZendCon 2010 - github" src="http://zwetschge.org/blog/wp-content/uploads/2010/11/5145916501_d9b36ec12f.jpg" alt="http://www.flickr.com/photos/jeremykendall/" width="500" height="357" /></a></p>
<address>creative commons @ jeremy kendall on <a href="http://www.flickr.com/photos/jeremykendall/5145916501/sizes/m/in/photostream/">flickr</a></address>
<h2>Unsinn</h2>
<p>Dort gibt es viele Projekte die mich interessieren, ich ihnen aber  trotzdem nicht folgen kann. Dazu gehören unter anderem:</p>
<p><a href="https://github.com/diaspora/diaspora">diaspora/diaspora</a><br />
<a href="http://github.com/gothfox/Tiny-Tiny-RSS">gothfox/Tiny-Tiny-RSS</a><br />
<a href="http://github.com/github/gitignore">github/gitignore</a></p>
<p>Das ist so weil diese Repo&#8217;s _so viel_ Aktivität aufweisen, dass ich von keinem anderen meiner Projekte (auch nicht meiner eigenen) Meldungen mehr mitbekomme. Ich meine, wieso kann ich nicht regulieren? Wieso lassen sich Aktivitäten pro Projekt nicht zusammenfassen? Jeder Pull Request, Kommentar oder Issue wird mir direkt in meine TimeLine gepushed. Und das bei Diaspora, bei dem am Tag alleine &gt;30 Commits passieren? Warum habe ich nicht die Möglichkeit mir nur die Aktivitäten meiner Repos anzeigen zu lassen? Denke die Jungs von Github müssen erst noch lernen solche hyperaktiven anständig mit der Plattform zu handlen. Sollte jemand die nötigen Links für mich haben, bitte immer her damit.</p>
<h2>Sinn</h2>
<p>Andererseits nehme ich auch an ein paar wirklich schönen Sachen teil. Unter anderem bash-it. Das Framework ist etwas, wo ich mir nichtmehr vorstellen kann vorher ohne ausgekommen zu sein.</p>
<p><a href="http://github.com/revans/bash-it">revans/bash-it</a><br />
<a href="http://github.com/jgoerzen/twidge">jgoerzen/twidge</a></p>
<h2>Zombies</h2>
<p>Was ich außerdem verblüffend finde ist, dass wirklich <a href="https://github.com/TaurusOlson">jemand</a> eines meiner eigenen Projekte interessant fand. Nämlich genau das, dass ich für den größten Quatsch halte. TaurusOlson hat auf Anhieb ein <a href="https://github.com/noqqe/zombie-revolution-environment/commit/4719bebc6112449e114a7fff88b3fc0dbf5c6508">einwandfreies Modul und eine neue Lib</a> für das <a href="http://github.com/noqqe/zombie-revolution-environment">zombie-revolution-environment</a> geschrieben. O_o</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1383/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mail &#124; Adresse mit JavaScript vor Bots schützen.</title>
		<link>http://noqqe.de/archives/1367</link>
		<comments>http://noqqe.de/archives/1367#comments</comments>
		<pubDate>Sat, 13 Nov 2010 12:29:59 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Spam]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1367</guid>
		<description><![CDATA[Um Schreibweisen wie user [ätt] domain [dott] com zu vermeiden gibt es seit längerem schöne Möglichkeiten (wie beispielsweise auch bei github eingesetzt) um den MailTo Link anständig lesbar zu halten und trotzdem vor (einem Großteil) der SpamBots zu schützen. Damit ich die paar Zeilen nicht wieder vergesse: yay. Auch wenn ich keine Ahnung von JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p>Um Schreibweisen wie user [ätt] domain [dott] com zu vermeiden gibt es seit längerem schöne Möglichkeiten (wie beispielsweise auch bei github eingesetzt) um den MailTo Link anständig lesbar zu halten und trotzdem vor (einem Großteil) der SpamBots zu schützen. Damit ich die paar Zeilen nicht wieder vergesse:</p>
<p><script src="https://gist.github.com/675349.js?file=gistfile1.js"></script></p>
<p>yay. Auch wenn ich keine Ahnung von JavaScript habe. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1367/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ASCII &#124; StarWars via Telnet</title>
		<link>http://noqqe.de/archives/1351</link>
		<comments>http://noqqe.de/archives/1351#comments</comments>
		<pubDate>Mon, 08 Nov 2010 17:22:13 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[asciiart]]></category>
		<category><![CDATA[blinkenlights]]></category>
		<category><![CDATA[star]]></category>
		<category><![CDATA[star wars]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[wars]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1351</guid>
		<description><![CDATA[13 Jahre arbeitet anscheinend jemand bereits an einen Remake von StarWars Episode 4 in ASCII mit mehr als 15.000 Einzelbildern. Selbst anschauen: $ telnet towel.blinkenlights.nl]]></description>
			<content:encoded><![CDATA[<p>13 Jahre arbeitet anscheinend jemand bereits an einen Remake von StarWars Episode 4 in ASCII mit mehr als 15.000 Einzelbildern.</p>
<p style="text-align: center;"><a href="http://zwetschge.org/blog/wp-content/uploads/2010/11/ascii-starwars.png"><img class="aligncenter size-full wp-image-1352" title="ascii-starwars" src="http://zwetschge.org/blog/wp-content/uploads/2010/11/ascii-starwars.png" alt="" width="460" height="246" /></a></p>
<p>Selbst anschauen:</p>
<p><code>$ telnet towel.blinkenlights.nl</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1351/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>bash-it &#124; Zitronen-Thema</title>
		<link>http://noqqe.de/archives/1342</link>
		<comments>http://noqqe.de/archives/1342#comments</comments>
		<pubDate>Mon, 01 Nov 2010 13:00:47 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[xubuntu]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash-theme]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[theming]]></category>
		<category><![CDATA[zitron]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1342</guid>
		<description><![CDATA[Benutze nun schon seit längerem ein Community Framework für Bash, welches sich bash-it nennt. Darin lassen sich allerhand tolle Sachen einheitlich deklarieren und auslagern. Da meine .bashrc jetzt auch schon an die 300 Zeilen schwer ist, dachte ich es wäre eine gute Idee meine Konfigurationen dort hin auszulagern. Da wären dann auch gleich meine Completion [...]]]></description>
			<content:encoded><![CDATA[<p>Benutze nun schon seit längerem ein Community Framework für Bash, welches sich <a href="http://github.com/revans/bash-it">bash-it</a> nennt. Darin lassen sich allerhand tolle Sachen einheitlich deklarieren und auslagern. Da meine .bashrc jetzt auch schon an die 300 Zeilen schwer ist, dachte ich es wäre eine gute Idee meine Konfigurationen dort hin auszulagern. Da wären dann auch gleich meine Completion und Theming Files untergebracht.</p>
<p>Mir gefiel zwar nicht wirklich auf Anhieb ein ausgeliefertes Theme, aber es war relativ einfach ein Neues zu erstellen. Es war dann gelb, weil sich das schön vom Rest meines Terminals abhob. In einem Anflug wahnsinniger Einfallslosigkeit, nannte ich es dann einfach zitron. Zitron sieht folgendermaßen aus:</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/11/zitron.png"><img class="aligncenter size-full wp-image-1343" title="zitron" src="http://zwetschge.org/blog/wp-content/uploads/2010/11/zitron.png" alt="" width="526" height="277" /></a></p>
<p>Das Theme reagiert (als Teil von bash-it) auf git Repos. Wenn man sich in einem versioniertem Verzeichnis befindet, wird im Prompt automatisch der Name des Branch (master) eingefügt und zusätzlich dazu überprüft, ob das Working-Directory &#8220;dirty&#8221; ist (also uncommittete Änderungen). Falls ja wird ein gelbes Asterisk eingefügt (*).</p>
<p>Mein Fork auf github von bash-it: <a href="http://github.com/noqqe/bash-it">http://github.com/noqqe/bash-it</a><br />
Das Theme als Quelltext: <a href="http://github.com/noqqe/bash-it/blob/master/themes/zitron/zitron.theme.bash">http://github.com/noqqe/bash-it/blob/master/themes/zitron/zitron.theme.bash</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1342/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash &#124; minimal-bash-debug</title>
		<link>http://noqqe.de/archives/1332</link>
		<comments>http://noqqe.de/archives/1332#comments</comments>
		<pubDate>Sun, 24 Oct 2010 19:06:33 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash debug script]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[minimal debug]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell debug script]]></category>
		<category><![CDATA[shell debugging]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1332</guid>
		<description><![CDATA[Bei Bash Scripten gibt es ja genug Möglichkeiten zu debuggen. Jeder der Bash Scripte schreibt, hat da so seine eigenen Vorlieben. Nachdem ich etwas geforscht hatte fand ich diverse Methoden a la: #!/bin/bash _DEBUG=true if [ "$_DEBUG" == "true" ]; then echo "some debug informations" ; fi Auch schön fand ich den eingebauten Debugmodus der [...]]]></description>
			<content:encoded><![CDATA[<p>Bei Bash Scripten gibt es ja genug Möglichkeiten zu debuggen. Jeder der Bash Scripte schreibt, hat da so seine eigenen Vorlieben. Nachdem ich etwas geforscht hatte fand ich diverse Methoden a la:</p>
<p><code>#!/bin/bash<br />
_DEBUG=true<br />
if [ "$_DEBUG" == "true" ]; then echo "some debug informations" ; fi</code></p>
<p>Auch schön fand ich den eingebauten Debugmodus der Shell:</p>
<p><code>$ sh -x script.sh</code></p>
<p>Aber auch sehr umfangreiche Tools wie <a href="http://log4sh.svn.sourceforge.net/svnroot/log4sh/trunk/source/1.5/doc/log4sh.html">log4sh</a> sind vorhanden. Ganz zu Schweigen von wahllosen &#8220;echo&#8217;s&#8221; die über das ganze Skript verteilt sind. Irgendwie gefiel mir aber keine der Möglichkeiten so wirklich. Der Code wird unlesbar, die Ausgabe ist zu kryptisch oder der Lernaufwand ist jenseits von Gut und Böse. Deshalb habe ich mich hingesetzt und überlegt, wie ich eine Debugging-Engine gerne hätte. Wie müsste sowas aussehen, damit ich es verwenden würde?</p>
<ul>
<li>Code sollte nicht verunstaltet werden.</li>
<li> Debug Informationen sollten gut leserlich ausgegeben werden.</li>
<li> Debug Nachrichten sollten sich leicht zu erzeugen sein.</li>
<li>Sollte sehr einfach abschaltbar und skalierbar sein.</li>
<li>Minimaler Umfang des Gesamtsystems</li>
</ul>
<p>Nunja, im typischen Sonntag Nachmittag Größenwahn hab ich mich bemüht meine Anforderungen an den Bash Debugger umzusetzen. Ob es mir gelungen ist lasse ich jetzt mal dahingestellt, denn das ist mit Sicherheit Ansichtssache. Aber das aus dem Bedarf heraus entstandene <strong><a href="http://github.com/noqqe/minimal-bash-debug/">minimal-bash-debug</a></strong> hat mich dann doch einigermaßen zufrieden gestellt.<br/><br/></p>
<h3>Download</h3>
<pre><code>
$ cd path/to/your/bashscript
$ wget http://github.com/noqqe/minimal-bash-debug/raw/master/.minimal-bash-debug
$ chmod +x .minimal-bash-debug</code></pre>
<p><br/></p>
<h3>Implementation</h3>
<p>Das runtergeladene (wirklich sehr schmale) Script dient jetzt als Auswerter für die Debug Informationen. In das Bash Script, welches es zu debuggen gilt, muss nun folgende Funktion eingefügt werden. Mein Ziel Dabei war es den Snippet der Implementierung so klein wie nur irgendwie möglich zu halten, um das Skript nicht zu verunstalten.</p>
<pre><code>
debug() {
  debug=2 # set debug level 0|1|2|3
  if [ -x .minimal-bash-debug ]; then
  ./.minimal-bash-debug $debug $1 $2 "$3"
  fi
}</code></pre>
<p><br/></p>
<h3>Usage</h3>
<p>Die Implementation der Funktion debug() in das eigene Skript hat mehrere Vorteile. Aber zuerst zur Benutzung.</p>
<p><code>debug 2 syslog "Variable VAR is $VAR"<br />
debug 3 echo "Variable FOO is $FOO"</code></p>
<p>Das ganze ist simpel.</p>
<ul>
<li>debug aufrufen (debug)</li>
<li>debug level bestimmen (2)</li>
<li>debug mode auswählen (echo|syslog)</li>
<li>debug message übergeben (Variable FOO is $FOO)</li>
</ul>
<p>Das war auch schon der ganze Zauber. Das schöne daran ist, ist das .minimal-bash-debug Script einmal nicht mehr vorhanden/nicht ausführbar oder das debug level einfach auf 0 gesetzt, verfallen alle debug Zeilen in sofortiges Stillschweigen.</p>
<p>Der kurze Auszug der Erklärung ist natürlich relativ wenig. Deswegen gibt es auf Github <a href="http://github.com/noqqe/minimal-bash-debug/">http://github.com/noqqe/minimal-bash-debug/</a> ein Beispiel der Benutzung und ein README.</p>
<p>example.sh: <a href="http://github.com/noqqe/minimal-bash-debug/raw/master/example.sh">http://github.com/noqqe/minimal-bash-debug/raw/master/example.sh</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1332/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash &#124; ZRE und $RANDOM</title>
		<link>http://noqqe.de/archives/1321</link>
		<comments>http://noqqe.de/archives/1321#comments</comments>
		<pubDate>Tue, 19 Oct 2010 18:35:18 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[humans]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>
		<category><![CDATA[zufall]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1321</guid>
		<description><![CDATA[Zugegeben, dieser ganze Zombie-Sh!t unterhält mich länger, als es mir lieb ist. Insbesondere die aktuell stattfindende Blockschulwoche, trägt zur außergewöhnlich häufigen Nutzung bei. In den meisten Durchläufen des ZRE beendet es ganz von alleine die Simulation, weil entweder keine Humans oder Zombies mehr am Leben sind. Auf Letzteres trifft das natürlich immer irgendwie zu. Aber [...]]]></description>
			<content:encoded><![CDATA[<p>Zugegeben, dieser ganze <a href="http://noqqe.de/archives/1314">Zombie-Sh!t</a> unterhält mich länger, als es mir lieb ist. Insbesondere die aktuell stattfindende Blockschulwoche, trägt zur außergewöhnlich häufigen Nutzung bei.</p>
<p>In den meisten Durchläufen des ZRE beendet es ganz von alleine die Simulation, weil entweder keine Humans oder Zombies mehr am Leben sind. Auf Letzteres trifft das natürlich immer irgendwie zu. Aber das ignoriere ich jetzt einfach mal. Wenn eine der beiden Seiten als Sieger hervor geht eben.</p>
<p style="text-align: center;"><a href="http://zwetschge.org/blog/wp-content/uploads/2010/10/243104896_eb10db6e1d.jpg"><img class="aligncenter size-full wp-image-1322" title="CC by Drunken Monkey" src="http://zwetschge.org/blog/wp-content/uploads/2010/10/243104896_eb10db6e1d.jpg" alt="CC by Drunken Monkey" width="400" height="336" /></a></p>
<p>In wenigen Fällen® kommt es allerdings vor, das beide Seiten gleichmäßig stark an Mitgliedern gewinnen. Und zwar mehr als 150.000 ca. Die Chance diesen Case zu treffen würde ich jetzt auf 1:50 schätzen. Habe ihn heute 3 mal getroffen. Wie oft habe ich wohl ca. gespielt? Traurig.</p>
<p>Wenn dieser Case eintritt, nimmt die Simulation einen etwas schrägen Verlauf.</p>
<ul>
<li>Wachsende Bevölkerung: Die Anzahl der Mitglieder einer Seite wird mit<br />
<code>local size=$(($RANDOM % $humans + 1))<br />
humans=$(($humans + $size))</code><br />
berechnet.</li>
<li>Maximale Opfer eines Angriffs: Die Anzahl der $victims ermittelt ZRE folgendermaßen:<br />
<code>defenders=$(($RANDOM % $zombies +1))<br />
victims=$(($RANDOM % $defenders + 1))<br />
zombies=$(($zombies - $victims))</code></li>
</ul>
<p>Die Problemstellung beläuft sich eigentlich auf $RANDOM. $RANDOM erzeugt einen &#8220;zufälligen&#8221; Integerwert von 0 bis 32767.</p>
<p>Die Erzeugung der Unterstützung addiert sich immer wieder sofort auf den Wert der jeweiligen Rasse. Die Anzahl der Opfer allerdings errechnet sich aus einem Teil der Verteidiger, welcher wiederrum nur ein Teil der gesamten Rasse darstellt.</p>
<p>Klartext: Die Wahrscheinlichkeit, dass (max.) 32767 Mitglieder Opfer werden ist wesentlich geringer als die Wahrscheinlichkeit 32767 Mitglieder Support zu bekommen. Das führt zu unverhältnismäßig großem Wachstum im Environment.</p>
<p>Nach einiger Überlegung habe ich beschlossen die Werte der Kämpfe nicht anzupassen und stattdessen etwas anderes Einzuführen.</p>
<p><strong>Naturkatastrophen</strong>. Diese sollen automatisch bei Überschreitung eines Limits (300.000 Einwohner) oder einfach nur sporadisch etwas aufräumen. Vulkan, Hurricane oder Erdbeben. Alles dabei. Wer genau, wieviele und warum bei diesem Event ums Leben kommen entscheidet wie immer $RANDOM.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1321/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash &#124; the zombie-revolution-environment</title>
		<link>http://noqqe.de/archives/1314</link>
		<comments>http://noqqe.de/archives/1314#comments</comments>
		<pubDate>Sun, 17 Oct 2010 10:14:05 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[xubuntu]]></category>
		<category><![CDATA[8bit]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[battle]]></category>
		<category><![CDATA[brawl]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[gameplay]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[humans]]></category>
		<category><![CDATA[revolution]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[simulator]]></category>
		<category><![CDATA[zombie]]></category>
		<category><![CDATA[zombies]]></category>
		<category><![CDATA[zre]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1314</guid>
		<description><![CDATA[Wer kennt eigentlich noch MUD&#8216;s? Diese textbasierten Rollenspiele über Telnet. Uralt und genau genommen dürfte mir das auch nichts sagen, denn das war vor meiner Zeit. Wie dem auch sei. Vor kurzem saß ich nachts vor meiner Shell und suchte irgendeine Ablenkung. Dachte dann an ein Python Projekt, welches ich zusammen mit Chris vor ca. [...]]]></description>
			<content:encoded><![CDATA[<p>Wer kennt eigentlich noch <a href="http://en.wikipedia.org/wiki/MUD">MUD</a>&#8216;s?  Diese textbasierten Rollenspiele über Telnet. Uralt und genau genommen dürfte mir das auch nichts sagen, denn das war vor meiner Zeit.</p>
<p>Wie dem auch sei. Vor kurzem saß ich nachts vor meiner Shell und suchte irgendeine Ablenkung. Dachte dann an ein <a href="http://noqqe.de/archives/118">Python Projekt</a>, welches ich zusammen mit Chris vor ca. 2 Jahren mal aufgegriffen hatte. Ich fand die Idee damals schon gut, aber es mangelte einfach an Python Kenntnissen.</p>
<p>Ich habe dann (auch wenn es schon spät war) versucht, das nochmal in Bash abzubilden. Nur ein bisschen interessanter. Eine kleine Welt kam dabei heraus, wie schon damals ausgedacht. In dieser Welt passieren Dinge, die durch Zufall ausgewählt und gewichtet werden, was sich auf die Bewohner dieser &#8220;Welt&#8221; auswirkt. In meiner jetzigen Version sollte allerdings bisschen was passieren. Irgendwer musste da kämpfen oder sowas. Ich ließ also Zombies und Humans auf dieser Welt gemeinsam leben. Es werden neue Lebewesen geboren, sie sterben wieder, greifen einander an und so weiter.</p>
<p><center><a href="http://zwetschge.org/blog/wp-content/uploads/2010/10/ice-cream-zombie.jpg"><img class="aligncenter size-full wp-image-1316" title="ice-cream-zombie" src="http://zwetschge.org/blog/wp-content/uploads/2010/10/ice-cream-zombie.jpg" alt="" width="500" height="375" /></a></center></p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/10/ice-cream-zombie.jpg"></a>Im Klartext habe ich nichts anderes in dieses Bash-Script gepackt als die Anzahl der Menschen/Zombies auf der Welt und eine Hand voll Funktionen definiert, die &#8220;Events&#8221; darstellen, die von einer Schleife und einem Case bei jeder Runde zufällig ausgewählt werden. Das war&#8217;s auch schon. Eigentlich hat mich mehr der Grad an Zufälligkeit interessiert, der den Verlauf der erstellten Welt beeinflusst, wie viele Zombies greifen wie viele Menschen auf einer imaginären Farm an, können sich die Menschen wehren oder werden Sie von der Übermacht der Zombies einfach überrannt? Wie viele Opfer gibt es? Wer rottet wen zuerst aus?</p>
<p>Das war letzten Endes auch der Punkt der mich an ZRE (so hab ich das Script genannt) immernoch unterhält und amüsiert. Jedesmal wenn ich es starte, beginnt ein total neuer Verlauf dieser Welt, wer wann wo wen angreift und letzten Endes besiegt.</p>
<p>Ich hab das zombie-revolution-environment auf github hochgeladen. Ich weiss nicht wirklich was es ist, aber es unterhält mich.</p>
<p><a href="http://github.com/noqqe/zombie-revolution-environment">http://github.com/noqqe/zombie-revolution-environment</a><br />
<a href="http://github.com/noqqe/zombie-revolution-environment/raw/master/zre.bash">zombie-revolution-environment als RAW. </a></p>
<p>Usage ist relativ einfach.</p>
<p><code>$ wget http://github.com/noqqe/zombie-revolution-environment/raw/master/zre.bash<br />
$ ./zre.bash</code></p>
<p><a href="http://github.com/noqqe/zombie-revolution-environment/blob/master/zre.example">Ein beispielhafter Verlauf</a> klemmt auch in dem github Repository.</p>
<p>Für neue Ideen, Bugreports, Meinungen, Flamewars oder Shitstorms bin ich wie immer dankbar.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1314/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Twidge &#124; twidge-sh merged!</title>
		<link>http://noqqe.de/archives/1308</link>
		<comments>http://noqqe.de/archives/1308#comments</comments>
		<pubDate>Sat, 09 Oct 2010 16:29:37 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1308</guid>
		<description><![CDATA[Yay. Thanks to John Goerzen. http://github.com/jgoerzen/twidge/pull/19 twidge-sh im nächsten Ubuntu/Debian? Maybe.]]></description>
			<content:encoded><![CDATA[<p>Yay. Thanks to John Goerzen.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/10/twidge-pull.png"><img class="aligncenter size-full wp-image-1309" title="twidge-pull" src="http://zwetschge.org/blog/wp-content/uploads/2010/10/twidge-pull.png" alt="" width="500" height="139" /></a></p>
<p><a href="http://github.com/jgoerzen/twidge/pull/19">http://github.com/jgoerzen/twidge/pull/19</a></p>
<p>twidge-sh im nächsten Ubuntu/Debian? Maybe.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1308/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git &#124; Verschiedene Repos zusammenführen</title>
		<link>http://noqqe.de/archives/1302</link>
		<comments>http://noqqe.de/archives/1302#comments</comments>
		<pubDate>Sat, 09 Oct 2010 15:28:58 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[fetch]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[repos]]></category>
		<category><![CDATA[vereinen]]></category>
		<category><![CDATA[zusammenführen]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1302</guid>
		<description><![CDATA[In einem Anfall des Ordnungswahns entschloss ich mich im Mai (oder einem deren anderen 11 Monate des letzten Jahres) dazu, mein textbasiertes Wiki, meine Dotfiles und meine Scripte in separaten Git-Repos zu verwalten und zu verteilen. Mit der Zeit merkt man aber, dass das ziemlicher Unsinn war. Kurz: Ich brauchte eine Lösung, wie ich alle [...]]]></description>
			<content:encoded><![CDATA[<p>In einem Anfall des Ordnungswahns entschloss ich mich im Mai (oder einem deren anderen 11 Monate des letzten Jahres) dazu, mein textbasiertes Wiki, meine Dotfiles und meine Scripte in separaten Git-Repos zu verwalten und zu verteilen. Mit der Zeit merkt man aber, dass das ziemlicher Unsinn war.</p>
<p>Kurz: Ich brauchte eine Lösung, wie ich alle 3 Repositories (ohne History-Verlust) zusammen gemerged bekomme.</p>
<pre><code>/repos/
|-- dotfiles.git
|-- scripts.git
`-- wiki.git</code></pre>
<p>Hierfür hat <a href="http://zrajm.org/">Zrajm C Akfohg</a> schon eine <a href="http://zrajm.org/ref/git-repo-merging.html">wunderbare schnelle Lösung</a> gefunden.<br />
Zuerst ein neues Repo erstellen:</p>
<p><code>mkdir ~/repos/noqqe.git<br />
cd ~/repos/noqqe.git<br />
git init</code></p>
<p>Im Grunde wird jedes Repository in einen separaten Branch gefetched:</p>
<p><code>git fetch ~/repos/dotfiles master:dotfiles<br />
mkdir dotfiles #Subdir fuer dotfiles</code></p>
<p>Um die Files im neuen Branch jetzt in einen Unterordner umzumappen hat Zrajm auch einen wunderbaren Weg gefunden:</p>
<pre lang="bash">SUBDIR_NAME=dotfiles
BRANCH_NAME=dotfiles
git filter-branch --index-filter \
    'git ls-files -s | \
        sed "s-\t-&#038;'"$SUBDIR_NAME"'/-" | \
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info &#038;&#038; \
        mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE
    ' "$BRANCH_NAME"</pre>
<p>Wenn alles erfolgreich war, kann man den neuen Branch mit dem Master zusammenführen:</p>
<p><code>git merge dotfiles</code></p>
<p>und das Spiel wie beschrieben von vorne beginnen.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1302/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twitter on CLI &#124; Twidge Interactive Shell</title>
		<link>http://noqqe.de/archives/1285</link>
		<comments>http://noqqe.de/archives/1285#comments</comments>
		<pubDate>Tue, 05 Oct 2010 12:47:10 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[alias]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[cli-twitter]]></category>
		<category><![CDATA[customized]]></category>
		<category><![CDATA[follow]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[john goerzen]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[twidge-sh]]></category>
		<category><![CDATA[twidge-shell]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[twitter-shell]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1285</guid>
		<description><![CDATA[Seit längerem benutze ich John Goerzen&#8216;s CLI Twitter Client Twidge. Weniger zum Posten als zum Lesen, aber dennoch kann ich dieses Stück Software nicht mehr weg denken. Ich finde Twidge erntet allgemein zu wenig Beachtung. Wie dem auch sei, sieht eine durchschnittliche Nutzung von Twidge wie folgt aus: $ twidge setup $ twidge lsrecent &#60;timpritlove&#62; Verkannt, [...]]]></description>
			<content:encoded><![CDATA[<p>Seit längerem benutze ich <a href="http://www.complete.org/JohnGoerzen">John Goerzen</a>&#8216;s CLI Twitter Client <a href="http://wiki.github.com/jgoerzen/twidge/">Twidge</a>. Weniger zum Posten als zum Lesen, aber dennoch kann ich dieses Stück Software nicht mehr weg denken. Ich finde Twidge erntet allgemein zu wenig Beachtung. Wie dem auch sei, sieht eine durchschnittliche Nutzung von Twidge wie folgt aus:</p>
<p><code>$ twidge setup<br />
$ twidge lsrecent<br />
&lt;timpritlove&gt; Verkannt, ignoriert, nahezu vergessen - aber sinnvoll, nützlich und wertvoll: das Semikolon!<br />
[...]<br />
$ twidge update "Ich benutze gerade Twidge"</code></p>
<p>Bei intensiver Nutzung nervt die Syntax allerdings etwas. Deshalb hab ich mich hingesetzt und eine Twidge-Shell gebaut.</p>
<p>Die angepasste Shell &#8220;<a href="http://github.com/noqqe/twidge/blob/master/twidge-sh">twidge-sh</a>&#8221; kann einfach über Aufruf ./twidge-sh gestartet werden.</p>
<p><code>$ wget http://github.com/noqqe/twidge/raw/master/twidge-sh<br />
$ chmod +x twidge-sh<br />
$ ./twidge-sh<br />
noqqe@twitter&gt; lsrecent<br />
&lt;rivva&gt; Skype jetzt für Android verfügbar – Skype Blog auf<br />
Deutsch http://rivva.de/QajD<br />
[...]<br />
noqqe@twitter&gt; update "Ich benutze gerade Twidge-Shell"<br />
noqqe@twitter&gt; lsdm<br />
noqqe@twitter&gt; follow technicallife</code></p>
<p>Die Twidge-Shell hat weiterhin folgende Features:</p>
<ul>
<li>Der Prompt wird aus der .twidgerc generiert (username@service&gt;)</li>
</ul>
<ul>
<li> Alle Standart Kommandos  von Twidge werden automatisch komplettiert und sind benutzbar (z.B. user@service&gt; lsrecent)</li>
</ul>
<ul>
<li> Alle in der .twidgerc definierten Aliase werden übernommen und sind ebenfalls verwendbar. (z.B. user@service&gt; rls)</li>
</ul>
<ul>
<li> Die Twidge-Shell funktioniert weiterhin als ganz normale Shell mit allen Zusätzen und Funktionen.</li>
</ul>
<p>Ich habe mich dabei an Ryan Tomayko&#8217;s git-sh orientiert, der ähnliches für Git gebaut hat. Was übrigens auch wirklich gut funktioniert.</p>
<p><a href="http://github.com/noqqe/twidge">Mein Twidge-Fork auf Github (mit Twidge-sh)</a><br />
<a href="http://github.com/jgoerzen/twidge/">Twidge von John Goerzen</a><br />
<a href="http://packages.debian.org/search?keywords=twidge">Twidge zum Download für Debian</a><br />
<a href="http://packages.ubuntu.com/de/karmic/twidge">Twidge zum Download für Ubuntu</a><br />
<a href="http://github.com/noqqe/twidge/raw/master/twidge-sh">Twidge-Shell Script zum Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1285/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter OAuth &#124; Twidge reanimieren</title>
		<link>http://noqqe.de/archives/1262</link>
		<comments>http://noqqe.de/archives/1262#comments</comments>
		<pubDate>Wed, 29 Sep 2010 16:34:51 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Key]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[twidge]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1262</guid>
		<description><![CDATA[Da Twitter ja glorreicher Weise das Auth-Verfahren für Dritt-Software umgestellt hat, funktioniert mein Twitter-Logfile nun nicht mehr. Wie so manch anderer Client oder Schnittstelle. Die in Debian-Stable ausgelieferte Version 0.99.3 von Twidge unterstützt noch kein OAuth. Das mag jetzt niemandes Schuld sein. Denn warscheinlich liegt es weder am Author der Software, noch am Packaging. Wohl [...]]]></description>
			<content:encoded><![CDATA[<p>Da Twitter ja glorreicher Weise das Auth-Verfahren <a href="http://disfunctions.de/tutorials/twitter-oauth-gwibber-upgraden/">für Dritt-Software umgestellt</a> hat, funktioniert <a href="http://noqqe.de/archives/833">mein Twitter-Logfile</a> nun nicht mehr. Wie so manch anderer Client oder Schnittstelle. Die in Debian-Stable ausgelieferte Version 0.99.3 von Twidge unterstützt noch kein OAuth. Das mag jetzt niemandes Schuld sein. Denn warscheinlich liegt es weder am <a href="http://github.com/jgoerzen/twidge">Author der Software</a>, noch am <a href="http://packages.debian.org/squeeze/twidge">Packaging</a>. Wohl eher an der Zeit die ein Debian Paket braucht, um von Testing o. Unstable in Stable zu gelangen. Was auch gut so ist.</p>
<p>Da ich Twidge aber auch außerhalb des Logfiles sehr gerne benutze, behob ich das Problem durch Installieren der Testing-Version. Zu finden unter http://packages.debian.org/squeeze/twidge</p>
<p><code>$ twidge -v<br />
[...]<br />
This is Twidge, version 0.99.4.  Copyright (c) 2008 John Goerzen</code></p>
<p><code>$ wget http://ftp.de.debian.org/debian/pool/main/t/twidge/twidge_1.0.5_i386.deb</code></p>
<p><code>$ dpkg -i twidge_1.0.5_i386.deb<br />
Vorbereiten zum Ersetzen von twidge 0.99.4 (durch twidge_1.0.5_i386.deb) ...<br />
Entpacke Ersatz für twidge ...<br />
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von twidge:<br />
twidge hängt ab von libffi5 (&gt;= 3.0.4); aber:<br />
Paket libffi5 ist nicht installiert.<br />
dpkg: Fehler beim Bearbeiten von twidge (--install):<br />
Fehler traten auf beim Bearbeiten von:<br />
twidge</code></p>
<p><code>$ aptitude install libffi5<br />
Die folgenden NEUEN Pakete werden zusätzlich installiert:<br />
libffi5<br />
Die folgenden teilweise installierten Pakete werden konfiguriert:<br />
twidge<br />
Richte libffi5 ein (3.0.7-1) ...<br />
Richte twidge ein (1.0.5) ...<br />
Aktueller Status: 0 kaputt [-1].</code></p>
<p>Die aktuelle Version von Twidge wäre also somit installiert. Zwar mit dpkg, aber wenigstens wird nachher bei neuereren Versionen geupdated :). Twidge stellt jetzt einen (wie ich finde) hervorragend gelösten Konfigurationsweg für die neue OAuth.</p>
<p><code>$ twidge setup<br />
Please cut and paste this URL and open it in a web browser<br />
Click Allow when prompted.  You will be given a numeric<br />
key in your browser window.  Copy and paste it here.<br />
</code><code>https://api.twitter.com/oauth/authorize?oauth_token=xxx<br />
Authorization key: 123456789<br />
Successfully authenticated!<br />
Twidge has now been configured for you and is ready to use.</code></p>
<p>Hat irgendwie fast ein bisschen was von Wizard ;). Im Endeffekt sind es aber nur ein paar kleine Schritte:</p>
<ul>
<li>Url öffnen</li>
<li>&#8220;App&#8221; autorisieren oder &#8220;Erlauben&#8221;</li>
<li>App-Authkey kopieren</li>
<li>Twidge vorwerfen</li>
</ul>
<p>Danach kann man das Internet wieder mit dem eigenen daily Nonsense füllen. Mit einem CLI-Client :). Was mich nebenbei noch fasziniert hat: <a href="http://packages.ubuntu.com/search?lang=de&amp;searchon=names&amp;keywords=twidge">http://packages.ubuntu.com/search?lang=de&amp;searchon=names&amp;keywords=twidge</a> . Es gibt Twidge für Ubuntu also für Jaunty, Karmic und Maverick. Warum nicht für Lucid? Ich konnte es in meinen Quellen in Xubuntu (Lucid) auch nicht finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1262/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Futurama Zitate aus slashdot.org HTTP-Header auslesen</title>
		<link>http://noqqe.de/archives/1255</link>
		<comments>http://noqqe.de/archives/1255#comments</comments>
		<pubDate>Sun, 26 Sep 2010 12:56:42 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[futurama]]></category>
		<category><![CDATA[message of the day]]></category>
		<category><![CDATA[motd]]></category>
		<category><![CDATA[oneline]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[slashdot]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[welcome]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1255</guid>
		<description><![CDATA[Bin heute morgen über ein Easter-Egg von Slashdot.org gestolpert. HTTP-Header: $ curl -Is slashdot.org HTTP/1.1 200 OK Server: Apache/1.3.41 (Unix) mod_perl/1.31-rc4 SLASH_LOG_DATA: shtml X-Powered-By: Slash 2.005001 X-Fry: You'll barely regret this. X-XRDS-Location: http://slashdot.org/slashdot.xrds Cache-Control: no-cache [...] Bei so ziemlich jeder Anfrage steht an der Stelle ein neues Zitat. Da ich sowieso total auf Futurama stehe, [...]]]></description>
			<content:encoded><![CDATA[<p>Bin heute morgen über ein Easter-Egg von Slashdot.org <a href="http://www.eastereggs.svensoltmann.de/content/view/686/26/">gestolpert</a>. HTTP-Header:</p>
<p><code>$ curl -Is slashdot.org<br />
HTTP/1.1 200 OK<br />
Server: Apache/1.3.41 (Unix) mod_perl/1.31-rc4<br />
SLASH_LOG_DATA: shtml<br />
X-Powered-By: Slash 2.005001<br />
<strong>X-Fry: You'll barely regret this.</strong><br />
X-XRDS-Location: http://slashdot.org/slashdot.xrds<br />
Cache-Control: no-cache<br />
[...]</code></p>
<p>Bei so ziemlich jeder Anfrage steht an der Stelle ein neues Zitat. Da ich sowieso total <a href="http://noqqe.de/archives/995">auf Futurama stehe</a>, dachte ich mir ich baue die Zitate als Welcome-Message in meine Rechner ein:</p>
<p><code>$ curl -Is slashdot.org | sed -n '5p' | sed 's/^X-//'<br />
Bender: OK, but I don't want anyone thinking we're robosexuals.<br />
$ curl -Is slashdot.org | sed -n '5p' | sed 's/^X-//'<br />
Fry: I can burp the alphabet. A, B, D ... no, wait ...</code></p>
<p>Wenn ich aber bei allen meinen Rechnern die Zeile einbinde, hat das irgendwie ein bisschen was von DOS-Attacke. Muss ja nicht sein. Mit einem Einzeiler hab ich mir die Quotes erstmal alle besorgt:</p>
<pre><code>target="/path/to/file/018" ; while true ; do quote="$(curl -Is slashdot.org |sed -n '5p' |sed 's/^X-//')" ; if [ $(grep "$quote" $target |wc -l) -lt 1 ]; then echo $quote &gt;&gt; $target ; echo $quote ; sleep 1 ; fi ; done</code></pre>
<p>Hier gibt&#8217;s alle Quotes die der Einzeiler bis jetzt gesammelt hat: <a href="http://zwetschge.org/paste/018">http://zwetschge.org/paste/018</a></p>
<p>Futurama Quotes beim Login unter Ubuntu:</p>
<p><code>$ wget http://zwetschge.org/paste/018 -O  ~/.futurama<br />
$ vi ~/.bashrc<br />
quotes="$HOME/.futurama"<br />
if [[ $- == *i* ]]; then<br />
echo " "<br />
rnd=$((RANDOM % $(cat $quotes | wc -l)+3)) ; sed -n "${rnd}p" $quotes<br />
fi</code></p>
<p>Einloggen oder Shell starten sieht dann wie folgt aus:</p>
<p><code>$ ssh user@host<br />
user@host password:<br />
Linux host 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:27:30 UTC 2010 i686 GNU/Linux<br />
Ubuntu 10.04 LTS<br />
[...]<br />
You have new mail.<br />
Bender: You can't count on God for jack! He pretty much told me so himself.<br />
user@host:~$</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1255/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>tismc &#124; This is static markdown content!</title>
		<link>http://noqqe.de/archives/1243</link>
		<comments>http://noqqe.de/archives/1243#comments</comments>
		<pubDate>Sun, 19 Sep 2010 14:09:00 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[static]]></category>
		<category><![CDATA[tismc]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1243</guid>
		<description><![CDATA[Vorher noch nie gehört? Kann auch gar nicht sein. Obacht, Eigengewächs. Das sich gerade formierende Hobby-Eishockey-Team, dem ich angehöre, war bisher ohne großartige HomePage ausgekommen. Es bestanden kleine Basteleien unseren Captains, aber so wirklich vollständig war das dann auch nicht. Ich machte mich auf die Suche nach einem minimalen CMS. Irgendwas kleines Schönes, in dem [...]]]></description>
			<content:encoded><![CDATA[<p>Vorher noch nie gehört? Kann auch gar nicht sein. Obacht, Eigengewächs.</p>
<p>Das sich gerade formierende Hobby-Eishockey-Team, dem ich angehöre, war bisher ohne großartige HomePage ausgekommen. Es bestanden kleine Basteleien unseren Captains, aber so wirklich vollständig war das dann auch nicht. Ich machte mich auf die Suche nach einem minimalen CMS. Irgendwas kleines Schönes, in dem wir unseren minimalen Content unterbringen können. Ausmaße wie etwa <a href="http://mytinytodo.net">Mytinytodo</a> für Todo-Listen (von dem ich sehr begeistert bin ;) ). Ich wurde nicht wirklich fündig. Alle Tipps die ich bekam waren zu umfangreich und somit einfach Overkill.</p>
<p>Die Sache schlief irgendwie 1-2 Monate ein, bis ich von der <a href="daringfireball.net/projects/markdown/">Markdown</a>-Language gehört habe. Diese Mischung aus .txt-File Syntax und HTML-Generator gefiel mir und ich dachte wieder an die Hockey-Page. Muss es immer PHP und SQL sein? Eigentlich nicht.</p>
<p>Der Plan war: In einen Unterordner content/ für jede Seite ein *.markdown-File zu laden, aus welchem generisch die .html Files gebaut werden. Umgeben Natürlich von header.tmpl und footer.tmpl. Auf dem Filesystem sieht das in etwa so aus:</p>
<pre><code>|-- content
|   |-- 001.impressum.markdown
|   |-- 001.index.markdown
|   `-- 002.index.markdown
|-- css
|   |-- readme.txt
|   `-- style.css
|-- impressum.html
|-- index.html
|-- tismc.bash
`-- tmpl
      |-- footer.tmpl
      `-- header.tmpl</code></pre>
<p>Ein kleines Bashscript durchsucht den content/-Ordner und baut für jedes gefundene .markdown-File die HTML-Page.</p>
<p><code>$ ./tismc.bash<br />
page-dir is now /path/to/homepage<br />
--- parsing impressum.html<br />
adding header<br />
parsing content/001.impressum.markdown<br />
adding footer<br />
--- parsing index.html<br />
adding header<br />
parsing content/002.index.markdown<br />
parsing content/001.index.markdown<br />
adding footer</code></p>
<p>So kann auch mein Captain oder andere Dritte, neue Inhalte in die Page hochladen. Denn Markdown-Syntax ist nicht wirklich <a href="http://markdown.de/syntax/">kompliziert</a>. Allerdings gab es da noch ein Problem. Eigentlich drei. Die hießen header.tmpl, footer.tmpl und style.css. Ich bin in solchen Design-Dingen sehr schlecht, aber mein Berufsschulkollege <a href="http://savier.zwetschge.org">Holger</a>, der öfters mal wunderschöne Templates aus dem Ärmel schüttelt, sagte natürlich nicht nein und erstellte mir die nötigen Files &lt;3. Unter <a href="http://ice-bullocks.zwetschge.org">http://ice-bullocks.zwetschge.org</a> kann man das Ergebnis begutachten. Sind Leberkäse-Brötchen eigentlich anerkannte Währung unter Designern ?</p>
<p>Den Source zum Anschauen gibts unter:<br />
<a href="http://git.zwetschge.org/?p=this-is-static-markdown-content.git;a=blob;f=tismc.bash">bash-script</a><br />
<a href="http://git.zwetschge.org/?p=this-is-static-markdown-content.git;a=tree">Homepage-Dir</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1243/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google &#124; Dank der US-Army ist mir Street-View egal.</title>
		<link>http://noqqe.de/archives/1238</link>
		<comments>http://noqqe.de/archives/1238#comments</comments>
		<pubDate>Tue, 07 Sep 2010 17:19:26 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[army]]></category>
		<category><![CDATA[einspruchsfristen]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[grafenwöhr]]></category>
		<category><![CDATA[street]]></category>
		<category><![CDATA[streetview]]></category>
		<category><![CDATA[truppenübungsplatz]]></category>
		<category><![CDATA[usarmy]]></category>
		<category><![CDATA[verpixelt]]></category>
		<category><![CDATA[view]]></category>
		<category><![CDATA[zensur]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1238</guid>
		<description><![CDATA[Es gibt eigentlich zwei Gründe warum die ganze Google Streetview Diskussion regungslos an mir vorbei zieht. Der Erste ist wie bei den meisten üblich Gleichgültigkeit. Der Zweite (und wesentlich Interessantere) ist allerdings, dass ich nahe dem Truppenübungsplatz Grafenwöhr wohnhaft bin. Dieser Stützpunkt der United States Army Europe ist einer der größten in Europa auf deinen scharf [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt eigentlich zwei Gründe warum die ganze Google Streetview Diskussion regungslos an mir vorbei zieht. Der Erste ist wie bei den meisten üblich Gleichgültigkeit. Der Zweite (und wesentlich Interessantere) ist allerdings, dass ich nahe dem <a href="http://de.wikipedia.org/wiki/Truppen%C3%BCbungsplatz_Grafenw%C3%B6hr">Truppenübungsplatz Grafenwöhr</a> wohnhaft bin. Dieser Stützpunkt der United States Army Europe ist einer der größten in Europa auf deinen scharf geschossen wird und unter anderem auch einen Militärflughafen beherbergt.</p>
<p>Wenn man dieses Gebiet via Google Maps nun genauer unter die Lupe nimmt stellt man fest, dass ziemlich rechteckig um diesen Übungsplatz herum eine deutlich weniger hohe Auflösung verfügbar ist als für die restliche Umgebung.</p>
<p>Zur Veranschaulichung eine <a href="http://maps.google.de/maps/ms?ie=UTF8&amp;t=h&amp;hl=de&amp;msa=0&amp;msid=112531280274380882803.00048f986e29daaba410a&amp;ll=49.67696,11.685677&amp;spn=0.152181,0.445976&amp;z=12"><strong>Map (vollständiger Link)</strong></a></p>
<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.de/maps/ms?ie=UTF8&amp;t=h&amp;hl=de&amp;msa=0&amp;msid=112531280274380882803.00048f986e29daaba410a&amp;ll=49.67696,11.685677&amp;spn=0.152181,0.445976&amp;output=embed"></iframe><br /><small><a href="http://maps.google.de/maps/ms?ie=UTF8&amp;t=h&amp;hl=de&amp;msa=0&amp;msid=112531280274380882803.00048f986e29daaba410a&amp;ll=49.67696,11.685677&amp;spn=0.152181,0.445976&amp;source=embed" style="color:#0000FF;text-align:left">Grafenwöhr Truppenübungsplatz</a> auf einer größeren Karte anzeigen</small></p>
<p>Wer kurz damit herumspielt erkennt, dass nicht mal ein Haus in nahe gelegenen Städten durch den Zoom auszumachen ist. Und wird Google hier wohl eines von ihren Street View-Autos durch schicken ? Eher nicht.</p>
<p>Interessant finde ich aber, von wem diese regionale Zensur ausgeht und wieso. Aus Angst vor Terror?</p>
<p>Wie dem auch sei. Google Street View ist für mich kein Thema.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1238/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bash &#124; watch -n mal anders</title>
		<link>http://noqqe.de/archives/1230</link>
		<comments>http://noqqe.de/archives/1230#comments</comments>
		<pubDate>Sun, 05 Sep 2010 18:58:33 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1230</guid>
		<description><![CDATA[watch -n 1 "arp -a &#124; grep 192.168.1.12" watch hat die blöde Angewohnheit, den aktuellen Screen immer zu leeren. Gerade beim oberen Beispiel ist das von Nachteil (IP-Konflikt nachvollziehen), da der Vergleichswert wegfällt. Quick&#38;Dirty die Lösung: while true; do arp -a &#124; grep 192.168.1.12 ; sleep 0.2 ; done \_________/ &#124;  \____/  \________________/   \_______/  \____/ [...]]]></description>
			<content:encoded><![CDATA[<p><code>watch -n 1 "arp -a | grep 192.168.1.12"</code></p>
<p><a href="http://linux.about.com/library/cmd/blcmdl1_watch.htm">watch</a> hat die blöde Angewohnheit, den aktuellen Screen immer zu leeren. Gerade beim oberen Beispiel ist das von Nachteil (IP-Konflikt nachvollziehen), da der Vergleichswert wegfällt. Quick&amp;Dirty die Lösung:</p>
<pre><code>while true; do arp -a | grep 192.168.1.12 ; sleep 0.2 ; done
\_________/ |  \____/  \________________/   \_______/  \____/
     |      |     |             |               |         |
     |      |     |             |               |         \- Schleifenen
     |      |     |             |               |            de
     |      |     |             |               |
     |      |     |             |               \- danach 0.2 Sekunden
     |      |     |             |                  pausieren
     |      |     |             |
     |      |     |             \- nach bestimmter Adresse suchen
     |      |     |
     |      |     \- arp-table ausgeben
     |      |
     |      \- fuehre aus
     |
     \- bis strg+c</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Explain &#124; Shell-Kommandos visualisiert erklären</title>
		<link>http://noqqe.de/archives/1224</link>
		<comments>http://noqqe.de/archives/1224#comments</comments>
		<pubDate>Sun, 29 Aug 2010 20:31:32 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dokumentation]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[python script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vain]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1224</guid>
		<description><![CDATA[Neulich bin ich über das github Profil von Peter Hofmann gestolpert. Darin befand sich ein Projekt, welches ich sehr interessant fand. Explain versucht Shell Kommandos zu erklären und zu visualisieren. Gerade für Blogs oder andere Dokumentationen finde ich das mehr als sinnvoll. Es erstellt aus einem simpel gestricktem Markdown File eine ASCII-Art ähnliche Erläuterung des [...]]]></description>
			<content:encoded><![CDATA[<p>Neulich bin ich über das <a href="http://github.com/vain">github Profil</a> von <a href="http://uninformativ.de">Peter Hofmann</a> gestolpert. Darin befand sich ein Projekt, welches ich sehr interessant fand.</p>
<p><a href="http://github.com/vain/explain">Explain</a> versucht Shell Kommandos zu erklären und zu visualisieren. Gerade für Blogs oder andere Dokumentationen finde ich das mehr als sinnvoll. Es erstellt aus einem simpel gestricktem Markdown File eine ASCII-Art ähnliche Erläuterung des Kommandos. Beispielsweise:</p>
<pre><code>$ ./explain.py command.markdown
find . -iname '*.png' -exec echo '&lt;br&gt;&lt;img src="{}"&gt;' \; &gt; gallery.html
\__/ | \___________/  \________/ \___________________/ |  \___________/
  |  |       |             |               |           |        |
  |  |       |             |               |           |        \- Ausgeben nach
  |  |       |             |               |           |           gallery.html
  |  |       |             |               |           |
  |  |       |             |               |           \- find Syntax Ende.
  |  |       |             |               |
  |  |       |             |               \- mit folgendem Inhalt aus.
  |  |       |             |
  |  |       |             \- und führe echo
  |  |       |
  |  |       \- alle Dateien die mit .png enden
  |  |
  |  \- im aktuellen Verzeichnis
  |
  \- Finde (via find)</code></pre>
<p>(PlainText: <a href="http://zwetschge.org/paste/015">http://zwetschge.org/paste/015</a>)</p>
<p>Die Syntax des Files das zur Deklaration der Ausgabe dient:</p>
<pre><code>find . -iname '*.png' -exec echo '&lt;br&gt;&lt;img src="{}"&gt;' \; &gt; gallery.html
---- ! -------------  ---------- --------------------- ! -------------

Finde (via find)

im aktuellen Verzeichnis

alle Dateien die mit .png enden

und führe echo

mit folgendem Inhalt aus.

find Syntax Ende.

Ausgeben nach gallery.html</code></pre>
<p>Die Trennzeichen  sind via Parameter austauschbar und auch ansonsten tut das kleine Python Script seinen Job hervorragend. Sollte demnächst mal wieder ein Kommando erläutert werden müssen, werde ich definitiv darauf zurückgreifen. Weitere Beispiele auch unter:</p>
<p>[1] <a href="http://www.uninformativ.de/?section=news&amp;ndo=single&amp;newsid=118">http://www.uninformativ.de/?section=news&amp;ndo=single&amp;newsid=118</a><br />
[2] <a href="http://github.com/vain/explain">http://github.com/vain/explain</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1224/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gitosis &#124; Zweischneidigkeit des Auth-Verfahrens</title>
		<link>http://noqqe.de/archives/1208</link>
		<comments>http://noqqe.de/archives/1208#comments</comments>
		<pubDate>Wed, 25 Aug 2010 18:06:47 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[denied]]></category>
		<category><![CDATA[deny]]></category>
		<category><![CDATA[dsa]]></category>
		<category><![CDATA[ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[gitosis-serve]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[PTY allocation request failed on channel 0]]></category>
		<category><![CDATA[publickey]]></category>
		<category><![CDATA[pulic]]></category>
		<category><![CDATA[rsa]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sshlogin]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1208</guid>
		<description><![CDATA[Ein Nachtrag und zugleich ein ganz besonders unschöner Zustand kam mir gestern unter die Finger. Gitosis benutzt bekanntermaßen SSH-Public-Keys zum authentifizieren der User, die in Git-Repositories arbeiten dürfen. Dieser Austausch zwischen Reporitory und Arbeitskopie passiert ebenfalls über SSH-Port 22. Die Benutzer, die sich dort anmelden, dürfen allerdings keinen direkten SSH-Zugriff bekommen. Soweit die Theorie. Wenn [...]]]></description>
			<content:encoded><![CDATA[<p>Ein <a href="http://noqqe.de/archives/1175">Nachtrag</a> und zugleich ein ganz besonders unschöner Zustand kam mir gestern unter die Finger. Gitosis benutzt bekanntermaßen SSH-Public-Keys zum authentifizieren der User, die in Git-Repositories arbeiten dürfen. Dieser Austausch zwischen Reporitory und Arbeitskopie passiert ebenfalls über SSH-Port 22. Die Benutzer, die sich dort anmelden, dürfen allerdings keinen direkten SSH-Zugriff bekommen. Soweit die Theorie.</p>
<p>Wenn man seinen Public-Key also Gitosis zur automatischen Authentifizierung vorwirft, wird man in das System der Git-Benutzer eingespeißt.</p>
<p><code>cp id_rsa.pub ~/gitosis/keydir/user@host.pub<br />
git add keydir/*<br />
git commit -a -m "user hinzugefügt"<br />
git push</code></p>
<p>Bei erneuter Anmeldung an das System passiert folgendes:</p>
<p><code>$ ssh user@gitserver.domain.com<br />
PTY allocation request failed on channel 0<br />
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.<br />
Connection to git closed.</code></p>
<p>Ich darf mich also nicht mehr einloggen. Bin ich normaler Benutzer, der wirklich nur mit git arbeiten darf, ist das auch gut so. Denn so wird die Sicherheit des Systems gewahrt. Bin ich allerdings Administrator des git-Remote-Servers sieht das anders aus. Ich habe ab diesem Zeitpunkt keine Möglichkeit mehr mein System (auf gewohntem Wege) zu pflegen.</p>
<p>Die Verbose-Ausgabe von ssh lässt darauf schließen was passiert:</p>
<p><code>$ ssh -v user@gitserver.domain.com<br />
debug1: Authentications that can continue: publickey,password<br />
debug1: Next authentication method: publickey<br />
debug1: Trying private key: /home/user/.ssh/identity<br />
debug1: Offering public key: /home/user/.ssh/id_rsa<br />
debug1: Remote: Forced command: gitosis-serve user@host<br />
debug1: Remote: Port forwarding disabled.<br />
debug1: Remote: X11 forwarding disabled.<br />
debug1: Remote: Agent forwarding disabled.<br />
debug1: Remote: Pty allocation disabled.<br />
debug1: Server accepts key: pkalg ssh-rsa blen 277<br />
debug1: read PEM private key done: type RSA<br />
debug1: Remote: Forced command: gitosis-serve user@host<br />
debug1: Remote: Port forwarding disabled.<br />
debug1: Remote: X11 forwarding disabled.<br />
debug1: Remote: Agent forwarding disabled.<br />
debug1: Remote: Pty allocation disabled.<br />
debug1: Authentication succeeded (publickey).<br />
PTY allocation request failed on channel 0<br />
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.<br />
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0<br />
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0<br />
debug1: channel 0: free: client-session, nchannels 1<br />
Connection to git closed.</code></p>
<p>Die Authentifizierung mit meinen Public-Key klappt zwar, aber ich werde in eine gitosis-serve ssh-session gezwungen und damit bleibt mir der ssh-zugang ins System verwehrt. Nicht mit dieser Situation rechnend, starrte ich völlig perplex auf mein Terminal und die Reverse-Engeneering-Abteilung in meinem Kopf ratterte vor sich hin. Was passiert da und warum passiert das? Und vor allem: Wie komme ich jetzt wieder auf den Server?<br />
<br />
<h3>Solve it!</h3>
<p><strong>1. Public-Key Auth deaktivieren</strong><br />
Ohne PubKey Auth, wird der ssh-daemon nicht erkennen, das er mir eine git-serve session geben müsste. Dem lokalen ssh-client beizubringen sich nicht mit dem Public-Key am entfernten System anzumelden, wäre also eine Lösung (aber keine Schöne). Folgende Konfiguration führt dazu.<br />
<code>$ vi ~/.ssh/config<br />
Host git<br />
HostName gitserver.domain.com<br />
User root<br />
pubkeyauthentication no<br />
</code></p>
<p><strong>2. Different User</strong><br />
Die Alternative zu dieser dauerhaften Veränderung ist (wenn vorhanden) einen anderen Benutzer zu verwenden um sich ins System einzuloggen und erst anschließend zu root zu werden.</p>
<p><strong>3. gitosis-serve zurechtstutzen</strong><br />
Nachdem der Zugriff auf das System  wiederhergestellt ist, gehts zum Bugfix (gitosis-serve). gitosis muss diesen Umstand in irgendeiner ssh-config erzwingen. Ich verstehe nicht ganz warum, aber gitosis schrieb mir diese Änderungen in /root/.ssh/authorized_keys.</p>
<p><code>command="gitosis-serve user@host",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AABBB3NzaC1yc2EAAAABIwAAAQEAyjwZCinCmB4oJJZ4RuiSqrQmiYE8+C+JKpTmiPkdfojUbiB9gm3BOhsYAdu99vP7yDOaIqg9e2dk/4HGm+P8obUR7lVrinMf5NvoRkOa8EfGdPJRz4ABOGRDte454bwestyWlvLhnKyWd+a9lU07siDJg5b1NbitIXkXa76V+lGMrqkixaDC6meZQEjZlxnVMpgzC5wyEQy2cVwUnX+Swiw68gsHsMYKBNsiVgNQ7nY8fa5lhV13E6L2aYAIorVpudS1bTiQfvfXCpVtJkJVSNPP6RzUtuSSErhsqOn1o2QtVjWhH5J/Y0D1b4eeEAgmdhq7554kQupJ9LgRww== user@host</code></p>
<p>Dieser Eintrag ist für das Verhalten verantwortlich. Auskommentieren oder entfernen aller Parameter bis ssh-rsa fixt das Problem . Happy Committing.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1208/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Git &#124; Dateien wiederherstellen</title>
		<link>http://noqqe.de/archives/1201</link>
		<comments>http://noqqe.de/archives/1201#comments</comments>
		<pubDate>Wed, 18 Aug 2010 20:53:13 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[checkout]]></category>
		<category><![CDATA[datei]]></category>
		<category><![CDATA[dateien]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[git checkout]]></category>
		<category><![CDATA[HEAD]]></category>
		<category><![CDATA[recover]]></category>
		<category><![CDATA[retten]]></category>
		<category><![CDATA[verloren]]></category>
		<category><![CDATA[wiederherstellen]]></category>
		<category><![CDATA[zurückholen]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1201</guid>
		<description><![CDATA[Versehentlich gelöschte Dateien recovern. Schön wenn einem dann klar wird, warum man ein VCS benutzt. In der Annahme das wahrscheinlich mehr als genug (genug == >3) Blogs oder HowTo&#8217;s diese Thematik bereits behandeln, erstelle ich trotzdem kurz einen Post, wie sich Dateien mit Git zurückholen lassen. Datei ging gerade eben verloren aus aktuellem HEAD wiederherstellen: [...]]]></description>
			<content:encoded><![CDATA[<p>Versehentlich gelöschte Dateien recovern. Schön wenn einem dann klar wird, warum man ein VCS benutzt. In der Annahme das wahrscheinlich mehr als genug (genug == >3) Blogs oder HowTo&#8217;s diese Thematik bereits behandeln, erstelle ich trotzdem kurz einen Post, wie sich Dateien mit Git zurückholen lassen.</p>
<p><strong>Datei ging gerade eben verloren</strong><br />
 aus aktuellem HEAD wiederherstellen:<br />
<code>$ git checkout HEAD -- verloren.txt</code></p>
<p><strong>Datei hat vor gewisser Zeit einmal existiert</strong><br />
Aus vorher gegangenem Commit, Branch oder Tag. Feststellen, wo das File noch existiert haben könnte:<br />
<code>$ git log --oneline<br />
5aadc10 formatierte Ausgabe<br />
88e22fb Aufräumaktion<br />
746f92c bugfix #1234<br />
ee8a1da initial commit</code></p>
<p>Vorletzter Commit 88e22fb betitelt mit &#8220;Aufräumaktion&#8221; lässt stark darauf schließen, dass hier etwas verloren gegangen sein könnte. Checkout lässt sich eigentlich mit so ziemlich allem füttern, was ein Object ist und anhand eines SHA1 Hashwertes identifizieren lässt. Gewählt wird der Commit <em>vor</em> der Aufräumaktion.</p>
<p><code>git checkout 746f92c -- verloren.txt</code></p>
<p>Nachdem die Datei nun wieder im aktuellen Working-Directory liegt:</p>
<p>via git-add hinzufügen<br />
<code>git add verloren.txt </code></p>
<p>und Commit absetzen.<br />
<code>git commit -a -m "Ich werde ab jetzt besser aufpassen"</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1201/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git &#124; Dotfiles des Home-Dirs verwalten</title>
		<link>http://noqqe.de/archives/1192</link>
		<comments>http://noqqe.de/archives/1192#comments</comments>
		<pubDate>Mon, 16 Aug 2010 17:42:48 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[xubuntu]]></category>
		<category><![CDATA[automatisierung]]></category>
		<category><![CDATA[dotfiles]]></category>
		<category><![CDATA[dotfiles verwalten]]></category>
		<category><![CDATA[git hook]]></category>
		<category><![CDATA[gitrepo]]></category>
		<category><![CDATA[homedir]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[post-commit]]></category>
		<category><![CDATA[post-update]]></category>
		<category><![CDATA[pre-commit]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1192</guid>
		<description><![CDATA[Permanent an verschiedenen Workstations zu sitzen hat Nachteile. Heimrechner(Xubuntu), Arbeits-PC(Xubuntu), Macbook und im blödsten Fall noch (private) Server. An all diesen Maschinen entwickelt man Vorlieben, bestimmte Software zu bedienen, entsprechend anzupassen oder zu konfigurieren. Es müssen nicht mal elementare Sachen sein. Selbst nicht vorhandene triviale Kleinigkeiten wie zum Beispiel Anpassungen der .dircolors oder .bashrc bzw. [...]]]></description>
			<content:encoded><![CDATA[<p>Permanent an verschiedenen Workstations zu sitzen hat Nachteile. Heimrechner(Xubuntu), Arbeits-PC(Xubuntu), Macbook und im blödsten Fall noch (private) Server. An all diesen Maschinen entwickelt man Vorlieben, bestimmte Software zu bedienen, entsprechend anzupassen oder zu konfigurieren. Es müssen nicht mal elementare Sachen sein. Selbst nicht vorhandene triviale Kleinigkeiten wie zum Beispiel Anpassungen der .dircolors oder .bashrc bzw. .bash_aliases sind manchmal extrem nervig.</p>
<blockquote><p>&#8220;Warum funktioniert mein Alias hier eigent&#8230;..ah. Falscher Host :/ &#8220;</p></blockquote>
<p>Das brauche ich hier warscheinlich niemandem weiter erläutern ;)</p>
<p>Grundsätzlich bemühte ich mich einen kleinen Satz ausgewählter .dotfiles meiner Home-Verzeichnisse auf neue Systeme zu kopieren bzw zu aktualiseren. Aber bei einer Änderung &gt;4 Hosts neu umkopieren? Oder Änderungen sogar per Hand separat ausführen? Jedenfalls entwickelt mit der Zeit jeder, der auf diese Problemstellung trifft, seinen eigenen Weg alle Dotfiles synchron zu halten. Hier ist nun der (seit neuestem) Meinige.</p>
<p>Ich benutze ein Git-Repository. In diesem Repo befinden sich alle Dotfiles die ich im alltäglichen Gebrauch benötige. Das sieht ungefähr so aus:</p>
<pre><code>dotfiles/
|-- .bashrc
|-- coming-home.bash
|-- .csshrc
|-- .dircolors
|-- .dmrc
|-- .git/
|-- .gitconfig
`-- .vimrc</code></pre>
<p>(Aus Gründen der Lesbarkeit gekürzt)</p>
<p>Alle Änderungen, die für die Configs anstehen, kann ich nun hier tätigen. Füge neue Aliase hinzu, ändere meine Editor einstellungen für Vim oder ähnliches. Für die automatische Einrichtung habe ich &#8220;<a href="http://gist.github.com/527325">coming-home.bash</a>&#8221; geschrieben. Das Script filtert automatisch alle Verzeichnisse(., .., .git) und Files (z.B. das Script selbst) die nicht ins $HOME-Verzeichnis gehören und kopiert alles was übrig bleibt in das Home-Dir des aktuellen Benutzers.</p>
<pre lang="Bash">#!/bin/bash
# get dotfiles
dotfiles=$(ls -la | grep -v ^d | awk '{print $8}'| grep -v ^coming-home.bash$ )
mode=${1:-normal}

for x in $dotfiles; do
    # fishing errors
    if [ ! -e $x ] ; then echo "error reading files" ; exit 1 ; fi
    # keep old .bashrc
    if [ $x = ".bashrc" ]; then
        if [ ! -e $HOME/.bashrc_old ]; then
            cp $HOME/.bashrc $HOME/.bashrc_old
        fi
    fi
    # forced hook
    if [ $mode = "--hook" ]; then echo "hook: copying $x" ; /bin/cp -r $x $HOME/ ; fi
    # standard run
    if [ $mode != "--hook" ]; then /bin/cp -i $x $HOME/ ; fi
done</pre>
<p>Git bietet weiterhin noch schöne Möglichkeiten, Operationen bei Änderungen automatisch ausführen zu lassen. <a href="http://www.kernel.org/pub/software/scm/git/docs/githooks.html">Hooks</a>. Ein post-commit-Hook führt das Skript jetzt nach jeder eingespeicherten Änderung automatisch aus.</p>
<p>.git/hooks/post-commit:</p>
<pre><code>#!/bin/bash
$GIT_DIR/../coming-home.bash --hook</code></pre>
<p>Anwendungsbeispiel:</p>
<pre><code>$ git commit -a -m "added aliases and changed colors in vimrc"
hook: copying .bashrc
hook: copying .csshrc
hook: copying .dircolors
hook: copying .dmrc
hook: copying .gitconfig
hook: copying .vimrc</code></pre>
<p>So kann ich jetzt Änderungen der Dotfiles im Git-Repo durchführen und habe diese gleich darauf im Home-Verzeichnis. Dieses Repo existiert (über einen Git-Server verwaltet) auf jedem meiner Hosts.  Um im Fallbeispiel zu bleiben: Gehe ich morgen in die Arbeit, aktualisiere ich das (auch dort vorhandene) Repo und führe coming-home.bash aus.</p>
<p>By the Way: An dieser Stelle habe ich auch über Automatisierung nachgedacht. Git-Hooks gibt es für die verschiedensten Situationen:</p>
<blockquote><p>Pre-Commit (vor speichern einer Änderung)<br />
Post-Update (Nach dem pushen auf den Server)<br />
usw.</p></blockquote>
<p>Für eine Situation darf es diese Automatisierung aber nicht geben. Nämlich nach dem post-clone (unmittelbar nach dem Herunterladen eines Repos). Automatische Skripte die nach dem Herunterladen ausgeführt werden könnten große Schäden anrichten, wenn man so drüber nachdenkt.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1192/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Bash &#124; NerdTool Config for MacOSX</title>
		<link>http://noqqe.de/archives/1182</link>
		<comments>http://noqqe.de/archives/1182#comments</comments>
		<pubDate>Sun, 15 Aug 2010 11:44:27 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[daemons]]></category>
		<category><![CDATA[established]]></category>
		<category><![CDATA[geektool]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hostname]]></category>
		<category><![CDATA[listen]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[nerdtool]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[processes]]></category>
		<category><![CDATA[ps aux]]></category>
		<category><![CDATA[ram]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[skript]]></category>
		<category><![CDATA[uptime]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1182</guid>
		<description><![CDATA[GeekTool und NerdTool für MacOSX sind schöne Programme, welche Ausgaben von Bash-Scripten auf den Desktop ausgeben und ständig aktualiseren. Kein Geheimnis und nichts Neues. Das Netz ist voll von schönen Spielereien für diese Tools. Hier mein Setup. (Benutze Nerdtool, Script ist aber unabhängig von der Software) Bash-Script: http://gist.github.com/525385 ESC=$(printf "\e") echo "$ESC[34;47mDATE$ESC[0m" date echo "" [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://projects.tynsoe.org/en/geektool/">GeekTool</a> und <a href="http://www.macupdate.com/info.php/id/31909/nerdtool">NerdTool</a> für MacOSX sind schöne Programme, welche Ausgaben von Bash-Scripten auf den Desktop ausgeben und ständig aktualiseren. Kein Geheimnis und nichts Neues.<br />
Das Netz ist voll von schönen Spielereien für diese Tools. Hier mein Setup. (Benutze Nerdtool, Script ist aber unabhängig von der Software)</p>
<p><center><a href="http://zwetschge.org/blog/wp-content/uploads/2010/08/Bildschirmfoto-2010-08-15-um-13.19.43.png"><img class="aligncenter size-medium wp-image-1184" title="Bildschirmfoto 2010-08-15 um 13.19.43" src="http://zwetschge.org/blog/wp-content/uploads/2010/08/Bildschirmfoto-2010-08-15-um-13.19.43-300x187.png" alt="" width="300" height="187" /></a></center></p>
<p>Bash-Script: <a href="http://gist.github.com/525385">http://gist.github.com/525385</a></p>
<pre><code>ESC=$(printf "\e")
echo "$ESC[34;47mDATE$ESC[0m"
date
echo ""
echo "$ESC[34;47mUPTIME$ESC[0m"
uptime
echo ""
echo "$ESC[34;47mSTATUS$ESC[0m"
top -l1 -u -o cpu -S | head -n 12
echo ""
echo "$ESC[34;47mEstablished$ESC[0m"
lsof -i -n | grep -i established | awk '{print $1" "$8" "$9 }' | head -n 18
echo ""
echo "$ESC[34;47mListen$ESC[0m"
lsof -i -n | grep -i listen | awk '{print $1" "$8" "$9 }' | head -n 18 </code></pre>
<p>Besonderheit hierbei: Der Escape-Character muss so _zwingend_ wie beschrieben eingesetzt werden. Normale Ausgabe wird nicht entsprechend wahrgenommen. Er ist nötig um die Farbtöne innerhalb des Scripts zu managen ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1182/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gitosis &#124; Debugging, Undokumentiertes und Konfiguration</title>
		<link>http://noqqe.de/archives/1175</link>
		<comments>http://noqqe.de/archives/1175#comments</comments>
		<pubDate>Thu, 12 Aug 2010 18:46:44 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[accounting]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[gitdaemon]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[gitosis hacking]]></category>
		<category><![CDATA[gitosis-admin.git/hooks/post-update]]></category>
		<category><![CDATA[gitosis.conf]]></category>
		<category><![CDATA[gitserver]]></category>
		<category><![CDATA[gitweb]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[keydir]]></category>
		<category><![CDATA[loglevel]]></category>
		<category><![CDATA[post-update]]></category>
		<category><![CDATA[pubkey]]></category>
		<category><![CDATA[public key]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[subdirectories]]></category>
		<category><![CDATA[subdirs]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[unterordner]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1175</guid>
		<description><![CDATA[Aktuell setze ich mich mit Gitosis auseinander. Ja, auseinander setzen ist gut ausgedrückt. Dieses widerspenstige, (standardmäßig) wenig gesprächige und nur oberflächlich dokumentierte Stück Software sträubt sich vehement gegen den tieferen Einsatz und komplexeren Ordnerhierarchien. Also im Klartext: Ich finde Gitosis super. Der Ansatz ist gut. Definierbare Rechte und Gruppenorganisation für Git-Repositories. Im Web findet man [...]]]></description>
			<content:encoded><![CDATA[<p>Aktuell setze ich mich mit <a href="http://eagain.net/gitweb/?p=gitosis.git;a=summary">Gitosis</a> auseinander. Ja, auseinander setzen ist gut ausgedrückt. Dieses  widerspenstige, (standardmäßig) wenig gesprächige und nur <a href="http://eagain.net/gitweb/?p=gitosis.git;a=blob;f=README.rst;h=92047762c38cdf018a901b48a5a092796f51500e;hb=dedb3dc63f413ed6eeba8082b7e93ad136b16d0d">oberflächlich  dokumentierte</a> Stück Software sträubt sich vehement gegen den  tieferen Einsatz und komplexeren Ordnerhierarchien.</p>
<p>Also im Klartext: Ich finde Gitosis super. Der Ansatz ist gut.  Definierbare Rechte und Gruppenorganisation für Git-Repositories. Im Web  findet man <a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way">unzählige</a> <a href="http://bogdan.org.ua/2009/02/20/gitosis-how-to-add-new-repository.html">How</a>-<a href="http://www.mantisbt.org/wiki/doku.php/mantisbt:gitosis_management">To&#8217;s</a> die eine Standardinstallation wirklich gut und übersichtlich  dokumentieren bzw. dazu anleiten. Speziellere Anpassungen und kleinere  Grauzonen hingegen leider gar nicht.</p>
<p>Um den Überblick über kleinere Mängel zu behalten und auch zu  dokumentieren:</p>
<h3>(1) post-update &#8211; Hook-Problematik</h3>
<p>Die Funktionsweise von Gitosis ist eigentlich denkbar simpel. Konfigurationsdatei syntaxgerecht anpassen  und innerhalb des admin-repos committen+pushen. Ist die neue Config  gepusht und der Benutzer bzw. das neue Repo nicht ansprechbar, verbringt man lange Zeit damit, Configs und Pubkeys (siehe 2) zu  kontrollieren und erneut zu initialisieren. An dieser Stelle begegnet einem  schon das erste Problem, welches Kenntnis über die Funktionsweise von  Gitosis voraussetzt und hervorragend schlecht dokumentiert ist.<br />
<code>ERROR:gitosis.serve.main:Repository read access denied fatal: The remote end hung up unexpectedly</code><br />
Nach dem  das Master-Repo die gepushte Version von Gitosis erhält, führt es einen  sogenannten <a href="http://www.kernel.org/pub/software/scm/git/docs/githooks.html">Hook</a> aus. Dieser Hook ist ein Skript (bzw. ein Symlink dazu) welches die  neue Konfiguration der Authentifizierungsstelle von Gitosis einließt. Der erste Fehler der (wirklich häufig) passiert ist, dass dieses Skript schlicht weg einfach nicht ausführbar  ist. Das lässt sich natürlich sehr einfach durch</p>
<p><code>chmod 755  /home/git/repositories/gitosis-admin.git/hooks/post-update</code></p>
<p>lösen. Aber der knackende Punkt stellt (wie ich finde) die fehlende Meldung dieses Fehlers dar. Gitosis teilt einem einfach nicht mit,  dass der Hook fehlschlug und die getätigten Änderungen komplett für  die Katz waren.</p>
<h3>(2) Pub-Key-Format</h3>
<p>Ein weiteres undefiniertes Loch der Konfiguration ist das Format, in  dem der PublicKeys im conf-File angegeben werden muss.</p>
<p>Abgelegte Keys in gitosis-admin.git/keydir/ <strong>müssen</strong> mit .pub  enden. Sonst werden diese nicht als Keys erkannt. Das ist das  kleinere Übel. Die, für mich etwas unklare, Dokumentation darüber findet sich  in den verschiedensten Varianten. Wie soll der PublicKey in der  gitosis.conf hinterlegt werden?</p>
<p>&#8220;Wer wird Millionär&#8221;-mäßig kann ich jetzt nach dem  Trial-and-Error-Verfahren auflösen. Die endlosen Variationen von  Filenamen und Config-Aufruf, die ich testen musste, damit ich mich  anmelden durfte, haben sich also gelohnt.</p>
<table>
<tbody>
<tr>
<td>( ) Name des Key-Files user@host.pub</td>
<td>( ) Im File hinterlegtes Suffix user@host</td>
</tr>
<tr>
<td>(X) FQDN user@host.domain.com</td>
<td>( ) Nur User zB. jdoe wie dokumentiert</td>
</tr>
</tbody>
</table>
<h3>(3) Gitosis, sprich mit mir.</h3>
<p>Ein weniger behütetes Geheimnis, ist die Gesprächigkeit von Gitosis. Im Konfigurationsfile lässt sich das LogLevel deklarieren.<br />
<code>[gitosis]<br />
loglevel = DEBUG<br />
gitweb = no<br />
git-daemon = no<br />
</code><br />
Siehe da, Informationen!</p>
<pre><code>DEBUG:gitosis.serve.main:Got command "git-receive-pack 'repo1'"
DEBUG:gitosis.access.haveAccess:Access check for 'user@domain.com' as 'writable' on 'repo1'...
DEBUG:gitosis.group.getMembership:found 'user@domain.com' in 'domain.com'
DEBUG:gitosis.access.haveAccess:Access ok for 'user@domain.com' as 'writable' on 'repo1'
DEBUG:gitosis.access.haveAccess:Using prefix 'repositories' for 'repo1'
Initialized empty Git repository in /home/git/repositories/repo1.git/
DEBUG:gitosis.gitdaemon:Global default is 'deny'
DEBUG:gitosis.gitdaemon:Walking '.', seeing ['repo1', 'repo2', 'repo3', 'gitosis-admin.git']
DEBUG:gitosis.gitdaemon:Deny 'gitosis-admin'
DEBUG:gitosis.gitdaemon:Walking 'repo1', seeing ['justatest.git']
DEBUG:gitosis.gitdaemon:Deny 'repo1/justatest'
DEBUG:gitosis.serve.main:Serving git-receive-pack 'repositories/repo1.git'</code></pre>
<p>Diese Infos werden nun zu fast jeder Gelegenheit ausgegeben. Pushen lokal, Authentifizieren per Remote usw. Für weitere Administration mit Gitosis unabdingbar.</p>
<h3>(4) Subdirectories handhaben</h3>
<p>Angenommen ich habe oder möchte eine Ordnerstruktur meiner Projekte die nicht alle in <em>repositories/</em> liegen. Dieser kleine total untriviale Umstand, lässt sich einfach nirgends nachlesen. Um das Ganze zu verdeutlichen, habe ich kurz eine kleine Umgebung angelegt und mit <em>tree -L 2</em> ausgegeben:</p>
<pre><code>`-- repositories
    |-- subdir1
    |   |-- repo1.git
    |   |-- repo2.git
    |   `-- repo3.git
    |-- subdir2
    |   `-- test.git
    `-- subdir3</code></pre>
<p>Angelege und initalisierte Repos werden zwar in der DEBUG-Ausgabe von Gitosis wargenommen (siehe 3.), aber einfach übergangen. Stattdessen wird ein neues Repo in <em>repositories/</em> angelegt. Zumindest, wenn man der Konfiguration folgt, wie sie in 95% der Fällen im Netz zu finden ist. Als Faustregel für Unterordner gilt also: Zwingend jeden(!) Pfad mit Angabe des Subdirs angeben.<br />
Remote add:<br />
<code>git remote add origin git@gitserver.org:subdir1/repo2.git</code><br />
gitosis.conf:<br />
<code>[group subrepo]<br />
members = user@host.com<br />
writable = subdir1/repo2.git</code></p>
<p>Es klingt logisch. Aber ohne Dokumentation, ist es hart herauszubekommen.</p>
<p>Letztlich möchte ich kurz noch erwähnen, dass dieser Post keinerlei Vorwurf, Flame oder Sh!t-Storm gegen Gitosis darstellen soll. Gitosis ist ein wunderbarer Ansatz einer Benutzerverwaltung für Git-Remotes. Allerdings abenteuerlich bei nicht alltäglicher Nutzung. In diesem Sinne. Happy committing.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1175/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SSH-App &#124; Leid oder Elend. It&#8217;s your choice.</title>
		<link>http://noqqe.de/archives/1164</link>
		<comments>http://noqqe.de/archives/1164#comments</comments>
		<pubDate>Wed, 28 Jul 2010 10:19:30 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sshapp]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1164</guid>
		<description><![CDATA[Die Wahl einer SSH-App für mein iPhone gestern, fühlte sich ein bisschen an, wie wählen gehen in der DDR. Ich kam einfach auf keinen grünen Zweig. Bei jeder App gab es mindestens ein Kriterium, dass zum Ausschluss führte. touchterm SSH/Pro: 2,99€/7,99 klingt gut. Jedoch hat sich in letzter Zeit herausgestellt, dass die App persöhnliche Daten [...]]]></description>
			<content:encoded><![CDATA[<p>Die Wahl einer SSH-App für mein iPhone gestern, fühlte sich ein bisschen an, wie wählen gehen in der DDR. Ich kam einfach auf keinen grünen Zweig. Bei jeder App gab es mindestens ein Kriterium, dass zum Ausschluss führte.<br />
<strong><br />
touchterm SSH/Pro</strong>: 2,99€/7,99 klingt gut. Jedoch hat sich in letzter Zeit herausgestellt, dass die App persöhnliche Daten ausspioniert. Pinchmedia inside, beklagen die meisten Kommentatoren. So einem Verein vertraue ich bestimmt nicht meine SSH-Zugangsdaten an.<br />
<strong><br />
pTerm</strong>: 3,99€ Fehlender Alt-Button, keine Formatierungsmöglichkeiten, kein Zoom usw.  Zu viel Geld für zu wenig Funktion.</p>
<p><strong>SSH</strong>: 2,99€ Sendet anscheinend falsche Daten an das Terminal und macht somit kein top, screen usw möglich. Ansonsten selbe Probleme wie bei pTerm.</p>
<p><strong>iSSH</strong>: Kostenpunkt 7,99€ und integrierter VNC-Client, der (wie man  Bewertungen entnehmen kann) nicht mal gut ist. Ich brauche einfach  keinen integrierten VNC-Client und der Preis ist irgendwie…utopisch.  SSH-Client soll aber gut funktionieren</p>
<p><strong>ssh-terminal</strong>: 0,79€ Endlich ein normaler Preis. Allerdings auch hier wieder wenig bis keine Anpassungsmöglichkeiten und diverse Probleme in der Kommunikation. Hier allerdings die geringsten Einschränkungen.</p>
<p>Ich muss wirklich sagen, dass ich so gut wie allen APPs dieser Liste misstraue. Ich möchte es nicht Paranoia nennen, aber bei dem Gedanken den Zugang zu meinen Servern irgendeiner zwielichtigen datensammelnden Applikation anzuvertrauen, sträubt sich bei mir alles. Man sollte denken, Apple kontrolliert die Programme, die den Weg in deren App-Store finden auf Fehler und Spyware. Aber gestern erst musste ich <a href="http://zeit.de/digital/mobil/2010-07/handylight-appstore-tethering">lesen</a>, wie ein 15 Jähriger mit einer Taschenlampen-App das iPhone hinterrücks zu einem Tethering-Modem umfunktioniert hat.</p>
<p>Soviel zum Thema Kontrolle also. Ich weiss nicht, für das nötigste hab ich mir die App mit dem besten Preis-/Leistungsverhältnis gekauft (ssh-terminal). Ob ich da aber mein Passwort wirklich speichern will, weiss ich nicht. Allein schon, weil mir mein Telefon auch mal verloren gehen kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1164/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Webbuttons &#124; Generator und Gallery</title>
		<link>http://noqqe.de/archives/1159</link>
		<comments>http://noqqe.de/archives/1159#comments</comments>
		<pubDate>Mon, 26 Jul 2010 10:50:06 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[buttons]]></category>
		<category><![CDATA[commandlinefu]]></category>
		<category><![CDATA[einfachjabber]]></category>
		<category><![CDATA[einzeiler]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[imagecreator]]></category>
		<category><![CDATA[oneline]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1159</guid>
		<description><![CDATA[Für das einfachjabber.de Projekt generierte ich neulich mit dem (wirklich brillianten) Button Generator von Luca Zappa eine Auswahl an 80&#215;15 Buttons. Weder gut nummeriert, noch stukturiert speicherte ich diese ab. Um am Webserver alle zugleich betrachten zu können, fiel mir ein Bash Einzeiler ein, den ich bei commandlinefu.com gesehen hatte und eine (zwar bisschen dürftige [...]]]></description>
			<content:encoded><![CDATA[<p>Für das <a href="http://einfachjabber.de">einfachjabber.de</a> Projekt generierte ich neulich mit dem (wirklich brillianten) <a href="http://www.lucazappa.com/brilliantMaker/buttonImage.php">Button Generator von Luca Zappa</a> eine Auswahl an 80&#215;15 Buttons. Weder gut nummeriert, noch stukturiert speicherte ich diese ab.</p>
<p>Um am Webserver alle zugleich betrachten zu können, fiel mir ein Bash Einzeiler ein, den ich bei <a href="http://www.commandlinefu.com/commands/view/5982/quick-html-image-gallery-from-folder-contents">commandlinefu.com</a> gesehen hatte und eine (zwar bisschen dürftige aber funktionierende) Gallery erstellt.</p>
<p><code>find . -iname '*.png' -exec echo '&lt;br&gt;&lt;img src="{}"&gt;' \; &gt; gallery.html</code></p>
<p>Für jedes File mit der Endung .png im PWD wird ein HTML-Image in gallery.html eingefügt. Um Meinungen (zum Einzeiler als auch den Buttons^^) wird gebeten.</p>
<p><a href="http://zwetschge.org/statics/einfachjabber/gallery.html">http://zwetschge.org/statics/einfachjabber/gallery.html</a><br />
<a href="http://zwetschge.org/statics/einfachjabber/">http://zwetschge.org/statics/einfachjabber/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1159/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL &#124; Datenbanken einzeln sichern</title>
		<link>http://noqqe.de/archives/1156</link>
		<comments>http://noqqe.de/archives/1156#comments</comments>
		<pubDate>Sat, 24 Jul 2010 14:07:54 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[single file]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1156</guid>
		<description><![CDATA[Bis vor kurzem reichte mir ein volles MySQL-Backup der alle DB&#8217;s komplett in ein File gesichert hat. Eine Zeile CronJob. mysqldump -u root --password=x --all-databases &#62; /pfad/$(date +%Y-%m-%d).sql Das funktioniert so lange, bis einmal recovered werden muss. Alle DB&#8217;s neu einspielen ist dann doch irgendwie kein Spass. Weder von der Dauer noch vom Datenverlust. 25 [...]]]></description>
			<content:encoded><![CDATA[<p>Bis vor kurzem reichte mir ein volles MySQL-Backup der alle DB&#8217;s komplett in ein File gesichert hat. Eine Zeile CronJob.<br />
<code>mysqldump -u root --password=x --all-databases &gt; /pfad/$(date +%Y-%m-%d).sql</code></p>
<p>Das funktioniert so lange, bis einmal recovered werden muss. Alle DB&#8217;s neu einspielen ist dann doch irgendwie kein Spass. Weder von der Dauer noch vom Datenverlust. 25 MB sind jetzt zwar nicht die Welt, aber trotzdem doof wenn etwas verloren geht. Deshalb kombinierte ich mein Voll-Backup mit einem File pro DB. Folgendes Script dient dazu:</p>
<pre><code>#!/bin/bash
pass=
backuppath=/var/cache/mysqlbackups

mysqldump --password=$pass --all-databases &gt; ${backuppath}/$(date +%Y-%m-%d).sql
return1=$?

for x in $(mysql --password=$pass -Bse 'show databases'); do
mysqldump --password=$pass $x &gt; ${backuppath}/$(date +%Y-%m-%d)-${x}.sql
done
return2=$?

if [ $return1 -eq 0 ] &amp;&amp; [ $return2 -eq 0 ]; then
logger -p local0.info -t MYSQLBACKUP MySQL Backup successful
else
logger -p local0.err -t MYSQLBACKUP MySQL Backup failed
fi
</code></pre>
<p>Ausschlaggebender Teil ist die for-Schleife. Für jede Zeile Output von &#8220;show databases&#8221; wird ein seperates .sql File erstellt. Versehen mit Datum und DB-Name. Nebenbei wird auch noch via logger in /var/log/syslog geloggt. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1156/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3dsupply &#124; Wie man Kunden kauft.</title>
		<link>http://noqqe.de/archives/1142</link>
		<comments>http://noqqe.de/archives/1142#comments</comments>
		<pubDate>Sat, 24 Jul 2010 11:53:10 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[3dsupply]]></category>
		<category><![CDATA[gutschein]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1142</guid>
		<description><![CDATA[Shirt bei 3dsupply.de gesehen. Für awesome befunden. Weil Futurama. http://www.3dsupply.de/products/783-planet-express/ Mein Kaufbedürfnis ohne Absichten bei Twitter gepostet und wurde komischerweise mit Gutscheincode beantwortet O_o 3dsupply: @noqqe Hier ist dein 2,50 Euro Gutscheincode: cqfr-lUEq-uWzY-vdDc Einfach im Warenkorb einlösen. :D Fand das gut. 2,50 € sind nicht die Welt, aber hätte auch einfach ignoriert werden können. Wer [...]]]></description>
			<content:encoded><![CDATA[<p>Shirt bei 3dsupply.de gesehen. Für awesome befunden. Weil Futurama.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/07/783_1279937407.0_180_180.png"><img class="size-full wp-image-1143 alignleft" title="783_1279937407.0_180_180" src="http://zwetschge.org/blog/wp-content/uploads/2010/07/783_1279937407.0_180_180.png" alt="" width="180" height="180" /></a><br />
<a href="http://www.3dsupply.de/products/783-planet-express/">http://www.3dsupply.de/products/783-planet-express/</a></p>
<p>Mein Kaufbedürfnis ohne Absichten bei Twitter <a href="http://twitter.com/noqqe/status/18464736775">gepostet</a> und wurde komischerweise mit Gutscheincode beantwortet O_o</p>
<p><a href="http://twitter.com/3dsupply/status/18509063283">3dsupply</a>: <strong>@noqqe Hier ist dein 2,50 Euro Gutscheincode: cqfr-lUEq-uWzY-vdDc Einfach im Warenkorb einlösen. :D</strong></p>
<p>Fand das gut. 2,50 € sind nicht die Welt, aber hätte auch einfach ignoriert werden können.<br />
Wer kennt das eigentlich, wenn absolut keine Motivation vorhanden ist, grammatikalisch richtige Sätze zu bilden?</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1142/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oldsql &#124; Grundig Compact Box 350 b von 1980</title>
		<link>http://noqqe.de/archives/1114</link>
		<comments>http://noqqe.de/archives/1114#comments</comments>
		<pubDate>Sun, 18 Jul 2010 17:19:18 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[box 350 b]]></category>
		<category><![CDATA[compact]]></category>
		<category><![CDATA[dachboden]]></category>
		<category><![CDATA[grandpa]]></category>
		<category><![CDATA[grundig]]></category>
		<category><![CDATA[oldschool]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1114</guid>
		<description><![CDATA[Ich stöberte heute Mittag durch den Dachboden meiner Großeltern und fand zwei wunderbare Oldschool Grundig Compact Box 350 B(hifi-wiki.de). Die beiden holzverkleideten Regal-Boxen Baujahr ca. 1980 gefielen mir. Ich suchte schon länger ein paar nette Boxen, welche ich mir ins Schlafzimmer stellen kann. Allerdings waren die Kabel der Boxen durchtrennt. Warum auch immer. Grundgedanke: Boxen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich stöberte heute Mittag durch den Dachboden meiner Großeltern und fand zwei wunderbare Oldschool <a href="http://www.hifi-wiki.de/index.php/Grundig_Box_350_b">Grundig Compact Box 350 B(hifi-wiki.de)</a>. Die beiden holzverkleideten Regal-Boxen Baujahr ca. 1980 gefielen mir. Ich suchte schon länger ein paar nette Boxen, welche ich mir ins Schlafzimmer stellen kann. Allerdings waren die Kabel der Boxen durchtrennt. Warum auch immer.</p>
<p><center><a href="http://www.flickr.com/photos/flooohooo/4805376968/" title="Grundig Compact Box von 1980 von noqqe bei Flickr"><img src="http://farm5.static.flickr.com/4099/4805376968_ef5d533053_m.jpg" width="240" height="180" alt="Grundig Compact Box von 1980" /></a></center></p>
<p>Grundgedanke: Boxen aufstellen und iPhone || x-beliebigen MP3-Player per Klinkenstecker anschliessen und Musik genießen.</p>
<p>Ich muss eigentlich bevor ich den Post weiter tippe, darauf hinweisen das ich elektrotechnisch in etwa so viel Ahnung habe wie ein durchschnittliches Lebewesen aus der Kreidezeit. Also eine ziemliche Null. Die letzten 2-3 erhaltenen Zentimeter der Boxenkabel, liessen sich gerade noch so abisolieren und weiterverwenden. Also habe ich ein Klinkenkabel von Hama (Stecker auf Stecker) aus meiner Kabelkiste raus gefischt, ebenfalls ab-isoliert und mittels einer Lüsterklemme beide Kabelpaare zusammen geführt.</p>
<p>Ich weiss weder, ob man das so praktizieren darf, sollte, ob es im Grunde sowieso das selbe Kabel ist oder ich mich jetzt in ständiger Lebensgefahr befinde. Was ich aber nach der Aktion mit Sicherheit sagen kann: Es kommt da Ton raus, wo es soll. Operation geglückt. Bass lässt bisschen zu wünschen übrig, ansonsten aber absolut awesome. </p>
<p><center><a href="http://www.flickr.com/photos/flooohooo/4804766865/" title="Arbeitstisch von noqqe bei Flickr"><img src="http://farm5.static.flickr.com/4141/4804766865_bc1215807b_m.jpg" width="240" height="180" alt="Arbeitstisch" /></a></center></p>
<p>Bei Flickr hab ich ein kleines Fotoalbum erstellt, über Kommentare oder Überlebenshinweise würde ich mich freuen.</p>
<p><a href="http://www.flickr.com/photos/flooohooo/sets/72157624528623244/">http://www.flickr.com/photos/flooohooo/sets/72157624528623244/</a></p>
<p>Update: Bin mir bewusst, dass ich passive Boxen ohne Zusatzstromquelle betreibe :) </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1114/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Thunar &#124; Netzwerk-Ressourcen einbinden mit Gigolo</title>
		<link>http://noqqe.de/archives/1109</link>
		<comments>http://noqqe.de/archives/1109#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:39:16 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[xubuntu]]></category>
		<category><![CDATA[gigolo]]></category>
		<category><![CDATA[gio]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[ressourcen]]></category>
		<category><![CDATA[thunar]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1109</guid>
		<description><![CDATA[Xubuntu hat ein schönes Tool von Haus aus dabei, welches sich Gigolo nennt. Gigolo soll dazu dienen Netzwerk-Ressourcen zu verwalten und integrieren. Nun, Ressourcen einbinden funktioniert wunderbar. Nur sollten sich Diese auch öffnen lassen. Irgendwie. Oder auch nicht. Gigolo möchte also Thunar zum Öffnen dieser Orte benutzen (voreingestellt). Allerdings unterstützt Thunar in der in Xubuntu [...]]]></description>
			<content:encoded><![CDATA[<p>Xubuntu hat ein schönes Tool von Haus aus dabei, welches sich <a href="http://www.uvena.de/gigolo/index.html">Gigolo</a> nennt. Gigolo soll dazu dienen Netzwerk-Ressourcen zu verwalten und integrieren. Nun, Ressourcen einbinden funktioniert wunderbar. Nur sollten sich Diese auch öffnen lassen. Irgendwie. Oder auch nicht.</p>
<p>Gigolo möchte also <a href="http://thunar.xfce.org/index.html">Thunar</a> zum Öffnen dieser Orte benutzen (voreingestellt). Allerdings unterstützt Thunar in der in Xubuntu vorliegenden Version noch keine Netzwerk-Ressourcen. In diversen Threads bei UbuntuUsers fand ich auch Lösungsansätze die empfahlen Nautilus zu installieren. Aber ich finde Thunar schön, weshalb ich mich gegen diesen Ansatz entschied. Nachdem ich mich dann (erneut) 20 min durchs Netz gegreppt habe, fand ich eine Alternative.</p>
<p>Die aktuelle Entwicklerversion von Thunar setzt auf Gio auf. Dem selben Manager den auch Nautilus für Netzwerksachen nutzt.</p>
<p>Zu finden ist diese unter: <a href="https://launchpad.net/~xubuntu-dev/+archive/ppa">https://launchpad.net/~xubuntu-dev/+archive/ppa</a></p>
<p>Neue Sources in /etc/apt/sources.list hinzugefügt</p>
<p><code>deb http://ppa.launchpad.net/xubuntu-dev/ppa/ubuntu lucid main<br />
deb-src http://ppa.launchpad.net/xubuntu-dev/ppa/ubuntu lucid main</code></p>
<p>und Thunar updaten. Gigolo kann mittels Thunar die eingebundenen Ressourcen öffnen. Gigolo funktioniert. Tada.</p>
<p>Allerdings interessiert es mich trotzdem, ob ich einfach nur Fehler im Handling mache oder da seitens Xubuntu etwas Abstimmungstechnisches schief lief. Immerhin ist es schon die zweite Xubuntu Installtion bei der dieser Umstand eintritt.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1109/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Web &#124; einfachJabber.de</title>
		<link>http://noqqe.de/archives/1104</link>
		<comments>http://noqqe.de/archives/1104#comments</comments>
		<pubDate>Fri, 16 Jul 2010 09:59:59 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[einfachjabber]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[jabber einrichten]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[plattform]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1104</guid>
		<description><![CDATA[Bereits seit Längerem schon betreibt zero eine kleine Plattform für Jabber Neulinge. Wunderschön beschreibt Er und Andere die Welt von Jabber, Einführungen und Tipps und Tricks. Ich fand die Idee gut, ein deutsches Jabber Portal zu starten und involvierte mich in Form von 2-3 HowTo&#8217;s. Die Idee dafür hatte zero selbst und eben diese Fand [...]]]></description>
			<content:encoded><![CDATA[<p>Bereits seit Längerem schon betreibt <a href="http://zeroathome.de">zero</a> eine kleine Plattform für Jabber Neulinge. Wunderschön beschreibt Er und Andere die Welt von Jabber, Einführungen und Tipps und Tricks. Ich fand die Idee gut, ein deutsches Jabber Portal zu starten und involvierte mich in Form von 2-3 HowTo&#8217;s. Die Idee dafür hatte zero selbst und eben diese Fand in der Ubuntuusers-Community viel Anklang.</p>
<p style="text-align: center;"><strong><a href="http://einfachjabber.de">einfachJabber.de</a></strong></p>
<p>Außerdem finde ich, dass die technische Umsetzung des Portals glänzt. Der SourceCode der Plattform ist einsehbar unter:</p>
<p><a href="http://github.com/zeroathome/step-by-step">http://github.com/zeroathome/step-by-step</a></p>
<p>Und genauso schön hat er es auch geschafft für Dritte Mitarbeiter am Projekt die Arbeit zu erleichtern. In Form eines .json-Vorlagenformats für HowTo&#8217;s. Die Tutorials des Projekts befinden sich in einem separaten Git-Repository:</p>
<p><a href="http://github.com/zeroathome/jabber-tutorials">http://github.com/zeroathome/jabber-tutorials</a></p>
<p>So stehen alle Inhalte dieses Portals unter einer Creative Commons License und dürfen wieder verwendet werden. Inder LibreList gibt es die Mailingliste einzusehen mit aktuellen Requests und Neuigkeiten sowie Kritik und Lob</p>
<p><a href=" http://librelist.com/browser/einfachjabber/">http://librelist.com/browser/einfachjabber/</a></p>
<p>Über Hilfe freuen wir uns natürlich immer, wer möchte darf sich gerne melden. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1104/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Grub &#124; Auflösung der Konsole ändern</title>
		<link>http://noqqe.de/archives/1098</link>
		<comments>http://noqqe.de/archives/1098#comments</comments>
		<pubDate>Wed, 14 Jul 2010 18:17:18 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ändern]]></category>
		<category><![CDATA[auflösung]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[grub 1]]></category>
		<category><![CDATA[grub 2]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[resolution]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1098</guid>
		<description><![CDATA[Die Auflösung der (ich nenne es mal so) Boot-Konsole ist nicht gerade die Höchste. Gerade im Recovery Mode oder bei anderem stört (mich persönlich) das immer etwas. Lösung gefunden und damit ich es nicht vergesse, nun hier: George Notaras hat für grub 1 und 2(!) folgende wunderschöne Tabelle gebastelt. &#124; 640x480 800x600 1024x768 1280x1024 ----+------------------------------------- [...]]]></description>
			<content:encoded><![CDATA[<p>Die Auflösung der (ich nenne es mal so) Boot-Konsole ist nicht gerade die Höchste. Gerade im Recovery Mode oder bei anderem stört (mich persönlich) das immer etwas.<br />
Lösung gefunden und damit ich es nicht vergesse, nun hier:</p>
<p><a href="http://www.g-loaded.eu/2005/09/30/change-the-console-resolution/">George Notaras</a> hat für <strong>grub 1 und 2(!)</strong> folgende wunderschöne Tabelle gebastelt.</p>
<pre><code>     | 640x480  800x600  1024x768 1280x1024
----+-------------------------------------
256 |  0x301   0x303    0x305    0x307
32k |  0x310   0x313    0x316    0x319
64k |  0x311   0x314    0x317    0x31A
16M |  0x312   0x315    0x318    0x31B</code></pre>
<p>Dieser Hex-Wert muss als zusätzlicher Parameter in <strong>/boot/grub/menu.lst</strong> an den Kernel angehängt werden. Folgendermaßen kann sowas aussehen:<br />
<code>kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/ida/c0d0p1 ro vga=0x318 quiet</code></p>
<p>Aktuell für Grub 2: <strong>/boot/grub/grub.cfg</strong>. Sieht bisschen anders aus, funktioniert aber genauso:<br />
<code>linux   /boot/vmlinuz-2.6.32-22-generic root=UUID=92892dbf-af24-4dbd-b2a4-8debdbb08981 ro  vga=0x318 quiet splash</code></p>
<p>Sollte es eventuell noch eine schönere Möglichkeit für Grub 2 geben (was ich mir durchaus vorstellen kann) bitte ich diese doch kurz zu kommentieren :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1098/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Perl &#124; Ich hätte doch das Kamelbuch nehmen sollen</title>
		<link>http://noqqe.de/archives/1087</link>
		<comments>http://noqqe.de/archives/1087#comments</comments>
		<pubDate>Sun, 04 Jul 2010 08:17:00 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[coden]]></category>
		<category><![CDATA[oreilly]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[programmieren]]></category>
		<category><![CDATA[use perl]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1087</guid>
		<description><![CDATA[&#8230;denn das wäre mir jetzt viel lieber, als das &#8220;Programmieren in Perl&#8221; von Rainer Krienke vom Hanser Verlag. Fehler in den gedruckten Skripten wie fehlende Klammernpaare oder ähnliches können einen Perl-Anfänger leicht zum verzweifeln bringen. Ganz abgesehen von den irgendwie distanziert klingenden Erklärungen des Buchs. Ich sollte aber vom Anfang anfangen. Nicht mittendrin. Hab gehört [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;denn das wäre mir jetzt viel lieber, als das <a href="http://www.amazon.de/Programmieren-Perl-Rainer-Krienke/dp/3446220135/ref=pd_sim_b_17">&#8220;Programmieren in Perl&#8221; von Rainer Krienke vom Hanser Verlag</a>. Fehler in den gedruckten Skripten wie fehlende Klammernpaare oder ähnliches können einen Perl-Anfänger leicht zum verzweifeln bringen. Ganz abgesehen von den irgendwie distanziert klingenden Erklärungen des Buchs. Ich sollte aber vom Anfang anfangen. Nicht mittendrin. Hab gehört das macht man so in Blogs.</p>
<p><center><a href="http://zwetschge.org/blog/wp-content/uploads/2010/07/perl_logo.gif"><img class="aligncenter size-full wp-image-1088" title="perl_logo" src="http://zwetschge.org/blog/wp-content/uploads/2010/07/perl_logo.gif" alt="" width="120" height="64" /></a></center></p>
<p>Perl hat angefangen mich zu interessieren. Oder anders rum? Vor &#8230; ca. einem viertel Jahr. Ich las teilweise kurz How-To&#8217;s und auch mal längere Beschreibungen, weil mir manchmal die Schwerfälligkeit und nicht vorhandene Flexibilität von Bash auf den Keks ging.</p>
<p>Das mittlerweile als etwas veraltete Skriptsprache für Administratoren gehandelte Perl hat mich neugierig gemacht. Die Module, die Handlichkeit im Umgang mit Strings, Hashwerten und RegExp gefielen mir. Beim herumexperimentieren damit bin ich nun auf den <a href="http://www.perlboard.de/perlguide/Inhalt.html">PerlGuide vom deutschen Perlboard</a> gestossen. Ein wunderschönes Tutorial. Jedes Kapitel endet mit Übungen, Praxis-Programmen und Zusatzfragen.</p>
<p><code>print "Perl hat manchmal geile Syntax" and die if ! defined @ARGV ;</code></p>
<p>Danach, fand ich brauchte ich noch ein Buch. Also ein analoges Medium aus dem ich auch mal auf der Couch lesen kann. Meine Wahl fiel nicht (wie meistens) auf ein <a href="http://www.amazon.de/Programmieren-mit-Perl-Larry-Wall/dp/3897211440/ref=sr_1_5?ie=UTF8&#038;s=books&#038;qid=1278231152&#038;sr=8-5">O&#8217;Reilly Buch</a>. Sondern auf das bereits oben erwähnte Programmieren in Perl. Nachher erfuhr ich (unter anderem aus dem wunderbaren <a href="http://community.oreilly.de/blog/2010/06/25/kol001-das-oreilly-universum/">1. O&#8217;Reilly Podcast</a> mit <a href="http://tim.geekheim.de/">Tim Pritlove</a>) dass das Perl-Buch von O&#8217;Reilly eines der Besten sein soll, die dort je herausgebracht wurden.</p>
<p>Bereue meinen Kauf. Allerdings mache ich trotzdem Fortschritte mit Perl. Wie immer arbeite ich mit den Skripten in einem Git-Repo. Wen&#8217;S intressiert: <a href="http://git.zwetschge.org/?p=learning-perl.git;a=tree;h=671b98e403d952d9ed2730ac1221e867039127cc;hb=671b98e403d952d9ed2730ac1221e867039127cc">git.zwetschge.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1087/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Theme &#124; 8-Bit Banner</title>
		<link>http://noqqe.de/archives/1076</link>
		<comments>http://noqqe.de/archives/1076#comments</comments>
		<pubDate>Wed, 30 Jun 2010 09:25:46 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[16 bit]]></category>
		<category><![CDATA[8 bit]]></category>
		<category><![CDATA[GIMP]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1076</guid>
		<description><![CDATA[Es war ein heißer Dienstag Nachmittag. Genauer gesagt gestern. Ich könnte fast sagen INSTANT hat mich die Langeweile die mein Blogbanner ausstrahlt überrannt. Schon viel zu lange ist es in der header.php meines Blogthemes definiert. Ich bemühte Google nach freien Schriftarten. Wurde auf eine japanische Seite weitergeleit. 8-Bit-Fonts. http://mfs.sub.jp/. Vanilla Ice gefiel mir wunderbar. Genial [...]]]></description>
			<content:encoded><![CDATA[<p>Es war ein heißer Dienstag Nachmittag. Genauer gesagt gestern. Ich könnte fast sagen INSTANT hat mich die Langeweile die mein Blogbanner ausstrahlt überrannt. Schon viel zu lange ist es in der header.php meines Blogthemes definiert.</p>
<p>Ich bemühte Google nach freien Schriftarten. Wurde auf eine japanische Seite weitergeleit. 8-Bit-Fonts. <a href="http://mfs.sub.jp/">http://mfs.sub.jp/</a>. Vanilla Ice gefiel mir wunderbar. Genial einfach und C64-Kompatibel.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/m50.gif"><img class="aligncenter size-full wp-image-1082" title="m50" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/m50.gif" alt="" width="208" height="70" /></a></p>
<p>Die Terms of Use waren mir aber irgendwie ein Rätsel. <a href="http://mfs.sub.jp/info.html">http://mfs.sub.jp/info.html</a> war das einzige, was auf japanisch dort stand.</p>
<p>Google Translate hat mir dann geholfen:</p>
<blockquote><p>- Unerlaubte Vervielfältigung umgeleitet, um Daten auf unserer Website bitte nicht replizieren<br />
- Kostenloses Web Klüngel Aktivitäten und groß angelegte nicht-materielle Verteilung, die Schriftart für Non-Profit-Aktivitäten Bitte zögern Sie nicht verwendet<br />
- Und Bücher auf die gewerbliche Nutzung von Schriften und sonstigen Anfragen zur Gestaltung der Arbeit danken Ihnen per E-Mail.</p></blockquote>
<p>So sieht das jetzt nämlich aus. Ich bin ja non-commercial ;). Und ich hab das Banner mit Gimp erstellt. Weil ich so OpenSource bin.</p>
<p>Grüße aus einer Englisch-Schulstunde,<br />
Flo</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1076/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Theme &#124; nerd-clouds</title>
		<link>http://noqqe.de/archives/1071</link>
		<comments>http://noqqe.de/archives/1071#comments</comments>
		<pubDate>Sat, 26 Jun 2010 14:52:33 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[geeky]]></category>
		<category><![CDATA[minimal]]></category>
		<category><![CDATA[minimalistic]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[nerdy]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-theme]]></category>

		<guid isPermaLink="false">http://zwetschge.org/blog/?p=1071</guid>
		<description><![CDATA[Als ich damals das Theme Clouds von Ali Asaria in mein WordPress eingebaut habe, habe ich mir nichts weiter dabei gedacht. Mir gefiel das Theme, aber nach und nach fand ich immer mehr Sachen hässlich. Als aller erstes das Hellblau im Hintergrund. Drauf folgte die Anpassung der runden Ecken (Wo wir grade bei .gif-Dateien sind. [...]]]></description>
			<content:encoded><![CDATA[<p>Als ich damals das Theme <a href="http://aliasaria.ca/blog/themes/">Clouds</a> von <a href="http://aliasaria.ca/">Ali Asaria</a> in mein WordPress eingebaut habe, habe ich mir nichts weiter dabei gedacht. Mir gefiel das Theme, aber nach und nach fand ich immer mehr Sachen hässlich. Als aller erstes das Hellblau im Hintergrund. Drauf folgte die Anpassung der runden Ecken (Wo wir grade bei .gif-Dateien sind. <a href="http://parti.tumblr.com">@_parti</a> macht ultra coole Sachen mit den Dingern), diverse Änderungen der Textformate, hinzufügen von Tag- und Creative Commons Clouds und der Zeitstempel sieht anders aus.</p>
<p>Alles in allem wurden die Änderungen so umfangreich, dass es dem Orginal überhaupt nichtmehr ähnelt. Genau genommen ist es nichtmal mehr &#8220;cloudy&#8221;. Trotzdem hab ich mir in den letzten Wochen immer wieder ein Stückchen Zeit genommen und das Theme massentauglich gemacht. Rausgekommen ist das WordPress-Theme &#8220;nerd-clouds&#8221;.</p>
<p>Auch wenn ich mit folgendem nicht gerade Werbung für das Theme mache, muss ich sagen: Ich war noch nie besonders gut in diesem HTML / CSS / PHP Dings, welches man eigentlich können sollte, wenn man so ein Theme released. Trotzdem scheint es so, als würde es (auch der Code^^) im Test-Einsatz ein relativ gutes Bild abgeben.</p>
<p>Das nerd-clouds Theme gibts zum Download und beobachten unter<br />
<a href="http://github.com/noqqe/nerd-clouds">http://github.com/noqqe/nerd-clouds</a> oder<br />
<a href="http://git.zwetschge.org/?p=nerd-clouds.git;a=summary">http://git.zwetschge.org/?p=nerd-clouds.git;a=summary</a></p>
<p>Wie Ali, steht auch mein Theme unter Creative Commons CC-BY-SA-NC.<br />
Alle Feinheiten und Handling-Tipps stehen im Readmefile.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1071/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios &#124; Ricoh-Drucker Tonerstand per SNMP abfragen</title>
		<link>http://noqqe.de/archives/1066</link>
		<comments>http://noqqe.de/archives/1066#comments</comments>
		<pubDate>Thu, 24 Jun 2010 20:32:29 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[auffüllen]]></category>
		<category><![CDATA[drucker]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[ricoh]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[stand]]></category>
		<category><![CDATA[status]]></category>
		<category><![CDATA[toner]]></category>

		<guid isPermaLink="false">http://zwetschge.org/blog/?p=1066</guid>
		<description><![CDATA[Schon wieder Nagios. Diesmal aber nur als kleine Notiz für mich. Vor kurzem hab ich erst die Zählerstände der Papierfächer in unser firmeninternes Nagios eingebunden. Dasselbe funktioniert natürlich auch mit den Tonern. Beschreibung der Fächer mit snmpwalk abholen: snmpwalk -Os -c public -v 1 192.168.1.200 mib-2.43.11.1.1.6.1.1 = STRING: "Toner Schwarz" mib-2.43.11.1.1.6.1.2 = STRING: "Resttoner" mib-2.43.11.1.1.6.1.3 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zwetschge.org/blog/?p=954">Schon wieder Nagios</a>. Diesmal aber nur als kleine Notiz für mich. Vor kurzem hab ich erst die Zählerstände der Papierfächer in unser firmeninternes Nagios eingebunden. Dasselbe funktioniert natürlich auch mit den Tonern.</p>
<p>Beschreibung der Fächer mit snmpwalk abholen:<br />
<code>snmpwalk -Os -c public -v 1 192.168.1.200</code><br />
<code>mib-2.43.11.1.1.6.1.1 = STRING: "Toner Schwarz"<br />
mib-2.43.11.1.1.6.1.2 = STRING: "Resttoner"<br />
mib-2.43.11.1.1.6.1.3 = STRING: "Toner Cyan"<br />
mib-2.43.11.1.1.6.1.4 = STRING: "Toner Magenta"<br />
mib-2.43.11.1.1.6.1.5 = STRING: "Toner Gelb"</code></p>
<p>Status der Toner als Integerwerte (0 = leer, -3 = voll)<br />
<code>mib-2.43.11.1.1.9.1.1 = INTEGER: 0<br />
mib-2.43.11.1.1.9.1.2 = INTEGER: -3<br />
mib-2.43.11.1.1.9.1.3 = INTEGER: -3<br />
mib-2.43.11.1.1.9.1.4 = INTEGER: 0<br />
mib-2.43.11.1.1.9.1.5 = INTEGER: -3</code></p>
<p>Kommando für Nagios konfigurieren:<br />
<code>define command{<br />
command_name check_toner<br />
command_line /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C  '$ARG1$' -o mib-2.43.11.1.1.9.1.$ARG2$ -w '$ARG3$': -c '$ARG4$':<br />
}</code></p>
<p>Service für den Host einbinden:<br />
<code>define service {<br />
use generic-service ; Name of service template to use<br />
host_name druckerxyz<br />
service_description TONER YELLOW<br />
check_command check_toner!public!5!2!1<br />
}</code></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1066/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creative Commons &#124; Freies Wissen und Inhalte auf noqqe.de</title>
		<link>http://noqqe.de/archives/1049</link>
		<comments>http://noqqe.de/archives/1049#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:43:32 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[cc]]></category>
		<category><![CDATA[cc-by-nc-sa]]></category>
		<category><![CDATA[cc-network]]></category>
		<category><![CDATA[creative commons]]></category>
		<category><![CDATA[freie inhalte]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1049</guid>
		<description><![CDATA[Vor kurzem habe ich aufgrund der Catalysts Grant Aktion an die Creative Commons Organisation etwas Geld gespendet. 100.000 $ sollen an Ersteller freier Inhalte gehen. Ich fand das in Ordnung. Ok, ich fand das eigentlich mehr als in Ordnung, denn die Idee des freien Wissens und Inhalten für alle ist einfach nur wunderbar. Es fällt [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="sioc:has_owner" href="https://creativecommons.net/noqqe"><img style="border:0px;" src="http://i.creativecommons.net/p/noqqe/" alt="" /></a></p>
<p>Vor kurzem habe ich aufgrund der <a href="http://wiki.creativecommons.org/Grants">Catalysts Grant</a> Aktion an die <a href="http://creativecommons.org/about/">Creative Commons Organisation</a> etwas Geld gespendet. 100.000 $ sollen an Ersteller freier Inhalte gehen. Ich fand das in Ordnung. Ok, ich fand das eigentlich mehr als in Ordnung, denn die Idee des freien Wissens und Inhalten für alle ist einfach nur wunderbar. Es fällt mir schwer in Worte zu fassen was das Video in der About-Beschreibung aussagt. Am besten ihr seht es <a href="http://a44.video2.blip.tv/5840001990950/Commonscreative-WannaWorkTogether315.ogv?bri=3.2&amp;brs=1369">am besten selbst an</a>.</p>
<p><strong>Inhalte</strong><br />
Seit mittlerweile einem Jahr habe ich alle Blogposts, HowTos, Publications und Projekte die ich hier veröffentliche, schreibe oder vorstelle unter die CC-BY-NC-SA Lizenz gestellt. Im Klartext bedeutet das: Alle Inhalte dürfen komplett frei benutzt, verändert und weitergegeben werden. Unter ein paar winzigen Bedinungen.</p>
<blockquote><p><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC-BY-NC-SA</a><br />
Namensnennung<br />
Keine kommerzielle Nutzung der Inhalte<br />
Weitergabe unter gleichen Bedingungen</p></blockquote>
<p><strong>Software</strong><br />
Bei Software oder Scripts die ich hier schreibe, gilt ähnliches. Die GPL-Software-Lizenz ist weit verbreitet unter Linux-Benutzern und auch hierfür stellt Creative Commons eine Informationsseite in vielen Sprachen zur Verfügung.</p>
<blockquote><p><a href="http://creativecommons.org/licenses/GPL/2.0/deed.de">CC-GNU-GPL</a><br />
1. Die Möglichkeit, das Programm für jeden Zweck zu benutzen.<br />
2. Die Möglichkeit, die Funktionalitäten des Programms auf Code-Ebene zu verstehen und sie an Ihre Bedürfnisse anzupassen.<br />
3. Die Möglichkeit, Vervielfältigungen des Programms weiterzuverbreiten, so dass es allen nützt.<br />
4. Die Möglichkeit, das Programm zu verbessern und Ihre Verbesserungen zu veröffentlichen: Auf diese Weise profitieren alle.</p></blockquote>
<p><strong>Einsatzgebiet?</strong><br />
Wo benutzt man sowas nun. Nunja einfachstes Beispiel wird warscheinlich dieses Blog-Theme sein. Ich habe <a href="http://aliasaria.ca/blog/themes/">Clouds</a> von <a href="http://aliasaria.ca">ali asaria</a>erhalten, der das <a href="http://thoughtcloud.tumblr.com/">Thought Cloud Theme</a> von <a href="http://heather-rivers.com/">Heather Rivers</a> für WordPress portiert hat. Ich durfte es dank Creative Commons weiterentwickeln und (unter Namensnennung) wiederrum (inklusive meiner Änderungen/Anpassungen) unter der selben Lizenz weitergeben. Zumindest werde ich es bald releasen :) Dauert aber noch etwas. Desweiteren bietet auch die Foto-Plattform Flickr eine wunderbare Möglichkeit Fotos unter Creative Commons zu veröffentlichen und vor allem zu finden.</p>
<p><strong>Donation</strong><br />
Aufgrund meiner Spende habe ich heute Post aus San Francisco bekommen :)</p>
<p><a title="creative commons post von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4709687260/"><img src="http://farm2.static.flickr.com/1276/4709687260_6513dbd084_m.jpg" alt="creative commons post" width="240" height="160" /></a></p>
<p><a title="creative commons shirt von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4709021991/"><img src="http://farm5.static.flickr.com/4017/4709021991_99db9fdf7b_m.jpg" alt="creative commons shirt" width="240" height="160" /></a></p>
<p>In diesem Sinne,<br />
Freie Inhalte ftw.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1049/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://a44.video2.blip.tv/5840001990950/Commonscreative-WannaWorkTogether315.ogv?bri=3.2&amp;amp" length="22671259" type="video/ogg" />
		</item>
		<item>
		<title>Bash &#124; mailrequest</title>
		<link>http://noqqe.de/archives/1042</link>
		<comments>http://noqqe.de/archives/1042#comments</comments>
		<pubDate>Sun, 13 Jun 2010 13:23:20 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sick]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1042</guid>
		<description><![CDATA[Mal wieder was aus der &#8220;Faule Sysadmins&#8221; und &#8220;wie mache ich mir _noch_ weniger arbeit&#8221;-Sparte. Desöfteren rufen Kunden an die Probleme mit ihrem Mailkonto haben. Meistens drehen sich die Probleme um die selben Themen. Angeblich nicht versandte Mails, Login-Probleme oder um Postfachgrössen, die zu klein, zu voll oder gross sind. Die Prozedur ist immer die [...]]]></description>
			<content:encoded><![CDATA[<p>Mal wieder was aus der &#8220;Faule Sysadmins&#8221; und &#8220;wie mache ich mir _noch_ weniger arbeit&#8221;-Sparte. Desöfteren rufen Kunden an die Probleme mit ihrem Mailkonto haben. Meistens drehen sich die Probleme um die selben Themen. Angeblich nicht versandte Mails, Login-Probleme oder um Postfachgrössen, die zu klein, zu voll oder gross sind.</p>
<p><a title="Where's my mail? von Éole bei Flickr" href="http://www.flickr.com/photos/eole/4500783172/"><img class="alignleft" src="http://farm3.static.flickr.com/2783/4500783172_99dd9f8a2d_m.jpg" alt="Where's my mail?" width="240" height="160" /></a></p>
<p>Die Prozedur ist immer die gleiche. Logfiles untersuchen. Quota ausfindig machen. Mail nachverfolgen. Je nach User individueller Mailserver. Für die grobe Arbeit, hab ich mir jetzt ein kleines Skript geschrieben, mit welchem ich (easy-usage-like ;D) mir ca 5-6 Befehle spare. Ich nannte es mailrequest. Die Kreativität hat mich nämlich einfach überrannt -_-</p>
<p>Das ganze läuft jetzt wie folgt ab.</p>
<p><code>mailrequest -s stichwort<br />
#Nach Queue-id, Absender, Empfaenger im aktuellen Logfile suchen.</code></p>
<p><code>mailrequest -r stichwort<br />
#Für alle Logfiles am Mailserver</code></p>
<p><code>mailrequest -q user@foobar.de<br />
#Postfachgroesse ermitteln</code></p>
<p>Bis dahin hat der Plan ganz gut geklappt. Nur die Auswahl spezieller Mailserver war mir noch nicht schön genug geregelt. Mailserver jedesmal per Parameter mit übergeben müssen? Fand ich zu doof. Aber Hard-Coded im Source ist fast noch ungünstiger gewesen. Den Mittelweg hat mir die Bash ermöglicht.</p>
<p><code>$host=$3<br />
$defaulthost=mail.domain.de<br />
${host:-$defaulthost}</code></p>
<p>Klartext: Wenn kein 3. Parameter definiert (oder leer) ist, wird automatisch der $defaulthost gewählt. Sollte der Mailserver nun vom Standard abweichen, kann ich ihn mitgeben. Falls nicht, kann ich mir den 3. Parameter des Aufrufs sparen.</p>
<p><code>mailrequest -s spam@zwetschge.org mail.zwetschge.org</code></p>
<p>Das ganze Script zum begutachten, Kritik äußern, anflamen, besserwissen: <a href="http://zwetschge.org/paste/013">http://zwetschge.org/paste/013</a></p>
<p>Um es wie der Typ aus der Congstar-Werbung zu sagen: &#8220;I like&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1042/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flickr &#124; Sandspeeder with Sand Scout</title>
		<link>http://noqqe.de/archives/1041</link>
		<comments>http://noqqe.de/archives/1041#comments</comments>
		<pubDate>Thu, 10 Jun 2010 10:21:36 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1041</guid>
		<description><![CDATA[Sandspeeder with Sand Scout Ursprünglich hochgeladen von Avanaut Kind of testing flickr&#8217;s &#8220;blogg!&#8221;-function. love this &#60;3]]></description>
			<content:encoded><![CDATA[<p><a title="photo sharing" href="http://www.flickr.com/photos/40195501@N06/4687744760/"><img style="border: solid 2px #000000;" src="http://farm2.static.flickr.com/1293/4687744760_ac176affb1_m.jpg" alt="" /></a></p>
<p><span style="font-size: 0.9em; margin-top: 0px;"><a href="http://www.flickr.com/photos/40195501@N06/4687744760/">Sandspeeder with Sand Scout</a><br />
Ursprünglich hochgeladen von <a href="http://www.flickr.com/people/40195501@N06/">Avanaut</a><br />
</span><br />
Kind of testing flickr&#8217;s &#8220;blogg!&#8221;-function.<br />
love this &lt;3</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1041/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Snapfish &#124; Fotobücher erstellen mit Ubuntu</title>
		<link>http://noqqe.de/archives/1029</link>
		<comments>http://noqqe.de/archives/1029#comments</comments>
		<pubDate>Sun, 06 Jun 2010 09:32:51 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[fotobuch]]></category>
		<category><![CDATA[snapfish]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1029</guid>
		<description><![CDATA[Vor kurzem war ich mit meiner besseren Hälfte für ca. 10 Tage in New York. Zu ihrem (gleich darauf folgenden) Geburtstag, hätte Sie sich gerne so ein &#8220;Fotobuch, was auch manchmal in der Werbung kommt&#8221; gewünscht :)  Stellte sich für mich (nach dem das Jetlag überwunden war :P ) die Frage wie ich sowas mit [...]]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem war ich mit meiner besseren Hälfte für ca. 10 Tage in New York. Zu ihrem (gleich darauf folgenden) Geburtstag, hätte Sie sich gerne so ein &#8220;Fotobuch, was auch manchmal in der Werbung kommt&#8221; gewünscht :)  Stellte sich für mich (nach dem das Jetlag überwunden war :P ) die Frage wie ich sowas mit meinem aktuell laufenden Xubuntu hinbekomme. Löst man soetwas über Webinterface des Anbieters? Ist es notwendig zwielichtige Software zu installieren, mit der man sowas basteln kann? Warscheinlich müsste ich mir dann Windows wieder installieren? Ich muss ehrlich gestehen, ich hatte keine Ahnung.</p>
<p>Aufgrund einer bereits getätigten Bestellung von Fotos bei www.pixaco.de, beschloss ich also mein Glück dort zu versuchen. Musste aber feststellen, dass pixaco.de von HP aufgekauft wurde und jetzt Snapfish (<a href="http://www.snapfish.de">www.snapfish.de</a>) heisst. Qualitäts-, Service-, Lieferdauer-mäßig war alles gut gewesen und mein Account bestand noch, warum also nicht.</p>
<p>Ich muss sagen, dass ich im Allgemeinen sehr sehr postiv von dem ganzen Vorgang überrascht war. Einloggen, auf Fotobuch drücken und OS auswählen:<br />
(Bilder verkleinert angehängt, mit Orginalgröße verlinkt)</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-os.png"><img class="aligncenter size-medium wp-image-1030" title="snapfish-fotobuch-os" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-os-295x300.png" alt="snapfish-fotobuch-os" width="295" height="300" /></a></p>
<p>Linux Kernel 2.6, glibc 2.6. Muss ich zugeben, hört sich etwas abschreckend an. Ganz im Gegenteil verlief die Installation allerdings. Bei Auswahl des Radio-Buttons &#8220;Linux&#8221; , bekommt man vom Webserver seitens Snapfishs ein gut geschriebenes (soweit ich das mit meinem unterentwickelten Kenntnissen beurteilen kann) Perl-Skript zugeschoben, welches man einfach auszuführen hat.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-install.png"><img class="aligncenter size-medium wp-image-1031" title="snapfish-fotobuch-install" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-install-300x191.png" alt="snapfish-fotobuch-install" width="300" height="191" /></a></p>
<p>Sehr einfach, sehr schön, wenn ich mir überlege, dass das Software eines Drittanbieters ist, die nicht aus den Repos kommt. Und (warscheinlich) noch dazu &#8220;unfrei&#8221; ist. Jedenfalls, der Installtionsprozess ist nicht das einzige schöne daran. Auch die Software an sich läuft stabil, sieht gut aus und ist einfach zu benutzen.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-app.png"><img class="aligncenter size-medium wp-image-1032" title="snapfish-fotobuch-app" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-app-300x187.png" alt="snapfish-fotobuch-app" width="300" height="187" /></a><br />
<a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-addon.png"><img class="aligncenter size-medium wp-image-1033" title="snapfish-fotobuch-addon" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/snapfish-fotobuch-addon-300x187.png" alt="snapfish-fotobuch-addon" width="300" height="187" /></a></p>
<p>Auch Installation zusätzlicher Verzierungen oder sonstigem innerhalb der Software funktioniert wunderbar. Nach ca 4-5 Werktagen (von denen ich den Großteil damit verbracht habe das Buch überhaupt zu erstellen :D )  kam dann die Lieferung von Snapfish. Wie bereits erwähnt, wunderbare Qualität, schnell, schön. Finde es dabei auch awesome, dass alternative OS bei Entwicklung solcher, ich sag mal, kommerziellen Programme nicht zu kurz kommen. Danke pixaco, Snapfish oder HP. Wie auch immer du dich jetzt nennen magst. Ich muss allerdings dazusagen, dass ich nicht weiss, was andere Anbieter in dem Bereich parat haben. Snapfish war jetzt sozusagen mein Glückstreffer und ich musste mich gar nicht wirklich gross erkundigen wo man mit Linux soetwas machen lässt/erstellen kann. Jedenfalls, meine dickste Empfehlung an Snapfish.</p>
<p><a href="http://zwetschge.org/blog/wp-content/uploads/2010/06/DSC01221.jpg"><br />
<img class="aligncenter size-medium wp-image-1034" title="DSC01221" src="http://zwetschge.org/blog/wp-content/uploads/2010/06/DSC01221-300x225.jpg" alt="DSC01221" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1029/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Flattr &#124; Unentschlossen und unterinformiert.</title>
		<link>http://noqqe.de/archives/1024</link>
		<comments>http://noqqe.de/archives/1024#comments</comments>
		<pubDate>Fri, 04 Jun 2010 17:00:22 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[$$$]]></category>
		<category><![CDATA[donate]]></category>
		<category><![CDATA[Flattr]]></category>
		<category><![CDATA[pay]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1024</guid>
		<description><![CDATA[Ich weiss nicht. Also ich weiss es wirklich nicht. Ich möchte weder für die Befürworter von Flattr Partei ergreifen noch für die Gegner dieses Projekts. Ich laß viele Blogposts und Meinungen darüber. mspr0.de, wessen Gedankengang ich sehr interessant finde und sich über das möglicherweise Werbung ersetztende System ausschüttet. Von Jan (virtualpixel.de)der, wie viele andere, dass [...]]]></description>
			<content:encoded><![CDATA[<p>Ich weiss nicht. Also ich weiss es wirklich nicht. Ich möchte weder für die Befürworter von Flattr Partei ergreifen noch für die Gegner dieses Projekts. Ich laß viele Blogposts und Meinungen darüber.</p>
<p><a href="http://mspr0.de/?p=1363">mspr0.de</a>, wessen Gedankengang ich sehr interessant finde und sich über das möglicherweise Werbung ersetztende System ausschüttet.</p>
<p>Von<a href="http://www.virtualpixel.de/2010/06/01/flattr-jan-gefaellt-das/#more-1696"> Jan (virtualpixel.de)</a>der, wie viele andere, dass Konzept sehr mag und seinen Blog in Flattr integriert hat (oder umgekehrt?). Was ich auch verstehe weil viel zu viel guter Content viel zu wenig gefördert wird.</p>
<p>Von <a href="http://blog.fefe.de/?ts=b2fa2a67">blog.fefe.de</a> der Aufgrund des Datenschutzes seiner Leser auf diesen Service verzichten möchte. Auch diesen Ansatz kann ich sehr nachvollziehen und ist meiner Meinung auch der größte negativ Punkt innerhalb der Story.</p>
<p>Auch Nico Hofmann hat treffend (wenn auch etwas unernst)<a href="https://twitter.com/nicohofmann/status/15324649751"> getwittert</a>:<br />
<strong>Wann #flattr wohl die AGB-Änderung mit der Abtretung der Rechte am Content bekannt gibt?</strong></p>
<p>Im Großen und Ganzen würde ich vielen Bloggern gerne etwas Kleingeld für ihre Bemühungen und sehr tollen Artikel zuschanzen. Aber ich bin mir nicht sicher ob Flattr der richtige Weg dafür ist. Aus eben genau den Gründen, die Skeptiker anprangern. </p>
<p>Immernoch habe ich die InviteCodes für Flattr in meinem Postfach liegen, aber es noch nicht geschafft mich dort wirklich mal anzumelden.</p>
<p>Vorerst werde ich in Untätigkeit verweilen und ohne Werbung, Datenerhebung und Donation-System meinen Blog weiterführen. Denn gestartet habe ich ihn nur aus Gründen der Eigendokumentation. Und wer würde für diesen Blog schon Geld hergeben? ;) </p>
<p>Vielleicht wäre ich dafür eher ein Kandidat. <a href=" http://twitter.com/kathrinpassig/status/12937730614">Kathrin Passigs Gegenprojekt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1024/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mail &#124; Evolution und sein K.O.-Kriterium</title>
		<link>http://noqqe.de/archives/1018</link>
		<comments>http://noqqe.de/archives/1018#comments</comments>
		<pubDate>Mon, 31 May 2010 19:50:16 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[Thunderbird]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1018</guid>
		<description><![CDATA[Vor längerer Zeit suchte ich mir einen neuen Mail-Client. Mein Thunderbird 2.XY (ich kann mich wirklich nicht mehr an den genauen Release in Xubuntu 9.10 erinnern) hat desöfteren zicken gemacht. Meine drei E-Mail-Konten werden allesamt von Thunderbird sortiert. Da dies IMAP-Postfächer sind, überträgt sich die Verschiebung von Mails auch auf meine anderen 3 Mail-Clients. Unter [...]]]></description>
			<content:encoded><![CDATA[<p>Vor längerer Zeit suchte ich mir einen neuen Mail-Client. Mein Thunderbird 2.XY (ich kann mich wirklich nicht mehr an den genauen Release in Xubuntu 9.10 erinnern) hat desöfteren zicken gemacht. Meine drei E-Mail-Konten werden allesamt von Thunderbird sortiert. Da dies IMAP-Postfächer sind, überträgt sich die Verschiebung von Mails auch auf meine anderen 3 Mail-Clients. Unter anderem Mail von Apple am Macbook, iPhone Mail und Xubuntu Thunderbird zuhause. So muss ich nur einen Regelsatz pflegen und hab trotzdem überall geordnete Mails.</p>
<p><br/><img class="aligncenter size-full wp-image-1019" title="evo-logo3" src="http://zwetschge.org/blog/wp-content/uploads/2010/05/evo-logo3.png" alt="evo-logo3" width="235" height="80" /></p>
<p>Nun der Single-Point-of-Failure (oder auch Arbeits-PC) der 24 Std in Betrieb ist und Mails sortiert, hängt sich ständig auf, stürzt ab oder ignoriert willkürlich Filter. Gerade als ich 4 Wochen nicht in der Arbeit und teils auch in den USA war, war es sehr ungünstig nach 3 Tagen festzustellen das im Posteingang 600 unsortierte Mails liegen. Ein Umstieg stand an. Habe mich für Evolution entschieden und fand das auch im ersten Moment sehr sehr schön gemacht. Es gibt nur einen riesen Nachteil. Es ist nicht möglich, dass eintreffende Mails automatisch sortiert werden.</p>
<p>Auch der Lösungsansatz von <a href="http://ubuntuforums.org/showthread.php?t=99930">http://ubuntuforums.org/showthread.php?t=99930</a> konnte mir nicht helfen.</p>
<p>Jedesmal <strong>STRG + Y</strong> zu drücken kommt absolut nicht in Frage. Das funktioniert auch nicht, da ich nicht rund um die Uhr in der Arbeit bin. Später habe ich versucht dieses Event irgendwie über CronJob aus dem Source-Code starten zu lassen. Ohne Erfolg.</p>
<p>Ich muss wirklich sagen, schöne Arbeit Evolution. Würde dieses tolle Mailprogramm auch sehr gerne weiterhin benutzen. Aber unter diesen Umständen auf keinen Fall. Schade, dass wirklich schöne Software immer an irgendwelchen Kleinigkeiten scheitern. Was keinen Vorwurf gegenüber der Software selbst darstellt. Eher ein kleines Makel was für einzelne User wichtig wäre. So bin ich nun zu Thunderbird 3.0 migriert und liege Nachts wach, aus Angst morgens von Mails überrollt zu werden ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1018/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Inkrement-Methoden und Effizienz</title>
		<link>http://noqqe.de/archives/1014</link>
		<comments>http://noqqe.de/archives/1014#comments</comments>
		<pubDate>Wed, 26 May 2010 19:22:56 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[decrement]]></category>
		<category><![CDATA[increment]]></category>
		<category><![CDATA[inkrementieren]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1014</guid>
		<description><![CDATA[Desöfteren schlage ich mich in Bash-Scripting mit den Meldungen &#8220;unärer Operator&#8221; und ähnlichen Fehlern herum. Inkrementierungen über i=$[$i+1] funktionieren unter entsprechenden Umständen nicht. In Bash mit Zahlen umzugehen ist garnicht so leicht, finde ich. Manchmal werden die Zahlen als Char statt Int interpretiert und manchmal darf man zu einer Variable mit Wert 0 keine Addition [...]]]></description>
			<content:encoded><![CDATA[<p>Desöfteren schlage ich mich in Bash-Scripting mit den Meldungen &#8220;unärer Operator&#8221; und ähnlichen Fehlern herum. Inkrementierungen über i=$[$i+1] funktionieren unter entsprechenden Umständen nicht. In Bash mit Zahlen umzugehen ist garnicht so leicht, finde ich. Manchmal werden die Zahlen als Char statt Int interpretiert und manchmal darf man zu einer Variable mit Wert 0 keine Addition durchführen. Das kann natürlich an meinen mangelnden Fähigkeiten liegen, aber heute habe ich mich auf die Suche nach Lösungen zu diesem Thema gemacht.</p>
<p><code># 1<br />
let i+=1 # increment<br />
let i-=1 # decrement</code></p>
<p><code># 2<br />
let i++ # increment<br />
let i-- # decrement</code></p>
<p><code># 3<br />
i=$[$i+1] # increment<br />
i=$[$i-1] # decrement</code></p>
<p><code># 4<br />
i=$((i+1)) # increment<br />
i=$((i-1)) # decrement</code></p>
<p><code># 5<br />
((i++)) # increment<br />
((i--)) # decrement</code></p>
<p><code># 6<br />
i=$(expr $i + 1) # increment<br />
i=$(expr $i - 1) # decrement</code></p>
<p><code># 7<br />
: $[ n = $n + 1 ] # increment<br />
: $[ n = $n - 1 ] # decrement</code></p>
<p>Das waren so die üblichen Varianten mit denen ich mir die letzten Monate geholfen habe. Mitunter wirklich unschöne Sachen. Auf <a href="http://tldp.org/LDP/abs/html/declareref.html">http://tldp.org/LDP/abs/html/declareref.html</a> bin ich dann allerdings auf eine sehr elegante Lösung gestossen. Via &#8220;declare&#8221; lässt sich eine Variable auf einem bestimmten Typ festnageln. &#8220;declare -i VAR&#8221; deklariert (haha) die Variable &#8220;VAR&#8221; nach Integer. So lässt sich quasi direkt damit rechnen. Anschliessend das Beispiel um im Bild zu bleiben:</p>
<p><code># Declare Variante<br />
declare -i i # -i = integer<br />
i=$i+1 # increment<br />
i=$i-1 # decrement</code></p>
<p>Das geht wiederrum auch mit mehreren Variablen, Zahlen und Rechenoperationen. Ein kleines einzeiliges Beispiel:</p>
<p><code>j=5 ; k=12 ; declare -i i ; i=$j*10+$k/2 ; echo $i</code></p>
<p>Natürlich gibt es auch noch andere lustige Modi die man seiner Variable aufs Auge drücken kann:</p>
<p><code>declare -r # readonly<br />
declare -a # array<br />
declare -x # export variable<br />
declare -f # function</code></p>
<p>Alles in Allem sehr nett. Werde jetzt erstmal ein paar Skripte umbauen. Denke ich.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1014/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Scripting-Aufgabe @ School</title>
		<link>http://noqqe.de/archives/1011</link>
		<comments>http://noqqe.de/archives/1011#comments</comments>
		<pubDate>Sat, 22 May 2010 08:09:35 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1011</guid>
		<description><![CDATA[Wie erwähnt, gab es gestern den Test in Anwendungsentwicklung. Aufgabenstellung: Erstelle ein Skript &#8220;rechner&#8221;, welches 2 Parameter aufnimmt und über Abfrage innerhalb des Skriptes den Modus auswählbar macht. Folgende Modi und Funktionen müssen enthalten sein: Modus 1: Multiplikation Usage: ./rechner 1  2 Ausgabe: Das Ergebnis von 1 * 2 = 2 Modus 2: Counter Usage: [...]]]></description>
			<content:encoded><![CDATA[<p>Wie <a href="http://noqqe.de/?p=1005">erwähnt</a>, gab es gestern den Test in Anwendungsentwicklung.</p>
<blockquote><p><em>Aufgabenstellung: Erstelle ein Skript &#8220;rechner&#8221;, welches 2 Parameter aufnimmt und über Abfrage innerhalb des Skriptes den Modus auswählbar macht. Folgende Modi und Funktionen müssen enthalten sein:</em></p>
<p><em>Modus 1: Multiplikation<br />
Usage: ./rechner 1  2<br />
Ausgabe: Das Ergebnis von 1 * 2 = 2</em></p>
<p><em>Modus 2: Counter<br />
Usage: ./rechner 2 8<br />
Ausgabe : 2-3-4-5-6-7-8</em></p>
<p><em>Formatierung muss genau der Vorgabe entsprechen. Außerdem darf der erste Parameter nicht größer als der Zweite sein und falsche Modi-Angabe mit Fehler gemeldet werden.</em></p></blockquote>
<p>Ich muss für meinen Teil ganz ehrlich sagen, dass das wohl ein noch viel unsinnigeres Programm ist. Wenn ich auch glaube, dass es einfach nur um die Erfüllung bestimmter Umstände geht. Der Rest ist anscheinend ziemilch egal.</p>
<p>Gelöst habe ich das ganze wie folgt:</p>
<pre><code>    #!/bin/bash
    i=$1
    if [ $1 -gt $2 ]; then echo "Falscheingabe" ;  exit 200; fi

    echo "Multiplikation = 1"
    echo "Einserschritte = 2"
    echo -n "Modus eingeben:" ; read modus

    if [ $modus -eq 1 ] ; then
            echo -n "Die Multiplikation aus $1 * $2 = "; expr $1 \* $2
    elif [ $modus -eq 2 ] ; then
            while [ $i -lt $2 ] ; do
            echo -n  "$i-"
            i=$[$i+1]
            done
            echo "$2"
    else
            echo "Falscheingabe"
    fi</code></pre>
<p>Und wie von<a href="http://twitter.com/nicohofmann"> @nicohofmann</a> <a href="http://noqqe.de/?p=1005">prophezeit</a>: Die 1 ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1011/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bash &#124; Linux und Scripting an meiner Schule</title>
		<link>http://noqqe.de/archives/1005</link>
		<comments>http://noqqe.de/archives/1005#comments</comments>
		<pubDate>Thu, 20 May 2010 19:03:32 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[schule]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[skript]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1005</guid>
		<description><![CDATA[Diese Woche war (bzw. ist immernoch, aber wenn ich in der Vergangenheit spreche fühlt es sich so an als wärs schon vorbei und das ist gut) Berufsschulwoche. Nun jedenfalls habe ich die grosse Freude dort in Bash-Scripting unterrichtet zu werden. Ungewöhnlich für Lehrkörper ist unserer relativ begeisterter Linux-Benutzer und schiebt an allen Enden etwas LinuxKnow-How [...]]]></description>
			<content:encoded><![CDATA[<p>Diese Woche war (bzw. ist immernoch, aber wenn ich in der Vergangenheit spreche fühlt es sich so an als wärs schon vorbei und das ist gut) Berufsschulwoche. Nun jedenfalls habe ich die grosse Freude dort in Bash-Scripting unterrichtet zu werden. Ungewöhnlich für Lehrkörper ist unserer relativ begeisterter Linux-Benutzer und schiebt an allen Enden etwas LinuxKnow-How mit ein. Das ist sehr schön weil ich Bash und Linux sehr mag.<br />
<br/></p>
<h1 style="text-align: center;"><strong><strong>#!/bin/bash</strong></strong></h1>
<p>Morgen wird es einen Test geben, bei dem wir innerhalb 30 Minuten eine bestimmte Aufgabe scripten sollen und als &#8220;Abgabe&#8221; sozusagen vorführen müssen.</p>
<p>Eine Vorbereitung für diesen Test lautete wie folgt:</p>
<blockquote><p>Schreibe ein Script, welches durch Angabe von Parametern in verschiedenen Zeitintervallen und maximaler Ausführdauer das aktuelle Datum und die Uhrzeit ausgibt. Außerdem soll zwischen 2 Modi gewechselt werden können. Mit vorangestelltem Text &#8220;Uhrzeit ist:&#8221; und nur die Uhrzeit.</p></blockquote>
<blockquote><p>Usage Beispiel:<br />
./zeitausgabe 2 10 modus</p></blockquote>
<p>Naja. Bevor wieder diverse Trolle in den Kommentaren ihrem Ruf gerecht werden: Die Klasse ist bis auf einen %-Anteil von ca 5 komplett Windows-User und haben Bash-Scripting seit ca 7 Schultagen unterrichtet bekommen. In dieser Dimension wird also auch der Test Morgen ausfallen. Ich bin gespannt.</p>
<p>Meine Lösung der Aufgabe:</p>
<pre><code>#!/bin/bash
    interval=$1
    gesamtdauer=$2
    modus=$3
    count=0

    if [ "$modus" = "txt" ]; then
            while [ $count -lt $gesamtdauer ]; do
            let count+=$interval
            sleep $interval ; echo "Das ist die Systemzeit: $(date)"
            done
    else
            while [ $count -lt $gesamtdauer ]; do
            let count+=$interval
            sleep $interval ; echo $(date)
            done
    fi</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1005/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Offtopic &#124; nyc</title>
		<link>http://noqqe.de/archives/1002</link>
		<comments>http://noqqe.de/archives/1002#comments</comments>
		<pubDate>Mon, 17 May 2010 20:56:51 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[new york]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[offtopic]]></category>
		<category><![CDATA[urlaub]]></category>
		<category><![CDATA[zwetschge]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=1002</guid>
		<description><![CDATA[Zugegebenermaßen war die letzten 2 Wochen hier relativ wenig los. Das hatte zwei Gründe. Zum einen war ich mit meiner besseren Hälfte für knappe 2 Wochen nach New York geflogen um Urlaub zu machen und andererseits weil die Platten des Servers kurzzeitig den Dienst verweigert haben. Nach 7 Tagen Stillstand (ja, wenn mal wirklich was [...]]]></description>
			<content:encoded><![CDATA[<p>Zugegebenermaßen war die letzten 2 Wochen hier relativ wenig los. Das hatte zwei Gründe.<br />
Zum einen war ich mit meiner besseren Hälfte für knappe 2 Wochen nach New York geflogen um Urlaub zu machen und andererseits weil die Platten des Servers kurzzeitig den Dienst verweigert haben. Nach 7 Tagen Stillstand (ja, wenn mal wirklich was passiert, muss man ja ca 6000km entfernt sein -_- ) hab ich zwetschge.org dann heute wieder zum Laufen bekommen.</p>
<p>Relativ simpel via<br />
<code>fsck -y /dev/ida/c0d01p</code></p>
<p>Zum Schluss noch bisschen was auf die Augen :)</p>
<p>Ich und so.<br />
<a title="DSC00937 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4615837143/"><img src="http://farm5.static.flickr.com/4003/4615837143_7207286be7.jpg" alt="DSC00937" width="375" height="500" /></a></p>
<p>IE8 Fehlermeldung am TimesSquare<br />
<a title="DSC00935 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4616451652/"><img src="http://farm5.static.flickr.com/4062/4616451652_2811cd00fa.jpg" alt="DSC00935" width="500" height="375" /></a></p>
<p>Empire State Building<br />
<a title="DSC01173 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4615842991/"><img src="http://farm4.static.flickr.com/3415/4615842991_7eeea12b64.jpg" alt="DSC01173" width="500" height="375" /></a></p>
<p><a title="DSC01164 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4616457904/"><img src="http://farm5.static.flickr.com/4036/4616457904_6a147c2722.jpg" alt="DSC01164" width="500" height="375" /></a></p>
<p><a title="DSC00953 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4616453602/"><img src="http://farm4.static.flickr.com/3375/4616453602_69c84022dc.jpg" alt="DSC00953" width="500" height="375" /></a></p>
<p><a title="DSC00934 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4615835259/"><img src="http://farm4.static.flickr.com/3375/4615835259_3d67aa9084.jpg" alt="DSC00934" width="500" height="375" /></a></p>
<p><a title="DSC01145 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4616457292/"><img src="http://farm4.static.flickr.com/3337/4616457292_6d7f2074c9.jpg" alt="DSC01145" width="500" height="375" /></a></p>
<p><a title="DSC01197 von noqqe bei Flickr" href="http://www.flickr.com/photos/flooohooo/4616459106/"><img src="http://farm5.static.flickr.com/4031/4616459106_960839ffbd.jpg" alt="DSC01197" width="500" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/1002/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git &#124; Workflow und Branching</title>
		<link>http://noqqe.de/archives/998</link>
		<comments>http://noqqe.de/archives/998#comments</comments>
		<pubDate>Sat, 24 Apr 2010 09:44:11 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=998</guid>
		<description><![CDATA[Man merkt bestimmt, dass mich Git im Moment sehr fasziniert. Es ist eine Mischung aus &#8220;Wow, ist das umfangreich&#8221; und &#8220;Ah Dokumentation ist alles&#8221;. Mittlerweile habe ich die verschiedensten Projekte in meinen Git-Server ausgelagert. Sogar meine Tiddlywiki hab ich aufgelöst und als Git-Repo umgesetzt. Ich las jedenfalls viel in www.progit.org. Progit ist übrigens auch ein [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-869" title="git-logo" src="http://zwetschge.org/blog/wp-content/uploads/2010/02/git-logo.png" alt="git-logo" width="141" height="55" /></p>
<p>Man merkt bestimmt, dass mich <a href="http://scm-git.org">Git</a> im Moment sehr fasziniert. Es ist eine Mischung aus &#8220;Wow, ist das umfangreich&#8221; und &#8220;Ah Dokumentation ist alles&#8221;. Mittlerweile habe ich die verschiedensten Projekte in meinen Git-Server ausgelagert. Sogar meine <a href="http://tiddlywiki.com">Tiddlywiki</a> hab ich aufgelöst und als Git-Repo umgesetzt.</p>
<p>Ich las jedenfalls viel in <a href="http://www.progit.org">www.progit.org</a>. Progit ist übrigens auch ein sehr schönes Projekt. Es stellt eine Dokumentation für alle Sprachen über Git dar. Diese Dokumentation ist auf <a href="http://github.com/progit/progit">Github</a> für jeden forkbar und jeder kann theoretisch daran mitwirken.</p>
<p>Ich schweife schon wieder ab. In Progit findet man eine <a href="http://progit.org/book/ch3-4.html">wundervolle Beschreibung</a> wie man in Git einzelne Workflows bzw Branches verwaltet und wie man am effektivsten mit ihnen arbeitet. Angenommen ich habe bereits in einem bestehenden Projekt ca. 5 Commits und möchte aber vom Inital-commit noch einmal anfangen, um in eine andere Richtung weiterzuentwickeln.</p>
<pre><code>            Master
            |
o--o--o--o--o</code></pre>
<p>Sieht das ca so aus. Es besteht nun die Möglichkeit (und das ist der Grund warum ich diesen Post hier verfasse) eine neue &#8220;Entwicklungssparte&#8221; aka Branch zu starten und auf Anfang zu setzen.</p>
<pre><code>Initial     Master
|           |
o--o--o--o--o</code></pre>
<p><code># Neuen Branch erstellen namens inital<br />
git branch initial</code></p>
<p><code># Branches anzeigen<br />
git branch -a -v<br />
* master                 0bfb896 removed r_error() and added some comments<br />
remotes/origin/HEAD    -&gt; origin/master<br />
remotes/origin/initial d6600f1 First inital commit<br />
remotes/origin/master  0bfb896 removed r_error() and added some comments</code></p>
<p><code># Branche initial auf spezielle Commitnummer setzen<br />
echo "d6600f10479bb2d0d69aa8086ebe4e3149d4ef76" &gt;&gt; roborobo.git/.git/refs/heads/initial</code></p>
<p><code># In den neu erstellten Branch wechseln<br />
git checkout initial</code></p>
<p><code># Via git log kontrollieren<br />
git log</code></p>
<p><code># neuen Branch zum Server pushen<br />
git push origin initial</code></p>
<p>Weiterhin angenommen ich entwickle in der neuen Spalte &#8220;initial&#8221; weiter und commite das wiederrum dürfte das bild so aussehen:</p>
<pre><code>Initial
   |
o--o        Master
|           |
o--o--o--o--o</code></pre>
<p>&lt;3 Git.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/998/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web &#124; Anlaufstelle für Geekstuff? 3dsupply</title>
		<link>http://noqqe.de/archives/995</link>
		<comments>http://noqqe.de/archives/995#comments</comments>
		<pubDate>Thu, 22 Apr 2010 19:18:54 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[3dsupply]]></category>
		<category><![CDATA[aktion]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[futurama]]></category>
		<category><![CDATA[gratis]]></category>
		<category><![CDATA[shirt4link]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=995</guid>
		<description><![CDATA[Meine Kollegen bestellen dort ja regelmäßig. Heute hab ich aber bei Christoph Grabmer (http://blog.technical-life.at/2010/04/3dsupply-unterstutzt-blogger/) von außerordentlich zuvorkommenden Aktion des 3dsupply.de-Teams gelesen. Und hab natürlich vor mitzumachen. Man darf sich (for free) ein Shirt aussuchen, wenn in dem eigenen Blog (der den Erwartungen entsprechen soll) ein kleiner nett gemeinter Blogpost auftaucht, der auf die Aktion hinweist. [...]]]></description>
			<content:encoded><![CDATA[<p>Meine Kollegen bestellen dort ja regelmäßig. Heute hab ich aber bei Christoph Grabmer (<a href="http://blog.technical-life.at/2010/04/3dsupply-unterstutzt-blogger/">http://blog.technical-life.at/2010/04/3dsupply-unterstutzt-blogger/</a>) von außerordentlich zuvorkommenden Aktion des <a href="http://3dsupply.de">3dsupply.de</a>-Teams gelesen. Und hab natürlich vor mitzumachen.</p>
<p>Man darf sich (for free) ein Shirt aussuchen, wenn in dem eigenen Blog (der den Erwartungen entsprechen soll) ein kleiner nett gemeinter Blogpost auftaucht, der auf die Aktion hinweist. Finde ich sehr nett muss ich sagen ;) Alle Infos zur Shirt4Link Aktion hier: <a href="http://www.3dsupply.de/shirt4link/">http://www.3dsupply.de/shirt4link/</a></p>
<p>Aufgrund meiner <a href="http://www.3dsupply.de/products/666-gehirnschnecke/">Neigung zu Futurama</a> musste es natürlich folgendes werden:</p>
<p><img class="aligncenter" title="Futurama" src="http://zwetschge.org/statics/666_1269620096.0_180_180.png" alt="" width="180" height="180" /></p>
<p>dankend,<br />
Flo</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/995/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Git-daemon &#124; Anti-DOS mit fail2ban</title>
		<link>http://noqqe.de/archives/991</link>
		<comments>http://noqqe.de/archives/991#comments</comments>
		<pubDate>Wed, 21 Apr 2010 10:03:29 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ban]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[einfügen]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[fail2ban jail]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[git-daemon]]></category>
		<category><![CDATA[gitweb]]></category>
		<category><![CDATA[jail.local]]></category>
		<category><![CDATA[unban]]></category>
		<category><![CDATA[verbieten]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=991</guid>
		<description><![CDATA[Seit gestern versuche ich mittels Fail2ban zu vermeiden, dass mein git-daemon &#8220;geDOSt&#8221; wird. Also bei ca 10 Downloads die Klappe für die IP schliessen. unter: $ git clone git://zwetschge.org/roborobo.git lässt sich über den Daemon ein Repo auschecken. Der Logeintrag bei Access sieht folgendermaßen aus: 2010-04-20_11:37:52.05907 [16810] Connection from 200.200.200.200:54283 Nun lässt sich über ein einfaches [...]]]></description>
			<content:encoded><![CDATA[<p>Seit gestern versuche ich mittels Fail2ban zu vermeiden, dass mein git-daemon &#8220;geDOSt&#8221; wird. Also bei ca 10 Downloads die Klappe für die IP schliessen.<br />
unter:</p>
<p><code>$ git clone git://zwetschge.org/roborobo.git</code></p>
<p>lässt sich über den Daemon ein Repo auschecken. Der Logeintrag bei Access sieht folgendermaßen aus:</p>
<p><code>2010-04-20_11:37:52.05907 [16810] Connection from 200.200.200.200:54283</code></p>
<p>Nun lässt sich über ein einfaches Script, beispielsweise:</p>
<p><code>$ for i in $(seq 1 100) ; do git clone git://zwetschge.org/roborobo.git gitrepodos$i ; done</code></p>
<p>den Server total auslasten. Gerade bei grossen Repos wäre das fatal.<br />
Über RegExp und fail2ban-regexp lässt sich der Ausdruck im Logfile auch filtern und testen:</p>
<p><code>fail2ban-regex '2010-04-20_19:52:01.41131 [26818] Connection from 200.200.200.200:54283' '.*Connection from &lt;HOST&gt;:.{4,5}$'</code></p>
<p>gibt zurück der Ausdruck würde matchen. Meine Filterregel sieht auch dementsprechend aus:</p>
<p><code>failregex = .*Connection from &lt;HOST&gt;:.{4,5}$</code></p>
<p>und der Eintrag in der jail.local (damit als jail erkannt wird):</p>
<p><code>[git-daemon]<br />
enabled  = true<br />
port     = git<br />
filter   = git-daemon<br />
logpath  = /var/log/git-daemon/current<br />
maxretry = 5</code></p>
<p>ist eingerichtet. Keine Fehler im Fail2ban-Log. Alles erfolgreich gestartet. Aber der Filter matched einfach nicht wenn ich das Script ausprobiere.</p>
<p>Statusabfrage des Jails:</p>
<pre><code>$ fail2ban-client status git-daemon

Status for the jail: git-daemon
|- filter
|  |- File list:    /var/log/git-daemon/current
|  |- Currently failed:    0
|  `- Total failed:    0
`- action
|- Currently banned:    0
|  `- IP list:
`- Total banned:    0</code></pre>
<p>Ich weiss mir gerade nicht zu helfen. Obwohl ich das selbe Spiel mit vsftp auch gemacht habe. <a href="http://noqqe.de/?p=904">LINK</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/991/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gitweb &#124; URLs einbinden</title>
		<link>http://noqqe.de/archives/987</link>
		<comments>http://noqqe.de/archives/987#comments</comments>
		<pubDate>Wed, 21 Apr 2010 09:35:43 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[cloneurl]]></category>
		<category><![CDATA[einbinden]]></category>
		<category><![CDATA[einfügen]]></category>
		<category><![CDATA[gitweb]]></category>
		<category><![CDATA[insert]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=987</guid>
		<description><![CDATA[Ich habe heute längerfristig das Web durchforsten müssen, wie ich eine URL für den git clone git://zwetschge.org/roborobo.git Befehl in gitweb hinterlege. Das fand ich sehr hilfreich, denn seit ich meinen git-daemon wieder installiert habe, wäre es theoretisch möglich die PublicProjects darüber auszuchecken. Damit gitweb nun diese URL kennt, ist es nötig in dem Remote-Verzeichnis die [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe heute längerfristig das Web durchforsten müssen, wie ich eine URL für den</p>
<p><code>git clone git://zwetschge.org/roborobo.git</code></p>
<p>Befehl in gitweb hinterlege. Das fand ich sehr hilfreich, denn seit ich meinen git-daemon wieder installiert habe, wäre es theoretisch möglich die PublicProjects darüber auszuchecken. Damit gitweb nun diese URL kennt, ist es nötig in dem Remote-Verzeichnis die Datei cloneurl anlegen. Kurz und prägnant damit ich es nicht wieder vergesse:</p>
<p><code>echo "git://zwetschge.org/roborobo.git" &gt; /home/git/public/roborobo.git/.git/cloneurl</code></p>
<p>Dieses File liesst gitweb dann aus und schreibt die URL (in meinem Falle für roborobo) in die Summary-Übersicht mit rein.</p>
<p>Beispiel: <a href="http://git.zwetschge.org/?p=roborobo.git;a=summary">http://git.zwetschge.org/?p=roborobo.git;a=summary</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/987/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegExp &#124; Domainendungen</title>
		<link>http://noqqe.de/archives/983</link>
		<comments>http://noqqe.de/archives/983#comments</comments>
		<pubDate>Tue, 13 Apr 2010 19:07:32 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[endungen]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[regular]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[tld]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[uniq]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=983</guid>
		<description><![CDATA[Heute mal etwas weniger spektakulär. Das ist lustig, wenn ich sowas schreibe. Denn es impliziert, dass es hier schon mal etwas spektakuläres gab. Reingefallen. Heute wollte ein Kunde mit etwas mehr Domains wissen, welche verschiedenen TLDs genau dabei sind. Hatte auch kostentechnische Gründe. Jedenfalls wollte ich nach dem exportieren nicht wirklich die Liste durchgehen und [...]]]></description>
			<content:encoded><![CDATA[<p>Heute mal etwas weniger spektakulär. Das ist lustig, wenn ich sowas schreibe. Denn es impliziert, dass es hier schon mal etwas spektakuläres gab. Reingefallen.</p>
<p>Heute wollte ein Kunde mit etwas mehr Domains wissen, welche verschiedenen TLDs genau dabei sind. Hatte auch kostentechnische Gründe. Jedenfalls wollte ich nach dem exportieren nicht wirklich die Liste durchgehen und rausschreiben.</p>
<p>Wie beschreibe ich also Domains in Regular Expressions?</p>
<p><code>^.*\.(.*)</code><br />
Würde das Format beschreiben. Im Grunde alles was nach dem ersten Punkt einer Zeile kommt in $1 ablegen (durch () markiert). Kämen keinen doppelten Domains wie .co.uk in die Quere und Subdomains kommen nicht aus der Domainliste. Ziemlich low-level-regexp.</p>
<p><code>cat KundenDomainliste.txt | sed -e 's/^.*\.\(.*\)/\1/'</code><br />
Gibt die komplette Domainliste (nur mit TLDs) aus. Sonderzeichen wie ( ) müssen für die Bash noch escaped werden. Desweiteren noch den Ausdruck auf den die Beschreibung zutrifft durch 1 ersetzen. Wurden aber nicht weniger Domains.</p>
<p><code>cat KundenDomainliste.txt | sed -e 's/^.*\.\(.*\)/\1/' | uniq | sort</code><br />
Die Ausgabe von sed an uniq zu übergeben, behebt diesen Umstand. Um noch alphabetisch zu sortieren diese Ausgabe wiederrum an sort übergeben. Nett.</p>
<p>Raus kommt eine Liste von Domainendungen:<br />
<code>.au<br />
.co.uk<br />
.com<br />
.de<br />
.hu<br />
.it</code><br />
usw&#8230;<br />
Übrigens bin ich mir der Ironie bewusst, cat zu benutzen. <a href="http://sial.org/howto/shell/useless-cat/">Useless use of cat</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/983/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>roborobo &#124; selfmade robot</title>
		<link>http://noqqe.de/archives/977</link>
		<comments>http://noqqe.de/archives/977#comments</comments>
		<pubDate>Sun, 11 Apr 2010 09:40:28 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[roborobo]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[sicherung]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=977</guid>
		<description><![CDATA[Auf dem Weg durch die Filesysteme meiner Rechner/Laptops/Server kam ich immer wieder in Situationen, in denen ich gerne Files (die mir wichtig waren) an einer bestimmten Stelle aufheben wollte. Ich hab über die Monate bzw. fast schon Jahre hin immer andere Systeme, Praktiken und Plätze entwickelt in denen ich diese Configs und ähnliches ablege. Über [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-978" title="Robot-icon" src="http://zwetschge.org/blog/wp-content/uploads/2010/04/Robot-icon.png" alt="Robot-icon" width="48" height="48" /><br />
Auf dem Weg durch die Filesysteme meiner Rechner/Laptops/Server kam ich immer wieder in Situationen, in denen ich gerne Files (die mir wichtig waren) an einer bestimmten Stelle aufheben wollte. Ich hab über die Monate bzw. fast schon Jahre hin immer andere Systeme, Praktiken und Plätze entwickelt in denen ich diese Configs und ähnliches ablege. Über kurz oder lang ist aber jede dieser Methoden zu aufwändig oder zu unstrukturiert. Wenn ich Konfigurationsdateien von Daemons editierte, kopierte ich vorher die alten Files an eine bestimmte Stelle. Ziemlich Standart. Der Vorgang ist an sich ziemlich mühsam. Wirr liegen irgendwo irgendwelche Files rum.</p>
<p>Vor ein paar Wochen habe ich dann angefangen mir ein kleines Helferlein zu coden. Anfangs war dieses Helferlein nur für mich gedacht und demnach relativ speziell. Ich nannte ihn &#8220;roborobo&#8221;.</p>
<p>Was er tut ? Ich gebe meinem Helfer einfach das File &#8220;in die Hand&#8221;. Alles andere erledigt er.</p>
<p>File hinzufügen<br />
<code>$ roborobo /etc/postfix/main.cf</code> </p>
<p>Alle bekannten Files updaten:<br />
<code>$ roborobo</code> </p>
<p>Er nimmt das File an, ordnet es ein und sichert es in seinem Verzeichnis mit dem kompletten Verzeichnispfad nach Baumstruktur-Art. Außerdem prüft roborobo jetzt jede Stunde anhand der sha1sum ob sich in dem File seit der letzten Prüfung etwas getan hat. Falls Veränderungen da sind, wird das File mit neuem Datum wieder abgespeichert. Das sieht ungefähr so aus:</p>
<pre><code>.roborobo/
|-- etc
|   |-- hosts
|   |   |-- hosts-20100409-1348
|   |   `-- hosts-20100409-1651
|   `-- network
|       `-- interfaces
|           |-- interfaces-20100409-1654
|           `-- interfaces-20100409-1655</code></pre>
<p>Ich brauche mich somit um _nichts_ mehr kümmern. Gebe dem &#8220;kleinen&#8221; die Files die mir wichtig sind und er passt darauf auf. Fühlt sich irgendwie an wie ein Backup-Daemon ;)</p>
<p>Jedenfalls, habe ich roborobo jetzt für den Einsatz auf jedem beliebigen System umgebaut und in ein Debianpaket gebastelt. Dokumentation erstellt, Config-Dateien ausreichend selbsterklärend gestaltet usw.</p>
<p>Wer sich dafür interessiert oder mal testen mag:</p>
<p><a href="http://github.com/noqqe/roborobo/downloads">roborobo-Debianpaket bei Github</a><br />
<a href="http://github.com/noqqe/roborobo/">roborobo-Projekt auf Github</a><br />
<a href="http://git.zwetschge.org/?p=roborobo.git;a=summary">Alles nochmal bei meinem privaten Git-Server auf git.zwetschge.org</a></p>
<p>Content:</p>
<pre><code>roborobo
|-- DEBIAN
|   `-- control
|-- etc
|   |-- cron.d
|   |   `-- roborobo
|   `-- roborobo
|       |-- roborobo.conf
|       `-- roborobo.path
`-- usr
    |-- bin
    |   `-- roborobo
    `-- share
        |-- doc
        |   `-- roborobo
        |       |-- changelog
        |       `-- copyright
        `-- man
            `-- man1
                `-- roborobo.1
</code></pre>
<p>Das ganze wie alles was ich tue, unter GPLv3. Viel Spass damit ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/977/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress &#124; Archive Page erstellen</title>
		<link>http://noqqe.de/archives/970</link>
		<comments>http://noqqe.de/archives/970#comments</comments>
		<pubDate>Mon, 05 Apr 2010 19:01:16 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[archiv]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[clouds]]></category>
		<category><![CDATA[contents]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=970</guid>
		<description><![CDATA[War &#8216;ne schwere Geburt, was sich da jetzt unter Archive versteckt. Zum einen (ungewöhnlicher Weise) schlecht und nicht umfassend genug dokumentiert bei codex.wordpress.org und zum anderen ist mein aktuelles Theme schon etwas widerspenstig was solche Sachen angeht. Unter anderem diese Widerspenstigkeit war der Punkt, warum ich kein Plugin verwenden konnte. Umständlich aber trotzdem zielführend. Die [...]]]></description>
			<content:encoded><![CDATA[<p>War &#8216;ne schwere Geburt, was sich da jetzt unter <a href="http://noqqe.de/?page_id=927">Archive</a> versteckt. Zum einen (ungewöhnlicher Weise) schlecht und nicht umfassend genug dokumentiert bei <a href="http://codex.wordpress.org/Creating_an_Archive_Index">codex.wordpress.org</a> und zum anderen ist mein aktuelles Theme schon etwas widerspenstig was solche Sachen angeht. Unter anderem diese Widerspenstigkeit war der Punkt, warum ich kein <a href="http://wordpress.org/extend/plugins/search.php?q=archive&amp;sort=">Plugin</a> verwenden konnte.</p>
<p>Umständlich aber trotzdem zielführend. Die single.php stellt die Einzelansicht eines Blogposts. Super das will ich ja. Die Archiv-Template-Seite kann man in dem Theme-Dir ruhig liegen lassen:</p>
<p><code>cd /var/www/blog/wp-contents/themes/clouds/<br />
cp single.php archive.php</code></p>
<p>Darauf folgend habe ich die Post-Aufrufe aus dem Quelltext entfernt. Der Source ist relativ selbsterklärend. Somit besteht nur noch das Grundgerüst einer Einzelansicht. Wo sich vorher die Aufrufe für die Posts befand, fügte ich folgendes ein:</p>
<p><code>&lt;br/&gt;&lt;b&gt;Monthly outline&lt;/b&gt;<br />
&lt;?php wp_get_archives('type=monthly&amp;show_post_count=1'); ?&gt;<br />
&lt;br/&gt;&lt;b&gt;Post outline by date&lt;/b&gt;<br />
&lt;?php wp_get_archives('type=postbypost');?&gt;</code></p>
<p>Die Funktion wp_get_archives ist allerdings <a href="http://codex.wordpress.org/Template_Tags/wp_get_archives">sehr schön dokumentiert</a>. Die Kunst an dem eigentlich Spass war aber das einbinden dieser archive.php-Datei.</p>
<p>Damit WordPress erkennt, dass es sich bei archive.php um eine Template-Datei handelt:</p>
<p><code>&lt;?php<br />
/**<br />
* @package WordPress<br />
* @subpackage Default_Theme<br />
*/<br />
/*<br />
Template Name: Archives<br />
*/<br />
?&gt;</code></p>
<p>am Anfang der Datei einfügen. Jetzt noch in WordPress die Seite erstellen. Dazu musste ich eine Seite anlegen mit leerem Inhalt. Anschliessend bei Seiten -&gt; bearbeiten -&gt; Quickedit(!) -&gt; Template: Archive auswählen.</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/970/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nagios &#124; Von sprechenden Druckern, Verpflichtungen und SNMP</title>
		<link>http://noqqe.de/archives/954</link>
		<comments>http://noqqe.de/archives/954#comments</comments>
		<pubDate>Fri, 02 Apr 2010 18:24:51 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fach]]></category>
		<category><![CDATA[mib]]></category>
		<category><![CDATA[nachfüllen]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[oid]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[papier]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[tray]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=954</guid>
		<description><![CDATA[Ich teile mir in meiner Funktion als Auszubildender mit einem Kollegen die ehrenvolle Aufgabe, ab und an den Papierstand unserer 4-Fächer Ricoh Drucker bei Gelegenheit zu &#8220;überwachen&#8221;. Im vorbeigehen sozusagen. Nun, das ganze ist ein etwas undankbarer Job &#8211; denn egal wie oft man zum Kontrollieren kommt &#8211; es kommt immer der Moment in dem [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://zwetschge.org/blog/wp-content/uploads/2010/04/Logo_Nagios.gif" alt="Logo_Nagios" title="Logo_Nagios" width="150" height="40" class="aligncenter size-full wp-image-963" /></p>
<p>Ich teile mir in meiner Funktion als Auszubildender mit einem Kollegen die ehrenvolle Aufgabe, ab und an den Papierstand unserer 4-Fächer Ricoh Drucker bei Gelegenheit zu &#8220;überwachen&#8221;. Im vorbeigehen sozusagen. Nun, das ganze ist ein etwas undankbarer Job &#8211; denn egal wie oft man zum Kontrollieren kommt &#8211; es kommt immer der Moment in dem nichts mehr im Fach / den Fächern ist, wenn Kollegen 200 Seiten am Stück ausdrucken.</p>
<p>Um an diesem Umstand etwas zu ändern kam uns neulich eine &#8220;Notification&#8221;-Idee. In der Beschreibung des Druckers steht &#8220;SNMP-fähig&#8221;. Das <a href="http://de.wikipedia.org/wiki/Simple_Network_Management_Protocol">Simple Network Management Protokoll</a> bietet allerlei Möglichkeiten Informationen von Routern, Switches, Server oder Desktoprechnern abzufragen. In unserem Fall bietet auch der Drucker diese Möglichkeiten. Nach kurzer Recherche, scheint es etwas wie <a href="http://de.wikipedia.org/wiki/Object_Identifier">OIDs</a> / <a href="http://de.wikipedia.org/wiki/Management_Information_Base">MIBs</a> für Drucker zu geben. Eine Liste dieser OIDs lässt sich mit snmpwalk ausgeben.</p>
<p><code>snmpwalk -Os -c public -v 1 192.168.1.200</code></p>
<p>Herauskommt eine _Menge_ an Informationen, mit der man erst mal umzugehen wissen muss. Nach etwas suchen, fiel mir folgender Block ins Auge:</p>
<p><code>mib-2.43.8.2.1.10.1.1 = INTEGER: 55<br />
mib-2.43.8.2.1.10.1.2 = INTEGER: 385<br />
mib-2.43.8.2.1.10.1.3 = INTEGER: 55<br />
mib-2.43.8.2.1.10.1.4 = INTEGER: 385<br />
mib-2.43.8.2.1.10.1.5 = INTEGER: 0<br />
mib-2.43.8.2.1.11.1.1 = INTEGER: 0<br />
mib-2.43.8.2.1.11.1.2 = INTEGER: 0<br />
mib-2.43.8.2.1.11.1.3 = INTEGER: 0<br />
mib-2.43.8.2.1.11.1.4 = INTEGER: 0<br />
mib-2.43.8.2.1.11.1.5 = INTEGER: 9<br />
mib-2.43.8.2.1.12.1.1 = ""<br />
mib-2.43.8.2.1.12.1.2 = STRING: "Briefbogen"<br />
mib-2.43.8.2.1.12.1.3 = ""<br />
mib-2.43.8.2.1.12.1.4 = ""<br />
mib-2.43.8.2.1.12.1.5 = ""<br />
mib-2.43.8.2.1.13.1.1 = STRING: "Tray 1"<br />
mib-2.43.8.2.1.13.1.2 = STRING: "Tray 2"<br />
mib-2.43.8.2.1.13.1.3 = STRING: "Tray 3"<br />
mib-2.43.8.2.1.13.1.4 = STRING: "Tray 4"</code></p>
<p>Kurzes systematisches Trial-and-Error am Papierfach des Druckers und Kontrolle der Veränderungen der SNMP-Ausgabe brachten mehr Aufschluss. Es schien also so als würde ein Teil der SNMP-Ausgabe die geschätzten Werte an Papier im Drucker zurückliefern.</p>
<p>Genau genommen die OIDs :<br />
<code>mib-2.43.8.2.1.10.1.1<br />
mib-2.43.8.2.1.10.1.2<br />
mib-2.43.8.2.1.10.1.3<br />
mib-2.43.8.2.1.10.1.4</code></p>
<p>Damit lässt sich arbeiten. Für jedes Papierfach des Druckers eine OID-Nummer. snmpget lässt ein Gerät explizit nach einer OID fragen, oder ihren Descriptor.</p>
<pre><code>snmpget -v1 -Cf -c public 192.168.1.200 mib-2.43.8.2.1.10.1.1
SNMPv2-SMI::mib-2.43.8.2.1.10.1.1 = INTEGER: 385</code></pre>
<p>Im ersten Fach sind also 385 Blätter. Schätzungsweise. So ist es also möglich den aktuellen Stand der Papierfächer abzufragen, ohne aufstehen zu müssen. Das war schonmal was. Aber wie das jetzt mit Benachrichtigung laufen lassen? CronJob? <a href="http://www.nagios.org/">Nagios</a>! Wo sonst httpd&#8217;s, smb-Freigaben, Erreichbarkeiten oder sonstige Dienste abgefragt und monitored werden, ließen sich auch die Papierfächer einbinden.</p>
<p>Zuerst die Drucker als Hosts einbinden, die Nagios überwachen soll:</p>
<pre><code>/etc/nagios3/conf.d/host-printer1.intern.cfg
define host {
        host_name  printer1.intern.firma.de
        alias       printer1
        address     192.168.1.200
        use         generic-host
        }</code></pre>
<p>Jetzt kennt Nagios den Host. Weiss aber weder was dort überwacht werden soll, noch mit welchem Plugin und ab welchem Schwellwert es Alarm schlagen soll. Nagios enthält ein Plugin für SNMP-Abfragen. Zu finden unter /usr/lib/nagios/plugins/check_snmp. Diesem Plugin kann ich die selben Fragen stellen wie mit snmpget. Einzige Veränderung: Schwellwerte für Warning (-w) und Critical (-c) müssen mitgegeben werden. Ich erstellte also einen sogenannten &#8220;Check&#8221;.</p>
<pre><code>/etc/nagios3/conf.d/z_check_papertray:
define command{
         command_name    check_papertray
         command_line    /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C '$ARG1$' -o mib-2.43.8.2.1.10.1.$ARG2$ -w '$ARG3$': -c '$ARG4$':
}</code></pre>
<p>Die -H Hostadresse wird aus der angegebenen Adresse im Hostfile  gewonnen in dem der Check später als &#8220;Service&#8221; eingebunden wird. Außerdem noch jede Menge Argumente die auf den ersten Blick vielleicht verwirren.</p>
<p>Argument1: Community für die SNMP-Anfrage. In dem Fall &#8220;public&#8221;<br />
Argument2: Fachnummer mit der die OID ergänzt wird.<br />
Argument3: Warning-Wert bei dem Nagios Alarm schlägt.<br />
Argument4: Critical-Wert bei dem Nagios Alarm schlägt.</p>
<p>In der Hostdatei kann der definierte Check jetzt als Service eingebunden werden.</p>
<pre><code>define service {
        use                             generic-service
        host_name                      printer1.intern.firma.de
        service_description             PAPERTRAY 1 DinA4
        check_command                   check_papertray!public!1!150!56
        }</code></pre>
<p>Das ganze 4 mal. Für jedes Papierfach einmal. check_command ist dabei der ausschlaggebende Punkt. Nagios zieht aus jedem Wert nach ! seine Argumente. Community public, Fach 1, Schwellwert Warning 150 und Critical 56 oder kleiner.</p>
<p>Wenn dann alles funktioniert, sieht das aus wie folgt:</p>
<p><a title="nagios von noqqe bei Flickr" href="http://farm3.static.flickr.com/2745/4484211221_b61073eb5d_o.png"><img src="http://farm3.static.flickr.com/2745/4484211221_b61073eb5d_o.png" alt="nagios" width="400" height="47" /></a></p>
<p>Und im Falle eines Falles. Emails:</p>
<blockquote><p>
** PROBLEM Service Alert 2: printer1/PAPERTRAY 1 DinA4 is CRITICAL **</p>
<pre>
***** Nagios *****
Notification Type: PROBLEM
Service: PAPERTRAY 1 DinA4
Host: printer1
Address: 

192.168.1.200

State: CRITICAL
Date/Time: Thu Apr 1 16:30:42 CEST 2010
ACK by:
Comment:
Additional Info:
SNMP CRITICAL - *0*</pre>
</blockquote>
<p>Schön, denn wir werden jetzt immer benachrichtigt wenn kein Papier mehr im Fach ist, oder es bereits aufgefüllt wurde. Und Chef fands auch gut :)</p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/954/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Apache2 &#124; vhost-Logs und logrotate</title>
		<link>http://noqqe.de/archives/946</link>
		<comments>http://noqqe.de/archives/946#comments</comments>
		<pubDate>Wed, 31 Mar 2010 19:12:03 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntuusers]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[logrotate]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[vhost]]></category>
		<category><![CDATA[vhosts]]></category>
		<category><![CDATA[virtual host]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=946</guid>
		<description><![CDATA[Nachdem mein Apache immer mehr und mehr virtuelle Hosts / eingerichtete Subdomains bekommt, welche alle in das /var/log/apache2/access.log reinloggen, fand ich es an der Zeit etwas mehr Struktur rein zu bringen. Generell werden alle bestehenden vhosts in /etc/apache2/sites-available/* deklariert. Darin befinden sich allerlei Deklarationen wie der Ort des Directory und ähnliches. Kurzer Head-Auszug: ServerAdmin webmaster@zwetschge.org [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-947" title="169px-ASF-logo.svg" src="http://zwetschge.org/blog/wp-content/uploads/2010/03/169px-ASF-logo.svg.png" alt="169px-ASF-logo.svg" width="169" height="51" /></p>
<p>Nachdem mein Apache immer mehr und mehr virtuelle Hosts / eingerichtete Subdomains bekommt, welche alle in das /var/log/apache2/access.log reinloggen, fand ich es an der Zeit etwas mehr Struktur rein zu bringen. Generell werden alle bestehenden vhosts in /etc/apache2/sites-available/* deklariert.<br />
Darin befinden sich allerlei Deklarationen wie der Ort des Directory und ähnliches. Kurzer Head-Auszug:</p>
<p><code>ServerAdmin webmaster@zwetschge.org<br />
ServerName noqqe.de<br />
ServerAlias www.noqqe.de<br />
DocumentRoot /var/www/blog/</code></p>
<p>Unter anderem auch die Anweisung für logging:</p>
<p><code>LogLevel warn<br />
CustomLog /var/log/apache2/access.log combined</code></p>
<p>Alle meine vhosts haben den selben Eintrag und loggen demnach auch alle in das selbe File. Dieser Umstand wird relativ schnell zum Problem. Ständiges greppen und ähnliches an der Tagesordnung. Apache ist aber eben auch in der Lage für jeden vhost eine extra Logfile zu generieren.</p>
<p><code>LogLevel warn<br />
ErrorLog /var/log/apache2/noqqe.de-error.log<br />
CustomLog /var/log/apache2/noqqe.de-access.log common</code></p>
<p>Mit der Syntax [$domain]-[access|error].log ist es im Apachenlogverzeichnis schön außeinander zu halten auf welchen vhost welche Anfragen gingen. Erleichtert die Suche ungemein. Auch Aufgliederung in apache2/error/* und apache2/access/* wäre denkbar. Aber für mich gerade oversized.</p>
<p>Nächster Punkt auf der Liste: logrotate</p>
<p>Ein Logfile wird _rotiert_. Diese Rotation übernimmt das Programm Logrotate. Jeder kennts:</p>
<p><code>-rw-r----- 1 root adm 360K 29. Mär 00:25 access.log.1<br />
-rw-r----- 1 root adm 193K 31. Jan 00:25 access.log.10.gz<br />
-rw-r----- 1 root adm 192K 24. Jan 00:25 access.log.11.gz</code></p>
<p>Ich möchte auch gerne meine vhost-Logfiles rotieren lassen. Wie in jedem (guten) Daemon gibt es auch hier ein Verzeichnis logrotate.d/*. Darin befinden sich manuell angepasste config-Files die zb bei Upgrades nicht überschrieben werden. Der folgende Eintrag lässt alle Dateien die mit .log enden und sich im Verzeichnis /var/log/apache2/ befinden wöchentlich bis zu 10 Wochen rotieren und komprimieren:</p>
<pre><code>/var/log/apache2/*.log {
        weekly
        missingok
        rotate 10
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
                        /etc/init.d/apache2 reload &gt; /dev/null
                fi
        endscript
}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/946/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Backup &#124; Adium Einstellungen und Plugins sichern</title>
		<link>http://noqqe.de/archives/944</link>
		<comments>http://noqqe.de/archives/944#comments</comments>
		<pubDate>Sat, 27 Mar 2010 18:29:12 +0000</pubDate>
		<dc:creator>noqqeadm</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PlanetenBlogger]]></category>
		<category><![CDATA[adium]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[einstellungen]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[preferences]]></category>
		<category><![CDATA[sichern]]></category>

		<guid isPermaLink="false">http://noqqe.de/?p=944</guid>
		<description><![CDATA[Ein gegebener Anlass brachte mich dazu mein Adium neu installieren zu müssen. Um es mir auch längerfristig merken zu können, paste ich wie immer alles in meinen Blog. ~/Library/Application Support/Adium 2.0/ ~/Library/Preferences/com.adiumX.adiumX.plist weg kopieren und nach der neuen Installation wieder einspielen. Und die Pfade für solche Späße bei Mac OS X gefallen mir immernoch nicht. [...]]]></description>
			<content:encoded><![CDATA[<p>Ein gegebener Anlass brachte mich dazu mein Adium neu installieren zu müssen. Um es mir auch längerfristig merken zu können, paste ich wie immer alles in meinen Blog.</p>
<p><code>~/Library/Application Support/Adium 2.0/<br />
~/Library/Preferences/com.adiumX.adiumX.plist</code></p>
<p>weg kopieren und nach der neuen Installation wieder einspielen. Und die Pfade für solche Späße bei Mac OS X gefallen mir immernoch nicht. Was soll man machen. </p>
]]></content:encoded>
			<wfw:commentRss>http://noqqe.de/archives/944/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

