Informatique

Fil des billets

lundi 10 janvier 2011

Utiliser SIP (VOIP) sur iPhone avec Linphone

Depuis quelque temps, je cherche à utiliser le compte SIP de mon abonnement Free via mon iPhone. L'avantage étant de pouvoir appeler gratuitement des téléphones fixes en France sans que cela soit décompté de mon forfait mobile. J'ai pas mal cherché et la plupart des applications comme Fring ou Nimbuzz demandent de créer un compte sur un service tiers. Il est hors de question que je passe par un tel service qui pourrait tracer mes appels, récupérer mes contacts ou autre.

Après pas mal de recherche, je suis finalement tombé sur Linphone, appli open source (lien AppStore). Enfin, une appli simple et qui fait juste ce qu'on lui demande. Elle est aussi disponible sur Android ou Windows/Linux/Mac.

Évidemment, cela marche dès que l'on est connecté en Wifi (et pas que de chez soi). Mais plus surprenant et agréable, ça semble aussi marcher en 3G. Je n'ai fait qu'un simple test over 3G avec mon opérateur (Orange) donc à prendre avec des pincettes.

Comment configurer avec Free ?

Etape 1

  • Se rendre sur son compte Free.
  • Ensuite, Compte Free > Téléphone > Gestion de mon compte SIP.
  • Taper un mot de passe.

Gestion SIP chez Free

Configuration Linphone

Etape 2

  • Installer Linphone.
  • Aller dans l'appli Réglages de l'iPhone, trouver "Linphone" (en bas).
  • Renseigner les trois premiers champs :
    • User name : rentrer le numéro de téléphone de la Freebox (commence par 09)
    • Password : le mot de passe que vous venez de donner un peu plus tôt.
    • Domain : freephonie.net

Etape 3

Lancer l'application. Elle plante souvent sur mon téléphone au lancement mais un deuxième lancement rétablira tout ça. Pour savoir si tout marche bien, l'application devrait afficher "Registration on sip:freephonie.net successful".

Allez Papa, voilà ton mode d'emploi :)

jeudi 23 septembre 2010

How to follow a project using Mercurial?

During my contract with Mozilla, I decided to check all commits going into the Mercurial repository for the mozilla-central branch. Of course, I'm using the atom feed for that. But after a few days, I discovered that I was missing some commits. Some features went into the nightlies and no sign of the commit in my feed reader.

This is because, by default, the server is only sending the last 20 items. We can change that by using the revcount parameter. So now, my feed reader fetches this feed:

http://hg.mozilla.org/mozilla-central/atom-log?revcount=200

And that should work on every Mercurial project using hgserve.

lundi 19 juillet 2010

Résumé des épisodes précédents

Nouveau job

Début février, j'avais quitté Skyrock après 3 ans (depuis mon dernier stage). Le but était de trouver un poste à l'étranger pour découvrir une autre culture et avoir un emploi qui correspondait mieux à ce que j'avais envie de faire. Après quelques tentatives diverses, j'atterris finalement mi-juin chez Mozilla, en tant qu'évangéliste Web [1]. Le but est de promouvoir les nouveautés de Firefox 4, Firefox Mobile et des standards en général auprès des développeurs. Mais aussi, d'écouter les besoins des développeurs, ce qui marche bien, moins bien, ce qui manque et ainsi de suite afin d'améliorer Firefox et la plateforme Web.

Je suis très heureux de ce nouveau poste. En plus de travailler pour un mouvement que je trouve très responsable et de promouvoir ses produits, je peux promouvoir le web en entier. Bosser pour sa passion, dans un environnement qui correspond à ses valeurs personnelles, c'est plutôt cool je trouve. Le seul petit point noir, c'est que je reste basé à Paris pour le moment. Je ne peux donc pas cocher la case "vivre à l'étranger" sur mon tableau buts personnels. Mais comme je serais amené à voyager, c'est pas si mal.

Et puis évidemment, merci à Paul et Tristan pour la confiance.

MAOW, Drumbeat, WebWorkersCamp

En parlant de voyage, ça a commencé à Londres fin juin pour un MAOW. Le lendemain, c'était Drumbeat à la Cantine. Et le samedi, WebWorkersCamp à la Cantine aussi où j'ai pu faire ma première présentation et en anglais du coup.

Ayant appris la veille l’existence de cet évènement, je n'avais pas vraiment de présentation de prête. Heureusement, je travaille actuellement sur les WebSockets donc j'avais quelques choses à montrer. On a parlé de stockage côté client (localStorage, sessionStorage, mentionné IndexedDB), des évolutions de l'History API, de AppCache, de File API, des Forms HTML5.

Performance Web

Et pour la suite, je serais mercredi soir à la soirée performance organisée par Éric Daspet, le plus vocal des avocats des performances front-end en France. L'invité principal sera Stoyan Stefanov, travaillant pour Yahoo!, mainteneur entre autre de Yslow qui est une référence dans le domaine. À ne pas louper donc. Si vous n'êtes pas encore inscrit, dommage, c'est plein.

J'y parlerais de ce que font les navigateurs pour améliorer les performances. On évoquera rapidement les changements dans Firefox puis on s'attardera sur les nouveautés des standards.


PS : Je ne sais pas encore ce que je vais faire, mais il se peut que ce blog utilise un peu plus d'anglais, pour le travail. On verra.

Notes

[1] si vous avez une meilleure dénomination, ça m'intéresse, je trouve celle là dure à expliquer et connotée religieusement

vendredi 2 juillet 2010

Compte-rendu de @media 2010

Il y a déjà 3 semaines (comme ça passe vite), je me rendais à Londres pour @media. Plutôt que d'essayer de faire un résumé objectif, je vais donner mes impressions. Pour quelque chose de plus conséquent (parce qu'il a pris des notes pendant), allez voir chez Jérémie.

Brendan Eich - Grown-up JavaScript

L'inventeur de JavaScript, pour commencer, la grosse classe ! Il a résumé l'avancement actuel de ECMAScript, ce qui va bientôt arriver, ce qui est un peu plus éloigné et encore plus loin, le début de certaines discussions. Et pour conclure, quelques prédictions plus ou moins hasardeuses (de son propre aveu). Par exemple, Apple et Google vont forker WebKit.

Doug Scheppers - SVG today and tomorrow

Sans hésitation, la meilleure présentation des deux jours. Doug travaille au W3C et, comme je lui ai dit, c'est la première fois que je vois une présentation marrante (et donc accrocheuse) d'un membre du W3C (désolé Karl, Dominique et autres). Au final, ce n'était qu'une présentation de l'état de l'art mais le rythme, le sujet méconnu (à tort), et la sympathie qui transpire donne envie de faire du SVG partout.

