mardi 27 novembre 2012

Un petit truc rapide sur l'interface REST et les entitées

Au détour d'une présentation (p 37), j'ai aperçu la syntaxe suivante dans un Browser web :

http://127.0.0.1:8081/rest/Article(7)

et ceci retourne la chose suivante dans le Browser :


C'est simple et pratique... la valeur qui est entre les parenthèse à savoir ici 7, correspond à l'ID de l'entité (instance de la classe de donnée de type Article)

Et pour avoir la totale, utiliser la syntaxe suivante :

http://127.0.0.1:8081/rest/Article

Et pour finir le top c'est qu'il y a aussi un explorateur de données accessible par l'adresse suivante :

http://127.0.0.1:8081/walib/dataBrowser/index.html






lundi 26 novembre 2012

Une classe de données dans une page web

 Dans le précédant poste nous avons créer un classe de données, nous avons également vu quelques lignes de code pour jouer avec, et bien il y a encore plus simple....

Wakanda propose un certain nombre de composants d'interface (widget) qui s'utilisent via un Browser web pour manipuler les classes de données, le plus impressionnant de tous à ce moment est la DataGrid, je vous propose donc de faire une petite expérience avec.


Dans le dernier poste nous avions créé une Classe de données Article :

Ajout d'une page a notre projet: 

Maintenant nous allons ajouter une nouvelle page à notre projet Démo, pour cela cliquer dans la bar des bouton sur "New Page" et donnez lui un petit nom :



 Une fois le fichier créé, ce dernier est ajouté dans le WebFolder de votre projet, notez que par défaut une page "index" est créée. Cette dernière est la page par défaut de votre projet.
 Un éditeur de contenue de la page est également apparue dans la partie central de Wakanda Studio,
dans cette fenêtre il sera possible de concevoir votre page web à l'aide des différents Widget proposés.  La liste de ces Widgets devrait normalement augmenter avec la popularité de Wakanda car il est possible d'en créer de nouveau... à suivre... cela me rappelle Delphi et si cela suit la même courbe, ce ne sera que du bon....

 Si nous regardons de plus près l'interface voici ce que nous y trouvons :



 En haut à Gauche la liste des Widget, classer par type :
  • Automatic Controls : qui doivent être les composants avec une logique métier intégrée comme une grille de données avec les fonction d'édition ou un systeme de login complet
  • Form Controls : qui correspondent à décomposant standard d'affichage, avec leurs évènements (On Click, On Double Click) etc
  • Containers/Placeholders : Composant de structuration d'une page, notamment il y a le widget (objet) "Component", mais également le "Container" une sorte de "Div", le Dialog très utile pour afficher des messages bloquants, le "TabView" et l’impressionnant "Matrix"..
  • Les Miscellaneous Controls : Il y a parmis eux le "Canvas" à éxplorer bien sûre ;-), le Menu Bar pour réaliser les menus, etc...
  • Utilities : A explorer
  • External : Composants externes...
En dessous cette partie il y a les Source de données, notez qu'en entête de cette partie d'interface, il y an bouton qui est soit positionné sur "Model", soit sur "Datasources" :

  • En mode "Model" : Cela nous permet d'accéder à nos Classes de Données (que nous avons créer dans la partie "Model" de Wakanda Studio)
  • En mode "Datasource" : Cela nous permet d'accéder aux sources de données déclarées dans notre page. Noter qu'il y a cinq catégories de source de données, nous les explorerons plus tard ;-) !. Dans l'exemple ici, nous allons créer une source de données de type "Datastore Classes"
 Dans la partie droite de l'interface de Wakanda Studio nous avons les propriétés, évènements, Skin et Style de l'objet actif dans l'éditeur. Cette partie nous sera très utile pour jouer sur le comportement ou le paraître de nos composants.

Ajoutons le super composant "Grid" à notre fenêtre :


Pour cela vous pouvez sélectionnez le composant dans la liste, puis le glisser/déplacer dans la partie centrale :

Notons que l'interface nous invite alors à "Glisser/Déplacer" une source de données à l'intérieur de ce composant, essayons donc :



Notez que plusieurs choses ont changé dans votre interface :
Une source de données (Datastore Classes) à automatiquement été créée et ajoutée à votre page.


  1. Le Composant, affiche dynamiquement le titre des colonne en fonction des attribut qui ont été créer dans la Classe de données.
  2. Dans les propriétés du composant nous pouvons noter que la propriété "Source" est associée à l'objet "article" qui est le nom de la source de données de la page créée. La section inférieure contient la liste de colonnes qui ont été ajoutées au composant (par défaut: toutes).

Exécutons la page pour voir ce que cela donne :


 Pour cela il suffit de cliquer sur le bouton "Flèche verte et Page" dans la barre de bouton contextuelle :

Et voilà :

