jeudi 30 juillet 2009
Technologie > La réalité augmentée l'avenir des présentations
La réalité augmentée est une façon différente d'agrémenter une vidéo, le principe de ce systeme est de reconnaitre un motif en temps réel sur une vidéo et de position des objets 3D selon l'orientation et la position de ce symbol dans l'espace.
Voici quelques exemples bluffant de réalité augmentée :
Les vidéos
La présentation Alstom à l'occasion de la conférence "What's Hot" du 17/06/2009
La réalité augmentée pour un catalogue allemand de Mini Cooper
Les expériences
Testez par vous même certaines applications en flash
Matériel requis :
- Une webcam
- Une imprimante
GE : Ecoimagination
Imprimez en premier le tag spécifique : http://ge.ecomagination.com/smartgrid/ar/printme.pdf
Rendez vous sur les pages suivantes :
- Eoliennes: http://ge.ecomagination.com/smartgrid/ar/turbine.html?c_id=direct
- Energie solaire : http://ge.ecomagination.com/smartgrid/ar/solar.html?c_id=direct
Mix audio avec les chewing gum 5 de la marque Wrigley
Imprimez en premier le tag spécifique : http://www.5gum.fr/data/pdf/5gumsymbols.pdf
Rendez vous sur la page suivante :
- Dans la rubrique Mixer : http://www.5gum.fr
Pour les développeurs
Il existe différent projets open source de réalité augmentée, comme par exemple le projet FLARToolKit qui vous permet de créer vos propres marqueurs et d'animer comme vous le souhaitez vos modèles 3D dans un environnement Flash/AS 3
Exmeple de l'utilisation de FLARToolKit
Tout d'abord imprimez ce marqueur en forme de cube à fabriquer : http://flash.tarotaro.org/flaris/cube.pdf
Ensuite Ouvrer cette page realite_augmentee.swf
Vous pouvez maintenant vous amuser avec le personnage japonais Hachune Miku
Source : http://flash.tarotaro.org/blog/2009/04/06/cube-type-marker-in-flar/#more-17
Libellés : AS 3, FLARToolKit, Flash, réalité augmenté
PHP > Mes fonctions personnalisées préférées
Voici la liste des fonctions PHP que j'utilise régulièrement dans mes scripts PHP
Filtrage des données
Supprimer les accents
function supprimerAccents($texte) {
$caracteresAvecAccents= "áéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙäëïöüÿÄËÏÖÜâêîôûÂÊÎÔÛåÅøØßçÇãñõÃÑÕ";
$caracteresSansAccents= "aeiouyAEIOUYaeiouAEIOUaeiouyAEIOUaeiouAEIOUaAoOscCanoANO";
return trim(strtr($texte, $caracteresAvecAccents, $caracteresSansAccents));
}
Confirmation d'origine des données d'un formulaire
Afin de garantir la sécurité de vos formulaires, il est indispensable de valider l'origine des données afin d'être sur quelles proviennent bien de votre formulaire.
Pour cela nous allons générer un TOKEN unique qui sera envoyé avec les données du formulaire puis vérifié avant le traitement des données.
<PHP?
// démarrage de la session
session_start();
// génération du token
$token = md5(uniqid(rand(), true));
// stockage du token dans la session
$_SESSION['token'] = $token;
?>
Maintenant nous allons mettre en place la sécurité sur le script qui traitera les données.
<?PHP
// démarrage de la session
session_start();
// vérification de la différence du token stocké et envoyé
if($_POST['token']!=$_SESSION['token'])
// arrêt de l'exécution du script et affichage d'un message d'erreur
die('Erreur : transmission des données incorrecte !');
// placer ici la suite du traitement
?>
Il vous suffit de placer ce code en début de fichier pour éviter les envois de données autrement que par votre formulaire
Nettoyage de sécurité des chaines de caractères
Cette fonction permet de supprimer les données non souhaitées d'une chaine de caractère
function securite($chaine)
{
return stripslashes(htmlentities(addcslashes(strip_tags(trim($chaine)))));
}
Si vous souhaitez filtrer toutes les données envoyées avec votre formulaire, vous pouvez combiner le code précédent avec celui qui suit
foreach($_POST as $cle=>$valeur)
$$cle=securite($valeur);
Ce code a pour effet de créer une variable php par champs HTML envoyé, par exemple si vous avez créé un champ de nom "toto" (name='toto') vous aurez une variable $toto qui contiendra les données du champ toto filtrées avec notre fonction.
Libellés : developpement web, fonctions PHP, PHP
mercredi 29 juillet 2009
Bidoullage > Mettre ou changer l'icone d'une clé USB Lacie
Je viens tout juste de faire l'acquisition d'une clé USB Lacie de 4 Go, et lorsque je branche ma clé une icone apparait dans mon poste de travail avec une belle icône en forme de clé.
La première chose que j'ai fait a été de formater ma clé, et là : horreur l'icône n'apparaissait plus.
En fait tout s'explique, car l'image ainsi que le fichier permettant de faire apparaitre l'icône son contenu dans les fichiers accessibles de la clé et donc peuvent être supprimé facilement.
Si comme moi vous souhaitez remettre en place l'icône, je vais vous expliquer la marche à suivre.
Etape 1
Trouver l'icone que vous souhaitez faire apparaitre dans le poste de travail.
/!\ cette icone doit être un fichier avec une extension .ico
Voici un exemple de fichier que vous pouvez utiliser :
LacieUsbKeyIcon.ico
Ensuite placez l'icône à la racine de votre clé usb
Etape 2
Nous allons maintenant modifier ou créer le fichier autorun.inf à la racine de la clé usb.
Pour cela il vous suffit d'éditer le fichier autorun.inf avec le bloc note et d'y placer les lignes suivantes :
[autorun]
icon=LacieUsbKeyIcon.ico
Enregistrez le fichier puis éjectez la clé, si tout c'est bien passé, lorsque vous reconnecterez votre clé l'icone de votre choix apparaitra dans le poste de travail.
/!\Cette méthode fonctionne pour Windows et n'a pas été testé sous Linux ni sous Mac OS
Libellés : bidouillage, clé usb, icones, lacie, usb key
mercredi 22 juillet 2009
MySQL > Les requêtes MySQL que je trouve utiles
Lorsque vous développez une application utilisant une base de données, on se rend très rapidement compte que les SQL tient une place importante dans notre code.
Vous avez ainsi un grand nombre de requêtes SQL qui sont exécutées pour des opérations courantes et cela sans vous soucier du nombre de demandes que vous envoyez au serveur.
Il est simple de faire faire plusieurs actions au SGBDR en une seule requête, grâce à mon expérience je vais pouvoir partager avec vous quelques unes de ces requêtes SQL "magiques".
Création de Table
La requete de création de table en SQL est CREATE TABLE
Exemple :
CREATE TABLE erreurs404 (
id tinyint(4) unsigned NOT NULL auto_increment,
typeErreur varchar(80) NOT NULL,
origine varchar(255),
description varchar(255),
PRIMARY KEY (id)
)
A partir d'une requete SQL
Dans certains cas vous pouvez avoir besoin de combiner les résultats de plusieurs requêtes SQL afin de les traiter ultérieurement et de façon régulière.
Pour cela vous pouvez créer et éxécuter plusieurs requêtes que vous combinerez avec PHP ou alors créer une table contenant le résultat combiné de ces requêtes.
CREATE TABLE erreurs404SurPages SELECT * FROM erreurs404 INNER JOIN erreursPages ON erreurs404.id=erreursPages.code
La table ainsi créée contiendra autant de champs que la requête en retourne.
Insertion et Mise à jour de tabla
Insertion sinon Mise à jour
Dans le cadre de statistiques, par exemple, vous pouvez avoir besoin d'insérer des informations dans la Base de données ou si celles-ci existe déjà, vous devez mettre à jour certains champs.
Dans cet exemple je vais vous montrer comment passer des 2 à 3 requetes SQL à une seule requete.
Creation de la table "visiteurs" :
CREATE TABLE IF NOT EXISTS `visiteurs` (
`addrIP` varchar(20) NOT NULL,
`jourVisite` date NOT NULL,
`nombreVisite` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`addrIP`,`jourVisite`)
)
Chaque jour nous enregistrons le nombre de visites d'un internautes, l'internaute est identifié grâce à son adresse IP
A chaque visite, nous vérifions si le couple adresse IP/Jour existe dans la table, si non on l'ajoute autrement on met à jour le nombre de visite
INSERT INTO visiteurs
(addrIP,jourVisite,nombreVisite)
VALUES
("127.0.0.1","2009-10-10",1)
ON DUPLICATE KEY UPDATE nombreVisite=V nombreVisite+1;
/!\ la clause "ON DUPLICATE KEY" ne porte que sur les clés primaires
Libellés : astuces, developpement web, MySQL, SQL
mardi 21 juillet 2009
Google Earth > Voler sur la Lune ou sur Mars c'est possible
Qui n'a jamais essayé l'outil de Google : Google Earth ?
Pour ceux qui ne connaitraient pas, Google Earth est un logiciel permettant de parcourir la Terre en 3D avec des cartes satellites ou aériennes provenant de différentes sources.
Les développeurs de Google améliorent régulièrement cet outil afin d'étendre notre vision de la planète Terre... et maintenant de la Lune et de Mars.
Google Earth intègre un simulateur de vol que vous pouvez dorénavant utiliser sur la Lune et sur Mars.
Voici la vidéo de mon expérience de vol sur la lune :
Voici la vidéo de mon expérience de vol sur Mars :
Pour télécharger Google Earth : Télécharger Google Earth
Libellés : google, google earth, lune, mars
Google maps API > récuperer la longitude, latitude et l'altitude
Grâce à l'excellente API de Google Maps vous pouvez récupérer différentes informations d'un point de la carte.
L'API permet de récupérer facilement la longitude et l'altitude grâce aux méthodes lat() et lng() de l'objet GLatLng.Utilisation de l'API google Maps
Voici un premier exemple qui permet d'afficher une carte sur laquelle vous pouvez cliquer pour faire apparaitre la latitude et la longitude du point choisi.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Google Map API > Afficher les coordonnees d un point</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false&key=votre clé google map"></script>
<script type="text/javascript">
// création de la fonction d initialisation
function initialize()
{
// vérification de la compatibilite du navigateur
if (GBrowserIsCompatible())
{
// creation d'une carte Google Map dans la balise DIV portant l id "carte"
var map = new GMap2(document.getElementById("carte"));
// centrage de la carte sur le point correspondant à ces coordonnées (ville de Lyon)
map.setCenter(new GLatLng(45.75985868785574,4.84222412109375),8);
// ajout de la barre d'outil permettant de choisir le type de carte
map.addControl(new GMapTypeControl());
// ajout de la barre d'outil permettant de zoomer sur la carte
map.addControl(new GLargeMapControl());
// ajout d un observateur d'evenement pour l action click afin d afficher les coordonnées
GEvent.addListener(map, "click", function(overlay,point)
{
// vérification pour savoir si la variable point est vraie
if (point)
{
// affichage d une info bulle contenant les coordonnées à l emplacement cliqué
map.openInfoWindow(point, "Latitude : " +point.lat()+ "
Longitude : "+point.lng());
}
});
}
}
</script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="carte" style="width: 500px; height: 400px"></div>
</body>
</html>
Voir la résultat
Récupération de la l'altitude
L'API Google Map ne permet pas de récupérer l'altitude d'un point, par contre d'autres sites fournissent au format XML l'altitude d'un point à partir de sa latitude et longitude.
Pour cela nous allons utiliser la fonction GDownloadUrl qui permet de récupérer les résultats d'une page en ajax et de le traiter en javascript.
Etape 1 :
Créer un fichier PHP qui va générer un fichier XML contenant l'altitude à partir des coordonnées d'un point.Nous allons utiliser l'URL http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation afin de récupérer l'altitude.
Fichier : getAltitude.php
<?php
// récupération du parametre lat
$lat = $_REQUEST["lat"];
// récupération du parametre lng
$lng = $_REQUEST["lng"];
// définition de l'entete HTTP du document
header("Content-type: text/xml");
// récuperation et affichage du contenu de l'adresse suivante
echo file_get_contents("http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=" . $lng . "&Y_Value=" . $lat . "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true");
?>
Etape 2 :
Nous allons modifier la fonction initialize() créée dans la première partie :
Voici comment nous allons la tranformer :
function initialize()
{
// vérification de la compatibilite du navigateur
if (GBrowserIsCompatible())
{
// creation d'une carte Google Map dans la balise DIV portant l'id "carte"
var map = new GMap2(document.getElementById("carte"));
// centrage de la carte sur le point correspondant à ces coordonnées (ville de Lyon)
map.setCenter(new GLatLng(45.75985868785574,4.84222412109375),8);
// ajout de la barre d'outil permettant de choisir le type de carte
map.addControl(new GMapTypeControl());
// ajout de la barre d'outil permettant de zoomer sur la carte
map.addControl(new GLargeMapControl());
// ajout d'un observateur d'evenement pour l'action click afin d'afficher les coordonnées
GEvent.addListener(map, "click", function(overlay,point)
{
// vérification pour savoir si la variable point est vraie
if (point)
{
GDownloadUrl('altitude.php?lat=' +point.lat()+ '&lng=' +point.lng(), function(data)
{
// récuperation du résultat de la page au format XML
var doc = GXml.parse(data);
// extraction du contenu du fichier XML pour récuperer l'altitude
var altitude = parseInt(GXml.value(doc));
// affichage d'une info bulle contenant les coordonnées à l'emplacement cliqué
map.openInfoWindow(point, "Latitude : " +point.lat()+ "
Longitude : "+point.lng()+"
Altitude : "+altitude);
})
}
});
}
}
Nous avons modifié l'evenement "click" afin que lors de l'eéxuction de celui ci, le fichier getAltitude.php soit appelé en AJAX afin de fournir l'altitude du point sélectionné
Libellés : api google, google, google maps, google maps api, javascript
lundi 20 juillet 2009
Microsoft > MSN meurt dans un trou noir
C'est avec stupeur que nous avons pu vivre les derniers instants du portail MSN qui, suite à la découverte d'un trou noir, a disparu ...
... Pour donner naissance au nouveau portail MSN

Un beau coup de Buzz marketing de la part de Microsoft
Libellés : Microsoft, mort de msn, portail msn
vendredi 17 juillet 2009
Web > Codes d'erreur AJAX
- 0 : non initialisé (souvent du à une erreur de syntaxe empechant la creation de l'objet XMLHttpRequest )
- 1 : connexion établie (Tout fonctionne correctement)
- 2 : requête reçue (Le serveur a reçu votre demande)
- 3 : réponse en cours (le serveur traite votre demande)
- 4 : terminé (un résultat a été retourné par le serveur)
- 200 : le resultat a été retourné avec succès
- 404 : le fichier appelé n'a pas été trouvé par le serveur
- 500 : le serveur a un problème de fonctionnement
- Tous les codes d'erreurs HTTP peuvent être retournés (cf : Code d'erreurs HTTP)
function ajax(url,method,idDiv,params)
{
var http;
try
{
http = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1)
{
try
{
http = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2)
{
try
{
http = new XMLHttpRequest();
}
catch(e3)
{
alert('Votre navigateur est pourri');
http=false;
}
}
}
http.onreadystatechange=function()
{
if(http.readyState==4)
{
if(http.status==200)
document.getElementById(idDiv).innerHTML=http.responseText;
else
document.getElementById(idDiv).innerHTML="Erreur : "+http.status;
}
else
document.getElementById(idDiv).innerHTML="Chargement...";
};
http.open(method,url,true);
if(method=="post")
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(params);
}
Libellés : AJAX, developpement web, erreurs AJAX, javascript
PHP > Liste des codes d'erreurs PHP
| EREEUR | ORIGINE | Référence PHP |
|---|---|---|
| T_ABSTRACT | abstract | Abstraction de classes (disponible depuis PHP 5.0.0) |
| T_AND_EQUAL | &= | opérateurs d'assignation |
| T_ARRAY | array() | array(), syntaxe de tableau |
| T_ARRAY_CAST | (array) | transtypage |
| T_AS | as | foreach |
| T_BAD_CHARACTER | Tous les caractères en dessous de ASCII 32 excepté \t (0x09), \n (0x0a) et \r (0x0d) | |
| T_BOOLEAN_AND | && | opérateurs logiques |
| T_BOOLEAN_OR | || | opérateurs logiques |
| T_BOOL_CAST | (bool) ou (boolean) | transtypage |
| T_BREAK | break; | break |
| T_CASE | case | switch |
| T_CATCH | catch | Les exceptions (disponible depuis PHP 5.0.0) |
| T_CHARACTER | ||
| T_CLASS | class | classes et objets |
| T_CLASS_C | __CLASS__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_CLONE | clone | classes et objets. (disponible depuis PHP 5.0.0) |
| T_CLOSE_TAG | ?> ou %> | |
| T_COMMENT | // ou #, et /* */ en PHP 5 | commentaires |
| T_CONCAT_EQUAL | .= | opérateurs d'assignation |
| T_CONST | const | |
| T_CONSTANT_ENCAPSED_STRING | "foo" ou 'bar' | syntaxe chaîne de caractères |
| T_CONTINUE | continue | |
| T_CURLY_OPEN | ||
| T_DEC | -- | opérateurs d'incrémention/décrémention |
| T_DECLARE | declare | declare |
| T_DEFAULT | default | switch |
| T_DIR | __DIR__ | constantes magiques (disponible depuis PHP 5.3.0) |
| T_DIV_EQUAL | /= | opérateurs d'assignation |
| T_DNUMBER | 0.12, etc. | nombres à virgule flottante |
| T_DOC_COMMENT | /** */ | style de commentaire dans la PHPDoc (disponible depuis PHP 5.0.0) |
| T_DO | do | do...while |
| T_DOLLAR_OPEN_CURLY_BRACES | ${ | syntaxe de variable complexe analysée |
| T_DOUBLE_ARROW | => | syntaxe de tableau |
| T_DOUBLE_CAST | (real), (double) ou (float) | transtypage |
| T_DOUBLE_COLON | :: | Voyez T_PAAMAYIM_NEKUDOTAYIM plus bas |
| T_ECHO | echo | echo() |
| T_ELSE | else | else |
| T_ELSEIF | elseif | elseif |
| T_EMPTY | empty | empty() |
| T_ENCAPSED_AND_WHITESPACE | ||
| T_ENDDECLARE | enddeclare | declare, syntaxe alternative |
| T_ENDFOR | endfor | for, syntaxe alternative |
| T_ENDFOREACH | endforeach | foreach, syntaxe alternative |
| T_ENDIF | endif | if, syntaxe alternative |
| T_ENDSWITCH | endswitch | switch, syntaxe alternative |
| T_ENDWHILE | endwhile | while, syntaxe alternative |
| T_END_HEREDOC | syntaxe heredoc | |
| T_EVAL | eval() | eval() |
| T_EXIT | exit or die | exit(), die() |
| T_EXTENDS | extends | extends, classes et objets |
| T_FILE | __FILE__ | constantes magiques |
| T_FINAL | final | Mot-clé "final" (disponible depuis PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | fonctions |
| T_FUNC_C | __FUNCTION__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_GLOBAL | global | scope de variable |
| T_GOTO | goto | non documenté (disponible depuis PHP 5.3.0) |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponible depuis PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | Interfaces (disponible depuis PHP 5.0.0) |
| T_INC | ++ | opérateurs d'incrémention/décrémention |
| T_INCLUDE | include() | include() |
| T_INCLUDE_ONCE | include_once() | include_once() |
| T_INLINE_HTML | ||
| T_INSTANCEOF | instanceof | opérateurs de type (disponible depuis PHP 5.0.0) |
| T_INT_CAST | (int) ou (integer) | transtypage |
| T_INTERFACE | interface | Interfaces (dipsonible depuis PHP 5.0.0) |
| T_ISSET | isset() | isset() |
| T_IS_EQUAL | == | opérateurs de comparaison |
| T_IS_GREATER_OR_EQUAL | >= | opérateurs de comparaison |
| T_IS_IDENTICAL | === | opérateurs de comparaison |
| T_IS_NOT_EQUAL | != ou <> | opérateurs de comparaison |
| T_IS_NOT_IDENTICAL | !== | opérateurs de comparaison |
| T_IS_SMALLER_OR_EQUAL | <= | opérateurs de comparaison |
| T_LINE | __LINE__ | constantes magiques |
| T_LIST | list() | list() |
| T_LNUMBER | 123, 012, 0x1ac, etc | entiers |
| T_LOGICAL_AND | and | opérateurs logiques |
| T_LOGICAL_OR | or | opérateurs logiques |
| T_LOGICAL_XOR | xor | opérateurs logiques |
| T_METHOD_C | __METHOD__ | constantes magiques (disponible depuis PHP 5.0.0) |
| T_MINUS_EQUAL | -= | opérateurs d'assignation |
| T_ML_COMMENT | /* et */ | commentaires (PHP 4 uniquement) |
| T_MOD_EQUAL | %= | opérateurs d'assignation |
| T_MUL_EQUAL | *= | opérateurs d'assignation |
| T_NS_C | __NAMESPACE__ | namespaces. Également défini comme T_NAMESPACE (disponible depuis PHP 5.3.0) |
| T_NEW | new | classes et objets |
| T_NUM_STRING | ||
| T_OBJECT_CAST | (object) | transtypage |
| T_OBJECT_OPERATOR | -> | classes et objets |
| T_OLD_FUNCTION | old_function | (uniquement PHP 4) |
| T_OPEN_TAG | sortie du mode HTML | |
| T_OPEN_TAG_WITH_ECHO | sortie du mode HTML | |
| T_OR_EQUAL | |= | opérateurs d'assignation |
| T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Définie également en tant que T_DOUBLE_COLON. |
| T_PLUS_EQUAL | += | opérateurs d'assignation |
| T_PRINT | print() | print() |
| T_PRIVATE | private | classes et objets (disponible depuis PHP 5.0.0) |
| T_PUBLIC | public | classes et objets (disponible depuis PHP 5.0.0) |
| T_PROTECTED | protected | classes et objets (disponible depuis PHP 5.0.0) |
| T_REQUIRE | require() | require() |
| T_REQUIRE_ONCE | require_once() | require_once() |
| T_RETURN | return | valeurs retournées |
| T_SL | << | opérateurs sur les bits |
| T_SL_EQUAL | <<= | opérateurs d'assignation |
| T_SR | >> | opérateurs sur les bits |
| T_SR_EQUAL | >>= | opérateurs d'assignation |
| T_START_HEREDOC | <<< | syntaxe heredoc |
| T_STATIC | static | scope de variable |
| T_STRING | ||
| T_STRING_CAST | (string) | transtypage |
| T_STRING_VARNAME | ||
| T_SWITCH | switch | switch |
| T_THROW | throw | Les exceptions (disponible depuis PHP 5.0.0) |
| T_TRY | try | Les exceptions (disponible depuis PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | type-casting (disponible depuis PHP 5.0.0) |
| T_USE | use | namespaces (disponible depuis PHP 5.3.0) |
| T_VAR | var | classes et objets |
| T_VARIABLE | $foo | variables |
| T_WHILE | while | while, do...while |
| T_WHITESPACE | ||
| T_XOR_EQUAL | ^= | opérateurs d'assignation |
Libellés : developpement web, erreurs PHP, PHP
mardi 14 juillet 2009
Unity 3D > Première réalisation après une semaine
Libellés : 3d games, developpement web, jeux videos, unity 3d
mercredi 8 juillet 2009
Unity 3D > Réaliser son propre jeu video 2D/3D de qualité professionnelle
Si vous n'arrivez pas à visualiser l'exemple sur cette page vous pouvez télécharger et exécuter le fichier suivant : unity3DLevel1.exe
http://learnmesilly.com/index.php?currentPage=unity_lesson1
Libellés : 3d games, developpement web, jeux videos, unity 3d
Abonnement Messages [Atom]
Erreurs 404 

