EKAMELEON - DevBlog ActionScript & ECMAScript

Aller au contenu | Aller au menu | Aller à la recherche

lundi, mars 1 2010

Signals and Receivers

Generality

The "signal engine" include in the package system.signals is a very easy ActionScript 3 messaging tools.

With the Signaler interface we can define objects who communicates by signals and can be use to create a light-weight implementation of the Observer pattern. A signal emit simple values with its own array of receivers (slots). This values can be strongly-typed with an optional internal checking process.

Receivers can be defines with a simple function reference or a custom objects who implements the interface system.signals.Receiver .

Receivers subscribe to real objects, not to string-based channels andEvent string constants are no longer needed like W3C DOM 2/3 event model.

Interfaces

The system.signals package contains two interfaces : Signaler and Receiver.

The Signaler interface is simple but contains all important methods to deploy your signals.

Lire la suite...

jeudi, août 27 2009

D - Chargement de ressources externes ( Partie 5 - localization )

Les ressources de type "i18n" (localisation)

Généralités

Il est très important de pouvoir "localiser" (ou régionaliser) nos applications. Localiser une application permet de rendre dynamique son contenu (texte, sonore ou autres) en créant une interface utilisateur qui peut changer en fonction d'une langue en particulier. La localisation d'une application permet d'améliorer l'accessibilité pour différents utilisateurs et il est certain qu'avec toutes les difficultés que l'on peut avoir pour communiquer de façon général, il est tout de même sympathique de pouvoir le faire avec le plus grand nombre dans le monde entier.

Une bon moteur de localisation permet de changer à tout moment les traductions et éléments graphiques de l'application en fonction de données traduites dans plusieurs langues. Il est certain que le plus souvent la localisation d'un site passe par une page d'accueil simple qui permet de diriger l'utilisateur vers une version spécifique de l'application avec un contenu régionalisé.

