Tout ce qui concerne le développement en général, que ce soit des choses générales, ou des choses bien précises. Cela va de la gestion de projet à la recherche du fonctionnement de pointeurs en C.
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]
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 .
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 :
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.
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 !) :
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.
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.
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'));
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 :
Voilà le problème que je viens de rencontrer et que vous avez sûrement rencontré si vous faites un petit peu de jQuery : j’ai fait un <div></div> qui était un petit rectangle, et je voulais, que lorsque la souris entre dedans, il s’agrandisse, et lorsqu’elle en sort, il diminue.
Le problème (qui est la plupart du temps un avantage) avec jQuery, c’est que lorsqu’une animation commence, s’il y en a une autre pour le même élément, il la met dans une queue() (toute plaisanterie grivoise mise à part).
Donc, si, comme moi, vous voulez faire une animation assez lente, et que vous entrez et sortez rapidement avant la fin de l’animation, il va y avoir plein d’éléments qui vont aller à l’intérieur, et… même si vous éloignez la souris, les animations d’entrée-sortie vont continuer à jusqu’à ce que la queue soit vide ! …là aussi toute plaisanterie grivoise mise à part.
La solution est simple : il faut non seulement dire à l’élément concerné d’arrêter l’animation via stop(), mais aussi :
dire de supprimer tout ce qu’il y a dans la queue (premier paramètre = true)
dire de jouer immédiatement l’animation qui suit (premier paramètre = true)
Exemple de code qui fonctionne :
$('tr')
.mouseenter(function() {
var id=$(this).attr('id').substring(3);
var c=$(this).children('.principal').children('.texte');
c.stop(true, true).animate({ height: '400px'}, 'slow');
})
.mouseleave(function() {
var c=$(this).children('.principal').children('.texte');
c.stop(true, true).animate({ height: '89px'}, 'slow');
});
Vous en avez marre des espaces en fin de code qui ne servent à rien ?
Vous voulez vous conformer à beaucoup de pratiques classiques (Apache, horde, etc.) ?
Voici le petit truc qu’il vous manque, à ajouter dans votre fichier vim :
" Ce code mettra en surbrillance rouge vif
" tous les espaces inutiles après la fin de code :
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
Ce code de configuration vim va mettre en rouge tous les espaces inutiles en fin de code.