Seite 1 von 1
Wurstmaschine
Verfasst: Mittwoch 24. November 2010, 12:17
von 1-1-1
Der Titel erschließt sich erst, wenn ihr das Ergebnis betrachtet. Ich wollte auch nicht die nächste Variante einer Template-Sprache sondern nur Python und HTML mischen.
Vorbedingungen:
- Muß auf 2.4.x funzen (1)
- Vorerst keine OO in Quelltext (2)
- Quelltexte landen mal in Datenbank
- Kapselung (Import würde auf Anwendungen beschränkt)(3)
Nun ein "Template"
Code: Alles auswählen
titel="Wurstmaschine"; variante="0.1"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" \
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>%s</title>
<meta name="generator" content="%s %s">
</head>
club='"<b><u>A</u></b>nonyme <b><u>A</u></b>normale"'
mitglieder =\
(("Anton","Tirol","Ist in seine Ziege verliebt"),\
("Emma","München","Prügelt gerne ihren Mann"),\
("Guido","Bad Honnef","Würde immer noch FDP wählen ;-)"))
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" alink="#00FF00" vlink="#FF00FF">
<p>Der erste Versuch mit der <b>%s</b></p>
<p>\
Willkommen bei %s\
</p>
<ul>
~ % (titel,titel,variante,titel,club)
for x in mitglieder :
<li>Mitglied: %s aus: %s - %s</li>
~ % x
</ul>
</body>
</html>
- Jede HTML-Zeile beginnt mit "<", was nebenbei ordentlicher Stil wäre.
- Diese können auch (Python-Like) mit "\" verlängert werden.
- Python und HTML behalten ihre eigene Einrückung.
- Mit "~" oder anderen beliebigen Zeichen wird die HTML-Ausgabe angeregt.
- "~" muß syntaktisch richtig eingerückt sein.
- Parameter werden entspr. PRINT angehängt (RE-Fans aufgepaßt).
Hier das Progrämmchen. Das ist nur ein Beispiel, die Idee ist die Quelltextvermischung!
Code: Alles auswählen
# 11 Leere Liste - Puffer
t=[]; puffer=''
# 12 Zeilen rein - gleich verbinden
f=open('template.html','r')
try:
for z in f:
while z.rstrip().endswith('\\') : z=z[:z.rfind('\\')]+f.next().lstrip()
t.append(z) # schoen Zeile fuer Zeile
finally:
f.close()
t.append('') # Notbremse
# 13 Und raus damit
f=open('ergebnis.py','w')
for z in t:
h=z.lstrip()[:1]
if h=='<' : puffer=puffer+z
else :
if (z=='' or h=='~') and puffer :
p=z.find('~')
while puffer.endswith('\r') or puffer.endswith('\n') : puffer=puffer[:-1]
z=z[:p]+'print """'+puffer+'"""'+z[p+1:]
puffer=''
f.write(z)
f.close()
Und das kommt dann raus, wenn ergebnis.py ausgeführt wurde:
Der erste Versuch mit der
Wurstmaschine
Willkommen bei "
Anonyme
Anormale"
- Mitglied: Anton aus: Tirol - Ist in seine Ziege verliebt
- Mitglied: Emma aus: München - Prügelt gerne ihren Mann
- Mitglied: Guido aus: Bad Honnef - Würde immer noch FDP wählen

