SpiderBasic 1.30 est sorti
Parmi les nouveautés à noter l'accès à GoogleDrive

Le , par comtois, Responsable Purebasic
SpiderBasic 1.30 est sorti, cette version comporte les nouveautés suivantes :

23th march 2016 : Version 1.30

- Ajouté : DisableWindow(), AddKeyboardShortcut(), RemoveKeyboardShortcut()
- Ajouté : OpenFile(), GetWindowColor(), SetWindowColor()
- Ajouté : CountProgramParameters() and ProgramParameter() to get URL params
- Ajouté : #PB_Mouse_Locked and #PB_Mouse_Unlocked support for InitMouse()
- Ajouté : UseGoogleDrive() to access google drive remote files in read and write mode
- Ajouté : #PB_GoogleDriveFile support to ReadFile(), CreateFile() and OpenFileRequester()
- Ajouté : flag parameter to ExportFile() to support GoogleDrive
- Ajouté : #PB_Canvas_Transparent flag for CanvasGadget() to have transparent canvas.

- Modifié : Added a callback parameter to CreateFile()
- Modifié : in the IDE, compiler option server port now needs the server address as well.
- Modifié : NextSelectedFilename() replaced by NextSelectedFile() and SelectedFilename()/SelectedFileID()

- Mis à jour : SoundJS to 0.6.2 and PixiJS to 3.0.10

- Corrigé : divers correctifs de bogues



À noter parmi ces nouveautés l'accès à GoogleDrive.

Vous pouvez télécharger la version 1.30 sur votre compte ou tester la version démo (gratuite, complète et limitée à 800 lignes de code).

Télécharger

Source : SpiderBasic

Voir aussi

Forum SpiderBasic


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de glad33bx glad33bx - Membre régulier https://www.developpez.com
le 25/03/2016 à 8:40
de la pub pour un produit commercial !
Super
Avatar de patmaba patmaba - Membre habitué https://www.developpez.com
le 25/03/2016 à 13:14
C'est purebasic en mode web
Avatar de dorian833 dorian833 - Membre averti https://www.developpez.com
le 25/03/2016 à 19:19
Heureux de voir PureBasic toujours vivant

Le second (après le PSION basic) langage de programmation qui m'a permis de découvrir la programmation il y a une bonne dizaine d'années avant même que je puisses imaginer que j'en ferais mon metier
Avatar de SurferIX SurferIX - Membre chevronné https://www.developpez.com
le 31/03/2016 à 17:37
Quel dommage que la syntaxe de PureBasic soit aussi peu lisible : j'ai pris l'habitude de lire/écrire du Python, et PureBasic est tellement rapide que je meurs d'envie de voir un PureBasic, avec toutes ses mêmes fonctionnalités, mais ayant une syntaxe "à la" python.

Quand je lance PureBasic, j'appuie sur "entrée", hop l'éditeur est instantanément affiché (O.o)
Je charge les programmes d'exemple, je les lance, c'est tellement rapide que je ne croyais pas que c'était compilé quand je l'ai essayé, c'est pour cela que je l'ai acheté.
Après... dès que tu pousse et que tu veux écrire pas mal de choses, la syntaxe rend malheureusement illisible, donc impossible à maintenir, un programme. Quel dommage ! Tous les 2-3 mois, je le relance, je bave devant sa rapidité, je fais la mise à jour, je ré-essaie un ou deux exemples, et je quitte... quelle frustration, passer si près d'un truc génial et tout perdre pour ça.

