RoundcubeMail 0.4 Upgrade – Fremdschlüsselprobleme

Eine kurze Notiz, falls jemand der Releaseverkündung von RoundcubeMail 0.4 (einer sehr guten Webmail-Oberfläche) folgt und „interessante“ Probleme nach dem Update hat. Zum Beispiel keine Gruppen im Adressbuch definieren oder keine neuen Kontakte hinzufügen kann.
Im Logfile sieht das dann zum Beispiel so aus:

[Native message: Cannot add or update a child row: a foreign key constraint fails (`rcmail/contactgroupmembers`, CONSTRAINT `contact_id_fk_contacts` FOREIGN KEY (`contact_id`) REFERENCES `contacts` (`contact_id`) ON DELETE CASCADE ON UPDATE CASCADE)]

Das Problem ist anscheinen schon etwas länger bekannt und im Ticket #1486794 dokumentiert. Allerdings wurden die Erkenntnisse leider nicht in das Updateskript mit aufgenommen und ist es Wahrscheinlichkeit, dass man bei einem Upgrade aufgrund verschiedener Tabellenformate in der Datenbank auf Schwierigkeiten stößt. Da man Roundcube evtl. schon seit einer Weile einsetzt möchte man natürlich nicht seine ganz Datenbank frisch initialisieren (zumal einem dann vermutlich einige User wegen verlorener Adressbücher aufs Dach steigen würden).

Sollten sich also der Verdacht bestätigen und man Tabellen verschiedener Formate in der Roundcube Datenbank vorfinden (wie das z.B. im PhpMyAdmin aussieht zeigt der Screenshot), kann man das Problem anscheinend damit lösen, dass man alle Tabellen zu InnoDB umwandelt. Dafür muss man für jede Tabelle ein „ALTER TABLE“ Befehl absetzen, so dass dies im Ergebnis dann zum Beispiel so aussehen kann (vor Copy/Paste Backup nicht vergessen und prüfen, ob’s wirklich für die eigene DB passt):

ALTER TABLE `cache` ENGINE=InnoDB;
ALTER TABLE `session` ENGINE=InnoDB;
ALTER TABLE `messages` ENGINE=InnoDB;
ALTER TABLE `users` ENGINE=InnoDB;
ALTER TABLE `contacts` ENGINE=InnoDB;
ALTER TABLE `identities` ENGINE=InnoDB;

Die Erklärung dafür findet sich z.B. in der MySQL Dokumentation, die ganz klar sagt

Beide Tabellen müssen InnoDB-Tabellen sein und dürfen keine TEMPORARY-Tabellen sein.

Und deshalb hat man sich bei Roundcube kurzerhand dafür entschieden, alle Tabellen zu InnoDB-Tabellen zu machen.

Also kurz die Tabellen angepasst, schon funktioniert auch die wunderbare Gruppenfunktionalität im Adressbuch des Roundcube Webmail 🙂

Getestet und eingesetzt auf Ubuntu 9.10 und 10.04 mit MySQL 5 und PHP 5.3.

Viel Erfolg beim Upgrade und viel Spaß noch mit Roundcube 😉

14. September 2010 · Linux, Software, WebWork 0 Kommentare

Verkehrsregelung Basel

Ein wunderbares Schauspiel gibt es zur Zeit in Basel am Bankverein zu sehen – dort Regelt ein Lotse mit sehr viel Leidenschaft und Engagement den Verkehr. Er hat schon für viel Freude gesorgt, wenn wir während der Mittagspause eben diese Kreuzung passieren 🙂

So langsam spricht sich das auch ‚rum und verschiedene Medien berichten, bei bazonline.ch gibt es so zum Beispiel einen Beitrag mit Video und auch Radio Basel hat schon berichtet.

Und bedingt anschauen und -hören, der Lotse ist so gut, dass es einfach Spaß macht 🙂

14. August 2010 · Basel 0 Kommentare

Vintage America in Color

Zum Start dieser wunderschönen neuen Woche noch ein Fotolink 🙂

Diesmal sind es Farbbilder aus den USA zwischen 1939 und 1943. Sehr spannend so ein Guckloch in die Vergangenheit 🙂