John Resig - Testing mobile web apps

Le titre de la conférence est trompeur. Au final, il a beaucoup parlé des navigateurs que l'on devrait tester, à la manière des A-grade browser de Yahoo. Et à la fin, on parle un peu de ce que jQuery supportera côté mobile. J'ai été très déçu car je comptais apprendre des choses sur comment tester en général des web apps, plus particulièrement des mobile apps. À part mentionner brièvement TestSwarm, le sujet n'a pas du tout été abordé. Donc au final, c'était une présentation de graphiques, stats sur les parts de marché des navigateurs, une énumération des navigateurs et leurs capacités. Pas grand chose à en retirer.

Simon Willison - Building crowdsourcing applications

Avertissement : je suis ultra fan de ce touche-à-tout. Ayant travaillé pendant 3 ans sur un réseau social, cette présentation me parle beaucoup. Plutôt que d'aborder les problèmes techniques (scalabilité, disponibilité, etc.), il aborde les problématiques sociales, ergonomiques des services communautaires. À travers les exemples du Guardian et de projets persos, il donne des conseils pour réussir à faire participer les gens au maximum. Réduire au maximum les étapes avant pouvoir participer (0 étapes étant l'idéal), comprendre les mécanismes des jeux pour entretenir l'envie de participer, donner des récompenses, travailler énormément pour réduire la sensation de "et maintenant je fais quoi ?", etc. Beaucoup de choses à apprendre.

Mark Boulton - Designing grid systems

La grosse déception du premier jour. Il a passé beaucoup trop de temps à expliquer les mécanismes du cerveau, comment l'être humain réfléchit, comment il a résolu certains problèmes, etc. Au final, seulement 15 minutes sur les grilles. Évidemment, Il est important de donner du contexte à ce que l'on présente, mais pas trop. Au final, pas grand chose à ramener chez soi pour appliquer.

Jeremy Keith's hot topics

La pire table ronde jamais vue… 25 minutes de branlette (désolé pour le terme) sur qu'est-ce qu'un designer, un UX designer, un visual designer, j'en passe et des meilleures. On s'en cogne… Ensuite, "qu'est-ce que HTML5". Oui le marketing ne l'utilise pas comme les techniciens, mais franchement, on s'en cogne. Dernier sujet : les APIs. À peut-être un truc intéressant, et non ! On tombe sur des questions du genre "oh mais y a plein d'API différentes, comment je travaille avec ?", "XML est tellement bien, pourquoi y a plus rien en XML ?". Il y a tellement d'outils pour passer outre cela qu'on manque les questions intéressantes. En voyant cette table ronde et celles de Paris-Web, des fois je me demande si c'est vraiment utile.

Andy Clarke - Hardboiled web design

Très partagé sur cette présentation. J'aime l'idée générale d'oublier les plus vieux navigateurs et allez de l'avant. Mais il ne faut pas non plus faire n'importe quoi avec cette idée. Rajouter des petites touches subtiles (ombres, dégradés, bords arrondis) pas de souci, utiliser de nouvelles techniques et utiliser JavaScript pour combler sur les anciens navigateurs pas de souci, mais donner un look totalement différent selon le navigateur, non ! Son argument est qu'un utilisateur ne verra votre site qu'avec un seul navigateur donc ça ne le dérangera pas. J'objecte fortement. Nous utilisons de plus en plus d'ordinateurs. Il est très fréquent d'avoir, par exemple, un Mac avec Safari à la maison et un IE au travail, ou encore d'utiliser un site en vacances chez des amis. Sur mobile, l'utilisateur s'attend à une autre expérience donc on peut changer de design mais d'un ordinateur à un autre, non.

En plus du contenu de la présentation, j'ai une grosse aversion pour le personnage. Il a passé les deux jours en jean t-shirt mais est venu sur scène avec un costume. La présentation est remplie d'assertions fortes sans justifications. En gros, j'ai senti une grosse différence entre le style anglo-saxon — très confiant, sûr de ses idées, aisance à l'oral — et le style français — présente une idée, souhaite des retours, l'oral est un travail constant.

Matt Biddulph - Mobile social location

Un tour assez complet des interactions qu'apportent les mobiles, ces objets à la frontière du monde réel et virtuel. Ils connaissent beaucoup de choses sur le réel via des capteurs (emplacement, direction, son) qu'ils peuvent communiquer au très puissant virtuel et vice-versa. En tant qu'évangéliste Nokia, il souhaite évidemment que les développeurs trouvent des idées autour de cette liasion particulière. Ça rejoint la notion de "Very personal devices" de Jean-Louis Gassée

Pat Lauke pour Bruce Lawson - HTML5

Cette présentation devait être faite par Bruce mais ayant une extinction de voix, son collègue Pat Lauke s'en est chargé. Au passage, Bruce publie un livre via "Voices that matter", quelle ironie ;) Un tour d'horizon de HTML5, son histoire, ce qu'il apporte niveau compatibilité, niveau nouveaux éléments. J'ai du mal à résumer cette session vu que je connais bien le sujet. Mais je suppose que pour ceux qui souhaitaient apprendre, ce fut une bonne session, informative et fun.

Relly Annett-Baker - All the small things

Une conférence sur les formulations à utiliser et ne surtout pas oublier sur un site. Comment rassurer son utilisateur, ne pas le laisser dans le vide, toujours lui proposer un moyen de résoudre le problème qu'on rencontre. Même si je trouve le sujet important et les conseils donnés plutôt bon, il y a eu beaucoup de répétitions, d'exemples similaires. Dommage, mais c'était compensé par la pêche de Relly.

Steve Souders - Even faster web sites

Comme je connais assez bien le sujet, je n'ai finalement pas appris grand chose. Mais j'ai énormément apprécié la gentillesse et la disponibilité de Steve Souders. Bien qu'il soit l'orateur le plus connu de la discipline, il sait se mettre à niveau et répondre aux questions des débutants comme des confirmés.

Scott Berkun - The myths of innovation

Une dernière conférence très inspirée et inspirante. Pas de code, pas vraiment lié au web mais hautement intéressante. Comment réussir à innover ? Pas juste avoir une idée, parce que c'est la partie simple mais plutôt réussir à la réaliser et arriver à un produit fini. Quelques conseils sur la constitution d'une équipe pour la mettre dans les meilleures conditions, d'autres conseils pour que chacun soit innovant.

vendredi 15 janvier 2010

WebForms HTML5 et iPhone

