Ich sitze hier meistens an einem Thinkpad mit englischer Tastatur. Normalerweise ist das echt praktisch, ich hab mich dran gewöhnt. Wenn ich aber zum Beispiel was in den Blog schreibe mache ich das üblicherweise doch unter Verwendung von Umlauten. Bis Gestern habe ich mich nicht wirklich darum gekümmert wie das komfortabel geht, habe mir ziemlich billig beholfen.

Ich löte zur Zeit wieder mal an einer Tastatur rum. Das aktuelle Modell verfügt über eine eigene Compose-Taste (die auch so beschriftet ist). Das hat mich neugierig gemacht und zu etwas gebracht das ich schon lange hätte herausfinden sollen: wie man eine Tastatur bedient. :-)

Mit einer Compose-Taste kann man Zeichen schreiben die man auf der Tastatur nicht sieht. Umlaute zum Beispiel. Wenn ich [Compose][„][a] drücke (also drei Tasten nacheinander, nicht gleichzeitig) kommt ein kleines ‚ä‘ dabei raus. Mit [Compose][o][c] gibt es das allseits beliebte Copyright-Zeichen: ©.

Unter Linux ist Compose per Default auf [Shift+AltGr] untergebracht. Also sollte man einfach [Shift+AltGr][s][s] drücken können und ein ‚ß‘ erhalten. Wer es komfortabler mag baut in seine Shell-Konfiguration folgende Zeile ein, damit erhält die Caps-Lock-Taste endlich eine sinnvolle Funktion:

xmodmap -e "remove Lock = Caps_Lock" -e "keycode 0x42 = Multi_key"

So sorgt man erst dafür dass die Taste nicht mehr ‚lockt‘ (entfernt also quasi die Feststellfunktion) und belegt sie dann mit dem Symbol ‚Multi_Key‘, und das steht für die Compose-Taste. Alternativ kann man das auch in seine ~/.Xmodmap einbauen, wenn man sowas pflegt. Jetzt sollte [CapsLock][‚][e] zu einem é führen.

Zumindest in grafischen Programmen (Firefox & Co.) hat das bei mir auch auf Anhieb geklappt. Für das Terminal-Fenster habe ich eine Weile gesucht, und noch keine wirklich befriedigende Lösung gefunden, da meine ersten Versuche blöde Nebeneffekte hatten. Ich verwende urxvt und bin damit eigentlich ganz zufrieden. Ob man darin Zeichen komponieren kann hängt offenbar von den locale-Einstellungen ab. Bei mir sind die bislang nicht gesetzt, stehen also wenn ich einfach ‚locale‘ ausführe alle auf POSIX. Wenn ich zum Beispiel LC_ALL auf de_DE setze kann ich komponieren, habe aber auch deutsche Manual-Pages. Letzteres will ich nicht. Wenn ich LC_ALL auf en_US stelle klappt beides, ich habe aber noch nicht rausgefunden ob das an anderer Stelle was zum Haken bringt. Und welche Auswirkungen hier de_DE.iso885915@euro oder de_DE.utf8 haben kann ich mir nur dunkel vorstellen. Hab mich halt noch nie damit beschäftigt. Das kommt dann Heute Abend — wenn mir hier niemand mit einem Tip zuvorkommt… *mitzaunpfahlrumfuchtel* ;-)

Wo kann ich nachlesen was alles passiert wenn ich beispielsweise nur LC_CTYPE auf en_US setze? Ich habe zwischendurch kaputtformatierte Man-Pages gesehen, und nach Konsumierung der locale-Manpage könnte ich mir vorstellen dass es daran lag. Allerdings habe ich auch echt unstrukturiert getestet, kann sein dass ich mich täusche…

Oh, noch eine interessante Sache die ich nebenbei gefunden (aber auch noch nicht ausprobiert) habe: wenn ich diesen Eintrag im Kubuntu-Wiki richtig verstehe kann man sich sogar eigene ‚Kompositionen‘ bauen. Also so dass man mit [Compose][b][t][w] wirklich ‚by the way‘ schreibt. Das will alles noch ausprobiert werden…

Mal abgesehen davon was ich vom Thema des Artikels halte, ein Wort fesselt mich:

In einem Frage-Antwort-Verzeichnis listet die Einrichtung bislang aber nur pauschal „elektronische Zeitschriften, E-Books, Hochschulprüfungsarbeiten, Digitalisate, Musikdateien oder auch Webseiten und dynamische Applikationen“ auf.

Nein, nicht Frage-Antwort-Verzeichnis. Obwohl das eine nette Verkomplizierung von FAQ ist. Ich nehme mir einfach mal vor, das Wort ‚Digitalisat‘ in Zukunft in meinen aktiven Wortschatz aufzunehmen. :-)

HP-42S mit Original-SkinOK, als ‚Fortgeschrittenen‘ würde ich mich im Bereich Mathematik nicht sehen. Absolut nicht. Ich kann nicht mal mehr schriftlich multiplizieren, geschweige denn dividieren. Aber dafür weiß ich wie man einen Taschenrechner bedient. Dachte ich… :-)

