05.12.2018

Flash-Update auf Version 32

Mir fehlen langsam die Worte, wie die Versionsnummern inflationär in Höhen klettern. Google hat es mit Chrome vorgemacht, aus irgendwelchen Gründen macht es Mozilla mit Firefox und Thunderbird nach, und jetzt beschleunigt Adobe die Nummerierung des Flashplayers genauso.

Und weil mir die neuen Worte fehlen, nehme ich immer den alten Blogartikel, nur die Versionsnummern und die Links ändern sich ;)

Einen Hinweis muss ich aber nun doch noch einbauen: ab Ende Januar 2016 gibt es keine freien Downloads der Installationsdateien mehr. Genaue Modalitäten sind noch nicht bekannt, Adobe hat nur bekannt gegeben, dass die Downloadlinks über die "distribution3.html"-Seite nicht mehr zur Verfügung stehen werden und man eine Adobe-ID und eine Business-Lizenz benötige.

Wir sind jetzt schon bei Flash-Version 32 (mittlerweile zählt wohl auch ein Major release nicht mehr zu den besonders erwähnenswerten Ereignissen bei Adobe?). Wer sich selbst auf dem Laufenden halten will, kann das Blog des Security-Teams bei Adobe lesen oder als RSS abonnieren.

Wie üblich in ihrem freundlichen Service-Blog die passende Automation zum Herunterladen und Installieren. Falls ein Proxy verwendet wird, das "rem" bzw. "#" entfernen und eigene Proxy-Adresse eintragen.

Chrome, Edge und Internet Explorer aktualisieren das Flashplugin automatisch.

Besonderer Leserservice (neu): Bitte prüfen Sie hier Ihre aktuelle Adobe Flash-Version. Wer mit NoScript oder ähnlichen Skriptblockern arbeitet, muss 4 bis 5 verschiedene Adobe-Domains genehmigen, dann auf das Puzzle-Symbol klicken und damit Flashinhalte erlauben.

Das Tool wget wird bei Windows noch benötigt wie hier beschrieben. Bei Linux sollte es schon vorhanden sein, da es von vielen anderen Programmen intern verwendet wird.

Für Windows wie üblich beide Varianten, ActiveX und Netscape Plugin (Achtung übrigens, Firefox wird demnächst das NPAPI komplett abschaffen - mal sehen, was Adobe und Flash dann machen).

Die Download-URL hat sich übrigens im Vergleich zu Version 23 leicht geändert, sowohl bei Windows als auch bei Linux.
@echo off
rem set https_proxy=http://192.168.100.100:3128/
set VNP=32.0.0.101
set VAX=32.0.0.101

set V=31
set H=fpdownload.adobe.com
set P=/get/flashplayer/pdc
set AX=install_flash_player_ax.exe
set NP=install_flash_player.exe
wget https://%H%%P%/%VAX%/%AX% -O flash-%VAX%_ax.exe
.\flash-%VAX%_ax -install
wget https://%H%%P%/%VNP%/%NP% -O flash-%VNP%_np.exe
.\flash-%VNP%_np -install
Für Linux 64 bit rpm (als root ausführen oder "sudo rpm" schreiben) gibt es jetzt auch wieder offiziell dieselbe Version wie für Windows. Eine Zeitlang war Flash für Linux bei Version 11.2 "eingefroren", Adobe hat es sich nun anders überlegt und liefert wieder, obwohl die Zeichen generell auf Untergang stehen - in Google Chrome ist Flash gar nicht mehr enthalten, und die anderen Browser-Hersteller wechseln auf Multimedia in HTML5 statt Flash. Es gäbe auch die Version "PPAPI" zum Herunterladen, das ist die Pluginvariante "Pepper" für das Google-API, ich gebe hier "NPAPI" für das Firefox-API im Skript an.
#!/bin/sh

# https_proxy=http://192.168.100.100:3128/

VL=${1:-
32.0.0.101}
H=fpdownload.adobe.com
PL=/get/flashplayer/pdc/${VL}

DL() { wget -N "$1/$2" -O "$3"; }

echo Linux 64 bit rpm ...
DL https://${H}${PL} \
   flash-player-npapi-${VL}-release.x86_64.rpm \
   flash-${VL}.x86_64.rpm