Mark Pilgrim, génial auteur, vient juste de publier son chapitre sur les nouveautés qu'apporte HTML5 pour les formulaires. Évidemment, c'est une lecture indispensable. Je mettrais un petit bémol sur tout l'aspect validation de formulaires qu'il n'aborde pas et qui est pourtant une grande amélioration.

Un des intérêts immédiat est l'adaptation de l'iPhone aux nouveaux types de champs. Pour avoir un exemple plus concret, j'ai préparé un petit exemple et quelques captures d'écran. Apple propose aussi une documentation de ces changements de clavier.

Placeholder

<input type="text" placeholder="webforms roxor">
Une aide s'affiche lorsqu'aucun texte n'a été entré et disparait automatiquement.

Téléphone

<input type="tel">
Le clavier s'adapte à la saisie d'un numéro de téléphone. Il est dommage qu'un accès au répertoire ne soit pas proposé. Espérons dans une prochaine version.

Url

<input type="url">
Le clavier s'adapte à la saisie d'une URL. Un accès aux favoris aurait pu être intéressant.

Email

<input type="email">
Le clavier s'adapte à la saisie d'un email. Un accès au répertoire aurait aussi pu être intéressant.

Nombre

<input type="number">
Le clavier s'adapte à la saisie d'un nombre.

Nombre entier

<input type="text" pattern="[0-9]*">
Le clavier s'adapte à la saisie d'un nombre entier. Vous remarquerez la différence avec la saisie d'un nombre plus général. Par contre, on ne peut pas écrire <input type="number" pattern="[0-9]*"> car l'attribut pattern n'est pas disponible sur un champ number.

Utiliser ces quelques nouveaux types ne coute rien puisque les navigateurs ne comprenant pas les nouveaux types afficheront un simple champ texte. Mais quel bénéfice pour les utilisateurs de périphériques adaptés. Opera implémente une précédente version des Webforms et comprend donc une partie de ces champs. Je n'ai jamais vu comment Opera traitait ces champs sur un mobile par contre.

Connaissez-vous d'autres navigateurs ou périphériques comprenant déjà ces nouveautés ?

mercredi 23 décembre 2009

Abandonnons IE6, si possible

Ce sont les fêtes de fin d'année, une bonne période pour prendre du recul sur les choses. Par exemple, le fameux "j'en ai marre de IE6, ça me pourrit la vie". On va donc voir pourquoi on peut déjà l'abandonner, ce qu'on y gagne techniquement et peut-être financièrement.

Pourquoi c'est possible ?

La réflexion a commencé la semaine dernière sur Twitter (enfin sur Identi.ca). Ma réponse à ce cri de détresse était de faire un simple calcul que chaque société devrait faire :

Si l'argent que vous rapporte les utilisateurs de IE6 est inférieur à l'argent que vous investissez pour les avoir, alors oubliez IE6 et vous pourrez passer plus de temps à avoir un site plus agréable pour les autres utilisateurs.

Votre chiffre d'affaires sera inférieur, puisque vous perdez des clients (et encore, pas sur). Mais votre bénéfice augmentera. Bon, je ne vais pas vous expliquer comment calculer la rentabilité de votre entreprise, je n'en suis pas capable mais vous voyez l'idée.

Évidemment, je ne demande pas à tout le monde d'abandonner IE6 [1] , seulement si cela vous avantage. Mais réfléchissez, prenons un exemple vague : 20% du temps d'intégration consacré à IE6, 10% de visiteurs sous IE6 qui ne sont pas ceux ayant le meilleur taux de transformation en plus. Est-ce que ça ne vaudrait pas le coup de se passer de tout ça ?

Si vous décidez de passer le cap, n'expulsez pas les utilisateurs sous IE6. Les deux options à envisager sont :

  • Proposer une CSS très simplifiée pour IE6 afin d'avoir un style global portant vos couleurs, mais pas plus.
  • Fournir le même code mais en prévenant que vous n'avez pas tester et que ça peut péter à tout moment.

Et en complément, proposez d'autres navigateurs pour leur permettre d'avoir une expérience correcte.

Techniquement, qu'est-ce qu'on y gagne ?

Transparence alpha sur les PNG

IE6 ne supporte pas la transparence alpha sur les PNG. Il affiche un fond gris immonde pour les PNG24 ou considère tous les pixels avec un canal alpha comme transparents pour les PNG8. On a donc recours aux horribles filtres IE, immaintenables et lourds en performance. Et encore, ils ne sont utilisables que pour des backgrounds.

À partir de IE7, plus de problèmes, on utilise les PNG que l'on veut, où on veut, roulez jeunesse ! Et cette transparence est très utile pour des ombres, des dégradés, s'adapter à vos différentes couleurs, etc.

Une palette étendue de sélecteurs

Avec ces sélecteurs étendus, on évite beaucoup de trifouillages de HTML. Par exemple, plus besoin de classes spéciales pour sélectionner input[type=submit] ou html[dir=rtl] grâce aux sélecteurs d'attributs. Vous pouvez aussi cibler le premier enfant avec :first-child.

Plus de contrôle aussi grâce au sélecteur adjacent (h1+p) ou au sélecteur enfant (body>div). Pour illustrer une image avec légende, vous pourrez utiliser des sélecteurs simples tels .legend > img et .legend > img + p.

Et mon préféré, les classes multiples. Pouvoir identifier un élément grâce à .menu.active est très pratique. Pas besoin d'ajouter un élément englobant pour contourner cette absence de IE6.

Position fixe et background fixe

Peu de sites s'en servent mais ça peut-être bien utile. Pour avoir une interface toujours sous l'œil de l'utilisateur par exemple. Ou encore avoir une entête de liste toujours visible. C'est une possibilité de design sous utilisée, donc à vos claviers.

:hover partout

Avec IE6, :hover ne fonctionnait que sur les balises <a>. L'avoir sur tous les éléments vous permet de mettre en avant des parties de votre interface au fur et à mesure.

min- max-width et min- max-height

Des design un peu plus souples grâce à cela. Je me rappelle en avoir souvent eu besoin pour dimensionner correctement des images uploadées par les utilisateurs.

De meilleures performances

Vous êtes assurés d'avoir des visiteurs avec un navigateur plus performant. Du coup, vous pouvez utiliser des techniques plus lourdes sans que ça pose problème. Par exemple, IE7 ne passe plus par un ActiveX pour faire des XHR/Ajax.

Moins de bugs !

C'est certainement une des parties les plus intéressantes. Moins de temps à se prendre la tête, moins de temps en QA, moins de machines pour tester.

