Lorsqu'une base dispose d'un pilote ODBC (Open Database Connectivity), elle devient accessible à partir de toutes les applications ou sites pouvant utiliser ODBC.
La base HFSQL disposant d'un pilote ODBC, elle peut donc être utilisée depuis des applications tierces sous Windows, ou Linux :
Si cette "standardisation" par ODBC facilite les échanges, il faut rester vigilant sous Linux car ODBC dispose de différentes implémentations.
En effet le pilote ODBC HFSQL pour Linux repose sur iODBC (http://www.iodbc.org). Afin d'accéder à une base HFSQL client/serveur ou HFSQL classic depuis une application ou un site quelconque sous Linux, il faut donc installer le manager iODBC. Par exemple sous Ubuntu, le package libiodbc-dev. Toute l'information nécessaire est fournie dans la page suivante de l'aide du pilote.
Il faut donc s'assurer que l'application qui va devoir accéder à HFSQL via son pilote aura bien la possibilité de passer par iODBC, et non pas UnixODBC qui peut également être utilisé.
Par exemple si l'accès à la base HFSQL doit se faire depuis un site PHP déployé sous Linux, il faut configurer le moteur PHP qui héberge le site, afin qu'il utilise iODBC et non pas UnixODBC (config PHP - iODBC).
Dans cette session de 20 minutes, vous découvrirez comment utiliser le champ cube ROLAP ( TCD - tableau croisé dynamique) de WINDEV pour synthétiser vos données Oracle et proposer à vos utilisateurs une interface d'aide à la décision puissante.
Dans cette session de 20 minutes, vous découvrirez comment utiliser les types énumération et combinaison du WLangage de WINDEV pour définir les paramètres de vos fonctions. Les avantages sont multiples : clarifier le code, fiabiliser l'appel des fonctions, faciliter la maintenance, ...
Windows 10 sera disponible le 29 juillet, incluant son nouveau navigateur Edge (ex "projet spartan"). Une mise à jour de WEBDEV est proposée en téléchargement, afin d'inclure ce nouveau navigateur dans le bouton de test "Go" !
Rappel important : afin d'obtenir un rendu satisfaisant dans tous les navigateurs récents, il est important d'utiliser la norme de génération "HTML 5" ou "HTML 5 Edge" :
Le billet suivant de notre blog rappelle les principales recommandations en vigueur pour la de conception de sites avec WEBDEV :
Dans cette session de 20 minutes, vous découvrirez comment utiliser WINDEV Mobile pour accéder à une base MYSQL (ou autre) depuis une application Android ou iOS. L'accès se fait grâce à une webservice fourni avec WINDEV, WEBDEV, et WINDEV Mobile.
Dans cette session de 20 minutes, en direct, vous découvrirez comment appeler un webservice REST renvoyant du JSON. WINDEV propose des fonctionnalités intégrées pour ce type de traitement.
Dans cette session de 20 minutes, vous découvrirez comment répliquer une base HFSQL mobile sous Android ou iOS avec une base centrale HFSQL Client/Serveur.
Dans cette session de 20 minutes, vous découvrirez comment afficher l'emplacement de vos agences/magasins/clients sur une carte interactive, quelle que soit la plateforme : Desktop, Web, Mobile.
Notez qu'un nouveau module a été créé pour le champ carte. Ce nouveau module évite une erreur si le champ carte est utilisé avant d'être totalement initialisé (cas d'une connexion Internet lente).
Lorsqu'un champ HTML d'une application WINDEV est affecté avec l'url d'une page complète, le framework se charge de :
effectuer une requête http avec l'adresse complète de la page,
récupérer la réponse afin de l'afficher dans le champ HTML.
Ceci est valable dans l'éditeur, en mode test (Go), et dans l'application compilée.
L'envoi de la requête http se fait en s'appuyant sur le navigateur Internet Explorer, par défaut dans son mode de compatibilité IE 7. Le "user agent" visible par le serveur qui traite la requête recevra donc "MSIE 7.0".
Astuce : on peut avec une simple page WEBDEV en mode AWP visualiser le "user agent" de la requête envoyée par le champ HTML d'une fenêtre d'une application WINDEV :
dans un projet WEBDEV créer une page "PAGE_TEST" en mode AWP,
dans le code de déclaration de la page, placer le code suivant :
ChaîneAffiche(NavigateurNom())
A l'appel de cette page, le serveur web qui héberge le site ne fera que renvoyer la chaîne de caractère donnée par la fonction ChaineAffiche, au lieu d'une page complète.
tester la page dans le navigateur (on peut voir le "user agent" du navigateur au passage),
copier l'url complète de la page dans la barre d'adresse du navigateur,
coller l'adresse dans la description d'un champ HTML d'une fenêtre WINDEV : dans l'éditeur ou en test, on peut ainsi voir le "user agent" utilisé par le champ HTML !
L'intérêt de cette astuce est minime, mais rappelle que l'utilisation d'une page en mode AWP combinée à ChaîneAffiche offre de très nombreuses possibilités !
Le fait que le champ HTML fasse l'interrogation en mode de compatibilité "MSIE 7.0" peut ne pas permettre l'utilisation de certaines pages. Par exemple si le champ HTML doit visualiser une page exploitant des fonctionnalités HTML 5 récentes, la page appelée peut ne pas renvoyer le résultat attendu, jugeant qu'une version de IE plus récente est nécessaire pour son interprétation. Un autre exemple, la page peut ne pas avoir le même aspect que dans un navigateur, car Internet Explorer dispose de plusieurs moteurs de rendu qu'il sélectionne en fonction du "user agent" du navigateur.
Astuce suivante : il est possible de modifier le "user agent" de la requête du champ HTML de WINDEV, via la base de registre :
lancer l'éditeur du registre REGEDIT,
dérouler l'arborescence jusqu'à : HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
créer une nouvelle valeur DWORD 32 bits, le nom de la valeur doit être celui de l'exécutable pour lequel le "user agent" doit être modifié, la donnée de la valeur doit être 11001 (décimal) pour que le "user agent" soit IE 11, 10001 si dans un cas particulier il faut "se faire passer" pour IE 10. Une liste exhaustive de valeur est disponible sur le site MSDN.
Exemple en ajoutant WDTST64.EXE dans la base de registre, l'exécutable du mode test (Go) d'une configuration de projet 64 bits, on peut voir que la page en test montre le "user agent" de IE 11 :
Alors que sans la clé de registre, le "user agent" est celui de IE 7 :
Lorsqu'une application doit obligatoirement utiliser un "user agent" déterminé pour le champ HTML, il est possible d'effectuer la mise à jour de la base de registre par programmation, par exemple en initialisation du projet :
sNomExecutable est une chaîne nVersionIE est un entier
//pour l'exécutable en cours sNomExecutable=fExtraitChemin(ExeInfo(exeNom),fFichier+fExtension) //Lecture du paramétrage actuel nVersionIE=RegistreLit("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",sNomExecutable) //Déjà IE 10 ou 11 de forcé ? SI PASnVersionIE DANS(10001,11001)ALORS //Non //on force IE11 nVersionIE=11001//10001 pour IE10, 11001 pour IE11 SI PASRegistreEcrit("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",sNomExecutable,nVersionIE)ALORS Erreur("Impossible de forcer la version de Internet Explorer",ErreurInfo()) FIN FIN
Dernière astuce, la perso-note qui va bien dans la fenêtre : lorsqu'un mode précis est forcé par programmation, ajouter une perso-note dans la fenêtre. Cela permet de garder l'information à l'esprit, afin de vérifier la pertinence de la version choisie dans le temps. En effet en forçant une version du navigateur, dans quelques années on forcera donc l'utilisation d'une ancienne version. Dans ce cas précis où Internet Explorer est censé ne plus évoluer, ça ne devrait pas être gênant ! Mais de façon générale, dès que l'on force un comportement d'un module externe, il faut penser que cela aura un impact sur l'utilisation du module externe lorsqu'il sera mis à jour.
Un nouveau Webinaire est programmé le jeudi 24 septembre à 11h.
Dans cette session de 20 minutes, vous découvrirez les différentes possibilités que vous offre WINDEV pour réaliser un dialogue Machine to Machine. Le dialogue Machine to Machine permet à plusieurs machines (PC, automates, terminaux, smartphones, tablettes, objets connectés, ...) de dialoguer sans intervention humaine.
Après la diffusion en directe, la vidéo restera disponible avec ce même lien.
Le mécanisme de sécurité du WLangage permet en cas d'erreur ou d'exception d'avoir un détail complet sur le code à corriger. Cependant un cas d'utilisation qui n'a pas été anticipé par le framework (les possibilités de création avec WINDEV Mobile sont infinies...), peut provoquer l'arrêt d'une application, sans indiquer le code exact en cause. Lorsque cela se produit l'application sur le périphérique Android affiche :
<NomAppli> s'est arrêté [OK] dans le cas d'un blocage dès le code du projet (aucune IHM de l'application n'a le temps de s'afficher),
"Erreur interne du framework WDJAVA" dans le cas d'un blocage dans le code d'une fenêtre ou d'un champ d'une fenêtre.
Dans ce cas exceptionnel où le WLangage ne donne donc pas d'indication sur l'origine de l'erreur, et que les dernières modifications effectuées sont trop nombreuses pour cerner immédiatement l'origine du défaut, il est possible d'utiliser un utilitaire du SDK Android : Monitor.
Voici la marche à suivre :
Lancer Monitor.bat, il est dans le dossier \Tools\ du SDK Android. Le périphérique (smartphone ou tablette) Android apparaît dans le volet "Devices". Par défaut toutes les actions en cours sur le périphérique défilent dans le volet "LogCat". Il s'agit du volet qui va être déterminant.
Dans le volet "LogCat" sélectionner "Error" dans la combo, et cliquer "Clear log". A partir de là l'utilitaire Monitor ne montre plus que les erreurs qui surviennent sur l'appareil.
lancer l'application sur l'appareil, et renouveler l'ensemble des actions qui conduisent au blocage.
Rechercher dans le volet "LogCat" le nom de l'application, et/ou le nom du package, et/ou la chaîne "wdjava", et/ou la chaîne "pcsoft". Attention la recherche différencie les minuscules des majuscules. Le volet "LogCat" fait défiler toutes les erreurs qui surviennent sur le périphérique. Toutes ne sont pas liées à l'application, mais cette recherche va permettre de repérer le traitement à l'origine du blocage, et donc de rectifier le code !
Un exemple : sous Android la fonction NumériqueVersChaine peut provoque un arrêt de l'application si elle est appelée avec un paramètre <format> qui ne correspond pas aux syntaxes documentées. Dans ce cas l'erreur WDJava est générée. Monitor permet avec le filtrage des erreurs et la recherche de "wdjava", de trouver qu'il s'agit de la fonction NumériqueVersChaine et ainsi de remonter au code qui est à la source du blocage :
Un nouveau Webinaire est programmé le jeudi 1 octobre à 11h.
Dans cette session de 20 minutes, vous découvrirez comment rendre vos applications multilingues (interface, message, alphabet, clavier, sens d'écriture, base de données).
Après la diffusion en directe, la vidéo restera disponible avec ce même lien.
Un nouveau Webinaire est programmé le jeudi 8 octobre à 11h.
Dans cette session de 20 minutes, vous découvrirez comment rendre vos applications plus réactives et plus performantes. Nous utiliserons pour cela les tâches parallèles de WINDEV.
Après la diffusion en directe, la vidéo restera disponible.
La LST 102 est annoncée, expédition à partir du 26 octobre 2015 en France métropolitaine. Prévoir une semaine supplémentaire pour les DOM-TOM et hors France.
Au sommaire ...
UN NOUVEAU GABARIT D'ANNUAIRE PROFESSIONNEL
CHOISISSEZ LES BONS STYLES D'UNE AMBIANCE (WEBDEV)
CRÉER UNE PALETTE AUX COULEURS DE MON ENTREPRISE (WEBDEV)
SITE DYNAMIQUE WEBDEV : SE PROTÉGER DES DÉTOURNEMENTS D'URL (WEBDEV)
AJOUTEZ VOTRE APPLICATION COMME CHOIX DANS LE MENU “PARTAGE” DE ANDROID (WINDEV Mobile)
PARTAGER DES FICHIERS ENTRE APPLICATIONS WINDEV OU WINDEV Mobile (IOS & ANDROID) PAR ONEDRIVE (WINDEV, WEBDEV, WINDEV Mobile)
ADOPTEZ LE LOOK “MATERIAL DESIGN” (WINDEV)
APPLICATION WINDEV AVEC MISE À JOUR AUTOMATIQUE SUR UN SERVEUR ... NE SOYEZ PLUS BLOQUÉ PAR L'UAC OU LA SÉCURITÉ ! (WINDEV)
ZONE RÉPÉTÉE : GÉRER UNE COCHE EN SÉLECTION MULTIPLE (WINDEV)
IOS / ANDROID : PILOTER L'APPAREIL PHOTO DU TÉLÉPHONE DEPUIS UNE PAGE WEBDEV (WEBDEV)
VOS MAILS SONT CLASSÉS EN “SPAM” ? CONTRÔLEZ VOTRE SERVEUR D'ENVOI D'EMAILS ! (WINDEV)
UTILISATION DES API OVH : SIMPLIFIEZ-VOUS LA VIE ! (WINDEV, WEBDEV, WINDEV Mobile)
UTILITAIRE : ANALYSER LES RESSOURCES CONSOMMÉES (WINDEV, WEBDEV, WINDEV Mobile)
BEST PRACTICE : ACCÉDER À DES DONNÉES DISTANTES ? (WINDEV, WEBDEV, WINDEV Mobile)
“MIO” : DES TERMINAUX INDUSTRIELS SOUS ANDROID (WINDEV Mobile)
UN ÉCRAN DE PRÉSENTATION POUR VOS APPLICATIONS MOBILES (WINDEV Mobile)
ADMINISTRER VOS PAGES FACEBOOK AVEC WINDEV, VOUS ALLEZ AIMER ÇA ! (WINDEV)
HFSQL : CONTRÔLER / LIMITER LE NOMBRE DE CONNEXIONS (WINDEV, WEBDEV, WINDEV Mobile)
XML / HTML : RÉCUPÉRER LE TEXTE “COMPLET” D'UN NOEUD XML (WINDEV, WEBDEV, WINDEV Mobile)
Une nouvelle version de WINDEV, WEBDEV et WINDEV Mobile 20 est disponible en téléchargement.
Il s'agit de la version 200067s disponible :
depuis WINDEV, WEBDEV et WINDEV Mobile par le volet "Accueil" du ruban, regroupement "Aide en ligne", bouton "Informations sur le Web", option "Mettre à jour",
Certains sites ont déjà des pages dédiées aux navigateurs mobiles, grâce à l'utilisation de la fonction NavigateurPlateforme :
// Affiche une page particulière pour les Smartphones SELONNavigateurPlateforme() CASNavigateurPlateformeAndroid,NavigateurPlateformeBlackBerry, ... NavigateurPlateformeiPhone,NavigateurPlateformeMobile, ... NavigateurPlateformeWindowsMobile,NavigateurPlateformeWindowsPhone PageAffiche(PAGE_Detail_Mobile) AUTRE CAS PageAffiche(PAGE_Detail) FIN
Cette solution peut donc au premier abord sembler équivalente au Dynamic Serving". La remarque m'a été faite hier lors de la première du TDF à Montpellier. Il est donc important de clarifier cet aspect, car les deux solutions ne sont au contraire absolument pas équivalentes !
Le fait de rebondir depuis une page sur une autre page avec la fonction NavigateurPlateforme n'est pas du "Dynamic Serving". Cela passe par un "rebond" qui :
est moins performant,
empêche :
le moteur de recherche de savoir qu'il y a deux pages à référencer en fonction du type de navigateur (user-agent) mobile ou desktop,
De plus le développeur doit gérer la liste des plateformes à considérer comme mobile, et assurer son évolution (pourra être remplacée par la nouvelle fonction NavigateurMobile en 21).
A l'inverse le "Dynamic Serving" géré au niveau du serveur d'application :
retourne directement et uniquement la page adaptée (sans page intermédiaire),
ajoute dans la réponse une entête HTML spécifique (HTTP "vary") qui permet au moteur de recherche de savoir que la page peut varier en fonction du user-agent. Le site sera alors considéré comme "mobile-friendly" par le moteur de recherche de Google, ce qui permet un meilleur référencement.
le moteur de recherche explorera les 2 pages : une fois en user-agent desktop, une fois en user-agent mobile, à travers la même URL. Ainsi le référencement n'est pas dilué.
L'utilisation du "Dynamic Serving" à la place d'un rebond fait avec les fonctions NavigateurPlateforme et PageAffiche est donc à privilégier pour tous les sites dont le référencement est capital !
Les sites sont maintenant utilisés sur différents types de périphériques, avec des résolutions pouvant être très variées.
Afin de gagner du temps lors des tests réels sur les différents appareils cibles, une option de débogage des navigateurs bien pratique est à connaître. Elle permet en effet sur le poste de développement, lors du test "Go" des pages, de se faire une idée très précise du rendu des pages :
dans leur version "desktop", pour navigateurs sur PC ou Mac,
lorsqu'elles sont consultées depuis un iPhone, un iPad, un Samsung S4, un Nexus 5, 6, 7 ...
Par exemple avec Chrome, une fois dans les options de débogage accessibles par la touche F12, il faut utiliser le bouton "Toggle Device Mode" (Ctrl+Shift+M) qui permet de passer en émulation "device mode" :
Une combo "Device" permet alors de sélectionner un périphérique, afin de visualiser le site comme s'il s'agissait d'un appareil mobile et non pas de la station de développement.
Par exemple ici le site est lancé depuis le test sur une station de développement sous Windows, mais son rendu est identique à celui obtenu sur un Apple iPhone 6 :
Le rendu standard du même site est le suivant :
Bien pratique pour tester la version desktop et la version mobile d'une page dans le cas d'un site avec rebond ou dynamic serving, ou l'adaptation d'un site responsive web design / bootstrap.
L'option est présentée ici sous Chrome, elle est également disponible dans Internet Explorer 11 et Edge avec F12 puis le volet "Emulation".