Fonctionnalités importantes du moteur de localisations définies dans AndromedAS :

  • Externalisation des traductions et documents.
  • Utilisation de fichiers ou données externes encodées en UTF8.
  • Moteur dynamique au "runtime". La localisation doit être totalement dynamique et doit intervenir après la compilation (plus léger et plus simple à maintenir)
  • API simplifiée permettant de centraliser les mises à jours de l'interface utilisateur via un mapping utilisant plusieurs stratégies selon les besoins.
  • Par défaut, utilisation du format de donnée eden ou JSON (http://www.json.org). Malgré tout il est assez simple de créer un module de parsing basé sur une autre notation comme du XML.

Dans Flash et surtout dans le framework de base ActionScript nous trouvons la propriété flash.system.Capabilites.language qui permet à tout moment de renvoyer le code langue du système dans lequel l'application swf vient d'être lancée. L'ActionScript se base sur des noms des "codes langue" au format ISO 639-1, par exemple la propriété language aura pour valeur "fr" si le système par défaut est un système français.

Implémentation du moteur de localisation de AndromedAS

Dans AndromedAS le moteur de localisation se trouve dans le package andromeda.i18n.

1 - La classe andromeda.i18n.Lang

La première classe que nous allons étudier dans ce package est la classe andromeda.i18n.Lang qui permet d'énumérer les "codes langue" par défaut définis par la norme ISO 639-1 dans le FlashPlayer.

Cette classe donne un outil simple pour valider dans vos applications les langues disponibles.

Il est ainsi possible d'ajouter d'autres langues en cas de besoin dans la liste des langues par défaut du FlashPlayer mais bien entendu elle ne seront pas prises en compte automatiquement par la propriété flash.system.Capabilities.language (AS3) du FlashPlayer.

Voici un exemple d'utilisation de cette classe :

import asgard.i18n.Lang ;
 
trace( "Lang.ES.toString() : " + Lang.ES.toString() ) ; // es
trace( "Lang.ES.valueOf()  : " + Lang.ES.valueOf()  ) ; // es
trace( "Lang.ES.toSource() : " + Lang.ES.toSource() ) ; // new andromeda.i18n.Lang( "es" , "Spanish" )
trace( "Lang.ES.label      : " + Lang.ES.label      ) ; // Spanish
 
trace( "Lang.get('fr') == Lang.FR : " + ( Lang.get("fr") == Lang.FR ) ) ; // true
trace( "Lang.validate('fr') : " + Lang.validate('fr') ) ; // true
trace( "Lang.validate( Lang.FR ) : " + Lang.validate( Lang.FR ) ) ; // true
 
trace( "Lang.LANGS : " + Lang.LANGS ) ;
// {pl:pl,nl:nl,es:es,tr:tr,it:it,da:da,pt:pt,fi:fi,zh-CN:zh-CN,no:no,ja:ja,de:de,ru:ru,fr:fr,zh-TW:zh-TW,xu:xu,ko:ko,en:en,sv:sv,cs:cs,hu:hu}
 
trace( "Lang.LANGS.size() : " + Lang.LANGS.size() ) ; // 21

2 - Fichier externe et nomenclature

Les données externes permettant la création des différentes versions du contenu de l'application localisée doivent être par défaut au format eden. Le format eden permet de créer rapidement des fichiers de configuration simples.

En général, il est possible d'utiliser une nomenclature spécifique pour créer les fichiers textes externes de localisation. Par exemple pour créer un fichier de configuration en français avec un contexte spécifique, il suffira de créer le fichier :

  • "locale/localize_fr.eden".

Nous isolons donc cette notation en la divisant en 4 éléments distincts : {path}{prefix}{lang}[suffix}

Il existe une interface simple qui permet de créer facilement des objets qui permettent de charger les fichiers de localisation.

Lire la suite...

jeudi, avril 30 2009

La classe asgard.display.Background

Description

La classe Background est une classe simple mais très efficace que j'utilise dans pratiquement tous mes projets AS3. Cette classe hérite de la classe flash.display.Sprite et permet de générer des zones graphiques rectangulaires. Ces zones peuvent aussi bien remplir l'intégralité de la zone visible du FlashPlayer ou plus simplement servir de fond pour divers éléments graphiques d'une application (menus, listes, lecteur vidéo, etc.)

Cette classe utilise les API dynamiques de dessins pour générer très simplement un rectangle coloré (uni ou dégradé) ou texturé en utilisant les outils de dessins disponibles dans PEGAS.

Note : Je ne vais pas rentrer trop dans le détail ici sur le moteur de dessin de PEGAS car cette implémentation nécessite une série de tutoriels précis et complets. Je ne vais donc pas trop parler dans les exemples qui suivent des classes spécifiques de PEGAS mais n'hésitez pas en cas de problème à me poser des questions sur le sujet en attendant que je trouve le temps d'écrire les articles manquants sur le sujet.

Les bases

Pour commencer voyons tout simplement comment créer via quelques lignes de codes une zone rectangulaire avec la classe Background :

import asgard.display.Background ;
 
import pegas.draw.FillStyle ;
 
var area:Background = new Background() ;
 
area.x = 25 ;
area.y = 25 ;
 
area.fill = new FillStyle( 0xD97BD0 , 0.8 ) ;
area.w    = 400 ;
area.h    = 300 ;
 
addChild( area ) ;

Le code ci-dessus permet de générer une zone rectangulaire de 400 pixels de large (w) par 300 pixels de hauteur (h) avec une couleur de remplissage 0xD97BD0 et une transparence de 80% (alpha).

Dans la classe Background nous utilisons les propriétés virtuelles "w" et "h" pour définir la largeur et la hauteur absolues que nous voulons attribuer à notre zone rectangulaire. Je parle ici de taille "absolue" car finalement même si nous attribuons les valeurs 400 et 300, le rectangle n'aura peut être pas au final cette taille si l'on regarde les propriétés classiques "width" et "height" du display, surtout si nous appliquons à notre zone rectangulaire un contour.

Je reprends l'exemple précédent en ajoutant un contour avec la propriété "line" de la classe Background :

import asgard.display.Background ;
 
import pegas.draw.FillStyle ;
import pegas.draw.LineStyle ;
 
var area:Background = new Background() ;
 
area.fill = new FillStyle( 0xD97BD0 , 0.8 ) ;
area.line = new LineStyle( 2, 0xD97BD0, 0.6 ) ;
area.w    = 400 ;
area.h    = 300 ;
 
addChild( area ) ;

Dans l'exemple ci-dessus j'applique sur la zone rectangulaire un contour avec une épaisseur de 2 pixels avec la propriété "line" qui prend pour valeur un objet de type LineStyle. Avec un petit test très simple nous pouvons isoler la différence entre les propriétés w/h et width/height :

Lire la suite...

jeudi, janvier 1 2009

D - Chargement de ressources externes ( Partie 4 - config )

Très bonne année 2009 et surtout bonne santé !!

Je commence donc cette année avec l'avant dernier article du chapitre D sur les ressources externes des fichiers de configuration d'une fabrique IoC :)

