Donnerstag, 20. Februar 2014

Was soll denn sowas bitte?! (Thunderbird)
Donnerstag, 12. Dezember 2013
Heute stieß ich auf eine Merkwürdigkeit: Die Partition /var/log war zu über der Hälfte voll, mit du -hsc /var/log/* waren aber nur ein paar MB belegt. Die Ursache war uns klar, das Problem hatten wir schonmal: Ein Programm hat eine Datei noch geöffnet, die aber bereits gelöscht ist. So wird Speicherplatz belegt, man findet aber keine Datei dazu.
Als Lösung war mit bisher nur bekannt, das Programm mittels lsof /var/log/| grep deleted zu identifizieren und neu zu starten, damit es die Datei-Handles aufgibt und die gelöschten Dateien wirklich gelöscht sind. In diesem Fall war es aber der MySQL-Server und wir hatten grade einen leistungsintensiven Import am Laufen, so dass mir das Risiko zu hoch war, den MySQL-Server neu zu starten bzw. ein SIGHUP zu senden. Gleichzeitig war aber die Gefahr groß, dass die Platte vollläuft, bevor der Import abgeschlossen ist.
Als praktisch hat sich dann das Werkzeug truncate erwiesen. Das kürzt eine offene Datei auf eine feste Größe und schiebt den Dateizeiger ebenfalls auf diese Position. Damit kann man eine Datei leeren ohne dass der andere Prozess sein File-Handle schließen muss: truncate -s0 /proc/19580/fd/11
Montag, 31. Dezember 2012
Gestern haben wir bei schokokeks.org die MySQL-Server auf die aktuelle Version 5.5 aktualisiert. Der Regelbetrieb war schnell wieder hergestellt, doch heute früh entdeckte ich eine unscheinbare Fehlermeldung im Backup:
ERROR 1457 (HY000): Routine [...] konnte nicht geladen werden. Die Tabelle mysql.proc fehlt, ist beschädigt, oder enthält fehlerhaften Daten (interner Code: -6)
Eine Stored-Procedure konnte also nicht verarbeitet werden. Die genannte Tabelle mysql.proc existierte aber und sah plausibel aus. In der Tabelle war auch die gesuchte Routine enthalten.
Die Lösung war, dass ein recht komplexes SQL-Statement in dieser Routine in den Augen von MySQL 5.5 ungültig war. Und zwar befanden sich "SQL_NO_CACHE"-Markierungen bei allen SELECT-Statements in diesem Query. Diese Markierungen sollen verhindern dass das Ergebnis dieses SELECT imm Query-Cache abgespeichert wird. Ich hatte die nie selbst definiert, MySQL hat die immer automatisch hinzugefügt.
Nun sind diese Markierungen bei UNION-Queries nur noch beim ersten SELECT erlaubt und bei Subqueries gar nicht mehr. Nachdem ich die Routine mit dieser Änderung neu angelegt hatte, funktionierte der Zugriff darauf wieder.
Schade, dass MySQL hier über eine Sache stolpert, die der Parser einer alten Version selbstständig hinzugefügt hat. Und dass dann nicht wenigstens die Fehlermeldung aussagekräftiger ist ("contains invalid SQL" oder sowas).
Samstag, 15. Dezember 2012
Nach der ernüchternden Evaluation der Desktops vor etwa eineinhalb Jahren war es nun an der Zeit, irgendwas aktuelles zu installieren, da ansonsten der Support für meine bisher betriebenen Ubuntu-11.04-Installationen ausgelaufen wäre.
Auch nach einiger Überlegung, ich kann mich nicht mit Unity oder Gnome-3 anfreunden, ich schaff es einfach nicht (Das Dock bei den beiden Systemen brauchte auf meinen Rechnern eine spürbare Zeit zum aufklappen. Da das die einzige Vorgehensweise ist um mit der Maus ein Programm zu wechseln, ist das ein no-go). Bei KDE fielen mir nach wenigen Minuten wieder Inkonsistenzen und Instabilitäten auf, so dass das auch gleich wieder von meinem Rechner verschwand.
Ich halte eigentlich nicht viel von Forks alter Software, die schlafen nämlich meistens ein bevor der Unterbau fit für neuere Entwicklungen ist, aber in diesem Fall bin ich wirklich bei MATE hängen geblieben. Genauer gesagt habe ich ein Lubuntu-System installiert (damit der Unterbau recht schlank ist) und darauf dann MATE-Pakete eingespielt. Das ganze auf dem neuen Rechner, den ich nach dem Bauvorschlag der c't gebaut habe, bootet in 2 Sekunden (nach dem BIOS) zum Desktop. Der Rechner ist schneller gebootet als der Monitor aus dem Standby erwacht.
Der Desktop ist das woran ich mich die letzten 1,5 Jahre gewöhnt habe: Effektiv Gnome-2. Leider mussten die alles umbenennen, was es natürlich schwer macht, da die vorhandenen Desktop-Icons ins Leere laufen und das was man schnell mal per Alt+F2 startet, nun plötzlich anders heißt. Aber man kann damit leben.
Als Anwendungsprogramme möchte ich mich nicht mehr auf einen Desktop festlegen und verwende daher z.B. Thunderbird und Firefox bzw. momentan Chromium. Letzteren soll ich mir nach einigen Ratschlägen unbedingt anschauen. Bisher überzeugt er mich aber nicht wirklich, ich denke in Kürze werde ich wieder Firefox benutzen.
Mittwoch, 12. Dezember 2012
Die Tage kam bei schokokeks.org die Notwendigkeit nach einem zusätzlichen Server auf, der nichts anderes machen sollte als Backups von einigen bestehenden Maschinen entgegen zu nehmen. Der Server soll als virtuelles Gastsystem betrieben werden, da die erwartete Last minimal ausfällt. Da wir stets versuchen, IPv4-Adressen nicht zu vergeuden, wollte ich diesen Server als IPv6-only-System in Betrieb stellen.
Das hat grundsätzlich gut geklappt, es gab aber einige Stellen die (für mich unerwarteter Weise) Probleme bereitet haben.
- OpenVPN kann nicht über IPv6. Mit der Version 2.3 soll das angeblich anders werden, die gibt es aber bisher noch nicht. Meine Lösung war, dass ich eine private IPv4-Adresse eingerichtet habe, die der physikalische Server auf einen anderen Server routet, der ebenfalls eine passende private IPv4-Adresse hat. Dadurch kann OpenVPN über diese IPv4-Verbindung kommunizieren.
- Die normalen Gentoo-Mirror-Dienste beachten kein IPv6 und liefern im Round-Robin einfach irgendwas zurück, was ich dann nicht aufrufen kann. :( Die Lösung war, gezielt SYNC-Server und Distfiles-Mirror einzutragen die IPv6-Verbindung liefern. Die Listen gibt es hier (sync-Mirrors) und hier (Distfiles-Server). Jeweils die mit Sternchen sind IPv6-fähig.
- Wir betreiben normalerweise lokale DNS-Resolver auf jedem Server. Für diesen speziellen Zweck ist das okay, aber man kann halt nur Namen auflösen, die auch über IPv6-fähige DNS-Server angeboten werden. IPv6-Paradebeispiel Heise online geht z.B. nicht, da deren DNS-Server keine IPv6-Adressen haben. Um etwas mehr Möglichkeiten zu haben, kann der Google-Public-DNS benutzt werden: 2001:4860:4860::8888.
Letztlich ist OpenVPN der einzige Grund, dass auf der Maschine überhaupt eine IPv4-Adresse eingerichtet ist. Und das soll sich ja angeblich mit dem nächsten Release, für das bereits ein RC angeboten wird, ändern. Ich bin jedenfalls gespannt.
Unsere normalen Serverdienste betreiben wir schon seit Jahren im Dualstack. Vor einigen Wochen wurde der Linux-Default-Resolver auch so geändert, dass er IPv6 bevorzugt, da hatten wir ein Localhost-Problem (Zugriffe auf localhost kamen dann von ::1 und nicht mehr von 127.0.0.1, da mussten einige Konfigurationen angepasst werden). Aber ansonsten bereitet uns der Dualstack-Betrieb keine Schwierigkeiten.
Dienstag, 19. Juni 2012
Letzte Woche habe ich mir ein neues Spielzeug angeschafft: Ein Epson TM-T20 Thermo-Bondrucker. Ein echter Kassenzetteldrucker.
Ich möchte mein Bag-in-Box-Kassenprogramm Bib2011 darauf portieren, so dass Kunden-Belege wesentlich schneller und günstiger gedruckt werden können. Das funktioniert nun auch schon. Bis das so weit war, war allerdings wirklich erst einmal mein Spieltrieb gefordert. Das Gerät wird nicht als normaler (grafischer) Drucker angesteuert sondern als zeichenorientierter Drucker mit Formatierungs-Steuerzeichen. Man sagt dem Drucker als zunächst welche Größe die kommenden Zeichen haben sollen und dann schickt man einfach ASCII-Zeichen hin.
Die Druckersprache ESC/P bzw. ESC/POS ist für diesen Zweck gängig und wird von fast allen POS-Druckern benutzt. Irritierend ist dabei, dass manche Befehle, Dokumentationen und auch laufender Code im Netz frei verfügbar ist, teilweise auch vom Hersteller selbst. Andererseits beginnt die Bedienungsanleitung des Geräts mit der Aussage, dass man das ESC-Reference-Manual nur gegen Unterzeichnung eines NDA erhalten kann:
To use ESC/POS commands, you need to agree to a nondisclosure contract first and obtain the ESC/POS Application Programming Guide. Demzufolge enthält die Anleitung auch nur eine Liste der unterstützten ESC-Befehle, nicht aber deren Syntax.
Nach einigem hin und her wurde ich allerdings fündig: Die Anleitung des größeren Schwestermodells TM-T85 enthält eine umfangreiche ESC/P-Referenz. Auch nicht komplett, ich habe schon andere Befehle gefunden die da nicht drin sind und die der Drucker auch versteht, aber das meiste ist drin.
Donnerstag, 8. März 2012
Heute bin ich über alten Sourcecode gestolpert, den ich teilweise vor langer Zeit erstellt hatte und auch diversen Leuten versprochen hatte, das "irgendwann" als freie Software zu releasen.
Im Zuge eines Warum eigentlich nicht jetzt?-Anfalls habe ich jetzt mal zwei git-Repositories erstellt und den Code dort eingespielt und gebe diese hiermit frei.
Für beide Projekte gilt: Das war Software die ich selbst gebraucht habe und sie ist in genau dem Zustand in dem ich sie bei mir momentan benutze. So ist meist die Konfiguration im Code, auch wenn ich hoffe, dass keine Zugangsdaten mehr irgendwo enthalten sind. Die Software ist vermutlich in dem Zustand in dem sie hier angeboten wird für niemanden nützlich.
Folgende Projekte gibt es hier:
Bib2011 steht für "Bag-in-Box-Kassenprogramm". Ich verwende für unsere Mosterei schon länger ein eigenes Programm zur Kassenverwaltung. 2011 habe ich dies von Grund auf neu gemacht, gedacht für die Nutzung auf einem Touchscreen.
Der Code basiert auf Python und Qt4. Die UI-Designer-Dateien sind auch dabei.
python-solarmax ist eine Bibliothek um Ertragsdaten aus Solarmax-Wechselrichtern auszulesen. Das Paket besteht aus einer Python-Bibliothek zur Kommunikation mit dem Gerät und einem kleinen Programm das diese Bibliothek nutzt um die Ertragsdaten regelmäßig in einem SQLite-Datenbank zu speichern.
Das (proprietäre) Kommunikations-Protokoll habe ich zunächst reverse-engineered, indem ich die Hersteller-Software in einer virtuellen Maschine benutzt habe und dann im Netzwerk die Daten ausgewertet habe. Nachdem ich das praktisch fertig hatte, bekam ich vom Hersteller doch noch eine Dokumentation des Protokolls, allerdings mit unbrauchbaren Lizenzhinweisen (keine Veröffentlichung des Protokolls und keine Herstellung von Software die veröffentlicht wird). Ich habe also die Bibliothek ohne die Dokumentation fertig geschrieben.
Wenn jemand die Software interessant findet und für irgendwas eigenes brauchen kann, würde ich mich sehr über eine Nachricht freuen.
Mittwoch, 21. Dezember 2011
Wir auf dem Dorf sind ja schon länger etwas abgeschlagen, was eine moderne Internet-Verbindung angeht.
Auch wenn ich es komischer Weise stark verzögert überhaupt mitbekommen habe: Es gibt eine Linderung der Probleme (und untypischer Weise sogar kostenlos, unbürokratisch und bei neuen Anschlüssen als Standardvorgabe).
Seit heute wurde unser DSL-Zugang vom Schmalspur-DSL (768 kBit) auf DSL 2000 RAM umgestellt. RAM steht für "rate adaptive mode" und bezeichnet das was in allen modernen Übertragungsverfahren gemacht wird, die Verbindungs-Geschwindigkeit wird von den Geräten individuell ausgehandelt.
So wurden aus den von der Telekom konservativ und fest eingestellten 768 kBit jetzt real erreichbare 1886 kBit (mit einer FritzBox 7170, es soll angeblich auch bessere Modems geben). Mein Netz ist also jetzt offiziell gepimped und ich kann jetzt zu Recht sagen dass wir hier Internet-Zugang haben. Laut Bundesregierung haben wir damit sogar Breitband-Internet.
(Und mal unter uns: Es macht einen riesigen Unterschied ob durchschnittliche YouTube-Videos langsamer oder schneller geladen werden als die Abspielgeschwindigkeit.)
Dienstag, 17. Mai 2011
Man kennt mich als KDE-Nutzer. Schon vor Jahren hatte ich mehrmals einen GNOME-Desktop ausprobiert, aber irgendwie war ich stets nach wenigen Minuten auf Dinge gestoßen die man nicht (auf normalem Wege) einstellen konnte und die einfach "anders" waren als ich es gerne gehabt hätte. Mit freier Software verbinde ich grundsätzlich auch dass eine Software sich an die Wünsche des Nutzers anpassen kann und das war bei KDE immer wesentlich einfacher zu haben als bei GNOME.
Ich habe also stets KDE gelobt und fand GNOME beschränkt, zu "appelig" und irgendwie nicht nutzbar. Und die für GNOME entwickelten Standardprogramme waren auch schon lange ein großes Problem.
Sogar das KDE-4-Desaster habe ich zähneknirschend über mich ergehen lassen. Nachdem aber KDE nun auch in den jetzt aktuellen Versionen vor (für den einfachen Anwender) nervtötenden Fehlern nur so strotzt, habe ich mich entschieden, dass ich für meine Kunden und meine Familie zukünftig GNOME verwenden möchte und habe dieses völlig vorurteilsfrei auf meinem Desktop installiert um Erfahrungen damit zu gewinnen. Das ist jetzt ungefähr 4 Wochen her und die ersten Nutzer sind schon auf erfolgreich GNOME umgestellt. Für einfache Anwender hat GNOME den großen Vorteil, dass es nicht mit offensichtlichen Fehlern nervt.
Wie sieht es aber mit meinen eigenen Erfahrungen aus? Nach 4 Wochen Dauernutzung kann ich guten Gewissens sagen: Der Test war ohne Vorurteile. Und ich habe gemerkt, dass beide genannten Alternativen unerwartet gravierende Schwächen haben.
Ich möchte mich hier vor allem auf die Schwächen der Programme stürzen, die ich im Rahmen des Tests ausprobiert habe.
"Was ist der schlechteste Desktop? Ein Erfahrungsbericht" vollständig lesen
Dienstag, 1. März 2011
Vorweg: Man sollte das eigentlich nicht machen. MySQL 5.0 ist alt und zu Recht nicht mehr in den aktuellen Ubuntu-Repositories.
Ein Kunde setzt allerdings die Warenwirtschaft Sage GS-Office ein und da gibt es leider ein Problem. Auch wenn die WaWi mit MySQL 5.1 funktioniert, so arbeitet die Shop-Anbindung GS-Shop intern noch mit einer völlig veralteten Datenbankanbindung und verlangt unbedingt MySQL 5.0.
Praktischer Weise gibt es in den Repositories der LTS-Vorversion Hardy Heron (Immerhin von 2008!) binärkompatible Pakete. Man muss nur die APT-Zeile
deb http://security.ubuntu.com/ubuntu hardy-security main
einfügen und kann dann mysql-server-5.0 installieren.
Da die Server-Version von Ubuntu LTS 5 Jahre Support beinhaltet, wird der MySQL-5.0-Server folglich bis April 2013 mit Sicherheitsupdates versorgt. Ich bete dafür, dass bis dahin auch die letzte Software gemerkt hat, dass MySQL 5.0 veraltet ist.
|