Classe JSON

Maj 22/12/2012 (Classe json pour Windev 17 et plus)

Le Format d'échange JSON

C'est un format de fichier texte plus compact que le XML et plus pratique à lire... Mais surtout il permet d'être transformé en objet par Javascript (votre Navigateur) en une seule ligne... eval(sData);

Exemple d'utilisation avec WDScript : http://tanguy.wdscript.fr/demo_json/

La fonction JSON() utilise la Serialisation Binaire (sans utilisation de XML donc, ce qui est 10 fois plus rapide) mais a l'inconvénient d'être très complexe (procédure récursive).

S est une chaine = JSON(myVar)

Note: JSON est maintenant supporté en natif dans Windev depuis la v19 (voir Sérialise/Désérialise),
Néanmoins, celle ci est encore très limitée, il manque le type le plus courant (en PHP) :
Erreur 2612 (Sérialise) : La sérialisation JSON n'autorise pas les éléments de type 'tableau associatif'.

WDScript 2.5.9, Toujours plus rapide !

Les versions 2.5.3 a 2.5.9 exploitent maintenant tout le potentiel du mode FastCGI, elles ne recompilent plus systèmatiquement les pages déjà compilées.

Attention, cela ne veut pas dire que la page générée est identique, juste que le code windev de la page est conservé en mémoire... la page reste
donc dynamique et cela n'apporte donc pas de nouvelles contraintes...

Vous pouvez voir sur cette image l'écran de statistiques du mode FastCGI, accessible en pressant les touches CTRL + Shift avec EWS lors du chargement d'une page. Ce n'est pas disponible si le serveur web est en mode service et donc avec IIS.

Les pages ne sont recompilées que lorsqu'un changement est détecté dans le code source... (taille différente en 2.5.3, ou CRC32 du contenu 2.5.5+)

wdscript253stats.png

http://sourceforge.net/projects/wdscript/files/

v2.5.9 (25-07-2010) - WD15 061n
 + Restauration du mode Console Win32 indisponible depuis WD15 (via outil perso wdgui2con.exe)
 + Ajout d'une configuration executable .NET (2.5)
 * SendBinary : Ajout des formats "json" et "txt", pouvait poser probleme dans Chrome 5 pour les flux json
 * (FastCGI) Correctif 2x RC maximum a la fin des entetes (problematique pour sortie binaire)
 * (JSON) Support Tableaux simples ! Attention Bug WD15 61n sur Tableaux de booleans (Serialisation binaire)
 
v2.5.8 (20-04-2010) - WD15 056k
 * (JSON) Support Réels
 
v2.5.7 (18-03-2010) - WD15 046g (Dans EWS 2.6.0)
 + Ajout de la classe cGD pour acces à la librairie graphique LibGD (2.0.36)
 * (FastCGI) Bug lorsqu'il n'y a pas de tag WDSCRIPT dans la page
 
v2.5.6 (28-02-2010) - WD15 046g
 + Ajout JSONDataSource() pour convertir un fichier ou une requete au format JSON
 + Gestion des messages HFCS (pour eviter la fenetre automatique)
 + Gestion de l'état des connexions aux bases de données dans la fenetre FastCGI
 * Verification de la connexion pour les acces natifs Hxx
 * Correctif probleme lorsque HFPATH est relatif
 * Correctif JSON oubli du type caractère, et type connexion ignoré (non sérialisé par wd)
 * JSON : Utilisation des caractères \u0000 au lieu des \x00 (cf specs json)
 
v2.5.5 (16-02-2010) - WD15 046g
 * Correctif Bug mode CGI Standard
 * Token nettoyés correctement
 * Correctif Fenetre du mode Précompilation sur les wdinclude avec guillemets
 * Correctif CookieLit()/CookieEcrit(), probleme avec les fonctions francaises (boucle pb de Traduction WLangage)
 * (FastCGI) Le code d'une page est recompilé en cas de différence de CRC (plus seulement la taille)
 o (FastCGI) Optimisation du code, gain d'environ 20% sur une petite page
 * (FastCGI) Probleme de cache sur fonctions non compilées (si erreur de compilation)
 * (FastCGI) Probleme de buffer non vidé en cas d'erreur en mode Linux (bug v2.5.3)
 * (FastCGI) Correctif du buffer IIS (bug v2.5.3)
 * Troncage du code affiché en cas d'erreur de syntaxe de compilation
 * Les erreurs Hyperfile (integrité, blocage, doublons) sur certaines fonctions ne déclenchent plus d'erreur WDScript
   sauf pour erreur de mot de passe (HRaye par exemple)
 
