Vorweg: ich fühle mich Heute nicht sehr gut, könnte sein dass ich Fieber habe. Da kommt man auf die merkwürdigsten Ideen… :-)

openDB

openDB

Ich habe hier ziemlich viele Filme auf DVD und BluRay. Leute haben schon behauptet dass wir bestimmt besser ausgestattet wären als viele Dorfvideotheken. Das lasse ich mal so im Raum stehen, aber bedingt durch die vielen Filme und mein ausgesprochenes Siebhirn ist vor einiger Zeit schon eine DVD-Verwaltung fällig geworden. Meine Suche — unter anderem hier im Blog — hat mich zu OpenDB gebracht. Seitdem ich das damals installiert habe wurde es offenbar nicht mehr aktualisiert… tut aber auch nicht not, da es nach wie vor exakt das macht was ich mir vorgestellt habe.

Vor mir liegt also eine MySQL-Datenbank in der viele Filme, deren IMDB-Bewertungen und die mitwirkenden Schauspieler gelistet sind. Und mein vollgeschnoddertes Gehirn stellt mir die Frage: welcher Schauspieler hat wohl in den bestbewerteten Filmen mitgewirkt?

Die Struktur der Datenbank ist nicht unbedingt ideal für so eine Abfrage, daher hat es fast eine halbe Stunde gedauert bis ich dieses kleine Monster hatte („Ein Kerlchen von erlesener Hässlichkeit“ hätte meine Mathelehrerin wohl dazu gesagt. :-) ):

select count(1) filme, round(avg(ia1.attribute_val),2) durchschnitt, ia2.attribute_val schauspieler
from item_attribute ia1
join item_attribute ia2 on ia1.item_id=ia2.item_id
join item i on i.id=ia1.item_id
join item_instance ii on ia1.item_id=ii.item_id
where ia1.s_attribute_type='IMDBRATING'
and ia2.s_attribute_type='ACTORS'
group by ia2.attribute_val
having filme>=10
order by durchschnitt desc
limit 30;

Die besten, der besten...

Die besten, der besten…

Mit der Einschränkung ‚having filme>=10‘ sehe ich mir nur Schauspieler an von denen ich mindestens zehn Filme hier habe. Ohne so einen Filter würde man wohl nur Leute finden die in Shawshank Redemption oder dem Paten mitgespielt haben, sonst aber nirgends. Erst hatte ich den Filter bei 5, da gab es aber immer noch viel zu viele (mir) unbekannte Namen, wenig Stars.

Das Ergebnis mit beiden Filtern ist im nebenstehenden Screenshot zu sehen. Man bedenke: Datenbasis sind ausschließlich die Filme die ich original hier habe (ja, da sind wirklich keine Kopien dabei!). Und bewertet wurde nicht die Leistung der Personen, sondern die der Filme in denen sie gespielt haben. Ich muss beispielsweise gestehen dass mir John Rhys-Davies erstmal nichts gesagt hat. Es reicht aber, dass er in zwei Indiana-Jones- und drei Herr-der-Ringe-Filmen mitgespielt hat (als Sallah bzw. Gimli), damit er die eine Liste anführt. Alfred Hitchcock war ein großartiger Regisseur, durch seine kleinen Cameo-Auftritte steht er aber auch als Schauspieler an der Spitze der Liste.

Apropos Regisseur: wenn ich nicht nach Schauspielern sondern nach Regisseuren auswerte — vielleicht ist das fairer — führt bei einem Filter von 5 Sergio Leone die Liste an, gefolgt von Akira Kurosawa und Charlie Chaplin.

Oh, und wo ich gerade dabei bin… hier nochmal eine Liste der Schauspieler von denen ich die meisten Filme habe. War dann nur noch eine Fingerübung:

Bruce Willis (38), Samuel L. Jackson (24), Robert De Niro (21), Tom Cruise (21), Johnny Depp (21), Brad Pitt (19), Morgan Freeman (16), Harvey Keitel (15), Nicole Kidman (15), Matt Damon (15), Leonardo DiCaprio (14), Harrison Ford (14), Mel Gibson (14), Bess Flowers (14), Steve Buscemi (13).

Die Reihenfolge gibt komischerweise meine persönliche Meinung von deren Können überhaupt nicht wieder… Robert De Niro, Al Pacino oder auch Sean Connery halte ich für deutlich fähiger als Bruce Willis, dabei sind die letzten beiden nicht mal in der Top15…

Naja, vielleicht sagt das ja doch alles nichts aus. Vielleicht sollte ich mir mal die Datenbasis der IMDB besorgen (ja, das geht.) und darauf Auswertungen fahren. Nicht nur auf mein eigenes Regal. Zumindest hat es mir geholfen, eine Weile nicht nur über die Schnodderei nachzudenken… :-)

Die Art von Film ist mir schon öfter aufgefallen. Dass es dafür einen Namen gibt war mir nicht bekannt.

Der Begriff Mockbuster (Verkürzung von mock-up-Blockbuster), Knockbuster (Verkürzung von knock-off-Blockbuster) oder auch Rip-Offs bezeichnet Filme, die Trittbrettfahrer eines meist zur gleichen Zeit erscheinenden Blockbusters darstellen. Während bei einem Mockbuster-Film eher der billige Abklatsch des Originals in Titel und Handlung im Vordergrund steht, versucht ein Knockbuster nur eine möglichst billige oder auch trashige Kopie zu sein.

Drüber gestolpert bin ich, weil ich irgendwie auf dem Artikel zu Titanic 2 — die Rückkehr gelandet bin. Gruselig…

Offenbar hat sich 1992 das Buch ‚Grundlagen der Polizeipsychologie‘ (würde ich mir gerne mal ansehen, schon allein um herauszufinden wie Hacker, Cracker und Crasher definiert werden) die Mühe gemacht, den Nerd zu beschreiben:

Nerds sind ebenfalls männlich. Sie sind allerdings deutlich älter, meist über 20 Jahre alt. Sie präsentieren sich als introvertierte Datenmenschen, die außer der Informatik keine Interessen haben. Sie sind oft sozial isoliert und zeigen beinahe autistische Züge. Daneben sind Idealismus und Narzissmus typisch für sie. Ihre Motive sind ähnlich denen der jugendlichen Hacker. Sie wollen Schwachstellen aufzeigen. Wichtigstes Ziel ist dabei allerdings die Selbstbestätigung, weniger die Wirkung auf andere. Sie unterscheiden sich auch in typischen Merkmalen von Crackern und Crashern. Nerds weisen oft eine geringe Frustrationstoleranz auf und haben einen unsystematischen, wenig effektiven Arbeitsstil. Dafür sind sie oft ausgeprägt abergläubisch. Viele glauben, dass Computer schon bald dem Menschen überlegen sein wird (vgl. Noller, 1992).

Sheldon? Bist Du’s? :-D

Das Wort Rubber-hose cryptanalysis habe ich in Chaosradio 186 aufgeschnappt, es ging um elektronische Schließsysteme:

Rubber-hose cryptanalysis (übersetzt Gummischlauch-Kryptoanalyse) ist ein Euphemismus, mit dem die Verwendung von Folter mit der Absicht, eine Person zur Herausgabe eines Kennworts oder Entschlüsselungsschlüssels zu bringen, bezeichnet wird. Obwohl sich der Ausdruck selbst ursprünglich von einer Foltermethode ableitet, bei der jemandem mit einem Gummischlauch wiederholt auf die Fußsohlen geschlagen wird, steht er hier stellvertretend für alle Arten möglicher Foltermethoden.

Eigentlich ist mir der neue Papst halbwegs sympathisch. Sicher, zu nörgeln gibt es immer. Insbesondere für Atheisten. Aber wie er sich nach der Wahl gegeben hat, der Name Franziskus, das meiste (nicht alles, wie gesagt) was ich über ihn gelesen habe… alles in allem: positiv. Hätte schlimmer kommen können.

Jetzt lese ich aber bei der Tagesschau Auszüge aus seiner ersten Messe als Papst:

Wenn man nicht auf die Felsen baut, was passiert dann? Das, was Kindern passiert, die am Strand spielen und Sandburgen bauen. Irgendwann fällt alles ein – ohne Festigkeit. Wenn sich der Mensch nicht zu Jesus Christus bekennt, geschieht, was wir bei Leon Bloy lesen: Wer nicht zum Herrn betet, betet zum Teufel. Wer sich nicht zu Christus bekennt, gibt die Welt der Weltlichkeit des Teufels anheim.