Bislang habe ich auf dem Computer immer gcalctool benutzt. Das ist übersichtlich und kann eigentlich alles was man so dauernd braucht. Zufällig habe ich vor ein paar Tagen einen Emulator für einen real existierenden Taschenrechner gefunden. Emulator? Für einen verdammten Taschenrechner?!? Ja, genau. Free42 heißt das dann.

Bei dem Vorbild handelt es sich um das Modell HP-42S, das wurde 1988 von Hewlett Packard vorgestellt und — ich glaube — bis 1994 gebaut. Das Ding findet man natürlich im Taschenrechner-Museum von HP, aber auch in der Wikipedia. Ein programmierbarer Taschenrechner, Umgekehrte polnische Notation, etwa 600 eingebaute Funktionen und 7200 Bytes Platz für eigene Programme. Ich weiß nicht warum, aber das hat mich irgendwie fasziniert. Und nicht nur mich: bei Online-Versteigerungen wird das Ding offenbar teilweise mit über 200 Euro gehandelt. Das ist deutlich mehr als der originale Verkaufspreis vor 15 Jahren, als man das noch im Laden kriegen konnte. Der lag soweit ich weiß bei 130 Dollar.

HP-42S PlatzsparenderWie sieht jetzt so ein Taschenrechner-Programm aus? Was kann man damit machen? Man kann damit eine ganze Menge tun, wie man schnell sieht wenn man sich ansieht was es an Beispielen im Netz gibt. Ich habe mir mal das Alternative Manual durchgelesen und losgespielt. Ein Beispiel muss her…

Das erste was ich benutzt habe ist die Solver-Funktion. Dabei programmiert man eine Funktion mit mehreren Unbekannten (z. B. das Ohmsche Gesetz: U=R*I) die man umgestellt hat so dass 0 rauskommt (also U-R*i=0). Dann kann man die Variablen der Reihe nach mit Werten belegen und den unbekannten berechnen lassen. Man gibt also Spannung und Strom an die für eine LED benötigt werden und kriegt direkt den Widerstand, ohne selbst zu rechnen. Oder Man gibt den gewünschten Strom und den Widerstand an und bekommt die Spannung an der das betrieben werden muss. Nett, aber trivial. Ein komplizierteres Beispiel muss her…

Die Aufgabenstellung habe ich aus einem Podcast ueber Leonhard Euler, allerdings habe ich als Laie wohl was falsch verstanden. Wahrscheinlich ging es um die Euler-Mascheroni-Konstante oder um das Basel-Problem, mein Programm ist vermutlich total uninteressant. Trotzdem taugt es als Beispiel. Die Aufgabe besteht darin, die Kehrwerte von ganzen Zahlen zu addieren. Also 1/1 + 1/2 + 1/3 + 1/4 und so weiter. Mittlerweile weiß ich, dass man das auch mit Logarithmen berechnen kann, aber wie angedeutet würde ich da von alleine nicht drauf kommen.

LBL "EULER"
STO 01
0
STO 02
RCL 01
LBL A
1/x
STO+ 02
RCL 01
1
-
STO 01
x>0?
GTO A
RCL 02

Das Programm arbeitet wie folgt:

  • aktuellen Wert des X-Registers (also die letzte eingegebene Zahl) in Speicher 01 sichern
  • 0 in Speicher 02 schreiben
  • Speicher 01 wieder herstellen
  • Sprungmarke A setzen
  • von der wiederhergestellten Zahl den Kehrwert bilden und zu Speicher 02 addieren
  • Speicher 01 wieder herstellen
  • 1 subtrahieren und den neuen Wert wieder in 01 speichern
  • wenn der Wert groesser 0 ist, nach A springen
  • ansonsten das Ergebnis aus Speicher 02 anzeigen

Also quasi folgendes, nur halt im Taschenrechner (und nicht nur fuer 100):

perl -e "$j=0;for($i=1;$i<=100;$i++){$j+=1/$i};print$j;

In einer Tabellenkalkulation habe ich das auch mal gemacht um die Werte zu kontrollieren, aber da kann man das (ohne wirklich zu programmieren) nur bis knapp ueber 60.000 machen, weil dann die Tabelle am Ende ist. Das Ergebnis fuer 999.999.999 ist 21,3004815013 (da hat der Taschenrechner aber auch eine Weile drauf rumgekaut).

Ich bin einfach mal weiter fasziniert, vielleicht konnte ich ja irgendwen anstecken… ;-)

Das erinnert mich daran warum ich die Sprache C nach Möglichkeit nur auf Mikrocontrollern benutze:

rschaten% cat array.c
#include <stdio .h>
int main(int argc, char **args) {
  char *string = "abc";
  printf("%c %c %cn", string[0], string[1], string[2]);
  printf("%c %c %cn", 0[string], 1[string], 2[string]);
  return 0;
}

rschaten% gcc -o array array.c

rschaten% ./array
a b c
a b c

rschaten%

Das habe ich aus dem Unix Haters Handbook, ich hätte nicht gedacht dass das wirklich funktioniert…

Ich singuliere, du singulierst, er/sie/es singuliert…

Eigentlich glaube ich nicht, dass es das Wort wirklich gibt. Gefällt mir trotzdem, ich habe es Heute in einer Spezifikation gelesen. Es ging darum, statt vieler Events in einer bestimmten Situation nur noch ein einzelnes auszulösen. Singulieren, halt. :-)