Da sich Gestern jemand über zu seltene Postings beschwert hat (Herzlichen Glückwunsch nochmal, Andreas
), und da ich gerade mal wieder an einem kleinen Python-Projekt bastele: ein aktuelles Fundstück. Wenn man sich — wie ich — nichts merken kann, und zudem — wie ich — dauernd zwischen verschiedenen Programmiersprachen hin- und herspringt findet man so eine Sammlung mit Codeschnipseln sehr praktisch, stelle ich gerade fest. Hinweise auf bessere Schnipselsammlungen nehme ich dankend entgegen!
Archiv der Kategorie » Software «
Ich war mit der Funktionalität des NX-Servers prima zufrieden, den ich mir letzte Tage installiert hatte. Einen Account für mich, einen für meine Frau eingerichtet, und die Welt war schön. Dann wollte ich noch einen Test-Account haben, um rumspielen zu können ohne was kaputt zu machen… Tja… ist halt nur die kostenlose Community-Version des kommerziellen Produktes gewesen, da gehen nur zwei Accounts.
Also bin ich — wieder unter Anwendung einer wirklich simplen Anleitung — auf freie Software umgestiegen. FreeNX macht das gleiche wie die kommerzielle Version, zumindest in dem Rahmen in dem ich es benutzen möchte. Nebenbei ist das Paket direkt Bestandteil der Distribution, das macht alles sogar noch einfacher als es ohnehin schon war.
Übrigens, da ich gefragt wurde: ja, man sieht wirklich einen Performance-Unterschied zum einfachen X-Betrieb im Netz. Wenn ich zum Beispiel oowrite starte kann ich per X sehen wie die Icons der Reihe nach erscheinen. Per NX ist die Anwendung — einfach da. Und außerdem hat man den Vorteil dass man, ähnlich wie bei Benutzung von screen an der Kommandozeile, sich ganz einfach von einer Session trennen kann die man später weiter benutzen möchte. Ob und wenn ja wie das mit X geht müsste ich noch herausfinden…
Da drängt sich einem doch die Frage auf: Kann man diesen Mechanismus nativ unter Linux benutzen, oder braucht man dazu Wine?
Letzte Tage habe ich mal wieder eine Datei per Mail bekommen die ich nicht ohne weiteres öffnen konnte. Ich brauche extrem selten irgendwelche Office-Anwendungen, daher gibt es sowas nicht auf meinem Notebook. Arch Linux macht ‘rolling updates’, das heißt dass man mit einer neuen Version eines Programms nicht warten muss bis das nächste Release der Distribution ansteht, sondern die Neuigkeiten direkt rauspustet. Wenn ich hier ein OpenOffice drauf hätte würde ich das wahrscheinlich diverse Male updaten müssen ohne es zwischendurch benutzt zu haben. Und bei meiner bekanntermaßen lahmen Netzanbindung würde das echt Nerven kosten.
Bis jetzt habe ich in so einer Situation immer das Notebook meiner Frau gequält, die hat da ein Kubuntu und somit auch ein Office.
Da ich aber eh außer Gefecht gesetzt war habe ich eine Lösung gebastelt die mich hoffentlich dauerhaft glücklich macht. Eine Art Terminal-Server. Allerdings nicht auf Basis von LTSP oder x2go, sondern mit Nomachine NX. Also kein wirklicher Terminal Server von dem ich auch booten kann (zumindest bis jetzt noch nicht), sondern einfach nur eine zentrale Maschine auf der ich Anwendungen starten kann — wie zum Beispiel OpenOffice.
Den Server habe ich als VServer auf meinem total überdimensionierten Home-Server angelegt. Das Host-System ist ein Debian Stable, die virtuelle Maschine sollte in diesem Fall ein Kubuntu sein, damit die Anwendungen dort halbwegs aktuell sind. Den VServer anzulegen ist nicht ganz einfach, weil Kubuntu nicht mehr auf das gute alte System V Init setzt, sondern stattdessen Upstart benutzt.
Angelegt habe ich die Maschine letztendlich mit dem folgenden Kommando:
vserver terminator build -m debootstrap --context 40012 \
--hostname terminator.asgard --interface eth0:192.168.0.63/24 -- \
-d karmic -m http://odin:9999/ubuntu/
Dabei ist terminator der Name meiner neuen Maschine, asgard die Domäne, und auf dem Server odin läuft ein apt-proxy, damit sich die realten und virtuellen Rechner die mühsam aus dem Netz gelutschten Pakete teilen können. Ach ja, und karmic ist der Name der aktuellen Kubuntu-Distribution (Karmic Koala, Version 9.10).
An den Klippen von Upstart habe ich mir erst die Zähne ausgebissen. Kurz vor der Kapitulation — ich dachte es läge daran dass Kubuntu damit rechnet von CD installiert zu werden, statt mit debootstrap — habe ich dann noch einen Artikel über Upstart Issues gefunden. Genau was ich brauchte, sogar zugeschnitten auf Karmic. Damit ging es dann endlich.
Dann noch nach dem Ubuntu-Wiki den NX-Server installiert, und es kann losgehen. OpenOffice ist schon drauf, und ich glaube dass es sich bei einer lokalen Installation auf meinem Notebook nicht viel schneller anfühlen würde.
Was man jetzt noch — auch im Sinne eines höheren WAF — verbessern könnte wäre eine Art Application Launcher auf dem Server. Ich könnte einen kompletten Desktop auf dem Server starten, das würde aber mein ästhetisches Empfinden stören. Ich habe die Fenster lieber in einer Optik die so wirkt als ob die Anwendungen lokal laufen würden. Jetzt öffnet der NX-Client ein xterm auf dem Server mit dem ich nach Belieben Anwendungen starten kann. Ein kleines Menü würde mir da aber besser gefallen.
Vorschläge?
Ach ja, die Datei die den Anstoß für diese Aktion gegeben hat war übrigens belanglos: eine Präsentation mit dem alten 710-Gag.
Ich kann mich an Zeiten erinnern, in denen man sich wirklich überlegt hat ob man ein Bild auf dem Bildschirmhintergrund haben möchte, oder ob da vielleicht eine einfarbige Fläche reicht. Damals hat das — zumindest auf meinem damaligen Rechner — einen echten Unterschied gemacht: das Anzeigen kostet Zeit. Erst recht wenn es sich bei dem Bild nicht um ein einfaches Bitmap handelt, sondern zum Beispiel um ein JPG.
Aber die Zeiten ändern sich.
Unter Windows 7 Windows 6.1 dauert die Anmeldung offenbar eine halbe Minute länger wenn man die Ressourcenschonende einfarbige Variante wählt. Microsoft weiss das und bietet einen Patch an, oder wahlweise den guten Rat dass man sich doch auch ein einfarbiges Bitmap oder JPG malen kann, das man dann verwendet…
Was tut Windows in der Zeit? Ist das eine halbe Gedenkminute für die ungenutzten Bilder die ohnehin auf der Platte rumliegen?
Interessanterweise ist ‘30 Sekunden’ in etwa auch die Zeit die mein Notebook mit Arch Linux braucht um zu booten. Und da ist die BIOS-Wartezeit und die Anmeldung schon mit drin: nach einer halben Minute habe ich schon meinen Screen im urxvt vor mir und kann arbeiten… oder so.
Aber zugegeben: ein Hintergrundbild wird auch geladen. Einmal für den Desktop Manager (Slim) und einmal für den Window Manager (Compiz). Vielleicht würde es ohne Bild auch länger brauchen…
Dass es unter Linux den inotify-Mechanismus gibt mit dem man Aktionen basierend auf Events im Dateisystem auslösen kann wusste ich. Dass es mit dem Paket incron ein echt einfach zu bedienendes Tool gibt mit dem man das benutzen kann war mir neu. Die Bedienung ist genau wie beim traditionellen cron, nur dass Aktionen halt nicht basierend auf Uhrzeit ausgelöst werden sondern basierend auf Dateiänderungen.
Seit einigen Jahren bin ich mit dem Arch Linux prima zufrieden das ich auf meinem Notebook habe. Paket-Updates mache ich aber dank meiner Schmalbandverbindung nur dann wenn es wirklich nötig ist. Aktuell warten mehrere hundert Megabytes an Paketen darauf dass ich sie update.
Programme installieren geht trotzdem. Dumm nur wenn sie, wie gerade eben DVDStyler, von neueren Paketen abhängen:
error while loading shared libraries: libjpeg.so.7: cannot open shared object file: No such file or directory
Kein Problem denke ich, aber ein beherztes ‘pacman -S libjpeg’ später fällt auf, dass irgendwie die meisten Programme sich jetzt nach libjpeg.so.62 sehnen, und in deren Abwesenheit den Start verweigern. Leider ist es aber nun so, dass es nicht mal notwendigerweise das Programm selbst sein muss, dass die Bibliothek haben will. Kann sein dass das Programm gegen eine Bibliothek gelinkt ist, die auf libjpeg basiert. Ein ‘pacman -Su’ würde das Problem sicher beheben, aber ich will Heute noch das Notebook benutzen, und nicht nur Pakete saugen.
Das Internet hilft: mit ‘LD_DEBUG=files dvdstyler’ kriege ich ausführlich dargelegt, wer welche Bibliothek lädt. So sind die Abhängigen schnell gefunden — und aktualisiert.
Ich möchte jemandem eine oder mehrere Dateien zur Verfügung stellen die zu groß sind um sie in eine Mail zu packen. Bislang habe ich dann immer ein Paket gemacht und das temporär auf meinem Webspace abgelegt. Das hat den Nachteil dass ich am Webspace rumschreiben muss, und dass mir das in den Apache-Logs rummüllt und meine Statistiken durcheinander bringt. Gerade habe ich eine einfache und schnelle Lösung gelernt:
python -m SimpleHTTPServer 8000
Kurz und schmerzlos. Dann muss ich nur noch meinen Gegenüber auf beispielsweise blog.schatenseite.de:8000 schicken, er findet dort alles was im gleichen Verzeichnis liegt in dem ich das gestartet habe. Prädikat: praktisch!
Ach ja: Python war natürlich schon installiert. Und das Modul musste ich auch nicht mehr separat nachinstallieren, keine Ahnung ob das zum Standard-Lieferumfang gehört.
Dass man Passworte und ähnlich vertrauliche Sachen nicht in Kommandozeilen verwenden sollte ist mir klar. Jeder der auf dem gleichen System angemeldet ist kann sich mittels ‘ps auxwww’ den vollständigen Aufruf anzeigen lassen, einschließlich womöglich benutzter Passworte.
Bisher hätte ich in meinem jugendlichen Leichtsinn aber keine Bedenken gehabt, solche Daten in Umgebungsvariablen zu hinterlegen. Klar, irgendwo unter /proc findet man die soweit ich weiß auch wieder. Aber nur wenn man root ist, oder wenn man Spaß daran hat, seine eigenen Prozesse zu bespitzeln. Fremde Prozesse kann man so nicht einsehen.
Es geht aber auch anders: mit ‘ps auxwwwe’ — das ‘e’ steht offenbar für ‘Environment’ — stehen auch Umgebungsvariablen in der Prozessliste. Für alle Benutzer auf dem gleichen System einsehbar, ohne dass die über besondere Rechte verfügen müssen.
Man lernt nie aus… Und nachdem ich das jetzt weiß werde ich erstmal gründlich in mich gehen um rauszufinden wo ich eventuell solche Leichen im Keller habe…
Offenbar hat der Elektronik-Händler Farnell die Software-Schmiede CadSoft gekauft, bekannt als Hersteller des Elektronik-CAD-Systems Eagle CAD — unter Hobby-Elektronikern wahrscheinlich die am weitesten verbreitete Software für den Zweck. Ich habe für meine letzten Projekte die freie Software Kicad benutzt und nehme diese Nachricht nochmal zum Anlass die zu verlinken.
Ich quote mal eben einen Eintrag den ich Heute im Gästebuch hatte:
hallo Ronald, ich freue mich,dass es solche Webseiten wie diese hier gibt. Ich bin zwar schon einige Zeit an Linux dran. Aber als Anfänger ist es nicht leicht Tips zu bekommen, die einem wirklich weiterhelfen. Die Shell ist für mich immer noch ein Buch mit sieben Siegeln.. Vielleicht liegt es an meinem Alter (76), was aber meiner Begeisterung für Linux keinen Abbruch tut.
Ich bin wirklich beeindruckt. Der bislang älteste mir bekannte Linux-User ist mein Vater (69), und der hat — da sein Ältester ihm seinen Rechner eingerichtet hat — keine andere Wahl.
Nebenbei bemerkt: mein Vater hat mit 65 seinen ersten Computer bekommen. Absolut unvorbelastet. Er arbeitet mit KDE, Firefox und OpenOffice, und er ist glaube ich sehr zufrieden damit. In KDE hat er mir auch schon Sachen gezeigt von denen ich als Tastatur-Fan noch nichts wusste…
Damit ich mir das beim nächsten Mal nicht wieder zusammenfummeln muss wenn ich mal versuche eine Windows-Umgebung mit Cygwin soweit zu kriegen dass man damit arbeiten kann… Mit so einer Batch-Datei kann man direkt ein xterm starten, ohne mit der DOS-Box-Zumutung in Kontakt zu kommen:
@echo off
SET DISPLAY=127.0.0.1:0.0
c:\programme\cygwin\bin\run -p /usr/X11R6/bin /bin/xterm -geometry 132x50 -e /usr/bin/zsh --login -i
Voraussetzung ist natürlich, dass lokal schon ein X-Server läuft.
Vor ein paar Wochen hat Arch Linux meinen Firefox aktualisiert, auf Version 3.5.irgendwas. Nett, aber zwei Addons die ich nicht missen möchte waren noch nicht kompatibel dazu: Tab Mix Plus und RadialContext-mz. Ich habe jetzt eine Weile damit gelebt, immer wieder mal nachgesehen ob es was neues gibt. Heute konnte ich dann tatsächlich eine aktuelle Version von TMP installieren, leider war aber immer noch kein rundes Menü in Sicht. Also Selbsthilfe…
Ich habe die Datei der Extension gezogen. Die heißt zwar mit Nachnamen xpi, wenn man aber mal mittels file freundlich fragt ist das ein ZIP-Archiv. Nötig sind also die folgenden drei Kommandos:
% unzip radialcontext-mz-1.1.1-fx.xpi
% vi install.rdf
% zip radialcontext-mz-1.1.1-fx.xpi Makefile chrome.jar chrome.manifest defaults install.rdf modules
Im vi sucht man sich die Zeile in der die maximal erlaubte Versionsnummer steht. Die habe ich zu ‘em:maxVersion="4.0.*"‘ modifiziert. Nach dem Einpacken kann man seine neue radialcontext-mz-1.1.1-fx.xpi installieren und den Browser durchstarten. Viel habe ich noch nicht ausprobiert, aber bis jetzt scheint alles zu gehen. Mal sehen ob das Vorgehen doch noch irgendwann Tod und Verderben nach sich zieht…
Natürlich haben die das erfunden. Nagelneu. Gab’s noch nie. Oder warum sollten die sonst Fernsehwerbung bringen die nichts anderes zeigt als ein iPhone mit Copy&Paste-Feature? Die würden sich doch lächerlich machen, sonst…
Irgendwie scheinen die aber vergessen zu haben dass die die Idee schon mal hatten… Mein Apple Newton (>10 Jahre alt) kann das zumindest schon…
Eigentlich hatte ich nach dem Aldipod-Desaster vor ein paar Jahren beschlossen, keine Medion-Hardware mehr zu kaufen. Diese Woche habe ich mich aber doch wieder hinreissen lassen: Aldi hatte am Montag eine kleine Bluetooth-Laser-Maus für 20 Euro im Programm. Bluetooth klingt für mich insofern verlockend als dass ich die so am Notebook ohne Dongle benutzen können müsste. Und der Preis klingt für eine Maus die nur alle paar Wochen mal benutzt werden soll fair. Also: gekauft.
Für eine Notebook-Maus liegt die gut in der Hand, und Linux hat das Ding auch direkt gefunden. Trotzdem bin ich nicht glücklich: der Mauszeiger unter X wandert entweder schlagartig oder schrittweise auf eine Bildschirmecke zu. Ich habe in der xorg.conf alles ausprobiert was mir sinnvoll erschien, also die Einstellungen von ‘Driver’ und ‘Protocol’ ordentlich durcheinander gewürfelt. Arch Linux ist nicht für Frickelfreiheit bekannt, also mal eine Ubuntu Live-CD zu Rate gezogen — mit dem gleichen Ergebnis. Auch auf einem anderen Notebook mit GRML sah es genauso aus. Nur ein Arbeitskollege hatte mit seinem Windows-Notebook mehr Glück.
Ich dachte dass Bluetooth so sauber spezifiziert wäre dass die Geräte austauschbar wären? Nicht? Hat jemand Vorschläge was ich noch probieren könnte? Wenn nicht geht das Ding die Tage wieder in den Laden…
WolframAlpha — die berechnende Wissensmaschine — kennt tatsächlich verblüffende Antworten.
Wirklich überzeugend finde ich aber, dass man damit beispielsweise auch Widerstände entschlüsseln kann.
Ich habe seit ein paar Wochen ein mistiges Problem mit meinem Server zu Hause. Ich bin mir nicht bewusst eine Änderung gemacht zu haben die als Ursache her halten könnte, aber das ist ja immer so…
Vielleicht kann mir ja jemand aus der Leserschaft helfen:
Nach einer gewissen Laufzeit — beobachtet habe ich Zeiten zwischen einer und drei Wochen — fängt die Systemuhr an zu rasen. Alles ist wie immer, nur dass die Zeit etwa vier mal so schnell gezählt wird wie auf allen anderen Uhren. Der Server liefert die Zeit in mein Netz, also fängt früher oder später auch der Videorecorder und alles andere an zu spinnen.
Auf dem Server (Debian Etch, 2.6.18-6-xen-vserver-686) läuft ein ntpd, an dessen Konfiguration ich aber ewig nichts mehr gemacht habe. Alle Versuche dem Spuk ein Ende zu bereiten sind bislang fehlgeschlagen. Nur ein Reboot hilft. Für ein bis drei Wochen zumindest…
Ich bin ratlos. Hat wer einen Tip?
Die schlechte Wirtschaft hat wohl auch den Betriebssystem-Monopolisten erwischt, zumindest werden da aktuell wohl einige Stellen abgebaut. Leider ausgerechnet in der Entwicklungsabteilung der einzigen Software aus dem Unternehmen mit der ich mich gerne nochmal intensiv befassen würde: den Flugsimulator-Entwicklern. Doof. Aber wo ich gerade dabei bin: läuft der eigentlich unter Wine? Vielleicht sollte ich mir tatsächlich nochmal eine Version davon besorgen…
In den letzten Tagen habe ich nach längerer Pause mal wieder ausgiebig mit Nagios gespielt. Bei einer ausgiebigen Umstellung meines Netzes habe ich vor einer Weile den alten Nagios nach /dev/null verschoben, seitdem gab es Blindflug.
Soweit alles prima, allerdings bin ich an einer Stelle hängen geblieben: dem Drucker. Klar kann man einen Laserjet mit Netzwerkkarte problemlos überwachen, problematisch ist nur dass mein Drucker nur alle paar Wochen mal benutzt wird. Dazwischen ist der natürlich ausgeschaltet.
Das Problem: Wenn ich den Drucker ausschalte werden weiter alle Parameter (Tonerstand, Papiervorrat, Nachrichten…) geprüft, was natürlich nur zu Fehlern oder Nonsens führt. Besser fände ich wenn die Parameter den alten Zustand beibehalten würden, und lediglich das Gerät als ausgeschaltet gemeldet wird. Offenbar kann man das so aber nicht konfigurieren. Zumindest habe ich das nicht gefunden, für sachdienliche Hinweise wäre ich dankbar.
Ich habe vorhin mal ein wenig gescriptet, mit diesem Stück Shell geht es dann doch:
#!/bin/sh
host=$1
shift
command=$@
CACHEFILE=/tmp/check_cached.dat
if ping -c 1 $host > /dev/null; then
# $host is online, fetch fresh data
output=$(eval $command)
returncode=$?
# escape command and remove old entry from cache file
ecommand=$(echo $command | sed -e "s_/_\/_g")
sed -i "/^$ecommand;/d" $CACHEFILE
# append command with fresh values to cache file
echo "$command;$returncode;$output" >> $CACHEFILE
else
# $host is offline, fetch data from cache file
output="cached: $(sed -ne "s#^$command;[0-9];(.*)$#1#p” $CACHEFILE)”
returncode=$(sed -ne “s#^$command;([0-9]).*$#1#p” $CACHEFILE)
fi
echo “$output”
exit $returncode
Ich habe das unter dem Namen check_cached.sh gespeichert. Jetzt musste ich nur noch das Kommando ändern mit dem der Drucker kontrolliert wird:
define command{
command_name check_snmp_printer
command_line /usr/local/nagios/plugins/check_snmp_printer '$HOSTADDRESS$' '$ARG1$' '$ARG2$' '$ARG3$'
}
Daraus mache ich folgendes:
define command{
command_name check_snmp_printer
command_line /usr/local/nagios/plugins/check_cached.sh '$HOSTADDRESS$' "/usr/local/nagios/plugins/check_snmp_printer '$HOSTADDRESS$' '$ARG1$' '$ARG2$' '$ARG3$'"
}
Alle Services die check_snmp_printer benutzen sind ab sofort gecached. Rein theoretisch sollte das auch mit allen anderen Checks funktionieren, ich habe das aber selbst mit diesem bis jetzt nur oberflächlich getestet, ich übernehme (natürlich) keine Verantwortung für alles was mit dem Skript oder wegen des Skriptes passiert.
Fragen und Vorschläge fühlen sich hier in den Kommentaren wohl.
Oh, und eine Frage kann ich im Voraus beantworten: Nein, eigentlich brauche ich kein so dickes Netzwerkmanagement in meinem Heim-Netz. Grund für die Bastelei ist Spaß an der Sache, und nachdem ich in letzter Zeit mit einem teuren kommerziellen System arbeiten muss will ich mir zu Hause einfach nochmal klar machen dass man mit der freien Lösung auch das meiste — wenn nicht alles — hinkriegt.
Nachtrag: Momentan stört mich das nicht, aber wer das im großen Stil einsetzen will sollte vielleicht noch was einbauen das dafür sorgt dass auch etwas sinnvolles passiert wenn der Host offline ist, aber noch keine Daten dafür im Cache liegen…
Wer weiß wofür’s gut ist, auf jeden Fall ein nettes Spielzeug: wordle.net verwandelt Texte und Webseiten in eine Art Tag-Cloud, das Design kann man interaktiv beeinflussen. Quasi automatische Kalligraphie…

