[PYTHON] Ich war an Diagrammen interessiert und habe versucht, sie mit einer Flasche zu umwickeln

Was sind Diagramme?

Es ist eine Software, die mit Python ein Architekturdiagramm zeichnen kann.

https://diagrams.mingrammer.com

Vor ein paar Tagen wollte ich etwas wie das Folgende an meinen Augen tun, was die Motivation war, die ich machte.

<img src='http://localhost:8080/?
with Diagram("Grouped Workers", show=False, direction="TB"):
    ELB("lb") >> [EC2("worker1"),
                  EC2("worker2"),
                  EC2("worker3"),
                  EC2("worker4"),
                  EC2("worker5")] >> RDS("events")

Vorerst werde ich es endlich schaffen

Ich habe ungefähr 10 Stunden lang gerungen und es geschaffen. Der vollständige Quellcode ist das folgende Repository.

https://github.com/tamuto/diagrams-server

Kompilieren Sie Python-Code

In erster Linie stellt sich die Frage, wie der in der URL übergebene Python-Quellcode kompiliert werden kann. ist. Es ist in Ordnung, es von query_string abzurufen, aber Sie müssen es formatieren und dann kompilieren. Ich habe yapf als Bibliothek benutzt.

ZU LÖSENDES PROBLEM: Es muss überhaupt kein Zeilenvorschubcode in query_string vorhanden sein

Ich hatte geplant, dass sie es beschreiben, einschließlich der Importanweisung, wie sie in Beispielen angegeben ist. Es wurde jedoch an query_string angehängt, wie `... import EC2from ...` ``, und selbst wenn es formatiert war, konnte es (offensichtlich) nicht getrennt werden.

Ändern Sie Argumente mit AST

Hier konnten wir das erwartete Verhalten umsetzen. Mit NodeTransformer neu schreiben, kompilieren und mit exec ausführen. Ich habe eine Fehlermeldung erhalten, dass kein Leinen unterwegs war, aber ich habe es sicher mit `ast.fix_missing_location `gelöst. (Ich glaube das habe ich getan ...)

Fordern Sie zwangsweise ein Symbol an ...

Wenn Sie mit svg ausgeben, wird eine Symbolanforderung separat generiert. Ich habe es gewaltsam mit Flask's Route verarbeitet. (Da es im Docker läuft, sollte es erlaubt sein !?)

Andere Probleme

Ich habe mein Bestes versucht, um es zu schaffen, aber ich denke, es gibt verschiedene Probleme.

Normalerweise sollte es als Problem geschrieben werden ...

Aus irgendeinem Grund beeilte ich mich, es mit einem Zeitfahrgefühl zu veröffentlichen. Danach möchte ich mich hinsetzen und antworten.

Recommended Posts

Ich war an Diagrammen interessiert und habe versucht, sie mit einer Flasche zu umwickeln
Ich habe Linebot mit Flasche (Anaconda) + Heroku ausprobiert
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe Flask mit Remote-Containern von VS Code ausprobiert
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Arbeitsnotiz, die ich i18n mit Flask App ausprobiert habe
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich wollte den Motor mit einer Raspeltorte laufen lassen, also habe ich versucht, das Motor Driver Board von Waveshare zu verwenden
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, die Windows 10-Festplatte durch eine kleinere SSD zu ersetzen
Ich habe versucht, den DRF-API-Anforderungsverlauf mit django-request zu speichern
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Ich habe versucht, mit PyCaret zu clustern
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, es zu erweitern, damit die Datenbank mit der Analysesoftware von Wiire verwendet werden kann
Ich bin mir über den Unterschied zwischen Modulen, Paketen und Bibliotheken nicht sicher und habe versucht, sie zu organisieren.
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part2 zu bedienen
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe eine Kreuzvalidierung basierend auf dem Rastersuchergebnis mit scikit-learn versucht
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht, E-Mails vom Sakura-Server mit Flask-Mail zu senden
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part1 zu bedienen
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, den DNN-Teil von OpenPose mit Chainer-CPU auszuführen
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe Diagramm als Code (Diagramme) ausprobiert, mit dem der Konfigurationsdiagrammcode verwaltet werden kann
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe die Naro-Roman-API 2 ausprobiert
Ich habe versucht, Sätze mit summpy zusammenzufassen
Ich habe maschinelles Lernen mit liblinear versucht
Ich habe versucht, WebScraping mit Python.
Führen Sie die App mit Flask + Heroku aus
Ich habe versucht, Essen mit SinGAN zu bewegen
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Ich habe versucht, DeepPose mit PyTorch zu implementieren