rpm -F --force flash-${VL}.x86_64.rpm
Der Filename für die 32bit-Variante ist "flash-player-npapi-${VL}-release.i386.rpm".

[20181205: Security Bulletin von Adobe]

22.11.2018

Wer ist noch wählbar?

Ich halte mich eigentlich eher für politisch links eingestellt. Wenn ich nicht in der UdSSR und der DDR gesehen hätte, dass der Kommunismus an der menschlichen Gier und Unvollkommenheit scheitert, wäre ich vermutlich auch ein Kommunist. So bin ich halt nur "irgendwie links" ;)

Leider macht es mir die SPD nicht leicht, links zu wählen. Samstag vor einer Woche war ein Interview mit Bouffier und Schäfer-Gümbel in der WZ, und beide Politiker brachten mich zum Kopfschütteln.

Die CDU behauptet, dass die Lehrerversorgung ganz wunderbar ist - sie kann es aber nicht belegen, weil sie dazu keine Statistik erfasst.
Die SPD genau wie die CDU findet die Vorratsdatenspeicherung ganz toll, und das ist ein schweres Problem für mich.
Abgesehen davon finde ich so gut wie alles von Oswin Veith grauenhaft, egal zu welchem Thema. Ich kann bei ihm keinerlei Sachkompetenz bei seinen Äußerungen erkennen.


Peter Tauber hat sich ein ganz dickes Fettnäpfchen geleistet: er hat bei Twitter des Todestags von Erwin Rommel gedacht ("Rommel galt allgemein als Hitlers „Lieblingsgeneral“").

Das große Interview (eine ganze Seite) und die ganzen kleinen Dinge außen herum waren der Anlass, diesen Frust in einen Leserbrief zu gießen.
Bemerkenswert finde ich die große Zahl Änderungen an meinem Leserbrief durch die Redaktion. Insbesondere der Unterschied, dass Bouffier von 105%, sein Kultusminister Lorz aber von realen 104% sprach, ist der Schere zum Opfer gefallen.

[Abgedruckt am 20.10.2018, Änderungen und Löschungen der WZ-Redaktion sind markiert]