J'aurai pu faire un simple petit article classique mais je préfère faire d'une pierre deux coups ;)

J'espère que cette année 2009 me laissera le temps de continuer mon travail sur la version 2 de VEGAS avec la fusion dans Maashaack de la plupart des packages system.events, system.process et system.ioc !

Sinon la bonne résolution pour 2009 c'est de débuter le projet de GUI AIR pour créer des RIA facilement basé sur eden et IoC + un petit projet qui me tiens à coeur avec Zwetan ... un projet de flibustier et qui sent bon le bateau en pleine mer ou dans l'espace ??... enfin je me comprends lol

Je tiens à remercier tous ceux qui m'ont aidés pendant 2008 et qui ont encore le courage de le faire cette nouvelle année pour faire avancer le projet ;)

PS : Pour ma part j'attends en 2009 des news importantes sur le futur de l'ActionScript avec AS4 !

Je peux maintenant vous laisser le temps pour lire ce nouvel article sur les ressources de type "config". Bonne lecture à tous :)

Lire la suite...

samedi, décembre 13 2008

D - Chargement de ressources externes ( Partie 3 )

Petite introduction

Avec la 3ème partie de ce chapitre nous allons étudier l'utilisation des ressources de type "font", "style" et "xml" dans les fichiers de configuration d'une fabrique IoC basée sur VEGAS et son extension AndromedAS. Ces 3 types de ressources vont vous simplifier la vie pour mettre en place vos applications.

Bonne lecture à tous :)

4 - Les ressources de type "style"

Cette ressource permet de charger un ou plusieurs fichiers texte contenant une feuille de style au format CSS qui permettra de définir le style des champs de texte dynamiques d'une application. Cette ressource permet en même temps de créer dans la fabrique IoC une définition d'objet qui servira de référence singleton pour utiliser par la suite cette feuille de style (flash.text.StyleSheet).

Commençons par définir dans un fichier texte "style/style.css" une classe de style que nous pourrons charger et utiliser ensuite dans les champs de textes dynamique de notre application.

.my-style 
{ 
    font-family: Verdana;
    font-size: 11px;
    font-weight: bold;
    color: #FEF292; 
}

Pour charger une ressource de type "style" il suffit de définir un objet générique dans l'attribut "imports" d'un fichier de configuration externe d'une fabrique IoC avec la signature suivante :

{ resource : "style/style.css" , type : "style" , id : "style_sheet" }

Lire la suite...

dimanche, décembre 7 2008

D - Chargement de ressources externes ( Partie 2 )

Voici la seconde partie du chapitre D qui traite des chargements de ressources externes pendant l'initialisation d'une fabrique IoC basée sur AndromedAS. Nous allons voir tout particulièrement les ressources de type "assembly".

3 - Les ressources de type "assembly"

Les ressources de type "assembly" servent principalement à charger des swf externes ou des images dans l'application principale de la fabrique IoC.

Le plus souvent il sera pratique d'utiliser des ressources au format swf qui serviront de bibliothèques externes partagées contenant des classes non définies dans l'animation principale mais aussi des éléments graphiques, sonores, vidéos, etc.

Ces ressources peuvent donc charger des fichiers de type : swf, jpg, png et gif

Nous avons vu que lorsque nous créons une définition d'objet dans un conteneur léger la propriété "type" de la définition correspond à un type de donnée ou une classe qui doit être présent en mémoire dans l'application au moment de la compilation ou après la compilation (runtime). Dans le cas contraire la fabrique IoC aura du mal à trouver en mémoire la classe (ou fonction constructeur) nécessaire pour créer l'objet correspondant.

Ces ressources permettront également dans un cadre plus étendu de définir dynamiquement une définition d'objet qui sera injectée dans la fabrique une fois le swf ou l'image externe chargé. Cette définition d'objet servira de lien entre la fabrique IoC et l'asset externe chargé dans l'application principale.

