> Wie willst Du sicher feststellen das genugen Interesse besteht?
Indem ich hier frage. Jeder ist herzlich eingeladen, so wie volker Schmid sein Interesse zu bekunden.
> Du solltest es veröffentlichen unabhängig von der Menge der Interessebekundungen
Hatte ich zuerst auch gedacht, aber wie gesagt, da es eben (für mich) harte Arbeit war, möchte ich auch sichergehen, dass es sich lohnt. Außerdem habe ich ja die Version 1.0 schon in diesem Thread veröffentlicht. Diese sieht im Gegensatz zu meiner jetzigen Version 1.1 zwar aus, wie ein Demoprodukt, aber sie verrichtet ihren Dienst ordnungsgemäß. Die kann man unter Linux kompilieren und dann zum Testen auf seinem eigenem Server benutzen. Dann wird man ja wissen, ob man "Appetit auf mehr" hat.
> Vor allem liefere ich dann an den Kunden einige Executables und nicht den Source, richtig?
Nein.
Du lieferst nur den Source. Um eine Browseranfrage nach einer .pb-Datei zu erfüllen, wird bei jeder Anfrage die .pb-Datei
on the fly kompiliert. Dein Source fungiert deshalb als eine Art Skript, weil mein PB Interpreter dein Programm mit
ReadProgramData() ausliest. Dafür muss deine .pb-Datei allerdings eine Konsole mit
OpenConsole() öffnen und darauf seine Ausgabe schreiben. Diese Konsole ist das gleiche wie in PHP der Kanal 'stdout'. In PHP benutzt du einfach
print oder
echo, in PureBasic benutzt du halt
Print(),
PrintN() oder
WriteConsoleData().
Es gibt keinen anderen Weg, den stdout-Kanal deines Sources (welches ja zur Laufzeit bei jedem Aufruf kompiliert wird) abzufangen und an Apache weiterzuleiten. Aber hinter genau dieser Idee steht ja CGI (Common Gateway Interface). CGI ist die Schnittstelle zwischen Apache und Dritthersteller-Programmen. Über CGI können fremde Programme und Sprachen dynamische Inhalte generieren, die an Apache weitergegeben werden. Auch PHP und Perl nutzen CGI, um den dynamisch generierten Content an Apache weiterzuleiten, genau so wie mein PB Interpreter.
Genau so, wie bei jeder Apache-Distribution ein PHP- und Perl-Interpreter gehört, genauso muss auch PureBasic nachträglich zu jedem Apache/zu jedem Webspace hinzuinstalliert werden, damit der Kompiler von PB als Interpreter 'missbraucht' werden kann. Das hört sich komplizierter an, als es ist: Es genügt, die PB-Installation zu entpacken, 'wie sie ist' auf den Server hochzuladen und den PB Interpreter (welcher eine Standalone-EXE ist) in das PB-Verzeichnis zu packen. Der Interpreter kümmert sich schon selbst um den richten Aufruf des Kompilers, das löschen des Executables hinterher, usw. Wie schon oft erwähnt, nutzt die neue Version 1.1 die Strategie, das Executable nach Ausführung zu behalten, damit man nicht immer neu kompilieren muss (was die größe Performance-Schwachstelle von Version 1.0 ist; zum Testen reicht 1.0 aber dennoch).
Der Eigentliche Installationsaufwand liegt eher darin, dem PB-Verzeichnis und dem Interpreter die nötigen CHMOD-Rechte zu geben, denn bei mir ist es so, dass mein Webspace nicht von Haus aus das Recht hatte, auf das hochgeladene PB-Verzeichnis zuzugreifen. Mittlerweile weiß ich warum (mod_suexec von Apache). Außerdem musste ich auf meinem Server für Linux noch einige Libs installieren, auf die PB zugreift. Da hatte ich meine erste Schützenhilfe, wovon ich euch natürlich auch profitieren lasse.
> Wie ist das mit inline-html?
Nein, so nicht. Eine HTML-Seite wird komplett in PureBasic-Syntax geschrieben. Alle Ausgaben werden in eine geöffnete Konsole geschrieben. Diese Datei sieht aus, wie jedes andere Programm, dass du in deine PB IDE schreibst.
Eine Hallo-Welt-Seite sähe so aus:
Code: Alles auswählen
#!/pb/interpreter -w
OpenConsole()
PrintN("Content-Type: text/html")
PrintN("")
Print("<html>")
Print("<head>")
Print("<title>Meine PureBasic-Seite</title>")
Print("</head>")
Print("<body>")
Print("<h1>Hallo Welt!</h1>")
For n=1 To 5
Print("<br>") ; ein paar Zeilenumbrüche
Next
Print("Ich wurde mit PureBasic erstellt.")
Print("</body>")
Print("</html>")
Dies wird, so wie es hier steht, als .pb-Datei gespeichert. Ruft jemand diese Seite auf, so sieht er genau das gleiche, wie du, wenn du diesen Code manuell in deine PB IDE kopierst und ausführst (in dem Fall geht die Konsole automatisch wieder zu, um etwas zu sehen stelle ein
Input() ans Ende des Codes, wenn du es manuell in der IDE testest).
Alles bis auf die erste Zeile ist reine PB-Syntax. Die erste Zeile ist allerdings für Apache reserviert, denn dort steht ja der Pfad zum PB-Interpreter. Damit diese Zeile keinen Syntax-Error beim Kompilieren erzeugt, ist es die Aufgabe meines Interpreters, diese Zeile vor dem Kompilieren zu entfernen. Deswegen kopiert der PB Interpreter jede .pb-Datei intern noch einmal und kompiliert dann diese Kopie. Diese Kopie wird, wie schon erwähnt, automatisch wieder gelöscht.
Sie dir vielleicht auch mal meine Startseite an:
www.and51.de
Vergleiche den Quelltext mit dem eigentlichen PB-Code, der hinter dieser Seite steckt:
Code: Alles auswählen
#!/pb/interpreter -w
OpenConsole()
PrintN("Content-Type: text/html")
PrintN("")
Print("<tt><center>AND51")
For n=1 To 10
Print("<br>")
Next
Print("<small>generated by PureBasic in "+GetEnvironmentVariable("PB_Interpreter_CreationTime")+" ms</small></center>")
Noch ein kleiner Hinweis: Die Vollversion von PB darfst du nur auf Server kopieren, die dir auch gehören (Lizenz). Nur du darfst diese PB Distribution benutzen.
Möchtest einen Kunden beglücken, dessen Server dir nicht gehört, darfst du laut Lizenz die Vollversion dort nicht installieren. Allerdings ist die Demoversion frei für jeden, also kannst du auch die Demoversion benutzen.
Das ist jedenfalls mein persönliches Verständnis der PB Lizenz. Bei Risiken und Nebenwirkungen fragen Sie freak oder lesen Sie die Anwenderlizenz.