Avec cela, vous pouvez apporter un site de meilleure qualité, plus léger pour vos visiteurs, plus léger pour votre bande passante et beaucoup plus facile à faire évoluer pour vos développeurs.

Et en plus, on peut gagner plus !

Si vous abandonnez IE6, je vous conseille de communiquer sur cet abandon. Pourquoi ? Je suis persuadé que les technophiles tombant sur votre communication anti-IE6 la relaieront. Il y a une telle haine de IE6 chez les gens passionnés d'Internet que vous en ferez peut-être des clients ou alors juste des relais d'informations. En tout cas, c'est la communication la moins chère du monde, puisqu'en développant moins de code, vous augmenterez votre visibilité.

Le mot final : envisagez sérieusement de ne plus développer pour IE6 en vous appuyant sur des chiffres. Si votre contexte vous permet l'abandon de IE6, vous rendrez service à vous même, vos pairs et vos utilisateurs.

Notes

[1] même si ce serait sacrément le pied

vendredi 30 octobre 2009

Mozilla Europe Camp 2009

Paul Rouget and Mozilla Europe were kind enough to invite me to the EU Moz Camp 09 in Prague on the first week end of October. It was two amazing days and I learned a lot.

The Community

As I am not really involved in Mozilla, I don't really know how it is to be part of this big community. It actually feels pretty good. During two days, I met a lot of people, had a lot of interesting talks every time (and some beers). I've met a lot of French contributors, shared my room with Nadir Kadem from Dailymotion, met Robert Nyman (really nice person), Vladimir Vukićević lead developer of Firefox, Honza Bambas who has implemented localStorage and many others.

No one looked at me strangely when I said I was contributing to WebKit (except Tristan Nitot but I'm used to it).

And strangely enough, I might have found there why I was contributing to WebKit. gerv said that "When the community feels smaller, it grows bigger". That's what I've found cool with WebKit : you don't need to know the project for a long time to rapidly be aware of everything going on in this community.

Mike Beltzner and the future of Firefox

I really enjoyed his talk and talking with him later. He seems very smart, reactive and open to many suggestions, how to fix problems. Be careful, he does speak French!

I'm both happy and sceptical about the pace acceleration of the releases. For web developers, it's really great cause you get new stuff and bug fixes faster. But at the same time, it can be painful if Mozilla can't migrate its user base at a fast pace too. Web developers don't want three or four versions of Firefox out there. By the way, I wonder if they will change their policy concerning older version support. Right now, I believe they support the current and the previous versions only.

They were discussions on the way to ship Firefox 3.6. If it's not yet set in stone, here is my proposal: ship Firefox 3.6 as a major update to 3.5.x and 3.6.1 as a minor update to 3.5.x. Why? We need a lot of users to move to the latest version and the more effective way to do this is use a minor update. But you don't want to hurt your users so you only use minor updates once you got the feedback of the first release (and fixed bugs). I know it's not a perfect solution (user is not completely in control) but it's the best I could think of.

HTML round table

I'm not gonna talk about the whole round table here but only a specific point around education. In order to keep the web moving and catching up with the proprietary alternatives, you not only need to implement new specs, you also need good information about them.

  • Good documentation : I think DevMo is doing pretty well in this area.
  • Good cross browser data : There's a lot of compatibility tables but none of them are up-to-date, complete and accurate. I think it should be the standards bodies work (W3C or ECMA). They edit the specs, the specs requires tests so they only need a good presentation of the results with a bit of high level explanation.
  • Good examples : Showcasing the novelties is important and hacks.mozilla.org is young but effective in this area.
  • Good tutorials : Showcasing for Firefox is cool but it often forgets the real world where web developers create for multiple browsers. You need tutorials. I think Mozilla should create a place to gather such tutorials. Opera has Dev Opera for that. I really like articles like Cross-Browser Inline-Block.

But I don't think it's Mozilla's role to create compatibility libraries (such as excanvas or SVG web. It helps obsolete browsers to stay in the market and that's not really what we want.

Firebug and Jan Odvarko (Honza)

They got a lot of cool stuff coming in Firebug 1.5. I especially like the capacity to break on many events (HTML change, CSS change, JS property change). Makes it very easy to understand how a piece of software works just by saying "hey, this part of the page changed, show me the code that did it". Very smart. The HTTP Archive format is also exciting and I hope it will be integrated in the Web Inspector (even better if I find time to do it). Don't miss the slides (and detailed follow ups on his blog)

Mozilla Labs

The labs projects are very interesting. I'm still not convinced by the migration of apps to the browser (I prefer native apps using the network) but if it has to be, Prism is a good move.

The synchronization part of Weave already looks good and I like the open way Mozilla is using for all his server side efforts: develop a server, provide the protocol but also host a version. I also have big expectations on the sharing part of Weave. Something like Opera Unite (share data with friends without uploading a thing) but that can also work when you're offline (cause it's served by the Weave server which has synchronized in the background).

Jetpack is a good reaction from Mozilla but it has to happen fast. Chrome extensions will be really easy to create and ship so it will be a competitor. Not for the end user but for web developers that will try Chrome to develop extensions, maybe use it and then recommend it. I'd say don't listen to add-on developers scared by the lack of functionality, disparition of XPCOM, etc. Add a lot of APIs, get it in Firefox as soon as possible and market it as the easiest way to create extensions. You'll figure out later how to deal with existing extensions.

Irina Sandu, William Quivigier and Paul Rouget