Nur mal zur Diskussion (4)
Ideen zur Template-Gestaltung sind gefragt!
(1) Wegen Webspace bei Kunden und den richtigen Umstieg mache ich eh später auf 3.x
(2) siehe (1) und die Trennung der "Templates" ist noch offen
(3) Alle notwendigen/erlaubten Importe werden von der Umgebung geliefert!
(4) Funzt z.Zt. schon in einem Webshop mit Anbindung mySQL
Re: Wurstmaschine
Verfasst: Mittwoch 24. November 2010, 14:40
von /me
1-1-1 hat geschrieben:Hier das Progrämmchen. Das ist nur ein Beispiel, die Idee ist die Quelltextvermischung!
Mir ist nicht ganz klar, warum du etwas implementieren möchtest von dem man froh ist, dass man es nicht hat.
Re: Wurstmaschine
Verfasst: Mittwoch 24. November 2010, 23:21
von 1-1-1
Mir ist nicht ganz klar, warum du etwas implementieren möchtest von dem man froh ist, dass man es nicht hat.
* Damit nich' sowas passiert wie jetzt! Ich kann kein "Quote" in aktuelles PHP-Forum eintragen.
* Damit jeder, der keine Lust auf Installationsorgien hat, mal schnell "Rapid-Styling" bzw. "Prototyping" betreiben darf.
* Damit jeder, der mag, seinen "Indianer" schnell davon überzeugen kann, Python-Scripts so einfach wie PHP auszuführen (mein "Indianer" kann das schon).
* Weil ich einfach keinen Bock habe, mich extra mit einer Template-Sprache zu beschäftigen; ich muß meine Kohle verdienen.
* Damit meine produzierten "Suites" nicht so Sch... ausschauen wie Deine.
* Weil ich viel Zeit im CCC und anderweitig verschwende und nebenbei meine Brötchen verdienen muß, meine "Suites" in ein paar Minuten entstehen.
Wenn Du meine geistigen Ergüsse nicht benötigst, einfach nicht kommentieren; ich will Deine Zeit nicht verschwenden, die Du im Web 2.0 verbringst!
Meine Anfrage war:
Wie kann ich die Integration des "~" besser implementieren. Die ständige Verfolgung der syntaktischen Einrückung war mir zu stressig.
Ggf. hättest Du da einen Vorschlag!
Gute Nacht
Michael
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 08:19
von /me
1-1-1 hat geschrieben:Meine Anfrage war:
Wie kann ich die Integration des "~" besser implementieren. Die ständige Verfolgung der syntaktischen Einrückung war mir zu stressig.
Wenn das deine Frage war, dann hättest du sie stellen sollen. Ich habe da ein "Nur mal zur Diskussion" gelesen.
Aber keine Sorge, ich werde mich da nicht mehr einmischen. Ein Diskussionsstil der Art "Ich bin aber im CCC" und "Du bist ja nur im Web 2.0 unterwegs (und hast deshalb keine Ahnung)" wird definitiv nicht zu produktiven Ergebnissen führen.
BTW, ich bin ebenfalls im CCC und du wirst mich im "Web 2.0" nirgends finden.
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 08:46
von Leonidas
1-1-1 hat geschrieben:* Damit nich' sowas passiert wie jetzt! Ich kann kein "Quote" in aktuelles PHP-Forum eintragen.
Uhm, vielleicht mal BBCode einschalten?
1-1-1 hat geschrieben:* Damit jeder, der keine Lust auf Installationsorgien hat, mal schnell "Rapid-Styling" bzw. "Prototyping" betreiben darf.
Also Jinja2 und Co sind bei vielen Distributionen dabei, von Installationsorgien ist wohl kaum zu sprechen, finde ich zumindest.
1-1-1 hat geschrieben:* Damit jeder, der mag, seinen "Indianer" schnell davon überzeugen kann, Python-Scripts so einfach wie PHP auszuführen (mein "Indianer" kann das schon).
Du weißt dass es viele solche Ansätze für Python gab, etwa Spyce, Karrigell oder auch mod_python PSP? Sind letztendlich alle gescheitert. Ich habe selbst so mal angefangen und festgestellt dass mir der PHP-Ansatz gar nicht passt.
1-1-1 hat geschrieben:* Weil ich einfach keinen Bock habe, mich extra mit einer Template-Sprache zu beschäftigen; ich muß meine Kohle verdienen.
Ich verdiene auch Geld. Effizienter sogar, weil ich die Template-Engine nicht erstmal selbst schreiben muss... zudem kann ich die Templates dann an "Designer" weiterreichen die dann ihren Kram damit machen.
1-1-1 hat geschrieben:* Damit meine produzierten "Suites" nicht so Sch... ausschauen wie Deine.
Also persönlicher Angriff... warum so gereizt?
1-1-1 hat geschrieben:* Weil ich viel Zeit im CCC und anderweitig verschwende und nebenbei meine Brötchen verdienen muß, meine "Suites" in ein paar Minuten entstehen.
Ich verschwende auch viel Zeit in Münchner CCC, das heißt ja aber nicht dass ich das Rad neu erfinde.
Wenn Du meine geistigen Ergüsse nicht benötigst, einfach nicht kommentieren; ich will Deine Zeit nicht verschwenden, die Du im Web 2.0 verbringst!
1-1-1 hat geschrieben:Meine Anfrage war:
Wie kann ich die Integration des "~" besser implementieren. Die ständige Verfolgung der syntaktischen Einrückung war mir zu stressig.
Ggf. hättest Du da einen Vorschlag!
Eine Möglichkeit wäre die Einführung von Blockmarkern wie { und }, das hat etwa Spyce gemacht, wenn ich mich richtig erinnere.
"Wurstmaschine" kann Stecker gezogen (geschlossen) werden
Verfasst: Donnerstag 25. November 2010, 14:30
von 1-1-1
Habe
Wurstmaschine bereits zu 50% mit
web.py "verwurstet"!
Jetzt schauen "Templates" so richtig geil aus; ggf. laufe ich jetzt Gefahr, von Template-Gurus geteert und gefedert zu werden - is' wurscht ;-)
(Python in HTML-Templates bzw HTML im Python-Code und alles ohne "$", sogar PHP und JS lassen sich unterjubeln)
Ergebnis nenne ich dann
WebWurst.PY oder so ...
PS: Jetzt muß ich nur noch "~" loswerden; aber bis jetzt bessere Lösung als Leerzeichen zählen, wie im originalen
web.py
[edith]
@Leonidas
- Uhm, vielleicht mal BBCode einschalten? Ging bei mir nicht wg. Scriptschutz (momentan aus), Danke für Deinen Eingriff
- Jinja2 und Co sind auf einigen Webspaces der Kunden nicht verfügbar
- Spyce, Karrigell oder auch mod_python PSP Habe ich mir angeschaut, nix für mein Vater seinen Sohn. Ich lasse die Interpreter lieber als Daemon laufen.
- Template-Engine nicht erstmal selbst schreiben muss Mein Aufwand hat sich schon rentiert (Teile PHP-Webshop und WaWi umgestrickt)
- warum so gereizt? Wenn ich warum du etwas implementieren möchtest von dem man froh ist, dass man es nicht hat zur Antwort bekomme ... Aus Jux und Tollerei werde ich bestimmt nicht das Rad neu erfinden!
- Ich verschwende auch viel Zeit in Münchner CCC Mein Hinweis auf CCC u.a. bezog sich auf die Selbstdarstellung von "it's /me"; sehenswert ;-)
- Einführung von Blockmarkern wie { und } ist mir zu heftig, dann müßte ich noch auf andere Konstrukte Rücksicht nehmen
- an "Designer" weiterreichen Will ich dann mit IMPORT erschlagen ...
@me
- Wenn das deine Frage war Werde zukünftig [Frage] ... [/Frage] schreiben.
- "Nur mal zur Diskussion" Ich pflege Beiträge vollständig zu lesen und weniger zu schreiben. nicht die nächste Variante einer Template-Sprache war doch eindeutig Das ist nur ein Beispiel bezog sich auf den Quelltextausschnitt, nur die nötigsten Zeilen für Funtionstest Ideen zur Template-Gestaltung sind gefragt! weil es bestimmt besser geht und "~" muß syntaktisch richtig eingerückt sein mir einfach nicht gefällt
- "Ich bin aber im CCC" und "Du bist ja nur im Web 2.0 ... Ergebnis einer zweiminütigen Recherche (das "nur" stammt von Dir)
[/edith]
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 16:56
von jbs
@Leonidas: Was meinst du mit "dabei"?
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 16:56
von derdon
jbs: "in den Repos", vermute ich.
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 17:00
von jbs
@derdon: Ich erinnere mich da noch an eine Diskussion
@1-1-1:
Wie willst du denn noch PHP reinwurschteln?
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 18:20
von BlackJack
@jbs: Jo, ich musste auch an `Tkinter` denken.

