Rollovers compatible iPhone

En intégrant la nouvelle charte par défaut d'RBS Change (à venir avec la prochaine version 3.6), j'ai intégré quelques blocs avec du rollover (notamment le sélecteur de langues ou le bloc de récap du panier).

Ça fonctionne très bien via du CSS avec la pseudo-classe hover, si ce n'est que sur iPhone tous ne passent pas : le menu déroulant marche sans problème, par contre le bloc de sélection des langues ne passe pas. Le point qui bloque, c'est que dans le menu il y a des liens sur les items qu'on survole, du coup au premier "clic" l'iPhone active le hover au lieu de suivre le lien (qui n'est suivi qu'au second clic) alors que quand on n'a pas de liens, il n'active pas le hover.

J'ai cherché des solutions sur le net et je suis tombé sur pas mal de chose pas super convaincantes :

  • une solution basée sur des événements spécifiques au tactile : "touchstart" et "touchend" (comme expliqué par exemple) mais que je n'ai pas réussi à faire marcher...
  • passer par l'événement "clic" pour placer puis enlever comme dans la solution précédente une classe "hover" sur les éléments

Dans les deux cas, c'est loin d'être parfait... Notamment dans le 2e cas, ça merdouille si on a les style à la fois sur la pseudo-classe hover (pour tout ce qui n'est pas tactile c'est quand même mieux vu qu'on ne dépend pas de JavaScript) et sur la classe ajoutée.

Finalement, du coup, j'ai compris que l'iPhone active le hover à partir du moment où on place un listener sur l'événement "clic" ! Du coup j'ai simplement mis un listener au clic sur mon élément où je veux appliquer le hover qui ne fait rien de particulier et mon problème est réglé sans pourrir mes styles avec une classe ajoutée à la volée \o/

Donc concrètement, si par exemple j'ai ce code HTML :

<div class="test">
  Toto
  <p>Visible uniquement au survol</p>
</div>
Associé à ce CSS :
.test p {
  display: none;
}
.test:hover p {
  display: block;
}

Ça fonctionnera très bien sur un ordinateur, mais pas sur un iPhone ou un iPad, à moins d'y ajouter ce code JavaScript (utilisant jQuery mais j'imagine que ça doit marcher sans aussi...) :

jQuery(document).ready(function() {
  jQuery('.test').click(function() {});
});

Quelques trucs sur Windows #1

Clavier azerty reconnu comme un querty

Par moment, Windows commence à se comporter bizarrement : on écrit de q au lieu des a, les mots de passe ne sont plus reconnus, tout ça... Rien d'ésotérique là dedans, la reconnaissance du clavier a juste switché en qwerty...

Comment ça s'est produit ? En général, c'est que vous avez sans vous en rendre compte, tapé le raccourci clavier alt (gauche) + shift (gauche). Je ne sais pas pourquoi un tel raccourci est défini dans Windows, mais c'est comme ça. Donc pour revenir à la normale, il suffit d'utiliser ce raccourci.

Pour que cela ne se reproduise plus, il est aussi possible de désinstaller le clavier anglais au niveau de Windows.

Sous XP, ça se trouve dans le panneau de configuration : Démarrer > Paramètre > Panneau de configuration > Options régionales et linguistiques > langues > détails cliquer sur anglais et supprimer (au besoin, on peut le rajouter quand on veut avec le même menu).

Sous Seven c'est presque pareil, mais pas tout à fait : Démarrer > Panneau de configuration > Horloges, langue et région > Modifier les claviers et les autres méthodes d'entrée > Modifier les claviers... > sélectionner l'anglais et supprimer.

Faire une capture d'écran de la fenêtre courante sous Windows XP/Seven

Sur mac, on a pas mal de possibilités pour faire une capture d'écran, mais ce que je ne savais pas, c'est que sur Windows aussi on dispose de plusieurs raccourcis différents.