Thank you for the organization, everything was perfect even when I missed my plane. I understand how hard it might be and being so nice while having so many stuff to take care of is amazing (I'm sure FuzzyFox will agree)

jeudi 30 juillet 2009

Résumé du W3cafe

Il y a deux semaine, je présentais avec Aurélien Lévy.

Voici le résumé des points abordés pour ma partie avec quelques liens externes et de bonnes ressources. En gros, c'était mon bloc notes pour me rappeler toutes les nouveautés.

HTML5

  • Philosophie Design principles
  • Définition du parser, des nécessités user agent VS auteurs
  • Nouveaux éléments
    • doctype et charset : faciles à retenir
    • nav, header, footer, section, aside, article : pour mieux structurer le contenu
    • video, audio, canvas : pour rajouter des contenus dynamiques
    • web forms (url, mail, date, range, search, color), required, placeholder, autofocus : plus de contrôle sur les formulaires
  • Nouvelles API
    • localStorage, sessionStorage, sql storage : stockage côté client façon clef => valeur ou SQL
    • app cache (manifest) : permet de stocker l'appli offline, couplé au stockage permet de faire du offline complet
    • getElementsByClassName : une nouvelle collection pour traverser facilement le DOM
    • Drag & Drop : bah euh, glisser déposer quoi :)
    • postMessage : permet de communiquer entre deux applis tournant sur des domaines différents, permettant ainsi des "mashups" plus sécurisés.
  • Presque lié à HTML5 mais dans d'autres specs
    • XHR cross domain : permet de faire des requêtes Ajax sur d'autres domaines sans passer par un proxy côté serveur
    • Selectors API : permet de sélectionner des éléments à partir d'un sélecteur, comme le font les librairies JavaScript
    • Geolocation API : donne accès à la position géographique
    • Web Workers : lancer du JavaScript dans un autre thread pour faire des traitements lourds qui ne bloque pas l'interface
    • Ecmascript 5 (pdf) (JSON.parse) : plein de nouveautés mais surtout un moyen de parser du JSON nativement et en toute sécurité.
  • Ce qui Marche dans IE8
    • JSON.parse
    • Drag & Drop vu que la spec s'est inspirée de ce que IE avait déjà implémenté depuis IE5
    • localStorage, sessionStorage
    • postMessage
    • XDR, c'est XHR cross domain mais avec un objet nommé autrement (mais la même API)
    • Selectors API mais qui ne fonctionne qu'avec les sélecteurs CSS connus par IE8 évidemment.

CSS3

  • Petit rappel : CSS 2 n'est pas encore totalement exploité (display: table, inline-block, @font-face, text-shadow, sélecteurs, generated content) ni une spec finale
  • CSS 3 est découpé par modules qui sont plus ou moins finalisés et implémentés.
  • Candidate Recommandation
    • Media queries : écrire des règles qui ne sont exécutées que si l'appareil/navigateur a certaines propriétés (couleurs, taille, ratio, etc)
    • Marquee : oui oui, le défilement comme <marquee>, très utilisé dans les pays asiatiques visiblement.
    • Basic UI : indique de nouveaux pseudo-sélecteurs et propriétés pour enrichir l'interface utilisateur (::valid, ::required, etc)
  • Last Call
  • Working draft utilisables
    • Background et border Rajoute beaucoup de possibilités : bords arrondis, bordures avec images, plusieurs arrière plans, ombre
    • Couleurs : Transparence partielle avec RGBA, d'autres espaces de couleurs avec HSL et HSLA, opacity pour la transparence
  • Working draft en cours de rédaction
    • Template layout nouveau moyen de faire des layout avec une syntaxe orientée "ASCII art" : display: "aaaaa" "bccdd"
    • Grid positionning nouveau moyen de faire des layout basés sur une construction via des grilles, proche de l'impression papier
    • Transforms 2D/3D permet de modifier l'aspect d'un élément en le tournant, tordant, déplaçant dans un espace 2D ou 3D.
    • Transitions permet de passer d'un état à l'autre d'une propriété avec une transition plutôt que brutalement
    • Animations permet de définir des animations à effectuer.

Ressources externes

  • CSS3 info : beaucoup d'exemples de fonctionnalités très simples
  • Hacks Mozilla : des exemples plus avancés et concrets d'utilisations de CSS et HTML5
  • HTML5 doctor : articles et tutoriaux sur HTML5, les techniques, l'état de l'art, etc.

mercredi 8 juillet 2009

W3café de juillet, troll assuré ?

Petit relai pour le W3café du 17 juillet au soir. Détails et inscriptions.

Je m'occuperais plus des parties HTML5 et CSS3, n'étant pas du tout compétent sur WCAG2. Si vous avez des questions en avance, n'hésitez pas en commentaire, ça me permettra de réviser mes fiches avant l'oral la semaine prochaine.

lundi 6 avril 2009

Compte rendu de mon atelier Paris Web 2008

WebKit ?

WebKit est souvent pris pour plusieurs choses à la fois. On pense que c'est un navigateur, on pense que ce sont les versions de développement de Safari ou tout autre idée répandue. En réalité, ce n'est qu'un moteur web. Tout ceci est bien résumé sur la page d'accueil du projet ou sur Back to the basics. Là où ça devient un peu plus confus, c'est que c'est aussi le nom d'un framework de Mac OS X. Ainsi, il est possible simplement d'afficher du contenu web dans son application en utilisant ce framework. On passe au niveau d'incompréhension supérieur : les nightlies. Régulièrement, des compilations nocturnes sont mises à jour. Il y a le source dans une archive tar.gz. Afin que de nombreuses personnes testent, il y a aussi des versions compilées pouvant tourner avec Safari Mac ou Safari Windows. Elles ne font que lancer le navigateur Safari installé sur votre machine avec une autre version du moteur.

Une autre particularité du projet est l'absence de versions à proprement parlé. Chaque éditeur souhaitant utiliser WebKit choisit ce qu'il souhaite intégrer.

Pourquoi Firebug et Web Inspector ?

Firebug est un très bon outil, pourquoi en apprendre un autre ? Tout simplement, les fonctionnalités, bugs et autres particularités des navigateurs nous obligent à avoir des outils pour analyser nos pages sous chaque navigateur. IE8 intégrera de nouveaux outils annoncés plus adaptés, Opera intègre déjà DragonFly. Et WebKit possède le Web Inspector depuis Safari 2. Une mise à jour a eu lieu avec Safari 3 puis avec Safari 3.1. Mais tout cela restait bien fade par rapport à ce qui arrivera dans la prochaine version majeure de Safari (Safari 4 en bêta depuis quelques jours). Il est intéressant de tester ses pages avec le Web Inspector dès aujourd'hui. Safari représente déjà près de 7% aux États-Unis, cela est appelé a augmenté naturellement par la part de marché croissante des Mac. L'iPhone représente une partie non négligeable du trafic provenant de mobiles. Chrome est désormais sorti de beta. Et il y a bien d'autres logiciels qui embarquent ou embarqueront WebKit.

Fonctionnalités

Pour les fonctionnalités, je vais avoir du mal à retranscrire la présentation, vu que c'était plutôt "hands-on" (et brouillon aussi). Je vous invite à consulter la documentation de Firebug et la présentation des dernières nouveautés du Web Inspector (et ma traduction).