"Wurstmaschine" Abgesang
Verfasst: Donnerstag 25. November 2010, 19:43
von 1-1-1
@jbs
Vorab, danke für Ti{p|pp} auf "PEP 8"; ich muß nachsitzen!
Ein "Template" erzeugt eine PY und eine PHP (Webshop braucht noch teilweise die index.php). Die vollständige "Wurstmaschine" ist etwas komplexer.
In einem Fall ergibt "Template" eine PY, die wiederum die Wurstmaschine aufruft und dann bei Bedarf temporär eine PHP erzeugt; ist aber nur für die Übergangszeit erforderlich.
@ALLE
Hat jemand 'ne Idee, wie ich das leidige "~" loswerden kann?
Re: Wurstmaschine
Verfasst: Donnerstag 25. November 2010, 21:11
von Leonidas
jbs hat geschrieben:@derdon: Ich erinnere mich da noch an eine Diskussion

Ok, ich hätte näher spezifizieren sollen: in den Repositories verfügbar. Ansonsten auch trivial über pip und virtualenv beschaffbar, ohne Notwendigkeit Development-Header zu installieren (vielleicht python-dev, Distributionsabhängig).
Abgesang
Verfasst: Dienstag 26. Juli 2011, 10:12
von 1-1-1
Obiges Beispiel der Wurstmaschine darf von jedem geschlachtet werden! Also frei.
WebWurst ist fertig und funzt wunderbar mit Durus. Quelltexte, "Templates", Versionsverwaltung, precompilierte Programme und sogar die Anwenderdaten alles drin.
Wegen obigen Erfahrungen (Zeitersparnis) nicht mehr Open Source.
[edith]
Von web.py blieb leider nichts mehr übrig
[/edith]
Re: Wurstmaschine
Verfasst: Dienstag 9. August 2011, 12:12
von Michael Schneider
Hi 1-1-1,
auch wenn Du das nicht verstehen und mich gleich so wie /me belegen solltest:
/me hat geschrieben:1-1-1 hat geschrieben:Hier das Progrämmchen. Das ist nur ein Beispiel, die Idee ist die Quelltextvermischung!
Mir ist nicht ganz klar, warum du etwas implementieren möchtest von dem man froh ist, dass man es nicht hat.
Also ich halte das für eine ganz normale Frage und keinen persönlichen Angriff auf Dich. Es gibt eine ganze Menge Leute, zu denen auch ich gehöre, die den Mix aus fixem HTML und Programmlogik in einer Datei (wie bei PHP) für unübersichtlich und alles andere als wünschenswert halten. Es gibt viele Ansätze, um diese Mischung zu verhindern, von daher kann ich mich der Frage von /me nur anschließen.
Mag sein, dass Dein Beispiel das Ergebnis bringt, das Du Dir erhoffst. Aber als außen stehender wirkt der Mischmasch auf mich einfach nur verwirrend. Ich kann mir kaum vorstellen, dass man solchen Mix-Code effizient an Andere weitergeben kann, folglich steht der Vorteil des "schnellen Geldverdienens" spätestens beim use und re-use (insbesonderer Zweiter und Dritter) in Frage. Das ist nichts persönliches, aber wenn mein Python-Quellcode irgendwann so "zugemüllt" und unübersichtlich aussieht, ist das für mich das Signal, nochmal from scratch zu beginnen und beim nächsten mal auf mehr Struktur und Ordnung zu achten (mein Python Code, bei Dir geht das wohl nicht anders).
Ein Vorschlag zu den Blöcken, auch wenn Du schon fertig bist: ich fand die Lösung von web2py nicht schlecht, wo ein Block durch den Doppelpunkt der einleitenden Anweisung beginnt und durch ein explizites "pass" beendet wird. Dadurch wird die Einrückung auch überflüssig.
Gruß
Re: Wurstmaschine
Verfasst: Freitag 12. August 2011, 13:57
von Dauerbaustelle
Ich glaub der Typ ist ein Troll.
Re: Wurstmaschine
Verfasst: Samstag 15. Dezember 2012, 13:16
von 1-1-1
@ Michael Schneider
Etwas verspätet: Danke für den Hinweis
> ... "pass"
Manchmal sieht man den Wald ...
Läuft auch schön mit DURUS und (nicht kranklachen) die letzte Version kann auch mit strikter Trennung umgehen. Wahlweise getrennte Dateien oder in einer Datei (mußte irgendwie sein)

Hat einer von euch Erfahrung mit PyPy? Insbesondere der "Standard Interpreter" (Subset) interessiert mich. Den würde ich gerne "härten" bevor ich Skripte auf Nginx loslasse.
Schönes WE
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ... und Deinen Rechner!