PHP et le calcul du modulo négatif

juin 23rd, 2010

Je viens de tomber sur le cas ce matin, l’opérateur PHP modulo (%) pour des valeurs trop grandes perd complètement les pédales pour donner des résultats totalement incohérents.

A cause d’un dépassement de capacité, le calcul du modulo peut donner des résultats négatifs avec deux opérandes positives ce qui est mathématiquement impossible (il est possible d’avoir un résultat négatif si un des deux opérande est négatif).

Essayez par exemple de calculer 3002223337 % 23 en PHP vous obtiendrez -2 (testé en PHP 5.3.2 sous Windows et Linux).

Heureusement, la formule de calcul du modulo n’est pas très compliquée et comble du luxe Wikipédia nous fourni un exemple d’implémentation de l’opération que votre serviteur vous a traduit en PHP :

function modulo($a, $b) {
return $a - $b * floor($a/$b);
}

Grâce à cela, plus de problème de résultat incohérent ;)

VN:F [1.0.8_357]
Rating: 0.0/5 (0 votes cast)

developpement

charger un swf externe en Flex

juin 9th, 2010

Dernièrement, pour un projet en Flex j’ai été obligé d’intégrer un composant autonome développé en flash et ActionScript 3 sans les sources. Le composant étant autonome l’objectif était de pouvoir charger le fichier swf dans mon application Flex et de l’ajouter à une vue de l’application.

Heureusement il est possible de réaliser l’opération en ActionScript 3.  pour cela il faut utiliser la classe Loader en respectant les étapes suivantes :

  1. créer un objet URLRequest avec le chemin (en AIR) ou l’url (en FLEX) vers le fichier swf
  2. créer un objet Loader
  3. invoquer la méthode load de l’objet Loader en lui passant en paramètre l’objet URLRequest
  4. ajouter l’objet Loader à une vue de l’application en utilisant un UIComponent

La mise en oeuvre de ces étapes en ActionScript 3 donne le code suivant :

var request:URLRequest = new URLRequest(”METTRE URL OU CHEMIN VERS SWF”);
var loader:Loader = new Loader()
loader.load(request);
var uiComponnent:UIComponent = new UIComponent();
maVue.addChild(uiComponnent);
uiComponnent.addChild(loader);

NB : le chemin peut être une URL ou bien pour une application AIR le chemin sur le disque dur. Dans ce cas, il faut faire attention aux règles de sécurité d’accès au système de fichier définies par le runtime AIR. Pour cela je vous invite à lire la documentation relative sur le site d’Adobe.

VN:F [1.0.8_357]
Rating: 5.0/5 (3 votes cast)

developpement, flex

White paper optimisation des développements ActionScript 3

mars 1st, 2010

En faisant ce matin le tour des mes blogs préférés, j’ai découvert sur le blog de Michaël Chaize que Thibault Imbert avait rédigé un white paper sur les optimisations des développements ActionScript 3 pour mobile.

Travaillant sur de plus en plus de projet en flex (et par conséquent en ActionScript 3) j’ai entamé la lecture de ce document disponible à l’adresse suivante (une version pdf existe aussi) :

http://help.adobe.com/en_US/as3/mobile/index.html

Premier constat, c’est vraiment très intéressant et ce n’est pas dédié uniquement aux développeurs Flash sur plateforme mobile. Toutes les astuces et recettes de cuisine présentées sont utilisables quelque soit le device (ordinateur de bureau, smartphone, …) et quelque soit la machine virtuelle (flash player, AIR, …).

On y apprend comment économiser de la mémoire, optimiser les traitements CPU, optimiser les échanges réseau, …

Un exemple tout bête : lorsqu’on veut convertir un Number positif en entier la méthode Math.round() et plus performante que la méthode Math.floor().

Un document que tout développeur ActionScript devrait lire et connaitre.

Bonne lecture ;)

VN:F [1.0.8_357]
Rating: 5.0/5 (1 vote cast)

