Catégorie « Quelques trucs sur… »

Quelques trucs sur Javascript #1

Packed VS minified

Il existe deux méthodes couramment utilisée pour alléger les javascripts :

  • En les "compactant" : le code est alors ré-écrit en une version nettement plus compacte et surtout nettement moins lisible.
  • En utilisant jSmin : là le script est juste allégé de tous ses commentaires et espaces superflus. Il est moins compact mais reste cependant relativement lisible.

En général la version "compactée" est environ un tiers moins lourde que la version "minifiée" mais en contrepartie, l'exécution est presque deux fois plus lente. Et donc le ressenti côté utilisateur est nettement dégradé dans la version compactée. La version minifiée est donc en général préférable, d'autant que pour le debug c'est nettement plus pratique !

La fonction parseInt

Cette fonction permet, comme son nom l'indique, de convertir une chaine en entier. A priori rien de bien compliqué. Son deuxième paramètre permet de spécifier la base dans laquelle on se place. Rien de compliqué non plus.

Là où ça peut un peu plus surprendre si on lit la doc trop rapidement, c'est qu'en l'absence du deuxième paramètre, si la chaine commence par un zéro, la conversion se fait en octale, soit en base huit et non dix. Cette fonctionnalité semble être dépréciée mais elle est toujours prise en compte.

On a donc les résultats suivants :

  • parseInt("000") -> 0
  • parseInt("001") -> 1
  • parseInt("002") -> 2
  • parseInt("003") -> 3
  • parseInt("004") -> 4
  • parseInt("005") -> 5
  • parseInt("006") -> 6
  • parseInt("007") -> 7
  • parseInt("008") -> 0
  • parseInt("009") -> 0
  • parseInt("010") -> 8
  • parseInt("011") -> 9
  • ...

La console d'erreur de Firefox

Dans un contexte d'extension (ou au moins dans un contexte signé il me semble), il est possible d'écrire des messages dans la console d'erreur de Firefox via JavaScript.

Par contre (du moins dans certaines versions), tenter de loguer un message vide fait planter la console. Elle continue à accumuler les message mais il faut la fermer et la rouvrir pour les voir. Chose très agaçante quand on ne sait pas d'où ça vient...


Quelques trucs sur l'iPod Touch #1

Quelques petits trucs que je n'ai pas trouvé tout de suite sur mon iPod Touch (et qui valent aussi pour l'iPhone).

Ré-organiser les applications

Pour activer le mode permettant de réorganiser les applications, il suffit de maintenir le doigt posé sur l'une d'elles durant quelques secondes. Les icônes se mettent alors à "flotter" et sont déplaçables par simple glissade. On peut également les déplacer d'une page à l'autre mais c'est assez laborieux... Dans ce mode on peut aussi supprimer les applications télécharger, par contre impossible de supprimer ou ne serait-ce que masquer les applications présentes par défaut.

Stopper la musique ou changer de morceau alors que l'iPod est verrouillé

C'est dans le manuel utilisateur, mais qui lis les manuels utilisateurs jusqu'au bout ? Pas moi en général...

Donc il est possible d'accéder aux fonctions lecture, pause, piste suivante et piste précédente alors que l'iPod est verrouillé. Pour faire apparaitre ces options, il suffit de double-cliquer sur le bouton de menu principal. Voilà qui m'évitera de retaper mon code à chaque fois ^^

Des caractères cachés !

Un truc que je viens d'apprendre aujourd'hui, ce qui me permet de clôturer cet article avec un troisième point et donc de le publier (les deux autres étant en attente depuis bien longtemps) : certains caractères apparemment absents du clavier de l'iPod Touch et de l'iPhone sont en fait disponibles en maintenant le doigt quelques secondes sur un caractère "approchant".

Par exemple les accents sont accessibles sur les lettres associées (a,e, i, o, u), mais on trouve également la cédille sur le c, les signes inversés (pour l'espagnol notamment) sur les points d'interrogation et d'exclamation, d'autres symboles monétaires sur l'€... Bref, pas mal de choses qui peuvent manquer si on ne connait pas le truc.


Quelques trucs sur PHP #2

Une deuxième série de petits trucs sur PHP...

Page blanche

Plus j'utilise PHP, plus je me rends compte qu'il y a quand même des trucs bien foireux dedans... Notamment ceci : lorsqu'une classe contient deux définitions de la même méthode (du moins dans certains cas, j'ai pas trop approfondi pour voir si c'est vraiment systématique), on n'obtient pas d'exception, ni même la traditionnelle "fatal error" non-catchable et sans trace, mais bel et bien une page blanche sans aucune explication \o/ J'imagine que derrière PHP doit mourir lamentablement sur un "Segmentation fault"... Bref, quand vous obtenez une page blanche, pensez à vérifier si vous n'avez pas raté un copier/coller quelque part...

Duplication de tableaux

Après avoir tenté en vain de dupliquer un tableau avec le mot-clé clone (qui retourne null), j'ai cherché un peu et je suis tombé sur cet article. Donc apparemment une simple affectation suffit à dupliquer un tableau (ce qui explique au passage certaines choses concernant la quantité astronomique de mémoire qu'arrive à bouffer PHP dans certains cas) ! Comme quoi même en utilisant un langage pendant des années, on peut passer à côté de certains trucs de base...