Initial hat mich der Satz an George W. Bush erinnert: „Wer nicht für uns ist, ist gegen uns.“

Ursprünglich hat die Formulierung wohl tatsächlich biblische Ursprünge, so gesehen ist es unfair dem Papst zu unterstellen dass er sich beim Herrn Bush anlehnt. Weiß ich, mache ich nicht.

Und doch: ich persönlich bete nicht zum Herrn. Nicht zu seinem, und auch zu keinem anderen. Aber zum Teufel lasse ich mich trotzdem nicht scheren. Auch nicht vom Papst. Ich schätze mal dass das ein paar Milliarden nicht-Christen ähnlich sehen wie ich… :-/

Er ist mir nach wie vor sympathischer als sein Vorgänger, ich kann nur hoffen dass das nicht wirklich das Programm der nächsten Jahre sein soll.

Login, bitte

Login, bitte

Aus Gründen die ich später sicher nochmal erläutern werde möchte ich ein Dokumentenmanagementsystem (DMS) installieren. Die Wahl fällt Heute auf Alfresco, einem kommerziell entwickelten System von dem es eine kostenlos nutzbare Community-Version gibt.

Haken an der Sache: das ist eine Java-Anwendung, und die drückt ganz schön auf mein kleines Heimserverchen. Um es nicht zu sehr ausarten zu lassen möchte ich nach Möglichkeit kein volles KVM installieren, sondern in einem OpenVZ-Container (wir erinnern uns: ich habe Proxmox auf meinem Server installiert). Problem dabei: in OpenVZ habe ich nur 32-Bit-Gäste, und der vergleichsweise einfach zu bedienende Installer von Alfresco läuft nur auf 64 Bit.

Also zu Fuss. Und da ich zwar mehrere Anleitungen gefunden habe, keine davon aber wirklich alle meine Probleme gelöst hat, schreibe ich hier mal zusammen was ich gemacht habe. Ich installiere erstmal nur das Basispaket, Zusatzmodule kommen bei Bedarf später nach.

Noch ein Disclaimer vorweg: alles was hier steht ist gefährliches Halbwissen! Meine Erfahrungen mit Alfresco beschränken sich auf wenige Stunden Spielerei, auch Java und Tomcat sind für mich kein Heimspiel. Was ich aufgeschrieben habe hat zumindest auf den ersten Blick für mich funktioniert. Mit dem Ergebnis habe ich noch nicht viel Zeit verbracht. Es kann also durchaus sein dass ich Quatsch geschrieben habe. Falls jemandem Fehler oder Verbesserungen einfallen wäre ich sehr dankbar für einen kurzen Hinweis. Falls mir noch was auffällt werde ich einen entsprechenden Nachtrag schreiben.

  • Maschine anlegen. Ich gebe erstmal nur 1,5GB RAM, dazu 5GB Festplatte.
  • Debian installieren. Debian 7.0 ist mittlerweile so gut wie stabil, also gibt es direkt Wheezy. Dazu das übliche: Apt-Cache eintragen und alles erstmal aktualisieren.
  • Datenbank anlegen. Ich nutze MySQL, die Datenbank liegt auf einem anderen Server. ‚create database alfresco‚.
  • Benötigte Pakete installieren: apt-get install libreoffice openjdk-7-jre imagemagick tomcat7 mysql-client libmysql-java zip‚. Die Java-Version scheint wirklich wichtig zu sein, mit Version 6 hatte ich kein Glück beim vollständigen Anlegen der Datenbank.
  • Die SWFTools kennt Debian zwar als Paket, hier fehlt dann allerdings das essentiell wichtige pdf2swf. Wir ziehen uns die Sourcen (Version 0.9.1, 0.9.2 bringt einen Fehler bei der Installation) und compilieren klassisch mit ./configure && make && make install. Voraussetzung hierfür: apt-get install zlib1g-dev libjpeg62-dev libgif-dev libfreetype6-dev g++ make.
  • Alfresco herunterladen. Wir brauchen das Paket für die manuelle Installation, aktuell also alfresco-community-4.2.c.zip.
  • Den Inhalt des Paketes unter /opt/alfresco auspacken.
  • Sicherstellen dass Tomcat nicht läuft, damit der uns nicht in die Quere kommt: /etc/init.d/tomcat7 stop
  • Dateien und Verzeichnisse vorbereiten:

    # cp -r /opt/alfresco/web-server/shared/ /var/lib/tomcat7/
    # cp -r /opt/alfresco/web-server/webapps/ /var/lib/tomcat7/
    # cp -r /opt/alfresco/bin/ /var/lib/tomcat7/
    # ln -s ../../java/mysql-connector-java.jar /usr/share/tomcat7/lib/
    # mv /var/lib/tomcat7/shared/classes/alfresco-global.properties.sample /var/lib/tomcat7/shared/classes/alfresco-global.properties
    # mv /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml.sample /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml
    # mkdir /opt/alfresco/alf_data
    # chown -R tomcat7:tomcat7 /var/lib/tomcat7/ /opt/alfresco/alf_data/

  • Konfigurationsdatei /var/lib/tomcat7/shared/classes/alfresco-global.properties anpassen. Hier nur die geänderten Zeilen:

    dir.root=/opt/alfresco/alf_data
    db.username=alfresco
    db.password=GEHEIMESPASSWORT
    ooo.exe=/usr/bin/soffice
    ooo.enabled=true
    jodconverter.officeHome=/usr/lib/libreoffice/
    jodconverter.portNumbers=8101
    jodconverter.enabled=true
    img.root=/usr
    img.exe=/usr/bin/convert
    swf.exe=/usr/local/bin/pdf2swf
    db.driver=org.gjt.mm.mysql.Driver
    db.url=jdbc:mysql://DATENBANKSERVER/alfresco?useUnicode=yes&characterEncoding=UTF-8

  • Speichermanagement für Tomcat anpassen, in /etc/default/tomcat7 folgende Einstellungen hinzufügen:
    JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=512m -Xms128m -Xmx768m -Dalfresco.home=/opt/alfresco -Dcom.sun.management.jmxremote"
  • Tomcat starten: /etc/init.d/tomcat7 start

