Archiv Februar 2019

Montag, 11. Februar 2019

Apple, die AirPods 2, bitte. Jetzt!

Am 13. Dezember 2016 war es soweit: Dank eines selbstgestrickten Pingdom-Alarms, der um 15:08 Uhr — 8 Minuten nach Verkaufsstart — losging, gehörte ich vermutlich zu den ersten Schweizern, welche Apples kabellose Kopfhörer über deren Online-Shop bestellten. Am 20. Dezember 2016 trafen die Kopfhörer bei mir zu Hause ein — und ohne diese gehe ich seither selten bis nie aus dem Haus.

Aus meiner Sicht handelt es sich bei den AirPods um das vermutlich beste Produkt, welches Apple in den letzten etwas mehr als zwei Jahren herausgebracht hat. Geschlagen werden die Kopfhörer nur von Face ID (mit kleinen Schwächen). Anfänglich von vielen belächelt, sind die weissen Kopfhörer mittlerweile angeblich ein Statussymbol. Während ich im Dezember 2016 als Träger der Kopfhörer klar zu den Exoten im täglichen Pendlerverkehr gehörte, sind die „Stöpsel“ heute allgegenwärtig, vor allem im Grossraum Zürich.

Doch nun wäre es an der Zeit, dass Apple langsam mal die von der Gerüchteküche seit längerem vorausgesagten AirPods 2 veröffentlicht. Nicht, weil man die Dinger viel besser machen könnte (wobei — Apple, überrasch‘ mich!), sondern wegen einem viel trivialeren Problem:

Die Batterien meiner AirPods verfügen nur noch über einen Bruchteil der ursprünglichen Kapazität wenn voll geladen. Oder in Pendler-Distanzen ausgedrückt: Von der Abfahrt des 7:10 Uhr-Zugs von Bern nach Zürich, über Zürich HB, S-Bahn-Fahrt nach Zürich Hardbrücke, stirbt der rechte Kopfhörer jeweils irgendwann auf dem Fussmarsch von Zürich Hardbrücke zu meinem Arbeitgeber; oftmals auf der roten Passerelle über die Pfingstweidstrasse (also ca. um 8:25 Uhr). Der linke Kopfhörer schafft es jeweils höchstens noch bis zum Parking West, und dann ist auch dort Ende Feuer. Das ergibt eine Laufzeit von gut einer Stunde — und somit ein Bruchteil dessen, was frisch gekaufte AirPods liefern (gemäss Werbung halten die Dinger bis fünf Stunden).

Ich habe mir schon überlegt, die Batterien der Kopfhörer auszuwechseln. Das kostet gemäss Apples offizieller Seite knapp 55 Franken (oder insgesamt 110 Franken — bei einem Neupreis von 178.50). Doch damit zögere ich, weil gemäss der Gerüchteküche die neue Version vor der Türe steht. Am 21. März 2019 ist ja bekanntermassen der astronomische Frühlingsbeginn …

Tags: ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 10. Februar 2019

Mit dem Wechsel auf ACS stellt Raiffeisen auch die PDF-Generierung um

Der Kontoauszug für mein Genossenschaftskonto bei der Raiffeisen vom Januar 2019 sieht anders aus als der Auszug vom Dezember 2018. Ich gehe deshalb davon aus, dass nun auch meine Raiffeisen-Bank vom Dinosaurier Dialba weg zum Arizon Core System migriert wurde. Und Francisco sich somit allerspätestens jetzt wohl noch einen Ferrari gepostet hat.

Bei Dokumenten, die bei meinen Banken automatisiert erstellt werden, schaue ich mir mit Apple Preview gelegentlich auch die in das Dokument eingebetteten Meta-Informationen an. Oftmals lernt man so das eine oder andere über die Software, welche im Auftrag der Kernbankenlösung die PDFs generiert.

Dezember 2018 — Dialba

Als PDF-Generator wird „FOP 0.20.5“ eingesetzt und das PDF-Format in Version 1.3 ausgegeben (aktuell wären mittlerweile 1.7 respektive 2.0):

Hierbei handelt es sich um eine quelloffene Software namens Apache Formatting Objects Processor, welche XML-Dateien mittels XSL zu PDFs umwandelt.

Januar 2019 — ACS

Als PDF-Generator wird „M/TEXT CS version 6.7.0.476“ über den „OMSAdapter“ eingesetzt und das PDF-Format in Version 1.4 ausgegeben:

Der Hersteller des neuen PDF-Generators heisst gemäss Informationen von IBM unter Textmanagement und Dokumenterstellung mit M/TEXT CS 6.8 kühn & weyh Software GmbH aus Freiburg i. Br..

Tags: , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 7. Februar 2019

How-To: Smalltalk mit Deutschen

Ein Körnchen Wahrheit mag das Video enthalten (und es ist wohl auch auf die Schweiz anwendbar):

Tags: , , , , ,
Labels: Gesellschaft

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 7. Februar 2019