Viel Spaß mit den Bildern: captured: America in Color from 1939 – 1943

9. August 2010 · Foto 0 Kommentare

Langzeitbelichtungen

Langzeitbelichtungen geben oft lustige Aufnahmen und wenn sie absichtliche entstehen und nicht durch Zufall oder Fehlbedienung sind sie oft auch sehr ansehnlich.

Eine schöne Sammlung hab ich bei cruzine gefunden: cruzine: Long Exposure Photography

Viel Spass beim Anschauen und ein schönes Wochenende 🙂

6. August 2010 · Foto 0 Kommentare

WM2010: Wer spielte wo?

Eine schöne Übersichtsgrafik, woher die Spieler der Nationalmannschaften zusammengesammelt wurden findet sich hier.

Jaja, der Atrikel selbst ist auf Spanisch Portugiesisch, aber die Grafik ist interaktiv und somit ganz gut Verständlich 😉

Viel Spass bei den letzten beiden Spielen 🙂

10. Juli 2010 · NetFeed 2 Kommentare

Android Podcast Client

Podcasts (Wikipedia) sind ein wunderbarer Quell von Unterhaltung, Hintergrundwissen und Informationen, den ich nicht mehr wissen möchte.
Umso interessanter ist die Frage, wie ich am besten über mein Handy – was ja eh immer dabei ist – die Podcasts herunterladen kann (vorzugsweise solange eine WLAN Verbindung besteht), damit sie dann, wenn ich gerade Zeit und Lust habe, eine interessante Sendung zur Verfügung steht.

Bei meiner Suche bin ich über die folgenden Softwarepakete gestolpert:

Da ich es gerne vermeide, für Anwendungen von denen ich noch nicht weiß, wie intensiv ich sie nutzen werde, Geld auszugeben, habe ich die kostenpflichtigen Kandidaten erst einmal ignoriert. Genauer in Augenschein genommen habe ich dann ACast und dPod.

Die Option, nur bei verfügbarer WiFi (WLAN) Verbindung aktiv zu sein, bieten beide Kandidaten – check.
ACast scheint meinem kurzen Test nach zwar viele Features zu haben, war mir aber doch zu unübersichtlich und überladen, so dass ich mich dem zweiten Kandidaten zu gewandt habe.

Dort habe ich schnell und unproblematisch einige Podcast-Feeds hinzufügen können und den Download einiger Folgen angestoßen, von denen ich auch schon die ein oder andere hören konnte 🙂 Das Abspielen erfolgt mit Hilfe des in Android integrierten Mediaplayers. Mehr gibts an der Stelle eigentlich nicht zu sagen. Ich werde also erstmal dPod nutzen und kann diesen auch nur herzlich weiterempfehlen 🙂

Benutzt ihr einen anderen Podcast-Client auf euerm Android-Gerät?

Oh, falls vielleicht noch jemand auf der Suche nach interessanten Podcasts ist, hier noch eine kleine Liste von ebensolchen, die ich mehr oder (dank der wenigen Zeit die ein Tag so hat) eher weniger oft abklapper‘ und anhöre:

Der Klassiker: Das Chaos Radio
Die Ergänzung: Das CR Express
Für die sinnfreie Unterhaltung: Not Safe For Work

Die Technologiespritze: Technikwürze
Der Überblick zu Opensource und co: Radio Tux

Wegweiser durch den Mediendschungel (aus Melbourne): Celebrity Reacharound

Und bevor diese Liste jetzt noch viiiiel zu lang wir, verweise ich auf eine interessante Google Wave, in der eine ganze Menge von Podcastempfehlungen zusammengetragen worden sind: Podcast Empfehlungen auf Google Wave

Happy Podcasting und -listening 🙂

2. Juli 2010 · Android, Linux, NetFeed 2 Kommentare

Gradle Build System: JavaDoc generieren

Und nun zu etwas völlig anderem: Build automation mit Gradle. Richtig, ein technischer Beitrag 🙂

