Auf dem Weg zum Barista

Eine kleine Montags-Geschichte:

Seit unserem Umzug in schöne, neue Böroräume haben wir Luxus Kaffeevollautomaten. Bedauerlicherweise sind sie ein wenig wartungsintensiv.
Heute morgen hat eine der Maschinen eine Fehlermeldung geschmissen. Ich habe den Support angerufen; der hat mich auf ein erweiteretes Wartungsmenü hingewiesen, in welches man nach Drücken einiger Knöpfe und Tasten gelangen kann. Dort solle ich dann einen bestimmten Menüpunkt aufrufen.

Ich rufe also das Menü auf: Das Wartungsmenü begrüsst mich direkt mit „1 = Deinstallation, 2 = Neuinstallation“.
WTF? Ich rufe wieder den Support an:

Ich: „Er fragt mich jetzt nach Neu- oder Deinstallation?!“
Support: „Ja, sie müssen da natürlich ‚Latte Macchiato‘ drücken!“
Ich: „Aber natürlich, Latte Macchiato. Hätte ich wissen müssen.“
Support: „Ja, und danach dann Capuccino Plus. Sie drücken so lange Cappucino Plus, bis Sie beim Menüpunkt ‚Brüherreiniger mit Reiniger‘ sind.“
Ich: „Aha, Cappucino Plus. Brüherreiniger mit Reiniger – hört sich lustig an. Und dann drücke ich wieder ‚Latte Macchiato‘?“
Support: „Nein, dann müssen Sie natürlich ‚Espresso‘ drücken.“
Ich: „Äh…klar. Logisch. Ich versuche das mal und melde mich ggf. nochmal…“

Windows Phone, II

Als ich seinerzeit im März mein Windows 10 Phone erhalten habe, wollte ich eigentlich eine Story daraus machen: Überzeugter Linux Nutzer auf Abwegen.
Irgendwie wurde da nichts draus. Und jetzt lohnt es nicht mehr: Microsoft hat Windows auf Smartphones den Laufpass gegeben.
Ich muss zugeben: Ich bin darüber traurig. Ich habe iOS, Android und Windows 10 auf dem Telefon gehabt – und keines hat mich so überzeugt wie das Betriebssystem aus Redmond. Alles passte zusammen, wirkte wie aus einem Guss, die Bedienung hervorragend, konsistent und einleuchtend.
Und nun ist es bald vorbei.
Aus der Geschichte wissen wir ja, dass sich nicht immer Qualität durchsetzt (die älteren unter uns erinnern sich noch an Betamax, VHS und weitere…).

Einen ersten Vorgeschmack gab es schon: Napster, meine Beschäftigung für langweilige Zugfahrten, lief nicht mehr richtig: Die Suche sagte immer: „Keine Treffer gefunden“. Nach Aktivierung des Debug Modus und des Protokolls habe ich gesehen: Der API Key ist nicht mehr gültig. Es sieht so aus als habe Napster sofort nach Ankündigung Microsofts die Handbremse gezogen.
*Grmpf*
Ich werde noch – solange es geht – das Telefon weiter verwenden und mich daran erfreuen. Mit Spotify. Wenn das auch nicht mehr geht kommt Deezer. Und wenn das nicht mehr geht ein 20GB Tarif und Youtube. Danach? Ich denke da mal später drüber nach…

Schade, Microsoft. Ich habe Euch oft schlimme Krankheiten an den Hals gewünscht, aber in diesem eine Falle hattet Ihr wirklich Erfolg verdient.

mod-fastcgi und FastCGIExternalServer

Beim Einrichten eines Webservers habe ich mir Gedanken gemacht zur Direktive ‚FastCGIExternalServer‘. Auf hunderten von Seiten wird sie referenziert und verwendet, aber nirgendwo die Funktion oder die Parameter erklärt.

Hier ist die fehlende Dokumentation nun:

 

 

FastCgiExternalServer

Syntax: FastCgiExternalServer filename -host hostname:port
[option ...]
FastCgiExternalServer filename -socket filename [option ...]
Context: server config

The FastCgiExternalServer directive defines filename as an external FastCGI application.  If filename does not begin with a slash (/) then it is assumed to be relative to the ServerRoot.  The filename does not have to exist in the local filesystem.  URIs that Apache resolves to this filename will be handled by this external FastCGI application..

External FastCGI applications are not started by the process manager, they are presumed to be started and managed „external“ to Apache and mod_fastcgi.  The FastCGI devkit provides a simple tool, cgi-fcgi,  for starting FastCGI applications independent of the server (applications can also be self-starting, see the devkit).

