incorrect key file for table ...myi; try to repair it!
Thursday, April 19. 2012
Einen kleinen Link an einen älteren Eintrag in diesem blog angefügt, speichern und statt der gewohnten Meldungen sehe ich die Fehlermeldung incorrect key file for table ./database/serendipity_entries.MYI; try to repair it! Nebenwirkung: der Text wird nicht gespeichert.
Google findet mir zunächst beruhigende Worte, es sei vllt. einfach eine Festplatte vollgelaufen. Diese Erklärung bestätigt sich aber nicht, tmpfs hat 505MB frei und der monierte Index kommt auf 320Kb. Ich suche weiter und finde check table und repair table. Die Doku empfiehlt ein vorheriges Backup. Dann:
mysql -u root -p
use database;
CHECK TABLE serendipity_entries;
+------------------------------+-------+----------+---------------------------------------------------------+| Table | Op | Msg_type | Msg_text |+------------------------------+-------+----------+---------------------------------------------------------+| web31db1.serendipity_entries | check | warning | Table is marked as crashed || web31db1.serendipity_entries | check | error | Checksum for key: 3 doesn't match checksum for records || web31db1.serendipity_entries | check | error | Corrupt |+------------------------------+-------+----------+---------------------------------------------------------+REPAIR TABLE serendipity_entries;+------------------------------+--------+----------+----------+| Table | Op | Msg_type | Msg_text |+------------------------------+--------+----------+----------+| web31db1.serendipity_entries | repair | status | OK |+------------------------------+--------+----------+----------+Tasks zwischen Desktop und SmartPhone syncen
Wednesday, April 18. 2012
An sich ja kein Vorhaben, das so ausgefallen oder umfangreich klingt, dass man damit lange zubringen müsste: so wie die Termindaten - als eine Reihe von thematisch sortierten Unterkalender zu einem Google account gehalten - auf dem Android SmartPhone wie auf dem Desktop (Thunderbird/Lightning) synchronisiert und aktuell zur Verfügung stehen, so will ich das auch für die Aufgaben. Und ich hätte für Aufgaben gerne die Möglichkeit, sie hierarchisch zuzuordnen, also: sub tasks.
KOrganizer hat sub Tasks und die Oberfläche wäre nicht ganz schlecht, aber die Einbindung von Google Kalendern und deren Synchronisation war so hakelig und letztlich unzuverlässig, dass ich KOrganizer genervt nur mit einer Minifunktion betraut und ansonsten von der Liste gestrichen habe.
Bleibe ich also bei ThunderBird/Lightning, muss ich den Wunsch nach sub-tasks schon mal drangeben, lightning hat das einfach nicht zu bieten. Aber selbst dann ist kein einfacher Weg zu Synchronisation in Sicht. In Lightning hat der "Provider for Google Calendar" nur den knappen Hinweis parat, das gTasks erst in einer späteren Version unterstützt würden, derzeit gebe es Probleme. Auch einen Google Kalender via caldav anzubinden hilft nicht: Lightning akzeptiert Google Kalender nicht als Aufgabenspeicher, sondern nur in einen lokalen Kalender.
Man findet add-ons, um lightning an exchange-server oder kolab, toodledo oder zimbra anzuhängen, aber alle angebotenen Wege scheinen auf die Installation irgendeiner Groupware-Server-Soft oder einen kostenpflichtigen account hinauszulaufen. Ich war schon auf dem Wege, mein eigene Tasklistenverwaltung und Sync zu schreiben, als ich in den Mozilla-Foren auf auf einen Thread zum Thema stiess. Und darin auf den Hinweis auf memotoo.
memotoo ist auch wieder ein kommerzieller Service mit einem kostenlosen Basisangebot, 50 Tasks kriegt man gratis, danach kostet es (12€/Jahr). aber dafuer haben sie schon wirklich eine eindrucksvolle Liste von Synchronisations-Optionen. Ein französisches Angebot (was man der deutschen wie der englischen Version der Seite etwas ansieht), kann https:// wenn man es aufruft, ist in IPv6 verfügbar. Synct Adressbuch, Tasks, Notizen, Mail, Kalender, Bookmarks, sonstige Dateien - probiert habe ich erstmal nur die Tasks. Klick auf Synchronize my tasks und da sind 35 Optionen parat, klick auf Google Tasks, account info, authorisieren, Optionen zur Synchronisierungsrichtung und schon stehen die eingetragenen Aufgaben da. Klick auf Sunbird (wie gut, dass ich mir die diversen Pseudonyme dieses Programms alle merken kann...) klare Installationsanweisung, pling stehen die Aufgaben in Lightning da. Details gilt es auszutesten, der erste Eindruck gefällt.
command line - Schnipsel
Sunday, April 15. 2012
Kleinigkeiten, die ich immer wieder nachsuchen muss:
Recursively list all files '.forward' containing string 'bin'
find -type f -name '.forward' -exec grep -H -n 'bin' {} \;
in eine Logdatei protokollieren, was ein Programm so treibt:
strace -e trace=open -o logfile.log ./xyz
umount /dev/sdc1 scheitert, weil irgendeine Datei offen ist, wer hat sie?
fuser -m /dev/sdc1
Recursively chmod only directories
find . -type d -exec chmod 755 {} \;
Recursively chmod only files
find . -type f -exec chmod 644 {} \;
Recursively chmod only files with extension .php
find . -type f -name '*.php' -exec chmod 644 {} \;
Recursively find all files > some size
find . -type f -size +10000000k -exec ls -lh {} \;
Recursively find all files > some size named like something and delete
find . -type f -size +100000k -name access.log -exec rm -i {} \;
Password generator
openssl rand -base64 32|head -c 12;echo
alle an einem best Datum geaenderten Dateien auflisten:
ls -AlturR --time-style=long-iso | grep ^.*2004\-03\-19.2.* >/home/dp/katalog_040319_2x:xx:xx.txt
Haeufigkeit bestimmter Eintraege in messages nach Tagen sortiert ausgeben
grep DPT=1434 /var/log/messages >/var/log/SQL.slammer.txt
for i in 24 25 26 27 28; do j=`grep Jan\ $i SQL.slammer.txt -c`;echo $i, $j;done
user passwd fuer geschuetztes web-verzeichnis mit .htaccess anlegen
htpasswd -b /usr/local/httpd/.htpasswd user pass
haessliches XML lesbar formatieren
xmllint –format ugly.xml –output pretty.xml
Wheezy upgraded auf ThunderBird / Icedove 10
Wednesday, April 11. 2012
Wheezy spielte mir die Tage ein update für Thunderbird, bzw icedove, und lightning ein und als erstes die gute Nachricht: fast nichts zerbrochen. Icedove öffnet beim Start plötzlich ein Fenster mit einer Liste meiner add-ons und dem Vorschlag, sie doch alle zu disablen oder zu entfernen. Aber als ich dem tapfer widersprach und alle als aktiv anhakte, klappte es soweit. Bei vorigen Experimenten mit einem thunderbird-Update war das Fehlen einer passenden Lightning-Version der Grund gewesen, schleunigst zu Thunderbird 3 zurückzukehren, aber jetzt läuft hier Lightning (Iceowl) 1.2b1 und sieht sogar ein klein wenig besser aus als die Vorversion. Die anderen addons (Attachment Extractor 1.3.5.1, Enigmail 1.4, Folderpane tools 0.6.1, gContactSync 0.3.4, LookPut 1.2.13, Mailbox Alert 0.16.1, Provider für Google Kalender 0.9, Sieve 0.1.14, Timezone definitions 1.2011n)aktualisierten sich klaglos, nur Firetray 0.41 hat Probleme. Es wurde gar kein Tray Icon angezeigt, der Eigenschaften-Dialog hatte nur den Tab "Windows and Icon" und der andere "Mail" fehlte. In der error console tauchten Fehlermeldungen auf zu dem Sinn, dass das addon die laufende Applikation nicht unterstütze.
Mein erster Ansatz war, mit strace nachzusehen, ob es zu dem fehlenden sys tray Icon etwa auch einen erfolglosen Dateizugriff auf eine image-Datei gäbe, strace -e trace=open -o logfile.log /usr/bin/icedove schrieb mir ein sehr langes Log und darin fand sich der erfolglose Versuch, die Datei ~/.icedove/meinProfile.default/extensions/{extensionID}/chrome/skin/icedove32.png zu öffnen. Ok, das war ja schon ein deutlicher Hinweis, ich erstellte mir die vermisste Datei als Kopie der thunderbird32.png (und ersetzte gleich noch auch blank-icon.png durch das thunderbird-Bild) und dann fand mir Google diesen Bug: Icedove support is missing in version 0.4* komplett mit einem diff, um modules/FiretrayHandler.jsm so zu erweitern, dass die Debian-Namen der Anwendung auch erkannt werden.
Xmind Mindmaps konvertieren
Monday, April 9. 2012
There is prior post regarding conversion of .xmind documents to other mind mapping formats and also re: import of text to Freemind, but now there is a new angle to those topics after I discovered a python modul which comes quite handy if you want to parse or create .xmind mindmaps.
It goes by the name of mekk.xmind, authered by Marcin Kasperski.
Download it with mercurial, (if you don't have this installed, you can get it on debian by apt-get install mercurial)
hg clone https://bitbucket.org/Mekk/mekk.xmind
cd mekk.xmind
python setup.py install
You will find some example scripts next to he sources and it worked fine here immediately..
Frustrated over Kontact I still search for a suitable way to handle task lists so that task administration integrates with my desktop thunderbird/lightning, google calendars and my androisd smartphone which nicely interfaces to google tasks. And as I like to structure my ideas with mindmaps and quite like XMind I tried to use XMind as a means to write structured task lists. Unfortunately lightning doesn't do subtasks. It has been asked for for years but not implemented.
Among the alternatives for task managment on linux there is Task Coach (pro: open source, does sub tasks SyncML, file format XML, some export options, con: usage could need enhancement, export formats uncomplete, so after reimporting an exported task list it doesn't necessarily rebuild the same thing, supports iOS but no direct support for android). For android they recommend Todo.txt and task coach exports and imports task lists in todo.tx - Format.
Can't say I'm content with all this, it's more like a waypoint on my search. Below is a little python script that lets you excerpt a todo.txt task list from an xMind mindmap.
#!/usr/bin/python# -*- coding: utf-8 -*-
# (c) 2012, Daniel Plaenitz## depends on mekk.xmind by Marcin Kasperski# hg clone https://bitbucket.org/Mekk/mekk.xmind#
# python xmind2todo.py inputFile [outputFile]
from mekk.xmind import XMindDocument
from datetime import dateimport sysimport codecs
output = u""
def parse_sheet(file_name): xmind = XMindDocument.open(file_name) sheet = xmind.get_first_sheet() root = sheet.get_root_topic() for topic in root.get_subtopics(): parse_level(topic,[],root.get_title())
def parse_level(topic,names,rootTitle): global output _names = names[:] _names.append(topic.get_title()) _line = u"" for name in _names: _line += u" -> "+name _line = _line[4:] _line = " ".join(_line.split('\n')) _prio = u"" if 'priority-1' in list(topic.get_markers()): _prio = "(A) " elif 'priority-2' in list(topic.get_markers()): _prio = "(B) " elif 'priority-3' in list(topic.get_markers()): _prio = "(C) " elif 'priority-4' in list(topic.get_markers()): _prio = "(D) " elif 'priority-5' in list(topic.get_markers()): _prio = "(E) " elif 'priority-6' in list(topic.get_markers()): _prio = "(F) " if 'task-done' in list(topic.get_markers()): _prio = u"x " + _prio _line = _prio + date.today().isoformat() + " " + _line _line += " +"+rootTitle output += _line + "\n" for stopic in topic.get_subtopics(): parse_level(stopic,_names,rootTitle) def main(argv): global output
if len(argv) < 1 : print "xmind2todo.py inputFile [outputFile]" sys.exit(2) infilePath = argv[0] outfilePath = infilePath+".txt" if (len(argv) > 1): outfilePath = argv[1]
parse_sheet(infilePath) print "writing to "+outfilePath f = codecs.open(outfilePath, encoding='utf-8', mode='w') f.write( output ) if _name_ == "_main_": main(sys.argv[1:])
