Geek, alcool et rock'n'roll

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 28 décembre 2008

Changement de comportement pour les contenus inline flottants ?

J'ai installé Firefox 3.1 beta, et je me suis aperçu d'un nouveau comportement sur un site que je suis en train de construire. J'ai d'abord pensé à un bug, mais j'ai ensuite essayé avec Google Chrome[1], et le comportement était identique.

Notes

[1] Je n'ai pas réussi à le télécharger avec Firefox, d'ailleurs.

Lire la suite...

mercredi 24 décembre 2008

Bien concevoir ses formulaires Web

Allez, je place ça dans ma liste "à lire" : Bonnes pratiques de conception de formulaires Web, présentation de Luke Wroblewski.

Ça a l'air bien !

(via Yves chez Vincent)

Tabindex, focus et accessibilité

Juste un petit point sur les tabindex; ça sera rapide, je n'ai pas la verve d'Eric ou de Vincent ;-)

En fait, je me demandais la différence entre des valeurs 0 et -1 pour un tabindex. Un collègue bien connu m'a assuré que la valeur 0 était illégale.

Or, étant donné qu'il n'a tort que très rarement, surtout dans ce domaine, je me vois ravi de l'exposer publiquement à votre ire. En effet, la valeur 0 n'est pas illégale ! Ce qui ne répond pas, pour l'instant, à ma question, je l'avoue.

J'ai donc trouvé une explication bien complète, et j'ai même été fouiller dans les spec HTML 4 et HTML 5, et voici ce qu'il en ressort :

  • un tabindex à la valeur -1 signifie que l'élément où il s'applique ne pourra pas obtenir le focus avec la touche TAB (comme on dit chez nous: il ne sera pas tabulable)
  • un tabindex à la valeur 0 signifie que l'élément sera tabulable, mais il se trouvera après tous ceux ayant déjà un tabindex. Cela signifie qu'en HTML4, tout se passe comme si le tabindex n'était pas spécifié; en revanche, en HTML5, cela permet de rendre un élément tabulable, alors qu'il ne l'est normalement pas.

Attention, en HTML4, l'attribut tabindex n'est valable que sur certains éléments. En HTML5, il est valable partout. Ce comportement est déjà implémenté dans plusieurs navigateurs (dont Firefox, et IE6), je laisse le soin à mes excellents visiteurs de compléter en commentaire (en utilisant le test fourni sur la page du Fluid Project).

Oui, je sais, j'ai mis accessibilité dans le titre, attisant par là votre curiosité malsaine. J'y viens, j'y viens.

En fait, sur les interfaces dynamiques, on peut avoir des choses du style : des div qui apparaissent et disparaissent (par exemple une boîte de dialogue), des images avec juste des évènements dessus, etc. Oui, c'est mal, mais ça arrive. Pour améliorer l'accessibilité, on va rendre certains éléments tabulables en utilisant un attribut tabindex.

Pour une boîte de dialogue, on va même lui donner le focus... en effet, autrement, un utilisateur de lecteur d'écran ne la verra pas, car elle sera ajoutée tout à la fin du DOM, ce qui est super pratique pour quelqu'un qui navigue au clavier.

Des remarques ?

lundi 22 décembre 2008

Ça, c'est fait

- Et donc, c'est quoi ce que tu voulais dire ?

Là, on repense à ces mots et ces phrases, pensés, travaillés, puis retravaillés, recomposés, depuis des jours, tellement rabâchés qu'ils en perdent leur sens. Et puis finalement ils sortent de la bouche, un peu l'air de rien. On se dit, merde, c'est inutile, ça sert à rien de faire de la peine à la personne qu'on a en face de soi, finalement on est bien comme ça on a qu'à continuer encore un peu, c'est plus facile, et ainsi tout le monde est content.

Et puis, non, on laisse ces phrases aller, comme un texte appris par coeur. On reste fidèle à sa ligne de conduite et puis après on se demande vraiment si on a pris la bonne décision. On voit l'autre être triste, on est triste soi-même, ça sert juste à rien. Je découvre que les ruptures, c'est aussi difficile pour les deux côtés.

Allez, ça ira mieux demain, comme toujours.

Mise à jour : C'est demain et ça va mieux. Merci pour les ptits messages les copains !

jeudi 18 décembre 2008

Je crois en moi, car je ne suis pas accroc

Et oui, un nouvel album de K's Choice prévu pour 2009, et une tournée européenne de Sarah Bettens, avec peut-être son frère en guest star (c'est le cas aux US d'après Wikipedia).

C'est bon ça !

En attendant, on peut toujours écouter le dernier album de Sarah Bettens.

Échapper les noms des tables et des colonnes avec JPA et Hibernate

Oui, oui, encore un post de geek...

Bon, je me suis aperçu que Hibernate n'échappait pas les tables et les colonnes des tables. Ainsi, si on a une classe User (pas très courant, n'est-ce pas ?), Hibernate va essayer de générer une table User, et ça va échouer car c'est un mot-clé SQL[1]. Et c'est la même chose pour les champs.

La méthode préconisée par Hibernate est de rajouter des guillemets inversées, avec @Column ou @Table lorsqu'on utilise des annotations JPA.

Bon, moi je me voyais pas faire ça, alors j'ai plutôt utilisé une NamingStrategy que vous voyez ci-dessous:

package mon.package;

import org.hibernate.cfg.ImprovedNamingStrategy;

public class JujuNamingStrategy extends ImprovedNamingStrategy {

	@Override
	public String columnName(String columnName) {
		return "`" + super.columnName(columnName) + "`";
	}

	@Override
	public String tableName(String tableName) {
		return "`" + super.tableName(tableName) + "`";
	}

	@Override
	public String classToTableName(String className) {
		return "`" + super.classToTableName(className) + "`";
	}

}

Et ça se met en oeuvre simplement dans notre fichier de configuration Spring, lorsqu'on définit les propriétés de l'EntityManagerFactory, dans la jpaPropertyMap qui sert à définit les propriétés spécifiques à Hibernate :

<entry key="hibernate.ejb.naming_strategy" value="mon.package.JujuNamingStrategy" />

Certes, peut-être manque-t-il certaines méthodes dans ma classe; je les ajouterai lorsque j'en aurai besoin, pour l'instant ça marche bien comme ça !

Notes

[1] Du moins avec PostgreSQL... mais on peut très bien avoir aussi un champ from par exemple.

jeudi 11 décembre 2008

This reminds me of something

C'est fou comme xkcd me rappelle des trucs :-) C'est un peu l'histoire de ma vie sentimentale, tout ça.

Heureusement que j'apprends de mes erreurs ![1]

Notes

[1] J'allais écrire: "heureusement que je reprends les choses en main", mais je me suis dit que c'était limite.

mardi 9 décembre 2008

Télécharger des images protégées dans Flickr

Dans flickr, parfois, certaines images sont protégées. C'est le cas de certaines photos de Paris-Web (et néanmoins superbes).

J'avais besoin d'en télécharger quelques-unes pour faire une présentation interne, et donc j'ai essayé de comprendre ce qui empêche le téléchargement. Et en fait, c'est très simple: flickr pose une image invisible (spaceball.gif) par dessus l'image normale. Ainsi, si on cherche à la sauvegarder, c'est l'image invisible que l'on sauvegarde.

Une première manière consiste à utiliser l'excellente extension Firebug. On clique avec le bouton droit de la souris sur l'image, puis on choisit "Inspecter un élément". Là, la fenêtre de Firebug s'ouvre, avec l'image invisible sélectionnée. Il suffit de cliquer avec le bouton droit de la souris sur l'élément, puis de choisir "Supprimer l'élément". Après cela, vous serez alors en mesure de sauvegarder l'image dans la fenêtre principale.

Mais bon, c'est quand même pas super pratique. Alors, j'ai eu l'idée d'utiliser la non moins excellente extension Adblock Plus. Cliquez donc avec le bouton droit de la souris sur votre image spaceball, puis choisissez "Bloquez l'image avec Adblock...". Une boîte de dialogue s'ouvre alors, et il faut choisir la première option (celle sans "*"), puis cliquer sur "Ajouter l'adresse". Et voilà, vous n'aurez plus de protection dans Flickr !

vendredi 5 décembre 2008

Problème d'authentification en passant de smbfs à cifs

Depuis quelque temps, au boulot, je n'avais plus accès aux disques réseau. Je n'ai pas vraiment pris le temps de débugger cela, d'autant plus que lorsque je montais le dique réseau à la main, tout fonctionnait correctement.

C'est assez simple: dans mon /etc/fstab, je spécifiais le disque réseau à monter, le point de montage, ainsi qu'un certain nombre de paramètres.

Le paramètre le plus intéressant, c'est credentials. Il permet d'externaliser les informations d'authentification dans un fichier de la forme :

username=toto
password=tutu
workgroup=mamaison

(La ligne workgroup est optionnelle.)

Après cela, il suffit de protéger ce fichier (par exemple en lui donnant un mode 400), et vous obtenez une sécurité un peu plus élevée.

Bon, voilà pour le contexte.

Moi, j'étais tranquillement en smbfs. Et puis, après un certain temps de transition où on avait les deux en parallèle (il me semble), smbfs est devenu un alias de cifs. Et là, rien ne va plus.

Il faut dire que mon fichier de credentials se présentait plutôt de la sorte :

username = toto
password = tutu
workgroup = mamaison

Ah, vous aussi vous commencez à voir venir l'embrouille ?