Leserbrief zur Landtagswahl in Hessen
Herr Volker Bouffier hat deutlich gezeigt, dass er dem Thema Schulpolitik und seinem Kultusminister nicht viel Aufmerksamkeit schenkt, sonst hätte er nicht so vollmundig behauptet, dass die Lehrerversorgung in Hessen so toll ist. Er brüstet sich sogar mit der Zahl von 105% Lehrerversorgung. Dabei kann er weder anhand dieser Zahl noch generell überhaupt nicht beurteilen, ob die Lehrerversorgung gut ist - in Hessen gibt es nämlich keine zentrale Erfassung von Fehlstunden und Unterrichtsausfall. Er spricht auch noch von 105%, obwohl Herr Lorz im Frühjahr von 104% sprach (Bericht in der FR vom 15.02.18). Diese Zahl reicht 105% reichen nicht einmal aus, um die durchschnittliche Krankheitsrate abzufangen, die bei über 5% liegt (bei angestellten Lehrern, bei Beamten ist sie nochmals höher). Von diesen 104% Davon müssen auch noch Mediation, sozialpädagogische Zeiten und Aufwand für Inklusion und Integration abgezogen werden, und schon sieht diese Zahl gar nicht mehr so toll aus.
Leider ist die SPD in Hessen für mich auch nicht mehr wählbar, und das hat Herr Schäfer-Gümbel mit einem einzigen Satz im gedruckten Interview am Samstag geschafft: er unterstützt die Vorratsdatenspeicherung, für die auch Herr Veith so gern trommelt. Hat er die letzten Gerichtsurteile von Bundesverfassungsgericht und Europäischem Gerichtshof nicht wahrgenommen, die den Politikern mehrfach erklärt haben, auf wievielen Ebenen diese Schnüffelei verfassungswidrig ist? Ich bin ernsthaft erschüttert.
Unabhängig von diesem Interview möchte ich noch auf weitere mediale Äußerungen hinweisen, die sich Mitglieder der CDU kürzlich geleistet haben:
Herr Tauber, früher mal Generalsekretär der Bundes-CDU in Berlin, steht zwar nicht in Hessen zur Wahl, macht aber eifrig Wahlkampf. Er hat sich am 14.10. auf Twitter zu Wort gemeldet und an Erwin Rommel erinnert, der "von den Nazis zum Selbstmord gezwungen wurde". Dass dieser General aber vorher jahrelang Hitlers treuester General war, ist Tauber offensichtlich egal. Er hätte ja auch stattdessen an den Aufstand in Sobibor am selben Tag ein Jahr vorher erinnern können, aber das war ihm dann wohl zu profan.
Herr Veith, amtierendes Mitglied des Bundestages CDU-Bundestagsabgeordneter für den Wetteraukreis, spricht sich außer für die Vorratsdatenspeicherung auch für eine allgemeine Dienstpflicht aus, während er seinen Wahlkreis besucht. Schon mehrfach ist die Dienstpflicht gescheitert, was er eigentlich als Berufspolitiker und Jurist sogar besser wissen müsste als ich - ich bin "nur" Naturwissenschaftler.
Schon bei der Entstehung des Grundgesetzes - mit den Erfahrungen aus der NS-Zeit im Hinterkopf - wurde die allgemeine Dienstpflicht einhellig negativ beschieden, dann im Rahmen der Notstandsgesetze, erneut bei der Grundpflichtendebatte der 1980er/90er Jahre, anlässlich des Pflegenotstandes und der Entscheidung des BVerfG 1995 zur Feuerwehrabgabe, sowie bei der Aussetzung der Wehrpflicht gab es in Bayern 2011 einen Versuch eines sozialökologischen Pflichtjahrs. Alle diese Versuche sind gescheitert, weil das deutsche Grundgesetz eine allgemeine Dienstpflicht einfach nicht her gibt. Allein schon Art. 12 II GG, der den Arbeitszwang verbietet, steht der allgemeinen Dienstpflicht im Weg. Das Grundgesetz will damit verhindern, dass so etwas wie ein Reichsarbeitsdienst erneut eingeführt wird. Analog stehen der Dienstpflicht die EU-Grundrechtecharta und die Europäische Menschenrechtskonvention entgegen. 
Auf der einen Seite gibt es PISA, Bologna und weitere merkwürdige Bildungsreformen, landauf, landab hört man immer, dass die Schüler schneller zum Schulabschluss geführt werden müssen, und dann sollen sie mit der Dienstpflicht doch wieder ein Jahr lang fern vom Arbeitsmarkt sein? Schulabgänger ohne Ausbildung sollen qualifizierte Dienste, z.B. in Pflegeeinrichtungen, leisten? Und damit vielleicht den Arbeitsmarkt nachhaltig erschüttern und die "Preise", sprich Löhne, drücken? Oder ist das überhaupt der Hintergedanke?

12.09.2018

Lies die Anleitung bis zum Ende!

Eigentlich sollte das eine Selbstverständlichkeit sein, aber manchmal vergisst man solche Grundsätze oder überfliegt die Anleitung nur flüchtig.

So ist es mir kürzlich passiert, als ich ein "unofficial" LineageOS auf dem Smartphone eines Freundes installieren wollte. Ich hatte ihm Motorola empfohlen und er war begeistert von den "Moto Mods" - magnetischen Modulen, die man an die Rückseite anklipsen kann.

Ich selbst verwende ein Moto Z von 2016 (XT1650), weil mich das Kameramodul von Hasselblad fasziniert hat, und mein Freund ist ein HiFi-Fan, der das Modul mit JBL-Stereolautsprecher haben wollte. Daneben gibt es noch verschiedene Zusatzakkus, einen Drucker oder einen Beamer. Motorola garantiert bei der "Z"-Baureihe, dass die Module mindestens drei Smartphonegenerationen lang benutzt werden können, dass man also ein neueres Telefon der Baureihe kaufen kann und die Module können weiter verwendet werden. Das klappt wirklich: mein Akkumod - zusammen mit dem Moto Z gekauft - passt auch an das Z2 meines Bekannten.

Dummerweise hat er das Modell "Z2 Play" gekauft, das derzeit nicht offiziell von LineageOS unterstützt wird, d.h. es ist nicht über die Downloadseite zu bekommen. Der Entwickler bietet es quasi "privat" als Download bei Google Drive an. Bei meinem eigenen Telefon hatte ich als erstes Kriterium die Verfügbarkeit eines offiziellen LineageOS, und als zweites Kriterium wollte ich einen Bildschirm mit mehr als HD-Auflösung, also besser als die üblichen 1920x1080. Die "Play"-Modelle von Motorola haben aber nur diese Bildschirmgröße, deshalb fiel das bei mir durch's Raster.

