Produnis uninteressant – aber wahr

9. Februar 2017

git poor man’s time machine

Filed under: Arch,Jean Pütz,Professor Hastig,ubuntuusers — produnis @ 23:48

Eine etwas exotischere Verwendungsweise von git ist die einer Time Machine. Das Prinzip einer Time Machine ist, dass für einen Ordner, zB dem eigenen Dokumentenordner, regelmäßige Schnappschüsse erstellt werden. Das Feature ist dann, dass man „durch die Zeit“ blättern kann, um alte Versionen oder gelöschte Dateien zu finden.
Mit git kann man sich soetwas recht einfach erstellen:

Im Terminal wechselt man in das gewünschte Verzeichnis:

cd /Pfad/zum/Verzeichnis

Dort erstellt man ein git-Repository:

git init

Und fügt alle Dateien dem Repository hinzu:

git add *
git commit -m "initial commit"

Jetzt benötigen wir ein Script, welches per Cronjob in den Intervallen ausgeführt wird, die wir gerne für unsere Time Machine Snapshots hätten. Mögliche Cronjobs wären zB.

crontab -e
@hourly /pfad/zu/script.sh
@daily /pfad/zu/script.sh

Die Datei script.sh müssen wir erstellen und ausführbar machen, und ihr folgenden Inhalt geben:

#!/bin/bash
DATE=`date +"%Y-%m-%d_%H-%M-%S"`
cd /path/to/your/folder       # Change to your settings
git checkout -b $DATE
git checkout $DATE
git add *
git commit -m "snapshot of $DATE"
git checkout master
git rebase $DATE

Das Script erstellt einen neuen Branch DATE und führt einen commit auf alle Änderungen im Verzeichnis durch.
Anschließend wird ein rebase des commit auf den Branch „master“ ausgeführt.
Die Änderungen liegen also im Branch DATE als auch im Branch master.

Der Branch DATE wird nicht gelöscht. Er ist der Landepunkt für unsere Zeitmaschine.

Um nun durch die Zeit zu reisen wechselt man im Terminal in das Verzeichnis und gibt ein:

git checkout DATE

wobei DATE ein Zeitstempel ist.
Welche Zeitstempel verfügbar sind zeigt der Befehl

git branch

Der Befehl versetzt euer Verzeichnis in den Zustand, in dem es sich zum Zeitpunkt DATE befunden hat.

Um wieder in die Gegenwart zu wechseln verwendet man den Befehl:

git checkout master

Weblinks

26. Januar 2017

Mythweb und PHP7.1 und $this und $that

Filed under: Arch,ubuntuusers — Schlagwörter: , , — produnis @ 19:41

Seit dem Update auf PHP7.1 kann ich MythTV nicht mehr per MythWeb erreichen. Es erscheint stattdessen eine weiße Seite mit der Fehlermeldung

"Fatal error: Cannot use $this as parameter in /var/lib/mythtv/mythweb/includes/utils.php"

Zur Behebung des Problems öffnet man die angegebene Datei /var/lib/mythtv/mythweb/includes/utils.php und ersetzt (suchen/ersetzen) dort alle „$this“ durch „$that„.
Anschließend ist MythWeb wieder erreichbar.

Weblinks

29. März 2016

EmulationStation unter Archlinux

Filed under: Arch,ubuntuusers — produnis @ 18:06

Ich möchte hier kurz erklären, wie ich EmulationStation unter Archlinux installiert habe. Wer nicht weiss, was EmulationStation ist, findet hier ein kleines Teaser-Video auf YouTube.

Installation

Installiert werden müssen

  • EmulationStation
  • Emulatoren (hauptsächlich RetroArch bzw. die entsprechenden LibRetro-Plugins)
  • Spiele-ROMs
  • joyutils, zum Auslesen der angeschlossenen Gamepads

Dies geschieht unter Archlinux per:

pacaur -S emulationstation-git retroarch joyutils jstest-gtk-git

RetroArch benötigt nun für jedes zu emulierende System ein entsprechendes libretro-Plugin. Eine Übersicht der verfügbaren Plugins im AUR findet sich hier: https://aur.archlinux.org/packages/?O=0&K=libretro

Ich habe Emulatoren für den Atari7800, NES, SNES, GameboyColor und Gameboy Advanced installiert, zB per:

pacaur -S libretro-snes9x-next-git libretro-quicknes-git libretro-fceumm-git libretro-prosystem-git libretro-gambatte-git libretro-mgba-git

