Lange Übergangszeiten bei Unicode und 64bit

Probleme mit falschen Umlauten oder Sonderzeichen sind auf der Tagesordnung. Prinzipiell müsste das nicht sein, aber fehlerhafte Programmierung und fehlende Erkennungsmerkmale führen zu hohen Fehlerquoten.

Hintergrund ist dass auf allen gängigen UNIX Systemen UTF-8 als Standardkodierung sowohl für den Inhalt von Klartextdateien als auch für die Kodierung von Dateinamen (siehe auch Form C/D Unterschied) verwendet wird.

Bei Windows wird in unseren Breitengraden standardmässig Latin-1 verwendet (exakt: Windows CP-1252). Dies führt zu Problemen beim Dateiautausch, wenn kein Transformationsmechnismus (bspw. bei Mac OS X wenn Windows Shares via SMB kontaktiert werden) eine Anpassung vornimmt.

Angesichts zigfacher Austauschmöglichkeit (email,USB-Stick,WebDAV,scp..) wird es meines Erachtens noch bis zu 10 Jahre dauern bis dieses Problem nicht mehr auftritt.

Die zweite Sache die m.E. noch bis zu 5 Jahre problematisch sein kann sind 64bit Plattformen. Unter Linux Standard, da der Distributionsinstaller auf allen x64 Plattformen vorschlägt die 64bit Variante zu installieren. Das hat aber zur Folge, dass 3rd party Desktop Programme die nur als 32bit Version oftmals nicht installierbar sind, da die 32bit Bibliotheken fehlen. Auch beim selber kompilieren mit automake&friends gibt es hin und wieder Probleme, wenn man an zig Stellen redundant einen 32bit Flag setzen muss.

Unter Mac OS X wird das Problem mit Fat-binaries erschlagen die einfach immer alles mitbringen. Application+Libraries in 32/64bit ev. noch als Universal Binary.

Einfach für den User aber mittlerweile extrem Resourcenintensiv. Auf einem Apple Laptop mit ca. 100GB HD kann man davon ausgehen, dass Ruck-Zuck 50GB nur für die installieren Programme und das Betriebssystem draufgeht.

Der einfachste Ansatz zukünftig wäre alles nur noch 64bit – dass dauert aber noch und bringt derzeit auch noch Nachteile mit sich (64bit Pointer Overhead).

GarageBand 08

Mit der neuen Version iLife08, die jedem Mac beiliegt, ist auch GarageBand auf Version 08 (von 4) erhöht worden. Im Gegensatz zum Update von Version 2 auf 3 gibt es diesmal Neuheiten für Musiker die sehr nützlich sind. Sie werden auf einer iLife Apple Website kurz dargestellt.

Ich habe 4 davon getestet:

  • Multitracking

Funktioniert ganz einfach – einfach die Aufnahmezeit mit dem gelben Loop-Balken einstellen und auf Record gehen. Nach jedem Durchlauf fängt er wieder von vorne an, ohne den letzten zu löschen. Wenn man die Aufnahme beendet kann man aus einen der Varianten wählen.

Genial, aber mit kleinen Kinderkrankheiten. Falls die Aufnahmespur (geloopter Bereich) nur ein wenig in einen nachfolgenden Bereich ragt, auch wenn der an dieser Stelle noch keine Audio/MIDI Informationen hat, wieder dieser nach einem dubiosen Algorithmus verlegt. Falls man diese Verlegung korrigiert, stürzt GarageBand hin- und wieder ab. Also lieber gleich sauber arbeiten

  • Automatisierte Spuren
GarageBand Automation Bisher konnte man für jede Spur nur die Lautstärke und das Panorama automatisieren (Aufklappknopf Spurinformationen) – jetzt kann man alles automatisieren was der Soundgenerator hergibt.Im Bildschirmfoto werden bspw. die Parameter des Hybrid Basic Generators von GarageBand zur Automatisierung angeboten.Im Falle eines Native Instruments Synthesizers werden bis zu 1000 Controller ID’s angeboten, die im Synthesizer Plugin jeweils einem Reglerelement zugewiesen sind.
Das ganze funktioniert übrigens tadellos.
  • Arrangements