v2.5.3 (14-02-2010) - WD15 046g
 + Réutilisation des pages compilées en mode FastCGI, recompilées uniquement si modifiées
 + Gestion de FlushHTML() en Mode FastCGI Windows, pas très utile sur les serveurs actuels, 
    mais permet de décharger un peu de mémoire en cas de besoin...
 + Possibilité de configurer le niveau de compression GZIP (par défaut au plus rapide) <1 ms pour une page de 15Ko (compréssée à 2Ko)
 + Amélioration Fenetre de debugage FastCGI, affichage des fonctions compilées en mémoire, des processus et des statistiques
 ! *important* Correctif : La premiere variable POST n'etait plus lisible
 * Fusion de la classe cInclude dans la classe WDScript (3 méthodes)
 * Meilleure gestion des parametres de ligne de commande (linux)
 * Utilisation d'un sous répertoire de travail "wdscript" pour les token, la compression gzip et le cache :
   - dans /tmp/wdscript par défaut sous linux
   - fRepDonneesUtilisateur() sous Windows 

Classe cGD Librairie de gestion d'images

Version 2.0 dispo avec projet de démonstration et DLL v2.0.36-RC1 (VC6 32bit) + PHP Filters

J'ai créé cette classe afin de combler les lacunes du framework Windev concernant les images sous linux... Mais cela fonctionne aussi sous windows :)

J'ai choisi GD (voir site), car la DLL GD est toute petite (750Ko) contrairement à ImageMagick

Biensur Windev gère très bien les images, mais certaines applications se basent sur ce framework (génération de graphes par exemple) et cela peut aider à les traduire en Windev...

Voici un exemple d'utilisation :

oGD est un cGD
 
//Taille de l'image
im est entier = oGD:gdImageCreate(300,200)
 
//Couleurs utilisées (noir et blanc ici)
clBlack est entier = oGD:gdImageColorAllocate(im,0,0,0)
clWhite est entier = oGD:gdImageColorAllocate(im,0xFF,0xFF,0xFF)

WDScript 2.5.2, Premiers pas vers le Web 2.0...

La version linux et les sources sont disponibles sur SourceForge.

Après quelques jours de recherche et de tests divers supplémentaires sur différentes plateformes et serveurs web,
le mode FastCGI (Mode Server ou Backend) se dirige vers le mode d'utilisation Standard et recommandé de WDscript.

Les performances d'IIS 7.5 (Livré avec Windows Seven) sont impressionantes et semblent plus "fluides" qu'Apache 2.2

L'accès Natif MySQL Linux ne semble pas poser trop de soucis si l'on fait bien attention a fermer les requetes (HAnnuleDeclaration).

JSON

Donc cette version contient une fonction de Sérialisation JSON()

C'est un format d'échange plus compact que le XML et plus pratique à lire... Et surtout qui permet d'être transformé en objet par Javascript (votre Navigateur) en une seule ligne... eval(sData);

Mise à jour Windev 15 046f

