Dienstag, 13. September 2016

Annex one or more files

Sometimes people put files into my home directory without giving me the ownership. This Gist fixes the problem.

Montag, 5. September 2016

Mercedes Me Concierge

Wenn der genauso gut funktioniert, muss ich wohl Fahrrad fahren.

Freitag, 2. September 2016

Replace all editors with Emacs client

I have to work on a Ubuntu system having installed some text editors I would never use. Instead I like to use Emacs client, because I have Emacs always running.

Graphical desktops like Gnome are believed to be user friendly, but it took me more than a hour to replace the useless editors with Emacs client. First it is necessary to remove all existing MIME type associations. Next it is necessary to define a new application. And finally new MIME type associations have to be set. This is done in two files in the directory $HOME/.local/share/applications.

mimeapps.list
This file defines your own associations overriding the system defaults.
emacsclient.desktop
This is a newly defined application necessary to execute Emacs client.

I have cloned the already existing Emacs application to define the Emacs client application. The original Emacs application definition is stored in /usr/share/applications/emacs24.desktop. This is the application definition.

[Desktop Entry]
Name=Emacs Client
Type=Application
Terminal=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacsclient -n %F
Categories=Utility;TextEditor;Development;
Comment=
Keywords=editor
Icon=/usr/share/icons/hicolor/scalable/apps/emacs24.svg

Now it is necessary to override the existing MIME type associations. This is done in the section "Default Applications" of the file mimeapps.list.

[Default Applications]
application/x-shellscript=emacsclient.desktop
text/english=emacsclient.desktop
text/plain=emacsclient.desktop
text/x-c++=emacsclient.desktop
text/x-c++hdr=emacsclient.desktop
text/x-c++src=emacsclient.desktop
text/x-c=emacsclient.desktop
text/x-chdr=emacsclient.desktop
text/x-csrc=emacsclient.desktop
text/x-java=emacsclient.desktop
text/x-makefile=emacsclient.desktop
text/x-moc=emacsclient.desktop
text/x-pascal=emacsclient.desktop
text/x-tcl=emacsclient.desktop
text/x-tex=emacsclient.desktop

And next all already existing associations have to be removed. This is done in the section "Removed Associations" of the same file.

[Removed Associations]
application/x-shellscript=emacs24.desktop
text/english=emacs24.desktop
text/plain=emacs24.desktop;gedit.desktop;leafpad.desktop
text/x-c++=emacs24.desktop
text/x-c++hdr=emacs24.desktop
text/x-c++src=emacs24.desktop
text/x-c=emacs24.desktop
text/x-chdr=emacs24.desktop
text/x-csrc=emacs24.desktop
text/x-java=emacs24.desktop
text/x-makefile=emacs24.desktop
text/x-moc=emacs24.desktop
text/x-pascal=emacs24.desktop
text/x-tcl=emacs24.desktop
text/x-tex=emacs24.desktop

The MIME type text/plain had three associations separated by semicolon. After this modifications the file manager PCManFM does not show any useless but only one useful program in the context menu.

Montag, 11. Januar 2016

Compile Git on Solaris 10

To compile Git 2.7.0 on Solaris the Makefile must be changed to use gcc

CC = gcc

After that Git compiles, when I disable gettext, iconv and Tcl/Tk. I did not need curl but it seems to work.

NO_GETTEXT=1 NO_ICONV=1 NO_TCLTK=1 CURLDIR=/usr/local \
gmake prefix=/my/git install

Freitag, 8. Januar 2016

Diablo III Beta 2.4 PTR: Delseres Opus Magnum

Normalerweise bin ich kein Freund von Online-Services, die einem den Eindruck vermitteln, sie würden die tollste Erfindung seit geschnitten Brot sein, obwohl sie nur mit ein paar OpenSource-Tools zusammengeschustert sind. Aber in diesem Fall muss ich eine Ausnahme machen. Wenn man "mal schnell" ein Video zu einer animierten GIF-Grafik machen will, ist Ezgif.com ein prima Webseite. Man sollte natürlich tunlichst nur völlig öffentliche Videos dort hoch laden.

Das folgende GIF meiner Zauberin Horima aus der Diablo III PTR Beta 2.4 ist mit Hilfe des Dienstes entstanden. Aufgenommen habe ich mit OBS. Ezgif hat konvertiert, zugeschnitten und skaliert. Und mit Gimp habe ich das Fine-Tuning der Frames gemacht, damit die Animation sauber loopt.

