thomasfriebel - RT : Looking for a career with a fast-growing company? Jaspersoft is hiring: . Spread the word and RT! ...
formats

Vorstellung der Diff, Match and Patch Bibliothek

Ausgestellt am 03.04.2012 vom in Java, Programmierung

Bisher habe ich auf wikihost.org das diff-Tool der Linux-Shell verwendet, um den Anwendern eines Wikis die Möglichkeit zu geben, zwei unterschiedliche Versionen einer Wiki-Seite hinsichtlich ihrer Unterschiede zu vergleichen. Dabei wurden einfach die beiden Wiki-Sources temporär als Datei weggeschrieben, das externe diff aufgerufen und der Output wieder eingelesen und interpretiert.
Dieser Ansatz hatte einige Nachteile, wie z.B. das Unvermögen mit Unicode-Zeichen umzugehen, die Verarbeitungsgeschwindigkeit und eine unschöne Darstellung.

Aus genannten Gründen war ich daher auf der Suche nach einer vernünftigen, integrierten Lösung. Gefunden habe ich eine sehr schöne für mehrere Sprachen entwickelte Bibliothek.

Google Diff, Match and Patch

Die diff, match and patch-Bibliothek von Neil Fraser stellt  identische Funktionen für Java,  JavaScript, Dart, C++, C#, Objective C, Lua und Python bereit. Sie wird auf code.google.com gehostet und unter der Apache License 2.0 bereitgestellt.

Für wikihost.org ist die Java-Bibliothek relevant, daher beziehe ich mich hier ausschließlich darauf. Wikihost.org ist in Grails/Groovy entwickelt, daher zeige ich auch kurz, wie die Java-Bibliothek dort einzubinden ist.

 

Bibliothek ins Grails-Projekt aufnehmen

Damit die Java-Klassen der diff-Bibliothek in der Grails-Anwendung genutzt werden können, muss das Java-File einfach in das Verzeichnis <PROJECT>/src/java kopiert werden.

Hier die Projekt-Struktur des wikihost.org Grails-Projekts mit eingebundener diff-Bibliothek:

 

  Diff Project-157x300 in Vorstellung der Diff, Match and Patch Bibliothek

 

Ist das erledigt, kann man auch schon beginnen, die diff-Funktionalität in einem der Controller zu nutzen.

Diff in Grails ermitteln

Hier der Code, wie ich ihn zum Vergleich der Revisionen einer Wiki-Seite nutze:

//Initialisiere diff-Bibliothek
def dmp = new diffy.diff_match_patch()
//Vergleiche alte und neue Version
def diffed = dmp.diff_main(oldRevText,newRevText)
//mache für Menschen lesbar (optimierte Darstellung)
dmp.diff_cleanupSemantic(diffed)
//als HTML ausgeben (färbe gelöschte Teile rot, Hinzugefügte grün)
def TextHtml = dmp.diff_prettyHtml(diffed)

 

Zuerst wird eine Instanz der Klasse diff_match_patch initiiert. Den Package-Namen diffy habe ich in der Klasse definiert, damit ich leichter erkenne, wo diese Klasse herkommt. Der eigentliche Vergleich zwischen oldRevText und newRevText findet dann in der zweiten Zeile durch Aufruf der Methode diff_main() statt. Da die Differenz zwischen den beiden Versionen durch Veränderungsschritte (was muss gelöscht und hinzugefügt werden, um vom alten auf den neuen Zustand zu kommen aka Levenshtein-Distanz) dargestellt werden, wäre in vielen Fällen ein kaum entzifferbares Ergebnis, wie in diesem Beispiel der Fall:

Diff Demo1 in Vorstellung der Diff, Match and Patch Bibliothek

Durch den Aufruf der Methode diff_cleanupSemantic() wird dies lesbarer gemacht, indem die einzelnen diffs zu größeren Blöcken zusammengefasst werden. Hier der selbe Vergleich mit nachträglicher Optimierung:

Diff Demo2 in Vorstellung der Diff, Match and Patch Bibliothek

Mit der Methode diff_prettyHtml() kann eine simple HTML-Ausgabe erzeugt werden. Möchte man das Ergebnis nicht für eine HTML-Seite

Das Ergebnis liegt zum Schluss in der Variable TextHtml und wird an die GSP-Seite zur Ausgabe im Browser durchgereicht.

 