developpement, flex , ,

La version 1.4 de JQuery disponible

janvier 15th, 2010

Pour fêter dignement son 4ième anniversaire JQuery passe en version 1.4. Un site a d’ailleurs été développé pour l’évènement : http://jquery14.com/.

Au menu de cette nouvelle version on retrouve :

  • des performances améliorées notamment pour les méthodes dites “populaires ” telles que .addClass(), .removeClass(), .css(), .append(), .html(), …
  • la sérialisation des tableaux a la mode PHP pour les appels ajax
  • détection automatique du content-type lors de retour d’un appel ajax (j’imagine que bon objet doit être instancié JSON, XML, text, ..)
  • une nouvelle syntaxe : la “Quick Element Construction” pour ajouter des élements à une page (au passage je trouve cette nouvelle fonctionnalité énorme, nous y reviendrons plus loin dans cet article)
  • le “multi-binding” d’évènement. Vous pouvez abonner un élément à plusieurs event (click, mousenter, …) en une seule ligne

Je vous laisse découvrir la suite sur le site de JQuery mais ce n’est que du bon.

présentation de Quick Element Construction

C’est une nouvelle syntaxe qui permet en une seule instruction de créer et de qualifier complètement un élément du DOM (un div par exemple). Maintenant en une instruction vous pourrez :

  • créer l’élément,
  • rattacher l’élément à un parent,
  • définir ses paramètres de style
  • définir ses évènements et les callback associés

plus qu’un long discours un exemple est plus parlant :

quick_element_jquery.jpg

Pour finir sur cette sortie de JQuery 1.4, voici mon avis personnel. Cette bibliothèque hausse encore son niveau que je trouve pour ma part excellent et offre encore plus de souplesse et de robustesse pour les développeurs web. Toutes les évolutions apportées par cette nouvelle version vont, à mon avis, dans la bonne direction en conservant la philosophie de base de JQuery : simplicité et rapidité.

C’est dans des jours comme aujourd’hui que je me dis quelle joie de faire du développement ;)

VN:F [1.0.8_357]
Rating: 4.0/5 (1 vote cast)

developpement , , ,

Les extensions pour Google Chrome sont arrivées

décembre 10th, 2009

Tout le monde les attendait, Google les avait annoncées donc les voila : les extensions pour Google Chrome.

Google a en effet lancé sa galerie d’extension pour son navigateur Chrome. Cette galerie est accessible à l’adresse https://chrome.google.com/extensions/.

Bien évidement, il faut être sous chrome pour pouvoir installer ces extensions.

Dans la liste on retrouve les incontournables adsblock, les extensions pour gmail, facebook, twitter, …

Dans le domaine qui nous concerne plus sur ce blog à savoir le développement et plus particulièrement le développement web on peut dès à présent télécharger :

J’ai installé ces extensions pour pouvoir les tester et les comparer avec leur équivalent Firefox. Je vous fait rapidement un article de comparaison

N’hésitez pas à laisser votre avis sur ces extensions. De plus si vous en connaissez d’autre n’hésitez pas ;)

VN:F [1.0.8_357]
Rating: 0.0/5 (0 votes cast)

Non classé

Présentation des nouveautés HTML5 en vidéo

décembre 3rd, 2009

Google vient de publier une vidéo de démonstration des nouveautés apportées par HTML5. Cette vidéo est totalement hallucinante.

Les perspectives pour les développements web futurs sont très prometteuses.

Dans les grandes lignes les ajouts et innovations d’HTML5 sont :

  • le multimédia
  • les fonctions de stockage offline
  • la balise canvas : définition d’une zone sur la page pour y introduire du contenu interactif avec l’internaute
  • le drag’n drop natif
  • la géolocalisation
  • l’accès à la gestion de l’historique

Un exemple étant mieux qu’un long discours, je vous laisse découvrir la vidéo :

Image de prévisualisation YouTube