Pour utiliser cette fonctionnalité avancée il faut absolument utiliser l'attribut "id" de la ressource définie dans le fichier de configuration externe du contexte IoC du conteneur. Si la ressource de type "assembly" est définie sans un identifiant "id" valide alors le fichier externe sera chargé et placé en mémoire mais la fabrique IoC n'aura aucun moyen de cibler un élément contenu dans le fichier externe chargé.

Lire la suite...

dimanche, novembre 30 2008

D - Chargement de ressources externes ( Partie 1 )

J'attaque (enfin) les derniers articles sur les ressources externes chargées pendant l'initialisation d'une fabrique IoC. Ces articles vont me permettre de terminer la série d'article déjà commencée depuis quelques mois sur l'implémentation IoC de AndromedAS.

Depuis le dernier article (partie C) pas mal de choses ont bougés au niveau de VEGAS et ses extensions mais je vous en parlerai dans peu de temps dans un autre article ;)

Pour ceux qui découvrent dans cet article le design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles à lire avant d'entamer celui-ci :

Je vous conseille également d'aller faire un tour sur le Google Code du projet :

  • http://code.google.com/p/vegas/
  • http://code.google.com/p/vegas/wiki/InstallVEGASwithSVN

Pour toutes vos questions sur VEGAS et ses extensions ou suivre les nouveautés n'hésitez pas à vous inscrire sur le Google Groups :

1 - Généralité

Un objet "import" peut être défini dans tous les fichiers externes de configuration et d'initialisation d'une fabrique IoC.

Cet objet est facultatif et sera interprété par les chargeurs basés sur la classe andromeda.ioc.net.ObjectFactoryLoader, il contient des objets génériques simples qui permettent de définir une collection de différentes ressources externes qui seront chargées pendant l'initialisation de la fabrique et utilisées ensuite pendant la création des définitions d'objet mais aussi à n'importe quel autre moment dans le cycle de vie de l'application.

1-1 - Utilisation de plusieurs fichiers de configuration pour initialiser le conteneur léger.

Le fichier de configuration principal chargé par la classe ECMAObjectLoader peut être découpé en plusieurs sous fichiers chargés récursivement les uns dans les autres.

Pour charger des sous fichiers de configuration dans un fichier externe, il faut insérer à la base de l'objet principal contenu dans le DOM de configuration un attribut "imports" de type Array qui contiendra une suite d'objets génériques qui définissent les fichiers que l'on souhaite charger.

Exemple :

imports =
[
    { resource : "logging.eden"    } ,
    { resource : "view.eden"       } ,
    { resource : "controller.eden" } 
] ;

Chaque fichier chargé ci-dessus contiendra lui aussi des définitions d'objet ou d'autres définitions de ressources qui permettront d'initialiser le conteneur léger et l'application. Cette utilisation basique pour charger des ressources au format eden est en quelque sorte la partie immergée de l'iceberg car il est possible d'aller beaucoup plus loin avec l'attribut "import".

Lire la suite...

samedi, septembre 13 2008

C - Configuration d'une fabrique IoC

Nous allons aborder dans cet article la configuration des fabriques IoC.

Pour ceux qui découvrent dans cet article le design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles à lire avant d'entamer celui-ci :

Comme toujours je vous rappelle rapidement les liens importants pour installer VEGAS et poser des questions à propos des concepts définis dans mes articles :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

  • http://code.google.com/p/vegas/
  • http://code.google.com/p/vegas/wiki/InstallVEGASwithSVN

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

VEGASoS : http://groups.google.com/group/vegasos

Introduction

Les fabriques IoC dans AndromedAS sont configurables. Il est possible de définir les paramètres généraux de configuration d'une fabrique en alimentant le contenu de sa propriété "config".

La propriété "config" est un objet de type andromeda.ioc.factory.ObjectConfig. Voici la liste de ses attributs disponibles dans cet objet de configuration :

config

Défini un objet servant de configuration globale dans la fabrique ou l'application utilisant cette fabrique.

defaultInitMethod

Défini le nom de la méthode par défaut à utiliser dans toutes définitions d'objet au moment de l'initialisation d'un objet généré avec l'une d'elles.

defaultDestroyMethod

Défini le nom de la méthode par défaut à utiliser dans toutes définitions d'objet au moment de supprimer un objet singleton généré avec l'une d'elles.