Auch ein nettes Feature. Man kann in einem zusätzlichen oberen Balkenbereich, sog. Arrangements definieren, bspw „Intro“ oder „Refrain“. Diese Zonen kann man dann mit üblichen Methoden zur Bearbeitung verwenden. Beim Kopieren bspw. werden alle Spuren die sich in dieser Zone (Arrangement) befinden mitkopiert.

  • Visual EQ / Frequenzanalyse

GarageBand Visual EQ

Auch dieses Feature bringt GarageBand in höhere Regionen. Der Visual EQ steht jedem Instrument zur Verfügung und kann dort eingestellt werden, wo man auch sonst üblicherweise die AudioUnits einstellt.

In diesem Equalizer kann man in vier Frequenzregionen die Amplituenveränderung einstellen. Das ganze geht elegant mit der Maus.

Der Clou ist die Just-In-Time Veränderung der Frequenzanteile der gerade ausgewählten Spur (hellgraue Linie).

Damit kann man doch recht schnell einen ausgewogenen Frequenzverlauf oder eben auch nicht – wenn anders gewollt – hinbekommen.

Bei den AudioUnits sind mir 2 Änderungen aufgefallen, auch wenn diese eher von Mac OS X anstatt von GarageBand selber bereitgestellt werden.

Beim AUMatrix Reverb ist im unteren Bereiche ein Frequenzfilter hinzugekommen.

Audio Unit: Matrix Reverb

Daneben ist AUPitch zur Veränderung der Tonhöhe dazugekommen.

Audio Unit: Pitch

Alles in allem ein sehr gelungenes Update. Von minimalen Kinderkrankheiten und dem üblichen Übersetzungschaos abgesehen ist es ein größerer Schritt nach vorne.

umask 0002

Ich bin ein großer Fan dieser umask, den Sie ermöglicht in Zusammenarbeit mit dem sgid-bit eine fast beliebige Rechtevergabe im POSIX-Netzwerk ohne ACL’s einsetzen zu müssen.

Egal ob man private Gruppen oder sonstige vertrauenswürdige Gruppen erschafft – ein Datenaustausch auf einer lokalen Workstation oder im NFS-Netzwerk ist zu 95% konfigurierbar.

Während man auf fast allen UNIX Plattformen eine globale umask 0002 in /etc/profile einträgt, muss man auf Mac OS X eine XML-basierende Property Datei ändern, und zwar mit

defaults write /Library/Preferences/.GlobalPreferences NSUmask 2

Hinweise:

  • Bei allen nicht-root Usern muß natürlich sudo vorangestellt werden
  • Der letzte Pfadteil (.GlobalPreferences) wird ohne den Suffix .plist angegeben.
  • Nach NSUmask kommt der typische Oktalwerk des Rechtesystems

BIND 9 und dynamische Zonen

Es könnte so einfach sein. Ein DNS Server mit statischen Einträgen, die einfach in den Zonendateien die im Klartextformat vorliegen, händisch aktualisiert werden.

Falls man aber möchte das DHCP oder Windows ADS Server Einträge des DNS dynamisch aktualisieren können, wird die Sache komplizierter.

Ausgehend vom letzten Start des named legt BIND journaling files an, die wie die Zonendatei heissen allerdings mit der Extension .jnl . Von Zeit zu Zeit übernimmt der daemon die journalings in die eigentliche Zonendatei die jetzt aber nicht mehr so einfach händisch aktualisiert werden darf.

Folgende Vorgehensweise unter Benutzung des rndc Kommandotools (wird mit BIND ausgeliefert) wird vorgeschlagen um die Zoneneinträge konsistent zu haten

rndc freeze beispielzone.de

..schaltet den dynamischen Mechanismus ab, übernimmt die journalings in das Zonenfile und löscht die journaling-Datei

Danach kann man im Zonenfile Einträge vornehmen.

rndc reload beispielzone.de

Veranlasst den daemon die Konfiguration und v.a. die Zonenfiles neu zu laden. Dieser Befehl würde ohne den vorangegangenen freeze nicht funktionieren, er würde die Fehlermeldung „rndc ‚ reload‘ failed: dynamic zone“ auswerfen.

rndc thaw beispielzone.de

Schaltet den dynamischen Updatemechnismus wieder an.

Alternativ könnte man neue Einträge aber auch durch denselben Mechanismus hinzufügen, wie die externen Server die den DNS udpaten. Der Kommandobefehl

nsupdate

eröffnet einen interaktiven Eingabemodus mit dem man Einträge hinzufügen oder entfernen kann (siehe manpage nsupdate).

