Trucs et astuces CSS

Ca fait maintenant quelques mois que je bosse sur un gros projet pour le boulot qui utilise beaucoup les technologies Web modernes à savoir CSS et Javascript (AJAX). Je dois avouer qu’au début j’ai beaucoup tâtonné pour avoir quelque chose qui marche bien sur tous les navigateurs du moment à savoir l’infâme Internet Explorer, Firefox et Safari. Oui, il ne me manque qu’Opéra, mais il ne représente pas à mes yeux une cible importante… Les cibles importantes sont pour moi les deux navigateurs par défaut de Windows et Mac OS X et enfin, Firefox pour avoir une vrai image multi plateforme (et oui, lui il tourne quasiment partout !)…

Donc au fil de tous ces mois de travail acharné, j’ai fini par trouver quelques trucs et astuces pour écrire du code vraiment multi plateforme et pour contourner les bugs des navigateurs… J’ai décidé de vous les faire partager…

Premièrement, avant tout il faut avoir les bons outils. Ma méthode de travail consiste avant tout à avoir quelque chose qui tourne sous Firefox, puis de le tester, adapter sur Safari puis Internet Explorer. Le plus gros des bogues de mon code est donc trouvé sous Firefox. Ça tombe bien, car c’est celui qui offrent les meilleur outils de développement Web !

Firefox :

Sous Firefox, j’utilise juste deux extensions :

  • Web Developer : Je connais et j’utilise cette extension depuis déjà pas mal de temps. Il s’agit qu’une barre d’outils qui permet principalement de débugger les problèmes de CSS. Parmi les fonctions pratiques, on retrouve une édition en direct des feuilles de styles (via le menu CSS/Editer), un affichages d’info sur la pages (contours des calques, information de tailles, id et styles, etc.) et enfin, une fonction pour redimensionner la fenêtre automatiquement à la taille que l’on souhaite (et oui, il ne faut pas perdre de vue que beaucoup de gens ont encore des écran en 1024×768, voir 800×600… Les pauvres !). Bref, Web Developer est une extension pas mal du tout… Mais il y a mieux… Bien mieux
  • Firebug : c’est le couteau suisse du développement avec Firefox. Cet outil offre 3 petits onglets en bas de la fenêtre du navigateur. Le premier onglet une console javascript qui permet d’afficher les erreurs et les événements javascript, mais aussi d’évaluer des expressions javascript dans le contexte de la page. Le deuxième onglet est un debuger assez complet qui permet de placer des points d’arrêts, d’inspecter les variables et avancer dans le programme en pas à pas. Le dernier onglet est un inspecteur similaire au DOM inspector de livré par défaut avec Firefox, mais qui possède quelques fonctions pratiques comme la présentation de l’arbre DOM comme du code source, la possibilité de trouver un élément dans l’arbre en le pointant avec la souris, ou encore la possibilité de modifier les attributs des noeud à la volée. Cet outil est indispensable pour débugger vos pages dynamiques !

Safari :

Sous Safari, c’est un peu plus dur de trouver des outils corrects (attention, avant que l’on me tape sur les doigts, par correcte j’entends, je n’ai pas trouvé d’outils que j’ai pu utiliser de façon efficace). Il existe un menu « debug » que l’on peut activer avec la commande suivante :

defaults write com.apple.Safari IncludeDebugMenu 1

Source : MacOSXHints
Il n’y a pas grand-chose de phénoménal dans ce menu sur la version actuelle de Safari mais on retiendra quand même un accès au DOM et une console javascript.

Le plus intéressant viens quand l’on installe la dernière version de WebKit (on peut l’installer en parallèle de son installation normale). La nightly build vous fournira en plus un inspecteur et un deboggueur javascript. Le problème, c’est qu’a chaque fois que j’ai eu besoin de trouver la cause d’un dysfonctionnement de mon code sous Safari, dès que j’ai lancé mon programme avec la nightly build de WebKit, mon bug avait disparu… Et oui, ça veut dire que les développeurs qui travaillent sur WebKit (pas forcément chez Apple, car c’est un projet OpenSource dérivé de kHTML) corrige quand même les bugs ! Mais ça ne m’aide pas a faire marcher mon projet sur la version actuelle de Safari… Donc grosso modo, pour trouver un problème sous Safari version actuelle, vous êtes seul !!!

Internet Explorer :

Enfin, il reste Internet Explorer…
Pour lui, il y a deux outils fournis par Microsoft :

Personnellement, je n’utilise que le Developer Toolbar et surtout, j’utilise l’icône qui indique une erreur de script dans la barre de statuts…

Voilà, avec ça vous devriez être paré pour développer vos applications web 😉 Bien sur, si vous aussi vous avez des petits outils pratiques, n’hésitez pas a m’en faire profiter 😉

La Freebox HD prévue pour avoir un lecteur optique ?

Je viens de recevoir ma Freebox HD… C’est un très bel appareil. Malheureusement, pour l’instant, le hardware semble être utiliser bien au dessous de ses capacités. On sait tous qu’il y a en son sein un disque dur 2″1/2 de 40Go qui ne sert pas. Les Freebox précédentes étaient toutes munies d’un port permettant de brancher un HDD externe (les V2 avaient un port propriétaire (un connecteur SubD) les v3 et 4 avait un port SATA et un port USB. Visiblement, les ingénieurs de Free veulent nous fournir des fonctions de magnétoscope numérique depuis longtemps. La Freebox HD dispose donc carrément d’un HDD en interne (sans doute que le HDD externe faisait peur au ayant droits du fait qu’il puisse être branché à un ordinateur) et aussi d’entrée analogique. Bref de quoi remplacer un MythTV 😉

Mais j’ai remarqué deux trucs étranges sur ma Freebox HD. Le boîtier en plastique à une forme assez surprenante qui laisse penser qu’il a été conçu pour recevoir un lecteur optique (au format ordinateur portable). Un graveur de DVD ou peur être même un BlueRay ou HD-DVD ?

Le lecteur semble avoir été prévu pour être en SATA… Voici ce que je pense être l’empreinte sur la carte-mère du contrôleur SATA et du connecteur. Bien sûr, tout ceci n’est que pure spéculation, je n’ai pas pris le temps de fouiller plus loin…

Arghhhh !!!

Attention, ceci peut définitivement nuire à la réputation de Dark Vador !!!


Source

You don’t know the power of the dark side of code maintainability

EXTERIOR: DAGOBAH–DAY

With Yoda strapped to his back, Luke climbs up one of the many thick vines that grow in the swamp until he reaches the Dagobah statistics lab. Panting heavily, he continues his exercises–grepping, installing new packages, logging in as root, and writing replacements for two-year-old shell scripts in Python.

YODA: Code! Yes. A programmer’s strength flows from code maintainability. But beware of Perl. Terse syntax… more than one way to do it… default variables. The dark side of code maintainability are they. Easily they flow, quick to join you when code you write. If once you start down the dark path, forever will it dominate your destiny, consume you it will.

LUKE: Is Perl better than Python?

YODA: No… no… no. Quicker, easier, more seductive.

LUKE: But how will I know why Python is better than Perl?

YODA: You will know. When your code you try to read six months from now.

Via Rui

Virer la pub sur MSN (ou ne pas utiliser MSN ;-) )

L’autre jour, certains de mes amis (ils se reconnaîtront), se plaignaient du fait que MSN Messenger était pollué par la pub… Aujourd’hui, je tombe par hazard sur ça : cleanMessenger

Bon, bien sur, ils feraient mieux d’utiliser Gaim ou Amsn mes amis… mais bon personne n’est parfait 😉

Je connais même des extrémistes qui leur préconiseraient de carrément changer de protocole et de passer à Jabber (hein Eric) 😉

Réponse à Palpatine

Palpatine a fait le commentaire au sujet de mon billets précédent :

