La distance de Leventshtein est un algorithme imaginé en 1965 par Vladimir Levenshtein qui permet de définir le nombre d’opérations minimum nécessaires pour transformer une chaine de caractères en une autre. Et qui permet donc de calculer la différence entre deux chaines.
Utilisé en ActionScript notamment pour l’API de Mouse Gesture Recognition :

Je réfléchit en ce moment à l’utilisation de ce script pour un moteur d’apriori dans une intelligence artificielle :

Voici une implémentation ActionScript3.0 trouvée sur snipplr.com :
function levenshteinDistance(s1:String,s2:String):int
{
var m:int = s1.length;
var n:int = s2.length;
var matrix:Array = new Array();
var line:Array;
var i:int;
var j:int;
for (i = 0; i <= m; i++)
{
line=new Array();
for (j = 0; j <= n; j++)
{
if (i != 0) line.push(0)
else line.push(j);
}
line[0] = i;
matrix.push(line);
}
var cost:int;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
{
if (s1.charAt(i - 1) == s2.charAt(j - 1)) cost = 0;
else cost = 1;
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
}
return matrix[m][n];
}
Une grosse partie de ma veille technologique passe par le reverse engineering. De bons exemples comme ecodazoo permettent par exemple de connaître les limites des technologies et les applications possibles. Aujourd’hui c’est Damz qui me parle du splendide carrousel d’Ubisoft.

Je saute sur mon Firebug (ou Charles) pour récupérer la liste des fichiers flash chargés dans le site.

Je glisse les fichiers dans FlashDevelop afin de voir la liste des classes importées dans les swf.

On sait donc que le site utilise :
Le site est développé par l’agence AKQA comme l’indique le package com.akqa.
Les packages spécifiques au site sont situés dans les dossiers com.ubisoft… (site du client) et …homepage (page du site). On y trouve une architecture MVC avec les packages data pour le modèle, view pour les vues et business pour les contrôleurs.
Sans aller jusqu’à décompiler les fichiers swf, ce travail d’observation permet à la fois d’imaginer les solutions technique, de détecter des bonnes pratiques, de découvrir de nouvelles librairies (comme la classe Out que je ne connaissais pas avant) et de déduire des pistes de réflexions pour des projets personnels.
While working on a huge AS3 application last month, i discovered the magic of cross-scripting. What’s that s*** ? Following the livedocs :
If two SWF files written with ActionScript 3.0 are served from the same domain–for example, the URL for one SWF file is http://www.example.com/swfA.swf and the URL for the other is http://www.example.com/swfB.swf–then one SWF file can examine and modify variables, objects, properties, methods, and so on in the other, and vice versa. This is called cross-scripting.
But they don’t talk about the multiple problems you can find loading SWFs into SWFs. Here’s my first test with cross-scripting :

(more…)