Aktuelle Zeit: 22.06.2018 19:07

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 61 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 7  Nächste
Autor Nachricht
 Betreff des Beitrags: PB2Web -- Ein PureBasic zu JavaScript-Konverter
BeitragVerfasst: 04.01.2014 00:29 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Hallo,

hiermit möchte ich Euch die erste öffentlich Alpha-Version von PB2Web vorstellen. :-)

Was ist es?

PB2Web ist ein System, mit dem Ihr Web-Applikationen erstellen könnt. Dabei wird
PureBasic-Code von einem Parser in JavaScript gewandelt, welches dann in Verbindung
mit anderen JavaScript-Libraries (z.B. JQuery) im Webbrowser ausgeführt wird.
Klingt kompliziert? Ist es nicht!

Wie funktioniert es?

PB2Web hier oder hier herunterladen und in einen beliebigen Ordner entpacken. Es wird als Tool
in der IDE eingerichtet (ich habe es mir auf das Tastaturkürzel <Ctrl> + <F5> gelegt).
Dann schreibt ihr 'normalen' PureBasic-Code. Wenn nun PB2Web aufgerufen wird, wandelt
es den PB-Code und kopiert ihn zusammen mit den anderen benötigten Dateien in einen
vorher festgelegten Pfad Eures lokalen Webservers. Hiernach wird der Standardbrowser
aufgerufen, der dann die Web-Applikation startet.

Eine ausführliche Installationsanleitung findet Ihr hier.

Bitte unbedingt beim Ausprobieren beachten:

Ich habe oben 'normalen' PureBasic-Code bewusst in Anführungsstriche geschrieben,
denn bei der Benutzung von PB2Web sind einige Sachen zu beachten. Das liegt vor allem
daran, dass JavaScript (also die Sprache, in die gewandelt wird) einige Eigenarten besitzt,
die man als PureBasic-Programmierer nicht unbedingt kennt.

* Vergesst die Event-Schleife! Ereignisse (also beispielsweise das Drücken eines Buttons
oder das Feuern eines Timer-Events) funktionieren in PB2Web nur, wenn man sie mit den
neuen Bind*() - Befehlen (ab Version 5.20) bindet.
(Wait)WindowEvent() gibt es in PB2Web nicht.

* Achtet auf Groß- und Kleinschreibung! Während für PB myVar und myVAR das gleiche ist,
arbeitet JavaScript case-sensitiv. Für JS sind myVar und myVAR zwei unterschiedliche Variablen.

* Initialisiert Variablen! PB initialisiert Variablen automatisch. JavaScript tut das nicht. Eine
numerische Variable besitzt in PB initial den Wert 0. Ein String ist initial ein Leerstring.
In JS ist das nicht der Fall. Hier haben alle Variablen initial einen Wert 'undefined'

Beispiel:
Code:
; falsch:
Define myString.s
myString + "Hallo"
MessageRequester("", myString) ; gibt 'undefinedHallo' aus

; richtig:
Define myString.s = ""
myString + "Hallo"
MessageRequester("", myString) ; gibt 'Hallo' aus


* Finger weg von Delay()! JavaScript ist eine Programmiersprache, die hauptsächlich
asynchron arbeitet. Blockierende Prozesse werden zumeist mit einer nicht mehr reagierenden
Webseite bestraft. Verwendet anstelle von Delay() lieber Timer.

Wenn Ihr das oben lest, dann versteht Ihr vielleicht, dass es wenig sinnvoll ist, einen x-beliebigen
vorhandenen Code PB2Web zum Fraß vorzuwerfen, um zu schauen, wie das dann im Browser aussieht.
In den meisten Fällen sind Anpassungen und ein wenig Umdenken vonnöten.

Systemvoraussetzungen:

* Ein halbwegs aktuelles Windows-OS (Linux / Mac sind geplant, haben aber keine hohe Priorität)
* PureBasic ab Version 5.20 (wegen den Binding-Befehlen)
* Ein wenig Geduld und Spucke beim Testen der Software ;-)

