<?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>webwalk</title>
	<atom:link href="http://blog.die-tf.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.die-tf.de</link>
	<description>Ein Spaziergang durchs Web mit Johannes Jörg Schmidt</description>
	<lastBuildDate>Wed, 10 Feb 2010 20:53:10 +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>Quilt: Access CouchDB JSON documents from filesystem</title>
		<link>http://blog.die-tf.de/2010/02/01/quilt-access-couchdb-json-documents-from-filesystem/</link>
		<comments>http://blog.die-tf.de/2010/02/01/quilt-access-couchdb-json-documents-from-filesystem/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 11:15:55 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false">http://blog.die-tf.de/?p=4602</guid>
		<description><![CDATA[Mein neuestes Projekt: Quilt Check out the Code at github: http://github.com/jo/quilt Projectpage: http://jo.github.com/quilt]]></description>
			<content:encoded><![CDATA[<p>Mein neuestes Projekt: <a href="http://jo.github.com/quilt/">Quilt</a></p>
<p><img class="alignnone" title="Quilt Screenshot" src="http://jo.github.com/quilt/screenshot.png" alt="" width="600" height="411" /></p>
<ul>
<li>Check out the Code at github: <a href="http://github.com/jo/quilt">http://github.com/jo/quilt</a></li>
<li>Projectpage: <a href="http://jo.github.com/quilt">http://jo.github.com/quilt</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2010/02/01/quilt-access-couchdb-json-documents-from-filesystem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emails von IMAP nach IMAP</title>
		<link>http://blog.die-tf.de/2008/09/27/emails-von-imap-nach-imap-2/</link>
		<comments>http://blog.die-tf.de/2008/09/27/emails-von-imap-nach-imap-2/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 02:59:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Um Emails von einem EMAP- Postfach auf ein anderes zu transferieren, kann man natürlich einfach per Drag and Drop seine Ordner in seinem Email-Client wie Evolution oder Thunderbird von einem Account auf den anderen zerren. Es ist aber leider nicht gerade unproblematisch, sehr viele Emails zu kopieren. Zum Glück gibt es unter UNIX das Programm [...]]]></description>
			<content:encoded><![CDATA[<p>Um Emails von einem <span class="caps">EMAP</span>- Postfach auf ein anderes zu transferieren, kann man natürlich einfach per Drag and Drop seine Ordner in seinem Email-Client wie Evolution oder Thunderbird von einem Account auf den anderen zerren. Es ist aber leider nicht gerade unproblematisch, sehr viele Emails zu kopieren.<br />
Zum Glück gibt es unter <span class="caps">UNIX</span> das Programm <a href="http://freshmeat.net/projects/imapsync/">imapsync</a>.</p>
<pre>imapsync --host1 mail.physik.fu-berlin.de --port1 993 --user1 username --ssl1 --noauthmd5 --host2 imap.gmail.com --port2 993 --user2 gmailuser --ssl2
</pre>
<p>Damit sieht man genau, was passiert. Allerdings konnte auch dieses Programm meine Mails nicht vollständig übertragen. Ich lasse es sehr oft laufen und jedesmal werden weitere Mails kopiert. Das ist nicht gerade das, was ich erwarte.<br />
Aber währe da nicht Ruby, würde ich es bestimmt nicht auf die solide Tour versucht haben: Ein kleines Ruby-Skript, was ich auf wonko.com gefunden habe.</p>
<p><span id="more-4426"></span></p>
<p><a href="http://wonko.com/post/ruby_script_to_sync_email_from_any_imap_server_to_gmail">Hier ist das Originalskript</a></p>
<pre>#!/usr/bin/env ruby
# from http://wonko.com/post/ruby_script_to_sync_email_from_any_imap_server_to_gmail
# little change by Johannes J. Schmidt

require 'net/imap'

# Source server connection info.
SOURCE_HOST = 'mail.physik.fu-berlin.de'
SOURCE_PORT = 993
SOURCE_SSL  = true
SOURCE_USER = 'username'
SOURCE_PASS = 'pass'

# Destination server connection info.
DEST_HOST = 'imap.gmail.com'
DEST_PORT = 993
DEST_SSL  = true
DEST_USER = 'username'
DEST_PASS = 'pass'

# Mapping of source folders to destination folders. The key is the name of the
# folder on the source server, the value is the name on the destination server.
# Any folder not specified here will be ignored. If a destination folder does
# not exist, it will be created.
FOLDERS = {
  "INBOX" =&gt; "physik/inbox"
#  'INBOX' =&gt; 'INBOX',
#  'sourcefolder' =&gt; 'gmailfolder'
}

def progress(total, cnt)
  out = "%.2f" % ((100.0*cnt)/total)
  out &lt;&lt; "% "
  out &lt;&lt; "(%d/%d)" % [cnt, total]
  out
end

# Utility methods.
def dd(message)
   puts "[#{DEST_HOST}] #{message}"
end

def ds(message)
   puts "[#{SOURCE_HOST}] #{message}"
end

# Connect and log into both servers.
ds 'connecting...'
source = Net::IMAP.new(SOURCE_HOST, SOURCE_PORT, SOURCE_SSL)

ds 'logging in...'
source.login(SOURCE_USER, SOURCE_PASS)

dd 'connecting...'
           dest = Net::IMAP.new(DEST_HOST, DEST_PORT, DEST_SSL)

dd 'logging in...'
dest.login(DEST_USER, DEST_PASS)

# Loop through folders and copy messages.
FOLDERS.each do |source_folder, dest_folder|
  # Open source folder in read-only mode.
  begin
    ds "selecting folder '#{source_folder}'..."
    source.examine(source_folder)
  rescue =&gt; e
    ds "error: select failed: #{e}"
    next
  end

  # Open (or create) destination folder in read-write mode.
  begin
    dd "slecting folder '#{dest_folder}'..."
    dest.select(dest_folder)
  rescue =&gt; e
    begin
      dd "folder not found; creating..."
      dest.create(dest_folder)
      dest.select(dest_folder)
    rescue =&gt; ee
      dd "error: could not create folder: #{e}"
      next
    end
  end

  # Build a lookup hash of all message ids present in the destination folder.
  dest_info = {}

  dd 'analyzing existing messages...'
  uids = dest.uid_search(['ALL'])
  if uids.length &gt; 0
    dest.uid_fetch(uids, ['ENVELOPE']).each do |data|
      dest_info[data.attr['ENVELOPE'].message_id] = true
    end
  end

  copied_cnt = uids.length
  dd "%d Messages in Destinationfolder '%s'" % [copied_cnt, dest_folder]

  # Loop through all messages in the source folder.
  uids = source.uid_search(['ALL'])

  dd "%d Messages in Sourcefolder '%s'" % [uids.length, source_folder]

  todo = uids.length - copied_cnt

  puts "Will copy %d messages." % todo

  if uids.length &gt; 0
    source.uid_fetch(uids, ['ENVELOPE']).each_with_index do |data, i|
      mid = data.attr['ENVELOPE'].message_id

      # If this message is already in the destination folder, skip it.
      next if dest_info[mid]

      # Download the full message body from the source folder.
      #ds "downloading message #{mid}...", progress(todo, i)
      msg = source.uid_fetch(data.attr['UID'], ['RFC822', 'FLAGS',
          'INTERNALDATE']).first

      puts "#{progress(uids.length, i)} #{msg.attr['INTERNALDATE']} #{mid}"

      # Append the message to the destination folder, preserving flags and
      # internal timestamp.
      #dd "storing message #{mid}...", progress(todo, i)
      dest.append(dest_folder, msg.attr['RFC822'], msg.attr['FLAGS'],
          msg.attr['INTERNALDATE'])

    end
  end

  source.close
  dest.close
end

puts 'done'
</pre>
<p>Schön, auch dieses Progrämmlein bricht immer wieder ab.<br />
Mal sehen, was noch kommt, ich bleibe am Ball und werde berichten.</p>
<hr />Nach langem Warten sind nun doch einige Mails gedoppelt worden, leider. Ich hoffe, es fehlt nicht die wichtige Mail.</p>
<p>Grüße von<br />
Johannes</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/09/27/emails-von-imap-nach-imap-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>blublu</title>
		<link>http://blog.die-tf.de/2008/08/20/blublu/</link>
		<comments>http://blog.die-tf.de/2008/08/20/blublu/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 01:28:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[MUTO a wall-painted animation by BLU from blu on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=993998&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=993998&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://www.vimeo.com/993998?pg=embed&amp;sec=993998"><span class="caps">MUTO</span> a wall-painted animation by <span class="caps">BLU</span></a> from <a href="http://www.vimeo.com/blu?pg=embed&amp;sec=993998">blu</a> on <a href="http://vimeo.com?pg=embed&amp;sec=993998">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/08/20/blublu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find all the K&#8217;s</title>
		<link>http://blog.die-tf.de/2008/08/09/find-all-the-ks/</link>
		<comments>http://blog.die-tf.de/2008/08/09/find-all-the-ks/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 15:26:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Chromatabs is a Firefox Extension that colorizes Tabs. They show a nice task: Find all the red letters Find all the K’s Always think about this when you’re designing graphical user interfaces.]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.mozilla.com/projects/chromatabs/">Chromatabs</a> is a Firefox Extension that colorizes Tabs.</p>
<p>They show a nice task:</p>
<ol>
<li>Find all the red letters</li>
<li>Find all the K’s</li>
</ol>
<p><img class="alignnone size-full wp-image-4599" title="find all Ks" src="http://blog.die-tf.de/wp-content/uploads/2008/08/find_all_ks.jpg" alt="" width="700" height="322" /></p>
<p>Always think about this when you’re designing graphical user interfaces.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/08/09/find-all-the-ks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GitHub</title>
		<link>http://blog.die-tf.de/2008/07/29/github/</link>
		<comments>http://blog.die-tf.de/2008/07/29/github/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 08:41:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ich beäuge bereits seit einer Weile GitHub und bin hocherfreut, dass auch ich beobachtet werde:]]></description>
			<content:encoded><![CDATA[<p>Ich beäuge bereits seit einer Weile <a href="http://github.com">GitHub</a> und bin hocherfreut, dass auch ich beobachtet werde:</p>
<p><img class="alignnone size-full wp-image-4597" title="github_trace" src="http://blog.die-tf.de/wp-content/uploads/2008/07/github_trace.png" alt="" width="444" height="188" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/29/github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On computable numbers, with an application to the Entscheidungsproblem</title>
		<link>http://blog.die-tf.de/2008/07/28/on-computable-numbers-with-an-application-to-the-entscheidungsproblem/</link>
		<comments>http://blog.die-tf.de/2008/07/28/on-computable-numbers-with-an-application-to-the-entscheidungsproblem/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 08:20:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Für viele vielleicht ein alter Hut, ich habe es gerade eben entdeckt, dieses schöne Entscheidungsproblem von David Hilbert und Alan Turing.]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-4595" title="turing" src="http://blog.die-tf.de/wp-content/uploads/2008/07/turing.gif" alt="" width="500" height="129" /></p>
<p>Für viele vielleicht ein alter Hut, ich habe es gerade eben entdeckt, dieses schöne <a href="http://en.wikipedia.org/wiki/Entscheidungsproblem">Entscheidungsproblem</a> von David Hilbert und Alan Turing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/28/on-computable-numbers-with-an-application-to-the-entscheidungsproblem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Lob an die Mütter</title>
		<link>http://blog.die-tf.de/2008/07/21/ein-lob-an-die-mutter/</link>
		<comments>http://blog.die-tf.de/2008/07/21/ein-lob-an-die-mutter/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 12:43:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[&#8230; vor Allem an meine. und auch ganz allgemein.]]></description>
			<content:encoded><![CDATA[<p>&#8230; vor Allem an meine.</p>
<p><img class="alignnone size-full wp-image-4584" title="TF Pullover" src="http://blog.die-tf.de/wp-content/uploads/2008/07/tf_pullover.jpg" alt="" width="500" height="312" /></p>
<p>und auch ganz allgemein.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/21/ein-lob-an-die-mutter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>D</title>
		<link>http://blog.die-tf.de/2008/07/19/d/</link>
		<comments>http://blog.die-tf.de/2008/07/19/d/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 01:40:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-4590" title="nr" src="http://blog.die-tf.de/wp-content/uploads/2008/07/nr.png" alt="" width="400" height="400" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/19/d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Der Regalplaner ist zur&#252;ck</title>
		<link>http://blog.die-tf.de/2008/07/18/der-regalplaner-ist-zuruck/</link>
		<comments>http://blog.die-tf.de/2008/07/18/der-regalplaner-ist-zuruck/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 11:52:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mein Regalplaner ist zurück in neuem Gewand.]]></description>
			<content:encoded><![CDATA[<p><a href="http://die-tf.de/regalplaner/"><img class="alignnone size-full wp-image-4592" title="regalplaner TF" src="http://blog.die-tf.de/wp-content/uploads/2008/07/regalplaner_tf.png" alt="" width="600" height="317" /></a></p>
<p>Mein <a href="http://die-tf.de/regalplaner">Regalplaner</a> ist zurück in neuem Gewand.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/18/der-regalplaner-ist-zuruck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apt-get into it!</title>
		<link>http://blog.die-tf.de/2008/07/16/apt-get-into-it/</link>
		<comments>http://blog.die-tf.de/2008/07/16/apt-get-into-it/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 20:26:00 +0000</pubDate>
		<dc:creator>Johannes</dc:creator>
				<category><![CDATA[Allgemeines]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[(by the way)]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-4586" title="Debian apt get into it" src="http://blog.die-tf.de/wp-content/uploads/2008/07/debian_apt_get_into_it.gif" alt="" width="90" height="175" />(<a href="http://www.debian.org/events/material.de.html">by the way</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.die-tf.de/2008/07/16/apt-get-into-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