identify

Défini globalement la politique d'identification automatique des objet qui implémentent l'interface Identifiable générés dans la fabrique IoC.

locale

Défini un objet localisé servant de base pour alimenter les définitions d'objet de la fabrique selon les besoins avec des valeurs localisées.

lock

Défini globalement la politique du mode de sécurité implémenté par tous les objets ILockable générés via la fabrique IoC.

root

Défini la référence de la scène principale de l'application liée à la fabrique IoC, cette valeur permet d'utiliser dans les attributs "ref" des définitions d'objet l'expression "#root"

throwError

Défini ou désactive la diffusion des erreurs pendant l'initialisation de la fabrique. Par défaut cet attribut est true.

typeAlias

Défini les alias utilisés au moment de filtrer les types dans les définitions d'objet (si la propriété typePolicy a pour valeur "alias" ou "all").

typeExpression

Défini les expressions de formatage utilisées pour filtrer les types dans les définitions d'objet (si la propriété typePolicy a pour valeur "expression" ou "all").

typePolicy

Défini la politique de filtrage du type défini dans les définitions d'objet du conteneur léger au moment d'instancier un nouvel objet pour un identifiant donné.

useLogger

Défini le mode de diffusion des messages d'information, warning, erreurs, etc. de la fabrique entre un simple trace() ou le modèle de log défini dans VEGAS.

Lire la suite...

jeudi, août 14 2008

[VEGAS] B - Les définitions d'objets (Partie 5/5)

Voici la 5ème et dernière partie de ce long chapitre basé sur les définitions d'objet dans un conteneur IoC. Ce chapitre se concentre sur une particularité du framework basé sur l'implémentation d'outils d'évaluations permettant de filtrer et de transformer selon les cas les objets générés par la fabrique.

Pour ceux qui découvrent dans cet article le design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles sur ce blog que je vous conseille vivement de lire les articles suivant avant de passer à la suite :

Comme toujours je vous rappelle rapidement les liens importants pour installer VEGAS et poser des questions à propos des concepts définis dans mes articles :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

Remarque : En définissant convenablement votre abonnement sur le Google Groups vous pourrez recevoir régulièrement des mails à chaque fois qu'un membre intervient sur celui-ci, très pratique pour suivre les conversations sous forme de mailing-list.

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh qui sert un peu de point central pour tous les projets opensource sur lesquels je travaille actuellement :

Il est tant de vous attaquer à la dernière partie de ce chapitre qui je l'espère vous apportera tous les éléments pour vous lancer dans l'utilisation d'une fabrique IoC dans vos prochains projets ActionScript :)

Lire la suite...

vendredi, août 8 2008

[VEGAS] B - Les définitions d'objets (Partie 4/5)

Voici la 4ème de notre second chapitre consacré aux différentes stratégies utilisées par la fabrique pour créer un objet avec une définition d'objet.

Pour ceux qui découvrent dans cet article le monde merveilleux du design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles sur ce blog que je vous conseille vivement de lire les articles suivant avant de passer à la suite :

Comme toujours je vous rappelle rapidement les liens importants pour installer VEGAS et poser des questions à propos des concepts définis dans mes articles :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

Remarque : En définissant convenablement votre abonnement sur le Google Groups vous pourrez recevoir régulièrement des mails à chaque fois qu'un membre intervient sur celui-ci, très pratique pour suivre les conversations sous forme de mailing-list.

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh qui sert un peu de point central pour tous les projets opensource sur lesquels je travaille actuellement :

Vous pouvez à présent lire ce nouvel article tranquillement :)

Lire la suite...

[VEGAS] B - Les définitions d'objets (Partie 3/5)

Cette 3ème partie du second chapitre consacré au Design Pattern IoC dans VEGAS et sur le Cycle de vie d'un objet configuré avec une définition d'objet.

Cet article sera un peu plus court que les précédents mais également un peu plus technique car il met en avant certains attributs spéciaux définis dans les définitions d'objets.

Ces attributs influences l'objet généré par la fabrique durant son initialisation mais aussi pendant les moments clés de son cycle de vie dans l'application.

Pour ceux qui découvrent dans cet article le monde merveilleux du design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles sur ce blog que je vous conseille vivement de lire les articles suivant avant de passer à la suite :