Für den N64 habe ich mupen64plus eigenständig installiert, da es besser läuft als das libretro-plugin.

pacaur -S mupen64plus

EmulationStation startet nun mit dem Befehl:

emulationstation

Noch funktioniert aber fast gar nichts…
Mit F4 kann es jederzeit beendet werden.
Führe zunächst die folgenden Schritte durch:

Konfiguration

Das Arbeitsverzeichnis von EmulationStation befindet sich im Homeordner:
~/.emulationstation

Theme installieren

Ich verwende das Theme „carbon“.
Dieses findet sich zB bei github: https://github.com/RetroPie/es-theme-carbon.
Lade dir das zip-Paket herunter und entpacke den Inhalt nach ~/.emulationstation/themes/carbon.
Editiere nun die Datei ~/.emulationstation/es_settings.cfg und trage das carbon-Theme entsprechend ein:

<string name="ThemeSet" value="carbon"></string>

ROM-Ordner anlegen

Alle meine Spiele-ROMs kommen in den Ornder ~/Dokumente/Medien/Spiele/ROM. Dort existiert für jedes System ein Unterordner (zB NES, SNES, N64), und in diesen liegen die entsprechenden ROMs für das entsprechende System.
Ihr dürft nur ROMs von solchen Spielen haben, die euch auch tatsächlich gehören!
ROMs findet ihr zB bei http://www.emuparadise.me/.

Systeme hinzufügen

Systeme (sprich die alten Spielekonsolen) werden in der Datei ~/.emulationstation/es_systems.cfg festgelegt.
Ein System entspricht hierbei einer Konsole (zB NES, SNES, N64).
Ihr müsst für jedes System angeben, in welchem Pfad die ROMs zu finden sind, wie die Dateiendungen der ROMS lauten, und wie der Emulatoraufruf erfolgen soll. Als Emulator wird hauptsächlich RetroArch verwendet.
Für den RetroArch-Aufruf muss immer über die Option -L der Pfad auf das entsprechende libretro-Plugin.so angegeben werden. Alle installierten Plugins finden sich im Ordner /usr/lib/libretro/

Hier mal als Beispiele meine Einträge für den GameBoy (Retroarch), SNES (Retroarch) und den N64 (mupen64plus):

	<system>
		<name>gb</name>
		<fullname>Nintendo Gameboy</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/GB</path>
		<extension>.gb</extension>
		<command>retroarch -L /usr/lib/libretro/gambatte_libretro.so %ROM%</command>
		<platform>gb</platform>
		<theme>gb</theme>
	</system>


	<system>
		<name>snes</name>
		<fullname>Super Nintendo Entertainment System</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/SNES</path>
		<extension>.sfc</extension>
		<command>retroarch -L /usr/lib/libretro/snes9x_next_libretro.so %ROM%</command>
		<platform>snes</platform>
		<theme>snes</theme>
	</system>

	
	<system>
		<name>n64</name>
		<fullname>Nintendo 64</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/N64</path>
		<extension>.n64 .z64</extension>
		<command>mupen64plus %ROM% </command>
		<platform>n64</platform>
		<theme>n64</theme>
	</system>

Lege für jedes System, welches du installiert hast, einen entsprechenden <system>-Eintrag an.

Gamepads auslesen

Ich habe hier einen Playstation-3-Controller, den ich per USB an den Laptop angeschlossen habe.
Jetzt muss ich herausfinden, welcher Knopf welchem Button entspricht.
Hierfür starte ich jstest-gtk. Mein PS3-Controller wird direkt erkannt, und über „Eigenschaften“ kann ich die Belegung auslesen.
Für meinen PS3-Controller gilt:

Playstation 3 Controller

analoges Steuerkreuz
--------------------
oben	Button 4
unten	Button 6
links	Button 7
rechts	Button 5


joystick links
--------------
oben	Axis1 -1
unten	Axis1 +1
links	Axis0 -0
rechts  Axis0 +0
klick	Button 1

joystick rechts
--------------
oben	Axis3 -3
unten	Axis3 +3
links	Axis2 -2
rechts  Axis2 +2
klick  	Button 2


BUTTONS
-------
PS	Button 16
Select  Button 0
Start	Button 3

L1	Button 10  // Axis14 1
L2	Button 8	//Axis12 1
R1	Button 11	//Axis15 1
R2	Button 9 	/Axis13 1