Deux choses :
_ premièrement, comparer l'ergonomie et les fonctionnalités de MacOS X (ou du moins de son environnement de travail) à Gnome, c'est comparer une daube à une grosse daube, forcément on ne va pas loin ; de plus, mettre Linux, kernel de sont état là-dedans, au milieu, c'est un poil extrapoler...
_ ensuite, il faut vraiment revoir la sécurité, parce que j'ai presque failli m'évanouir : copier un fichier d'un endroit du système à un autre sans en avoir les droits est extrêmement rare, ça ne m'arrive même jamais ; mettre une demande de mot de passe est la porte ouverte à des failles de sécurité immondes (il suffit d'automatiser la tâche, et de toute manière, d'un point de vue du codage, ça implique des choses immondes et très peu sécurisée comme Apple sait effectivement bien le faire). Au passage, sudo est une absurdité, c'est à proscrire absolument.
Faire démarrer un programme en tant que root sur son DE simple utilisateur n'est pas du tout une atteinte à la sécurité, du moment que le programme en question est sécurisé ; konqueror a une entrée dans le menu K pour ce faire. Maintenant, il faut savoir jouer avec les droits, les access lists, et ne pas faire de bêtises (je ne vois pas pourquoi un utilisateur lambda mettrait ses mains dans le système, même si c'est lui qui est le seul utilisateur, et donc administrateur : s'il est censé avoir assez de compétence pour faire ces opérations, il en a assez pour ouvrir une console et taper ça plus vite que son ombre...).
Pour finir, le coup de la réparation des droits est une feature de la Mandriva par exemple, avec un crontab qui regarde les accès en rwx pour le groupe ou le reste du monde, ou encore les sticky bits/guid/suid foireux ; parfois, c'est d'ailleurs bien relou, quand on se crée un utilisateur virtuel sur lequel on se garde tous les droits, histoire de faire un ftp pour quelques personnes privilégiées, par exemple (pour dire que non, "deviner les droits qui vont bien" est totalement impossible, il n'y a qu'à considérer les scripts et leur hypothétique malfaisance) ; apparmor sous SuSE doit certainement reagrder ce genre de choses, cet outil est surpuissant.

Voilà, j'espère que j'aurai éclairé quelque lanterne...

Pourquoi tant d’agressivité ?
Il est vrai que tu es stressé par ton entré toute récente dans la vie active alors que tu n’es jamais aller en colo ou en voyage (ça doit être perturbant 😉 )… mais le pique-nique aurait du te calmer !!! Bref, la prochaine fois, j’apprécierai plus de retenu dans tes propos…