Bon nous verrons que nous pouvons améliorer ce résultat en jouant sur le style et autres...


vendredi 23 novembre 2012

Petit tour autour des classes de données

Les classes de données permettent de stocker des informations de manière persistante. C'est le rôle "Base de données" du framework Wakanda.
Comme c'est une classe et qu'elles sont objets, nous pouvons utiliser le concept d'héritage dessus. Ce point est très intérresant. Dans ce poste je vous propose d'abord de prendre contact avec le "Model".

Lorsque l'on met au point un modèle de données une des choses qui est utile, c'est de stocker la date de création de l'enregistrement et sa date de dernière modification. Ces informations permettront plus tard de développer des algorithmes de traitement différentiel. Par exemple s'il était nécessaire de faire des calculs complexes par regroupement, dans le cas d'un grand nombre de données, balayer l'ensemble des enregistrements pourrait prendre beaucoup de temps. Par contre si nous pouvons uniquement nous intéresser qu'au données qui ont été modifiées que depuis le dernier lancement du calcul cela optimise le temps de traitement.

Exemple de création d'une table dans le modèle de données

L'idée ici va d'être de créer une Classe de données "Article", puis nous allons ajouter le code nécessaire pour maintenir deux propriété de cette classe qui seront :
  • La date de création que nous nommerons : creDate
  • La date de modification qui sera nommé : modDate
Une fois Wakanda studio lancé, créer une nouvelle solution ( New > Solution), donner le nom que vous souhaitez à votre solution (ici : Demo),  puis dans la barre de bouton sélectioner le bouton "Model"

 Automatiquement un classe de données est créée pour vous et se nomme "DataClass1". D'après ce que j'ai lu dans le documents du site Wakanda les conventions de nommages sont les suivantes:
  • Pour les classes de données : Commencer par une majuscule, et pour chaque nouveau mot mettre la première lettre en majuscule. Je vous recommande bien sûre d'éviter tous genre d'accents, espaces, noms réservés. Par exemple : PremierSecondMot
  • Pour les propriétés (ou champs) : la première lettre est en minuscule et pour tout autre mot première lettre en majuscule (comme la convention de nommage Java). Par exemple : nom, dateDeNaissance.
 Pour changer le nom de la classe créée par défaut double cliquer sur son nom et renommer la en "Article". Noter au passage de l'utilisation du singulier. En effet les évangélistes de Wakanda recommandent de réserver le plurielle pour les collections, je ne rentrerais pas dans le détail à ce sujet maintenant, mais ce nom est modifiable dans la fenêtre qui concerne les propriétés de la classe normalement sur la droite :

Vous pouvez noter qu'une première propriété (ou attribut) à été ajoutée à notre classe : ID, ceci sera un nombre qui nous permettra d'identifier de manière unique une "Entité" (une instance) de notre classe.

Maintenant nous allons pouvoir ajouter nos attributs (propriétés) que nous souhaitons utiliser pour définir un article, je propose les champs suivants :
  • code de type caractère et unique : qui sera un identifiant "humain" donc unique et utilisable par nos futur utilisateur. Il jouera le même rôle que l'ID, mais avec un coté plus humain...
  • nom de type caractère : qui sera le nom de l'article.
  • et nos deux dates (creDate et modDate) de type date.
Pour ce faire il suffit d'utiliser le petit bouton (+) en vert en face de "Attributes" :












En suite pour spécifier le type, vous puvez utiliser la touche "Tab" et saisir le début du type, dans notre cas "str..." pour "string".






 Faire de même pour les autres "attributs" :


Et voilà vous venez de créer votre première classe de persistance dans Wakanda (ou première table de données dans le monde traditionnel des base de données).



Maintenant nous allons nous voir comment faire pour utiliser cette classe. Wakanda propose d'utiliser un fichier Java Script qui s'exécutera du coté serveur comme un peu une console.


Création d'un script de test

Dans la barre de bouton cliquez sur "New JS" :

Et à partir de ce point nous pouvons écrire tout sorte de code en Java Script. Dans ce que j'ai peu comprendre des différente vidéo voici que petits trucs pour jouer avec les Classe de données, bien sûre il existe plein d'autre méthodes....

La variable ds :

Cette variable est un objet qui va nous permettre d'accéder à toutes nos classe de données, ds comme dataSource...

En utilisant la méthode des chemin de points, nous pouvons accéder à notre classe "Article", par exemple si je souhaite conaître le nombre d'article enregistré j'écrirais la syntaxe suivante :

var nbEnregistrements = ds.Article.length;

De plus il faut noter que la dernière ligne du script pourra être utilisée pour retournner des information, le système cherchera à l'évaluer comme un printf ou un stdout etc...

Je vous propose d'essayer le petit script suivant :

Si vous souhaitez voir le contenue de la table entièrement, remplacer tous le code par :