Ce qu'il faut retenir, c'est qu'il n'y a pas que l'onglet HTML de Firebug. Il est bien utile mais l'onglet Réseau (ou Resources côté WI) peut vous aider à améliorer les performances de votre site. Par exemple, on peut regardez quelles ressources prennent vraiment du temps à être téléchargé, quels sont les headers envoyés, reçus. Abusez des profilers si vous utilisez JavaScript. Cela vous permettra de trouver les fonctions les plus lentes ou trop souvent appelées dans votre code. Sans oublier le Débugueur. Positionnez des points d'arrêt, regardez l'état des variables à cet instant, parcourir la suite du code, etc. Autant d'infos précieuses pour comprendre le fonctionnement réel de votre code (ou le code d'un autre site). Et bien entendu, la console permet d'essayer des morceaux de code, d'étudier la page, elle est également disponible lorsque le débugueur est utilisé.

La Console API est tout simplement géniale. Fini le débug avec alert(). Utilisez console.log, console.warn, console.group ou console.assert pour suivre le déroulement de votre application. Vous pourrez les enlever très facilement de votre application en environnement de production et cela vous fera gagner un temps précieux en développement. Contrairement à alert() qui est bloquant, les messages de l'API console ne vous gêneront pas dans vos tests. Abusez-en !

Dans les astuces peu documentées, je rappelle souvent le mot clef debugger; en JavaScript qui permet de mettre en pause l'exécution du script, comme un point d'arrêt classique.

Autre astuce : $0 dans la console permet d'accéder au dernier élément inspecté. On peut ainsi par exemple rapidement faire $0.style.display = 'none'; . $1 permet d'accéder à l'élément inspecté avant $0 et ainsi de suite. Cela n'est pour l'instant valable que dans Firebug.

Contribuez !

Hormis les outils de IE8, tous les autres sont libres, même DragonFly. Ce sont vos outils de tous les jours, ne les négligez pas. Si quelque chose vous gêne, n'hésitez pas à remonter l'info. Il y a bien entendu les bug trackers mais vous pouvez aussi me remonter l'info si vous préférez parler directement à quelqu'un (en tout cas pour le Web Inspector).

Un exemple concret de retours dont nous avons besoin : beaucoup de gens se plaignaient que les styles n'étaient pas éditables. Cela fait longtemps qu'ils le sont et nous ne comprenions pas pourquoi nous avions ces retours. Après quelques discussions, nous nous sommes rendus compte que les gens ne comprenaient pas ce qu'était les "Computed Styles", premier onglet de style ouvert. Depuis ces discussions, cet onglet est toujours présent mais replié. Nous ne pouvions pas découvrir ce problème sans retours.

En plus de cela, si vous souhaitez vous impliquer, sachez que le Web Inspector est intégralement réalisé en HTML/JS/CSS (tout comme DragonFly). Il est donc très facile pour un développeur Web de s'essayer au développement de ces outils.

Quelques URLs utiles :

lundi 2 mars 2009

Redesign du Web Inspector

Ci-dessous, une traduction du billet de Timothy Hatcher du blog Surfin' Safari. Quelques fautes et imperfections de traductions doivent s'être glissées, n'hésitez pas à me les signaler. Le billet original date du 30 septembre 2008 et ne parle pas encore de la beta de Safari 4.

Lire la suite...

dimanche 19 octobre 2008

Paris Web, la conférence qu'elle est bien

Du 13 au 15 novembre prochains aura lieu la troisième édition de Paris Web. Bon j'aurais du vous en parler plus tôt vu que la période de tarifs réduits est terminée. Mais bonne nouvelle : ça reste plus que raisonnable même à plein tarif.

Au programme, un beau panel. On peut citer Chris Wilson, Daniel Glazman, François Yergeau, Nicole Sullivan, Christian Heilmann, Charles MacCathieNeville, Aaron Leventhal. Et je ne cite là que les noms connus internationnalement. Il reste encore plein de personnes plus intéressantes les unes que les autres.

De mon côté, j'animerais un atelier le samedi sur Firebug et Web Inspector :

Les documents que nous développons sont de moins en moins statiques. Une fois le code écrit, il faut comprendre l’interprétation qu’en font les navigateurs.

Quelles règles CSS s’appliquent à cet élément ?

Quel bug s’est glissé dans mon code JavaScript ?

Pourquoi cette action est lente ?

Nous découvrirons et utiliserons ces deux outils pour répondre à ce genre de questions et plus. Nous parlerons aussi de la Console API et des outils en ligne de commande.

J'aimerais aussi parler un petit peu des nouveautés de WebKit, on va voir sous quelle forme ce sera.

En plus des conférences et des ateliers, il y aura un petit pot libre.

Je vous attends donc tous en grand nombre à cette conférence atypique, organisée par des bénévoles mais de qualité professionnelle. Et si vous comptez passer, laissez un petit commentaire ici histoire de.

mercredi 27 août 2008

Librairies JavaScript : Connaissez vos outils

Certes je n'aime pas les librairies JavaScript en général. Beaucoup de code téléchargé, parsé, exécuté pour n'utiliser la plupart du temps qu'un ensemble très réduit de fonctionnalités. Mais bon, mettons ça de côté aujourd'hui car il faut l'admettre, elles rendent tout de même de bons services.

On va quand même garder un point qui m'embête : ces librairies cachent souvent la complexité du code qu'elles exécutent. Pour démontrer cela, mettons nous en situation ! L'exemple sur la page suivante contient 1729 paragraphes de deux mots. Pour une raison évidente[1], nous voulons cacher le deuxième mot de chaque paragraphe. Pour cela, nous utilisons jQuery de deux manières différentes.

La méthode toggle

$('span').toggle();

Que fait réellement cette simple ligne ? Elle va récupérer tous les éléments <span> de la page puis leur appliquer la méthode toggle. Pour chaque élément trouvé (1729 je rappelle), elle va vérifier s'il est affiché ou non et lui appliqué un style en conséquence. C'est tellement long que votre navigateur risque de bloquer sur la page de test.

La méthode classe

$('div').eq(0).toggleClass('hidden');

Jeu de mot pas terrible mais qui résume bien la situation. Ce code récupère tous les éléments <div> de la page et ne travaille que sur le premier. Sur ce <div>, elle va regarder s'il a la classe hidden et en fonction, lui ajoutera ou enlèvera cette classe. Voilà, c'est tout ce qu'elle fait. Ensuite, c'est le navigateur qui travaille comme un grand grâce à la règle .hidden span {display:none;}. Évidemment, le moteur CSS de votre navigateur fera ça bien plus rapidement.

Conclusion

Évidemment, mon exemple avec autant d'éléments est grossier. Mais tout de même, la différence est fondamentale. Permettez-moi une analogie entre un accès DOM et un accès disque, c'est à dire les parties les plus lentes des deux algorithmes précédents. Dans le premier cas, un premier accès en lecture (récupérer tous les spans) puis 1729 accès en lecture (est-il affiché ?) et 1729 accès en écriture (réglons son affichage). Dans le deuxième cas, nous avons un premier accès en lecture (récupérons tous les divs) puis un accès en lecture (est-ce que la classe est présente ?) puis un accès en écriture (ajoutons ou enlevons la classe). Le calcul est vite fait...

