Astuce jQuery : accepter un clic une fois, une seule fois, pas de double clic

A lieu de faire

$('#mon_element').on('click', function() {
  mafonction();
} );

c’est pas « on » c’est « one » :

$('#mon_element').one('click', function() {
  mafonction();
} );

En fait une fois qu’on a cliqué sur l’élément en question, jQuery supprime l’évènement avec la fonction unbind().

Serveur Apache et mod_rewrite : mémo / astuces / hints / tips

Voici mes notes de règles de ré-écriture. Principalement des expressions régulières dont j’ai souvent besoin et que je n’ai pas en tête :

Problème :
Apache ajoute automatiquement des slashes / si c’est un répertoire.
Solution :
DirectorySlash Off
Risques de sécurite si ça n’est pas bien géré.

Problème :
Chercher une variable dans les paramètres _GET, y compris en plein milieu (les solutions en général ne sont valides que si la variable est au début dans le _GET)
Solution :
RewriteCond %{QUERY_STRING} (^|&)nomvariable=valeur(&|$)

Problème :
Prendre en compte toute une séquence de caractères sauf le slash
Solution :
RewriteRule ^/([^/]+)/?$ page.php?page=$1 [L]
ou encore prendre tout sauf le slash et le point :
RewriteRule ^/([^/\.]+)/?$ page.php?page=$1 [L]

Vi / vim : comment remplacer des espaces par des espaces insécables ( )

Tout est dans le titre.

J’ai souvent ce problème : je fais copier coller de code dans un article WordPress que je veux publier, je mets le code entre <code></code> mais le problème, c’est que les espaces de début sont ignorés et l’indentation est perdue.

Voici donc l’astuce, sous vi, pour remplacer tous les espaces uniquement au début de la ligne par &nbsp;.

C’est à dire que :

     extend: 'Ext.panel.Panel',

devient :


extend: 'Ext.panel.Panel',

Ce que je ne veux pas bien évidemment.

J’ai posé la question ici : vim-regexp-help-change-spaces-to-nbsp.

Et je vous laisse y lire les réponses, mais la solution que j’ai retenue :


:%s/^ \+/\=repeat("&nbsp;",strlen(submatch(0)))

Site des vimgolfers : http://vimgolf.com/.

Firefox : javascript et bookmarklets

On peut éxecuter du javascript dans Firefox directement dans la ligne de l’adresse Internet.

Attendez, c’est génial, je le redis, vous n’avez pas compris :

Savez vous qu’on peut éxecuter du javascript dans Firefox directement dans la ligne de l’adresse Internet ?

En pratique ça donne quoi ?

J’en ai marre de taper systématiquement mon identifiant et mon mot de passe pour me connecter à un intranet.
J’ai un bouton qui est un raccourci classique :

Firefox - javascript et bookmarklets

Et au lieu d’un raccourci « simple » genre http://translate.google.com/ c’est un code JavaScript comme ça :
javascript:(function(){m='http://translate.google.com/translate?u='+encodeURIComponent(document.location)+'&langpair=en%7Cfr&hl=en&ie=UTF-8&oe=UTF-8';w=window.open(m,'addwindow','resizable=yes');setTimeout(function(){w.focus();},%20250);})();

Qu’est ce que ça fait : je peux être sur n’importe quelle page en anglais, je clique sur le bouton, et hop ! Il m’ouvre une autre fenêtre avec la page traduire via http://translate.google.com/. Magique !

Mais on peut faire encore plus pratique !

Par exemple, moi j’ai un raccourci pour me connecter sur un site personnel, mais ce dernier me demande toujours mon identifiant et mon mot de passe, qui sont systématiquement effacés, alors j’ai fait un second bouton dans lequel il y a du JavaScript qui remplit les champs automatiquement et simule le clic sur « valider ». Donc en pratique, je clique une fois, hop, la page s’affiche, je clique une seconde fois et je suis connecté. Je gagne un temps fou !

Et même chose pour les développeurs de paiement en ligne : vous en avez marre de remplir systématiquement les champs avec les numéros de cartes factices afin de tester, et de mettre une bonne date ? Hop il suffit de créer correctement un bon morceau de JavaScript et ça y est vous remplissez systématiquement TOUS les champs en un seul clic ! Gain de temps phénoménal.

Vous avez plein d’exemples ici :

http://mozillalinks.org/resources/bookmarklets-collection/

Pour la note, cela fonctionne aussi sur Chrome.

En espérant que cela serve à la communauté !

Funciton : un langage lisible et marrant

Voici, pour ceux qui ne le connaissent pas, un langage très récent (2011), fonctionnel, et lisible, mais entièrement nouveau, j’ai nommé (roulement de tambours) : « Funciton »

Voici un exemple de programme qui fonctionne, essayez de deviner ce qu’il fait :