A(kreis)	Button 13	/Axis17
B(kreuz)	Button 14	/Axis18
C(dreieck)	BUtton 12	/Axis16
D(QUadrat)	Button 15	/Axis19

Diese Werte muss ich mir merken!!!

Gamepads hinzufügen

Jetzt wo ich weiss, welche Knöpfe und Sticks mein Gamepad hat, kann ich es in EmulationStation sowie in RetroArch bekanntmachen.

  • Emulationstation: um mit dem Gamepad durch das Emulationstation-Menü navigieren zu können.
  • RetroArch: um mit dem Gamepad zocken zu können
  • Mupen64plus: um mit dem Gamepad zocken zu können

Gamepad für Emulationstation

Editiere hierfür die Datei ~/.emulationstation/es_input.cfg.
Die Einträge für meinen PS3-Controller sehen dann so aus:

< ?xml version="1.0"?>
<inputlist>
	<inputconfig type="joystick" deviceName="Sony PLAYSTATION(R)3 Controller" deviceGUID="030000004c0500006802000011010000">
		<input name="a" type="button" id="14" value="1" />
		<input name="b" type="button" id="15" value="-1" />
		<input name="down" type="button" id="6" value="1" />
		<input name="left" type="button" id="7" value="-1" />
		<input name="menu" type="button" id="16" value="1" />
		<input name="pagedown" type="button" id="10" value="1" />
		<input name="pageup" type="button" id="11" value="-1" />
		<input name="right" type="button" id="5" value="1" />
		<input name="select" type="button" id="0" value="1" />
		<input name="start" type="button" id="3" value="1" />
		<input name="up" type="button" id="4" value="-1" />
	</inputconfig>
 
</inputlist>

Gamepad für RetroArch

Editiere hierfür die Datei ~/.config/retroarch/retroarch.cfg.
Hier muss der input für Player1 an die Knöpfe des Pads angepasst werden.
Eingetragen wird immer in den Erweiterungen _btn (Knopf) und _axis (Joysticks).

Die Einträge für meinen PS3-Controller sehen dann so aus:

input_player1_b = "z"
input_player1_b_btn = "14"
input_player1_b_axis = "nul"
input_player1_y = "a"
input_player1_y_btn = "12"
input_player1_y_axis = "nul"
input_player1_select = "rshift"
input_player1_select_btn = "0"
input_player1_select_axis = "nul"
input_player1_start = "enter"
input_player1_start_btn = "3"
input_player1_start_axis = "nul"
input_player1_up = "up"
input_player1_up_btn = "4"
input_player1_up_axis = "-1"
input_player1_down = "down"
input_player1_down_btn = "6"
input_player1_down_axis = "+1"
input_player1_left = "left"
input_player1_left_btn = "7"
input_player1_left_axis = "-0"
input_player1_right = "right"
input_player1_right_btn = "5"
input_player1_right_axis = "+0"
input_player1_a = "x"
input_player1_a_btn = "13"
input_player1_a_axis = "nul"
input_player1_x = "s"
input_player1_x_btn = "15"
input_player1_x_axis = "nul"
input_player1_l = "q"
input_player1_l_btn = "10"
input_player1_l_axis = "nul"
input_player1_r = "w"
input_player1_r_btn = "11"
input_player1_r_axis = "nul"
input_player1_l2 = "nul"
input_player1_l2_btn = "8"
input_player1_l2_axis = "nul"
input_player1_r2 = "nul"
input_player1_r2_btn = "9"
input_player1_r2_axis = "nul"

Außerdem lege ich hier „Hotkeys“ fest, mit denen ich die Emulation beenden, und zur EmulationStation zurückkehren kann:

input_enable_hotkey_btn = "16" # PS3-Knopf
input_exit_emulator_btn = "3"  # Start-Knopf

Wenn ich jetzt während der Emulation auf den PS3-Knopf gedrückt halte, und dann den Start-Knopf drücke, gelange ich zurück zu Emulationstation.

Die Einstellungen gelten für sämtliche libretro-Plugins.

Gamepad für mupen64plus

Editiere hierfür die Datei /usr/share/mupen64plus/InputAutoCfg.ini.
Hier sollte fast alles richtig sein.
Ich habe sie so verändert, dass an meinem PS3-Controller die „L2“-Taste zur „Z“-Taste wird, und die „R2“-Taste zum Hotbutton.
Hierfür habe ich den Bereich [PLAYSTATION(R)3 Controller] wie folgt angepasst:

[PLAYSTATION(R)3 Controller]
[Sony PLAYSTATION(R)3 Controller]
[Sony Computer Entertainment Wireless Controller]
[SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = button(5)
DPad L = button(7)
DPad D = button(6)
DPad U = button(4)
Start = button(3)
Z Trig = button(8)
B Button = button(15)
A Button = button(14)
C Button R = axis(2+)
C Button L = axis(2-)
C Button D = axis(3+)
C Button U = axis(3-)
R Trig = button(11)
L Trig = button(10)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

Der Hotbutton selbst wird in der Datei ~/.config/mupen64plus/mupen64plus.cfg aktiviert:

# Joystick event string for stopping the emulator
Joy Mapping Stop = "J0B9"

J0 bedeutet „Joystick 0“, B9 bedeutet „Button 9“ (ist beim PS3-Controller R2).
Drückt man nun während der Emulation „R2“, gelangt man zurück zur EmulationStation.

Fertig!

Fertig!
Jetzt kann ich emulationstation starten und meine alten ROMs zocken!

Weblinks

27. Juli 2015

[mythtv]: Streaming/Download Probleme via MythWeb

Filed under: Arch — produnis @ 07:38

Seit Kurzem erhalte ich folgende Fehlermeldung, wenn ich Aufnahmen per MythWeb herunterladen oder streamen möchte:

Internal Server Error
End of script output before headers: mythweb.pl 

Im Apache-Logfile steht es etwas genauer:

[cgi:error] AH01215: Can't locate CGI.pm in @INC (you may need to install the CGI module) (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl .) at /srv/http/www/mythweb/mythweb.pl line 8.: /srv/http/www/mythweb/mythweb.pl, referer: https://192.168.X.Y/mythweb/tv/recorded
[cgi:error] AH01215: BEGIN failed--compilation aborted at /srv/http/www/mythweb/mythweb.pl line 8.: /srv/http/www/mythweb/mythweb.pl, referer: https://192.168.X.Y/mythweb/tv/recorded
[cgi:error] End of script output before headers: mythweb.pl, referer: https://192.168.0.4/mythweb/tv/recorded

Des Rätsel Lösung ist: Es fehlt das Paket perl-cgi, welches unter Arch wiefoglt nachinstalliert werden kann:

pacaur -S perl-cgi

Jetzt funktioniert wieder alles.

1. April 2015

[kile] Sweave-Werkzeug erstellen

Filed under: Arch,LaTeX,Ubuntu,ubuntuusers — produnis @ 18:21

Ich nutze den Kile-Editor für meine LaTeX Dokumente.
Innerhalb von LaTeX möchte ich gerne meinen R-Code bzw. dessen Ausgabe integrieren. Ich schreibe daher meine Latex- und R-Code in so genannte .Rnw-Dateien, welche ich (sofern alle R-Daten parat sind) in .tex übersetze und per pdflatex als PDF-Datei ausdrucke.
Für diesen Vorgang kann man in Kile einfach ein neues „Werkzeug“ erstellen. Naja,… eigentlich sind es 3 Werkezuge:

  1. ein Werkzeug, welches den Rnw-Code in tex übersetzt
  2. ein Werkzeug, welches die tex-Datei als PDF schreibt
  3. ein Built-Werkzeug, welches die ersten zwei Werkzeuge aufruft

Später brauch man dann „nur“ das Built-Werkzeug auf eine .Rnw-Datei anwenden.

Werkzeug „sweave“

  • Klicke auf „Einstellungen“ -> „Kile einrichten“ -> „Werkzeuge“ -> „Erstellen“ -> „Neu..“
  • gib ihm den Namen „Sweave“ und ändere „benutzerdefiniert“ in „PDFLatex“ um.
  • Schreibe in das Feld „Befehl“:
    R
  • Schreibe in das Feld „Optionen“:
    CMD Sweave '%source'
  • Die drei Häkchen müssen gesetzt sein.
    Auswahl_003
  • wechsle auf den Reiter „Erweitert“
  • „Typ“ = „Außerhalb von Kile ausführen“
  • „Klasse“ = „LaTeX“
  • Schreibe in das Feld „Erweiterung der Quelldatei“:
    Rnw
  • Schreibe in das Feld „Erweiterung der Zieldatei“:
    tex
  • lasse die anderen Felder leer
  • Auswahl_002
  • speichere das neue Werkzeug mit „Ok“

Werkzeug „PDFlatexFromSweave“

  • Klicke auf „Einstellungen“ -> „Kile einrichten“ -> „Werkzeuge“ -> „Erstellen“ -> „Neu..“
  • gib ihm den Namen „PDFlatexFromSweave“ und ändere „benutzerdefiniert“ in „PDFLatex“ um.
  • Schreibe in das Feld „Befehl“:
    pdflatex
  • Schreibe in das Feld „Optionen“:
    -interaction=nonstopmode -synctex=1 '%S.tex'
  • Die drei Häkchen müssen gesetzt sein.
  • wechsle auf den Reiter „Erweitert“
  • „Typ“ = „Außerhalb von Kile ausführen“
  • „Klasse“ = „LaTeX“
  • Schreibe in das Feld „Erweiterung der Quelldatei“:
    tex
  • Schreibe in das Feld „Erweiterung der Zieldatei“:
    pdf
  • lasse die anderen Felder leer
  • speichere das neue Werkzeug mit „Ok“

Built-Werkzeug

  • Klicke auf „Einstellungen“ -> „Kile einrichten“ -> „Werkzeuge“ -> „Erstellen“ -> „Neu..“
  • gib ihm den Namen „QuickSweave“ und ändere „benutzerdefiniert“ in „Quickbuilt“ um.
  • Auswahl_004
  • Wähle nun aus dem „Werkzeug“-Dropmenü die neuen Werkzeuge „sweave“ und „PDFlatexFromSweave“ aus, und klicke jeweils auf „Hinzufügen“.
  • Auswahl_006
  • Klicke auf „OK“ um das Built-Werkzeug zu speichern.

Jetzt kann man das neue Built-Werkzeug „QuickSweave“ anwenden, um .Rnw-Dateien in PDF umzuwandeln.

Weblinks

Quelle: http://danielfischer.name/index.php?id=382

11. März 2015

cairo-dock hat unter xfce4.12 einen Schatten

Filed under: Arch,ubuntuusers — produnis @ 17:12

Seit dem Update auf xfce4 wirft das Cairo-Dock einen komischen Strich auf meinen Desktop.
cairoschatteen

Das Ganze ist eine Einstellungssache von xfce4.

Gehe in den Einstellungen zu xfce4-settings | Window Manager Tweaks | compositor und entferne den Haken bei „Schatten unter Leisten anzeigen
Feineinstellungen der Fensterverwaltung_001

3. Dezember 2014

Vectrex-Emulator „parajve“

Filed under: Arch,Jean Pütz — produnis @ 19:28

Der Vectrex-Emulator „parajve“ kommt mit einem Haufen Spielen vorinstalliert daher!

Vectrex

Ein Hoch auf die 80er!

Installation

Arch:

pacaur -S parajve

Weblinks

23. November 2014

[arch] Day of Install

Filed under: Arch,Jean Pütz,Professor Hastig — produnis @ 19:22

Um unter Arch herauszufinden, wann genau das System erstmals installiert wurde, kann man wie folgt vorgehen:

  • head /var/log/pacman.log

14. November 2014

[Arch]: top auf alte Default-Einstellung zurücksetzen

Filed under: Arch,Ubuntu,ubuntuusers — produnis @ 12:55

Seit dem letzten Arch-Update sieht die top-Ausgabe nicht mehr wie gewohnt aus.
scaled_full_099441bc0fee28ef73e1
Um den Status quo wieder herzustellen geht man wie folgt vor:

  • lösche (falls vorhanden) die Datei ~/.toprc
  • starte „top
  • drücke z (kleines z!)
  • drücke V (großes V!)
  • drücke 1 (die Zahl Eins)
  • drücke y
  • drücke m m
  • drücke t t t
  • drücke W (großes W! …dies schreibt eine neue Config-Datei ~/.toprc).

Danke an procps-ng-sucks

Weblinks

20. Oktober 2014

[gthumb] Bilder nach exif-Datum umbenennen

Filed under: Arch,Professor Hastig,Ubuntu — produnis @ 13:43

Mittels gthumb wähle ich die entsprechenden Bilder aus, drücke F2 und gebe folgenden Code ein:
%M{%Y-%m-%d, %T}_%F.%E

So werden die Bilder entsprechend ihres EXIF-Datums umbenannt, aus „DSC_0252.jpg“ wird „2014-10-18, 16:16:14_DSC_0252.jpg

Older Posts »

Powered by WordPress