[Update 20181017] Das Motorola Z2 Play "albus" ist mittlerweile offiziell.

Der erste Schritt war der Start des Telefons, weil man in den Entwickleroptionen erst das Entsperren des Bootloaders erlauben muss - das findet sich bei immer mehr Herstellern, nicht nur Motorola, sondern z.B. auch LG. Danach konnte ich das Smartphone mit dem PC verbinden und im Debugmodus mit adb die nötigen Dateien kopieren. Nach dem Wechsel in den Fastboot-Modus mit dem Befehl "adb reboot bootloader" konnte ich dann den Entsperrcode benutzen, den Motorola mir in einer Email geschickt hatte.

Der erste Installationsversuch von LineageOS schlug fehl, weil nach der Installation des (durchaus funktionsfähigen) TWRP-Recoverys das LineageOS-Zip sich mit "ERROR 255" nicht installieren ließ. Beim ersten Mal dachte ich, dass die Zip-Datei beschädigt ist und ließ sie mit "unzip -t" auf dem NAS prüfen, aber die Datei war in Ordnung.

Etwas Recherche ergab, dass für dieses Smartphone ein spezielles "64 bit" TWRP verwendet werden muss, das auch nicht offiziell von TWRP angeboten wird. An dieser Stelle wurde ich dann doch etwas unsicher über das ganze "inoffizielle" Gedöns ... aber mein Kumpel war zuversichtlich und wir machten weiter.

Der zweite Versuch schlug schon viel früher fehl: das neu geflashte Recovery startet bis zum Bildschirm, auf dem man "Install", "Wipe" usw. aufrufen kann, aber der Touchscreen war nicht funktionsfähig.

An dieser Stelle brachen wir die Installation dann doch ab und ich restaurierte auch das originale Recovery von Motorola wieder. Nach einem Neustart des Smartphones mit dem "hello moto" zeigte sich beruhigenderweise wieder das vertraute Bild der Motorola-Version von Android 7.1 Nougat.

Trotzdem ließ mir dieser Fehlschlag keine Ruhe - ich wollte das nicht auf mir sitzen lassen! Alle bisherigen Telefone ließen sich problemlos entsperren und mit CM bzw. LOS bespielen, warum also nicht dieses?

Beim erneuten Durchlesen der Beschreibung fiel mir auf, dass ich einen entscheidenden Satz überlesen hatte: "Bugs: Need to press power button two times for touch to work". Also einfach mal den Bildschirm ausschalten und wieder einschalten!

Das hat dann tatsächlich geklappt, es kam das übliche "Swipe to unlock", und danach konnten wir weiter machen. Die Installation von LineageOS, Google Apps und dem addon-su-Paket lief dann schmerzfrei, und nach der Freischaltung in meiner Firewall konnte mein Kumpel auch das Telefon fertig einrichten, Apps herunterladen usw. Den genauen Ablauf habe ich oft genug beschrieben, deshalb werde ich das hier nicht noch mal wiederholen ;-)

Eine kleine Besonderheit gibt es: nach dem Entsperren des Bootloaders wird das Einschaltbild ("boot logo") durch einen Hinweistext ersetzt, dass das Telefon entsperrt ist. Dieses Bootlogo kann man natürlich problemlos durch ein schöneres Bild ersetzen, es finden sich genügend fertige zum Downloaden, und mit dem "Motorola Bootlogo Maker" kann man sich auch eigene Bilder zurecht basteln.

Also am Ende alles gut ;-)

Da fiel mir dann der alte Spruch auch gleich wieder ein: "if all else fails, read the instructions".

11.09.2018

Flash-Update auf Version 31

Mir fehlen langsam die Worte, wie die Versionsnummern inflationär in Höhen klettern. Google hat es mit Chrome vorgemacht, aus irgendwelchen Gründen macht es Mozilla mit Firefox und Thunderbird nach, und jetzt beschleunigt Adobe die Nummerierung des Flashplayers genauso.

Und weil mir die neuen Worte fehlen, nehme ich immer den alten Blogartikel, nur die Versionsnummern und die Links ändern sich ;)

