Aktuelle Zeit: 12.12.2017 22:03

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 23.07.2017 15:31 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
SpiderBite

Die aktuellen Sourcen und die Dokumentation befindet sich auf: https://github.com/spiderbytes/SpiderBite

Was ist das hier?

SpiderBite ist ein Präprozessor für SpiderBasic, der es ermöglicht, in einem Code Bereiche zu markieren, die auf dem WebServer ausgeführt werden (der sogenannte ServerCode (PB2Web-User werden es kennen :wink:)).

Wie bekannt ist, kann und darf der von SpiderBasic generierte Code nicht direkt auf die Hardware des WebServers zugreifen. Somit ist es nicht möglich, direkte Datenbankabfragen, Filesystemzugriffe oder sonstiges aus SpiderBasic auszuführen. Die bisherige Vorgehensweise ist es, eine serverseitige Komponente zu programmieren (sei es als CGI oder PHP- (ASP-, Python-, ...) Script) und diese Komponente dann in SpiderBasic mittels HttpRequest() aufzurufen. Das funktioniert eigentlich ganz gut, ist aber meines Erachtens nicht besonders komfortabel. Aus diesem Grund habe ich mich entschlossen, SpiderBite zu entwickeln.

Ein simples Beispiel

Code:
EnablePbCgi

  ; der Code in diesem Block wird auf dem Server ausgeführt

  ProcedureDLL.s myPbCgiProcedure()
    ProcedureReturn "Hello from myPbCgiProcedure"
  EndProcedure

DisablePbCgi

Debug myPbCgiProcedure()


Der Code, der oben in dem `EnablePbCgi/DisablePbCgi` - Block notiert ist, wird vor dem eigentlichen Konvertierungsvorgang durch SpiderBite extrahiert und in eine eigene PureBasic-Executable kompiliert (eine sogenannte CGI-EXE), die dann auf dem Server ausgeführt wird. Hierbei steht im ServerCode-Block der gesamte PureBasic-Befehlsvorrat zur Verfügung.

Wichtig ist, dass die auszuführende Prozedur als ProcedureDLL() angegeben wird. Somit ist sie clientseitig aufrufbar.

Neben der Möglichkeit, PureBasic-CGI zu erstellen stehen auch Blockbereiche für PHP, ASP und ASPX zur Verfügung. Ein Beispiel für PHP:

Code:
EnablePHP
 
  ProcedureDLL myPhpProcedure()
    ! return "Hello from myPhpProcedure";
  EndProcedure
 
DisablePHP

Debug myPhpProcedure()

Die PHP-Befehle werden hier durch ein führendes Ausrufezeichen markiert.

Es ist möglich unterschiedliche Blockbereiche in einem Source zu nutzen (hier: PbCgi und PHP):
Code:
EnablePbCgi
  ProcedureDLL.s myPbCgiProcedure()
    ProcedureReturn "Hello from myPbCgiProcedure"
  EndProcedure
DisablePbCgi

EnablePHP
  ProcedureDLL.s myPhpProcedure()
    ! return "Hello from myPhpProcedure";
  EndProcedure
DisablePHP

Debug myPbCgiProcedure()
Debug myPhpProcedure()


Weitere Informationen entnehmt Ihr bitte der Dokumentation auf: https://github.com/spiderbytes/SpiderBite

Have fun ... Peter

// Edit: Beitrag auf wesentliche Sachen gekürzt. Wer mehr wissen möchte, schaut sich den GitHub-Link an.
// Edit2: Codebeispiele angepasst, da ab der Version vom 01.10.2017 zwischen öffentlichen und privaten Prozeduren unterschieden wird.

_________________
einfach ist schwierig


Zuletzt geändert von Kiffi am 01.10.2017 17:38, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 23.07.2017 15:36 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Deine Idee ist super. :allright:
Dein Programm werde ich mir merken und es irgendwann ausprobieren, sobald ich SpiderBasic teste und benutze.

_________________
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: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 23.07.2017 16:56 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Die Verschmelzung von SpiderBasic und PureBasic und PHP und mehr ... genial! :allright:

Ich hoffe, dass ich bald Zeit haben werde mich näher mit diesen Dingen zu beschäftigen.

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 25.07.2017 14:36 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
Danke Peter, dass ist ja quasi der Ritterschlag für SpiderBasic :allright:

_________________
"Papa, ich laufe schneller, dann ist es nicht so weit."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 25.07.2017 15:19 
Offline
Benutzeravatar

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

danke für die netten Rückmeldungen! <)

Es ist noch viel zu tun. SpiderBite ist noch nicht so, wie ich es mir vorstelle. Hinzu kommt eine fiese Sache, die eigentlich nur Fred fixen kann.

Aber so, wie ich das sehe, ist die Anzahl der Benutzer momentan sowieso im überschaubaren Bereich. ;-)

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 12.08.2017 18:32 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Kiffi hat geschrieben:
Hinzu kommt eine fiese Sache, die eigentlich nur Fred fixen kann.

das habe ich jetzt mit einem weiteren Tool erst einmal umgehen können. Nicht schön, aber selten. Wer SpiderBite benutzt und SpiderBasic-Apps erstellen möchte, sollte unbedingt das hier lesen: https://github.com/spiderbytes/SpiderBite#after-create-app