Comme nous pouvons le voir dans la dernière copie d'écran, les date n'ont pas été mise à jour... C'est un peu normal vu que nous n'avons encore rien fait....



 Dernier petit truc pour la route : si vous souahitez tout supprimer dans votre nouvelle classe suite à de nombreux test, vous pouvez utiliser l'instruction suivante :

ds.Article.remove();





jeudi 22 novembre 2012

Wakanada Euh... c'est quoi ?


Wakanda Studio est un peu l'EDI qui permet d'editer son "site web" ou plus exactement sont application web. Le principe de Wakanda est JS.everyWhere() qui signifie apprend Java Script et tait toi !
Mais bon, d'un autre coté Java Script est connu... dans le monde du Net, donc cela ne sera pas une perte de temps....
Alors OK Java Script dans mon Webrowser pour faire des applications web, ça me va... mais pourquoi donc everyWhere ? Et bien parce que il n'y a pas que dans le browser que nous allons programmer, mais aussi coté serveur (un peu comme on fait du PHP ou du JSP), et le truc c'est que là aussi c'est JavaScript... héhé vous voyez un peu mieux maintenant !

Et ce n'est pas tout, car le Wakanda Server qui est un peu le "Web Server" customisé (genre qui contient plein de trucs incompréhensibles dedans, mais bon cela nous regarde pas..., on verra ça plus tard), contient un moteur de persistance des données.... N'ayez pas peur... c'est un truc capable de stocker d'une façon logique des informations sur le serveur et les retrouver plus tard.... Ah ça y est là au fond il y en a un qui fait le malin avec Oracle, My SQL, SQL Server.... et son fameux SQL !
Eh bien non !, dans le Wakanda Server, il y a un truc qui appartient à la série NoSQL database... héhé encore un truc tordu....
Alors pour juste effleurer le sujet, les données dans Wakanda serveur sont représentées par des Classes (un objet), et ces classes quand elles sont instanciées (en d'autre mot: créées) cela représente une entité (autrement dit une ligne d'une table dans l'ancien monde des bases de données). Mais comme c'est une classe, et bien nous pouvons y ajouter des fonctions (méthodes) à cette classe qui peuvent donc jouer sur le comportement de la Classe et de ces données !
Devinez quoi, dans quel langage on écrit les fonctions..... eh oui en Java Script !

Et paf, nous y voilà, il y a bien du JS partout : JS dans le front (Webrowser), JS dans le metier (Code du site) et JS dans la base de données.... si vous souhaitez faire du Wakanda, il va falloir aimer le JS.... et c'est bien là où je suis newbie.....

Bref, c'est ultra light comme description, mais ça pose le décore...

Yo! Ca y est je m'y met a Wakanda !

Bonjour à tous !

Bon voilà, un matin je me suis dit que 20 ans de développement en C++/DELPHI et autre assembleur, ne servaient plus à grand chose dans le monde du Net d'aujourd'hui... :-(

Et oui !, à l'aube du HTML5 & CSS3 et de la Cloud mania, je fais grise mine avec mon gcc (mais si beaucoup disent... "mais non c'est la mère des langages blabla"...). Delphi m'a fait découvrir le concept de composants et du RAD (Rapid Application Development)... trop classe pour faire des applications en 2 cuillères à soupe (euh oui des très grosses alors !... ;-) )

Après j'ai été faire un p'tit tour de JSP, PHP, Python, Java et plein d'autre.... pas de coup de foudre; fallait repartir de zéro, se rettaper des nuits blanches pour assimiler les Librairies etc....

Et puis Android.... ça c'est à cause du téléphone de ma copine.... (euh en faite ma femme) et puis Go (google langage qui va révolutionner le mode -sic-). Et puis Windows 8... Aie ! Y-aie !, j’attends la tablette pro !

Et en attendant, un bon framework pour faire du Rad sur du Web, une application qui s'exécute dans un Webrowser.... Ah j'ai essayé des trucs du genre Django ou Symphony ...

Et Paf !, je suis tombé sur Wakanda (via un livre blanc de Programmez pour les connaisseurs).... Et justement ma femme commençait à s'arracher les cheveux sur la gestion d'une association qui gère la mise en relation de membre avec un petit producteur d'œufs local bio.... Bref il n'y a pas d'APP pour ça (-sic- Iphone beuh...). Donc me voilà au turbin pour faire une APP pour ça...

Alors voilà, cela fait une semaine que je me fais des soirées vidéo sur le thème (d’ailleurs ceux qui connaissent la langue de Shakespeare, je vous recommande la play list Youtube.

Et je suis un vrai newbie -oups- en développement Web.... Donc pour me souvenir de ce que j'apprends; j'ai entrepris d'ouvrir ce blog pour poster toutes mes découvertes et dans la langue de Molière héhé !