, bovino S'il est bien une balise qui est souvent mal utilisée en HTML, c'est la balise <script>.
Nous allons essayer dans ce billet de faire le point sur cette balise en comprenant pourquoi.
La syntaxe de base est relativement simple et ne pose pas de problème :
<script></script>
Il est toutefois important de noter que même si elle ne possède pas forcément de contenu, elle reste susceptible d'en avoir (le script en lui-même) ce qui fait que contrairement à une balise <link /> mais à l'instar d'une balise <style>, elle n'est pas autofermante et doit posséder une balise fermante.
L'attribut src ne pose habituellement pas de gros soucis.
Cet attribut correspond à l'URL à laquelle se trouve le fichier correspondant. Attention toutefois, dans le cas d'une URL relative, de bien comprendre où se trouve le script en fonction de l'URL effective (celle affichée par le navigateur) qui appellera le script. Attention donc par exemple aux include en PHP.
En revanche, deux attributs sont assez souvent confondus, il s'agit des attributs language et type.
Il faut déjà savoir que le premier est deprecated depuis HTML 4 alors qu'au contraire, le second est required. Cela signifie qu'il faut bannir language.
La syntaxe correcte devient donc
<script type="text/javascript"></script>
Mais alors, si l'attribut language est à bannir, pourquoi le retrouve-t-on si souvent ?
D'abord, parce que malheureusement, plusieurs facteurs empêchent de l'éradiquer.
Déjà, de nombreux scripts usuels sont bien référencés et recopiés tels quels bien que très anciens. Du coup, l'attribut se propage facilement.
D'autre part, peut-être surtout, parce que beaucoup ignorent la signification de cet attribut.
A la base, il servait à indiquer le langage et la version du langage de script utilisé. Cependant, aucune norme n'a été trouvée pour savoir ce qu'il pouvait bien contenir, ce qui a donc amené à ce qu'il soit déprécié. De toute façon, le seul langage de script universellement reconnu par les navigateurs est JavaScript (quelle que soit sa déclinaison : ECMAScript, JScript, ...) donc l'information n'a que peu d'intérêt. De même, préciser une version à utiliser n'a pas vraiment de sens : JavaScript, pour des raisons de rétro-compatibilté ne perd pas de fonctionnalités, il ne fait qu'en accepter de nouvelles !
Note : en HTML5, l'attribut type n'est plus requis et dans cette version, la syntaxe
<script[ src="..."]></script>
est désormais suffisante.
Pendant longtemps (et on retrouve encore couramment la syntaxe), les scripts étaient entourés soit de commentaires HTML soit d'entités CDATA :
<script type="text/javascript"><!--
// Code JavaScript
--></script>
<script type="text/javascript"><![CDATA[
// Code JavaScript
]]></script>
Là encore, la pratique remonte à un temps que les moins de 20 ans (voire plus !) n'ont pas connue !
Ces syntaxes, héritées du XML, servaient à l'origine à éviter que les navigateurs ne possédant pas d'interpréteur JavaScript (on ne parle pas de ceux qui ont JavaScript désactivé, bien de ceux pour lesquels JavaScript n'existe tout simplement pas !) n'essayent d'interpréter le contenu du script comme du HTML. De mémoire, on parle là de IE3 et de NS3. Il me semble que la part de marché de ces navigateurs atteint depuis longtemps un seuil qui rend cette technique quelque peu obsolète !
Plusieurs écoles s'affrontent à ce niveau.
Une chose est sure : il est demandé de séparer les différentes couches du document : le HTML pour le contenu, le CSS pour la mise en forme et le JavaScript pour l'ergonomie (ou le le comportement). Ainsi, insérer ses scripts en plein milieu du document est assez maladroit.
Pendant un temps, les bonnes pratiques recommandaient de placer les scripts entre les balises <head> et de les initialiser via l'événement onload de l'objet window.
Cette façon de procéder est plutôt satisfaisante mais l'événement onload implique que l'ensemble du contenu de la page soit chargé avant de lancer les scripts (donc y compris les éléments dits remplacés : images, iframes, object, etc.) et comme les pages Web deviennent de plus en plus gourmandes en ressources externes, cela fini par nuire à l'expérience utilisateur.
Différentes techniques existent pour pallier cela, entre autre, l'utilisation de l'événement DOMContentLoaded, mais qui n'est pas (encore) suffisamment universel pour être totalement satisfaisant.
La problématique est que pour pouvoir utiliser un script, il faut que les éléments du DOM qu'il va utiliser existent au moment où il est appelé. Une solution efficace est alors de placer les scripts juste avant la fermeture du document (avant la balise </body>), ce qui permet d'être sûr que les éléments du DOM ont été créés et de conserver la notion de séparation des couches.
Gardez toutefois à l'esprit que quelle que soit la solution choisie, elle aura une importance majeure lors de l'écriture de codes destinés à être réutilisés.
Vous devez être identifié pour poster un commentaire.
S'il est bien une méthode méconnue en JavaScript, c'est la méthode write() de l'objet document.
La syntaxe est pourtant simple :
document.write(arg1, arg2, ..., argn);
Les arguments attendus sont des chaînes de caractères (ou tout du moins des arguments possédant une méthode toString())
Vous noterez au passage que le nombre de paramètres que l'on peut passer à cette méthode est indéterminé.
L'instruction précédente aura pour effet d'ajouter la valeur de chaque paramètre dans la page.
Par exemple
document.write('toto', 12, [1,2,3]);
affichera :
toto121,2,3
Notez que chaque argument est ajouté à la suite du précédent sans insérer de séparateur.
Malgré tout, certaines valeurs affichent un résultat inattendu :
document.write(false, {toto: 'tata', foo: 'bar'});
affichera :
false[object Object]
c'est-à-dire qu'un booléen ne sera pas transformé en 0 ou 1 mais en false ou true et un objet affichera (en fonction du navigateur) [object Object].
Jusque là, rien de vraiment compliqué à comprendre, d'autant que l'on passe habituellement un seul paramètre correspondant à une chaîne à afficher.
Cependant, le comportement de cette méthode dépend de l'état du document au moment de son appel.
En effet, un document HTML peut avoir deux états distincts : ouvert ou fermé.
Lorsque le navigateur reçoit un contenu HTML à afficher, il commence par ouvrir un document (le flux) puis interprète le code HTML en affichant son contenu et en construisant le DOM et une fois l'intégralité du code interprété, il ferme le document.
Pendant que le document est ouvert, si le navigateur rencontre une instruction JavaScript write(), alors ses arguments sont insérés à l'emplacement de cette instruction dans le code.
C'est le comportement attendu de cette méthode.
Mais il faut savoir que document.write() a besoin que le document soit ouvert pour pouvoir fonctionner correctement. Que se passe-t-il alors si le document est fermé ?
Dans ce cas, JavaScript va appeler en interne l'instruction document.open() puis exécuter le write().
Or document.open() correspond à l'ouverture du flux d'affichage, ce qui signifie que l'appel à cette méthode va recréer un nouveau flux, en commençant par supprimer l'existant.
Pour vous en convaincre, ouvrez une console JavaScript (par exemple Firebug pour Firefox) et dans la ligne de commande, tapez l'instruction
document.open();
et vous constaterez que la page va devenir blanche. Au passage, vous noterez aussi que l'indicateur de chargement se met en place (à la place du favicon), ce qui est le cas lorsque le flux est ouvert.
De la même manière, si vous entrez
document.write('Hello world !');
dans la console, vous constaterez que l'ensemble du contenu a été remplacé par le message "Hello world !". Vous pourrez aussi vérifier que l'indicateur de chargement est toujours actif : le document n'a pas été refermé.
Si ensuite vous entrez l'instruction
document.close();
dans la console, l'indicateur de chargement disparaitra au profit du favicon par défaut.
La première impression que l'on pourrait avoir en comprenant ce fonctionnement serait de se dire qu'il faut effectivement faire attention au contexte avant d'utiliser cette méthode.
En fait, il faut surtout considérer write() comme une méthode à bannir.
Déjà, parce qu'une méthode dont on ne peut garantir le comportement n'est pas à recommander.
Ensuite, parce que les bonnes pratiques en développement Web préconisent de séparer les couches : HTML pour l'affichage, CSS pour la mise en forme et JavaScript pour le comportement : utiliser la méthode write() implique d'introduire au niveau de l'affichage du JavaScript qui n'a rien à y faire, surtout que pour manipuler le document, de nombreuses méthodes du DOM sont disponibles et beaucoup plus fiables.
On pourrait aussi évoquer le fait que l'utilisation de write() interdit l'accès aux informations à ceux qui, pour une raison quelconque, ont JavaScript désactivé. Mais surtout, son utilisation (et son existence) force les navigateurs à une pratique particulièrement désagréable et dommageable qui est le chargement des scripts de façon synchrone.
En effet, l'affichage de la page doit être garantit par le navigateur, or si un script possède une instruction write(), alors il est important de pouvoir prévoir de façon certaine à quel endroit du document ses paramètres seront affichés, c'est pour cela que les navigateurs bloquent l'interprétation de la page pendant le chargement et l'évaluation des scripts (à la différence des autres éléments de la page, comme les images ou les iframes) ce qui retarde d'autant l'affichage du reste du contenu.
Vous devez être identifié pour poster un commentaire.
, bovino Voilà enfin arrivé ce jour tant attendu (en tout cas par moi). Je suis donc prêt, bic et carnet en main, à prendre pleins de bonnes notes sur les différents aspects de PHP.
8h30, je suis sur le parking et avance vers le site de Euratecnologies de Lille. Déjà, rien que pour la réaffectation de ce bâtiment, le détour en valait la peine.
Après avoir récupéré mon badge et mon petit cadeau, un éléphant rose (ça va se chamailler à la maison), je me dirige vers l’auditoire pour la keynote présentée par Jean-Marc Fontaine de Alter Way.
La bienvenue nous est souhaitée et la présentation des deux jours nous est narrée, tout en nous présentant l’AFUP et en nous motivant pour ouvrir des antennes dans nos régions (peut-être une bonne idée à creuser là).
Le sujet de la première conférence à laquelle j’ai assisté est la présentation de PHP 5.4 par Julien Pauli, nous expliquant les grandes nouveautés, qui ne se trouvent pas forcément dans le langage, mais bien dans sa construction, avec la mise en place de RFC, permettant à chaque utilisateur d’émettre des changements dans le langage.
Un cycle de vie déterminé de 3 ans par mise à jour majeure et de 1 an pour une mise à jour mineure.
De plus une bonne nouvelle est que la descendance ne sera plus cassée dans les versions mineures.
Bien sûr, les nouveautés liées au langage nous sont présentées, mais cela n’est plus un secret et l’on trouve tout sur developpez.com.
Par contre, Julien nous annonce un gain de performance de l’ordre de 55% par rapport à PHP5.3, avec benchmark à la clé.
Julien nous a promis ses slides sur le site de l’AFUP très prochainement.
Ensuite, j’ai assisté à l’industrialisation du site lamaisondevalerie.fr , faisant partie du groupe Conforama, présentée par Sophie Beaupuis.
Ici expliquer en quelque mots serait difficile tant les infos étaient nombreuses, on a pu voir tout le panel d’outils utilisés pour le développement de son application (très orienté Zend avec la suite de produit complets).
Ce qui était agréable dans cette présentation est que madame Beaupuis s’est mouillée en nous expliquant les freins liés à son projet et a eu l’honnêteté de dire ‘désolée je ne connais pas’.
J’ai pris 5 minutes pour vous faire ces quelques lignes et je remercie Jean Marc Fontaine de m’avoir trouvé un petit Wifi.
Ce soir je vous poste la suite de cette première journée.
Un seul regret actuellement, est de ne pas avoir pris de CV avec moi, parce que les offres d’emploi ici sont palpables… Merci le réseautage !
Par MaitrePylos
Vous devez être identifié pour poster un commentaire.
S'il est une erreur classique chez les débutants en AJAX, que l'on retrouve régulièrement sur le forum AJAX, c'est de vouloir utiliser les données du serveur avant de les avoir reçues.
Faisons une petite analogie.
Imaginons que vous ayez une poule. Tous les matins, vous souhaitez savoir combien d’œufs ont été pondus, vous envoyez donc quelqu'un les compter.
J'imagine, qu'au moment même où cette personne part compter les œufs, il ne vous viendrait pas à l'esprit de l'appeler pour lui demander le compte : la moindre des choses est d'attendre qu'elle soit revenue car avant, elle ne connait pas l'information !
Avec AJAX, c'est exactement pareil. Le premier A de l'acronyme signifie asynchronous (asynchrone), c'est-à-dire que JavaScript ne va pas attendre la réponse du serveur avant de continuer à exécuter le code, sauf bien entendu si vous avez spécifié le mode synchrone.
Ainsi, le seul moment où l'on est sûr d'avoir reçu la réponse est lorsque la propriété readyState de l'objet XMLHttpRequest vaut 4 et que la propriété status correspond à un code de réussite de la requête (classiquement 200). C'est pourquoi tous les traitements se basant sur la réponse du serveur doivent être traités dans le callback de la requête..
Avant d'écrire son code, il est donc fondamental de se demander si les données que l'on veut utiliser existent ou non.
A titre d'exemple, un petit code :
var xhr = new XMLHttpRequest(), monResultat;
xhr.open('POST', url);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
monResultat = xhr.responseText;
alert(monResultat);
}
};
xhr.send('variable=valeur');
alert(maVariable);
Ici, le premier alert() affiché sera celui de la dernière ligne : JavaScript n'attend pas la réponse du serveur pour continuer à exécuter le code et cette alerte affichera undefined, puisqu'au moment où cette instruction est interprétée, aucune affectation n'a encore été faite pour maVariable ! Puis, lorsque le serveur aura répondu, le second alert() sera affiché avec cette fois la valeur attendue.
Voir aussi :
Vous devez être identifié pour poster un commentaire.
Il existe de nombreux cas en JavaScript qui nécessitent l'utilisation de fonctions de rappel (callback en anglais).
Une fonction de rappel est une fonction passée en paramètre d'une autre fonction. Pour JavaScript, c'est le cas par exemple de setTimeout(), setInterval() ou encore des fonctions appelées par un gestionnaire d'événement.
Cette notion de fonction de rappel est d'autant plus difficile à appréhender pour les débutants qu'il existe différentes façons distinctes de la définir, dont certaines erronées.
Les trois plus fréquentes sont les suivantes :
document.onclick = maFonction();document.onclick = "maFonction()";document.onclick = maFonction;setTimeout(maFonction(), délai);setTimeout("maFonction()", délai);setTimeout(maFonction, délai);Les exemples (1) sont tout simplement faux et ne produiront pas le résultat attendu. Ils sont un mélange entre les deux formes suivantes et dues à la confusion entre une fonction et le résultat de l'exécution de celle-ci.
Lorsque l'interpréteur JavaScript rencontre la notation maFonction() (donc avec les parenthèses), il comprend qu'il faut exécuter la fonction et le fait donc sur le champ. Or ce qu'attendent les méthodes nécessitant une fonction de rappel, c'est une référence à la fonction. Avec la notation des exemples (1), c'est le résultat de l'exécution qui sera affecté au clic ou au timer, sans attendre le moment souhaité par le développeur.
Les exemples (2) sont syntaxiquement corrects, mais fortement marqués d'obsolescence. En fait, dans ces cas ci, il n'y a pas de fonction de rappel de définie mais une portion de code qui sera évaluée au moment de l'appel. En interne, JavaScript va utiliser la méthode eval() pour interpréter le code, comme le montre l'exemple suivant :
function eval(){
alert('eval() is evil !');
}
function toto(){
alert('toto');
}
document.onclick = "toto()";
Dans cet exemple, c'est bien le message eval() is evil ! qui sera affiché. Cette façon de procéder, liée à la préhistoire de JavaScript, est fortement déconseillée !
Dans les exemples (3), c'est bien la référence à la fonction qui est utilisée De ce fait, lorsque le moment sera venu, cette fonction pourra être exécutée sans passer par l'utilisation de eval(), comme le montre l'exemple suivant :
function eval(){
alert('eval() is evil !');
}
function toto(){
alert('toto');
}
document.onclick = toto;
C'est bien le message toto qui est affiché lors du clic sur la page.
Note : si vous utilisez une console (par exemple celle de Firebug) pour tester les codes ci-dessus et que vous faites "Exécuter" deux fois de suite, vous obtiendrez le message eval() is evil, cela est dû au fait que l'injection du code dans le document utilise elle aussi des méthodes utilisant en interne eval() qui vient d'être redéfinie.
Mais alors, comment passer des paramètres à la fonction de rappel ?
Effectivement, le seul moyen de passer des paramètres à la fonction de rappel était celle des exemples (2), qui sont déconseillés.
Pour passer des paramètres, il va falloir utiliser une quatrième technique qui consiste à englober l'appel de la fonction de rappel dans une fonction anonyme. Cette fonction anonyme étant définie au moment de l'affectation, elle correspond donc à une référence à une fonction et non à une exécution de celle-ci :
function eval(){
alert('eval() is evil !');
}
function toto(texte){
alert(texte);
}
document.onclick = function(){
toto('Paramètre !');
};
Ce code affiche bien le paramètre passé à la fonction toto, elle-même englobée dans une fonction anonyme.
Vous devez être identifié pour poster un commentaire.
C'est une information qui est, il me semble, passée relativement inaperçue mais qui est selon moi assez intéressante à souligner.
Le noyau JavaScript, qui était resté longtemps figé, s'est enrichi avec les dernières versions des navigateurs, de nouvelles méthodes bien utiles.
Pour rappel, le noyau JavaScript (aussi appelé core JavaScript), par opposition au DOM JavaScript (ou JavaScript côté client) regroupe les objets natifs de JavaScript et surtout, la partie censée être commune à toutes ses variations.
Il regroupe en particulier les objets natifs Array et String qui ont vu leur prototype amélioré.
Il est à noter que ces ajouts sont aussi disponibles (sauf mention contraire) dans Internet Explorer depuis la version 9.
La méthode every()
Cette méthode permet d'appliquer à tous les membres du tableau une fonction de rappel afin de savoir si tous les éléments du tableau remplissent une condition.
Syntaxe
Array.every(callback, thisObjet);
Exemple
function isImpair(nb){
return nb & 1;
}
alert([1,5,17,89].every(isImpair));
alert([1,5,17,89, 100].every(isImpair));
La méthode filter()
Comme son nom l'indique, cette méthode permet de filtrer les éléments d'un tableau selon le résultat renvoyé par une fonction de rappel.
Syntaxe
Array.filter(callback, thisObjet);
Exemple
function isInferieurADix(nb){
return nb < 10;
}
alert([2,5,6,8,10,11].filter(isInferieurADix));
La méthode forEach()
Cette méthode permet d'appliquer un traitement à chaque élément du tableau.
Syntaxe
Array.forEach(callback, thisObjet);
Exemple
var tab = ['a','b','c','d','e'],
resultat = '',
i = 0;
function arrayToString(){
resultat += 'Rang '+i+'\t\tvaleur : '+this[i]+'\n';
i++;
}
tab.forEach(arrayToString, tab);
alert(resultat);
La méthode map()
La méthode map() va appliquer à chaque élément du tableau le traitement de la fonction de rappel.La méthode map()
Syntaxe
Array.map(callback, thisObjet);
Exemple
var tab = ['a','b','c','d','e'];
function double(val){
return val + val;
}
alert(tab.map(double));
La méthode some()
Similaire à la méthode every(), cette méthode va vérifier si au moins un des éléments du tableau est valide selon le résultat renvoyé par la fonction de rappel.
Syntaxe
Array.some(callback, thisObjet);
Exemple
function isInferieurADix(nb){
return nb < 10;
}
alert([10,20,30,40,50].some(isInferieurADix));
alert([5,10,20,30,40,50].some(isInferieurADix));
Ces méthodes renvoient la nouvelle chaîne mais ne modifient pas celle d'origine.
La méthode trim()
Supprime tous les caractères d'espacement en début et fin de chaîne.
Syntaxe
String.trim();
Exemple
var str = '\tTest ';
var strTrimmed = str.trim();
alert('!'+str+'!\n!'+strTrimmed+'!');
La méthode trimRight()
Supprime les espacements en fin de chaîne.
Syntaxe
String.trimRight();
Exemple
var str = '\tTest ';
var strTrimmed = str.trimRight();
alert('!'+str+'!\n!'+strTrimmed+'!');
La méthode trimLeft()
Supprime les espacements en début de chaîne.
Attention : étonnamment, cette méthode n'est pas (encore) disponible pour Internet Explorer et Opera...
Syntaxe
String.trimLeft();
Exemple
var str = '\tTest ';
var strTrimmed = str.trimLeft();
alert('!'+str+'!\n!'+strTrimmed+'!');
À noter aussi, pour l'objet Date, l'apparition de la méthode toISOString().
Vous devez être identifié pour poster un commentaire.
S'il est bien une question qui revient régulièrement sur les forums Développement Web, c'est de savoir quand on pourra commencer à utiliser le HTML5.
La bonne nouvelle
La bonne nouvelle, c'est que la réponse est très simple : il est déjà possible de publier des pages en HTML5 !
Ah bon ? Tous les navigateurs sont compatibles ?
Voilà effectivement la question sous-jacente à la précédente : quelles sont les fonctionnalités apportées par HTML5 déjà exploitables en production.
A cette question, il est difficile de répondre : les choses évoluent très vite et ce qui est vrai aujourd'hui ne le sera pas demain.
D'autre part, répondre à cette question n'est pas l'objet de ce billet !
En revanche, ce qu'il faut garder à l'esprit, c'est que le HTML5 ne se limite pas, encore heureux, aux nouvelles balises et aux nouvelles interfaces.
De plus, le HTML5 est pensé pour être complètement rétro-compatible, ce qui signifie que toute page codée en HTML 4 ou en xhtml 1 valide est valide en HTML5 !
Alors il ne faut pas hésiter : vous pouvez dès à présent passer toutes vos pages en HTML5, même si elles ne comportent aucun des ajouts apportés.
D'accord, mais alors comment faire ?
C'est très simple : il suffit juste de préciser le doctype adapté. En plus, le doctype HTML5 est le plus simple qui soit :
<!doctype html>
Vous ne vous souvenez plus s'il faut l'écrire en majuscule ou en minuscule ?
Ce n'est pas grave, il est insensible à la casse !
Vous pouvez aussi aller plus loin, puisque le HTML5 prévoit une balise meta spéciale pour indiquer l'encodage :
<meta charset="iso-8859-1" />
Là encore, faut-il ou non fermer les balises selon la norme XML, comme dans cet exemple ?
Mais ici aussi, HTML5 accepte les standards HTML ou xhtml, ce qui signifie que c'est comme vous le souhaitez (essayez toutefois de rester cohérent pour l'ensemble de la page).
En conclusion, étant donné la simplification qu'apporte le HTML5 en ce qui concerne de doctype, il serait dommage de s'en priver : essayez et validez vos pages sur le site du W3C, vous comprendrez que le HTML5, c'est pour hier !
Vous devez être identifié pour poster un commentaire.
Activée depuis quelques temps et utilisable avec une méthode peu pratique (saisie dans la barre d'adresse), la fonctionnalité de recherche d'images selon la couleur est maintenant disponible officiellement sur la version américaine de Google.
Désormais lorsqu'on effectue une recherche, un lien All colors s'affiche et permet de choisir une couleur dominante parmi 12. Le résultat suit alors la couleur demandée et on obtient des résultats plutôt bluffant.

Discussion et commentaires : Google propose la recherche d'images par couleurs
Source : Google Image Search Color Filter
Vous devez être identifié pour poster un commentaire.
La plate-forme de développement de jeux et de création multimédia prend en charge de nouvelles fonctionnalités audio, vidéo et 3D
À l’occasion de la Game Developer Conference aux Etats-Unis, Adobe Systems Incorporated (Nasdaq : ADBE) annonce une nouvelle version du logiciel Adobe® Director®. Les développeurs de jeux, créateurs multimédia et professionnels du e-learning y trouveront une multitude de nouvelles fonctions pour la création de contenus multimédias. Outil sophistiqué d’une grande souplesse, Adobe Director 11.5 prend en charge un nouveau moteur audio, la vidéo haute définition (HD) et des fonctions 3D avancées pour créer des applications destinées au web ou à un environnement bureautique.
Parmi les nouvelles fonctionnalités de Director 11.5, le moteur audio permet aux développeurs de fournir un son Surround 5.1 et de créer des effets audio avec des fonctionnalités de mixage en temps réel. La prise en charge du format H.264 et du streaming RTMP, permet aux utilisateurs de délivrer du contenu vidéo HD. Les développeurs peuvent en outre créer et importer des ressources 3D via Google SketchUp et SketchUp 3-D Importer, et également concevoir des jeux et des simulations reproduisant fidèlement la pesanteur et d’autres effets réalistes grâce aux fonctionnalités physiques avancées basées sur le moteur NVIDIA® PhysX™.
« Director 11.5 marque une étape décisive vers le but que nous nous sommes fixé : offrir une palette de fonctionnalités audio et vidéo avancées aux développeurs de jeux et créateurs de contenus multimédias », précise Naresh Gupta, senior vice president de la division Print and Publishing chez Adobe. « Grâce au tout nouveau moteur audio de Director 11.5 et à une haute qualité vidéo, les développeurs peuvent proposer des jeux 3D en ligne uniques en leur genre ».
« Adobe Director est une puissante plate-forme, idéale pour la création de jeux Shockwave 3D à la fois fascinants et attrayants, qui sont essentiels pour assoir notre position de leader dans le secteur des jeux grand public en ligne », déclare Rob Small, CEO de Miniclip, le plus grand site web de jeux en ligne et principal distributeur du module Shockwave d’Adobe. “Tous nos jeux 3D étant développés avec Adobe Director, la nouvelle version permet aux joueurs en ligne du monde entier d’optimiser l’expérience qu’ils attendent ».
Parallèlement à ses nouvelles fonctionnalités, Director 11.5 est compatible avec Mac OS X 10.5 Leopard et continue à prendre en charge JavaScript et Lingo - le langage de script natif de Director ; il présente en outre une création de scripts optimisée, une interface utilisateur conviviale et une large gamme d’extensions tierces pour un environnement de création multimédia évolutif.
Tarifs et disponibilité
Adobe Director 11.5 devrait être disponible d’ici fin avril 2009 au prix de 999 euros HT pour la version complète et de 299 euros HT pour la mise à jour. Le logiciel s’exécute sur de multiples systèmes d’exploitation, et notamment Microsoft® Windows® XP avec Service Pack 2, Windows Vista® et Mac OS X version 10.5 pour les systèmes Macintosh équipés de processeurs Intel®. Le lecteur Adobe® Shockwave® est compatible avec tous ces systèmes, et également avec Mac OS X 10.4 sur des systèmes Macintosh équipés d’un processeur PowerPC®.
Pour plus d’informations, consultez le site www.adobe.fr/products/director.
Communiqué de presse Adobe Systems Incorporated
Vous devez être identifié pour poster un commentaire.
1&1 Internet France lance un portail Web pour son programme d'affiliation. Le site - www.1and1affilie.fr - offre davantage de ressources et d'outils innovants à ses affiliés pour réussir leur programme d'affiliation 1&1. Le portail constitue une référence en la matière puisqu'aucun autre programme d'affiliation d'hébergement Web ne propose actuellement autant de ressources. Le portail - www.1and1affilie.fr - est également un outil de recrutement d'affiliés offrant différents moyens de rejoindre le programme d'affiliation 1&1, c'est également un outil d'information et de communication directe avec l'équipe affiliation 1&1.
De nombreux outils sont regroupés sur www.1and1affilie.fr : des conseils pour débuter en tant qu'affilié, des astuces pour générer de fortes commissions et des outils de création de liens pour réussir à coup sûr. Le site Web met à disposition des affiliés diverses méthodes de création et de promotion de leurs liens de partenariat grâce à des outils en ligne et hors ligne, comme l'outil d'envoie de SMS, le créateur d'affiches ou le générateur de pages de produits personnalisées, pour présenter les produits 1&1 sur leur sites Web. Les affiliés actuels trouveront de nombreux conseils grâce aux articles et pourront accéder, à partir de ce nouveau site, aux newsletters et autres astuces sur l'affiliation, le référencement et autres techniques. Des professionnels expérimentés sont prêts à vous aider par téléphone, messagerie instantanée ou email (formulaire de contact).
1&1 rémunère ses affiliés par une commission à la vente grâce à diverses méthodes de traçage de bannières et liens. Le programme de partenariat n'a pas de limites en termes de gains potentiels et 1&1 a reversé plus de 30 millions d'Euros à ses affiliés dans le monde entier en 2008.
La société 1&1, premier hébergeur mondial de sites Web, est bien placée pour fournir un service d'excellente qualité puisqu'elle propose une connectivité à la pointe du secteur via son propre backbone paneuropéen. Elle compte actuellement plus de 7,7 millions de contrats au niveau mondial et gère plus de 10 millions de noms de domaine. Pour plus d'informations sur 1&1 Internet France, visitez le site Web www.1and1.fr. Pour plus d'informations sur le programme de partenariat 1&1, visitez le site www.1and1Affilie.fr.
Vous devez être identifié pour poster un commentaire.
, Kerod Microsoft a annoncé aujourd’hui la disponibilité de la version RC1 du navigateur Internet Explorer 8 en 25 langues dont le Français.
RC1 pour release candidate 1, soit une version de stabilisation précédant la version finale du produit, incluant l’ensemble des fonctionnalités pré-testées lors des phases de beta. Cette RC1 corrige certains bugs, apporte une amélioration de l’expérience utilisateur, ainsi qu’une sécurité, une performance et une compatibilité accrues. Avant la sortie de la version finale d’IE8, l’équipe de développeurs reste focalisée sur la résolution des bugs et l’optimisation de la performance et de la compatibilité.
IE8 RC1 est disponible gratuitement sur : www.microsoft.com/ie8
Les langues supportées sont : Arabe, Chinois (Traditionnel, Simplifié et Hong Kong), Tchèque, Danois, Anglais, Finlandais, Français, Allemand, Grec, Hébreu, Hongrois, Italien, Japonais, Coréen, Norvégien, Portugais (Brésil et Portugal), Polonais, Russe, Espagnol, Turc et Suédois.
Avec Internet Explorer 8, l’accent est mis sur :
Découvrez dès à présent en français les innovations dans chacun de ces domaines, qui optimiseront, simplifieront et sécuriseront votre navigation, notamment les Accélérateurs, les Web Slices (ou Tranche de Web), le regroupement et la récupération des onglets, la navigation en mode privé (InPrivate) et une nouvelle fonction inédite de protection contre les attaques par injection de code malicieux (Cross Site Scripting).
Attention : Si vous avez installé la bêta 2 d’IE8, rendez-vous sur Windows Update pour installer la RC1. A noter également que cette version RC1 d’IE 8 ne peut pas être installée sur Windows 7 Beta (version spéciale qui continuera à être mise à jour dans le cadre du développement de Windows 7).
Vous devez être identifié pour poster un commentaire.
Depuis longtemps réclamé par la communauté, Adobe annonce aujourd'hui l'ouverture du protocole RTMP (Real Time Messaging Protocol) utilisé principalement dans Flash Media Server et LiveCycle Data Services. Ce protocole est utilisé pour transférer en temps réel au Flash Player des flux de données, de son et de vidéo.
L'ouverture du protocole RTMP s'inscrit dans la stratégie globale de la plateforme Flash. Ses spécifications seront publiées par Adobe au cours du premier semestre 2009 sur le site Adobe Developer Connection.
L'accès libre au protocole RTMP pour les développeurs est une étape supplémentaire d'Adobe entrant dans le cadre de l'Open Screen Project, une initiative visant à exploiter des contenus riches et des applications web sur la majorité des écrans des terminaux (informatiques, mobiles, produits électroniques grand public).
N'hésitez pas à réagir sur le forum
Vous devez être identifié pour poster un commentaire.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Copyright © 2000-2012 - www.developpez.com