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'.
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+)
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
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)
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);
MAJ 9 février : Ca marche ! (enfin c'est un début)
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]
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 [-]/[+])
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 est en cours de fabrication pour la documentation de WDScript
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)
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] "Voir le fichier " + 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
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 :
Enfin, apres quelques semaines de travail sur ses composants, voici mon package WAMP prêt à l'emploi pour WDScript 2.5.0...
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 :)
Recent comments
9 years 36 weeks ago
9 years 38 weeks ago
9 years 41 weeks ago
9 years 47 weeks ago
10 years 15 weeks ago
10 years 16 weeks ago
10 years 24 weeks ago
10 years 24 weeks ago
10 years 25 weeks ago
10 years 25 weeks ago