Autor: andreas

Festplatte einer virutellen Linux-Maschine vergrößern

· · · 0 Kommentare

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.

Sofern man nicht gerade mit einer virtuellen Maschine arbeitet, deren Verlust man verschmerzen kann, sollten die folgenden Schritte nicht ohne vorherige Komplettsicherung durchgeführt werden.
Es kann immer etwas schiefgehen und schlimmstenfalls steht man am Ende des Prozesses mit einer Maschine da, deren Partitionen beschädigt sind und die ggf. nicht mehr in der Lage ist, zu starten.

Weiterlesen


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

· · · 0 Kommentare

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

· · · 0 Kommentare

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:

#!/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:

#!/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"

#!/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).

Lieferzeiten bei Hornbach

· · · 0 Kommentare

Webshops sind geduldig und dort angegebene Lieferzeiten offensichtlich nur als grobe Vermutung zu verstehen.

Am 23.05.2022 habe ich im Hornbach Onlineshop ein paar PVC Trapezplatten bestellt, welche auf der Website mit einer Lieferzeit von ca. 7 Werktagen angebenen werden.

Sieben Werktage, ab dem 23.05.2022 gerechnet, ergeben Donnerstag, den 02.06.2022 als ungefähren Liefertermin, was in der Bestellbestätigung auch so ausgewiesen wird:

Nun ist inzwischen der 07.06.2022 und von der Lieferung fehlt jede Spur. Wenig vertrauenserweckend ist der Blick in den Sendungssstatus im Webshop

denn hier ist der Status der Bestellung als "unbekannt" angegeben.

Ein Anruf bei der Hornbach-Hotline brachte leider nur vertröstende Worte, Hinhaltetaktik und keine Hilfe - ja, die Lieferung sei im Verzug, aber vor dem 10.06.2022 könne man erst einmal gar nichts veranlassen.

Sofern die Lieferung dann immer noch nicht da ist, soll ich mich nochmal melden, dann würde dem Lieferanten eine Frist gesetzt - wann denn aber spätestens mit der Lieferung zu rechnen sei, konnte mir dort auch niemand sagen.

Es wurde auch auf die Möglichkeit hingewiesen, im Falle eines Falles die Annahme zu verweigern - und dann anschließend dem per Vorkasse bezahlten Geld ggf. wochenlang hinterherzurennen.


Hörenswert #72: Epica - Sensorium

· · · 0 Kommentare

Am 04.05.06 spielten EPICA ein Konzert im ausverkauften Paradiso in Amsterdam. Anlässlich des Events wurde eigens das Photo-Audio-Buch "Epica - The Road To Paradiso" veröffentlicht und das Konzert wurde auch für die Veröffentlichung einer Live-DVD mitgeschnitten.

Leider ging im Zeitraum zwischen Aufnahme und geplanter Veröffentlichung die Plattenfirma (und Rechteinhaber) Transmission Records insolvent, so daß mit Ausnahme eines kurzen Teasers die Aufnahmen in einer Schublade verschwanden. Im Rahmen der Wiederveröffentlichung der ersten EPICA-Scheiben wurde wohl ein Paketdeal geschlossen, so daß am 02.09.2022, nach mehr als 16 Jahren, die Paradiso-Show voraussichtlich veröffentlicht werden wird.