mercredi 24 juin 2009

otowl : From relational data representation to object data representation || Du model relationel au model objet

English:

For those who recall a previous post about a project without any name, now i have a name and something to show ! I decided to call this project otowl. otowl stand in a way for "auto-owl" because the goal is to automatically convert relational data into an ontological, object representation. Yesterday, i finally successfully manage to independently form the original context, convert a boolean set of data (understand, the properties for the individuals are true or false) into a hierarchical, ontology represented by an owl/xml file. I am actually working on an online demo that will hit the web soon, keep you updated.
Stay tuned.

Francais:

Pour ceux qui se rappelleront un precedent billet concernant un projet sans nom, il en a maintenant un et utilisable ! J'ai ainsi decide de l'appeler otowl. otowl en partie signifie "auto-owl" car le but de ce projet est de propose un mecanism de convertion automatique de donnees sous forme relationnel vers un model ontologique, objet. J'ai finalement reussit hier a convertir un ensemble de donnees relationelles bouleennes (a comprendre que les proprietes d'un individu sont vraies ou fausses) vers un ensemble hierarchise, ontologique sous la forme d'un fichier owl/xml. Je travaille en ce moment sur une demo qui devrais arriver sur la toile tres prochainement.

lundi 22 juin 2009

IE8 javascript & css quick fix || resolution rapide de probleme de javascript et css avec IE8

English:

I experienced some compatibility issue with some old js under IE8. For example, prototype.js's users, try new Element('div',{'class' : 'my_css_class'}). Yes, the style is not loading and don't throw any error. Troublesome isn't it ?

Therefor you can use  <meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible" /> that will force IE8 to emulate 7 and will run accordingly.


Francais:

J'ai recement experimente quelques problemes de compatibilite entre IE8 et quelques vieux javascript. 
Par exemple, les utilisateurs de prototype.js pouront essayer new Element('div',{'class' : 'my_css_class'}). Et oui, le style ne charge pas. problematique non ?

Ansi, la directive  <meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible" /> va forcer IE8 a emuler 7 et executer les commandes de la meme maniere.

mercredi 10 juin 2009

manipulation de chaines de caractere japonaise en php | japanese string manipulation in php

*English version, go to the bottom of this post.

Francais:

Tout developeurs qui a eu la malchance de travailler au/avec le Japon s'est tres vite rendu compte que manipuler des chaines de caractere n'est aussi facile qu'qvec la langue de Moliere ou de Shakespeare. Encore plus malheureux sont les gens qui sont sur des projets php ou mes fonction mb_* ne fonctionnent pas aussi bien. Certain caracteres font 1 octet, d'autre 2 et voir meme pour certain 3. Cependant, j'ai lus (il y a maintenant un bout de temps) cet article en japonais http://phpspot.org/blog/archives/2005/11/php_17.html . L'expression reguliere presentee doit, en theorie, decouper en morepheme un texte en japonais. Autant vous dire que le linguiste qui est en moi, est en totale desaccord avec ce qu'avance son auteur. Neanmois, j'y ai vu la un interessant point de depart pour la manipulation de chaine de charactere japonaise et tout particulierement celle en SJIS. En modifiant un peu l'expression reguliere, j'ai obtenue un bon vieux tokenizer a 1 caractere des familles. Cela faisant, j'ai pu reimplementer tout les fonctions de base mais au combien pratiques comme substr, strpos, strlen etc...

English:

Every php developer who work in japan realized that mb_* function don’t work that good with SJIS encoded string. Some characters are considered as 1 byte length, or as 2 bytes and some as 3 bytes |-| ; Not really useful in the end. i recently discovered this article (in Japanese : http://phpspot.org/blog/archives/2005/11/php_17.html). The presented regEx is supposed to split a Japanese string into word. Linguistic-wise, I’m completely disagree with the results, but it was an interesting starting point for Japanese string manipulation and specially SJIS encoded ones :> . then i changed a little bit the regEx in order to obtain a one-character tokenizer. This regEx allow me afterward to re implement the basic but really useful string manipulation commands as substring, str_replace, strpos, strlen etc…

<?php

/*implementtation of the most basic string manipulation function for japanese, work the same way as the monobytes ones*/

class processJ
{
public function __construct()
{
mb_regex_encoding("SJIS");
}
public function __destruct()
{
}

//this method split a sjis encoded japanese string by character an return an array
public function charSpliter($str)
{
$token = array();
while(1)
{
     $bytes = mb_ereg("[一-龠]|[ぁ-ん]|[ァ-ヴー]|[a-zA-Z0-9]|[a-zA-Z0-9]", $str, $match);
     if ($bytes === false) {
       break;
     } else {
         $match = $match[0];
         $token[] = $match;
     }
     $pos = strpos($str, $match);
     $str = substr($str, $pos+$bytes);
}
return $token;
}
public function substrJ($str, $start, $lenght = NULL)
{
$strToken = $this->charSpliter($str);
$end = !empty($lenght) ? $lenght : count($strToken);
$substr = "";
for($i = $start; $i < $end; $i++)
{
$substr .= $strToken[$i];
}
return $substr;
}
public function strlenJ($str)
{
$strlen = $this->charSpliter($str);
return count($strlen);
}
public function strposJ($haystack, $needle)
{
$strToken = $this->charSpliter($haystack);
$needleToken = $this->charSpliter($needle);
$tokenLen = count($strToken);
$needleLen = count($needleToken);
for($i = 0; $i < $tokenLen; $i++)
{
if($strToken[$i] == $needleToken[0])
{
for($j = 0; $j < $needleLen; $j++)
{
if($needleToken[$j] !== $strToken[($i+$j)])
{
continue 2;
}
}
return $i;
}
}
}
public function str_replaceJ($search, $replace, $subject)
{
return $this->substrJ($subject,0,$this->strposJ($subject,$search)).$replace.$this->substrJ($subject,($this->strposJ($subject,$search)+$this->strlenJ($search)),$this->strlenJ($subject));
}
}

$test = new processJ(); print($test->substrJ("ようこそcyberblogへ漢字",0,4));  //> "ようこそ"
print($test->strlenJ("ようこそcyberblogへ漢字")); //> 16 
print($test->strposJ("ようこそcyberblogへ漢字", "cyber")); //> 4 
print($test->str_replaceJ("cyberblog","サイバーブログ","ようこそcyberblogへ漢字")); //> "ようこそサイバーブログへ漢字" 
?>

lundi 25 mai 2009

viva la revolution

(English announcement coming soon)

J'ai le plaisir d'annoncer (meme si personne ne va le lire) que j'ai atteind la premiere millestone de mon projet de generation automatique d'ontologies. Il va falloir que je planche sur le nom un jour.

L'idee: Le tournant vers la representation ontolique des donnees est innevitable de part le gain en precision, lisibilite et surtout generation de connaissance (partique pour le BI).
Or passer d'un structure relationnelle a ontologique necessite de faire face aux problemes suivants:

- Definir une structure 'objective' de ses donnees.
L'homme ayant tendance a d'abord hierachiser les proprietes de ses objects et ensuite de les classer en fonction de ses dernieres, il arrive souvent que ce genre d'ontologie n'apporte rien de plus.
Prenons l'exemple des voitures. un voiture a un segment, un type, un nom, une marque, motorisation etc... Je ferais tout simplement le classement suivant : segement>type>marque>model>motorisation
Et vous ? De une, nous n'avons surement pas la meme structure et de deux, quelles nouvelles informations apprenons nous ? Quel benefice vis-a-vis d'une structure relationnelle ? La reponse est simple; zero. Car concretement, et contrairement a ce qu'avancait Jakobson, le sens n'est pas "l'addition d'unites de sens minimales". Ainsi la division en classe est peu-etre bien plus conplexe et deux objets aux proprietes semblables ne peuvent ne pas etre dans la meme branche.

- Temps de travail. La dernieres fois que j'ai ecrit une ontologie a la main c'etait pour mon memoire de master (creation d'une ontolige des verbes du francais moderne pour application d'e-learning). Je ne travaillais qu'avec 20 verbes, un nombres de proprietes definies (cf. lexique generatif) et cela m'a pris plusieur mois. Donc imaginez le travail pour une application commercial.

- Avoir des personnes tres specialise pour faire le travail.


Vous, l'aurez donc compris, au dela des envolees oniriques sur les ontologies, RDF ou encore le web semantique, il y a la un veritable coup financier pour un resultat non garantie. C'est pourquoi, la generation automatique d'ontologie depuis des donnes relationnels, permettrais de :
- Reduire les coups de migrations
- Avoir un jeu de donnees utilisable
- Concerver une concistance dans l'annotation et la logique

Rendez-vous pour la prochaine millestone qui sera l'interfacage avec une base de donnees ou la standardisation du format de sortie (pas encore defini) et peut-etre une demo (ca serait la cerise sur le gateau).

mardi 26 août 2008

les interfaces en php sa sert a quoi ?

Il n'y a pas tres longtemps j'ai repondu sur un forum a cette question et comme j'ai eu des echos plutot positif dessus je vous la fait partager.

ca sert a quoi une interface

dimanche 18 mai 2008

Microsoft a t'il tué le html ?

Sortant de 2 jours de test de silverlight, j'ai décidé de faire part de mes impressions sur cette technologie. C'est tout simplement la fin du html. Ce que développeurs, designeurs et chef de projet ont toujours attendu; une séparation strict des taff qui entraine une réduction des problèmes de coordinations. Mais tout d'abord une brève présentation de la lumière argentée.
  1. Présentation

    Il existe à l'heure actuelle deux versions de silverlight dont la version 2 est encre au stade de beta. Procedons ainsi a une petite presentation de ces dernières :
    • Version 1.1 : il s'agit d'un fichier XAML (eXtensible Application Markup Language) de la grande famille SGML (ndlr : XML est un derivé de SGML donc, il convient de rendre à cesar ce qui appartient à cesar) dont la gestion des évènements est géré par javascript. Le tout est interpréter par un lecteur côté client ; Bref un flex interpréter.
    • Version 2 : toujours baser sur un fichier XAML mais intégrant le framework .net . Ainsi votre application silverlight profite de tout les fonctionnalités du framework et vous pouvez ainsi coder vos interactions dans le langage qu'il vous plaira (c#, vb, php etc..).

  2. Pourquoi silverlight 1 ne pas pas convaincu

    J'avoue peut-être en avoir un peu trop attendu. Quand on me dit " SGML interprété" la première chose à laquelle je pense c'est générer dynamiquement le fichier en php, perl ou autre. Et ca marche !! (cf. http://www.devx.com/RIA/Article/36022/0/page/3). A ce moment là je me suis essayer a faire du DOM scripting dessus car génération dynamique + modification dynamique = le paradis. Malheureusement ca n'a pas marché. Je me suis donc retrouver avec un flex-like un peu plus flexible. Sachant que flex est lu par le flash player, que ce dernier est installé sur près de 90% des machines navigeant sur le net : Flex gagne au point.

  3. Pourquoi silverlight 2 m'a fait rêver

    Par l'intégration du frameworks .net, tout de suite on passe a la vitesse supérieur tant au niveau de la pragmatique que de la productivité pour les personnes famillières à ce framework. Pour elles, rien ne change et vous pouvez dès l'instant t0 commencer à travailler comme sur un projet HTML/XHTML. C'est à ce moment-là que mon rêve le plus fou, à savoir la fin de ce bon mais trop vieux html, était devant mes yeux. J'avais déjà entrevue ce doux rêve avec flex mais après plusieurs test, je m'étais aperçu que ce n'était que du flash version 0 kal car on reste obliger de coder en actionscript, de travail avec du swf, bref on reste contraint à l'environement flash. Vous me direz qu'il en est de même pour un environement .net bien que beaucoup de choses bougent côté .net ( cf. mono, phalanger etc..).

  4. Conclusion

    Comme vous l'avez remarquez je suis très enthousiaste sur silverlight 2 . Car si le développement continue sur la lancée cette version beta, nous arrivons bel et bien à la fin du HTML, à une vrai rationalisation du processus de création des applications web. La séparation strict de la vue et de la logique qui va permettre une meilleur organisation des projets. Les gros logiciels de conception d'interface comme fireworks disposent déjà d'un module d'exportation en XAML, le plug-in silverlight 2 pour visual studio 2008, apres un parsing du XAML génère un squelette de code en fonction des évènements décrits dans ce dernier. Ainsi fini les dev qui trifouillent les css et autre, ou les designeurs qui touchent au code.

    Maintenant que la partie thérique est fini, je passerais à la partie la plus drôle de tout exposé; l'expérience. Je vous proposerais ainsi un rapport sur une simulation de création d'un portail ou d'un système de blog en silverlight 2, nous pourrons ainsi voir comment s'organise le travail sur un tel projet, gagnons-nous du temps ? etc.. Bref toute les questions que l'on se pose à l'apparition d'une nouvelle technologie.

mercredi 26 décembre 2007

home sweet home

bonjour a tous, petit post pour dire qu'en ce 25 decembre 2007 un monsieur barbu m'a fait un jolie cadeau (et non pas le papa noel; moi :P) un appartement.
Il se situe dans le quartier d'otsuka a cote d'ikebukuro. C'est un petit quartier residentiel paisible.
L'appartement est dans l'angle du deuxieme etage, ce qui est plutot sympas car j'ai plus de fenetre que de mur, donc beaucoup de lumiere. Le seul hic ca va etre de trouver assez de rideau. Heureusement que la semaine prochaine je suis en vacances, je vai ainsi pouvoir les acheter en meme temps qu'un lit et un frigo (dans un premier temps biensur, la tv hd et la ps3 c'est pour le mois prochain hihihihihihi).
voila les photos.

le coin evier, gaz de la cuisine

La piece principale

L'immeuble

la salle d bain, chiote en plastique moule