[PYTHON] Fortsetzung: Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen

■ Einführung

Letztes Mal habe ich das Blockdiagramm-Generierungswerkzeug blockdiag in CentOS6.5 eingeführt.

Dieses Mal werde ich die Tipps beschreiben, wenn Sie es über den Webserver verwenden.

■ Prämisse

■ Übersicht

-Wenn der Befehl blockdiag im Skript definiert ist, wird davon ausgegangen, dass er vom Benutzer / der Gruppe "Apache" ausgeführt wird.

-Es ist erforderlich, dem Apache-Benutzer oder der Apache-Gruppe eine Schreibberechtigung für das Ziel der Blockdiagrammgenerierung zu erteilen.

-Wenn der Befehl blockdiag ausgeführt wird, muss die Schriftart explizit angegeben werden, da sie vom Apache-Benutzer ausgeführt wird.

■ Zielverzeichnis ausgeben

Aus dem Standarddokumentstamm

# mkdir /var/www/html/data
# chown .apache /var/www/html/data

■ Beispielskript

# vi /var/www/html/index.php
--------------------
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>BlockDiag Online</h1>
<form action='index.php' method='post'>
<textarea name='text' cols='120' rows='20'>
blockdiag admin {
   // Set M17N text using label property.
   A [label = "Ki"];
   B [label = "Akzeptiert"];
   C [label = "Wende"];
   D [label = "Fazit"];

   A -> B -> C -> D;

   // Use M17N text directly (need to quote).
Frühling->Sommer-->Herbst->Winter;

   // Use M17N text including symbol characters (need to quote).
   "Der Frühling bricht an" -> "Sommer-=Nacht" -> "Herbst.Abend" -> "Winter&sich anstrengen";
}
</textarea>
<hr />
<input type='submit' value='Umwandlung' />
</form>

<?php
  if (isset($_POST['text'])){
    //Pfad definieren usw.
    $dir = "data/";
    $font = "/usr/share/fonts/ipa-gothic/ipag.ttf";
    $filename = sprintf("svg%04d",mt_rand(0,9999));
    $fd = sprintf("./{$dir}%s.diag",$filename);
    $ff = sprintf("./{$dir}%s.svg" ,$filename);
    $text = $_POST['text'];
    
    //Blockdiagramm erstellen
    file_put_contents($fd,$text);
    
    //Blockdiag-Befehlsausführung
    $command = sprintf("blockdiag -f {$font} -Tsvg %s",$ft);
    $Err = `$command`;
    printf("command: %s<br />",$command);
    print "<hr />";
    
    if (file_exists($ff)) {
      echo "$ff existiert<br />";
      printf("ff: %s<br />",$ff);
      print "<img src=\"{$ff}\" />";
    } else {
      echo "<span style='color:#ff0000;'>$ff existiert nicht. Scheint nicht generiert zu haben<br />";
      echo "Bei Erfolg wird die folgende SVG-Datei generiert</span><br />";
      print "<img src=\"/cp_root/nippon.svg\" />";
    }
  }
?>
</body>
</html>

Ausführungsberechtigung erteilen

# chmod 755 /var/www/html/index.php

■ Vom Browser ausführen

http://example.com/index.php

20141008_blockdiag_sample01.png


▽ Konvertierungsergebnis

20141008_blockdiag_sample02.png

■ Überprüfen Sie die generierte Datei

# ls -l /var/www/html/data/svg5038.svg
-rw-r--r--1 Apache Apache 7465 8. Oktober 20:04 2014 /var/www/html/data/svg5038.svg

Ich denke, dass der Inhalt für den tatsächlichen Gebrauch ein wenig nützlich geworden ist.

Das ist es.

Recommended Posts

Fortsetzung: Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen
Ich habe versucht, das Blockdiagramm-Generierungswerkzeug blockdiag einzuführen
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, den Befehl umask zusammenzufassen
Ich versuchte das Weckwort zu erkennen
Ich habe das OSS-Visualisierungstool superset ausprobiert
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich habe Web Scraping versucht, um die Texte zu analysieren.
Ich habe versucht, beim Trocknen der Wäsche zu optimieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Qiita Job Ich habe versucht, den Job zu analysieren
LeetCode Ich habe versucht, die einfachen zusammenzufassen
Ich habe versucht, das Problem des Handlungsreisenden umzusetzen
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Als ich versuchte, Python3 in Atom einzuführen, blieb ich stecken
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Fortsetzung ・ Ich habe versucht, Slackbot zu erstellen, nachdem ich Python3 studiert habe
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, Pytest in die eigentliche Schlacht zu bringen
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Methode zur Mittelung der Dollarkosten zu simulieren
Ich habe versucht, die nicht negative Matrixfaktorisierung (NMF) zu wiederholen.
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
[Python] Ich habe versucht, das Array, die Wörterbuchgenerierungsmethode, die Schleifenmethode und die Listeneinschlussnotation zusammenzufassen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe ein Tool erstellt, um automatisch ein einfaches ER-Diagramm aus der Anweisung CREATE TABLE zu generieren
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, die Umrisse von Big Gorilla herauszufinden
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
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, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, die Uhrzeit und das heutige Wetter anzuzeigen
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen