<?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>Rogers Blog</title>
	<atom:link href="http://rbraun.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://rbraun.net/blog</link>
	<description>Japanologie / Informatik</description>
	<lastBuildDate>Wed, 18 Aug 2010 15:23:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Podcasts hosten auf Amazon S3</title>
		<link>http://rbraun.net/blog/?p=77</link>
		<comments>http://rbraun.net/blog/?p=77#comments</comments>
		<pubDate>Wed, 18 Aug 2010 15:23:39 +0000</pubDate>
		<dc:creator>Roger Braun</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amazon s3]]></category>
		<category><![CDATA[humoralpathologie]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=77</guid>
		<description><![CDATA[Wie manche Wissen mache ich mit ein paar anderen Leuten einen skeptischen Podcast auf http://humoralpathologie.de. Bisher habe ich die Dateien auf meinem VPS-Server gehostet. Der ist aber einerseits etwas lahm, andererseits will ich nicht plötzlich mit einer Riesenrechnung für den Traffic konfrontiert werden. Die Lösung ist recht einfach: Amazon S3, ein Storage-System in der Cloud [...]]]></description>
			<content:encoded><![CDATA[<p>Wie manche Wissen mache ich mit ein paar anderen Leuten einen skeptischen Podcast auf <a href="http://humoralpathologie.de">http://humoralpathologie.de</a>. Bisher habe ich die Dateien auf meinem VPS-Server gehostet. Der ist aber einerseits etwas lahm, andererseits will ich nicht plötzlich mit einer Riesenrechnung für den Traffic konfrontiert werden. Die Lösung ist recht einfach: Amazon S3, ein Storage-System in der Cloud mit sehr günstigen Preisen.<br />
Der Speicher kostet derzeit 0.15 $ pro Gigabyte und pro Monat, was bei der momentanen Podcastgröße von etwa 50 MB pro Datei immerhin 20 Podcasts bedeutet. Da wir etwa alle 2 Wochen einen neuen Podcast aufnehmen müssen wir also Ende des Jahres mit monatlichen Speichergebühren von etwa 30 Cent rechnen.<br />
Datenübertragung bis zu einem Gigabyte im Monat sind sogar kostenlos und fangen danach ebenfalls bei 15 US-Cent pro GB an. Momentan haben wir etwa 400 Downloads pro Monat, was Kosten unter 3 Euro verursacht.</p>
<p>Die Konfiguration ist sehr einfach, daher werde ich hier keine Anleitung liefern: Man lädt einfach die Dateien dort hoch und bekommt einen Downloadlink. </p>
<p>Wie hostet ihr eure Podcasts?</p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=77</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wider die großen Worte</title>
		<link>http://rbraun.net/blog/?p=74</link>
		<comments>http://rbraun.net/blog/?p=74#comments</comments>
		<pubDate>Wed, 18 Aug 2010 02:26:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gender]]></category>
		<category><![CDATA[japanologie]]></category>
		<category><![CDATA[popper]]></category>
		<category><![CDATA[zeit]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=74</guid>
		<description><![CDATA[Auf Zeit.de findet sich (jedenfalls soweit dies der OCR-Software möglich war) ein Artikel von Karl Popper, in dem er seine Kollegen kritisiert, sich zu unklar auszudrücken. Dies zum Teil mit voller Absicht, um den eigenen Gedanken Gewicht zu verleihen.
Was ich &#8216;die Sünde gegen den heiligen Geist genannt habe — die Anmaßung des dreiviertel Gebildeten —, [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Zeit.de findet sich (jedenfalls soweit dies der OCR-Software möglich war) ein <a href="http://www.zeit.de/1971/39/Wider-die-grossen-Worte">Artikel</a> von Karl Popper, in dem er seine Kollegen kritisiert, sich zu unklar auszudrücken. Dies zum Teil mit voller Absicht, um den eigenen Gedanken Gewicht zu verleihen.</p>
<blockquote><p><em>Was ich &#8216;die Sünde gegen den heiligen Geist genannt habe — die Anmaßung des dreiviertel Gebildeten —, das ist das Phrasendreschen, das Vorgeben einer Weisheit, die wir nicht besitzen. Das Kochrezept ist: Tautologien und Trivialitäten gewürzt mit paradoxem Unsinn. Ein anderes Kochrezept ist: Schreibe schwer verständlichen Schwulst und füge von Zeit zu Zeit Trivialitäten hinzu. Das schmeckt dem Leser, der geschmeichelt ist, in einem so „tiefen&#8221; Buch Gedanken zu finden, die er schon selbst einmal gedacht hat. (Wie heute jeder sehen kann — des Kaisers neue Kleider machen Mode!)</em></p></blockquote>
<p>Vor kurzem erreichte mich eine Email mit einer Einladung zu einem Gender-Workshop in Frankfurt. Kostprobe:</p>
<blockquote><p><em>Wird die Normativität der dualistisch angelegten Geschlechter-Matrix aufgehoben? Inwiefern ist eine Diversifizierung der Männlichkeits- und Weiblichkeitsbilder festzustellen? Wie wirkt sich die Pluralisierung der Lebensstile aus? Was bedeutet die zunehmende Differenzierung innerhalb der Gruppen der Frauen und Männer und welche Bedeutung haben dabei Machtrepräsentationen im Spannungsfeld der Intersektionalität?</em></p></blockquote>
<p>Die Geschlechtermatrix kann übrigens manchmal auch binär oder bipolar sein! Hier übergebe ich wieder an Popper, der wiederum Goethe zitiert:</p>
<blockquote><p><em>Gewöhnlich glaubt der Mensch, wenn er nur Worte hört, es müsse sich dabei doch auch was denken lassen.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=74</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Hofpfisterei und Typografie</title>
		<link>http://rbraun.net/blog/?p=67</link>
		<comments>http://rbraun.net/blog/?p=67#comments</comments>
		<pubDate>Thu, 11 Feb 2010 20:05:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=67</guid>
		<description><![CDATA[Die Hofpfisterei (eine Bäckerei für Leute die auch zum Coiffeur gehen) hat eine Filiale in Tübingen am Marktplatz. Beim letzten vorbeispazieren fiel mir auf, dass die Schrift des Namenszugs beim &#8220;fi&#8221; weder Kerning noch eine Ligatur benutzt. Das sieht komisch aus, gerade weil das beim &#8220;fp&#8221; kurz davor noch eingerückt wird, beim &#8220;fi&#8221; aber ein [...]]]></description>
			<content:encoded><![CDATA[<p>Die Hofpfisterei (eine Bäckerei für Leute die auch zum Coiffeur gehen) hat eine Filiale in Tübingen am Marktplatz. Beim letzten vorbeispazieren fiel mir auf, dass die Schrift des Namenszugs beim &#8220;fi&#8221; weder Kerning noch eine Ligatur benutzt. Das sieht komisch aus, gerade weil das beim &#8220;fp&#8221; kurz davor noch eingerückt wird, beim &#8220;fi&#8221; aber ein riesiges Loch ist.</p>
<p>Ansichtsexemplar:</p>
<p><a href="http://rbraun.net/blog/wp-content/uploads/2010/02/500px-Hofpfisterei_logo.svg_.png"><img class="aligncenter size-full wp-image-68" title="500px-Hofpfisterei_logo.svg" src="http://rbraun.net/blog/wp-content/uploads/2010/02/500px-Hofpfisterei_logo.svg_.png" alt="" width="500" height="549" /></a></p>
<p>Ich hab ein bisschen damit rumgespielt und das &#8220;fi&#8221; ligaturisiert. Sieht immer noch irgendwie doof aus, was aber eher an meiner Fontdesignschwäche als an der Idee liegen sollte.</p>
<p>Ergebnis:</p>
<p style="text-align: center;"><a href="http://rbraun.net/blog/wp-content/uploads/2010/02/Hofpfisterei_logo_mod.png"><img class="aligncenter size-full wp-image-69" title="Hofpfisterei_logo_mod" src="http://rbraun.net/blog/wp-content/uploads/2010/02/Hofpfisterei_logo_mod.png" alt="" width="500" height="550" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=67</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein sehr einfaches Translation-Memory-System mit Sinatra</title>
		<link>http://rbraun.net/blog/?p=57</link>
		<comments>http://rbraun.net/blog/?p=57#comments</comments>
		<pubDate>Sat, 06 Feb 2010 17:46:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[japanisch]]></category>
		<category><![CDATA[Klassisches Japanisch]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[translation memory]]></category>
		<category><![CDATA[übersetzungspeicher]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=57</guid>
		<description><![CDATA[Wie manchem bekannt arbeite ich zur Zeit mit einigen Anderen an einer Übersetzung von Sanshôdayû, aber nicht dem Film sondern dem klassisch japanischen Original aus dem 17. Jhd. Wir benutzen zur Übersetzung eine selbst geschriebene Webanwendung mit der wir jeweils zu kurzen Textabschnitten Kommentare, Anmerkung, Fragen und natürlich die fertigen Übersetzungen schreiben und darüber diskutieren [...]]]></description>
			<content:encoded><![CDATA[<p>Wie manchem bekannt arbeite ich zur Zeit mit einigen Anderen an einer Übersetzung von <a href="http://en.wikipedia.org/wiki/Sansho_the_Bailiff">Sanshôdayû</a>, aber nicht dem Film sondern dem klassisch japanischen Original aus dem 17. Jhd. Wir benutzen zur Übersetzung eine selbst geschriebene Webanwendung mit der wir jeweils zu kurzen Textabschnitten Kommentare, Anmerkung, Fragen und natürlich die fertigen Übersetzungen schreiben und darüber diskutieren können.</p>
<p>Ein Problem dass sich öfter stellt ist dass man eine Formulieren oder ein Wort schon mal übersetzt hat, aber sich nicht mehr erinnern kann wie genau. Wenn man nun jedesmal anders übersetzt können aus im Original gleichen Formulierungen in der Übersetzung völlig verschiedene Sätze werden. Die Struktur des Textes wird dadurch verfälscht.</p>
<p>Zum Glück hat man natürlich längst Lösungen für so etwas erfunden (auch wenn die niemand benutzt)!  <a href="http://de.wikipedia.org/wiki/Übersetzungsspeicher">Übersetzungsspeicher</a> halten Quell- und Zieltexte in einer Datenbank vor und stellen Möglichkeiten zur Verfügung zu einem gegebenen Quellsatz eine mögliche Übersetzung zurückzuliefern. In unserem Beispiel werden die in der Datenbanken vorhandenen Sätze auf ihre Ähnlichkeit geprüft und danach sortiert.</p>
<p>Ich habe ein (sehr) einfaches TM-System mit <a href="http://www.sinatrarb.com/">Sinatra</a> und <a href="http://www.monkrb.com/">Monk</a> geschrieben. Der <a href="http://github.com/rogerbraun/SinatraTM">Code</a> ist auf Github.</p>
<p>Die Datenbank stellt jeden Eintrag als ein Tupel dar, dass aus Quell- Und Zieltext besteht. Sucht man einen Satz wird dieser mit jedem Quellsatz in der Datenbank verglichen und seine <a href="http://de.wikipedia.org/wiki/Levenshtein-Distanz">Levenshtein-Distanz</a> berechnet. Da es hierfür schon Bibliotheken gibt ist der eigentliche Suchalgorithmus sehr klein.</p>
<pre name="code" class="ruby">def get_best_matches(phrase)
      $KCODE = "u"
      Translation.all.map{|item| [::Text::Levenshtein.distance(phrase,item.source),item.source,item.target]}.sort_by{|item| item[0]}
end</pre>
<p>Mal schauen ob&#8217;s bei der Übersetzung hilft.</p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=57</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einfacher rekursiver Sortieralgorithmus in Ruby</title>
		<link>http://rbraun.net/blog/?p=46</link>
		<comments>http://rbraun.net/blog/?p=46#comments</comments>
		<pubDate>Sat, 23 Jan 2010 12:06:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Informatik]]></category>
		<category><![CDATA[funktionale programmierung]]></category>
		<category><![CDATA[rekursion]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=46</guid>
		<description><![CDATA[
def insert_into_sorted_helper(sorted, element, rest)

  if rest.size == 0 then
    sorted &#60;&#60; element
  elsif rest[0] &#62;= element then
    (sorted &#60;&#60; element).concat(rest)
  else
    insert_into_sorted_helper(sorted &#60;&#60; rest[0], element, rest[1..-1])
  end 

end

# Insert an element into a already sorted list. The resulting list stays sorted.
def insert_into_sorted(sorted, [...]]]></description>
			<content:encoded><![CDATA[<pre name="code" class="ruby">
def insert_into_sorted_helper(sorted, element, rest)

  if rest.size == 0 then
    sorted &lt;&lt; element
  elsif rest[0] &gt;= element then
    (sorted &lt;&lt; element).concat(rest)
  else
    insert_into_sorted_helper(sorted &lt;&lt; rest[0], element, rest[1..-1])
  end 

end

# Insert an element into a already sorted list. The resulting list stays sorted.
def insert_into_sorted(sorted, element)
  insert_into_sorted_helper([],element,sorted)
end

def recursive_sort_helper(sorted, unsorted)

  if unsorted.size == 0 then
    sorted
  else
    first = unsorted[0]
    rest = unsorted[1..-1]
    recursive_sort_helper(insert_into_sorted(sorted, first), rest)
  end
end

# Sorts a list
def recursive_sort(unsorted)
  recursive_sort_helper([],unsorted)
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=46</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Japanologie, Bachelor, Unistreiks</title>
		<link>http://rbraun.net/blog/?p=43</link>
		<comments>http://rbraun.net/blog/?p=43#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:52:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=43</guid>
		<description><![CDATA[Der folgende Beitrag ist eine Reaktion auf einen Gastbeitrag bei Astrodicticum simplex, daher sollte man sich diesen vorher durchgelesen haben.
Ich studiere ebenfalls Japanologie, allerdings in Tübingen. Ich selbst studiere noch die Magistervariante, kenne aber die Nöte meiner Bachelor/Masterkommilitonen durchaus. 
Hier sieht die Situation zum Teil ähnlich aus. Die Anzahl der Neuanfänger wurde auf 24 Hauptfächler [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Der folgende Beitrag ist eine Reaktion auf einen Gastbeitrag bei <a href="http://www.scienceblogs.de/astrodicticum-simplex/2009/12/animes-und-demonstrationen-japanologie-und-die-proteste-an-der-universitat-halle.php">Astrodicticum simplex</a>, daher sollte man sich diesen vorher durchgelesen haben.</em></p></blockquote>
<p>Ich studiere ebenfalls Japanologie, allerdings in Tübingen. Ich selbst studiere noch die Magistervariante, kenne aber die Nöte meiner Bachelor/Masterkommilitonen durchaus. </p>
<p>Hier sieht die Situation zum Teil ähnlich aus. Die Anzahl der Neuanfänger wurde auf 24 Hauptfächler und ebenso viele Nebenfächler reduziert, Geld für eine weitere Lektorenstelle (oder gar eine Professur) ist natürlich ebenfalls nicht vorhanden. Soweit kann ich die Probleme nur bestätigen.</p>
<p>Einen NC halte ich allerdings für eine absolut katastrophale Lösung des Problems. Genau so gut könnte man Würfeln oder Lose ziehen. Jemandem der sein Mathe-Abitur mit 1,0 bestanden hat eine bessere Eignung für das Studium der Japanologie zu bescheinigen als dem, der leider nur eine 3 geschafft hat, ist absurd. So weit ich weiß gibt keine Statistiken die einen Zusammenhang zwischen Abiturnote (die sich ja aus wer-weiß-was zusammensetzen kann) und den späteren Noten im Japanologiestudium nachweisen. Das NC-System wird nur deshalb zur Begrenzung eingesetzt weil es irgendwie gerecht und objektiv aussieht. Ich denke ein Lossystem wäre gerechter.</p>
<p>Die Kritik an den schwammigen Aussagen kann ich ebenfalls nicht  nachvollziehen. &#8220;Wir wollen doch was lernen, und das möglichst schnell, damit wir schnell arbeiten können&#8221; ist die vom Bachelorsystem aufgezwungene Vorstellung des Sinns der Universität. Hier so zu tun als sei die (faktisch vorhandene) Verschulung des Studiums nur eine Problem für Faule, die eigentlich gar kein Interesse haben, finde ich schon beinahe beleidigend. Sicherlich gibt es viele die einfach nur möglichst schnell studieren wollen um möglichst bald in einen Job zu kommen. Die konnten das aber auch schon im alten Magister machen. Das Bachelorsystem beraubt einen der Möglichkeit, sein Lerntempo (und auch den Lehrstoff) selbst zu bestimmen. Gerade in der Japanologie wird das Studium dadurch zu einem geadelten Japanischkurs, was es eben eigentlich nicht ist. In den ersten 2 Jahren (ca.) lernt man hauptsächlich die japanische Sprache und grundlegende Kenntnisse über Wirtschaft, Geschichte und Gesellschaft. Der Bachelorstudent hat jetzt noch ein Jahr um sich echte Inhalte anzueignen, was absolut illusorisch ist. Der Bachelorstudiengang ohne anschließenden Master ist in der Japanologie vollkommen unsinnig, da einem schlicht die Zeit fehlt sich über die Kenntnisse des Japanischen hinaus etwas anzueignen (und vielleicht auch mal einen Kurs in der Indologie, in der Informatik, in den Religionswissenschaften zu besuchen). Aber im Sinne der Gleichmacherei bei der Einführung der neuen Studiengänge wurde so etwas natürlich nicht bedacht. Wohlgemerkt: Der Bachelor ist ein sehr guter Japanischkurs! Aber eben auch nicht viel mehr.</p>
<p>Das Problem an der Anwesenheitspflich ist, dass (wieder einmal) sinnvolle allgemeine Regeln (bei mangelnder Anwesenheit kein bestehen) durch unsinnig spezifische, bürokratische und unpersönliche Vorschriften ersetzt werden (3 mal gefehlt -> durchgefallen). Da die Bachelorstudenten sich auch nicht während eines Kursen entscheiden können, ihn doch erst später zu machen, sondern vor Beginn des Kurses sich fest für diesen Anmelden müssen, bedeutet es für einige die Exmatrikulation wenn sie einmal zu oft unentschuldigt fehlen. Regelungen zur Anwesenheit sollten immer individuell sein. Muss diejenige, die schon 2 Jahre in Japan gelebt hat und jede Sprachklausur mit Bestnoten abschließt wirklich in jeder Stunde anwesend sein? </p>
<p>Das zusätzlich auch noch JEDE Note in das Bachelorzeugnis mit eingeht verstärkt den Stress noch: Plötzlich muss man in jedem Kurs gut sein. In einem thematisch so breiten Fach wie der Japanologie ist das aber ebenfalls unsinnig: Warum sollte ich besser klassisches Japanisch aus dem 12. Jahrhundert übersetzen können wenn ich im Toyota-Kurs gut war (andersrum gilt natürlich das selbe)?</p>
<p>Ein vorläufiges Schlusswort:<br />
Die Umstellung auf das BA/MA-System ist eine Einschränkung der Freiheit der Studenten wie der Dozenten, die Universität so zu gestalten wie sie es für sinnvoll halten. Inhalte werden bürokratischen (angeblichen) Zwängen untergeordnet, Studenten werden zum durchhecheln des vorgegebenen Stoffes gezwungen. Dich selbst mit den eigenen Interessen zu beschäftigen wird nahezu unmöglich. Wissenschaftlich kann dies der deutschen Japanologie auf Dauer nur Schaden. Das sich das einzige verbliebene deutsche Journal (die &#8220;Japanstudien&#8221;) nun in &#8220;Contemporary Japan&#8221; umbenannt hat und auf Englisch als Hauptsprache umstellt ist da ja schon fast nur konsequent. Ob die Streiks hier etwas bringen weiß ich nicht. Das jedoch anscheinend endlich auch bei den Studenten das Bewusstsein wächst, dass hier etwas nicht in Ordnung ist, kann ich nur begrüßen.</p>
<p><a href="http://www.scienceblogs.de/mt/mt-tb.cgi/7504"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=43</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JLPT-Daten in mundgerechten Stücken für Filemaker</title>
		<link>http://rbraun.net/blog/?p=42</link>
		<comments>http://rbraun.net/blog/?p=42#comments</comments>
		<pubDate>Wed, 02 Dec 2009 23:55:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=42</guid>
		<description><![CDATA[Heute mal ein wenig Ruby. Wir wollen die JLPT-Dateien des EDICT-Projekts so umwandeln, das man die Datei leicht in eine Filemaker-Datenbank importieren kann. Man könnte die Umwandlung auch in Filemaker selbst vornehmen, allerdings ist das deutlich komplizierter.
Das Standardformat der JLPT-Dateien ist
Schreibung [Lesung] /Bedeutung1/Bedeutung2.../Bedeutungen/
Es kommt also erst die Schreibung, dann die Lesung in eckigen Klammern und [...]]]></description>
			<content:encoded><![CDATA[<p>Heute mal ein wenig Ruby. Wir wollen die <a href="http://www.jlpt.jp/e/">JLPT</a>-Dateien des <a href="http://www.csse.monash.edu.au/~jwb/edict.html">EDICT</a>-Projekts so umwandeln, das man die Datei leicht in eine Filemaker-Datenbank importieren kann. Man könnte die Umwandlung auch in Filemaker selbst vornehmen, allerdings ist das deutlich komplizierter.</p>
<p>Das Standardformat der JLPT-Dateien ist</p>
<pre><em>Schreibung [Lesung] /Bedeutung1/Bedeutung2.../Bedeutungen/</em></pre>
<p>Es kommt also erst die Schreibung, dann die Lesung in eckigen Klammern und schließlich die englischen Übersetzungen in Slashes. </p>
<p>Um eine Datei zum Lesen zu öffnen kann man in Ruby folgendes schreiben:
<pre><em>input = File.open("jlpt-voc-4-extra.utf")</em></pre>
<p>Die Datei kann man jetzt über <b>input</b> ansprechen. Eine Ausgabedatei brauchen wir auch noch, also machen wir
<pre><em>output = File.open("jlpt-converted.tab","w:UTF-16LE")</em></pre>
<p>Wir wollen eine tabseparierte Ausgabedatei erstellen, weil diese leicht von Filemaker importiert werden können. Als Ausgabekodierung setzen wir UTF-16.</p>
<p>Nun müssen wir die Datei Zeilenweise durchgehen und in die Einzelteile auftrennen. Die Datei-Klasse von Ruby kann hierfür <b>each</b> verwenden. Ein Beispiel:
<pre name="code" class="ruby">input.each do |line|
  puts line
end</pre>
<p>Dieser Code würde jede Zeile einmal ausgeben. <em>Puts</em> gibt das aus was ihm übergeben wird und beginnt eine neue Zeile.</p>
<p>Die Schreibung ist alles was sich links vom ersten Leerzeichen befindet. Wenn wir die Zeile an den Leerzeichen in kleine Teile zerhacken könnten wäre es also das erste Stückchen. Genau das macht der <b>split</b>-Befehl. Unser neues Beispiel:
<pre name="code" class="ruby">input.each do |line|
  schreibung = line.split(" ")[0]
  puts schreibung
end<</pre>
<p>Nun gibt unser Code die Schreibung aus! <em>line.split(" ")</em> gibt ein Array zurück, also eine Liste von Stückchen. Diese Stückchen lassen sich über <b>[Nummer]</b> ansprechen. Da bei 0 angefangen wird zu zählen ist das erste Stückchen also <b>[0]</b>.</p>
<p>Die Lesung zu filtern ist schon etwas schwerer. Die Lösung:
<pre name="code" class="ruby">input.each do |line|
  schreibung = line.split(" ")[0]
  lesung = line[/\[(.*)\]/,1] || schreibung
  puts schreibung + " " + lesung
end
</pre>
<p>Das sieht kompliziert aus, ist aber eigentlich auch einfach. Das zwischen den eckigen Klammern bei <b>line</b> ist ein <b>regulärer Ausdruck</b>. Reguläre Ausdrücke sind speziell dafür gemacht um Textstücke herauszufiltern. In Ruby sind reguläre Ausdrücke immer von Slashes (/Ausdruck/) umgeben, der eigentliche Ausdruck in unserem Fall ist also <b>\[(.*)\]</b>. In regulären Ausdrücken passen bestimmt Zeichen auf bestimmte andere Zeichen. Wenn ein Zeichen passt wird es herausgefiltert. Alphanumerische Zeichen passen auf sich selbst. Beispiele:
<pre><em>"Hallo, wie geht's?"[/Hallo/] => "Hallo"
"Hallo, wie geht's?"[/llo/] => "llo"
"Hallo, wie geht's?"[/Bundespräsident Horst Köhler/] => nil</em></pre>
<p>Gibt es keine passenden Zeichen gibt der Ausdruck <b>nil</b> zurück, was in Ruby "kein Ergebnis" bedeutet. Uns interessieren aber nun beliebige Zeichen, die sich zwischen zwei eckigen Klammern befinden. Wir wollen also etwas wie <b>[<em>irgendwas</em>]</b>. Leider habe eckige Klammern schon eine besondere Bedeutung in regulären Ausdrücken, d.h. sie passen nicht auf sich selbst. Eckige Klammern passen auf <b>\[</b> und <b>\]</b>. Unser neuer Ausdruck ist also <b>\[<em>irgendwas</em>\]</b>. Jetzt müssen wir nur noch <em>irgendwas</em> als regulären Ausdruck schreiben. Wir wollen eine beliebige Anzahl von beliebigen Zeichen filtern. Ein Punkt (also"<b>.</b>") passt auf genau ein beliebiges Zeichen. <b>"[a]"[<span style="color: #FF0000">/</span><span style="color: #00FF00">\</span>[.<span style="color: #00FF00">\</span>]<span style="color: #FF0000">/</span>]</b> würde also <b>"[a]"</b> zurückgeben. Auf <b>"[aaaa]"</b> würde es aber schon nicht mehr passen! Zum Glück gibt es auch den Ausdruck <b>*</b>, der "beliebig viele vom vorherigen Zeichen" bedeutet. <b>.*</b> bedeutet also "beliebig viele beliebige Zeichen. Genau was wir brauchen! <b>[<span style="color: #FF0000">/</span><span style="color: #00FF00">\</span>[.*<span style="color: #00FF00">\</span>]<span style="color: #FF0000">/</span>]</b> passt also auch auf <b>[わたし]</b> und gibt in diesem Fall das selbe zurück.<b>"赤い [あかい] /(adj) red/(P)/"[<span style="color: #FF0000">/</span><span style="color: #00FF00">\</span>[.*<span style="color: #00FF00">\</span>]<span style="color: #FF0000">/</span>]</b> würde <b>"[あかい]"</b> zurückgeben. Um die Klammern los zu werden machen wir eine Gruppe aus den "beliebigen Zeichen", indem wir normale Klammern um sie herum machen. Jetzt gibt uns der Ausdruck mehrere Gruppen zurück. Mit <b>",1"</b> sagen wir ihm, das wir die zweite Gruppe haben wollen. Die erste Gruppe ist alles was passt (also <b>"[あかい]"</b>) und hat die Nummer 0. Unsere zweite hat die Nummer 1, also ist unser endgültiger Ausdruck <b>[<span style="color: #FF0000">/</span><span style="color: #00FF00">\</span>[(.*)<span style="color: #00FF00">\</span>]<span style="color: #FF0000">/</span>]</b> und wird so verwendet:
<pre><em>lesung = line[<span style="color: #FF0000">/</span><span style="color: #00FF00">\</span>[(.*)<span style="color: #00FF00">\</span>]<span style="color: #FF0000">/</span>,1]</b></em></pre>
<p>Manche Einträge haben aber in der JLPT-Datei gar keine Lesung! Katakana-Wörter stehen nur so da, unser Ausdrück würde also <b>nil</b> zurückgeben, da keine passenden Stücke gefunden werden. Dafür ist nun <b> || schreibung</b> da. Es bedeutet "Wenn das vorherige <b>nil</b> war, dann nimm das folgende". Wenn also keine Lesung in der JLPT-Datei steht wird einfach die Schreibung als Lesung genommen. Wenn man sich nun noch mal den Code oben ansieht wird man merken dass er gar nicht so schwer ist wie zunächst gedacht. Die Bedeutung bekommt man genau so heraus, darum hier das fertige Programm:
<pre name="code" class="ruby">input = File.open("jlpt-voc-4-extra.utf")
output = File.open("jlpt-converted.tab","w:UTF-16LE")
input.each do |line|
  schreibung = line.split(" ")[0]
  lesung = line[/\[(.*)\]/,1] || schreibung
  bedeutung = line[/\/(.*)\//,1]
  output.puts "#{schreibung}\t#{lesung}\t#{bedeutung}" unless line[0] == "#" || line.strip == ""
end
output.close
input.close
</pre>
<p><b>puts</b> wird nun auf <b>output</b> angewendet und schreibt darum alles in eine Datei. <b>\t</b> ist das Zeichen für Tabulator und das ganze wird nur in die Datei geschrieben wenn das erste Zeichen nicht "#" ist oder die ganze Zeile leer ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=42</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Japanische Zeichen und Flash</title>
		<link>http://rbraun.net/blog/?p=40</link>
		<comments>http://rbraun.net/blog/?p=40#comments</comments>
		<pubDate>Sun, 11 Oct 2009 22:18:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=40</guid>
		<description><![CDATA[Es gibt manche japanischen Flash-Applikation deren Text unabhängig von der Kodierungseinstellung im Browser nicht richtig auf westlichen Computern angezeigt wird, etwa diese hier. Um sie richtig anzeigen zu lassen installiert man sich Microsofts AppLocale und führt den Browser unter AppLocale mit der Einstellung für Japanisch aus. Wer Vista benutzt muss ein paar Tricks anwenden bevor [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt manche japanischen Flash-Applikation deren Text unabhängig von der Kodierungseinstellung im Browser nicht richtig auf westlichen Computern angezeigt wird, etwa <a href="http://kiyomizuyh.web.fc2.com/">diese hier</a>. Um sie richtig anzeigen zu lassen installiert man sich Microsofts <a href="http://www.microsoft.com/globaldev/tools/apploc.mspx">AppLocale</a> und führt den Browser unter AppLocale mit der Einstellung für Japanisch aus. Wer Vista benutzt muss ein <a href="http://www.mydigitallife.info/2007/05/26/workaround-to-install-microsoft-applocale-utility-in-windows-vista/">paar</a> <a href="http://www.mydigitallife.info/2007/09/27/workaround-to-run-non-unicode-legacy-setup-or-installer-with-applocale-in-vista/">Tricks</a> anwenden bevor AppLocale läuft. </p>
<p>Grund dafür: Ich schätze, dass die entsprechenden Flash-Dateien keine Angaben über die verwendete Kodierung machen, so dass auf westlichen Systemen auch eine westliche Kodierung benutzt wird, obwohl eine japanische richtig wäre. Das ist allerdings nur geraten, ich habe kein Windows und habe das Problem nur ferndiagnostiziert.</p>
<p>&#8211; </p>
<p>The gist in english:</p>
<p>If you see garbled characters when viewing some japanese page with flash contents and you are sure that you have the right fonts installed, you should try starting the browser with <a href="http://www.microsoft.com/globaldev/tools/apploc.mspx">AppLocale</a> and its japanese setting.</p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s eat: Koelkasts Carbonara</title>
		<link>http://rbraun.net/blog/?p=39</link>
		<comments>http://rbraun.net/blog/?p=39#comments</comments>
		<pubDate>Fri, 18 Sep 2009 17:03:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=39</guid>
		<description><![CDATA[Heute kochen wir die Spaghetti Carbonara von Koelkast! Die mach ich nun schon seit einiger Zeit und sie sind sehr schnell zubereitet, Zutaten sind leicht gefunden und sie schmeckt einfach köstlich. Ich habe eine große Portion gemacht: 500g Spaghetti.
Erstmal: Eine Packung Zwillingspeck in kleine Stücke schneiden.

Den Speck anbraten. Nicht zu früh damit anfangen, sonst ist [...]]]></description>
			<content:encoded><![CDATA[<p>Heute kochen wir die Spaghetti Carbonara von <a href="http://www.chefkoch.de/rezepte/814121185712740/Koelkasts-Spaghetti-Carbonara.html">Koelkast</a>! Die mach ich nun schon seit einiger Zeit und sie sind sehr schnell zubereitet, Zutaten sind leicht gefunden und sie schmeckt einfach köstlich. Ich habe eine große Portion gemacht: 500g Spaghetti.</p>
<p>Erstmal: Eine Packung Zwillingspeck in kleine Stücke schneiden.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1800.54.18.jpg"><!-- s9ymdb:18 --><img class="serendipity_image_left" width="83" height="110"  src="/serendipity/uploads/2009-09-1800.54.18.serendipityThumb.jpg"  alt="" /></a></p>
<p>Den Speck anbraten. Nicht zu früh damit anfangen, sonst ist der Speck zuuu knusprig. Fett braucht man keins, der Speck ist schon fettig genug.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.01.40.jpg"><!-- s9ymdb:22 --><img class="serendipity_image_left" width="110" height="83"  src="/serendipity/uploads/2009-09-1801.01.40.serendipityThumb.jpg"  alt="" /></a></p>
<p>Die Sauce vorbereiten. Sie besteht aus Eigelb, Sahne, Parmesan und gut Salz und Pfeffer. Am besten ist natürlich frischer Parmesan, aber auch die Analogkäsevarianten mit Fantasienamen a la &#8220;Sanosan&#8221; taugen ganz gut. Bisher hat es immer geschmeckt, auch mit nicht so guten Zutaten.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.02.13.jpg"><!-- s9ymdb:23 --><img class="serendipity_image_left" width="110" height="83"  src="/serendipity/uploads/2009-09-1801.02.13.serendipityThumb.jpg"  alt="" /></a></p>
<p>Leider bleibt ein großes Glas Eiklar übrig. Damit kann man zwei Sachen machen: Baiser und langsam im Kühlschrank verfaulen lassen. Ich empfehle ersteres.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.03.08.jpg"><!-- s9ymdb:24 --><img class="serendipity_image_left" width="83" height="110"  src="/serendipity/uploads/2009-09-1801.03.08.serendipityThumb.jpg"  alt="" /></a></p>
<p>Die Nudeln sollte man inzwischen Fertig haben. Wenn die Nudeln an der Wand kleben bleiben sind sie fertig (hihi).</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.11.24.jpg"><!-- s9ymdb:26 --><img class="serendipity_image_left" width="110" height="83"  src="/serendipity/uploads/2009-09-1801.11.24.serendipityThumb.jpg"  alt="" /></a></p>
<p>Den Speck über die Nudeln kippen, die Sauce hinterher. Jetzt muss man schnell rühren damit die Sauce auch wirklich eine solche wird, sonst hat man Rührei.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.13.08.jpg"><!-- s9ymdb:27 --><img class="serendipity_image_left" width="110" height="83"  src="/serendipity/uploads/2009-09-1801.13.08.serendipityThumb.jpg"  alt="" /></a></p>
<p>Fertig! Auf den Teller und genießen. Schmeckt immer lecker und ist einfach zu machen, ich gebe 5 von 5 Eigelben.</p>
<p><a class="serendipity_image_link"  href="http://rbraun.net/serendipity/uploads/2009-09-1801.18.17.jpg"><!-- s9ymdb:28 --><img class="serendipity_image_left" width="110" height="83"  src="/serendipity/uploads/2009-09-1801.18.17.serendipityThumb.jpg"  alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=39</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit Frawa ins Weekend-Feeling</title>
		<link>http://rbraun.net/blog/?p=38</link>
		<comments>http://rbraun.net/blog/?p=38#comments</comments>
		<pubDate>Sun, 13 Sep 2009 22:03:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://rbraun.net/blog/?p=38</guid>
		<description><![CDATA[Wer bei der SPD hatte eigentlich die gute Idee, das Steinmeier dringend ein joghurtigeres Image brauchte?
Beweisstück 1:

Beweisstück 2:

Sogar der Buchstabe der den Kreis berührt&#8230;.
]]></description>
			<content:encoded><![CDATA[<p>Wer bei der SPD hatte eigentlich die gute Idee, das Steinmeier dringend ein joghurtigeres Image brauchte?</p>
<p>Beweisstück 1:<br />
<!-- s9ymdb:15 --><img class="serendipity_image_center" width="602" height="600" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="/serendipity/uploads/zott.png" alt="" /></p>
<p>Beweisstück 2:<br />
<!-- s9ymdb:17 --><img class="serendipity_image_center" width="259" height="254" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="/serendipity/uploads/frawa.png" alt="" /></p>
<p>Sogar der Buchstabe der den Kreis berührt&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://rbraun.net/blog/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