Einen Webserver (beispielsweise Apache, IIS, oder ähnliches) benötigt man für die ersten
Schritte nicht zwingend. Es wäre aber von Vorteil, wenn ein solcher vorhanden wäre, damit
manche Beispiele (wie z.B. CGI-Test.pb) funktionieren.

Was geht nicht?

Gemessen an der Fülle von PureBasic-Befehlen scheint der bereits umgesetzte Teil relativ
gering zu sein (dennoch habe ich schon die ein oder andere nette Web-Applikation mit diesen
Befehlen erstellen können).

Definitiv nicht umgesetzt sind derzeit folgende Libraries:

AudioCD, Cipher, Clipboard, Database, Dialog, Drag & Drop, File, FileSystem, Ftp, Help, Http, Library,
Mail, Memory, Network, OnError, Packer, Printer, Process, Regular Expression, Runtime, Scintilla,
Serial Port, SysTray, Thread, XML, 2D und 3D Games & Multimedia Libraries.

Dass einige Libs nicht umgesetzt sind, liegt in der Natur der Sache: Im Browser kann man
beispielsweise nicht direkt auf das Filesystem zugreifen. Ebenso sind Datenbank-Zugriffe
nicht möglich.

Ebenso werden Macros, Interfaces, Imports und API-Aufrufe nicht unterstützt.

(X)IncludeFile werden momentan nur auf erster Ebene ausgeführt.

Bitte beachtet:

PB2Web ist momentan noch ziemlich weit von dem entfernt, was man als fertiges Produkt
bezeichnen könnte. Das Framework ist noch ziemlich lückenhaft (von den 1500 PureBasic-
Befehlen sind derzeit knapp 250 umgesetzt worden). Ich könnte noch ewig hier im stillen
Kämmerlein an PB2Web programmieren, aber irgendwann muss auch mal ein Anfang
gemacht werden. Vielleicht kann ich auf diesem Weg ja auch den einen oder anderen dazu
animieren, an dem Projekt teilzunehmen und mitzuarbeiten.

Eine gute Dokumentation ist so gut wie nicht vorhanden. Aber hey, ich bin ja hier und
stehe Rede und Antwort ;-) Und hier ist dann noch eine Hilfe zur Selbsthilfe.

Außerdem ist im Download-Paket ein Examples-Ordner vorhanden, der einiges an Code beinhaltet.

Auf http://pb2web.de/ findet man überdies auch noch einiges an nützlichen
Informationen (beispielsweise bezüglich Theming und Kommunikation mit einem Server).

So, das war es fürs Erste. Bin gespannt auf Euer Feedback.

Viel Spaß beim PB2Web'en & Grüße ... Kiffi

_________________
einfach ist schwierig


Zuletzt geändert von Kiffi am 15.01.2014 11:46, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 00:41 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
:allright: fürs Bereitstellen und für deine Arbeit.

Kiffi hat geschrieben:
Achtet auf Groß- und Kleinschreibung! Während für PB myVar und myVAR das gleiche ist,
arbeitet JavaScript case-sensitiv. Für JS sind myVar und myVAR zwei unterschiedliche Variablen.

Ich weiß nicht, was besser ist, aber um den konvertierten JS-Code PB-mäßig zu machen, könnte man ja alle Variablen beim Konvertieren nach JS lowercasen.

Kiffi hat geschrieben:
Initialisiert Variablen! PB initialisiert Variablen automatisch. JavaScript tut das nicht. Eine
numerische Variable besitzt in PB initial den Wert 0. Ein String ist initial ein Leerstring.
In JS ist das nicht der Fall. Hier haben alle Variablen initial einen Wert 'undefined'

Ich weiß nicht, was besser ist, aber um den konvertierten JS-Code PB-mäßig zu machen, könnte man ja eine Pre-Funktion ausführen, die alle Variablen automatisch für JS definiert, damit es keine JS-Fehler entstehen.

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 01:04 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
RSBasic hat geschrieben:
:allright: fürs Bereitstellen und für deine Arbeit.

