Monday, 22. June 2009
Er hat dafür gestimmt.
Ich hab ihm mal eine Mail geschrieben, was ich davon halte. Mal sehen, ob er auch mit Textbausteinen wirft (siehe auch hier) und sich mit hanebüchenen Unsinn rausredet. Ich halte diesen krassen Ton ("lobotomierte Volltrottel") im Übrigen für völlig überflüssig und der Sach nicht dienlich. Damit disqualifiziert man sich nämlich für jegliche sachliche Kritik.
Ach, war ja klar, sobald die Infrarstruktur steht, werden Begehrlichkeiten geweckt. Diesmal Thomas Strobl (CDU) möchte Killerspiele wegzensieren.
Saturday, 20. June 2009
Gratulation
Ein Bild sagt ja mehr als tausend Worte, daher hier in Bildform, warum das Gesetz schlecht ist:

Links:
Hintergrundtext: Kinderpornographie Internet Sperren
Fragen und Antworten zum Thema (AK Zensur)
Linkliste von Netzpolitik zum Thema (auch die anderen Artikel zum Thema sind lesenswert).
Monday, 15. June 2009
Auf dem Sachsen-Anhalt Tag
Dort habe ich die folgende Entdeckung gemacht und konnte endlich mal wieder mit meiner Kamera ein paar schöne Fotos schießen. Es waren nämlich eine paar Leute einer Falknerei da, und die hatten ihre Vögel dabei und man konnte die Tiere sogar streicheln. Dabei gelangen mir u.a. diese Schnappschüße:
Der Rest war auch schön (wenn auch das Gedränge nervte) und endlich mal was los
Update: Mehr Bilder von den Greifvögeln (der Falkner sagte es wären Falken, aber auf fotocommunity verbesserte man mich zu Habicht bzw. ein Bussard) hier
Thursday, 11. June 2009
Depeche Mode in Leipzig
Das Stadion voller Fans und ein rockender Dave Gahan, der zwar alt aussah aber immernoch Stimmung verbreiten kann machten diesen Abend zu einem der besten Abende seit langem. Schade, dass nach 2 Stunden alles wieder vorbei war. Ich könnte gleich wieder hin
Ach ich sehe gerade, es gibt noch Zusatzkonzerte.
Ich brauch jetzt das neue Album...
Links:
Video auf Spiegel Online,die FAZ,
Konzertberichte auf DepecheMode.de
Wednesday, 27. May 2009
SSHFS und globaler Namespace
Ich springe bei der Arbeit auf einer Menge von Kisten rum und bearbeite dabei eine Menge Files - nichts besonderes wenn man Systeme administriert bzw. Software entwickelt. In letzter Zeit nutze ich vermehrt SSHFS. Das ist sehr praktisch, da man so die Tools (z.B. svn, vim, ctags, ...) die man auf seiner Workstation konfiguriert und installiert hat nutzen kann sofern man netzwerktechnisch in der Lage ist, eine SSH-Verbindung aufzubauen.
Prinzipiell geht das so:
aptitude install sshfs mkdir /home/mschoechlin/mnt/256bit.org/ sshfs -o idmap=user mschoechlin@256bit.org:/ /home/mschoechlin/mnt/256bit.org/ cat /home/mschoechlin/mnt/256bit.org/etc/fstab
Mit dem Tool "afuse" geht das noch bequemer - nebenbei bekommt man einen globalen Filesystemnamespace:
aptitude install afuse sshfs mkdir ~/sshfs afuse -o mount_template="sshfs -o idmap=user %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs/ cd ~/sshfs cat user@host/etc/fstab cat host/etc/fstab killall afuse
Sobald man also mit "cd" in das Verzeichnis "~/sshfs/<user>@<hostname>" wechselt springt der "afuse" Automounter an und mountet das System via "sshfs". Dabei wird die UserId, über welche man sich angemeldet hat, immer auf die lokale gemapped. Die Verwendung des SSH-Agent/SSH-Keys ist hier ganz nützlich - andernfalls poppt ein Passwortdialog auf.
Monday, 18. May 2009
Regelmäßige Lektüre
Hier meine regelmäßige Blog Lektüre:
(via Akregator RSS Feedreader - das spart Zeit)
- Pro-Linux
- Kerneltrap
- Twitter
- Command-line Fu < The best UNIX commands on the web
- symlink.ch: Wissen Vernetzt - deutsche News für die Welt
- Slashdot: News for nerds, stuff that matters KernelTrap
- heise open - 7-Tage-News
- freshmeat.net: Welcome to freshmeat.net
- Mainframe MainframeZone with Bob Thomas
- Die wunderbare Welt von Isotopp
- EDV - Ende der Vernunft Planet Netfilter
- Planet KDE Royal Pingdom Linus' blog
- Maedchenmannschaft
- Matthew Garrett's Journal
- Fefes Blog Wikileaks - Wikileaks
- Blogs | Mantissa Corporation
- Geek And Poke
- Welcome to Linux.com
(sporadisch via SLRN und Mutt)
- bacula-devel
- linux-btrfs
- ibmvm
- ixs_public_cccs.de
- linux-s390
- linux-390
- de.comp.lang.python
- comp.databases.ibm-db2
- comp.lang.python
- de.comm.internet.infrastruktur
Mit den richtigen Werkzeugen wird auch diese etwas längliche Liste beherrschbar - meist lese ich morgens in der ersten halben Stunde des Tages ![]()
Was lest ihr so ?
Friday, 8. May 2009
Eine kleine Einführung in sed, Teil 2
Wie ich im ersten Teil bereits beschrieben habe, arbeitet man bei sed meist mit Mustern, die bestimmte Teile definieren, an denen Änderungen vorgenommen werden sollen. Diese Muster werden typischerweise durch reguläre Ausdrücke definiert. GNU Sed unterstützt dabei einfache reguläre Ausdrücke (basic regular expressions) bzw. mit dem Schalter -r erweiterte reguläre Ausdrücke (extended regular expressions, z.B. was egrep benutzt). Die wichtigsten Regeln mal kurz erklärt:
^ Anfang der Zeile
$ Ende der Zeile
. irgendein Zeichen
[...] irgendein Zeichen welches innerhalb der eckigen Klammer angegeben ist.
[a-z] passt auf alle Kleinbuchstaben des Alphabets, [abc] entweder auf
a oder auf b oder auf c
[^...] irgendein Zeichen welches nicht innerhalb der eckigen Klammer angegeben
ist. [^a-z] passt auf alle Zeichen, die keine Kleinbuchstaben sind.
\(\) Klammerung (bei erweiterten regulären Ausdrücken ohne Backslash, also ().
Damit kann man sich Ausdrücke merken und später auf sie referenzieren
mit den Variablen \1 bis \10 D.h. man kann auf maximal 10 verschiedene
Zeichenketten referenzieren, mehr geht nicht. Dabei zählt immer die
Reihenfolge der öffnenden Klammer.
(\(a\)b\1 passt auf "aba" aber nicht auf "abba")
* Ein sogenannter Quantifier. Der vorherige Ausdruck kann 0 bis beliebig
oft auftreten, dabei wird ein längerer passender Ausdruck bevorzugt
(sogenannte Greediness, "Gier").
a* passt also auf "", a, aa, aaa, und so weiter, bei einer Zeichenkette
von baah, wird es aber immer auf aa passen.
\? Der vorherige Ausdruck passt genau 0 der 1 Mal (erweiterte reguläre
Ausdrücke: ?)
\+ passt auf den vorherigen Ausdruck 1 mal oder mehr. Längere Treffer
werden dabei bevorzugt. (Bei erweiterten regulären Ausdrücken +).
\{n\} passt auf den vorherigen Ausdruck genau n-Mal. (erweiterte reguläre
Ausdrücke: {n})
\{n,\} passt auf den vorherigen Ausdruck n oder mehrmals. (erweiterte reguläre
Ausdrücke: {n,})
\{n,m\} passt auf den vorherigen Ausdruck n oder m Mal (m>n). Längere Treffer
werden bevorzugt. (erweiterte reguläre Ausdrücke: {n,m})
\{,m\} passt auf den vorherigen Ausdruck maximal m Mal. Längere Treffer werden
bevorzugt. (erweiterte reguläre Ausdrücke: {,m}).
\| Entweder der vorherige Ausdruck oder der nachfolgende Ausdruck.
(bei erweiterten regulären Ausdrücken |). a\|b passt auf a oder auf b.
\n passt auf einen Zeilenumbruch¹ (siehe auch Anmerkung).
\$ passt auf ein $-Zeichen (denn $ steht ja für das Ende der Zeile).
So kann man mit dem Backslash nachstehende Zeichen maskieren. \* passt
auf einen *, und so weiter...
Das ist soweit das Wichtigste zu den regulären Ausdrücken, die von Sed unterstüzt werden. Die Syntax ist nicht so schwer, man muß sich nur merken, welche der vielen Dialekte der regulären Ausdrücke sed beherrscht. Des weiteren unterstüzt sed Posix Character Classes, d.h. das Muster [[:lower:]] passt auf alle Kleinbuchstaben und [[:upper:]] auf alle Großbuchstaben. Außerdem beherrscht sed noch Patterns, die mit einem Backslash anfangen. '\w' passt zum Beispiel auf ein "Word"-Character, als Character-Klasse ausgedrückt: [A-Za-z0-9_], '\W' passt auf ein Non-Word-Character und somit der Umdrehung von '\w' (also [^a-zA-Z0-9_].). Weitere \-Muster werden unterstüzt, ich verweise dafür mal auf das Manual bzw. die Info-Seiten.
¹Des weiteren sollte man beachten, dass sed seinen Input zeilenorientiert liest. D.h. normalerweise wird ein Pattern mit einem '\n' für einen Zeilenumbruch nicht passen. Man kann darum arbeiten, aber man sollte das im Hinterkopf behalten, wenn man '\n' benutzt.
So fortgeschrittene Sachen wie "look-ahead", "look-behind", non-greedy Matches oder non-capturing Groups der Perl-kompatiblen regulären Ausdrücke beherrscht sed leider nicht. (Eine gute Übersicht über die vorhandenen Möglichkeiten gibt die Wikipedia.)
Diese Ausdrücke definieren nun, wo etwas gemacht wird. Wenn man die Zeilennummer weiß, kann man aber auch diese benutzen. Zusätzlich erlaubt es GNU Sed noch Schrittfolgen zu definieren. Also zum Beispiel von Zeile 1 ausgehend, jede zweite (also 1,3,5,7...). 1~2 passt genau auf dieses Muster, während 0~2 jede gerade Zeile ausgibt. Verallgemeinert gesagt x~y, wobei x die Startzeile angibt und y die Schrittfolge. $ als Zeilennummer passt dagegen immer auf die letzte Zeile.
Nun haben wir ganz kurz die Adressmöglichkeiten besprochen. Nun möchte man normalerweise auch was machen. Dafür versteht sed sogenannte Kommandos. Diese Kommandos verstehen normalerweise alle 2-Adressen (nämlich eine Start- und eine Ende-Adresse), eine Adresse
Nun haben wir ganz kurz die Adressmöglichkeiten besprochen. Nun möchte man normalerweise auch was machen. Dafür versteht sed sogenannte Kommandos. Diese Kommandos verstehen entweder keine Adressen (z.B. Sprungangaben und Kommentare), Eine oder keine Adressangaben oder 2 Adressen (nämlich Start- und Ende-Adresse).
Die folgenden Kommandos kennt dabei Gnu Sed:
'#' Kennzeichnet einen Kommentar
's/x/y/' ersetze x durch y
':' definiert eine Sprungmarke
'=' Gib die Zeilennummer aus.
'a\
Text' Hängt "Text" als neue Zeile an
'i\
Text' Fügt "Text" in die aktuelle Zeile ein
'c\
Text' Ersetze die aktuelle Zeile durch "Text"
q Beende
r foobar hängt den Inhalt der Datei foobar hinter die aktuelle Zeile ein.
R foobar Fügt eine Zeile der Datei foobar hinter die aktuelle Zeile ein.
b foobar springe zur Sprungmarke foobar
'p' Print (ausgeben des Treffers)
t foobar springe zur Sprungmarke foobar, wenn vorher das letzte s-Kommando
erfolgreich war
t foobar springe zur Sprungmarke foobar, wenn vorher das letzte s-Kommando
nicht erfolgreich war
d lösche aktuell eingelesene Zeile und fang von vorne an
n lese nächste Zeile ein
N lese nächste Zeile ein und hänge an die aktuelle Zeile an.
w foobar Schreibe aktuellen Inhalt in Datei foobar
W foobar Schreibe nur erste Zeile des aktuellen Inputs in Datei (später mehr dazu).
'y/a/b/' Ersetze a durch b (funktioniert so ähnlich wie tr).
Mit y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ werden alle
Kleinbuchstaben durch die Großbuchstaben ersetzt.
! Führe nachfolgendes Kommando für alle Zeilen außer der aktuellen aus.
(Negation)
Normalerweise liest Sed den Input (bis zum Zeilenende \n) in den sogenannten "Pattern Space" und führt die Kommandos im Pattern Space aus und gibt anschließend die Änderungen aus. Daneben gibt es noch einen extra Puffer, den sogenannten Hold Space. In ihm kann man Daten zwischenspeichern und später wieder verwenden. Dafür gibt es die folgenden Kommandos.
D Lösche bis zum ersten Zeilenumbruch im Pattern Space und fang von vorne
an
x Tausche die Inhalte des Pattern Spaces und Hold Spaces aus.
h Kopiere Pattern Space in den Hold Space Puffer
H Hänge Pattern Space an den Hold Space Puffer an
g Kopiere Hold Space Puffer in den Pattern Space
g Hänge Hold Space Puffer an den Pattern Space an
Der Aufbau eines Kommandos ist dabei folgender:
sed -n '3p' gibt Zeile 3 und nur Zeile 3 aus. sed -n '3,5p' gibt alles von Zeile 3 bis 5 aus (inklusive). (Normalerweise wird bei Sed der Input immer auch ausgegeben, mit -n unterdrückt man das und nur wenn man es explizit verlangt (Kommando p) wird etwas ausgegeben).
Das einfachste Kommando ist das '#' Allein für sich macht das gar nichts und gibt einfach alles aus:
sed '#' foobar
Der Fuchs ist rot und rot sind auch Äpfel.
Das gleiche erreicht man auch mit dem "Kommando" ; welches eigentlich verschiedene Kommandos trennt. In diesem Fall führt es ein "Null" Kommando aus und gibt daher alles aus, was es einliest:
sed ';' foobar
Der Fuchs ist rot und rot sind auch Äpfel.
Das verbreiteste Kommando ist sicherlich das s-Kommando. Damit kann man nach einem Muster suchen und dieses durch ein anderes Ersetzen.
Zum Beispiel ersetzt sed 's/rot/grün/' foobar die Zeichenfolge "rot" durch "grün" in der Datei foobar.
sed 's/rot/grün/' foobar
Der Fuchs ist grün und rot sind auch Äpfel.
Naja, aber eigentlich ist der Fuchs ja rot und Äpfel sind grün. Daher kann man dem s-Kommando noch zusätzliche Flags mitgeben. Das bekannteste Flag ist das 'g'. Damit werden alle gefundenen Muster ersetzt:
sed 's/rot/grün/g' foobar
Der Fuchs ist grün und grün sind auch Äpfel.
Man kann aber auch nur bestimmte Muster ersetzen, zum Beispiel nur das 2. Muster:
sed 's/rot/grün/2' foobar
Der Fuchs ist rot und grün sind auch Äpfel.
Wenn kein Flag angegeben wird, wird impliziert die 1 angenommen (also das erste gefundene Muster wird ersetzt).
Ein weiteres Flag ist das i. Hierbei wird das Muster case-insensitiv gesucht, d.h. Klein-/Großbuchstaben spielen keine Rolle. Es ist auch möglich mehrere Flags zu kombinieren:
sed 's/ROT/blau/ig' foobar
Der Fuchs ist blau und blau sind auch Äpfel.
Manchmal möchte man aber auch Pfadangaben ersetzen. Blöd nur, dass der Slash / normalerweise das Muster vom Ersetzungstext trennt. Möchte man nun z.B.
/usr/local/share/foobar durch /usr/share/foobar ersetzen, müßte man sowas nutzen:
sed 's/\/usr\/local\/share\/foobar/\/usr\/share\/foobar/g script
Daher erlaubt es sed, irgendeinen anderen Delimiter zu nutzen, z.B. die Pipe |:
sed 's|/usr/local/share/foobar|/usr/share/foobar|g script
oder den Unterstrich _
sed 's_/usr/local/share/foobar_/usr/share/foobar_g script
oder irgend ein anderes Zeichen, was nicht im Muster vorkommt.
Manchmal möchte man auch das gefundene Pattern im Ersetzungsteil wieder verwenden. Wenn man zum Beispiel eine Anweisung in einer Konfigurationsdatei auskommentieren möchte, die mit "foobar" anfängt kann man das so machen:
sed 's/^\(foobar\)/#\1/' config
#foobar wichtig!
Oder man benutzt einfach den Replacement Character &, der für das Muster steht, das gefunden wurde:
sed 's/^\(foobar\)/#&/' config
#foobar wichtig!
Vereinfachen kann man das noch so:
sed '/^foobar/s/^/#/' config
#foobar wichtig!
Hier benutzen wir den regulären Ausdruck /^foobar/ als Adresse und nur Zeilen, die auf dieses Muster passen, werden ersetzt. Vereinfacht ersetzen wir das Zeichen '^' (das für den Zeilenanfang steht) durch ein '#' und fügen somit eine Raute am Anfang der Zeile ein.
Man kann noch mehr mit regulären Ausdrücken machen. Zum Beispiel alle Großbuchstaben durch ihre Kleinbuchstaben ersetzen:
ls /home/ | sed 's/[[:lower:]]/\U&/g'
CB
CHRISBRA
FTP
Sed sucht nach der Posix-Klasse von Kleinbuchstaben und ersetzt diese durch die entsprechenden Großbuchstaben. Das \U steht für Uppercase und wandelt alle Zeichen in die passenden Großbuchstaben um. Man beachte die Nutzung von & um das gefundene Muster wiederzuverwenden. Ohne das Flag 'g' wäre übrigens nur der erste Buchstabe groß geschrieben worden. Das gleiche kann man übrigens mit dem Kommando y/ erreichen:
ls /home/ | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
CB
CHRISBRA
FTP
Das ist etwas umständlich, denn das y-Kommando scheint keine Characterklassen anzunehmen, sondern man muß explizit alle Zeichen hinschreiben.
Das war das Wichtigste zum Substitute Kommando. Der nächste Teil kommt bestimmt
Thursday, 7. May 2009
Regexes bei Informatica
Monday, 4. May 2009
Die ultimative Lösung für die Internetzensierer
Monday, 27. April 2009
Fetchmail SSL-Fingerprint erneuern
13589:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:s3_clnt.c:951:
fetchmail: SSL connection failed.
fetchmail: socket error while fetching from ...@gmx.de@pop.gmx.net
fetchmail: Query status=2 (SOCKET)
Man muß dazu sagen, dass ich fetchmail mit der folgenden Konfiguration aufrufe:
user "user@gmx.de" password "passwort" is "user" ssl
sslproto tls1 sslcertpath /etc/ssl/certs sslfingerprint
"BA:03:AC:50:A9:A0:C7:AF:1E:79:3A:B7:C0:E7:19:5E" sslcertck keep
(Nein, das Passwort ist nicht passwort und die E-Mail Adresse ist auch nicht user@gmx.de
In dieser Konfiguration überprüft fetchmail den angegebenen SSL Fingerprint (Option sslfingerprint) gegen den Fingerprint des Zertifikats, dass der Server angibt und wenn der Fingerprint nicht stimmt, dann gibt es eben obige Fehlermeldung. Zusätzlich wird mit der Option sslcertck überprüft, ob das Zertifikat (direkt oder indirekt) vertrauenswürdig ist. GMX verwendet zum Beispiel ein Zertifikat das von Thawte ausgestellt ist. Wenn man das Paket ca-certificates installiert, bekommt man unter anderem das Thawte Root-Zertifikat installiert und das System betrachtet diese Zertifikate als vertrauenswürdig. Der generische, manuelle Weg diese Zertifikate zu erhalten ist für Thawte hier beschrieben.
Zurück zu der obigen Fehlermeldung. Die sieht verdächtig nach einem erneuerten Zertifikat aus. Glücklicherweise kann man das recht einfach prüfen und damit ich mir die passenden Optionen nicht jedesmal aus der Manpage raussuchen muß, hier die Schrittfolge in Kurzform:
notBefore=Apr 27 08:51:09 2009 GMT
notAfter=May 10 07:06:14 2010 GMT
MD5 Fingerprint=92:C8:49:13:3A:55:D6:57:37:5F:0F:12:83:39:CE:06
In Langform: Zunächst bauen wir uns eine verschlüsselte Verbindung zu pop.gmx.net auf. Da sieht man z.B. welches Zertifikat der Server dem Client präsentiert. Dieses Zertifikat kann man sich dann auch in Textform ausgeben lassen (openssl x509 -text
fetchmail: 6.3.9-rc2 fragt pop.gmx.net ab (Protokoll POP3) um Mo 27 Apr 2009 21:43:53 CEST: Abfrage gestartet
Versuche, mit 213.165.64.22/995 zu verbinden...verbunden.
fetchmail: Herausgeber-Organisation: Thawte Consulting cc
fetchmail: Herausgeber-CommonName: Thawte Premium Server CA
fetchmail: Server-CommonName: pop.gmx.net
fetchmail: pop.gmx.net-Schlüssel-Fingerabdruck: 92:C8:49:13:3A:55:D6:57:37:5F:0F:12:83:39:CE:06
fetchmail: pop.gmx.net-Fingerabdrücke stimmen überein.
fetchmail: POP3< +OK GMX POP3 StreamProxy ready
fetchmail: POP3> CAPA
fetchmail: POP3< +OK
fetchmail: POP3< STLS
....
Ach ja, und spätestens am 10. Mai 2010 wird es wieder ein neues Zertifikat geben.
Debugging mit Informatica Powercenter 8
In den letzten 2 Wochen habe ich 2 komplexere Probleme in 2 Flows untersucht. Das Killerfeature was dabei immer genannt wird ist der eingebaute Debugger. Damit kann man einem Datensatz zusehen, wie die Transformationslogik angewandt wird. So richtig schön grafisch und mit Breakpoints. Zumindest theoretisch. Praktischerweise funktioniert das Teil nämlich nicht verläßlich, zumindest, wenn in der Mappinglogik ein Outer-Join enthalten ist. Dann beendet sich der Debugger nämlich einfach ohne ersichtlichen Grund. Wenn man Glück hat, kann man wenigstens noch durch einen Teil der Logik durchsteppen. Was hab ich geflucht, aufgrund dieses Bugs, der schon mindestens seit Version 7 drin ist.
Man kann in diesem Fall also nicht mit dem Debugger debuggen. Was macht man? Richtig, wie früher in der guten alten Zeit(™) das Loglevel hochdrehen auf "Verbose Data" (damit loggt Informatica praktisch für jede Transformation den eingehenden und ausgehenden Datensatz) und dann Logfiles lesen. Lustigerweise hat Informatica mit Version 8 auf eine Art binäres Logfile umgestellt. Man kann diese Dinger nicht mehr anständig mit einem stinknormalen Editor oder Pager lesen, sondern muß den eingebauten Logfile Viewer nutzen. Der ist schon umständlich genug zu nutzen, nur leider ist das Teil auch nicht mal richtig stabil. Während ich also das Loglevel auf Verbose Data hochdrehte und mit ein paar Testdatensatz den ganzen Flow nochmal laufen lies, stellte ich fest, dass das Logfile auf enorme 2 GB angewachsen war. Und das mit nur einer Handvoll Testdatensätze. Aber wartet, es kommt noch besser: Als ich versuchte, das Logfile mit dem eingebauten Logfileviewer zu öffen, ist mit der Viewer gnadenlos abgestürzt. Also Loglevel wieder runtergedreht auf Normal und nur bei vereinzelten Transformationen "Verbose Data" angeschaltet. Danach war das Logfile immer noch mehrere Hundert MB groß, doch zumindest konnte man es betrachten.
Ich glaube jedes Problem hat ca: 1 Arbeitstag gekostet, bis ich den Fehler gefunden hatte. Da gibt es noch Verbesserungspotential.
Saturday, 25. April 2009
Cognos
Das ist schon eine interessante Web 2.0 Anwendung. Aber was mich am meisten erstaunt: es gibt soviele Möglichkeiten irgendwo einen Parameter zu setzen, dass man oft nur durch probieren zum gewünschten Ergebnis kommt. Und selbst bei vermeintlich leichten Berichten ist man oft viel länger mit dem Erstellen des Berichts beschäftigt, als erwartet.
Und man kann soviel Zeit mit Kleinigkeiten verschwenden, man glaubt es kaum.
Erstaunlicherweise ist das Migrations- und Deploymentkonzept anscheinend nicht sonderlich ausgereift. Für eine professionelle Web Anwendung, die nicht erst seit gestern dabei ist, schon seltsam. Ich bin mal gespannt, wie sich das Produkt durch die Übernahme von IBM weiter entwickelt.
Friday, 24. April 2009
Luftballons in der Oberleitung
Der Zug schleicht mal wieder durch Frankfurt. Man ist solches ja durchaus mal gewohnt, aber diesmal gab es auch die passende Ansage dazu. Da knattert die Ansage los:
"Sehr geehrte Fahrgäste, wenn Sie jetzt auf der rechten Seite aus dem Fenster schauen, sehen Sie auch gleich ein Fahrzeug der Bahn. Die Kollegen dort sind mit der Behebung einer Störung beschäftigt. Grund der Störung sind Luftballons in der Oberleitung. Sie haben richtig gehört, Luftballons in der Oberleitung sind der Grund, dass wir so langsam fahren müssen, denn einerseits möchten wir nicht die Kollegen gefährden und andererseits könnten wir bei höheren Geschwindigkeiten einen Kurzschluß auslösen.
Für die Unannehmlichkeiten bitte ich um Entschuldigung."
Manchmal finde ich das Bahnunterhaltungsprogramm echt angenehm. Fehlte nur noch, dass uns der Sprecher die Sehenswürdigkeiten von Frankfurt erklärt.
Restore eines Backups
Diese Woche hatte ich sozusagen den Ernstfall. Ich wollte meine Daten auf eine neue Maschine syncen. Nachdem ich mittels Truecrypt die Partition entschlüsselt hatte brach das Kopieren immer mit einem "Acces Denied" Fehler ab.
Zunächst dachte, das wären Anzeichen für den baldigen bevorstehenden Tod meiner Festplatte. Leicht beunruhigt ließ ich einen Dateisystemcheck laufen, der aber keine Ergebnisse brachte. Testweise an mein altes Arbeitsgerät angeschlossen und siehe da, alles funktioniert wie zuvor. Das machte mich stutzig und nach kurzem Nachdenken kam ich auch auf die Lösung: Das Backup erfolgt aus mehreren Gründen auf ein NTFS-Dateisystem (u.a. Unterstüzung für Dateien größer > 4 GB, nicht so starke Fragmentierung und eben auch Zugriffsberechtigungen). Und da haben wir auch schon das Problem: die ACLs, denn der Inhaber/Owner der Dateien war auf dem neuen System ein anderer (obwohl der Username jedesmal der selbe war).
Leider brachte Google zum Ändern nur die Hinweise: rechter Mausklick auf Datei, Menüpunkt Properties und dann im Reiter Security kann man die Berechtigungen anpassen. Nur, auf dem neuen System gab es den Menüpunkt nicht. Den gibt es nämlich nur, wenn man "Use Simple File Sharing (Recommended)" nicht angehakt hat (Explorer, Menü Tools->Folder Options, Reiter View, letzter Punkt). Nach dem ich den Haken entfernt hatte, gab es auch den Reiter Security in den Eigenschaften einer Datei.
Also in die Eigenschaften der Ordner gegangen, Reiter Security, den Advanced Knopf ausgewählt und nun einmal im Reiter Permissions dem neuen Benutzer explizit alle Rechte geben und zusätzlich im Reiter den Owner auf den neuen alten Nutzer gesetzt und nicht vergessen das Häkchen "Replace permission entries on all child objects." bei Permissions anhaken und im Reiter Owner das Häkchen "Replace Owner on subcontainers and objects" anhaken. Damit die Änderungen auch in allen Unterobjekten übernommen werden.
Danach ok anklicken und Windows rattert über die komplette Backup Platte und ändert alles wie gewünscht.
Wednesday, 22. April 2009
IBM/Mantissa bringt x86 Paravirtualisierung für zSeries
Ende Februar haben sich viele Hosties die Augen gerieben als sie z.B. folgenden Blogeintrag gelesen haben:
http://mainframe.typepad.com/blog/2009/02/late-february-2009-mainframe-potpourri.html
Punkt 4 beschreibt dabei folgendes:
Mantissa Corporation will show how you can run unmodified X86
software on System z under z/VM, including X86-based Linux and
Microsoft Windows operating systems, middleware, and applications.
(Yes, you read that correctly. Ain't virtualization nifty? Maybe IBM
should call mainframes "System u," for universal.) Mark your calendars
and ask lots of good questions at SHARE: Mantissa's unveiling starts at 8:00 a.m. Texas time on March 6.
Nun ist die SHARE um - und die Vortragsslides lassen weitere Details erahnen: http://ew.share.org/proceedingmod/abstract.cfm?abstract_id=19229 (PDF)
UPDATE: Hier gibt es ein Blog zu den aktuellen Entwicklungen von z/Vos
UPDATE2: Ein Video mit einer z/Vos Demo gibt es auch
