Zum Patchen von ROM-Dateien gibt es viele unterschiedliche Formate wie z.B. das IPS-Format. Als Nachfolger für eben dieses Format versteht sich BPS. Mit dem BPS-Format werden viele Beschränkungen des IPS-Formates aufgehoben, so gilt z.B. die Beschränkung auf 16 MiB für die Patch-Dateien nicht mehr. Auch die Information welches ROM sich für den Patch eignet, wird in den BPS-Dateien hinterlegt.
Beat unter Windows
Entwickelt wurde das Format von dem Entwickler hinter den Emulatoren bsnes und Higan. Heruntergeladen werden kann beat, die Software mit welcher BPS-Patches angewendet und erstellt werden, über die offizielle Seite des Autors. Lizenziert ist das Tool unter der GPL3 und damit freie Software.
Ich habe eine Vorliebe für Controller der Firma 8BitDo. Seit einiger Zeit bietet 8BitDo einen Controller an, welcher eigentlich nur als sehr kleiner Controller bezeichnet werden kann. Die Rede ist von den Controllern der Zero-Serie.
Der Zero 2 Controller im Vergleich mit den SNES-Controllern von 8BitDo
Diese Controller können problemlos als Schlüsselanhänger getragen werden und bieten die volle Belegung eines SNES-Gamepads. Trotz ihrer Größe lässt sich auf ihnen ohne Probleme spielen. Selbst Spiele, bei denen die Schultertasten benötigt werden, lassen sich sinnvoll bedienen. Verbunden wird der Controller über Bluetooth. Auch preislich können sich die Controller mit knapp 20 € sehen lassen. Als Notfall-Immer-Dabei-Controller kann die Zero-Serie empfohlen werden.
Für ein kleines Java-Projekt war ich auf der Suche nach einem schnellen Weg um Dateien darauf hin zu überprüfen, ob am Ende der Datei ein Zeilenumbruch zu finden ist. Fündig geworden bin ich beim Tool pcregrep. Nach der Installation unter Ubuntu mittels:
apt install pcregrep
kann das Ganze genutzt werden um Dateien ohne Zeilenumbruch am Ende zu finden. Dazu sollte in den gewünschten Ordner gewechselt und anschließend der Befehl:
pcregrep --include="java" -LMr '\n$' .
ausgeführt werden. In diesem Fall wird über die Option include sichergestellt das nur Dateien mit der Zeichenkette Java im Namen berücksichtigt werden.
Für Backups nutze ich seit vielen Jahren rsync-time-backup. Allerdings hörte ich in letzter Zeit viel Gutes über die freie Software Restic. Restic selbst wird über GitHub entwickelt und ist unter der BSD-Lizenz in der Zweiklausel-Version lizenziert. Unter Linux und macOS kann Restic einfach über entsprechende Paketmanager installiert werden:
brew install restic
Restic arbeiten mit sogenannten Repositorys. In einem Repository befindet sich das entsprechende Backup mit all seinen Versionen. Um ein solchen Repository anzulegen wird der Befehl:
restic init --repo ./
genutzt. Bei Restic ist jedes Backup automatisch verschlüsselt, sodass bereits beim Anlegen eines Backups ein entsprechendes Passwort vergeben werden muss. Die Daten werden mit AES, bei 256 Bit, verschlüsselt.
restic.net
Danach kann theoretisch mit dem ersten Backup begonnen werden:
In diesem Fall würde der Ordner /Users/User/ in das Restic-Repository gesichert. Bevor das Backup startet, muss das entsprechende Passwort des Repositorys eingegeben werden. Anschließend wird der Nutzer über den Fortschritt des Prozesses informiert:
repository 567f35fa opened successfully, password is correct
created new cache in /Users/User/Library/Caches/restic
[0:09] 10 files 4.296 MiB, total 451 files 224.551 MiB, 0 errors
/Users/User/System/btrfstune
/Users/User/System/busybox
...
Nach dem Abschluss des Backups erscheint eine entsprechende Meldung im Terminal:
Files: 25 new, 0 changed, 0 unmodified
Dirs: 2 new, 0 changed, 0 unmodified
Added to the repo: 616.694 KiB
processed 25 files, 615.493 KiB in 0:00
snapshot 6c0d7af6 saved
Nun verfügt der Nutzer über ein Backup Repository mit einem bzw. mehreren Snapshots. Die angelegten Snapshots können über dem Befehl:
Anschließend wird der gewünschte Snapshop wieder hergestellt:
repository fd5947c7 opened successfully, password is correct
restoring > to /Users/User/System
Soll anstatt eines bestimmten Snapshot der letzte Snapshot wiederhergestellt werden so wird anstatt einer Snapshot-ID einfach latest als Wert angegeben. Soll nur eine einzelne Datei wiederhergestellt werden, ist das komplette zurückspielen eines Backup eher suboptimal. Für einen solchen Fall können die Snapshots im Dateisystem gemountet werden.
restic -r /Volumes/Volume/ResticRepository mount /Volumes/Volume/ResticRepositoryMounted
Anschließend wird das Repository im Dateisystem unter dem angegebenen Mountpoint eingebunden:
repository fd5947c7 opened successfully, password is correct
Now serving the repository at /Volumes/Volume/ResticRepositoryMounted
When finished, quit with Ctrl-c or umount the mountpoint.
Im Gegensatz zu den Befehlen zur Wiederherstellung des Backups muss beim Mounten keine Snapshot-ID angegeben werden. In der gemounteten Struktur werden stattdessen alle Snapshots angezeigt. Die gewünschte Datei zur Wiederherstellung kann somit gesucht und wiederhergestellt werden.
Beim Backup sollen in vielen Fällen bestimmte Dateien nicht gesichert werden. Dies können z. B. temporäre Dateien oder Caches sein. Um diese Datei vom Backup auszuschließen, kann ein sogenanntes Exclude File genutzt werden:
Neben diesen Basisfunktionalitäten, verfügt Restic über weitere Funktionen, so z. B. zum Löschen alter Snapshots nach bestimmten Regeln. Alles in allem wirkt Restic für mich wie eine durchdachte Backup-Lösung, deren Nutzung durchaus ins Auge gefasst werden kann.
Wer auf die Schnelle eine Webserver benötigt, kann hierfür unter anderem Python nutzen. Dazu muss aus der Python 3-Installation das entsprechende Modul gestartet werden:
python -m http.server
Damit wird ein lokaler HTTP-Server gestartet, welcher auf dem Port 8000 horcht. Soll stattdessen ein anderer Port genutzt werden, so kann der gewünschte Port einfach am Ende angehangen werden:
python -m http.server 7000
In diesem Fall würde der Server auf dem Port 7000 erreichbar sein. Natürlich sollte diese schnelle Lösung nicht für den produktiven Betrieb genutzt werden.