<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>tim-adler.com - web · design · thinking</title><link>http://www.tim-adler.com/</link><description>Das Portfolio, das Blog oder einfach der Notizzettel von Freelancer Tim Adler. Alles über meine Arbeit, aber auch Interessantes über die Welt, das Web, Macs und Games...</description><language>de-de</language><lastBuildDate>Sun, 05 Feb 2012 17:00:32 -0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tim-adler/blog" /><feedburner:info uri="tim-adler/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Google-Reader-Empfehlungen direkt bei Twitter posten</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/OSNUnuZIWmE/</link><description>&lt;p&gt;&lt;img style="float: right;" src="/media/posts/icon.png" alt="Services Icon" width="142" height="130" /&gt;Google's Reader ist ein super Tool, um Feeds zu lesen. Insbesondere deswegen, weil es den Reader auf allen &lt;strong&gt;m&amp;ouml;glichen Plattformen&lt;/strong&gt; gibt und man somit an einer zentralen Stelle alles abhakt, was man schon gelesen hat. Kein doppeltes Lesen also. Au&amp;szlig;erdem bietet Google f&amp;uuml;r den Reader eine &lt;a href="http://www.niallkennedy.com/blog/2005/12/google-reader-api.html"&gt;offene API&lt;/a&gt; und es gibt schon unterschiedlichste Tools, um RSS-Feeds auch in nativen Applikationen zu lesen. (z.B. &lt;a href="http://www.phantomfish.com/byline.html"&gt;Byline&lt;/a&gt; auf dem iPhone)&lt;/p&gt;
&lt;p&gt;In RSS-Feeds findet man h&amp;auml;ufig &lt;strong&gt;eine ganz Menge interessanter Sachen&lt;/strong&gt;, die man direkt seiner Online-Peergroup weiterempfehlen m&amp;ouml;chte. Daf&amp;uuml;r bietet Google die Funktion "Empfehlen" oder "Anmerkungen". Die empfohlenen Items sieht aber niemand, wenn man sich nicht aufw&amp;auml;ndig als "Freunde" bei Google vert&amp;uuml;delt hat und sich gegenseitig in die Empfehlungen linst. Mit einem &lt;strong&gt;kleinen Mash-Up&lt;/strong&gt; lassen sich Empfehlungen inkl. Kommentar direkt bei Twitter posten.&lt;/p&gt;
&lt;!-- MORE --&gt;
&lt;p&gt;&lt;strong&gt;Die Kurzfassung: &lt;/strong&gt;Wir werden den zu den Empfehlungen von &lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt; geh&amp;ouml;renden Atom-Feed mit Hilfe von &lt;a href="http://pipes.yahoo.com"&gt;Yahoo-Pipes&lt;/a&gt; so &amp;auml;ndern, dass die eigegebene Anmerkung ein Teil des jeweiligen Feed-Item-Titels wird. Den so entstehenden neuen Feed lassen wir dann von &lt;a href="http://www.twitterfeed.com"&gt;Twitterfeed&lt;/a&gt; in regelm&amp;auml;&amp;szlig;igen Abst&amp;auml;nden twittern. Ziel erreicht. So einfach.&lt;/p&gt;
&lt;h3&gt;Die Langfassung&lt;/h3&gt;
&lt;p&gt;Zu allererst braucht man mal also einen &lt;strong&gt;Google Reader-Account&lt;/strong&gt; mit ein paar empfohlenen Items, am besten auch mit Kommentar. So sieht das Ganze dann auf der Empfehlungen-Seite im Google Reader-Webinterface aus:&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/empfehlungen.png" alt="Empfehlungen in Google Reader" width="470" height="304" /&gt;&lt;/p&gt;
&lt;p&gt;Schonmal nicht schlecht. Ein &lt;strong&gt;wichtiges Feature&lt;/strong&gt; dieser Empfehlungen versteckt Google allerdings ein wenig: Angepriesen wird von Google nur, dass die Empfehlungen &lt;strong&gt;auf einer eigenen Seite ver&amp;ouml;ffentlicht &lt;/strong&gt;werden. Der Link dazu findet sich oben recht auf der Empfehlungen-Seite im Reader. Erst wenn man diese Seite &amp;ouml;ffnet, dann findet man rechts unter dem eigenen Google-Avatar einen Link zum &lt;strong&gt;Atom-Feed der Empfehlungen&lt;/strong&gt;. Den braucht man! Den Link als mit STRG+C / Apfel+C in die Zwischenablage kopieren.&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/links.png" alt="Link-Positionen" width="469" height="266" /&gt;&lt;/p&gt;
&lt;p&gt;Dieser Feed ist eine ziemlich umfangreiche Sache. Google Stellt in diesem Feed nicht nur die &amp;uuml;blichen Informationen f&amp;uuml;r das Abonnieren und Lesen in einem Feedreader zur Verf&amp;uuml;gung, sondern der Feed enth&amp;auml;lt auch den Kommentar, den man zum Feed-Item eingegeben hat und nat&amp;uuml;rlich Titel, Link und Inhalt als strukturierte Informationen. Das sieht in etwas so aus:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;&amp;lt;entry gr:crawl-timestamp-msec="1241014738104"&amp;gt;&lt;br /&gt;  &amp;lt;id gr:original-id=""&amp;gt;tag:google.com,2005:reader/item/2e067105d3b850fe&amp;lt;/id&amp;gt;&lt;br /&gt;  &amp;lt;title type="html"&amp;gt;Palm Pre Screens geleakt&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;published&amp;gt;2009-04-29T14:18:58Z&amp;lt;/published&amp;gt;&lt;br /&gt;  &amp;lt;updated&amp;gt;2009-04-29T14:18:58Z&amp;lt;/updated&amp;gt;&lt;br /&gt;  &amp;lt;link rel="alternate" href="http://feedproxy.google.com/~r/macnotes/~3/ZvdOrM4s8bs/" type="text/html"/&amp;gt;&lt;br /&gt;  &amp;lt;link rel="related" href="http://www.macnotes.de" title="MACNOTES.DE: iPhone, iPod, Mac - das unabh&amp;auml;ngige Magazin rund um Apple"/&amp;gt;&lt;br /&gt;  &amp;lt;content xml:base="http://feedproxy.google.com/~r/macnotes/~3/ZvdOrM4s8bs/" type="html"&amp;gt;...&amp;lt;/content&amp;gt;&lt;br /&gt;  &amp;lt;author gr:unknown-author="true"&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;(Autor unbekannt)&amp;lt;/name&amp;gt;&lt;br /&gt;  &amp;lt;/author&amp;gt;&lt;br /&gt;  &amp;lt;gr:annotation&amp;gt;&lt;br /&gt;    &amp;lt;content type="html"&amp;gt;Ich finde dieses Teil ja echt sexy:&amp;lt;/content&amp;gt;&lt;br /&gt;    &amp;lt;author gr:user-id="04920413337233063489" gr:profile-id="118351259413951625385"&amp;gt;&lt;br /&gt;      &amp;lt;name&amp;gt;Tim Adler&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;/author&amp;gt;&lt;br /&gt;  &amp;lt;/gr:annotation&amp;gt;&lt;br /&gt;  &amp;lt;source gr:stream-id="user/04920413337233063489/source/com.google/link"&amp;gt;&lt;br /&gt;    &amp;lt;id&amp;gt;tag:google.com,2005:reader/user/04920413337233063489/source/com.google/link&amp;lt;/id&amp;gt;&lt;br /&gt;    &amp;lt;title type="html"&amp;gt;MACNOTES.DE: iPhone, iPod, Mac - das unabh&amp;auml;ngige Magazin rund um Apple&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;link rel="alternate" href="http://www.macnotes.de" type="text/html"/&amp;gt;&lt;br /&gt;  &amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;/entry&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Besonders interessant ist hier der &lt;strong&gt;&amp;lt;gr:annotation&amp;gt;-Teil&lt;/strong&gt;, weil sich hier zus&amp;auml;tzlich zum Inhalt auch der Kommentar, den man im Reader eingegeben hat nochmal findet. Jetzt muss man das ganz im Prinzip nur noch tweeten. &lt;strong&gt;Allerdings kann es daf&amp;uuml;r nicht in dieser Form bleiben.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um die Empfehlung zusammen mit dem Kommentar twittern zu k&amp;ouml;nnen, muss man noch ein wenig an dem Feed manipulieren. Daf&amp;uuml;r bietet Yahoo den genialen Dienst &lt;a href="http://pipes.yahoo.com"&gt;Pipes&lt;/a&gt;, der die Ver&amp;auml;nderung von RSS-Feeds m&amp;ouml;glich macht.&lt;/p&gt;
&lt;p&gt;Wir brauchen im Prinzip nur eine Pipe, die den Atom-Feed der Google Reader-Empfehlungen nimmt und &lt;strong&gt;die jeweilige Anmerkungen mit in den Titel setzt&lt;/strong&gt;. Kein Hexenwerk. Allerdings ist das Erstellen einer solchen Pipe eine kleine Wissenschaft f&amp;uuml;r sich. Sie sieht in etwa so aus:&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/pipe.png" alt="Pipe" width="470" height="289" /&gt;&lt;/p&gt;
&lt;p&gt;Diese Pipe k&amp;ouml;nnt ihr aber einfach mitnutzen. Ihr findet Sie unter &lt;a href="http://pipes.yahoo.com/pipes/pipe.info?_id=EpOA_Poz3hGywbSKggSecQ"&gt;dieser Adresse&lt;/a&gt;. Das Einzige was Ihr dort noch tun m&amp;uuml;sst, ist die URL des Atom-Feeds von Euren Google Reader-Empfehlungen in das entsprechende Eingabefeld kopieren und auf "Run Pipe" klicken. Das Ergebnis m&amp;uuml;sste eine Liste wie diese hier sein:&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/pipe-ergebnis.png" alt="Pipe Ergebnis" width="470" height="378" /&gt;&lt;/p&gt;
&lt;p&gt;Oben in diesem Ergebnis findet Ihr wiederum &lt;strong&gt;einen Link mit Namen "Get as RSS"&lt;/strong&gt;. Dahinter verbirgt sich die unten dargestellte Feed-Liste mit Eurer Google Reader-Empfehlungs-URL als RSS-Feed. Die Anmerkungen zu einem Feed-Item finden sich in dieser Liste nun also im Titel jedes Items. Diese Titel kann man nun zusammen mit einem Link bei Twitter posten. Dazu wieder die URL des entsprechenden RSS-Feeds mit STRG+C / Apfel+C kopieren und mitnehmen.&lt;/p&gt;
&lt;p&gt;Zum Posten bei Twitter nutzt man &lt;a href="http://twitterfeed.com/"&gt;Twitterfeed&lt;/a&gt;. Da man ja ohnehin bereits f&amp;uuml;r Google Reader einen Account besitzt braucht man bei &lt;strong&gt;Twitterfeed nicht einmal einen Registrierungsprozess&lt;/strong&gt; durchlaufen: Man kann direkt oben rechts "Login/Register" w&amp;auml;hlen und sucht sich dann im OpenID-Dropdown "Google" aus. Klickt man nun auf "Login" kann man &amp;uuml;ber Google das Einloggen best&amp;auml;tigen und hat somit quasi Twitterfeed an seinen Google-Account angedockt.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nach dem Login kann man wiederum oben rechts "my feeds" aufrufen und einen neuen Feed anlegen. Verschiedene Angaben werden dann n&amp;ouml;tig. Ich nutze diese hier:&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/twitter-feed.png" alt="Twitter-Feed Einstellungen" width="470" height="389" /&gt;&lt;/p&gt;
&lt;p&gt;Zuerst muss man seinen Twitter-Account angeben. Man hat die Wahl zwischen OAuth und der direkten Eingabe seiner Logindaten. Ich &lt;strong&gt;empfehle OAuth zu verwenden&lt;/strong&gt;. Bei der &lt;strong&gt;"RSS Feed URL" gibt man die URL der Pipe an&lt;/strong&gt;, die man im Schritt zuvor kopiert hat.&lt;/p&gt;
&lt;p&gt;Nun w&amp;auml;hlt man noch die Update Frequency und die Anzahl der zu postenden Items. &lt;strong&gt;Auch wichtig: &lt;/strong&gt;Bei "Include..." w&amp;auml;hlt man "title only" denn den Titel hatte wir f&amp;uuml;r Twitter ja extra h&amp;uuml;bsch gemacht. Genauso setzt man einen Haken bei "Include item link", da sonst die Empfehlung v&amp;ouml;llig ohne Link gepostet wird, was irgendwie sinnlos ist. F&amp;uuml;r die Verk&amp;uuml;rzung des Links hat man diverse M&amp;ouml;glichkeiten und w&amp;auml;hlt nach eigenem Geschmack.&lt;/p&gt;
&lt;p&gt;Setzt man nun noch den Haken bei "Active" und dr&amp;uuml;ckt den Button zum Speichern, werden &lt;strong&gt;die eigenen Google Reader-Empfehlungen ab jetzt direkt bei Twitter gepostet&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Eine&lt;strong&gt; lange Kette von Services&lt;/strong&gt;. Aber ein cooles Ergebnis, und man kann ein bisschen Stolz auf seinen h&amp;ouml;chstpers&amp;ouml;nlichen Mashup sein.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/google-reader-empfehlungen-direkt-bei-twitter-post/</guid><feedburner:origLink>http://www.tim-adler.com/post/google-reader-empfehlungen-direkt-bei-twitter-post/</feedburner:origLink></item><item><title>Zwei Macs synchronisieren Teil II</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/X0yPbmUYmBM/</link><description>&lt;p&gt;&lt;img style="float: right;" src="/media/posts/sync.png" alt="Synchronisations-Icon" width="85" height="85" /&gt;Vor ca. einiger Zeit habe ich an &lt;a href="/blog/daten-und-dateien-von-zwei-macs-synchronisieren/"&gt;dieser Stelle&lt;/a&gt; einmal dar&amp;uuml;ber geschrieben, wie man Dateien, Kalender, Adressen usw. zwischen zwei Macs sinnvoll und &lt;strong&gt;unaufw&amp;auml;ndig synchronisieren&lt;/strong&gt; kann. Seitdem hat sich einiges getan: &lt;strong&gt;.mac&lt;/strong&gt; wurde zu &lt;strong&gt;MobileMe&lt;/strong&gt;, der iPod kann jetzt telefonieren und Obama wird Pr&amp;auml;sident.&lt;/p&gt;
&lt;p&gt;In dieser global erw&amp;auml;rmten Zeit soll also noch mal ein Blick darauf geworfen sein, wie sich diese ganze "Sychronisationsproblemoadiech" &lt;em&gt;*stelle mir vor, wie ich das in einem Bademantel und mit nem Bier in der Hand sage*&lt;/em&gt; bew&amp;auml;ltigen l&amp;auml;sst. F&amp;uuml;r mich ist dabei besonders die Synchronisation von 2 unterschiedlichen Datenstapeln wichtig:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Dateien:&lt;/strong&gt; Die gilt eigentlich ausschlie&amp;szlig;lich f&amp;uuml;r die Dateien in meinem &lt;em&gt;Homeverzeichnis&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kalender, Adressen &amp;amp; Bookmarks:&lt;/strong&gt; F&amp;uuml;r das t&amp;auml;gliche Arbeiten und Wohlf&amp;uuml;hlen sind diese Daten kaum erl&amp;auml;sslich. Ich f&amp;uuml;hle mich defintiv wohler, wenn ich nicht dar&amp;uuml;ber nachdenken muss, ob ich gerade mit den aktuellen Kontakten/Terminen/Bookmarks arbeite und die nicht manuell synchronisieren muss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mail:&lt;/strong&gt; Wer sich fragt, warum ich mir dar&amp;uuml;ber nicht extra Gedanken mache, der wisse, dass sich das mit IMAP super und weit-verbreitet l&amp;ouml;sen l&amp;auml;sst. Man muss f&amp;uuml;r IMAP keine(!) permanente Internet-Verbindung haben, die &amp;uuml;blichen Mail-Programme halten eine lokale Kopie der Mails vor.&lt;/li&gt;
&lt;/ol&gt; &lt;!-- MORE --&gt;
&lt;h3&gt;Dateien und Home-Verzeichnis synchronisieren&lt;/h3&gt;
&lt;p&gt;&lt;img style="float: right;" src="/media/posts/Unison.jpg" alt="" /&gt;F&amp;uuml;r das Synchronisieren von Dateien zwischen zwei Macs bleibt auch nach einer sehr langen Zeit des Testens mein Tool der Wahl &lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/" target="_blank"&gt;Unison&lt;/a&gt;. Eigentlich handelt es sich dabei um ein reines UNIX-Kommandozeilen-Tool, das aber mit unterschiedlichsten Komponenten auch f&amp;uuml;r den Mac zur Verf&amp;uuml;gung steht.&lt;/p&gt;
&lt;p&gt;Wie man es konfiguriert und einsetzt, habe ich bereits im &lt;a href="/blog/daten-und-dateien-von-zwei-macs-synchronisieren/"&gt;letzten Artikel&lt;/a&gt; zu diesem Thema beschrieben. Deshalb hier jetzt nur nochmal ein paar erg&amp;auml;nzende Punkte. Zum Beispiel die &lt;strong&gt;essentiellen Vorteile&lt;/strong&gt; von Unison:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Unison arbeitet auf beiden Rechnern eigenst&amp;auml;ndig&lt;/strong&gt;&lt;br /&gt;Wann immer man &amp;uuml;ber Unison eine Sync-Session anst&amp;ouml;&amp;szlig;t, verbindet sich Mac Nr.1 mit Mac Nr.2 &amp;uuml;ber &lt;strong&gt;SSH&lt;/strong&gt; und schmeisst auf beiden eine Datensammlung an. Diese passiert vollst&amp;auml;ndig lokal, d.h. es m&amp;uuml;ssen nicht umst&amp;auml;ndlich Verzeichnis- und Dateilisten &amp;uuml;ber Samba oder AFP ausgetauscht werden (z.B. &lt;a href="http://www.econtechnologies.com/site/Pages/ChronoSync/chrono_overview.html" target="_blank"&gt;ChronoSync&lt;/a&gt; macht das so). Unison sammelt und hasht die Dateien lokal und tauscht dann nur eine Liste von &amp;Auml;nderungen aus. Das geht im Vergleich zu anderen Datei-Abgleichl&amp;ouml;sungen ziemlich &lt;strong&gt;schnell&lt;/strong&gt;! Da das Ganze sogar noch &amp;uuml;ber SSH passiert, ist es sogar sicher.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unison hat eine ziemlich gute Mac-GUI&lt;br /&gt;&lt;/strong&gt;Vorab - das Interface von Unison kann absolut nicht alles, was man braucht. Man kann zwar ne grunds&amp;auml;tzliche Sync-Session anlegen (sieht man auch im &lt;a href="/blog/daten-und-dateien-von-zwei-macs-synchronisieren/"&gt;letzten Artikel&lt;/a&gt;) aber ohne das Editieren der entsprechenden Profile-Datei wird man nicht das erreichen, was man sich vorstellt.&lt;br /&gt;&lt;br /&gt;Wo die Mac-Unison-GUI echt genial ist, ist w&amp;auml;hrend der Sync-Session. Nachdem man in ein passendes Login-Fenster seine Daten f&amp;uuml;r den SSH-Connect eingegeben hat, gleicht Unison die Dateien ab. Danach zeigt es dieses Fenster:&lt;br /&gt;&lt;img style="vertical-align: middle;" src="/media/posts/unison-pre-sync.jpg" alt="" /&gt;&lt;br /&gt;Hier hat man die M&amp;ouml;glichkeit das, was Unison sp&amp;auml;ter abgleichen wird noch zu beeinflussen. Man kann Verzeichnisse ausschlie&amp;szlig;en, Teile &amp;uuml;berspringen, oder die Sync-Richtung umkehren. Wirft man den Sync dann mit einem Klick auf den sympathischen "Go"-Button an, kann man dem Fortschritt wundersch&amp;ouml;n zugucken:&lt;br /&gt;&lt;img src="/media/posts/unison-dur-sync.jpg" alt="" width="400" height="380" /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unison ist OpenSource und kostenlos&lt;br /&gt;&lt;/strong&gt;Das sagt eigentlich schon alles - nicht nur, dass Unison sogar noch schneller ist als viele andere Tools, es ist auch noch umsonst. Wer sich mit Unison nicht ganz anfreunden kann, der kann auch mal nen Blick auf &lt;a href="http://samba.anu.edu.au/rsync/" target="_parent"&gt;Rsync&lt;/a&gt; werfen und die entsprechende GUI &lt;a href="http://www.macupdate.com/info.php/id/20983/arrsync" target="_blank"&gt;aRsync&lt;/a&gt;. Die sollen &amp;auml;hnliches k&amp;ouml;nnen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wer mit der kleinen Anleitung aus dem ersten Teil jetzt noch nicht so ganz klar kommt, und wem immer noch zu viele Dateien abgeglichen werden, dem kann ich nochmal einen kleinen Auszug aus meiner Konfigurationsdatei ans Herz legen:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;# Unison preferences file&lt;br /&gt;root = /Users/&amp;lt;username&amp;gt;&lt;br /&gt;root = ssh://&amp;lt;login&amp;gt;@&amp;lt;IP des Zielrechners&amp;gt;//Users/&amp;lt;username&amp;gt;&lt;br /&gt;&lt;br /&gt;path = Library/Application Support/&amp;lt;Applikation&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;path = Music&lt;br /&gt;path = Web&lt;br /&gt;path = Documents&lt;br /&gt;path = Desktop&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;ignore = Name {.DS_Store,Icon}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Im Oberen Teil des Profils legt man die &amp;uuml;blichen Werte f&amp;uuml;r Quell- und Zielrechner fest. Interessant wird es dann darunter: Gleicht man z.B. &lt;strong&gt;Verzeichnisse aus dem Application Support&lt;/strong&gt; mit ab, lassen sich f&amp;uuml;r bestimmt Applikationen ziemlich einfach Einstellungen mit &amp;uuml;bernehmen. Das funktioniert nicht immer - aber z.B. f&amp;uuml;r &lt;a href="http://www.culturedcode.com/things/"&gt;Things&lt;/a&gt;, &lt;a href="http://www.adiumx.com/"&gt;Adium&lt;/a&gt; und &lt;a href="http://www.panic.com/candybar/"&gt;CandyBar&lt;/a&gt; (sogar inkl. kompletter Icon-Bibliothek) funktioniert es schonmal wunderbar.&lt;/p&gt;
&lt;p&gt;Im letzten Teil kann man dann auch mit "ignore" bestimmte Dateien und Verzeichnisse ausschlie&amp;szlig;en. Hier lassen sich auch Wildcards ("*") verwenden. Nen guter Tipp ist es &lt;strong&gt;".DS_Store" und "Icon"-Dateien&lt;/strong&gt; auszuschlie&amp;szlig;en, damit nicht Icons und Einstellungen f&amp;uuml;r bestimmten Ordner den Rechners mit wechseln.&lt;/p&gt;
&lt;h3&gt;Adressbuch, Kalender und Bookmarks&lt;/h3&gt;
&lt;p&gt;Das letzte Mal hatte ich nach dem Test verschiedener anderer L&amp;ouml;sungen in dieser Stelle trotz allem &lt;strong&gt;.mac&lt;/strong&gt; bzw. jetzt &lt;strong&gt;MobileMe&lt;/strong&gt; empfohlen. Auch wenn MobileMe mittlerweile nur noch 79EUR/Jahr kostet und mit Push und Back-to-my-Mac auch noch ein paar Features bietet, die man evtl. brauchen kann, so ist es mir doch zu wenig an zus&amp;auml;tzlichen Leistung f&amp;uuml;rs Geld.&lt;/p&gt;
&lt;p&gt;Ich brauche kein nicht funktionierendes &lt;strong&gt;Back-to-my-Mac&lt;/strong&gt; bzw. &lt;strong&gt;Push-Synchronisation&lt;/strong&gt;. Auch ein Webmail-Frontend und ein Zugriff auf die Daten von unterwegs wird unsinnig, wenn man mit dem iPhone in der Tasche unterwegs ist. Ich brauche eigentlich nur einen Abgleich meines Kalenders, meiner Kontakte und Bookmarks.&lt;/p&gt;
&lt;p&gt;&lt;img style="float: right;" src="/media/posts/fruux-icon.jpg" alt="" /&gt;Deshalb bin ich seid kurzem sehr zufriedener User von &lt;a href="http://www.fruux.com/" target="_blank"&gt;Fruux&lt;/a&gt;. Das Start-Up aus M&amp;uuml;nster bietet die M&amp;ouml;glichkeit genau das zu synchronisieren, was man tats&amp;auml;chlich dringend braucht: &lt;strong&gt;Kontakte, Kalender und Bookmarks&lt;/strong&gt;. Genau das tut ist im Moment noch v&amp;ouml;llig &lt;strong&gt;kostenlos&lt;/strong&gt; und mit einem &lt;strong&gt;unaufw&amp;auml;ndigem&lt;/strong&gt; PreferencePane.&lt;/p&gt;
&lt;p&gt;Da kann man nur noch eine unbedingte Empfehlung aussprechen, selbst wenn Fruux demn&amp;auml;chst mal was kostet, w&amp;auml;re dieser Dienst sein Geld wert.&lt;/p&gt;
&lt;p&gt;Fruux k&amp;uuml;mmert sich allerdings nicht um den Abgleich der Bookmarks von Firefox. Daf&amp;uuml;r gibt es allerdings das wunderbare Tool &lt;a href="http://www.foxmarks.com/" target="_blank"&gt;Foxmarks&lt;/a&gt;. Damit w&amp;auml;re auch das Problem gel&amp;ouml;st. Foxmarks hat auch ein super iPhone-Frontend, falls man das mal von unterwegs aus braucht.&lt;/p&gt;
&lt;p&gt;Das einzige, was mir noch fehlt ist ein automatischer Abgleich zwischen Safari und Firefox, welches &lt;strong&gt;lokal(!)&lt;/strong&gt; die Bookmarks zwischen den beiden Browsern synchronisiert. Vielleicht hat ja jemand einen Tipp daf&amp;uuml;r - manuelles Export/Import-Gefummel ist aber nicht unbedingt mein Ziel :)&lt;/p&gt;
&lt;h3&gt;In K&amp;uuml;rze&lt;/h3&gt;
&lt;p&gt;Nochmal in aller K&amp;uuml;rze die wichtigsten Tools&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dateien: &lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/" target="_blank"&gt;Unison&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kalender, Adressen, Bookmarks: &lt;a href="http://www.fruux.com/" target="_blank"&gt;Fruux&lt;/a&gt; (und &lt;a href="http://www.foxmarks.com/" target="_blank"&gt;Foxmarks&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Es fehlt&lt;/h3&gt;
&lt;p&gt;Lokaler Abgleich von Bookmarks zwischen Firefox und Safari.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Lokaler Abgleich von Bookmarks zw. Safari und Firefox ist mittlerweile m&amp;ouml;glich. Dazu installiert man sich einfach &lt;a href="http://www.xmarks.com/" target="_blank"&gt;Xmarks&lt;/a&gt; f&amp;uuml;r beide Browser uns ist gl&amp;uuml;cklich.&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/zwei-macs-synchronisieren-teil-2/</guid><feedburner:origLink>http://www.tim-adler.com/post/zwei-macs-synchronisieren-teil-2/</feedburner:origLink></item><item><title>Relaunch</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/DXo-0QSP_gQ/</link><description>&lt;p&gt;Endlich ist es vollbracht. Nachdem ich ja schon vor &lt;a href="/blog/eigener-sache"&gt;viel zu langer Zeit&lt;/a&gt; einmal gezeigt habe, wie eine Relaunch dieser Seite wohl aussehen k&amp;ouml;nnte, ist es jetzt doch noch einmal total anders gekommen. Und nicht nur, weil &lt;strong&gt;Weihnachten&lt;/strong&gt; ist, sondern weil sich auch meine &lt;strong&gt;Adresse in K&amp;uuml;rze&lt;/strong&gt; &amp;auml;ndert, gibts jetzt eine neue Version meiner Webseite.&lt;/p&gt;
&lt;p&gt;Mir schwebte schon lange vor, dass mein &lt;strong&gt;Blog sehr viel weiter in den Hintergrund &lt;/strong&gt;r&amp;uuml;cken m&amp;uuml;sste, weil ich es einfach nicht fertig bringe regelm&amp;auml;&amp;szlig;ig etwas zu schreiben. Die bisher vorhandenen Beitr&amp;auml;ge bleiben nat&amp;uuml;rlich und sind auch nochmal durch&lt;strong&gt; Tags&lt;/strong&gt; aufgewertet worden, aber die aktuellsten Neuigkeiten von mir gibts eigentlich immer bei &lt;a href="http://twitter.com/toadle" target="_blank"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Viel wichtiger war es mir in dieser neuen Version mein &lt;strong&gt;Portfolio&lt;/strong&gt; etwas prominenter zu machen und auch mehr anzubieten, als es bisher der Fall war. Deshalb gibt es jetzt zu allen Eintr&amp;auml;gen immer mehrere Screenshots und die vorherige Textlastigkeit ist gewichen.&lt;/p&gt;
&lt;!-- MORE --&gt;
&lt;p&gt;F&amp;uuml;r die von Euch, die sich f&amp;uuml;r &lt;strong&gt;technische Details&lt;/strong&gt; interessieren: Die Webseite l&amp;auml;uft nun mit dem aktuellsten &lt;a href="http://www.djangoproject.com/" target="_blank"&gt;Django&lt;/a&gt; und verwendet im Backend zus&amp;auml;tzlich diverse Plugins, wie den &lt;a href="http://code.google.com/p/django-filebrowser/" target="_blank"&gt;Filebrowser&lt;/a&gt; und einen &lt;a href="http://tinymce.moxiecode.com/" target="_blank"&gt;TinyMCE-Richtext-Editor&lt;/a&gt;. &lt;strong&gt;Design und Markup sind nat&amp;uuml;rlich, wie immer, handgefertigt&lt;/strong&gt;. Zus&amp;auml;tzlich habe ich die Feed-URL jetzt wieder &amp;uuml;ber &lt;a href="http://feeds.feedburner.com/tim-adler/blog/" target="_blank"&gt;Feedburner&lt;/a&gt; laufen, weil man sich wirklich wundert, was f&amp;uuml;r ein Traffic allein nur durch den Feed entsteht.&lt;/p&gt;
&lt;p&gt;Ich hoffe Euch gef&amp;auml;llt die neue Version der Seite. &lt;strong&gt;Freue mich &amp;uuml;ber Feedback&lt;/strong&gt;!!&lt;/p&gt;
&lt;p&gt;Und da ich bei einem Mini-Usability-Test nach der Hausfrauen-Variante festgestellt habe, dass meine Version der Tagcloud nicht unbedingt sofort auf Anhieb zu verstehen ist. Hier ein kleines Demo-Video aus meinen hallenden R&amp;auml;umlichkeiten :)!&lt;/p&gt;
&lt;p&gt;
&lt;object width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id=2495025&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash"&gt;
&lt;param name="allowfullscreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;
&lt;param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2495025&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;
&lt;/object&gt;
&lt;br /&gt;&lt;a href="http://vimeo.com/2495025"&gt;Meine Version einer Tag-Cloud&lt;/a&gt; from &lt;a href="http://vimeo.com/user1027056"&gt;Tim Adler&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/relaunch/</guid><feedburner:origLink>http://www.tim-adler.com/post/relaunch/</feedburner:origLink></item><item><title>Webmontag III</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/ojX1aQZNbbQ/</link><description>&lt;p&gt;Ich glaube, ich spare mir dieses mal eine &lt;strong&gt;ausf&amp;uuml;hrliche Beschreibung des Programmablaufs&lt;/strong&gt; vom dritten Webmontag. Das wurde schon von zwei fleissigen &lt;a href="http://ragingangel.de/main/2008/09/16/webmontag-3/" target="_blank"&gt;anderen&lt;/a&gt; &lt;a href="http://blog.danielmeiners.de/2008/09/dritter-webmontag-in-paderborn/" target="_blank"&gt;Schreiberlingen&lt;/a&gt; &amp;uuml;bernommen. Ich will aber schon sagen, dass ich &lt;strong&gt;sehr positiv&lt;/strong&gt; &amp;uuml;berrascht war von zwei Dingen: Zum einen der regen Beteiligung, trotz exzessiver Vorlesungsfreiheit und zum anderen von der coolen Location im Technologiepark. Zwar war der Seminarraum noch nicht vollst&amp;auml;ndig optimal-gem&amp;uuml;tlich, aber ich denke, wenn wir das n&amp;auml;chste Mal direkt ins Bistro umsteigen und vielleicht eine Leinwand aufstellen, dann kann man es kaum besser treffen.&lt;/p&gt;
&lt;p&gt;Wie immer haben wir auch dieses Mal direkt einen neuen Termin festgelegt, an dem wir in die 4te Runde gehen wollen: F&amp;uuml;r den 10.11.2008, nat&amp;uuml;rlich ein Montag, suchen wir noch &lt;strong&gt;spannende Vortr&amp;auml;ge&lt;/strong&gt;, die ihr einfach ins &lt;a href="http://www.webmontag.de/location/paderborn/index" target="_blank"&gt;Wiki&lt;/a&gt; eintragen k&amp;ouml;nnt. Sch&amp;ouml;n w&amp;auml;re es, wenn wir vielleicht das n&amp;auml;chste Mal noch etwas weniger technik-lastig sind, aber nat&amp;uuml;rlich sind wie immer alle Themen gerne gesehen. Eine Ank&amp;uuml;ndigung bleibt: Ab jetzt gibts f&amp;uuml;r jeden Vortragenden &lt;a href="http://www.clubmate.de" target="_blank"&gt;&lt;strong&gt;Club Mate&lt;/strong&gt;&lt;/a&gt; umsonst! Fotos weiter unten auf dieser Seite, bei Flickr.&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/webmontag-iii/</guid><feedburner:origLink>http://www.tim-adler.com/post/webmontag-iii/</feedburner:origLink></item><item><title>2.Webmontag: Kurze Retrospektive</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/jThnTpTUnmg/</link><description>&lt;p&gt;&lt;img align="right" src="http://www.tim-adler.com/media/posts/webmontag.jpg" /&gt;Ich weiss nicht, ob man sagen kann, dass der Webmontag gestern an den &lt;a href="http://www.tim-adler.com/post/webmontag-paderborn-die-volle-wahrheit"&gt;Erfolg des 1.Webmontags&lt;/a&gt; herankam, aber das Feedback war trotzdem durchweg positiv. Pünktlich um 19:13 Uhr gestartet mit &lt;strong&gt;geschätzten 35 Teilnehmern&lt;/strong&gt; machte wieder &lt;a target="_blank" href="http://www.silentpenguin.com/"&gt;Matthew Langham&lt;/a&gt; den Auftakt zum Thema &amp;quot;Was ist OpenID?&amp;quot;. Überhaupt war die ganze Veranstaltung diesmal ungewollt &lt;strong&gt;geprägt vom Thema&lt;/strong&gt;: Wie authenfiziere ich mich mal in der Zukunft? Und warum überhaupt? &lt;/p&gt;&lt;p&gt;Gefolgt wurde Matthews Vortrag von einem seiner Kollegen Tobias Reike über &amp;quot;Facebook-Applikationen mit Ruby on Rails&amp;quot;. Mir persönlich war bis dahin überhaupt nicht bekannt, dass Facebook solche echten Applikationen über eine API erlaubt. Wird Zeit, dass das &lt;del&gt;KZ&lt;/del&gt; VZ endlich wieder aufgekauft wird, oder sich entsprechend öffnet. Wobei ich da bei dem Klau-Mir-Blos-Nicht-Meine-Daten-CAPTCHA-Wahn dran zweifeln mag. Aber es ging ja noch weiter...&lt;/p&gt;&lt;!-- MORE --&gt;&lt;p&gt;Kurzer Hand entschloss sich nämlich auch &lt;a target="_blank" href="http://www.outofcoffeeexception.de/"&gt;Mathias Raacke&lt;/a&gt;, &amp;quot;weils so gut passte&amp;quot;, seinen Vortrag zum Thema Identity 2.0 - Cardspace zu halten. Webmontagsüblich war er einer der wenigen Microsoft-Verfechter und allein dafür schon Hut ab. Ich persönlich habe dann auch noch vorgetragen zum Thema &amp;quot;Garantiert gutes Webdesign - Eine Workflow-Idee&amp;quot;. Eigentlich hab ich da nicht mal viel mehr getan, als meinen eigenen Design-Workflow vorgestellt. Oha...Betriebsgeheimnisse :)!&lt;/p&gt;&lt;p&gt;Es hat sich auch diesmal wieder gezeigt, dass &lt;strong&gt;Paderborn einen Webmontag echt gut gebrauchen kann&lt;/strong&gt;. Insbesondere auch deswegen, weil gestern bestimmt 80% Neubesucher da waren und der Rest einfach fehlte. Das muss ja heißen, dass es allein von der Teilnehmerzahl noch Potenzial gibt. Mich erreichten abends sogar noch ein paar Hinweise, dass die Nachricht des zweiten Webmontags nicht weit genug gedrungen war. Trotzdem der &lt;a target="_blank" href="http://www.wochenspiegel-paderborn.de/?page=show&amp;amp;id=57562&amp;amp;search=webmontag"&gt;Wochenspiegel&lt;/a&gt; auch diesmal die Pressemeldung abgedruckt hat.&lt;/p&gt;&lt;p&gt;Deshalb sei es jetzt schonmal laut gesagt: Der Webmontag ist jetzt regelmäßig geplant. Lauter? DER WEBMONTAG IST JETZT REGELMÄßIG GEPLANT. &lt;strong&gt;ES SOLL JETZT REGELMÄßIG EINEN WEBMONTAG GEBEN. &lt;/strong&gt;Jaha, ernst gemeint. Auf den nächsten Termin haben wir uns deshalb schon geeinigt und er ist im &lt;a href="http://www.webmontag.de/doku.php?id=paderborn" target="_blank"&gt;Wiki&lt;/a&gt; auch schon verkündet. Am &lt;strong&gt;15.09.2008&lt;/strong&gt; soll es die nächste Community-Veranstaltung geben. Diesmal im Technologiepark, um den Uni-Flair loszuwerden und vielleicht etwas mehr Wirtschaftsnähe zu kriegen. Ob wir das wollen sehen wir dann beim nächsten Mal :)!&lt;/p&gt;&lt;p&gt;Jeder der also Themenideen hat, oder einfach nur teilnehmen will. Guckt im &lt;a href="http://www.webmontag.de/doku.php?id=paderborn" target="_blank"&gt;Wiki&lt;/a&gt; vorbei und hilft Version 3.0 des Webmontags planen. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Meine &lt;a href="http://www.tim-adler.com/media/content/Gutes%20Webdesign%20garantiert.pdf" target="_blank"&gt;Folien&lt;/a&gt; von gestern. ca. 8MB schwer.&lt;br /&gt;&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/2webmontag-kurze-retrospektive/</guid><feedburner:origLink>http://www.tim-adler.com/post/2webmontag-kurze-retrospektive/</feedburner:origLink></item><item><title>Zweiter Webmontag in Paderborn</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/lca5d52tiPo/</link><description>&lt;p align="left"&gt;&lt;img align="right" src="http://www.tim-adler.com/media/posts/webmontag/banner.jpg" /&gt;Mittlerweile ist der &lt;a href="http://www.tim-adler.com/post/webmontag-paderborn-die-volle-wahrheit"&gt;letzte Paderborner Webmontag&lt;/a&gt; ja schon fast sträflich lange her. Umso cooler, dass nun nächste Woche Dank der Hilfe des &lt;a href="http://groups.upb.de/uts"&gt;Unternehmertreffs für Studierende&lt;/a&gt; der 2. Paderborner Webmontag stattfindet. Wie üblich organisiert über das &lt;a href="http://www.webmontag.de/doku.php?id=paderborn"&gt;Wiki&lt;/a&gt; ist die Agenda für &lt;strong&gt;Montag, den 14.07&lt;/strong&gt;. im Moment noch leider etwas spärlich besetzt. Es ist also noch genug Platz für interessante StandUp-Vorträge rund um das Thema Web und seine unterschiedlichen Anhängsel.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Was ist ein Webmontag fragt sich vielleicht der Eine noch? Webmontage sind community-organisierte Veranstaltungen an denen Menschen wie Du und ich zu Dingen, die Dich und mich interessieren, kurze Vorträge halten. Das müssen keine Keynotes sein, es reichen auch kurze Anreißer, die im späteren &lt;strong&gt;Socializing&lt;/strong&gt; (ganz wichtig, letztes Mal leider zu kurz) diskutiert werden können/sollen. Der letzte Webmontag war hier in Paderborn auf jeden Fall ein voller Erfolg. &lt;/p&gt;&lt;!-- MORE --&gt;&lt;p&gt;Vielleicht lässt sich der mit der vereinten Hilfe der Paderborner Webcommunity ja wiederholen. Es bräuchte vielleicht noch ein zwei zusätzliche Vortragende, die Ihr Interesse im &lt;a href="http://www.webmontag.de/doku.php?id=paderborn"&gt;Wiki&lt;/a&gt; bekunden und sonst nur noch ein Menge interessierte Zuhörende und Mitdiskutierende. Ich werde auf jeden Fall da sein! Wir bestimmt wieder ne super Sache. &lt;br /&gt;&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/zweiter-webmontag-paderborn/</guid><feedburner:origLink>http://www.tim-adler.com/post/zweiter-webmontag-paderborn/</feedburner:origLink></item><item><title>Republica 2008 - Bin da, wer noch?</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/zOHhiBZyB4U/</link><description>&lt;p&gt;Ich weiss, ich geh&amp;ouml;re bei sowas immer ein wenig zu den Kurzentschlossenen, aber ich habe mir gerade mein Ticket f&amp;uuml;r die &lt;a href="http://re-publica.de/08/" target="_blank"&gt;Republica 2008&lt;/a&gt; gesichert. Letztes Jahr war ich bereits arg am Ringen, konnte das aber zeitlich leider nicht einstielen. Jetzt aber wird es definitiv was werden! Das &lt;a href="http://programm.re-publica.de/RP08/" target="_blank"&gt;Programm&lt;/a&gt; f&amp;uuml;r die 3 Tage in der Berliner Kalkscheune verspricht nicht nur interessante Themen, sondern zeigt auch einige &lt;strong&gt;Prominenz aus der deutschen Blog- und Podcasting-Szene&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Die ganze Konferenz ist ja mehr auf die gesellschaftlichen Perspektiven von Web 2.0 ausgelegt, als eine Hacker oder Programmierconvention zu werden. Aber gerade das verspricht ja die kontroversesten Diskussionen. &lt;strong&gt;Ich f&amp;auml;nds super&lt;/strong&gt;, wenn sie alle die, die auch dort hinfahren und evtl. sogar an Paderborn vorbei kommen, mal kurz per Mail die Hand heben k&amp;ouml;nnten. Dann kann man sich vielleicht vorher schon zusammentun, oder dort mal nen Kaffee trinken!&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/republica-2008-bin-da-wer-noch/</guid><feedburner:origLink>http://www.tim-adler.com/post/republica-2008-bin-da-wer-noch/</feedburner:origLink></item><item><title>Daten und Dateien von zwei Macs synchronisieren</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/j0mG2KpLhBE/</link><description>&lt;p align="left"&gt;&lt;img src="/media/posts/sync.png" alt="" align="right" /&gt;Sobald man Besitzer eines zweiten Macs wird, dauert es h&amp;ouml;chstens bis zum Verfliegen der Auspackbegeisterung, bis sich einem die Frage stellt, wie man denn nun auf zwei Maschinen sinnvoll arbeitet. Der eine Mac (vermutlich ein MacBook) soll ja unterwegs die selben Daten (&lt;strong&gt;Adressbuch, Mails, iCal-Eintr&amp;auml;ge&lt;/strong&gt;) und &lt;strong&gt;Dateien&lt;/strong&gt; (Grafiken, Materialien) enthalten, wie der zweite Mac (evtl. ein iMac oder Mac Pro) zu Hause.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Noch besorgter wird man sich f&amp;uuml;hlen, wenn man merkt, dass auch Apples famoser &lt;strong&gt;.mac&lt;/strong&gt; oder dotmac-Dienst hierauf nur teilweise antwortet: Der kann zwar locker aus der H&amp;uuml;fte Mail, iCal und Adressbuch synchronisieren (und das auch unschlagbar gut), aber die kompletten Projektdaten kann man nur schwer auf 10GB Speicher ablegen und die Synchronisation dahin w&amp;auml;re auch nich sonderlich schnell. Aber wenn man ein bisschen sucht gibts f&amp;uuml;r beides eine &lt;em&gt;fast&lt;/em&gt; &lt;strong&gt;ultimative L&amp;ouml;sung&lt;/strong&gt;&lt;/p&gt;
&lt;!-- MORE --&gt;
&lt;h3&gt;Prolog&lt;/h3&gt;
&lt;p&gt;Die &lt;em&gt;total&lt;/em&gt; &lt;strong&gt;ultimative L&amp;ouml;sung&lt;/strong&gt; w&amp;auml;re "Portal". Das ist ein Programm, welches gerade im Rahmen des &lt;a href="http://mydreamapp.com/" target="_blank"&gt;MyDreamApp&lt;/a&gt;-Projektes entwickelt wird. Es soll sowohl iCal, Adressbuch als auch Dateien und Mails per Bonjour automatisch synchronisieren k&amp;ouml;nnen. Leider ist dessen Entwicklung denkbar schwierig und &lt;a href="http://mydreamapp.com/forums/viewtopic.php?pid=19444#p19444" target="_blank"&gt;laut der Entwickler&lt;/a&gt; ist der erste Release wohl auf Januar kommenden Jahres vertagt. Da wird man wohl noch ein bisschen warten m&amp;uuml;ssen, bis die goldenen Tage anbrechen.&lt;/p&gt;
&lt;h3&gt;Adressbuch, iCal und Mail&lt;/h3&gt;
&lt;p&gt;Zu allererst sollte man die eigenen &lt;strong&gt;Mail&lt;/strong&gt;-Accounts vom klassischen POP3 auf &lt;strong&gt;IMAP&lt;/strong&gt; umstellen. Wer einen eigenen Server besitzt wird dies sowieso problemlos tun k&amp;ouml;nnen, aber auch viele Provider bieten dies an. Leider will z.B. GMX Geld f&amp;uuml;r den IMAP-Zugriff. Aber hier schafft eine Funktion in Mail Abhilfe: Man stellt einfach die Zeit, nach der die Mails vom Server gel&amp;ouml;scht auf 1 Woche, oder was einem sonst passt. In dieser Zeit hat man dann die M&amp;ouml;glichkeit die Mails auch noch mit dem Zweitrechner abzurufen. Um doppelte Mails muss man sich keine Sorgen machen, Mail l&amp;auml;dt nichts doppelt runter. Leider bleibt die "ungelesen"-Markierung trotzdem.&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;img src="/media/posts/Mail.jpg" alt="" align="middle" /&gt;&lt;/p&gt;
&lt;p&gt;F&amp;uuml;r die Synchronisation von &lt;strong&gt;Kalender und Adressbuch&lt;/strong&gt; gibt es einige L&amp;ouml;sungen. Darunter unter anderem das bekannte &lt;a href="http://www.mac.com" target="_blank"&gt;.mac&lt;/a&gt; direkt von Apple, aber auch &lt;a href="http://www.macbay.de/" target="_blank"&gt;macbay&lt;/a&gt; und &lt;a href="http://www.plaxo.com/info" target="_blank"&gt;plaxo&lt;/a&gt; k&amp;ouml;nnen iCal und Adressbuch synchronisieren. Dabei ist allerdings plaxo der einzige Dienst, der kostenlos ist. Dass das Gesch&amp;auml;ftsmodell dann aber mit den pers&amp;ouml;nlichen Daten zu tun hat, kann man sich aber denken.&lt;/p&gt;
&lt;p&gt;Es gibt aber auch noch L&amp;ouml;sungen f&amp;uuml;r das eigene Firmennetz. &lt;a href="http://www.busymac.com/" target="_blank"&gt;Busysync&lt;/a&gt; sieht zum Beispiel sehr vielversprechend aus. Es synchronisiert leider nur iCal, aber Adressbuch-Support ist f&amp;uuml;r die Zukunft angedacht. MacUpdate h&amp;auml;lt aber auch eine Menge &lt;a href="http://www.macupdate.com/search.php?arch=all&amp;amp;keywords=ical+sync&amp;amp;os=macosx" target="_blank"&gt;weiterer L&amp;ouml;sungen&lt;/a&gt; bereit.&lt;/p&gt;
&lt;p&gt;Leider ist bei den meisten das Problem, dass sie nicht Adressbuch und iCal auf einmal k&amp;ouml;nnen. &lt;a href="http://www.markspace.com/synctogether.php" target="_blank"&gt;SyncTogether&lt;/a&gt; k&amp;ouml;nnte das zwar theoretisch, aber das ist leider nicht Leopard-kompatibel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L&amp;ouml;sung&lt;br /&gt;&lt;/strong&gt;&lt;img src="/media/posts/dotmac.jpg" alt="" align="right" /&gt;Mein Vorschlag f&amp;uuml;r die Adressbuch, iCal und Mail-Synchronisation heisst schlussendlich aber &lt;a href="http://www.mac.com" target="_blank"&gt;dotmac&lt;/a&gt;. Es funktioniert am zuverl&amp;auml;ssigsten im Hintergrund und man hat iCal und Adressbuch &amp;uuml;berall auf dem neuesten Stand. Wer die 99EUR Abo im Jahr scheut, der sei dezent darauf hingewiesen, dass die 60 Tage Testphase f&amp;uuml;r jeden neu angelegten Benutzernamen gelten. Aber f&amp;uuml;r 99EUR kriegt man nat&amp;uuml;rlich auch z.B. &lt;a href="http://www.apple.com/dotmac/backtomymac.html" target="_blank"&gt;Back-To-My-Mac&lt;/a&gt;, was bei zwei Rechnern nicht zu untersch&amp;auml;tzen ist.&lt;/p&gt;
&lt;h3&gt;Dateien und Home-Verzeichnis synchronisieren&lt;/h3&gt;
&lt;p&gt;F&amp;uuml;r dieses Problem bietet auch dotmac keine sinnvolle L&amp;ouml;sung. Man kann zwar Backups erstellen, aber das eigene Home-Verzeichnis bzw. Arbeitsdateien, sind ja auch schnell gr&amp;ouml;&amp;szlig;er als 10GB. Auch ist die Synchronisation &amp;uuml;ber das Internet bestimmt nicht die Schnellste.&lt;/p&gt;
&lt;p&gt;Es muss also eine andere L&amp;ouml;sung her, am besten eine die schnell und automatisch &amp;uuml;ber das LAN funktioniert. &lt;a href="http://www.objectpark.net/picnic.html" target="_blank"&gt;Picnic&lt;/a&gt; ist so eine L&amp;ouml;sung. Es synchronisiert beliebige Verzeichnisse &amp;uuml;ber das (W)LAN und auf beliebig vielen Rechnern. Leider hat es bei mir im Testbetrieb eher schlecht als recht funktioniert: Mit gro&amp;szlig;en Ordnern kommt es nur schlecht zurecht (bleibt einfach h&amp;auml;ngen), auch gro&amp;szlig;e Dateien kann es nur suboptimal behandeln. Einfach noch zu buggy.&lt;/p&gt;
&lt;p&gt;Bleibt nur noch die Griff zu einem manuellen Verzeichnissychronisationsprogramm, wie z.B. &lt;a href="http://www.decimus.net/" target="_blank"&gt;Synk&lt;/a&gt; mit dem man dann ein freigegebenes Verzeichnis auf dem einen Rechner mit dem lokalen Verzeichnis auf dem zweiten Rechner. abgleicht. Sieht auf Anhieb sehr vielversprechend aus, funktioniert aber leider nicht wirklich gut. Die optimierte "ZeroScan"-Methode funktioniert nicht auf Netzwerk-Shares, so dass synchronisieren mit einem zweiten Rechner sehr lange dauert.&lt;/p&gt;
&lt;p&gt;&amp;Auml;hnliches gilt z.B. f&amp;uuml;r &lt;a href="http://www.mupromo.com/" target="_blank"&gt;File Synchronisation&lt;/a&gt;. Bei diesem kann man zwar komfortable Listen von Verzeichnisse anlegen, die es dann synchronisiert, aber auch die ist wegen der Arbeit auf gesharten Verzeichnisse sehr langsam. Beide Programme kosten au&amp;szlig;erdem Geld.&lt;/p&gt;
&lt;p&gt;Umsonst aber sehr bedenklich ist der &lt;a href="https://www.foldershare.com/" target="_blank"&gt;FolderShare&lt;/a&gt;-Dienst von Microsoft, den es auch f&amp;uuml;r den Mac gibt. Ein kurzer Blick in die AGBs offenbart, dass man sich das Auswerten der Verzeichnisdaten vorbeh&amp;auml;lt. Allein schon, dass man das Tool &amp;uuml;ber ein Webinterface konfiguriert, gibt zu denken.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;L&amp;ouml;sung&lt;br /&gt;&lt;/strong&gt;&lt;img src="/media/posts/Unison.jpg" alt="" align="right" /&gt;Die sch&amp;ouml;nste und beste L&amp;ouml;sung ist &lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/" target="_blank"&gt;Unison&lt;/a&gt;. Ein OpenSource-Tool, dass auch von vormals &lt;a href="http://mydreamapp.com/news/post/382/" target="_blank"&gt;erw&amp;auml;hnten Portal demn&amp;auml;chst verwendet&lt;/a&gt; wird. Unison ist eigentlich ein Kommandozeilen-Tool, aber kommt in der &lt;a href="http://alan.petitepomme.net/projets/unison/index.html" target="_blank"&gt;Universal-Binary-Version&lt;/a&gt; auch mit einem rudiment&amp;auml;ren GUI daher. Es synchronisiert sicher und schnell per SSH zwischen den beiden Rechnern.&lt;/p&gt;
&lt;h3&gt;Synchronisieren mit Unison&lt;/h3&gt;
&lt;p&gt;Eigentlich ganz einfach. Mit zuerst installiert man Unison auf beiden Macs und installiert &amp;uuml;ber die Menu-Option "Install command-line tool" Unison auch f&amp;uuml;r die Shell. Nun aktiviert man f&amp;uuml;r den Mac, der bei der Synchronisation als Client arbeiten soll (eigentlich egal welcher von beiden) unter "Sharing" in den Systemeinstellungen die "entfernte Anmeldung".&lt;/p&gt;
&lt;p&gt;Nun legt man mit "New" ein neues Profil f&amp;uuml;r die Synchronisation an. "First root" ist das lokale Verzeichnis und bei "Second Root" w&amp;auml;hlt man "Remote" und gibt Username und IP des Client-Macs an. "File" steht auch bei "Second Root" f&amp;uuml;r das abzugleichende Verzeichnis.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="/media/posts/unison-config.jpg" alt="" align="middle" /&gt;&lt;/p&gt;
&lt;p align="left"&gt;Nun das Profil speichern und in der Profil&amp;uuml;bersicht auf "Open" gehen. Nun fragt Unison noch nachdem SSH-Passwort und schon l&amp;auml;uft der Abgleich. Die folgende &amp;Uuml;bersicht zeigt Konflikte und &amp;Auml;nderungen an. Bei Konflikten muss man &amp;uuml;brigens selber ausw&amp;auml;hlen, welche Datei man &amp;uuml;bernehmen m&amp;ouml;chte. Selbst ein "merge" w&amp;uuml;rde funktionieren, aber nicht ohne manuelle Konfiguration. Mit "Go" f&amp;uuml;hrt man die Synchronisation durch.&lt;/p&gt;
&lt;p align="left"&gt;Einige Ver&amp;auml;nderungen an der Profildatei k&amp;ouml;nnen das Ergebnis &amp;uuml;brigens noch weiter optimieren. Die Profildateien liegen unter /Users/&amp;lt;username&amp;gt;/Library/Application Support/Unison. Eine ausf&amp;uuml;hrliche Dokumentation der M&amp;ouml;glichkeiten findet sich &lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/download/releases/beta/unison-manual.html" target="_blank"&gt;hier&lt;/a&gt;. z.B. ist es sinnvoll die Systemdateien, die mit "." anfangen von der Synchronisation auszuschlie&amp;szlig;en. Auch lassen sich nur bestimmte Unterverzeichnisse in die Synchronisation einschlie&amp;szlig;en.&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;# Unison preferences file&lt;br /&gt;root = /Users/username&lt;br /&gt;root = ssh://user@123.456.789.0//Users/username&lt;br /&gt;&lt;br /&gt;ignore = Name .*&lt;br /&gt;&lt;br /&gt;path = Movies&lt;br /&gt;path = Documents&lt;br /&gt;path = Pictures&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;Uuml;brigens lassen sich auch so modifizierte Profile immer noch mit der GUI ausf&amp;uuml;hren.&lt;/p&gt;
&lt;p align="left"&gt;Bis zum Erscheinen von &lt;a href="http://mydreamapp.com/" target="_blank"&gt;Portal&lt;/a&gt; kommt man auf diesen Weg glaube ich der Synchronisationsnot am besten bei.&lt;/p&gt;
&lt;p align="left"&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Noch ein paar mehr Infos gibts im &lt;a href="/blog/zwei-macs-synchronisieren-teil-2/"&gt;zweiten Teil zu diesem Thema&lt;/a&gt;.&lt;/p&gt;
&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/daten-und-dateien-von-zwei-macs-synchronisieren/</guid><feedburner:origLink>http://www.tim-adler.com/post/daten-und-dateien-von-zwei-macs-synchronisieren/</feedburner:origLink></item><item><title>Trackbacks mit Django empfangen</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/ai6hc4ZiDl4/</link><description>&lt;p&gt;&lt;a title="Dieser Trackback-Icon ist aus Brasilien" href="http://avi.alkalay.net/2007/05/blog-icons.html" target="_blank"&gt;&lt;img src="/media/posts/trackback.jpg" border="0" alt="Trackback-Icon" align="right" /&gt;&lt;/a&gt;Als ich vor einiger Zeit den Artikel zu &lt;a href="/post/blog-features-django"&gt;Blog-Features in Django&lt;/a&gt; geschrieben habe, waren nat&amp;uuml;rlich die meisten Sachen an dieses Blog und &lt;strong&gt;meinen Erfahrungen&lt;/strong&gt; mit ihm angelehnt. Damals gab es noch keine M&amp;ouml;glichkeit &lt;strong&gt;Trackbacks an mein Blog&lt;/strong&gt; zu schicken. Das ist mittlerweile anders und deshalb kann ich nun auch erkl&amp;auml;ren wie es funktioniert, au&amp;szlig;erdem hat mich der &lt;a href="http://www.martin-geber.com/" target="_blank"&gt;Martin&lt;/a&gt; per Mail um diesen Artikel gebeten.&lt;/p&gt;
&lt;p&gt;Da man zwangsl&amp;auml;ufig die &lt;strong&gt;Trackback-Funktionalit&amp;auml;t&lt;/strong&gt; in Django selber schreiben muss ist es ganz gut vielleicht im Vorfeld einmal einen Blick in die &lt;a href="http://www.sixapart.com/pronet/docs/trackback_spec#___top" target="_blank"&gt;Trackback-Spezifikation&lt;/a&gt; zu werfen. Erfunden wurden die Trackbacks von den Leuten von &lt;a href="http://www.sixapart.com" target="_blank"&gt;SixApart&lt;/a&gt; f&amp;uuml;r ihre Blogging-Software &lt;a href="http://www.movabletype.org/" target="_blank"&gt;MovableType&lt;/a&gt;. So wissentlich gest&amp;auml;rkt ist die Implementierung der Trackbacks eigentlich ziemlich einfach.&lt;/p&gt;
&lt;!-- MORE --&gt;
&lt;h3&gt;Spezifikationen&lt;/h3&gt;
&lt;p&gt;Eigentlich ist ein Trackback nichts anderes als eine normale HTTP-Anfrage, die den Sinn hat das eigene Blog &amp;uuml;ber die Verlinkung oder das "Bezug nehmen" auf einen bestimmten Beitrag zu informieren. Dementsprechend muss es f&amp;uuml;r jeden einzelnen Beitrag eine eigene Trackback-Adresse geben, damit das eigene/empfangende Blog den Trackback auch einem Beitrag zuordnen kann. Diese besondere URL nennt sich &lt;em&gt;Trackback-Ping-URL&lt;/em&gt;. Das Informieren eines Quellblogs nennt sich auch &lt;em&gt;Ping&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Das pingende Blog sendet den Ping ganz einfach in der Form eines HTTP-POST-Request an die Trackback-Ping-URL. Dementsprechend hat man in Django also fast nichts anderes zu tun als eine einfache Formularbehandlung.&lt;/p&gt;
&lt;p&gt;Folgende Parameter kann das pingende Blog mitschicken:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;title&lt;br /&gt;&lt;/strong&gt;Mit dem Namen des Beitrags in dem man sich das pingende Blog auf den Trackback-Beitrag bezieht.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;excerpt&lt;br /&gt;&lt;/strong&gt;Ein kurzer Ausschnit aus dem Beitrag in dem sich auf den Trackback-Beitrag bezogen wird.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;url&lt;br /&gt;&lt;/strong&gt;Die URL des bezugsnehmenden Beitrags.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;blog_name&lt;/strong&gt; (optional)&lt;br /&gt;Enth&amp;auml;lt den Namen des Blogs welches den Trackback sendet.&lt;/p&gt;
&lt;p&gt;Abweichend von einer einfachen Auswertung von POST-Parametern ist die Antwort, die das gepingte Blog (also in diesen Fall Django) senden muss. Dabei sieht die Spezifikation zwei Antworttypen vor, jeweils als einfaches XML.&lt;/p&gt;
&lt;p&gt;Bei erfolgreichem Ping und korrekter Annahme des Trackbacks:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;response&amp;gt;&lt;br /&gt;&amp;lt;error&amp;gt;0&amp;lt;/error&amp;gt;&lt;br /&gt;&amp;lt;/response&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Dementsprechend bei einem Fehler und fehlgeschlagendem Ping:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;response&amp;gt;&lt;br /&gt;&amp;lt;error&amp;gt;1&amp;lt;/error&amp;gt;&lt;br /&gt;&amp;lt;message&amp;gt;The error message&amp;lt;/message&amp;gt;&lt;br /&gt;&amp;lt;/response&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Implementierung in Django&lt;/h3&gt;
&lt;p&gt;&amp;Uuml;bersetzt man die Spezifikation in Django-Sprache bedeutet das folgendes: Man muss eine spezielle URL anlegen, die f&amp;uuml;r jeden Beitrag als &lt;em&gt;Trackback-URL&lt;/em&gt; existiert. Der hinter dieser URL liegende &lt;em&gt;View&lt;/em&gt; muss die oben beschriebenen Daten entgegen nehmen und als Trackback speichern. Man brauch also ebenfalls ein extra &lt;em&gt;Model&lt;/em&gt; um die Trackbacks zu speichern. Danach muss der View eine Antwort generieren, die je nach Ergebnis die entsprechende &lt;em&gt;XML-Antwort&lt;/em&gt; gibt.&lt;/p&gt;
&lt;p&gt;Zuerst ist es also sinnvoll das folgende &lt;strong&gt;Model 'Trackback'&lt;/strong&gt; in der &lt;strong&gt;models.py&lt;/strong&gt; anzulegen und Django entsprechend die passende Tabelle dazu anlegen zu lassen:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;class Trackback(models.Model):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; blog = models.CharField("Blog",maxlength=200, core=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; title = models.CharField("Titel",maxlength=200, core=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = models.CharField("URL",maxlength=200, core=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; excerpt = models.TextField("Auszug",core=True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pub_date = models.DateTimeField("Datum",'date published')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; post = models.ForeignKey(Post,related_name='trackbacks')&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __str__(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return "%s" % (self.title)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Meta:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ordering = ['-pub_date']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; verbose_name = "Trackback"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; verbose_name_plural = "Trackbacks"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Admin:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; list_display = ('blog', 'url', 'post', 'pub_date')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; date_hierarchy = 'pub_date'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; list_filter = ('pub_date','post')&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Dabei verkn&amp;uuml;pft der ForeignKey den Trackback entsprechend mit dem Model, dass man f&amp;uuml;r seine Posts verwendet.&lt;/p&gt;
&lt;p&gt;Nun legt man die &lt;strong&gt;Trackback-URL&lt;/strong&gt; in seiner &lt;strong&gt;urls.py&lt;/strong&gt; an und weist ihr eine entsprechende View-Funktion zu. Das k&amp;ouml;nnte z.B. so aussehen:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;urlpatterns = patterns('blog.views',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (r'^post/(?P&amp;lt;url_string&amp;gt;[0-9a-z_-]+)/$', 'post'), //URL f&amp;uuml;r einen Post&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (r'^post/(?P&amp;lt;url_string&amp;gt;[0-9a-z_-]+)/trackback/$', 'trackback'), //Trackback-URL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;)&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Nun fehlt eigentlich nur noch die entsprechende View-Funktion in der &lt;strong&gt;views.py&lt;/strong&gt; um den ankommenden Ping entsprechend auszuwerten. Diese l&amp;auml;sst sich nat&amp;uuml;rlich beliebig kompliziert anlegen. Mit &lt;strong&gt;Akismet&lt;/strong&gt; oder ohne, wobei ich energisch empfehle immer Akismet mit einzubauen. Man ahnt nicht wie schnell man sich sonst Spam einf&amp;auml;ngt. Ich habe die Integration von Akismet im &lt;a href="/post/blog-features-django/"&gt;Blog-Features-Beitrag&lt;/a&gt; beschrieben, und dementsprechend verwendet auch der folgende Code Akismet.&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;def trackback(request, url_string):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Erstmal den Post finden&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; post = Post.objects.get(url_string__iexact=url_string)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Post.DoesNotExist:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Wenn man ihn nicht finden konnte sollte man dem pingenden Blog das sagen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'1','errormsg':'Post not found, maybe you have the wrong trackback URL!'})&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; param = ''&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Dann die Parameter auslesen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; param = 'title'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; title = request.REQUEST[param]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; param = 'url'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; url = request.REQUEST[param]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; param = 'excerpt'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; excerpt = request.REQUEST[param]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //das ist eigentlich unsch&amp;ouml;n hier, weil der Parameter blog_name eigentlich optional ist&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //naja, mir sei etwas schludern erlaubt :)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; param = 'blog_name'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; blog = request.REQUEST[param]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Nun kommt zuerst der Check mit Akismet ob der Trackback Spam ist&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; real_key = akismet.verify_key(AKISMET_API_KEY,BLOG_URL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if real_key:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is_spam = akismet.comment_check(AKISMET_API_KEY,BLOG_URL,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.META['REMOTE_ADDR'], request.META['HTTP_USER_AGENT'],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comment_author=blog,comment_content=excerpt,comment_type='trackback',comment_author_url=url)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if is_spam:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Sollte er Spam sein, dann sollte man das wiederum dem pingenden Blog mitteilen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'1','errormsg': 'Your Trackback is spam!' })&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //wenn alles OK ist dann den Trackback entsprechend speichern&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback = Trackback()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.blog = blog&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.title = title&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.url = url&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.excerpt = excerpt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.pub_date = datetime.now()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.post = post&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback.save()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //und nat&amp;uuml;rlich mit OK antworten&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'0'})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; except akismet.AkismetError, e:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Wird einfach nur geloggt, mehr kann man da nicht tun...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; error("%s - %s" % (e.response, e.statuscode))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Bescheid sagen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'1','errormsg': 'Internal error occured! Something is wrong with me.' })&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except Exception, e:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Es kann immer was Schiefgehen, das sollte man dem pingenden Blog mitteilen&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(e.__class__.__name__ == 'KeyError'):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //insbesondere k&amp;ouml;nnten Parameter fehlen, die man aber erwartet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //da kann man eine sch&amp;ouml;ne Meldung stricken&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e = 'Parameter "%s" missing!' % param&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'1','errormsg': e })&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Im Zweifel ist halt alles gut. Aber diese Zeile d&amp;uuml;rfte fast immer unreachable sein.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response('trackback-answer.xml',{'error':'0'})&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Nun fehlt nur noch der Code f&amp;uuml;r die &lt;strong&gt;trackback-answer.xml&lt;/strong&gt; die man wie &amp;uuml;blich zu den anderen Templates ins 'templates'-Verzeichnis legt.&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;response&amp;gt;&lt;br /&gt;{% ifequal error '1' %}&lt;br /&gt;&amp;lt;error&amp;gt;1&amp;lt;/error&amp;gt;&lt;br /&gt;&amp;lt;message&amp;gt;{{errormsg}}&amp;lt;/message&amp;gt;&lt;br /&gt;{% else %}&lt;br /&gt;&amp;lt;error&amp;gt;0&amp;lt;/error&amp;gt;&lt;br /&gt;{% endifequal %}&lt;br /&gt;&amp;lt;/response&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Jetzt sollte Django mit Trackbacks von anderen Blogs problemlos umgehen k&amp;ouml;nnen. Wichtig daf&amp;uuml;r ist nat&amp;uuml;rlich, dass das andere Blog die e&lt;strong&gt;ntsprechende Trackback-URL des Beitrags&lt;/strong&gt; kennt. Diese sollte man also dringend mit ver&amp;ouml;ffentlichen.&lt;/p&gt;
&lt;h3&gt;Auto-Discovery f&amp;uuml;r Trackback-URLs&lt;/h3&gt;
&lt;p&gt;In den Trackback-Spezifikationen ist aber auch der Fall ber&amp;uuml;cksichtigt, dass das pingende Blog nur die Adresse des verlinkten Beitrags kennt und nicht die genaue Trackback-URL. Das pingende Blog versucht dann die Trackback-URL &amp;uuml;ber eine automatische Erkennung herauszukriegen, indem es die Seite des Beitrags nach einem bestimmten &lt;a href="http://de.wikipedia.org/wiki/Resource_Description_Framework" target="_blank"&gt;RDF&lt;/a&gt;-Metaeintrag durchsucht.&lt;/p&gt;
&lt;p&gt;Diese &lt;strong&gt;RDF-Metainformationen&lt;/strong&gt; m&amp;uuml;ssen wie folgt aussehen und man brauch sie eigentlich nur passend ein die Seite/das Template, die den Beitrag anzeigt, einzubauen:&lt;/p&gt;
&lt;div class="code"&gt;
&lt;pre&gt;...&lt;br /&gt;&amp;lt;!--&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:dc="http://purl.org/dc/elements/1.1/"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rdf:Description&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rdf:about="PERMALINK DES BEITRAGS"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc:title="TITEL DES BEITRAGS"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dc:identifier="PERMALINK DES BEITRAGS" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; trackback:ping="TRACKBACK-URL DES BEITRAGS"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/rdf:RDF&amp;gt;&lt;br /&gt;--&amp;gt;&lt;br /&gt;...&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Danach ist das selbstgebaute Django-Blog bereit f&amp;uuml;r Trackbacks und Autodiscovery.&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/trackbacks-mit-django-empfangen/</guid><feedburner:origLink>http://www.tim-adler.com/post/trackbacks-mit-django-empfangen/</feedburner:origLink></item><item><title>Spiegelungen in Keynote &amp;#39;08</title><link>http://feedproxy.google.com/~r/tim-adler/blog/~3/_hq63KHdzQE/</link><description>&lt;p&gt;Mit Apple benutzt man ja eigentlich Software von einem Hersteller, der sich die Usability und das Design seiner Applikationen und Systeme gro&amp;szlig; auf die Fahnen schreibt. Vielleicht auch deswegen war ich bisher immer ziemlich zufrieden mit der Bedienung aller m&amp;ouml;glicher Software der Apfel-Firma. Umso &amp;auml;rgerlicher, wenn man sich der &lt;strong&gt;Spiegelung-Funktion&lt;/strong&gt; im neuen Keynote 08 gegen&amp;uuml;ber sieht.&lt;/p&gt;
&lt;p&gt;Keynote bietet ja neben den &amp;uuml;blichen Powerpoint-&amp;uuml;berlegenen Animationsoptionen auch verschiedene M&amp;ouml;glichkeiten die Grafiken und geometrischen Objekte in der Pr&amp;auml;sentation mit &lt;strong&gt;Bildeffekten&lt;/strong&gt; zu belegen z.B. Schatten, Texturen und eben auch die besagte Spiegelfunktion, die mittlerweile ja fast ein optisches Markenzeichen von Apple ist. Umso &amp;auml;rgerlicher, wenn sich diese Option einfach nicht anw&amp;auml;hlen l&amp;auml;sst und st&amp;auml;ndig ausgegraut bleibt.&lt;/p&gt;
&lt;!-- MORE --&gt;
&lt;div&gt;
&lt;p&gt;&lt;img src="/media/posts/spiegeln_geht_nicht.jpg" border="0" alt="Spielgen in Keynote 08 geht nicht" align="bottom" /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;Ich habe es mit dem Ausw&amp;auml;hlen verschiedenster Elemente in der Pr&amp;auml;sentation versucht, aber mit keinem lie&amp;szlig; sich die Spiegel-Option zur Funktion bewegen. Gro&amp;szlig;er Usability-"Faux Pas" dabei: Kein Tooltip/Popup/Aufspringende Office-Nervklammer oder &amp;auml;hnliches weisst den Benutzer darauf hin, warum diese Option denn wohl nicht-ausw&amp;auml;hlbar ist.&lt;/p&gt;
&lt;p&gt;Nach einigem Surfen in Apples Support-Foren wies mich dann ein v&amp;ouml;llig themenfremder Eintrag (fragt mich bitte nicht mehr welcher) darauf hin, dass diese Funktion wohl nur mit &lt;strong&gt;importierten Grafiken&lt;/strong&gt; zusammenarbeitet. Sehr irritierend insbesondere wenn man weiss, dass es fr&amp;uuml;her Optionen in Keynote gab, die aufgrund fehlender Systemleistung nicht anw&amp;auml;hlbar waren. Sehr &amp;auml;rgerlich, wenn man bis heute, wie ich, die Grafiken zwecks besserer Skalierbarkeit immer als angepasste Texturen auf geometrische Rechtecke gelegt hat. Sehr frustrierend, wenn man eine Spiegelung vielleicht mal auf eine &amp;Uuml;berschrift legen will...&lt;/p&gt;
&lt;p&gt;Grafiken m&amp;uuml;ssen also auf diesem Weg eingef&amp;uuml;gt werden:&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/bild_einfuegen.jpg" border="0" alt="Bild importieren in Keynote" align="bottom" /&gt;&lt;/p&gt;
&lt;p&gt;Dann klappts auch mit der Spiegelung. Und Apple: Hier h&amp;auml;tte ein kleiner Tooltip Wunder bewirkt!&lt;/p&gt;
&lt;p&gt;&lt;img src="/media/posts/spiegeln_geht.jpg" border="0" alt="Spiegeln funktioniert" align="bottom" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description><guid isPermaLink="false">http://www.tim-adler.com/post/spiegelungen-keynote-08/</guid><feedburner:origLink>http://www.tim-adler.com/post/spiegelungen-keynote-08/</feedburner:origLink></item></channel></rss>