Nerviger Nebeneffekt: Wenn die entsprechende Option eingeschaltet ist, meldet SpiderBasic nach Erstellen einer App, dass sich der SourceCode geändert hat. Hat er aber nicht. Ist lediglich das Resultat einer Umkopier-Aktion von SpiderBite und SpiderBiteAfterCreateApp.

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 25.10.2017 16:36 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
Hallo Peter,

bei dem folgenden Coding erstellt SpiderBite die Post - Parameter nicht korrekt.
Der Parameter 0 für die Funktionszuweisung bleibt leer.

Code:
#SpiderBite_Profile = "default"

! $('head').append('<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">');

; IncludeFile "jQuery.sbi"
;
; UseModule jQuery
;   SetAttribute(Table, "border", "1") ; set the border attribute
;   SetCSS(Table, "left", "100px")
;   SetText(TableCell, "Row " + rowCounter + " / Cell " + cellCounter) ; write some text into the cell
; UnuseModule jQuery

;{ Included Gui.pbf
Enumeration FormWindow
  #hWnd
EndEnumeration

Enumeration FormGadget
  #D_DATE
  #S_TITLE
  #S_AMOUNT
  #T_DATE
  #T_TITLE
  #T_AMOUNT
  #E_DESCR
  #T_DESCR
  #T_CATALOG
  #CB_CATALOG
  #B_SAVE
EndEnumeration


Procedure OpenhWnd(x = 0, y = 0, width = 414, height = 320)
  OpenWindow(#hWnd, x, y, width, height, "Mobil Phone Test with SpiderBasic", #PB_Window_BorderLess)
  DateGadget(#D_DATE, 10, 30, 140, 40, "")
  StringGadget(#S_TITLE, 160, 30, 230, 40, "")
  StringGadget(#S_AMOUNT, 140, 260, 80, 40, "")
  TextGadget(#T_DATE, 10, 10, 100, 20, "Datum")
  TextGadget(#T_TITLE, 160, 10, 100, 20, "Titel")
  TextGadget(#T_AMOUNT, 140, 240, 80, 20, "Betrag EUR")
  EditorGadget(#E_DESCR, 10, 110, 380, 110)
  TextGadget(#T_DESCR, 10, 90, 100, 20, "Beschreibung")
  TextGadget(#T_CATALOG, 10, 240, 100, 20, "Kategorie")
  ComboBoxGadget(#CB_CATALOG, 10, 260, 110, 40, #PB_ComboBox_Editable)
  AddGadgetItem(#CB_CATALOG, -1, "Lebensmittel")
  AddGadgetItem(#CB_CATALOG, -1, "Technik")
  AddGadgetItem(#CB_CATALOG, -1, "Fahrzeug")
  AddGadgetItem(#CB_CATALOG, -1, "Versicherung")
  AddGadgetItem(#CB_CATALOG, -1, "Miete")
  ButtonGadget(#B_SAVE, 240, 240, 150, 60, "Speichern")
EndProcedure
;XIncludeFile "Gui.pbf"
;}

Structure Amount
  dtg.s
  title.s
  descript.s
  catalog.s
  value.s
EndStructure


EnablePbCgi


ProcedureDll.s CGI_SaveAmount (json.s)
  Protected Result.s = "[false]"
 
  If CreateFile(0, "C:\Temp\Json.json")
    WriteStringN(0, json)
    CloseFile(0)
    Result = "[success]"
  EndIf
 
  ProcedureReturn Result
EndProcedure 


DisablePbCgi

Procedure CGI_Proc_Protector()
 
  If 1=2
   
    CGI_SaveAmount ("")
   
  EndIf
 
EndProcedure

CGI_Proc_Protector()

; iPhone ViewPort: 414 px Hochkant Breite


Procedure SaveAmount ()
  Protected A.Amount
  Protected txt.s, JSONID.i
 
  A\dtg       = Str(GetGadgetState(#D_DATE))
  A\title     = GetGadgetText(#S_TITLE)
  A\descript  = GetGadgetText(#E_DESCR)
  A\value     = GetGadgetText(#S_AMOUNT)
  A\catalog   = GetGadgetText(#CB_CATALOG)
 
  A\value = ReplaceString(A\value, ",", ".")
 
  JSONID = CreateJSON(#PB_Any)
 
  If JSONID
   
    InsertJSONStructure(JSONValue(JSONID), @A, Amount)
    txt = ComposeJSON(JSONID)
    Debug txt
   
  EndIf
   
  CGI_SaveAmount(txt)
 
EndProcedure


OpenhWnd ()

BindGadgetEvent (#B_SAVE, @SaveAmount(), #PB_EventType_LeftClick)



Kannst du das bitte mal prüfen?

_________________
"Papa, ich laufe schneller, dann ist es nicht so weit."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 25.10.2017 18:42 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
dige hat geschrieben:
Kannst du das bitte mal prüfen?

Geprüft, bestätigt und gefixt.

-> https://github.com/spiderbytes/SpiderBite

Grüße ... Peter

_________________
einfach ist schwierig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: SpiderBite: Code auf dem WebServer ausführen
BeitragVerfasst: 26.10.2017 08:46 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
Läuft! Besten Dank :-)

_________________
"Papa, ich laufe schneller, dann ist es nicht so weit."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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