Einen Hinweis muss ich aber nun doch noch einbauen: ab Ende Januar 2016 gibt es keine freien Downloads der Installationsdateien mehr. Genaue Modalitäten sind noch nicht bekannt, Adobe hat nur bekannt gegeben, dass die Downloadlinks über die "distribution3.html"-Seite nicht mehr zur Verfügung stehen werden und man eine Adobe-ID und eine Business-Lizenz benötige.

Wir sind jetzt schon bei Flash-Version 31 (mittlerweile zählt wohl auch ein Major release nicht mehr zu den besonders erwähnenswerten Ereignissen bei Adobe?). Wer sich selbst auf dem Laufenden halten will, kann das Blog des Security-Teams bei Adobe lesen oder als RSS abonnieren.

Wie üblich in ihrem freundlichen Service-Blog die passende Automation zum Herunterladen und Installieren. Falls ein Proxy verwendet wird, das "rem" bzw. "#" entfernen und eigene Proxy-Adresse eintragen.

Das Tool wget wird bei Windows noch benötigt wie hier beschrieben. Bei Linux sollte es schon vorhanden sein, da es von vielen anderen Programmen intern verwendet wird.

Für Windows wie üblich beide Varianten, ActiveX und Netscape Plugin (Achtung übrigens, Firefox wird demnächst das NPAPI komplett abschaffen - mal sehen, was Adobe und Flash dann machen).

Die Download-URL hat sich übrigens im Vergleich zu Version 23 leicht geändert, sowohl bei Windows als auch bei Linux.
@echo off
rem set https_proxy=http://192.168.100.100:3128/
set VNP=31.0.0.153
set VAX=31.0.0.153

set V=31
set H=fpdownload.adobe.com
set P=/get/flashplayer/pdc
set AX=install_flash_player_ax.exe
set NP=install_flash_player.exe
wget https://%H%%P%/%VAX%/%AX% -O flash-%VAX%_ax.exe
.\flash-%VAX%_ax -install
wget https://%H%%P%/%VNP%/%NP% -O flash-%VNP%_np.exe
.\flash-%VNP%_np -install
Für Linux 64 bit rpm (als root ausführen oder "sudo rpm" schreiben) gibt es jetzt auch wieder offiziell dieselbe Version wie für Windows. Eine Zeitlang war Flash für Linux bei Version 11.2 "eingefroren", Adobe hat es sich nun anders überlegt und liefert wieder, obwohl die Zeichen generell auf Untergang stehen - in Google Chrome ist Flash gar nicht mehr enthalten, und die anderen Browser-Hersteller wechseln auf Multimedia in HTML5 statt Flash. Es gäbe auch die Version "PPAPI" zum Herunterladen, das ist die Pluginvariante "Pepper" für das Google-API, ich gebe hier "NPAPI" für das Firefox-API im Skript an.
#!/bin/sh

# https_proxy=http://192.168.100.100:3128/

VL=${1:-
31.0.0.153}
H=fpdownload.adobe.com
PL=/get/flashplayer/pdc/${VL}

DL() { wget -N "$1/$2" -O "$3"; }

echo Linux 64 bit rpm ...
DL https://${H}${PL} \
   flash-player-npapi-${VL}-release.x86_64.rpm \
   flash-${VL}.x86_64.rpm
rpm -F --force flash-${VL}.x86_64.rpm
Der Filename für die 32bit-Variante ist "flash-player-npapi-${VL}-release.i386.rpm".

[20180911: Security Bulletin von Adobe]
[20181114: Security Bulletin von Adobe]
[20181120: Security Bulletin von Adobe]

10.09.2018

Die überraschende Firewall

Zur Abwechslung gibt es heute mal eine Anekdote einer interessanten und überraschenden Problemsuche bei einem Freund.

Besagter Freund wollte sich ein Emailkonto bei einem neuen Anbieter einrichten und es wollte nicht funktionieren. Das Emailkonto gehört zu einem Gesamtkunstwerk aus Website und Domainname eines Vereins. Durch Umzug der Website zu einem anderen Anbieter und Wechsel im Vereinsvorstand mussten wir ein Emailkonto für den Verein auf seinem PC neu einrichten.

Ich hatte vorher das Konto über die Verwaltungsseite des Anbieters angelegt, die technischen Daten für die Mailserver notiert (Pop, Imap, Smtp) und meinem Freund geschickt. Aber es wollte nicht funktionieren. Halt, das ist nicht ganz richtig. Mail abholen funktionierte, aber Mail versenden war nicht möglich.

Für mich erschwerend kam hinzu, dass es sich um einen Laptop mit Windows und Outlook handelt, und schon mit Windows tue ich mich sehr schwer. Mit Outlook habe ich eigentlich gar keine Erfahrung und musste mich durch eine etwas gewöhnungsbedürftige Bedienung durchkämpfen. Ich selbst verwende als Mailprogramm schon immer Thunderbird und bin sehr zufrieden damit.

Zuerst hatte ich die Sicherheitssoftware in Verdacht: Norton Antivirus hatte sich in Browser und Betriebssystem als Firewall eingeklinkt (der Windows-interne Firewall war abgeschaltet) und ich schaltete testweise Norton komplett ab, weil ich den Verdacht hatte, dass Norton ausgehende Mailverbindungen zu "komischen" Servernamen ablehnt (zur Unterdrückung von Spam). Aber das half nicht.

Also tiefer eingestiegen und mit einer Kommandozeile eine "telnet"-Verbindung zum Anbieter versucht. Auch das schlug fehl - es war also kein Outlookproblem, und da Norton abgeschaltet war, auch kein Nortonproblem. Ein "ping" war möglich. Zudem war das telnet-Programm zuerst gar nicht erreichbar, sondern ich musste es über die Systemsteuerung installieren (in der Systemsteuerung bei den Windows-Komponenten den "telnet-client" ankreuzen). Danach konnte ich auf der Kommandozeile mit dem schlichten Befehl "telnet mailservername 465" testen, ob der PC eine TCP-Verbindung zum Port 465 für SMTP über SSL aufbauen kann.

Nach mehreren erfolglosen Versuchen kam ich auf die Idee, im DSL-Router nachzuschauen - ein ziemlich neues Mietgerät von der Telekom für VDSL mit "Smarthome"-Fähigkeiten, also ziemlich neu. Und tatsächlich gibt es in diesem !$%&-DSL-Router einen Menüpunkt "Erlaubte Mailserver".

Der Router hat also tatsächlich einen Mini-Firewall auf Hostnamenebene eingebaut und kommt mit einer einigermaßen umfangreichen Liste von vordefinierten Mailanbietern und deren Hostnamen für Smtp-Mailablieferung. Nur "unser" Anbieter "Host Europe" war nicht in der Liste enthalten.

Also den Hostnamen unseres Smtp-Servers eingetragen und - bingo! Es ging immer noch nicht.

Erst nach einem Neustart des DSL-Routers wurde die Änderung funktionsfähig.

Der Neustart zog zwar weitere Probleme mit dem ISDN-Adapter der Telekom und der alten ISDN-Telefonanlage meines Freundes nach sich, aber diese Geschichte erzähle ich vielleicht ein anderes Mal ;-)

16.08.2018

Formeln in LibreOffice Calc mit einem perl-Skript erzeugen

Hier kommt mal wieder eine Kleinigkeit, die mich etwas Mühe gekostet hat: ein perl-Skript, das mir ein XLSX-Spreadsheet erzeugt, in dem funktionierende Formeln eingebettet sind. XLSX ist das XML-Dokumentenformat von Microsoft Office, funktioniert aber auch in LibreOffice. Technisch ist es weit umständlicher als das OpenDocument Format und nicht wirklich frei, aber das soll hier nicht das Thema sein.

Ich bin an und für sich kein großer Office-Benutzer und weiß eigentlich auch nur das Nötigste - aber beruflich hab ich halt doch immer mal wieder den Auftrag, irgendwelche Office-Dateien zu verwenden oder zu liefern. In solchen Fällen versuche ich immer, mir mit Perl-Skripten die Handarbeit vom Hals zu schaffen und stattdessen eine schöne Automation zu verwenden ;-)

Kürzlich wollte nun ein Kollege in ein Spreadsheet, das ich für ihn generiere, in mehreren Zellen eine Verknüpfung zu einem anderen Tabellenblatt ("sheet") eingebaut haben.

Ich hatte größere Schwierigkeiten, die richtige Schreibweise für Formelbefehle und die Zellenkoordinaten zu finden - LibreOffice ist hier zu hilfreich und verbirgt über automatische Korrekturen im Calc-Programm viele Eingabefehler vor dem Benutzer - die Schreibweise aus dem GUI ins Skript übernommen hat nicht funktioniert und beim Öffnen der neuen Datei erhielt ich immer eine Fehlermeldung in allen Zellen mit Formel. Interessant daran: wenn ich im Office-Programm die Formel bearbeitete und abspeicherte, fing sie an zu funktionieren, obwohl ich an der Schreibweise nichts geändert hatte (z.B. einfach ein Zeichen gelöscht und dasselbe Zeichen wieder eingetippt). Das war extrem frustrierend, zeigt es doch, dass hier im Sinne der Bequemlichkeit Dinge in der Software unter der Haube passieren, die man als Benutzer nicht erkennen kann.

Außerdem ist die Syntax zwischen Microsoft Office und LibreOffice leicht unterschiedlich. Auch bei /r/LibreOffice und /r/perl waren die Lösungsvorschläge für meine Fragen breit gestreut, was die mögliche Schreibweise der Formeln angeht. Letztendlich hat sich dann eine Schreibweise gefunden, die bei LibreOffice und MS Office funktioniert - hurra!

Für das Experimentieren hatte ich mir ein winziges Perl-Skript geschrieben, das eine XLSX-Datei mit zwei Sheets erzeugt und in einer Zelle des ersten Blatts einen Verweis auf das zweite Blatt einfügt. Beim Öffnen der Datei mit Office wird dann der Verweis ausgeführt und der referenzierte Wert (im Skript unten grün markiert) erscheint dynamisch in der Formelzelle. Der rot markierte Text wird durch die Zuweisung "$u[4]=..." durch die Formel ersetzt. Die Formel enthält noch Platzhalter %d und %s, um mit printf bestimmte Zeilennummern und Spaltennamen einzusetzen, während die XLSX-Datei erzeugt wird. Die write-Methode für eine Zeile des Spreadsheets erwartet eine Referenz auf ein Array mit den Zelleninhalten, deshalb muss ich als Parameter \@l angeben. Es gibt auch speziellere write-Methoden, mit denen man jede Zelle einzeln befüllen kann, aber write ist meistens gut darin, die Datentypen im Array zu erkennen und die Arbeit intern passend zu delegieren.

Das Spreadsheet sieht dann so aus:

Der erste Tab "unix users" enthält in Zelle E1 die Formel =IFERROR( VLOOKUP( A1; $Lookup.$A$1:$B$10000; 2; 0 );"" ). Statt der Platzhalters %d sieht man die Zeilennummer "1" bzw. die Spaltennummer "2" und statt der %s werden die Spaltennamen "A" und "B" eingesetzt, d.h. der Bereich, in dem nachgeschlagen wird, geht von A1 bis B1000 und es wird bei einem Treffer in A1 der Inhalt der 2. Spalte des Bereichs (hier dann B1) übernommen.
Den Formeltext in kursiv im vorigen Absatz habe ich übrigens aus dem Eingabefeld in LibreOffice kopiert. Man sieht, dass die Schreibweise nicht dem entspricht, was im Skript als Formelschreibweise verwendet wird - hier steht plötzlich $Lookup. und nicht Lookup!. Wenn ich mit unzip in die XLSX-Datei hineinschaue (trotz der Endung ist es eine schlichte Zip-Datei!), sehe ich die Schreibweise zwischen den XML-Tags für die Formel <f> ... </f> so wie im Skript: <f>IFERROR(VLOOKUP(A1,Lookup!$A$1:$B$10000,2,0),"")</f>


Und der zweite Tab "Lookup" enthält für jeden Unixuser die Beschreibung für das GECOS-Feld.

Für eine komplexe Geschichte wie eine XLSX-Datei ist das mit knapp 20 Zeilen perl zu bewerkstelligen. Ich liebe dieses Perl-Modul.
#!/usr/bin/perl -w
use strict 'refs';
use strict 'vars';
use utf8;
use Excel::Writer::XLSX;
 
my $excelout = 'formel.xlsx';
my $workbook = Excel::Writer::XLSX->new($excelout);
my $lookupfrm=qq{=IFERROR(VLOOKUP(A%d,Lookup!\$%s\$1:\$%s\$1000,%d,0),"")};
my $worksheet;
my @u=("root","*",0,0,"no gecos","/root","/bin/sh");
my $row=0;
 