-appConnTimeout n (0 seconds)Unix: The number of seconds to wait for a connection to the FastCGI application to complete or 0 to indicate a blocking connect() should be used.  Blocking connect()s have an OS dependent internal timeoutIf the timeout expires, a  SERVER_ERROR results.  For non-zero values, this is the amount of time used in a select() to write to the file descriptor returned by a non-blocking connect().  Non-blocking connect()s are troublesome on many platforms.  See also -idle-timeout, it produces similar results but in a more portable manner.
Windows NT: TCP based applications work as above.  Named pipe based applications (static applications configured without the -port option and dynamic applications) use this value successfully to limit the amount of time to wait for a connection (i.e. its not „troublesome“).  By default, this is 90 seconds (FCGI_NAMED_PIPE_CONNECT_TIMEOUT in mod_fastcgi.h).-idle-timeout n (30 seconds)The number of seconds of FastCGI application inactivity allowed before the request is aborted and the event is logged (at the error LogLevel).  The inactivity timer applies only as long as a connection is pending with the FastCGI application.  If a request is queued to an application, but the application doesn’t respond (by writing and flushing) within this period, the request will be aborted.  If communication is complete with the application but incomplete with the client (the response is buffered), the timeout does not apply.-flush noneForce a write to the client as data is received from the application.  By default, mod_fastcgi buffers data in order to free the application as quickly as possible.-host hostname:port
none
The hostname or IP address and TCP port number (1-65535) the application uses for communication with the web server. The -socket and -host options are mutually exclusive.-pass-header header noneThe name of an HTTP Request Header to be passed in the request environment.  This option makes available the contents of headers which are normally not available (e.g. Authorization) to a CGI environment.-socket filename noneUnix: The filename of the Unix domain socket the application uses for communication with the web server.  The filename is relative to the FastCgiIpcDir.  The -socket and -port options are mutually exclusive.Windows NT:  The name of the named pipe the application uses for communicating with the web server. the name is relative to the FastCgiIpcDir.  The –socket and  -port options are mutually exclusive.

 

Auf Abwegen

Seit vielen Jahre benutze ich ausschliesslich Android Smartphones. Ein iPhone war mir immer zu teuer (so viel sind mir Smartphones einfach nicht wert), Alternativen zu esoterisch oder expermentiell.

Jetzt habe ich etwas getan, was ich selbst nicht für möglich gehalten hätte: Nach Jahren des Windows-Verweigern und Microsoft Bashings habe ich mir doch tatsächlich ein Windows Phone gekauft. Ja, ich weiss, das System, stirbt gerade – vielleicht ist das aber auch genau der Grund, warum ich auf diesen Zug aufgesprungen bin: Ich habe eine Schwäche für Aussenseiter und Underdogs. Ausserdem mag ich die Vielfalt; das war der Grund, warum ich so viele Jahre mit einer Microsoft Monokultur nichts anfangen konnte. Nun gilt es aber, Windows Phone zu retten.

 

Das Ganze kam übrigens so: Während einer Zugfahrt las ich einen Artikel in der c’t zum Thema „Große, günstige Android Phablets“. Ausser Konkurrenz sozusagen wurde dort auch das Microsoft Lumia 950 XL erwähnt und von seiner Kamera und CPU geschwärmt. Nach einen kurzem Preischeck war mir klar: Für den Knallerpreis muss ich das Gerät haben. Schnell noch die Verfügbarkeit der typischen von mir benötigten Apps und deren Alternativen abgeklopft und raus ging die Bestellung.

Nun ist es hier und ein eingefleischter Linux- und Androidbenutzer macht sich an eine Migration und Umstellung.

Mein erster Eindruck vom Lumia 950 XL war aber eher enttäuschent: Es fühlt sich irgendwie…billig an. Es ist leicht – das ist gut wenn man es in der Hand halten muss, dadurch wirkt es aber auch wie aus Yoghurtbecher-Plastik. Die Knöpfe an den Seiten sind wackelig und billigst – sie wirken nicht so als würden sie viele Schaltzyklen durchstehen. Zum Einsetzen des Akkus sowie der Sim und optionalen Speicherkarte muss man den Rückendeckel mit den Fingernägel aufknibbeln. Nichts mit staub- und spritzwasserschutz, aber dafür kann man den Akku auch ohne Elektronikkenntnisse tauschen. Alles geht wohl nicht…

Ich habe beschlossen, mich für diese Testphase ganz in den Microsoft Schoss zu begeben und das Gerät so zu verwenden, wie der Hersteller es gerne hätte: Mit Cortana, die an meinen Lippen klebt, mit OneDrive, Edge und schlappem Datenschutz. Abklemmen kann ich es immer noch, erst möchte ich sehen, wie es „as intended“ funktioniert.

Ich mache mich dann mal an die Einrichtung und werde bei nächster Gelegenheit ein kleines Update posten.

 

 

 

Wenn einer eine Reise tut

Genervt von der Verkehrssituation der vergangenen Wochen und der Tatsache, dass ich derzeit 1:30 Stunden für meine Fahrt zur Arbeit brauche, keimte in mir der Wunsch auf, mal wieder Bahn zu fahren. Das geht zwar nicht schneller, aber man kann dabei lesen, die Äuglein ein wenig zumachen, mit dem Notebook noch ein wenig arbeiten, kurz: Man kann die Zeit sinnvoller für sich selbst nutzen.

