Archiv ‘Uncategorized’

Dienstag, 3. September 2019

Eine veraltete MacTeX-Installation auf den letzten historischen Stand bringen

Da ich erst jetzt Zeit hatte, MacTeX von Version 2018 auf 2019 zu aktualisieren, wollte ich in der Zeit von Mai bis September 2019 meine MacTeX 2018er Installation auf den letzten verfügbaren Stand lüpfen. Hierzu habe ich ein kleines Script geschrieben:

#!/bin/bash

if [[ $UID -ne 0 ]]; then
   echo "$0 must be run as root"
   exit 1
fi

echo "Updating the TeXLive manager ..."
tlmgr update --self
echo "Done."
echo ""

echo "Updating the TeXLive packages ..."
echo "Done."
tlmgr update --all
echo ""

exit 0

Als ich dieses nach der Veröffentlichung von MacTeX 2019 ausführen wollte, erschien folgende Fehlermeldung:

...
Updating the TeXLive manager ...
tlmgr: Remote repository is newer than local (2018 < 2019)
Cross release updates are only supported with
  update-tlmgr-latest(.sh/.exe) --update
Please see https://tug.org/texlive/upgrade.html for details.
...

Was tun, wenn man MacTeX 2019 (noch) nicht installieren will, aber die vorhandenen 2018er-Pakete aufdatieren möchte? Folgender Befehl löste für mich das Problem:

# tlmgr option repository ftp://tug.org/historic/systems/texlive/2018/tlnet-final

Quelle: tlmgr: Remote repository is newer than local (2017 < 2018)

WICHTIG: Je nach Version muss die Jahrzahl "2018" in der o.g. URL auf die eigenen Bedürfnisse angepasst werden.

Nach dieser Anpassung lief das Script wieder durch und die Pakete waren auf dem letzten für Version 2018 verfügbaren Stand.

Tags: ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 10. März 2019

Warnlampen im Auto: Eigentlich ganz simpel!

20 Minuten weiss zu schreiben:

Viele Autofahrer haben keine Ahnung, was die Symbole auf der Anzeige bedeuten. Kein Wunder – es kommen immer mehr neue dazu.

Quelle: Kein Plan beim Warnsignal

Dazu meine persönliche Anekdote: Mein damaliges Studentenauto, ein altehrwürdiger Peugeot 205 (kein GTI), habe ich seinerzeit auf diese Weise „zerstört“:

Bei einem unüberlegten Manöver hatte ich mir die Ölwanne des Motors aufgerissen (Details bei einem Bier). Obwohl der Weihnachtsbaum am Armaturenbrett losging (insbesondere die rote Ölkanne), versuchte ich, mit dem kollabierenden Auto die 13 Kilometer nach Hause zu fahren. Ich kam schlussendlich ein paar Kilometer weiter, bis dann nichts mehr ging. Motorschaden mangels ausreichendem Öl, wie ich später lernte.

Ich bin seither vermutlich nicht viel schlauer geworden und kenne die Bedeutung kaum einer zusätzliche Warnleuchte auswendig. Doch was ich seit diesem (für einen Studenten teuren) Unfall weiss: Leuchtet ein Lämpchen rot, stoppt man das Fahrzeug sofort und ruft den Pannendienst. Orange Leuchten, wie beispielsweise bei den Mietwagen in den USA (und Island!) regelmässig aufflammend und von zu tiefem Reifendruck warnend, kann man etwas lockerer nehmen — die Situation beobachten, und gegebenenfalls als Messproblem abtun.

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

1 Kommentar | 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

Freitag, 14. Dezember 2018

Nicht selbst erwirtschaftetes Geld „verschenkt“ man gerne auch an Betrüger

[…] a letter via snail mail suggesting the search engine rankings for a domain registered in my name would suffer if I didn’t pay a bill for some kind of dubious-looking service I’d never heard of.

“Which naturally raises the question: Should we really be trusting these people with our money?” Guilmette said. “What kind of people or organizations are most likely to pay a bill that is utterly phony baloney, and that actually isn’t due and payable? The answer is people and organizations that are not spending their own money.”

Quelle: How Internet Savvy are Your Leaders?

Tags: , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 14. Oktober 2018

Touristenattraktion KZ Dachau

Die KZ Gedenkstätte Dachau habe ich anlässlich eines Sommer-Ausflugs nach München bereits vor einigen Jahren besucht. Im September dieses Jahres kamen wir anlässlich einer Auto-Rundreise durch Österreich in der Nähe des Dorfes Mauthausen vorbei und besuchten die dortige Gedenkstätte ebenfalls.

Mauthausen ist für mich klar eindrücklicher — wieso genau kann ich nicht sagen: Ob es die Jahreszeit war — grauer Himmel, morgendliche Kälte? Der Blick auf den Steinbruch, in Kombination mit der Schilderung der Morde an den Inhaftierten im Audio-Guide für das Smartphone? Allgemein der Audio-Guide mit unzähligen Erläuterungen beim Rundgang? Der Garten voller Monumente zur Erinnerung der Auslöschung von Bürgern unzähliger Nationen? Die sehr gut gemachte interaktive Museumsaustellung? Das äusserst gut erhaltene Lagergelände mit unzähligen Bauten?

Was ich nach der Rückkehr erst erfuhr: Bereits in den 1930ern, also während der aktiven Nutzung von Dachau, schien das dortige KZ Touristen angezogen zu haben respektive von den Nazis aktiv beworben worden zu sein:

The German authorities, initially at least, proved so willing to show off their concentration camp to foreigners that by the mid-1930s Dachau had become something of a tourist attraction for American and British visitors, particularly politicians and journalists.

Quelle: To Heil, or Not To Heil, When Traveling in the Third Reich

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

Keine Kommentare | neuen Kommentar verfassen

Freitag, 30. März 2018

Wenn US-Amerikanerinnen (insbesondere Kalifornierinnen) so komisch sprechen …

Meine Frau legt diese Sprechweise zum Glück nicht zu Tage, aber bei einigen ihrer Kolleginnen und bei flüchtigen Bekanntschaften auf unseren Kalifornien-Reisen ist es mir bereits unzählige Male aufgefallen: Dieses ganz-hinten-im-Rachen-sprechen, die Angehörige des weiblichen Geschlechts an den Tag legen. Und einem immer wieder auffällt, sobald man sich einmal darauf geachtet hat.

Bis vor einigen Tagen war ich der Meinung, dass dieses Phänomen bisher nur mir aufgefallen ist und es keinen Namen dafür gibt.

Falsch gedacht! Als Kollege Schaad und seine Catherine kürzlich bei uns auf ein Raclette vorbeikamen, fiel die Konversation irgendwann einmal auf die Kardashians. Und bei diesem Thema erwähnte Raphael den Begriff „Vocal Fry“, der diese froschartige Sprechweise bezeichnet.

Ein Zeitgenosse, der sich wohl wie ich derart ab den Kardashians aufregt, hat dazu auch gleich ein sehr illustratives Video auf YouTube aufgeschaltet, das man kaum in voller Länge schauen sollte, wenn man Wert auf seine geistige Gesundheit legt:

Nachtrag

Naomi Wolf redet ihren Geschlechtergenossinnen in einem Meinungsstück mit dem Titel Young women, give up the vocal fry and reclaim your strong female voice ins Gewissen.

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

Keine Kommentare | neuen Kommentar verfassen

Freitag, 23. März 2018

Was verändert sich mit meinem nächsten Subversion Checkin?

Der folgende Befehl zeigt analog zu einem diff zwischen zwei Dateien an, welche Änderungen an den lokalen Dateien gegenüber dem letzten versionierten Stand vorgenommen wurden:

$ svn diff -r head

Tags: , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Samstag, 25. November 2017

Normalen Benutzern den SSH-Login auf Synology DiskStations erlauben

Mit dem Synology DiskStation Manager DSM 6.0 kam es zu Sicherheitsanpassungen beim SSH-Login: Selbst wenn ein Administrator auf einem Synology NAS SSH aktiviert, können sich normale Benutzer per SSH nicht auf dem NAS einloggen. Dies ist nur mit Benutzern möglich, die der Administrator-Gruppe zugeteilt sind.

Um diese Anpassung im Namen der Sicherheit rückgängig zu machen, bin ich dem Blog-Artikel Howto: (re-)Enable SCP/SSH Login on Synology DSM 6.0 for non admin users [UPDATE] gefolgt. Der Grund ist trivial: Synology setzt für normale Benutzer in /etc/passwd ein unbrauchbares Login-Shell: /sbin/nologin

Die Lösung: Ein auf dem NAS hinterlegtes bash-Script wird mittels Cron-Job unter root laufend alle fünf Minuten ausgeführt und ersetzt die Login-Shell ausgewählter Benutzer mit /bin/sh.

/volume1/homes/admin/enable-ssh-logins.sh

#!/bin/bash
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^dagobert\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^donald\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^daisy\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^huey\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^dewey\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd
/usr/bin/awk -i inplace -F: 'BEGIN{OFS=":"}/^louie\:/{gsub(/.*/,"/bin/sh",$7)}1' /etc/passwd

exit 0

Cron-Job über DiskStation Manager Web-Oberfläche einrichten

  • Control Panel
  • Task Scheduler
  • Create
  • User-defined script
  • General
    • Task: „Enable Login Shell“
    • User: root
  • Schedule
    • [x] Run on the following days: Daily
    • Frequency: Every 5 minute(s)
  • Task Settings
    • Run command: User-defined script: /volume1/homes/admin/enable-ssh-logins.sh

Tags: , , , ,
Labels: Uncategorized

3 Kommentare | neuen Kommentar verfassen

Freitag, 13. Oktober 2017

Hyperloop: Was für ein Käse

Elon Musk und seine Spinnereien mag ich nicht. Er verkörpert für mich vieles, was in Silicon Valley falsch läuft, wobei Uber niemandem den Platz streitig machen kann.

Ein Physik-interessierter Zeitgenosse hat in einem halbstündigen YouTube-Video Musks „Achterbahn“ demontiert:

Top, die Wette gilt!

Tags: , , , ,
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Montag, 2. Oktober 2017

Landeanflug auf SFO

Seit 2011 erlebe ich diesen Landeanflug in der Regel ein, zwei Mal pro Jahr:

Hier scheint es sich um den Jungfernflug (?) der A380 von FRA nach SFO zu handeln.

Verwirrt hat mich der Begriff „DUMBA“, bis mir meine Frau gesagt hat, dass damit wohl die Dumbarton-Brücke gemeint ist.

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

1 Kommentar | neuen Kommentar verfassen