hallo!
Ich möchte ein Python-Programm in ein html-Dokument einbinden und es im Browser laufen lassen.
Wie das Serverseitig geht, weiß ich und hab ich per CGI mit Apache auch hinbekommen.
Doch lieg das Pythonprogramm ja auf dem Server und wird auch auf dem Server ausgeführt und nur die Ergebnisse werden dann zum Client gesendet und dort angezeigt.
Da das Python-Programm aber recht CPU-intensiv ist, will ich, dass es vom Client ausgeführt wird. Es kann aber nicht vorrausgesetzt werden, dass der Client auch Python installiert hat.
Ich möchte also eine kompilierte Version (oder bei Pyhton: eine interpretierte Version, wenn man das so nennen kann) in das html-Dokument einbinden.
Wie bekomm ich das hin?
Nochmal zusammengefasst, was passieren soll:
Ich schreibe ein Python-Programm, stell es auf meine Internetseite und verlink es mit einem Button.
Der Nutzer schaut sich die Internetseite an, drückt auf den Button und soll das Ergebnis im Browser angezeigt bekommen.
Der Nutzer hat Python nicht installiert, das Programm soll aber von seinem Rechner bearbeitet werden.
Gruß
Paul
pyhton-Programm in html einbinden
Um dass so umzusetzen brauchst du einen Python Implementation in Javascript. Wesentlich sinnvoller und einfacher wäre es allerdings einfach den Client Teil in Javascript zu schreiben, deine "Lösung" dürfte sehr ineffizient sein und sehr viel Traffic kosten.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@Peak_me: Kurzfassung - geht nicht.
Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
Warum muss das Programm überhaupt im Browser laufen? Stell' es doch einfach als "normales" Programm zum Download bereit. Für Windows müsstest du dann eine fertige .exe Datei bauen, unter Linux kannst du zumindest bei den halbwegs aktuellesn Distros voraussetzen, dass Python installiert ist. Wie's bei MacOS steht weiß ich nicht...
Gruß, noisefloor
@Peak_me: Kurzfassung - geht nicht.
Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
Warum muss das Programm überhaupt im Browser laufen? Stell' es doch einfach als "normales" Programm zum Download bereit. Für Windows müsstest du dann eine fertige .exe Datei bauen, unter Linux kannst du zumindest bei den halbwegs aktuellesn Distros voraussetzen, dass Python installiert ist. Wie's bei MacOS steht weiß ich nicht...
Gruß, noisefloor
Dann muß der Browser den Interpreter zur Verfügung stellen. Macht er - bei JavaScript.Peak_me hat geschrieben:Nochmal zusammengefasst, was passieren soll:
Ich schreibe ein Python-Programm, stell es auf meine Internetseite und verlink es mit einem Button.
Der Nutzer schaut sich die Internetseite an, drückt auf den Button und soll das Ergebnis im Browser angezeigt bekommen.
Der Nutzer hat Python nicht installiert, das Programm soll aber von seinem Rechner bearbeitet werden.
Python in Browsern fände ich auch nett, gibt's aber (noch) nicht.
Also: Lern' JavaScript und schreib' Dein Programm darin. Hab' ich schon mal gemacht. Funktioniert recht gut.
Gruß
Wobei das "CPU intensiv" bedeutet, dass der Browser blockiert wird, wenn man das Programm nicht entsprechend schreibt oder sich als Zielgruppe auf Browser beschränkt, welche die Webworker-API kennen.
Neben JavaScript könnte man sich auch CoffeeScript anschauen.
Neben JavaScript könnte man sich auch CoffeeScript anschauen.
"Genug Leute" ist relativ und die kann man grösstenteils ignorieren.noisefloor hat geschrieben:Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Grundsätzlich kann man die ignorieren, das stimmt.DasIch hat geschrieben:"Genug Leute" ist relativ und die kann man grösstenteils ignorieren.noisefloor hat geschrieben:Grundsätzlich kannst du so wie so nicht davon aussgehen, dass irgendwas außer HTML im Browser läuft. Es gibt auch genug Leute, die JavaScript deaktiviert haben.
Gruß, noisefloor
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Geht mir auch so/me hat geschrieben:Ich komme mir ignoriert vor ...noisefloor hat geschrieben:Grundsätzlich kann man die ignorieren, das stimmt.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Me Toocofi hat geschrieben:Geht mir auch so/me hat geschrieben:Ich komme mir ignoriert vor ...noisefloor hat geschrieben:Grundsätzlich kann man die ignorieren, das stimmt.
JavaScript im Browser aufgrund diffuser Ängste abschalten, aber vorschlagen, bedenkenlos ein Python-Programm zu laden und auf dem eigenen Rechner auszuführen? Das geht doch nicht zusammen. Da vertraue ich aber definitiv eher der Sandbox von Chrome als einem beliebigen Programmautor.
Zudem: JavaScript in Chrome ist viel schneller als Python was die reine Ausführungsgeschwindigkeit angeht. Natürlich kann man dort keine in anderen Sprachen geschriebenen Bibliotheken einbinden und auch in Sachen Arithmetik ist Python mit beliebig genauen Ganzzahlen, komplexen Zahlen und Brüchen JavaScript überlegen. Mit Hilfe des Web-Worker-APIs kann man dafür einfach und effizient parallele Berechnungen anstellen. In Python muss man mehrere Prozesse starten - was zugegebenermaßen mit dem multiprocessing-Modul recht einfach ist. Dennoch, es ist mehr Overhead. Ach, uns sollte man auch gleich noch etwas Zeichnen oder anderswie darstellen wollen: Der Browser bietet mit Canvas, SVG und HTML eine plattformübergreifende Lösung, statt auf jeder Plattform ein spezielles GUI-Rahmenwerk installieren und erlernen zu müssen.
Also: Go, JavaScript!
Stefan
PS: Mit Node.js kann man's auch auf dem Server einsetzen
Zudem: JavaScript in Chrome ist viel schneller als Python was die reine Ausführungsgeschwindigkeit angeht. Natürlich kann man dort keine in anderen Sprachen geschriebenen Bibliotheken einbinden und auch in Sachen Arithmetik ist Python mit beliebig genauen Ganzzahlen, komplexen Zahlen und Brüchen JavaScript überlegen. Mit Hilfe des Web-Worker-APIs kann man dafür einfach und effizient parallele Berechnungen anstellen. In Python muss man mehrere Prozesse starten - was zugegebenermaßen mit dem multiprocessing-Modul recht einfach ist. Dennoch, es ist mehr Overhead. Ach, uns sollte man auch gleich noch etwas Zeichnen oder anderswie darstellen wollen: Der Browser bietet mit Canvas, SVG und HTML eine plattformübergreifende Lösung, statt auf jeder Plattform ein spezielles GUI-Rahmenwerk installieren und erlernen zu müssen.
Also: Go, JavaScript!
Stefan
PS: Mit Node.js kann man's auch auf dem Server einsetzen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Grundsätzlich stimme ich zu, aber
Qt existiert.sma hat geschrieben:Der Browser bietet mit Canvas, SVG und HTML eine plattformübergreifende Lösung, statt auf jeder Plattform ein spezielles GUI-Rahmenwerk installieren und erlernen zu müssen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das ging auch schon mit Rhinosma hat geschrieben:PS: Mit Node.js kann man's auch auf dem Server einsetzen
Dass ich es ausgeschaltet habe hat schlicht damit zu tun, dass ich finde eine Website sollte sich es verdienen JS zu nutzen. Es gibt schlicht zu viele Seiten, die sich und ihre Beduerfnisse ueber die des Users stellen.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ich schliesse mich da cofi an. Es sind keine diffusen Ängste sondern die reale Beobachtung, dass bei eingeschaltetem JavaScript viele Seiten meine CPU auslasten und der Lüfter hoch dreht. Und bei den meisten macht das abschalten von JavaScript anscheinend gar keinen Unterschied ausser dem, dass die CPU nicht mehr ackern muss. Da kommen dann zwar keine diffusen Ängste hoch, aber schon die Verwunderung darüber, wofür die eigentlich Rechenzeit ziehen.
Ich habe deshalb jedenfalls JavaScript grundsätzlich erst einmal ausgeschaltet und erlaube es nur auf Site-Basis wenn eine Webseite das auch wirklich benötigt um zu funktionieren. Und im Zweifelsfall überlege ich mir dann schon, ob eine Webseite die ohne JavaScript nicht funktioniert, es wirklich verdient in die Ausnahmeliste aufgenommen zu werden.
Ich habe deshalb jedenfalls JavaScript grundsätzlich erst einmal ausgeschaltet und erlaube es nur auf Site-Basis wenn eine Webseite das auch wirklich benötigt um zu funktionieren. Und im Zweifelsfall überlege ich mir dann schon, ob eine Webseite die ohne JavaScript nicht funktioniert, es wirklich verdient in die Ausnahmeliste aufgenommen zu werden.
Das ging auch schon mit Rhinocofi hat geschrieben:sma hat geschrieben:PS: Mit Node.js kann man's auch auf dem Server einsetzen
Rhino ist im Vergleich langsamer und IMHO zu langsam, um interessant zu sein. Das ist nur dann interessant, wenn man mit Java auf der JVM interoperieren will. Außerdem kann Rhino nicht ein 5 Zeilen einen HTTP-Server aufsetzen, sondern bräuchte die übliche Java-Servlet-Architektur als Basis.
An Leonidas: Ich schrieb "statt auf jeder Plattform ein spezielles GUI-Rahmenwerk" und Qt ist IMHO so ein spezielles GUI-Rahmenwerk. Ich kann meiner Python-Anwendung nicht eine Qt-Bibliothek beilegen, die dann auf jeder Plattform läuft, sondern es gibt jeweils ein Qt für Windows, Linux, usw. Und wenn die Anwendungen gut aussehen sollen, dann müssen sie auch für jede Plattform nach deren Richtlinien entwickelt werden. Das fängt damit an, dass auf dem Mac der OK-Button auf der anderen Seite von Cancel steht als bei Windows und endet mit der passenden Bildsprache, also wie z.B. die Icons aussehen (die Icons von Eclipse sind z.B. ein Grund, warum die Anwendung trotz nativer Steuerelemente immer wie ein Fremdkörper unter OS/X wirkt). Im Browser haben Anwendungen erstens weniger Chrome und zweitens ist die Erwartungshaltung eine andere -- sie haben mehr Freiheiten,was die grafische Gestaltung angeht.
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich erwarte eigentlich dass die Dialoge etc die entsprechenden Icons und Widget-Anodnungen schon mitbringen. Also GTK hat Stock-Icons, damit sollte es durchaus möglich sein, einfach die Gewünschte Art von Icon zu wählen und das Toolkit sucht, ggf. nach Konsultation mit dem aktuellen Theme des Users, das richtige Icon raus.sma hat geschrieben:Das fängt damit an, dass auf dem Mac der OK-Button auf der anderen Seite von Cancel steht als bei Windows und endet mit der passenden Bildsprache, also wie z.B. die Icons aussehen (die Icons von Eclipse sind z.B. ein Grund, warum die Anwendung trotz nativer Steuerelemente immer wie ein Fremdkörper unter OS/X wirkt).
Und du hast auch unterschlagen dass gerade Google Chrome unter *jeder* Platform wie ein Fremdkörper ausschaut.sma hat geschrieben:Im Browser haben Anwendungen erstens weniger Chrome und zweitens ist die Erwartungshaltung eine andere -- sie haben mehr Freiheiten,was die grafische Gestaltung angeht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Da ich (gefühlt) 10h am Tag auf Chrome schaue, fällt mir das nicht so auf. Das die Tabs ein bisschen zu spitz für OS/X sind, ist verschmerzbar und das sie nach oben gehen (wie die Safari Beta es auch noch konnte) finde ich sogar besser. Die 3 Icons links der Omnibar und der Schraubenschlüssel recht davon, sind schlicht genug und mehr Chrom hat Chrome dann ja auch nicht.Leonidas hat geschrieben:Und du hast auch unterschlagen dass gerade Google Chrome unter *jeder* Platform wie ein Fremdkörper ausschaut.
Stefan