Et oui, avec CIFS, il ne faut mettre aucune espace autour du symbole égal. Amusant, non ?[1]

Parmi les autres modifications incompatibles, il faut mettre les paramètres file_mode et dir_mode (nouveaux noms respectifs de fmask et dmask) en octal (c'est à dire par exemple 0600 au lieu de juste 600).

En bonus, ma ligne de montage dans /etc/fstab:

//machine.reseau.fr/partage /mnt/h cifs nodev,noexec,nouser,sync,rw,nosuid,credentials=/etc/fichier-credentials,uid=1000,gid=1000,file_mode=0600,dir_mode=0700,iocharset=iso8859-1 0 0

Notes

[1] En pratique, c'est sans doute pour permettre l'usage de mots de passe avec une espace, justement.

Des polices de caractère pour LateX

Certes, je n'ai pas fait de LateX depuis longtemps. Mais cette étude sur les polices mathématiques pour LateX peut aussi servir de pense-bête le jour où j'en aurai besoin.

C'est chose faite :-)

mardi 25 novembre 2008

Problème de lancement de JBoss

Si vous obtenez l'erreur suivante au démarrage de JBoss :

java.lang.NoClassDefFoundError: javax/ejb/Stateless

c'est sans doute parce que vous avez la version JDK6 de JBoss et que vous l'exécutez avec Java 5.

(oui oui, ça vient de m'arriver...)

Allez donc télécharger la bonne version !

lundi 24 novembre 2008

Je me fais avoir par le marketing

Pourtant, en pénétrant chez les Frères Mousse, je m'étais dit: "non, cette fois, je n'achèterai pas de bières, il m'en reste plein à l'appart, et je déménage bientôt."

Et voilà. Les bières de Noël sont arrivées, et j'ai été obligé d'acheter de la Leffe de Noël, de la Corsendonk de Noël, de la Barbar de Noël, et de la Carolus de Noël... (il me reste encore de la Bush de Noël de l'année dernière... ;-) )

Et je me suis laissé tenter par la Bush des nuits... Il va falloir l'apprécier en petit comité, comme là DeuS jadis :-)

Et samedi soir, c'était soirée whiskies. J'ai goûté deux Signatory Vintage assez fantastiques: celui de cette année avec Bunnahabhain, et celui de l'année dernière avec Laphroaig. Après, on a changé de bar pour un autre qui avait un choix plus limité, et j'ai dû me contenter d'un classique Oban, que je n'ai pas autant apprécié.

Promis, la prochaine fois qu'on va au Mans, on ira dans ce premier bar à la collection de whiskies très sympathique... et pas cher (8 euros) !

vendredi 21 novembre 2008

Miam vietnamien

Bon, ça y est, j'ai retranscrit les recettes notées lors du cours de cuisine vietnamien.

Vous remarquerez que j'en ai profité pour créer un début de site de recettes pour l'occasion. C'est coloré, sans doute un peu trop; j'ai ajouté des images un peu à l'arrache pour commencer (et j'ai d'ailleurs pas fini). Et c'est rien que des pages statiques, ce qu'il va aussi falloir changer à l'avenir. Et c'est sur mon serveur perso de chez moi, il faudra les bouger ailleurs plus tard.

Bon, on verra pour chiader le design une autre fois, ya déjà le contenu :-)

Apache et les charsets

Ouéééé encore un billet de geek ! (Ça veut dire que si vous êtes non-geek, vous ne comprendrez qu'un mot sur deux, et encore, les autres paraîtront des gros mots)

Vous pestez, vous avez votre document HTML en UTF-8, vous avez bien mis la ligne suivante :

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />

Et pourtant, non, ça veut pas, vous avez toujours è à la place de è, ou é à la place de é ou encore î à la place de î. Ça vous emmerde, vous n'avez certainement pas envie de remettre (respectivement) des &egrave;, &eacute;, ou &icirc;, et laisser ces entités là où elles étaient, à savoir au placard.

Si vous regardez les headers HTTP de réponse (grâce à l'excellente Web Developer Extension), vous voyez ça :

Content-Type: text/html; charset=ISO-8859-1

Or, il est vrai, cela force l'interprétation du charset; cette information a priorité sur celle définie dans la page (et j'avoue que je ne comprends pas vraiment pourquoi, la logique aurait plutôt voulu l'inverse, selon moi).

Il se trouve qu'Apache, par défaut[1], et pour des raisons obscures qui n'ont rien à voir, configure la propriété suivante :

AddDefaultCharset On

Il suffit de la changer en Off, ou bien d'ajouter AddDefaultCharset Off dans votre .htaccess.

Attention, si un Apache joue le rôle de Reverse-Proxy chez vous (c'est le cas chez moi), il faudra aussi changer ça chez lui.

Notes

[1] Ou alors, c'est Debian

Firefox et les performances

Bon, on disait que Firefox 3 était moins gourmand en mémoire et processeur. Je suis pas sûr sûr d'être d'accord avec ça.

Occupation mémoire lorsque Firefox a été tué

Voici ce que représente l'image ci-contre :

  • le 1er cadre est l'utilisation du processeur
  • le 2e cadre représente l'utilisation mémoire
  • le 4e cadre représente l'utilisation du swap (zone sur le disque dur utilisée pour simuler de la mémoire vive quand il n'y en a plus)

Notons que j'ai 1Go de mémoire vive et 1 Go de swap.

Le graphique est séparé en deux parties très nettes: la première, lorsque j'ai demandé à Firefox de se quitter en cliquant sur la p'tite croix; la deuxième, lorsque je l'ai tué "à la main".

Voici donc les faits :

  • Après avoir demandé à Firefox de quitter, il s'est mis à mouliner sur mon processeur, à 50% du côté utilisateur, et 50% d'appels systèmes (je ne sais quoi exactement). Après 2 minutes ce n'était toujours pas fini. (Note: parfois, c'est le contraire, il se passe juste plus rien)
  • Il n'avait toujours pas libéré la mémoire utilisée.
  • Après l'avoir tué, le processeur est libéré et une grosse, grosse, grosse partie de la mémoire est libérée.

Je n'arrive pas trop à comprendre comment un tel comportement est possible; pourquoi il est obligatoire de tuer le processus pour qu'il quitte effectivement.

J'ai essayé d'autres navigateurs depuis: epiphany, kazehakase, midori, arora. Mais, non, ils n'arrivent pas à la cheville de Firefox, tant du point de vue des fonctionnalités, de la stabilité, ou du système d'extensions. Donc je reste avec mon baril de Firefox, et je râle.

Un mini-snickers fait 91 kilocalories

Si si, c'est marqué sur l'emballage. Et le fait que je viens de m'en enfiler 5 ne change pas ce fait.

Ah oui, ça fait du bien de se poser un peu pendant une journée, à rattraper son retard sur certaines choses à faire en rapport avec le Viet-Nam (billet à venir ;-) ), Paris-Web, le sommeil.

Je suis retourné hier au Bataclan pour la deuxième fois en peu de temps; la dernière fois, c'était pour les Silver Mt Zion Memorial Orchestra and Tra-la-la Band, hier c'était pour les Girls in Hawaii. Bon, ça m'a bien réconcilié avec eux; la dernière fois que je les avais vus, au festival des Inrocks, j'avais été bien déçu par la durée du set, mais là ils ont duré assez longtemps et j'étais bien bien dedans. Et bien qu'auparavant je déniais cela, je dois dire que j'apprécie bien plus un concert lorsque je connais les chansons (et encore plus quand c'est par coeur). Et décidément, j'aime beaucoup le Bataclan qui a toujours une acoustique impeccable (dommage, il n'y a plus de place pour dEUS).

