<?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>Die Welt ist gar nicht so. &#187; gajim</title>
	<atom:link href="http://blog.dieweltistgarnichtso.net/tag/gajim/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.dieweltistgarnichtso.net</link>
	<description>Sie ist ganz anders.</description>
	<lastBuildDate>Mon, 23 Sep 2013 15:41:20 +0000</lastBuildDate>
	<language>de-DE</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.35</generator>
	<item>
		<title>25C3-Nachlese: The Conspiracy of Awesome</title>
		<link>http://blog.dieweltistgarnichtso.net/25c3-nachlese-the-conspiracy-of-awesome</link>
		<comments>http://blog.dieweltistgarnichtso.net/25c3-nachlese-the-conspiracy-of-awesome#comments</comments>
		<pubDate>Fri, 02 Jan 2009 02:26:33 +0000</pubDate>
		<dc:creator><![CDATA[erlehmann]]></dc:creator>
				<category><![CDATA[Bastelei]]></category>
		<category><![CDATA[Essen]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Originärer Inhalt]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Spiele]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[25c3]]></category>
		<category><![CDATA[defacement]]></category>
		<category><![CDATA[gajim]]></category>
		<category><![CDATA[jeopardy]]></category>
		<category><![CDATA[lego]]></category>
		<category><![CDATA[motivator]]></category>
		<category><![CDATA[party]]></category>

		<guid isPermaLink="false">http://blog.dieweltistgarnichtso.net/?p=286</guid>
		<description><![CDATA[So, nun, da der Congress vorbei ist, hier eine kurze und höchst subjektive Auflistung der Highlights: Gleich am ersten Tag reichte mir js einen Patch rüber, der TCP-Keepalive in Gajim aktivierte und extrem hilfreich war gegen die unregelmäßigen Aussetzer im &#8230; <a href="http://blog.dieweltistgarnichtso.net/25c3-nachlese-the-conspiracy-of-awesome">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>
So, nun, da der <a href="http://events.ccc.de/congress/2008">Congress</a> vorbei ist, hier eine kurze und höchst subjektive Auflistung der Highlights:
</p>
<ul>
<li>
Gleich am ersten Tag reichte mir <a href="https://webkeks.org/blog/">js</a> einen Patch rüber, der <abbr title="Transmission Control Protocol">TCP</abbr>-<a href="http://de.wikipedia.org/wiki/Keepalive">Keepalive</a> in <a href="http://www.gajim.org/">Gajim</a> aktivierte und extrem hilfreich war gegen die unregelmäßigen Aussetzer im <abbr title="Wireless Local Area Network">WLAN</abbr>.
</li>
<li>
Es gab ein <a href="http://events.ccc.de/congress/2008/wiki/Lego_Area"><del>Lego</del> <ins>Duplo</ins>-Areal</a>, dass beinahe immer von mehr Erwachsenen als Kindern bevölkert war (<a href="http://www.flickr.com/search/?q=25c3%20lego">mehr Fotos</a> auf Flickr).
</li>
<li>
Das <a href="http://events.ccc.de/congress/2008/wiki/POC"><abbr title="Phone Operation Center">POC</abbr></a> hatte einige nette Spielereien vorzuweisen: Hinter der internen Nummer 2088 (?) verbarg sich ein interaktives Labyrinth; mit den Nummern 8080 und 9090 erreichte man eine Konferenzschaltung; bei der 8666 handelte es sich um eine Sex-Hotline mit eingedostem Gestöhne (<q>Für „Zwei Männer und eine Frau“ wählen sie die Drei.</q>).
</li>
<li>
Beeindruckt war ich insbesondere von der <a href="http://www.youtube.com/watch?v=SZ0xY1oAsrI">Laserharfe</a>, <a href="http://www.withoutatraceroute.com/2008/12/25c3-arrival/">man munkelt</a>, es wäre eine <a href="https://secure.wikimedia.org/wikipedia/de/wiki/Wiimote">Wiimote</a> im Einsatz gewesen.
</li>
<li>
Auf der <i>c-base</i> stellte <em>Experten-Koch</em> Marc Powell von <a href="http://www.foodhacking.com/">food hacking</a> seine <i>Semantic Food Engine</i> vor, die in der Lage ist, einem auf Anfragen wie „Ich habe <em>dies</em>, <em>das</em> und <em>jenes</em>, welches britische Gericht kann man damit kochen ?“ oder „Ich möchte ein ähnliches Gericht wie <em>dieses</em>, allerdings vegetarisch und lila-blassblaukariert.“ Antworten in Form von Rezepten zu geben.
</li>
<li>
Einige meiner Vorschläge schafften es übrigens ins <a href="http://events.ccc.de/congress/2008/Fahrplan/events/2958.en.html">Jeopardy</a>; die Kategorie „4chan“ wurde von <a href="http://events.ccc.de/congress/2008/wiki/User:BugBlue">BugBlue</a> allerdings recht trocken kommentiert: <q>Wer von euch hat keine Arbeit und Zeit, so etwas raus zu suchen ?</q> <i>Das wäre dann wohl <em>ich</em>.</i>
</li>
<li>
Und zuguterletzt fügte die <abbr title="Nationaldemokratische Partei Deutschlands">NPD</abbr> <a href="http://events.ccc.de/congress/2008/wiki/Hacked/NPD"><em>fast ganz freiwillig</em></a> Affen und <abbr title="Christlich-Demokratische Union">CDU</abbr>-Inhalte in ihre Webauftritte ein (Heise <a href="http://www.heise.de/newsticker/25C3-NPD-Webseiten-fest-in-Hackerhand--/meldung/121009">berichtete</a>).
</li>
</ul>
<p>
Vorträge habe ich nur wenige besucht – die Gelegenheiten zum <em>socialicing</em> und <em>Dinge entdecken</em> sind nun einmal so schnell nicht nachholbar –, weswegen ich wohl noch einige Zeit <a href="http://thepiratebay.org/tag/25c3">Torrents der Vorträge</a> herunterladen werde. Letztendlich stimme ich – leider – in meiner Kritik mit dem überein, was Markus Beckedahl bereits <a href="http://netzpolitik.org/2008/25c3-fahrplan-als-fruehe-beta-erschienen/">im Vorfeld kritisiert hatte</a>: <q cite="http://netzpolitik.org/2008/25c3-fahrplan-als-fruehe-beta-erschienen/"> Viel weniger Politik und Gesellschaft, dafür noch mehr Technik-Krams als im letzten Jahr. Eigentlich schade […]</q>
</p>
<p>
Auf der nachfolgenden Silvester-Party in der c-base traf ich eine Menge neuer Leute, unter Anderem <a href="https://secure.wikimedia.org/wikipedia/de/wiki/Dan_Kaminsky">Dan Kaminsky</a> und seine Freundin <a href="http://www.cleverclevergirl.com/">Crystal</a>, <em>Web-Expertin</em> aus <abbr title="Los Angeles">L.A.</abbr>; die all das als „<em>The Conspiracy of Awesome</em>“ betitelte und meinte, ich solle mich glücklich schätzen, von solchen Personen umgeben zu sein; Recht hat sie. So, hier noch ein Poster für die Bürowand:
</p>
<figure>
<a href="http://blog.dieweltistgarnichtso.net/uploads/kaminsky-poster.jpg"><img src="http://blog.dieweltistgarnichtso.net/uploads/kaminsky-poster-375x300.jpg" alt="Dan Kaminsky hat aus Versehen das gesamte Internet." title="Kaminsky-Poster"/></a>
<legend><a href="http://www.flickr.com/photos/eecue/1866553071/" class="license cc-by">eecue</a></legend>
</figure>
<p>
<abbr title="postscriptum">P.S.</abbr>: Silvester-Geböller ist <i>ih-bah</i>.
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.dieweltistgarnichtso.net/25c3-nachlese-the-conspiracy-of-awesome/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripts&#8217;R&#8217;Us: Remote Crashing Gajim</title>
		<link>http://blog.dieweltistgarnichtso.net/scriptsrus-remote-crashing-gajim</link>
		<comments>http://blog.dieweltistgarnichtso.net/scriptsrus-remote-crashing-gajim#comments</comments>
		<pubDate>Sun, 29 Jun 2008 02:34:48 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Misantropie als Bewältigungsstrategie]]></category>
		<category><![CDATA[Originärer Inhalt]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[gajim]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.dieweltistgarnichtso.net/?p=35</guid>
		<description><![CDATA[Gajim-Quitter is a little tool that registers a Jabber account, and sends well-formed, but invalid messages to the Gajim lead developer and the Gajim groupchat. Due to a bug, the jabber client Gajim crashes on receiving invalid (yet well-formed) namespace-malformed &#8230; <a href="http://blog.dieweltistgarnichtso.net/scriptsrus-remote-crashing-gajim">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>
<a href="http://dieweltistgarnichtso.net/uploads/gajim-quitter"><em>Gajim-Quitter</em></a> is a little tool that registers a Jabber account, and sends well-formed, but invalid messages to the Gajim lead developer and the Gajim groupchat. <a href="http://trac.gajim.org/ticket/3083">Due to a bug</a>, the jabber client <a href="http://gajim.org/">Gajim</a> crashes on receiving <del datetime="2008-11-28T12:53:55+00:00">invalid (yet well-formed)</del> <ins datetime="2008-11-28T12:53:55+00:00">namespace-malformed</ins> XML – namely tags with an undefined namespace.
</p>
<p>
<em>Gajim-Quitter</em> was coded in <a href="http://en.wikipedia.org/wiki/Expect">expect(1)</a>; programming it was quite interesting, <a href="http://www.saint-andre.com/jabber/telnet.txt">these</a> <a href="http://www.litfuel.net/plush/?postid=142">two</a> articles (and the relevant <a href="http://www.xmpp.org/rfcs/">RFCs</a> and <a href="http://www.xmpp.org/extensions/">XEPs</a>) helped me a lot. It would probably be a fun exercise for beginner-level programming courses to build a simple Jabber client.
</p>
<p>
<strong>If you want to be safe, use another Jabber client until the issue is fixed.</strong>
</p>
<ins datetime="2008-11-28T12:59:45+00:00"><p>
<strong>Update:</strong> Shortly after publishing this program it has come to my attention that the problem cannot be fixed in the client. Thus, the specification will probably be changed to require that servers check the transmitted XML for validity, which would in turn mean that everyone sending malformed XML will be disconnected.</p></ins>]]></content:encoded>
			<wfw:commentRss>http://blog.dieweltistgarnichtso.net/scriptsrus-remote-crashing-gajim/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Constructing a regular expression that matches URIs</title>
		<link>http://blog.dieweltistgarnichtso.net/constructing-a-regular-expression-that-matches-uris</link>
		<comments>http://blog.dieweltistgarnichtso.net/constructing-a-regular-expression-that-matches-uris#comments</comments>
		<pubDate>Thu, 26 Jun 2008 19:27:25 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Originärer Inhalt]]></category>
		<category><![CDATA[Technik]]></category>
		<category><![CDATA[gajim]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[uri]]></category>

		<guid isPermaLink="false">http://blog.dieweltistgarnichtso.net/?p=34</guid>
		<description><![CDATA[URI matching is commonly needed, most notably for URL matching &#8211; chat clients use this to create links in what is otherwise plain (and not hyper-) text. However, many regexes that are supposed to do exactly that fail on encountering &#8230; <a href="http://blog.dieweltistgarnichtso.net/constructing-a-regular-expression-that-matches-uris">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>
<a href="http://en.wikipedia.org/wiki/URI">URI</a> matching is commonly needed, most notably for <a href="http://en.wikipedia.org/wiki/URI">URL</a> matching &#8211; chat clients use this to create links in what is otherwise plain (and not hyper-) text. However, many regexes that are supposed to do exactly that fail on encountering uncommon, yet valid characters, because programmers don&#8217;t follow the RFC (many probably don&#8217;t even read it).
</p>
<p>
Additionally, users are <em>stupid</em>: While according to <a href="http://tools.ietf.org/html/rfc3986">RFC 3986</a>, <a href="http://en.wikipedia.org/wiki/Brackets#Angle_brackets_or_chevrons_.E2.8C.A9.C2.A0.E2.8C.AA"><em>chevrons</em></a> should be used to designate URIs, often people use <a href="http://en.wikipedia.org/wiki/Brackets#Parentheses__.28_.29"><em>parentheses</em></a>. When developers try to compensate for this, they create undesired &#8211; and more than often unexpected &#8211; behaviour: Links created from <em>perfectly valid URIs</em> are suddenly broken &#8211; see, for example, <a href="http://trac.gajim.org/ticket/3715">the chat client Gajim</a> (and also the bugtracker / wiki Trac).
</p><p>
According to RFC 3986, <a href="http://tools.ietf.org/html/rfc3986#section-1.1.1">subsection 1.1.1</a> , <q>URI[s] begin[s] with a <em>scheme name</em></q>, which, according to <a href="http://tools.ietf.org/html/rfc3986#section-3.1">subsection 3.1</a> <q>consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus (&#8220;+&#8221;), period (&#8220;.&#8221;), or hyphen (&#8220;-&#8220;)</q>. Therefore, the correct regular expression for a scheme name is
<code>
[A-Za-z][A-Za-z0-9\+\.\-]*
</code>
.
</p>
<p>
After the scheme name, a colon (&#8220;:&#8221;) follows &#8211; the rest is scheme-specifix synthax; according to sections <a href="http://tools.ietf.org/html/rfc3986#section-2.2">2.2</a> and <a href="http://tools.ietf.org/html/rfc3986#section-2.3">2.3</a> we only know it uses a limited set of characters, namely those reserved for delimiting data (&#8220;:&#8221;, &#8220;/&#8221;, &#8220;?&#8221;, &#8220;#&#8221;, &#8220;[&#8220;, &#8220;]&#8221;, &#8220;@&#8221;, &#8220;!&#8221;, &#8220;$&#8221;, &#8220;&amp;&#8221;, &#8220;&#8216;&#8221;, &#8220;(&#8220;, &#8220;)&#8221;, &#8220;*&#8221;, &#8220;+&#8221;, &#8220;,&#8221;, &#8220;;&#8221;, &#8220;=&#8221;) and unreserved ones, which <q>include uppercase and lowercase
   letters, decimal digits, hyphen, period, underscore, and tilde</q>. This extends the regular expression to
<code>
[A-Za-z][A-Za-z0-9\+\.\-]*:[A-Za-z0-9\.\-_~:/\?#\[\]@!\$&amp;'\(\)\*\+,;=]+
</code>
&#8211; metacharacters (&#8220;[&#8220;, &#8220;\&#8221;, &#8220;$&#8221;, &#8220;.&#8221; &#8220;?&#8221;, &#8220;*&#8221;, &#8220;+&#8221; &#8220;(&#8220;, &#8220;)&#8221;) <ins>and the range specifier (&#8220;-&#8220;)</ins> properly encoded, of course.
</p>
<p>
&#8220;But wait&#8221;, you may be thinking right now, &#8220;how can I include other characters &#8211; umlauts, for example &#8211; in URIs, then ?&#8221; Well, you <em>can&#8217;t</em>. But you <em>can</em> describe a resource that contains characters not listed in the above paragraph by means of <em>percent-encoding</em>, a method detailed in <a href="http://tools.ietf.org/html/rfc3986#section-2.1">section 2.1</a> to <q>represent a data octet in a component when that octet&#8217;s corresponding character is outside the allowed set or is being used as a delimiter of, or within, the component</q>. A percent-encoded character takes the form of a percent character (&#8220;%&#8221;), followed by two hexadecimal digits &#8211; the space character, for example, is encoded as &#8220;%20&#8243;. This gives us the expression
<code>
%[A-Fa-f0-9]{2}
</code>
, which can be added to the existing URI matching expression:
<code>
[A-Za-z][A-Za-z0-9\+\.\-]*:([A-Za-z0-9\.\-_~:/\?#\[\]@!\$&amp;'\(\)\*\+,;=]|%[A-Fa-f0-9]{2})+
</code>
will catch any valid URI (and probably some invalid ones too).
</p>
<p>
Now, what about the parenthesis problem that surfaced in the beginning ? A simple solution is just to define an additional expression that matches on URIs, but only if they are preceeded by an opening parenthesis (this feature is called &#8220;positive lookbehind&#8221;) and followed by a closing parenthesis (&#8220;positive lookahead&#8221;). We get
<code>
(?&lt;=\()[A-Za-z][A-Za-z0-9\+\.\-]*:([A-Za-z0-9\.\-_~:/\?#\[\]@!\$&amp;'\(\)\*\+,;=]|%[A-Fa-f0-9]{2})+(?=\))
</code>
.
Combining the two massive expressions by means of a simple <em>OR</em> yields the final result:
<code>
((?&lt;=\()[A-Za-z][A-Za-z0-9\+\.\-]*:([A-Za-z0-9\.\-_~:/\?#\[\]@!\$&amp;'\(\)\*\+,;=]|%[A-Fa-f0-9]{2})+(?=\)))|([A-Za-z][A-Za-z0-9\+\.\-]*:([A-Za-z0-9\.\-_~:/\?#\[\]@!\$&amp;'\(\)\*\+,;=]|%[A-Fa-f0-9]{2})+)
</code>
.
</p>

<ins><p>
<strong>Update:</strong> Shortly after Gajim <a href="http://trac.gajim.org/changeset/9845">implemented</a> it, it became clear that I had forgotten to escape the literal minus sign (&#8220;-&#8220;), which wouldn&#8217;t be matched then. This has since been corrected (in this post and <a href="http://trac.gajim.org/changeset/9852">in Gajim</a>).
</p></ins>
<ins datetime="2013-01-24T21:24:11+00:00">
<p>
Since <a href="http://www.regular-expressions.info/posixbrackets.html#eq">regular expressions can be locale-sensitive</a>, I suggest using the <a href="http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_02"><i>C</i> locale</a>.
</p>
</ins>]]></content:encoded>
			<wfw:commentRss>http://blog.dieweltistgarnichtso.net/constructing-a-regular-expression-that-matches-uris/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
