5 Antworten zu “Autsch!

  1. Wer einen zwitschern will, der kommt ohne JavaScript nicht weit. Das haben sie ja abgeschafft. Ein Schelm der Böses dabei denkt …
    Diese Seite bei mastodon kann ich zumindest ohne JavaScript lesen. Aktiv schreiben wohl eher nicht, aber plain-HTML lesen ist schon mal gut.

    Wer hätte gedacht, dass Monty Python doch Recht hatten wie schnell und einfach die Weltherrschaft zu erlangen ist.

  2. Habe gerade wieder so ein schnuckeliges Erlebnis mit der grandiosen Theia IDE. Das Skript zum Herunterladen der Plugins versagt hier. Symptome: ZBufError oder ECONNRESET, deftiger Download-Traffic, und wenn der abgeebbt ist, hängt das Skript immer noch.

    Stellt sich raus, dass sie das, wie in NodeJS nicht nur üblich, sondern (wegen des Erfordernisses, die main event loop nicht zu blockieren) geradezu zwanghaft mit async/ycode>await an jeder denkbaren Stelle machen. Also versuchen sie, alle 80+ Plugins parallel herunterzuladen.

    Aber damit nicht genug. Von den Plugins muss man ja erst eine kompatible Version ermitteln. Dafür bietet der Server eine JSON API. Zu jedem Plugin gibt’s da erstmal enie Versionsliste mit dazugehörigen URLs. Und jede einzelne versionsspezifische URL liefert dann eine Struktur mit dem Feld engine.vscode, das die nötige Plattformversion listet. Da die Plugins häufig aktualisiert werden, gibt es eine Menge Versionen, subjektiv geschätzt etwa 40 pro Plugin.
    Die werden (anscheinend) alle parallel abgefragt, nur damit jeweils das eine Feld extrahiert werden kann, bevor der eigentliche Plugin-Download startet. Also ca. 80*40 parallele HTTPS-Requests. Kein Wunder, dass mein Datenfeldweg das nicht mitmacht.

    Als ich mal vorgeschlagen habe, parallele Downloads auf, sagen wir, 5 pro Server zu begrenzen, war die Begeisterung eher gedämpft. Das gilt dort nicht als gutes Benehmen, sondern als early bail und ist deswegen nicht cool.

    Aber Hilfsbereitschaft ist vorhanden. Es gibt immerhin schon einen pull request, der versucht, die angeblich zur Verfügung stehende Option --no-parallel tatsächlich zum Funktionieren zu bringen. Bisher klappt das bei mir noch nicht. Ist halt schwierig, Sachen, die man schon parallelisiert hat, wieder einigermaßen zu sequenzialisieren. Sowas mögen Web-Entwickler nicht. Da muss man ja extra Koordination einbauen.

    • Ah, nicht ganz. Es gibt eine HTTPS-Abfrage pro Plugin, worin Informationen über alle Versionen angefordert werden. Also „nur“ um die 80 parallele Abfragen.

      Besser? Äh, nein.. Es kommt dann nämlich ein Array mit einer Info-Struktur für jede Version zurück, aber in jeder Info-Struktur gibt es noch Querverweise zu allen anderen Versionen. Deswegen wächst die Größe der Auskunft quadratisch mit der Anzahl der Versionen. Typischer API-Design-Fehler.

      Und es sind nicht um die 40 Versionen pro Plugin. Der Median ist bei 457.
      So gehen jetzt bereits 96% einer 20MB-Antwort über ein einziges Plugin (ohne die Downloaddaten selbst) für nutzlose Querverweise drauf. Und jetzt noch mit 80 Plugins multiplizieren, dann ist der Datentransfer für den Plugin-Versions-Check rund dreimal so groß wie die aufgeblähten 500 MB für die Installation der gesamten IDE. Mein dürftiger Internet-Anschluss ist damit immer noch beschäftigt.

      Die Leute von heute merken ja nicht einmal mehr, wieviel Unfug ihre Software regelmäßig auftürmt.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..