Death Angel 2004-06-26 Bildergalerie

23. Juni 2022 · Konzerte · andreas · Kein Kommentar

Death Angel am 26. Juni 2004 beim Bang Your Head Festival in Balingen


Hörenswert #74: Nick Mason's Saucerful Of Secrets - Astronomy Domine

20. Juni 2022 · Hörenswert · andreas · Kein Kommentar

Während David Gilmour und Roger Waters bei ihren Shows neben dem eigenen Solomaterial hauptsächlich die Pink Floyd-Alben ab “The Dark Side Of The Moon” berücksichtigen, haben sich Nick Mason’s Saucerful Of Secrets (wie der Bandname bereits andeutet) den Alben davor verschrieben.

Lange Zeit konnte ich mit den Songs der der Syd Barrett-Ära nur bedingt etwas anfangen, mir hat erst das Konzert der SOS im September 2018 in Luxembourg den Zugang zu den alten Stücken eröffnet. Eine gigantische Zeitreise, die vor wenigen Tagen an gleicher Stelle wiederholt wurde.


Festplatte einer virutellen Linux-Maschine vergrößern

15. Juni 2022 · Betriebssysteme · andreas · Kein Kommentar

Wenn die Festplatte einer virtuellen Maschine volläuft, so kann im Gegensatz zu physikalischen Rechnern das Problem meist recht einfach behoben werden. Etwas spannender wird es, wenn die virtuelle Festplatte partitioniert ist und bei der Erweiterung eine andere Partition im Weg ist:

$ sudo fdisk -l /dev/sda Disk /dev/sda: 30,18 GiB, 32408698880 bytes, 63298240 sectors Disk model: VBOX HARDDISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf3f6188b Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 61296639 61294592 29,2G 83 Linux /dev/sda2 61298686 63297535 1998850 976M 5 Extended /dev/sda5 61298688 63297535 1998848 976M 82 Linux swap / Solaris

Das oben stehende Beispiel zeigt eine solche Situation: die eigentliche Daten- bzw. Betriebssystempartition “/dev/sda1” kann nicht einfach vergrößert werden, da die erweiterte Partition “/dev/sda2” mit der darin enthaltenen Swap-Partition “/dev/sda5” direkt anschließend auf dem Datenträger liegt.

Vollständigen Beitrag lesen


Hörenswert #73: Depeche Mode - Enjoy The Silence

13. Juni 2022 · Hörenswert · andreas · Kein Kommentar

Mit “Enjoy The Silence” haben Depeche Mode (damals noch zu viert) einen zeitlosen Klassiker geschaffen. Über die optische Umsetzung des Songs nach dem Motto “Ein Mann und sein Liegestuhl” könnte man sicherlich seitenlange philsosphische Abhandlungen schreiben.


Perl, Unicode und Umlaute in Dateinamen

09. Juni 2022 · Programmierung · andreas · Kein Kommentar

Das Projekt klingt einfach: eine Liste von Dateinamen aus einem Verzeichnis auslesen, in einer Datenbank speichern und zu einem späteren Zeitpunkt anhand der Liste in der Datenbank wieder öffnen. Leider konnte das Skript einige Dateien nicht mehr finden, obwohl diese im Verzeichnis weiterhin vorhanden waren.

Heruntergebrochen auf ein Beispielskript sieht das Szenario wie folgt aus:

test.pl
#!/usr/bin/perl use strict; use warnings; use utf8; use DBI; # remove database unlink("files.sqlite"); # create database from scratch my $dbh = DBI->connect("dbi:SQLite:dbname=files.sqlite", "", "", { sqlite_unicode => 1 }); $dbh->do("CREATE TABLE files (name TEXT);"); # the file to be processed my $filename = "Elternschreiben Änderungen der Regelungen zum Infektionsschutz.pdf"; # create the file in the current directory open(my $fh, ">$filename"); print $fh "TEXT"; close($fh); # read files in current directory opendir(my $dh, "."); while (my $file = readdir($dh)) { next if $file !~ /pdf$/; $file = $dbh->quote($file); $dbh->do("INSERT INTO files (name) VALUES ($file);"); } closedir($dh); # get number of files with name "filename" $filename = $dbh->quote($filename); my $sth = $dbh->prepare("SELECT COUNT(*) AS cnt FROM files WHERE name = $filename;"); $sth->execute; my $row = $sth->fetchrow_hashref; print "found $row->{cnt} file(s).\n"; $sth->finish; $dbh->disconnect();

Statt des erwarteten Ergebnisses “1” ist das Skript jedoch der Meinung, keine passende Datei eingelesen zu haben:

found 0 file(s).

Um Probleme mit der Datenbank auszuschließen, kann das Szenario im Dateisystem nachgebildet werden:

test.pl
#!/usr/bin/perl use strict; use warnings; use utf8; use DBI; # the file to be processed my $filename = "Elternschreiben Änderungen der Regelungen zum Infektionsschutz.pdf"; my $found = 0; # create the file in the current directory open(my $fh, ">$filename"); print $fh "TEXT"; close($fh); # read files in current directory opendir(my $dh, "."); while (my $file = readdir($dh)) { next if $file !~ /pdf$/; if ($file eq $filename) { $found++; } } closedir($dh); print "found $found file(s).\n";

Auch hier wird statt der erwarteten “1” eine “0” für die Menge der gefundenen Dateien ausgegeben.

found 0 file(s).

Einen ersten Hinweis auf die mögliche Ursache bringt die Ausgabe der zu vergleichenden Werte mittels “Data::Dumper”. Während für “$filename” der Wert

$VAR1 = "Elternschreiben \x{c4}nderungen der Regelungen zum Infektionsschutz.pdf";

ausgegeben wird, wird für “$file” der Wert

$VAR1 = 'Elternschreiben Änderungen der Regelungen zum Infektionsschutz.pdf';

ausgegeben, d.h. die Werte der beiden Variablen sind in der internen Repräsentation in Perl tatsächlich unterschiedlich. Mit den richtigen Anhaltspunkten führt eine Suche im Internet zum Stackoverflow-Beitrag “In what encoding does readdir return a filename?” und der dort verlinkten ausführlichen Erklärung.

Des Rätsels Lösung ist die Verwendung von “Encode::decode_utf8”

test.pl
#!/usr/bin/perl use strict; use warnings; use utf8; use DBI; use Encode; # the file to be processed my $filename = "Elternschreiben Änderungen der Regelungen zum Infektionsschutz.pdf"; my $found = 0; # create the file in the current directory open(my $fh, ">$filename"); print $fh "TEXT"; close($fh); # read files in current directory opendir(my $dh, "."); while (my $file = readdir($dh)) { next if $file !~ /pdf$/; if (Encode::decode_utf8($file) eq $filename) { $found++; } } closedir($dh); print "found $found file(s).\n";

dann stimmt auch die Anzahl der gefundenen Dateien mit der erwarteten Anzahl überein:

found 1 file(s).