Bald geht’s wieder los: US-Präsidentschaftskandidaten auf allen Kanälen

Wie passend, dass ein Anbieter von Stock Video-Footage die Werbevideos künftiger potentieller Kandidaten bereits jetzt persifliert:

PS: Der Kandidatendschungel der Demokraten ist erwartungsgemäss schon jetzt riesig. Es wird aber nicht lange dauern, bis die meisten mangels liquider Mittel rausgefault sind.

Tags: , , , , , ,
Labels: USA

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. Februar 2019

host löst einen lokalen Domain-Namen auf, wget und Python requests3 hingegen nicht

Vor einigen Tagen habe ich meinen Web-Server im lokalen LAN aufgeräumt und viele Services, welche über eine DynDNS-Adresse gegen das Internet zugänglich waren, deaktiviert. Ab sofort können diese Web-Services nur noch mit einer privaten FQDN à la service.server.location.domain.local aus dem LAN angesprochen werden.

Diese Anpassung führte dazu, dass mein Bluetooth-Scanner, welchen ich auf meinem Raspberry Pi betreibe, seine Scan-Resultate nicht mehr an den Web-Server übermitteln konnte. Ein Python-Script führt auf dem RPi alle 5 Minuten einen Bluetooth-Scan durch, übersetzt die Resultate ins JSON-Format und versendet die Daten dann mit requests3 per HTTP an den Web-Server.

Die Fehlermeldung, die das Script ab der Umstellung ausspuckte, lautete folgendermassen:

$ /usr/bin/python /usr/local/bin/bluelog/bluetooth-scan.py --output api
Traceback (most recent call last):
  File "/usr/local/bin/bluelog/bluetooth-scan.py", line 424, in <module>
    response = requests.post(url, json=macs, auth=HTTPDigestAuth('user','password'))
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 110, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 487, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='service.server.location.domain.local', port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x75e41b10>: Failed to establish a new connection: [Errno -2] Name or service not known',))

Auf dem RPi eingeloggt funktionierte die Namensauflösung mit dem host-Kommando aber problemlos:

$ host service.server.location.domain.local
service.server.location.domain.local has address 10.1.2.3

Doch als ich die Verbindung zum Web-Server mit wget überprüfen wollte schlug auch das fehl:

$ wget http://service.server.location.domain.local/index.php
--2019-02-02 15:56:22--  http://service.server.location.domain.local/index.php
Resolving service.server.location.domain.local (service.server.location.domain.local)... failed: Name or service not known.
wget: unable to resolve host address "service.server.location.domain.local"

Herumgooglen brachte nicht die gewünschte Lösung. Deshalb griff ich zur nächstbesten Lösung und rief wget mit strace auf. Im Trace dann der entscheidende Hinweis:

$ strace wget http://service.server.location.domain.local/index.php
...
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fstat64(3, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
write(3, "RESOLVE-HOSTNAME-IPV4 service.serv."..., 55) = 55
read(3, "-15 Timeout reached\n", 4096)  = 20
close(3)                                = 0
...

Was zum Teufel hat der Avahi-Daemon mit /var/run/avahi-daemon/socket im strace zu suchen? Jetzt hatte ich ausreichend Infos, um Google noch einmal zu befragen. Und siehe da:

Is Avahi running or installed? Avahi uses .local domain for its usage and puts its config in /etc/nsswitch.conf. My experience with it, using a .local domain name for my internal use is that it can be a little flaky (for lack of a better technical term), and would show behavior similar to what you are seeing.

Quelle: [SOLVED] resolver weirdness – avahi and .local

Die Lösung war im selben Beitrag gepostet:

/etc/nsswitch.conf

Aus …

...
hosts:      files mdns4_minimal [NOTFOUND=return] dns
...

… wird folgender Eintrag:

...
hosts:          files dns mdns4_minimal
...

Und seither lösen sich auch die .local-Adressen reibungslos auf.

Tags: , , , , , , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 3. Februar 2019

Installationsverzeichnis von MacTeX

Die Installation von MacTeX (der LaTeX-Distribution für macOS) findet sich standardmässig in folgendem Verzeichnis:

/usr/local/texlive

Hat man zudem vergessen, welche Version man installiert hat, hilft das Listing des Verzeichnisses:

$ ls -l /usr/local/texlive
total 0
drwxrwxr-x  20 root  wheel  680  1 Jan 19:42 2018
drwxr-xr-x   9 root  wheel  306  1 Jan 19:44 texmf-local

Der Ordner „2018“ signalisiert, dass MacTeX 2018 installiert ist.

Nachtrag: Will man eine neue Version von MacTeX installieren (bspw. die Version 2018 mit 2019 ersetzen), löscht man am Besten das Verzeichnis /usr/local/texlive

# rm -rf /usr/local/texlive

… und führt dann das neue macOS Installer-Package aus, welches man aus dem Internet heruntergeladen hat.

Tags: , , , , ,
Labels: Apple, IT

Keine Kommentare | neuen Kommentar verfassen