<commit_before># 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:)). 

### Ein simples Beispiel

```
EnablePbCgi

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

  Procedure.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.

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:

```
EnablePHP
  
  Procedure myPhpProcedure()
    ! return "Hello from myPhpProcedure";
  EndProcedure
  
DisablePHP

Debug myPhpProcedure()
```

Blockbereiche für NodeJs und Python sind in Planung.

## Installation

GitHub-Kenner klonen sich diese Projekt auf Ihren Datenträger an einen Ort ihrer Wahl. Menschen, die sich nicht mit GitHub auskennen, haben sie Möglichkeit, sich die Sourcen als ZIP herunterzuladen:

![](http://i.imgur.com/2SxgUyA.png)

Danach müssen die PB-Sourcen (SpiderBite.pb und SpiderBiteConfig.pb) mit PureBasic kompiliert werden.

Sobald das geschehen ist, wird SpiderBite als SpiderBasic-Tool installiert:

![](http://i.imgur.com/shOpccz.png)

Es ist darauf zu achten, dass als Übergabeparameter "%COMPILEFILE" angegeben wird.
Ebenso sollten die beiden Checkboxen "Wait until tool quits" und "Hide tool from the Main menu" aktiviert sein.

![](http://i.imgur.com/tHOv1M2.png)

SpiderBiteConfig kann optional ebenfalls als Tool installiert werden, um die Konfigurationen komfortabel aus SpiderBasic heraus zu verwalten.

## SpiderBiteConfig

Mit SpiderBiteConfig können Profile angelegt werden, die dann im SpiderBasic-Code angegeben werden:

![](http://i.imgur.com/eXvhJLn.png)

![](http://i.imgur.com/zg9aw5y.png)

Soll beispielsweise ein PureBasic-CGI erstellt werden, so muss in SpiderBiteConfig festgelegt werden, wo sich der PureBasic-Compiler befindet. Des weiteren muss angegeben werden, wo das CGI gespeichert werden soll (PbCgiServerFilename) und wie es vom Browser aus aufgerufen werden kann (PbCgiServerAddress). Schlussendlich kann ein Template ausgewählt werden, welches als Grundlage für das zu erstellende CGI verwendet wird. Wird kein Template angegeben, so wird ein Standard-Template verwendet.

```
#SpiderBite_Profile = "default"

EnablePbCgi

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

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

DisablePbCgi

Debug myPbCgiProcedure()
```

## Synchrone Kommunikation vs Asynchrone Kommunikation

{ToDo}

## Templates

{ToDo}

# Lizenz<commit_msg>Develop<commit_after># 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:)). 

### Ein simples Beispiel

```
EnablePbCgi

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

  Procedure.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.

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:

```
EnablePHP
  
  Procedure myPhpProcedure()
    ! return "Hello from myPhpProcedure";
  EndProcedure
  
DisablePHP

Debug myPhpProcedure()
```

Blockbereiche für NodeJs und Python sind in Planung.

## Installation

GitHub-Kenner klonen sich dieses Projekt auf Ihren Datenträger an einen Ort ihrer Wahl. Menschen, die sich nicht mit GitHub auskennen, haben sie Möglichkeit, sich die Sourcen als ZIP herunterzuladen:

![](http://i.imgur.com/2SxgUyA.png)

Danach müssen die PB-Sourcen (`SpiderBite.pb` und `SpiderBiteConfig.pb`) mit PureBasic kompiliert werden.

Sobald das geschehen ist, wird SpiderBite als SpiderBasic-Tool installiert:

![](http://i.imgur.com/shOpccz.png)

Es ist darauf zu achten, dass als Übergabeparameter "`%COMPILEFILE`" angegeben wird.
Ebenso sollten die beiden Checkboxen "`Wait until tool quits`" und "`Hide tool from the Main menu`" aktiviert sein.

![](http://i.imgur.com/tHOv1M2.png)

SpiderBiteConfig kann optional ebenfalls als Tool installiert werden, um die Konfigurationen komfortabel aus SpiderBasic heraus zu verwalten.

## SpiderBiteConfig

Mit SpiderBiteConfig können Profile angelegt werden, die dann im SpiderBasic-Code angegeben werden:

![](http://i.imgur.com/eXvhJLn.png)

![](http://i.imgur.com/zg9aw5y.png)

Soll beispielsweise ein PureBasic-CGI erstellt werden, so muss in SpiderBiteConfig festgelegt werden, wo sich der PureBasic-Compiler befindet. Des weiteren muss angegeben werden, wo das CGI gespeichert werden soll (`PbCgiServerFilename`) und wie es vom Browser aus aufgerufen werden kann (`PbCgiServerAddress`). Schlussendlich kann ein Template ausgewählt werden, welches als Grundlage für das zu erstellende CGI verwendet wird. Wird kein Template angegeben, so wird ein Standard-Template verwendet.

```
#SpiderBite_Profile = "default"

EnablePbCgi

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

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

DisablePbCgi

Debug myPbCgiProcedure()
```

## Synchrone Kommunikation vs Asynchrone Kommunikation

{ToDo}

## Templates

{ToDo}

# Lizenz
{'fraction_non_alphanumeric': 0.06856591018831483, 'fraction_numerical': 0.001931434089811685, 'mean_word_length': 5.158572844400396, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3533940', 'n_tokens_mistral': 2133, 'n_tokens_neox': 2105, 'n_words': 701}