Exemple de code :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Procedure.l BuildRequestHeader(*Buffer, DataLength, ContentType$) 
 
  Length = PokeS(*Buffer, "HTTP/1.1 200 OK"+EOL$)                     : *Buffer+Length 
  Length = PokeS(*Buffer, "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$) : *Buffer+Length 
  Length = PokeS(*Buffer, "Server: Atomic Web Server 0.2b"+EOL$)      : *Buffer+Length 
  Length = PokeS(*Buffer, "Content-Length: "+Str(DataLength)+EOL$)    : *Buffer+Length 
  Length = PokeS(*Buffer, "Content-Type: "+ContentType$+EOL$)         : *Buffer+Length 
  Length = PokeS(*Buffer, EOL$)                                       : *Buffer+Length 
 
  ; Length = PokeS(*Buffer, "Last-modified: Thu, 27 Jun 1996 16:40:50 GMT"+Chr(13)+Chr(10)  , *Buffer) : *Buffer+Length 
  ; Length = PokeS(*Buffer, "Accept-Ranges: bytes"+EOL$                 , *Buffer) : *Buffer+Length 
  ; Length = PokeS(*Buffer, "Connection: close"+EOL$) : *Buffer+Length 
 
  ProcedureReturn *Buffer 
EndProcedure
Ou encore :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
      If RequestedFile$ = "" 
        RequestedFile$ = DefaultPage$ 
      Else 
        *t.tmp = @RequestedFile$ 
        While *t\a <> 0 
          If *t\a = '/' : *t\a = '\' : EndIf 
          *t+1 
        Wend 
      EndIf
Ce n'est pas compréhensible du tout... tu me diras, pour lire un fichier json en JavaScript, et rester à la mode en utilisant ce qu'on appelle le "Functional reactive style" :

Code : Sélectionner tout
1
2
3
var data = Bacon.fromNodeCallback(fs.readFile, "data.json", "utf8").map(function(event){ 
   return JSON.parse(event); 
}).toProperty();
Là aussi on est tout de même loin, très très loin de :

Code : Sélectionner tout
1
2
3
import json 
with open('data.json') as data_file:     
    data = json.load(data_file)
(Non je ne suis pas avocat Python, je suis avocat de la simplicité, et je pense qu'en repensant à peine PureBasic, on peut en faire un produit exceptionnel et ça me frustre de voir qu'il est à un cheveux d'être exceptionnel, et ce cheveu fait qu'il reste "sympa").
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 31/03/2016 à 20:18
C'est dommage que tu parles de PureBasic sur le forum de SpiderBasic.
Peu importe, tout avis est bon à prendre

Concernant la syntaxe c'est une question de goût, donc là je n'ai rien à dire. Par contre ton exemple me semble un peu lourd , tu pourrais l'écrire ainsi (sauf erreur de ma part) :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
Procedure.l BuildRequestHeader(*Buffer, DataLength, ContentType$) 
  Chaine$ =   "HTTP/1.1 200 OK"+EOL$ +  
                  "Date: Wed, 07 Aug 1996 11:15:43 GMT"+EOL$ +  
                  "Server: Atomic Web Server 0.2b"+EOL$ +  
                  "Content-Length: "+Str(DataLength)+EOL$ + 
                  "Content-Type: "+ContentType$+EOL$ + 
                  EOL$ 
   
  PokeS(*Buffer, Chaine$) 
  
  ProcedureReturn *Buffer 
EndProcedure
Je ne comprends pas ton problème avec ton deuxième exemple, je ne vois pas ce que tu veux démontrer, la syntaxe devrait être comment pour te convenir ?

Ensuite je ne comprends pas ta remarque sur la lecture d'un fichier Json , tu parles de javascript et de Python ? tu ne montres pas comment le faire avec PureBasic ou SpiderBasic.
Pour info avec PureBasic ou SpiderBNasic c'est aussi simple que ça :

Code : Sélectionner tout
LoadJSON(#JSON, FileName$ [, Flags])
Aide en ligne pour la bibliothèque Json PureBasic :
http://www.purebasic.com/french/docu.../loadjson.html
Aide en ligne pour la bibliothèque Json SpiderBasic :
http://www.spiderbasic.com/documenta.../loadjson.html
Avatar de SurferIX SurferIX - Membre chevronné https://www.developpez.com
le 31/03/2016 à 23:45
Les codes PureBasic sont des copier/coller des exemples fournis avec PureBasic je n'ai rien inventé du tout, donc si le code est mauvais cela implique que le code des exemples est mauvais...

Quant à mon deuxième exemple, le principe est :

Code : Sélectionner tout
1
2
3
4
5
        *t.tmp = @RequestedFile$ 
        While *t\a <> 0 
          If *t\a = '/' : *t\a = '\' : EndIf 
          *t+1 
        Wend
Trouve tu vraiment cela lisible ? Ensuite j'ai dérivé dans le monde du Web en disant que partout on était content de trouver de nouvelles choses qui ne simplifiaient en rien la vie, alors que justement, il ne faut pas rendre les choses complexes, mais il faut les rendre simples. Et je me suis moqué d'un des livres dont je fais la revue technique, qui s'appelle "Modern JavaScript Applications" (bouquin anglais) et qui explique que c'est génial d'écrire un chargement de fichier façon "Functional reactive style" alors que bordel, NON, c'est bien plus compliqué à lire que 3 lignes Python.

Voici le code juste au dessus écrit en Python :
Code : Sélectionner tout
t.a = t.a.replace('/', '\')
J'exagère à peine, mais pas loin. Maintenant, en extrapolant avec un code de 2000 lignes, tu arrive à du code qui ressemble à ça, qui est un de mes codes C, mais tu y arriveras en moins lisible :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    tag_groupe_dst = (idx_a < idx_b ? tag_groupe_a : tag_groupe_b); 
    for (i = 0; i < psrc->len; i++) { 
        psrc->tab[i]->tag = tag_groupe_dst; 
    } 
    /* Allocation dst = (taille dst + taille src) : */ 
    tab_tmp = 
        (struct cell **) realloc(pdst->tab, 
                                 (pdst->len + psrc->len) * 
                                 sizeof(struct cell *)); 
    if (tab_tmp == NULL) { 
        snprintf(buffer_erreur, sizeof(buffer_erreur) - 1, 
                 "Erreur de ré-allocation d\'un groupe, " 
                 "plus assez de mémoire"); 
        return -1; 
    } 
    pdst->tab = tab_tmp;
Je sais que ce code, que j'ai écris il y a un an, j'ai dû me faire plein de commentaires détaillés, et ce n'est pas suffisant, si je dois le reprendre, je vais galérer.
En Python, voici un code qui a quatre ans :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
    going = True 
    while going: 
        clock.tick(60) 
        for event in pygame.event.get(): 
            if event.type == QUIT: 
                going = False 
            elif event.type == KEYDOWN: 
                if event.key == K_ESCAPE: 
                    going = False 
                elif event.key == K_q: 
                    going = False 
                elif event.key == K_RETURN: 
                    going = False
C'est toujours hyper lisible, et rien qu'en le relisant je comprends parfaitement ce qu'il fait. C'est dans ce sens là que j'essaie de m'exprimer : il est possible avec PureBasic et comme SpideBasic s'en inspire fortement, ça le concerne aussi, d'avoir quelque chose d'ultra puissant, mais pas maintenable, et à mon sens, c'est là que le bât blesse et c'est pour cela qu'il n'attire pas, et pour cela que je ne me penche pas plus en avant.
Exemple : pourquoi des antislashes et pas des slashes, ou des points ? Pourquoi la première lettre en majuscule alors qu'absolument aucun autre langage n'a un mot clé avec sa première lettre en majuscule.
Exemple d'origine :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Structure Quake3Mods 
  Alias.s 
  NomReel.s 
  Version.s 
EndStructure 
 
NewList Mods.Quake3Mods() 
 
If ReadFile(0, "Quake3Launcher.prefs") 
 
  While Eof(0) = 0 
 
    AddElement(Mods()) 
    Mods()\Alias   = ReadString(0) 
    Mods()\NomReel = ReadString(0) 
    Mods()\Version = ReadString(0) 
 
  Wend
Avec des "points" :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
structure Quake3Mods 
  Alias.s 
  NomReel.s 
  Version.s 
ends 
 
newList Mods.Quake3Mods() 
 
if ReadFile(0, "Quake3Launcher.prefs") 
  while Eof(0) = 0 
    addElement(Mods()) 
    mods().Alias   = ReadString(0) 
    mods().NomReel = ReadString(0) 
    mods().Version = ReadString(0) 
 
  wend
etc c'est juste une suggestion, mais la lisibilité d'un langage est d'abord sa nature première, et ça incite / ou pas / à aller vers ce langage. Les "->" aussi, comme en Php, C++, ou C permettent de bien séparer les éléments/structures et de les rendre plus lisibles.

Bref je pense sincèrement que le PureBasic a un gros potentiel et qu'il est près d'être une vraie alternative à d'autres gros, mais il a ces petits problèmes, qui empêchent une pérennité du développement et cela me gêne et me fait râler à la fois.
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 01/04/2016 à 1:33
Citation Envoyé par SurferIX  Voir le message
Les codes PureBasic sont des copier/coller des exemples fournis avec PureBasic je n'ai rien inventé du tout, donc si le code est mauvais cela implique que le code des exemples est mauvais...

Il s'appelle comment l'exemple (si c'est un fichier exemple) ? Sinon si c'est un code intégré dans la doc, je le trouve dans quelle bibliothèque ? Histoire de comprendre le contexte de cet exemple. Peut-être qu'il mérite d'être corrigé ?

Voici le code juste au dessus écrit en Python :
Code : Sélectionner tout
t.a = t.a.replace('/', '\')

S'il s'agit de remplacer "/" par "\" dans une chaine, tu peux le faire comme ça avec PureBasic ou SpiderBasic :
Code : Sélectionner tout
UneChaine$ = ReplaceString(UneChaine$,"/","\")
Pourquoi la première lettre en majuscule alors qu'absolument aucun autre langage n'a un mot clé avec sa première lettre en majuscule.

Le compilo n'est pas sensible à la casse, rien ne t'oblige à le faire. L'éditeur formate le code automatiquement en mettant la première lettre en majuscule mais tu peux modifier ça dans les préférences de l'éditeur en décochant la case 'activer la correction des majuscules'. Il y une multitude de paramètres possibles pour adapter l'éditeur à ton goût (l'indentation, le pliage, l'autocomplétion, etc).

etc c'est juste une suggestion, mais la lisibilité d'un langage est d'abord sa nature première, et ça incite / ou pas / à aller vers ce langage. Les "->" aussi, comme en Php, C++, ou C permettent de bien séparer les éléments/structures et de les rendre plus lisibles.

Tu peux éventuellement t'écrire un préprocesseur pour adapter la syntaxe à ton goût, ou t'adapter à la syntaxe de PureBasic

Bref je pense sincèrement que le PureBasic a un gros potentiel et qu'il est près d'être une vraie alternative à d'autres gros, mais il a ces petits problèmes, qui empêchent une pérennité du développement et cela me gêne et me fait râler à la fois.

Ne t'arrête pas à ces petits détails, c'est le propre du programmeur que de s'adapter
Avatar de SurferIX SurferIX - Membre chevronné https://www.developpez.com
le 01/04/2016 à 9:30
C'est le code de "PureBasic\Examples\Sources - Advanced\Atomic Web Server"

Quant à s'adapter, c'est un vieux qui parle, dans l'ordre de mes évolutions (je ne parle que des langages, pas de ce qu'il y a autour (rien sur Symfony, NodeJS etc)) : ADA, C, C++, Java, Visual Basic, Delphi, Php, PureBasic, JavaScript, LUA, Python
J'ai été expert Delphi et il y a deux ans expert Php. Au travers de tout ça, pendant plus de 20 ans, j'ai évolué vers une seule chose : la lisibilité car, au final, c'est là dessus que tout se base.

C’est la philosophie de Python qui m’a plu le plus : le langage est le plus épuré de tous les langages. Tout fonctionne à l’indentation. Terminés les points-virgules à la fin de chaque ligne, les accolades pour les boucles et conditions, et le code d'autres personnes illisible. C’est tout de suite plus lisible. Je me retrouve du coup à coder pas mal de fonctionnalités en très peu de lignes de code, et c’est très plaisant. C'est juste ce qui me manque en PureBasic.

L'exemple de ton préprocesseur est bien, mais il ne devrait pas exister : la lisibilité par tout le monde, c'est ce qui change tout dans un langage. C'est bien, mais faire simplement un ReplaceString() c'est loin d'être pérenne (crois moi j'en ai fait des #define en C qui changent caractère par caractère jusqu'à récemment et je connais bien). En tous les cas merci pour ce commentaire, dès que je peux je reviendrai et je verrai si je peux me faire un preprocesseur et si cela devient plus lisible.
Avatar de majikeyric majikeyric - Candidat au Club https://www.developpez.com
le 01/04/2016 à 17:51
Le code PureBasic illisible ? On aura tout lu...
Responsable bénévole de la rubrique PureBasic : comtois -