<?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>IOException.de</title>
	<atom:link href="http://www.ioexception.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ioexception.de</link>
	<description>Ausgewählter Nerdkram von Informatikstudenten der Uni Ulm</description>
	<lastBuildDate>Mon, 14 May 2012 17:43:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Interview: Markus &#8216;meillo&#8217; Schnalke</title>
		<link>http://www.ioexception.de/2012/05/07/interview-meillo/</link>
		<comments>http://www.ioexception.de/2012/05/07/interview-meillo/#comments</comments>
		<pubDate>Sun, 06 May 2012 22:08:05 +0000</pubDate>
		<dc:creator>Michael Müller</dc:creator>
				<category><![CDATA[interviews]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[interview series]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1580</guid>
		<description><![CDATA[I got to know meillo after I followed his online writings for quite a while. During that time he stayed around in South America travelling and working on free software. After he returned to the University of Ulm I walked up to him and introduced myself. I got to to know him better over time [...]]]></description>
			<content:encoded><![CDATA[<div style="margin-bottom:15px; float:left; border:1px solid #a62b3d; background:#fff;padding:5px;"><img style="margin:0px !important; padding:0px !important;" src="/wp-content/uploads/2012/05/0.png" alt="" /></div>
<p>I got to know meillo after I followed his online writings for quite a while. During that time he stayed around in South America travelling and working on free software. After he returned to the University of Ulm I walked up to him and introduced myself. I got to to know him better over time and with time we became good friends. He is currently working on his master thesis, though he already holds a diploma on computer science by the University of Applied Sciences in Ulm. If you are further interested in Unix I would recommend to check out his <a href="http://marmaro.de">website</a> or one of his seminar recordings (<a href="http://ulm.ccc.de/ChaosSeminar/2010/03_UnixPhil">this one for example</a>) at the local ChaosSeminar (language: german).</p>
<p><strong>Who are you and what do you do?</strong><br />
I am Markus Schnalke, also known as meillo. I love Unix, especially its philosophy. Style matters a lot to me and I try hard to write well readable code. I feel a great desire for discovering the early Unix and caring for old software.</p>
<p><strong>Which software or programs do you use most frequently?</strong><br />
The short answer is: The Unix shell. My shell history shows that I run <code>ls</code>, <code>cd</code> and <code>vi</code> most frequently. However, more interesting is, that I spend most of my computer time editing (ex-vi), browsing the web (firefox+pentadactyl or w3m) and emailing (mmh). The window manager aewl (my personal version of dwm) and either tmux or screen are running as well.</p>
<p><strong>Why did you decide to use your particular operating system(s) of choice?</strong><br />
I used to choose Debian GNU/Linux for philosophical, social and technical reasons. Whereas I&#8217;m still convinced of the former two, my technical view differs now. In consequence, I switched to <a title="Crux Linux" href="http://crux.nu/" target="_blank">Crux</a>, one year ago. Crux is simple. There&#8217;s nothing in my way. I have the controls right in my hands. Yes, I do need to adjust manually here and there, but that&#8217;s okay. I just don&#8217;t want to be put in a sandbox anymore. I don&#8217;t want to be kept from &#8220;messing up&#8221; the (package) system. I am bored building castles in the sand. I want to change the world now. I want to have all the power and I want to be *encouraged* to put my hands on. That&#8217;s what Crux offers to me currently.</p>
<p><strong>In what manner do you communicate online?</strong><br />
About 90% of my online communication goes via email. As developer of two email software projects (<a href="http://git.marmaro.de/?p=mmh">mmh</a>, <a href="http://marmaro.de/docs/diploma/">masqmail</a>), that&#8217;s no surprise. The remaining 10% are spend in debianforum.de. I don&#8217;t chat nor do I use those modern communication technologies, but I&#8217;m on the way to enter Usenet.</p>
<p><strong>Which folders can be found in your home directory?</strong><br />
There&#8217;s bin, of course. Then, I&#8217;ve started to have src and tmp. Often you can find docs, talks, and dl. For multimedia content German names have survived: fotos, filme, musik.</p>
<p><strong>Which paper or literature has had the most impact on you?</strong><br />
I do love reading old computer books, especially everything written by those guys who shaped Unix. The two books by Kernighan and Pike &#8212; &#8220;The UNIX Programming Environment&#8221; and &#8220;The Practice of Programming&#8221; &#8212; defined my view on Unix and on style. &#8220;The Mythical Man-Month&#8221; by Fred Brooks and some book by Kent Beck on Extreme Programming opened my eyes for a convincing view on software engineering.</p>
<p><strong>What has had the greatest positive influence on your efficiency?</strong><br />
Definitely, discovering Unix, with all its meanings and concequences. It had improved the efficiency of my computer work fundamentally. Although the Internet technologies can help you a lot, I am most productive when working offline.</p>
<p><strong>How do you approach the development of a new project?</strong><br />
Well, I don&#8217;t have much to say here, thus I rather tell one of my favorite jokes: &#8220;There are 10 kinds of people in the world; those who understand binary and those who don&#8217;t.&#8221; :-)</p>
<p><strong>In your opinion, which piece of software should be rewritten from scratch?</strong><br />
That&#8217;s a tough question because we could discuss on the sense of rewriting from scratch for hours. I&#8217;ll answer though. Find(1) for instance should be redesigned &hellip; but if someone would know how to do it well, it likely would have been done already. X has good concepts but it became old, fat, and the world took different roads to different concepts. X never adapted well enough. Hence, X is my choice for a rewrite from scratch. In the small, however, I clearly vote for a rewrite of the infamous <a href="http://git.marmaro.de/?p=mmh;a=blob;f=sbr/m_getfld.c;h=be871c4e8031fba720d654c33a76022d975bfbee;hb=mmh-start">m_getfld.c</a> in mmh/nmh. Who has the guts to take the curse on him?</p>
<p><strong>What would your ideal setup look like?</strong><br />
Maybe it would be Plan 9 without the GUI. Plan 9 offers the concepts of Unix, applied even more thoroughly. It misses some bad design decisions and it is free of the Unix wars&#8217;s legacy. All this is very appealing. If I could have that, without the fundamental integration of the GUI &hellip;</p>
<p></p>
<div style="margin:5px 0px 5px 0px; float:left; border:1px solid #a62b3d; background:#fff;padding:5px;"><a href="/wp-content/uploads/2012/05/meillo-screenshot-large.png"><img src="/wp-content/uploads/2012/05/meillo-screenshot.jpg" style="width:625px; margin:0px !important; padding:0px !important;"  alt="" title="meillo-screenshot" class="alignnone size-thumbnail wp-image-1758" /></a></div>
<p>Click <a href="/wp-content/uploads/2012/05/meillo-screenshot-large.png">here</a> for the full picture.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/05/07/interview-meillo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview series</title>
		<link>http://www.ioexception.de/2012/05/06/interview-series/</link>
		<comments>http://www.ioexception.de/2012/05/06/interview-series/#comments</comments>
		<pubDate>Sun, 06 May 2012 21:51:34 +0000</pubDate>
		<dc:creator>Michael Müller</dc:creator>
				<category><![CDATA[interviews]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1568</guid>
		<description><![CDATA[Inspired by the question series from usesthis.com I am hereby starting a new interview series in which I want to ask the same questions to different people. I love the usesthis.com series, but I find the answers to be kinda simliar these days. I can&#8217;t remember how often I have read answers like &#8220;Well, I [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by the question series from <a href="http://usesthis.com">usesthis.com</a> I am hereby starting a new interview series in which I want to ask the same questions to different people. I love the usesthis.com series, but I find the answers to be kinda simliar these days. I can&#8217;t remember how often I have read answers like &#8220;<em>Well, I got my MacBook, an iPhone and an iPad</em>&#8220;. But what I am really interested in is something different: This series is directed towards people with a strong IT-background. I wrote down some interesting questions and then sat down with <a href="http://phildom.de">phil</a> and <a href="http://marmaro.de">meillo</a> to discuss them. We did a lot of brainstorming and came up with some further questions. They both deserve credit for being really helpful! I also have to give credit to <a href="https://twitter.com/katjesjes">Kate</a>, who was really helpful in translating the questions to proper english (which I still have to get better at ;).</p>
<p>The questions you will find now, are those that I am really interested in. Stuff that I find really helpful for myself. I hope that you will gather some insights and find them as interesting as I do.</p>
<p>The series starts with meillo because he was the first of the two who got around answering the questions. Or well&hellip; I don&#8217;t know if phil maybe planned ahead to get more insights in what to answer ;). But we will see&hellip; the next interview will follow shortly.</p>
<p>Click <a href="/2012/05/07/interview-meillo/">here</a> to get to the first interview.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/05/06/interview-series/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Irren ist menschlich</title>
		<link>http://www.ioexception.de/2012/04/24/irren-ist-menschlich/</link>
		<comments>http://www.ioexception.de/2012/04/24/irren-ist-menschlich/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 20:09:04 +0000</pubDate>
		<dc:creator>Benjamin Erb</dc:creator>
				<category><![CDATA[psychologie]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user interfaces]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1729</guid>
		<description><![CDATA[Fehler zu machen gehört zu den grundlegenden menschlichen Eigenschaften. Interessanter als Fehler, die auf falschem Wissen, falschen Zielen oder falschen Einschätzungen basieren(„error of thought“), sind vor allem unbewusste und versehentliche Fehler („slips“). Gründe und Ursachen hierfür sind nicht nur in der Psychologie interessant, sie können auch beim Gestalten von Gegenständen wie Benutzeroberflächen dabei helfen, die [...]]]></description>
			<content:encoded><![CDATA[<p>Fehler zu machen gehört zu den grundlegenden menschlichen Eigenschaften. Interessanter als Fehler, die auf falschem Wissen, falschen Zielen oder falschen Einschätzungen basieren(„error of thought“), sind vor allem unbewusste und versehentliche Fehler („slips“). Gründe und Ursachen hierfür sind nicht nur in der Psychologie interessant, sie können auch beim Gestalten von Gegenständen wie Benutzeroberflächen dabei helfen, die Benutzbarkeit zu erhöhen. Einerseits können Fehler gezielt von Anfang an verhindert werden, andererseits ermöglicht eine Antizipierung möglicher Fehler die Erkennung und Behandlung der Fehler.<br />
Der Psychologe <a href="http://www.jnd.org/">Donald A. Norman</a> klassifizierte unbewusste und versehentliche Fehler in folgende sechs Kategorien:</p>
<p><strong>Capture error</strong><br />
Grundlage für diesen Fehler sind zwei Handlungsabläufe, die sich ähneln und insbesondere einen gleichen Anfangszustand besitzen. Hierbei ist ein Handlungsablauf ein ganz alltäglicher Ablauf, der sehr häufig ausgeführt wird, während der andere eher eine Ausnahme darstellt. Führt man nun eine seltenere Handlung aus, so ist es aufgrund des Capture erros möglich, dass diese Handlung durch die alltäglichere ersetz wird.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Alice fährt jeden Tag morgens mit dem Bus in die Uni. Am ersten Tag der Semesterferien hat sie sich vorgenommen, einkaufen zu fahren. An der Bushaltestelle steigt sie trotzdem in den Bus zur Uni, anstatt in Richtung des Einkaufszentrums, da der gewohnte Handlungsablauf den selteneren übernommen hat.</p></blockquote>
<p><strong>Description error</strong><br />
Ein Description error ist möglich, wenn eine beabsichtigte Handlung sehr viel Ähnlichkeiten mit anderen Alternativen aufweist. Grund hierfür ist, dass die mentale Beschreibung des Ziels nicht genau genug ist um bei der Ausführung eindeutig zu sein.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Bob will eine Milchpackung aus der Tür des Kühlschrank holen, um sich ein Glas zu füllen. Seine mentale Beschreibung weist ihn an, die Packung aus der Kühlschranktür zu holen. Nun öffnet Bob die Türe des Kühlschrankes, greift allerdings zur benachbarten Packung Orangensaft, da sie in diesem Moment exakt auf die mentale Beschreibung passt. Der Description error hat zugeschlagen.</p></blockquote>
<p><strong>Data-driven error</strong><br />
Viele Aspekte menschlichen Verhaltens passieren unbewusst und werden direkt durch das Empfangen sensorischer Daten ausgelöst. Ein Beispiel für dieses Verhalten ist die Reaktion auf ein Insekt auf der Haut, das man ohne Überlegung beiseite schiebt. Nun kann es passieren, dass beim Eintreffen neuer sensorischer Daten diese mit gerade laufenden mentalen Prozessen interferieren und einen Data-driven error auslösen.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Caroline schreibt gerade einen Blogeintrag über eine Person. Plötzlich poppt eine ICQ-Nachricht von einem Freund auf. Fälscherlicherweise schreibt sie nun in ihrem aktuellen Satz nicht den Namen der ursprünglichen Person, sondern den Namens des ICQ-Kontaktes.</p></blockquote>
<p><strong>Associative activation error</strong><br />
Genauso wie externe Daten können auch interne Gedanken oder Assoziationen laufende Handlungen beeinflußen.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Daniels Telefon klingelt und er begrüßt sein Gegenüber mit „Herein!“</p></blockquote>
<p>Diese Art von Fehler ist übrigens eng mit dem verwandt, was allgemein unter <a href="http://de.wikipedia.org/wiki/Fehlleistung">Freud&#8217;schen Fehlleistungen</a> bekannt ist. Auch das Verwechseln von Namen enger Verwandter bei Familienfesten fällt in diese Kategorie.</p>
<p><strong>Loss of activation error</strong><br />
Diesen Fehler dürfte wohl jedem bekannt sein. Es geht darum, eine gewisse Aktion durchführen zu wollen, jedoch bei der Ausführung das eigentliche Ziel zu vergessen.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Erik geht in das Schlafzimmer, um ein T-Shirt aus dem Schrank zu holen. Als er im Schlafzimmer ankommt, weiß er nicht mehr, wieso er eigentlich ins Schlafzimmer gegangen ist.</p></blockquote>
<p><strong>Mode error</strong><br />
Diese Fehler entstehen, wenn bestimmte Aktionen abhängig vom Zustand zu anderen Ergebnissen führen, und man sich mental in einem anderen Zustand befindet, als man in Wirklichkeit ist.<br />
<strong>Beispiel:</strong></p>
<blockquote><p>Felizitas ist auf dem Heimweg von einer Party. Sie möchte wissen wie viel Zeit sie benötigt und startet ihre Stopfunktion an ihrer digitalen Armbanduhr. Nach ein paar Minuten möchte sie wissen, wie lange sie schon unterwegs ist und drückt die Taste, die im normalen Modus zur Aktivierung der Hintergrundbeleuchtung der Anzeige zuständig ist. Leider sorgt die gleiche Taste im Stopmodus dafür, dass die Zeitmessung zurückgesetzt wird. Sie ist Opfer eines typischen Mode errors geworden.</p></blockquote>
<p>Insbesondere der letzte Fehler ist ein wichtiger Fehler im Zusammenhang mit interaktiven System, denn er zeigt auf, wie wichtig es ist, dem Benutzer ein klares, verständliches mentales Modell der Anwendung zu liefern, welches solche Fehler verhindert. Ein anderes Beispiel im Bereich des Computers zur Verhinderung ist fehlertolerantes Löschen. Oft möchte man eine gewisse Datei löschen, vertut sich aber der Auswahl, zum Beispiel aufgrund eines Description errors, und selektiert die falsche Datei. Auch die direkt darauf folgende Löschbestätigung hilft nicht, da die Person sich noch in einem Handlungsablauf befindet, in der sie davon ausgeht, dass sie die richtige Datei löscht. Erst später bei der Bewertung des Handlungablaufes erkennt sie wohlmöglich den ausgeführten Fehler. Durch einen Papierkorb, der gelöschte Objekte zunächst zwischenspeichert, oder durch die Implementierung von Undo-Funktionen lassen sich solche Fehler benutzerfreundlich beheben.</p>
<p>Weiterführende Literatur: <em>The Psychology of Everyday Things, Donald A. Norman (1988)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/04/24/irren-ist-menschlich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einfacher SMTP-Server zur Aufgabenverarbeitung</title>
		<link>http://www.ioexception.de/2012/04/20/einfacher-smtp-server/</link>
		<comments>http://www.ioexception.de/2012/04/20/einfacher-smtp-server/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 08:36:19 +0000</pubDate>
		<dc:creator>Falco Nogatz</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1716</guid>
		<description><![CDATA[Häufig ärgere ich mich über Webanwendungen, die ihren Nutzern Mails schicken, wenn irgendein Ereignis eigetreten ist oder eine Aktion des Users benötigt wird, eine einfache Antwort auf die Mail aber nicht möglich ist. Ein typisches Szenario ist etwa das Bestätigen der Mailadresse, wenn man sich bei einem neuen Dienst registriert: Man gibt seine Mailadresse in [...]]]></description>
			<content:encoded><![CDATA[<p>Häufig ärgere ich mich über Webanwendungen, die ihren Nutzern Mails schicken, wenn irgendein Ereignis eigetreten ist oder eine Aktion des Users benötigt wird, eine einfache Antwort auf die Mail aber nicht möglich ist. Ein typisches Szenario ist etwa das Bestätigen der Mailadresse, wenn man sich bei einem neuen Dienst registriert: Man gibt seine Mailadresse in ein Online-Formular ein, bekommt eine Aktivierungsmail zugeschickt und muss darin einen Link anklicken, der wiederum zum Webdienst führt und meine Mailadresse bestätigt. Wäre es nicht einfacher, die Mail so wie sie ist an den Absender zurückzuschicken um sie zu bestätigen?</p>
<p>Dies sei nur als ein Beispiel genannt. Beim nicht mehr gepflegten node.js-Modul <a href="https://github.com/euangoddard/node-smtpevent" title="smtpevent">smtpevent</a> sind auch noch weitere Szenarien aufgeführt: Viele Mailinglists bieten etwa die Möglichkeit, sich über eine Mail an unsubscribe@mailinglist.de davon abzumelden. Bei Github kann man auf einen Issue direkt antworten, indem man die Benachrichtigungsmail einfach beantwortet. Weitere Szenarien sind leicht vorstellbar: Warum soll ich von unterwegs mit dem Handy eine Weboberfläche bemühen, um remote meine Heizung zu steuern, wenn ich schneller eine Mail mit dem Betreff &#8220;On&#8221; an heating@meinserver.de schicken kann?</p>
<p>Um eine solche Anwendung zu realisieren wird ein SMTP-Server benötigt. Node.js versteht sich sehr gut auf solche Protokolle und der eventbasierte Ansatz ist bei eingehenden Mails sicher auch nicht verkehrt. Und so gibt es bereits eine kleine Zahl an guter SMTP-Server-Implementierungen. Mir ist vor allem der estländische Programmierer <a href="https://github.com/andris9">Andris Reiman</a> aufgefallen, der für node.js viele Module geschrieben hat, die sich mit dem Versand und Empfang von Mails beschäftigen. So reichen seine beiden Projekte <a href="https://github.com/andris9/simplesmtp">simplesmtp</a> und <a href="https://github.com/andris9/mailparser">mailparser</a>, um einen einfachen SMTP-Server aufzusetzen und die Mails und Anhänge zu parsen.</p>
<p>Zuerst bauen wir den SMTP-Server auf:</p>
<pre class="brush: jscript; title: ; notranslate">
var simplesmtp = require('simplesmtp');
var MailParser = require('mailparser').MailParser;

var server = simplesmtp.createServer({
  validateSenders: false,
  validateRecipients: false
});

server.on('startData', function(envelope) {
  envelope.mailparser = new MailParser();
  envelope.mailparser.on('end', takeMail);
});

server.on('data', function(envelope, chunk){
  envelope.mailparser.write(chunk);
});

server.on('dataReady', function(envelope, callback){
  envelope.mailparser.end();
  callback();
});

server.listen(25);
</pre>
<p>Der Code ist relativ selbsterklärend: Bei Eingang einer Mail wird das <code>startData</code>-Event gefeuert, einzelne Datenchunks werden durch den <code>data</code>-Listener bearbeitet, und wenn die Mail vollständig übertragen wurde, feuert <code>dataReady</code>. Der Rahmen <code>envelope</code> wird dabei allen Funktionen übergeben, sodass <code>envelope.mailparser</code> auch in allen Funktionsaufrufen für eine Mail der gleiche ist. So werden bei zwei gleichzeitig eingehenden Mails diese nicht versehentlich vermischt.</p>
<p>Sobald die Mail vollständig übertragen wurde (<code>dataReady</code>), lösen wir <code>mailparser.end()</code> aus, was das Parsen der Mail beginnt. Fehlt noch die Definition, was mit unserer geparsten Mail denn passieren soll:</p>
<pre class="brush: jscript; title: ; notranslate">
function takeMail(mail_object) {
    console.log('From:', mail_object.from); //[{address:'sender@example.com',name:'Sender Name'}]
    console.log('Subject:', mail_object.subject); // Hello world!
    console.log('Text body:', mail_object.text); // How are you today?

    // Irgendein Datenbankaufruf o.ä.
}
</pre>
<p>Hier kann die Mail nun also ausgewertet und so die gewünschte Aktion ausgelöst werden. Das tolle am Mailparser ist die Tatsache, dass Dateianhänge ebenfalls soweit wie möglich geparst werden. So enthält das <code>mail_object</code> auch einen Eintrag <code>attachments</code>, der etwa so aussehen könnte:</p>
<pre class="brush: jscript; title: ; notranslate">
attachments = [{
    contentType: 'image/png',
    fileName: 'image.png',
    contentDisposition: 'attachment',
    contentId: '5.1321281380971@localhost',
    transferEncoding: 'base64',
    length: 126,
    generatedFileName: 'image.png',
    checksum: 'e4cef4c6e26037bcf8166905207ea09b',
    content: &lt;Buffer ...&gt;
}];</pre>
<p><small>Attachments-Beispiel von <a href="https://github.com/andris9/mailparser">mailparser</a></small></p>
<p>So könnte man leicht einen Service wie den von Twitpic einrichten, dass man durch das Senden an eine userspezifische Mailadresse ein Bild hochladen kann.</p>
<p>Wem das ganze zu unsicher scheint, weil ja sonst jeder, der die Mailadresse kennt, Dummheiten anstellen könnte, der sei auf die Serverkonfiguration ganz oben hingewiesen: Werden <code>validateSenders</code> und <code>validateRecipients</code> auf <code>true</code> gesetzt, können Sender und Empfänger in einer eigenen Funktion überprüft und ggf. zurückgewiesen werden. Die simplesmtp-Bibliothek bietet daneben auch noch andere Authorisierungsmechanismen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/04/20/einfacher-smtp-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Veranstaltungen: Streiflicht + OpenCityCamp 2012</title>
		<link>http://www.ioexception.de/2012/04/15/streiflicht-opencitycamp-2012/</link>
		<comments>http://www.ioexception.de/2012/04/15/streiflicht-opencitycamp-2012/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 19:19:54 +0000</pubDate>
		<dc:creator>Michael Müller</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[OpenCityCamp]]></category>
		<category><![CDATA[streiflicht]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1642</guid>
		<description><![CDATA[Zwei aktuelle Uni-verwandte Veranstaltungen, bei denen auch IOException.de Autoren kräftig beteiltigt sind: Der Streiflicht 2012 und das OpenCityCamp 2012.]]></description>
			<content:encoded><![CDATA[<p>Zwei aktuelle Uni-verwandte Veranstaltungen, bei denen auch IOException.de Autoren kräftig beteiltigt sind:</p>
<div style="margin-bottom:15px; float:left; border:1px solid #a62b3d; background:#fff;padding:5px;"><img title="Streiflicht 2012 - Veranstaltung des Institus für Medieninformatik, Uni Ulm" alt="Streiflicht 2012" style="width:625px; margin:0px !important; padding:0px !important;" src="/wp-content/uploads/2012/04/streiflicht-2012-uni-ulm.png" alt="" /></div>
<p>Zum einen findet am 25. April der Streiflicht 2012 statt. Jedes Jahr präsentieren dort Studenten der Medieninformatik-Anwendungsfächer die Highlights ihrer umgesetzten Projekte. Die Präsentationen sind immer unterhaltsam aufbereitet, so dass auch Nicht-Informatiker etwas davon haben :-). </p>
<p>Zu der Veranstaltung sind neben Studenten, Professoren und Mitarbeitern natürlich auch alle anderen Interessierten herzlich eingeladen. Die Fachschaft stellt dieses Jahr wieder die Getränkeversorgung sicher, so dass es sicher ein interessanter, unterhaltsamer Abend werden wird.</p>
<p>Am 25. April um 18 Uhr im Hörsaal O-27 H22. Alle weiteren Infos zu den Projekten oder etwa eine Wegbeschreibung findet sich auf der <a href="http://www.uni-ulm.de/in/mi/mi-highlights/streiflicht12.html">Streiflicht-Seite</a> des Institus für Medieninformatik.</p>
<p>Es gibt außerdem ein passendes <a href="https://www.facebook.com/events/253821048047386/">Facebook Event</a> zu der Veranstaltung.</p>
<p>
<hr style="margin:25px 0px 25px 0px;" /></p>
<div style="margin-bottom:15px; float:left; border:1px solid #a62b3d; background:#fff;padding:5px;"><img style="width:625px; margin:0px !important; padding:0px !important;" alt="OpenCityCamp" title="OpenCityCamp 2012 – Ulm bewegen!" src="/wp-content/uploads/2012/04/open-city-camp-2012-ulm.png" alt="" /></div>
<p>Der zweite Veranstaltungshinweis betrifft das OpenCityCamp 2012, das am 12. und 13. Mai stattfindet. Organisiert von der datalove Hochschulgruppe wird es dort an zwei Tagen Vorträge, Sessions und Workshops rund um das Thema &#8220;Open Data&#8221; geben.</p>
<p>Die Veranstaltung im Barcamp-Stil ist für jeden offen! Jeder ist herzlich eingeladen sich einzubringen &#8212; seien es eigene Sessions, Workshops oder Projekte, die ihr schon lange verwirklichen wollt: Hier findet sich die geeignet Plattform!</p>
<p>Die (kostenfreie) Anmeldung ist über <a href="http://occ-ulm.mixxt.de/">occ-ulm.mixxt.de</a> möglich. </p>
<p>Dort ist es auch möglich <a href="http://occ-ulm.mixxt.de/networks/wiki/index.Sessions">Sessions</a>, <a href="http://occ-ulm.mixxt.de/networks/wiki/index.Sessionvorschlaege">Sessionvorschläge</a> und <a href="http://occ-ulm.mixxt.de/networks/wiki/index.Hackathonthemen">Hackathonthemen</a> einzutragen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/04/15/streiflicht-opencitycamp-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graphen &amp; Plots erzeugen mit GLE</title>
		<link>http://www.ioexception.de/2012/02/25/graphen-plots-erzeugen-mit-gle/</link>
		<comments>http://www.ioexception.de/2012/02/25/graphen-plots-erzeugen-mit-gle/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 15:02:23 +0000</pubDate>
		<dc:creator>Raimar Wagner</dc:creator>
				<category><![CDATA[visualisierungen]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1552</guid>
		<description><![CDATA[Nicht unerheblich für eine erfolgreiche Veröffentlichung ist eine ansprechende Präsentation der Ergebnisse. Jeder schaut sich lieber schöne Plots mit den zum Latex Template passenden Schriftarten an. Eine Möglichkeit solche Plots zu erzeugen ist über die Skriptsprache GLE die auch gleich eine eingebaute Preview Komponente mitbringt. Ein möglicher Beispielplot ist rechts gezeigt, das dazugehörige GLE Skript unten. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ioexception.de/wp-content/uploads/2012/02/qgle.png"><img src="http://www.ioexception.de/wp-content/uploads/2012/02/qgle-150x150.png" alt="" title="qgle" width="150" height="150" class="alignright size-thumbnail wp-image-1555" /></a>Nicht unerheblich für eine erfolgreiche Veröffentlichung ist eine ansprechende Präsentation der Ergebnisse. Jeder schaut sich lieber schöne Plots mit den zum Latex Template passenden Schriftarten an. Eine Möglichkeit solche Plots zu erzeugen ist über die Skriptsprache <a href="http://glx.sourceforge.net/" target="_blank">GLE</a> die auch gleich eine eingebaute Preview Komponente mitbringt.</p>
<p>Ein möglicher Beispielplot ist rechts gezeigt, das dazugehörige GLE Skript unten. Gelesen werden die Daten einfach aus CSV-Dateien. </p>
<pre class="brush: plain; title: ; notranslate">

size 9 6

set font pstr !meine Paper Vorlage verwendet diesen Font. 

set texlabels 0 !keine Tex-Fonts in den Labels

!eine Funktion für einen Scatterplot
sub draw_scatter dataset$ mu sigma dt dst letter$
  begin graph
     size 5 5
     !Achsen in mu+-sigma
     xaxis min mu-sigma max mu+sigma  dticks dt dsubticks dst
     yaxis min mu-sigma max mu+sigma dticks dt  dsubticks dst
     xtitle &quot; x-axis &quot;
     ytitle &quot;noisy x-axis&quot;
     !Buchstabe als Alternative zu subplots
     title letter$

     !CSV files lesen &amp; plotten
     data dataset$+&quot;_4.csv&quot; d1
     d1 marker dot msize 0.2 color navy

     data dataset$+&quot;_3.csv&quot; d2
     d2 marker dot msize 0.2 color cyan 

     data dataset$+&quot;_2.csv&quot; d3
     d3 marker dot msize 0.2 color lime

     data dataset$+&quot;_1.csv&quot; d4
     d4 marker dot msize 0.2 color magenta 

  end graph
end sub

!Zeichnet einen Linienplot
sub draw_line dataset$ mu sigma dt dst letter$
  begin graph
    xaxis min mu-1/3*sigma max mu+1/3*sigma  dticks dt dsubticks dst
    yaxis min mu-sigma max mu+sigma dticks dt  dsubticks dst
    size 1/3*5 5

    data &quot;lines-&quot;+dataset$+&quot;-1.csv&quot; d1
    d1 line color magenta 

    title letter$
  end graph
end sub

!die plots an die richtigen Positionen zeichnen
amove 1 1.2
draw_scatter &quot;csvdata1&quot; 29 200 100 50 &quot;(a)&quot;
amove 6.3  1.2
draw_line &quot;csvdata1&quot; 29 200 100 50 &quot;(b)&quot;
</pre>
<p>Für einen Preview die .gle Datei im mitgelieferten Tool <code>qgle</code> öffnen, die .gle Datei kann on-the-fly geändert und gespeichert werden. Die <code>qgle</code> Komponente aktualisiert sich automatisch neu. Für eine Veröffentlichung muss nur die .eps Datei exportiert werden, die Schriftart mittels eps2pdf eingebettet werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/02/25/graphen-plots-erzeugen-mit-gle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analoge Fotografie Teil II (Fotografieren)</title>
		<link>http://www.ioexception.de/2012/02/19/analoge-fotografie-teil-ii-fotografieren/</link>
		<comments>http://www.ioexception.de/2012/02/19/analoge-fotografie-teil-ii-fotografieren/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 00:12:01 +0000</pubDate>
		<dc:creator>matou</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[foto]]></category>
		<category><![CDATA[fotografie]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1507</guid>
		<description><![CDATA[Letzte Woche habe ich angefangen über die Analoge Fotografie zu schreiben. Im letzten Artikel ging es ein wenig um die Kamera (eine Nikon FE-2), die ich verwende. Heute möchte ich mich etwas genauer damit befassen, wie man diese Kamera verwendet. Da man es heutzutage fast ausschließlich mit digitalen Kameras zu tun hat, denke ich, dass [...]]]></description>
			<content:encoded><![CDATA[<p>Letzte Woche habe ich angefangen über die <a href="/2012/02/13/analoge-fotografie-teil-i-kamera/">Analoge Fotografie</a> zu schreiben. Im letzten Artikel ging es ein wenig um die Kamera (eine Nikon FE-2), die ich verwende. Heute möchte ich mich etwas genauer damit befassen, wie man diese Kamera verwendet. Da man es heutzutage fast ausschließlich mit digitalen Kameras zu tun hat, denke ich, dass es ganz interessant ist, sich mal mit einer etwas älteren Technologie zu befassen.</p>
<h3>Die Kamera (Fortsetzung)</h3>
<p>Auch bei den analogen Fotokameras gibt es natürlich teilweise riesige Unterschiede in den Features, die diese Kameras bieten. Bei meiner Nikon FE-2 handelt es sich um eine Spiegelreflexkamera, die man mit vielen verschiedenen Objektiven mit F-Bajonett verwenden kann. Die Nikon FE-2 war eine der ersten Kameras mit Zeitautomatik, so dass man nicht für jedes Bild komplett alles manuell einstellen muss. Die Kamera kann die Belichtungszeit selbst wählen. Beim Kauf hatte ich mir überlegt, ob ich so etwas überhaupt brauche (die komplett mechanische und manuell einstellbare FM-2 hätte nämlich keine Batterien gebraucht); Im Nachhinein bin ich aber sehr froh über diese Zeitautomatik.</p>
<p>Was muss ich also einstellen? Damit das Bild nicht unter- oder überbelichtet wird, müssen Blende und Belichtungszeit richtig gewählt werden und auch auf die Empfindlichkeit des Films abgestimmt werden. Diese drei Parameter sind die wichtigsten, um überhaupt ein brauchbares Foto zu bekommen. Zusätzlich kann man noch die Brennweite („Zoom“) und die Schärfe regulieren.</p>
<h4>Empfindlichkeit</h4>
<p>Neuere Analogkameras lesen den Barcode auf den Filmen und erkennen daran die ASA- bzw. ISO-Zahl des Films. Die FE-2 kann das noch nicht. Auf der linken Seite gibt es deshalb dafür ein Einstellrad, mit dem ich die Empfindlichkeit des Films von ISO 12 bis ISO 3200 einstellen kann. Umso höher die Zahl ist, desto empfindlicher ist der Film. Man kommt dann mit insgesamt weniger Licht aus, kann also kürzer belichten oder die Blende weiter zu machen. Die ISO/ASA Skala ist dabei linear. Ein Film mit ISO 200 braucht also für ein gleich helles Bild nur halb so viel Licht, wie ein ISO 100 Film. Ich verwende am liebsten Filme mit ISO 400. Das ist schon recht empfindlich; es ist aber selbst bei Sonne immer noch gut möglich Blende und Belichtungszeit zu variieren. Außerdem werden empfindlichere Filme praktisch nicht mehr verkauft. Das ist nicht ganz richtig, denn letzte Woche habe ich einen <a href="http://www.kodak.com/global/de/professional/products/films/bw/tMaxP3200.jhtml">hochempfindlichen Film</a> von Kodak gefunden, den ich unbedingt mal probieren möchte. Ich denke in Situationen mit wenig Licht ist dieser Film bestimmt toll zu verwenden.</p>
<p>Man kann übrigens Filme auch für eine höhere Empfindlichkeit belichten, als sie eigentlich haben (also z.B. für einen 400er Film ISO 800 an der Kamera einstellen). Die Bilder sind dann eigentlich unterbelichtet. Das lässt sich aber beim Entwickeln ausgleichen (vermutlich unter Qualitätsverlust; noch nie selber probiert). Das Fotolabor muss das natürlich vorher wissen.</p>
<p><a href="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0073.jpg"><img class="size-thumbnail wp-image-1538 alignnone" title="Einstellrad für die Filmempfindlichkeit an der Nikon FE-2" src="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0073-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h4>Belichtungszeit</h4>
<p>An der Kamera selbst muss ich, wenn ich nicht will, sonst eigentlich nichts mehr einstellen, denn die FE-2 hat, wie schon erwähnt, eine Zeitautomatik, die die Belichtungszeit stufenlos für mich wählen kann.</p>
<p>Wenn ich die Zeitautomatik verwenden möchte, stelle ich das Einstellrad auf der rechten Seite auf „A“. Natürlich kann man die gewünschte Belichtungszeit auch selbst wählen, indem ich sie einfach am entsprechenden Rad einstelle. Die FE-2 kann Belichtungszeiten von einer 1/4000 Sekunde bis zu 8 Sekunden. Außerdem gibt es noch einen Bulb-Modus, in dem so lange belichtet wird, wie der Auslöser gedrückt ist.</p>
<p>Und sollte die Batterie einmal leer sein und kein Ersatz zur Verfügung stehen, dann kann man den Verschluss auch in den rein mechanischen Betrieb versetzen, in dem immer 1/250 Sekunde lang belichtet wird.</p>
<p>Die Belichtungszeit bestimmt, wie lange der Verschluss für die Belichtung geöffnet wird. Damit also auch, wie viel Licht auf den Film trifft und wie hell das Bild letztendlich wird. Wenn man lange Belichtungszeiten verwendet, dann wird es natürlich auch schwieriger das Bild nicht zu verwackeln.</p>
<p><a href="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0075.jpg"><img class="alignnone size-thumbnail wp-image-1539" title="Einstellrad für die Belichtungszeit an der Nikon FE-2" src="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0075-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h4>Blende</h4>
<p>Die Blende wird nicht an der Kamera eingestellt, sondern am Objektiv. Daher ist es theoretisch auch denkbar, dass das Objektiv nur eine Blendenstufe hat, und man hier gar nichts einstellen kann. Allerdings kenne ich keine solchen Objektive. Mein Lieblingsobjektiv ist ein <a href="http://www.nikon.de/de_DE/product/nikkor-lenses/auto-focus-lenses/fx/single-focal-length/50mm-f-1-4d-af-nikkor">AF NIKKOR 50mm</a> mit Blendenstufen von f1.4 bis f16. Was bedeuten diese Zahlen? Ganz grob: Umso größer die Zahl ist, desto weiter schließt sich die Blende während des Belichtens. Desto weniger Licht hat man zur Verfügung. Desto mehr Schärfentiefe erhält man (das Bild wird insgesamt schärfer).</p>
<p>Normalerweise ist, wenn man nicht gerade ein Foto macht, die Blende des Objektives ganz geöffnet, damit man durch den Sucher alles möglichst hell sieht. Dadurch kann man aber im Sucher nicht erkennen, wie scharf das Bild letztendlich werden wird. Dazu hat die FE-2 (wie fast alle Spiegelreflexkameras) einen Abblendknopf, der die Blende auf den eingestellten Wert schließt, so dass man sehen kann, wie sich die Blende auf das Bild auswirken wird.</p>
<p><a href="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0077.jpg"><img class="alignnone size-thumbnail wp-image-1541" title="AF NIKKOR 50mm mit eingestellter Blende f1.4" src="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0077-150x150.jpg" alt="" width="150" height="150" /></a><a href="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0078.jpg"><img class="alignnone size-thumbnail wp-image-1542" title="AF NIKKOR 50mm mit eingestellter Blende f16" src="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0078-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h4>Brennweite (Zoom)</h4>
<p>Die Brennweite wird ebenfalls am Objektiv eingestellt und bestimmt, wie weit in das Bild „hineingezoomt“ wird. Das Ergebnis kann man natürlich sofort im Sucher sehen. Mein Lieblingsobjektiv hat eine Festbrennweite von 50mm, kann also in der Hinsicht nicht verstellt werden.</p>
<h4>Schärfe</h4>
<p>Als letzter wichtiger Parameter fehlt uns jetzt nur noch die Schärfeneinstellung. Auch die Schärfe wird nicht an der Kamera, sondern am Objektiv eingestellt. Normalerweise steht auf dem Objektiv drauf, für welchen Abstand von Kamera und Motiv die Schärfe eingestellt ist. Aber meistens stellt man die Schärfe nicht auf einen bestimmten Wert, weil dies zu ungenau wäre, sondern man verwendet verschiedene Hilfsmittel, um die Schärfe auf den gewünschten Punkt im Bild einzustellen.</p>
<p>Die FE-2 hat keine Autofokus-Funktion, wie die meisten heutigen Kameras. Damit man trotzdem möglichst genau scharf stellen kann, hat die Kamera eine Mattscheibe (bzw. <a href="http://de.wikipedia.org/wiki/Einstellscheibe">Einstellscheibe</a>) eingebaut. Die Einstellscheibe vom Typ K, die in meiner Kamera steckt, hat zum einen einen <a href="http://de.wikipedia.org/wiki/Schnittbildindikator">Schnittbildindikator</a> und zum anderen einen <a href="http://de.wikipedia.org/wiki/Mikroprismenring">Mikroprismenring</a> zum Scharfstellen.</p>
<p><a href="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0076.jpg"><img class="alignnone size-thumbnail wp-image-1540" title="Blenden- und Schärfe-Einstellung am Objektiv" src="http://www.ioexception.de/wp-content/uploads/2012/02/dsc_0076-150x150.jpg" alt="" width="150" height="150" /></a></p>
<h4>Belichtungsmesser</h4>
<p>Damit man weiß, wie man die Parameter Blende und Belichtungszeit überhaupt wählen kann, muss man natürlich erst einmal wissen, wie viel Licht das Motiv überhaupt hergibt, also wie hell es ist. Dazu benötigt man einen Belichtungsmesser. Die Nikon FE-2 hat einen eingebauten Belichtungsmesser, der für die eingestellte Blende und abhängig von der Filmempfindlichkeit anzeigt, auf welche Belichtungszeit die Kamera eingestellt werden sollte (bei der Zeitautomatik wird die Zeit natürlich gleich automatisch eingestellt).</p>
<h3>Kreatives Fotografieren</h3>
<p>So. Bisher habe ich blos über die möglichen Einstellungen geschrieben. Was kann ich denn jetzt machen, um ein Bild zu bekommen, wie ich es haben möchte? Wichtig ist, dass Filmempfindlichkeit, Blende und Belichtungszeit aufeinander abgestimmt sind. Die Empfindlichkeit eines Films kann ich natürlich für einzelne Bilder nicht verändern. Daher bleiben mir Blende und Zeit, die ich verstellen kann. Umso weiter ich die Blende schließe, desto weniger Licht kommt durch das Objektiv und desto länger muss ich auch belichten. Was bringt mir das? Eine hohe Blendenzahl führt zu mehr Tiefenschärfe. Ich mache allerdings sehr gerne Fotos mit geringer Tiefenschärfe, also weit geöffneter Blende. Ich mag den Effekt, dass damit das Bild meist nur an wenigen Stellen wirklich scharf ist.</p>
<p>Alles Weitere ist der Kreativität des Fotografen überlassen. Wohin man den Fokus legt und mit welchen Tiefenschärfen, Bewegungsunschärfen und Brennweiten man arbeitet hat viel Auswirkung auf das Bild.</p>
<h3>Stay tuned!</h3>
<p>Die Kreativität endet bei der analogen Fotografie aber nicht mit dem Druck auf den Auslöser. So, wie man digitale Bilder mit Bildbearbeitungssoftware noch weiter bearbeiten kann, kann man auch mit analogen Fotos noch nach der Aufnahme viel mit dem Bild anstellen – und zwar im Fotolabor. Wer seine Bilder entwickeln lässt verschenkt ziemlich viel Potential. Das ist auch einer der Gründe, warum ich analog ausschließlich in schwarz-weiß fotografiere. Ich möchte selber entwickeln. Selber entwickeln geht zwar auch mit Farbfilmen, das ist aber deutlich komplizierter als bei Schwarz-Weiß-Filmen. Im kommenden dritten Teil dieser kleinen Blogartikel-Reihe möchte ich ein bisschen auf das Entwickeln von Filmen eingehen.</p>
<p>Bis dann,<br />
matou</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/02/19/analoge-fotografie-teil-ii-fotografieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analoge Fotografie Teil I (Kamera)</title>
		<link>http://www.ioexception.de/2012/02/13/analoge-fotografie-teil-i-kamera/</link>
		<comments>http://www.ioexception.de/2012/02/13/analoge-fotografie-teil-i-kamera/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 18:46:33 +0000</pubDate>
		<dc:creator>matou</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[film]]></category>
		<category><![CDATA[foto]]></category>
		<category><![CDATA[fotografie]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1462</guid>
		<description><![CDATA[Seit 2007 fotografiere ich mit einer digitalen Spiegelreflexkamera. Die digitale Fotografie bietet einem jede Menge Möglichkeiten. Doch im letzten Jahr hatte ich immer wieder das Bedürfnis, diese Komplexität ein wenig hinter mir zu lassen und bewusster Bilder zu machen. Die analoge Fotografie unterstützt dieses bewusste Fotografieren in vielerlei Hinsicht. Eine alte, mechanische, analoge Kamera ist [...]]]></description>
			<content:encoded><![CDATA[<p>Seit 2007 fotografiere ich mit einer digitalen Spiegelreflexkamera. Die digitale Fotografie bietet einem jede Menge Möglichkeiten. Doch im letzten Jahr hatte ich immer wieder das Bedürfnis, diese Komplexität ein wenig hinter mir zu lassen und bewusster Bilder zu machen. Die analoge Fotografie unterstützt dieses bewusste Fotografieren in vielerlei Hinsicht. Eine alte, mechanische, analoge Kamera ist im vergleich zu einer modernen, digitalen Kamera deutlich simpler. Viele Parameter, welche ich bei der digitalen Fotografie wählen kann, fallen bei der analogen Fotografie weg. Das ermöglicht es mir deutlich einfacher die Kamera und ihre Möglichkeiten vollständig zu kennen, bzw. kennen zu lernen. Zudem bin ich je nach Kamera gezwungen viele Einstellungen manuell, und damit bewusst, zu wählen, da sonst unbrauchbare Bilder das Ergebnis sind. Schließlich waren Kameras nicht schon immer voll automatisch. Auf diese Weise mache ich mir mehr Gedanken darüber, was und wie ich da eigentlich fotografiere, anstatt einfach nur mit einem einfachen Tastendruck hunderte von Fotos zu schießen.</p>
<h3>Die Kamera</h3>
<p>Im Sommer 2011 habe ich mir dann eine <a href="http://de.wikipedia.org/wiki/Nikon-MF-Kameras#Nikon_FE2_.281983.29">Nikon FE-2</a> mitsamt eines 200mm Objektivs gekauft. Ein 50mm Objektiv hatte ich bereits, da auch meine digitale Kamera eine Nikon ist. Meine anderen Objektive kann ich mit der FE-2 leider nicht verwenden, weil die meisten modernen Objektive keine mechanische Verbindung mehr zur Blende haben.</p>
<div id="attachment_1497" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ioexception.de/wp-content/uploads/2012/02/IMG_20120213_193306_quadratisch.jpg"><img class="size-medium wp-image-1497" title="Nikon FE-2" src="http://www.ioexception.de/wp-content/uploads/2012/02/IMG_20120213_193306_quadratisch-300x300.jpg" alt="Die Nikon FE-2 von matou" width="300" height="300" /></a><p class="wp-caption-text">Die Nikon FE-2 von matou</p></div>
<p>Die FE-2 ist nicht rein mechanisch. Sie besitzt z.B. einen elektronischen Verschluss. Im Gegensatz zu Nikons ersten FM-Kameras, hat die FE-2 außerdem eine Zeitautomatik, was doch deutlich bequemer ist, als alle Parameter selbst einstellen zu müssen.</p>
<p>Natürlich gibt es noch unzählige andere analoge Kameras. Mit mehr oder weniger Features kann man so ziemlich alles bekommen, was man sich vorstellen kann. <a href="/author/michi/">Michi</a>, ebenfalls Autor hier auf IOException.de, fotografiert zum Beispiel gelegentlich mit einer YASHICA Mat-124, die anstatt eines Kleinbildfilms einen Rollfilm verwendet.</p>
<div id="attachment_1484" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ioexception.de/wp-content/uploads/2012/02/yashica_mat-124.jpg"><img class="size-medium wp-image-1484" title="YASHICA Mat-124 G" src="http://www.ioexception.de/wp-content/uploads/2012/02/yashica_mat-124-300x300.jpg" alt="Die YASHICA Mat-124 G Kamera" width="300" height="300" /></a><p class="wp-caption-text">YASHICA Mat-124 G</p></div>
<p>&nbsp;</p>
<h3>Fortsetzung folgt</h3>
<p>In weiteren Artikeln werde ich bald schreiben, wie man denn mit so einer Kamera fotografiert und wie man vom belichteten Film zu einem Foto-Abzug kommt.</p>
<p>&nbsp;</p>
<p>Bis bald,<br />
matou</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/02/13/analoge-fotografie-teil-i-kamera/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IOException.de bei Trackback</title>
		<link>http://www.ioexception.de/2012/02/13/ioexception-de-bei-trackback/</link>
		<comments>http://www.ioexception.de/2012/02/13/ioexception-de-bei-trackback/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 15:35:42 +0000</pubDate>
		<dc:creator>matou</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[ioexception]]></category>
		<category><![CDATA[radio]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1466</guid>
		<description><![CDATA[Verganenen Samstag wurde ich von Marcus Richter in seiner Sendung Trackback zu IOException.de interviewt. Die Website zur Trackback-Sendung findet ihr da: http://trackback.fritz.de/2012/02/11/trb-265-acta-schwarzer-marz-urheberrecht-pinterest-ioexception/ Das Interview gibt es an der Stelle 49:42.]]></description>
			<content:encoded><![CDATA[<p>Verganenen Samstag wurde ich von Marcus Richter in seiner Sendung <a href='http://trackback.fritz.de/'>Trackback</a> zu IOException.de interviewt. </p>
<p>Die Website zur Trackback-Sendung findet ihr da: <a href='http://trackback.fritz.de/2012/02/11/trb-265-acta-schwarzer-marz-urheberrecht-pinterest-ioexception/'>http://trackback.fritz.de/2012/02/11/trb-265-acta-schwarzer-marz-urheberrecht-pinterest-ioexception/</a></p>
<p>Das Interview gibt es an der Stelle 49:42. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/02/13/ioexception-de-bei-trackback/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTTP-Methoden und ihre Semantiken</title>
		<link>http://www.ioexception.de/2012/02/11/http-methoden-und-ihre-semantiken/</link>
		<comments>http://www.ioexception.de/2012/02/11/http-methoden-und-ihre-semantiken/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 12:58:12 +0000</pubDate>
		<dc:creator>Benjamin Erb</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://www.ioexception.de/?p=1438</guid>
		<description><![CDATA[HTTP ist vermutlich das erfolgreichste Anwendungsprotokoll überhaupt. Ohne HTTP wäre das WWW nicht denkbar, und ein wesentlicher Teil des gesamten Internet-Traffics ist auf HTTP zurückzuführen. HTTP ist ein zustandsloses, Request-Response basiertes Protokoll, das heißt es gibt ein (einziges) Muster, über das die beteiligten Kommunikationspartner Daten austauschen: Clients initieren immer die Kommunikation, fordern eine Resource per [...]]]></description>
			<content:encoded><![CDATA[<p>HTTP ist vermutlich das erfolgreichste Anwendungsprotokoll überhaupt. Ohne HTTP wäre das WWW nicht denkbar, und ein wesentlicher Teil des gesamten Internet-Traffics ist auf HTTP zurückzuführen. HTTP ist ein zustandsloses, Request-Response basiertes Protokoll, das heißt es gibt ein (einziges) Muster, über das die beteiligten Kommunikationspartner Daten austauschen: Clients initieren immer die Kommunikation, fordern eine Resource per Request an, und Server antworten wiederum per Response. Je nach Art der Anfrage, können sowohl Request als auch Response Nutzdaten, sogenannte Entities enthalten. Im überwiegenden Fall sind das HTML-Dokumente oder Mediendateien, die bei der Response übermittelt werden.</p>
<p>Die eigentliche Semantik des Aufrufs im Sinne von HTTP bestimmt die verwendete Methode, die Bestandteil des Requests ist. Das absolute Arbeitstier des Webs ist GET, allerdings existieren noch weitere Methoden: POST, HEAD, PUT, DELETE und OPTIONS. Deren Bedeutung und korrekte Verwendung ist allgemein jedoch weniger bekannt. Deswegen möchte ich diese Methoden kurz vorstellen und ihre Funktionen erklären. Dafür gehe ich nun zunächst auf die verschiedenen Merkmale ein, die Methoden besitzen nach <a href="http://www.w3.org/Protocols/rfc2616/rfc2616">RFC 2616</a> können.</p>
<p>Eine Methode gilt als sicher, wenn sie keine Seiteneffekte erzeugt. Mögliche Seiteneffekte wären zum Beispiel das Ändnern einer Resource oder das Durchführen eines Logouts. Zu einem gewissen Grad sind auch Seiteneffekte bei sicheren Methoden erlaubt. Allerdings nur dann, wenn sie nicht explizit vom Benutzer intendiert sind. Darunter fallen zum Beispiel Logfiles, die Zugriffe aufzeichnen oder Zähler, die Zugriffe aufsummieren.</p>
<p>Als idempotent bezeichnet man eine HTTP Methode dann, wenn die mehrfache Ausführung eines Requests die gleichen Seiteneffekte besitzt wie ein einmaliges Ausführen. Ob ein Request für das Löschen einer Resource einfach oder mehrfach ausgeführt wird, das Resultat bleibt ist identisch, die Resource wurde gelöscht. Idempotenz ist für verteilten Systemten eine interessante Aufrufsemantik, da sie es im Fehlerfall ermöglicht, einen Request zu wiederholen (<a href="http://de.wikipedia.org/wiki/Remote_Procedure_Call#Fehlersemantik">At-least-once</a>). Bei nicht idempotenten Methoden ist dies nicht möglich. Ein Beispiel hierfür wäre eine Onlinebanking-Sitzung, die zur Übermittlung einer Überweisung eine nicht-idempotente Methode verwendet. Bricht nun während des Requests die Verbindung ab, so ist unklar, ob eine erneute Ausführung zu mehrfachen Überweisungen führt oder nicht (in der Praxis wird dies z.B. durch Tokens auf Anwendungsebene verhindert).</p>
<p>Eine dritte Eigenschaft einer Methode ist Möglichkeit, ob bei ihrer Verwendung Responses gecachet werden können. Es ist offensichtlich, dass dies nur für Methoden ohne Seiteneffekte funktioneren kann. Ebenfalls ist Caching nur dann sinnvoll und erlaubt, wenn die Responses entsprechende Caching-Informationen bereitstellen. Dies ist unter anderem möglich durch die Angabe von Expire-Zeiten, Datum der letzten Änderungen oder Entity-Tag-Angaben. Sie beschreiben, wie lange das Resultat einer Response weiterverwendet werden kann, ohne einen erneuten Request zu versenden. Beziehungsweise geben sie an, wie bei einem konditionellen Request übermittelt werden kann, was die bekannte Version des Entities ist. Sofern sich die Resource nicht verändert hat, muss sie somit nicht erneut übertragen werden.</p>
<table width="374">
<tbody>
<tr>
<td width="25%"></td>
<td width="25%">safe</td>
<td width="25%">idempotent</td>
<td width="25%">cachable</td>
</tr>
<tr>
<td style="font-family: monospace; font-weight: bold;">HEAD</td>
<td>✓</td>
<td>✓</td>
<td>(✓)</td>
</tr>
<tr>
<td style="font-family: monospace; font-weight: bold;">GET</td>
<td>✓</td>
<td>✓</td>
<td>(✓)</td>
</tr>
<tr>
<td style="font-family: monospace; font-weight: bold;">PUT</td>
<td></td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td style="font-family: monospace; font-weight: bold;">DELETE</td>
<td></td>
<td>✓</td>
<td></td>
</tr>
<tr>
<td style="font-family: monospace; font-weight: bold;">POST</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>GET</strong><br />
GET ist die meistverwendete Methode und dient zur Abfrage einer Resource. Sie ist sowohl sicher als auch idempotent, und erlaubt Caching. Erweiterte Funktionen von GET erlauben konditionale Abfragen, sowie partielle Abfragen. Ersteres erlaubt eine effiziente Benutzung von Caching, um nur dann eine Resource erneut zu laden, wenn sie sich auch wirklich verändert hat oder aktualisiert wurde. Letzteres dient dazu, nur Teile einer Resource abzurufen. Das kann zum Beispiel bei einer Resource, die eine Videodatei darstellt, hilfreich sein und erlaubt das Springen im Bytestream des Videos.</p>
<p><strong>HEAD</strong><br />
HEAD besitzt prinzipiell die gleiche Semantik wie GET, allerdings wird keine Repräsentation der Resource mitgesendet, das heißt die Response enthält kein Entity. Somit ist HEAD nützlich, um Metadaten über die Resource abzufragen, oder überhaupt des Existenz zu überprüfen.</p>
<p><strong>PUT</strong><br />
Mit PUT kann eine Resource erstellt oder ersetzt werden. Hierfür ist im Request ein Entity enthalten, dass eine neue Repräsentation der Resource enthält. Die zu erstellende/ändernde Resource wird durch die URI eindeutig beschrieben.</p>
<p><strong>DELETE</strong><br />
DELETE entfernt die durch die URI identifizierte Resource.</p>
<p><strong>POST</strong><br />
Als letzte Methode wird POST für alle weiteren Aufrufe verwendet, insbesondere wenn keinerlei Zugeständnisse bezüglich der Semantiken gemacht werden (können), insbesondere Idempotenz. In der Praxis dient POST ebenfalls zum Erzeugen und Ändern von Resourcen, aber auch für viele weitere Aktionen, die via POST quasi &#8216;getunnelt&#8217; werden.</p>
<p>Für weitere Informationen empfiehlt es sich, <a href="http://www.w3.org/Protocols/rfc2616/rfc2616">RFC 2616</a> zu lesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioexception.de/2012/02/11/http-methoden-und-ihre-semantiken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