print STDERR "# write Excel unix users\n";
$worksheet=$workbook->add_worksheet('unix users');
$worksheet->keep_leading_zeros();
$u[4]=sprintf($lookupfrm,1+$row,"A","B",2),
$worksheet->write($row, 0, \@u);
print STDERR "# unix user @u\n";
 
$worksheet=$workbook->add_worksheet('Lookup');
my @l=("root","root user");
$worksheet->write($row, 0, \@l);
print STDERR "# lookup @l\n";
 
$workbook->close();

31.07.2018

Trump darf man nicht schönreden - Leserbrief

Letzte Woche gab es eine neue Kolumne von Hr. Seligmann, in der er vorschlug, nicht nur das Negative in Trump zu sehen, sondern auch zu versuchen, ob es positive Auswirkungen seiner Politik geben könnte. Ich bin vollständig anderer Meinung - es ist nicht möglich, an Trump irgend etwas positiv zu finden, und schon der Versuch ist sinnlos.
[veröffentlicht am 31.07.2018]

Leserbrief zur Kolumne von Hr. Seligmann vom 24.07.2018
Nein, Herr Seligmann, an Trump ist nichts Gutes, und es hilft auch nichts, wenn man versucht, sich die Realität schön zu reden, wie Sie es in Ihrer Kolumne vorschlagen. Diese Art von Dialektik ist der "Zeit" letzte Woche um die Ohren geflogen, als die Zeitung das angeblich gleichberechtigte Pro und Kontra der Seenotrettung diskutieren wollte.
Trump lügt im Schnitt sechs Mal pro Tag, und er greift ohne Rücksicht Mitarbeiter und Mitmenschen an, die ihm die Wahrheit zu sagen versuchen.
Sein Lieblingsfeind ist die Washington Post, die regelmäßig seinen Unfug aufdeckt, und weil die Washington Post seit einigen Jahren Jeff Bezos gehört, dem Besitzer von Amazon, greift er ebenfalls Amazon an und fordert z.B. von der US-Post, das Porto für die Pakete von Amazon im Preis zu verdoppeln.
Diese Zeitung hat eine permanent aktualisierte Liste aller seiner Lügen, die man abrufen kann.
Dort sind für seine bisherigen 497 Regierungstage schon 3251 aufgedeckte falsche Behauptungen zu finden.
Wenn er widerlegt wird, kontert die Regierung mit "alternativen Fakten", aus denen sich sein Weltbild zusammensetzt.
Die Zahl der Hassverbrechen ist deutlich gestiegen seit seiner Wahl.
Auf Sportfeldern schreien weiße Schulkinder "Trump! Trump!" als Beleidigung, wenn das Gastteam afro- oder lateinamerikanisch ist.
Nach dem Regierungsantritt hat Trump systematisch wissenschaftliche (echte!) Fakten von Webseiten löschen lassen, auf die das Weiße Haus Einfluss hat, z.B. zum Klimawandel, in der Gesundheitspolitik usw. Das Gesundheitsministerium wies die Seuchenschutzbehörden an, bestimmte Begriffe wie "Diversität", "evidenzbasiert" und "wissenschaftsbasiert" nicht mehr zu verwenden.
In einem Menschen, der systematisch Hass und Lügen verbreitet und wissenschaftliche Fakten ignoriert und durch Zensur aus der Welt und aus dem Bewusstsein schaffen will, darf man nichts Gutes suchen. Die Mechanismen der Sprache, die Trump verwendet, hat Orwell in "1984" voraus gesehen: die Realität ist nichts, wenn man nur lang genug das Gegenteil behauptet und die Medien beherrscht. Hier kann man durchaus Vergleiche zum Medienmogul Berlusconi ziehen, der durch sein eigenes Medienimperium politisch zu Einfluss kam. Trump ist genauso, nur noch dreister.
Hannah Arendt warnte schon 1951: "Der ideale Untertan totalitärer Herrschaft ist nicht der überzeugte Nazi oder engagierte Kommunist, sondern Menschen, für die der Unterschied zwischen Fakten und Fiktion, wahr und falsch, nicht länger existiert."
Trump ist auf dem besten Weg dorthin, wenn er systematisch das Vertrauen in die Wissenschaft und in die Demokratie angreift.