Angespornt vom Umstand, dass mein treuer Landrover mal wieder einen Platten hatte (der dritte innerhalb von 2 Monaten) habe ich mich heute morgen um 06:10 auf den Weg zum Bahnhof gemacht. Als moderner Mensch hat man ja kein Bargeld dabei, sondern eine EC-Karte. Als modernes Unternehmen hat die Bahn dafür nicht funktionierende EC-Kartenleser am Fahrkartenautomaten. Also zur Bank, Bargeld abgeholt und den nächsten Zug 40 Minuten später genommen. Dank Stotterfahrt und Trödelei (laut Lautsprecherdurchsage aufgrund irgendeines Kollateralschadens/Unfall aus dem Sommer 2010) verspätete Ankunft in Duisburg. Prinzipiell kein Problem, es fahren ständig Züge von Duisburg nach Düsseldorf.

300 Meter vor Düsseldorf dann aber der Knaller: Der Zug hält an: „Wegen eines Kofferfundes ist der Bahnhof Düsseldorf gesperrt. Der Koffer wird derzeit von der Polizei untersucht“.

Ja, und da stand ich dann für eine Stunde, bevor es endlich weiter ging.

Alles zusammengezählt habe ich damit für die Strecke 3:45h gebraucht. Irgendwie jetzt kein Marketingargument pro Bahn.

Falls es jemanden interessiert: In dem Koffer war nur Müll/Wäsche. Ich habe ihn im Vorbeifahren gesehen – schwer bewacht vom BGS…

Oracle PARALLEL_MAX_SERVERS

If you need to fiddle around with PARALLEL_MAX_SERVERS you will find millions of pages, describing its use and how to set it but you won’t find the hint on how to read it…until now:


select name, value, isdefault, isses_modifiable, issys_modifiable,isinstance_modifiable, isdeprecated, description from v$parameter where upper(name) = 'PARALLEL_MAX_SERVERS';

Changing 32 bit and 64 bit mode on AIX

Recently I’ve been asked to boot an AIX system into 32 bit mode. Switching back and forth between 32 and 64 bit is quite easy with AIX. You need to create a link to the corresponding kernel. Officially IBM advises to boot into service mode first but it’s also possible without that step.

First check which kernel is currently running:
bootinfo -K

To boot from 64 bit into 32 bit:
ln -sf /usr/lib/boot/unix_mp /unix
ln -sf /usr/lib/boot/unix_mp /usr/lib/boot/unix
bosboot -ad /dev/ipldevice
shutdown -r

To boot from 64 bit into 32 bit:
ln -sf /usr/lib/boot/unix_64 /unix
ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
bosboot -ad /dev/ipldevice
shutdown -r
Weiterlesen

WebSphere 5.1 on SuSE Enterprise Server 9 SP4

In case you want to install WebSphere 5.1 on a fresh SLES9 and the installation routine hangs with a

Searching for Java(tm) Virtual Machine...
.

in the console, then try the following before executing the installation routine:

export LD_ASSUME_KERNEL=2.2.5

Installing Oracle 9i on OpenSuSE 10.3

Recently I had a hard time installing Oracle 9i on a SuSE 10.3 system. Oracle 9i is rather old and doesn’t play well with recent Java runtimes, glibcs, changed threading models etc.

I collected a lot of information and finally have been able to get Oracle installed and running.

Prerequesites

Before starting installation please make sure that you have the following packages installed:

  • gcc
  • gcc-devel
  • libaio
  • libaio-devel

Installation procedure

  1. Novell provides a nice package named ‚orarun‘ which installs the needed user, group and sets a couple of kernel parameters you otherwise had to set manually. While you might get away without installing this package, it does a lot of work for you. Although it has been packaged for SuSE Linux Enterprise Server, it works nicely on your OpenSuSE: http://ftp.novell.com/partners/oracle/sles-10/
  2. Install an old Java SDK or runtime. The one you might find on your SuSE installation medium doesn’t work. I used a Java 1.3 SDK for this purpose. Anything newer will the Oracle installation cause to fail. As it is difficult to find these old products at Suns website, here is a link for your convenience:
    http://java.sun.com/products/archive/j2se/1.3.1_14/index.html
  3. Unpack/extract your Oracle 9i installation archive. As i never use cpio for archiving anything I constantly forget the right parameters. It’s „cpio -idmv < filename„.
  4. Use your favourite editor to edit Disk1/install/linux/oraparam.ini. Find the JRE_LOCATION entry there and change it according to your Java installation from step 2.
  5. Start the Oracle 9i installation by executing runInstaller as user oracle (do a „su – oracle“ before).
    1. Note that during installation the tools „Oracle Net Configuration Assistant“ and „Oracle Database Configuration Assistant“ will fail. Ignore that for now.
  6. Change to your $JAVA_HOME/jre/bin (beeing $JAVA_HOME the directory where you have Java installed during step 2). Create a symlink with „ln -s .java_wrapper jre“
  7. Change to your $JAVA_HOME/jre/bin/i386/native_threads.
    Create a symlink with „ln -s java jre“
  8. Change to your $ORACLE_HOME. Remove the JRE link found there and create a new one: „ln -s  JAVA_HOME/jre/ JRE“

You are done. Both tools failing during installation (dbca and netca) should also work now.