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);
Je l'ai testé sur l'objet WDScript et semble fonctionner sur tous les cas que j'avais sous la main, comme PHP4WD qui est une classe avec héritage...
Tableaux d'objets, tableaux de structures, Classes avec Tableaux associatifs etc... Récursivement...
Demo d'affichage JSON depuis un wd-script disponible ici
Sinon je vous recommande ce site pour une meilleure lisibilité : (la partie de droite est interpretée par votre navigateur) http://json.parser.online.fr/
La Suite
Dans la prochaine version, je vais travailler sur le systeme de Cache en mode Serveur, qui peut etre bénéfique car en memoire :)
Meme si ce ne sera pas un module magique comme les modules développés pour PHP... On peut en tirer bénéfice pour des cas simples comme un bloc de page facon Drupal (le moteur de ce site) ou encore pour du Web 2.0 en conservant des jeux de résultats indexés par le texte de la requete et/ou un identifiant (de session, ou de produit par ex. selon les usages) que vous déterminerez dans le code.
En parlant de ca, je vais aussi pouvoir implémenter en mode Serveur, du code "apres transmission", déjà prévu depuis l'origine de WDScript (_OnClose) mais pas toujours efficace en mode CGI.
Dans notre cas, ceci peut permettre la préparation d'une liste de recherche (comme la doc en ligne de PCSoft) en fonction d'un contexte de page... Et le Cache (justement) pourrait conserver ce genre de requetes, ou le contenu des pages associées, pendant un temps déterminé... Soit en mémoire, soit sur le disque, soit....
Oui, il y a beaucoup à faire :) Je continuerai aussi à simplifier le code wdscript, déjà en retirant le code de la première tentative de mode Serveur...
Il restera aussi à implémenter un PHP4WD inversé pour WDScript afin de pouvoir interfacer WDScript avec un moteur de site comme Drupal ou Joomla.... Mais ce ne sont que des projets... WS4PHP ? :p
v2.5.2 (10-02-2010) - WD15 046f o JSON utilise maintenant la Serialisation Binaire (sans utilisation de XML donc, 10 fois plus rapide) + Le mode FastCGI conserve maintenant la connexion à la base de données entre deux requetes (pour le meme projet) et utilisation de la connexion Hxx par défaut pour la fonction HExecSQL + Ajout un flag pour forcer le FCGI à se fermer apres l'execution du script, CGI:bRestartFCGI + Ajout gestion Multitache et Temporisation sous Linux + Ajout paramètre -KILL pour terminer les processus wdscript (utilisé aussi avant la génération de l'executable) + Ajout Fonction XSendFile(CheminFichier) pour laisser le serveur web envoyer un fichier statique, binaire ou non. Attention les serveurs ne supportent pas cela par défaut : Lighttpd : dans fastcgi.server ajouter : "allow-x-sendfile" => "enable" Apache (avec module) : XSendFile On et XSendFileAllowAbove On * Amélioration du contenu du log lors de messages d'erreurs non gérées * Amélioration de la fermeture du processus sous Linux en FastCGI v2.5.1 (31-jan-2010) - WD15 039g + Ajout Fonction JSON() qui convertit tout type de variable/objet Windev au format JSON (pour future transmission Web 2.0) + Ajout Fonction SQLQuote() pour protèger une valeur chaine dans une requête SQL. + Ajout Fonction EnModeWDL()/InWDLMode() + Ajout Fonction HExecSQL(sRequete), en mode étendu HExecSQL(_sRequete [, _DataSource , _Connexion, _Options]) + En mode "SECURE", GetToken() renvoie une chaine "" si la session n'a pas été créée correctement + GetTokenInfo(), ajout valeur par défaut * Correctif sur chemin relatif du répertoire de sessions (Token) * Correctif Caract(13) pour les fonctions Info/Erreur * Correctif CGI:REQUEST pour les URL * Correctif EnvoiFichier, 4e parametre comme SendBinary(), déterminé selon l'extension si le fichier est renseigné * En mode Serveur, le fichier message (wpm) est bien reactualisé en cas de modification (une fois par page) * Correctif POST Query avec caractères speciaux et Upload de fichiers en mode FastCGI (voir exemple) o Optimisation de la recherche et du chargement des options du projet (nom du dossier +".ini" par défaut) o Optimisation du code via Profiling (par ex. CRC16 calculé uniquement lors de l'utilisation de pages cryptées)
XSendFile : Voir http://www.xorax.info/blog/programmation/259-x-sendfile.html
Commentaires
Classe cJSON
Bon, en fait je vais faire une classe spécialement pour ca...
La fonction JSON sera toujours accessible de la meme facon depuis un code WDScript... Mais je vais utiliser la sérialisation Binaire... J'ai presque terminé...
fonction json
Bonjour pourrais-je vous demander de faire une fonction qui sauve sur disque et lit sur disque du json.
puis-je aussi vous suggérez d'installer dans votre prochaine version la suite très complète sigma dans votre répertoire virtuel et donner les permissions apaches .
Il y a dans visualjs un ide pour faire des programmes qui combine javascript et des windgets web 2.0
il y a une application pour faire une construction de schema json.
il y a aussi une grille très complète qui est une application faite en sigma - javascript
ceci propulserait votre suite ews dans l'ère du web 2.0
J'attend votre futur version de EWS pour faire un demo de la grille avec wdscrit et une base hyperfile
Comment ca ?!?
?!?
faire linverse de votre fonction json()
faire linverse de votre fonction json()
Bonjour,
Je vais probablement vous paraitre un peu insistant
mais ne serait-il pas possible de faire linverse de votre fonction json()
et faire une désérialisation en un objet dynamique comme fait la commande webdev jsonexecute()
on pourrait ainsi traiter les items jsons pour les manipuler du genre json_objet : ID
Merci
utilitsation de cette fonction jsonversobjet
utilitsation de cette fonction jsonversobjet
Jaimerais èclaircir ma demande,
le but de cette fonction est de permettre dutiliser le json texte provenant dune réponse envoyer du client en http/request
Jai travailler avec de nombreuses bibliotheques web 2.0 ecrites en javascript et il serait très intéressant de pouvoir manipuler dune facon programmation les communications qui sont recu de la par des API javascript , sinon je ne vois pas comment nous pouvons avoir accès aux items qui sont dans un texte json.
Serait-il possible de mettre a notre disposition le code wdscript sauver en texte ansi car je ne peut pas avoir accès aux code sauver en windev15 ?
merci
non, je ne crois pas qu'il
non, je ne crois pas qu'il soit possible de créer des objets dynamiquement (définition de structures complexes) en wlangage,
ca serait peut etre possible mais ca necessite de declarer des structures en cascade qui deviennent chacune permanentes dans un executable windev une fois déclarées... (donc non libérée ensuite) .... trop compliqué à gérer pour le besoin actuel
il est certainement plus simple de n'envoyer que ce que l'on a besoin...
ajax
Japprécie les effort pour aller vers le web 2.0 mais la petite bibliotheque ne semble qua un stade embryonnaire.
La bibliotheque et les ide,api,grille sigma sont beaucoup plus conviviale et evoluer
ok sa manque de "bels and wisle" mais de base on y retrouve lessentiel pour faire un client-browser
avec le quel on peut faire des applications-web
Merci pour la mise a jour de ews 2.6
en ce qui concerne fast-cgi japprécirais une petit document sur comment lutiliser car je ne suis pas un pro et je ne pense pas meubler mes soirers a lire de la doc technique.
merci
librairies web 2.0
Pour les librairies "graphiques" web 2.0... Je ne peux pas les intégrer, ils sont énormes et souvent avec une licence...
YUI est gratuit, mais encore trop jeune et trop lent pour les grid...
J'attends donc encore un peu... et je vais certainement créer ou attendre un gestionnaire comme celui présent dans Symfony (sfDynamics) qui charge uniquement ce que l'on a besoin automatiquement...
pour le FastCGI... il n'y a rien de spécial à faire, c'est deja configuré dans EWS... c'est juste un moyen d'augmenter la vitesse de WDSCRIPT...... La fenetre de debugage est principalement utile pour débugguer wdscript (avec windev)
le principe de fonctionnement est expliqué sur cette page.... http://tanguy.ath.cx/index.php?q=fr/FastCGI
PS: Il y a un forum pour ce genre de questions.... ca permet aux autres de retrouver les infos ensuite...
code c++ pour conversion json vers objet wdscript
Bonjour,
jai fais un programme qui converti le texte json en variable wdlanguage en c++
il ne reste plus qu'a désérialiser pour avoir accès aux donnée.
je me demandais si vous pouviez l'inclure dans votre system ews
si oui, dite moi ou aller déposer le code
Envoyez moi un email,
Envoyez moi un email, tanguy.pruvot sur gmail.com
Bonjour , Jai fait de petits
Bonjour ,
Jai fait de petits scripts .wlf pour faire de lextraction de valeur a partir dune chaine de données JSON
jespere que vous le testerer et lincorporier dans une de vos prochaines versions de wdscript
merci
Bonjour voici quelques
Bonjour voici quelques fonctions améliorées pour gérer le format Json
Bonjour, merci pour ces
Bonjour, merci pour ces fonctions..
Concernant votre procédure CompteCaractere, vous pouvez utiliser ChaineOccurrence()