• Zuhause
  • Artikel
  • Wie ich den Snap von Avengers: Infinity War mit JavaScript neu erstellt habe
Veröffentlicht am 08-03-2019

Wie ich den Snap von Avengers: Infinity War mit JavaScript neu erstellt habe

 WARNUNG

Dieser Artikel enthält Spoiler über den Film Avengers: Infinity War. Wenn Sie es bereits gesehen haben oder sich nicht für diese Dinge interessieren, können Sie fortfahren.

Du solltest den Kopf haben, Thor.

Der kommende Film Avengers: Endgame ist einer der am meisten erwarteten Filme des Jahres 2019. Er wird der Verschwörung von Thanos ein Ende setzen und den Krieg beenden, der seit fast einem Jahrzehnt angespannt wird.

Im vorherigen Film, Avengers: Infinity War, wurden Thanos und sein Streben nach Infinity Stones präsentiert, um sein ultimatives Ziel zu erreichen: die Hälfte der Lebewesen im Universum auszulöschen.

Wenn Sie den Film gesehen haben, wissen Sie, worüber ich spreche. Wenn Sie dies nicht getan haben, müssen Sie nur wissen, um diesen Artikel zu verstehen. Dies ist kein Artikel über den Film, also muss ich nur das Konzept hinter dem Code erklären, damit er nicht dumm aussieht (er tut es trotzdem). Thanos ist böse (angeblich), er sammelt unglaubliche Kräfte und löscht dann die Hälfte der Menschen (auch fremde Menschen) im Universum. Warum? Ich werde die Begründung für den Film aufgeben, es ist gut und du solltest es sehen.

Das Paket

Bevor ich den Code erkläre, können Sie es selbst ausprobieren. Warum würdest du? Ich weiß es nicht, aber du kannst.

Sie benötigen nodejs und npm, um es auszuführen. Installieren Sie es als globale Abhängigkeit und führen Sie es mithilfe der CLI aus.

Nur ein paar Dinge, bevor wir fortfahren:

  1. Sie wissen, dass dies Ihre Dateien dauerhaft löscht. Verwenden Sie es nicht für vertrauliche Informationen.
  2. Verwenden Sie das nicht.
  3. Vergewissern Sie sich, dass Sie sich im richtigen Verzeichnis befinden, bevor Sie das ausführen, sonst verlieren Sie eine Menge Sachen
  4. Ernsthaft, verwenden Sie das nicht.
  5. Sie sollten Linux oder ein anderes Unix-basiertes System verwenden.
  6. ERLEBEN SIE ES NICHT.

Wenn Sie diese Regeln befolgen, ist alles in Ordnung.

Der Code

Ich verwende ES6-Funktionen, aber das ist nicht das Ziel dieses Artikels. Wenn Sie die Syntax nicht verstehen, hinterlassen Sie einen Kommentar und ich erkläre es Ihnen.

Der Code ist minimal und verwendet keine Abhängigkeiten. Nun, ich habe zwei Abhängigkeiten verwendet, um es als CLI-App auszuführen, aber das Löschen von Dateien verwendet keine externen Abhängigkeiten. Ich werde nicht weiter auf die CLI-Optionen eingehen, wenn Sie interessiert sind, schauen Sie auf die npm-Paketseite.

Sie können der Github-Seite des Projekts folgen, um den Code zu überprüfen, während

Ich verwende das child_process-Modul von Node, um untergeordnete Prozesse im Betriebssystem zu erzeugen. Dafür verwende ich die Spawn-Methode. Es erfordert einen Befehl und eine Liste von Argumenten, die dann asynchron einen Prozess erzeugen, der den Befehl ausführt.

Ich starte find $ path -type f, der alle Dateinamen (mit dem absoluten Pfad) im Verzeichnis $ path (standardmäßig das aktuelle Verzeichnis, in dem das Programm aufgerufen wurde) zurückgibt. Das Ergebnis ist ein binärer Puffer, der mit dem Readline-Modul gelesen wird. Dieses Modul nimmt einen lesbaren Strom binärer Daten und gibt jede Zeile über einen Listener als Text aus. Ich schnappe mir jede Zeile und schiebe sie zu einem Array.

Mit dem Listener result.on ('exit') löse ich das Promise auf und gebe alle Dateinamen im Array zurück.

Der obige Code ist der Hauptbestandteil des Pakets, da alle Dateinamen abgerufen werden. Alles, was übrig bleibt, ist das Löschen!

Der Einstiegspunkt des Programms ist unten:

Wir erhalten alle Dateinamen aus unserem Prozess spawn.js und mischen das Ergebnis. Dadurch wird sichergestellt, dass wir eine zufällige Reihenfolge innerhalb des Arrays erhalten. Wir legen einfach die Hälfte der Dateien ab und löschen die andere Hälfte mit dem Modul fs von der Festplatte.

Danach hat unsere Platte nun eine echte Balance erreicht. Es gibt viele Ressourcen für alle Dateien, die überlebt haben!

Perfekt ausbalanciert, wie alles sein sollte. - Thanos

Das eigentliche Paket hat einige zusätzliche Funktionen, wie zum Beispiel:

  • Protokollierung der gelöschten Dateien;
    • Eine Option zum Erhalten von Git-Dateien, damit Sie den ausgeglichenen Code in Ihr Repo übernehmen können.
    • Eine Option, um Dateien, die einem RegEx entsprechen, vom Löschen auszuschließen, und
    • Eine Gebrauchsanleitung
    • Hat es dir gefallen? Wirst du es benutzen? Bitte nicht. Ich weiß nicht, warum ich das getan habe.

      Hinterlasse einen Schlag und folge mir für andere Projekte wie dieses.

Siehe auch

SXSW: Zeit, Technologie & Lebensrettung - was zählt?Warum der internationale Frauentag keine Rolle spieltGrößter Tech-Journalismus aller ZeitenZahlenkarten-Feature: Lassen Sie alle Ihre Plastikkarten zu Hause.Souktel-Frauen sind führend bei der Entwicklung von Technologien für GrenzmärkteWo sind alle Killer-dApps?