2016-03-24 6 views
4

Ich entwickle eine Clojure-Anwendung, die Bilder aus dem Internet herunterlädt und sie nach bestimmten Kriterien analysiert.Testausgabe von Clojure-Funktionen visuell in einem Browser

Was auch immer das bedeuten mag, der wichtige Teil ist, dass es in der App einige ziemlich teure Funktionen geben wird, die eine Weile dauern, bis sie verarbeitet werden.

Am Ende wird es eine API geben, die die Funktionalität der App einem Web-Frontend zur Verfügung stellt. Dies soll jedoch ein zweiter Schritt sein.

Da die App viel mit Grafiken zu tun hat, ist es sinnvoll, die Ausgaben der Funktionen zu visualisieren, die ich während des Entwicklungsprozesses schreibe. Grundsätzlich suche ich nach einer einfachen Möglichkeit/Umgebung um dies zu archivieren. Genauer gesagt: Wann immer ich eine neue Funktion erstellt habe, möchte ich ihre Funktionalität in einem Browser testen: z. Zeichnen Sie die Ausgabe, zeichnen Sie einige Zwischenschritte, erstellen Sie vielleicht kleine interaktive Skripte, die mir helfen zu überwachen, dass die Algorithmen das tun, was ich beabsichtige. Hinweis: Ich möchte die Funktionen nicht in ClojureScript umwandeln und sie im Browser laufen lassen, der Browser sollte nur ein "Display" sein.

Einige Ansätze, die mir in den Sinn kam:

  • ein wenig Back-End-Server schreiben, die alle Funktionen eines Namespace aussetzt. Das Front-End könnte also auf all diese Funktionen zugreifen, indem es einfach eine Ajax-Anfrage an den Server sendet, die die Funktion und ihre Parameter in einer Zeichenkette oder vielleicht besser im Edn-Format enthält. Das Back-End empfängt die Anforderung, ruft die angeforderte Funktion auf und sendet das Ergebnis zurück, sobald die Berechnung abgeschlossen ist. Gibt es vielleicht schon ein Projekt, das genau das tut?

  • Verwenden eines Projekts wie "Gorilla Repl" Dies wäre eine gute Option, und vielleicht werde ich es verwenden. Allerdings konnte ich noch nicht herausfinden, ob der Mechanismus eine Möglichkeit zur interaktiven Beeinflussung der gerenderten Ausgaben bietet. Es funktioniert eher als ein Arbeitsblatt mit statischen Renderings.

Wie würden Sie das tun? Irgendwelche Vorschläge werden geschätzt.

+1

Werfen Sie einen Blick auf https://github.com/bhauman/devcards – nha

Antwort

0

Ich habe an ähnlichen Problemen gearbeitet und ich denke, dass Sie die Kombination von Lighttable + Clojure + Nerdy-painter (Plugin) verwenden könnten.

Mit Nerdy-Painter können Sie Bilder auf Lighttable (IDE) anzeigen. Sehr nützlich für die Datensuche oder alles, was mit Grafiken/Plots zu tun hat.

Haftungsausschluss: Ich bin der Autor von Nerdy-Maler, immer noch denke ich, dass die schnellste/eleganteste Lösung diejenige ist, die ich oben beschrieben habe. Alle anderen Lösungen fügen (IMHO) zu viel Aufwand in den Entwicklungszyklus ein.

0

Eine Möglichkeit besteht darin, einen Jupyter-Clojure-Kernel zu verwenden, um mit Clojure zu interagieren. Jupyter wird in einem Browser ausgeführt und Sie können benutzerdefinierte Bindungen hinzufügen, um den Zugriff auf das DOM zu vereinfachen.

Hier ist ein clojure kernel: https://github.com/roryk/clojupyter

Verwandte Themen