Rogers Blog

11.02.2010

Hofpfisterei und Typografie

Filed under: Uncategorized — admin @ 21:05

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 “fi” weder Kerning noch eine Ligatur benutzt. Das sieht komisch aus, gerade weil das beim “fp” kurz davor noch eingerückt wird, beim “fi” aber ein riesiges Loch ist.

Ansichtsexemplar:

Ich hab ein bisschen damit rumgespielt und das “fi” ligaturisiert. Sieht immer noch irgendwie doof aus, was aber eher an meiner Fontdesignschwäche als an der Idee liegen sollte.

Ergebnis:

06.02.2010

Ein sehr einfaches Translation-Memory-System mit Sinatra

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 können.

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.

Zum Glück hat man natürlich längst Lösungen für so etwas erfunden (auch wenn die niemand benutzt)!  Übersetzungsspeicher 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.

Ich habe ein (sehr) einfaches TM-System mit Sinatra und Monk geschrieben. Der Code ist auf Github.

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 Levenshtein-Distanz berechnet. Da es hierfür schon Bibliotheken gibt ist der eigentliche Suchalgorithmus sehr klein.

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

Mal schauen ob’s bei der Übersetzung hilft.

23.01.2010

Einfacher rekursiver Sortieralgorithmus in Ruby

Filed under: Informatik — Tags: , , — admin @ 12:06
def insert_into_sorted_helper(sorted, element, rest)

  if rest.size == 0 then
    sorted << element
  elsif rest[0] >= element then
    (sorted << element).concat(rest)
  else
    insert_into_sorted_helper(sorted << 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

08.12.2009

Japanologie, Bachelor, Unistreiks

Filed under: Uncategorized — admin @ 18:52

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 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.

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.

Die Kritik an den schwammigen Aussagen kann ich ebenfalls nicht nachvollziehen. “Wir wollen doch was lernen, und das möglichst schnell, damit wir schnell arbeiten können” 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.

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?

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)?

Ein vorläufiges Schlusswort:
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 “Japanstudien”) nun in “Contemporary Japan” 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.

02.12.2009

JLPT-Daten in mundgerechten Stücken für Filemaker

Filed under: Uncategorized — admin @ 23:55

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 schließlich die englischen Übersetzungen in Slashes.

Um eine Datei zum Lesen zu öffnen kann man in Ruby folgendes schreiben:

input = File.open("jlpt-voc-4-extra.utf")

Die Datei kann man jetzt über input ansprechen. Eine Ausgabedatei brauchen wir auch noch, also machen wir

output = File.open("jlpt-converted.tab","w:UTF-16LE")

Wir wollen eine tabseparierte Ausgabedatei erstellen, weil diese leicht von Filemaker importiert werden können. Als Ausgabekodierung setzen wir UTF-16.

Nun müssen wir die Datei Zeilenweise durchgehen und in die Einzelteile auftrennen. Die Datei-Klasse von Ruby kann hierfür each verwenden. Ein Beispiel:

input.each do |line|
  puts line
end

Dieser Code würde jede Zeile einmal ausgeben. Puts gibt das aus was ihm übergeben wird und beginnt eine neue Zeile.

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 split-Befehl. Unser neues Beispiel:

input.each do |line|
  schreibung = line.split(" ")[0]
  puts schreibung
end<

Nun gibt unser Code die Schreibung aus! line.split(" ") gibt ein Array zurück, also eine Liste von Stückchen. Diese Stückchen lassen sich über [Nummer] ansprechen. Da bei 0 angefangen wird zu zählen ist das erste Stückchen also [0].

Die Lesung zu filtern ist schon etwas schwerer. Die Lösung:

input.each do |line|
  schreibung = line.split(" ")[0]
  lesung = line[/\[(.*)\]/,1] || schreibung
  puts schreibung + " " + lesung
end

Das sieht kompliziert aus, ist aber eigentlich auch einfach. Das zwischen den eckigen Klammern bei line ist ein regulärer Ausdruck. 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 \[(.*)\]. 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:

"Hallo, wie geht's?"[/Hallo/] => "Hallo"
"Hallo, wie geht's?"[/llo/] => "llo"
"Hallo, wie geht's?"[/Bundespräsident Horst Köhler/] => nil

Gibt es keine passenden Zeichen gibt der Ausdruck nil 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 [irgendwas]. 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 \[ und \]. Unser neuer Ausdruck ist also \[irgendwas\]. Jetzt müssen wir nur noch irgendwas als regulären Ausdruck schreiben. Wir wollen eine beliebige Anzahl von beliebigen Zeichen filtern. Ein Punkt (also".") passt auf genau ein beliebiges Zeichen. "[a]"[/\[.\]/] würde also "[a]" zurückgeben. Auf "[aaaa]" würde es aber schon nicht mehr passen! Zum Glück gibt es auch den Ausdruck *, der "beliebig viele vom vorherigen Zeichen" bedeutet. .* bedeutet also "beliebig viele beliebige Zeichen. Genau was wir brauchen! [/\[.*\]/] passt also auch auf [わたし] und gibt in diesem Fall das selbe zurück."赤い [あかい] /(adj) red/(P)/"[/\[.*\]/] würde "[あかい]" 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 ",1" sagen wir ihm, das wir die zweite Gruppe haben wollen. Die erste Gruppe ist alles was passt (also "[あかい]") und hat die Nummer 0. Unsere zweite hat die Nummer 1, also ist unser endgültiger Ausdruck [/\[(.*)\]/] und wird so verwendet:

