<?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>funkensturm. &#187; mac os x</title>
	<atom:link href="http://funkensturm.de/category/mac-os-x/feed/" rel="self" type="application/rss+xml" />
	<link>http://funkensturm.de</link>
	<description>Das funkensturm. Weblog</description>
	<lastBuildDate>Tue, 15 Nov 2011 15:04:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>L2TP/IPSec VPN on Mac OS X using&#160;perfect-privacy.com</title>
		<link>http://funkensturm.de/2010/11/20/l2tpipsec-vpn-on-mac-os-x-using-perfect-privacy-com/</link>
		<comments>http://funkensturm.de/2010/11/20/l2tpipsec-vpn-on-mac-os-x-using-perfect-privacy-com/#comments</comments>
		<pubDate>Sat, 20 Nov 2010 08:29:49 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[mac os x]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=310</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-01.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-02.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-03.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-04.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-05.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-06.png" /><br />
<img src="http://blog.funkensturm.de/wp-content/uploads/2010/11/l2tp-mac-os-07.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2010/11/20/l2tpipsec-vpn-on-mac-os-x-using-perfect-privacy-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AirPortClown: Simple MAC address spoof for Snow&#160;Leopard</title>
		<link>http://funkensturm.de/2010/01/22/airportclown-simple-mac-address-spoof-for-snow-leopard/</link>
		<comments>http://funkensturm.de/2010/01/22/airportclown-simple-mac-address-spoof-for-snow-leopard/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:41:40 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[mac os x]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[airport]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[spoof]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=270</guid>
		<description><![CDATA[Download AirPortClown as pure Cocoa for Mac OS X 10.6.4 (64 bit) Update: I made a Cocoa App for this. The AppleScript is obsolete. So I found Ryans Automator to do this at iamthekiller but it was not 100% perfect, so I added some of JosteinB&#8217;s suggestions from his blog and out came an AppleScript [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/funkensturm/AirPortClown/downloads" onclick="pageTracker._trackPageview('/outgoing/github.com/funkensturm/AirPortClown/downloads?referer=');">Download AirPortClown as pure Cocoa for Mac OS X 10.6.4 (64 bit)</a></p>
<p><a href="http://github.com/funkensturm/AirPortClown" alt="" title="airportclown2update" onclick="pageTracker._trackPageview('/outgoing/github.com/funkensturm/AirPortClown?referer=');"><img src="http://blog.funkensturm.de/wp-content/uploads/2010/01/airportclown2update.png" style="border:1px solid black;"/></a></p>
<p><b>Update:</b> I made a Cocoa App for this. The AppleScript is obsolete.</p>
<p>So I found Ryans Automator to do this at <a href="http://iamthekiller.net/2009/12/spoof-your-mac-address-with-services" onclick="pageTracker._trackPageview('/outgoing/iamthekiller.net/2009/12/spoof-your-mac-address-with-services?referer=');">iamthekiller</a> but it was not 100% perfect, so I added some of JosteinB&#8217;s suggestions from <a href="http://josteinb.com/2009/10/spoofing-your-mac-address-in-snow-leopard" onclick="pageTracker._trackPageview('/outgoing/josteinb.com/2009/10/spoofing-your-mac-address-in-snow-leopard?referer=');">his blog</a> and out came an AppleScript Application called AirPortClown, which you can download here:</p>
<p><a href="http://blog.funkensturm.de/wp-content/uploads/2010/04/AirPortClown.zip"><img src="http://blog.funkensturm.de/wp-content/uploads/2010/01/airportclown.png" alt="" title="airportclown" width="136" height="127" class="aligncenter size-full wp-image-271" /></a></p>
<p>And it looks something like this:</p>
<p><img src="http://blog.funkensturm.de/wp-content/uploads/2010/01/airportclown2.png" alt="" title="airportclown2" width="360" height="181" class="aligncenter size-full wp-image-273" /></p>
<p>The source code is of course included in the download. <a href="http://www.macupdate.com/info.php/id/25729" onclick="pageTracker._trackPageview('/outgoing/www.macupdate.com/info.php/id/25729?referer=');">MacDaddyX</a> didn&#8217;t work for me and <a href="http://sourceforge.net/projects/aspoof/" onclick="pageTracker._trackPageview('/outgoing/sourceforge.net/projects/aspoof/?referer=');">aaspoof</a> is Shareware.</p>
<p>Update: If you look though the comments you will see that there is still some development going on, this version up here is for OS X 10.6.3 and 10.6.4 but you can download the version for OS X 10.6.2 <a href="http://blog.funkensturm.de/wp-content/uploads/2010/03/AirPortClown.zip">here</a>. Make sure your Airport is turned ON first when using the latest version.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2010/01/22/airportclown-simple-mac-address-spoof-for-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Passenger für Ruby on Rails aus TextMate &#8220;automatisch&#8221; neu&#160;starten</title>
		<link>http://funkensturm.de/2009/01/27/passenger-fur-ruby-on-rails-aus-textmate-automatisch-neu-starten/</link>
		<comments>http://funkensturm.de/2009/01/27/passenger-fur-ruby-on-rails-aus-textmate-automatisch-neu-starten/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 11:37:00 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[autorun]]></category>
		<category><![CDATA[autostart]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[prefpane]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=132</guid>
		<description><![CDATA[Manchmal möchte man seine Ruby-on-Rails-Applikation im Passenger manuell neu starten. Sprich eine Datei my_app/tmp/restart.txt anlegen. Ich habe ein kleines Command-Skript für TextMate dafür geschrieben. Wenn man es ausführt (in diesem Beispiel mit APFEL+R), wird beim nächsten Browseraufruf alles neu geladen. Praktisch wenn man Plugins entwickelt :) Hier der Command in TextMate: Und hier der Code [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal möchte man seine Ruby-on-Rails-Applikation im Passenger manuell neu starten. Sprich eine Datei <code>my_app/tmp/restart.txt</code> anlegen. Ich habe ein kleines Command-Skript für TextMate dafür geschrieben. Wenn man es ausführt (in diesem Beispiel mit APFEL+R), wird beim nächsten Browseraufruf alles neu geladen. Praktisch wenn man Plugins entwickelt :)</p>
<p>Hier der Command in TextMate:</p>
<p><img src="http://blog.funkensturm.de/wp-content/uploads/2009/01/restart_passenger.png" alt="restart_passenger" title="restart_passenger" width="500" class="alignnone size-full wp-image-131" /></p>
<p>Und hier der Code dafür</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;#{ENV['TM_BUNDLE_SUPPORT']}/lib/rails_bundle_tools.rb&quot;</span>
f = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>RailsPath.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">rails_root</span>, <span style="color:#996600;">&quot;tmp&quot;</span>, <span style="color:#996600;">&quot;restart.txt&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#996600;">&quot;w&quot;</span>
f.<span style="color:#9900CC;">close</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Rails Application will be reloaded!&quot;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2009/01/27/passenger-fur-ruby-on-rails-aus-textmate-automatisch-neu-starten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Musik vom Apple TV zurück in iTunes&#160;retten</title>
		<link>http://funkensturm.de/2009/01/21/musik-vom-apple-tv-zuruck-in-itunes-retten/</link>
		<comments>http://funkensturm.de/2009/01/21/musik-vom-apple-tv-zuruck-in-itunes-retten/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 15:38:36 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[apple tv]]></category>
		<category><![CDATA[festplatte]]></category>
		<category><![CDATA[hard disk]]></category>
		<category><![CDATA[hard drive]]></category>
		<category><![CDATA[ide/pata]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mp3s]]></category>
		<category><![CDATA[musik]]></category>
		<category><![CDATA[recover]]></category>
		<category><![CDATA[rescue]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=103</guid>
		<description><![CDATA[Gleich vorweg: Es kostet dich deine Apple-TV-Garantie und ein 2,5&#8243; externes Festplattengehäuse (IDE, oder neu-deutsch: PATA). Aber: Es war&#8217;s wert. Denn plötzlich war iTunes leer (lange Geschichte) und das einzige Backup war&#8230; der Apple TV! Der wurde natürlich sofort ausgesteckt, weil der sich sonst wieder synchronisiert hätte und dort auch alles futsch gewesen wäre. 1. [...]]]></description>
			<content:encoded><![CDATA[<p>Gleich vorweg: Es kostet dich deine Apple-TV-Garantie und ein 2,5&#8243; externes Festplattengehäuse (IDE, oder neu-deutsch: PATA). Aber: Es war&#8217;s wert.</p>
<p>Denn plötzlich war iTunes leer (lange Geschichte) und das einzige Backup war&#8230; der Apple TV! Der wurde natürlich sofort ausgesteckt, weil der sich sonst wieder synchronisiert hätte und dort auch alles futsch gewesen wäre.</p>
<p><strong>1. Festplatte vom Apple TV ausbauen</strong><br />
Dafür hätte ich nicht einmal eine der <a href="http://www.macworld.com/article/57079/2007/03/appletvharddrive.html" onclick="pageTracker._trackPageview('/outgoing/www.macworld.com/article/57079/2007/03/appletvharddrive.html?referer=');">zahlreichen Anleitungen</a> benötigt, denn die acht Schrauben (T8 und T10) stellten kein sonderliches Problem dar :) Natürlich musste ich zuerst die aufgekleisterte Gummi-Bodenplatte abmachen. Das ging jedoch ohne Sauerei und man kann die wieder ankleben. Aber vorsicht: Die reißt sehr schnell ;)</p>
<p><strong>2. Externes Gehäuse für 2,5 Zoll IDE (=PATA) kaufen</strong><br />
Schnell gemacht. Kostet 12 Euro ;)</p>
<p><strong>3. Apple TV Festplatte einbauen und am Mac anschließen</strong><br />
Die Platte soll natürlich nicht von Spotlight indiziert werden! Dafür hält man sich ganz ganz schnell folgende zwei Terminal-Befehle bereit und feuert sie ab, sobald die Platte (und ihre beiden Partitionen <em>Media</em> und <em>OSBoot</em>) erkannt wurde.</p>
<p><strong>touch /volumes/Media/.metadata_never_index<br />
touch /volumes/OSBoot/.metadata_never_index</strong></p>
<p><strong>Wichtig:</strong> Platte abklemmen und wieder anklemmen, Spotlight wird seine Änderungen die er in den ersten Sekunden gemacht hat wieder rückgängig machen.</p>
<p><strong>4. Drag&#8217;n'Drop der AppleTV Media Files in iTunes</strong><br />
Die Dateien auf dem Apple TV haben zwar die gleiche Struktur wie das iTunes Verzeichnis eines jeglichen Macs, jedoch sind die Dateinamen alle nur ein paar kryptische Buchstaben á la DDHX.mp3, NKKZ.mp3 usw. Das ist iTunes beim Import zum Glück egal, denn alle Metainformationen (inkl. Cover) sollten IN den einzelnen Dateien enthalten sein.</p>
<p><strong>5. Apple TV wieder zusammen bauen, anklemmen, synchronisieren, läuft.</strong></p>
<p>PS: Bei der Gelegenheit fragt man sich natürlich, ob es nicht so schwer sein könnte, einfach eine größere Festplatte in den Apple TV einzubauen ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2009/01/21/musik-vom-apple-tv-zuruck-in-itunes-retten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ mit SDL mit g++ mit TextMate mit Mac OS&#160;X</title>
		<link>http://funkensturm.de/2008/10/23/c-mit-sdl-mit-g-mit-textmate-mit-mac-os-x/</link>
		<comments>http://funkensturm.de/2008/10/23/c-mit-sdl-mit-g-mit-textmate-mit-mac-os-x/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 14:58:47 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[C++/SDL/OpenGL]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[g++]]></category>
		<category><![CDATA[kompilieren]]></category>
		<category><![CDATA[macro]]></category>
		<category><![CDATA[makro]]></category>
		<category><![CDATA[os c]]></category>
		<category><![CDATA[sdl]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=81</guid>
		<description><![CDATA[Ich wollte mal das Spiele programmieren anfangen. Matthias schlug C++ vor, so sollte es C++ sein. Dank dieser Anleitung habe ich dann auch schon angefangen diese Tutorials durchzugehen. Das macht auch sehr viel Spaß. Nun benutze ich g++ und nicht Xcode. Damit ich das kompilieren auch schön in Textmate automatisiert ist, habe ich mir zwei [...]]]></description>
			<content:encoded><![CDATA[<p>Ich wollte mal das Spiele programmieren anfangen. Matthias schlug C++ vor, so sollte es C++ sein. Dank <a href="http://www.downanup.de/tag/sdl-c-sdllib-libsdl-gcc/" onclick="pageTracker._trackPageview('/outgoing/www.downanup.de/tag/sdl-c-sdllib-libsdl-gcc/?referer=');">dieser</a> Anleitung habe ich dann auch schon angefangen <a href="http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/index" onclick="pageTracker._trackPageview('/outgoing/cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/index&amp;referer=');">diese</a> Tutorials durchzugehen. Das macht auch sehr viel Spaß.</p>
<p>Nun benutze ich g++ und nicht Xcode. Damit ich das kompilieren auch schön in Textmate automatisiert ist, habe ich mir zwei Bundles dafür geschrieben (bzw. angepasst).</p>
<p>Man öffnet also in TextMate den BundleEditor und dupliziet den C++ Command namens &#8220;Compile Single File to Tool&#8221;, nennt die Kopie in z. B. &#8220;Datei kompilieren&#8221; um und passt die letzten Zeilen so an, dass sie so aussehen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">puts <span style="color: #339933;">%</span>x<span style="color: #009900;">&#123;</span> <span style="color: #ff0000;">&quot;#{cc}&quot;</span> <span style="color: #339933;">-</span>o <span style="color: #ff0000;">&quot;#{FileNoExtension}&quot;</span>.<span style="color: #202020;">bin</span> <span style="color: #ff0000;">&quot;$TM_FILEPATH&quot;</span> <span style="color: #339933;">-</span>lSDL <span style="color: #339933;">-</span>lSDLmain <span style="color: #339933;">-</span>framework cocoa<span style="color: #009900;">&#125;</span>
puts <span style="color: #ff0000;">&quot;Successfully created #{FileNoExtension}.bin&quot;</span> unless $CHILD_STATUS <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span></pre></td></tr></table></div>

<p>Dann legt noch einen schönen Shortcut fest, z. B. Apfel + E:</p>
<p><a href='http://blog.funkensturm.de/wp-content/uploads/2008/10/bundle1.png'><img src="http://blog.funkensturm.de/wp-content/uploads/2008/10/bundle1.png" alt="" title="bundle1" width="469" height="465" class="aligncenter size-full wp-image-79" /></a></p>
<p>Damit wird die aktuelle Datei die wir bearbeiten in dateiname.bin kompiliert, sobald wir Apfel + E drücken.</p>
<p>Dann machen wir noch eine Kopie von diesem Command und nennen diese z. B. &#8220;Kompilierte Datei ausführen&#8221; und die letzten Zeilen sollen so aussehen:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">puts <span style="color: #339933;">%</span>x<span style="color: #009900;">&#123;</span> <span style="color: #ff0000;">&quot;./#{FileNoExtension}.bin&quot;</span> <span style="color: #009900;">&#125;</span>
puts <span style="color: #ff0000;">&quot;Yeah!&quot;</span> unless $CHILD_STATUS <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span></pre></td></tr></table></div>

<p>Dann machen wir das z. B. auf Apfel + R (vorsicht, dass ist der Build-Befehl wenn man XCode verwendet.)</p>
<p><a href='http://blog.funkensturm.de/wp-content/uploads/2008/10/bundle2.png'><img src="http://blog.funkensturm.de/wp-content/uploads/2008/10/bundle2.png" alt="" title="bundle2" width="468" height="463" class="aligncenter size-full wp-image-80" /></a></p>
<p>Jetzt braucht man beim programmieren nur noch APFEL + E und dann APFEL + R drücken.</p>
<p>Naja, und dann taste ich mich doch erst mal <a href="http://www.meandmark.com/sdlopenglpart2.html" onclick="pageTracker._trackPageview('/outgoing/www.meandmark.com/sdlopenglpart2.html?referer=');">hier</a> ran ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/10/23/c-mit-sdl-mit-g-mit-textmate-mit-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nützliche Terminal&#160;Befehle</title>
		<link>http://funkensturm.de/2008/04/17/nutzliche-terminal-befehle/</link>
		<comments>http://funkensturm.de/2008/04/17/nutzliche-terminal-befehle/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 15:34:20 +0000</pubDate>
		<dc:creator>manuel</dc:creator>
				<category><![CDATA[mac os x]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[schublade]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[mx record]]></category>
		<category><![CDATA[nslookup]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/?p=60</guid>
		<description><![CDATA[Hier soll eine Liste mit nützlichen Terminal Befehlen entstehen, da man so manche einfach jedes mal vergisst und dann suchen muss. Nameserver einer Domain herausfinden nslookup funkensturm.de MX Record einer Domain herausfinden nslookup -query=mx funkensturm.de DNS Cache flushen dscacheutil -flushcache Prozesse (zu einem Command) mit PID&#8217;s herausfinden ps aux &#124; grep -i ruby &#124; grep [...]]]></description>
			<content:encoded><![CDATA[<p>Hier soll eine Liste mit nützlichen Terminal Befehlen entstehen, da man so manche einfach jedes mal vergisst und dann suchen muss.</p>
<p><strong>Nameserver einer Domain herausfinden</strong><br />
nslookup funkensturm.de</p>
<p><strong>MX Record einer Domain herausfinden</strong><br />
nslookup -query=mx funkensturm.de</p>
<p><strong>DNS Cache flushen</strong><br />
dscacheutil -flushcache</p>
<p><strong>Prozesse (zu einem Command) mit PID&#8217;s herausfinden</strong><br />
ps aux | grep -i ruby<br />
| grep -i command nur wenn man die Prozesse zu einem Command haben will</p>
<p><strong>Prozesse beenden</strong><br />
kill -9 PID<br />
killall command</p>
<p>mit den zwei fang ich mal an. Wird aber immer schön erweitert. Wenn ihr welche habt einfach in die Comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/04/17/nutzliche-terminal-befehle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>IE5, IE6, IE7 unter Mac OS X installieren (Tiger und&#160;Leopard)</title>
		<link>http://funkensturm.de/2008/03/23/ie5-ie6-ie7-unter-osx-installieren-tiger-und-leopard/</link>
		<comments>http://funkensturm.de/2008/03/23/ie5-ie6-ie7-unter-osx-installieren-tiger-und-leopard/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 23:39:49 +0000</pubDate>
		<dc:creator>manuel</dc:creator>
				<category><![CDATA[html/css]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[IE5]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[tiger]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2008/03/23/ie5-ie6-ie7-unter-osx-installieren-tiger-und-leopard/</guid>
		<description><![CDATA[Update: Eigentlich hat sich der Post erledigt, aus historischen Gründen lass ich ihn stehen. Um IE&#8217;s zu testen, nutze ich jetzt http://meineipadresse.de/netrenderer/. _________________ Es gibt zwar Bootcamp und Parallels aber manchmal will man ja vielleicht nur kurz schauen, ob die Webseite auch im IE irgendwie so aussieht, wie sie das soll. Dafür neu zu booten [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Eigentlich hat sich der Post erledigt, aus historischen Gründen lass ich ihn stehen.<br />
Um IE&#8217;s zu testen, nutze ich jetzt <a href="http://meineipadresse.de/netrenderer/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/meineipadresse.de/netrenderer/?referer=');">http://meineipadresse.de/netrenderer/</a>.</p>
<p>_________________</p>
<p>Es gibt zwar Bootcamp und Parallels aber manchmal will man ja vielleicht nur kurz schauen, ob die Webseite auch im IE irgendwie so aussieht, wie sie das soll. Dafür neu zu booten oder sich von Parallels den Ram auffressen lassen, ist dann nicht immer der super Weg. Deshalb habe ich mich mal ein bisschen umgeschaut und bin auch fündig geworden. Das gute ist, man hat nicht nur den IE6 oder IE7 sondern jede IE Version die man gerne haben möchte. Wie irgendwo auf der <a href="http://www.kronenberg.org/ies4osx/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.kronenberg.org/ies4osx/?referer=');">Webseite</a> zu lesen ist: &#8220;Versuch das mal unter Windows richtig hin zu bekommen&#8230;&#8221;</p>
<p><strong>Wichtig:</strong> das ganze geht leider nur mit Intel Macs.</p>
<p><strong>ies4osx</strong><br />
Ein Besuch auf der <a href="http://www.kronenberg.org/ies4osx/" onclick="pageTracker._trackPageview('/outgoing/www.kronenberg.org/ies4osx/?referer=');">Webseite</a> genügt eigentlich, denn da ist schon super erklärt, wie alles geht aber ich schreib hier noch mal kurz zusammen, was zu tun ist.</p>
<p>1. X11 installieren. Ich glaube bei Leopard ist das schon dabei, die anderen müssen auf der Tiger Install Disk 1 &#8220;Installiere sonstige Bundles&#8221; ausführen und da dann durch klicken (keine Sorge ihr könnt später auswählen, was ihr wirklich installieren wollt) und da dann irgendwann X11 auswählen und installieren.</p>
<p>2. <a href="http://www.kronenberg.org/darwine/" onclick="pageTracker._trackPageview('/outgoing/www.kronenberg.org/darwine/?referer=');">Darwine</a> <a href="http://www.kronenberg.org/download.php?download=http://darwine.good-day.net/Darwine-x86-0.9.57.dmg&#038;filename=Darwine-x86-0.9.57.dmg&#038;project=Darwine&#038;sponsorName=Good-Day%20Inc.&#038;sponsorURL=www.good-day.co.jp" onclick="pageTracker._trackPageview('/outgoing/www.kronenberg.org/download.php?download=http_//darwine.good-day.net/Darwine-x86-0.9.57.dmg_038_filename=Darwine-x86-0.9.57.dmg_038_project=Darwine_038_sponsorName=Good-Day_20Inc._038_sponsorURL=www.good-day.co.jp&amp;referer=');">downloaden</a> und installieren (auch hier gibt es ne schöne Erklärung mit Bildern)</p>
<p>3. ies4osx <a href="http://www.kronenberg.org/download.php?download=ies4osx/ies4osx-2_99_0_1.zip&#038;filename=ies4osx-2_99_0_1.zip&#038;project=ies4osx" onclick="pageTracker._trackPageview('/outgoing/www.kronenberg.org/download.php?download=ies4osx/ies4osx-2_99_0_1.zip_038_filename=ies4osx-2_99_0_1.zip_038_project=ies4osx&amp;referer=');">downloaden</a>  und installieren und die benötigten IE&#8217;s auswählen. Die Sachen für die IE&#8217;s müssen runter geladen werden, deshalb dauert es ein bisschen aber dann is es auch schon fertig.</p>
<p>4. den entsprechenden Internet Explorer im Application Folder oder über Quicksilver starten und glücklich sein.</p>
<p>Das ganze ist jetzt nicht wirklich zum surfen mit dem IE unter Mac gedacht sondern mehr zum CSS und JS check.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/03/23/ie5-ie6-ie7-unter-osx-installieren-tiger-und-leopard/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Mysql on Leopard: Startupitem, Prefpane,&#160;LaunchDemon</title>
		<link>http://funkensturm.de/2008/02/12/mysql-on-leopard-startupitem-prefpane-launchdemon/</link>
		<comments>http://funkensturm.de/2008/02/12/mysql-on-leopard-startupitem-prefpane-launchdemon/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 15:18:10 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[mac os x]]></category>
		<category><![CDATA[autorun]]></category>
		<category><![CDATA[launchctl]]></category>
		<category><![CDATA[launchd]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[prefpane]]></category>
		<category><![CDATA[startupitem]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2008/02/12/mysql-on-leopard-startupitem-prefpane-launchdemon/</guid>
		<description><![CDATA[Es hat sich doch komplizierter als erwartet rausgestellt, MySQL auf Mac OS X Leopard beim booten aktiviert zu bekommen. Deshalb hier kurz der Bericht. StartUpItems ist von Apple als &#8220;nicht empfohlen&#8221; eingestuft worden und hat bei mir auch nie funktioniert. Der PrefPane hatte nie funktioniert, es sei denn ich setze die Rechte für /usr/local/mysql auf [...]]]></description>
			<content:encoded><![CDATA[<p>Es hat sich doch komplizierter als erwartet rausgestellt, MySQL auf Mac OS X Leopard beim booten aktiviert zu bekommen. Deshalb hier kurz der Bericht.</p>
<p>StartUpItems ist von Apple als &#8220;nicht empfohlen&#8221; eingestuft worden und hat bei mir auch nie funktioniert. Der PrefPane hatte nie funktioniert, es sei denn ich setze die Rechte für /usr/local/mysql auf mich selbst. Das hat wieder dazu geführt, dass launchd (also der &#8220;empfohlene&#8221; autostart von Leopard&#8221; nicht mehr klappte!</p>
<p>Fehlermeldung der Konsole:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> 080212 <span style="color: #000000;">16</span>:02:<span style="color: #000000;">35</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>Warning<span style="color: #7a0874; font-weight: bold;">&#93;</span> Can<span style="color: #ff0000;">'t create test file /usr/local/mysql-5.0.45-osx10.4-powerpc/data/future.lower-test 
com.mysql.mysqld[4994] 080212 16:02:35 [Warning] Can'</span>t create <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>mysql-5.0.45-osx10.4-powerpc<span style="color: #000000; font-weight: bold;">/</span>data<span style="color: #000000; font-weight: bold;">/</span>future.lower-test 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> 080212 <span style="color: #000000;">16</span>:02:<span style="color: #000000;">35</span>  InnoDB: Operating system error number <span style="color: #000000;">13</span> <span style="color: #000000; font-weight: bold;">in</span> a <span style="color: #c20cb9; font-weight: bold;">file</span> operation. 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> InnoDB: The error means mysqld does not have the access rights to 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> InnoDB: the directory. 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> InnoDB: File name .<span style="color: #000000; font-weight: bold;">/</span>ibdata1 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> InnoDB: File operation call: <span style="color: #ff0000;">'open'</span>. 
com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> InnoDB: Cannot <span style="color: #7a0874; font-weight: bold;">continue</span> operation. 
com.apple.launchd<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">4994</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> Exited with <span style="color: #7a0874; font-weight: bold;">exit</span> code: <span style="color: #000000;">1</span> 
com.apple.launchd<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>com.mysql.mysqld<span style="color: #7a0874; font-weight: bold;">&#41;</span> Throttling respawn: Will start <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">10</span> seconds</pre></td></tr></table></div>

<p><b><font color="red">UPDATE</font></b> Mit <a href="http://lingon.sourceforge.net/" onclick="pageTracker._trackPageview('/outgoing/lingon.sourceforge.net/?referer=');">diesem Tool</a> kann man sehr einfach und sehr schnell alle Autostart Einträge sehen, bearbeiten und eigene erstellen.</p>
<p>Also, erstmal die Rechte wieder korrigieren. Dabei darauf achten, dass man nicht die Rechte vom Alias &#8220;mysql&#8221; in /usr/local korrigiert, sondern die von dem &#8220;echten&#8221; mysql verzeichnis. Also z. B. &#8220;mysql-5.0.45-osx10.4-powerpc&#8221; wäre in dem Fall VERZEICHNIS_BEI_DIR.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>urs<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">local</span>
<span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-la</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> mysql:mysql VERZEICHNIS_BEI_DIR</pre></td></tr></table></div>

<p>Jetzt kann wie gewohnt der <a href="http://www.macosxhints.com/article.php?story=20080128103022907" onclick="pageTracker._trackPageview('/outgoing/www.macosxhints.com/article.php?story=20080128103022907&amp;referer=');">Launchd eingerichtet</a> werden:</p>
<p>Eine Datei namens <b>com.mysql.mysqld.plist</b> in <b>/Library/LaunchDaemons</b> erstellen mit dem Inhalt:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;">&lt; ?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;">&lt; !DOCTYPE plist PUBLIC <span style="color: #ff0000;">&quot;-//Apple//DTD PLIST 1.0//EN&quot;</span> <span style="color: #ff0000;">&quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plist</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Disabled<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;false</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>GroupName<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>_mysql<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>KeepAlive<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;true</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Label<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.mysql.mysqld<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Program<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/usr/local/mysql/bin/mysqld<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>ProgramArguments<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>--user=_mysql<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/array<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>RunAtLoad<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;true</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Umask<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;integer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>7<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/integer<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>UserName<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>_mysql<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>WorkingDirectory<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/usr/local/mysql<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/string<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dict<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plist<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Dann folgende Befehle im Terminal eingeben:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>LaunchDaemons
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chown</span> root com.mysql.mysqld.plist
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chgrp</span> wheel com.mysql.mysqld.plist
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">644</span> com.mysql.mysqld.plist
<span style="color: #c20cb9; font-weight: bold;">sudo</span> launchctl load com.mysql.mysqld.plist</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/02/12/mysql-on-leopard-startupitem-prefpane-launchdemon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FINALLY! RailsICalendar ical ics publish with ruby on&#160;rails</title>
		<link>http://funkensturm.de/2008/02/10/finally-railsicalendar-ical-ics-publish-with-ruby-on-rails/</link>
		<comments>http://funkensturm.de/2008/02/10/finally-railsicalendar-ical-ics-publish-with-ruby-on-rails/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 23:05:39 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[introducing]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[ical]]></category>
		<category><![CDATA[icalendar]]></category>
		<category><![CDATA[occurences]]></category>
		<category><![CDATA[ocurrs_within]]></category>
		<category><![CDATA[publish]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[recurrence]]></category>
		<category><![CDATA[rrule]]></category>
		<category><![CDATA[vpim]]></category>
		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2008/02/10/finally-railsicalendar-ical-ics-publish-with-ruby-on-rails/</guid>
		<description><![CDATA[Das hat echt was Nerven gekostet, aber ich bin mehr als zufrieden mit dem Resultat. Ich darf vorstellen: Wenn man seinen Kalender in Mac OS X (z. B. per Webdav) auf seinen Server lädt (bzw. synchronisiert) und auf diesem Server auch Ruby on Rails läuft, dann kann man seinen Kalender jetzt auf seiner Webseite veröffentlichen. [...]]]></description>
			<content:encoded><![CDATA[<p>Das hat echt was Nerven gekostet, aber ich bin mehr als zufrieden mit dem Resultat.</p>
<p>Ich darf vorstellen: Wenn man seinen Kalender in Mac OS X (z. B. per Webdav) auf seinen Server lädt (bzw. synchronisiert) und auf diesem Server auch Ruby on Rails läuft, dann kann man seinen Kalender jetzt auf seiner Webseite veröffentlichen.</p>
<p>In fact I just realize I should better speak english, because someone&#8217;s German might be somewhat rusty :)</p>
<p>So again: You have ics files on your server (e.g. via webdav) and Ruby on Rails is running? Great, let&#8217;s publish your calendar. The idea came from the great PHPicalendar script.</p>
<p>This is what it will somewhat look like:<br />
<a href='http://blog.funkensturm.de/wp-content/uploads/2008/02/bild-1.png' title='bild-1.png'><img src='http://blog.funkensturm.de/wp-content/uploads/2008/02/bild-1.thumbnail.png' alt='bild-1.png' /></a></p>
<p>I am sorry to not have made a plugin out of this yet, but, hey, the basics are there, help yourself :) If you have any questions feel free to comment.</p>
<p>Requirements:</p>
<ul>
<li>Vpim plugin with <code>sudo gem install vpim</code></li>
</ul>
<p>Features:</p>
<ul>
<li>Read several ICS files from a directory on the server</li>
<li>Parse all the ical events in them</li>
<li>Cache the current calendar in yaml files</li>
<li>(The cache will be refreshed when a ICS file was updated meanwhile)</li>
<li>HTML will be presented for the calendar</li>
<li>Currently you can only choose a date and see the next X days</li>
</ul>
<p><b>A word on recurrence of events</b></p>
<ul>
<li>It does do most of the recurrence rules!</li>
<li>Specifically: All that <a href="http://vpim.rubyforge.org/" onclick="pageTracker._trackPageview('/outgoing/vpim.rubyforge.org/?referer=');">VPIM</a> supports</li>
<li><b>PLUS:</b> EXDATE is also supported!</li>
</ul>
<p><strong>The Code</strong></p>
<p><strong><em>Initializer</em></strong> (config/initializers/any_filename.rb)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Path to icalendar *.ics files on your server</span>
PATH_ICS       = <span style="color:#996600;">&quot;#{RAILS_ROOT}/private/calendars/&quot;</span>
PATH_ICS_CACHE = <span style="color:#996600;">&quot;#{RAILS_ROOT}/tmp/calendars/&quot;</span>
<span style="color:#CC00FF; font-weight:bold;">FileUtils</span>::mkdir_p<span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS<span style="color:#006600; font-weight:bold;">&#41;</span>       <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC00FF; font-weight:bold;">FileUtils</span>::mkdir_p<span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS_CACHE<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">unless</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS_CACHE<span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

<p><strong><em>Controller</em></strong> (app/controllers/calendars_controller.rb)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'vpim'</span>
<span style="color:#9966CC; font-weight:bold;">class</span> CalendarsController <span style="color:#006600; font-weight:bold;">&lt;</span> ApplicationController
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> index
    <span style="color:#008000; font-style:italic;"># Load parameters if submitted</span>
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_year</span><span style="color:#006600; font-weight:bold;">&#93;</span>  = params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(1i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#9966CC; font-weight:bold;">if</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>? <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(1i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">empty</span>?
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_month</span><span style="color:#006600; font-weight:bold;">&#93;</span> = params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(2i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#9966CC; font-weight:bold;">if</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>? <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(2i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">empty</span>?
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_day</span><span style="color:#006600; font-weight:bold;">&#93;</span>   = params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(3i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#9966CC; font-weight:bold;">if</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>? <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> !params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:options</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;date(3i)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">empty</span>?
&nbsp;
    <span style="color:#008000; font-style:italic;"># Load standard if nothing submitted</span>
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_year</span><span style="color:#006600; font-weight:bold;">&#93;</span>  = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#9900CC;">year</span>  <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_year</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>?
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_month</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#5A0A0A; font-weight:bold;">month</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_month</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>?
    <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_day</span><span style="color:#006600; font-weight:bold;">&#93;</span>   = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>.<span style="color:#5A0A0A; font-weight:bold;">day</span>   <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_day</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">blank</span>?
&nbsp;
    <span style="color:#008000; font-style:italic;"># Set variables</span>
    <span style="color:#0066ff; font-weight:bold;">@scope</span>     = <span style="color:#006666;">7</span>
    <span style="color:#0066ff; font-weight:bold;">@events</span>   = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
    <span style="color:#0066ff; font-weight:bold;">@today</span>    = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">gm</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_year</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_month</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#5A0A0A; font-weight:bold;">session</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:date_day</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    cachefile = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS_CACHE, <span style="color:#996600;">&quot;#{@today.to_s(:ical)}_#{@scope}.yml&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Kill cache if outdated</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>cachefile<span style="color:#006600; font-weight:bold;">&#41;</span>
      killcache = <span style="color:#0000FF; font-weight:bold;">false</span>
      <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS, <span style="color:#996600;">'*.ics'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#5A0A0A; font-weight:bold;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
        killcache = <span style="color:#0000FF; font-weight:bold;">true</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">mtime</span><span style="color:#006600; font-weight:bold;">&#40;</span>file<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">mtime</span><span style="color:#006600; font-weight:bold;">&#40;</span>cachefile<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> killcache
        <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS_CACHE, <span style="color:#996600;">'*.*'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#5A0A0A; font-weight:bold;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
          <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#5A0A0A; font-weight:bold;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span>file<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Load calendar from cache</span>
    <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>cachefile<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@events</span> = <span style="color:#CC00FF; font-weight:bold;">YAML</span>.<span style="color:#9900CC;">load_file</span> cachefile 
    <span style="color:#9966CC; font-weight:bold;">else</span>
      <span style="color:#008000; font-style:italic;"># No cache, parse each icalendar *.ics file in PATH_ICS and check for event occurences</span>
      <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">glob</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_ICS, <span style="color:#996600;">'*.ics'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#5A0A0A; font-weight:bold;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>file<span style="color:#006600; font-weight:bold;">|</span>
        category = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>file, <span style="color:#996600;">'.ics'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#6666ff; font-weight:bold;">Vpim::Icalendar</span>.<span style="color:#9900CC;">decode</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>file<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#5A0A0A; font-weight:bold;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>calendar<span style="color:#006600; font-weight:bold;">|</span>
          calendar.<span style="color:#9900CC;">components</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>event<span style="color:#006600; font-weight:bold;">|</span>
            <span style="color:#9966CC; font-weight:bold;">for</span> <span style="color:#5A0A0A; font-weight:bold;">day</span> <span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#006666;">0</span>..@scope
              <span style="color:#9966CC; font-weight:bold;">if</span> start = event.<span style="color:#9900CC;">occurs_in</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>@today<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">24</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#5A0A0A; font-weight:bold;">day</span><span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#0066ff; font-weight:bold;">@today</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">24</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">24</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#5A0A0A; font-weight:bold;">day</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
                myend = start <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006600; font-weight:bold;">&#40;</span>event.<span style="color:#9900CC;">dtend</span> <span style="color:#006600; font-weight:bold;">-</span> event.<span style="color:#9900CC;">dtstart</span><span style="color:#006600; font-weight:bold;">&#41;</span>
                <span style="color:#0066ff; font-weight:bold;">@events</span> <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span>
                  <span style="color:#996600;">'category'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> category,
                  <span style="color:#996600;">'day'</span>      <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#5A0A0A; font-weight:bold;">day</span>,
                  <span style="color:#996600;">'start'</span>    <span style="color:#006600; font-weight:bold;">=&gt;</span> start,
                  <span style="color:#996600;">'duration'</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span>event.<span style="color:#9900CC;">dtend</span> <span style="color:#006600; font-weight:bold;">-</span> event.<span style="color:#9900CC;">dtstart</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">/</span> <span style="color:#006666;">60</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">round</span>, <span style="color:#008000; font-style:italic;"># In minutes</span>
                  <span style="color:#996600;">'end'</span>      <span style="color:#006600; font-weight:bold;">=&gt;</span> myend,
                  <span style="color:#996600;">'allday'</span>   <span style="color:#006600; font-weight:bold;">=&gt;</span> start.<span style="color:#9900CC;">hour</span> == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> start.<span style="color:#9900CC;">min</span> == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> start.<span style="color:#9900CC;">sec</span> == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> myend.<span style="color:#9900CC;">hour</span> == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> myend.<span style="color:#9900CC;">min</span> == <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> myend.<span style="color:#9900CC;">sec</span> == <span style="color:#006666;">0</span>,
                  <span style="color:#996600;">'data'</span>     <span style="color:#006600; font-weight:bold;">=&gt;</span> event
                <span style="color:#006600; font-weight:bold;">&#125;</span>
              <span style="color:#9966CC; font-weight:bold;">end</span>
            <span style="color:#9966CC; font-weight:bold;">end</span>
          <span style="color:#9966CC; font-weight:bold;">end</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#0066ff; font-weight:bold;">@events</span> = <span style="color:#0066ff; font-weight:bold;">@events</span>.<span style="color:#9900CC;">uniq</span> <span style="color:#008000; font-style:italic;"># Just in case :)</span>
      <span style="color:#008000; font-style:italic;"># Save cache</span>
      <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>cachefile, <span style="color:#996600;">'w'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#CC00FF; font-weight:bold;">YAML</span>.<span style="color:#9900CC;">dump</span><span style="color:#006600; font-weight:bold;">&#40;</span>@events, f<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p><strong><em>Single View</em></strong> (view/calendars/index.html.erb)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;">&lt; %
  width  = 110      # Width of one day
  height = 6        # height of 15 minutes in pixels
  buffer = 28       # free space for dates in day column (at top of each day)
  minh   = 20       # Minimum of event height
  cutmornings = 120 # I don't have events between 0:00 and 6:00, cut these pixels off
%&gt;
&nbsp;
&lt;div id=&quot;action&quot;&gt;
&nbsp;
&lt; % for day in 0...@scope + 1 do 
  today = (@today+(60*60*24*day))
  case today.wday  
    when 0  
      dayclass = 'class=&quot;sunday&quot;'
    when 6  
      dayclass = 'class=&quot;saturday&quot;'
    else  
      dayclass = 'class=&quot;otherday&quot;'
  end
  %&gt;
  &lt;div id=&quot;ical_day&quot; <span style="color:#006600; font-weight:bold;">&lt;%</span>= dayclass <span style="color:#006600; font-weight:bold;">%&gt;</span>
    style=&quot; width:  &lt; %= width %&gt;px;
            height: &lt; %= height*96 + buffer - cutmornings %&gt;px;
            left:   &lt; %= day*width + day*10 %&gt;px;&quot;&gt;
    &lt; % if today.year == Time.now.year &amp;&amp; today.month == Time.now.month &amp;&amp; today.day == Time.now.day %&gt;
      &lt;b&gt;&lt; %= 'Today' %&gt;&lt;/b&gt;
    &lt; % else %&gt;
      &lt; %= _(today.strftime(&quot;%a&quot;)) +', '+ today.to_s(:date) %&gt;
    &lt; % end %&gt;
  &lt;/div&gt;
&lt; % end %&gt;
&nbsp;
&lt; % tops = Array.new(@scope + 1, '')
@events.each do |event|
&nbsp;
  # Exclude recurrence rule hack
  today = (@today+(60*60*24*event['day']))
  exme = false
  event['data'].propvaluearray('EXDATE').each do |exdate|
    exdate = exdate.to_time
    exme = true if today.year == exdate.year &amp;&amp; today.mon == exdate.mon &amp;&amp; today.day == exdate.day
  end
  next if exme # Skip this event
&nbsp;
  if event['allday']
    # All-day events will be inserted later
    tops[event['day']] += '&amp;nbsp; ' + event['data'].summary.to_s + '&lt;br/&gt;'
  else 
    eventheight = ((event['duration']/15)*height).round
    eventheight = minh if eventheight &lt; minh
    %&gt;
    &lt;div id=&quot;ical_event&quot;
      style=&quot; background: #<span style="color:#006600; font-weight:bold;">&lt;%</span>= eventcolor<span style="color:#006600; font-weight:bold;">&#40;</span>event<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'category'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>;
              width:  &lt; %= width-2 %&gt;px;
              height: &lt; %= eventheight.to_s %&gt;px;
              top:    &lt; %= event['start'].hour*height*4 + (event['start'].min/15)*6 + buffer - cutmornings %&gt;px;
              left:   &lt; %= event['day']*width + event['day']*10 %&gt;px;&quot;&gt;
      &lt; %= '&lt;b&gt;'+ event['start'].to_s(:time) +' - '+ event['end'].to_s(:time) +'&lt;br /&gt;' %&gt;
      &lt; %= event['data'].summary %&gt;
    &lt;/div&gt;
  &lt; % end %&gt;
&lt; % end %&gt;
&nbsp;
&lt; % tops.each_with_index do |top, day| %&gt;
    &lt;div id=&quot;ical_event_top&quot;
      style=&quot; width: <span style="color:#006600; font-weight:bold;">&lt;%</span>= width<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">2</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>px;
              height: &lt; %= height %&gt;px;
              top: &lt; %= buffer %&gt;px;
              left: &lt; %= day * width + day * 10 %&gt;px;&quot;&gt;
      &lt; %= top %&gt;
    &lt;/div&gt;
&lt; % end %&gt;
&nbsp;
&lt;div id=&quot;vertical_spacer&quot; style=&quot;height: <span style="color:#006600; font-weight:bold;">&lt;%</span>= height<span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">96</span> <span style="color:#006600; font-weight:bold;">+</span> buffer<span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">2</span> <span style="color:#006600; font-weight:bold;">-</span> cutmornings <span style="color:#006600; font-weight:bold;">%&gt;</span>px;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&nbsp;
&lt;/div&gt;</pre></td></tr></table></div>

<p><strong><em>Layout View</em></strong> (views/layouts/calendars.html.erb)</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">        <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">%</span> form_tag <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'calendars'</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#ff3333; font-weight:bold;">:id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">nil</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
          <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">%</span>= date_select<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;options&quot;</span>, <span style="color:#996600;">&quot;date&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:default</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0066ff; font-weight:bold;">@today</span>, <span style="color:#ff3333; font-weight:bold;">:order</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span>:<span style="color:#5A0A0A; font-weight:bold;">day</span>, :<span style="color:#5A0A0A; font-weight:bold;">month</span>, <span style="color:#ff3333; font-weight:bold;">:year</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
            <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">%</span>= submit_tag <span style="color:#996600;">'Show'</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' &amp;raquo;'</span>, :<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'date_button'</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
        <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#006600; font-weight:bold;">%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span></pre></div></div>

<p><strong><em>Helper (for coloring events)</em></strong> (app/helpers/calendar_helper.rb)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> CalendarsHelper
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> eventcolor<span style="color:#006600; font-weight:bold;">&#40;</span>category<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">case</span> category  
      <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">'Wichtig'</span>   <span style="color:#008000; font-style:italic;"># This is the name of the .ics file</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'f66'</span>
      <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">'Sonstiges'</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'4f4'</span>
      <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">'Studium'</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'fb4'</span>
      <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">'Privat'</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'77f'</span>
      <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#996600;">'Freunde'</span>
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'f4f'</span>
      <span style="color:#9966CC; font-weight:bold;">else</span>  
        <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#996600;">'fb4'</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p><strong><em>Stylesheet</em></strong> (public/stylesheets/calendar.css)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/**************** DIVs ***************************/</span>
&nbsp;
div<span style="color: #cc00cc;">#action</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">4px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #cc00cc;">#ical_day</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.otherday</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddd</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.sunday</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fdd</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.saturday</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddf</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#ical_event</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #cc00cc;">#555</span> <span style="color: #993333;">solid</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fb4</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">8px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#ical_event_top</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">9px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/**************** Fonts ***************************/</span>
&nbsp;
<span style="color: #cc00cc;">#title</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ddd</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">11px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">16px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#title</span> <span style="color: #6666ff;">.description</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#777</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p><strong><em>Routes (could be optional)</em></strong> (config/routes.rb)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="rails" style="font-family:monospace;">  <span style="color:#008000; font-style:italic;"># CALENDAR Controllers</span>
  map.<span style="color:#9900CC;">connect</span> <span style="color:#996600;">'calendar'</span>, <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'calendars'</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/02/10/finally-railsicalendar-ical-ics-publish-with-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Apple Mail.app+PGP, E-Mailadresse eines PGP-Key ändern, Safari&#160;&#8220;Firebug&#8221;</title>
		<link>http://funkensturm.de/2008/02/09/apple-mailapppgp-e-mailadresse-eines-pgp-key-andern-safari-firebug/</link>
		<comments>http://funkensturm.de/2008/02/09/apple-mailapppgp-e-mailadresse-eines-pgp-key-andern-safari-firebug/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 08:31:36 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[html/css]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[quellcode]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[web inspector]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2008/02/09/apple-mailapppgp-e-mailadresse-eines-pgp-key-andern-safari-firebug/</guid>
		<description><![CDATA[Ich bin auf ein paar Artikel gestoßen die wirklich interessant für Mac-User sind. Ich habe Mail.app und Safari.app völlig unterschätzt. Zum einen möchte ich auf drei Artikel von Dirk Einecke hinweisen. Sie beschreiben sehr ausführlich und sehr leicht verständlich, wie PGP mit Mail.app zusammenarbeitet. Ich bin von Thunderbird sofort auf Mail.app umgestiegen, weil ich es [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin auf ein paar Artikel gestoßen die wirklich interessant für Mac-User sind. Ich habe Mail.app und Safari.app völlig unterschätzt.</p>
<p>Zum einen möchte ich auf drei Artikel von Dirk Einecke hinweisen. Sie beschreiben sehr ausführlich und sehr leicht verständlich, wie <strong>PGP mit Mail.app</strong> zusammenarbeitet. Ich bin von Thunderbird sofort auf Mail.app umgestiegen, weil ich es bisher, wie gesagt, unterschätzt habe:</p>
<p><a href="http://blog.dirkeinecke.de/2008/01/apple-mail-und-pgp.html" onclick="pageTracker._trackPageview('/outgoing/blog.dirkeinecke.de/2008/01/apple-mail-und-pgp.html?referer=');">http://blog.dirkeinecke.de/2008/01/apple-mail-und-pgp.html</a></p>
<p>Des Weiteren beschreibt er, wie man von einem Key den man mal erstellt hat, die <strong>Emailadresse usw. ändern</strong> kann. Sehr schön beschrieben:</p>
<p><a href="http://blog.dirkeinecke.de/2008/01/e-mail-adresse-pgp-gpg-key-hinzufuegen.html" onclick="pageTracker._trackPageview('/outgoing/blog.dirkeinecke.de/2008/01/e-mail-adresse-pgp-gpg-key-hinzufuegen.html?referer=');">http://blog.dirkeinecke.de/2008/01/e-mail-adresse-pgp-gpg-key-hinzufuegen.html</a></p>
<p>Und dann noch eine Anleitung zum <strong>Backup seiner Keys</strong>. Alles mit tollen Bildchen dokumentiert :)</p>
<p><a href="http://blog.dirkeinecke.de/2008/01/pgp-gpg-schluessel-backup.html" onclick="pageTracker._trackPageview('/outgoing/blog.dirkeinecke.de/2008/01/pgp-gpg-schluessel-backup.html?referer=');">http://blog.dirkeinecke.de/2008/01/pgp-gpg-schluessel-backup.html</a></p>
<p>Und hier ein weiteres richtiges Schmuckstück. Der integrierte <strong>Safari Web Inspector</strong>. Es handelt sich um eine Art &#8220;Firebug&#8221; (das ist ein Firefox-Plugin) für Safari 3.0 &#8211; nur built-in. Damit kann man seine Webseiten debuggen, analysieren usw.</p>
<p><a href="http://www.agenturblog.de/2007-11/der-safari-web-inspector/" onclick="pageTracker._trackPageview('/outgoing/www.agenturblog.de/2007-11/der-safari-web-inspector/?referer=');">http://www.agenturblog.de/2007-11/der-safari-web-inspector/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/02/09/apple-mailapppgp-e-mailadresse-eines-pgp-key-andern-safari-firebug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mit Mac und Imagemagick: Tiff Bild&#160;reparieren</title>
		<link>http://funkensturm.de/2008/01/09/mit-mac-und-imagemagick-tiff-bild-reparieren/</link>
		<comments>http://funkensturm.de/2008/01/09/mit-mac-und-imagemagick-tiff-bild-reparieren/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 23:31:38 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[repair]]></category>
		<category><![CDATA[reparieren]]></category>
		<category><![CDATA[rmagick]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[tiff]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2008/01/09/mit-mac-und-imagemagick-tiff-bild-reparieren/</guid>
		<description><![CDATA[Ich habe eben eine Tiff-Datei erhalten und kein Programm auf meinem Mac konnte sie öffnen. Ich habe zwar die Vorschau gesehen aber sie ließ sich einfach nicht öffnen. Ein Blick in die Datei mit TextMate zeigte nur, dass die Datei mit Photoshop für Mac gespeichert wurde und schien auch sonst korrekt zu sein. Schließlich habe [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe eben eine Tiff-Datei erhalten und kein Programm auf meinem Mac konnte sie öffnen. Ich habe zwar die Vorschau gesehen aber sie ließ sich einfach nicht öffnen.</p>
<p>Ein Blick in die Datei mit TextMate zeigte nur, dass die Datei mit Photoshop für Mac gespeichert wurde und schien auch sonst korrekt zu sein.</p>
<p>Schließlich habe ich erfahren, dass man <a href="http://blog.funkensturm.de/index.php?s=imagemagick">ImageMagick</a> zum konvertieren natürlich auch lokal ausführen kann.</p>
<p>Ein kurzer Befehl ließ auf Erfolg hoffen:</p>
<p>convert kaputt.tiff test.tiff</p>
<p>Und siehe da &#8211; ImageMagick hat allen Fehlermeldungen anderer Programme zum Trotz das Ding problemlos in eine &#8220;korrekte&#8221; TIFF-Datei umgewandelt.</p>
<p><b><font color="#f00">UPDATE:</font></b><br />
<b>Thomas</b> hat im Kommentar erklärt, worin das TIFF-Problem besteht. Vielen Dank!</p>
<p><b>derJan</b> hat im Kommentar auf <a href="http://www.apfelquak.de/2007/11/19/sips-bildbearbeitung-via-terminal/" onclick="pageTracker._trackPageview('/outgoing/www.apfelquak.de/2007/11/19/sips-bildbearbeitung-via-terminal/?referer=');">seinen Beitrag über sips</a> hingewiesen und hier ist das Ergebnis mit meinem Tiff-Reparatur-Experiment:</p>
<p>Versuch von TIFF in TIFF:</p>
<p>$ sips -s format tiff kaputt.tif &#8211;out test.tif<br />
  /Users/future/Desktop/kaputt.tif<br />
  Error: Cannot extract image from file.<br />
  /Users/future/Desktop/test.tif</p>
<p>Von TIFF in JPG:</p>
<p>$ sips -s format jpg kaputt.tif &#8211;out test.jpg<br />
  /Users/future/Desktop/kaputt.tif<br />
  Error: Cannot extract image from file.<br />
  /Users/future/Desktop/test.jpg</p>
<p>Sip (der integrierte Shell-Image-Editor von Mac OS X) hat es also nicht geschafft.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2008/01/09/mit-mac-und-imagemagick-tiff-bild-reparieren/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HowTo: ImageMagick + RMagick via Macports für&#160;Tiger</title>
		<link>http://funkensturm.de/2007/11/12/howto-imagemagick-rmagick-via-macports-fur-tiger/</link>
		<comments>http://funkensturm.de/2007/11/12/howto-imagemagick-rmagick-via-macports-fur-tiger/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 09:46:20 +0000</pubDate>
		<dc:creator>manuel</dc:creator>
				<category><![CDATA[gems]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[rmagick]]></category>
		<category><![CDATA[tiger]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2007/11/12/howto-imagemagick-rmagick-via-macports-fur-tiger/</guid>
		<description><![CDATA[Nach dem ich nun auch RMagick für ein aktuelles Projekt brauchte, dachte ich ich nehm einfach die Anleitung von hier (ok steht ja schon im Posttitel ist für Leopard und nicht für Tiger) Das hat natürlich nicht funktioniert und mich min. 2 h gekostet. Deshalb hier die Anleitung für Mac OS X Tiger: Dauert ewig, [...]]]></description>
			<content:encoded><![CDATA[<p>Nach dem ich nun auch RMagick für ein aktuelles Projekt brauchte, dachte ich ich nehm einfach die Anleitung von <a href="http://nullstyle.com/2007/10/27/how-to-build-imagemagick-and-install-rmagick-with-macports-on-mac-os-x-leopard/" onclick="pageTracker._trackPageview('/outgoing/nullstyle.com/2007/10/27/how-to-build-imagemagick-and-install-rmagick-with-macports-on-mac-os-x-leopard/?referer=');">hier</a> (ok steht ja schon im Posttitel ist für Leopard und nicht für Tiger) Das hat natürlich nicht funktioniert und mich min. 2 h gekostet. Deshalb hier die Anleitung für Mac OS X Tiger:</p>
<p>Dauert ewig, für ImageMagick wird erst mal das ganze XFree86 Zeug und noch sonstige Sachen runter geladen. RMagick muss dann noch die ganzen Fonts einbinden, das dauert auch&#8230;</p>
<p><code><br />
sudo port install ImageMagick<br />
sudo port install libwmf<br />
sudo port install lcms<br />
sudo port install ghostscript<br />
sudo gem install rmagick -y<br />
</code></p>
<p>Das Problem war einfach, dass die 3 anderen Port-Installationen gefehlt haben. Ich glaub es lag eigentlich nur an der fehlenden ghostscript Installation.</p>
<p>Dank geht <a href="http://blog.labratz.net/articles/2006/10/10/really-truly-getting-imagemagick-rmagick-working-on-osx-from-source-without-using-macports-darwinports-or-fink" onclick="pageTracker._trackPageview('/outgoing/blog.labratz.net/articles/2006/10/10/really-truly-getting-imagemagick-rmagick-working-on-osx-from-source-without-using-macports-darwinports-or-fink?referer=');">hier</a> noch hin, da gab es die Lösung.</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2007/11/12/howto-imagemagick-rmagick-via-macports-fur-tiger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tiger -&gt; Leopard =&#160;smoooth!</title>
		<link>http://funkensturm.de/2007/10/27/tiger-leopard-smoooth/</link>
		<comments>http://funkensturm.de/2007/10/27/tiger-leopard-smoooth/#comments</comments>
		<pubDate>Sat, 27 Oct 2007 08:00:38 +0000</pubDate>
		<dc:creator>Captain Future</dc:creator>
				<category><![CDATA[mac os x]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[tiger]]></category>

		<guid isPermaLink="false">http://blog.funkensturm.de/2007/10/27/tiger-leopard-smoooth/</guid>
		<description><![CDATA[45 Minuten bis zum Glück bei Gravis. In der Reihe habe ich dann noch Weissgerberchen getroffen und ihm gleich ein Leopard mitgekauft, weil er noch ganz hinten in der Schlange stand :) Vor der Installation von Leopard habe ich von Tiger nur den User- Library-Ordner gesichert. So war es mir möglich alle Programm- und Systemeinstellungen [...]]]></description>
			<content:encoded><![CDATA[<p>45 Minuten bis zum Glück bei Gravis. In der Reihe habe ich dann noch Weissgerberchen getroffen und ihm gleich ein Leopard mitgekauft, weil er noch ganz hinten in der Schlange stand :)</p>
<p><center><br />
<img src='http://blog.funkensturm.de/wp-content/uploads/2007/10/dsc08422_300.jpg' alt='dsc08422_300.jpg' /></p>
<p><img src='http://blog.funkensturm.de/wp-content/uploads/2007/10/dsc08423_300.jpg' alt='dsc08423_300.jpg' /><br />
</center><br />
Vor der Installation von Leopard habe ich von Tiger nur den User- Library-Ordner gesichert. So war es mir möglich alle Programm- und Systemeinstellungen mit einem einfachen Drag-and-Drop des Programm-Verzeichnisses in ApplicationSupport zu übernehmen.</p>
<p>Die Umstellung hat nur etwa 2-3 Stunden gedauert. Verlief ohne Probleme.</p>
<p>BIS AUF meine PGP-Keys :)</p>
<p><b>Update:</b> Auch meine lokale mysql Datenbank war futsch :) Hätt ich ja mal dran denken können!!! Liegt ja auch nicht in der Library.</p>
<p>Die liegen nämlich in .gnupg in der (User?) Library und wurden nicht mit kopiert. Also macht nicht den gleichen Fehler ;) Zum Glück hatte ich ein Backup auf einer CD davon.</p>
<p>So, jetzt muss ich nur noch rausfinden, wie ich mein Rails-Projekt zum starten kriege :) Wenn ich es geschafft habe, verrate ich es euch!</p>
<p>Vielleicht als Anmerkung: Ich bin auf Safari umgestiegen, weil es nunmal einfach schneller ist. Nur: Adblocking gibt es nicht und Cookies kann ich auch nicht für nur bestimmte Seiten erlauben. Und da die sogenannte &#8220;InputManagers&#8221;-Plugin-Funktion nicht mehr geht, gibt es auch keine Plugins dafür&#8230; Mal abwarten was da passiert.</p>
<p>PS: Da alle Menschen auf der Welt (bis auf Steve Jobs) Leopard zur gleichen Zeit erhalten haben &#8211; nämlich gestern Abend &#8211; gibt es auch so gut wie keine Blog-Einträge über Features und Probleme. Das heißt für mich: Ran an die Bouletten und unter den Ersten sein :)</p>
]]></content:encoded>
			<wfw:commentRss>http://funkensturm.de/2007/10/27/tiger-leopard-smoooth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