Bon, et puis Dotclear 2.1 est sorti, et puis mon hébergeur lost-oasis propose enfin PostgreSQL 8. Je vais peut-être enfin pouvoir passer à dotclear 2 (youpiii). En plus, DC2.1 inclut un gestionnaire de mise à jour automatique... donc à partir de top, ce devrait être trivial de le mettre à jour !

Pas fini de geeker, moi... :-)

mardi 18 novembre 2008

Give me a reason to be a sweet child of mine, since I gonna love my guitar

Pas trop de texte ces jours-ci :-)

Je suis Donkey Kong

You are Donkey Kong. Life is an uphill battle.  You're forever running and jumping over obstacles It seems like every time you reach your goals, they're snatched away

Which Classic Arcade Game Are You?

mercredi 5 novembre 2008

J - 8

Ça y est, j'ai réalisé: c'est la semaine prochaine.

Je viens de relire le programme de la première journée, et décidément, malgré peut-être un petit sentiment de déjà-vu, ça va être génial ! Sans parler du la journée du vendredi, séparée en deux parties distinctes, ni même des ateliers du samedi !

Comme l'année dernière, ça va être trois jours passés dans un autre monde, rencontrer ou revoir des personnes géniales, où tout le monde est heureux d'être là, un gigantesque esprit positif. Et ça fait vraiment plaisir de participer à quelque chose qui a un sens, une portée autre que son entourage immédiat. Je comprends presque Olivier qui participe à de multiples associations (moi j'aurais pas la santé !).

Vivement la semaine prochaine, chic chic chic chic chic !

mercredi 29 octobre 2008

Paris Web 2008, j'y serai !

Paris-Web 2008, 13, 14 et 15 novembre

J-15 ! (ou 16, je sais pas bien compter)

- page 3 de 21 -