Personnellement je suis bluffé, sous le charme et je suis pressé de pouvoir faire joujou avec toutes ces nouvelles fonctionnalités ;)

VN:F [1.0.8_357]
Rating: 5.0/5 (2 votes cast)

Non classé

1 an déjà - Joyeux Anniversaire

décembre 1st, 2009

C’est aujourd’hui le premier anniversaire de blog !!! Un an déjà comme le temps passe vite ;)

Ce premier anniversaire me semble être le bon moment de dresser un premier bilan et de voir les points positifs comme les points négatifs.

Le blog résumé en quelques chiffres

  • 40 articles (je sais c’est assez peu et c’est à mon sens le point à améliorer en priorité)
  • 70 commentaires
  • 7580 visiteurs uniques sur un an
  • 11495 pages vues sur un an
  • Un pagerank de 4

Les sources de trafic se décomposent de la manière suivante :

  1. 80% moteurs de recherche
  2. 10% Sites de références
  3. 10% accès directs

Les deux pages les plus consultées sont :

  1. http://arnaudgeorgin.blogcity.fr/2008/12/12/thickbox-la-modalbox-a-la-mode-jquery/
  2. http://arnaudgeorgin.blogcity.fr/2008/12/03/comparaison-framework-javascript/

Le constat est donc simple les internautes qui consultent ce blog sont particulièrement intéressés par le javascript et l’utilisation de bibliothèques telles que JQuery.

Conclusions

A l’origine quand j’ai créé ce blog je n’avais pas l’ambition d’avoir autant de trafic sur le site et ces chiffres bien que perfectibles sont très encourageants pour la suite. Pour moi c’est une première victoire ;)

Au niveau des points positifs, on peut noter principalement un bon référencement (80% du trafic est issu de moteurs de recherche).

Pour les points négatifs ou à améliorer on peut noter :

  • trop peu de contenu. C’est mon principal objectif : alimenter plus activement le blog en articles
  • trop peu de trafic issu d’accès directs. Il faut fidéliser les internautes et les inciter à revenir régulièrement sur le site. Je pense que ce point est en partie lié au premier point (le manque de contenu). Cependant je pense aussi modifier le design du site pour le rendre plus attractif

Pour finir j’ai quelques surprises actuellement en cours de développement qui arriveront dans l’année à venir. Mais pour l’instant savourons ce premier anniversaire.

Champagne ;)

VN:F [1.0.8_357]
Rating: 4.0/5 (1 vote cast)

A propos du site, General

Le konami code sur jquery.com

octobre 15th, 2009

Je vous parle d’un temps que les moins de 20 ans ne peuvent pas connaitre…”. Et oui aujourd’hui, je fais appel à votre mémoire de joueur.

Souvenez vous lorsque vous maltraitiez la manette de votre console Nintende NES pour essayer d’arriver au bout de vos jeux favoris. C’était difficile voir impossible (en tout cas beaucoup plus que maintenant).

Heureusement votre voisin vous sauvait la mise en vous montrant une botte secrête qui se transmettait de joueur en joueur : le konami code.

Le konami code est un cheat code existant dans les jeux produits par Konami qui permettait d’activer des options secrètes (vie supplémentaires, personnage invincible, passage secret, …). Ce code a connu son heure de gloire dans les année 1980 avec des jeux comme Graduis (1986) ou bien encore Contrat (1988). On le retrouve aussi dans Metal Gear solid 2 sur PS2.

Pour activer le code, le joueur devait durant le jeu exécuter sur la manette la combinaison suivante :

Haut, Haut, Bas, Bas, Gauche, Droite, Gauche, Droite, B, A

De nos jour ce code est toujours “vivant” notamment sous forme d’easter eggs. Et que ne fut pas ma suprise ce matin d’apprendre que le code fonctionne sur le site de jquery.

Pour cela rendez-vous sur le site de jquery : http://jquery.com/ et appliquer le Konami code en exécutant la séquence présentée plus haut, vous aurez une belle surprise ;)