Comme toujours je vous rappele rapidement les liens importants pour installer VEGAS et poser des questions à propos des concepts définis dans mes articles :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

Remarque : En définissant convenablement votre abonnement sur le Google Groups vous pourrez recevoir régulièrement des mails à chaque fois qu'un membre intervient sur celui-ci, très pratique pour suivre les conversations sous forme de mailing-list.

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh qui sert un peu de point central pour tous les projets opensource sur lesquels je travaille actuellement :

Vous pouvez maintenant reprendre la lecture de ce chapitre ! ;)

Lire la suite...

samedi, août 2 2008

[VEGAS] B - Les définitions d'objets (Partie 2/5)

Ce nouveau article va se concentrer tout particulièrement sur les attributs principaux d'une définition d'objet dans un conteneur IoC basé sur le moteur implémenté dans VEGAS.

Pour ceux qui découvrent dans cet article le monde merveilleux du design pattern d'Inversion de contrôle avec VEGAS et qui n'ont pas eu encore le temps de consulter les articles précédents, voici une liste rapide des derniers articles sur ce blog que je vous conseille vivement de lire avant de passer à la suite :

Comme toujours je vous rappele rapidement les liens importants pour installer VEGAS et poser des questions à propos des concepts définis dans mes articles :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

Remarque : En définissant convenablement votre abonnement sur le Google Groups vous pourrez recevoir régulièrement des mails à chaque fois qu'un membre intervient sur celui-ci, très pratique pour suivre les conversations sous forme de mailing-list.

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh qui sert un peu de point central pour tous les projets opensource sur lesquels je travaille actuellement :

Vous pouvez maintenant reprendre votre lecture ! ;)

Lire la suite...

vendredi, août 1 2008

[VEGAS] B - Les définitions d'objets (Introduction - 1/5)

Voici un nouvel article qui servira d'introduction au second chapitre (divisé en 5 parties) qui essaiera de dévoiler une part importante des secrets que renferme l'implémentation du moteur d'IoC de VEGAS.

Dans ce chapitre, je vais vous parler tout particulièrement des définitions d'objets et surtout de tous les attributs qui vont permettre de les configurer. Une bonne maitrise des définitions d'objets permet d'aller très loin dans la conception d'une RIA basée sur un moteur IoC.

Pour ceux qui découvrent le monde merveilleux du design pattern d'Inversion de contrôle avec VEGAS et pour les autres aussi, je vous invite à lire attentivement (si ce n'est pas encore fait) le premier chapitre de cet article sur le design pattern IoC :

Je me permets de vous rappeler tout de même les liens importants pour installer VEGAS et poser des questions sur le sujet :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups du projet :

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh :

Nous pouvons maintenant commencer l'étude des définitions d'objets dans un conteneur IoC.

Bonne lecture à tous et n'hésitez pas à me poser des questions (sur le Google Groups) ou à me donner vos impressions (ici en commentaire sur le blog) :)

Lire la suite...

mardi, juillet 22 2008

[VEGAS] A - Design Pattern d'inversion de contrôle - Généralités

IoC ? Injection de dépendance ? Conteneur Léger ... depuis quelques temps maintenant nous entendons parler de ce Design Pattern très puissant qui révolutionne la construction des applications orientées objets. Ce Design Pattern est vraiment pour moi indispensable une fois bien maitrisé et permet d'aller loin, très loin !

Depuis plusieurs mois maintenant je me suis lancé dans la construction de ma propre implémentation de ce pattern en m'inspirant d'une part de ce qu'il se fait de mieux à l'heure actuelle dans ce domaine ( Spring, Parsley, etc..) mais surtout des problèmes et besoins que je peux rencontrer chaque jour dans mes productions. Je remercie d'ailleurs tous ceux qui ont pris le temps de me supporter et de prendre le temps de poser un oeil sur mon code et au final qui m'ont aidé à aller au bout d'une version 1 finale (ou presque.. je finiolle :D ) de VEGAS et ses extensions.

La version AS3 de VEGAS est composée de plusieurs extensions très solides et spécialisées. Mais AndromedAS avec ses outils d'IoC, etc. est devenu le noyau dure du framework pour créer avec facilité une RIA moderne et fonctionnelle aussi bien dans Flash, Flex, ou dans une application AIR.

