<?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>Tüntel &#187; Python</title>
	<atom:link href="http://www.tuentel.de/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tuentel.de</link>
	<description>Dinge die kamen und blieben</description>
	<lastBuildDate>Tue, 31 Aug 2010 07:04:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>IMAP E-Mail Backup</title>
		<link>http://www.tuentel.de/2009/01/imap-mail-backup/</link>
		<comments>http://www.tuentel.de/2009/01/imap-mail-backup/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 10:44:18 +0000</pubDate>
		<dc:creator>dirk</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://www.tuentel.de/?p=68</guid>
		<description><![CDATA[Alle nutzen E-Mails, aber mal ehrlich... wer macht davo [...]]]></description>
			<content:encoded><![CDATA[<p>Alle nutzen E-Mails, aber mal ehrlich&#8230; wer macht davon regelmäßig Backups? Für meine Zwecke habe ich eine ganz brauchbare Lösung gefunden.<span id="more-68"></span></p>
<p>Dazu benutze ich das Python Skript imapbackup.py das hier zu besorgen ist: <a href="http://the.taoofmac.com/space/Projects/imapbackup" target="_blank">http://the.taoofmac.com/space/Projects/imapbackup</a>. Leider kam es bei mir zu Problemen mit Python 2.5, (MemoryError) daher lasse ich dieses Skript unter Python 2.6 laufen, was bisher noch keine Probleme verursacht hat. Aufgerufen wird das Ganze wie folgt:</p>
<pre>
$ python imapbackup.py -s mail.example.com -u example_user -p top_secret
</pre>
<p>Die Backups werden dann in das aktuelle Arbeitsverzeichnis geschrieben. Das hat mir nicht so sonderlich gefallen, weil ich mehrere Accounts habe. Der folgende Code-Schnipsel kann in das Skript eingefügt werden und sorgt dafür das die Backups in einem Verzeichnis mit dem Namen &#8220;HOSTNAME-USERNAME&#8221; landen, wobei beim Usernamen alles ab dem @ Zeichen abgeschnitten wird:</p>
<p><code lang="python"><br />
# Pimp  filename<br />
dest = os.path.join(os.getcwd(), config["server"] + "-" + config["user"].split("@")[0])<br />
if not os.path.isdir(dest):<br />
os.makedirs(dest)<br />
filename = os.path.join(dest, filename)<br />
</code></p>
<p>Viel Erfolg mit der neuen Sicherheit <img src='http://www.tuentel.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Update 25.1.2010:</strong></p>
<p>Kompletter modifizierter Sourcecode <a href="http://gist.github.com/285987" target="_blank">http://gist.github.com/285987</a></p>
 <p>Feel free to Flattr this post at <a href="http://flattr.com/" title="Flattr" target="_blank">flattr.com</a>, if you like it.</p> <p><a href="http://flattr.com/" title="Flattr" target="_blank"><img src="http://www.tuentel.de/wp-content/plugins/flattrss/button-compact-static-100x17.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.tuentel.de/2009/01/imap-mail-backup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google App Engine</title>
		<link>http://www.tuentel.de/2009/01/google-app-engine/</link>
		<comments>http://www.tuentel.de/2009/01/google-app-engine/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 15:23:21 +0000</pubDate>
		<dc:creator>Dirk</dc:creator>
				<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Pyxer]]></category>
		<category><![CDATA[Sicherheit]]></category>

		<guid isPermaLink="false">http://www.tuentel.com/?p=16</guid>
		<description><![CDATA[Schon seit einiger Zeit nutze ich nun die Google App En [...]]]></description>
			<content:encoded><![CDATA[<p>Schon seit einiger Zeit nutze ich nun die <a href="http://code.google.com/intl/de/appengine/" target="_blank">Google App Engine</a> (kurz: GAE) und habe auch ein kleines Framework namens <a href="http://code.google.com/p/pyxer/" target="_blank">Pyxer</a> programmiert, dass das Leben dort und anderswo einfacher machen soll. In diesem Artikel möchte ich kurz meinen Eindruck wiedergeben und auf das momentan angesagte Cloud Computing eingehen.</p>
<p><span id="more-16"></span></p>
<h2>Was es kann&#8230;</h2>
<p>Zunächst einmal muss ich sagen das Google ganze Arbeit geleistet hat und mit Python genau die richtige Programmiersprache für diese anspruchsvolle Aufgabe gewählt hat. Denn es geht um nichts weniger als eine Plattform zur Verfügung zu stellen die trotz einfacher Anwendung maximal skaliert. Dazu trägt auch die mitgelieferte Datenbank bei, die eigentlich gar nicht als solche bezeichnet werden kann, denn es handelt sich um eine so genannte &#8220;Big Table&#8221;, die auch bei Google Suchdaten Speicherung zum Einsatz kommen soll. Also beste Voraussetzungen für unbegrenztes Wachstum der Applikationen.</p>
<p>Allerdings müssen dafür auch Einschränkungen in Kauf genommen werden, denn Google hat Python in ein enges Korsett gesteckt. Daher ist es nur möglich Python Module von Drittanbietern zu verwenden, die ohne nativen Code auskommen. Durch diese Begrenzungen fallen beliebte Module wie <strong>lxml </strong>und <strong>PIL </strong>leider weg. Ebenso taten sich sämtliche Templating Sprachen die auf den AST Baum zugriffen schwer, jedoch hat sich hier zumindest bei Genshi einiges getan, so dass dieser Makel in kürze verschwinden sollte.</p>
<h2>Die große Wolke</h2>
<p>GAE stellt neben den üblichen Diensten, wie z.B. denen von Amazon, eine Besonderheit dar. Üblicherweise bieten Cloud Anbieter virtuelle Maschinen zur Verfügung auf der beliebige Programme laufen können. Hat die Maschine ein bestimmtes Limit erreicht, wird ein Ausbau notwendig.</p>
<p>Google hingegen setzt auf eine proprietäre Entwicklungsumgebung. Der Vorteil hier ist, dass die verarbeitende Hardware absolut unwichtig ist und auch keinerlei physikalische Begrenzungen durch den User wahrgenommen werden können und brauchen.</p>
<p>In allen Szenarien des Cloud Computings ist aber das Motto &#8220;Zahle soviel zu brauchst&#8221; das schlagende Verkaufsargument. Für viele Startups bei die es sich leisten können ihrer Kundendaten bei einem Anbieter wie Google zu lagern ist dies der ideale Service. Allerdings ist gerade diese ungewisse Speicherung von Daten in der Cloud das stärkte Gegenargument für kommerzielle Nutzer. Sollte diese Problem der Datensicherheit befriedigend gelöst werden können, dann spräche wirklich nichts mehr gegen das Cloud Computing, aber hier ist momentan kein goldener Wurf abzusehen.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.14';
var flattr_uid = 'holtwick';
var flattr_url = 'http://www.tuentel.de';
var flattr_lng = 'de_DE';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Tüntel';
var flattr_dsc = 'Dinge die kamen und blieben';
</script>
<script src="https://api.flattr.com/js/0.5.0/load.js?mode=auto" type="text/javascript"></script> <p>Feel free to Flattr this post at <a href="http://flattr.com/" title="Flattr" target="_blank">flattr.com</a>, if you like it.</p> <p><a href="http://flattr.com/" title="Flattr" target="_blank"><img src="http://www.tuentel.de/wp-content/plugins/flattrss/button-compact-static-100x17.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.tuentel.de/2009/01/google-app-engine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