Je vais tout de même essayer de te repondre point par point :

  • Ta première remarque est un jugement de valeur… Un jugement de valeur n’est pas très constructif quand on ne défini pas des critère précis… MacOSX, même si ça ne te fait pas plaisir est un des OS les plus avancée technologiquement… Je t’invite a lire l’article d’ARS Technica pour te faire une opinion (tu as de la chance, vu que tu es bilingue !!!)… Je pense à mon avis que tu juges sans connaître !
    A ce propos, pour toi, quel est l’environnement qui n’est pas une daube ? KDE (Ton user agent : Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.2 (like Gecko)) ? Personnellement, j’ai du mal à accrocher, mais je ne dit pas que c’est une daube, chacun son truc…

  • La remarque sur Linux est plutôt absurde… Il est vrai qu’u sens stricte du terme, Linux ne représente que le kernel, mais il est courrant de parler de Linux pour désigner une distribution comprenant un kernel Linux et une série d’outils… Tout comme il est courrant de parler de PC quand l’on parle d’un ordinateur personnel compatible IBM PC… D’ailleurs, Wikipedia abonde dans mon sens : Linux – ou GNU/Linux – est un système d’exploitation libre, multitâche, multi-plateforme et multi-utilisateur de type Unix.
  • Je ne vois pas ce qui te fait bondir au sujet de la sécurité avec sudo… Sudo permet à un utilisateur lambda de faire des taches d’administration de façon extrêmement fine… Comment fait tu pour qu’un utilisateur charger d’administrer le serveur Web soit capable de le redémarrer ? Tu lui donnes ton mot de passe root ? Bravo la sécurité !!! Avec sudo, tu peux choisir explicitement les commandes qu’il peut lancer… Voir même limiter son usage en créant un wrapper qui vérifie/limite les arguments… A ma connaissance, il n’y a pas de moyens pour gérer les droits d’exécution des utilisateurs aussi efficacement… Bien sur, donner à un utilisateur le droit de lancer tous les programmes (c’est les cas pour tous les utilisateurs qui appartienne à admin sur un Ubuntu ou sur MacOSX peut être très dangereux… Mais rien ne t’oblige à le faire… De plus, sudo journalise toutes les commandes… Si le système a été compromis, et qu’il est configuré pour utiliser sudo (c’est à dire : personne ne connais le mot de passe root), on peut remonter les journaux pour trouver quel utilisateur a été compromis… La seule faille de sécurité que je vois dans sudo est la temporisation qui évite de devoir retaper son mot de passe si l’on fait plusieurs sudo coup à coup… Mais cette faille est plutôt dure à exploiter (il faut me piquer ma console quand j’ai le dos tourné… Et vite 😉 )… Mais cette temporisation est sans doute désactivable sur tout le système…
  • Quand au fait qu’un utilisateur n’a pas à aller changer/déplacer les fichiers sur son système, je ne suis pas du tout d’accord… La force des logiciels libres, c’est justement de pouvoir hacker tranquillement son système… Chaque utilisateur à ses besoins… Quelqu’un qui ne fait que du traitement de texte ne doit sans doute pas avoir besoin de toucher à des fichiers sur lesquels il n’a pas de droits… Mais personnellement, en temps qu’administrateur de serveur, j’ai régulièrement besoin d’aller changer des fichiers de configurations…D’autre part, en tant que développeur, j’ai aussi parfois besoin de lancer certaines des mes productions en tant que root… Ce n’est parce qu’un type d’utilisateur n’a pas besoin d’une fonctionnalité qu’elle n’a pas sa place dans un logiciel… Un autre exemple simple, il m’arrive de devoir installer des logiciels sur le Powerbook de ma mère… Le compte de ma mère n’a pas le droit de sudo… Sur un mac, bien souvent, installer une application revient à la copier dans le dossier Application… Bien sur, ma mère n’a évidement pas les droits d’y accéder… Mais au lieu de refuser purement et simplement la copie, le Finder me permet de m’authentifier (avec mon compte, qui lui à les droits d’administration) pour pouvoir faire la copie avec mes droits… Je ne vois pas où est la faille de sécurité car il faut mon mot de passe pouvoir effectuer cette tache et que, à partir du moment où on a mon mot de passe, je ne vois pas ce qui empêche de se loguer directement avec mon compte pour effectuer la tache… Par contre, c’est bigrement pratique, car ça évite de devoir quitter la session de ma mère pour juste installer une application… Voila le genre de fonctions que je demande à mon bureau… Et n’en déplaise au pro de la console (dont je pense faire un peu partie quand même), c’est tout de même bien pratique et agréable de pouvoir faire ça avec un simple drag’n drop…
  • La sécurité sous MacOSX est à mon sens pas trop mal foutu… C’est sur qu’on est loin d’un BSD prison, mais l’OS est bien protégé contre la plus grande faille de sécurité qui soit : l’utilisateur !
    Aucune tache d’administration de la machine ne peut être faite sans préalablement entrer son mot de passe (même lorsque l’on est logué en tant qu’administrateur). Le système prévient l’utilisateur lorsqu’il télécharge un fichier « dangereux » (script, application, etc.) même lorsque ce fichier est encapsulé dans un zip ou un tarball… Lorsqu’une application est lancée pour la première fois, l’utilisateur est prévenu (même après une mise à jour de l’application)… Enfin, tous les services distants (ssh, ftp, afp, http, etc) sont désactivés par défaut… Les failles qui peuvent rester sont des bugs (buffer overflow (MacOSX utilise le bit NX sur Intel 😉 ), etc.)… A mon avis, il n’est pas pire qu’un Linux (mais c’est vrai que c’est difficilement vérifiable vu que l’on ne peut pas auditer le code… En tout cas, rien à voir avec Windows 😉

  • Je ne suis pas d’accord concernant le fait que lancer un programme utilisateur ne soit pas une faille de sécurité… Les applications graphiques sont généralement très complexes de nos jours. Le code total a auditer est énorme (il faut auditer toutes les librairies avec lesquels le programme est linké…). La moindre faille dans une librairie est sérieuse vu que le code exécuté dans les bibliothèques à les mêmes droits que le programme principal… Il faut minimiser au maximum les portions de codes qui tournent en tant que super utilisateur (autrement dit, juste le thread qui fait la copie)…
  • Enfin, le script de réparation automatique des autorisations n’est pas un script qu’il faut lancer en permanence… Le simple fait de devoir faire cela pour que le système marche prouve que le système est mal conçu !!!
    Le script doit être considérer comme étant un script de dépannage… Il peut être lancer par l’utilisateur depuis un CD de boot quand il a cassé sont système…
    Pour info, le script de MacOSX ne touche pas aux permissions des comptes utilisateurs, juste aux permissions sur le système (par exemple, pour que le système puisse booter, il faut que les extensions du kernel (les modules, pour un linuxien) soit au moins accessible en lecture pour le root et que les scripts de démarrage soit executable par le root..)…

Voila…

Maintenant, tes remarques sont peut être justifiés… Mais dans ce cas, il faudrait étayer un peu ton argumentation plutôt que de te placer en donneur de leçons…

Il y a encore du boulot…

Ca va faire maintenant plus d’un mois que j’utilise Ubuntu (Dapper bien sur) au moins autant, si ce n’est plus que MacOSX…

J’utilise le bureau Gnome… J’aime bien son ergonomie. Mais je me rend compte qu’il y a encore du boulot à faire pour atteindre le niveau de finition de MacOSX…

Un simple exemple concerne le navigateur de fichiers (Nautilus ? ). Si je veux copier un fichier à un endroit où je n’ai pas les permissions, il refuse de me le copier… Pour l’instant, tout va bien… Par contre, ce que je lui reproche, c’est de ne pas me demander de m’authentifier (avec un mot de passe « admin ») pour que mon opération de copie puisse aboutir… Sous MacOSX, si je souhaite faire une tel opération, au lieu d’avoir une fenêtre d’information m’interdisant la copie, je me retrouve avec un message me prévenant que la copie à échouée et me demandant si je souhaite continuer en entrant un mot de passe « admin ». Je tape mon mot de passe et l’opération est effectuée sans problème (merci sudo 😉 )… Sous Gnome, je me retrouve forcé, pour une opération aussi simple qu’une copie de fichier, de lancer un terminal pour me taper à la main mon « sudo cp monfichier vers/la/ou/je/peux/pas/ » à l’ancienne… Le terminal ne me fait pas peur, bien au contraire, mais en 2006, je trouve ça encore un peux frustrant…

Un autre exemple de cette non gestion du sudo par le gestionnaire de fichiers se trouve dans les propriétés d’un fichier… On ne peut pas changer les droits d’un fichier comme on veut… Il faut pour le faire, obligatoirement être propriétaire de ce fichier… Cela semble logique, mais encore une fois, l’utilisation de sudo pourrait supprimer cette limitation… Sous MacOSX, je peux sur un fichier, qu’il m’appartienne ou non, changer son propriétaire et tous ses droits depuis la même fenêtre… Le système me demandant mon mot de passe si nécessaire…
Pourquoi une idée aussi simple n’a pas été encore implémentée ? Je ne sais pas trop… Ce n’est pas a mon avis, parce que les développeurs de Gnome sont des UbberGeeks qui bronzent à la lueur verte de le terminal… On ne peut pas nier qu’il y a eu de nombreux efforts pour rendre Linux beaucoup plus accessible (et ils ont portés leurs fruits)… C’est peut être alors parce que quelqu’un pense qu’une tel fonction nuirait à la simplicité du système, ou à son intégrité… Je ne pense pas… Et pour preuve, je dirais que les utilisateurs de MacOSX, qui sont réputé pour être des utilisateurs non-informaticiens, ont cette fonction et je ne les vois pas ni se plaindre (bien souvent, il ne soupçonnent même pas sont existence) ou ni casser leur système…
De toutes façons, il suffirait d’inclure un outils de réparation des autorisations pour pouvoir rattraper le coup si l’utilisateur fait des choses qui rendent le système instable (« sudo chmod -R 000 / » 😉 )… Il n’est pas trop dure de deviner les autorisations normales d’un fichier en fonction de son emplacement…

 

Je me souviens, d’une époque ou je pouvais lancer sur mon Linux un gestionnaire de fenêtre en mode root… (je ne me souvient ni du bureau, ni de la distribution…). Ce système ne me semble pas être bon pour la sécurité du système… En effet, de cette façon, on risque fort de prendre l’habitude d’avoir toujours un gestionnaire de fichier en mode root et donc d’augmenter le risque de faire des bêtises… Il est bien plus sûr de demander le mot de passe à chaque fois qu’il est nécessaire… Attention, il ne faut pas non plus tomber dans le délire de paranoïaque de Windows Vista (Attention, quelqu’un (peut-être vous) à bougé le pointeur de la souris. Autorisez vous Microsoft © Vista © à effectuer cette opération… Cette opération, peut gravement nuire à la stabilité de votre système…)

Il est possible que tout ce dont je parle soit déjà dans Gnome et que je en l’ai pas trouvé… Dans ce cas il faut déplacer le problème du manque de fonctionnalité vers le manque d’ergonomie… Une fonction que l’utilisateur ne peut pas trouver est une fonction inutile…

Musique sans DRM

eMusic est le numéro 2 de la distribution de musique en ligne, juste derrière iTunes….

Mais comment font-ils face à des géants comme Napster, Real ou Microsoft (et tous ses petits amis)… C’est simple ils sont compatible iPod… Non, ils n’ont pas cassé les DRM d’Apple ! Ils diffusent juste en MP3 sans DRM…

Ah, enfin !!! Mais ce site ne fait pas ça par idéologie, mais juste par intérêt… Pour être dans la course, il faut être compatible iPod, et la seule façon d’être compatible, c’est de ne pas avoir de DRM ! Quand l’anti-DRM devient une affaire de capitalistes…

Les tarifs ne semblent pas prohibitifs (25c annoncés par chanson) et le catalogue semble vaste… Mais, car il y a toujours un Mais. On ne peut pas consulter le catalogue sans être inscrit. Et l’inscription demande obligatoirement une carte de crédit… Il y a bien 15j gratuits, mais avec carte de crédit… Enfin, le pire selon moi, on ne peut acheter que par plan d’abonnement ($10 minimum)…

Bref, ça a l’air intéressant… Mais il est hors de question que je file mon numéro de CB sans avoir une petite idée du catalogue qu’ils proposent !!! Vous connaissez ce service ?

Merci à Cyrille qui a l’air de mieux maîtriser Aspell que moi 😉

RTSP 2 HTTP

Il semblerai que le script que j’avais bricolé il y a quelques mois pour convertir un flux RTSP provenant de la Freebox intéresse du monde…
Certains utilisateurs de Xbox veulent l’utiliser pour regarder la Freeboox sur leur Xbox…

AlexSolex l’a même amélioré… Maintenant la freebox ne coupe plus le flux toutes les 30s… Il fallait pour cela renvoyer un petit paquet magique régulièrement à la Freebox pour lui signaler que l’on est toujours en vie !!!

Voici le script modifié (download).

Update 2006/10/24 : Comme j’avais oublié de le faire, je met ce code sous la licence GPL v2. Vous pouvez en faire ce que vous voulez du momoent que vous distribuez le code avec (c’est pas dure, c’est du python 😉 ) et que vous publiez le modifications 😉

Poisson d’avril

Tous les ans, on y a droit… Tout le monde essaye de monter le canular le plus plausible…

Cette année, toute la communauté Mac est occupée avec le 30ème anniversaire d’Apple. Je ne m’attends donc pas trop à de grandes farces de ce coté là…

Par contre, j’ai déjà noté quelques articles qui me semblent avoir les bonnes caractéristiques (attention, ces caractéristiques sont et resteront secrète 😉 ) pour être des farces :

C’est tout ce que j’ai trouvé pour l’instant…

Il y en aura sans doute d’autre d’ici ce soir…

Update 12h30 :