Es ist meine erste Melee-Sorc seit Diablo I, die wirklich funktioniert. Alle Zauberinnen, die ich bislang geskillt habe, mussten sich schön weit von den Gegnern fernhalten. Auch die Experimente mit dem Sturmschild in Diablo II waren nicht wirklich effektiv. Aber mit dem 2.4er Patch hat Blizzard endlich mal ein Set mit ein paar praktischen legendären Ergänzungen geschaffen, mit denen man sich auch als Zauberin an die Gegner ran trauen kann. Es ist das Set "Delseres Opus Magnum". Das Set an sich ist nicht neu.

Und der dazu gehörige Helm ist es auch nicht.

Aber die neuen beziehungsweise überarbeiteten Zusatzgegenstände haben es in sich. Da wäre zuerst dieser Ring, der eine Schadensreduktion von 60% bietet. Und damit nicht genug: außerdem castet er quasi ständig Frost-Nova. Der Ring zusammen mit dem Helm lassen alles um einen herum so gut wie zum Stillstand kommen.

Als weitere Unterstützung gibt es die folgende Armschiene, die die Schilde verdoppelt.

Aber so richtig genial sind erst die nächsten Teilchen. Fragment der Bestimmung gibt eine 50% erhöhte Angriffsgeschwindigkeit für Spektralklinge und eine Erhöhung des Schadens von 200%. Damit alleine wäre Spektralklinge schon super schnell. Aber es kommt noch besser.

Der folgende Gürtel gibt nochmal eine Erhöhung der Angriffsgeschwindigkeit von Primärfertigkeiten um 50%. Damit ist Spektralklinge 100% schneller und geht ab wie eine Nähmaschine.

Das alleine ist angesichts der 2000% Schadenserhöhung durch das Set schon recht knackig. Aber so richtig knallt es erst mit dem neuen Triumvirat. Der erhöht nämlich den Schaden von Arkankugel um satte 200%. Und das ist auch noch drei mal stapelbar. Zusammen mit der 100%igen Geschwindigkeitserhöhung von Spektralklinge hat man die drei Stapel quasi sofort.

Und wem das immer noch nicht reicht: es gibt noch ein Sahne-Häubchen: Instabiles Zepter. Das lässt Arkankugel doppelt explodieren und steigert zusätzlich noch den Schaden von Arkankugel um 65%. Zusammen mit den 600% vom Triumvirat und den 2000% vom Set knallt man damit alles um, was nicht bei drei auf den Bäumen ist.

Damit habe ich gerade relativ entspannt im Solo ein Level 60 Portal beendet. Zugegeben am Ende hat mich der Steinsänger mit seinem Sprungangriff ein paar mal umgehauen aber bis dahin war alles problemlos.

Ich bin mal gespannt, wie schnell die Items nach der Beta droppen. Die Zeiten des Überflusses dürften in Kürze vorbei sein.

T_T

Freitag, 11. Dezember 2015

Screencast an X11 window by keyboard events

Recently I had the requirement to generate a screen cast of a keyboard interaction. There are many full featured application for Windows or Linux to generate screen casts, but they generate often big MPEG files, because they capture 30 or 60 screens per second and use lossy compression algorithms to minimize the file size. This is fine for video games and OBS does a pretty fine job, I have used it recently myself to capture a Diablo III PTR 2.4 session. But all this is not necessary, if one wants to capture keyboard interactions.

Keyboard interaction is triggered by pressing any keys. On Linux running a X11 server xinput can be used to capture keyboard events. And the standard X11 tool xwd can capture a window. And the ImageMagic can be used to combine several images into an animated GIF. This makes it possible to illustrate a keyboard interaction by pretty small GIF images.

I wrote a simple tool called xscreencast, which implements the above idea. It is hosted on GitHub. I have used it to illustrate the difference of the cursor color of a terminal window and Emacs on Stackexchange. This are the screen casts generated by the Perl script.

This is the terminal.

And this is Emacs.

Automatically follow IFRAME wrapper in Google's image search

Google adds a wrapper around the search result of image searches. They say that this might add some kind of convenience, which is by no means obvious to me. I would say that this is just another way to monitor your internet usage.

In order to get rid of it, you need Tampermonkey, if you use Chrome. The following script automatically follows the IFRAME in the search result.

// ==UserScript==
// @name         Follow IFRAME in Google image search
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      *://images.google.*/imgres?*
// @grant        none
// ==/UserScript==
/* jshint -W097 */
'use strict';

location.replace(document.querySelector('iframe').src)

By default Tampermonkey uses the @match option, which is quite limited, because it is not possible to match any top level domain. Instead of @match you have to use @include, which supports a more general globing.