Gradle ist ein sehr interessates und mächtiges Buildsystem, dass nicht wie Ant auf XML zur Konfiguration setzt, sondern Groovy als DSL (Domain Specific Language) einsetzt um zum Ziel zu kommen. Dadurch wird es sehr mächtig und vielseitig einsetzbar. Das interessante ist auch, das Groovy sanfte Migrationen, zum Beispiel von Maven oder Ant ermöglicht, indem man vorhandene Konfigurationen von dort einfach einbinden und weiterverwenden kann.

Leider hat Gradle zur Zeit leider noch die Schwäche hat, nicht besonders umfangreich dokumentiert zu sein. Auch in den Weiten des Netz hat es noch nicht genug Spuren hinterlassen, als dass jede Frage schnell mit Google beantwortet werden kann. Und genau das hat mich zu diesem Beitrag inspiriert, in dem ich kurz ein Beispiel für ein Gradle Skript festhalten möchte, der einige Anpassungen für die Erstellung der Dokumentation mit JavaDoc enthält:

build.gradle:

apply plugin: 'java'

dependencies {
    compile fileTree(dir: libDir, include: '*.jar')
}

javadoc {
  appName = 'my application'
  developerEmail = test@domain.com
  project.configure(options) {
    memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
    charSet = "ISO-8859-1"
    docTitle = "$appName"
    windowTitle = "$appName"
    header = "$appName"
    bottom = "Contact via " +  developerEmail.trim() +" $developerName for feedback."
    author = "true"
    use = "true"
    links("http://java.sun.com/j2ee/1.4/docs/api", "http://java.sun.com/j2se/1.5.0/docs/api")

  }
}

task initDirs << {
    project.sourceSets.main.java.srcDirs*.mkdirs()
    project.sourceSets.main.resources.srcDirs*.mkdirs()
    new File((String) libDir).mkdirs()
}

In der definierten Fusszeile (bottom) oder auch im initDirs-Task kann man gut die Stärke von Groovy als DSL erkennen.

Gradle verfügt über eine Menge interessanter Features, einen Blick darauf zu werfen kann ich durchaus empfehlen :)
Auf dem ersten Hackergarten im März haben wir auch daran mitgearbeitet. Erfreulicher weise wurden unsere Änderungen angenommen und sind nun in Gradle enthalten - Open Source live!

30. Juni 2010 · Work 2 Kommentare

Thunderbird unter Ubuntu: Gnome-Open

Thunderbird mit Ubuntu/Gnome zu nutzen, ist nicht immer eine Freude.
Ein Ärgernis war für mich zum Beispiel, dass PDF Dateien nur dann direkt mit dem richtigen PDF Reader geöffnet wurden, wenn der Absender gerade zufälliger Weise mal die richtige Codierung verwendet hat. Leider ist das eher die Ausnahme und so musste ich doch recht häufig erst das PDF abspeichern und dann über den Dateimanager (Nautilus) öffnen.

Abhilfe hat hier nun endlich das Plugin Gnome Open gebracht. Damit werden Dateianhänge direkt mit der richtigen Anwendung geöffnet 🙂

Und wieder ein Arbeitsschritt mehr gespart.

Vielleicht hilfts ja jemanden 🙂

Have Fun!

30. Juni 2010 · Linux, Software, Work 0 Kommentare

Techn. Glaubenskrieg im Kino

Nachdem ich mich mittlerweile mehr mit Technologien und Sprachen rund um die Java Plattform beschäftige, als mit denen aus der .NET Welt, bin ich über den Folgenden Trailer auf einen Film aufmerksam geworden – mit Sicherheit ein Blockbuster 😉

Endlich gibt es einen Film, der die Frage klärt, welche Technologie
besser ist: Java oder .NET

Update: Link zu YT entfernt, hier die Originalquelle:

http://jz10.java.no/java-4-ever-trailer.html

Viel Spaß 🙂

29. Juni 2010 · dotnet, Software, Work 3 Kommentare

How to get things to work :-)

Wenn man sich mal wieder fragt, wie das Funktionieren soll:

You need only two tools. WD-40 and duct tape. If it doesn’t move and it should, use WD-40. If it moves and shouldn’t, use the tape.

Alte Weisheit, oft angewandt und jetzt endlich mal hier festgehalten 😉

27. Juni 2010 · Work 0 Kommentare

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2026 Markus Schlichting - Mastodon