<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.photozite.info/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Un peu de tout et surtout rien - Informatique</title>
  <link>http://blog.photozite.info/index.php/</link>
  <description>Parcque je le vaut bien !</description>
  <language>fr</language>
  <pubDate>Sun, 08 May 2011 16:24:37 +0200</pubDate>
  <copyright>ARISTODEMO Damien</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>PHP: Introduction au design patterns, partie 1: Singleton</title>
    <link>http://blog.photozite.info/index.php/post/2007/04/21/PHP%3A-Introduction-au-design-patterns-partie-1%3A-Singleton</link>
    <guid isPermaLink="false">urn:md5:11e72cdf3d85815694d93500d1a21711</guid>
    <pubDate>Sat, 21 Apr 2007 13:18:00 +0200</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>php</category><category>programmation</category><category>web</category>    
    <description>    &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Commence ici une petite serie de billets sur les &quot;design patterns&quot;, les motifs de conception en français. Les motifs de conception ne sont rien d'autre que des solutions toutes prêtes à des problèmes couramment rencontrés, il s'agit de morceaux de code, des &quot;squelettes&quot; prêts à remplir leur fonction (variable) et à être adaptés a votre situation.&lt;br /&gt;&lt;br /&gt;La quasi-totalité des design patterns ne dépendent pas d'un langage et peuvent être adaptés à n'importe quel langage moyennant l'adaptation de la syntaxe. Bien évidemment, un design pattern proposant une solution orientée objet ne sera valable que pour un language orienté objet, etc..&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Singleton: Utilité&lt;/h2&gt;
&lt;br /&gt;
Le motif de conception nommé &quot;singleton&quot; est sans conteste un des plus simples à mettre en oeuvre et à comprendre, c'est aussi un des plus utilisés et les exemples de singleton pullulent sur le web, d'ailleurs, j'y mets là mon grain de sel &lt;img src=&quot;/themes/knoodrake3/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Destiné a la programmation orientée objet, il permet de n'avoir toujours qu'une seule et unique instance d'un objet quel que soit le nombre de fois où l'on en a besoin.&lt;br /&gt;Une situation typique et courante est la connection a une BDD (Base De Données): en général, vous ne voulez avoir pour toute l'exécution du script qu'une unique connection a la BDD même si vous faites appel à votre classe de gestion de BDD a maintes reprises et dans différents contextes. &lt;br /&gt;&lt;br /&gt;Un autre cas pourrait être le suivant: Vous utilisez un ensemble de classes par le biais d'une autre classe, par exemple, votre classe de gestion de BDD ainsi que votre classe de gestion d'utilisateur sont accessibles toutes deux au travers de la classe &quot;&lt;em&gt;moteur&lt;/em&gt;&quot;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$moteur-&amp;gt;bdd-&amp;gt;query_sql()&lt;br /&gt;$moteur-&amp;gt;users-&amp;gt;is_online();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Dans un tel contexte, vous voudriez sans doute là aussi n'avoir qu'une unique instance de la classe &quot;&lt;em&gt;moteur&lt;/em&gt;&quot;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;resultat recherché&lt;/h2&gt;
&lt;br /&gt;
Afin d'utiliser toujours la même instance d'une classe &quot;&lt;em&gt;BaseSql&lt;/em&gt;&quot; par exemple, une solution pourrait être de l'instantiser une première fois lors de l'initialisation de votre script puis de faire passer la référence de l'objet de classe en classe de la sorte&lt;code&gt;&lt;br /&gt;&lt;br /&gt;class MaClasse_A &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;private $BaseSql;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;__construct (&amp;amp;InstanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;BaseSql =&amp;amp; $InstanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uneFonction () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $requete = &quot;SELECT * FROM `MaTable` WHERE 1&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;BaseSql-&amp;gt;query_sql($requete);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Mais cette solution n'est vraiment pas pratique ! car elle vous oblige à appeler votre classe en fournissant en argument l'instance de &lt;em&gt;$BaseSql:&lt;br /&gt;&lt;/em&gt;&lt;code&gt;$classA = new MaClasse_A ($BaseSql);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Mais surtout, cela devient vraiment vraiment pénible dès qu'il est question d'héritage et de collaboration entre les classes ! voyez l'exemple ci-dessous:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;class MaClasse_A {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __construct (&amp;amp;instanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;BaseSql =&amp;amp; $InstanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  ... plein de methodes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getUserInscriptionDate () {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $classeDate = new DATE ($this-&amp;gt;BaseSql);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  return $classeDate-&amp;gt;userInstription();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class DATE {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __construct (&amp;amp;$instanceBDD) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  $this-&amp;gt;bdd =&amp;amp; $instanceBDD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; userInscription() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  /* &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Là c'était juste pour une classe qui se sert d'une autre classe, mais imaginez si cette même autre classe se sert elle-même d'une autre classe, puis que cette autre classe se serve de 4 autres classes, et ces 4 autres de 2 autres, etc.. Il faudra veiller à chaque fois que l'on a besoin de &lt;em&gt;BASESQL&lt;/em&gt; à prendre la référence de son instance, bien veiller à toujours passer l'instance à d'autres classes, etc.. en d'autres mots, croyez-moi: ca devient le bordel !&lt;br /&gt;&lt;br /&gt;LA solution qui serait élégante serait, de tout simplement, et à chaque fois que l'on a besoin d'utiliser la classe &lt;em&gt;BASESQL&lt;/em&gt;, faire:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;/* quelque part dans le code.. dans une classe ou n'importe ou */&lt;br /&gt;&lt;br /&gt;$basesql = BASESQL::getInstance();&amp;nbsp;&amp;nbsp;&amp;nbsp; // et mainteant on fait ce qu'on veut&lt;br /&gt;$basesql-&amp;gt;methodeXYZ();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; // et si on fait a nouveau&lt;br /&gt;$Autre = BASESQL::getInstance();&lt;br /&gt;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; et ben on se retrouve avec toujours la même instance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $basesql et $Autre contiendront la même instance de BASESQL&lt;br /&gt;*/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;le motif Singleton le permet en 2 ou 3 lignes.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Mise en Oeuvre&lt;/h2&gt;
&lt;br /&gt;
La classe qui ne devra être instantisée qu'une seule fois devra être comme ceci:&lt;code&gt;&lt;br /&gt;&lt;br /&gt;class BASESQL {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static $instance;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ...some code */&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static getInstance ()&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  if (is_null(self::instance)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp; self::instance = new BASESQL (/* ..some args */ );&amp;nbsp;&amp;nbsp;  }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  return self::instance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ...some code */&lt;br /&gt;}&lt;/code&gt;&lt;h3&gt;Explication:&lt;/h3&gt;
Lorsque vous faites un appel à la methode &lt;em&gt;getInstance()&lt;/em&gt; comme ceci:&lt;code&gt;&lt;br /&gt;$BaseSql = BASESQL::getInstance();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;La méthode regarde si la propriété &lt;em&gt;$Instance&lt;/em&gt; est vide ( nulle ), si elle est vide, elle y affecte une nouvelle instance de &lt;em&gt;BASESQL&lt;/em&gt; ( donc d'elle-même ), sinon, si elle n'est pas nulle, c'est qu'elle contient déja une instance d'elle-même précédemment créée, donc rien à faire.&lt;br /&gt;Elle finit par retourner &lt;em&gt;$Instance&lt;/em&gt; qui dans tous les cas contiendra donc une instance de &lt;em&gt;BASESQL&lt;/em&gt;.&lt;br /&gt;Ainsi, si &lt;em&gt;BASESQL&lt;/em&gt; est déja instantisée on en transmet l'instance, sinon on instantise (et le prochain appel de la method &lt;em&gt;getInstance&lt;/em&gt; transmettra cette instance qui vient d'être faite ) et on transmet.&lt;br /&gt;&lt;br /&gt;La méthode &lt;em&gt;getInstance()&lt;/em&gt; et la propriété &lt;em&gt;$Instance&lt;/em&gt; sont publiques et statiques dans le but d'être accessibles par tout le monde et ce sans avoir besoin que la classe ait été déjà instantisée (logique, c'est le but ! )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;Des questions ? des suggestions ? des conseils ?&amp;nbsp; n'hésitez pas a vous servir des commentaires, ils sont là pour ça, ou de la page contact (cf. menu a droite) pour un mail.&lt;/em&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;&lt;em&gt;Le prochain billet traitera du motif Registry ou du motif Factory.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>PHP: Detection de la langue du visiteur</title>
    <link>http://blog.photozite.info/index.php/post/2007/02/21/PHP%3A-Detection-de-la-langue-du-visiteur</link>
    <guid isPermaLink="false">urn:md5:46b69385c54910594d52b84ad14bff93</guid>
    <pubDate>Wed, 21 Feb 2007 13:46:00 +0100</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>informatique</category><category>php</category><category>programmation</category><category>web</category>    
    <description>    &lt;p&gt;Comment puis-je détécter la langue du visiteur pour éventuelement le rediriger vers tel ou tel version de mon site ?&lt;/p&gt;
Une des variables superglobales de PHP est la variable &lt;em&gt;$_SERVER &lt;/em&gt;( ou &lt;var&gt;$HTTP_SERVER_VARS&lt;/var&gt; pour les versions de php anterieures a 4.1 ). Comme c'est une variable super globale, nul besoin de la déclarer d'aucune manière, elle sera accésible n'importe quand et n'importe ou.&lt;br /&gt;Dans cette variable (un tableau en fait) on va trouver les informations contenus dans
&lt;code&gt; $_SERVER&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;'HTTP_ACCEPT_LANGUAGE'&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;]&lt;/span&gt;&lt;/code&gt;
, ce qui donne quelque chose comme &lt;code&gt;&quot;fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3&quot; &lt;/code&gt;(une chaine de caractère).&lt;br /&gt;&lt;br /&gt;Donc à partir de la, plusieurs solutions:&lt;br /&gt;De nombreuses bibliothèques peuvent prendre en charge le &quot;décriptage&quot; de cette chaine comme par exemple l'illustre &lt;a hreflang=&quot;en&quot; href=&quot;http://pecl.php.net/&quot;&gt;PECL&lt;/a&gt;. Voir la fonction &lt;a hreflang=&quot;en&quot; href=&quot;http://fr3.php.net/manual/fr/function.http-negotiate-language.php&quot;&gt;http_negociate_language.&lt;/a&gt;&lt;br /&gt;Une autre possibilité, moins éfficace mais qui évite d'installer une librairie tièrce, c'est de ranger tout les morceaux de la chaine dans un tableau et de ne prendre en compte que le premier élement (qui est la langue par defaut ) , comme dans l'exemple que je vous propose:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$lang &lt;span class=&quot;kw&quot;&gt;=&lt;/span&gt; explode&lt;span class=&quot;kw&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;,&lt;/span&gt;$_SERVER&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;HTTP_ACCEPT_LANGUAGE&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;]);&lt;br /&gt;if ((&lt;/span&gt;$langs&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;0&lt;span class=&quot;kw&quot;&gt;] ==&lt;/span&gt; &lt;span class=&quot;st&quot;&gt;&quot;en&quot;&lt;/span&gt; &lt;span class=&quot;kw&quot;&gt;)|(&lt;/span&gt;$lang&lt;span class=&quot;kw&quot;&gt;[&lt;/span&gt;0&lt;span class=&quot;kw&quot;&gt;]==&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;en-us&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;))&lt;/span&gt;&lt;br /&gt;header&lt;span class=&quot;kw&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st&quot;&gt;&quot;Location: http://monsite.versionAnglaise.com&quot;&lt;/span&gt;&lt;span class=&quot;kw&quot;&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;Pour information, la detection ainsi qu'une éventuelle redirection peuvent aussi s'éffectuer simplement avec les entêtes html, ou bien encore à l'aide de Javascript.&lt;br /&gt;&lt;br /&gt;Enfin, si redirection il y à, il est très important de toujours laisser la possibilité au visiteur de choisir lui-même la version du site qu'il souhaite visiter. Ainsi, pensez à mettre (et bien en évidence) un lien vers le site dans les autres langues disponibles.&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>20Go pour les telephones mobiles</title>
    <link>http://blog.photozite.info/index.php/post/2007/01/31/30-20go-pour-les-telephones-mobiles</link>
    <guid isPermaLink="false">urn:md5:469d9134fbd28a76efb36149342e17d9</guid>
    <pubDate>Wed, 31 Jan 2007 05:49:54 +0000</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>bluetooth</category><category>gsm</category><category>stockage</category><category>technologie</category>    
    <description>    &lt;em&gt;L'accroissement de la capacité de nos ordinateurs est accompagnée de celui de la mémoire des produits multimédia.&lt;br/&gt;
En font parti les téléphones mobiles. Il y à pas si longtemps mon gsm disposait de presque 2Mo de mémoire.&lt;br/&gt;
Aujourd'hui, le téléphone que je possède joui grâce à une carte mémoire venant d'eBay de 2Go.&lt;br/&gt;
Et demain ?&lt;/em&gt;&lt;br/&gt;
&lt;br/&gt;
Seagate à annoncé lors d'une conférence la prochaine disponibilité de périphériques &quot;DAVE&quot;.&lt;br/&gt;
Il s'agit de &lt;strong&gt;disques bluetooth&lt;/strong&gt; destinés au téléphones portables d'une taille approximative de carte de crédit.&lt;br/&gt;
Ces disques sont annoncés pour des &lt;strong&gt;capacité de 10 et 20 Go&lt;/strong&gt; et pourront se trouver jusqu'a 30 pieds (pardon, mais je n'ai pas le courage de convertir) du téléphone.&lt;br/&gt;
Apparament, le pilote du disque existerait dors et déja pour Windows Mobile, Symbian ou encore J2ME, avec une compatibilité Palm à venir.&lt;br/&gt;
&lt;br/&gt;
La chose pourra probablement être trouvable chez votre épicier préféré dans le courrant de cet été dans sa version 10Go et pour un prix 150$. La version 20Go suivront.&lt;br/&gt;
&lt;br/&gt;
&lt;a href=&quot;http://blog.wired.com/gadgets/2007/01/seagate_offers_.html&quot; hreflang=&quot;en&quot;&gt;source&lt;/a&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Faire son jeux video avec Irrlicht</title>
    <link>http://blog.photozite.info/index.php/post/2006/12/08/28-faire-son-jeux-video-avec-irrlicht</link>
    <guid isPermaLink="false">urn:md5:a1cb6a44d5b5d0632a365da60311803b</guid>
    <pubDate>Fri, 08 Dec 2006 18:47:00 +0000</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>informatique</category><category>jeux videos</category><category>moteur 3d</category><category>opengl</category><category>programmation</category>    
    <description>&lt;img src=&quot;http://irrlicht.sourceforge.net/images/general/irrlichtlogo.gif&quot; alt=&quot;logo Irrlicht&quot; /&gt;&lt;br /&gt;&lt;br /&gt;
Ce billet trace un bref apperçu d'Irrlicht et des ses possibilités.&lt;br /&gt;
Irrlicht est un Moteur 3D libre et multi-plateforme, simple d'utilisation.    &lt;h2&gt;Et beaucoup de motivation, de temps, de ressources humaines,
...&lt;/h2&gt;
&lt;h3&gt;Conaissez-vous Irrlicht ?&lt;/h3&gt;
Irrlicht est un moteur 3D publié sous license
(très) libre , sous license zlib pour être
précis, ce qui autorise même des utilisations
à des fins commerciales.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Faire un jeux vidéo 3D&lt;/h3&gt;
Je ne m'étendrait pas sur le sujet, les sites
consacrés à ce sujet étant
relativement nombreux, mais pour résumer, pour faire un jeux
vidéo il vous faudra:&lt;br /&gt;
un moteur 3D, un moteur Physique (facultatif), un moteur sonore, et
surtout du contenu (ce qui comprend notament les sons, les musiques,
les modèls 3D, les maps, les texture, etc..).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Irrlicht: Présentations&lt;/h3&gt;
&lt;img src=&quot;http://irrlicht.sourceforge.net/images/projects/rabcat/Image13.jpg&quot; alt=&quot;logo Irrlicht&quot; /&gt;
&lt;br /&gt;
Irrlicht est un moteur 3D libre écrit en C++, il est
multi-plateforme (windows, Linux et Mac), son développement
est actif et les nouvelles versions ne se font pas trop attendre. &lt;br /&gt;
Il est possible d'utiliser une (ou toutes) des API suivantes: Direct3D
8, Direct3D 9, OpenGL 1.5, et deux rendus Software
différents.&lt;br /&gt;
Est intégré dans cette librairie une gestion
sommaire, mais pas mauvaise de la Physique (Gravité), de
même qu'elle dispose de son propre parser XML pour
enregistrer des configurations, des scènes, etc..&lt;br /&gt;
Nombres de formats sont compris, et pour n'en citer qu'une partie:
.md2, .bsp, .3ds, .png, .jpg, .tga, etc..&lt;br /&gt;
L'intégration de Shaders est aussi possible aisaiment (HLS
&amp;amp; GLS).&lt;br /&gt;
&lt;br /&gt;
Irrlicht dispose d'une comunauté bien vivante qui lui
procure des merveilles tel que des Outils de Light Mapping, des classes
de chargement de modèls doom3, des camera, des Forks en tout
genre, des intégration de moteurs physique, etc..&lt;br /&gt;
L'accompagnent également: IrrKlang et IrrEdit. IrrKlang est
un moteur de rendu sonnore et IrrEdit un éditeur de
scène.&lt;br /&gt;
Tout deux sont étroitement liés Irrlicht, mais
hélas, n'en actuellement qu'a des versions béta
bien jeunes.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://irrlicht.sourceforge.net/images/projects/irrEdit7.jpg&quot; alt=&quot;logo Irrlicht&quot; /&gt;
&lt;h3&gt;L'uitilisation d'Irrlicht&lt;/h3&gt;
Je ne me lance pas dans un tutoriel, encore une fois, on les trouve
nombreux sur la toile, et je préfère vous en
donner &amp;nbsp;des liens en Appendice.&lt;br /&gt;
Cependant ce que j'ai retenu d'Irrlicht, c'est son
éfficacité et son extreme simplicité.&lt;br /&gt;
Pour vous donner une idée, vous pouvez jeter un coup d'oeil
aux tutoriels disponibles sur le site officiel, mais grosso-modo, pour
le peu que l'on ai map, on peut se ballader façon doom-like
(c'est dépassé ce terme non? on dit quake-like ou
FPS maintenant non ?) dans sa map avec la finesse graphique digne d'un
quake 3 pour moins d'une cinquantaine de lignes. N'est-ce pas fabuleux ?&lt;br /&gt;
&lt;br /&gt;
Exemple, pour ajouter une camera style FPS, un simple
&quot;smgr-&amp;gt;addICameraSceneNodeFPS(...)&quot; suffit.&lt;br /&gt;
La gestion des évenements est assez simple aussi (assez
similaire à ce que propose la librairie GLUT je trouve).&lt;br /&gt;
Et il en va de même pour (presque) tout ce que vous voulez
faire.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
Avant de me lancer, j'ai hésité entre plusieurs
moteurs, Ogre3D notament ou CrystalSpace, et je ne sai pas si j'ai
choisi le meilleur, &amp;nbsp;n'ayant pas mis &quot;la main à la
pate&quot; pour les autre, mais j'ai été
très agréablement surrpris par Irrlicht. Simple,
communauté active, éfficace, complet.&lt;br /&gt;
Le moteur bien sur des manques, notament les types de fichiers
supportés, ou le rendu OpenGL légerement
derrière ses acolytes microsoftiens, mais globalement, c'est
que du bonheur.&lt;br /&gt;
Cela semble évident mais je présice tout de
même que si Irrlicht est très simple, il est
impératif d'être à l'aise avec le C++
et son côté orienté objet qui est, ca
va de soit, abondament utilisé.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Liens&lt;/h3&gt;
&lt;h4&gt;Captures d'écrans&lt;/h4&gt;
&lt;a href=&quot;http://images.google.fr/images?q=irrlicht&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla:fr:official&amp;amp;sa=N&amp;amp;tab=wi&quot;&gt;http://images.google.fr/
Irrlicht&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.irrlicht.fr/forum/viewforum.php?id=12&quot;&gt;http://www.irrlicht.fr/forum/viewforum.php?id=12&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://irrlicht.sourceforge.net/screenshots.html&quot;&gt;http://irrlicht.sourceforge.net/screenshots.html&lt;/a&gt;
&lt;h4&gt;Sites&amp;nbsp;officiels &amp;amp; communautaires&lt;/h4&gt;
&lt;a href=&quot;http://irrlicht.sourceforge.net/&quot;&gt;http://irrlicht.sourceforge.net/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
site officiel [EN]&lt;br /&gt;
&lt;a href=&quot;http://www.irrlicht.fr/&quot;&gt;http://www.irrlicht.fr/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
site communautaire [FR]
&lt;h4&gt;Forums&lt;/h4&gt;
&lt;a href=&quot;http://irrlicht.sourceforge.net/phpBB2/index.php&quot;&gt;http://irrlicht.sourceforge.net/phpBB2/index.php&lt;/a&gt;
[EN]&lt;br /&gt;
&lt;a href=&quot;http://www.irrlicht.fr/forum/index.php&quot;&gt;http://www.irrlicht.fr/forum/index.php&lt;/a&gt;
[FR]
&lt;h4&gt;Informations&lt;/h4&gt;
&lt;a href=&quot;http://irrlicht.sourceforge.net/links.html&quot;&gt;http://irrlicht.sourceforge.net/links.html&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Pleins de liens&amp;nbsp;&amp;nbsp;&amp;nbsp; [EN]&lt;br /&gt;
&lt;a href=&quot;http://fr.wikipedia.org/wiki/Irrlicht&quot;&gt;http://fr.wikipedia.org/wiki/Irrlicht&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[FR]&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Irrlicht_Engine&quot;&gt;http://en.wikipedia.org/wiki/Irrlicht_Engine&lt;/a&gt;
Beaucoup plus complet&amp;nbsp;&amp;nbsp;&amp;nbsp; [EN]&lt;br /&gt;
&lt;a href=&quot;http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=4548&quot;&gt;http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=4548&lt;/a&gt;
FAQ générale&amp;nbsp;&amp;nbsp;&amp;nbsp; [EN]
&lt;h4&gt;Autre&lt;/h4&gt;
&lt;a href=&quot;http://fr.wikipedia.org/wiki/Moteur_de_jeu&quot;&gt;http://fr.wikipedia.org/wiki/Moteur_de_jeu&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[EN]&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_game_engines&quot;&gt;http://en.wikipedia.org/wiki/List_of_game_engines&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[EN]&lt;br /&gt;
&lt;a href=&quot;http://www.crystalspace3d.org/&quot;&gt;http://www.crystalspace3d.org/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Un moteur 3D très populaire&amp;nbsp;&amp;nbsp;&amp;nbsp;
[EN]&lt;br /&gt;
&lt;a href=&quot;http://www.ogre3d.org/&quot;&gt;http://www.ogre3d.org/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Ogre3D, un autre moteur 3D très
populaire&amp;nbsp;&amp;nbsp;&amp;nbsp; [EN]&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>du PHP en GTK.</title>
    <link>http://blog.photozite.info/index.php/post/2006/08/03/23-du-php-en-gtk</link>
    <guid isPermaLink="false">urn:md5:f939ade3a73ff3bb1b5362c37b22fb0d</guid>
    <pubDate>Thu, 03 Aug 2006 09:31:11 +0000</pubDate>
    <dc:creator>knoodrake</dc:creator>
        <category>Informatique</category>
        <category>gtk</category><category>informatique</category><category>php</category><category>programmation</category>    
    <description>&lt;img src=&quot;http://www.php-mag.net/magphpde/magphpde_news/pspic/pics/12/php44bb7aeb93a91.jpg&quot; alt=&quot;&quot; /&gt;&lt;br/&gt;
Besoin d'une petite application perso, mais voila, y'a un probleme:
tout ce que vous savez faire, c'est des sites dynamiques en PHP, et
pour courroner le tout, vous &amp;ecirc;tes sous Windows&amp;nbsp;!&lt;br&gt;
Mince, va falloir se mettre au Java/C/C++/ ?&lt;br&gt;
Non! pas n&amp;eacute;c&amp;eacute;ssairement, &lt;span
 style=&quot;font-weight: bold;&quot;&gt;PhpGtk&lt;/span&gt; est la pour
vous.&lt;br&gt;    &lt;img src=&quot;http://gtk.php.net/gifs/php-gtk.gif&quot; alt=&quot;&quot; /&gt;&lt;br/&gt;&lt;br/&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;Pour
sh&amp;eacute;matiser la chose&lt;/span&gt;: PhpGtk, c'est une
impl&amp;eacute;mentation pour PHP de la librairie graphique GTK.
Chouette ! Parcqu'en plus, GTK ca existe sur MacOS, Linux, *BSD,
Windows, .. :o)&lt;br&gt;
Donc, le but c'est bien de faire des applications graphiques en PHP (et
pas sous forme de page web !). Bref, ne sachant m'exprimer
gu&amp;egrave;re mieux qu'une loutre idiote, je vais arreter
l'explication ici et vous passer les liens et tout le tralala
n&amp;eacute;c&amp;eacute;ssaire au codage de votre petit programme PHP.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;Vous avez besoin pour faire du PHP-GTK:&lt;/h3&gt;
&lt;big&gt;&lt;a href=&quot;http://www.gnope.org/&quot;&gt;Gnope&lt;/a&gt;&lt;/big&gt;&lt;br&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;une distribution qui
contient: PHP-GTK, et un syst&amp;egrave;me de packtage pour distribuer
ses programmes et en r&amp;eacute;cuperer d'autres.&lt;/span&gt;&lt;br
 style=&quot;font-style: italic;&quot;&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Je vous le &lt;/span&gt;&lt;big
 style=&quot;font-style: italic; font-weight: bold;&quot;&gt;conseille