De manière générale, rappelons qu'il faut le moins possible toucher au style d'un élément. Si vous devez accéder plus de deux fois à l'attribut style, il sera plus profitable de passer par une règle CSS. Le moteur CSS sera toujours plus rapide que vous. De plus, vous permettez aux intégrateurs de pouvoir styler votre page en ne changeant que quelques classes. Et votre code d'affichage reste cantonné aux fichiers CSS, merci la maintenabilité.

Note

[1] parce qu'il faut bien un exemple à la con

mardi 3 juin 2008

Nouveautés Safari 3.1 : Selectors API

Présentation

Comme promis, on va parler de quelque chose de bien plus intéressant pour accélérer vos applications web. Une attente de longue date, la fameuse et célèbre Selectors API ! C'est l'équivalent de $$ en Prototype et Mootools, $ en jQuery, YAHOO.util.Selector.query en YUI et... document.querySelectorAll pour base2. [1] Pour ceux qui connaissent, cela permet donc de sélectionner un liste d'éléments qui correspondent à un sélecteur CSS.

L'exemple du billet précédent devient donc document.querySelectorAll('.post'). Une différence à noter entre ces deux méthodes : querySelectorAll retourne une liste statique, un tableau en quelque sorte.

Regardons un peu les performances :

var start = new Date(); for (var i = 0; i < 1000; i++) var list =document.querySelectorAll('.post'); new Date() - start
104
var start = new Date(); for (var i = 0; i < 1000; i++) var list =document.getElementsByClassName('post'); new Date() - start
2

C'est sans appel, pour un sélecteur simple, il vaut mieux utiliser une méthode spécialisée. J'ai fait quelques autres tests. De manière générale, si vous voulez traversez simplement le DOM, tenez-vous en aux autres solutions. Cette méthode sera peut-être optimisée plus tard, ce n'est que la première implémentation.

Évidemment, le navigateur ne reconnaîtra que les sélecteurs qu'il connaît. Pas de problème avec Safari 3.1 puisqu'il connaît tous les sélecteurs disponibles à ce jour (on en reparlera plus tard, peut-être). Par contre, avec IE8, ce sera plus compliqué. Oui oui, IE8 implémentera cette API ! Et comme cette API a été bien conçue, le navigateur est censé renvoyer une exception lorsqu'il ne connaît pas un sélecteur. Le monde est presque parfait !

Les librairies

  • Prototype : dans la version de dev (un appel à un div vide puis le vrai appel)
  • YUI : rien
  • mootools : rien
  • base2 : Oui, en dev.
  • jQuery : rien.

Le piège.

Le comportement de cette API est pour l'instant trompeuse. Lorsque l'on utilise cette méthode sur un élément, elle va chercher tous les éléments du document qui correspondent puis ne retourne que ceux qui sont des enfants de l'élément. Le comportement des librairies (et qui me semble plus naturel) est d'appliquer le sélecteur à partir de l'élément en question. John Resig en parle bien mieux que moi

Les petits plus

Que peut-on faire de marrant avec cette API ? On peut par exemple récupérer tous les liens présents sur la page qu'a visité l'utilisateur. Un simple document.querySelectorAll(':visited') fera l'affaire.

On peut aussi récupérer la liste de tous les éléments qui sont actuellement survolés par l'utilisateur. document.querySelectorAll(':hover') vous donnera satisfaction.

Notes

[1] Oui, cette librairie est tellement bien qu'il n'y a pas besoin d'apprendre autre chose que les standards

mercredi 28 mai 2008

Google Ajax Librairies : une bonne idée ?

Google vient donc d'annoncer la possibilité de servir 5 librairies javascripts depuis ses serveurs.

L’idée d’avoir un dépôt central est plutôt intéressante. Pour avoir un cache relativement partagé entre les sites, être sûr de la configuration HTTP au poil, bénéficier du CDN de Google. Après, il faut aussi voir que l'accès à votre site sera conditionné par la disponibilité de ses serveurs. Mais il semble que ce soit la tendance... (Amazon S3)

Par contre, Google propose de s'occuper de charger la dernière version à travers son API Javascript. C’est une très très mauvaise idée que d‘avoir la version la plus récente de la libraire. Il faut toujours tester ses applis avant de mettre la nouvelle version d’une librairie en production. À la rigueur pour les versions mineures, et encore.

Après, cela va certainement défavoriser les librairies non sélectionnées. Des librairies comme Base2, Mochikit ou YUI ne sont pas listée par exemple.

Enfin, Google a annoncé vouloir travailler avec les éditeurs de navigateurs pour intégrer certaines librairies directement dans le navigateur. Si jamais cela se réalise, ça va être marrant pour les versions et encore plus discriminant pour les librairies non incluses. Les développeurs choisiraient non pas la librarie la plus légère ou la plus performante mais la plus souvent intégrée dans les navigateurs.

Google ferait mieux de travailler avec les éditeurs pour améliorer le support des standards et l’implémentation des prochains standards. Car un code en C, C++ ou autre sera toujours plus performant que sa version Javascript.

En résumé : idée peut-être intéressante dans l’état actuel d'implémentation des standards mais attention à la discrimination et surtout, continuer à améliorer le support des standards.

jeudi 10 avril 2008

Nouveautés Safari 3.1 : getElementsByClassName

Allez, on continue dans Webkit (parce que ça me botte en ce moment). Je ne suis pas tombé sur beaucoup d'articles en français résumant les nouveautés de Safari 3.1. Et comme on n'est jamais mieux servi que par soi-même...

Commençons par getElementsByClassName. Kékecé ? À l'instar des getElementById, getElementsByTagName, getElementsByName c'est une méthode pour récupérer des éléments du DOM selon un critère, en l'occurence la ou les classes. Par exemple, sur la page d'accueil de ce blog, document.getElementsByClassName('post').length renvoie 20 mais document.getElementsByClassName('post odd').length renvoie 10. Comme toutes ces consœurs, cette méthode marche aussi à partir d'un élément du DOM, restreignant ainsi les résultats.

Il faut faire attention en manipulant la liste renvoyée. Elle est "live", c'est-à-dire que tout changement dans le DOM la modifie (comme getElementsByTagName). Exemple:

var list = document.getElementsByClassName('post');
for (var i=0; i < list.length; i++)
{
  list[i].parentNode.removeChild(list[i]);
  alert(list.length);
}