Je commence donc ici par un premier chapitre de mon énorme article basé sur le Design Pattern IoC dans VEGAS qui va se découper en plusieurs parties ici sur ce blog et qui finira au bout du compte en livre opensource disponible très prochainement sur les pages officielles du projet et aussi sur Google Documents. J'ai encore pas mal de fonctionnalités à documenter car la bibliothèque IoC s'est énormément étoffée ces derniers mois (pour la bonne cause).

J'espère que cette introduction, vous permettra de vous faire une idée clair et précise des bases du pattern IoC mais surtout de l'orientation que j'ai pu prendre pour l'implémenter. Cet article reste ouvert à tous commentaires et s'accompagnera très bientôt d'une seconde partie qui précisera le DOM très complet des définitions d'objets utilisée par le conteneur léger IoC pour créer des objets dans une application.

Comme toujours, je suis toute personne pouvant m'aider à accélérer le processus de traduction de cet article en anglais.

Pour tout ceux qui sont pressés de savoir la suite, vous pouvez me contacter pour que je vous donne en attendant de la communiquer ouvertement sur ce blog, l'url des autres parties (en construction) de ce tutoriel assez imposant (80 pages pour le moment sur Google Documents)

A noter que vous trouverez les sources des exemples ci-dessous dans le repository SVN du projet :

Pour ceux qui débarquent dans l'aventure, et qui ne savent pas encore ce que représente VEGAS, comment l'installer etc.. Je vous propose d'aller faire un tour rapide sur le Google Code du projet :

Pour toutes vos questions sur VEGAS et ses extensions n'hésitez pas à vous inscrire sur le Google Groups :

Enfin pour suivre le projet au mieux je peux vous proposer de consulter la page officielle de VEGAS sur Ohloh :

Il est temps maintenant de démarrer cet article sur le Design Pattern d'IoC et je vous promets la suite de cet article d'ici peu de temps ;)

Lire la suite...

dimanche, mai 11 2008

[VEGAS] [AS3] AndromedAS - le Design Pattern Visitor.

Introduction

Design Pattern Visitor en AS3 Voici la nouvelle version mise à jour de mon tutoriel sur le Design Pattern Visitor avec cette fois ci un exemple tout en AS3 optimisé et basé sur la toute dernière version de AndromedAS. Ce tutoriel est le premier d'une série de plusieurs autres qui vont illustrer tout doucement toutes les possibilités offertes par l'extension AndromedAS de VEGAS.

Pour ceux qui voudraient relire l'ancienne version de ce tutoriel je vous propose d'aller faire un tour : sur la page de la version AS2 du pattern Visitor

Ce tutoriel remonte à décembre 2006, le temps passe vite ! Depuis de l'eau a coulée sous les ponts et les implémentations du pattern Visitor ont changé de package et se trouvent maintenant dans le package andromeda.util.visitor et plus dans le package vegas.util.* .

A - Généralité

1 - Définition

Le Design Pattern Visitor permet simplement d'ajouter sur une classe ou instance des fonctionnalités non prévues au départ sans surcharger la structure de base de l'objet et en gardant si possible une certaine flexibilité et souplesse pour ajouter ou enlever rapidement d'autres fonctionnalités sans alourdir à nouveau l'implémentation définie au départ.

Je vous conseille de lire en complément de mon explication les articles à ce sujet sur Wikipedia qui vous apporteront peut être quelques explications supplémentaires sur le sujet.

Pour faire simple, le Design Pattern Visitor s'articule autour d'une classe qui pourra être "visitée" par d'autres classes via une méthode accept() (le nom de la fonction peut varier selon les implémentations du pattern). Cette méthode "accept" prend en paramètre un objet de type "visiteur" et va lancer automatiquement la méthode visit() du "visiteur". Ainsi l'objet visiteur pourra contrôler convenablement l'objet visité en récupérant simplement la référence de cet objet.

2 - Implémentation dans AndromedAS

Dans AndromedAS j'ai implémenté 2 interfaces très simples pour structurer ce Design Pattern. Il est bien entendu possible de juste s'inspirer de ces 2 interfaces pour réaliser d'autres conceptualisations selon des besoins précis. Mais dans mes travaux quotidiens ces 2 interfaces sont suffisantes.

Lire la suite...

- page 1 de 4