Danach kann man seinen Browser ganz vorsichtig auf http://SERVERNAME:8080/share oder http://SERVERNAME:8080/alfresco loslassen. Nicht vorschnell aufgeben, der erste Aufruf kann durchaus mehrere Minuten dauern. Die Zeit kann man sich zum Beispiel damit vertreiben, in der Datenbank nachzusehen ob tatsächlich die nötigen Tabellen angelegt werden. Direkt nach dem Laden der Startseite sind in der DB schon 102 Tabellen und mehrere Tausend Datensätze vorhanden.

Genau hier hat mich übrigens der Fehlerteufel eine Weile in Schach gehalten: in meinen ersten Anläufen hatte ich openjdk-6-jre installiert, so wie die meisten (zugegeben: teils alten) Howtos raten. Das führt neben einem Riesenhaufen Logs — die für einen nicht-Java-affinen Menschen erstmal nichtssagend sind — zu genau 20 Tabellen in der Datenbank, und dazu dass man unter /alfresco nur eine Fehlermeldung präsentiert bekommt. Darauf, das mal mit Java 7 zu testen muss man erstmal gestossen werden:-(

Wenn die Startseite (endlich!) sauber lädt kann man sich mit admin:admin anmelden und anfangen zu überlegen was man mit so einem schönen, neuen, großen Spielzeug anfangen kann… Aber das ist eine andere Geschichte, und die soll ein anderes Mal erzählt werden… ;-)

Geholfen haben mir bei der Installation hauptsächlich diese beiden Anleitungen, sowie dieser Thread im Support-Forum. Den Rest habe ich mir zusammengegoogled. Danke an alle die Ihr Wissen im Netz teilen!

Nachtrag (05.03.): Aufgrund eines Fehlers im Zusammenspiel zwischen Flash und dem Browser habe ich Flash-Upload abgeschaltet. Sonst hätte ich in der Weboberfläche keine Dateien hochladen können. Nutzen kann man Alfresco auch anders, aber wenn schon… Um abzuschalten in der Datei /var/lib/tomcat7/shared/classes/alfresco/web-extension/share-config-custom.xml den Wert adobe-flash-enabled auf false setzen und den Tomcat durchstarten.