lesung = line[/\[(.*)\]/,1]

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 nil zurückgeben, da keine passenden Stücke gefunden werden. Dafür ist nun || schreibung da. Es bedeutet "Wenn das vorherige nil 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:

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

puts wird nun auf output angewendet und schreibt darum alles in eine Datei. \t 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.

11.10.2009

Japanische Zeichen und Flash

Filed under: Uncategorized — admin @ 22:18

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 AppLocale läuft.

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.

The gist in english:

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 AppLocale and its japanese setting.

18.09.2009

Let’s eat: Koelkasts Carbonara

Filed under: Uncategorized — admin @ 17:03

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 der Speck zuuu knusprig. Fett braucht man keins, der Speck ist schon fettig genug.

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 “Sanosan” taugen ganz gut. Bisher hat es immer geschmeckt, auch mit nicht so guten Zutaten.

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.

Die Nudeln sollte man inzwischen Fertig haben. Wenn die Nudeln an der Wand kleben bleiben sind sie fertig (hihi).

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.

Fertig! Auf den Teller und genießen. Schmeckt immer lecker und ist einfach zu machen, ich gebe 5 von 5 Eigelben.

13.09.2009

Mit Frawa ins Weekend-Feeling

Filed under: Uncategorized — admin @ 22:03

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….

07.09.2009

Let’s eat: McDonald’s Country McGriddles

Filed under: Uncategorized — admin @ 21:19

Heute gab es nochmal Frühstück bei McDonald’s, dass seit einiger Zeit ein neues Frühstücksmenü hat. Dazu gehört der mysteriöse Country McGriddles. Ein Griddle ist eine große, industrielle Heizplatte auf der Pfannkuchen gebacken werden, und Pfannkuchen sind dann auch der Hauptbestandteil des Country McGriddles (leider kann ich nicht nur McGriddles schreiben, denn es gibt auch noch Sweet McGriddles).

Der Burger besteht aus:
2 x Pfannkuchen mit Ahnornsirupfüllung
1 x gebratenes verquirltes Ei
1 x stark gepfeffertes Schweinefleisch
1 x Käse

Die Pfannkuchen sind süß, der Rest des Burgers ist herzhaft. Die Mischung passt überraschend gut, und auch wenn der Burger ziemlich klein ist macht er doch sehr satt: Wenn man sich die Kalorientabelle anschaut wird man sehen dass es der Burger mit dem größten Energiegehalt ist. Und wahrscheinlich auch dem höchsten Todesgehalt.

Ob dieser Burger wirklich das beste für einen guten Start in den Tag ist wage ich zu bezweifeln. Allerdings ist er eindeutig köstlich. Für 3,20 € mit Kaffee ist er auch gar nicht soo teuer. Ich vergebe 4,5 von 5 verstopften Arterien.

06.09.2009

Rock Band: Wie man sein Drum-Pedal ersetzt

Filed under: Uncategorized — admin @ 10:05

Ich spiele sehr gerne Rockband und dabei meistens das Schlagzeug. Leider ist das Schlagzeug von Rock Band 1 ziemlich schlecht: Es klackert laut und das Pedal ist nur aus Plastik. Das klackern habe ich mit bei eBay gekauften mousepadartigen Aufklebern beheben können (ca. 15,- €), aber das Pedal ist mit durchgebrochen. Das Schlagzeug von Rock Band 2, das die Probleme mehr oder weniger löst, ist in Deutschland nicht erhältlich (bzw. erst ab Mittwoch und dann nur als Teil des Beatles-Sets).


Das wäre an sich gar nicht so schlimm. Man kann beim Hersteller reklamieren und bekommt innerhalb eines Tages ein Ersatzpedal per UPS. Allerdings ist es jetzt schon das zweite Mal, dass mit das passiert ist. Ich habe jetzt also zwei kaputte Plastikpedale rumliegen, eines davon notdürftig mit Klebeband repariert.

Weil das Schlagzeugspielen so Spaß macht habe ich mir vor ein paar Monaten auch ein echtes E-Schlagzeug gekauft. Dessen Fußpedal ist wesentlich besser: Man kann die Spannung einstellen, wesentlich genauer spielen und außerdem ist es vollständig aus Metall. Die Lösung war also naheliegend: Den Sensor aus einem kaputten Pedal ausbauen und mit dem vom E-Schlagzeug vereinigen. Das ging dann auch sehr leicht.

Wenn man das Rock-Band-Pedal erst einmal auseinandergenommen hat bleibt nur noch ein winziger Sensor und ein kleiner Magnet übrig. Das Pedal funktioniert so, dass es jedes mal wenn der Sensor in die nähe des Magneten kommt einen Schlag meldet. Der Magnet war leicht installiert: Da das Pedal aus Metall ist reicht es, ihn unten an die Kette zu tun, dort hält er sich gut von selbst fest. Der Sensor war auch nicht viel schwieriger. Da ich leider kein Klebeband zur Hand hatte musste ich den Sensor mit Hansaplast unter der Pedalkette festkleben.

So funktioniert es auch sehr gut. Das Pedal lässt sich ohne Modifikationen weiterhin auch für das E-Schlagzeug benutzen, aber eben auch an das Rock-Band-Set anschließen. Man kann damit viel leichter spielen. Vor der Operation konnte ich fast alle Lieder (außer Panic Attack) auf Hard spielen und viele auf Expert, jetzt kann ich fast alle auf Expert spielen (und Panic Attack immerhin auf Hard). Das spielen macht so auch viel mehr Spaß. Ich kann die Modifikation also auch Nicht-E-Drummern empfehlen.

Older Posts »

Powered by WordPress