(Note : ce n’est pas un dessin, c’est bien du texte, vous pouvez le sélectionner et le copier coller, ça fonctionne, essayez !) :


            ╓───╖
         ┌──╢ + ╟──┐
         │  ╙───╜  │
    ┌────┴────┬────┴────┐
    │  ┌┐     │      ┌┐ │
  ┌─┴──┤├──whoops!─┬─┤├─┴─┐
  │    └┘     │    │ └┘   │  ╔════════════════════════════╗
  │    ┌──────┴───┬┘      │  ║  addition — WITH           ║
  │   ┌┴┐        ┌┴┐      │  ║  THREE PROBLEMS (read on)  ║
  │   └┬┘        └┬┘      │  ╟────────────────────────────╢
  │ ┌──┴─╖  ┌───╖ │       │  ║  +(a, b) = b               ║
  │ │ << ╟──┤ + ╟─┘       │  ║      ? +(a^b, (a&b) << 1)  ║   │ ╘══╤═╝  ╘═╤═╝         │  ║      : a                   ║   │  ╔═╧═╗    │           │  ╚════════════════════════════╝   │  ║ 1 ║    │           │   │  ╚═══╝  ┌─┴─╖         │   └─────────┤ ? ╟─────────┘             ╘═╤═╝               │

Vous pouvez avoir toutes les informations sur Wikipedia ici :

http://esolangs.org/wiki/Funciton

Coloration syntaxique : vim, HTML et Smarty la solution

J’avais un problème que vous avez peut-être rencontré : la couleur des fichiers HTML quand il y a du Smarty, ça ne fonctionne pas parfois.

Alors j’ai récupéré le truc qui met les bonnes couleurs ici :

www.vim.org/scripts/script.php?script_id=1798

Mais seul problème : ça ne fonctionne qu’avec les fichier *.TPL
Donc j’ai fait une demande sur stackoverflow : comment ouvrir un fichier HTML, et vérifier s’il y a dedans "{* *}" et si c’est le cas, appliquer la couleur Smarty.

Répondu ici :
vim-how-to-apply-a-new-syntax-highlighting-smarty-instead-of-html-depending

Et maintenant, j’ai enfin tous les fichiers HTML qui s’affichent correctement. Je vous conseille vivement d’en faire autant, franchement ça m’aide bien que les "{* *}" soient enfin des commentaires et que les {foreach ...} soient bien colorisés.

Trop pratique !

Ubuntu : alt-tab rapide : howto

D’abord installez compizconfig-settings-manager : le tutoriel est ici :

http://packages.ubuntu.com/search?keywords=compizconfig-settings-manager

Après avoir installé « compizconfig settings manager » :

  1. tapez les touches alt + F2 et une boite de dialogue va s’ouvrir ;
  2. dans cette boîte, tapez ccsm puis validez par la touche entrée ;
  3. de là, cherchez "Délai de pop-up de fenêtre", ou en anglais : "Popup Window Delay" ;
  4. cliquez sur l’onglet "Comportement" ou "Behavior" ;
  5. vous verrez une valeur : modifiez la en y mettant la valeur 0.

Et voilà, la combinaison alt + Tab pour passer d’une application à une autre est devenue instantanée !

Pour information, le tutoriel est ici :

http://askubuntu.com/questions/75250/how-to-make-alt-tab-switch-quickly
http://askubuntu.com/questions/43875/how-do-i-adjust-the-alt-tab-speed

Smarty : dump de variable : écrire une fonction plugin

Vous avez sûrement déjà été confronté au fait de vouloir afficher le contenu d’une variable Smarty.
J’ai décrit la version courte ici.

Maintenant, il peut arriver que l’affichage ne corresponde pas à ce que vous vouliez notamment parce que le print_r() et autre var_dump() affichent des retour chariot.

J’ai donc crée ma fonction plugin, qui fait cela :


  /**
   * Affiche le contenu d'une variable.
   * Utilisation : {dump var=$variable_smarty}
   *
   * @param array $params Tableau de parametres
   * @param object $smarty objet Smarty
   * @return string Le dump
   */
  public function smarty_dump($params,$smarty)
  {
    // Récupération des paramètres
    if (!isset($params['var'])) {
      throw new Exception(
        "dump : paramètre 'var' obligatoire");
    }
    return
      '<pre>'.
      str_replace(
        "\n", "<br />",
        str_replace(
          "\r", "",
          var_export($params['var'],true)
        )
      ).
      '</pre>';
  }

Ensuite, je déclare le plugin à Smarty :

$smarty->registerPlugin('function','dump',
  array($this,'smarty_dump'));

Et dans mon template, je l’appelle ainsi :


<table>
{foreach from=$tab_devis item=a}
  <tr>
    <td>
      {dump var=$a}
    </td>
  </tr>
{/foreach}
</table>

Et l’affichage devient parfait : il est à l’intérieur d’une balise <pre></pre>, avec retour à la ligne <br /> comme il faut.

En espérant que cela serve à des utilisateurs

Php, http et https : comment rester sur le même protocole ?

Bonjour,

Voici une petite astuce pour les développeurs de sites Internet.
Supposons que la page que vous êtes en train de développer soit du genre http://monsite.com/mapage.php.
Dans cette page, vous avez plusieurs liens/images vers le même site, mais seule l’adresse change un peu, par exemple http://autre.monsite.com/image1.png
Imaginez que quelques temps après, vous deviez changer de protocole et passer en mode sécurisé.
Vous devez changer aussi tous les autres liens, donc :

http://autre.monsite.com/image1.png

devient :

https://autre.monsite.com/image1.png

Eh bien voici l’astuce qui peut vous servir : vous pouvez demander au navigateur de rester sur le même type de protocole avec seulement deux slashes avant le nom du site. Notre exemple :

http://autre.monsite.com/image1.png

devient :

//autre.monsite.com/image1.png

(oui oui ça fonctionne et même très bien) !