Java und vorzeichenlose Typen

Zur Entwicklung von Anwendungen nutze ich im Normalfall die Programmiersprache C#. In dieser gibt es sogenannte Signed und Unsigned-Datentypen. Im Deutschen würde man dazu vorzeichenbehaftete und vorzeichenlose Typen sagen. Bei einem vorzeichenbehafteten Typ wird die Hälfte des Wertebereiches für die Darstellung negativer Zahlen und die andere Hälfte für die Darstellung positiver Zahlen genutzt. Dies führt allerdings dazu das man die Hälfte des positiven Wertebereiches einbüßt. So gibt es für den UInt32 und den Int32 unter C# bzw. der CLR folgende Wertebereiche:

UInt32    0 bis 4.294.967.295
Int32    −2.147.483.648 bis 2.147.483.647

An dieser Stelle spielen vorzeichenlose Datentypen ihre Stärke aus, da sie über einen größeren Wertebereich für positive Zahlen verfügen – bei gleichem Speicherverbrauch. So ist die Nutzung vorzeichenloser Datentypen immer dann interessant, wenn man größere positive Zahlen speichern möchte. Wenn man sich nun die Datentypen bei Java anschaut, so wird man feststellen, das es unter Java keine vorzeichenlosen Typen (mit der Ausnahme des 16 Bit großen Typs char) gibt. Möchte man nun z.B. die Werte von 0 bis 255 speichern, was bei der Verarbeitung von Daten aus bestimmten Dateiformaten vorkommt, müsste man in Java hierfür einen short (16 Bit) anstatt eines byte (8 Bit) nutzen, da selbst das byte unter Java vorzeichenbehaftet ist und nur den Bereich von -128 bis 127 abbilden kann. Möchte man diesen zusätzlichen Speicherplatz nicht hergeben, so gibt es auch unter Java eine Möglichkeit größere Werte in einem byte zu speichern:

byte unsigned = (byte)200;
int value = (int)unsigned^-256;

In der ersten Zeile wird die Zahl 200 gecastet und der Variable unsigned zugewiesen. Das Bitmuster in der Variable entspricht dann der Zahl 200. Da der Typ allerdings als vorzeichenbehaftet interpretiert wird, würde ein:

System.out.println(unsigned);

zur Ausgabe der Zahl -56 führen. Möchten wir den Wert der Variable vorzeichenlos ermitteln, muss eine XOR-Operation mit -256 ausgeführt werden, welche schließlich zum Ergebnis 200 führt.

Mittels ffmpeg Videomaterial deinterlacen

Unter Umständen kann es vorkommen, das man viele Videodateien bearbeiten muss, welche in Halbbildern vorliegen. Möchte man diese nun in progressives Material (nur Vollbilder) umkodieren, so kann das freie Tool ffmpeg sehr hilfreich sein. Auf der Konsole sieht die einfachste Variante des deinterlacing dabei so aus:

ffmpeg -i InputFile -vf yadif OutputFile

Möchte man die Datei bei dem deinterlacen gleich umkodieren, so ist dies mit ffmpeg in einem Rutsch möglich:

ffmpeg -i InputFile.mp4 -c:v libx264 -preset slow -crf 18 -c:a copy -vf yadif OutputFile.mkv

In diesem Fall wird das Eingangsvideo in H.264 umkodiert und gleichzeitig das Material deinterlaced. Je nach Video nimmt der Vorgang etliche Minuten bis Stunden in Anspruch.

MediaWiki Historie bereinigen

Wenn man Artikel in einer MediaWiki löscht, so werden diese Artikel und deren Historie weiterhin vorgehalten. Problematisch wird dies wenn man z.B. eine größere Menge an Artikeln entfernt hat. So etwas kann unter anderem im Rahmen der Spam-Bekämpfung vorkommen. Im maintenance-Ordner der MediaWiki-Installation gibt es für solche Zwecke das Skript deleteArchivedRevisions.php. Wird dieses auf der Konsole ausgeführt:

php deleteArchivedRevisions.php --delete

wird die Datenbank um historische Einträge bereinigt. Die Historie von nicht gelöschten Artikeln wird dabei beibehalten, so das wirklich nur der unnötige Ballast entfernt wird.

Zeilennummerierung unter nano aktivieren

Auf vielen unixoiden Systemen gibt es den Texteditor nano. Im Standardmodus ist die Anzeige der Zeilennummerierung unter nano deaktiviert. Möchte man dies ändern so muss der Parameter -c beim Aufruf des Editors angetragen werden:

nano -c config.cfg
nano mit aktivierter Anzeige der Zeilennummerierung

nano mit aktivierter Anzeige der Zeilennummerierung

Damit zeigt nano im unteren Bereich unter anderem die Zeilennummer an, so das man eine bestimmte Zeile bei Fehlern schnell finden kann.

Freies Brennprogramm für Mac OS X

Möchte man unter Mac OS X komplexe Projekte brennen, reicht die integrierte Unterstützung in manchen Fällen nicht aus. Wer dabei auf freie Software setzen möchte, sollte die die Applikation Burn anschauen. Neben Daten-CD/DVDs kann Burn auch Audio und Video-Discs brennen.

Burn unter Mac OS X

Burn unter Mac OS X

Bezogen werden kann Burn über die offizielle Seite, dort ist auch der Quellcode zu finden. Lizenziert ist Burn unter der GPL2 und damit freie Software.