Suite à cette découverte j’ai poussé un peu mes recherche et on apprend sur la page wikipédia du konami Code que le code fonctionne aussi sur facebook et google reader.

Enfin, il existe un site http://konamicodesites.com/ qui référence tous les sites internet réagissant au code. Mais saurez-vous rentrez sur ce site ;)

VN:F [1.0.8_357]
Rating: 0.0/5 (0 votes cast)

General, Jeux vidéo

Désassembler un fichier swf grâce à FLASM

octobre 1st, 2009

Je suis en train d’aider un copain à faire évoluer son site : changement d’hébergement, utilisation de rewrite rule pour avoir des belles urls lisible, …

Tous ces changements ont abouti à un problème épineux. Pour certaines   fonctionnalités le site utilise des flashs (lecture de vidéos soumises à authentification par exemple) qui font des appels au site en URLLoader. Or comme les urls du site ont changé et que les adresses de vérifications dans les flashs ont été codées en dur (ce qui n’est pas beau du tout je vous l’accorde) il faut les modifier.  Manque de chance, nous ne disposons pas des sources des flashs pour effectuer les modifications. Heureusement il existe un outil, flasm, qui permet de désassembler les binaires flashs c’est-à-dire de générer un fichier texte contenant le langage machine de l’exécutable.

A la base cet outil a été développé pour les développeurs flash qui voulaient optimiser le bytecode généré par le compilateur pour le flash player. Personnellement j’ai plutôt tendance à faire confiance au compilateur ;)

Pour pouvoir utiliser l’outil, il vous faut premièrement télécharger le logiciel qui est disponible sous forme d’archive pour windows, mac et linux puis l’installer (par exemple dans le répertoire c:\flasm pour windows).

Ensuite pour désassembler un fichier swf, il suffit d’exécuter la commande suivante :

c:\flasm>flasm -d chemin_vers_swf/fichier.swf > chemin_vers_swf/fichier.flm

Vous obtenez en sortie un fichier avec l’extension .flm qui est lisible par un éditeur texte (dans mon cas j’utilise scite ;) ). Ce fichier contient des instructions assembleur qui représentent le langage machine exécuté par le player flash. Dans mon cas j’ai donc pu modifier les variables définissant les urls du site appelées. En effet toutes les variables apparaissent en clair dans le code assembleur. En général c’est une instruction push qui s’occupe de l’affectation des variables. Via une recherche il est très facile de retrouver ces affectations.

Une fois les modifications effectuées et sauvegardées sur le fichier flm, il reste à assembler le fichier flm pour générer un nouveau swf. Pour cela il suffit d’exécuter la commande suivante :

c:\flasm>flasm -a chemin_vers_swf/fichier.flm

Tout n’est pas rose et il y a une restriction. Pour le moment flasm ne peut désassembler que des fichiers swf actionScript 1 ou actionScript 2. Ce qui veut dire ques les flashs récents ne peuvent pas être désassemblés pour le moment. Ceci étant c’est un outil bien utile et sans celui-ci nous aurions été obligé de redévelopper l’intégralité des flashs du site.

Un grand merci à Christophe Bessis qui m’a fait découvrir cet outil.

VN:F [1.0.8_357]
Rating: 3.7/5 (3 votes cast)

developpement ,

Concevez et réalisez votre site internet grace à Designd’O

septembre 29th, 2009

Aujourd’hui, un petit buzz pour la nouvelle société de conception et de réalisation de sites  web Designd’O. Cette société est gérée par des copains à qui je veux donner un petit coup de pub par ce billet.

Cette jeune société dynamique est composée d’experts des technologies web qui vous accompagneront de la conception à la réalisation de votre site internet.

Pour plus de renseignement vous pouvez les contacter par le biais de leur site internet : http://www.designdo.fr.

Bon courage à tous dans cette belle aventure, vous êtes les meilleurs ;)

VN:F [1.0.8_357]
Rating: 5.0/5 (2 votes cast)

Non classé