MAJ 9 février : Ca marche ! (enfin c'est un début)


wide_wdsc252_debian.jpg wide_wdsc252_debian2.jpg

Pour obtenir ces captures d'écran, il m'a fallu "brancher" la dédibox à un autre poste linux, ici même, les interfaces linux sont des terminaux :p

8 février :
La mise à jour 046f de Windev 15 apporte une amélioration sous Linux, la fonction Ouvre() semble fonctionner...
Du moins elle ne provoque plus l'erreur fatale de la version 039g..

[ - Initialisation de wdscript, ln 329]

Coloration WLangage (dont WDScript) sous UltraEdit

Enfin terminé.... le recensement des Constantes WLangage v15.

J'en ai donc profité pour créer un fichier de Coloration Syntaxique complet pour le WLangage sous UltraEdit :)

UltraEdit gère l'autocomplétition, les transferts ftp ou sftp (ssh), la correction orthographique et vous pouvez même compresser les balises WDScript et HTML (symbole [-]/[+])


wide_uedit15.png

Je compléterai bientôt ceux d'autres éditeurs EditPlus, Crimson et Notepad++ car je me suis fait un outil pour tenir ces fichiers à jour...

Un nouveau Wiki pour WDScript

Un nouveau Wiki est en cours de fabrication pour la documentation de WDScript

http://wdscript.sf.net/wiki/

Ce Wiki est basé sur Trac, qui permet de lier des rapports de bugs
C'est ce wiki qui sera utilisé comme documentation de référence pour les liens de la coloration syntaxique de WDScript.

Exemple :

sIDSesssion=GetToken()
CookieEcrit("sid",sIDSesssion,0,60)  

Pour voir la liste des fonctions, en cours de réactualisation :
http://sf.net/apps/trac/wdscript/wiki/Fonctions

Sinon, l'ancien Wiki (WDScript version 2.1) est toujours Disponible ici : http://wdscript.sourceforge.net/help/

Sourceforge a complétement modifié son hébergement, et il m'est impossible de conserver le TWiki (fait à l'origine avec des exécutables cgi linux)

L'acces natif MySQL sous Linux, no soucis :)

Dans le fichier Projet :

[FILES]
;Nom de l'analyse
HFNAME=Test MySQL Sous Linux 
;Chemin de l'analyse par défaut dans les pages
HFANA=./MLWindev.wdd
;Mot de passe de l'analyse
HFPASS=

Fichier index.wss :

<html>
<pre> 
<WDSCRIPT>
 
sProjetUrl est chaine = ProjetFichierIni() 
 
<OUT>
Connexion en cours : [geshifilter-questionmarkphp]ml..Connexion[/geshifilter-questionmarkphp]  
Projet en cours : <a href="wdscriptinfo.wss">[geshifilter-questionmarkphp]  &quot;Voir le fichier &quot; + sProjetUrl [/geshifilter-questionmarkphp]</a>
</OUT>  
 
//---------------------------------------------------------------------------------------
// Methode via Requete
 
sReq est chaine = [
SELECT COUNT(*) AS RES FROM ml
]
 
//DataSource est une Source de Données
 
SI PAS HExécuteRequêteSQL(DataSource,ml..Connexion,hRequêteSansCorrection,sReq) ALORS
 
        Erreur(HErreurInfo(hErrComplet))
        //Bug linux WDScript v2.5.0 (corrigé en v2.5.1)
        //Erreur(Remplace(Remplace(HErreurInfo(hErrComplet),caract(10),"\n"),caract(13),""))
 
SINON

WDScript v2.5.0 Version Finale

Voilà, WDScript Server 2.5.0 (v15) est finalement au point, que ce soit sous Windows ou sous Linux.

Biensûr la version linux ne dispose pas de toutes les possibilités offertes par la version Windows, car le framework linux est encore limité (pas de génération d'image par exemple)

Néanmoins, ceci peut être fait avec l'aide d'un autre outil sous linux, comme PHP, un cgi ou une ligne de commande... (Il est possible d'extraire des images d'une base de données sur le disque avec WDScript et de les lier ensuite sur un site via un script PHP par exemple, voir directement)

Mais cela ne limite par réellement WDScript, la plupart des sites PHP ne générent pas les images, elles sont simplement placées dans un répertoire du site...

Voici un schéma concernant le protocole FastCGI, travail effectué depuis la pré-version 2.4.8 :

Easy Web Server v2.5.x avec WDScript FastCGI préconfiguré

Enfin, apres quelques semaines de travail sur ses composants, voici mon package WAMP prêt à l'emploi pour WDScript 2.5.0...

ews250.png

Il contient aussi PHP, SQLite 2 et 3, MySQL 5.1 InnoDB et PhpMyAdmin préconfigurés pour les bases relationnelles.

J'y ai inséré deux nouvelles démo wdscript concernant SQLManagerX, pour le moment limité aux classes des accès inexistants en Windev,
à savoir SQLite4WD et PHP4WD...

Avec PHP4WD (cf. site de Frédéric Emprin), vous pouvez accéder à une base située sur un autre serveur web, via un système de requêtes HTTP cryptées ! Et donc accéder aux bases d'un site d'hébergement avec PHP comme free.fr :)

Syndicate content