vivement&lt;/big&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;,
car il apparait qu'installer Gnope est la fa&amp;ccedil;on la plus
simple
d'installer PHP-GTK: un installer &quot;suivant, suivant, ..&quot; et ca marche,
avec des exemples et tout.&lt;br&gt;
&lt;/span&gt;&lt;a href=&quot;http://gtk.php.net/&quot;&gt;PHP-GTK&lt;/a&gt;&lt;br&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;distribution des
librairies PHP et GTK qui vont bien et qui &amp;nbsp;( normalement )
suffisent.&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://www.php.net/downloads.php&quot;&gt;PHP 5&lt;/a&gt;&lt;br&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Parcque si vous
choisissez d'installer PHP-GTK sans passer par Gnope, il vous faudra
quelques fichiers ( comme l'executable PHP CLI ) se trouvant dedans.&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://gladewin32.sourceforge.net/modules/news/&quot;&gt;Glade
win32&lt;/a&gt;&lt;br&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Et oui ! Un coup de
google, et on trouve des merveilles comme ce petit port de Glade/gtk
pour Windows !&lt;/span&gt;&lt;br style=&quot;font-style: italic;&quot;&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Rapel: Glade, c'est un
environement de d&amp;eacute;veloppement pour faire les interfaces
graphiques GTK.&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://phpgladetool.sourceforge.net/index.php&quot;&gt;phpGladeTools&lt;/a&gt;&lt;br&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;Que faire d'une belle
interface gtk faite avec Glade puisque celui-ci produit du C / C++ ?
phpGladeTools vous permettra en 2 cliques, 3 mouvements de &quot;compiler&quot;
votre fichier .glade en classe PHP ( c'est vraiment simple comme
bonjour, pas d'inquietudes ).&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;h4&gt;Et avant de partir vers d'autres chemins, des petites pistes
pour continuer dans la voie du php/gtk:&lt;/h4&gt;
Tout d'abord, un conseil: si vous conaissez rien a GTK, y'a deux
endroits qui vont vous aider:&lt;br&gt;
la &lt;a href=&quot;http://gtk.php.net/docs.php&quot;&gt;Doc de phpGtk&lt;/a&gt;
et les &lt;a href=&quot;http://www.gtk.org/tutorial/&quot;&gt;tutoriaux
de Gtk&lt;/a&gt; sur le site de gtk.&lt;br&gt;
&lt;big&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;C&lt;/span&gt;&lt;/big&gt;ompiler
du Php ? gn&amp;eacute;&amp;eacute;&amp;eacute; ? ben si. c'est
possible, mais par contre, &amp;ccedil;a a l'air payant:&lt;br&gt;
&lt;a href=&quot;http://www.roadsend.com/home/index.php?pageID=compiler&quot;&gt;Roadsend
PHP compiler 2&lt;/a&gt; *payant - uniquement phpGtk1 pour le moment*&lt;br&gt;
&lt;a href=&quot;http://www.zend.com/free_download/guard&quot;&gt;Zend
Guard&lt;/a&gt;&amp;nbsp; *payant*&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;a href=&quot;http://www.priadoblender.com&quot;&gt;PriadoBlender&lt;/a&gt;
*gratuit ? phpGtk2 ?*&lt;br&gt;
&lt;br&gt;
Et tant qu'on y est, un installeur libre, performant, toussatoussa: &lt;a
 href=&quot;http://nsis.sourceforge.net/Main_Page&quot;&gt;NSIS&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
&lt;h4&gt;Un petit &quot;HelloWorld&quot; &lt;img src=&quot;/themes/knoodrake3/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; ?&lt;/h4&gt;
&lt;code&gt;
&lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br&gt;
&lt;span style=&quot;color: rgb(102, 51, 102);&quot;&gt;function&lt;/span&gt;
destroy() { Gtk::main_quit(); }&lt;br&gt;
if( !class_exists('gtk')) { die('Please load the php-gtk2 module in
your php.ini
');}&lt;br&gt;
$&lt;span style=&quot;color: rgb(0, 102, 0);&quot;&gt;wind&lt;/span&gt;
=&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(204, 0, 0);&quot;&gt;new
&lt;/span&gt;GtkWindow;&lt;br&gt;
$&lt;span style=&quot;color: rgb(0, 102, 0);&quot;&gt;helo&lt;/span&gt;
&amp;nbsp; = &amp;nbsp; &amp;nbsp;&lt;span
 style=&quot;color: rgb(204, 0, 0);&quot;&gt;new&lt;/span&gt;
GtkLabel(&quot;Hello World !&quot;);&lt;br&gt;
$&lt;span style=&quot;color: rgb(0, 102, 0);&quot;&gt;wind&lt;/span&gt;-&amp;gt;add($&lt;span
 style=&quot;color: rgb(0, 102, 0);&quot;&gt;helo&lt;/span&gt;);&lt;br&gt;
$&lt;span style=&quot;color: rgb(0, 102, 0);&quot;&gt;wind&lt;/span&gt;-&amp;gt;show_all();&lt;br&gt;
Gtk::main();&lt;br&gt;
&lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;?&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/code&gt;
&lt;h4&gt;&lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;&lt;span
 style=&quot;color: rgb(0, 0, 0);&quot;&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
Je suis &amp;agrave; la recherche d'un complilateur phpGtk qui marche
avec Gtk2, si vous en connaissez un, merci de me l'indiquer: knoodrake
AT gmail DOT com
&lt;h4&gt;&lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;&lt;/span&gt;&lt;/h4&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>