En exécutant cette fonction sur la page d'accueil, on verra disparaître un billet sur deux et la NodeList diminuera au fur et à mesure. Attention donc en manipulant les résultats. Pour être sûr de ce qui va se passer, on peut recopier le tout dans un tableau classique, mais attention aux performances.

Cette méthode est actuellement supportée par Safari 3.1 (of course) et bientôt Firefox 3 et Opera 9.5. Elle fait partie du brouillon pour HTML 5.

Vous voyez évidemment à quoi ça sert ? Ça accélère considérablement tous les accès qu'on peut faire, si on l'utilise. Et comme de plus en plus de gens utilisent des librairies pour ne pas s'embêter avec les compatibilités entre navigateurs, on va vérifier qu'on bénéficie bien de cette amélioration quand disponible. On va surtout étudier les méthodes du style $ ou $$, qui permettent de sélectionner des éléments à partir d'un sélecteur CSS

Bilan : Ah bah c'est pas génial. Si j'étais mesquin, je dirais que c'est une raison de plus pour ne pas utiliser de librairies Javascript. À leur décharge, ce n'est pas vraiment nécessaire puisqu'elles utilisent XPath lorsque c'est disponible et c'est disponible sur tous les navigateurs ayant cette méthode. Pour jQuery, c'est regrettable, puisqu'elle n'a pas d'implémentation XPath. Bien évidemment, XPath est plus rapide que DOM, mais tout de même plus lent que getElementsByClassName.

Mais finalement, on verra bientôt qu'il y a d'autres méthodes pour nous aider.

lundi 7 avril 2008

Mon premier bug chez Webkit

Depuis un petit moment, je suis de plus en plus près le projet Webkit, le moteur derrière Safari.

Ayant remarqué un bug dans la gestion des évènements sur une interface que j'utilise quasi-quotidiennement, je me suis décidé hier à en faire un joli rapport de bug. J'ai aussi pu traîner un peu sur le salon IRC #webkit et l'accueil était plutôt agréable. J'ai pu poser quelques questions et apprendre qu'un nouveau moteur Javascript est en cours d'écriture, que le WebInspector était en cours de refonte.

En écrivant le test minimal pour le bug, j'ai aussi remarqué que la taille minimum d'un élément <select> sur plusieurs lignes est de 4 lignes. Au premier abord, on peut se dire que ce n'est pas normal par rapport à la spécification. Mais c'est un bon point ergonomique puisqu'il est plus facile d'avoir du contexte sur 4 lignes et qu'il est impossible de présenter une barre de défilement sur 2 petites lignes. Un comportement à retenir si l'on souhaite utiliser de petites listes de sélection.

vendredi 25 janvier 2008

Please, don't hurt the web, des solutions

Le web continue à se remuer après l'annonce de Microsoft. Anne van Kesteren explique d'ailleurs très clairement le problème que ces modes causent. Certains prépare des solutions de boycott, d'autres cherchent une solution alternative pour coller aux besoins de l'équipe IE tout en favorisant les standards. La solution de David Baron est ma préférée. Comme je le disais, la principale inquiétude de Microsoft tourne autour des Intranet. Laissons donc le reste du web bénéficier d'un vrai rendu standard. Les administrateurs des réseaux d'entreprises choisiraient quels sites doivent être vus avec un autre moteur que celui de base. Ce n'est pas aussi bien que des modes de rendus très proches qui évoluent ensemble mais on ne peut demander à Microsoft de recommencer le travail sur IE8 depuis le début.

Je suis d'ailleurs tombé sur le meilleur résumé possible de toutes ces discussions.

jeudi 24 janvier 2008

Please, don't hurt the web

IE-LockEt bien il fallait bien ça pour sortir ce blog de sa torpeur : Compatibility and IE8. Je ne ferais pas l'inventaire de toutes les réactions (on peut trouver assez de liens sur le QA Blog du W3C, mais ça fuse de partout. Que ce soit chez Mozilla, Webkit, Opera ou chez les développeurs web. Il y a bien quelques satisfaits tout de même.

On nous explique que ce nouveau mode de choix du rendu a été inventé par pragmatisme. Lorsque l'on était en mode "standard", on utilisait des hacks pour corriger les bugs de IE6. À l'arrivée de IE7, cette technique ne fonctionne plus puisque les hacks de contournement ont été corrigés mais pas les bugs en question. L'équipe de IE s'était dit que les améliorations n'étant disponibles qu'en mode "standard", le web ne serait pas cassé. C'est là que vient le pragmatisme : "faut pas refaire pareil !".

Les pages sont conçues à un moment précis, pour une version précise du moteur de chaque navigateur. Et bien inventons un moyen de fixer ces pages définitivement. Ça part donc sur une bonne intention, pleine de bon sens.

Là où le bon sens déraille, c'est que cela implique que chaque version d'IE devra intégrer toutes les versions précédentes jusqu'à IE6. Est-ce pragmatique, réalisable ? Bien sûr que non. Il y aura toujours des différences de rendu au fur et à mesure, pour s'adapter à une nouvelle version du système d'exploitation, des changements matériels, etc.

Bon, admettons que ce soit possible (oui, faîtes un effort). Je mets donc un tag pour bloquer à IE8. Mais quel IE8 ? Celui de la sortie ou celui un an plus tard avec les corrections de sécurité ? Ça pose encore plein de problèmes comme les frames et iframes mélangeant des pages ne souhaitant pas le même mode de rendu. Ou encore la question des copier/coller pour "widget".

Ce principe de choix du moteur rappelle aussi les très belles heures du web "Conçu pour Internet Explorer en 800x600". Ressortez tous vos gifs animés !

Évidemment, j'espère que Microsoft reviendra sur sa décision. On voit clairement que cette décision a été prise pour les Intranet qui restent encore la quasi chasse gardée de Microsoft vu l'inertie (tout à fait naturelle) des entreprises. Cette décision n'est pas néfaste pour les pages déjà existantes mais pour les prochaines à venir. Le slogan "Don't break the web" regarde en arrière, jamais en avant.

Au fait, comment fait IE8 pour passer le test Acid2 ?

PS : Merci à Sunny pour son logo

Update : Des solutions ?

vendredi 5 octobre 2007

Django-fr sur Webfaction

Depuis 3 semaines, le site de la communauté française Django tourne sur Webfaction. Comme je me suis occupé de la migration, David ayant une todo-list longue comme le bras, je vous propose un petit howto d'une migration Django, SVN et Trac.

Lire la suite...

- page 1 de 2