<?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>dergraf.net &#187; Web</title>
	<atom:link href="http://dergraf.net/tags/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://dergraf.net</link>
	<description>Software und Dinge</description>
	<lastBuildDate>Thu, 17 Jun 2010 09:53:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Neue Safari Extension: Reconnect</title>
		<link>http://dergraf.net/2010/06/neue-safari-extension-reconnect/</link>
		<comments>http://dergraf.net/2010/06/neue-safari-extension-reconnect/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 14:00:26 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=110</guid>
		<description><![CDATA[So, heute gibt es meine zweite Safari-Erweiterung &#8220;Reconnect&#8220;. Die Seite ist im Moment nur englisch, aber der Rest kommt noch.]]></description>
			<content:encoded><![CDATA[<p>So, heute gibt es meine zweite Safari-Erweiterung &#8220;<a href="/reconnect/">Reconnect</a>&#8220;. Die Seite ist im Moment nur englisch, aber der Rest kommt noch.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2010/06/neue-safari-extension-reconnect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Safari 5 mit Extensions</title>
		<link>http://dergraf.net/2010/06/safari-5-extensions/</link>
		<comments>http://dergraf.net/2010/06/safari-5-extensions/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 12:47:28 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=94</guid>
		<description><![CDATA[Seit gestern gibt es die neue Version von Apples Web-Browser Safari 5. Die wohl größte Neuerung ist die Möglichkeit Erweiterungen für den Browser aus CSS und JavaScript zu erstellen. Hier gibt es eine Liste mit (fast?) allen verfügbaren Erweiterungen bis Apple später im Sommer eine eigene Galerie anbietet. Ich selber habe mich auch mal da [...]]]></description>
			<content:encoded><![CDATA[<p>Seit gestern gibt es die neue Version von Apples Web-Browser <a href="http://www.apple.com/de/safari/">Safari 5</a>. Die wohl größte Neuerung ist die Möglichkeit Erweiterungen für den Browser aus CSS und JavaScript zu erstellen. <a href="http://safariextensions.tumblr.com/">Hier</a> gibt es eine Liste mit (fast?) allen verfügbaren Erweiterungen bis Apple später im Sommer eine eigene Galerie anbietet.</p>
<div>Ich selber habe mich auch mal da dran gewagt und schnell die Erweiterung &#8220;<a href="/blocktarget/">BlockTarget</a>&#8221; zusammengebastelt. Das Skript dafür zu schreiben war einfach und ging schnell. Das ganze drumherum war aber nicht so optimal:</div>
<div>
<ul>
<li>Man benötigt ein Entwickler-Zertifikat welches man sich bei Apple kostenlos erstellen kann. Aus irgend einem Grund ging das ganze aber nicht in Safari, mit Firefox funktionierte das aber ohne Probleme.</li>
<li>Der &#8220;Extension Builder&#8221; wurde wohl sehr eilig übersetzt, die deutsche Übersetzung ist wirklich nicht gut, da wäre es wohl besser gewesen das Teil auf englisch zu lassen.</li>
<li>Außerdem scheint es im Moment keine Möglichkeit zu geben die Extensions komplett zu lokalisieren. Die Beschreibung und den Namen kann man über eine lokalisierte &#8220;InfoPlist.strings&#8221;-Datei übersetzen, aber für die Einstellungen gibt es wohl (noch?) nichts.</li>
</ul>
</div>
<p>Ich gehe mal davon aus, dass das noch besser wird. Im Moment kann man die Extensions ja auch nur über das Entwickler-Menü aktivieren. Bis die offizielle Extension-Galerie startet wird sich da also sowieso noch etwas tun müssen.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2010/06/safari-5-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intensedebate kommt weg!</title>
		<link>http://dergraf.net/2010/06/intensedebate-kommt-weg/</link>
		<comments>http://dergraf.net/2010/06/intensedebate-kommt-weg/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 08:57:00 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[intensedebate]]></category>
		<category><![CDATA[privatsphäre]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=82</guid>
		<description><![CDATA[Ich hatte hier in meinem Blog eine Zeit lang Intensedebate für die Kommentar-Funktion verwendet. Bis ich vor ein paar Tagen bemerkt habe, dass die meine Besucher per 1-Pixel-Gif von Quantcast verfolgen. Also kommt das weg. Ich mag es nicht, wenn Webseiten ihre eigenen Benutzer über solche Dienste wie Quantcast oder auch Google Analytics ausspionieren. Die [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte hier in meinem Blog eine Zeit lang <a href="http://intensedebate.com/">Intensedebate</a> für die Kommentar-Funktion verwendet. Bis ich vor ein paar Tagen bemerkt habe, dass die meine Besucher per 1-Pixel-Gif von <a href="http://www.quantcast.com/">Quantcast</a> verfolgen. Also kommt das weg.</p>
<p>Ich mag es nicht, wenn Webseiten ihre eigenen Benutzer über solche Dienste wie Quantcast oder auch Google Analytics ausspionieren. Die Server-Logfiles sollten vollkommen genügen. Vollkommen daneben ist es aber, wenn man einen Dienst anbietet und damit solchen Tracking-Code ohne zu Fragen oder auch nur darauf hinzuweisen, in die Seiten von anderen einbaut.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2010/06/intensedebate-kommt-weg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave</title>
		<link>http://dergraf.net/2010/02/google-wave/</link>
		<comments>http://dergraf.net/2010/02/google-wave/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 13:55:35 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=59</guid>
		<description><![CDATA[So, jetzt habe ich auch mal einen Account bei Google Wave bekommen. Insgesamt zwar ganz nett, aber ob das wirklich mal Email ersetzen wird kann ich mir nicht vorstellen. Vielleicht irgendwann mal wenn es Desktop-Clients dazu gibt. Insgesamt kann ich 25 Einladungen zu Wave vergeben. Wer das also auch mal ausprobieren will kann sich bei [...]]]></description>
			<content:encoded><![CDATA[<p>So, jetzt habe ich auch mal einen Account bei <a href="https://wave.google.com">Google Wave</a> bekommen. Insgesamt zwar ganz nett, aber ob das wirklich mal Email ersetzen wird kann ich mir nicht vorstellen. Vielleicht irgendwann mal wenn es Desktop-Clients dazu gibt.</p>
<p>Insgesamt kann ich 25 Einladungen zu Wave vergeben. Wer das also auch mal ausprobieren will kann sich bei mir melden.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2010/02/google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoralCDN für WordPress-Uploads</title>
		<link>http://dergraf.net/2009/08/coralcdn-wordpress/</link>
		<comments>http://dergraf.net/2009/08/coralcdn-wordpress/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 09:19:17 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bandbreite]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=50</guid>
		<description><![CDATA[Um Bandbreite zu sparen und (vielleicht) die Downloads von Dateien zu beschleunigen folgendes in die .htaccess-Datei im wp-contents/uploads-Verzeichnis von WordPress schreiben: RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx RewriteCond %{QUERY_STRING} !^coral-no-serve RewriteRule ^(.*)$ http://%{HTTP_HOST}.nyud.net:8090/wp-content/uploads/$1 [R,L] Damit werden alle Zugriffe auf Dateien auf die Server von CoralCDN umgeleitet. Das ganze funktioniert natürlich auch in anderen Ordnern, es muss nur [...]]]></description>
			<content:encoded><![CDATA[<p>Um Bandbreite zu sparen und (vielleicht) die Downloads von Dateien zu beschleunigen folgendes in die <em>.htaccess</em>-Datei im <em>wp-contents/uploads</em>-Verzeichnis von WordPress schreiben:</p>
<p><code>RewriteEngine on<br />
RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx<br />
RewriteCond %{QUERY_STRING} !^coral-no-serve<br />
RewriteRule ^(.*)$ http://%{HTTP_HOST}.nyud.net:8090/wp-content/uploads/$1 [R,L]</code></p>
<p>Damit werden alle Zugriffe auf Dateien auf die Server von <a title="The Coral Content Distribution Network" href="http://www.coralcdn.org/">CoralCDN</a> umgeleitet.</p>
<p>Das ganze funktioniert natürlich auch in anderen Ordnern, es muss nur die URL in der letzten Zeile entsprechend angepasst werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2009/08/coralcdn-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP-Request in Objective-C/Cocoa</title>
		<link>http://dergraf.net/2009/07/http-request/</link>
		<comments>http://dergraf.net/2009/07/http-request/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 17:09:30 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=33</guid>
		<description><![CDATA[Bei Experimenten mit dem Open-Xchange HTTP-API habe ich die Klasse HTTPRequest für Cocoa entwickelt. Die Klasse verwendet das Cocoa JSON-Framework, um die vom Server gelieferten JSON-Daten zu parsen. Hier der Code: HTTPRequest.m HTTPRequest.h Ich stelle den Code so wie er ist als Public Domain zur Verfügung. Macht damit was ihr wollt, aber gebt mir nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Bei Experimenten mit dem <a href="http://www.open-xchange.com/de">Open-Xchange</a> <a href="http://www.open-xchange.com/wiki/index.php?title=HTTP_API">HTTP-API</a> habe ich die Klasse HTTPRequest für Cocoa entwickelt. Die Klasse verwendet das <a href="http://code.google.com/p/json-framework/">Cocoa JSON-Framework</a>, um die vom Server gelieferten JSON-Daten zu parsen.</p>
<p>Hier der Code:</p>
<ul>
<li><a href="http://dergraf.net/wp-content/uploads/2009/07/HTTPRequest.m">HTTPRequest.m</a></li>
<li><a href="http://dergraf.net/wp-content/uploads/2009/07/HTTPRequest.h">HTTPRequest.h</a></li>
</ul>
<p><small>Ich stelle den Code so wie er ist als Public Domain zur Verfügung. Macht damit was ihr wollt, aber gebt mir nicht die Schuld wenn er irgend etwas unerwartetes tut. Ich würde mich freuen darüber zu hören, wenn ihr ihn benutzt oder wie ihr ihn verbessert.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2009/07/http-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Events-Calendar in iCal</title>
		<link>http://dergraf.net/2008/11/wp-icalendar/</link>
		<comments>http://dergraf.net/2008/11/wp-icalendar/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 11:52:23 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Skript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=18</guid>
		<description><![CDATA[Das WordPress-Plugin Events Calendar erlaubt es einen einfachen Terminkalender in ein WordPress-Blog einzubinden.  Über ein Web-Interface kann man einfach Termine anlegen, die dann im Blog in einem kleinem Kalender oder als Liste angezeigt werden. Ich (und ich denke auch viele andere Leute) würden diese Termine auch ganz gerne in ihrem Desktop-Kalender (bei mir Apple iCal) [...]]]></description>
			<content:encoded><![CDATA[<p>Das WordPress-Plugin <a title="Plugin Events Calendar" href="http://wordpress.org/extend/plugins/events-calendar/">Events Calendar</a> erlaubt es einen einfachen Terminkalender in ein WordPress-Blog einzubinden.  Über ein Web-Interface kann man einfach Termine anlegen, die dann im Blog in einem kleinem Kalender oder als Liste angezeigt werden.</p>
<p>Ich (und ich denke auch viele andere Leute) würden diese Termine auch ganz gerne in ihrem Desktop-Kalender (bei mir Apple iCal) angezeigt bekommen. Genau dafür habe ich ein kleines PHP-Skript gebastelt dass die Datenbank des Plugins im iCalendar-Format ausgibt.</p>
<p>Hier das Skript: <a href="http://dergraf.net/wp-content/uploads/2008/11/ical.phps">ical.php</a></p>
<p>Einfach die Zugangsdaten für die Datenbank eintragen und irgendwo auf dem Webserver ablegen. Getestet habe ich das ganze mit Apple iCal und Mozilla Sunbird. Funktioniert so wie es soll, ich übernehme aber keinerlei Verantwortung, falls etwas schiefgehen sollte.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2008/11/wp-icalendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dateirechte und ACLs</title>
		<link>http://dergraf.net/2008/10/acl/</link>
		<comments>http://dergraf.net/2008/10/acl/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 17:37:49 +0000</pubDate>
		<dc:creator>Sven Weidauer</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://dergraf.net/?p=10</guid>
		<description><![CDATA[Mit den Standard-Unix-Dateiberechtigungen für Besitzer, Gruppe und den Rest kann man schon einiges machen, man stößt aber recht schnell an die Grenzen. Ich hatte folgende Situation: Mehrere Benutzer sollen eine Webseite bearbeiten können Der Web-Server muss die Dateien natürlich lesen können um sie auszuliefern Um über ein PHP-Skript Dateien hochladen zu können muss der Web-Server [...]]]></description>
			<content:encoded><![CDATA[<p>Mit den Standard-Unix-Dateiberechtigungen für Besitzer, Gruppe und den Rest kann man schon einiges machen, man stößt aber recht schnell an die Grenzen. Ich hatte folgende Situation:</p>
<ol>
<li>Mehrere Benutzer sollen eine Webseite bearbeiten können</li>
<li>Der Web-Server muss die Dateien natürlich lesen können um sie auszuliefern</li>
<li>Um über ein PHP-Skript Dateien hochladen zu können muss der Web-Server in einen Ordner schreiben dürfen. Aus Sicherheitsgründen soll er auch nur in diesen Ordner schreiben dürfen.</li>
</ol>
<p><span id="more-10"></span></p>
<p>So kann man das alles lösen:</p>
<blockquote><p>mkdir <em>www</em></p>
<p>chown <em>besitzer</em>:<em>bearbeiter</em> <em>www</em></p>
<p>chmod u=rwx,g=rwx,o= <em>www</em></p></blockquote>
<p>Damit legt man ein Verzeichnis an und legt den Besitzer &#8220;<em>B</em><em>esitzer</em>&#8221; und die Gruppe &#8220;<em>B</em><em>earbeiter</em>&#8221; fest. <em>Besitzer</em> und alle in <em>Bearbeiter</em> dürfen alles in dem Verzeichnis, sonst darf niemand etwas. Bis jetzt darf der Web-Server auch nichts.</p>
<p>Um das zu lösen könnte man ihn (also den Benutzer <em>www-data</em>) einfach mit in die Gruppe <em>Bearbeiter</em> aufnehmen. Dadurch kann er aber überall hin schreiben, was ja nicht gewünscht ist. Hier kommen dann die ACLs ins Spiel.</p>
<blockquote><p>setfacl -m u:<em>www-data</em>:r-x <em>www</em></p>
<p>setfacl -m d:u:<em>www-data</em>:r-x <em>www</em></p></blockquote>
<p>Als erstes wird Bekommt der Benutzer (u:) <em>www-data</em> das Recht das Verzeichnis zu lesen und zu betreten (r-x). Und danach wird ein Standard-Eintrag (d:) angelegt, der dem Benutzer <em>www-data</em> diese Rechte auch für alle im Ordner www neu angelegten Ordner und Dateien erteilt.</p>
<p>Der Upload-Ordner, der ja vom Webserver beschrieben werden muss, kann mit</p>
<blockquote><p>setfacl -m u:<em>www-data</em>:rwx <em>upload</em></p>
<p>setfacl -m d:u:<em>www-data</em>:rwx <em>upload</em></p></blockquote>
<p>für den Webserver freigegeben werden. Die zweite Zeile ist nur nötig, wenn der Webserver auch Unterordner anlegen und darin schreiben soll. Ansonsten ist die Standard-ACL nicht nötig.</p>
<p>Jetzt bleibt allerdings noch ein Problem zu lösen: Die Dateien und Ordner, die der Webserver anlegt werden für die Benutzer, die die Webseite bearbeiten können nicht erreichbar sein, da sie dem Webserver und dessen Gruppe gehören. Hiermit kann man das lösen:</p>
<blockquote><p>chmod g+s <em>www</em></p>
<p>setfacl -m d:u:<em>besitzer</em>:rwx <em>www</em></p></blockquote>
<p>Erst wird das SetGid-Bit gesetzt. Das bedeutet, dass alle neu angelegten Ordner der selben Gruppe gehören wie der übergeordnete Ordner. Und als letztes wird noch eine Standard-ACL gesetzt, die dem Besitzer alle Rechte gibt. Nicht unbedingt nötig, aber sicher ist sicher.</p>
<p>Das einfachste ist, man macht das alles bevor man irgend welche Dateien in dem Ordner ablegt. Ansonsten muss man bei chmod, chown und setfacl mit der Option -R rekursiv alle Dateien und Ordner bearbeiten und hinterher alles noch einmal überprüfen.</p>
<p>Hier noch einmal die ACL-Befehle im Überblick:</p>
<ul>
<li>setfacl -m (d:)u:<em>benutzername</em>:rwx datei &#8212; legt die Rechte für einen Benutzer fest.</li>
<li>setfacl -m (d:)g:<em>gruppenname</em>:rwx  datei &#8212; legt die Rechte für eine Gruppe fest.</li>
</ul>
<p>Wenn &#8220;d:&#8221; für einen Ordner angegeben wird wird die angegeben ACL an neue Objekte in dem Ordner vererbt. rwx sind die Standard-Unix-Rechte. Die Rechte, die nicht gegeben werden sollen werden durch ein &#8220;-&#8221; ersetzt.</p>
<p>Der Befehl getfacl zeigt die gesetzten Rechte an.</p>
]]></content:encoded>
			<wfw:commentRss>http://dergraf.net/2008/10/acl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