Gern! :-)

RSBasic hat geschrieben:
[...] alle Variablen beim Konvertieren nach JS lowercasen.
[...] eine Pre-Funktion ausführen, die alle Variablen automatisch für JS definiert, damit es keine JS-Fehler entstehen.

ja, das ist langfristig der Plan. Steht auf meiner (unglaublich langen) ToDo-Liste.. :-)

Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 01:22 
Offline

Registriert: 19.09.2007 22:18
Super Projekt! Mein Tipp: Definitiv auch im englischen Forum bekannt machen, denn ich könnte mir vorstellen das sich dort noch viel mehr interessierte Mitstreiter finden würden, sodass es dadurch noch wesentlich schneller voran käme.

_________________
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 01:45 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Achso, das gibt's nur als Windows-Binary? :cry:

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Creality 3D CR-10 Review und erste Druckergebnisse
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 02:09 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
c4s hat geschrieben:
Super Projekt! Mein Tipp: Definitiv auch im englischen Forum bekannt machen, denn ich könnte mir vorstellen das sich dort noch viel mehr interessierte Mitstreiter finden würden, sodass es dadurch noch wesentlich schneller voran käme.

Danke für Deine Rückmeldung! Ich wollte allerdings erst einmal ein paar Tage
das Feedback hier im Forum abwarten (und die ersten Fehler fixen ;-)),
bevor ich es im englischen Forum vorstelle.

NicTheQuick hat geschrieben:
Achso, das gibt's nur als Windows-Binary? :cry:

jap. Ich verstehe Deine Enttäuschung, aber momentan setze ich die größere
Priorität auf ein lauffähiges System. Im Prinzip ist PB2Web (der Parser, der
Selektor und der Manager) auch auf andere OS portierbar (das Framework
ist ohnehin OS-unabhängig), aber ich habe noch zu wenig Erfahrungen im
Umgang mit der Steuerung des PB-Compilers und den Pfaden. Außerdem muss
ich mir dafür erst einmal ein Linux aufsetzen. Das ist wie gesagt nicht wild,
kostet aber Zeit, die ich vorerst lieber in die Stabilität von PB2Web investieren will.


Bevor ich's vergesse: Entgegen meiner früheren Äußerung, das CanvasGadget
in naher Zukunft nicht zu unterstützen zu wollen, habe ich mich doch dazu
hinreißen lassen, es vor dem Release kurzfristig mit reinzunehmen.

Hier ist eine Umsetzung von STARGÅTEs einarmigen Banditen
(mit geringfügigen Anpassungen):

http://pb2web.de/demos/slotmachine/

Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 02:29 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Werd's demnächst mal testen.
Ray hat schon alles angesprochen, was mir auch ins Auge stach mit den Variablen. Für eine erste Test version sicherlich akzeptabel. Aber zwecks Comfort sollte man das irgendwann überarbeiten.
So weit so gut :)

Warum braucht man denn einen Server? Bin ein wenig verwirrt. JS (und jQuery) laufen doch problemlos ohne Server. Nur bei mächtigeren Anwendungen benötigt man einen Server, welcher aber wiederrum ermöglicht die "File"-Library zu verwenden (oder ist das so geplant, aber noch nicht umgesetzt?)

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 03:20 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Derren hat geschrieben:
Werd's demnächst mal testen.

ja, das wäre schön! :-)

Derren hat geschrieben:
Ray hat schon alles angesprochen, was mir auch ins Auge stach mit den Variablen. Für eine erste Test version sicherlich akzeptabel. Aber zwecks Comfort sollte man das irgendwann überarbeiten.

Gemach, gemach! Kommt Zeit, kommt Komfort ;-)

Derren hat geschrieben:
Warum braucht man denn einen Server? [...]

da magst Du recht haben. Für einfachere Sachen funktioniert PB2Web auch ohne
Server. Um aber z.B. via 'Servercode' auf Datenbanken zuzugreifen, bedarf es eines
Servers, der in der Lage ist, das von PB2Web erstellte CGI ausführen zu können.

