Archiv der Kategorie » IT «

Dienstag, 09. Februar 2010

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…

Kategorie: IT, Software  | Tags: , , , ,  | 2 Kommentare
Mittwoch, 03. Februar 2010

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. ;-)

Samstag, 09. Januar 2010

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.

Kategorie: IT, Links, Software  | Tags: , , ,  | Sag was dazu
Mittwoch, 23. Dezember 2009

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.

Dienstag, 24. November 2009

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… :-(

Freitag, 09. Oktober 2009

Letztes Jahr habe ich das Epia-Board meines altgedienten Videorecorder-Rechners durch ein Atom-Board ersetzt — und später irgendwann sogar den Verbrauch gemessen.

Ich weiß nicht woran es liegt: entweder bin ich im Laufe des Jahres empfindlicher geworden oder der Propeller des alten Boards ist immer lauter geworden. Wir erinnern uns: das war eins der ersten Atom-Boards, da war noch ein Luftquirl auf dem Chipsatz.

Auf jeden Fall hatte ich diese Woche die Schnauze voll und für Ersatz gesorgt. Seit gerade eben liegt das Intel-Board in der Kiste, und hinter dem Schrank werkelt ein Foxconn 45CS, erhältlich bei Pollin für knapp 60 Euro. Fast die gleichen Spezifikationen wie das alte D945GCLF, nur halt ohne Lüfter.

Ich musste nur einen anderen Netzwerktreiber in meinen Kernel compilieren, die neue MAC-Adresse in den DHCP-Server eintragen, und schon hat das Ding sogar über das Netz gebooted. Auch alles andere lief erwartungsgemäß problemlos. Ach nee, ich war etwas irritiert ob des 24poligen Stromsteckers auf dem Board. Läuft aber auch mit meinem 20poligen Spannungswandler.

Und jetzt: himmlische Ruhe… :-D

Kategorie: IT, Sonstiges  | Tags: , ,  | 2 Kommentare
Freitag, 04. September 2009

Au weia… ich habe Gestern einen Artikel in einer etwas älteren c’t (22/07) gelesen, es ging um esoterische Programmiersprachen. Unter anderem haben die die Sprache Brainfuck vorgestellt. Was mich wirklich erschrocken hat: ich habe die Beispiel-Programme verstanden! Muss ich mir Sorgen machen?

Gerade habe ich in der Wikipedia ein alternatives Hello World gefunden, kommentiert ist das sogar fast trivial.

Montag, 17. August 2009

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.

Kategorie: IT, Software  | Tags: , ,  | Sag was dazu
Dienstag, 19. Mai 2009

Ich kann nicht sagen dass mich Datenbanken vor unlösbare Probleme stellen, aber den Manga Guide to Databases würde ich mir doch mal gerne ansehen. :-)

Kategorie: Geek, IT, Spaß  | Tags: ,  | Sag was dazu
Samstag, 10. Januar 2009

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. :-D

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…

Kategorie: IT, Software  | Tags: , ,  | Sag was dazu
Montag, 22. Dezember 2008

StromverbrauchIch habe jetzt seit knapp einem halben Jahr ein Board mit Atom-CPU im Einsatz und wollte die ganze Zeit mal messen wie viel Saft das Ding zieht. Am Wochenende habe ich mich endlich mal dazu durch gerungen, hier die Resultate:

Es handelt sich bei dem Board um ein Intel D945GCLF, die CPU ist ein Intel Atom 230 und läuft mit 1,6GHz. Das ist eins der ersten Boards gewesen die mit der CPU erhältlich waren, darauf ist ein Chipsatz der leider der stromsparenden CPU nicht gerecht wird. So braucht kurioserweise der Chipsatz einen Lüfter, die CPU kommt ohne aus. Strom kommt von einem separaten 84W-Netzteil und einem picoPSU-120 Spannungswandler.

Das System ist mit VDR als Videorecorder im Einsatz, dazu ist eine DVB-S-Karte — Hauppauge Nexus S — verbaut. Irgendwann will ich zusätzlich XBMC als Multimediadingsbums installieren, deshalb brauche ich auch 3D-Beschleunigung. Da das Board nur einen PCI-Steckplatz hat steckt darin ein Portextender in dem neben der Nexus eine NVidia GeForce FX5200 mit 128M und ohne Lüfter. Festplatte brauche ich nicht, gebootet wird per PXE über das Netz. Um auch ohne Swap ausreichend RAM zu haben habe ich einen 2GB-Riegel reingesteckt.

Um zu sehen welche Komponente wie viel verbraucht habe ich nach jedem Schritt beim Zusammenbauen gemessen:

  • Nur das Netzteil: 6W
  • Netzteil mit Spannungswandler: immer noch nur 6W
  • Netzteil mit Spannungswandler und Mainboard, noch ausgeschaltet: 6W
  • Das gleiche, diesmal eingeschaltet — aber ohne Betriebssystem: 25 - 27W
  • Immer noch ohne Betriebssystem, dafür mit 2GB RAM: 34W
  • Nach Einstecken der DVB-S-Karte: 39 - 41W
  • Mit der GeForce FX5200: 41 - 44W
  • Das fertige System in Betrieb: 50W

Alles in allem hätte ich mit einem höheren Verbrauch gerechnet. Insbesondere die Grafik- und die DVB-S-Karte hätte ich hungriger eingeschätzt, da beide doch merklich Abwärme produzieren. Eine Überraschung in die andere Richtung war der RAM, der für sich schon fast 10W zieht. Ich frage mich ob der Stromverbrauch abhängig von der Größe ist. Weiß das jemand?

Ach, übrigens am Rande: ich habe kein Office auf dem Rechner. So einen schoenen Graphen kann man mit diesem Frontend zur Google Chart API ganz einfach bauen — oder direkt mit der API, indem man nur die URL bastelt. :-)

Kategorie: IT  | Tags: , ,  | 3 Kommentare
Montag, 10. November 2008

Proxyfizierte BilderDass man beim Surfen per UMTS oder GPRS über einen Zwangsproxy geschickt wird, der einem Bilder verstümmeltoptimiert habe ich schon gehört, dass die Bilder aber dermaßen heftig verändert werden hätte ich nicht gedacht.

(Nein, das war auch vorher schon ein Windows-Logo. :-) )

Kategorie: IT, Internet  | Tags: , ,  | 2 Kommentare
Freitag, 24. Oktober 2008

Ich sitze hier meistens an einem Thinkpad mit englischer Tastatur. Normalerweise ist das echt praktisch, ich hab mich dran gewöhnt. Wenn ich aber zum Beispiel was in den Blog schreibe mache ich das üblicherweise doch unter Verwendung von Umlauten. Bis Gestern habe ich mich nicht wirklich darum gekümmert wie das komfortabel geht, habe mir ziemlich billig beholfen.

Ich löte zur Zeit wieder mal an einer Tastatur rum. Das aktuelle Modell verfügt über eine eigene Compose-Taste (die auch so beschriftet ist). Das hat mich neugierig gemacht und zu etwas gebracht das ich schon lange hätte herausfinden sollen: wie man eine Tastatur bedient. :-)

Mit einer Compose-Taste kann man Zeichen schreiben die man auf der Tastatur nicht sieht. Umlaute zum Beispiel. Wenn ich [Compose]["][a] drücke (also drei Tasten nacheinander, nicht gleichzeitig) kommt ein kleines ‘ä’ dabei raus. Mit [Compose][o][c] gibt es das allseits beliebte Copyright-Zeichen: ©.

Unter Linux ist Compose per Default auf [Shift+AltGr] untergebracht. Also sollte man einfach [Shift+AltGr][s][s] drücken können und ein ‘ß’ erhalten. Wer es komfortabler mag baut in seine Shell-Konfiguration folgende Zeile ein, damit erhält die Caps-Lock-Taste endlich eine sinnvolle Funktion:

xmodmap -e "remove Lock = Caps_Lock" -e "keycode 0x42 = Multi_key"

So sorgt man erst dafür dass die Taste nicht mehr ‘lockt’ (entfernt also quasi die Feststellfunktion) und belegt sie dann mit dem Symbol ‘Multi_Key’, und das steht für die Compose-Taste. Alternativ kann man das auch in seine ~/.Xmodmap einbauen, wenn man sowas pflegt. Jetzt sollte [CapsLock]['][e] zu einem é führen.

Zumindest in grafischen Programmen (Firefox & Co.) hat das bei mir auch auf Anhieb geklappt. Für das Terminal-Fenster habe ich eine Weile gesucht, und noch keine wirklich befriedigende Lösung gefunden, da meine ersten Versuche blöde Nebeneffekte hatten. Ich verwende urxvt und bin damit eigentlich ganz zufrieden. Ob man darin Zeichen komponieren kann hängt offenbar von den locale-Einstellungen ab. Bei mir sind die bislang nicht gesetzt, stehen also wenn ich einfach ‘locale’ ausführe alle auf POSIX. Wenn ich zum Beispiel LC_ALL auf de_DE setze kann ich komponieren, habe aber auch deutsche Manual-Pages. Letzteres will ich nicht. Wenn ich LC_ALL auf en_US stelle klappt beides, ich habe aber noch nicht rausgefunden ob das an anderer Stelle was zum Haken bringt. Und welche Auswirkungen hier de_DE.iso885915@euro oder de_DE.utf8 haben kann ich mir nur dunkel vorstellen. Hab mich halt noch nie damit beschäftigt. Das kommt dann Heute Abend — wenn mir hier niemand mit einem Tip zuvorkommt… *mitzaunpfahlrumfuchtel* ;-)

Wo kann ich nachlesen was alles passiert wenn ich beispielsweise nur LC_CTYPE auf en_US setze? Ich habe zwischendurch kaputtformatierte Man-Pages gesehen, und nach Konsumierung der locale-Manpage könnte ich mir vorstellen dass es daran lag. Allerdings habe ich auch echt unstrukturiert getestet, kann sein dass ich mich täusche…

Oh, noch eine interessante Sache die ich nebenbei gefunden (aber auch noch nicht ausprobiert) habe: wenn ich diesen Eintrag im Kubuntu-Wiki richtig verstehe kann man sich sogar eigene ‘Kompositionen’ bauen. Also so dass man mit [Compose][b][t][w] wirklich ‘by the way’ schreibt. Das will alles noch ausprobiert werden…

Kategorie: IT, Software  | Tags: , ,  | 3 Kommentare
Mittwoch, 15. Oktober 2008

Das erinnert mich daran warum ich die Sprache C nach Möglichkeit nur auf Mikrocontrollern benutze:

rschaten% cat array.c
#include <stdio .h>
int main(int argc, char **args) {
  char *string = “abc”;
  printf(”%c %c %cn”, string[0], string[1], string[2]);
  printf(”%c %c %cn”, 0[string], 1[string], 2[string]);
  return 0;
}

rschaten% gcc -o array array.c

rschaten% ./array
a b c
a b c

rschaten%

Das habe ich aus dem Unix Haters Handbook, ich hätte nicht gedacht dass das wirklich funktioniert…

Kategorie: Geek, IT, Software  | Tags: , ,  | 3 Kommentare
Freitag, 19. September 2008

DOS und %ERRORLEVEL%, Teil 1Wie schon erwähnt muss ich mich bei der Arbeit mit Windows rumschlagen. Um Sehnenscheidenentzündungen vorzubeugen verschlägt es mich da bisweilen auch in die Kommandozeile. OK, das ist nicht der einzige Grund. Manchmal will man ja aus einem Skript (leider in diesem Fall kein Perl) heraus einfach mal ein system() aufrufen, und da muss man dann halt DOS-Kommandos absetzen.

Jetzt wollte ich etwas kluges basteln, das testet ob ich eine Datei (schreiben|lesen|löschen) kann. Auf anderen Systemen hätte ich dazu auf etwas in der Form

kommando; echo $?

gesetzt, die Ausgabe könnte ich parsen. Ein Kollege hat für DOS

kommando && echo ok || echo nein

vorgeschlagen, das sollte funktionieren. Prima, Exitcodes kann ich dann offenbar auswerten. Oder?

Um Vielleicht mehr Infos zu kriegen als (tut’s|tut’s nicht) versuche ich folgendes:

kommando & echo %ERRORLEVEL%

Und jetzt bin ich verwirrt (siehe Screenshot):

Das mit && funktioniert scheinbar, die Ausgabe von %ERRORLEVEL% bringt aber nicht sinnvolles? Was wird denn dann von && bzw. || ausgewertet? Und wie zur Hölle kriege ich den wirklichen Exit-Code?!?

DOS und %ERRORLEVEL%, Teil 2Nach etwas mehr Spielerei stelle ich fest, dass in einigen Konstellationen der %ERRORLEVEL% tatsächlich gesetzt wird. Leider immer ein Kommando zu spät, wie man am zweiten Screenshot erkennen kann. Komischerweise funktioniert das aber — wenn man da von ‘funktionieren’ sprechen kann — auch nur bei Programmaufrufen.

echo > . & echo %ERRORLEVEL%

führt zwar jedes Mal zu einer Fehlermeldung, gibt aber trotzdem nur 0 aus…

Ich beschließe einfach erstmal, das nicht zu verstehen. Mein eigentliches Problem kann ich offenbar unter Windows nicht elegant lösen, also muss ich mir da was anderes ausdenken… :-(

Kategorie: IT, Monopoly, Software  | Tags: , ,  | 2 Kommentare
Freitag, 12. September 2008

Im Moment bin ich wie schon erwähnt dazu gezwungen, beruflich viel auf Windows zu machen. Leider knirscht es dabei an allen Ecken und Enden, wenn man wie gewohnt produktiv sein will. Eine Menge Werkzeuge fehlen einfach, mal eben schnell eine elegante Shell- oder Perl-Zeile abschicken geht nicht. Von ganzen Skripten ganz zu schweigen.

Klar gibt es mit Cygwin oder ActiveState auch die Möglichkeit, einen Werkzeugkasten auf Windows nachzuinstallieren. Aber das ist lästig, und das würde ich auch nicht auf hunderten produktiver Server bei meinem aktuellen Kunden machen wollen. Geschweige denn: dürfen.

Ich habe jetzt eine Lösung gefunden die zwar kein hundertprozentiger Ersatz für eine anständige Umgebung ist, aber die an einigen Stellen schon echt hilfreich war: PAR::Packer.

Auf meinem Arbeitsplatz habe ich ein ActiveState-Perl installiert, darin das genannte Modul. Jetzt kann ich beispielsweise folgendes eingeben:

pp -e "print time();"

Die Maschine kaut eine Weile auf dem Kommando rum und spuckt dann eine a.exe aus, die ab sofort den aktuellen Unix-Timestamp ausspuckt wenn man sie aufruft. Und das auch auf Systemen auf denen keine Perl-Umgebung installiert ist, man braucht also keine zusätzlichen DLLs oder so, nur die jeweilige EXE.

Leider ist es nicht so, dass pp das Kommando wirklich compiliert. Es ist vielmehr so, dass pp ein Archiv zusammenpackt in dem alles drin steckt was zur Ausführung des Befehls nötig ist. Die Ausgabe des entstehenden Executables ist zwar die gleiche, aber oben genanntes a.exe ist 1.844.011 Bytes groß und braucht auf meiner Kiste über eine Sekunde bevor sie wirklich ausgeführt wird. Klar, muss ja erst entpackt werden.

Die gute Nachricht ist, dass lediglich der Start so lange dauert. Das enthaltene Programm läuft — nach dem Entpacken — praktisch genauso schnell wie in einer ‘richtigen’ Perl-Umgebung.

Wer es etwas schicker haben will kann übrigens auch direkt folgendes machen:

pp --output=timestamp.exe -e "print time();"

Und komplexe Skripte werden wie folgt gepackt:

pp --output=weltherrschaft.exe weltherrschaft.pl

Die Größe der entstehenden Datei steigt übrigens nicht derartig an dass für jede Zeile wieder 1,8MB dazu kommen. Ich habe hier ein Skript von 5.308 Bytes übersetzt, das EXE ist 2.493.292 Bytes groß. Immer noch eine Menge, aber für einen schnellen Hack ist das durchaus tauglich.

Kategorie: IT, Software  | Tags: , ,  | 4 Kommentare
Mittwoch, 23. Juli 2008

Ich bin im Moment dazu verdammt, mit Windows zu arbeiten. XP am Arbeitsplatz, und unter anderem Windows 2003 Server irgendwo im RZ. Das heißt: ich versuche, damit zu arbeiten. Geht aber viel zu oft nicht, weil das ein großer Haufen Scheiße ist. Stinkend. Irgendwie.

Ich habe mir Heute Nachmittag vorgenommen, das zu schreiben. Während ein Kollege (der im Gegensatz zu mir auch sonst freiwillig mit Windows hantiert) versucht, einen Windows-Server zu rebooten. Weil der Speicher voll gelaufen ist. Oder so. Geht nicht. Muss wohl jemand den Server samt Reset-Knopf suchen gehen…

Naja, mein Problem findet aber auf einem anderen Server statt, und auch lokal auf dem XP kann ich das reproduzieren:

Ich bin mit dem Explorer in einem Verzeichnis mit etwa 20 Textdateien (plain ASCII, Quelltexte). Ich öffne eine der Dateien, suche da nach einem String, finde den auch. Ich will wissen in welchen anderen Dateien der String noch vorkommt. Also Rechtsklick auf den Ordner, ‘Suchen…’. Auf XP öffnet sich ein neues Fenster mit einem aufwändig animierten Hund. Auf dem Server sieht das anders aus, macht aber das gleiche. Über dem Hund habe ich mehrere Eingabefelder. Über einem steht ‘Ein Wort oder ein Begriff innerhalb der Datei’. Klingt sympathisch, nehme ich. Bringt aber nix. Der Hund wird aktiv, findet aber keine Dateien mit dem Begriff. Obwohl ich die vorher im Editor offen hatte. Noch mal rein gesehen, steht immer noch drin.

Ich versuche, zwei Kollegen zu fragen was ich falsch mache. Die haben sich aber beide nicht angesehen was ich wirklich getan habe, sondern schon bei der groben Schilderung des Problems wissend gegrinst, und Kommentare wie ‘Hab ich auch schon versucht, klappt nicht.’ abgegeben.

Ich habe dann in einer DOS-Box mit ‘findstr’ gesucht. Das ging. Ist dann allerdings auch ohne Hund. Und nicht rekursiv.

Liegt das an mir? An meiner Aura? Habe ich was falsch gemacht?

Ach ja, der Kollege hat den Server dann auch noch rebooten lassen können. Da musste nicht mal jemand einen Reset-Button suchen. Die Kiste ist keine Kiste sondern nur eine virtuelle Kiste. Und VMware hat quasi einen Fernsteuerungsresetbutton. Schöne neue Welt, der Serverbetrieb ist auf die Weise selbst mit Windows ganz angenehm. Zumindest die Abnutzung von Turnschuhen war hat deutlich nachgelassen…

Kategorie: IT, Monopoly, Software  | Tags: , ,  | 3 Kommentare
Donnerstag, 26. Juni 2008

Eine Mail von Bill Gates, der vergeblich versucht ein Microsoft-Produkt auf einem Microsoft-Betriebssystem zu installieren:

Someone decided to trash the one part of Windows that was usable? The file system is no longer usable. The registry is not usable. This program listing was one sane place but now it is all crapped up.

Herrlich. Oder dieser Absatz:

Then it told me to reboot my machine. Why should I do that? I reboot every night — why should I reboot at that time?

Täglicher Reboot? Sicher nur weil er umweltbewusst Abends den Rechner abschaltet, oder? Der Mann hat auf jeden Fall Humor:

So they told me that using the download page to download something was not something they anticipated.

Die Mail ist fünf Jahre alt und bezieht sich auf XP. Keine Ahnung ob das heutzutage besser ist. Warum hat er nicht einfach etwas in der Form ‘apt-get install moviemaker‘, oder noch besser ‘pacman -S moviemaker‘ ausprobiert? :-D

Kategorie: IT, Monopoly, Software  | Tags: ,  | 3 Kommentare
Freitag, 20. Juni 2008

frey:~# grep "model name" /proc/cpuinfo
model name : Intel(R) Atom(TM) CPU 230 @ 1.60GHz

Atom-BoardDas ist ein brandneues Intel D945GCLF Board, darin stecken 2GB RAM und ein PICO-PSU 120 Spannungswandler. Gekauft habe ich das als Ersatz für mein Epia, das ist vor einer Weile durchgebrannt. Auf dem Ding wird also wieder ein VDR laufen, und ein Debian.

Den alten Kernel konnte ich natürlich nicht benutzen. Abgesehen davon dass der für die C3-CPU von VIA gebaut war, war da auch der falsche Netztreiber drin. Und booten soll das Ding wieder per PXE, also ohne Festplatte. Anderen Treiber reincompilieren hat nicht gereicht um den alten 2.6.18 zum Netzboot zu bewegen. Mit einem frischen 2.6.25.7 sieht jetzt alles besser aus. Mal sehen wie es weiter geht…

Kategorie: IT, Sonstiges  | Tags: , , ,  | 2 Kommentare
Mittwoch, 18. Juni 2008

Ich bin auf ein merkwürdiges Phänomen in C gestoßen, vielleicht kann mir das jemand erklären. Extrem eingedampft sieht das Problem so aus:

int main(int argc, char* arg[]) {
    int i = 0;
    switch (i) {
        case 0:
            int j = 7;
            break;
    }
}

Der Compiler (aufgerufen mit ‘gcc test.c’) sagt dazu “t.c:5: error: expected expression before ‘int’“. Mit geschweiften Klammern funktioniert der case-Block dagegen prima:

case 0: {
    int j = 7;
    break;
}

Zu meinem grössten Erstaunen klappt auch folgender Block:

case 0:
    i = 3;
    int j = 7;
    break;

Es geht halt nur nicht wenn direkt nach dem case eine Variablendeklaration kommt.

Wenn man schon innerhalb eines case eine Variable deklarieren kann… warum dann nicht ganz am Anfang? Ich meine: ich habe ja Lösungen für das Problem. Mir fehlt halt nur das ‘Problembewusstsein’. Kann mir das jemand vermitteln?

Kategorie: IT, Mikrocontroller, Software  | Tags: , ,  | 5 Kommentare