L'instruction continue

Je parlais il y a quelque temps de l'instruction break qui admet un paramètre permettant de sortir de plusieurs boucles imbriquées d'un coup, eh bien l'instruction continue se comporte de la même façon.

Je n'avais pas insisté dessus à l'époque (parce que dans le cas du break, c'est évident) mais dans les deux cas, un switch est considéré comme une boucle. Donc si vous êtes dans un switch contenu dans une boucle et que vous voulez passer à la prochaine itération de la boucle il faut appeler un continue 2;.

Pour plus de détails sur l'instruction continue, rendez-vous sur le manuel officiel de PHP.


Quelques trucs sur UNIX/Linux #1

Les habitués du mode console n'apprendront probablement rien de cet article mais pour ceux qui, comme moi, ne s'en servent qu'occasionnellement, ça peut s'avérer instructif.

Recherche dans l'historique

On a vu il y a quelques temps qu'on pouvait alléger l'historique des commandes saisies en ignorant les doublons. Si la commande que vous recherchez est malgré cela noyée dans la masse, vous pouvez utiliser ctrl+r et taper les premiers caractères de la commande recherchée pour la retrouver.

Blocage de la console

Le raccourci ctrl+s permet de suspendre le terminal (saisie et exécution). Pour le débloquer, le raccourci est ctrl+q donc si le terminal se bloquer mystérieusement (ce qui peut arriver vu que ctrl+s est le raccourci de sauvegarde dans la majorité des éditeurs de texte graphiques et qu'il n'est pas rare de le taper machinalement après une saisie), tentez ça avant de frapper sauvagement sur votre clavier ;)

Retrouver les plus gros fichier de votre système

Une partition est pleine, il faut faire de la place ! Oui, mais où sont les gros fichiers qui consomment tout l'espace ? Telle est la situation dans laquelle je me suis retrouvé pas plus tard qu'il y a 5 minutes...

Après une brève recherche sur le net (que je en compte pas refaire à l'avenir, d'où l'intérêt d'en donner le résultat ici :)), voici la réponse avec une combinaison de du et sort :

du -S <noeud-de-l'arborescence> | sort -n

Soit dans mon cas, pour lister tous les dossiers du système :

du -S / | sort -n

On retrouvera alors les dossiers contenant les plus gros fichiers en fin de liste. Par contre, ça peut mettre un peu de temps à s'exécuter vu que ça fait le tour de tous les dossiers.


Quelques trucs sur PHP #1

Quelques petits trucs que je n'ai appris que récemment. Peut-être étais-je le seul à les ignorer... ou peut-être pas, donc dans le doute...

Sortir de plusieurs boucles à la fois

Classiquement l'instruction break; s'utilise telle quelle pour sortir de la boucle ou du switch courant. Cependant en PHP (et sans doutes dans d'autres langages également), on peut lui adjoindre un paramètre entier permettant de sortir de plusieurs boucles à la fois. Ceci est à utiliser avec parcimonie car ce n'est pas forcément des plus lisible mais ça peut aider à accélérer une recherche dans un tableau multi-entrées par exemple :

// Supposons que $array est un tableau à double-entrée contenant des entiers
// et que l'on en cherche un supérieur à 10.
$result = null;
foreach ($array as $subArray)
{
	foreach ($subArrayas $item)
	{
		if ($item > 10)
		{
			$result = $item;
			break 2;
		}
	}
}

Paramètre de la fonction die

C'est plus une instruction qu'une fonction mais bon, passons. Elle peut prendre en argument un entier ou une chaine de caractère mais cet argument n'est affiché à l'écran que s'il s'agit d'une chaine. Ça n'a l'air de rien mais c'est bon à savoir...

DOM ou SimpleXML ?

SimpleXML c'est bien gentil et comme son nom l'indique, c'est « simple » (du moins dans son interface qui compte très peu de méthodes), mais à l'usage c'est quand même des plus limités. Et c'est plutôt chiant à utiliser parce qu'il faut caster pas mal de choses pour obtenir des chaines de caractère au lieux de nœuds XML (sans compter le bug dont je parlais il y a quelques temps). D'autant qu'il existe une alternative...

En effet, j'en étais resté à PHP4 où l'API DOM se cantonnait l'extension DOM XML non-incluse par défaut, ce qui n'était pas bien pratique... Mais en PHP5, elle a été remplacée par une nouvelle implémentation incluse en natif dans PHP sous le nom de DOM. Bref, en ce qui me concerne, SimpleXML va direct à la poubelle et je n'utilise plus que DOM, avec l'avantage supplémentaire d'être similaires aux bibliothèques DOM présentes dans d'autres langages tels que JavaScript, puisque DOM est un standard, ce qui raccourcit d'autant l'apprentissage.