Selbst ausprobieren kann man die Funktionen der Bibliothek unter http://neil.fraser.name/software/diff_match_patch/svn/trunk/demos/demo_diff.html direkt im Browser.

 
Tags: , ,
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Open Studio for Big Data powered by Hadoop

Ausgestellt am 14.03.2012 vom in Big Data, ETL, Talends Software

Mit der Veröffentlichung von Talend Open Studio for Big Data wird Apache Hadoop für jeden leicht nutzbar.

Dieses Open Studio konzentriert sich auf die üblichen Aufgaben der Datenintegration und die Anbindung an ein Hadoop-Cluster. Es sind die Konnektoren für HDFS-Zugriff, HBase-Datenbank, Hive, PigLatin sowie Sqoop enthalten.

Damit lassen sich Daten ganz einfach aus Textdateien, Message-Queues, Datenbanken und vielen anderen Quellen in das Hadoop Distributed File System schreiben. Und natürlich auch wieder daraus extrahieren.

Piglatin in Open Studio for Big Data powered by Hadoop

TOS Beispiel-Job mit PigLatin-Komponenten

Mit HiveQL kann man umfangreiche Datensammlungen aggregieren und die kompakten Ergebnisse zum Beispiel in ein Excel-Sheet schreiben.

Mit den PigLatin-Komponenten können einige Standard-Tasks, wie z.B. Joins, Record-Filterung, usw., aus dem Baukasten heraus genutzt werden.

Talend Open Studio for Big Data unterliegt der Apache-Lizenz und kann kostenlos von folgendem Link heruntergeladen werden:

Tos4bd in Open Studio for Big Data powered by Hadoop

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Neues Projekt: eztrip.de – Online-Fahrtenbuch

Ausgestellt am 15.08.2011 vom in Web 2.0

Zur Zeit arbeite ich an einem neuen Projekt und wollte hier auch schon mal darauf hinweisen.

Unter www.eztrip.de wird es bald für jeden möglich sein, sein Fahrtenbuch online und mit dem Smartphone zu führen.

Es schwirren mir einige Ideen diesbzgl. im Hirn herum, aber sicherlich nur ein Teil dessen, was möglich wäre.

Wenn also jemand weitere Einfälle oder Vorschläge hat: immer her damit! Icon Smile in Neues Projekt: eztrip.de - Online-Fahrtenbuch

 
Tags: ,
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Google Plus hat seine Pforten geöffnet

Ausgestellt am 12.07.2011 vom in Google, Social Media

Wie es scheint, ist Google+ – Googles Antwort auf Facebook – ab sofort für jeden nutzbar.

Wo bis gestern noch darauf vertröstet wurde, dass Google+ nach der geschlossenen Beta-Phase schon bald für alle Benutzer verfügbar wäre, ist dies nun wohl der Fall.

Gplus in Google Plus hat seine Pforten geöffnet

 

Somit kann sich nun jeder bei Google+ anmelden und beginnen, seine Circles aufzubauen.

Allerdings habe ich bis jetzt noch keine offizielle Verlautbarung dazu gefunden und gebe dies nur unter Ausschluss jeglicher Gewähr weiter.

Ich würde mich freuen, Euch dort anzutreffen.

 

 
Tags:
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Was für ein Yammer(.com)!

Ausgestellt am 18.03.2011 vom in Android, Social Media, Web 2.0

Heute muss ich einfach mal die Social-Media-Applikation Yammer (www.yammer.com) vorstellen. Bei Yammer handelt es sich um einen Hybriden aus Facebook und Twitter, der im geschlossenen Benutzerkreis verwendet wird. Also z.B. von einem Verein, einem Studentenclub oder natürlich auch einem Unternehmen, worauf die Betreiber letztlich auch abzielen, indem sie es Enterprise Microblogging nennen. Das ganze wird als Software-as-a-Service angeboten, bedarf also keinerlei administrativen Tätigkeiten.

Ich habe nun in den letzten drei Tagen mit meinen Kollegen ein wenig mit Yammer herumexperimentiert und wollte damit nicht hinterm Berg halten. Darum hier im Folgenden ein paar erste Eindrücke.

(weiterlesen …)

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
© Copyright @ 2012 by Thomas Friebel
credit