Jan 23
Textmate ist der Editor schlechthin! Nachdem ich jetzt sogar herausgefunden habe, wie man direkt aus Textmate Blogposts uploaden kann, bin ich noch mehr begeistert.
Um das Blogging Bundle von Textmate verwenden zu können, muss man zuerst die eigenen Blogs zum Gebrauch mit Textmate einrichten. Das geht am einfachsten über Bundles -> Blogging -> Setup Blogs. Damit wird die Textdatei zum Einrichten der Blogs geöffnet. Mein Wordpress Account hat schon das XMLRPC-Modul eingebaut und ich brauchte nur noch die URL zur xmlrpc.php angeben.
# Blog Name URL
Gleisarbeiter http://username@gleisarbeiter.de/xmlrpc.php
Danach kann man mit Textmate eigentlich alles machen was der normale Editor von Wordpress kann. Sogar automatisch Bilder hochladen! Dazu wird ein Bild z.B. aus dem Finder einfach auf die Schreibfläche von Textmate gezogen, ein Titel für das Bild eingeben und der Upload geht los.

Den besten Einstieg in das Blogging mit Textmate hat man, wenn man sich zuerst mit Bundles -> Blogging -> Fetch Post einen bereits erstellten Blogposts lädt. Damit lädt Textmate den Post in ein Textfile, welches man bearbeiten und anschließend per Bundles -> Blogging -> Post to Blog wieder speichern kann. Ausserdem lernt man so die wichtigsten Schlüsselwörter für das Blogging mit Textmate kennen.
Wenn man einen neuen Blogpost starten will, wählt man einfach aus File -> New from Template -> Blogging ein Blogging-Template nach Geschmack und Vorzug aus (Markdown, Textile, Text, HTML) und kann dann starten.
Die Blogging Funktionen von Textmate sind wirklich super, besonders, da der Wordpress-Editor noch nicht wirklich mit Safari klarzukommen scheint.
Weitere Infos sind übrigens unter Bundles -> Blogging -> Help zu finden.
Jan 22
… ein schattiges Plätzchen
Jan 17
Stemming ist ein Verfahren, um – mit Hilfe von Algorithmen – den Wortstamm von Wörtern zu ermitteln. Dies wird z.B. bei Suchmaschinen angewendet, damit die Suche nicht an einem eingebenen Wort scheitert, dass zwar nicht in der Datenbank als solches zu finden ist, wohl aber dessen Wortstamm, z.B. Gitarren => Gitarre.Ferret und ActsAsFerret bietet eine einfach zu konfigurierende Unterstützung für dieses Stemming:Eine Datei
im lib/-Verzeichnis anlegen:
require 'rubygems'
require 'ferret'
class StemmingAnalyzer < Ferret::Analysis::Analyzer
include Ferret::Analysis
def initialize(stop_words = FULL_GERMAN_STOP_WORDS)
@stop_words = stop_words
end
def token_stream(field, str)
StemFilter.new(StopFilter.new(LowerCaseFilter.new(StandardTokenizer.new(str)),@stop_words), 'de')
end
end
Im zu durchsuchenden Model dann folgendes:
acts_as_ferret :fields =>
{ :bandname => {}, :firstName_if_public => {}, :tag_list => {}, :comment_list => {}},
:ferret => { :analyzer => StemmingAnalyzer.new, :remote => true}
Dabei ist darauf zu achten, dass, wenn ihr den DrB-Server verwenden wollt, :remote => true innerhalb des :ferret-Attributs sein muss. Bei uns war dieses ausserhalb, woraufhin bei einem Aufruf von XYZ.rebuild_index nur nil zurückgeliefert wurde und Stemming nicht funktionierte. Siehe unten unter UPDATE. Über script/console kann dann schön getestet werden. Wenn man nebenbei noch die log/ferret_server.log anschaut, kann man sehen, dass jetzt automatisch Suchwörter wie “und” in XYZ.find_by_contents(”Gitarren und Geigen”) entfernt werden. Ausserdem kann man sehen, dass z.B. “Geigen” auf “Geig” reduziert wird, womit sich dann auch Wörter wir Geige finden lassen.
UPDATE
Nach einigen Problemen mit Ferret in unserem Projekt ist klar geworden, dass der Drb-Server mit meiner Konfiguration nicht verwendet wurde. Interessanterweise nur auf unserem Development-Server. Hier eine acts_as_ferret Konfig die funktioniert:
acts_as_ferret ({:fields =>
[:bandname, :shortname, :tag_list, :comment_list],
:remote => true},
{:analyzer => StemmingAnalyzer.new})
Jan 15
… und der heisst Aljoscha Everding.
Wenn er da ist, dann sitzt er genau hier, mir gegenüber, und wie man schon an seinen Stuhl-Armlehnen sehen kann, ist er nicht grad der kleinste
Aber ein total Netter. Gestern war der erste Tag und er durfte sich erstmal mit der Installation unseres Projektes ligx.de auf seinem neuen Macbook ausruhen. Heute kann er endlich zeigen was in ihm steckt
Aber das wird wohl kein Problem werden, schließlich hat er seine Diplomarbeit in RubyOnRails gemacht.
Also dann, auf eine gute Zusammenarbeit!

Jan 11
Onlinemusicstar.de ist jetzt Ligx.de und dazu noch mit Flash/Flex Oberfläche. Nachdem wir uns bei der Umsetzung vorerst auf HTML+RoR beschränkt hatten, ist aus diesem Projekt jetzt eine Flex+RoR-Anwendung geworden. Dabei wird auf Server-Seite das RailsPlugin WebORB verwendet, mit dem im J2EE-Stil Webservices zur Verfügung gestellt und diese dann von Flex aufgerufen werden können.
Durch die Möglichkeiten des ClassMappings haben wir ausserdem die Möglichkeit RubyObjekte zwischen Flex und RoR hin- und herzuschicken, anstatt POST-Variablen oder xml-Daten, was doch alles sehr vereinfacht. Ein Beispiel:
def updateUserData(user_object)
user_object.save
end
Diese Funktion speichert die persönlichen Daten eines Users ab. Das interessante daran ist, dass wir nicht etwas einen Block an Variablen erhalten (den wir dann über params[...] speichern müssten), sondern wir erhalten von der Flex-Seite ein User-Objekt, welches wir auch sofort speichern können und können genauso einfach Objekte (die über das Classmapping definiert wurden) zurückschicken.
Was dabei herauskommt sieht man auf www.ligx.de