Solaris10 updatemanager

Die aktuelle Version des Sun Update Connection System Client 1.0.9 funktioniert derzeit nicht! Im Normalfall bleibt der Client einfach beim Installieren der Pachtes (smpatch update)

Abhilfe schafft ein Deinstallieren des Patches 121118-12. Dieser Patch des Update Systems verträgt sich mit gewissen Java Versionen nicht.

Genauers dazu erfährt man unter:

http://forum.java.sun.com/thread.jspa?messageID=9709078&tstart=0

Neben der sehr schlechten Performance des Tools, kommt nun leider auch noch Instabilitäten beim Update dazu, was die TCO bei Solaris erhöht und das eh komplexe System noch undurschaubarer macht. Hier muß sich seitens SUN etwas bewegen.

praxis tipps: ls

Auch ls ist ein alter Hut, dennoch die Zusammenfassung der gebräuchlichsten Parameter des GNU Kommandos

Parameter Langfassung Bedeutung
-l –format=long Langinformationen
-L –dereference Dereferenzierung des Links (ursprünglicher Inhalt)
-d –directory Zeigt den Directory Eintrag statt dessen Inhalt an
-S –sort-size Sortiert die Dateien nach ihrer Größe (größte zuerst)
-r –reverse reversieve Sortierung
-t –sort=time Sortiert Nach Datum (neueste zuerst)
-R –recursive steigt rekursiv in den Verzeichnisbaum ab
-u –sort=access Sortiert nach Zugriffszeit (nur im Zusammenhang mit -t)
-h –human-readable Größenangaben besser lesbar (automatisch in GB,MB,kB)
-o –no-color Schaltet die Farbdarstellung ab

praxis tipps: find

Obwohl das (GNU) find Kommando wirklich ein alter Hut ist, lohnt es sich zumindest für mich nochmal die wichtigsten Features zusammenzufassen:

-ctime n
findet Dateien die genau n-Tage alt sind. Sollen Dateien gefunden werden die jünger als n sind, muss dem n ein Minuszeichen vorangestellt werden. Ein vorangestelltes Pluszeichen findet dementsprechend Dateien die älter als n-Tage sind. An dieser Stelle kann ruhig nochmal erwähnt werden, dass ctime die Change Time und damit das primäre Datum einer Datei auf einem POSIX kompatiblen Rechner darstellt. Daneben gäbe es noch die atime (Access Time) und mtime (Modification Time) die eine Änderung des inode-Eintrages darstellt (…nein – eine Create Time gibt es tatsächlich unter POSIX nicht).
-perm BITS
Sucht nach Dateien die genau dem Oktalmuster BITS entsprechen, also bspw. „find -perm 0644“. Wenn man eine Auflistung von Dateien braucht die mindestens aber nicht nur ein bestimmte Rechtebits gesetzt haben stellt man ein Pluszeichen voran. Damit kann man recht einfach bspw. suid-Programme suchen: „find . -perm +4000“
-user USERNAME / -nouser USERNAME
Sucht Dateien die USERNAME gehören oder eben nicht (-nouser)
-group GROUPNAME / -nogroup GROUPNAME
Sucht Dateien deren Gruppenzugehörigkeit GROUPNAME ist oder eben nicht (-nogroup)
-maxdepth n
das GNU find Kommando sucht automatisch rekursiv nach unten den Verzeichnisbaum durch. Wenn man das nicht möchte (bspw. im Zusammenhang mit einem kombinierten cp-Befehl) begrenzt man die Verzeichnistiefe in der find sucht mit dem Parameter n
-iname NAME
sucht nach einem Namens(muster) und ignoriert Groß- und Kleinschreibung. Ansonsten analog -name

Darüber hinaus liegt die Stärke von find v.a. im Zusammenhang mit gekoppelten Kommandos durch den -exec Parameter.

find / -perm +4000 -exec chmod u-s {} ;

nimmt das suid-bit aus allen gefundenen suid-Programmen heraus ..was nicht unbedingt sinnvoll ist 😉

praxis tipps: top

Mit dem Universalwerkzeug für das Prozessmanagement top (table of processes) kann man diese nicht nur beobachten sondern auch beeinflussen. Unter anderem sind folgende Tasteneingaben ganz nützlich

k Signal senden
r renice eines Prozesses
u nur die Prozesses eines users anzeigen