Während ich mich gerade in herdr einarbeite, spielt mir im Hintergrund der Apple-Music Auto-Empfehlungsalgorithmus einen netten Song nach dem anderen rein. Bei einem werde ich hellhörig und will sehen, wer das ist… Eine Band namens HRFTR (siehe YouTube).
Also herdr und passend HRFTR. Kannst du dir nicht ausdenken, sowas.
Der Zugang zu so manchem komplexen Thema fällt oft leichter, wenn man sich vom Seitenrand aus über ein Thema annähern kann, von dem man schon etwas Ahnung hat.
Zum Beispiel unbedarft in die Genetik oder Molekularbiologie via „Softwareentwicklung“ springen. Beim Recherchieren zum Thema RNA-Impfstoffe und darüber, wie die internationale Community auf dem Gebiet forscht und zusammenarbeitet und was alles möglich wäre, wenn die schlauesten Köpfe der Menschheit dauerhaft die Mittel bekämen, gemeinsam an Lösungen zu arbeiten (zu langer Satz), bin ich auf die Seiten von Bert Hubert gestoßen:
Quelle https://commons.wikimedia.org/wiki/File:Turbopascal_6.png
Neben der ein oder anderen IDE von JetBrains (PyCharm, PHPStorm) werfe bzw. warf ich für kleinere Aufgaben gerne auch Atom, Sublime oder Brackets an, seit ein paar Wochen setze ich mich auch intensiver mit Visual Studio Code auseinander. Der Unterbau basiert auf Electron, d.h. ein speichersparsames kleines Editörchen ist es nicht gerade, aber es will ja nicht jeder Hipster sein und vim benutzen 🙂
Der eigentliche Nutzen für den konkreten Anwendungsfall (Python, PHP, Javascript, Ruby, etc. pp.) kommt wie immer mit den Extensions, z.B. fürs Syntax Highlighting, Linting, die Versionsverwaltung oder das Deployment.
Ich schau mir aktuell die folgenden Erweiterungen genauer an (Ich muss die Extensions noch auf den unterschiedlichen Rechnern abgleichen, im Moment ist es noch ein Test-Durcheinander):
Django Snippets (bibhasdn)
Django Template (bibhasdn)
Docker (Microsoft)
ESLint (Dirk Baeumer)
Git History (Don Jayamanne)
Git Lens (Eric Amodio)
Jinja (wholroyd)
Jupyter (Don Jayamanne)
MagicPython (MagickStack Inc)
PHP Debug (Felix Becker)
PHP Extension Pack (Felix Becker)
PHP IntelliSense (Felix Becker)
phpcs (Ioannis Kappas)
Python (Microsoft)
Python Extension Pack (Don Jayamanne)
YAML (Adam Voss)
Insgesamt macht das Arbeiten mit der IDE Spaß: Globale Suche, Befehlspalette, schneller Zugriff auf die Optionen der einzelnen Extensions, Debugger, verschiedene Arbeitsbereiche, Themes, alle bekannten Editor-Features, Aufgaben konfigurieren… ist eigentlich alles da, um verregnete Nachmittage zu überstehen.
Wer kein Geld für die sehr ausgereiften Tools von JetBrains ausgeben kann oder will, kommt mit VSC definitiv sehr weit.
Wieder was gelernt. Genauer gesagt, drei Dinge. Fangen wir an:
Caching mit nginx ist eine tolle Sache. Auf einem Server wollten wir die Auswirkung von „Microcaching“, bei dem die Ressourcen beispielsweise nur 1 Sekunde lang vorgehalten werden, prüfen. Caching-Parameter gibt es z.B. als proxy_cache_*, scgi_cache_* oder fastcgi_cache_* Direktiven. Wir brauchten die uwsgi_cache-Direktiven für eine Django-App.
Alles da, wunderbar.
Aber: Ausgerechnet das tolle uwsgi-Modul hat keinen Defaultwert beim uwsgi_cache_key. Der Key setzt sich normalerweise aus verschiedenen Parametern wie dem Schema, dem Host und dem Request-URI zusammen, darüber wird ein MD5-Hash gebildet und die Dateien darüber identifiziert.
Bei leerem Cache-Key wird genau eine Datei zwischengespeichert (die erste, die angefragt wurde) und jeder weitere Request führt zur gleichen Datei. Nicht gut.
Kopieren mit scp. Du sitzt auf Rechner A, willst etwas von Rechner B auf Rechner C kopieren? Von A aus hast Du Zugriff auf B, aber wenn dann von B nach C kopiert wird, fehlen C die entsprechenden Credentials – was tun?
„scp -3“ kopiert die Datei von B nach A und dann von A nach B. Schön unauffällig, aber sehr praktisch.
Du hast eine ~/.ssh/config Datei mit verschiedenen nützlichen und spezifischen Host-Angaben, insbesondere gibst Du via IdentityFile Deinen Key an? Wenn Du sicherstellen willst, dass wirklich genau nur dieser Key benutzt wird und keine anderen beim Verbindungsaufbau probiert werden, setze „IdentitiesOnly yes“ mit dazu.
Sagt die Doku: „Specifies that ssh(1) should only use the authentication identity and certificate files explicitly configured in the ssh_config files or passed on the ssh(1) command-line […]“.
Der Tag war überwiegend Docker gewidmet, vor allem dem Packaging von Applikationen. Docker-Compose rauf und runter, Container anlegen und löschen, Dockerfiles schreiben und Varianten testen, mit Entryfiles spielen; überlegt, welche Schritte bei Installations- bzw. Setup-intensiven Anwendungen wohin zu verorten sind (ins Image, Volumes, Entryfile oder gar nachgelagerte exec-Script-Läufe). Verschiedene Images mit ähnlicher Zielrichtung ausprobiert, Größen verglichen.
Viele hilfreiche Blogs gefunden, manche Artikel allerdings auch schon wieder veraltet und so manche Dockerfiles nicht wirklich an den Best Practices von Docker orientiert. Und viele nehmen die Isolation der Container-Prozesse vom Host als gegeben und hinreichend hin, wenn sie von Security sprechen, ohne sich um weitergehende Möglichkeiten wie die capability-drops oder Absicherung durch Zertifikate zu kümmern.
No JavaScript frameworks were created during the writing of this article.
Ok, ein alter Witz, aber immer wieder gut.
Look, it’s easy. Code everything in Typescript. All modules that use Fetch compile them to target ES6, transpile them with Babel on a stage-3 preset, and load them with SystemJS. If you don’t have Fetch, polyfill it, or use Bluebird, Request or Axios, and handle all your promises with await.
Immer noch der JS-Kongress, zweiter und letzter Tag, daher fast das gleiche Foto. Diesmal mit anderen Musikern (analoge Gitarrenmusik). Der Gebärdensprachdolmetscher war der Hammer: Nicht nur, dass er die Musik der Musiker 1a übersetzte – bei der Flut an Fachbegriffen während der Vorträge musste er generell Schwerstarbeit leisten, was er mit Bravour ([braˈvuːɐ̯]) gemeistert hat.
Heute nochmal Javascript & Robotik + Internet of Things, aber auch Performance Profiling für V8 und die GPU via WebGL für bestimmte Arten von Berechnungen nutzen.
Bei aller Faszination über die Möglichkeiten, die javascriptfähige Microcontroller bzw. -Boards bieten, kam mir doch der Aspekt des Internet of Shit etwas zu kurz: Enthusiasmus und Fun in allen Ehren, aber die Entwicklungen der letzten Monate machen klar, dass Sicherheitsfragen nicht ausgeblendet, sondern elementarer Bestandteil der IoT-Vorträge werden sollten. Der Vortrag vom Vortag Writing Secure Javascript von Guy Podjarny befasste sich ja mit JS im Allgemeinen; er lenkte das Augenmerk darauf, dass der eigene Code im Verhältnis zu den integrierten Bibliotheken meistens eher gering ist und die Sicherheitsanalyse deshalb die Abhängigkeiten auch miteinschließen muss. Sein Projekt snyk bietet dazu Lösungsansätze.
Fazit der letzten beide Tage: Tolle Organisation, viele anregende Vorträge. Hier oder da hätte man zwar noch etwas rausarbeiten können, warum im spezifischen Einsatzzweck nun ausgerechnet Javascript die Sprache der Wahl ist, statt nur die weite Verbreitung zu zitieren, aber hey.