En effet, si toute seule la bien connue touche Impr écran capture tout l'écran, combinée avec la touche alt, elle ne capture que la fenêtre courante. Ça peut éviter de re-découper la capture après, donc c'est bon à savoir ^^

Sinon Seven est également livré avec un outil de capture d'écran où on sélectionne la zone à capturer. Il est accessible depuis le menu démarrer > Tous les programmes > Accessoires > Outil Capture.

Oui, j'essaie de purger un peu les brouillons qui trainent... celui-là avait quand même presque trois ans ^^


Se débarasser d'un raccourci clavier indésirable sous Windows Seven...

L'autre jour, j'ai fini par comprendre pourquoi de temps à autre je me retrouvais avec dans mon presse-papier non pas ce que je croyais avoir, mais plutôt le texte que je venais de supprimer. En fait ça vient d'un raccourci clavier standard de Windows que je ne connaissais pas (bien qu'apparemment existe depuis toujours) : shift + suppr. Ça m'arrive quand je fais des sélections au clavier pour les supprimer sans relâcher assez vite le shift avant de supprimer (des fois l'une des mains va légèrement plus vite que l'autre).

Bon personnellement ctrl + x me suffit bien pour couper, pas besoin d'un deuxième, j'ai donc cherché comment le désactiver. Déjà en natif, on oublie apparemment. Il faut impérativement passer par un logiciel tiers.

Chose rare, le premier sur lequel je suis tombé faisait l'affaire (le plus souvent on commence par installer un truc inutilisable avant de tomber enfin sur le bon) : AutoHotkey. Bon à la base, il est destiné à rajouter des raccourcis clavier, mais ça marche aussi pour en écraser un existant.

La procédure à suivre est donc :

  1. installer AutoHotkey
  2. le lancer et cliquer sur "oui" quand il propose d'écrire un script
  3. y placer le code suivant qui mappe le raccourci shift + delete sur l'action supprimer : +Delete::Send {Delete}
  4. relancer le logiciel

Et voilà, ça marche, apu le raccourci à la con \o/

Pour aller jusqu'au bout de la chose, reste plus qu'à le lancer automatiquement au démarrage de Windows. Pour cela le plus simple reste de copier le raccourci dans le dossier "Démarrage" du menu "Démarrer".


Quelques trucs sur UNIX/Linux #2

Ré-écriture d'URL avec Apache

Les règles de ré-écriture peuvent se placer soit dans le .htaccess, soit dans httpd.conf (ou dans les fichiers dédiés à chaque vhost). Il y a une subtile différence de syntaxe entre les deux cas : dans le cas du httpd.conf, URL relatives présentes dans les expressions rationnelles doivent être précédées d'un / et pas dans le cas du .htaccess.

Exemples :

.htaccess

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^toto.html$ http://example.com/youpi.html$1 [R=301,L]

httpd.conf

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^/toto.html$ http://example.com/youpi.tml$1 [R=301,L]

Résultat suivant dans la recherche dans l'historique de commandes

Lorsqu'on recherche dans l'historique via ctrl+r, taper à nouveau ctrl+r permet de passer au résultat suivant.

Déterminer la taille d'un dossier

Pour déterminer la taille d'un dossier on peut utiliser du, notamment avec les options :

  • h (human readable) : pour avoir un résultat lisible (type "1,7G") plutôt qu'un nombre d'octets
  • s : pour ne pas détailler tous les sous-dossiers

Exemples :

> du -hs .
2,7G     .
> du -hs ./*
8,0K     ./changeRepo.sh
2,7G     ./instances

RBS Change 3.5 et messagerie privée

La version 3.5 de RBS Change est sortie il y a peu avec ps mal de nouveautés et améliorations diverses.

À l'occasion de cette version, le module de messagerie privée que j'ai développé pour L'Assemblée des Funomanciens et publié ici a été reversé dans le pool de modules standards d'RBS Change. Le repository sourceforge se sera donc plus alimenté pour les versions à venir et est remplacé par l'entrée modules.privatemessaging.git du repository d'RBS Change.