Archive for the 'Projets' Category

Globalisation et Coldfusion

Un CFC pour Coldfusion afin de globaliser une application en utilisant l’internationalisation de Java avec les Resource Bundles. Je suis parti du CFC de Paul Hastings pour charger les bundles et ensuite je me suis inspiré du code de BlogCFC pour le chargement dans l’application et pour le pointeur. Cet objet n’est pas finalisé mais peut être utilisé en production. Il prends en compte les performances et la gestion au mieux de la mémoire.

Télécharger : g11n CFC

Les méthodes pourraient être étendu pour charger des traductions depuis une base de données ou parser toute sorte de fichiers.

Utilisation

Ce fichier est dans dossier include qui se trouve à la racine du site root\include\org\g11n\g11n.cfc et est appelé dans le fichier application.cfm à la racine du site.

<cfif not isDefined("application.init") or (isDefined("url.reinit"))>
<cfset application.g11n=createObject("component","include.org.g11n.g11n").init()>
</cfset><cfset application.g11n.LoadResourceBundle(expandPath('/include/main'))>
</cfset><cfset application.g11n.addResourceBundle(expandPath('/p_dynamic/sites/main'))>
 </cfset><cfset application.g11n.utils=createObject("component","include.org.g11n.utils")> 
</cfset><cfset application.init = true>
</cfset></cfif>
 <cfset __ = application.g11n.utils.getResourceLocale>
</cfset>

Une seule instance de l’objet G11N est créé par application pour ne pas charger la mémoire et utiliser au mieux le cache d’une variable d’application. La variable application.init est utilisée pour réinitialiser les variables d’application en tapant un url du type http://moniste.com/monfichier?reinit

Les méthodes LoadResourceBundle et addResourceBundle parsent les différents bundles de langues et les stoquent dans des variables de type struct de l’objet G11N.

Cela se complique un peu avec le pointeur (ou alias) qui est utilisé pour simplifier l’écriture dans le code. fichier utils.cfc doit être éditer pour chaque application suivant l’instance de l’objet qui est créé et la variable de session ou est stoqué la langue.
Juste pour faire un pointeur tout en appelant la variable locale de l’object il faut passer par un objet ou une fonction itermédiaire (un “wrapper”) qui est ici dans utils.cfc Je ne trouve pas cela très élégant et rend l’organisation du code confus mais et très utile pour une simplication d’écriture. Le pointeur est créé par la ligne __ = application.g11n.utils.getResourceLocale dans l’application.cfm

<cfcomponent displayName="Utils" output="false">
           <cffunction name="getResourceLocale" access="public" returnType="string" output="false"
                hint="A utility wrapper for RB, to allow pointers / object application.g11n must be instantiate">
        <cfargument name="str" type="string" required="true">
            </cfargument><cfargument name="locale" type="string" default="#session.l#" required="false">
        <cfreturn application.g11n.getResource(arguments.str,arguments.locale)>
    </cfreturn></cfargument></cffunction>
</cfcomponent>

Donc maintenant que tout est instancié et pointé pour une simple localisation il vous suffit d’appeler la fonction qui pointe vers la méthode de l’objet.

<cfscript>
/* le pointeur à la variable de langue de la session par défaut #session.l# */
__("maclefdemonbundlealocaliser")
/* une clef a traduire avec une autre langue*/
__("maclefdemonbundlealocaliser","zh")
</cfscript>

Plusieurs remarques:

  • Les éditeurs de resources bundles ne sont pas trés courants. L’utilisation des resources bundles est laborieuse pour des non-codeurs. Je viens de travailler avec des traducteurs arabes/russe/chinois/espagnol, avec un export/import Excel je n’ai pas eu de remarques et cela a été efficace.
    Quelques liens utiles :
    Resource Bundle Editor en “standalone”
    Tranformer un Resource Bundle en fichier Excel en ligne de commande
    Un éditeur de Resource Bundle pour Eclipse
    Jinto, un autre éditeur de Resource Bundle pour Eclipse en mode tableaux
  • La mémorisation et l’utilisation de clefs n’est pas très pratique et demande plus d’attention au moment de coder.
  • Java semble bien gérer l’internationalisation. J’ai quelques problèmes avec la classe choiceFormat utile pour les pluriels. Je ne peux pas utiliser les méthodes ou instancier cet objet via Coldfusion.
  • Pointer une variable ou une méthode dans un objet n’est pas très intuitif avec CF
  • Je n’ai pas créé de pointeur pour la méthode messageformat mais cela reste possible.
  • La globalisation est importante mais Coldfusion n’offre rien de très utile pour cela au nivau de l’application il ya quelques fonctions de localisation. La mise en place et l’utilisation de ce CFC est laborieuse, mais une fois que cet objet est instancié avec un pointeur cela devient très simple.

Extjs “Wireframe” pour Adobe Illustrator

Voici une boite à outils pour Extjs. Un set de “stencils” de base, des éléments dimensionables, des symboles, des styles, des formes, des couleurs.

Extjs Stencils 1.0

Extjs Stencils 1.0

Quelques conseils pour travailler sous Illustrator en pixel :
Il faut changer certaines préférences (CTRL+K) , la grille, le pas de la grille, la mise à l’échelle des effets et des contours peut être gênante parfois, il est utile de le désactiver, de même pour le lissage.

Illustrator Pixel Settings

Si vous ne souhaitez pas enlever le lissage, vous pouvez aussi utiliser l’effet de pixelisation.

Illustrator pixel menus

Quelques ressources ou références:

Extjs.com
Extjs Ressources
Extjs stencils pour Photoshop
Extjs Stencils pour OmniGraffle

Blueprint “wireframe” pour Illustrator

Voici un modèle pour Adobe Illustrator basé sur le cadre de dévelopement (”framework) Blueprint. J’ai ajouté des symboles (”stencils”) de Firefox, des styles, des formes pour les boutons et selecteurs pour qu’ils soient redimensionables. J’ai ajouté l’alignement vertical, des aperçus de taille d’écrans et de navigateurs, un modèle de page web et du faux texte. Attention à bien vérifier que tout soit en pixel (CTRL+K) dans les préférences, le pas de la grille à 100px avec 100 divisions, les unités en pixel, le pas de déplacement a un pixel, penser à mettres les contours extérieur, l’aperçu en pixel et RVB et mettre la magnétisme du pixel et du point.

1.3 Un modèle Illustrator CS3 (.ait)
1.3 Un modèle pour papier (PDF)

Blueprint wireframe

Blueprint wireframe pour Illustrator

1.3 Un modèle pour papier (PDF)

Versions :

Quelques références :
www.aiburn.com - building a website wireframe in illustrator
toddwarfel.com - wireframing part II, Illustrator basics
yahoo.com - Ypatterns wireframes
Garrettdimon.com resources - templates stencils for visio and omnigraffle
www.boxesandarrows.com - where the wireframes are special deliverable
konigi.com graph on paper
Blueprint css framework based on grid