Ich werde in einer der nächsten Versionen die Möglichkeit anbieten, die generierte
Seite auch ohne Server aufrufen zu können. Das würde gleichzeitig auch die
Einstiegshürde für die senken, die in PB2Web ein wenig hineinschnuppern wollen.
Danke für den Hinweis!

Derren hat geschrieben:
welcher aber wiederrum ermöglicht die "File"-Library zu verwenden

ähm, das habe ich jetzt nicht verstanden. Um dann auf das FileSystem des Servers
zuzugreifen? Ja, das klappt. Allerdings nicht von JS aus, sondern von dem von PB2Web
generierten CGI. Oder missverstehe ich dich jetzt?

Grüße ... Kiffi

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 03:33 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Ah, ok. Also vielleicht kann man das CGI ja optional machen. Wenn ich keine "DLLs" erstelle, brauch ich ja an und für sich auch keinen Server.
Im großen und ganzen fallen mir aber eh keinen sinnvollen Anwendungen ein, die ohne Server auskommen. Spielereien, ok. Einfach irgendwas als Website anzeigen, auch OK. Aber richtige Anwendungen müssen immer irgendwie irgendwo was speichern (habe vor kurzem versucht ein Datenbank Frontend mit HTML und JS zu kreieren. Da jeder Browser ein eigenes DB-System hat, lief's dann darauf hinaus dass man zum Speichern seiner Arbeit einen DB-Dump aus einer Textarea heraus kopieren musste und ihm beim nächsten "Öffnen des Dokuments" wieder dort einzufügen).

Ja, also, jedenfalls: Wenn man schon einen Server benötigt kann man ja über CGI/php etc. auch mit Dateien arbeiten (read/write etc.). Das meinte ich mit der File-Library

Zitat:
Dass einige Libs nicht umgesetzt sind, liegt in der Natur der Sache: Im Browser kann man beispielsweise nicht direkt auf das Filesystem zugreifen.


Man kann schon. Wenn man eben dem kleinen Umweg über den Server geht. Das gilt natürlich auch für die Datenbanken (denn die Browserinternen DBs sind ja wirklich kaum zu gebrauchen. Erstens nur Client-seitig, zweitens browserabhängig (Wechsel von FF zu Chrome und auf einmal hat man keinen Zugriff auf die Daten mehr), und wenn man mal wieder feststellt, dass man zu viele Formulardaten und Cookies im Browser hat und alles löscht, ist die DB auch komplett futsch. OK um Daten (für Formulare z.B.) zwischen zu speichern, ansonsten eher unbrauchbar)

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web (V 2014-01-03)
BeitragVerfasst: 04.01.2014 03:55 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Derren hat geschrieben:
Also vielleicht kann man das CGI ja optional machen.

das ist ohnehin optional. Das CGI wird nur dann erstellt, wenn im Code
eine ProcedureDLL vorhanden ist.

Derren hat geschrieben:
Wenn ich keine "DLLs" erstelle, brauch ich ja an und für sich auch keinen Server.

allerdings ist die ideale ökologische Nische der von PB2Web erstellten Seite
nun mal das Web. Und wo das Web ist, ist der Server nicht weit ;-)

Ich würde zumindest nicht diesen Aufwand betreiben, um die Web-Applikation
nur auf der lokalen Platte laufen zu lassen.

Grüße ... Kiffi

P.S.: Ha! Jetzt habe ich doch noch ein Beispiel gefunden, das ohne Server nicht funktioniert ;-)

P2W_Geolocation_GetCurrentPosition() (liefert die geografische Position des Anwenders)
verweigert den Dienst, wenn es über file:// aufgerufen wird.

P.P.S.: ... anscheinend nur in Chrome und im Ff. Ausgerechnet im IE funktioniert es. Verstehe einer diese Browser... :freak:

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 61 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 7  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye